ZGlmZiAtYXVyIDAwMC9zZXR1cC5weSAwMDEvc2V0dXAucHkKLS0tIDAwMC9zZXR1cC5weQkyMDE1LTA0LTA5IDIxOjAwOjQ4LjcyNTI3ODEwMCAtMDMwMAorKysgMDAxL3NldHVwLnB5CTIwMTUtMDQtMDkgMjE6MDI6MDIuMzUwMzk5ODAwIC0wMzAwCkBAIC0yNjQsMTYgKzI2NCw3IEBACiBNU1ZDQ29tcGlsZXIubGluayA9IG1vbmtleXBhdGNoZWRfbGluawogCiAKLXNka19pbmZvID0gZmluZF9wbGF0Zm9ybV9zZGtfZGlyKCkKLWlmIG5vdCBzZGtfaW5mbzoKLSAgICBwcmludCgpCi0gICAgcHJpbnQoIkl0IGxvb2tzIGxpa2UgeW91IGFyZSB0cnlpbmcgdG8gYnVpbGQgcHl3aW4zMiBpbiBhbiBlbnZpcm9ubWVudCB3aXRob3V0IikKLSAgICBwcmludCgidGhlIG5lY2Vzc2FyeSB0b29scyBpbnN0YWxsZWQuIEl0J3MgbXVjaCBlYXNpZXIgdG8gZ3JhYiBiaW5hcmllcyEiKQotICAgIHByaW50KCkKLSAgICBwcmludCgiUGxlYXNlIHJlYWQgdGhlIGRvY3N0cmluZyBhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZSwgb3IgcmVhZCBSRUFETUUubWQiKQotICAgIHByaW50KCJmb3IgbW9yZSBpbmZvcm1hdGlvbi4iKQotICAgIHByaW50KCkKLSAgICByYWlzZSBSdW50aW1lRXJyb3IoIkNhbid0IGZpbmQgdGhlIFdpbmRvd3MgU0RLIikKK3Nka19pbmZvID0geyAnaW5jbHVkZSc6ICcnLCAnbGliJzogJycgfQogCiBjbGFzcyBXaW5FeHQgKEV4dGVuc2lvbik6CiAgICAgIyBCYXNlIGNsYXNzIGZvciBhbGwgd2luMzIgZXh0ZW5zaW9ucywgd2l0aCBzb21lIHByZWRlZmluZWQKQEAgLTMwNSwxMSArMjk2LDIwIEBACiAKICAgICAgICAgZXh0cmFfbGlua19hcmdzID0gZXh0cmFfbGlua19hcmdzIG9yIFtdCiAgICAgICAgIGlmIGV4cG9ydF9zeW1ib2xfZmlsZToKLSAgICAgICAgICAgIGV4dHJhX2xpbmtfYXJncy5hcHBlbmQoIi9ERUY6IiArIGV4cG9ydF9zeW1ib2xfZmlsZSkKKyAgICAgICAgICAgIGV4dHJhX2xpbmtfYXJncy5hcHBlbmQoZXhwb3J0X3N5bWJvbF9maWxlKQogCiAgICAgICAgICMgU29tZSBvZiBvdXIgc3dpZ2dlZCBmaWxlcyBiZWhhdmUgZGlmZmVyZW50bHkgaW4gZGlzdHV0aWxzIHZzCiAgICAgICAgICMgTVNWQyBiYXNlZCBidWlsZHMuICBBbHdheXMgZGVmaW5lIERJU1RVVElMU19CVUlMRCBzbyB0aGV5IGNhbiB0ZWxsLgogICAgICAgICBkZWZpbmVfbWFjcm9zID0gZGVmaW5lX21hY3JvcyBvciBbXQorICAgICAgICBkZWZpbmVfbWFjcm9zLmFwcGVuZCgoIk5URERJX1ZFUlNJT04iLCAweDA2MDAwMDAwKSkKKyAgICAgICAgZGVmaW5lX21hY3Jvcy5hcHBlbmQoKCJfV0lOMzJfV0lOTlQiLCAweDA2MDApKQorICAgICAgICBkZWZpbmVfbWFjcm9zLmFwcGVuZCgoIlVTRV9DT01fQ09OVEVYVF9ERUYiLCBOb25lKSkKKyAgICAgICAgZGVmaW5lX21hY3Jvcy5hcHBlbmQoKCJOT19QWUNPTV9JRElTUEFUQ0hFWCIsIE5vbmUpKQorICAgICAgICBkZWZpbmVfbWFjcm9zLmFwcGVuZCgoIl9faW4iLCAiIikpCisgICAgICAgIGRlZmluZV9tYWNyb3MuYXBwZW5kKCgiX19pbl9vcHQiLCAiIikpCisgICAgICAgIGRlZmluZV9tYWNyb3MuYXBwZW5kKCgiX19vdXQiLCAiIikpCisgICAgICAgIGRlZmluZV9tYWNyb3MuYXBwZW5kKCgiX19kZXJlZl9vdXRfZWNvdW50X2Z1bGwoeCkiLCAiIikpCisgICAgICAgIGRlZmluZV9tYWNyb3MuYXBwZW5kKCgiX0NoZWNrX3JldHVybl8iLCAiIikpCiAgICAgICAgIGRlZmluZV9tYWNyb3MuYXBwZW5kKCgiRElTVFVUSUxTX0JVSUxEIiwgTm9uZSkpCiAgICAgICAgIGRlZmluZV9tYWNyb3MuYXBwZW5kKCgiX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiLCBOb25lKSkKICAgICAgICAgc2VsZi5wY2hfaGVhZGVyID0gcGNoX2hlYWRlcgpAQCAtNjM4LDcgKzYzMiw3IEBACiAKICAgICBkZWYgZmluYWxpemVfb3B0aW9ucyhzZWxmKToKICAgICAgICAgYnVpbGRfZXh0LmZpbmFsaXplX29wdGlvbnMoc2VsZikKLSAgICAgICAgc2VsZi53aW5kb3dzX2hfdmVyc2lvbiA9IE5vbmUKKyAgICAgICAgc2VsZi53aW5kb3dzX2hfdmVyc2lvbiA9IDB4MDYwMAogICAgICAgICAjIFRoZSBweXdpbnR5cGVzIGxpYnJhcnkgaXMgY3JlYXRlZCBpbiB0aGUgYnVpbGRfdGVtcAogICAgICAgICAjIGRpcmVjdG9yeSwgc28gd2UgbmVlZCB0byBhZGQgdGhpcyB0byBsaWJyYXJ5X2RpcnMKICAgICAgICAgc2VsZi5saWJyYXJ5X2RpcnMuYXBwZW5kKHNlbGYuYnVpbGRfdGVtcCkKQEAgLTg2NSw3ICs4NjgsOCBAQAogICAgICAgICAgICAgICAgICAgICBsb2cuZGVidWcoIkxvb2tlZCBmb3IgJXMgaW4gJXMiLCBsaWIsIGxvb2tfZGlycykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJObyBsaWJyYXJ5ICclcyciICUgbGliCiAgICAgICAgICAgICAgICAgc2VsZi5mb3VuZF9saWJyYXJpZXNbbGliLmxvd2VyKCldID0gZm91bmQKLSAgICAgICAgICAgIHBhdGNoZWRfbGlicy5hcHBlbmQob3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKGZvdW5kKSlbMF0pCisgICAgICAgICAgICBsaWJfbmFtZSA9IHJlLnN1YihyJ15saWIoLiopXC5hJywgcidcMScsIG9zLnBhdGguYmFzZW5hbWUoZm91bmQpKQorICAgICAgICAgICAgcGF0Y2hlZF9saWJzLmFwcGVuZChvcy5wYXRoLnNwbGl0ZXh0KGxpYl9uYW1lKVswXSkKIAogICAgICAgICBpZiBleHQucGxhdGZvcm1zIGFuZCBzZWxmLnBsYXRfbmFtZSBub3QgaW4gZXh0LnBsYXRmb3JtczoKICAgICAgICAgICAgIHJldHVybiAiT25seSBhdmFpbGFibGUgb24gcGxhdGZvcm1zICVzIiAlIChleHQucGxhdGZvcm1zLCkKQEAgLTk3NSw2ICs5NzksOSBAQAogICAgICAgICAgICAgaWYgbm90IHNlbGYuY29tcGlsZXIuaW5pdGlhbGl6ZWQ6CiAgICAgICAgICAgICAgICAgc2VsZi5jb21waWxlci5pbml0aWFsaXplKCkKIAorICAgICAgICBpZiBzZWxmLm1pbmd3MzI6CisgICAgICAgICAgICBzZWxmLmNvbXBpbGVyLnNoYXJlZF9saWJfZXh0ZW5zaW9uID0gJy5kbGwnCisKICAgICAgICAgc2VsZi5fZml4dXBfc2RrX2RpcnMoKQoKICAgICAgICAgIyBIZXJlIHdlIGhhY2sgYSAicHl3aW4zMiIgZGlyZWN0b3J5IChvbmUgb2YgJ3dpbjMyJywgJ3dpbjMyY29tJywKQEAgLTEyMjYsNyArMTIzMyw3IEBACiAgICAgICAgICAgICAjIFhYWCBUaGlzIGhhcyB0byBiZSBjaGFuZ2VkIGZvciBtaW5ndzMyCiAgICAgICAgICAgICAjIEdldCB0aGUgLmxpYiBmaWxlcyB3ZSBuZWVkLiAgVGhpcyBpcyBsaW1pdGVkIHRvIHB5d2ludHlwZXMsCiAgICAgICAgICAgICAjIHB5dGhvbmNvbSBhbmQgd2luMzJ1aSAtIGJ1dCB0aGUgZmlyc3QgMiBoYXZlIHNwZWNpYWwgbmFtZXMKLSAgICAgICAgICAgIGV4dHJhID0gc2VsZi5kZWJ1ZyBhbmQgIl9kLmxpYiIgb3IgIi5saWIiCisgICAgICAgICAgICBleHRyYSA9IHNlbGYuZGVidWcgYW5kICJfZC5kZWYiIG9yICIuZGVmIgogICAgICAgICAgICAgaWYgZXh0Lm5hbWUgaW4gKCJweXdpbnR5cGVzIiwgInB5dGhvbmNvbSIpOgogICAgICAgICAgICAgICAgICMgVGhlIGltcG9ydCBsaWJyYXJpZXMgYXJlIGNyZWF0ZWQgYXMgUHlXaW5UeXBlczIzLmxpYiwgYnV0CiAgICAgICAgICAgICAgICAgIyBhcmUgZXhwZWN0ZWQgdG8gYmUgcHl3aW50eXBlcy5saWIuCkBAIC0xNTUxLDcgKzE1NDksNyBAQAogICAgICAgICAgICAgd2luMzIvc3JjL3dpbjMyY3J5cHQvUHlDUllQVFBST1YuY3BwCiAgICAgICAgICAgICB3aW4zMi9zcmMvd2luMzJjcnlwdC9QeUNUTF9DT05URVhULmNwcAogICAgICAgICAgICAgIiIiKSwKLSAgICAgICAgKCJ3aW4zMmZpbGUiLCAiIiwgTm9uZSwgMHgwNTAwLCAiIiIKKyAgICAgICAgKCJ3aW4zMmZpbGUiLCAid3MyXzMyIG1zd3NvY2siLCBOb25lLCAweDA1MDAsICIiIgogICAgICAgICAgICAgICB3aW4zMi9zcmMvd2luMzJmaWxlLmkKICAgICAgICAgICAgICAgd2luMzIvc3JjL3dpbjMyZmlsZV9jb21tLmNwcAogICAgICAgICAgICAgICAiIiIpLApAQCAtMTgxMyw3ICsxODEzLDcgQEAKICAgICBXaW5FeHRfd2luMzJjb20oJ2F4c2NyaXB0JywKICAgICAgICAgICAgICAgICAgICAgc291cmNlcz0oIiIiCiAgICAgICAgICAgICAgICAgICAgICAgICAlKGF4c2NyaXB0KXMvQVhTY3JpcHQuY3BwCi0gICAgICAgICAgICAgICAgICAgICAgICAlKGF4c2NyaXB0KXMvR1VJRFMuQ1BQICAgICAgICAgICAgICAgICAgICUoYXhzY3JpcHQpcy9QeUdBY3RpdmVTY3JpcHQuY3BwCisgICAgICAgICAgICAgICAgICAgICAgICAlKGF4c2NyaXB0KXMvR1VJRFMuY3BwICAgICAgICAgICAgICAgICAgICUoYXhzY3JpcHQpcy9QeUdBY3RpdmVTY3JpcHQuY3BwCiAgICAgICAgICAgICAgICAgICAgICAgICAlKGF4c2NyaXB0KXMvUHlHQWN0aXZlU2NyaXB0RXJyb3IuY3BwICAgICUoYXhzY3JpcHQpcy9QeUdBY3RpdmVTY3JpcHRQYXJzZS5jcHAKICAgICAgICAgICAgICAgICAgICAgICAgICUoYXhzY3JpcHQpcy9QeUdBY3RpdmVTY3JpcHRTaXRlLmNwcCAgICAgJShheHNjcmlwdClzL1B5R09iamVjdFNhZmV0eS5jcHAKICAgICAgICAgICAgICAgICAgICAgICAgICUoYXhzY3JpcHQpcy9QeUlBY3RpdmVTY3JpcHQuY3BwICAgICAgICAgJShheHNjcmlwdClzL1B5SUFjdGl2ZVNjcmlwdEVycm9yLmNwcApkaWZmIC1hdXIgMDAwL3dpbjMyL3NyYy9vZGJjLmNwcCAwMDEvd2luMzIvc3JjL29kYmMuY3BwCi0tLSAwMDAvd2luMzIvc3JjL29kYmMuY3BwCTIwMTUtMDQtMDkgMjE6MDA6NDkuMDUzNDAxODAwIC0wMzAwCisrKyAwMDEvd2luMzIvc3JjL29kYmMuY3BwCTIwMTUtMDQtMDkgMjE6MDI6MDIuMzY2MDI1ODAwIC0wMzAwCkBAIC05Myw4ICs5Myw4IEBACiBzdGF0aWMgY3Vyc29yT2JqZWN0ICpjdXJzb3IoUHlPYmplY3QgKm8pIHsgcmV0dXJuIChjdXJzb3JPYmplY3QgKilvOyB9CiAKIHN0YXRpYyB2b2lkIGN1cnNvckRlYWxsb2MoUHlPYmplY3QgKnNlbGYpOwotUHlNZXRob2REZWYgY3Vyc29yTWV0aG9kc1tdOwotUHlNZW1iZXJEZWYgY3Vyc29yTWVtYmVyc1tdOworZXh0ZXJuIFB5TWV0aG9kRGVmIGN1cnNvck1ldGhvZHNbOF07CitleHRlcm4gUHlNZW1iZXJEZWYgY3Vyc29yTWVtYmVyc1szXTsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBDdXJzb3JfVHlwZSA9IHsKICAgICBQWVdJTl9PQkpFQ1RfSEVBRCAib2RiY2N1ciIsIC8qdHBfbmFtZSAqLwpAQCAtMTM3LDggKzEzNyw4IEBACiB9OwogCiBzdGF0aWMgdm9pZCBjb25uZWN0aW9uRGVhbGxvYyhQeU9iamVjdCAqc2VsZik7Ci1QeU1ldGhvZERlZiBjb25uZWN0aW9uTWV0aG9kc1tdOwotUHlNZW1iZXJEZWYgY29ubmVjdGlvbk1lbWJlcnNbXTsKK2V4dGVybiBQeU1ldGhvZERlZiBjb25uZWN0aW9uTWV0aG9kc1s2XTsKK2V4dGVybiBQeU1lbWJlckRlZiBjb25uZWN0aW9uTWVtYmVyc1syXTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgQ29ubmVjdGlvbl9UeXBlID0gewogICAgIFBZV0lOX09CSkVDVF9IRUFEICJvZGJjY29ubiIsIC8qdHBfbmFtZSAqLwogICAgIHNpemVvZihjb25uZWN0aW9uT2JqZWN0KSwgICAgIC8qdHBfYmFzaWNzaXplICovCmRpZmYgLWF1ciAwMDAvd2luMzIvc3JjL1BlcmZNb24vcGVyZm1vbmRhdGEuY3BwIDAwMS93aW4zMi9zcmMvUGVyZk1vbi9wZXJmbW9uZGF0YS5jcHAKLS0tIDAwMC93aW4zMi9zcmMvUGVyZk1vbi9wZXJmbW9uZGF0YS5jcHAJMjAxNS0wNC0wOSAyMTowMDo0OC43NzIxNTM3MDAgLTAzMDAKKysrIDAwMS93aW4zMi9zcmMvUGVyZk1vbi9wZXJmbW9uZGF0YS5jcHAJMjAxNS0wNC0wOSAyMTowMjowMi4zNjYwMjU4MDAgLTAzMDAKQEAgLTkzLDkgKzkzLDkgQEAKIC8vICAgICAgdGhlc2UgYXJlIHVzZWQgdG8gaW5zdXJlIHRoYXQgdGhlIGRhdGEgY29sbGVjdGlvbiBmdW5jdGlvbnMKIC8vICAgICAgYWNjZXNzZWQgYnkgUGVyZmxpYiB3aWxsIGhhdmUgdGhlIGNvcnJlY3QgY2FsbGluZyBmb3JtYXQuCiAvLwotUE1fT1BFTl9QUk9DIE9wZW5QZXJmb3JtYW5jZURhdGE7Ci1QTV9DT0xMRUNUX1BST0MgQ29sbGVjdFBlcmZvcm1hbmNlRGF0YTsKLVBNX0NMT1NFX1BST0MgQ2xvc2VQZXJmb3JtYW5jZURhdGE7CitleHRlcm4gIkMiIFBNX09QRU5fUFJPQyBPcGVuUGVyZm9ybWFuY2VEYXRhOworZXh0ZXJuICJDIiBQTV9DT0xMRUNUX1BST0MgQ29sbGVjdFBlcmZvcm1hbmNlRGF0YTsKK2V4dGVybiAiQyIgUE1fQ0xPU0VfUFJPQyBDbG9zZVBlcmZvcm1hbmNlRGF0YTsKIAogVENIQVIgc3pGdWxsTW9kdWxlUGF0aFtNQVhfUEFUSF07CiBUQ0hBUiBzek1vZHVsZU5hbWVbTUFYX1BBVEhdOyAgLy8gd2lsbCBwb2ludCBpbnRvIHRoZSBidWZmZXIgYWJvdmUuCkBAIC00MTQsNyArNDE0LDcgQEAKIC0tKi8KIHsKICAgICBIS0VZIGhBcHBLZXk7Ci0gICAgVENIQVIgTG9nTGV2ZWxLZXlOYW1lW10gPSBfVCgiU09GVFdBUkVcXE1pY3Jvc29mdFxcV2luZG93c6BOVFxcQ3VycmVudFZlcnNpb25cXFBlcmZsaWIiKTsKKyAgICBUQ0hBUiBMb2dMZXZlbEtleU5hbWVbXSA9IF9UKCJTT0ZUV0FSRVxcTWljcm9zb2Z0XFxXaW5kb3dzIE5UXFxDdXJyZW50VmVyc2lvblxcUGVyZmxpYiIpOwogCiAgICAgVENIQVIgTG9nTGV2ZWxWYWx1ZU5hbWVbXSA9IF9UKCJFdmVudExvZ0xldmVsIik7CiAgICAgTE9ORyBsU3RhdHVzOwpkaWZmIC1hdXIgMDAwL3dpbjMyL3NyYy9QeVNlY3VyaXR5T2JqZWN0cy5oIDAwMS93aW4zMi9zcmMvUHlTZWN1cml0eU9iamVjdHMuaAotLS0gMDAwL3dpbjMyL3NyYy9QeVNlY3VyaXR5T2JqZWN0cy5oCTIwMTUtMDQtMDkgMjE6MDA6NDguODUwMjc4MzAwIC0wMzAwCisrKyAwMDEvd2luMzIvc3JjL1B5U2VjdXJpdHlPYmplY3RzLmgJMjAxNS0wNC0wOSAyMTowMTo1NS44ODE2NDUwMDAgLTAzMDAKQEAgLTExOCw3ICsxMTgsNyBAQAogICAgIHN0YXRpYyBQeU9iamVjdCAqR2V0U3ViQXV0aG9yaXR5Q291bnQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKTsKICAgICBzdGF0aWMgUHlPYmplY3QgKkdldFN1YkF1dGhvcml0eShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpOwogICAgIHN0YXRpYyBQeU9iamVjdCAqR2V0U2lkSWRlbnRpZmllckF1dGhvcml0eShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpOwotICAgIHN0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgUHlTSUQ6Om1ldGhvZHNbXTsKKyAgICBzdGF0aWMgc3RydWN0IFB5TWV0aG9kRGVmIG1ldGhvZHNbXTsKIAogICAgcHJvdGVjdGVkOgogICAgIFBTSUQgbV9wc2lkOwpAQCAtMTU1LDcgKzE1NSw3IEBACiAgICAgLyogUHl0aG9uIHN1cHBvcnQgKi8KICAgICBpbnQgY29tcGFyZShQeU9iamVjdCAqb2IpOwogICAgIHN0YXRpYyB2b2lkIGRlYWxsb2NGdW5jKFB5T2JqZWN0ICpvYik7Ci0gICAgc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBQeUFDTDo6bWV0aG9kc1tdOworICAgIHN0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgbWV0aG9kc1tdOwogCiAgICAgc3RhdGljIFB5T2JqZWN0ICpJbml0aWFsaXplKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncyk7CiAgICAgc3RhdGljIFB5T2JqZWN0ICpJc1ZhbGlkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncyk7CmRpZmYgLWF1ciAwMDAvd2luMzIvc3JjL1B5V2luT2JqZWN0cy5oIDAwMS93aW4zMi9zcmMvUHlXaW5PYmplY3RzLmgKLS0tIDAwMC93aW4zMi9zcmMvUHlXaW5PYmplY3RzLmgJMjAxNS0wNC0wOSAyMTowMDo0OC44ODE1MjgwMDAgLTAzMDAKKysrIDAwMS93aW4zMi9zcmMvUHlXaW5PYmplY3RzLmgJMjAxNS0wNC0wOSAyMTowMTo1NS44ODE2NDUwMDAgLTAzMDAKQEAgLTQ5LDcgKzQ5LDcgQEAKICAgICBQeU9iamVjdCAqc3RyKCk7CiAgICAgUHlPYmplY3QgKnJlcHIoKTsKICAgICBpbnQgY29tcGFyZShQeU9iamVjdCAqb2IpOwotICAgIFB5T2JqZWN0ICpQeVRpbWU6OnJpY2hjb21wYXJlKFB5T2JqZWN0ICpvdGhlciwgaW50IG9wKTsKKyAgICBQeU9iamVjdCAqcmljaGNvbXBhcmUoUHlPYmplY3QgKm90aGVyLCBpbnQgb3ApOwogCiAgICAgaW50IHByaW50KEZJTEUgKmZwLCBpbnQgZmxhZ3MpOwogICAgIFB5X2hhc2hfdCBoYXNoKHZvaWQpOwpkaWZmIC1hdXIgMDAwL3dpbjMyL3NyYy9QeVdpblR5cGVzbW9kdWxlLmNwcCAwMDEvd2luMzIvc3JjL1B5V2luVHlwZXNtb2R1bGUuY3BwCi0tLSAwMDAvd2luMzIvc3JjL1B5V2luVHlwZXNtb2R1bGUuY3BwCTIwMTUtMDQtMDkgMjE6MDA6NDguOTkwOTAzMjAwIC0wMzAwCisrKyAwMDEvd2luMzIvc3JjL1B5V2luVHlwZXNtb2R1bGUuY3BwCTIwMTUtMDQtMDkgMjE6MDE6NTUuODk3MjY0OTAwIC0wMzAwCkBAIC0xMTE5LDcgKzExMTksNyBAQAogLy8gRnVuY3Rpb24gdG8gZm9ybWF0IGEgcHl0aG9uIHRyYWNlYmFjayBpbnRvIGEgY2hhcmFjdGVyIHN0cmluZy4KICNkZWZpbmUgR1BFTV9FUlJPUih3aGF0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBlcnJvck1zZyA9ICI8RXJyb3IgZ2V0dGluZyB0cmFjZWJhY2sgLSAiIyN3aGF0IyMiPiI7IFwKKyAgICAgICAgZXJyb3JNc2cgPSAiPEVycm9yIGdldHRpbmcgdHJhY2ViYWNrIC0gIiB3aGF0ICI+IjsgXAogICAgICAgICBnb3RvIGRvbmU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9CiBQWVdJTlRZUEVTX0VYUE9SVCBjaGFyICpHZXRQeXRob25UcmFjZWJhY2soUHlPYmplY3QgKmV4Y190eXBlLCBQeU9iamVjdCAqZXhjX3ZhbHVlLCBQeU9iamVjdCAqZXhjX3RiKQotLS0gMDAwL3dpbjMyL3NyYy93aW4zMmNyeXB0L3dpbjMyY3J5cHRtb2R1bGUuY3BwCTIwMTUtMDQtMDkgMjE6MDA6NDkuMTk0MDI3ODAwIC0wMzAwCisrKyAwMDEvd2luMzIvc3JjL3dpbjMyY3J5cHQvd2luMzJjcnlwdG1vZHVsZS5jcHAJMjAxNS0wNC0wOSAyMTowMjowMi4zOTcyNzU4MDAgLTAzMDAKQEAgLTU4MSw0NCArNTgxLDM3IEBACiAgICAgICAgIHB2UGFyYSA9ICh2b2lkICopJmNzc3JwOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgc3dpdGNoICgoVUxPTkdfUFRSKVN0b3JlUHJvdmlkZXIpIHsKLSAgICAgICAgICAgIGNhc2UgQ0VSVF9TVE9SRV9QUk9WX1BIWVNJQ0FMOgotICAgICAgICAgICAgY2FzZSBDRVJUX1NUT1JFX1BST1ZfRklMRU5BTUU6Ci0gICAgICAgICAgICBjYXNlIENFUlRfU1RPUkVfUFJPVl9TWVNURU06Ci0gICAgICAgICAgICBjYXNlIENFUlRfU1RPUkVfUFJPVl9TWVNURU1fUkVHSVNUUlk6Ci0gICAgICAgICAgICBjYXNlIENFUlRfU1RPUkVfUFJPVl9MREFQOiB7CisgICAgICAgIGlmIChTdG9yZVByb3ZpZGVyID09IENFUlRfU1RPUkVfUFJPVl9QSFlTSUNBTCB8fAorICAgICAgICAgICAgU3RvcmVQcm92aWRlciA9PSBDRVJUX1NUT1JFX1BST1ZfRklMRU5BTUUgfHwKKyAgICAgICAgICAgIFN0b3JlUHJvdmlkZXIgPT0gQ0VSVF9TVE9SRV9QUk9WX1NZU1RFTSB8fAorICAgICAgICAgICAgU3RvcmVQcm92aWRlciA9PSBDRVJUX1NUT1JFX1BST1ZfU1lTVEVNX1JFR0lTVFJZIHx8CisgICAgICAgICAgICBTdG9yZVByb3ZpZGVyID09IENFUlRfU1RPUkVfUFJPVl9MREFQKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFQeVdpbk9iamVjdF9Bc1dDSEFSKG9icHZQYXJhLCAoV0NIQVIgKiopJnB2UGFyYSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgIGZyZWVfd2NoYXIgPSBUUlVFOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSBDRVJUX1NUT1JFX1BST1ZfUkVHOiB7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoU3RvcmVQcm92aWRlciA9PSBDRVJUX1NUT1JFX1BST1ZfUkVHKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFQeVdpbk9iamVjdF9Bc0hLRVkob2JwdlBhcmEsIChIS0VZICopJnB2UGFyYSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSBDRVJUX1NUT1JFX1BST1ZfRklMRTogeworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKFN0b3JlUHJvdmlkZXIgPT0gQ0VSVF9TVE9SRV9QUk9WX0ZJTEUpIHsKICAgICAgICAgICAgICAgICBpZiAoIVB5V2luT2JqZWN0X0FzSEFORExFKG9icHZQYXJhLCAoSEFORExFICopJnB2UGFyYSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSBDRVJUX1NUT1JFX1BST1ZfU0VSSUFMSVpFRDoKLSAgICAgICAgICAgIGNhc2UgQ0VSVF9TVE9SRV9QUk9WX1BLQ1M3OiB7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoU3RvcmVQcm92aWRlciA9PSBDRVJUX1NUT1JFX1BST1ZfU0VSSUFMSVpFRCB8fAorICAgICAgICAgICAgU3RvcmVQcm92aWRlciA9PSBDRVJUX1NUT1JFX1BST1ZfUEtDUzcpIHsKICAgICAgICAgICAgICAgICBpZiAoIVB5V2luT2JqZWN0X0FzUmVhZEJ1ZmZlcihvYnB2UGFyYSwgKHZvaWQgKiopJmNyeXB0X2RhdGFfYmxvYi5wYkRhdGEsICZjcnlwdF9kYXRhX2Jsb2IuY2JEYXRhKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgcHZQYXJhID0gKHZvaWQgKikmY3J5cHRfZGF0YV9ibG9iOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSBDRVJUX1NUT1JFX1BST1ZfTUVNT1JZOiB7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoU3RvcmVQcm92aWRlciA9PSBDRVJUX1NUT1JFX1BST1ZfTUVNT1JZKSB7CiAgICAgICAgICAgICAgICAgLy8gcHZQYXJhIGlzIG5vdCB1c2VkLCB3YXJuIGlmIHNvbWV0aGluZyBwYXNzZWQgaW4KICAgICAgICAgICAgICAgICBpZiAob2JwdlBhcmEgIT0gUHlfTm9uZSkKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfV2FybihQeUV4Y19SdW50aW1lV2FybmluZywgIlBhcmEgaWdub3JlZCBmb3IgQ0VSVF9TVE9SRV9QUk9WX01FTU9SWSIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZGVmYXVsdDogeworICAgICAgICB9CisgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLCAiU3BlY2lmaWVkIHN0b3JlIHByb3ZpZGVyIHR5cGUgbm90IHN1cHBvcnRlZCIpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCmRpZmYgLWF1ciAwMDAvd2luMzIvc3JjL3dpbjMyZXZ0bG9nLmkgMDAxL3dpbjMyL3NyYy93aW4zMmV2dGxvZy5pCi0tLSAwMDAvd2luMzIvc3JjL3dpbjMyZXZ0bG9nLmkJMjAxNS0wNC0wOSAyMTowMDo0OS4yNTY1MjgxMDAgLTAzMDAKKysrIDAwMS93aW4zMi9zcmMvd2luMzJldnRsb2cuaQkyMDE1LTA0LTA5IDIxOjAyOjAyLjM5NzI3NTgwMCAtMDMwMApAQCAtMTIwNiw2ICsxMjA2LDE0IEBACiB9CiBQeUNGdW5jdGlvbiBwZm5QeUV2dFVwZGF0ZUJvb2ttYXJrID0gKFB5Q0Z1bmN0aW9uKSBQeUV2dFVwZGF0ZUJvb2ttYXJrOwogCisjaWZuZGVmIEVWVF9WQVJJQU5UX1RZUEVfQVJSQVkKKyNkZWZpbmUgRVZUX1ZBUklBTlRfVFlQRV9BUlJBWSAxMjgKKyNlbmRpZgorCisjaWZuZGVmIEVWVF9WQVJJQU5UX1RZUEVfTUFTSworI2RlZmluZSBFVlRfVkFSSUFOVF9UWVBFX01BU0sgMHg3RgorI2VuZGlmCisKIFB5T2JqZWN0ICpQeUxpc3RfRnJvbUVWVF9WQVJJQU5UQXJyYXkoUEVWVF9WQVJJQU5UIHZhbCkKIHsKIAlpZiAoKHZhbC0+VHlwZSAmIEVWVF9WQVJJQU5UX1RZUEVfQVJSQVkpID09IDApIHsKZGlmZiAtYXVyIDAwMC93aW4zMi9zcmMvd2luMzJmaWxlX2NvbW0uY3BwIDAwMS93aW4zMi9zcmMvd2luMzJmaWxlX2NvbW0uY3BwCi0tLSAwMDAvd2luMzIvc3JjL3dpbjMyZmlsZV9jb21tLmNwcAkyMDE1LTA0LTA5IDIxOjAwOjQ5LjQ5MDkwMzYwMCAtMDMwMAorKysgMDAxL3dpbjMyL3NyYy93aW4zMmZpbGVfY29tbS5jcHAJMjAxNS0wNC0wOSAyMTowMjowMi40MTI5MDA4MDAgLTAzMDAKQEAgLTE2Myw3ICsxNjMsNyBAQAogUHlEQ0I6On5QeURDQih2b2lkKSB7fQogCiAjZGVmaW5lIEdFVF9CSVRGSUVMRF9FTlRSWShiaXRmaWVsZF9uYW1lKSBcCi0gICAgZWxzZSBpZiAoc3RyY21wKG5hbWUsICNiaXRmaWVsZF9uYW1lKSA9PSAwKSB7IHJldHVybiBQeUludF9Gcm9tTG9uZyhweWRjYi0+bV9EQ0IuIyNiaXRmaWVsZF9uYW1lKTsgfQorICAgIGVsc2UgaWYgKHN0cmNtcChuYW1lLCAjYml0ZmllbGRfbmFtZSkgPT0gMCkgeyByZXR1cm4gUHlJbnRfRnJvbUxvbmcocHlkY2ItPm1fRENCLmJpdGZpZWxkX25hbWUpOyB9CiAKIFB5T2JqZWN0ICpQeURDQjo6Z2V0YXR0cm8oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvYm5hbWUpCiB7CkBAIC0xOTgsNyArMTk4LDcgQEAKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsIHN6TmVlZEludEF0dHIsICNiaXRmaWVsZF9uYW1lKTsgXAogICAgICAgICAgICAgcmV0dXJuIC0xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcHlkY2ItPm1fRENCLiMjYml0ZmllbGRfbmFtZSA9IFB5SW50X0FzTG9uZyh2KTsgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBweWRjYi0+bV9EQ0IuYml0ZmllbGRfbmFtZSA9IFB5SW50X0FzTG9uZyh2KTsgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIHJldHVybiAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9CiAKQEAgLTM2Miw3ICszNjIsNyBAQAogCiAjdW5kZWYgR0VUX0JJVEZJRUxEX0VOVFJZCiAjZGVmaW5lIEdFVF9CSVRGSUVMRF9FTlRSWShiaXRmaWVsZF9uYW1lKSBcCi0gICAgZWxzZSBpZiAoc3RyY21wKG5hbWUsICNiaXRmaWVsZF9uYW1lKSA9PSAwKSB7IHJldHVybiBQeUludF9Gcm9tTG9uZyhweUNPTVNUQVQtPm1fQ09NU1RBVC4jI2JpdGZpZWxkX25hbWUpOyB9CisgICAgZWxzZSBpZiAoc3RyY21wKG5hbWUsICNiaXRmaWVsZF9uYW1lKSA9PSAwKSB7IHJldHVybiBQeUludF9Gcm9tTG9uZyhweUNPTVNUQVQtPm1fQ09NU1RBVC5iaXRmaWVsZF9uYW1lKTsgfQogCiBQeU9iamVjdCAqUHlDT01TVEFUOjpnZXRhdHRybyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm9ibmFtZSkKIHsKQEAgLTM5MSw3ICszOTEsNyBAQAogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgc3pOZWVkSW50QXR0ciwgI2JpdGZpZWxkX25hbWUpOyBcCiAgICAgICAgICAgICByZXR1cm4gLTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBweUNPTVNUQVQtPm1fQ09NU1RBVC4jI2JpdGZpZWxkX25hbWUgPSBQeUludF9Bc0xvbmcodik7ICAgICAgICAgICBcCisgICAgICAgIHB5Q09NU1RBVC0+bV9DT01TVEFULmJpdGZpZWxkX25hbWUgPSBQeUludF9Bc0xvbmcodik7ICAgICAgICAgICBcCiAgICAgICAgIHJldHVybiAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9CiAKZGlmZiAtYXVyIDAwMC93aW4zMi9zcmMvd2luMzJpbmV0LmkgMDAxL3dpbjMyL3NyYy93aW4zMmluZXQuaQotLS0gMDAwL3dpbjMyL3NyYy93aW4zMmluZXQuaQkyMDE1LTA0LTA5IDIxOjAwOjQ5LjU2OTAyODIwMCAtMDMwMAorKysgMDAxL3dpbjMyL3NyYy93aW4zMmluZXQuaQkyMDE1LTA0LTA5IDIxOjAyOjAyLjQyODUyNjUwMCAtMDMwMApAQCAtNyw2ICs3LDIyIEBACiAjaW5jbHVkZSAiV2luZG93cy5oIgogI2luY2x1ZGUgIldpbkluZXQuaCIKICN1bmRlZiBCT09MQVBJIC8vIHdpbmluZXQuaCBkZWZpbmVzIHRoaXMhCisKKyNpZm5kZWYgSU5URVJORVRfT1BUSU9OX0NPREVQQUdFX1BBVEgKKyNkZWZpbmUgSU5URVJORVRfT1BUSU9OX0NPREVQQUdFX1BBVEggMTAwCisjZW5kaWYKKworI2lmbmRlZiBJTlRFUk5FVF9PUFRJT05fQ09ERVBBR0VfRVhUUkEKKyNkZWZpbmUgSU5URVJORVRfT1BUSU9OX0NPREVQQUdFX0VYVFJBIDEwMQorI2VuZGlmCisKKyNpZm5kZWYgSU5URVJORVRfT1BUSU9OX0lETgorI2RlZmluZSBJTlRFUk5FVF9PUFRJT05fSUROIDEwMgorI2VuZGlmCisKKyNpZm5kZWYgSU5URVJORVRfT1BUSU9OX0hUVFBfREVDT0RJTkcKKyNkZWZpbmUgSU5URVJORVRfT1BUSU9OX0hUVFBfREVDT0RJTkcgNjUKKyNlbmRpZgogJX0KIAogJWluY2x1ZGUgInR5cGVtYXBzLmkiCmRpZmYgLWF1ciAwMDAvd2luMzIvc3JjL3dpbjMycGRobW9kdWxlLmNwcCAwMDEvd2luMzIvc3JjL3dpbjMycGRobW9kdWxlLmNwcAotLS0gMDAwL3dpbjMyL3NyYy93aW4zMnBkaG1vZHVsZS5jcHAJMjAxNS0wNC0wOSAyMTowMDo0OS42NjI3NzkxMDAgLTAzMDAKKysrIDAwMS93aW4zMi9zcmMvd2luMzJwZGhtb2R1bGUuY3BwCTIwMTUtMDQtMDkgMjE6MDI6MDIuNDQ0MTUwODAwIC0wMzAwCkBAIC0xMDA1LDcgKzEwMDUsNyBAQAogICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAoaSA8IHNlcUxlbikgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgUHlPYmplY3QgKnN1Ykl0ZW0gPSBQeVR1cGxlX0dFVF9JVEVNKGZsYWdzX3R1cGxlLCBpKTsgXAotICAgICAgICAgICAgbXlDZmcuY2ZnLiMjciA9IFB5T2JqZWN0X0lzVHJ1ZShzdWJJdGVtKTsgICAgICAgICAgICAgXAorICAgICAgICAgICAgbXlDZmcuY2ZnLnIgPSBQeU9iamVjdF9Jc1RydWUoc3ViSXRlbSk7ICAgICAgICAgICAgICAgXAogICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0KIApkaWZmIC1hdXIgMDAwL3dpbjMyL3NyYy93aW4zMnNlcnZpY2UuaSAwMDEvd2luMzIvc3JjL3dpbjMyc2VydmljZS5pCi0tLSAwMDAvd2luMzIvc3JjL3dpbjMyc2VydmljZS5pCTIwMTUtMDQtMDkgMjE6MDA6NDkuOTkwOTA0OTAwIC0wMzAwCisrKyAwMDEvd2luMzIvc3JjL3dpbjMyc2VydmljZS5pCTIwMTUtMDQtMDkgMjE6MDI6MDIuNDc1NDAwNzAwIC0wMzAwCkBAIC01Nyw2ICs1NywxMyBAQAogCQlpZiAoZnAhPU5VTEwpCiAJCQlmcEVudW1TZXJ2aWNlc1N0YXR1c0V4PShFbnVtU2VydmljZXNTdGF0dXNFeGZ1bmMpZnA7CiAJCX0KKyNpZm5kZWYgU0VSVklDRV9DT05UUk9MX1BSRVNIVVRET1dOCisjZGVmaW5lIFNFUlZJQ0VfQ09OVFJPTF9QUkVTSFVURE9XTiAweDAwMDAwMDBGCisjZW5kaWYKKworI2lmbmRlZiBTRVJWSUNFX0FDQ0VQVF9QUkVTSFVURE9XTgorI2RlZmluZSBTRVJWSUNFX0FDQ0VQVF9QUkVTSFVURE9XTiAweDAwMDAwMTAwCisjZW5kaWYKICV9CiAKICV7Ci0tLSAwMDAvY29tL3dpbjMyY29tZXh0L21hcGkvc3JjL21hcGlfaGVhZGVycy9tYXBpZGVmcy5oCTIwMjAtMDYtMTMgMDg6Mzk6MDMuMDAwMDAwMDAwICswMzAwCisrKyAwMDEvY29tL3dpbjMyY29tZXh0L21hcGkvc3JjL21hcGlfaGVhZGVycy9tYXBpZGVmcy5oCTIwMjAtMDYtMTkgMTY6MTA6NTEuMTgwMDc5OTAwICswMzAwCkBAIC0yNzI4LDUgKzI3MjgsNCBAQAogI2VuZGlmCiAKICNlbmRpZiAvKiBNQVBJREVGU19IICovCi0aCiAKLS0tIDAwMC9jb20vd2luMzJjb21leHQvbWFwaS9zcmMvbWFwaV9oZWFkZXJzL01BUElDb2RlLmgJMjAyMC0wNi0xMyAwODozOTowMy4wMDAwMDAwMDAgKzAzMDAKKysrIDAwMS9jb20vd2luMzJjb21leHQvbWFwaS9zcmMvbWFwaV9oZWFkZXJzL01BUElDb2RlLmgJMjAyMC0wNi0xOSAxNjoxMTo1Ny44NzIwOTY0MDAgKzAzMDAKQEAgLTIxNiw1ICsyMTYsNCBAQAogI2VuZGlmCiAKICNlbmRpZgkvKiBNQVBJQ09ERV9IICovCi0aCiAKLS0tIDAwMC9jb20vd2luMzJjb21leHQvbWFwaS9zcmMvbWFwaV9oZWFkZXJzL01TUFNULmgJMjAyMC0wNi0xMyAwODozOTowMy4wMDAwMDAwMDAgKzAzMDAKKysrIDAwMS9jb20vd2luMzJjb21leHQvbWFwaS9zcmMvbWFwaV9oZWFkZXJzL01TUFNULmgJMjAyMC0wNi0xOSAxNjoxMjo1Mi41NzIwOTY1MDAgKzAzMDAKQEAgLTk3LDUgKzk3LDQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkOSwgMHg2ZSwgMHgwMCwgMHgwMCB9CiAKICNlbmRpZiAgLyogX01TUFNUX0hfICovCi0aCiAKLS0tIDAwMC9jb20vd2luMzJjb21leHQvbWFwaS9zcmMvbWFwaV9oZWFkZXJzL01BUElGb3JtLmgJMjAyMC0wNi0xMyAwODozOTowMy4wMDAwMDAwMDAgKzAzMDAKKysrIDAwMS9jb20vd2luMzJjb21leHQvbWFwaS9zcmMvbWFwaV9oZWFkZXJzL01BUElGb3JtLmgJMjAyMC0wNi0yMCAxMzoyMDozOC41NDgzOTA1MDAgKzAzMDAKQEAgLTYzMSw1ICs2MzEsNCBAQAogCiAjZW5kaWYJCQkJCQkJLyogTUFQSUZPUk1fSCAqLwogCi0aCiAKLS0tIDAwMC9jb20vd2luMzJjb21leHQvbWFwaS9zcmMvUHlJTUFQSUFkdmlzZVNpbmsuY3BwCTIwMjAtMDYtMTMgMDg6Mzk6MDMuMDAwMDAwMDAwICswMzAwCisrKyAwMDEvY29tL3dpbjMyY29tZXh0L21hcGkvc3JjL1B5SU1BUElBZHZpc2VTaW5rLmNwcAkyMDIwLTA2LTIwIDEzOjE3OjQ2LjY2MDM5MDYwMCArMDMwMApAQCAtNiw2ICs2LDEwIEBACiAjaW5jbHVkZSAiUHlNQVBJVXRpbC5oIgogI2luY2x1ZGUgIlB5SU1BUElBZHZpc2VTaW5rLmgiCiAKKyNpZmRlZiBfX01JTkdXMzJfXworI2RlZmluZSBfX0ZVTkNTSUdfXyBfX1BSRVRUWV9GVU5DVElPTl9fCisjZW5kaWYKKwogLy8gQGRvYyAtIFRoaXMgZmlsZSBjb250YWlucyBhdXRvZHVjayBkb2N1bWVudGF0aW9uCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCg==