From: Sasha Levin Subject: [PATCH] mm: kill kmemcheck Date: Wed, 11 Mar 2015 07:43:59 -0400 Message-ID: <1426074547-21888-1-git-send-email-sasha.levin@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: Vladimir Davydov , Geert Uytterhoeven , "open list:SUPERH" , Catalin Marinas , Will Deacon , Jianyu Zhan , Paul Mackerras , Pavel Machek , Miklos Szeredi , Christoph Lameter , Marek Szyprowski , "open list:GENERIC INCLUDE/A..." , Andi Kleen , Russell King , Jingoo Han , James Morris , Chris Bainbridge , Antti Palosaari , Mel Gorman , Ritesh Harjani , Shaohua Li , Alexander Duyck , Wang Nan List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: linuxppc-dev-bounces+glppe-linuxppc-embedded-2=m.gmane.org@lists.ozlabs.org Sender: "Linuxppc-dev" List-Id: linux-crypto.vger.kernel.org QXMgZGlzY3Vzc2VkIG9uIExTRi9NTSwga2lsbCBrbWVtY2hlY2suCgpLQVNhbiBpcyBhIHJlcGxh Y2VtZW50IHRoYXQgaXMgYWJsZSB0byB3b3JrIHdpdGhvdXQgdGhlIGxpbWl0YXRpb24gb2YKa21l bWNoZWNrIChzaW5nbGUgQ1BVLCBzbG93KS4gS0FTYW4gaXMgYWxyZWFkeSB1cHN0cmVhbS4KCldl IGFyZSBhbHNvIG5vdCBhd2FyZSBvZiBhbnkgdXNlcnMgb2Yga21lbWNoZWNrIChvciB1c2VycyB3 aG8gZG9uJ3QgY29uc2lkZXIKS0FTYW4gYXMgYSBzdWl0YWJsZSByZXBsYWNlbWVudCkuCgpJJ3Zl IGJ1aWxkIHRlc3RlZCBpdCB1c2luZyBhbGxbeWVzLG5vLG1vZF1jb25maWcgYW5kIGZ1enplZCBh IGJpdCB3aXRoIHRoaXMKcGF0Y2ggYXBwbGllZCwgZGlkbid0IG5vdGljZSBhbnkgYmFkIGJlaGF2 aW91ci4KClNpZ25lZC1vZmYtYnk6IFNhc2hhIExldmluIDxzYXNoYS5sZXZpbkBvcmFjbGUuY29t PgotLS0KIERvY3VtZW50YXRpb24vMDAtSU5ERVggICAgICAgICAgICAgICAgICAgICAgIHwgICAg MiAtCiBEb2N1bWVudGF0aW9uL2thc2FuLnR4dCAgICAgICAgICAgICAgICAgICAgICB8ICAgIDcg Ky0KIERvY3VtZW50YXRpb24va2VybmVsLXBhcmFtZXRlcnMudHh0ICAgICAgICAgIHwgICAgNyAt CiBEb2N1bWVudGF0aW9uL2ttZW1jaGVjay50eHQgICAgICAgICAgICAgICAgICB8ICA3NTQgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIE1BSU5UQUlORVJTICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAxMCAtCiBhcmNoL2FybS9pbmNsdWRlL2FzbS9kbWEtaW9tbXUuaCAg ICAgICAgICAgICB8ICAgIDEgLQogYXJjaC9hcm0vaW5jbHVkZS9hc20vcGdhbGxvYy5oICAgICAg ICAgICAgICAgfCAgICAyICstCiBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BnYWxsb2MuaCAgICAg ICAgICAgICB8ICAgIDIgKy0KIGFyY2gvb3BlbnJpc2MvaW5jbHVkZS9hc20vZG1hLW1hcHBpbmcu aCAgICAgIHwgICAgMSAtCiBhcmNoL3Bvd2VycGMvbW0vcGd0YWJsZV82NC5jICAgICAgICAgICAg ICAgICB8ICAgIDMgKy0KIGFyY2gvc2gva2VybmVsL2R3YXJmLmMgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgNCArLQogYXJjaC9zaC9rZXJuZWwvcHJvY2Vzcy5jICAgICAgICAgICAgICAgICAg ICAgfCAgICAyICstCiBhcmNoL3NwYXJjL21tL2luaXRfNjQuYyAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDYgKy0KIGFyY2gvdW5pY29yZTMyL2luY2x1ZGUvYXNtL3BnYWxsb2MuaCAgICAgICAg IHwgICAgMiArLQogYXJjaC94ODYvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgICAzICstCiBhcmNoL3g4Ni9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgIDUgLQogYXJjaC94ODYvaW5jbHVkZS9hc20vZG1hLW1hcHBpbmcuaCAgICAgICAgICAgfCAg ICAxIC0KIGFyY2gveDg2L2luY2x1ZGUvYXNtL2ttZW1jaGVjay5oICAgICAgICAgICAgIHwgICA0 MiAtLQogYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZS5oICAgICAgICAgICAgICAgfCAgICA1 IC0KIGFyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGVfdHlwZXMuaCAgICAgICAgIHwgICAxMyAt CiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9zdHJpbmdfMzIuaCAgICAgICAgICAgICB8ICAgIDkgLQog YXJjaC94ODYvaW5jbHVkZS9hc20vc3RyaW5nXzY0LmggICAgICAgICAgICAgfCAgICA4IC0KIGFy Y2gveDg2L2luY2x1ZGUvYXNtL3hvci5oICAgICAgICAgICAgICAgICAgIHwgICAgNSArLQogYXJj aC94ODYva2VybmVsL2NwdS9pbnRlbC5jICAgICAgICAgICAgICAgICAgfCAgIDE1IC0KIGFyY2gv eDg2L2tlcm5lbC9lc3BmaXhfNjQuYyAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogYXJjaC94 ODYva2VybmVsL3Byb2Nlc3MuYyAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBhcmNoL3g4 Ni9rZXJuZWwvdHJhcHMuYyAgICAgICAgICAgICAgICAgICAgICB8ICAgIDUgLQogYXJjaC94ODYv bW0vTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyIC0KIGFyY2gveDg2L21t L2ZhdWx0LmMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMCAtCiBhcmNoL3g4Ni9tbS9p bml0LmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KIGFyY2gveDg2L21tL2lu aXRfNjQuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogYXJjaC94ODYvbW0va21l bWNoZWNrL01ha2VmaWxlICAgICAgICAgICAgICAgfCAgICAxIC0KIGFyY2gveDg2L21tL2ttZW1j aGVjay9lcnJvci5jICAgICAgICAgICAgICAgIHwgIDIyNyAtLS0tLS0tLQogYXJjaC94ODYvbW0v a21lbWNoZWNrL2Vycm9yLmggICAgICAgICAgICAgICAgfCAgIDE1IC0KIGFyY2gveDg2L21tL2tt ZW1jaGVjay9rbWVtY2hlY2suYyAgICAgICAgICAgIHwgIDY1OSAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiBhcmNoL3g4Ni9tbS9rbWVtY2hlY2svb3Bjb2RlLmMgICAgICAgICAgICAgICB8ICAxMDYg LS0tLQogYXJjaC94ODYvbW0va21lbWNoZWNrL29wY29kZS5oICAgICAgICAgICAgICAgfCAgICA5 IC0KIGFyY2gveDg2L21tL2ttZW1jaGVjay9wdGUuYyAgICAgICAgICAgICAgICAgIHwgICAyMiAt CiBhcmNoL3g4Ni9tbS9rbWVtY2hlY2svcHRlLmggICAgICAgICAgICAgICAgICB8ICAgMTAgLQog YXJjaC94ODYvbW0va21lbWNoZWNrL3NlbGZ0ZXN0LmMgICAgICAgICAgICAgfCAgIDcwIC0tLQog YXJjaC94ODYvbW0va21lbWNoZWNrL3NlbGZ0ZXN0LmggICAgICAgICAgICAgfCAgICA2IC0KIGFy Y2gveDg2L21tL2ttZW1jaGVjay9zaGFkb3cuYyAgICAgICAgICAgICAgIHwgIDE3MyAtLS0tLS0K IGFyY2gveDg2L21tL2ttZW1jaGVjay9zaGFkb3cuaCAgICAgICAgICAgICAgIHwgICAxOCAtCiBh cmNoL3g4Ni9tbS9wYWdlYXR0ci5jICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDggKy0KIGFy Y2gveDg2L21tL3BndGFibGUuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogY3J5 cHRvL3hvci5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA3ICstCiBkcml2 ZXJzL2NoYXIvcmFuZG9tLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgLQogZHJpdmVy cy9taXNjL2MycG9ydC9jb3JlLmMgICAgICAgICAgICAgICAgICAgfCAgICAyIC0KIGZzL2RjYWNo ZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiAtCiBpbmNsdWRlL2Fz bS1nZW5lcmljL2RtYS1tYXBwaW5nLWNvbW1vbi5oICAgICB8ICAgIDggKy0KIGluY2x1ZGUvbGlu dXgvYzJwb3J0LmggICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCAtCiBpbmNsdWRlL2xpbnV4 L2dmcC5oICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDggLQogaW5jbHVkZS9saW51eC9p bnRlcnJ1cHQuaCAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIGluY2x1ZGUvbGludXgva21l bWNoZWNrLmggICAgICAgICAgICAgICAgICAgIHwgIDE3MSAtLS0tLS0KIGluY2x1ZGUvbGludXgv bW1fdHlwZXMuaCAgICAgICAgICAgICAgICAgICAgIHwgICAgOCAtCiBpbmNsdWRlL2xpbnV4L25l dC5oICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgLQogaW5jbHVkZS9saW51eC9yaW5n X2J1ZmZlci5oICAgICAgICAgICAgICAgICAgfCAgICAzIC0KIGluY2x1ZGUvbGludXgvc2tidWZm LmggICAgICAgICAgICAgICAgICAgICAgIHwgICAgMyAtCiBpbmNsdWRlL2xpbnV4L3NsYWIuaCAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDYgLQogaW5jbHVkZS9saW51eC90aHJlYWRfaW5m by5oICAgICAgICAgICAgICAgICAgfCAgICA0ICstCiBpbmNsdWRlL25ldC9pbmV0X3NvY2suaCAg ICAgICAgICAgICAgICAgICAgICB8ICAgIDcgKy0KIGluY2x1ZGUvbmV0L2luZXRfdGltZXdhaXRf c29jay5oICAgICAgICAgICAgIHwgICAgMyAtCiBpbmNsdWRlL25ldC9zb2NrLmggICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgIDIgLQogaW5jbHVkZS90cmFjZS9ldmVudHMvZ2ZwZmxhZ3Mu aCAgICAgICAgICAgICAgfCAgICAxIC0KIGluaXQvZG9fbW91bnRzLmMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgMyArLQogaW5pdC9tYWluLmMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAxIC0KIGtlcm5lbC9mb3JrLmMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAxNCArLQoga2VybmVsL2xvY2tpbmcvbG9ja2RlcC5jICAgICAgICAgICAg ICAgICAgICAgfCAgICAzIC0KIGtlcm5lbC9zaWduYWwuYyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgMyArLQoga2VybmVsL3N5c2N0bC5jICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgIDEwIC0KIGtlcm5lbC90cmFjZS9yaW5nX2J1ZmZlci5jICAgICAgICAgICAgICAg ICAgIHwgICAgMyAtCiBsaWIvS2NvbmZpZy5kZWJ1ZyAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDYgKy0KIGxpYi9LY29uZmlnLmttZW1jaGVjayAgICAgICAgICAgICAgICAgICAgICAg IHwgICA5NCAtLS0tCiBtbS9LY29uZmlnLmRlYnVnICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDEgLQogbW0vTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgICAxIC0KIG1tL2ttZW1jaGVjay5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg IDEyMyAtLS0tLQogbW0va21lbWxlYWsuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgICA5IC0KIG1tL3BhZ2VfYWxsb2MuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAxNCAtCiBtbS9zbGFiLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg MzAgKy0KIG1tL3NsYWIuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg NCArLQogbW0vc2xhYl9jb21tb24uYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAy ICstCiBtbS9zbHViLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjkg Ky0KIG5ldC9jb3JlL3NrYnVmZi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNSAt CiBuZXQvY29yZS9zb2NrLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgLQog bmV0L2lwdjQvaW5ldF90aW1ld2FpdF9zb2NrLmMgICAgICAgICAgICAgICAgfCAgICAzIC0KIG5l dC9zb2NrZXQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSAtCiBzY3Jp cHRzL2tlcm5lbC1kb2MgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgLQogdG9vbHMv bGliL2xvY2tkZXAvdWluY2x1ZGUvbGludXgva21lbWNoZWNrLmggfCAgICA4IC0KIDg4IGZpbGVz IGNoYW5nZWQsIDUyIGluc2VydGlvbnMoKyksIDI4MjYgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9k ZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9rbWVtY2hlY2sudHh0CiBkZWxldGUgbW9kZSAxMDA2NDQg YXJjaC94ODYvaW5jbHVkZS9hc20va21lbWNoZWNrLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBhcmNo L3g4Ni9tbS9rbWVtY2hlY2svTWFrZWZpbGUKIGRlbGV0ZSBtb2RlIDEwMDY0NCBhcmNoL3g4Ni9t bS9rbWVtY2hlY2svZXJyb3IuYwogZGVsZXRlIG1vZGUgMTAwNjQ0IGFyY2gveDg2L21tL2ttZW1j aGVjay9lcnJvci5oCiBkZWxldGUgbW9kZSAxMDA2NDQgYXJjaC94ODYvbW0va21lbWNoZWNrL2tt ZW1jaGVjay5jCiBkZWxldGUgbW9kZSAxMDA2NDQgYXJjaC94ODYvbW0va21lbWNoZWNrL29wY29k ZS5jCiBkZWxldGUgbW9kZSAxMDA2NDQgYXJjaC94ODYvbW0va21lbWNoZWNrL29wY29kZS5oCiBk ZWxldGUgbW9kZSAxMDA2NDQgYXJjaC94ODYvbW0va21lbWNoZWNrL3B0ZS5jCiBkZWxldGUgbW9k ZSAxMDA2NDQgYXJjaC94ODYvbW0va21lbWNoZWNrL3B0ZS5oCiBkZWxldGUgbW9kZSAxMDA2NDQg YXJjaC94ODYvbW0va21lbWNoZWNrL3NlbGZ0ZXN0LmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBhcmNo L3g4Ni9tbS9rbWVtY2hlY2svc2VsZnRlc3QuaAogZGVsZXRlIG1vZGUgMTAwNjQ0IGFyY2gveDg2 L21tL2ttZW1jaGVjay9zaGFkb3cuYwogZGVsZXRlIG1vZGUgMTAwNjQ0IGFyY2gveDg2L21tL2tt ZW1jaGVjay9zaGFkb3cuaAogZGVsZXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbGludXgva21lbWNo ZWNrLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBsaWIvS2NvbmZpZy5rbWVtY2hlY2sKIGRlbGV0ZSBt b2RlIDEwMDY0NCBtbS9rbWVtY2hlY2suYwogZGVsZXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2xpYi9s b2NrZGVwL3VpbmNsdWRlL2xpbnV4L2ttZW1jaGVjay5oCgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRh dGlvbi8wMC1JTkRFWCBiL0RvY3VtZW50YXRpb24vMDAtSU5ERVgKaW5kZXggY2QwNzdjYS4uZmI3 OTAwOSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi8wMC1JTkRFWAorKysgYi9Eb2N1bWVudGF0 aW9uLzAwLUlOREVYCkBAIC0yNjMsOCArMjYzLDYgQEAga2VybmVsLXBhcmFtZXRlcnMudHh0CiAJ LSBzdW1tYXJ5IGxpc3Rpbmcgb2YgY29tbWFuZCBsaW5lIC8gYm9vdCBwcm9tcHQgYXJncyBmb3Ig dGhlIGtlcm5lbC4KIGtlcm5lbC1wZXItQ1BVLWt0aHJlYWRzLnR4dAogCS0gTGlzdCBvZiBhbGwg cGVyLUNQVSBrdGhyZWFkcyBhbmQgaG93IHRoZXkgaW50cm9kdWNlIGppdHRlci4KLWttZW1jaGVj ay50eHQKLQktIGluZm8gb24gZHluYW1pYyBjaGVja2VyIHRoYXQgZGV0ZWN0cyB1c2VzIG9mIHVu aW5pdGlhbGl6ZWQgbWVtb3J5Lgoga21lbWxlYWsudHh0CiAJLSBpbmZvIG9uIGhvdyB0byBtYWtl IHVzZSBvZiB0aGUga2VybmVsIG1lbW9yeSBsZWFrIGRldGVjdGlvbiBzeXN0ZW0KIGtvX0tSLwpk aWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9rYXNhbi50eHQgYi9Eb2N1bWVudGF0aW9uL2thc2Fu LnR4dAppbmRleCAwOTJmYzEwLi5hNjRkNjA2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2th c2FuLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2thc2FuLnR4dApAQCAtMTM5LDEwICsxMzksOSBA QCB0aGUgYWNjZXNzZWQgYWRkcmVzcyBpcyBwYXJ0aWFsbHkgYWNjZXNzaWJsZS4KIDIuIEltcGxl bWVudGF0aW9uIGRldGFpbHMKID09PT09PT09PT09PT09PT09PT09PT09PQogCi1Gcm9tIGEgaGln aCBsZXZlbCwgb3VyIGFwcHJvYWNoIHRvIG1lbW9yeSBlcnJvciBkZXRlY3Rpb24gaXMgc2ltaWxh ciB0byB0aGF0Ci1vZiBrbWVtY2hlY2s6IHVzZSBzaGFkb3cgbWVtb3J5IHRvIHJlY29yZCB3aGV0 aGVyIGVhY2ggYnl0ZSBvZiBtZW1vcnkgaXMgc2FmZQotdG8gYWNjZXNzLCBhbmQgdXNlIGNvbXBp bGUtdGltZSBpbnN0cnVtZW50YXRpb24gdG8gY2hlY2sgc2hhZG93IG1lbW9yeSBvbiBlYWNoCi1t ZW1vcnkgYWNjZXNzLgorRnJvbSBhIGhpZ2ggbGV2ZWwsIG91ciBhcHByb2FjaCB0byBtZW1vcnkg ZXJyb3IgZGV0ZWN0aW9uIGlzOiB1c2Ugc2hhZG93IG1lbW9yeQordG8gcmVjb3JkIHdoZXRoZXIg ZWFjaCBieXRlIG9mIG1lbW9yeSBpcyBzYWZlIHRvIGFjY2VzcywgYW5kIHVzZSBjb21waWxlLXRp bWUKK2luc3RydW1lbnRhdGlvbiB0byBjaGVjayBzaGFkb3cgbWVtb3J5IG9uIGVhY2ggbWVtb3J5 IGFjY2Vzcy4KIAogQWRkcmVzc1Nhbml0aXplciBkZWRpY2F0ZXMgMS84IG9mIGtlcm5lbCBtZW1v cnkgdG8gaXRzIHNoYWRvdyBtZW1vcnkKIChlLmcuIDE2VEIgdG8gY292ZXIgMTI4VEIgb24geDg2 XzY0KSBhbmQgdXNlcyBkaXJlY3QgbWFwcGluZyB3aXRoIGEgc2NhbGUgYW5kCmRpZmYgLS1naXQg YS9Eb2N1bWVudGF0aW9uL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dCBiL0RvY3VtZW50YXRpb24va2Vy bmVsLXBhcmFtZXRlcnMudHh0CmluZGV4IDhkNTk2M2YuLjBhNjhlM2QgMTAwNjQ0Ci0tLSBhL0Rv Y3VtZW50YXRpb24va2VybmVsLXBhcmFtZXRlcnMudHh0CisrKyBiL0RvY3VtZW50YXRpb24va2Vy bmVsLXBhcmFtZXRlcnMudHh0CkBAIC0xNjQzLDEzICsxNjQzLDYgQEAgYnl0ZXMgcmVzcGVjdGl2 ZWx5LiBTdWNoIGxldHRlciBzdWZmaXhlcyBjYW4gYWxzbyBiZSBlbnRpcmVseSBvbWl0dGVkLgog CQkJQnVpbHQgd2l0aCBDT05GSUdfREVCVUdfS01FTUxFQUtfREVGQVVMVF9PRkY9eSwKIAkJCXRo ZSBkZWZhdWx0IGlzIG9mZi4KIAotCWttZW1jaGVjaz0JW1g4Nl0gQm9vdC10aW1lIGttZW1jaGVj ayBlbmFibGUvZGlzYWJsZS9vbmUtc2hvdCBtb2RlCi0JCQlWYWxpZCBhcmd1bWVudHM6IDAsIDEs IDIKLQkJCWttZW1jaGVjaz0wIChkaXNhYmxlZCkKLQkJCWttZW1jaGVjaz0xIChlbmFibGVkKQot CQkJa21lbWNoZWNrPTIgKG9uZS1zaG90IG1vZGUpCi0JCQlEZWZhdWx0OiAyIChvbmUtc2hvdCBt b2RlKQotCiAJa3N0YWNrPU4JW1g4Nl0gUHJpbnQgTiB3b3JkcyBmcm9tIHRoZSBrZXJuZWwgc3Rh Y2sKIAkJCWluIG9vcHMgZHVtcHMuCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24va21lbWNo ZWNrLnR4dCBiL0RvY3VtZW50YXRpb24va21lbWNoZWNrLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggYTQxYmRlYi4uMDAwMDAwMAotLS0gYS9Eb2N1bWVudGF0aW9uL2ttZW1jaGVj ay50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw3NTQgKzAsMCBAQAotR0VUVElORyBTVEFSVEVEIFdJ VEggS01FTUNIRUNLCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotVmVnYXJkIE5v c3N1bSA8dmVnYXJkbm9AaWZpLnVpby5ubz4KLQotCi1Db250ZW50cwotPT09PT09PT0KLTAuIElu dHJvZHVjdGlvbgotMS4gRG93bmxvYWRpbmcKLTIuIENvbmZpZ3VyaW5nIGFuZCBjb21waWxpbmcK LTMuIEhvdyB0byB1c2UKLTMuMS4gQm9vdGluZwotMy4yLiBSdW4tdGltZSBlbmFibGUvZGlzYWJs ZQotMy4zLiBEZWJ1Z2dpbmcKLTMuNC4gQW5ub3RhdGluZyBmYWxzZSBwb3NpdGl2ZXMKLTQuIFJl cG9ydGluZyBlcnJvcnMKLTUuIFRlY2huaWNhbCBkZXNjcmlwdGlvbgotCi0KLTAuIEludHJvZHVj dGlvbgotPT09PT09PT09PT09PT09Ci0KLWttZW1jaGVjayBpcyBhIGRlYnVnZ2luZyBmZWF0dXJl IGZvciB0aGUgTGludXggS2VybmVsLiBNb3JlIHNwZWNpZmljYWxseSwgaXQKLWlzIGEgZHluYW1p YyBjaGVja2VyIHRoYXQgZGV0ZWN0cyBhbmQgd2FybnMgYWJvdXQgc29tZSB1c2VzIG9mIHVuaW5p dGlhbGl6ZWQKLW1lbW9yeS4KLQotVXNlcnNwYWNlIHByb2dyYW1tZXJzIG1pZ2h0IGJlIGZhbWls aWFyIHdpdGggVmFsZ3JpbmQncyBtZW1jaGVjay4gVGhlIG1haW4KLWRpZmZlcmVuY2UgYmV0d2Vl biBtZW1jaGVjayBhbmQga21lbWNoZWNrIGlzIHRoYXQgbWVtY2hlY2sgd29ya3MgZm9yIHVzZXJz cGFjZQotcHJvZ3JhbXMgb25seSwgYW5kIGttZW1jaGVjayB3b3JrcyBmb3IgdGhlIGtlcm5lbCBv bmx5LiBUaGUgaW1wbGVtZW50YXRpb25zCi1hcmUgb2YgY291cnNlIHZhc3RseSBkaWZmZXJlbnQu IEJlY2F1c2Ugb2YgdGhpcywga21lbWNoZWNrIGlzIG5vdCBhcyBhY2N1cmF0ZQotYXMgbWVtY2hl Y2ssIGJ1dCBpdCB0dXJucyBvdXQgdG8gYmUgZ29vZCBlbm91Z2ggaW4gcHJhY3RpY2UgdG8gZGlz Y292ZXIgcmVhbAotcHJvZ3JhbW1lciBlcnJvcnMgdGhhdCB0aGUgY29tcGlsZXIgaXMgbm90IGFi bGUgdG8gZmluZCB0aHJvdWdoIHN0YXRpYwotYW5hbHlzaXMuCi0KLUVuYWJsaW5nIGttZW1jaGVj ayBvbiBhIGtlcm5lbCB3aWxsIHByb2JhYmx5IHNsb3cgaXQgZG93biB0byB0aGUgZXh0ZW50IHRo YXQKLXRoZSBtYWNoaW5lIHdpbGwgbm90IGJlIHVzYWJsZSBmb3Igbm9ybWFsIHdvcmtsb2FkcyBz dWNoIGFzIGUuZy4gYW4KLWludGVyYWN0aXZlIGRlc2t0b3AuIGttZW1jaGVjayB3aWxsIGFsc28g Y2F1c2UgdGhlIGtlcm5lbCB0byB1c2UgYWJvdXQgdHdpY2UKLWFzIG11Y2ggbWVtb3J5IGFzIG5v cm1hbC4gRm9yIHRoaXMgcmVhc29uLCBrbWVtY2hlY2sgaXMgc3RyaWN0bHkgYSBkZWJ1Z2dpbmcK LWZlYXR1cmUuCi0KLQotMS4gRG93bmxvYWRpbmcKLT09PT09PT09PT09PT09Ci0KLUFzIG9mIHZl cnNpb24gMi42LjMxLXJjMSwga21lbWNoZWNrIGlzIGluY2x1ZGVkIGluIHRoZSBtYWlubGluZSBr ZXJuZWwuCi0KLQotMi4gQ29uZmlndXJpbmcgYW5kIGNvbXBpbGluZwotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotCi1rbWVtY2hlY2sgb25seSB3b3JrcyBmb3IgdGhlIHg4NiAoYm90aCAz Mi0gYW5kIDY0LWJpdCkgcGxhdGZvcm0uIEEgbnVtYmVyIG9mCi1jb25maWd1cmF0aW9uIHZhcmlh YmxlcyBtdXN0IGhhdmUgc3BlY2lmaWMgc2V0dGluZ3MgaW4gb3JkZXIgZm9yIHRoZSBrbWVtY2hl Y2sKLW1lbnUgdG8gZXZlbiBhcHBlYXIgaW4gIm1lbnVjb25maWciLiBUaGVzZSBhcmU6Ci0KLSAg byBDT05GSUdfQ0NfT1BUSU1JWkVfRk9SX1NJWkU9bgotCi0JVGhpcyBvcHRpb24gaXMgbG9jYXRl ZCB1bmRlciAiR2VuZXJhbCBzZXR1cCIgLyAiT3B0aW1pemUgZm9yIHNpemUiLgotCi0JV2l0aG91 dCB0aGlzLCBnY2Mgd2lsbCB1c2UgY2VydGFpbiBvcHRpbWl6YXRpb25zIHRoYXQgdXN1YWxseSBs ZWFkIHRvCi0JZmFsc2UgcG9zaXRpdmUgd2FybmluZ3MgZnJvbSBrbWVtY2hlY2suIEFuIGV4YW1w bGUgb2YgdGhpcyBpcyBhIDE2LWJpdAotCWZpZWxkIGluIGEgc3RydWN0LCB3aGVyZSBnY2MgbWF5 IGxvYWQgMzIgYml0cywgdGhlbiBkaXNjYXJkIHRoZSB1cHBlcgotCTE2IGJpdHMuIGttZW1jaGVj ayBzZWVzIG9ubHkgdGhlIDMyLWJpdCBsb2FkLCBhbmQgbWF5IHRyaWdnZXIgYQotCXdhcm5pbmcg Zm9yIHRoZSB1cHBlciAxNiBiaXRzIChpZiB0aGV5J3JlIHVuaW5pdGlhbGl6ZWQpLgotCi0gIG8g Q09ORklHX1NMQUI9eSBvciBDT05GSUdfU0xVQj15Ci0KLQlUaGlzIG9wdGlvbiBpcyBsb2NhdGVk IHVuZGVyICJHZW5lcmFsIHNldHVwIiAvICJDaG9vc2UgU0xBQgotCWFsbG9jYXRvciIuCi0KLSAg byBDT05GSUdfRlVOQ1RJT05fVFJBQ0VSPW4KLQotCVRoaXMgb3B0aW9uIGlzIGxvY2F0ZWQgdW5k ZXIgIktlcm5lbCBoYWNraW5nIiAvICJUcmFjZXJzIiAvICJLZXJuZWwKLQlGdW5jdGlvbiBUcmFj ZXIiCi0KLQlXaGVuIGZ1bmN0aW9uIHRyYWNpbmcgaXMgY29tcGlsZWQgaW4sIGdjYyBlbWl0cyBh IGNhbGwgdG8gYW5vdGhlcgotCWZ1bmN0aW9uIGF0IHRoZSBiZWdpbm5pbmcgb2YgZXZlcnkgZnVu Y3Rpb24uIFRoaXMgbWVhbnMgdGhhdCB3aGVuIHRoZQotCXBhZ2UgZmF1bHQgaGFuZGxlciBpcyBj YWxsZWQsIHRoZSBmdHJhY2UgZnJhbWV3b3JrIHdpbGwgYmUgY2FsbGVkCi0JYmVmb3JlIGttZW1j aGVjayBoYXMgaGFkIGEgY2hhbmNlIHRvIGhhbmRsZSB0aGUgZmF1bHQuIElmIGZ0cmFjZSB0aGVu Ci0JbW9kaWZpZXMgbWVtb3J5IHRoYXQgd2FzIHRyYWNrZWQgYnkga21lbWNoZWNrLCB0aGUgcmVz dWx0IGlzIGFuCi0JZW5kbGVzcyByZWN1cnNpdmUgcGFnZSBmYXVsdC4KLQotICBvIENPTkZJR19E RUJVR19QQUdFQUxMT0M9bgotCi0JVGhpcyBvcHRpb24gaXMgbG9jYXRlZCB1bmRlciAiS2VybmVs IGhhY2tpbmciIC8gIkRlYnVnIHBhZ2UgbWVtb3J5Ci0JYWxsb2NhdGlvbnMiLgotCi1JbiBhZGRp dGlvbiwgSSBoaWdobHkgcmVjb21tZW5kIHR1cm5pbmcgb24gQ09ORklHX0RFQlVHX0lORk89eS4g VGhpcyBpcyBhbHNvCi1sb2NhdGVkIHVuZGVyICJLZXJuZWwgaGFja2luZyIuIFdpdGggdGhpcywg eW91IHdpbGwgYmUgYWJsZSB0byBnZXQgbGluZSBudW1iZXIKLWluZm9ybWF0aW9uIGZyb20gdGhl IGttZW1jaGVjayB3YXJuaW5ncywgd2hpY2ggaXMgZXh0cmVtZWx5IHZhbHVhYmxlIGluCi1kZWJ1 Z2dpbmcgYSBwcm9ibGVtLiBUaGlzIG9wdGlvbiBpcyBub3QgbWFuZGF0b3J5LCBob3dldmVyLCBi ZWNhdXNlIGl0IHNsb3dzCi1kb3duIHRoZSBjb21waWxhdGlvbiBwcm9jZXNzIGFuZCBwcm9kdWNl cyBhIG11Y2ggYmlnZ2VyIGtlcm5lbCBpbWFnZS4KLQotTm93IHRoZSBrbWVtY2hlY2sgbWVudSBz aG91bGQgYmUgdmlzaWJsZSAodW5kZXIgIktlcm5lbCBoYWNraW5nIiAvICJNZW1vcnkKLURlYnVn Z2luZyIgLyAia21lbWNoZWNrOiB0cmFwIHVzZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSIpLiBI ZXJlIGZvbGxvd3MKLWEgZGVzY3JpcHRpb24gb2YgdGhlIGttZW1jaGVjayBjb25maWd1cmF0aW9u IHZhcmlhYmxlczoKLQotICBvIENPTkZJR19LTUVNQ0hFQ0sKLQotCVRoaXMgbXVzdCBiZSBlbmFi bGVkIGluIG9yZGVyIHRvIHVzZSBrbWVtY2hlY2sgYXQgYWxsLi4uCi0KLSAgbyBDT05GSUdfS01F TUNIRUNLX1tESVNBQkxFRCB8IEVOQUJMRUQgfCBPTkVTSE9UXV9CWV9ERUZBVUxUCi0KLQlUaGlz IG9wdGlvbiBjb250cm9scyB0aGUgc3RhdHVzIG9mIGttZW1jaGVjayBhdCBib290LXRpbWUuICJF bmFibGVkIgotCXdpbGwgZW5hYmxlIGttZW1jaGVjayByaWdodCBmcm9tIHRoZSBzdGFydCwgImRp c2FibGVkIiB3aWxsIGJvb3QgdGhlCi0Ja2VybmVsIGFzIG5vcm1hbCAoYnV0IHdpdGggdGhlIGtt ZW1jaGVjayBjb2RlIGNvbXBpbGVkIGluLCBzbyBpdCBjYW4KLQliZSBlbmFibGVkIGF0IHJ1bi10 aW1lIGFmdGVyIHRoZSBrZXJuZWwgaGFzIGJvb3RlZCksIGFuZCAib25lLXNob3QiIGlzCi0JYSBz cGVjaWFsIG1vZGUgd2hpY2ggd2lsbCB0dXJuIGttZW1jaGVjayBvZmYgYXV0b21hdGljYWxseSBh ZnRlcgotCWRldGVjdGluZyB0aGUgZmlyc3QgdXNlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5Lgot Ci0JSWYgeW91IGFyZSB1c2luZyBrbWVtY2hlY2sgdG8gYWN0aXZlbHkgZGVidWcgYSBwcm9ibGVt LCB0aGVuIHlvdQotCXByb2JhYmx5IHdhbnQgdG8gY2hvb3NlICJlbmFibGVkIiBoZXJlLgotCi0J VGhlIG9uZS1zaG90IG1vZGUgaXMgbW9zdGx5IHVzZWZ1bCBpbiBhdXRvbWF0ZWQgdGVzdCBzZXR1 cHMgYmVjYXVzZSBpdAotCWNhbiBwcmV2ZW50IGZsb29kcyBvZiB3YXJuaW5ncyBhbmQgaW5jcmVh c2UgdGhlIGNoYW5jZXMgb2YgdGhlIG1hY2hpbmUKLQlzdXJ2aXZpbmcgaW4gY2FzZSBzb21ldGhp bmcgaXMgcmVhbGx5IHdyb25nLiBJbiBvdGhlciBjYXNlcywgdGhlIG9uZS0KLQlzaG90IG1vZGUg Y291bGQgYWN0dWFsbHkgYmUgY291bnRlci1wcm9kdWN0aXZlIGJlY2F1c2UgaXQgd291bGQgdHVy bgotCWl0c2VsZiBvZmYgYXQgdGhlIHZlcnkgZmlyc3QgZXJyb3IgLS0gaW4gdGhlIGNhc2Ugb2Yg YSBmYWxzZSBwb3NpdGl2ZQotCXRvbyAtLSBhbmQgdGhpcyB3b3VsZCBjb21lIGluIHRoZSB3YXkg b2YgZGVidWdnaW5nIHRoZSBzcGVjaWZpYwotCXByb2JsZW0geW91IHdlcmUgaW50ZXJlc3RlZCBp bi4KLQotCUlmIHlvdSB3b3VsZCBsaWtlIHRvIHVzZSB5b3VyIGtlcm5lbCBhcyBub3JtYWwsIGJ1 dCB3aXRoIGEgY2hhbmNlIHRvCi0JZW5hYmxlIGttZW1jaGVjayBpbiBjYXNlIG9mIHNvbWUgcHJv YmxlbSwgaXQgbWlnaHQgYmUgYSBnb29kIGlkZWEgdG8KLQljaG9vc2UgImRpc2FibGVkIiBoZXJl LiBXaGVuIGttZW1jaGVjayBpcyBkaXNhYmxlZCwgbW9zdCBvZiB0aGUgcnVuLQotCXRpbWUgb3Zl cmhlYWQgaXMgbm90IGluY3VycmVkLCBhbmQgdGhlIGtlcm5lbCB3aWxsIGJlIGFsbW9zdCBhcyBm YXN0Ci0JYXMgbm9ybWFsLgotCi0gIG8gQ09ORklHX0tNRU1DSEVDS19RVUVVRV9TSVpFCi0KLQlT ZWxlY3QgdGhlIG1heGltdW0gbnVtYmVyIG9mIGVycm9yIHJlcG9ydHMgdG8gc3RvcmUgaW4gYW4g aW50ZXJuYWwKLQkoZml4ZWQtc2l6ZSkgYnVmZmVyLiBTaW5jZSBlcnJvcnMgY2FuIG9jY3VyIHZp cnR1YWxseSBhbnl3aGVyZSBhbmQgaW4KLQlhbnkgY29udGV4dCwgd2UgbmVlZCBhIHRlbXBvcmFy eSBzdG9yYWdlIGFyZWEgd2hpY2ggaXMgZ3VhcmFudGVlZCBub3QKLQl0byBnZW5lcmF0ZSBhbnkg b3RoZXIgcGFnZSBmYXVsdHMgd2hlbiBhY2Nlc3NlZC4gVGhlIHF1ZXVlIHdpbGwgYmUKLQllbXB0 aWVkIGFzIHNvb24gYXMgYSB0YXNrbGV0IG1heSBiZSBzY2hlZHVsZWQuIElmIHRoZSBxdWV1ZSBp cyBmdWxsLAotCW5ldyBlcnJvciByZXBvcnRzIHdpbGwgYmUgbG9zdC4KLQotCVRoZSBkZWZhdWx0 IHZhbHVlIG9mIDY0IGlzIHByb2JhYmx5IGZpbmUuIElmIHNvbWUgY29kZSBwcm9kdWNlcyBtb3Jl Ci0JdGhhbiA2NCBlcnJvcnMgd2l0aGluIGFuIGlycXMtb2ZmIHNlY3Rpb24sIHRoZW4gdGhlIGNv ZGUgaXMgbGlrZWx5IHRvCi0JcHJvZHVjZSBtYW55LCBtYW55IG1vcmUsIHRvbywgYW5kIHRoZXNl IGFkZGl0aW9uYWwgcmVwb3J0cyBzZWxkb20gZ2l2ZQotCWFueSBtb3JlIGluZm9ybWF0aW9uICh0 aGUgZmlyc3QgcmVwb3J0IGlzIHVzdWFsbHkgdGhlIG1vc3QgdmFsdWFibGUKLQlhbnl3YXkpLgot Ci0JVGhpcyBudW1iZXIgbWlnaHQgaGF2ZSB0byBiZSBhZGp1c3RlZCBpZiB5b3UgYXJlIG5vdCB1 c2luZyBzZXJpYWwKLQljb25zb2xlIG9yIHNpbWlsYXIgdG8gY2FwdHVyZSB0aGUga2VybmVsIGxv Zy4gSWYgeW91IGFyZSB1c2luZyB0aGUKLQkiZG1lc2ciIGNvbW1hbmQgdG8gc2F2ZSB0aGUgbG9n LCB0aGVuIGdldHRpbmcgYSBsb3Qgb2Yga21lbWNoZWNrCi0Jd2FybmluZ3MgbWlnaHQgb3ZlcmZs b3cgdGhlIGtlcm5lbCBsb2cgaXRzZWxmLCBhbmQgdGhlIGVhcmxpZXIgcmVwb3J0cwotCXdpbGwg Z2V0IGxvc3QgaW4gdGhhdCB3YXkgaW5zdGVhZC4gVHJ5IHNldHRpbmcgdGhpcyB0byAxMCBvciBz byBvbgotCXN1Y2ggYSBzZXR1cC4KLQotICBvIENPTkZJR19LTUVNQ0hFQ0tfU0hBRE9XX0NPUFlf U0hJRlQKLQotCVNlbGVjdCB0aGUgbnVtYmVyIG9mIHNoYWRvdyBieXRlcyB0byBzYXZlIGFsb25n IHdpdGggZWFjaCBlbnRyeSBvZiB0aGUKLQllcnJvci1yZXBvcnQgcXVldWUuIFRoZXNlIGJ5dGVz IGluZGljYXRlIHdoYXQgcGFydHMgb2YgYW4gYWxsb2NhdGlvbgotCWFyZSBpbml0aWFsaXplZCwg dW5pbml0aWFsaXplZCwgZXRjLiBhbmQgd2lsbCBiZSBkaXNwbGF5ZWQgd2hlbiBhbgotCWVycm9y IGlzIGRldGVjdGVkIHRvIGhlbHAgdGhlIGRlYnVnZ2luZyBvZiBhIHBhcnRpY3VsYXIgcHJvYmxl bS4KLQotCVRoZSBudW1iZXIgZW50ZXJlZCBoZXJlIGlzIGFjdHVhbGx5IHRoZSBsb2dhcml0aG0g b2YgdGhlIG51bWJlciBvZgotCWJ5dGVzIHRoYXQgd2lsbCBiZSBzYXZlZC4gU28gaWYgeW91IHBp Y2sgZm9yIGV4YW1wbGUgNSBoZXJlLCBrbWVtY2hlY2sKLQl3aWxsIHNhdmUgMl41ID0gMzIgYnl0 ZXMuCi0KLQlUaGUgZGVmYXVsdCB2YWx1ZSBzaG91bGQgYmUgZmluZSBmb3IgZGVidWdnaW5nIG1v c3QgcHJvYmxlbXMuIEl0IGFsc28KLQlmaXRzIG5pY2VseSB3aXRoaW4gODAgY29sdW1ucy4KLQot ICBvIENPTkZJR19LTUVNQ0hFQ0tfUEFSVElBTF9PSwotCi0JVGhpcyBvcHRpb24gKHdoZW4gZW5h YmxlZCkgd29ya3MgYXJvdW5kIGNlcnRhaW4gR0NDIG9wdGltaXphdGlvbnMgdGhhdAotCXByb2R1 Y2UgMzItYml0IHJlYWRzIGZyb20gMTYtYml0IHZhcmlhYmxlcyB3aGVyZSB0aGUgdXBwZXIgMTYg Yml0cyBhcmUKLQl0aHJvd24gYXdheSBhZnRlcndhcmRzLgotCi0JVGhlIGRlZmF1bHQgdmFsdWUg KGVuYWJsZWQpIGlzIHJlY29tbWVuZGVkLiBUaGlzIG1heSBvZiBjb3Vyc2UgaGlkZQotCXNvbWUg cmVhbCBlcnJvcnMsIGJ1dCBkaXNhYmxpbmcgaXQgd291bGQgcHJvYmFibHkgcHJvZHVjZSBhIGxv dCBvZgotCWZhbHNlIHBvc2l0aXZlcy4KLQotICBvIENPTkZJR19LTUVNQ0hFQ0tfQklUT1BTX09L Ci0KLQlUaGlzIG9wdGlvbiBzaWxlbmNlcyB3YXJuaW5ncyB0aGF0IHdvdWxkIGJlIGdlbmVyYXRl ZCBmb3IgYml0LWZpZWxkCi0JYWNjZXNzZXMgd2hlcmUgbm90IGFsbCB0aGUgYml0cyBhcmUgaW5p dGlhbGl6ZWQgYXQgdGhlIHNhbWUgdGltZS4gVGhpcwotCW1heSBhbHNvIGhpZGUgc29tZSByZWFs IGJ1Z3MuCi0KLQlUaGlzIG9wdGlvbiBpcyBwcm9iYWJseSBvYnNvbGV0ZSwgb3IgaXQgc2hvdWxk IGJlIHJlcGxhY2VkIHdpdGgKLQl0aGUga21lbWNoZWNrLS9iaXRmaWVsZC1hbm5vdGF0aW9ucyBm b3IgdGhlIGNvZGUgaW4gcXVlc3Rpb24uIFRoZQotCWRlZmF1bHQgdmFsdWUgaXMgdGhlcmVmb3Jl IGZpbmUuCi0KLU5vdyBjb21waWxlIHRoZSBrZXJuZWwgYXMgdXN1YWwuCi0KLQotMy4gSG93IHRv IHVzZQotPT09PT09PT09PT09PQotCi0zLjEuIEJvb3RpbmcKLT09PT09PT09PT09PQotCi1GaXJz dCBzb21lIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb21tYW5kLWxpbmUgb3B0aW9ucy4gVGhlcmUg aXMgb25seSBvbmUKLW9wdGlvbiBzcGVjaWZpYyB0byBrbWVtY2hlY2ssIGFuZCB0aGlzIGlzIGNh bGxlZCAia21lbWNoZWNrIi4gSXQgY2FuIGJlIHVzZWQKLXRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0 IG1vZGUgYXMgY2hvc2VuIGJ5IHRoZSBDT05GSUdfS01FTUNIRUNLXypfQllfREVGQVVMVAotb3B0 aW9uLiBJdHMgcG9zc2libGUgc2V0dGluZ3MgYXJlOgotCi0gIG8ga21lbWNoZWNrPTAgKGRpc2Fi bGVkKQotICBvIGttZW1jaGVjaz0xIChlbmFibGVkKQotICBvIGttZW1jaGVjaz0yIChvbmUtc2hv dCBtb2RlKQotCi1JZiBTTFVCIGRlYnVnZ2luZyBoYXMgYmVlbiBlbmFibGVkIGluIHRoZSBrZXJu ZWwsIGl0IG1heSB0YWtlIHByZWNlZGVuY2Ugb3Zlcgota21lbWNoZWNrIGluIHN1Y2ggYSB3YXkg dGhhdCB0aGUgc2xhYiBjYWNoZXMgd2hpY2ggYXJlIHVuZGVyIFNMVUIgZGVidWdnaW5nCi13aWxs IG5vdCBiZSB0cmFja2VkIGJ5IGttZW1jaGVjay4gSW4gb3JkZXIgdG8gZW5zdXJlIHRoYXQgdGhp cyBkb2Vzbid0IGhhcHBlbgotKGV2ZW4gdGhvdWdoIGl0IHNob3VsZG4ndCBieSBkZWZhdWx0KSwg dXNlIFNMVUIncyBib290IG9wdGlvbiAic2x1Yl9kZWJ1ZyIsCi1saWtlIHRoaXM6IHNsdWJfZGVi dWc9LQotCi1JbiBmYWN0LCB0aGlzIG9wdGlvbiBtYXkgYWxzbyBiZSB1c2VkIGZvciBmaW5lLWdy YWluZWQgY29udHJvbCBvdmVyIFNMVUIgdnMuCi1rbWVtY2hlY2suIEZvciBleGFtcGxlLCBpZiB0 aGUgY29tbWFuZCBsaW5lIGluY2x1ZGVzICJrbWVtY2hlY2s9MQotc2x1Yl9kZWJ1Zz0sZGVudHJ5 IiwgdGhlbiBTTFVCIGRlYnVnZ2luZyB3aWxsIGJlIHVzZWQgb25seSBmb3IgdGhlICJkZW50cnki Ci1zbGFiIGNhY2hlLCBhbmQgd2l0aCBrbWVtY2hlY2sgdHJhY2tpbmcgYWxsIHRoZSBvdGhlciBj YWNoZXMuIFRoaXMgaXMgYWR2YW5jZWQKLXVzYWdlLCBob3dldmVyLCBhbmQgaXMgbm90IGdlbmVy YWxseSByZWNvbW1lbmRlZC4KLQotCi0zLjIuIFJ1bi10aW1lIGVuYWJsZS9kaXNhYmxlCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLVdoZW4gdGhlIGtlcm5lbCBoYXMgYm9vdGVkLCBp dCBpcyBwb3NzaWJsZSB0byBlbmFibGUgb3IgZGlzYWJsZSBrbWVtY2hlY2sgYXQKLXJ1bi10aW1l LiBXQVJOSU5HOiBUaGlzIGZlYXR1cmUgaXMgc3RpbGwgZXhwZXJpbWVudGFsIGFuZCBtYXkgY2F1 c2UgZmFsc2UKLXBvc2l0aXZlIHdhcm5pbmdzIHRvIGFwcGVhci4gVGhlcmVmb3JlLCB0cnkgbm90 IHRvIHVzZSB0aGlzLiBJZiB5b3UgZmluZCB0aGF0Ci1pdCBkb2Vzbid0IHdvcmsgcHJvcGVybHkg KGUuZy4geW91IHNlZSBhbiB1bnJlYXNvbmFibGUgYW1vdW50IG9mIHdhcm5pbmdzKSwgSQotd2ls bCBiZSBoYXBweSB0byB0YWtlIGJ1ZyByZXBvcnRzLgotCi1Vc2UgdGhlIGZpbGUgL3Byb2Mvc3lz L2tlcm5lbC9rbWVtY2hlY2sgZm9yIHRoaXMgcHVycG9zZSwgZS5nLjoKLQotCSQgZWNobyAwID4g L3Byb2Mvc3lzL2tlcm5lbC9rbWVtY2hlY2sgIyBkaXNhYmxlcyBrbWVtY2hlY2sKLQotVGhlIG51 bWJlcnMgYXJlIHRoZSBzYW1lIGFzIGZvciB0aGUga21lbWNoZWNrPSBjb21tYW5kLWxpbmUgb3B0 aW9uLgotCi0KLTMuMy4gRGVidWdnaW5nCi09PT09PT09PT09PT09PQotCi1BIHR5cGljYWwgcmVw b3J0IHdpbGwgbG9vayBzb21ldGhpbmcgbGlrZSB0aGlzOgotCi1XQVJOSU5HOiBrbWVtY2hlY2s6 IENhdWdodCAzMi1iaXQgcmVhZCBmcm9tIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IChmZmZmODgwMDNl NGEyMDI0KQotODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwODhmZmZm MDAwMDAwMDAwMDAwMDAwMAotIGkgaSBpIGkgdSB1IHUgdSBpIGkgaSBpIGkgaSBpIGkgdSB1IHUg dSB1IHUgdSB1IHUgdSB1IHUgdSB1IHUgdQotICAgICAgICAgXgotCi1QaWQ6IDE4NTYsIGNvbW06 IG50cGRhdGUgTm90IHRhaW50ZWQgMi42LjI5LXJjNSAjMjY0IDk0NVAtQQotUklQOiAwMDEwOls8 ZmZmZmZmZmY4MTA0ZWRlOD5dICBbPGZmZmZmZmZmODEwNGVkZTg+XSBfX2RlcXVldWVfc2lnbmFs KzB4YzgvMHgxOTAKLVJTUDogMDAxODpmZmZmODgwMDNjZGY3ZDk4ICBFRkxBR1M6IDAwMjEwMDAy Ci1SQVg6IDAwMDAwMDAwMDAwMDAwMzAgUkJYOiBmZmZmODgwMDNkNGVhOTY4IFJDWDogMDAwMDAw MDAwMDAwMDAwOQotUkRYOiBmZmZmODgwMDNlNWQ2MDE4IFJTSTogZmZmZjg4MDAzZTVkNjAyNCBS REk6IGZmZmY4ODAwM2NkZjdlODQKLVJCUDogZmZmZjg4MDAzY2RmN2RiOCBSMDg6IGZmZmY4ODAw M2U1ZDYwMDAgUjA5OiAwMDAwMDAwMDAwMDAwMDAwCi1SMTA6IDAwMDAwMDAwMDAwMDAwODAgUjEx OiAwMDAwMDAwMDAwMDAwMDAwIFIxMjogMDAwMDAwMDAwMDAwMDAwZQotUjEzOiBmZmZmODgwMDNj ZGY3ZTc4IFIxNDogZmZmZjg4MDAzZDUzMDcxMCBSMTU6IGZmZmY4ODAwM2Q1YTk4YzgKLUZTOiAg MDAwMDAwMDAwMDAwMDAwMCgwMDAwKSBHUzpmZmZmODgwMDAxOTgyMDAwKDAwNjMpIGtubEdTOjAw MDAwCi1DUzogIDAwMTAgRFM6IDAwMmIgRVM6IDAwMmIgQ1IwOiAwMDAwMDAwMDgwMDUwMDMzCi1D UjI6IGZmZmY4ODAwM2Y4MDZlYTAgQ1IzOiAwMDAwMDAwMDNjMDM2MDAwIENSNDogMDAwMDAwMDAw MDAwMDZhMAotRFIwOiAwMDAwMDAwMDAwMDAwMDAwIERSMTogMDAwMDAwMDAwMDAwMDAwMCBEUjI6 IDAwMDAwMDAwMDAwMDAwMDAKLURSMzogMDAwMDAwMDAwMDAwMDAwMCBEUjY6IDAwMDAwMDAwZmZm ZjRmZjAgRFI3OiAwMDAwMDAwMDAwMDAwNDAwCi0gWzxmZmZmZmZmZjgxMDRmMDRlPl0gZGVxdWV1 ZV9zaWduYWwrMHg4ZS8weDE3MAotIFs8ZmZmZmZmZmY4MTA1MGJkOD5dIGdldF9zaWduYWxfdG9f ZGVsaXZlcisweDk4LzB4MzkwCi0gWzxmZmZmZmZmZjgxMDBiODdkPl0gZG9fbm90aWZ5X3Jlc3Vt ZSsweGFkLzB4N2QwCi0gWzxmZmZmZmZmZjgxMDBjN2I1Pl0gaW50X3NpZ25hbCsweDEyLzB4MTcK LSBbPGZmZmZmZmZmZmZmZmZmZmY+XSAweGZmZmZmZmZmZmZmZmZmZmYKLQotVGhlIHNpbmdsZSBt b3N0IHZhbHVhYmxlIGluZm9ybWF0aW9uIGluIHRoaXMgcmVwb3J0IGlzIHRoZSBSSVAgKG9yIEVJ UCBvbiAzMi0KLWJpdCkgdmFsdWUuIFRoaXMgd2lsbCBoZWxwIHVzIHBpbnBvaW50IGV4YWN0bHkg d2hpY2ggaW5zdHJ1Y3Rpb24gdGhhdCBjYXVzZWQKLXRoZSB3YXJuaW5nLgotCi1JZiB5b3VyIGtl cm5lbCB3YXMgY29tcGlsZWQgd2l0aCBDT05GSUdfREVCVUdfSU5GTz15LCB0aGVuIGFsbCB3ZSBo YXZlIHRvIGRvCi1pcyBnaXZlIHRoaXMgYWRkcmVzcyB0byB0aGUgYWRkcjJsaW5lIHByb2dyYW0s IGxpa2UgdGhpczoKLQotCSQgYWRkcjJsaW5lIC1lIHZtbGludXggLWkgZmZmZmZmZmY4MTA0ZWRl OAotCWFyY2gveDg2L2luY2x1ZGUvYXNtL3N0cmluZ182NC5oOjEyCi0JaW5jbHVkZS9hc20tZ2Vu ZXJpYy9zaWdpbmZvLmg6Mjg3Ci0Ja2VybmVsL3NpZ25hbC5jOjM4MAotCWtlcm5lbC9zaWduYWwu Yzo0MTAKLQotVGhlICItZSB2bWxpbnV4IiB0ZWxscyBhZGRyMmxpbmUgd2hpY2ggZmlsZSB0byBs b29rIGluLiBJTVBPUlRBTlQ6IFRoaXMgbXVzdAotYmUgdGhlIHZtbGludXggb2YgdGhlIGtlcm5l bCB0aGF0IHByb2R1Y2VkIHRoZSB3YXJuaW5nIGluIHRoZSBmaXJzdCBwbGFjZSEgSWYKLW5vdCwg dGhlIGxpbmUgbnVtYmVyIGluZm9ybWF0aW9uIHdpbGwgYWxtb3N0IGNlcnRhaW5seSBiZSB3cm9u Zy4KLQotVGhlICItaSIgdGVsbHMgYWRkcjJsaW5lIHRvIGFsc28gcHJpbnQgdGhlIGxpbmUgbnVt YmVycyBvZiBpbmxpbmVkIGZ1bmN0aW9ucy4KLUluIHRoaXMgY2FzZSwgdGhlIGZsYWcgd2FzIHZl cnkgaW1wb3J0YW50LCBiZWNhdXNlIG90aGVyd2lzZSwgaXQgd291bGQgb25seQotaGF2ZSBwcmlu dGVkIHRoZSBmaXJzdCBsaW5lLCB3aGljaCBpcyBqdXN0IGEgY2FsbCB0byBtZW1jcHkoKSwgd2hp Y2ggY291bGQgYmUKLWNhbGxlZCBmcm9tIGEgdGhvdXNhbmQgcGxhY2VzIGluIHRoZSBrZXJuZWws IGFuZCBpcyB0aGVyZWZvcmUgbm90IHZlcnkgdXNlZnVsLgotVGhlc2UgaW5saW5lZCBmdW5jdGlv bnMgd291bGQgbm90IHNob3cgdXAgaW4gdGhlIHN0YWNrIHRyYWNlIGFib3ZlLCBzaW1wbHkKLWJl Y2F1c2UgdGhlIGtlcm5lbCBkb2Vzbid0IGxvYWQgdGhlIGV4dHJhIGRlYnVnZ2luZyBpbmZvcm1h dGlvbi4gVGhpcwotdGVjaG5pcXVlIGNhbiBvZiBjb3Vyc2UgYmUgdXNlZCB3aXRoIG9yZGluYXJ5 IGtlcm5lbCBvb3BzZXMgYXMgd2VsbC4KLQotSW4gdGhpcyBjYXNlLCBpdCdzIHRoZSBjYWxsZXIg b2YgbWVtY3B5KCkgdGhhdCBpcyBpbnRlcmVzdGluZywgYW5kIGl0IGNhbiBiZQotZm91bmQgaW4g aW5jbHVkZS9hc20tZ2VuZXJpYy9zaWdpbmZvLmgsIGxpbmUgMjg3OgotCi0yODEgc3RhdGljIGlu bGluZSB2b2lkIGNvcHlfc2lnaW5mbyhzdHJ1Y3Qgc2lnaW5mbyAqdG8sIHN0cnVjdCBzaWdpbmZv ICpmcm9tKQotMjgyIHsKLTI4MyAgICAgICAgIGlmIChmcm9tLT5zaV9jb2RlIDwgMCkKLTI4NCAg ICAgICAgICAgICAgICAgbWVtY3B5KHRvLCBmcm9tLCBzaXplb2YoKnRvKSk7Ci0yODUgICAgICAg ICBlbHNlCi0yODYgICAgICAgICAgICAgICAgIC8qIF9zaWdjaGxkIGlzIGN1cnJlbnRseSB0aGUg bGFyZ2VzdCBrbm93IHVuaW9uIG1lbWJlciAqLwotMjg3ICAgICAgICAgICAgICAgICBtZW1jcHko dG8sIGZyb20sIF9fQVJDSF9TSV9QUkVBTUJMRV9TSVpFICsgc2l6ZW9mKGZyb20tPl9zaWZpZWxk cy5fc2lnY2hsZCkpOwotMjg4IH0KLQotU2luY2UgdGhpcyB3YXMgYSByZWFkIChrbWVtY2hlY2sg dXN1YWxseSB3YXJucyBhYm91dCByZWFkcyBvbmx5LCB0aG91Z2ggaXQgY2FuCi13YXJuIGFib3V0 IHdyaXRlcyB0byB1bmFsbG9jYXRlZCBvciBmcmVlZCBtZW1vcnkgYXMgd2VsbCksIGl0IHdhcyBw cm9iYWJseSB0aGUKLSJmcm9tIiBhcmd1bWVudCB3aGljaCBjb250YWluZWQgc29tZSB1bmluaXRp YWxpemVkIGJ5dGVzLiBGb2xsb3dpbmcgdGhlIGNoYWluCi1vZiBjYWxscywgd2UgbW92ZSB1cHdh cmRzIHRvIHNlZSB3aGVyZSAiZnJvbSIgd2FzIGFsbG9jYXRlZCBvciBpbml0aWFsaXplZCwKLWtl cm5lbC9zaWduYWwuYywgbGluZSAzODA6Ci0KLTM1OSBzdGF0aWMgdm9pZCBjb2xsZWN0X3NpZ25h bChpbnQgc2lnLCBzdHJ1Y3Qgc2lncGVuZGluZyAqbGlzdCwgc2lnaW5mb190ICppbmZvKQotMzYw IHsKLS4uLgotMzY3ICAgICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeShxLCAmbGlzdC0+bGlzdCwg bGlzdCkgewotMzY4ICAgICAgICAgICAgICAgICBpZiAocS0+aW5mby5zaV9zaWdubyA9PSBzaWcp IHsKLTM2OSAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3QpCi0zNzAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHN0aWxsX3BlbmRpbmc7Ci0zNzEgICAgICAgICAg ICAgICAgICAgICAgICAgZmlyc3QgPSBxOwotLi4uCi0zNzcgICAgICAgICBpZiAoZmlyc3QpIHsK LTM3OCBzdGlsbF9wZW5kaW5nOgotMzc5ICAgICAgICAgICAgICAgICBsaXN0X2RlbF9pbml0KCZm aXJzdC0+bGlzdCk7Ci0zODAgICAgICAgICAgICAgICAgIGNvcHlfc2lnaW5mbyhpbmZvLCAmZmly c3QtPmluZm8pOwotMzgxICAgICAgICAgICAgICAgICBfX3NpZ3F1ZXVlX2ZyZWUoZmlyc3QpOwot Li4uCi0zOTIgICAgICAgICB9Ci0zOTMgfQotCi1IZXJlLCBpdCBpcyAmZmlyc3QtPmluZm8gdGhh dCBpcyBiZWluZyBwYXNzZWQgb24gdG8gY29weV9zaWdpbmZvKCkuIFRoZQotdmFyaWFibGUgImZp cnN0IiB3YXMgZm91bmQgb24gYSBsaXN0IC0tIHBhc3NlZCBpbiBhcyB0aGUgc2Vjb25kIGFyZ3Vt ZW50IHRvCi1jb2xsZWN0X3NpZ25hbCgpLiBXZSAgY29udGludWUgb3VyIGpvdXJuZXkgdGhyb3Vn aCB0aGUgc3RhY2ssIHRvIGZpZ3VyZSBvdXQKLXdoZXJlIHRoZSBpdGVtIG9uICJsaXN0IiB3YXMg YWxsb2NhdGVkIG9yIGluaXRpYWxpemVkLiBXZSBtb3ZlIHRvIGxpbmUgNDEwOgotCi0zOTUgc3Rh dGljIGludCBfX2RlcXVldWVfc2lnbmFsKHN0cnVjdCBzaWdwZW5kaW5nICpwZW5kaW5nLCBzaWdz ZXRfdCAqbWFzaywKLTM5NiAgICAgICAgICAgICAgICAgICAgICAgICBzaWdpbmZvX3QgKmluZm8p Ci0zOTcgewotLi4uCi00MTAgICAgICAgICAgICAgICAgIGNvbGxlY3Rfc2lnbmFsKHNpZywgcGVu ZGluZywgaW5mbyk7Ci0uLi4KLTQxNCB9Ci0KLU5vdyB3ZSBuZWVkIHRvIGZvbGxvdyB0aGUgInBl bmRpbmciIHBvaW50ZXIsIHNpbmNlIHRoYXQgaXMgYmVpbmcgcGFzc2VkIG9uIHRvCi1jb2xsZWN0 X3NpZ25hbCgpIGFzICJsaXN0Ii4gQXQgdGhpcyBwb2ludCwgd2UndmUgcnVuIG91dCBvZiBsaW5l cyBmcm9tIHRoZQotImFkZHIybGluZSIgb3V0cHV0LiBOb3QgdG8gd29ycnksIHdlIGp1c3QgcGFz dGUgdGhlIG5leHQgYWRkcmVzc2VzIGZyb20gdGhlCi1rbWVtY2hlY2sgc3RhY2sgZHVtcCwgaS5l LjoKLQotIFs8ZmZmZmZmZmY4MTA0ZjA0ZT5dIGRlcXVldWVfc2lnbmFsKzB4OGUvMHgxNzAKLSBb PGZmZmZmZmZmODEwNTBiZDg+XSBnZXRfc2lnbmFsX3RvX2RlbGl2ZXIrMHg5OC8weDM5MAotIFs8 ZmZmZmZmZmY4MTAwYjg3ZD5dIGRvX25vdGlmeV9yZXN1bWUrMHhhZC8weDdkMAotIFs8ZmZmZmZm ZmY4MTAwYzdiNT5dIGludF9zaWduYWwrMHgxMi8weDE3Ci0KLQkkIGFkZHIybGluZSAtZSB2bWxp bnV4IC1pIGZmZmZmZmZmODEwNGYwNGUgZmZmZmZmZmY4MTA1MGJkOCBcCi0JCWZmZmZmZmZmODEw MGI4N2QgZmZmZmZmZmY4MTAwYzdiNQotCWtlcm5lbC9zaWduYWwuYzo0NDYKLQlrZXJuZWwvc2ln bmFsLmM6MTgwNgotCWFyY2gveDg2L2tlcm5lbC9zaWduYWwuYzo4MDUKLQlhcmNoL3g4Ni9rZXJu ZWwvc2lnbmFsLmM6ODcxCi0JYXJjaC94ODYva2VybmVsL2VudHJ5XzY0LlM6Njk0Ci0KLVJlbWVt YmVyIHRoYXQgc2luY2UgdGhlc2UgYWRkcmVzc2VzIHdlcmUgZm91bmQgb24gdGhlIHN0YWNrIGFu ZCBub3QgYXMgdGhlCi1SSVAgdmFsdWUsIHRoZXkgYWN0dWFsbHkgcG9pbnQgdG8gdGhlIF9uZXh0 XyBpbnN0cnVjdGlvbiAodGhleSBhcmUgcmV0dXJuCi1hZGRyZXNzZXMpLiBUaGlzIGJlY29tZXMg b2J2aW91cyB3aGVuIHdlIGxvb2sgYXQgdGhlIGNvZGUgZm9yIGxpbmUgNDQ2OgotCi00MjIgaW50 IGRlcXVldWVfc2lnbmFsKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzaWdzZXRfdCAqbWFzaywg c2lnaW5mb190ICppbmZvKQotNDIzIHsKLS4uLgotNDMxICAgICAgICAgICAgICAgICBzaWduciA9 IF9fZGVxdWV1ZV9zaWduYWwoJnRzay0+c2lnbmFsLT5zaGFyZWRfcGVuZGluZywKLTQzMiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hc2ssIGluZm8pOwotNDMzICAg ICAgICAgICAgICAgICAvKgotNDM0ICAgICAgICAgICAgICAgICAgKiBpdGltZXIgc2lnbmFsID8K LTQzNSAgICAgICAgICAgICAgICAgICoKLTQzNiAgICAgICAgICAgICAgICAgICogaXRpbWVycyBh cmUgcHJvY2VzcyBzaGFyZWQgYW5kIHdlIHJlc3RhcnQgcGVyaW9kaWMKLTQzNyAgICAgICAgICAg ICAgICAgICogaXRpbWVycyBpbiB0aGUgc2lnbmFsIGRlbGl2ZXJ5IHBhdGggdG8gcHJldmVudCBE b1MKLTQzOCAgICAgICAgICAgICAgICAgICogYXR0YWNrcyBpbiB0aGUgaGlnaCByZXNvbHV0aW9u IHRpbWVyIGNhc2UuIFRoaXMgaXMKLTQzOSAgICAgICAgICAgICAgICAgICogY29tcGxpYW50IHdp dGggdGhlIG9sZCB3YXkgb2Ygc2VsZiByZXN0YXJ0aW5nCi00NDAgICAgICAgICAgICAgICAgICAq IGl0aW1lcnMsIGFzIHRoZSBTSUdBTFJNIGlzIGEgbGVnYWN5IHNpZ25hbCBhbmQgb25seQotNDQx ICAgICAgICAgICAgICAgICAgKiBxdWV1ZWQgb25jZS4gQ2hhbmdpbmcgdGhlIHJlc3RhcnQgYmVo YXZpb3VyIHRvCi00NDIgICAgICAgICAgICAgICAgICAqIHJlc3RhcnQgdGhlIHRpbWVyIGluIHRo ZSBzaWduYWwgZGVxdWV1ZSBwYXRoIGlzCi00NDMgICAgICAgICAgICAgICAgICAqIHJlZHVjaW5n IHRoZSB0aW1lciBub2lzZSBvbiBoZWF2eSBsb2FkZWQgIWhpZ2hyZXMKLTQ0NCAgICAgICAgICAg ICAgICAgICogc3lzdGVtcyB0b28uCi00NDUgICAgICAgICAgICAgICAgICAqLwotNDQ2ICAgICAg ICAgICAgICAgICBpZiAodW5saWtlbHkoc2lnbnIgPT0gU0lHQUxSTSkpIHsKLS4uLgotNDg5IH0K LQotU28gaW5zdGVhZCBvZiBsb29raW5nIGF0IDQ0Niwgd2Ugc2hvdWxkIGJlIGxvb2tpbmcgYXQg NDMxLCB3aGljaCBpcyB0aGUgbGluZQotdGhhdCBleGVjdXRlcyBqdXN0IGJlZm9yZSA0NDYuIEhl cmUgd2Ugc2VlIHRoYXQgd2hhdCB3ZSBhcmUgbG9va2luZyBmb3IgaXMKLSZ0c2stPnNpZ25hbC0+ c2hhcmVkX3BlbmRpbmcuCi0KLU91ciBuZXh0IHRhc2sgaXMgbm93IHRvIGZpZ3VyZSBvdXQgd2hp Y2ggZnVuY3Rpb24gdGhhdCBwdXRzIGl0ZW1zIG9uIHRoaXMKLSJzaGFyZWRfcGVuZGluZyIgbGlz dC4gQSBjcnVkZSwgYnV0IGVmZmljaWVudCB0b29sLCBpcyBnaXQgZ3JlcDoKLQotCSQgZ2l0IGdy ZXAgLW4gJ3NoYXJlZF9wZW5kaW5nJyBrZXJuZWwvCi0JLi4uCi0Ja2VybmVsL3NpZ25hbC5jOjgy ODogICAgcGVuZGluZyA9IGdyb3VwID8gJnQtPnNpZ25hbC0+c2hhcmVkX3BlbmRpbmcgOiAmdC0+ cGVuZGluZzsKLQlrZXJuZWwvc2lnbmFsLmM6MTMzOTogICBwZW5kaW5nID0gZ3JvdXAgPyAmdC0+ c2lnbmFsLT5zaGFyZWRfcGVuZGluZyA6ICZ0LT5wZW5kaW5nOwotCS4uLgotCi1UaGVyZSB3ZXJl IG1vcmUgcmVzdWx0cywgYnV0IG5vbmUgb2YgdGhlbSB3ZXJlIHJlbGF0ZWQgdG8gbGlzdCBvcGVy YXRpb25zLAotYW5kIHRoZXNlIHdlcmUgdGhlIG9ubHkgYXNzaWdubWVudHMuIFdlIGluc3BlY3Qg dGhlIGxpbmUgbnVtYmVycyBtb3JlIGNsb3NlbHkKLWFuZCBmaW5kIHRoYXQgdGhpcyBpcyBpbmRl ZWQgd2hlcmUgaXRlbXMgYXJlIGJlaW5nIGFkZGVkIHRvIHRoZSBsaXN0OgotCi04MTYgc3RhdGlj IGludCBzZW5kX3NpZ25hbChpbnQgc2lnLCBzdHJ1Y3Qgc2lnaW5mbyAqaW5mbywgc3RydWN0IHRh c2tfc3RydWN0ICp0LAotODE3ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBncm91cCkKLTgx OCB7Ci0uLi4KLTgyOCAgICAgICAgIHBlbmRpbmcgPSBncm91cCA/ICZ0LT5zaWduYWwtPnNoYXJl ZF9wZW5kaW5nIDogJnQtPnBlbmRpbmc7Ci0uLi4KLTg1MSAgICAgICAgIHEgPSBfX3NpZ3F1ZXVl X2FsbG9jKHQsIEdGUF9BVE9NSUMsIChzaWcgPCBTSUdSVE1JTiAmJgotODUyICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpc19zaV9zcGVjaWFsKGluZm8pIHx8 Ci04NTMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8t PnNpX2NvZGUgPj0gMCkpKTsKLTg1NCAgICAgICAgIGlmIChxKSB7Ci04NTUgICAgICAgICAgICAg ICAgIGxpc3RfYWRkX3RhaWwoJnEtPmxpc3QsICZwZW5kaW5nLT5saXN0KTsKLS4uLgotODkwIH0K LQotYW5kOgotCi0xMzA5IGludCBzZW5kX3NpZ3F1ZXVlKHN0cnVjdCBzaWdxdWV1ZSAqcSwgc3Ry dWN0IHRhc2tfc3RydWN0ICp0LCBpbnQgZ3JvdXApCi0xMzEwIHsKLS4uLi4KLTEzMzkgICAgICAg ICBwZW5kaW5nID0gZ3JvdXAgPyAmdC0+c2lnbmFsLT5zaGFyZWRfcGVuZGluZyA6ICZ0LT5wZW5k aW5nOwotMTM0MCAgICAgICAgIGxpc3RfYWRkX3RhaWwoJnEtPmxpc3QsICZwZW5kaW5nLT5saXN0 KTsKLS4uLi4KLTEzNDcgfQotCi1JbiB0aGUgZmlyc3QgY2FzZSwgdGhlIGxpc3QgZWxlbWVudCB3 ZSBhcmUgbG9va2luZyBmb3IsICJxIiwgaXMgYmVpbmcgcmV0dXJuZWQKLWZyb20gdGhlIGZ1bmN0 aW9uIF9fc2lncXVldWVfYWxsb2MoKSwgd2hpY2ggbG9va3MgbGlrZSBhbiBhbGxvY2F0aW9uIGZ1 bmN0aW9uLgotTGV0J3MgdGFrZSBhIGxvb2sgYXQgaXQ6Ci0KLTE4NyBzdGF0aWMgc3RydWN0IHNp Z3F1ZXVlICpfX3NpZ3F1ZXVlX2FsbG9jKHN0cnVjdCB0YXNrX3N0cnVjdCAqdCwgZ2ZwX3QgZmxh Z3MsCi0xODggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3Zl cnJpZGVfcmxpbWl0KQotMTg5IHsKLTE5MCAgICAgICAgIHN0cnVjdCBzaWdxdWV1ZSAqcSA9IE5V TEw7Ci0xOTEgICAgICAgICBzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXI7Ci0xOTIgCi0xOTMgICAg ICAgICAvKgotMTk0ICAgICAgICAgICogV2Ugd29uJ3QgZ2V0IHByb2JsZW1zIHdpdGggdGhlIHRh cmdldCdzIFVJRCBjaGFuZ2luZyB1bmRlciB1cwotMTk1ICAgICAgICAgICogYmVjYXVzZSBjaGFu Z2luZyBpdCByZXF1aXJlcyBSQ1UgYmUgdXNlZCwgYW5kIGlmIHQgIT0gY3VycmVudCwgdGhlCi0x OTYgICAgICAgICAgKiBjYWxsZXIgbXVzdCBiZSBob2xkaW5nIHRoZSBSQ1UgcmVhZGxvY2sgKGJ5 IHdheSBvZiBhIHNwaW5sb2NrKSBhbmQKLTE5NyAgICAgICAgICAqIHdlIHVzZSBSQ1UgcHJvdGVj dGlvbiBoZXJlCi0xOTggICAgICAgICAgKi8KLTE5OSAgICAgICAgIHVzZXIgPSBnZXRfdWlkKF9f dGFza19jcmVkKHQpLT51c2VyKTsKLTIwMCAgICAgICAgIGF0b21pY19pbmMoJnVzZXItPnNpZ3Bl bmRpbmcpOwotMjAxICAgICAgICAgaWYgKG92ZXJyaWRlX3JsaW1pdCB8fAotMjAyICAgICAgICAg ICAgIGF0b21pY19yZWFkKCZ1c2VyLT5zaWdwZW5kaW5nKSA8PQotMjAzICAgICAgICAgICAgICAg ICAgICAgICAgIHQtPnNpZ25hbC0+cmxpbVtSTElNSVRfU0lHUEVORElOR10ucmxpbV9jdXIpCi0y MDQgICAgICAgICAgICAgICAgIHEgPSBrbWVtX2NhY2hlX2FsbG9jKHNpZ3F1ZXVlX2NhY2hlcCwg ZmxhZ3MpOwotMjA1ICAgICAgICAgaWYgKHVubGlrZWx5KHEgPT0gTlVMTCkpIHsKLTIwNiAgICAg ICAgICAgICAgICAgYXRvbWljX2RlYygmdXNlci0+c2lncGVuZGluZyk7Ci0yMDcgICAgICAgICAg ICAgICAgIGZyZWVfdWlkKHVzZXIpOwotMjA4ICAgICAgICAgfSBlbHNlIHsKLTIwOSAgICAgICAg ICAgICAgICAgSU5JVF9MSVNUX0hFQUQoJnEtPmxpc3QpOwotMjEwICAgICAgICAgICAgICAgICBx LT5mbGFncyA9IDA7Ci0yMTEgICAgICAgICAgICAgICAgIHEtPnVzZXIgPSB1c2VyOwotMjEyICAg ICAgICAgfQotMjEzIAotMjE0ICAgICAgICAgcmV0dXJuIHE7Ci0yMTUgfQotCi1XZSBzZWUgdGhh dCB0aGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIHEtPmxpc3QsIHEtPmZsYWdzLCBhbmQgcS0+dXNl ci4gSXQgc2VlbXMKLXRoYXQgbm93IGlzIHRoZSB0aW1lIHRvIGxvb2sgYXQgdGhlIGRlZmluaXRp b24gb2YgInN0cnVjdCBzaWdxdWV1ZSIsIGUuZy46Ci0KLTE0IHN0cnVjdCBzaWdxdWV1ZSB7Ci0x NSAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKLTE2ICAgICAgICAgaW50IGZsYWdzOwot MTcgICAgICAgICBzaWdpbmZvX3QgaW5mbzsKLTE4ICAgICAgICAgc3RydWN0IHVzZXJfc3RydWN0 ICp1c2VyOwotMTkgfTsKLQotQW5kLCB5b3UgbWlnaHQgcmVtZW1iZXIsIGl0IHdhcyBhIG1lbWNw eSgpIG9uICZmaXJzdC0+aW5mbyB0aGF0IGNhdXNlZCB0aGUKLXdhcm5pbmcsIHNvIHRoaXMgbWFr ZXMgcGVyZmVjdCBzZW5zZS4gSXQgYWxzbyBzZWVtcyByZWFzb25hYmxlIHRvIGFzc3VtZSB0aGF0 Ci1pdCBpcyB0aGUgY2FsbGVyIG9mIF9fc2lncXVldWVfYWxsb2MoKSB0aGF0IGhhcyB0aGUgcmVz cG9uc2liaWxpdHkgb2YgZmlsbGluZwotb3V0IChpbml0aWFsaXppbmcpIHRoaXMgbWVtYmVyLgot Ci1CdXQganVzdCB3aGljaCBmaWVsZHMgb2YgdGhlIHN0cnVjdCB3ZXJlIHVuaW5pdGlhbGl6ZWQ/ IExldCdzIGxvb2sgYXQKLWttZW1jaGVjaydzIHJlcG9ydCBhZ2FpbjoKLQotV0FSTklORzoga21l bWNoZWNrOiBDYXVnaHQgMzItYml0IHJlYWQgZnJvbSB1bmluaXRpYWxpemVkIG1lbW9yeSAoZmZm Zjg4MDAzZTRhMjAyNCkKLTgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDg4ZmZmZjAwMDAwMDAwMDAwMDAwMDAKLSBpIGkgaSBpIHUgdSB1IHUgaSBpIGkgaSBpIGkgaSBp IHUgdSB1IHUgdSB1IHUgdSB1IHUgdSB1IHUgdSB1IHUKLSAgICAgICAgIF4KLQotVGhlc2UgZmly c3QgdHdvIGxpbmVzIGFyZSB0aGUgbWVtb3J5IGR1bXAgb2YgdGhlIG1lbW9yeSBvYmplY3QgaXRz ZWxmLCBhbmQgdGhlCi1zaGFkb3cgYnl0ZW1hcCwgcmVzcGVjdGl2ZWx5LiBUaGUgbWVtb3J5IG9i amVjdCBpdHNlbGYgaXMgaW4gdGhpcyBjYXNlCi0mZmlyc3QtPmluZm8uIEp1c3QgYmV3YXJlIHRo YXQgdGhlIHN0YXJ0IG9mIHRoaXMgZHVtcCBpcyBOT1QgdGhlIHN0YXJ0IG9mIHRoZQotb2JqZWN0 IGl0c2VsZiEgVGhlIHBvc2l0aW9uIG9mIHRoZSBjYXJldCAoXikgY29ycmVzcG9uZHMgd2l0aCB0 aGUgYWRkcmVzcyBvZgotdGhlIHJlYWQgKGZmZmY4ODAwM2U0YTIwMjQpLgotCi1UaGUgc2hhZG93 IGJ5dGVtYXAgZHVtcCBsZWdlbmQgaXMgYXMgZm9sbG93czoKLQotICBpIC0gaW5pdGlhbGl6ZWQK LSAgdSAtIHVuaW5pdGlhbGl6ZWQKLSAgYSAtIHVuYWxsb2NhdGVkIChtZW1vcnkgaGFzIGJlZW4g YWxsb2NhdGVkIGJ5IHRoZSBzbGFiIGxheWVyLCBidXQgaGFzIG5vdAotICAgICAgeWV0IGJlZW4g aGFuZGVkIG9mZiB0byBhbnlib2R5KQotICBmIC0gZnJlZWQgKG1lbW9yeSBoYXMgYmVlbiBhbGxv Y2F0ZWQgYnkgdGhlIHNsYWIgbGF5ZXIsIGJ1dCBoYXMgYmVlbiBmcmVlZAotICAgICAgYnkgdGhl IHByZXZpb3VzIG93bmVyKQotCi1JbiBvcmRlciB0byBmaWd1cmUgb3V0IHdoZXJlIChyZWxhdGl2 ZSB0byB0aGUgc3RhcnQgb2YgdGhlIG9iamVjdCkgdGhlCi11bmluaXRpYWxpemVkIG1lbW9yeSB3 YXMgbG9jYXRlZCwgd2UgaGF2ZSB0byBsb29rIGF0IHRoZSBkaXNhc3NlbWJseS4gRm9yCi10aGF0 LCB3ZSdsbCBuZWVkIHRoZSBSSVAgYWRkcmVzcyBhZ2FpbjoKLQotUklQOiAwMDEwOls8ZmZmZmZm ZmY4MTA0ZWRlOD5dICBbPGZmZmZmZmZmODEwNGVkZTg+XSBfX2RlcXVldWVfc2lnbmFsKzB4Yzgv MHgxOTAKLQotCSQgb2JqZHVtcCAtZCAtLW5vLXNob3ctcmF3LWluc24gdm1saW51eCB8IGdyZXAg LUMgOCBmZmZmZmZmZjgxMDRlZGU4OgotCWZmZmZmZmZmODEwNGVkYzg6ICAgICAgIG1vdiAgICAl cjgsMHg4KCVyOCkKLQlmZmZmZmZmZjgxMDRlZGNjOiAgICAgICB0ZXN0ICAgJXIxMGQsJXIxMGQK LQlmZmZmZmZmZjgxMDRlZGNmOiAgICAgICBqcyAgICAgZmZmZmZmZmY4MTA0ZWU4OCA8X19kZXF1 ZXVlX3NpZ25hbCsweDE2OD4KLQlmZmZmZmZmZjgxMDRlZGQ1OiAgICAgICBtb3YgICAgJXJheCwl cmR4Ci0JZmZmZmZmZmY4MTA0ZWRkODogICAgICAgbW92ICAgICQweGMsJWVjeAotCWZmZmZmZmZm ODEwNGVkZGQ6ICAgICAgIG1vdiAgICAlcjEzLCVyZGkKLQlmZmZmZmZmZjgxMDRlZGUwOiAgICAg ICBtb3YgICAgJDB4MzAsJWVheAotCWZmZmZmZmZmODEwNGVkZTU6ICAgICAgIG1vdiAgICAlcmR4 LCVyc2kKLQlmZmZmZmZmZjgxMDRlZGU4OiAgICAgICByZXAgbW92c2wgJWRzOiglcnNpKSwlZXM6 KCVyZGkpCi0JZmZmZmZmZmY4MTA0ZWRlYTogICAgICAgdGVzdCAgICQweDIsJWFsCi0JZmZmZmZm ZmY4MTA0ZWRlYzogICAgICAgamUgICAgIGZmZmZmZmZmODEwNGVkZjAgPF9fZGVxdWV1ZV9zaWdu YWwrMHhkMD4KLQlmZmZmZmZmZjgxMDRlZGVlOiAgICAgICBtb3ZzdyAgJWRzOiglcnNpKSwlZXM6 KCVyZGkpCi0JZmZmZmZmZmY4MTA0ZWRmMDogICAgICAgdGVzdCAgICQweDEsJWFsCi0JZmZmZmZm ZmY4MTA0ZWRmMjogICAgICAgamUgICAgIGZmZmZmZmZmODEwNGVkZjUgPF9fZGVxdWV1ZV9zaWdu YWwrMHhkNT4KLQlmZmZmZmZmZjgxMDRlZGY0OiAgICAgICBtb3ZzYiAgJWRzOiglcnNpKSwlZXM6 KCVyZGkpCi0JZmZmZmZmZmY4MTA0ZWRmNTogICAgICAgbW92ICAgICVyOCwlcmRpCi0JZmZmZmZm ZmY4MTA0ZWRmODogICAgICAgY2FsbHEgIGZmZmZmZmZmODEwNGRlNjAgPF9fc2lncXVldWVfZnJl ZT4KLQotQXMgZXhwZWN0ZWQsIGl0J3MgdGhlICJyZXAgbW92c2wiIGluc3RydWN0aW9uIGZyb20g dGhlIG1lbWNweSgpIHRoYXQgY2F1c2VzCi10aGUgd2FybmluZy4gV2Uga25vdyBhYm91dCBSRVAg TU9WU0wgdGhhdCBpdCB1c2VzIHRoZSByZWdpc3RlciBSQ1ggdG8gY291bnQKLXRoZSBudW1iZXIg b2YgcmVtYWluaW5nIGl0ZXJhdGlvbnMuIEJ5IHRha2luZyBhIGxvb2sgYXQgdGhlIHJlZ2lzdGVy IGR1bXAKLWFnYWluIChmcm9tIHRoZSBrbWVtY2hlY2sgcmVwb3J0KSwgd2UgY2FuIGZpZ3VyZSBv dXQgaG93IG1hbnkgYnl0ZXMgd2VyZSBsZWZ0Ci10byBjb3B5OgotCi1SQVg6IDAwMDAwMDAwMDAw MDAwMzAgUkJYOiBmZmZmODgwMDNkNGVhOTY4IFJDWDogMDAwMDAwMDAwMDAwMDAwOQotCi1CeSBs b29raW5nIGF0IHRoZSBkaXNhc3NlbWJseSwgd2UgYWxzbyBzZWUgdGhhdCAlZWN4IGlzIGJlaW5n IGxvYWRlZCB3aXRoIHRoZQotdmFsdWUgJDB4YyBqdXN0IGJlZm9yZSAoZmZmZmZmZmY4MTA0ZWRk OCksIHNvIHdlIGFyZSB2ZXJ5IGx1Y2t5LiBLZWVwIGluIG1pbmQKLXRoYXQgdGhpcyBpcyB0aGUg bnVtYmVyIG9mIGl0ZXJhdGlvbnMsIG5vdCBieXRlcy4gQW5kIHNpbmNlIHRoaXMgaXMgYSAibG9u ZyIKLW9wZXJhdGlvbiwgd2UgbmVlZCB0byBtdWx0aXBseSBieSA0IHRvIGdldCB0aGUgbnVtYmVy IG9mIGJ5dGVzLiBTbyB0aGlzIG1lYW5zCi10aGF0IHRoZSB1bmluaXRpYWxpemVkIHZhbHVlIHdh cyBlbmNvdW50ZXJlZCBhdCA0ICogKDB4YyAtIDB4OSkgPSAxMiBieXRlcwotZnJvbSB0aGUgc3Rh cnQgb2YgdGhlIG9iamVjdC4KLQotV2UgY2FuIG5vdyB0cnkgdG8gZmlndXJlIG91dCB3aGljaCBm aWVsZCBvZiB0aGUgInN0cnVjdCBzaWdpbmZvIiB0aGF0IHdhcyBub3QKLWluaXRpYWxpemVkLiBU aGlzIGlzIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cnVjdDoKLQotNDAgdHlwZWRlZiBzdHJ1Y3Qg c2lnaW5mbyB7Ci00MSAgICAgICAgIGludCBzaV9zaWdubzsKLTQyICAgICAgICAgaW50IHNpX2Vy cm5vOwotNDMgICAgICAgICBpbnQgc2lfY29kZTsKLTQ0ICAgICAgICAgICAgICAgICAKLTQ1ICAg ICAgICAgdW5pb24gewotLi4KLTkyICAgICAgICAgfSBfc2lmaWVsZHM7Ci05MyB9IHNpZ2luZm9f dDsKLQotT24gNjQtYml0LCB0aGUgaW50IGlzIDQgYnl0ZXMgbG9uZywgc28gaXQgbXVzdCB0aGUg dW5pb24gbWVtYmVyIHRoYXQgaGFzCi1ub3QgYmVlbiBpbml0aWFsaXplZC4gV2UgY2FuIHZlcmlm eSB0aGlzIHVzaW5nIGdkYjoKLQotCSQgZ2RiIHZtbGludXgKLQkuLi4KLQkoZ2RiKSBwICYoKHN0 cnVjdCBzaWdpbmZvICopIDApLT5fc2lmaWVsZHMKLQkkMSA9ICh1bmlvbiB7Li4ufSAqKSAweDEw Ci0KLUFjdHVhbGx5LCBpdCBzZWVtcyB0aGF0IHRoZSB1bmlvbiBtZW1iZXIgaXMgbG9jYXRlZCBh dCBvZmZzZXQgMHgxMCAtLSB3aGljaAotbWVhbnMgdGhhdCBnY2MgaGFzIGluc2VydGVkIDQgYnl0 ZXMgb2YgcGFkZGluZyBiZXR3ZWVuIHRoZSBtZW1iZXJzIHNpX2NvZGUKLWFuZCBfc2lmaWVsZHMu IFdlIGNhbiBub3cgZ2V0IGEgZnVsbGVyIHBpY3R1cmUgb2YgdGhlIG1lbW9yeSBkdW1wOgotCi0g ICAgICAgICBfLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT0+IHNpX2NvZGUKLSAgICAgICAg LyAgICAgICAgXy0tLS0tLS0tLS0tLS0tLS0tLS0tPT4gKHBhZGRpbmcpCi0gICAgICAgfCAgICAg ICAgLyAgICAgICAgXy0tLS0tLS0tLS0tLT0+IF9zaWZpZWxkcyguX2tpbGwuX3BpZCkKLSAgICAg ICB8ICAgICAgIHwgICAgICAgIC8gICAgICAgIF8tLS0tPT4gX3NpZmllbGRzKC5fa2lsbC5fdWlk KQotICAgICAgIHwgICAgICAgfCAgICAgICB8ICAgICAgICAvIAotLS0tLS0tLXwtLS0tLS0tfC0t LS0tLS18LS0tLS0tLXwKLTgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDg4ZmZmZjAwMDAwMDAwMDAwMDAwMDAKLSBpIGkgaSBpIHUgdSB1IHUgaSBpIGkgaSBpIGkgaSBp IHUgdSB1IHUgdSB1IHUgdSB1IHUgdSB1IHUgdSB1IHUKLQotVGhpcyBhbGxvd3MgdXMgdG8gcmVh bGl6ZSBhbm90aGVyIGltcG9ydGFudCBmYWN0OiBzaV9jb2RlIGNvbnRhaW5zIHRoZSB2YWx1ZQot MHg4MC4gUmVtZW1iZXIgdGhhdCB4ODYgaXMgbGl0dGxlIGVuZGlhbiwgc28gdGhlIGZpcnN0IDQg Ynl0ZXMgIjgwMDAwMDAwIiBhcmUKLXJlYWxseSB0aGUgbnVtYmVyIDB4MDAwMDAwODAuIFdpdGgg YSBiaXQgb2YgcmVzZWFyY2gsIHdlIGZpbmQgdGhhdCB0aGlzIGlzCi1hY3R1YWxseSB0aGUgY29u c3RhbnQgU0lfS0VSTkVMIGRlZmluZWQgaW4gaW5jbHVkZS9hc20tZ2VuZXJpYy9zaWdpbmZvLmg6 Ci0KLTE0NCAjZGVmaW5lIFNJX0tFUk5FTCAgICAgICAweDgwICAgICAgICAgICAgLyogc2VudCBi eSB0aGUga2VybmVsIGZyb20gc29tZXdoZXJlICAgICAqLwotCi1UaGlzIG1hY3JvIGlzIHVzZWQg aW4gZXhhY3RseSBvbmUgcGxhY2UgaW4gdGhlIHg4NiBrZXJuZWw6IEluIHNlbmRfc2lnbmFsKCkK LWluIGtlcm5lbC9zaWduYWwuYzoKLQotODE2IHN0YXRpYyBpbnQgc2VuZF9zaWduYWwoaW50IHNp Zywgc3RydWN0IHNpZ2luZm8gKmluZm8sIHN0cnVjdCB0YXNrX3N0cnVjdCAqdCwKLTgxNyAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgZ3JvdXApCi04MTggewotLi4uCi04MjggICAgICAgICBw ZW5kaW5nID0gZ3JvdXAgPyAmdC0+c2lnbmFsLT5zaGFyZWRfcGVuZGluZyA6ICZ0LT5wZW5kaW5n OwotLi4uCi04NTEgICAgICAgICBxID0gX19zaWdxdWV1ZV9hbGxvYyh0LCBHRlBfQVRPTUlDLCAo c2lnIDwgU0lHUlRNSU4gJiYKLTg1MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoaXNfc2lfc3BlY2lhbChpbmZvKSB8fAotODUzICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLT5zaV9jb2RlID49IDApKSk7Ci04NTQg ICAgICAgICBpZiAocSkgewotODU1ICAgICAgICAgICAgICAgICBsaXN0X2FkZF90YWlsKCZxLT5s aXN0LCAmcGVuZGluZy0+bGlzdCk7Ci04NTYgICAgICAgICAgICAgICAgIHN3aXRjaCAoKHVuc2ln bmVkIGxvbmcpIGluZm8pIHsKLS4uLgotODY1ICAgICAgICAgICAgICAgICBjYXNlICh1bnNpZ25l ZCBsb25nKSBTRU5EX1NJR19QUklWOgotODY2ICAgICAgICAgICAgICAgICAgICAgICAgIHEtPmlu Zm8uc2lfc2lnbm8gPSBzaWc7Ci04NjcgICAgICAgICAgICAgICAgICAgICAgICAgcS0+aW5mby5z aV9lcnJubyA9IDA7Ci04NjggICAgICAgICAgICAgICAgICAgICAgICAgcS0+aW5mby5zaV9jb2Rl ID0gU0lfS0VSTkVMOwotODY5ICAgICAgICAgICAgICAgICAgICAgICAgIHEtPmluZm8uc2lfcGlk ID0gMDsKLTg3MCAgICAgICAgICAgICAgICAgICAgICAgICBxLT5pbmZvLnNpX3VpZCA9IDA7Ci04 NzEgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0uLi4KLTg5MCB9Ci0KLU5vdCBvbmx5 IGRvZXMgdGhpcyBtYXRjaCB3aXRoIHRoZSAuc2lfY29kZSBtZW1iZXIsIGl0IGFsc28gbWF0Y2hl cyB0aGUgcGxhY2UKLXdlIGZvdW5kIGVhcmxpZXIgd2hlbiBsb29raW5nIGZvciB3aGVyZSBzaWdp bmZvX3Qgb2JqZWN0cyBhcmUgZW5xdWV1ZWQgb24gdGhlCi0ic2hhcmVkX3BlbmRpbmciIGxpc3Qu Ci0KLVNvIHRvIHN1bSB1cDogSXQgc2VlbXMgdGhhdCBpdCBpcyB0aGUgcGFkZGluZyBpbnRyb2R1 Y2VkIGJ5IHRoZSBjb21waWxlcgotYmV0d2VlbiB0d28gc3RydWN0IGZpZWxkcyB0aGF0IGlzIHVu aW5pdGlhbGl6ZWQsIGFuZCB0aGlzIGdldHMgcmVwb3J0ZWQgd2hlbgotd2UgZG8gYSBtZW1jcHko KSBvbiB0aGUgc3RydWN0LiBUaGlzIG1lYW5zIHRoYXQgd2UgaGF2ZSBpZGVudGlmaWVkIGEgZmFs c2UKLXBvc2l0aXZlIHdhcm5pbmcuCi0KLU5vcm1hbGx5LCBrbWVtY2hlY2sgd2lsbCBub3QgcmVw b3J0IHVuaW5pdGlhbGl6ZWQgYWNjZXNzZXMgaW4gbWVtY3B5KCkgY2FsbHMKLXdoZW4gYm90aCB0 aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBhZGRyZXNzZXMgYXJlIHRyYWNrZWQuIChJbnN0ZWFk LCB3ZSBjb3B5Ci10aGUgc2hhZG93IGJ5dGVtYXAgYXMgd2VsbCkuIEluIHRoaXMgY2FzZSwgdGhl IGRlc3RpbmF0aW9uIGFkZHJlc3MgY2xlYXJseQotd2FzIG5vdCB0cmFja2VkLiBXZSBjYW4gZGln IGEgbGl0dGxlIGRlZXBlciBpbnRvIHRoZSBzdGFjayB0cmFjZSBmcm9tIGFib3ZlOgotCi0JYXJj aC94ODYva2VybmVsL3NpZ25hbC5jOjgwNQotCWFyY2gveDg2L2tlcm5lbC9zaWduYWwuYzo4NzEK LQlhcmNoL3g4Ni9rZXJuZWwvZW50cnlfNjQuUzo2OTQKLQotQW5kIHdlIGNsZWFybHkgc2VlIHRo YXQgdGhlIGRlc3RpbmF0aW9uIHNpZ2luZm8gb2JqZWN0IGlzIGxvY2F0ZWQgb24gdGhlCi1zdGFj azoKLQotNzgyIHN0YXRpYyB2b2lkIGRvX3NpZ25hbChzdHJ1Y3QgcHRfcmVncyAqcmVncykKLTc4 MyB7Ci03ODQgICAgICAgICBzdHJ1Y3Qga19zaWdhY3Rpb24ga2E7Ci03ODUgICAgICAgICBzaWdp bmZvX3QgaW5mbzsKLS4uLgotODA0ICAgICAgICAgc2lnbnIgPSBnZXRfc2lnbmFsX3RvX2RlbGl2 ZXIoJmluZm8sICZrYSwgcmVncywgTlVMTCk7Ci0uLi4KLTg1NCB9Ci0KLUFuZCB0aGlzICZpbmZv IGlzIHdoYXQgZXZlbnR1YWxseSBnZXRzIHBhc3NlZCB0byBjb3B5X3NpZ2luZm8oKSBhcyB0aGUK LWRlc3RpbmF0aW9uIGFyZ3VtZW50LgotCi1Ob3csIGV2ZW4gdGhvdWdoIHdlIGRpZG4ndCBmaW5k IGFuIGFjdHVhbCBlcnJvciBoZXJlLCB0aGUgZXhhbXBsZSBpcyBzdGlsbCBhCi1nb29kIG9uZSwg YmVjYXVzZSBpdCBzaG93cyBob3cgb25lIHdvdWxkIGdvIGFib3V0IHRvIGZpbmQgb3V0IHdoYXQg dGhlIHJlcG9ydAotd2FzIGFsbCBhYm91dC4KLQotCi0zLjQuIEFubm90YXRpbmcgZmFsc2UgcG9z aXRpdmVzCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLVRoZXJlIGFyZSBhIGZl dyBkaWZmZXJlbnQgd2F5cyB0byBtYWtlIGFubm90YXRpb25zIGluIHRoZSBzb3VyY2UgY29kZSB0 aGF0Ci13aWxsIGtlZXAga21lbWNoZWNrIGZyb20gY2hlY2tpbmcgYW5kIHJlcG9ydGluZyBjZXJ0 YWluIGFsbG9jYXRpb25zLiBIZXJlCi10aGV5IGFyZToKLQotICBvIF9fR0ZQX05PVFJBQ0tfRkFM U0VfUE9TSVRJVkUKLQotCVRoaXMgZmxhZyBjYW4gYmUgcGFzc2VkIHRvIGttYWxsb2MoKSBvciBr bWVtX2NhY2hlX2FsbG9jKCkgKHRoZXJlZm9yZQotCWFsc28gdG8gb3RoZXIgZnVuY3Rpb25zIHRo YXQgZW5kIHVwIGNhbGxpbmcgb25lIG9mIHRoZXNlKSB0byBpbmRpY2F0ZQotCXRoYXQgdGhlIGFs bG9jYXRpb24gc2hvdWxkIG5vdCBiZSB0cmFja2VkIGJlY2F1c2UgaXQgd291bGQgbGVhZCB0bwot CWEgZmFsc2UgcG9zaXRpdmUgcmVwb3J0LiBUaGlzIGlzIGEgImJpZyBoYW1tZXIiIHdheSBvZiBz aWxlbmNpbmcKLQlrbWVtY2hlY2s7IGFmdGVyIGFsbCwgZXZlbiBpZiB0aGUgZmFsc2UgcG9zaXRp dmUgcGVydGFpbnMgdG8gCi0JcGFydGljdWxhciBmaWVsZCBpbiBhIHN0cnVjdCwgZm9yIGV4YW1w bGUsIHdlIHdpbGwgbm93IGxvc2UgdGhlCi0JYWJpbGl0eSB0byBmaW5kIChyZWFsKSBlcnJvcnMg aW4gb3RoZXIgcGFydHMgb2YgdGhlIHNhbWUgc3RydWN0LgotCi0JRXhhbXBsZToKLQotCSAgICAv KiBObyB3YXJuaW5ncyB3aWxsIGV2ZXIgdHJpZ2dlciBvbiBhY2Nlc3NpbmcgYW55IHBhcnQgb2Yg eCAqLwotCSAgICB4ID0ga21hbGxvYyhzaXplb2YgKngsIEdGUF9LRVJORUwgfCBfX0dGUF9OT1RS QUNLX0ZBTFNFX1BPU0lUSVZFKTsKLQotICBvIGttZW1jaGVja19iaXRmaWVsZF9iZWdpbihuYW1l KS9rbWVtY2hlY2tfYml0ZmllbGRfZW5kKG5hbWUpIGFuZAotCWttZW1jaGVja19hbm5vdGF0ZV9i aXRmaWVsZChwdHIsIG5hbWUpCi0KLQlUaGUgZmlyc3QgdHdvIG9mIHRoZXNlIHRocmVlIG1hY3Jv cyBjYW4gYmUgdXNlZCBpbnNpZGUgc3RydWN0Ci0JZGVmaW5pdGlvbnMgdG8gc2lnbmFsLCByZXNw ZWN0aXZlbHksIHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiBhCi0JYml0ZmllbGQuIEFkZGl0aW9u YWxseSwgdGhpcyB3aWxsIGFzc2lnbiB0aGUgYml0ZmllbGQgYSBuYW1lLCB3aGljaAotCWlzIGdp dmVuIGFzIGFuIGFyZ3VtZW50IHRvIHRoZSBtYWNyb3MuCi0KLQlIYXZpbmcgdXNlZCB0aGVzZSBt YXJrZXJzLCBvbmUgY2FuIGxhdGVyIHVzZQotCWttZW1jaGVja19hbm5vdGF0ZV9iaXRmaWVsZCgp IGF0IHRoZSBwb2ludCBvZiBhbGxvY2F0aW9uLCB0byBpbmRpY2F0ZQotCXdoaWNoIHBhcnRzIG9m IHRoZSBhbGxvY2F0aW9uIGlzIHBhcnQgb2YgYSBiaXRmaWVsZC4KLQotCUV4YW1wbGU6Ci0KLQkg ICAgc3RydWN0IGZvbyB7Ci0JCWludCB4OwotCi0JCWttZW1jaGVja19iaXRmaWVsZF9iZWdpbihm bGFncyk7Ci0JCWludCBmbGFnX2E6MTsKLQkJaW50IGZsYWdfYjoxOwotCQlrbWVtY2hlY2tfYml0 ZmllbGRfZW5kKGZsYWdzKTsKLQotCQlpbnQgeTsKLQkgICAgfTsKLQotCSAgICBzdHJ1Y3QgZm9v ICp4ID0ga21hbGxvYyhzaXplb2YgKngpOwotCi0JICAgIC8qIE5vIHdhcm5pbmdzIHdpbGwgdHJp Z2dlciBvbiBhY2Nlc3NpbmcgdGhlIGJpdGZpZWxkIG9mIHggKi8KLQkgICAga21lbWNoZWNrX2Fu bm90YXRlX2JpdGZpZWxkKHgsIGZsYWdzKTsKLQotCU5vdGUgdGhhdCBrbWVtY2hlY2tfYW5ub3Rh dGVfYml0ZmllbGQoKSBjYW4gYmUgdXNlZCBldmVuIGJlZm9yZSB0aGUKLQlyZXR1cm4gdmFsdWUg b2Yga21hbGxvYygpIGlzIGNoZWNrZWQgLS0gaW4gb3RoZXIgd29yZHMsIHBhc3NpbmcgTlVMTAot CWFzIHRoZSBmaXJzdCBhcmd1bWVudCBpcyBsZWdhbCAoYW5kIHdpbGwgZG8gbm90aGluZykuCi0K LQotNC4gUmVwb3J0aW5nIGVycm9ycwotPT09PT09PT09PT09PT09PT09PQotCi1BcyB3ZSBoYXZl IHNlZW4sIGttZW1jaGVjayB3aWxsIHByb2R1Y2UgZmFsc2UgcG9zaXRpdmUgcmVwb3J0cy4gVGhl cmVmb3JlLCBpdAotaXMgbm90IHZlcnkgd2lzZSB0byBibGluZGx5IHBvc3Qga21lbWNoZWNrIHdh cm5pbmdzIHRvIG1haWxpbmcgbGlzdHMgYW5kCi1tYWludGFpbmVycy4gSW5zdGVhZCwgSSBlbmNv dXJhZ2UgbWFpbnRhaW5lcnMgYW5kIGRldmVsb3BlcnMgdG8gZmluZCBlcnJvcnMKLWluIHRoZWly IG93biBjb2RlLiBJZiB5b3UgZ2V0IGEgd2FybmluZywgeW91IGNhbiB0cnkgdG8gd29yayBhcm91 bmQgaXQsIHRyeQotdG8gZmlndXJlIG91dCBpZiBpdCdzIGEgcmVhbCBlcnJvciBvciBub3QsIG9y IHNpbXBseSBpZ25vcmUgaXQuIE1vc3QKLWRldmVsb3BlcnMga25vdyB0aGVpciBvd24gY29kZSBh bmQgd2lsbCBxdWlja2x5IGFuZCBlZmZpY2llbnRseSBkZXRlcm1pbmUgdGhlCi1yb290IGNhdXNl IG9mIGEga21lbWNoZWNrIHJlcG9ydC4gVGhpcyBpcyB0aGVyZWZvcmUgYWxzbyB0aGUgbW9zdCBl ZmZpY2llbnQKLXdheSB0byB3b3JrIHdpdGgga21lbWNoZWNrLgotCi1UaGF0IHNhaWQsIHdlICh0 aGUga21lbWNoZWNrIG1haW50YWluZXJzKSB3aWxsIGFsd2F5cyBiZSBvbiB0aGUgbG9va291dCBm b3IKLWZhbHNlIHBvc2l0aXZlcyB0aGF0IHdlIGNhbiBhbm5vdGF0ZSBhbmQgc2lsZW5jZS4gU28g d2hhdGV2ZXIgeW91IGZpbmQsCi1wbGVhc2UgZHJvcCB1cyBhIG5vdGUgcHJpdmF0ZWx5ISBLZXJu ZWwgY29uZmlncyBhbmQgc3RlcHMgdG8gcmVwcm9kdWNlIChpZgotYXZhaWxhYmxlKSBhcmUgb2Yg Y291cnNlIGEgZ3JlYXQgaGVscCB0b28uCi0KLUhhcHB5IGhhY2tpbmchCi0KLQotNS4gVGVjaG5p Y2FsIGRlc2NyaXB0aW9uCi09PT09PT09PT09PT09PT09PT09PT09PT0KLQota21lbWNoZWNrIHdv cmtzIGJ5IG1hcmtpbmcgbWVtb3J5IHBhZ2VzIG5vbi1wcmVzZW50LiBUaGlzIG1lYW5zIHRoYXQg d2hlbmV2ZXIKLXNvbWVib2R5IGF0dGVtcHRzIHRvIGFjY2VzcyB0aGUgcGFnZSwgYSBwYWdlIGZh dWx0IGlzIGdlbmVyYXRlZC4gVGhlIHBhZ2UKLWZhdWx0IGhhbmRsZXIgbm90aWNlcyB0aGF0IHRo ZSBwYWdlIHdhcyBpbiBmYWN0IG9ubHkgaGlkZGVuLCBhbmQgc28gaXQgY2FsbHMKLW9uIHRoZSBr bWVtY2hlY2sgY29kZSB0byBtYWtlIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbnMuCi0KLVdoZW4gdGhl IGludmVzdGlnYXRpb25zIGFyZSBjb21wbGV0ZWQsIGttZW1jaGVjayAic2hvd3MiIHRoZSBwYWdl IGJ5IG1hcmtpbmcKLWl0IHByZXNlbnQgKGFzIGl0IHdvdWxkIGJlIHVuZGVyIG5vcm1hbCBjaXJj dW1zdGFuY2VzKS4gVGhpcyB3YXksIHRoZQotaW50ZXJydXB0ZWQgY29kZSBjYW4gY29udGludWUg YXMgdXN1YWwuCi0KLUJ1dCBhZnRlciB0aGUgaW5zdHJ1Y3Rpb24gaGFzIGJlZW4gZXhlY3V0ZWQs IHdlIHNob3VsZCBoaWRlIHRoZSBwYWdlIGFnYWluLCBzbwotdGhhdCB3ZSBjYW4gY2F0Y2ggdGhl IG5leHQgYWNjZXNzIHRvbyEgTm93IGttZW1jaGVjayBtYWtlcyB1c2Ugb2YgYSBkZWJ1Z2dpbmcK LWZlYXR1cmUgb2YgdGhlIHByb2Nlc3NvciwgbmFtZWx5IHNpbmdsZS1zdGVwcGluZy4gV2hlbiB0 aGUgcHJvY2Vzc29yIGhhcwotZmluaXNoZWQgdGhlIG9uZSBpbnN0cnVjdGlvbiB0aGF0IGdlbmVy YXRlZCB0aGUgbWVtb3J5IGFjY2VzcywgYSBkZWJ1ZwotZXhjZXB0aW9uIGlzIHJhaXNlZC4gRnJv bSBoZXJlLCB3ZSBzaW1wbHkgaGlkZSB0aGUgcGFnZSBhZ2FpbiBhbmQgY29udGludWUKLWV4ZWN1 dGlvbiwgdGhpcyB0aW1lIHdpdGggdGhlIHNpbmdsZS1zdGVwcGluZyBmZWF0dXJlIHR1cm5lZCBv ZmYuCi0KLWttZW1jaGVjayByZXF1aXJlcyBzb21lIGFzc2lzdGFuY2UgZnJvbSB0aGUgbWVtb3J5 IGFsbG9jYXRvciBpbiBvcmRlciB0byB3b3JrLgotVGhlIG1lbW9yeSBhbGxvY2F0b3IgbmVlZHMg dG8KLQotICAxLiBUZWxsIGttZW1jaGVjayBhYm91dCBuZXdseSBhbGxvY2F0ZWQgcGFnZXMgYW5k IHBhZ2VzIHRoYXQgYXJlIGFib3V0IHRvCi0gICAgIGJlIGZyZWVkLiBUaGlzIGFsbG93cyBrbWVt Y2hlY2sgdG8gc2V0IHVwIGFuZCB0ZWFyIGRvd24gdGhlIHNoYWRvdyBtZW1vcnkKLSAgICAgZm9y IHRoZSBwYWdlcyBpbiBxdWVzdGlvbi4gVGhlIHNoYWRvdyBtZW1vcnkgc3RvcmVzIHRoZSBzdGF0 dXMgb2YgZWFjaAotICAgICBieXRlIGluIHRoZSBhbGxvY2F0aW9uIHByb3BlciwgZS5nLiB3aGV0 aGVyIGl0IGlzIGluaXRpYWxpemVkIG9yCi0gICAgIHVuaW5pdGlhbGl6ZWQuCi0KLSAgMi4gVGVs bCBrbWVtY2hlY2sgd2hpY2ggcGFydHMgb2YgbWVtb3J5IHNob3VsZCBiZSBtYXJrZWQgdW5pbml0 aWFsaXplZC4KLSAgICAgVGhlcmUgYXJlIGFjdHVhbGx5IGEgZmV3IG1vcmUgc3RhdGVzLCBzdWNo IGFzICJub3QgeWV0IGFsbG9jYXRlZCIgYW5kCi0gICAgICJyZWNlbnRseSBmcmVlZCIuCi0KLUlm IGEgc2xhYiBjYWNoZSBpcyBzZXQgdXAgdXNpbmcgdGhlIFNMQUJfTk9UUkFDSyBmbGFnLCBpdCB3 aWxsIG5ldmVyIHJldHVybgotbWVtb3J5IHRoYXQgY2FuIHRha2UgcGFnZSBmYXVsdHMgYmVjYXVz ZSBvZiBrbWVtY2hlY2suCi0KLUlmIGEgc2xhYiBjYWNoZSBpcyBOT1Qgc2V0IHVwIHVzaW5nIHRo ZSBTTEFCX05PVFJBQ0sgZmxhZywgY2FsbGVycyBjYW4gc3RpbGwKLXJlcXVlc3QgbWVtb3J5IHdp dGggdGhlIF9fR0ZQX05PVFJBQ0sgb3IgX19HRlBfTk9UUkFDS19GQUxTRV9QT1NJVElWRSBmbGFn cy4KLVRoaXMgZG9lcyBub3QgcHJldmVudCB0aGUgcGFnZSBmYXVsdHMgZnJvbSBvY2N1cnJpbmcs IGhvd2V2ZXIsIGJ1dCBtYXJrcyB0aGUKLW9iamVjdCBpbiBxdWVzdGlvbiBhcyBiZWluZyBpbml0 aWFsaXplZCBzbyB0aGF0IG5vIHdhcm5pbmdzIHdpbGwgZXZlciBiZQotcHJvZHVjZWQgZm9yIHRo aXMgb2JqZWN0LgotCi1DdXJyZW50bHksIHRoZSBTTEFCIGFuZCBTTFVCIGFsbG9jYXRvcnMgYXJl IHN1cHBvcnRlZCBieSBrbWVtY2hlY2suCmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5U QUlORVJTCmluZGV4IDE5MzlmNzMuLjM2ZTNkZGIgMTAwNjQ0Ci0tLSBhL01BSU5UQUlORVJTCisr KyBiL01BSU5UQUlORVJTCkBAIC01NzA2LDE2ICs1NzA2LDYgQEAgRjoJaW5jbHVkZS9saW51eC9r ZGIuaAogRjoJaW5jbHVkZS9saW51eC9rZ2RiLmgKIEY6CWtlcm5lbC9kZWJ1Zy8KIAotS01FTUNI RUNLCi1NOglWZWdhcmQgTm9zc3VtIDx2ZWdhcmRub0BpZmkudWlvLm5vPgotTToJUGVra2EgRW5i ZXJnIDxwZW5iZXJnQGtlcm5lbC5vcmc+Ci1TOglNYWludGFpbmVkCi1GOglEb2N1bWVudGF0aW9u L2ttZW1jaGVjay50eHQKLUY6CWFyY2gveDg2L2luY2x1ZGUvYXNtL2ttZW1jaGVjay5oCi1GOglh cmNoL3g4Ni9tbS9rbWVtY2hlY2svCi1GOglpbmNsdWRlL2xpbnV4L2ttZW1jaGVjay5oCi1GOglt bS9rbWVtY2hlY2suYwotCiBLTUVNTEVBSwogTToJQ2F0YWxpbiBNYXJpbmFzIDxjYXRhbGluLm1h cmluYXNAYXJtLmNvbT4KIFM6CU1haW50YWluZWQKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2luY2x1 ZGUvYXNtL2RtYS1pb21tdS5oIGIvYXJjaC9hcm0vaW5jbHVkZS9hc20vZG1hLWlvbW11LmgKaW5k ZXggOGUzZmNiOS4uMGUxYzFmNiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vaW5jbHVkZS9hc20vZG1h LWlvbW11LmgKKysrIGIvYXJjaC9hcm0vaW5jbHVkZS9hc20vZG1hLWlvbW11LmgKQEAgLTYsNyAr Niw2IEBACiAjaW5jbHVkZSA8bGludXgvbW1fdHlwZXMuaD4KICNpbmNsdWRlIDxsaW51eC9zY2F0 dGVybGlzdC5oPgogI2luY2x1ZGUgPGxpbnV4L2RtYS1kZWJ1Zy5oPgotI2luY2x1ZGUgPGxpbnV4 L2ttZW1jaGVjay5oPgogI2luY2x1ZGUgPGxpbnV4L2tyZWYuaD4KIAogc3RydWN0IGRtYV9pb21t dV9tYXBwaW5nIHsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2luY2x1ZGUvYXNtL3BnYWxsb2MuaCBi L2FyY2gvYXJtL2luY2x1ZGUvYXNtL3BnYWxsb2MuaAppbmRleCAxOWNmYWI1Li4wMTk0MTRlIDEw MDY0NAotLS0gYS9hcmNoL2FybS9pbmNsdWRlL2FzbS9wZ2FsbG9jLmgKKysrIGIvYXJjaC9hcm0v aW5jbHVkZS9hc20vcGdhbGxvYy5oCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9p ZCBwdWRfcG9wdWxhdGUoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHB1ZF90ICpwdWQsIHBtZF90ICpw bWQpCiBleHRlcm4gcGdkX3QgKnBnZF9hbGxvYyhzdHJ1Y3QgbW1fc3RydWN0ICptbSk7CiBleHRl cm4gdm9pZCBwZ2RfZnJlZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcGdkX3QgKnBnZCk7CiAKLSNk ZWZpbmUgUEdBTExPQ19HRlAJKEdGUF9LRVJORUwgfCBfX0dGUF9OT1RSQUNLIHwgX19HRlBfUkVQ RUFUIHwgX19HRlBfWkVSTykKKyNkZWZpbmUgUEdBTExPQ19HRlAJKEdGUF9LRVJORUwgfCBfX0dG UF9SRVBFQVQgfCBfX0dGUF9aRVJPKQogCiBzdGF0aWMgaW5saW5lIHZvaWQgY2xlYW5fcHRlX3Rh YmxlKHB0ZV90ICpwdGUpCiB7CmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3Bn YWxsb2MuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGdhbGxvYy5oCmluZGV4IDc2NDIwNTYu LjFkNTdlNGIgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGdhbGxvYy5oCisr KyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGdhbGxvYy5oCkBAIC0yNiw3ICsyNiw3IEBACiAK ICNkZWZpbmUgY2hlY2tfcGd0X2NhY2hlKCkJCWRvIHsgfSB3aGlsZSAoMCkKIAotI2RlZmluZSBQ R0FMTE9DX0dGUAkoR0ZQX0tFUk5FTCB8IF9fR0ZQX05PVFJBQ0sgfCBfX0dGUF9SRVBFQVQgfCBf X0dGUF9aRVJPKQorI2RlZmluZSBQR0FMTE9DX0dGUAkoR0ZQX0tFUk5FTCB8IF9fR0ZQX1JFUEVB VCB8IF9fR0ZQX1pFUk8pCiAKICNpZiBDT05GSUdfUEdUQUJMRV9MRVZFTFMgPiAyCiAKZGlmZiAt LWdpdCBhL2FyY2gvb3BlbnJpc2MvaW5jbHVkZS9hc20vZG1hLW1hcHBpbmcuaCBiL2FyY2gvb3Bl bnJpc2MvaW5jbHVkZS9hc20vZG1hLW1hcHBpbmcuaAppbmRleCBmYWI4NjI4Li44MjI2NjkxIDEw MDY0NAotLS0gYS9hcmNoL29wZW5yaXNjL2luY2x1ZGUvYXNtL2RtYS1tYXBwaW5nLmgKKysrIGIv YXJjaC9vcGVucmlzYy9pbmNsdWRlL2FzbS9kbWEtbWFwcGluZy5oCkBAIC0yNCw3ICsyNCw2IEBA CiAKICNpbmNsdWRlIDxsaW51eC9kbWEtZGVidWcuaD4KICNpbmNsdWRlIDxhc20tZ2VuZXJpYy9k bWEtY29oZXJlbnQuaD4KLSNpbmNsdWRlIDxsaW51eC9rbWVtY2hlY2suaD4KICNpbmNsdWRlIDxs aW51eC9kbWEtbWFwcGluZy5oPgogCiAjZGVmaW5lIERNQV9FUlJPUl9DT0RFCQkofihkbWFfYWRk cl90KTB4MCkKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlXzY0LmMgYi9hcmNo L3Bvd2VycGMvbW0vcGd0YWJsZV82NC5jCmluZGV4IDY5NTdjYzEuLjA0MWYxMjkgMTAwNjQ0Ci0t LSBhL2FyY2gvcG93ZXJwYy9tbS9wZ3RhYmxlXzY0LmMKKysrIGIvYXJjaC9wb3dlcnBjL21tL3Bn dGFibGVfNjQuYwpAQCAtMzk2LDggKzM5Niw3IEBAIHN0YXRpYyBwdGVfdCAqZ2V0X2Zyb21fY2Fj aGUoc3RydWN0IG1tX3N0cnVjdCAqbW0pCiBzdGF0aWMgcHRlX3QgKl9fYWxsb2NfZm9yX2NhY2hl KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBpbnQga2VybmVsKQogewogCXZvaWQgKnJldCA9IE5VTEw7 Ci0Jc3RydWN0IHBhZ2UgKnBhZ2UgPSBhbGxvY19wYWdlKEdGUF9LRVJORUwgfCBfX0dGUF9OT1RS QUNLIHwKLQkJCQkgICAgICAgX19HRlBfUkVQRUFUIHwgX19HRlBfWkVSTyk7CisJc3RydWN0IHBh Z2UgKnBhZ2UgPSBhbGxvY19wYWdlKEdGUF9LRVJORUwgfCBfX0dGUF9SRVBFQVQgfCBfX0dGUF9a RVJPKTsKIAlpZiAoIXBhZ2UpCiAJCXJldHVybiBOVUxMOwogCWlmICgha2VybmVsICYmICFwZ3Rh YmxlX3BhZ2VfY3RvcihwYWdlKSkgewpkaWZmIC0tZ2l0IGEvYXJjaC9zaC9rZXJuZWwvZHdhcmYu YyBiL2FyY2gvc2gva2VybmVsL2R3YXJmLmMKaW5kZXggNjdhMDQ5ZS4uZWRkYzk2YSAxMDA2NDQK LS0tIGEvYXJjaC9zaC9rZXJuZWwvZHdhcmYuYworKysgYi9hcmNoL3NoL2tlcm5lbC9kd2FyZi5j CkBAIC0xMTcwLDExICsxMTcwLDExIEBAIHN0YXRpYyBpbnQgX19pbml0IGR3YXJmX3Vud2luZGVy X2luaXQodm9pZCkKIAogCWR3YXJmX2ZyYW1lX2NhY2hlcCA9IGttZW1fY2FjaGVfY3JlYXRlKCJk d2FyZl9mcmFtZXMiLAogCQkJc2l6ZW9mKHN0cnVjdCBkd2FyZl9mcmFtZSksIDAsCi0JCQlTTEFC X1BBTklDIHwgU0xBQl9IV0NBQ0hFX0FMSUdOIHwgU0xBQl9OT1RSQUNLLCBOVUxMKTsKKwkJCVNM QUJfUEFOSUMgfCBTTEFCX0hXQ0FDSEVfQUxJR04sIE5VTEwpOwogCiAJZHdhcmZfcmVnX2NhY2hl cCA9IGttZW1fY2FjaGVfY3JlYXRlKCJkd2FyZl9yZWdzIiwKIAkJCXNpemVvZihzdHJ1Y3QgZHdh cmZfcmVnKSwgMCwKLQkJCVNMQUJfUEFOSUMgfCBTTEFCX0hXQ0FDSEVfQUxJR04gfCBTTEFCX05P VFJBQ0ssIE5VTEwpOworCQkJU0xBQl9QQU5JQyB8IFNMQUJfSFdDQUNIRV9BTElHTiwgTlVMTCk7 CiAKIAlkd2FyZl9mcmFtZV9wb29sID0gbWVtcG9vbF9jcmVhdGUoRFdBUkZfRlJBTUVfTUlOX1JF USwKIAkJCQkJICBtZW1wb29sX2FsbG9jX3NsYWIsCmRpZmYgLS1naXQgYS9hcmNoL3NoL2tlcm5l bC9wcm9jZXNzLmMgYi9hcmNoL3NoL2tlcm5lbC9wcm9jZXNzLmMKaW5kZXggNTNiYzZjNC4uMjBl MGQ0ZiAxMDA2NDQKLS0tIGEvYXJjaC9zaC9rZXJuZWwvcHJvY2Vzcy5jCisrKyBiL2FyY2gvc2gv a2VybmVsL3Byb2Nlc3MuYwpAQCAtNTYsNyArNTYsNyBAQCB2b2lkIGFyY2hfdGFza19jYWNoZV9p bml0KHZvaWQpCiAKIAl0YXNrX3hzdGF0ZV9jYWNoZXAgPSBrbWVtX2NhY2hlX2NyZWF0ZSgidGFz a194c3RhdGUiLCB4c3RhdGVfc2l6ZSwKIAkJCQkJICAgICAgIF9fYWxpZ25vZl9fKHVuaW9uIHRo cmVhZF94c3RhdGUpLAotCQkJCQkgICAgICAgU0xBQl9QQU5JQyB8IFNMQUJfTk9UUkFDSywgTlVM TCk7CisJCQkJCSAgICAgICBTTEFCX1BBTklDLCBOVUxMKTsKIH0KIAogI2lmZGVmIENPTkZJR19T SF9GUFVfRU1VCmRpZmYgLS1naXQgYS9hcmNoL3NwYXJjL21tL2luaXRfNjQuYyBiL2FyY2gvc3Bh cmMvbW0vaW5pdF82NC5jCmluZGV4IDNlYTI2N2MuLmRjM2VkYzQgMTAwNjQ0Ci0tLSBhL2FyY2gv c3BhcmMvbW0vaW5pdF82NC5jCisrKyBiL2FyY2gvc3BhcmMvbW0vaW5pdF82NC5jCkBAIC0yNjEw LDggKzI2MTAsNyBAQCB2b2lkIF9fZmx1c2hfdGxiX2FsbCh2b2lkKQogcHRlX3QgKnB0ZV9hbGxv Y19vbmVfa2VybmVsKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAogCQkJICAgIHVuc2lnbmVkIGxvbmcg YWRkcmVzcykKIHsKLQlzdHJ1Y3QgcGFnZSAqcGFnZSA9IGFsbG9jX3BhZ2UoR0ZQX0tFUk5FTCB8 IF9fR0ZQX05PVFJBQ0sgfAotCQkJCSAgICAgICBfX0dGUF9SRVBFQVQgfCBfX0dGUF9aRVJPKTsK KwlzdHJ1Y3QgcGFnZSAqcGFnZSA9IGFsbG9jX3BhZ2UoR0ZQX0tFUk5FTCB8IF9fR0ZQX1JFUEVB VCB8IF9fR0ZQX1pFUk8pOwogCXB0ZV90ICpwdGUgPSBOVUxMOwogCiAJaWYgKHBhZ2UpCkBAIC0y NjIzLDggKzI2MjIsNyBAQCBwdGVfdCAqcHRlX2FsbG9jX29uZV9rZXJuZWwoc3RydWN0IG1tX3N0 cnVjdCAqbW0sCiBwZ3RhYmxlX3QgcHRlX2FsbG9jX29uZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwK IAkJCXVuc2lnbmVkIGxvbmcgYWRkcmVzcykKIHsKLQlzdHJ1Y3QgcGFnZSAqcGFnZSA9IGFsbG9j X3BhZ2UoR0ZQX0tFUk5FTCB8IF9fR0ZQX05PVFJBQ0sgfAotCQkJCSAgICAgICBfX0dGUF9SRVBF QVQgfCBfX0dGUF9aRVJPKTsKKwlzdHJ1Y3QgcGFnZSAqcGFnZSA9IGFsbG9jX3BhZ2UoR0ZQX0tF Uk5FTCB8IF9fR0ZQX1JFUEVBVCB8IF9fR0ZQX1pFUk8pOwogCWlmICghcGFnZSkKIAkJcmV0dXJu IE5VTEw7CiAJaWYgKCFwZ3RhYmxlX3BhZ2VfY3RvcihwYWdlKSkgewpkaWZmIC0tZ2l0IGEvYXJj aC91bmljb3JlMzIvaW5jbHVkZS9hc20vcGdhbGxvYy5oIGIvYXJjaC91bmljb3JlMzIvaW5jbHVk ZS9hc20vcGdhbGxvYy5oCmluZGV4IDJlMDJkMTMuLjQwOGJhM2MgMTAwNjQ0Ci0tLSBhL2FyY2gv dW5pY29yZTMyL2luY2x1ZGUvYXNtL3BnYWxsb2MuaAorKysgYi9hcmNoL3VuaWNvcmUzMi9pbmNs dWRlL2FzbS9wZ2FsbG9jLmgKQEAgLTI4LDcgKzI4LDcgQEAgZXh0ZXJuIHZvaWQgZnJlZV9wZ2Rf c2xvdyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcGdkX3QgKnBnZCk7CiAjZGVmaW5lIHBnZF9hbGxv YyhtbSkJCQlnZXRfcGdkX3Nsb3cobW0pCiAjZGVmaW5lIHBnZF9mcmVlKG1tLCBwZ2QpCQlmcmVl X3BnZF9zbG93KG1tLCBwZ2QpCiAKLSNkZWZpbmUgUEdBTExPQ19HRlAJKEdGUF9LRVJORUwgfCBf X0dGUF9OT1RSQUNLIHwgX19HRlBfUkVQRUFUIHwgX19HRlBfWkVSTykKKyNkZWZpbmUgUEdBTExP Q19HRlAJKEdGUF9LRVJORUwgfCBfX0dGUF9SRVBFQVQgfCBfX0dGUF9aRVJPKQogCiAvKgogICog QWxsb2NhdGUgb25lIFBURSB0YWJsZS4KZGlmZiAtLWdpdCBhL2FyY2gveDg2L0tjb25maWcgYi9h cmNoL3g4Ni9LY29uZmlnCmluZGV4IDExMGY2YWUuLjNhYjMzMzkgMTAwNjQ0Ci0tLSBhL2FyY2gv eDg2L0tjb25maWcKKysrIGIvYXJjaC94ODYvS2NvbmZpZwpAQCAtODQsNyArODQsNiBAQCBjb25m aWcgWDg2CiAJc2VsZWN0IEhBVkVfQUxJR05FRF9TVFJVQ1RfUEFHRSBpZiBTTFVCCiAJc2VsZWN0 IEhBVkVfQ01QWENIR19MT0NBTAogCXNlbGVjdCBIQVZFX0NNUFhDSEdfRE9VQkxFCi0Jc2VsZWN0 IEhBVkVfQVJDSF9LTUVNQ0hFQ0sKIAlzZWxlY3QgSEFWRV9BUkNIX0tBU0FOIGlmIFg4Nl82NCAm JiBTUEFSU0VNRU1fVk1FTU1BUAogCXNlbGVjdCBIQVZFX1VTRVJfUkVUVVJOX05PVElGSUVSCiAJ c2VsZWN0IEFSQ0hfSEFTX0VMRl9SQU5ET01JWkUKQEAgLTEzMDQsNyArMTMwMyw3IEBAIGNvbmZp ZyBBUkNIX0RNQV9BRERSX1RfNjRCSVQKIAogY29uZmlnIFg4Nl9ESVJFQ1RfR0JQQUdFUwogCWRl Zl9ib29sIHkKLQlkZXBlbmRzIG9uIFg4Nl82NCAmJiAhREVCVUdfUEFHRUFMTE9DICYmICFLTUVN Q0hFQ0sKKwlkZXBlbmRzIG9uIFg4Nl82NCAmJiAhREVCVUdfUEFHRUFMTE9DCiAJLS0taGVscC0t LQogCSAgQ2VydGFpbiBrZXJuZWwgZmVhdHVyZXMgZWZmZWN0aXZlbHkgZGlzYWJsZSBrZXJuZWwK IAkgIGxpbmVhciAxIEdCIG1hcHBpbmdzIChldmVuIGlmIHRoZSBDUFUgb3RoZXJ3aXNlCmRpZmYg LS1naXQgYS9hcmNoL3g4Ni9NYWtlZmlsZSBiL2FyY2gveDg2L01ha2VmaWxlCmluZGV4IDViYTJk OWMuLmZhODI3YmYgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L01ha2VmaWxlCisrKyBiL2FyY2gveDg2 L01ha2VmaWxlCkBAIC0xMzEsMTEgKzEzMSw2IEBAIGlmZGVmIENPTkZJR19YODZfWDMyCiBlbmRp ZgogZXhwb3J0IENPTkZJR19YODZfWDMyX0FCSQogCi0jIERvbid0IHVucm9sbCBzdHJ1Y3QgYXNz aWdubWVudHMgd2l0aCBrbWVtY2hlY2sgZW5hYmxlZAotaWZlcSAoJChDT05GSUdfS01FTUNIRUNL KSx5KQotCUtCVUlMRF9DRkxBR1MgKz0gJChjYWxsIGNjLW9wdGlvbiwtZm5vLWJ1aWx0aW4tbWVt Y3B5KQotZW5kaWYKLQogIyBTdGFja3BvaW50ZXIgaXMgYWRkcmVzc2VkIGRpZmZlcmVudCBmb3Ig MzIgYml0IGFuZCA2NCBiaXQgeDg2CiBzcC0kKENPTkZJR19YODZfMzIpIDo9IGVzcAogc3AtJChD T05GSUdfWDg2XzY0KSA6PSByc3AKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2Rt YS1tYXBwaW5nLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9kbWEtbWFwcGluZy5oCmluZGV4IDgw OGRhZTYuLjUxZjAyNjcgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2RtYS1tYXBw aW5nLmgKKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vZG1hLW1hcHBpbmcuaApAQCAtNiw3ICs2 LDYgQEAKICAqIERvY3VtZW50YXRpb24vRE1BLUFQSS50eHQgZm9yIGRvY3VtZW50YXRpb24uCiAg Ki8KIAotI2luY2x1ZGUgPGxpbnV4L2ttZW1jaGVjay5oPgogI2luY2x1ZGUgPGxpbnV4L3NjYXR0 ZXJsaXN0Lmg+CiAjaW5jbHVkZSA8bGludXgvZG1hLWRlYnVnLmg+CiAjaW5jbHVkZSA8bGludXgv ZG1hLWF0dHJzLmg+CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rbWVtY2hlY2su aCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2ttZW1jaGVjay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCBlZDAxNTE4Li4wMDAwMDAwCi0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2tt ZW1jaGVjay5oCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotI2lmbmRlZiBBU01fWDg2 X0tNRU1DSEVDS19ICi0jZGVmaW5lIEFTTV9YODZfS01FTUNIRUNLX0gKLQotI2luY2x1ZGUgPGxp bnV4L3R5cGVzLmg+Ci0jaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgotCi0jaWZkZWYgQ09ORklHX0tN RU1DSEVDSwotYm9vbCBrbWVtY2hlY2tfYWN0aXZlKHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKLQot dm9pZCBrbWVtY2hlY2tfc2hvdyhzdHJ1Y3QgcHRfcmVncyAqcmVncyk7Ci12b2lkIGttZW1jaGVj a19oaWRlKHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKLQotYm9vbCBrbWVtY2hlY2tfZmF1bHQoc3Ry dWN0IHB0X3JlZ3MgKnJlZ3MsCi0JdW5zaWduZWQgbG9uZyBhZGRyZXNzLCB1bnNpZ25lZCBsb25n IGVycm9yX2NvZGUpOwotYm9vbCBrbWVtY2hlY2tfdHJhcChzdHJ1Y3QgcHRfcmVncyAqcmVncyk7 Ci0jZWxzZQotc3RhdGljIGlubGluZSBib29sIGttZW1jaGVja19hY3RpdmUoc3RydWN0IHB0X3Jl Z3MgKnJlZ3MpCi17Ci0JcmV0dXJuIGZhbHNlOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQga21l bWNoZWNrX3Nob3coc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCi17Ci19Ci0KLXN0YXRpYyBpbmxpbmUg dm9pZCBrbWVtY2hlY2tfaGlkZShzdHJ1Y3QgcHRfcmVncyAqcmVncykKLXsKLX0KLQotc3RhdGlj IGlubGluZSBib29sIGttZW1jaGVja19mYXVsdChzdHJ1Y3QgcHRfcmVncyAqcmVncywKLQl1bnNp Z25lZCBsb25nIGFkZHJlc3MsIHVuc2lnbmVkIGxvbmcgZXJyb3JfY29kZSkKLXsKLQlyZXR1cm4g ZmFsc2U7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBrbWVtY2hlY2tfdHJhcChzdHJ1Y3QgcHRf cmVncyAqcmVncykKLXsKLQlyZXR1cm4gZmFsc2U7Ci19Ci0jZW5kaWYgLyogQ09ORklHX0tNRU1D SEVDSyAqLwotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFi bGUuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaAppbmRleCBhZmZjYjM0Li44NTA4 OGQxIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgKKysrIGIvYXJj aC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZS5oCkBAIC00NTgsMTEgKzQ1OCw2IEBAIHN0YXRpYyBp bmxpbmUgYm9vbCBwdGVfYWNjZXNzaWJsZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcHRlX3QgYSkK IAlyZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBpbmxpbmUgaW50IHB0ZV9oaWRkZW4ocHRlX3Qg cHRlKQotewotCXJldHVybiBwdGVfZmxhZ3MocHRlKSAmIF9QQUdFX0hJRERFTjsKLX0KLQogc3Rh dGljIGlubGluZSBpbnQgcG1kX3ByZXNlbnQocG1kX3QgcG1kKQogewogCS8qCmRpZmYgLS1naXQg YS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlX3R5cGVzLmggYi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9wZ3RhYmxlX3R5cGVzLmgKaW5kZXggNzhmMGM4Yy4uMmQ0OWQ3NSAxMDA2NDQKLS0tIGEv YXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZV90eXBlcy5oCisrKyBiL2FyY2gveDg2L2luY2x1 ZGUvYXNtL3BndGFibGVfdHlwZXMuaApAQCAtMjMsNyArMjMsNiBAQAogI2RlZmluZSBfUEFHRV9C SVRfU1BFQ0lBTAlfUEFHRV9CSVRfU09GVFcxCiAjZGVmaW5lIF9QQUdFX0JJVF9DUEFfVEVTVAlf UEFHRV9CSVRfU09GVFcxCiAjZGVmaW5lIF9QQUdFX0JJVF9TUExJVFRJTkcJX1BBR0VfQklUX1NP RlRXMiAvKiBvbmx5IHZhbGlkIG9uIGEgUFNFIHBtZCAqLwotI2RlZmluZSBfUEFHRV9CSVRfSElE REVOCV9QQUdFX0JJVF9TT0ZUVzMgLyogaGlkZGVuIGJ5IGttZW1jaGVjayAqLwogI2RlZmluZSBf UEFHRV9CSVRfU09GVF9ESVJUWQlfUEFHRV9CSVRfU09GVFczIC8qIHNvZnR3YXJlIGRpcnR5IHRy YWNraW5nICovCiAjZGVmaW5lIF9QQUdFX0JJVF9OWCAgICAgICAgICAgNjMgICAgICAgLyogTm8g ZXhlY3V0ZTogb25seSB2YWxpZCBhZnRlciBjcHVpZCBjaGVjayAqLwogCkBAIC00OSwxOCArNDgs NiBAQAogI2RlZmluZSBfUEFHRV9TUExJVFRJTkcJKF9BVChwdGV2YWxfdCwgMSkgPDwgX1BBR0Vf QklUX1NQTElUVElORykKICNkZWZpbmUgX19IQVZFX0FSQ0hfUFRFX1NQRUNJQUwKIAotI2lmZGVm IENPTkZJR19LTUVNQ0hFQ0sKLSNkZWZpbmUgX1BBR0VfSElEREVOCShfQVQocHRldmFsX3QsIDEp IDw8IF9QQUdFX0JJVF9ISURERU4pCi0jZWxzZQotI2RlZmluZSBfUEFHRV9ISURERU4JKF9BVChw dGV2YWxfdCwgMCkpCi0jZW5kaWYKLQotLyoKLSAqIFRoZSBzYW1lIGhpZGRlbiBiaXQgaXMgdXNl ZCBieSBrbWVtY2hlY2ssIGJ1dCBzaW5jZSBrbWVtY2hlY2sKLSAqIHdvcmtzIG9uIGtlcm5lbCBw YWdlcyB3aGlsZSBzb2Z0LWRpcnR5IGVuZ2luZSBvbiB1c2VyIHNwYWNlLAotICogdGhleSBkbyBu b3QgY29uZmxpY3Qgd2l0aCBlYWNoIG90aGVyLgotICovCi0KICNpZmRlZiBDT05GSUdfTUVNX1NP RlRfRElSVFkKICNkZWZpbmUgX1BBR0VfU09GVF9ESVJUWQkoX0FUKHB0ZXZhbF90LCAxKSA8PCBf UEFHRV9CSVRfU09GVF9ESVJUWSkKICNlbHNlCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9zdHJpbmdfMzIuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3N0cmluZ18zMi5oCmluZGV4 IDNkM2U4MzUuLjhhNGY2ZmEgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3N0cmlu Z18zMi5oCisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3N0cmluZ18zMi5oCkBAIC0xNzYsOCAr MTc2LDYgQEAgc3RhdGljIGlubGluZSB2b2lkICpfX21lbWNweTNkKHZvaWQgKnRvLCBjb25zdCB2 b2lkICpmcm9tLCBzaXplX3QgbGVuKQogICoJTm8gM0QgTm93IQogICovCiAKLSNpZm5kZWYgQ09O RklHX0tNRU1DSEVDSwotCiAjaWYgKF9fR05VQ19fID49IDQpCiAjZGVmaW5lIG1lbWNweSh0LCBm LCBuKSBfX2J1aWx0aW5fbWVtY3B5KHQsIGYsIG4pCiAjZWxzZQpAQCAtMTg2LDEzICsxODQsNiBA QCBzdGF0aWMgaW5saW5lIHZvaWQgKl9fbWVtY3B5M2Qodm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZy b20sIHNpemVfdCBsZW4pCiAJID8gX19jb25zdGFudF9tZW1jcHkoKHQpLCAoZiksIChuKSkJXAog CSA6IF9fbWVtY3B5KCh0KSwgKGYpLCAobikpKQogI2VuZGlmCi0jZWxzZQotLyoKLSAqIGttZW1j aGVjayBiZWNvbWVzIHZlcnkgaGFwcHkgaWYgd2UgdXNlIHRoZSBSRVAgaW5zdHJ1Y3Rpb25zIHVu Y29uZGl0aW9uYWxseSwKLSAqIGJlY2F1c2UgaXQgbWVhbnMgdGhhdCB3ZSBrbm93IGJvdGggbWVt b3J5IG9wZXJhbmRzIGluIGFkdmFuY2UuCi0gKi8KLSNkZWZpbmUgbWVtY3B5KHQsIGYsIG4pIF9f bWVtY3B5KCh0KSwgKGYpLCAobikpCi0jZW5kaWYKIAogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL3N0cmluZ182NC5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vc3Ry aW5nXzY0LmgKaW5kZXggZTQ2NjExOS4uMTlkYTUzMSAxMDA2NDQKLS0tIGEvYXJjaC94ODYvaW5j bHVkZS9hc20vc3RyaW5nXzY0LmgKKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vc3RyaW5nXzY0 LmgKQEAgLTI5LDcgKzI5LDYgQEAgc3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkICpfX2lubGlu ZV9tZW1jcHkodm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHNpemVfdAogI2RlZmluZSBfX0hB VkVfQVJDSF9NRU1DUFkgMQogZXh0ZXJuIHZvaWQgKl9fbWVtY3B5KHZvaWQgKnRvLCBjb25zdCB2 b2lkICpmcm9tLCBzaXplX3QgbGVuKTsKIAotI2lmbmRlZiBDT05GSUdfS01FTUNIRUNLCiAjaWYg KF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPj0gMykgfHwgX19HTlVDX18gPiA0CiBl eHRlcm4gdm9pZCAqbWVtY3B5KHZvaWQgKnRvLCBjb25zdCB2b2lkICpmcm9tLCBzaXplX3QgbGVu KTsKICNlbHNlCkBAIC00NCwxMyArNDMsNiBAQCBleHRlcm4gdm9pZCAqbWVtY3B5KHZvaWQgKnRv LCBjb25zdCB2b2lkICpmcm9tLCBzaXplX3QgbGVuKTsKIAlfX3JldDsJCQkJCQkJXAogfSkKICNl bmRpZgotI2Vsc2UKLS8qCi0gKiBrbWVtY2hlY2sgYmVjb21lcyB2ZXJ5IGhhcHB5IGlmIHdlIHVz ZSB0aGUgUkVQIGluc3RydWN0aW9ucyB1bmNvbmRpdGlvbmFsbHksCi0gKiBiZWNhdXNlIGl0IG1l YW5zIHRoYXQgd2Uga25vdyBib3RoIG1lbW9yeSBvcGVyYW5kcyBpbiBhZHZhbmNlLgotICovCi0j ZGVmaW5lIG1lbWNweShkc3QsIHNyYywgbGVuKSBfX2lubGluZV9tZW1jcHkoKGRzdCksIChzcmMp LCAobGVuKSkKLSNlbmRpZgogCiAjZGVmaW5lIF9fSEFWRV9BUkNIX01FTVNFVAogdm9pZCAqbWVt c2V0KHZvaWQgKnMsIGludCBjLCBzaXplX3Qgbik7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNs dWRlL2FzbS94b3IuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3hvci5oCmluZGV4IGQ4ODI5NzUu LmQ0ODQ4MzggMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3hvci5oCisrKyBiL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL3hvci5oCkBAIC0xLDcgKzEsNCBAQAotI2lmZGVmIENPTkZJR19L TUVNQ0hFQ0sKLS8qIGttZW1jaGVjayBkb2Vzbid0IGhhbmRsZSBNTVgvU1NFL1NTRTIgaW5zdHJ1 Y3Rpb25zICovCi0jIGluY2x1ZGUgPGFzbS1nZW5lcmljL3hvci5oPgotI2VsaWYgIWRlZmluZWQo X0FTTV9YODZfWE9SX0gpCisjaWZuZGVmIF9BU01fWDg2X1hPUl9ICiAjZGVmaW5lIF9BU01fWDg2 X1hPUl9ICiAKIC8qCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L2ludGVsLmMgYi9h cmNoL3g4Ni9rZXJuZWwvY3B1L2ludGVsLmMKaW5kZXggNTAxNjNmYS4uNDIyZmNlYiAxMDA2NDQK LS0tIGEvYXJjaC94ODYva2VybmVsL2NwdS9pbnRlbC5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC9j cHUvaW50ZWwuYwpAQCAtMTE3LDIxICsxMTcsNiBAQCBzdGF0aWMgdm9pZCBlYXJseV9pbml0X2lu dGVsKHN0cnVjdCBjcHVpbmZvX3g4NiAqYykKIAlpZiAoYy0+eDg2ID09IDYgJiYgYy0+eDg2X21v ZGVsIDwgMTUpCiAJCWNsZWFyX2NwdV9jYXAoYywgWDg2X0ZFQVRVUkVfUEFUKTsKIAotI2lmZGVm IENPTkZJR19LTUVNQ0hFQ0sKLQkvKgotCSAqIFA0cyBoYXZlIGEgImZhc3Qgc3RyaW5ncyIgZmVh dHVyZSB3aGljaCBjYXVzZXMgc2luZ2xlLQotCSAqIHN0ZXBwaW5nIFJFUCBpbnN0cnVjdGlvbnMg dG8gb25seSBnZW5lcmF0ZSBhICNEQiBvbgotCSAqIGNhY2hlLWxpbmUgYm91bmRhcmllcy4KLQkg KgotCSAqIEluZ28gTW9sbmFyIHJlcG9ydGVkIGEgUGVudGl1bSBEIChtb2RlbCA2KSBhbmQgYSBY ZW9uCi0JICogKG1vZGVsIDIpIHdpdGggdGhlIHNhbWUgcHJvYmxlbS4KLQkgKi8KLQlpZiAoYy0+ eDg2ID09IDE1KQotCQlpZiAobXNyX2NsZWFyX2JpdChNU1JfSUEzMl9NSVNDX0VOQUJMRSwKLQkJ CQkgIE1TUl9JQTMyX01JU0NfRU5BQkxFX0ZBU1RfU1RSSU5HX0JJVCkgPiAwKQotCQkJcHJfaW5m bygia21lbWNoZWNrOiBEaXNhYmxpbmcgZmFzdCBzdHJpbmcgb3BlcmF0aW9uc1xuIik7Ci0jZW5k aWYKLQogCS8qCiAJICogSWYgZmFzdCBzdHJpbmcgaXMgbm90IGVuYWJsZWQgaW4gSUEzMl9NSVND X0VOQUJMRSBmb3IgYW55IHJlYXNvbiwKIAkgKiBjbGVhciB0aGUgZmFzdCBzdHJpbmcgYW5kIGVu aGFuY2VkIGZhc3Qgc3RyaW5nIENQVSBjYXBhYmlsaXRpZXMuCmRpZmYgLS1naXQgYS9hcmNoL3g4 Ni9rZXJuZWwvZXNwZml4XzY0LmMgYi9hcmNoL3g4Ni9rZXJuZWwvZXNwZml4XzY0LmMKaW5kZXgg ZjVkMDczMC4uNTc4NzBiMiAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL2VzcGZpeF82NC5j CisrKyBiL2FyY2gveDg2L2tlcm5lbC9lc3BmaXhfNjQuYwpAQCAtNTcsNyArNTcsNyBAQAogIyBl cnJvciAiTmVlZCBtb3JlIHRoYW4gb25lIFBHRCBmb3IgdGhlIEVTUEZJWCBoYWNrIgogI2VuZGlm CiAKLSNkZWZpbmUgUEdBTExPQ19HRlAgKEdGUF9LRVJORUwgfCBfX0dGUF9OT1RSQUNLIHwgX19H RlBfUkVQRUFUIHwgX19HRlBfWkVSTykKKyNkZWZpbmUgUEdBTExPQ19HRlAgKEdGUF9LRVJORUwg fCBfX0dGUF9SRVBFQVQgfCBfX0dGUF9aRVJPKQogCiAvKiBUaGlzIGNvbnRhaW5zIHRoZSAqYm90 dG9tKiBhZGRyZXNzIG9mIHRoZSBlc3BmaXggc3RhY2sgKi8KIERFRklORV9QRVJfQ1BVX1JFQURf TU9TVExZKHVuc2lnbmVkIGxvbmcsIGVzcGZpeF9zdGFjayk7CmRpZmYgLS1naXQgYS9hcmNoL3g4 Ni9rZXJuZWwvcHJvY2Vzcy5jIGIvYXJjaC94ODYva2VybmVsL3Byb2Nlc3MuYwppbmRleCAyZjNh NGU0Li5jNzkwOGQzIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvcHJvY2Vzcy5jCisrKyBi L2FyY2gveDg2L2tlcm5lbC9wcm9jZXNzLmMKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIGFyY2hf dGFza19jYWNoZV9pbml0KHZvaWQpCiAgICAgICAgIHRhc2tfeHN0YXRlX2NhY2hlcCA9CiAgICAg ICAgIAlrbWVtX2NhY2hlX2NyZWF0ZSgidGFza194c3RhdGUiLCB4c3RhdGVfc2l6ZSwKIAkJCQkg IF9fYWxpZ25vZl9fKHVuaW9uIHRocmVhZF94c3RhdGUpLAotCQkJCSAgU0xBQl9QQU5JQyB8IFNM QUJfTk9UUkFDSywgTlVMTCk7CisJCQkJICBTTEFCX1BBTklDLCBOVUxMKTsKIAlzZXR1cF94c3Rh dGVfY29tcCgpOwogfQogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvdHJhcHMuYyBiL2Fy Y2gveDg2L2tlcm5lbC90cmFwcy5jCmluZGV4IDk4NmZiMjAuLjg2MjMwNDQgMTAwNjQ0Ci0tLSBh L2FyY2gveDg2L2tlcm5lbC90cmFwcy5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC90cmFwcy5jCkBA IC00Niw3ICs0Niw2IEBACiAjaW5jbHVkZSA8bGludXgvZWRhYy5oPgogI2VuZGlmCiAKLSNpbmNs dWRlIDxhc20va21lbWNoZWNrLmg+CiAjaW5jbHVkZSA8YXNtL3N0YWNrdHJhY2UuaD4KICNpbmNs dWRlIDxhc20vcHJvY2Vzc29yLmg+CiAjaW5jbHVkZSA8YXNtL2RlYnVncmVnLmg+CkBAIC02NDAs MTAgKzYzOSw2IEBAIGRvdHJhcGxpbmthZ2Ugdm9pZCBkb19kZWJ1ZyhzdHJ1Y3QgcHRfcmVncyAq cmVncywgbG9uZyBlcnJvcl9jb2RlKQogCWlmICghZHI2ICYmIHVzZXJfbW9kZShyZWdzKSkKIAkJ dXNlcl9pY2VicCA9IDE7CiAKLQkvKiBDYXRjaCBrbWVtY2hlY2sgY29uZGl0aW9ucyBmaXJzdCBv ZiBhbGwhICovCi0JaWYgKChkcjYgJiBEUl9TVEVQKSAmJiBrbWVtY2hlY2tfdHJhcChyZWdzKSkK LQkJZ290byBleGl0OwotCiAJLyogRFI2IG1heSBvciBtYXkgbm90IGJlIGNsZWFyZWQgYnkgdGhl IENQVSAqLwogCXNldF9kZWJ1Z3JlZygwLCA2KTsKIApkaWZmIC0tZ2l0IGEvYXJjaC94ODYvbW0v TWFrZWZpbGUgYi9hcmNoL3g4Ni9tbS9NYWtlZmlsZQppbmRleCBjNGNjNzQwLi5hZmE4Yzc5IDEw MDY0NAotLS0gYS9hcmNoL3g4Ni9tbS9NYWtlZmlsZQorKysgYi9hcmNoL3g4Ni9tbS9NYWtlZmls ZQpAQCAtMTgsOCArMTgsNiBAQCBvYmotJChDT05GSUdfWDg2X1BURFVNUCkJKz0gZHVtcF9wYWdl dGFibGVzLm8KIAogb2JqLSQoQ09ORklHX0hJR0hNRU0pCQkrPSBoaWdobWVtXzMyLm8KIAotb2Jq LSQoQ09ORklHX0tNRU1DSEVDSykJCSs9IGttZW1jaGVjay8KLQogS0FTQU5fU0FOSVRJWkVfa2Fz YW5faW5pdF8kKEJJVFMpLm8gOj0gbgogb2JqLSQoQ09ORklHX0tBU0FOKQkJKz0ga2FzYW5faW5p dF8kKEJJVFMpLm8KIApkaWZmIC0tZ2l0IGEvYXJjaC94ODYvbW0vZmF1bHQuYyBiL2FyY2gveDg2 L21tL2ZhdWx0LmMKaW5kZXggZWRlMDI1Zi4uY2QxMGU4MyAxMDA2NDQKLS0tIGEvYXJjaC94ODYv bW0vZmF1bHQuYworKysgYi9hcmNoL3g4Ni9tbS9mYXVsdC5jCkBAIC0xNiw3ICsxNiw2IEBACiAK ICNpbmNsdWRlIDxhc20vdHJhcHMuaD4JCQkvKiBkb3RyYXBsaW5rYWdlLCAuLi4JCSovCiAjaW5j bHVkZSA8YXNtL3BnYWxsb2MuaD4JCS8qIHBnZF8qKCksIC4uLgkJCSovCi0jaW5jbHVkZSA8YXNt L2ttZW1jaGVjay5oPgkJLyoga21lbWNoZWNrXyooKSwgLi4uCQkqLwogI2luY2x1ZGUgPGFzbS9m aXhtYXAuaD4JCQkvKiBWU1lTQ0FMTF9BRERSCQkqLwogI2luY2x1ZGUgPGFzbS92c3lzY2FsbC5o PgkJLyogZW11bGF0ZV92c3lzY2FsbAkJKi8KIApAQCAtMTA2MywxMiArMTA2Miw2IEBAIF9fZG9f cGFnZV9mYXVsdChzdHJ1Y3QgcHRfcmVncyAqcmVncywgdW5zaWduZWQgbG9uZyBlcnJvcl9jb2Rl LAogCXRzayA9IGN1cnJlbnQ7CiAJbW0gPSB0c2stPm1tOwogCi0JLyoKLQkgKiBEZXRlY3QgYW5k IGhhbmRsZSBpbnN0cnVjdGlvbnMgdGhhdCB3b3VsZCBjYXVzZSBhIHBhZ2UgZmF1bHQgZm9yCi0J ICogYm90aCBhIHRyYWNrZWQga2VybmVsIHBhZ2UgYW5kIGEgdXNlcnNwYWNlIHBhZ2UuCi0JICov Ci0JaWYgKGttZW1jaGVja19hY3RpdmUocmVncykpCi0JCWttZW1jaGVja19oaWRlKHJlZ3MpOwog CXByZWZldGNodygmbW0tPm1tYXBfc2VtKTsKIAogCWlmICh1bmxpa2VseShrbW1pb19mYXVsdChy ZWdzLCBhZGRyZXNzKSkpCkBAIC0xMDkxLDkgKzEwODQsNiBAQCBfX2RvX3BhZ2VfZmF1bHQoc3Ry dWN0IHB0X3JlZ3MgKnJlZ3MsIHVuc2lnbmVkIGxvbmcgZXJyb3JfY29kZSwKIAkJaWYgKCEoZXJy b3JfY29kZSAmIChQRl9SU1ZEIHwgUEZfVVNFUiB8IFBGX1BST1QpKSkgewogCQkJaWYgKHZtYWxs b2NfZmF1bHQoYWRkcmVzcykgPj0gMCkKIAkJCQlyZXR1cm47Ci0KLQkJCWlmIChrbWVtY2hlY2tf ZmF1bHQocmVncywgYWRkcmVzcywgZXJyb3JfY29kZSkpCi0JCQkJcmV0dXJuOwogCQl9CiAKIAkJ LyogQ2FuIGhhbmRsZSBhIHN0YWxlIFJPLT5SVyBUTEI6ICovCmRpZmYgLS1naXQgYS9hcmNoL3g4 Ni9tbS9pbml0LmMgYi9hcmNoL3g4Ni9tbS9pbml0LmMKaW5kZXggMWQ1NTMxOC4uYWIzZWYzNiAx MDA2NDQKLS0tIGEvYXJjaC94ODYvbW0vaW5pdC5jCisrKyBiL2FyY2gveDg2L21tL2luaXQuYwpA QCAtODYsNyArODYsNyBAQCBfX3JlZiB2b2lkICphbGxvY19sb3dfcGFnZXModW5zaWduZWQgaW50 IG51bSkKIAkJdW5zaWduZWQgaW50IG9yZGVyOwogCiAJCW9yZGVyID0gZ2V0X29yZGVyKCh1bnNp Z25lZCBsb25nKW51bSA8PCBQQUdFX1NISUZUKTsKLQkJcmV0dXJuICh2b2lkICopX19nZXRfZnJl ZV9wYWdlcyhHRlBfQVRPTUlDIHwgX19HRlBfTk9UUkFDSyB8CisJCXJldHVybiAodm9pZCAqKV9f Z2V0X2ZyZWVfcGFnZXMoR0ZQX0FUT01JQyB8CiAJCQkJCQlfX0dGUF9aRVJPLCBvcmRlcik7CiAJ fQogCkBAIC0xNDcsNyArMTQ3LDcgQEAgc3RhdGljIGludCBwYWdlX3NpemVfbWFzazsKIAogc3Rh dGljIHZvaWQgX19pbml0IHByb2JlX3BhZ2Vfc2l6ZV9tYXNrKHZvaWQpCiB7Ci0jaWYgIWRlZmlu ZWQoQ09ORklHX0RFQlVHX1BBR0VBTExPQykgJiYgIWRlZmluZWQoQ09ORklHX0tNRU1DSEVDSykK KyNpZiAhZGVmaW5lZChDT05GSUdfREVCVUdfUEFHRUFMTE9DKQogCS8qCiAJICogRm9yIENPTkZJ R19ERUJVR19QQUdFQUxMT0MsIGlkZW50aXR5IG1hcHBpbmcgd2lsbCB1c2Ugc21hbGwgcGFnZXMu CiAJICogVGhpcyB3aWxsIHNpbXBsaWZ5IGNwYSgpLCB3aGljaCBvdGhlcndpc2UgbmVlZHMgdG8g c3VwcG9ydCBzcGxpdHRpbmcKZGlmZiAtLWdpdCBhL2FyY2gveDg2L21tL2luaXRfNjQuYyBiL2Fy Y2gveDg2L21tL2luaXRfNjQuYwppbmRleCAzZmJhNjIzLi42YjgyYmE0IDEwMDY0NAotLS0gYS9h cmNoL3g4Ni9tbS9pbml0XzY0LmMKKysrIGIvYXJjaC94ODYvbW0vaW5pdF82NC5jCkBAIC0yMTYs NyArMjE2LDcgQEAgc3RhdGljIF9fcmVmIHZvaWQgKnNwcF9nZXRwYWdlKHZvaWQpCiAJdm9pZCAq cHRyOwogCiAJaWYgKGFmdGVyX2Jvb3RtZW0pCi0JCXB0ciA9ICh2b2lkICopIGdldF96ZXJvZWRf cGFnZShHRlBfQVRPTUlDIHwgX19HRlBfTk9UUkFDSyk7CisJCXB0ciA9ICh2b2lkICopIGdldF96 ZXJvZWRfcGFnZShHRlBfQVRPTUlDKTsKIAllbHNlCiAJCXB0ciA9IGFsbG9jX2Jvb3RtZW1fcGFn ZXMoUEFHRV9TSVpFKTsKIApkaWZmIC0tZ2l0IGEvYXJjaC94ODYvbW0va21lbWNoZWNrL01ha2Vm aWxlIGIvYXJjaC94ODYvbW0va21lbWNoZWNrL01ha2VmaWxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCA1MjBiM2JjLi4wMDAwMDAwCi0tLSBhL2FyY2gveDg2L21tL2ttZW1jaGVjay9N YWtlZmlsZQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLW9iai15IDo9IGVycm9yLm8ga21l bWNoZWNrLm8gb3Bjb2RlLm8gcHRlLm8gc2VsZnRlc3QubyBzaGFkb3cubwpkaWZmIC0tZ2l0IGEv YXJjaC94ODYvbW0va21lbWNoZWNrL2Vycm9yLmMgYi9hcmNoL3g4Ni9tbS9rbWVtY2hlY2svZXJy b3IuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGFiNDE4Ny4uMDAwMDAwMAotLS0g YS9hcmNoL3g4Ni9tbS9rbWVtY2hlY2svZXJyb3IuYworKysgL2Rldi9udWxsCkBAIC0xLDIyNyAr MCwwIEBACi0jaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+Ci0jaW5jbHVkZSA8bGludXgva2Rl YnVnLmg+Ci0jaW5jbHVkZSA8bGludXgva21lbWNoZWNrLmg+Ci0jaW5jbHVkZSA8bGludXgva2Vy bmVsLmg+Ci0jaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KLSNpbmNsdWRlIDxsaW51eC9wdHJhY2Uu aD4KLSNpbmNsdWRlIDxsaW51eC9zdGFja3RyYWNlLmg+Ci0jaW5jbHVkZSA8bGludXgvc3RyaW5n Lmg+Ci0KLSNpbmNsdWRlICJlcnJvci5oIgotI2luY2x1ZGUgInNoYWRvdy5oIgotCi1lbnVtIGtt ZW1jaGVja19lcnJvcl90eXBlIHsKLQlLTUVNQ0hFQ0tfRVJST1JfSU5WQUxJRF9BQ0NFU1MsCi0J S01FTUNIRUNLX0VSUk9SX0JVRywKLX07Ci0KLSNkZWZpbmUgU0hBRE9XX0NPUFlfU0laRSAoMSA8 PCBDT05GSUdfS01FTUNIRUNLX1NIQURPV19DT1BZX1NISUZUKQotCi1zdHJ1Y3Qga21lbWNoZWNr X2Vycm9yIHsKLQllbnVtIGttZW1jaGVja19lcnJvcl90eXBlIHR5cGU7Ci0KLQl1bmlvbiB7Ci0J CS8qIEtNRU1DSEVDS19FUlJPUl9JTlZBTElEX0FDQ0VTUyAqLwotCQlzdHJ1Y3QgewotCQkJLyog S2luZCBvZiBhY2Nlc3MgdGhhdCBjYXVzZWQgdGhlIGVycm9yICovCi0JCQllbnVtIGttZW1jaGVj a19zaGFkb3cgc3RhdGU7Ci0JCQkvKiBBZGRyZXNzIGFuZCBzaXplIG9mIHRoZSBlcnJvbmVvdXMg cmVhZCAqLwotCQkJdW5zaWduZWQgbG9uZwlhZGRyZXNzOwotCQkJdW5zaWduZWQgaW50CXNpemU7 Ci0JCX07Ci0JfTsKLQotCXN0cnVjdCBwdF9yZWdzCQlyZWdzOwotCXN0cnVjdCBzdGFja190cmFj ZQl0cmFjZTsKLQl1bnNpZ25lZCBsb25nCQl0cmFjZV9lbnRyaWVzWzMyXTsKLQotCS8qIFdlIGNv bXByZXNzIGl0IHRvIGEgY2hhci4gKi8KLQl1bnNpZ25lZCBjaGFyCQlzaGFkb3dfY29weVtTSEFE T1dfQ09QWV9TSVpFXTsKLQl1bnNpZ25lZCBjaGFyCQltZW1vcnlfY29weVtTSEFET1dfQ09QWV9T SVpFXTsKLX07Ci0KLS8qCi0gKiBDcmVhdGUgYSByaW5nIHF1ZXVlIG9mIGVycm9ycyB0byBvdXRw dXQuIFdlIGNhbid0IGNhbGwgcHJpbnRrKCkgZGlyZWN0bHkKLSAqIGZyb20gdGhlIGttZW1jaGVj ayB0cmFwcywgc2luY2UgdGhpcyBtYXkgY2FsbCB0aGUgY29uc29sZSBkcml2ZXJzIGFuZAotICog cmVzdWx0IGluIGEgcmVjdXJzaXZlIGZhdWx0LgotICovCi1zdGF0aWMgc3RydWN0IGttZW1jaGVj a19lcnJvciBlcnJvcl9maWZvW0NPTkZJR19LTUVNQ0hFQ0tfUVVFVUVfU0laRV07Ci1zdGF0aWMg dW5zaWduZWQgaW50IGVycm9yX2NvdW50Owotc3RhdGljIHVuc2lnbmVkIGludCBlcnJvcl9yZDsK LXN0YXRpYyB1bnNpZ25lZCBpbnQgZXJyb3Jfd3I7Ci1zdGF0aWMgdW5zaWduZWQgaW50IGVycm9y X21pc3NlZF9jb3VudDsKLQotc3RhdGljIHN0cnVjdCBrbWVtY2hlY2tfZXJyb3IgKmVycm9yX25l eHRfd3Iodm9pZCkKLXsKLQlzdHJ1Y3Qga21lbWNoZWNrX2Vycm9yICplOwotCi0JaWYgKGVycm9y X2NvdW50ID09IEFSUkFZX1NJWkUoZXJyb3JfZmlmbykpIHsKLQkJKytlcnJvcl9taXNzZWRfY291 bnQ7Ci0JCXJldHVybiBOVUxMOwotCX0KLQotCWUgPSAmZXJyb3JfZmlmb1tlcnJvcl93cl07Ci0J aWYgKCsrZXJyb3Jfd3IgPT0gQVJSQVlfU0laRShlcnJvcl9maWZvKSkKLQkJZXJyb3Jfd3IgPSAw OwotCSsrZXJyb3JfY291bnQ7Ci0JcmV0dXJuIGU7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3Qga21lbWNo ZWNrX2Vycm9yICplcnJvcl9uZXh0X3JkKHZvaWQpCi17Ci0Jc3RydWN0IGttZW1jaGVja19lcnJv ciAqZTsKLQotCWlmIChlcnJvcl9jb3VudCA9PSAwKQotCQlyZXR1cm4gTlVMTDsKLQotCWUgPSAm ZXJyb3JfZmlmb1tlcnJvcl9yZF07Ci0JaWYgKCsrZXJyb3JfcmQgPT0gQVJSQVlfU0laRShlcnJv cl9maWZvKSkKLQkJZXJyb3JfcmQgPSAwOwotCS0tZXJyb3JfY291bnQ7Ci0JcmV0dXJuIGU7Ci19 Ci0KLXZvaWQga21lbWNoZWNrX2Vycm9yX3JlY2FsbCh2b2lkKQotewotCXN0YXRpYyBjb25zdCBj aGFyICpkZXNjW10gPSB7Ci0JCVtLTUVNQ0hFQ0tfU0hBRE9XX1VOQUxMT0NBVEVEXQkJPSAidW5h bGxvY2F0ZWQiLAotCQlbS01FTUNIRUNLX1NIQURPV19VTklOSVRJQUxJWkVEXQk9ICJ1bmluaXRp YWxpemVkIiwKLQkJW0tNRU1DSEVDS19TSEFET1dfSU5JVElBTElaRURdCQk9ICJpbml0aWFsaXpl ZCIsCi0JCVtLTUVNQ0hFQ0tfU0hBRE9XX0ZSRUVEXQkJPSAiZnJlZWQiLAotCX07Ci0KLQlzdGF0 aWMgY29uc3QgY2hhciBzaG9ydF9kZXNjW10gPSB7Ci0JCVtLTUVNQ0hFQ0tfU0hBRE9XX1VOQUxM T0NBVEVEXQkJPSAnYScsCi0JCVtLTUVNQ0hFQ0tfU0hBRE9XX1VOSU5JVElBTElaRURdCT0gJ3Un LAotCQlbS01FTUNIRUNLX1NIQURPV19JTklUSUFMSVpFRF0JCT0gJ2knLAotCQlbS01FTUNIRUNL X1NIQURPV19GUkVFRF0JCT0gJ2YnLAotCX07Ci0KLQlzdHJ1Y3Qga21lbWNoZWNrX2Vycm9yICpl OwotCXVuc2lnbmVkIGludCBpOwotCi0JZSA9IGVycm9yX25leHRfcmQoKTsKLQlpZiAoIWUpCi0J CXJldHVybjsKLQotCXN3aXRjaCAoZS0+dHlwZSkgewotCWNhc2UgS01FTUNIRUNLX0VSUk9SX0lO VkFMSURfQUNDRVNTOgotCQlwcmludGsoS0VSTl9XQVJOSU5HICJXQVJOSU5HOiBrbWVtY2hlY2s6 IENhdWdodCAlZC1iaXQgcmVhZCBmcm9tICVzIG1lbW9yeSAoJXApXG4iLAotCQkJOCAqIGUtPnNp emUsIGUtPnN0YXRlIDwgQVJSQVlfU0laRShkZXNjKSA/Ci0JCQkJZGVzY1tlLT5zdGF0ZV0gOiAi KGludmFsaWQgc2hhZG93IHN0YXRlKSIsCi0JCQkodm9pZCAqKSBlLT5hZGRyZXNzKTsKLQotCQlw cmludGsoS0VSTl9XQVJOSU5HKTsKLQkJZm9yIChpID0gMDsgaSA8IFNIQURPV19DT1BZX1NJWkU7 ICsraSkKLQkJCXByaW50ayhLRVJOX0NPTlQgIiUwMngiLCBlLT5tZW1vcnlfY29weVtpXSk7Ci0J CXByaW50ayhLRVJOX0NPTlQgIlxuIik7Ci0KLQkJcHJpbnRrKEtFUk5fV0FSTklORyk7Ci0JCWZv ciAoaSA9IDA7IGkgPCBTSEFET1dfQ09QWV9TSVpFOyArK2kpIHsKLQkJCWlmIChlLT5zaGFkb3df Y29weVtpXSA8IEFSUkFZX1NJWkUoc2hvcnRfZGVzYykpCi0JCQkJcHJpbnRrKEtFUk5fQ09OVCAi ICVjIiwgc2hvcnRfZGVzY1tlLT5zaGFkb3dfY29weVtpXV0pOwotCQkJZWxzZQotCQkJCXByaW50 ayhLRVJOX0NPTlQgIiA/Iik7Ci0JCX0KLQkJcHJpbnRrKEtFUk5fQ09OVCAiXG4iKTsKLQkJcHJp bnRrKEtFUk5fV0FSTklORyAiJSpjXG4iLCAyICsgMgotCQkJKiAoaW50KSAoZS0+YWRkcmVzcyAm IChTSEFET1dfQ09QWV9TSVpFIC0gMSkpLCAnXicpOwotCQlicmVhazsKLQljYXNlIEtNRU1DSEVD S19FUlJPUl9CVUc6Ci0JCXByaW50ayhLRVJOX0VNRVJHICJFUlJPUjoga21lbWNoZWNrOiBGYXRh bCBlcnJvclxuIik7Ci0JCWJyZWFrOwotCX0KLQotCV9fc2hvd19yZWdzKCZlLT5yZWdzLCAxKTsK LQlwcmludF9zdGFja190cmFjZSgmZS0+dHJhY2UsIDApOwotfQotCi1zdGF0aWMgdm9pZCBkb193 YWtldXAodW5zaWduZWQgbG9uZyBkYXRhKQotewotCXdoaWxlIChlcnJvcl9jb3VudCA+IDApCi0J CWttZW1jaGVja19lcnJvcl9yZWNhbGwoKTsKLQotCWlmIChlcnJvcl9taXNzZWRfY291bnQgPiAw KSB7Ci0JCXByaW50ayhLRVJOX1dBUk5JTkcgImttZW1jaGVjazogTG9zdCAlZCBlcnJvciByZXBv cnRzIGJlY2F1c2UgIgotCQkJInRoZSBxdWV1ZSB3YXMgdG9vIHNtYWxsXG4iLCBlcnJvcl9taXNz ZWRfY291bnQpOwotCQllcnJvcl9taXNzZWRfY291bnQgPSAwOwotCX0KLX0KLQotc3RhdGljIERF Q0xBUkVfVEFTS0xFVChrbWVtY2hlY2tfdGFza2xldCwgJmRvX3dha2V1cCwgMCk7Ci0KLS8qCi0g KiBTYXZlIHRoZSBjb250ZXh0IG9mIGFuIGVycm9yIHJlcG9ydC4KLSAqLwotdm9pZCBrbWVtY2hl Y2tfZXJyb3Jfc2F2ZShlbnVtIGttZW1jaGVja19zaGFkb3cgc3RhdGUsCi0JdW5zaWduZWQgbG9u ZyBhZGRyZXNzLCB1bnNpZ25lZCBpbnQgc2l6ZSwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCi17Ci0J c3RhdGljIHVuc2lnbmVkIGxvbmcgcHJldl9pcDsKLQotCXN0cnVjdCBrbWVtY2hlY2tfZXJyb3Ig KmU7Ci0Jdm9pZCAqc2hhZG93X2NvcHk7Ci0Jdm9pZCAqbWVtb3J5X2NvcHk7Ci0KLQkvKiBEb24n dCByZXBvcnQgc2V2ZXJhbCBhZGphY2VudCBlcnJvcnMgZnJvbSB0aGUgc2FtZSBFSVAuICovCi0J aWYgKHJlZ3MtPmlwID09IHByZXZfaXApCi0JCXJldHVybjsKLQlwcmV2X2lwID0gcmVncy0+aXA7 Ci0KLQllID0gZXJyb3JfbmV4dF93cigpOwotCWlmICghZSkKLQkJcmV0dXJuOwotCi0JZS0+dHlw ZSA9IEtNRU1DSEVDS19FUlJPUl9JTlZBTElEX0FDQ0VTUzsKLQotCWUtPnN0YXRlID0gc3RhdGU7 Ci0JZS0+YWRkcmVzcyA9IGFkZHJlc3M7Ci0JZS0+c2l6ZSA9IHNpemU7Ci0KLQkvKiBTYXZlIHJl Z3MgKi8KLQltZW1jcHkoJmUtPnJlZ3MsIHJlZ3MsIHNpemVvZigqcmVncykpOwotCi0JLyogU2F2 ZSBzdGFjayB0cmFjZSAqLwotCWUtPnRyYWNlLm5yX2VudHJpZXMgPSAwOwotCWUtPnRyYWNlLmVu dHJpZXMgPSBlLT50cmFjZV9lbnRyaWVzOwotCWUtPnRyYWNlLm1heF9lbnRyaWVzID0gQVJSQVlf U0laRShlLT50cmFjZV9lbnRyaWVzKTsKLQllLT50cmFjZS5za2lwID0gMDsKLQlzYXZlX3N0YWNr X3RyYWNlX3JlZ3MocmVncywgJmUtPnRyYWNlKTsKLQotCS8qIFJvdW5kIGFkZHJlc3MgZG93biB0 byBuZWFyZXN0IDE2IGJ5dGVzICovCi0Jc2hhZG93X2NvcHkgPSBrbWVtY2hlY2tfc2hhZG93X2xv b2t1cChhZGRyZXNzCi0JCSYgfihTSEFET1dfQ09QWV9TSVpFIC0gMSkpOwotCUJVR19PTighc2hh ZG93X2NvcHkpOwotCi0JbWVtY3B5KGUtPnNoYWRvd19jb3B5LCBzaGFkb3dfY29weSwgU0hBRE9X X0NPUFlfU0laRSk7Ci0KLQlrbWVtY2hlY2tfc2hvd19hZGRyKGFkZHJlc3MpOwotCW1lbW9yeV9j b3B5ID0gKHZvaWQgKikgKGFkZHJlc3MgJiB+KFNIQURPV19DT1BZX1NJWkUgLSAxKSk7Ci0JbWVt Y3B5KGUtPm1lbW9yeV9jb3B5LCBtZW1vcnlfY29weSwgU0hBRE9XX0NPUFlfU0laRSk7Ci0Ja21l bWNoZWNrX2hpZGVfYWRkcihhZGRyZXNzKTsKLQotCXRhc2tsZXRfaGlfc2NoZWR1bGVfZmlyc3Qo JmttZW1jaGVja190YXNrbGV0KTsKLX0KLQotLyoKLSAqIFNhdmUgdGhlIGNvbnRleHQgb2YgYSBr bWVtY2hlY2sgYnVnLgotICovCi12b2lkIGttZW1jaGVja19lcnJvcl9zYXZlX2J1ZyhzdHJ1Y3Qg cHRfcmVncyAqcmVncykKLXsKLQlzdHJ1Y3Qga21lbWNoZWNrX2Vycm9yICplOwotCi0JZSA9IGVy cm9yX25leHRfd3IoKTsKLQlpZiAoIWUpCi0JCXJldHVybjsKLQotCWUtPnR5cGUgPSBLTUVNQ0hF Q0tfRVJST1JfQlVHOwotCi0JbWVtY3B5KCZlLT5yZWdzLCByZWdzLCBzaXplb2YoKnJlZ3MpKTsK LQotCWUtPnRyYWNlLm5yX2VudHJpZXMgPSAwOwotCWUtPnRyYWNlLmVudHJpZXMgPSBlLT50cmFj ZV9lbnRyaWVzOwotCWUtPnRyYWNlLm1heF9lbnRyaWVzID0gQVJSQVlfU0laRShlLT50cmFjZV9l bnRyaWVzKTsKLQllLT50cmFjZS5za2lwID0gMTsKLQlzYXZlX3N0YWNrX3RyYWNlKCZlLT50cmFj ZSk7Ci0KLQl0YXNrbGV0X2hpX3NjaGVkdWxlX2ZpcnN0KCZrbWVtY2hlY2tfdGFza2xldCk7Ci19 CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9tbS9rbWVtY2hlY2svZXJyb3IuaCBiL2FyY2gveDg2L21t L2ttZW1jaGVjay9lcnJvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWZjMmU4 Li4wMDAwMDAwCi0tLSBhL2FyY2gveDg2L21tL2ttZW1jaGVjay9lcnJvci5oCisrKyAvZGV2L251 bGwKQEAgLTEsMTUgKzAsMCBAQAotI2lmbmRlZiBBUkNIX19YODZfX01NX19LTUVNQ0hFQ0tfX0VS Uk9SX0gKLSNkZWZpbmUgQVJDSF9fWDg2X19NTV9fS01FTUNIRUNLX19FUlJPUl9ICi0KLSNpbmNs dWRlIDxsaW51eC9wdHJhY2UuaD4KLQotI2luY2x1ZGUgInNoYWRvdy5oIgotCi12b2lkIGttZW1j aGVja19lcnJvcl9zYXZlKGVudW0ga21lbWNoZWNrX3NoYWRvdyBzdGF0ZSwKLQl1bnNpZ25lZCBs b25nIGFkZHJlc3MsIHVuc2lnbmVkIGludCBzaXplLCBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7Ci0K LXZvaWQga21lbWNoZWNrX2Vycm9yX3NhdmVfYnVnKHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKLQot dm9pZCBrbWVtY2hlY2tfZXJyb3JfcmVjYWxsKHZvaWQpOwotCi0jZW5kaWYKZGlmZiAtLWdpdCBh L2FyY2gveDg2L21tL2ttZW1jaGVjay9rbWVtY2hlY2suYyBiL2FyY2gveDg2L21tL2ttZW1jaGVj ay9rbWVtY2hlY2suYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjRmMmU3ZS4uMDAw MDAwMAotLS0gYS9hcmNoL3g4Ni9tbS9rbWVtY2hlY2sva21lbWNoZWNrLmMKKysrIC9kZXYvbnVs bApAQCAtMSw2NTkgKzAsMCBAQAotLyoqCi0gKiBrbWVtY2hlY2sgLSBhIGhlYXZ5d2VpZ2h0IG1l bW9yeSBjaGVja2VyIGZvciB0aGUgbGludXgga2VybmVsCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcs IDIwMDggIFZlZ2FyZCBOb3NzdW0gPHZlZ2FyZG5vQGlmaS51aW8ubm8+Ci0gKiAoV2l0aCBhIGxv dCBvZiBoZWxwIGZyb20gSW5nbyBNb2xuYXIgYW5kIFBla2thIEVuYmVyZy4pCi0gKgotICogVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKLSAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgKHZlcnNpb24gMikgYXMKLSAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLgotICovCi0KLSNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Ci0jaW5jbHVkZSA8 bGludXgvaW50ZXJydXB0Lmg+Ci0jaW5jbHVkZSA8bGludXgva2FsbHN5bXMuaD4KLSNpbmNsdWRl IDxsaW51eC9rZXJuZWwuaD4KLSNpbmNsdWRlIDxsaW51eC9rbWVtY2hlY2suaD4KLSNpbmNsdWRl IDxsaW51eC9tbS5oPgotI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgotI2luY2x1ZGUgPGxpbnV4 L3BhZ2UtZmxhZ3MuaD4KLSNpbmNsdWRlIDxsaW51eC9wZXJjcHUuaD4KLSNpbmNsdWRlIDxsaW51 eC9wdHJhY2UuaD4KLSNpbmNsdWRlIDxsaW51eC9zdHJpbmcuaD4KLSNpbmNsdWRlIDxsaW51eC90 eXBlcy5oPgotCi0jaW5jbHVkZSA8YXNtL2NhY2hlZmx1c2guaD4KLSNpbmNsdWRlIDxhc20va21l bWNoZWNrLmg+Ci0jaW5jbHVkZSA8YXNtL3BndGFibGUuaD4KLSNpbmNsdWRlIDxhc20vdGxiZmx1 c2guaD4KLQotI2luY2x1ZGUgImVycm9yLmgiCi0jaW5jbHVkZSAib3Bjb2RlLmgiCi0jaW5jbHVk ZSAicHRlLmgiCi0jaW5jbHVkZSAic2VsZnRlc3QuaCIKLSNpbmNsdWRlICJzaGFkb3cuaCIKLQot Ci0jaWZkZWYgQ09ORklHX0tNRU1DSEVDS19ESVNBQkxFRF9CWV9ERUZBVUxUCi0jICBkZWZpbmUg S01FTUNIRUNLX0VOQUJMRUQgMAotI2VuZGlmCi0KLSNpZmRlZiBDT05GSUdfS01FTUNIRUNLX0VO QUJMRURfQllfREVGQVVMVAotIyAgZGVmaW5lIEtNRU1DSEVDS19FTkFCTEVEIDEKLSNlbmRpZgot Ci0jaWZkZWYgQ09ORklHX0tNRU1DSEVDS19PTkVTSE9UX0JZX0RFRkFVTFQKLSMgIGRlZmluZSBL TUVNQ0hFQ0tfRU5BQkxFRCAyCi0jZW5kaWYKLQotaW50IGttZW1jaGVja19lbmFibGVkID0gS01F TUNIRUNLX0VOQUJMRUQ7Ci0KLWludCBfX2luaXQga21lbWNoZWNrX2luaXQodm9pZCkKLXsKLSNp ZmRlZiBDT05GSUdfU01QCi0JLyoKLQkgKiBMaW1pdCBTTVAgdG8gdXNlIGEgc2luZ2xlIENQVS4g V2UgcmVseSBvbiB0aGUgZmFjdCB0aGF0IHRoaXMgY29kZQotCSAqIHJ1bnMgYmVmb3JlIFNNUCBp cyBzZXQgdXAuCi0JICovCi0JaWYgKHNldHVwX21heF9jcHVzID4gMSkgewotCQlwcmludGsoS0VS Tl9JTkZPCi0JCQkia21lbWNoZWNrOiBMaW1pdGluZyBudW1iZXIgb2YgQ1BVcyB0byAxLlxuIik7 Ci0JCXNldHVwX21heF9jcHVzID0gMTsKLQl9Ci0jZW5kaWYKLQotCWlmICgha21lbWNoZWNrX3Nl bGZ0ZXN0KCkpIHsKLQkJcHJpbnRrKEtFUk5fSU5GTyAia21lbWNoZWNrOiBzZWxmLXRlc3RzIGZh aWxlZDsgZGlzYWJsaW5nXG4iKTsKLQkJa21lbWNoZWNrX2VuYWJsZWQgPSAwOwotCQlyZXR1cm4g LUVJTlZBTDsKLQl9Ci0KLQlwcmludGsoS0VSTl9JTkZPICJrbWVtY2hlY2s6IEluaXRpYWxpemVk XG4iKTsKLQlyZXR1cm4gMDsKLX0KLQotZWFybHlfaW5pdGNhbGwoa21lbWNoZWNrX2luaXQpOwot Ci0vKgotICogV2UgbmVlZCB0byBwYXJzZSB0aGUga21lbWNoZWNrPSBvcHRpb24gYmVmb3JlIGFu eSBtZW1vcnkgaXMgYWxsb2NhdGVkLgotICovCi1zdGF0aWMgaW50IF9faW5pdCBwYXJhbV9rbWVt Y2hlY2soY2hhciAqc3RyKQotewotCWludCB2YWw7Ci0JaW50IHJldDsKLQotCWlmICghc3RyKQot CQlyZXR1cm4gLUVJTlZBTDsKLQotCXJldCA9IGtzdHJ0b2ludChzdHIsIDAsICZ2YWwpOwotCWlm IChyZXQpCi0JCXJldHVybiByZXQ7Ci0Ja21lbWNoZWNrX2VuYWJsZWQgPSB2YWw7Ci0JcmV0dXJu IDA7Ci19Ci0KLWVhcmx5X3BhcmFtKCJrbWVtY2hlY2siLCBwYXJhbV9rbWVtY2hlY2spOwotCi1p bnQga21lbWNoZWNrX3Nob3dfYWRkcih1bnNpZ25lZCBsb25nIGFkZHJlc3MpCi17Ci0JcHRlX3Qg KnB0ZTsKLQotCXB0ZSA9IGttZW1jaGVja19wdGVfbG9va3VwKGFkZHJlc3MpOwotCWlmICghcHRl KQotCQlyZXR1cm4gMDsKLQotCXNldF9wdGUocHRlLCBfX3B0ZShwdGVfdmFsKCpwdGUpIHwgX1BB R0VfUFJFU0VOVCkpOwotCV9fZmx1c2hfdGxiX29uZShhZGRyZXNzKTsKLQlyZXR1cm4gMTsKLX0K LQotaW50IGttZW1jaGVja19oaWRlX2FkZHIodW5zaWduZWQgbG9uZyBhZGRyZXNzKQotewotCXB0 ZV90ICpwdGU7Ci0KLQlwdGUgPSBrbWVtY2hlY2tfcHRlX2xvb2t1cChhZGRyZXNzKTsKLQlpZiAo IXB0ZSkKLQkJcmV0dXJuIDA7Ci0KLQlzZXRfcHRlKHB0ZSwgX19wdGUocHRlX3ZhbCgqcHRlKSAm IH5fUEFHRV9QUkVTRU5UKSk7Ci0JX19mbHVzaF90bGJfb25lKGFkZHJlc3MpOwotCXJldHVybiAx OwotfQotCi1zdHJ1Y3Qga21lbWNoZWNrX2NvbnRleHQgewotCWJvb2wgYnVzeTsKLQlpbnQgYmFs YW5jZTsKLQotCS8qCi0JICogVGhlcmUgY2FuIGJlIGF0IG1vc3QgdHdvIG1lbW9yeSBvcGVyYW5k cyB0byBhbiBpbnN0cnVjdGlvbiwgYnV0Ci0JICogZWFjaCBhZGRyZXNzIGNhbiBjcm9zcyBhIHBh Z2UgYm91bmRhcnkgLS0gc28gd2UgbWF5IG5lZWQgdXAgdG8KLQkgKiBmb3VyIGFkZHJlc3NlcyB0 aGF0IG11c3QgYmUgaGlkZGVuL3JldmVhbGVkIGZvciBlYWNoIGZhdWx0LgotCSAqLwotCXVuc2ln bmVkIGxvbmcgYWRkcls0XTsKLQl1bnNpZ25lZCBsb25nIG5fYWRkcnM7Ci0JdW5zaWduZWQgbG9u ZyBmbGFnczsKLQotCS8qIERhdGEgc2l6ZSBvZiB0aGUgaW5zdHJ1Y3Rpb24gdGhhdCBjYXVzZWQg YSBmYXVsdC4gKi8KLQl1bnNpZ25lZCBpbnQgc2l6ZTsKLX07Ci0KLXN0YXRpYyBERUZJTkVfUEVS X0NQVShzdHJ1Y3Qga21lbWNoZWNrX2NvbnRleHQsIGttZW1jaGVja19jb250ZXh0KTsKLQotYm9v bCBrbWVtY2hlY2tfYWN0aXZlKHN0cnVjdCBwdF9yZWdzICpyZWdzKQotewotCXN0cnVjdCBrbWVt Y2hlY2tfY29udGV4dCAqZGF0YSA9IHRoaXNfY3B1X3B0cigma21lbWNoZWNrX2NvbnRleHQpOwot Ci0JcmV0dXJuIGRhdGEtPmJhbGFuY2UgPiAwOwotfQotCi0vKiBTYXZlIGFuIGFkZHJlc3MgdGhh dCBuZWVkcyB0byBiZSBzaG93bi9oaWRkZW4gKi8KLXN0YXRpYyB2b2lkIGttZW1jaGVja19zYXZl X2FkZHIodW5zaWduZWQgbG9uZyBhZGRyKQotewotCXN0cnVjdCBrbWVtY2hlY2tfY29udGV4dCAq ZGF0YSA9IHRoaXNfY3B1X3B0cigma21lbWNoZWNrX2NvbnRleHQpOwotCi0JQlVHX09OKGRhdGEt Pm5fYWRkcnMgPj0gQVJSQVlfU0laRShkYXRhLT5hZGRyKSk7Ci0JZGF0YS0+YWRkcltkYXRhLT5u X2FkZHJzKytdID0gYWRkcjsKLX0KLQotc3RhdGljIHVuc2lnbmVkIGludCBrbWVtY2hlY2tfc2hv d19hbGwodm9pZCkKLXsKLQlzdHJ1Y3Qga21lbWNoZWNrX2NvbnRleHQgKmRhdGEgPSB0aGlzX2Nw dV9wdHIoJmttZW1jaGVja19jb250ZXh0KTsKLQl1bnNpZ25lZCBpbnQgaTsKLQl1bnNpZ25lZCBp bnQgbjsKLQotCW4gPSAwOwotCWZvciAoaSA9IDA7IGkgPCBkYXRhLT5uX2FkZHJzOyArK2kpCi0J CW4gKz0ga21lbWNoZWNrX3Nob3dfYWRkcihkYXRhLT5hZGRyW2ldKTsKLQotCXJldHVybiBuOwot fQotCi1zdGF0aWMgdW5zaWduZWQgaW50IGttZW1jaGVja19oaWRlX2FsbCh2b2lkKQotewotCXN0 cnVjdCBrbWVtY2hlY2tfY29udGV4dCAqZGF0YSA9IHRoaXNfY3B1X3B0cigma21lbWNoZWNrX2Nv bnRleHQpOwotCXVuc2lnbmVkIGludCBpOwotCXVuc2lnbmVkIGludCBuOwotCi0JbiA9IDA7Ci0J Zm9yIChpID0gMDsgaSA8IGRhdGEtPm5fYWRkcnM7ICsraSkKLQkJbiArPSBrbWVtY2hlY2tfaGlk ZV9hZGRyKGRhdGEtPmFkZHJbaV0pOwotCi0JcmV0dXJuIG47Ci19Ci0KLS8qCi0gKiBDYWxsZWQg ZnJvbSB0aGUgI1BGIGhhbmRsZXIuCi0gKi8KLXZvaWQga21lbWNoZWNrX3Nob3coc3RydWN0IHB0 X3JlZ3MgKnJlZ3MpCi17Ci0Jc3RydWN0IGttZW1jaGVja19jb250ZXh0ICpkYXRhID0gdGhpc19j cHVfcHRyKCZrbWVtY2hlY2tfY29udGV4dCk7Ci0KLQlCVUdfT04oIWlycXNfZGlzYWJsZWQoKSk7 Ci0KLQlpZiAodW5saWtlbHkoZGF0YS0+YmFsYW5jZSAhPSAwKSkgewotCQlrbWVtY2hlY2tfc2hv d19hbGwoKTsKLQkJa21lbWNoZWNrX2Vycm9yX3NhdmVfYnVnKHJlZ3MpOwotCQlkYXRhLT5iYWxh bmNlID0gMDsKLQkJcmV0dXJuOwotCX0KLQotCS8qCi0JICogTm9uZSBvZiB0aGUgYWRkcmVzc2Vz IGFjdHVhbGx5IGJlbG9uZ2VkIHRvIGttZW1jaGVjay4gTm90ZSB0aGF0Ci0JICogdGhpcyBpcyBu b3QgYW4gZXJyb3IuCi0JICovCi0JaWYgKGttZW1jaGVja19zaG93X2FsbCgpID09IDApCi0JCXJl dHVybjsKLQotCSsrZGF0YS0+YmFsYW5jZTsKLQotCS8qCi0JICogVGhlIElGIG5lZWRzIHRvIGJl IGNsZWFyZWQgYXMgd2VsbCwgc28gdGhhdCB0aGUgZmF1bHRpbmcKLQkgKiBpbnN0cnVjdGlvbiBj YW4gcnVuICJ1bmludGVycnVwdGVkIi4gT3RoZXJ3aXNlLCB3ZSBtaWdodCB0YWtlCi0JICogYW4g aW50ZXJydXB0IGFuZCBzdGFydCBleGVjdXRpbmcgdGhhdCBiZWZvcmUgd2UndmUgaGFkIGEgY2hh bmNlCi0JICogdG8gaGlkZSB0aGUgcGFnZSBhZ2Fpbi4KLQkgKgotCSAqIE5PVEU6IEluIHRoZSBy YXJlIGNhc2Ugb2YgbXVsdGlwbGUgZmF1bHRzLCB3ZSBtdXN0IG5vdCBvdmVycmlkZQotCSAqIHRo ZSBvcmlnaW5hbCBmbGFnczoKLQkgKi8KLQlpZiAoIShyZWdzLT5mbGFncyAmIFg4Nl9FRkxBR1Nf VEYpKQotCQlkYXRhLT5mbGFncyA9IHJlZ3MtPmZsYWdzOwotCi0JcmVncy0+ZmxhZ3MgfD0gWDg2 X0VGTEFHU19URjsKLQlyZWdzLT5mbGFncyAmPSB+WDg2X0VGTEFHU19JRjsKLX0KLQotLyoKLSAq IENhbGxlZCBmcm9tIHRoZSAjREIgaGFuZGxlci4KLSAqLwotdm9pZCBrbWVtY2hlY2tfaGlkZShz dHJ1Y3QgcHRfcmVncyAqcmVncykKLXsKLQlzdHJ1Y3Qga21lbWNoZWNrX2NvbnRleHQgKmRhdGEg PSB0aGlzX2NwdV9wdHIoJmttZW1jaGVja19jb250ZXh0KTsKLQlpbnQgbjsKLQotCUJVR19PTigh aXJxc19kaXNhYmxlZCgpKTsKLQotCWlmICh1bmxpa2VseShkYXRhLT5iYWxhbmNlICE9IDEpKSB7 Ci0JCWttZW1jaGVja19zaG93X2FsbCgpOwotCQlrbWVtY2hlY2tfZXJyb3Jfc2F2ZV9idWcocmVn cyk7Ci0JCWRhdGEtPm5fYWRkcnMgPSAwOwotCQlkYXRhLT5iYWxhbmNlID0gMDsKLQotCQlpZiAo IShkYXRhLT5mbGFncyAmIFg4Nl9FRkxBR1NfVEYpKQotCQkJcmVncy0+ZmxhZ3MgJj0gflg4Nl9F RkxBR1NfVEY7Ci0JCWlmIChkYXRhLT5mbGFncyAmIFg4Nl9FRkxBR1NfSUYpCi0JCQlyZWdzLT5m bGFncyB8PSBYODZfRUZMQUdTX0lGOwotCQlyZXR1cm47Ci0JfQotCi0JaWYgKGttZW1jaGVja19l bmFibGVkKQotCQluID0ga21lbWNoZWNrX2hpZGVfYWxsKCk7Ci0JZWxzZQotCQluID0ga21lbWNo ZWNrX3Nob3dfYWxsKCk7Ci0KLQlpZiAobiA9PSAwKQotCQlyZXR1cm47Ci0KLQktLWRhdGEtPmJh bGFuY2U7Ci0KLQlkYXRhLT5uX2FkZHJzID0gMDsKLQotCWlmICghKGRhdGEtPmZsYWdzICYgWDg2 X0VGTEFHU19URikpCi0JCXJlZ3MtPmZsYWdzICY9IH5YODZfRUZMQUdTX1RGOwotCWlmIChkYXRh LT5mbGFncyAmIFg4Nl9FRkxBR1NfSUYpCi0JCXJlZ3MtPmZsYWdzIHw9IFg4Nl9FRkxBR1NfSUY7 Ci19Ci0KLXZvaWQga21lbWNoZWNrX3Nob3dfcGFnZXMoc3RydWN0IHBhZ2UgKnAsIHVuc2lnbmVk IGludCBuKQotewotCXVuc2lnbmVkIGludCBpOwotCi0JZm9yIChpID0gMDsgaSA8IG47ICsraSkg ewotCQl1bnNpZ25lZCBsb25nIGFkZHJlc3M7Ci0JCXB0ZV90ICpwdGU7Ci0JCXVuc2lnbmVkIGlu dCBsZXZlbDsKLQotCQlhZGRyZXNzID0gKHVuc2lnbmVkIGxvbmcpIHBhZ2VfYWRkcmVzcygmcFtp XSk7Ci0JCXB0ZSA9IGxvb2t1cF9hZGRyZXNzKGFkZHJlc3MsICZsZXZlbCk7Ci0JCUJVR19PTigh cHRlKTsKLQkJQlVHX09OKGxldmVsICE9IFBHX0xFVkVMXzRLKTsKLQotCQlzZXRfcHRlKHB0ZSwg X19wdGUocHRlX3ZhbCgqcHRlKSB8IF9QQUdFX1BSRVNFTlQpKTsKLQkJc2V0X3B0ZShwdGUsIF9f cHRlKHB0ZV92YWwoKnB0ZSkgJiB+X1BBR0VfSElEREVOKSk7Ci0JCV9fZmx1c2hfdGxiX29uZShh ZGRyZXNzKTsKLQl9Ci19Ci0KLWJvb2wga21lbWNoZWNrX3BhZ2VfaXNfdHJhY2tlZChzdHJ1Y3Qg cGFnZSAqcCkKLXsKLQkvKiBUaGlzIHdpbGwgYWxzbyBjaGVjayB0aGUgImhpZGRlbiIgZmxhZyBv ZiB0aGUgUFRFLiAqLwotCXJldHVybiBrbWVtY2hlY2tfcHRlX2xvb2t1cCgodW5zaWduZWQgbG9u ZykgcGFnZV9hZGRyZXNzKHApKTsKLX0KLQotdm9pZCBrbWVtY2hlY2tfaGlkZV9wYWdlcyhzdHJ1 Y3QgcGFnZSAqcCwgdW5zaWduZWQgaW50IG4pCi17Ci0JdW5zaWduZWQgaW50IGk7Ci0KLQlmb3Ig KGkgPSAwOyBpIDwgbjsgKytpKSB7Ci0JCXVuc2lnbmVkIGxvbmcgYWRkcmVzczsKLQkJcHRlX3Qg KnB0ZTsKLQkJdW5zaWduZWQgaW50IGxldmVsOwotCi0JCWFkZHJlc3MgPSAodW5zaWduZWQgbG9u ZykgcGFnZV9hZGRyZXNzKCZwW2ldKTsKLQkJcHRlID0gbG9va3VwX2FkZHJlc3MoYWRkcmVzcywg JmxldmVsKTsKLQkJQlVHX09OKCFwdGUpOwotCQlCVUdfT04obGV2ZWwgIT0gUEdfTEVWRUxfNEsp OwotCi0JCXNldF9wdGUocHRlLCBfX3B0ZShwdGVfdmFsKCpwdGUpICYgfl9QQUdFX1BSRVNFTlQp KTsKLQkJc2V0X3B0ZShwdGUsIF9fcHRlKHB0ZV92YWwoKnB0ZSkgfCBfUEFHRV9ISURERU4pKTsK LQkJX19mbHVzaF90bGJfb25lKGFkZHJlc3MpOwotCX0KLX0KLQotLyogQWNjZXNzIG1heSBOT1Qg Y3Jvc3MgcGFnZSBib3VuZGFyeSAqLwotc3RhdGljIHZvaWQga21lbWNoZWNrX3JlYWRfc3RyaWN0 KHN0cnVjdCBwdF9yZWdzICpyZWdzLAotCXVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgaW50 IHNpemUpCi17Ci0Jdm9pZCAqc2hhZG93OwotCWVudW0ga21lbWNoZWNrX3NoYWRvdyBzdGF0dXM7 Ci0KLQlzaGFkb3cgPSBrbWVtY2hlY2tfc2hhZG93X2xvb2t1cChhZGRyKTsKLQlpZiAoIXNoYWRv dykKLQkJcmV0dXJuOwotCi0Ja21lbWNoZWNrX3NhdmVfYWRkcihhZGRyKTsKLQlzdGF0dXMgPSBr bWVtY2hlY2tfc2hhZG93X3Rlc3Qoc2hhZG93LCBzaXplKTsKLQlpZiAoc3RhdHVzID09IEtNRU1D SEVDS19TSEFET1dfSU5JVElBTElaRUQpCi0JCXJldHVybjsKLQotCWlmIChrbWVtY2hlY2tfZW5h YmxlZCkKLQkJa21lbWNoZWNrX2Vycm9yX3NhdmUoc3RhdHVzLCBhZGRyLCBzaXplLCByZWdzKTsK LQotCWlmIChrbWVtY2hlY2tfZW5hYmxlZCA9PSAyKQotCQlrbWVtY2hlY2tfZW5hYmxlZCA9IDA7 Ci0KLQkvKiBEb24ndCB3YXJuIGFib3V0IGl0IGFnYWluLiAqLwotCWttZW1jaGVja19zaGFkb3df c2V0KHNoYWRvdywgc2l6ZSk7Ci19Ci0KLWJvb2wga21lbWNoZWNrX2lzX29ial9pbml0aWFsaXpl ZCh1bnNpZ25lZCBsb25nIGFkZHIsIHNpemVfdCBzaXplKQotewotCWVudW0ga21lbWNoZWNrX3No YWRvdyBzdGF0dXM7Ci0Jdm9pZCAqc2hhZG93OwotCi0Jc2hhZG93ID0ga21lbWNoZWNrX3NoYWRv d19sb29rdXAoYWRkcik7Ci0JaWYgKCFzaGFkb3cpCi0JCXJldHVybiB0cnVlOwotCi0Jc3RhdHVz ID0ga21lbWNoZWNrX3NoYWRvd190ZXN0X2FsbChzaGFkb3csIHNpemUpOwotCi0JcmV0dXJuIHN0 YXR1cyA9PSBLTUVNQ0hFQ0tfU0hBRE9XX0lOSVRJQUxJWkVEOwotfQotCi0vKiBBY2Nlc3MgbWF5 IGNyb3NzIHBhZ2UgYm91bmRhcnkgKi8KLXN0YXRpYyB2b2lkIGttZW1jaGVja19yZWFkKHN0cnVj dCBwdF9yZWdzICpyZWdzLAotCXVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgaW50IHNpemUp Ci17Ci0JdW5zaWduZWQgbG9uZyBwYWdlID0gYWRkciAmIFBBR0VfTUFTSzsKLQl1bnNpZ25lZCBs b25nIG5leHRfYWRkciA9IGFkZHIgKyBzaXplIC0gMTsKLQl1bnNpZ25lZCBsb25nIG5leHRfcGFn ZSA9IG5leHRfYWRkciAmIFBBR0VfTUFTSzsKLQotCWlmIChsaWtlbHkocGFnZSA9PSBuZXh0X3Bh Z2UpKSB7Ci0JCWttZW1jaGVja19yZWFkX3N0cmljdChyZWdzLCBhZGRyLCBzaXplKTsKLQkJcmV0 dXJuOwotCX0KLQotCS8qCi0JICogV2hhdCB3ZSBkbyBpcyBiYXNpY2FsbHkgdG8gc3BsaXQgdGhl IGFjY2VzcyBhY3Jvc3MgdGhlCi0JICogdHdvIHBhZ2VzIGFuZCBoYW5kbGUgZWFjaCBwYXJ0IHNl cGFyYXRlbHkuIFllcywgdGhpcyBtZWFucwotCSAqIHRoYXQgd2UgbWF5IG5vdyBzZWUgcmVhZHMg dGhhdCBhcmUgMyArIDUgYnl0ZXMsIGZvcgotCSAqIGV4YW1wbGUgKGFuZCBpZiBib3RoIGFyZSB1 bmluaXRpYWxpemVkLCB0aGVyZSB3aWxsIGJlIHR3bwotCSAqIHJlcG9ydHMpLCBidXQgaXQgbWFr ZXMgdGhlIGNvZGUgYSBsb3Qgc2ltcGxlci4KLQkgKi8KLQlrbWVtY2hlY2tfcmVhZF9zdHJpY3Qo cmVncywgYWRkciwgbmV4dF9wYWdlIC0gYWRkcik7Ci0Ja21lbWNoZWNrX3JlYWRfc3RyaWN0KHJl Z3MsIG5leHRfcGFnZSwgbmV4dF9hZGRyIC0gbmV4dF9wYWdlKTsKLX0KLQotc3RhdGljIHZvaWQg a21lbWNoZWNrX3dyaXRlX3N0cmljdChzdHJ1Y3QgcHRfcmVncyAqcmVncywKLQl1bnNpZ25lZCBs b25nIGFkZHIsIHVuc2lnbmVkIGludCBzaXplKQotewotCXZvaWQgKnNoYWRvdzsKLQotCXNoYWRv dyA9IGttZW1jaGVja19zaGFkb3dfbG9va3VwKGFkZHIpOwotCWlmICghc2hhZG93KQotCQlyZXR1 cm47Ci0KLQlrbWVtY2hlY2tfc2F2ZV9hZGRyKGFkZHIpOwotCWttZW1jaGVja19zaGFkb3dfc2V0 KHNoYWRvdywgc2l6ZSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGttZW1jaGVja193cml0ZShzdHJ1Y3Qg cHRfcmVncyAqcmVncywKLQl1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGludCBzaXplKQot ewotCXVuc2lnbmVkIGxvbmcgcGFnZSA9IGFkZHIgJiBQQUdFX01BU0s7Ci0JdW5zaWduZWQgbG9u ZyBuZXh0X2FkZHIgPSBhZGRyICsgc2l6ZSAtIDE7Ci0JdW5zaWduZWQgbG9uZyBuZXh0X3BhZ2Ug PSBuZXh0X2FkZHIgJiBQQUdFX01BU0s7Ci0KLQlpZiAobGlrZWx5KHBhZ2UgPT0gbmV4dF9wYWdl KSkgewotCQlrbWVtY2hlY2tfd3JpdGVfc3RyaWN0KHJlZ3MsIGFkZHIsIHNpemUpOwotCQlyZXR1 cm47Ci0JfQotCi0JLyogU2VlIGNvbW1lbnQgaW4ga21lbWNoZWNrX3JlYWQoKS4gKi8KLQlrbWVt Y2hlY2tfd3JpdGVfc3RyaWN0KHJlZ3MsIGFkZHIsIG5leHRfcGFnZSAtIGFkZHIpOwotCWttZW1j aGVja193cml0ZV9zdHJpY3QocmVncywgbmV4dF9wYWdlLCBuZXh0X2FkZHIgLSBuZXh0X3BhZ2Up OwotfQotCi0vKgotICogQ29weWluZyBpcyBoYXJkLiBXZSBoYXZlIHR3byBhZGRyZXNzZXMsIGVh Y2ggb2Ygd2hpY2ggbWF5IGJlIHNwbGl0IGFjcm9zcwotICogYSBwYWdlIChhbmQgZWFjaCBwYWdl IHdpbGwgaGF2ZSBkaWZmZXJlbnQgc2hhZG93IGFkZHJlc3NlcykuCi0gKi8KLXN0YXRpYyB2b2lk IGttZW1jaGVja19jb3B5KHN0cnVjdCBwdF9yZWdzICpyZWdzLAotCXVuc2lnbmVkIGxvbmcgc3Jj X2FkZHIsIHVuc2lnbmVkIGxvbmcgZHN0X2FkZHIsIHVuc2lnbmVkIGludCBzaXplKQotewotCXVp bnQ4X3Qgc2hhZG93WzhdOwotCWVudW0ga21lbWNoZWNrX3NoYWRvdyBzdGF0dXM7Ci0KLQl1bnNp Z25lZCBsb25nIHBhZ2U7Ci0JdW5zaWduZWQgbG9uZyBuZXh0X2FkZHI7Ci0JdW5zaWduZWQgbG9u ZyBuZXh0X3BhZ2U7Ci0KLQl1aW50OF90ICp4OwotCXVuc2lnbmVkIGludCBpOwotCXVuc2lnbmVk IGludCBuOwotCi0JQlVHX09OKHNpemUgPiBzaXplb2Yoc2hhZG93KSk7Ci0KLQlwYWdlID0gc3Jj X2FkZHIgJiBQQUdFX01BU0s7Ci0JbmV4dF9hZGRyID0gc3JjX2FkZHIgKyBzaXplIC0gMTsKLQlu ZXh0X3BhZ2UgPSBuZXh0X2FkZHIgJiBQQUdFX01BU0s7Ci0KLQlpZiAobGlrZWx5KHBhZ2UgPT0g bmV4dF9wYWdlKSkgewotCQkvKiBTYW1lIHBhZ2UgKi8KLQkJeCA9IGttZW1jaGVja19zaGFkb3df bG9va3VwKHNyY19hZGRyKTsKLQkJaWYgKHgpIHsKLQkJCWttZW1jaGVja19zYXZlX2FkZHIoc3Jj X2FkZHIpOwotCQkJZm9yIChpID0gMDsgaSA8IHNpemU7ICsraSkKLQkJCQlzaGFkb3dbaV0gPSB4 W2ldOwotCQl9IGVsc2UgewotCQkJZm9yIChpID0gMDsgaSA8IHNpemU7ICsraSkKLQkJCQlzaGFk b3dbaV0gPSBLTUVNQ0hFQ0tfU0hBRE9XX0lOSVRJQUxJWkVEOwotCQl9Ci0JfSBlbHNlIHsKLQkJ biA9IG5leHRfcGFnZSAtIHNyY19hZGRyOwotCQlCVUdfT04obiA+IHNpemVvZihzaGFkb3cpKTsK LQotCQkvKiBGaXJzdCBwYWdlICovCi0JCXggPSBrbWVtY2hlY2tfc2hhZG93X2xvb2t1cChzcmNf YWRkcik7Ci0JCWlmICh4KSB7Ci0JCQlrbWVtY2hlY2tfc2F2ZV9hZGRyKHNyY19hZGRyKTsKLQkJ CWZvciAoaSA9IDA7IGkgPCBuOyArK2kpCi0JCQkJc2hhZG93W2ldID0geFtpXTsKLQkJfSBlbHNl IHsKLQkJCS8qIE5vdCB0cmFja2VkICovCi0JCQlmb3IgKGkgPSAwOyBpIDwgbjsgKytpKQotCQkJ CXNoYWRvd1tpXSA9IEtNRU1DSEVDS19TSEFET1dfSU5JVElBTElaRUQ7Ci0JCX0KLQotCQkvKiBT ZWNvbmQgcGFnZSAqLwotCQl4ID0ga21lbWNoZWNrX3NoYWRvd19sb29rdXAobmV4dF9wYWdlKTsK LQkJaWYgKHgpIHsKLQkJCWttZW1jaGVja19zYXZlX2FkZHIobmV4dF9wYWdlKTsKLQkJCWZvciAo aSA9IG47IGkgPCBzaXplOyArK2kpCi0JCQkJc2hhZG93W2ldID0geFtpIC0gbl07Ci0JCX0gZWxz ZSB7Ci0JCQkvKiBOb3QgdHJhY2tlZCAqLwotCQkJZm9yIChpID0gbjsgaSA8IHNpemU7ICsraSkK LQkJCQlzaGFkb3dbaV0gPSBLTUVNQ0hFQ0tfU0hBRE9XX0lOSVRJQUxJWkVEOwotCQl9Ci0JfQot Ci0JcGFnZSA9IGRzdF9hZGRyICYgUEFHRV9NQVNLOwotCW5leHRfYWRkciA9IGRzdF9hZGRyICsg c2l6ZSAtIDE7Ci0JbmV4dF9wYWdlID0gbmV4dF9hZGRyICYgUEFHRV9NQVNLOwotCi0JaWYgKGxp a2VseShwYWdlID09IG5leHRfcGFnZSkpIHsKLQkJLyogU2FtZSBwYWdlICovCi0JCXggPSBrbWVt Y2hlY2tfc2hhZG93X2xvb2t1cChkc3RfYWRkcik7Ci0JCWlmICh4KSB7Ci0JCQlrbWVtY2hlY2tf c2F2ZV9hZGRyKGRzdF9hZGRyKTsKLQkJCWZvciAoaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLQkJ CQl4W2ldID0gc2hhZG93W2ldOwotCQkJCXNoYWRvd1tpXSA9IEtNRU1DSEVDS19TSEFET1dfSU5J VElBTElaRUQ7Ci0JCQl9Ci0JCX0KLQl9IGVsc2UgewotCQluID0gbmV4dF9wYWdlIC0gZHN0X2Fk ZHI7Ci0JCUJVR19PTihuID4gc2l6ZW9mKHNoYWRvdykpOwotCi0JCS8qIEZpcnN0IHBhZ2UgKi8K LQkJeCA9IGttZW1jaGVja19zaGFkb3dfbG9va3VwKGRzdF9hZGRyKTsKLQkJaWYgKHgpIHsKLQkJ CWttZW1jaGVja19zYXZlX2FkZHIoZHN0X2FkZHIpOwotCQkJZm9yIChpID0gMDsgaSA8IG47ICsr aSkgewotCQkJCXhbaV0gPSBzaGFkb3dbaV07Ci0JCQkJc2hhZG93W2ldID0gS01FTUNIRUNLX1NI QURPV19JTklUSUFMSVpFRDsKLQkJCX0KLQkJfQotCi0JCS8qIFNlY29uZCBwYWdlICovCi0JCXgg PSBrbWVtY2hlY2tfc2hhZG93X2xvb2t1cChuZXh0X3BhZ2UpOwotCQlpZiAoeCkgewotCQkJa21l bWNoZWNrX3NhdmVfYWRkcihuZXh0X3BhZ2UpOwotCQkJZm9yIChpID0gbjsgaSA8IHNpemU7ICsr aSkgewotCQkJCXhbaSAtIG5dID0gc2hhZG93W2ldOwotCQkJCXNoYWRvd1tpXSA9IEtNRU1DSEVD S19TSEFET1dfSU5JVElBTElaRUQ7Ci0JCQl9Ci0JCX0KLQl9Ci0KLQlzdGF0dXMgPSBrbWVtY2hl Y2tfc2hhZG93X3Rlc3Qoc2hhZG93LCBzaXplKTsKLQlpZiAoc3RhdHVzID09IEtNRU1DSEVDS19T SEFET1dfSU5JVElBTElaRUQpCi0JCXJldHVybjsKLQotCWlmIChrbWVtY2hlY2tfZW5hYmxlZCkK LQkJa21lbWNoZWNrX2Vycm9yX3NhdmUoc3RhdHVzLCBzcmNfYWRkciwgc2l6ZSwgcmVncyk7Ci0K LQlpZiAoa21lbWNoZWNrX2VuYWJsZWQgPT0gMikKLQkJa21lbWNoZWNrX2VuYWJsZWQgPSAwOwot fQotCi1lbnVtIGttZW1jaGVja19tZXRob2QgewotCUtNRU1DSEVDS19SRUFELAotCUtNRU1DSEVD S19XUklURSwKLX07Ci0KLXN0YXRpYyB2b2lkIGttZW1jaGVja19hY2Nlc3Moc3RydWN0IHB0X3Jl Z3MgKnJlZ3MsCi0JdW5zaWduZWQgbG9uZyBmYWxsYmFja19hZGRyZXNzLCBlbnVtIGttZW1jaGVj a19tZXRob2QgZmFsbGJhY2tfbWV0aG9kKQotewotCWNvbnN0IHVpbnQ4X3QgKmluc247Ci0JY29u c3QgdWludDhfdCAqaW5zbl9wcmltYXJ5OwotCXVuc2lnbmVkIGludCBzaXplOwotCi0Jc3RydWN0 IGttZW1jaGVja19jb250ZXh0ICpkYXRhID0gdGhpc19jcHVfcHRyKCZrbWVtY2hlY2tfY29udGV4 dCk7Ci0KLQkvKiBSZWN1cnNpdmUgZmF1bHQgLS0gb3VjaC4gKi8KLQlpZiAoZGF0YS0+YnVzeSkg ewotCQlrbWVtY2hlY2tfc2hvd19hZGRyKGZhbGxiYWNrX2FkZHJlc3MpOwotCQlrbWVtY2hlY2tf ZXJyb3Jfc2F2ZV9idWcocmVncyk7Ci0JCXJldHVybjsKLQl9Ci0KLQlkYXRhLT5idXN5ID0gdHJ1 ZTsKLQotCWluc24gPSAoY29uc3QgdWludDhfdCAqKSByZWdzLT5pcDsKLQlpbnNuX3ByaW1hcnkg PSBrbWVtY2hlY2tfb3Bjb2RlX2dldF9wcmltYXJ5KGluc24pOwotCi0Ja21lbWNoZWNrX29wY29k ZV9kZWNvZGUoaW5zbiwgJnNpemUpOwotCi0Jc3dpdGNoIChpbnNuX3ByaW1hcnlbMF0pIHsKLSNp ZmRlZiBDT05GSUdfS01FTUNIRUNLX0JJVE9QU19PSwotCQkvKiBBTkQsIE9SLCBYT1IgKi8KLQkJ LyoKLQkJICogVW5mb3J0dW5hdGVseSwgdGhlc2UgaW5zdHJ1Y3Rpb25zIGhhdmUgdG8gYmUgZXhj bHVkZWQgZnJvbQotCQkgKiBvdXIgcmVndWxhciBjaGVja2luZyBzaW5jZSB0aGV5IGFjY2VzcyBv bmx5IHNvbWUgKGFuZCBub3QKLQkJICogYWxsKSBiaXRzLiBUaGlzIGNsZWFycyBvdXQgImJvZ3Vz IiBiaXRmaWVsZC1hY2Nlc3Mgd2FybmluZ3MuCi0JCSAqLwotCWNhc2UgMHg4MDoKLQljYXNlIDB4 ODE6Ci0JY2FzZSAweDgyOgotCWNhc2UgMHg4MzoKLQkJc3dpdGNoICgoaW5zbl9wcmltYXJ5WzFd ID4+IDMpICYgNykgewotCQkJLyogT1IgKi8KLQkJY2FzZSAxOgotCQkJLyogQU5EICovCi0JCWNh c2UgNDoKLQkJCS8qIFhPUiAqLwotCQljYXNlIDY6Ci0JCQlrbWVtY2hlY2tfd3JpdGUocmVncywg ZmFsbGJhY2tfYWRkcmVzcywgc2l6ZSk7Ci0JCQlnb3RvIG91dDsKLQotCQkJLyogQUREICovCi0J CWNhc2UgMDoKLQkJCS8qIEFEQyAqLwotCQljYXNlIDI6Ci0JCQkvKiBTQkIgKi8KLQkJY2FzZSAz OgotCQkJLyogU1VCICovCi0JCWNhc2UgNToKLQkJCS8qIENNUCAqLwotCQljYXNlIDc6Ci0JCQli cmVhazsKLQkJfQotCQlicmVhazsKLSNlbmRpZgotCi0JCS8qIE1PVlMsIE1PVlNCLCBNT1ZTVywg TU9WU0QgKi8KLQljYXNlIDB4YTQ6Ci0JY2FzZSAweGE1OgotCQkvKgotCQkgKiBUaGVzZSBpbnN0 cnVjdGlvbnMgYXJlIHNwZWNpYWwgYmVjYXVzZSB0aGV5IHRha2UgdHdvCi0JCSAqIGFkZHJlc3Nl cywgYnV0IHdlIG9ubHkgZ2V0IG9uZSBwYWdlIGZhdWx0LgotCQkgKi8KLQkJa21lbWNoZWNrX2Nv cHkocmVncywgcmVncy0+c2ksIHJlZ3MtPmRpLCBzaXplKTsKLQkJZ290byBvdXQ7Ci0KLQkJLyog Q01QUywgQ01QU0IsIENNUFNXLCBDTVBTRCAqLwotCWNhc2UgMHhhNjoKLQljYXNlIDB4YTc6Ci0J CWttZW1jaGVja19yZWFkKHJlZ3MsIHJlZ3MtPnNpLCBzaXplKTsKLQkJa21lbWNoZWNrX3JlYWQo cmVncywgcmVncy0+ZGksIHNpemUpOwotCQlnb3RvIG91dDsKLQl9Ci0KLQkvKgotCSAqIElmIHRo ZSBvcGNvZGUgaXNuJ3Qgc3BlY2lhbCBpbiBhbnkgd2F5LCB3ZSB1c2UgdGhlIGRhdGEgZnJvbSB0 aGUKLQkgKiBwYWdlIGZhdWx0IGhhbmRsZXIgdG8gZGV0ZXJtaW5lIHRoZSBhZGRyZXNzIGFuZCB0 eXBlIG9mIG1lbW9yeQotCSAqIGFjY2Vzcy4KLQkgKi8KLQlzd2l0Y2ggKGZhbGxiYWNrX21ldGhv ZCkgewotCWNhc2UgS01FTUNIRUNLX1JFQUQ6Ci0JCWttZW1jaGVja19yZWFkKHJlZ3MsIGZhbGxi YWNrX2FkZHJlc3MsIHNpemUpOwotCQlnb3RvIG91dDsKLQljYXNlIEtNRU1DSEVDS19XUklURToK LQkJa21lbWNoZWNrX3dyaXRlKHJlZ3MsIGZhbGxiYWNrX2FkZHJlc3MsIHNpemUpOwotCQlnb3Rv IG91dDsKLQl9Ci0KLW91dDoKLQlkYXRhLT5idXN5ID0gZmFsc2U7Ci19Ci0KLWJvb2wga21lbWNo ZWNrX2ZhdWx0KHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsCi0J dW5zaWduZWQgbG9uZyBlcnJvcl9jb2RlKQotewotCXB0ZV90ICpwdGU7Ci0KLQkvKgotCSAqIFhY WDogSXMgaXQgc2FmZSB0byBhc3N1bWUgdGhhdCBtZW1vcnkgYWNjZXNzZXMgZnJvbSB2aXJ0dWFs IDg2Ci0JICogbW9kZSBvciBub24ta2VybmVsIGNvZGUgc2VnbWVudHMgd2lsbCBfbmV2ZXJfIGFj Y2VzcyBrZXJuZWwKLQkgKiBtZW1vcnkgKGUuZy4gdHJhY2tlZCBwYWdlcyk/IEZvciBub3csIHdl IG5lZWQgdGhpcyB0byBhdm9pZAotCSAqIGludm9raW5nIGttZW1jaGVjayBmb3IgUG5QIEJJT1Mg Y2FsbHMuCi0JICovCi0JaWYgKHJlZ3MtPmZsYWdzICYgWDg2X1ZNX01BU0spCi0JCXJldHVybiBm YWxzZTsKLQlpZiAocmVncy0+Y3MgIT0gX19LRVJORUxfQ1MpCi0JCXJldHVybiBmYWxzZTsKLQot CXB0ZSA9IGttZW1jaGVja19wdGVfbG9va3VwKGFkZHJlc3MpOwotCWlmICghcHRlKQotCQlyZXR1 cm4gZmFsc2U7Ci0KLQlXQVJOX09OX09OQ0UoaW5fbm1pKCkpOwotCi0JaWYgKGVycm9yX2NvZGUg JiAyKQotCQlrbWVtY2hlY2tfYWNjZXNzKHJlZ3MsIGFkZHJlc3MsIEtNRU1DSEVDS19XUklURSk7 Ci0JZWxzZQotCQlrbWVtY2hlY2tfYWNjZXNzKHJlZ3MsIGFkZHJlc3MsIEtNRU1DSEVDS19SRUFE KTsKLQotCWttZW1jaGVja19zaG93KHJlZ3MpOwotCXJldHVybiB0cnVlOwotfQotCi1ib29sIGtt ZW1jaGVja190cmFwKHN0cnVjdCBwdF9yZWdzICpyZWdzKQotewotCWlmICgha21lbWNoZWNrX2Fj dGl2ZShyZWdzKSkKLQkJcmV0dXJuIGZhbHNlOwotCi0JLyogV2UncmUgZG9uZS4gKi8KLQlrbWVt Y2hlY2tfaGlkZShyZWdzKTsKLQlyZXR1cm4gdHJ1ZTsKLX0KZGlmZiAtLWdpdCBhL2FyY2gveDg2 L21tL2ttZW1jaGVjay9vcGNvZGUuYyBiL2FyY2gveDg2L21tL2ttZW1jaGVjay9vcGNvZGUuYwpk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzI0YWEzZi4uMDAwMDAwMAotLS0gYS9hcmNo L3g4Ni9tbS9rbWVtY2hlY2svb3Bjb2RlLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBA QAotI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Ci0KLSNpbmNsdWRlICJvcGNvZGUuaCIKLQotc3Rh dGljIGJvb2wgb3Bjb2RlX2lzX3ByZWZpeCh1aW50OF90IGIpCi17Ci0JcmV0dXJuCi0JCS8qIEdy b3VwIDEgKi8KLQkJYiA9PSAweGYwIHx8IGIgPT0gMHhmMiB8fCBiID09IDB4ZjMKLQkJLyogR3Jv dXAgMiAqLwotCQl8fCBiID09IDB4MmUgfHwgYiA9PSAweDM2IHx8IGIgPT0gMHgzZSB8fCBiID09 IDB4MjYKLQkJfHwgYiA9PSAweDY0IHx8IGIgPT0gMHg2NQotCQkvKiBHcm91cCAzICovCi0JCXx8 IGIgPT0gMHg2NgotCQkvKiBHcm91cCA0ICovCi0JCXx8IGIgPT0gMHg2NzsKLX0KLQotI2lmZGVm IENPTkZJR19YODZfNjQKLXN0YXRpYyBib29sIG9wY29kZV9pc19yZXhfcHJlZml4KHVpbnQ4X3Qg YikKLXsKLQlyZXR1cm4gKGIgJiAweGYwKSA9PSAweDQwOwotfQotI2Vsc2UKLXN0YXRpYyBib29s IG9wY29kZV9pc19yZXhfcHJlZml4KHVpbnQ4X3QgYikKLXsKLQlyZXR1cm4gZmFsc2U7Ci19Ci0j ZW5kaWYKLQotI2RlZmluZSBSRVhfVyAoMSA8PCAzKQotCi0vKgotICogVGhpcyBpcyBhIFZFUlkg Y3J1ZGUgb3Bjb2RlIGRlY29kZXIuIFdlIG9ubHkgbmVlZCB0byBmaW5kIHRoZSBzaXplIG9mIHRo ZQotICogbG9hZC9zdG9yZSB0aGF0IGNhdXNlZCBvdXIgI1BGIGFuZCB0aGlzIHNob3VsZCB3b3Jr IGZvciBhbGwgdGhlIG9wY29kZXMKLSAqIHRoYXQgd2UgY2FyZSBhYm91dC4gTW9yZW92ZXIsIHRo ZSBvbmVzIHdobyBpbnZlbnRlZCB0aGlzIGluc3RydWN0aW9uIHNldAotICogc2hvdWxkIGJlIHNo b3QuCi0gKi8KLXZvaWQga21lbWNoZWNrX29wY29kZV9kZWNvZGUoY29uc3QgdWludDhfdCAqb3As IHVuc2lnbmVkIGludCAqc2l6ZSkKLXsKLQkvKiBEZWZhdWx0IG9wZXJhbmQgc2l6ZSAqLwotCWlu dCBvcGVyYW5kX3NpemVfb3ZlcnJpZGUgPSA0OwotCi0JLyogcHJlZml4ZXMgKi8KLQlmb3IgKDsg b3Bjb2RlX2lzX3ByZWZpeCgqb3ApOyArK29wKSB7Ci0JCWlmICgqb3AgPT0gMHg2NikKLQkJCW9w ZXJhbmRfc2l6ZV9vdmVycmlkZSA9IDI7Ci0JfQotCi0JLyogUkVYIHByZWZpeCAqLwotCWlmIChv cGNvZGVfaXNfcmV4X3ByZWZpeCgqb3ApKSB7Ci0JCXVpbnQ4X3QgcmV4ID0gKm9wOwotCi0JCSsr b3A7Ci0JCWlmIChyZXggJiBSRVhfVykgewotCQkJc3dpdGNoICgqb3ApIHsKLQkJCWNhc2UgMHg2 MzoKLQkJCQkqc2l6ZSA9IDQ7Ci0JCQkJcmV0dXJuOwotCQkJY2FzZSAweDBmOgotCQkJCSsrb3A7 Ci0KLQkJCQlzd2l0Y2ggKCpvcCkgewotCQkJCWNhc2UgMHhiNjoKLQkJCQljYXNlIDB4YmU6Ci0J CQkJCSpzaXplID0gMTsKLQkJCQkJcmV0dXJuOwotCQkJCWNhc2UgMHhiNzoKLQkJCQljYXNlIDB4 YmY6Ci0JCQkJCSpzaXplID0gMjsKLQkJCQkJcmV0dXJuOwotCQkJCX0KLQotCQkJCWJyZWFrOwot CQkJfQotCi0JCQkqc2l6ZSA9IDg7Ci0JCQlyZXR1cm47Ci0JCX0KLQl9Ci0KLQkvKiBlc2NhcGUg b3Bjb2RlICovCi0JaWYgKCpvcCA9PSAweDBmKSB7Ci0JCSsrb3A7Ci0KLQkJLyoKLQkJICogVGhp cyBpcyBtb3ZlIHdpdGggemVyby1leHRlbmQgYW5kIHNpZ24tZXh0ZW5kLCByZXNwZWN0aXZlbHk7 Ci0JCSAqIHdlIGRvbid0IGhhdmUgdG8gdGhpbmsgYWJvdXQgMHhiNi8weGJlLCBiZWNhdXNlIHRo aXMgaXMKLQkJICogYWxyZWFkeSBoYW5kbGVkIGluIHRoZSBjb25kaXRpb25hbCBiZWxvdy4KLQkJ ICovCi0JCWlmICgqb3AgPT0gMHhiNyB8fCAqb3AgPT0gMHhiZikKLQkJCW9wZXJhbmRfc2l6ZV9v dmVycmlkZSA9IDI7Ci0JfQotCi0JKnNpemUgPSAoKm9wICYgMSkgPyBvcGVyYW5kX3NpemVfb3Zl cnJpZGUgOiAxOwotfQotCi1jb25zdCB1aW50OF90ICprbWVtY2hlY2tfb3Bjb2RlX2dldF9wcmlt YXJ5KGNvbnN0IHVpbnQ4X3QgKm9wKQotewotCS8qIHNraXAgcHJlZml4ZXMgKi8KLQl3aGlsZSAo b3Bjb2RlX2lzX3ByZWZpeCgqb3ApKQotCQkrK29wOwotCWlmIChvcGNvZGVfaXNfcmV4X3ByZWZp eCgqb3ApKQotCQkrK29wOwotCXJldHVybiBvcDsKLX0KZGlmZiAtLWdpdCBhL2FyY2gveDg2L21t L2ttZW1jaGVjay9vcGNvZGUuaCBiL2FyY2gveDg2L21tL2ttZW1jaGVjay9vcGNvZGUuaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjk1NmFhZC4uMDAwMDAwMAotLS0gYS9hcmNoL3g4 Ni9tbS9rbWVtY2hlY2svb3Bjb2RlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLSNp Zm5kZWYgQVJDSF9fWDg2X19NTV9fS01FTUNIRUNLX19PUENPREVfSAotI2RlZmluZSBBUkNIX19Y ODZfX01NX19LTUVNQ0hFQ0tfX09QQ09ERV9ICi0KLSNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgot Ci12b2lkIGttZW1jaGVja19vcGNvZGVfZGVjb2RlKGNvbnN0IHVpbnQ4X3QgKm9wLCB1bnNpZ25l ZCBpbnQgKnNpemUpOwotY29uc3QgdWludDhfdCAqa21lbWNoZWNrX29wY29kZV9nZXRfcHJpbWFy eShjb25zdCB1aW50OF90ICpvcCk7Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvbW0v a21lbWNoZWNrL3B0ZS5jIGIvYXJjaC94ODYvbW0va21lbWNoZWNrL3B0ZS5jCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCA0ZWFkMjZlLi4wMDAwMDAwCi0tLSBhL2FyY2gveDg2L21tL2tt ZW1jaGVjay9wdGUuYworKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLSNpbmNsdWRlIDxs aW51eC9tbS5oPgotCi0jaW5jbHVkZSA8YXNtL3BndGFibGUuaD4KLQotI2luY2x1ZGUgInB0ZS5o IgotCi1wdGVfdCAqa21lbWNoZWNrX3B0ZV9sb29rdXAodW5zaWduZWQgbG9uZyBhZGRyZXNzKQot ewotCXB0ZV90ICpwdGU7Ci0JdW5zaWduZWQgaW50IGxldmVsOwotCi0JcHRlID0gbG9va3VwX2Fk ZHJlc3MoYWRkcmVzcywgJmxldmVsKTsKLQlpZiAoIXB0ZSkKLQkJcmV0dXJuIE5VTEw7Ci0JaWYg KGxldmVsICE9IFBHX0xFVkVMXzRLKQotCQlyZXR1cm4gTlVMTDsKLQlpZiAoIXB0ZV9oaWRkZW4o KnB0ZSkpCi0JCXJldHVybiBOVUxMOwotCi0JcmV0dXJuIHB0ZTsKLX0KLQpkaWZmIC0tZ2l0IGEv YXJjaC94ODYvbW0va21lbWNoZWNrL3B0ZS5oIGIvYXJjaC94ODYvbW0va21lbWNoZWNrL3B0ZS5o CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZjU5NjY0Li4wMDAwMDAwCi0tLSBhL2Fy Y2gveDg2L21tL2ttZW1jaGVjay9wdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAK LSNpZm5kZWYgQVJDSF9fWDg2X19NTV9fS01FTUNIRUNLX19QVEVfSAotI2RlZmluZSBBUkNIX19Y ODZfX01NX19LTUVNQ0hFQ0tfX1BURV9ICi0KLSNpbmNsdWRlIDxsaW51eC9tbS5oPgotCi0jaW5j bHVkZSA8YXNtL3BndGFibGUuaD4KLQotcHRlX3QgKmttZW1jaGVja19wdGVfbG9va3VwKHVuc2ln bmVkIGxvbmcgYWRkcmVzcyk7Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvbW0va21l bWNoZWNrL3NlbGZ0ZXN0LmMgYi9hcmNoL3g4Ni9tbS9rbWVtY2hlY2svc2VsZnRlc3QuYwpkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVmNzE0MC4uMDAwMDAwMAotLS0gYS9hcmNoL3g4 Ni9tbS9rbWVtY2hlY2svc2VsZnRlc3QuYworKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAK LSNpbmNsdWRlIDxsaW51eC9idWcuaD4KLSNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KLQotI2lu Y2x1ZGUgIm9wY29kZS5oIgotI2luY2x1ZGUgInNlbGZ0ZXN0LmgiCi0KLXN0cnVjdCBzZWxmdGVz dF9vcGNvZGUgewotCXVuc2lnbmVkIGludCBleHBlY3RlZF9zaXplOwotCWNvbnN0IHVpbnQ4X3Qg Kmluc247Ci0JY29uc3QgY2hhciAqZGVzYzsKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2Vs ZnRlc3Rfb3Bjb2RlIHNlbGZ0ZXN0X29wY29kZXNbXSA9IHsKLQkvKiBSRVAgTU9WUyAqLwotCXsx LCAiXHhmM1x4YTQiLCAJCSJyZXAgbW92c2IgPG1lbTg+LCA8bWVtOD4ifSwKLQl7NCwgIlx4ZjNc eGE1IiwJCQkicmVwIG1vdnNsIDxtZW0zMj4sIDxtZW0zMj4ifSwKLQotCS8qIE1PVlpYIC8gTU9W WlhEICovCi0JezEsICJceDY2XHgwZlx4YjZceDUxXHhmOCIsCSJtb3Z6d3EgPG1lbTg+LCA8cmVn MTY+In0sCi0JezEsICJceDBmXHhiNlx4NTFceGY4IiwJCSJtb3Z6d3EgPG1lbTg+LCA8cmVnMzI+ In0sCi0KLQkvKiBNT1ZTWCAvIE1PVlNYRCAqLwotCXsxLCAiXHg2Nlx4MGZceGJlXHg1MVx4Zjgi LAkibW92c3dxIDxtZW04PiwgPHJlZzE2PiJ9LAotCXsxLCAiXHgwZlx4YmVceDUxXHhmOCIsCQki bW92c3dxIDxtZW04PiwgPHJlZzMyPiJ9LAotCi0jaWZkZWYgQ09ORklHX1g4Nl82NAotCS8qIE1P VlpYIC8gTU9WWlhEICovCi0JezEsICJceDQ5XHgwZlx4YjZceDUxXHhmOCIsCSJtb3Z6YnEgPG1l bTg+LCA8cmVnNjQ+In0sCi0JezIsICJceDQ5XHgwZlx4YjdceDUxXHhmOCIsCSJtb3Z6YnEgPG1l bTE2PiwgPHJlZzY0PiJ9LAotCi0JLyogTU9WU1ggLyBNT1ZTWEQgKi8KLQl7MSwgIlx4NDlceDBm XHhiZVx4NTFceGY4IiwJIm1vdnNicSA8bWVtOD4sIDxyZWc2ND4ifSwKLQl7MiwgIlx4NDlceDBm XHhiZlx4NTFceGY4IiwJIm1vdnNicSA8bWVtMTY+LCA8cmVnNjQ+In0sCi0JezQsICJceDQ5XHg2 M1x4NTFceGY4IiwJCSJtb3ZzbHEgPG1lbTMyPiwgPHJlZzY0PiJ9LAotI2VuZGlmCi19OwotCi1z dGF0aWMgYm9vbCBzZWxmdGVzdF9vcGNvZGVfb25lKGNvbnN0IHN0cnVjdCBzZWxmdGVzdF9vcGNv ZGUgKm9wKQotewotCXVuc2lnbmVkIHNpemU7Ci0KLQlrbWVtY2hlY2tfb3Bjb2RlX2RlY29kZShv cC0+aW5zbiwgJnNpemUpOwotCi0JaWYgKHNpemUgPT0gb3AtPmV4cGVjdGVkX3NpemUpCi0JCXJl dHVybiB0cnVlOwotCi0JcHJpbnRrKEtFUk5fV0FSTklORyAia21lbWNoZWNrOiBvcGNvZGUgJXM6 IGV4cGVjdGVkIHNpemUgJWQsIGdvdCAlZFxuIiwKLQkJb3AtPmRlc2MsIG9wLT5leHBlY3RlZF9z aXplLCBzaXplKTsKLQlyZXR1cm4gZmFsc2U7Ci19Ci0KLXN0YXRpYyBib29sIHNlbGZ0ZXN0X29w Y29kZXNfYWxsKHZvaWQpCi17Ci0JYm9vbCBwYXNzID0gdHJ1ZTsKLQl1bnNpZ25lZCBpbnQgaTsK LQotCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHNlbGZ0ZXN0X29wY29kZXMpOyArK2kpCi0J CXBhc3MgPSBwYXNzICYmIHNlbGZ0ZXN0X29wY29kZV9vbmUoJnNlbGZ0ZXN0X29wY29kZXNbaV0p OwotCi0JcmV0dXJuIHBhc3M7Ci19Ci0KLWJvb2wga21lbWNoZWNrX3NlbGZ0ZXN0KHZvaWQpCi17 Ci0JYm9vbCBwYXNzID0gdHJ1ZTsKLQotCXBhc3MgPSBwYXNzICYmIHNlbGZ0ZXN0X29wY29kZXNf YWxsKCk7Ci0KLQlyZXR1cm4gcGFzczsKLX0KZGlmZiAtLWdpdCBhL2FyY2gveDg2L21tL2ttZW1j aGVjay9zZWxmdGVzdC5oIGIvYXJjaC94ODYvbW0va21lbWNoZWNrL3NlbGZ0ZXN0LmgKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmZWQ0ZmUuLjAwMDAwMDAKLS0tIGEvYXJjaC94ODYv bW0va21lbWNoZWNrL3NlbGZ0ZXN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLSNp Zm5kZWYgQVJDSF9YODZfTU1fS01FTUNIRUNLX1NFTEZURVNUX0gKLSNkZWZpbmUgQVJDSF9YODZf TU1fS01FTUNIRUNLX1NFTEZURVNUX0gKLQotYm9vbCBrbWVtY2hlY2tfc2VsZnRlc3Qodm9pZCk7 Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvbW0va21lbWNoZWNrL3NoYWRvdy5jIGIv YXJjaC94ODYvbW0va21lbWNoZWNrL3NoYWRvdy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCBhZWMxMjQyLi4wMDAwMDAwCi0tLSBhL2FyY2gveDg2L21tL2ttZW1jaGVjay9zaGFkb3cu YworKysgL2Rldi9udWxsCkBAIC0xLDE3MyArMCwwIEBACi0jaW5jbHVkZSA8bGludXgva21lbWNo ZWNrLmg+Ci0jaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Ci0jaW5jbHVkZSA8bGludXgvbW0uaD4K LQotI2luY2x1ZGUgPGFzbS9wYWdlLmg+Ci0jaW5jbHVkZSA8YXNtL3BndGFibGUuaD4KLQotI2lu Y2x1ZGUgInB0ZS5oIgotI2luY2x1ZGUgInNoYWRvdy5oIgotCi0vKgotICogUmV0dXJuIHRoZSBz aGFkb3cgYWRkcmVzcyBmb3IgdGhlIGdpdmVuIGFkZHJlc3MuIFJldHVybnMgTlVMTCBpZiB0aGUK LSAqIGFkZHJlc3MgaXMgbm90IHRyYWNrZWQuCi0gKgotICogV2UgbmVlZCB0byBiZSBleHRyZW1l bHkgY2FyZWZ1bCBub3QgdG8gZm9sbG93IGFueSBpbnZhbGlkIHBvaW50ZXJzLAotICogYmVjYXVz ZSB0aGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgZm9yICphbnkqIHBvc3NpYmxlIGFkZHJlc3Mu Ci0gKi8KLXZvaWQgKmttZW1jaGVja19zaGFkb3dfbG9va3VwKHVuc2lnbmVkIGxvbmcgYWRkcmVz cykKLXsKLQlwdGVfdCAqcHRlOwotCXN0cnVjdCBwYWdlICpwYWdlOwotCi0JaWYgKCF2aXJ0X2Fk ZHJfdmFsaWQoYWRkcmVzcykpCi0JCXJldHVybiBOVUxMOwotCi0JcHRlID0ga21lbWNoZWNrX3B0 ZV9sb29rdXAoYWRkcmVzcyk7Ci0JaWYgKCFwdGUpCi0JCXJldHVybiBOVUxMOwotCi0JcGFnZSA9 IHZpcnRfdG9fcGFnZShhZGRyZXNzKTsKLQlpZiAoIXBhZ2UtPnNoYWRvdykKLQkJcmV0dXJuIE5V TEw7Ci0JcmV0dXJuIHBhZ2UtPnNoYWRvdyArIChhZGRyZXNzICYgKFBBR0VfU0laRSAtIDEpKTsK LX0KLQotc3RhdGljIHZvaWQgbWFya19zaGFkb3codm9pZCAqYWRkcmVzcywgdW5zaWduZWQgaW50 IG4sCi0JZW51bSBrbWVtY2hlY2tfc2hhZG93IHN0YXR1cykKLXsKLQl1bnNpZ25lZCBsb25nIGFk ZHIgPSAodW5zaWduZWQgbG9uZykgYWRkcmVzczsKLQl1bnNpZ25lZCBsb25nIGxhc3RfYWRkciA9 IGFkZHIgKyBuIC0gMTsKLQl1bnNpZ25lZCBsb25nIHBhZ2UgPSBhZGRyICYgUEFHRV9NQVNLOwot CXVuc2lnbmVkIGxvbmcgbGFzdF9wYWdlID0gbGFzdF9hZGRyICYgUEFHRV9NQVNLOwotCXVuc2ln bmVkIGludCBmaXJzdF9uOwotCXZvaWQgKnNoYWRvdzsKLQotCS8qIElmIHRoZSBtZW1vcnkgcmFu Z2UgY3Jvc3NlcyBhIHBhZ2UgYm91bmRhcnksIHN0b3AgdGhlcmUuICovCi0JaWYgKHBhZ2UgPT0g bGFzdF9wYWdlKQotCQlmaXJzdF9uID0gbjsKLQllbHNlCi0JCWZpcnN0X24gPSBwYWdlICsgUEFH RV9TSVpFIC0gYWRkcjsKLQotCXNoYWRvdyA9IGttZW1jaGVja19zaGFkb3dfbG9va3VwKGFkZHIp OwotCWlmIChzaGFkb3cpCi0JCW1lbXNldChzaGFkb3csIHN0YXR1cywgZmlyc3Rfbik7Ci0KLQlh ZGRyICs9IGZpcnN0X247Ci0JbiAtPSBmaXJzdF9uOwotCi0JLyogRG8gZnVsbC1wYWdlIG1lbXNl dCgpcy4gKi8KLQl3aGlsZSAobiA+PSBQQUdFX1NJWkUpIHsKLQkJc2hhZG93ID0ga21lbWNoZWNr X3NoYWRvd19sb29rdXAoYWRkcik7Ci0JCWlmIChzaGFkb3cpCi0JCQltZW1zZXQoc2hhZG93LCBz dGF0dXMsIFBBR0VfU0laRSk7Ci0KLQkJYWRkciArPSBQQUdFX1NJWkU7Ci0JCW4gLT0gUEFHRV9T SVpFOwotCX0KLQotCS8qIERvIHRoZSByZW1haW5pbmcgcGFnZSwgaWYgYW55LiAqLwotCWlmIChu ID4gMCkgewotCQlzaGFkb3cgPSBrbWVtY2hlY2tfc2hhZG93X2xvb2t1cChhZGRyKTsKLQkJaWYg KHNoYWRvdykKLQkJCW1lbXNldChzaGFkb3csIHN0YXR1cywgbik7Ci0JfQotfQotCi12b2lkIGtt ZW1jaGVja19tYXJrX3VuYWxsb2NhdGVkKHZvaWQgKmFkZHJlc3MsIHVuc2lnbmVkIGludCBuKQot ewotCW1hcmtfc2hhZG93KGFkZHJlc3MsIG4sIEtNRU1DSEVDS19TSEFET1dfVU5BTExPQ0FURUQp OwotfQotCi12b2lkIGttZW1jaGVja19tYXJrX3VuaW5pdGlhbGl6ZWQodm9pZCAqYWRkcmVzcywg dW5zaWduZWQgaW50IG4pCi17Ci0JbWFya19zaGFkb3coYWRkcmVzcywgbiwgS01FTUNIRUNLX1NI QURPV19VTklOSVRJQUxJWkVEKTsKLX0KLQotLyoKLSAqIEZpbGwgdGhlIHNoYWRvdyBtZW1vcnkg b2YgdGhlIGdpdmVuIGFkZHJlc3Mgc3VjaCB0aGF0IHRoZSBtZW1vcnkgYXQgdGhhdAotICogYWRk cmVzcyBpcyBtYXJrZWQgYXMgYmVpbmcgaW5pdGlhbGl6ZWQuCi0gKi8KLXZvaWQga21lbWNoZWNr X21hcmtfaW5pdGlhbGl6ZWQodm9pZCAqYWRkcmVzcywgdW5zaWduZWQgaW50IG4pCi17Ci0JbWFy a19zaGFkb3coYWRkcmVzcywgbiwgS01FTUNIRUNLX1NIQURPV19JTklUSUFMSVpFRCk7Ci19Ci1F WFBPUlRfU1lNQk9MX0dQTChrbWVtY2hlY2tfbWFya19pbml0aWFsaXplZCk7Ci0KLXZvaWQga21l bWNoZWNrX21hcmtfZnJlZWQodm9pZCAqYWRkcmVzcywgdW5zaWduZWQgaW50IG4pCi17Ci0JbWFy a19zaGFkb3coYWRkcmVzcywgbiwgS01FTUNIRUNLX1NIQURPV19GUkVFRCk7Ci19Ci0KLXZvaWQg a21lbWNoZWNrX21hcmtfdW5hbGxvY2F0ZWRfcGFnZXMoc3RydWN0IHBhZ2UgKnAsIHVuc2lnbmVk IGludCBuKQotewotCXVuc2lnbmVkIGludCBpOwotCi0JZm9yIChpID0gMDsgaSA8IG47ICsraSkK LQkJa21lbWNoZWNrX21hcmtfdW5hbGxvY2F0ZWQocGFnZV9hZGRyZXNzKCZwW2ldKSwgUEFHRV9T SVpFKTsKLX0KLQotdm9pZCBrbWVtY2hlY2tfbWFya191bmluaXRpYWxpemVkX3BhZ2VzKHN0cnVj dCBwYWdlICpwLCB1bnNpZ25lZCBpbnQgbikKLXsKLQl1bnNpZ25lZCBpbnQgaTsKLQotCWZvciAo aSA9IDA7IGkgPCBuOyArK2kpCi0JCWttZW1jaGVja19tYXJrX3VuaW5pdGlhbGl6ZWQocGFnZV9h ZGRyZXNzKCZwW2ldKSwgUEFHRV9TSVpFKTsKLX0KLQotdm9pZCBrbWVtY2hlY2tfbWFya19pbml0 aWFsaXplZF9wYWdlcyhzdHJ1Y3QgcGFnZSAqcCwgdW5zaWduZWQgaW50IG4pCi17Ci0JdW5zaWdu ZWQgaW50IGk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgbjsgKytpKQotCQlrbWVtY2hlY2tfbWFya19p bml0aWFsaXplZChwYWdlX2FkZHJlc3MoJnBbaV0pLCBQQUdFX1NJWkUpOwotfQotCi1lbnVtIGtt ZW1jaGVja19zaGFkb3cga21lbWNoZWNrX3NoYWRvd190ZXN0KHZvaWQgKnNoYWRvdywgdW5zaWdu ZWQgaW50IHNpemUpCi17Ci0jaWZkZWYgQ09ORklHX0tNRU1DSEVDS19QQVJUSUFMX09LCi0JdWlu dDhfdCAqeDsKLQl1bnNpZ25lZCBpbnQgaTsKLQotCXggPSBzaGFkb3c7Ci0KLQkvKgotCSAqIE1h a2Ugc3VyZSBfc29tZV8gYnl0ZXMgYXJlIGluaXRpYWxpemVkLiBHY2MgZnJlcXVlbnRseSBnZW5l cmF0ZXMKLQkgKiBjb2RlIHRvIGFjY2VzcyBuZWlnaGJvcmluZyBieXRlcy4KLQkgKi8KLQlmb3Ig KGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0JCWlmICh4W2ldID09IEtNRU1DSEVDS19TSEFET1df SU5JVElBTElaRUQpCi0JCQlyZXR1cm4geFtpXTsKLQl9Ci0KLQlyZXR1cm4geFswXTsKLSNlbHNl Ci0JcmV0dXJuIGttZW1jaGVja19zaGFkb3dfdGVzdF9hbGwoc2hhZG93LCBzaXplKTsKLSNlbmRp ZgotfQotCi1lbnVtIGttZW1jaGVja19zaGFkb3cga21lbWNoZWNrX3NoYWRvd190ZXN0X2FsbCh2 b2lkICpzaGFkb3csIHVuc2lnbmVkIGludCBzaXplKQotewotCXVpbnQ4X3QgKng7Ci0JdW5zaWdu ZWQgaW50IGk7Ci0KLQl4ID0gc2hhZG93OwotCi0JLyogQWxsIGJ5dGVzIG11c3QgYmUgaW5pdGlh bGl6ZWQuICovCi0JZm9yIChpID0gMDsgaSA8IHNpemU7ICsraSkgewotCQlpZiAoeFtpXSAhPSBL TUVNQ0hFQ0tfU0hBRE9XX0lOSVRJQUxJWkVEKQotCQkJcmV0dXJuIHhbaV07Ci0JfQotCi0JcmV0 dXJuIHhbMF07Ci19Ci0KLXZvaWQga21lbWNoZWNrX3NoYWRvd19zZXQodm9pZCAqc2hhZG93LCB1 bnNpZ25lZCBpbnQgc2l6ZSkKLXsKLQl1aW50OF90ICp4OwotCXVuc2lnbmVkIGludCBpOwotCi0J eCA9IHNoYWRvdzsKLQlmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotCQl4W2ldID0gS01FTUNI RUNLX1NIQURPV19JTklUSUFMSVpFRDsKLX0KZGlmZiAtLWdpdCBhL2FyY2gveDg2L21tL2ttZW1j aGVjay9zaGFkb3cuaCBiL2FyY2gveDg2L21tL2ttZW1jaGVjay9zaGFkb3cuaApkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggZmYwYjJmNy4uMDAwMDAwMAotLS0gYS9hcmNoL3g4Ni9tbS9r bWVtY2hlY2svc2hhZG93LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0jaWZuZGVm IEFSQ0hfX1g4Nl9fTU1fX0tNRU1DSEVDS19fU0hBRE9XX0gKLSNkZWZpbmUgQVJDSF9fWDg2X19N TV9fS01FTUNIRUNLX19TSEFET1dfSAotCi1lbnVtIGttZW1jaGVja19zaGFkb3cgewotCUtNRU1D SEVDS19TSEFET1dfVU5BTExPQ0FURUQsCi0JS01FTUNIRUNLX1NIQURPV19VTklOSVRJQUxJWkVE LAotCUtNRU1DSEVDS19TSEFET1dfSU5JVElBTElaRUQsCi0JS01FTUNIRUNLX1NIQURPV19GUkVF RCwKLX07Ci0KLXZvaWQgKmttZW1jaGVja19zaGFkb3dfbG9va3VwKHVuc2lnbmVkIGxvbmcgYWRk cmVzcyk7Ci0KLWVudW0ga21lbWNoZWNrX3NoYWRvdyBrbWVtY2hlY2tfc2hhZG93X3Rlc3Qodm9p ZCAqc2hhZG93LCB1bnNpZ25lZCBpbnQgc2l6ZSk7Ci1lbnVtIGttZW1jaGVja19zaGFkb3cga21l bWNoZWNrX3NoYWRvd190ZXN0X2FsbCh2b2lkICpzaGFkb3csCi0JCQkJCQl1bnNpZ25lZCBpbnQg c2l6ZSk7Ci12b2lkIGttZW1jaGVja19zaGFkb3dfc2V0KHZvaWQgKnNoYWRvdywgdW5zaWduZWQg aW50IHNpemUpOwotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gveDg2L21tL3BhZ2VhdHRyLmMg Yi9hcmNoL3g4Ni9tbS9wYWdlYXR0ci5jCmluZGV4IDg5YWYyODguLmUzMTY1YzIgMTAwNjQ0Ci0t LSBhL2FyY2gveDg2L21tL3BhZ2VhdHRyLmMKKysrIGIvYXJjaC94ODYvbW0vcGFnZWF0dHIuYwpA QCAtNjg0LDcgKzY4NCw3IEBAIHN0YXRpYyBpbnQgc3BsaXRfbGFyZ2VfcGFnZShzdHJ1Y3QgY3Bh X2RhdGEgKmNwYSwgcHRlX3QgKmtwdGUsCiAKIAlpZiAoIWRlYnVnX3BhZ2VhbGxvYykKIAkJc3Bp bl91bmxvY2soJmNwYV9sb2NrKTsKLQliYXNlID0gYWxsb2NfcGFnZXMoR0ZQX0tFUk5FTCB8IF9f R0ZQX05PVFJBQ0ssIDApOworCWJhc2UgPSBhbGxvY19wYWdlcyhHRlBfS0VSTkVMLCAwKTsKIAlp ZiAoIWRlYnVnX3BhZ2VhbGxvYykKIAkJc3Bpbl9sb2NrKCZjcGFfbG9jayk7CiAJaWYgKCFiYXNl KQpAQCAtODU3LDcgKzg1Nyw3IEBAIHN0YXRpYyB2b2lkIHVubWFwX3BnZF9yYW5nZShwZ2RfdCAq cm9vdCwgdW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIGVuZCkKIAogc3RhdGljIGlu dCBhbGxvY19wdGVfcGFnZShwbWRfdCAqcG1kKQogewotCXB0ZV90ICpwdGUgPSAocHRlX3QgKiln ZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTCB8IF9fR0ZQX05PVFJBQ0spOworCXB0ZV90ICpwdGUg PSAocHRlX3QgKilnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTCk7CiAJaWYgKCFwdGUpCiAJCXJl dHVybiAtMTsKIApAQCAtODY3LDcgKzg2Nyw3IEBAIHN0YXRpYyBpbnQgYWxsb2NfcHRlX3BhZ2Uo cG1kX3QgKnBtZCkKIAogc3RhdGljIGludCBhbGxvY19wbWRfcGFnZShwdWRfdCAqcHVkKQogewot CXBtZF90ICpwbWQgPSAocG1kX3QgKilnZXRfemVyb2VkX3BhZ2UoR0ZQX0tFUk5FTCB8IF9fR0ZQ X05PVFJBQ0spOworCXBtZF90ICpwbWQgPSAocG1kX3QgKilnZXRfemVyb2VkX3BhZ2UoR0ZQX0tF Uk5FTCk7CiAJaWYgKCFwbWQpCiAJCXJldHVybiAtMTsKIApAQCAtMTA2Niw3ICsxMDY2LDcgQEAg c3RhdGljIGludCBwb3B1bGF0ZV9wZ2Qoc3RydWN0IGNwYV9kYXRhICpjcGEsIHVuc2lnbmVkIGxv bmcgYWRkcikKIAkgKiBBbGxvY2F0ZSBhIFBVRCBwYWdlIGFuZCBoYW5kIGl0IGRvd24gZm9yIG1h cHBpbmcuCiAJICovCiAJaWYgKHBnZF9ub25lKCpwZ2RfZW50cnkpKSB7Ci0JCXB1ZCA9IChwdWRf dCAqKWdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMIHwgX19HRlBfTk9UUkFDSyk7CisJCXB1ZCA9 IChwdWRfdCAqKWdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMKTsKIAkJaWYgKCFwdWQpCiAJCQly ZXR1cm4gLTE7CiAKZGlmZiAtLWdpdCBhL2FyY2gveDg2L21tL3BndGFibGUuYyBiL2FyY2gveDg2 L21tL3BndGFibGUuYwppbmRleCAwYjk3ZDJjLi5mYmU1YzZjIDEwMDY0NAotLS0gYS9hcmNoL3g4 Ni9tbS9wZ3RhYmxlLmMKKysrIGIvYXJjaC94ODYvbW0vcGd0YWJsZS5jCkBAIC02LDcgKzYsNyBA QAogI2luY2x1ZGUgPGFzbS9maXhtYXAuaD4KICNpbmNsdWRlIDxhc20vbXRyci5oPgogCi0jZGVm aW5lIFBHQUxMT0NfR0ZQIEdGUF9LRVJORUwgfCBfX0dGUF9OT1RSQUNLIHwgX19HRlBfUkVQRUFU IHwgX19HRlBfWkVSTworI2RlZmluZSBQR0FMTE9DX0dGUCBHRlBfS0VSTkVMIHwgX19HRlBfUkVQ RUFUIHwgX19HRlBfWkVSTwogCiAjaWZkZWYgQ09ORklHX0hJR0hQVEUKICNkZWZpbmUgUEdBTExP Q19VU0VSX0dGUCBfX0dGUF9ISUdITUVNCmRpZmYgLS1naXQgYS9jcnlwdG8veG9yLmMgYi9jcnlw dG8veG9yLmMKaW5kZXggMzVkNmIzYS4uYmRiZjIxYyAxMDA2NDQKLS0tIGEvY3J5cHRvL3hvci5j CisrKyBiL2NyeXB0by94b3IuYwpAQCAtMTA5LDEyICsxMDksNyBAQCBjYWxpYnJhdGVfeG9yX2Js b2Nrcyh2b2lkKQogCXZvaWQgKmIxLCAqYjI7CiAJc3RydWN0IHhvcl9ibG9ja190ZW1wbGF0ZSAq ZiwgKmZhc3Rlc3Q7CiAKLQkvKgotCSAqIE5vdGU6IFNpbmNlIHRoZSBtZW1vcnkgaXMgbm90IGFj dHVhbGx5IHVzZWQgZm9yIF9hbnl0aGluZ18gYnV0IHRvCi0JICogdGVzdCB0aGUgWE9SIHNwZWVk LCB3ZSBkb24ndCByZWFsbHkgd2FudCBrbWVtY2hlY2sgdG8gd2FybiBhYm91dAotCSAqIHJlYWRp bmcgdW5pbml0aWFsaXplZCBieXRlcyBoZXJlLgotCSAqLwotCWIxID0gKHZvaWQgKikgX19nZXRf ZnJlZV9wYWdlcyhHRlBfS0VSTkVMIHwgX19HRlBfTk9UUkFDSywgMik7CisJYjEgPSAodm9pZCAq KSBfX2dldF9mcmVlX3BhZ2VzKEdGUF9LRVJORUwsIDIpOwogCWlmICghYjEpIHsKIAkJcHJpbnRr KEtFUk5fV0FSTklORyAieG9yOiBZaWtlcyEgIE5vIG1lbW9yeSBhdmFpbGFibGUuXG4iKTsKIAkJ cmV0dXJuIC1FTk9NRU07CmRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvcmFuZG9tLmMgYi9kcml2 ZXJzL2NoYXIvcmFuZG9tLmMKaW5kZXggOWNkNjk2OC4uYTc1MDM5OCAxMDA2NDQKLS0tIGEvZHJp dmVycy9jaGFyL3JhbmRvbS5jCisrKyBiL2RyaXZlcnMvY2hhci9yYW5kb20uYwpAQCAtMjU1LDcg KzI1NSw2IEBACiAjaW5jbHVkZSA8bGludXgvY3J5cHRvaGFzaC5oPgogI2luY2x1ZGUgPGxpbnV4 L2ZpcHMuaD4KICNpbmNsdWRlIDxsaW51eC9wdHJhY2UuaD4KLSNpbmNsdWRlIDxsaW51eC9rbWVt Y2hlY2suaD4KICNpbmNsdWRlIDxsaW51eC93b3JrcXVldWUuaD4KICNpbmNsdWRlIDxsaW51eC9p cnEuaD4KICNpbmNsdWRlIDxsaW51eC9zeXNjYWxscy5oPgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9t aXNjL2MycG9ydC9jb3JlLmMgYi9kcml2ZXJzL21pc2MvYzJwb3J0L2NvcmUuYwppbmRleCA0NjQ0 MTliLi44YjM3ZjExIDEwMDY0NAotLS0gYS9kcml2ZXJzL21pc2MvYzJwb3J0L2NvcmUuYworKysg Yi9kcml2ZXJzL21pc2MvYzJwb3J0L2NvcmUuYwpAQCAtMTUsNyArMTUsNiBAQAogI2luY2x1ZGUg PGxpbnV4L2Vycm5vLmg+CiAjaW5jbHVkZSA8bGludXgvZXJyLmg+CiAjaW5jbHVkZSA8bGludXgv a2VybmVsLmg+Ci0jaW5jbHVkZSA8bGludXgva21lbWNoZWNrLmg+CiAjaW5jbHVkZSA8bGludXgv Y3R5cGUuaD4KICNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgogI2luY2x1ZGUgPGxpbnV4L2lkci5o PgpAQCAtOTA4LDcgKzkwNyw2IEBAIHN0cnVjdCBjMnBvcnRfZGV2aWNlICpjMnBvcnRfZGV2aWNl X3JlZ2lzdGVyKGNoYXIgKm5hbWUsCiAJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwogCiAJYzJk ZXYgPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3QgYzJwb3J0X2RldmljZSksIEdGUF9LRVJORUwpOwot CWttZW1jaGVja19hbm5vdGF0ZV9iaXRmaWVsZChjMmRldiwgZmxhZ3MpOwogCWlmICh1bmxpa2Vs eSghYzJkZXYpKQogCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKIApkaWZmIC0tZ2l0IGEvZnMv ZGNhY2hlLmMgYi9mcy9kY2FjaGUuYwppbmRleCBjNzFlMzczLi5hZGI0YzZlIDEwMDY0NAotLS0g YS9mcy9kY2FjaGUuYworKysgYi9mcy9kY2FjaGUuYwpAQCAtMjQ2OSw4ICsyNDY5LDYgQEAgc3Rh dGljIHZvaWQgc3dhcF9uYW1lcyhzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBkZW50cnkg KnRhcmdldCkKIAkJCSAqLwogCQkJdW5zaWduZWQgaW50IGk7CiAJCQlCVUlMRF9CVUdfT04oIUlT X0FMSUdORUQoRE5BTUVfSU5MSU5FX0xFTiwgc2l6ZW9mKGxvbmcpKSk7Ci0JCQlrbWVtY2hlY2tf bWFya19pbml0aWFsaXplZChkZW50cnktPmRfaW5hbWUsIEROQU1FX0lOTElORV9MRU4pOwotCQkJ a21lbWNoZWNrX21hcmtfaW5pdGlhbGl6ZWQodGFyZ2V0LT5kX2luYW1lLCBETkFNRV9JTkxJTkVf TEVOKTsKIAkJCWZvciAoaSA9IDA7IGkgPCBETkFNRV9JTkxJTkVfTEVOIC8gc2l6ZW9mKGxvbmcp OyBpKyspIHsKIAkJCQlzd2FwKCgobG9uZyAqKSAmZGVudHJ5LT5kX2luYW1lKVtpXSwKIAkJCQkg ICAgICgobG9uZyAqKSAmdGFyZ2V0LT5kX2luYW1lKVtpXSk7CmRpZmYgLS1naXQgYS9pbmNsdWRl L2FzbS1nZW5lcmljL2RtYS1tYXBwaW5nLWNvbW1vbi5oIGIvaW5jbHVkZS9hc20tZ2VuZXJpYy9k bWEtbWFwcGluZy1jb21tb24uaAppbmRleCA5NDBkNWVjLi4wZDllNWI3IDEwMDY0NAotLS0gYS9p bmNsdWRlL2FzbS1nZW5lcmljL2RtYS1tYXBwaW5nLWNvbW1vbi5oCisrKyBiL2luY2x1ZGUvYXNt LWdlbmVyaWMvZG1hLW1hcHBpbmctY29tbW9uLmgKQEAgLTEsNyArMSw2IEBACiAjaWZuZGVmIF9B U01fR0VORVJJQ19ETUFfTUFQUElOR19ICiAjZGVmaW5lIF9BU01fR0VORVJJQ19ETUFfTUFQUElO R19ICiAKLSNpbmNsdWRlIDxsaW51eC9rbWVtY2hlY2suaD4KICNpbmNsdWRlIDxsaW51eC9idWcu aD4KICNpbmNsdWRlIDxsaW51eC9zY2F0dGVybGlzdC5oPgogI2luY2x1ZGUgPGxpbnV4L2RtYS1k ZWJ1Zy5oPgpAQCAtMTUsNyArMTQsNiBAQCBzdGF0aWMgaW5saW5lIGRtYV9hZGRyX3QgZG1hX21h cF9zaW5nbGVfYXR0cnMoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpwdHIsCiAJc3RydWN0IGRt YV9tYXBfb3BzICpvcHMgPSBnZXRfZG1hX29wcyhkZXYpOwogCWRtYV9hZGRyX3QgYWRkcjsKIAot CWttZW1jaGVja19tYXJrX2luaXRpYWxpemVkKHB0ciwgc2l6ZSk7CiAJQlVHX09OKCF2YWxpZF9k bWFfZGlyZWN0aW9uKGRpcikpOwogCWFkZHIgPSBvcHMtPm1hcF9wYWdlKGRldiwgdmlydF90b19w YWdlKHB0ciksCiAJCQkgICAgICh1bnNpZ25lZCBsb25nKXB0ciAmIH5QQUdFX01BU0ssIHNpemUs CkBAIC00OCwxMSArNDYsOCBAQCBzdGF0aWMgaW5saW5lIGludCBkbWFfbWFwX3NnX2F0dHJzKHN0 cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZywKIAkJCQkgICBzdHJ1Y3Qg ZG1hX2F0dHJzICphdHRycykKIHsKIAlzdHJ1Y3QgZG1hX21hcF9vcHMgKm9wcyA9IGdldF9kbWFf b3BzKGRldik7Ci0JaW50IGksIGVudHM7Ci0Jc3RydWN0IHNjYXR0ZXJsaXN0ICpzOworCWludCBl bnRzOwogCi0JZm9yX2VhY2hfc2coc2csIHMsIG5lbnRzLCBpKQotCQlrbWVtY2hlY2tfbWFya19p bml0aWFsaXplZChzZ192aXJ0KHMpLCBzLT5sZW5ndGgpOwogCUJVR19PTighdmFsaWRfZG1hX2Rp cmVjdGlvbihkaXIpKTsKIAllbnRzID0gb3BzLT5tYXBfc2coZGV2LCBzZywgbmVudHMsIGRpciwg YXR0cnMpOwogCUJVR19PTihlbnRzIDwgMCk7CkBAIC04MCw3ICs3NSw2IEBAIHN0YXRpYyBpbmxp bmUgZG1hX2FkZHJfdCBkbWFfbWFwX3BhZ2Uoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcGFn ZSAqcGFnZSwKIAlzdHJ1Y3QgZG1hX21hcF9vcHMgKm9wcyA9IGdldF9kbWFfb3BzKGRldik7CiAJ ZG1hX2FkZHJfdCBhZGRyOwogCi0Ja21lbWNoZWNrX21hcmtfaW5pdGlhbGl6ZWQocGFnZV9hZGRy ZXNzKHBhZ2UpICsgb2Zmc2V0LCBzaXplKTsKIAlCVUdfT04oIXZhbGlkX2RtYV9kaXJlY3Rpb24o ZGlyKSk7CiAJYWRkciA9IG9wcy0+bWFwX3BhZ2UoZGV2LCBwYWdlLCBvZmZzZXQsIHNpemUsIGRp ciwgTlVMTCk7CiAJZGVidWdfZG1hX21hcF9wYWdlKGRldiwgcGFnZSwgb2Zmc2V0LCBzaXplLCBk aXIsIGFkZHIsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYzJwb3J0LmggYi9p bmNsdWRlL2xpbnV4L2MycG9ydC5oCmluZGV4IDRlZmFiY2IuLmYyNzM2MzQgMTAwNjQ0Ci0tLSBh L2luY2x1ZGUvbGludXgvYzJwb3J0LmgKKysrIGIvaW5jbHVkZS9saW51eC9jMnBvcnQuaApAQCAt OSw4ICs5LDYgQEAKICAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KICAqLwogCi0jaW5j bHVkZSA8bGludXgva21lbWNoZWNrLmg+Ci0KICNkZWZpbmUgQzJQT1JUX05BTUVfTEVOCQkJMzIK IAogc3RydWN0IGRldmljZTsKQEAgLTIyLDEwICsyMCw4IEBAIHN0cnVjdCBkZXZpY2U7CiAvKiBN YWluIHN0cnVjdCAqLwogc3RydWN0IGMycG9ydF9vcHM7CiBzdHJ1Y3QgYzJwb3J0X2RldmljZSB7 Ci0Ja21lbWNoZWNrX2JpdGZpZWxkX2JlZ2luKGZsYWdzKTsKIAl1bnNpZ25lZCBpbnQgYWNjZXNz OjE7CiAJdW5zaWduZWQgaW50IGZsYXNoX2FjY2VzczoxOwotCWttZW1jaGVja19iaXRmaWVsZF9l bmQoZmxhZ3MpOwogCiAJaW50IGlkOwogCWNoYXIgbmFtZVtDMlBPUlRfTkFNRV9MRU5dOwpkaWZm IC0tZ2l0IGEvaW5jbHVkZS9saW51eC9nZnAuaCBiL2luY2x1ZGUvbGludXgvZ2ZwLmgKaW5kZXgg OTdhOTM3My4uMzI4OWE2MSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9nZnAuaAorKysgYi9p bmNsdWRlL2xpbnV4L2dmcC5oCkBAIC0zMCw3ICszMCw2IEBAIHN0cnVjdCB2bV9hcmVhX3N0cnVj dDsKICNkZWZpbmUgX19fR0ZQX0hBUkRXQUxMCQkweDIwMDAwdQogI2RlZmluZSBfX19HRlBfVEhJ U05PREUJCTB4NDAwMDB1CiAjZGVmaW5lIF9fX0dGUF9SRUNMQUlNQUJMRQkweDgwMDAwdQotI2Rl ZmluZSBfX19HRlBfTk9UUkFDSwkJMHgyMDAwMDB1CiAjZGVmaW5lIF9fX0dGUF9OT19LU1dBUEQJ MHg0MDAwMDB1CiAjZGVmaW5lIF9fX0dGUF9PVEhFUl9OT0RFCTB4ODAwMDAwdQogI2RlZmluZSBf X19HRlBfV1JJVEUJCTB4MTAwMDAwMHUKQEAgLTg3LDE4ICs4NiwxMSBAQCBzdHJ1Y3Qgdm1fYXJl YV9zdHJ1Y3Q7CiAjZGVmaW5lIF9fR0ZQX0hBUkRXQUxMICAgKChfX2ZvcmNlIGdmcF90KV9fX0dG UF9IQVJEV0FMTCkgLyogRW5mb3JjZSBoYXJkd2FsbCBjcHVzZXQgbWVtb3J5IGFsbG9jcyAqLwog I2RlZmluZSBfX0dGUF9USElTTk9ERQkoKF9fZm9yY2UgZ2ZwX3QpX19fR0ZQX1RISVNOT0RFKS8q IE5vIGZhbGxiYWNrLCBubyBwb2xpY2llcyAqLwogI2RlZmluZSBfX0dGUF9SRUNMQUlNQUJMRSAo KF9fZm9yY2UgZ2ZwX3QpX19fR0ZQX1JFQ0xBSU1BQkxFKSAvKiBQYWdlIGlzIHJlY2xhaW1hYmxl ICovCi0jZGVmaW5lIF9fR0ZQX05PVFJBQ0sJKChfX2ZvcmNlIGdmcF90KV9fX0dGUF9OT1RSQUNL KSAgLyogRG9uJ3QgdHJhY2sgd2l0aCBrbWVtY2hlY2sgKi8KIAogI2RlZmluZSBfX0dGUF9OT19L U1dBUEQJKChfX2ZvcmNlIGdmcF90KV9fX0dGUF9OT19LU1dBUEQpCiAjZGVmaW5lIF9fR0ZQX09U SEVSX05PREUgKChfX2ZvcmNlIGdmcF90KV9fX0dGUF9PVEhFUl9OT0RFKSAvKiBPbiBiZWhhbGYg b2Ygb3RoZXIgbm9kZSAqLwogI2RlZmluZSBfX0dGUF9XUklURQkoKF9fZm9yY2UgZ2ZwX3QpX19f R0ZQX1dSSVRFKQkvKiBBbGxvY2F0b3IgaW50ZW5kcyB0byBkaXJ0eSBwYWdlICovCiAKLS8qCi0g KiBUaGlzIG1heSBzZWVtIHJlZHVuZGFudCwgYnV0IGl0J3MgYSB3YXkgb2YgYW5ub3RhdGluZyBm YWxzZSBwb3NpdGl2ZXMgdnMuCi0gKiBhbGxvY2F0aW9ucyB0aGF0IHNpbXBseSBjYW5ub3QgYmUg c3VwcG9ydGVkIChlLmcuIHBhZ2UgdGFibGVzKS4KLSAqLwotI2RlZmluZSBfX0dGUF9OT1RSQUNL X0ZBTFNFX1BPU0lUSVZFIChfX0dGUF9OT1RSQUNLKQotCiAjZGVmaW5lIF9fR0ZQX0JJVFNfU0hJ RlQgMjUJLyogUm9vbSBmb3IgTiBfX0dGUF9GT08gYml0cyAqLwogI2RlZmluZSBfX0dGUF9CSVRT X01BU0sgKChfX2ZvcmNlIGdmcF90KSgoMSA8PCBfX0dGUF9CSVRTX1NISUZUKSAtIDEpKQogCmRp ZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oIGIvaW5jbHVkZS9saW51eC9pbnRl cnJ1cHQuaAppbmRleCAxNTBkZGUwLi4xZTA4ZTcxIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4 L2ludGVycnVwdC5oCisrKyBiL2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgKQEAgLTUzMCw2ICs1 MzAsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdGFza2xldF9oaV9zY2hlZHVsZShzdHJ1Y3QgdGFz a2xldF9zdHJ1Y3QgKnQpCiBleHRlcm4gdm9pZCBfX3Rhc2tsZXRfaGlfc2NoZWR1bGVfZmlyc3Qo c3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KTsKIAogLyoKKyAqIFRPRE86IGttZW1jaGVjayBpcyBn b25lLCBmaXggdGhpcy4KKyAqCiAgKiBUaGlzIHZlcnNpb24gYXZvaWRzIHRvdWNoaW5nIGFueSBv dGhlciB0YXNrbGV0cy4gTmVlZGVkIGZvciBrbWVtY2hlY2sKICAqIGluIG9yZGVyIG5vdCB0byB0 YWtlIGFueSBwYWdlIGZhdWx0cyB3aGlsZSBlbnF1ZXVlaW5nIHRoaXMgdGFza2xldDsKICAqIGNv bnNpZGVyIFZFUlkgY2FyZWZ1bGx5IHdoZXRoZXIgeW91IHJlYWxseSBuZWVkIHRoaXMgb3IKZGlm ZiAtLWdpdCBhL2luY2x1ZGUvbGludXgva21lbWNoZWNrLmggYi9pbmNsdWRlL2xpbnV4L2ttZW1j aGVjay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOWY4NDUzLi4wMDAwMDAwCi0t LSBhL2luY2x1ZGUvbGludXgva21lbWNoZWNrLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNzEgKzAs MCBAQAotI2lmbmRlZiBMSU5VWF9LTUVNQ0hFQ0tfSAotI2RlZmluZSBMSU5VWF9LTUVNQ0hFQ0tf SAotCi0jaW5jbHVkZSA8bGludXgvbW1fdHlwZXMuaD4KLSNpbmNsdWRlIDxsaW51eC90eXBlcy5o PgotCi0jaWZkZWYgQ09ORklHX0tNRU1DSEVDSwotZXh0ZXJuIGludCBrbWVtY2hlY2tfZW5hYmxl ZDsKLQotLyogVGhlIHNsYWItcmVsYXRlZCBmdW5jdGlvbnMuICovCi12b2lkIGttZW1jaGVja19h bGxvY19zaGFkb3coc3RydWN0IHBhZ2UgKnBhZ2UsIGludCBvcmRlciwgZ2ZwX3QgZmxhZ3MsIGlu dCBub2RlKTsKLXZvaWQga21lbWNoZWNrX2ZyZWVfc2hhZG93KHN0cnVjdCBwYWdlICpwYWdlLCBp bnQgb3JkZXIpOwotdm9pZCBrbWVtY2hlY2tfc2xhYl9hbGxvYyhzdHJ1Y3Qga21lbV9jYWNoZSAq cywgZ2ZwX3QgZ2ZwZmxhZ3MsIHZvaWQgKm9iamVjdCwKLQkJCSAgc2l6ZV90IHNpemUpOwotdm9p ZCBrbWVtY2hlY2tfc2xhYl9mcmVlKHN0cnVjdCBrbWVtX2NhY2hlICpzLCB2b2lkICpvYmplY3Qs IHNpemVfdCBzaXplKTsKLQotdm9pZCBrbWVtY2hlY2tfcGFnZWFsbG9jX2FsbG9jKHN0cnVjdCBw YWdlICpwLCB1bnNpZ25lZCBpbnQgb3JkZXIsCi0JCQkgICAgICAgZ2ZwX3QgZ2ZwZmxhZ3MpOwot Ci12b2lkIGttZW1jaGVja19zaG93X3BhZ2VzKHN0cnVjdCBwYWdlICpwLCB1bnNpZ25lZCBpbnQg bik7Ci12b2lkIGttZW1jaGVja19oaWRlX3BhZ2VzKHN0cnVjdCBwYWdlICpwLCB1bnNpZ25lZCBp bnQgbik7Ci0KLWJvb2wga21lbWNoZWNrX3BhZ2VfaXNfdHJhY2tlZChzdHJ1Y3QgcGFnZSAqcCk7 Ci0KLXZvaWQga21lbWNoZWNrX21hcmtfdW5hbGxvY2F0ZWQodm9pZCAqYWRkcmVzcywgdW5zaWdu ZWQgaW50IG4pOwotdm9pZCBrbWVtY2hlY2tfbWFya191bmluaXRpYWxpemVkKHZvaWQgKmFkZHJl c3MsIHVuc2lnbmVkIGludCBuKTsKLXZvaWQga21lbWNoZWNrX21hcmtfaW5pdGlhbGl6ZWQodm9p ZCAqYWRkcmVzcywgdW5zaWduZWQgaW50IG4pOwotdm9pZCBrbWVtY2hlY2tfbWFya19mcmVlZCh2 b2lkICphZGRyZXNzLCB1bnNpZ25lZCBpbnQgbik7Ci0KLXZvaWQga21lbWNoZWNrX21hcmtfdW5h bGxvY2F0ZWRfcGFnZXMoc3RydWN0IHBhZ2UgKnAsIHVuc2lnbmVkIGludCBuKTsKLXZvaWQga21l bWNoZWNrX21hcmtfdW5pbml0aWFsaXplZF9wYWdlcyhzdHJ1Y3QgcGFnZSAqcCwgdW5zaWduZWQg aW50IG4pOwotdm9pZCBrbWVtY2hlY2tfbWFya19pbml0aWFsaXplZF9wYWdlcyhzdHJ1Y3QgcGFn ZSAqcCwgdW5zaWduZWQgaW50IG4pOwotCi1pbnQga21lbWNoZWNrX3Nob3dfYWRkcih1bnNpZ25l ZCBsb25nIGFkZHJlc3MpOwotaW50IGttZW1jaGVja19oaWRlX2FkZHIodW5zaWduZWQgbG9uZyBh ZGRyZXNzKTsKLQotYm9vbCBrbWVtY2hlY2tfaXNfb2JqX2luaXRpYWxpemVkKHVuc2lnbmVkIGxv bmcgYWRkciwgc2l6ZV90IHNpemUpOwotCi0vKgotICogQml0ZmllbGQgYW5ub3RhdGlvbnMKLSAq Ci0gKiBIb3cgdG8gdXNlOiBJZiB5b3UgaGF2ZSBhIHN0cnVjdCB1c2luZyBiaXRmaWVsZHMsIGZv ciBleGFtcGxlCi0gKgotICogICAgIHN0cnVjdCBhIHsKLSAqICAgICAgICAgICAgIGludCB4Ojgs IHk6ODsKLSAqICAgICB9OwotICoKLSAqIHRoZW4gdGhpcyBzaG91bGQgYmUgcmV3cml0dGVuIGFz Ci0gKgotICogICAgIHN0cnVjdCBhIHsKLSAqICAgICAgICAgICAgIGttZW1jaGVja19iaXRmaWVs ZF9iZWdpbihmbGFncyk7Ci0gKiAgICAgICAgICAgICBpbnQgeDo4LCB5Ojg7Ci0gKiAgICAgICAg ICAgICBrbWVtY2hlY2tfYml0ZmllbGRfZW5kKGZsYWdzKTsKLSAqICAgICB9OwotICoKLSAqIE5v dyB0aGUgImZsYWdzX2JlZ2luIiBhbmQgImZsYWdzX2VuZCIgbWVtYmVycyBtYXkgYmUgdXNlZCB0 byByZWZlciB0byB0aGUKLSAqIGJlZ2lubmluZyBhbmQgZW5kLCByZXNwZWN0aXZlbHksIG9mIHRo ZSBiaXRmaWVsZCAoYW5kIHRoaW5ncyBsaWtlCi0gKiAmeC5mbGFnc19iZWdpbiBpcyBhbGxvd2Vk KS4gQXMgc29vbiBhcyB0aGUgc3RydWN0IGlzIGFsbG9jYXRlZCwgdGhlIGJpdC0KLSAqIGZpZWxk cyBzaG91bGQgYmUgYW5ub3RhdGVkOgotICoKLSAqICAgICBzdHJ1Y3QgYSAqYSA9IGttYWxsb2Mo c2l6ZW9mKHN0cnVjdCBhKSwgR0ZQX0tFUk5FTCk7Ci0gKiAgICAga21lbWNoZWNrX2Fubm90YXRl X2JpdGZpZWxkKGEsIGZsYWdzKTsKLSAqLwotI2RlZmluZSBrbWVtY2hlY2tfYml0ZmllbGRfYmVn aW4obmFtZSkJXAotCWludCBuYW1lIyNfYmVnaW5bMF07Ci0KLSNkZWZpbmUga21lbWNoZWNrX2Jp dGZpZWxkX2VuZChuYW1lKQlcCi0JaW50IG5hbWUjI19lbmRbMF07Ci0KLSNkZWZpbmUga21lbWNo ZWNrX2Fubm90YXRlX2JpdGZpZWxkKHB0ciwgbmFtZSkJCQkJXAotCWRvIHsJCQkJCQkJCVwKLQkJ aW50IF9uOwkJCQkJCQlcCi0JCQkJCQkJCQlcCi0JCWlmICghcHRyKQkJCQkJCVwKLQkJCWJyZWFr OwkJCQkJCVwKLQkJCQkJCQkJCVwKLQkJX24gPSAobG9uZykgJigocHRyKS0+bmFtZSMjX2VuZCkJ CQlcCi0JCQktIChsb25nKSAmKChwdHIpLT5uYW1lIyNfYmVnaW4pOwkJXAotCQlCVUlMRF9CVUdf T04oX24gPCAwKTsJCQkJCVwKLQkJCQkJCQkJCVwKLQkJa21lbWNoZWNrX21hcmtfaW5pdGlhbGl6 ZWQoJigocHRyKS0+bmFtZSMjX2JlZ2luKSwgX24pOwlcCi0JfSB3aGlsZSAoMCkKLQotI2RlZmlu ZSBrbWVtY2hlY2tfYW5ub3RhdGVfdmFyaWFibGUodmFyKQkJCQlcCi0JZG8gewkJCQkJCQkJXAot CQlrbWVtY2hlY2tfbWFya19pbml0aWFsaXplZCgmKHZhciksIHNpemVvZih2YXIpKTsJXAotCX0g d2hpbGUgKDApCQkJCQkJCVwKLQotI2Vsc2UKLSNkZWZpbmUga21lbWNoZWNrX2VuYWJsZWQgMAot Ci1zdGF0aWMgaW5saW5lIHZvaWQKLWttZW1jaGVja19hbGxvY19zaGFkb3coc3RydWN0IHBhZ2Ug KnBhZ2UsIGludCBvcmRlciwgZ2ZwX3QgZmxhZ3MsIGludCBub2RlKQotewotfQotCi1zdGF0aWMg aW5saW5lIHZvaWQKLWttZW1jaGVja19mcmVlX3NoYWRvdyhzdHJ1Y3QgcGFnZSAqcGFnZSwgaW50 IG9yZGVyKQotewotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQKLWttZW1jaGVja19zbGFiX2FsbG9j KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBnZnBfdCBnZnBmbGFncywgdm9pZCAqb2JqZWN0LAotCQkg ICAgIHNpemVfdCBzaXplKQotewotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQga21lbWNoZWNrX3Ns YWJfZnJlZShzdHJ1Y3Qga21lbV9jYWNoZSAqcywgdm9pZCAqb2JqZWN0LAotCQkJCSAgICAgICBz aXplX3Qgc2l6ZSkKLXsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIGttZW1jaGVja19wYWdlYWxs b2NfYWxsb2Moc3RydWN0IHBhZ2UgKnAsCi0JdW5zaWduZWQgaW50IG9yZGVyLCBnZnBfdCBnZnBm bGFncykKLXsKLX0KLQotc3RhdGljIGlubGluZSBib29sIGttZW1jaGVja19wYWdlX2lzX3RyYWNr ZWQoc3RydWN0IHBhZ2UgKnApCi17Ci0JcmV0dXJuIGZhbHNlOwotfQotCi1zdGF0aWMgaW5saW5l IHZvaWQga21lbWNoZWNrX21hcmtfdW5hbGxvY2F0ZWQodm9pZCAqYWRkcmVzcywgdW5zaWduZWQg aW50IG4pCi17Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBrbWVtY2hlY2tfbWFya191bmluaXRp YWxpemVkKHZvaWQgKmFkZHJlc3MsIHVuc2lnbmVkIGludCBuKQotewotfQotCi1zdGF0aWMgaW5s aW5lIHZvaWQga21lbWNoZWNrX21hcmtfaW5pdGlhbGl6ZWQodm9pZCAqYWRkcmVzcywgdW5zaWdu ZWQgaW50IG4pCi17Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBrbWVtY2hlY2tfbWFya19mcmVl ZCh2b2lkICphZGRyZXNzLCB1bnNpZ25lZCBpbnQgbikKLXsKLX0KLQotc3RhdGljIGlubGluZSB2 b2lkIGttZW1jaGVja19tYXJrX3VuYWxsb2NhdGVkX3BhZ2VzKHN0cnVjdCBwYWdlICpwLAotCQkJ CQkJICAgIHVuc2lnbmVkIGludCBuKQotewotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQga21lbWNo ZWNrX21hcmtfdW5pbml0aWFsaXplZF9wYWdlcyhzdHJ1Y3QgcGFnZSAqcCwKLQkJCQkJCSAgICAg IHVuc2lnbmVkIGludCBuKQotewotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQga21lbWNoZWNrX21h cmtfaW5pdGlhbGl6ZWRfcGFnZXMoc3RydWN0IHBhZ2UgKnAsCi0JCQkJCQkgICAgdW5zaWduZWQg aW50IG4pCi17Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBrbWVtY2hlY2tfaXNfb2JqX2luaXRp YWxpemVkKHVuc2lnbmVkIGxvbmcgYWRkciwgc2l6ZV90IHNpemUpCi17Ci0JcmV0dXJuIHRydWU7 Ci19Ci0KLSNkZWZpbmUga21lbWNoZWNrX2JpdGZpZWxkX2JlZ2luKG5hbWUpCi0jZGVmaW5lIGtt ZW1jaGVja19iaXRmaWVsZF9lbmQobmFtZSkKLSNkZWZpbmUga21lbWNoZWNrX2Fubm90YXRlX2Jp dGZpZWxkKHB0ciwgbmFtZSkJXAotCWRvIHsJCQkJCVwKLQl9IHdoaWxlICgwKQotCi0jZGVmaW5l IGttZW1jaGVja19hbm5vdGF0ZV92YXJpYWJsZSh2YXIpCVwKLQlkbyB7CQkJCQlcCi0JfSB3aGls ZSAoMCkKLQotI2VuZGlmIC8qIENPTkZJR19LTUVNQ0hFQ0sgKi8KLQotI2VuZGlmIC8qIExJTlVY X0tNRU1DSEVDS19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmggYi9p bmNsdWRlL2xpbnV4L21tX3R5cGVzLmgKaW5kZXggNTkwNjMwZS4uODM5ZmQzNiAxMDA2NDQKLS0t IGEvaW5jbHVkZS9saW51eC9tbV90eXBlcy5oCisrKyBiL2luY2x1ZGUvbGludXgvbW1fdHlwZXMu aApAQCAtMTk0LDE0ICsxOTQsNiBAQCBzdHJ1Y3QgcGFnZSB7CiAJCQkJCSAgIG5vdCBrbWFwcGVk LCBpZS4gaGlnaG1lbSkgKi8KICNlbmRpZiAvKiBXQU5UX1BBR0VfVklSVFVBTCAqLwogCi0jaWZk ZWYgQ09ORklHX0tNRU1DSEVDSwotCS8qCi0JICoga21lbWNoZWNrIHdhbnRzIHRvIHRyYWNrIHRo ZSBzdGF0dXMgb2YgZWFjaCBieXRlIGluIGEgcGFnZTsgdGhpcwotCSAqIGlzIGEgcG9pbnRlciB0 byBzdWNoIGEgc3RhdHVzIGJsb2NrLiBOVUxMIGlmIG5vdCB0cmFja2VkLgotCSAqLwotCXZvaWQg KnNoYWRvdzsKLSNlbmRpZgotCiAjaWZkZWYgTEFTVF9DUFVQSURfTk9UX0lOX1BBR0VfRkxBR1MK IAlpbnQgX2xhc3RfY3B1cGlkOwogI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L25l dC5oIGIvaW5jbHVkZS9saW51eC9uZXQuaAppbmRleCBlNzQxMTRiLi5hZWFiMDk0IDEwMDY0NAot LS0gYS9pbmNsdWRlL2xpbnV4L25ldC5oCisrKyBiL2luY2x1ZGUvbGludXgvbmV0LmgKQEAgLTIy LDcgKzIyLDYgQEAKICNpbmNsdWRlIDxsaW51eC9yYW5kb20uaD4KICNpbmNsdWRlIDxsaW51eC93 YWl0Lmg+CiAjaW5jbHVkZSA8bGludXgvZmNudGwuaD4JLyogRm9yIE9fQ0xPRVhFQyBhbmQgT19O T05CTE9DSyAqLwotI2luY2x1ZGUgPGxpbnV4L2ttZW1jaGVjay5oPgogI2luY2x1ZGUgPGxpbnV4 L3JjdXBkYXRlLmg+CiAjaW5jbHVkZSA8bGludXgvanVtcF9sYWJlbC5oPgogI2luY2x1ZGUgPHVh cGkvbGludXgvbmV0Lmg+CkBAIC0xMDUsOSArMTA0LDcgQEAgc3RydWN0IHNvY2tldF93cSB7CiBz dHJ1Y3Qgc29ja2V0IHsKIAlzb2NrZXRfc3RhdGUJCXN0YXRlOwogCi0Ja21lbWNoZWNrX2JpdGZp ZWxkX2JlZ2luKHR5cGUpOwogCXNob3J0CQkJdHlwZTsKLQlrbWVtY2hlY2tfYml0ZmllbGRfZW5k KHR5cGUpOwogCiAJdW5zaWduZWQgbG9uZwkJZmxhZ3M7CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUv bGludXgvcmluZ19idWZmZXIuaCBiL2luY2x1ZGUvbGludXgvcmluZ19idWZmZXIuaAppbmRleCBl MmMxM2NkLi5iOTJiM2VlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3JpbmdfYnVmZmVyLmgK KysrIGIvaW5jbHVkZS9saW51eC9yaW5nX2J1ZmZlci5oCkBAIC0xLDcgKzEsNiBAQAogI2lmbmRl ZiBfTElOVVhfUklOR19CVUZGRVJfSAogI2RlZmluZSBfTElOVVhfUklOR19CVUZGRVJfSAogCi0j aW5jbHVkZSA8bGludXgva21lbWNoZWNrLmg+CiAjaW5jbHVkZSA8bGludXgvbW0uaD4KICNpbmNs dWRlIDxsaW51eC9zZXFfZmlsZS5oPgogI2luY2x1ZGUgPGxpbnV4L3BvbGwuaD4KQEAgLTEzLDkg KzEyLDcgQEAgc3RydWN0IHJpbmdfYnVmZmVyX2l0ZXI7CiAgKiBEb24ndCByZWZlciB0byB0aGlz IHN0cnVjdCBkaXJlY3RseSwgdXNlIGZ1bmN0aW9ucyBiZWxvdy4KICAqLwogc3RydWN0IHJpbmdf YnVmZmVyX2V2ZW50IHsKLQlrbWVtY2hlY2tfYml0ZmllbGRfYmVnaW4oYml0ZmllbGQpOwogCXUz MgkJdHlwZV9sZW46NSwgdGltZV9kZWx0YToyNzsKLQlrbWVtY2hlY2tfYml0ZmllbGRfZW5kKGJp dGZpZWxkKTsKIAogCXUzMgkJYXJyYXlbXTsKIH07CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4 L3NrYnVmZi5oIGIvaW5jbHVkZS9saW51eC9za2J1ZmYuaAppbmRleCBiYmExMzMwLi5hMTc0ZjFk IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oCisrKyBiL2luY2x1ZGUvbGludXgv c2tidWZmLmgKQEAgLTE1LDcgKzE1LDYgQEAKICNkZWZpbmUgX0xJTlVYX1NLQlVGRl9ICiAKICNp bmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KLSNpbmNsdWRlIDxsaW51eC9rbWVtY2hlY2suaD4KICNp bmNsdWRlIDxsaW51eC9jb21waWxlci5oPgogI2luY2x1ZGUgPGxpbnV4L3RpbWUuaD4KICNpbmNs dWRlIDxsaW51eC9idWcuaD4KQEAgLTU1Myw3ICs1NTIsNiBAQCBzdHJ1Y3Qgc2tfYnVmZiB7CiAJ LyogRm9sbG93aW5nIGZpZWxkcyBhcmUgX25vdF8gY29waWVkIGluIF9fY29weV9za2JfaGVhZGVy KCkKIAkgKiBOb3RlIHRoYXQgcXVldWVfbWFwcGluZyBpcyBoZXJlIG1vc3RseSB0byBmaWxsIGEg aG9sZS4KIAkgKi8KLQlrbWVtY2hlY2tfYml0ZmllbGRfYmVnaW4oZmxhZ3MxKTsKIAlfX3UxNgkJ CXF1ZXVlX21hcHBpbmc7CiAJX191OAkJCWNsb25lZDoxLAogCQkJCW5vaGRyOjEsCkBAIC01NjIs NyArNTYwLDYgQEAgc3RydWN0IHNrX2J1ZmYgewogCQkJCWhlYWRfZnJhZzoxLAogCQkJCXhtaXRf bW9yZToxOwogCS8qIG9uZSBiaXQgaG9sZSAqLwotCWttZW1jaGVja19iaXRmaWVsZF9lbmQoZmxh Z3MxKTsKIAogCS8qIGZpZWxkcyBlbmNsb3NlZCBpbiBoZWFkZXJzX3N0YXJ0L2hlYWRlcnNfZW5k IGFyZSBjb3BpZWQKIAkgKiB1c2luZyBhIHNpbmdsZSBtZW1jcHkoKSBpbiBfX2NvcHlfc2tiX2hl YWRlcigpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3NsYWIuaCBiL2luY2x1ZGUvbGludXgv c2xhYi5oCmluZGV4IDc2ZjFmZWUuLjdkYzJkOWMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgv c2xhYi5oCisrKyBiL2luY2x1ZGUvbGludXgvc2xhYi5oCkBAIC03NSwxMiArNzUsNiBAQAogCiAj ZGVmaW5lIFNMQUJfTk9MRUFLVFJBQ0UJMHgwMDgwMDAwMFVMCS8qIEF2b2lkIGttZW1sZWFrIHRy YWNpbmcgKi8KIAotLyogRG9uJ3QgdHJhY2sgdXNlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5ICov Ci0jaWZkZWYgQ09ORklHX0tNRU1DSEVDSwotIyBkZWZpbmUgU0xBQl9OT1RSQUNLCQkweDAxMDAw MDAwVUwKLSNlbHNlCi0jIGRlZmluZSBTTEFCX05PVFJBQ0sJCTB4MDAwMDAwMDBVTAotI2VuZGlm CiAjaWZkZWYgQ09ORklHX0ZBSUxTTEFCCiAjIGRlZmluZSBTTEFCX0ZBSUxTTEFCCQkweDAyMDAw MDAwVUwJLyogRmF1bHQgaW5qZWN0aW9uIG1hcmsgKi8KICNlbHNlCmRpZmYgLS1naXQgYS9pbmNs dWRlL2xpbnV4L3RocmVhZF9pbmZvLmggYi9pbmNsdWRlL2xpbnV4L3RocmVhZF9pbmZvLmgKaW5k ZXggZmYzMDdiNS4uMWNlMjhhNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC90aHJlYWRfaW5m by5oCisrKyBiL2luY2x1ZGUvbGludXgvdGhyZWFkX2luZm8uaApAQCAtNTYsOSArNTYsOSBAQCBl eHRlcm4gbG9uZyBkb19ub19yZXN0YXJ0X3N5c2NhbGwoc3RydWN0IHJlc3RhcnRfYmxvY2sgKnBh cm0pOwogI2lmZGVmIF9fS0VSTkVMX18KIAogI2lmZGVmIENPTkZJR19ERUJVR19TVEFDS19VU0FH RQotIyBkZWZpbmUgVEhSRUFESU5GT19HRlAJCShHRlBfS0VSTkVMIHwgX19HRlBfTk9UUkFDSyB8 IF9fR0ZQX1pFUk8pCisjIGRlZmluZSBUSFJFQURJTkZPX0dGUAkJKEdGUF9LRVJORUwgfCBfX0dG UF9aRVJPKQogI2Vsc2UKLSMgZGVmaW5lIFRIUkVBRElORk9fR0ZQCQkoR0ZQX0tFUk5FTCB8IF9f R0ZQX05PVFJBQ0spCisjIGRlZmluZSBUSFJFQURJTkZPX0dGUAkJKEdGUF9LRVJORUwpCiAjZW5k aWYKIAogLyoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2luZXRfc29jay5oIGIvaW5jbHVkZS9u ZXQvaW5ldF9zb2NrLmgKaW5kZXggZWIxNmM3Yi4uM2I5ZGVlNyAxMDA2NDQKLS0tIGEvaW5jbHVk ZS9uZXQvaW5ldF9zb2NrLmgKKysrIGIvaW5jbHVkZS9uZXQvaW5ldF9zb2NrLmgKQEAgLTE3LDcg KzE3LDYgQEAKICNkZWZpbmUgX0lORVRfU09DS19ICiAKICNpbmNsdWRlIDxsaW51eC9iaXRvcHMu aD4KLSNpbmNsdWRlIDxsaW51eC9rbWVtY2hlY2suaD4KICNpbmNsdWRlIDxsaW51eC9zdHJpbmcu aD4KICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgogI2luY2x1ZGUgPGxpbnV4L2poYXNoLmg+CkBA IC03OCw3ICs3Nyw2IEBAIHN0cnVjdCBpbmV0X3JlcXVlc3Rfc29jayB7CiAjZGVmaW5lIGlyX3Y2 X2xvY19hZGRyCQlyZXEuX19yZXFfY29tbW9uLnNrY192Nl9yY3Zfc2FkZHIKICNkZWZpbmUgaXJf aWlmCQkJcmVxLl9fcmVxX2NvbW1vbi5za2NfYm91bmRfZGV2X2lmCiAKLQlrbWVtY2hlY2tfYml0 ZmllbGRfYmVnaW4oZmxhZ3MpOwogCXUxNgkJCXNuZF93c2NhbGUgOiA0LAogCQkJCXJjdl93c2Nh bGUgOiA0LAogCQkJCXRzdGFtcF9vayAgOiAxLApAQCAtODcsNyArODUsNiBAQCBzdHJ1Y3QgaW5l dF9yZXF1ZXN0X3NvY2sgewogCQkJCWVjbl9vawkgICA6IDEsCiAJCQkJYWNrZWQJICAgOiAxLAog CQkJCW5vX3NyY2NoZWNrOiAxOwotCWttZW1jaGVja19iaXRmaWVsZF9lbmQoZmxhZ3MpOwogCXVu aW9uIHsKIAkJc3RydWN0IGlwX29wdGlvbnNfcmN1CSpvcHQ7CiAJCXN0cnVjdCBza19idWZmCQkq cGt0b3B0czsKQEAgLTI0NCwxMCArMjQxLDggQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgcmVxdWVz dF9zb2NrICppbmV0X3JlcXNrX2FsbG9jKHN0cnVjdCByZXF1ZXN0X3NvY2tfb3BzICpvcHMKIAlz dHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEgPSByZXFza19hbGxvYyhvcHMpOwogCXN0cnVjdCBpbmV0 X3JlcXVlc3Rfc29jayAqaXJlcSA9IGluZXRfcnNrKHJlcSk7CiAKLQlpZiAocmVxICE9IE5VTEwp IHsKLQkJa21lbWNoZWNrX2Fubm90YXRlX2JpdGZpZWxkKGlyZXEsIGZsYWdzKTsKKwlpZiAocmVx ICE9IE5VTEwpCiAJCWlyZXEtPm9wdCA9IE5VTEw7Ci0JfQogCiAJcmV0dXJuIHJlcTsKIH0KZGlm ZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2luZXRfdGltZXdhaXRfc29jay5oIGIvaW5jbHVkZS9uZXQv aW5ldF90aW1ld2FpdF9zb2NrLmgKaW5kZXggNmM1NjYwMy4uNDQ5YjljOCAxMDA2NDQKLS0tIGEv aW5jbHVkZS9uZXQvaW5ldF90aW1ld2FpdF9zb2NrLmgKKysrIGIvaW5jbHVkZS9uZXQvaW5ldF90 aW1ld2FpdF9zb2NrLmgKQEAgLTE2LDcgKzE2LDYgQEAKICNkZWZpbmUgX0lORVRfVElNRVdBSVRf U09DS18KIAogCi0jaW5jbHVkZSA8bGludXgva21lbWNoZWNrLmg+CiAjaW5jbHVkZSA8bGludXgv bGlzdC5oPgogI2luY2x1ZGUgPGxpbnV4L3RpbWVyLmg+CiAjaW5jbHVkZSA8bGludXgvdHlwZXMu aD4KQEAgLTEzMCwxNCArMTI5LDEyIEBAIHN0cnVjdCBpbmV0X3RpbWV3YWl0X3NvY2sgewogCS8q IFNvY2tldCBkZW11bHRpcGxleCBjb21wYXJpc29ucyBvbiBpbmNvbWluZyBwYWNrZXRzLiAqLwog CS8qIHRoZXNlIHRocmVlIGFyZSBpbiBpbmV0X3NvY2sgKi8KIAlfX2JlMTYJCQl0d19zcG9ydDsK LQlrbWVtY2hlY2tfYml0ZmllbGRfYmVnaW4oZmxhZ3MpOwogCS8qIEFuZCB0aGVzZSBhcmUgb3Vy cy4gKi8KIAl1bnNpZ25lZCBpbnQJCXR3X3BhZDAJCTogMSwJLyogMSBiaXQgaG9sZSAqLwogCQkJ CXR3X3RyYW5zcGFyZW50ICA6IDEsCiAJCQkJdHdfZmxvd2xhYmVsCTogMjAsCiAJCQkJdHdfcGFk CQk6IDIsCS8qIDIgYml0cyBob2xlICovCiAJCQkJdHdfdG9zCQk6IDg7Ci0Ja21lbWNoZWNrX2Jp dGZpZWxkX2VuZChmbGFncyk7CiAJdTMyCQkJdHdfdHRkOwogCXN0cnVjdCBpbmV0X2JpbmRfYnVj a2V0CSp0d190YjsKIAlzdHJ1Y3QgaGxpc3Rfbm9kZQl0d19kZWF0aF9ub2RlOwpkaWZmIC0tZ2l0 IGEvaW5jbHVkZS9uZXQvc29jay5oIGIvaW5jbHVkZS9uZXQvc29jay5oCmluZGV4IDI1MDgyMmMu LmVlYWFkM2EgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L3NvY2suaAorKysgYi9pbmNsdWRlL25l dC9zb2NrLmgKQEAgLTM3OSwxNCArMzc5LDEyIEBAIHN0cnVjdCBzb2NrIHsKIAlhdG9taWNfdAkJ c2tfb21lbV9hbGxvYzsKIAlpbnQJCQlza19zbmRidWY7CiAJc3RydWN0IHNrX2J1ZmZfaGVhZAlz a193cml0ZV9xdWV1ZTsKLQlrbWVtY2hlY2tfYml0ZmllbGRfYmVnaW4oZmxhZ3MpOwogCXVuc2ln bmVkIGludAkJc2tfc2h1dGRvd24gIDogMiwKIAkJCQlza19ub19jaGVja190eCA6IDEsCiAJCQkJ c2tfbm9fY2hlY2tfcnggOiAxLAogCQkJCXNrX3VzZXJsb2NrcyA6IDQsCiAJCQkJc2tfcHJvdG9j b2wgIDogOCwKIAkJCQlza190eXBlICAgICAgOiAxNjsKLQlrbWVtY2hlY2tfYml0ZmllbGRfZW5k KGZsYWdzKTsKIAlpbnQJCQlza193bWVtX3F1ZXVlZDsKIAlnZnBfdAkJCXNrX2FsbG9jYXRpb247 CiAJdTMyCQkJc2tfcGFjaW5nX3JhdGU7IC8qIGJ5dGVzIHBlciBzZWNvbmQgKi8KZGlmZiAtLWdp dCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2dmcGZsYWdzLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50 cy9nZnBmbGFncy5oCmluZGV4IGQ2ZmQ4ZTUuLjQyYmRlNDMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUv dHJhY2UvZXZlbnRzL2dmcGZsYWdzLmgKKysrIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvZ2ZwZmxh Z3MuaApAQCAtMzUsNyArMzUsNiBAQAogCXsodW5zaWduZWQgbG9uZylfX0dGUF9USElTTk9ERSwJ CSJHRlBfVEhJU05PREUifSwJXAogCXsodW5zaWduZWQgbG9uZylfX0dGUF9SRUNMQUlNQUJMRSwJ IkdGUF9SRUNMQUlNQUJMRSJ9LAlcCiAJeyh1bnNpZ25lZCBsb25nKV9fR0ZQX01PVkFCTEUsCQki R0ZQX01PVkFCTEUifSwJCVwKLQl7KHVuc2lnbmVkIGxvbmcpX19HRlBfTk9UUkFDSywJCSJHRlBf Tk9UUkFDSyJ9LAkJXAogCXsodW5zaWduZWQgbG9uZylfX0dGUF9OT19LU1dBUEQsCSJHRlBfTk9f S1NXQVBEIn0sCVwKIAl7KHVuc2lnbmVkIGxvbmcpX19HRlBfT1RIRVJfTk9ERSwJIkdGUF9PVEhF Ul9OT0RFIn0JXAogCSkgOiAiR0ZQX05PV0FJVCIKZGlmZiAtLWdpdCBhL2luaXQvZG9fbW91bnRz LmMgYi9pbml0L2RvX21vdW50cy5jCmluZGV4IGViNDEwMDguLjJiYTA4MmIgMTAwNjQ0Ci0tLSBh L2luaXQvZG9fbW91bnRzLmMKKysrIGIvaW5pdC9kb19tb3VudHMuYwpAQCAtMzc3LDggKzM3Nyw3 IEBAIHN0YXRpYyBpbnQgX19pbml0IGRvX21vdW50X3Jvb3QoY2hhciAqbmFtZSwgY2hhciAqZnMs IGludCBmbGFncywgdm9pZCAqZGF0YSkKIAogdm9pZCBfX2luaXQgbW91bnRfYmxvY2tfcm9vdChj aGFyICpuYW1lLCBpbnQgZmxhZ3MpCiB7Ci0Jc3RydWN0IHBhZ2UgKnBhZ2UgPSBhbGxvY19wYWdl KEdGUF9LRVJORUwgfAotCQkJCQlfX0dGUF9OT1RSQUNLX0ZBTFNFX1BPU0lUSVZFKTsKKwlzdHJ1 Y3QgcGFnZSAqcGFnZSA9IGFsbG9jX3BhZ2UoR0ZQX0tFUk5FTCk7CiAJY2hhciAqZnNfbmFtZXMg PSBwYWdlX2FkZHJlc3MocGFnZSk7CiAJY2hhciAqcDsKICNpZmRlZiBDT05GSUdfQkxPQ0sKZGlm ZiAtLWdpdCBhL2luaXQvbWFpbi5jIGIvaW5pdC9tYWluLmMKaW5kZXggNzM5YTY3Ny4uYmE2MTk0 YiAxMDA2NDQKLS0tIGEvaW5pdC9tYWluLmMKKysrIGIvaW5pdC9tYWluLmMKQEAgLTY1LDcgKzY1 LDYgQEAKICNpbmNsdWRlIDxsaW51eC9rZ2RiLmg+CiAjaW5jbHVkZSA8bGludXgvZnRyYWNlLmg+ CiAjaW5jbHVkZSA8bGludXgvYXN5bmMuaD4KLSNpbmNsdWRlIDxsaW51eC9rbWVtY2hlY2suaD4K ICNpbmNsdWRlIDxsaW51eC9zZmkuaD4KICNpbmNsdWRlIDxsaW51eC9zaG1lbV9mcy5oPgogI2lu Y2x1ZGUgPGxpbnV4L3NsYWIuaD4KZGlmZiAtLWdpdCBhL2tlcm5lbC9mb3JrLmMgYi9rZXJuZWwv Zm9yay5jCmluZGV4IGFiMWEwMDguLmEyNzk3YjggMTAwNjQ0Ci0tLSBhL2tlcm5lbC9mb3JrLmMK KysrIGIva2VybmVsL2ZvcmsuYwpAQCAtMjYyLDcgKzI2Miw3IEBAIHZvaWQgX19pbml0IGZvcmtf aW5pdCh1bnNpZ25lZCBsb25nIG1lbXBhZ2VzKQogCS8qIGNyZWF0ZSBhIHNsYWIgb24gd2hpY2gg dGFza19zdHJ1Y3RzIGNhbiBiZSBhbGxvY2F0ZWQgKi8KIAl0YXNrX3N0cnVjdF9jYWNoZXAgPQog CQlrbWVtX2NhY2hlX2NyZWF0ZSgidGFza19zdHJ1Y3QiLCBzaXplb2Yoc3RydWN0IHRhc2tfc3Ry dWN0KSwKLQkJCUFSQ0hfTUlOX1RBU0tBTElHTiwgU0xBQl9QQU5JQyB8IFNMQUJfTk9UUkFDSywg TlVMTCk7CisJCQlBUkNIX01JTl9UQVNLQUxJR04sIFNMQUJfUEFOSUMsIE5VTEwpOwogI2VuZGlm CiAKIAkvKiBkbyB0aGUgYXJjaCBzcGVjaWZpYyB0YXNrIGNhY2hlcyBpbml0ICovCkBAIC0xNzcz LDE3ICsxNzczLDE3IEBAIHZvaWQgX19pbml0IHByb2NfY2FjaGVzX2luaXQodm9pZCkKIHsKIAlz aWdoYW5kX2NhY2hlcCA9IGttZW1fY2FjaGVfY3JlYXRlKCJzaWdoYW5kX2NhY2hlIiwKIAkJCXNp emVvZihzdHJ1Y3Qgc2lnaGFuZF9zdHJ1Y3QpLCAwLAotCQkJU0xBQl9IV0NBQ0hFX0FMSUdOfFNM QUJfUEFOSUN8U0xBQl9ERVNUUk9ZX0JZX1JDVXwKLQkJCVNMQUJfTk9UUkFDSywgc2lnaGFuZF9j dG9yKTsKKwkJCVNMQUJfSFdDQUNIRV9BTElHTnxTTEFCX1BBTklDfFNMQUJfREVTVFJPWV9CWV9S Q1UsCisJCQlzaWdoYW5kX2N0b3IpOwogCXNpZ25hbF9jYWNoZXAgPSBrbWVtX2NhY2hlX2NyZWF0 ZSgic2lnbmFsX2NhY2hlIiwKIAkJCXNpemVvZihzdHJ1Y3Qgc2lnbmFsX3N0cnVjdCksIDAsCi0J CQlTTEFCX0hXQ0FDSEVfQUxJR058U0xBQl9QQU5JQ3xTTEFCX05PVFJBQ0ssIE5VTEwpOworCQkJ U0xBQl9IV0NBQ0hFX0FMSUdOfFNMQUJfUEFOSUMsIE5VTEwpOwogCWZpbGVzX2NhY2hlcCA9IGtt ZW1fY2FjaGVfY3JlYXRlKCJmaWxlc19jYWNoZSIsCiAJCQlzaXplb2Yoc3RydWN0IGZpbGVzX3N0 cnVjdCksIDAsCi0JCQlTTEFCX0hXQ0FDSEVfQUxJR058U0xBQl9QQU5JQ3xTTEFCX05PVFJBQ0ss IE5VTEwpOworCQkJU0xBQl9IV0NBQ0hFX0FMSUdOfFNMQUJfUEFOSUMsIE5VTEwpOwogCWZzX2Nh Y2hlcCA9IGttZW1fY2FjaGVfY3JlYXRlKCJmc19jYWNoZSIsCiAJCQlzaXplb2Yoc3RydWN0IGZz X3N0cnVjdCksIDAsCi0JCQlTTEFCX0hXQ0FDSEVfQUxJR058U0xBQl9QQU5JQ3xTTEFCX05PVFJB Q0ssIE5VTEwpOworCQkJU0xBQl9IV0NBQ0hFX0FMSUdOfFNMQUJfUEFOSUMsIE5VTEwpOwogCS8q CiAJICogRklYTUUhIFRoZSAic2l6ZW9mKHN0cnVjdCBtbV9zdHJ1Y3QpIiBjdXJyZW50bHkgaW5j bHVkZXMgdGhlCiAJICogd2hvbGUgc3RydWN0IGNwdW1hc2sgZm9yIHRoZSBPRkZTVEFDSyBjYXNl LiBXZSBjb3VsZCBjaGFuZ2UKQEAgLTE3OTMsNyArMTc5Myw3IEBAIHZvaWQgX19pbml0IHByb2Nf Y2FjaGVzX2luaXQodm9pZCkKIAkgKi8KIAltbV9jYWNoZXAgPSBrbWVtX2NhY2hlX2NyZWF0ZSgi bW1fc3RydWN0IiwKIAkJCXNpemVvZihzdHJ1Y3QgbW1fc3RydWN0KSwgQVJDSF9NSU5fTU1TVFJV Q1RfQUxJR04sCi0JCQlTTEFCX0hXQ0FDSEVfQUxJR058U0xBQl9QQU5JQ3xTTEFCX05PVFJBQ0ss IE5VTEwpOworCQkJU0xBQl9IV0NBQ0hFX0FMSUdOfFNMQUJfUEFOSUMsIE5VTEwpOwogCXZtX2Fy ZWFfY2FjaGVwID0gS01FTV9DQUNIRSh2bV9hcmVhX3N0cnVjdCwgU0xBQl9QQU5JQyk7CiAJbW1h cF9pbml0KCk7CiAJbnNwcm94eV9jYWNoZV9pbml0KCk7CmRpZmYgLS1naXQgYS9rZXJuZWwvbG9j a2luZy9sb2NrZGVwLmMgYi9rZXJuZWwvbG9ja2luZy9sb2NrZGVwLmMKaW5kZXggODhkMGQ0NC4u YTI4NzBmYiAxMDA2NDQKLS0tIGEva2VybmVsL2xvY2tpbmcvbG9ja2RlcC5jCisrKyBiL2tlcm5l bC9sb2NraW5nL2xvY2tkZXAuYwpAQCAtNDQsNyArNDQsNiBAQAogI2luY2x1ZGUgPGxpbnV4L3N0 cmluZ2lmeS5oPgogI2luY2x1ZGUgPGxpbnV4L2JpdG9wcy5oPgogI2luY2x1ZGUgPGxpbnV4L2dm cC5oPgotI2luY2x1ZGUgPGxpbnV4L2ttZW1jaGVjay5oPgogCiAjaW5jbHVkZSA8YXNtL3NlY3Rp b25zLmg+CiAKQEAgLTI5NTYsOCArMjk1NSw2IEBAIHZvaWQgbG9ja2RlcF9pbml0X21hcChzdHJ1 Y3QgbG9ja2RlcF9tYXAgKmxvY2ssIGNvbnN0IGNoYXIgKm5hbWUsCiB7CiAJaW50IGk7CiAKLQlr bWVtY2hlY2tfbWFya19pbml0aWFsaXplZChsb2NrLCBzaXplb2YoKmxvY2spKTsKLQogCWZvciAo aSA9IDA7IGkgPCBOUl9MT0NLREVQX0NBQ0hJTkdfQ0xBU1NFUzsgaSsrKQogCQlsb2NrLT5jbGFz c19jYWNoZVtpXSA9IE5VTEw7CiAKZGlmZiAtLWdpdCBhL2tlcm5lbC9zaWduYWwuYyBiL2tlcm5l bC9zaWduYWwuYwppbmRleCBhMzkwNDk5Li43NzhjNjM2IDEwMDY0NAotLS0gYS9rZXJuZWwvc2ln bmFsLmMKKysrIGIva2VybmVsL3NpZ25hbC5jCkBAIC0xMDY3LDggKzEwNjcsNyBAQCBzdGF0aWMg aW50IF9fc2VuZF9zaWduYWwoaW50IHNpZywgc3RydWN0IHNpZ2luZm8gKmluZm8sIHN0cnVjdCB0 YXNrX3N0cnVjdCAqdCwKIAllbHNlCiAJCW92ZXJyaWRlX3JsaW1pdCA9IDA7CiAKLQlxID0gX19z aWdxdWV1ZV9hbGxvYyhzaWcsIHQsIEdGUF9BVE9NSUMgfCBfX0dGUF9OT1RSQUNLX0ZBTFNFX1BP U0lUSVZFLAotCQlvdmVycmlkZV9ybGltaXQpOworCXEgPSBfX3NpZ3F1ZXVlX2FsbG9jKHNpZywg dCwgR0ZQX0FUT01JQywgb3ZlcnJpZGVfcmxpbWl0KTsKIAlpZiAocSkgewogCQlsaXN0X2FkZF90 YWlsKCZxLT5saXN0LCAmcGVuZGluZy0+bGlzdCk7CiAJCXN3aXRjaCAoKHVuc2lnbmVkIGxvbmcp IGluZm8pIHsKZGlmZiAtLWdpdCBhL2tlcm5lbC9zeXNjdGwuYyBiL2tlcm5lbC9zeXNjdGwuYwpp bmRleCBjMTU1MjYzLi5jNjJlZTQxIDEwMDY0NAotLS0gYS9rZXJuZWwvc3lzY3RsLmMKKysrIGIv a2VybmVsL3N5c2N0bC5jCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSA8bGludXgvcHJvY19m cy5oPgogI2luY2x1ZGUgPGxpbnV4L3NlY3VyaXR5Lmg+CiAjaW5jbHVkZSA8bGludXgvY3R5cGUu aD4KLSNpbmNsdWRlIDxsaW51eC9rbWVtY2hlY2suaD4KICNpbmNsdWRlIDxsaW51eC9rbWVtbGVh ay5oPgogI2luY2x1ZGUgPGxpbnV4L2ZzLmg+CiAjaW5jbHVkZSA8bGludXgvaW5pdC5oPgpAQCAt MTExNSwxNSArMTExNCw2IEBAIHN0YXRpYyBzdHJ1Y3QgY3RsX3RhYmxlIGtlcm5fdGFibGVbXSA9 IHsKIAkJLmV4dHJhMgkJPSAmb25lX2h1bmRyZWQsCiAJfSwKICNlbmRpZgotI2lmZGVmIENPTkZJ R19LTUVNQ0hFQ0sKLQl7Ci0JCS5wcm9jbmFtZQk9ICJrbWVtY2hlY2siLAotCQkuZGF0YQkJPSAm a21lbWNoZWNrX2VuYWJsZWQsCi0JCS5tYXhsZW4JCT0gc2l6ZW9mKGludCksCi0JCS5tb2RlCQk9 IDA2NDQsCi0JCS5wcm9jX2hhbmRsZXIJPSBwcm9jX2RvaW50dmVjLAotCX0sCi0jZW5kaWYKIAl7 CiAJCS5wcm9jbmFtZQk9ICJwYW5pY19vbl93YXJuIiwKIAkJLmRhdGEJCT0gJnBhbmljX29uX3dh cm4sCmRpZmYgLS1naXQgYS9rZXJuZWwvdHJhY2UvcmluZ19idWZmZXIuYyBiL2tlcm5lbC90cmFj ZS9yaW5nX2J1ZmZlci5jCmluZGV4IDUwNDBkNDQuLmQ2NzBkNzMgMTAwNjQ0Ci0tLSBhL2tlcm5l bC90cmFjZS9yaW5nX2J1ZmZlci5jCisrKyBiL2tlcm5lbC90cmFjZS9yaW5nX2J1ZmZlci5jCkBA IC0xMiw3ICsxMiw2IEBACiAjaW5jbHVkZSA8bGludXgvdWFjY2Vzcy5oPgogI2luY2x1ZGUgPGxp bnV4L2hhcmRpcnEuaD4KICNpbmNsdWRlIDxsaW51eC9rdGhyZWFkLmg+CS8qIGZvciBzZWxmIHRl c3QgKi8KLSNpbmNsdWRlIDxsaW51eC9rbWVtY2hlY2suaD4KICNpbmNsdWRlIDxsaW51eC9tb2R1 bGUuaD4KICNpbmNsdWRlIDxsaW51eC9wZXJjcHUuaD4KICNpbmNsdWRlIDxsaW51eC9tdXRleC5o PgpAQCAtMjI2MCw3ICsyMjU5LDYgQEAgcmJfcmVzZXRfdGFpbChzdHJ1Y3QgcmluZ19idWZmZXJf cGVyX2NwdSAqY3B1X2J1ZmZlciwKIAl9CiAKIAlldmVudCA9IF9fcmJfcGFnZV9pbmRleCh0YWls X3BhZ2UsIHRhaWwpOwotCWttZW1jaGVja19hbm5vdGF0ZV9iaXRmaWVsZChldmVudCwgYml0Zmll bGQpOwogCiAJLyogYWNjb3VudCBmb3IgcGFkZGluZyBieXRlcyAqLwogCWxvY2FsX2FkZChCVUZf UEFHRV9TSVpFIC0gdGFpbCwgJmNwdV9idWZmZXItPmVudHJpZXNfYnl0ZXMpOwpAQCAtMjQ1Myw3 ICsyNDUxLDYgQEAgX19yYl9yZXNlcnZlX25leHQoc3RydWN0IHJpbmdfYnVmZmVyX3Blcl9jcHUg KmNwdV9idWZmZXIsCiAJLyogV2UgcmVzZXJ2ZWQgc29tZXRoaW5nIG9uIHRoZSBidWZmZXIgKi8K IAogCWV2ZW50ID0gX19yYl9wYWdlX2luZGV4KHRhaWxfcGFnZSwgdGFpbCk7Ci0Ja21lbWNoZWNr X2Fubm90YXRlX2JpdGZpZWxkKGV2ZW50LCBiaXRmaWVsZCk7CiAJcmJfdXBkYXRlX2V2ZW50KGNw dV9idWZmZXIsIGV2ZW50LCBsZW5ndGgsIGFkZF90aW1lc3RhbXAsIGRlbHRhKTsKIAogCWxvY2Fs X2luYygmdGFpbF9wYWdlLT5lbnRyaWVzKTsKZGlmZiAtLWdpdCBhL2xpYi9LY29uZmlnLmRlYnVn IGIvbGliL0tjb25maWcuZGVidWcKaW5kZXggY2M4MDVkNC4uNjg2MWNjMiAxMDA2NDQKLS0tIGEv bGliL0tjb25maWcuZGVidWcKKysrIGIvbGliL0tjb25maWcuZGVidWcKQEAgLTQ0NSw3ICs0NDUs NyBAQCBjb25maWcgREVCVUdfT0JKRUNUU19FTkFCTEVfREVGQVVMVAogCiBjb25maWcgREVCVUdf U0xBQgogCWJvb2wgIkRlYnVnIHNsYWIgbWVtb3J5IGFsbG9jYXRpb25zIgotCWRlcGVuZHMgb24g REVCVUdfS0VSTkVMICYmIFNMQUIgJiYgIUtNRU1DSEVDSworCWRlcGVuZHMgb24gREVCVUdfS0VS TkVMICYmIFNMQUIKIAloZWxwCiAJICBTYXkgWSBoZXJlIHRvIGhhdmUgdGhlIGtlcm5lbCBkbyBs aW1pdGVkIHZlcmlmaWNhdGlvbiBvbiBtZW1vcnkKIAkgIGFsbG9jYXRpb24gYXMgd2VsbCBhcyBw b2lzb25pbmcgbWVtb3J5IG9uIGZyZWUgdG8gY2F0Y2ggdXNlIG9mIGZyZWVkCkBAIC00NTcsNyAr NDU3LDcgQEAgY29uZmlnIERFQlVHX1NMQUJfTEVBSwogCiBjb25maWcgU0xVQl9ERUJVR19PTgog CWJvb2wgIlNMVUIgZGVidWdnaW5nIG9uIGJ5IGRlZmF1bHQiCi0JZGVwZW5kcyBvbiBTTFVCICYm IFNMVUJfREVCVUcgJiYgIUtNRU1DSEVDSworCWRlcGVuZHMgb24gU0xVQiAmJiBTTFVCX0RFQlVH CiAJZGVmYXVsdCBuCiAJaGVscAogCSAgQm9vdCB3aXRoIGRlYnVnZ2luZyBvbiBieSBkZWZhdWx0 LiBTTFVCIGJvb3RzIGJ5IGRlZmF1bHQgd2l0aApAQCAtNjYwLDggKzY2MCw2IEBAIGNvbmZpZyBE RUJVR19TVEFDS09WRVJGTE9XCiAKIAkgIElmIGluIGRvdWJ0LCBzYXkgIk4iLgogCi1zb3VyY2Ug ImxpYi9LY29uZmlnLmttZW1jaGVjayIKLQogc291cmNlICJsaWIvS2NvbmZpZy5rYXNhbiIKIAog ZW5kbWVudSAjICJNZW1vcnkgRGVidWdnaW5nIgpkaWZmIC0tZ2l0IGEvbGliL0tjb25maWcua21l bWNoZWNrIGIvbGliL0tjb25maWcua21lbWNoZWNrCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCA4NDZlMDM5Li4wMDAwMDAwCi0tLSBhL2xpYi9LY29uZmlnLmttZW1jaGVjaworKysgL2Rl di9udWxsCkBAIC0xLDk0ICswLDAgQEAKLWNvbmZpZyBIQVZFX0FSQ0hfS01FTUNIRUNLCi0JYm9v bAotCi1pZiBIQVZFX0FSQ0hfS01FTUNIRUNLCi0KLW1lbnVjb25maWcgS01FTUNIRUNLCi0JYm9v bCAia21lbWNoZWNrOiB0cmFwIHVzZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSIKLQlkZXBlbmRz IG9uIERFQlVHX0tFUk5FTAotCWRlcGVuZHMgb24gIVg4Nl9VU0VfM0ROT1cKLQlkZXBlbmRzIG9u IFNMVUIgfHwgU0xBQgotCWRlcGVuZHMgb24gIUNDX09QVElNSVpFX0ZPUl9TSVpFCi0JZGVwZW5k cyBvbiAhRlVOQ1RJT05fVFJBQ0VSCi0Jc2VsZWN0IEZSQU1FX1BPSU5URVIKLQlzZWxlY3QgU1RB Q0tUUkFDRQotCWRlZmF1bHQgbgotCWhlbHAKLQkgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdHJhY2lu ZyBvZiBkeW5hbWljYWxseSBhbGxvY2F0ZWQga2VybmVsIG1lbW9yeQotCSAgdG8gc2VlIGlmIG1l bW9yeSBpcyB1c2VkIGJlZm9yZSBpdCBoYXMgYmVlbiBnaXZlbiBhbiBpbml0aWFsIHZhbHVlLgot CSAgQmUgYXdhcmUgdGhhdCB0aGlzIHJlcXVpcmVzIGhhbGYgb2YgeW91ciBtZW1vcnkgZm9yIGJv b2trZWVwaW5nIGFuZAotCSAgd2lsbCBpbnNlcnQgZXh0cmEgY29kZSBhdCAqZXZlcnkqIHJlYWQg YW5kIHdyaXRlIHRvIHRyYWNrZWQgbWVtb3J5Ci0JICB0aHVzIHNsb3cgZG93biB0aGUga2VybmVs IGNvZGUgKGJ1dCB1c2VyIGNvZGUgaXMgdW5hZmZlY3RlZCkuCi0KLQkgIFRoZSBrZXJuZWwgbWF5 IGJlIHN0YXJ0ZWQgd2l0aCBrbWVtY2hlY2s9MCBvciBrbWVtY2hlY2s9MSB0byBkaXNhYmxlCi0J ICBvciBlbmFibGUga21lbWNoZWNrIGF0IGJvb3QtdGltZS4gSWYgdGhlIGtlcm5lbCBpcyBzdGFy dGVkIHdpdGgKLQkgIGttZW1jaGVjaz0wLCB0aGUgbGFyZ2UgbWVtb3J5IGFuZCBDUFUgb3Zlcmhl YWQgaXMgbm90IGluY3VycmVkLgotCi1jaG9pY2UKLQlwcm9tcHQgImttZW1jaGVjazogZGVmYXVs dCBtb2RlIGF0IGJvb3QiCi0JZGVwZW5kcyBvbiBLTUVNQ0hFQ0sKLQlkZWZhdWx0IEtNRU1DSEVD S19PTkVTSE9UX0JZX0RFRkFVTFQKLQloZWxwCi0JICBUaGlzIG9wdGlvbiBjb250cm9scyB0aGUg ZGVmYXVsdCBiZWhhdmlvdXIgb2Yga21lbWNoZWNrIHdoZW4gdGhlCi0JICBrZXJuZWwgYm9vdHMg YW5kIG5vIGttZW1jaGVjaz0gcGFyYW1ldGVyIGlzIGdpdmVuLgotCi1jb25maWcgS01FTUNIRUNL X0RJU0FCTEVEX0JZX0RFRkFVTFQKLQlib29sICJkaXNhYmxlZCIKLQlkZXBlbmRzIG9uIEtNRU1D SEVDSwotCi1jb25maWcgS01FTUNIRUNLX0VOQUJMRURfQllfREVGQVVMVAotCWJvb2wgImVuYWJs ZWQiCi0JZGVwZW5kcyBvbiBLTUVNQ0hFQ0sKLQotY29uZmlnIEtNRU1DSEVDS19PTkVTSE9UX0JZ X0RFRkFVTFQKLQlib29sICJvbmUtc2hvdCIKLQlkZXBlbmRzIG9uIEtNRU1DSEVDSwotCWhlbHAK LQkgIEluIG9uZS1zaG90IG1vZGUsIG9ubHkgdGhlIGZpcnN0IGVycm9yIGRldGVjdGVkIGlzIHJl cG9ydGVkIGJlZm9yZQotCSAga21lbWNoZWNrIGlzIGRpc2FibGVkLgotCi1lbmRjaG9pY2UKLQot Y29uZmlnIEtNRU1DSEVDS19RVUVVRV9TSVpFCi0JaW50ICJrbWVtY2hlY2s6IGVycm9yIHF1ZXVl IHNpemUiCi0JZGVwZW5kcyBvbiBLTUVNQ0hFQ0sKLQlkZWZhdWx0IDY0Ci0JaGVscAotCSAgU2Vs ZWN0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBlcnJvcnMgdG8gc3RvcmUgaW4gdGhlIHF1ZXVlLiBT aW5jZQotCSAgZXJyb3JzIGNhbiBvY2N1ciB2aXJ0dWFsbHkgYW55d2hlcmUgYW5kIGluIGFueSBj b250ZXh0LCB3ZSBuZWVkIGEKLQkgIHRlbXBvcmFyeSBzdG9yYWdlIGFyZWEgd2hpY2ggaXMgZ3Vh cmFudHVlZWQgbm90IHRvIGdlbmVyYXRlIGFueQotCSAgb3RoZXIgZmF1bHRzLiBUaGUgcXVldWUg d2lsbCBiZSBlbXB0aWVkIGFzIHNvb24gYXMgYSB0YXNrbGV0IG1heQotCSAgYmUgc2NoZWR1bGVk LiBJZiB0aGUgcXVldWUgaXMgZnVsbCwgbmV3IGVycm9yIHJlcG9ydHMgd2lsbCBiZQotCSAgbG9z dC4KLQotY29uZmlnIEtNRU1DSEVDS19TSEFET1dfQ09QWV9TSElGVAotCWludCAia21lbWNoZWNr OiBzaGFkb3cgY29weSBzaXplICg1ID0+IDMyIGJ5dGVzLCA2ID0+IDY0IGJ5dGVzKSIKLQlkZXBl bmRzIG9uIEtNRU1DSEVDSwotCXJhbmdlIDIgOAotCWRlZmF1bHQgNQotCWhlbHAKLQkgIFNlbGVj dCB0aGUgbnVtYmVyIG9mIHNoYWRvdyBieXRlcyB0byBzYXZlIGFsb25nIHdpdGggZWFjaCBlbnRy eSBvZgotCSAgdGhlIHF1ZXVlLiBUaGVzZSBieXRlcyBpbmRpY2F0ZSB3aGF0IHBhcnRzIG9mIGFu IGFsbG9jYXRpb24gYXJlCi0JICBpbml0aWFsaXplZCwgdW5pbml0aWFsaXplZCwgZXRjLiBhbmQg d2lsbCBiZSBkaXNwbGF5ZWQgd2hlbiBhbgotCSAgZXJyb3IgaXMgZGV0ZWN0ZWQgdG8gaGVscCB0 aGUgZGVidWdnaW5nIG9mIGEgcGFydGljdWxhciBwcm9ibGVtLgotCi1jb25maWcgS01FTUNIRUNL X1BBUlRJQUxfT0sKLQlib29sICJrbWVtY2hlY2s6IGFsbG93IHBhcnRpYWxseSB1bmluaXRpYWxp emVkIG1lbW9yeSIKLQlkZXBlbmRzIG9uIEtNRU1DSEVDSwotCWRlZmF1bHQgeQotCWhlbHAKLQkg IFRoaXMgb3B0aW9uIHdvcmtzIGFyb3VuZCBjZXJ0YWluIEdDQyBvcHRpbWl6YXRpb25zIHRoYXQg cHJvZHVjZQotCSAgMzItYml0IHJlYWRzIGZyb20gMTYtYml0IHZhcmlhYmxlcyB3aGVyZSB0aGUg dXBwZXIgMTYgYml0cyBhcmUKLQkgIHRocm93biBhd2F5IGFmdGVyd2FyZHMuIFRoaXMgbWF5IG9m IGNvdXJzZSBhbHNvIGhpZGUgc29tZSByZWFsCi0JICBidWdzLgotCi1jb25maWcgS01FTUNIRUNL X0JJVE9QU19PSwotCWJvb2wgImttZW1jaGVjazogYWxsb3cgYml0LWZpZWxkIG1hbmlwdWxhdGlv biIKLQlkZXBlbmRzIG9uIEtNRU1DSEVDSwotCWRlZmF1bHQgbgotCWhlbHAKLQkgIFRoaXMgb3B0 aW9uIHNpbGVuY2VzIHdhcm5pbmdzIHRoYXQgd291bGQgYmUgZ2VuZXJhdGVkIGZvciBiaXQtZmll bGQKLQkgIGFjY2Vzc2VzIHdoZXJlIG5vdCBhbGwgdGhlIGJpdHMgYXJlIGluaXRpYWxpemVkIGF0 IHRoZSBzYW1lIHRpbWUuCi0JICBUaGlzIG1heSBhbHNvIGhpZGUgc29tZSByZWFsIGJ1Z3MuCi0K LWVuZGlmCmRpZmYgLS1naXQgYS9tbS9LY29uZmlnLmRlYnVnIGIvbW0vS2NvbmZpZy5kZWJ1Zwpp bmRleCA5NTdkM2RhLi41MTNmZjRmIDEwMDY0NAotLS0gYS9tbS9LY29uZmlnLmRlYnVnCisrKyBi L21tL0tjb25maWcuZGVidWcKQEAgLTExLDcgKzExLDYgQEAgY29uZmlnIERFQlVHX1BBR0VBTExP QwogCWJvb2wgIkRlYnVnIHBhZ2UgbWVtb3J5IGFsbG9jYXRpb25zIgogCWRlcGVuZHMgb24gREVC VUdfS0VSTkVMCiAJZGVwZW5kcyBvbiAhSElCRVJOQVRJT04gfHwgQVJDSF9TVVBQT1JUU19ERUJV R19QQUdFQUxMT0MgJiYgIVBQQyAmJiAhU1BBUkMKLQlkZXBlbmRzIG9uICFLTUVNQ0hFQ0sKIAlz ZWxlY3QgUEFHRV9FWFRFTlNJT04KIAlzZWxlY3QgUEFHRV9QT0lTT05JTkcgaWYgIUFSQ0hfU1VQ UE9SVFNfREVCVUdfUEFHRUFMTE9DCiAJLS0taGVscC0tLQpkaWZmIC0tZ2l0IGEvbW0vTWFrZWZp bGUgYi9tbS9NYWtlZmlsZQppbmRleCA1MTA1MmJhLi5mYTM4OGIxIDEwMDY0NAotLS0gYS9tbS9N YWtlZmlsZQorKysgYi9tbS9NYWtlZmlsZQpAQCAtNTEsNyArNTEsNiBAQCBvYmotJChDT05GSUdf S1NNKSArPSBrc20ubwogb2JqLSQoQ09ORklHX1BBR0VfUE9JU09OSU5HKSArPSBkZWJ1Zy1wYWdl YWxsb2Mubwogb2JqLSQoQ09ORklHX1NMQUIpICs9IHNsYWIubwogb2JqLSQoQ09ORklHX1NMVUIp ICs9IHNsdWIubwotb2JqLSQoQ09ORklHX0tNRU1DSEVDSykgKz0ga21lbWNoZWNrLm8KIG9iai0k KENPTkZJR19LQVNBTikJKz0ga2FzYW4vCiBvYmotJChDT05GSUdfRkFJTFNMQUIpICs9IGZhaWxz bGFiLm8KIG9iai0kKENPTkZJR19NRU1PUllfSE9UUExVRykgKz0gbWVtb3J5X2hvdHBsdWcubwpk aWZmIC0tZ2l0IGEvbW0va21lbWNoZWNrLmMgYi9tbS9rbWVtY2hlY2suYwpkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggY2FiNThiYi4uMDAwMDAwMAotLS0gYS9tbS9rbWVtY2hlY2suYwor KysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0jaW5jbHVkZSA8bGludXgvZ2ZwLmg+Ci0j aW5jbHVkZSA8bGludXgvbW1fdHlwZXMuaD4KLSNpbmNsdWRlIDxsaW51eC9tbS5oPgotI2luY2x1 ZGUgPGxpbnV4L3NsYWIuaD4KLSNpbmNsdWRlICJzbGFiLmgiCi0jaW5jbHVkZSA8bGludXgva21l bWNoZWNrLmg+Ci0KLXZvaWQga21lbWNoZWNrX2FsbG9jX3NoYWRvdyhzdHJ1Y3QgcGFnZSAqcGFn ZSwgaW50IG9yZGVyLCBnZnBfdCBmbGFncywgaW50IG5vZGUpCi17Ci0Jc3RydWN0IHBhZ2UgKnNo YWRvdzsKLQlpbnQgcGFnZXM7Ci0JaW50IGk7Ci0KLQlwYWdlcyA9IDEgPDwgb3JkZXI7Ci0KLQkv KgotCSAqIFdpdGgga21lbWNoZWNrIGVuYWJsZWQsIHdlIG5lZWQgdG8gYWxsb2NhdGUgYSBtZW1v cnkgYXJlYSBmb3IgdGhlCi0JICogc2hhZG93IGJpdHMgYXMgd2VsbC4KLQkgKi8KLQlzaGFkb3cg PSBhbGxvY19wYWdlc19ub2RlKG5vZGUsIGZsYWdzIHwgX19HRlBfTk9UUkFDSywgb3JkZXIpOwot CWlmICghc2hhZG93KSB7Ci0JCWlmIChwcmludGtfcmF0ZWxpbWl0KCkpCi0JCQlwcmludGsoS0VS Tl9FUlIgImttZW1jaGVjazogZmFpbGVkIHRvIGFsbG9jYXRlICIKLQkJCQkic2hhZG93IGJpdG1h cFxuIik7Ci0JCXJldHVybjsKLQl9Ci0KLQlmb3IoaSA9IDA7IGkgPCBwYWdlczsgKytpKQotCQlw YWdlW2ldLnNoYWRvdyA9IHBhZ2VfYWRkcmVzcygmc2hhZG93W2ldKTsKLQotCS8qCi0JICogTWFy ayBpdCBhcyBub24tcHJlc2VudCBmb3IgdGhlIE1NVSBzbyB0aGF0IG91ciBhY2Nlc3NlcyB0bwot CSAqIHRoaXMgbWVtb3J5IHdpbGwgdHJpZ2dlciBhIHBhZ2UgZmF1bHQgYW5kIGxldCB1cyBhbmFs eXplCi0JICogdGhlIG1lbW9yeSBhY2Nlc3Nlcy4KLQkgKi8KLQlrbWVtY2hlY2tfaGlkZV9wYWdl cyhwYWdlLCBwYWdlcyk7Ci19Ci0KLXZvaWQga21lbWNoZWNrX2ZyZWVfc2hhZG93KHN0cnVjdCBw YWdlICpwYWdlLCBpbnQgb3JkZXIpCi17Ci0Jc3RydWN0IHBhZ2UgKnNoYWRvdzsKLQlpbnQgcGFn ZXM7Ci0JaW50IGk7Ci0KLQlpZiAoIWttZW1jaGVja19wYWdlX2lzX3RyYWNrZWQocGFnZSkpCi0J CXJldHVybjsKLQotCXBhZ2VzID0gMSA8PCBvcmRlcjsKLQotCWttZW1jaGVja19zaG93X3BhZ2Vz KHBhZ2UsIHBhZ2VzKTsKLQotCXNoYWRvdyA9IHZpcnRfdG9fcGFnZShwYWdlWzBdLnNoYWRvdyk7 Ci0KLQlmb3IoaSA9IDA7IGkgPCBwYWdlczsgKytpKQotCQlwYWdlW2ldLnNoYWRvdyA9IE5VTEw7 Ci0KLQlfX2ZyZWVfcGFnZXMoc2hhZG93LCBvcmRlcik7Ci19Ci0KLXZvaWQga21lbWNoZWNrX3Ns YWJfYWxsb2Moc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGdmcGZsYWdzLCB2b2lkICpvYmpl Y3QsCi0JCQkgIHNpemVfdCBzaXplKQotewotCS8qCi0JICogSGFzIGFscmVhZHkgYmVlbiBtZW1z ZXQoKSwgd2hpY2ggaW5pdGlhbGl6ZXMgdGhlIHNoYWRvdyBmb3IgdXMKLQkgKiBhcyB3ZWxsLgot CSAqLwotCWlmIChnZnBmbGFncyAmIF9fR0ZQX1pFUk8pCi0JCXJldHVybjsKLQotCS8qIE5vIG5l ZWQgdG8gaW5pdGlhbGl6ZSB0aGUgc2hhZG93IG9mIGEgbm9uLXRyYWNrZWQgc2xhYi4gKi8KLQlp ZiAocy0+ZmxhZ3MgJiBTTEFCX05PVFJBQ0spCi0JCXJldHVybjsKLQotCWlmICgha21lbWNoZWNr X2VuYWJsZWQgfHwgZ2ZwZmxhZ3MgJiBfX0dGUF9OT1RSQUNLKSB7Ci0JCS8qCi0JCSAqIEFsbG93 IG5vdHJhY2tlZCBvYmplY3RzIHRvIGJlIGFsbG9jYXRlZCBmcm9tCi0JCSAqIHRyYWNrZWQgY2Fj aGVzLiBOb3RlIGhvd2V2ZXIgdGhhdCB0aGVzZSBvYmplY3RzCi0JCSAqIHdpbGwgc3RpbGwgZ2V0 IHBhZ2UgZmF1bHRzIG9uIGFjY2VzcywgdGhleSBqdXN0Ci0JCSAqIHdvbid0IGV2ZXIgYmUgZmxh Z2dlZCBhcyB1bmluaXRpYWxpemVkLiBJZiBwYWdlCi0JCSAqIGZhdWx0cyBhcmUgbm90IGFjY2Vw dGFibGUsIHRoZSBzbGFiIGNhY2hlIGl0c2VsZgotCQkgKiBzaG91bGQgYmUgbWFya2VkIE5PVFJB Q0suCi0JCSAqLwotCQlrbWVtY2hlY2tfbWFya19pbml0aWFsaXplZChvYmplY3QsIHNpemUpOwot CX0gZWxzZSBpZiAoIXMtPmN0b3IpIHsKLQkJLyoKLQkJICogTmV3IG9iamVjdHMgc2hvdWxkIGJl IG1hcmtlZCB1bmluaXRpYWxpemVkIGJlZm9yZQotCQkgKiB0aGV5J3JlIHJldHVybmVkIHRvIHRo ZSBjYWxsZWQuCi0JCSAqLwotCQlrbWVtY2hlY2tfbWFya191bmluaXRpYWxpemVkKG9iamVjdCwg c2l6ZSk7Ci0JfQotfQotCi12b2lkIGttZW1jaGVja19zbGFiX2ZyZWUoc3RydWN0IGttZW1fY2Fj aGUgKnMsIHZvaWQgKm9iamVjdCwgc2l6ZV90IHNpemUpCi17Ci0JLyogVE9ETzogUkNVIGZyZWVp bmcgaXMgdW5zdXBwb3J0ZWQgZm9yIG5vdzsgaGlkZSBmYWxzZSBwb3NpdGl2ZXMuICovCi0JaWYg KCFzLT5jdG9yICYmICEocy0+ZmxhZ3MgJiBTTEFCX0RFU1RST1lfQllfUkNVKSkKLQkJa21lbWNo ZWNrX21hcmtfZnJlZWQob2JqZWN0LCBzaXplKTsKLX0KLQotdm9pZCBrbWVtY2hlY2tfcGFnZWFs bG9jX2FsbG9jKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBpbnQgb3JkZXIsCi0JCQkgICAg ICAgZ2ZwX3QgZ2ZwZmxhZ3MpCi17Ci0JaW50IHBhZ2VzOwotCi0JaWYgKGdmcGZsYWdzICYgKF9f R0ZQX0hJR0hNRU0gfCBfX0dGUF9OT1RSQUNLKSkKLQkJcmV0dXJuOwotCi0JcGFnZXMgPSAxIDw8 IG9yZGVyOwotCi0JLyoKLQkgKiBOT1RFOiBXZSBjaG9vc2UgdG8gdHJhY2sgR0ZQX1pFUk8gcGFn ZXMgdG9vOyBpbiBmYWN0LCB0aGV5Ci0JICogY2FuIGJlY29tZSB1bmluaXRpYWxpemVkIGJ5IGNv cHlpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkKLQkgKiBpbnRvIHRoZW0uCi0JICovCi0KLQkvKiBY WFg6IENhbiB1c2Ugem9uZS0+bm9kZSBmb3Igbm9kZT8gKi8KLQlrbWVtY2hlY2tfYWxsb2Nfc2hh ZG93KHBhZ2UsIG9yZGVyLCBnZnBmbGFncywgLTEpOwotCi0JaWYgKGdmcGZsYWdzICYgX19HRlBf WkVSTykKLQkJa21lbWNoZWNrX21hcmtfaW5pdGlhbGl6ZWRfcGFnZXMocGFnZSwgcGFnZXMpOwot CWVsc2UKLQkJa21lbWNoZWNrX21hcmtfdW5pbml0aWFsaXplZF9wYWdlcyhwYWdlLCBwYWdlcyk7 Ci19CmRpZmYgLS1naXQgYS9tbS9rbWVtbGVhay5jIGIvbW0va21lbWxlYWsuYwppbmRleCA1NDA1 YWZmLi4wOWQ5ZWNkIDEwMDY0NAotLS0gYS9tbS9rbWVtbGVhay5jCisrKyBiL21tL2ttZW1sZWFr LmMKQEAgLTk5LDcgKzk5LDYgQEAKICNpbmNsdWRlIDxsaW51eC9hdG9taWMuaD4KIAogI2luY2x1 ZGUgPGxpbnV4L2thc2FuLmg+Ci0jaW5jbHVkZSA8bGludXgva21lbWNoZWNrLmg+CiAjaW5jbHVk ZSA8bGludXgva21lbWxlYWsuaD4KICNpbmNsdWRlIDxsaW51eC9tZW1vcnlfaG90cGx1Zy5oPgog CkBAIC0xMTExLDkgKzExMTAsNiBAQCBzdGF0aWMgYm9vbCB1cGRhdGVfY2hlY2tzdW0oc3RydWN0 IGttZW1sZWFrX29iamVjdCAqb2JqZWN0KQogewogCXUzMiBvbGRfY3N1bSA9IG9iamVjdC0+Y2hl Y2tzdW07CiAKLQlpZiAoIWttZW1jaGVja19pc19vYmpfaW5pdGlhbGl6ZWQob2JqZWN0LT5wb2lu dGVyLCBvYmplY3QtPnNpemUpKQotCQlyZXR1cm4gZmFsc2U7Ci0KIAlrYXNhbl9kaXNhYmxlX2N1 cnJlbnQoKTsKIAlvYmplY3QtPmNoZWNrc3VtID0gY3JjMzIoMCwgKHZvaWQgKilvYmplY3QtPnBv aW50ZXIsIG9iamVjdC0+c2l6ZSk7CiAJa2FzYW5fZW5hYmxlX2N1cnJlbnQoKTsKQEAgLTExNjMs MTEgKzExNTksNiBAQCBzdGF0aWMgdm9pZCBzY2FuX2Jsb2NrKHZvaWQgKl9zdGFydCwgdm9pZCAq X2VuZCwKIAkJaWYgKHNjYW5fc2hvdWxkX3N0b3AoKSkKIAkJCWJyZWFrOwogCi0JCS8qIGRvbid0 IHNjYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgKi8KLQkJaWYgKCFrbWVtY2hlY2tfaXNfb2JqX2lu aXRpYWxpemVkKCh1bnNpZ25lZCBsb25nKXB0ciwKLQkJCQkJCSAgQllURVNfUEVSX1BPSU5URVIp KQotCQkJY29udGludWU7Ci0KIAkJa2FzYW5fZGlzYWJsZV9jdXJyZW50KCk7CiAJCXBvaW50ZXIg PSAqcHRyOwogCQlrYXNhbl9lbmFibGVfY3VycmVudCgpOwpkaWZmIC0tZ2l0IGEvbW0vcGFnZV9h bGxvYy5jIGIvbW0vcGFnZV9hbGxvYy5jCmluZGV4IDFiODQ5NTAuLjVmMGIwMTIgMTAwNjQ0Ci0t LSBhL21tL3BhZ2VfYWxsb2MuYworKysgYi9tbS9wYWdlX2FsbG9jLmMKQEAgLTI0LDcgKzI0LDYg QEAKICNpbmNsdWRlIDxsaW51eC9tZW1ibG9jay5oPgogI2luY2x1ZGUgPGxpbnV4L2NvbXBpbGVy Lmg+CiAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+Ci0jaW5jbHVkZSA8bGludXgva21lbWNoZWNr Lmg+CiAjaW5jbHVkZSA8bGludXgva2FzYW4uaD4KICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4K ICNpbmNsdWRlIDxsaW51eC9zdXNwZW5kLmg+CkBAIC03ODcsNyArNzg2LDYgQEAgc3RhdGljIGJv b2wgZnJlZV9wYWdlc19wcmVwYXJlKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBpbnQgb3Jk ZXIpCiAJVk1fQlVHX09OX1BBR0UoY29tcG91bmQgJiYgY29tcG91bmRfb3JkZXIocGFnZSkgIT0g b3JkZXIsIHBhZ2UpOwogCiAJdHJhY2VfbW1fcGFnZV9mcmVlKHBhZ2UsIG9yZGVyKTsKLQlrbWVt Y2hlY2tfZnJlZV9zaGFkb3cocGFnZSwgb3JkZXIpOwogCWthc2FuX2ZyZWVfcGFnZXMocGFnZSwg b3JkZXIpOwogCiAJaWYgKFBhZ2VBbm9uKHBhZ2UpKQpAQCAtMTYwNywxNSArMTYwNSw2IEBAIHZv aWQgc3BsaXRfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgaW50IG9yZGVyKQogCVZN X0JVR19PTl9QQUdFKFBhZ2VDb21wb3VuZChwYWdlKSwgcGFnZSk7CiAJVk1fQlVHX09OX1BBR0Uo IXBhZ2VfY291bnQocGFnZSksIHBhZ2UpOwogCi0jaWZkZWYgQ09ORklHX0tNRU1DSEVDSwotCS8q Ci0JICogU3BsaXQgc2hhZG93IHBhZ2VzIHRvbywgYmVjYXVzZSBmcmVlKHBhZ2VbMF0pIHdvdWxk Ci0JICogb3RoZXJ3aXNlIGZyZWUgdGhlIHdob2xlIHNoYWRvdy4KLQkgKi8KLQlpZiAoa21lbWNo ZWNrX3BhZ2VfaXNfdHJhY2tlZChwYWdlKSkKLQkJc3BsaXRfcGFnZSh2aXJ0X3RvX3BhZ2UocGFn ZVswXS5zaGFkb3cpLCBvcmRlcik7Ci0jZW5kaWYKLQogCXNldF9wYWdlX293bmVyKHBhZ2UsIDAs IDApOwogCWZvciAoaSA9IDE7IGkgPCAoMSA8PCBvcmRlcik7IGkrKykgewogCQlzZXRfcGFnZV9y ZWZjb3VudGVkKHBhZ2UgKyBpKTsKQEAgLTI4OTksOSArMjg4OCw2IEBAIHJldHJ5X2NwdXNldDoK IAkJcGFnZSA9IF9fYWxsb2NfcGFnZXNfc2xvd3BhdGgoYWxsb2NfbWFzaywgb3JkZXIsICZhYyk7 CiAJfQogCi0JaWYgKGttZW1jaGVja19lbmFibGVkICYmIHBhZ2UpCi0JCWttZW1jaGVja19wYWdl YWxsb2NfYWxsb2MocGFnZSwgb3JkZXIsIGdmcF9tYXNrKTsKLQogCXRyYWNlX21tX3BhZ2VfYWxs b2MocGFnZSwgb3JkZXIsIGFsbG9jX21hc2ssIGFjLm1pZ3JhdGV0eXBlKTsKIAogb3V0OgpkaWZm IC0tZ2l0IGEvbW0vc2xhYi5jIGIvbW0vc2xhYi5jCmluZGV4IDdlYjM4ZGQuLjc2M2E2MTUgMTAw NjQ0Ci0tLSBhL21tL3NsYWIuYworKysgYi9tbS9zbGFiLmMKQEAgLTExMyw3ICsxMTMsNiBAQAog I2luY2x1ZGUJPGxpbnV4L3J0bXV0ZXguaD4KICNpbmNsdWRlCTxsaW51eC9yZWNpcHJvY2FsX2Rp di5oPgogI2luY2x1ZGUJPGxpbnV4L2RlYnVnb2JqZWN0cy5oPgotI2luY2x1ZGUJPGxpbnV4L2tt ZW1jaGVjay5oPgogI2luY2x1ZGUJPGxpbnV4L21lbW9yeS5oPgogI2luY2x1ZGUJPGxpbnV4L3By ZWZldGNoLmg+CiAKQEAgLTE1OTQsNyArMTU5Myw3IEBAIHN0YXRpYyBzdHJ1Y3QgcGFnZSAqa21l bV9nZXRwYWdlcyhzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGVwLCBnZnBfdCBmbGFncywKIAlpZiAo bWVtY2dfY2hhcmdlX3NsYWIoY2FjaGVwLCBmbGFncywgY2FjaGVwLT5nZnBvcmRlcikpCiAJCXJl dHVybiBOVUxMOwogCi0JcGFnZSA9IGFsbG9jX3BhZ2VzX2V4YWN0X25vZGUobm9kZWlkLCBmbGFn cyB8IF9fR0ZQX05PVFJBQ0ssIGNhY2hlcC0+Z2Zwb3JkZXIpOworCXBhZ2UgPSBhbGxvY19wYWdl c19leGFjdF9ub2RlKG5vZGVpZCwgZmxhZ3MsIGNhY2hlcC0+Z2Zwb3JkZXIpOwogCWlmICghcGFn ZSkgewogCQltZW1jZ191bmNoYXJnZV9zbGFiKGNhY2hlcCwgY2FjaGVwLT5nZnBvcmRlcik7CiAJ CXNsYWJfb3V0X29mX21lbW9yeShjYWNoZXAsIGZsYWdzLCBub2RlaWQpOwpAQCAtMTYxNiwxNSAr MTYxNSw2IEBAIHN0YXRpYyBzdHJ1Y3QgcGFnZSAqa21lbV9nZXRwYWdlcyhzdHJ1Y3Qga21lbV9j YWNoZSAqY2FjaGVwLCBnZnBfdCBmbGFncywKIAlpZiAocGFnZS0+cGZtZW1hbGxvYykKIAkJU2V0 UGFnZVNsYWJQZm1lbWFsbG9jKHBhZ2UpOwogCi0JaWYgKGttZW1jaGVja19lbmFibGVkICYmICEo Y2FjaGVwLT5mbGFncyAmIFNMQUJfTk9UUkFDSykpIHsKLQkJa21lbWNoZWNrX2FsbG9jX3NoYWRv dyhwYWdlLCBjYWNoZXAtPmdmcG9yZGVyLCBmbGFncywgbm9kZWlkKTsKLQotCQlpZiAoY2FjaGVw LT5jdG9yKQotCQkJa21lbWNoZWNrX21hcmtfdW5pbml0aWFsaXplZF9wYWdlcyhwYWdlLCBucl9w YWdlcyk7Ci0JCWVsc2UKLQkJCWttZW1jaGVja19tYXJrX3VuYWxsb2NhdGVkX3BhZ2VzKHBhZ2Us IG5yX3BhZ2VzKTsKLQl9Ci0KIAlyZXR1cm4gcGFnZTsKIH0KIApAQCAtMTYzNSw4ICsxNjI1LDYg QEAgc3RhdGljIHZvaWQga21lbV9mcmVlcGFnZXMoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlcCwg c3RydWN0IHBhZ2UgKnBhZ2UpCiB7CiAJY29uc3QgdW5zaWduZWQgbG9uZyBucl9mcmVlZCA9ICgx IDw8IGNhY2hlcC0+Z2Zwb3JkZXIpOwogCi0Ja21lbWNoZWNrX2ZyZWVfc2hhZG93KHBhZ2UsIGNh Y2hlcC0+Z2Zwb3JkZXIpOwotCiAJaWYgKGNhY2hlcC0+ZmxhZ3MgJiBTTEFCX1JFQ0xBSU1fQUND T1VOVCkKIAkJc3ViX3pvbmVfcGFnZV9zdGF0ZShwYWdlX3pvbmUocGFnZSksCiAJCQkJTlJfU0xB Ql9SRUNMQUlNQUJMRSwgbnJfZnJlZWQpOwpAQCAtMzE5MCwxMSArMzE3OCw4IEBAIHNsYWJfYWxs b2Nfbm9kZShzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGVwLCBnZnBfdCBmbGFncywgaW50IG5vZGVp ZCwKIAlrbWVtbGVha19hbGxvY19yZWN1cnNpdmUocHRyLCBjYWNoZXAtPm9iamVjdF9zaXplLCAx LCBjYWNoZXAtPmZsYWdzLAogCQkJCSBmbGFncyk7CiAKLQlpZiAobGlrZWx5KHB0cikpIHsKLQkJ a21lbWNoZWNrX3NsYWJfYWxsb2MoY2FjaGVwLCBmbGFncywgcHRyLCBjYWNoZXAtPm9iamVjdF9z aXplKTsKLQkJaWYgKHVubGlrZWx5KGZsYWdzICYgX19HRlBfWkVSTykpCi0JCQltZW1zZXQocHRy LCAwLCBjYWNoZXAtPm9iamVjdF9zaXplKTsKLQl9CisJaWYgKHVubGlrZWx5KHB0ciAmJiAoZmxh Z3MgJiBfX0dGUF9aRVJPKSkpCisJCW1lbXNldChwdHIsIDAsIGNhY2hlcC0+b2JqZWN0X3NpemUp OwogCiAJbWVtY2dfa21lbV9wdXRfY2FjaGUoY2FjaGVwKTsKIAlyZXR1cm4gcHRyOwpAQCAtMzI1 NiwxMSArMzI0MSw4IEBAIHNsYWJfYWxsb2Moc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlcCwgZ2Zw X3QgZmxhZ3MsIHVuc2lnbmVkIGxvbmcgY2FsbGVyKQogCQkJCSBmbGFncyk7CiAJcHJlZmV0Y2h3 KG9ianApOwogCi0JaWYgKGxpa2VseShvYmpwKSkgewotCQlrbWVtY2hlY2tfc2xhYl9hbGxvYyhj YWNoZXAsIGZsYWdzLCBvYmpwLCBjYWNoZXAtPm9iamVjdF9zaXplKTsKLQkJaWYgKHVubGlrZWx5 KGZsYWdzICYgX19HRlBfWkVSTykpCi0JCQltZW1zZXQob2JqcCwgMCwgY2FjaGVwLT5vYmplY3Rf c2l6ZSk7Ci0JfQorCWlmICh1bmxpa2VseShvYmpwICYmIChmbGFncyAmIF9fR0ZQX1pFUk8pKSkK KwkJbWVtc2V0KG9ianAsIDAsIGNhY2hlcC0+b2JqZWN0X3NpemUpOwogCiAJbWVtY2dfa21lbV9w dXRfY2FjaGUoY2FjaGVwKTsKIAlyZXR1cm4gb2JqcDsKQEAgLTMzNzQsOCArMzM1Niw2IEBAIHN0 YXRpYyBpbmxpbmUgdm9pZCBfX2NhY2hlX2ZyZWUoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlcCwg dm9pZCAqb2JqcCwKIAlrbWVtbGVha19mcmVlX3JlY3Vyc2l2ZShvYmpwLCBjYWNoZXAtPmZsYWdz KTsKIAlvYmpwID0gY2FjaGVfZnJlZV9kZWJ1Z2NoZWNrKGNhY2hlcCwgb2JqcCwgY2FsbGVyKTsK IAotCWttZW1jaGVja19zbGFiX2ZyZWUoY2FjaGVwLCBvYmpwLCBjYWNoZXAtPm9iamVjdF9zaXpl KTsKLQogCS8qCiAJICogU2tpcCBjYWxsaW5nIGNhY2hlX2ZyZWVfYWxpZW4oKSB3aGVuIHRoZSBw bGF0Zm9ybSBpcyBub3QgbnVtYS4KIAkgKiBUaGlzIHdpbGwgYXZvaWQgY2FjaGUgbWlzc2VzIHRo YXQgaGFwcGVuIHdoaWxlIGFjY2Vzc2luZyBzbGFicCAod2hpY2gKZGlmZiAtLWdpdCBhL21tL3Ns YWIuaCBiL21tL3NsYWIuaAppbmRleCA0YzNhYzEyLi5jNjFkYjQ3IDEwMDY0NAotLS0gYS9tbS9z bGFiLmgKKysrIGIvbW0vc2xhYi5oCkBAIC0xMjcsMTAgKzEyNywxMCBAQCBzdGF0aWMgaW5saW5l IHVuc2lnbmVkIGxvbmcga21lbV9jYWNoZV9mbGFncyh1bnNpZ25lZCBsb25nIG9iamVjdF9zaXpl LAogCiAjaWYgZGVmaW5lZChDT05GSUdfU0xBQikKICNkZWZpbmUgU0xBQl9DQUNIRV9GTEFHUyAo U0xBQl9NRU1fU1BSRUFEIHwgU0xBQl9OT0xFQUtUUkFDRSB8IFwKLQkJCSAgU0xBQl9SRUNMQUlN X0FDQ09VTlQgfCBTTEFCX1RFTVBPUkFSWSB8IFNMQUJfTk9UUkFDSykKKwkJCSAgU0xBQl9SRUNM QUlNX0FDQ09VTlQgfCBTTEFCX1RFTVBPUkFSWSkKICNlbGlmIGRlZmluZWQoQ09ORklHX1NMVUIp CiAjZGVmaW5lIFNMQUJfQ0FDSEVfRkxBR1MgKFNMQUJfTk9MRUFLVFJBQ0UgfCBTTEFCX1JFQ0xB SU1fQUNDT1VOVCB8IFwKLQkJCSAgU0xBQl9URU1QT1JBUlkgfCBTTEFCX05PVFJBQ0spCisJCQkg IFNMQUJfVEVNUE9SQVJZKQogI2Vsc2UKICNkZWZpbmUgU0xBQl9DQUNIRV9GTEFHUyAoMCkKICNl bmRpZgpkaWZmIC0tZ2l0IGEvbW0vc2xhYl9jb21tb24uYyBiL21tL3NsYWJfY29tbW9uLmMKaW5k ZXggOTk5YmIzNC4uNzVmMGE1ZiAxMDA2NDQKLS0tIGEvbW0vc2xhYl9jb21tb24uYworKysgYi9t bS9zbGFiX2NvbW1vbi5jCkBAIC0zOCw3ICszOCw3IEBAIHN0cnVjdCBrbWVtX2NhY2hlICprbWVt X2NhY2hlOwogCQlTTEFCX0ZBSUxTTEFCKQogCiAjZGVmaW5lIFNMQUJfTUVSR0VfU0FNRSAoU0xB Ql9ERUJVR19GUkVFIHwgU0xBQl9SRUNMQUlNX0FDQ09VTlQgfCBcCi0JCVNMQUJfQ0FDSEVfRE1B IHwgU0xBQl9OT1RSQUNLKQorCQlTTEFCX0NBQ0hFX0RNQSkKIAogLyoKICAqIE1lcmdlIGNvbnRy b2wuIElmIHRoaXMgaXMgc2V0IHRoZW4gbm8gbWVyZ2luZyBvZiBzbGFiIGNhY2hlcyB3aWxsIG9j Y3VyLgpkaWZmIC0tZ2l0IGEvbW0vc2x1Yi5jIGIvbW0vc2x1Yi5jCmluZGV4IDI1ODRkNGYuLmVk NGFlYjEgMTAwNjQ0Ci0tLSBhL21tL3NsdWIuYworKysgYi9tbS9zbHViLmMKQEAgLTIxLDcgKzIx LDYgQEAKICNpbmNsdWRlIDxsaW51eC9ub3RpZmllci5oPgogI2luY2x1ZGUgPGxpbnV4L3NlcV9m aWxlLmg+CiAjaW5jbHVkZSA8bGludXgva2FzYW4uaD4KLSNpbmNsdWRlIDxsaW51eC9rbWVtY2hl Y2suaD4KICNpbmNsdWRlIDxsaW51eC9jcHUuaD4KICNpbmNsdWRlIDxsaW51eC9jcHVzZXQuaD4K ICNpbmNsdWRlIDxsaW51eC9tZW1wb2xpY3kuaD4KQEAgLTEyNzUsNyArMTI3NCw2IEBAIHN0YXRp YyBpbmxpbmUgdm9pZCBzbGFiX3Bvc3RfYWxsb2NfaG9vayhzdHJ1Y3Qga21lbV9jYWNoZSAqcywK IAkJCQkJZ2ZwX3QgZmxhZ3MsIHZvaWQgKm9iamVjdCkKIHsKIAlmbGFncyAmPSBnZnBfYWxsb3dl ZF9tYXNrOwotCWttZW1jaGVja19zbGFiX2FsbG9jKHMsIGZsYWdzLCBvYmplY3QsIHNsYWJfa3Np emUocykpOwogCWttZW1sZWFrX2FsbG9jX3JlY3Vyc2l2ZShvYmplY3QsIHMtPm9iamVjdF9zaXpl LCAxLCBzLT5mbGFncywgZmxhZ3MpOwogCW1lbWNnX2ttZW1fcHV0X2NhY2hlKHMpOwogCWthc2Fu X3NsYWJfYWxsb2Mocywgb2JqZWN0KTsKQEAgLTEyOTAsMTIgKzEyODgsMTEgQEAgc3RhdGljIGlu bGluZSB2b2lkIHNsYWJfZnJlZV9ob29rKHN0cnVjdCBrbWVtX2NhY2hlICpzLCB2b2lkICp4KQog CSAqIFNvIGluIG9yZGVyIHRvIG1ha2UgdGhlIGRlYnVnIGNhbGxzIHRoYXQgZXhwZWN0IGlycXMg dG8gYmUKIAkgKiBkaXNhYmxlZCB3ZSBuZWVkIHRvIGRpc2FibGUgaW50ZXJydXB0cyB0ZW1wb3Jh cmlseS4KIAkgKi8KLSNpZiBkZWZpbmVkKENPTkZJR19LTUVNQ0hFQ0spIHx8IGRlZmluZWQoQ09O RklHX0xPQ0tERVApCisjaWYgZGVmaW5lZChDT05GSUdfTE9DS0RFUCkKIAl7CiAJCXVuc2lnbmVk IGxvbmcgZmxhZ3M7CiAKIAkJbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOwotCQlrbWVtY2hlY2tfc2xh Yl9mcmVlKHMsIHgsIHMtPm9iamVjdF9zaXplKTsKIAkJZGVidWdfY2hlY2tfbm9fbG9ja3NfZnJl ZWQoeCwgcy0+b2JqZWN0X3NpemUpOwogCQlsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7CiAJfQpA QCAtMTMxNSw4ICsxMzEyLDYgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgcGFnZSAqYWxsb2Nfc2xh Yl9wYWdlKHN0cnVjdCBrbWVtX2NhY2hlICpzLAogCXN0cnVjdCBwYWdlICpwYWdlOwogCWludCBv cmRlciA9IG9vX29yZGVyKG9vKTsKIAotCWZsYWdzIHw9IF9fR0ZQX05PVFJBQ0s7Ci0KIAlpZiAo bWVtY2dfY2hhcmdlX3NsYWIocywgZmxhZ3MsIG9yZGVyKSkKIAkJcmV0dXJuIE5VTEw7CiAKQEAg LTEzNjQsMjIgKzEzNTksNiBAQCBzdGF0aWMgc3RydWN0IHBhZ2UgKmFsbG9jYXRlX3NsYWIoc3Ry dWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGZsYWdzLCBpbnQgbm9kZSkKIAkJCXN0YXQocywgT1JE RVJfRkFMTEJBQ0spOwogCX0KIAotCWlmIChrbWVtY2hlY2tfZW5hYmxlZCAmJiBwYWdlCi0JCSYm ICEocy0+ZmxhZ3MgJiAoU0xBQl9OT1RSQUNLIHwgREVCVUdfREVGQVVMVF9GTEFHUykpKSB7Ci0J CWludCBwYWdlcyA9IDEgPDwgb29fb3JkZXIob28pOwotCi0JCWttZW1jaGVja19hbGxvY19zaGFk b3cocGFnZSwgb29fb3JkZXIob28pLCBhbGxvY19nZnAsIG5vZGUpOwotCi0JCS8qCi0JCSAqIE9i amVjdHMgZnJvbSBjYWNoZXMgdGhhdCBoYXZlIGEgY29uc3RydWN0b3IgZG9uJ3QgZ2V0Ci0JCSAq IGNsZWFyZWQgd2hlbiB0aGV5J3JlIGFsbG9jYXRlZCwgc28gd2UgbmVlZCB0byBkbyBpdCBoZXJl LgotCQkgKi8KLQkJaWYgKHMtPmN0b3IpCi0JCQlrbWVtY2hlY2tfbWFya191bmluaXRpYWxpemVk X3BhZ2VzKHBhZ2UsIHBhZ2VzKTsKLQkJZWxzZQotCQkJa21lbWNoZWNrX21hcmtfdW5hbGxvY2F0 ZWRfcGFnZXMocGFnZSwgcGFnZXMpOwotCX0KLQogCWlmIChmbGFncyAmIF9fR0ZQX1dBSVQpCiAJ CWxvY2FsX2lycV9kaXNhYmxlKCk7CiAJaWYgKCFwYWdlKQpAQCAtMTQ2Niw4ICsxNDQ1LDYgQEAg c3RhdGljIHZvaWQgX19mcmVlX3NsYWIoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBwYWdl ICpwYWdlKQogCQkJY2hlY2tfb2JqZWN0KHMsIHBhZ2UsIHAsIFNMVUJfUkVEX0lOQUNUSVZFKTsK IAl9CiAKLQlrbWVtY2hlY2tfZnJlZV9zaGFkb3cocGFnZSwgY29tcG91bmRfb3JkZXIocGFnZSkp OwotCiAJbW9kX3pvbmVfcGFnZV9zdGF0ZShwYWdlX3pvbmUocGFnZSksCiAJCShzLT5mbGFncyAm IFNMQUJfUkVDTEFJTV9BQ0NPVU5UKSA/CiAJCU5SX1NMQUJfUkVDTEFJTUFCTEUgOiBOUl9TTEFC X1VOUkVDTEFJTUFCTEUsCkBAIC0zMzI5LDcgKzMzMDYsNyBAQCBzdGF0aWMgdm9pZCAqa21hbGxv Y19sYXJnZV9ub2RlKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncywgaW50IG5vZGUpCiAJc3RydWN0 IHBhZ2UgKnBhZ2U7CiAJdm9pZCAqcHRyID0gTlVMTDsKIAotCWZsYWdzIHw9IF9fR0ZQX0NPTVAg fCBfX0dGUF9OT1RSQUNLOworCWZsYWdzIHw9IF9fR0ZQX0NPTVA7CiAJcGFnZSA9IGFsbG9jX2tt ZW1fcGFnZXNfbm9kZShub2RlLCBmbGFncywgZ2V0X29yZGVyKHNpemUpKTsKIAlpZiAocGFnZSkK IAkJcHRyID0gcGFnZV9hZGRyZXNzKHBhZ2UpOwpAQCAtNTE0Myw4ICs1MTIwLDYgQEAgc3RhdGlj IGNoYXIgKmNyZWF0ZV91bmlxdWVfaWQoc3RydWN0IGttZW1fY2FjaGUgKnMpCiAJCSpwKysgPSAn YSc7CiAJaWYgKHMtPmZsYWdzICYgU0xBQl9ERUJVR19GUkVFKQogCQkqcCsrID0gJ0YnOwotCWlm ICghKHMtPmZsYWdzICYgU0xBQl9OT1RSQUNLKSkKLQkJKnArKyA9ICd0JzsKIAlpZiAocCAhPSBu YW1lICsgMSkKIAkJKnArKyA9ICctJzsKIAlwICs9IHNwcmludGYocCwgIiUwN2QiLCBzLT5zaXpl KTsKZGlmZiAtLWdpdCBhL25ldC9jb3JlL3NrYnVmZi5jIGIvbmV0L2NvcmUvc2tidWZmLmMKaW5k ZXggNDdjMzI0MS4uNmQyNzY0NSAxMDA2NDQKLS0tIGEvbmV0L2NvcmUvc2tidWZmLmMKKysrIGIv bmV0L2NvcmUvc2tidWZmLmMKQEAgLTQxLDcgKzQxLDYgQEAKICNpbmNsdWRlIDxsaW51eC9tb2R1 bGUuaD4KICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgogI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5o PgotI2luY2x1ZGUgPGxpbnV4L2ttZW1jaGVjay5oPgogI2luY2x1ZGUgPGxpbnV4L21tLmg+CiAj aW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+CiAjaW5jbHVkZSA8bGludXgvaW4uaD4KQEAgLTI1 NiwxNCArMjU1LDEyIEBAIHN0cnVjdCBza19idWZmICpfX2FsbG9jX3NrYih1bnNpZ25lZCBpbnQg c2l6ZSwgZ2ZwX3QgZ2ZwX21hc2ssCiAJc2hpbmZvID0gc2tiX3NoaW5mbyhza2IpOwogCW1lbXNl dChzaGluZm8sIDAsIG9mZnNldG9mKHN0cnVjdCBza2Jfc2hhcmVkX2luZm8sIGRhdGFyZWYpKTsK IAlhdG9taWNfc2V0KCZzaGluZm8tPmRhdGFyZWYsIDEpOwotCWttZW1jaGVja19hbm5vdGF0ZV92 YXJpYWJsZShzaGluZm8tPmRlc3RydWN0b3JfYXJnKTsKIAogCWlmIChmbGFncyAmIFNLQl9BTExP Q19GQ0xPTkUpIHsKIAkJc3RydWN0IHNrX2J1ZmZfZmNsb25lcyAqZmNsb25lczsKIAogCQlmY2xv bmVzID0gY29udGFpbmVyX29mKHNrYiwgc3RydWN0IHNrX2J1ZmZfZmNsb25lcywgc2tiMSk7CiAK LQkJa21lbWNoZWNrX2Fubm90YXRlX2JpdGZpZWxkKCZmY2xvbmVzLT5za2IyLCBmbGFnczEpOwog CQlza2ItPmZjbG9uZSA9IFNLQl9GQ0xPTkVfT1JJRzsKIAkJYXRvbWljX3NldCgmZmNsb25lcy0+ ZmNsb25lX3JlZiwgMSk7CiAKQEAgLTMyNCw3ICszMjEsNiBAQCBzdHJ1Y3Qgc2tfYnVmZiAqYnVp bGRfc2tiKHZvaWQgKmRhdGEsIHVuc2lnbmVkIGludCBmcmFnX3NpemUpCiAJc2hpbmZvID0gc2ti X3NoaW5mbyhza2IpOwogCW1lbXNldChzaGluZm8sIDAsIG9mZnNldG9mKHN0cnVjdCBza2Jfc2hh cmVkX2luZm8sIGRhdGFyZWYpKTsKIAlhdG9taWNfc2V0KCZzaGluZm8tPmRhdGFyZWYsIDEpOwot CWttZW1jaGVja19hbm5vdGF0ZV92YXJpYWJsZShzaGluZm8tPmRlc3RydWN0b3JfYXJnKTsKIAog CXJldHVybiBza2I7CiB9CkBAIC05ODUsNyArOTgxLDYgQEAgc3RydWN0IHNrX2J1ZmYgKnNrYl9j bG9uZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBnZnBfdCBnZnBfbWFzaykKIAkJaWYgKCFuKQogCQkJ cmV0dXJuIE5VTEw7CiAKLQkJa21lbWNoZWNrX2Fubm90YXRlX2JpdGZpZWxkKG4sIGZsYWdzMSk7 CiAJCW4tPmZjbG9uZSA9IFNLQl9GQ0xPTkVfVU5BVkFJTEFCTEU7CiAJfQogCmRpZmYgLS1naXQg YS9uZXQvY29yZS9zb2NrLmMgYi9uZXQvY29yZS9zb2NrLmMKaW5kZXggNzI2ZTFmOS4uOGM5YjBk ZiAxMDA2NDQKLS0tIGEvbmV0L2NvcmUvc29jay5jCisrKyBiL25ldC9jb3JlL3NvY2suYwpAQCAt MTMyMSw4ICsxMzIxLDYgQEAgc3RhdGljIHN0cnVjdCBzb2NrICpza19wcm90X2FsbG9jKHN0cnVj dCBwcm90byAqcHJvdCwgZ2ZwX3QgcHJpb3JpdHksCiAJCXNrID0ga21hbGxvYyhwcm90LT5vYmpf c2l6ZSwgcHJpb3JpdHkpOwogCiAJaWYgKHNrICE9IE5VTEwpIHsKLQkJa21lbWNoZWNrX2Fubm90 YXRlX2JpdGZpZWxkKHNrLCBmbGFncyk7Ci0KIAkJaWYgKHNlY3VyaXR5X3NrX2FsbG9jKHNrLCBm YW1pbHksIHByaW9yaXR5KSkKIAkJCWdvdG8gb3V0X2ZyZWU7CiAKZGlmZiAtLWdpdCBhL25ldC9p cHY0L2luZXRfdGltZXdhaXRfc29jay5jIGIvbmV0L2lwdjQvaW5ldF90aW1ld2FpdF9zb2NrLmMK aW5kZXggNmQ1OTJmOC4uYWZjZmFmMCAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvaW5ldF90aW1ld2Fp dF9zb2NrLmMKKysrIGIvbmV0L2lwdjQvaW5ldF90aW1ld2FpdF9zb2NrLmMKQEAgLTksNyArOSw2 IEBACiAgKi8KIAogI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgotI2luY2x1ZGUgPGxpbnV4L2tt ZW1jaGVjay5oPgogI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KICNpbmNsdWRlIDxsaW51eC9tb2R1 bGUuaD4KICNpbmNsdWRlIDxuZXQvaW5ldF9oYXNodGFibGVzLmg+CkBAIC0xNzcsOCArMTc2LDYg QEAgc3RydWN0IGluZXRfdGltZXdhaXRfc29jayAqaW5ldF90d3NrX2FsbG9jKGNvbnN0IHN0cnVj dCBzb2NrICpzaywgY29uc3QgaW50IHN0YXQKIAlpZiAodHcgIT0gTlVMTCkgewogCQljb25zdCBz dHJ1Y3QgaW5ldF9zb2NrICppbmV0ID0gaW5ldF9zayhzayk7CiAKLQkJa21lbWNoZWNrX2Fubm90 YXRlX2JpdGZpZWxkKHR3LCBmbGFncyk7Ci0KIAkJLyogR2l2ZSB1cyBhbiBpZGVudGl0eS4gKi8K IAkJdHctPnR3X2RhZGRyCSAgICA9IGluZXQtPmluZXRfZGFkZHI7CiAJCXR3LT50d19yY3Zfc2Fk ZHIgICAgPSBpbmV0LT5pbmV0X3Jjdl9zYWRkcjsKZGlmZiAtLWdpdCBhL25ldC9zb2NrZXQuYyBi L25ldC9zb2NrZXQuYwppbmRleCA5NWQzMDg1Li4wYjlkOTIyIDEwMDY0NAotLS0gYS9uZXQvc29j a2V0LmMKKysrIGIvbmV0L3NvY2tldC5jCkBAIC01NDUsNyArNTQ1LDYgQEAgc3RhdGljIHN0cnVj dCBzb2NrZXQgKnNvY2tfYWxsb2Modm9pZCkKIAogCXNvY2sgPSBTT0NLRVRfSShpbm9kZSk7CiAK LQlrbWVtY2hlY2tfYW5ub3RhdGVfYml0ZmllbGQoc29jaywgdHlwZSk7CiAJaW5vZGUtPmlfaW5v ID0gZ2V0X25leHRfaW5vKCk7CiAJaW5vZGUtPmlfbW9kZSA9IFNfSUZTT0NLIHwgU19JUldYVUdP OwogCWlub2RlLT5pX3VpZCA9IGN1cnJlbnRfZnN1aWQoKTsKZGlmZiAtLWdpdCBhL3NjcmlwdHMv a2VybmVsLWRvYyBiL3NjcmlwdHMva2VybmVsLWRvYwppbmRleCA5OTIyZTY2Li5jNjljYTllIDEw MDc1NQotLS0gYS9zY3JpcHRzL2tlcm5lbC1kb2MKKysrIGIvc2NyaXB0cy9rZXJuZWwtZG9jCkBA IC0xNzUwLDggKzE3NTAsNiBAQCBzdWIgZHVtcF9zdHJ1Y3QoJCQpIHsKIAkjIHN0cmlwIGNvbW1l bnRzOgogCSRtZW1iZXJzID1+IHMvXC9cKi4qP1wqXC8vL2dvczsKIAkkbmVzdGVkID1+IHMvXC9c Ki4qP1wqXC8vL2dvczsKLQkjIHN0cmlwIGttZW1jaGVja19iaXRmaWVsZF97YmVnaW4sZW5kfS4q OwotCSRtZW1iZXJzID1+IHMva21lbWNoZWNrX2JpdGZpZWxkXy4qPzsvL2dvczsKIAkjIHN0cmlw IGF0dHJpYnV0ZXMKIAkkbWVtYmVycyA9fiBzL19fYWxpZ25lZFxzKlwoW147XSpcKS8vZ29zOwog CmRpZmYgLS1naXQgYS90b29scy9saWIvbG9ja2RlcC91aW5jbHVkZS9saW51eC9rbWVtY2hlY2su aCBiL3Rvb2xzL2xpYi9sb2NrZGVwL3VpbmNsdWRlL2xpbnV4L2ttZW1jaGVjay5oCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NGQ1OThiLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL2xpYi9s b2NrZGVwL3VpbmNsdWRlL2xpbnV4L2ttZW1jaGVjay5oCisrKyAvZGV2L251bGwKQEAgLTEsOCAr MCwwIEBACi0jaWZuZGVmIF9MSUJMT0NLREVQX0xJTlVYX0tNRU1DSEVDS19IXwotI2RlZmluZSBf TElCTE9DS0RFUF9MSU5VWF9LTUVNQ0hFQ0tfSF8KLQotc3RhdGljIGlubGluZSB2b2lkIGttZW1j aGVja19tYXJrX2luaXRpYWxpemVkKHZvaWQgKmFkZHJlc3MsIHVuc2lnbmVkIGludCBuKQotewot fQotCi0jZW5kaWYKLS0gCjEuNy4xMC40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpMaW51eHBwYy1kZXYgbWFpbGluZyBsaXN0CkxpbnV4cHBjLWRldkBs aXN0cy5vemxhYnMub3JnCmh0dHBzOi8vbGlzdHMub3psYWJzLm9yZy9saXN0aW5mby9saW51eHBw Yy1kZXY=