ZGlmZiAtLWdpdCBhL2FwL29zL2xpbnV4L2xpbnV4LTMuNC54L2luY2x1ZGUvbGludXgvZnMuaCBiL2FwL29zL2xpbnV4L2xpbnV4LTMuNC54L2luY2x1ZGUvbGludXgvZnMuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDIxMGMzNDcuLjQ2M2RmMTEKLS0tIGEvYXAvb3MvbGludXgvbGludXgtMy40LngvaW5jbHVkZS9saW51eC9mcy5oCisrKyBiL2FwL29zL2xpbnV4L2xpbnV4LTMuNC54L2luY2x1ZGUvbGludXgvZnMuaApAQCAtMTAyMSw2ICsxMDIxLDkgQEAKICNpZmRlZiBDT05GSUdfREVCVUdfV1JJVEVDT1VOVAogCXVuc2lnbmVkIGxvbmcgZl9tbnRfd3JpdGVfc3RhdGU7CiAjZW5kaWYKKyNpZmRlZiBDT05GSUdfU1lTVklQQ19DUk9TU19TSE0KKwl1bnNpZ25lZCBpbnQgCXNobV9mbGFnczsKKyNlbmRpZgogfTsKIAogc3RydWN0IGZpbGVfaGFuZGxlIHsKZGlmZiAtLWdpdCBhL2FwL29zL2xpbnV4L2xpbnV4LTMuNC54L2luY2x1ZGUvbGludXgvbmV0LmggYi9hcC9vcy9saW51eC9saW51eC0zLjQueC9pbmNsdWRlL2xpbnV4L25ldC5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggMTZiNDk5Ni4uZjMyM2I3ZAotLS0gYS9hcC9vcy9saW51eC9saW51eC0zLjQueC9pbmNsdWRlL2xpbnV4L25ldC5oCisrKyBiL2FwL29zL2xpbnV4L2xpbnV4LTMuNC54L2luY2x1ZGUvbGludXgvbmV0LmgKQEAgLTE0OCw2ICsxNDgsMTAgQEAKIAlzdHJ1Y3Qgc29ja2V0X3dxIF9fcmN1CSp3cTsKIAogCXN0cnVjdCBmaWxlCQkqZmlsZTsKKyNpZmRlZiBDT05GSUdfSVBDX1NPQ0tFVAorCWludCBmZDsKKwlzdHJ1Y3QgaGxpc3RfaGVhZCBwZWVyOworI2VuZGlmCiAJc3RydWN0IHNvY2sJCSpzazsKIAljb25zdCBzdHJ1Y3QgcHJvdG9fb3BzCSpvcHM7CiB9OwpkaWZmIC0tZ2l0IGEvYXAvb3MvbGludXgvbGludXgtMy40LngvaW5jbHVkZS9saW51eC9zb2NrZXQuaCBiL2FwL29zL2xpbnV4L2xpbnV4LTMuNC54L2luY2x1ZGUvbGludXgvc29ja2V0LmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA5YjU0ZWJlLi5jYzFhZmRjCi0tLSBhL2FwL29zL2xpbnV4L2xpbnV4LTMuNC54L2luY2x1ZGUvbGludXgvc29ja2V0LmgKKysrIGIvYXAvb3MvbGludXgvbGludXgtMy40LngvaW5jbHVkZS9saW51eC9zb2NrZXQuaApAQCAtMzQzLDUgKzM0Myw2IEBACiAJCQkgIHVuc2lnbmVkIGludCBmbGFncywgc3RydWN0IHRpbWVzcGVjICp0aW1lb3V0KTsKIGV4dGVybiBpbnQgX19zeXNfc2VuZG1tc2coaW50IGZkLCBzdHJ1Y3QgbW1zZ2hkciBfX3VzZXIgKm1tc2csCiAJCQkgIHVuc2lnbmVkIGludCB2bGVuLCB1bnNpZ25lZCBpbnQgZmxhZ3MpOworCiAjZW5kaWYgLyogbm90IGtlcm5lbCBhbmQgbm90IGdsaWJjICovCiAjZW5kaWYgLyogX0xJTlVYX1NPQ0tFVF9IICovCmRpZmYgLS1naXQgYS9hcC9vcy9saW51eC9saW51eC0zLjQueC9pbmNsdWRlL2xpbnV4L3NvY2tldF9ycG1zZy5oIGIvYXAvb3MvbGludXgvbGludXgtMy40LngvaW5jbHVkZS9saW51eC9zb2NrZXRfcnBtc2cuaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5jNmE5MjkyCi0tLSAvZGV2L251bGwKKysrIGIvYXAvb3MvbGludXgvbGludXgtMy40LngvaW5jbHVkZS9saW51eC9zb2NrZXRfcnBtc2cuaApAQCAtMCwwICsxLDIyNyBAQAorI2lmbmRlZiBTT0NLRVRfUlBNU0dfSA0KKyNkZWZpbmUgU09DS0VUX1JQTVNHX0gNCisNCisjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+DQorI2luY2x1ZGUgPGxpbnV4L2t0aHJlYWQuaD4NCisjaW5jbHVkZSA8bGludXgvc3BpbmxvY2suaD4NCisjaW5jbHVkZSA8bGludXgvc2VtYXBob3JlLmg+DQorI2luY2x1ZGUgPGxpbnV4L25ldGRldmljZS5oPg0KKyNpbmNsdWRlIDxsaW51eC9za2J1ZmYuaD4NCisjaW5jbHVkZSA8bGludXgvdW4uaD4NCisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4NCisjaW5jbHVkZSA8bGludXgvc29jL3p0ZS9ycG0vcnBtc2cuaD4NCisNCisjaW5jbHVkZSA8bmV0L3NvY2suaD4NCisNCitleHRlcm4gaW50IHNvY2tldF9ycG1zZ19kZWJ1ZzsNCisNCisjZGVmaW5lIHNrX3NvY19kYmcoZm9ybWF0LCBhcmcuLi4pIGlmKHNvY2tldF9ycG1zZ19kZWJ1ZyA9PSAxKSBcDQorCXByaW50ayhLRVJOX0RFQlVHICJbc29ja2V0X3JwbXNnXTwlcz46ICIgZm9ybWF0ICJcbiIgLF9fZnVuY19fICwgIyMgYXJnKQ0KKyNkZWZpbmUgc2tfc29jX2luZm8oZm9ybWF0LCBhcmcuLi4pIGlmKHNvY2tldF9ycG1zZ19kZWJ1ZyA9PSAxKSBcDQorCXByaW50ayhLRVJOX0lORk8gIltzb2NrZXRfcnBtc2ddPCVzPjogIiBmb3JtYXQgIlxuIiAsX19mdW5jX18gLCAjIyBhcmcpDQorDQorI2RlZmluZSBza19zb2NfZXJyKGZvcm1hdCwgYXJnLi4uKSBwcmludGsoS0VSTl9FUlIgIltzb2NrZXRfcnBtc2ddPCVzPjogIiBmb3JtYXQgIlxuIiAsIFwNCisJX19mdW5jX18gLCAjIyBhcmcpDQorDQorI2RlZmluZSBza19zb2Nfd2Fybihmb3JtYXQsIGFyZy4uLikgcHJpbnRrKEtFUk5fV0FSTklORyAiW3NvY2tldF9ycG1zZ108JXM+OiAiIGZvcm1hdCAiXG4iICwgXA0KKwlfX2Z1bmNfXyAsICMjIGFyZykNCisNCisNCisNCisjZGVmaW5lCSBJQ1BfQ0hBTk5FTF9TSVpFIAkoMTYgKiAxMDI0KQ0KKw0KKy8qcmVtb3RlIGRhdGEgLHRvIGxvY2FsLHJlYWQgZnJvbSBycG1zZyBjaGFubmVsKi8NCisjZGVmaW5lIERJUl9VUExJTksJCTENCisvKmxvY2FsIGRhdGEgLHRvIHJlbW90ZSxuZWVkIHdyaXRlIHJwbXNnIGNoYW5uZWwqLw0KKyNkZWZpbmUgRElSX0RPV05MSU5LCTINCisjZGVmaW5lIHNvY2tTb2NDcmVhdGVDaGFubmVsIHpEcnZScE1zZ19DcmVhdGVDaGFubmVsX0NhcA0KKyNkZWZpbmUgc29ja1NvY1dyaXRlICAgICAgICAgekRydlJwTXNnX1dyaXRlX0NhcA0KKyNkZWZpbmUgc29ja1NvY1JlYWQgICAgICAgICAgekRydlJwTXNnX1JlYWRfQ2FwDQorDQorI2RlZmluZSBTT0NLX09QX1JFU1VMVAkJMA0KKw0KK2V4dGVybiBzcGlubG9ja190IHNvY2tfdGFibGVfbG9jazsNCitleHRlcm4gc3BpbmxvY2tfdCBzb2NrX3JwbXNnX3RhYmxlX2xvY2s7DQorZXh0ZXJuIHNwaW5sb2NrX3Qgc29ja19zb2NrZXRfdGFibGVfbG9jazsNCitleHRlcm4gc3BpbmxvY2tfdCBzb2NrX3JlbGVhc2VfdGFibGVfbG9jazsNCitleHRlcm4gc3BpbmxvY2tfdCBzb2NrX3JlbGVhc2VfbG9jazsNCitleHRlcm4gc3BpbmxvY2tfdCAgc29ja19yZWxlYXNlX3BlZXJfbG9jazsNCit0eXBlZGVmIGVudW0gX3NvY19tc2dfdHlwZQ0KK3sNCisJTVNHX1RZUEVfRklORCA9IDAsDQorCU1TR19UWVBFX0ZJTkRfUkVTVUxULA0KKwlNU0dfVFlQRV9BRERfV0FJVF9RVUVVRSwNCisJTVNHX1RZUEVfUkVNT1ZFX1dBSVRfUVVFVUUsDQorCU1TR19UWVBFX1NZTkNfSVBDX1NPQ0tFVCwNCisJTVNHX1RZUEVfV0FJVF9GT1JfUEVFUiwNCisJTVNHX1RZUEVfREFUQV9SRUFEWSwNCisJTVNHX1RZUEVfU0VORF9NU0csDQorCU1TR19UWVBFX1NFVF9QRUVSLA0KKwlNU0dfVFlQRV9VUERBVEVfUEVFUiwNCisJTVNHX1RZUEVfU09DS19QVVQsDQorCU1TR19UWVBFX0FERF9TS0JfUVVFVUVfVEFJTCwNCisJTVNHX1RZUEVfUkVDVlFfRlVMTCwNCisJTVNHX1RZUEVfUkVDVlFfRlVMTF9SRVNVTFQsDQorCU1TR19UWVBFX1JFQ1ZRX0ZVTExfTE9DS0xFU1NfQU5EX0RFQUQsDQorCU1TR19UWVBFX1JFQ1ZRX0ZVTExfTE9DS0xFU1NfQU5EX0RFQURfUkVTVUxULA0KKwlNU0dfVFlQRV9QRUVSX0NMRUFSLA0KKwlNU0dfVFlQRV9XQUtFX1VQX0lOVEVSUlVQVElCTEVfUE9MTCwNCisJTVNHX1RZUEVfVEVTVF9GTEFHLA0KKwlNU0dfVFlQRV9URVNUX0ZMQUdfUkVTVUxULA0KKwlNU0dfVFlQRV9HRVRfU09DS0VUX1NUQVRFUywNCisJTVNHX1RZUEVfR0VUX1NPQ0tFVF9TVEFURVNfUkVTVUxULA0KKwlNU0dfVFlQRV9TVFJFQU1fQ09OTkVDVCwgLy8yMQ0KKwlNU0dfVFlQRV9TT0NLRVRfUkVMRUFTRSwgLy8yMg0KKwlNU0dfVFlQRV9ER1JBTV9ESVNDT05ORUNURUQsDQorCU1TR19UWVBFX1NUQVRFX0xPQ0ssDQorCU1TR19UWVBFX1NUQVRFX1VOTE9DSywNCisJTVNHX1RZUEVfU09DS19IT0xELA0KKwlNU0dfVFlQRV9SRUxFQVNFX1BFRVIsDQorCU1TR19UWVBFX05PVElGWV9QUk9YWV9DSEFOR0UsDQorfXNvY19tc2dfdHlwZTsNCisNCitzdHJ1Y3Qgc29ja190aHJlYWRfaW5mbyB7DQorCXN0cnVjdCB0YXNrX3N0cnVjdCAqcF90aHJlYWQ7CQ0KKwlzdHJ1Y3QgbGlzdF9oZWFkCXBfc29ja19saXN0Ow0KKwlzdHJ1Y3Qgc3BpbmxvY2sgCXBfc29ja19sb2NrOw0KKwlzdHJ1Y3Qgc2VtYXBob3JlIAlwX3NvY2tfc2VtOw0KKw0KKwlpbnQgYnN0b3A7DQorfTsNCisNCitzdHJ1Y3Qgc29ja19jaGFubmVsIHsNCisgICAgVF9aRHJ2UnBNc2dfQWN0b3JJRCBjb3JlX2lkOw0KKyAgICBUX1pEcnZScE1zZ19DaElEIGNoYW5uZWxfaWQ7DQorICAgIHVuc2lnbmVkIGludCBjaGFubmVsX3NpemU7DQorICAgIC8vc3RydWN0IHRhc2tfc3RydWN0ICpyY3ZfdGhyZWFkOw0KKwkvL3N0cnVjdCB0YXNrX3N0cnVjdCAqbWFpbl90aHJlYWQ7DQorCXN0cnVjdCBzb2NrX3RocmVhZF9pbmZvIHJlY3ZfdGhyZWFkX2luZm87DQorCXN0cnVjdCBzb2NrX3RocmVhZF9pbmZvIG1haW5fdGhyZWFkX2luZm87DQorfTsNCisNCitzdHJ1Y3Qgc29ja19lbGVtX2ZsYWcgew0KKwlpbnQgc2tfZXJyOw0KKwlpbnQgc2tfZXJyb3JfcmVwb3J0Ow0KKwlpbnQgc2tzdGF0ZTsNCisJdTggc2tzaHV0ZG93bjsNCit9Ow0KKw0KK3N0cnVjdAlzb2NrX3JwbXNnDQorew0KKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7DQorCXNvY19tc2dfdHlwZSBtc2dfdHlwZTsNCisJdWludDMyX3QgZGlyOw0KKwlzdHJ1Y3Qgc29ja2FkZHJfdW4gc29ja2FkZHI7DQorCWludCBhZGRyX2xlbjsNCisJaW50IHNvY2t0eXBlOyANCisJdW5zaWduZWQgaW50IGhhc2g7DQorCXN0cnVjdCBzb2NrX2VsZW1fZmxhZyBlbGVtOw0KKwkvL3N0cnVjdCBzb2NrIHNvY2s7CQ0KKwlpbnQgY2xpZW50ZmQ7DQorCWludCBzZXJ2ZXJmZDsNCisJaW50IGNsaWVudHByb3h5ZmQ7DQorCWludCBzZXJ2ZXJwcm94eWZkOw0KKwlpbnQgbmV3Y2xpZW50ZmQ7DQorCXZvaWQqIGNsaWVudHNvY2s7IC8vwODQzc6qc3RydWN0IHNvY2tldA0KKwl2b2lkKiBzZXJ2ZXJzb2NrOyAvL8Dg0M3OqnN0cnVjdCBzb2NrZXQNCisJdm9pZCogbmV3c29jazsNCisJdm9pZCogY2xpZW50cHJveHlzb2NrOyAvL8Dg0M3OqnN0cnVjdCBzb2NrZXQNCisJdm9pZCogc2VydmVycHJveHlzb2NrOyAvL8Dg0M3OqnN0cnVjdCBzb2NrZXQNCisJaW50IHJlc3VsdDsNCisJZW51bSBzb2NrX2ZsYWdzIGZsYWc7DQorCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQorCWxvbmcgdGltZW87DQorCXVuc2lnbmVkIGludCAgbXNnX2ZsYWdzOw0KKwlpbnQgaXNmaXN0ZmluZDsNCisJdm9pZCoga2V5Ow0KKwl1bnNpZ25lZCBpbnQgaW5kZXg7DQorCWludCBkYXRhX2xlbjsNCisJdW5zaWduZWQgY2hhciBkYXRhWzBdOwkNCit9Ow0KKw0KK3N0cnVjdAlpcGNfc29ja2V0DQorewkNCisJc3RydWN0IGhsaXN0X25vZGUJaGxpc3Rfbm9kZTsNCisJc3RydWN0IHNvY2tldCogc29ja2V0Ow0KKwlzdHJ1Y3Qgc29jayogc29jazsNCisJaW50IHNvY2t0eXBlOyANCisJaW50IGxvY2FsZmQ7ICAvL7G+tdi/zbuntstmZA0KKwlpbnQgc29ja2ZkOyAgIC8vsb612LT6wO1zb2NrZXS1xGZkDQorCWludCByZW1vdGVmZDsgLy+21NOm1La2y8q1zOW1xGZkDQorCWludCByZW1vdGVwcm94eWZkOyAvL7bU06bUtrbLtPrA7bXEIGZkDQorCXN0cnVjdCBzb2NrZXQqIGxvY2Fsc29ja2V0OyAvL7G+tdi/zbuntstzb2NrZXQNCisJc3RydWN0IHNvY2tldCogcHJveHlzb2NrZXQ7IC8vsb612LT6wO1zb2NrZXQNCisJc3RydWN0IHNvY2tldCogcmVtb3Rlc29ja2V0OyAvL7bU06bUtrbLyrXM5bXEc29ja2V0DQorCXN0cnVjdCBzb2NrZXQqIHJlbW90ZXByb3h5c29ja2V0OyAvL7bU06bUtrbLtPrA7bXEc29ja2V0DQorCXZvaWQqIGtleTsNCit9Ow0KKw0KK3N0cnVjdCBzb2NrX3JwbXNnX2luZm8NCit7DQorCXN0cnVjdCBobGlzdF9ub2RlCWhsaXN0X25vZGU7DQorCXN0cnVjdCBzb2NrX3JwbXNnIHNvY2tfcnBtc2c7DQorCXN0cnVjdCBzZW1hcGhvcmUgc29ja19zZW07DQorCXN0cnVjdCBpcGNfc29ja2V0ICogaXBjX3NvY2tldDsNCisJdm9pZCoga2V5OyAvL7HqyrZycG1zZ7XEudi8/NfWDQorfTsNCisNCitzdHJ1Y3QJcGVlcl9zb2NrX2luZm8NCit7CQ0KKwlpbnQgZmQ7DQorCWludCBwZWVyZmQ7DQorCXN0cnVjdCBzb2NrKiBzb2NrOw0KKwlzdHJ1Y3Qgc29jayogcGVlcnNvY2s7DQorCWxvbmcgdGltZW87DQorfTsNCisNCitzdHJ1Y3QgcmVsZWFzZV9zb2NrZXR7DQorCXN0cnVjdCBsaXN0X2hlYWQJbGlzdF9ub2RlOw0KKyNpZiAwCQ0KKwlzdHJ1Y3Qgc29ja2V0KiBzb2NrOw0KKwlpbnQgY2xpZW50ZmQ7DQorCXZvaWQqIGNsaWVudHNvY2s7DQorI2VuZGlmCQ0KKwlpbnQgbG9jYWxmZDsgLy+/zbuntstmZA0KKwlpbnQgcHJveHlmZDsgICAvL7G+tdi0+sDtc29ja2V0tcRmZA0KKwlpbnQgcmVtb3RlZmQ7IC8vttTTptS2tsvKtczltcRmZA0KKwlzdHJ1Y3Qgc29ja2V0KiBsb2NhbHNvY2tldDsgLy+xvrXYv827p7bLc29ja2V0DQorCXN0cnVjdCBzb2NrZXQqIHByb3h5c29ja2V0OyAvL7G+tdi0+sDtc29ja2V0DQorCXN0cnVjdCBzb2NrZXQqIHJlbW90ZXNvY2tldDsgLy+21NOm1La2y8q1zOW1xHNvY2tldA0KKwlzdHJ1Y3Qgc29ja2V0KiByZW1vdGVwcm94eXNvY2tldDsgLy+21NOmtPrA7bXEc29ja2V0DQorfTsNCisNCisvL7Tmt8XL+dPQss7T6727u6W1xHNvY2tldLXY1rcNCitzdHJ1Y3Qgc29ja2V0X2luZm97DQorCXN0cnVjdCBobGlzdF9ub2RlCWhsaXN0X25vZGU7DQorCXN0cnVjdCBzb2NrZXQqIHByb3h5c29ja2V0Ow0KKwlzdHJ1Y3Qgc29ja2V0KiBsb2NhbHNvY2tldDsNCit9Ow0KKw0KK2ludCBzb2NrX3NvY19yZWN2cV9mdWxsKGNvbnN0IHN0cnVjdCBzb2NrICpzayk7DQoraW50IHNvY2tfc29jX3NldF9wZWVyKHN0cnVjdCBzb2NrICpzb2NrLCBzdHJ1Y3Qgc29jayAqb3RoZXIpOw0KK2ludCBzb2NrX3NvY19zb2NrX3B1dChzdHJ1Y3Qgc29jayAqb3RoZXIpOw0KK2ludCBzb2NrX3NvY19tc2dfc2VuZChzdHJ1Y3Qgc29jayAqc29jaywgc3RydWN0IHNvY2sgKm90aGVyLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pOw0KK2xvbmcgc29ja193YWl0X2Zvcl9wZWVyKHN0cnVjdCBzb2NrICpzb2NrLCBzdHJ1Y3Qgc29jayAqb3RoZXIsIGxvbmcgdGltZW8pOw0KK2ludCBzb2NrX3NvY19za19kYXRhX3JlYWR5KHN0cnVjdCBzb2NrICpzayk7DQoraW50IHNvY2tfc3luY19pcGNfc29ja2V0KHN0cnVjdCBzb2NrX2VsZW1fZmxhZyogZWxlbV9mbGFnLCBzdHJ1Y3Qgc29jayAqb3RoZXIpOw0KK3ZvaWQgc29ja19zb2NfYWRkX3NrYl9xdWV1ZV90YWlsKHN0cnVjdCBzb2NrICpzb2NrLCBzdHJ1Y3Qgc29jayAqb3RoZXIpOw0KK3ZvaWQgc29ja19zb2NfYWRkX3dhaXRfcXVldWUoc3RydWN0IHNvY2sgKnNvY2ssIHN0cnVjdCBzb2NrICpvdGhlcik7DQordm9pZCBzb2NrX3NvY19yZW1vdmVfd2FpdF9xdWV1ZShzdHJ1Y3Qgc29jayAqc29jaywgc3RydWN0IHNvY2sgKm90aGVyKTsNCitzdHJ1Y3Qgc29jayAqc29ja19zb2NfZmluZF9vdGhlcihzdHJ1Y3Qgc29ja2V0KiBzb2NrZXQsDQorCQkJCSAgICBzdHJ1Y3Qgc29ja2FkZHJfdW4gKnN1bm5hbWUsIGludCBsZW4sDQorCQkJCSAgICBpbnQgdHlwZSwgdW5zaWduZWQgaW50IGhhc2gsIGludCAqZXJyb3IpOw0KK2ludCB1bml4X2lzX2lwY19zb2NrZXQoc3RydWN0IHNvY2sgKnNvY2spOw0KK2ludCB1bml4X2lzX2lwY19sb2NhbF9zb2NrZXQoc3RydWN0IHNvY2sgKnNvY2spOw0KK2ludCBzb2NrX3NvY190ZXN0X2ZsYWdzKHN0cnVjdCBzb2NrICpvdGhlciwgZW51bSBzb2NrX2ZsYWdzIGZsYWcpOw0KK2ludCBzb2NrX3NvY19yZWN2cV9mdWxsX2xvY2tsZXNzX2FuZF9kZWFkKGNvbnN0IHN0cnVjdCBzb2NrICpvdGhlcik7DQoraW50IHNvY2tfc29jX2dldF9zdGF0ZShzdHJ1Y3Qgc29ja19lbGVtX2ZsYWcqIGVsZW1fZmxhZywgc3RydWN0IHNvY2sgKm90aGVyKTsNCit2b2lkIHNvY2tfc29jX3N0cmVhbV9jb25uZWN0KHN0cnVjdCBzb2NrICpzb2NrLCBzdHJ1Y3Qgc29jayAqb3RoZXIsIHN0cnVjdCBzb2NrYWRkcl91biAqc3VubmFtZSwgaW50IGxlbixpbnQgZmxhZ3MpOw0KK2ludCBzb2NrX3NvY191cGRhdGVfcGVlcihzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdzb2NrKTsNCitpbnQgc29ja19zb2NfZGdyYW1fZGlzY29ubmVjdGVkKHN0cnVjdCBzb2NrICpzb2NrLCBzdHJ1Y3Qgc29jayAqb3RoZXIpOw0KK3ZvaWQgc29ja19zb2Nfc3RhdGVfbG9jayhzdHJ1Y3Qgc29jayAqb3RoZXIpOw0KK3ZvaWQgc29ja19zb2Nfc3RhdGVfdW5sb2NrKHN0cnVjdCBzb2NrICpvdGhlcik7DQordm9pZCBzb2NrX3NvY19kZWxheV9yZWxlYXNlKHN0cnVjdCBzb2NrZXQgKnNvY2spOw0KK3ZvaWQgc29ja19zb2Nfc29ja19ob2xkKHN0cnVjdCBzb2NrICpvdGhlcik7DQorDQorI2VuZGlmDQorDQpkaWZmIC0tZ2l0IGEvYXAvb3MvbGludXgvbGludXgtMy40LngvaW5jbHVkZS9uZXQvYWZfdW5peC5oIGIvYXAvb3MvbGludXgvbGludXgtMy40LngvaW5jbHVkZS9uZXQvYWZfdW5peC5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggY2E2OGUyYy4uZDk5N2U0NQotLS0gYS9hcC9vcy9saW51eC9saW51eC0zLjQueC9pbmNsdWRlL25ldC9hZl91bml4LmgKKysrIGIvYXAvb3MvbGludXgvbGludXgtMy40LngvaW5jbHVkZS9uZXQvYWZfdW5peC5oCkBAIC01LDYgKzUsOSBAQAogI2luY2x1ZGUgPGxpbnV4L3VuLmg+CiAjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4KICNpbmNsdWRlIDxuZXQvc29jay5oPgorI2lmZGVmIENPTkZJR19JUENfU09DS0VUCisjaW5jbHVkZSA8bGludXgvc29ja2V0X3JwbXNnLmg+CisjZW5kaWYKIAogZXh0ZXJuIHZvaWQgdW5peF9pbmZsaWdodChzdHJ1Y3QgZmlsZSAqZnApOwogZXh0ZXJuIHZvaWQgdW5peF9ub3RpbmZsaWdodChzdHJ1Y3QgZmlsZSAqZnApOwpAQCAtNjAsNiArNjMsOSBAQAogCXVuc2lnbmVkIGludAkJZ2NfbWF5YmVfY3ljbGUgOiAxOwogCXVuc2lnbmVkIGNoYXIJCXJlY3Vyc2lvbl9sZXZlbDsKIAlzdHJ1Y3Qgc29ja2V0X3dxCXBlZXJfd3E7CisjaWZkZWYgQ09ORklHX0lQQ19TT0NLRVQKKwlzdHJ1Y3QgcmVsZWFzZV9zb2NrZXQgcnNvY2s7CisjZW5kaWYJCiB9OwogI2RlZmluZSB1bml4X3NrKF9fc2spICgoc3RydWN0IHVuaXhfc29jayAqKV9fc2spCiAKZGlmZiAtLWdpdCBhL2FwL29zL2xpbnV4L2xpbnV4LTMuNC54L2luY2x1ZGUvbmV0L3NvY2suaCBiL2FwL29zL2xpbnV4L2xpbnV4LTMuNC54L2luY2x1ZGUvbmV0L3NvY2suaAppbmRleCBlZmFiMTIwLi43ZjIwOThiIDEwMDc1NQotLS0gYS9hcC9vcy9saW51eC9saW51eC0zLjQueC9pbmNsdWRlL25ldC9zb2NrLmgKKysrIGIvYXAvb3MvbGludXgvbGludXgtMy40LngvaW5jbHVkZS9uZXQvc29jay5oCkBAIC04NSw2ICs4NSwxNiBAQAogewogfQogI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfSVBDX1NPQ0tFVAorZXh0ZXJuIGludCBzb2NrZXRfcnBtc2dfZGVidWc7CisKKyNkZWZpbmUgc2tfc29jX2RiZyhmb3JtYXQsIGFyZy4uLikgaWYoc29ja2V0X3JwbXNnX2RlYnVnID09IDEpIFwKKwlwcmludGsoS0VSTl9ERUJVRyAiW3NvY2tldF9ycG1zZ108JXM+OiAiIGZvcm1hdCAiXG4iICxfX2Z1bmNfXyAsICMjIGFyZykKKyNkZWZpbmUgc2tfc29jX2luZm8oZm9ybWF0LCBhcmcuLi4pIGlmKHNvY2tldF9ycG1zZ19kZWJ1ZyA9PSAxKSBcCisJcHJpbnRrKEtFUk5fSU5GTyAiW3NvY2tldF9ycG1zZ108JXM+OiAiIGZvcm1hdCAiXG4iICxfX2Z1bmNfXyAsICMjIGFyZykKKworI2VuZGlmCiAvKgogICogVGhpcyBzdHJ1Y3R1cmUgcmVhbGx5IG5lZWRzIHRvIGJlIGNsZWFuZWQgdXAuCiAgKiBNb3N0IG9mIGl0IGlzIGZvciBUQ1AsIGFuZCBub3QgdXNlZCBieSBhbnkgb2YKQEAgLTEyNyw2ICsxMzcsMTUgQEAKIHN0cnVjdCBwcm90bzsKIHN0cnVjdCBuZXQ7CiAKKyNpZmRlZiBDT05GSUdfSVBDX1NPQ0tFVAorCitlbnVtIHNvY2tfZmxhZ3M7CitleHRlcm4gaW50IHVuaXhfaXNfaXBjX3NvY2tldChzdHJ1Y3Qgc29jayAqc29jayk7CitleHRlcm4gaW50IHNvY2tfc29jX3Rlc3RfZmxhZ3Moc3RydWN0IHNvY2sgKm90aGVyLCBlbnVtIHNvY2tfZmxhZ3MgZmxhZyk7CitleHRlcm4gaW50IHNvY2tfc29jX3NvY2tfcHV0KHN0cnVjdCBzb2NrICpvdGhlcik7CitleHRlcm4gdm9pZCBzb2NrX3NvY19zb2NrX2hvbGQoc3RydWN0IHNvY2sgKm90aGVyKTsKKworI2VuZGlmCiAvKioKICAqCXN0cnVjdCBzb2NrX2NvbW1vbiAtIG1pbmltYWwgbmV0d29yayBsYXllciByZXByZXNlbnRhdGlvbiBvZiBzb2NrZXRzCiAgKglAc2tjX2RhZGRyOiBGb3JlaWduIElQdjQgYWRkcgpAQCAtMzgyLDYgKzQwMSwxMiBAQAogICAJaW50CQkJKCpza19iYWNrbG9nX3Jjdikoc3RydWN0IHNvY2sgKnNrLAogCQkJCQkJICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsgIAogCXZvaWQgICAgICAgICAgICAgICAgICAgICgqc2tfZGVzdHJ1Y3QpKHN0cnVjdCBzb2NrICpzayk7CisjaWZkZWYgQ09ORklHX0lQQ19TT0NLRVQKKwlpbnQgaXBjX2ZsYWc7CisJaW50IHNrX2ZkOworCXN0cnVjdCBzb2NrKiBwcm94eV9zb2NrOworCXU4IGNsb3NlZDsKKyNlbmRpZgkKIH07CiAKIHN0YXRpYyBpbmxpbmUgaW50IHNrX3BlZWtfb2Zmc2V0KHN0cnVjdCBzb2NrICpzaywgaW50IGZsYWdzKQpAQCAtNDk1LDYgKzUyMCw5IEBACiBzdGF0aWMgaW5saW5lIHZvaWQgc29ja19ob2xkKHN0cnVjdCBzb2NrICpzaykKIHsKIAlhdG9taWNfaW5jKCZzay0+c2tfcmVmY250KTsKKyNpZmRlZiBDT05GSUdfSVBDX1NPQ0tFVAorICAgIHNrX3NvY19kYmcoInNvY2tfaG9sZCBzaz0leCwgc2stPnNrX3JlZmNudD0lZFxuIiwgc2ssIHNrLT5za19yZWZjbnQpOworI2VuZGlmCQogfQogCiAvKiBVbmdyYWIgc29ja2V0IGluIHRoZSBjb250ZXh0LCB3aGljaCBhc3N1bWVzIHRoYXQgc29ja2V0IHJlZmNudApAQCAtNTAyLDYgKzUzMCw5IEBACiAgKi8KIHN0YXRpYyBpbmxpbmUgdm9pZCBfX3NvY2tfcHV0KHN0cnVjdCBzb2NrICpzaykKIHsKKyNpZmRlZiBDT05GSUdfSVBDX1NPQ0tFVAkKKwlza19zb2NfZGJnKCJfX3NvY2tfcHV0IHNrPSV4LCBzay0+c2tfcmVmY250PSVkXG4iLHNrLCBzay0+c2tfcmVmY250KTsKKyNlbmRpZgkKIAlhdG9taWNfZGVjKCZzay0+c2tfcmVmY250KTsKIH0KIApAQCAtNjI5LDYgKzY2MCwxMCBAQAogCQkgICAgICogV2lsbCB1c2UgbGFzdCA0IGJ5dGVzIG9mIHBhY2tldCBzZW50IGZyb20KIAkJICAgICAqIHVzZXItc3BhY2UgaW5zdGVhZC4KIAkJICAgICAqLworI2lmZGVmIENPTkZJR19JUENfU09DS0VUCisgICAgU09DS19JUENTT0NLLCAgLypJbmRpY2F0ZXMgd2hldGhlciBpdCBpcyBhIGNyb3NzIGNvcmUgc29ja2V0ICovCisgICAgU09DS19JUENfTE9DQUwsCisjZW5kaWYKIH07CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBzb2NrX2NvcHlfZmxhZ3Moc3RydWN0IHNvY2sgKm5zaywgc3RydWN0IHNvY2sgKm9zaykKQEAgLTY0OCw3ICs2ODMsMTYgQEAKIAogc3RhdGljIGlubGluZSBpbnQgc29ja19mbGFnKHN0cnVjdCBzb2NrICpzaywgZW51bSBzb2NrX2ZsYWdzIGZsYWcpCiB7CisjaWZkZWYgQ09ORklHX0lQQ19TT0NLRVQKKwlpZih1bml4X2lzX2lwY19zb2NrZXQoc2spKXsKKwkJcmV0dXJuIHNvY2tfc29jX3Rlc3RfZmxhZ3Moc2ssIGZsYWcpOworCX0KKwllbHNleworI2VuZGlmCiAJcmV0dXJuIHRlc3RfYml0KGZsYWcsICZzay0+c2tfZmxhZ3MpOworI2lmZGVmIENPTkZJR19JUENfU09DS0VUCisJfQorI2VuZGlmCiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBza19hY2NlcHRxX3JlbW92ZWQoc3RydWN0IHNvY2sgKnNrKQpAQCAtMTU4Niw3ICsxNjMwLDEwIEBACiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBza19zZXRfc29ja2V0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNvY2tldCAqc29jaykKLXsKK3sJCisjaWZkZWYgQ09ORklHX0lQQ19TT0NLRVQJCisJc2tfc29jX2RiZygic2tfc2V0X3NvY2tldCBzaz0leCwgc29jaz0leCBcbiIsIHNrLCBzb2NrKTsKKyNlbmRpZgkKIAlza190eF9xdWV1ZV9jbGVhcihzayk7CiAJc2stPnNrX3NvY2tldCA9IHNvY2s7CiB9Cg==