From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Kevin Buettner To: git-commits@fedoraproject.org Subject: [rpms/gdb] fix-dup-patch: Rebase to FSF GDB 12.1. Date: Thu, 23 Jul 2026 18:34:47 GMT Message-ID: <178483168731.1.14762896900331429104.rpms-gdb-1f1906c4c731@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: 1f1906c4c73116fabac4200ff201fdda5bef7a0a ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGZpeC1kdXAtcGF0Y2gKICAgICAg ICAgICAgQ29tbWl0IDogMWYxOTA2YzRjNzMxMTZmYWJhYzQyMDBmZjIwMWZkZGE1YmVmN2EwYQog ICAgICAgICAgICBBdXRob3IgOiBLZXZpbiBCdWV0dG5lciA8a2V2aW5iQHJlZGhhdC5jb20+CiAg ICAgICAgICAgIERhdGUgICA6IDIwMjItMDUtMTNUMTA6MzA6MDUtMDc6MDAKICAgICAgICAgICAg U3RhdHMgIDogKzU5Ni8tMzY2MSBpbiAzMiBmaWxlKHMpCiAgICAgICAgICAgIFVSTCAgICA6IGh0 dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvZ2RiL2MvMWYxOTA2YzRjNzMxMTZmYWJh YzQyMDBmZjIwMWZkZGE1YmVmN2EwYT9icmFuY2g9Zml4LWR1cC1wYXRjaAoKICAgICAgICAgICAg TG9nOgogICAgICAgICAgICBSZWJhc2UgdG8gRlNGIEdEQiAxMi4xLgoKVXBkYXRlIGdkYi02LjYt YnVpbGRpZC1sb2NhdGUucGF0Y2guClVwZGF0ZSBnZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJwbS5w YXRjaC4KRHJvcHBlZCBiYWNrcG9ydGVkIHBhdGNoZXMgZnJvbSBHREIgMTEuMSBhbmQgMTEuMi4K Ci0tLQpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUKaW5kZXggZDQzZTYzYi4u Yjc2NGUyMiAxMDA2NDQKLS0tIGEvLmdpdGlnbm9yZQorKysgYi8uZ2l0aWdub3JlCkBAIC0xLDQg KzEsNCBAQAogL25ldy1mZWRvcmEtcmVsZWFzZQogL2dkYi1saWJzdGRjKystdjMtcHl0aG9uLTgu MS4xLTIwMTgwNjI2LnRhci54egotL2dkYi0xMS4yLnRhci54egorL2dkYi0xMi4xLnRhci54egog L3YyLjAuNS50YXIuZ3oKCmRpZmYgLS1naXQgYS9fZ2RiLnNwZWMuUGF0Y2guaW5jbHVkZSBiL19n ZGIuc3BlYy5QYXRjaC5pbmNsdWRlCmluZGV4IGEwMDdkYTguLmUyMmU5ZGUgMTAwNjQ0Ci0tLSBh L19nZGIuc3BlYy5QYXRjaC5pbmNsdWRlCisrKyBiL19nZGIuc3BlYy5QYXRjaC5pbmNsdWRlCkBA IC0zMTAsNTYgKzMxMCwzIEBAIFBhdGNoMDczOiBnZGItcmhiejEzOTgzODctdGFiLWNyYXNoLXRl c3QucGF0Y2gKICMgPWZlZG9yYXRlc3QKIFBhdGNoMDc0OiBnZGItcmhiejE1NTMxMDQtczM5MHgt YXJjaDEyLXRlc3QucGF0Y2gKIAotI0JhY2twb3J0IHVwc3RyZWFtIHBhdGNoIHdoaWNoIGZpeGVz IGludGVybmFsLWVycm9yOiBVbmV4cGVjdGVkCi0jdHlwZSBmaWVsZCBsb2NhdGlvbiBraW5kIChS SEJaIDE5NzY4ODcpLgotUGF0Y2gwNzU6IGdkYi1yaGJ6MTk3Njg4Ny1maWVsZC1sb2NhdGlvbi1r aW5kLnBhdGNoCi0KLSMgQmFja3BvcnQgdGVzdCBmb3IgUkhCWiAxOTc2ODg3IChLZXZpbiBCdWV0 dG5lcikuCi1QYXRjaDA3NjogZ2RiLXRlc3QtZm9yLXJoYnoxOTc2ODg3LnBhdGNoCi0KLSMgQmFj a3BvcnQgZ2RiLmZvcnRyYW4gdGVzdHN1aXRlIGNoYW5nZXMgaW4gb3JkZXIgdG8gYXZvaWQgRm9y dHJhbgotIyBsZXhpY2FsIGFuYWx5emVyIGJ1Zy4KLVBhdGNoMDc3OiBnZGItcmhiejIwMTI5NzYt cGFwZXItb3Zlci1mb3J0cmFuLWxleC1wcm9ibGVtcy5wYXRjaAotCi0jIEJhY2twb3J0IG1hbnBh Z2UgdXBkYXRlCi1QYXRjaDA3ODogZ2RiLXJoYnotODUzMDcxLXVwZGF0ZS1tYW5wYWdlcy5wYXRj aAotCi0jIEJhY2twb3J0IGZpeCBmb3IgZHByaW50ZiBidWcgKFJIIEJaIDIwMjIxNzcpLgotUGF0 Y2gwNzk6IGdkYi1yaGJ6MjAyMjE3Ny1kcHJpbnRmLTEucGF0Y2gKLQotIyBCYWNrcG9ydCB0ZXN0 IGNhc2UgZm9yIGRwcmludGYgYnVnIChSSCBCWiAyMDIyMTc3KS4KLVBhdGNoMDgwOiBnZGItcmhi ejIwMjIxNzctZHByaW50Zi0yLnBhdGNoCi0KLSNCYWNrcG9ydCB1cHN0cmVhbSBjb21taXQgZnJv bSBBYXJvbiBNZXJleQotIzNlYTQ0ZjIxMjk5IGdkYi50ZXhpbmZvOiBFeHBhbmQgZG9jdW1lbnRh dGlvbiBmb3IgZGVidWdpbmZvZAotUGF0Y2gwODE6IGdkYi1yaGJ6MjAyNDg3NS1leHBhbmQtZG9j dW1lbnRhdGlvbi1mb3ItZGVidWdpbmZvZC5wYXRjaAotCi0jQmFja3BvcnQgdXBzdHJlYW0gY29t bWl0IGZyb20gQWFyb24gTWVyZXkKLSM3ODExZmE1OTk1ZiBnZGI6IGFkZCBzZXQvc2hvdyBjb21t YW5kcyBmb3IgbWFuYWdpbmcgZGVidWdpbmZvCi1QYXRjaDA4MjogZ2RiLXJoYnoyMDI0ODc1LXNl dF9zaG93LWZvci1tYW5hZ2luZy1kZWJ1Z2luZm9kLnBhdGNoCi0KLSNCYWNrcG9ydCB1cHN0cmVh bSBjb21taXQgZnJvbSBUb20gVHJvbWV5Ci0jMmE4ZjFmNDc0NDYgRml4IHVuaXR0ZXN0LmV4cCBm YWlsdXJlIGR1ZSB0byAnc2V0IGRlYnVnaW5mb2QnIGFkZGl0aW9uCi1QYXRjaDA4MzogZ2RiLXJo YnoyMDI0ODc1LWZpeC11bml0dGVzdC1mYWlsdXJlLnBhdGNoCi0KLSNCYWNrcG9ydCB1cHN0cmVh bSBjb21taXQgZnJvbSAgU2ltb24gTWFyY2hpCi0jMzMzZjM1YjYzMTUgZ2RiOiBwYXNzL3JldHVy biBzZXR0aW5nIHNldHRlci9nZXR0ZXIKLSNzY2FsYXIgdmFsdWVzIGJ5IHZhbHVlCi1QYXRjaDA4 NDogZ2RiLXJoYnoyMDI0ODctcmV3b3JrLXNldC1kZWJ1Z2luZm9kLnBhdGNoCi0KLSNCYWNrcG9y dCB1cHN0cmVhbSBjb21taXQgZnJvbSBBYXJvbiBNZXJleQotI2I5ZGIyNmI0YzQ0IFtQUiBnZGIv MjcwMjZdIENUUkwtQyBpcyBpZ25vcmVkIHdoZW4gZGVidWcgaW5mbyBpcyBkb3dubG9hZGVkCi1Q YXRjaDA4NTogZ2RiLXJoYnoyMDI0ODc1LXByMjcwMjYucGF0Y2gKLQotIyBGaXggYnVpbGQgcHJv YmxlbXMuCi0jIChSSEJaIDIwNDIyNTcsIEtlaXRoIFNlaXR6LCBBbmRyZXcgQnVyZ2VzcykKLVBh dGNoMDg2OiBnZGItcmhiejIwNDIyNTctZnRicy11cGRhdGVzLnBhdGNoCi0KLSMgQmFja3BvcnQg Zml4IHdoaWNoIGZpeGVzIGludGVybmFsIGVycm9yIGR1ZSB0byBsaWJjY19zIGxhY2tpbmcgYQot IyAuZGF0YSBzZWN0aW9uLgotUGF0Y2gwODc6IGdkYi1yaGJ6MjA0MjY2NC1maXgtc2VjdF9pbmRl eF9kYXRhLWludGVybmFsLWVycm9yCi0KLSMgQmFja3BvcnQgdXBzdHJlYW0gcGF0Y2ggZnJvbSBB YXJvbiBNZXJleSB3aGljaCBzdXBwcmVzc2VzIGRlYnVnaW5mb2QKLSMgcHJvZ3Jlc3MgbWVzc2Fn ZXMgd2hlbiBzaXplIGlzIHplcm8uICAoUkggQlogMjA2ODI4MCkuCi1QYXRjaDA4ODogZ2RiLXJo YnoyMDY4MjgwLWRlYnVnaW5mb2QtdW5hdmFpbGFibGUtc2l6ZS5wYXRjaAotCgpkaWZmIC0tZ2l0 IGEvX2dkYi5zcGVjLnBhdGNoLmluY2x1ZGUgYi9fZ2RiLnNwZWMucGF0Y2guaW5jbHVkZQppbmRl eCBiNmMxMzUyLi5hZmZlNzcxIDEwMDY0NAotLS0gYS9fZ2RiLnNwZWMucGF0Y2guaW5jbHVkZQor KysgYi9fZ2RiLnNwZWMucGF0Y2guaW5jbHVkZQpAQCAtNzIsMTcgKzcyLDMgQEAKICVwYXRjaDA3 MiAtcDEKICVwYXRjaDA3MyAtcDEKICVwYXRjaDA3NCAtcDEKLSVwYXRjaDA3NSAtcDEKLSVwYXRj aDA3NiAtcDEKLSVwYXRjaDA3NyAtcDEKLSVwYXRjaDA3OCAtcDEKLSVwYXRjaDA3OSAtcDEKLSVw YXRjaDA4MCAtcDEKLSVwYXRjaDA4MSAtcDEKLSVwYXRjaDA4MiAtcDEKLSVwYXRjaDA4MyAtcDEK LSVwYXRjaDA4NCAtcDEKLSVwYXRjaDA4NSAtcDEKLSVwYXRjaDA4NiAtcDEKLSVwYXRjaDA4NyAt cDEKLSVwYXRjaDA4OCAtcDEKCmRpZmYgLS1naXQgYS9fZ2l0X3Vwc3RyZWFtX2NvbW1pdCBiL19n aXRfdXBzdHJlYW1fY29tbWl0CmluZGV4IDYwODllYWYuLmRhOWVhZDEgMTAwNjQ0Ci0tLSBhL19n aXRfdXBzdHJlYW1fY29tbWl0CisrKyBiL19naXRfdXBzdHJlYW1fY29tbWl0CkBAIC0xICsxIEBA Ci1lZjZlYzMzMzNlODBlMzljZTIwN2M2YzVkNTYyOGJkZDU0MDIxMTFkCitlNTNhOGU4Njg1Njg1 Yzk3NTg4ZjgzMTlkOTkzZWE2Y2Q1NjM1ZTQ3CgpkaWZmIC0tZ2l0IGEvX3BhdGNoX29yZGVyIGIv X3BhdGNoX29yZGVyCmluZGV4IDlhNTA1ZTcuLmU5NzJlMWIgMTAwNjQ0Ci0tLSBhL19wYXRjaF9v cmRlcgorKysgYi9fcGF0Y2hfb3JkZXIKQEAgLTcyLDE3ICs3MiwzIEBAIGdkYi1saW51eF9wZXJm LWJ1bmRsZS5wYXRjaAogZ2RiLWxpYmV4ZWMtYWRkLWluZGV4LnBhdGNoCiBnZGItcmhiejEzOTgz ODctdGFiLWNyYXNoLXRlc3QucGF0Y2gKIGdkYi1yaGJ6MTU1MzEwNC1zMzkweC1hcmNoMTItdGVz dC5wYXRjaAotZ2RiLXJoYnoxOTc2ODg3LWZpZWxkLWxvY2F0aW9uLWtpbmQucGF0Y2gKLWdkYi10 ZXN0LWZvci1yaGJ6MTk3Njg4Ny5wYXRjaAotZ2RiLXJoYnoyMDEyOTc2LXBhcGVyLW92ZXItZm9y dHJhbi1sZXgtcHJvYmxlbXMucGF0Y2gKLWdkYi1yaGJ6LTg1MzA3MS11cGRhdGUtbWFucGFnZXMu cGF0Y2gKLWdkYi1yaGJ6MjAyMjE3Ny1kcHJpbnRmLTEucGF0Y2gKLWdkYi1yaGJ6MjAyMjE3Ny1k cHJpbnRmLTIucGF0Y2gKLWdkYi1yaGJ6MjAyNDg3NS1leHBhbmQtZG9jdW1lbnRhdGlvbi1mb3It ZGVidWdpbmZvZC5wYXRjaAotZ2RiLXJoYnoyMDI0ODc1LXNldF9zaG93LWZvci1tYW5hZ2luZy1k ZWJ1Z2luZm9kLnBhdGNoCi1nZGItcmhiejIwMjQ4NzUtZml4LXVuaXR0ZXN0LWZhaWx1cmUucGF0 Y2gKLWdkYi1yaGJ6MjAyNDg3LXJld29yay1zZXQtZGVidWdpbmZvZC5wYXRjaAotZ2RiLXJoYnoy MDI0ODc1LXByMjcwMjYucGF0Y2gKLWdkYi1yaGJ6MjA0MjI1Ny1mdGJzLXVwZGF0ZXMucGF0Y2gK LWdkYi1yaGJ6MjA0MjY2NC1maXgtc2VjdF9pbmRleF9kYXRhLWludGVybmFsLWVycm9yCi1nZGIt cmhiejIwNjgyODAtZGVidWdpbmZvZC11bmF2YWlsYWJsZS1zaXplLnBhdGNoCgpkaWZmIC0tZ2l0 IGEvZ2RiLTYuMy1nc3RhY2stMjAwNTA0MTEucGF0Y2ggYi9nZGItNi4zLWdzdGFjay0yMDA1MDQx MS5wYXRjaAppbmRleCA5ZmEyZTdkLi42ZjZlY2ZiIDEwMDY0NAotLS0gYS9nZGItNi4zLWdzdGFj ay0yMDA1MDQxMS5wYXRjaAorKysgYi9nZGItNi4zLWdzdGFjay0yMDA1MDQxMS5wYXRjaApAQCAt MTYsNyArMTYsNyBAQCBTdWJqZWN0OiBnZGItNi4zLWdzdGFjay0yMDA1MDQxMS5wYXRjaAogZGlm ZiAtLWdpdCBhL2dkYi9NYWtlZmlsZS5pbiBiL2dkYi9NYWtlZmlsZS5pbgogLS0tIGEvZ2RiL01h a2VmaWxlLmluCiArKysgYi9nZGIvTWFrZWZpbGUuaW4KLUBAIC0xNzUzLDcgKzE3NTMsNyBAQCBp bmZvIGluc3RhbGwtaW5mbyBjbGVhbi1pbmZvIGR2aSBwZGYgaW5zdGFsbC1wZGYgaHRtbCBpbnN0 YWxsLWh0bWw6IGZvcmNlCitAQCAtMTc2Nyw3ICsxNzY3LDcgQEAgaW5mbyBpbnN0YWxsLWluZm8g Y2xlYW4taW5mbyBkdmkgcGRmIGluc3RhbGwtcGRmIGh0bWwgaW5zdGFsbC1odG1sOiBmb3JjZQog IGluc3RhbGw6IGFsbAogIAlAJChNQUtFKSAkKEZMQUdTX1RPX1BBU1MpIGluc3RhbGwtb25seQog IApAQCAtMjUsNyArMjUsNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL01ha2VmaWxlLmluIGIvZ2RiL01h a2VmaWxlLmluCiAgCXRyYW5zZm9ybWVkX25hbWU9YHQ9JyQocHJvZ3JhbV90cmFuc2Zvcm1fbmFt ZSknOyBcCiAgCQkJICBlY2hvIGdkYiB8IHNlZCAtZSAiJCR0ImAgOyBcCiAgCQlpZiB0ZXN0ICJ4 JCR0cmFuc2Zvcm1lZF9uYW1lIiA9IHg7IHRoZW4gXAotQEAgLTE4MDIsNyArMTgwMiwyNSBAQCBp bnN0YWxsLWd1aWxlOgorQEAgLTE4MTYsNyArMTgxNiwyNSBAQCBpbnN0YWxsLWd1aWxlOgogIGlu c3RhbGwtcHl0aG9uOgogIAkkKFNIRUxMKSAkKHNyY2RpcikvLi4vbWtpbnN0YWxsZGlycyAkKERF U1RESVIpJChHREJfREFUQURJUikvcHl0aG9uL2dkYgogIApAQCAtNTIsOCArNTIsOCBAQCBkaWZm IC0tZ2l0IGEvZ2RiL01ha2VmaWxlLmluIGIvZ2RiL01ha2VmaWxlLmluCiAgCXRyYW5zZm9ybWVk X25hbWU9YHQ9JyQocHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSknOyBcCiAgCQkJICBlY2hvIGdkYiB8 IHNlZCAtZSAkJHRgIDsgXAogIAkJaWYgdGVzdCAieCQkdHJhbnNmb3JtZWRfbmFtZSIgPSB4OyB0 aGVuIFwKLUBAIC0xODI1LDYgKzE4NDMsMTggQEAgdW5pbnN0YWxsOiBmb3JjZSAkKENPTkZJR19V TklOU1RBTEwpCi0gCWZpCitAQCAtMTg0Nyw2ICsxODY1LDE4IEBAIHVuaW5zdGFsbDogZm9yY2Ug JChDT05GSUdfVU5JTlNUQUxMKQorIAlybSAtZiAkKERFU1RESVIpJChiaW5kaXIpLyQkdHJhbnNm b3JtZWRfbmFtZQogIAlAJChNQUtFKSBETz11bmluc3RhbGwgIkRPRElSUz0kKFNVQkRJUlMpIiAk KEZMQUdTX1RPX1BBU1MpIHN1YmRpcl9kbwogIAogKy5QSE9OWTogdW5pbnN0YWxsLWdzdGFjawoK ZGlmZiAtLWdpdCBhL2dkYi02LjMtcmgtdGVzdHZlcnNpb24tMjAwNDEyMDIucGF0Y2ggYi9nZGIt Ni4zLXJoLXRlc3R2ZXJzaW9uLTIwMDQxMjAyLnBhdGNoCmluZGV4IDdlZTY4ZTQuLjgyYzY5M2Ig MTAwNjQ0Ci0tLSBhL2dkYi02LjMtcmgtdGVzdHZlcnNpb24tMjAwNDEyMDIucGF0Y2gKKysrIGIv Z2RiLTYuMy1yaC10ZXN0dmVyc2lvbi0yMDA0MTIwMi5wYXRjaApAQCAtMjcsNyArMjcsNyBAQCBk aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cCBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdAogZGlmZiAtLWdpdCBhL2dkYi90b3AuYyBiL2dkYi90b3Au YwogLS0tIGEvZ2RiL3RvcC5jCiArKysgYi9nZGIvdG9wLmMKLUBAIC0yMTk1LDcgKzIxOTUsNyBA QCBpbml0X2dkYl92ZXJzaW9uX3ZhcnMgKHZvaWQpCitAQCAtMjIzNCw3ICsyMjM0LDcgQEAgaW5p dF9nZGJfdmVyc2lvbl92YXJzICh2b2lkKQogICAgc3RydWN0IGludGVybmFsdmFyICptYWpvcl92 ZXJzaW9uX3ZhciA9IGNyZWF0ZV9pbnRlcm5hbHZhciAoIl9nZGJfbWFqb3IiKTsKICAgIHN0cnVj dCBpbnRlcm5hbHZhciAqbWlub3JfdmVyc2lvbl92YXIgPSBjcmVhdGVfaW50ZXJuYWx2YXIgKCJf Z2RiX21pbm9yIik7CiAgICBpbnQgdm1ham9yID0gMCwgdm1pbm9yID0gMCwgdnJldmlzaW9uID0g MDsKCmRpZmYgLS1naXQgYS9nZGItNi41LWJ6MTg1MzM3LXJlc29sdmUtdGxzLXdpdGhvdXQtZGVi dWdpbmZvLXYyLnBhdGNoIGIvZ2RiLTYuNS1iejE4NTMzNy1yZXNvbHZlLXRscy13aXRob3V0LWRl YnVnaW5mby12Mi5wYXRjaAppbmRleCAzMDRhYTM4Li5hYzNhYTE3IDEwMDY0NAotLS0gYS9nZGIt Ni41LWJ6MTg1MzM3LXJlc29sdmUtdGxzLXdpdGhvdXQtZGVidWdpbmZvLXYyLnBhdGNoCisrKyBi L2dkYi02LjUtYnoxODUzMzctcmVzb2x2ZS10bHMtd2l0aG91dC1kZWJ1Z2luZm8tdjIucGF0Y2gK QEAgLTQ0LDcgKzQ0LDcgQEAgZ2xpYmMtZGVidWdpbmZvLTIuNy0yLng4Nl82NDogL3Vzci9saWIv ZGVidWcvbGliNjQvbGliYy5zby42LmRlYnVnOgogZGlmZiAtLWdpdCBhL2dkYi9wcmludGNtZC5j IGIvZ2RiL3ByaW50Y21kLmMKIC0tLSBhL2dkYi9wcmludGNtZC5jCiArKysgYi9nZGIvcHJpbnRj bWQuYwotQEAgLTEzMDYsNiArMTMwNiwxMCBAQCBwcm9jZXNzX3ByaW50X2NvbW1hbmRfYXJncyAo Y29uc3QgY2hhciAqYXJncywgdmFsdWVfcHJpbnRfb3B0aW9ucyAqcHJpbnRfb3B0cywKK0BAIC0x MzAxLDYgKzEzMDEsMTAgQEAgcHJvY2Vzc19wcmludF9jb21tYW5kX2FyZ3MgKGNvbnN0IGNoYXIg KmFyZ3MsIHZhbHVlX3ByaW50X29wdGlvbnMgKnByaW50X29wdHMsCiAgCiAgICBpZiAoZXhwICE9 IG51bGxwdHIgJiYgKmV4cCkKICAgICAgewoKZGlmZiAtLWdpdCBhL2dkYi02LjYtYnVpbGRpZC1s b2NhdGUtcnBtLWxpYnJwbS13b3JrYXJvdW5kLnBhdGNoIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0 ZS1ycG0tbGlicnBtLXdvcmthcm91bmQucGF0Y2gKaW5kZXggYzg2ZWM2Yi4uMmI4NjJhMCAxMDA2 NDQKLS0tIGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0tbGlicnBtLXdvcmthcm91bmQucGF0 Y2gKKysrIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0tbGlicnBtLXdvcmthcm91bmQucGF0 Y2gKQEAgLTYsMjkgKzYsNiBAQCBTdWJqZWN0OiBnZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJwbS1s aWJycG0td29ya2Fyb3VuZC5wYXRjaAogOzsgV29ya2Fyb3VuZCBsaWJycG0gQlogNjQzMDMxIGR1 ZSB0byBpdHMgdW5leHBlY3RlZCBleGl0KCkgY2FsbHMgKEJaIDY0Mjg3OSkuCiA7Oz1wdXNoK2ph bgogCi1kaWZmIC0tZ2l0IGEvZ2RiL2J1aWxkLWlkLmMgYi9nZGIvYnVpbGQtaWQuYwotLS0tIGEv Z2RiL2J1aWxkLWlkLmMKLSsrKyBiL2dkYi9idWlsZC1pZC5jCi1AQCAtNzA4LDYgKzcwOCwxOSBA QCBidWlsZF9pZF90b19maWxlbmFtZSAoY29uc3Qgc3RydWN0IGJmZF9idWlsZF9pZCAqYnVpbGRf aWQsIGNoYXIgKipsaW5rX3JldHVybikKLSAjaW5jbHVkZSA8ZGxmY24uaD4KLSAjZW5kaWYKLSAK LSsvKiBXb3JrYXJvZHVuIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/ aWQ9NjQzMDMxCi0rICAgbGlicnBtIG11c3Qgbm90IGV4aXQoKSBhbiBhcHBsaWNhdGlvbiBvbiBT SUdJTlQKLSsKLSsgICBFbmFibGUgb3IgZGlzYWJsZSBhIHNpZ25hbCBoYW5kbGVyLiAgU0lHTlVN OiBzaWduYWwgdG8gZW5hYmxlIChvciBkaXNhYmxlCi0rICAgaWYgbmVnYXRpdmUpLiAgSEFORExF Ujogc2Ffc2lnYWN0aW9uIGhhbmRsZXIgKG9yIE5VTEwgdG8gdXNlCi0rICAgcnBtc3FIYW5kbGVy KCkpLiAgUmV0dXJuczogbm8uIG9mIHJlZnMsIC0xIG9uIGVycm9yLiAgKi8KLStleHRlcm4gaW50 IHJwbXNxRW5hYmxlIChpbnQgc2lnbnVtLCAvKiBycG1zcUFjdGlvbl90IGhhbmRsZXIgKi8gdm9p ZCAqaGFuZGxlcik7Ci0raW50Ci0rcnBtc3FFbmFibGUgKGludCBzaWdudW0sIC8qIHJwbXNxQWN0 aW9uX3QgaGFuZGxlciAqLyB2b2lkICpoYW5kbGVyKQotK3sKLSsgIHJldHVybiAwOwotK30KLSsK LSAvKiBUaGlzIE1JU1NJTkdfUlBNX0hBU0ggdHJhY2tlciBpcyB1c2VkIHRvIGNvbGxlY3QgYWxs IHRoZSBtaXNzaW5nIHJwbSBmaWxlcwotICAgIGFuZCBhdm9pZCB0aGVpciBkdXBsaWNpdGllcyBk dXJpbmcgYSBzaW5nbGUgaW5mZXJpb3IgcnVuLiAgKi8KLSAKIGRpZmYgLS1naXQgYS9nZGIvcHJv Yy1zZXJ2aWNlLmxpc3QgYi9nZGIvcHJvYy1zZXJ2aWNlLmxpc3QKIC0tLSBhL2dkYi9wcm9jLXNl cnZpY2UubGlzdAogKysrIGIvZ2RiL3Byb2Mtc2VydmljZS5saXN0CgpkaWZmIC0tZ2l0IGEvZ2Ri LTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0tc2NsLnBhdGNoIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0 ZS1ycG0tc2NsLnBhdGNoCmluZGV4IDFkYzNhYzQuLjdkNDM4OWEgMTAwNjQ0Ci0tLSBhL2dkYi02 LjYtYnVpbGRpZC1sb2NhdGUtcnBtLXNjbC5wYXRjaAorKysgYi9nZGItNi42LWJ1aWxkaWQtbG9j YXRlLXJwbS1zY2wucGF0Y2gKQEAgLTksOTYgKzksMTAgQEAgU3ViamVjdDogZ2RiLTYuNi1idWls ZGlkLWxvY2F0ZS1ycG0tc2NsLnBhdGNoCiB3YXJuaW5nOiBTa2lwcGluZyBkZXByZWNhdGVkIC5n ZGJfaW5kZXggc2VjdGlvbgogaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNn aT9pZD05NTM1ODUKIAotZGlmZiAtLWdpdCBhL2dkYi9idWlsZC1pZC5jIGIvZ2RiL2J1aWxkLWlk LmMKLS0tLSBhL2dkYi9idWlsZC1pZC5jCi0rKysgYi9nZGIvYnVpbGQtaWQuYwotQEAgLTc0Miw3 ICs3NDIsMTEgQEAgc3RhdGljIGludCBtaXNzaW5nX3JwbV9saXN0X2VudHJpZXM7Ci0gLyogUmV0 dXJucyB0aGUgY291bnQgb2YgbmV3bHkgYWRkZWQgcnBtcy4gICovCi0gCi0gc3RhdGljIGludAot KyNpZm5kZWYgR0RCX0lOREVYX1ZFUklGWV9WRU5ET1IKLSBtaXNzaW5nX3JwbV9lbmxpc3QgKGNv bnN0IGNoYXIgKmZpbGVuYW1lKQotKyNlbHNlCi0rbWlzc2luZ19ycG1fZW5saXN0XzEgKGNvbnN0 IGNoYXIgKmZpbGVuYW1lLCBpbnQgdmVyaWZ5X3ZlbmRvcikKLSsjZW5kaWYKLSB7Ci0gICBzdGF0 aWMgaW50IHJwbV9pbml0X2RvbmUgPSAwOwotICAgcnBtdHMgdHM7Ci1AQCAtODQ5LDcgKzg1Mywx MSBAQCBtaXNzaW5nX3JwbV9lbmxpc3QgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotICAgbWkgPSBy cG10c0luaXRJdGVyYXRvcl9wICh0cywgUlBNVEFHX0JBU0VOQU1FUywgZmlsZW5hbWUsIDApOwot ICAgaWYgKG1pICE9IE5VTEwpCi0gICAgIHsKLSsjaWZuZGVmIEdEQl9JTkRFWF9WRVJJRllfVkVO RE9SCi0gICAgICAgZm9yICg7OykKLSsjZWxzZQotKyAgICAgIGlmICghdmVyaWZ5X3ZlbmRvcikg Zm9yICg7OykKLSsjZW5kaWYKLSAJewotIAkgIEhlYWRlciBoOwotIAkgIGNoYXIgKmRlYnVnaW5m bywgKipzbG90LCAqcywgKnMyOwotQEAgLTk2Nyw2ICs5NzUsMzcgQEAgbWlzc2luZ19ycG1fZW5s aXN0IChjb25zdCBjaGFyICpmaWxlbmFtZSkKLSAJICAgIHhmcmVlIChkZWJ1Z2luZm8pOwotIAkg IGNvdW50Kys7Ci0gCX0KLSsjaWZkZWYgR0RCX0lOREVYX1ZFUklGWV9WRU5ET1IKLSsgICAgICBl bHNlIC8qIHZlcmlmeV92ZW5kb3IgKi8KLSsJewotKwkgIGludCB2ZW5kb3JfcGFzcyA9IDAsIHZl bmRvcl9mYWlsID0gMDsKLSsKLSsJICBmb3IgKDs7KQotKwkgICAgewotKwkgICAgICBIZWFkZXIg aDsKLSsJICAgICAgZXJybXNnX3QgZXJyOwotKwkgICAgICBjaGFyICp2ZW5kb3I7Ci0rCi0rCSAg ICAgIGggPSBycG1kYk5leHRJdGVyYXRvcl9wIChtaSk7Ci0rCSAgICAgIGlmIChoID09IE5VTEwp Ci0rCQlicmVhazsKLSsKLSsJICAgICAgdmVuZG9yID0gaGVhZGVyRm9ybWF0X3AgKGgsICIle3Zl bmRvcn0iLCAmZXJyKTsKLSsJICAgICAgaWYgKCF2ZW5kb3IpCi0rCQl7Ci0rCQkgIHdhcm5pbmcg KF8oIkVycm9yIHF1ZXJ5aW5nIHRoZSBycG0gZmlsZSBgJXMnOiAlcyIpLCBmaWxlbmFtZSwKLSsJ CQkgICBlcnIpOwotKwkJICBjb250aW51ZTsKLSsJCX0KLSsJICAgICAgaWYgKHN0cmNtcCAodmVu ZG9yLCAiUmVkIEhhdCwgSW5jLiIpID09IDApCi0rCQl2ZW5kb3JfcGFzcyA9IDE7Ci0rCSAgICAg IGVsc2UKLSsJCXZlbmRvcl9mYWlsID0gMTsKLSsJICAgICAgeGZyZWUgKHZlbmRvcik7Ci0rCSAg ICB9Ci0rCSAgY291bnQgPSB2ZW5kb3JfcGFzcyAhPSAwICYmIHZlbmRvcl9mYWlsID09IDA7Ci0r CX0KLSsjZW5kaWYKLSAKLSAgICAgICBycG1kYkZyZWVJdGVyYXRvcl9wIChtaSk7Ci0gICAgIH0K LUBAIC05NzYsNiArMTAxNSwyMCBAQCBtaXNzaW5nX3JwbV9lbmxpc3QgKGNvbnN0IGNoYXIgKmZp bGVuYW1lKQotICAgcmV0dXJuIGNvdW50OwotIH0KLSAKLSsjaWZkZWYgR0RCX0lOREVYX1ZFUklG WV9WRU5ET1IKLSttaXNzaW5nX3JwbV9lbmxpc3QgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotK3sK LSsgIHJldHVybiBtaXNzaW5nX3JwbV9lbmxpc3RfMSAoZmlsZW5hbWUsIDApOwotK30KLSsKLStl eHRlcm4gaW50IHJwbV92ZXJpZnlfdmVuZG9yIChjb25zdCBjaGFyICpmaWxlbmFtZSk7Ci0raW50 Ci0rcnBtX3ZlcmlmeV92ZW5kb3IgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotK3sKLSsgIHJldHVy biBtaXNzaW5nX3JwbV9lbmxpc3RfMSAoZmlsZW5hbWUsIDEpOwotK30KLSsjZW5kaWYKLSsKLSBz dGF0aWMgYm9vbAotIG1pc3NpbmdfcnBtX2xpc3RfY29tcGFyIChjb25zdCBjaGFyICphcCwgY29u c3QgY2hhciAqYnApCi0gewogZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjIvcmVhZC5jIGIvZ2RiL2R3 YXJmMi9yZWFkLmMKIC0tLSBhL2dkYi9kd2FyZjIvcmVhZC5jCiArKysgYi9nZGIvZHdhcmYyL3Jl YWQuYwotQEAgLTI4MDEsNiArMjgwMSwxNiBAQCByZWFkX2dkYl9pbmRleF9mcm9tX2J1ZmZlciAo Y29uc3QgY2hhciAqZmlsZW5hbWUsCitAQCAtMjc5Nyw2ICsyNzk3LDE2IEBAIHJlYWRfZ2RiX2lu ZGV4X2Zyb21fYnVmZmVyIChjb25zdCBjaGFyICpmaWxlbmFtZSwKICAgICAgICJzZXQgdXNlLWRl cHJlY2F0ZWQtaW5kZXgtc2VjdGlvbnMgb24iLiAgKi8KICAgIGlmICh2ZXJzaW9uIDwgNiAmJiAh ZGVwcmVjYXRlZF9vaykKICAgICAgewpAQCAtMTE1LDcgKzI5LDcgQEAgZGlmZiAtLWdpdCBhL2dk Yi9kd2FyZjIvcmVhZC5jIGIvZ2RiL2R3YXJmMi9yZWFkLmMKICAgICAgICBzdGF0aWMgaW50IHdh cm5pbmdfcHJpbnRlZCA9IDA7CiAgICAgICAgaWYgKCF3YXJuaW5nX3ByaW50ZWQpCiAgCXsKLUBA IC0yODEyLDYgKzI4MjIsMTAgQEAgdG8gdXNlIHRoZSBzZWN0aW9uIGFueXdheS4iKSwKK0BAIC0y ODA4LDYgKzI4MTgsMTAgQEAgdG8gdXNlIHRoZSBzZWN0aW9uIGFueXdheS4iKSwKICAJICB3YXJu aW5nX3ByaW50ZWQgPSAxOwogIAl9CiAgICAgICAgcmV0dXJuIDA7CgpkaWZmIC0tZ2l0IGEvZ2Ri LTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0ucGF0Y2ggYi9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJw bS5wYXRjaAppbmRleCBjMjk5NjlmLi5lZmFmOTg5IDEwMDY0NAotLS0gYS9nZGItNi42LWJ1aWxk aWQtbG9jYXRlLXJwbS5wYXRjaAorKysgYi9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJwbS5wYXRj aApAQCAtMjMyLDQ1NyArMjMyLDYgQEAgZGlmZiAtLWdpdCBhL2dkYi9hY2xvY2FsLm00IGIvZ2Ri L2FjbG9jYWwubTQKICAjIEFNX0FVWF9ESVJfRVhQQU5EICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCiAgCiAgIyBDb3B5cmlnaHQgKEMpIDIw MDEtMjAxNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLWRpZmYgLS1naXQgYS9nZGIv YnVpbGQtaWQuYyBiL2dkYi9idWlsZC1pZC5jCi0tLS0gYS9nZGIvYnVpbGQtaWQuYwotKysrIGIv Z2RiL2J1aWxkLWlkLmMKLUBAIC0zMyw2ICszMyw3IEBACi0gI2luY2x1ZGUgImdkYl9iZmQuaCIK LSAjaW5jbHVkZSAiZ2RiY21kLmgiCi0gI2luY2x1ZGUgImdkYmNvcmUuaCIKLSsjaW5jbHVkZSAi aW5mZXJpb3IuaCIKLSAjaW5jbHVkZSAib2JqZmlsZXMuaCIKLSAjaW5jbHVkZSAib2JzZXJ2YWJs ZS5oIgotICNpbmNsdWRlICJzeW1maWxlLmgiCi1AQCAtNjk3LDggKzY5OCwzNzQgQEAgYnVpbGRf aWRfdG9fZmlsZW5hbWUgKGNvbnN0IHN0cnVjdCBiZmRfYnVpbGRfaWQgKmJ1aWxkX2lkLCBjaGFy ICoqbGlua19yZXR1cm4pCi0gICByZXR1cm4gcmVzdWx0OwotIH0KLSAKLSsjaWZkZWYgSEFWRV9M SUJSUE0KLSsKLSsjaW5jbHVkZSA8cnBtL3JwbWxpYi5oPgotKyNpbmNsdWRlIDxycG0vcnBtdHMu aD4KLSsjaW5jbHVkZSA8cnBtL3JwbWRiLmg+Ci0rI2luY2x1ZGUgPHJwbS9oZWFkZXIuaD4KLSsj aWZkZWYgRExPUEVOX0xJQlJQTQotKyNpbmNsdWRlIDxkbGZjbi5oPgotKyNlbmRpZgotKwotKy8q IFRoaXMgTUlTU0lOR19SUE1fSEFTSCB0cmFja2VyIGlzIHVzZWQgdG8gY29sbGVjdCBhbGwgdGhl IG1pc3NpbmcgcnBtIGZpbGVzCi0rICAgYW5kIGF2b2lkIHRoZWlyIGR1cGxpY2l0aWVzIGR1cmlu ZyBhIHNpbmdsZSBpbmZlcmlvciBydW4uICAqLwotKwotK3N0YXRpYyBzdHJ1Y3QgaHRhYiAqbWlz c2luZ19ycG1faGFzaDsKLSsKLSsvKiBUaGlzIE1JU1NJTkdfUlBNX0xJU1QgdHJhY2tlciBpcyB1 c2VkIHRvIGNvbGxlY3QgYW5kIHByaW50IGFzIGEgc2luZ2xlIGxpbmUKLSsgICBhbGwgdGhlIHJw bXMgcmlnaHQgYmVmb3JlIHRoZSBuZWFyZXN0IEdEQiBwcm9tcHQuICBJdCBnZXRzIGNsZWFyZWQg YWZ0ZXIKLSsgICBlYWNoIHN1Y2ggcHJpbnQgKGl0IGlzIHF1ZXN0aW9uYWJsZSBpZiB3ZSBzaG91 bGQgY2xlYXIgaXQgYWZ0ZXIgdGhlIHByaW50KS4KLSsgICAqLwotKwotK3N0cnVjdCBtaXNzaW5n X3JwbQotKyAgewotKyAgICBzdHJ1Y3QgbWlzc2luZ19ycG0gKm5leHQ7Ci0rICAgIGNoYXIgcnBt WzFdOwotKyAgfTsKLStzdGF0aWMgc3RydWN0IG1pc3NpbmdfcnBtICptaXNzaW5nX3JwbV9saXN0 OwotK3N0YXRpYyBpbnQgbWlzc2luZ19ycG1fbGlzdF9lbnRyaWVzOwotKwotKy8qIFJldHVybnMg dGhlIGNvdW50IG9mIG5ld2x5IGFkZGVkIHJwbXMuICAqLwotKwotK3N0YXRpYyBpbnQKLSttaXNz aW5nX3JwbV9lbmxpc3QgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotK3sKLSsgIHN0YXRpYyBpbnQg cnBtX2luaXRfZG9uZSA9IDA7Ci0rICBycG10cyB0czsKLSsgIHJwbWRiTWF0Y2hJdGVyYXRvciBt aTsKLSsgIGludCBjb3VudCA9IDA7Ci0rCi0rI2lmZGVmIERMT1BFTl9MSUJSUE0KLSsgIC8qIER1 cGxpY2F0ZSBoZXJlIHRoZSBkZWNsYXJhdGlvbnMgdG8gdmVyaWZ5IHRoZXkgbWF0Y2guICBUaGUg c2FtZSBzYW5pdHkKLSsgICAgIGNoZWNrIGlzIHByZXNlbnQgYWxzbyBpbiBgY29uZmlndXJlLmFj Jy4gICovCi0rICBleHRlcm4gY2hhciAqIGhlYWRlckZvcm1hdChIZWFkZXIgaCwgY29uc3QgY2hh ciAqIGZtdCwgZXJybXNnX3QgKiBlcnJtc2cpOwotKyAgc3RhdGljIGNoYXIgKigqaGVhZGVyRm9y bWF0X3ApIChIZWFkZXIgaCwgY29uc3QgY2hhciAqIGZtdCwgZXJybXNnX3QgKmVycm1zZyk7Ci0r ICBleHRlcm4gaW50IHJwbVJlYWRDb25maWdGaWxlcyhjb25zdCBjaGFyICogZmlsZSwgY29uc3Qg Y2hhciAqIHRhcmdldCk7Ci0rICBzdGF0aWMgaW50ICgqcnBtUmVhZENvbmZpZ0ZpbGVzX3ApIChj b25zdCBjaGFyICogZmlsZSwgY29uc3QgY2hhciAqIHRhcmdldCk7Ci0rICBleHRlcm4gcnBtZGJN YXRjaEl0ZXJhdG9yIHJwbWRiRnJlZUl0ZXJhdG9yKHJwbWRiTWF0Y2hJdGVyYXRvciBtaSk7Ci0r ICBzdGF0aWMgcnBtZGJNYXRjaEl0ZXJhdG9yICgqcnBtZGJGcmVlSXRlcmF0b3JfcCkgKHJwbWRi TWF0Y2hJdGVyYXRvciBtaSk7Ci0rICBleHRlcm4gSGVhZGVyIHJwbWRiTmV4dEl0ZXJhdG9yKHJw bWRiTWF0Y2hJdGVyYXRvciBtaSk7Ci0rICBzdGF0aWMgSGVhZGVyICgqcnBtZGJOZXh0SXRlcmF0 b3JfcCkgKHJwbWRiTWF0Y2hJdGVyYXRvciBtaSk7Ci0rICBleHRlcm4gcnBtdHMgcnBtdHNDcmVh dGUodm9pZCk7Ci0rICBzdGF0aWMgcnBtdHMgKCpycG10c0NyZWF0ZV9wKSAodm9pZCk7Ci0rICBl eHRlcm4gcnBtdHMgcnBtdHNGcmVlKHJwbXRzIHRzKTsKLSsgIHN0YXRpYyBycG10cyAoKnJwbXRz RnJlZV9wKSAocnBtdHMgdHMpOwotKyAgZXh0ZXJuIHJwbWRiTWF0Y2hJdGVyYXRvciBycG10c0lu aXRJdGVyYXRvcihjb25zdCBycG10cyB0cywgcnBtVGFnIHJwbXRhZywKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqIGtleXAsIHNpemVf dCBrZXlsZW4pOwotKyAgc3RhdGljIHJwbWRiTWF0Y2hJdGVyYXRvciAoKnJwbXRzSW5pdEl0ZXJh dG9yX3ApIChjb25zdCBycG10cyB0cywKLSsJCQkJCQkgICAgcnBtVGFnIHJwbXRhZywKLSsJCQkJ CQkgICAgY29uc3Qgdm9pZCAqa2V5cCwKLSsJCQkJCQkgICAgc2l6ZV90IGtleWxlbik7Ci0rI2Vs c2UJLyogIURMT1BFTl9MSUJSUE0gKi8KLSsjIGRlZmluZSBoZWFkZXJGb3JtYXRfcCBoZWFkZXJG b3JtYXQKLSsjIGRlZmluZSBycG1SZWFkQ29uZmlnRmlsZXNfcCBycG1SZWFkQ29uZmlnRmlsZXMK LSsjIGRlZmluZSBycG1kYkZyZWVJdGVyYXRvcl9wIHJwbWRiRnJlZUl0ZXJhdG9yCi0rIyBkZWZp bmUgcnBtZGJOZXh0SXRlcmF0b3JfcCBycG1kYk5leHRJdGVyYXRvcgotKyMgZGVmaW5lIHJwbXRz Q3JlYXRlX3AgcnBtdHNDcmVhdGUKLSsjIGRlZmluZSBycG10c0ZyZWVfcCBycG10c0ZyZWUKLSsj IGRlZmluZSBycG10c0luaXRJdGVyYXRvcl9wIHJwbXRzSW5pdEl0ZXJhdG9yCi0rI2VuZGlmCS8q ICFETE9QRU5fTElCUlBNICovCi0rCi0rICBnZGJfYXNzZXJ0IChmaWxlbmFtZSAhPSBOVUxMKTsK LSsKLSsgIGlmIChzdHJjbXAgKGZpbGVuYW1lLCBCVUlMRF9JRF9NQUlOX0VYRUNVVEFCTEVfRklM RU5BTUUpID09IDApCi0rICAgIHJldHVybiAwOwotKwotKyAgaWYgKGlzX3RhcmdldF9maWxlbmFt ZSAoZmlsZW5hbWUpKQotKyAgICByZXR1cm4gMDsKLSsKLSsgIGlmIChmaWxlbmFtZVswXSAhPSAn LycpCi0rICAgIHsKLSsgICAgICB3YXJuaW5nIChfKCJJZ25vcmluZyBub24tYWJzb2x1dGUgZmls ZW5hbWU6IDwlcz4iKSwgZmlsZW5hbWUpOwotKyAgICAgIHJldHVybiAwOwotKyAgICB9Ci0rCi0r ICBpZiAoIXJwbV9pbml0X2RvbmUpCi0rICAgIHsKLSsgICAgICBzdGF0aWMgaW50IGluaXRfdHJp ZWQ7Ci0rCi0rICAgICAgLyogQWxyZWFkeSBmYWlsZWQgdGhlIGluaXRpYWxpemF0aW9uIGJlZm9y ZT8gICovCi0rICAgICAgaWYgKGluaXRfdHJpZWQpCi0rICAgICAgICByZXR1cm4gMDsKLSsgICAg ICBpbml0X3RyaWVkID0gMTsKLSsKLSsjaWZkZWYgRExPUEVOX0xJQlJQTQotKyAgICAgIHsKLSsJ dm9pZCAqaDsKLSsKLSsJaCA9IGRsb3BlbiAoRExPUEVOX0xJQlJQTSwgUlRMRF9MQVpZKTsKLSsJ aWYgKCFoKQotKwkgIHsKLSsJICAgIHdhcm5pbmcgKF8oIlVuYWJsZSB0byBvcGVuIFwiJXNcIiAo JXMpLCAiCi0rCQkgICAgICAibWlzc2luZyBkZWJ1Z2luZm9zIG5vdGlmaWNhdGlvbnMgd2lsbCBu b3QgYmUgZGlzcGxheWVkIiksCi0rCQkgICAgIERMT1BFTl9MSUJSUE0sIGRsZXJyb3IgKCkpOwot KwkgICAgcmV0dXJuIDA7Ci0rCSAgfQotKwotKwlpZiAoISgoaGVhZGVyRm9ybWF0X3AgPSAoY2hh ciAqKCopIChIZWFkZXIgaCwgY29uc3QgY2hhciAqIGZtdCwgZXJybXNnX3QgKmVycm1zZykpIGRs c3ltIChoLCAiaGVhZGVyRm9ybWF0IikpCi0rCSAgICAgICYmIChycG1SZWFkQ29uZmlnRmlsZXNf cCA9IChpbnQgKCopIChjb25zdCBjaGFyICogZmlsZSwgY29uc3QgY2hhciAqIHRhcmdldCkpIGRs c3ltIChoLCAicnBtUmVhZENvbmZpZ0ZpbGVzIikpCi0rCSAgICAgICYmIChycG1kYkZyZWVJdGVy YXRvcl9wID0gKHJwbWRiTWF0Y2hJdGVyYXRvciAoKikgKHJwbWRiTWF0Y2hJdGVyYXRvciBtaSkp IGRsc3ltIChoLCAicnBtZGJGcmVlSXRlcmF0b3IiKSkKLSsJICAgICAgJiYgKHJwbWRiTmV4dEl0 ZXJhdG9yX3AgPSAoSGVhZGVyICgqKSAocnBtZGJNYXRjaEl0ZXJhdG9yIG1pKSkgZGxzeW0gKGgs ICJycG1kYk5leHRJdGVyYXRvciIpKQotKwkgICAgICAmJiAocnBtdHNDcmVhdGVfcCA9IChycG10 cyAoKikgKHZvaWQpKSBkbHN5bSAoaCwgInJwbXRzQ3JlYXRlIikpCi0rCSAgICAgICYmIChycG10 c0ZyZWVfcCA9IChycG10cyAoKikgKHJwbXRzIHRzKSkgZGxzeW0gKGgsICJycG10c0ZyZWUiKSkK LSsJICAgICAgJiYgKHJwbXRzSW5pdEl0ZXJhdG9yX3AgPSAocnBtZGJNYXRjaEl0ZXJhdG9yICgq KSAoY29uc3QgcnBtdHMgdHMsIHJwbVRhZyBycG10YWcsIGNvbnN0IHZvaWQgKmtleXAsIHNpemVf dCBrZXlsZW4pKSBkbHN5bSAoaCwgInJwbXRzSW5pdEl0ZXJhdG9yIikpKSkKLSsJICB7Ci0rCSAg ICB3YXJuaW5nIChfKCJPcGVuZWQgbGlicmFyeSBcIiVzXCIgaXMgaW5jb21wYXRpYmxlICglcyks ICIKLSsJCSAgICAgICJtaXNzaW5nIGRlYnVnaW5mb3Mgbm90aWZpY2F0aW9ucyB3aWxsIG5vdCBi ZSBkaXNwbGF5ZWQiKSwKLSsJCSAgICAgRExPUEVOX0xJQlJQTSwgZGxlcnJvciAoKSk7Ci0rCSAg ICBpZiAoZGxjbG9zZSAoaCkpCi0rCSAgICAgIHdhcm5pbmcgKF8oIkVycm9yIGNsb3NpbmcgbGli cmFyeSBcIiVzXCI6ICVzXG4iKSwgRExPUEVOX0xJQlJQTSwKLSsJCSAgICAgICBkbGVycm9yICgp KTsKLSsJICAgIHJldHVybiAwOwotKwkgIH0KLSsgICAgICB9Ci0rI2VuZGlmCS8qIERMT1BFTl9M SUJSUE0gKi8KLSsKLSsgICAgICBpZiAocnBtUmVhZENvbmZpZ0ZpbGVzX3AgKE5VTEwsIE5VTEwp ICE9IDApCi0rCXsKLSsJICB3YXJuaW5nIChfKCJFcnJvciByZWFkaW5nIHRoZSBycG0gY29uZmln dXJhdGlvbiBmaWxlcyIpKTsKLSsJICByZXR1cm4gMDsKLSsJfQotKwotKyAgICAgIHJwbV9pbml0 X2RvbmUgPSAxOwotKyAgICB9Ci0rCi0rICB0cyA9IHJwbXRzQ3JlYXRlX3AgKCk7Ci0rCi0rICBt aSA9IHJwbXRzSW5pdEl0ZXJhdG9yX3AgKHRzLCBSUE1UQUdfQkFTRU5BTUVTLCBmaWxlbmFtZSwg MCk7Ci0rICBpZiAobWkgIT0gTlVMTCkKLSsgICAgewotKyAgICAgIGZvciAoOzspCi0rCXsKLSsJ ICBIZWFkZXIgaDsKLSsJICBjaGFyICpkZWJ1Z2luZm8sICoqc2xvdCwgKnMsICpzMjsKLSsJICBl cnJtc2dfdCBlcnI7Ci0rCSAgc2l6ZV90IHNyY3JwbWxlbiA9IHNpemVvZiAoIi5zcmMucnBtIikg LSAxOwotKwkgIHNpemVfdCBkZWJ1Z2luZm9sZW4gPSBzaXplb2YgKCItZGVidWdpbmZvIikgLSAx OwotKwkgIHJwbWRiTWF0Y2hJdGVyYXRvciBtaV9kZWJ1Z2luZm87Ci0rCi0rCSAgaCA9IHJwbWRi TmV4dEl0ZXJhdG9yX3AgKG1pKTsKLSsJICBpZiAoaCA9PSBOVUxMKQotKwkgICAgYnJlYWs7Ci0r Ci0rCSAgLyogVmVyaWZ5IHRoZSBkZWJ1Z2luZm8gZmlsZSBpcyBub3QgYWxyZWFkeSBpbnN0YWxs ZWQuICAqLwotKwotKwkgIGRlYnVnaW5mbyA9IGhlYWRlckZvcm1hdF9wIChoLCAiJXtzb3VyY2Vy cG19LWRlYnVnaW5mby4le2FyY2h9IiwKLSsJCQkJICAgICAgJmVycik7Ci0rCSAgaWYgKCFkZWJ1 Z2luZm8pCi0rCSAgICB7Ci0rCSAgICAgIHdhcm5pbmcgKF8oIkVycm9yIHF1ZXJ5aW5nIHRoZSBy cG0gZmlsZSBgJXMnOiAlcyIpLCBmaWxlbmFtZSwKLSsJICAgICAgICAgICAgICAgZXJyKTsKLSsJ ICAgICAgY29udGludWU7Ci0rCSAgICB9Ci0rCSAgLyogcyA9IGAuc3JjLnJwbS1kZWJ1Z2luZm8u JXthcmNofScgKi8KLSsJICBzID0gc3RycmNociAoZGVidWdpbmZvLCAnLScpIC0gc3JjcnBtbGVu OwotKwkgIHMyID0gTlVMTDsKLSsJICBpZiAocyA+IGRlYnVnaW5mbyAmJiBtZW1jbXAgKHMsICIu c3JjLnJwbSIsIHNyY3JwbWxlbikgPT0gMCkKLSsJICAgIHsKLSsJICAgICAgLyogczIgPSBgLSV7 cmVsZWFzZX0uc3JjLnJwbS1kZWJ1Z2luZm8uJXthcmNofScgKi8KLSsJICAgICAgczIgPSAoY2hh ciAqKSBtZW1yY2hyIChkZWJ1Z2luZm8sICctJywgcyAtIGRlYnVnaW5mbyk7Ci0rCSAgICB9Ci0r CSAgaWYgKHMyKQotKwkgICAgewotKwkgICAgICAvKiBzMiA9IGAtJXt2ZXJzaW9ufS0le3JlbGVh c2V9LnNyYy5ycG0tZGVidWdpbmZvLiV7YXJjaH0nICovCi0rCSAgICAgIHMyID0gKGNoYXIgKikg bWVtcmNociAoZGVidWdpbmZvLCAnLScsIHMyIC0gZGVidWdpbmZvKTsKLSsJICAgIH0KLSsJICBp ZiAoIXMyKQotKwkgICAgewotKwkgICAgICB3YXJuaW5nIChfKCJFcnJvciBxdWVyeWluZyB0aGUg cnBtIGZpbGUgYCVzJzogJXMiKSwgZmlsZW5hbWUsCi0rCSAgICAgICAgICAgICAgIGRlYnVnaW5m byk7Ci0rCSAgICAgIHhmcmVlIChkZWJ1Z2luZm8pOwotKwkgICAgICBjb250aW51ZTsKLSsJICAg IH0KLSsJICAvKiBzID0gYC5zcmMucnBtLWRlYnVnaW5mby4le2FyY2h9JyAqLwotKwkgIC8qIHMy ID0gYC0le3ZlcnNpb259LSV7cmVsZWFzZX0uc3JjLnJwbS1kZWJ1Z2luZm8uJXthcmNofScgKi8K LSsJICBtZW1tb3ZlIChzMiArIGRlYnVnaW5mb2xlbiwgczIsIHMgLSBzMik7Ci0rCSAgbWVtY3B5 IChzMiwgIi1kZWJ1Z2luZm8iLCBkZWJ1Z2luZm9sZW4pOwotKwkgIC8qIHMgPSBgWFhYWC4le2Fy Y2h9JyAqLwotKwkgIC8qIHN0cmxlbiAoIlhYWFgiKSA9PSBzcmNycG1sZW4gKyBkZWJ1Z2luZm9s ZW4gKi8KLSsJICAvKiBzMiA9IGAtZGVidWdpbmZvLSV7dmVyc2lvbn0tJXtyZWxlYXNlfVhYLiV7 YXJjaH0nICovCi0rCSAgLyogc3RybGVuICgiWFgiKSA9PSBzcmNycG1sZW4gKi8KLSsJICBtZW1t b3ZlIChzICsgZGVidWdpbmZvbGVuLCBzICsgc3JjcnBtbGVuICsgZGVidWdpbmZvbGVuLAotKwkJ ICAgc3RybGVuIChzICsgc3JjcnBtbGVuICsgZGVidWdpbmZvbGVuKSArIDEpOwotKwkgIC8qIHMg PSBgLWRlYnVnaW5mby0le3ZlcnNpb259LSV7cmVsZWFzZX0uJXthcmNofScgKi8KLSsKLSsJICAv KiBSUE1EQklfUEFDS0FHRVMgcmVxdWlyZXMga2V5bGVuID09IHNpemVvZiAoaW50KS4gICovCi0r CSAgLyogUlBNREJJX0xBQkVMIGlzIGFuIGludGVyZmFjZSBmb3IgTlZSLWJhc2VkIGRiaUZpbmRC eUxhYmVsKCkuICAqLwotKwkgIG1pX2RlYnVnaW5mbyA9IHJwbXRzSW5pdEl0ZXJhdG9yX3AgKHRz LCAocnBtVGFnKSBSUE1EQklfTEFCRUwsIGRlYnVnaW5mbywgMCk7Ci0rCSAgeGZyZWUgKGRlYnVn aW5mbyk7Ci0rCSAgaWYgKG1pX2RlYnVnaW5mbykKLSsJICAgIHsKLSsJICAgICAgcnBtZGJGcmVl SXRlcmF0b3JfcCAobWlfZGVidWdpbmZvKTsKLSsJICAgICAgY291bnQgPSAwOwotKwkgICAgICBi cmVhazsKLSsJICAgIH0KLSsKLSsJICAvKiBUaGUgYWxsb2NhdGVkIG1lbW9yeSBnZXRzIHV0aWxp emVkIGJlbG93IGZvciBNSVNTSU5HX1JQTV9IQVNILiAgKi8KLSsJICBkZWJ1Z2luZm8gPSBoZWFk ZXJGb3JtYXRfcCAoaCwKLSsJCQkJICAgICAgIiV7bmFtZX0tJXt2ZXJzaW9ufS0le3JlbGVhc2V9 LiV7YXJjaH0iLAotKwkJCQkgICAgICAmZXJyKTsKLSsJICBpZiAoIWRlYnVnaW5mbykKLSsJICAg IHsKLSsJICAgICAgd2FybmluZyAoXygiRXJyb3IgcXVlcnlpbmcgdGhlIHJwbSBmaWxlIGAlcyc6 ICVzIiksIGZpbGVuYW1lLAotKwkgICAgICAgICAgICAgICBlcnIpOwotKwkgICAgICBjb250aW51 ZTsKLSsJICAgIH0KLSsKLSsJICAvKiBCYXNlIHBhY2thZ2UgbmFtZSBmb3IgYGRlYnVnaW5mby1p bnN0YWxsJy4gIFdlIGRvIG5vdCB1c2UgdGhlCi0rCSAgICAgYHl1bScgY29tbWFuZCBkaXJlY3Rs eSBhcyB0aGUgbGluZQotKwkJIHl1bSAtLWVuYWJsZXJlcG89JypkZWJ1ZyonIGluc3RhbGwgTkFN RS1kZWJ1Z2luZm8uQVJDSAotKwkgICAgIHdvdWxkIGJlIG1vcmUgY29tcGxpY2F0ZWQgdGhhbiBq dXN0OgotKwkJIGRlYnVnaW5mby1pbnN0YWxsIE5BTUUtVkVSU0lPTi1SRUxFQVNFLkFSQ0gKLSsJ ICAgICBEbyBub3Qgc3VwcGx5IHRoZSBycG0gYmFzZSBuYW1lIChkZXJpdmVkIGZyb20gLnNyYy5y cG0gbmFtZSkgYXMKLSsJICAgICBkZWJ1Z2luZm8taW5zdGFsbCBpcyB1bmFibGUgdG8gaW5zdGFs bCB0aGUgZGVidWdpbmZvIHBhY2thZ2UgaWYKLSsJICAgICB0aGUgYmFzZSBuYW1lIFBLRyBiaW5h cnkgcnBtIGlzIG5vdCBpbnN0YWxsZWQgd2hpbGUgZm9yIGV4YW1wbGUKLSsJICAgICBQS0ctbGli cyB3b3VsZCBiZSBpbnN0YWxsZWQgKFJIIEJ1ZyA0Njc5MDEpLgotKwkgICAgIEZVVFVSRTogQWZ0 ZXIgbXVsdGlwbGUgZGVidWdpbmZvIHZlcnNpb25zIHNpbXVsdGFuZW91c2x5IGluc3RhbGxlZAot KwkgICAgIGdldCBzdXBwb3J0ZWQgdGhlIHN1cHBvcnQgZm9yIHRoZSBWRVJTSU9OLVJFTEVBU0Ug dGFncyBoYW5kbGluZwotKwkgICAgIG1heSBuZWVkIGFuIHVwZGF0ZS4gICovCi0rCi0rCSAgaWYg KG1pc3NpbmdfcnBtX2hhc2ggPT0gTlVMTCkKLSsJICAgIHsKLSsJICAgICAgLyogREVMX0YgaXMg cGFzc2VkIE5VTEwgYXMgTUlTU0lOR19SUE1fTElTVCdzIEhUQUJfREVMRVRFCi0rCQkgc2hvdWxk IG5vdCBkZWFsbG9jYXRlIHRoZSBlbnRyaWVzLiAgKi8KLSsKLSsJICAgICAgbWlzc2luZ19ycG1f aGFzaCA9IGh0YWJfY3JlYXRlX2FsbG9jICg2NCwgaHRhYl9oYXNoX3N0cmluZywKLSsJCQkgICAg ICAgKGludCAoKikgKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSkgc3RyZXEsCi0rCQkJCQkJ ICAgIE5VTEwsIHhjYWxsb2MsIHhmcmVlKTsKLSsJICAgIH0KLSsJICBzbG90ID0gKGNoYXIgKiop IGh0YWJfZmluZF9zbG90IChtaXNzaW5nX3JwbV9oYXNoLCBkZWJ1Z2luZm8sIElOU0VSVCk7Ci0r CSAgLyogWENBTExPQyBuZXZlciByZXR1cm5zIE5VTEwuICAqLwotKwkgIGdkYl9hc3NlcnQgKHNs b3QgIT0gTlVMTCk7Ci0rCSAgaWYgKCpzbG90ID09IE5VTEwpCi0rCSAgICB7Ci0rCSAgICAgIHN0 cnVjdCBtaXNzaW5nX3JwbSAqbWlzc2luZ19ycG07Ci0rCi0rCSAgICAgICpzbG90ID0gZGVidWdp bmZvOwotKwotKwkgICAgICBtaXNzaW5nX3JwbSA9IChzdHJ1Y3QgbWlzc2luZ19ycG0gKikgeG1h bGxvYyAoc2l6ZW9mICgqbWlzc2luZ19ycG0pICsgc3RybGVuIChkZWJ1Z2luZm8pKTsKLSsJICAg ICAgc3RyY3B5IChtaXNzaW5nX3JwbS0+cnBtLCBkZWJ1Z2luZm8pOwotKwkgICAgICBtaXNzaW5n X3JwbS0+bmV4dCA9IG1pc3NpbmdfcnBtX2xpc3Q7Ci0rCSAgICAgIG1pc3NpbmdfcnBtX2xpc3Qg PSBtaXNzaW5nX3JwbTsKLSsJICAgICAgbWlzc2luZ19ycG1fbGlzdF9lbnRyaWVzKys7Ci0rCSAg ICB9Ci0rCSAgZWxzZQotKwkgICAgeGZyZWUgKGRlYnVnaW5mbyk7Ci0rCSAgY291bnQrKzsKLSsJ fQotKwotKyAgICAgIHJwbWRiRnJlZUl0ZXJhdG9yX3AgKG1pKTsKLSsgICAgfQotKwotKyAgcnBt dHNGcmVlX3AgKHRzKTsKLSsKLSsgIHJldHVybiBjb3VudDsKLSt9Ci0rCi0rc3RhdGljIGJvb2wK LSttaXNzaW5nX3JwbV9saXN0X2NvbXBhciAoY29uc3QgY2hhciAqYXAsIGNvbnN0IGNoYXIgKmJw KQotK3sKLSsgIHJldHVybiBzdHJjb2xsIChhcCwgYnApIDwgMDsKLSt9Ci0rCi0rLyogSXQgcmV0 dXJucyBhIE5VTEwtdGVybWluYXRlZCBhcnJheSBvZiBzdHJpbmdzIG5lZWRpbmcgdG8gYmUgRlJF RWQuICBJdCBtYXkKLSsgICBhbHNvIHJldHVybiBvbmx5IE5VTEwuICAqLwotKwotK3N0YXRpYyB2 b2lkCi0rbWlzc2luZ19ycG1fbGlzdF9wcmludCAodm9pZCkKLSt7Ci0rICBzdHJ1Y3QgbWlzc2lu Z19ycG0gKmxpc3RfaXRlcjsKLSsKLSsgIGlmIChtaXNzaW5nX3JwbV9saXN0X2VudHJpZXMgPT0g MCkKLSsgICAgcmV0dXJuOwotKwotKyAgc3RkOjp2ZWN0b3I8Y29uc3QgY2hhciAqPiBhcnJheSAo bWlzc2luZ19ycG1fbGlzdF9lbnRyaWVzKTsKLSsgIHNpemVfdCBpZHggPSAwOwotKwotKyAgZm9y IChsaXN0X2l0ZXIgPSBtaXNzaW5nX3JwbV9saXN0OyBsaXN0X2l0ZXIgIT0gTlVMTDsKLSsgICAg ICAgbGlzdF9pdGVyID0gbGlzdF9pdGVyLT5uZXh0KQotKyAgICB7Ci0rICAgICAgYXJyYXlbaWR4 KytdID0gbGlzdF9pdGVyLT5ycG07Ci0rICAgIH0KLSsgIGdkYl9hc3NlcnQgKGlkeCA9PSBtaXNz aW5nX3JwbV9saXN0X2VudHJpZXMpOwotKwotKyAgc3RkOjpzb3J0IChhcnJheS5iZWdpbiAoKSwg YXJyYXkuZW5kICgpLCBtaXNzaW5nX3JwbV9saXN0X2NvbXBhcik7Ci0rCi0rICAvKiBXZSB6ZXJv IG91dCB0aGUgbnVtYmVyIG9mIG1pc3NpbmcgUlBNcyBoZXJlIGJlY2F1c2Ugb2YgYSBuYXN0eQot KyAgICAgYnVnIChzZWUgUkhCWiAxODAxOTc0KS4KLSsKLSsgICAgIFdoZW4gd2UgY2FsbCAncHV0 c191bmZpbHRlcmVkJyBiZWxvdywgaWYgcGFnaW5hdGlvbiBpcyBvbiBhbmQgaWYKLSsgICAgIHRo ZSBudW1iZXIgb2YgbWlzc2luZyBSUE1zIGlzIGJpZyBlbm91Z2ggdG8gdHJpZ2dlciBwYWdpbmF0 aW9uLAotKyAgICAgd2Ugd2lsbCBlbmQgdXAgaW4gYW4gaW5maW5pdGUgcmVjdXJzaW9uLiAgVGhl IGNhbGwgY2hhaW4gbG9va3MKLSsgICAgIGxpa2UgdGhpczoKLSsKLSsgICAgIG1pc3NpbmdfcnBt X2xpc3RfcHJpbnQgLT4gcHV0c191bmZpbHRlcmVkIC0+IGZwdXRzX21heWJlX2ZpbHRlcmVkCi0r ICAgICAtPiBwcm9tcHRfZm9yX2NvbnRpbnVlIC0+IGRpc3BsYXlfZ2RiX3Byb21wdCAtPgotKyAg ICAgZGVidWdfZmx1c2hfbWlzc2luZyAtPiBtaXNzaW5nX3JwbV9saXN0X3ByaW50IC4uLgotKwot KyAgICAgRm9yIHRoaXMgcmVhc29uLCB3ZSBtYWtlIHN1cmUgTUlTU0lOR19SUE1fTElTVF9FTlRS SUVTIGlzIHplcm8KLSsgICAgICpiZWZvcmUqIGNhbGxpbmcgYW55IHByaW50IGZ1bmN0aW9uLiAg Ki8KLSsgIG1pc3NpbmdfcnBtX2xpc3RfZW50cmllcyA9IDA7Ci0rCi0rICBwcmludGZfdW5maWx0 ZXJlZCAoXygiTWlzc2luZyBzZXBhcmF0ZSBkZWJ1Z2luZm9zLCB1c2U6ICVzIiksCi0rI2lmZGVm IERORl9ERUJVR0lORk9fSU5TVEFMTAotKwkJICAgICAiZG5mICIKLSsjZW5kaWYKLSsJCSAgICAg ImRlYnVnaW5mby1pbnN0YWxsIik7Ci0rICBmb3IgKGNvbnN0IGNoYXIgKmVsIDogYXJyYXkpCi0r ICAgIHsKLSsgICAgICBwdXRzX3VuZmlsdGVyZWQgKCIgIik7Ci0rICAgICAgcHV0c191bmZpbHRl cmVkIChlbCk7Ci0rICAgIH0KLSsgIHB1dHNfdW5maWx0ZXJlZCAoIlxuIik7Ci0rCi0rICB3aGls ZSAobWlzc2luZ19ycG1fbGlzdCAhPSBOVUxMKQotKyAgICB7Ci0rICAgICAgbGlzdF9pdGVyID0g bWlzc2luZ19ycG1fbGlzdDsKLSsgICAgICBtaXNzaW5nX3JwbV9saXN0ID0gbGlzdF9pdGVyLT5u ZXh0OwotKyAgICAgIHhmcmVlIChsaXN0X2l0ZXIpOwotKyAgICB9Ci0rfQotKwotK3N0YXRpYyB2 b2lkCi0rbWlzc2luZ19ycG1fY2hhbmdlICh2b2lkKQotK3sKLSsgIGRlYnVnX2ZsdXNoX21pc3Np bmcgKCk7Ci0rCi0rICBnZGJfYXNzZXJ0IChtaXNzaW5nX3JwbV9saXN0ID09IE5VTEwpOwotKyAg aWYgKG1pc3NpbmdfcnBtX2hhc2ggIT0gTlVMTCkKLSsgICAgewotKyAgICAgIGh0YWJfZGVsZXRl IChtaXNzaW5nX3JwbV9oYXNoKTsKLSsgICAgICBtaXNzaW5nX3JwbV9oYXNoID0gTlVMTDsKLSsg ICAgfQotK30KLSsKLStlbnVtIG1pc3NpbmdfZXhlYwotKyAgewotKyAgICAvKiBJbml0IHN0YXRl LiAgRVhFQ19CRkQgYWxzbyBzdGlsbCBjb3VsZCBiZSBOVUxMLiAgKi8KLSsgICAgTUlTU0lOR19F WEVDX05PVF9UUklFRCwKLSsgICAgLyogV2Ugc2F3IGEgbm9uLU5VTEwgRVhFQ19CRkQgYnV0IFJQ TSBoYXMgbm8gaW5mbyBhYm91dCBpdC4gICovCi0rICAgIE1JU1NJTkdfRVhFQ19OT1RfRk9VTkQs Ci0rICAgIC8qIFdlIGZvdW5kIEVYRUNfQkZEIGJ5IFJQTSBhbmQgd2UgZWl0aGVyIGhhdmUgaXRz IHN5bWJvbHMgKGVpdGhlciBlbWJlZGRlZAotKyAgICAgICBvciBzZXBhcmF0ZSkgb3IgdGhlIG1h aW4gZXhlY3V0YWJsZSdzIFJQTSBpcyBub3cgY29udGFpbmVkIGluCi0rICAgICAgIE1JU1NJTkdf UlBNX0hBU0guICAqLwotKyAgICBNSVNTSU5HX0VYRUNfRU5MSVNURUQKLSsgIH07Ci0rc3RhdGlj IGVudW0gbWlzc2luZ19leGVjIG1pc3NpbmdfZXhlYyA9IE1JU1NJTkdfRVhFQ19OT1RfVFJJRUQ7 Ci0rCi0rI2VuZGlmCS8qIEhBVkVfTElCUlBNICovCi0rCi0rdm9pZAotK2RlYnVnX2ZsdXNoX21p c3NpbmcgKHZvaWQpCi0rewotKyNpZmRlZiBIQVZFX0xJQlJQTQotKyAgbWlzc2luZ19ycG1fbGlz dF9wcmludCAoKTsKLSsjZW5kaWYKLSt9Ci0rCi0gLyogVGhpcyBNSVNTSU5HX0ZJTEVQQUlSX0hB U0ggdHJhY2tlciBpcyB1c2VkIG9ubHkgZm9yIHRoZSBkdXBsaWNpdGUgbWVzc2FnZXMKLS0gICAg IFRyeSB0byBpbnN0YWxsIHRoZSBoYXNoIGZpbGUgLi4uCi0rICAgICB5dW0gLS1lbmFibGVyZXBv PScqZGVidWcqJyBpbnN0YWxsIC4uLgotICAgIGF2b2lkYW5jZS4gICovCi0gCi0gc3RydWN0IG1p c3NpbmdfZmlsZXBhaXIKLUBAIC03NTIsMTEgKzExMTksMTcgQEAgbWlzc2luZ19maWxlcGFpcl9j aGFuZ2UgKHZvaWQpCi0gICAgICAgLyogQWxsIHRoZWlyIG1lbW9yeSBjYW1lIGp1c3QgZnJvbSBt aXNzaW5nX2ZpbGVwYWlyX09CU1RBQ0suICAqLwotICAgICAgIG1pc3NpbmdfZmlsZXBhaXJfaGFz aCA9IE5VTEw7Ci0gICAgIH0KLSsjaWZkZWYgSEFWRV9MSUJSUE0KLSsgIG1pc3NpbmdfZXhlYyA9 IE1JU1NJTkdfRVhFQ19OT1RfVFJJRUQ7Ci0rI2VuZGlmCi0gfQotIAotIHN0YXRpYyB2b2lkCi0g ZGVidWdfcHJpbnRfZXhlY3V0YWJsZV9jaGFuZ2VkICh2b2lkKQotIHsKLSsjaWZkZWYgSEFWRV9M SUJSUE0KLSsgIG1pc3NpbmdfcnBtX2NoYW5nZSAoKTsKLSsjZW5kaWYKLSAgIG1pc3NpbmdfZmls ZXBhaXJfY2hhbmdlICgpOwotIH0KLSAKLUBAIC04MjMsMTQgKzExOTYsMzggQEAgZGVidWdfcHJp bnRfbWlzc2luZyAoY29uc3QgY2hhciAqYmluYXJ5LCBjb25zdCBjaGFyICpkZWJ1ZykKLSAKLSAg ICpzbG90ID0gbWlzc2luZ19maWxlcGFpcjsKLSAKLS0gIC8qIFdlIGRvIG5vdCBjb2xsZWN0IGFu ZCBmbHVzaCB0aGVzZSBtZXNzYWdlcyBhcyBlYWNoIHN1Y2ggbWVzc2FnZQotLSAgICAgYWxyZWFk eSByZXF1aXJlcyBpdHMgb3duIHNlcGFyYXRlIGxpbmVzLiAgKi8KLSsjaWZkZWYgSEFWRV9MSUJS UE0KLSsgIGlmIChtaXNzaW5nX2V4ZWMgPT0gTUlTU0lOR19FWEVDX05PVF9UUklFRCkKLSsgICAg ewotKyAgICAgIGNvbnN0IGNoYXIgKmV4ZWNmaWxlbmFtZSA9IGdldF9leGVjX2ZpbGUgKDApOwot IAotLSAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotLQkJICAgICAgXygiTWlzc2lu ZyBzZXBhcmF0ZSBkZWJ1Z2luZm8gZm9yICVzXG4iKSwgYmluYXJ5KTsKLS0gIGlmIChkZWJ1ZyAh PSBOVUxMKQotLSAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csIF8oIlRyeSB0byBp bnN0YWxsIHRoZSBoYXNoIGZpbGUgJXNcbiIpLAotLQkJCWRlYnVnKTsKLSsgICAgICBpZiAoZXhl Y2ZpbGVuYW1lICE9IE5VTEwpCi0rCXsKLSsJICBpZiAobWlzc2luZ19ycG1fZW5saXN0IChleGVj ZmlsZW5hbWUpID09IDApCi0rCSAgICBtaXNzaW5nX2V4ZWMgPSBNSVNTSU5HX0VYRUNfTk9UX0ZP VU5EOwotKwkgIGVsc2UKLSsJICAgIG1pc3NpbmdfZXhlYyA9IE1JU1NJTkdfRVhFQ19FTkxJU1RF RDsKLSsJfQotKyAgICB9Ci0rICBpZiAobWlzc2luZ19leGVjICE9IE1JU1NJTkdfRVhFQ19FTkxJ U1RFRCkKLSsgICAgaWYgKChiaW5hcnlbMF0gPT0gMCB8fCBtaXNzaW5nX3JwbV9lbmxpc3QgKGJp bmFyeSkgPT0gMCkKLSsJJiYgKGRlYnVnID09IE5VTEwgfHwgbWlzc2luZ19ycG1fZW5saXN0IChk ZWJ1ZykgPT0gMCkpCi0rI2VuZGlmCS8qIEhBVkVfTElCUlBNICovCi0rICAgICAgewotKwkvKiBX ZSBkbyBub3QgY29sbGVjdCBhbmQgZmx1c2ggdGhlc2UgbWVzc2FnZXMgYXMgZWFjaCBzdWNoIG1l c3NhZ2UKLSsJICAgYWxyZWFkeSByZXF1aXJlcyBpdHMgb3duIHNlcGFyYXRlIGxpbmVzLiAgKi8K LSsKLSsJZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotKwkJCSAgICBfKCJNaXNzaW5n IHNlcGFyYXRlIGRlYnVnaW5mbyBmb3IgJXNcbiIpLCBiaW5hcnkpOwotKyAgICAgICAgaWYgKGRl YnVnICE9IE5VTEwpCi0rCSAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCBfKCJUcnk6 ICVzICVzXG4iKSwKLSsjaWZkZWYgRE5GX0RFQlVHSU5GT19JTlNUQUxMCi0rCQkJICAgICAgImRu ZiIKLSsjZWxzZQotKwkJCSAgICAgICJ5dW0iCi0rI2VuZGlmCi0rCQkJICAgICAgIiAtLWVuYWJs ZXJlcG89JypkZWJ1ZyonIGluc3RhbGwiLCBkZWJ1Zyk7Ci0rICAgICAgfQotIH0KLSAKLSAvKiBT ZWUgYnVpbGQtaWQuaC4gICovCiBkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZy5pbiBiL2dkYi9jb25m aWcuaW4KIC0tLSBhL2dkYi9jb25maWcuaW4KICsrKyBiL2dkYi9jb25maWcuaW4KQEAgLTY5Niw3 ICsyNDUsNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZy5pbiBiL2dkYi9jb25maWcuaW4KICAv KiBEZWZpbmUgdG8gMSBpZiB0cmFuc2xhdGlvbiBvZiBwcm9ncmFtIG1lc3NhZ2VzIHRvIHRoZSB1 c2VyJ3MgbmF0aXZlCiAgICAgbGFuZ3VhZ2UgaXMgcmVxdWVzdGVkLiAqLwogICN1bmRlZiBFTkFC TEVfTkxTCi1AQCAtMjUwLDYgKzI1Myw5IEBACitAQCAtMjU5LDYgKzI2Miw5IEBACiAgLyogRGVm aW5lIGlmIHlvdSBoYXZlIHRoZSBtcGZyIGxpYnJhcnkuICovCiAgI3VuZGVmIEhBVkVfTElCTVBG UgogIApAQCAtNzA5LDkgKzI1OCw5IEBAIGRpZmYgLS1naXQgYS9nZGIvY29uZmlnLmluIGIvZ2Ri L2NvbmZpZy5pbgogZGlmZiAtLWdpdCBhL2dkYi9jb25maWd1cmUgYi9nZGIvY29uZmlndXJlCiAt LS0gYS9nZGIvY29uZmlndXJlCiArKysgYi9nZGIvY29uZmlndXJlCi1AQCAtNzcxLDYgKzc3MSwx MSBAQCBQS0dfQ09ORklHCi0gSEFWRV9OQVRJVkVfR0NPUkVfVEFSR0VUCi0gVEFSR0VUX09CUwor QEAgLTc3NSw2ICs3NzUsMTEgQEAgVEFSR0VUX09CUworIEVOQUJMRV9CRkRfNjRfQklUX0ZBTFNF CisgRU5BQkxFX0JGRF82NF9CSVRfVFJVRQogIHN1YmRpcnMKICtSUE1fTElCUwogK1JQTV9DRkxB R1MKQEAgLTcyMSw3ICsyNzAsNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZSBiL2dkYi9j b25maWd1cmUKICBHREJfREFUQURJUgogIERFQlVHRElSCiAgTUFLRUlORk9fRVhUUkFfRkxBR1MK LUBAIC04NzYsNiArODgxLDcgQEAgd2l0aF9nZGJfZGF0YWRpcgorQEAgLTg4MCw2ICs4ODUsNyBA QCB3aXRoX2dkYl9kYXRhZGlyCiAgd2l0aF9yZWxvY2F0ZWRfc291cmNlcwogIHdpdGhfYXV0b19s b2FkX2RpcgogIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aApAQCAtNzI5LDcgKzI3OCw3IEBAIGRp ZmYgLS1naXQgYS9nZGIvY29uZmlndXJlIGIvZ2RiL2NvbmZpZ3VyZQogIGVuYWJsZV90YXJnZXRz CiAgZW5hYmxlXzY0X2JpdF9iZmQKICBlbmFibGVfZ2RibWkKLUBAIC05NTMsNiArOTU5LDggQEAg UEtHX0NPTkZJR19QQVRICitAQCAtOTU5LDYgKzk2NSw4IEBAIFBLR19DT05GSUdfUEFUSAogIFBL R19DT05GSUdfTElCRElSCiAgREVCVUdJTkZPRF9DRkxBR1MKICBERUJVR0lORk9EX0xJQlMKQEAg LTczOCw3ICsyODcsNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZSBiL2dkYi9jb25maWd1 cmUKICBZQUNDCiAgWUZMQUdTCiAgWE1LTUYnCi1AQCAtMTYyNSw2ICsxNjMzLDggQEAgT3B0aW9u YWwgUGFja2FnZXM6CitAQCAtMTYzNSw2ICsxNjQzLDggQEAgT3B0aW9uYWwgUGFja2FnZXM6CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBub3QgcmVzdHJpY3QgYXV0by1sb2FkZWQgZmls ZXMgbG9jYXRpb25zCiAgICAtLXdpdGgtZGVidWdpbmZvZCAgICAgICBFbmFibGUgZGVidWdpbmZv IGxvb2t1cHMgd2l0aCBkZWJ1Z2luZm9kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXV0 by95ZXMvbm8pCkBAIC03NDcsNyArMjk2LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9jb25maWd1cmUg Yi9nZGIvY29uZmlndXJlCiAgICAtLXdpdGgtbGlidW53aW5kLWlhNjQgICB1c2UgbGlidW53aW5k IGZyYW1lIHVud2luZGluZyBmb3IgaWE2NCB0YXJnZXRzCiAgICAtLXdpdGgtY3Vyc2VzICAgICAg ICAgICB1c2UgdGhlIGN1cnNlcyBsaWJyYXJ5IGluc3RlYWQgb2YgdGhlIHRlcm1jYXAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnkKLUBAIC0xNzA1LDYgKzE3MTUsOCBAQCBTb21l IGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKK0BAIC0xNzE1LDYgKzE3MjUsOCBA QCBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKICAgICAgICAgICAgICAg IEMgY29tcGlsZXIgZmxhZ3MgZm9yIERFQlVHSU5GT0QsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwog ICAgREVCVUdJTkZPRF9MSUJTCiAgICAgICAgICAgICAgICBsaW5rZXIgZmxhZ3MgZm9yIERFQlVH SU5GT0QsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwpAQCAtNzU2LDcgKzMwNSw3IEBAIGRpZmYgLS1n aXQgYS9nZGIvY29uZmlndXJlIGIvZ2RiL2NvbmZpZ3VyZQogICAgWUFDQyAgICAgICAgVGhlIGBZ ZXQgQW5vdGhlciBDb21waWxlciBDb21waWxlcicgaW1wbGVtZW50YXRpb24gdG8gdXNlLgogICAg ICAgICAgICAgICAgRGVmYXVsdHMgdG8gdGhlIGZpcnN0IHByb2dyYW0gZm91bmQgb3V0IG9mOiBg Ymlzb24gLXknLCBgYnlhY2MnLAogICAgICAgICAgICAgICAgYHlhY2MnLgotQEAgLTY2MjQsNiAr NjYzNiw0OTQgQEAgX0FDRU9GCitAQCAtNjYzNCw2ICs2NjQ2LDQ5NCBAQCBfQUNFT0YKICB7ICRh c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHdpdGhfYXV0b19s b2FkX3NhZmVfcGF0aCIgPiY1CiAgJGFzX2VjaG8gIiR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgi ID4mNjsgfQogIApAQCAtMTQ1NywxNSArMTAwNiwxNSBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZp Z3VyZS5hYyBiL2dkYi9jb25maWd1cmUuYWMKIGRpZmYgLS1naXQgYS9nZGIvZXZlbnQtdG9wLmMg Yi9nZGIvZXZlbnQtdG9wLmMKIC0tLSBhL2dkYi9ldmVudC10b3AuYwogKysrIGIvZ2RiL2V2ZW50 LXRvcC5jCi1AQCAtNDEsNiArNDEsNyBAQAotICNpbmNsdWRlICJnZGJzdXBwb3J0L2dkYl9zZWxl Y3QuaCIKK0BAIC00Miw2ICs0Miw3IEBACiAgI2luY2x1ZGUgImdkYnN1cHBvcnQvZ2RiLXNpZ21h c2suaCIKICAjaW5jbHVkZSAiYXN5bmMtZXZlbnQuaCIKKyAjaW5jbHVkZSAiYnQtdXRpbHMuaCIK ICsjaW5jbHVkZSAic3ltZmlsZS5oIgogIAogIC8qIHJlYWRsaW5lIGluY2x1ZGUgZmlsZXMuICAq LwogICNpbmNsdWRlICJyZWFkbGluZS9yZWFkbGluZS5oIgotQEAgLTM2Myw2ICszNjQsOCBAQCBk aXNwbGF5X2dkYl9wcm9tcHQgKGNvbnN0IGNoYXIgKm5ld19wcm9tcHQpCitAQCAtMzc0LDYgKzM3 NSw4IEBAIGRpc3BsYXlfZ2RiX3Byb21wdCAoY29uc3QgY2hhciAqbmV3X3Byb21wdCkKICAgIC8q IFJlc2V0IHRoZSBuZXN0aW5nIGRlcHRoIHVzZWQgd2hlbiB0cmFjZS1jb21tYW5kcyBpcyBzZXQu ICAqLwogICAgcmVzZXRfY29tbWFuZF9uZXN0X2RlcHRoICgpOwogIApAQCAtMTQ3NCw3ICsxMDIz LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9ldmVudC10b3AuYyBiL2dkYi9ldmVudC10b3AuYwogICAg LyogRG8gbm90IGNhbGwgdGhlIHB5dGhvbiBob29rIG9uIGFuIGV4cGxpY2l0IHByb21wdCBjaGFu Z2UgYXMKICAgICAgIHBhc3NlZCB0byB0aGlzIGZ1bmN0aW9uLCBhcyB0aGlzIGZvcm1zIGEgc2Vj b25kYXJ5L2xvY2FsIHByb21wdCwKICAgICAgIElFLCBkaXNwbGF5ZWQgYnV0IG5vdCBzZXQuICAq LwotQEAgLTc3Myw3ICs3NzYsMTAgQEAgY29tbWFuZF9saW5lX2hhbmRsZXIgKGdkYjo6dW5pcXVl X3htYWxsb2NfcHRyPGNoYXI+ICYmcmwpCitAQCAtODAwLDcgKzgwMywxMCBAQCBjb21tYW5kX2xp bmVfaGFuZGxlciAoZ2RiOjp1bmlxdWVfeG1hbGxvY19wdHI8Y2hhcj4gJiZybCkKICAgICAgICBj b21tYW5kX2hhbmRsZXIgKGNtZCk7CiAgCiAgICAgICAgaWYgKHVpLT5wcm9tcHRfc3RhdGUgIT0g UFJPTVBURUQpCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1zb2xpYi1taXNz aW5nLWlkcy5wYXRjaCBiL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtc29saWItbWlzc2luZy1pZHMu cGF0Y2gKaW5kZXggN2RkNGZiMS4uZGY0NTMxOSAxMDA2NDQKLS0tIGEvZ2RiLTYuNi1idWlsZGlk LWxvY2F0ZS1zb2xpYi1taXNzaW5nLWlkcy5wYXRjaAorKysgYi9nZGItNi42LWJ1aWxkaWQtbG9j YXRlLXNvbGliLW1pc3NpbmctaWRzLnBhdGNoCkBAIC0xNCw3ICsxNCw3IEBAIGh0dHBzOi8vYnVn emlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9MTMzOTg2MgogZGlmZiAtLWdpdCBhL2dk Yi9zb2xpYi1zdnI0LmMgYi9nZGIvc29saWItc3ZyNC5jCiAtLS0gYS9nZGIvc29saWItc3ZyNC5j CiArKysgYi9nZGIvc29saWItc3ZyNC5jCi1AQCAtMTM1MCwxNCArMTM1MCwyOCBAQCBzdnI0X3Jl YWRfc29fbGlzdCAoc3ZyNF9pbmZvICppbmZvLCBDT1JFX0FERFIgbG0sIENPUkVfQUREUiBwcmV2 X2xtLAorQEAgLTEyNTAsMTQgKzEyNTAsMjggQEAgc3ZyNF9yZWFkX3NvX2xpc3QgKHN2cjRfaW5m byAqaW5mbywgQ09SRV9BRERSIGxtLCBDT1JFX0FERFIgcHJldl9sbSwKICAJfQogIAogICAgICAg IHsKQEAgLTQ1LDcgKzQ1LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9zb2xpYi1zdnI0LmMgYi9nZGIv c29saWItc3ZyNC5jCiAgCWlmIChidWlsZF9pZCAhPSBOVUxMKQogIAkgIHsKICAJICAgIGNoYXIg Km5hbWUsICpidWlsZF9pZF9maWxlbmFtZTsKLUBAIC0xMzcyLDIzICsxMzg2LDcgQEAgc3ZyNF9y ZWFkX3NvX2xpc3QgKHN2cjRfaW5mbyAqaW5mbywgQ09SRV9BRERSIGxtLCBDT1JFX0FERFIgcHJl dl9sbSwKK0BAIC0xMjcyLDIzICsxMjg2LDcgQEAgc3ZyNF9yZWFkX3NvX2xpc3QgKHN2cjRfaW5m byAqaW5mbywgQ09SRV9BRERSIGxtLCBDT1JFX0FERFIgcHJldl9sbSwKICAJCXhmcmVlIChuYW1l KTsKICAJICAgICAgfQogIAkgICAgZWxzZQoKZGlmZiAtLWdpdCBhL2dkYi02LjYtYnVpbGRpZC1s b2NhdGUucGF0Y2ggYi9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLnBhdGNoCmluZGV4IGU5ZWUzNDIu LjYyMjkyNDQgMTAwNjQ0Ci0tLSBhL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUucGF0Y2gKKysrIGIv Z2RiLTYuNi1idWlsZGlkLWxvY2F0ZS5wYXRjaApAQCAtMzMsNyArMzMsNyBAQCBkaWZmIC0tZ2l0 IGEvYmZkL2xpYmJmZC5oIGIvYmZkL2xpYmJmZC5oCiBkaWZmIC0tZ2l0IGEvZ2RiL2J1aWxkLWlk LmMgYi9nZGIvYnVpbGQtaWQuYwogLS0tIGEvZ2RiL2J1aWxkLWlkLmMKICsrKyBiL2dkYi9idWls ZC1pZC5jCi1AQCAtMjQsMTMgKzI0LDcwIEBACitAQCAtMjQsMTMgKzI0LDcxIEBACiAgI2luY2x1 ZGUgImdkYnN1cHBvcnQvZ2RiX3ZlY3MuaCIKICAjaW5jbHVkZSAic3ltZmlsZS5oIgogICNpbmNs dWRlICJvYmpmaWxlcy5oIgpAQCAtNDYsNiArNDYsNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2J1aWxk LWlkLmMgYi9nZGIvYnVpbGQtaWQuYwogKyNpbmNsdWRlICJnZGJfYmZkLmgiCiArI2luY2x1ZGUg ImdkYmNtZC5oIgogICNpbmNsdWRlICJnZGJjb3JlLmgiCisrI2luY2x1ZGUgImluZmVyaW9yLmgi CiArI2luY2x1ZGUgIm9iamZpbGVzLmgiCiArI2luY2x1ZGUgIm9ic2VydmFibGUuaCIKICsjaW5j bHVkZSAic3ltZmlsZS5oIgpAQCAtMTA1LDcgKzEwNiw3IEBAIGRpZmYgLS1naXQgYS9nZGIvYnVp bGQtaWQuYyBiL2dkYi9idWlsZC1pZC5jCiAgewogICAgaWYgKCFiZmRfY2hlY2tfZm9ybWF0IChh YmZkLCBiZmRfb2JqZWN0KQogICAgICAgICYmICFiZmRfY2hlY2tfZm9ybWF0IChhYmZkLCBiZmRf Y29yZSkpCi1AQCAtNDMsNiArMTAwLDM0OCBAQCBidWlsZF9pZF9iZmRfZ2V0IChiZmQgKmFiZmQp CitAQCAtNDMsNiArMTAxLDM0OCBAQCBidWlsZF9pZF9iZmRfZ2V0IChiZmQgKmFiZmQpCiAgICBy ZXR1cm4gTlVMTDsKICB9CiAgCkBAIC00NTQsNyArNDU1LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9i dWlsZC1pZC5jIGIvZ2RiL2J1aWxkLWlkLmMKICAvKiBTZWUgYnVpbGQtaWQuaC4gICovCiAgCiAg aW50Ci1AQCAtNTEsNyArNDUwLDcgQEAgYnVpbGRfaWRfdmVyaWZ5IChiZmQgKmFiZmQsIHNpemVf dCBjaGVja19sZW4sIGNvbnN0IGJmZF9ieXRlICpjaGVjaykKK0BAIC01MSw3ICs0NTEsNyBAQCBi dWlsZF9pZF92ZXJpZnkgKGJmZCAqYWJmZCwgc2l6ZV90IGNoZWNrX2xlbiwgY29uc3QgYmZkX2J5 dGUgKmNoZWNrKQogICAgY29uc3Qgc3RydWN0IGJmZF9idWlsZF9pZCAqZm91bmQ7CiAgICBpbnQg cmV0dmFsID0gMDsKICAKQEAgLTQ2MywxNCArNDY0LDE1IEBAIGRpZmYgLS1naXQgYS9nZGIvYnVp bGQtaWQuYyBiL2dkYi9idWlsZC1pZC5jCiAgCiAgICBpZiAoZm91bmQgPT0gTlVMTCkKICAgICAg d2FybmluZyAoXygiRmlsZSBcIiVzXCIgaGFzIG5vIGJ1aWxkLWlkLCBmaWxlIHNraXBwZWQiKSwK LUBAIC02Niw1NiArNDY1LDE1OSBAQCBidWlsZF9pZF92ZXJpZnkgKGJmZCAqYWJmZCwgc2l6ZV90 IGNoZWNrX2xlbiwgY29uc3QgYmZkX2J5dGUgKmNoZWNrKQorQEAgLTY2LDYzICs0NjYsMTY2IEBA IGJ1aWxkX2lkX3ZlcmlmeSAoYmZkICphYmZkLCBzaXplX3QgY2hlY2tfbGVuLCBjb25zdCBiZmRf Ynl0ZSAqY2hlY2spCiAgICByZXR1cm4gcmV0dmFsOwogIH0KICAKICtzdGF0aWMgY2hhciAqCiAr bGlua19yZXNvbHZlIChjb25zdCBjaGFyICpzeW1saW5rLCBpbnQgbGV2ZWwpCiArewotKyAgY2hh ciBidWZbUEFUSF9NQVggKyAxXSwgKnRhcmdldCwgKnJldHZhbDsKKysgIGNoYXIgYnVmW1BBVEhf TUFYICsgMV0sICpyZXR2YWw7CisrICBnZGI6OnVuaXF1ZV94bWFsbG9jX3B0cjxjaGFyPiB0YXJn ZXQ7CiArICBzc2l6ZV90IGdvdDsKICsKICsgIGlmIChsZXZlbCA+IDEwKQpAQCAtNDgyLDcgKzQ4 NCw3IEBAIGRpZmYgLS1naXQgYS9nZGIvYnVpbGQtaWQuYyBiL2dkYi9idWlsZC1pZC5jCiArICBi dWZbZ290XSA9ICdcMCc7CiArCiArICBpZiAoSVNfQUJTT0xVVEVfUEFUSCAoYnVmKSkKLSsgICAg dGFyZ2V0ID0geHN0cmR1cCAoYnVmKTsKKysgICAgdGFyZ2V0ID0gbWFrZV91bmlxdWVfeHN0cmR1 cCAoYnVmKTsKICsgIGVsc2UKICsgICAgewogKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGRpciAo bGRpcm5hbWUgKHN5bWxpbmspKTsKQEAgLTQ5Niw4ICs0OTgsNyBAQCBkaWZmIC0tZ2l0IGEvZ2Ri L2J1aWxkLWlkLmMgYi9nZGIvYnVpbGQtaWQuYwogKwkJCSAgICIlcyIsIGRpci5jX3N0cigpLCBi dWYpOwogKyAgICB9CiArCi0rICByZXR2YWwgPSBsaW5rX3Jlc29sdmUgKHRhcmdldCwgbGV2ZWwg KyAxKTsKLSsgIHhmcmVlICh0YXJnZXQpOworKyAgcmV0dmFsID0gbGlua19yZXNvbHZlICh0YXJn ZXQuZ2V0ICgpLCBsZXZlbCArIDEpOwogKyAgcmV0dXJuIHJldHZhbDsKICt9CiArCkBAIC01MTYs NDIgKzUxNyw0OSBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2J1aWxkLWlkLmMgYi9nZGIvYnVpbGQtaWQu YwogKwogICAgaWYgKHNlcGFyYXRlX2RlYnVnX2ZpbGVfZGVidWcpCiAgICAgIHsKLS0gICAgICBw cmludGZfdW5maWx0ZXJlZCAoXygiICBUcnlpbmcgJXMuLi4iKSwgbGluay5jX3N0ciAoKSk7Ci0r ICAgICAgcHJpbnRmX3VuZmlsdGVyZWQgKF8oIiAgVHJ5aW5nICVzLi4uIiksIG9yaWdfbGluay5j X3N0ciAoKSk7Ci0gICAgICAgZ2RiX2ZsdXNoIChnZGJfc3Rkb3V0KTsKKy0gICAgICBmcHJpbnRm X3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csIF8oIiAgVHJ5aW5nICVzLi4uIiksIGxpbmsuY19zdHIg KCkpOworLSAgICAgIGdkYl9mbHVzaCAoZ2RiX3N0ZGxvZyk7CisrICAgICAgZnByaW50Zl91bmZp bHRlcmVkIChnZGJfc3RkbG9nLCBfKCIgIFRyeWluZyAlcy4uLiIpLCBvcmlnX2xpbmsuY19zdHIg KCkpOworKyAgICAgIGdkYl9mbHVzaCAoZ2RiX3N0ZG91dCk7CiAgICAgIH0KICAKIC0gIC8qIGxy ZWFscGF0aCgpIGlzIGV4cGVuc2l2ZSBldmVuIGZvciB0aGUgdXN1YWxseSBub24tZXhpc3RlbnQg ZmlsZXMuICAqLwotLSAgZ2RiOjp1bmlxdWVfeG1hbGxvY19wdHI8Y2hhcj4gZmlsZW5hbWU7Ci0t ICBpZiAoYWNjZXNzIChsaW5rLmNfc3RyICgpLCBGX09LKSA9PSAwKQotLSAgICBmaWxlbmFtZS5y ZXNldCAobHJlYWxwYXRoIChsaW5rLmNfc3RyICgpKSk7Ci0tCi0tICBpZiAoZmlsZW5hbWUgPT0g TlVMTCkKKy0gIGdkYjo6dW5pcXVlX3htYWxsb2NfcHRyPGNoYXI+IGZpbGVuYW1lX2hvbGRlcjsK Ky0gIGNvbnN0IGNoYXIgKmZpbGVuYW1lID0gbnVsbHB0cjsKKy0gIGlmIChzdGFydHN3aXRoIChs aW5rLCBUQVJHRVRfU1lTUk9PVF9QUkVGSVgpKQorLSAgICBmaWxlbmFtZSA9IGxpbmsuY19zdHIg KCk7CistICBlbHNlIGlmIChhY2Nlc3MgKGxpbmsuY19zdHIgKCksIEZfT0spID09IDApCiArICBm b3IgKHVuc2lnbmVkIHNlcW5vID0gMDs7IHNlcW5vKyspCiAgICAgIHsKLS0gICAgICBpZiAoc2Vw YXJhdGVfZGVidWdfZmlsZV9kZWJ1ZykKLS0JcHJpbnRmX3VuZmlsdGVyZWQgKF8oIiBubywgdW5h YmxlIHRvIGNvbXB1dGUgcmVhbCBwYXRoXG4iKSk7CistICAgICAgZmlsZW5hbWVfaG9sZGVyLnJl c2V0IChscmVhbHBhdGggKGxpbmsuY19zdHIgKCkpKTsKKy0gICAgICBmaWxlbmFtZSA9IGZpbGVu YW1lX2hvbGRlci5nZXQgKCk7CistICAgIH0KICsgICAgICBzdGQ6OnN0cmluZyBsaW5rID0gb3Jp Z19saW5rOwogIAotLSAgICAgIHJldHVybiB7fTsKLS0gICAgfQorLSAgaWYgKGZpbGVuYW1lID09 IE5VTEwpCistICAgIHsKKy0gICAgICBpZiAoc2VwYXJhdGVfZGVidWdfZmlsZV9kZWJ1ZykKKy0J ZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAorLQkJCSAgICBfKCIgbm8sIHVuYWJsZSB0 byBjb21wdXRlIHJlYWwgcGF0aFxuIikpOwogKyAgICAgIGlmIChzZXFubyA+IDApCiArCXsKICsJ ICAvKiBUaGVyZSBjYW4gYmUgbXVsdGlwbGUgYnVpbGQtaWQgc3ltbGlua3MgcG9pbnRpbmcgdG8g cmVhbCBmaWxlcwogKwkgICAgIHdpdGggdGhlIHNhbWUgYnVpbGQtaWQgKHN1Y2ggYXMgaGFyZCBs aW5rcykuICBTb21lIG9mIHRoZSByZWFsCiArCSAgICAgZmlsZXMgbWF5IG5vdCBiZSBpbnN0YWxs ZWQuICAqLwotKworIAorLSAgICAgIHJldHVybiB7fTsKKy0gICAgfQogKwkgIHN0cmluZ19hcHBl bmRmIChsaW5rLCAiLiV1Iiwgc2Vxbm8pOwogKwl9CiAgCiAtICAvKiBXZSBleHBlY3QgdG8gYmUg c2lsZW50IG9uIHRoZSBub24tZXhpc3RpbmcgZmlsZXMuICAqLwotLSAgZ2RiX2JmZF9yZWZfcHRy IGRlYnVnX2JmZCA9IGdkYl9iZmRfb3BlbiAoZmlsZW5hbWUuZ2V0ICgpLCBnbnV0YXJnZXQpOwor LSAgZ2RiX2JmZF9yZWZfcHRyIGRlYnVnX2JmZCA9IGdkYl9iZmRfb3BlbiAoZmlsZW5hbWUsIGdu dXRhcmdldCk7CiArICAgICAgcmV0X2xpbmsgPSBsaW5rOwogIAogLSAgaWYgKGRlYnVnX2JmZCA9 PSBOVUxMKQogLSAgICB7CiAtICAgICAgaWYgKHNlcGFyYXRlX2RlYnVnX2ZpbGVfZGVidWcpCi0t CXByaW50Zl91bmZpbHRlcmVkIChfKCIgbm8sIHVuYWJsZSB0byBvcGVuLlxuIikpOworLQlmcHJp bnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csIF8oIiBubywgdW5hYmxlIHRvIG9wZW4uXG4iKSk7 CiArICAgICAgc3RydWN0IHN0YXQgc3RhdGJ1Zl90cmFzaDsKICsKICsgICAgICAvKiBgYWNjZXNz JyBhdXRvbWF0aWNhbGx5IGRlcmVmZXJlbmNlcyBMSU5LLiAgKi8KQEAgLTU2MiwzNSArNTcwLDQy IEBAIGRpZmYgLS1naXQgYS9nZGIvYnVpbGQtaWQuYyBiL2dkYi9idWlsZC1pZC5jCiArCX0KICsK ICsgICAgICAvKiBscmVhbHBhdGgoKSBpcyBleHBlbnNpdmUgZXZlbiBmb3IgdGhlIHVzdWFsbHkg bm9uLWV4aXN0ZW50IGZpbGVzLiAgKi8KLSsgICAgICBnZGI6OnVuaXF1ZV94bWFsbG9jX3B0cjxj aGFyPiBmaWxlbmFtZTsKLSsKLSsgICAgICBpZiAoYWNjZXNzIChsaW5rLmNfc3RyICgpLCBGX09L KSA9PSAwKQotKwlmaWxlbmFtZS5yZXNldCAobHJlYWxwYXRoIChsaW5rLmNfc3RyICgpKSk7Cisr ICAgICAgZ2RiOjp1bmlxdWVfeG1hbGxvY19wdHI8Y2hhcj4gZmlsZW5hbWVfaG9sZGVyOworKyAg ICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lID0gbnVsbHB0cjsKKysgICAgICBpZiAoc3RhcnRzd2l0 aCAobGluaywgVEFSR0VUX1NZU1JPT1RfUFJFRklYKSkKKysJZmlsZW5hbWUgPSBsaW5rLmNfc3Ry ICgpOworKyAgICAgIGVsc2UgaWYgKGFjY2VzcyAobGluay5jX3N0ciAoKSwgRl9PSykgPT0gMCkK KysJeworKwkgIGZpbGVuYW1lX2hvbGRlci5yZXNldCAobHJlYWxwYXRoIChsaW5rLmNfc3RyICgp KSk7CisrCSAgZmlsZW5hbWUgPSBmaWxlbmFtZV9ob2xkZXIuZ2V0ICgpOworKwl9CiArCiArICAg ICAgaWYgKGZpbGVuYW1lID09IE5VTEwpCiArCXsKICsJICBpZiAoc2VwYXJhdGVfZGVidWdfZmls ZV9kZWJ1ZykKLSsJICAgIHByaW50Zl91bmZpbHRlcmVkIChfKCIgbm8sIHVuYWJsZSB0byBjb21w dXRlIHJlYWwgcGF0aFxuIikpOworKwkgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9n LAorKwkgICAgICAgICAgICAgICAgICAgICAgIF8oIiBubywgdW5hYmxlIHRvIGNvbXB1dGUgcmVh bCBwYXRoXG4iKSk7CiArCiArCSAgY29udGludWU7CiArCX0KICsKICsgICAgICAvKiBXZSBleHBl Y3QgdG8gYmUgc2lsZW50IG9uIHRoZSBub24tZXhpc3RpbmcgZmlsZXMuICAqLwotKyAgICAgIGdk Yl9iZmRfcmVmX3B0ciBkZWJ1Z19iZmQgPSBnZGJfYmZkX29wZW4gKGZpbGVuYW1lLmdldCAoKSwg Z251dGFyZ2V0LCAtMSk7Ci0gCi0tICAgICAgcmV0dXJuIHt9OworKyAgICAgIGdkYl9iZmRfcmVm X3B0ciBkZWJ1Z19iZmQgPSBnZGJfYmZkX29wZW4gKGZpbGVuYW1lLCBnbnV0YXJnZXQpOworKwog KyAgICAgIGlmIChkZWJ1Z19iZmQgPT0gTlVMTCkKICsJewogKwkgIGlmIChzZXBhcmF0ZV9kZWJ1 Z19maWxlX2RlYnVnKQotKwkgICAgcHJpbnRmX3VuZmlsdGVyZWQgKF8oIiBubywgdW5hYmxlIHRv IG9wZW4uXG4iKSk7Ci0rCisrCSAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csIF8o IiBubywgdW5hYmxlIHRvIG9wZW4uXG4iKSk7CisgCistICAgICAgcmV0dXJuIHt9OwogKwkgIGNv bnRpbnVlOwogKwl9CiArCiArICAgICAgaWYgKCFidWlsZF9pZF92ZXJpZnkgKGRlYnVnX2JmZC5n ZXQoKSwgYnVpbGRfaWRfbGVuLCBidWlsZF9pZCkpCiArCXsKICsJICBpZiAoc2VwYXJhdGVfZGVi dWdfZmlsZV9kZWJ1ZykKLSsJICAgIHByaW50Zl91bmZpbHRlcmVkIChfKCIgbm8sIGJ1aWxkLWlk IGRvZXMgbm90IG1hdGNoLlxuIikpOworKwkgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3Rk bG9nLAorKwkgICAgICAgICAgICAgICAgICAgICAgICBfKCIgbm8sIGJ1aWxkLWlkIGRvZXMgbm90 IG1hdGNoLlxuIikpOwogKwogKwkgIGNvbnRpbnVlOwogKwl9CkBAIC02MDUsMTcgKzYyMCwxNiBA QCBkaWZmIC0tZ2l0IGEvZ2RiL2J1aWxkLWlkLmMgYi9nZGIvYnVpbGQtaWQuYwogKyAgaWYgKHJl dF9iZmQgIT0gTlVMTCkKICAgICAgewogICAgICAgIGlmIChzZXBhcmF0ZV9kZWJ1Z19maWxlX2Rl YnVnKQotLQlwcmludGZfdW5maWx0ZXJlZCAoXygiIG5vLCBidWlsZC1pZCBkb2VzIG5vdCBtYXRj aC5cbiIpKTsKLS0KLS0gICAgICByZXR1cm4ge307Ci0rCXByaW50Zl91bmZpbHRlcmVkIChfKCIg eWVzIVxuIikpOworLQlmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csIF8oIiBubywgYnVp bGQtaWQgZG9lcyBub3QgbWF0Y2guXG4iKSk7CisrCWZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0 ZGxvZywgXygiIHllcyFcbiIpKTsKICsgICAgfQogKyAgZWxzZQogKyAgICB7CiArICAgICAgLyog SWYgbm9uZSBvZiB0aGUgcmVhbCBmaWxlcyBpcyBmb3VuZCByZXBvcnQgYXMgbWlzc2luZyBmaWxl CiArCSBhbHdheXMgdGhlIG5vbi0uJXUtc3VmZml4ZWQgZmlsZS4gICovCiArICAgICAgc3RkOjpz dHJpbmcgbGluazAgPSBvcmlnX2xpbms7Ci0rCisgCistICAgICAgcmV0dXJuIHt9OwogKyAgICAg IC8qIElmIHRoZSBzeW1saW5rIGhhcyB0YXJnZXQgcmVxdWVzdCB0byBpbnN0YWxsIHRoZSB0YXJn ZXQuCiArCSBCQVNFLWRlYnVnaW5mby5ycG0gY29udGFpbnMgdGhlIHN5bWxpbmsgYnV0IEJBU0Uu cnBtIG1heSBiZSBtaXNzaW5nLgogKwkgaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3df YnVnLmNnaT9pZD05ODExNTQgICovCkBAIC02MzIsNyArNjQ2LDcgQEAgZGlmZiAtLWdpdCBhL2dk Yi9idWlsZC1pZC5jIGIvZ2RiL2J1aWxkLWlkLmMKICAgICAgfQogIAogLSAgaWYgKHNlcGFyYXRl X2RlYnVnX2ZpbGVfZGVidWcpCi0tICAgIHByaW50Zl91bmZpbHRlcmVkIChfKCIgeWVzIVxuIikp OworLSAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csIF8oIiB5ZXMhXG4iKSk7CiAr ICBpZiAobGlua19yZXR1cm4gIT0gTlVMTCkKICsgICAgewogKyAgICAgIGlmIChyZXRfYmZkICE9 IE5VTEwpCkBAIC02NTAsNyArNjY0LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9idWlsZC1pZC5jIGIv Z2RiL2J1aWxkLWlkLmMKICB9CiAgCiAgLyogQ29tbW9uIGNvZGUgZm9yIGZpbmRpbmcgQkZEcyBv ZiBhIGdpdmVuIGJ1aWxkLWlkLiAgVGhpcyBmdW5jdGlvbgotQEAgLTEyNCw3ICs2MjYsNyBAQCBi dWlsZF9pZF90b19kZWJ1Z19iZmRfMSAoY29uc3Qgc3RkOjpzdHJpbmcgJmxpbmssIHNpemVfdCBi dWlsZF9pZF9sZW4sCitAQCAtMTMxLDcgKzYzNCw3IEBAIGJ1aWxkX2lkX3RvX2RlYnVnX2JmZF8x IChjb25zdCBzdGQ6OnN0cmluZyAmbGluaywgc2l6ZV90IGJ1aWxkX2lkX2xlbiwKICAKICBzdGF0 aWMgZ2RiX2JmZF9yZWZfcHRyCiAgYnVpbGRfaWRfdG9fYmZkX3N1ZmZpeCAoc2l6ZV90IGJ1aWxk X2lkX2xlbiwgY29uc3QgYmZkX2J5dGUgKmJ1aWxkX2lkLApAQCAtNjU5LDcgKzY3Myw3IEBAIGRp ZmYgLS1naXQgYS9nZGIvYnVpbGQtaWQuYyBiL2dkYi9idWlsZC1pZC5jCiAgewogICAgLyogS2Vl cCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHNvIHRoYXQgREVCVUdfRklMRV9ESVJFQ1RPUlkgYmVp bmcgIiIgd2lsbAogICAgICAgY2F1c2UgIi8uYnVpbGQtaWQvLi4uIiBsb29rdXBzLiAgKi8KLUBA IC0xNDcsMTYgKzY0OSwxNyBAQCBidWlsZF9pZF90b19iZmRfc3VmZml4IChzaXplX3QgYnVpbGRf aWRfbGVuLCBjb25zdCBiZmRfYnl0ZSAqYnVpbGRfaWQsCitAQCAtMTU0LDE2ICs2NTcsMTcgQEAg YnVpbGRfaWRfdG9fYmZkX3N1ZmZpeCAoc2l6ZV90IGJ1aWxkX2lkX2xlbiwgY29uc3QgYmZkX2J5 dGUgKmJ1aWxkX2lkLAogICAgICAgIGlmIChzaXplID4gMCkKICAJewogIAkgIHNpemUtLTsKQEAg LTY4MCw4ICs2OTQsOCBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2J1aWxkLWlkLmMgYi9nZGIvYnVpbGQt aWQuYwogICAgICAgIGlmIChkZWJ1Z19iZmQgIT0gTlVMTCkKICAJcmV0dXJuIGRlYnVnX2JmZDsK ICAKLUBAIC0xNzAsNyArNjczLDggQEAgYnVpbGRfaWRfdG9fYmZkX3N1ZmZpeCAoc2l6ZV90IGJ1 aWxkX2lkX2xlbiwgY29uc3QgYmZkX2J5dGUgKmJ1aWxkX2lkLAotICAgICAgIGlmIChzdHJjbXAg KGdkYl9zeXNyb290LCBUQVJHRVRfU1lTUk9PVF9QUkVGSVgpICE9IDApCitAQCAtMTc0LDcgKzY3 OCw4IEBAIGJ1aWxkX2lkX3RvX2JmZF9zdWZmaXggKHNpemVfdCBidWlsZF9pZF9sZW4sIGNvbnN0 IGJmZF9ieXRlICpidWlsZF9pZCwKKyAgICAgICBpZiAoIWdkYl9zeXNyb290LmVtcHR5ICgpKQog IAl7CiAgCSAgbGluayA9IGdkYl9zeXNyb290ICsgbGluazsKIC0JICBkZWJ1Z19iZmQgPSBidWls ZF9pZF90b19kZWJ1Z19iZmRfMSAobGluaywgYnVpbGRfaWRfbGVuLCBidWlsZF9pZCk7CkBAIC02 OTAsNyArNzA0LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9idWlsZC1pZC5jIGIvZ2RiL2J1aWxkLWlk LmMKICAJICBpZiAoZGVidWdfYmZkICE9IE5VTEwpCiAgCSAgICByZXR1cm4gZGVidWdfYmZkOwog IAl9Ci1AQCAtMTc5LDM4ICs2ODMsMjA4IEBAIGJ1aWxkX2lkX3RvX2JmZF9zdWZmaXggKHNpemVf dCBidWlsZF9pZF9sZW4sIGNvbnN0IGJmZF9ieXRlICpidWlsZF9pZCwKK0BAIC0xODMsMzAgKzY4 OCw2NDkgQEAgYnVpbGRfaWRfdG9fYmZkX3N1ZmZpeCAoc2l6ZV90IGJ1aWxkX2lkX2xlbiwgY29u c3QgYmZkX2J5dGUgKmJ1aWxkX2lkLAogICAgcmV0dXJuIHt9OwogIH0KICAKQEAgLTcwOCw4ICs3 MjIsNDQwIEBAIGRpZmYgLS1naXQgYS9nZGIvYnVpbGQtaWQuYyBiL2dkYi9idWlsZC1pZC5jCiAr ICByZXR1cm4gcmVzdWx0OwogK30KICsKKysjaWZkZWYgSEFWRV9MSUJSUE0KKysKKysjaW5jbHVk ZSA8cnBtL3JwbWxpYi5oPgorKyNpbmNsdWRlIDxycG0vcnBtdHMuaD4KKysjaW5jbHVkZSA8cnBt L3JwbWRiLmg+CisrI2luY2x1ZGUgPHJwbS9oZWFkZXIuaD4KKysjaWZkZWYgRExPUEVOX0xJQlJQ TQorKyNpbmNsdWRlIDxkbGZjbi5oPgorKyNlbmRpZgorKworKy8qIFdvcmthcm9kdW4gaHR0cHM6 Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD02NDMwMzEKKysgICBsaWJycG0g bXVzdCBub3QgZXhpdCgpIGFuIGFwcGxpY2F0aW9uIG9uIFNJR0lOVAorKworKyAgIEVuYWJsZSBv ciBkaXNhYmxlIGEgc2lnbmFsIGhhbmRsZXIuICBTSUdOVU06IHNpZ25hbCB0byBlbmFibGUgKG9y IGRpc2FibGUKKysgICBpZiBuZWdhdGl2ZSkuICBIQU5ETEVSOiBzYV9zaWdhY3Rpb24gaGFuZGxl ciAob3IgTlVMTCB0byB1c2UKKysgICBycG1zcUhhbmRsZXIoKSkuICBSZXR1cm5zOiBuby4gb2Yg cmVmcywgLTEgb24gZXJyb3IuICAqLworK2V4dGVybiBpbnQgcnBtc3FFbmFibGUgKGludCBzaWdu dW0sIC8qIHJwbXNxQWN0aW9uX3QgaGFuZGxlciAqLyB2b2lkICpoYW5kbGVyKTsKKytpbnQKKyty cG1zcUVuYWJsZSAoaW50IHNpZ251bSwgLyogcnBtc3FBY3Rpb25fdCBoYW5kbGVyICovIHZvaWQg KmhhbmRsZXIpCisreworKyAgcmV0dXJuIDA7CisrfQorKworKy8qIFRoaXMgTUlTU0lOR19SUE1f SEFTSCB0cmFja2VyIGlzIHVzZWQgdG8gY29sbGVjdCBhbGwgdGhlIG1pc3NpbmcgcnBtIGZpbGVz CisrICAgYW5kIGF2b2lkIHRoZWlyIGR1cGxpY2l0aWVzIGR1cmluZyBhIHNpbmdsZSBpbmZlcmlv ciBydW4uICAqLworKworK3N0YXRpYyBzdHJ1Y3QgaHRhYiAqbWlzc2luZ19ycG1faGFzaDsKKysK KysvKiBUaGlzIE1JU1NJTkdfUlBNX0xJU1QgdHJhY2tlciBpcyB1c2VkIHRvIGNvbGxlY3QgYW5k IHByaW50IGFzIGEgc2luZ2xlIGxpbmUKKysgICBhbGwgdGhlIHJwbXMgcmlnaHQgYmVmb3JlIHRo ZSBuZWFyZXN0IEdEQiBwcm9tcHQuICBJdCBnZXRzIGNsZWFyZWQgYWZ0ZXIKKysgICBlYWNoIHN1 Y2ggcHJpbnQgKGl0IGlzIHF1ZXN0aW9uYWJsZSBpZiB3ZSBzaG91bGQgY2xlYXIgaXQgYWZ0ZXIg dGhlIHByaW50KS4KKysgICAqLworKworK3N0cnVjdCBtaXNzaW5nX3JwbQorKyAgeworKyAgICBz dHJ1Y3QgbWlzc2luZ19ycG0gKm5leHQ7CisrICAgIGNoYXIgcnBtWzFdOworKyAgfTsKKytzdGF0 aWMgc3RydWN0IG1pc3NpbmdfcnBtICptaXNzaW5nX3JwbV9saXN0OworK3N0YXRpYyBpbnQgbWlz c2luZ19ycG1fbGlzdF9lbnRyaWVzOworKworKy8qIFJldHVybnMgdGhlIGNvdW50IG9mIG5ld2x5 IGFkZGVkIHJwbXMuICAqLworKworK3N0YXRpYyBpbnQKKysjaWZuZGVmIEdEQl9JTkRFWF9WRVJJ RllfVkVORE9SCisrbWlzc2luZ19ycG1fZW5saXN0IChjb25zdCBjaGFyICpmaWxlbmFtZSkKKysj ZWxzZQorK21pc3NpbmdfcnBtX2VubGlzdF8xIChjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IHZl cmlmeV92ZW5kb3IpCisrI2VuZGlmCisreworKyAgc3RhdGljIGludCBycG1faW5pdF9kb25lID0g MDsKKysgIHJwbXRzIHRzOworKyAgcnBtZGJNYXRjaEl0ZXJhdG9yIG1pOworKyAgaW50IGNvdW50 ID0gMDsKKysKKysjaWZkZWYgRExPUEVOX0xJQlJQTQorKyAgLyogRHVwbGljYXRlIGhlcmUgdGhl IGRlY2xhcmF0aW9ucyB0byB2ZXJpZnkgdGhleSBtYXRjaC4gIFRoZSBzYW1lIHNhbml0eQorKyAg ICAgY2hlY2sgaXMgcHJlc2VudCBhbHNvIGluIGBjb25maWd1cmUuYWMnLiAgKi8KKysgIGV4dGVy biBjaGFyICogaGVhZGVyRm9ybWF0KEhlYWRlciBoLCBjb25zdCBjaGFyICogZm10LCBlcnJtc2df dCAqIGVycm1zZyk7CisrICBzdGF0aWMgY2hhciAqKCpoZWFkZXJGb3JtYXRfcCkgKEhlYWRlciBo LCBjb25zdCBjaGFyICogZm10LCBlcnJtc2dfdCAqZXJybXNnKTsKKysgIGV4dGVybiBpbnQgcnBt UmVhZENvbmZpZ0ZpbGVzKGNvbnN0IGNoYXIgKiBmaWxlLCBjb25zdCBjaGFyICogdGFyZ2V0KTsK KysgIHN0YXRpYyBpbnQgKCpycG1SZWFkQ29uZmlnRmlsZXNfcCkgKGNvbnN0IGNoYXIgKiBmaWxl LCBjb25zdCBjaGFyICogdGFyZ2V0KTsKKysgIGV4dGVybiBycG1kYk1hdGNoSXRlcmF0b3IgcnBt ZGJGcmVlSXRlcmF0b3IocnBtZGJNYXRjaEl0ZXJhdG9yIG1pKTsKKysgIHN0YXRpYyBycG1kYk1h dGNoSXRlcmF0b3IgKCpycG1kYkZyZWVJdGVyYXRvcl9wKSAocnBtZGJNYXRjaEl0ZXJhdG9yIG1p KTsKKysgIGV4dGVybiBIZWFkZXIgcnBtZGJOZXh0SXRlcmF0b3IocnBtZGJNYXRjaEl0ZXJhdG9y IG1pKTsKKysgIHN0YXRpYyBIZWFkZXIgKCpycG1kYk5leHRJdGVyYXRvcl9wKSAocnBtZGJNYXRj aEl0ZXJhdG9yIG1pKTsKKysgIGV4dGVybiBycG10cyBycG10c0NyZWF0ZSh2b2lkKTsKKysgIHN0 YXRpYyBycG10cyAoKnJwbXRzQ3JlYXRlX3ApICh2b2lkKTsKKysgIGV4dGVybiBycG10cyBycG10 c0ZyZWUocnBtdHMgdHMpOworKyAgc3RhdGljIHJwbXRzICgqcnBtdHNGcmVlX3ApIChycG10cyB0 cyk7CisrICBleHRlcm4gcnBtZGJNYXRjaEl0ZXJhdG9yIHJwbXRzSW5pdEl0ZXJhdG9yKGNvbnN0 IHJwbXRzIHRzLCBycG1UYWcgcnBtdGFnLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICoga2V5cCwgc2l6ZV90IGtleWxlbik7CisrICBz dGF0aWMgcnBtZGJNYXRjaEl0ZXJhdG9yICgqcnBtdHNJbml0SXRlcmF0b3JfcCkgKGNvbnN0IHJw bXRzIHRzLAorKwkJCQkJCSAgICBycG1UYWcgcnBtdGFnLAorKwkJCQkJCSAgICBjb25zdCB2b2lk ICprZXlwLAorKwkJCQkJCSAgICBzaXplX3Qga2V5bGVuKTsKKysjZWxzZQkvKiAhRExPUEVOX0xJ QlJQTSAqLworKyMgZGVmaW5lIGhlYWRlckZvcm1hdF9wIGhlYWRlckZvcm1hdAorKyMgZGVmaW5l IHJwbVJlYWRDb25maWdGaWxlc19wIHJwbVJlYWRDb25maWdGaWxlcworKyMgZGVmaW5lIHJwbWRi RnJlZUl0ZXJhdG9yX3AgcnBtZGJGcmVlSXRlcmF0b3IKKysjIGRlZmluZSBycG1kYk5leHRJdGVy YXRvcl9wIHJwbWRiTmV4dEl0ZXJhdG9yCisrIyBkZWZpbmUgcnBtdHNDcmVhdGVfcCBycG10c0Ny ZWF0ZQorKyMgZGVmaW5lIHJwbXRzRnJlZV9wIHJwbXRzRnJlZQorKyMgZGVmaW5lIHJwbXRzSW5p dEl0ZXJhdG9yX3AgcnBtdHNJbml0SXRlcmF0b3IKKysjZW5kaWYJLyogIURMT1BFTl9MSUJSUE0g Ki8KKysKKysgIGdkYl9hc3NlcnQgKGZpbGVuYW1lICE9IE5VTEwpOworKworKyAgaWYgKHN0cmNt cCAoZmlsZW5hbWUsIEJVSUxEX0lEX01BSU5fRVhFQ1VUQUJMRV9GSUxFTkFNRSkgPT0gMCkKKysg ICAgcmV0dXJuIDA7CisrCisrICBpZiAoaXNfdGFyZ2V0X2ZpbGVuYW1lIChmaWxlbmFtZSkpCisr ICAgIHJldHVybiAwOworKworKyAgaWYgKGZpbGVuYW1lWzBdICE9ICcvJykKKysgICAgeworKyAg ICAgIHdhcm5pbmcgKF8oIklnbm9yaW5nIG5vbi1hYnNvbHV0ZSBmaWxlbmFtZTogPCVzPiIpLCBm aWxlbmFtZSk7CisrICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysKKysgIGlmICghcnBtX2luaXRf ZG9uZSkKKysgICAgeworKyAgICAgIHN0YXRpYyBpbnQgaW5pdF90cmllZDsKKysKKysgICAgICAv KiBBbHJlYWR5IGZhaWxlZCB0aGUgaW5pdGlhbGl6YXRpb24gYmVmb3JlPyAgKi8KKysgICAgICBp ZiAoaW5pdF90cmllZCkKKysgICAgICAgIHJldHVybiAwOworKyAgICAgIGluaXRfdHJpZWQgPSAx OworKworKyNpZmRlZiBETE9QRU5fTElCUlBNCisrICAgICAgeworKwl2b2lkICpoOworKworKwlo ID0gZGxvcGVuIChETE9QRU5fTElCUlBNLCBSVExEX0xBWlkpOworKwlpZiAoIWgpCisrCSAgewor KwkgICAgd2FybmluZyAoXygiVW5hYmxlIHRvIG9wZW4gXCIlc1wiICglcyksICIKKysJCSAgICAg ICJtaXNzaW5nIGRlYnVnaW5mb3Mgbm90aWZpY2F0aW9ucyB3aWxsIG5vdCBiZSBkaXNwbGF5ZWQi KSwKKysJCSAgICAgRExPUEVOX0xJQlJQTSwgZGxlcnJvciAoKSk7CisrCSAgICByZXR1cm4gMDsK KysJICB9CisrCisrCWlmICghKChoZWFkZXJGb3JtYXRfcCA9IChjaGFyICooKikgKEhlYWRlciBo LCBjb25zdCBjaGFyICogZm10LCBlcnJtc2dfdCAqZXJybXNnKSkgZGxzeW0gKGgsICJoZWFkZXJG b3JtYXQiKSkKKysJICAgICAgJiYgKHJwbVJlYWRDb25maWdGaWxlc19wID0gKGludCAoKikgKGNv bnN0IGNoYXIgKiBmaWxlLCBjb25zdCBjaGFyICogdGFyZ2V0KSkgZGxzeW0gKGgsICJycG1SZWFk Q29uZmlnRmlsZXMiKSkKKysJICAgICAgJiYgKHJwbWRiRnJlZUl0ZXJhdG9yX3AgPSAocnBtZGJN YXRjaEl0ZXJhdG9yICgqKSAocnBtZGJNYXRjaEl0ZXJhdG9yIG1pKSkgZGxzeW0gKGgsICJycG1k YkZyZWVJdGVyYXRvciIpKQorKwkgICAgICAmJiAocnBtZGJOZXh0SXRlcmF0b3JfcCA9IChIZWFk ZXIgKCopIChycG1kYk1hdGNoSXRlcmF0b3IgbWkpKSBkbHN5bSAoaCwgInJwbWRiTmV4dEl0ZXJh dG9yIikpCisrCSAgICAgICYmIChycG10c0NyZWF0ZV9wID0gKHJwbXRzICgqKSAodm9pZCkpIGRs c3ltIChoLCAicnBtdHNDcmVhdGUiKSkKKysJICAgICAgJiYgKHJwbXRzRnJlZV9wID0gKHJwbXRz ICgqKSAocnBtdHMgdHMpKSBkbHN5bSAoaCwgInJwbXRzRnJlZSIpKQorKwkgICAgICAmJiAocnBt dHNJbml0SXRlcmF0b3JfcCA9IChycG1kYk1hdGNoSXRlcmF0b3IgKCopIChjb25zdCBycG10cyB0 cywgcnBtVGFnIHJwbXRhZywgY29uc3Qgdm9pZCAqa2V5cCwgc2l6ZV90IGtleWxlbikpIGRsc3lt IChoLCAicnBtdHNJbml0SXRlcmF0b3IiKSkpKQorKwkgIHsKKysJICAgIHdhcm5pbmcgKF8oIk9w ZW5lZCBsaWJyYXJ5IFwiJXNcIiBpcyBpbmNvbXBhdGlibGUgKCVzKSwgIgorKwkJICAgICAgIm1p c3NpbmcgZGVidWdpbmZvcyBub3RpZmljYXRpb25zIHdpbGwgbm90IGJlIGRpc3BsYXllZCIpLAor KwkJICAgICBETE9QRU5fTElCUlBNLCBkbGVycm9yICgpKTsKKysJICAgIGlmIChkbGNsb3NlICho KSkKKysJICAgICAgd2FybmluZyAoXygiRXJyb3IgY2xvc2luZyBsaWJyYXJ5IFwiJXNcIjogJXNc biIpLCBETE9QRU5fTElCUlBNLAorKwkJICAgICAgIGRsZXJyb3IgKCkpOworKwkgICAgcmV0dXJu IDA7CisrCSAgfQorKyAgICAgIH0KKysjZW5kaWYJLyogRExPUEVOX0xJQlJQTSAqLworKworKyAg ICAgIGlmIChycG1SZWFkQ29uZmlnRmlsZXNfcCAoTlVMTCwgTlVMTCkgIT0gMCkKKysJeworKwkg IHdhcm5pbmcgKF8oIkVycm9yIHJlYWRpbmcgdGhlIHJwbSBjb25maWd1cmF0aW9uIGZpbGVzIikp OworKwkgIHJldHVybiAwOworKwl9CisrCisrICAgICAgcnBtX2luaXRfZG9uZSA9IDE7CisrICAg IH0KKysKKysgIHRzID0gcnBtdHNDcmVhdGVfcCAoKTsKKysKKysgIG1pID0gcnBtdHNJbml0SXRl cmF0b3JfcCAodHMsIFJQTVRBR19CQVNFTkFNRVMsIGZpbGVuYW1lLCAwKTsKKysgIGlmIChtaSAh PSBOVUxMKQorKyAgICB7CisrI2lmbmRlZiBHREJfSU5ERVhfVkVSSUZZX1ZFTkRPUgorKyAgICAg IGZvciAoOzspCisrI2Vsc2UKKysgICAgICBpZiAoIXZlcmlmeV92ZW5kb3IpIGZvciAoOzspCisr I2VuZGlmCisrCXsKKysJICBIZWFkZXIgaDsKKysJICBjaGFyICpkZWJ1Z2luZm8sICoqc2xvdCwg KnMsICpzMjsKKysJICBlcnJtc2dfdCBlcnI7CisrCSAgc2l6ZV90IHNyY3JwbWxlbiA9IHNpemVv ZiAoIi5zcmMucnBtIikgLSAxOworKwkgIHNpemVfdCBkZWJ1Z2luZm9sZW4gPSBzaXplb2YgKCIt ZGVidWdpbmZvIikgLSAxOworKwkgIHJwbWRiTWF0Y2hJdGVyYXRvciBtaV9kZWJ1Z2luZm87Cisr CisrCSAgaCA9IHJwbWRiTmV4dEl0ZXJhdG9yX3AgKG1pKTsKKysJICBpZiAoaCA9PSBOVUxMKQor KwkgICAgYnJlYWs7CisrCisrCSAgLyogVmVyaWZ5IHRoZSBkZWJ1Z2luZm8gZmlsZSBpcyBub3Qg YWxyZWFkeSBpbnN0YWxsZWQuICAqLworKworKwkgIGRlYnVnaW5mbyA9IGhlYWRlckZvcm1hdF9w IChoLCAiJXtzb3VyY2VycG19LWRlYnVnaW5mby4le2FyY2h9IiwKKysJCQkJICAgICAgJmVycik7 CisrCSAgaWYgKCFkZWJ1Z2luZm8pCisrCSAgICB7CisrCSAgICAgIHdhcm5pbmcgKF8oIkVycm9y IHF1ZXJ5aW5nIHRoZSBycG0gZmlsZSBgJXMnOiAlcyIpLCBmaWxlbmFtZSwKKysJICAgICAgICAg ICAgICAgZXJyKTsKKysJICAgICAgY29udGludWU7CisrCSAgICB9CisrCSAgLyogcyA9IGAuc3Jj LnJwbS1kZWJ1Z2luZm8uJXthcmNofScgKi8KKysJICBzID0gc3RycmNociAoZGVidWdpbmZvLCAn LScpIC0gc3JjcnBtbGVuOworKwkgIHMyID0gTlVMTDsKKysJICBpZiAocyA+IGRlYnVnaW5mbyAm JiBtZW1jbXAgKHMsICIuc3JjLnJwbSIsIHNyY3JwbWxlbikgPT0gMCkKKysJICAgIHsKKysJICAg ICAgLyogczIgPSBgLSV7cmVsZWFzZX0uc3JjLnJwbS1kZWJ1Z2luZm8uJXthcmNofScgKi8KKysJ ICAgICAgczIgPSAoY2hhciAqKSBtZW1yY2hyIChkZWJ1Z2luZm8sICctJywgcyAtIGRlYnVnaW5m byk7CisrCSAgICB9CisrCSAgaWYgKHMyKQorKwkgICAgeworKwkgICAgICAvKiBzMiA9IGAtJXt2 ZXJzaW9ufS0le3JlbGVhc2V9LnNyYy5ycG0tZGVidWdpbmZvLiV7YXJjaH0nICovCisrCSAgICAg IHMyID0gKGNoYXIgKikgbWVtcmNociAoZGVidWdpbmZvLCAnLScsIHMyIC0gZGVidWdpbmZvKTsK KysJICAgIH0KKysJICBpZiAoIXMyKQorKwkgICAgeworKwkgICAgICB3YXJuaW5nIChfKCJFcnJv ciBxdWVyeWluZyB0aGUgcnBtIGZpbGUgYCVzJzogJXMiKSwgZmlsZW5hbWUsCisrCSAgICAgICAg ICAgICAgIGRlYnVnaW5mbyk7CisrCSAgICAgIHhmcmVlIChkZWJ1Z2luZm8pOworKwkgICAgICBj b250aW51ZTsKKysJICAgIH0KKysJICAvKiBzID0gYC5zcmMucnBtLWRlYnVnaW5mby4le2FyY2h9 JyAqLworKwkgIC8qIHMyID0gYC0le3ZlcnNpb259LSV7cmVsZWFzZX0uc3JjLnJwbS1kZWJ1Z2lu Zm8uJXthcmNofScgKi8KKysJICBtZW1tb3ZlIChzMiArIGRlYnVnaW5mb2xlbiwgczIsIHMgLSBz Mik7CisrCSAgbWVtY3B5IChzMiwgIi1kZWJ1Z2luZm8iLCBkZWJ1Z2luZm9sZW4pOworKwkgIC8q IHMgPSBgWFhYWC4le2FyY2h9JyAqLworKwkgIC8qIHN0cmxlbiAoIlhYWFgiKSA9PSBzcmNycG1s ZW4gKyBkZWJ1Z2luZm9sZW4gKi8KKysJICAvKiBzMiA9IGAtZGVidWdpbmZvLSV7dmVyc2lvbn0t JXtyZWxlYXNlfVhYLiV7YXJjaH0nICovCisrCSAgLyogc3RybGVuICgiWFgiKSA9PSBzcmNycG1s ZW4gKi8KKysJICBtZW1tb3ZlIChzICsgZGVidWdpbmZvbGVuLCBzICsgc3JjcnBtbGVuICsgZGVi dWdpbmZvbGVuLAorKwkJICAgc3RybGVuIChzICsgc3JjcnBtbGVuICsgZGVidWdpbmZvbGVuKSAr IDEpOworKwkgIC8qIHMgPSBgLWRlYnVnaW5mby0le3ZlcnNpb259LSV7cmVsZWFzZX0uJXthcmNo fScgKi8KKysKKysJICAvKiBSUE1EQklfUEFDS0FHRVMgcmVxdWlyZXMga2V5bGVuID09IHNpemVv ZiAoaW50KS4gICovCisrCSAgLyogUlBNREJJX0xBQkVMIGlzIGFuIGludGVyZmFjZSBmb3IgTlZS LWJhc2VkIGRiaUZpbmRCeUxhYmVsKCkuICAqLworKwkgIG1pX2RlYnVnaW5mbyA9IHJwbXRzSW5p dEl0ZXJhdG9yX3AgKHRzLCAocnBtVGFnKSBSUE1EQklfTEFCRUwsIGRlYnVnaW5mbywgMCk7Cisr CSAgeGZyZWUgKGRlYnVnaW5mbyk7CisrCSAgaWYgKG1pX2RlYnVnaW5mbykKKysJICAgIHsKKysJ ICAgICAgcnBtZGJGcmVlSXRlcmF0b3JfcCAobWlfZGVidWdpbmZvKTsKKysJICAgICAgY291bnQg PSAwOworKwkgICAgICBicmVhazsKKysJICAgIH0KKysKKysJICAvKiBUaGUgYWxsb2NhdGVkIG1l bW9yeSBnZXRzIHV0aWxpemVkIGJlbG93IGZvciBNSVNTSU5HX1JQTV9IQVNILiAgKi8KKysJICBk ZWJ1Z2luZm8gPSBoZWFkZXJGb3JtYXRfcCAoaCwKKysJCQkJICAgICAgIiV7bmFtZX0tJXt2ZXJz aW9ufS0le3JlbGVhc2V9LiV7YXJjaH0iLAorKwkJCQkgICAgICAmZXJyKTsKKysJICBpZiAoIWRl YnVnaW5mbykKKysJICAgIHsKKysJICAgICAgd2FybmluZyAoXygiRXJyb3IgcXVlcnlpbmcgdGhl IHJwbSBmaWxlIGAlcyc6ICVzIiksIGZpbGVuYW1lLAorKwkgICAgICAgICAgICAgICBlcnIpOwor KwkgICAgICBjb250aW51ZTsKKysJICAgIH0KKysKKysJICAvKiBCYXNlIHBhY2thZ2UgbmFtZSBm b3IgYGRlYnVnaW5mby1pbnN0YWxsJy4gIFdlIGRvIG5vdCB1c2UgdGhlCisrCSAgICAgYHl1bScg Y29tbWFuZCBkaXJlY3RseSBhcyB0aGUgbGluZQorKwkJIHl1bSAtLWVuYWJsZXJlcG89JypkZWJ1 ZyonIGluc3RhbGwgTkFNRS1kZWJ1Z2luZm8uQVJDSAorKwkgICAgIHdvdWxkIGJlIG1vcmUgY29t cGxpY2F0ZWQgdGhhbiBqdXN0OgorKwkJIGRlYnVnaW5mby1pbnN0YWxsIE5BTUUtVkVSU0lPTi1S RUxFQVNFLkFSQ0gKKysJICAgICBEbyBub3Qgc3VwcGx5IHRoZSBycG0gYmFzZSBuYW1lIChkZXJp dmVkIGZyb20gLnNyYy5ycG0gbmFtZSkgYXMKKysJICAgICBkZWJ1Z2luZm8taW5zdGFsbCBpcyB1 bmFibGUgdG8gaW5zdGFsbCB0aGUgZGVidWdpbmZvIHBhY2thZ2UgaWYKKysJICAgICB0aGUgYmFz ZSBuYW1lIFBLRyBiaW5hcnkgcnBtIGlzIG5vdCBpbnN0YWxsZWQgd2hpbGUgZm9yIGV4YW1wbGUK KysJICAgICBQS0ctbGlicyB3b3VsZCBiZSBpbnN0YWxsZWQgKFJIIEJ1ZyA0Njc5MDEpLgorKwkg ICAgIEZVVFVSRTogQWZ0ZXIgbXVsdGlwbGUgZGVidWdpbmZvIHZlcnNpb25zIHNpbXVsdGFuZW91 c2x5IGluc3RhbGxlZAorKwkgICAgIGdldCBzdXBwb3J0ZWQgdGhlIHN1cHBvcnQgZm9yIHRoZSBW RVJTSU9OLVJFTEVBU0UgdGFncyBoYW5kbGluZworKwkgICAgIG1heSBuZWVkIGFuIHVwZGF0ZS4g ICovCisrCisrCSAgaWYgKG1pc3NpbmdfcnBtX2hhc2ggPT0gTlVMTCkKKysJICAgIHsKKysJICAg ICAgLyogREVMX0YgaXMgcGFzc2VkIE5VTEwgYXMgTUlTU0lOR19SUE1fTElTVCdzIEhUQUJfREVM RVRFCisrCQkgc2hvdWxkIG5vdCBkZWFsbG9jYXRlIHRoZSBlbnRyaWVzLiAgKi8KKysKKysJICAg ICAgbWlzc2luZ19ycG1faGFzaCA9IGh0YWJfY3JlYXRlX2FsbG9jICg2NCwgaHRhYl9oYXNoX3N0 cmluZywKKysJCQkgICAgICAgKGludCAoKikgKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSkg c3RyZXEsCisrCQkJCQkJICAgIE5VTEwsIHhjYWxsb2MsIHhmcmVlKTsKKysJICAgIH0KKysJICBz bG90ID0gKGNoYXIgKiopIGh0YWJfZmluZF9zbG90IChtaXNzaW5nX3JwbV9oYXNoLCBkZWJ1Z2lu Zm8sIElOU0VSVCk7CisrCSAgLyogWENBTExPQyBuZXZlciByZXR1cm5zIE5VTEwuICAqLworKwkg IGdkYl9hc3NlcnQgKHNsb3QgIT0gTlVMTCk7CisrCSAgaWYgKCpzbG90ID09IE5VTEwpCisrCSAg ICB7CisrCSAgICAgIHN0cnVjdCBtaXNzaW5nX3JwbSAqbWlzc2luZ19ycG07CisrCisrCSAgICAg ICpzbG90ID0gZGVidWdpbmZvOworKworKwkgICAgICBtaXNzaW5nX3JwbSA9IChzdHJ1Y3QgbWlz c2luZ19ycG0gKikgeG1hbGxvYyAoc2l6ZW9mICgqbWlzc2luZ19ycG0pICsgc3RybGVuIChkZWJ1 Z2luZm8pKTsKKysJICAgICAgc3RyY3B5IChtaXNzaW5nX3JwbS0+cnBtLCBkZWJ1Z2luZm8pOwor KwkgICAgICBtaXNzaW5nX3JwbS0+bmV4dCA9IG1pc3NpbmdfcnBtX2xpc3Q7CisrCSAgICAgIG1p c3NpbmdfcnBtX2xpc3QgPSBtaXNzaW5nX3JwbTsKKysJICAgICAgbWlzc2luZ19ycG1fbGlzdF9l bnRyaWVzKys7CisrCSAgICB9CisrCSAgZWxzZQorKwkgICAgeGZyZWUgKGRlYnVnaW5mbyk7Cisr CSAgY291bnQrKzsKKysJfQorKyNpZmRlZiBHREJfSU5ERVhfVkVSSUZZX1ZFTkRPUgorKyAgICAg IGVsc2UgLyogdmVyaWZ5X3ZlbmRvciAqLworKwl7CisrCSAgaW50IHZlbmRvcl9wYXNzID0gMCwg dmVuZG9yX2ZhaWwgPSAwOworKworKwkgIGZvciAoOzspCisrCSAgICB7CisrCSAgICAgIEhlYWRl ciBoOworKwkgICAgICBlcnJtc2dfdCBlcnI7CisrCSAgICAgIGNoYXIgKnZlbmRvcjsKKysKKysJ ICAgICAgaCA9IHJwbWRiTmV4dEl0ZXJhdG9yX3AgKG1pKTsKKysJICAgICAgaWYgKGggPT0gTlVM TCkKKysJCWJyZWFrOworKworKwkgICAgICB2ZW5kb3IgPSBoZWFkZXJGb3JtYXRfcCAoaCwgIiV7 dmVuZG9yfSIsICZlcnIpOworKwkgICAgICBpZiAoIXZlbmRvcikKKysJCXsKKysJCSAgd2Fybmlu ZyAoXygiRXJyb3IgcXVlcnlpbmcgdGhlIHJwbSBmaWxlIGAlcyc6ICVzIiksIGZpbGVuYW1lLAor KwkJCSAgIGVycik7CisrCQkgIGNvbnRpbnVlOworKwkJfQorKwkgICAgICBpZiAoc3RyY21wICh2 ZW5kb3IsICJSZWQgSGF0LCBJbmMuIikgPT0gMCkKKysJCXZlbmRvcl9wYXNzID0gMTsKKysJICAg ICAgZWxzZQorKwkJdmVuZG9yX2ZhaWwgPSAxOworKwkgICAgICB4ZnJlZSAodmVuZG9yKTsKKysJ ICAgIH0KKysJICBjb3VudCA9IHZlbmRvcl9wYXNzICE9IDAgJiYgdmVuZG9yX2ZhaWwgPT0gMDsK KysJfQorKyNlbmRpZgorKworKyAgICAgIHJwbWRiRnJlZUl0ZXJhdG9yX3AgKG1pKTsKKysgICAg fQorKworKyAgcnBtdHNGcmVlX3AgKHRzKTsKKysKKysgIHJldHVybiBjb3VudDsKKyt9CisrCisr I2lmZGVmIEdEQl9JTkRFWF9WRVJJRllfVkVORE9SCisrbWlzc2luZ19ycG1fZW5saXN0IChjb25z dCBjaGFyICpmaWxlbmFtZSkKKyt7CisrICByZXR1cm4gbWlzc2luZ19ycG1fZW5saXN0XzEgKGZp bGVuYW1lLCAwKTsKKyt9CisrCisrZXh0ZXJuIGludCBycG1fdmVyaWZ5X3ZlbmRvciAoY29uc3Qg Y2hhciAqZmlsZW5hbWUpOworK2ludAorK3JwbV92ZXJpZnlfdmVuZG9yIChjb25zdCBjaGFyICpm aWxlbmFtZSkKKyt7CisrICByZXR1cm4gbWlzc2luZ19ycG1fZW5saXN0XzEgKGZpbGVuYW1lLCAx KTsKKyt9CisrI2VuZGlmCisrCisrc3RhdGljIGJvb2wKKyttaXNzaW5nX3JwbV9saXN0X2NvbXBh ciAoY29uc3QgY2hhciAqYXAsIGNvbnN0IGNoYXIgKmJwKQorK3sKKysgIHJldHVybiBzdHJjb2xs IChhcCwgYnApIDwgMDsKKyt9CisrCisrLyogSXQgcmV0dXJucyBhIE5VTEwtdGVybWluYXRlZCBh cnJheSBvZiBzdHJpbmdzIG5lZWRpbmcgdG8gYmUgRlJFRWQuICBJdCBtYXkKKysgICBhbHNvIHJl dHVybiBvbmx5IE5VTEwuICAqLworKworK3N0YXRpYyB2b2lkCisrbWlzc2luZ19ycG1fbGlzdF9w cmludCAodm9pZCkKKyt7CisrICBzdHJ1Y3QgbWlzc2luZ19ycG0gKmxpc3RfaXRlcjsKKysKKysg IGlmIChtaXNzaW5nX3JwbV9saXN0X2VudHJpZXMgPT0gMCkKKysgICAgcmV0dXJuOworKworKyAg c3RkOjp2ZWN0b3I8Y29uc3QgY2hhciAqPiBhcnJheSAobWlzc2luZ19ycG1fbGlzdF9lbnRyaWVz KTsKKysgIHNpemVfdCBpZHggPSAwOworKworKyAgZm9yIChsaXN0X2l0ZXIgPSBtaXNzaW5nX3Jw bV9saXN0OyBsaXN0X2l0ZXIgIT0gTlVMTDsKKysgICAgICAgbGlzdF9pdGVyID0gbGlzdF9pdGVy LT5uZXh0KQorKyAgICB7CisrICAgICAgYXJyYXlbaWR4KytdID0gbGlzdF9pdGVyLT5ycG07Cisr ICAgIH0KKysgIGdkYl9hc3NlcnQgKGlkeCA9PSBtaXNzaW5nX3JwbV9saXN0X2VudHJpZXMpOwor KworKyAgc3RkOjpzb3J0IChhcnJheS5iZWdpbiAoKSwgYXJyYXkuZW5kICgpLCBtaXNzaW5nX3Jw bV9saXN0X2NvbXBhcik7CisrCisrICAvKiBXZSB6ZXJvIG91dCB0aGUgbnVtYmVyIG9mIG1pc3Np bmcgUlBNcyBoZXJlIGJlY2F1c2Ugb2YgYSBuYXN0eQorKyAgICAgYnVnIChzZWUgUkhCWiAxODAx OTc0KS4KKysKKysgICAgIFdoZW4gd2UgY2FsbCAncHV0c191bmZpbHRlcmVkJyBiZWxvdywgaWYg cGFnaW5hdGlvbiBpcyBvbiBhbmQgaWYKKysgICAgIHRoZSBudW1iZXIgb2YgbWlzc2luZyBSUE1z IGlzIGJpZyBlbm91Z2ggdG8gdHJpZ2dlciBwYWdpbmF0aW9uLAorKyAgICAgd2Ugd2lsbCBlbmQg dXAgaW4gYW4gaW5maW5pdGUgcmVjdXJzaW9uLiAgVGhlIGNhbGwgY2hhaW4gbG9va3MKKysgICAg IGxpa2UgdGhpczoKKysKKysgICAgIG1pc3NpbmdfcnBtX2xpc3RfcHJpbnQgLT4gcHV0c191bmZp bHRlcmVkIC0+IGZwdXRzX21heWJlX2ZpbHRlcmVkCisrICAgICAtPiBwcm9tcHRfZm9yX2NvbnRp bnVlIC0+IGRpc3BsYXlfZ2RiX3Byb21wdCAtPgorKyAgICAgZGVidWdfZmx1c2hfbWlzc2luZyAt PiBtaXNzaW5nX3JwbV9saXN0X3ByaW50IC4uLgorKworKyAgICAgRm9yIHRoaXMgcmVhc29uLCB3 ZSBtYWtlIHN1cmUgTUlTU0lOR19SUE1fTElTVF9FTlRSSUVTIGlzIHplcm8KKysgICAgICpiZWZv cmUqIGNhbGxpbmcgYW55IHByaW50IGZ1bmN0aW9uLiAgKi8KKysgIG1pc3NpbmdfcnBtX2xpc3Rf ZW50cmllcyA9IDA7CisrCisrICBwcmludGZfdW5maWx0ZXJlZCAoXygiTWlzc2luZyBzZXBhcmF0 ZSBkZWJ1Z2luZm9zLCB1c2U6ICVzIiksCisrI2lmZGVmIERORl9ERUJVR0lORk9fSU5TVEFMTAor KwkJICAgICAiZG5mICIKKysjZW5kaWYKKysJCSAgICAgImRlYnVnaW5mby1pbnN0YWxsIik7Cisr ICBmb3IgKGNvbnN0IGNoYXIgKmVsIDogYXJyYXkpCisrICAgIHsKKysgICAgICBwdXRzX3VuZmls dGVyZWQgKCIgIik7CisrICAgICAgcHV0c191bmZpbHRlcmVkIChlbCk7CisrICAgIH0KKysgIHB1 dHNfdW5maWx0ZXJlZCAoIlxuIik7CisrCisrICB3aGlsZSAobWlzc2luZ19ycG1fbGlzdCAhPSBO VUxMKQorKyAgICB7CisrICAgICAgbGlzdF9pdGVyID0gbWlzc2luZ19ycG1fbGlzdDsKKysgICAg ICBtaXNzaW5nX3JwbV9saXN0ID0gbGlzdF9pdGVyLT5uZXh0OworKyAgICAgIHhmcmVlIChsaXN0 X2l0ZXIpOworKyAgICB9CisrfQorKworK3N0YXRpYyB2b2lkCisrbWlzc2luZ19ycG1fY2hhbmdl ICh2b2lkKQorK3sKKysgIGRlYnVnX2ZsdXNoX21pc3NpbmcgKCk7CisrCisrICBnZGJfYXNzZXJ0 IChtaXNzaW5nX3JwbV9saXN0ID09IE5VTEwpOworKyAgaWYgKG1pc3NpbmdfcnBtX2hhc2ggIT0g TlVMTCkKKysgICAgeworKyAgICAgIGh0YWJfZGVsZXRlIChtaXNzaW5nX3JwbV9oYXNoKTsKKysg ICAgICBtaXNzaW5nX3JwbV9oYXNoID0gTlVMTDsKKysgICAgfQorK30KKysKKytlbnVtIG1pc3Np bmdfZXhlYworKyAgeworKyAgICAvKiBJbml0IHN0YXRlLiAgRVhFQ19CRkQgYWxzbyBzdGlsbCBj b3VsZCBiZSBOVUxMLiAgKi8KKysgICAgTUlTU0lOR19FWEVDX05PVF9UUklFRCwKKysgICAgLyog V2Ugc2F3IGEgbm9uLU5VTEwgRVhFQ19CRkQgYnV0IFJQTSBoYXMgbm8gaW5mbyBhYm91dCBpdC4g ICovCisrICAgIE1JU1NJTkdfRVhFQ19OT1RfRk9VTkQsCisrICAgIC8qIFdlIGZvdW5kIEVYRUNf QkZEIGJ5IFJQTSBhbmQgd2UgZWl0aGVyIGhhdmUgaXRzIHN5bWJvbHMgKGVpdGhlciBlbWJlZGRl ZAorKyAgICAgICBvciBzZXBhcmF0ZSkgb3IgdGhlIG1haW4gZXhlY3V0YWJsZSdzIFJQTSBpcyBu b3cgY29udGFpbmVkIGluCisrICAgICAgIE1JU1NJTkdfUlBNX0hBU0guICAqLworKyAgICBNSVNT SU5HX0VYRUNfRU5MSVNURUQKKysgIH07Cisrc3RhdGljIGVudW0gbWlzc2luZ19leGVjIG1pc3Np bmdfZXhlYyA9IE1JU1NJTkdfRVhFQ19OT1RfVFJJRUQ7CisrCisrI2VuZGlmCS8qIEhBVkVfTElC UlBNICovCisrCisrdm9pZAorK2RlYnVnX2ZsdXNoX21pc3NpbmcgKHZvaWQpCisreworKyNpZmRl ZiBIQVZFX0xJQlJQTQorKyAgbWlzc2luZ19ycG1fbGlzdF9wcmludCAoKTsKKysjZW5kaWYKKyt9 CisrCiArLyogVGhpcyBNSVNTSU5HX0ZJTEVQQUlSX0hBU0ggdHJhY2tlciBpcyB1c2VkIG9ubHkg Zm9yIHRoZSBkdXBsaWNpdGUgbWVzc2FnZXMKLSsgICAgIFRyeSB0byBpbnN0YWxsIHRoZSBoYXNo IGZpbGUgLi4uCisrICAgICB5dW0gLS1lbmFibGVyZXBvPScqZGVidWcqJyBpbnN0YWxsIC4uLgog KyAgIGF2b2lkYW5jZS4gICovCiArCiArc3RydWN0IG1pc3NpbmdfZmlsZXBhaXIKQEAgLTc2Mywx MSArMTIwOSwxNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2J1aWxkLWlkLmMgYi9nZGIvYnVpbGQtaWQu YwogKyAgICAgIC8qIEFsbCB0aGVpciBtZW1vcnkgY2FtZSBqdXN0IGZyb20gbWlzc2luZ19maWxl cGFpcl9PQlNUQUNLLiAgKi8KICsgICAgICBtaXNzaW5nX2ZpbGVwYWlyX2hhc2ggPSBOVUxMOwog KyAgICB9CisrI2lmZGVmIEhBVkVfTElCUlBNCisrICBtaXNzaW5nX2V4ZWMgPSBNSVNTSU5HX0VY RUNfTk9UX1RSSUVEOworKyNlbmRpZgogK30KICsKICtzdGF0aWMgdm9pZAogK2RlYnVnX3ByaW50 X2V4ZWN1dGFibGVfY2hhbmdlZCAodm9pZCkKICt7CisrI2lmZGVmIEhBVkVfTElCUlBNCisrICBt aXNzaW5nX3JwbV9jaGFuZ2UgKCk7CisrI2VuZGlmCiArICBtaXNzaW5nX2ZpbGVwYWlyX2NoYW5n ZSAoKTsKICt9CiArCkBAIC04MzQsMTQgKzEyODYsMzggQEAgZGlmZiAtLWdpdCBhL2dkYi9idWls ZC1pZC5jIGIvZ2RiL2J1aWxkLWlkLmMKICsKICsgICpzbG90ID0gbWlzc2luZ19maWxlcGFpcjsK ICsKLSsgIC8qIFdlIGRvIG5vdCBjb2xsZWN0IGFuZCBmbHVzaCB0aGVzZSBtZXNzYWdlcyBhcyBl YWNoIHN1Y2ggbWVzc2FnZQotKyAgICAgYWxyZWFkeSByZXF1aXJlcyBpdHMgb3duIHNlcGFyYXRl IGxpbmVzLiAgKi8KKysjaWZkZWYgSEFWRV9MSUJSUE0KKysgIGlmIChtaXNzaW5nX2V4ZWMgPT0g TUlTU0lOR19FWEVDX05PVF9UUklFRCkKKysgICAgeworKyAgICAgIGNvbnN0IGNoYXIgKmV4ZWNm aWxlbmFtZSA9IGdldF9leGVjX2ZpbGUgKDApOwogKwotKyAgZnByaW50Zl91bmZpbHRlcmVkIChn ZGJfc3RkbG9nLAotKwkJICAgICAgXygiTWlzc2luZyBzZXBhcmF0ZSBkZWJ1Z2luZm8gZm9yICVz XG4iKSwgYmluYXJ5KTsKLSsgIGlmIChkZWJ1ZyAhPSBOVUxMKQotKyAgICBmcHJpbnRmX3VuZmls dGVyZWQgKGdkYl9zdGRsb2csIF8oIlRyeSB0byBpbnN0YWxsIHRoZSBoYXNoIGZpbGUgJXNcbiIp LAotKwkJCWRlYnVnKTsKKysgICAgICBpZiAoZXhlY2ZpbGVuYW1lICE9IE5VTEwpCisrCXsKKysJ ICBpZiAobWlzc2luZ19ycG1fZW5saXN0IChleGVjZmlsZW5hbWUpID09IDApCisrCSAgICBtaXNz aW5nX2V4ZWMgPSBNSVNTSU5HX0VYRUNfTk9UX0ZPVU5EOworKwkgIGVsc2UKKysJICAgIG1pc3Np bmdfZXhlYyA9IE1JU1NJTkdfRVhFQ19FTkxJU1RFRDsKKysJfQorKyAgICB9CisrICBpZiAobWlz c2luZ19leGVjICE9IE1JU1NJTkdfRVhFQ19FTkxJU1RFRCkKKysgICAgaWYgKChiaW5hcnlbMF0g PT0gMCB8fCBtaXNzaW5nX3JwbV9lbmxpc3QgKGJpbmFyeSkgPT0gMCkKKysJJiYgKGRlYnVnID09 IE5VTEwgfHwgbWlzc2luZ19ycG1fZW5saXN0IChkZWJ1ZykgPT0gMCkpCisrI2VuZGlmCS8qIEhB VkVfTElCUlBNICovCisrICAgICAgeworKwkvKiBXZSBkbyBub3QgY29sbGVjdCBhbmQgZmx1c2gg dGhlc2UgbWVzc2FnZXMgYXMgZWFjaCBzdWNoIG1lc3NhZ2UKKysJICAgYWxyZWFkeSByZXF1aXJl cyBpdHMgb3duIHNlcGFyYXRlIGxpbmVzLiAgKi8KKysKKysJZnByaW50Zl91bmZpbHRlcmVkIChn ZGJfc3RkbG9nLAorKwkJCSAgICBfKCJNaXNzaW5nIHNlcGFyYXRlIGRlYnVnaW5mbyBmb3IgJXNc biIpLCBiaW5hcnkpOworKyAgICAgICAgaWYgKGRlYnVnICE9IE5VTEwpCisrCSAgZnByaW50Zl91 bmZpbHRlcmVkIChnZGJfc3RkbG9nLCBfKCJUcnk6ICVzICVzXG4iKSwKKysjaWZkZWYgRE5GX0RF QlVHSU5GT19JTlNUQUxMCisrCQkJICAgICAgImRuZiIKKysjZWxzZQorKwkJCSAgICAgICJ5dW0i CisrI2VuZGlmCisrCQkJICAgICAgIiAtLWVuYWJsZXJlcG89JypkZWJ1ZyonIGluc3RhbGwiLCBk ZWJ1Zyk7CisrICAgICAgfQogK30KICsKICAvKiBTZWUgYnVpbGQtaWQuaC4gICovCkBAIC04ODQs OCArMTM2MCw5IEBAIGRpZmYgLS1naXQgYS9nZGIvYnVpbGQtaWQuYyBiL2dkYi9idWlsZC1pZC5j CiAgICBpZiAoYnVpbGRfaWQgIT0gTlVMTCkKICAgICAgewogICAgICAgIGlmIChzZXBhcmF0ZV9k ZWJ1Z19maWxlX2RlYnVnKQotIAlwcmludGZfdW5maWx0ZXJlZCAoXygiXG5Mb29raW5nIGZvciBz ZXBhcmF0ZSBkZWJ1ZyBpbmZvIChidWlsZC1pZCkgZm9yICIKLSAJCQkgICAgICIlc1xuIiksIG9i amZpbGVfbmFtZSAob2JqZmlsZSkpOworQEAgLTIxNCw4ICsxMzM4LDIxIEBAIGZpbmRfc2VwYXJh dGVfZGVidWdfZmlsZV9ieV9idWlsZGlkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyAJCQkg ICAgXygiXG5Mb29raW5nIGZvciBzZXBhcmF0ZSBkZWJ1ZyBpbmZvIChidWlsZC1pZCkgZm9yICIK KyAJCQkgICAgICAiJXNcbiIpLCBvYmpmaWxlX25hbWUgKG9iamZpbGUpKTsKICAKICsgICAgICBj aGFyICpidWlsZF9pZF9maWxlbmFtZV9jc3RyID0gTlVMTDsKICAgICAgICBnZGJfYmZkX3JlZl9w dHIgYWJmZCAoYnVpbGRfaWRfdG9fZGVidWdfYmZkIChidWlsZF9pZC0+c2l6ZSwKQEAgLTkwNiw3 ICsxMzgzLDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9idWlsZC1pZC5jIGIvZ2RiL2J1aWxkLWlkLmMK ICAgICAgICAvKiBQcmV2ZW50IGxvb3Bpbmcgb24gYSBzdHJpcHBlZCAuZGVidWcgZmlsZS4gICov CiAgICAgICAgaWYgKGFiZmQgIT0gTlVMTAogIAkgICYmIGZpbGVuYW1lX2NtcCAoYmZkX2dldF9m aWxlbmFtZSAoYWJmZC5nZXQgKCkpLAotQEAgLTIyMywzICs4OTcsMjIgQEAgZmluZF9zZXBhcmF0 ZV9kZWJ1Z19maWxlX2J5X2J1aWxkaWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorQEAgLTIy OCwzICsxMzY1LDIyIEBAIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZV9ieV9idWlsZGlkIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKICAKICAgIHJldHVybiBzdGQ6OnN0cmluZyAoKTsKICB9CkBA IC0xMDU2LDcgKzE1MzMsNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2NvcmVsb3cuYyBiL2dkYi9jb3Jl bG93LmMKIGRpZmYgLS1naXQgYS9nZGIvZG9jL2dkYi50ZXhpbmZvIGIvZ2RiL2RvYy9nZGIudGV4 aW5mbwogLS0tIGEvZ2RiL2RvYy9nZGIudGV4aW5mbwogKysrIGIvZ2RiL2RvYy9nZGIudGV4aW5m bwotQEAgLTIxNDE1LDYgKzIxNDE1LDI3IEBAIGluZm9ybWF0aW9uIGZpbGVzLgorQEAgLTIxNTI0 LDYgKzIxNTI0LDI3IEBAIGluZm9ybWF0aW9uIGZpbGVzLgogIAogIEBlbmQgdGFibGUKICAKQEAg LTEwODcsNyArMTU2NCw3IEBAIGRpZmYgLS1naXQgYS9nZGIvZG9jL2dkYi50ZXhpbmZvIGIvZ2Ri L2RvYy9nZGIudGV4aW5mbwogZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjIvaW5kZXgtY2FjaGUuYyBi L2dkYi9kd2FyZjIvaW5kZXgtY2FjaGUuYwogLS0tIGEvZ2RiL2R3YXJmMi9pbmRleC1jYWNoZS5j CiArKysgYi9nZGIvZHdhcmYyL2luZGV4LWNhY2hlLmMKLUBAIC05NSw3ICs5NSw3IEBAIGluZGV4 X2NhY2hlOjpzdG9yZSAoZHdhcmYyX3Blcl9vYmpmaWxlICpwZXJfb2JqZmlsZSkKK0BAIC05Nyw3 ICs5Nyw3IEBAIGluZGV4X2NhY2hlOjpzdG9yZSAoZHdhcmYyX3Blcl9vYmpmaWxlICpwZXJfb2Jq ZmlsZSkKICAgICAgcmV0dXJuOwogIAogICAgLyogR2V0IGJ1aWxkIGlkIG9mIG9iamZpbGUuICAq LwpAQCAtMTA5NSw4ICsxNTcyLDggQEAgZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjIvaW5kZXgtY2Fj aGUuYyBiL2dkYi9kd2FyZjIvaW5kZXgtY2FjaGUuYwogKyAgY29uc3QgYmZkX2J1aWxkX2lkICpi dWlsZF9pZCA9IGJ1aWxkX2lkX2JmZF9zaGRyX2dldCAob2JqLT5vYmZkKTsKICAgIGlmIChidWls ZF9pZCA9PSBudWxscHRyKQogICAgICB7Ci0gICAgICAgaWYgKGRlYnVnX2luZGV4X2NhY2hlKQot QEAgLTExMyw3ICsxMTMsOCBAQCBpbmRleF9jYWNoZTo6c3RvcmUgKGR3YXJmMl9wZXJfb2JqZmls ZSAqcGVyX29iamZpbGUpCisgICAgICAgaW5kZXhfY2FjaGVfZGVidWcgKCJvYmpmaWxlICVzIGhh cyBubyBidWlsZCBpZCIsCitAQCAtMTE0LDcgKzExNCw4IEBAIGluZGV4X2NhY2hlOjpzdG9yZSAo ZHdhcmYyX3Blcl9vYmpmaWxlICpwZXJfb2JqZmlsZSkKICAKICAgIGlmIChkd3ogIT0gbnVsbHB0 cikKICAgICAgewpAQCAtMTEwOSw3ICsxNTg2LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjIv aW5kZXgtY2FjaGUuYyBiL2dkYi9kd2FyZjIvaW5kZXgtY2FjaGUuYwogZGlmZiAtLWdpdCBhL2dk Yi9kd2FyZjIvcmVhZC5jIGIvZ2RiL2R3YXJmMi9yZWFkLmMKIC0tLSBhL2dkYi9kd2FyZjIvcmVh ZC5jCiArKysgYi9nZGIvZHdhcmYyL3JlYWQuYwotQEAgLTU0NDcsNyArNTQ0Nyw3IEBAIGdldF9n ZGJfaW5kZXhfY29udGVudHNfZnJvbV9zZWN0aW9uIChvYmpmaWxlICpvYmosIFQgKnNlY3Rpb25f b3duZXIpCitAQCAtNTQ3Niw3ICs1NDc2LDcgQEAgZ2V0X2dkYl9pbmRleF9jb250ZW50c19mcm9t X3NlY3Rpb24gKG9iamZpbGUgKm9iaiwgVCAqc2VjdGlvbl9vd25lcikKICBzdGF0aWMgZ2RiOjph cnJheV92aWV3PGNvbnN0IGdkYl9ieXRlPgogIGdldF9nZGJfaW5kZXhfY29udGVudHNfZnJvbV9j YWNoZSAob2JqZmlsZSAqb2JqLCBkd2FyZjJfcGVyX2JmZCAqZHdhcmYyX3Blcl9iZmQpCiAgewpA QCAtMTExOCw3ICsxNTk1LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjIvcmVhZC5jIGIvZ2Ri L2R3YXJmMi9yZWFkLmMKICAgIGlmIChidWlsZF9pZCA9PSBudWxscHRyKQogICAgICByZXR1cm4g e307CiAgCi1AQCAtNTQ2MCw3ICs1NDYwLDcgQEAgZ2V0X2dkYl9pbmRleF9jb250ZW50c19mcm9t X2NhY2hlIChvYmpmaWxlICpvYmosIGR3YXJmMl9wZXJfYmZkICpkd2FyZjJfcGVyX2JmZCkKK0BA IC01NDg5LDcgKzU0ODksNyBAQCBnZXRfZ2RiX2luZGV4X2NvbnRlbnRzX2Zyb21fY2FjaGUgKG9i amZpbGUgKm9iaiwgZHdhcmYyX3Blcl9iZmQgKmR3YXJmMl9wZXJfYmZkKQogIHN0YXRpYyBnZGI6 OmFycmF5X3ZpZXc8Y29uc3QgZ2RiX2J5dGU+CiAgZ2V0X2dkYl9pbmRleF9jb250ZW50c19mcm9t X2NhY2hlX2R3eiAob2JqZmlsZSAqb2JqLCBkd3pfZmlsZSAqZHd6KQogIHsKQEAgLTExMzAsNyAr MTYwNyw3IEBAIGRpZmYgLS1naXQgYS9nZGIvZHdhcmYyL3JlYWQuYyBiL2dkYi9kd2FyZjIvcmVh ZC5jCiBkaWZmIC0tZ2l0IGEvZ2RiL2VsZnJlYWQuYyBiL2dkYi9lbGZyZWFkLmMKIC0tLSBhL2dk Yi9lbGZyZWFkLmMKICsrKyBiL2dkYi9lbGZyZWFkLmMKLUBAIC0xMjcyLDcgKzEyNzIsOSBAQCBl bGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3ltZmlsZV9hZGRfZmxh Z3Mgc3ltZmlsZV9mbGFncykKK0BAIC0xMjcwLDcgKzEyNzAsOSBAQCBlbGZfc3ltZmlsZV9yZWFk IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3ltZmlsZV9hZGRfZmxhZ3Mgc3ltZmlsZV9mbGFn cykKICAJICAgJiYgb2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZSA9PSBOVUxMCiAgCSAg ICYmIG9iamZpbGUtPnNlcGFyYXRlX2RlYnVnX29iamZpbGVfYmFja2xpbmsgPT0gTlVMTCkKICAg ICAgewpAQCAtMTE0MSw3ICsxNjE4LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9lbGZyZWFkLmMgYi9n ZGIvZWxmcmVhZC5jCiAgCiAgICAgICAgaWYgKGRlYnVnZmlsZS5lbXB0eSAoKSkKICAJZGVidWdm aWxlID0gZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlX2J5X2RlYnVnbGluayAob2JqZmlsZSk7Ci1A QCAtMTI4Nyw3ICsxMjg5LDcgQEAgZWxmX3N5bWZpbGVfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUsIHN5bWZpbGVfYWRkX2ZsYWdzIHN5bWZpbGVfZmxhZ3MpCitAQCAtMTI4NSw3ICsxMjg3 LDcgQEAgZWxmX3N5bWZpbGVfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN5bWZpbGVf YWRkX2ZsYWdzIHN5bWZpbGVfZmxhZ3MpCiAgICAgICAgZWxzZQogIAl7CiAgCSAgaGFzX2R3YXJm MiA9IGZhbHNlOwpAQCAtMTE1MCw3ICsxNjI3LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9lbGZyZWFk LmMgYi9nZGIvZWxmcmVhZC5jCiAgCiAgCSAgaWYgKGJ1aWxkX2lkICE9IG51bGxwdHIpCiAgCSAg ICB7Ci1AQCAtMTMxMiw2ICsxMzE0LDEwIEBAIGVsZl9zeW1maWxlX3JlYWQgKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLCBzeW1maWxlX2FkZF9mbGFncyBzeW1maWxlX2ZsYWdzKQorQEAgLTEzMTAs NiArMTMxMiwxMCBAQCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwg c3ltZmlsZV9hZGRfZmxhZ3Mgc3ltZmlsZV9mbGFncykKICAJCSAgICAgIGhhc19kd2FyZjIgPSB0 cnVlOwogIAkJICAgIH0KICAJCX0KQEAgLTExNjQsNyArMTY0MSw3IEBAIGRpZmYgLS1naXQgYS9n ZGIvZWxmcmVhZC5jIGIvZ2RiL2VsZnJlYWQuYwogZGlmZiAtLWdpdCBhL2dkYi9leGVjLmMgYi9n ZGIvZXhlYy5jCiAtLS0gYS9nZGIvZXhlYy5jCiArKysgYi9nZGIvZXhlYy5jCi1AQCAtMjM3LDcg KzIzNyw3IEBAIHZhbGlkYXRlX2V4ZWNfZmlsZSAoaW50IGZyb21fdHR5KQorQEAgLTIzOCw3ICsy MzgsNyBAQCB2YWxpZGF0ZV9leGVjX2ZpbGUgKGludCBmcm9tX3R0eSkKICAgIGN1cnJlbnRfZXhl Y19maWxlID0gZ2V0X2V4ZWNfZmlsZSAoMCk7CiAgCiAgICBjb25zdCBiZmRfYnVpbGRfaWQgKmV4 ZWNfZmlsZV9idWlsZF9pZApAQCAtMTE3Myw3ICsxNjUwLDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9l eGVjLmMgYi9nZGIvZXhlYy5jCiAgICBpZiAoZXhlY19maWxlX2J1aWxkX2lkICE9IG51bGxwdHIp CiAgICAgIHsKICAgICAgICAvKiBQcmVwZW5kIHRoZSB0YXJnZXQgcHJlZml4LCB0byBmb3JjZSBn ZGJfYmZkX29wZW4gdG8gb3BlbiB0aGUKLUBAIC0yNTAsNyArMjUwLDcgQEAgdmFsaWRhdGVfZXhl Y19maWxlIChpbnQgZnJvbV90dHkpCitAQCAtMjUxLDcgKzI1MSw3IEBAIHZhbGlkYXRlX2V4ZWNf ZmlsZSAoaW50IGZyb21fdHR5KQogICAgICAgIGlmIChhYmZkICE9IG51bGxwdHIpCiAgCXsKICAJ ICBjb25zdCBiZmRfYnVpbGRfaWQgKnRhcmdldF9leGVjX2ZpbGVfYnVpbGRfaWQKQEAgLTExODUs NyArMTY2Miw3IEBAIGRpZmYgLS1naXQgYS9nZGIvZXhlYy5jIGIvZ2RiL2V4ZWMuYwogZGlmZiAt LWdpdCBhL2dkYi9vYmpmaWxlcy5oIGIvZ2RiL29iamZpbGVzLmgKIC0tLSBhL2dkYi9vYmpmaWxl cy5oCiArKysgYi9nZGIvb2JqZmlsZXMuaAotQEAgLTgxMiw2ICs4MTIsMTAgQEAgc3RydWN0IG9i amZpbGUKK0BAIC03NjksNiArNzY5LDEwIEBAIHN0cnVjdCBvYmpmaWxlCiAgICBib29sIHNraXBf aml0X3N5bWJvbF9sb29rdXAgPSBmYWxzZTsKICB9OwogIApAQCAtMTIyOCw3ICsxNzA1LDcgQEAg ZGlmZiAtLWdpdCBhL2dkYi9zb2xpYi1zdnI0LmMgYi9nZGIvc29saWItc3ZyNC5jCiAgCiAgc3Rh dGljIHN0cnVjdCBsaW5rX21hcF9vZmZzZXRzICpzdnI0X2ZldGNoX2xpbmtfbWFwX29mZnNldHMg KHZvaWQpOwogIHN0YXRpYyBpbnQgc3ZyNF9oYXZlX2xpbmtfbWFwX29mZnNldHMgKHZvaWQpOwot QEAgLTEzNDgsOSArMTM0OSw1MSBAQCBzdnI0X3JlYWRfc29fbGlzdCAoc3ZyNF9pbmZvICppbmZv LCBDT1JFX0FERFIgbG0sIENPUkVfQUREUiBwcmV2X2xtLAorQEAgLTEyNDgsOSArMTI0OSw1MSBA QCBzdnI0X3JlYWRfc29fbGlzdCAoc3ZyNF9pbmZvICppbmZvLCBDT1JFX0FERFIgbG0sIENPUkVf QUREUiBwcmV2X2xtLAogIAkgIGNvbnRpbnVlOwogIAl9CiAgCkBAIC0xMjg2LDcgKzE3NjMsNyBA QCBkaWZmIC0tZ2l0IGEvZ2RiL3NvbGliLXN2cjQuYyBiL2dkYi9zb2xpYi1zdnI0LmMKIGRpZmYg LS1naXQgYS9nZGIvc291cmNlLmMgYi9nZGIvc291cmNlLmMKIC0tLSBhL2dkYi9zb3VyY2UuYwog KysrIGIvZ2RiL3NvdXJjZS5jCi1AQCAtMTE3OCw3ICsxMTc4LDcgQEAgb3Blbl9zb3VyY2VfZmls ZSAoc3RydWN0IHN5bXRhYiAqcykKK0BAIC0xMTk5LDcgKzExOTksNyBAQCBvcGVuX3NvdXJjZV9m aWxlIChzdHJ1Y3Qgc3ltdGFiICpzKQogIAkgICAgICBzcmNwYXRoICs9IHMtPmZpbGVuYW1lOwog IAkgICAgfQogIApAQCAtMTM4MSw3ICsxODU4LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvbmV3LXVpLXBlbmRpbmctaW5wdXQuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIK IGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9s aWIvZ2RiLmV4cAogLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAogKysrIGIvZ2RiL3Rl c3RzdWl0ZS9saWIvZ2RiLmV4cAotQEAgLTEzMCw3ICsxMzAsOCBAQCBpZiAhW2luZm8gZXhpc3Rz IElOVEVSTkFMX0dEQkZMQUdTXSB7CitAQCAtMTQxLDcgKzE0MSw4IEBAIGlmICFbaW5mbyBleGlz dHMgSU5URVJOQUxfR0RCRkxBR1NdIHsKICAJCSAgICItbngiIFwKICAJCSAgICItZGF0YS1kaXJl Y3RvcnkgJEJVSUxEX0RBVEFfRElSRUNUT1JZIiBcCiAgCQkgICB7LWlleCAic2V0IGhlaWdodCAw In0gXApAQCAtMTM5MSw3ICsxODY4LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvbGli L2dkYi5leHAgYi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCiAgfQogIAogICMgVGhlIHZhcmlh YmxlIGdkYl9wcm9tcHQgaXMgYSByZWdleHAgd2hpY2ggbWF0Y2hlcyB0aGUgZ2RiIHByb21wdC4K LUBAIC0yMTMwLDYgKzIxMzEsMTcgQEAgcHJvYyBkZWZhdWx0X2dkYl9zdGFydCB7IH0geworQEAg LTIyMDAsNiArMjIwMSwxNyBAQCBwcm9jIGRlZmF1bHRfZ2RiX3N0YXJ0IHsgfSB7CiAgCX0KICAg ICAgfQogIAoKZGlmZiAtLWdpdCBhL2dkYi1jb250YWluZXItcmgtcGtnLnBhdGNoIGIvZ2RiLWNv bnRhaW5lci1yaC1wa2cucGF0Y2gKaW5kZXggOTI5ZmY3ZC4uNjE4YjYyMSAxMDA2NDQKLS0tIGEv Z2RiLWNvbnRhaW5lci1yaC1wa2cucGF0Y2gKKysrIGIvZ2RiLWNvbnRhaW5lci1yaC1wa2cucGF0 Y2gKQEAgLTksNyArOSw3IEBAIFN1YmplY3Q6IGdkYi1jb250YWluZXItcmgtcGtnLnBhdGNoCiBk aWZmIC0tZ2l0IGEvZ2RiL3JlbW90ZS5jIGIvZ2RiL3JlbW90ZS5jCiAtLS0gYS9nZGIvcmVtb3Rl LmMKICsrKyBiL2dkYi9yZW1vdGUuYwotQEAgLTE0MjkxLDcgKzE0MjkxLDE3IEBAIHJlbW90ZV90 YXJnZXQ6OnBpZF90b19leGVjX2ZpbGUgKGludCBwaWQpCitAQCAtMTQzNDMsNyArMTQzNDMsMTcg QEAgcmVtb3RlX3RhcmdldDo6cGlkX3RvX2V4ZWNfZmlsZSAoaW50IHBpZCkKICAgIGNoYXIgKmFu bmV4ID0gTlVMTDsKICAKICAgIGlmIChwYWNrZXRfc3VwcG9ydCAoUEFDS0VUX3FYZmVyX2V4ZWNf ZmlsZSkgIT0gUEFDS0VUX0VOQUJMRSkKCmRpZmYgLS1naXQgYS9nZGItY29yZS1vcGVuLXZkc28t d2FybmluZy5wYXRjaCBiL2dkYi1jb3JlLW9wZW4tdmRzby13YXJuaW5nLnBhdGNoCmluZGV4IGY1 OGQ4YmUuLmQ2ZjhlMDAgMTAwNjQ0Ci0tLSBhL2dkYi1jb3JlLW9wZW4tdmRzby13YXJuaW5nLnBh dGNoCisrKyBiL2dkYi1jb3JlLW9wZW4tdmRzby13YXJuaW5nLnBhdGNoCkBAIC0yNyw3ICsyNyw3 IEBAIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NvbGliLXN5bWJvbC5leHAg Yi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NvCiAgCiAgaWYgW2dldF9jb21waWxlcl9pbmZvXSB7 CiAgICAgIHJldHVybiAtMQotQEAgLTcxLDggKzcyLDI2IEBAIGdkYl90ZXN0ICJiciBmb28yIiBc CitAQCAtNzAsOCArNzEsMjYgQEAgZ2RiX3Rlc3QgImJyIGZvbzIiIFwKICAJICJCcmVha3BvaW50 Lio6IGZvbzIuIC4yIGxvY2F0aW9ucy4uKiIgXAogIAkgImZvbzIgaW4gbWRsaWIiCiAgCgpkaWZm IC0tZ2l0IGEvZ2RiLWZlZG9yYS1saWJuY3Vyc2Vzdy5wYXRjaCBiL2dkYi1mZWRvcmEtbGlibmN1 cnNlc3cucGF0Y2gKaW5kZXggZGYyMjA0NS4uNzQ1NmJmOCAxMDA2NDQKLS0tIGEvZ2RiLWZlZG9y YS1saWJuY3Vyc2Vzdy5wYXRjaAorKysgYi9nZGItZmVkb3JhLWxpYm5jdXJzZXN3LnBhdGNoCkBA IC0xMiw3ICsxMiw3IEBAIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/ aWQ9MTI3MDUzNAogZGlmZiAtLWdpdCBhL2dkYi9jb25maWd1cmUgYi9nZGIvY29uZmlndXJlCiAt LS0gYS9nZGIvY29uZmlndXJlCiArKysgYi9nZGIvY29uZmlndXJlCi1AQCAtOTU1Miw2ICs5NTUy LDcgQEAgaWYgdGVzdCB4IiRwcmVmZXJfY3Vyc2VzIiA9IHh5ZXM7IHRoZW4KK0BAIC05NTY3LDYg Kzk1NjcsNyBAQCBpZiB0ZXN0IHgiJHByZWZlcl9jdXJzZXMiID0geHllczsgdGhlbgogICAgIyBz ZWFyY2ggL3Vzci9sb2NhbC9pbmNsdWRlLCBpZiBuY3Vyc2VzIGlzIGluc3RhbGxlZCBpbiAvdXNy L2xvY2FsLiAgQQogICAgIyBkZWZhdWx0IGluc3RhbGxhdGlvbiBvZiBuY3Vyc2VzIG9uIGFscGhh Ki1kZWMtb3NmKiB3aWxsIGxlYWQgdG8gc3VjaAogICAgIyBhIHNpdHVhdGlvbi4KQEAgLTIwLDcg KzIwLDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9jb25maWd1cmUgYi9nZGIvY29uZmlndXJlCiAgICB7 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBsaWJy YXJ5IGNvbnRhaW5pbmcgd2FkZHN0ciIgPiY1CiAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGxp YnJhcnkgY29udGFpbmluZyB3YWRkc3RyLi4uICIgPiY2OyB9CiAgaWYgJHthY19jdl9zZWFyY2hf d2FkZHN0cis6fSBmYWxzZTsgdGhlbiA6Ci1AQCAtOTU3Niw3ICs5NTc3LDcgQEAgcmV0dXJuIHdh ZGRzdHIgKCk7CitAQCAtOTU5MSw3ICs5NTkyLDcgQEAgcmV0dXJuIHdhZGRzdHIgKCk7CiAgICBy ZXR1cm4gMDsKICB9CiAgX0FDRU9GCkBAIC0yOSw3ICsyOSw3IEBAIGRpZmYgLS1naXQgYS9nZGIv Y29uZmlndXJlIGIvZ2RiL2NvbmZpZ3VyZQogICAgaWYgdGVzdCAteiAiJGFjX2xpYiI7IHRoZW4K ICAgICAgYWNfcmVzPSJub25lIHJlcXVpcmVkIgogICAgZWxzZQotQEAgLTk2NTAsNiArOTY1MSw3 IEBAIGNhc2UgJGhvc3Rfb3MgaW4KK0BAIC05NjY1LDYgKzk2NjYsNyBAQCBjYXNlICRob3N0X29z IGluCiAgZXNhYwogIAogICMgVGhlc2UgYXJlIHRoZSBsaWJyYXJpZXMgY2hlY2tlZCBieSBSZWFk bGluZS4KQEAgLTM3LDcgKzM3LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9jb25maWd1cmUgYi9nZGIv Y29uZmlndXJlCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVj a2luZyBmb3IgbGlicmFyeSBjb250YWluaW5nIHRnZXRlbnQiID4mNQogICRhc19lY2hvX24gImNo ZWNraW5nIGZvciBsaWJyYXJ5IGNvbnRhaW5pbmcgdGdldGVudC4uLiAiID4mNjsgfQogIGlmICR7 YWNfY3Zfc2VhcmNoX3RnZXRlbnQrOn0gZmFsc2U7IHRoZW4gOgotQEAgLTk2NzQsNyArOTY3Niw3 IEBAIHJldHVybiB0Z2V0ZW50ICgpOworQEAgLTk2ODksNyArOTY5MSw3IEBAIHJldHVybiB0Z2V0 ZW50ICgpOwogICAgcmV0dXJuIDA7CiAgfQogIF9BQ0VPRgpAQCAtNDksNyArNDksNyBAQCBkaWZm IC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZSBiL2dkYi9jb25maWd1cmUKIGRpZmYgLS1naXQgYS9nZGIv Y29uZmlndXJlLmFjIGIvZ2RiL2NvbmZpZ3VyZS5hYwogLS0tIGEvZ2RiL2NvbmZpZ3VyZS5hYwog KysrIGIvZ2RiL2NvbmZpZ3VyZS5hYwotQEAgLTczNiw3ICs3MzYsOCBAQCBpZiB0ZXN0IHgiJHBy ZWZlcl9jdXJzZXMiID0geHllczsgdGhlbgorQEAgLTcxMyw3ICs3MTMsOCBAQCBpZiB0ZXN0IHgi JHByZWZlcl9jdXJzZXMiID0geHllczsgdGhlbgogICAgIyBzZWFyY2ggL3Vzci9sb2NhbC9pbmNs dWRlLCBpZiBuY3Vyc2VzIGlzIGluc3RhbGxlZCBpbiAvdXNyL2xvY2FsLiAgQQogICAgIyBkZWZh dWx0IGluc3RhbGxhdGlvbiBvZiBuY3Vyc2VzIG9uIGFscGhhKi1kZWMtb3NmKiB3aWxsIGxlYWQg dG8gc3VjaAogICAgIyBhIHNpdHVhdGlvbi4KQEAgLTU5LDcgKzU5LDcgQEAgZGlmZiAtLWdpdCBh L2dkYi9jb25maWd1cmUuYWMgYi9nZGIvY29uZmlndXJlLmFjCiAgCiAgICBpZiB0ZXN0ICIkYWNf Y3Zfc2VhcmNoX3dhZGRzdHIiICE9IG5vOyB0aGVuCiAgICAgIGN1cnNlc19mb3VuZD15ZXMKLUBA IC03NzgsNyArNzc5LDggQEAgY2FzZSAkaG9zdF9vcyBpbgorQEAgLTc1NSw3ICs3NTYsOCBAQCBj YXNlICRob3N0X29zIGluCiAgZXNhYwogIAogICMgVGhlc2UgYXJlIHRoZSBsaWJyYXJpZXMgY2hl Y2tlZCBieSBSZWFkbGluZS4KCmRpZmYgLS1naXQgYS9nZGItbGludXhfcGVyZi1idW5kbGUucGF0 Y2ggYi9nZGItbGludXhfcGVyZi1idW5kbGUucGF0Y2gKaW5kZXggNmUyNzUwMC4uYTJlNDQzZCAx MDA2NDQKLS0tIGEvZ2RiLWxpbnV4X3BlcmYtYnVuZGxlLnBhdGNoCisrKyBiL2dkYi1saW51eF9w ZXJmLWJ1bmRsZS5wYXRjaApAQCAtMjEzLDcgKzIxMyw3IEBAIGRpZmYgLS1naXQgYS9nZGIvbmF0 L2xpbnV4LWJ0cmFjZS5oIGIvZ2RiL25hdC9saW51eC1idHJhY2UuaAogZGlmZiAtLWdpdCBhL2dk YnN1cHBvcnQvY29tbW9uLm00IGIvZ2Ric3VwcG9ydC9jb21tb24ubTQKIC0tLSBhL2dkYnN1cHBv cnQvY29tbW9uLm00CiArKysgYi9nZGJzdXBwb3J0L2NvbW1vbi5tNAotQEAgLTE0MCw3ICsxNDAs NyBAQCBBQ19ERUZVTihbR0RCX0FDX0NPTU1PTl0sIFsKK0BAIC0xNTYsNyArMTU2LDcgQEAgQUNf REVGVU4oW0dEQl9BQ19DT01NT05dLCBbCiAgICAgIEFDX1BSRVBST0NfSUZFTFNFKFtBQ19MQU5H X1NPVVJDRShbWwogICAgI2luY2x1ZGUgPGxpbnV4L3BlcmZfZXZlbnQuaD4KICAgICNpZm5kZWYg UEVSRl9BVFRSX1NJWkVfVkVSNQoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6LTg1MzA3MS11cGRhdGUt bWFucGFnZXMucGF0Y2ggYi9nZGItcmhiei04NTMwNzEtdXBkYXRlLW1hbnBhZ2VzLnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Y2ViNjdlLi4wMDAwMDAwCi0tLSBhL2dkYi1y aGJ6LTg1MzA3MS11cGRhdGUtbWFucGFnZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNTgg KzAsMCBAQAotRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZy b206IEJydW5vIExhcnNlbiA8YmxhcnNlbkByZWRoYXQuY29tPgotRGF0ZTogVHVlLCA5IE5vdiAy MDIxIDE0OjA3OjI2IC0wMzAwCi1TdWJqZWN0OiBnZGItcmhiei04NTMwNzEtdXBkYXRlLW1hbnBh Z2VzLnBhdGNoCi0KLTs7IEJhY2twb3J0IG1hbnBhZ2UgdXBkYXRlCi0KLVtnZGIvZG9jXTogVXBk YXRlZCBtYW5wYWdlcyB0byBiZSBjb25zaXN0ZW50IHdpdGggaGVscAotCi1VcGRhdGVkIG1hbnBh Z2VzIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBoZWxwIGluZm9ybWF0aW9uIHByb3ZpZGVkIGJ5IHRo ZQotYmluYXJ5LiBUaGUgbWFpbiBjaGFuZ2VzIGFyZToKLQotKiBNYWtpbmcgYWxsIGxvbmctZm9y bSBvcHRpb25zIGhhdmUgJy0tJywgaW5zdGVhZCBvZiBhIHNpbmdsZSAnLSc7Ci0qIGFkZGVkIG1v c3Qgb2YgdGhlIG1pc3Npbmcgb3B0aW9ucyB0byB0aGUgbWFucGFnZTsKLSogcmVtb3ZlZCB0aGUg aW5mb3JtYXRpb24gYWJvdXQgdXNpbmcgJysnIGluc3RlYWQgb2YgJy0nLCBzaW5jZSBpdAotICBk b2Vzbid0IHNlZW0gdG8gYmUgc3VwcG9ydGVkIGFueW1vcmUuCi0KLVRoaXMgYWxzbyBmaXhlcyAy IHVwc3RyZWFtIGJ1Z3M6Ci0qIGh0dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19i dWcuY2dpP2lkPTIzOTY1OyBieSBhZGRpbmcKLS0tYXJncyB0byB0aGUgbWFucGFnZQotKiBodHRw czovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0xMDYxOTsgYnkgYWRk aW5nIHRoZQotZG91YmxlIGRhc2hlcwotCi1kaWZmIC0tZ2l0IGEvZ2RiL2RvYy9nZGIudGV4aW5m byBiL2dkYi9kb2MvZ2RiLnRleGluZm8KLS0tLSBhL2dkYi9kb2MvZ2RiLnRleGluZm8KLSsrKyBi L2dkYi9kb2MvZ2RiLnRleGluZm8KLUBAIC00NzAzMCwxNCArNDcwMzAsNyBAQCBzd2l0Y2ggKGRp ZS0+dGFnKQotIEBjIG1hbiB0aXRsZSBnZGIgVGhlIEdOVSBEZWJ1Z2dlcgotIAotIEBjIG1hbiBi ZWdpbiBTWU5PUFNJUyBnZGIKLS1nZGIgW0BvcHRpb257LWhlbHB9XSBbQG9wdGlvbnstbmh9XSBb QG9wdGlvbnstbnh9XSBbQG9wdGlvbnstcX1dCi0tW0BvcHRpb257LWJhdGNofV0gW0BvcHRpb257 LWNkPX1AdmFye2Rpcn1dIFtAb3B0aW9uey1mfV0KLS1bQG9wdGlvbnstYn1Ad3sgfUB2YXJ7YnBz fV0KLS0gICAgW0BvcHRpb257LXR0eT19QHZhcntkZXZ9XSBbQG9wdGlvbnstc30gQHZhcntzeW1m aWxlfV0KLS1bQG9wdGlvbnstZX1Ad3sgfUB2YXJ7cHJvZ31dIFtAb3B0aW9uey1zZX1Ad3sgfUB2 YXJ7cHJvZ31dCi0tW0BvcHRpb257LWN9QHd7IH1AdmFye2NvcmV9XSBbQG9wdGlvbnstcH1Ad3sg fUB2YXJ7cHJvY0lEfV0KLS0gICAgW0BvcHRpb257LXh9QHd7IH1AdmFye2NtZHN9XSBbQG9wdGlv bnstZH1Ad3sgfUB2YXJ7ZGlyfV0KLS1bQHZhcntwcm9nfXxAdmFye3Byb2d9IEB2YXJ7cHJvY0lE fXxAdmFye3Byb2d9IEB2YXJ7Y29yZX1dCi0rZ2RiIFtPUFRJT05TXSBbQHZhcntwcm9nfXxAdmFy e3Byb2d9IEB2YXJ7cHJvY0lEfXxAdmFye3Byb2d9IEB2YXJ7Y29yZX1dCi0gQGMgbWFuIGVuZAot IAotIEBjIG1hbiBiZWdpbiBERVNDUklQVElPTiBnZGIKLUBAIC00NzEwMSw4ICs0NzA5NCw4IEBA IEhlcmUgYXJlIHNvbWUgb2YgdGhlIG1vc3QgZnJlcXVlbnRseSBuZWVkZWQgQHZhbHVle0dEQk59 IGNvbW1hbmRzOgotIAotIEBjIHBvZDJtYW4gaGlnaGxpZ2h0cyB0aGUgcmlnaHQgaGFuZCBzaWRl IG9mIHRoZSBAaXRlbSBsaW5lcy4KLSBAdGFibGUgQGVudgotLUBpdGVtIGJyZWFrIFtAdmFye2Zp bGV9Ol1AdmFye2Z1bmN0aW9ufQotLVNldCBhIGJyZWFrcG9pbnQgYXQgQHZhcntmdW5jdGlvbn0g KGluIEB2YXJ7ZmlsZX0pLgotK0BpdGVtIGJyZWFrIFtAdmFye2ZpbGV9Ol1bQHZhcntmdW5jdGlv bn18QHZhcntsaW5lfV0KLStTZXQgYSBicmVha3BvaW50IGF0IEB2YXJ7ZnVuY3Rpb259IG9yIEB2 YXJ7bGluZX0gKGluIEB2YXJ7ZmlsZX0pLgotIAotIEBpdGVtIHJ1biBbQHZhcnthcmdsaXN0fV0K LSBTdGFydCB5b3VyIHByb2dyYW0gKHdpdGggQHZhcnthcmdsaXN0fSwgaWYgc3BlY2lmaWVkKS4K LUBAIC00NzE1MCw3MiArNDcxNDMsOTEgQEAgYXMgdGhlIEBjb2Rle2dkYn0gZW50cnkgaW4gdGhl IEBjb2Rle2luZm99IHByb2dyYW0uCi0gQW55IGFyZ3VtZW50cyBvdGhlciB0aGFuIG9wdGlvbnMg c3BlY2lmeSBhbiBleGVjdXRhYmxlCi0gZmlsZSBhbmQgY29yZSBmaWxlIChvciBwcm9jZXNzIElE KTsgdGhhdCBpcywgdGhlIGZpcnN0IGFyZ3VtZW50Ci0gZW5jb3VudGVyZWQgd2l0aCBubwotLWFz c29jaWF0ZWQgb3B0aW9uIGZsYWcgaXMgZXF1aXZhbGVudCB0byBhIEBvcHRpb257LXNlfSBvcHRp b24sIGFuZCB0aGUgc2Vjb25kLAotK2Fzc29jaWF0ZWQgb3B0aW9uIGZsYWcgaXMgZXF1aXZhbGVu dCB0byBhIEBvcHRpb257LS1zZX0gb3B0aW9uLCBhbmQgdGhlIHNlY29uZCwKLSBpZiBhbnksIGlz IGVxdWl2YWxlbnQgdG8gYSBAb3B0aW9uey1jfSBvcHRpb24gaWYgaXQncyB0aGUgbmFtZSBvZiBh IGZpbGUuCi0gTWFueSBvcHRpb25zIGhhdmUKLS1ib3RoIGxvbmcgYW5kIHNob3J0IGZvcm1zOyBi b3RoIGFyZSBzaG93biBoZXJlLiAgVGhlIGxvbmcgZm9ybXMgYXJlIGFsc28KLStib3RoIGxvbmcg YW5kIGFiYnJldmlhdGVkIGZvcm1zOyBib3RoIGFyZSBzaG93biBoZXJlLiAgVGhlIGxvbmcgZm9y bXMgYXJlIGFsc28KLSByZWNvZ25pemVkIGlmIHlvdSB0cnVuY2F0ZSB0aGVtLCBzbyBsb25nIGFz IGVub3VnaCBvZiB0aGUgb3B0aW9uIGlzCi0tcHJlc2VudCB0byBiZSB1bmFtYmlndW91cy4gIChJ ZiB5b3UgcHJlZmVyLCB5b3UgY2FuIGZsYWcgb3B0aW9uCi0tYXJndW1lbnRzIHdpdGggQG9wdGlv bnsrfSByYXRoZXIgdGhhbiBAb3B0aW9uey19LCB0aG91Z2ggd2UgaWxsdXN0cmF0ZSB0aGUKLS1t b3JlIHVzdWFsIGNvbnZlbnRpb24uKQotK3ByZXNlbnQgdG8gYmUgdW5hbWJpZ3VvdXMuCi0rCi0r VGhlIGFiYnJldmlhdGVkIGZvcm1zIGFyZSBzaG93biBoZXJlIHdpdGggQHNhbXB7LX0gYW5kIGxv bmcgZm9ybXMgYXJlIHNob3duCi0rd2l0aCBAc2FtcHstLX0gdG8gcmVmbGVjdCBob3cgdGhleSBh cmUgc2hvd24gaW4gQG9wdGlvbnstLWhlbHB9LiBIb3dldmVyLAotK0B2YWx1ZXtHREJOfSByZWNv Z25pemVzIGFsbCBvZiB0aGUgZm9sbG93aW5nIGNvbnZlbnRpb25zIGZvciBtb3N0IG9wdGlvbnM6 Ci0rCi0rQHRhYmxlIEBjb2RlCi0rQGl0ZW0gLS1vcHRpb249QHZhcnt2YWx1ZX0KLStAaXRlbSAt LW9wdGlvbiBAdmFye3ZhbHVlfQotK0BpdGVtIC1vcHRpb249QHZhcnt2YWx1ZX0KLStAaXRlbSAt b3B0aW9uIEB2YXJ7dmFsdWV9Ci0rQGl0ZW0gLS1vPUB2YXJ7dmFsdWV9Ci0rQGl0ZW0gLS1vIEB2 YXJ7dmFsdWV9Ci0rQGl0ZW0gLW89QHZhcnt2YWx1ZX0KLStAaXRlbSAtbyBAdmFye3ZhbHVlfQot K0BlbmQgdGFibGUKLSAKLSBBbGwgdGhlIG9wdGlvbnMgYW5kIGNvbW1hbmQgbGluZSBhcmd1bWVu dHMgeW91IGdpdmUgYXJlIHByb2Nlc3NlZAotIGluIHNlcXVlbnRpYWwgb3JkZXIuICBUaGUgb3Jk ZXIgbWFrZXMgYSBkaWZmZXJlbmNlIHdoZW4gdGhlIEBvcHRpb257LXh9Ci0gb3B0aW9uIGlzIHVz ZWQuCi0gCi0gQHRhYmxlIEBlbnYKLS1AaXRlbSAtaGVscAotK0BpdGVtIC0taGVscAotIEBpdGVt eCAtaAotIExpc3QgYWxsIG9wdGlvbnMsIHdpdGggYnJpZWYgZXhwbGFuYXRpb25zLgotIAotLUBp dGVtIC1zeW1ib2xzPUB2YXJ7ZmlsZX0KLStAaXRlbSAtLXN5bWJvbHM9QHZhcntmaWxlfQotIEBp dGVteCAtcyBAdmFye2ZpbGV9Ci0tUmVhZCBzeW1ib2wgdGFibGUgZnJvbSBmaWxlIEB2YXJ7Zmls ZX0uCi0rUmVhZCBzeW1ib2wgdGFibGUgZnJvbSBAdmFye2ZpbGV9LgotIAotLUBpdGVtIC13cml0 ZQotK0BpdGVtIC0td3JpdGUKLSBFbmFibGUgd3JpdGluZyBpbnRvIGV4ZWN1dGFibGUgYW5kIGNv cmUgZmlsZXMuCi0gCi0tQGl0ZW0gLWV4ZWM9QHZhcntmaWxlfQotK0BpdGVtIC0tZXhlYz1AdmFy e2ZpbGV9Ci0gQGl0ZW14IC1lIEB2YXJ7ZmlsZX0KLS1Vc2UgZmlsZSBAdmFye2ZpbGV9IGFzIHRo ZSBleGVjdXRhYmxlIGZpbGUgdG8gZXhlY3V0ZSB3aGVuCi0rVXNlIEB2YXJ7ZmlsZX0gYXMgdGhl IGV4ZWN1dGFibGUgZmlsZSB0byBleGVjdXRlIHdoZW4KLSBhcHByb3ByaWF0ZSwgYW5kIGZvciBl eGFtaW5pbmcgcHVyZSBkYXRhIGluIGNvbmp1bmN0aW9uIHdpdGggYSBjb3JlCi0gZHVtcC4KLSAK LS1AaXRlbSAtc2U9QHZhcntmaWxlfQotLVJlYWQgc3ltYm9sIHRhYmxlIGZyb20gZmlsZSBAdmFy e2ZpbGV9IGFuZCB1c2UgaXQgYXMgdGhlIGV4ZWN1dGFibGUKLStAaXRlbSAtLXNlPUB2YXJ7Zmls ZX0KLStSZWFkIHN5bWJvbCB0YWJsZSBmcm9tIEB2YXJ7ZmlsZX0gYW5kIHVzZSBpdCBhcyB0aGUg ZXhlY3V0YWJsZQotIGZpbGUuCi0gCi0tQGl0ZW0gLWNvcmU9QHZhcntmaWxlfQotK0BpdGVtIC0t Y29yZT1AdmFye2ZpbGV9Ci0gQGl0ZW14IC1jIEB2YXJ7ZmlsZX0KLS1Vc2UgZmlsZSBAdmFye2Zp bGV9IGFzIGEgY29yZSBkdW1wIHRvIGV4YW1pbmUuCi0rVXNlIEB2YXJ7ZmlsZX0gYXMgYSBjb3Jl IGR1bXAgdG8gZXhhbWluZS4KLSAKLS1AaXRlbSAtY29tbWFuZD1AdmFye2ZpbGV9Ci0rQGl0ZW0g LS1jb21tYW5kPUB2YXJ7ZmlsZX0KLSBAaXRlbXggLXggQHZhcntmaWxlfQotLUV4ZWN1dGUgQHZh bHVle0dEQk59IGNvbW1hbmRzIGZyb20gZmlsZSBAdmFye2ZpbGV9LgotK0V4ZWN1dGUgQHZhbHVl e0dEQk59IGNvbW1hbmRzIGZyb20gQHZhcntmaWxlfS4KLSAKLStAaXRlbSAtLWV2YWwtY29tbWFu ZD1AdmFye2NvbW1hbmR9Ci0gQGl0ZW0gLWV4IEB2YXJ7Y29tbWFuZH0KLSBFeGVjdXRlIGdpdmVu IEB2YWx1ZXtHREJOfSBAdmFye2NvbW1hbmR9LgotIAotLUBpdGVtIC1kaXJlY3Rvcnk9QHZhcntk aXJlY3Rvcnl9Ci0rQGl0ZW0gLS1pbml0LWV2YWwtY29tbWFuZD1AdmFye2NvbW1hbmR9Ci0rQGl0 ZW0gLWlleAotK0V4ZWN1dGUgQHZhbHVle0dEQk59IEB2YXJ7Y29tbWFuZH0gYmVmb3JlIGxvYWRp bmcgdGhlIGluZmVyaW9yLgotKwotK0BpdGVtIC0tZGlyZWN0b3J5PUB2YXJ7ZGlyZWN0b3J5fQot IEBpdGVteCAtZCBAdmFye2RpcmVjdG9yeX0KLSBBZGQgQHZhcntkaXJlY3Rvcnl9IHRvIHRoZSBw YXRoIHRvIHNlYXJjaCBmb3Igc291cmNlIGZpbGVzLgotIAotLUBpdGVtIC1uaAotK0BpdGVtIC0t bmgKLSBEbyBub3QgZXhlY3V0ZSBjb21tYW5kcyBmcm9tIEBmaWxle34vLmNvbmZpZy9nZGIvZ2Ri aW5pdH0sCi0gQGZpbGV7fi8uZ2RiaW5pdH0sIEBmaWxle34vLmNvbmZpZy9nZGIvZ2RiZWFybHlp bml0fSwgb3IKLSBAZmlsZXt+Ly5nZGJlYXJseWluaXR9Ci0gCi0tQGl0ZW0gLW54Ci0rQGl0ZW0g LS1ueAotIEBpdGVteCAtbgotIERvIG5vdCBleGVjdXRlIGNvbW1hbmRzIGZyb20gYW55IEBmaWxl ey5nZGJpbml0fSBvcgotIEBmaWxley5nZGJlYXJseWluaXR9IGluaXRpYWxpemF0aW9uIGZpbGVz LgotIAotLUBpdGVtIC1xdWlldAotK0BpdGVtIC0tcXVpZXQKLStAaXRlbSAtLXNpbGVudAotIEBp dGVteCAtcQotIGBgUXVpZXQnJy4gIERvIG5vdCBwcmludCB0aGUgaW50cm9kdWN0b3J5IGFuZCBj b3B5cmlnaHQgbWVzc2FnZXMuICBUaGVzZQotIG1lc3NhZ2VzIGFyZSBhbHNvIHN1cHByZXNzZWQg aW4gYmF0Y2ggbW9kZS4KLSAKLS1AaXRlbSAtYmF0Y2gKLStAaXRlbSAtLWJhdGNoCi0gUnVuIGlu IGJhdGNoIG1vZGUuICBFeGl0IHdpdGggc3RhdHVzIEBjb2RlezB9IGFmdGVyIHByb2Nlc3Npbmcg YWxsIHRoZSBjb21tYW5kCi0gZmlsZXMgc3BlY2lmaWVkIHdpdGggQG9wdGlvbnsteH0gKGFuZCBA ZmlsZXsuZ2RiaW5pdH0sIGlmIG5vdCBpbmhpYml0ZWQpLgotIEV4aXQgd2l0aCBub256ZXJvIHN0 YXR1cyBpZiBhbiBlcnJvciBvY2N1cnMgaW4gZXhlY3V0aW5nIHRoZSBAdmFsdWV7R0RCTn0KLUBA IC00NzIzMywxMSArNDcyNDUsNzEgQEAgUHJvZ3JhbSBleGl0ZWQgbm9ybWFsbHkuCi0gKHdoaWNo IGlzIG9yZGluYXJpbHkgaXNzdWVkIHdoZW5ldmVyIGEgcHJvZ3JhbSBydW5uaW5nIHVuZGVyIEB2 YWx1ZXtHREJOfSBjb250cm9sCi0gdGVybWluYXRlcykgaXMgbm90IGlzc3VlZCB3aGVuIHJ1bm5p bmcgaW4gYmF0Y2ggbW9kZS4KLSAKLS1AaXRlbSAtY2Q9QHZhcntkaXJlY3Rvcnl9Ci0rQGl0ZW0g LS1iYXRjaC1zaWxlbnQKLStSdW4gaW4gYmF0Y2ggbW9kZSwganVzdCBsaWtlIEBvcHRpb257LS1i YXRjaH0sIGJ1dCB0b3RhbGx5IHNpbGVudC4gIEFsbCBAdmFsdWV7R0RCTn0KLStvdXRwdXQgaXMg c3VwcmVzc2VkIChzdGRlcnIgaXMgdW5hZmZlY3RlZCkuICBUaGlzIGlzIG11Y2ggcXVpZXRlciB0 aGFuCi0rQG9wdGlvbnstLXNpbGVudH0gYW5kIHdvdWxkIGJlIHVzZWxlc3MgZm9yIGFuIGludGVy YWN0aXZlIHNlc3Npb24uCi0rCi0rVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIHdoZW4gdXNp bmcgdGFyZ2V0cyB0aGF0IGdpdmUgQHNhbXB7TG9hZGluZyBzZWN0aW9ufQotK21lc3NhZ2VzLCBm b3IgZXhhbXBsZS4KLSsKLStOb3RlIHRoYXQgdGFyZ2V0cyB0aGF0IGdpdmUgdGhlaXIgb3V0cHV0 IHZpYSBAdmFsdWV7R0RCTn0sIGFzIG9wcG9zZWQgdG8gd3JpdGluZwotK2RpcmVjdGx5IHRvIEBj b2Rle3N0ZG91dH0sIHdpbGwgYWxzbyBiZSBtYWRlIHNpbGVudC4KLSsKLStAaXRlbSAtLWFyZ3Mg QHZhcntwcm9nfSBbQHZhcnthcmdsaXN0fV0KLStDaGFuZ2UgaW50ZXJwcmV0YXRpb24gb2YgY29t bWFuZCBsaW5lIHNvIHRoYXQgYXJndW1lbnRzIGZvbGxvd2luZyB0aGlzCi0rb3B0aW9uIGFyZSBw YXNzZWQgYXMgYXJndW1lbnRzIHRvIHRoZSBpbmZlcmlvci4gIEFzIGFuIGV4YW1wbGUsIHRha2UK LSt0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0rCi0rQHNtYWxsZXhhbXBsZQotK2dkYiAuL2Eub3V0 IC1xCi0rQGVuZCBzbWFsbGV4YW1wbGUKLSsKLStAbm9pbmRlbnQKLStJdCB3b3VsZCBzdGFydCBA dmFsdWV7R0RCTn0gd2l0aCBAb3B0aW9uey1xfSwgbm90IHByaW50aW5nIHRoZSBpbnRyb2R1Y3Rv cnkgbWVzc2FnZS4gIE9uCi0rdGhlIG90aGVyIGhhbmQsIHVzaW5nOgotKwotK0BzbWFsbGV4YW1w bGUKLStnZGIgLS1hcmdzIC4vYS5vdXQgLXEKLStAZW5kIHNtYWxsZXhhbXBsZQotKwotK0Bub2lu ZGVudAotK3N0YXJ0cyBAdmFsdWV7R0RCTn0gd2l0aCB0aGUgaW50cm9kdWN0b3J5IG1lc3NhZ2Us IGFuZCBwYXNzZXMgdGhlIG9wdGlvbiB0byB0aGUgaW5mZXJpb3IuCi0rCi0rQGl0ZW0gLS1waWQ9 QHZhcntwaWR9Ci0rQXR0YWNoIEB2YWx1ZXtHREJOfSB0byBhbiBhbHJlYWR5IHJ1bm5pbmcgcHJv Z3JhbSwgd2l0aCB0aGUgUElEIEB2YXJ7cGlkfS4KLSsKLStAaXRlbSAtLXR1aQotK09wZW4gdGhl IHRlcm1pbmFsIHVzZXIgaW50ZXJmYWNlLgotKwotK0BpdGVtIC0tcmVhZG5vdwotK1JlYWQgYWxs IHN5bWJvbHMgZnJvbSB0aGUgZ2l2ZW4gc3ltZmlsZSBvbiB0aGUgZmlyc3QgYWNjZXNzLgotKwot K0BpdGVtIC0tcmVhZG5ldmVyCi0rRG8gbm90IHJlYWQgc3ltYm9sIGZpbGVzLgotKwotK0BpdGVt IC0tZGJ4Ci0rUnVuIGluIERCWCBjb21wYXRpYmlsaXR5IG1vZGUuCi0rCi0rQGl0ZW0gLS1yZXR1 cm4tY2hpbGQtcmVzdWx0Ci0rQHZhbHVle0dEQk59J3MgZXhpdCBjb2RlIHdpbGwgYmUgdGhlIHNh bWUgYXMgdGhlIGNoaWxkJ3MgZXhpdCBjb2RlLgotKwotK0BpdGVtIC0tY29uZmlndXJhdGlvbgot K1ByaW50IGRldGFpbHMgYWJvdXQgR0RCIGNvbmZpZ3VyYXRpb24gYW5kIHRoZW4gZXhpdC4KLSsK LStAaXRlbSAtLXZlcnNpb24KLStQcmludCB2ZXJzaW9uIGluZm9ybWF0aW9uIGFuZCB0aGVuIGV4 aXQuCi0rCi0rQGl0ZW0gLS1jZD1AdmFye2RpcmVjdG9yeX0KLSBSdW4gQHZhbHVle0dEQk59IHVz aW5nIEB2YXJ7ZGlyZWN0b3J5fSBhcyBpdHMgd29ya2luZyBkaXJlY3RvcnksCi0gaW5zdGVhZCBv ZiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCi0gCi0tQGl0ZW0gLWZ1bGxuYW1lCi0rQGl0ZW0gLS1k YXRhLWRpcmVjdG9yeT1AdmFye2RpcmVjdG9yeX0KLStAaXRlbSAtRAotK1J1biBAdmFsdWV7R0RC Tn0gdXNpbmcgQHZhcntkaXJlY3Rvcnl9IGFzIGl0cyBkYXRhIGRpcmVjdG9yeS4gIFRoZSBkYXRh Ci0rZGlyZWN0b3J5IGlzIHdoZXJlIEB2YWx1ZXtHREJOfSBzZWFyY2hlcyBmb3IgaXRzIGF1eGls aWFyeSBmaWxlcy4KLSsKLStAaXRlbSAtLWZ1bGxuYW1lCi0gQGl0ZW14IC1mCi0gRW1hY3Mgc2V0 cyB0aGlzIG9wdGlvbiB3aGVuIGl0IHJ1bnMgQHZhbHVle0dEQk59IGFzIGEgc3VicHJvY2Vzcy4g IEl0IHRlbGxzCi0gQHZhbHVle0dEQk59IHRvIG91dHB1dCB0aGUgZnVsbCBmaWxlIG5hbWUgYW5k IGxpbmUgbnVtYmVyIGluIGEgc3RhbmRhcmQsCi1AQCAtNDcyNDgsMTEgKzQ3MzIwLDE0IEBAIGFu ZCBjaGFyYWN0ZXIgcG9zaXRpb24gc2VwYXJhdGVkIGJ5IGNvbG9ucywgYW5kIGEgbmV3bGluZS4g IFRoZQotIEVtYWNzLXRvLUB2YWx1ZXtHREJOfSBpbnRlcmZhY2UgcHJvZ3JhbSB1c2VzIHRoZSB0 d28gQHNhbXB7XDAzMn0KLSBjaGFyYWN0ZXJzIGFzIGEgc2lnbmFsIHRvIGRpc3BsYXkgdGhlIHNv dXJjZSBjb2RlIGZvciB0aGUgZnJhbWUuCi0gCi0tQGl0ZW0gLWIgQHZhcnticHN9Ci0rQGl0ZW0g LWIgQHZhcntiYXVkcmF0ZX0KLSBTZXQgdGhlIGxpbmUgc3BlZWQgKGJhdWQgcmF0ZSBvciBiaXRz IHBlciBzZWNvbmQpIG9mIGFueSBzZXJpYWwKLSBpbnRlcmZhY2UgdXNlZCBieSBAdmFsdWV7R0RC Tn0gZm9yIHJlbW90ZSBkZWJ1Z2dpbmcuCi0gCi0tQGl0ZW0gLXR0eT1AdmFye2RldmljZX0KLStA aXRlbSAtbCBAdmFye3RpbWVvdXR9Ci0rU2V0IHRpbWVvdXQsIGluIHNlY29uZHMsIGZvciByZW1v dGUgZGVidWdnaW5nLgotKwotK0BpdGVtIC0tdHR5PUB2YXJ7ZGV2aWNlfQotIFJ1biB1c2luZyBA dmFye2RldmljZX0gZm9yIHlvdXIgcHJvZ3JhbSdzIHN0YW5kYXJkIGlucHV0IGFuZCBvdXRwdXQu Ci0gQGVuZCB0YWJsZQotIEBjIG1hbiBlbmQKCmRpZmYgLS1naXQgYS9nZGItcmhiejE5NzY4ODct ZmllbGQtbG9jYXRpb24ta2luZC5wYXRjaCBiL2dkYi1yaGJ6MTk3Njg4Ny1maWVsZC1sb2NhdGlv bi1raW5kLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMGY5YWNjLi4wMDAw MDAwCi0tLSBhL2dkYi1yaGJ6MTk3Njg4Ny1maWVsZC1sb2NhdGlvbi1raW5kLnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9BbGV4YW5kcmE9MjBIPUMzPUExamtvdj1D Mz1BMT89IDxhaGFqa292YUByZWRoYXQuY29tPgotRGF0ZTogV2VkLCAyOSBTZXAgMjAyMSAxMDo1 ODo1MCArMDIwMAotU3ViamVjdDogZ2RiLXJoYnoxOTc2ODg3LWZpZWxkLWxvY2F0aW9uLWtpbmQu cGF0Y2gKLQotOztCYWNrcG9ydCB1cHN0cmVhbSBwYXRjaCB3aGljaCBmaXhlcyBpbnRlcm5hbC1l cnJvcjogVW5leHBlY3RlZAotOzt0eXBlIGZpZWxkIGxvY2F0aW9uIGtpbmQgKFJIQlogMTk3Njg4 NykuCi0KLWdkYnR5cGVzLmM6IEFkZCB0aGUgY2FzZSBmb3IgRklFTERfTE9DX0tJTkRfRFdBUkZf QkxPQ0sKLQotVGhlIGNhc2UgZm9yIEZJRUxEX0xPQ19LSU5EX0RXQVJGX0JMT0NLIHdhcyBtaXNz aW5nIGZvcgotc3dpdGNoIFRZUEVfRklFTERfTE9DX0tJTkQuIFRoYXMgY2F1c2VkIGFuIGludGVy bmFsLWVycm9yCi11bmRlciBzb21lIGNpcmN1bXN0YW5jZXMuCi0KLUZpeGVzIGJ1ZyAyODAzMC4K LQotZGlmZiAtLWdpdCBhL2dkYi9nZGJ0eXBlcy5jIGIvZ2RiL2dkYnR5cGVzLmMKLS0tLSBhL2dk Yi9nZGJ0eXBlcy5jCi0rKysgYi9nZGIvZ2RidHlwZXMuYwotQEAgLTU1NzEsNiArNTU3MSwxMCBA QCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAJCQkJICB4 c3RyZHVwIChUWVBFX0ZJRUxEX1NUQVRJQ19QSFlTTkFNRSAodHlwZSwKLSAJCQkJCQkJCSAgICAg ICBpKSkpOwotIAkgICAgICBicmVhazsKLSsgICAgICAgICAgICBjYXNlIEZJRUxEX0xPQ19LSU5E X0RXQVJGX0JMT0NLOgotKyAgICAgICAgICAgICAgU0VUX0ZJRUxEX0RXQVJGX0JMT0NLIChuZXdf dHlwZS0+ZmllbGQgKGkpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU WVBFX0ZJRUxEX0RXQVJGX0JMT0NLICh0eXBlLCBpKSk7Ci0rICAgICAgICAgICAgICBicmVhazsK LSAJICAgIGRlZmF1bHQ6Ci0gCSAgICAgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5F X18sCi0gCQkJICAgICAgXygiVW5leHBlY3RlZCB0eXBlIGZpZWxkIGxvY2F0aW9uIGtpbmQ6ICVk IiksCgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYnoyMDEyOTc2LXBhcGVyLW92ZXItZm9ydHJhbi1sZXgt cHJvYmxlbXMucGF0Y2ggYi9nZGItcmhiejIwMTI5NzYtcGFwZXItb3Zlci1mb3J0cmFuLWxleC1w cm9ibGVtcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDMzZjUxZC4uMDAw MDAwMAotLS0gYS9nZGItcmhiejIwMTI5NzYtcGFwZXItb3Zlci1mb3J0cmFuLWxleC1wcm9ibGVt cy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4NSArMCwwIEBACi1Gcm9tIEZFRE9SQV9QQVRD SEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2V2aW4gQnVldHRuZXIgPGtldmlu YkByZWRoYXQuY29tPgotRGF0ZTogTW9uLCAxMSBPY3QgMjAyMSAxMToyMjowNCAtMDcwMAotU3Vi amVjdDogZ2RiLXJoYnoyMDEyOTc2LXBhcGVyLW92ZXItZm9ydHJhbi1sZXgtcHJvYmxlbXMucGF0 Y2gKLQotOzsgQmFja3BvcnQgZ2RiLmZvcnRyYW4gdGVzdHN1aXRlIGNoYW5nZXMgaW4gb3JkZXIg dG8gYXZvaWQgRm9ydHJhbgotOzsgbGV4aWNhbCBhbmFseXplciBidWcuCi0KLVtnZGIvdGVzdHN1 aXRlXSBGaXggRkFJTCBpbiBnZGIubWkvbWktdmFyLWNoaWxkLWYuZXhwCi0KLVdoZW4gcnVubmlu ZyB0ZXN0LWNhc2UgZ2RiLm1pL21pLXZhci1jaGlsZC1mLmV4cCBvbiBvcGVuU1VTRSBUdW1ibGV3 ZWVkCi0od2l0aCBnbGliYyAyLjM0KSBJIHJ1biBpbnRvOgotLi4uCi0oZ2RiKSBeTQotUEFTUzog Z2RiLm1pL21pLXZhci1jaGlsZC1mLmV4cDogbWkgcnVudG8gcHJvZ19hcnJheQotRXhwZWN0aW5n OiBeKC12YXItY3JlYXRlIGFycmF5IFwqIGFycmF5W15NCi1dKyk/KFxeZG9uZSxuYW1lPSJhcnJh eSIsbnVtY2hpbGQ9IlswLTldKyIsdmFsdWU9Ii4qIix0eXBlPS4qLGhhc19tb3JlPSIwIlteTQot XStbKF1nZGJbKV0gXk0KLVsgXSopCi0tdmFyLWNyZWF0ZSBhcnJheSAqIGFycmF5Xk0KLSYiQXR0 ZW1wdCB0byB1c2UgYSB0eXBlIG5hbWUgYXMgYW4gZXhwcmVzc2lvbi5cbiJeTQotXmVycm9yLG1z Zz0iLXZhci1jcmVhdGU6IHVuYWJsZSB0byBjcmVhdGUgdmFyaWFibGUgb2JqZWN0Il5NCi0oZ2Ri KSBeTQotRkFJTDogZ2RiLm1pL21pLXZhci1jaGlsZC1mLmV4cDogY3JlYXRlIGxvY2FsIHZhcmlh YmxlIGFycmF5ICh1bmV4cGVjdGVkIG91dHB1dCkKLS4uLgotCi1UaGUgcHJvYmxlbSBpcyB0aGF0 IHRoZSBuYW1lIGFycmF5IGlzIHVzZWQgYm90aDoKLS0gYXMgdGhlIG5hbWUgZm9yIGEgbG9jYWwg dmFyaWFibGUKLS0gYXMgdGhlIG5hbWUgb2YgYSB0eXBlIGluIGdsaWJjLCBpbiBmaWxlIG1hbGxv Yy9keW5hcnJheS1za2VsZXRvbi5jLCBhcyBpbmNsdWRlZAotICBieSBuc3MvbnNzX2ZpbGVzL2Zp bGVzLWhvc3RzLmMuCi0KLUZpeCB0aGlzIGJ5IGlnbm9yaW5nIHRoZSBzaGFyZWQgbGliIHN5bWJv bHMuCi0KLUxpa2V3aXNlIGluIGEgY291cGxlIG9mIG90aGVyIGZvcnRyYW4gdGVzdHMuCi0KLVRl c3RlZCBvbiB4ODZfNjQtbGludXguCi0KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL2FsbG9jYXRlZC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2FsbG9jYXRl ZC5leHAKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYWxsb2NhdGVkLmV4cAotKysr IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9hbGxvY2F0ZWQuZXhwCi1AQCAtMjUsMTEgKzI1 LDE3IEBAIGlmIHtbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0Zmls ZX0gJHtzcmNmaWxlfSBcCi0gICAgIHJldHVybiAtMQotIH0KLSAKLSsjIEF2b2lkIHNoYXJlZCBs aWIgc3ltYm9scy4KLStnZGJfdGVzdF9ub19vdXRwdXQgInNldCBhdXRvLXNvbGliLWFkZCBvZmYi Ci0rCi0gaWYgIVtmb3J0cmFuX3J1bnRvX21haW5dIHsKLSAgICAgdW50ZXN0ZWQgImNvdWxkIG5v dCBydW4gdG8gbWFpbiIKLSAgICAgcmV0dXJuIC0xCi0gfQotIAotKyMgQXZvaWQgbGliYyBzeW1i b2xzLCBpbiBwYXJ0aWN1bGFyIHRoZSAnYXJyYXknIHR5cGUuCi0rZ2RiX3Rlc3Rfbm9fb3V0cHV0 ICJub3NoYXJlZGxpYnJhcnkiCi0rCi0gIyBTZXQgYWxsIHRoZSBicmVha3BvaW50cy4KLSBmb3Ig eyBzZXQgaSAxIH0geyAkaSA8IDYgfSB7IGluY3IgaSB9IHsKLSAgICAgZ2RiX2JyZWFrcG9pbnQg W2dkYl9nZXRfbGluZV9udW1iZXIgIkJyZWFrcG9pbnQgJGkiXQotZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJyYXktc2xpY2VzLWJhZC5leHAgYi9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy1iYWQuZXhwCi0tLS0gYS9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL2FycmF5LXNsaWNlcy1iYWQuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL2FycmF5LXNsaWNlcy1iYWQuZXhwCi1AQCAtMjUsMTEgKzI1LDE3IEBAIGlmIHtbcHJl cGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxlfSBc Ci0gICAgIHJldHVybiAtMQotIH0KLSAKLSsjIEF2b2lkIHNoYXJlZCBsaWIgc3ltYm9scy4KLStn ZGJfdGVzdF9ub19vdXRwdXQgInNldCBhdXRvLXNvbGliLWFkZCBvZmYiCi0rCi0gaWYgIVtmb3J0 cmFuX3J1bnRvX21haW5dIHsKLSAgICAgdW50ZXN0ZWQgImNvdWxkIG5vdCBydW4gdG8gbWFpbiIK LSAgICAgcmV0dXJuIC0xCi0gfQotIAotKyMgQXZvaWQgbGliYyBzeW1ib2xzLCBpbiBwYXJ0aWN1 bGFyIHRoZSAnYXJyYXknIHR5cGUuCi0rZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJub3NoYXJlZGxpYnJh cnkiCi0rCi0gIyBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiRGlzcGxheSBN ZXNzYWdlIEJyZWFrcG9pbnQiXQotIGdkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVy ICJGaXJzdCBCcmVha3BvaW50Il0KLSBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJl ciAiU2Vjb25kIEJyZWFrcG9pbnQiXQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vYXJyYXktc2xpY2VzLXN1Yi1zbGljZXMuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9hcnJheS1zbGljZXMtc3ViLXNsaWNlcy5leHAKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vYXJyYXktc2xpY2VzLXN1Yi1zbGljZXMuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy1zdWItc2xpY2VzLmV4cAotQEAgLTI1LDExICsyNSwx NyBAQCBpZiB7W3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9 ICR7c3JjZmlsZX0gXAotICAgICByZXR1cm4gLTEKLSB9Ci0gCi0rIyBBdm9pZCBzaGFyZWQgbGli IHN5bWJvbHMuCi0rZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgYXV0by1zb2xpYi1hZGQgb2ZmIgot KwotIGlmICFbZm9ydHJhbl9ydW50b19tYWluXSB7Ci0gICAgIHVudGVzdGVkICJjb3VsZCBub3Qg cnVuIHRvIG1haW4iCi0gICAgIHJldHVybiAtMQotIH0KLSAKLSsjIEF2b2lkIGxpYmMgc3ltYm9s cywgaW4gcGFydGljdWxhciB0aGUgJ2FycmF5JyB0eXBlLgotK2dkYl90ZXN0X25vX291dHB1dCAi bm9zaGFyZWRsaWJyYXJ5IgotKwotICMgZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1i ZXIgIkRpc3BsYXkgTWVzc2FnZSBCcmVha3BvaW50Il0KLSBnZGJfYnJlYWtwb2ludCBbZ2RiX2dl dF9saW5lX251bWJlciAiU3RvcCBIZXJlIl0KLSBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5l X251bWJlciAiRmluYWwgQnJlYWtwb2ludCJdCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9hcnJheS1zbGljZXMuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9h cnJheS1zbGljZXMuZXhwCi0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2FycmF5LXNs aWNlcy5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJyYXktc2xpY2VzLmV4 cAotQEAgLTU1LDExICs1NSwxNyBAQCBwcm9jIHJ1bl90ZXN0IHsgcmVwYWNrIH0gewotIAotICAg ICBjbGVhbl9yZXN0YXJ0ICR7YmluZmlsZX0KLSAKLSsgICAgIyBBdm9pZCBzaGFyZWQgbGliIHN5 bWJvbHMuCi0rICAgIGdkYl90ZXN0X25vX291dHB1dCAic2V0IGF1dG8tc29saWItYWRkIG9mZiIK LSsKLSAgICAgaWYgIVtmb3J0cmFuX3J1bnRvX21haW5dIHsKLSAJdW50ZXN0ZWQgImNvdWxkIG5v dCBydW4gdG8gbWFpbiIKLSAJcmV0dXJuIC0xCi0gICAgIH0KLSAKLSsgICAgIyBBdm9pZCBsaWJj IHN5bWJvbHMsIGluIHBhcnRpY3VsYXIgdGhlICdhcnJheScgdHlwZS4KLSsgICAgZ2RiX3Rlc3Rf bm9fb3V0cHV0ICJub3NoYXJlZGxpYnJhcnkiCi0rCi0gICAgIGdkYl90ZXN0X25vX291dHB1dCAi c2V0IGZvcnRyYW4gcmVwYWNrLWFycmF5LXNsaWNlcyAkcmVwYWNrIgotIAotICAgICAjIGdkYl9i cmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJEaXNwbGF5IE1lc3NhZ2UgQnJlYWtwb2lu dCJdCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9sYm91bmQtdWJvdW5k LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbGJvdW5kLXVib3VuZC5leHAKLS0tLSBh L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbGJvdW5kLXVib3VuZC5leHAKLSsrKyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbGJvdW5kLXVib3VuZC5leHAKLUBAIC0yNSwxMiArMjUsMTcg QEAgaWYge1twcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAk e3NyY2ZpbGV9IFwKLSAgICAgcmV0dXJuIC0xCi0gfQotIAotKyMgQXZvaWQgc2hhcmVkIGxpYiBz eW1ib2xzLgotK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGF1dG8tc29saWItYWRkIG9mZiIKLSAK LSBpZiAhW2ZvcnRyYW5fcnVudG9fbWFpbl0gewotICAgICB1bnRlc3RlZCAiY291bGQgbm90IHJ1 biB0byBtYWluIgotICAgICByZXR1cm4gLTEKLSB9Ci0gCi0rIyBBdm9pZCBsaWJjIHN5bWJvbHMs IGluIHBhcnRpY3VsYXIgdGhlICdhcnJheScgdHlwZS4KLStnZGJfdGVzdF9ub19vdXRwdXQgIm5v c2hhcmVkbGlicmFyeSIKLSsKLSBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAi VGVzdCBCcmVha3BvaW50Il0KLSBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAi RmluYWwgQnJlYWtwb2ludCJdCi0gCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9zdWJhcnJheS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1YmFycmF5LmV4 cAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJhcnJheS5leHAKLSsrKyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3ViYXJyYXkuZXhwCi1AQCAtMjcsMTYgKzI3LDE3IEBA IGlmIHtbcHJlcGFyZV9mb3JfdGVzdGluZyAiZmFpbGVkIHRvIHByZXBhcmUiICR0ZXN0ZmlsZSAk c3JjZmlsZSB7ZGVidWcgZjkwfV19IHsKLSAgICAgcmV0dXJuIC0xCi0gfQotIAotLWdkYl9leGl0 Ci0tZ2RiX3N0YXJ0Ci0tZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0tZ2Ri X2xvYWQgJHtiaW5maWxlfQotKyMgQXZvaWQgc2hhcmVkIGxpYiBzeW1ib2xzLgotK2dkYl90ZXN0 X25vX291dHB1dCAic2V0IGF1dG8tc29saWItYWRkIG9mZiIKLSAKLSBpZiAhW2ZvcnRyYW5fcnVu dG9fbWFpbl0gdGhlbiB7Ci0gICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIG1haW4iCi0gICAg IGNvbnRpbnVlCi0gfQotIAotKyMgQXZvaWQgbGliYyBzeW1ib2xzLCBpbiBwYXJ0aWN1bGFyIHRo ZSAnYXJyYXknIHR5cGUuCi0rZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJub3NoYXJlZGxpYnJhcnkiCi0r Ci0gIyBUcnkgdG8gc2V0IGJyZWFrcG9pbnQgYXQgdGhlIGxhc3Qgd3JpdGUgc3RhdGVtZW50Lgot IAotIHNldCBicF9sb2NhdGlvbiBbZ2RiX2dldF9saW5lX251bWJlciAic3RyKDopIl0KLWRpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS12YXItY2hpbGQtZi5leHAgYi9nZGIvdGVz dHN1aXRlL2dkYi5taS9taS12YXItY2hpbGQtZi5leHAKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2Ri Lm1pL21pLXZhci1jaGlsZC1mLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktdmFy LWNoaWxkLWYuZXhwCi1AQCAtMzYsOCArMzYsMTQgQEAgaWYge1tnZGJfY29tcGlsZSAiJHtzcmNk aXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgXAotIG1pX2dkYl9yZWluaXRp YWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotIG1pX2dkYl9sb2FkICR7YmluZmlsZX0KLSAKLSsj IEF2b2lkIHNoYXJlZCBsaWIgc3ltYm9scy4KLSttaV9nZGJfdGVzdCAiLWdkYi1zZXQgYXV0by1z b2xpYi1hZGQgb2ZmIiAiXFxeZG9uZSIKLSsKLSBtaV9ydW50byBwcm9nX2FycmF5Ci0gCi0rIyBB dm9pZCBsaWJjIHN5bWJvbHMsIGluIHBhcnRpY3VsYXIgdGhlICdhcnJheScgdHlwZS4KLSttaV9n ZGJfdGVzdCAibm9zaGFyZWRsaWJyYXJ5IiAiLipcXF5kb25lIgotKwotIG1pX2NyZWF0ZV92YXJv YmogImFycmF5IiAiYXJyYXkiICJjcmVhdGUgbG9jYWwgdmFyaWFibGUgYXJyYXkiCi0gCi0gCgpk aWZmIC0tZ2l0IGEvZ2RiLXJoYnoyMDIyMTc3LWRwcmludGYtMS5wYXRjaCBiL2dkYi1yaGJ6MjAy MjE3Ny1kcHJpbnRmLTEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5MTIy ODkuLjAwMDAwMDAKLS0tIGEvZ2RiLXJoYnoyMDIyMTc3LWRwcmludGYtMS5wYXRjaAorKysgL2Rl di9udWxsCkBAIC0xLDMxNSArMCwwIEBACi1Gcm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQotRnJvbTogS2V2aW4gQnVldHRuZXIgPGtldmluYkByZWRoYXQuY29tPgot RGF0ZTogV2VkLCAxMCBOb3YgMjAyMSAxODo1MjoyMiAtMDcwMAotU3ViamVjdDogZ2RiLXJoYnoy MDIyMTc3LWRwcmludGYtMS5wYXRjaAotCi07OyBCYWNrcG9ydCBmaXggZm9yIGRwcmludGYgYnVn IChSSCBCWiAyMDIyMTc3KS4KLQotRml4IFBSIDI4MzA4IC0gZHByaW50ZiBicmVha3BvaW50cyBu b3Qgd29ya2luZyB3aGVuIHJ1biBmcm9tIHNjcmlwdAotCi1UaGlzIGNvbW1pdCBmaXhlcyBCdWcg MjgzMDgsIHRpdGxlZCAiU3RyYW5nZSBpbnRlcmFjdGlvbnMgd2l0aAotZHByaW50ZiBhbmQgYnJl YWsvY29tbWFuZHMiOgotCi1CdWc6IGh0dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hv d19idWcuY2dpP2lkPTI4MzA4Ci0KLVNpbmNlIGNyZWF0aW5nIHRoYXQgYnVnIHJlcG9ydCwgSSd2 ZSBmb3VuZCBhIHNvbWV3aGF0IHNpbXBsZXIgd2F5IG9mCi1yZXByb2R1Y2luZyB0aGUgcHJvYmxl bS4gIEkndmUgZW5jYXBzdWxhdGVkIGl0IGludG8gdGhlIEdEQiB0ZXN0IGNhc2UKLXdoaWNoIEkn dmUgY3JlYXRlZCBhbG9uZyB3aXRoIHRoaXMgYnVnIGZpeC4gIFRoZSBuYW1lIG9mIHRoZSBuZXcg dGVzdAotaXMgZ2RiLmJhc2UvZHByaW50Zi1leGVjdXRpb24teC1zY3JpcHQuZXhwLCBJJ2xsIGRl bW9uc3RyYXRlIHRoZQotcHJvYmxlbSB1c2luZyB0aGlzIHRlc3QgY2FzZSwgdGhvdWdoIGZvciBi cmV2aXR5LCBJJ3ZlIHBsYWNlZCBhbGwKLXJlbGV2YW50IGZpbGVzIGluIHRoZSBzYW1lIGRpcmVj dG9yeSBhbmQgaGF2ZSByZW5hbWVkIHRoZSBmaWxlcyB0byBhbGwKLXN0YXJ0IHdpdGggJ2RwLWJ1 ZycgaW5zdGVhZCBvZiAnZHByaW50Zi1leGVjdXRpb24teC1zY3JpcHQnLgotCi1UaGUgc2NyaXB0 IGZpbGUsIG5hbWVkIGRwLWJ1Zy5nZGIsIGNvbnNpc3RzIG9mIHRoZSBmb2xsb3dpbmcgY29tbWFu ZHM6Ci0KLWRwcmludGYgaW5jcmVtZW50LCAiZHByaW50ZiBpbiBpbmNyZW1lbnQoKSwgdmk9JWRc biIsIHZpCi1icmVhayBpbmNfdmkKLWNvbW1hbmRzCi0gIGNvbnRpbnVlCi1lbmQKLXJ1bgotCi1O b3RlIHRoYXQgdGhlIGZpbmFsIGNvbW1hbmQgaW4gdGhpcyBzY3JpcHQgaXMgJ3J1bicuICBXaGVu ICdydW4nIGlzCi1pbnN0ZWFkIGlzc3VlZCBpbnRlcmFjdGl2ZWx5LCB0aGUgIGJ1ZyBkb2VzIG5v dCBvY2N1ci4gIFNvLCBsZXQncyBsb29rCi1hdCB0aGUgaW50ZXJhY3RpdmUgY2FzZSBmaXJzdCBp biBvcmRlciB0byBzZWUgdGhlIGNvcnJlY3QvZXhwZWN0ZWQKLW91dHB1dDoKLQotJCBnZGIgLXEg LXggZHAtYnVnLmdkYiBkcC1idWcKLS4uLiBlbGlkaW5nIGJ1Z2d5IG91dHB1dCB3aGljaCBJJ2xs IGRpc2N1c3MgbGF0ZXIgLi4uCi0oZ2RiKSBydW4KLVN0YXJ0aW5nIHByb2dyYW06IC9tZXNxdWl0 ZTIvc291cmNld2FyZS1naXQvZjM0LW1hc3Rlci9ibGQvZ2RiL3RtcC9kcC1idWcKLXZpPTAKLWRw cmludGYgaW4gaW5jcmVtZW50KCksIHZpPTAKLQotQnJlYWtwb2ludCAyLCBpbmNfdmkgKCkgYXQg ZHByaW50Zi1leGVjdXRpb24teC1zY3JpcHQuYzoyNgotMjYJaW4gZHByaW50Zi1leGVjdXRpb24t eC1zY3JpcHQuYwotdmk9MQotZHByaW50ZiBpbiBpbmNyZW1lbnQoKSwgdmk9MQotCi1CcmVha3Bv aW50IDIsIGluY192aSAoKSBhdCBkcHJpbnRmLWV4ZWN1dGlvbi14LXNjcmlwdC5jOjI2Ci0yNglp biBkcHJpbnRmLWV4ZWN1dGlvbi14LXNjcmlwdC5jCi12aT0yCi1kcHJpbnRmIGluIGluY3JlbWVu dCgpLCB2aT0yCi0KLUJyZWFrcG9pbnQgMiwgaW5jX3ZpICgpIGF0IGRwcmludGYtZXhlY3V0aW9u LXgtc2NyaXB0LmM6MjYKLTI2CWluIGRwcmludGYtZXhlY3V0aW9uLXgtc2NyaXB0LmMKLXZpPTMK LVtJbmZlcmlvciAxIChwcm9jZXNzIDE1MzkyMTApIGV4aXRlZCBub3JtYWxseV0KLQotSW4gdGhp cyBydW4sIGluIHdoaWNoICdydW4nIHdhcyBpc3N1ZWQgZnJvbSB0aGUgZ2RiIHByb21wdCAoaW5z dGVhZAotb2YgYXQgdGhlIGVuZCBvZiB0aGUgc2NyaXB0KSwgdGhlcmUgYXJlIHRocmVlIGRwcmlu dGYgbWVzc2FnZXMgYWxvbmcKLXdpdGggdGhyZWUgJ0JyZWFrcG9pbnQgMicgbWVzc2FnZXMuICBU aGlzIGlzIHRoZSBjb3JyZWN0IG91dHB1dC4KLQotTm93IGxldCdzIGxvb2sgYXQgdGhlIG91dHB1 dCB0aGF0IEkgc25pcHBlZCBhYm92ZTsgdGhpcyBpcyB0aGUgb3V0cHV0Ci13aGVuICdydW4nIGlz IGlzc3VlZCBmcm9tIHRoZSBzY3JpcHQgbG9hZGVkIHZpYSBHREIncyAteCBzd2l0Y2g6Ci0KLSQg Z2RiIC1xIC14IGRwLWJ1Zy5nZGIgZHAtYnVnCi1SZWFkaW5nIHN5bWJvbHMgZnJvbSBkcC1idWcu Li4KLURwcmludGYgMSBhdCAweDQwMTE2ZTogZmlsZSBkcHJpbnRmLWV4ZWN1dGlvbi14LXNjcmlw dC5jLCBsaW5lIDM4LgotQnJlYWtwb2ludCAyIGF0IDB4NDAxMTNhOiBmaWxlIGRwcmludGYtZXhl Y3V0aW9uLXgtc2NyaXB0LmMsIGxpbmUgMjYuCi12aT0wCi1kcHJpbnRmIGluIGluY3JlbWVudCgp LCB2aT0wCi0KLUJyZWFrcG9pbnQgMiwgaW5jX3ZpICgpIGF0IGRwcmludGYtZXhlY3V0aW9uLXgt c2NyaXB0LmM6MjYKLTI2CWRwcmludGYtZXhlY3V0aW9uLXgtc2NyaXB0LmM6IE5vIHN1Y2ggZmls ZSBvciBkaXJlY3RvcnkuCi12aT0xCi0KLUJyZWFrcG9pbnQgMiwgaW5jX3ZpICgpIGF0IGRwcmlu dGYtZXhlY3V0aW9uLXgtc2NyaXB0LmM6MjYKLTI2CWluIGRwcmludGYtZXhlY3V0aW9uLXgtc2Ny aXB0LmMKLXZpPTIKLQotQnJlYWtwb2ludCAyLCBpbmNfdmkgKCkgYXQgZHByaW50Zi1leGVjdXRp b24teC1zY3JpcHQuYzoyNgotMjYJaW4gZHByaW50Zi1leGVjdXRpb24teC1zY3JpcHQuYwotdmk9 MwotW0luZmVyaW9yIDEgKHByb2Nlc3MgMTUzOTE3NSkgZXhpdGVkIG5vcm1hbGx5XQotCi1JbiB0 aGUgb3V0cHV0IHNob3duIGFib3ZlLCBvbmx5IHRoZSBmaXJzdCBkcHJpbnRmIG1lc3NhZ2UgaXMg cHJpbnRlZC4KLVRoZSAybmQgYW5kIDNyZCBkcHJpbnRmIG1lc3NhZ2VzIGFyZSBtaXNzaW5nISAg SG93ZXZlciwgYWxsIHRocmVlCi0nQnJlYWtwb2ludCAyLi4uJyBtZXNzYWdlcyBhcmUgc3RpbGwg cHJpbnRlZC4KLQotV2h5IGRvZXMgdGhpcyBoYXBwZW4/Ci0KLWJwc3RhdF9kb19hY3Rpb25zXzEo KSBpbiBnZGIvYnJlYWtwb2ludC5jIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcKLWNvbW1lbnQgYW5k IGNvZGUgbmVhciB0aGUgc3RhcnQgb2YgdGhlIGZ1bmN0aW9uOgotCi0gIC8qIEF2b2lkIGVuZGxl c3MgcmVjdXJzaW9uIGlmIGEgYHNvdXJjZScgY29tbWFuZCBpcyBjb250YWluZWQKLSAgICAgaW4g YnMtPmNvbW1hbmRzLiAgKi8KLSAgaWYgKGV4ZWN1dGluZ19icmVha3BvaW50X2NvbW1hbmRzKQot ICAgIHJldHVybiAwOwotCi0gIHNjb3BlZF9yZXN0b3JlIHNhdmVfZXhlY3V0aW5nCi0gICAgPSBt YWtlX3Njb3BlZF9yZXN0b3JlICgmZXhlY3V0aW5nX2JyZWFrcG9pbnRfY29tbWFuZHMsIDEpOwot Ci1BbHNvLCBhcyBkZXNjcmliZWQgYnkgdGhpcyBjb21tZW50IHByaW9yIHRvIHRoZSAnYXN5bmMn IGZpZWxkCi1pbiAnc3RydWN0IHVpJyBpbiB0b3AuaCwgdGhlIG1haW4gVUkgc3RhcnRzIG9mZiBp biBzeW5jIG1vZGUKLXdoZW4gcHJvY2Vzc2luZyBjb21tYW5kIGxpbmUgYXJndW1lbnRzOgotCi0g IC8qIFRydWUgaWYgdGhlIFVJIGlzIGluIGFzeW5jIG1vZGUsIGZhbHNlIGlmIGluIHN5bmMgbW9k ZS4gIElmIGluCi0gICAgIHN5bmMgbW9kZSwgYSBzeW5jaHJvbm91cyBleGVjdXRpb24gY29tbWFu ZCAoZS5nLCAibmV4dCIpIGRvZXMgbm90Ci0gICAgIHJldHVybiB1bnRpbCB0aGUgY29tbWFuZCBp cyBmaW5pc2hlZC4gIElmIGluIGFzeW5jIG1vZGUsIHRoZW4KLSAgICAgcnVubmluZyBhIHN5bmNo cm9ub3VzIGNvbW1hbmQgcmV0dXJucyByaWdodCBhZnRlciByZXN1bWluZyB0aGUKLSAgICAgdGFy Z2V0LiAgV2FpdGluZyBmb3IgdGhlIGNvbW1hbmQncyBjb21wbGV0aW9uIGlzIGxhdGVyIGRvbmUg b24KLSAgICAgdGhlIHRvcCBldmVudCBsb29wLiAgRm9yIHRoZSBtYWluIFVJLCB0aGlzIHN0YXJ0 cyBvdXQgZGlzYWJsZWQsCi0gICAgIHVudGlsIGFsbCB0aGUgZXhwbGljaXQgY29tbWFuZCBsaW5l IGFyZ3VtZW50cyAoZS5nLiwgYGdkYiAtZXgKLSAgICAgInN0YXJ0IiAtZXggIm5leHQiJykgYXJl IHByb2Nlc3NlZC4gICovCi0KLVRoaXMgY29tYmluYXRpb24gb2YgdGhpbmdzLCB0aGUgc3RhdGUg b2YgdGhlIHN0YXRpYyBnbG9iYWwKLSdleGVjdXRpbmdfYnJlYWtwb2ludF9jb21tYW5kcycgcGx1 cyB0aGUgc3RhdGUgb2YgdGhlIGFzeW5jCi1maWVsZCBpbiB0aGUgbWFpbiBVSSBjYXVzZXMgdGhp cyBiZWhhdmlvci4KLQotVGhpcyBpcyBhIGJhY2t0cmFjZSBhZnRlciBoaXR0aW5nIHRoZSBkcHJp bnRmIGJyZWFrcG9pbnQgZm9yCi10aGUgc2Vjb25kIHRpbWUgd2hlbiBkb2luZyAncnVuJyBmcm9t IHRoZSBzY3JpcHQgZmlsZSwgaS5lLgotbm9uLWludGVyYWN0aXZlbHk6Ci0KLVRocmVhZCAxICJn ZGIiIGhpdCBCcmVha3BvaW50IDMsIGJwc3RhdF9kb19hY3Rpb25zXzEgKGJzcD0weDdmZmZmZmZm YzJiOCkKLSAgICBhdCAvaXJvbndvb2QxL3NvdXJjZXdhcmUtZ2l0L2YzNC1tYXN0ZXIvYmxkLy4u Ly4uL3dvcmt0cmVlLW1hc3Rlci9nZGIvYnJlYWtwb2ludC5jOjQ0MzEKLTQ0MzEJICBpZiAoZXhl Y3V0aW5nX2JyZWFrcG9pbnRfY29tbWFuZHMpCi0KLSAjMCAgYnBzdGF0X2RvX2FjdGlvbnNfMSAo YnNwPTB4N2ZmZmZmZmZjMmI4KQotICAgICBhdCBnZGIvYnJlYWtwb2ludC5jOjQ0MzEKLSAjMSAg MHgwMDAwMDAwMDAwNGQ4YmM2IGluIGRwcmludGZfYWZ0ZXJfY29uZGl0aW9uX3RydWUgKGJzPTB4 MTUzODA5MCkKLSAgICAgYXQgZ2RiL2JyZWFrcG9pbnQuYzoxMzA0OAotICMyICAweDAwMDAwMDAw MDA0YzVjYWEgaW4gYnBzdGF0X3N0b3Bfc3RhdHVzIChhc3BhY2U9MHgxMTZkYmMwLCBicF9hZGRy PTB4NDAxMTZlLCB0aHJlYWQ9MHgxMzdmNDUwLCB3cz0weDdmZmZmZmZmYzcxOCwKLSAgICAgc3Rv cF9jaGFpbj0weDE1MzgwOTApIGF0IGdkYi9icmVha3BvaW50LmM6NTQ5OAotICMzICAweDAwMDAw MDAwMDA3NjhkOTggaW4gaGFuZGxlX3NpZ25hbF9zdG9wIChlY3M9MHg3ZmZmZmZmZmM2ZjApCi0g ICAgIGF0IGdkYi9pbmZydW4uYzo2MTcyCi0gIzQgIDB4MDAwMDAwMDAwMDc2NzhkMyBpbiBoYW5k bGVfaW5mZXJpb3JfZXZlbnQgKGVjcz0weDdmZmZmZmZmYzZmMCkKLSAgICAgYXQgZ2RiL2luZnJ1 bi5jOjU2NjIKLSAjNSAgMHgwMDAwMDAwMDAwNzYzY2Q1IGluIGZldGNoX2luZmVyaW9yX2V2ZW50 ICgpCi0gICAgIGF0IGdkYi9pbmZydW4uYzo0MDYwCi0gIzYgIDB4MDAwMDAwMDAwMDc0NmQ3ZCBp biBpbmZlcmlvcl9ldmVudF9oYW5kbGVyIChldmVudF90eXBlPUlORl9SRUdfRVZFTlQpCi0gICAg IGF0IGdkYi9pbmYtbG9vcC5jOjQxCi0gIzcgIDB4MDAwMDAwMDAwMDdhNzAyZiBpbiBoYW5kbGVf dGFyZ2V0X2V2ZW50IChlcnJvcj0wLCBjbGllbnRfZGF0YT0weDApCi0gICAgIGF0IGdkYi9saW51 eC1uYXQuYzo0MjA3Ci0gIzggIDB4MDAwMDAwMDAwMGI4Y2Q2ZSBpbiBnZGJfd2FpdF9mb3JfZXZl bnQgKGJsb2NrPWJsb2NrQGVudHJ5PTApCi0gICAgIGF0IGdkYnN1cHBvcnQvZXZlbnQtbG9vcC5j Yzo3MDEKLSAjOSAgMHgwMDAwMDAwMDAwYjhkMDMyIGluIGdkYl93YWl0X2Zvcl9ldmVudCAoYmxv Y2s9MCkKLSAgICAgYXQgZ2Ric3VwcG9ydC9ldmVudC1sb29wLmNjOjU5NwotICMxMCBnZGJfZG9f b25lX2V2ZW50ICgpIGF0IGdkYnN1cHBvcnQvZXZlbnQtbG9vcC5jYzoyMTIKLSAjMTEgMHgwMDAw MDAwMDAwOWQxOWI2IGluIHdhaXRfc3luY19jb21tYW5kX2RvbmUgKCkKLSAgICAgYXQgZ2RiL3Rv cC5jOjUyOAotICMxMiAweDAwMDAwMDAwMDA5ZDFhM2YgaW4gbWF5YmVfd2FpdF9zeW5jX2NvbW1h bmRfZG9uZSAod2FzX3N5bmM9MCkKLSAgICAgYXQgZ2RiL3RvcC5jOjU0NQotICMxMyAweDAwMDAw MDAwMDA5ZDIwMzMgaW4gZXhlY3V0ZV9jb21tYW5kIChwPTB4N2ZmZmZmZmZjYjE4ICIiLCBmcm9t X3R0eT0wKQotICAgICBhdCBnZGIvdG9wLmM6Njc2Ci0gIzE0IDB4MDAwMDAwMDAwMDU2MGQ1YiBp biBleGVjdXRlX2NvbnRyb2xfY29tbWFuZF8xIChjbWQ9MHgxM2I5YmIwLCBmcm9tX3R0eT0wKQot ICAgICBhdCBnZGIvY2xpL2NsaS1zY3JpcHQuYzo1NDcKLSAjMTUgMHgwMDAwMDAwMDAwNTYxMzRh IGluIGV4ZWN1dGVfY29udHJvbF9jb21tYW5kIChjbWQ9MHgxM2I5YmIwLCBmcm9tX3R0eT0wKQot ICAgICBhdCBnZGIvY2xpL2NsaS1zY3JpcHQuYzo3MTcKLSAjMTYgMHgwMDAwMDAwMDAwNGMzYmJl IGluIGJwc3RhdF9kb19hY3Rpb25zXzEgKGJzcD0weDEzN2Y1MzApCi0gICAgIGF0IGdkYi9icmVh a3BvaW50LmM6NDQ2OQotICMxNyAweDAwMDAwMDAwMDA0YzNkNDAgaW4gYnBzdGF0X2RvX2FjdGlv bnMgKCkKLSAgICAgYXQgZ2RiL2JyZWFrcG9pbnQuYzo0NTMzCi0gIzE4IDB4MDAwMDAwMDAwMDZh NDczYSBpbiBjb21tYW5kX2hhbmRsZXIgKGNvbW1hbmQ9MHgxMzk5YWQwICJydW4iKQotICAgICBh dCBnZGIvZXZlbnQtdG9wLmM6NjI0Ci0gIzE5IDB4MDAwMDAwMDAwMDlkMTgyZSBpbiByZWFkX2Nv bW1hbmRfZmlsZSAoc3RyZWFtPTB4MTEzZTU0MCkKLSAgICAgYXQgZ2RiL3RvcC5jOjQ0MwotICMy MCAweDAwMDAwMDAwMDA1NjM2OTcgaW4gc2NyaXB0X2Zyb21fZmlsZSAoc3RyZWFtPTB4MTEzZTU0 MCwgZmlsZT0weDEzYmIwYjAgImRwLWJ1Zy5nZGIiKQotICAgICBhdCBnZGIvY2xpL2NsaS1zY3Jp cHQuYzoxNjQyCi0gIzIxIDB4MDAwMDAwMDAwMDZhYmQ2MyBpbiBzb3VyY2VfZ2RiX3NjcmlwdCAo ZXh0bGFuZz0weGM0NGU4MCA8ZXh0ZW5zaW9uX2xhbmd1YWdlX2dkYj4sIHN0cmVhbT0weDExM2U1 NDAsCi0gICAgIGZpbGU9MHgxM2JiMGIwICJkcC1idWcuZ2RiIikgYXQgZ2RiL2V4dGVuc2lvbi5j OjE4OAotICMyMiAweDAwMDAwMDAwMDA1NDQ0MDAgaW4gc291cmNlX3NjcmlwdF9mcm9tX3N0cmVh bSAoc3RyZWFtPTB4MTEzZTU0MCwgZmlsZT0weDdmZmZmZmZmZDkxYSAiZHAtYnVnLmdkYiIsCi0g ICAgIGZpbGVfdG9fb3Blbj0weDEzYmIwYjAgImRwLWJ1Zy5nZGIiKQotICAgICBhdCBnZGIvY2xp L2NsaS1jbWRzLmM6NjkyCi0gIzIzIDB4MDAwMDAwMDAwMDU0NDU1NyBpbiBzb3VyY2Vfc2NyaXB0 X3dpdGhfc2VhcmNoIChmaWxlPTB4N2ZmZmZmZmZkOTFhICJkcC1idWcuZ2RiIiwgZnJvbV90dHk9 MSwgc2VhcmNoX3BhdGg9MCkKLSAgICAgYXQgZ2RiL2NsaS9jbGktY21kcy5jOjc1MAotICMyNCAw eDAwMDAwMDAwMDA1NDQ1Y2YgaW4gc291cmNlX3NjcmlwdCAoZmlsZT0weDdmZmZmZmZmZDkxYSAi ZHAtYnVnLmdkYiIsIGZyb21fdHR5PTEpCi0gICAgIGF0IGdkYi9jbGkvY2xpLWNtZHMuYzo3NTkK LSAjMjUgMHgwMDAwMDAwMDAwN2NmNmQ5IGluIGNhdGNoX2NvbW1hbmRfZXJyb3JzIChjb21tYW5k PTB4NTQ0NWFhIDxzb3VyY2Vfc2NyaXB0KGNoYXIgY29uc3QqLCBpbnQpPiwKLSAgICAgYXJnPTB4 N2ZmZmZmZmZkOTFhICJkcC1idWcuZ2RiIiwgZnJvbV90dHk9MSwgZG9fYnBfYWN0aW9ucz1mYWxz ZSkKLSAgICAgYXQgZ2RiL21haW4uYzo1MjMKLSAjMjYgMHgwMDAwMDAwMDAwN2NmODVkIGluIGV4 ZWN1dGVfY21kYXJncyAoY21kYXJnX3ZlYz0weDdmZmZmZmZmZDFiMCwgZmlsZV90eXBlPUNNREFS R19GSUxFLCBjbWRfdHlwZT1DTURBUkdfQ09NTUFORCwKLSAgICAgcmV0PTB4N2ZmZmZmZmZkMThj KSBhdCBnZGIvbWFpbi5jOjYxNQotICMyNyAweDAwMDAwMDAwMDA3ZDBjOGUgaW4gY2FwdHVyZWRf bWFpbl8xIChjb250ZXh0PTB4N2ZmZmZmZmZkM2YwKQotICAgICBhdCBnZGIvbWFpbi5jOjEzMjIK LSAjMjggMHgwMDAwMDAwMDAwN2QwZWJhIGluIGNhcHR1cmVkX21haW4gKGRhdGE9MHg3ZmZmZmZm ZmQzZjApCi0gICAgIGF0IGdkYi9tYWluLmM6MTM0MwotICMyOSAweDAwMDAwMDAwMDA3ZDBmMjUg aW4gZ2RiX21haW4gKGFyZ3M9MHg3ZmZmZmZmZmQzZjApCi0gICAgIGF0IGdkYi9tYWluLmM6MTM2 OAotICMzMCAweDAwMDAwMDAwMDA0MTg2ZGQgaW4gbWFpbiAoYXJnYz01LCBhcmd2PTB4N2ZmZmZm ZmZkNTA4KQotICAgICBhdCBnZGIvZ2RiLmM6MzIKLQotVGhlcmUgYXJlIHR3byBmcmFtZXMgZm9y IGJwc3RhdF9kb19hY3Rpb25zXzEoKSwgb25lIGF0IGZyYW1lICMxNiBhbmQKLXRoZSBvdGhlciBh dCBmcmFtZSAjMC4gIFRoZSBvbmUgYXQgZnJhbWUgIzE2IGlzIHByb2Nlc3NpbmcgdGhlIGFjdGlv bnMKLWZvciBCcmVha3BvaW50IDIsIHdoaWNoIGlzIGEgJ2NvbnRpbnVlJy4gIFRoZSBvbmUgYXQg ZnJhbWUgIzAgaXMgYXR0ZW1wdGluZwotdG8gcHJvY2VzcyB0aGUgZHByaW50ZiBicmVha3BvaW50 IGFjdGlvbi4gIEhvd2V2ZXIsIGF0IHRoaXMgcG9pbnQsCi10aGUgdmFsdWUgb2YgJ2V4ZWN1dGlu Z19icmVha3BvaW50X2NvbW1hbmRzJyBpcyAxLCBmb3JjaW5nIGFuIGVhcmx5Ci1yZXR1cm4sIGku ZS4gcHJpb3IgdG8gZXhlY3V0aW5nIHRoZSBjb21tYW5kKHMpIGFzc29jaWF0ZWQgd2l0aCB0aGUg ZHByaW50ZgotYnJlYWtwb2ludC4KLQotRm9yIHRoZSBzYWtlIG9mIGNvbXBhcmlzb24sIHRoaXMg aXMgd2hhdCB0aGUgc3RhY2sgbG9va3MgbGlrZSB3aGVuIGhpdHRpbmcKLXRoZSBkcHJpbnRmIGJy ZWFrcG9pbnQgZm9yIHRoZSBzZWNvbmQgdGltZSB3aGVuIGlzc3VpbmcgdGhlICdydW4nCi1jb21t YW5kIGZyb20gdGhlIEdEQiBwcm9tcHQuCi0KLVRocmVhZCAxICJnZGIiIGhpdCBCcmVha3BvaW50 IDMsIGJwc3RhdF9kb19hY3Rpb25zXzEgKGJzcD0weDdmZmZmZmZmY2NkOCkKLSAgICBhdCAvaXJv bndvb2QxL3NvdXJjZXdhcmUtZ2l0L2YzNC1tYXN0ZXIvYmxkLy4uLy4uL3dvcmt0cmVlLW1hc3Rl ci9nZGIvYnJlYWtwb2ludC5jOjQ0MzEKLTQ0MzEJICBpZiAoZXhlY3V0aW5nX2JyZWFrcG9pbnRf Y29tbWFuZHMpCi0KLSAjMCAgYnBzdGF0X2RvX2FjdGlvbnNfMSAoYnNwPTB4N2ZmZmZmZmZjY2Q4 KQotICAgICBhdCBnZGIvYnJlYWtwb2ludC5jOjQ0MzEKLSAjMSAgMHgwMDAwMDAwMDAwNGQ4YmM2 IGluIGRwcmludGZfYWZ0ZXJfY29uZGl0aW9uX3RydWUgKGJzPTB4MTZiMDI5MCkKLSAgICAgYXQg Z2RiL2JyZWFrcG9pbnQuYzoxMzA0OAotICMyICAweDAwMDAwMDAwMDA0YzVjYWEgaW4gYnBzdGF0 X3N0b3Bfc3RhdHVzIChhc3BhY2U9MHgxMTZkYmMwLCBicF9hZGRyPTB4NDAxMTZlLCB0aHJlYWQ9 MHgxM2YwZTYwLCB3cz0weDdmZmZmZmZmZDEzOCwKLSAgICAgc3RvcF9jaGFpbj0weDE2YjAyOTAp IGF0IGdkYi9icmVha3BvaW50LmM6NTQ5OAotICMzICAweDAwMDAwMDAwMDA3NjhkOTggaW4gaGFu ZGxlX3NpZ25hbF9zdG9wIChlY3M9MHg3ZmZmZmZmZmQxMTApCi0gICAgIGF0IGdkYi9pbmZydW4u Yzo2MTcyCi0gIzQgIDB4MDAwMDAwMDAwMDc2NzhkMyBpbiBoYW5kbGVfaW5mZXJpb3JfZXZlbnQg KGVjcz0weDdmZmZmZmZmZDExMCkKLSAgICAgYXQgZ2RiL2luZnJ1bi5jOjU2NjIKLSAjNSAgMHgw MDAwMDAwMDAwNzYzY2Q1IGluIGZldGNoX2luZmVyaW9yX2V2ZW50ICgpCi0gICAgIGF0IGdkYi9p bmZydW4uYzo0MDYwCi0gIzYgIDB4MDAwMDAwMDAwMDc0NmQ3ZCBpbiBpbmZlcmlvcl9ldmVudF9o YW5kbGVyIChldmVudF90eXBlPUlORl9SRUdfRVZFTlQpCi0gICAgIGF0IGdkYi9pbmYtbG9vcC5j OjQxCi0gIzcgIDB4MDAwMDAwMDAwMDdhNzAyZiBpbiBoYW5kbGVfdGFyZ2V0X2V2ZW50IChlcnJv cj0wLCBjbGllbnRfZGF0YT0weDApCi0gICAgIGF0IGdkYi9saW51eC1uYXQuYzo0MjA3Ci0gIzgg IDB4MDAwMDAwMDAwMGI4Y2Q2ZSBpbiBnZGJfd2FpdF9mb3JfZXZlbnQgKGJsb2NrPWJsb2NrQGVu dHJ5PTApCi0gICAgIGF0IGdkYnN1cHBvcnQvZXZlbnQtbG9vcC5jYzo3MDEKLSAjOSAgMHgwMDAw MDAwMDAwYjhkMDMyIGluIGdkYl93YWl0X2Zvcl9ldmVudCAoYmxvY2s9MCkKLSAgICAgYXQgZ2Ri c3VwcG9ydC9ldmVudC1sb29wLmNjOjU5NwotICMxMCBnZGJfZG9fb25lX2V2ZW50ICgpIGF0IGdk YnN1cHBvcnQvZXZlbnQtbG9vcC5jYzoyMTIKLSAjMTEgMHgwMDAwMDAwMDAwN2NmNTEyIGluIHN0 YXJ0X2V2ZW50X2xvb3AgKCkKLSAgICAgYXQgZ2RiL21haW4uYzo0MjEKLSAjMTIgMHgwMDAwMDAw MDAwN2NmNjMxIGluIGNhcHR1cmVkX2NvbW1hbmRfbG9vcCAoKQotICAgICBhdCBnZGIvbWFpbi5j OjQ4MQotICMxMyAweDAwMDAwMDAwMDA3ZDBlYmYgaW4gY2FwdHVyZWRfbWFpbiAoZGF0YT0weDdm ZmZmZmZmZDNmMCkKLSAgICAgYXQgZ2RiL21haW4uYzoxMzUzCi0gIzE0IDB4MDAwMDAwMDAwMDdk MGYyNSBpbiBnZGJfbWFpbiAoYXJncz0weDdmZmZmZmZmZDNmMCkKLSAgICAgYXQgZ2RiL21haW4u YzoxMzY4Ci0gIzE1IDB4MDAwMDAwMDAwMDQxODZkZCBpbiBtYWluIChhcmdjPTUsIGFyZ3Y9MHg3 ZmZmZmZmZmQ1MDgpCi0gICAgIGF0IGdkYi9nZGIuYzozMgotCi1UaGlzIHJlbGF0aXZlbHkgc2hv cnQgYmFja3RyYWNlIGlzIGR1ZSB0byB0aGUgY3VycmVudCBVSSdzIGFzeW5jIGZpZWxkCi1iZWlu ZyBzZXQgdG8gMS4KLQotWWV0IGFub3RoZXIgdGhpbmcgdG8gYmUgYXdhcmUgb2YgcmVnYXJkaW5n IHRoaXMgcHJvYmxlbSBpcyB0aGUKLWRpZmZlcmVuY2UgaW4gdGhlIHdheSB0aGF0IGNvbW1hbmRz IGFzc29jaWF0ZWQgdG8gZHByaW50ZiBicmVha3BvaW50cwotdmVyc3VzIHJlZ3VsYXIgYnJlYWtw b2ludHMgYXJlIGhhbmRsZWQuICBXaGlsZSB0aGV5IGJvdGggdXNlIGEgY29tbWFuZAotbGlzdCBh c3NvY2lhdGVkIHdpdGggdGhlIGJyZWFrcG9pbnQsIHJlZ3VsYXIgYnJlYWtwb2ludHMgd2lsbCBw bGFjZQotdGhlIGNvbW1hbmRzIHRvIGJlIHJ1biBvbiB0aGUgYnBzdGF0IGNoYWluIGNvbnN0cnVj dGVkIGluCi1icF9zdG9wX3N0YXR1cygpLiAgVGhlc2UgY29tbWFuZHMgYXJlIHJ1biBsYXRlciBv bi4gIEZvciBkcHJpbnRmCi1icmVha3BvaW50cywgY29tbWFuZHMgYXJlIHJ1biB2aWEgdGhlICdh ZnRlcl9jb25kaXRpb25fdHJ1ZScgZnVuY3Rpb24KLXBvaW50ZXIgZGlyZWN0bHkgZnJvbSBicHN0 YXRfc3RvcF9zdGF0dXMoKS4gIChUaGUgJ2NvbW1hbmRzJyBmaWVsZCBpbgotdGhlIGJwc3RhdCBp cyBjbGVhcmVkIGluIGRwcmludGZfYWZ0ZXJfY29uZGl0aW9uX3RydWUoKS4gIFRoaXMKLXByZXZl bnRzIHRoZSBkcHJpbnRmIGNvbW1hbmRzIGZyb20gYmVpbmcgcnVuIGFnYWluIGxhdGVyIG9uIHdo ZW4gb3RoZXIKLWNvbW1hbmRzIG9uIHRoZSBicHN0YXQgY2hhaW4gYXJlIHByb2Nlc3NlZC4pCi0K LUFub3RoZXIgdGhpbmcgdGhhdCBJIG5vdGljZWQgaXMgdGhhdCBkcHJpbnRmIGJyZWFrcG9pbnRz IGFyZSB0aGUgb25seQotdHlwZSBvZiBicmVha3BvaW50IHdoaWNoIHVzZSAnYWZ0ZXJfY29uZGl0 aW9uX3RydWUnLiAgVGhpcyBzdWdnZXN0cwotdGhhdCBvbmUgcG9zc2libGUgd2F5IG9mIGZpeGlu ZyB0aGlzIHByb2JsZW0sIHRoYXQgb2YgbWFraW5nIGRwcmludGYKLWJyZWFrcG9pbnRzIHdvcmsg bW9yZSBsaWtlIHJlZ3VsYXIgYnJlYWtwb2ludHMsIHByb2JhYmx5IHdvbid0IHdvcmsuCi0oSSBt dXN0IGFkbWl0LCBob3dldmVyLCB0aGF0IG15IHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBjb2RlIGlz bid0Ci1jb21wbGV0ZSBlbm91Z2ggdG8gc2F5IHdoeS4gIEknbGwgdHJ1c3QgdGhhdCB3aG9ldmVy IGltcGxlbWVudGVkIGl0Ci1oYWQgYSBnb29kIHJlYXNvbiBmb3IgZG9pbmcgaXQgdGhpcyB3YXku KQotCi1UaGUgY29tbWVudCByZWZlcmVuY2VkIGVhcmxpZXIgcmVnYXJkaW5nICdleGVjdXRpbmdf YnJlYWtwb2ludF9jb21tYW5kcycKLXN0YXRlcyB0aGF0IHRoZSByZWFzb24gZm9yIGNoZWNraW5n IHRoaXMgdmFyaWFibGUgaXMgdG8gYXZvaWQKLXBvdGVudGlhbCBlbmRsZXNzIHJlY3Vyc2lvbiB3 aGVuIGEgJ3NvdXJjZScgY29tbWFuZCBhcHBlYXJzIGluCi1icy0+Y29tbWFuZHMuICBXZSBrbm93 IHRoYXQgYSBkcHJpbnRmIGNvbW1hbmQgaXMgY29uc3RyYWluZWQgdG8gZWl0aGVyCi0xKSBleGVj dXRpb24gb2YgYSBHREIgcHJpbnRmIGNvbW1hbmQsIDIpIGFuIGluZmVyaW9yIGZ1bmN0aW9uIGNh bGwgb2YKLWEgcHJpbnRmLWxpa2UgZnVuY3Rpb24sIG9yIDMpIGV4ZWN1dGlvbiBvZiBhbiBhZ2Vu dC1wcmludGYgY29tbWFuZC4KLVRoZXJlZm9yZSwgaW5maW5pdGUgcmVjdXJzaW9uIGR1ZSB0byBh ICdzb3VyY2UnIGNvbW1hbmQgY2Fubm90IGhhcHBlbgotd2hlbiBleGVjdXRpbmcgY29tbWFuZHMg dXBvbiBoaXR0aW5nIGEgZHByaW50ZiBicmVha3BvaW50LgotCi1JIGNob3NlIHRvIGZpeCB0aGlz IHByb2JsZW0gYnkgaGF2aW5nIGRwcmludGZfYWZ0ZXJfY29uZGl0aW9uX3RydWUoKQotZGlyZWN0 bHkgY2FsbCBleGVjdXRlX2NvbnRyb2xfY29tbWFuZHMoKS4gIFRoaXMgbWVhbnMgdGhhdCBpdCBu bwotbG9uZ2VyIGF0dGVtcHRzIHRvIGdvIHRocm91Z2ggYnBzdGF0X2RvX2FjdGlvbnNfMSgpIGF2 b2lkaW5nIHRoZQotaW5maW5pdGUgcmVjdXJzaW9uIGNoZWNrIGZvciBwb3RlbnRpYWwgJ3NvdXJj ZScgY29tbWFuZHMgb24gdGhlCi1jb21tYW5kIGNoYWluLiAgSSB0aGluayBpdCBzaW1wbGlmaWVz IHRoaXMgY29kZSBhIGxpdHRsZSBiaXQgdG9vLCBhCi1kZWZpbml0ZSBib251cy4KLQotU3VtbWFy eToKLQotCSogYnJlYWtwb2ludC5jIChkcHJpbnRmX2FmdGVyX2NvbmRpdGlvbl90cnVlKTogRG9u J3QgY2FsbAotCWJwc3RhdF9kb19hY3Rpb25zXzEoKS4gIENhbGwgZXhlY3V0ZV9jb250cm9sX2Nv bW1hbmRzKCkKLQlpbnN0ZWFkLgotCi1kaWZmIC0tZ2l0IGEvZ2RiL2JyZWFrcG9pbnQuYyBiL2dk Yi9icmVha3BvaW50LmMKLS0tLSBhL2dkYi9icmVha3BvaW50LmMKLSsrKyBiL2dkYi9icmVha3Bv aW50LmMKLUBAIC0xMzA0Myw5ICsxMzA0Myw2IEBAIGRwcmludGZfcHJpbnRfcmVjcmVhdGUgKHN0 cnVjdCBicmVha3BvaW50ICp0cCwgc3RydWN0IHVpX2ZpbGUgKmZwKQotIHN0YXRpYyB2b2lkCi0g ZHByaW50Zl9hZnRlcl9jb25kaXRpb25fdHJ1ZSAoc3RydWN0IGJwc3RhdHMgKmJzKQotIHsKLS0g IHN0cnVjdCBicHN0YXRzIHRtcF9iczsKLS0gIHN0cnVjdCBicHN0YXRzICp0bXBfYnNfcCA9ICZ0 bXBfYnM7Ci0tCi0gICAvKiBkcHJpbnRmJ3MgbmV2ZXIgY2F1c2UgYSBzdG9wLiAgVGhpcyB3YXNu J3Qgc2V0IGluIHRoZQotICAgICAgY2hlY2tfc3RhdHVzIGhvb2sgaW5zdGVhZCBiZWNhdXNlIHRo YXQgd291bGQgbWFrZSB0aGUgZHByaW50ZidzCi0gICAgICBjb25kaXRpb24gbm90IGJlIGV2YWx1 YXRlZC4gICovCi1AQCAtMTMwNTYsMTQgKzEzMDUzLDkgQEAgZHByaW50Zl9hZnRlcl9jb25kaXRp b25fdHJ1ZSAoc3RydWN0IGJwc3RhdHMgKmJzKQotICAgICAgYnBzdGF0X2RvX2FjdGlvbnMsIGlm IGEgYnJlYWtwb2ludCB0aGF0IGNhdXNlcyBhIHN0b3AgaGFwcGVucyB0bwotICAgICAgYmUgc2V0 IGF0IHNhbWUgYWRkcmVzcyBhcyB0aGlzIGRwcmludGYsIG9yIGV2ZW4gaWYgcnVubmluZyB0aGUK LSAgICAgIGNvbW1hbmRzIGhlcmUgdGhyb3dzLiAgKi8KLS0gIHRtcF9icy5jb21tYW5kcyA9IGJz LT5jb21tYW5kczsKLS0gIGJzLT5jb21tYW5kcyA9IE5VTEw7Ci0tCi0tICBicHN0YXRfZG9fYWN0 aW9uc18xICgmdG1wX2JzX3ApOwotLQotLSAgLyogJ3RtcF9icy5jb21tYW5kcycgd2lsbCB1c3Vh bGx5IGJlIE5VTEwgYnkgbm93LCBidXQKLS0gICAgIGJwc3RhdF9kb19hY3Rpb25zXzEgbWF5IHJl dHVybiBlYXJseSB3aXRob3V0IHByb2Nlc3NpbmcgdGhlIHdob2xlCi0tICAgICBsaXN0LiAgKi8K LSsgIGNvdW50ZWRfY29tbWFuZF9saW5lIGNtZHMgPSBzdGQ6Om1vdmUgKGJzLT5jb21tYW5kcyk7 Ci0rICBnZGJfYXNzZXJ0IChjbWRzICE9IG51bGxwdHIpOwotKyAgZXhlY3V0ZV9jb250cm9sX2Nv bW1hbmRzIChjbWRzLmdldCAoKSwgMCk7Ci0gfQotIAotIC8qIFRoZSBicmVha3BvaW50X29wcyBz dHJ1Y3R1cmUgdG8gYmUgdXNlZCBvbiBzdGF0aWMgdHJhY2Vwb2ludHMgd2l0aAoKZGlmZiAtLWdp dCBhL2dkYi1yaGJ6MjAyMjE3Ny1kcHJpbnRmLTIucGF0Y2ggYi9nZGItcmhiejIwMjIxNzctZHBy aW50Zi0yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NGJjZDg3Li4wMDAw MDAwCi0tLSBhL2dkYi1yaGJ6MjAyMjE3Ny1kcHJpbnRmLTIucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSwxOTQgKzAsMCBAQAotRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKLUZyb206IEtldmluIEJ1ZXR0bmVyIDxrZXZpbmJAcmVkaGF0LmNvbT4KLURhdGU6IFdl ZCwgMTAgTm92IDIwMjEgMTg6NTU6NDMgLTA3MDAKLVN1YmplY3Q6IGdkYi1yaGJ6MjAyMjE3Ny1k cHJpbnRmLTIucGF0Y2gKLQotOzsgQmFja3BvcnQgdGVzdCBjYXNlIGZvciBkcHJpbnRmIGJ1ZyAo UkggQlogMjAyMjE3NykuCi0KLVRlc3QgY2FzZSBmb3IgQnVnIDI4MzA4Ci0KLVRoZSBwdXJwb3Nl IG9mIHRoaXMgdGVzdCBpcyBkZXNjcmliZWQgaW4gdGhlIGNvbW1lbnRzIGluCi1kcHJpbnRmLWV4 ZWN1dGlvbi14LXNjcmlwdC5leHAuCi0KLUJ1ZzogaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6 aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjgzMDgKLQotVGhlIG5hbWUgb2YgdGhpcyBuZXcgdGVzdCB3 YXMgYmFzZWQgb24gdGhhdCBvZiBhbiBleGlzdGluZyB0ZXN0LAotYnAtY21kcy1leGVjdXRpb24t eC1zY3JpcHQuZXhwLiAgSSBzdGFydGVkIG9mZiBieSBjb3B5aW5nIHRoYXQgdGVzdCwKLWFkZGlu ZyB0byBpdCwgYW5kIHRoZW4gcmV3cml0aW5nIGFsbW9zdCBhbGwgb2YgaXQuICBJdCdzIGRpZmZl cmVudAotZW5vdWdoIHRoYXQgSSBkZWNpZGVkIHRoYXQgbGlzdGluZyB0aGUgY29weXJpZ2h0IHll YXIgYXMgMjAyMQotd2FzIHN1ZmZpY2llbnQuCi0KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2RwcmludGYtZXhlY3V0aW9uLXgtc2NyaXB0LmMgYi9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2RwcmludGYtZXhlY3V0aW9uLXgtc2NyaXB0LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0 Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2RwcmludGYtZXhl Y3V0aW9uLXgtc2NyaXB0LmMKLUBAIC0wLDAgKzEsNTMgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlz IHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDIxIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAg IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPHN0 ZGlvLmg+Ci0rCi0rdm9sYXRpbGUgaW50IHZpID0gMDsKLSsKLSt2b2lkCi0raW5jX3ZpICgpCi0r ewotKyAgdmkrKzsKLSt9Ci0rCi0rdm9pZAotK3ByaW50X3ZpICgpCi0rewotKyAgcHJpbnRmICgi dmk9JWRcbiIsIHZpKTsKLSt9Ci0rCi0rdm9pZAotK2luY3JlbWVudCAoKQotK3sKLSsgIGluY192 aSAoKTsKLSt9Ci0rCi0raW50Ci0rbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotK3sKLSsg IHByaW50X3ZpICgpOwotKyAgaW5jcmVtZW50ICgpOwotKyAgcHJpbnRfdmkgKCk7Ci0rICBpbmNy ZW1lbnQgKCk7Ci0rICBwcmludF92aSAoKTsKLSsgIGluY3JlbWVudCAoKTsKLSsgIHByaW50X3Zp ICgpOwotKwotKyAgZXhpdCAoMCk7Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvZHByaW50Zi1leGVjdXRpb24teC1zY3JpcHQuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9kcHJpbnRmLWV4ZWN1dGlvbi14LXNjcmlwdC5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0 Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2RwcmludGYtZXhl Y3V0aW9uLXgtc2NyaXB0LmV4cAotQEAgLTAsMCArMSw4NSBAQAotKyMgQ29weXJpZ2h0IDIwMjEg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LiAgKi8KLSsKLSsjIFRlc3QgdGhhdCBjb21tYW5kcyBpbiBhIEdEQiBzY3JpcHQgZmls ZSBydW4gdmlhIEdEQidzIC14IGZsYWcgd29yawotKyMgYXMgZXhwZWN0ZWQuICBTcGVjaWZpY2Fs bHksIHRoZSBzY3JpcHQgY3JlYXRlcyBhIGRwcmludGYgYnJlYWtwb2ludAotKyMgYXMgd2VsbCBh cyBhIG5vcm1hbCBicmVha3BvaW50IHRoYXQgaGFzICJjb250aW51ZSIgaW4gaXRzIGNvbW1hbmQK LSsjIGxpc3QsIGFuZCB0aGVuIGRvZXMgInJ1biIuICBDb3JyZWN0IG91dHB1dCBmcm9tIEdEQiBp cyBjaGVja2VkIGFzCi0rIyBwYXJ0IG9mIHRoaXMgdGVzdC4KLSsKLSsjIEJhaWwgb3V0IGlmIHRo ZSB0YXJnZXQgY2FuJ3QgdXNlIHRoZSAncnVuJyBjb21tYW5kLgotK2lmICFbdGFyZ2V0X2Nhbl91 c2VfcnVuX2NtZF0gewotKyAgICByZXR1cm4gMAotK30KLSsKLStzdGFuZGFyZF90ZXN0ZmlsZQot KwotK2lmIHtbYnVpbGRfZXhlY3V0YWJsZSAiZmFpbGVkIHRvIHByZXBhcmUiICR0ZXN0ZmlsZSAk c3JjZmlsZSBkZWJ1Z119IHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotKyMgVGhpcyBpcyB0aGUg bmFtZSBvZiB0aGUgR0RCIHNjcmlwdCB0byBsb2FkLgotK3NldCB4X2ZpbGUgJHtzcmNkaXJ9LyR7 c3ViZGlyfS8kdGVzdGZpbGUuZ2RiCi0rCi0rIyBDcmVhdGUgY29udGV4dCBpbiB3aGljaCB0aGUg Z2xvYmFsLCBHREJGTEFHUywgd2lsbCBiZSByZXN0b3JlZCBhdAotKyMgdGhlIGVuZCBvZiB0aGUg YmxvY2suICBBbGwgY29tbWFuZHMgcnVuIHdpdGhpbiB0aGUgYmxvY2sgYXJlCi0rIyBhY3R1YWxs eSBydW4gaW4gdGhlIG91dGVyIGNvbnRleHQuICAoVGhpcyBpcyB3aHkgJ3JlcycgaXMgYXZhaWxh YmxlCi0rIyBvdXRzaWRlIG9mIHRoZSBzYXZlX3ZhcnMgYmxvY2suKQotK3NhdmVfdmFycyB7IEdE QkZMQUdTIH0gewotKyAgICAjIFNldCBmbGFncyB3aXRoIHdoaWNoIHRvIHN0YXJ0IEdEQi4KLSsg ICAgYXBwZW5kIEdEQkZMQUdTICIgLWV4IFwic2V0IGhlaWdodCB1bmxpbWl0ZWRcIiIKLSsgICAg YXBwZW5kIEdEQkZMQUdTICIgLXggXCIkeF9maWxlXCIiCi0rICAgIGFwcGVuZCBHREJGTEFHUyAi IC0tYXJncyBcIiRiaW5maWxlXCIiCi0rCi0rICAgICMgU3RhcnQgR0RCIHdpdGggYWJvdmUgZmxh Z3MuCi0rICAgIHNldCByZXMgW2dkYl9zcGF3bl0KLSt9Ci0rCi0rc2V0IHRlc3QgImxvYWQgYW5k IHJ1biBzY3JpcHQgd2l0aCAteCIKLStpZiB7ICRyZXMgIT0gMH0gewotKyAgICBmYWlsICR0ZXN0 Ci0rICAgIHJldHVybiAtMQotK30KLSsKLSsjIFRoZSBzY3JpcHQgbG9hZGVkIHZpYSAteCBjb250 YWlucyBhIHJ1biBjb21tYW5kOyB3aGlsZSBydW5uaW5nLCBHREIKLSsjIGlzIGV4cGVjdGVkIHRv IHByaW50IHRocmVlIG1lc3NhZ2VzIGZyb20gZHByaW50ZiBicmVha3BvaW50cyBhbG9uZwotKyMg d2l0aCB0aHJlZSBpbnRlcnNwZXJzZWQgbWVzc2FnZXMgZnJvbSBhbiBvcmRpbmFyeSBicmVha3Bv aW50ICh3aGljaAotKyMgd2FzIHNldCB1cCB3aXRoIGEgY29udGludWUgY29tbWFuZCkuICBTZXQg dXAgcGF0dGVybiBEIHRvIG1hdGNoCi0rIyBvdXRwdXQgZnJvbSBoaXR0aW5nIHRoZSBkcHJpbnRm IGJyZWFrcG9pbnQgYW5kIEIgZm9yIHRoZSBvcmRpbmFyeQotKyMgYnJlYWtwb2ludC4gIFRoZW4g c2V0IFBBVCB0byBjb250YWluIHRoZSBlbnRpcmUgcGF0dGVybiBvZiBleHBlY3RlZAotKyMgb3V0 cHV0IGZyb20gdGhlIGludGVyc3BlcnNlZCBkcHJpbnRmIGFuZCBvcmRpbmFyeSBicmVha3BvaW50 cyBhbG9uZwotKyMgd2l0aCBzb21lIChhZGRpdGlvbmFsKSBleHBlY3RlZCBvdXRwdXQgZnJvbSB0 aGUgZHByaW50ZiBicmVha3BvaW50cywKLSsjIGkuZS4gMCwgMSwgYW5kIDIuCi0rc2V0IGQgImRw cmludGYgaW4gaW5jcmVtZW50Li4sIHZpPSIKLStzZXQgYiAiQnJlYWtwb2ludCAuLCBpbmNfdmki Ci0rc2V0IHBhdCAiJHtkfTAuKj8kYi4qPyR7ZH0xLio/JGIuKj8ke2R9Mi4qPyRiLio/IgotKwot K3Byb2MgZG9fdGVzdCB7Y21kIHRlc3R9IHsKLSsgICAgZ2RiX3Rlc3QgJGNtZCAiJDo6cGF0JDo6 aW5mZXJpb3JfZXhpdGVkX3JlIG5vcm1hbGx5LioiICR0ZXN0Ci0rfQotKwotKyMgQ2hlY2sgb3V0 cHV0IGZyb20gcnVubmluZyBzY3JpcHQgd2l0aCAteAotK2RvX3Rlc3QgIiIgJHRlc3QKLSsKLSsj IFJlc3RhcnQgR0RCIGFuZCAnc291cmNlJyB0aGUgc2NyaXB0OyB0aGlzIHdpbGwgKHN0aWxsKSBy dW4gdGhlIHByb2dyYW0KLSsjIGR1ZSB0byB0aGUgJ3J1bicgY29tbWFuZCBpbiB0aGUgc2NyaXB0 LgotK2NsZWFuX3Jlc3RhcnQgJGJpbmZpbGUKLStkb190ZXN0ICJzb3VyY2UgJHhfZmlsZSIgImxv YWQgYW5kIHJ1biBzY3JpcHQgdXNpbmcgc291cmNlIGNvbW1hbmQiCi0rCi0rIyBUaGlzIHNob3Vs ZCBsZWF2ZSB1cyBhdCB0aGUgZ2RiIHByb21wdDsgUnVuIHByb2dyYW0gYWdhaW4gdXNpbmcKLSsj IGFscmVhZHkgZXN0YWJsaXNoZWQgYnJlYWtwb2ludHMsIGkuZS4gdGhvc2UgbG9hZGVkIGZyb20g dGhlCi0rIyBzY3JpcHQuICBQcmlvciB0byBmaXhpbmcgUFIgMjgzMDgsIHRoaXMgd2FzIHRoZSBv bmx5IHRlc3QgdGhhdAotKyMgd291bGQgcGFzcy4KLStkb190ZXN0ICJydW4iICJydW4gYWdhaW4i Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9kcHJpbnRmLWV4ZWN1dGlvbi14 LXNjcmlwdC5nZGIgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2RwcmludGYtZXhlY3V0aW9uLXgt c2NyaXB0LmdkYgotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvZHByaW50Zi1leGVjdXRpb24teC1zY3JpcHQuZ2RiCi1AQCAt MCwwICsxLDIxIEBACi0rIyBDb3B5cmlnaHQgMjAyMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsj IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotK2RwcmludGYg aW5jcmVtZW50LCAiZHByaW50ZiBpbiBpbmNyZW1lbnQoKSwgdmk9JWRcbiIsIHZpCi0rYnJlYWsg aW5jX3ZpCi0rY29tbWFuZHMKLSsgIGNvbnRpbnVlCi0rZW5kCi0rcnVuCgpkaWZmIC0tZ2l0IGEv Z2RiLXJoYnoyMDI0ODctcmV3b3JrLXNldC1kZWJ1Z2luZm9kLnBhdGNoIGIvZ2RiLXJoYnoyMDI0 ODctcmV3b3JrLXNldC1kZWJ1Z2luZm9kLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCBhNmI5YmM0Li4wMDAwMDAwCi0tLSBhL2dkYi1yaGJ6MjAyNDg3LXJld29yay1zZXQtZGVi dWdpbmZvZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3NiArMCwwIEBACi1Gcm9tIEZFRE9S QV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0FsZXhh bmRyYT0yMEg9QzM9QTFqa292PUMzPUExPz0gPGFoYWprb3ZhQHJlZGhhdC5jb20+Ci1EYXRlOiBU dWUsIDExIEphbiAyMDIyIDEyOjQ2OjA1ICswMTAwCi1TdWJqZWN0OiBnZGItcmhiejIwMjQ4Ny1y ZXdvcmstc2V0LWRlYnVnaW5mb2QucGF0Y2gKLQotOztCYWNrcG9ydCB1cHN0cmVhbSBjb21taXQg ZnJvbSAgU2ltb24gTWFyY2hpCi07OzMzM2YzNWI2MzE1IGdkYjogcGFzcy9yZXR1cm4gc2V0dGlu ZyBzZXR0ZXIvZ2V0dGVyCi07O3NjYWxhciB2YWx1ZXMgYnkgdmFsdWUKLQotZ2RiOiByZXdvcmsg InNldCBkZWJ1Z2luZm9kIiBjb21tYW5kcwotCi1BcyBkaXNjdXNzZWQgaGVyZSBbMV0sIGRvIHNv bWUgcmUtd29yayBpbiB0aGUgInNldCBkZWJ1Z2luZm9kIGNvbW1hbmRzIi4KLQotRmlyc3QsIHVz ZSAic2V0IGRlYnVnaW5mb2QgZW5hYmxlZCBvbi9vZmYvYXNrIiBpbnN0ZWFkIG9mICJzZXQKLWRl YnVnaW5mb2Qgb24vb2ZmL2FzayIuICBUaGlzIGlzIG1vcmUgTUktZnJpZW5kbHksIGFuZCBpdCBn aXZlcyBhbgotb3V0cHV0IHRoYXQgbWFrZXMgbW9yZSBzZW5zZSBpbiAiaW5mbyBzZXQiLCBmb3Ig ZXhhbXBsZS4KLQotVGhlbiwgbWFrZSB0aGUgc2hvdyBjb21tYW5kcyBub3QgY2FsbCAiZXJyb3Ii IHdoZW4gZGVidWdpbmZvZCBzdXBwb3J0IGlzCi1ub3QgY29tcGlsZWQgaW4uICBUaGlzIG1ha2Vz IHRoZSBjb21tYW5kcyAic2hvdyIgYW5kICJzaG93IGRlYnVnaW5mb2QiCi1zdG9wIGVhcmx5LCBi cmVha2luZyBnZGIuYmFzZS9kZWZhdWx0LmV4cDoKLQotICAgIFJ1bm5pbmcgL2hvbWUvc21hcmNo aS9zcmMvYmludXRpbHMtZ2RiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZGVmYXVsdC5leHAgLi4u Ci0gICAgRkFJTDogZ2RiLmJhc2UvZGVmYXVsdC5leHA6IGluZm8gc2V0Ci0gICAgRkFJTDogZ2Ri LmJhc2UvZGVmYXVsdC5leHA6IHNob3cKLQotIC0gTWFrZSB0aGUgImRlYnVnaW5mb2QgZW5hYmxl ZCIgc2V0dGluZyBkZWZhdWx0IHRvICJvZmYiIHdoZW4gZGVidWdpbmZvZAotICAgc3VwcG9ydCBp cyBub3QgY29tcGlsZWQgaW4sIGFuZCAiYXNrIiBvdGhlcndpc2UuCi0gLSBNYWtlIHRoZSBzZXR0 ZXIgb2YgImRlYnVnaW5mb2QgZW5hYmxlZCIgZXJyb3Igb3V0IHdoZW4gZGVidWdpbmZvZAotICAg c3VwcG9ydCBpcyBub3QgY29tcGlsZWQgaW4sIHNvIHRoYXQgImRlYnVnaW5mb2QgZW5hYmxlZCIg d2lsbCBhbHdheXMKLSAgIHJlbWFpbiAib2ZmIiBpbiB0aGF0IGNhc2UuCi0gLSBNYWtlIHRoZSBz ZXR0ZXIgb2YgImRlYnVnaW5mb2QgdmVyYm9zZSIgd29yayBpbiBhbnkgY2FzZS4gIEkgZG9uJ3QK LSAgIHNlZSB0aGUgaGFybSBpbiBsZXR0aW5nIHRoZSB1c2VyIGNoYW5nZSB0aGF0IHNldHRpbmcs IHNpbmNlIHRoZSB1c2VyIHdpbGwKLSAgIGhpdCBhbiBlcnJvciBpZiB0aGV5IHRyeSB0byBlbmFi bGUgdGhlIHVzZSBvZiBkZWJ1Z2luZm9kLgotIC0gSSB3b3VsZCBkbyB0aGUgc2FtZSBmb3IgdGhl ICJkZWJ1Z2luZm9kIHVybHMiIHNldHRlciwgYnV0IGJlY2F1c2UKLSAgIHRoaXMgb25lIG5lZWRz IHRvIHNlZSB0aGUgREVCVUdJTkZPRF9VUkxTX0VOVl9WQVIgbWFjcm8sIHByb3ZpZGVkIGJ5Ci0g ICBsaWJkZWJ1Z2luZm9kLCBJIG1hZGUgdGhhdCBvbmUgZXJyb3Igb3V0IGFzIHdlbGwgaWYgZGVi dWdpbmZvZAotICAgc3VwcG9ydCBpcyBub3QgY29tcGlsZWQgaXQgKG90aGVyd2lzZSwgSSB3b3Vs ZCBoYXZlIGxlZnQgaXQgbGlrZQotICAgImRlYnVnaW5mb2QgdmVyYm9zZSIuICBBbHRlcm5hdGl2 ZWx5LCB3ZSBjb3VsZCBoYXJkLWNvZGUKLSAgICJERUJVR0lORk9EX1VSTFMiIGluIHRoZSBjb2Rl IChpbiBmYWN0LCBpdCB3YXMgcHJpb3IgdG8gdGhpcyBwYXRjaCwKLSAgIGJ1dCBJIHRoaW5rIGl0 IHdhcyBhbiBvdmVyc2lnaHQsIGFzIG90aGVyIHNwb3RzIHVzZQotICAgREVCVUdJTkZPRF9VUkxT X0VOVl9WQVIpLCBvciB1c2UgYSBkdW1teSBzdHJpbmcgdG8gc3RvcmUgdGhlIHNldHRpbmcsCi0g ICBidXQgSSBkb24ndCByZWFsbHkgc2VlIHRoZSB2YWx1ZSBpbiB0aGF0LgotCi1SZW5hbWUgZGVi dWdpbmZvZF9lbmFibGUgdG8gZGVidWdpbmZvZF9lbmFibGVkLCBqdXN0IHNvIGl0IG1hdGNoZXMg dGhlCi1zZXR0aW5nIG5hbWUuCi0KLVsxXSBodHRwczovL3NvdXJjZXdhcmUub3JnL3BpcGVybWFp bC9nZGItcGF0Y2hlcy8yMDIxLU9jdG9iZXIvMTgyOTM3Lmh0bWwKLQotQ2hhbmdlLUlkOiBJNDVm ZGIyOTkzZjY2ODIyNmE1NjM5MjI4OTUxMzYyYjc4MDBmMDlkNQotQ28tQXV0aG9yZWQtQnk6IEFh cm9uIE1lcmV5IDxhbWVyZXlAcmVkaGF0LmNvbT4KLQotZGlmZiAtLWdpdCBhL2dkYi9kZWJ1Z2lu Zm9kLXN1cHBvcnQuYyBiL2dkYi9kZWJ1Z2luZm9kLXN1cHBvcnQuYwotLS0tIGEvZ2RiL2RlYnVn aW5mb2Qtc3VwcG9ydC5jCi0rKysgYi9nZGIvZGVidWdpbmZvZC1zdXBwb3J0LmMKLUBAIC0zMiw4 ICszMiwyMiBAQCBzdGF0aWMgY29uc3QgY2hhciBkZWJ1Z2luZm9kX29uW10gPSAib24iOwotIHN0 YXRpYyBjb25zdCBjaGFyIGRlYnVnaW5mb2Rfb2ZmW10gPSAib2ZmIjsKLSBzdGF0aWMgY29uc3Qg Y2hhciBkZWJ1Z2luZm9kX2Fza1tdID0gImFzayI7Ci0gCi0tc3RhdGljIGNvbnN0IGNoYXIgKmRl YnVnaW5mb2RfZW5hYmxlID0gZGVidWdpbmZvZF9hc2s7Ci0tc3RhdGljIHVuc2lnbmVkIGRlYnVn aW5mb2RfdmVyYm9zZSA9IDE7Ci0rc3RhdGljIGNvbnN0IGNoYXIgKmRlYnVnaW5mb2RfZW5hYmxl ZF9lbnVtW10gPQotK3sKLSsgIGRlYnVnaW5mb2Rfb24sCi0rICBkZWJ1Z2luZm9kX29mZiwKLSsg IGRlYnVnaW5mb2RfYXNrLAotKyAgbnVsbHB0cgotK307Ci0rCi0rc3RhdGljIGNvbnN0IGNoYXIg KmRlYnVnaW5mb2RfZW5hYmxlZCA9Ci0rI2lmIGRlZmluZWQoSEFWRV9MSUJERUJVR0lORk9EKQot KyAgZGVidWdpbmZvZF9hc2s7Ci0rI2Vsc2UKLSsgIGRlYnVnaW5mb2Rfb2ZmOwotKyNlbmRpZgot KwotK3N0YXRpYyB1bnNpZ25lZCBpbnQgZGVidWdpbmZvZF92ZXJib3NlID0gMTsKLSAKLSAvKiBU aGlzIGlzIG5ldmVyIGFjdHVhbGx5IHVzZWQuICBVUkxzIGFyZSBhbHdheXMgcHVsbGVkIGZyb20g dGhlCi0gICAgZW52aXJvbm1lbnQuICAqLwotQEAgLTYwLDY0ICs3NCw2IEBAIGRlYnVnaW5mb2Rf ZGVidWdpbmZvX3F1ZXJ5IChjb25zdCB1bnNpZ25lZCBjaGFyICpidWlsZF9pZCwKLSAKLSAjZGVm aW5lIE5PX0lNUEwgXygiU3VwcG9ydCBmb3IgZGVidWdpbmZvZCBpcyBub3QgY29tcGlsZWQgaW50 byBHREIuIikKLSAKLS0vKiBTdHViIHNldC9zaG93IGNvbW1hbmRzIHRoYXQgaW5kaWNhdGUgZGVi dWdpbmZvZCBpcyBub3Qgc3VwcG9ydGVkLiAgKi8KLS0KLS1zdGF0aWMgdm9pZAotLXNldF9kZWJ1 Z2luZm9kX29uX2NvbW1hbmQgKGNvbnN0IGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKLS17Ci0t ICBlcnJvciAoTk9fSU1QTCk7Ci0tICBkZWJ1Z2luZm9kX2VuYWJsZSA9IGRlYnVnaW5mb2Rfb2Zm OwotLX0KLS0KLS1zdGF0aWMgdm9pZAotLXNldF9kZWJ1Z2luZm9kX29mZl9jb21tYW5kIChjb25z dCBjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCi0tewotLSAgZXJyb3IgKE5PX0lNUEwpOwotLSAg ZGVidWdpbmZvZF9lbmFibGUgPSBkZWJ1Z2luZm9kX29mZjsKLS19Ci0tCi0tc3RhdGljIHZvaWQK LS1zZXRfZGVidWdpbmZvZF9hc2tfY29tbWFuZCAoY29uc3QgY2hhciAqYXJncywgaW50IGZyb21f dHR5KQotLXsKLS0gIGVycm9yIChOT19JTVBMKTsKLS0gIGRlYnVnaW5mb2RfZW5hYmxlID0gZGVi dWdpbmZvZF9vZmY7Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tc2hvd19kZWJ1Z2luZm9kX3N0YXR1 c19jb21tYW5kIChjb25zdCBjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCi0tewotLSAgZXJyb3Ig KE5PX0lNUEwpOwotLX0KLS0KLS1zdGF0aWMgdm9pZAotLXNldF9kZWJ1Z2luZm9kX3VybHNfY29t bWFuZCAoY29uc3QgY2hhciAqaWdub3JlLCBpbnQgZnJvbV90dHksCi0tICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYykKLS17Ci0tICBlcnJvciAo Tk9fSU1QTCk7Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tc2hvd19kZWJ1Z2luZm9kX3VybHNfY29t bWFuZCAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKLS0JCQkgICAgICBzdHJ1 Y3QgY21kX2xpc3RfZWxlbWVudCAqY21kLCBjb25zdCBjaGFyICp2YWx1ZSkKLS17Ci0tICBlcnJv ciAoTk9fSU1QTCk7Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tc2V0X2RlYnVnaW5mb2RfdmVyYm9z ZV9jb21tYW5kIChjb25zdCBjaGFyICphcmdzLCBpbnQgZnJvbV90dHksCi0tCQkJCXN0cnVjdCBj bWRfbGlzdF9lbGVtZW50ICpjKQotLXsKLS0gIGVycm9yIChOT19JTVBMKTsKLS0gIGRlYnVnaW5m b2RfdmVyYm9zZSA9IDA7Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tc2hvd19kZWJ1Z2luZm9kX3Zl cmJvc2VfY29tbWFuZCAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKLS0JCQkJ IHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjbWQsCi0tCQkJCSBjb25zdCBjaGFyICp2YWx1ZSkK LS17Ci0tICBlcnJvciAoTk9fSU1QTCk7Ci0tfQotICNlbHNlCi0gI2luY2x1ZGUgPGVsZnV0aWxz L2RlYnVnaW5mb2QuaD4KLSAKLUBAIC0xNDUsODIgKzEwMSw2IEBAIHN0cnVjdCBkZWJ1Z2luZm9k X2NsaWVudF9kZWxldGVyCi0gdXNpbmcgZGVidWdpbmZvZF9jbGllbnRfdXAKLSAgID0gc3RkOjp1 bmlxdWVfcHRyPGRlYnVnaW5mb2RfY2xpZW50LCBkZWJ1Z2luZm9kX2NsaWVudF9kZWxldGVyPjsK LSAKLS0vKiBFbmFibGUgZGVidWdpbmZvZC4gICovCi0tCi0tc3RhdGljIHZvaWQKLS1zZXRfZGVi dWdpbmZvZF9vbl9jb21tYW5kIChjb25zdCBjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCi0tewot LSAgZGVidWdpbmZvZF9lbmFibGUgPSBkZWJ1Z2luZm9kX29uOwotLX0KLS0KLS0vKiBEaXNhYmxl IGRlYnVnaW5mb2QuICAqLwotLQotLXN0YXRpYyB2b2lkCi0tc2V0X2RlYnVnaW5mb2Rfb2ZmX2Nv bW1hbmQgKGNvbnN0IGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKLS17Ci0tICBkZWJ1Z2luZm9k X2VuYWJsZSA9IGRlYnVnaW5mb2Rfb2ZmOwotLX0KLS0KLS0vKiBCZWZvcmUgbmV4dCBxdWVyeSwg YXNrIHVzZXIgd2hldGhlciB0byBlbmFibGUgZGVidWdpbmZvZC4gICovCi0tCi0tc3RhdGljIHZv aWQKLS1zZXRfZGVidWdpbmZvZF9hc2tfY29tbWFuZCAoY29uc3QgY2hhciAqYXJncywgaW50IGZy b21fdHR5KQotLXsKLS0gIGRlYnVnaW5mb2RfZW5hYmxlID0gZGVidWdpbmZvZF9hc2s7Ci0tfQot LQotLS8qIFNob3cgd2hldGhlciBkZWJ1Z2luZm9kIGlzIGVuYWJsZWQuICAqLwotLQotLXN0YXRp YyB2b2lkCi0tc2hvd19kZWJ1Z2luZm9kX3N0YXR1c19jb21tYW5kIChjb25zdCBjaGFyICphcmdz LCBpbnQgZnJvbV90dHkpCi0tewotLSAgcHJpbnRmX3VuZmlsdGVyZWQgKF8oIkRlYnVnaW5mb2Qg ZnVuY3Rpb25hbGl0eSBpcyBjdXJyZW50bHkgc2V0IHRvICIgXAotLQkJICAgICAiXCIlc1wiLlxu IiksIGRlYnVnaW5mb2RfZW5hYmxlKTsKLS19Ci0tCi0tLyogU2V0IHRoZSBVUkxzIHRoYXQgZGVi dWdpbmZvZCB3aWxsIHF1ZXJ5LiAgKi8KLS0KLS1zdGF0aWMgdm9pZAotLXNldF9kZWJ1Z2luZm9k X3VybHNfY29tbWFuZCAoY29uc3QgY2hhciAqaWdub3JlLCBpbnQgZnJvbV90dHksCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYykKLS17Ci0t ICBnZGJfYXNzZXJ0IChkZWJ1Z2luZm9kX3VybHMgIT0gbnVsbHB0cik7Ci0tICBpZiAoc2V0ZW52 ICgiREVCVUdJTkZPRF9VUkxTIiwgZGVidWdpbmZvZF91cmxzLCAxKSAhPSAwKQotLSAgICB3YXJu aW5nIChfKCJVbmFibGUgdG8gc2V0IGRlYnVnaW5mb2QgVVJMczogJXMiKSwgc2FmZV9zdHJlcnJv ciAoZXJybm8pKTsKLS19Ci0tCi0tLyogU2hvdyB0aGUgVVJMcyB0aGF0IGRlYnVnaW5mb2Qgd2ls bCBxdWVyeS4gICovCi0tCi0tc3RhdGljIHZvaWQKLS1zaG93X2RlYnVnaW5mb2RfdXJsc19jb21t YW5kIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAotLQkJCSAgICAgIHN0cnVj dCBjbWRfbGlzdF9lbGVtZW50ICpjbWQsIGNvbnN0IGNoYXIgKnZhbHVlKQotLXsKLS0gIGlmICh2 YWx1ZSA9PSBudWxscHRyIHx8IHZhbHVlWzBdID09ICdcMCcpCi0tICAgIGZwcmludGZfdW5maWx0 ZXJlZCAoZmlsZSwgXygiRGVidWdpbmZvZCBVUkxzIGhhdmUgbm90IGJlZW4gc2V0LlxuIikpOwot LSAgZWxzZQotLSAgICBmcHJpbnRmX2ZpbHRlcmVkIChmaWxlLCBfKCJEZWJ1Z2luZm9kIFVSTHMg YXJlIGN1cnJlbnRseSBzZXQgdG86XG4lc1xuIiksCi0tCQkgICAgICB2YWx1ZSk7Ci0tfQotLQot LS8qIE5vLW9wIHNldHRlciB1c2VkIGZvciBjb21wYXRpYmlsaXR5IHdoZW4gZ2RiIGlzIGJ1aWx0 IHdpdGhvdXQgZGVidWdpbmZvZC4gICovCi0tCi0tc3RhdGljIHZvaWQKLS1zZXRfZGVidWdpbmZv ZF92ZXJib3NlX2NvbW1hbmQgKGNvbnN0IGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSwKLS0JCQkJ c3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMpCi0tewotLSAgcmV0dXJuOwotLX0KLS0KLS0vKiBT aG93IHZlcmJvc2l0eS4gICovCi0tCi0tc3RhdGljIHZvaWQKLS1zaG93X2RlYnVnaW5mb2RfdmVy Ym9zZV9jb21tYW5kIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAotLQkJCQkg c3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmNtZCwgY29uc3QgY2hhciAqdmFsdWUpCi0tewotLSAg ZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiRGVidWdpbmZvZCB2ZXJib3NlIG91dHB1dCBpcyBz ZXQgdG8gJXMuXG4iKSwKLS0JCSAgICB2YWx1ZSk7Ci0tfQotLQotIHN0YXRpYyBpbnQKLSBwcm9n cmVzc2ZuIChkZWJ1Z2luZm9kX2NsaWVudCAqYywgbG9uZyBjdXIsIGxvbmcgdG90YWwpCi0gewot QEAgLTI3NywxNSArMTU3LDE1IEBAIGdldF9kZWJ1Z2luZm9kX2NsaWVudCAoKQotICAgIHdoZXRo ZXIgdG8gZW5hYmxlIGRlYnVnaW5mb2QuICAqLwotIAotIHN0YXRpYyBib29sCi0tZGVidWdpbmZv ZF9lbmFibGVkICgpCi0rZGVidWdpbmZvZF9pc19lbmFibGVkICgpCi0gewotICAgY29uc3QgY2hh ciAqdXJscyA9IGdldGVudiAoREVCVUdJTkZPRF9VUkxTX0VOVl9WQVIpOwotIAotICAgaWYgKHVy bHMgPT0gbnVsbHB0ciB8fCB1cmxzWzBdID09ICdcMCcKLS0gICAgICB8fCBkZWJ1Z2luZm9kX2Vu YWJsZSA9PSBkZWJ1Z2luZm9kX29mZikKLSsgICAgICB8fCBkZWJ1Z2luZm9kX2VuYWJsZWQgPT0g ZGVidWdpbmZvZF9vZmYpCi0gICAgIHJldHVybiBmYWxzZTsKLSAKLS0gIGlmIChkZWJ1Z2luZm9k X2VuYWJsZSA9PSBkZWJ1Z2luZm9kX2FzaykKLSsgIGlmIChkZWJ1Z2luZm9kX2VuYWJsZWQgPT0g ZGVidWdpbmZvZF9hc2spCi0gICAgIHsKLSAgICAgICBpbnQgcmVzcCA9IG5xdWVyeSAoXygiXG5U aGlzIEdEQiBzdXBwb3J0cyBhdXRvLWRvd25sb2FkaW5nIGRlYnVnaW5mbyAiIFwKLSAJCQkgICAi ZnJvbSB0aGUgZm9sbG93aW5nIFVSTHM6XG4lc1xuRW5hYmxlIGRlYnVnaW5mb2QgIiBcCi1AQCAt Mjk0LDE2ICsxNzQsMTYgQEAgZGVidWdpbmZvZF9lbmFibGVkICgpCi0gICAgICAgaWYgKCFyZXNw KQotIAl7Ci0gCSAgcHJpbnRmX2ZpbHRlcmVkIChfKCJEZWJ1Z2luZm9kIGhhcyBiZWVuIGRpc2Fi bGVkLlxuVG8gbWFrZSB0aGlzICIgXAotLQkJCSAgICAgInNldHRpbmcgcGVybWFuZW50LCBhZGQg XCdzZXQgZGVidWdpbmZvZCBvZmZcJyAiIFwKLS0JCQkgICAgICJ0byAuZ2RiaW5pdC5cbiIpKTsK LS0JICBkZWJ1Z2luZm9kX2VuYWJsZSA9IGRlYnVnaW5mb2Rfb2ZmOwotKwkJCSAgICAgInNldHRp bmcgcGVybWFuZW50LCBhZGQgXCdzZXQgZGVidWdpbmZvZCAiIFwKLSsJCQkgICAgICJlbmFibGVk IG9mZlwnIHRvIC5nZGJpbml0LlxuIikpOwotKwkgIGRlYnVnaW5mb2RfZW5hYmxlZCA9IGRlYnVn aW5mb2Rfb2ZmOwotIAkgIHJldHVybiBmYWxzZTsKLSAJfQotIAotICAgICAgIHByaW50Zl9maWx0 ZXJlZCAoXygiRGVidWdpbmZvZCBoYXMgYmVlbiBlbmFibGVkLlxuVG8gbWFrZSB0aGlzICIgXAot LQkJCSAic2V0dGluZyBwZXJtYW5lbnQsIGFkZCBcJ3NldCBkZWJ1Z2luZm9kIG9uXCcgIiBcCi0t CQkJICJ0byAuZ2RiaW5pdC5cbiIpKTsKLS0gICAgICBkZWJ1Z2luZm9kX2VuYWJsZSA9IGRlYnVn aW5mb2Rfb247Ci0rCQkJICJzZXR0aW5nIHBlcm1hbmVudCwgYWRkIFwnc2V0IGRlYnVnaW5mb2Qg ZW5hYmxlZCAiIFwKLSsJCQkgIm9uXCcgdG8gLmdkYmluaXQuXG4iKSk7Ci0rICAgICAgZGVidWdp bmZvZF9lbmFibGVkID0gZGVidWdpbmZvZF9vbjsKLSAgICAgfQotIAotICAgcmV0dXJuIHRydWU7 Ci1AQCAtMzE3LDcgKzE5Nyw3IEBAIGRlYnVnaW5mb2Rfc291cmNlX3F1ZXJ5IChjb25zdCB1bnNp Z25lZCBjaGFyICpidWlsZF9pZCwKLSAJCQkgY29uc3QgY2hhciAqc3JjcGF0aCwKLSAJCQkgZ2Ri Ojp1bmlxdWVfeG1hbGxvY19wdHI8Y2hhcj4gKmRlc3RuYW1lKQotIHsKLS0gIGlmICghZGVidWdp bmZvZF9lbmFibGVkICgpKQotKyAgaWYgKCFkZWJ1Z2luZm9kX2lzX2VuYWJsZWQgKCkpCi0gICAg IHJldHVybiBzY29wZWRfZmQgKC1FTk9TWVMpOwotIAotICAgZGVidWdpbmZvZF9jbGllbnQgKmMg PSBnZXRfZGVidWdpbmZvZF9jbGllbnQgKCk7Ci1AQCAtMzU0LDcgKzIzNCw3IEBAIGRlYnVnaW5m b2RfZGVidWdpbmZvX3F1ZXJ5IChjb25zdCB1bnNpZ25lZCBjaGFyICpidWlsZF9pZCwKLSAJCQkg ICAgY29uc3QgY2hhciAqZmlsZW5hbWUsCi0gCQkJICAgIGdkYjo6dW5pcXVlX3htYWxsb2NfcHRy PGNoYXI+ICpkZXN0bmFtZSkKLSB7Ci0tICBpZiAoIWRlYnVnaW5mb2RfZW5hYmxlZCAoKSkKLSsg IGlmICghZGVidWdpbmZvZF9pc19lbmFibGVkICgpKQotICAgICByZXR1cm4gc2NvcGVkX2ZkICgt RU5PU1lTKTsKLSAKLSAgIGRlYnVnaW5mb2RfY2xpZW50ICpjID0gZ2V0X2RlYnVnaW5mb2RfY2xp ZW50ICgpOwotQEAgLTM4Miw2ICsyNjIsNjcgQEAgZGVidWdpbmZvZF9kZWJ1Z2luZm9fcXVlcnkg KGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1aWxkX2lkLAotIH0KLSAjZW5kaWYKLSAKLSsvKiBTZXQg Y2FsbGJhY2sgZm9yICJzZXQgZGVidWdpbmZvZCBlbmFibGVkIi4gICovCi0rCi0rc3RhdGljIHZv aWQKLStzZXRfZGVidWdpbmZvZF9lbmFibGVkIChjb25zdCBjaGFyICphcmdzLCBpbnQgZnJvbV90 dHksCi0rICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMp Ci0rewotKyNpZiBkZWZpbmVkKEhBVkVfTElCREVCVUdJTkZPRCkKLSsgIC8qIFZhbHVlIGlzIGFs cmVhZHkgc2V0LiAgKi8KLSsjZWxzZQotKyAgZXJyb3IgKE5PX0lNUEwpOwotKyNlbmRpZgotK30K LSsKLSsvKiBTaG93IGNhbGxiYWNrIGZvciAic2V0IGRlYnVnaW5mb2QgZW5hYmxlZCIuICAqLwot KwotK3N0YXRpYyB2b2lkCi0rc2hvd19kZWJ1Z2luZm9kX2VuYWJsZWQgKHVpX2ZpbGUgKmZpbGUs IGludCBmcm9tX3R0eSwgY21kX2xpc3RfZWxlbWVudCAqY21kLAotKwkJCSBjb25zdCBjaGFyICp2 YWx1ZSkKLSt7Ci0rICBwcmludGZfdW5maWx0ZXJlZCAoXygiRGVidWdpbmZvZCBmdW5jdGlvbmFs aXR5IGlzIGN1cnJlbnRseSBzZXQgdG8gIgotKwkJICAgICAgICJcIiVzXCIuXG4iKSwgZGVidWdp bmZvZF9lbmFibGVkKTsKLSt9Ci0rCi0rLyogU2V0IGNhbGxiYWNrIGZvciAic2V0IGRlYnVnaW5m b2QgdXJscyIuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2V0X2RlYnVnaW5mb2RfdXJscyAoY29u c3QgY2hhciAqYXJncywgaW50IGZyb21fdHR5LAotKyAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCBjbWRfbGlzdF9lbGVtZW50ICpjKQotK3sKLSsjaWYgZGVmaW5lZChIQVZFX0xJQkRFQlVHSU5G T0QpCi0rICBnZGJfYXNzZXJ0IChkZWJ1Z2luZm9kX3VybHMgIT0gbnVsbHB0cik7Ci0rICBpZiAo c2V0ZW52IChERUJVR0lORk9EX1VSTFNfRU5WX1ZBUiwgZGVidWdpbmZvZF91cmxzLCAxKSAhPSAw KQotKyAgICB3YXJuaW5nIChfKCJVbmFibGUgdG8gc2V0IGRlYnVnaW5mb2QgVVJMczogJXMiKSwg c2FmZV9zdHJlcnJvciAoZXJybm8pKTsKLSsjZWxzZQotKyAgZXJyb3IgKE5PX0lNUEwpOwotKyNl bmRpZgotK30KLSsKLSsvKiBTaG93IGNhbGxiYWNrIGZvciAic2V0IGRlYnVnaW5mb2QgdXJscyIu ICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2hvd19kZWJ1Z2luZm9kX3VybHMgKHVpX2ZpbGUgKmZp bGUsIGludCBmcm9tX3R0eSwgY21kX2xpc3RfZWxlbWVudCAqY21kLAotKwkJICAgICAgY29uc3Qg Y2hhciAqdmFsdWUpCi0rewotKyAgaWYgKHZhbHVlWzBdID09ICdcMCcpCi0rICAgIGZwcmludGZf dW5maWx0ZXJlZCAoZmlsZSwgXygiRGVidWdpbmZvZCBVUkxzIGhhdmUgbm90IGJlZW4gc2V0Llxu IikpOwotKyAgZWxzZQotKyAgICBmcHJpbnRmX2ZpbHRlcmVkIChmaWxlLCBfKCJEZWJ1Z2luZm9k IFVSTHMgYXJlIGN1cnJlbnRseSBzZXQgdG86XG4lc1xuIiksCi0rCQkgICAgICB2YWx1ZSk7Ci0r fQotKwotKy8qIFNob3cgY2FsbGJhY2sgZm9yICJzZXQgZGVidWdpbmZvZCB2ZXJib3NlIi4gICov Ci0rCi0rc3RhdGljIHZvaWQKLStzaG93X2RlYnVnaW5mb2RfdmVyYm9zZV9jb21tYW5kICh1aV9m aWxlICpmaWxlLCBpbnQgZnJvbV90dHksCi0rCQkJCSBjbWRfbGlzdF9lbGVtZW50ICpjbWQsIGNv bnN0IGNoYXIgKnZhbHVlKQotK3sKLSsgIGZwcmludGZfZmlsdGVyZWQgKGZpbGUsIF8oIkRlYnVn aW5mb2QgdmVyYm9zZSBvdXRwdXQgaXMgc2V0IHRvICVzLlxuIiksCi0rCQkgICAgdmFsdWUpOwot K30KLSsKLSAvKiBSZWdpc3RlciBkZWJ1Z2luZm9kIGNvbW1hbmRzLiAgKi8KLSAKLSB2b2lkIF9p bml0aWFsaXplX2RlYnVnaW5mb2QgKCk7Ci1AQCAtMzk3LDIzICszMzgsMTcgQEAgX2luaXRpYWxp emVfZGVidWdpbmZvZCAoKQotICAgICAgICAgICAgICAgICAgICAgICAgXygiU2hvdyBkZWJ1Z2lu Zm9kIG9wdGlvbi4iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICZzaG93X2RlYnVnaW5mb2Rf cHJlZml4X2xpc3QsIDAsICZzaG93bGlzdCk7Ci0gCi0tICAvKiBzZXQgZGVidWdpbmZvZCBvbiAq LwotLSAgYWRkX2NtZCAoIm9uIiwgY2xhc3NfcnVuLCBzZXRfZGVidWdpbmZvZF9vbl9jb21tYW5k LAotLQkgICBfKCJFbmFibGUgZGVidWdpbmZvZC4iKSwgJnNldF9kZWJ1Z2luZm9kX3ByZWZpeF9s aXN0KTsKLS0KLS0gIC8qIHNldCBkZWJ1Z2luZm9kIG9mZiAqLwotLSAgYWRkX2NtZCAoIm9mZiIs IGNsYXNzX3J1biwgc2V0X2RlYnVnaW5mb2Rfb2ZmX2NvbW1hbmQsCi0tCSAgIF8oIkRpc2FibGUg ZGVidWdpbmZvZC4iKSwgJnNldF9kZWJ1Z2luZm9kX3ByZWZpeF9saXN0KTsKLS0KLS0gIC8qIHNl dCBkZWJ1Z2luZm9kIGFzayAqLwotLSAgYWRkX2NtZCAoImFzayIsIGNsYXNzX3J1biwgc2V0X2Rl YnVnaW5mb2RfYXNrX2NvbW1hbmQsIF8oIlwKLS1Bc2sgdGhlIHVzZXIgd2hldGhlciB0byBlbmFi bGUgZGVidWdpbmZvZCBiZWZvcmUgcGVyZm9ybWluZyB0aGUgbmV4dCBxdWVyeS4iKSwKLS0JICAg JnNldF9kZWJ1Z2luZm9kX3ByZWZpeF9saXN0KTsKLS0KLS0gIC8qIHNob3cgZGVidWdpbmZvZCBz dGF0dXMgKi8KLS0gIGFkZF9jbWQgKCJzdGF0dXMiLCBjbGFzc19ydW4sIHNob3dfZGVidWdpbmZv ZF9zdGF0dXNfY29tbWFuZCwKLS0JICAgXygiU2hvdyB3aGV0aGVyIGRlYnVnaW5mb2QgaXMgc2V0 IHRvIFwib25cIiwgXCJvZmZcIiBvciBcImFza1wiLiIpLAotLQkgICAmc2hvd19kZWJ1Z2luZm9k X3ByZWZpeF9saXN0KTsKLSsgIGFkZF9zZXRzaG93X2VudW1fY21kICgiZW5hYmxlZCIsIGNsYXNz X3J1biwgZGVidWdpbmZvZF9lbmFibGVkX2VudW0sCi0rICAgICAgICAgICAgICAgICAgICAgICAg JmRlYnVnaW5mb2RfZW5hYmxlZCwKLSsJCQlfKCJTZXQgd2hldGhlciB0byB1c2UgZGVidWdpbmZv ZC4iKSwKLSsJCQlfKCJTaG93IHdoZXRoZXIgdG8gdXNlIGRlYnVnaW5mb2QuIiksCi0rCQkJXygi XAotK1doZW4gb24sIGVuYWJsZSB0aGUgdXNlIG9mIGRlYnVnaW5mb2QgdG8gZG93bmxvYWQgbWlz c2luZyBkZWJ1ZyBpbmZvIGFuZFxuXAotK3NvdXJjZSBmaWxlcy4iKSwKLSsJCQlzZXRfZGVidWdp bmZvZF9lbmFibGVkLAotKwkJCXNob3dfZGVidWdpbmZvZF9lbmFibGVkLAotKwkJCSZzZXRfZGVi dWdpbmZvZF9wcmVmaXhfbGlzdCwKLSsJCQkmc2hvd19kZWJ1Z2luZm9kX3ByZWZpeF9saXN0KTsK LSAKLSAgIC8qIHNldC9zaG93IGRlYnVnaW5mb2QgdXJscyAqLwotICAgYWRkX3NldHNob3dfc3Ry aW5nX25vZXNjYXBlX2NtZCAoInVybHMiLCBjbGFzc19ydW4sICZkZWJ1Z2luZm9kX3VybHMsIF8o IlwKLUBAIC00MjIsOCArMzU3LDggQEAgU2hvdyB0aGUgbGlzdCBvZiBkZWJ1Z2luZm9kIHNlcnZl ciBVUkxzLiIpLCBfKCJcCi0gTWFuYWdlIHRoZSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBkZWJ1 Z2luZm9kIHNlcnZlciBVUkxzIHRoYXQgR0RCIHdpbGwgcXVlcnkgXAotIHdoZW4gbWlzc2luZyBk ZWJ1Z2luZm8sIGV4ZWN1dGFibGVzIG9yIHNvdXJjZSBmaWxlcy5cblRoZSBkZWZhdWx0IHZhbHVl IGlzIFwKLSBjb3BpZWQgZnJvbSB0aGUgREVCVUdJTkZPRF9VUkxTIGVudmlyb25tZW50IHZhcmlh YmxlLiIpLAotLQkJCQkgICBzZXRfZGVidWdpbmZvZF91cmxzX2NvbW1hbmQsCi0tCQkJCSAgIHNo b3dfZGVidWdpbmZvZF91cmxzX2NvbW1hbmQsCi0rCQkJCSAgIHNldF9kZWJ1Z2luZm9kX3VybHMs Ci0rCQkJCSAgIHNob3dfZGVidWdpbmZvZF91cmxzLAotIAkJCQkgICAmc2V0X2RlYnVnaW5mb2Rf cHJlZml4X2xpc3QsCi0gCQkJCSAgICZzaG93X2RlYnVnaW5mb2RfcHJlZml4X2xpc3QpOwotICAg aWYgKGdldGVudiAoIkRFQlVHSU5GT0RfVVJMUyIpICE9IG51bGxwdHIpCi1AQCAtNDM2LDcgKzM3 MSw3IEBAIFNldCB2ZXJib3NpdHkgb2YgZGVidWdpbmZvZCBvdXRwdXQuIiksIF8oIlwKLSBTaG93 IGRlYnVnaW5mb2QgZGVidWdnaW5nLiIpLCBfKCJcCi0gV2hlbiBzZXQgdG8gYSBub24temVybyB2 YWx1ZSwgZGlzcGxheSB2ZXJib3NlIG91dHB1dCBmb3IgZWFjaCBkZWJ1Z2luZm9kIFwKLSBxdWVy eS5cblRvIGRpc2FibGUsIHNldCB0byB6ZXJvLiAgVmVyYm9zZSBvdXRwdXQgaXMgZGlzcGxheWVk IGJ5IGRlZmF1bHQuIiksCi0tCQkJICAgICBzZXRfZGVidWdpbmZvZF92ZXJib3NlX2NvbW1hbmQs Ci0rCQkJICAgICBudWxscHRyLAotIAkJCSAgICAgc2hvd19kZWJ1Z2luZm9kX3ZlcmJvc2VfY29t bWFuZCwKLSAJCQkgICAgICZzZXRfZGVidWdpbmZvZF9wcmVmaXhfbGlzdCwKLSAJCQkgICAgICZz aG93X2RlYnVnaW5mb2RfcHJlZml4X2xpc3QpOwotZGlmZiAtLWdpdCBhL2dkYi9kb2MvZ2RiLnRl eGluZm8gYi9nZGIvZG9jL2dkYi50ZXhpbmZvCi0tLS0gYS9nZGIvZG9jL2dkYi50ZXhpbmZvCi0r KysgYi9nZGIvZG9jL2dkYi50ZXhpbmZvCi1AQCAtNDcwNDYsMjcgKzQ3MDQ2LDI4IEBAIHJlZ2Fy ZGluZyBAY29kZXtkZWJ1Z2luZm9kfS4KLSBAdmFsdWV7R0RCTn0gcHJvdmlkZXMgdGhlIGZvbGxv d2luZyBjb21tYW5kcyBmb3IgY29uZmlndXJpbmcgQGNvZGV7ZGVidWdpbmZvZH0uCi0gCi0gQHRh YmxlIEBjb2RlCi0tQGtpbmRleCBzZXQgZGVidWdpbmZvZAotLUBhbmNob3J7c2V0IGRlYnVnaW5m b2R9Ci0tQGl0ZW0gc2V0IGRlYnVnaW5mb2QKLS1AaXRlbXggc2V0IGRlYnVnaW5mb2Qgb24KLStA a2luZGV4IHNldCBkZWJ1Z2luZm9kIGVuYWJsZWQKLStAYW5jaG9ye3NldCBkZWJ1Z2luZm9kIGVu YWJsZWR9Ci0rQGl0ZW0gc2V0IGRlYnVnaW5mb2QgZW5hYmxlZAotK0BpdGVteCBzZXQgZGVidWdp bmZvZCBlbmFibGVkIG9uCi0gQGNpbmRleCBlbmFibGUgZGVidWdpbmZvZAotIEB2YWx1ZXtHREJO fSB3aWxsIGF0dGVtcHQgdG8gcXVlcnkgQGNvZGV7ZGVidWdpbmZvZH0gc2VydmVycyB3aGVuIG1p c3NpbmcgZGVidWcKLSBpbmZvIG9yIHNvdXJjZSBmaWxlcy4KLSAKLS1AaXRlbSBzZXQgZGVidWdp bmZvZCBvZmYKLStAaXRlbSBzZXQgZGVidWdpbmZvZCBlbmFibGVkIG9mZgotIEB2YWx1ZXtHREJO fSB3aWxsIG5vdCBhdHRlbXB0IHRvIHF1ZXJ5IEBjb2Rle2RlYnVnaW5mb2R9IHNlcnZlcnMgd2hl biBtaXNzaW5nCi0tZGVidWcgaW5mbyBvciBzb3VyY2UgZmlsZXMuICBCeSBkZWZhdWx0LCBAY29k ZXtkZWJ1Z2luZm9kfSBpcyBzZXQgdG8gQGNvZGV7b2ZmfQotLWZvciBub24taW50ZXJhY3RpdmUg c2Vzc2lvbnMuCi0rZGVidWcgaW5mbyBvciBzb3VyY2UgZmlsZXMuICBCeSBkZWZhdWx0LCBAY29k ZXtkZWJ1Z2luZm9kIGVuYWJsZWR9IGlzIHNldCB0bwotK0Bjb2Rle29mZn0gZm9yIG5vbi1pbnRl cmFjdGl2ZSBzZXNzaW9ucy4KLSAKLS1AaXRlbSBzZXQgZGVidWdpbmZvZCBhc2sKLStAaXRlbSBz ZXQgZGVidWdpbmZvZCBlbmFibGVkIGFzawotIEB2YWx1ZXtHREJOfSB3aWxsIHByb21wdCB0aGUg dXNlciB0byBlbmFibGUgb3IgZGlzYWJsZSBAY29kZXtkZWJ1Z2luZm9kfSBiZWZvcmUKLS1hdHRl bXB0aW5nIHRvIHBlcmZvcm0gdGhlIG5leHQgcXVlcnkuICBCeSBkZWZhdWx0LCBAY29kZXtkZWJ1 Z2luZm9kfSBpcyBzZXQgdG8KLS1AY29kZXthc2t9IGZvciBpbnRlcmFjdGl2ZSBzZXNzaW9ucy4K LSthdHRlbXB0aW5nIHRvIHBlcmZvcm0gdGhlIG5leHQgcXVlcnkuICBCeSBkZWZhdWx0LCBAY29k ZXtkZWJ1Z2luZm9kIGVuYWJsZWR9Ci0raXMgc2V0IHRvIEBjb2Rle2Fza30gZm9yIGludGVyYWN0 aXZlIHNlc3Npb25zLgotIAotLUBraW5kZXggc2hvdyBkZWJ1Z2luZm9kIHN0YXR1cwotLUBpdGVt IHNob3cgZGVidWdpbmZvZCBzdGF0dXMKLS1TaG93IHdoZXRoZXIgQGNvZGV7ZGVidWdpbmZvZH0g aXMgc2V0IHRvIEBjb2Rle29ufSwgQGNvZGV7b2ZmfSBvciBAY29kZXthc2t9LgotK0BraW5kZXgg c2hvdyBkZWJ1Z2luZm9kIGVuYWJsZWQKLStAaXRlbSBzaG93IGRlYnVnaW5mb2QgZW5hYmxlZAot K0Rpc3BsYXkgd2hldGhlciBAY29kZXtkZWJ1Z2luZm9kIGVuYWJsZWR9IGlzIHNldCB0byBAY29k ZXtvbn0sIEBjb2Rle29mZn0gb3IKLStAY29kZXthc2t9LgotIAotIEBraW5kZXggc2V0IGRlYnVn aW5mb2QgdXJscwotIEBjaW5kZXggY29uZmlndXJlIGRlYnVnaW5mb2QgVVJMcwotZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmRlYnVnaW5mb2QvZmV0Y2hfc3JjX2FuZF9zeW1ib2xzLmV4 cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmRlYnVnaW5mb2QvZmV0Y2hfc3JjX2FuZF9zeW1ib2xzLmV4 cAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZGVidWdpbmZvZC9mZXRjaF9zcmNfYW5kX3N5bWJv bHMuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kZWJ1Z2luZm9kL2ZldGNoX3NyY19hbmRf c3ltYm9scy5leHAKLUBAIC0yMzYsNyArMjM2LDcgQEAgcHJvYyBsb2NhbF91cmwgeyB9IHsKLSAg ICAgY2xlYW5fcmVzdGFydAotICAgICBnZGJfdGVzdCAiZmlsZSAkYmluZmlsZSIgIi4qTm8gZGVi dWdnaW5nIHN5bWJvbHMuKiIgXAotIAkiZmlsZSBbZmlsZSB0YWlsICRiaW5maWxlXSBjbWQiCi0t ICAgIGdkYl90ZXN0X25vX291dHB1dCAic2V0IGRlYnVnaW5mb2Qgb2ZmIgotKyAgICBnZGJfdGVz dF9ub19vdXRwdXQgInNldCBkZWJ1Z2luZm9kIGVuYWJsZWQgb2ZmIgotICAgICBnZGJfdGVzdF9u b19vdXRwdXQgInNldCBkZWJ1Z2luZm9kIHVybHMgaHR0cDovLzEyNy4wLjAuMTokcG9ydCIKLSAK LSAgICAgIyBnZGIgc2hvdWxkbid0IGZpbmQgdGhlIGRlYnVnaW5mbyBzaW5jZSBkZWJ1Z2luZm9k IGhhcyBiZWVuIGRpc2FibGVkCi1AQCAtMjQ0LDcgKzI0NCw3IEBAIHByb2MgbG9jYWxfdXJsIHsg fSB7Ci0gCSJmaWxlIFtmaWxlIHRhaWwgJGJpbmZpbGVdIGNtZCBvZmYiCi0gCi0gICAgICMgRW5h YmxlIGRlYnVnaW5mb2QgYW5kIGZldGNoIHRoZSBkZWJ1Z2luZm8KLS0gICAgZ2RiX3Rlc3Rfbm9f b3V0cHV0ICJzZXQgZGVidWdpbmZvZCBvbiIKLSsgICAgZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQg ZGVidWdpbmZvZCBlbmFibGVkIG9uIgotICAgICBnZGJfdGVzdCAiZmlsZSAkYmluZmlsZSIgIi4q UmVhZGluZyBzeW1ib2xzIGZyb20uKmRlYnVnaW5mby4qIiBcCi0gCSJmaWxlIFtmaWxlIHRhaWwg JGJpbmZpbGVdIGNtZCBvbiIKLSB9CgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYnoyMDI0ODc1LWV4cGFu ZC1kb2N1bWVudGF0aW9uLWZvci1kZWJ1Z2luZm9kLnBhdGNoIGIvZ2RiLXJoYnoyMDI0ODc1LWV4 cGFuZC1kb2N1bWVudGF0aW9uLWZvci1kZWJ1Z2luZm9kLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCBjZGYzYmY0Li4wMDAwMDAwCi0tLSBhL2dkYi1yaGJ6MjAyNDg3NS1leHBh bmQtZG9jdW1lbnRhdGlvbi1mb3ItZGVidWdpbmZvZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDE1MiArMCwwIEBACi1Gcm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQotRnJvbTogPT9VVEYtOD9xP0FsZXhhbmRyYT0yMEg9QzM9QTFqa292PUMzPUExPz0gPGFoYWpr b3ZhQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDEwIEphbiAyMDIyIDEzOjAwOjUwICswMTAwCi1T dWJqZWN0OiBnZGItcmhiejIwMjQ4NzUtZXhwYW5kLWRvY3VtZW50YXRpb24tZm9yLWRlYnVnaW5m b2QucGF0Y2gKLQotOztCYWNrcG9ydCB1cHN0cmVhbSBjb21taXQgZnJvbSBBYXJvbiBNZXJleQot OzszZWE0NGYyMTI5OSBnZGIudGV4aW5mbzogRXhwYW5kIGRvY3VtZW50YXRpb24gZm9yIGRlYnVn aW5mb2QKLQotZ2RiLnRleGluZm86IEV4cGFuZCBkb2N1bWVudGF0aW9uIGZvciBkZWJ1Z2luZm9k Ci0KLUFkZCBzZWN0aW9uIGRlc2NyaWJpbmcgR0RCJ3MgdXNhZ2Ugb2YgZGVidWdpbmZvZC4KLQot UmVmZXIgdG8gdGhpcyBuZXcgc2VjdGlvbiBpbiB0aGUgZGVzY3JpcHRpb24gb2YgdGhlICctLXdp dGgtZGVidWdpbmZvZCcKLWNvbmZpZ3VyZSBvcHRpb24uCi0KLU1lbnRpb24gZGVidWdpbmZvZCBp biB0aGUgJ1NlcGFyYXRlIERlYnVnIEZpbGVzJyBzZWN0aW9uLgotCi1kaWZmIC0tZ2l0IGEvZ2Ri L2RvYy9nZGIudGV4aW5mbyBiL2dkYi9kb2MvZ2RiLnRleGluZm8KLS0tLSBhL2dkYi9kb2MvZ2Ri LnRleGluZm8KLSsrKyBiL2dkYi9kb2MvZ2RiLnRleGluZm8KLUBAIC0xODQsNiArMTg0LDcgQEAg c29mdHdhcmUgaW4gZ2VuZXJhbC4gIFdlIHdpbGwgbWlzcyBoaW0uCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGhlIG9wZXJhdGluZyBzeXN0ZW0KLSAqIFRyYWNlIEZpbGUgRm9y bWF0OjoJCUdEQiB0cmFjZSBmaWxlIGZvcm1hdAotICogSW5kZXggU2VjdGlvbiBGb3JtYXQ6OiAg ICAgICAgLmdkYl9pbmRleCBzZWN0aW9uIGZvcm1hdAotKyogRGVidWdpbmZvZDo6ICAgICAgICAg ICAgICAgICAgRG93bmxvYWQgZGVidWdnaW5nIHJlc291cmNlcyB3aXRoIEBjb2Rle2RlYnVnaW5m b2R9Ci0gKiBNYW4gUGFnZXM6OgkJCU1hbnVhbCBwYWdlcwotICogQ29weWluZzo6CQkJR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2Ugc2F5cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaG93IHlvdSBjYW4gY29weSBhbmQgc2hhcmUgR0RCCi1AQCAtMjEzNzMsNyArMjEzNzQsOSBA QCBGb3IgdGhlIGBgYnVpbGQgSUQnJyBtZXRob2QsIEB2YWx1ZXtHREJOfSBsb29rcyBpbiB0aGUK LSBhIGZpbGUgbmFtZWQgQGZpbGV7QHZhcntubn0vQHZhcntubm5ubm5ubn0uZGVidWd9LCB3aGVy ZSBAdmFye25ufSBhcmUgdGhlCi0gZmlyc3QgMiBoZXggY2hhcmFjdGVycyBvZiB0aGUgYnVpbGQg SUQgYml0IHN0cmluZywgYW5kIEB2YXJ7bm5ubm5ubm59Ci0gYXJlIHRoZSByZXN0IG9mIHRoZSBi aXQgc3RyaW5nLiAgKFJlYWwgYnVpbGQgSUQgc3RyaW5ncyBhcmUgMzIgb3IgbW9yZQotLWhleCBj aGFyYWN0ZXJzLCBub3QgMTAuKQotK2hleCBjaGFyYWN0ZXJzLCBub3QgMTAuKSAgQHZhbHVle0dE Qk59IGNhbiBhdXRvbWF0aWNhbGx5IHF1ZXJ5Ci0rQGNvZGV7ZGVidWdpbmZvZH0gc2VydmVycyB1 c2luZyBidWlsZCBJRHMgaW4gb3JkZXIgdG8gZG93bmxvYWQgc2VwYXJhdGUgZGVidWcKLStmaWxl cyB0aGF0IGNhbm5vdCBiZSBmb3VuZCBsb2NhbGx5LiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2Vl IEByZWZ7RGVidWdpbmZvZH0uCi0gQGVuZCBpdGVtaXplCi0gCi0gU28sIGZvciBleGFtcGxlLCBz dXBwb3NlIHlvdSBhc2sgQHZhbHVle0dEQk59IHRvIGRlYnVnCi1AQCAtMjEzOTQsNiArMjEzOTcs MTAgQEAgZGVidWcgaW5mb3JtYXRpb24gZmlsZXMsIGluIHRoZSBpbmRpY2F0ZWQgb3JkZXI6Ci0g QGZpbGV7L3Vzci9saWIvZGVidWcvdXNyL2Jpbi9scy5kZWJ1Z30uCi0gQGVuZCBpdGVtaXplCi0g Ci0rSWYgdGhlIGRlYnVnIGZpbGUgc3RpbGwgaGFzIG5vdCBiZWVuIGZvdW5kIGFuZCBAY29kZXtk ZWJ1Z2luZm9kfQotKyhAcHhyZWZ7RGVidWdpbmZvZH0pIGlzIGVuYWJsZWQsIEB2YWx1ZXtHREJO fSB3aWxsIGF0dGVtcHQgdG8gZG93bmxvYWQgdGhlCi0rZmlsZSBmcm9tIEBjb2Rle2RlYnVnaW5m b2R9IHNlcnZlcnMuCi0rCi0gQGFuY2hvcntkZWJ1Zy1maWxlLWRpcmVjdG9yeX0KLSBHbG9iYWwg ZGVidWdnaW5nIGluZm8gZGlyZWN0b3JpZXMgZGVmYXVsdCB0byB3aGF0IGlzIHNldCBieSBAdmFs dWV7R0RCTn0KLSBjb25maWd1cmUgb3B0aW9uIEBvcHRpb257LS13aXRoLXNlcGFyYXRlLWRlYnVn LWRpcn0uICBEdXJpbmcgQHZhbHVle0dEQk59IHJ1bgotQEAgLTM4NzQ2LDEyICszODc1MywxMiBA QCBVc2UgdGhlIGN1cnNlcyBsaWJyYXJ5IGluc3RlYWQgb2YgdGhlIHRlcm1jYXAgbGlicmFyeSwg Zm9yIHRleHQtbW9kZQotIHRlcm1pbmFsIG9wZXJhdGlvbnMuCi0gCi0gQGl0ZW0gLS13aXRoLWRl YnVnaW5mb2QKLS1CdWlsZCBAdmFsdWV7R0RCTn0gd2l0aCBsaWJkZWJ1Z2luZm9kLCB0aGUgZGVi dWdpbmZvZCBjbGllbnQgbGlicmFyeS4KLS1Vc2VkIHRvIGF1dG9tYXRpY2FsbHkgZmV0Y2ggc291 cmNlIGZpbGVzIGFuZCBzZXBhcmF0ZSBkZWJ1ZyBmaWxlcyBmcm9tCi0tZGVidWdpbmZvZCBzZXJ2 ZXJzIHVzaW5nIHRoZSBhc3NvY2lhdGVkIGV4ZWN1dGFibGUncyBidWlsZCBJRC4gRW5hYmxlZAot LWJ5IGRlZmF1bHQgaWYgbGliZGVidWdpbmZvZCBpcyBpbnN0YWxsZWQgYW5kIGZvdW5kIGF0IGNv bmZpZ3VyZSB0aW1lLgotLWRlYnVnaW5mb2QgaXMgcGFja2FnZWQgd2l0aCBlbGZ1dGlscywgc3Rh cnRpbmcgd2l0aCB2ZXJzaW9uIDAuMTc4LiBZb3UKLS1jYW4gZ2V0IHRoZSBsYXRlc3QgdmVyc2lv biBmcm9tIGBodHRwczovL3NvdXJjZXdhcmUub3JnL2VsZnV0aWxzLycuCi0rQnVpbGQgQHZhbHVl e0dEQk59IHdpdGggQGZpbGV7bGliZGVidWdpbmZvZH0sIHRoZSBAY29kZXtkZWJ1Z2luZm9kfSBj bGllbnQKLStsaWJyYXJ5LiAgVXNlZCB0byBhdXRvbWF0aWNhbGx5IGZldGNoIEVMRiwgRFdBUkYg YW5kIHNvdXJjZSBmaWxlcyBmcm9tCi0rQGNvZGV7ZGVidWdpbmZvZH0gc2VydmVycyB1c2luZyBi dWlsZCBJRHMgYXNzb2NpYXRlZCB3aXRoIGFueSBtaXNzaW5nCi0rZmlsZXMuICBFbmFibGVkIGJ5 IGRlZmF1bHQgaWYgQGZpbGV7bGliZGVidWdpbmZvZH0gaXMgaW5zdGFsbGVkIGFuZCBmb3VuZAot K2F0IGNvbmZpZ3VyZSB0aW1lLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gcmVnYXJkaW5nIEBjb2Rl e2RlYnVnaW5mb2R9IHNlZQotK0ByZWZ7RGVidWdpbmZvZH0uCi0gCi0gQGl0ZW0gLS13aXRoLWxp YnVud2luZC1pYTY0Ci0gVXNlIHRoZSBsaWJ1bndpbmQgbGlicmFyeSBmb3IgdW53aW5kaW5nIGZ1 bmN0aW9uIGNhbGwgc3RhY2sgb24gaWE2NAotQEAgLTQ3MDEyLDYgKzQ3MDE5LDgyIEBAIHN3aXRj aCAoZGllLT50YWcpCi0gICBAfQotIEBlbmQgc21hbGxleGFtcGxlCi0gCi0rQG5vZGUgRGVidWdp bmZvZAotK0BhcHBlbmRpeCBEb3dubG9hZCBkZWJ1Z2dpbmcgcmVzb3VyY2VzIHdpdGggRGVidWdp bmZvZAotK0BjaW5kZXggZGVidWdpbmZvZAotKwotK0Bjb2Rle2RlYnVnaW5mb2R9IGlzIGFuIEhU VFAgc2VydmVyIGZvciBkaXN0cmlidXRpbmcgRUxGLCBEV0FSRiBhbmQgc291cmNlCi0rZmlsZXMu Ci0rCi0rV2l0aCB0aGUgQGNvZGV7ZGVidWdpbmZvZH0gY2xpZW50IGxpYnJhcnksIEBmaWxle2xp YmRlYnVnaW5mb2R9LCBAdmFsdWV7R0RCTn0KLStjYW4gcXVlcnkgc2VydmVycyB1c2luZyB0aGUg YnVpbGQgSURzIGFzc29jaWF0ZWQgd2l0aCBtaXNzaW5nIGRlYnVnIGluZm8sCi0rZXhlY3V0YWJs ZXMgYW5kIHNvdXJjZSBmaWxlcyBpbiBvcmRlciB0byBkb3dubG9hZCB0aGVtIG9uIGRlbWFuZC4K LSsKLStGb3IgaW5zdHJ1Y3Rpb25zIG9uIGJ1aWxkaW5nIEB2YWx1ZXtHREJOfSB3aXRoIEBmaWxl e2xpYmRlYnVnaW5mb2R9LAotK0BweHJlZntDb25maWd1cmUgT3B0aW9ucywsLS13aXRoLWRlYnVn aW5mb2R9LiAgQGNvZGV7ZGVidWdpbmZvZH0gaXMgcGFja2FnZWQKLSt3aXRoIEBjb2Rle2VsZnV0 aWxzfSwgc3RhcnRpbmcgd2l0aCB2ZXJzaW9uIDAuMTc4LiAgU2VlCi0rQHVyZWZ7aHR0cHM6Ly9z b3VyY2V3YXJlLm9yZy9lbGZ1dGlscy9EZWJ1Z2luZm9kLmh0bWx9IGZvciBtb3JlIGluZm9ybWF0 aW9uCi0rcmVnYXJkaW5nIEBjb2Rle2RlYnVnaW5mb2R9LgotKwotK0BtZW51Ci0rKiBEZWJ1Z2lu Zm9kIFNldHRpbmdzOjoJCUNvbmZpZ3VyaW5nIGRlYnVnaW5mb2Qgd2l0aCBAdmFsdWV7R0RCTn0K LStAZW5kIG1lbnUKLSsKLStAbm9kZSBEZWJ1Z2luZm9kIFNldHRpbmdzCi0rQHNlY3Rpb24gRGVi dWdpbmZvZCBTZXR0aW5ncwotKwotK0B2YWx1ZXtHREJOfSBwcm92aWRlcyB0aGUgZm9sbG93aW5n IGNvbW1hbmRzIGZvciBjb25maWd1cmluZyBAY29kZXtkZWJ1Z2luZm9kfS4KLSsKLStAdGFibGUg QGNvZGUKLStAa2luZGV4IHNldCBkZWJ1Z2luZm9kCi0rQGFuY2hvcntzZXQgZGVidWdpbmZvZH0K LStAaXRlbSBzZXQgZGVidWdpbmZvZAotK0BpdGVteCBzZXQgZGVidWdpbmZvZCBvbgotK0BjaW5k ZXggZW5hYmxlIGRlYnVnaW5mb2QKLStAdmFsdWV7R0RCTn0gd2lsbCBhdHRlbXB0IHRvIHF1ZXJ5 IEBjb2Rle2RlYnVnaW5mb2R9IHNlcnZlcnMgd2hlbiBtaXNzaW5nIGRlYnVnCi0raW5mbyBvciBz b3VyY2UgZmlsZXMuCi0rCi0rQGl0ZW0gc2V0IGRlYnVnaW5mb2Qgb2ZmCi0rQHZhbHVle0dEQk59 IHdpbGwgbm90IGF0dGVtcHQgdG8gcXVlcnkgQGNvZGV7ZGVidWdpbmZvZH0gc2VydmVycyB3aGVu IG1pc3NpbmcKLStkZWJ1ZyBpbmZvIG9yIHNvdXJjZSBmaWxlcy4gIEJ5IGRlZmF1bHQsIEBjb2Rl e2RlYnVnaW5mb2R9IGlzIHNldCB0byBAY29kZXtvZmZ9Ci0rZm9yIG5vbi1pbnRlcmFjdGl2ZSBz ZXNzaW9ucy4KLSsKLStAaXRlbSBzZXQgZGVidWdpbmZvZCBhc2sKLStAdmFsdWV7R0RCTn0gd2ls bCBwcm9tcHQgdGhlIHVzZXIgdG8gZW5hYmxlIG9yIGRpc2FibGUgQGNvZGV7ZGVidWdpbmZvZH0g YmVmb3JlCi0rYXR0ZW1wdGluZyB0byBwZXJmb3JtIHRoZSBuZXh0IHF1ZXJ5LiAgQnkgZGVmYXVs dCwgQGNvZGV7ZGVidWdpbmZvZH0gaXMgc2V0IHRvCi0rQGNvZGV7YXNrfSBmb3IgaW50ZXJhY3Rp dmUgc2Vzc2lvbnMuCi0rCi0rQGtpbmRleCBzaG93IGRlYnVnaW5mb2Qgc3RhdHVzCi0rQGl0ZW0g c2hvdyBkZWJ1Z2luZm9kIHN0YXR1cwotK1Nob3cgd2hldGhlciBAY29kZXtkZWJ1Z2luZm9kfSBp cyBzZXQgdG8gQGNvZGV7b259LCBAY29kZXtvZmZ9IG9yIEBjb2Rle2Fza30uCi0rCi0rQGtpbmRl eCBzZXQgZGVidWdpbmZvZCB1cmxzCi0rQGNpbmRleCBjb25maWd1cmUgZGVidWdpbmZvZCBVUkxz Ci0rQGl0ZW0gc2V0IGRlYnVnaW5mb2QgdXJscwotK0BpdGVteCBzZXQgZGVidWdpbmZvZCB1cmxz IEB2YXJ7dXJsc30KLStTZXQgdGhlIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIFVSTHMgdGhhdCBA Y29kZXtkZWJ1Z2luZm9kfSB3aWxsIGF0dGVtcHQgdG8KLStxdWVyeS4gIE9ubHkgQGNvZGV7aHR0 cDovL30sIEBjb2Rle2h0dHBzOi8vfSBhbmQgQGNvZGV7ZmlsZTovL30gcHJvdG9jb2xzCi0rc2hv dWxkIGJlIHVzZWQuICBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBAY29kZXtkZWJ1Z2luZm9kIHVybHN9 IGlzIGNvcGllZCBmcm9tCi0rdGhlIEB2YXJ7REVCVUdJTkZPRF9VUkxTfSBlbnZpcm9ubWVudCB2 YXJpYWJsZS4KLSsKLStAa2luZGV4IHNob3cgZGVidWdpbmZvZCB1cmxzCi0rQGl0ZW0gc2hvdyBk ZWJ1Z2luZm9kIHVybHMKLStEaXNwbGF5IHRoZSBsaXN0IG9mIFVSTHMgdGhhdCBAY29kZXtkZWJ1 Z2luZm9kfSB3aWxsIGF0dGVtcHQgdG8gcXVlcnkuCi0rCi0rQGtpbmRleCBzZXQgZGVidWdpbmZv ZCB2ZXJib3NlCi0rQGNpbmRleCBkZWJ1Z2luZm9kIHZlcmJvc2l0eQotK0BpdGVtIHNldCBkZWJ1 Z2luZm9kIHZlcmJvc2UKLStAaXRlbXggc2V0IGRlYnVnaW5mb2QgdmVyYm9zZSBAdmFye259Ci0r RW5hYmxlIG9yIGRpc2FibGUgQGNvZGV7ZGVidWdpbmZvZH0tcmVsYXRlZCBvdXRwdXQuICBVc2Ug YSBub24temVybyB2YWx1ZQotK3RvIGVuYWJsZSBhbmQgQGNvZGV7MH0gdG8gZGlzYWJsZS4gIEBj b2Rle2RlYnVnaW5mb2R9IG91dHB1dCBpcyBzaG93biBieQotK2RlZmF1bHQuCi0rCi0rQGtpbmRl eCBzaG93IGRlYnVnaW5mb2QgdmVyYm9zZQotK0BpdGVtIHNob3cgZGVidWdpbmZvZCB2ZXJib3Nl Ci0rU2hvdyB0aGUgY3VycmVudCB2ZXJib3NpdHkgc2V0dGluZy4KLSsKLStAZW5kIHRhYmxlCi0r Ci0gQG5vZGUgTWFuIFBhZ2VzCi0gQGFwcGVuZGl4IE1hbnVhbCBwYWdlcwotIEBjaW5kZXggTWFu IHBhZ2VzCgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYnoyMDI0ODc1LWZpeC11bml0dGVzdC1mYWlsdXJl LnBhdGNoIGIvZ2RiLXJoYnoyMDI0ODc1LWZpeC11bml0dGVzdC1mYWlsdXJlLnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NmYyMWQ2Li4wMDAwMDAwCi0tLSBhL2dkYi1yaGJ6 MjAyNDg3NS1maXgtdW5pdHRlc3QtZmFpbHVyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3 ICswLDAgQEAKLUZyb20gRkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1G cm9tOiA9P1VURi04P3E/QWxleGFuZHJhPTIwSD1DMz1BMWprb3Y9QzM9QTE/PSA8YWhhamtvdmFA cmVkaGF0LmNvbT4KLURhdGU6IFR1ZSwgMTEgSmFuIDIwMjIgMTI6MjI6MjkgKzAxMDAKLVN1Ympl Y3Q6IGdkYi1yaGJ6MjAyNDg3NS1maXgtdW5pdHRlc3QtZmFpbHVyZS5wYXRjaAotCi07O0JhY2tw b3J0IHVwc3RyZWFtIGNvbW1pdCBmcm9tIFRvbSBUcm9tZXkKLTs7MmE4ZjFmNDc0NDYgRml4IHVu aXR0ZXN0LmV4cCBmYWlsdXJlIGR1ZSB0byAnc2V0IGRlYnVnaW5mb2QnIGFkZGl0aW9uCi0KLUZp eCB1bml0dGVzdC5leHAgZmFpbHVyZSBkdWUgdG8gJ3NldCBkZWJ1Z2luZm9kJyBhZGRpdGlvbgot Ci1UaGUgJ3NldCBkZWJ1Z2luZm9kJyBjaGFuZ2UgY2F1c2VkIGEgcmVncmVzc2lvbiBpbiB1bml0 dGVzdC5leHA6Ci0KLSAgICBSdW5uaW5nIHNlbGZ0ZXN0IGhlbHBfZG9jX2ludmFyaWFudHMuCi0g ICAgaGVscCBkb2MgYnJva2VuIGludmFyaWFudDogY29tbWFuZCAnaW5mbyBzZXQgZGVidWdpbmZv ZCcgaGVscCBkb2MgZmlyc3QgbGluZSBpcyBub3QgdGVybWluYXRlZCB3aXRoIGEgJy4nIGNoYXJh Y3RlcgotICAgIGhlbHAgZG9jIGJyb2tlbiBpbnZhcmlhbnQ6IGNvbW1hbmQgJ3NldCBkZWJ1Z2lu Zm9kJyBoZWxwIGRvYyBmaXJzdCBsaW5lIGlzIG5vdCB0ZXJtaW5hdGVkIHdpdGggYSAnLicgY2hh cmFjdGVyCi0gICAgaGVscCBkb2MgYnJva2VuIGludmFyaWFudDogY29tbWFuZCAnc2hvdyBkZWJ1 Z2luZm9kJyBoZWxwIGRvYyBmaXJzdCBsaW5lIGlzIG5vdCB0ZXJtaW5hdGVkIHdpdGggYSAnLicg Y2hhcmFjdGVyCi0gICAgU2VsZiB0ZXN0IGZhaWxlZDogc2VsZi10ZXN0IGZhaWxlZCBhdCAuLi8u Li9iaW51dGlscy1nZGIvZ2RiL3VuaXR0ZXN0cy9jb21tYW5kLWRlZi1zZWxmdGVzdHMuYzoxMDAK LQotVGhpcyBwYXRjaCBmaXhlcyB0aGUgcHJvYmxlbS4gIEknbSBjaGVja2luZyBpdCBpbi4KLQot ZGlmZiAtLWdpdCBhL2dkYi9kZWJ1Z2luZm9kLXN1cHBvcnQuYyBiL2dkYi9kZWJ1Z2luZm9kLXN1 cHBvcnQuYwotLS0tIGEvZ2RiL2RlYnVnaW5mb2Qtc3VwcG9ydC5jCi0rKysgYi9nZGIvZGVidWdp bmZvZC1zdXBwb3J0LmMKLUBAIC0zOTAsMTEgKzM5MCwxMSBAQCBfaW5pdGlhbGl6ZV9kZWJ1Z2lu Zm9kICgpCi0gewotICAgLyogc2V0L3Nob3cgZGVidWdpbmZvZCAqLwotICAgYWRkX2Jhc2ljX3By ZWZpeF9jbWQgKCJkZWJ1Z2luZm9kIiwgY2xhc3NfcnVuLAotLSAgICAgICAgICAgICAgICAgICAg ICAgIF8oIlNldCBkZWJ1Z2luZm9kIG9wdGlvbnMiKSwKLSsgICAgICAgICAgICAgICAgICAgICAg ICBfKCJTZXQgZGVidWdpbmZvZCBvcHRpb25zLiIpLAotICAgICAgICAgICAgICAgICAgICAgICAg ICZzZXRfZGVidWdpbmZvZF9wcmVmaXhfbGlzdCwgMCwgJnNldGxpc3QpOwotIAotICAgYWRkX3No b3dfcHJlZml4X2NtZCAoImRlYnVnaW5mb2QiLCBjbGFzc19ydW4sCi0tICAgICAgICAgICAgICAg ICAgICAgICBfKCJTaG93IGRlYnVnaW5mb2Qgb3B0aW9ucyIpLAotKyAgICAgICAgICAgICAgICAg ICAgICAgXygiU2hvdyBkZWJ1Z2luZm9kIG9wdGlvbi4iKSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICZzaG93X2RlYnVnaW5mb2RfcHJlZml4X2xpc3QsIDAsICZzaG93bGlzdCk7Ci0gCi0gICAv KiBzZXQgZGVidWdpbmZvZCBvbiAqLwoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6MjAyNDg3NS1wcjI3 MDI2LnBhdGNoIGIvZ2RiLXJoYnoyMDI0ODc1LXByMjcwMjYucGF0Y2gKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IGY4NGYxMzQuLjAwMDAwMDAKLS0tIGEvZ2RiLXJoYnoyMDI0ODc1LXBy MjcwMjYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi1Gcm9tIEZFRE9SQV9Q QVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0FsZXhhbmRy YT0yMEg9QzM9QTFqa292PUMzPUExPz0gPGFoYWprb3ZhQHJlZGhhdC5jb20+Ci1EYXRlOiBUdWUs IDExIEphbiAyMDIyIDEzOjIyOjQ0ICswMTAwCi1TdWJqZWN0OiBnZGItcmhiejIwMjQ4NzUtcHIy NzAyNi5wYXRjaAotCi07O0JhY2twb3J0IHVwc3RyZWFtIGNvbW1pdCBmcm9tIEFhcm9uIE1lcmV5 Ci07O2I5ZGIyNmI0YzQ0IFtQUiBnZGIvMjcwMjZdIENUUkwtQyBpcyBpZ25vcmVkIHdoZW4gZGVi dWcgaW5mbyBpcyBkb3dubG9hZGVkCi0KLVtQUiBnZGIvMjcwMjZdIENUUkwtQyBpcyBpZ25vcmVk IHdoZW4gZGVidWcgaW5mbyBpcyBkb3dubG9hZGVkCi0KLUR1cmluZyBkZWJ1Z2luZm9kIGRvd25s b2FkcywgY3RybC1jIHNob3VsZCByZXN1bHQgaW4gdGhlIGRvd25sb2FkCi1iZWluZyBjYW5jZWxs ZWQgYW5kIHNraXBwZWQuICBIb3dldmVyIGluIHNvbWUgY2FzZXMsIGN0cmwtYyBmYWlscyB0bwot Z2V0IGRlbGl2ZXJlZCB0byBnZGIgZHVyaW5nIGRvd25sb2FkaW5nLiAgVGhpcyBjYW4gcmVzdWx0 IGluIGRvd25sb2FkcwotYmVpbmcgdW5za2lwcGFibGUuCi0KLUZpeCB0aGlzIGJ5IGVuc3VyaW5n IHRoYXQgdGFyZ2V0X3Rlcm1pbmFsOjpvdXJzIGlzIGluIGVmZmVjdCBmb3IgdGhlCi1kdXJhdGlv biBvZiBlYWNoIGRvd25sb2FkLgotCi1Dby1hdXRob3JlZC1ieTogVG9tIGRlIFZyaWVzIDx0ZGV2 cmllc0BzdXNlLmRlPgotaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5j Z2k/aWQ9MjcwMjYjYzMKLQotZGlmZiAtLWdpdCBhL2dkYi9kZWJ1Z2luZm9kLXN1cHBvcnQuYyBi L2dkYi9kZWJ1Z2luZm9kLXN1cHBvcnQuYwotLS0tIGEvZ2RiL2RlYnVnaW5mb2Qtc3VwcG9ydC5j Ci0rKysgYi9nZGIvZGVidWdpbmZvZC1zdXBwb3J0LmMKLUBAIC0yMyw2ICsyMyw3IEBACi0gI2lu Y2x1ZGUgImdkYnN1cHBvcnQvZ2RiX29wdGlvbmFsLmgiCi0gI2luY2x1ZGUgImNsaS9jbGktY21k cy5oIgotICNpbmNsdWRlICJjbGkvY2xpLXN0eWxlLmgiCi0rI2luY2x1ZGUgInRhcmdldC5oIgot IAotIC8qIFNldC9zaG93IGRlYnVnaW5mb2QgY29tbWFuZHMuICAqLwotIHN0YXRpYyBjbWRfbGlz dF9lbGVtZW50ICpzZXRfZGVidWdpbmZvZF9wcmVmaXhfbGlzdDsKLUBAIC0yMDgsNiArMjA5LDEz IEBAIGRlYnVnaW5mb2Rfc291cmNlX3F1ZXJ5IChjb25zdCB1bnNpZ25lZCBjaGFyICpidWlsZF9p ZCwKLSAgIHVzZXJfZGF0YSBkYXRhICgic291cmNlIGZpbGUiLCBzcmNwYXRoKTsKLSAKLSAgIGRl YnVnaW5mb2Rfc2V0X3VzZXJfZGF0YSAoYywgJmRhdGEpOwotKyAgZ2RiOjpvcHRpb25hbDx0YXJn ZXRfdGVybWluYWw6OnNjb3BlZF9yZXN0b3JlX3Rlcm1pbmFsX3N0YXRlPiB0ZXJtX3N0YXRlOwot KyAgaWYgKHRhcmdldF9zdXBwb3J0c190ZXJtaW5hbF9vdXJzICgpKQotKyAgICB7Ci0rICAgICAg dGVybV9zdGF0ZS5lbXBsYWNlICgpOwotKyAgICAgIHRhcmdldF90ZXJtaW5hbDo6b3VycyAoKTsK LSsgICAgfQotKwotICAgc2NvcGVkX2ZkIGZkIChkZWJ1Z2luZm9kX2ZpbmRfc291cmNlIChjLAot IAkJCQkJYnVpbGRfaWQsCi0gCQkJCQlidWlsZF9pZF9sZW4sCi1AQCAtMjQ2LDYgKzI1NCwxMyBA QCBkZWJ1Z2luZm9kX2RlYnVnaW5mb19xdWVyeSAoY29uc3QgdW5zaWduZWQgY2hhciAqYnVpbGRf aWQsCi0gICB1c2VyX2RhdGEgZGF0YSAoInNlcGFyYXRlIGRlYnVnIGluZm8gZm9yIiwgZmlsZW5h bWUpOwotIAotICAgZGVidWdpbmZvZF9zZXRfdXNlcl9kYXRhIChjLCAmZGF0YSk7Ci0rICBnZGI6 Om9wdGlvbmFsPHRhcmdldF90ZXJtaW5hbDo6c2NvcGVkX3Jlc3RvcmVfdGVybWluYWxfc3RhdGU+ IHRlcm1fc3RhdGU7Ci0rICBpZiAodGFyZ2V0X3N1cHBvcnRzX3Rlcm1pbmFsX291cnMgKCkpCi0r ICAgIHsKLSsgICAgICB0ZXJtX3N0YXRlLmVtcGxhY2UgKCk7Ci0rICAgICAgdGFyZ2V0X3Rlcm1p bmFsOjpvdXJzICgpOwotKyAgICB9Ci0rCi0gICBzY29wZWRfZmQgZmQgKGRlYnVnaW5mb2RfZmlu ZF9kZWJ1Z2luZm8gKGMsIGJ1aWxkX2lkLCBidWlsZF9pZF9sZW4sCi0gCQkJCQkgICAmZG5hbWUp KTsKLSAgIGRlYnVnaW5mb2Rfc2V0X3VzZXJfZGF0YSAoYywgbnVsbHB0cik7CgpkaWZmIC0tZ2l0 IGEvZ2RiLXJoYnoyMDI0ODc1LXNldF9zaG93LWZvci1tYW5hZ2luZy1kZWJ1Z2luZm9kLnBhdGNo IGIvZ2RiLXJoYnoyMDI0ODc1LXNldF9zaG93LWZvci1tYW5hZ2luZy1kZWJ1Z2luZm9kLnBhdGNo CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNmFiMmE0Li4wMDAwMDAwCi0tLSBhL2dk Yi1yaGJ6MjAyNDg3NS1zZXRfc2hvdy1mb3ItbWFuYWdpbmctZGVidWdpbmZvZC5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDQxNCArMCwwIEBACi1Gcm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0FsZXhhbmRyYT0yMEg9QzM9QTFqa292 PUMzPUExPz0gPGFoYWprb3ZhQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDEwIEphbiAyMDIyIDEz OjM1OjQ1ICswMTAwCi1TdWJqZWN0OiBnZGItcmhiejIwMjQ4NzUtc2V0X3Nob3ctZm9yLW1hbmFn aW5nLWRlYnVnaW5mb2QucGF0Y2gKLQotOztCYWNrcG9ydCB1cHN0cmVhbSBjb21taXQgZnJvbSBB YXJvbiBNZXJleQotOzs3ODExZmE1OTk1ZiBnZGI6IGFkZCBzZXQvc2hvdyBjb21tYW5kcyBmb3Ig bWFuYWdpbmcgZGVidWdpbmZvCi0KLWdkYjogYWRkIHNldC9zaG93IGNvbW1hbmRzIGZvciBtYW5h Z2luZyBkZWJ1Z2luZm9kCi0KLUFkZCAnc2V0IGRlYnVnaW5mb2QnIGNvbW1hbmQuICBBY2NlcHRz ICdvbicsICdvZmYnIG9yICdhc2snIGFzIGFuCi1hcmd1bWVudC4gICdvbicgZW5hYmxlcyBkZWJ1 Z2luZm9kIGZvciB0aGUgY3VycmVudCBzZXNzaW9uLiAgJ29mZicKLWRpc2FibGVzIGRlYnVnaW5m b2QgZm9yIHRoZSBjdXJyZW50IHNlc3Npb24uICAnYXNrJyB3aWxsIHByb21wdAotdGhlIHVzZXIg dG8gZWl0aGVyIGVuYWJsZSBvciBkaXNhYmxlIGRlYnVnaW5mb2Qgd2hlbiB0aGUgbmV4dCBxdWVy eQotaXMgYWJvdXQgdG8gYmUgcGVyZm9ybWVkOgotCi0gICAgVGhpcyBHREIgc3VwcG9ydHMgYXV0 by1kb3dubG9hZGluZyBkZWJ1Z2luZm8gZnJvbSB0aGUgZm9sbG93aW5nIFVSTHM6Ci0gICAgPFVS TDE+IDxVUkwyPiAuLi4KLSAgICBFbmFibGUgZGVidWdpbmZvZCBmb3IgdGhpcyBzZXNzaW9uPyAo eSBvciBbbl0pIHkKLSAgICBEZWJ1Z2luZm9kIGhhcyBiZWVuIGVuYWJsZWQuCi0gICAgVG8gbWFr ZSB0aGlzIHNldHRpbmcgcGVybWFuZW50LCBhZGQgJ3NldCBkZWJ1Z2luZm9kIG9uJyB0byAuZ2Ri aW5pdC4KLQotRm9yIGludGVyYWN0aXZlIHNlc3Npb25zLCAnYXNrJyBpcyB0aGUgZGVmYXVsdC4g IEZvciBub24taW50ZXJhY3RpdmUKLXNlc3Npb25zLCAnb2ZmJyBpcyB0aGUgZGVmYXVsdC4KLQot QWRkICdzaG93IGRlYnVnaW5mb2Qgc3RhdHVzJyBjb21tYW5kLiAgRGlzcGxheXMgd2hldGhlciBk ZWJ1Z2luZm9kCi1pcyBzZXQgdG8gJ29uJywgJ29mZicgb3IgJ2FzaycuCi0KLUFkZCAnc2V0L3No b3cgZGVidWdpbmZvZCB1cmxzJyBjb21tYW5kcy4gQWNjZXB0cyBhIHN0cmluZyBvZgotc3BhY2Ut c2VwYXJhdGVkIGRlYnVnaW5mb2Qgc2VydmVyIFVSTHMgdG8gYmUgcXVlcmllZC4gIFRoZSBkZWZh dWx0Ci12YWx1ZSBpcyBjb3BpZWQgZnJvbSB0aGUgREVCVUdJTkZPRF9VUkxTIGVudmlyb25tZW50 IHZhcmlhYmxlLgotCi1GaW5hbGx5IGFkZCAnc2V0L3Nob3cgZGVidWdpbmZvZCB2ZXJib3NlJyBj b21tYW5kcyB0byBjb250cm9sIHdoZXRoZXIKLWRlYnVnaW5mb2QtcmVsYXRlZCBvdXRwdXQgaXMg ZGlzcGxheWVkLiAgVmVyYm9zZSBvdXRwdXQgaXMgZW5hYmxlZAotYnkgZGVmYXVsdC4KLQotICAg IChnZGIpIHJ1bgotICAgIFN0YXJ0aW5nIHByb2dyYW06IC9iaW4vc2xlZXAgNQotICAgIERvd25s b2FkIGZhaWxlZDogTm8gcm91dGUgdG8gaG9zdC4gIENvbnRpbnVpbmcgd2l0aG91dCBkZWJ1ZyBp bmZvIGZvciAvbGliNjQvbGliYy5zby42LgotCi1JZiBHREIgaXMgbm90IGJ1aWx0IHdpdGggZGVi dWdpbmZvZCB0aGVuIHRoZXNlIGNvbW1hbmRzIHdpbGwganVzdCBkaXNwbGF5Ci0KLSAgICBTdXBw b3J0IGZvciBkZWJ1Z2luZm9kIGlzIG5vdCBjb21waWxlZCBpbnRvIEdEQi4KLQotZGlmZiAtLWdp dCBhL2dkYi9kZWJ1Z2luZm9kLXN1cHBvcnQuYyBiL2dkYi9kZWJ1Z2luZm9kLXN1cHBvcnQuYwot LS0tIGEvZ2RiL2RlYnVnaW5mb2Qtc3VwcG9ydC5jCi0rKysgYi9nZGIvZGVidWdpbmZvZC1zdXBw b3J0LmMKLUBAIC0xOCwxMCArMTgsMjYgQEAKLSAKLSAjaW5jbHVkZSAiZGVmcy5oIgotICNpbmNs dWRlIDxlcnJuby5oPgotLSNpbmNsdWRlICJjbGkvY2xpLXN0eWxlLmgiCi0gI2luY2x1ZGUgImdk YnN1cHBvcnQvc2NvcGVkX2ZkLmgiCi0gI2luY2x1ZGUgImRlYnVnaW5mb2Qtc3VwcG9ydC5oIgot ICNpbmNsdWRlICJnZGJzdXBwb3J0L2dkYl9vcHRpb25hbC5oIgotKyNpbmNsdWRlICJjbGkvY2xp LWNtZHMuaCIKLSsjaW5jbHVkZSAiY2xpL2NsaS1zdHlsZS5oIgotKwotKy8qIFNldC9zaG93IGRl YnVnaW5mb2QgY29tbWFuZHMuICAqLwotK3N0YXRpYyBjbWRfbGlzdF9lbGVtZW50ICpzZXRfZGVi dWdpbmZvZF9wcmVmaXhfbGlzdDsKLStzdGF0aWMgY21kX2xpc3RfZWxlbWVudCAqc2hvd19kZWJ1 Z2luZm9kX3ByZWZpeF9saXN0OwotKwotK3N0YXRpYyBjb25zdCBjaGFyIGRlYnVnaW5mb2Rfb25b XSA9ICJvbiI7Ci0rc3RhdGljIGNvbnN0IGNoYXIgZGVidWdpbmZvZF9vZmZbXSA9ICJvZmYiOwot K3N0YXRpYyBjb25zdCBjaGFyIGRlYnVnaW5mb2RfYXNrW10gPSAiYXNrIjsKLSsKLStzdGF0aWMg Y29uc3QgY2hhciAqZGVidWdpbmZvZF9lbmFibGUgPSBkZWJ1Z2luZm9kX2FzazsKLStzdGF0aWMg dW5zaWduZWQgZGVidWdpbmZvZF92ZXJib3NlID0gMTsKLSsKLSsvKiBUaGlzIGlzIG5ldmVyIGFj dHVhbGx5IHVzZWQuICBVUkxzIGFyZSBhbHdheXMgcHVsbGVkIGZyb20gdGhlCi0rICAgZW52aXJv bm1lbnQuICAqLwotK3N0YXRpYyBjaGFyICpkZWJ1Z2luZm9kX3VybHM7Ci0gCi0gI2lmbmRlZiBI QVZFX0xJQkRFQlVHSU5GT0QKLSBzY29wZWRfZmQKLUBAIC00MSw2ICs1Nyw2NyBAQCBkZWJ1Z2lu Zm9kX2RlYnVnaW5mb19xdWVyeSAoY29uc3QgdW5zaWduZWQgY2hhciAqYnVpbGRfaWQsCi0gewot ICAgcmV0dXJuIHNjb3BlZF9mZCAoLUVOT1NZUyk7Ci0gfQotKwotKyNkZWZpbmUgTk9fSU1QTCBf KCJTdXBwb3J0IGZvciBkZWJ1Z2luZm9kIGlzIG5vdCBjb21waWxlZCBpbnRvIEdEQi4iKQotKwot Ky8qIFN0dWIgc2V0L3Nob3cgY29tbWFuZHMgdGhhdCBpbmRpY2F0ZSBkZWJ1Z2luZm9kIGlzIG5v dCBzdXBwb3J0ZWQuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2V0X2RlYnVnaW5mb2Rfb25fY29t bWFuZCAoY29uc3QgY2hhciAqYXJncywgaW50IGZyb21fdHR5KQotK3sKLSsgIGVycm9yIChOT19J TVBMKTsKLSsgIGRlYnVnaW5mb2RfZW5hYmxlID0gZGVidWdpbmZvZF9vZmY7Ci0rfQotKwotK3N0 YXRpYyB2b2lkCi0rc2V0X2RlYnVnaW5mb2Rfb2ZmX2NvbW1hbmQgKGNvbnN0IGNoYXIgKmFyZ3Ms IGludCBmcm9tX3R0eSkKLSt7Ci0rICBlcnJvciAoTk9fSU1QTCk7Ci0rICBkZWJ1Z2luZm9kX2Vu YWJsZSA9IGRlYnVnaW5mb2Rfb2ZmOwotK30KLSsKLStzdGF0aWMgdm9pZAotK3NldF9kZWJ1Z2lu Zm9kX2Fza19jb21tYW5kIChjb25zdCBjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCi0rewotKyAg ZXJyb3IgKE5PX0lNUEwpOwotKyAgZGVidWdpbmZvZF9lbmFibGUgPSBkZWJ1Z2luZm9kX29mZjsK LSt9Ci0rCi0rc3RhdGljIHZvaWQKLStzaG93X2RlYnVnaW5mb2Rfc3RhdHVzX2NvbW1hbmQgKGNv bnN0IGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKLSt7Ci0rICBlcnJvciAoTk9fSU1QTCk7Ci0r fQotKwotK3N0YXRpYyB2b2lkCi0rc2V0X2RlYnVnaW5mb2RfdXJsc19jb21tYW5kIChjb25zdCBj aGFyICppZ25vcmUsIGludCBmcm9tX3R0eSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjKQotK3sKLSsgIGVycm9yIChOT19JTVBMKTsKLSt9 Ci0rCi0rc3RhdGljIHZvaWQKLStzaG93X2RlYnVnaW5mb2RfdXJsc19jb21tYW5kIChzdHJ1Y3Qg dWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAotKwkJCSAgICAgIHN0cnVjdCBjbWRfbGlzdF9l bGVtZW50ICpjbWQsIGNvbnN0IGNoYXIgKnZhbHVlKQotK3sKLSsgIGVycm9yIChOT19JTVBMKTsK LSt9Ci0rCi0rc3RhdGljIHZvaWQKLStzZXRfZGVidWdpbmZvZF92ZXJib3NlX2NvbW1hbmQgKGNv bnN0IGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSwKLSsJCQkJc3RydWN0IGNtZF9saXN0X2VsZW1l bnQgKmMpCi0rewotKyAgZXJyb3IgKE5PX0lNUEwpOwotKyAgZGVidWdpbmZvZF92ZXJib3NlID0g MDsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStzaG93X2RlYnVnaW5mb2RfdmVyYm9zZV9jb21tYW5k IChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAotKwkJCQkgc3RydWN0IGNtZF9s aXN0X2VsZW1lbnQgKmNtZCwKLSsJCQkJIGNvbnN0IGNoYXIgKnZhbHVlKQotK3sKLSsgIGVycm9y IChOT19JTVBMKTsKLSt9Ci0gI2Vsc2UKLSAjaW5jbHVkZSA8ZWxmdXRpbHMvZGVidWdpbmZvZC5o PgotIAotQEAgLTY4LDYgKzE0NSw4MiBAQCBzdHJ1Y3QgZGVidWdpbmZvZF9jbGllbnRfZGVsZXRl cgotIHVzaW5nIGRlYnVnaW5mb2RfY2xpZW50X3VwCi0gICA9IHN0ZDo6dW5pcXVlX3B0cjxkZWJ1 Z2luZm9kX2NsaWVudCwgZGVidWdpbmZvZF9jbGllbnRfZGVsZXRlcj47Ci0gCi0rLyogRW5hYmxl IGRlYnVnaW5mb2QuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2V0X2RlYnVnaW5mb2Rfb25fY29t bWFuZCAoY29uc3QgY2hhciAqYXJncywgaW50IGZyb21fdHR5KQotK3sKLSsgIGRlYnVnaW5mb2Rf ZW5hYmxlID0gZGVidWdpbmZvZF9vbjsKLSt9Ci0rCi0rLyogRGlzYWJsZSBkZWJ1Z2luZm9kLiAg Ki8KLSsKLStzdGF0aWMgdm9pZAotK3NldF9kZWJ1Z2luZm9kX29mZl9jb21tYW5kIChjb25zdCBj aGFyICphcmdzLCBpbnQgZnJvbV90dHkpCi0rewotKyAgZGVidWdpbmZvZF9lbmFibGUgPSBkZWJ1 Z2luZm9kX29mZjsKLSt9Ci0rCi0rLyogQmVmb3JlIG5leHQgcXVlcnksIGFzayB1c2VyIHdoZXRo ZXIgdG8gZW5hYmxlIGRlYnVnaW5mb2QuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2V0X2RlYnVn aW5mb2RfYXNrX2NvbW1hbmQgKGNvbnN0IGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKLSt7Ci0r ICBkZWJ1Z2luZm9kX2VuYWJsZSA9IGRlYnVnaW5mb2RfYXNrOwotK30KLSsKLSsvKiBTaG93IHdo ZXRoZXIgZGVidWdpbmZvZCBpcyBlbmFibGVkLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3Nob3df ZGVidWdpbmZvZF9zdGF0dXNfY29tbWFuZCAoY29uc3QgY2hhciAqYXJncywgaW50IGZyb21fdHR5 KQotK3sKLSsgIHByaW50Zl91bmZpbHRlcmVkIChfKCJEZWJ1Z2luZm9kIGZ1bmN0aW9uYWxpdHkg aXMgY3VycmVudGx5IHNldCB0byAiIFwKLSsJCSAgICAgIlwiJXNcIi5cbiIpLCBkZWJ1Z2luZm9k X2VuYWJsZSk7Ci0rfQotKwotKy8qIFNldCB0aGUgVVJMcyB0aGF0IGRlYnVnaW5mb2Qgd2lsbCBx dWVyeS4gICovCi0rCi0rc3RhdGljIHZvaWQKLStzZXRfZGVidWdpbmZvZF91cmxzX2NvbW1hbmQg KGNvbnN0IGNoYXIgKmlnbm9yZSwgaW50IGZyb21fdHR5LAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMpCi0rewotKyAgZ2RiX2Fzc2VydCAo ZGVidWdpbmZvZF91cmxzICE9IG51bGxwdHIpOwotKyAgaWYgKHNldGVudiAoIkRFQlVHSU5GT0Rf VVJMUyIsIGRlYnVnaW5mb2RfdXJscywgMSkgIT0gMCkKLSsgICAgd2FybmluZyAoXygiVW5hYmxl IHRvIHNldCBkZWJ1Z2luZm9kIFVSTHM6ICVzIiksIHNhZmVfc3RyZXJyb3IgKGVycm5vKSk7Ci0r fQotKwotKy8qIFNob3cgdGhlIFVSTHMgdGhhdCBkZWJ1Z2luZm9kIHdpbGwgcXVlcnkuICAqLwot KwotK3N0YXRpYyB2b2lkCi0rc2hvd19kZWJ1Z2luZm9kX3VybHNfY29tbWFuZCAoc3RydWN0IHVp X2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKLSsJCQkgICAgICBzdHJ1Y3QgY21kX2xpc3RfZWxl bWVudCAqY21kLCBjb25zdCBjaGFyICp2YWx1ZSkKLSt7Ci0rICBpZiAodmFsdWUgPT0gbnVsbHB0 ciB8fCB2YWx1ZVswXSA9PSAnXDAnKQotKyAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGZpbGUsIF8o IkRlYnVnaW5mb2QgVVJMcyBoYXZlIG5vdCBiZWVuIHNldC5cbiIpKTsKLSsgIGVsc2UKLSsgICAg ZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiRGVidWdpbmZvZCBVUkxzIGFyZSBjdXJyZW50bHkg c2V0IHRvOlxuJXNcbiIpLAotKwkJICAgICAgdmFsdWUpOwotK30KLSsKLSsvKiBOby1vcCBzZXR0 ZXIgdXNlZCBmb3IgY29tcGF0aWJpbGl0eSB3aGVuIGdkYiBpcyBidWlsdCB3aXRob3V0IGRlYnVn aW5mb2QuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2V0X2RlYnVnaW5mb2RfdmVyYm9zZV9jb21t YW5kIChjb25zdCBjaGFyICphcmdzLCBpbnQgZnJvbV90dHksCi0rCQkJCXN0cnVjdCBjbWRfbGlz dF9lbGVtZW50ICpjKQotK3sKLSsgIHJldHVybjsKLSt9Ci0rCi0rLyogU2hvdyB2ZXJib3NpdHku ICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2hvd19kZWJ1Z2luZm9kX3ZlcmJvc2VfY29tbWFuZCAo c3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKLSsJCQkJIHN0cnVjdCBjbWRfbGlz dF9lbGVtZW50ICpjbWQsIGNvbnN0IGNoYXIgKnZhbHVlKQotK3sKLSsgIGZwcmludGZfZmlsdGVy ZWQgKGZpbGUsIF8oIkRlYnVnaW5mb2QgdmVyYm9zZSBvdXRwdXQgaXMgc2V0IHRvICVzLlxuIiks Ci0rCQkgICAgdmFsdWUpOwotK30KLSsKLSBzdGF0aWMgaW50Ci0gcHJvZ3Jlc3NmbiAoZGVidWdp bmZvZF9jbGllbnQgKmMsIGxvbmcgY3VyLCBsb25nIHRvdGFsKQotIHsKLUBAIC0xMjAsNiArMjcz LDQyIEBAIGdldF9kZWJ1Z2luZm9kX2NsaWVudCAoKQotICAgcmV0dXJuIGdsb2JhbF9jbGllbnQu Z2V0ICgpOwotIH0KLSAKLSsvKiBDaGVjayBpZiBkZWJ1Z2luZm9kIGlzIGVuYWJsZWQuICBJZiBj b25maWd1cmVkIHRvIGRvIHNvLCBhc2sgdGhlIHVzZXIKLSsgICB3aGV0aGVyIHRvIGVuYWJsZSBk ZWJ1Z2luZm9kLiAgKi8KLSsKLStzdGF0aWMgYm9vbAotK2RlYnVnaW5mb2RfZW5hYmxlZCAoKQot K3sKLSsgIGNvbnN0IGNoYXIgKnVybHMgPSBnZXRlbnYgKERFQlVHSU5GT0RfVVJMU19FTlZfVkFS KTsKLSsKLSsgIGlmICh1cmxzID09IG51bGxwdHIgfHwgdXJsc1swXSA9PSAnXDAnCi0rICAgICAg fHwgZGVidWdpbmZvZF9lbmFibGUgPT0gZGVidWdpbmZvZF9vZmYpCi0rICAgIHJldHVybiBmYWxz ZTsKLSsKLSsgIGlmIChkZWJ1Z2luZm9kX2VuYWJsZSA9PSBkZWJ1Z2luZm9kX2FzaykKLSsgICAg ewotKyAgICAgIGludCByZXNwID0gbnF1ZXJ5IChfKCJcblRoaXMgR0RCIHN1cHBvcnRzIGF1dG8t ZG93bmxvYWRpbmcgZGVidWdpbmZvICIgXAotKwkJCSAgICJmcm9tIHRoZSBmb2xsb3dpbmcgVVJM czpcbiVzXG5FbmFibGUgZGVidWdpbmZvZCAiIFwKLSsJCQkgICAiZm9yIHRoaXMgc2Vzc2lvbj8g IiksCi0rCQkJIHVybHMpOwotKyAgICAgIGlmICghcmVzcCkKLSsJewotKwkgIHByaW50Zl9maWx0 ZXJlZCAoXygiRGVidWdpbmZvZCBoYXMgYmVlbiBkaXNhYmxlZC5cblRvIG1ha2UgdGhpcyAiIFwK LSsJCQkgICAgICJzZXR0aW5nIHBlcm1hbmVudCwgYWRkIFwnc2V0IGRlYnVnaW5mb2Qgb2ZmXCcg IiBcCi0rCQkJICAgICAidG8gLmdkYmluaXQuXG4iKSk7Ci0rCSAgZGVidWdpbmZvZF9lbmFibGUg PSBkZWJ1Z2luZm9kX29mZjsKLSsJICByZXR1cm4gZmFsc2U7Ci0rCX0KLSsKLSsgICAgICBwcmlu dGZfZmlsdGVyZWQgKF8oIkRlYnVnaW5mb2QgaGFzIGJlZW4gZW5hYmxlZC5cblRvIG1ha2UgdGhp cyAiIFwKLSsJCQkgInNldHRpbmcgcGVybWFuZW50LCBhZGQgXCdzZXQgZGVidWdpbmZvZCBvblwn ICIgXAotKwkJCSAidG8gLmdkYmluaXQuXG4iKSk7Ci0rICAgICAgZGVidWdpbmZvZF9lbmFibGUg PSBkZWJ1Z2luZm9kX29uOwotKyAgICB9Ci0rCi0rICByZXR1cm4gdHJ1ZTsKLSt9Ci0rCi0gLyog U2VlIGRlYnVnaW5mb2Qtc3VwcG9ydC5oICAqLwotIAotIHNjb3BlZF9mZAotQEAgLTEyOCw4ICsz MTcsNyBAQCBkZWJ1Z2luZm9kX3NvdXJjZV9xdWVyeSAoY29uc3QgdW5zaWduZWQgY2hhciAqYnVp bGRfaWQsCi0gCQkJIGNvbnN0IGNoYXIgKnNyY3BhdGgsCi0gCQkJIGdkYjo6dW5pcXVlX3htYWxs b2NfcHRyPGNoYXI+ICpkZXN0bmFtZSkKLSB7Ci0tICBjb25zdCBjaGFyICp1cmxzX2Vudl92YXIg PSBnZXRlbnYgKERFQlVHSU5GT0RfVVJMU19FTlZfVkFSKTsKLS0gIGlmICh1cmxzX2Vudl92YXIg PT0gTlVMTCB8fCB1cmxzX2Vudl92YXJbMF0gPT0gJ1wwJykKLSsgIGlmICghZGVidWdpbmZvZF9l bmFibGVkICgpKQotICAgICByZXR1cm4gc2NvcGVkX2ZkICgtRU5PU1lTKTsKLSAKLSAgIGRlYnVn aW5mb2RfY2xpZW50ICpjID0gZ2V0X2RlYnVnaW5mb2RfY2xpZW50ICgpOwotQEAgLTE0Nyw4ICsz MzUsNyBAQCBkZWJ1Z2luZm9kX3NvdXJjZV9xdWVyeSAoY29uc3QgdW5zaWduZWQgY2hhciAqYnVp bGRfaWQsCi0gCQkJCQludWxscHRyKSk7Ci0gICBkZWJ1Z2luZm9kX3NldF91c2VyX2RhdGEgKGMs IG51bGxwdHIpOwotIAotLSAgLyogVE9ETzogQWRkICdzZXQgZGVidWcgZGVidWdpbmZvZCcgY29t bWFuZCB0byBjb250cm9sIHdoZW4gZXJyb3IgbWVzc2FnZXMgYXJlIHNob3duLiAgKi8KLS0gIGlm IChmZC5nZXQgKCkgPCAwICYmIGZkLmdldCAoKSAhPSAtRU5PRU5UKQotKyAgaWYgKGRlYnVnaW5m b2RfdmVyYm9zZSA+IDAgJiYgZmQuZ2V0ICgpIDwgMCAmJiBmZC5nZXQgKCkgIT0gLUVOT0VOVCkK LSAgICAgcHJpbnRmX2ZpbHRlcmVkIChfKCJEb3dubG9hZCBmYWlsZWQ6ICVzLiAgQ29udGludWlu ZyB3aXRob3V0IHNvdXJjZSBmaWxlICVwcy5cbiIpLAotIAkJICAgICBzYWZlX3N0cmVycm9yICgt ZmQuZ2V0ICgpKSwKLSAJCSAgICAgc3R5bGVkX3N0cmluZyAoZmlsZV9uYW1lX3N0eWxlLnN0eWxl ICgpLCAgc3JjcGF0aCkpOwotQEAgLTE2Nyw4ICszNTQsNyBAQCBkZWJ1Z2luZm9kX2RlYnVnaW5m b19xdWVyeSAoY29uc3QgdW5zaWduZWQgY2hhciAqYnVpbGRfaWQsCi0gCQkJICAgIGNvbnN0IGNo YXIgKmZpbGVuYW1lLAotIAkJCSAgICBnZGI6OnVuaXF1ZV94bWFsbG9jX3B0cjxjaGFyPiAqZGVz dG5hbWUpCi0gewotLSAgY29uc3QgY2hhciAqdXJsc19lbnZfdmFyID0gZ2V0ZW52IChERUJVR0lO Rk9EX1VSTFNfRU5WX1ZBUik7Ci0tICBpZiAodXJsc19lbnZfdmFyID09IE5VTEwgfHwgdXJsc19l bnZfdmFyWzBdID09ICdcMCcpCi0rICBpZiAoIWRlYnVnaW5mb2RfZW5hYmxlZCAoKSkKLSAgICAg cmV0dXJuIHNjb3BlZF9mZCAoLUVOT1NZUyk7Ci0gCi0gICBkZWJ1Z2luZm9kX2NsaWVudCAqYyA9 IGdldF9kZWJ1Z2luZm9kX2NsaWVudCAoKTsKLUBAIC0xODQsNyArMzcwLDcgQEAgZGVidWdpbmZv ZF9kZWJ1Z2luZm9fcXVlcnkgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1aWxkX2lkLAotIAkJCQkJ ICAgJmRuYW1lKSk7Ci0gICBkZWJ1Z2luZm9kX3NldF91c2VyX2RhdGEgKGMsIG51bGxwdHIpOwot IAotLSAgaWYgKGZkLmdldCAoKSA8IDAgJiYgZmQuZ2V0ICgpICE9IC1FTk9FTlQpCi0rICBpZiAo ZGVidWdpbmZvZF92ZXJib3NlID4gMCAmJiBmZC5nZXQgKCkgPCAwICYmIGZkLmdldCAoKSAhPSAt RU5PRU5UKQotICAgICBwcmludGZfZmlsdGVyZWQgKF8oIkRvd25sb2FkIGZhaWxlZDogJXMuICBD b250aW51aW5nIHdpdGhvdXQgZGVidWcgaW5mbyBmb3IgJXBzLlxuIiksCi0gCQkgICAgIHNhZmVf c3RyZXJyb3IgKC1mZC5nZXQgKCkpLAotIAkJICAgICBzdHlsZWRfc3RyaW5nIChmaWxlX25hbWVf c3R5bGUuc3R5bGUgKCksICBmaWxlbmFtZSkpOwotQEAgLTE5NSwzICszODEsNjMgQEAgZGVidWdp bmZvZF9kZWJ1Z2luZm9fcXVlcnkgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1aWxkX2lkLAotICAg cmV0dXJuIGZkOwotIH0KLSAjZW5kaWYKLSsKLSsvKiBSZWdpc3RlciBkZWJ1Z2luZm9kIGNvbW1h bmRzLiAgKi8KLSsKLSt2b2lkIF9pbml0aWFsaXplX2RlYnVnaW5mb2QgKCk7Ci0rdm9pZAotK19p bml0aWFsaXplX2RlYnVnaW5mb2QgKCkKLSt7Ci0rICAvKiBzZXQvc2hvdyBkZWJ1Z2luZm9kICov Ci0rICBhZGRfYmFzaWNfcHJlZml4X2NtZCAoImRlYnVnaW5mb2QiLCBjbGFzc19ydW4sCi0rICAg ICAgICAgICAgICAgICAgICAgICAgXygiU2V0IGRlYnVnaW5mb2Qgb3B0aW9ucyIpLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICZzZXRfZGVidWdpbmZvZF9wcmVmaXhfbGlzdCwgMCwgJnNldGxp c3QpOwotKwotKyAgYWRkX3Nob3dfcHJlZml4X2NtZCAoImRlYnVnaW5mb2QiLCBjbGFzc19ydW4s Ci0rICAgICAgICAgICAgICAgICAgICAgICBfKCJTaG93IGRlYnVnaW5mb2Qgb3B0aW9ucyIpLAot KyAgICAgICAgICAgICAgICAgICAgICAgJnNob3dfZGVidWdpbmZvZF9wcmVmaXhfbGlzdCwgMCwg JnNob3dsaXN0KTsKLSsKLSsgIC8qIHNldCBkZWJ1Z2luZm9kIG9uICovCi0rICBhZGRfY21kICgi b24iLCBjbGFzc19ydW4sIHNldF9kZWJ1Z2luZm9kX29uX2NvbW1hbmQsCi0rCSAgIF8oIkVuYWJs ZSBkZWJ1Z2luZm9kLiIpLCAmc2V0X2RlYnVnaW5mb2RfcHJlZml4X2xpc3QpOwotKwotKyAgLyog c2V0IGRlYnVnaW5mb2Qgb2ZmICovCi0rICBhZGRfY21kICgib2ZmIiwgY2xhc3NfcnVuLCBzZXRf ZGVidWdpbmZvZF9vZmZfY29tbWFuZCwKLSsJICAgXygiRGlzYWJsZSBkZWJ1Z2luZm9kLiIpLCAm c2V0X2RlYnVnaW5mb2RfcHJlZml4X2xpc3QpOwotKwotKyAgLyogc2V0IGRlYnVnaW5mb2QgYXNr ICovCi0rICBhZGRfY21kICgiYXNrIiwgY2xhc3NfcnVuLCBzZXRfZGVidWdpbmZvZF9hc2tfY29t bWFuZCwgXygiXAotK0FzayB0aGUgdXNlciB3aGV0aGVyIHRvIGVuYWJsZSBkZWJ1Z2luZm9kIGJl Zm9yZSBwZXJmb3JtaW5nIHRoZSBuZXh0IHF1ZXJ5LiIpLAotKwkgICAmc2V0X2RlYnVnaW5mb2Rf cHJlZml4X2xpc3QpOwotKwotKyAgLyogc2hvdyBkZWJ1Z2luZm9kIHN0YXR1cyAqLwotKyAgYWRk X2NtZCAoInN0YXR1cyIsIGNsYXNzX3J1biwgc2hvd19kZWJ1Z2luZm9kX3N0YXR1c19jb21tYW5k LAotKwkgICBfKCJTaG93IHdoZXRoZXIgZGVidWdpbmZvZCBpcyBzZXQgdG8gXCJvblwiLCBcIm9m ZlwiIG9yIFwiYXNrXCIuIiksCi0rCSAgICZzaG93X2RlYnVnaW5mb2RfcHJlZml4X2xpc3QpOwot KwotKyAgLyogc2V0L3Nob3cgZGVidWdpbmZvZCB1cmxzICovCi0rICBhZGRfc2V0c2hvd19zdHJp bmdfbm9lc2NhcGVfY21kICgidXJscyIsIGNsYXNzX3J1biwgJmRlYnVnaW5mb2RfdXJscywgXygi XAotK1NldCB0aGUgbGlzdCBvZiBkZWJ1Z2luZm9kIHNlcnZlciBVUkxzLiIpLCBfKCJcCi0rU2hv dyB0aGUgbGlzdCBvZiBkZWJ1Z2luZm9kIHNlcnZlciBVUkxzLiIpLCBfKCJcCi0rTWFuYWdlIHRo ZSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBkZWJ1Z2luZm9kIHNlcnZlciBVUkxzIHRoYXQgR0RC IHdpbGwgcXVlcnkgXAotK3doZW4gbWlzc2luZyBkZWJ1Z2luZm8sIGV4ZWN1dGFibGVzIG9yIHNv dXJjZSBmaWxlcy5cblRoZSBkZWZhdWx0IHZhbHVlIGlzIFwKLStjb3BpZWQgZnJvbSB0aGUgREVC VUdJTkZPRF9VUkxTIGVudmlyb25tZW50IHZhcmlhYmxlLiIpLAotKwkJCQkgICBzZXRfZGVidWdp bmZvZF91cmxzX2NvbW1hbmQsCi0rCQkJCSAgIHNob3dfZGVidWdpbmZvZF91cmxzX2NvbW1hbmQs Ci0rCQkJCSAgICZzZXRfZGVidWdpbmZvZF9wcmVmaXhfbGlzdCwKLSsJCQkJICAgJnNob3dfZGVi dWdpbmZvZF9wcmVmaXhfbGlzdCk7Ci0rICBpZiAoZ2V0ZW52ICgiREVCVUdJTkZPRF9VUkxTIikg IT0gbnVsbHB0cikKLSsgICAgZGVidWdpbmZvZF91cmxzID0geHN0cmR1cCAoZ2V0ZW52ICgiREVC VUdJTkZPRF9VUkxTIikpOwotKwotKyAgLyogc2V0L3Nob3cgZGVidWdpbmZvZCB2ZXJib3NlICov Ci0rICBhZGRfc2V0c2hvd196dWludGVnZXJfY21kICgidmVyYm9zZSIsIGNsYXNzX3N1cHBvcnQs Ci0rCQkJICAgICAmZGVidWdpbmZvZF92ZXJib3NlLCBfKCJcCi0rU2V0IHZlcmJvc2l0eSBvZiBk ZWJ1Z2luZm9kIG91dHB1dC4iKSwgXygiXAotK1Nob3cgZGVidWdpbmZvZCBkZWJ1Z2dpbmcuIiks IF8oIlwKLStXaGVuIHNldCB0byBhIG5vbi16ZXJvIHZhbHVlLCBkaXNwbGF5IHZlcmJvc2Ugb3V0 cHV0IGZvciBlYWNoIGRlYnVnaW5mb2QgXAotK3F1ZXJ5LlxuVG8gZGlzYWJsZSwgc2V0IHRvIHpl cm8uICBWZXJib3NlIG91dHB1dCBpcyBkaXNwbGF5ZWQgYnkgZGVmYXVsdC4iKSwKLSsJCQkgICAg IHNldF9kZWJ1Z2luZm9kX3ZlcmJvc2VfY29tbWFuZCwKLSsJCQkgICAgIHNob3dfZGVidWdpbmZv ZF92ZXJib3NlX2NvbW1hbmQsCi0rCQkJICAgICAmc2V0X2RlYnVnaW5mb2RfcHJlZml4X2xpc3Qs Ci0rCQkJICAgICAmc2hvd19kZWJ1Z2luZm9kX3ByZWZpeF9saXN0KTsKLSt9Ci1kaWZmIC0tZ2l0 IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZGVidWdpbmZvZC9mZXRjaF9zcmNfYW5kX3N5bWJvbHMuZXhw IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZGVidWdpbmZvZC9mZXRjaF9zcmNfYW5kX3N5bWJvbHMuZXhw Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5kZWJ1Z2luZm9kL2ZldGNoX3NyY19hbmRfc3ltYm9s cy5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmRlYnVnaW5mb2QvZmV0Y2hfc3JjX2FuZF9z eW1ib2xzLmV4cAotQEAgLTIxNyw3ICsyMTcsOCBAQCBwcm9jIGxvY2FsX3VybCB7IH0gewotICAg ICBzZXRlbnYgREVCVUdJTkZPRF9VUkxTIGh0dHA6Ly8xMjcuMC4wLjE6JHBvcnQKLSAKLSAgICAg IyBnZGIgc2hvdWxkIG5vdyBmaW5kIHRoZSBzeW1ib2wgYW5kIHNvdXJjZSBmaWxlcwotLSAgICBj bGVhbl9yZXN0YXJ0ICRiaW5maWxlCi0rICAgIGNsZWFuX3Jlc3RhcnQKLSsgICAgZ2RiX3Rlc3Qg ImZpbGUgJGJpbmZpbGUiICIiICJmaWxlIFtmaWxlIHRhaWwgJGJpbmZpbGVdIiAiRW5hYmxlIGRl YnVnaW5mb2Q/LioiICJ5IgotICAgICBnZGJfdGVzdF9ub19vdXRwdXQgInNldCBzdWJzdGl0dXRl LXBhdGggJG91dHB1dGRpciAvZGV2L251bGwiIFwKLSAJInNldCBzdWJzdGl0dXRlLXBhdGgiCi0g ICAgIGdkYl90ZXN0ICJiciBtYWluIiAiQnJlYWtwb2ludCAxIGF0LipmaWxlLioiCi1AQCAtMjI2 LDggKzIyNywyNiBAQCBwcm9jIGxvY2FsX3VybCB7IH0gewotICAgICAjIGdkYiBzaG91bGQgbm93 IGZpbmQgdGhlIGRlYnVnYWx0bGluayBmaWxlCi0gICAgIGNsZWFuX3Jlc3RhcnQKLSAgICAgZ2Ri X3Rlc3QgImZpbGUgJHtiaW5maWxlfV9hbHQubyIgXAotLQkiLipSZWFkaW5nIHN5bWJvbHMgZnJv bSAke2JpbmZpbGV9X2FsdC5vXC5cLlwuKiIgXAotLQkiZmlsZSBbZmlsZSB0YWlsICR7YmluZmls ZX1fYWx0Lm9dIgotKwkiLipEb3dubG9hZGluZy4qc2VwYXJhdGUgZGVidWcgaW5mby4qIiBcCi0r CSJmaWxlIFtmaWxlIHRhaWwgJHtiaW5maWxlfV9hbHQub10iIFwKLSsJIi4qRW5hYmxlIGRlYnVn aW5mb2Q/LioiICJ5IgotKwotKyAgICAjIENvbmZpZ3VyZSBkZWJ1Z2luZm9kIHdpdGggY29tbWFu ZHMKLSsgICAgdW5zZXRlbnYgREVCVUdJTkZPRF9VUkxTCi0rICAgIGNsZWFuX3Jlc3RhcnQKLSsg ICAgZ2RiX3Rlc3QgImZpbGUgJGJpbmZpbGUiICIuKk5vIGRlYnVnZ2luZyBzeW1ib2xzLioiIFwK LSsJImZpbGUgW2ZpbGUgdGFpbCAkYmluZmlsZV0gY21kIgotKyAgICBnZGJfdGVzdF9ub19vdXRw dXQgInNldCBkZWJ1Z2luZm9kIG9mZiIKLSsgICAgZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgZGVi dWdpbmZvZCB1cmxzIGh0dHA6Ly8xMjcuMC4wLjE6JHBvcnQiCi0rCi0rICAgICMgZ2RiIHNob3Vs ZG4ndCBmaW5kIHRoZSBkZWJ1Z2luZm8gc2luY2UgZGVidWdpbmZvZCBoYXMgYmVlbiBkaXNhYmxl ZAotKyAgICBnZGJfdGVzdCAiZmlsZSAkYmluZmlsZSIgIi4qTm8gZGVidWdnaW5nIHN5bWJvbHMu KiIgXAotKwkiZmlsZSBbZmlsZSB0YWlsICRiaW5maWxlXSBjbWQgb2ZmIgotKwotKyAgICAjIEVu YWJsZSBkZWJ1Z2luZm9kIGFuZCBmZXRjaCB0aGUgZGVidWdpbmZvCi0rICAgIGdkYl90ZXN0X25v X291dHB1dCAic2V0IGRlYnVnaW5mb2Qgb24iCi0rICAgIGdkYl90ZXN0ICJmaWxlICRiaW5maWxl IiAiLipSZWFkaW5nIHN5bWJvbHMgZnJvbS4qZGVidWdpbmZvLioiIFwKLSsJImZpbGUgW2ZpbGUg dGFpbCAkYmluZmlsZV0gY21kIG9uIgotIH0KLSAKLSBzZXQgZW52bGlzdCBcCgpkaWZmIC0tZ2l0 IGEvZ2RiLXJoYnoyMDQyMjU3LWZ0YnMtdXBkYXRlcy5wYXRjaCBiL2dkYi1yaGJ6MjA0MjI1Ny1m dGJzLXVwZGF0ZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmNGZhYWUu LjAwMDAwMDAKLS0tIGEvZ2RiLXJoYnoyMDQyMjU3LWZ0YnMtdXBkYXRlcy5wYXRjaAorKysgL2Rl di9udWxsCkBAIC0xLDEwMSArMCwwIEBACi1Gcm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQotRnJvbTogS2VpdGggU2VpdHogPGtlaXRoc0ByZWRoYXQuY29tPgotRGF0 ZTogV2VkLCAyNiBKYW4gMjAyMiAwODo1NjoxOCAtMDgwMAotU3ViamVjdDogZ2RiLXJoYnoyMDQy MjU3LWZ0YnMtdXBkYXRlcy5wYXRjaAotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTog dGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJp dAotCi07OyBGaXggYnVpbGQgcHJvYmxlbXMuCi07OyAoUkhCWiAyMDQyMjU3LCBLZWl0aCBTZWl0 eiwgQW5kcmV3IEJ1cmdlc3MpCi0KLTEpIFJlZmVyZW5jZSBhcnJheSBvZiBzdHJ1Y3RzIGluc3Rl YWQgb2YgZmlyc3QgbWVtYmVyIGR1cmluZyBtZW1jcHkKLQotYWFyY2g2NC10ZGVwLmMgZGVmaW5l cyB0aGUgZm9sbG93aW5nIG1hY3JvOgotCi0gICAgICAgIGRvICBcCi0gICAgICAgICAgeyBcCi0g ICAgICAgICAgICB1bnNpZ25lZCBpbnQgbWVtX2xlbiA9IExFTkdUSDsgXAotICAgICAgICAgICAg aWYgKG1lbV9sZW4pIFwKLSAgICAgICAgICAgICAgeyBcCi0gICAgICAgICAgICAgICAgTUVNUyA9 ICBYTkVXVkVDIChzdHJ1Y3QgYWFyY2g2NF9tZW1fciwgbWVtX2xlbik7ICBcCi0gICAgICAgICAg ICAgICAgbWVtY3B5KCZNRU1TLT5sZW4sICZSRUNPUkRfQlVGWzBdLCBcCi0gICAgICAgICAgICAg ICAgICAgICAgIHNpemVvZihzdHJ1Y3QgYWFyY2g2NF9tZW1fcikgKiBMRU5HVEgpOyBcCi0gICAg ICAgICAgICAgIH0gXAotICAgICAgICAgIH0gXAotICAgICAgICAgIHdoaWxlICgwKQotCi1UaGlz IGlzIHNpbWxweSBhbGxvY2F0aW5nIGEgbmV3IGFycmF5IGFuZCBjb3B5aW5nIGl0LiBIb3dldmVy LCBmb3IKLXRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzLCBpdCBpcyBhY3R1YWxseSBjb3B5aW5nIGlu dG8gdGhlIGZpcnN0IG1lbWJlcgotb2YgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIGFycmF5IChg Jk1FTVMtPmxlbiIpLiBUaGlzIGVsaWNpdHMgYQotd2FybmluZyB3aXRoIEdDQyAxMjoKLQotLi4v Li4vYmludXRpbHMtZ2RiL2dkYi9hYXJjaDY0LXRkZXAuYzogSW4gZnVuY3Rpb24g4oCYaW50IGFh cmNoNjRfcHJvY2Vzc19yZWNvcmQoZ2RiYXJjaCosIHJlZ2NhY2hlKiwgQ09SRV9BRERSKeKAmToK LS4uLy4uL2JpbnV0aWxzLWdkYi9nZGIvYWFyY2g2NC10ZGVwLmM6MzcxMToyMzogZXJyb3I6IHdy aXRpbmcgMTYgYnl0ZXMgaW50byBhIHJlZ2lvbiBvZiBzaXplIDggWy1XZXJyb3I9c3RyaW5nb3At b3ZlcmZsb3c9XQotIDM3MTEgfCAgICAgICAgICAgICAgICAgbWVtY3B5KCZNRU1TLT5sZW4sICZS RUNPUkRfQlVGWzBdLCBcCi0gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICBeCi0uLi8uLi9i aW51dGlscy1nZGIvZ2RiL2FhcmNoNjQtdGRlcC5jOjQzOTQ6Mzogbm90ZTogaW4gZXhwYW5zaW9u IG9mIG1hY3JvIOKAmE1FTV9BTExPQ+KAmQotIDQzOTQgfCAgIE1FTV9BTExPQyAoYWFyY2g2NF9p bnNuX3ItPmFhcmNoNjRfbWVtcywgYWFyY2g2NF9pbnNuX3ItPm1lbV9yZWNfY291bnQsCi0gICAg ICB8ICAgXn5+fn5+fn5+Ci0uLi8uLi9iaW51dGlscy1nZGIvZ2RiL2FhcmNoNjQtdGRlcC5jOjM3 MjE6MTI6IG5vdGU6IGRlc3RpbmF0aW9uIG9iamVjdCDigJhhYXJjaDY0X21lbV9yOjpsZW7igJkg b2Ygc2l6ZSA4Ci0gMzcyMSB8ICAgdWludDY0X3QgbGVuOyAgICAvKiBSZWNvcmQgbGVuZ3RoLiAg Ki8KLSAgICAgIHwgICAgICAgICAgICBefn4KLQotVGhlIHNpbXBsZSBmaXggaXMgdG8gcmVmZXJl bmNlIHRoZSBhcnJheSwgYE1FTVMnIGFzIHRoZSBkZXN0aW5hdGlvbiBvZiB0aGUgY29weS4KLQot VGVzdGVkIGJ5IHJlYnVpbGRpbmcuCi0KLTIpICAgICBGaXggYnVpbGQgd2l0aCBjdXJyZW50IEdD QzogRUxfRVhQTElDSVQobG9jYXRpb24pIGFsd2F5cyBub24tTlVMTAotCi0gICAgQ29tcGlsaW5n IEdEQiB3aXRoIGN1cnJlbnQgR0NDICgxYjRhNjM1OTNiKSBydW5zIGludG8gdGhpczoKLQotICAg ICAgc3JjL2dkYi9sb2NhdGlvbi5jOiBJbiBmdW5jdGlvbiAnaW50IGV2ZW50X2xvY2F0aW9uX2Vt cHR5X3AoY29uc3QgZXZlbnRfbG9jYXRpb24qKSc6Ci0gICAgICBzcmMvZ2RiL2xvY2F0aW9uLmM6 OTYzOjM4OiBlcnJvcjogdGhlIGFkZHJlc3Mgb2YgJ2V2ZW50X2xvY2F0aW9uOjo8dW5uYW1lZCB1 bmlvbj46OmV4cGxpY2l0X2xvYycgd2lsbCBuZXZlciBiZSBOVUxMIFstV2Vycm9yPWFkZHJlc3Nd Ci0gICAgICAgIDk2MyB8ICAgICAgIHJldHVybiAoRUxfRVhQTElDSVQgKGxvY2F0aW9uKSA9PSBO VUxMCi0gICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe Ci0gICAgICBzcmMvZ2RiL2xvY2F0aW9uLmM6NTc6MzA6IG5vdGU6ICdldmVudF9sb2NhdGlvbjo6 PHVubmFtZWQgdW5pb24+OjpleHBsaWNpdF9sb2MnIGRlY2xhcmVkIGhlcmUKLSAgICAgICAgIDU3 IHwgICAgIHN0cnVjdCBleHBsaWNpdF9sb2NhdGlvbiBleHBsaWNpdF9sb2M7Ci0gICAgICAgICAg ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+fn5+Ci0KLSAgICBHQ0Mg aXMgcmlnaHQsIEVMX0VYUExJQ0lUIGlzIGRlZmluZWQgYXMgcmV0dXJuaW5nIHRoZSBhZGRyZXNz IG9mIGFuCi0gICAgdW5pb24gZmllbGQ6Ci0KLSAgICAgICAgICAvKiBBbiBleHBsaWNpdCBsb2Nh dGlvbi4gICovCi0gICAgICAgICAgc3RydWN0IGV4cGxpY2l0X2xvY2F0aW9uIGV4cGxpY2l0X2xv YzsKLSAgICAgICNkZWZpbmUgRUxfRVhQTElDSVQoUCkgKCYoKFApLT51LmV4cGxpY2l0X2xvYykp Ci0KLSAgICBhbmQgdGh1cyBtdXN0IGFsd2F5cyBiZSBub24tTlVMTC4KLQotZGlmZiAtLWdpdCBh L2dkYi9hYXJjaDY0LXRkZXAuYyBiL2dkYi9hYXJjaDY0LXRkZXAuYwotLS0tIGEvZ2RiL2FhcmNo NjQtdGRlcC5jCi0rKysgYi9nZGIvYWFyY2g2NC10ZGVwLmMKLUBAIC0zNjY2LDcgKzM2NjYsNyBA QCBXaGVuIG9uLCBBQXJjaDY0IHNwZWNpZmljIGRlYnVnZ2luZyBpcyBlbmFibGVkLiIpLAotIAkg ICAgaWYgKG1lbV9sZW4pIFwKLSAJICAgICAgeyBcCi0gCQlNRU1TID0gIFhORVdWRUMgKHN0cnVj dCBhYXJjaDY0X21lbV9yLCBtZW1fbGVuKTsgIFwKLS0JCW1lbWNweSgmTUVNUy0+bGVuLCAmUkVD T1JEX0JVRlswXSwgXAotKwkJbWVtY3B5KE1FTVMsICZSRUNPUkRfQlVGWzBdLCBcCi0gCQkgICAg ICAgc2l6ZW9mKHN0cnVjdCBhYXJjaDY0X21lbV9yKSAqIExFTkdUSCk7IFwKLSAJICAgICAgfSBc Ci0gCSAgfSBcCi1kaWZmIC0tZ2l0IGEvZ2RiL2xvY2F0aW9uLmMgYi9nZGIvbG9jYXRpb24uYwot LS0tIGEvZ2RiL2xvY2F0aW9uLmMKLSsrKyBiL2dkYi9sb2NhdGlvbi5jCi1AQCAtOTYwLDEyICs5 NjAsMTEgQEAgZXZlbnRfbG9jYXRpb25fZW1wdHlfcCAoY29uc3Qgc3RydWN0IGV2ZW50X2xvY2F0 aW9uICpsb2NhdGlvbikKLSAgICAgICByZXR1cm4gMDsKLSAKLSAgICAgY2FzZSBFWFBMSUNJVF9M T0NBVElPTjoKLS0gICAgICByZXR1cm4gKEVMX0VYUExJQ0lUIChsb2NhdGlvbikgPT0gTlVMTAot LQkgICAgICB8fCAoRUxfRVhQTElDSVQgKGxvY2F0aW9uKS0+c291cmNlX2ZpbGVuYW1lID09IE5V TEwKLS0JCSAgJiYgRUxfRVhQTElDSVQgKGxvY2F0aW9uKS0+ZnVuY3Rpb25fbmFtZSA9PSBOVUxM Ci0tCQkgICYmIEVMX0VYUExJQ0lUIChsb2NhdGlvbiktPmxhYmVsX25hbWUgPT0gTlVMTAotLQkJ ICAmJiAoRUxfRVhQTElDSVQgKGxvY2F0aW9uKS0+bGluZV9vZmZzZXQuc2lnbgotLQkJICAgICAg PT0gTElORV9PRkZTRVRfVU5LTk9XTikpKTsKLSsgICAgICByZXR1cm4gKEVMX0VYUExJQ0lUIChs b2NhdGlvbiktPnNvdXJjZV9maWxlbmFtZSA9PSBOVUxMCi0rCSAgICAgICYmIEVMX0VYUExJQ0lU IChsb2NhdGlvbiktPmZ1bmN0aW9uX25hbWUgPT0gTlVMTAotKwkgICAgICAmJiBFTF9FWFBMSUNJ VCAobG9jYXRpb24pLT5sYWJlbF9uYW1lID09IE5VTEwKLSsJICAgICAgJiYgKEVMX0VYUExJQ0lU IChsb2NhdGlvbiktPmxpbmVfb2Zmc2V0LnNpZ24KLSsJCSAgPT0gTElORV9PRkZTRVRfVU5LTk9X TikpOwotIAotICAgICBjYXNlIFBST0JFX0xPQ0FUSU9OOgotICAgICAgIHJldHVybiBFTF9QUk9C RSAobG9jYXRpb24pID09IE5VTEw7CgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYnoyMDY4MjgwLWRlYnVn aW5mb2QtdW5hdmFpbGFibGUtc2l6ZS5wYXRjaCBiL2dkYi1yaGJ6MjA2ODI4MC1kZWJ1Z2luZm9k LXVuYXZhaWxhYmxlLXNpemUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkx ZGEwY2YuLjAwMDAwMDAKLS0tIGEvZ2RiLXJoYnoyMDY4MjgwLWRlYnVnaW5mb2QtdW5hdmFpbGFi bGUtc2l6ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLUZyb20gRkVET1JB X1BBVENIRVMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLZXZpbiBCdWV0dG5lciA8 a2V2aW5iQHJlZGhhdC5jb20+Ci1EYXRlOiBXZWQsIDMwIE1hciAyMDIyIDEzOjI4OjI2IC0wNzAw Ci1TdWJqZWN0OiBnZGItcmhiejIwNjgyODAtZGVidWdpbmZvZC11bmF2YWlsYWJsZS1zaXplLnBh dGNoCi0KLTs7IEJhY2twb3J0IHVwc3RyZWFtIHBhdGNoIGZyb20gQWFyb24gTWVyZXkgd2hpY2gg c3VwcHJlc3NlcyBkZWJ1Z2luZm9kCi07OyBwcm9ncmVzcyBtZXNzYWdlcyB3aGVuIHNpemUgaXMg emVyby4gIChSSCBCWiAyMDY4MjgwKS4KLQotUmVtb3ZlIGRvd25sb2FkIHNpemUgZnJvbSBkZWJ1 Z2luZm9kIHByb2dyZXNzIG1lc3NhZ2VzIGlmIHVuYXZhaWxhYmxlCi0KLUN1cnJlbnRseSBkZWJ1 Z2luZm9kIHByb2dyZXNzIHVwZGF0ZSBtZXNzYWdlcyBpbmNsdWRlIHRoZSBzaXplIG9mCi1lYWNo IGRvd25sb2FkOgotCi0gIERvd25sb2FkaW5nIDcuNSBNQiBzZXBhcmF0ZSBkZWJ1ZyBpbmZvIGZv ciAvbGliL2xpYnh5ei5zby4wCi0KLVRoaXMgdmFsdWUgb3JpZ2luYXRlcyBmcm9tIHRoZSBDb250 ZW50LUxlbmd0aCBIVFRQIGhlYWRlciBvZiB0aGUKLXRyYW5zZmVyLiAgSG93ZXZlciB0aGlzIGhl YWRlciBpcyBub3QgZ3VhcmFudGVlZCB0byBiZSBwcmVzZW50IGZvcgotZWFjaCBkb3dubG9hZC4g IFRoaXMgY2FuIGhhcHBlbiB3aGVuIGRlYnVnaW5mb2Qgc2VydmVycyBjb21wcmVzcyBmaWxlcwot b24tdGhlLWZseSBhdCB0aGUgdGltZSBvZiB0cmFuc2Zlci4gIEluIHRoaXMgY2FzZSBnZGIgd3Jv bmdseSBwcmludHMKLSItMC4wMCBNQiIgYXMgdGhlIHNpemUuCi0KLVRoaXMgcGF0Y2ggcmVtb3Zl cyBkb3dubG9hZCBzaXplcyBmcm9tIHByb2dyZXNzIG1lc3NhZ2VzIHdoZW4gdGhleSBhcmUKLW5v dCBhdmFpbGFibGUuICBJdCBhbHNvIHJlbW92ZXMgdXNhZ2Ugb2YgdGhlIHByb2dyZXNzIGJhciB1 bnRpbAotYSBtb3JlIHRob3JvdWdoIHJld29ya2luZyBvZiBwcm9ncmVzcyB1cGRhdGluZyBpcyBp bXBsZW1lbnRlZC4gWzFdCi0KLVsxXSBodHRwczovL3NvdXJjZXdhcmUub3JnL3BpcGVybWFpbC9n ZGItcGF0Y2hlcy8yMDIyLUZlYnJ1YXJ5LzE4NTc5OC5odG1sCi0KLWRpZmYgLS1naXQgYS9nZGIv ZGVidWdpbmZvZC1zdXBwb3J0LmMgYi9nZGIvZGVidWdpbmZvZC1zdXBwb3J0LmMKLS0tLSBhL2dk Yi9kZWJ1Z2luZm9kLXN1cHBvcnQuYwotKysrIGIvZ2RiL2RlYnVnaW5mb2Qtc3VwcG9ydC5jCi1A QCAtODEsMTIgKzgxLDEyIEBAIGRlYnVnaW5mb2RfZGVidWdpbmZvX3F1ZXJ5IChjb25zdCB1bnNp Z25lZCBjaGFyICpidWlsZF9pZCwKLSBzdHJ1Y3QgdXNlcl9kYXRhCi0gewotICAgdXNlcl9kYXRh IChjb25zdCBjaGFyICpkZXNjLCBjb25zdCBjaGFyICpmbmFtZSkKLS0gICAgOiBkZXNjIChkZXNj KSwgZm5hbWUgKGZuYW1lKQotKyAgICA6IGRlc2MgKGRlc2MpLCBmbmFtZSAoZm5hbWUpLCBoYXNf cHJpbnRlZCAoZmFsc2UpCi0gICB7IH0KLSAKLSAgIGNvbnN0IGNoYXIgKiBjb25zdCBkZXNjOwot ICAgY29uc3QgY2hhciAqIGNvbnN0IGZuYW1lOwotLSAgZ2RiOjpvcHRpb25hbDx1aV9vdXQ6OnBy b2dyZXNzX21ldGVyPiBtZXRlcjsKLSsgIGJvb2wgaGFzX3ByaW50ZWQ7Ci0gfTsKLSAKLSAvKiBE ZWxldGVyIGZvciBhIGRlYnVnaW5mb2RfY2xpZW50LiAgKi8KLUBAIC0xMTYsMjQgKzExNiwzMiBA QCBwcm9ncmVzc2ZuIChkZWJ1Z2luZm9kX2NsaWVudCAqYywgbG9uZyBjdXIsIGxvbmcgdG90YWwp Ci0gICAgICAgcmV0dXJuIDE7Ci0gICAgIH0KLSAKLS0gIGlmICh0b3RhbCA9PSAwKQotLSAgICBy ZXR1cm4gMDsKLS0KLS0gIGlmICghZGF0YS0+bWV0ZXIuaGFzX3ZhbHVlICgpKQotKyAgaWYgKCFk YXRhLT5oYXNfcHJpbnRlZCkKLSAgICAgewotLSAgICAgIGZsb2F0IHNpemVfaW5fbWIgPSAxLjBm ICogdG90YWwgLyAoMTAyNCAqIDEwMjQpOwotLSAgICAgIHN0cmluZ19maWxlIHN0eWxlZF9maWxl bmFtZSAoY3VycmVudF91aW91dC0+Y2FuX2VtaXRfc3R5bGVfZXNjYXBlICgpKTsKLS0gICAgICBm cHJpbnRmX3N0eWxlZCAoJnN0eWxlZF9maWxlbmFtZSwKLS0JCSAgICAgIGZpbGVfbmFtZV9zdHls ZS5zdHlsZSAoKSwKLS0JCSAgICAgICIlcyIsCi0tCQkgICAgICBkYXRhLT5mbmFtZSk7Ci0tICAg ICAgc3RkOjpzdHJpbmcgbWVzc2FnZQotLQk9IHN0cmluZ19wcmludGYgKCJEb3dubG9hZGluZyAl LjJmIE1CICVzICVzIiwgc2l6ZV9pbl9tYiwgZGF0YS0+ZGVzYywKLS0JCQkgc3R5bGVkX2ZpbGVu YW1lLmNfc3RyKCkpOwotLSAgICAgIGRhdGEtPm1ldGVyLmVtcGxhY2UgKGN1cnJlbnRfdWlvdXQs IG1lc3NhZ2UsIDEpOwotLSAgICB9Ci0rICAgICAgLyogSW5jbHVkZSB0aGUgdHJhbnNmZXIgc2l6 ZSwgaWYgYXZhaWxhYmxlLiAgKi8KLSsgICAgICBpZiAodG90YWwgPiAwKQotKwl7Ci0rCSAgZmxv YXQgc2l6ZSA9IDEuMGYgKiB0b3RhbCAvIDEwMjQ7Ci0rCSAgY29uc3QgY2hhciAqdW5pdCA9ICJL QiI7Ci0rCi0rCSAgLyogSWYgc2l6ZSBpcyBncmVhdGVyIHRoYW4gMC4wMSBNQiwgc2V0IHVuaXQg dG8gTUIuICAqLwotKwkgIGlmIChzaXplID4gMTAuMjQpCi0rCSAgICB7Ci0rCSAgICAgIHNpemUg Lz0gMTAyNDsKLSsJICAgICAgdW5pdCA9ICJNQiI7Ci0rCSAgICB9Ci0rCi0rCSAgcHJpbnRmX2Zp bHRlcmVkICgiRG93bmxvYWRpbmcgJS4yZiAlcyAlcyAlcHMuLi5cbiIsCi0rCQkJICAgc2l6ZSwg dW5pdCwgZGF0YS0+ZGVzYywKLSsJCQkgICBzdHlsZWRfc3RyaW5nIChmaWxlX25hbWVfc3R5bGUu c3R5bGUgKCksCi0rCQkJCQkgIGRhdGEtPmZuYW1lKSk7Ci0rCX0KLSsgICAgICBlbHNlCi0rCXBy aW50Zl9maWx0ZXJlZCAoIkRvd25sb2FkaW5nICVzICVwcy4uLlxuIiwgZGF0YS0+ZGVzYywKLSsJ CQkgc3R5bGVkX3N0cmluZyAoZmlsZV9uYW1lX3N0eWxlLnN0eWxlICgpLCBkYXRhLT5mbmFtZSkp OwotIAotLSAgY3VycmVudF91aW91dC0+cHJvZ3Jlc3MgKChkb3VibGUpY3VyIC8gKGRvdWJsZSl0 b3RhbCk7Ci0rICAgICAgZGF0YS0+aGFzX3ByaW50ZWQgPSB0cnVlOwotKyAgICB9Ci0gCi0gICBy ZXR1cm4gMDsKLSB9CgpkaWZmIC0tZ2l0IGEvZ2RiLXRlc3QtZm9yLXJoYnoxOTc2ODg3LnBhdGNo IGIvZ2RiLXRlc3QtZm9yLXJoYnoxOTc2ODg3LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAzY2I3MDQ5Li4wMDAwMDAwCi0tLSBhL2dkYi10ZXN0LWZvci1yaGJ6MTk3Njg4Ny5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU5MiArMCwwIEBACi1Gcm9tIEZFRE9SQV9QQVRDSEVT IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0FsZXhhbmRyYT0yMEg9 QzM9QTFqa292PUMzPUExPz0gPGFoYWprb3ZhQHJlZGhhdC5jb20+Ci1EYXRlOiBXZWQsIDI5IFNl cCAyMDIxIDExOjE0OjUxICswMjAwCi1TdWJqZWN0OiBnZGItdGVzdC1mb3ItcmhiejE5NzY4ODcu cGF0Y2gKLQotOzsgQmFja3BvcnQgdGVzdCBmb3IgUkhCWiAxOTc2ODg3IChLZXZpbiBCdWV0dG5l cikuCi0KLVRlc3QgY2FzZSByZXByb2R1Y2luZyBQUjI4MDMwIGJ1ZwotCi1UaGUgb3JpZ2luYWwg cmVwcm9kdWNlciBmb3IgUFIyODAzMCByZXF1aXJlZCB1c2Ugb2YgYSBzcGVjaWZpYwotY29tcGls ZXIgdmVyc2lvbiAtIGdjYy1jKystMTEuMS4xLTMuZmMzNCBpcyBtZW50aW9uZWQgaW4gdGhlIFBS LAotdGhvdWdoIGl0IHNlZW1zIHByb2JhYmxlIHRoYXQgb3RoZXIgZ2NjIHZlcnNpb25zIG1pZ2h0 IGFsc28gYmUgYWJsZSB0bwotcmVwcm9kdWNlIHRoZSBidWcgYXMgd2VsbC4gIFRoaXMgY29tbWl0 IGludHJvZHVjZXMgYSB0ZXN0IGNhc2Ugd2hpY2gsCi11c2luZyB0aGUgRFdBUkYgYXNzZW1ibGVy LCBwcm92aWRlcyBhIHJlcHJvZHVjZXIgd2hpY2ggaXMgaW5kZXBlbmRlbnQKLW9mIHRoZSBjb21w aWxlciB2ZXJzaW9uLiAgKFdlbGwsIGl0J2xsIHdvcmsgd2l0aCB3aGF0ZXZlciBjb21waWxlcnMK LXRoZSBEV0FSRiBhc3NlbWJsZXIgd29ya3Mgd2l0aC4pCi0KLVRvIHRoZSBiZXN0IG9mIG15IGtu b3dsZWRnZSwgaXQncyBhbHNvIHRoZSBmaXJzdCB0ZXN0IGNhc2Ugd2hpY2ggdXNlcwotdGhlIERX QVJGIGFzc2VtYmxlciB0byBwcm92aWRlIGRlYnVnIGluZm8gZm9yIGEgc2hhcmVkIG9iamVjdC4g IFRoYXQKLWJlaW5nIHRoZSBjYXNlLCBJIHByb3ZpZGVkIG1vcmUgdGhhbiB0aGUgdXN1YWwgY29t bWVudGFyeSB3aGljaCBzaG91bGQKLWFsbG93IHRoaXMgY2FzZSB0byBiZSB1c2VkIGFzIGEgdGVt cGxhdGUgd2hlbiBhIGNvbWJvIHNoYXJlZAotbGlicmFyeSAvIERXQVJGIGFzc2VtYmxlciB0ZXN0 IGNhc2UgaXMgcmVxdWlyZWQgaW4gdGhlIGZ1dHVyZS4KLQotSSBwcm92aWRlIHNvbWUgZGV0YWls cyByZWdhcmRpbmcgdGhlIGJ1ZyBpbiBhIGNvbW1lbnQgbmVhciB0aGUKLWJlZ2lubmluZyBvZiBs b2NleHByLWRtbC5leHAuCi0KLVRoaXMgcHJvYmxlbSB3YXMgZGlmZmljdWx0IHRvIHJlcHJvZHVj ZTsgSSBmb3VuZCBteXNlbGYgY29uc3RhbnRseQotcmVmZXJyaW5nIHRvIHRoZSBiYWNrdHJhY2Ug d2hpbGUgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgd2hhdCAoZWxzZSkgSQotbWlnaHQgYmUgbWlzc2lu ZyB3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIGEgcmVwcm9kdWNlci4gIEJlbG93IGlzIGEKLXBhcnRp YWwgYmFja3RyYWNlIHdoaWNoIEkgaW5jbHVkZSBmb3IgcG9zdGVyaXR5LgotCi0gIzAgIGludGVy bmFsX2Vycm9yICgKLSAgICBmaWxlPTB4YzUwMTEwICIvaXJvbndvb2QxL3NvdXJjZXdhcmUtZ2l0 L2YzNC1wcjI4MDMwL2JsZC8uLi8uLi93b3JrdHJlZS1wcjI4MDMwL2dkYi9nZGJ0eXBlcy5jIiwg bGluZT01NTc1LAotICAgIGZtdD0weGM1MjBjMCAiVW5leHBlY3RlZCB0eXBlIGZpZWxkIGxvY2F0 aW9uIGtpbmQ6ICVkIikKLSAgICBhdCAvaXJvbndvb2QxL3NvdXJjZXdhcmUtZ2l0L2YzNC1wcjI4 MDMwL2JsZC8uLi8uLi93b3JrdHJlZS1wcjI4MDMwL2dkYnN1cHBvcnQvZXJyb3JzLmNjOjUxCi0g IzEgIDB4MDAwMDAwMDAwMDZlZjBjNSBpbiBjb3B5X3R5cGVfcmVjdXJzaXZlIChvYmpmaWxlPTB4 MTYzNTkzMCwKLSAgICB0eXBlPTB4Mjc0YzI2MCwgY29waWVkX3R5cGVzPTB4MzBiYjI5MCkKLSAg ICBhdCAvaXJvbndvb2QxL3NvdXJjZXdhcmUtZ2l0L2YzNC1wcjI4MDMwL2JsZC8uLi8uLi93b3Jr dHJlZS1wcjI4MDMwL2dkYi9nZGJ0eXBlcy5jOjU1NzUKLSAjMiAgMHgwMDAwMDAwMDAwNmVmMzgy IGluIGNvcHlfdHlwZV9yZWN1cnNpdmUgKG9iamZpbGU9MHgxNjM1OTMwLAotICAgIHR5cGU9MHgy NzRjYTEwLCBjb3BpZWRfdHlwZXM9MHgzMGJiMjkwKQotICAgIGF0IC9pcm9ud29vZDEvc291cmNl d2FyZS1naXQvZjM0LXByMjgwMzAvYmxkLy4uLy4uL3dvcmt0cmVlLXByMjgwMzAvZ2RiL2dkYnR5 cGVzLmM6NTYwMgotICMzICAweDAwMDAwMDAwMDBhNzQwOWEgaW4gcHJlc2VydmVfb25lX3ZhbHVl ICh2YWx1ZT0weDI0MjY5ZjAsCi0gICAgb2JqZmlsZT0weDE2MzU5MzAsIGNvcGllZF90eXBlcz0w eDMwYmIyOTApCi0gICAgYXQgL2lyb253b29kMS9zb3VyY2V3YXJlLWdpdC9mMzQtcHIyODAzMC9i bGQvLi4vLi4vd29ya3RyZWUtcHIyODAzMC9nZGIvdmFsdWUuYzoyNTI5Ci0gIzQgIDB4MDAwMDAw MDAwMDcyMDEyYSBpbiBnZGJzY21fcHJlc2VydmVfdmFsdWVzICgKLSAgICBleHRsYW5nPTB4YzU1 NzIwIDxleHRlbnNpb25fbGFuZ3VhZ2VfZ3VpbGU+LCBvYmpmaWxlPTB4MTYzNTkzMCwKLSAgICBj b3BpZWRfdHlwZXM9MHgzMGJiMjkwKQotICAgIGF0IC9pcm9ud29vZDEvc291cmNld2FyZS1naXQv ZjM0LXByMjgwMzAvYmxkLy4uLy4uL3dvcmt0cmVlLXByMjgwMzAvZ2RiL2d1aWxlL3NjbS12YWx1 ZS5jOjk0Ci0gIzUgIDB4MDAwMDAwMDAwMDZhM2Y4MiBpbiBwcmVzZXJ2ZV9leHRfbGFuZ192YWx1 ZXMgKG9iamZpbGU9MHgxNjM1OTMwLAotICAgIGNvcGllZF90eXBlcz0weDMwYmIyOTApCi0gICAg YXQgL2lyb253b29kMS9zb3VyY2V3YXJlLWdpdC9mMzQtcHIyODAzMC9ibGQvLi4vLi4vd29ya3Ry ZWUtcHIyODAzMC9nZGIvZXh0ZW5zaW9uLmM6NTY4Ci0gIzYgIDB4MDAwMDAwMDAwMGE3NDI4ZCBp biBwcmVzZXJ2ZV92YWx1ZXMgKG9iamZpbGU9MHgxNjM1OTMwKQotICAgIGF0IC9pcm9ud29vZDEv c291cmNld2FyZS1naXQvZjM0LXByMjgwMzAvYmxkLy4uLy4uL3dvcmt0cmVlLXByMjgwMzAvZ2Ri L3ZhbHVlLmM6MjU3OQotICM3ICAweDAwMDAwMDAwMDA4MmQ1MTQgaW4gb2JqZmlsZTo6fm9iamZp bGUgKHRoaXM9MHgxNjM1OTMwLAotICAgIF9faW5fY2hyZz08b3B0aW1pemVkIG91dD4pCi0gICAg YXQgL2lyb253b29kMS9zb3VyY2V3YXJlLWdpdC9mMzQtcHIyODAzMC9ibGQvLi4vLi4vd29ya3Ry ZWUtcHIyODAzMC9nZGIvb2JqZmlsZXMuYzo1NDkKLSAjOCAgMHgwMDAwMDAwMDAwODMxY2M4IGlu IHN0ZDo6X1NwX2NvdW50ZWRfcHRyPG9iamZpbGUqLCAoX19nbnVfY3h4OjpfTG9ja19wb2xpY3kp Mj46Ol9NX2Rpc3Bvc2UgKHRoaXM9MHgxNjU0NTgwKQotICAgIGF0IC91c3IvaW5jbHVkZS9jKysv MTEvYml0cy9zaGFyZWRfcHRyX2Jhc2UuaDozNDgKLSAjOSAgMHgwMDAwMDAwMDAwNGU2NjE3IGlu IHN0ZDo6X1NwX2NvdW50ZWRfYmFzZTwoX19nbnVfY3h4OjpfTG9ja19wb2xpY3kpMj46Ol9NX3Jl bGVhc2UgKHRoaXM9MHgxNjU0NTgwKSBhdCAvdXNyL2luY2x1ZGUvYysrLzExL2JpdHMvc2hhcmVk X3B0cl9iYXNlLmg6MTY4Ci0gIzEwIDB4MDAwMDAwMDAwMDRlMWQyZiBpbiBzdGQ6Ol9fc2hhcmVk X2NvdW50PChfX2dudV9jeHg6Ol9Mb2NrX3BvbGljeSkyPjo6fl9fc2hhcmVkX2NvdW50ICh0aGlz PTB4MTkwYmI4OCwgX19pbl9jaHJnPTxvcHRpbWl6ZWQgb3V0PikKLSAgICBhdCAvdXNyL2luY2x1 ZGUvYysrLzExL2JpdHMvc2hhcmVkX3B0cl9iYXNlLmg6NzA1Ci0gIzExIDB4MDAwMDAwMDAwMDgy ZmVlZSBpbiBzdGQ6Ol9fc2hhcmVkX3B0cjxvYmpmaWxlLCAoX19nbnVfY3h4OjpfTG9ja19wb2xp Y3kpMj46On5fX3NoYXJlZF9wdHIgKHRoaXM9MHgxOTBiYjgwLCBfX2luX2Nocmc9PG9wdGltaXpl ZCBvdXQ+KQotICAgIGF0IC91c3IvaW5jbHVkZS9jKysvMTEvYml0cy9zaGFyZWRfcHRyX2Jhc2Uu aDoxMTU0Ci0gIzEyIDB4MDAwMDAwMDAwMDgyZmYwYSBpbiBzdGQ6OnNoYXJlZF9wdHI8b2JqZmls ZT46On5zaGFyZWRfcHRyICgKLSAgICB0aGlzPTB4MTkwYmI4MCwgX19pbl9jaHJnPTxvcHRpbWl6 ZWQgb3V0PikKLSAgICBhdCAvdXNyL2luY2x1ZGUvYysrLzExL2JpdHMvc2hhcmVkX3B0ci5oOjEy MgotICMxMyAweDAwMDAwMDAwMDA4NWVkN2UgaW4gX19nbnVfY3h4OjpuZXdfYWxsb2NhdG9yPHN0 ZDo6X0xpc3Rfbm9kZTxzdGQ6OnNoYXJlZF9wdHI8b2JqZmlsZT4gPiA+OjpkZXN0cm95PHN0ZDo6 c2hhcmVkX3B0cjxvYmpmaWxlPiA+ICh0aGlzPTB4MTE0YmMwMCwKLSAgICBfX3A9MHgxOTBiYjgw KSBhdCAvdXNyL2luY2x1ZGUvYysrLzExL2V4dC9uZXdfYWxsb2NhdG9yLmg6MTY4Ci0gIzE0IDB4 MDAwMDAwMDAwMDg1ZTg4ZCBpbiBzdGQ6OmFsbG9jYXRvcl90cmFpdHM8c3RkOjphbGxvY2F0b3I8 c3RkOjpfTGlzdF9ub2RlPHN0ZDo6c2hhcmVkX3B0cjxvYmpmaWxlPiA+ID4gPjo6ZGVzdHJveTxz dGQ6OnNoYXJlZF9wdHI8b2JqZmlsZT4gPiAoX19hPS4uLiwKLSAgICBfX3A9MHgxOTBiYjgwKSBh dCAvdXNyL2luY2x1ZGUvYysrLzExL2JpdHMvYWxsb2NfdHJhaXRzLmg6NTMxCi0gIzE1IDB4MDAw MDAwMDAwMDg1ZTUwYyBpbiBzdGQ6Ol9fY3h4MTE6Omxpc3Q8c3RkOjpzaGFyZWRfcHRyPG9iamZp bGU+LCBzdGQ6OmFsbG9jYXRvcjxzdGQ6OnNoYXJlZF9wdHI8b2JqZmlsZT4gPiA+OjpfTV9lcmFz ZSAodGhpcz0weDExNGJjMDAsIF9fcG9zaXRpb249Ci0gIHN0ZDo6c2hhcmVkX3B0cjxvYmpmaWxl PiAoZXhwaXJlZCwgd2VhayBjb3VudCAxKSA9IHtnZXQoKSA9IDB4MTYzNTkzMH0pCi0gICAgYXQg L3Vzci9pbmNsdWRlL2MrKy8xMS9iaXRzL3N0bF9saXN0Lmg6MTkyNQotICMxNiAweDAwMDAwMDAw MDA4NWRmMGUgaW4gc3RkOjpfX2N4eDExOjpsaXN0PHN0ZDo6c2hhcmVkX3B0cjxvYmpmaWxlPiwg c3RkOjphbGxvY2F0b3I8c3RkOjpzaGFyZWRfcHRyPG9iamZpbGU+ID4gPjo6ZXJhc2UgKHRoaXM9 MHgxMTRiYzAwLCBfX3Bvc2l0aW9uPQotICBzdGQ6OnNoYXJlZF9wdHI8b2JqZmlsZT4gKGV4cGly ZWQsIHdlYWsgY291bnQgMSkgPSB7Z2V0KCkgPSAweDE2MzU5MzB9KQotICAgIGF0IC91c3IvaW5j bHVkZS9jKysvMTEvYml0cy9saXN0LnRjYzoxNTgKLSAjMTcgMHgwMDAwMDAwMDAwODVjNzQ4IGlu IHByb2dyYW1fc3BhY2U6OnJlbW92ZV9vYmpmaWxlICh0aGlzPTB4MTE0YmJjMCwKLSAgICBvYmpm aWxlPTB4MTYzNTkzMCkKLSAgICBhdCAvaXJvbndvb2QxL3NvdXJjZXdhcmUtZ2l0L2YzNC1wcjI4 MDMwL2JsZC8uLi8uLi93b3JrdHJlZS1wcjI4MDMwL2dkYi9wcm9nc3BhY2UuYzoyMTAKLSAjMTgg MHgwMDAwMDAwMDAwODJkM2FlIGluIG9iamZpbGU6OnVubGluayAodGhpcz0weDE2MzU5MzApCi0g ICAgYXQgL2lyb253b29kMS9zb3VyY2V3YXJlLWdpdC9mMzQtcHIyODAzMC9ibGQvLi4vLi4vd29y a3RyZWUtcHIyODAzMC9nZGIvb2JqZmlsZXMuYzo0ODcKLSAjMTkgMHgwMDAwMDAwMDAwODJlNjhj IGluIG9iamZpbGVfcHVyZ2Vfc29saWJzICgpCi0gICAgYXQgL2lyb253b29kMS9zb3VyY2V3YXJl LWdpdC9mMzQtcHIyODAzMC9ibGQvLi4vLi4vd29ya3RyZWUtcHIyODAzMC9nZGIvb2JqZmlsZXMu Yzo4NzUKLSAjMjAgMHgwMDAwMDAwMDAwOTJkZDM3IGluIG5vX3NoYXJlZF9saWJyYXJpZXMgKGln bm9yZWQ9MHgwLCBmcm9tX3R0eT0xKQotICAgIGF0IC9pcm9ud29vZDEvc291cmNld2FyZS1naXQv ZjM0LXByMjgwMzAvYmxkLy4uLy4uL3dvcmt0cmVlLXByMjgwMzAvZ2RiL3NvbGliLmM6MTIzNgot ICMyMSAweDAwMDAwMDAwMDA5YTM3ZmUgaW4gdGFyZ2V0X3ByZV9pbmZlcmlvciAoZnJvbV90dHk9 MSkKLSAgICBhdCAvaXJvbndvb2QxL3NvdXJjZXdhcmUtZ2l0L2YzNC1wcjI4MDMwL2JsZC8uLi8u Li93b3JrdHJlZS1wcjI4MDMwL2dkYi90YXJnZXQuYzoyNDk2Ci0gIzIyIDB4MDAwMDAwMDAwMDc0 NTRkNiBpbiBydW5fY29tbWFuZF8xIChhcmdzPTB4MCwgZnJvbV90dHk9MSwKLSAgICBydW5faG93 PVJVTl9OT1JNQUwpCi0gICAgYXQgL2lyb253b29kMS9zb3VyY2V3YXJlLWdpdC9mMzQtcHIyODAz MC9ibGQvLi4vLi4vd29ya3RyZWUtcHIyODAzMC9nZGIvaW5mY21kLmM6NDM3Ci0KLUknbGwgbm90 ZSBhIGZldyBwb2ludHMgcmVnYXJkaW5nIHRoaXMgYmFja3RyYWNlOgotCi1GcmFtZSAjMSBpcyB3 aGVyZSB0aGUgaW50ZXJuYWwgZXJyb3Igb2NjdXJzLiAgSXQncyBjYXVzZWQgYnkgYW4KLXVuaGFu ZGxlZCBjYXNlIGZvciBGSUVMRF9MT0NfS0lORF9EV0FSRl9CTE9DSy4gIFRoZSBmaXggZm9yIHRo aXMgYnVnCi1hZGRzIHN1cHBvcnQgZm9yIHRoaXMgY2FzZS4KLQotRnJhbWUgIzIyIC0gaXQncyBh IHBhcnRpYWwgYmFja3RyYWNlIC0gc2hvd3MgdGhhdCBHREIgaXMgYXR0ZW1wdGluZyB0bwotKHJl KXJ1biB0aGUgcHJvZ3JhbS4gIFlvdSBjYW4gc2VlIHRoZSBleGFjdCBjb21tYW5kIHNlcXVlbmNl IHRoYXQgd2FzCi11c2VkIGZvciByZXByb2R1Y2luZyB0aGlzIHByb2JsZW0gaW4gdGhlIFBSIChh dAotaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjgwMzAp LCBidXQgaW4gYQotbnV0c2hlbGwsIGFmdGVyIHN0YXJ0aW5nIHRoZSBwcm9ncmFtIGFuZCBhZHZh bmNpbmcgdG8gdGhlIGFwcHJvcHJpYXRlCi1zb3VyY2UgbGluZSwgR0RCIHdhcyBhc2tlZCB0byBz dGVwIGludG8gbGlic3RkYysrOyBhICJmaW5pc2giIGNvbW1hbmQKLXdhcyBpc3N1ZWQsIHJldHVy bmluZyBhIHZhbHVlLiAgVGhlIGZhY3QgdGhhdCBhIHZhbHVlIHdhcyByZXR1cm5lZCBpcwotdmVy eSBpbXBvcnRhbnQuICBHREIgd2FzIHRoZW4gdXNlZCB0byBzdGVwIGJhY2sgaW50byBsaWJzdGRj KysuICBBCi1icmVha3BvaW50IHdhcyBzZXQgb24gYSBzb3VyY2UgbGluZSBpbiB0aGUgbGlicmFy eSBhZnRlciB3aGljaCBhICJydW4iCi1jb21tYW5kIHdhcyBpc3N1ZWQuCi0KLUZyYW1lICMxOSBz aG93cyBhIGNhbGwgdG8gb2JqZmlsZV9wdXJnZV9zb2xpYnMuICBJdCdzIGFwdGx5IG5hbWVkLgot Ci1GcmFtZSAjNyBpcyBhIGNhbGwgdG8gdGhlIGRlc3RydWN0b3IgZm9yIG9uZSBvZiB0aGUgb2Jq ZmlsZSBzb2xpYnM7IGl0Ci10dXJuZWQgb3V0IHRvIGJlIHRoZSBvbmUgZm9yIGxpYnN0ZGMrKy4K LQotRnJhbWVzICM2IHRocnUgIzMgc2hvdyB2YXJpb3VzIHZhbHVlIHByZXNlcnZhdGlvbiBmcmFt ZXMuICBJZiB5b3UgbG9vawotYXQgcHJlc2VydmVfdmFsdWVzKCkgaW4gZ2RiL3ZhbHVlLmMsIHRo ZSB2YWx1ZSBoaXN0b3J5IGlzIHByZXNlcnZlZAotZmlyc3QsIGZvbGxvd2VkIGJ5IGludGVybmFs IHZhcmlhYmxlcywgZm9sbG93ZWQgYnkgdmFsdWVzIGZvciB0aGUKLWV4dGVuc2lvbiBsYW5ndWFn ZXMgKHB5dGhvbiBhbmQgZ3VpbGUpLgotCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu ZHdhcmYyL2xvY2V4cHItZGF0YS1tZW1iZXItbG9jYXRpb24tbGliLmMgYi9nZGIvdGVzdHN1aXRl L2dkYi5kd2FyZjIvbG9jZXhwci1kYXRhLW1lbWJlci1sb2NhdGlvbi1saWIuYwotbmV3IGZpbGUg bW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJm Mi9sb2NleHByLWRhdGEtbWVtYmVyLWxvY2F0aW9uLWxpYi5jCi1AQCAtMCwwICsxLDQ4IEBACi0r LyogQ29weXJpZ2h0IChDKSAyMDIxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwot KyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsg ICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2luY2x1ZGUgImxvY2V4cHItZGF0YS1tZW1iZXItbG9j YXRpb24uaCIKLSsKLStzdHJ1Y3QgQSBnX0EgPSB7MywgNH07Ci0rc3RydWN0IEIgZ19CID0geyB7 OCwgOX0sIDEwLCAxMSB9OwotKwotK0IgKgotK2ZvbyAoKQotK3sJCQkJCQkvKiBmb28gcHJvbG9n dWUgKi8KLSsgIGFzbSAoImZvb19sYWJlbDogLmdsb2JsIGZvb19sYWJlbCIpOwotKyAgcmV0dXJu ICZnX0I7CQkJCQkvKiBmb28gcmV0dXJuICovCi0rfQkJCQkJCS8qIGZvbyBlbmQgKi8KLSsKLStC ICoKLStiYXIgKEIgKnYpCi0rewkJCQkJCS8qIGJhciBwcm9sb2d1ZSAqLwotKyAgYXNtICgiYmFy X2xhYmVsOiAuZ2xvYmwgYmFyX2xhYmVsIik7Ci0rICByZXR1cm4gdjsJCQkJCS8qIGJhciByZXR1 cm4gKi8KLSt9CQkJCQkJLyogYmFyIGVuZCAqLwotKwotKy8qIFNvbWUgb2YgdGhlIERXQVJGIGFz c2VtYmxlciBwcm9jcyAoZS5nLiBmdW5jdGlvbl9yYW5nZSkgY29tcGlsZQotKyAgIHRoaXMgZmls ZSwgZXhwZWN0aW5nIGl0IHRvIGJlIGEgY29tcGxldGUgcHJvZ3JhbSB3aXRoIGEgbWFpbigpCi0r ICAgZnVuY3Rpb24uICBXaGVuIElTX1NIQVJFRExJQiBpcyBOT1QgZGVmaW5lZCwgd2UgaGF2ZSBt YWluKCkgYXMKLSsgICBkZWZpbmVkIGJlbG93LiAgKi8KLSsKLSsjaWZuZGVmIElTX1NIQVJFRExJ QgotK2ludAotK21haW4gKCkKLSt7Ci0rICBCICpiID0gZm9vICgpOwotK30KLSsjZW5kaWYKLWRp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvbG9jZXhwci1kYXRhLW1lbWJlci1s b2NhdGlvbi1tYWluLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvbG9jZXhwci1kYXRhLW1l bWJlci1sb2NhdGlvbi1tYWluLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxs Ci0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvbG9jZXhwci1kYXRhLW1lbWJlci1sb2Nh dGlvbi1tYWluLmMKLUBAIC0wLDAgKzEsMjcgQEAKLSsvKiBDb3B5cmlnaHQgKEMpIDIwMjEgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg R0RCLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgot KyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0r ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsj aW5jbHVkZSAibG9jZXhwci1kYXRhLW1lbWJlci1sb2NhdGlvbi5oIgotKwotK2ludAotK21haW4g KHZvaWQpCi0rewotKyAgQiAqdjE7Ci0rICB2MSA9IGJhciAoZm9vICgpKTsKLSsKLSsgIHJldHVy biAwOwotK30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvbG9jZXhwci1k YXRhLW1lbWJlci1sb2NhdGlvbi5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvbG9jZXhw ci1kYXRhLW1lbWJlci1sb2NhdGlvbi5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rl di9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvbG9jZXhwci1kYXRhLW1lbWJl ci1sb2NhdGlvbi5leHAKLUBAIC0wLDAgKzEsMzQ5IEBACi0rIyBDb3B5cmlnaHQgMjAyMSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Ci0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCi0rCi0rIyBUaGlzIHRlc3QgY2FzZSB1c2VzIHRoZSBEV0FSRiBhc3NlbWJsZXIgdG8gcmVw cm9kdWNlIHRoZSBwcm9ibGVtCi0rIyBkZXNjcmliZWQgYnkgUFIyODAzMC4gIFRoZSBidWcgdHVy bmVkIG91dCB0byBiZSB0aGF0Ci0rIyBGSUVMRF9MT0NfS0lORF9EV0FSRl9CTE9DSyB3YXMgbm90 IGhhbmRsZWQgd2hlbiByZWN1cnNpdmVseSBjb3B5aW5nCi0rIyBhIHZhbHVlJ3MgdHlwZSB3aGVu IHByZXNlcnZpbmcgdGhlIHZhbHVlIGhpc3RvcnkgZHVyaW5nIHRoZSBmcmVlaW5nCi0rIyB1cCBv ZiBvYmpmaWxlcyBhc3NvY2lhdGVkIHdpdGggYSBzaGFyZWQgb2JqZWN0LiAgKFllcywgZmlndXJp bmcgb3V0Ci0rIyBob3cgdG8gbWFrZSB0aGlzIGhhcHBlbiBpbiBhIGNvbmNpc2UgdGVzdCBjYXNl IHR1cm5lZCBvdXQgdG8gYmUKLSsjIGNoYWxsZW5naW5nLikKLSsjCi0rIyBUaGUgZm9sbG93aW5n IGVsZW1lbnRzIHByb3ZlZCB0byBiZSBuZWNlc3NhcnkgZm9yIHJlcHJvZHVjaW5nIHRoZQotKyMg cHJvYmxlbToKLSsjCi0rIyAxKSBBIGxvY2F0aW9uIGV4cHJlc3Npb24gbmVlZGVkIHRvIGJlIHVz ZWQgd2l0aAotKyMgICAgRFdfQVRfZGF0YV9tZW1iZXJfbG9jYXRpb24gcmF0aGVyIHRoYW4gYSBz aW1wbGUgb2Zmc2V0LgotKyMgICAgTW9yZW92ZXIsIHRoaXMgbG9jYXRpb24gZXhwcmVzc2lvbiBu ZWVkZWQgdG8gdXNlIG9wY29kZXMKLSsjICAgIHdoaWNoIEdEQidzIERXQVJGIHJlYWRlciBjb3Vs ZCBub3QgY29udmVydCB0byBhIHNpbXBsZQotKyMgICAgb2Zmc2V0LiAgKE5vdGUsIGhvd2V2ZXIs IHRoYXQgR0RCIGNvdWxkIHByb2JhYmx5IGJlIGltcHJvdmVkCi0rIyAgICB0byBoYW5kbGUgdGhl IG9wY29kZXMgY2hvc2VuIGZvciB0aGlzIHRlc3Q7IGlmIGRlY29kZV9sb2NkZXNjKCkKLSsjICAg IGluIGR3YXJmMi9yZWFkLmMgaXMgZXZlciB1cGRhdGVkIHRvIGhhbmRsZSBib3RoIERXX09QX3Bp Y2sgYW5kCi0rIyAgICBEV19PUF9kcm9wLCB0aGVuIHRoaXMgdGVzdCBjb3VsZCBlbmQgdXAgcGFz c2luZyBldmVuIGlmCi0rIyAgICB0aGUgYnVnIGl0J3MgaW50ZW5kZWQgdG8gdGVzdCBoYXMgbm90 IGJlZW4gZml4ZWQuKQotKyMKLSsjIDIpIFRoZSBkZWJ1ZyBpbmZvIGNvbnRhaW5pbmcgdGhlIGFi b3ZlIERXQVJGIGluZm8gbmVlZGVkCi0rIyAgICB0byBiZSBhc3NvY2lhdGVkIHdpdGggYSBzaGFy ZWQgb2JqZWN0IHNpbmNlIHRoZSBwcm9ibGVtCi0rIyAgICBvY2N1cnJlZCB3aGlsZSBHREIgd2Fz IHByZXNlcnZpbmcgdmFsdWVzIGR1cmluZyB0aGUKLSsjICAgIHB1cmdpbmcgb2Ygc2hhcmVkIG9i amVjdHMuCi0rIwotKyMgMykgQWZ0ZXIgcGVyZm9ybWluZyBzb21lIHNpbXBsZSBnZGIgY29tbWFu ZHMsIHRoZSBwcm9ncmFtIGlzCi0rIyAgICBydW4gYWdhaW4uICBJbiB0aGUgY291cnNlIG9mIHJ1 bm5pbmcgdGhlIG9iamZpbGUgZGVzdHJ1Y3RvcgotKyMgICAgYXNzb2NpYXRlZCB3aXRoIHRoZSBz aGFyZWQgb2JqZWN0LCB2YWx1ZXMgYXJlIHByZXNlcnZlZAotKyMgICAgYWxvbmcgd2l0aCB0aGVp ciB0eXBlcy4gIEFzIG5vdGVkIGVhcmxpZXIsIGl0IHdhcyBkdXJpbmcKLSsjICAgIHRoZSByZWN1 cnNpdmUgdHlwZSBjb3B5IHRoYXQgdGhlIGJ1ZyB3YXMgb2JzZXJ2ZWQuCi0rIwotKyMgVGhlcmVm b3JlLCBkdWUgdG8gIzIgYWJvdmUsIHRoaXMgdGVzdCBjYXNlIGNyZWF0ZXMgZGVidWcgaW5mbwot KyMgd2hpY2ggaXMgdGhlbiB1c2VkIGJ5IGEgc2hhcmVkIG9iamVjdC4KLSsKLSsjIFRoaXMgdGVz dCBjYW4ndCBiZSBydW4gb24gdGFyZ2V0cyBsYWNraW5nIHNoYXJlZCBsaWJyYXJ5IHN1cHBvcnQu Ci0raWYgW3NraXBfc2hsaWJfdGVzdHNdIHsKLSsgICAgcmV0dXJuIDAKLSt9Ci0rCi0rbG9hZF9s aWIgZHdhcmYuZXhwCi0rCi0rIyBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIG9uIHRhcmdldHMg d2hpY2ggc3VwcG9ydCBEV0FSRi0yIGFuZCB1c2UgZ2FzLgotK2lmICFbZHdhcmYyX3N1cHBvcnRd IHsKLSsgICAgcmV0dXJuIDAKLSt9Ci0rCi0rIyBnZGJfdGVzdF9maWxlX25hbWUgaXMgdGhlIG5h bWUgb2YgdGhpcyBmaWxlIHdpdGhvdXQgdGhlIC5leHAKLSsjIGV4dGVuc2lvbi4gIFVzZSBpdCB0 byBmb3JtIGJhc2VuYW1lcyBmb3IgdGhlIG1haW4gcHJvZ3JhbQotKyMgYW5kIHNoYXJlZCBvYmpl Y3QuCi0rc2V0IG1haW5fYmFzZW5hbWUgJHs6OmdkYl90ZXN0X2ZpbGVfbmFtZX0tbWFpbgotK3Nl dCBsaWJfYmFzZW5hbWUgJHs6OmdkYl90ZXN0X2ZpbGVfbmFtZX0tbGliCi0rCi0rIyBXZSdyZSBn ZW5lcmF0aW5nIERXQVJGIGFzc2VtYmx5IGZvciB0aGUgc2hhcmVkIG9iamVjdDsgdGhlcmVmb3Jl LAotKyMgdGhlIHNvdXJjZSBmaWxlIGZvciB0aGUgbGlicmFyeSAvIHNoYXJlZCBvYmplY3QgbXVz dCBiZSBsaXN0ZWQgZmlyc3QKLSsjIChpbiB0aGUgc3RhbmRhcmRfdGVzdGZpbGUgaW52b2NhdGlv bikgc2luY2UgJHtzcmNmaWxlfSBpcyB1c2VkIGJ5Ci0rIyBnZXRfZnVuY19pbmZvIChmb3IgZGV0 ZXJtaW5pbmcgdGhlIHN0YXJ0LCBlbmQsIGFuZCBsZW5ndGggb2YgYQotKyMgZnVuY3Rpb24pLgot KyMKLSsjIFRoZSBvdXRwdXQgb2YgRHdhcmY6OmFzc2VtYmxlIHdpbGwgYmUgcGxhY2VkIGluICRs aWJfYmFzZW5hbWUuUwotKyMgd2hpY2ggd2lsbCBiZSAke3NyY2ZpbGUzfSBhZnRlciB0aGUgZXhl Y3V0aW9uIG9mIHN0YW5kYXJkX3Rlc3RmaWxlLgotKwotK3N0YW5kYXJkX3Rlc3RmaWxlICRsaWJf YmFzZW5hbWUuYyAkbWFpbl9iYXNlbmFtZS5jICRsaWJfYmFzZW5hbWUuUwotKwotK3NldCBsaWJz cmMgIiR7OjpzcmNkaXJ9LyR7OjpzdWJkaXJ9LyR7OjpzcmNmaWxlfSIKLStzZXQgbGliX3NvIFtz dGFuZGFyZF9vdXRwdXRfZmlsZSAke2xpYl9iYXNlbmFtZX0uc29dCi0rc2V0IGFzbV9maWxlIFtz dGFuZGFyZF9vdXRwdXRfZmlsZSAkezo6c3JjZmlsZTN9XQotKwotKyMgV2UgbmVlZCB0byBrbm93 IHRoZSBzaXplIG9mIHNvbWUgdHlwZXMgaW4gb3JkZXIgdG8gd3JpdGUgc29tZSBvZiB0aGUKLSsj IGRlYnVnZ2luZyBpbmZvIHRoYXQgd2UncmUgYWJvdXQgdG8gZ2VuZXJhdGUuICBGb3IgdGhhdCwg d2UgYXNrIEdEQgotKyMgYnkgZGVidWdnaW5nIHRoZSBzaGFyZWQgb2JqZWN0IGFzc29jaWF0ZWQg d2l0aCB0aGlzIHRlc3QgY2FzZS4KLSsKLSsjIENvbXBpbGUgdGhlIHNoYXJlZCBsaWJyYXJ5OiAt RElTX1NIQVJFRExJQiBwcmV2ZW50cyBtYWluKCkgZnJvbQotKyMgYmVpbmcgZGVmaW5lZC4gIE5v dGUgdGhhdCBkZWJ1Z2dpbmcgc3ltYm9scyB3aWxsIGJlIHByZXNlbnQgZm9yCi0rIyB0aGlzIGNv bXBpbGF0aW9uLgotK2lmIHtbZ2RiX2NvbXBpbGVfc2hsaWIgJGxpYnNyYyAkbGliX3NvIFwKLSsg ICAgICAgICAgICAgICAgICAgICAgIHthZGRpdGlvbmFsX2ZsYWdzPS1ESVNfU0hBUkVETElCIGRl YnVnfV0gIT0gIiJ9IHsKLSsgICAgdW50ZXN0ZWQgImZhaWxlZCB0byBjb21waWxlIHNoYXJlZCBs aWJyYXJ5IgotKyAgICByZXR1cm4KLSt9Ci0rCi0rIyBTdGFydCBhIGZyZXNoIEdEQiBhbmQgbG9h ZCB0aGUgc2hhcmVkIGxpYnJhcnkuCi0rY2xlYW5fcmVzdGFydCAkbGliX3NvCi0rCi0rIyBVc2lu ZyBvdXIgcnVubmluZyBHREIgc2Vzc2lvbiwgZGV0ZXJtaW5lIHNpemVzIG9mIHNldmVyYWwgdHlw ZXMuCi0rc2V0IGxvbmdfc2l6ZSBbZ2V0X3NpemVvZiAibG9uZyIgLTFdCi0rc2V0IGFkZHJfc2l6 ZSBbZ2V0X3NpemVvZiAidm9pZCAqIiAtMV0KLStzZXQgc3RydWN0X0Ffc2l6ZSBbZ2V0X3NpemVv ZiAiZ19BIiAtMV0KLStzZXQgc3RydWN0X0Jfc2l6ZSBbZ2V0X3NpemVvZiAiZ19CIiAtMV0KLSsK LStpZiB7ICRsb25nX3NpemUgPT0gLTEgfHwgJGFkZHJfc2l6ZSA9PSAtMSBcCi0rICAgICB8fCAk c3RydWN0X0Ffc2l6ZSA9PSAtMSB8fCAkc3RydWN0X0Jfc2l6ZSA9PSAtMX0gewotKyAgICBwZXJy b3IgIkNhbid0IGRldGVybWluZSB0eXBlIHNpemVzIgotKyAgICByZXR1cm4KLSt9Ci0rCi0rIyBS ZXRyaWV2ZSBzdHJ1Y3Qgb2Zmc2V0IG9mIE1CUiBpbiBzdHJ1Y3QgVFAKLStwcm9jIGdldF9vZmZz ZXRvZiB7IHRwIG1iciB9IHsKLSsgICAgcmV0dXJuIFtnZXRfaW50ZWdlcl92YWx1ZW9mICImKCgk e3RwfSAqKSAwKS0+JHttYnJ9IiAtMV0KLSt9Ci0rCi0rIyBVc2UgcnVubmluZyBHREIgc2Vzc2lv biB0byBnZXQgc3RydWN0IG9mZnNldHMKLStzZXQgQV9hIFtnZXRfb2Zmc2V0b2YgQSBhXQotK3Nl dCBBX3ggW2dldF9vZmZzZXRvZiBBIHhdCi0rc2V0IEJfYSBbZ2V0X29mZnNldG9mIEIgYV0KLStz ZXQgQl9iIFtnZXRfb2Zmc2V0b2YgQiBiXQotK3NldCBCX3gyIFtnZXRfb2Zmc2V0b2YgQiB4Ml0K LSsKLSsjIENyZWF0ZSB0aGUgRFdBUkYuCi0rRHdhcmY6OmFzc2VtYmxlICR7YXNtX2ZpbGV9IHsK LSsgICAgZGVjbGFyZV9sYWJlbHMgTAotKwotKyAgICAjIEZpbmQgc3RhcnQsIGVuZCwgYW5kIGxl bmd0aCBvZiBmdW5jdGlvbnMgZm9vIGFuZCBiYXIuCi0rICAgICMgVGhlc2UgY2FsbHMgdG8gZ2V0 X2Z1bmNfaW5mbyB3aWxsIGNyZWF0ZSBhbmQgc2V0IHZhcmlhYmxlcwotKyAgICAjIGZvb19zdGFy dCwgYmFyX3N0YXJ0LCBmb29fZW5kLCBiYXJfZW5kLCBmb29fbGVuLCBhbmQKLSsgICAgIyBiYXJf bGVuLgotKyAgICAjCi0rICAgICMgSW4gb3JkZXIgdG8gZ2V0IHRoZSByaWdodCBhbnN3ZXJzLCBn ZXRfZnVuY19pbmZvIChhbmQsCi0rICAgICMgdW5kZXJuZWF0aCwgZnVuY3Rpb25fcmFuZ2UpIHNo b3VsZCB1c2UgdGhlIHNhbWUgY29tcGlsZXIgZmxhZ3MKLSsgICAgIyBhcyB0aG9zZSB1c2VkIHRv IG1ha2UgYSBzaGFyZWQgb2JqZWN0LiAgRm9yIGFueSB0YXJnZXRzIHRoYXQgZ2V0Ci0rICAgICMg dGhpcyBmYXIsIC1mcGljIGlzIHByb2JhYmx5IGNvcnJlY3QuCi0rICAgICMKLSsgICAgIyBBbHNv LCBpdCBzaG91bGQgYmUgbm90ZWQgdGhhdCBJU19TSEFSRURMSUIgaXMgTk9UIGRlZmluZWQgYXMg b25lCi0rICAgICMgb2YgdGhlIGFkZGl0aW9uYWwgZmxhZ3MuICBOb3QgZGVmaW5pbmcgSVNfU0hB UkVETElCIHdpbGwgY2F1c2UgYQotKyAgICAjIG1haW4oKSB0byBiZSBkZWZpbmVkIGZvciB0aGUg Y29tcGlsYXRpb24gb2YgdGhlIHNoYXJlZCBsaWJyYXJ5Ci0rICAgICMgc291cmNlIGZpbGUgd2hp Y2ggaGFwcGVucyBhcyBhIHJlc3VsdCBvZiB1c2luZyBnZXRfZnVuY19pbmZvOwotKyAgICAjIHRo aXMgaXMgY3VycmVudGx5IHJlcXVpcmVkIGluIG9yZGVyIHRvIHRoaXMgZmFjaWxpdHkuCi0rICAg IHNldCBmbGFncyB7YWRkaXRpb25hbF9mbGFncz0tZnBpYyBkZWJ1Z30KLSsgICAgZ2V0X2Z1bmNf aW5mbyBmb28gJGZsYWdzCi0rICAgIGdldF9mdW5jX2luZm8gYmFyICRmbGFncwotKwotKyAgICBj dSB7fSB7Ci0rCURXX1RBR19jb21waWxlX3VuaXQgewotKwkgICAge0RXX0FUX2xhbmd1YWdlIEBE V19MQU5HX0NfcGx1c19wbHVzfQotKwkgICAge25hbWUgJHs6OnNyY2ZpbGV9fQotKwkgICAge3N0 bXRfbGlzdCAkTCBEV19GT1JNX3NlY19vZmZzZXR9Ci0rICAgICAgICB9IHsKLSsJICAgIGRlY2xh cmVfbGFiZWxzIGludF9sYWJlbCBjbGFzc19BX2xhYmVsIGNsYXNzX0JfbGFiZWwgXAotKwkgICAg ICAgICAgICAgICAgICAgQl9wdHJfbGFiZWwKLSsKLSsJICAgIGludF9sYWJlbDogRFdfVEFHX2Jh c2VfdHlwZSB7Ci0rCQl7RFdfQVRfYnl0ZV9zaXplICR7Ojpsb25nX3NpemV9IERXX0ZPUk1fdWRh dGF9Ci0rCQl7RFdfQVRfZW5jb2RpbmcgQERXX0FURV9zaWduZWR9Ci0rCQl7RFdfQVRfbmFtZSAi aW50In0KLSsJICAgIH0KLSsKLSsJICAgIGNsYXNzX0FfbGFiZWw6IERXX1RBR19jbGFzc190eXBl IHsKLSsJCXtEV19BVF9uYW1lICJBIn0KLSsJCXtEV19BVF9ieXRlX3NpemUgJHs6OnN0cnVjdF9B X3NpemV9IERXX0ZPUk1fc2RhdGF9Ci0rCSAgICB9IHsKLSsJCURXX1RBR19tZW1iZXIgewotKwkJ ICAgIHtEV19BVF9uYW1lICJhIn0KLSsJCSAgICB7RFdfQVRfdHlwZSA6JGludF9sYWJlbH0KLSsJ CSAgICB7RFdfQVRfZGF0YV9tZW1iZXJfbG9jYXRpb24gJHs6OkFfYX0gRFdfRk9STV91ZGF0YX0K LSsJCX0KLSsJCURXX1RBR19tZW1iZXIgewotKwkJICAgIHtEV19BVF9uYW1lICJ4In0KLSsJCSAg ICB7RFdfQVRfdHlwZSA6JGludF9sYWJlbH0KLSsJCSAgICB7RFdfQVRfZGF0YV9tZW1iZXJfbG9j YXRpb24gJHs6OkFfeH0gRFdfRk9STV91ZGF0YX0KLSsJCX0KLSsJICAgIH0KLSsKLSsJICAgIGNs YXNzX0JfbGFiZWw6IERXX1RBR19jbGFzc190eXBlIHsKLSsJCXtEV19BVF9uYW1lICJCIn0KLSsJ CXtEV19BVF9ieXRlX3NpemUgJHs6OnN0cnVjdF9CX3NpemV9IERXX0ZPUk1fc2RhdGF9Ci0rCSAg ICB9IHsKLSsJCSMgV2hpbGUgdGhlcmUgYXJlIGVhc2llciAvIGJldHRlciB3YXlzIHRvIHNwZWNp ZnkgYW4KLSsJCSMgb2Zmc2V0IHVzZWQgYnkgRFdfQVRfZGF0YV9tZW1iZXJfbG9jYXRpb24gdGhh biB0aGF0Ci0rCQkjIHVzZWQgYmVsb3csIHdlIG5lZWQgYSBsb2NhdGlvbiBleHByZXNzaW9uIGhl cmUgaW4KLSsJCSMgb3JkZXIgdG8gcmVwcm9kdWNlIHRoZSBidWcuICBNb3Jlb3ZlciwgdGhpcyBs b2NhdGlvbgotKwkJIyBleHByZXNzaW9uIG5lZWRzIHRvIHVzZSBvcGNvZGVzIHRoYXQgYXJlbid0 IGhhbmRsZWQKLSsJCSMgYnkgZGVjb2RlX2xvY2Rlc2MoKSBpbiBkd2FyZjIvcmVhZC5jOyBpZiB3 ZSB1c2UKLSsJCSMgb3Bjb2RlcyB0aGF0IF9hcmVfIGhhbmRsZWQgYnkgdGhhdCBmdW5jdGlvbiwg dGhlCi0rCQkjIGxvY2F0aW9uIGV4cHJlc3Npb24gd2lsbCBiZSBjb252ZXJ0ZWQgaW50byBhIHNp bXBsZQotKwkJIyBvZmZzZXQgLSB3aGljaCB3aWxsIHRoZW4gKGFnYWluKSBub3QgcmVwcm9kdWNl IHRoZQotKwkJIyBidWcuICBBdCB0aGUgdGltZSB0aGF0IHRoaXMgdGVzdCB3YXMgd3JpdHRlbiwK LSsJCSMgbmVpdGhlciBEV19PUF9waWNrIG5vciBEV19PUF9kcm9wIHdlcmUgYmVpbmcgaGFuZGxl ZAotKwkJIyBieSBkZWNvZGVfbG9jZGVzYygpOyB0aGlzIGlzIHdoeSB0aG9zZSBvcGNvZGVzIHdl cmUKLSsJCSMgY2hvc2VuLgotKwkJRFdfVEFHX2luaGVyaXRhbmNlIHsKLSsJCSAgICB7RFdfQVRf dHlwZSA6JGNsYXNzX0FfbGFiZWx9Ci0rCQkgICAge0RXX0FUX2RhdGFfbWVtYmVyX2xvY2F0aW9u IHsKLSsJCQlEV19PUF9jb25zdHUgJHs6OkJfYX0KLSsJCQlEV19PUF9wbHVzCi0rCQkJRFdfT1Bf cGljayAwCi0rCQkJRFdfT1BfZHJvcH0gU1BFQ0lBTF9leHByfQotKwkJICAgIHtEV19BVF9hY2Nl c3NpYmlsaXR5IDEgRFdfRk9STV9kYXRhMX0KLSsJCX0KLSsJCURXX1RBR19tZW1iZXIgewotKwkJ ICAgIHtEV19BVF9uYW1lICJiIn0KLSsJCSAgICB7RFdfQVRfdHlwZSA6JGludF9sYWJlbH0KLSsJ CSAgICB7RFdfQVRfZGF0YV9tZW1iZXJfbG9jYXRpb24gJHs6OkJfYn0gRFdfRk9STV91ZGF0YX0K LSsJCX0KLSsJCURXX1RBR19tZW1iZXIgewotKwkJICAgIHtEV19BVF9uYW1lICJ4MiJ9Ci0rCQkg ICAge0RXX0FUX3R5cGUgOiRpbnRfbGFiZWx9Ci0rCQkgICAge0RXX0FUX2RhdGFfbWVtYmVyX2xv Y2F0aW9uICR7OjpCX3gyfSBEV19GT1JNX3VkYXRhfQotKwkJfQotKwkgICAgfQotKwotKwkgICAg Ql9wdHJfbGFiZWw6IERXX1RBR19wb2ludGVyX3R5cGUgewotKwkJe0RXX0FUX3R5cGUgOiRjbGFz c19CX2xhYmVsfQotKwkJe0RXX0FUX2J5dGVfc2l6ZSAkezo6YWRkcl9zaXplfSBEV19GT1JNX3Nk YXRhfQotKwkgICAgfQotKwotKwkgICAgRFdfVEFHX3ZhcmlhYmxlIHsKLSsJCXtEV19BVF9uYW1l ICJnX0EifQotKwkJe0RXX0FUX3R5cGUgOiRjbGFzc19BX2xhYmVsfQotKwkJe0RXX0FUX2V4dGVy bmFsIDEgZmxhZ30KLSsJCXtEV19BVF9sb2NhdGlvbiB7RFdfT1BfYWRkciBbZ2RiX3RhcmdldF9z eW1ib2wgImdfQSJdfSBcCi0rCQkgICAgICAgICAgICAgICAgIFNQRUNJQUxfZXhwcn0KLSsJICAg IH0KLSsKLSsJICAgIERXX1RBR192YXJpYWJsZSB7Ci0rCQl7RFdfQVRfbmFtZSAiZ19CIn0KLSsJ CXtEV19BVF90eXBlIDokY2xhc3NfQl9sYWJlbH0KLSsJCXtEV19BVF9leHRlcm5hbCAxIGZsYWd9 Ci0rCQl7RFdfQVRfbG9jYXRpb24ge0RXX09QX2FkZHIgW2dkYl90YXJnZXRfc3ltYm9sICJnX0Ii XX0gXAotKwkJICAgICAgICAgICAgICAgICBTUEVDSUFMX2V4cHJ9Ci0rCSAgICB9Ci0rCi0rCSAg ICAjIFdlIGNhbid0IHVzZSBNQUNST19BVCBmb3IgdGhlIGRlZmluaXRpb25zIG9mIGZvbyBhbmQg YmFyCi0rCSAgICAjIGJlY2F1c2UgaXQgZG9lc24ndCBwcm92aWRlIGEgd2F5IHRvIHBhc3MgdGhl IGFwcHJvcHJpYXRlCi0rCSAgICAjIGZsYWdzLiAgVGhlcmVmb3JlLCB3ZSBsaXN0IHRoZSBuYW1l LCBsb3dfcGMsIGFuZCBoaWdoX3BjCi0rCSAgICAjIGV4cGxpY2l0bHkuCi0rCSAgICBEV19UQUdf c3VicHJvZ3JhbSB7Ci0rCQl7RFdfQVRfbmFtZSBmb299Ci0rCQl7RFdfQVRfbG93X3BjICRmb29f c3RhcnQgRFdfRk9STV9hZGRyfQotKwkJe0RXX0FUX2hpZ2hfcGMgJGZvb19lbmQgRFdfRk9STV9h ZGRyfQotKwkJe0RXX0FUX3R5cGUgOiR7Ql9wdHJfbGFiZWx9fQotKwkJe0RXX0FUX2V4dGVybmFs IDEgZmxhZ30KLSsJICAgIH0KLSsKLSsJICAgIERXX1RBR19zdWJwcm9ncmFtIHsKLSsJCXtEV19B VF9uYW1lIGJhcn0KLSsJCXtEV19BVF9sb3dfcGMgJGJhcl9zdGFydCBEV19GT1JNX2FkZHJ9Ci0r CQl7RFdfQVRfaGlnaF9wYyAkYmFyX2VuZCBEV19GT1JNX2FkZHJ9Ci0rCQl7RFdfQVRfdHlwZSA6 JHtCX3B0cl9sYWJlbH19Ci0rCQl7RFdfQVRfZXh0ZXJuYWwgMSBmbGFnfQotKwkgICAgfSB7Ci0r CQlEV19UQUdfZm9ybWFsX3BhcmFtZXRlciB7Ci0rCQkgICAge0RXX0FUX25hbWUgdn0KLSsJCSAg ICB7RFdfQVRfdHlwZSA6JHtCX3B0cl9sYWJlbH19Ci0rCQl9Ci0rCSAgICB9Ci0rCX0KLSsgICAg fQotKwotKyAgICBsaW5lcyB7dmVyc2lvbiAyfSBMIHsKLSsJaW5jbHVkZV9kaXIgIiR7OjpzcmNk aXJ9LyR7OjpzdWJkaXJ9IgotKwlmaWxlX25hbWUgIiR7OjpzcmNmaWxlfSIgMQotKwotKwkjIEdl bmVyYXRlIGEgbGluZSB0YWJsZSBwcm9ncmFtLgotKwlwcm9ncmFtIHsKLSsJICAgIHtEV19MTkVf c2V0X2FkZHJlc3MgJGZvb19zdGFydH0KLSsJICAgIHtsaW5lIFtnZGJfZ2V0X2xpbmVfbnVtYmVy ICJmb28gcHJvbG9ndWUiXX0KLSsJICAgIHtEV19MTlNfY29weX0KLSsJICAgIHtEV19MTkVfc2V0 X2FkZHJlc3MgZm9vX2xhYmVsfQotKwkgICAge2xpbmUgW2dkYl9nZXRfbGluZV9udW1iZXIgImZv byByZXR1cm4iXX0KLSsJICAgIHtEV19MTlNfY29weX0KLSsJICAgIHtsaW5lIFtnZGJfZ2V0X2xp bmVfbnVtYmVyICJmb28gZW5kIl19Ci0rCSAgICB7RFdfTE5TX2NvcHl9Ci0rCSAgICB7RFdfTE5F X3NldF9hZGRyZXNzICRmb29fZW5kfQotKwkgICAge0RXX0xOU19hZHZhbmNlX2xpbmUgMX0KLSsJ ICAgIHtEV19MTlNfY29weX0KLSsJICAgIHtEV19MTkVfZW5kX3NlcXVlbmNlfQotKwotKwkgICAg e0RXX0xORV9zZXRfYWRkcmVzcyAkYmFyX3N0YXJ0fQotKwkgICAge2xpbmUgW2dkYl9nZXRfbGlu ZV9udW1iZXIgImJhciBwcm9sb2d1ZSJdfQotKwkgICAge0RXX0xOU19jb3B5fQotKwkgICAge0RX X0xORV9zZXRfYWRkcmVzcyBiYXJfbGFiZWx9Ci0rCSAgICB7bGluZSBbZ2RiX2dldF9saW5lX251 bWJlciAiYmFyIHJldHVybiJdfQotKwkgICAge0RXX0xOU19jb3B5fQotKwkgICAge2xpbmUgW2dk Yl9nZXRfbGluZV9udW1iZXIgImJhciBlbmQiXX0KLSsJICAgIHtEV19MTlNfY29weX0KLSsJICAg IHtEV19MTkVfc2V0X2FkZHJlc3MgJGJhcl9lbmR9Ci0rCSAgICB7RFdfTE5TX2FkdmFuY2VfbGlu ZSAxfQotKwkgICAge0RXX0xOU19jb3B5fQotKwkgICAge0RXX0xORV9lbmRfc2VxdWVuY2V9Ci0r CX0KLSsgICAgfQotK30KLSsKLSsjIENvbXBpbGUgdGhlIHNoYXJlZCBvYmplY3QgYWdhaW4sIGJ1 dCB0aGlzIHRpbWUgaW5jbHVkZSAvIHVzZSB0aGUKLSsjIERXQVJGIGluZm8gdGhhdCB3ZSd2ZSBj cmVhdGVkIGFib3ZlLiAgTm90ZSB0aGF0IChhZ2FpbikKLSsjIC1ESVNfU0hBUkVETElCIGlzIHVz ZWQgdG8gcHJldmVudCBpbmNsdXNpb24gb2YgbWFpbigpIGluIHRoZSBzaGFyZWQKLSsjIG9iamVj dC4gIEFsc28gbm90ZSB0aGUgdXNlIG9mIHRoZSAibm9kZWJ1ZyIgb3B0aW9uLiAgQW55IGRlYnVn Z2luZwotKyMgaW5mb3JtYXRpb24gdGhhdCB3ZSBuZWVkIHdpbGwgYmUgcHJvdmlkZWQgYnkgdGhl IERXQVJGIGluZm8gY3JlYXRlZAotKyMgYWJvdmUuCi0raWYge1tnZGJfY29tcGlsZV9zaGxpYiBb bGlzdCAkbGlic3JjICRhc21fZmlsZV0gJGxpYl9zbyBcCi0rICAgICAgICAgICAgICAgICAgICAg ICB7YWRkaXRpb25hbF9mbGFncz0tRElTX1NIQVJFRExJQiBub2RlYnVnfV0gIT0gIiJ9IHsKLSsg ICAgdW50ZXN0ZWQgImZhaWxlZCB0byBjb21waWxlIHNoYXJlZCBsaWJyYXJ5IgotKyAgICByZXR1 cm4KLSt9Ci0rCi0rIyBDb21waWxlIHRoZSBtYWluIHByb2dyYW0gZm9yIHVzZSB3aXRoIHRoZSBz aGFyZWQgb2JqZWN0LgotK2lmIFtwcmVwYXJlX2Zvcl90ZXN0aW5nICJmYWlsZWQgdG8gcHJlcGFy ZSIgJHt0ZXN0ZmlsZX0gXAotKyAgICAgICAgICAgICAgICAgICAgICAgICR7OjpzcmNmaWxlMn0g W2xpc3QgZGVidWcgc2hsaWI9JGxpYl9zb11dIHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotKyMg RG8gd2hhdGV2ZXIgaXMgbmVjZXNzYXJ5IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBzaGFyZWQgbGli cmFyeSBpcwotKyMgbG9hZGVkIGZvciByZW1vdGUgdGFyZ2V0cy4KLStnZGJfbG9hZF9zaGxpYiAk e2xpYl9zb30KLSsKLStpZiAhW3J1bnRvX21haW5dIHRoZW4gewotKyAgICBmYWlsICJjYW4ndCBy dW4gdG8gbWFpbiIKLSsgICAgcmV0dXJuCi0rfQotKwotKyMgU3RlcCBpbnRvIGZvbyBzbyB0aGF0 IHdlIGNhbiBmaW5pc2ggb3V0IG9mIGl0LgotK2dkYl90ZXN0ICJzdGVwIiAiZm9vIC4uIGF0IC4q IGZvbyBlbmQuKiIgInN0ZXAgaW50byBmb28iCi0rCi0rIyBGaW5pc2hpbmcgb3V0IG9mIGZvbyB3 aWxsIGNyZWF0ZSBhIHZhbHVlIHRoYXQgd2lsbCBsYXRlciBuZWVkIHRvCi0rIyBiZSBwcmVzZXJ2 ZWQgd2hlbiByZXN0YXJ0aW5nIHRoZSBwcm9ncmFtLgotK2dkYl90ZXN0ICJmaW5pc2giICI9IFxc KGNsYXNzIEIgXFwqXFwpICR7OjpoZXh9IC4qIiAiZmluaXNoIG91dCBvZiBmb28iCi0rCi0rIyBE ZXJlZmVyZW5jaW5nIGFuZCBwcmludGluZyB0aGUgcmV0dXJuIHZhbHVlIGlzbid0IG5lY2Vzc2Fy eQotKyMgZm9yIHJlcHJvZHVjaW5nIHRoZSBidWcsIGJ1dCB3ZSBzaG91bGQgbWFrZSBzdXJlIHRo YXQgdGhlCi0rIyByZXR1cm4gdmFsdWUgaXMgd2hhdCB3ZSBleHBlY3QgaXQgdG8gYmUuCi0rZ2Ri X3Rlc3QgInAgKiQiIHsgPSB7PEE+ID0ge2EgPSA4LCB4ID0gOX0sIGIgPSAxMCwgeDIgPSAxMX19 IFwKLSsgICAgICAgICAiZGVyZWZlcmVuY2UgcmV0dXJuIHZhbHVlIgotKwotKyMgVGhlIG9yaWdp bmFsIFBSMjgwMzAgcmVwcm9kdWNlciBzdGVwcGVkIGJhY2sgaW50byB0aGUgc2hhcmVkIG9iamVj dCwKLSsjIHNvIHdlJ2xsIGRvIHRoZSBzYW1lIGhlcmU6Ci0rZ2RiX3Rlc3QgInN0ZXAiICJiYXIg XFwoLioiICJzdGVwIGludG8gYmFyIgotKwotKyMgV2UgZG9uJ3Qgd2FudCBhIGNsZWFuIHJlc3Rh cnQgaGVyZSBzaW5jZSB0aGF0IHdpbGwgYmUgdG9vIGNsZWFuLgotKyMgVGhlIG9yaWdpbmFsIHJl cHJvZHVjZXIgZm9yIFBSMjgwMzAgc2V0IGEgYnJlYWtwb2ludCBpbiB0aGUgc2hhcmVkCi0rIyBs aWJyYXJ5IGFuZCB0aGVuIHJlc3RhcnRlZCB2aWEgInJ1biIuICBUaGUgY29tbWFuZCBiZWxvdyBk b2VzIHJvdWdobHkKLSsjIHRoZSBzYW1lIHRoaW5nLiAgSXQncyBhdCB0aGlzIHN0ZXAgdGhhdCBh biBpbnRlcm5hbCBlcnJvciB3b3VsZAotKyMgb2NjdXIgZm9yIFBSMjgwMzAuICBUaGUgIm1lc3Nh Z2UiIGFyZ3VtZW50IHRlbGxzIHJ1bnRvIHRvIHR1cm4gb24KLSsjIHRoZSBwcmludGluZyBvZiBQ QVNTZXMgd2hpbGUgcnVudG8gaXMgZG9pbmcgaXRzIGpvYi4KLStydW50byAiYmFyIiBtZXNzYWdl Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2xvY2V4cHItZGF0YS1tZW1i ZXItbG9jYXRpb24uaCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9sb2NleHByLWRhdGEtbWVt YmVyLWxvY2F0aW9uLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysg Yi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvbG9jZXhwci1kYXRhLW1lbWJlci1sb2NhdGlvbi5o Ci1AQCAtMCwwICsxLDMwIEBACi0rLyogQ29weXJpZ2h0IChDKSAyMDIxIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KLSsKLSsg ICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0r ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu Ci0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rdHlwZWRlZiBzdHJ1 Y3QgQSB7Ci0rICAgIGxvbmcgYTsKLSsgICAgbG9uZyB4OwotK30gQTsKLSsKLSt0eXBlZGVmIHN0 cnVjdCBCIHsKLSsgICAgQSBhOwotKyAgICBsb25nIGI7Ci0rICAgIGxvbmcgeDI7Ci0rfSBCOwot KwotK2V4dGVybiBCICpmb28gKCk7Ci0rZXh0ZXJuIEIgKmJhciAoQiAqdik7CgpkaWZmIC0tZ2l0 IGEvZ2RiLnNwZWMgYi9nZGIuc3BlYwppbmRleCAzNmViNDA5Li5lMTVlNDZjIDEwMDY0NAotLS0g YS9nZGIuc3BlYworKysgYi9nZGIuc3BlYwpAQCAtMjksMTUgKzI5LDE1IEBACiBOYW1lOiAlez9z Y2xfcHJlZml4fWdkYgogCiAjIEZyZWV6ZSBpdCB3aGVuIEdEQiBnZXRzIGJyYW5jaGVkCi0lZ2xv YmFsIHNuYXBzcmMgICAgMjAyMDAyMDgKKyVnbG9iYWwgc25hcHNyYyAgICAyMDIyMDUwMQogIyBT ZWUgdGltZXN0YW1wIG9mIHNvdXJjZSBnbnVsaWIgaW5zdGFsbGVkIGludG8gZ251bGliLyAuCiAl Z2xvYmFsIHNuYXBnbnVsaWIgMjAyMTAxMDUKICVnbG9iYWwgdGFybmFtZSBnZGItJXt2ZXJzaW9u fQotVmVyc2lvbjogMTEuMgorVmVyc2lvbjogMTIuMQogCiAjIFRoZSByZWxlYXNlIGFsd2F5cyBj b250YWlucyBhIGxlYWRpbmcgcmVzZXJ2ZWQgbnVtYmVyLCBzdGFydCBpdCBhdCAxLgogIyBgdXBz dHJlYW0nIGlzIG5vdCBhIHBhcnQgb2YgYG5hbWUnIHRvIHN0YXkgZnVsbHkgcnBtIGRlcGVuZGVu Y2llcyBjb21wYXRpYmxlIGZvciB0aGUgdGVzdGluZy4KLVJlbGVhc2U6IDMlez9kaXN0fQorUmVs ZWFzZTogMSV7P2Rpc3R9CiAKIExpY2Vuc2U6IEdQTHYzKyBhbmQgR1BMdjMrIHdpdGggZXhjZXB0 aW9ucyBhbmQgR1BMdjIrIGFuZCBHUEx2Misgd2l0aCBleGNlcHRpb25zIGFuZCBHUEwrIGFuZCBM R1BMdjIrIGFuZCBMR1BMdjMrIGFuZCBCU0QgYW5kIFB1YmxpYyBEb21haW4gYW5kIEdGREwKICMg RG8gbm90IHByb3ZpZGUgVVJMIGZvciBzbmFwc2hvdHMgYXMgdGhlIGZpbGUgbGFzdHMgdGhlcmUg b25seSBmb3IgMiBkYXlzLgpAQCAtOTM0LDcgKzkzNCw3IEBAIHRvdWNoIC1yICV7U09VUkNFNH0g JFJQTV9CVUlMRF9ST09UJXtfc3lzY29uZmRpcn0vZ2RiaW5pdAogZm9yIGkgaW4gYGZpbmQgJFJQ TV9CVUlMRF9ST09UJXtfZGF0YWRpcn0vZ2RiL3B5dGhvbi9nZGIgLW5hbWUgIioucHkiYAogZG8K ICAgIyBGaWxlcyBjb3VsZCBiZSBhbHNvIHBhdGNoZWQgZ2V0dGluZyB0aGUgY3VycmVudCB0aW1l LgotICB0b3VjaCAtciAkUlBNX0JVSUxEX0RJUi8le2dkYl9zcmN9L2dkYi9DaGFuZ2VMb2cgJGkK KyAgdG91Y2ggLXIgJFJQTV9CVUlMRF9ESVIvJXtnZGJfc3JjfS9nZGIvdmVyc2lvbi5pbiAkaQog ZG9uZQogCiAlaWYgMCV7P19lbmFibGVfZGVidWdfcGFja2FnZXM6MX0gJiYgMCV7IT9fd2l0aG91 dF9weXRob246MX0KQEAgLTk4MCw3ICs5ODAsNyBAQCBjcCAtYSAkUlBNX0JVSUxEX0RJUi8le2dk Yl9zcmN9LyV7bGlic3RkY3h4cHl0aG9ufS9saWJzdGRjeHgJXAogJWVuZGlmICMgMCV7P3JoZWw6 MX0gJiYgMCV7P3JoZWx9IDw9IDcKIGZvciBpIGluIGBmaW5kICRSUE1fQlVJTERfUk9PVCV7X2Rh dGFkaXJ9L2dkYiAtbmFtZSAiKi5weSJgOyBkbwogICAjIEZpbGVzIGFyZSBpbnN0YWxsZWQgYnkg aW5zdGFsbCgxKSBub3QgcHJlc2VydmluZyB0aGUgdGltZXN0YW1wcy4KLSAgdG91Y2ggLXIgJFJQ TV9CVUlMRF9ESVIvJXtnZGJfc3JjfS9nZGIvQ2hhbmdlTG9nICRpCisgIHRvdWNoIC1yICRSUE1f QlVJTERfRElSLyV7Z2RiX3NyY30vZ2RiL3ZlcnNpb24uaW4gJGkKIGRvbmUKICVlbmRpZiAjIDAl eyE/X3dpdGhvdXRfcHl0aG9uOjF9CiAKQEAgLTEwMjYsNiArMTAyNiw3IEBAIGxuIC1zIGdzdGFj ayAkUlBNX0JVSUxEX1JPT1Qle19iaW5kaXJ9L3BzdGFjawogIyBEb2N1bWVudGF0aW9uIG9ubHkg Zm9yIGRldmVsb3BtZW50Lgogcm0gLWYgJFJQTV9CVUlMRF9ST09UJXtfaW5mb2Rpcn0vZ2RiaW50 Kgogcm0gLWYgJFJQTV9CVUlMRF9ST09UJXtfaW5mb2Rpcn0vc3RhYnMqCitybSAtZiAkUlBNX0JV SUxEX1JPT1Qle19pbmZvZGlyfS9jdGYtc3BlYyoKIAogIyBEZWxldGUgdGhpcyB0b28gYmVjYXVz ZSB0aGUgZGlyIGZpbGUgd2lsbCBiZSB1cGRhdGVkIGF0IHJwbSBpbnN0YWxsIHRpbWUuCiAjIFdl IGRvbid0IHdhbnQgYSBnZGIgc3BlY2lmaWMgb25lIG92ZXJ3cml0aW5nIHRoZSBzeXN0ZW0gd2lk ZSBvbmUuCkBAIC0xMTQ5LDYgKzExNTAsMTIgQEAgZmkKICVlbmRpZgogCiAlY2hhbmdlbG9nCisq IFRodSBNYXkgMTIgMjAyMiBLZXZpbiBCdWV0dG5lciAtIDEyLjEtMQorLSBSZWJhc2UgdG8gRlNG IEdEQiAxMi4xLgorLSBVcGRhdGUgZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS5wYXRjaC4KKy0gVXBk YXRlIGdkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLnBhdGNoLgorLSBEcm9wcGVkIGJhY2twb3J0 ZWQgcGF0Y2hlcyBmcm9tIEdEQiAxMS4xIGFuZCAxMS4yLgorCiAqIFdlZCBNYXIgMzAgMjAyMiBL ZXZpbiBCdWV0dG5lciAtIDExLjItMwogLSBCYWNrcG9ydCB1cHN0cmVhbSBwYXRjaCB3aGljaCBy ZW1vdmVzIHNpemVzIGZyb20gZGVidWdpbmZvZCBkb3dubG9hZAogICBtZXNzYWdlcyB3aGVuIHRo ZSBzaXplIGlzIG5vdCBhdmFpbGFibGUgKFJIQlogMjA2ODI4MCwgQWFyb24gTWVyZXkpLgoKZGlm ZiAtLWdpdCBhL3NvdXJjZXMgYi9zb3VyY2VzCmluZGV4IDI0MDhlMjkuLmEwN2RkNWUgMTAwNjQ0 Ci0tLSBhL3NvdXJjZXMKKysrIGIvc291cmNlcwpAQCAtMSwzICsxLDMgQEAKIFNIQTUxMiAoZ2Ri LWxpYnN0ZGMrKy12My1weXRob24tOC4xLjEtMjAxODA2MjYudGFyLnh6KSA9IGE4YjFjNTRkZDM0 OGNmZWIzN2RhNzNmOTY4NzQyODk2YmUzZGQxM2E0MjE1ZjhkODUxOTg3MGMyYWJlYTkxNWY1MTc2 YzNmYTY5ODlkZGQxMGYyMDAyMGExNmYwZmFiMjBjYmFlNjhlZThkNThhODIyMzRkODc3ODAyMzUy MGY4CiBTSEE1MTIgKHYyLjAuNS50YXIuZ3opID0gMmU3YWMyYWVkZTg0NjcxYjE1NTk3ZDljNTZk YmUwNzdhODEzNTdiYmY0NGI2Njg0ODAyNTkyMjQ2ZmI3NzI5YjRhNTc0MzIzOGRkZjAyZjZlYTE0 M2I0ZDI5ODcyZjU4MTQwODEzNWY5YzFlYTFjY2M5OWRhYjkwNTkxNmQ5OGQKLVNIQTUxMiAoZ2Ri LTExLjIudGFyLnh6KSA9IDA3ZTkwMjY0MjM0MzgwNDliMTFmNGY3ODRkNTc0MDFlY2U0ZTk0MDU3 MGY2MTNiZDY5NThiMzcxNGZlN2ZiYzJjMDQ4NDcwYmNjZTNlN2Q3ZDlmOTMzMzFjZGYzODgxZDMw ZGNjOTY0Y2IxMTNhMDcxMTQzYTAyYjI4ZTViMTI3CitTSEE1MTIgKGdkYi0xMi4xLnRhci54eikg PSA0MjU1NjhkMmU4NDY3MjE3N2QwZmI4N2IxYWQ3ZGFhZmRkZTA5NzY0OGQ2MDVlMzBjZjA2NTY5 NzBmNjZhZGM2YTgyY2EyZDgzMzc1ZWE0YmU1ODNlOTY4M2EzNDBlNWJmZGY1ODE5NjY4ZGRmNjY3 MjgyMDAxNDFhZTUwZmYyZAo=