Paul Nowoczynski
2006-May-19 07:36 UTC
[Lustre-discuss] portals router patch for openibnal
This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. ---1233080254-996071558-1130976251=:28312 Content-Type: TEXT/PLAIN; charset=US-ASCII I just ported this to lustre-1.4.2.1 and it seems to work pretty well though it''s reasonable to assume that it has its share of bugs. I know that clusterfs is in the process of rewriting their NALs so this patch may have a short lifetime. Until then, this patch enables communication between socknal, qswnal, and openibnal. I haven''t tested it with quadrics but expect to do that later this week. So if you''re running openibnal servers you should be able to apply this patch and have ethernet nodes communicate with your openib nodes. paul ---1233080254-996071558-1130976251=:28312 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="openibnal_router.patch" Content-Transfer-Encoding: BASE64 Content-ID: <Pine.LNX.4.58.0511021904110.28312@pscuxb.psc.edu> Content-Description: Content-Disposition: attachment; filename="openibnal_router.patch" LS0tIG9wZW5pYm5hbC5vcmkvb3BlbmlibmFsLmMJMjAwNS0xMC0zMSAxNToy MjoxOC41Mzc3MTIxNjUgLTA1MDANCisrKyBvcGVuaWJuYWwucm91dGVyL29w ZW5pYm5hbC5jCTIwMDUtMTAtMzEgMTU6MTg6NTAuMTI1NDU3Mzk5IC0wNTAw DQpAQCAtNCw2ICs0LDEyIEBADQogICogQ29weXJpZ2h0IChDKSAyMDA0IENs dXN0ZXIgRmlsZSBTeXN0ZW1zLCBJbmMuDQogICogICBBdXRob3I6IEVyaWMg QmFydG9uIDxlcmljQGJhcnRvbnNvZnR3YXJlLmNvbT4NCiAgKg0KKyAqIA0K KyAqICAgUm91dGluZyBIb29rcyBhZGRlZCBieSBQaXR0c2J1cmdoIFN1cGVy Y29tcHV0aW5nIENlbnRlciAoMjAwNSkNCisgKiAgICAgLSBQYXVsIE5vd29j enluc2tpDQorICogICAgIC0gU3BlbmNlciBXaGl0bWFuDQorICogICAgIC0g Sm9lIERhbWF0byANCisqDQogICogICBUaGlzIGZpbGUgaXMgcGFydCBvZiBM dXN0cmUsIGh0dHA6Ly93d3cubHVzdHJlLm9yZy4NCiAgKg0KICAqICAgTHVz dHJlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vcg0KQEAgLTI4LDYgKzM0LDEzIEBADQoga2liX2RhdGFfdCAgICAg ICAgICAgICAga2libmFsX2RhdGE7DQoga2liX3R1bmFibGVzX3QgICAgICAg ICAga2libmFsX3R1bmFibGVzOw0KIA0KK2twcl9uYWxfaW50ZXJmYWNlX3Qg ICAgIGtpYm5hbF9yb3V0ZXJfaW50ZXJmYWNlID0gew0KKyAgICAgICAga3By bmlfbmFsaWQ6ICAgIE9QRU5JQk5BTCwgLyogRGVmaW5lZCBpbiBrcDMwLmgg Ki8NCisgICAgICAgIGtwcm5pX2FyZzogICAgICBOVUxMLA0KKyAgICAgICAg a3BybmlfZndkOiAgICAgIGtpYm5hbF9md2RfcGFja2V0LA0KKyAgICAgICAg a3Bybmlfbm90aWZ5OiAgIE5VTEwsDQorfTsNCisNCiAjZGVmaW5lIElCTkFM X1NZU0NUTCAgICAgICAgICAgICAyMDINCiANCiBlbnVtIHsNCkBAIC0xMzE0 LDYgKzEzMjcsMTAgQEANCiAgICAgICAgIElOSVRfTElTVF9IRUFEICgmY29u bi0+aWJjX3R4X3F1ZXVlKTsNCiAgICAgICAgIElOSVRfTElTVF9IRUFEICgm Y29ubi0+aWJjX2FjdGl2ZV90eHMpOw0KICAgICAgICAgc3Bpbl9sb2NrX2lu aXQgKCZjb25uLT5pYmNfbG9jayk7DQorDQorICAgICAgICBJTklUX0xJU1Rf SEVBRCAoJmNvbm4tPmliY19wbmRnX3JkbWFmd2RzKTsNCisgICAgICAgIHNw aW5fbG9ja19pbml0ICgmY29ubi0+aWJjX3BuZGdfbG9jayk7DQorDQogICAg ICAgICANCiAgICAgICAgIGF0b21pY19pbmMgKCZraWJuYWxfZGF0YS5raWJf bmNvbm5zKTsNCiAgICAgICAgIC8qIHdlbGwgbm90IHJlYWxseSwgYnV0IEkg Y2FsbCBkZXN0cm95KCkgb24gZmFpbHVyZSwgd2hpY2ggZGVjcmVtZW50cyAq Lw0KQEAgLTE3ODEsNiArMTc5OCw0MDggQEANCiAgICAgICAgIHJldHVybiAo MCk7DQogfQ0KIA0KKyANCisNCitzdHJ1Y3Qga2liX2Z3ZGJ1ZiAqDQorZ2V0 X2Z3ZGJ1ZihraWJfY29ubl90ICpjb25uLCBpbnQgYnVmX3R5cGUpIHsgDQor ICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICAqdG1wLCAqdG1wMSwgKmxpc3Q7 DQorICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCAqd2FpdHE7DQorICAgICAg ICBzdHJ1Y3Qga2liX2Z3ZGJ1ZiAqZndiOw0KKyAgICAgICAgaW50IHJjOw0K KyAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsNCisgICAgICAgIA0KKyAg ICAgICAgc3dpdGNoKGJ1Zl90eXBlKSB7IA0KKyAgICAgICAgZGVmYXVsdDog TEJVRygpOw0KKyAgICAgICAgICAgICAgICANCisgICAgICAgIGNhc2UgKEtJ Ql9MQVJHRUJVRik6DQorICAgICAgICAgICAgICAgIC8qIDRLIC0+IDFNQiAq Lw0KKyAgICAgICAgICAgICAgICBsaXN0ICA9ICZraWJuYWxfZGF0YS5raWJf ZndkYnVmX2xhcmdlX2xpc3Q7DQorICAgICAgICAgICAgICAgIHdhaXRxID0g JmtpYm5hbF9kYXRhLmtpYl9md2RidWZfbGFyZ2VxOw0KKyAgICAgICAgICAg ICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgDQorICAgICAgICBjYXNl IChLSUJfU01BTExCVUYpOiAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAg ICAgICAgICAgICAgICAvKiAxQiAtPiA0SyAqLw0KKyAgICAgICAgICAgICAg ICBsaXN0ICA9ICZraWJuYWxfZGF0YS5raWJfZndkYnVmX3NtYWxsX2xpc3Q7 DQorICAgICAgICAgICAgICAgIHdhaXRxID0gJmtpYm5hbF9kYXRhLmtpYl9m d2RidWZfc21hbGxxOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAg ICAgIH0NCisgICAgICAgIA0KKyAgICAgICAgZm9yKDs7KSB7IA0KKyAgICAg ICAgICAgICAgICBMQVNTRVJUKGF0b21pY19yZWFkKCZraWJuYWxfZGF0YS5r aWJfbnVtX2Z3ZGJ1ZnMpIDw9IA0KKyAgICAgICAgICAgICAgICAgICAgICAg IE1BWF9GV0RCVUZTKTsNCisgICAgICAgICAgICAgICAgDQorICAgICAgICAg ICAgICAgIC8qIGlmIHRoZSBsaXN0IGlzIGVtcHR5IHRyeSB0byBjcmVhdGUg YW5vdGhlciAqDQorICAgICAgICAgICAgICAgICAqICBmd2RfYnVmZmVyIG9i amVjdC4gIGlmIHRoZSBtYXggYW1vdW50IG9mICAqDQorICAgICAgICAgICAg ICAgICAqICBmd2RfYnVmZmVycyBoYXMgYmVlbiByZWFjaGVkIHRoZW4gd2Fp dC4gICAqLw0KKw0KKyAgICAgICAgICAgICAgICBzcGluX2xvY2tfaXJxc2F2 ZSgmKGtpYm5hbF9kYXRhLmtpYl9md2RidWZfbG9jayksIGZsYWdzKTsNCisN CisgICAgICAgICAgICAgICAgaWYgKCBsaXN0X2VtcHR5KGxpc3QpICkgeyAN CisNCisgICAgICAgICAgICAgICAgICAgICAgICAvKiBkcm9wIHRoZSBsb2Nr ICovDQorICAgICAgICAgICAgICAgICAgICAgICAgc3Bpbl91bmxvY2tfaXJx cmVzdG9yZSgmKGtpYm5hbF9kYXRhLmtpYl9md2RidWZfbG9jayksIA0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZmxhZ3MpOw0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJjID0gYWxs b2NfZndkYnVmKGNvbm4pOw0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAg IGlmICggcmMgPT0gLUVOT1NQQyApIHsgDQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBDV0FSTigiV2FpdGluZyBmb3IgYSBmd2RidWZcbiIp Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYmxvY2sg aGVyZSBmb3IgYSBidWZmZXIgKi8NCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHdhaXRfZXZlbnQoKndhaXRxLA0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbG9ja19saXN0X2VtcHR5 KGxpc3QsIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZraWJuYWxfZGF0YS5raWJfbWF0 Y2hidWZfbG9jaykgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHx8IGtpYm5hbF9kYXRhLmtpYl9zaHV0ZG93bik7ICAg ICAgICAgICAgICAgIA0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0g ZWxzZSBpZiAoIHJjICkgeyANCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIENFUlJPUigiYWxsb2NfZndkYnVmIGZhaWxlZFxuIik7DQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsNCisg ICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAg ICAgIA0KKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlYWNxdWlyZSB0 aGUgbG9jayBoZXJlICovDQorICAgICAgICAgICAgICAgICAgICAgICAgc3Bp bl9sb2NrX2lycXNhdmUoJihraWJuYWxfZGF0YS5raWJfZndkYnVmX2xvY2sp LCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmbGFncyk7DQorICAgICAgICAgICAgICAgIH0gDQorDQorICAgICAgICAg ICAgICAgIC8qIHNob3VsZCBoYXZlIHNvbWV0aGluZyBpbiB0aGUgbGlzdCBu b3cgICAgICAgKg0KKyAgICAgICAgICAgICAgICAgKiBvbmNlIGxpc3RfZW50 cnkgcmV0dXJucyBzb21ldGhpbmcgcmVtb3ZlIGl0ICoNCisgICAgICAgICAg ICAgICAgICogZnJvbSB0aGUgbGlzdCBhbmQgcmV0dXJuIGl0IHRvIHRoZSBj YWxsZXIgICAqLw0KKyAgICAgICAgICAgICAgICBsaXN0X2Zvcl9lYWNoX3Nh ZmUgKHRtcCwgdG1wMSwgbGlzdCkgew0KKyAgICAgICAgICAgICAgICAgICAg ICAgIA0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICggYnVmX3R5cGUg PT0gS0lCX1NNQUxMQlVGICkgeyANCisNCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGZ3YiA9IGxpc3RfZW50cnkgKHRtcCwgc3RydWN0IGtp Yl9md2RidWYsIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZndkYnVmX3NtYWxsbXNnX2xpc3QpOw0KKw0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9kZWxfaW5p dCgmZndiLT5md2RidWZfc21hbGxtc2dfbGlzdCk7DQorDQorICAgICAgICAg ICAgICAgICAgICAgICAgfSBlbHNlIGlmICggYnVmX3R5cGUgPT0gS0lCX0xB UkdFQlVGICkgeyANCisNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGZ3YiA9IGxpc3RfZW50cnkgKHRtcCwgc3RydWN0IGtpYl9md2RidWYs IA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZndkYnVmX2xhcmdlbXNnX2xpc3QpOw0KKw0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9kZWxfaW5pdCgmZndiLT5m d2RidWZfbGFyZ2Vtc2dfbGlzdCk7DQorDQorICAgICAgICAgICAgICAgICAg ICAgICAgfSBlbHNlIExCVUcoKTsNCisNCisgICAgICAgICAgICAgICAgICAg ICAgICBDREVCVUcoRF9ORVQsICJoYXZlIGZ3ZGJ1ZiAlcFxuIiwgZndiKTsN CisNCisgICAgICAgICAgICAgICAgICAgICAgICBzcGluX3VubG9ja19pcnFy ZXN0b3JlKCYoa2libmFsX2RhdGEua2liX2Z3ZGJ1Zl9sb2NrKSwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxh Z3MpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmd2I7DQor ICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgLyogbGlzdCB3 YXMgZW1wdHkgLSB0cnkgYWdhaW4gKi8NCisgICAgICAgICAgICAgICAgc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmKGtpYm5hbF9kYXRhLmtpYl9md2RidWZf bG9jayksIGZsYWdzKTsNCisgICAgICAgIH0NCisNCit9DQorDQoraW50DQor YWxsb2NfZndkYnVmKGtpYl9jb25uX3QgKmNvbm4pIHsgICAgICAgIA0KKyAg ICAgICAgc3RydWN0IGtpYl9md2RidWYgKnRtcDsgIA0KKyAgICAgICAgaW50 IHJjID0gLTE7DQorICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOw0KKw0K KyAgICAgICAgaWYgKGF0b21pY19yZWFkKCZraWJuYWxfZGF0YS5raWJfbnVt X2Z3ZGJ1ZnMpID49IE1BWF9GV0RCVUZTKQ0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gLUVOT1NQQzsNCisNCisgICAgICAgIENERUJVRyhEX05FVCwgIiVk IGZ3ZGJ1cyBjdXJyZW50bHkgYWxsb2MnZCwgbWF4ID0gJWRcbiIsDQorICAg ICAgICAgICAgICAgYXRvbWljX3JlYWQoJmtpYm5hbF9kYXRhLmtpYl9udW1f ZndkYnVmcyksIE1BWF9GV0RCVUZTKTsgDQorDQorICAgICAgIC8qIHRoZXJl IGlzIGEgcGxhbiB0byBoYXZlIHNvbWUgZndkIGJ1ZmZlcnMgYWxsb2NhdGVk DQorICAgICAgICAqICBwZXItY29ubmVjdGlvbiwgdGhhdCBpcyBpZiB0aGVy ZSB2YWx1ZSB0byANCisgICAgICAgICogIG5vdCBuZWVkaW5nIHRvIHJlZ2lz dGVyIGFuZCBkZXJlZ2lzdGVyIGliIGJ1ZmZlcnMgKi8NCisNCisgICAgICAg IFBPUlRBTF9BTExPQyAodG1wLCBzaXplb2YgKHN0cnVjdCBraWJfZndkYnVm KSk7DQorICAgICAgICANCisgICAgICAgIGlmICggdG1wID09IE5VTEwgKSB7 IA0KKyAgICAgICAgICAgICAgICBDRVJST1IoImFsbG9jIG9mIGZ3ZCBidWYg ZmFpbGVkXG4iKTsNCisgICAgICAgICAgICAgICAgcmV0dXJuIHJjOw0KKyAg ICAgICAgfQ0KKw0KKyAgICAgICAgaWYgKCBpbml0X2Z3ZGJ1Zih0bXApICkN CisgICAgICAgICAgICAgICAgcmV0dXJuIHJjOw0KKw0KKyAgICAgICAgYXRv bWljX2luYygma2libmFsX2RhdGEua2liX251bV9md2RidWZzKTsNCisNCisg ICAgICAgIElOSVRfTElTVF9IRUFEKCZ0bXAtPmZ3ZGJ1Zl9zbWFsbG1zZ19s aXN0KTsNCisgICAgICAgIElOSVRfTElTVF9IRUFEKCZ0bXAtPmZ3ZGJ1Zl9s YXJnZW1zZ19saXN0KTsNCisNCisgICAgICAgIC8vIGdldCB0aGUgbG9jayBh bmQgYWRkIHRoZSAyIGludGVybmFsIGZ3ZCBidWZmZXJzDQorICAgICAgICAv LyAgdG8gdGhlIGFwcHJvcHJpYXRlIGxpc3RzDQorICAgICAgICBzcGluX2xv Y2tfaXJxc2F2ZSgmKGtpYm5hbF9kYXRhLmtpYl9md2RidWZfbG9jayksIGZs YWdzKTsNCisgICAgICAgICAgICAgICAgDQorICAgICAgICBsaXN0X2FkZCgm KHRtcC0+ZndkYnVmX3NtYWxsbXNnX2xpc3QpLCANCisgICAgICAgICAgICAg ICAgICYoa2libmFsX2RhdGEua2liX2Z3ZGJ1Zl9zbWFsbF9saXN0KSk7DQor DQorICAgICAgICBsaXN0X2FkZCgmKHRtcC0+ZndkYnVmX2xhcmdlbXNnX2xp c3QpLCANCisgICAgICAgICAgICAgICAgICYoa2libmFsX2RhdGEua2liX2Z3 ZGJ1Zl9sYXJnZV9saXN0KSk7DQorDQorICAgICAgICBzcGluX3VubG9ja19p cnFyZXN0b3JlKCYoa2libmFsX2RhdGEua2liX2Z3ZGJ1Zl9sb2NrKSwgZmxh Z3MpOw0KKyAgICAgICAgcmMgPSAwOw0KKw0KKyAgICAgICAgcmV0dXJuIHJj Ow0KK30NCisNCitpbnQgDQoraW5pdF9md2RidWYoc3RydWN0IGtpYl9md2Ri dWYgKmZ3KSB7IA0KKyAgICAgICAgcHRsX2tpb3ZfdCAqa2lvdjsNCisgICAg ICAgIGludCAgICAgICAgIGk7DQorDQorICAgICAgICAvKiBhbGxvY2F0ZSBh IDEgcGFnZSBmb3J3YXJkIGJ1ZmZlciBmb3IgaW1tZWRpYXRlIG1zZyBmd2Rz ICovDQorICAgICAgICBraW92ID0gJmZ3LT5md2RidWZfa2lvdmltbTsNCisg ICAgICAgIGlmICggKGtpb3YtPmtpb3ZfcGFnZSA9IGFsbG9jX3BhZ2UoR0ZQ X0FUT01JQykpID09IE5VTEwgKSB7DQorICAgICAgICAgICAgICAgIENFUlJP UiAoIkZhaWxlZCB0byBhbGxvY19wYWdlIGZvciBmd2RfYnVmXG4iKTsNCisg ICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgfQ0KKw0KKyAg ICAgICAgQ0RFQlVHKERfTkVULCAiYWxsb2NhdGVkIHBhZ2UgZm9yIGltbSBm d2QgYnVmICVwXG4iLA0KKyAgICAgICAgICAgICAgIGtpb3YtPmtpb3ZfcGFn ZSk7DQorDQorICAgICAgICAvKiBhbGxvY2F0ZSBhIDI1NiBwYWdlIGZvcndh cmQgYnVmZmVyIGZvciByZG1hIHB1dCBmd2RzICovDQorICAgICAgICBraW92 ID0gZnctPmZ3ZGJ1Zl9raW92cmRtYTsNCisgICAgICAgIGZvciAoaT0wOyBp IDwgUFRMX01EX01BWF9JT1Y7IGkrKykgeyANCisgICAgICAgICAgICAgICAg aWYgKCAoa2lvdltpXS5raW92X3BhZ2UgPSBhbGxvY19wYWdlKEdGUF9BVE9N SUMpKSA9PSBOVUxMICkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIENF UlJPUiAoIkZhaWxlZCB0byBhbGxvY19wYWdlIGZvciByZG1hIGZ3ZF9idWZc biIpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisg ICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgQ0RF QlVHKERfTkVULCAiYWxsb2NhdGVkICVkIHBhZ2VzIGZvciByZG1hIGZ3ZCBi dWZcbiIsIA0KKyAgICAgICAgICAgICAgIFBUTF9NRF9NQVhfSU9WKTsNCisg ICAgICAgDQorICAgICAgICBzcGluX2xvY2tfaW5pdCgmZnctPmZ3ZGJ1Zl9s b2NrKTsNCisgICAgICAgIA0KKyAgICAgICAgcmV0dXJuIDA7DQorfQ0KKw0K K3ZvaWQgZnJlZV9md2RidWYoc3RydWN0IGtpYl9md2RidWYgKiBmd2IsIGlu dCBidWZfdHlwZSkgeyANCisgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgICps aXN0Ow0KKyAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgKndhaXRxOw0KKyAg ICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsNCisNCisgICAgICAgIENERUJV RyhEX05FVCwgImZyZWVpbmcgZndkYnVmICVwXG4iLCBmd2IpOw0KKw0KKyAg ICAgICAgc3Bpbl9sb2NrX2lycXNhdmUgKCZraWJuYWxfZGF0YS5raWJfZndk YnVmX2xvY2ssIGZsYWdzKTsNCisNCisgICAgICAgIHN3aXRjaChidWZfdHlw ZSkgeyANCisgICAgICAgIGRlZmF1bHQ6IExCVUcoKTsNCisgICAgICAgICAg ICAgICAgDQorICAgICAgICBjYXNlIChLSUJfTEFSR0VCVUYpOg0KKyAgICAg ICAgICAgICAgICBsaXN0ICA9ICZraWJuYWxfZGF0YS5raWJfZndkYnVmX2xh cmdlX2xpc3Q7DQorICAgICAgICAgICAgICAgIHdhaXRxID0gJmtpYm5hbF9k YXRhLmtpYl9md2RidWZfbGFyZ2VxOw0KKw0KKyAgICAgICAgICAgICAgICBs aXN0X2FkZCgmZndiLT5md2RidWZfbGFyZ2Vtc2dfbGlzdCwgbGlzdCk7DQor ICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICANCisg ICAgICAgIGNhc2UgKEtJQl9TTUFMTEJVRik6ICAgICAgICAgICAgICAgICAg ICAgICAgDQorICAgICAgICAgICAgICAgIGxpc3QgID0gJmtpYm5hbF9kYXRh LmtpYl9md2RidWZfc21hbGxfbGlzdDsNCisgICAgICAgICAgICAgICAgd2Fp dHEgPSAma2libmFsX2RhdGEua2liX2Z3ZGJ1Zl9zbWFsbHE7DQorDQorICAg ICAgICAgICAgICAgIGxpc3RfYWRkKCZmd2ItPmZ3ZGJ1Zl9zbWFsbG1zZ19s aXN0LCBsaXN0KTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAg ICB9DQorDQorICAgICAgICB3YWtlX3VwKHdhaXRxKTsNCisNCisgICAgICAg IHNwaW5fdW5sb2NrX2lycXJlc3RvcmUgKCZraWJuYWxfZGF0YS5raWJfZndk YnVmX2xvY2ssIGZsYWdzKTsNCisNCisgICAgICAgIHJldHVybjsNCit9DQor DQorDQorDQorLyogZ2V0IGEgbmV3IG9yIHVuc3VzZWQgbWF0Y2hidWYgYW5k IGFzc29jaWF0ZSBpdCANCisgKiB3aXRoIHRoZSBjb25uZWN0aW9uICovDQor DQorc3RydWN0IGtpYl9yZG1hZndkbWF0Y2ggKiANCitnZXRfbWF0Y2hidWYo a2liX2Nvbm5fdCAqY29ubikgeyANCisgICAgICAgIHN0cnVjdCBsaXN0X2hl YWQgICAgICAgICAqdG1wLCAqbGlzdDsNCisgICAgICAgIHN0cnVjdCBraWJf cmRtYWZ3ZG1hdGNoICptYjsNCisgICAgICAgIGludCByYyA9IC0xOw0KKyAg ICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsNCisNCisgICAgICAgIGxpc3Qg PSAma2libmFsX2RhdGEua2liX21hdGNoYnVmX2xpc3Q7DQorDQorICAgICAg ICBmb3IoOzspIHsgDQorICAgICAgICAgICAgICAgIG1iID0gTlVMTDsNCisN CisgICAgICAgICAgICAgICAgTEFTU0VSVChhdG9taWNfcmVhZCgma2libmFs X2RhdGEua2liX251bV9tYXRjaGJ1ZnMpIDw9IA0KKyAgICAgICAgICAgICAg ICAgICAgICAgIE1BWF9NQVRDSEJVRlMpOw0KKw0KKyAgICAgICAgICAgICAg ICBzcGluX2xvY2tfaXJxc2F2ZSAoJmtpYm5hbF9kYXRhLmtpYl9tYXRjaGJ1 Zl9sb2NrLCBmbGFncyk7DQorDQorICAgICAgICAgICAgICAgIGlmICggbGlz dF9lbXB0eShsaXN0KSApIHsgDQorICAgICAgICAgICAgICAgICAgICAgICAg LyogZHJvcCB0aGUgbG9jayAqLw0KKyAgICAgICAgICAgICAgICAgICAgICAg IHNwaW5fdW5sb2NrX2lycXJlc3RvcmUgKCZraWJuYWxfZGF0YS5raWJfbWF0 Y2hidWZfbG9jaywgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZmxhZ3MpOw0KKw0KKyAgICAgICAgICAgICAg ICAgICAgICAgIHJjID0gYWxsb2NfbWF0Y2hidWYoJm1iKTsNCisgICAgICAg ICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgICAgICBp ZiAoIHJjID09IC1FTk9TUEMgKSB7IA0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLyogYmxvY2sgaGVyZSBmb3IgYSBidWZmZXIgKi8NCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENXQVJOKCJXYWl0aW5n IGZvciBhIGZ3ZCBidWZmZXJcbiIpOw0KKw0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgd2FpdF9ldmVudChraWJuYWxfZGF0YS5raWJfbWF0 Y2hidWZxLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAhbG9ja19saXN0X2VtcHR5KGxpc3QsIA0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZraWJuYWxfZGF0YS5raWJfbWF0Y2hidWZfbG9jaykgDQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGtpYm5h bF9kYXRhLmtpYl9zaHV0ZG93bik7DQorDQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvKiBnbyBiYWNrIHRvIHRoZSBiZWdpbm5pbmcgYW5k IHRyeSBhZ2FpbiAqLw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29udGludWU7DQorDQorICAgICAgICAgICAgICAgICAgICAgICAgfSBl bHNlIGlmICggcmMgKSB7IA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQ0VSUk9SKCJhbGxvY19tYXRjaGJ1ZiBmYWlsZWRcbiIpOw0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAg ICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgICAgIH0gZWxzZSB7 IA0KKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIG9uY2UgbGlzdF9lbnRy eSByZXR1cm5zIHNvbWV0aGluZyByZW1vdmUgaXQgKg0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAqIGZyb20gdGhlIGF2YWlsYWJsZSBsaXN0ICovDQor DQorICAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9mb3JfZWFjaCh0bXAs IGxpc3QpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWIgPSBsaXN0X2Vu dHJ5ICh0bXAsIHN0cnVjdCBraWJfcmRtYWZ3ZG1hdGNoLCANCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0 Y2hfbGlzdCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAN CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExBU1NFUlQobWIg IT0gTlVMTCk7DQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBsaXN0X2RlbF9pbml0KCZtYi0+bWF0Y2hfbGlzdCk7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0N CisgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAg ICAgICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlICgma2libmFsX2RhdGEu a2liX21hdGNoYnVmX2xvY2ssIA0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKTsgICAgICAgICAgICAg ICAgDQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgLyog Y2hlY2sgaWYgbWIgaXMgc2V0LCBpZiBub3QgdHJ5IGFnYWluICovDQorICAg ICAgICAgICAgICAgIGlmICggbWIgIT0gTlVMTCApIGJyZWFrOw0KKyAgICAg ICAgfQ0KKw0KKyAgICAgICAgLyogYWRkIHRoZSBtYiB0byB0aGUgY29ubmVj dGlvbiBzcGVjaWZpYyBsaXN0ICovDQorICAgICAgICBzcGluX2xvY2tfaXJx c2F2ZSAoJmNvbm4tPmliY19wbmRnX2xvY2ssIGZsYWdzKTsNCisgICAgICAg IA0KKyAgICAgICAgbGlzdF9hZGQoJihtYi0+bWF0Y2hfbGlzdCksIA0KKyAg ICAgICAgICAgICAgICAgJihjb25uLT5pYmNfcG5kZ19yZG1hZndkcykpOw0K KyAgICAgICAgDQorICAgICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlICgm Y29ubi0+aWJjX3BuZGdfbG9jaywgZmxhZ3MpOw0KKyAgICAgICAgDQorICAg ICAgICBDREVCVUcoRF9ORVQsICJQVFIgY2hlY2sgbWIgJXAgcnhfcGFnZXMg JXBcbiIsIA0KKyAgICAgICAgICAgICAgIG1iLCBjb25uLT5pYmNfcnhfcGFn ZXMpOyAgICAgICAgICAgICAgICAgICAgICANCisNCisgICAgICAgIHJldHVy biBtYjsgICAgICAgIA0KK30NCisNCisNCitpbnQNCithbGxvY19tYXRjaGJ1 ZihzdHJ1Y3Qga2liX3JkbWFmd2RtYXRjaCAqKm1iKSB7ICAgICAgICANCisg ICAgICAgIGludCByYyA9IC0xOw0KKyAgICAgICAgDQorICAgICAgICBpZiAo YXRvbWljX3JlYWQoJmtpYm5hbF9kYXRhLmtpYl9udW1fbWF0Y2hidWZzKSA+ PSBNQVhfTUFUQ0hCVUZTKQ0KKyAgICAgICAgICAgICAgICByZXR1cm4gLUVO T1NQQzsNCisgICAgICAgIA0KKyAgICAgICAgQ0RFQlVHKERfTkVULCAiJWQg bWF0Y2hidWZzIGN1cnJlbnRseSBhbGxvYydkLCBtYXggPSAlZFxuIiwNCisg ICAgICAgICAgICAgICBhdG9taWNfcmVhZCgma2libmFsX2RhdGEua2liX251 bV9tYXRjaGJ1ZnMpLCANCisgICAgICAgICAgICAgICBNQVhfTUFUQ0hCVUZT KTsgDQorDQorICAgICAgICBQT1JUQUxfQUxMT0MgKCptYiwgc2l6ZW9mIChz dHJ1Y3Qga2liX3JkbWFmd2RtYXRjaCkpOw0KKyAgICAgICAgDQorICAgICAg ICBpZiAoICptYiA9PSBOVUxMICkgeyANCisgICAgICAgICAgICAgICAgQ0VS Uk9SKCJhbGxvYyBvZiBtYXRjaGJ1ZiBmYWlsZWRcbiIpOw0KKyAgICAgICAg ICAgICAgICByZXR1cm4gcmM7DQorICAgICAgICB9DQorDQorICAgICAgICAv LyBpbmNyZW1lbnQgdGhlIHRvdGFsIGNvdW50DQorICAgICAgICBhdG9taWNf aW5jKCZraWJuYWxfZGF0YS5raWJfbnVtX21hdGNoYnVmcyk7DQorDQorICAg ICAgICAoKm1iKS0+bWF0Y2hfaW51c2UgPSAwOw0KKw0KKyAgICAgICAgSU5J VF9MSVNUX0hFQUQoJigoKm1iKS0+bWF0Y2hfbGlzdCkpOw0KKyAgICAgICAg c3Bpbl9sb2NrX2luaXQoJigoKm1iKS0+bWF0Y2hidWZfbG9jaykpOw0KKw0K KyAgICAgICAgQ0RFQlVHKERfTkVULCAiJWQgbWF0Y2hidWZzIGN1cnJlbnRs eSBhbGxvYydkLCBtYiAlcFxuIiwNCisgICAgICAgICAgICAgICBhdG9taWNf cmVhZCgma2libmFsX2RhdGEua2liX251bV9tYXRjaGJ1ZnMpLCAqbWIpOyAN CisNCisgICAgICAgIHJjID0gMDsNCisNCisgICAgICAgIHJldHVybiByYzsN Cit9DQorDQorLyogZmluZCBhIG1hdGNoIG9uIHRoZSBjb25uLWJhc2VkIHBl bmRpbmcgbGlzdCwgICAqDQorICogIG9uY2UgZm91bmQgcmVtb3ZlIGZyb20g dGhlIHBlbmRpbmcgbGlzdC4gICAgICAqDQorICogIGNvdWxkIHVzZSByd2xv Y2tfdCdzIGhlcmUuLiAgICAgICAgICAgICAgICAgICAqLw0KKw0KK3N0cnVj dCBraWJfcmRtYWZ3ZG1hdGNoICoNCitsb29rdXBfbWF0Y2hidWYoa2liX2Nv bm5fdCAqY29ubiwgDQorICAgICAgICAgICAgICAgIHB0bF9oYW5kbGVfd2ly ZV90ICptYXRjaF93bWQpIHsgDQorIA0KKyAgICAgICAgc3RydWN0IGxpc3Rf aGVhZCAgICp0bXA7DQorICAgICAgICBzdHJ1Y3Qga2liX3JkbWFmd2RtYXRj aCAqbWI7DQorICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOw0KKw0KKyAg ICAgICAgc3Bpbl9sb2NrX2lycXNhdmUgKCZjb25uLT5pYmNfcG5kZ19sb2Nr LCBmbGFncyk7DQorDQorICAgICAgICBsaXN0X2Zvcl9lYWNoKHRtcCwgJmNv bm4tPmliY19wbmRnX3JkbWFmd2RzKSB7DQorICAgICAgICAgICAgICAgIA0K KyAgICAgICAgICAgICAgICBtYiA9IGxpc3RfZW50cnkgKHRtcCwgc3RydWN0 IGtpYl9yZG1hZndkbWF0Y2gsIA0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG1hdGNoX2xpc3QpOw0KKyAgICAgICAgICAgICAgICANCisg ICAgICAgICAgICAgICAgQ0RFQlVHKERfTkVULCAiZ290IG1iICVwIHN0b3Jl ZDogb2MgIkxQWDY0IiBpYyAiTFBYNjQiLCBwYXNzZWQgb2MiTFBYNjQiIGlj ICJMUFg2NCJcbiIsDQorICAgICAgICAgICAgICAgICAgICAgICBtYiwgDQor ICAgICAgICAgICAgICAgICAgICAgICBtYi0+bWF0Y2hfd21kLndoX2ludGVy ZmFjZV9jb29raWUsDQorICAgICAgICAgICAgICAgICAgICAgICBtYi0+bWF0 Y2hfd21kLndoX29iamVjdF9jb29raWUsIA0KKyAgICAgICAgICAgICAgICAg ICAgICAgbWF0Y2hfd21kLT53aF9vYmplY3RfY29va2llLCANCisgICAgICAg ICAgICAgICAgICAgICAgIG1hdGNoX3dtZC0+d2hfaW50ZXJmYWNlX2Nvb2tp ZSk7DQorDQorICAgICAgICAgICAgICAgIGlmICggbWItPm1hdGNoX3dtZC53 aF9vYmplY3RfY29va2llID09IA0KKyAgICAgICAgICAgICAgICAgICAgIG1h dGNoX3dtZC0+d2hfb2JqZWN0X2Nvb2tpZSApIHsgDQorDQorICAgICAgICAg ICAgICAgICAgICAgICAgTEFTU0VSVChtYi0+bWF0Y2hfaW51c2UpOw0KKw0K KyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlbW92ZSB0aGlzIG1iIGZy b20gdGhlIGNvbm5lY3Rpb24tYmFzZWQgbGlzdC4gICoNCisgICAgICAgICAg ICAgICAgICAgICAgICAgKiBjYWxsZXIgbXVzdCBiZSBjYXJlZnVsIG5vdCB0 byBkcm9wIHRoaXMgcG9pbnRlciAqDQorICAgICAgICAgICAgICAgICAgICAg ICAgICogc2luY2UgdGhlcmUgaXMgYSBnbG9iYWwgcmVmZXJlbmNlIHRvIGl0 Li4gICAgICAgKi8NCisNCisgICAgICAgICAgICAgICAgICAgICAgICBsaXN0 X2RlbF9pbml0KCZtYi0+bWF0Y2hfbGlzdCk7DQorDQorICAgICAgICAgICAg ICAgICAgICAgICAgLyogZHJvcCB0aGUgbG9jayBhbmQgcmV0dXJuICovDQor ICAgICAgICAgICAgICAgICAgICAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSAoJmNvbm4tPmliY19wbmRnX2xvY2ssIGZsYWdzKTsNCisNCisgICAgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gbWI7DQorDQorICAgICAgICAgICAg ICAgIH0gZWxzZSANCisgICAgICAgICAgICAgICAgICAgICAgICBDREVCVUcg KERfTkVULCAicGFzc2VkIG1hdGNoYnVmICVwXG4iLCBtYik7DQorICAgICAg ICB9DQorDQorICAgICAgICAvKiBkaWRuJ3QgZmluZCB0aGlzIG9uZS4uICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgICAgICAgICAq IGZvciBub3cganVzdCBicmVhaywgbGF0ZXIgSSdsbCBwdXQgc29tZSB0aW1l b3V0IGNvZGUgaW4gKi8NCisNCisgICAgICAgIHNwaW5fdW5sb2NrX2lycXJl c3RvcmUgKCZjb25uLT5pYmNfcG5kZ19sb2NrLCBmbGFncyk7DQorICAgICAg ICAgDQorICAgICAgICBMQlVHKCk7DQorICAgICAgICByZXR1cm4gTlVMTDsN Cit9DQorDQorLyogYWRkIHRoZSBtYXRjaGJ1ZiB0byB0aGUgZ2xvYmFsIGxp c3QgZm9yIHJlLXVzZSAgKg0KKyAqIHdha2UgdXAgYW55b25lIHdobyBtYXkg YmUgd2FpdGluZyBmb3IgYW4gbWIgICAgICovDQorDQordm9pZCBmcmVlX21h dGNoYnVmKHN0cnVjdCBraWJfcmRtYWZ3ZG1hdGNoICptYikgeyANCisNCisg ICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7DQorDQorICAgICAgICBDREVC VUcoRF9ORVQsICJmcmVlaW5nIG1hdGNoYnVmICVwXG4iLCBtYik7DQorDQor ICAgICAgICBzcGluX2xvY2tfaXJxc2F2ZSAoJmtpYm5hbF9kYXRhLmtpYl9t YXRjaGJ1Zl9sb2NrLCBmbGFncyk7DQorDQorICAgICAgICBMQVNTRVJUKG1i LT5tYXRjaF9pbnVzZSk7DQorDQorICAgICAgICBtYi0+bWF0Y2hfaW51c2Ug PSAwOw0KKyAgICAgICAgDQorICAgICAgICBsaXN0X2FkZCgmbWItPm1hdGNo X2xpc3QsIA0KKyAgICAgICAgICAgICAgICAgJmtpYm5hbF9kYXRhLmtpYl9t YXRjaGJ1Zl9saXN0KTsNCisNCisgICAgICAgIHdha2VfdXAoJmtpYm5hbF9k YXRhLmtpYl9tYXRjaGJ1ZnEpOw0KKyAgICAgICAgICAgDQorICAgICAgICBz cGluX3VubG9ja19pcnFyZXN0b3JlICgma2libmFsX2RhdGEua2liX21hdGNo YnVmX2xvY2ssIGZsYWdzKTsNCisgICAgICAgIHJldHVybjsNCit9DQorDQog dm9pZA0KIGtpYm5hbF9hcGlfc2h1dGRvd24gKG5hbF90ICpuYWwpDQogew0K QEAgLTE4NjUsNiArMjI4NCw5IEBADQogICAgICAgICAgICAgICAgIExBU1NF UlQgKGxpc3RfZW1wdHkgKCZraWJuYWxfZGF0YS5raWJfY29ubmRfcGVlcnMp KTsNCiAgICAgICAgICAgICAgICAgTEFTU0VSVCAobGlzdF9lbXB0eSAoJmtp Ym5hbF9kYXRhLmtpYl9jb25uZF9hY2NlcHRxKSk7DQogDQorICAgICAgICAg ICAgICAgIC8qIEhvcGUgdGhhdCB0aGVyZSBhcmUgbm8gbW9yZSBkZWxheWVk IGZvcndhcmRzICovDQorICAgICAgICAgICAgICAgIExBU1NFUlQgKGxpc3Rf ZW1wdHkgKCZraWJuYWxfZGF0YS5raWJfZGVsYXllZGZ3ZHMpKTsNCisNCiAg ICAgICAgICAgICAgICAgLyogZmxhZyB0aHJlYWRzIHRvIHRlcm1pbmF0ZTsg d2FrZSBhbmQgd2FpdCBmb3IgdGhlbSB0byBkaWUgKi8NCiAgICAgICAgICAg ICAgICAga2libmFsX2RhdGEua2liX3NodXRkb3duID0gMTsNCiAgICAgICAg ICAgICAgICAgd2FrZV91cF9hbGwgKCZraWJuYWxfZGF0YS5raWJfc2NoZWRf d2FpdHEpOw0KQEAgLTE4ODUsNiArMjMwNywxMSBAQA0KICAgICAgICAgY2Fz ZSBJQk5BTF9JTklUX05PVEhJTkc6DQogICAgICAgICAgICAgICAgIGJyZWFr Ow0KICAgICAgICAgfQ0KKyANCisgICAgICAgIC8qIFRlbGwgUm91dGVyIHdl J3JlIHNodXR0aW5nIGRvd24uICBDYXVzZSBhbGwgcm91dGVyIGNhbGxzIA0K KyAgICAgICAgICogIHRvIHRoaXMgdGhyZWFkIHRvIGZhaWwgaW1tZWRpYXRl bHkNCisgICAgICAgICAqLw0KKyAgICAgICAga3ByX3NodXRkb3duICgma2li bmFsX2RhdGEua2liX3JvdXRlcik7DQogDQogICAgICAgICBpZiAoa2libmFs X2RhdGEua2liX3R4X2Rlc2NzICE9IE5VTEwpDQogICAgICAgICAgICAgICAg IFBPUlRBTF9GUkVFIChraWJuYWxfZGF0YS5raWJfdHhfZGVzY3MsDQpAQCAt MTg5NSwxMSArMjMyMiwyNCBAQA0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2l6ZW9mIChzdHJ1Y3QgbGlzdF9oZWFkKSAqIA0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAga2libmFsX2RhdGEua2liX3BlZXJfaGFz aF9zaXplKTsNCiANCisgICAgICAgIC8qIEdldCByaWQgb2YgcGFja2V0cyB0 byBmb3J3YXJkICovDQorICAgICAgICB3aGlsZSAoIWxpc3RfZW1wdHkgKCZr aWJuYWxfZGF0YS5raWJfaWRsZV90eF9md2RxKSkgew0KKyAgICAgICAgICAg ICAgICBrcHJfZndkX2Rlc2NfdCAqZndkID0gbGlzdF9lbnRyeSAoa2libmFs X2RhdGEua2liX2lkbGVfdHhfZndkcS5uZXh0LA0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3ByX2Z3ZF9k ZXNjX3QsIGtwcmZkX2xpc3QpOw0KKyAgICAgICAgICAgICAgICBsaXN0X2Rl bCAoJmZ3ZC0+a3ByZmRfbGlzdCk7DQorICAgICAgICAgICAgICAgIGtwcl9m d2RfZG9uZSAoJmtpYm5hbF9kYXRhLmtpYl9yb3V0ZXIsIGZ3ZCwgLUVTSFVU RE9XTik7DQorICAgICAgICB9DQorDQorICAgICAgICAvKiBGaW5hbGlzZSBy b3V0ZXIgKi8NCisgICAgICAgIGtwcl9kZXJlZ2lzdGVyKCZraWJuYWxfZGF0 YS5raWJfcm91dGVyKTsNCisgICAgICAgDQogICAgICAgICBDREVCVUcoRF9N QUxMT0MsICJhZnRlciBOQUwgY2xlYW51cDoga21lbSAlZFxuIiwNCiAgICAg ICAgICAgICAgICBhdG9taWNfcmVhZCAoJnBvcnRhbF9rbWVtb3J5KSk7DQot ICAgICAgICBwcmludGsoS0VSTl9JTkZPICJMdXN0cmU6IE9wZW5JQiBOQUwg dW5sb2FkZWQgKGZpbmFsIG1lbSAlZClcbiIsDQorDQorICAgICAgICBwcmlu dGsoS0VSTl9JTkZPICJMdXN0cmU6IFJvdXRpbmcgT3BlbklCIE5BTCB1bmxv YWRlZCAoZmluYWwgbWVtICVkKVxuIiwNCiAgICAgICAgICAgICAgICBhdG9t aWNfcmVhZCgmcG9ydGFsX2ttZW1vcnkpKTsNCiANCisNCiAgICAgICAgIGtp Ym5hbF9kYXRhLmtpYl9pbml0ID0gSUJOQUxfSU5JVF9OT1RISU5HOw0KIH0N CiANCkBAIC0xOTY0LDYgKzI0MDQsMjAgQEANCiAgICAgICAgIElOSVRfTElT VF9IRUFEICgma2libmFsX2RhdGEua2liX2lkbGVfbmJsa190eHMpOw0KICAg ICAgICAgaW5pdF93YWl0cXVldWVfaGVhZCgma2libmFsX2RhdGEua2liX2lk bGVfdHhfd2FpdHEpOw0KIA0KKyAgICAgICAgc3Bpbl9sb2NrX2luaXQgKCZr aWJuYWxfZGF0YS5raWJfZndkYnVmX2xvY2spOw0KKyAgICAgICAgSU5JVF9M SVNUX0hFQUQgKCZraWJuYWxfZGF0YS5raWJfZndkYnVmX2xhcmdlX2xpc3Qp Ow0KKyAgICAgICAgSU5JVF9MSVNUX0hFQUQgKCZraWJuYWxfZGF0YS5raWJf ZndkYnVmX3NtYWxsX2xpc3QpOw0KKyAgICAgICAgaW5pdF93YWl0cXVldWVf aGVhZCAoJmtpYm5hbF9kYXRhLmtpYl9md2RidWZfbGFyZ2VxKTsNCisgICAg ICAgIGluaXRfd2FpdHF1ZXVlX2hlYWQgKCZraWJuYWxfZGF0YS5raWJfZndk YnVmX3NtYWxscSk7DQorDQorICAgICAgICBzcGluX2xvY2tfaW5pdCAoJmtp Ym5hbF9kYXRhLmtpYl9tYXRjaGJ1Zl9sb2NrKTsNCisgICAgICAgIElOSVRf TElTVF9IRUFEICgma2libmFsX2RhdGEua2liX21hdGNoYnVmX2xpc3QpOw0K KyAgICAgICAgaW5pdF93YWl0cXVldWVfaGVhZCAoJmtpYm5hbF9kYXRhLmtp Yl9tYXRjaGJ1ZnEpOw0KKw0KKyAgICAgICAgLyogSW5pdCBmd2QgcXVldWVz ICovDQorICAgICAgICBJTklUX0xJU1RfSEVBRCAoJmtpYm5hbF9kYXRhLmtp Yl9pZGxlX3R4X2Z3ZHEpOw0KKyAgICAgICAgSU5JVF9MSVNUX0hFQUQgKCZr aWJuYWxfZGF0YS5raWJfZGVsYXllZGZ3ZHMpOw0KKw0KICAgICAgICAgUE9S VEFMX0FMTE9DIChraWJuYWxfZGF0YS5raWJfdHhfZGVzY3MsDQogICAgICAg ICAgICAgICAgICAgICAgIElCTkFMX1RYX01TR1MgKiBzaXplb2Yoa2liX3R4 X3QpKTsNCiAgICAgICAgIGlmIChraWJuYWxfZGF0YS5raWJfdHhfZGVzY3Mg PT0gTlVMTCkgew0KQEAgLTIxMjIsNiArMjU3NiwxMSBAQA0KICAgICAgICAg LyogZmxhZyBDUSBpbml0aWFsaXNlZCAqLw0KICAgICAgICAga2libmFsX2Rh dGEua2liX2luaXQgPSBJQk5BTF9JTklUX0NROw0KICAgICAgICAgLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLw0KKw0KKyAgICAgICAgLyogQ29ubmVjdCB0byB0aGUgcm91dGVyICov DQorICAgICAgICByYyA9IGtwcl9yZWdpc3RlciAoJmtpYm5hbF9kYXRhLmtp Yl9yb3V0ZXIsICZraWJuYWxfcm91dGVyX2ludGVyZmFjZSk7DQorDQorICAg ICAgICBDREVCVUcoRF9ORVQsICJDYW4ndCBpbml0aWFsaXNlIHJvdXRpbmcg aW50ZXJmYWNlIChyYyA9ICVkKTogbm90IHJvdXRpbmdcbiIscmMpOw0KICAg ICAgICAgDQogICAgICAgICByYyA9IGxpYmNmc19uYWxfY21kX3JlZ2lzdGVy KE9QRU5JQk5BTCwgJmtpYm5hbF9jbWQsIE5VTEwpOw0KICAgICAgICAgaWYg KHJjICE9IDApIHsNCkBAIC0yMTMzLDggKzI1OTIsMTEgQEANCiAgICAgICAg IGtpYm5hbF9kYXRhLmtpYl9pbml0ID0gSUJOQUxfSU5JVF9BTEw7DQogICAg ICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovDQogDQotICAgICAgICBwcmludGsoS0VSTl9JTkZP ICJMdXN0cmU6IE9wZW5JQiBOQUwgbG9hZGVkICINCi0gICAgICAgICAgICAg ICAiKGluaXRpYWwgbWVtICVkKVxuIiwgcGttZW0pOw0KKyAgICAgICAgLyog UHJpbnQgcm91dGluZyBpbmZvIHRvbyAqLw0KKyAgICAgICAgcHJpbnRrKEtF Uk5fSU5GTyAiTHVzdHJlOiBSb3V0aW5nIE9wZW5JQiBOQUwgbG9hZGVkICIN CisgICAgICAgICAgICAgICAiKFJvdXRpbmcgJXMsIGluaXRpYWwgbWVtICVk KVxuIiwNCisgICAgICAgICAgICAgICBrcHJfcm91dGluZyAoJmtpYm5hbF9k YXRhLmtpYl9yb3V0ZXIpID8gImVuYWJsZWQiIDogImRpc2FibGVkIiwNCisg ICAgICAgICAgICAgICBwa21lbSk7DQogDQogICAgICAgICByZXR1cm4gKFBU TF9PSyk7DQogDQotLS0gb3BlbmlibmFsLm9yaS9vcGVuaWJuYWxfY2IuYwky MDA1LTEwLTMxIDE1OjIxOjE1LjcxMjA0NjMwNiAtMDUwMA0KKysrIG9wZW5p Ym5hbC5yb3V0ZXIvb3BlbmlibmFsX2NiLmMJMjAwNS0xMC0zMSAxNToxODo1 MC4xNjg0NTU4MDEgLTA1MDANCkBAIC00LDYgKzQsMTEgQEANCiAgKiBDb3B5 cmlnaHQgKEMpIDIwMDQgQ2x1c3RlciBGaWxlIFN5c3RlbXMsIEluYy4NCiAg KiAgIEF1dGhvcjogRXJpYyBCYXJ0b24gPGVyaWNAYmFydG9uc29mdHdhcmUu Y29tPg0KICAqDQorICogICBSb3V0aW5nIEhvb2tzIGFkZGVkIGJ5IFBpdHRz YnVyZ2ggU3VwZXJjb21wdXRpbmcgQ2VudGVyICgyMDA1KQ0KKyAqICAgICAt IFBhdWwgTm93b2N6eW5za2kNCisgKiAgICAgLSBTcGVuY2VyIFdoaXRtYW4N CisgKiAgICAgLSBKb2UgRGFtYXRvIA0KKyAqDQogICogICBUaGlzIGZpbGUg aXMgcGFydCBvZiBMdXN0cmUsIGh0dHA6Ly93d3cubHVzdHJlLm9yZy4NCiAg Kg0KICAqICAgTHVzdHJlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vcg0KQEAgLTQ3LDYgKzUyLDcgQEANCiAgICAg ICAgIHVuc2lnbmVkIGxvbmcgICAgZmxhZ3M7DQogICAgICAgICBpbnQgICAg ICAgICAgICAgIGk7DQogICAgICAgICBpbnQgICAgICAgICAgICAgIHJjOw0K KyAgICAgICAga3ByX2Z3ZF9kZXNjX3QgKmZ3ZCA9IE5VTEw7DQogDQogICAg ICAgICBMQVNTRVJUICh0eC0+dHhfc2VuZGluZyA9PSAwKTsgICAgICAgICAg LyogbXVzdG4ndCBiZSBhd2FpdGluZyBjYWxsYmFjayAqLw0KICAgICAgICAg TEFTU0VSVCAoIXR4LT50eF9wYXNzaXZlX3JkbWFfd2FpdCk7ICAgIC8qIG11 c3RuJ3QgYmUgYXdhaXRpbmcgUkRNQSAqLw0KQEAgLTg3LDE1ICs5MywyNiBA QA0KICNlbmRpZg0KICAgICAgICAgfQ0KIA0KLSAgICAgICAgZm9yIChpID0g MDsgaSA8IDI7IGkrKykgew0KLSAgICAgICAgICAgICAgICAvKiB0eCBtYXkg aGF2ZSB1cCB0byAyIGxpYm1zZ3MgdG8gZmluYWxpc2UgKi8NCi0gICAgICAg ICAgICAgICAgaWYgKHR4LT50eF9saWJtc2dbaV0gPT0gTlVMTCkNCi0gICAg ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCi0NCi0gICAgICAgICAg ICAgICAgbGliX2ZpbmFsaXplICgma2libmFsX2xpYiwgTlVMTCwgdHgtPnR4 X2xpYm1zZ1tpXSwgcHRscmMpOw0KLSAgICAgICAgICAgICAgICB0eC0+dHhf bGlibXNnW2ldID0gTlVMTDsNCi0gICAgICAgIH0NCi0gICAgICAgIA0KKyAg ICAgICAgLyogTm90IHN1cmUgdGhpcyB3aWxsIHdvcmsgYXMgbW9yZSBwcm9i YWJseSBuZWVkcyB0byBiZSBkb25lLi4uICovDQorICAgICAgICAvKiBpZiBy b3V0aW5nIGdldCBvdXQgYmVmb3JlIGZpbmFsaXppbmcgKi8NCisgICAgICAg IGlmICggdHgtPnR4X2Z3ZCAhPSBOVUxMICkgeyANCisgICAgICAgICAgICAg ICAgLyogRk9SV0FSRElORyAqLw0KKyAgICAgICAgICAgICAgICBrcHJfZndk X2RvbmUgKCZraWJuYWxfZGF0YS5raWJfcm91dGVyLCANCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0eC0+dHhfZndkLCB0eC0+dHhfc3RhdHVz KTsgDQorICAgICAgICAgICAgICAgIHR4LT50eF9md2QgPSBOVUxMOw0KKw0K KyAgICAgICAgfSBlbHNlIHsgDQorICAgICAgICAgICAgICAgIC8qIGRvIHBv cnRhbHMgcmVsYXRlZCBzdHVmZiAqLw0KKyAgICAgICAgICAgICAgICBmb3Ig KGkgPSAwOyBpIDwgMjsgaSsrKSB7DQorICAgICAgICAgICAgICAgICAgICAg ICAgLyogdHggbWF5IGhhdmUgdXAgdG8gMiBsaWJtc2dzIHRvIGZpbmFsaXNl ICovDQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR4LT50eF9saWJt c2dbaV0gPT0gTlVMTCkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAg ICAgICAgICAgICAgICAgICAgICAgIGxpYl9maW5hbGl6ZSAoJmtpYm5hbF9s aWIsIE5VTEwsIHR4LT50eF9saWJtc2dbaV0sIHB0bHJjKTsNCisgICAgICAg ICAgICAgICAgICAgICAgICB0eC0+dHhfbGlibXNnW2ldID0gTlVMTDsNCisg ICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgIH0NCisgDQogICAgICAgICBp ZiAodHgtPnR4X2Nvbm4gIT0gTlVMTCkgew0KICAgICAgICAgICAgICAgICBr aWJuYWxfcHV0X2Nvbm4gKHR4LT50eF9jb25uKTsNCiAgICAgICAgICAgICAg ICAgdHgtPnR4X2Nvbm4gPSBOVUxMOw0KQEAgLTEwNSwyNiArMTIyLDU0IEBA DQogICAgICAgICB0eC0+dHhfcGFzc2l2ZV9yZG1hID0gMDsNCiAgICAgICAg IHR4LT50eF9zdGF0dXMgPSAwOw0KIA0KKyAgICAgICAgLyogTW9kaWZpZWQg ZnJvbSBxc3duYWxfY2IuYyBrcXN3bmFsX3B1dF9pZGxlX3R4ICovDQogICAg ICAgICBzcGluX2xvY2tfaXJxc2F2ZSAoJmtpYm5hbF9kYXRhLmtpYl90eF9s b2NrLCBmbGFncyk7DQogDQogICAgICAgICBpZiAodHgtPnR4X2lzbmJsaykg ew0KICAgICAgICAgICAgICAgICBsaXN0X2FkZF90YWlsICgmdHgtPnR4X2xp c3QsICZraWJuYWxfZGF0YS5raWJfaWRsZV9uYmxrX3R4cyk7DQotICAgICAg ICB9IGVsc2Ugew0KLSAgICAgICAgICAgICAgICBsaXN0X2FkZF90YWlsICgm dHgtPnR4X2xpc3QsICZraWJuYWxfZGF0YS5raWJfaWRsZV90eHMpOw0KLSAg ICAgICAgICAgICAgICB3YWtlX3VwICgma2libmFsX2RhdGEua2liX2lkbGVf dHhfd2FpdHEpOw0KKyAgICAgICAgICAgICAgICBzcGluX3VubG9ja19pcnFy ZXN0b3JlICgma2libmFsX2RhdGEua2liX3R4X2xvY2ssIGZsYWdzKTsNCisg ICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgfQ0KIA0KKyAgICAg ICAgbGlzdF9hZGRfdGFpbCAoJnR4LT50eF9saXN0LCAma2libmFsX2RhdGEu a2liX2lkbGVfdHhzKTsgICAgDQorICAgICAgICANCisgICAgICAgIC8qIGZ3 ZCBhbnkgd2FpdGluZyBwYWNrZXRzICovDQorICAgICAgICBpZiAoIWtpYm5h bF9kYXRhLmtpYl9zaHV0ZG93biAmJg0KKyAgICAgICAgICAgICFsaXN0X2Vt cHR5KCZraWJuYWxfZGF0YS5raWJfaWRsZV90eF9md2RxKSkgew0KKyAgICAg ICAgICAgICAgICBDREVCVUcoRF9ORVQsIldha2V1cCBmd2QgcXVldWVcbiIp Ow0KKyAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgZndkID0g bGlzdF9lbnRyeSAoa2libmFsX2RhdGEua2liX2lkbGVfdHhfZndkcS5uZXh0 LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrcHJfZndk X2Rlc2NfdCwga3ByZmRfbGlzdCk7DQorICAgICAgICAgICAgICAgIGxpc3Rf ZGVsICgmZndkLT5rcHJmZF9saXN0KTsNCisgICAgICAgICB9DQorIA0KKyAg ICAgICAgd2FrZV91cCAoJmtpYm5hbF9kYXRhLmtpYl9pZGxlX3R4X3dhaXRx KTsNCisgICAgICAgIA0KKyAgICAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSAoJmtpYm5hbF9kYXRhLmtpYl90eF9sb2NrLCBmbGFncyk7DQorICAgICAg ICANCisgICAgICAgIGlmIChmd2QgPT0gTlVMTCkNCisgICAgICAgICAgICAg ICAgcmV0dXJuOw0KKyAgICAgICAgDQorICAgICAgICAvKiBzY2hlZHVsZSBw YWNrZXQgZm9yIGZvcndhcmRpbmcgYWdhaW4gKi8NCisgICAgICAgIHNwaW5f bG9ja19pcnFzYXZlICgma2libmFsX2RhdGEua2liX3NjaGVkX2xvY2ssIGZs YWdzKTsNCisgICAgICAgIA0KKyAgICAgICAgbGlzdF9hZGRfdGFpbCAoJmZ3 ZC0+a3ByZmRfbGlzdCwgJmtpYm5hbF9kYXRhLmtpYl9kZWxheWVkZndkcyk7 DQorICAgICAgICB3YWtlX3VwICgma2libmFsX2RhdGEua2liX3NjaGVkX3dh aXRxKTsNCisNCiAgICAgICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUgKCZr aWJuYWxfZGF0YS5raWJfdHhfbG9jaywgZmxhZ3MpOw0KIH0NCiANCiBraWJf dHhfdCAqDQota2libmFsX2dldF9pZGxlX3R4IChpbnQgbWF5X2Jsb2NrKSAN CitraWJuYWxfZ2V0X2lkbGVfdHggKGtwcl9md2RfZGVzY190ICpmd2QsIGlu dCBtYXlfYmxvY2spIA0KIHsNCiAgICAgICAgIHVuc2lnbmVkIGxvbmcgIGZs YWdzOw0KICAgICAgICAga2liX3R4X3QgICAgICAqdHggPSBOVUxMOw0KICAg ICAgICAgDQogICAgICAgICBmb3IgKDs7KSB7DQogICAgICAgICAgICAgICAg IHNwaW5fbG9ja19pcnFzYXZlICgma2libmFsX2RhdGEua2liX3R4X2xvY2ss IGZsYWdzKTsNCisgICAgICAgIA0KKyAgICAgICAgICAgICAgICBpZiAoa2li bmFsX2RhdGEua2liX3NodXRkb3duKQ0KKyAgICAgICAgICAgICAgICAgICAg ICAgIGJyZWFrOw0KIA0KICAgICAgICAgICAgICAgICAvKiAibm9ybWFsIiBk ZXNjcmlwdG9yIGlzIGZyZWUgKi8NCiAgICAgICAgICAgICAgICAgaWYgKCFs aXN0X2VtcHR5ICgma2libmFsX2RhdGEua2liX2lkbGVfdHhzKSkgew0KQEAg LTEzMyw2ICsxNzgsMTAgQEANCiAgICAgICAgICAgICAgICAgICAgICAgICBi cmVhazsNCiAgICAgICAgICAgICAgICAgfQ0KIA0KKyAgICAgICAgICAgICAg ICAvKiB0aGlzIG1ha2VzIGZvcndhcmRzIGJsb2NraW5nLi4gKGZyb20gcXN3 bmFsKSAqLw0KKyAgICAgICAgICAgICAgICBpZiAoZndkICE9IE5VTEwpIA0K KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAg IGlmICghbWF5X2Jsb2NrKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAg LyogbWF5IGRpcCBpbnRvIHJlc2VydmUgcG9vbCAqLw0KICAgICAgICAgICAg ICAgICAgICAgICAgIGlmIChsaXN0X2VtcHR5ICgma2libmFsX2RhdGEua2li X2lkbGVfbmJsa190eHMpKSB7DQpAQCAtMTcwLDYgKzIxOSwxMiBAQA0KICAg ICAgICAgICAgICAgICBMQVNTRVJUICghdHgtPnR4X3Bhc3NpdmVfcmRtYV93 YWl0KTsNCiAgICAgICAgICAgICAgICAgTEFTU0VSVCAodHgtPnR4X2xpYm1z Z1swXSA9PSBOVUxMKTsNCiAgICAgICAgICAgICAgICAgTEFTU0VSVCAodHgt PnR4X2xpYm1zZ1sxXSA9PSBOVUxMKTsNCisNCisgICAgICAgIH0gZWxzZSBp ZiAoZndkICE9IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgLyogUXVldWUg Zm9yd2FyZGVkIHBhY2tldCB1bnRpbCBpZGxlIHR4IGlzIGF2YWlsYWJsZSAq Lw0KKyAgICAgICAgICAgICAgICBDREVCVUcgKERfTkVULCAiYmxvY2tlZCBm d2QgWyVwXVxuIixmd2QpOw0KKyAgICAgICAgICAgICAgICBsaXN0X2FkZF90 YWlsICgmZndkLT5rcHJmZF9saXN0LA0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAma2libmFsX2RhdGEua2liX2lkbGVfdHhfZndkcSk7DQog ICAgICAgICB9DQogDQogICAgICAgICBzcGluX3VubG9ja19pcnFyZXN0b3Jl ICgma2libmFsX2RhdGEua2liX3R4X2xvY2ssIGZsYWdzKTsNCkBAIC0xODQs OCArMjM5LDEyIEBADQogICAgICAgICAgICBhbmQgd2UncmUgbm90IHJvdXRp bmcsIHRoZW4gJ25pZCcgaXMgdmVyeSBkaXN0YW50IDopICovDQogICAgICAg ICBpZiAoIG5hbC0+bGlibmFsX25pLm5pX3BpZC5uaWQgPT0gbmlkICkgew0K ICAgICAgICAgICAgICAgICAqZGlzdCA9IDA7DQotICAgICAgICB9IGVsc2Ug ew0KKw0KKyAgICAgICAgfSBlbHNlIGlmIChraWJuYWxfZ2V0X3BlZXIobmlk KSApeyAgICAgICAgIC8qIGl0J3MgbXkgcGVlciAqLw0KICAgICAgICAgICAg ICAgICAqZGlzdCA9IDE7DQorDQorICAgICAgICB9IGVsc2Ugew0KKyAgICAg ICAgICAgICAgICAqZGlzdCA9IDI7ICAgLyogcm91dGUgKi8NCiAgICAgICAg IH0NCiANCiAgICAgICAgIHJldHVybiAwOw0KQEAgLTI0NCw2ICszMDMsOSBA QA0KICAgICAgICAgaW50ICAgICAgICAgICByYzsNCiAgICAgICAgIHVuc2ln bmVkIGxvbmcgZmxhZ3M7DQogDQorICAgICAgICBDREVCVUcgKERfTkVULCAi Y29ubiByeF9wYWdlcyAlcFxuIiwNCisgICAgICAgICAgICAgICAgY29ubi0+ aWJjX3J4X3BhZ2VzKTsNCisNCiAgICAgICAgIHJ4LT5yeF9nbCA9IChzdHJ1 Y3QgaWJfZ2F0aGVyX3NjYXR0ZXIpIHsNCiAgICAgICAgICAgICAgICAgLmFk ZHJlc3MgPSByeC0+cnhfdmFkZHIsDQogICAgICAgICAgICAgICAgIC5sZW5n dGggID0gSUJOQUxfTVNHX1NJWkUsDQpAQCAtNDAyLDEzICs0NjQsNzEgQEAN CiB2b2lkDQoga2libmFsX3J4IChraWJfcnhfdCAqcngpDQogew0KKyAgICAg ICAgaW50IHRub2IsIG5vYjsNCiAgICAgICAgIGtpYl9tc2dfdCAgICptc2cg PSByeC0+cnhfbXNnOw0KLQ0KKyAgICAgICAgcHRsX2hkcl90ICAgICpoZHI7 DQorICAgICAgICBwdGxfa2lvdl90ICAgKmtpb3YgPSBOVUxMOw0KKyAgICAg ICAgcHRsX25pZF90ICAgICBkZXN0X25pZDsNCisgICAgICAgIGludCAgICAg ICAgICAgZm9yd2FyZGluZyA9IDAsIG5pb3Y7DQorICAgICAgICBzdHJ1Y3Qg a2liX2Z3ZGJ1ZiAgICAgICAqZndiOw0KKyAgICAgICAgc3RydWN0IGtpYl9y ZG1hZndkbWF0Y2ggKm1iOw0KKyANCiAgICAgICAgIC8qIENsZWFyIGZsYWcg c28gSSBjYW4gZGV0ZWN0IGlmIEkndmUgc2VudCBhbiBSRE1BIGNvbXBsZXRp b24gKi8NCi0gICAgICAgIHJ4LT5yeF9yZG1hID0gMDsNCisgICAgICAgIHJ4 LT5yeF9yZG1hICAgID0gMDsNCisgICAgICAgIHJ4LT5yeF9md2RidWYgID0g TlVMTDsgLy8gb25seSBzZXQgaWYgSSdtIGZvcndhcmRpbmcgdGhpcyBwYWNr ZXQNCisgICAgICAgIHJ4LT5yeF9tc2d0eXBlID0gbXNnLT5pYm1fdHlwZTsN CisgICAgICAgIGtpb3YgPSBOVUxMOw0KKyAgICAgICAgbmlvdiA9IDA7DQog DQogICAgICAgICBzd2l0Y2ggKG1zZy0+aWJtX3R5cGUpIHsNCiAgICAgICAg IGNhc2UgSUJOQUxfTVNHX0dFVF9SRE1BOg0KKyAgICAgICAgICAgICAgICBo ZHIgPSAocHRsX2hkcl90ICopICZtc2ctPmlibV91LnJkbWEuaWJybV9oZHI7 DQorICAgICAgICAgICAgICAgIGRlc3RfbmlkID0gbGU2NF90b19jcHUoaGRy LT5kZXN0X25pZCk7DQorICAgICAgICAgICAgICAgDQorICAgICAgICAgICAg ICAgIC8qIHNob3VsZCB0aGlzIGJlIGZvcndhcmRlZD8gKi8gDQorICAgICAg ICAgICAgICAgIGlmIChkZXN0X25pZCAhPSBraWJuYWxfbGliLmxpYm5hbF9u aS5uaV9waWQubmlkKSB7IA0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlm ICgga2libmFsX2dldF9wZWVyKGRlc3RfbmlkKSAhPSBOVUxMICkgew0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0VSUk9SKCJkcm9wcGlu ZyBwYWNrZXQgZnJvbSAiTFBYNjQiIGZvciAiTFBYNjQNCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOiB0YXJnZXQgaXMgcGVl clxuIiwgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbGU2NF90b19jcHUoaGRyLT5zcmNfbmlkKSwgZGVzdF9uaWQpOw0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2libmFsX3Bvc3Rfcngg KHJ4LCAxKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl dHVybjsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAg ICAgICAgICAgICAgICAgZm9yd2FyZGluZyA9IDE7DQorICAgICAgICAgICAg ICAgICAgICAgICAgdG5vYiA9IG5vYiA9IGxlMzJfdG9fY3B1KGhkci0+cGF5 bG9hZF9sZW5ndGgpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgDQorICAg ICAgICAgICAgICAgICAgICAgICAgQ0RFQlVHKERfTkVULCAiUkRNQSBHRVQg RlcgbXNnbm9iICVkIHJkbWFfYnl0ZXMgJWQgKGljICJMUFg2NCIpIChvYyAi TFBYNjQiKSByeF9wYWdlcyAlcFxuIiwgDQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG5vYiwgbXNnLT5pYm1fdS5yZG1hLmlicm1fZGVzYy5y ZF9ub2IsIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZTY0 X3RvX2NwdShoZHItPm1zZy5nZXQucmV0dXJuX3dtZC53aF9vYmplY3RfY29v a2llKSwgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlNjRf dG9fY3B1KGhkci0+bXNnLmdldC5yZXR1cm5fd21kLndoX2ludGVyZmFjZV9j b29raWUpLCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcngt PnJ4X2Nvbm4tPmliY19yeF9wYWdlcyk7DQorICAgICAgICAgICAgICAgICAg ICAgICAgDQorICAgICAgICAgICAgICAgICAgICAgICAgbWIgPSBnZXRfbWF0 Y2hidWYocngtPnJ4X2Nvbm4pOw0KKyAgICAgICAgICAgICAgICAgICAgICAg IGlmICggbWIgPT0gTlVMTCApIHsgDQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBDRVJST1IoImdldF9tYXRjaGJ1ZigpIGZhaWxlZFxuIik7 DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraWJuYWxfcG9z dF9yeCAocngsIDEpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgIA0K Kw0KKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNhdmUgZXZlcnl0aGlu ZyBuZWVkZWQgdG8gY29tcGxldGUgdGhlIHJkbWEgKi8NCisgICAgICAgICAg ICAgICAgICAgICAgICBtYi0+bWF0Y2hfd21kLndoX29iamVjdF9jb29raWUg ICAgPSBsZTY0X3RvX2NwdShoZHItPm1zZy5nZXQucmV0dXJuX3dtZC53aF9v YmplY3RfY29va2llKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBtYi0+ bWF0Y2hfd21kLndoX2ludGVyZmFjZV9jb29raWUgPSBsZTY0X3RvX2NwdSho ZHItPm1zZy5nZXQucmV0dXJuX3dtZC53aF9pbnRlcmZhY2VfY29va2llKTsN CisgICAgICAgICAgICAgICAgICAgICAgICBtYi0+bWF0Y2hfdHlwZSAgICAg ICAgICAgICAgICAgICAgPSBsZTMyX3RvX2NwdShoZHItPnR5cGUpOw0KKyAg ICAgICAgICAgICAgICAgICAgICAgIG1iLT5jb29raWUgICAgICAgICAgICAg ICAgICAgICAgICA9IG1zZy0+aWJtX3UucmRtYS5pYnJtX2Nvb2tpZTsNCisg ICAgICAgICAgICAgICAgICAgICAgICBtYi0+YWRkciAgICAgICAgICAgICAg ICAgICAgICAgICAgPSBtc2ctPmlibV91LnJkbWEuaWJybV9kZXNjLnJkX2Fk ZHI7DQorICAgICAgICAgICAgICAgICAgICAgICAgbWItPnJrZXkgICAgICAg ICAgICAgICAgICAgICAgICAgID0gbXNnLT5pYm1fdS5yZG1hLmlicm1fZGVz Yy5yZF9rZXk7ICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAg ICAgICAgICAgIG1iLT5tYXRjaF9pbnVzZSAgICAgICAgICAgICAgICAgICA9 IDE7DQorDQorICAgICAgICAgICAgICAgICAgICAgICAgQ0RFQlVHKERfTkVU LCAiUkRNQSBHRVQgRlcgdHlwZSAlZCBjb29raWUgJWxsdSBhZGRyICVsbHUg cmRfa2V5ICV1IG1iICVwIHJ4X3BhZ2VzICVwXG4iLCANCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbGUzMl90b19jcHUoaGRyLT50eXBlKSwg bXNnLT5pYm1fdS5yZG1hLmlicm1fY29va2llLA0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBtc2ctPmlibV91LnJkbWEuaWJybV9kZXNjLnJk X2FkZHIsIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2ct PmlibV91LnJkbWEuaWJybV9kZXNjLnJkX2tleSwgDQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG1iLCByeC0+cnhfY29ubi0+aWJjX3J4X3Bh Z2VzKTsgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAg ICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKw0KKyAg ICAgICAgICAgICAgICAvKiBub3QgZm9yd2FyZGluZy4uICovDQorDQogICAg ICAgICAgICAgICAgIGxpYl9wYXJzZSgma2libmFsX2xpYiwgJm1zZy0+aWJt X3UucmRtYS5pYnJtX2hkciwgcngpOw0KICAgICAgICAgICAgICAgICAvKiBJ ZiB0aGUgaW5jb21pbmcgZ2V0IHdhcyBtYXRjaGVkLCBJJ2xsIGhhdmUgaW5p dGlhdGVkIHRoZQ0KICAgICAgICAgICAgICAgICAgKiBSRE1BIGFuZCB0aGUg Y29tcGxldGlvbiBtZXNzYWdlLi4uICovDQpAQCAtNDI0LDYgKzU0NCw1NCBA QA0KICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAg DQogICAgICAgICBjYXNlIElCTkFMX01TR19QVVRfUkRNQToNCisgICAgICAg ICAgICAgICAgaGRyID0gKHB0bF9oZHJfdCAqKSAmbXNnLT5pYm1fdS5yZG1h Lmlicm1faGRyOw0KKyAgICAgICAgICAgICAgICBkZXN0X25pZCA9IGxlNjRf dG9fY3B1KGhkci0+ZGVzdF9uaWQpOw0KKyAgICAgICAgICAgICAgICANCisg ICAgICAgICAgICAgICAgaWYgKGRlc3RfbmlkICE9IGtpYm5hbF9saWIubGli bmFsX25pLm5pX3BpZC5uaWQpIHsgDQorICAgICAgICAgICAgICAgICAgICAg ICAgaWYgKCBraWJuYWxfZ2V0X3BlZXIoZGVzdF9uaWQpICE9IE5VTEwgKSB7 DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRVJST1IoImRy b3BwaW5nIHBhY2tldCBmcm9tICJMUFg2NCIgZm9yICJMUFg2NA0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI6IHRhcmdldCBp cyBwZWVyXG4iLCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBsZTY0X3RvX2NwdShoZHItPnNyY19uaWQpLCBkZXN0X25pZCk7 DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraWJuYWxfcG9z dF9yeCAocngsIDEpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAg ICAgICAgICAgICAgICAgICAgICBmb3J3YXJkaW5nID0gMTsNCisgICAgICAg ICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgICAgICB0 bm9iID0gbm9iID0gbGUzMl90b19jcHUoaGRyLT5wYXlsb2FkX2xlbmd0aCk7 DQorICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgICAg ICAgICAgICAgQ0RFQlVHKERfTkVULCAiUkRNQSBQVVQgRlcgbXNnbm9iICVk IHJkbWFfYnl0ZXMgJWRcbiIsIA0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBub2IsIG1zZy0+aWJtX3UucmRtYS5pYnJtX2Rlc2MucmRfbm9i KTsNCisgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAg ICAgICAgICAgICByeC0+cnhfZndkYnVmID0gZndiID0gZ2V0X2Z3ZGJ1ZiAo cngtPnJ4X2Nvbm4sIEtJQl9MQVJHRUJVRik7DQorDQorICAgICAgICAgICAg ICAgICAgICAgICAgaWYgKCBmd2IgPT0gTlVMTCApIExCVUcoKTsNCisgICAg ICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgICAg ICBraW92ID0gZndiLT5md2RidWZfa2lvdnJkbWE7DQorICAgICAgICAgICAg ICAgICAgICAgICAgbmlvdiAgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAg ICAgIA0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdG5vYiA+IDAg KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGtpb3ZbMF0ua2lvdl9vZmZzZXQg PSAwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2lvdlsw XS5raW92X2xlbiA9IE1JTihQQUdFX1NJWkUsIHRub2IpOw0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdG5vYiAtPSBraW92WzBdLmtpb3Zf bGVuOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlvdiA9 IDE7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0bm9iKSB7DQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpb3Zb bmlvdl0ua2lvdl9vZmZzZXQgPSAwOw0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBraW92W25pb3ZdLmtpb3ZfbGVuID0gTUlO KFBBR0VfU0laRSwgdG5vYik7DQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRub2IgLT0ga2lvdltuaW92XS5raW92X2xlbjsN CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlv disrOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAg ICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgLyogY29tcGxl dGUgdGhlIHJkbWEgKi8NCisgICAgICAgICAgICAgICAgICAgICAgICBraWJu YWxfc3RhcnRfYWN0aXZlX3JkbWEoSUJOQUxfTVNHX1BVVF9ET05FLCANCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMCwgcngsIE5VTEwsIG5pb3YsIA0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBraW92LCAwLCBu b2IpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAg ICAgICAgICAgICAgIENERUJVRyhEX05FVCwgIlJETUEgRlcgbm9iICVkIG5p b3YgJWQgbGFzdCBpb3Y6IG9mZiAlZCBsZW4gJWRcbiIsIA0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBub2IsIG5pb3YsIGtpb3Zbbmlvdi0x XS5raW92X29mZnNldCwga2lvdltuaW92LTFdLmtpb3ZfbGVuKTsNCisgICAg ICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAg fQ0KKyAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgbGliX3Bh cnNlKCZraWJuYWxfbGliLCAmbXNnLT5pYm1fdS5yZG1hLmlicm1faGRyLCBy eCk7DQogICAgICAgICAgICAgICAgIGlmIChyeC0+cnhfcmRtYSkNCiAgICAg ICAgICAgICAgICAgICAgICAgICBicmVhazsNCkBAIC00MzgsNiArNjA2LDUw IEBADQogICAgICAgICAgICAgICAgIGJyZWFrOw0KIA0KICAgICAgICAgY2Fz ZSBJQk5BTF9NU0dfSU1NRURJQVRFOg0KKyAgICAgICAgICAgICAgICBoZHIg PSAocHRsX2hkcl90ICopICZtc2ctPmlibV91LnJkbWEuaWJybV9oZHI7DQor ICAgICAgICAgICAgICAgIGRlc3RfbmlkID0gbGU2NF90b19jcHUoaGRyLT5k ZXN0X25pZCk7DQorICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAg ICBpZiAoZGVzdF9uaWQgIT0ga2libmFsX2xpYi5saWJuYWxfbmkubmlfcGlk Lm5pZCkgeyANCisgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAg ICAgICAgICAgaWYgKCBraWJuYWxfZ2V0X3BlZXIoZGVzdF9uaWQpICE9IE5V TEwgKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0VS Uk9SKCJkcm9wcGluZyBwYWNrZXQgZnJvbSAiTFBYNjQiIGZvciAiTFBYNjQN CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjog dGFyZ2V0IGlzIHBlZXJcbiIsIA0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsZTY0X3RvX2NwdShoZHItPnNyY19uaWQpLCBk ZXN0X25pZCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg a2libmFsX3Bvc3RfcnggKHJ4LCAxKTsNCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm47DQorICAgICAgICAgICAgICAgICAgICAg ICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgZm9yd2FyZGluZyA9 IDE7DQorICAgICAgICAgICAgICAgICAgICAgICAgIG5vYiAgPSBsZTMyX3Rv X2NwdShoZHItPnBheWxvYWRfbGVuZ3RoKTsNCisNCisgICAgICAgICAgICAg ICAgICAgICAgICAgaWYgKCAhbm9iICkgYnJlYWs7DQorDQorICAgICAgICAg ICAgICAgICAgICAgICAgIC8qIGdyYWIgYSBzbWFsbCBmd2QgYnVmZmVyICov DQorICAgICAgICAgICAgICAgICAgICAgICAgIGZ3YiA9IGdldF9md2RidWYg KHJ4LT5yeF9jb25uLCBLSUJfU01BTExCVUYpOw0KKyAgICAgICAgICAgICAg ICAgICAgICAgICByeC0+cnhfZndkYnVmID0gZndiOw0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAg ICAgICAgICAgICAgICAgICAgICAgIGlmICggZndiID09IE5VTEwgKSBMQlVH KCk7DQorDQorICAgICAgICAgICAgICAgICAgICAgICAgIGtpb3YgPSAmZndi LT5md2RidWZfa2lvdmltbTsNCisNCisgICAgICAgICAgICAgICAgICAgICAg ICAgbmlvdiA9IDE7DQorICAgICAgICAgICAgICAgICAgICAgICAgIENERUJV RyAoRF9ORVQsICJJTU1fTVNHIGhkci0+cGF5bG9hZCA9ICVkIGJ5dGVzIGtp b3YtPnBhZ2UgJXBcbiIsIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG5vYiwga2lvdi0+a2lvdl9wYWdlKTsNCisgICAgICAgICAgICAg ICAgICAgICAgICAgDQorICAgICAgICAgICAgICAgICAgICAgICAgIExBU1NF UlQgKG5vYiA8PSBJQk5BTF9NU0dfU0laRSk7DQorICAgICAgICAgICAgICAg ICAgICAgICAgIExBU1NFUlQgKGtpb3YtPmtpb3ZfcGFnZSAhPSBOVUxMKTsN CisgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgICAg ICAgICAgICAgIGtpb3YtPmtpb3ZfbGVuICAgID0gbm9iOw0KKyAgICAgICAg ICAgICAgICAgICAgICAgICBraW92LT5raW92X29mZnNldCA9IDA7IA0KKw0K KyAgICAgICAgICAgICAgICAgICAgICAgICBsaWJfY29weV9idWYya2lvdiAo bmlvdiwga2lvdiwgMCwgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBtc2ctPmlibV91LmltbWVkaWF0ZS5pYmltX3Bh eWxvYWQsIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbm9iKTsgICAgIA0KKyAgICAgICAgICAgICAgICAgICAgICAg ICANCisgICAgICAgICAgICAgICAgICAgICAgICAgQ0RFQlVHKERfTkVULCAi SU1NIEZXIGtpb3ZfbGVuICVkIGtpb3Zfb2Zmc2V0ICVkXG4iLA0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAga2lvdi0+a2lvdl9sZW4sIGtp b3YtPmtpb3Zfb2Zmc2V0KTsNCisgICAgICAgICAgICAgICAgICAgICAgICAg YnJlYWs7DQorICAgICAgICAgICAgICAgIH0NCisNCiAgICAgICAgICAgICAg ICAgbGliX3BhcnNlKCZraWJuYWxfbGliLCAmbXNnLT5pYm1fdS5pbW1lZGlh dGUuaWJpbV9oZHIsIHJ4KTsNCiAgICAgICAgICAgICAgICAgTEFTU0VSVCAo IXJ4LT5yeF9yZG1hKTsNCiAgICAgICAgICAgICAgICAgYnJlYWs7DQpAQCAt NDQ3LDkgKzY1OSw5MyBAQA0KICAgICAgICAgICAgICAgICBicmVhazsNCiAg ICAgICAgIH0NCiANCisgICAgICAgIA0KKyAgICAgICAgLyogaWYgd2UncmUg bm90IGZvcndhcmRpbmcgdGhpcyBwYWNrZXQgdGhlbiB3ZSdyZSBkb25lICov DQorICAgICAgICBpZiAoICFmb3J3YXJkaW5nICkga2libmFsX3Bvc3Rfcngo cngsIDEpOw0KKyAgICAgICAgDQorICAgICAgICBlbHNlIHsNCisgICAgICAg ICAgICAgICAgLy8gZm9yd2FyZCB0aG9zZSBwYWdlcyANCisgICAgICAgICAg ICAgICAga3ByX2Z3ZF9pbml0ICgmcngtPnJ4X2Z3ZCwgZGVzdF9uaWQsIA0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhkciwgbm9iLCBuaW92 LCBraW92LCANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraWJu YWxfZndkX2NhbGxiYWNrLCByeCk7DQorICAgICAgICAgICAgICAgIA0KKyAg ICAgICAgICAgICAgICBrcHJfZndkX3N0YXJ0ICgma2libmFsX2RhdGEua2li X3JvdXRlciwgJnJ4LT5yeF9md2QpOw0KKyAgICAgICAgfQ0KK30NCisNCisv KiAgcmlnaHQgbm93IHRoaXMgb25seSBnZXRzIGNhbGxlZCBvbiByZWN2J3Mg Ki8NCit2b2lkDQora2libmFsX2Z3ZF9jYWxsYmFjayAodm9pZCAqYXJnLCBp bnQgZXJyb3IpDQorew0KKyAgICAgICAga2liX3J4X3QgICpyeCA9IChraWJf cnhfdCAqKWFyZzsNCisgICAgICAgIHB0bF9oZHJfdCAqaGRyOw0KKyAgICAg ICAgaW50ICAgICAgICBub2I7DQorDQorICAgICAgICAvKiBUaGUgcm91dGVy IGhhcyBmaW5pc2hlZCBmb3J3YXJkaW5nIHRoaXMgcGFja2V0ICovICAgICAg ICANCisgICAgICAgIA0KKyAgICAgICAgc3dpdGNoKHJ4LT5yeF9tc2d0eXBl KSB7DQorICAgICAgICBkZWZhdWx0Og0KKyAgICAgICAgICAgICAgICBMQlVH KCk7DQorDQorICAgICAgICBjYXNlIElCTkFMX01TR19JTU1FRElBVEU6ICAN CisgICAgICAgICAgICAgICAgaGRyID0gKHB0bF9oZHJfdCAqKSAmcngtPnJ4 X21zZy0+aWJtX3UuaW1tZWRpYXRlLmliaW1faGRyOw0KKyAgICAgICAgICAg ICAgICBub2IgPSBsZTMyX3RvX2NwdShoZHItPnBheWxvYWRfbGVuZ3RoKTsN CisgICAgICAgICAgICAgICAgaWYgKCBub2IgKSANCisgICAgICAgICAgICAg ICAgICAgICAgICBmcmVlX2Z3ZGJ1ZihyeC0+cnhfZndkYnVmLCBLSUJfU01B TExCVUYpOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisNCisgICAgICAg IGNhc2UgSUJOQUxfTVNHX1BVVF9SRE1BOg0KKyAgICAgICAgICAgICAgICBo ZHIgPSAocHRsX2hkcl90ICopICZyeC0+cnhfbXNnLT5pYm1fdS5yZG1hLmli cm1faGRyOw0KKyAgICAgICAgICAgICAgICBub2IgPSBsZTMyX3RvX2NwdSho ZHItPnBheWxvYWRfbGVuZ3RoKTsNCisNCisgICAgICAgICAgICAgICAgQ0RF QlVHKERfTkVULCAiUkRNQSBQVVRcbiIpOw0KKw0KKyAgICAgICAgICAgICAg ICBmcmVlX2Z3ZGJ1ZihyeC0+cnhfZndkYnVmLCBLSUJfTEFSR0VCVUYpOw0K Kw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisNCisgICAgICAgIGNhc2Ug SUJOQUxfTVNHX0dFVF9SRE1BOg0KKyAgICAgICAgICAgICAgICBoZHIgPSAo cHRsX2hkcl90ICopICZyeC0+cnhfbXNnLT5pYm1fdS5yZG1hLmlicm1faGRy Ow0KKyAgICAgICAgICAgICAgICBub2IgPSBsZTMyX3RvX2NwdShoZHItPnBh eWxvYWRfbGVuZ3RoKTsNCisNCisgICAgICAgICAgICAgICAgQ0RFQlVHKERf TkVULCAiUkRNQSBHRVRcbiIpOw0KKw0KKyAgICAgICAgICAgICAgICBicmVh azsNCisgICAgICAgIA0KKyAgICAgICAgY2FzZSBJQk5BTF9NU0dfUFVUX0RP TkU6ICAgICAgICANCisgICAgICAgICAgICAgICAgIGhkciA9IChwdGxfaGRy X3QgKikgJnJ4LT5yeF9tc2ctPmlibV91LnJkbWEuaWJybV9oZHI7DQorICAg ICAgICAgICAgICAgICBub2IgPSBsZTMyX3RvX2NwdShoZHItPnBheWxvYWRf bGVuZ3RoKTsNCisNCisgICAgICAgICAgICAgICAgIENERUJVRyhEX05FVCwg IlJETUEgUFVUX0RPTkVcbiIpOw0KKw0KKyAgICAgICAgICAgICAgICAgYnJl YWs7DQorDQorICAgICAgICBjYXNlIElCTkFMX01TR19HRVRfRE9ORToNCisg ICAgICAgICAgICAgICAgaGRyID0gKHB0bF9oZHJfdCAqKSAmcngtPnJ4X21z Zy0+aWJtX3UucmRtYS5pYnJtX2hkcjsNCisgICAgICAgICAgICAgICAgbm9i ID0gbGUzMl90b19jcHUoaGRyLT5wYXlsb2FkX2xlbmd0aCk7DQorDQorICAg ICAgICAgICAgICAgIENERUJVRyhEX05FVCwgIlJETUEgR0VUX0RPTkVcbiIp Ow0KKw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisg DQorICAgICAgICBpZiAoZXJyb3IgIT0gMCkNCisgICAgICAgICAgICAgICAg Q0VSUk9SKCJGYWlsZWQgdG8gcm91dGUgcGFja2V0IGZyb20gIkxQWDY0IiB0 byAiTFBYNjQiOiAlZFxuIiwNCisgICAgICAgICAgICAgICAgICAgICAgIGxl NjRfdG9fY3B1KGhkci0+c3JjX25pZCksIA0KKyAgICAgICAgICAgICAgICAg ICAgICAgbGU2NF90b19jcHUoaGRyLT5kZXN0X25pZCksIA0KKyAgICAgICAg ICAgICAgICAgICAgICAgZXJyb3IpOw0KKyAgICAgICAgZWxzZSANCisgICAg ICAgICAgICAgICAgQ0RFQlVHKERfTkVULCJSb3V0ZWQgcGFja2V0IGZyb20g IkxQWDY0IiB0byAiTFBYNjQiIG5vYiAlZDpcbiIsDQorICAgICAgICAgICAg ICAgICAgICAgICBsZTY0X3RvX2NwdShoZHItPnNyY19uaWQpLCANCisgICAg ICAgICAgICAgICAgICAgICAgIGxlNjRfdG9fY3B1KGhkci0+ZGVzdF9uaWQp LCANCisgICAgICAgICAgICAgICAgICAgICAgIG5vYik7DQorICAgICAgICAN CisgICAgICAgIENERUJVRyhEX05FVCwicHV0X2Nvbm4gJXBcbiIsIHJ4LT5y eF9jb25uKTsNCiAgICAgICAgIGtpYm5hbF9wb3N0X3J4IChyeCwgMSk7DQog fQ0KIA0KKw0KKw0KICNpZiAwDQogaW50DQoga2libmFsX2t2YWRkcl90b19w aHlzICh1bnNpZ25lZCBsb25nIHZhZGRyLCBfX3U2NCAqcGh5c3ApDQpAQCAt Njc1LDcgKzk3MSw3IEBADQogICAgICAgICAgICAgY29ubi0+aWJjX291dHN0 YW5kaW5nX2NyZWRpdHMgPj0gSUJOQUxfQ1JFRElUX0hJR0hXQVRFUikgew0K ICAgICAgICAgICAgICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjb25u LT5pYmNfbG9jaywgZmxhZ3MpOw0KICAgICAgICAgICAgICAgICANCi0gICAg ICAgICAgICAgICAgdHggPSBraWJuYWxfZ2V0X2lkbGVfdHgoMCk7ICAgICAv KiBkb24ndCBibG9jayAqLw0KKyAgICAgICAgICAgICAgICB0eCA9IGtpYm5h bF9nZXRfaWRsZV90eChOVUxMLCAwKTsgICAgIC8qIGRvbid0IGJsb2NrICov DQogICAgICAgICAgICAgICAgIGlmICh0eCAhPSBOVUxMKQ0KICAgICAgICAg ICAgICAgICAgICAgICAgIGtpYm5hbF9pbml0X3R4X21zZyh0eCwgSUJOQUxf TVNHX05PT1AsIDApOw0KIA0KQEAgLTEwMzMsNyArMTMyOSw3IEBADQogICAg ICAgICAgICAgICAgICAgICAgICAgIElCX0FDQ0VTU19MT0NBTF9XUklURTsN CiAgICAgICAgIH0NCiANCi0gICAgICAgIHR4ID0ga2libmFsX2dldF9pZGxl X3R4ICgxKTsgICAgICAgICAgIC8qIE1heSBibG9jazsgY2FsbGVyIGlzIGFu IGFwcCB0aHJlYWQgKi8NCisgICAgICAgIHR4ID0ga2libmFsX2dldF9pZGxl X3R4IChOVUxMLCAxKTsgICAgICAgICAgIC8qIE1heSBibG9jazsgY2FsbGVy IGlzIGFuIGFwcCB0aHJlYWQgKi8NCiAgICAgICAgIExBU1NFUlQgKHR4ICE9 IE5VTEwpOw0KIA0KICAgICAgICAgaWYgKChsaWJtc2ctPm1kLT5vcHRpb25z ICYgUFRMX01EX0tJT1YpID09IDApIA0KQEAgLTExMzgsMTIgKzE0MzQsMTMg QEANCiAgICAgICAgICAgICAgICAgTEFTU0VSVCAocnhtc2ctPmlibV90eXBl ID09IElCTkFMX01TR19QVVRfUkRNQSk7DQogICAgICAgICB9DQogDQotICAg ICAgICB0eCA9IGtpYm5hbF9nZXRfaWRsZV90eCAoMCk7ICAgICAgICAgICAv KiBNdXN0bid0IGJsb2NrICovDQorICAgICAgICB0eCA9IGtpYm5hbF9nZXRf aWRsZV90eCAoTlVMTCwgMCk7ICAgICAgICAgICAvKiBNdXN0bid0IGJsb2Nr ICovDQogICAgICAgICBpZiAodHggPT0gTlVMTCkgew0KICAgICAgICAgICAg ICAgICBDRVJST1IgKCJ0eCBkZXNjcyBleGhhdXN0ZWQgb24gUkRNQSBmcm9t ICJMUFg2NA0KICAgICAgICAgICAgICAgICAgICAgICAgICIgY29tcGxldGlu ZyBsb2NhbGx5IHdpdGggZmFpbHVyZVxuIiwNCiAgICAgICAgICAgICAgICAg ICAgICAgICByeC0+cnhfY29ubi0+aWJjX3BlZXItPmlicF9uaWQpOw0KLSAg ICAgICAgICAgICAgICBsaWJfZmluYWxpemUgKCZraWJuYWxfbGliLCBOVUxM LCBsaWJtc2csIFBUTF9OT19TUEFDRSk7DQorICAgICAgICAgICAgICAgIGlm ICggbGlibXNnICE9IE5VTEwgKQ0KKyAgICAgICAgICAgICAgICAgICAgICAg IGxpYl9maW5hbGl6ZSAoJmtpYm5hbF9saWIsIE5VTEwsIGxpYm1zZywgUFRM X05PX1NQQUNFKTsNCiAgICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAg ICAgfQ0KICAgICAgICAgTEFTU0VSVCAodHgtPnR4X25zcCA9PSAwKTsNCkBA IC0xMjA5LDggKzE1MDYsMTIgQEANCiAgICAgICAgICAgICAgICAgTEFTU0VS VCAodHgtPnR4X25zcCA9PSAxKTsNCiAgICAgICAgICAgICAgICAgLyogTm8g UkRNQTogbG9jYWwgY29tcGxldGlvbiBoYXBwZW5zIG5vdyEgKi8NCiAgICAg ICAgICAgICAgICAgQ0RFQlVHKERfTkVULCAiTm8gZGF0YTogaW1tZWRpYXRl IGNvbXBsZXRpb25cbiIpOw0KLSAgICAgICAgICAgICAgICBsaWJfZmluYWxp emUgKCZraWJuYWxfbGliLCBOVUxMLCBsaWJtc2csDQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RhdHVzID09IDAgPyBQVExfT0sgOiBQVExf RkFJTCk7DQorICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICAv KiBkb24ndCBib3RoZXIgd2l0aCBwb3J0YWxzIGlmIGxpYm1zZyBpcyBudWxs ICoNCisgICAgICAgICAgICAgICAgICogIHRoaXMgbXNnIHByb2JhYmx5IGNh bWUgZnJvbSB0aGUgcm91dGVyLiAgICAqLw0KKyAgICAgICAgICAgICAgICBp ZiAoIGxpYm1zZyAhPSBOVUxMICkgDQorICAgICAgICAgICAgICAgICAgICAg ICAgbGliX2ZpbmFsaXplICgma2libmFsX2xpYiwgTlVMTCwgbGlibXNnLA0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVz ID09IDAgPyBQVExfT0sgOiBQVExfRkFJTCk7DQogICAgICAgICB9DQogDQog ICAgICAgICAvKiArMSByZWYgZm9yIHRoaXMgdHguLi4gKi8NCkBAIC0xMjM3 LDkgKzE1MzgsMTIgQEANCiAgICAgICAgICAgICAgICAgaW50ICAgICAgICAg ICBwYXlsb2FkX29mZnNldCwNCiAgICAgICAgICAgICAgICAgaW50ICAgICAg ICAgICBwYXlsb2FkX25vYikNCiB7DQorICAgICAgICBwdGxfbmlkX3QgICB0 YXJnZXRuaWQ7DQogICAgICAgICBraWJfbXNnX3QgICppYm1zZzsNCiAgICAg ICAgIGtpYl90eF90ICAgKnR4Ow0KICAgICAgICAgaW50ICAgICAgICAgbm9i Ow0KKyAgICAgICAgaW50ICAgICAgICAgZm9yd2FyZGluZyA9IDA7DQorICAg ICAgICBpbnQgICAgICAgICByYzsNCiANCiAgICAgICAgIC8qIE5CICdwcml2 YXRlJyBpcyBkaWZmZXJlbnQgZGVwZW5kaW5nIG9uIHdoYXQgd2UncmUgc2Vu ZGluZy4uLi4gKi8NCiANCkBAIC0xMjU0LDYgKzE1NTgsMjkgQEANCiAgICAg ICAgIC8qIHBheWxvYWQgaXMgZWl0aGVyIGFsbCB2YWRkcnMgb3IgYWxsIHBh Z2VzICovDQogICAgICAgICBMQVNTRVJUICghKHBheWxvYWRfa2lvdiAhPSBO VUxMICYmIHBheWxvYWRfaW92ICE9IE5VTEwpKTsNCiANCisgICAgICAgIHRh cmdldG5pZCA9IG5pZDsNCisgICAgICAgIC8qIGNoZWNrIGlmICduaWQnIGlz IGEgcGVlciwgaWYgbm90IHRoZW4gZm9yd2FyZCAqLw0KKyAgICAgICAgaWYg KCBraWJuYWxfZ2V0X3BlZXIobmlkKSA9PSBOVUxMKSB7DQorICAgICAgICAg ICAgICAgIENERUJVRyhEX05FVCwgIm5vdCBhIHBlZXI6ICJMUFg2NCIgbG9v a3VwIGdhdGV3YXkuLlxuIixuaWQpOw0KKyAgICAgICAgICAgICAgICByYyA9 IGtwcl9sb29rdXAgKCZraWJuYWxfZGF0YS5raWJfcm91dGVyLCBuaWQsIA0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiAocHRs X2hkcl90KSArIHBheWxvYWRfbm9iLCAmdGFyZ2V0bmlkKTsNCisgICAgICAg ICAgICAgICAgaWYgKHJjICE9IDApIHsNCisgICAgICAgICAgICAgICAgICAg ICAgICBDRVJST1IoIkNhbid0IHJvdXRlIHRvICJMUFg2NCI6IHJvdXRlciBl cnJvciAlZFxuIiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bmlkLCByYyk7DQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChQ VExfRkFJTCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAg ICAgDQorICAgICAgICAgICAgICAgIGlmICgga2libmFsX2dldF9wZWVyKHRh cmdldG5pZCkgPT0gTlVMTCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAg IENFUlJPUigiQmFkIGdhdGV3YXkgIkxQWDY0IiBmb3IgIkxQWDY0IlxuIiwN CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0bmlkLCBu aWQpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoUFRMX0ZB SUwpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGZv cndhcmRpbmcgPSAxOw0KKyANCisgICAgICAgICAgICAgICAgQ0RFQlVHKERf TkVULCAiZm9yd2FyZGluZyB0byAiTFBYNjQiIHZpYSAiTFBYNjQiXG4iLA0K KyAgICAgICAgICAgICAgICAgICAgICAgbmlkLCB0YXJnZXRuaWQpOw0KKyAg ICAgICAgfQ0KKyAgICAgICAgDQogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsN CiAgICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgICAgICAgIExCVUcoKTsN CkBAIC0xMjY1LDYgKzE1OTIsOCBAQA0KIA0KICAgICAgICAgICAgICAgICAv KiBSRE1BIHJlcGx5IGV4cGVjdGVkPyAqLw0KICAgICAgICAgICAgICAgICBp ZiAocngtPnJ4X21zZy0+aWJtX3R5cGUgPT0gSUJOQUxfTVNHX0dFVF9SRE1B KSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgQ0RFQlVHKERfTkVULCAi TVNHX1JFUExZX0RNQSB0byAiTFBYNjQiXG4iLA0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0YXJnZXRuaWQpOw0KICAgICAgICAgICAgICAg ICAgICAgICAgIGtpYm5hbF9zdGFydF9hY3RpdmVfcmRtYShJQk5BTF9NU0df R0VUX0RPTkUsIDAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJ4LCBsaWJtc2csIHBheWxvYWRfbmlvdiwg DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBheWxvYWRfaW92LCBwYXlsb2FkX2tpb3YsDQpAQCAtMTI4Myw3 ICsxNjEyLDcgQEANCiAgICAgICAgICAgICAgICAgbm9iID0gb2Zmc2V0b2Yo a2liX21zZ190LCBpYm1fdS5pbW1lZGlhdGUuaWJpbV9wYXlsb2FkW3BheWxv YWRfbm9iXSk7DQogICAgICAgICAgICAgICAgIGlmIChub2IgPiBJQk5BTF9N U0dfU0laRSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgIENFUlJPUigi UkVQTFkgZm9yICJMUFg2NCIgdG9vIGJpZyAoUkRNQSBub3QgcmVxdWVzdGVk KTogJWRcbiIsIA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu aWQsIHBheWxvYWRfbm9iKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGFyZ2V0bmlkLCBwYXlsb2FkX25vYik7DQogICAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIChQVExfRkFJTCk7DQogICAgICAgICAgICAg ICAgIH0NCiAgICAgICAgICAgICAgICAgYnJlYWs7DQpAQCAtMTI5Miw5ICsx NjIxLDEzIEBADQogICAgICAgICBjYXNlIFBUTF9NU0dfR0VUOg0KICAgICAg ICAgICAgICAgICAvKiBtaWdodCB0aGUgUkVQTFkgbWVzc2FnZSBiZSBiaWcg ZW5vdWdoIHRvIG5lZWQgUkRNQT8gKi8NCiAgICAgICAgICAgICAgICAgbm9i ID0gb2Zmc2V0b2Yoa2liX21zZ190LCBpYm1fdS5pbW1lZGlhdGUuaWJpbV9w YXlsb2FkW2xpYm1zZy0+bWQtPmxlbmd0aF0pOw0KLSAgICAgICAgICAgICAg ICBpZiAobm9iID4gSUJOQUxfTVNHX1NJWkUpDQorICAgICAgICAgICAgICAg IGlmIChub2IgPiBJQk5BTF9NU0dfU0laRSkgeyANCisgICAgICAgICAgICAg ICAgICAgICAgICBDREVCVUcoRF9ORVQsICJNU0dfR0VUX0RNQSB0byAiTFBY NjQiIG5vYiA9ICVkIFBUTCBoYW5kbGUgIkxQWDY0IlxuIiwNCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0bmlkLCBub2IsIGxpYm1z Zy0+bWQtPm1kX2xoLmxoX2Nvb2tpZSk7DQorDQogICAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIChraWJuYWxfc3RhcnRfcGFzc2l2ZV9yZG1hKElC TkFMX01TR19HRVRfUkRNQSwgDQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pZCwgbGlibXNn LCBoZHIpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0bmlkLCBsaWJtc2csIGhk cikpOw0KKyAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgIGJy ZWFrOw0KIA0KICAgICAgICAgY2FzZSBQVExfTVNHX0FDSzoNCkBAIC0xMzA0 LDE5ICsxNjM3LDI0IEBADQogICAgICAgICBjYXNlIFBUTF9NU0dfUFVUOg0K ICAgICAgICAgICAgICAgICAvKiBJcyB0aGUgcGF5bG9hZCBiaWcgZW5vdWdo IHRvIG5lZWQgUkRNQT8gKi8NCiAgICAgICAgICAgICAgICAgbm9iID0gb2Zm c2V0b2Yoa2liX21zZ190LCBpYm1fdS5pbW1lZGlhdGUuaWJpbV9wYXlsb2Fk W3BheWxvYWRfbm9iXSk7DQotICAgICAgICAgICAgICAgIGlmIChub2IgPiBJ Qk5BTF9NU0dfU0laRSkNCisNCisgICAgICAgICAgICAgICAgaWYgKG5vYiA+ IElCTkFMX01TR19TSVpFKSB7IA0KKyAgICAgICAgICAgICAgICAgICAgICAg IENERUJVRyhEX05FVCwgIk1TR19QVVRfRE1BIHRvICJMUFg2NCIgIFBUTCBo YW5kbGUgIkxQWDY0IlxuIiwNCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGFyZ2V0bmlkLCBsaWJtc2ctPm1kLT5tZF9saC5saF9jb29raWUp Ow0KKw0KICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoa2libmFs X3N0YXJ0X3Bhc3NpdmVfcmRtYShJQk5BTF9NU0dfUFVUX1JETUEsDQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG5pZCwgbGlibXNnLCBoZHIpKTsNCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dGFyZ2V0bmlkLCBsaWJtc2csIGhkcikpOw0KKyAgICAgICAgICAgICAgICB9 DQogICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICBicmVhazsN CiAgICAgICAgIH0NCiANCi0gICAgICAgIHR4ID0ga2libmFsX2dldF9pZGxl X3R4KCEodHlwZSA9PSBQVExfTVNHX0FDSyB8fA0KLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0eXBlID09IFBUTF9NU0dfUkVQTFkgfHwN Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5faW50ZXJy dXB0KCkpKTsNCisgICAgICAgIHR4ID0ga2libmFsX2dldF9pZGxlX3R4KE5V TEwsICEodHlwZSA9PSBQVExfTVNHX0FDSyB8fA0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlID09IFBUTF9NU0dfUkVQ TFkgfHwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW5faW50ZXJydXB0KCkpKTsNCiAgICAgICAgIGlmICh0eCA9PSBOVUxM KSB7DQogICAgICAgICAgICAgICAgIENFUlJPUiAoIkNhbid0IHNlbmQgJWQg dG8gIkxQWDY0IjogdHggZGVzY3MgZXhoYXVzdGVkJXNcbiIsIA0KLSAgICAg ICAgICAgICAgICAgICAgICAgIHR5cGUsIG5pZCwgaW5faW50ZXJydXB0KCkg PyAiIChpbnRyKSIgOiAiIik7DQorICAgICAgICAgICAgICAgICAgICAgICAg dHlwZSwgdGFyZ2V0bmlkLCBpbl9pbnRlcnJ1cHQoKSA/ICIgKGludHIpIiA6 ICIiKTsNCiAgICAgICAgICAgICAgICAgcmV0dXJuIChQVExfTk9fU1BBQ0Up Ow0KICAgICAgICAgfQ0KIA0KQEAgLTEzMzQsNiArMTY3Miw4IEBADQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2Fk X29mZnNldCwgcGF5bG9hZF9ub2IpOw0KICAgICAgICAgfQ0KIA0KKyAgICAg ICAgQ0RFQlVHKERfTkVULCAiTVNHX0lNTUVESUFURSB0byAiTFBYNjQiXG4i LCB0YXJnZXRuaWQpOw0KKw0KICAgICAgICAga2libmFsX2luaXRfdHhfbXNn ICh0eCwgSUJOQUxfTVNHX0lNTUVESUFURSwNCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgb2Zmc2V0b2Yoa2liX2ltbWVkaWF0ZV9tc2dfdCwgDQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGliaW1fcGF5 bG9hZFtwYXlsb2FkX25vYl0pKTsNCkBAIC0xMzQxLDcgKzE2ODEsNyBAQA0K ICAgICAgICAgLyogbGlibXNnIGdldHMgZmluYWxpemVkIHdoZW4gdHggY29t cGxldGVzICovDQogICAgICAgICB0eC0+dHhfbGlibXNnWzBdID0gbGlibXNn Ow0KIA0KLSAgICAgICAga2libmFsX2xhdW5jaF90eCh0eCwgbmlkKTsNCisg ICAgICAgIGtpYm5hbF9sYXVuY2hfdHgodHgsIHRhcmdldG5pZCk7DQogICAg ICAgICByZXR1cm4gKFBUTF9PSyk7DQogfQ0KIA0KQEAgLTEzNjksNiArMTcw OSwxOTQgQEANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF5 bG9hZF9vZmZzZXQsIHBheWxvYWRfbGVuKSk7DQogfQ0KIA0KKy8qIFJvdXRl ciBGb3J3YXJkaW5nIGZ1bmN0aW9uICovDQordm9pZCBraWJuYWxfZndkX3Bh Y2tldCAodm9pZCAqYXJnLCBrcHJfZndkX2Rlc2NfdCAqZndkKSB7DQorICAg ICAgICBpbnQgICAgICAgICAgICAgIHJjID0gMDsNCisgICAgICAgIGtpYl90 eF90ICAgICAgICp0eDsNCisgICAgICAgIC8qIEFzc3VtZSBmcmFnbWVudHMg Zm9yIG5vdyAqLw0KKyAgICAgICAgcHRsX2tpb3ZfdCAgICAgICpraW92ID0g ZndkLT5rcHJmZF9raW92OyAvKiBQYXlsb2FkIGZyYWdtZW50IGxpc3QgKi8N CisgICAgICAgIGludCAgICAgICAgICAgICAgbmlvdiA9IGZ3ZC0+a3ByZmRf bmlvdjsgLyogTnVtYmVyIG9mIGZyYWdtZW50cyAqLw0KKyAgICAgICAgaW50 ICAgICAgICAgICAgICBub2IgID0gZndkLT5rcHJmZF9ub2I7ICAvKiBOdW1i ZXIgT2YgQnl0ZXMgb2YgcGF5bG9hZCAqLw0KKyAgICAgICAgcHRsX25pZF90 ICAgICAgICBuaWQgID0gZndkLT5rcHJmZF9nYXRld2F5X25pZDsNCisgICAg ICAgIGludCAgICAgICAgICAgICAgYWNjZXNzOyAgICAgICAgICAgICAgICAg LyogRm9yIGtpYm5hbF9tYXBfa2lvdiAqLw0KKyAgICAgICAga2liX3BlZXJf dCAgICAgKnBlZXI7DQorICAgICAgICBraWJfY29ubl90ICAgICAqY29ubjsN CisgICAgICAgIHJ3bG9ja190ICAgICAgICAqZ19sb2NrID0gJmtpYm5hbF9k YXRhLmtpYl9nbG9iYWxfbG9jazsNCisgICAgICAgIHN0cnVjdCBraWJfcmRt YWZ3ZG1hdGNoICptYjsNCisgICAgICAgIGtpYl9tc2dfdCAgICAgICppYm1z ZzsNCisgICAgICAgIHB0bF9oYW5kbGVfd2lyZV90ICp3bWQ7DQorDQorICAg ICAgICBDREVCVUcgKERfTkVULCAiZm9yd2FyZGluZyBbJXBdIHRvICJMUFg2 NCIsIHBheWxvYWQ6IG5pb3YgJWQgYnl0ZXMgJWRcbiIsDQorICAgICAgICAg ICAgICAgIGZ3ZCwgbmlkLCBuaW92LCBub2IpOw0KKw0KKyAgICAgICAgQ0RF QlVHIChEX05FVCwgInBvcnRhbHMgcGF5bG9hZCBsZW4gJWQgJWRcbiIsDQor ICAgICAgICAgICAgICAgIGZ3ZC0+a3ByZmRfaGRyLT5wYXlsb2FkX2xlbmd0 aCwgDQorICAgICAgICAgICAgICAgIGxlMzJfdG9fY3B1KGZ3ZC0+a3ByZmRf aGRyLT5wYXlsb2FkX2xlbmd0aCkpOw0KKyAgICAgICAgDQorICAgICAgICB0 eCA9IGtpYm5hbF9nZXRfaWRsZV90eChmd2QsIDApOw0KKyAgICAgICAgaWYg KHR4ID09IE5VTEwpICAgICAvKiBDYW4ndCBnZXQgY3R4IHJpZ2h0IG5vdyAq Lw0KKyAgICAgICAgICAgICAgICByZXR1cm47ICAgICAgLyogZndkIHdpbGwg YmUgc2NoZWR1bGVkIHdoZW4gY3R4IGlzIGZyZWVkICovDQorICAgICAgICAN CisgICAgICAgIGlmIChuaWQgPT0ga2libmFsX2xpYi5saWJuYWxfbmkubmlf cGlkLm5pZCkgLyogR2F0ZXdheSBpcyBtZSAqLw0KKyAgICAgICAgICAgICAg ICBuaWQgPSBmd2QtPmtwcmZkX3RhcmdldF9uaWQ7ICAgICAgICAvKiB0aGVu IG91ciB0YXJnZXQgaXMgdGhlIGZpbmFsIGRlc3QgKi8NCisgICAgICAgIA0K KyAgICAgICAgQ0RFQlVHIChEX05FVCwgImdvdCBpZGxlX3R4IFslcF0sIHRh cmdldG5pZCAiTFBYNjQiXG4iLA0KKyAgICAgICAgICAgICAgICB0eCwgbmlk KTsNCisgICAgICAgIA0KKyAgICAgICAgdHgtPnR4X2Z3ZCA9IGZ3ZDsNCisN CisgICAgICAgIHJlYWRfbG9jayAoZ19sb2NrKTsgICAgICAgICAgICAgIA0K KyAgICAgICAgaWYgKCAocGVlciA9IGtpYm5hbF9nZXRfcGVlcihuaWQpKSA9 PSBOVUxMICkgIHsNCisgICAgICAgICAgICAgICAgQ0VSUk9SKCJDYW4ndCBm b3J3YXJkIFslcF0gdG8gIkxQWDY0Ijogbm90IGEgcGVlclxuIiwNCisgICAg ICAgICAgICAgICAgICAgICAgIGZ3ZCwgbmlkKTsNCisgICAgICAgICAgICAg ICAgcmVhZF91bmxvY2sgKGdfbG9jayk7DQorICAgICAgICAgICAgICAgIHJj ID0gLUVIT1NUVU5SRUFDSDsNCisgICAgICAgICAgICAgICAgZ290byBvdXQ7 DQorICAgICAgICB9DQorICAgICAgICAvKiBtYXAgdGhlIGNvbm4gdG8gcHJv dmlkZSBhY2Nlc3MgdG8gdGhlIG1hdGNoYnVmZmVycyAqLw0KKyAgICAgICAg aWYgKCAoY29ubiA9IGtpYm5hbF9maW5kX2Nvbm5fbG9ja2VkIChwZWVyKSkg ID09IE5VTEwgKSB7IA0KKyAgICAgICAgICAgICAgICBDV0FSTigiQ2FuJ3Qg cmRtYSBmd2QgdG8gbmlkICJMUFg2NCIgKHlldCkgOiBubyBjb25uZWN0aW9u IFxuIiwgbmlkKTsNCisgICAgICAgIH0NCisgICAgICAgIHJlYWRfdW5sb2Nr IChnX2xvY2spOw0KKw0KKyAgICAgICAgc3dpdGNoKGxlMzJfdG9fY3B1KGZ3 ZC0+a3ByZmRfaGRyLT50eXBlKSkgeyANCisgICAgICAgIGRlZmF1bHQ6DQor ICAgICAgICAgICAgICAgIENERUJVRyhEX05FVCwgIlBUTF9NU0dfJWQgKGNv bm4gJXApIChub2IgJWQpXG4iLCANCisgICAgICAgICAgICAgICAgICAgICAg IGxlMzJfdG9fY3B1KGZ3ZC0+a3ByZmRfaGRyLT50eXBlKSwgY29ubiwgbm9i KTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorDQorICAgICAgICBjYXNl IFBUTF9NU0dfR0VUOg0KKyAgICAgICAgICAgICAgICBDREVCVUcoRF9ORVQs ICJQVExfTVNHX0dFVCAoY29ubiAlcCkgKG5vYiAlZClcbiIsIA0KKyAgICAg ICAgICAgICAgICAgICAgICAgY29ubiwgbm9iKTsNCisgICAgICAgICAgICAg ICAgYnJlYWs7ICAgDQorDQorICAgICAgICBjYXNlIFBUTF9NU0dfUFVUOg0K KyAgICAgICAgICAgICAgICBDREVCVUcoRF9ORVQsICJQVExfTVNHX1BVVCAo Y29ubiAlcCkgKG5vYiAlZClcbiIsIA0KKyAgICAgICAgICAgICAgICAgICAg ICAgY29ubiwgbm9iKTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorDQor ICAgICAgICBjYXNlIFBUTF9NU0dfUkVQTFk6DQorICAgICAgICAgICAgICAg IHdtZCA9ICZmd2QtPmtwcmZkX2hkci0+bXNnLnJlcGx5LmRzdF93bWQ7DQor DQorICAgICAgICAgICAgICAgIENERUJVRyhEX05FVCwgIlBUTF9NU0dfUkVQ TFkgKGNvbm4gJXApIChub2IgJWQpIChpYyAiTFBYNjQiKSAob2MgIkxQWDY0 IilcbiIsIA0KKyAgICAgICAgICAgICAgICAgICAgICAgY29ubiwgbm9iLCAN CisgICAgICAgICAgICAgICAgICAgICAgIHdtZC0+d2hfaW50ZXJmYWNlX2Nv b2tpZSwgDQorICAgICAgICAgICAgICAgICAgICAgICB3bWQtPndoX29iamVj dF9jb29raWUpOw0KKw0KKyAgICAgICAgICAgICAgICAvKiBubyByZG1hIGlm IHRoZSBtc2cgaXMgc21hbGwgb3IgaWYgdGhlcmUgaXMgbm8gICAqDQorICAg ICAgICAgICAgICAgICAqICBjb25uZWN0aW9uIHRvIHRoZSB0YXJnZXQgICAg ICAgICAgICAgICAgICAgICAgICovDQorICAgICAgICAgICAgICAgIGlmICgg KG5vYiA8IElCTkFMX01TR19TSVpFKSB8fCAoY29ubiA9PSBOVUxMKSApIA0K KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKw0KKyAgICAgICAg ICAgICAgICAvKiB0aGVyZSBzaG91bGQgYmUgYSBtYXRjaGJ1ZiBmb3IgdGhp cyByZG1hIHJlcGx5ICovDQorICAgICAgICAgICAgICAgIG1iID0gbG9va3Vw X21hdGNoYnVmKGNvbm4sIHdtZCk7DQorICAgICAgICAgICAgICAgIA0KKyAg ICAgICAgICAgICAgICBpZiAoIG1iID09IE5VTEwgKSB7IA0KKyAgICAgICAg ICAgICAgICAgICAgICAgIENFUlJPUigiY291bGRuJ3QgbWF0Y2ggR0VUIG9j ICJMUFg2NCJcbiIsIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB3bWQtPndoX29iamVjdF9jb29raWUpOyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgDQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBv dXQ7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgLyog d2Ugb25seSBtYXRjaCBQVExfR0VUX01TRyAgKi8NCisgICAgICAgICAgICAg ICAgTEFTU0VSVChtYi0+bWF0Y2hfdHlwZSA9PSBQVExfTVNHX0dFVCk7DQor ICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICBhY2Nlc3MgPSBJ Ql9BQ0NFU1NfUkVNT1RFX1dSSVRFOw0KKyAgICAgICAgICAgICAgICANCisg ICAgICAgICAgICAgICAgcmMgPSBraWJuYWxfbWFwX2tpb3YgKHR4LCBhY2Nl c3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bmlvdiwga2lvdiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAwLCBub2IpOw0KKyAgICAgICAgICAgICAgICANCisgICAgICAg ICAgICAgICAgaWYgKHJjICE9IDApIHsNCisgICAgICAgICAgICAgICAgICAg ICAgICBDRVJST1IgKCJDYW4ndCBtYXAgUkRNQSBmb3IgIkxQWDY0IjogJWRc biIsIG5pZCwgcmMpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8g b3V0Ow0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIA0K KyAgICAgICAgICAgICAgICB0eC0+dHhfZ2xbMF0gPSAoc3RydWN0IGliX2dh dGhlcl9zY2F0dGVyKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgLmFk ZHJlc3MgPSB0eC0+dHhfbWQubWRfYWRkciwNCisgICAgICAgICAgICAgICAg ICAgICAgICAubGVuZ3RoICA9IG5vYiwNCisgICAgICAgICAgICAgICAgICAg ICAgICAua2V5ICAgICA9IHR4LT50eF9tZC5tZF9sa2V5LA0KKyAgICAgICAg ICAgICAgICB9Ow0KKyAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAg ICAgdHgtPnR4X3NwWzBdID0gKHN0cnVjdCBpYl9zZW5kX3BhcmFtKSB7DQor ICAgICAgICAgICAgICAgICAgICAgICAgLndvcmtfcmVxdWVzdF9pZCAgICAg ID0gKF9fdTY0KSgodW5zaWduZWQgbG9uZyl0eCksDQorICAgICAgICAgICAg ICAgICAgICAgICAgLm9wICAgICAgICAgICAgICAgICAgID0gSUJfT1BfUkRN QV9XUklURSwNCisgICAgICAgICAgICAgICAgICAgICAgICAuZ2F0aGVyX2xp c3QgICAgICAgICAgPSAmdHgtPnR4X2dsWzBdLA0KKyAgICAgICAgICAgICAg ICAgICAgICAgIC5udW1fZ2F0aGVyX2VudHJpZXMgICA9IDEsDQorICAgICAg ICAgICAgICAgICAgICAgICAgLnJlbW90ZV9hZGRyZXNzICAgICAgID0gbWIt PmFkZHIsDQorICAgICAgICAgICAgICAgICAgICAgICAgLnJrZXkgICAgICAg ICAgICAgICAgID0gbWItPnJrZXksDQorICAgICAgICAgICAgICAgICAgICAg ICAgLmRldmljZV9zcGVjaWZpYyAgICAgID0gTlVMTCwNCisgICAgICAgICAg ICAgICAgICAgICAgICAuc29saWNpdGVkX2V2ZW50ICAgICAgPSAwLA0KKyAg ICAgICAgICAgICAgICAgICAgICAgIC5zaWduYWxlZCAgICAgICAgICAgICA9 IDEsDQorICAgICAgICAgICAgICAgICAgICAgICAgLmltbWVkaWF0ZV9kYXRh X3ZhbGlkID0gMCwNCisgICAgICAgICAgICAgICAgICAgICAgICAuZmVuY2Ug ICAgICAgICAgICAgICAgPSAwLA0KKyAgICAgICAgICAgICAgICAgICAgICAg IC5pbmxpbmVfZGF0YSAgICAgICAgICA9IDAsDQorICAgICAgICAgICAgICAg IH07DQorICAgICAgICAgICAgICAgIHR4LT50eF9uc3AgPSAxOw0KKyAgICAg ICAgDQorICAgICAgICAgICAgICAgIC8qIGxpYm1zZyBnZXRzIGZpbmFsaXpl ZCB3aGVuIHR4IGNvbXBsZXRlcy4gKi8NCisgICAgICAgICAgICAgICAgdHgt PnR4X2xpYm1zZ1swXSA9IE5VTEw7DQorDQorICAgICAgICAgICAgICAgIC8v aWJtc2cgPSB0eC0+dHhfbXNnOyAgICAgICAgICAgICAgICANCisgICAgICAg ICAgICAgICAgdHgtPnR4X21zZy0+aWJtX3UuY29tcGxldGlvbi5pYmNtX2Nv b2tpZSA9IG1iLT5jb29raWU7ICAgICAgICANCisgICAgICAgICAgICAgICAg dHgtPnR4X21zZy0+aWJtX3UuY29tcGxldGlvbi5pYmNtX3N0YXR1cyA9IDA7 ICAgICAgICANCisNCisgICAgICAgICAgICAgICAgQ0RFQlVHKERfTkVULCAi QWN0aXZlIFJETUEgR0VUX0RPTkUgRlc6ICVwIGNvb2tpZSAiTFBYNjQiLCBr ZXkgJXgsIGFkZHIgIg0KKyAgICAgICAgICAgICAgICAgICAgICAgTFBYNjQi LCBub2IgJWRcbiIsDQorICAgICAgICAgICAgICAgICAgICAgICB0eCwgdHgt PnR4X21zZy0+aWJtX3UuY29tcGxldGlvbi5pYmNtX2Nvb2tpZSwgDQorICAg ICAgICAgICAgICAgICAgICAgICBtYi0+cmtleSwgbWItPmFkZHIsIG5vYik7 DQorDQorICAgICAgICAgICAgICAgIC8qIGdldCByaWQgb2YgdGhlIG1hdGNo YnVmZmVyICovDQorICAgICAgICAgICAgICAgIGZyZWVfbWF0Y2hidWYobWIp Ow0KKyAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICBraWJuYWxf aW5pdF90eF9tc2cgKHR4LCBJQk5BTF9NU0dfR0VUX0RPTkUsIA0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YgKGtpYl9j b21wbGV0aW9uX21zZ190KSk7DQorDQorICAgICAgICAgICAgICAgIC8qIG5v dCBzdXJlIHdoaWNoIG9uZSB0byB1c2UuLg0KKyAgICAgICAgICAgICAgICAg KiBpIHRoaW5rIHF1ZXVlX3R4IGlzIHRoZSBiZXR0ZXIgY2hvaWNlIGJ1dCBp dCBjcmFzaGVzDQorICAgICAgICAgICAgICAgICAqIHdoZW4gdXNlZCBoZXJl ICovDQorDQorICAgICAgICAgICAgICAgIC8va2libmFsX3F1ZXVlX3R4KHR4 LCBjb25uKTsNCisgICAgICAgICAgICAgICAga2libmFsX2xhdW5jaF90eCh0 eCwgbmlkKTsNCisgICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAg fQ0KKw0KKyAgICAgICAgLy8gb25seSBzbWFsbCBtc2dzIGZyb20gaGVyZS4u DQorICAgICAgICBDREVCVUcoRF9ORVQsICJJbW1lZGlhdGUgTXNnIEZXOiB0 eCAlcCBub2IgJWRcbiIsIHR4LCBub2IpOw0KKyAgICAgICAgDQorICAgICAg ICBhY2Nlc3MgPSBJQl9BQ0NFU1NfUkVNT1RFX1dSSVRFIHwgSUJfQUNDRVNT X0xPQ0FMX1dSSVRFOyAgICAgICAgICAgICAgICANCisgICAgICAgIA0KKyAg ICAgICAgaWJtc2cgPSB0eC0+dHhfbXNnOyAgICAgICAgIA0KKyAgICAgICAg aWJtc2ctPmlibV91LmltbWVkaWF0ZS5pYmltX2hkciA9ICpmd2QtPmtwcmZk X2hkcjsNCisgICAgICAgIA0KKyAgICAgICAgaWYgKG5vYiA+IDApIHsNCisg ICAgICAgICAgICAgICAgcmMgPSBraWJuYWxfbWFwX2tpb3YgKHR4LCBhY2Nl c3MsIG5pb3YsIGtpb3YsIDAsIG5vYik7ICAgICAgICAgICAgICAgIA0KKyAg ICAgICAgICAgICAgICBpZiAocmMgIT0gMCkgZ290byBvdXQ7DQorICAgICAg ICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICBMQVNTRVJUKGtpb3YgPiAw KTsNCisgICAgICAgICAgICAgICAgbGliX2NvcHlfa2lvdjJidWYoaWJtc2ct PmlibV91LmltbWVkaWF0ZS5pYmltX3BheWxvYWQsDQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG5pb3YsIGtpb3YsIDAsIG5vYik7IC8v IG9mZnNldCA9PSAwPz8NCisgICAgICAgIH0NCisgICAgICAgIA0KKyAgICAg ICAga2libmFsX2luaXRfdHhfbXNnICh0eCwgSUJOQUxfTVNHX0lNTUVESUFU RSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldG9mKGtp Yl9pbW1lZGlhdGVfbXNnX3QsIA0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaWJpbV9wYXlsb2FkW25vYl0pKTsNCisgICAgICAg IA0KKyAgICAgICAgLy9raWJuYWxfcXVldWVfdHgodHgsIGNvbm4pOw0KKyAg ICAgICAga2libmFsX2xhdW5jaF90eCh0eCwgbmlkKTsNCisgICAgICAgIA0K KyBvdXQ6DQorICAgICAgICBpZiAocmMgIT0gMCkgew0KKyAgICAgICAgICAg ICAgICBDRVJST1IgKCJGYWlsZWQgdG8gZm9yd2FyZCBbJXBdIHRvICJMUFg2 NCI6ICVkXG4iLCBmd2QsIG5pZCwgcmMpOw0KKyAgICAgICAgICAgICAgICAN CisgICAgICAgICAgICAgICAgLyogY29tcGxldGUgbm93IHdpdGggZmFpbHVy ZSAqLw0KKyAgICAgICAgICAgICAgICB0eC0+dHhfc3RhdHVzID0gcmM7DQor ICAgICAgICAgICAgICAgIGtpYm5hbF90eF9kb25lKHR4KTsNCisgICAgICAg IH0NCisgICAgICAgIC8qIFdlIGRvbid0IHVzZSBwZW5kaW5nX3R4cyBpbiBJ QiAqLw0KKyAgICAgICAgLyogICAgICAgIGF0b21pY19kZWMoJmtpYm5hbF9k YXRhLmtpYl9wZW5kaW5nX3R4cyk7ICovDQorfQ0KKw0KKw0KKw0KIHB0bF9l cnJfdA0KIGtpYm5hbF9yZWN2bXNnIChsaWJfbmFsX3QgKm5hbCwgdm9pZCAq cHJpdmF0ZSwgbGliX21zZ190ICpsaWJtc2csDQogICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBpbnQgbmlvdiwgc3RydWN0IGlvdmVjICppb3YsIHB0bF9r aW92X3QgKmtpb3YsDQpAQCAtMjQ3Nyw2ICszMDA1LDcgQEANCiAgICAgICAg IGNoYXIgICAgICAgICAgICBuYW1lWzE2XTsNCiAgICAgICAgIGtpYl9yeF90 ICAgICAgICpyeDsNCiAgICAgICAgIGtpYl90eF90ICAgICAgICp0eDsNCisg ICAgICAgIGtwcl9md2RfZGVzY190ICpmd2Q7DQogICAgICAgICB1bnNpZ25l ZCBsb25nICAgZmxhZ3M7DQogICAgICAgICBpbnQgICAgICAgICAgICAgcmM7 DQogICAgICAgICBpbnQgICAgICAgICAgICAgY291bnRlciA9IDA7DQpAQCAt MjQ5Nyw2ICszMDI2LDcgQEANCiAgICAgICAgICAgICAgICAgICAgICAgICBs aXN0X2RlbCgmdHgtPnR4X2xpc3QpOw0KICAgICAgICAgICAgICAgICAgICAg ICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmtpYm5hbF9kYXRhLmtpYl9z Y2hlZF9sb2NrLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZmxhZ3MpOw0KKyAgICAgICAgICAgICAgICAgICAg ICAgIENERUJVRyhEX05FVCwgInBlcmZvcm1pbmcgdHhfZG9uZSAlcFxuIiwg dHgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgIGtpYm5hbF90eF9kb25l KHR4KTsNCiANCiAgICAgICAgICAgICAgICAgICAgICAgICBzcGluX2xvY2tf aXJxc2F2ZSgma2libmFsX2RhdGEua2liX3NjaGVkX2xvY2ssDQpAQCAtMjUx Nyw2ICszMDQ3LDIwIEBADQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZmxhZ3MpOw0KICAgICAgICAgICAgICAgICB9DQog DQorICAgICAgICAgICAgICAgIGlmICghbGlzdF9lbXB0eSAoJmtpYm5hbF9k YXRhLmtpYl9kZWxheWVkZndkcykpIHsNCisgICAgICAgICAgICAgICAgICAg ICAgICBmd2QgPSBsaXN0X2VudHJ5IChraWJuYWxfZGF0YS5raWJfZGVsYXll ZGZ3ZHMubmV4dCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBrcHJfZndkX2Rlc2NfdCwga3ByZmRfbGlzdCk7DQorICAg ICAgICAgICAgICAgICAgICAgICAgbGlzdF9kZWwgKCZmd2QtPmtwcmZkX2xp c3QpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNwaW5fdW5sb2NrX2ly cXJlc3RvcmUgKCZraWJuYWxfZGF0YS5raWJfc2NoZWRfbG9jaywNCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm bGFncyk7DQorICAgICAgICAgICAgICAgICAgICAgICAgLyogSWYgc2h1dHRp bmcgZG93biwganVzdCByZXF1ZXVlIGZ3ZCBvbiBraWJfaWRsZV90eF9md2Rx ICovDQorICAgICAgICAgICAgICAgICAgICAgICAgQ0RFQlVHKERfTkVULCAi cHJvY2Vzc2luZyBkZWxheWVkZndkICVwXG4iLCBmd2QpOw0KKyAgICAgICAg ICAgICAgICAgICAgICAgIGtpYm5hbF9md2RfcGFja2V0IChOVUxMLCBmd2Qp Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAg ICAgICAgICAgIGRpZF9zb21ldGhpbmcgPSAxOw0KKyAgICAgICAgICAgICAg ICAgICAgICAgIHNwaW5fbG9ja19pcnFzYXZlICgma2libmFsX2RhdGEua2li X3NjaGVkX2xvY2ssIGZsYWdzKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAg ICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgLyogbm90aGluZyB0 byBkbyBvciBob2dnaW5nIENQVSAqLw0KICAgICAgICAgICAgICAgICBpZiAo IWRpZF9zb21ldGhpbmcgfHwgY291bnRlcisrID09IElCTkFMX1JFU0NIRUQp IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICBzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZraWJuYWxfZGF0YS5raWJfc2NoZWRfbG9jaywNCkBAIC0yNTI4 LDYgKzMwNzIsNyBAQA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBraWJuYWxfZGF0YS5raWJfc2NoZWRfd2FpdHEsDQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFsaXN0X2Vt cHR5KCZraWJuYWxfZGF0YS5raWJfc2NoZWRfdHhxKSB8fCANCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWxpc3RfZW1wdHko JmtpYm5hbF9kYXRhLmtpYl9zY2hlZF9yeHEpIHx8IA0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbGlzdF9lbXB0eSgma2li bmFsX2RhdGEua2liX2RlbGF5ZWRmd2RzKSB8fA0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBraWJuYWxfZGF0YS5raWJfc2h1 dGRvd24pOw0KICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXJfY29uZF9yZXNj aGVkKCk7DQotLS0gb3BlbmlibmFsLm9yaS9vcGVuaWJuYWwuaAkyMDA1LTEw LTMxIDE1OjIxOjE2LjAwMDAzNTYwNSAtMDUwMA0KKysrIG9wZW5pYm5hbC5y b3V0ZXIvb3BlbmlibmFsLmgJMjAwNS0xMC0zMSAxNToxODo1MC4xMjI0NTc1 MTEgLTA1MDANCkBAIC00LDYgKzQsMTEgQEANCiAgKiBDb3B5cmlnaHQgKEMp IDIwMDQgQ2x1c3RlciBGaWxlIFN5c3RlbXMsIEluYy4NCiAgKiAgIEF1dGhv cjogRXJpYyBCYXJ0b24gPGVyaWNAYmFydG9uc29mdHdhcmUuY29tPg0KICAq DQorICogICBSb3V0aW5nIEhvb2tzIGFkZGVkIGJ5IFBpdHRzYnVyZ2ggU3Vw ZXJjb21wdXRpbmcgQ2VudGVyICgyMDA1KQ0KKyAqICAgICAtIFBhdWwgTm93 b2N6eW5za2kNCisgKiAgICAgLSBTcGVuY2VyIFdoaXRtYW4NCisgKiAgICAg LSBKb2UgRGFtYXRvDQorICoNCiAgKiAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9m IEx1c3RyZSwgaHR0cDovL3d3dy5sdXN0cmUub3JnLg0KICAqDQogICogICBM dXN0cmUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yDQpAQCAtNTQsNiArNTksNyBAQA0KICNkZWZpbmUgREVCVUdf U1VCU1lTVEVNIFNfTkFMDQogDQogI2luY2x1ZGUgPGxpYmNmcy9rcDMwLmg+ DQorI2luY2x1ZGUgPHBvcnRhbHMva3ByLmg+DQogI2luY2x1ZGUgPHBvcnRh bHMvcDMwLmg+DQogI2luY2x1ZGUgPHBvcnRhbHMvbGliLXAzMC5oPg0KICNp bmNsdWRlIDxwb3J0YWxzL25hbC5oPg0KQEAgLTEyMSw2ICsxMjcsOCBAQA0K IC8vI2RlZmluZSBJQk5BTF9DQUxMQkFDS19DVFhUICBJQl9DUV9DQUxMQkFD S19QUk9DRVNTDQogI2RlZmluZSBJQk5BTF9DQUxMQkFDS19DVFhUICBJQl9D UV9DQUxMQkFDS19JTlRFUlJVUFQNCiANCisjZGVmaW5lIElCX0hEUl9TWiBz aXplb2YgKHB0bF9oZHJfdCkNCisNCiB0eXBlZGVmIHN0cnVjdA0KIHsNCiAg ICAgICAgIGludCAgICAgICAgICAgICAgIGtpYl9pb190aW1lb3V0OyAgICAg ICAvKiBjb21tcyB0aW1lb3V0IChzZWNvbmRzKSAqLw0KQEAgLTE5MCw2ICsx OTgsMjQgQEANCiAgICAgICAgIF9fdTY0ICAgICAgICAgICAgIGtpYl9uZXh0 X3R4X2Nvb2tpZTsgICAvKiBSRE1BIGNvbXBsZXRpb24gY29va2llICovDQog ICAgICAgICBzcGlubG9ja190ICAgICAgICBraWJfdHhfbG9jazsgICAgICAg ICAgLyogc2VyaWFsaXNlICovDQogDQorICAgICAgICB3YWl0X3F1ZXVlX2hl YWRfdCBraWJfZndkYnVmX3NtYWxscTsgICAgICAgICAvKiBibG9jayBoZXJl IGZvciBhIGZvcndhcmQgYnVmZmVyICovDQorICAgICAgICB3YWl0X3F1ZXVl X2hlYWRfdCBraWJfZndkYnVmX2xhcmdlcTsgICAgICAgICAvKiBibG9jayBo ZXJlIGZvciBhIGZvcndhcmQgYnVmZmVyICovDQorICAgICAgICBzdHJ1Y3Qg bGlzdF9oZWFkICBraWJfZndkYnVmX3NtYWxsX2xpc3Q7ICAgICAvKiBhdmFp bGFibGUgNEtCIGZ3ZCBidWZmZXJzICovDQorICAgICAgICBzdHJ1Y3QgbGlz dF9oZWFkICBraWJfZndkYnVmX2xhcmdlX2xpc3Q7ICAgICAvKiBhdmFpbGFi bGUgMU1CIGZ3ZCBidWZmZXJzICovDQorICAgICAgICBhdG9taWNfdCAgICAg ICAgICBraWJfbnVtX2Z3ZGJ1ZnM7ICAgICAvKiB0aGUgbnVtYmVyIG9mIGZ3 ZCBidWZmZXJzIGFsbG9jYXRlZCAqLw0KKyAgICAgICAgc3BpbmxvY2tfdCAg ICAgICAga2liX2Z3ZGJ1Zl9sb2NrOyAgICAgLyogc2VyaWFsaXNlICovDQor ICAgICAgICB1bnNpZ25lZCBsb25nICAgICBraWJfZndkYnVmX2xvY2tfZmxh Z3M7DQorDQorICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBraWJfbWF0Y2hi dWZxOyAgICAgICAvKiBibG9jayBoZXJlIGZvciBhbiByZG1hIG1hdGNoIGJ1 ZmZlciAqLw0KKyAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAga2liX21hdGNo YnVmX2xpc3Q7ICAgLyogYXZhaWxhYmxlIG1hdGNoIGJ1ZmZlcnMgKi8NCisg ICAgICAgIGF0b21pY190ICAgICAgICAgIGtpYl9udW1fbWF0Y2hidWZzOw0K KyAgICAgICAgc3BpbmxvY2tfdCAgICAgICAga2liX21hdGNoYnVmX2xvY2s7 ICAgLyogc2VyaWFsaXNlICovDQorICAgICAgICB1bnNpZ25lZCBsb25nICAg ICBraWJfbWF0Y2hidWZfbG9ja19mbGFnczsNCisNCisgICAgICAgIHN0cnVj dCBsaXN0X2hlYWQgIGtpYl9pZGxlX3R4X2Z3ZHE7ICAvKiBmb3J3YXJkZWQg cGFja2V0cyBibG9jayBoZXJlIHdhaXRpbmcgZm9yIGlkbGUgdHggKi8NCisg ICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgIGtpYl9kZWxheWVkZndkczsgICAv KiBkZWxheWVkIGZvcndhcmRzICovDQorICAgICAgICBrcHJfcm91dGVyX3Qg ICAgICBraWJfcm91dGVyOyAgICAgICAgLyogY29ubmVjdGlvbiB0byBLZXJu ZWwgUG9ydGFscyBSb3V0ZXIgbW9kdWxlICovDQorDQogICAgICAgICBzdHJ1 Y3QgaWJfZGV2aWNlICpraWJfZGV2aWNlOyAgICAgICAgICAgLyogInRoZSIg ZGV2aWNlICovDQogICAgICAgICBzdHJ1Y3QgaWJfZGV2aWNlX3Byb3BlcnRp ZXMga2liX2RldmljZV9wcm9wczsgLyogaXRzIHByb3BlcnRpZXMgKi8NCiAg ICAgICAgIGludCAgICAgICAgICAgICAgIGtpYl9wb3J0OyAgICAgICAgICAg ICAvKiBwb3J0IG9uIHRoZSBkZXZpY2UgKi8NCkBAIC0zMTAsNiArMzM2LDE3 IEBADQogI2RlZmluZSBJQk5BTF9NU0dfR0VUX1JETUEgICAgICAgICAgMHhk NCAgICAgICAgLyogcG9ydGFscyBHRVQgaGRyICsgc2luayByZG1hIGRlc2Mg Ki8NCiAjZGVmaW5lIElCTkFMX01TR19HRVRfRE9ORSAgICAgICAgICAweGQ1 ICAgICAgICAvKiBzaWduYWwgR0VUIHJkbWEgY29tcGxldGlvbiAqLw0KIA0K K2VudW0gcnhfbXNnX3R5cGUgew0KKyAgICAgICAgS0lCX1JYX0lNTUVESUFU RSwNCisgICAgICAgIEtJQl9SWF9SRE1BLA0KKyAgICAgICAgS0lCX1JYX0NP TVBMRVRJT04NCit9Ow0KKw0KK2VudW0gZndkYnVmX3R5cGUgew0KKyAgICAg ICAgS0lCX1NNQUxMQlVGID0gMDEsDQorICAgICAgICBLSUJfTEFSR0VCVUYg PSAwMg0KK307DQorDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0K IA0KIHR5cGVkZWYgc3RydWN0IGtpYl9yeCAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8qIHJlY2VpdmUgbWVzc2FnZSAqLw0KQEAgLTMyMCw4ICszNTcs MTMgQEANCiAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgcnhf cG9zdGVkOyAgICAvKiBwb3N0ZWQ/ICovDQogICAgICAgICBfX3U2NCAgICAg ICAgICAgICAgICAgICAgIHJ4X3ZhZGRyOyAgICAgLyogcHJlLW1hcHBlZCBi dWZmZXIgKGhjYSB2YWRkcikgKi8NCiAgICAgICAgIGtpYl9tc2dfdCAgICAg ICAgICAgICAgICAqcnhfbXNnOyAgICAgICAvKiBwcmUtbWFwcGVkIGJ1ZmZl ciAoaG9zdCB2YWRkcikgKi8NCisgICAgICAgIGVudW0gcnhfbXNnX3R5cGUg ICAgICAgICAgcnhfbXNndHlwZTsgICAvKiB3aGF0IGtpbmQgb2YgbXNnIGlz IGluIHJ4X21zZz8gKi8NCisgICAgICAgIGtwcl9md2RfZGVzY190ICAgICAg ICAgICAgcnhfZndkOyAgICAgICAvKiBlbWJlZGRlZCBmb3J3YXJkaW5nIGRl c2NyaXB0b3IgKi8NCisNCiAgICAgICAgIHN0cnVjdCBpYl9yZWNlaXZlX3Bh cmFtICAgcnhfc3A7ICAgICAgICAvKiByZWNlaXZlIHdvcmsgaXRlbSAqLw0K ICAgICAgICAgc3RydWN0IGliX2dhdGhlcl9zY2F0dGVyICByeF9nbDsgICAg ICAgIC8qIGFuZCBpdCdzIG1lbW9yeSAqLw0KKyAgICAgICAgc3RydWN0IGtp Yl9md2RidWYgICAgICAgICpyeF9md2RidWY7ICAgIC8qIGFkZHJlc3Mgb2Yg dGhlIGZvcndhcmQgYnVmZmVyICovDQorDQogfSBraWJfcnhfdDsNCiANCiB0 eXBlZGVmIHN0cnVjdCBraWJfdHggICAgICAgICAgICAgICAgICAgICAgICAg ICAvKiB0cmFuc21pdCBtZXNzYWdlICovDQpAQCAtMzQxLDYgKzM4Myw4IEBA DQogICAgICAgICBfX3U2NCAgICAgICAgICAgICAgICAgICAgIHR4X3ZhZGRy OyAgICAgLyogcHJlLW1hcHBlZCBidWZmZXIgKGhjYSB2YWRkcikgKi8NCiAg ICAgICAgIGtpYl9tc2dfdCAgICAgICAgICAgICAgICAqdHhfbXNnOyAgICAg ICAvKiBwcmUtbWFwcGVkIGJ1ZmZlciAoaG9zdCB2YWRkcikgKi8NCiAgICAg ICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgdHhfbnNwOyAgICAgICAv KiAjIHNlbmQgd29yayBpdGVtcyAqLw0KKyAgICAgICAga3ByX2Z3ZF9kZXNj X3QgICAgICAgICAgICp0eF9md2Q7ICAgICAgIC8qIEZvciBmb3J3YXJkaW5n IHBhY2tldHMgb25seSAqLw0KKw0KICAgICAgICAgc3RydWN0IGliX3NlbmRf cGFyYW0gICAgICB0eF9zcFsyXTsgICAgIC8qIHNlbmQgd29yayBpdGVtcy4u LiAqLw0KICAgICAgICAgc3RydWN0IGliX2dhdGhlcl9zY2F0dGVyICB0eF9n bFsyXTsgICAgIC8qIC4uLmFuZCB0aGVpciBtZW1vcnkgKi8NCiB9IGtpYl90 eF90Ow0KQEAgLTM0OCw2ICszOTIsMzUgQEANCiAjZGVmaW5lIEtJQl9UWF9V Tk1BUFBFRCAgICAgICAwDQogI2RlZmluZSBLSUJfVFhfTUFQUEVEICAgICAg ICAgMQ0KICNkZWZpbmUgS0lCX1RYX01BUFBFRF9GTVIgICAgIDINCisjZGVm aW5lIEtJQl9UWF9GT1JXQVJESU5HICAgICAzDQorDQorI2RlZmluZSBNQVhf RldEQlVGUyAgICAgICAgICAgMTAyNCAvKiAxMDI4IE1CICovDQorI2RlZmlu ZSBNQVhfTUFUQ0hCVUZTICAgICAgICAgMTAyNCAvKiBzbWFsbC4uIH42NGsg Ki8gDQorDQordHlwZWRlZiBzdHJ1Y3Qga2liX2Z3ZGJ1Zg0KK3sNCisgICAg ICAgIHB0bF9raW92X3QgICAgICAgZndkYnVmX2tpb3ZyZG1hW1BUTF9NRF9N QVhfSU9WXTsNCisgICAgICAgIHB0bF9raW92X3QgICAgICAgZndkYnVmX2tp b3ZpbW07DQorICAgICAgICBzcGlubG9ja190ICAgICAgIGZ3ZGJ1Zl9sb2Nr Ow0KKyAgICAgICAgdW5zaWduZWQgbG9uZyAgICBmd2RidWZfZmxhZ3M7DQor ICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGZ3ZGJ1Zl9zbWFsbG1zZ19saXN0 Ow0KKyAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBmd2RidWZfbGFyZ2Vtc2df bGlzdDsNCit9IGtpYl9md2RidWY7DQorDQordHlwZWRlZiBzdHJ1Y3Qga2li X3JkbWFmd2RtYXRjaA0KK3sNCisgICAgICAgIHB0bF9oYW5kbGVfd2lyZV90 IG1hdGNoX3dtZDsNCisgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgIG1hdGNo X2xpc3Q7DQorICAgICAgICBpbnQgICAgICAgICAgICAgICBtYXRjaF9pbnVz ZToxOw0KKyAgICAgICAgaW50ICAgICAgICAgICAgICAgbWF0Y2hfdHlwZTo3 Ow0KKyAgICAgICAgc3BpbmxvY2tfdCAgICAgICAgbWF0Y2hidWZfbG9jazsN CisgICAgICAgIHVuc2lnbmVkIGxvbmcgICAgIG1hdGNoYnVmX2ZsYWdzOw0K KyAgICAgICAgLy8gb3BlbmliIHNwZWNpZmljDQorICAgICAgICBfX3U2NCAg ICAgICAgICAgICBjb29raWU7DQorICAgICAgICBfX3U2NCAgICAgICAgICAg ICBhZGRyOw0KKyAgICAgICAgX191MzIgICAgICAgICAgICAgcmtleTsNCisN Cit9IGtpYl9yZG1hZndkbWF0Y2g7DQogDQogdHlwZWRlZiBzdHJ1Y3Qga2li X2Nvbm5yZXENCiB7DQpAQCAtMzYxLDYgKzQzNCw3IEBADQogICAgICAgICBz dHJ1Y3QgaWJfY21fYWN0aXZlX3BhcmFtICBjcl9jb25ucGFyYW07DQogfSBr aWJfY29ubnJlcV90Ow0KIA0KKw0KIHR5cGVkZWYgc3RydWN0IGtpYl9jb25u DQogew0KICAgICAgICAgc3RydWN0IGtpYl9wZWVyICAgICppYmNfcGVlcjsg ICAgICAgICAgIC8qIG93bmluZyBwZWVyICovDQpAQCAtMzgxLDYgKzQ1NSw5 IEBADQogICAgICAgICBfX3UzMiAgICAgICAgICAgICAgIGliY19xcG47ICAg ICAgICAgICAgLyogcXVldWUgcGFpciBudW1iZXIgKi8NCiAgICAgICAgIHRU U19JQl9DTV9DT01NX0lEICAgaWJjX2NvbW1faWQ7ICAgICAgICAvKiBjb25u ZWN0aW9uIElEPyAqLw0KICAgICAgICAga2liX2Nvbm5yZXFfdCAgICAgICpp YmNfY29ubnJlcTsgICAgICAgIC8qIGNvbm5lY3Rpb24gcmVxdWVzdCBzdGF0 ZSAqLw0KKyAgICAgICAgc3BpbmxvY2tfdCAgICAgICAgICBpYmNfcG5kZ19s b2NrOw0KKyAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAgICBpYmNfcG5kZ19y ZG1hZndkczsgIC8qIGluY29tcGxldGVkIGZ3ZCByZG1hIHB1dC9nZXRzICov DQorICAgICAgICBhdG9taWNfdCAgICAgICAgICAgIGliY19udW1tYXRjaGJ1 ZnM7DQogfSBraWJfY29ubl90Ow0KIA0KICNkZWZpbmUgSUJOQUxfQ09OTl9J TklUX05PVEhJTkcgICAgICAwICAgICAgICAgIC8qIGluaXRpYWwgc3RhdGUg Ki8NCkBAIC00MTEsNiArNDg4LDIwIEBADQogZXh0ZXJuIGtpYl9kYXRhX3Qg ICAgICBraWJuYWxfZGF0YTsNCiBleHRlcm4ga2liX3R1bmFibGVzX3QgIGtp Ym5hbF90dW5hYmxlczsNCiANCitzdGF0aWMgaW5saW5lIGludCBsb2NrX2xp c3RfZW1wdHkoc3RydWN0IGxpc3RfaGVhZCAqbGlzdCwgDQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNwaW5sb2NrX3QgKmxvY2spIHsN CisgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7DQorICAgICAgICANCisg ICAgICAgIHNwaW5fbG9ja19pcnFzYXZlIChsb2NrLCBmbGFncyk7DQorICAg ICAgICBpZiAoIGxpc3RfZW1wdHkobGlzdCkgKSB7IA0KKyAgICAgICAgICAg ICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlIChsb2NrLCBmbGFncyk7DQor ICAgICAgICAgICAgICAgIHJldHVybiAxOw0KKyAgICAgICAgfSBlbHNlIHsg DQorICAgICAgICAgICAgICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUgKGxv Y2ssIGZsYWdzKTsNCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7DQorICAg ICAgICB9DQorfQ0KKw0KIHN0YXRpYyBpbmxpbmUgc3RydWN0IGxpc3RfaGVh ZCAqDQoga2libmFsX25pZDJwZWVybGlzdCAocHRsX25pZF90IG5pZCkNCiB7 DQpAQCAtNTMwLDYgKzYyMSw4IEBADQogZXh0ZXJuIGludCBraWJuYWxfYWxs b2NfcGFnZXMgKGtpYl9wYWdlc190ICoqcHAsIGludCBucGFnZXMsIGludCBh Y2Nlc3MpOw0KIGV4dGVybiB2b2lkIGtpYm5hbF9mcmVlX3BhZ2VzIChraWJf cGFnZXNfdCAqcCk7DQogDQorZXh0ZXJuIGtpYl9wZWVyX3QgKmtpYm5hbF9n ZXRfcGVlciAocHRsX25pZF90IG5pZCk7DQorDQogZXh0ZXJuIHZvaWQga2li bmFsX2NoZWNrX3NlbmRzIChraWJfY29ubl90ICpjb25uKTsNCiANCiBleHRl cm4gdFRTX0lCX0NNX0NBTExCQUNLX1JFVFVSTg0KQEAgLTU0Niw2ICs2Mzks MTAgQEANCiBleHRlcm4gdm9pZCBraWJuYWxfZGVzdHJveV9jb25uIChraWJf Y29ubl90ICpjb25uKTsNCiBleHRlcm4gaW50ICBraWJuYWxfdGhyZWFkX3N0 YXJ0IChpbnQgKCpmbikodm9pZCAqYXJnKSwgdm9pZCAqYXJnKTsNCiBleHRl cm4gaW50ICBraWJuYWxfc2NoZWR1bGVyKHZvaWQgKmFyZyk7DQorDQorZXh0 ZXJuIHZvaWQga2libmFsX2Z3ZF9wYWNrZXQgKHZvaWQgKmFyZywga3ByX2Z3 ZF9kZXNjX3QgKmZ3ZCk7DQorZXh0ZXJuIHZvaWQga2libmFsX2Z3ZF9jYWxs YmFjayAodm9pZCAqYXJnLCBpbnQgZXJyb3IpOw0KKw0KIGV4dGVybiBpbnQg IGtpYm5hbF9jb25uZCAodm9pZCAqYXJnKTsNCiBleHRlcm4gaW50ICBraWJu YWxfcmVhcGVyICh2b2lkICphcmcpOw0KIGV4dGVybiB2b2lkIGtpYm5hbF9j YWxsYmFjayAoc3RydWN0IGliX2NxICpjcSwgc3RydWN0IGliX2NxX2VudHJ5 ICplLCB2b2lkICphcmcpOw0KQEAgLTU1Nyw2ICs2NTQsMTcgQEANCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpb3Zl YyAqaW92LCBwdGxfa2lvdl90ICpraW92LA0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50IG9mZnNldCwgaW50IG5vYik7DQog DQorLyogdGhpcyBzdHVmZiB3aWxsIGhhdmUgdG8gbW92ZSBjbG9zZXIgdG8g dGhlIHJvdXRlciBhdCBzb21lIHBvaW50ICovDQorZXh0ZXJuIHN0cnVjdCBr aWJfZndkYnVmICpnZXRfZndkYnVmKGtpYl9jb25uX3QgKmNvbm4sIGludCBi dWZUeXBlKTsNCitleHRlcm4gaW50ICAgIGFsbG9jX2Z3ZGJ1ZihraWJfY29u bl90ICpjb25uKTsNCitleHRlcm4gaW50ICAgIGluaXRfZndkYnVmKHN0cnVj dCBraWJfZndkYnVmICpmdyk7DQorZXh0ZXJuIHZvaWQgICBmcmVlX2Z3ZGJ1 ZihzdHJ1Y3Qga2liX2Z3ZGJ1ZiAqIGZ3YiwgaW50IGJ1ZlR5cGUpOw0KK2V4 dGVybiBzdHJ1Y3Qga2liX3JkbWFmd2RtYXRjaCAqICBnZXRfbWF0Y2hidWYo a2liX2Nvbm5fdCAqY29ubik7DQorZXh0ZXJuIHN0cnVjdCBraWJfcmRtYWZ3 ZG1hdGNoICogbG9va3VwX21hdGNoYnVmKGtpYl9jb25uX3QgKmNvbm4sDQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwdGxfaGFuZGxlX3dpcmVfdCAqbWF0Y2hfd21kKTsNCitleHRlcm4g dm9pZCBmcmVlX21hdGNoYnVmKHN0cnVjdCBraWJfcmRtYWZ3ZG1hdGNoICpt Yik7DQorZXh0ZXJuIGludCAgYWxsb2NfbWF0Y2hidWYoc3RydWN0IGtpYl9y ZG1hZndkbWF0Y2ggKiptYik7DQorDQogDQogDQogDQo ---1233080254-996071558-1130976251=:28312--