From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] fix-dup-patch: Security fix for loading untrusted inferiors, see "set auto-load" (BZ 756117). Date: Thu, 23 Jul 2026 18:30:24 GMT Message-ID: <178483142404.1.2206663914070297656.rpms-gdb-08451779f969@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: 08451779f969455df3b5f16e872f5e698ca794f9 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2RiCkJyYW5jaCA6 IGZpeC1kdXAtcGF0Y2gKQ29tbWl0IDogMDg0NTE3NzlmOTY5NDU1ZGYzYjVmMTZlODcyZjVlNjk4 Y2E3OTRmOQpBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4KRGF0ZSAgIDogMjAxMi0wNC0xOFQwMjoxNzoyOCswMjowMApTdGF0cyAgOiArNTA3MS8tMjQ5 IGluIDE0IGZpbGUocykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBt cy9nZGIvYy8wODQ1MTc3OWY5Njk0NTVkZjNiNWYxNmU4NzJmNWU2OThjYTc5NGY5P2JyYW5jaD1m aXgtZHVwLXBhdGNoCgpMb2c6ClNlY3VyaXR5IGZpeCBmb3IgbG9hZGluZyB1bnRydXN0ZWQgaW5m ZXJpb3JzLCBzZWUgInNldCBhdXRvLWxvYWQiIChCWiA3NTYxMTcpLgoKLS0tCmRpZmYgLS1naXQg YS9nZGItNi4zLXNlY3VyaXR5LWVycmF0YS0yMDA1MDYxMC5wYXRjaCBiL2dkYi02LjMtc2VjdXJp dHktZXJyYXRhLTIwMDUwNjEwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4 ZTA0OGQ4Li4wMDAwMDAwCi0tLSBhL2dkYi02LjMtc2VjdXJpdHktZXJyYXRhLTIwMDUwNjEwLnBh dGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQzICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9y Zy9tbC9nZGItcGF0Y2hlcy8yMDA1LTA1L3RocmVhZHMuaHRtbCMwMDYzNwotUHJvcG9zZWQgdXBz dHJlYW0gYnV0IG5ldmVyIGNvbW1pdHRlZCB1cHN0cmVhbS4KLQotMjAwNS0wNi0wOSAgSmVmZiBK b2huc3RvbiAgPGpqb2huc3RuQHJlZGhhdC5jb20+Ci0KLSAgICAgICAgKiBnZGIuYmFzZS9nZGJp bml0LmV4cDogTmV3IHRlc3RjYXNlLgotICAgICAgICAqIGdkYi5iYXNlL2dkYmluaXQuc2FtcGxl OiBTYW1wbGUgLmdkYmluaXQgZm9yIGdkYmluaXQuZXhwLgotCi0yMDA1LTA2LTA4ICBEYW5pZWwg SmFjb2Jvd2l0eiAgPGRhbkBjb2Rlc291cmNlcnkuY29tPgotICAgICAgICAgICAgSmVmZiBKb2hu c3RvbiAgPGpqb2huc3RuQHJlZGhhdC5jb20+Ci0KLSAgICAgICAgKiBNYWtlZmlsZS5pbiAoY2xp LWNtZHMubyk6IFVwZGF0ZS4KLSAgICAgICAgKiBjb25maWd1cmUuaW46IEFkZCBjaGVjayBmb3Ig Z2V0dWlkLgotICAgICAgICAqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCi0gICAgICAgICogY29u ZmlnLmluOiBEaXR0by4KLSAgICAgICAgKiBtYWluLmMgKGNhcHR1cmVkX21haW4pOiBQYXNzIC0x IHRvIHNvdXJjZV9jb21tYW5kIHdoZW4gbG9hZGluZwotICAgICAgICBnZGJpbml0IGZpbGVzLgot ICAgICAgICAqIGNsaS9jbGktY21kcy5jOiBJbmNsdWRlICJnZGJfc3RhdC5oIiBhbmQgPGZjbnRs Lmg+LgotICAgICAgICAoc291cmNlX2NvbW1hbmQpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbi4gIENo ZWNrIHBlcm1pc3Npb25zIGlmCi0gICAgICAgIEZST01fVFRZIGlzIC0xLgotCi1JbmRleDogZ2Ri LTcuNC41MC4yMDExMTIxOC9nZGIvY2xpL2NsaS1jbWRzLmMKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL2NsaS9jbGktY21kcy5jCTIwMTEtMTItMTYgMjI6MTc6 NDIuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvY2xpL2NsaS1j bWRzLmMJMjAxMS0xMi0xOSAwMDoyNzoxNi41NzI0Njg5MjYgKzAxMDAKLUBAIC00MCw2ICs0MCw3 IEBACi0gI2luY2x1ZGUgInNvdXJjZS5oIgotICNpbmNsdWRlICJkaXNhc20uaCIKLSAjaW5jbHVk ZSAidHJhY2Vwb2ludC5oIgotKyNpbmNsdWRlICJnZGJfc3RhdC5oIgotIAotICNpbmNsdWRlICJ1 aS1vdXQuaCIKLSAKLUBAIC00ODUsNyArNDg2LDcgQEAgc2hvd19zY3JpcHRfZXh0X21vZGUgKHN0 cnVjdCB1aV9maWxlICpmaQotIAotIGludAotIGZpbmRfYW5kX29wZW5fc2NyaXB0IChjb25zdCBj aGFyICpzY3JpcHRfZmlsZSwgaW50IHNlYXJjaF9wYXRoLAotLQkJICAgICAgRklMRSAqKnN0cmVh bXAsIGNoYXIgKipmdWxsX3BhdGhwKQotKwkJICAgICAgRklMRSAqKnN0cmVhbXAsIGNoYXIgKipm dWxsX3BhdGhwLCBpbnQgZnJvbV90dHkpCi0gewotICAgY2hhciAqZmlsZTsKLSAgIGludCBmZDsK LUBAIC01MTEsNiArNTEyLDMyIEBAIGZpbmRfYW5kX29wZW5fc2NyaXB0IChjb25zdCBjaGFyICpz Y3JpcHQKLSAgICAgICByZXR1cm4gMDsKLSAgICAgfQotIAotKyNpZmRlZiBIQVZFX0dFVFVJRAot KyAgaWYgKGZyb21fdHR5ID09IC0xKQotKyAgICB7Ci0rICAgICAgc3RydWN0IHN0YXQgc3RhdGJ1 ZjsKLSsKLSsgICAgICBpZiAoZnN0YXQgKGZkLCAmc3RhdGJ1ZikgPCAwKQotKwl7Ci0rCSAgaW50 IHNhdmVfZXJybm8gPSBlcnJubzsKLSsKLSsJICBjbG9zZSAoZmQpOwotKwkgIGRvX2NsZWFudXBz IChvbGRfY2xlYW51cHMpOwotKwkgIGVycm5vID0gc2F2ZV9lcnJubzsKLSsJICByZXR1cm4gMDsK LSsJfQotKyAgICAgIGlmIChzdGF0YnVmLnN0X3VpZCAhPSBnZXR1aWQgKCkgfHwgKHN0YXRidWYu c3RfbW9kZSAmIFNfSVdPVEgpKQotKwl7Ci0rCSAgLyogRklMRSBnZXRzIGZyZWVkIGJ5IGRvX2Ns ZWFudXBzIChvbGRfY2xlYW51cHMpLiAgKi8KLSsJICB3YXJuaW5nIChfKCJub3QgdXNpbmcgdW50 cnVzdGVkIGZpbGUgXCIlc1wiIiksIGZpbGUpOwotKwkgIGNsb3NlIChmZCk7Ci0rCSAgZG9fY2xl YW51cHMgKG9sZF9jbGVhbnVwcyk7Ci0rCSAgZXJybm8gPSBFUEVSTTsKLSsJICByZXR1cm4gMDsK LSsJfQotKyAgICB9Ci0rI2VuZGlmCi0rCi0gICBkb19jbGVhbnVwcyAob2xkX2NsZWFudXBzKTsK LSAKLSAgICpzdHJlYW1wID0gZmRvcGVuIChmZCwgRk9QRU5fUlQpOwotQEAgLTU3MiwxMyArNTk5 LDE0IEBAIHNvdXJjZV9zY3JpcHRfd2l0aF9zZWFyY2ggKGNvbnN0IGNoYXIgKmYKLSAgIGlmIChm aWxlID09IE5VTEwgfHwgKmZpbGUgPT0gMCkKLSAgICAgZXJyb3IgKF8oInNvdXJjZSBjb21tYW5k IHJlcXVpcmVzIGZpbGUgbmFtZSBvZiBmaWxlIHRvIHNvdXJjZS4iKSk7Ci0gCi0tICBpZiAoIWZp bmRfYW5kX29wZW5fc2NyaXB0IChmaWxlLCBzZWFyY2hfcGF0aCwgJnN0cmVhbSwgJmZ1bGxfcGF0 aCkpCi0rICBpZiAoIWZpbmRfYW5kX29wZW5fc2NyaXB0IChmaWxlLCBzZWFyY2hfcGF0aCwgJnN0 cmVhbSwgJmZ1bGxfcGF0aCwKLSsJCQkgICAgIGZyb21fdHR5KSkKLSAgICAgewotICAgICAgIC8q IFRoZSBzY3JpcHQgd2Fzbid0IGZvdW5kLCBvciB3YXMgb3RoZXJ3aXNlIGluYWNjZXNzaWJsZS4K LSAgICAgICAgICBJZiB0aGUgc291cmNlIGNvbW1hbmQgd2FzIGludm9rZWQgaW50ZXJhY3RpdmVs eSwgdGhyb3cgYW4KLSAJIGVycm9yLiAgT3RoZXJ3aXNlIChlLmcuIGlmIGl0IHdhcyBpbnZva2Vk IGJ5IGEgc2NyaXB0KSwKLSAJIHNpbGVudGx5IGlnbm9yZSB0aGUgZXJyb3IuICAqLwotLSAgICAg IGlmIChmcm9tX3R0eSkKLSsgICAgICBpZiAoZnJvbV90dHkgPiAwKQotIAlwZXJyb3Jfd2l0aF9u YW1lIChmaWxlKTsKLSAgICAgICBlbHNlCi0gCXJldHVybjsKLUluZGV4OiBnZGItNy40LjUwLjIw MTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2RiaW5pdC5leHAKLT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGIt Ny40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2RiaW5pdC5leHAJMjAxMS0x Mi0xOSAwMDoyNToyNi4wNzk4OTE5NTQgKzAxMDAKLUBAIC0wLDAgKzEsOTEgQEAKLSsjICAgQ29w eXJpZ2h0IDIwMDUKLSsjICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMgCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl Ci0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMgCi0r IyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8g dGhlIEZyZWUgU29mdHdhcmUKLSsjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAt IFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rCi0rIyBQbGVhc2UgZW1h aWwgYW55IGJ1Z3MsIGNvbW1lbnRzLCBhbmQvb3IgYWRkaXRpb25zIHRvIHRoaXMgZmlsZSB0bzoK LSsjIGJ1Zy1nZGJAcHJlcC5haS5taXQuZWR1Ci0rCi0rIyBUaGlzIGZpbGUgd2FzIHdyaXR0ZW4g YnkgSmVmZiBKb2huc3RvbiA8ampvaG5zdG5AcmVkaGF0LmNvbT4uCi0rCi0rIyBhcmUgd2Ugb24g YSB0YXJnZXQgYm9hcmQKLStpZiBbaXNfcmVtb3RlIHRhcmdldF0gewotKyAgICByZXR1cm4KLSt9 Ci0rCi0rCi0rZ2xvYmFsIHZlcmJvc2UKLStnbG9iYWwgR0RCCi0rZ2xvYmFsIEdEQkZMQUdTCi0r Z2xvYmFsIGdkYl9wcm9tcHQKLStnbG9iYWwgdGltZW91dAotK2dsb2JhbCBnZGJfc3Bhd25faWQ7 Ci0rCi0rZ2RiX3N0b3Bfc3VwcHJlc3NpbmdfdGVzdHM7Ci0rCi0rdmVyYm9zZSAiU3Bhd25pbmcg JEdEQiAtbnciCi0rCi0raWYgW2luZm8gZXhpc3RzIGdkYl9zcGF3bl9pZF0gewotKyAgICByZXR1 cm4gMDsKLSt9Ci0rCi0raWYgIVtpc19yZW1vdGUgaG9zdF0gewotKyAgIGlmIHsgW3doaWNoICRH REJdID09IDAgfSB0aGVuIHsKLSsgICAgICAgIHBlcnJvciAiJEdEQiBkb2VzIG5vdCBleGlzdC4i Ci0rICAgICAgICBleGl0IDEKLSsgICAgfQotK30KLSsKLStzZXQgZW52KEhPTUUpIFtwd2RdCi0r cmVtb3RlX2V4ZWMgYnVpbGQgInJtIC5nZGJpbml0IgotK3JlbW90ZV9leGVjIGJ1aWxkICJjcCAk e3NyY2Rpcn0vJHtzdWJkaXJ9L2dkYmluaXQuc2FtcGxlIC5nZGJpbml0IgotK3JlbW90ZV9leGVj IGJ1aWxkICJjaG1vZCA2NDYgLmdkYmluaXQiCi0rCi0rc2V0IHJlcyBbcmVtb3RlX3NwYXduIGhv c3QgIiRHREIgLW53IFtob3N0X2luZm8gZ2RiX29wdHNdIl07Ci0raWYgeyAkcmVzIDwgMCB8fCAk cmVzID09ICIiIH0gewotKyAgICBwZXJyb3IgIlNwYXduaW5nICRHREIgZmFpbGVkLiIKLSsgICAg cmV0dXJuIDE7Ci0rfQotK2dkYl9leHBlY3QgMzYwIHsKLSsgICAgLXJlICJ3YXJuaW5nOiBub3Qg dXNpbmcgdW50cnVzdGVkIGZpbGUuKlwuZ2RiaW5pdC4qXFtcclxuXF0kZ2RiX3Byb21wdCAkIiB7 Ci0rICAgICAgICBwYXNzICJ1bnRydXN0ZWQgLmdkYmluaXQgY2F1Z2h0LiIKLSsgICAgfQotKyAg ICAtcmUgIiRnZGJfcHJvbXB0ICQiICAgICB7Ci0rICAgICAgICBmYWlsICJ1bnRydXN0ZWQgLmdk YmluaXQgY2F1Z2h0LiIKLSsgICAgfQotKyAgICB0aW1lb3V0IHsKLSsgICAgICAgIGZhaWwgIih0 aW1lb3V0KSB1bnRydXN0ZWQgLmdkYmluaXQgY2F1Z2h0LiIKLSsgICAgfQotK30KLSsKLStyZW1v dGVfZXhlYyBidWlsZCAiY2htb2QgNjQ0IC5nZGJpbml0IgotK3NldCByZXMgW3JlbW90ZV9zcGF3 biBob3N0ICIkR0RCIC1udyBbaG9zdF9pbmZvIGdkYl9vcHRzXSJdOwotK2lmIHsgJHJlcyA8IDAg fHwgJHJlcyA9PSAiIiB9IHsKLSsgICAgcGVycm9yICJTcGF3bmluZyAkR0RCIGZhaWxlZC4iCi0r ICAgIHJldHVybiAxOwotK30KLStnZGJfZXhwZWN0IDM2MCB7Ci0rICAgIC1yZSAid2FybmluZzog bm90IHVzaW5nIHVudHJ1c3RlZCBmaWxlLipcLmdkYmluaXQuKlxbXHJcblxdJGdkYl9wcm9tcHQg JCIgewotKyAgICAgICAgZmFpbCAidHJ1c3RlZCAuZ2RiaW5pdCBhbGxvd2VkLiIKLSsgICAgfQot KyAgICAtcmUgImluIGdkYmluaXQuKiRnZGJfcHJvbXB0ICQiICAgICB7Ci0rICAgICAgICBwYXNz ICJ0cnVzdGVkIC5nZGJpbml0IGFsbG93ZWQuIgotKyAgICB9Ci0rICAgIHRpbWVvdXQgewotKyAg ICAgICAgZmFpbCAiKHRpbWVvdXQpIHRydXN0ZWQgLmdkYmluaXQgYWxsb3dlZC4iCi0rICAgIH0K LSt9Ci0rCi0rcmVtb3RlX2V4ZWMgYnVpbGQgInJtIC5nZGJpbml0IgotSW5kZXg6IGdkYi03LjQu NTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nZGJpbml0LnNhbXBsZQotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAot KysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nZGJpbml0LnNh bXBsZQkyMDExLTEyLTE5IDAwOjI1OjI2LjA3OTg5MTk1NCArMDEwMAotQEAgLTAsMCArMSBAQAot K2VjaG8gIlxuaW4gZ2RiaW5pdCIKLUluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9tYWlu LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL21haW4uYwky MDExLTExLTA1IDE4OjA4OjMwLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMTEy MTgvZ2RiL21haW4uYwkyMDExLTEyLTE5IDAwOjI1OjI2LjA4MDg5MTk1MCArMDEwMAotQEAgLTgy Miw3ICs4MjIsNyBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQotICAgICAgZGVidWdnaW5n IG9yIHdoYXQgZGlyZWN0b3J5IHlvdSBhcmUgaW4uICAqLwotIAotICAgaWYgKGhvbWVfZ2RiaW5p dCAmJiAhaW5oaWJpdF9nZGJpbml0KQotLSAgICBjYXRjaF9jb21tYW5kX2Vycm9ycyAoc291cmNl X3NjcmlwdCwgaG9tZV9nZGJpbml0LCAwLCBSRVRVUk5fTUFTS19BTEwpOwotKyAgICBjYXRjaF9j b21tYW5kX2Vycm9ycyAoc291cmNlX3NjcmlwdCwgaG9tZV9nZGJpbml0LCAtMSwgUkVUVVJOX01B U0tfQUxMKTsKLSAKLSAgIC8qIE5vdyBwZXJmb3JtIGFsbCB0aGUgYWN0aW9ucyBpbmRpY2F0ZWQg YnkgdGhlIGFyZ3VtZW50cy4gICovCi0gICBpZiAoY2RhcmcgIT0gTlVMTCkKLUBAIC05MDEsNyAr OTAxLDcgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKLSAgIC8qIFJlYWQgdGhlIC5nZGJp bml0IGZpbGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LCAqaWYqIGl0IGlzbid0Ci0gICAgICB0 aGUgc2FtZSBhcyB0aGUgJEhPTUUvLmdkYmluaXQgZmlsZSAoaXQgc2hvdWxkIGV4aXN0LCBhbHNv KS4gICovCi0gICBpZiAobG9jYWxfZ2RiaW5pdCAmJiAhaW5oaWJpdF9nZGJpbml0KQotLSAgICBj YXRjaF9jb21tYW5kX2Vycm9ycyAoc291cmNlX3NjcmlwdCwgbG9jYWxfZ2RiaW5pdCwgMCwgUkVU VVJOX01BU0tfQUxMKTsKLSsgICAgY2F0Y2hfY29tbWFuZF9lcnJvcnMgKHNvdXJjZV9zY3JpcHQs IGxvY2FsX2dkYmluaXQsIC0xLCBSRVRVUk5fTUFTS19BTEwpOwotIAotICAgLyogTm93IHRoYXQg YWxsIC5nZGJpbml0J3MgaGF2ZSBiZWVuIHJlYWQgYW5kIGFsbCAtZCBvcHRpb25zIGhhdmUgYmVl bgotICAgICAgcHJvY2Vzc2VkLCB3ZSBjYW4gcmVhZCBhbnkgc2NyaXB0cyBtZW50aW9uZWQgaW4g U1lNQVJHLgotSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3B5dGhvbi9weS1hdXRvLWxv YWQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvcHl0aG9u L3B5LWF1dG8tbG9hZC5jCTIwMTEtMTItMTAgMjM6NTE6NDcuMDAwMDAwMDAwICswMTAwCi0rKysg Z2RiLTcuNC41MC4yMDExMTIxOC9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTEtMTItMTkg MDA6MjU6MjYuMDgwODkxOTUwICswMTAwCi1AQCAtMjg0LDcgKzI4NCw3IEBAIHNvdXJjZV9zZWN0 aW9uX3NjcmlwdHMgKHN0cnVjdCBvYmpmaWxlICoKLSAJfQotIAotICAgICAgIG9wZW5lZCA9IGZp bmRfYW5kX29wZW5fc2NyaXB0IChmaWxlLCAxIC8qc2VhcmNoX3BhdGgqLywKLS0JCQkJICAgICAm c3RyZWFtLCAmZnVsbF9wYXRoKTsKLSsJCQkJICAgICAmc3RyZWFtLCAmZnVsbF9wYXRoLCAxIC8q IGZyb21fdHR5ICovKTsKLSAKLSAgICAgICAvKiBJZiBvbmUgc2NyaXB0IGlzbid0IGZvdW5kIGl0 J3Mgbm90IHVuY29tbW9uIGZvciBtb3JlIHRvIG5vdCBiZQotIAkgZm91bmQgZWl0aGVyLiAgV2Ug ZG9uJ3Qgd2FudCB0byBwcmludCBhbiBlcnJvciBtZXNzYWdlIGZvciBlYWNoCi1JbmRleDogZ2Ri LTcuNC41MC4yMDExMTIxOC9nZGIvY2xpL2NsaS1jbWRzLmgKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL2NsaS9jbGktY21kcy5oCTIwMTEtMTEtMDEgMTU6NTE6 MjMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvY2xpL2NsaS1j bWRzLmgJMjAxMS0xMi0xOSAwMDoyNToyNi4wODA4OTE5NTAgKzAxMDAKLUBAIC0xMjksNyArMTI5 LDggQEAgZXh0ZXJuIHZvaWQgc291cmNlX3NjcmlwdCAoY2hhciAqLCBpbnQpOwotIC8qIEV4cG9y dGVkIHRvIG9iamZpbGVzLmMuICAqLwotIAotIGV4dGVybiBpbnQgZmluZF9hbmRfb3Blbl9zY3Jp cHQgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBzZWFyY2hfcGF0aCwKLS0JCQkJIEZJTEUgKipzdHJl YW1wLCBjaGFyICoqZnVsbF9wYXRoKTsKLSsJCQkJIEZJTEUgKipzdHJlYW1wLCBjaGFyICoqZnVs bF9wYXRoLAotKwkJCQkgaW50IGZyb21fdHR5KTsKLSAKLSAvKiBDb21tYW5kIHRyYWNpbmcgc3Rh dGUuICAqLwotIAoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0wMW9mMTIucGF0Y2ggYi9nZGIt YXV0b2xvYWQtMDFvZjEyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmQzMmIyMWYKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYXV0b2xvYWQtMDFvZjEyLnBhdGNoCkBA IC0wLDAgKzEsNjUgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDEv bXNnMDAyMDIuaHRtbAorCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMS8yNCAxOToxMjoz MQkxLjEzNzcxCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMS8yNCAyMDo1NjozMwkxLjEz NzcyCisjIyAtMSwzICsxLDEyIEBACisrMjAxMi0wMS0yNCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4u a3JhdG9jaHZpbEByZWRoYXQuY29tPgorKworKwlDb2RlIGNsZWFudXAuCisrCSogY2xpL2NsaS1j bWRzLmMgKHNvdXJjZV9zY3JpcHRfZnJvbV9zdHJlYW0pOiBOZXZlciBmY2xvc2UgU1RSRUFNLgor KwlVcGRhdGUgdGhlIGZ1bmN0aW9uIGNvbW1lbnQgZm9yIGl0LgorKwkoc291cmNlX3NjcmlwdF93 aXRoX3NlYXJjaCk6IENhbGwgbWFrZV9jbGVhbnVwX2ZjbG9zZSBmb3IgU1RSRUFNLgorKwkqIGNs aS9jbGktc2NyaXB0LmMgKHNjcmlwdF9mcm9tX2ZpbGUpOiBEbyBub3QgY2FsbCBtYWtlX2NsZWFu dXBfZmNsb3NlCisrCWZvciBTVFJFQU0uCisrCisgMjAxMi0wMS0yNCAgUGVkcm8gQWx2ZXMgIDxw YWx2ZXNAcmVkaGF0LmNvbT4KKyAKKyAJKiBicmVha3BvaW50LmMgKGJwc3RhdF9zdG9wX3N0YXR1 cyk6IE1vdmluZyBjbGVhcmluZyBwcmludF9pdAorLS0tIHNyYy9nZGIvY2xpL2NsaS1jbWRzLmMJ MjAxMi8wMS8yMyAxNjozNzowMwkxLjEyMworKysrIHNyYy9nZGIvY2xpL2NsaS1jbWRzLmMJMjAx Mi8wMS8yNCAyMDo1NjozMwkxLjEyNAorQEAgLTUyNyw4ICs1MjcsNyBAQAorICAgcmV0dXJuIDE7 CisgfQorIAorLS8qIExvYWQgc2NyaXB0IEZJTEUsIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gb3Bl bmVkIGFzIFNUUkVBTS4KKy0gICBTVFJFQU0gaXMgY2xvc2VkIGJlZm9yZSB3ZSByZXR1cm4uICAq LworKy8qIExvYWQgc2NyaXB0IEZJTEUsIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gb3BlbmVkIGFz IFNUUkVBTS4gICovCisgCisgc3RhdGljIHZvaWQKKyBzb3VyY2Vfc2NyaXB0X2Zyb21fc3RyZWFt IChGSUxFICpzdHJlYW0sIGNvbnN0IGNoYXIgKmZpbGUpCitAQCAtNTU2LDEyICs1NTUsOSBAQAor IAkgIGVsc2UKKyAJICAgIHsKKyAJICAgICAgLyogTm9wZSwganVzdCBwdW50LiAgKi8KKy0JICAg ICAgZmNsb3NlIChzdHJlYW0pOworIAkgICAgICB0aHJvd19leGNlcHRpb24gKGUpOworIAkgICAg fQorIAl9CistICAgICAgZWxzZQorLQlmY2xvc2UgKHN0cmVhbSk7CisgICAgIH0KKyAgIGVsc2UK KyAgICAgc2NyaXB0X2Zyb21fZmlsZSAoc3RyZWFtLCBmaWxlKTsKK0BAIC01OTUsNiArNTkxLDcg QEAKKyAgICAgfQorIAorICAgb2xkX2NsZWFudXBzID0gbWFrZV9jbGVhbnVwICh4ZnJlZSwgZnVs bF9wYXRoKTsKKysgIG1ha2VfY2xlYW51cF9mY2xvc2UgKHN0cmVhbSk7CisgICAvKiBUaGUgcHl0 aG9uIHN1cHBvcnQgcmVvcGVucyB0aGUgZmlsZSwgc28gd2UgbmVlZCB0byBwYXNzIGZ1bGxfcGF0 aCBoZXJlCisgICAgICBpbiBjYXNlIHRoZSBmaWxlIHdhcyBmb3VuZCBvbiB0aGUgc2VhcmNoIHBh dGguICBJdCdzIHVzZWZ1bCB0byBkbyB0aGlzCisgICAgICBhbnl3YXkgc28gdGhhdCBlcnJvciBt ZXNzYWdlcyBzaG93IHRoZSBhY3R1YWwgZmlsZSB1c2VkLiAgQnV0IG9ubHkgZG8KKy0tLSBzcmMv Z2RiL2NsaS9jbGktc2NyaXB0LmMJMjAxMi8wMS8wNCAwODoxNzoxNwkxLjczCisrKysgc3JjL2dk Yi9jbGkvY2xpLXNjcmlwdC5jCTIwMTIvMDEvMjQgMjA6NTY6MzMJMS43NAorQEAgLTE2MTQsMTEg KzE2MTQsOSBAQAorICAgaWYgKHN0cmVhbSA9PSBOVUxMKQorICAgICBpbnRlcm5hbF9lcnJvciAo X19GSUxFX18sIF9fTElORV9fLCBfKCJjYWxsZWQgd2l0aCBOVUxMIGZpbGUgcG9pbnRlciEiKSk7 CisgCistICBvbGRfY2xlYW51cHMgPSBtYWtlX2NsZWFudXBfZmNsb3NlIChzdHJlYW0pOworLQor ICAgb2xkX2xpbmVzLm9sZF9saW5lID0gc291cmNlX2xpbmVfbnVtYmVyOworICAgb2xkX2xpbmVz Lm9sZF9maWxlID0gc291cmNlX2ZpbGVfbmFtZTsKKy0gIG1ha2VfY2xlYW51cCAoc291cmNlX2Ns ZWFudXBfbGluZXMsICZvbGRfbGluZXMpOworKyAgb2xkX2NsZWFudXBzID0gbWFrZV9jbGVhbnVw IChzb3VyY2VfY2xlYW51cF9saW5lcywgJm9sZF9saW5lcyk7CisgICBzb3VyY2VfbGluZV9udW1i ZXIgPSAwOworICAgc291cmNlX2ZpbGVfbmFtZSA9IGZpbGU7CisgICAvKiBUaGlzIHdpbGwgZ2V0 IHNldCBldmVyeSB0aW1lIHdlIHJlYWQgYSBsaW5lLiAgU28gaXQgd29uJ3Qgc3RheSAiIgoKZGlm ZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0wMm9mMTIucGF0Y2ggYi9nZGItYXV0b2xvYWQtMDJvZjEy LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0NGM5YmIKLS0tIC9k ZXYvbnVsbAorKysgYi9nZGItYXV0b2xvYWQtMDJvZjEyLnBhdGNoCkBAIC0wLDAgKzEsMTAzIEBA CitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTAxL21zZzAwMjA1Lmh0bWwK KworLS0tIHNyYy9nZGIvZ2RiX3ZlY3MuaAorKysrIHNyYy9nZGIvZ2RiX3ZlY3MuaAkyMDEyLTA0 LTE3IDIyOjA0OjIzLjgxODY2NjAwMCArMDAwMAorQEAgLTAsMCArMSwyOCBAQAorKy8qIFNvbWUg Y29tbW9ubHktdXNlZCBWRUMgdHlwZXMuCisrCisrICAgQ29weXJpZ2h0IChDKSAyMDEyIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdE Qi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysg ICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAg IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrCisr I2lmbmRlZiBHREJfVkVDU19ICisrI2RlZmluZSBHREJfVkVDU19ICisrCisrI2luY2x1ZGUgInZl Yy5oIgorKworK0RFRl9WRUNfUCAoY2hhcl9wdHIpOworKworKyNlbmRpZiAvKiBHREJfVkVDU19I ICovCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMS8yNCAyMTozMjo1NgkxLjEzNzc0Cisj IyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMS8yNCAyMTozNjozNwkxLjEzNzc1CisjIyAtMSwz ICsxLDEwIEBACisrMjAxMi0wMS0yNCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgor KworKwkqIGFkYS1sYW5nLmM6IEluY2x1ZGUgZ2RiX3ZlY3MuaC4KKysJKiBjaGFyc2V0LmM6IElu Y2x1ZGUgZ2RiX3ZlY3MuaC4KKysJKiB0cmFjZXBvaW50Lmg6IEluY2x1ZGUgZ2RiX3ZlY3MuaC4K KysJKiBnZGJfdmVjcy5oOiBOZXcgZmlsZS4KKysKKyAyMDEyLTAxLTI0ICBQZWRybyBBbHZlcyAg PHBlZHJvQGNvZGVzb3VyY2VyeS5jb20+CisgCisgCSogYnJlYWtwb2ludC5jIChicmVha3BvaW50 X2hpdF9jYXRjaF9mb3JrKQorLS0tIHNyYy9nZGIvYWRhLWxhbmcuYwkyMDEyLzAxLzA2IDAzOjM0 OjQ1CTEuMzMwCisrKysgc3JjL2dkYi9hZGEtbGFuZy5jCTIwMTIvMDEvMjQgMjE6MzY6MzcJMS4z MzEKK0BAIC01Nyw2ICs1Nyw3IEBACisgI2luY2x1ZGUgIm9ic2VydmVyLmgiCisgI2luY2x1ZGUg InZlYy5oIgorICNpbmNsdWRlICJzdGFjay5oIgorKyNpbmNsdWRlICJnZGJfdmVjcy5oIgorIAor ICNpbmNsdWRlICJwc3ltdGFiLmgiCisgI2luY2x1ZGUgInZhbHVlLmgiCitAQCAtNTYyOCw4ICs1 NjI5LDYgQEAKKyAgIHJldHVybiBzeW1fbmFtZTsKKyB9CisgCistREVGX1ZFQ19QIChjaGFyX3B0 cik7CistCisgLyogQSBjb21wYW5pb24gZnVuY3Rpb24gdG8gYWRhX21ha2Vfc3ltYm9sX2NvbXBs ZXRpb25fbGlzdCgpLgorICAgIENoZWNrIGlmIFNZTV9OQU1FIHJlcHJlc2VudHMgYSBzeW1ib2wg d2hpY2ggbmFtZSB3b3VsZCBiZSBzdWl0YWJsZQorICAgIHRvIGNvbXBsZXRlIFRFWFQgKFRFWFRf TEVOIGlzIHRoZSBsZW5ndGggb2YgVEVYVCksIGluIHdoaWNoIGNhc2UKKy0tLSBzcmMvZ2RiL2No YXJzZXQuYwkyMDEyLzAxLzA0IDA4OjE3OjAwCTEuNDYKKysrKyBzcmMvZ2RiL2NoYXJzZXQuYwky MDEyLzAxLzI0IDIxOjM2OjM3CTEuNDcKK0BAIC0yNyw2ICsyNyw3IEBACisgI2luY2x1ZGUgInZl Yy5oIgorICNpbmNsdWRlICJlbnZpcm9uLmgiCisgI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKKysj aW5jbHVkZSAiZ2RiX3ZlY3MuaCIKKyAKKyAjaW5jbHVkZSA8c3RkZGVmLmg+CisgI2luY2x1ZGUg ImdkYl9zdHJpbmcuaCIKK0BAIC03MTcsOCArNzE4LDYgQEAKKyAKKyBleHRlcm4gaW5pdGlhbGl6 ZV9maWxlX2Z0eXBlIF9pbml0aWFsaXplX2NoYXJzZXQ7IC8qIC1XbWlzc2luZy1wcm90b3R5cGUg Ki8KKyAKKy1ERUZfVkVDX1AgKGNoYXJfcHRyKTsKKy0KKyBzdGF0aWMgVkVDIChjaGFyX3B0cikg KmNoYXJzZXRzOworIAorICNpZmRlZiBQSE9OWV9JQ09OVgorLS0tIHNyYy9nZGIvdHJhY2Vwb2lu dC5oCTIwMTIvMDEvMDQgMDg6Mjc6NTcJMS40NgorKysrIHNyYy9nZGIvdHJhY2Vwb2ludC5oCTIw MTIvMDEvMjQgMjE6MzY6MzcJMS40NworQEAgLTIyLDYgKzIyLDcgQEAKKyAjaW5jbHVkZSAiYnJl YWtwb2ludC5oIgorICNpbmNsdWRlICJ0YXJnZXQuaCIKKyAjaW5jbHVkZSAibWVtcmFuZ2UuaCIK KysjaW5jbHVkZSAiZ2RiX3ZlY3MuaCIKKyAKKyAvKiBBIHRyYWNlIHN0YXRlIHZhcmlhYmxlIGlz IGEgdmFsdWUgbWFuYWdlZCBieSBhIHRhcmdldCBiZWluZworICAgIHRyYWNlZC4gIEEgdHJhY2Ug c3RhdGUgdmFyaWFibGUgKG9yIHRzdiBmb3Igc2hvcnQpIGNhbiBiZSBhY2Nlc3NlZAorQEAgLTE0 Myw4ICsxNDQsNiBAQAorIAorIC8qIFN0cnVjdCB0byBjb2xsZWN0IHJhbmRvbSBpbmZvIGFib3V0 IHRyYWNlcG9pbnRzIG9uIHRoZSB0YXJnZXQuICAqLworIAorLURFRl9WRUNfUCAoY2hhcl9wdHIp OworLQorIHN0cnVjdCB1cGxvYWRlZF90cAorIHsKKyAgIGludCBudW1iZXI7CgpkaWZmIC0tZ2l0 IGEvZ2RiLWF1dG9sb2FkLTAzb2YxMi5wYXRjaCBiL2dkYi1hdXRvbG9hZC0wM29mMTIucGF0Y2gK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBlZmM4YwotLS0gL2Rldi9udWxs CisrKyBiL2dkYi1hdXRvbG9hZC0wM29mMTIucGF0Y2gKQEAgLTAsMCArMSwyMTUgQEAKK2h0dHA6 Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDEvbXNnMDAyMTkuaHRtbAorCisjIyMg c3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMS8yNiAxNjo0NDoyOQkxLjEzNzgwCisjIyMgc3JjL2dk Yi9DaGFuZ2VMb2cJMjAxMi8wMS8yNiAyMTo1NDo0MgkxLjEzNzgxCisjIyAtMSwzICsxLDIyIEBA CisrMjAxMi0wMS0yNiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29t PgorKworKwlEbyBub3Qgb3BlbiBzY3JpcHQgZmlsZW5hbWVzIHR3aWNlLgorKwkqIGNsaS9jbGkt Y21kcy5jIChzb3VyY2Vfc2NyaXB0X2Zyb21fc3RyZWFtKTogUGFzcyB0bworKwlzb3VyY2VfcHl0 aG9uX3NjcmlwdCBhbHNvIFNUUkVBTS4KKysJKiBweXRob24vcHktYXV0by1sb2FkLmMgKHNvdXJj ZV9zZWN0aW9uX3NjcmlwdHMpOiBQYXNzIHRvCisrCXNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9v YmpmaWxlIGFsc28gU1RSRUFNLgorKwkoYXV0b19sb2FkX29iamZpbGVfc2NyaXB0KTogUGFzcyB0 byBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZQorKwlhbHNvIElOUFVULgorKwkqIHB5 dGhvbi9weXRob24taW50ZXJuYWwuaCAoc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUp OiBOZXcKKysJcGFyYW1ldGVyIGZpbGUsIHJlbmFtZSBwYXJhbWV0ZXIgZmlsZSB0byBmaWxlbmFt ZS4KKysJKiBweXRob24vcHl0aG9uLmMgKHB5dGhvbl9ydW5fc2ltcGxlX2ZpbGUpOiBDYWxsIFB5 UnVuX1NpbXBsZUZpbGUKKysJaW5zdGVhZCBpZiAhX1dJTjMyLiAgVXBkYXRlIHRoZSBmdW5jdGlv biBjb21tZW50LgorKwkoc291cmNlX3B5dGhvbl9zY3JpcHQsIHNvdXJjZV9weXRob25fc2NyaXB0 X2Zvcl9vYmpmaWxlKQorKwkoc291cmNlX3B5dGhvbl9zY3JpcHQpOiBOZXcgcGFyYW1ldGVyIGZp bGUsIHJlbmFtZSBwYXJhbWV0ZXIgZmlsZSB0bworKwlmaWxlbmFtZS4gIFBhc3MgRklMRU5BTUUg dG8gcHl0aG9uX3J1bl9zaW1wbGVfZmlsZS4KKysJKiBweXRob24vcHl0aG9uLmggKHNvdXJjZV9w eXRob25fc2NyaXB0KTogTmV3IHBhcmFtZXRlciBmaWxlLCByZW5hbWUKKysJcGFyYW1ldGVyIGZp bGUgdG8gZmlsZW5hbWUuCisrCisgMjAxMi0wMS0yNiAgUGVkcm8gQWx2ZXMgIDxwYWx2ZXNAcmVk aGF0LmNvbT4KKyAKKyAJKiBjb3JlbG93LmMgKGNvcmVfaGFzX2Zha2VfcGlkKTogRGVsZXRlLgor SW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NsaS9jbGktY21kcy5jCis9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9jbGkvY2xpLWNtZHMuYwkyMDEyLTAx LTA0IDA5OjE3OjE2LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L2NsaS9jbGktY21kcy5jCTIwMTItMDQtMTggMDA6NDE6NDIuNjk2ODU1NDMwICswMjAwCitAQCAt NTI5LDkgKzUyOSw3IEBAIHNvdXJjZV9zY3JpcHRfZnJvbV9zdHJlYW0gKEZJTEUgKnN0cmVhbSwK KyAKKyAgICAgICBUUllfQ0FUQ0ggKGUsIFJFVFVSTl9NQVNLX0VSUk9SKQorIAl7CistICAgICAg ICAgIC8qIFRoZSBweXRob24gc3VwcG9ydCByZW9wZW5zIHRoZSBmaWxlIHVzaW5nIHB5dGhvbiBm dW5jdGlvbnMsCistICAgICAgICAgICAgIHNvIHRoZXJlJ3Mgbm8gcG9pbnQgaW4gcGFzc2luZyBT VFJFQU0gaGVyZS4gICovCistCSAgc291cmNlX3B5dGhvbl9zY3JpcHQgKGZpbGUpOworKwkgIHNv dXJjZV9weXRob25fc2NyaXB0IChzdHJlYW0sIGZpbGUpOworIAl9CisgICAgICAgaWYgKGUucmVh c29uIDwgMCkKKyAJeworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weS1h dXRvLWxvYWQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIv cHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTItMDEtMDQgMDk6MTc6MjUuMDAwMDAwMDAwICswMTAw CisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTIt MDQtMTggMDA6NDE6NDIuNjk2ODU1NDMwICswMjAwCitAQCAtMzEyLDcgKzMxMiw3IEBAIFVzZSBg aW5mbyBhdXRvLWxvYWQtc2NyaXB0cyBbUkVHRVhQXScgdG8KKyAJeworIAkgIC8qIElmIHRoaXMg ZmlsZSBpcyBub3QgY3VycmVudGx5IGxvYWRlZCwgbG9hZCBpdC4gICovCisgCSAgaWYgKCEgaW5f aGFzaF90YWJsZSkKKy0JICAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpm aWxlLCBmdWxsX3BhdGgpOworKwkgICAgc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUg KG9iamZpbGUsIHN0cmVhbSwgZnVsbF9wYXRoKTsKKyAJICBmY2xvc2UgKHN0cmVhbSk7CisgCSAg eGZyZWUgKGZ1bGxfcGF0aCk7CisgCX0KK0BAIC00MzEsNyArNDMxLDcgQEAgYXV0b19sb2FkX29i amZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZQorIAkgSXQncyBoaWdobHkgdW5saWtlbHkgdGhh dCB3ZSdkIGV2ZXIgbG9hZCBpdCB0d2ljZSwKKyAJIGFuZCB0aGVzZSBzY3JpcHRzIGFyZSByZXF1 aXJlZCB0byBiZSBpZGVtcG90ZW50IHVuZGVyIG11bHRpcGxlCisgCSBsb2FkcyBhbnl3YXkuICAq LworLSAgICAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBkZWJ1 Z2ZpbGUpOworKyAgICAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxl LCBpbnB1dCwgZGVidWdmaWxlKTsKKyAgICAgICBmY2xvc2UgKGlucHV0KTsKKyAgICAgfQorIAor SW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwuaAor PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvcHl0aG9uL3B5dGhv bi1pbnRlcm5hbC5oCTIwMTItMDEtMDQgMDk6MTc6MjUuMDAwMDAwMDAwICswMTAwCisrKysgZ2Ri LTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5oCTIwMTItMDQtMTgg MDA6NDE6NDIuNjk2ODU1NDMwICswMjAwCitAQCAtMjg5LDggKzI4OSw4IEBAIGV4dGVybiBjb25z dCBzdHJ1Y3QgbGFuZ3VhZ2VfZGVmbiAqcHl0aG8KKyAKKyB2b2lkIGdkYnB5X3ByaW50X3N0YWNr ICh2b2lkKTsKKyAKKy12b2lkIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKy0JCQkJICAgICAgIGNvbnN0IGNoYXIgKmZpbGUpOworK3Zv aWQgc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLCBGSUxFICpmaWxlLAorKwkJCQkgICAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUpOworIAor IFB5T2JqZWN0ICpweXRob25fc3RyaW5nX3RvX3VuaWNvZGUgKFB5T2JqZWN0ICpvYmopOworIGNo YXIgKnVuaWNvZGVfdG9fdGFyZ2V0X3N0cmluZyAoUHlPYmplY3QgKnVuaWNvZGVfc3RyKTsKK0lu ZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHl0aG9uLmMKKz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weXRob24uYwkyMDEyLTA0 LTE4IDAwOjQxOjMwLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L3B5dGhvbi9weXRob24uYwkyMDEyLTA0LTE4IDAwOjQxOjQyLjY5Njg1NTQzMCArMDIwMAorQEAg LTE1NCwzNCArMTU0LDMxIEBAIGVuc3VyZV9weXRob25fZW52IChzdHJ1Y3QgZ2RiYXJjaCAqZ2Ri YXIKKyAgIHJldHVybiBtYWtlX2NsZWFudXAgKHJlc3RvcmVfcHl0aG9uX2VudiwgZW52KTsKKyB9 CisgCistLyogQSB3cmFwcGVyIGFyb3VuZCBQeVJ1bl9TaW1wbGVGaWxlLiAgRklMRU5BTUUgaXMg dGhlIG5hbWUgb2YKKy0gICB0aGUgUHl0aG9uIHNjcmlwdCB0byBydW4uCisrLyogQSB3cmFwcGVy IGFyb3VuZCBQeVJ1bl9TaW1wbGVGaWxlLiAgRklMRSBpcyB0aGUgUHl0aG9uIHNjcmlwdCB0byBy dW4KKysgICBuYW1lZCBGSUxFTkFNRS4KKyAKKy0gICBPbmUgb2YgdGhlIHBhcmFtZXRlcnMgb2Yg UHlSdW5fU2ltcGxlRmlsZSBpcyBhIEZJTEUgKi4KKy0gICBUaGUgcHJvYmxlbSBpcyB0aGF0IHR5 cGUgRklMRSBpcyBleHRyZW1lbHkgc3lzdGVtIGFuZCBjb21waWxlcgorLSAgIGRlcGVuZGVudC4g IFNvLCB1bmxlc3MgdGhlIFB5dGhvbiBsaWJyYXJ5IGhhcyBiZWVuIGNvbXBpbGVkIHVzaW5nCist ICAgdGhlIHNhbWUgYnVpbGQgZW52aXJvbm1lbnQgYXMgR0RCLCB3ZSBydW4gdGhlIHJpc2sgb2Yg Z2V0dGluZworLSAgIGEgY3Jhc2ggZHVlIHRvIGluY29uc2lzdGVuY2llcyBiZXR3ZWVuIHRoZSBk ZWZpbml0aW9uIHVzZWQgYnkgR0RCLAorLSAgIGFuZCB0aGUgZGVmaW5pdGlvbiB1c2VkIGJ5IFB5 dGhvbi4gIEEgbWlzbWF0Y2ggY2FuIHZlcnkgbGlrZWx5CistICAgbGVhZCB0byBhIGNyYXNoLgor LQorLSAgIFRoZXJlIGlzIGFsc28gdGhlIHNpdHVhdGlvbiB3aGVyZSB0aGUgUHl0aG9uIGxpYnJh cnkgYW5kIEdEQgorLSAgIGFyZSB1c2luZyB0d28gZGlmZmVyZW50IHZlcnNpb25zIG9mIHRoZSBD IHJ1bnRpbWUgbGlicmFyeS4KKy0gICBUaGlzIGlzIHBhcnRpY3VsYXJseSB2aXNpYmxlIG9uIFdp bmRvd3MsIHdoZXJlIGZldyB1c2VycyB3b3VsZAorLSAgIGJ1aWxkIFB5dGhvbiB0aGVtc2VsdmVz ICh0aGlzIGlzIG5vIHRyaXZpYWwgdGFzayBvbiB0aGlzIHBsYXRmb3JtKSwKKy0gICBhbmQgdGh1 cyB1c2UgYmluYXJpZXMgYnVpbHQgYnkgc29tZW9uZSBlbHNlIGluc3RlYWQuIFB5dGhvbiwKKy0g ICBiZWluZyBidWlsdCB3aXRoIFZDLCB3b3VsZCB1c2Ugb25lIHZlcnNpb24gb2YgdGhlIG1zdmNy IERMTAorLSAgIChFZy4gbXN2Y3IxMDAuZGxsKSwgd2hpbGUgTWluR1cgdXNlcyBtc3ZjcnQuZGxs LiAgQSBGSUxFICoKKy0gICBmcm9tIG9uZSBydW50aW1lIGRvZXMgbm90IG5lY2Vzc2FyaWx5IG9w ZXJhdGUgY29ycmVjdGx5IGluCisrICAgT24gV2luZG93cyBob3N0cyBmZXcgdXNlcnMgd291bGQg YnVpbGQgUHl0aG9uIHRoZW1zZWx2ZXMgKHRoaXMgaXMgbm8KKysgICB0cml2aWFsIHRhc2sgb24g dGhpcyBwbGF0Zm9ybSksIGFuZCB0aHVzIHVzZSBiaW5hcmllcyBidWlsdCBieQorKyAgIHNvbWVv bmUgZWxzZSBpbnN0ZWFkLiAgVGhlcmUgbWF5IGhhcHBlbiBzaXR1YXRpb24gd2hlcmUgdGhlIFB5 dGhvbgorKyAgIGxpYnJhcnkgYW5kIEdEQiBhcmUgdXNpbmcgdHdvIGRpZmZlcmVudCB2ZXJzaW9u cyBvZiB0aGUgQyBydW50aW1lCisrICAgbGlicmFyeS4gIFB5dGhvbiwgYmVpbmcgYnVpbHQgd2l0 aCBWQywgd291bGQgdXNlIG9uZSB2ZXJzaW9uIG9mIHRoZQorKyAgIG1zdmNyIERMTCAoRWcuIG1z dmNyMTAwLmRsbCksIHdoaWxlIE1pbkdXIHVzZXMgbXN2Y3J0LmRsbC4KKysgICBBIEZJTEUgKiBm cm9tIG9uZSBydW50aW1lIGRvZXMgbm90IG5lY2Vzc2FyaWx5IG9wZXJhdGUgY29ycmVjdGx5IGlu CisgICAgdGhlIG90aGVyIHJ1bnRpbWUuCisgCistICAgVG8gd29yayBhcm91bmQgdGhpcyBwb3Rl bnRpYWwgaXNzdWUsIHdlIGNyZWF0ZSB0aGUgRklMRSBvYmplY3QKKy0gICB1c2luZyBQeXRob24g cm91dGluZXMsIHRodXMgbWFraW5nIHN1cmUgdGhhdCBpdCBpcyBjb21wYXRpYmxlCistICAgd2l0 aCB0aGUgUHl0aG9uIGxpYnJhcnkuICAqLworKyAgIFRvIHdvcmsgYXJvdW5kIHRoaXMgcG90ZW50 aWFsIGlzc3VlLCB3ZSBjcmVhdGUgb24gV2luZG93cyBob3N0cyB0aGUKKysgICBGSUxFIG9iamVj dCB1c2luZyBQeXRob24gcm91dGluZXMsIHRodXMgbWFraW5nIHN1cmUgdGhhdCBpdCBpcworKyAg IGNvbXBhdGlibGUgd2l0aCB0aGUgUHl0aG9uIGxpYnJhcnkuICAqLworIAorIHN0YXRpYyB2b2lk CistcHl0aG9uX3J1bl9zaW1wbGVfZmlsZSAoY29uc3QgY2hhciAqZmlsZW5hbWUpCisrcHl0aG9u X3J1bl9zaW1wbGVfZmlsZSAoRklMRSAqZmlsZSwgY29uc3QgY2hhciAqZmlsZW5hbWUpCisgewor KyNpZm5kZWYgX1dJTjMyCisrCisrICBQeVJ1bl9TaW1wbGVGaWxlIChmaWxlLCBmaWxlbmFtZSk7 CisrCisrI2Vsc2UgLyogX1dJTjMyICovCisrCisgICBjaGFyICpmdWxsX3BhdGg7CisgICBQeU9i amVjdCAqcHl0aG9uX2ZpbGU7CisgICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cDsKK0BAIC0yMDEs NiArMTk4LDggQEAgcHl0aG9uX3J1bl9zaW1wbGVfZmlsZSAoY29uc3QgY2hhciAqZmlsZQorICAg bWFrZV9jbGVhbnVwX3B5X2RlY3JlZiAocHl0aG9uX2ZpbGUpOworICAgUHlSdW5fU2ltcGxlRmls ZSAoUHlGaWxlX0FzRmlsZSAocHl0aG9uX2ZpbGUpLCBmaWxlbmFtZSk7CisgICBkb19jbGVhbnVw cyAoY2xlYW51cCk7CisrCisrI2VuZGlmIC8qIF9XSU4zMiAqLworIH0KKyAKKyAvKiBHaXZlbiBh IGNvbW1hbmRfbGluZSwgcmV0dXJuIGEgY29tbWFuZCBzdHJpbmcgc3VpdGFibGUgZm9yIHBhc3Np bmcKK0BAIC02MjMsMTcgKzYyMiwxNyBAQCBnZGJweV9wYXJzZV9hbmRfZXZhbCAoUHlPYmplY3Qg KnNlbGYsIFB5CisgfQorIAorIC8qIFJlYWQgYSBmaWxlIGFzIFB5dGhvbiBjb2RlLgorLSAgIEZJ TEUgaXMgdGhlIG5hbWUgb2YgdGhlIGZpbGUuCisrICAgRklMRSBpcyB0aGUgZmlsZSB0byBydW4u ICBGSUxFTkFNRSBpcyBuYW1lIG9mIHRoZSBmaWxlIEZJTEUuCisgICAgVGhpcyBkb2VzIG5vdCB0 aHJvdyBhbnkgZXJyb3JzLiAgSWYgYW4gZXhjZXB0aW9uIG9jY3VycyBweXRob24gd2lsbCBwcmlu dAorICAgIHRoZSB0cmFjZWJhY2sgYW5kIGNsZWFyIHRoZSBlcnJvciBpbmRpY2F0b3IuICAqLwor IAorIHZvaWQKKy1zb3VyY2VfcHl0aG9uX3NjcmlwdCAoY29uc3QgY2hhciAqZmlsZSkKKytzb3Vy Y2VfcHl0aG9uX3NjcmlwdCAoRklMRSAqZmlsZSwgY29uc3QgY2hhciAqZmlsZW5hbWUpCisgewor ICAgc3RydWN0IGNsZWFudXAgKmNsZWFudXA7CisgCisgICBjbGVhbnVwID0gZW5zdXJlX3B5dGhv bl9lbnYgKGdldF9jdXJyZW50X2FyY2ggKCksIGN1cnJlbnRfbGFuZ3VhZ2UpOworLSAgcHl0aG9u X3J1bl9zaW1wbGVfZmlsZSAoZmlsZSk7CisrICBweXRob25fcnVuX3NpbXBsZV9maWxlIChmaWxl LCBmaWxlbmFtZSk7CisgICBkb19jbGVhbnVwcyAoY2xlYW51cCk7CisgfQorIAorQEAgLTEwNDEs MTkgKzEwNDAsMjAgQEAgZ2RicHlfcHJvZ3NwYWNlcyAoUHlPYmplY3QgKnVudXNlZDEsIFB5Twor ICAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlOyBpdCBpcyBOVUxMIGF0IG90aGVy IHRpbWVzLiAgKi8KKyBzdGF0aWMgc3RydWN0IG9iamZpbGUgKmdkYnB5X2N1cnJlbnRfb2JqZmls ZTsKKyAKKy0vKiBTZXQgdGhlIGN1cnJlbnQgb2JqZmlsZSB0byBPQkpGSUxFIGFuZCB0aGVuIHJl YWQgRklMRSBhcyBQeXRob24gY29kZS4KKy0gICBUaGlzIGRvZXMgbm90IHRocm93IGFueSBlcnJv cnMuICBJZiBhbiBleGNlcHRpb24gb2NjdXJzIHB5dGhvbiB3aWxsIHByaW50CistICAgdGhlIHRy YWNlYmFjayBhbmQgY2xlYXIgdGhlIGVycm9yIGluZGljYXRvci4gICovCisrLyogU2V0IHRoZSBj dXJyZW50IG9iamZpbGUgdG8gT0JKRklMRSBhbmQgdGhlbiByZWFkIEZJTEUgbmFtZWQgRklMRU5B TUUKKysgICBhcyBQeXRob24gY29kZS4gIFRoaXMgZG9lcyBub3QgdGhyb3cgYW55IGVycm9ycy4g IElmIGFuIGV4Y2VwdGlvbgorKyAgIG9jY3VycyBweXRob24gd2lsbCBwcmludCB0aGUgdHJhY2Vi YWNrIGFuZCBjbGVhciB0aGUgZXJyb3IgaW5kaWNhdG9yLiAgKi8KKyAKKyB2b2lkCistc291cmNl X3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBjb25z dCBjaGFyICpmaWxlKQorK3NvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSwgRklMRSAqZmlsZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUpCisgeworICAgc3RydWN0IGNsZWFudXAgKmNs ZWFudXBzOworIAorICAgY2xlYW51cHMgPSBlbnN1cmVfcHl0aG9uX2VudiAoZ2V0X29iamZpbGVf YXJjaCAob2JqZmlsZSksIGN1cnJlbnRfbGFuZ3VhZ2UpOworICAgZ2RicHlfY3VycmVudF9vYmpm aWxlID0gb2JqZmlsZTsKKyAKKy0gIHB5dGhvbl9ydW5fc2ltcGxlX2ZpbGUgKGZpbGUpOworKyAg cHl0aG9uX3J1bl9zaW1wbGVfZmlsZSAoZmlsZSwgZmlsZW5hbWUpOworIAorICAgZG9fY2xlYW51 cHMgKGNsZWFudXBzKTsKKyAgIGdkYnB5X2N1cnJlbnRfb2JqZmlsZSA9IE5VTEw7CitAQCAtMTEy OSw3ICsxMTI5LDcgQEAgZXZhbF9weXRob25fZnJvbV9jb250cm9sX2NvbW1hbmQgKHN0cnVjdAor IH0KKyAKKyB2b2lkCistc291cmNlX3B5dGhvbl9zY3JpcHQgKGNvbnN0IGNoYXIgKmZpbGUpCisr c291cmNlX3B5dGhvbl9zY3JpcHQgKEZJTEUgKmZpbGUsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQor IHsKKyAgIHRocm93X2Vycm9yIChVTlNVUFBPUlRFRF9FUlJPUiwKKyAJICAgICAgIF8oIlB5dGhv biBzY3JpcHRpbmcgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGNvcHkgb2YgR0RCLiIpKTsKK0lu ZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHl0aG9uLmgKKz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weXRob24uaAkyMDEyLTA0 LTE4IDAwOjQxOjMwLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L3B5dGhvbi9weXRob24uaAkyMDEyLTA0LTE4IDAwOjQxOjQyLjY5Nzg1NTQyNyArMDIwMAorQEAg LTMwLDcgKzMwLDcgQEAgZXh0ZXJuIHZvaWQgZmluaXNoX3B5dGhvbl9pbml0aWFsaXphdGlvbgor IAorIHZvaWQgZXZhbF9weXRob25fZnJvbV9jb250cm9sX2NvbW1hbmQgKHN0cnVjdCBjb21tYW5k X2xpbmUgKik7CisgCistdm9pZCBzb3VyY2VfcHl0aG9uX3NjcmlwdCAoY29uc3QgY2hhciAqZmls ZSk7Cisrdm9pZCBzb3VyY2VfcHl0aG9uX3NjcmlwdCAoRklMRSAqZmlsZSwgY29uc3QgY2hhciAq ZmlsZW5hbWUpOworIAorIHZvaWQgcnVuX3B5dGhvbl9zY3JpcHQgKGludCBhcmdjLCBjaGFyICoq YXJndik7CisgCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTA0b2YxMi5wYXRjaCBiL2dkYi1h dXRvbG9hZC0wNG9mMTIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u NjQ1YWM4NwotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1hdXRvbG9hZC0wNG9mMTIucGF0Y2gKQEAg LTAsMCArMSwxNDEgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDMv bXNnMDAyMzQuaHRtbAorCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMy8xOSAxODoxMzoz OQkxLjE0MDI1CisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMy8xOSAxODoxNjoxNwkxLjE0 MDI2CisjIyAtMSwzICsxLDE0IEBACisrMjAxMi0wMy0xOSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4u a3JhdG9jaHZpbEByZWRoYXQuY29tPgorKworKwlDb2RlIGNsZWFudXAuCisrCSogbWFpbi5jIChz dHJ1Y3QgY21kYXJnKTogTW92ZSBpdCBoZXJlIGZyb20gbWFpbi4gIEFkZCBtb3JlIGNvbW1lbnRz LgorKwkoY21kYXJnX3MsIFZFQyAoY21kYXJnX3MpKTogTmV3LgorKwkobWFpbik6IE1vdmUgc3Ry dWN0IGNtZGFyZyBmcm9tIGhlcmUuICBOZXcgdmFyaWFibGVzIGNtZGFyZ192ZWMgYW5kCisrCWNt ZGFyZ19wLiAgUmVtb3ZlIHZhcmlhYmxlcyBjbWRzaXplIGFuZCBuY21kIGFuZCB0aGVpciBpbml0 aWFsaXphdGlvbi4KKysJSW5zdGFsbCBjbGVhbnVwIGZvciBjbWRhcmdfdmVjLiAgVXBkYXRlIGZp bGxpbmcgZm9yIG9wdGlvbnMgJ3gnIGFuZAorKwknWCcuICBSZXBsYWNlIGNtZGFyZyBwcm9jZXNz aW5nIGJ5IGNtZGFyZ192ZWMgcHJvY2Vzc2luZy4gIFJlbW92ZSB4ZnJlZQorKwlvZiBDTURBUkcu CisrCisgMjAxMi0wMy0xOSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgorIAorIAkq IGdudS12My1hYmkuYyAoZ251djNfcHJpbnRfdnRhYmxlKTogSW5pdGlhbGl6ZSAncmVzdWx0X3Zl YycuCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbWFpbi5jCis9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9tYWluLmMJMjAxMi0wNC0xOCAwMDo0MToz MS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMJMjAx Mi0wNC0xOCAwMDo0MjoxNS4zNTQ3NzIzMzcgKzAyMDAKK0BAIC0yNzcsNiArMjc3LDI1IEBAIGV4 ZWNfb3JfY29yZV9maWxlX2F0dGFjaCAoY2hhciAqZmlsZW5hbWUKKyAgICAgfQorIH0KKyAKKysv KiBBcmd1bWVudHMgb2YgLS1jb21tYW5kIG9wdGlvbiBhbmQgaXRzIGNvdW50ZXJwYXJ0LiAgKi8K Kyt0eXBlZGVmIHN0cnVjdCBjbWRhcmcgeworKyAgLyogVHlwZSBvZiB0aGlzIG9wdGlvbi4gICov CisrICBlbnVtIHsKKysgICAgLyogT3B0aW9uIHR5cGUgLXguICAqLworKyAgICBDTURBUkdfRklM RSwKKysKKysgICAgLyogT3B0aW9uIHR5cGUgLWV4LiAgKi8KKysgICAgQ01EQVJHX0NPTU1BTkQK KysgIH0gdHlwZTsKKysKKysgIC8qIFZhbHVlIG9mIHRoaXMgb3B0aW9uIC0gZmlsZW5hbWUgb3Ig dGhlIEdEQiBjb21tYW5kIGl0c2VsZi4gIFN0cmluZyBtZW1vcnkKKysgICAgIGlzIG5vdCBvd25l ZCBieSB0aGlzIHN0cnVjdHVyZSBkZXNwaXRlIGl0IGlzICdjb25zdCcuICAqLworKyAgY2hhciAq c3RyaW5nOworK30gY21kYXJnX3M7CisrCisrLyogRGVmaW5lIHR5cGUgVkVDIChjbWRhcmdfcyku ICAqLworK0RFRl9WRUNfTyAoY21kYXJnX3MpOworKworIHN0YXRpYyBpbnQKKyBjYXB0dXJlZF9t YWluICh2b2lkICpkYXRhKQorIHsKK0BAIC0zMDMsMTcgKzMyMiw4IEBAIGNhcHR1cmVkX21haW4g KHZvaWQgKmRhdGEpCisgICBzdGF0aWMgaW50IHByaW50X3ZlcnNpb247CisgCisgICAvKiBQb2lu dGVycyB0byBhbGwgYXJndW1lbnRzIG9mIC0tY29tbWFuZCBvcHRpb24uICAqLworLSAgc3RydWN0 IGNtZGFyZyB7CistICAgIGVudW0geworLSAgICAgIENNREFSR19GSUxFLAorLSAgICAgIENNREFS R19DT01NQU5ECistICAgIH0gdHlwZTsKKy0gICAgY2hhciAqc3RyaW5nOworLSAgfSAqY21kYXJn OworLSAgLyogQWxsb2NhdGVkIHNpemUgb2YgY21kYXJnLiAgKi8KKy0gIGludCBjbWRzaXplOwor LSAgLyogTnVtYmVyIG9mIGVsZW1lbnRzIG9mIGNtZGFyZyB1c2VkLiAgKi8KKy0gIGludCBuY21k OworKyAgVkVDIChjbWRhcmdfcykgKmNtZGFyZ192ZWMgPSBOVUxMOworKyAgc3RydWN0IGNtZGFy ZyAqY21kYXJnX3A7CisgCisgICAvKiBJbmRpY2VzIG9mIGFsbCBhcmd1bWVudHMgb2YgLS1kaXJl Y3Rvcnkgb3B0aW9uLiAgKi8KKyAgIGNoYXIgKipkaXJhcmc7CitAQCAtMzQ5LDkgKzM1OSw3IEBA IGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCisgICBiaW5kdGV4dGRvbWFpbiAoUEFDS0FHRSwg TE9DQUxFRElSKTsKKyAgIHRleHRkb21haW4gKFBBQ0tBR0UpOworIAorLSAgY21kc2l6ZSA9IDE7 CistICBjbWRhcmcgPSAoc3RydWN0IGNtZGFyZyAqKSB4bWFsbG9jIChjbWRzaXplICogc2l6ZW9m ICgqY21kYXJnKSk7CistICBuY21kID0gMDsKKysgIG1ha2VfY2xlYW51cCAoVkVDX2NsZWFudXAg KGNtZGFyZ19zKSwgJmNtZGFyZ192ZWMpOworICAgZGlyc2l6ZSA9IDE7CisgICBkaXJhcmcgPSAo Y2hhciAqKikgeG1hbGxvYyAoZGlyc2l6ZSAqIHNpemVvZiAoKmRpcmFyZykpOworICAgbmRpciA9 IDA7CitAQCAtNTgyLDI0ICs1OTAsMTkgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKKyAJ ICAgIHBpZGFyZyA9IG9wdGFyZzsKKyAJICAgIGJyZWFrOworIAkgIGNhc2UgJ3gnOgorLQkgICAg Y21kYXJnW25jbWRdLnR5cGUgPSBDTURBUkdfRklMRTsKKy0JICAgIGNtZGFyZ1tuY21kKytdLnN0 cmluZyA9IG9wdGFyZzsKKy0JICAgIGlmIChuY21kID49IGNtZHNpemUpCistCSAgICAgIHsKKy0J CWNtZHNpemUgKj0gMjsKKy0JCWNtZGFyZyA9IHhyZWFsbG9jICgoY2hhciAqKSBjbWRhcmcsCist CQkJCSAgIGNtZHNpemUgKiBzaXplb2YgKCpjbWRhcmcpKTsKKy0JICAgICAgfQorKwkgICAgewor KwkgICAgICBzdHJ1Y3QgY21kYXJnIGNtZGFyZyA9IHsgQ01EQVJHX0ZJTEUsIG9wdGFyZyB9Owor KworKwkgICAgICBWRUNfc2FmZV9wdXNoIChjbWRhcmdfcywgY21kYXJnX3ZlYywgJmNtZGFyZyk7 CisrCSAgICB9CisgCSAgICBicmVhazsKKyAJICBjYXNlICdYJzoKKy0JICAgIGNtZGFyZ1tuY21k XS50eXBlID0gQ01EQVJHX0NPTU1BTkQ7CistCSAgICBjbWRhcmdbbmNtZCsrXS5zdHJpbmcgPSBv cHRhcmc7CistCSAgICBpZiAobmNtZCA+PSBjbWRzaXplKQorLQkgICAgICB7CistCQljbWRzaXpl ICo9IDI7CistCQljbWRhcmcgPSB4cmVhbGxvYyAoKGNoYXIgKikgY21kYXJnLAorLQkJCQkgICBj bWRzaXplICogc2l6ZW9mICgqY21kYXJnKSk7CistCSAgICAgIH0KKysJICAgIHsKKysJICAgICAg c3RydWN0IGNtZGFyZyBjbWRhcmcgPSB7IENNREFSR19DT01NQU5ELCBvcHRhcmcgfTsKKysKKysJ ICAgICAgVkVDX3NhZmVfcHVzaCAoY21kYXJnX3MsIGNtZGFyZ192ZWMsICZjbWRhcmcpOworKwkg ICAgfQorKwkgICAgYnJlYWs7CisgCSAgICBicmVhazsKKyAJICBjYXNlICdCJzoKKyAJICAgIGJh dGNoX2ZsYWcgPSBiYXRjaF9zaWxlbnQgPSAxOworQEAgLTk5MCwxNiArOTkzLDE4IEBAIGNhcHR1 cmVkX21haW4gKHZvaWQgKmRhdGEpCisgICBBTExfT0JKRklMRVMgKG9iamZpbGUpCisgICAgIGxv YWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChvYmpmaWxlKTsKKyAKKy0gIGZvciAoaSA9IDA7 IGkgPCBuY21kOyBpKyspCisrICBmb3IgKGkgPSAwOyBWRUNfaXRlcmF0ZSAoY21kYXJnX3MsIGNt ZGFyZ192ZWMsIGksIGNtZGFyZ19wKTsgaSsrKQorKyAgICBzd2l0Y2ggKGNtZGFyZ19wLT50eXBl KQorICAgICB7CistICAgICAgaWYgKGNtZGFyZ1tpXS50eXBlID09IENNREFSR19GSUxFKQorLSAg ICAgICAgY2F0Y2hfY29tbWFuZF9lcnJvcnMgKHNvdXJjZV9zY3JpcHQsIGNtZGFyZ1tpXS5zdHJp bmcsCisrICAgICAgY2FzZSBDTURBUkdfRklMRToKKysgICAgICAgIGNhdGNoX2NvbW1hbmRfZXJy b3JzIChzb3VyY2Vfc2NyaXB0LCBjbWRhcmdfcC0+c3RyaW5nLAorIAkJCSAgICAgICFiYXRjaF9m bGFnLCBSRVRVUk5fTUFTS19BTEwpOworLSAgICAgIGVsc2UgIC8qIGNtZGFyZ1tpXS50eXBlID09 IENNREFSR19DT01NQU5EICovCistICAgICAgICBjYXRjaF9jb21tYW5kX2Vycm9ycyAoZXhlY3V0 ZV9jb21tYW5kLCBjbWRhcmdbaV0uc3RyaW5nLAorKwlicmVhazsKKysgICAgICBjYXNlIENNREFS R19DT01NQU5EOgorKyAgICAgICAgY2F0Y2hfY29tbWFuZF9lcnJvcnMgKGV4ZWN1dGVfY29tbWFu ZCwgY21kYXJnX3AtPnN0cmluZywKKyAJCQkgICAgICAhYmF0Y2hfZmxhZywgUkVUVVJOX01BU0tf QUxMKTsKKysJYnJlYWs7CisgICAgIH0KKy0gIHhmcmVlIChjbWRhcmcpOworIAorICAgLyogUmVh ZCBpbiB0aGUgb2xkIGhpc3RvcnkgYWZ0ZXIgYWxsIHRoZSBjb21tYW5kIGZpbGVzIGhhdmUgYmVl bgorICAgICAgcmVhZC4gICovCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTA1b2YxMi5wYXRj aCBiL2dkYi1hdXRvbG9hZC0wNW9mMTIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uOGRkOGNjMwotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1hdXRvbG9hZC0wNW9mMTIu cGF0Y2gKQEAgLTAsMCArMSwyNDQgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3Zz LzIwMTItMDMvbXNnMDAyMzUuaHRtbAorCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMy8x OSAxODoxNjoxNwkxLjE0MDI2CisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMy8xOSAxODox OToyMwkxLjE0MDI3CisjIyAtMSw1ICsxLDE4IEBACisgMjAxMi0wMy0xOSAgSmFuIEtyYXRvY2h2 aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorIAorKwkqIE5FV1M6IERlc2NyaWJlIG5l dyBvcHRpb25zIC0taW5pdC1jb21tYW5kPUZJTEUsIC1peCBhbmQKKysJLS1pbml0LWV2YWwtY29t bWFuZD1DT01NQU5ELCAtaWV4LgorKwkqIG1haW4uYyAoc3RydWN0IGNtZGFyZyk6IE5ldyBlbnVt IGl0ZW1zIENNREFSR19JTklUX0ZJTEUgYW5kCisrCUNNREFSR19JTklUX0NPTU1BTkQuCisrCShj YXB0dXJlZF9tYWluKTogTmV3IGVudW0gaXRlbXMgT1BUX0lYIGFuZCBPUFRfSUVYLiAgQWRkCisr CSJpbml0LWNvbW1hbmQiLCAiaW5pdC1ldmFsLWNvbW1hbmQiLCAiaXgiIGFuZCAiaWV4IiB0byB0 aGUgdmFyaWFibGUKKysJbG9uZ19vcHRpb25zLiAgSGFuZGxlIE9QVF9JWCBhbmQgT1BUX0lFWC4g IFByb2Nlc3MgdGhlbSBmcm9tIENNREFSR19WRUMuCisrCU5ldyBjb21tZW50IGZvciBDTURBUkdf RklMRSBhbmQgQ01EQVJHX0NPTU1BTkQgcHJvY2Vzc2luZy4KKysJKHByaW50X2dkYl9oZWxwKTog RGVzY3JpYmUgLS1pbml0LWNvbW1hbmQ9RklMRSwgLWl4IGFuZAorKwktLWluaXQtZXZhbC1jb21t YW5kPUNPTU1BTkQsIC1pZXguCisrCisrMjAxMi0wMy0xOSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4u a3JhdG9jaHZpbEByZWRoYXQuY29tPgorKworIAlDb2RlIGNsZWFudXAuCisgCSogbWFpbi5jIChz dHJ1Y3QgY21kYXJnKTogTW92ZSBpdCBoZXJlIGZyb20gbWFpbi4gIEFkZCBtb3JlIGNvbW1lbnRz LgorIAkoY21kYXJnX3MsIFZFQyAoY21kYXJnX3MpKTogTmV3LgorSW5kZXg6IGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL05FV1MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9y aWcvZ2RiL05FV1MJMjAxMi0wNC0xOCAwMDo0MTozMC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi9ORVdTCTIwMTItMDQtMTggMDA6NDI6NTEuMjI2NjgxMDY4ICsw MjAwCitAQCAtMjgsNiArMjgsMTMgQEAKKyAgIG5vdyBzZXQgYSBicmVha3BvaW50IGluIGJ1aWxk L2djYy9leHByLmMsIGJ1dCBub3QKKyAgIGJ1aWxkL2xpYmNwcC9leHByLmMuCisgCisrKiBOZXcg Y29tbWFuZCBsaW5lIG9wdGlvbnMKKysKKystLWluaXQtY29tbWFuZD1GSUxFLCAtaXggICAgICAg ICAgTGlrZSAtLWNvbW1hbmQsIC14IGJ1dCBleGVjdXRlIGl0CisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJlZm9yZSBsb2FkaW5nIGluZmVyaW9yLgorKy0taW5pdC1ldmFsLWNv bW1hbmQ9Q09NTUFORCwgLWlleCBMaWtlIC0tZXZhbC1jb21tYW5kPUNPTU1BTkQsIC1leCBidXQK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZSBpdCBiZWZvcmUgbG9h ZGluZyBpbmZlcmlvci4KKysKKyAqKiogQ2hhbmdlcyBpbiBHREIgNy40CisgCisgKiBHREIgbm93 IGhhbmRsZXMgYW1iaWd1b3VzIGxpbmVzcGVjcyBtb3JlIGNvbnNpc3RlbnRseTsgdGhlIGV4aXN0 aW5nCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbWFpbi5jCis9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9tYWluLmMJMjAxMi0wNC0xOCAwMDo0Mjox NS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMJMjAx Mi0wNC0xOCAwMDo0Mjo1MS4yMjY2ODEwNjggKzAyMDAKK0BAIC0yODUsNyArMjg1LDEzIEBAIHR5 cGVkZWYgc3RydWN0IGNtZGFyZyB7CisgICAgIENNREFSR19GSUxFLAorIAorICAgICAvKiBPcHRp b24gdHlwZSAtZXguICAqLworLSAgICBDTURBUkdfQ09NTUFORAorKyAgICBDTURBUkdfQ09NTUFO RCwKKysKKysgICAgLyogT3B0aW9uIHR5cGUgLWl4LiAgKi8KKysgICAgQ01EQVJHX0lOSVRfRklM RSwKKysgICAgCisrICAgIC8qIE9wdGlvbiB0eXBlIC1pZXguICAqLworKyAgICBDTURBUkdfSU5J VF9DT01NQU5ECisgICB9IHR5cGU7CisgCisgICAvKiBWYWx1ZSBvZiB0aGlzIG9wdGlvbiAtIGZp bGVuYW1lIG9yIHRoZSBHREIgY29tbWFuZCBpdHNlbGYuICBTdHJpbmcgbWVtb3J5CitAQCAtNDM0 LDcgKzQ0MCw5IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCisgICAgICAgT1BUX1NUQVRJ U1RJQ1MsCisgICAgICAgT1BUX1RVSSwKKyAgICAgICBPUFRfTk9XSU5ET1dTLAorLSAgICAgIE9Q VF9XSU5ET1dTCisrICAgICAgT1BUX1dJTkRPV1MsCisrICAgICAgT1BUX0lYLAorKyAgICAgIE9Q VF9JRVgKKyAgICAgfTsKKyAgICAgc3RhdGljIHN0cnVjdCBvcHRpb24gbG9uZ19vcHRpb25zW10g PQorICAgICB7CitAQCAtNDc1LDYgKzQ4MywxMCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRh KQorICAgICAgIHsidmVyc2lvbiIsIG5vX2FyZ3VtZW50LCAmcHJpbnRfdmVyc2lvbiwgMX0sCisg ICAgICAgeyJ4IiwgcmVxdWlyZWRfYXJndW1lbnQsIDAsICd4J30sCisgICAgICAgeyJleCIsIHJl cXVpcmVkX2FyZ3VtZW50LCAwLCAnWCd9LAorKyAgICAgIHsiaW5pdC1jb21tYW5kIiwgcmVxdWly ZWRfYXJndW1lbnQsIDAsIE9QVF9JWH0sCisrICAgICAgeyJpbml0LWV2YWwtY29tbWFuZCIsIHJl cXVpcmVkX2FyZ3VtZW50LCAwLCBPUFRfSUVYfSwKKysgICAgICB7Iml4IiwgcmVxdWlyZWRfYXJn dW1lbnQsIDAsIE9QVF9JWH0sCisrICAgICAgeyJpZXgiLCByZXF1aXJlZF9hcmd1bWVudCwgMCwg T1BUX0lFWH0sCisgI2lmZGVmIEdEQlRLCisgICAgICAgeyJ0Y2xjb21tYW5kIiwgcmVxdWlyZWRf YXJndW1lbnQsIDAsICd6J30sCisgICAgICAgeyJlbmFibGUtZXh0ZXJuYWwtZWRpdG9yIiwgbm9f YXJndW1lbnQsIDAsICd5J30sCitAQCAtNjAzLDYgKzYxNSwxOSBAQCBjYXB0dXJlZF9tYWluICh2 b2lkICpkYXRhKQorIAkgICAgICBWRUNfc2FmZV9wdXNoIChjbWRhcmdfcywgY21kYXJnX3ZlYywg JmNtZGFyZyk7CisgCSAgICB9CisgCSAgICBicmVhazsKKysJICBjYXNlIE9QVF9JWDoKKysJICAg IHsKKysJICAgICAgc3RydWN0IGNtZGFyZyBjbWRhcmcgPSB7IENNREFSR19JTklUX0ZJTEUsIG9w dGFyZyB9OworKworKwkgICAgICBWRUNfc2FmZV9wdXNoIChjbWRhcmdfcywgY21kYXJnX3ZlYywg JmNtZGFyZyk7CisrCSAgICB9CisrCSAgICBicmVhazsKKysJICBjYXNlIE9QVF9JRVg6CisrCSAg ICB7CisrCSAgICAgIHN0cnVjdCBjbWRhcmcgY21kYXJnID0geyBDTURBUkdfSU5JVF9DT01NQU5E LCBvcHRhcmcgfTsKKysKKysJICAgICAgVkVDX3NhZmVfcHVzaCAoY21kYXJnX3MsIGNtZGFyZ192 ZWMsICZjbWRhcmcpOworKwkgICAgfQorIAkgICAgYnJlYWs7CisgCSAgY2FzZSAnQic6CisgCSAg ICBiYXRjaF9mbGFnID0gYmF0Y2hfc2lsZW50ID0gMTsKK0BAIC04NzcsNiArOTAyLDIwIEBAIGNh cHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCisgICBxdWl0X3ByZV9wcmludCA9IGVycm9yX3ByZV9w cmludDsKKyAgIHdhcm5pbmdfcHJlX3ByaW50ID0gXygiXG53YXJuaW5nOiAiKTsKKyAKKysgIC8q IFByb2Nlc3MgJy1peCcgYW5kICctaWV4JyBvcHRpb25zIGVhcmx5LiAgKi8KKysgIGZvciAoaSA9 IDA7IFZFQ19pdGVyYXRlIChjbWRhcmdfcywgY21kYXJnX3ZlYywgaSwgY21kYXJnX3ApOyBpKysp CisrICAgIHN3aXRjaCAoY21kYXJnX3AtPnR5cGUpCisrICAgIHsKKysgICAgICBjYXNlIENNREFS R19JTklUX0ZJTEU6CisrICAgICAgICBjYXRjaF9jb21tYW5kX2Vycm9ycyAoc291cmNlX3Njcmlw dCwgY21kYXJnX3AtPnN0cmluZywKKysJCQkgICAgICAhYmF0Y2hfZmxhZywgUkVUVVJOX01BU0tf QUxMKTsKKysJYnJlYWs7CisrICAgICAgY2FzZSBDTURBUkdfSU5JVF9DT01NQU5EOgorKyAgICAg ICAgY2F0Y2hfY29tbWFuZF9lcnJvcnMgKGV4ZWN1dGVfY29tbWFuZCwgY21kYXJnX3AtPnN0cmlu ZywKKysJCQkgICAgICAhYmF0Y2hfZmxhZywgUkVUVVJOX01BU0tfQUxMKTsKKysJYnJlYWs7Cisr ICAgIH0KKysKKyAgIC8qIFJlYWQgYW5kIGV4ZWN1dGUgdGhlIHN5c3RlbS13aWRlIGdkYmluaXQg ZmlsZSwgaWYgaXQgZXhpc3RzLgorICAgICAgVGhpcyBpcyBkb25lICpiZWZvcmUqIGFsbCB0aGUg Y29tbWFuZCBsaW5lIGFyZ3VtZW50cyBhcmUKKyAgICAgIHByb2Nlc3NlZDsgaXQgc2V0cyBnbG9i YWwgcGFyYW1ldGVycywgd2hpY2ggYXJlIGluZGVwZW5kZW50IG9mCitAQCAtOTkzLDYgKzEwMzIs NyBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQorICAgQUxMX09CSkZJTEVTIChvYmpmaWxl KQorICAgICBsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAob2JqZmlsZSk7CisgCisrICAv KiBQcm9jZXNzICcteCcgYW5kICctZXgnIG9wdGlvbnMuICAqLworICAgZm9yIChpID0gMDsgVkVD X2l0ZXJhdGUgKGNtZGFyZ19zLCBjbWRhcmdfdmVjLCBpLCBjbWRhcmdfcCk7IGkrKykKKyAgICAg c3dpdGNoIChjbWRhcmdfcC0+dHlwZSkKKyAgICAgeworQEAgLTEwOTMsNiArMTEzMyw4IEBAIE9w dGlvbnM6XG5cblwKKyAgICAgICAgICAgICAgICAgICAgICBFeGVjdXRlIGEgc2luZ2xlIEdEQiBj b21tYW5kLlxuXAorICAgICAgICAgICAgICAgICAgICAgIE1heSBiZSB1c2VkIG11bHRpcGxlIHRp bWVzIGFuZCBpbiBjb25qdW5jdGlvblxuXAorICAgICAgICAgICAgICAgICAgICAgIHdpdGggLS1j b21tYW5kLlxuXAorKyAgLS1pbml0LWNvbW1hbmQ9RklMRSwgLWl4IExpa2UgLXggYnV0IGV4ZWN1 dGUgaXQgYmVmb3JlIGxvYWRpbmcgaW5mZXJpb3IuXG5cCisrICAtLWluaXQtZXZhbC1jb21tYW5k PUNPTU1BTkQsIC1pZXggTGlrZSAtZXggYnV0IGJlZm9yZSBsb2FkaW5nIGluZmVyaW9yLlxuXAor ICAgLS1jb3JlPUNPUkVGSUxFICAgIEFuYWx5emUgdGhlIGNvcmUgZHVtcCBDT1JFRklMRS5cblwK KyAgIC0tcGlkPVBJRCAgICAgICAgICBBdHRhY2ggdG8gcnVubmluZyBwcm9jZXNzIFBJRC5cblwK KyAiKSwgc3RyZWFtKTsKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kb2MvZ2RiLnRl eGluZm8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2RvYy9n ZGIudGV4aW5mbwkyMDEyLTA0LTE4IDAwOjQxOjMxLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLTA0LTE4IDAwOjQyOjUxLjIz MjY4MTA1MiArMDIwMAorQEAgLTk4OSw2ICs5ODksMjIgQEAgYWxzbyBiZSBpbnRlcmxlYXZlZCB3 aXRoIEBzYW1wey1jb21tYW5kfQorICAgIC14IHNldGJyZWFrcG9pbnRzIC1leCAncnVuJyBhLm91 dAorIEBlbmQgc21hbGxleGFtcGxlCisgCisrQGl0ZW0gLWluaXQtY29tbWFuZCBAdmFye2ZpbGV9 CisrQGl0ZW14IC1peCBAdmFye2ZpbGV9CisrQGNpbmRleCBAY29kZXstLWluaXQtY29tbWFuZH0K KytAY2luZGV4IEBjb2Rley1peH0KKytFeGVjdXRlIGNvbW1hbmRzIGZyb20gZmlsZSBAdmFye2Zp bGV9IGJlZm9yZSBsb2FkaW5nIGdkYmluaXQgZmlsZXMgb3IgdGhlCisraW5mZXJpb3IuCisrQHhy ZWZ7U3RhcnR1cH0uCisrCisrQGl0ZW0gLWluaXQtZXZhbC1jb21tYW5kIEB2YXJ7Y29tbWFuZH0K KytAaXRlbXggLWlleCBAdmFye2NvbW1hbmR9CisrQGNpbmRleCBAY29kZXstLWluaXQtZXZhbC1j b21tYW5kfQorK0BjaW5kZXggQGNvZGV7LWlleH0KKytFeGVjdXRlIGEgc2luZ2xlIEB2YWx1ZXtH REJOfSBjb21tYW5kIGJlZm9yZSBsb2FkaW5nIGdkYmluaXQgZmlsZXMgb3IgdGhlCisraW5mZXJp b3IuCisrQHhyZWZ7U3RhcnR1cH0uCisrCisgQGl0ZW0gLWRpcmVjdG9yeSBAdmFye2RpcmVjdG9y eX0KKyBAaXRlbXggLWQgQHZhcntkaXJlY3Rvcnl9CisgQGNpbmRleCBAY29kZXstLWRpcmVjdG9y eX0KK0BAIC0xMjUwLDYgKzEyNjYsMTMgQEAgU2V0cyB1cCB0aGUgY29tbWFuZCBpbnRlcnByZXRl ciBhcyBzcGVjaQorIChAcHhyZWZ7TW9kZSBPcHRpb25zLCBpbnRlcnByZXRlcn0pLgorIAorIEBp dGVtCisrRXhlY3V0ZXMgY29tbWFuZHMgYW5kIGNvbW1hbmQgZmlsZXMgc3BlY2lmaWVkIGJ5IHRo ZSBAc2FtcHstaWV4fSBhbmQKKytAc2FtcHstaXh9IG9wdGlvbnMgaW4gdGhlaXIgc3BlY2lmaWVk IG9yZGVyLiAgVXN1YWxseSB5b3Ugc2hvdWxkIHVzZSB0aGUKKytAc2FtcHstZXh9IGFuZCBAc2Ft cHsteH0gb3B0aW9ucyBpbnN0ZWFkLCBidXQgdGhpcyB3YXkgeW91IGNhbiBhcHBseQorK3NldHRp bmdzIGJlZm9yZSBAdmFsdWV7R0RCTn0gaW5pdCBmaWxlcyBnZXQgZXhlY3V0ZWQgYW5kIGJlZm9y ZSBpbmZlcmlvcgorK2dldHMgbG9hZGVkLgorKworK0BpdGVtCisgQGNpbmRleCBpbml0IGZpbGUK KyBSZWFkcyB0aGUgc3lzdGVtLXdpZGUgQGRmbntpbml0IGZpbGV9IChpZiBAb3B0aW9uey0td2l0 aC1zeXN0ZW0tZ2RiaW5pdH0gd2FzCisgdXNlZCB3aGVuIGJ1aWxkaW5nIEB2YWx1ZXtHREJOfTsg QHB4cmVme1N5c3RlbS13aWRlIGNvbmZpZ3VyYXRpb24sCitAQCAtMTI4MywxNCArMTMwNiwxMSBA QCBJZiB5b3Ugd2lzaCB0byBkaXNhYmxlIHRoZSBhdXRvLWxvYWRpbmcKKyB5b3UgbXVzdCBkbyBz b21ldGhpbmcgbGlrZSB0aGUgZm9sbG93aW5nOgorIAorIEBzbWFsbGV4YW1wbGUKKy0kIGdkYiAt ZXggInNldCBhdXRvLWxvYWQtc2NyaXB0cyBvZmYiIC1leCAiZmlsZSBteXByb2dyYW0iCisrJCBn ZGIgLWlleCAic2V0IGF1dG8tbG9hZC1zY3JpcHRzIG9mZiIgbXlwcm9ncmFtCisgQGVuZCBzbWFs bGV4YW1wbGUKKyAKKy1UaGUgZm9sbG93aW5nIGRvZXMgbm90IHdvcmsgYmVjYXVzZSB0aGUgYXV0 by1sb2FkaW5nIGlzIHR1cm5lZCBvZmYgdG9vIGxhdGU6CistCistQHNtYWxsZXhhbXBsZQorLSQg Z2RiIC1leCAic2V0IGF1dG8tbG9hZC1zY3JpcHRzIG9mZiIgbXlwcm9ncmFtCistQGVuZCBzbWFs bGV4YW1wbGUKKytPcHRpb24gQHNhbXB7LWV4fSBkb2VzIG5vdCB3b3JrIGJlY2F1c2UgdGhlIGF1 dG8tbG9hZGluZyBpcyB0aGVuIHR1cm5lZAorK29mZiB0b28gbGF0ZS4KKyAKKyBAaXRlbQorIFJl YWRzIGNvbW1hbmQgZmlsZXMgc3BlY2lmaWVkIGJ5IHRoZSBAc2FtcHsteH0gb3B0aW9uLiAgQHhy ZWZ7Q29tbWFuZAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIu Z2RiL3NlbGZ0ZXN0LmV4cAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3Jp Zy9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwCTIwMTItMDQtMTggMDA6NDE6MzEu MDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dk Yi5nZGIvc2VsZnRlc3QuZXhwCTIwMTItMDQtMTggMDA6NDI6NTEuMjMyNjgxMDUyICswMjAwCitA QCAtOTIsNiArOTIsMTAgQEAgcHJvYyBkb19zdGVwc19hbmRfbmV4dHMge30geworIAkJc2V0IGRl c2NyaXB0aW9uICJzdGVwIG92ZXIgcHl0aG9uX3NjcmlwdCBpbml0aWFsaXphdGlvbiIKKyAJCXNl dCBjb21tYW5kICJzdGVwIgorIAkgICAgfQorKwkgICAgLXJlICIuKmNtZGFyZ192ZWMgPSBOVUxM LiokZ2RiX3Byb21wdCAkIiB7CisrCQlzZXQgZGVzY3JpcHRpb24gInN0ZXAgb3ZlciBjbWRhcmdf dmVjIGluaXRpYWxpemF0aW9uIgorKwkJc2V0IGNvbW1hbmQgInN0ZXAiCisrCSAgICB9CisgCSAg ICAtcmUgIi4qcHJlX3N0YXRfY2hhaW4gPSBtYWtlX2NvbW1hbmRfc3RhdHNfY2xlYW51cC4qJGdk Yl9wcm9tcHQgJCIgeworIAkJc2V0IGRlc2NyaXB0aW9uICJuZXh0IG92ZXIgbWFrZV9jb21tYW5k X3N0YXRzX2NsZWFudXAgYW5kIGV2ZXJ5dGhpbmcgaXQgY2FsbHMiCisgCQlzZXQgY29tbWFuZCAi bmV4dCIKK0BAIC0xMjgsMTggKzEzMiw2IEBAIHByb2MgZG9fc3RlcHNfYW5kX25leHRzIHt9IHsK KyAJCXNldCBkZXNjcmlwdGlvbiAibmV4dCBvdmVyIGNvbmRpdGlvbmFsIHN0YWNrIGFsaWdubWVu dCBhbGxvY2EiCisgCQlzZXQgY29tbWFuZCAibmV4dCIKKyAJICAgIH0KKy0JICAgIC1yZSAiLipj bWRzaXplID0gMS4qJGdkYl9wcm9tcHQgJCIgeworLQkJc2V0IGRlc2NyaXB0aW9uICJzdGVwIG92 ZXIgY21kc2l6ZSBpbml0aWFsaXphdGlvbiIKKy0JCXNldCBjb21tYW5kICJuZXh0IgorLQkgICAg fQorLQkgICAgLXJlICIuKmNtZGFyZyA9IC4qIHhtYWxsb2MuKiRnZGJfcHJvbXB0ICQiIHsKKy0J CXNldCBkZXNjcmlwdGlvbiAibmV4dCBvdmVyIGNtZGFyZyBpbml0aWFsaXphdGlvbiB2aWEgeG1h bGxvYyIKKy0JCXNldCBjb21tYW5kICJuZXh0IgorLQkgICAgfQorLQkgICAgLXJlICIuKm5jbWQg PSAwLiokZ2RiX3Byb21wdCAkIiB7CistCQlzZXQgZGVzY3JpcHRpb24gIm5leHQgb3ZlciBuY21k IGluaXRpYWxpemF0aW9uIgorLQkJc2V0IGNvbW1hbmQgIm5leHQiCistCSAgICB9CisgCSAgICAt cmUgIi4qZGlyc2l6ZSA9IDEuKiRnZGJfcHJvbXB0ICQiIHsKKyAJCXNldCBkZXNjcmlwdGlvbiAi bmV4dCBvdmVyIGRpcnNpemUgaW5pdGlhbGl6YXRpb24iCisgCQlzZXQgY29tbWFuZCAibmV4dCIK K0BAIC0xNjMsNiArMTU1LDEwIEBAIHByb2MgZG9fc3RlcHNfYW5kX25leHRzIHt9IHsKKyAJCXNl dCBkZXNjcmlwdGlvbiAibmV4dCBvdmVyIHRleHRkb21haW4gUEFDS0FHRSIKKyAJCXNldCBjb21t YW5kICJuZXh0IgorIAkgICAgfQorKwkgICAgLXJlICIuKlZFQ19jbGVhbnVwIC5jbWRhcmdfcy4q JGdkYl9wcm9tcHQgJCIgeworKwkJc2V0IGRlc2NyaXB0aW9uICJuZXh0IG92ZXIgY21kYXJnX3Mg VkVDX2NsZWFudXAiCisrCQlzZXQgY29tbWFuZCAibmV4dCIKKysJICAgIH0KKyAJICAgIC1yZSAi XFswLTlcXStcW1x0IFxdK1x7XHJcbiRnZGJfcHJvbXB0ICQiIHsKKyAJCXNldCBkZXNjcmlwdGlv biAic3RlcCBvdmVyIGluaXRpYWwgYnJhY2UiCisgCQlzZXQgY29tbWFuZCAic3RlcCIKCmRpZmYg LS1naXQgYS9nZGItYXV0b2xvYWQtMDZvZjEyLnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTA2b2YxMi5w YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTEyMWVmCi0tLSAvZGV2 L251bGwKKysrIGIvZ2RiLWF1dG9sb2FkLTA2b2YxMi5wYXRjaApAQCAtMCwwICsxLDcxIEBACito dHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTAzL21zZzAwMjM2Lmh0bWwKKwor IyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDMvMTkgMTg6MTk6MjMJMS4xNDAyNworIyMjIHNy Yy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDMvMTkgMTg6MjM6NTEJMS4xNDAyOAorIyMgLTEsNSArMSwx MyBAQAorIDIwMTItMDMtMTkgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4KKyAKKysJQ29kZSBjbGVhbnVwLgorKwkqIHB5dGhvbi9weS1hdXRvLWxvYWQuYyAoc291 cmNlX3NlY3Rpb25fc2NyaXB0cyk6IE5ldyB2YXJpYWJsZSBiYWNrX3RvLgorKwlUdXJuIGZjbG9z ZSBhbmQgeGZyZWUgY2FsbHMgaW50byBtYWtlX2NsZWFudXBfZmNsb3NlIGFuZCBtYWtlX2NsZWFu dXAKKysJd2l0aCB4ZnJlZS4KKysJKGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCk6IFR1cm4gZmNs b3NlIGludG8gbWFrZV9jbGVhbnVwX2ZjbG9zZS4KKysKKysyMDEyLTAzLTE5ICBKYW4gS3JhdG9j aHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisrCisgCSogTkVXUzogRGVzY3JpYmUg bmV3IG9wdGlvbnMgLS1pbml0LWNvbW1hbmQ9RklMRSwgLWl4IGFuZAorIAktLWluaXQtZXZhbC1j b21tYW5kPUNPTU1BTkQsIC1pZXguCisgCSogbWFpbi5jIChzdHJ1Y3QgY21kYXJnKTogTmV3IGVu dW0gaXRlbXMgQ01EQVJHX0lOSVRfRklMRSBhbmQKKy0tLSBzcmMvZ2RiL3B5dGhvbi9weS1hdXRv LWxvYWQuYwkyMDEyLzAxLzI2IDIxOjU0OjQ1CTEuMTgKKysrKyBzcmMvZ2RiL3B5dGhvbi9weS1h dXRvLWxvYWQuYwkyMDEyLzAzLzE5IDE4OjIzOjUyCTEuMTkKK0BAIC0yNTQsNiArMjU0LDcgQEAK KyAgICAgICBGSUxFICpzdHJlYW07CisgICAgICAgY2hhciAqZnVsbF9wYXRoOworICAgICAgIGlu dCBvcGVuZWQsIGluX2hhc2hfdGFibGU7CisrICAgICAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87 CisgCisgICAgICAgaWYgKCpwICE9IDEpCisgCXsKK0BAIC0yODYsNiArMjg3LDEzIEBACisgICAg ICAgb3BlbmVkID0gZmluZF9hbmRfb3Blbl9zY3JpcHQgKGZpbGUsIDEgLypzZWFyY2hfcGF0aCov LAorIAkJCQkgICAgICZzdHJlYW0sICZmdWxsX3BhdGgpOworIAorKyAgICAgIGJhY2tfdG8gPSBt YWtlX2NsZWFudXAgKG51bGxfY2xlYW51cCwgTlVMTCk7CisrICAgICAgaWYgKG9wZW5lZCkKKysJ eworKwkgIG1ha2VfY2xlYW51cF9mY2xvc2UgKHN0cmVhbSk7CisrCSAgbWFrZV9jbGVhbnVwICh4 ZnJlZSwgZnVsbF9wYXRoKTsKKysJfQorKworICAgICAgIC8qIElmIG9uZSBzY3JpcHQgaXNuJ3Qg Zm91bmQgaXQncyBub3QgdW5jb21tb24gZm9yIG1vcmUgdG8gbm90IGJlCisgCSBmb3VuZCBlaXRo ZXIuICBXZSBkb24ndCB3YW50IHRvIHByaW50IGFuIGVycm9yIG1lc3NhZ2UgZm9yIGVhY2gKKyAJ IHNjcmlwdCwgdG9vIG11Y2ggbm9pc2UuICBJbnN0ZWFkLCB3ZSBwcmludCB0aGUgd2FybmluZyBv bmNlIGFuZCB0ZWxsCitAQCAtMzEzLDkgKzMyMSw5IEBACisgCSAgLyogSWYgdGhpcyBmaWxlIGlz IG5vdCBjdXJyZW50bHkgbG9hZGVkLCBsb2FkIGl0LiAgKi8KKyAJICBpZiAoISBpbl9oYXNoX3Rh YmxlKQorIAkgICAgc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKG9iamZpbGUsIHN0 cmVhbSwgZnVsbF9wYXRoKTsKKy0JICBmY2xvc2UgKHN0cmVhbSk7CistCSAgeGZyZWUgKGZ1bGxf cGF0aCk7CisgCX0KKysKKysgICAgICBkb19jbGVhbnVwcyAoYmFja190byk7CisgICAgIH0KKyB9 CisgCitAQCAtNDIwLDYgKzQyOCw4IEBACisgICAgIHsKKyAgICAgICBzdHJ1Y3QgYXV0b19sb2Fk X3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKKyAKKysgICAgICBtYWtlX2NsZWFudXBfZmNsb3Nl IChpbnB1dCk7CisrCisgICAgICAgLyogQWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRhYmxl IHRvbyBzbyAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIKKyAJIGNhbiBwcmludCBpdC4gICovCisg ICAgICAgcHNwYWNlX2luZm8gPQorQEAgLTQzMiw3ICs0NDIsNiBAQAorIAkgYW5kIHRoZXNlIHNj cmlwdHMgYXJlIHJlcXVpcmVkIHRvIGJlIGlkZW1wb3RlbnQgdW5kZXIgbXVsdGlwbGUKKyAJIGxv YWRzIGFueXdheS4gICovCisgICAgICAgc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUg KG9iamZpbGUsIGlucHV0LCBkZWJ1Z2ZpbGUpOworLSAgICAgIGZjbG9zZSAoaW5wdXQpOworICAg ICB9CisgCisgICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOwoKZGlmZiAtLWdpdCBhL2dkYi1hdXRv bG9hZC0wN29mMTIucGF0Y2ggYi9nZGItYXV0b2xvYWQtMDdvZjEyLnBhdGNoCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxZDEyOWUKLS0tIC9kZXYvbnVsbAorKysgYi9nZGIt YXV0b2xvYWQtMDdvZjEyLnBhdGNoCkBAIC0wLDAgKzEsNTcgQEAKK2h0dHA6Ly9zb3VyY2V3YXJl Lm9yZy9tbC9nZGItY3ZzLzIwMTItMDMvbXNnMDAyOTYuaHRtbAorCisjIyMgc3JjL2dkYi9kb2Mv Q2hhbmdlTG9nCTIwMTIvMDMvMjIgMDg6MTA6NDEJMS4xMjg5CisjIyMgc3JjL2dkYi9kb2MvQ2hh bmdlTG9nCTIwMTIvMDMvMjcgMjA6MTU6MjAJMS4xMjkwCisjIyAtMSwzICsxLDEyIEBACisrMjAx Mi0wMy0yNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorKwor KwkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcpOiBSZW5hbWUgbm9kZSByZWZlcmVuY2UKKysJ Jy5kZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9uJyB0byAnZG90ZGVidWdfZ2RiX3NjcmlwdHMgc2Vj dGlvbicuCisrCVR3aWNlLgorKwkoLmRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb24pOiBSZW5hbWUg dGhlIG5vZGUgLi4uCisrCShkb3RkZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9uKTogLi4uIGhlcmUu CisrCShNYWludGVuYW5jZSBDb21tYW5kcyk6IEFsc28gcmVuYW1lIHRoaXMgbm9kZSByZWZlcmVu Y2UuCisrCisgMjAxMi0wMy0yMiAgU2l2YSBDaGFuZHJhIFJlZGR5ICA8c2l2YWNoYW5kcmFAZ29v Z2xlLmNvbT4KKyAKKyAJKiBnZGIudGV4aW5mbyAoUHl0aG9uIEFQSS9WYWx1ZXMgRnJvbSBJbmZl cmlvcik6IEFkZCBkZXNjcmlwdGlvbgorLS0tIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIv MDMvMjIgMDg6MTA6NDEJMS45MzYKKysrKyBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzAz LzI3IDIwOjE1OjIwCTEuOTM3CitAQCAtMjQ3MTcsOCArMjQ3MTcsOCBAQAorIEBmaWxle0B2YXJ7 b2JqZmlsZX0tZ2RiLnB5fSBhbmQgQGNvZGV7LmRlYnVnX2dkYl9zY3JpcHRzfSBzZWN0aW9uLgor IAorIEBtZW51CistKiBvYmpmaWxlLWdkYi5weSBmaWxlOjogICAgICAgICBUaGUgQGZpbGV7QHZh cntvYmpmaWxlfS1nZGIucHl9IGZpbGUKKy0qIC5kZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9uOjog IFRoZSBAY29kZXsuZGVidWdfZ2RiX3NjcmlwdHN9IHNlY3Rpb24KKysqIG9iamZpbGUtZ2RiLnB5 IGZpbGU6OiAgICAgICAgICBUaGUgQGZpbGV7QHZhcntvYmpmaWxlfS1nZGIucHl9IGZpbGUKKysq IGRvdGRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb246OiBUaGUgQGNvZGV7LmRlYnVnX2dkYl9zY3Jp cHRzfSBzZWN0aW9uCisgKiBXaGljaCBmbGF2b3IgdG8gY2hvb3NlPzo6CisgQGVuZCBtZW51Cisg CitAQCAtMjQ3NDQsNyArMjQ3NDQsNyBAQAorIAorIEFsc28gcHJpbnRlZCBpcyB0aGUgbGlzdCBv ZiBzY3JpcHRzIHRoYXQgd2VyZSBtZW50aW9uZWQgaW4KKyB0aGUgQGNvZGV7LmRlYnVnX2dkYl9z Y3JpcHRzfSBzZWN0aW9uIGFuZCB3ZXJlIG5vdCBmb3VuZAorLShAcHhyZWZ7LmRlYnVnX2dkYl9z Y3JpcHRzIHNlY3Rpb259KS4KKysoQHB4cmVme2RvdGRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb259 KS4KKyBUaGlzIGlzIHVzZWZ1bCBiZWNhdXNlIHRoZWlyIG5hbWVzIGFyZSBub3QgcHJpbnRlZCB3 aGVuIEB2YWx1ZXtHREJOfQorIHRyaWVzIHRvIGxvYWQgdGhlbSBhbmQgZmFpbHMuICBUaGVyZSBt YXkgYmUgbWFueSBvZiB0aGVtLCBhbmQgcHJpbnRpbmcKKyBhbiBlcnJvciBtZXNzYWdlIGZvciBl YWNoIG9uZSBpcyBwcm9ibGVtYXRpYy4KK0BAIC0yNDc5NSw3ICsyNDc5NSw3IEBACisgU28geW91 ciBAZmlsZXstZ2RiLnB5fSBmaWxlIHNob3VsZCBiZSBjYXJlZnVsIHRvIGF2b2lkIGVycm9ycyBp ZiBpdAorIGlzIGV2YWx1YXRlZCBtb3JlIHRoYW4gb25jZS4KKyAKKy1Abm9kZSAuZGVidWdfZ2Ri X3NjcmlwdHMgc2VjdGlvbgorK0Bub2RlIGRvdGRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb24KKyBA c3Vic3Vic2VjdGlvbiBUaGUgQGNvZGV7LmRlYnVnX2dkYl9zY3JpcHRzfSBzZWN0aW9uCisgQGNp bmRleCBAY29kZXsuZGVidWdfZ2RiX3NjcmlwdHN9IHNlY3Rpb24KKyAKK0BAIC0zMzQ3NSw3ICsz MzQ3NSw3IEBACisgbWF0Y2hpbmcgQHZhcntyZWdleHB9LgorIEZvciBlYWNoIHNjcmlwdCwgdGhp cyBjb21tYW5kIHByaW50cyBpdHMgbmFtZSBhcyBzcGVjaWZpZWQgaW4gdGhlIG9iamZpbGUsCisg YW5kIHRoZSBmdWxsIHBhdGggaWYga25vd24uCistQHhyZWZ7LmRlYnVnX2dkYl9zY3JpcHRzIHNl Y3Rpb259LgorK0B4cmVme2RvdGRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb259LgorIAorIEBraW5k ZXggbWFpbnQgcHJpbnQgc3RhdGlzdGljcworIEBjaW5kZXggYmNhY2hlIHN0YXRpc3RpY3MKCmRp ZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMDhvZjEyLnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTA4b2Yx Mi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDhiZmMxCi0tLSAv ZGV2L251bGwKKysrIGIvZ2RiLWF1dG9sb2FkLTA4b2YxMi5wYXRjaApAQCAtMCwwICsxLDE3MSBA QAorW3BhdGNoIzQgMi84XSBDb2RlIGNsZWFudXA6IG5ldyBwYXRoIHRvIFZFQyBpbiB1dGlscy5j CitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMi0wNC9tc2cwMDA4Ni5o dG1sCitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA0L21zZzAwMTExLmh0 bWwKKyAtIHJlZHVjZWQgZm9yIHRoZSBiYWNrcG9ydAorCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJ MjAxMi8wNC8xNyAxNTo0NTowNQkxLjE0MTEwCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8w NC8xNyAxNTo0NzowOAkxLjE0MTExCisjIyAtMSw2ICsxLDM0IEBACisgMjAxMi0wNC0xNyAgSmFu IEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorIAorIAlDb2RlIGNsZWFu dXAuCisrCSogY2hhcnNldC5jIChmaW5kX2NoYXJzZXRfbmFtZXMpOiBSZW1vdmUgdmFyaWFibGVz IGl4IGFuZCBlbHQuCisrCVVzZSBmcmVlX2NoYXJfcHRyX3ZlYy4KKysJKiBlbGZyZWFkLmMgKGJ1 aWxkX2lkX3RvX2RlYnVnX2ZpbGVuYW1lKTogTmV3IHZhcmlhYmxlcyBkZWJ1Z2Rpcl92ZWMsCisr CWJhY2tfdG8gYW5kIGl4LiAgVXNlIGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYy4gIFJlbW92ZSB2 YXJpYWJsZQorKwlkZWJ1Z2Rpcl9lbmQuICBOZXcgdmFyaWFibGUgZGVidWdkaXJfbGVuLgorKwkq IGdkYl92ZWNzLmggKGZyZWVfY2hhcl9wdHJfdmVjLCBtYWtlX2NsZWFudXBfZnJlZV9jaGFyX3B0 cl92ZWMpCisrCShkaXJuYW1lc190b19jaGFyX3B0cl92ZWNfYXBwZW5kLCBkaXJuYW1lc190b19j aGFyX3B0cl92ZWMpOiBOZXcKKysJZGVjbGFyYXRpb25zLgorKwkqIHByb2dzcGFjZS5jIChjbGVh cl9wcm9ncmFtX3NwYWNlX3NvbGliX2NhY2hlKTogUmVtb3ZlIHZhcmlhYmxlcyBpeAorKwlhbmQg ZWx0LiAgVXNlIGZyZWVfY2hhcl9wdHJfdmVjLgorKwkqIHNvdXJjZS5jIChhZGRfcGF0aCk6IFJl bW92ZSB2YXJpYWJsZXMgYXJndiwgYXJnIGFuZCBhcmd2X2luZGV4LgorKwlOZXcgdmFyaWFibGVz IGRpcl92ZWMsIGJhY2tfdG8sIGl4IGFuZCBuYW1lLgorKwlVc2UgZGlybmFtZXNfdG9fY2hhcl9w dHJfdmVjX2FwcGVuZC4gIFVzZSBmcmVlYXJndiBpbnN0ZWFkIG9mCisrCW1ha2VfY2xlYW51cF9m cmVlYXJndi4gIFJlbW92ZSB2YXJpYWJsZSBzZXBhcmF0b3IuICBTaW1wbGlmeSB0aGUgY29kZQor KwlubyBsb25nZXIgZXhwZWN0aW5nIERJUk5BTUVfU0VQQVJBVE9SLgorKwkob3BlbnApOiBSZW1v dmUgdmFyaWFibGUgcCwgcDEgYW5kIGxlbi4gIE5ldyB2YXJpYWJsZXMgZGlyX3ZlYywKKysJYmFj a190bywgaXggYW5kIGRpci4gIFVzZSBkaXJuYW1lc190b19jaGFyX3B0cl92ZWMuICBTaW1wbGlm eSB0aGUgY29kZQorKwlubyBsb25nZXIgZXhwZWN0aW5nIERJUk5BTUVfU0VQQVJBVE9SLgorKwkq IHN5bWZpbGUuYyAoZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlKTogTmV3IHZhcmlhYmxlcyBkZWJ1 Z2Rpcl92ZWMsCisrCWJhY2tfdG8gYW5kIGl4LiAgVXNlIGRpcm5hbWVzX3RvX2NoYXJfcHRyX3Zl Yy4gIFJlbW92ZSB2YXJpYWJsZQorKwlkZWJ1Z2Rpcl9lbmQuCisrCSogdXRpbHMuYyAoZnJlZV9j aGFyX3B0cl92ZWMsIGRvX2ZyZWVfY2hhcl9wdHJfdmVjKQorKwkobWFrZV9jbGVhbnVwX2ZyZWVf Y2hhcl9wdHJfdmVjLCBkaXJuYW1lc190b19jaGFyX3B0cl92ZWNfYXBwZW5kKQorKwkoZGlybmFt ZXNfdG9fY2hhcl9wdHJfdmVjKTogTmV3IGZ1bmN0aW9ucy4KKysKKysyMDEyLTA0LTE3ICBKYW4g S3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisrCisrCUNvZGUgY2xlYW51 cC4KKyAJKiBzb3VyY2UuYyAoYWRkX3BhdGgpOiBSZW1vdmUgYWx3YXlzIHRydWUgY29uZGl0aW9u YWwgJ3AgPT0gMCcgYW5kCisgCXVuaW5kZW50IGl0cyBjb2RlIGJsb2NrLgorIAorSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL2dkYl92ZWNzLmgKKz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40 LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2dkYl92ZWNzLmgJMjAxMi0wNC0xOCAwMDo0MDoxMi4wNjcw ODYwMTYgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9nZGJfdmVjcy5oCTIwMTIt MDQtMTggMDA6NDA6MjMuNDc0MDU2OTkzICswMjAwCitAQCAtMjUsNCArMjUsMTYgQEAKKyAKKyBE RUZfVkVDX1AgKGNoYXJfcHRyKTsKKyAKKysvKiBGcm9tIHV0aWxzLmM6ICovCisrCisrZXh0ZXJu IHZvaWQgZnJlZV9jaGFyX3B0cl92ZWMgKFZFQyAoY2hhcl9wdHIpICpjaGFyX3B0cl92ZWMpOwor KworK2V4dGVybiBzdHJ1Y3QgY2xlYW51cCAqCisrICBtYWtlX2NsZWFudXBfZnJlZV9jaGFyX3B0 cl92ZWMgKFZFQyAoY2hhcl9wdHIpICpjaGFyX3B0cl92ZWMpOworKworK2V4dGVybiB2b2lkIGRp cm5hbWVzX3RvX2NoYXJfcHRyX3ZlY19hcHBlbmQgKFZFQyAoY2hhcl9wdHIpICoqdmVjcCwKKysJ CQkJCSAgICAgY29uc3QgY2hhciAqZGlybmFtZXMpOworKworK2V4dGVybiBWRUMgKGNoYXJfcHRy KSAqZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjIChjb25zdCBjaGFyICpkaXJuYW1lcyk7CisrCisg I2VuZGlmIC8qIEdEQl9WRUNTX0ggKi8KK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi91 dGlscy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi91dGls cy5jCTIwMTItMDQtMTggMDA6NDA6MTIuMDY4MDg2MDEzICswMjAwCisrKysgZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvdXRpbHMuYwkyMDEyLTA0LTE4IDAwOjQwOjQ5Ljg2Mjk4OTg1NSArMDIwMAor QEAgLTI5LDYgKzI5LDcgQEAKKyAjaWZkZWYgSEFWRV9TWVNfUkVTT1VSQ0VfSAorICNpbmNsdWRl IDxzeXMvcmVzb3VyY2UuaD4KKyAjZW5kaWYgLyogSEFWRV9TWVNfUkVTT1VSQ0VfSCAqLworKyNp bmNsdWRlICJnZGJfdmVjcy5oIgorIAorICNpZmRlZiBUVUkKKyAjaW5jbHVkZSAidHVpL3R1aS5o IgkJLyogRm9yIHR1aV9nZXRfY29tbWFuZF9kaW1lbnNpb24uICAgKi8KK0BAIC0zODM1LDYgKzM4 MzYsOTUgQEAgcHJvZHVjZXJfaXNfZ2NjX2dlXzQgKGNvbnN0IGNoYXIgKnByb2R1YworICAgcmV0 dXJuIG1pbm9yOworIH0KKyAKKysvKiBDYWxsIHhmcmVlIGZvciBlYWNoIGVsZW1lbnQgb2YgQ0hB Ul9QVFJfVkVDIGFuZCBmaW5hbCBWRUNfZnJlZSBmb3IKKysgICBDSEFSX1BUUl9WRUMgaXRzZWxm LgorKworKyAgIFlvdSBtdXN0IG5vdCBtb2RpZnkgQ0hBUl9QVFJfVkVDIGFmdGVyIGl0IGdvdCBy ZWdpc3RlcmVkIHdpdGggdGhpcyBmdW5jdGlvbgorKyAgIGJ5IG1ha2VfY2xlYW51cCBhcyB0aGUg Q0hBUl9QVFJfVkVDIGJhc2UgYWRkcmVzcyBtYXkgY2hhbmdlIG9uIGl0cyB1cGRhdGVzLgorKyAg IENvbnRyYXJ5IHRvIFZFQ19mcmVlIHRoaXMgZnVuY3Rpb24gZG9lcyBub3QgKGNhbm5vdCkgY2xl YXIgdGhlIHBvaW50ZXIuICAqLworKworK3ZvaWQKKytmcmVlX2NoYXJfcHRyX3ZlYyAoVkVDIChj aGFyX3B0cikgKmNoYXJfcHRyX3ZlYykKKyt7CisrICBpbnQgaXg7CisrICBjaGFyICpuYW1lOwor KworKyAgZm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChjaGFyX3B0ciwgY2hhcl9wdHJfdmVjLCBp eCwgbmFtZSk7ICsraXgpCisrICAgIHhmcmVlIChuYW1lKTsKKysgIFZFQ19mcmVlIChjaGFyX3B0 ciwgY2hhcl9wdHJfdmVjKTsKKyt9CisrCisrLyogSGVscGVyIGZvciBtYWtlX2NsZWFudXBfZnJl ZV9jaGFyX3B0cl92ZWMuICAqLworKworK3N0YXRpYyB2b2lkCisrZG9fZnJlZV9jaGFyX3B0cl92 ZWMgKHZvaWQgKmFyZykKKyt7CisrICBWRUMgKGNoYXJfcHRyKSAqY2hhcl9wdHJfdmVjID0gYXJn OworKworKyAgZnJlZV9jaGFyX3B0cl92ZWMgKGNoYXJfcHRyX3ZlYyk7CisrfQorKworKy8qIE1h a2UgY2xlYW51cCBoYW5kbGVyIGNhbGxpbmcgeGZyZWUgZm9yIGVhY2ggZWxlbWVudCBvZiBDSEFS X1BUUl9WRUMgYW5kCisrICAgZmluYWwgVkVDX2ZyZWUgZm9yIENIQVJfUFRSX1ZFQyBpdHNlbGYu CisrCisrICAgWW91IG11c3Qgbm90IG1vZGlmeSBDSEFSX1BUUl9WRUMgYWZ0ZXIgdGhpcyBjbGVh bnVwIHJlZ2lzdHJhdGlvbiBhcyB0aGUKKysgICBDSEFSX1BUUl9WRUMgYmFzZSBhZGRyZXNzIG1h eSBjaGFuZ2Ugb24gaXRzIHVwZGF0ZXMuICBDb250cmFyeSB0byBWRUNfZnJlZQorKyAgIHRoaXMg ZnVuY3Rpb24gZG9lcyBub3QgKGNhbm5vdCkgY2xlYXIgdGhlIHBvaW50ZXIuICAqLworKworK3N0 cnVjdCBjbGVhbnVwICoKKyttYWtlX2NsZWFudXBfZnJlZV9jaGFyX3B0cl92ZWMgKFZFQyAoY2hh cl9wdHIpICpjaGFyX3B0cl92ZWMpCisreworKyAgcmV0dXJuIG1ha2VfY2xlYW51cCAoZG9fZnJl ZV9jaGFyX3B0cl92ZWMsIGNoYXJfcHRyX3ZlYyk7CisrfQorKworKy8qIEV4dGVuZGVkIHZlcnNp b24gb2YgZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjIC0gYWRkaXRpb25hbGx5IGlmICpWRUNQIGlz CisrICAgbm9uLU5VTEwgdGhlIG5ldyBsaXN0IGVsZW1lbnRzIGZyb20gRElSTkFNRVMgYXJlIGFw cGVuZGVkIHRvIHRoZSBleGlzdGluZworKyAgICpWRUNQIGxpc3Qgb2YgZW50cmllcy4gICpWRUNQ IGFkZHJlc3Mgd2lsbCBiZSB1cGRhdGVkIGJ5IHRoaXMgY2FsbC4gICovCisrCisrdm9pZAorK2Rp cm5hbWVzX3RvX2NoYXJfcHRyX3ZlY19hcHBlbmQgKFZFQyAoY2hhcl9wdHIpICoqdmVjcCwgY29u c3QgY2hhciAqZGlybmFtZXMpCisreworKyAgZG8KKysgICAgeworKyAgICAgIHNpemVfdCB0aGlz X2xlbjsKKysgICAgICBjaGFyICpuZXh0X2RpciwgKnRoaXNfZGlyOworKworKyAgICAgIG5leHRf ZGlyID0gc3RyY2hyIChkaXJuYW1lcywgRElSTkFNRV9TRVBBUkFUT1IpOworKyAgICAgIGlmIChu ZXh0X2RpciA9PSBOVUxMKQorKwl0aGlzX2xlbiA9IHN0cmxlbiAoZGlybmFtZXMpOworKyAgICAg IGVsc2UKKysJeworKwkgIHRoaXNfbGVuID0gbmV4dF9kaXIgLSBkaXJuYW1lczsKKysJICBuZXh0 X2RpcisrOworKwl9CisrCisrICAgICAgdGhpc19kaXIgPSB4bWFsbG9jICh0aGlzX2xlbiArIDEp OworKyAgICAgIG1lbWNweSAodGhpc19kaXIsIGRpcm5hbWVzLCB0aGlzX2xlbik7CisrICAgICAg dGhpc19kaXJbdGhpc19sZW5dID0gJ1wwJzsKKysgICAgICBWRUNfc2FmZV9wdXNoIChjaGFyX3B0 ciwgKnZlY3AsIHRoaXNfZGlyKTsKKysKKysgICAgICBkaXJuYW1lcyA9IG5leHRfZGlyOworKyAg ICB9CisrICB3aGlsZSAoZGlybmFtZXMgIT0gTlVMTCk7CisrfQorKworKy8qIFNwbGl0IERJUk5B TUVTIGJ5IERJUk5BTUVfU0VQQVJBVE9SIGRlbGltaXRlciBhbmQgcmV0dXJuIGEgbGlzdCBvZiBh bGwgdGhlCisrICAgZWxlbWVudHMgaW4gdGhlaXIgb3JpZ2luYWwgb3JkZXIuICBGb3IgZW1wdHkg c3RyaW5nICgiIikgRElSTkFNRVMgcmV0dXJuCisrICAgbGlzdCBvZiBvbmUgZW1wdHkgc3RyaW5n ICgiIikgZWxlbWVudC4KKysgICAKKysgICBZb3UgbWF5IG1vZGlmeSB0aGUgcmV0dXJuZWQgc3Ry aW5ncy4KKysgICBSZWFkIGZyZWVfY2hhcl9wdHJfdmVjIGZvciBpdHMgY2xlYW51cC4gICovCisr CisrVkVDIChjaGFyX3B0cikgKgorK2Rpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYyAoY29uc3QgY2hh ciAqZGlybmFtZXMpCisreworKyAgVkVDIChjaGFyX3B0cikgKnJldHZhbCA9IE5VTEw7CisrICAK KysgIGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlY19hcHBlbmQgKCZyZXR2YWwsIGRpcm5hbWVzKTsK KysKKysgIHJldHVybiByZXR2YWw7CisrfQorKworICNpZmRlZiBIQVZFX1dBSVRQSUQKKyAKKyAj aWZkZWYgU0lHQUxSTQoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0wOW9mMTIucGF0Y2ggYi9n ZGItYXV0b2xvYWQtMDlvZjEyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjEyNDRjZmYKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYXV0b2xvYWQtMDlvZjEyLnBhdGNo CkBAIC0wLDAgKzEsMTE2OCBAQAorW3BhdGNoIzQgMy84XSBhdXRvLWxvYWQ6IHJlc2h1ZmZsZSBj b2RlCitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMi0wNC9tc2cwMDA4 Ny5odG1sCitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA0L21zZzAwMTEy Lmh0bWwKKworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCis9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAw CisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDoy NjoyOS4wNDkxMjAyMTIgKzAyMDAKK0BAIC0wLDAgKzEsNDcyIEBACisrLyogR0RCIHJvdXRpbmVz IGZvciBzdXBwb3J0aW5nIGF1dG8tbG9hZGVkIHNjcmlwdHMuCisrCisrICAgQ29weXJpZ2h0IChD KSAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIEdEQi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAg IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4g ICovCisrCisrI2luY2x1ZGUgImRlZnMuaCIKKysjaW5jbHVkZSAiYXV0by1sb2FkLmgiCisrI2lu Y2x1ZGUgInByb2dzcGFjZS5oIgorKyNpbmNsdWRlICJweXRob24vcHl0aG9uLmgiCisrI2luY2x1 ZGUgImdkYl9yZWdleC5oIgorKyNpbmNsdWRlICJ1aS1vdXQuaCIKKysjaW5jbHVkZSAiZmlsZW5h bWVzLmgiCisrI2luY2x1ZGUgImNvbW1hbmQuaCIKKysjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKKysj aW5jbHVkZSAib2JqZmlsZXMuaCIKKysjaW5jbHVkZSAicHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5o IgorKworKy8qIEludGVybmFsLXVzZSBmbGFnIHRvIGVuYWJsZS9kaXNhYmxlIGF1dG8tbG9hZGlu Zy4KKysgICBUaGlzIGlzIHRydWUgaWYgd2Ugc2hvdWxkIGF1dG8tbG9hZCBweXRob24gY29kZSB3 aGVuIGFuIG9iamZpbGUgaXMgb3BlbmVkLAorKyAgIGZhbHNlIG90aGVyd2lzZS4KKysKKysgICBC b3RoIGF1dG9fbG9hZF9zY3JpcHRzICYmIGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQgbXVzdCBiZSB0 cnVlIHRvIGVuYWJsZQorKyAgIGF1dG8tbG9hZGluZy4KKysKKysgICBUaGlzIGZsYWcgZXhpc3Rz IHRvIGZhY2lsaXRhdGUgZGVmZXJyaW5nIGF1dG8tbG9hZGluZyBkdXJpbmcgc3RhcnQtdXAKKysg ICB1bnRpbCBhZnRlciAuLy5nZGJpbml0IGhhcyBiZWVuIHJlYWQ7IGl0IG1heSBhdWdtZW50IHRo ZSBzZWFyY2ggZGlyZWN0b3JpZXMKKysgICB1c2VkIHRvIGZpbmQgdGhlIHNjcmlwdHMuICAqLwor K2ludCBnZGJweV9nbG9iYWxfYXV0b19sb2FkID0gMTsKKysKKysvKiBGb3Igc2NyaXB0cyBzcGVj aWZpZWQgaW4gLmRlYnVnX2dkYl9zY3JpcHRzLCBtdWx0aXBsZSBvYmpmaWxlcyBtYXkgbG9hZAor KyAgIHRoZSBzYW1lIHNjcmlwdC4gIFRoZXJlJ3Mgbm8gcG9pbnQgaW4gbG9hZGluZyB0aGUgc2Ny aXB0IG11bHRpcGxlIHRpbWVzLAorKyAgIGFuZCB0aGVyZSBjYW4gYmUgYSBsb3Qgb2Ygb2JqZmls ZXMgYW5kIHNjcmlwdHMsIHNvIHdlIGtlZXAgdHJhY2sgb2Ygc2NyaXB0cworKyAgIGxvYWRlZCB0 aGlzIHdheS4gICovCisrCisrc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbworK3sKKysgIC8q IEZvciBlYWNoIHByb2dyYW0gc3BhY2Ugd2Uga2VlcCB0cmFjayBvZiBsb2FkZWQgc2NyaXB0cy4g ICovCisrICBzdHJ1Y3QgaHRhYiAqbG9hZGVkX3NjcmlwdHM7CisrCisrICAvKiBOb24temVybyBp ZiB3ZSd2ZSBpc3N1ZWQgdGhlIHdhcm5pbmcgYWJvdXQgYW4gYXV0by1sb2FkIHNjcmlwdCBub3Qg YmVpbmcKKysgICAgIGZvdW5kLiAgV2Ugb25seSB3YW50IHRvIGlzc3VlIHRoaXMgd2FybmluZyBv bmNlLiAgKi8KKysgIGludCBzY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZDsKKyt9Owor KworKy8qIE9iamVjdHMgb2YgdGhpcyB0eXBlIGFyZSBzdG9yZWQgaW4gdGhlIGxvYWRlZCBzY3Jp cHQgaGFzaCB0YWJsZS4gICovCisrCisrc3RydWN0IGxvYWRlZF9zY3JpcHQKKyt7CisrICAvKiBO YW1lIGFzIHByb3ZpZGVkIGJ5IHRoZSBvYmpmaWxlLiAgKi8KKysgIGNvbnN0IGNoYXIgKm5hbWU7 CisrICAvKiBGdWxsIHBhdGggbmFtZSBvciBOVUxMIGlmIHNjcmlwdCB3YXNuJ3QgZm91bmQgKG9y IHdhcyBvdGhlcndpc2UKKysgICAgIGluYWNjZXNzaWJsZSkuICAqLworKyAgY29uc3QgY2hhciAq ZnVsbF9wYXRoOworK307CisrCisrLyogUGVyLXByb2dyYW0tc3BhY2UgZGF0YSBrZXkuICAqLwor K3N0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvZ3JhbV9zcGFjZV9kYXRhICphdXRvX2xvYWRfcHNwYWNl X2RhdGE7CisrCisrc3RhdGljIHZvaWQKKythdXRvX2xvYWRfcHNwYWNlX2RhdGFfY2xlYW51cCAo c3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSwgdm9pZCAqYXJnKQorK3sKKysgIHN0cnVjdCBh dXRvX2xvYWRfcHNwYWNlX2luZm8gKmluZm87CisrCisrICBpbmZvID0gcHJvZ3JhbV9zcGFjZV9k YXRhIChwc3BhY2UsIGF1dG9fbG9hZF9wc3BhY2VfZGF0YSk7CisrICBpZiAoaW5mbyAhPSBOVUxM KQorKyAgICB7CisrICAgICAgaWYgKGluZm8tPmxvYWRlZF9zY3JpcHRzKQorKwlodGFiX2RlbGV0 ZSAoaW5mby0+bG9hZGVkX3NjcmlwdHMpOworKyAgICAgIHhmcmVlIChpbmZvKTsKKysgICAgfQor K30KKysKKysvKiBHZXQgdGhlIGN1cnJlbnQgYXV0b2xvYWQgZGF0YS4gIElmIG5vbmUgaXMgZm91 bmQgeWV0LCBhZGQgaXQgbm93LiAgVGhpcworKyAgIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm5zIGEg dmFsaWQgb2JqZWN0LiAgKi8KKysKKytzdGF0aWMgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5m byAqCisrZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YSAoc3RydWN0IHByb2dyYW1fc3BhY2UgKnBz cGFjZSkKKyt7CisrICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICppbmZvOworKworKyAg aW5mbyA9IHByb2dyYW1fc3BhY2VfZGF0YSAocHNwYWNlLCBhdXRvX2xvYWRfcHNwYWNlX2RhdGEp OworKyAgaWYgKGluZm8gPT0gTlVMTCkKKysgICAgeworKyAgICAgIGluZm8gPSBYWkFMTE9DIChz dHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvKTsKKysgICAgICBzZXRfcHJvZ3JhbV9zcGFjZV9k YXRhIChwc3BhY2UsIGF1dG9fbG9hZF9wc3BhY2VfZGF0YSwgaW5mbyk7CisrICAgIH0KKysKKysg IHJldHVybiBpbmZvOworK30KKysKKysvKiBIYXNoIGZ1bmN0aW9uIGZvciB0aGUgbG9hZGVkIHNj cmlwdCBoYXNoLiAgKi8KKysKKytzdGF0aWMgaGFzaHZhbF90CisraGFzaF9sb2FkZWRfc2NyaXB0 X2VudHJ5IChjb25zdCB2b2lkICpkYXRhKQorK3sKKysgIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2Ny aXB0ICplID0gZGF0YTsKKysKKysgIHJldHVybiBodGFiX2hhc2hfc3RyaW5nIChlLT5uYW1lKTsK Kyt9CisrCisrLyogRXF1YWxpdHkgZnVuY3Rpb24gZm9yIHRoZSBsb2FkZWQgc2NyaXB0IGhhc2gu ICAqLworKworK3N0YXRpYyBpbnQKKytlcV9sb2FkZWRfc2NyaXB0X2VudHJ5IChjb25zdCB2b2lk ICphLCBjb25zdCB2b2lkICpiKQorK3sKKysgIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICpl YSA9IGE7CisrICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqZWIgPSBiOworKworKyAgcmV0 dXJuIHN0cmNtcCAoZWEtPm5hbWUsIGViLT5uYW1lKSA9PSAwOworK30KKysKKysvKiBJbml0aWFs aXplIHRoZSB0YWJsZSB0byB0cmFjayBsb2FkZWQgc2NyaXB0cy4KKysgICBFYWNoIGVudHJ5IGlz IGhhc2hlZCBieSB0aGUgZnVsbCBwYXRoIG5hbWUuICAqLworKworK3N0YXRpYyB2b2lkCisraW5p dF9sb2FkZWRfc2NyaXB0c19pbmZvIChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3Bh Y2VfaW5mbykKKyt7CisrICAvKiBDaG9vc2UgMzEgYXMgdGhlIHN0YXJ0aW5nIHNpemUgb2YgdGhl IGhhc2ggdGFibGUsIHNvbWV3aGF0IGFyYml0cmFyaWx5LgorKyAgICAgU3BhY2UgZm9yIGVhY2gg ZW50cnkgaXMgb2J0YWluZWQgd2l0aCBvbmUgbWFsbG9jIHNvIHdlIGNhbiBmcmVlIHRoZW0KKysg ICAgIGVhc2lseS4gICovCisrCisrICBwc3BhY2VfaW5mby0+bG9hZGVkX3NjcmlwdHMgPSBodGFi X2NyZWF0ZSAoMzEsCisrCQkJCQkgICAgIGhhc2hfbG9hZGVkX3NjcmlwdF9lbnRyeSwKKysJCQkJ CSAgICAgZXFfbG9hZGVkX3NjcmlwdF9lbnRyeSwKKysJCQkJCSAgICAgeGZyZWUpOworKworKyAg cHNwYWNlX2luZm8tPnNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludGVkID0gRkFMU0U7Cisr fQorKworKy8qIFdyYXBwZXIgb24gZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YSB0byBhbHNvIGFs bG9jYXRlIHRoZSBoYXNoIHRhYmxlCisrICAgZm9yIGxvYWRpbmcgc2NyaXB0cy4gICovCisrCisr c3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqCisrZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0 YV9mb3JfbG9hZGluZyAoc3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSkKKyt7CisrICBzdHJ1 Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICppbmZvOworKworKyAgaW5mbyA9IGdldF9hdXRvX2xv YWRfcHNwYWNlX2RhdGEgKHBzcGFjZSk7CisrICBpZiAoaW5mby0+bG9hZGVkX3NjcmlwdHMgPT0g TlVMTCkKKysgICAgaW5pdF9sb2FkZWRfc2NyaXB0c19pbmZvIChpbmZvKTsKKysKKysgIHJldHVy biBpbmZvOworK30KKysKKysvKiBBZGQgc2NyaXB0IE5BTUUgdG8gaGFzaCB0YWJsZSBvZiBQU1BB Q0VfSU5GTy4KKysgICBGVUxMX1BBVEggaXMgTlVMTCBpZiB0aGUgc2NyaXB0IHdhc24ndCBmb3Vu ZC4KKysgICBUaGUgcmVzdWx0IGlzIHRydWUgaWYgdGhlIHNjcmlwdCB3YXMgYWxyZWFkeSBpbiB0 aGUgaGFzaCB0YWJsZS4gICovCisrCisraW50CisrbWF5YmVfYWRkX3NjcmlwdCAoc3RydWN0IGF1 dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm8sIGNvbnN0IGNoYXIgKm5hbWUsCisrCQkg IGNvbnN0IGNoYXIgKmZ1bGxfcGF0aCkKKyt7CisrICBzdHJ1Y3QgaHRhYiAqaHRhYiA9IHBzcGFj ZV9pbmZvLT5sb2FkZWRfc2NyaXB0czsKKysgIHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoqc2xvdCwg ZW50cnk7CisrICBpbnQgaW5faGFzaF90YWJsZTsKKysKKysgIGVudHJ5Lm5hbWUgPSBuYW1lOwor KyAgZW50cnkuZnVsbF9wYXRoID0gZnVsbF9wYXRoOworKyAgc2xvdCA9IChzdHJ1Y3QgbG9hZGVk X3NjcmlwdCAqKikgaHRhYl9maW5kX3Nsb3QgKGh0YWIsICZlbnRyeSwgSU5TRVJUKTsKKysgIGlu X2hhc2hfdGFibGUgPSAqc2xvdCAhPSBOVUxMOworKworKyAgLyogSWYgdGhpcyBzY3JpcHQgaXMg bm90IGluIHRoZSBoYXNoIHRhYmxlLCBhZGQgaXQuICAqLworKworKyAgaWYgKCEgaW5faGFzaF90 YWJsZSkKKysgICAgeworKyAgICAgIGNoYXIgKnA7CisrCisrICAgICAgLyogQWxsb2NhdGUgYWxs IHNwYWNlIGluIG9uZSBjaHVuayBzbyBpdCdzIGVhc2llciB0byBmcmVlLiAgKi8KKysgICAgICAq c2xvdCA9IHhtYWxsb2MgKHNpemVvZiAoKipzbG90KQorKwkJICAgICAgICsgc3RybGVuIChuYW1l KSArIDEKKysJCSAgICAgICArIChmdWxsX3BhdGggIT0gTlVMTCA/IChzdHJsZW4gKGZ1bGxfcGF0 aCkgKyAxKSA6IDApKTsKKysgICAgICBwID0gKChjaGFyKikgKnNsb3QpICsgc2l6ZW9mICgqKnNs b3QpOworKyAgICAgIHN0cmNweSAocCwgbmFtZSk7CisrICAgICAgKCpzbG90KS0+bmFtZSA9IHA7 CisrICAgICAgaWYgKGZ1bGxfcGF0aCAhPSBOVUxMKQorKwl7CisrCSAgcCArPSBzdHJsZW4gKHAp ICsgMTsKKysJICBzdHJjcHkgKHAsIGZ1bGxfcGF0aCk7CisrCSAgKCpzbG90KS0+ZnVsbF9wYXRo ID0gcDsKKysJfQorKyAgICAgIGVsc2UKKysJKCpzbG90KS0+ZnVsbF9wYXRoID0gTlVMTDsKKysg ICAgfQorKworKyAgcmV0dXJuIGluX2hhc2hfdGFibGU7CisrfQorKworKy8qIENsZWFyIHRoZSB0 YWJsZSBvZiBsb2FkZWQgc2VjdGlvbiBzY3JpcHRzLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2Ns ZWFyX3NlY3Rpb25fc2NyaXB0cyAodm9pZCkKKyt7CisrICBzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAq cHNwYWNlID0gY3VycmVudF9wcm9ncmFtX3NwYWNlOworKyAgc3RydWN0IGF1dG9fbG9hZF9wc3Bh Y2VfaW5mbyAqaW5mbzsKKysKKysgIGluZm8gPSBwcm9ncmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwg YXV0b19sb2FkX3BzcGFjZV9kYXRhKTsKKysgIGlmIChpbmZvICE9IE5VTEwgJiYgaW5mby0+bG9h ZGVkX3NjcmlwdHMgIT0gTlVMTCkKKysgICAgeworKyAgICAgIGh0YWJfZGVsZXRlIChpbmZvLT5s b2FkZWRfc2NyaXB0cyk7CisrICAgICAgaW5mby0+bG9hZGVkX3NjcmlwdHMgPSBOVUxMOworKyAg ICAgIGluZm8tPnNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludGVkID0gRkFMU0U7CisrICAg IH0KKyt9CisrCisrLyogTG9vayBmb3IgdGhlIGF1dG8tbG9hZCBzY3JpcHQgYXNzb2NpYXRlZCB3 aXRoIE9CSkZJTEUgYW5kIGxvYWQgaXQuICAqLworKworK3ZvaWQKKythdXRvX2xvYWRfb2JqZmls ZV9zY3JpcHQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBjb25zdCBjaGFyICpzdWZmaXgpCisr eworKyAgY2hhciAqcmVhbG5hbWU7CisrICBjaGFyICpmaWxlbmFtZSwgKmRlYnVnZmlsZTsKKysg IGludCBsZW47CisrICBGSUxFICppbnB1dDsKKysgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwczsK KysKKysgIHJlYWxuYW1lID0gZ2RiX3JlYWxwYXRoIChvYmpmaWxlLT5uYW1lKTsKKysgIGxlbiA9 IHN0cmxlbiAocmVhbG5hbWUpOworKyAgZmlsZW5hbWUgPSB4bWFsbG9jIChsZW4gKyBzdHJsZW4g KHN1ZmZpeCkgKyAxKTsKKysgIG1lbWNweSAoZmlsZW5hbWUsIHJlYWxuYW1lLCBsZW4pOworKyAg c3RyY3B5IChmaWxlbmFtZSArIGxlbiwgc3VmZml4KTsKKysKKysgIGNsZWFudXBzID0gbWFrZV9j bGVhbnVwICh4ZnJlZSwgZmlsZW5hbWUpOworKyAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgcmVhbG5h bWUpOworKworKyAgaW5wdXQgPSBmb3BlbiAoZmlsZW5hbWUsICJyIik7CisrICBkZWJ1Z2ZpbGUg PSBmaWxlbmFtZTsKKysKKysgIGlmICghaW5wdXQgJiYgZGVidWdfZmlsZV9kaXJlY3RvcnkpCisr ICAgIHsKKysgICAgICAvKiBBbHNvIHRyeSB0aGUgc2FtZSBmaWxlIGluIHRoZSBzZXBhcmF0ZSBk ZWJ1ZyBpbmZvIGRpcmVjdG9yeS4gICovCisrICAgICAgZGVidWdmaWxlID0geG1hbGxvYyAoc3Ry bGVuIChmaWxlbmFtZSkKKysJCQkgICArIHN0cmxlbiAoZGVidWdfZmlsZV9kaXJlY3RvcnkpICsg MSk7CisrICAgICAgc3RyY3B5IChkZWJ1Z2ZpbGUsIGRlYnVnX2ZpbGVfZGlyZWN0b3J5KTsKKysg ICAgICAvKiBGSUxFTkFNRSBpcyBhYnNvbHV0ZSwgc28gd2UgZG9uJ3QgbmVlZCBhICIvIiBoZXJl LiAgKi8KKysgICAgICBzdHJjYXQgKGRlYnVnZmlsZSwgZmlsZW5hbWUpOworKworKyAgICAgIG1h a2VfY2xlYW51cCAoeGZyZWUsIGRlYnVnZmlsZSk7CisrICAgICAgaW5wdXQgPSBmb3BlbiAoZGVi dWdmaWxlLCAiciIpOworKyAgICB9CisrCisrICBpZiAoIWlucHV0ICYmIGdkYl9kYXRhZGlyKQor KyAgICB7CisrICAgICAgLyogQWxzbyB0cnkgdGhlIHNhbWUgZmlsZSBpbiBhIHN1YmRpcmVjdG9y eSBvZiBnZGIncyBkYXRhCisrCSBkaXJlY3RvcnkuICAqLworKyAgICAgIGRlYnVnZmlsZSA9IHht YWxsb2MgKHN0cmxlbiAoZ2RiX2RhdGFkaXIpICsgc3RybGVuIChmaWxlbmFtZSkKKysJCQkgICAr IHN0cmxlbiAoIi9hdXRvLWxvYWQiKSArIDEpOworKyAgICAgIHN0cmNweSAoZGVidWdmaWxlLCBn ZGJfZGF0YWRpcik7CisrICAgICAgc3RyY2F0IChkZWJ1Z2ZpbGUsICIvYXV0by1sb2FkIik7Cisr ICAgICAgLyogRklMRU5BTUUgaXMgYWJzb2x1dGUsIHNvIHdlIGRvbid0IG5lZWQgYSAiLyIgaGVy ZS4gICovCisrICAgICAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGZpbGVuYW1lKTsKKysKKysgICAgICBt YWtlX2NsZWFudXAgKHhmcmVlLCBkZWJ1Z2ZpbGUpOworKyAgICAgIGlucHV0ID0gZm9wZW4gKGRl YnVnZmlsZSwgInIiKTsKKysgICAgfQorKworKyAgaWYgKGlucHV0KQorKyAgICB7CisrICAgICAg c3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm87CisrCisrICAgICAgbWFr ZV9jbGVhbnVwX2ZjbG9zZSAoaW5wdXQpOworKworKyAgICAgIC8qIEFkZCB0aGlzIHNjcmlwdCB0 byB0aGUgaGFzaCB0YWJsZSB0b28gc28gImluZm8gYXV0by1sb2FkLXNjcmlwdHMiCisrCSBjYW4g cHJpbnQgaXQuICAqLworKyAgICAgIHBzcGFjZV9pbmZvID0KKysJZ2V0X2F1dG9fbG9hZF9wc3Bh Y2VfZGF0YV9mb3JfbG9hZGluZyAoY3VycmVudF9wcm9ncmFtX3NwYWNlKTsKKysgICAgICBtYXli ZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5mbywgZGVidWdmaWxlLCBkZWJ1Z2ZpbGUpOworKworKyAg ICAgIC8qIFRvIHByZXNlcnZlIGV4aXN0aW5nIGJlaGF2aW91ciB3ZSBkb24ndCBjaGVjayBmb3Ig d2hldGhlciB0aGUKKysJIHNjcmlwdCB3YXMgYWxyZWFkeSBpbiB0aGUgdGFibGUsIGFuZCBhbHdh eXMgbG9hZCBpdC4KKysJIEl0J3MgaGlnaGx5IHVubGlrZWx5IHRoYXQgd2UnZCBldmVyIGxvYWQg aXQgdHdpY2UsCisrCSBhbmQgdGhlc2Ugc2NyaXB0cyBhcmUgcmVxdWlyZWQgdG8gYmUgaWRlbXBv dGVudCB1bmRlciBtdWx0aXBsZQorKwkgbG9hZHMgYW55d2F5LiAgKi8KKysgICAgICBzb3VyY2Vf cHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgaW5wdXQsIGRlYnVnZmlsZSk7Cisr ICAgIH0KKysKKysgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7CisrfQorKworKy8qIFRoaXMgaXMg YSBuZXdfb2JqZmlsZSBvYnNlcnZlciBjYWxsYmFjayB0byBhdXRvLWxvYWQgc2NyaXB0cy4KKysK KysgICBUd28gZmxhdm9ycyBvZiBhdXRvLWxvYWRlZCBzY3JpcHRzIGFyZSBzdXBwb3J0ZWQuCisr ICAgMSkgYmFzZWQgb24gdGhlIHBhdGggdG8gdGhlIG9iamZpbGUKKysgICAyKSBmcm9tIC5kZWJ1 Z19nZGJfc2NyaXB0cyBzZWN0aW9uICAqLworKworK3N0YXRpYyB2b2lkCisrYXV0b19sb2FkX25l d19vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyt7CisrICBpZiAoIW9iamZpbGUp CisrICAgIHsKKysgICAgICAvKiBPQkpGSUxFIGlzIE5VTEwgd2hlbiBsb2FkaW5nIGEgbmV3ICJt YWluIiBzeW1ib2wtZmlsZS4gICovCisrICAgICAgY2xlYXJfc2VjdGlvbl9zY3JpcHRzICgpOwor KyAgICAgIHJldHVybjsKKysgICAgfQorKworKyAgbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZp bGUgKG9iamZpbGUpOworK30KKysKKysvKiBDb2xsZWN0IHNjcmlwdHMgdG8gYmUgcHJpbnRlZCBp biBhIHZlYy4gICovCisrCisrdHlwZWRlZiBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqbG9hZGVkX3Nj cmlwdF9wdHI7CisrREVGX1ZFQ19QIChsb2FkZWRfc2NyaXB0X3B0cik7CisrCisrLyogVHJhdmVy c2FsIGZ1bmN0aW9uIGZvciBodGFiX3RyYXZlcnNlLgorKyAgIENvbGxlY3QgdGhlIGVudHJ5IGlm IGl0IG1hdGNoZXMgdGhlIHJlZ2V4cC4gICovCisrCisrc3RhdGljIGludAorK2NvbGxlY3RfbWF0 Y2hpbmdfc2NyaXB0cyAodm9pZCAqKnNsb3QsIHZvaWQgKmluZm8pCisreworKyAgc3RydWN0IGxv YWRlZF9zY3JpcHQgKnNjcmlwdCA9ICpzbG90OworKyAgVkVDIChsb2FkZWRfc2NyaXB0X3B0cikg KipzY3JpcHRzX3B0ciA9IGluZm87CisrCisrICBpZiAocmVfZXhlYyAoc2NyaXB0LT5uYW1lKSkK KysgICAgVkVDX3NhZmVfcHVzaCAobG9hZGVkX3NjcmlwdF9wdHIsICpzY3JpcHRzX3B0ciwgc2Ny aXB0KTsKKysKKysgIHJldHVybiAxOworK30KKysKKysvKiBQcmludCBTQ1JJUFQuICAqLworKwor K3N0YXRpYyB2b2lkCisrcHJpbnRfc2NyaXB0IChzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqc2NyaXB0 KQorK3sKKysgIHN0cnVjdCB1aV9vdXQgKnVpb3V0ID0gY3VycmVudF91aW91dDsKKysgIHN0cnVj dCBjbGVhbnVwICpjaGFpbjsKKysKKysgIGNoYWluID0gbWFrZV9jbGVhbnVwX3VpX291dF90dXBs ZV9iZWdpbl9lbmQgKHVpb3V0LCBOVUxMKTsKKysKKysgIHVpX291dF9maWVsZF9zdHJpbmcgKHVp b3V0LCAibG9hZGVkIiwgc2NyaXB0LT5mdWxsX3BhdGggPyAiWWVzIiA6ICJNaXNzaW5nIik7Cisr ICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgInNjcmlwdCIsIHNjcmlwdC0+bmFtZSk7Cisr ICB1aV9vdXRfdGV4dCAodWlvdXQsICJcbiIpOworKworKyAgLyogSWYgdGhlIG5hbWUgaXNuJ3Qg dGhlIGZ1bGwgcGF0aCwgcHJpbnQgaXQgdG9vLiAgKi8KKysgIGlmIChzY3JpcHQtPmZ1bGxfcGF0 aCAhPSBOVUxMCisrICAgICAgJiYgc3RyY21wIChzY3JpcHQtPm5hbWUsIHNjcmlwdC0+ZnVsbF9w YXRoKSAhPSAwKQorKyAgICB7CisrICAgICAgdWlfb3V0X3RleHQgKHVpb3V0LCAiXHRmdWxsIG5h bWU6ICIpOworKyAgICAgIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAiZnVsbF9wYXRoIiwg c2NyaXB0LT5mdWxsX3BhdGgpOworKyAgICAgIHVpX291dF90ZXh0ICh1aW91dCwgIlxuIik7Cisr ICAgIH0KKysKKysgIGRvX2NsZWFudXBzIChjaGFpbik7CisrfQorKworKy8qIEhlbHBlciBmb3Ig aW5mb19hdXRvX2xvYWRfc2NyaXB0cyB0byBzb3J0IHRoZSBzY3JpcHRzIGJ5IG5hbWUuICAqLwor KworK3N0YXRpYyBpbnQKKytzb3J0X3NjcmlwdHNfYnlfbmFtZSAoY29uc3Qgdm9pZCAqYXAsIGNv bnN0IHZvaWQgKmJwKQorK3sKKysgIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICphID0gKihj b25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqKikgYXA7CisrICBjb25zdCBzdHJ1Y3QgbG9hZGVk X3NjcmlwdCAqYiA9ICooY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKiopIGJwOworKworKyAg cmV0dXJuIEZJTEVOQU1FX0NNUCAoYS0+bmFtZSwgYi0+bmFtZSk7CisrfQorKworKy8qICJpbmZv IGF1dG8tbG9hZC1zY3JpcHRzIiBjb21tYW5kLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2luZm9f YXV0b19sb2FkX3NjcmlwdHMgKGNoYXIgKnBhdHRlcm4sIGludCBmcm9tX3R0eSkKKyt7CisrICBz dHJ1Y3QgdWlfb3V0ICp1aW91dCA9IGN1cnJlbnRfdWlvdXQ7CisrICBzdHJ1Y3QgYXV0b19sb2Fk X3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKKysgIHN0cnVjdCBjbGVhbnVwICpzY3JpcHRfY2hh aW47CisrICBWRUMgKGxvYWRlZF9zY3JpcHRfcHRyKSAqc2NyaXB0czsKKysgIGludCBucl9zY3Jp cHRzOworKworKyAgZG9udF9yZXBlYXQgKCk7CisrCisrICBwc3BhY2VfaW5mbyA9IGdldF9hdXRv X2xvYWRfcHNwYWNlX2RhdGEgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7CisrCisrICBpZiAocGF0 dGVybiAmJiAqcGF0dGVybikKKysgICAgeworKyAgICAgIGNoYXIgKnJlX2VyciA9IHJlX2NvbXAg KHBhdHRlcm4pOworKworKyAgICAgIGlmIChyZV9lcnIpCisrCWVycm9yIChfKCJJbnZhbGlkIHJl Z2V4cDogJXMiKSwgcmVfZXJyKTsKKysgICAgfQorKyAgZWxzZQorKyAgICB7CisrICAgICAgcmVf Y29tcCAoIiIpOworKyAgICB9CisrCisrICAvKiBXZSBuZWVkIHRvIGtub3cgdGhlIG51bWJlciBv ZiByb3dzIGJlZm9yZSB3ZSBidWlsZCB0aGUgdGFibGUuCisrICAgICBQbHVzIHdlIHdhbnQgdG8g c29ydCB0aGUgc2NyaXB0cyBieSBuYW1lLgorKyAgICAgU28gZmlyc3QgdHJhdmVyc2UgdGhlIGhh c2ggdGFibGUgY29sbGVjdGluZyB0aGUgbWF0Y2hpbmcgc2NyaXB0cy4gICovCisrCisrICBzY3Jp cHRzID0gVkVDX2FsbG9jIChsb2FkZWRfc2NyaXB0X3B0ciwgMTApOworKyAgc2NyaXB0X2NoYWlu ID0gbWFrZV9jbGVhbnVwIChWRUNfY2xlYW51cCAobG9hZGVkX3NjcmlwdF9wdHIpLCAmc2NyaXB0 cyk7CisrCisrICBpZiAocHNwYWNlX2luZm8gIT0gTlVMTCAmJiBwc3BhY2VfaW5mby0+bG9hZGVk X3NjcmlwdHMgIT0gTlVMTCkKKysgICAgeworKyAgICAgIGltbWVkaWF0ZV9xdWl0Kys7CisrICAg ICAgLyogUGFzcyBhIHBvaW50ZXIgdG8gc2NyaXB0cyBhcyBWRUNfc2FmZV9wdXNoIGNhbiByZWFs bG9jIHNwYWNlLiAgKi8KKysgICAgICBodGFiX3RyYXZlcnNlX25vcmVzaXplIChwc3BhY2VfaW5m by0+bG9hZGVkX3NjcmlwdHMsCisrCQkJICAgICAgY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzLCAm c2NyaXB0cyk7CisrICAgICAgaW1tZWRpYXRlX3F1aXQtLTsKKysgICAgfQorKworKyAgbnJfc2Ny aXB0cyA9IFZFQ19sZW5ndGggKGxvYWRlZF9zY3JpcHRfcHRyLCBzY3JpcHRzKTsKKysgIG1ha2Vf Y2xlYW51cF91aV9vdXRfdGFibGVfYmVnaW5fZW5kICh1aW91dCwgMiwgbnJfc2NyaXB0cywKKysJ CQkJICAgICAgICJBdXRvTG9hZGVkU2NyaXB0c1RhYmxlIik7CisrCisrICB1aV9vdXRfdGFibGVf aGVhZGVyICh1aW91dCwgNywgdWlfbGVmdCwgImxvYWRlZCIsICJMb2FkZWQiKTsKKysgIHVpX291 dF90YWJsZV9oZWFkZXIgKHVpb3V0LCA3MCwgdWlfbGVmdCwgInNjcmlwdCIsICJTY3JpcHQiKTsK KysgIHVpX291dF90YWJsZV9ib2R5ICh1aW91dCk7CisrCisrICBpZiAobnJfc2NyaXB0cyA+IDAp CisrICAgIHsKKysgICAgICBpbnQgaTsKKysgICAgICBsb2FkZWRfc2NyaXB0X3B0ciBzY3JpcHQ7 CisrCisrICAgICAgcXNvcnQgKFZFQ19hZGRyZXNzIChsb2FkZWRfc2NyaXB0X3B0ciwgc2NyaXB0 cyksCisrCSAgICAgVkVDX2xlbmd0aCAobG9hZGVkX3NjcmlwdF9wdHIsIHNjcmlwdHMpLAorKwkg ICAgIHNpemVvZiAobG9hZGVkX3NjcmlwdF9wdHIpLCBzb3J0X3NjcmlwdHNfYnlfbmFtZSk7Cisr ICAgICAgZm9yIChpID0gMDsgVkVDX2l0ZXJhdGUgKGxvYWRlZF9zY3JpcHRfcHRyLCBzY3JpcHRz LCBpLCBzY3JpcHQpOyArK2kpCisrCXByaW50X3NjcmlwdCAoc2NyaXB0KTsKKysgICAgfQorKwor KyAgZG9fY2xlYW51cHMgKHNjcmlwdF9jaGFpbik7CisrCisrICBpZiAobnJfc2NyaXB0cyA9PSAw KQorKyAgICB7CisrICAgICAgaWYgKHBhdHRlcm4gJiYgKnBhdHRlcm4pCisrCXVpX291dF9tZXNz YWdlICh1aW91dCwgMCwgIk5vIGF1dG8tbG9hZCBzY3JpcHRzIG1hdGNoaW5nICVzLlxuIiwKKysJ CQlwYXR0ZXJuKTsKKysgICAgICBlbHNlCisrCXVpX291dF9tZXNzYWdlICh1aW91dCwgMCwgIk5v IGF1dG8tbG9hZCBzY3JpcHRzLlxuIik7CisrICAgIH0KKyt9CisrCisrLyogUmV0dXJuIG5vbi16 ZXJvIGlmIFNDUklQVF9OT1RfRk9VTkRfV0FSTklOR19QUklOVEVEIG9mIFBTUEFDRV9JTkZPIHdh cyB1bnNldAorKyAgIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uICBBbHdheXMgc2V0IFND UklQVF9OT1RfRk9VTkRfV0FSTklOR19QUklOVEVECisrICAgb2YgUFNQQUNFX0lORk8uICAqLwor KworK2ludAorK3NjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludCAoc3RydWN0IGF1dG9fbG9h ZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm8pCisreworKyAgaW50IHJldHZhbCA9ICFwc3BhY2Vf aW5mby0+c2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50ZWQ7CisrCisrICBwc3BhY2VfaW5m by0+c2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50ZWQgPSAxOworKworKyAgcmV0dXJuIHJl dHZhbDsKKyt9CisrCisrdm9pZCBfaW5pdGlhbGl6ZV9hdXRvX2xvYWQgKHZvaWQpOworKworK3Zv aWQKKytfaW5pdGlhbGl6ZV9hdXRvX2xvYWQgKHZvaWQpCisreworKyAgYXV0b19sb2FkX3BzcGFj ZV9kYXRhCisrICAgID0gcmVnaXN0ZXJfcHJvZ3JhbV9zcGFjZV9kYXRhX3dpdGhfY2xlYW51cCAo YXV0b19sb2FkX3BzcGFjZV9kYXRhX2NsZWFudXApOworKworKyAgb2JzZXJ2ZXJfYXR0YWNoX25l d19vYmpmaWxlIChhdXRvX2xvYWRfbmV3X29iamZpbGUpOworKworKyAgYWRkX2luZm8gKCJhdXRv LWxvYWQtc2NyaXB0cyIsCisrCSAgICBpbmZvX2F1dG9fbG9hZF9zY3JpcHRzLAorKwkgICAgXygi UHJpbnQgdGhlIGxpc3Qgb2YgYXV0b21hdGljYWxseSBsb2FkZWQgc2NyaXB0cy5cblwKKytVc2Fn ZTogaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyBbUkVHRVhQXSIpKTsKKyt9CitJbmRleDogZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJ MTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy40LjUwLjIwMTIw MTIwL2dkYi9hdXRvLWxvYWQuaAkyMDEyLTA0LTE4IDAwOjI2OjI5LjA0OTEyMDIxMiArMDIwMAor QEAgLTAsMCArMSwzNiBAQAorKy8qIEdEQiByb3V0aW5lcyBmb3Igc3VwcG9ydGluZyBhdXRvLWxv YWRlZCBzY3JpcHRzLgorKworKyAgIENvcHlyaWdodCAoQykgMjAxMiBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCisrCisrICAg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAg IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor KworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworKyNpZm5kZWYgQVVUT19M T0FEX0gKKysjZGVmaW5lIEFVVE9fTE9BRF9IIDEKKysKKytzdHJ1Y3QgcHJvZ3JhbV9zcGFjZTsK KysKKytleHRlcm4gaW50IGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQ7CisrCisrZXh0ZXJuIHN0cnVj dCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKgorKyAgZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9m b3JfbG9hZGluZyAoc3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSk7CisrZXh0ZXJuIGludCBt YXliZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5m bywKKysJCQkgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aCk7Cisr ZXh0ZXJuIHZvaWQgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwKKysJCQkJICAgICAgY29uc3QgY2hhciAqc3VmZml4KTsKKytleHRlcm4gaW50CisrICBz Y3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnQgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2lu Zm8gKnBzcGFjZV9pbmZvKTsKKysKKysjZW5kaWYgLyogQVVUT19MT0FEX0ggKi8KK0luZGV4OiBn ZGItNy40LjUwLjIwMTIwMTIwL2dkYi9nZGItZ2RiLmdkYi5pbgorPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9k ZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL2dkYi1nZGIuZ2RiLmluCTIwMTItMDQtMTggMDA6MjY6MjkuMDQ5MTIw MjEyICswMjAwCitAQCAtMCwwICsxLDM0IEBACisrZWNobyBTZXR0aW5nIHVwIHRoZSBlbnZpcm9u bWVudCBmb3IgZGVidWdnaW5nIGdkYi5cbgorKworK3NldCBjb21wbGFpbnRzIDEKKysKKytiIGlu dGVybmFsX2Vycm9yCisrCisrYiBpbmZvX2NvbW1hbmQKKytjb21tYW5kcworKwlzaWxlbnQKKysJ cmV0dXJuCisrZW5kCisrCisrZGlyIEBzcmNkaXJALy4uL2xpYmliZXJ0eQorK2RpciBAc3JjZGly QC8uLi9iZmQKKytkaXIgQHNyY2RpckAKKytkaXIgLgorK3NldCBwcm9tcHQgKHRvcC1nZGIpIAor KworK2RlZmluZSBwZGllCisrICBpZiAkYXJnYyA9PSAxCisrICAgIGNhbGwgZHVtcF9kaWUgKCRh cmcwLCAxKQorKyAgZWxzZQorKyAgICBpZiAkYXJnYyA9PSAyCisrICAgICAgY2FsbCBkdW1wX2Rp ZSAoJGFyZzAsICRhcmcxKQorKyAgICBlbHNlCisrICAgICAgcHJpbnRmICJTeW50YXg6IHBkaWUg ZGllIFtkZXB0aF1cbiIKKysgICAgZW5kCisrICBlbmQKKytlbmQKKysKKytkb2N1bWVudCBwZGll CisrUHJldHR5IHByaW50IGEgRFdBUkYgRElFLgorK1N5bnRheDogcGRpZSBkaWUgW2RlcHRoXQor K2VuZAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL01ha2VmaWxlLmluCis9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9NYWtlZmlsZS5pbgkyMDEyLTA0 LTE4IDAwOjI2OjE0LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L01ha2VmaWxlLmluCTIwMTItMDQtMTggMDA6MjY6NTMuNDU1MDU4MDM3ICswMjAwCitAQCAtNjgw LDcgKzY4MCw3IEBAIFRBUkdFVF9GTEFHU19UT19QQVNTID0gXAorICMgU0ZJTEVTIGlzIHVzZWQg aW4gYnVpbGRpbmcgdGhlIGRpc3RyaWJ1dGlvbiBhcmNoaXZlLgorIAorIFNGSUxFUyA9IGFkYS1l eHAueSBhZGEtbGFuZy5jIGFkYS10eXBlcHJpbnQuYyBhZGEtdmFscHJpbnQuYyBhZGEtdGFza3Mu YyBcCistCWFkZHJtYXAuYyBcCisrCWFkZHJtYXAuYyBhdXRvLWxvYWQuYyBcCisgCWF1eHYuYyBh eC1nZW5lcmFsLmMgYXgtZ2RiLmMgXAorIAliY2FjaGUuYyBcCisgCWJmZC10YXJnZXQuYyBcCitA QCAtODE5LDcgKzgxOSw3IEBAIHNvbGliLWRhcndpbi5oIHNvbGliLWlhNjQtaHB1eC5oIHNvbGli LXMKKyBnbnVsaWIvZXh0cmEvYXJnLW5vbm51bGwuaCBnbnVsaWIvZXh0cmEvYysrZGVmcy5oIGdu dWxpYi9leHRyYS93YXJuLW9uLXVzZS5oIFwKKyBnbnVsaWIvc3RkZGVmLmluLmggaW5saW5lLWZy YW1lLmggc2tpcC5oIHN0YXAtcHJvYmUuaCBcCisgY29tbW9uL2NvbW1vbi11dGlscy5oIGNvbW1v bi94bWwtdXRpbHMuaCBjb21tb24vYnVmZmVyLmggY29tbW9uL3B0aWQuaCBcCistY29tbW9uL2xp bnV4LW9zZGF0YS5oIGdkYi1kbGZjbi5oCisrY29tbW9uL2xpbnV4LW9zZGF0YS5oIGdkYi1kbGZj bi5oIGF1dG8tbG9hZC5oCisgCisgIyBIZWFkZXIgZmlsZXMgdGhhdCBhbHJlYWR5IGhhdmUgc3Jj ZGlyIGluIHRoZW0sIG9yIHdoaWNoIGFyZSBpbiBvYmpkaXIuCisgCitAQCAtODUxLDcgKzg1MSw3 IEBAIENPTU1PTl9PQlMgPSAkKERFUEZJTEVTKSAkKENPTkZJR19PQlMpICQKKyAJdmVyc2lvbi5v IFwKKyAJYW5ub3RhdGUubyBcCisgCWFkZHJtYXAubyBcCistCWF1eHYubyBcCisrCWF1dG8tbG9h ZC5vIGF1eHYubyBcCisgCWJmZC10YXJnZXQubyBcCisgCWJsb2NrZnJhbWUubyBicmVha3BvaW50 Lm8gZmluZHZhci5vIHJlZ2NhY2hlLm8gXAorIAljaGFyc2V0Lm8gY29udGludWF0aW9ucy5vIGNv cmVsb3cubyBkaXNhc20ubyBkdW1teS1mcmFtZS5vIGRmcC5vIFwKK0BAIC0xMjU1LDcgKzEyNTUs NyBAQCBkaXN0Y2xlYW46IGNsZWFuCisgCXJtIC1mIGdkYnNlcnZlci9jb25maWcuc3RhdHVzIGdk YnNlcnZlci9jb25maWcubG9nCisgCXJtIC1mIGdkYnNlcnZlci90bS5oIGdkYnNlcnZlci94bS5o IGdkYnNlcnZlci9ubS5oCisgCXJtIC1mIGdkYnNlcnZlci9NYWtlZmlsZSBnZGJzZXJ2ZXIvY29u ZmlnLmNhY2hlCistCXJtIC1mIG5tLmggY29uZmlnLnN0YXR1cyBjb25maWcuaCBzdGFtcC1oIC5n ZGJpbml0IGppdC1yZWFkZXIuaAorKwlybSAtZiBubS5oIGNvbmZpZy5zdGF0dXMgY29uZmlnLmgg c3RhbXAtaCBnZGItZ2RiLmdkYiBqaXQtcmVhZGVyLmgKKyAJcm0gLWYgeS5vdXRwdXQgeWFjYy5h Y3RzIHlhY2MudG1wIHkudGFiLmgKKyAJcm0gLWYgY29uZmlnLmxvZyBjb25maWcuY2FjaGUKKyAJ cm0gLWYgTWFrZWZpbGUKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUK Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2NvbmZpZ3VyZQky MDEyLTA0LTE4IDAwOjI2OjE0LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL2NvbmZpZ3VyZQkyMDEyLTA0LTE4IDAwOjI2OjI5LjA1MzEyMDIwMiArMDIwMAorQEAg LTE2ODM5LDcgKzE2ODM5LDcgQEAgYWNfY29uZmlnX2xpbmtzPSIkYWNfY29uZmlnX2xpbmtzICRh Y19jbworICRhc19lY2hvICIjZGVmaW5lIEdEQl9ERUZBVUxUX0hPU1RfQ0hBUlNFVCBcIlVURi04 XCIiID4+Y29uZmRlZnMuaAorIAorIAorLWFjX2NvbmZpZ19maWxlcz0iJGFjX2NvbmZpZ19maWxl cyBNYWtlZmlsZSAuZ2RiaW5pdDpnZGJpbml0LmluIGRvYy9NYWtlZmlsZSBnbnVsaWIvTWFrZWZp bGUgZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUiCisrYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmln X2ZpbGVzIE1ha2VmaWxlIGdkYi1nZGIuZ2RiIGRvYy9NYWtlZmlsZSBnbnVsaWIvTWFrZWZpbGUg ZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUiCisgCisgYWNfY29uZmlnX2NvbW1hbmRzPSIkYWNfY29u ZmlnX2NvbW1hbmRzIGRlZmF1bHQiCisgCitAQCAtMTc2MDUsNyArMTc2MDUsNyBAQCBkbworICAg ICAiaml0LXJlYWRlci5oIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGppdC1yZWFkZXIu aDpqaXQtcmVhZGVyLmluIiA7OworICAgICAiJGFjX2NvbmZpZ19saW5rc18xIikgQ09ORklHX0xJ TktTPSIkQ09ORklHX0xJTktTICRhY19jb25maWdfbGlua3NfMSIgOzsKKyAgICAgIk1ha2VmaWxl IikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIE1ha2VmaWxlIiA7OworLSAgICAiLmdkYmlu aXQiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgLmdkYmluaXQ6Z2RiaW5pdC5pbiIgOzsK KysgICAgImdkYi1nZGIuZ2RiIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGdkYi1nZGIu Z2RiIiA7OworICAgICAiZG9jL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVT IGRvYy9NYWtlZmlsZSIgOzsKKyAgICAgImdudWxpYi9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0i JENPTkZJR19GSUxFUyBnbnVsaWIvTWFrZWZpbGUiIDs7CisgICAgICJkYXRhLWRpcmVjdG9yeS9N YWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBkYXRhLWRpcmVjdG9yeS9NYWtl ZmlsZSIgOzsKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUuYWMKKz09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2NvbmZpZ3VyZS5hYwky MDEyLTA0LTE4IDAwOjI2OjE0LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEyLTA0LTE4IDAwOjI2OjI5LjA1MzEyMDIwMiArMDIwMAor QEAgLTI0MjIsNyArMjQyMiw3IEBAIGRubCAgQXQgdGhlIG1vbWVudCwgd2UganVzdCBhc3N1bWUg aXQncworIEFDX0RFRklORShHREJfREVGQVVMVF9IT1NUX0NIQVJTRVQsICJVVEYtOCIsCisgICAg ICAgICAgIFtEZWZpbmUgdG8gYmUgYSBzdHJpbmcgbmFtaW5nIHRoZSBkZWZhdWx0IGhvc3QgY2hh cmFjdGVyIHNldC5dKQorIAorLUFDX09VVFBVVChNYWtlZmlsZSAuZ2RiaW5pdDpnZGJpbml0Lmlu IGRvYy9NYWtlZmlsZSBnbnVsaWIvTWFrZWZpbGUgZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUsCisr QUNfT1VUUFVUKE1ha2VmaWxlIGdkYi1nZGIuZ2RiIGRvYy9NYWtlZmlsZSBnbnVsaWIvTWFrZWZp bGUgZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUsCisgWworIGNhc2UgeCRDT05GSUdfSEVBREVSUyBp bgorIHhjb25maWcuaDpjb25maWcuaW4pCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv bWFpbi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9tYWlu LmMJMjAxMi0wNC0xOCAwMDoyNjoxNC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi9tYWluLmMJMjAxMi0wNC0xOCAwMDoyNjoyOS4wNTQxMjAxOTkgKzAyMDAKK0BA IC00Miw2ICs0Miw3IEBACisgI2luY2x1ZGUgImNsaS9jbGktY21kcy5oIgorICNpbmNsdWRlICJw eXRob24vcHl0aG9uLmgiCisgI2luY2x1ZGUgIm9iamZpbGVzLmgiCisrI2luY2x1ZGUgImF1dG8t bG9hZC5oIgorIAorIC8qIFRoZSBzZWxlY3RlZCBpbnRlcnByZXRlci4gIFRoaXMgd2lsbCBiZSB1 c2VkIGFzIGEgc2V0IGNvbW1hbmQKKyAgICB2YXJpYWJsZSwgc28gaXQgc2hvdWxkIGFsd2F5cyBi ZSBtYWxsb2MnZWQgLSBzaW5jZQorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhv bi9weS1hdXRvLWxvYWQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3Jp Zy9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6MjY6MTQuMDAwMDAwMDAw ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5j CTIwMTItMDQtMTggMDA6MjY6MjkuMDU0MTIwMTk5ICswMjAwCitAQCAtMTgsMzAgKzE4LDE0IEBA CisgICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uICAqLworIAorICNpbmNsdWRlICJkZWZzLmgiCistI2luY2x1ZGUg ImZpbGVuYW1lcy5oIgorICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCistI2luY2x1ZGUgImdkYl9y ZWdleC5oIgorICNpbmNsdWRlICJ0b3AuaCIKKyAjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgorLSNp bmNsdWRlICJjb21tYW5kLmgiCisgI2luY2x1ZGUgImdkYmNtZC5oIgorLSNpbmNsdWRlICJvYnNl cnZlci5oIgorLSNpbmNsdWRlICJwcm9nc3BhY2UuaCIKKyAjaW5jbHVkZSAib2JqZmlsZXMuaCIK KyAjaW5jbHVkZSAicHl0aG9uLmgiCisgI2luY2x1ZGUgImNsaS9jbGktY21kcy5oIgorLQorLS8q IEludGVybmFsLXVzZSBmbGFnIHRvIGVuYWJsZS9kaXNhYmxlIGF1dG8tbG9hZGluZy4KKy0gICBU aGlzIGlzIHRydWUgaWYgd2Ugc2hvdWxkIGF1dG8tbG9hZCBweXRob24gY29kZSB3aGVuIGFuIG9i amZpbGUgaXMgb3BlbmVkLAorLSAgIGZhbHNlIG90aGVyd2lzZS4KKy0KKy0gICBCb3RoIGF1dG9f bG9hZF9zY3JpcHRzICYmIGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQgbXVzdCBiZSB0cnVlIHRvIGVu YWJsZQorLSAgIGF1dG8tbG9hZGluZy4KKy0KKy0gICBUaGlzIGZsYWcgZXhpc3RzIHRvIGZhY2ls aXRhdGUgZGVmZXJyaW5nIGF1dG8tbG9hZGluZyBkdXJpbmcgc3RhcnQtdXAKKy0gICB1bnRpbCBh ZnRlciAuLy5nZGJpbml0IGhhcyBiZWVuIHJlYWQ7IGl0IG1heSBhdWdtZW50IHRoZSBzZWFyY2gg ZGlyZWN0b3JpZXMKKy0gICB1c2VkIHRvIGZpbmQgdGhlIHNjcmlwdHMuICAqLworLWludCBnZGJw eV9nbG9iYWxfYXV0b19sb2FkID0gMTsKKysjaW5jbHVkZSAiYXV0by1sb2FkLmgiCisgCisgI2lm ZGVmIEhBVkVfUFlUSE9OCisgCitAQCAtNjAsMzIgKzQ0LDYgQEAgaW50IGdkYnB5X2dsb2JhbF9h dXRvX2xvYWQgPSAxOworICAgIFRoZSBsZWFkaW5nIGJ5dGUgaXMgdG8gYWxsb3cgdXB3YXJkIGNv bXBhdGlibGUgZXh0ZW5zaW9ucy4gICovCisgI2RlZmluZSBHREJQWV9BVVRPX1NFQ1RJT05fTkFN RSAiLmRlYnVnX2dkYl9zY3JpcHRzIgorIAorLS8qIEZvciBzY3JpcHRzIHNwZWNpZmllZCBpbiAu ZGVidWdfZ2RiX3NjcmlwdHMsIG11bHRpcGxlIG9iamZpbGVzIG1heSBsb2FkCistICAgdGhlIHNh bWUgc2NyaXB0LiAgVGhlcmUncyBubyBwb2ludCBpbiBsb2FkaW5nIHRoZSBzY3JpcHQgbXVsdGlw bGUgdGltZXMsCistICAgYW5kIHRoZXJlIGNhbiBiZSBhIGxvdCBvZiBvYmpmaWxlcyBhbmQgc2Ny aXB0cywgc28gd2Uga2VlcCB0cmFjayBvZiBzY3JpcHRzCistICAgbG9hZGVkIHRoaXMgd2F5LiAg Ki8KKy0KKy1zdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvCisteworLSAgLyogRm9yIGVhY2gg cHJvZ3JhbSBzcGFjZSB3ZSBrZWVwIHRyYWNrIG9mIGxvYWRlZCBzY3JpcHRzLiAgKi8KKy0gIHN0 cnVjdCBodGFiICpsb2FkZWRfc2NyaXB0czsKKy0KKy0gIC8qIE5vbi16ZXJvIGlmIHdlJ3ZlIGlz c3VlZCB0aGUgd2FybmluZyBhYm91dCBhbiBhdXRvLWxvYWQgc2NyaXB0IG5vdCBiZWluZworLSAg ICAgZm91bmQuICBXZSBvbmx5IHdhbnQgdG8gaXNzdWUgdGhpcyB3YXJuaW5nIG9uY2UuICAqLwor LSAgaW50IHNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludGVkOworLX07CistCistLyogT2Jq ZWN0cyBvZiB0aGlzIHR5cGUgYXJlIHN0b3JlZCBpbiB0aGUgbG9hZGVkIHNjcmlwdCBoYXNoIHRh YmxlLiAgKi8KKy0KKy1zdHJ1Y3QgbG9hZGVkX3NjcmlwdAorLXsKKy0gIC8qIE5hbWUgYXMgcHJv dmlkZWQgYnkgdGhlIG9iamZpbGUuICAqLworLSAgY29uc3QgY2hhciAqbmFtZTsKKy0gIC8qIEZ1 bGwgcGF0aCBuYW1lIG9yIE5VTEwgaWYgc2NyaXB0IHdhc24ndCBmb3VuZCAob3Igd2FzIG90aGVy d2lzZQorLSAgICAgaW5hY2Nlc3NpYmxlKS4gICovCistICBjb25zdCBjaGFyICpmdWxsX3BhdGg7 CistfTsKKy0KKyAvKiBVc2VyLXNldHRhYmxlIG9wdGlvbiB0byBlbmFibGUvZGlzYWJsZSBhdXRv LWxvYWRpbmc6CisgICAgc2V0IGF1dG8tbG9hZC1zY3JpcHRzIG9ufG9mZgorICAgIFRoaXMgaXMg dHJ1ZSBpZiB3ZSBzaG91bGQgYXV0by1sb2FkIGFzc29jaWF0ZWQgc2NyaXB0cyB3aGVuIGFuIG9i amZpbGUKK0BAIC05NywxMzYgKzU1LDYgQEAgc3RydWN0IGxvYWRlZF9zY3JpcHQKKyAgICBUaGUg ZmFjdCB0aGF0IGl0IGxpdmVzIGhlcmUgaXMganVzdCBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwu ICAqLworIHN0YXRpYyBpbnQgYXV0b19sb2FkX3NjcmlwdHMgPSAxOworIAorLS8qIFBlci1wcm9n cmFtLXNwYWNlIGRhdGEga2V5LiAgKi8KKy1zdGF0aWMgY29uc3Qgc3RydWN0IHByb2dyYW1fc3Bh Y2VfZGF0YSAqYXV0b19sb2FkX3BzcGFjZV9kYXRhOworLQorLXN0YXRpYyB2b2lkCistYXV0b19s b2FkX3BzcGFjZV9kYXRhX2NsZWFudXAgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UsIHZv aWQgKmFyZykKKy17CistICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICppbmZvOworLQor LSAgaW5mbyA9IHByb2dyYW1fc3BhY2VfZGF0YSAocHNwYWNlLCBhdXRvX2xvYWRfcHNwYWNlX2Rh dGEpOworLSAgaWYgKGluZm8gIT0gTlVMTCkKKy0gICAgeworLSAgICAgIGlmIChpbmZvLT5sb2Fk ZWRfc2NyaXB0cykKKy0JaHRhYl9kZWxldGUgKGluZm8tPmxvYWRlZF9zY3JpcHRzKTsKKy0gICAg ICB4ZnJlZSAoaW5mbyk7CistICAgIH0KKy19CistCistLyogR2V0IHRoZSBjdXJyZW50IGF1dG9s b2FkIGRhdGEuICBJZiBub25lIGlzIGZvdW5kIHlldCwgYWRkIGl0IG5vdy4gIFRoaXMKKy0gICBm dW5jdGlvbiBhbHdheXMgcmV0dXJucyBhIHZhbGlkIG9iamVjdC4gICovCistCistc3RhdGljIHN0 cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKgorLWdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGEg KHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UpCisteworLSAgc3RydWN0IGF1dG9fbG9hZF9w c3BhY2VfaW5mbyAqaW5mbzsKKy0KKy0gIGluZm8gPSBwcm9ncmFtX3NwYWNlX2RhdGEgKHBzcGFj ZSwgYXV0b19sb2FkX3BzcGFjZV9kYXRhKTsKKy0gIGlmIChpbmZvID09IE5VTEwpCistICAgIHsK Ky0gICAgICBpbmZvID0gWFpBTExPQyAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyk7Cist ICAgICAgc2V0X3Byb2dyYW1fc3BhY2VfZGF0YSAocHNwYWNlLCBhdXRvX2xvYWRfcHNwYWNlX2Rh dGEsIGluZm8pOworLSAgICB9CistCistICByZXR1cm4gaW5mbzsKKy19CistCistLyogSGFzaCBm dW5jdGlvbiBmb3IgdGhlIGxvYWRlZCBzY3JpcHQgaGFzaC4gICovCistCistc3RhdGljIGhhc2h2 YWxfdAorLWhhc2hfbG9hZGVkX3NjcmlwdF9lbnRyeSAoY29uc3Qgdm9pZCAqZGF0YSkKKy17Cist ICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqZSA9IGRhdGE7CistCistICByZXR1cm4gaHRh Yl9oYXNoX3N0cmluZyAoZS0+bmFtZSk7CistfQorLQorLS8qIEVxdWFsaXR5IGZ1bmN0aW9uIGZv ciB0aGUgbG9hZGVkIHNjcmlwdCBoYXNoLiAgKi8KKy0KKy1zdGF0aWMgaW50CistZXFfbG9hZGVk X3NjcmlwdF9lbnRyeSAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKKy17CistICBjb25z dCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqZWEgPSBhOworLSAgY29uc3Qgc3RydWN0IGxvYWRlZF9z Y3JpcHQgKmViID0gYjsKKy0KKy0gIHJldHVybiBzdHJjbXAgKGVhLT5uYW1lLCBlYi0+bmFtZSkg PT0gMDsKKy19CistCistLyogSW5pdGlhbGl6ZSB0aGUgdGFibGUgdG8gdHJhY2sgbG9hZGVkIHNj cmlwdHMuCistICAgRWFjaCBlbnRyeSBpcyBoYXNoZWQgYnkgdGhlIGZ1bGwgcGF0aCBuYW1lLiAg Ki8KKy0KKy1zdGF0aWMgdm9pZAorLWluaXRfbG9hZGVkX3NjcmlwdHNfaW5mbyAoc3RydWN0IGF1 dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm8pCisteworLSAgLyogQ2hvb3NlIDMxIGFz IHRoZSBzdGFydGluZyBzaXplIG9mIHRoZSBoYXNoIHRhYmxlLCBzb21ld2hhdCBhcmJpdHJhcmls eS4KKy0gICAgIFNwYWNlIGZvciBlYWNoIGVudHJ5IGlzIG9idGFpbmVkIHdpdGggb25lIG1hbGxv YyBzbyB3ZSBjYW4gZnJlZSB0aGVtCistICAgICBlYXNpbHkuICAqLworLQorLSAgcHNwYWNlX2lu Zm8tPmxvYWRlZF9zY3JpcHRzID0gaHRhYl9jcmVhdGUgKDMxLAorLQkJCQkJICAgICBoYXNoX2xv YWRlZF9zY3JpcHRfZW50cnksCistCQkJCQkgICAgIGVxX2xvYWRlZF9zY3JpcHRfZW50cnksCist CQkJCQkgICAgIHhmcmVlKTsKKy0KKy0gIHBzcGFjZV9pbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dh cm5pbmdfcHJpbnRlZCA9IEZBTFNFOworLX0KKy0KKy0vKiBXcmFwcGVyIG9uIGdldF9hdXRvX2xv YWRfcHNwYWNlX2RhdGEgdG8gYWxzbyBhbGxvY2F0ZSB0aGUgaGFzaCB0YWJsZQorLSAgIGZvciBs b2FkaW5nIHNjcmlwdHMuICAqLworLQorLXN0YXRpYyBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9p bmZvICoKKy1nZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChzdHJ1Y3QgcHJv Z3JhbV9zcGFjZSAqcHNwYWNlKQorLXsKKy0gIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8g KmluZm87CistCistICBpbmZvID0gZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YSAocHNwYWNlKTsK Ky0gIGlmIChpbmZvLT5sb2FkZWRfc2NyaXB0cyA9PSBOVUxMKQorLSAgICBpbml0X2xvYWRlZF9z Y3JpcHRzX2luZm8gKGluZm8pOworLQorLSAgcmV0dXJuIGluZm87CistfQorLQorLS8qIEFkZCBz Y3JpcHQgTkFNRSB0byBoYXNoIHRhYmxlIEhUQUIuCistICAgRlVMTF9QQVRIIGlzIE5VTEwgaWYg dGhlIHNjcmlwdCB3YXNuJ3QgZm91bmQuCistICAgVGhlIHJlc3VsdCBpcyB0cnVlIGlmIHRoZSBz Y3JpcHQgd2FzIGFscmVhZHkgaW4gdGhlIGhhc2ggdGFibGUuICAqLworLQorLXN0YXRpYyBpbnQK Ky1tYXliZV9hZGRfc2NyaXB0IChzdHJ1Y3QgaHRhYiAqaHRhYiwgY29uc3QgY2hhciAqbmFtZSwg Y29uc3QgY2hhciAqZnVsbF9wYXRoKQorLXsKKy0gIHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoqc2xv dCwgZW50cnk7CistICBpbnQgaW5faGFzaF90YWJsZTsKKy0KKy0gIGVudHJ5Lm5hbWUgPSBuYW1l OworLSAgZW50cnkuZnVsbF9wYXRoID0gZnVsbF9wYXRoOworLSAgc2xvdCA9IChzdHJ1Y3QgbG9h ZGVkX3NjcmlwdCAqKikgaHRhYl9maW5kX3Nsb3QgKGh0YWIsICZlbnRyeSwgSU5TRVJUKTsKKy0g IGluX2hhc2hfdGFibGUgPSAqc2xvdCAhPSBOVUxMOworLQorLSAgLyogSWYgdGhpcyBzY3JpcHQg aXMgbm90IGluIHRoZSBoYXNoIHRhYmxlLCBhZGQgaXQuICAqLworLQorLSAgaWYgKCEgaW5faGFz aF90YWJsZSkKKy0gICAgeworLSAgICAgIGNoYXIgKnA7CistCistICAgICAgLyogQWxsb2NhdGUg YWxsIHNwYWNlIGluIG9uZSBjaHVuayBzbyBpdCdzIGVhc2llciB0byBmcmVlLiAgKi8KKy0gICAg ICAqc2xvdCA9IHhtYWxsb2MgKHNpemVvZiAoKipzbG90KQorLQkJICAgICAgICsgc3RybGVuIChu YW1lKSArIDEKKy0JCSAgICAgICArIChmdWxsX3BhdGggIT0gTlVMTCA/IChzdHJsZW4gKGZ1bGxf cGF0aCkgKyAxKSA6IDApKTsKKy0gICAgICBwID0gKChjaGFyKikgKnNsb3QpICsgc2l6ZW9mICgq KnNsb3QpOworLSAgICAgIHN0cmNweSAocCwgbmFtZSk7CistICAgICAgKCpzbG90KS0+bmFtZSA9 IHA7CistICAgICAgaWYgKGZ1bGxfcGF0aCAhPSBOVUxMKQorLQl7CistCSAgcCArPSBzdHJsZW4g KHApICsgMTsKKy0JICBzdHJjcHkgKHAsIGZ1bGxfcGF0aCk7CistCSAgKCpzbG90KS0+ZnVsbF9w YXRoID0gcDsKKy0JfQorLSAgICAgIGVsc2UKKy0JKCpzbG90KS0+ZnVsbF9wYXRoID0gTlVMTDsK Ky0gICAgfQorLQorLSAgcmV0dXJuIGluX2hhc2hfdGFibGU7CistfQorLQorIC8qIExvYWQgc2Ny aXB0cyBzcGVjaWZpZWQgaW4gT0JKRklMRS4KKyAgICBTVEFSVCxFTkQgZGVsaW1pdCBhIGJ1ZmZl ciBjb250YWluaW5nIGEgbGlzdCBvZiBudWwtdGVybWluYXRlZAorICAgIGZpbGUgbmFtZXMuCitA QCAtMzAxLDIwICsxMjksMTcgQEAgc291cmNlX3NlY3Rpb25fc2NyaXB0cyAoc3RydWN0IG9iamZp bGUgKgorIAorIAkgSVdCTiBpZiBjb21wbGFpbnRzLmMgd2VyZSBtb3JlIGdlbmVyYWwtcHVycG9z ZS4gICovCisgCistICAgICAgaW5faGFzaF90YWJsZSA9IG1heWJlX2FkZF9zY3JpcHQgKHBzcGFj ZV9pbmZvLT5sb2FkZWRfc2NyaXB0cywgZmlsZSwKKysgICAgICBpbl9oYXNoX3RhYmxlID0gbWF5 YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGZpbGUsCisgCQkJCQlvcGVuZWQgPyBmdWxsX3Bh dGggOiBOVUxMKTsKKyAKKyAgICAgICBpZiAoISBvcGVuZWQpCisgCXsKKyAJICAvKiBXZSBkb24n dCB0aHJvdyBhbiBlcnJvciwgdGhlIHByb2dyYW0gaXMgc3RpbGwgZGVidWdnYWJsZS4gICovCist CSAgaWYgKCEgcHNwYWNlX2luZm8tPnNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludGVkKQor LQkgICAgeworLQkgICAgICB3YXJuaW5nIChfKCJNaXNzaW5nIGF1dG8tbG9hZCBzY3JpcHRzIHJl ZmVyZW5jZWQgaW4gc2VjdGlvbiAlc1xuXAorKwkgIGlmIChzY3JpcHRfbm90X2ZvdW5kX3dhcm5p bmdfcHJpbnQgKHBzcGFjZV9pbmZvKSkKKysJICAgIHdhcm5pbmcgKF8oIk1pc3NpbmcgYXV0by1s b2FkIHNjcmlwdHMgcmVmZXJlbmNlZCBpbiBzZWN0aW9uICVzXG5cCisgb2YgZmlsZSAlc1xuXAor IFVzZSBgaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyBbUkVHRVhQXScgdG8gbGlzdCB0aGVtLiIpLAor LQkJICAgICAgIEdEQlBZX0FVVE9fU0VDVElPTl9OQU1FLCBvYmpmaWxlLT5uYW1lKTsKKy0JICAg ICAgcHNwYWNlX2luZm8tPnNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludGVkID0gVFJVRTsK Ky0JICAgIH0KKysJCSAgICAgR0RCUFlfQVVUT19TRUNUSU9OX05BTUUsIG9iamZpbGUtPm5hbWUp OworIAl9CisgICAgICAgZWxzZQorIAl7CitAQCAtMzU2LDExNiArMTgxLDYgQEAgYXV0b19sb2Fk X3NlY3Rpb25fc2NyaXB0cyAoc3RydWN0IG9iamZpbAorICAgZG9fY2xlYW51cHMgKGNsZWFudXBz KTsKKyB9CisgCistLyogQ2xlYXIgdGhlIHRhYmxlIG9mIGxvYWRlZCBzZWN0aW9uIHNjcmlwdHMu ICAqLworLQorLXN0YXRpYyB2b2lkCistY2xlYXJfc2VjdGlvbl9zY3JpcHRzICh2b2lkKQorLXsK Ky0gIHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UgPSBjdXJyZW50X3Byb2dyYW1fc3BhY2U7 CistICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICppbmZvOworLQorLSAgaW5mbyA9IHBy b2dyYW1fc3BhY2VfZGF0YSAocHNwYWNlLCBhdXRvX2xvYWRfcHNwYWNlX2RhdGEpOworLSAgaWYg KGluZm8gIT0gTlVMTCAmJiBpbmZvLT5sb2FkZWRfc2NyaXB0cyAhPSBOVUxMKQorLSAgICB7Cist ICAgICAgaHRhYl9kZWxldGUgKGluZm8tPmxvYWRlZF9zY3JpcHRzKTsKKy0gICAgICBpbmZvLT5s b2FkZWRfc2NyaXB0cyA9IE5VTEw7CistICAgICAgaW5mby0+c2NyaXB0X25vdF9mb3VuZF93YXJu aW5nX3ByaW50ZWQgPSBGQUxTRTsKKy0gICAgfQorLX0KKy0KKy0vKiBMb29rIGZvciB0aGUgYXV0 by1sb2FkIHNjcmlwdCBhc3NvY2lhdGVkIHdpdGggT0JKRklMRSBhbmQgbG9hZCBpdC4gICovCist Cistc3RhdGljIHZvaWQKKy1hdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlLCBjb25zdCBjaGFyICpzdWZmaXgpCisteworLSAgY2hhciAqcmVhbG5hbWU7Cist ICBjaGFyICpmaWxlbmFtZSwgKmRlYnVnZmlsZTsKKy0gIGludCBsZW47CistICBGSUxFICppbnB1 dDsKKy0gIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwczsKKy0KKy0gIHJlYWxuYW1lID0gZ2RiX3Jl YWxwYXRoIChvYmpmaWxlLT5uYW1lKTsKKy0gIGxlbiA9IHN0cmxlbiAocmVhbG5hbWUpOworLSAg ZmlsZW5hbWUgPSB4bWFsbG9jIChsZW4gKyBzdHJsZW4gKHN1ZmZpeCkgKyAxKTsKKy0gIG1lbWNw eSAoZmlsZW5hbWUsIHJlYWxuYW1lLCBsZW4pOworLSAgc3RyY3B5IChmaWxlbmFtZSArIGxlbiwg c3VmZml4KTsKKy0KKy0gIGNsZWFudXBzID0gbWFrZV9jbGVhbnVwICh4ZnJlZSwgZmlsZW5hbWUp OworLSAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgcmVhbG5hbWUpOworLQorLSAgaW5wdXQgPSBmb3Bl biAoZmlsZW5hbWUsICJyIik7CistICBkZWJ1Z2ZpbGUgPSBmaWxlbmFtZTsKKy0KKy0gIGlmICgh aW5wdXQgJiYgZGVidWdfZmlsZV9kaXJlY3RvcnkpCistICAgIHsKKy0gICAgICAvKiBBbHNvIHRy eSB0aGUgc2FtZSBmaWxlIGluIHRoZSBzZXBhcmF0ZSBkZWJ1ZyBpbmZvIGRpcmVjdG9yeS4gICov CistICAgICAgZGVidWdmaWxlID0geG1hbGxvYyAoc3RybGVuIChmaWxlbmFtZSkKKy0JCQkgICAr IHN0cmxlbiAoZGVidWdfZmlsZV9kaXJlY3RvcnkpICsgMSk7CistICAgICAgc3RyY3B5IChkZWJ1 Z2ZpbGUsIGRlYnVnX2ZpbGVfZGlyZWN0b3J5KTsKKy0gICAgICAvKiBGSUxFTkFNRSBpcyBhYnNv bHV0ZSwgc28gd2UgZG9uJ3QgbmVlZCBhICIvIiBoZXJlLiAgKi8KKy0gICAgICBzdHJjYXQgKGRl YnVnZmlsZSwgZmlsZW5hbWUpOworLQorLSAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGRlYnVn ZmlsZSk7CistICAgICAgaW5wdXQgPSBmb3BlbiAoZGVidWdmaWxlLCAiciIpOworLSAgICB9Cist CistICBpZiAoIWlucHV0ICYmIGdkYl9kYXRhZGlyKQorLSAgICB7CistICAgICAgLyogQWxzbyB0 cnkgdGhlIHNhbWUgZmlsZSBpbiBhIHN1YmRpcmVjdG9yeSBvZiBnZGIncyBkYXRhCistCSBkaXJl Y3RvcnkuICAqLworLSAgICAgIGRlYnVnZmlsZSA9IHhtYWxsb2MgKHN0cmxlbiAoZ2RiX2RhdGFk aXIpICsgc3RybGVuIChmaWxlbmFtZSkKKy0JCQkgICArIHN0cmxlbiAoIi9hdXRvLWxvYWQiKSAr IDEpOworLSAgICAgIHN0cmNweSAoZGVidWdmaWxlLCBnZGJfZGF0YWRpcik7CistICAgICAgc3Ry Y2F0IChkZWJ1Z2ZpbGUsICIvYXV0by1sb2FkIik7CistICAgICAgLyogRklMRU5BTUUgaXMgYWJz b2x1dGUsIHNvIHdlIGRvbid0IG5lZWQgYSAiLyIgaGVyZS4gICovCistICAgICAgc3RyY2F0IChk ZWJ1Z2ZpbGUsIGZpbGVuYW1lKTsKKy0KKy0gICAgICBtYWtlX2NsZWFudXAgKHhmcmVlLCBkZWJ1 Z2ZpbGUpOworLSAgICAgIGlucHV0ID0gZm9wZW4gKGRlYnVnZmlsZSwgInIiKTsKKy0gICAgfQor LQorLSAgaWYgKGlucHV0KQorLSAgICB7CistICAgICAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2Vf aW5mbyAqcHNwYWNlX2luZm87CistCistICAgICAgbWFrZV9jbGVhbnVwX2ZjbG9zZSAoaW5wdXQp OworLQorLSAgICAgIC8qIEFkZCB0aGlzIHNjcmlwdCB0byB0aGUgaGFzaCB0YWJsZSB0b28gc28g ImluZm8gYXV0by1sb2FkLXNjcmlwdHMiCistCSBjYW4gcHJpbnQgaXQuICAqLworLSAgICAgIHBz cGFjZV9pbmZvID0KKy0JZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGluZyAoY3Vy cmVudF9wcm9ncmFtX3NwYWNlKTsKKy0gICAgICBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5m by0+bG9hZGVkX3NjcmlwdHMsIGRlYnVnZmlsZSwgZGVidWdmaWxlKTsKKy0KKy0gICAgICAvKiBU byBwcmVzZXJ2ZSBleGlzdGluZyBiZWhhdmlvdXIgd2UgZG9uJ3QgY2hlY2sgZm9yIHdoZXRoZXIg dGhlCistCSBzY3JpcHQgd2FzIGFscmVhZHkgaW4gdGhlIHRhYmxlLCBhbmQgYWx3YXlzIGxvYWQg aXQuCistCSBJdCdzIGhpZ2hseSB1bmxpa2VseSB0aGF0IHdlJ2QgZXZlciBsb2FkIGl0IHR3aWNl LAorLQkgYW5kIHRoZXNlIHNjcmlwdHMgYXJlIHJlcXVpcmVkIHRvIGJlIGlkZW1wb3RlbnQgdW5k ZXIgbXVsdGlwbGUKKy0JIGxvYWRzIGFueXdheS4gICovCistICAgICAgc291cmNlX3B5dGhvbl9z Y3JpcHRfZm9yX29iamZpbGUgKG9iamZpbGUsIGlucHV0LCBkZWJ1Z2ZpbGUpOworLSAgICB9Cist CistICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOworLX0KKy0KKy0vKiBUaGlzIGlzIGEgbmV3X29i amZpbGUgb2JzZXJ2ZXIgY2FsbGJhY2sgdG8gYXV0by1sb2FkIHNjcmlwdHMuCistCistICAgVHdv IGZsYXZvcnMgb2YgYXV0by1sb2FkZWQgc2NyaXB0cyBhcmUgc3VwcG9ydGVkLgorLSAgIDEpIGJh c2VkIG9uIHRoZSBwYXRoIHRvIHRoZSBvYmpmaWxlCistICAgMikgZnJvbSAuZGVidWdfZ2RiX3Nj cmlwdHMgc2VjdGlvbiAgKi8KKy0KKy1zdGF0aWMgdm9pZAorLWF1dG9fbG9hZF9uZXdfb2JqZmls ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCisteworLSAgaWYgKCFvYmpmaWxlKQorLSAgICB7 CistICAgICAgLyogT0JKRklMRSBpcyBOVUxMIHdoZW4gbG9hZGluZyBhIG5ldyAibWFpbiIgc3lt Ym9sLWZpbGUuICAqLworLSAgICAgIGNsZWFyX3NlY3Rpb25fc2NyaXB0cyAoKTsKKy0gICAgICBy ZXR1cm47CistICAgIH0KKy0KKy0gIGxvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChvYmpm aWxlKTsKKy19CistCisgLyogTG9hZCBhbnkgYXV0by1sb2FkZWQgc2NyaXB0cyBmb3IgT0JKRklM RS4gICovCisgCisgdm9pZAorQEAgLTQ3OCwxNDYgKzE5Myw5IEBAIGxvYWRfYXV0b19zY3JpcHRz X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2IKKyAgICAgfQorIH0KKyAMCistLyogQ29sbGVjdCBzY3Jp cHRzIHRvIGJlIHByaW50ZWQgaW4gYSB2ZWMuICAqLworLQorLXR5cGVkZWYgc3RydWN0IGxvYWRl ZF9zY3JpcHQgKmxvYWRlZF9zY3JpcHRfcHRyOworLURFRl9WRUNfUCAobG9hZGVkX3NjcmlwdF9w dHIpOworLQorLS8qIFRyYXZlcnNhbCBmdW5jdGlvbiBmb3IgaHRhYl90cmF2ZXJzZS4KKy0gICBD b2xsZWN0IHRoZSBlbnRyeSBpZiBpdCBtYXRjaGVzIHRoZSByZWdleHAuICAqLworLQorLXN0YXRp YyBpbnQKKy1jb2xsZWN0X21hdGNoaW5nX3NjcmlwdHMgKHZvaWQgKipzbG90LCB2b2lkICppbmZv KQorLXsKKy0gIHN0cnVjdCBsb2FkZWRfc2NyaXB0ICpzY3JpcHQgPSAqc2xvdDsKKy0gIFZFQyAo bG9hZGVkX3NjcmlwdF9wdHIpICoqc2NyaXB0c19wdHIgPSBpbmZvOworLQorLSAgaWYgKHJlX2V4 ZWMgKHNjcmlwdC0+bmFtZSkpCistICAgIFZFQ19zYWZlX3B1c2ggKGxvYWRlZF9zY3JpcHRfcHRy LCAqc2NyaXB0c19wdHIsIHNjcmlwdCk7CistCistICByZXR1cm4gMTsKKy19CistCistLyogUHJp bnQgU0NSSVBULiAgKi8KKy0KKy1zdGF0aWMgdm9pZAorLXByaW50X3NjcmlwdCAoc3RydWN0IGxv YWRlZF9zY3JpcHQgKnNjcmlwdCkKKy17CistICBzdHJ1Y3QgdWlfb3V0ICp1aW91dCA9IGN1cnJl bnRfdWlvdXQ7CistICBzdHJ1Y3QgY2xlYW51cCAqY2hhaW47CistCistICBjaGFpbiA9IG1ha2Vf Y2xlYW51cF91aV9vdXRfdHVwbGVfYmVnaW5fZW5kICh1aW91dCwgTlVMTCk7CistCistICB1aV9v dXRfZmllbGRfc3RyaW5nICh1aW91dCwgImxvYWRlZCIsIHNjcmlwdC0+ZnVsbF9wYXRoID8gIlll cyIgOiAiTWlzc2luZyIpOworLSAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJzY3JpcHQi LCBzY3JpcHQtPm5hbWUpOworLSAgdWlfb3V0X3RleHQgKHVpb3V0LCAiXG4iKTsKKy0KKy0gIC8q IElmIHRoZSBuYW1lIGlzbid0IHRoZSBmdWxsIHBhdGgsIHByaW50IGl0IHRvby4gICovCistICBp ZiAoc2NyaXB0LT5mdWxsX3BhdGggIT0gTlVMTAorLSAgICAgICYmIHN0cmNtcCAoc2NyaXB0LT5u YW1lLCBzY3JpcHQtPmZ1bGxfcGF0aCkgIT0gMCkKKy0gICAgeworLSAgICAgIHVpX291dF90ZXh0 ICh1aW91dCwgIlx0ZnVsbCBuYW1lOiAiKTsKKy0gICAgICB1aV9vdXRfZmllbGRfc3RyaW5nICh1 aW91dCwgImZ1bGxfcGF0aCIsIHNjcmlwdC0+ZnVsbF9wYXRoKTsKKy0gICAgICB1aV9vdXRfdGV4 dCAodWlvdXQsICJcbiIpOworLSAgICB9CistCistICBkb19jbGVhbnVwcyAoY2hhaW4pOworLX0K Ky0KKy0vKiBIZWxwZXIgZm9yIGluZm9fYXV0b19sb2FkX3NjcmlwdHMgdG8gc29ydCB0aGUgc2Ny aXB0cyBieSBuYW1lLiAgKi8KKy0KKy1zdGF0aWMgaW50Cistc29ydF9zY3JpcHRzX2J5X25hbWUg KGNvbnN0IHZvaWQgKmFwLCBjb25zdCB2b2lkICpicCkKKy17CistICBjb25zdCBzdHJ1Y3QgbG9h ZGVkX3NjcmlwdCAqYSA9ICooY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKiopIGFwOworLSAg Y29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmIgPSAqKGNvbnN0IHN0cnVjdCBsb2FkZWRfc2Ny aXB0ICoqKSBicDsKKy0KKy0gIHJldHVybiBGSUxFTkFNRV9DTVAgKGEtPm5hbWUsIGItPm5hbWUp OworLX0KKy0KKy0vKiAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIgY29tbWFuZC4gICovCistCist c3RhdGljIHZvaWQKKy1pbmZvX2F1dG9fbG9hZF9zY3JpcHRzIChjaGFyICpwYXR0ZXJuLCBpbnQg ZnJvbV90dHkpCisteworLSAgc3RydWN0IHVpX291dCAqdWlvdXQgPSBjdXJyZW50X3Vpb3V0Owor LSAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm87CistICBzdHJ1Y3Qg Y2xlYW51cCAqc2NyaXB0X2NoYWluOworLSAgVkVDIChsb2FkZWRfc2NyaXB0X3B0cikgKnNjcmlw dHM7CistICBpbnQgbnJfc2NyaXB0czsKKy0KKy0gIGRvbnRfcmVwZWF0ICgpOworLQorLSAgcHNw YWNlX2luZm8gPSBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhIChjdXJyZW50X3Byb2dyYW1fc3Bh Y2UpOworLQorLSAgaWYgKHBhdHRlcm4gJiYgKnBhdHRlcm4pCistICAgIHsKKy0gICAgICBjaGFy ICpyZV9lcnIgPSByZV9jb21wIChwYXR0ZXJuKTsKKy0KKy0gICAgICBpZiAocmVfZXJyKQorLQll cnJvciAoXygiSW52YWxpZCByZWdleHA6ICVzIiksIHJlX2Vycik7CistICAgIH0KKy0gIGVsc2UK Ky0gICAgeworLSAgICAgIHJlX2NvbXAgKCIiKTsKKy0gICAgfQorLQorLSAgLyogV2UgbmVlZCB0 byBrbm93IHRoZSBudW1iZXIgb2Ygcm93cyBiZWZvcmUgd2UgYnVpbGQgdGhlIHRhYmxlLgorLSAg ICAgUGx1cyB3ZSB3YW50IHRvIHNvcnQgdGhlIHNjcmlwdHMgYnkgbmFtZS4KKy0gICAgIFNvIGZp cnN0IHRyYXZlcnNlIHRoZSBoYXNoIHRhYmxlIGNvbGxlY3RpbmcgdGhlIG1hdGNoaW5nIHNjcmlw dHMuICAqLworLQorLSAgc2NyaXB0cyA9IFZFQ19hbGxvYyAobG9hZGVkX3NjcmlwdF9wdHIsIDEw KTsKKy0gIHNjcmlwdF9jaGFpbiA9IG1ha2VfY2xlYW51cCAoVkVDX2NsZWFudXAgKGxvYWRlZF9z Y3JpcHRfcHRyKSwgJnNjcmlwdHMpOworLQorLSAgaWYgKHBzcGFjZV9pbmZvICE9IE5VTEwgJiYg cHNwYWNlX2luZm8tPmxvYWRlZF9zY3JpcHRzICE9IE5VTEwpCistICAgIHsKKy0gICAgICBpbW1l ZGlhdGVfcXVpdCsrOworLSAgICAgIC8qIFBhc3MgYSBwb2ludGVyIHRvIHNjcmlwdHMgYXMgVkVD X3NhZmVfcHVzaCBjYW4gcmVhbGxvYyBzcGFjZS4gICovCistICAgICAgaHRhYl90cmF2ZXJzZV9u b3Jlc2l6ZSAocHNwYWNlX2luZm8tPmxvYWRlZF9zY3JpcHRzLAorLQkJCSAgICAgIGNvbGxlY3Rf bWF0Y2hpbmdfc2NyaXB0cywgJnNjcmlwdHMpOworLSAgICAgIGltbWVkaWF0ZV9xdWl0LS07Cist ICAgIH0KKy0KKy0gIG5yX3NjcmlwdHMgPSBWRUNfbGVuZ3RoIChsb2FkZWRfc2NyaXB0X3B0ciwg c2NyaXB0cyk7CistICBtYWtlX2NsZWFudXBfdWlfb3V0X3RhYmxlX2JlZ2luX2VuZCAodWlvdXQs IDIsIG5yX3NjcmlwdHMsCistCQkJCSAgICAgICAiQXV0b0xvYWRlZFNjcmlwdHNUYWJsZSIpOwor LQorLSAgdWlfb3V0X3RhYmxlX2hlYWRlciAodWlvdXQsIDcsIHVpX2xlZnQsICJsb2FkZWQiLCAi TG9hZGVkIik7CistICB1aV9vdXRfdGFibGVfaGVhZGVyICh1aW91dCwgNzAsIHVpX2xlZnQsICJz Y3JpcHQiLCAiU2NyaXB0Iik7CistICB1aV9vdXRfdGFibGVfYm9keSAodWlvdXQpOworLQorLSAg aWYgKG5yX3NjcmlwdHMgPiAwKQorLSAgICB7CistICAgICAgaW50IGk7CistICAgICAgbG9hZGVk X3NjcmlwdF9wdHIgc2NyaXB0OworLQorLSAgICAgIHFzb3J0IChWRUNfYWRkcmVzcyAobG9hZGVk X3NjcmlwdF9wdHIsIHNjcmlwdHMpLAorLQkgICAgIFZFQ19sZW5ndGggKGxvYWRlZF9zY3JpcHRf cHRyLCBzY3JpcHRzKSwKKy0JICAgICBzaXplb2YgKGxvYWRlZF9zY3JpcHRfcHRyKSwgc29ydF9z Y3JpcHRzX2J5X25hbWUpOworLSAgICAgIGZvciAoaSA9IDA7IFZFQ19pdGVyYXRlIChsb2FkZWRf c2NyaXB0X3B0ciwgc2NyaXB0cywgaSwgc2NyaXB0KTsgKytpKQorLQlwcmludF9zY3JpcHQgKHNj cmlwdCk7CistICAgIH0KKy0KKy0gIGRvX2NsZWFudXBzIChzY3JpcHRfY2hhaW4pOworLQorLSAg aWYgKG5yX3NjcmlwdHMgPT0gMCkKKy0gICAgeworLSAgICAgIGlmIChwYXR0ZXJuICYmICpwYXR0 ZXJuKQorLQl1aV9vdXRfbWVzc2FnZSAodWlvdXQsIDAsICJObyBhdXRvLWxvYWQgc2NyaXB0cyBt YXRjaGluZyAlcy5cbiIsCistCQkJcGF0dGVybik7CistICAgICAgZWxzZQorLQl1aV9vdXRfbWVz c2FnZSAodWlvdXQsIDAsICJObyBhdXRvLWxvYWQgc2NyaXB0cy5cbiIpOworLSAgICB9CistfQor LQwKKyB2b2lkCisgZ2RicHlfaW5pdGlhbGl6ZV9hdXRvX2xvYWQgKHZvaWQpCisgeworLSAgYXV0 b19sb2FkX3BzcGFjZV9kYXRhCistICAgID0gcmVnaXN0ZXJfcHJvZ3JhbV9zcGFjZV9kYXRhX3dp dGhfY2xlYW51cCAoYXV0b19sb2FkX3BzcGFjZV9kYXRhX2NsZWFudXApOworLQorLSAgb2JzZXJ2 ZXJfYXR0YWNoX25ld19vYmpmaWxlIChhdXRvX2xvYWRfbmV3X29iamZpbGUpOworLQorICAgYWRk X3NldHNob3dfYm9vbGVhbl9jbWQgKCJhdXRvLWxvYWQtc2NyaXB0cyIsIGNsYXNzX3N1cHBvcnQs CisgCQkJICAgJmF1dG9fbG9hZF9zY3JpcHRzLCBfKCJcCisgU2V0IHRoZSBkZWJ1Z2dlcidzIGJl aGF2aW91ciByZWdhcmRpbmcgYXV0by1sb2FkZWQgc2NyaXB0cy4iKSwgXygiXAorQEAgLTYyNywx MSArMjA1LDYgQEAgYW4gZXhlY3V0YWJsZSBvciBzaGFyZWQgbGlicmFyeS4iKSwKKyAJCQkgICBO VUxMLCBOVUxMLAorIAkJCSAgICZzZXRsaXN0LAorIAkJCSAgICZzaG93bGlzdCk7CistCistICBh ZGRfaW5mbyAoImF1dG8tbG9hZC1zY3JpcHRzIiwKKy0JICAgIGluZm9fYXV0b19sb2FkX3Njcmlw dHMsCistCSAgICBfKCJQcmludCB0aGUgbGlzdCBvZiBhdXRvbWF0aWNhbGx5IGxvYWRlZCBzY3Jp cHRzLlxuXAorLVVzYWdlOiBpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIFtSRUdFWFBdIikpOworIH0K KyAKKyAjZWxzZSAvKiAhIEhBVkVfUFlUSE9OICovCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvcHl0aG9uL3B5dGhvbi5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEy MC5vcmlnL2dkYi9weXRob24vcHl0aG9uLmgJMjAxMi0wNC0xOCAwMDoyNjoxNC4wMDAwMDAwMDAg KzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHl0aG9uLmgJMjAxMi0w NC0xOCAwMDoyNjoyOS4wNTQxMjAxOTkgKzAyMDAKK0BAIC0yNCw4ICsyNCw2IEBACisgCisgc3Ry dWN0IGJyZWFrcG9pbnRfb2JqZWN0OworIAorLWV4dGVybiBpbnQgZ2RicHlfZ2xvYmFsX2F1dG9f bG9hZDsKKy0KKyBleHRlcm4gdm9pZCBmaW5pc2hfcHl0aG9uX2luaXRpYWxpemF0aW9uICh2b2lk KTsKKyAKKyB2b2lkIGV2YWxfcHl0aG9uX2Zyb21fY29udHJvbF9jb21tYW5kIChzdHJ1Y3QgY29t bWFuZF9saW5lICopOwoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0xMG9mMTIucGF0Y2ggYi9n ZGItYXV0b2xvYWQtMTBvZjEyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmM1OTY5ODIKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYXV0b2xvYWQtMTBvZjEyLnBhdGNo CkBAIC0wLDAgKzEsMTcwNCBAQAorW3BhdGNoIzQgNC84XSBzZXQgYXV0by1sb2FkICogbWFpbiBw YXJ0CitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMi0wNC9tc2cwMDA4 OC5odG1sCitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA0L21zZzAwMTEz Lmh0bWwKKworIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDQvMTcgMTU6NDk6MTEJMS4xNDEx MgorIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDQvMTcgMTU6NTE6NDEJMS4xNDExMworIyMg LTEsNSArMSwxMDEgQEAKKyAyMDEyLTA0LTE3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+CisgCisrCWF1dG8tbG9hZDogSW1wbGVtZW50YXRpb24uCisrCSogTkVX UzogTmV3IGRlc2NyaXB0aW9ucyBmb3IgImluZm8gYXV0by1sb2FkIiwKKysJImluZm8gYXV0by1s b2FkIGdkYi1zY3JpcHRzIiwgImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIiwKKysJImlu Zm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXQiIGFuZCAiaW5mbyBhdXRvLWxvYWQgbGlidGhyZWFk LWRiIi4KKysJRGVwcmVjYXRlICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIiwgInNldCBhdXRvLWxv YWQtc2NyaXB0cyBvbnxvZmYiCisrCWFuZCAic2hvdyBhdXRvLWxvYWQtc2NyaXB0cyIuICBOZXcg ZGVzY3JpcHRpb24gZm9yICJzZXQgYXV0by1sb2FkIiwKKysJInNob3cgYXV0by1sb2FkIiwgInNl dCBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiLAorKwkic2hvdyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMi LCAic2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIsCisrCSJzaG93IGF1dG8tbG9hZCBweXRo b24tc2NyaXB0cyIsICJzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXQiLAorKwkic2hvdyBhdXRv LWxvYWQgbG9jYWwtZ2RiaW5pdCIsICJzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYiIgYW5kCisr CSJzaG93IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIiLgorKwkqIGF1dG8tbG9hZC5jOiBSZW1vdmUg aW5jbHVkZSBweXRob24vcHl0aG9uLWludGVybmFsLmguICBBZGQgaW5jbHVkZXMKKysJZXhjZXB0 aW9ucy5oLCBjbGkvY2xpLXNjcmlwdC5oLCBnZGJjbWQuaCwgY2xpL2NsaS1kZWNvZGUuaCBhbmQK KysJY2xpL2NsaS1zZXRzaG93LmguCisrCShHREJfQVVUT19GSUxFX05BTUUsIHNvdXJjZV9nZGJf c2NyaXB0X2Zvcl9vYmpmaWxlKQorKwkoYXV0b19sb2FkX2dkYl9zY3JpcHRzLCBzaG93X2F1dG9f bG9hZF9nZGJfc2NyaXB0cyk6IE5ldy4KKysJKGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQpOiBSZW5h bWUgdG8gLi4uCisrCShnbG9iYWxfYXV0b19sb2FkKTogLi4uIGhlcmUuCisrCShhdXRvX2xvYWRf bG9jYWxfZ2RiaW5pdCwgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfcGF0aG5hbWUpCisrCShhdXRv X2xvYWRfbG9jYWxfZ2RiaW5pdF9sb2FkZWQsIHNob3dfYXV0b19sb2FkX2xvY2FsX2dkYmluaXQp CisrCShzY3JpcHRfbGFuZ3VhZ2VfZ2RiLCBzb3VyY2VfZ2RiX3NjcmlwdF9mb3Jfb2JqZmlsZSk6 IE5ldy4KKysJKHN0cnVjdCBsb2FkZWRfc2NyaXB0KTogTmV3IGZpZWxkIGxhbmd1YWdlLgorKwko aGFzaF9sb2FkZWRfc2NyaXB0X2VudHJ5LCBlcV9sb2FkZWRfc2NyaXB0X2VudHJ5KTogQ2FsY3Vs YXRlIGFsc28KKysJTEFOR1VBR0UuCisrCShtYXliZV9hZGRfc2NyaXB0KTogQWRkIHBhcmFtZXRl ciBsYW5ndWFnZS4gIERyb3AgcmVkdW5kYW50CisrCWVudHJ5LmZ1bGxfcGF0aCBpbml0aWFsaXph dGlvbi4gIEluaXRpYWxpemUgZW50cnkubGFuZ3VhZ2UgYW5kCisrCSgqc2xvdCktPmxhbmd1YWdl LgorKwkoYXV0b19sb2FkX29iamZpbGVfc2NyaXB0KTogQ2hhbmdlIHBhcmFtZXRlciBzdWZmaXgg dG8gbGFuZ3VhZ2UuCisrCVJlbW92ZSB0aGUgY2FsbCBvZiBtYXliZV9hZGRfc2NyaXB0LgorKwlD YWxsIGxhbmd1YWdlLT5zb3VyY2Vfc2NyaXB0X2Zvcl9vYmpmaWxlLgorKwkobG9hZF9hdXRvX3Nj cmlwdHNfZm9yX29iamZpbGUsIHN0cnVjdCBjb2xsZWN0X21hdGNoaW5nX3NjcmlwdHNfZGF0YSk6 CisrCU5ldy4KKysJKGNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0cyk6IEFkanVzdCBpdCBmb3IKKysJ c3RydWN0IGNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0c19kYXRhLgorKwkoYXV0b19sb2FkX2luZm9f c2NyaXB0c19wYXR0ZXJuX25sKTogTmV3IHZhcmlhYmxlLgorKwkoaW5mb19hdXRvX2xvYWRfc2Ny aXB0cyk6IFJlbmFtZSB0byAuLi4KKysJKGF1dG9fbG9hZF9pbmZvX3NjcmlwdHMpOiAuLi4gaGVy ZSwgYWRkIHBhcmFtZXRlciBsYW5ndWFnZS4gIEFkanVzdCBpdAorKwlmb3Igc3RydWN0IGNvbGxl Y3RfbWF0Y2hpbmdfc2NyaXB0c19kYXRhLgorKwkoaW5mb19hdXRvX2xvYWRfZ2RiX3NjcmlwdHMs IGluZm9fYXV0b19sb2FkX2xvY2FsX2dkYmluaXQpCisrCShzZXRfYXV0b19sb2FkX2NtZCwgYXV0 b19sb2FkX3NldF9jbWRsaXN0X2dldCwgc2hvd19hdXRvX2xvYWRfY21kKQorKwkoYXV0b19sb2Fk X3Nob3dfY21kbGlzdF9nZXQsIGluZm9fYXV0b19sb2FkX2NtZCkKKysJKGF1dG9fbG9hZF9pbmZv X2NtZGxpc3RfZ2V0KTogTmV3LgorKwkoX2luaXRpYWxpemVfYXV0b19sb2FkKTogTW92ZSBhZGRf aW5mbyBvZiAiYXV0by1sb2FkLXNjcmlwdHMiIHRvCisrCXB5dGhvbi9weS1hdXRvLWxvYWQuYy4g IE5ldyBpbnN0YWxsbWVudCBmb3IgInNldCBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiLAorKwkiaW5m byBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiLCAic2V0IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0IiBh bmQKKysJImluZm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXQiLgorKwkqIGF1dG8tbG9hZC5oIChz dHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlKTogTmV3LgorKwkoZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCk6 IFJlbmFtZSB0byAuLi4KKysJKGdsb2JhbF9hdXRvX2xvYWQpOiAuLi4gaGVyZS4KKysJKGF1dG9f bG9hZF9sb2NhbF9nZGJpbml0LCBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9wYXRobmFtZSkKKysJ KGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X2xvYWRlZCk6IE5ldyBkZWNsYXJhdGlvbnMuCisrCSht YXliZV9hZGRfc2NyaXB0KTogTmV3IHBhcmFtZXRlciBsYW5ndWFnZS4KKysJKGF1dG9fbG9hZF9v YmpmaWxlX3NjcmlwdCk6IENoYW5nZSBwYXJhbWV0ZXIgc3VmZml4IHRvIGxhbmd1YWdlLgorKwko bG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUsIGF1dG9fbG9hZF9pbmZvX3NjcmlwdHNfcGF0 dGVybl9ubCkKKysJKGF1dG9fbG9hZF9pbmZvX3NjcmlwdHMsIGF1dG9fbG9hZF9zZXRfY21kbGlz dF9nZXQpCisrCShhdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCwgYXV0b19sb2FkX2luZm9fY21k bGlzdF9nZXQpOiBOZXcKKysJZGVjbGFyYXRpb25zLgorKwkqIGxpbnV4LXRocmVhZC1kYi5jOiBJ bmNsdWRlIGF1dG8tbG9hZC5oIGFuZCBjdHlwZS5oLgorKwkoYXV0b19sb2FkX3RocmVhZF9kYiwg c2hvd19hdXRvX2xvYWRfdGhyZWFkX2RiKTogTmV3LgorKwkoc3RydWN0IHRocmVhZF9kYl9pbmZv KTogTmV3IGZpZWxkIGZpbGVuYW1lLgorKwkoZGVsZXRlX3RocmVhZF9kYl9pbmZvKTogQ2FsbCB4 ZnJlZSBmb3IgRklMRU5BTUUuCisrCSh0cnlfdGhyZWFkX2RiX2xvYWQpOiBJbml0aWFsaXplIEZJ TEVOQU1FLgorKwkodHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21fcGRpciwgdHJ5X3RocmVhZF9kYl9s b2FkX2Zyb21fZGlyKTogUmV0dXJuCisrCWlmICFBVVRPX0xPQURfVEhSRUFEX0RCLgorKwkoaW5m b19hdXRvX2xvYWRfbGlidGhyZWFkX2RiX2NvbXBhcmUsIGluZm9fYXV0b19sb2FkX2xpYnRocmVh ZF9kYik6IE5ldy4KKysJKF9pbml0aWFsaXplX3RocmVhZF9kYik6IEluc3RhbGwgYXV0b19sb2Fk X3RocmVhZF9kYgorKwlhcyAic2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIiIGFuZCBpbnN0YWxs IGluZm9fYXV0b19sb2FkX2xpYnRocmVhZF9kYgorKwlhcyAiaW5mbyBhdXRvLWxvYWQgbGlidGhy ZWFkLWRiIi4KKysJKiBtYWluLmMgKGNhcHR1cmVkX21haW4pOiBSZW5hbWUgZ2RicHlfZ2xvYmFs X2F1dG9fbG9hZCB0bworKwlnbG9iYWxfYXV0b19sb2FkLiAgSW5pdGlhbGl6ZSBBVVRPX0xPQURf TE9DQUxfR0RCSU5JVF9QQVRITkFNRSBhbmQKKysJQVVUT19MT0FEX0xPQ0FMX0dEQklOSVRfTE9B REVELgorKwkocHJpbnRfZ2RiX2hlbHApOiBFeHRlbmQgdGhlIGhlbHAgZm9yICdsb2NhbCBpbml0 IGZpbGUnLgorKwkqIHB5dGhvbi9weS1hdXRvLWxvYWQuYzogUmVtb3ZlIGEgY29tbWVudCBhYm91 dCBnZGIgc2NyaXB0cyBleHRlbnNpb24uCisrCShHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSk6IEV4 dGVuZCB0aGUgY29tbWVudCBpdCBpcyBQeXRob24gc3BlY2lmaWMuCisrCShhdXRvX2xvYWRfc2Ny aXB0cyk6IFJlbmFtZSB0byAuLi4KKysJKGF1dG9fbG9hZF9weXRob25fc2NyaXB0cyk6IC4uLiBo ZXJlLCB1cGRhdGUgdGhlIGNvbW1lbnQuCisrCShnZGJweV9sb2FkX2F1dG9fc2NyaXB0X2Zvcl9v YmpmaWxlKTogTmV3IGRlY2xhcmF0aW9uLgorKwkoc2hvd19hdXRvX2xvYWRfcHl0aG9uX3Njcmlw dHMsIHNjcmlwdF9sYW5ndWFnZV9weXRob24pCisrCShnZGJweV9sb2FkX2F1dG9fc2NyaXB0X2Zv cl9vYmpmaWxlKTogTmV3LgorKwkoc291cmNlX3NlY3Rpb25fc2NyaXB0cyk6IFJlZmFjdG9yIHRo ZSBjb2RlLgorKwkobG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUpOiBSZW5hbWUgdG8gLi4u CisrCShnZGJweV9sb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSk6IC4uLiBoZXJlLCB1cGRh dGUgdGhlCisrCWF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCBjYWxsZXIsIGRyb3AgR0RCUFlfR0xP QkFMX0FVVE9fTE9BRCBjaGVja2luZy4KKysJKGluZm9fYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRz KTogTmV3LgorKwkoZ2RicHlfaW5pdGlhbGl6ZV9hdXRvX2xvYWQpOiBOZXcgdmFyaWFibGVzIGNt ZCBhbmQgY21kX25hbWUuCisrCVJlbmFtZSAic2V0IGF1dG8tbG9hZC1zY3JpcHRzIiB0byAic2V0 IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIuCisrCVJlZ2lzdGVyICJzZXQgYXV0by1sb2FkLXNj cmlwdHMiIGFzIGl0cyBkZXByZWNhdGVkIGFsaWFzLiAgUmVnaXN0ZXIKKysJImluZm8gYXV0by1s b2FkIHB5dGhvbi1zY3JpcHRzIi4gIFJlZ2lzdGVyICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIiBh cworKwlpdHMgZGVwcmVjYXRlZCBhbGlhcy4KKysJKGxvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpm aWxlKTogUmVuYW1lIHRvIC4uLgorKwkoZ2RicHlfbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZp bGUpOiAuLi4gaGVyZS4KKysJKiBweXRob24vcHl0aG9uLmggKGxvYWRfYXV0b19zY3JpcHRzX2Zv cl9vYmpmaWxlKTogUmVuYW1lIHRvIC4uLgorKwkoZ2RicHlfbG9hZF9hdXRvX3NjcmlwdHNfZm9y X29iamZpbGUpOiAuLi4gaGVyZS4KKysKKysyMDEyLTA0LTE3ICBKYW4gS3JhdG9jaHZpbCAgPGph bi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisrCisgCWF1dG8tbG9hZDogTW92ZSBmaWxlcy4KKyAJ KiBNYWtlZmlsZS5pbiAoU0ZJTEVTKTogQWRkIGF1dG8tbG9hZC5jLgorIAkoSEZJTEVTX05PX1NS Q0RJUik6IEFkZCBhdXRvLWxvYWQuaC4KK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9O RVdTCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9ORVdTCTIw MTItMDQtMTggMDA6NDI6NTEuMjI2NjgxMDY4ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvTkVXUwkyMDEyLTA0LTE4IDAwOjQ5OjAyLjAzNTczNzY0NCArMDIwMAorQEAgLTI4LDYg KzI4LDQ1IEBACisgICBub3cgc2V0IGEgYnJlYWtwb2ludCBpbiBidWlsZC9nY2MvZXhwci5jLCBi dXQgbm90CisgICBidWlsZC9saWJjcHAvZXhwci5jLgorIAorKyogTmV3IGNvbW1hbmRzCisrCisr ICAqKiAiaW5mbyBhdXRvLWxvYWQiIHNob3dzIHN0YXR1cyBvZiBhbGwga2luZHMgb2YgYXV0by1s b2FkZWQgZmlsZXMsCisrICAgICAiaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiIHNob3dzIHN0 YXR1cyBvZiBhdXRvLWxvYWRpbmcgR0RCIGNhbm5lZAorKyAgICAgc2VxdWVuY2VzIG9mIGNvbW1h bmRzIGZpbGVzLCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiCisrICAgICBzaG93cyBz dGF0dXMgb2YgYXV0by1sb2FkaW5nIFB5dGhvbiBzY3JpcHQgZmlsZXMsCisrICAgICAiaW5mbyBh dXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIgc2hvd3Mgc3RhdHVzIG9mIGxvYWRpbmcgaW5pdCBmaWxl CisrICAgICAoLmdkYmluaXQpIGZyb20gY3VycmVudCBkaXJlY3RvcnkgYW5kICJpbmZvIGF1dG8t bG9hZCBsaWJ0aHJlYWQtZGIiIHNob3dzCisrICAgICBzdGF0dXMgb2YgaW5mZXJpb3Igc3BlY2lm aWMgdGhyZWFkIGRlYnVnZ2luZyBzaGFyZWQgbGlicmFyeSBsb2FkaW5nLgorKworKyAgKiogImlu Zm8gYXV0by1sb2FkLXNjcmlwdHMiLCAic2V0IGF1dG8tbG9hZC1zY3JpcHRzIG9ufG9mZiIKKysg ICAgIGFuZCAic2hvdyBhdXRvLWxvYWQtc2NyaXB0cyIgY29tbWFuZHMgaGF2ZSBiZWVuIGRlcHJl Y2F0ZWQsIHVzZSB0aGVpcgorKyAgICAgImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIiwg InNldCBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMgb258b2ZmIgorKyAgICAgYW5kICJzaG93IGF1 dG8tbG9hZCBweXRob24tc2NyaXB0cyIgY291bnRlcnBhcnRzIGluc3RlYWQuCisrCisrKiBOZXcg b3B0aW9ucworKworK3NldCBhdXRvLWxvYWQgb2ZmCisrICBEaXNhYmxlIGF1dG8tbG9hZGluZyBn bG9iYWxseS4KKysKKytzaG93IGF1dG8tbG9hZAorKyAgU2hvdyBhdXRvLWxvYWRpbmcgc2V0dGlu ZyBvZiBhbGwga2luZHMgb2YgYXV0by1sb2FkZWQgZmlsZXMuCisrCisrc2V0IGF1dG8tbG9hZCBn ZGItc2NyaXB0cyBvbnxvZmYKKytzaG93IGF1dG8tbG9hZCBnZGItc2NyaXB0cworKyAgQ29udHJv bCBhdXRvLWxvYWRpbmcgb2YgR0RCIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgZmlsZXMu CisrCisrc2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyBvbnxvZmYKKytzaG93IGF1dG8tbG9h ZCBweXRob24tc2NyaXB0cworKyAgQ29udHJvbCBhdXRvLWxvYWRpbmcgb2YgUHl0aG9uIHNjcmlw dCBmaWxlcy4KKysKKytzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXQgb258b2ZmCisrc2hvdyBh dXRvLWxvYWQgbG9jYWwtZ2RiaW5pdAorKyAgQ29udHJvbCBsb2FkaW5nIG9mIGluaXQgZmlsZSAo LmdkYmluaXQpIGZyb20gY3VycmVudCBkaXJlY3RvcnkuCisrCisrc2V0IGF1dG8tbG9hZCBsaWJ0 aHJlYWQtZGIgb258b2ZmCisrc2hvdyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiCisrICBDb250cm9s IGF1dG8tbG9hZGluZyBvZiBpbmZlcmlvciBzcGVjaWZpYyB0aHJlYWQgZGVidWdnaW5nIHNoYXJl ZCBsaWJyYXJ5LgorKworICogTmV3IGNvbW1hbmQgbGluZSBvcHRpb25zCisgCisgLS1pbml0LWNv bW1hbmQ9RklMRSwgLWl4ICAgICAgICAgIExpa2UgLS1jb21tYW5kLCAteCBidXQgZXhlY3V0ZSBp dAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCis9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA0LTE4 IDAwOjQ0OjI2Ljk1MDQzNzUyMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1 dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6NDY6NDcuNTU2MDc5NzgwICswMjAwCitAQCAtMjcsMTkg KzI3LDkyIEBACisgI2luY2x1ZGUgImNvbW1hbmQuaCIKKyAjaW5jbHVkZSAib2JzZXJ2ZXIuaCIK KyAjaW5jbHVkZSAib2JqZmlsZXMuaCIKKy0jaW5jbHVkZSAicHl0aG9uL3B5dGhvbi1pbnRlcm5h bC5oIgorKyNpbmNsdWRlICJleGNlcHRpb25zLmgiCisrI2luY2x1ZGUgImNsaS9jbGktc2NyaXB0 LmgiCisrI2luY2x1ZGUgImdkYmNtZC5oIgorKyNpbmNsdWRlICJjbGkvY2xpLWRlY29kZS5oIgor KyNpbmNsdWRlICJjbGkvY2xpLXNldHNob3cuaCIKKysKKysvKiBUaGUgc3VmZml4IG9mIHBlci1v YmpmaWxlIHNjcmlwdHMgdG8gYXV0by1sb2FkIGFzIG5vbi1QeXRob24gY29tbWFuZCBmaWxlcy4K KysgICBFLmcuIFdoZW4gdGhlIHByb2dyYW0gbG9hZHMgbGliZm9vLnNvLCBsb29rIGZvciBsaWJm b28tZ2RiLmdkYi4gICovCisrI2RlZmluZSBHREJfQVVUT19GSUxFX05BTUUgIi1nZGIuZ2RiIgor KworK3N0YXRpYyB2b2lkIHNvdXJjZV9nZGJfc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwgRklMRSAqZmlsZSwKKysJCQkJCSAgIGNvbnN0IGNoYXIgKmZpbGVuYW1l KTsKKysKKysvKiBVc2VyLXNldHRhYmxlIG9wdGlvbiB0byBlbmFibGUvZGlzYWJsZSBhdXRvLWxv YWRpbmcgb2YgR0RCX0FVVE9fRklMRV9OQU1FCisrICAgc2NyaXB0czoKKysgICBzZXQgYXV0by1s b2FkIGdkYi1zY3JpcHRzIG9ufG9mZgorKyAgIFRoaXMgaXMgdHJ1ZSBpZiB3ZSBzaG91bGQgYXV0 by1sb2FkIGFzc29jaWF0ZWQgc2NyaXB0cyB3aGVuIGFuIG9iamZpbGUKKysgICBpcyBvcGVuZWQs IGZhbHNlIG90aGVyd2lzZS4gICovCisrc3RhdGljIGludCBhdXRvX2xvYWRfZ2RiX3NjcmlwdHMg PSAxOworKworKy8qICJzaG93IiBjb21tYW5kIGZvciB0aGUgYXV0b19sb2FkX2dkYl9zY3JpcHRz IGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuICAqLworKworK3N0YXRpYyB2b2lkCisrc2hvd19hdXRv X2xvYWRfZ2RiX3NjcmlwdHMgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCisr CQkJICAgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjLCBjb25zdCBjaGFyICp2YWx1ZSkKKyt7 CisrICBmcHJpbnRmX2ZpbHRlcmVkIChmaWxlLCBfKCJBdXRvLWxvYWRpbmcgb2YgY2FubmVkIHNl cXVlbmNlcyBvZiBjb21tYW5kcyAiCisrCQkJICAgICJzY3JpcHRzIGlzICVzLlxuIiksCisrCQkg ICAgdmFsdWUpOworK30KKyAKKyAvKiBJbnRlcm5hbC11c2UgZmxhZyB0byBlbmFibGUvZGlzYWJs ZSBhdXRvLWxvYWRpbmcuCisgICAgVGhpcyBpcyB0cnVlIGlmIHdlIHNob3VsZCBhdXRvLWxvYWQg cHl0aG9uIGNvZGUgd2hlbiBhbiBvYmpmaWxlIGlzIG9wZW5lZCwKKyAgICBmYWxzZSBvdGhlcndp c2UuCisgCistICAgQm90aCBhdXRvX2xvYWRfc2NyaXB0cyAmJiBnZGJweV9nbG9iYWxfYXV0b19s b2FkIG11c3QgYmUgdHJ1ZSB0byBlbmFibGUKKysgICBCb3RoIGF1dG9fbG9hZF9zY3JpcHRzICYm IGdsb2JhbF9hdXRvX2xvYWQgbXVzdCBiZSB0cnVlIHRvIGVuYWJsZQorICAgIGF1dG8tbG9hZGlu Zy4KKyAKKyAgICBUaGlzIGZsYWcgZXhpc3RzIHRvIGZhY2lsaXRhdGUgZGVmZXJyaW5nIGF1dG8t bG9hZGluZyBkdXJpbmcgc3RhcnQtdXAKKyAgICB1bnRpbCBhZnRlciAuLy5nZGJpbml0IGhhcyBi ZWVuIHJlYWQ7IGl0IG1heSBhdWdtZW50IHRoZSBzZWFyY2ggZGlyZWN0b3JpZXMKKyAgICB1c2Vk IHRvIGZpbmQgdGhlIHNjcmlwdHMuICAqLworLWludCBnZGJweV9nbG9iYWxfYXV0b19sb2FkID0g MTsKKytpbnQgZ2xvYmFsX2F1dG9fbG9hZCA9IDE7CisrCisrLyogQXV0by1sb2FkIC5nZGJpbml0 IGZpbGUgZnJvbSB0aGUgY3VycmVudCBkaXJlY3Rvcnk/ICAqLworK2ludCBhdXRvX2xvYWRfbG9j YWxfZ2RiaW5pdCA9IDE7CisrCisrLyogQWJzb2x1dGUgcGF0aG5hbWUgdG8gdGhlIGN1cnJlbnQg ZGlyZWN0b3J5IC5nZGJpbml0LCBpZiBpdCBleGlzdHMuICAqLworK2NoYXIgKmF1dG9fbG9hZF9s b2NhbF9nZGJpbml0X3BhdGhuYW1lID0gTlVMTDsKKysKKysvKiBCb29sZWFuIHZhbHVlIGlmIEFV VE9fTE9BRF9MT0NBTF9HREJJTklUX1BBVEhOQU1FIGhhcyBiZWVuIGxvYWRlZC4gICovCisraW50 IGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X2xvYWRlZCA9IDA7CisrCisrLyogInNob3ciIGNvbW1h bmQgZm9yIHRoZSBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCBjb25maWd1cmF0aW9uIHZhcmlhYmxl LiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3Nob3dfYXV0b19sb2FkX2xvY2FsX2dkYmluaXQgKHN0 cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCisrCQkJICAgICAgc3RydWN0IGNtZF9s aXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQorK3sKKysgIGZwcmludGZfZmlsdGVy ZWQgKGZpbGUsIF8oIkF1dG8tbG9hZGluZyBvZiAuZ2RiaW5pdCBzY3JpcHQgZnJvbSBjdXJyZW50 ICIKKysJCQkgICAgImRpcmVjdG9yeSBpcyAlcy5cbiIpLAorKwkJICAgIHZhbHVlKTsKKyt9Cisr CisrLyogRGVmaW5pdGlvbiBvZiBzY3JpcHQgbGFuZ3VhZ2UgZm9yIEdEQiBjYW5uZWQgc2VxdWVu Y2VzIG9mIGNvbW1hbmRzLiAgKi8KKysKKytzdGF0aWMgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5n dWFnZSBzY3JpcHRfbGFuZ3VhZ2VfZ2RiCisrICA9IHsgR0RCX0FVVE9fRklMRV9OQU1FLCBzb3Vy Y2VfZ2RiX3NjcmlwdF9mb3Jfb2JqZmlsZSB9OworKworK3N0YXRpYyB2b2lkCisrc291cmNlX2dk Yl9zY3JpcHRfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBGSUxFICpmaWxl LAorKwkJCSAgICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSkKKyt7CisrICBzdHJ1Y3QgYXV0b19s b2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKKysgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhj ZXB0aW9uIGU7CisrCisrICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFibGUgdG9v IHNvICJpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyIKKysgICAgIGNhbiBwcmludCBpdC4gICov CisrICBwc3BhY2VfaW5mbyA9IGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcg KGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7CisrICBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5m bywgZmlsZW5hbWUsIGZpbGVuYW1lLCAmc2NyaXB0X2xhbmd1YWdlX2dkYik7CisrCisrICBUUllf Q0FUQ0ggKGUsIFJFVFVSTl9NQVNLX0FMTCkKKysgICAgeworKyAgICAgIHNjcmlwdF9mcm9tX2Zp bGUgKGZpbGUsIGZpbGVuYW1lKTsKKysgICAgfQorKyAgZXhjZXB0aW9uX3ByaW50IChnZGJfc3Rk ZXJyLCBlKTsKKyt9CisgCisgLyogRm9yIHNjcmlwdHMgc3BlY2lmaWVkIGluIC5kZWJ1Z19nZGJf c2NyaXB0cywgbXVsdGlwbGUgb2JqZmlsZXMgbWF5IGxvYWQKKyAgICB0aGUgc2FtZSBzY3JpcHQu ICBUaGVyZSdzIG5vIHBvaW50IGluIGxvYWRpbmcgdGhlIHNjcmlwdCBtdWx0aXBsZSB0aW1lcywK K0BAIC02Miw5ICsxMzUsMTIgQEAgc3RydWN0IGxvYWRlZF9zY3JpcHQKKyB7CisgICAvKiBOYW1l IGFzIHByb3ZpZGVkIGJ5IHRoZSBvYmpmaWxlLiAgKi8KKyAgIGNvbnN0IGNoYXIgKm5hbWU7Cisr CisgICAvKiBGdWxsIHBhdGggbmFtZSBvciBOVUxMIGlmIHNjcmlwdCB3YXNuJ3QgZm91bmQgKG9y IHdhcyBvdGhlcndpc2UKKyAgICAgIGluYWNjZXNzaWJsZSkuICAqLworICAgY29uc3QgY2hhciAq ZnVsbF9wYXRoOworKworKyAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2U7 CisgfTsKKyAKKyAvKiBQZXItcHJvZ3JhbS1zcGFjZSBkYXRhIGtleS4gICovCitAQCAtMTA5LDcg KzE4NSw3IEBAIGhhc2hfbG9hZGVkX3NjcmlwdF9lbnRyeSAoY29uc3Qgdm9pZCAqZGEKKyB7Cisg ICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqZSA9IGRhdGE7CisgCistICByZXR1cm4gaHRh Yl9oYXNoX3N0cmluZyAoZS0+bmFtZSk7CisrICByZXR1cm4gaHRhYl9oYXNoX3N0cmluZyAoZS0+ bmFtZSkgXiBodGFiX2hhc2hfcG9pbnRlciAoZS0+bGFuZ3VhZ2UpOworIH0KKyAKKyAvKiBFcXVh bGl0eSBmdW5jdGlvbiBmb3IgdGhlIGxvYWRlZCBzY3JpcHQgaGFzaC4gICovCitAQCAtMTIwLDcg KzE5Niw3IEBAIGVxX2xvYWRlZF9zY3JpcHRfZW50cnkgKGNvbnN0IHZvaWQgKmEsIGMKKyAgIGNv bnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICplYSA9IGE7CisgICBjb25zdCBzdHJ1Y3QgbG9hZGVk X3NjcmlwdCAqZWIgPSBiOworIAorLSAgcmV0dXJuIHN0cmNtcCAoZWEtPm5hbWUsIGViLT5uYW1l KSA9PSAwOworKyAgcmV0dXJuIHN0cmNtcCAoZWEtPm5hbWUsIGViLT5uYW1lKSA9PSAwICYmIGVh LT5sYW5ndWFnZSA9PSBlYi0+bGFuZ3VhZ2U7CisgfQorIAorIC8qIEluaXRpYWxpemUgdGhlIHRh YmxlIHRvIHRyYWNrIGxvYWRlZCBzY3JpcHRzLgorQEAgLTE1NiwyMCArMjMyLDIxIEBAIGdldF9h dXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKHMKKyAgIHJldHVybiBpbmZvOworIH0K KyAKKy0vKiBBZGQgc2NyaXB0IE5BTUUgdG8gaGFzaCB0YWJsZSBvZiBQU1BBQ0VfSU5GTy4KKy0g ICBGVUxMX1BBVEggaXMgTlVMTCBpZiB0aGUgc2NyaXB0IHdhc24ndCBmb3VuZC4KKy0gICBUaGUg cmVzdWx0IGlzIHRydWUgaWYgdGhlIHNjcmlwdCB3YXMgYWxyZWFkeSBpbiB0aGUgaGFzaCB0YWJs ZS4gICovCisrLyogQWRkIHNjcmlwdCBOQU1FIGluIExBTkdVQUdFIHRvIGhhc2ggdGFibGUgb2Yg UFNQQUNFX0lORk8uCisrICAgRlVMTF9QQVRIIGlzIE5VTEwgaWYgdGhlIHNjcmlwdCB3YXNuJ3Qg Zm91bmQuICBUaGUgcmVzdWx0IGlzCisrICAgdHJ1ZSBpZiB0aGUgc2NyaXB0IHdhcyBhbHJlYWR5 IGluIHRoZSBoYXNoIHRhYmxlLiAgKi8KKyAKKyBpbnQKKy1tYXliZV9hZGRfc2NyaXB0IChzdHJ1 Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbywgY29uc3QgY2hhciAqbmFtZSwK Ky0JCSAgY29uc3QgY2hhciAqZnVsbF9wYXRoKQorK21heWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBh dXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvLAorKwkJICBjb25zdCBjaGFyICpuYW1l LCBjb25zdCBjaGFyICpmdWxsX3BhdGgsCisrCQkgIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3Vh Z2UgKmxhbmd1YWdlKQorIHsKKyAgIHN0cnVjdCBodGFiICpodGFiID0gcHNwYWNlX2luZm8tPmxv YWRlZF9zY3JpcHRzOworICAgc3RydWN0IGxvYWRlZF9zY3JpcHQgKipzbG90LCBlbnRyeTsKKyAg IGludCBpbl9oYXNoX3RhYmxlOworIAorICAgZW50cnkubmFtZSA9IG5hbWU7CistICBlbnRyeS5m dWxsX3BhdGggPSBmdWxsX3BhdGg7CisrICBlbnRyeS5sYW5ndWFnZSA9IGxhbmd1YWdlOworICAg c2xvdCA9IChzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqKikgaHRhYl9maW5kX3Nsb3QgKGh0YWIsICZl bnRyeSwgSU5TRVJUKTsKKyAgIGluX2hhc2hfdGFibGUgPSAqc2xvdCAhPSBOVUxMOworIAorQEAg LTE5NCw2ICsyNzEsNyBAQCBtYXliZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFj CisgCX0KKyAgICAgICBlbHNlCisgCSgqc2xvdCktPmZ1bGxfcGF0aCA9IE5VTEw7CisrICAgICAg KCpzbG90KS0+bGFuZ3VhZ2UgPSBsYW5ndWFnZTsKKyAgICAgfQorIAorICAgcmV0dXJuIGluX2hh c2hfdGFibGU7CitAQCAtMjE2LDEwICsyOTQsMTIgQEAgY2xlYXJfc2VjdGlvbl9zY3JpcHRzICh2 b2lkKQorICAgICB9CisgfQorIAorLS8qIExvb2sgZm9yIHRoZSBhdXRvLWxvYWQgc2NyaXB0IGFz c29jaWF0ZWQgd2l0aCBPQkpGSUxFIGFuZCBsb2FkIGl0LiAgKi8KKysvKiBMb29rIGZvciB0aGUg YXV0by1sb2FkIHNjcmlwdCBpbiBMQU5HVUFHRSBhc3NvY2lhdGVkIHdpdGggT0JKRklMRSBhbmQg bG9hZAorKyAgIGl0LiAgKi8KKyAKKyB2b2lkCistYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqc3VmZml4KQorK2F1dG9fbG9hZF9v YmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisrCQkJICBjb25zdCBzdHJ1 Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5ndWFnZSkKKyB7CisgICBjaGFyICpyZWFsbmFtZTsKKyAg IGNoYXIgKmZpbGVuYW1lLCAqZGVidWdmaWxlOworQEAgLTIyOSw5ICszMDksOSBAQCBhdXRvX2xv YWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVjdCBvYmpmaWxlCisgCisgICByZWFsbmFtZSA9IGdkYl9y ZWFscGF0aCAob2JqZmlsZS0+bmFtZSk7CisgICBsZW4gPSBzdHJsZW4gKHJlYWxuYW1lKTsKKy0g IGZpbGVuYW1lID0geG1hbGxvYyAobGVuICsgc3RybGVuIChzdWZmaXgpICsgMSk7CisrICBmaWxl bmFtZSA9IHhtYWxsb2MgKGxlbiArIHN0cmxlbiAobGFuZ3VhZ2UtPnN1ZmZpeCkgKyAxKTsKKyAg IG1lbWNweSAoZmlsZW5hbWUsIHJlYWxuYW1lLCBsZW4pOworLSAgc3RyY3B5IChmaWxlbmFtZSAr IGxlbiwgc3VmZml4KTsKKysgIHN0cmNweSAoZmlsZW5hbWUgKyBsZW4sIGxhbmd1YWdlLT5zdWZm aXgpOworIAorICAgY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBmaWxlbmFtZSk7Cisg ICBtYWtlX2NsZWFudXAgKHhmcmVlLCByZWFsbmFtZSk7CitAQCAtMjY5LDI3ICszNDksMzMgQEAg YXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZQorIAorICAgaWYgKGlucHV0 KQorICAgICB7CistICAgICAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2lu Zm87CistCisgICAgICAgbWFrZV9jbGVhbnVwX2ZjbG9zZSAoaW5wdXQpOworIAorLSAgICAgIC8q IEFkZCB0aGlzIHNjcmlwdCB0byB0aGUgaGFzaCB0YWJsZSB0b28gc28gImluZm8gYXV0by1sb2Fk LXNjcmlwdHMiCistCSBjYW4gcHJpbnQgaXQuICAqLworLSAgICAgIHBzcGFjZV9pbmZvID0KKy0J Z2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGluZyAoY3VycmVudF9wcm9ncmFtX3Nw YWNlKTsKKy0gICAgICBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5mbywgZGVidWdmaWxlLCBk ZWJ1Z2ZpbGUpOworLQorICAgICAgIC8qIFRvIHByZXNlcnZlIGV4aXN0aW5nIGJlaGF2aW91ciB3 ZSBkb24ndCBjaGVjayBmb3Igd2hldGhlciB0aGUKKyAJIHNjcmlwdCB3YXMgYWxyZWFkeSBpbiB0 aGUgdGFibGUsIGFuZCBhbHdheXMgbG9hZCBpdC4KKyAJIEl0J3MgaGlnaGx5IHVubGlrZWx5IHRo YXQgd2UnZCBldmVyIGxvYWQgaXQgdHdpY2UsCisgCSBhbmQgdGhlc2Ugc2NyaXB0cyBhcmUgcmVx dWlyZWQgdG8gYmUgaWRlbXBvdGVudCB1bmRlciBtdWx0aXBsZQorIAkgbG9hZHMgYW55d2F5LiAg Ki8KKy0gICAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgaW5w dXQsIGRlYnVnZmlsZSk7CisrICAgICAgbGFuZ3VhZ2UtPnNvdXJjZV9zY3JpcHRfZm9yX29iamZp bGUgKG9iamZpbGUsIGlucHV0LCBkZWJ1Z2ZpbGUpOworICAgICB9CisgCisgICBkb19jbGVhbnVw cyAoY2xlYW51cHMpOworIH0KKyAKKysvKiBMb2FkIGFueSBhdXRvLWxvYWRlZCBzY3JpcHRzIGZv ciBPQkpGSUxFLiAgKi8KKysKKyt2b2lkCisrbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorK3sKKysgIGlmICghZ2xvYmFsX2F1dG9fbG9hZCkK KysgICAgcmV0dXJuOworKworKyAgaWYgKGF1dG9fbG9hZF9nZGJfc2NyaXB0cykKKysgICAgYXV0 b19sb2FkX29iamZpbGVfc2NyaXB0IChvYmpmaWxlLCAmc2NyaXB0X2xhbmd1YWdlX2dkYik7Cisr CisrICBnZGJweV9sb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAob2JqZmlsZSk7CisrfQor KworIC8qIFRoaXMgaXMgYSBuZXdfb2JqZmlsZSBvYnNlcnZlciBjYWxsYmFjayB0byBhdXRvLWxv YWQgc2NyaXB0cy4KKyAKKyAgICBUd28gZmxhdm9ycyBvZiBhdXRvLWxvYWRlZCBzY3JpcHRzIGFy ZSBzdXBwb3J0ZWQuCitAQCAtMzE0LDYgKzQwMCwxMyBAQCBhdXRvX2xvYWRfbmV3X29iamZpbGUg KHN0cnVjdCBvYmpmaWxlICpvCisgdHlwZWRlZiBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqbG9hZGVk X3NjcmlwdF9wdHI7CisgREVGX1ZFQ19QIChsb2FkZWRfc2NyaXB0X3B0cik7CisgCisrc3RydWN0 IGNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0c19kYXRhCisreworKyAgVkVDIChsb2FkZWRfc2NyaXB0 X3B0cikgKipzY3JpcHRzX3A7CisrCisrICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICps YW5ndWFnZTsKKyt9OworKworIC8qIFRyYXZlcnNhbCBmdW5jdGlvbiBmb3IgaHRhYl90cmF2ZXJz ZS4KKyAgICBDb2xsZWN0IHRoZSBlbnRyeSBpZiBpdCBtYXRjaGVzIHRoZSByZWdleHAuICAqLwor IAorQEAgLTMyMSwxMCArNDE0LDEwIEBAIHN0YXRpYyBpbnQKKyBjb2xsZWN0X21hdGNoaW5nX3Nj cmlwdHMgKHZvaWQgKipzbG90LCB2b2lkICppbmZvKQorIHsKKyAgIHN0cnVjdCBsb2FkZWRfc2Ny aXB0ICpzY3JpcHQgPSAqc2xvdDsKKy0gIFZFQyAobG9hZGVkX3NjcmlwdF9wdHIpICoqc2NyaXB0 c19wdHIgPSBpbmZvOworKyAgc3RydWN0IGNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0c19kYXRhICpk YXRhID0gaW5mbzsKKyAKKy0gIGlmIChyZV9leGVjIChzY3JpcHQtPm5hbWUpKQorLSAgICBWRUNf c2FmZV9wdXNoIChsb2FkZWRfc2NyaXB0X3B0ciwgKnNjcmlwdHNfcHRyLCBzY3JpcHQpOworKyAg aWYgKHNjcmlwdC0+bGFuZ3VhZ2UgPT0gZGF0YS0+bGFuZ3VhZ2UgJiYgcmVfZXhlYyAoc2NyaXB0 LT5uYW1lKSkKKysgICAgVkVDX3NhZmVfcHVzaCAobG9hZGVkX3NjcmlwdF9wdHIsICpkYXRhLT5z Y3JpcHRzX3AsIHNjcmlwdCk7CisgCisgICByZXR1cm4gMTsKKyB9CitAQCAtMzY2LDEwICs0NTks MTggQEAgc29ydF9zY3JpcHRzX2J5X25hbWUgKGNvbnN0IHZvaWQgKmFwLCBjbworICAgcmV0dXJu IEZJTEVOQU1FX0NNUCAoYS0+bmFtZSwgYi0+bmFtZSk7CisgfQorIAorLS8qICJpbmZvIGF1dG8t bG9hZC1zY3JpcHRzIiBjb21tYW5kLiAgKi8KKysvKiBTcGVjaWFsIGludGVybmFsIEdEQiB2YWx1 ZSBvZiBhdXRvX2xvYWRfaW5mb19zY3JpcHRzJ3MgUEFUVEVSTiBpZGVudGlmeQorKyAgIHRoZSAi aW5mbyBhdXRvLWxvYWQgWFhYIiBjb21tYW5kIGhhcyBiZWVuIGV4ZWN1dGVkIHRocm91Z2ggdGhl IGdlbmVyYWwKKysgICAiaW5mbyBhdXRvLWxvYWQiIGludm9jYXRpb24uICBFeHRyYSBuZXdsaW5l IHdpbGwgYmUgcHJpbnRlZCBpZiBuZWVkZWQuICAqLworK2NoYXIgYXV0b19sb2FkX2luZm9fc2Ny aXB0c19wYXR0ZXJuX25sW10gPSAiIjsKKysKKysvKiBJbXBsZW1lbnRhdGlvbiBmb3IgImluZm8g YXV0by1sb2FkIGdkYi1zY3JpcHRzIgorKyAgIChhbmQgImluZm8gYXV0by1sb2FkIHB5dGhvbi1z Y3JpcHRzIikuICBMaXN0IHNjcmlwdHMgaW4gTEFOR1VBR0UgbWF0Y2hpbmcKKysgICBQQVRURVJO LiAgRlJPTV9UVFkgaXMgdGhlIHVzdWFsIEdEQiBib29sZWFuIGZvciB1c2VyIGludGVyYWN0aXZp dHkuICAqLworIAorLXN0YXRpYyB2b2lkCistaW5mb19hdXRvX2xvYWRfc2NyaXB0cyAoY2hhciAq cGF0dGVybiwgaW50IGZyb21fdHR5KQorK3ZvaWQKKythdXRvX2xvYWRfaW5mb19zY3JpcHRzIChj aGFyICpwYXR0ZXJuLCBpbnQgZnJvbV90dHksCisrCQkJY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5n dWFnZSAqbGFuZ3VhZ2UpCisgeworICAgc3RydWN0IHVpX291dCAqdWlvdXQgPSBjdXJyZW50X3Vp b3V0OworICAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm87CitAQCAt NDAyLDE0ICs1MDMsMjIgQEAgaW5mb19hdXRvX2xvYWRfc2NyaXB0cyAoY2hhciAqcGF0dGVybiwg aQorIAorICAgaWYgKHBzcGFjZV9pbmZvICE9IE5VTEwgJiYgcHNwYWNlX2luZm8tPmxvYWRlZF9z Y3JpcHRzICE9IE5VTEwpCisgICAgIHsKKysgICAgICBzdHJ1Y3QgY29sbGVjdF9tYXRjaGluZ19z Y3JpcHRzX2RhdGEgZGF0YSA9IHsgJnNjcmlwdHMsIGxhbmd1YWdlIH07CisrCisgICAgICAgaW1t ZWRpYXRlX3F1aXQrKzsKKyAgICAgICAvKiBQYXNzIGEgcG9pbnRlciB0byBzY3JpcHRzIGFzIFZF Q19zYWZlX3B1c2ggY2FuIHJlYWxsb2Mgc3BhY2UuICAqLworICAgICAgIGh0YWJfdHJhdmVyc2Vf bm9yZXNpemUgKHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cywKKy0JCQkgICAgICBjb2xsZWN0 X21hdGNoaW5nX3NjcmlwdHMsICZzY3JpcHRzKTsKKysJCQkgICAgICBjb2xsZWN0X21hdGNoaW5n X3NjcmlwdHMsICZkYXRhKTsKKyAgICAgICBpbW1lZGlhdGVfcXVpdC0tOworICAgICB9CisgCisg ICBucl9zY3JpcHRzID0gVkVDX2xlbmd0aCAobG9hZGVkX3NjcmlwdF9wdHIsIHNjcmlwdHMpOwor KworKyAgLyogVGFibGUgaGVhZGVyIHNoaWZ0ZWQgcmlnaHQgYnkgcHJlY2VkaW5nICJnZGItc2Ny aXB0czogICIgd291bGQgbm90IG1hdGNoCisrICAgICBpdHMgY29sdW1ucy4gICovCisrICBpZiAo bnJfc2NyaXB0cyA+IDAgJiYgcGF0dGVybiA9PSBhdXRvX2xvYWRfaW5mb19zY3JpcHRzX3BhdHRl cm5fbmwpCisrICAgIHVpX291dF90ZXh0ICh1aW91dCwgIlxuIik7CisrCisgICBtYWtlX2NsZWFu dXBfdWlfb3V0X3RhYmxlX2JlZ2luX2VuZCAodWlvdXQsIDIsIG5yX3NjcmlwdHMsCisgCQkJCSAg ICAgICAiQXV0b0xvYWRlZFNjcmlwdHNUYWJsZSIpOworIAorQEAgLTQ0MSw2ICs1NTAsMjkgQEAg aW5mb19hdXRvX2xvYWRfc2NyaXB0cyAoY2hhciAqcGF0dGVybiwgaQorICAgICB9CisgfQorIAor Ky8qIFdyYXBwZXIgZm9yICJpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyIuICAqLworKworK3N0 YXRpYyB2b2lkCisraW5mb19hdXRvX2xvYWRfZ2RiX3NjcmlwdHMgKGNoYXIgKnBhdHRlcm4sIGlu dCBmcm9tX3R0eSkKKyt7CisrICBhdXRvX2xvYWRfaW5mb19zY3JpcHRzIChwYXR0ZXJuLCBmcm9t X3R0eSwgJnNjcmlwdF9sYW5ndWFnZV9nZGIpOworK30KKysKKysvKiBJbXBsZW1lbnQgJ2luZm8g YXV0by1sb2FkIGxvY2FsLWdkYmluaXQnLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2luZm9fYXV0 b19sb2FkX2xvY2FsX2dkYmluaXQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKKyt7CisrICBp ZiAoYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfcGF0aG5hbWUgPT0gTlVMTCkKKysgICAgcHJpbnRm X2ZpbHRlcmVkIChfKCJMb2NhbCAuZ2RiaW5pdCBmaWxlIHdhcyBub3QgZm91bmQuXG4iKSk7Cisr ICBlbHNlIGlmIChhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9sb2FkZWQpCisrICAgIHByaW50Zl9m aWx0ZXJlZCAoXygiTG9jYWwgLmdkYmluaXQgZmlsZSBcIiVzXCIgaGFzIGJlZW4gbG9hZGVkLlxu IiksCisrCQkgICAgIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X3BhdGhuYW1lKTsKKysgIGVsc2UK KysgICAgcHJpbnRmX2ZpbHRlcmVkIChfKCJMb2NhbCAuZ2RiaW5pdCBmaWxlIFwiJXNcIiBoYXMg bm90IGJlZW4gbG9hZGVkLlxuIiksCisrCQkgICAgIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X3Bh dGhuYW1lKTsKKyt9CisrCisgLyogUmV0dXJuIG5vbi16ZXJvIGlmIFNDUklQVF9OT1RfRk9VTkRf V0FSTklOR19QUklOVEVEIG9mIFBTUEFDRV9JTkZPIHdhcyB1bnNldAorICAgIGJlZm9yZSBjYWxs aW5nIHRoaXMgZnVuY3Rpb24uICBBbHdheXMgc2V0IFNDUklQVF9OT1RfRk9VTkRfV0FSTklOR19Q UklOVEVECisgICAgb2YgUFNQQUNFX0lORk8uICAqLworQEAgLTQ1NSw2ICs1ODcsMTMyIEBAIHNj cmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludCAoc3RydWN0IGEKKyAgIHJldHVybiByZXR2YWw7 CisgfQorIAorKy8qIFRoZSBvbmx5IHZhbGlkICJzZXQgYXV0by1sb2FkIiBhcmd1bWVudCBpcyBv ZmZ8MHxub3xkaXNhYmxlLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3NldF9hdXRvX2xvYWRfY21k IChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCisreworKyAgc3RydWN0IGNtZF9saXN0X2VsZW1l bnQgKmxpc3Q7CisrICBzaXplX3QgbGVuZ3RoOworKworKyAgLyogU2VlIHBhcnNlX2JpbmFyeV9v cGVyYXRpb24gaW4gdXNlIGJ5IHRoZSBzdWItY29tbWFuZHMuICAqLworKworKyAgbGVuZ3RoID0g YXJncyA/IHN0cmxlbiAoYXJncykgOiAwOworKworKyAgd2hpbGUgKGxlbmd0aCA+IDAgJiYgKGFy Z3NbbGVuZ3RoIC0gMV0gPT0gJyAnIHx8IGFyZ3NbbGVuZ3RoIC0gMV0gPT0gJ1x0JykpCisrICAg IGxlbmd0aC0tOworKworKyAgaWYgKGxlbmd0aCA9PSAwIHx8IChzdHJuY21wIChhcmdzLCAib2Zm IiwgbGVuZ3RoKSAhPSAwCisrCQkgICAgICAmJiBzdHJuY21wIChhcmdzLCAiMCIsIGxlbmd0aCkg IT0gMAorKwkJICAgICAgJiYgc3RybmNtcCAoYXJncywgIm5vIiwgbGVuZ3RoKSAhPSAwCisrCQkg ICAgICAmJiBzdHJuY21wIChhcmdzLCAiZGlzYWJsZSIsIGxlbmd0aCkgIT0gMCkpCisrICAgIGVy cm9yIChfKCJWYWxpZCBpcyBvbmx5IGdsb2JhbCAnc2V0IGF1dG8tbG9hZCBubyc7ICIKKysJICAg ICAib3RoZXJ3aXNlIGNoZWNrIHRoZSBhdXRvLWxvYWQgc3ViLWNvbW1hbmRzLiIpKTsKKysKKysg IGZvciAobGlzdCA9ICphdXRvX2xvYWRfc2V0X2NtZGxpc3RfZ2V0ICgpOyBsaXN0ICE9IE5VTEw7 IGxpc3QgPSBsaXN0LT5uZXh0KQorKyAgICBpZiAobGlzdC0+dmFyX3R5cGUgPT0gdmFyX2Jvb2xl YW4pCisrICAgICAgeworKwlnZGJfYXNzZXJ0IChsaXN0LT50eXBlID09IHNldF9jbWQpOworKwlk b19zZXRzaG93X2NvbW1hbmQgKGFyZ3MsIGZyb21fdHR5LCBsaXN0KTsKKysgICAgICB9CisrfQor KworKy8qIEluaXRpYWxpemUgInNldCBhdXRvLWxvYWQgIiBjb21tYW5kcyBwcmVmaXggYW5kIHJl dHVybiBpdC4gICovCisrCisrc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKioKKythdXRvX2xvYWRf c2V0X2NtZGxpc3RfZ2V0ICh2b2lkKQorK3sKKysgIHN0YXRpYyBzdHJ1Y3QgY21kX2xpc3RfZWxl bWVudCAqcmV0dmFsOworKworKyAgaWYgKHJldHZhbCA9PSBOVUxMKQorKyAgICBhZGRfcHJlZml4 X2NtZCAoImF1dG8tbG9hZCIsIGNsYXNzX21haW50ZW5hbmNlLCBzZXRfYXV0b19sb2FkX2NtZCwg XygiXAorK0F1dG8tbG9hZGluZyBzcGVjaWZpYyBzZXR0aW5ncy5cblwKKytDb25maWd1cmUgdmFy aW91cyBhdXRvLWxvYWQtc3BlY2lmaWMgdmFyaWFibGVzIHN1Y2ggYXNcblwKKythdXRvbWF0aWMg bG9hZGluZyBvZiBQeXRob24gc2NyaXB0cy4iKSwKKysJCSAgICAmcmV0dmFsLCAic2V0IGF1dG8t bG9hZCAiLAorKwkJICAgIDEvKmFsbG93LXVua25vd24qLywgJnNldGxpc3QpOworKworKyAgcmV0 dXJuICZyZXR2YWw7CisrfQorKworKy8qIENvbW1hbmQgInNob3cgYXV0by1sb2FkIiBkaXNwbGF5 cyBzdW1tYXJ5IG9mIGFsbCB0aGUgY3VycmVudAorKyAgICJzaG93IGF1dG8tbG9hZCAiIHNldHRp bmdzLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3Nob3dfYXV0b19sb2FkX2NtZCAoY2hhciAqYXJn cywgaW50IGZyb21fdHR5KQorK3sKKysgIGNtZF9zaG93X2xpc3QgKCphdXRvX2xvYWRfc2hvd19j bWRsaXN0X2dldCAoKSwgZnJvbV90dHksICIiKTsKKyt9CisrCisrLyogSW5pdGlhbGl6ZSAic2hv dyBhdXRvLWxvYWQgIiBjb21tYW5kcyBwcmVmaXggYW5kIHJldHVybiBpdC4gICovCisrCisrc3Ry dWN0IGNtZF9saXN0X2VsZW1lbnQgKioKKythdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAodm9p ZCkKKyt7CisrICBzdGF0aWMgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKnJldHZhbDsKKysKKysg IGlmIChyZXR2YWwgPT0gTlVMTCkKKysgICAgYWRkX3ByZWZpeF9jbWQgKCJhdXRvLWxvYWQiLCBj bGFzc19tYWludGVuYW5jZSwgc2hvd19hdXRvX2xvYWRfY21kLCBfKCJcCisrU2hvdyBhdXRvLWxv YWRpbmcgc3BlY2lmaWMgc2V0dGluZ3MuXG5cCisrU2hvdyBjb25maWd1cmF0aW9uIG9mIHZhcmlv dXMgYXV0by1sb2FkLXNwZWNpZmljIHZhcmlhYmxlcyBzdWNoIGFzXG5cCisrYXV0b21hdGljIGxv YWRpbmcgb2YgUHl0aG9uIHNjcmlwdHMuIiksCisrCQkgICAgJnJldHZhbCwgInNob3cgYXV0by1s b2FkICIsCisrCQkgICAgMC8qYWxsb3ctdW5rbm93biovLCAmc2hvd2xpc3QpOworKworKyAgcmV0 dXJuICZyZXR2YWw7CisrfQorKworKy8qIENvbW1hbmQgImluZm8gYXV0by1sb2FkIiBkaXNwbGF5 cyB3aGV0aGVyIHRoZSB2YXJpb3VzIGF1dG8tbG9hZCBmaWxlcyBoYXZlCisrICAgYmVlbiBsb2Fk ZWQuICBUaGlzIGlzIHJlaW1wbGVtZW50YXRpb24gb2YgY21kX3Nob3dfbGlzdCB3aGljaCBpbnNl cnRzCisrICAgbmV3bGluZXMgYXQgcHJvcGVyIHBsYWNlcy4gICovCisrCisrc3RhdGljIHZvaWQK KytpbmZvX2F1dG9fbG9hZF9jbWQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKKyt7CisrICBz dHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqbGlzdDsKKysgIHN0cnVjdCBjbGVhbnVwICppbmZvbGlz dF9jaGFpbjsKKysgIHN0cnVjdCB1aV9vdXQgKnVpb3V0ID0gY3VycmVudF91aW91dDsKKysKKysg IGluZm9saXN0X2NoYWluID0gbWFrZV9jbGVhbnVwX3VpX291dF90dXBsZV9iZWdpbl9lbmQgKHVp b3V0LCAiaW5mb2xpc3QiKTsKKysKKysgIGZvciAobGlzdCA9ICphdXRvX2xvYWRfaW5mb19jbWRs aXN0X2dldCAoKTsgbGlzdCAhPSBOVUxMOyBsaXN0ID0gbGlzdC0+bmV4dCkKKysgICAgeworKyAg ICAgIHN0cnVjdCBjbGVhbnVwICpvcHRpb25fY2hhaW4KKysJPSBtYWtlX2NsZWFudXBfdWlfb3V0 X3R1cGxlX2JlZ2luX2VuZCAodWlvdXQsICJvcHRpb24iKTsKKysKKysgICAgICBnZGJfYXNzZXJ0 ICghbGlzdC0+cHJlZml4bGlzdCk7CisrICAgICAgZ2RiX2Fzc2VydCAobGlzdC0+dHlwZSA9PSBu b3Rfc2V0X2NtZCk7CisrCisrICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJuYW1l IiwgbGlzdC0+bmFtZSk7CisrICAgICAgdWlfb3V0X3RleHQgKHVpb3V0LCAiOiAgIik7CisrICAg ICAgY21kX2Z1bmMgKGxpc3QsIGF1dG9fbG9hZF9pbmZvX3NjcmlwdHNfcGF0dGVybl9ubCwgZnJv bV90dHkpOworKworKyAgICAgIC8qIENsb3NlIHRoZSB0dXBsZS4gICovCisrICAgICAgZG9fY2xl YW51cHMgKG9wdGlvbl9jaGFpbik7CisrICAgIH0KKysKKysgIC8qIENsb3NlIHRoZSB0dXBsZS4g ICovCisrICBkb19jbGVhbnVwcyAoaW5mb2xpc3RfY2hhaW4pOworK30KKysKKysvKiBJbml0aWFs aXplICJpbmZvIGF1dG8tbG9hZCAiIGNvbW1hbmRzIHByZWZpeCBhbmQgcmV0dXJuIGl0LiAgKi8K KysKKytzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKgorK2F1dG9fbG9hZF9pbmZvX2NtZGxpc3Rf Z2V0ICh2b2lkKQorK3sKKysgIHN0YXRpYyBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqcmV0dmFs OworKworKyAgaWYgKHJldHZhbCA9PSBOVUxMKQorKyAgICBhZGRfcHJlZml4X2NtZCAoImF1dG8t bG9hZCIsIGNsYXNzX2luZm8sIGluZm9fYXV0b19sb2FkX2NtZCwgXygiXAorK1ByaW50IGN1cnJl bnQgc3RhdHVzIG9mIGF1dG8tbG9hZGVkIGZpbGVzLlxuXAorK1ByaW50IHdoZXRoZXIgdmFyaW91 cyBmaWxlcyBsaWtlIFB5dGhvbiBzY3JpcHRzIG9yIC5nZGJpbml0IGZpbGVzIGhhdmUgYmVlblxu XAorK2ZvdW5kIGFuZC9vciBsb2FkZWQuIiksCisrCQkgICAgJnJldHZhbCwgImluZm8gYXV0by1s b2FkICIsCisrCQkgICAgMC8qYWxsb3ctdW5rbm93biovLCAmaW5mb2xpc3QpOworKworKyAgcmV0 dXJuICZyZXR2YWw7CisrfQorKworIHZvaWQgX2luaXRpYWxpemVfYXV0b19sb2FkICh2b2lkKTsK KyAKKyB2b2lkCitAQCAtNDY1LDggKzcyMywzOCBAQCBfaW5pdGlhbGl6ZV9hdXRvX2xvYWQgKHZv aWQpCisgCisgICBvYnNlcnZlcl9hdHRhY2hfbmV3X29iamZpbGUgKGF1dG9fbG9hZF9uZXdfb2Jq ZmlsZSk7CisgCistICBhZGRfaW5mbyAoImF1dG8tbG9hZC1zY3JpcHRzIiwKKy0JICAgIGluZm9f YXV0b19sb2FkX3NjcmlwdHMsCistCSAgICBfKCJQcmludCB0aGUgbGlzdCBvZiBhdXRvbWF0aWNh bGx5IGxvYWRlZCBzY3JpcHRzLlxuXAorLVVzYWdlOiBpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIFtS RUdFWFBdIikpOworKyAgYWRkX3NldHNob3dfYm9vbGVhbl9jbWQgKCJnZGItc2NyaXB0cyIsIGNs YXNzX3N1cHBvcnQsCisrCQkJICAgJmF1dG9fbG9hZF9nZGJfc2NyaXB0cywgXygiXAorK0VuYWJs ZSBvciBkaXNhYmxlIGF1dG8tbG9hZGluZyBvZiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRz IHNjcmlwdHMuIiksIF8oIlwKKytTaG93IHdoZXRoZXIgYXV0by1sb2FkaW5nIG9mIGNhbm5lZCBz ZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cyBpcyBlbmFibGVkLiIpLAorKwkJCSAgIF8oIlwK KytJZiBlbmFibGVkLCBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIGFyZSBsb2FkZWQgd2hl biB0aGUgZGVidWdnZXIgcmVhZHNcblwKKythbiBleGVjdXRhYmxlIG9yIHNoYXJlZCBsaWJyYXJ5 LlxuXAorK1RoaXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGljYXRpb25zIGZvciB1bnRydXN0 ZWQgaW5mZXJpb3JzLiIpLAorKwkJCSAgIE5VTEwsIHNob3dfYXV0b19sb2FkX2dkYl9zY3JpcHRz LAorKwkJCSAgIGF1dG9fbG9hZF9zZXRfY21kbGlzdF9nZXQgKCksCisrCQkJICAgYXV0b19sb2Fk X3Nob3dfY21kbGlzdF9nZXQgKCkpOworKworKyAgYWRkX2NtZCAoImdkYi1zY3JpcHRzIiwgY2xh c3NfaW5mbywgaW5mb19hdXRvX2xvYWRfZ2RiX3NjcmlwdHMsCisrCSAgIF8oIlByaW50IHRoZSBs aXN0IG9mIGF1dG9tYXRpY2FsbHkgbG9hZGVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcy5cblwKKytV c2FnZTogaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMgW1JFR0VYUF0iKSwKKysJICAgYXV0b19s b2FkX2luZm9fY21kbGlzdF9nZXQgKCkpOworKworKyAgYWRkX3NldHNob3dfYm9vbGVhbl9jbWQg KCJsb2NhbC1nZGJpbml0IiwgY2xhc3Nfc3VwcG9ydCwKKysJCQkgICAmYXV0b19sb2FkX2xvY2Fs X2dkYmluaXQsIF8oIlwKKytFbmFibGUgb3IgZGlzYWJsZSBhdXRvLWxvYWRpbmcgb2YgLmdkYmlu aXQgc2NyaXB0IGluIGN1cnJlbnQgZGlyZWN0b3J5LiIpLCBfKCJcCisrU2hvdyB3aGV0aGVyIGF1 dG8tbG9hZGluZyAuZ2RiaW5pdCBzY3JpcHQgaW4gY3VycmVudCBkaXJlY3RvcnkgaXMgZW5hYmxl ZC4iKSwKKysJCQkgICBfKCJcCisrSWYgZW5hYmxlZCwgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21t YW5kcyBhcmUgbG9hZGVkIHdoZW4gZGVidWdnZXIgc3RhcnRzXG5cCisrZnJvbSAuZ2RiaW5pdCBm aWxlIGluIGN1cnJlbnQgZGlyZWN0b3J5LiAgU3VjaCBmaWxlcyBhcmUgZGVwcmVjYXRlZCxcblwK Kyt1c2UgYSBzY3JpcHQgYXNzb2NpYXRlZCB3aXRoIGluZmVyaW9yIGV4ZWN1dGFibGUgZmlsZSBp bnN0ZWFkLlxuXAorK1RoaXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGljYXRpb25zIGZvciB1 bnRydXN0ZWQgaW5mZXJpb3JzLiIpLAorKwkJCSAgIE5VTEwsIHNob3dfYXV0b19sb2FkX2xvY2Fs X2dkYmluaXQsCisrCQkJICAgYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCAoKSwKKysJCQkgICBh dXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAoKSk7CisrCisrICBhZGRfY21kICgibG9jYWwtZ2Ri aW5pdCIsIGNsYXNzX2luZm8sIGluZm9fYXV0b19sb2FkX2xvY2FsX2dkYmluaXQsCisrCSAgIF8o IlByaW50IHdoZXRoZXIgY3VycmVudCBkaXJlY3RvcnkgLmdkYmluaXQgZmlsZSBoYXMgYmVlbiBs b2FkZWQuXG5cCisrVXNhZ2U6IGluZm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXQiKSwKKysJICAg YXV0b19sb2FkX2luZm9fY21kbGlzdF9nZXQgKCkpOworIH0KK0luZGV4OiBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi9hdXRvLWxvYWQuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAx MjAub3JpZy9nZGIvYXV0by1sb2FkLmgJMjAxMi0wNC0xOCAwMDo0NDoyNi45NTE0Mzc1MTcgKzAy MDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuaAkyMDEyLTA0LTE4IDAw OjQ2OjQ3LjU1NjA3OTc4MCArMDIwMAorQEAgLTIyLDE1ICsyMiwzNiBAQAorIAorIHN0cnVjdCBw cm9ncmFtX3NwYWNlOworIAorLWV4dGVybiBpbnQgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZDsKKytz dHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlCisreworKyAgY29uc3QgY2hhciAqc3VmZml4OworKworKyAg dm9pZCAoKnNvdXJjZV9zY3JpcHRfZm9yX29iamZpbGUpIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwgRklMRSAqZmlsZSwKKysJCQkJICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSk7CisrfTsKKysK KytleHRlcm4gaW50IGdsb2JhbF9hdXRvX2xvYWQ7CisrCisrZXh0ZXJuIGludCBhdXRvX2xvYWRf bG9jYWxfZ2RiaW5pdDsKKytleHRlcm4gY2hhciAqYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfcGF0 aG5hbWU7CisrZXh0ZXJuIGludCBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9sb2FkZWQ7CisgCisg ZXh0ZXJuIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKgorICAgZ2V0X2F1dG9fbG9hZF9w c3BhY2VfZGF0YV9mb3JfbG9hZGluZyAoc3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSk7Cisg ZXh0ZXJuIGludCBtYXliZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZv ICpwc3BhY2VfaW5mbywKKy0JCQkgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmZ1 bGxfcGF0aCk7CisrCQkJICAgICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpmdWxsX3Bh dGgsCisrCQkJICAgICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5ndWFnZSk7Cisg ZXh0ZXJuIHZvaWQgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwKKy0JCQkJICAgICAgY29uc3QgY2hhciAqc3VmZml4KTsKKysJCQkJICAgICAgY29uc3Qg c3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2UpOworK2V4dGVybiB2b2lkIGxvYWRfYXV0 b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7CisgZXh0ZXJu IGludAorICAgc2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50IChzdHJ1Y3QgYXV0b19sb2Fk X3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbyk7CisrZXh0ZXJuIGNoYXIgYXV0b19sb2FkX2luZm9f c2NyaXB0c19wYXR0ZXJuX25sW107CisrZXh0ZXJuIHZvaWQgYXV0b19sb2FkX2luZm9fc2NyaXB0 cyAoY2hhciAqcGF0dGVybiwgaW50IGZyb21fdHR5LAorKwkJCQkgICAgY29uc3Qgc3RydWN0IHNj cmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2UpOworKworK2V4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxl bWVudCAqKmF1dG9fbG9hZF9zZXRfY21kbGlzdF9nZXQgKHZvaWQpOworK2V4dGVybiBzdHJ1Y3Qg Y21kX2xpc3RfZWxlbWVudCAqKmF1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0ICh2b2lkKTsKKytl eHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKiphdXRvX2xvYWRfaW5mb19jbWRsaXN0X2dl dCAodm9pZCk7CisgCisgI2VuZGlmIC8qIEFVVE9fTE9BRF9IICovCitJbmRleDogZ2RiLTcuNC41 MC4yMDEyMDEyMC9nZGIvbGludXgtdGhyZWFkLWRiLmMKKz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40 LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2xpbnV4LXRocmVhZC1kYi5jCTIwMTItMDEtMDQgMDk6MTc6 MDUuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbGludXgtdGhy ZWFkLWRiLmMJMjAxMi0wNC0xOCAwMDo0Njo0Ny41NTcwNzk3NzcgKzAyMDAKK0BAIC00MCw4ICs0 MCwxMCBAQAorICNpbmNsdWRlICJvYnNlcnZlci5oIgorICNpbmNsdWRlICJsaW51eC1uYXQuaCIK KyAjaW5jbHVkZSAibGludXgtcHJvY2ZzLmgiCisrI2luY2x1ZGUgImF1dG8tbG9hZC5oIgorIAor ICNpbmNsdWRlIDxzaWduYWwuaD4KKysjaW5jbHVkZSA8Y3R5cGUuaD4KKyAKKyAjaWZkZWYgSEFW RV9HTlVfTElCQ19WRVJTSU9OX0gKKyAjaW5jbHVkZSA8Z251L2xpYmMtdmVyc2lvbi5oPgorQEAg LTc1LDYgKzc3LDIxIEBACisgCisgc3RhdGljIGNoYXIgKmxpYnRocmVhZF9kYl9zZWFyY2hfcGF0 aDsKKyAKKysvKiBTZXQgdG8gbm9uLXplcm8gaWYgdGhyZWFkX2RiIGF1dG8tbG9hZGluZyBpcyBl bmFibGVkCisrICAgYnkgdGhlICJzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYiIgY29tbWFuZC4g ICovCisrc3RhdGljIGludCBhdXRvX2xvYWRfdGhyZWFkX2RiID0gMTsKKysKKysvKiAic2hvdyIg Y29tbWFuZCBmb3IgdGhlIGF1dG9fbG9hZF90aHJlYWRfZGIgY29uZmlndXJhdGlvbiB2YXJpYWJs ZS4gICovCisrCisrc3RhdGljIHZvaWQKKytzaG93X2F1dG9fbG9hZF90aHJlYWRfZGIgKHN0cnVj dCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCisrCQkJICBzdHJ1Y3QgY21kX2xpc3RfZWxl bWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCisreworKyAgZnByaW50Zl9maWx0ZXJlZCAoZmls ZSwgXygiQXV0by1sb2FkaW5nIG9mIGluZmVyaW9yIHNwZWNpZmljIGxpYnRocmVhZF9kYiAiCisr CQkJICAgICJpcyAlcy5cbiIpLAorKwkJICAgIHZhbHVlKTsKKyt9CisrCisgc3RhdGljIHZvaWQK KyBzZXRfbGlidGhyZWFkX2RiX3NlYXJjaF9wYXRoIChjaGFyICppZ25vcmVkLCBpbnQgZnJvbV90 dHksCisgCQkJICAgICAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMpCitAQCAtMTE5LDYgKzEz NiwxMCBAQCBzdHJ1Y3QgdGhyZWFkX2RiX2luZm8KKyAgIC8qIEhhbmRsZSBmcm9tIGRsb3BlbiBm b3IgbGlidGhyZWFkX2RiLnNvLiAgKi8KKyAgIHZvaWQgKmhhbmRsZTsKKyAKKysgIC8qIEFic29s dXRlIHBhdGhuYW1lIGZyb20gZ2RiX3JlYWxwYXRoIHRvIGRpc2sgZmlsZSB1c2VkIGZvciBkbG9w ZW4taW5nCisrICAgICBIQU5ETEUuICBJdCBtYXkgYmUgTlVMTCBmb3Igc3lzdGVtIGxpYnJhcnku ICAqLworKyAgY2hhciAqZmlsZW5hbWU7CisrCisgICAvKiBTdHJ1Y3R1cmUgdGhhdCBpZGVudGlm aWVzIHRoZSBjaGlsZCBwcm9jZXNzIGZvciB0aGUKKyAgICAgIDxwcm9jX3NlcnZpY2UuaD4gaW50 ZXJmYWNlLiAgKi8KKyAgIHN0cnVjdCBwc19wcm9jaGFuZGxlIHByb2NfaGFuZGxlOworQEAgLTI0 OCw2ICsyNjksOCBAQCBkZWxldGVfdGhyZWFkX2RiX2luZm8gKGludCBwaWQpCisgICBpZiAoaW5m by0+aGFuZGxlICE9IE5VTEwpCisgICAgIGRsY2xvc2UgKGluZm8tPmhhbmRsZSk7CisgCisrICB4 ZnJlZSAoaW5mby0+ZmlsZW5hbWUpOworKworICAgaWYgKGluZm9fcHJldikKKyAgICAgaW5mb19w cmV2LT5uZXh0ID0gaW5mby0+bmV4dDsKKyAgIGVsc2UKK0BAIC04MDcsNiArODMwLDEwIEBAIHRy eV90aHJlYWRfZGJfbG9hZCAoY29uc3QgY2hhciAqbGlicmFyeSkKKyAKKyAgIGluZm8gPSBhZGRf dGhyZWFkX2RiX2luZm8gKGhhbmRsZSk7CisgCisrICAvKiBEbyBub3Qgc2F2ZSBzeXN0ZW0gbGli cmFyeSBuYW1lLCB0aGF0IG9uZSBpcyBhbHdheXMgdHJ1c3RlZC4gICovCisrICBpZiAoc3RyY2hy IChsaWJyYXJ5LCAnLycpICE9IE5VTEwpCisrICAgIGluZm8tPmZpbGVuYW1lID0gZ2RiX3JlYWxw YXRoIChsaWJyYXJ5KTsKKysKKyAgIGlmICh0cnlfdGhyZWFkX2RiX2xvYWRfMSAoaW5mbykpCisg ICAgIHJldHVybiAxOworIAorQEAgLTg1Niw2ICs4ODMsOSBAQCB0cnlfdGhyZWFkX2RiX2xvYWRf ZnJvbV9wZGlyICh2b2lkKQorIHsKKyAgIHN0cnVjdCBvYmpmaWxlICpvYmo7CisgCisrICBpZiAo IWF1dG9fbG9hZF90aHJlYWRfZGIpCisrICAgIHJldHVybiAwOworKworICAgQUxMX09CSkZJTEVT IChvYmopCisgICAgIGlmIChsaWJwdGhyZWFkX25hbWVfcCAob2JqLT5uYW1lKSkKKyAgICAgICB7 CitAQCAtODk1LDYgKzkyNSw5IEBAIHRyeV90aHJlYWRfZGJfbG9hZF9mcm9tX2RpciAoY29uc3Qg Y2hhcgorICAgY2hhciAqcGF0aDsKKyAgIGludCByZXN1bHQ7CisgCisrICBpZiAoIWF1dG9fbG9h ZF90aHJlYWRfZGIpCisrICAgIHJldHVybiAwOworKworICAgcGF0aCA9IHhtYWxsb2MgKGRpcl9s ZW4gKyAxICsgc3RybGVuIChMSUJUSFJFQURfREJfU08pICsgMSk7CisgICBjbGVhbnVwID0gbWFr ZV9jbGVhbnVwICh4ZnJlZSwgcGF0aCk7CisgCitAQCAtMTgwMiw2ICsxODM1LDE1MCBAQCB0aHJl YWRfZGJfcmVzdW1lIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzCisgICBiZW5lYXRoLT50b19yZXN1 bWUgKGJlbmVhdGgsIHB0aWQsIHN0ZXAsIHNpZ25vKTsKKyB9CisgCisrLyogcXNvcnQgaGVscGVy IGZ1bmN0aW9uIGZvciBpbmZvX2F1dG9fbG9hZF9saWJ0aHJlYWRfZGIsIHNvcnQgdGhlCisrICAg dGhyZWFkX2RiX2luZm8gcG9pbnRlcnMgcHJpbWFyaWx5IGJ5IHRoZWlyIEZJTEVOQU1FIGFuZCBz ZWNvbmRhcmlseSBieSB0aGVpcgorKyAgIFBJRCwgYm90aCBpbiBhc2NlbmRpbmcgb3JkZXIuICAq LworKworK3N0YXRpYyBpbnQKKytpbmZvX2F1dG9fbG9hZF9saWJ0aHJlYWRfZGJfY29tcGFyZSAo Y29uc3Qgdm9pZCAqYXAsIGNvbnN0IHZvaWQgKmJwKQorK3sKKysgIHN0cnVjdCB0aHJlYWRfZGJf aW5mbyAqYSA9ICooc3RydWN0IHRocmVhZF9kYl9pbmZvICoqKSBhcDsKKysgIHN0cnVjdCB0aHJl YWRfZGJfaW5mbyAqYiA9ICooc3RydWN0IHRocmVhZF9kYl9pbmZvICoqKSBicDsKKysgIGludCBy ZXR2YWw7CisrCisrICByZXR2YWwgPSBzdHJjbXAgKGEtPmZpbGVuYW1lLCBiLT5maWxlbmFtZSk7 CisrICBpZiAocmV0dmFsKQorKyAgICByZXR1cm4gcmV0dmFsOworKworKyAgcmV0dXJuIChhLT5w aWQgPiBiLT5waWQpIC0gKGEtPnBpZCAtIGItPnBpZCk7CisrfQorKworKy8qIEltcGxlbWVudCAn aW5mbyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiJy4gICovCisrCisrc3RhdGljIHZvaWQKKytpbmZv X2F1dG9fbG9hZF9saWJ0aHJlYWRfZGIgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKKyt7Cisr ICBzdHJ1Y3QgdWlfb3V0ICp1aW91dCA9IGN1cnJlbnRfdWlvdXQ7CisrICBjb25zdCBjaGFyICpj cyA9IGFyZ3MgPyBhcmdzIDogIiI7CisrICBzdHJ1Y3QgdGhyZWFkX2RiX2luZm8gKmluZm8sICoq YXJyYXk7CisrICB1bnNpZ25lZCBpbmZvX2NvdW50LCB1bmlxdWVfZmlsZW5hbWVzOworKyAgc2l6 ZV90IG1heF9maWxlbmFtZV9sZW4sIG1heF9waWRzX2xlbiwgcGlkc19sZW47CisrICBzdHJ1Y3Qg Y2xlYW51cCAqYmFja190bzsKKysgIGNoYXIgKnBpZHM7CisrICBpbnQgaTsKKysKKysgIHdoaWxl IChpc3NwYWNlICgqY3MpKQorKyAgICBjcysrOworKyAgaWYgKCpjcykKKysgICAgZXJyb3IgKF8o IidpbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGInIGRvZXMgbm90IGFjY2VwdCBhbnkgcGFyYW1l dGVycyIpKTsKKysKKysgIGluZm9fY291bnQgPSAwOworKyAgZm9yIChpbmZvID0gdGhyZWFkX2Ri X2xpc3Q7IGluZm87IGluZm8gPSBpbmZvLT5uZXh0KQorKyAgICBpZiAoaW5mby0+ZmlsZW5hbWUg IT0gTlVMTCkKKysgICAgICBpbmZvX2NvdW50Kys7CisrCisrICBhcnJheSA9IHhtYWxsb2MgKHNp emVvZiAoKmFycmF5KSAqIGluZm9fY291bnQpOworKyAgYmFja190byA9IG1ha2VfY2xlYW51cCAo eGZyZWUsIGFycmF5KTsKKysKKysgIGluZm9fY291bnQgPSAwOworKyAgZm9yIChpbmZvID0gdGhy ZWFkX2RiX2xpc3Q7IGluZm87IGluZm8gPSBpbmZvLT5uZXh0KQorKyAgICBpZiAoaW5mby0+Zmls ZW5hbWUgIT0gTlVMTCkKKysgICAgICBhcnJheVtpbmZvX2NvdW50KytdID0gaW5mbzsKKysKKysg IC8qIFNvcnQgQVJSQVkgYnkgZmlsZW5hbWVzIGFuZCBQSURzLiAgKi8KKysKKysgIHFzb3J0IChh cnJheSwgaW5mb19jb3VudCwgc2l6ZW9mICgqYXJyYXkpLAorKwkgaW5mb19hdXRvX2xvYWRfbGli dGhyZWFkX2RiX2NvbXBhcmUpOworKworKyAgLyogQ2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgdW5p cXVlIGZpbGVuYW1lcyAocm93cykgYW5kIHRoZSBtYXhpbXVtIHN0cmluZworKyAgICAgbGVuZ3Ro IG9mIFBJRHMgbGlzdCBmb3IgdGhlIHVuaXF1ZSBmaWxlbmFtZXMgKGNvbHVtbnMpLiAgKi8KKysK KysgIHVuaXF1ZV9maWxlbmFtZXMgPSAwOworKyAgbWF4X2ZpbGVuYW1lX2xlbiA9IDA7CisrICBt YXhfcGlkc19sZW4gPSAwOworKyAgcGlkc19sZW4gPSAwOworKyAgZm9yIChpID0gMDsgaSA8IGlu Zm9fY291bnQ7IGkrKykKKysgICAgeworKyAgICAgIGludCBwaWQgPSBhcnJheVtpXS0+cGlkOwor KyAgICAgIHNpemVfdCB0aGlzX3BpZF9sZW47CisrCisrICAgICAgZm9yICh0aGlzX3BpZF9sZW4g PSAwOyBwaWQgIT0gMDsgcGlkIC89IDEwKQorKwl0aGlzX3BpZF9sZW4rKzsKKysKKysgICAgICBp ZiAoaSA9PSAwIHx8IHN0cmNtcCAoYXJyYXlbaSAtIDFdLT5maWxlbmFtZSwgYXJyYXlbaV0tPmZp bGVuYW1lKSAhPSAwKQorKwl7CisrCSAgdW5pcXVlX2ZpbGVuYW1lcysrOworKwkgIG1heF9maWxl bmFtZV9sZW4gPSBtYXggKG1heF9maWxlbmFtZV9sZW4sCisrCQkJCSAgc3RybGVuIChhcnJheVtp XS0+ZmlsZW5hbWUpKTsKKysKKysJICBpZiAoaSA+IDApCisrCSAgICB7CisrCSAgICAgIHBpZHNf bGVuIC09IHN0cmxlbiAoIiwgIik7CisrCSAgICAgIG1heF9waWRzX2xlbiA9IG1heCAobWF4X3Bp ZHNfbGVuLCBwaWRzX2xlbik7CisrCSAgICB9CisrCSAgcGlkc19sZW4gPSAwOworKwl9CisrICAg ICAgcGlkc19sZW4gKz0gdGhpc19waWRfbGVuICsgc3RybGVuICgiLCAiKTsKKysgICAgfQorKyAg aWYgKGkpCisrICAgIHsKKysgICAgICBwaWRzX2xlbiAtPSBzdHJsZW4gKCIsICIpOworKyAgICAg IG1heF9waWRzX2xlbiA9IG1heCAobWF4X3BpZHNfbGVuLCBwaWRzX2xlbik7CisrICAgIH0KKysK KysgIC8qIFRhYmxlIGhlYWRlciBzaGlmdGVkIHJpZ2h0IGJ5IHByZWNlZGluZyAibGlidGhyZWFk LWRiOiAgIiB3b3VsZCBub3QgbWF0Y2gKKysgICAgIGl0cyBjb2x1bW5zLiAgKi8KKysgIGlmIChp bmZvX2NvdW50ID4gMCAmJiBhcmdzID09IGF1dG9fbG9hZF9pbmZvX3NjcmlwdHNfcGF0dGVybl9u bCkKKysgICAgdWlfb3V0X3RleHQgKHVpb3V0LCAiXG4iKTsKKysKKysgIG1ha2VfY2xlYW51cF91 aV9vdXRfdGFibGVfYmVnaW5fZW5kICh1aW91dCwgMiwgdW5pcXVlX2ZpbGVuYW1lcywKKysJCQkJ ICAgICAgICJMaW51eFRocmVhZERiVGFibGUiKTsKKysKKysgIHVpX291dF90YWJsZV9oZWFkZXIg KHVpb3V0LCBtYXhfZmlsZW5hbWVfbGVuLCB1aV9sZWZ0LCAiZmlsZW5hbWUiLAorKwkJICAgICAg ICJGaWxlbmFtZSIpOworKyAgdWlfb3V0X3RhYmxlX2hlYWRlciAodWlvdXQsIHBpZHNfbGVuLCB1 aV9sZWZ0LCAiUElEcyIsICJQaWRzIik7CisrICB1aV9vdXRfdGFibGVfYm9keSAodWlvdXQpOwor KworKyAgcGlkcyA9IHhtYWxsb2MgKG1heF9waWRzX2xlbiArIDEpOworKyAgbWFrZV9jbGVhbnVw ICh4ZnJlZSwgcGlkcyk7CisrCisrICAvKiBOb3RlIEkgaXMgaW5jcmVtZW50ZWQgaW5zaWRlIHRo ZSBjeWNsZSwgbm90IGF0IGl0cyBlbmQuICAqLworKyAgZm9yIChpID0gMDsgaSA8IGluZm9fY291 bnQ7KQorKyAgICB7CisrICAgICAgc3RydWN0IGNsZWFudXAgKmNoYWluID0gbWFrZV9jbGVhbnVw X3VpX291dF90dXBsZV9iZWdpbl9lbmQgKHVpb3V0LCBOVUxMKTsKKysgICAgICBjaGFyICpwaWRz X2VuZDsKKysKKysgICAgICBpbmZvID0gYXJyYXlbaV07CisrICAgICAgdWlfb3V0X2ZpZWxkX3N0 cmluZyAodWlvdXQsICJmaWxlbmFtZSIsIGluZm8tPmZpbGVuYW1lKTsKKysgICAgICBwaWRzX2Vu ZCA9IHBpZHM7CisrCisrICAgICAgd2hpbGUgKGkgPCBpbmZvX2NvdW50ICYmIHN0cmNtcCAoaW5m by0+ZmlsZW5hbWUsIGFycmF5W2ldLT5maWxlbmFtZSkgPT0gMCkKKysJeworKwkgIGlmIChwaWRz X2VuZCAhPSBwaWRzKQorKwkgICAgeworKwkgICAgICAqcGlkc19lbmQrKyA9ICcsJzsKKysJICAg ICAgKnBpZHNfZW5kKysgPSAnICc7CisrCSAgICB9CisrCSAgcGlkc19lbmQgKz0geHNucHJpbnRm IChwaWRzX2VuZCwgJnBpZHNbbWF4X3BpZHNfbGVuICsgMV0gLSBwaWRzX2VuZCwKKysJCQkJICIl dSIsIGFycmF5W2ldLT5waWQpOworKwkgIGdkYl9hc3NlcnQgKHBpZHNfZW5kIDwgJnBpZHNbbWF4 X3BpZHNfbGVuICsgMV0pOworKworKwkgIGkrKzsKKysJfQorKyAgICAgICpwaWRzX2VuZCA9ICdc MCc7CisrCisrICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJwaWRzIiwgcGlkcyk7 CisrCisrICAgICAgdWlfb3V0X3RleHQgKHVpb3V0LCAiXG4iKTsKKysgICAgICBkb19jbGVhbnVw cyAoY2hhaW4pOworKyAgICB9CisrCisrICBkb19jbGVhbnVwcyAoYmFja190byk7CisrCisrICBp ZiAoaW5mb19jb3VudCA9PSAwKQorKyAgICB1aV9vdXRfbWVzc2FnZSAodWlvdXQsIDAsIF8oIk5v IGF1dG8tbG9hZGVkIGxpYnRocmVhZC1kYi5cbiIpKTsKKyt9CisrCisgc3RhdGljIHZvaWQKKyBp bml0X3RocmVhZF9kYl9vcHMgKHZvaWQpCisgeworQEAgLTE4NjMsNiArMjA0MCwyMyBAQCBXaGVu IG5vbi16ZXJvLCBsaWJ0aHJlYWQtZGIgZGVidWdnaW5nIGlzCisgCQkJICAgIHNob3dfbGlidGhy ZWFkX2RiX2RlYnVnLAorIAkJCSAgICAmc2V0ZGVidWdsaXN0LCAmc2hvd2RlYnVnbGlzdCk7Cisg CisrICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoImxpYnRocmVhZC1kYiIsIGNsYXNzX3N1cHBv cnQsCisrCQkJICAgJmF1dG9fbG9hZF90aHJlYWRfZGIsIF8oIlwKKytFbmFibGUgb3IgZGlzYWJs ZSBhdXRvLWxvYWRpbmcgb2YgaW5mZXJpb3Igc3BlY2lmaWMgbGlidGhyZWFkX2RiLiIpLCBfKCJc CisrU2hvdyB3aGV0aGVyIGF1dG8tbG9hZGluZyBpbmZlcmlvciBzcGVjaWZpYyBsaWJ0aHJlYWRf ZGIgaXMgZW5hYmxlZC4iKSwgXygiXAorK0lmIGVuYWJsZWQsIGxpYnRocmVhZF9kYiB3aWxsIGJl IHNlYXJjaGVkIGluICdzZXQgbGlidGhyZWFkLWRiLXNlYXJjaC1wYXRoJ1xuXAorK2xvY2F0aW9u cyB0byBsb2FkIGxpYnRocmVhZF9kYiBjb21wYXRpYmxlIHdpdGggdGhlIGluZmVyaW9yLlxuXAor K1N0YW5kYXJkIHN5c3RlbSBsaWJ0aHJlYWRfZGIgc3RpbGwgZ2V0cyBsb2FkZWQgZXZlbiB3aXRo IHRoaXMgb3B0aW9uIG9mZi5cblwKKytUaGlzIG9wdGlvbnMgaGFzIHNlY3VyaXR5IGltcGxpY2F0 aW9ucyBmb3IgdW50cnVzdGVkIGluZmVyaW9ycy4iKSwKKysJCQkgICBOVUxMLCBzaG93X2F1dG9f bG9hZF90aHJlYWRfZGIsCisrCQkJICAgYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCAoKSwKKysJ CQkgICBhdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAoKSk7CisrCisrICBhZGRfY21kICgibGli dGhyZWFkLWRiIiwgY2xhc3NfaW5mbywgaW5mb19hdXRvX2xvYWRfbGlidGhyZWFkX2RiLAorKwkg ICBfKCJQcmludCB0aGUgbGlzdCBvZiBsb2FkZWQgaW5mZXJpb3Igc3BlY2lmaWMgbGlidGhyZWFk X2RiLlxuXAorK1VzYWdlOiBpbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIiKSwKKysJICAgYXV0 b19sb2FkX2luZm9fY21kbGlzdF9nZXQgKCkpOworKworICAgLyogQWRkIG91cnNlbHZlcyB0byBv YmpmaWxlIGV2ZW50IGNoYWluLiAgKi8KKyAgIG9ic2VydmVyX2F0dGFjaF9uZXdfb2JqZmlsZSAo dGhyZWFkX2RiX25ld19vYmpmaWxlKTsKKyAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9tYWluLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL21h aW4uYwkyMDEyLTA0LTE4IDAwOjQ0OjI2Ljk1NzQzNzUwMyArMDIwMAorKysrIGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjU1NzA3OTc3NyArMDIwMAor QEAgLTk0NSw4ICs5NDUsOCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQorICAgLyogU2tp cCBhdXRvLWxvYWRpbmcgc2VjdGlvbi1zcGVjaWZpZWQgc2NyaXB0cyB1bnRpbCB3ZSd2ZSBzb3Vy Y2VkCisgICAgICBsb2NhbF9nZGJpbml0ICh3aGljaCBpcyBvZnRlbiB1c2VkIHRvIGF1Z21lbnQg dGhlIHNvdXJjZSBzZWFyY2gKKyAgICAgIHBhdGgpLiAgKi8KKy0gIHNhdmVfYXV0b19sb2FkID0g Z2RicHlfZ2xvYmFsX2F1dG9fbG9hZDsKKy0gIGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQgPSAwOwor KyAgc2F2ZV9hdXRvX2xvYWQgPSBnbG9iYWxfYXV0b19sb2FkOworKyAgZ2xvYmFsX2F1dG9fbG9h ZCA9IDA7CisgCisgICBpZiAoZXhlY2FyZyAhPSBOVUxMCisgICAgICAgJiYgc3ltYXJnICE9IE5V TEwKK0BAIC0xMDIyLDE0ICsxMDIyLDI0IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCisg CisgICAvKiBSZWFkIHRoZSAuZ2RiaW5pdCBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSwg KmlmKiBpdCBpc24ndAorICAgICAgdGhlIHNhbWUgYXMgdGhlICRIT01FLy5nZGJpbml0IGZpbGUg KGl0IHNob3VsZCBleGlzdCwgYWxzbykuICAqLworLSAgaWYgKGxvY2FsX2dkYmluaXQgJiYgIWlu aGliaXRfZ2RiaW5pdCkKKy0gICAgY2F0Y2hfY29tbWFuZF9lcnJvcnMgKHNvdXJjZV9zY3JpcHQs IGxvY2FsX2dkYmluaXQsIDAsIFJFVFVSTl9NQVNLX0FMTCk7CisrICBpZiAobG9jYWxfZ2RiaW5p dCkKKysgICAgeworKyAgICAgIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X3BhdGhuYW1lID0gZ2Ri X3JlYWxwYXRoIChsb2NhbF9nZGJpbml0KTsKKysKKysgICAgICBpZiAoIWluaGliaXRfZ2RiaW5p dCAmJiBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCkKKysJeworKwkgIGF1dG9fbG9hZF9sb2NhbF9n ZGJpbml0X2xvYWRlZCA9IDE7CisrCisrCSAgY2F0Y2hfY29tbWFuZF9lcnJvcnMgKHNvdXJjZV9z Y3JpcHQsIGxvY2FsX2dkYmluaXQsIDAsCisrCQkJCVJFVFVSTl9NQVNLX0FMTCk7CisrCX0KKysg ICAgfQorIAorICAgLyogTm93IHRoYXQgYWxsIC5nZGJpbml0J3MgaGF2ZSBiZWVuIHJlYWQgYW5k IGFsbCAtZCBvcHRpb25zIGhhdmUgYmVlbgorICAgICAgcHJvY2Vzc2VkLCB3ZSBjYW4gcmVhZCBh bnkgc2NyaXB0cyBtZW50aW9uZWQgaW4gU1lNQVJHLgorICAgICAgV2Ugd2FpdCB1bnRpbCBub3cg YmVjYXVzZSBpdCBpcyBjb21tb24gdG8gYWRkIHRvIHRoZSBzb3VyY2Ugc2VhcmNoCisgICAgICBw YXRoIGluIGxvY2FsX2dkYmluaXQuICAqLworLSAgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCA9IHNh dmVfYXV0b19sb2FkOworKyAgZ2xvYmFsX2F1dG9fbG9hZCA9IHNhdmVfYXV0b19sb2FkOworICAg QUxMX09CSkZJTEVTIChvYmpmaWxlKQorICAgICBsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmls ZSAob2JqZmlsZSk7CisgCitAQCAtMTE5Niw3ICsxMjA2LDcgQEAgQXQgc3RhcnR1cCwgR0RCIHJl YWRzIHRoZSBmb2xsb3dpbmcgaW5pdAorICIpLCBob21lX2dkYmluaXQpOworICAgaWYgKGxvY2Fs X2dkYmluaXQpCisgICAgIGZwcmludGZfdW5maWx0ZXJlZCAoc3RyZWFtLCBfKCJcCistICAgKiBs b2NhbCBpbml0IGZpbGU6IC4vJXNcblwKKysgICAqIGxvY2FsIGluaXQgZmlsZSAoc2VlIGFsc28g J3NldCBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCcpOiAuLyVzXG5cCisgIiksIGxvY2FsX2dkYmlu aXQpOworICAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXG5cCisgRm9yIG1vcmUgaW5mb3JtYXRpb24s IHR5cGUgXCJoZWxwXCIgZnJvbSB3aXRoaW4gR0RCLCBvciBjb25zdWx0IHRoZVxuXAorSW5kZXg6 IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbworPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0t IGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDQtMTgg MDA6NDQ6MjYuOTI4NDM3NTc3ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9j L2dkYi50ZXhpbmZvCTIwMTItMDQtMTggMDA6NDY6NDcuNTU4MDc5Nzc0ICswMjAwCitAQCAtMTAz NCw2ICsxMDM0LDcgQEAgWW91IGNhbiBydW4gQHZhbHVle0dEQk59IGluIHZhcmlvdXMgYWx0ZQor IGJhdGNoIG1vZGUgb3IgcXVpZXQgbW9kZS4KKyAKKyBAdGFibGUgQGNvZGUKKytAYW5jaG9yey1u eH0KKyBAaXRlbSAtbngKKyBAaXRlbXggLW4KKyBAY2luZGV4IEBjb2Rley0tbnh9CitAQCAtMTI2 NSw2ICsxMjY2LDcgQEAgSGVyZSdzIHRoZSBkZXNjcmlwdGlvbiBvZiB3aGF0IEB2YWx1ZXtHRAor IFNldHMgdXAgdGhlIGNvbW1hbmQgaW50ZXJwcmV0ZXIgYXMgc3BlY2lmaWVkIGJ5IHRoZSBjb21t YW5kIGxpbmUKKyAoQHB4cmVme01vZGUgT3B0aW9ucywgaW50ZXJwcmV0ZXJ9KS4KKyAKKytAYW5j aG9ye09wdGlvbiAtaW5pdC1ldmFsLWNvbW1hbmR9CisgQGl0ZW0KKyBFeGVjdXRlcyBjb21tYW5k cyBhbmQgY29tbWFuZCBmaWxlcyBzcGVjaWZpZWQgYnkgdGhlIEBzYW1wey1pZXh9IGFuZAorIEBz YW1wey1peH0gb3B0aW9ucyBpbiB0aGVpciBzcGVjaWZpZWQgb3JkZXIuICBVc3VhbGx5IHlvdSBz aG91bGQgdXNlIHRoZQorQEAgLTEyNzksNiArMTI4MSw3IEBAIHVzZWQgd2hlbiBidWlsZGluZyBA dmFsdWV7R0RCTn07IEBweHJlZnsKKyAgLFN5c3RlbS13aWRlIGNvbmZpZ3VyYXRpb24gYW5kIHNl dHRpbmdzfSkgYW5kIGV4ZWN1dGVzIGFsbCB0aGUgY29tbWFuZHMgaW4KKyB0aGF0IGZpbGUuCisg CisrQGFuY2hvcntIb21lIERpcmVjdG9yeSBJbml0IEZpbGV9CisgQGl0ZW0KKyBSZWFkcyB0aGUg aW5pdCBmaWxlIChpZiBhbnkpIGluIHlvdXIgaG9tZSBkaXJlY3RvcnlAZm9vdG5vdGV7T24KKyBE T1MvV2luZG93cyBzeXN0ZW1zLCB0aGUgaG9tZSBkaXJlY3RvcnkgaXMgdGhlIG9uZSBwb2ludGVk IHRvIGJ5IHRoZQorQEAgLTEyODgsOSArMTI5MSwxMiBAQCB0aGF0IGZpbGUuCisgQGl0ZW0KKyBQ cm9jZXNzZXMgY29tbWFuZCBsaW5lIG9wdGlvbnMgYW5kIG9wZXJhbmRzLgorIAorK0BhbmNob3J7 SW5pdCBGaWxlIGluIHRoZSBDdXJyZW50IERpcmVjdG9yeSBkdXJpbmcgU3RhcnR1cH0KKyBAaXRl bQorIFJlYWRzIGFuZCBleGVjdXRlcyB0aGUgY29tbWFuZHMgZnJvbSBpbml0IGZpbGUgKGlmIGFu eSkgaW4gdGhlIGN1cnJlbnQKKy13b3JraW5nIGRpcmVjdG9yeS4gIFRoaXMgaXMgb25seSBkb25l IGlmIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBpcworK3dvcmtpbmcgZGlyZWN0b3J5IGFzIGxvbmcg YXMgQHNhbXB7c2V0IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fSBpcyBzZXQgdG8KKytAc2FtcHtv bn0gKEBweHJlZntJbml0IEZpbGUgaW4gdGhlIEN1cnJlbnQgRGlyZWN0b3J5fSkuCisrVGhpcyBp cyBvbmx5IGRvbmUgaWYgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGlzCisgZGlmZmVyZW50IGZyb20g eW91ciBob21lIGRpcmVjdG9yeS4gIFRodXMsIHlvdSBjYW4gaGF2ZSBtb3JlIHRoYW4gb25lCisg aW5pdCBmaWxlLCBvbmUgZ2VuZXJpYyBpbiB5b3VyIGhvbWUgZGlyZWN0b3J5LCBhbmQgYW5vdGhl ciwgc3BlY2lmaWMKKyB0byB0aGUgcHJvZ3JhbSB5b3UgYXJlIGRlYnVnZ2luZywgaW4gdGhlIGRp cmVjdG9yeSB3aGVyZSB5b3UgaW52b2tlCitAQCAtMTMwNiw3ICsxMzEyLDcgQEAgSWYgeW91IHdp c2ggdG8gZGlzYWJsZSB0aGUgYXV0by1sb2FkaW5nCisgeW91IG11c3QgZG8gc29tZXRoaW5nIGxp a2UgdGhlIGZvbGxvd2luZzoKKyAKKyBAc21hbGxleGFtcGxlCistJCBnZGIgLWlleCAic2V0IGF1 dG8tbG9hZC1zY3JpcHRzIG9mZiIgbXlwcm9ncmFtCisrJCBnZGIgLWlleCAic2V0IGF1dG8tbG9h ZCBweXRob24tc2NyaXB0cyBvZmYiIG15cHJvZ3JhbQorIEBlbmQgc21hbGxleGFtcGxlCisgCisg T3B0aW9uIEBzYW1wey1leH0gZG9lcyBub3Qgd29yayBiZWNhdXNlIHRoZSBhdXRvLWxvYWRpbmcg aXMgdGhlbiB0dXJuZWQKK0BAIC0yODkxLDYgKzI4OTcsNyBAQCBwcm9ncmFtcyB3aXRoIG11bHRp cGxlIHRocmVhZHMuCisgQHhyZWZ7U2V0IFdhdGNocG9pbnRzLCxTZXR0aW5nIFdhdGNocG9pbnRz fSwgZm9yIGluZm9ybWF0aW9uIGFib3V0Cisgd2F0Y2hwb2ludHMgaW4gcHJvZ3JhbXMgd2l0aCBt dWx0aXBsZSB0aHJlYWRzLgorIAorK0BhbmNob3J7c2V0IGxpYnRocmVhZC1kYi1zZWFyY2gtcGF0 aH0KKyBAdGFibGUgQGNvZGUKKyBAa2luZGV4IHNldCBsaWJ0aHJlYWQtZGItc2VhcmNoLXBhdGgK KyBAY2luZGV4IHNlYXJjaCBwYXRoIGZvciBAY29kZXtsaWJ0aHJlYWRfZGJ9CitAQCAtMjkwNSwx MSArMjkxMiwxNSBAQCBtYWNyby4KKyBPbiBAc2N7Z251fS9MaW51eCBhbmQgU29sYXJpcyBzeXN0 ZW1zLCBAdmFsdWV7R0RCTn0gdXNlcyBhIGBgaGVscGVyJycKKyBAY29kZXtsaWJ0aHJlYWRfZGJ9 IGxpYnJhcnkgdG8gb2J0YWluIGluZm9ybWF0aW9uIGFib3V0IHRocmVhZHMgaW4gdGhlCisgaW5m ZXJpb3IgcHJvY2Vzcy4gIEB2YWx1ZXtHREJOfSB3aWxsIHVzZSBAc2FtcHtsaWJ0aHJlYWQtZGIt c2VhcmNoLXBhdGh9CistdG8gZmluZCBAY29kZXtsaWJ0aHJlYWRfZGJ9LgorK3RvIGZpbmQgQGNv ZGV7bGlidGhyZWFkX2RifS4gIEB2YWx1ZXtHREJOfSBhbHNvIGNvbnN1bHRzIGZpcnN0IGlmIGlu ZmVyaW9yCisrc3BlY2lmaWMgdGhyZWFkIGRlYnVnZ2luZyBsaWJyYXJ5IGxvYWRpbmcgaXMgZW5h YmxlZAorK2J5IEBzYW1we3NldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRifSAoQHB4cmVme2xpYnRo cmVhZF9kYi5zby4xIGZpbGV9KS4KKyAKKyBBIHNwZWNpYWwgZW50cnkgQHNhbXB7JHNkaXJ9IGZv ciBAc2FtcHtsaWJ0aHJlYWQtZGItc2VhcmNoLXBhdGh9CisgcmVmZXJzIHRvIHRoZSBkZWZhdWx0 IHN5c3RlbSBkaXJlY3RvcmllcyB0aGF0IGFyZQorLW5vcm1hbGx5IHNlYXJjaGVkIGZvciBsb2Fk aW5nIHNoYXJlZCBsaWJyYXJpZXMuCisrbm9ybWFsbHkgc2VhcmNoZWQgZm9yIGxvYWRpbmcgc2hh cmVkIGxpYnJhcmllcy4gIFRoZSBAc2FtcHskc2Rpcn0gZW50cnkKKytpcyB0aGUgb25seSBraW5k IG5vdCBuZWVkaW5nIHRvIGJlIGVuYWJsZWQgYnkgQHNhbXB7c2V0IGF1dG8tbG9hZCBsaWJ0aHJl YWQtZGJ9CisrKEBweHJlZntsaWJ0aHJlYWRfZGIuc28uMSBmaWxlfSkuCisgCisgQSBzcGVjaWFs IGVudHJ5IEBzYW1weyRwZGlyfSBmb3IgQHNhbXB7bGlidGhyZWFkLWRiLXNlYXJjaC1wYXRofQor IHJlZmVycyB0byB0aGUgZGlyZWN0b3J5IGZyb20gd2hpY2ggQGNvZGV7bGlicHRocmVhZH0KK0BA IC0yMDMyMCw2ICsyMDMzMSw3IEBAIGRlc2NyaWJlZCBoZXJlLgorICogU2NyZWVuIFNpemU6OiAg ICAgICAgICAgICAgICAgU2NyZWVuIHNpemUKKyAqIE51bWJlcnM6OiAgICAgICAgICAgICAgICAg ICAgIE51bWJlcnMKKyAqIEFCSTo6ICAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyaW5n IHRoZSBjdXJyZW50IEFCSQorKyogQXV0by1sb2FkaW5nOjogICAgICAgICAgICAgICAgQXV0b21h dGljYWxseSBsb2FkaW5nIGFzc29jaWF0ZWQgZmlsZXMKKyAqIE1lc3NhZ2VzL1dhcm5pbmdzOjog ICAgICAgICAgIE9wdGlvbmFsIHdhcm5pbmdzIGFuZCBtZXNzYWdlcworICogRGVidWdnaW5nIE91 dHB1dDo6ICAgICAgICAgICAgT3B0aW9uYWwgbWVzc2FnZXMgYWJvdXQgaW50ZXJuYWwgaGFwcGVu aW5ncworICogT3RoZXIgTWlzYyBTZXR0aW5nczo6ICAgICAgICAgT3RoZXIgTWlzY2VsbGFuZW91 cyBTZXR0aW5ncworQEAgLTIwNzQ1LDYgKzIwNzU3LDIyNyBAQCBXaXRoIG5vIGFyZ3VtZW50LCBz aG93IHRoZSBsaXN0IG9mIHN1cHBvCisgU2V0IHRoZSBjdXJyZW50IENAdHsrK30gQUJJIHRvIEB2 YXJ7YWJpfSwgb3IgcmV0dXJuIHRvIGF1dG9tYXRpYyBkZXRlY3Rpb24uCisgQGVuZCB0YWJsZQor IAorK0Bub2RlIEF1dG8tbG9hZGluZworK0BzZWN0aW9uIEF1dG9tYXRpY2FsbHkgbG9hZGluZyBh c3NvY2lhdGVkIGZpbGVzCisrQGNpbmRleCBhdXRvLWxvYWRpbmcKKysKKytAdmFsdWV7R0RCTn0g c29tZXRpbWVzIHJlYWRzIGZpbGVzIHdpdGggY29tbWFuZHMgYW5kIHNldHRpbmdzIGF1dG9tYXRp Y2FsbHksCisrd2l0aG91dCBiZWluZyBleHBsaWNpdGx5IHRvbGQgc28gYnkgdGhlIHVzZXIuICBX ZSBjYWxsIHRoaXMgZmVhdHVyZQorK0BkZm57YXV0by1sb2FkaW5nfS4gIFdoaWxlIGF1dG8tbG9h ZGluZyBpcyB1c2VmdWwgZm9yIGF1dG9tYXRpY2FsbHkgYWRhcHRpbmcKKytAdmFsdWV7R0RCTn0g dG8gdGhlIG5lZWRzIG9mIHlvdXIgcHJvamVjdCwgaXQgY2FuIHNvbWV0aW1lcyBwcm9kdWNlIHVu ZXhwZWN0ZWQKKytyZXN1bHRzIG9yIGludHJvZHVjZSBzZWN1cml0eSByaXNrcyAoZS5nLiwgaWYg dGhlIGZpbGUgY29tZXMgZnJvbSB1bnRydXN0ZWQKKytzb3VyY2VzKS4KKysKKytGb3IgdGhlc2Ug cmVhc29ucywgQHZhbHVle0dEQk59IGluY2x1ZGVzIGNvbW1hbmRzIGFuZCBvcHRpb25zIHRvIGxl dCB5b3UKKytjb250cm9sIHdoZW4gdG8gYXV0by1sb2FkIGZpbGVzIGFuZCB3aGljaCBmaWxlcyBz aG91bGQgYmUgYXV0by1sb2FkZWQuCisrCisrQHRhYmxlIEBjb2RlCisrQGFuY2hvcntzZXQgYXV0 by1sb2FkIG9mZn0KKytAa2luZGV4IHNldCBhdXRvLWxvYWQgb2ZmCisrQGl0ZW0gc2V0IGF1dG8t bG9hZCBvZmYKKytHbG9iYWxseSBkaXNhYmxlIGxvYWRpbmcgb2YgYWxsIGF1dG8tbG9hZGVkIGZp bGVzLgorK1lvdSBtYXkgd2FudCB0byB1c2UgdGhpcyBjb21tYW5kIHdpdGggdGhlIEBzYW1wey1p ZXh9IG9wdGlvbgorKyhAcHhyZWZ7T3B0aW9uIC1pbml0LWV2YWwtY29tbWFuZH0pIHN1Y2ggYXM6 CisrQHNtYWxsZXhhbXBsZQorKyQgQGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBvZmYiIHVu dHJ1c3RlZC1leGVjdXRhYmxlIGNvcmVmaWxlfQorK0BlbmQgc21hbGxleGFtcGxlCisrCisrQmUg YXdhcmUgdGhhdCBzeXN0ZW0gaW5pdCBmaWxlIChAcHhyZWZ7U3lzdGVtLXdpZGUgY29uZmlndXJh dGlvbn0pCisrYW5kIGluaXQgZmlsZXMgZnJvbSB5b3VyIGhvbWUgZGlyZWN0b3J5IChAcHhyZWZ7 SG9tZSBEaXJlY3RvcnkgSW5pdCBGaWxlfSkKKytzdGlsbCBnZXQgcmVhZCAoYXMgdGhleSBjb21l IGZyb20gZ2VuZXJhbGx5IHRydXN0ZWQgZGlyZWN0b3JpZXMpLgorK1RvIHByZXZlbnQgQHZhbHVl e0dEQk59IGZyb20gYXV0by1sb2FkaW5nIGV2ZW4gdGhvc2UgaW5pdCBmaWxlcywgdXNlIHRoZQor K0BvcHRpb257LW54fSBvcHRpb24gKEBweHJlZntNb2RlIE9wdGlvbnN9KSwgaW4gYWRkaXRpb24g dG8KKytAY29kZXtzZXQgYXV0by1sb2FkIG5vfS4KKysKKytAYW5jaG9ye3Nob3cgYXV0by1sb2Fk fQorK0BraW5kZXggc2hvdyBhdXRvLWxvYWQKKytAaXRlbSBzaG93IGF1dG8tbG9hZAorK1Nob3cg d2hldGhlciBhdXRvLWxvYWRpbmcgb2YgZWFjaCBzcGVjaWZpYyBAc2FtcHthdXRvLWxvYWR9IGZp bGUocykgaXMgZW5hYmxlZAorK29yIGRpc2FibGVkLgorKworK0BzbWFsbGV4YW1wbGUKKysoZ2Ri KSBzaG93IGF1dG8tbG9hZAorK2dkYi1zY3JpcHRzOiAgQXV0by1sb2FkaW5nIG9mIGNhbm5lZCBz ZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cyBpcyBvbi4KKytsaWJ0aHJlYWQtZGI6ICBBdXRv LWxvYWRpbmcgb2YgaW5mZXJpb3Igc3BlY2lmaWMgbGlidGhyZWFkX2RiIGlzIG9uLgorK2xvY2Fs LWdkYmluaXQ6ICBBdXRvLWxvYWRpbmcgb2YgLmdkYmluaXQgc2NyaXB0IGZyb20gY3VycmVudCBk aXJlY3RvcnkgaXMgb24uCisrcHl0aG9uLXNjcmlwdHM6ICBBdXRvLWxvYWRpbmcgb2YgUHl0aG9u IHNjcmlwdHMgaXMgb24uCisrQGVuZCBzbWFsbGV4YW1wbGUKKysKKytAYW5jaG9ye2luZm8gYXV0 by1sb2FkfQorK0BraW5kZXggaW5mbyBhdXRvLWxvYWQKKytAaXRlbSBpbmZvIGF1dG8tbG9hZAor K1ByaW50IHdoZXRoZXIgZWFjaCBzcGVjaWZpYyBAc2FtcHthdXRvLWxvYWR9IGZpbGUocykgaGF2 ZSBiZWVuIGF1dG8tbG9hZGVkIG9yCisrbm90LgorKworK0BzbWFsbGV4YW1wbGUKKysoZ2RiKSBp bmZvIGF1dG8tbG9hZAorK2dkYi1zY3JpcHRzOgorK0xvYWRlZCAgU2NyaXB0CisrWWVzICAgICAv aG9tZS91c2VyL2dkYi9nZGItZ2RiLmdkYgorK2xpYnRocmVhZC1kYjogIE5vIGF1dG8tbG9hZGVk IGxpYnRocmVhZC1kYi4KKytsb2NhbC1nZGJpbml0OiAgTG9jYWwgLmdkYmluaXQgZmlsZSAiL2hv bWUvdXNlci9nZGIvLmdkYmluaXQiIGhhcyBiZWVuIGxvYWRlZC4KKytweXRob24tc2NyaXB0czoK KytMb2FkZWQgIFNjcmlwdAorK1llcyAgICAgL2hvbWUvdXNlci9nZGIvZ2RiLWdkYi5weQorK0Bl bmQgc21hbGxleGFtcGxlCisrQGVuZCB0YWJsZQorKworK1RoZXNlIGFyZSB2YXJpb3VzIGtpbmRz IG9mIGZpbGVzIEB2YWx1ZXtHREJOfSBjYW4gYXV0b21hdGljYWxseSBsb2FkOgorKworK0BpdGVt aXplIEBidWxsZXQKKytAaXRlbQorK0B4cmVme29iamZpbGUtZ2RiLnB5IGZpbGV9LCBjb250cm9s bGVkIGJ5IEByZWZ7c2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0c30uCisrQGl0ZW0KKytAeHJl ZntvYmpmaWxlLWdkYi5nZGIgZmlsZX0sIGNvbnRyb2xsZWQgYnkgQHJlZntzZXQgYXV0by1sb2Fk IGdkYi1zY3JpcHRzfS4KKytAaXRlbQorK0B4cmVme2RvdGRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rp b259LAorK2NvbnRyb2xsZWQgYnkgQHJlZntzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzfS4K KytAaXRlbQorK0B4cmVme0luaXQgRmlsZSBpbiB0aGUgQ3VycmVudCBEaXJlY3Rvcnl9LAorK2Nv bnRyb2xsZWQgYnkgQHJlZntzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9LgorK0BpdGVtCisr QHhyZWZ7bGlidGhyZWFkX2RiLnNvLjEgZmlsZX0sIGNvbnRyb2xsZWQgYnkgQHJlZntzZXQgYXV0 by1sb2FkIGxpYnRocmVhZC1kYn0uCisrQGVuZCBpdGVtaXplCisrCisrVGhlc2UgYXJlIEB2YWx1 ZXtHREJOfSBjb250cm9sIGNvbW1hbmRzIGZvciB0aGUgYXV0by1sb2FkaW5nOgorKworK0BtdWx0 aXRhYmxlIEBjb2x1bW5mcmFjdGlvbnMgLjUgLjUKKytAaXRlbSBAeHJlZntzZXQgYXV0by1sb2Fk IG9mZn0uCisrQHRhYiBEaXNhYmxlIGF1dG8tbG9hZGluZyBnbG9iYWxseS4KKytAaXRlbSBAeHJl ZntzaG93IGF1dG8tbG9hZH0uCisrQHRhYiBTaG93IHNldHRpbmcgb2YgYWxsIGtpbmRzIG9mIGZp bGVzLgorK0BpdGVtIEB4cmVme2luZm8gYXV0by1sb2FkfS4KKytAdGFiIFNob3cgc3RhdGUgb2Yg YWxsIGtpbmRzIG9mIGZpbGVzLgorK0BpdGVtIEB4cmVme3NldCBhdXRvLWxvYWQgZ2RiLXNjcmlw dHN9LgorK0B0YWIgQ29udHJvbCBmb3IgQHZhbHVle0dEQk59IGNvbW1hbmQgc2NyaXB0cy4KKytA aXRlbSBAeHJlZntzaG93IGF1dG8tbG9hZCBnZGItc2NyaXB0c30uCisrQHRhYiBTaG93IHNldHRp bmcgb2YgQHZhbHVle0dEQk59IGNvbW1hbmQgc2NyaXB0cy4KKytAaXRlbSBAeHJlZntpbmZvIGF1 dG8tbG9hZCBnZGItc2NyaXB0c30uCisrQHRhYiBTaG93IHN0YXRlIG9mIEB2YWx1ZXtHREJOfSBj b21tYW5kIHNjcmlwdHMuCisrQGl0ZW0gQHhyZWZ7c2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0 c30uCisrQHRhYiBDb250cm9sIGZvciBAdmFsdWV7R0RCTn0gUHl0aG9uIHNjcmlwdHMuCisrQGl0 ZW0gQHhyZWZ7c2hvdyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHN9LgorK0B0YWIgU2hvdyBzZXR0 aW5nIG9mIEB2YWx1ZXtHREJOfSBQeXRob24gc2NyaXB0cy4KKytAaXRlbSBAeHJlZntpbmZvIGF1 dG8tbG9hZCBweXRob24tc2NyaXB0c30uCisrQHRhYiBTaG93IHN0YXRlIG9mIEB2YWx1ZXtHREJO fSBQeXRob24gc2NyaXB0cy4KKytAaXRlbSBAeHJlZntzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmlu aXR9LgorK0B0YWIgQ29udHJvbCBmb3IgaW5pdCBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9y eS4KKytAaXRlbSBAeHJlZntzaG93IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fS4KKytAdGFiIFNo b3cgc2V0dGluZyBvZiBpbml0IGZpbGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgorK0BpdGVt IEB4cmVme2luZm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9LgorK0B0YWIgU2hvdyBzdGF0ZSBv ZiBpbml0IGZpbGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgorK0BpdGVtIEB4cmVme3NldCBh dXRvLWxvYWQgbGlidGhyZWFkLWRifS4KKytAdGFiIENvbnRyb2wgZm9yIHRocmVhZCBkZWJ1Z2dp bmcgbGlicmFyeS4KKytAaXRlbSBAeHJlZntzaG93IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9Lgor K0B0YWIgU2hvdyBzZXR0aW5nIG9mIHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFyeS4KKytAaXRlbSBA eHJlZntpbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9LgorK0B0YWIgU2hvdyBzdGF0ZSBvZiB0 aHJlYWQgZGVidWdnaW5nIGxpYnJhcnkuCisrQGVuZCBtdWx0aXRhYmxlCisrCisrQG1lbnUKKysq IEluaXQgRmlsZSBpbiB0aGUgQ3VycmVudCBEaXJlY3Rvcnk6OiBAc2FtcHtzZXQvc2hvdy9pbmZv IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fQorKyogbGlidGhyZWFkX2RiLnNvLjEgZmlsZTo6ICAg ICAgICAgICAgIEBzYW1we3NldC9zaG93L2luZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYn0KKysq IG9iamZpbGUtZ2RiLmdkYiBmaWxlOjogICAgICAgICAgICAgICBAc2FtcHtzZXQvc2hvdy9pbmZv IGF1dG8tbG9hZCBnZGItc2NyaXB0fQorK0B4cmVme1B5dGhvbiBBdXRvLWxvYWRpbmd9LgorK0Bl bmQgbWVudQorKworK0Bub2RlIEluaXQgRmlsZSBpbiB0aGUgQ3VycmVudCBEaXJlY3RvcnkKKytA c3Vic2VjdGlvbiBBdXRvbWF0aWNhbGx5IGxvYWRpbmcgaW5pdCBmaWxlIGluIHRoZSBjdXJyZW50 IGRpcmVjdG9yeQorK0BjaW5kZXggYXV0by1sb2FkaW5nIGluaXQgZmlsZSBpbiB0aGUgY3VycmVu dCBkaXJlY3RvcnkKKysKKytCeSBkZWZhdWx0LCBAdmFsdWV7R0RCTn0gcmVhZHMgYW5kIGV4ZWN1 dGVzIHRoZSBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzCisrZnJvbSBpbml0IGZpbGUgKGlm IGFueSkgaW4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnksCisrc2VlIEByZWZ7SW5pdCBG aWxlIGluIHRoZSBDdXJyZW50IERpcmVjdG9yeSBkdXJpbmcgU3RhcnR1cH0uCisrCisrQHRhYmxl IEBjb2RlCisrQGFuY2hvcntzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9CisrQGtpbmRleCBz ZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXQKKytAaXRlbSBzZXQgYXV0by1sb2FkIGxvY2FsLWdk YmluaXQgW29ufG9mZl0KKytFbmFibGUgb3IgZGlzYWJsZSB0aGUgYXV0by1sb2FkaW5nIG9mIGNh bm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMKKysoQHB4cmVme1NlcXVlbmNlc30pIGZvdW5kIGlu IGluaXQgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCisrCisrQGFuY2hvcntzaG93IGF1 dG8tbG9hZCBsb2NhbC1nZGJpbml0fQorK0BraW5kZXggc2hvdyBhdXRvLWxvYWQgbG9jYWwtZ2Ri aW5pdAorK0BpdGVtIHNob3cgYXV0by1sb2FkIGxvY2FsLWdkYmluaXQKKytTaG93IHdoZXRoZXIg YXV0by1sb2FkaW5nIG9mIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgZnJvbSBpbml0IGZp bGUgaW4gdGhlCisrY3VycmVudCBkaXJlY3RvcnkgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC4KKysK KytAYW5jaG9ye2luZm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9CisrQGtpbmRleCBpbmZvIGF1 dG8tbG9hZCBsb2NhbC1nZGJpbml0CisrQGl0ZW0gaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5p dAorK1ByaW50IHdoZXRoZXIgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBmcm9tIGluaXQg ZmlsZSBpbiB0aGUKKytjdXJyZW50IGRpcmVjdG9yeSBoYXZlIGJlZW4gYXV0by1sb2FkZWQuCisr QGVuZCB0YWJsZQorKworK0Bub2RlIGxpYnRocmVhZF9kYi5zby4xIGZpbGUKKytAc3Vic2VjdGlv biBBdXRvbWF0aWNhbGx5IGxvYWRpbmcgdGhyZWFkIGRlYnVnZ2luZyBsaWJyYXJ5CisrQGNpbmRl eCBhdXRvLWxvYWRpbmcgbGlidGhyZWFkX2RiLnNvLjEKKysKKytUaGlzIGZlYXR1cmUgaXMgY3Vy cmVudGx5IHByZXNlbnQgb25seSBvbiBAc2N7Z251fS9MaW51eCBuYXRpdmUgaG9zdHMuCisrCisr QHZhbHVle0dEQk59IHJlYWRzIGluIHNvbWUgY2FzZXMgdGhyZWFkIGRlYnVnZ2luZyBsaWJyYXJ5 IGZyb20gcGxhY2VzIHNwZWNpZmljCisrdG8gdGhlIGluZmVyaW9yIChAcHhyZWZ7c2V0IGxpYnRo cmVhZC1kYi1zZWFyY2gtcGF0aH0pLgorKworK1RoZSBzcGVjaWFsIEBzYW1we2xpYnRocmVhZC1k Yi1zZWFyY2gtcGF0aH0gZW50cnkgQHNhbXB7JHNkaXJ9IGlzIHByb2Nlc3NlZAorK3dpdGhvdXQg Y2hlY2tpbmcgdGhpcyBAc2FtcHtzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYn0gc3dpdGNoIGFz IHN5c3RlbQorK2xpYnJhcmllcyBoYXZlIHRvIGJlIHRydXN0ZWQgaW4gZ2VuZXJhbC4gIEluIGFs bCBvdGhlciBjYXNlcyBvZgorK0BzYW1we2xpYnRocmVhZC1kYi1zZWFyY2gtcGF0aH0gZW50cmll cyBAdmFsdWV7R0RCTn0gY2hlY2tzIGZpcnN0IGlmIEBzYW1we3NldAorK2F1dG8tbG9hZCBsaWJ0 aHJlYWQtZGJ9IGlzIGVuYWJsZWQgYmVmb3JlIHRyeWluZyB0byBvcGVuIHN1Y2ggdGhyZWFkIGRl YnVnZ2luZworK2xpYnJhcnkuCisrCisrQHRhYmxlIEBjb2RlCisrQGFuY2hvcntzZXQgYXV0by1s b2FkIGxpYnRocmVhZC1kYn0KKytAa2luZGV4IHNldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRiCisr QGl0ZW0gc2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIgW29ufG9mZl0KKytFbmFibGUgb3IgZGlz YWJsZSB0aGUgYXV0by1sb2FkaW5nIG9mIGluZmVyaW9yIHNwZWNpZmljIHRocmVhZCBkZWJ1Z2dp bmcgbGlicmFyeS4KKysKKytAYW5jaG9ye3Nob3cgYXV0by1sb2FkIGxpYnRocmVhZC1kYn0KKytA a2luZGV4IHNob3cgYXV0by1sb2FkIGxpYnRocmVhZC1kYgorK0BpdGVtIHNob3cgYXV0by1sb2Fk IGxpYnRocmVhZC1kYgorK1Nob3cgd2hldGhlciBhdXRvLWxvYWRpbmcgb2YgaW5mZXJpb3Igc3Bl Y2lmaWMgdGhyZWFkIGRlYnVnZ2luZyBsaWJyYXJ5IGlzCisrZW5hYmxlZCBvciBkaXNhYmxlZC4K KysKKytAYW5jaG9ye2luZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYn0KKytAa2luZGV4IGluZm8g YXV0by1sb2FkIGxpYnRocmVhZC1kYgorK0BpdGVtIGluZm8gYXV0by1sb2FkIGxpYnRocmVhZC1k YgorK1ByaW50IHRoZSBsaXN0IG9mIGFsbCBsb2FkZWQgaW5mZXJpb3Igc3BlY2lmaWMgdGhyZWFk IGRlYnVnZ2luZyBsaWJyYXJpZXMgYW5kCisrZm9yIGVhY2ggc3VjaCBsaWJyYXJ5IHByaW50IGxp c3Qgb2YgaW5mZXJpb3IgQHZhcntwaWR9cyB1c2luZyBpdC4KKytAZW5kIHRhYmxlCisrCisrQG5v ZGUgb2JqZmlsZS1nZGIuZ2RiIGZpbGUKKytAc3Vic2VjdGlvbiBUaGUgQGZpbGV7QHZhcntvYmpm aWxlfS1nZGIuZ2RifSBmaWxlCisrQGNpbmRleCBhdXRvLWxvYWRpbmcgQGZpbGV7QHZhcntvYmpm aWxlfS1nZGIuZ2RifQorKworK0B2YWx1ZXtHREJOfSB0cmllcyB0byBsb2FkIGFuIEBmaWxle0B2 YXJ7b2JqZmlsZX0tZ2RiLmdkYn0gZmlsZSBjb250YWluaW5nCisrY2FubmVkIHNlcXVlbmNlcyBv ZiBjb21tYW5kcyAoQHB4cmVme1NlcXVlbmNlc30pLCBhcyBsb25nIGFzIEBzYW1we3NldAorK2F1 dG8tbG9hZCBnZGItc2NyaXB0c30gaXMgc2V0IHRvIEBzYW1we29ufS4KKysKKytGb3IgbW9yZSBi YWNrZ3JvdW5kIHJlZmVyIHRvIHRoZSBzaW1pbGFyIFB5dGhvbiBzY3JpcHRzIGF1dG8tbG9hZGlu ZworK2Rlc2NyaXB0aW9uIChAcHhyZWZ7b2JqZmlsZS1nZGIucHkgZmlsZX0pLgorKworK0B0YWJs ZSBAY29kZQorK0BhbmNob3J7c2V0IGF1dG8tbG9hZCBnZGItc2NyaXB0c30KKytAa2luZGV4IHNl dCBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMKKytAaXRlbSBzZXQgYXV0by1sb2FkIGdkYi1zY3JpcHRz IFtvbnxvZmZdCisrRW5hYmxlIG9yIGRpc2FibGUgdGhlIGF1dG8tbG9hZGluZyBvZiBjYW5uZWQg c2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNjcmlwdHMuCisrCisrQGFuY2hvcntzaG93IGF1dG8tbG9h ZCBnZGItc2NyaXB0c30KKytAa2luZGV4IHNob3cgYXV0by1sb2FkIGdkYi1zY3JpcHRzCisrQGl0 ZW0gc2hvdyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMKKytTaG93IHdoZXRoZXIgYXV0by1sb2FkaW5n IG9mIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cyBpcyBlbmFibGVkIG9yCisr ZGlzYWJsZWQuCisrCisrQGFuY2hvcntpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0c30KKytAa2lu ZGV4IGluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzCisrQGNpbmRleCBwcmludCBsaXN0IG9mIGF1 dG8tbG9hZGVkIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cworK0BpdGVtIGlu Zm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzIFtAdmFye3JlZ2V4cH1dCisrUHJpbnQgdGhlIGxpc3Qg b2YgYWxsIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cyB0aGF0IEB2YWx1ZXtH REJOfQorK2F1dG8tbG9hZGVkLgorK0BlbmQgdGFibGUKKysKKytJZiBAdmFye3JlZ2V4cH0gaXMg c3VwcGxpZWQgb25seSBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNjcmlwdHMgd2l0aAor K21hdGNoaW5nIG5hbWVzIGFyZSBwcmludGVkLgorKworIEBub2RlIE1lc3NhZ2VzL1dhcm5pbmdz CisgQHNlY3Rpb24gT3B0aW9uYWwgV2FybmluZ3MgYW5kIE1lc3NhZ2VzCisgCitAQCAtMjE2MTYs NyArMjE4NDksNyBAQCBhdXRvbWF0aWNhbGx5IGltcG9ydGVkIHdoZW4gQHZhbHVle0dEQk59Cisg QG1lbnUKKyAqIFB5dGhvbiBDb21tYW5kczo6ICAgICAgICAgICAgIEFjY2Vzc2luZyBQeXRob24g ZnJvbSBAdmFsdWV7R0RCTn0uCisgKiBQeXRob24gQVBJOjogICAgICAgICAgICAgICAgICBBY2Nl c3NpbmcgQHZhbHVle0dEQk59IGZyb20gUHl0aG9uLgorLSogQXV0by1sb2FkaW5nOjogICAgICAg ICAgICAgICAgQXV0b21hdGljYWxseSBsb2FkaW5nIFB5dGhvbiBjb2RlLgorKyogUHl0aG9uIEF1 dG8tbG9hZGluZzo6ICAgICAgICAgQXV0b21hdGljYWxseSBsb2FkaW5nIFB5dGhvbiBjb2RlLgor ICogUHl0aG9uIG1vZHVsZXM6OiAgICAgICAgICAgICAgUHl0aG9uIG1vZHVsZXMgcHJvdmlkZWQg YnkgQHZhbHVle0dEQk59LgorIEBlbmQgbWVudQorIAorQEAgLTIyNzk5LDcgKzIzMDMyLDcgQEAg VGhpcyBwcmFjdGljZSB3aWxsIGVuYWJsZSBAdmFsdWV7R0RCTn0gdAorIHlvdXIgcHJldHR5LXBy aW50ZXJzIGF0IHRoZSBzYW1lIHRpbWUsIGJlY2F1c2UgdGhleSB3aWxsIGhhdmUKKyBkaWZmZXJl bnQgbmFtZXMuCisgCistWW91IHNob3VsZCB3cml0ZSBhdXRvLWxvYWRlZCBjb2RlIChAcHhyZWZ7 QXV0by1sb2FkaW5nfSkgc3VjaCB0aGF0IGl0CisrWW91IHNob3VsZCB3cml0ZSBhdXRvLWxvYWRl ZCBjb2RlIChAcHhyZWZ7UHl0aG9uIEF1dG8tbG9hZGluZ30pIHN1Y2ggdGhhdCBpdAorIGNhbiBi ZSBldmFsdWF0ZWQgbXVsdGlwbGUgdGltZXMgd2l0aG91dCBjaGFuZ2luZyBpdHMgbWVhbmluZy4g IEFuCisgaWRlYWwgYXV0by1sb2FkIGZpbGUgd2lsbCBjb25zaXN0IHNvbGVseSBvZiBAY29kZXtp bXBvcnR9cyBvZiB5b3VyCisgcHJpbnRlciBtb2R1bGVzLCBmb2xsb3dlZCBieSBhIGNhbGwgdG8g YSByZWdpc3RlciBwcmV0dHktcHJpbnRlcnMgd2l0aAorQEAgLTIzNzYwLDcgKzIzOTkzLDcgQEAg VGhlIGZvbGxvd2luZyBvYmpmaWxlLXJlbGF0ZWQgZnVuY3Rpb25zCisgCisgQGZpbmRleCBnZGIu Y3VycmVudF9vYmpmaWxlCisgQGRlZnVuIGdkYi5jdXJyZW50X29iamZpbGUgKCkKKy1XaGVuIGF1 dG8tbG9hZGluZyBhIFB5dGhvbiBzY3JpcHQgKEBweHJlZntBdXRvLWxvYWRpbmd9KSwgQHZhbHVl e0dEQk59CisrV2hlbiBhdXRvLWxvYWRpbmcgYSBQeXRob24gc2NyaXB0IChAcHhyZWZ7UHl0aG9u IEF1dG8tbG9hZGluZ30pLCBAdmFsdWV7R0RCTn0KKyBzZXRzIHRoZSBgYGN1cnJlbnQgb2JqZmls ZScnIHRvIHRoZSBjb3JyZXNwb25kaW5nIG9iamZpbGUuICBUaGlzCisgZnVuY3Rpb24gcmV0dXJu cyB0aGUgY3VycmVudCBvYmpmaWxlLiAgSWYgdGhlcmUgaXMgbm8gY3VycmVudCBvYmpmaWxlLAor IHRoaXMgZnVuY3Rpb24gcmV0dXJucyBAY29kZXtOb25lfS4KK0BAIC0yNDY3MSw5ICsyNDkwNCw5 IEBAIHJlc29sdmUgdGhpcyB0byB0aGUgbGF6eSBzdHJpbmcncyBjaGFyYWMKKyB3cml0YWJsZS4K KyBAZW5kIGRlZnZhcgorIAorLUBub2RlIEF1dG8tbG9hZGluZworLUBzdWJzZWN0aW9uIEF1dG8t bG9hZGluZworLUBjaW5kZXggYXV0by1sb2FkaW5nLCBQeXRob24KKytAbm9kZSBQeXRob24gQXV0 by1sb2FkaW5nCisrQHN1YnNlY3Rpb24gUHl0aG9uIEF1dG8tbG9hZGluZworK0BjaW5kZXggUHl0 aG9uIGF1dG8tbG9hZGluZworIAorIFdoZW4gYSBuZXcgb2JqZWN0IGZpbGUgaXMgcmVhZCAoZm9y IGV4YW1wbGUsIGR1ZSB0byB0aGUgQGNvZGV7ZmlsZX0KKyBjb21tYW5kLCBvciBiZWNhdXNlIHRo ZSBpbmZlcmlvciBoYXMgbG9hZGVkIGEgc2hhcmVkIGxpYnJhcnkpLAorQEAgLTI0NjkzLDMyICsy NDkyNiwzNSBAQCBBdXRvLWxvYWRpbmcgY2FuIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQsCisgYW5k IHRoZSBsaXN0IG9mIGF1dG8tbG9hZGVkIHNjcmlwdHMgY2FuIGJlIHByaW50ZWQuCisgCisgQHRh YmxlIEBjb2RlCistQGtpbmRleCBzZXQgYXV0by1sb2FkLXNjcmlwdHMKKy1AaXRlbSBzZXQgYXV0 by1sb2FkLXNjcmlwdHMgW3llc3xub10KKytAYW5jaG9ye3NldCBhdXRvLWxvYWQgcHl0aG9uLXNj cmlwdHN9CisrQGtpbmRleCBzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzCisrQGl0ZW0gc2V0 IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyBbb258b2ZmXQorIEVuYWJsZSBvciBkaXNhYmxlIHRo ZSBhdXRvLWxvYWRpbmcgb2YgUHl0aG9uIHNjcmlwdHMuCisgCistQGtpbmRleCBzaG93IGF1dG8t bG9hZC1zY3JpcHRzCistQGl0ZW0gc2hvdyBhdXRvLWxvYWQtc2NyaXB0cworK0BhbmNob3J7c2hv dyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHN9CisrQGtpbmRleCBzaG93IGF1dG8tbG9hZCBweXRo b24tc2NyaXB0cworK0BpdGVtIHNob3cgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzCisgU2hvdyB3 aGV0aGVyIGF1dG8tbG9hZGluZyBvZiBQeXRob24gc2NyaXB0cyBpcyBlbmFibGVkIG9yIGRpc2Fi bGVkLgorIAorLUBraW5kZXggaW5mbyBhdXRvLWxvYWQtc2NyaXB0cworLUBjaW5kZXggcHJpbnQg bGlzdCBvZiBhdXRvLWxvYWRlZCBzY3JpcHRzCistQGl0ZW0gaW5mbyBhdXRvLWxvYWQtc2NyaXB0 cyBbQHZhcntyZWdleHB9XQorLVByaW50IHRoZSBsaXN0IG9mIGFsbCBzY3JpcHRzIHRoYXQgQHZh bHVle0dEQk59IGF1dG8tbG9hZGVkLgorK0BhbmNob3J7aW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNj cmlwdHN9CisrQGtpbmRleCBpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cworK0BjaW5kZXgg cHJpbnQgbGlzdCBvZiBhdXRvLWxvYWRlZCBQeXRob24gc2NyaXB0cworK0BpdGVtIGluZm8gYXV0 by1sb2FkIHB5dGhvbi1zY3JpcHRzIFtAdmFye3JlZ2V4cH1dCisrUHJpbnQgdGhlIGxpc3Qgb2Yg YWxsIFB5dGhvbiBzY3JpcHRzIHRoYXQgQHZhbHVle0dEQk59IGF1dG8tbG9hZGVkLgorIAorLUFs c28gcHJpbnRlZCBpcyB0aGUgbGlzdCBvZiBzY3JpcHRzIHRoYXQgd2VyZSBtZW50aW9uZWQgaW4K KytBbHNvIHByaW50ZWQgaXMgdGhlIGxpc3Qgb2YgUHl0aG9uIHNjcmlwdHMgdGhhdCB3ZXJlIG1l bnRpb25lZCBpbgorIHRoZSBAY29kZXsuZGVidWdfZ2RiX3NjcmlwdHN9IHNlY3Rpb24gYW5kIHdl cmUgbm90IGZvdW5kCisgKEBweHJlZntkb3RkZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9ufSkuCisg VGhpcyBpcyB1c2VmdWwgYmVjYXVzZSB0aGVpciBuYW1lcyBhcmUgbm90IHByaW50ZWQgd2hlbiBA dmFsdWV7R0RCTn0KKyB0cmllcyB0byBsb2FkIHRoZW0gYW5kIGZhaWxzLiAgVGhlcmUgbWF5IGJl IG1hbnkgb2YgdGhlbSwgYW5kIHByaW50aW5nCisgYW4gZXJyb3IgbWVzc2FnZSBmb3IgZWFjaCBv bmUgaXMgcHJvYmxlbWF0aWMuCisgCistSWYgQHZhcntyZWdleHB9IGlzIHN1cHBsaWVkIG9ubHkg c2NyaXB0cyB3aXRoIG1hdGNoaW5nIG5hbWVzIGFyZSBwcmludGVkLgorK0lmIEB2YXJ7cmVnZXhw fSBpcyBzdXBwbGllZCBvbmx5IFB5dGhvbiBzY3JpcHRzIHdpdGggbWF0Y2hpbmcgbmFtZXMgYXJl IHByaW50ZWQuCisgCisgRXhhbXBsZToKKyAKKyBAc21hbGxleGFtcGxlCistKGdkYikgaW5mbyBh dXRvLWxvYWQtc2NyaXB0cworKyhnZGIpIGluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzCisg TG9hZGVkICBTY3JpcHQKKyBZZXMgICAgIHB5LXNlY3Rpb24tc2NyaXB0LnB5CisgICAgICAgICBm dWxsIG5hbWU6IC90bXAvcHktc2VjdGlvbi1zY3JpcHQucHkKK0luZGV4OiBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMKKz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40 LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAw OjQ0OjI2Ljk1ODQzNzUwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhv bi9weS1hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjU1ODA3OTc3NCArMDIwMAorQEAg LTMxLDI5ICszMSw1NiBAQAorIAorICNpbmNsdWRlICJweXRob24taW50ZXJuYWwuaCIKKyAKKy0v KiBOT1RFOiBJdCdzIHRyaXZpYWwgdG8gYWxzbyBzdXBwb3J0IGF1dG8tbG9hZGluZyBub3JtYWwg Z2RiIHNjcmlwdHMuCistICAgVGhlcmUgaGFzIHlldCB0byBiZSBhIG5lZWQgc28gaXQncyBub3Qg aW1wbGVtZW50ZWQuICAqLworLQorIC8qIFRoZSBzdWZmaXggb2YgcGVyLW9iamZpbGUgc2NyaXB0 cyB0byBhdXRvLWxvYWQuCisgICAgRS5nLiBXaGVuIHRoZSBwcm9ncmFtIGxvYWRzIGxpYmZvby5z bywgbG9vayBmb3IgbGliZm9vLWdkYi5weS4gICovCisgI2RlZmluZSBHREJQWV9BVVRPX0ZJTEVf TkFNRSAiLWdkYi5weSIKKyAKKy0vKiBUaGUgc2VjdGlvbiB0byBsb29rIGZvciBzY3JpcHRzIChp biBmaWxlIGZvcm1hdHMgdGhhdCBzdXBwb3J0IHNlY3Rpb25zKS4KKysvKiBUaGUgc2VjdGlvbiB0 byBsb29rIGZvciBQeXRob24gYXV0by1sb2FkZWQgc2NyaXB0cyAoaW4gZmlsZSBmb3JtYXRzIHRo YXQKKysgICBzdXBwb3J0IHNlY3Rpb25zKS4KKyAgICBFYWNoIGVudHJ5IGluIHRoaXMgc2VjdGlv biBpcyBhIGJ5dGUgb2YgdmFsdWUgMSwgYW5kIHRoZW4gdGhlIG51bC10ZXJtaW5hdGVkCisgICAg bmFtZSBvZiB0aGUgc2NyaXB0LiAgVGhlIHNjcmlwdCBuYW1lIG1heSBpbmNsdWRlIGEgZGlyZWN0 b3J5LgorICAgIFRoZSBsZWFkaW5nIGJ5dGUgaXMgdG8gYWxsb3cgdXB3YXJkIGNvbXBhdGlibGUg ZXh0ZW5zaW9ucy4gICovCisgI2RlZmluZSBHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSAiLmRlYnVn X2dkYl9zY3JpcHRzIgorIAorLS8qIFVzZXItc2V0dGFibGUgb3B0aW9uIHRvIGVuYWJsZS9kaXNh YmxlIGF1dG8tbG9hZGluZzoKKy0gICBzZXQgYXV0by1sb2FkLXNjcmlwdHMgb258b2ZmCistICAg VGhpcyBpcyB0cnVlIGlmIHdlIHNob3VsZCBhdXRvLWxvYWQgYXNzb2NpYXRlZCBzY3JpcHRzIHdo ZW4gYW4gb2JqZmlsZQorLSAgIGlzIG9wZW5lZCwgZmFsc2Ugb3RoZXJ3aXNlLgorLSAgIEF0IHRo ZSBtb21lbnQsIHRoaXMgb25seSBhZmZlY3RzIHB5dGhvbiBzY3JpcHRzLCBidXQgdGhlcmUncyBu byByZWFzb24KKy0gICBvbmUgY291bGRuJ3QgYWxzbyBoYXZlIG90aGVyIGtpbmRzIG9mIGF1dG8t bG9hZGVkIHNjcmlwdHMsIGFuZCB0aGVyZSdzCistICAgbm8gcmVhc29uIHRvIGhhdmUgdGhlbSBl YWNoIGNvbnRyb2xsZWQgYnkgYSBzZXBhcmF0ZSBmbGFnLgorLSAgIFNvIHdlIGVsaWRlICJweXRo b24iIGZyb20gdGhlIG5hbWUgaGVyZSBhbmQgaW4gdGhlIG9wdGlvbi4KKy0gICBUaGUgZmFjdCB0 aGF0IGl0IGxpdmVzIGhlcmUgaXMganVzdCBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuICAqLwor LXN0YXRpYyBpbnQgYXV0b19sb2FkX3NjcmlwdHMgPSAxOworKy8qIFVzZXItc2V0dGFibGUgb3B0 aW9uIHRvIGVuYWJsZS9kaXNhYmxlIGF1dG8tbG9hZGluZyBvZiBQeXRob24gc2NyaXB0czoKKysg ICBzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIG9ufG9mZgorKyAgIFRoaXMgaXMgdHJ1ZSBp ZiB3ZSBzaG91bGQgYXV0by1sb2FkIGFzc29jaWF0ZWQgUHl0aG9uIHNjcmlwdHMgd2hlbiBhbgor KyAgIG9iamZpbGUgaXMgb3BlbmVkLCBmYWxzZSBvdGhlcndpc2UuICAqLworK3N0YXRpYyBpbnQg YXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzID0gMTsKKysKKytzdGF0aWMgdm9pZCBnZGJweV9sb2Fk X2F1dG9fc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKysJCQkJ CQlGSUxFICpmaWxlLAorKwkJCQkJCWNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKKysKKysvKiAic2hv dyIgY29tbWFuZCBmb3IgdGhlIGF1dG9fbG9hZF9weXRob25fc2NyaXB0cyBjb25maWd1cmF0aW9u IHZhcmlhYmxlLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3Nob3dfYXV0b19sb2FkX3B5dGhvbl9z Y3JpcHRzIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAorKwkJCSAgICAgICBz dHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCisreworKyAgZnBy aW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiQXV0by1sb2FkaW5nIG9mIFB5dGhvbiBzY3JpcHRzIGlz ICVzLlxuIiksIHZhbHVlKTsKKyt9CisrCisrLyogRGVmaW5pdGlvbiBvZiBzY3JpcHQgbGFuZ3Vh Z2UgZm9yIFB5dGhvbiBzY3JpcHRzLiAgKi8KKysKKytzdGF0aWMgY29uc3Qgc3RydWN0IHNjcmlw dF9sYW5ndWFnZSBzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9uCisrICA9IHsgR0RCUFlfQVVUT19GSUxF X05BTUUsIGdkYnB5X2xvYWRfYXV0b19zY3JpcHRfZm9yX29iamZpbGUgfTsKKysKKysvKiBXcmFw cGVyIG9mIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIGZvciBzY3JpcHRfbGFuZ3Vh Z2VfcHl0aG9uLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2dkYnB5X2xvYWRfYXV0b19zY3JpcHRf Zm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBGSUxFICpmaWxlLAorKwkJCQkg ICAgY29uc3QgY2hhciAqZmlsZW5hbWUpCisreworKyAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2Vf aW5mbyAqcHNwYWNlX2luZm87CisrCisrICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhhc2gg dGFibGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIKKysgICAgIGNhbiBw cmludCBpdC4gICovCisrICBwc3BhY2VfaW5mbyA9IGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFf Zm9yX2xvYWRpbmcgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7CisrICBtYXliZV9hZGRfc2NyaXB0 IChwc3BhY2VfaW5mbywgZmlsZW5hbWUsIGZpbGVuYW1lLCAmc2NyaXB0X2xhbmd1YWdlX3B5dGhv bik7CisrCisrICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgZmls ZSwgZmlsZW5hbWUpOworK30KKyAKKyAvKiBMb2FkIHNjcmlwdHMgc3BlY2lmaWVkIGluIE9CSkZJ TEUuCisgICAgU1RBUlQsRU5EIGRlbGltaXQgYSBidWZmZXIgY29udGFpbmluZyBhIGxpc3Qgb2Yg bnVsLXRlcm1pbmF0ZWQKK0BAIC0xMjEsNiArMTQ4LDE3IEBAIHNvdXJjZV9zZWN0aW9uX3Njcmlw dHMgKHN0cnVjdCBvYmpmaWxlICoKKyAJICBtYWtlX2NsZWFudXBfZmNsb3NlIChzdHJlYW0pOwor IAkgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGZ1bGxfcGF0aCk7CisgCX0KKysgICAgICBlbHNlCisr CXsKKysJICBmdWxsX3BhdGggPSBOVUxMOworKworKwkgIC8qIFdlIGRvbid0IHRocm93IGFuIGVy cm9yLCB0aGUgcHJvZ3JhbSBpcyBzdGlsbCBkZWJ1Z2dhYmxlLiAgKi8KKysJICBpZiAoc2NyaXB0 X25vdF9mb3VuZF93YXJuaW5nX3ByaW50IChwc3BhY2VfaW5mbykpCisrCSAgICB3YXJuaW5nIChf KCJNaXNzaW5nIGF1dG8tbG9hZCBzY3JpcHRzIHJlZmVyZW5jZWQgaW4gc2VjdGlvbiAlc1xuXAor K29mIGZpbGUgJXNcblwKKytVc2UgYGluZm8gYXV0by1sb2FkIHB5dGhvbiBbUkVHRVhQXScgdG8g bGlzdCB0aGVtLiIpLAorKwkJICAgICBHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSwgb2JqZmlsZS0+ bmFtZSk7CisrCX0KKyAKKyAgICAgICAvKiBJZiBvbmUgc2NyaXB0IGlzbid0IGZvdW5kIGl0J3Mg bm90IHVuY29tbW9uIGZvciBtb3JlIHRvIG5vdCBiZQorIAkgZm91bmQgZWl0aGVyLiAgV2UgZG9u J3Qgd2FudCB0byBwcmludCBhbiBlcnJvciBtZXNzYWdlIGZvciBlYWNoCitAQCAtMTI5LDI0ICsx NjcsMTIgQEAgc291cmNlX3NlY3Rpb25fc2NyaXB0cyAoc3RydWN0IG9iamZpbGUgKgorIAorIAkg SVdCTiBpZiBjb21wbGFpbnRzLmMgd2VyZSBtb3JlIGdlbmVyYWwtcHVycG9zZS4gICovCisgCist ICAgICAgaW5faGFzaF90YWJsZSA9IG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBmaWxl LAorLQkJCQkJb3BlbmVkID8gZnVsbF9wYXRoIDogTlVMTCk7CisrICAgICAgaW5faGFzaF90YWJs ZSA9IG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBmaWxlLCBmdWxsX3BhdGgsCisrCQkJ CQkmc2NyaXB0X2xhbmd1YWdlX3B5dGhvbik7CisgCistICAgICAgaWYgKCEgb3BlbmVkKQorLQl7 CistCSAgLyogV2UgZG9uJ3QgdGhyb3cgYW4gZXJyb3IsIHRoZSBwcm9ncmFtIGlzIHN0aWxsIGRl YnVnZ2FibGUuICAqLworLQkgIGlmIChzY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnQgKHBz cGFjZV9pbmZvKSkKKy0JICAgIHdhcm5pbmcgKF8oIk1pc3NpbmcgYXV0by1sb2FkIHNjcmlwdHMg cmVmZXJlbmNlZCBpbiBzZWN0aW9uICVzXG5cCistb2YgZmlsZSAlc1xuXAorLVVzZSBgaW5mbyBh dXRvLWxvYWQtc2NyaXB0cyBbUkVHRVhQXScgdG8gbGlzdCB0aGVtLiIpLAorLQkJICAgICBHREJQ WV9BVVRPX1NFQ1RJT05fTkFNRSwgb2JqZmlsZS0+bmFtZSk7CistCX0KKy0gICAgICBlbHNlCist CXsKKy0JICAvKiBJZiB0aGlzIGZpbGUgaXMgbm90IGN1cnJlbnRseSBsb2FkZWQsIGxvYWQgaXQu ICAqLworLQkgIGlmICghIGluX2hhc2hfdGFibGUpCistCSAgICBzb3VyY2VfcHl0aG9uX3Njcmlw dF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgc3RyZWFtLCBmdWxsX3BhdGgpOworLQl9CisrICAgICAg LyogSWYgdGhpcyBmaWxlIGlzIG5vdCBjdXJyZW50bHkgbG9hZGVkLCBsb2FkIGl0LiAgKi8KKysg ICAgICBpZiAob3BlbmVkICYmICFpbl9oYXNoX3RhYmxlKQorKwlzb3VyY2VfcHl0aG9uX3Njcmlw dF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgc3RyZWFtLCBmdWxsX3BhdGgpOworIAorICAgICAgIGRv X2NsZWFudXBzIChiYWNrX3RvKTsKKyAgICAgfQorQEAgLTE4MSwzNiArMjA3LDc1IEBAIGF1dG9f bG9hZF9zZWN0aW9uX3NjcmlwdHMgKHN0cnVjdCBvYmpmaWwKKyAgIGRvX2NsZWFudXBzIChjbGVh bnVwcyk7CisgfQorIAorLS8qIExvYWQgYW55IGF1dG8tbG9hZGVkIHNjcmlwdHMgZm9yIE9CSkZJ TEUuICAqLworKy8qIExvYWQgYW55IFB5dGhvbiBhdXRvLWxvYWRlZCBzY3JpcHRzIGZvciBPQkpG SUxFLiAgKi8KKyAKKyB2b2lkCistbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlKQorK2dkYnB5X2xvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxl IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyB7CistICBpZiAoYXV0b19sb2FkX3NjcmlwdHMg JiYgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCkKKysgIGlmIChhdXRvX2xvYWRfcHl0aG9uX3Njcmlw dHMpCisgICAgIHsKKy0gICAgICBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKG9iamZpbGUsIEdE QlBZX0FVVE9fRklMRV9OQU1FKTsKKysgICAgICBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKG9i amZpbGUsICZzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9uKTsKKyAgICAgICBhdXRvX2xvYWRfc2VjdGlv bl9zY3JpcHRzIChvYmpmaWxlLCBHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSk7CisgICAgIH0KKyB9 CisrCisrLyogV3JhcHBlciBmb3IgImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIi4gICov CisrCisrc3RhdGljIHZvaWQKKytpbmZvX2F1dG9fbG9hZF9weXRob25fc2NyaXB0cyAoY2hhciAq cGF0dGVybiwgaW50IGZyb21fdHR5KQorK3sKKysgIGF1dG9fbG9hZF9pbmZvX3NjcmlwdHMgKHBh dHRlcm4sIGZyb21fdHR5LCAmc2NyaXB0X2xhbmd1YWdlX3B5dGhvbik7CisrfQorIAwKKyB2b2lk CisgZ2RicHlfaW5pdGlhbGl6ZV9hdXRvX2xvYWQgKHZvaWQpCisgeworKyAgc3RydWN0IGNtZF9s aXN0X2VsZW1lbnQgKmNtZDsKKysgIGNoYXIgKmNtZF9uYW1lOworKworKyAgYWRkX3NldHNob3df Ym9vbGVhbl9jbWQgKCJweXRob24tc2NyaXB0cyIsIGNsYXNzX3N1cHBvcnQsCisrCQkJICAgJmF1 dG9fbG9hZF9weXRob25fc2NyaXB0cywgXygiXAorK1NldCB0aGUgZGVidWdnZXIncyBiZWhhdmlv dXIgcmVnYXJkaW5nIGF1dG8tbG9hZGVkIFB5dGhvbiBzY3JpcHRzLiIpLCBfKCJcCisrU2hvdyB0 aGUgZGVidWdnZXIncyBiZWhhdmlvdXIgcmVnYXJkaW5nIGF1dG8tbG9hZGVkIFB5dGhvbiBzY3Jp cHRzLiIpLCBfKCJcCisrSWYgZW5hYmxlZCwgYXV0by1sb2FkZWQgUHl0aG9uIHNjcmlwdHMgYXJl IGxvYWRlZCB3aGVuIHRoZSBkZWJ1Z2dlciByZWFkc1xuXAorK2FuIGV4ZWN1dGFibGUgb3Igc2hh cmVkIGxpYnJhcnkuXG5cCisrVGhpcyBvcHRpb25zIGhhcyBzZWN1cml0eSBpbXBsaWNhdGlvbnMg Zm9yIHVudHJ1c3RlZCBpbmZlcmlvcnMuIiksCisrCQkJICAgTlVMTCwgc2hvd19hdXRvX2xvYWRf cHl0aG9uX3NjcmlwdHMsCisrCQkJICAgYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCAoKSwKKysJ CQkgICBhdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAoKSk7CisrCisgICBhZGRfc2V0c2hvd19i b29sZWFuX2NtZCAoImF1dG8tbG9hZC1zY3JpcHRzIiwgY2xhc3Nfc3VwcG9ydCwKKy0JCQkgICAm YXV0b19sb2FkX3NjcmlwdHMsIF8oIlwKKy1TZXQgdGhlIGRlYnVnZ2VyJ3MgYmVoYXZpb3VyIHJl Z2FyZGluZyBhdXRvLWxvYWRlZCBzY3JpcHRzLiIpLCBfKCJcCistU2hvdyB0aGUgZGVidWdnZXIn cyBiZWhhdmlvdXIgcmVnYXJkaW5nIGF1dG8tbG9hZGVkIHNjcmlwdHMuIiksIF8oIlwKKy1JZiBl bmFibGVkLCBhdXRvLWxvYWRlZCBzY3JpcHRzIGFyZSBsb2FkZWQgd2hlbiB0aGUgZGVidWdnZXIg cmVhZHNcblwKKy1hbiBleGVjdXRhYmxlIG9yIHNoYXJlZCBsaWJyYXJ5LiIpLAorLQkJCSAgIE5V TEwsIE5VTEwsCistCQkJICAgJnNldGxpc3QsCistCQkJICAgJnNob3dsaXN0KTsKKysJCQkgICAm YXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzLCBfKCJcCisrU2V0IHRoZSBkZWJ1Z2dlcidzIGJlaGF2 aW91ciByZWdhcmRpbmcgYXV0by1sb2FkZWQgUHl0aG9uIHNjcmlwdHMsICIKKysJCQkJCQkJCSAi ZGVwcmVjYXRlZC4iKSwKKysJCQkgICBfKCJcCisrU2hvdyB0aGUgZGVidWdnZXIncyBiZWhhdmlv dXIgcmVnYXJkaW5nIGF1dG8tbG9hZGVkIFB5dGhvbiBzY3JpcHRzLCAiCisrCQkJCQkJCQkgImRl cHJlY2F0ZWQuIiksCisrCQkJICAgTlVMTCwgTlVMTCwgc2hvd19hdXRvX2xvYWRfcHl0aG9uX3Nj cmlwdHMsCisrCQkJICAgJnNldGxpc3QsICZzaG93bGlzdCk7CisrICBjbWRfbmFtZSA9ICJhdXRv LWxvYWQtc2NyaXB0cyI7CisrICBjbWQgPSBsb29rdXBfY21kICgmY21kX25hbWUsIHNldGxpc3Qs ICIiLCAtMSwgMSk7CisrICBkZXByZWNhdGVfY21kIChjbWQsICJzZXQgYXV0by1sb2FkIHB5dGhv bi1zY3JpcHRzIik7CisrCisrICAvKiBJdCBpcyBuZWVkZWQgYmVjYXVzZSBsb29rdXBfY21kIHVw ZGF0ZXMgdGhlIENNRF9OQU1FIHBvaW50ZXIuICAqLworKyAgY21kX25hbWUgPSAiYXV0by1sb2Fk LXNjcmlwdHMiOworKyAgY21kID0gbG9va3VwX2NtZCAoJmNtZF9uYW1lLCBzaG93bGlzdCwgIiIs IC0xLCAxKTsKKysgIGRlcHJlY2F0ZV9jbWQgKGNtZCwgInNob3cgYXV0by1sb2FkIHB5dGhvbi1z Y3JpcHRzIik7CisrCisrICBhZGRfY21kICgicHl0aG9uLXNjcmlwdHMiLCBjbGFzc19pbmZvLCBp bmZvX2F1dG9fbG9hZF9weXRob25fc2NyaXB0cywKKysJICAgXygiUHJpbnQgdGhlIGxpc3Qgb2Yg YXV0b21hdGljYWxseSBsb2FkZWQgUHl0aG9uIHNjcmlwdHMuXG5cCisrVXNhZ2U6IGluZm8gYXV0 by1sb2FkIHB5dGhvbi1zY3JpcHRzIFtSRUdFWFBdIiksCisrCSAgIGF1dG9fbG9hZF9pbmZvX2Nt ZGxpc3RfZ2V0ICgpKTsKKysKKysgIGNtZCA9IGFkZF9pbmZvICgiYXV0by1sb2FkLXNjcmlwdHMi LCBpbmZvX2F1dG9fbG9hZF9weXRob25fc2NyaXB0cywgXygiXAorK1ByaW50IHRoZSBsaXN0IG9m IGF1dG9tYXRpY2FsbHkgbG9hZGVkIFB5dGhvbiBzY3JpcHRzLCBkZXByZWNhdGVkLiIpKTsKKysg IGRlcHJlY2F0ZV9jbWQgKGNtZCwgImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIik7Cisg fQorIAorICNlbHNlIC8qICEgSEFWRV9QWVRIT04gKi8KKyAKKyB2b2lkCistbG9hZF9hdXRvX3Nj cmlwdHNfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorK2dkYnB5X2xvYWRf YXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyB7Cisg fQorIAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weXRob24uaAorPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvcHl0aG9uL3B5dGhvbi5o CTIwMTItMDQtMTggMDA6NDQ6MjYuOTU4NDM3NTAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEy MDEyMC9nZGIvcHl0aG9uL3B5dGhvbi5oCTIwMTItMDQtMTggMDA6NDQ6MjYuOTc5NDM3NDQ2ICsw MjAwCitAQCAtNDEsNyArNDEsNyBAQCBpbnQgYXBwbHlfdmFsX3ByZXR0eV9wcmludGVyIChzdHJ1 Y3QgdHlwCisgCisgdm9pZCBwcmVzZXJ2ZV9weXRob25fdmFsdWVzIChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSwgaHRhYl90IGNvcGllZF90eXBlcyk7CisgCistdm9pZCBsb2FkX2F1dG9fc2NyaXB0 c19mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOworK3ZvaWQgZ2RicHlfbG9h ZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKTsKKyAK KyBpbnQgZ2RicHlfc2hvdWxkX3N0b3AgKHN0cnVjdCBicmVha3BvaW50X29iamVjdCAqYnBfb2Jq KTsKKyAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv aGVscC5leHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9oZWxwLmV4cAkyMDEyLTAxLTA0IDA5OjE3OjQ1LjAwMDAwMDAwMCAr MDEwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9oZWxw LmV4cAkyMDEyLTA0LTE4IDAwOjQ0OjI2Ljk4MDQzNzQ0NCArMDIwMAorQEAgLTI0LDcgKzI0LDcg QEAKKyBnZGJfc3RhcnQKKyAKKyAjIGZvcmNlIHRoZSBoZWlnaHQgb2YgdGhlIGRlYnVnZ2VyIHRv IGJlIHByZXR0eSBsYXJnZSBzbyBubyBwYWdlcnMgZ2V0IHVzZWQKKy1nZGJfdGVzdF9ub19vdXRw dXQgInNldCBoZWlnaHQgNDAwIiAidGVzdCBzZXQgaGVpZ2h0IgorK2dkYl90ZXN0X25vX291dHB1 dCAic2V0IGhlaWdodCA1MDAiICJ0ZXN0IHNldCBoZWlnaHQiCisgCisgIyB1c2UgYSBsYXJnZXIg ZXhwZWN0IGlucHV0IGJ1ZmZlciBmb3IgbG9uZyBoZWxwIG91dHB1dHMuCisgIyB0ZXN0IGhlbHAg YWRkLXN5bWJvbC1maWxlCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRl L2dkYi5weXRob24vcHktb2JqZmlsZS1zY3JpcHQuZXhwCis9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcu NC41MC4yMDEyMDEyMC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1vYmpmaWxlLXNj cmlwdC5leHAJMjAxMi0wMS0xNiAxNzoyMTo1Mi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1vYmpmaWxlLXNjcmlwdC5l eHAJMjAxMi0wNC0xOCAwMDo0Njo0Ny41NTgwNzk3NzQgKzAyMDAKK0BAIC00MCw3ICs0MCw3IEBA IGdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgorIGdkYl9sb2FkICR7YmluZmls ZX0KKyAKKyAjIFZlcmlmeSBnZGIgbG9hZGVkIHRoZSBzY3JpcHQuCistZ2RiX3Rlc3QgImluZm8g YXV0by1sb2FkLXNjcmlwdHMiICJZZXMuKi8ke3Rlc3RmaWxlfS1nZGIucHkuKiIKKytnZGJfdGVz dCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiICJZZXMuKi8ke3Rlc3RmaWxlfS1nZGIu cHkuKiIKKyAKKyBpZiAhW3J1bnRvX21haW5dIHsKKyAgICAgcGVycm9yICJjb3VsZG4ndCBydW4g dG8gbWFpbiIKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2RiLnB5 dGhvbi9weS1zZWN0aW9uLXNjcmlwdC5leHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIw MTIwMTIwLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXNlY3Rpb24tc2NyaXB0LmV4 cAkyMDEyLTAxLTE2IDE3OjIxOjUyLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAx MjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXNlY3Rpb24tc2NyaXB0LmV4cAkyMDEy LTA0LTE4IDAwOjQ2OjQ3LjU1ODA3OTc3NCArMDIwMAorQEAgLTUyLDExICs1MiwxMSBAQCBnZGJf cmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKyBnZGJfbG9hZCAke2JpbmZpbGV9Cisg CisgIyBWZXJpZnkgZ2RiIGxvYWRlZCB0aGUgc2NyaXB0LgorLWdkYl90ZXN0ICJpbmZvIGF1dG8t bG9hZC1zY3JpcHRzIiAiWWVzLioke3Rlc3RmaWxlfS5weS4qZnVsbCBuYW1lOiAuKi8ke3Rlc3Rm aWxlfS5weS4qIgorK2dkYl90ZXN0ICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIgIlll cy4qJHt0ZXN0ZmlsZX0ucHkuKmZ1bGwgbmFtZTogLiovJHt0ZXN0ZmlsZX0ucHkuKiIKKyAjIEFn YWluLCB3aXRoIGEgcmVnZXhwIHRoaXMgdGltZS4KKy1nZGJfdGVzdCAiaW5mbyBhdXRvLWxvYWQt c2NyaXB0cyAke3Rlc3RmaWxlfSIgIlllcy4qJHt0ZXN0ZmlsZX0ucHkuKmZ1bGwgbmFtZTogLiov JHt0ZXN0ZmlsZX0ucHkuKiIKKytnZGJfdGVzdCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlw dHMgJHt0ZXN0ZmlsZX0iICJZZXMuKiR7dGVzdGZpbGV9LnB5LipmdWxsIG5hbWU6IC4qLyR7dGVz dGZpbGV9LnB5LioiCisgIyBBZ2Fpbiwgd2l0aCBhIHJlZ2V4cCB0aGF0IG1hdGNoZXMgbm8gc2Ny aXB0cy4KKy1nZGJfdGVzdCAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyBuby1zY3JpcHQtbWF0Y2hl cy10aGlzIiBcCisrZ2RiX3Rlc3QgImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIG5vLXNj cmlwdC1tYXRjaGVzLXRoaXMiIFwKKyAgICJObyBhdXRvLWxvYWQgc2NyaXB0cyBtYXRjaGluZyBu by1zY3JpcHQtbWF0Y2hlcy10aGlzLiIKKyAKKyBpZiAhW3J1bnRvX21haW5dIHsKCmRpZmYgLS1n aXQgYS9nZGItYXV0b2xvYWQtMTFvZjEyLnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTExb2YxMi5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWM2OGIwCi0tLSAvZGV2L251 bGwKKysrIGIvZ2RiLWF1dG9sb2FkLTExb2YxMi5wYXRjaApAQCAtMCwwICsxLDc0NCBAQAorW3Bh dGNoIzQgNS84XSBzZXQgYXV0by1sb2FkIHNhZmUtcGF0aAoraHR0cDovL3NvdXJjZXdhcmUub3Jn L21sL2dkYi1wYXRjaGVzLzIwMTItMDQvbXNnMDAwOTIuaHRtbAoraHR0cDovL3NvdXJjZXdhcmUu b3JnL21sL2dkYi1jdnMvMjAxMi0wNC9tc2cwMDExNC5odG1sCisKKyMjIyBzcmMvZ2RiL0NoYW5n ZUxvZwkyMDEyLzA0LzE3IDE1OjUxOjQxCTEuMTQxMTMKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwky MDEyLzA0LzE3IDE1OjU0OjI4CTEuMTQxMTQKKyMjIC0xLDUgKzEsMzkgQEAKKyAyMDEyLTA0LTE3 ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisgCisrCU5ldyBv cHRpb24gInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIi4KKysJKiBORVdTOiBOZXcgY29tbWFuZHMg InNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIgorKwlhbmQgInNob3cgYXV0by1sb2FkIHNhZmUtcGF0 aCIuCisrCSogYXV0by1sb2FkLmM6IEluY2x1ZGUgZ2RiX3ZlY3MuaCwgcmVhZGxpbmUvdGlsZGUu aCBhbmQgY29tcGxldGVyLmguCisrCShhdXRvX2xvYWRfc2FmZV9wYXRoLCBhdXRvX2xvYWRfc2Fm ZV9wYXRoX3ZlYykKKysJKGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSwgc2V0X2F1dG9f bG9hZF9zYWZlX3BhdGgpCisrCShzaG93X2F1dG9fbG9hZF9zYWZlX3BhdGgsIGFkZF9hdXRvX2xv YWRfc2FmZV9wYXRoLCBmaWxlbmFtZV9pc19pbl9kaXIpCisrCShmaWxlbmFtZV9pc19pbl9hdXRv X2xvYWRfc2FmZV9wYXRoX3ZlYywgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSk6IE5ldy4KKysJKHNv dXJjZV9nZGJfc2NyaXB0X2Zvcl9vYmpmaWxlKTogTmV3IHZhcmlhYmxlIGlzX3NhZmUuICBDYWxs CisrCWZpbGVfaXNfYXV0b19sb2FkX3NhZmUuICBSZXR1cm4gaWYgaXQgaXMgbm90LgorKwkoc3Ry dWN0IGxvYWRlZF9zY3JpcHQpOiBOZXcgZmllbGQgbG9hZGVkLgorKwkobWF5YmVfYWRkX3Njcmlw dCk6IEFkZCBwYXJhbWV0ZXIgbG9hZGVkLiAgSW5pdGlhbGl6ZSBTTE9UIHdpdGggaXQuCisrCShw cmludF9zY3JpcHQpOiBVc2UgTE9BREVEIGluZGljYXRvciBpbnN0ZWFkIG9mIEZVTExfUEFUSC4g IENoYW5nZQorKwlvdXRwdXQgIk1pc3NpbmciIHRvICJObyIuCisrCShfaW5pdGlhbGl6ZV9hdXRv X2xvYWQpOiBOZXcgdmFyaWFibGUgY21kLiAgSW5pdGlhbGl6ZQorKwlhdXRvX2xvYWRfc2FmZV9w YXRoLiAgUmVnaXN0ZXIgInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIiwKKysJInNob3cgYXV0by1s b2FkIHNhZmUtcGF0aCIgYW5kICJhZGQtYXV0by1sb2FkLXNhZmUtcGF0aCIuCisrCSogYXV0by1s b2FkLmggKG1heWJlX2FkZF9zY3JpcHQpOiBBZGQgcGFyYW1ldGVyIGxvYWRlZC4KKysJKGZpbGVf aXNfYXV0b19sb2FkX3NhZmUpOiBOZXcgZGVjbGFyYXRpb24uCisrCSogY29uZmlnLmluOiBSZWdl bmVyYXRlLgorKwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KKysJKiBjb25maWd1cmUuYWM6IE5l dyBwYXJhbWV0ZXJzIC0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoCisrCWFuZCAtLXdpdGhvdXQt YXV0by1sb2FkLXNhZmUtcGF0aC4KKysJKiBsaW51eC10aHJlYWQtZGIuYyAodHJ5X3RocmVhZF9k Yl9sb2FkX2Zyb21fcGRpcl8xKQorKwkodHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21fZGlyKTogQ2hl Y2sgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSBmaXJzdC4KKysJKiBtYWluLmMgKGNhcHR1cmVkX21h aW4pOiBDaGVjayBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIGZvcgorKwlMT0NBTF9HREJJTklULgor KwkqIHB5dGhvbi9weS1hdXRvLWxvYWQuYyAoZ2RicHlfbG9hZF9hdXRvX3NjcmlwdF9mb3Jfb2Jq ZmlsZSk6IE5ldworKwl2YXJpYWJsZSBpc19zYWZlLiAgQ2FsbCBmaWxlX2lzX2F1dG9fbG9hZF9z YWZlLiAgUmV0dXJuIGlmIGl0IGlzIG5vdC4KKysJKHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMpOiBD YWxsIGZpbGVfaXNfYXV0b19sb2FkX3NhZmUuICBSZXR1cm4gaWYgaXQgaXMKKysJbm90LgorKwor KzIwMTItMDQtMTcgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4K KysKKyAJYXV0by1sb2FkOiBJbXBsZW1lbnRhdGlvbi4KKyAJKiBORVdTOiBOZXcgZGVzY3JpcHRp b25zIGZvciAiaW5mbyBhdXRvLWxvYWQiLAorIAkiaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMi LCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiLAorSW5kZXg6IGdkYi03LjQuNTAuMjAx MjAxMjAvZ2RiL05FV1MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcv Z2RiL05FV1MJMjAxMi0wNC0xOCAwMDo0OTowMi4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9ORVdTCTIwMTItMDQtMTggMDA6NDk6MzMuMjgyNzA2MzE5ICswMjAw CitAQCAtNjcsNiArNjcsMTEgQEAgc2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIgb258b2ZmCisg c2hvdyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiCisgICBDb250cm9sIGF1dG8tbG9hZGluZyBvZiBp bmZlcmlvciBzcGVjaWZpYyB0aHJlYWQgZGVidWdnaW5nIHNoYXJlZCBsaWJyYXJ5LgorIAorK3Nl dCBhdXRvLWxvYWQgc2FmZS1wYXRoIDxkaXIxPls6PGRpcjI+Li4uXQorK3Nob3cgYXV0by1sb2Fk IHNhZmUtcGF0aAorKyAgU2V0IGEgbGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0IGlz IHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzLgorKyAgVGhlIGRlbGltaXRlciAoJzonIGFib3ZlKSBt YXkgZGlmZmVyIGFjY29yZGluZyB0byB0aGUgaG9zdCBwbGF0Zm9ybS4KKysKKyAqIE5ldyBjb21t YW5kIGxpbmUgb3B0aW9ucworIAorIC0taW5pdC1jb21tYW5kPUZJTEUsIC1peCAgICAgICAgICBM aWtlIC0tY29tbWFuZCwgLXggYnV0IGV4ZWN1dGUgaXQKK0luZGV4OiBnZGItNy40LjUwLjIwMTIw MTIwL2dkYi9hdXRvLWxvYWQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAu b3JpZy9nZGIvYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0Njo0Ny4wMDAwMDAwMDAgKzAyMDAK KysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQ5 OjIxLjYwNzczNjAyMCArMDIwMAorQEAgLTMyLDYgKzMyLDkgQEAKKyAjaW5jbHVkZSAiZ2RiY21k LmgiCisgI2luY2x1ZGUgImNsaS9jbGktZGVjb2RlLmgiCisgI2luY2x1ZGUgImNsaS9jbGktc2V0 c2hvdy5oIgorKyNpbmNsdWRlICJnZGJfdmVjcy5oIgorKyNpbmNsdWRlICJyZWFkbGluZS90aWxk ZS5oIgorKyNpbmNsdWRlICJjb21wbGV0ZXIuaCIKKyAKKyAvKiBUaGUgc3VmZml4IG9mIHBlci1v YmpmaWxlIHNjcmlwdHMgdG8gYXV0by1sb2FkIGFzIG5vbi1QeXRob24gY29tbWFuZCBmaWxlcy4K KyAgICBFLmcuIFdoZW4gdGhlIHByb2dyYW0gbG9hZHMgbGliZm9vLnNvLCBsb29rIGZvciBsaWJm b28tZ2RiLmdkYi4gICovCitAQCAtOTAsNiArOTMsMTgxIEBAIHNob3dfYXV0b19sb2FkX2xvY2Fs X2dkYmluaXQgKHN0cnVjdCB1aV8KKyAJCSAgICB2YWx1ZSk7CisgfQorIAorKy8qIERpcmVjdG9y eSBsaXN0IHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcy4gIEl0IGlzIG5vdCBjaGVja2Vk IGZvcgorKyAgIGFic29sdXRlIHBhdGhzIGJ1dCB0aGV5IGFyZSBzdHJvbmdseSByZWNvbW1lbmRl ZC4gIEl0IGlzIGluaXRpYWxpemVkIGJ5CisrICAgX2luaXRpYWxpemVfYXV0b19sb2FkLiAgKi8K KytzdGF0aWMgY2hhciAqYXV0b19sb2FkX3NhZmVfcGF0aDsKKysKKysvKiBWZWN0b3Igb2YgZGly ZWN0b3J5IGVsZW1lbnRzIG9mIEFVVE9fTE9BRF9TQUZFX1BBVEggd2l0aCBlYWNoIG9uZSBub3Jt YWxpemVkCisrICAgYnkgdGlsZGVfZXhwYW5kIGFuZCBwb3NzaWJseSBlYWNoIGVudHJpZXMgaGFz IGFkZGVkIGl0cyBnZGJfcmVhbHBhdGgKKysgICBjb3VudGVycGFydC4gICovCisrc3RhdGljIFZF QyAoY2hhcl9wdHIpICphdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYzsKKysKKysvKiBVcGRhdGUgYXV0 b19sb2FkX3NhZmVfcGF0aF92ZWMgZnJvbSBjdXJyZW50IEFVVE9fTE9BRF9TQUZFX1BBVEguICAq LworKworK3N0YXRpYyB2b2lkCisrYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlICh2b2lk KQorK3sKKysgIFZFQyAoY2hhcl9wdHIpICpkaXJfdmVjID0gTlVMTDsKKysgIHVuc2lnbmVkIGxl bjsKKysgIGludCBpeDsKKysKKysgIGZyZWVfY2hhcl9wdHJfdmVjIChhdXRvX2xvYWRfc2FmZV9w YXRoX3ZlYyk7CisrCisrICBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyA9IGRpcm5hbWVzX3RvX2No YXJfcHRyX3ZlYyAoYXV0b19sb2FkX3NhZmVfcGF0aCk7CisrICBsZW4gPSBWRUNfbGVuZ3RoIChj aGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMpOworKworKyAgLyogQXBwbHkgdGlsZGVf ZXhwYW5kIGFuZCBnZGJfcmVhbHBhdGggdG8gZWFjaCBBVVRPX0xPQURfU0FGRV9QQVRIX1ZFQwor KyAgICAgZWxlbWVudC4gICovCisrICBmb3IgKGl4ID0gMDsgaXggPCBsZW47IGl4KyspCisrICAg IHsKKysgICAgICBjaGFyICpkaXIgPSBWRUNfaW5kZXggKGNoYXJfcHRyLCBhdXRvX2xvYWRfc2Fm ZV9wYXRoX3ZlYywgaXgpOworKyAgICAgIGNoYXIgKmV4cGFuZGVkID0gdGlsZGVfZXhwYW5kIChk aXIpOworKyAgICAgIGNoYXIgKnJlYWxfcGF0aCA9IGdkYl9yZWFscGF0aCAoZXhwYW5kZWQpOwor KworKyAgICAgIC8qIEVuc3VyZSB0aGUgY3VycmVudCBlbnRyeSBpcyBhdCBsZWFzdCB0aWxkZV9l eHBhbmQtZWQuICAqLworKyAgICAgIHhmcmVlIChkaXIpOworKyAgICAgIFZFQ19yZXBsYWNlIChj aGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMsIGl4LCBleHBhbmRlZCk7CisrCisrICAg ICAgLyogSWYgZ2RiX3JlYWxwYXRoIHJldHVybnMgYSBkaWZmZXJlbnQgY29udGVudCwgYXBwZW5k IGl0LiAgKi8KKysgICAgICBpZiAoc3RyY21wIChyZWFsX3BhdGgsIGV4cGFuZGVkKSA9PSAwKQor Kwl4ZnJlZSAocmVhbF9wYXRoKTsKKysgICAgICBlbHNlCisrCVZFQ19zYWZlX3B1c2ggKGNoYXJf cHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgcmVhbF9wYXRoKTsKKysgICAgfQorK30KKysK KysvKiAic2V0IiBjb21tYW5kIGZvciB0aGUgYXV0b19sb2FkX3NhZmVfcGF0aCBjb25maWd1cmF0 aW9uIHZhcmlhYmxlLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3NldF9hdXRvX2xvYWRfc2FmZV9w YXRoIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHksIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpj KQorK3sKKysgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAoKTsKKyt9CisrCisrLyog InNob3ciIGNvbW1hbmQgZm9yIHRoZSBhdXRvX2xvYWRfc2FmZV9wYXRoIGNvbmZpZ3VyYXRpb24g dmFyaWFibGUuICAqLworKworK3N0YXRpYyB2b2lkCisrc2hvd19hdXRvX2xvYWRfc2FmZV9wYXRo IChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAorKwkJCSAgc3RydWN0IGNtZF9s aXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQorK3sKKysgIGlmICgqdmFsdWUgPT0g MCkKKysgICAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiQXV0by1sb2FkIGZpbGVzIGFyZSBz YWZlIHRvIGxvYWQgZnJvbSBhbnkgIgorKwkJCSAgICAgICJkaXJlY3RvcnkuXG4iKSk7CisrICBl bHNlCisrICAgIGZwcmludGZfZmlsdGVyZWQgKGZpbGUsIF8oIkxpc3Qgb2YgZGlyZWN0b3JpZXMg ZnJvbSB3aGljaCBpdCBpcyBzYWZlIHRvICIKKysJCQkgICAgICAiYXV0by1sb2FkIGZpbGVzIGlz ICVzLlxuIiksCisrCQkgICAgICB2YWx1ZSk7CisrfQorKworKy8qICJhZGQtYXV0by1sb2FkLXNh ZmUtcGF0aCIgY29tbWFuZCBmb3IgdGhlIGF1dG9fbG9hZF9zYWZlX3BhdGggY29uZmlndXJhdGlv bgorKyAgIHZhcmlhYmxlLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2FkZF9hdXRvX2xvYWRfc2Fm ZV9wYXRoIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCisreworKyAgY2hhciAqczsKKysKKysg IGlmIChhcmdzID09IE5VTEwgfHwgKmFyZ3MgPT0gMCkKKysgICAgZXJyb3IgKF8oIlwKKytBZGRp bmcgZW1wdHkgZGlyZWN0b3J5IGVsZW1lbnQgZGlzYWJsZXMgdGhlIGF1dG8tbG9hZCBzYWZlLXBh dGggc2VjdXJpdHkuICBcCisrVXNlICdzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCcgaW5zdGVhZCBp ZiB5b3UgbWVhbiB0aGF0LiIpKTsKKysKKysgIHMgPSB4c3RycHJpbnRmICgiJXMlYyVzIiwgYXV0 b19sb2FkX3NhZmVfcGF0aCwgRElSTkFNRV9TRVBBUkFUT1IsIGFyZ3MpOworKyAgeGZyZWUgKGF1 dG9fbG9hZF9zYWZlX3BhdGgpOworKyAgYXV0b19sb2FkX3NhZmVfcGF0aCA9IHM7CisrCisrICBh dXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKCk7CisrfQorKworKy8qIFJldHVybiAxIGlm IEZJTEVOQU1FIGlzIGVxdWFsIHRvIERJUiBvciBpZiBGSUxFTkFNRSBiZWxvbmdzIHRvIHRoZQor KyAgIHN1YmRpcmVjdG9yeSBESVIuICBSZXR1cm4gMCBvdGhlcndpc2UuICBnZGJfcmVhbHBhdGgg bm9ybWFsaXphdGlvbiBpcyBuZXZlcgorKyAgIGRvbmUgaGVyZS4gICovCisrCisrc3RhdGljIEFU VFJJQlVURV9QVVJFIGludAorK2ZpbGVuYW1lX2lzX2luX2RpciAoY29uc3QgY2hhciAqZmlsZW5h bWUsIGNvbnN0IGNoYXIgKmRpcikKKyt7CisrICBzaXplX3QgZGlyX2xlbiA9IHN0cmxlbiAoZGly KTsKKysKKysgIHdoaWxlIChkaXJfbGVuICYmIElTX0RJUl9TRVBBUkFUT1IgKGRpcltkaXJfbGVu IC0gMV0pKQorKyAgICBkaXJfbGVuLS07CisrCisrICByZXR1cm4gKGZpbGVuYW1lX25jbXAgKGRp ciwgZmlsZW5hbWUsIGRpcl9sZW4pID09IDAKKysJICAmJiAoSVNfRElSX1NFUEFSQVRPUiAoZmls ZW5hbWVbZGlyX2xlbl0pCisrCSAgICAgIHx8IGZpbGVuYW1lW2Rpcl9sZW5dID09ICdcMCcpKTsK Kyt9CisrCisrLyogUmV0dXJuIDEgaWYgRklMRU5BTUUgYmVsb25ncyB0byBvbmUgb2YgZGlyZWN0 b3J5IGNvbXBvbmVudHMgb2YKKysgICBBVVRPX0xPQURfU0FGRV9QQVRIX1ZFQy4gIFJldHVybiAw IG90aGVyd2lzZS4KKysgICBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgaXMgbmV2ZXIg Y2FsbGVkLgorKyAgICpGSUxFTkFNRV9SRUFMUCBtYXkgYmUgdXBkYXRlZCBieSBnZGJfcmVhbHBh dGggb2YgRklMRU5BTUUgLSBpdCBoYXMgdG8gYmUKKysgICBmcmVlZCBieSB0aGUgY2FsbGVyLiAg Ki8KKysKKytzdGF0aWMgaW50CisrZmlsZW5hbWVfaXNfaW5fYXV0b19sb2FkX3NhZmVfcGF0aF92 ZWMgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLAorKwkJCQkJY2hhciAqKmZpbGVuYW1lX3JlYWxwKQor K3sKKysgIGNoYXIgKmRpcjsKKysgIGludCBpeDsKKysKKysgIGZvciAoaXggPSAwOyBWRUNfaXRl cmF0ZSAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCBpeCwgZGlyKTsgKytpeCkK KysgICAgaWYgKCpmaWxlbmFtZV9yZWFscCA9PSBOVUxMICYmIGZpbGVuYW1lX2lzX2luX2RpciAo ZmlsZW5hbWUsIGRpcikpCisrICAgICAgYnJlYWs7CisrICAKKysgIGlmIChkaXIgPT0gTlVMTCkK KysgICAgeworKyAgICAgIGlmICgqZmlsZW5hbWVfcmVhbHAgPT0gTlVMTCkKKysJKmZpbGVuYW1l X3JlYWxwID0gZ2RiX3JlYWxwYXRoIChmaWxlbmFtZSk7CisrCisrICAgICAgZm9yIChpeCA9IDA7 IFZFQ19pdGVyYXRlIChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMsIGl4LCBkaXIp OworKwkgICArK2l4KQorKwlpZiAoZmlsZW5hbWVfaXNfaW5fZGlyICgqZmlsZW5hbWVfcmVhbHAs IGRpcikpCisrCSAgYnJlYWs7CisrICAgIH0KKysKKysgIGlmIChkaXIgIT0gTlVMTCkKKysgICAg cmV0dXJuIDE7CisrCisrICByZXR1cm4gMDsKKyt9CisrCisrLyogUmV0dXJuIDEgaWYgRklMRU5B TUUgaXMgbG9jYXRlZCBpbiBvbmUgb2YgdGhlIGRpcmVjdG9yaWVzIG9mCisrICAgQVVUT19MT0FE X1NBRkVfUEFUSC4gIE90aGVyd2lzZSBjYWxsIHdhcm5pbmcgYW5kIHJldHVybiAwLiAgRklMRU5B TUUgZG9lcworKyAgIG5vdCBoYXZlIHRvIGJlIGFuIGFic29sdXRlIHBhdGguCisrCisrICAgRXhp c3RlbmNlIG9mIEZJTEVOQU1FIGlzIG5vdCBjaGVja2VkLiAgRnVuY3Rpb24gd2lsbCBzdGlsbCBn aXZlIGEgd2FybmluZworKyAgIGV2ZW4gaWYgdGhlIGNhbGxlciB3b3VsZCBxdWlldGx5IHNraXAg bm9uLWV4aXN0aW5nIGZpbGUgaW4gdW5zYWZlCisrICAgZGlyZWN0b3J5LiAgKi8KKysKKytpbnQK KytmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChjb25zdCBjaGFyICpmaWxlbmFtZSkKKyt7CisrICBj aGFyICpmaWxlbmFtZV9yZWFsID0gTlVMTDsKKysgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOwor KworKyAgYmFja190byA9IG1ha2VfY2xlYW51cCAoZnJlZV9jdXJyZW50X2NvbnRlbnRzLCAmZmls ZW5hbWVfcmVhbCk7CisrCisrICBpZiAoZmlsZW5hbWVfaXNfaW5fYXV0b19sb2FkX3NhZmVfcGF0 aF92ZWMgKGZpbGVuYW1lLCAmZmlsZW5hbWVfcmVhbCkpCisrICAgIHsKKysgICAgICBkb19jbGVh bnVwcyAoYmFja190byk7CisrICAgICAgcmV0dXJuIDE7CisrICAgIH0KKysKKysgIGF1dG9fbG9h ZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAoKTsKKysgIGlmIChmaWxlbmFtZV9pc19pbl9hdXRvX2xv YWRfc2FmZV9wYXRoX3ZlYyAoZmlsZW5hbWUsICZmaWxlbmFtZV9yZWFsKSkKKysgICAgeworKyAg ICAgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKKysgICAgICByZXR1cm4gMTsKKysgICAgfQorKwor KyAgd2FybmluZyAoXygiRmlsZSBcIiVzXCIgYXV0by1sb2FkaW5nIGhhcyBiZWVuIGRlY2xpbmVk IGJ5IHlvdXIgIgorKwkgICAgICJgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRvIFwiJXNcIi4i KSwKKysJICAgZmlsZW5hbWVfcmVhbCwgYXV0b19sb2FkX3NhZmVfcGF0aCk7CisrCisrICBkb19j bGVhbnVwcyAoYmFja190byk7CisrICByZXR1cm4gMDsKKyt9CisrCisgLyogRGVmaW5pdGlvbiBv ZiBzY3JpcHQgbGFuZ3VhZ2UgZm9yIEdEQiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzLiAg Ki8KKyAKKyBzdGF0aWMgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSBzY3JpcHRfbGFuZ3Vh Z2VfZ2RiCitAQCAtOTksMTMgKzI3NywyMCBAQCBzdGF0aWMgdm9pZAorIHNvdXJjZV9nZGJfc2Ny aXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgRklMRSAqZmlsZSwKKyAJ CQkgICAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUpCisgeworKyAgaW50IGlzX3NhZmU7CisgICBz dHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKKyAgIHZvbGF0aWxlIHN0 cnVjdCBnZGJfZXhjZXB0aW9uIGU7CisgCisrICBpc19zYWZlID0gZmlsZV9pc19hdXRvX2xvYWRf c2FmZSAoZmlsZW5hbWUpOworKworICAgLyogQWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRh YmxlIHRvbyBzbyAiaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiCisgICAgICBjYW4gcHJpbnQg aXQuICAqLworICAgcHNwYWNlX2luZm8gPSBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9s b2FkaW5nIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpOworLSAgbWF5YmVfYWRkX3NjcmlwdCAocHNw YWNlX2luZm8sIGZpbGVuYW1lLCBmaWxlbmFtZSwgJnNjcmlwdF9sYW5ndWFnZV9nZGIpOworKyAg bWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGlzX3NhZmUsIGZpbGVuYW1lLCBmaWxlbmFt ZSwKKysJCSAgICAmc2NyaXB0X2xhbmd1YWdlX2dkYik7CisrCisrICBpZiAoIWlzX3NhZmUpCisr ICAgIHJldHVybjsKKyAKKyAgIFRSWV9DQVRDSCAoZSwgUkVUVVJOX01BU0tfQUxMKQorICAgICB7 CitAQCAtMTQwLDYgKzMyNSw5IEBAIHN0cnVjdCBsb2FkZWRfc2NyaXB0CisgICAgICBpbmFjY2Vz c2libGUpLiAgKi8KKyAgIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aDsKKyAKKysgIC8qIE5vbi16ZXJv IGlmIHRoaXMgc2NyaXB0IGhhcyBiZWVuIGxvYWRlZC4gICovCisrICBpbnQgbG9hZGVkOworKwor ICAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2U7CisgfTsKKyAKK0BAIC0y MzIsMTIgKzQyMCwxMyBAQCBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChz CisgICByZXR1cm4gaW5mbzsKKyB9CisgCistLyogQWRkIHNjcmlwdCBOQU1FIGluIExBTkdVQUdF IHRvIGhhc2ggdGFibGUgb2YgUFNQQUNFX0lORk8uCistICAgRlVMTF9QQVRIIGlzIE5VTEwgaWYg dGhlIHNjcmlwdCB3YXNuJ3QgZm91bmQuICBUaGUgcmVzdWx0IGlzCisrLyogQWRkIHNjcmlwdCBO QU1FIGluIExBTkdVQUdFIHRvIGhhc2ggdGFibGUgb2YgUFNQQUNFX0lORk8uICBMT0FERUQgMSBp ZiB0aGUKKysgICBzY3JpcHQgaGFzIGJlZW4gKGlzIGdvaW5nIHRvKSBiZSBsb2FkZWQsIDAgb3Ro ZXJ3aXNlIChzdWNoIGFzIGlmIGl0IGhhcyBub3QKKysgICBiZWVuIGZvdW5kKS4gIEZVTExfUEFU SCBpcyBOVUxMIGlmIHRoZSBzY3JpcHQgd2Fzbid0IGZvdW5kLiAgVGhlIHJlc3VsdCBpcworICAg IHRydWUgaWYgdGhlIHNjcmlwdCB3YXMgYWxyZWFkeSBpbiB0aGUgaGFzaCB0YWJsZS4gICovCisg CisgaW50CistbWF5YmVfYWRkX3NjcmlwdCAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAq cHNwYWNlX2luZm8sCisrbWF5YmVfYWRkX3NjcmlwdCAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2Vf aW5mbyAqcHNwYWNlX2luZm8sIGludCBsb2FkZWQsCisgCQkgIGNvbnN0IGNoYXIgKm5hbWUsIGNv bnN0IGNoYXIgKmZ1bGxfcGF0aCwKKyAJCSAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAq bGFuZ3VhZ2UpCisgeworQEAgLTI3MSw2ICs0NjAsNyBAQCBtYXliZV9hZGRfc2NyaXB0IChzdHJ1 Y3QgYXV0b19sb2FkX3BzcGFjCisgCX0KKyAgICAgICBlbHNlCisgCSgqc2xvdCktPmZ1bGxfcGF0 aCA9IE5VTEw7CisrICAgICAgKCpzbG90KS0+bG9hZGVkID0gbG9hZGVkOworICAgICAgICgqc2xv dCktPmxhbmd1YWdlID0gbGFuZ3VhZ2U7CisgICAgIH0KKyAKK0BAIC00MzIsNyArNjIyLDcgQEAg cHJpbnRfc2NyaXB0IChzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqc2NyaQorIAorICAgY2hhaW4gPSBt YWtlX2NsZWFudXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAodWlvdXQsIE5VTEwpOworIAorLSAg dWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJsb2FkZWQiLCBzY3JpcHQtPmZ1bGxfcGF0aCA/ ICJZZXMiIDogIk1pc3NpbmciKTsKKysgIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAibG9h ZGVkIiwgc2NyaXB0LT5sb2FkZWQgPyAiWWVzIiA6ICJObyIpOworICAgdWlfb3V0X2ZpZWxkX3N0 cmluZyAodWlvdXQsICJzY3JpcHQiLCBzY3JpcHQtPm5hbWUpOworICAgdWlfb3V0X3RleHQgKHVp b3V0LCAiXG4iKTsKKyAKK0BAIC03MTgsNiArOTA4LDggQEAgdm9pZCBfaW5pdGlhbGl6ZV9hdXRv X2xvYWQgKHZvaWQpOworIHZvaWQKKyBfaW5pdGlhbGl6ZV9hdXRvX2xvYWQgKHZvaWQpCisgewor KyAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmNtZDsKKysKKyAgIGF1dG9fbG9hZF9wc3BhY2Vf ZGF0YQorICAgICA9IHJlZ2lzdGVyX3Byb2dyYW1fc3BhY2VfZGF0YV93aXRoX2NsZWFudXAgKGF1 dG9fbG9hZF9wc3BhY2VfZGF0YV9jbGVhbnVwKTsKKyAKK0BAIC03NTcsNCArOTQ5LDMwIEBAIFRo aXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGljYXRpb25zIGYKKyAJICAgXygiUHJpbnQgd2hl dGhlciBjdXJyZW50IGRpcmVjdG9yeSAuZ2RiaW5pdCBmaWxlIGhhcyBiZWVuIGxvYWRlZC5cblwK KyBVc2FnZTogaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIpLAorIAkgICBhdXRvX2xvYWRf aW5mb19jbWRsaXN0X2dldCAoKSk7CisrCisrICBhdXRvX2xvYWRfc2FmZV9wYXRoID0geHN0cmR1 cCAoREVGQVVMVF9BVVRPX0xPQURfU0FGRV9QQVRIKTsKKysgIGF1dG9fbG9hZF9zYWZlX3BhdGhf dmVjX3VwZGF0ZSAoKTsKKysgIGFkZF9zZXRzaG93X29wdGlvbmFsX2ZpbGVuYW1lX2NtZCAoInNh ZmUtcGF0aCIsIGNsYXNzX3N1cHBvcnQsCisrCQkJCSAgICAgJmF1dG9fbG9hZF9zYWZlX3BhdGgs IF8oIlwKKytTZXQgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZl IHRvIGF1dG8tbG9hZCBmaWxlcy4iKSwgXygiXAorK1Nob3cgdGhlIGxpc3Qgb2YgZGlyZWN0b3Jp ZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZlIHRvIGF1dG8tbG9hZCBmaWxlcy4iKSwgXygiXAorK1Zh cmlvdXMgZmlsZXMgbG9hZGVkIGF1dG9tYXRpY2FsbHkgZm9yIHRoZSAnc2V0IGF1dG8tbG9hZCAu Li4nIG9wdGlvbnMgbXVzdFxuXAorK2JlIGxvY2F0ZWQgaW4gb25lIG9mIHRoZSBkaXJlY3Rvcmll cyBsaXN0ZWQgYnkgdGhpcyBvcHRpb24uICBXYXJuaW5nIHdpbGwgYmVcblwKKytwcmludGVkIGFu ZCBmaWxlIHdpbGwgbm90IGJlIHVzZWQgb3RoZXJ3aXNlLiAgVXNlIGVtcHR5IHN0cmluZyAob3Ig ZXZlblxuXAorK2VtcHR5IGRpcmVjdG9yeSBlbnRyeSkgdG8gYWxsb3cgYW55IGZpbGUgZm9yIHRo ZSAnc2V0IGF1dG8tbG9hZCAuLi4nIG9wdGlvbnMuXG5cCisrVGhpcyBvcHRpb24gaXMgaWdub3Jl ZCBmb3IgdGhlIGtpbmRzIG9mIGZpbGVzIGhhdmluZyAnc2V0IGF1dG8tbG9hZCAuLi4gb2ZmJy5c blwKKytUaGlzIG9wdGlvbnMgaGFzIHNlY3VyaXR5IGltcGxpY2F0aW9ucyBmb3IgdW50cnVzdGVk IGluZmVyaW9ycy4iKSwKKysJCQkJICAgICBzZXRfYXV0b19sb2FkX3NhZmVfcGF0aCwKKysJCQkJ ICAgICBzaG93X2F1dG9fbG9hZF9zYWZlX3BhdGgsCisrCQkJCSAgICAgYXV0b19sb2FkX3NldF9j bWRsaXN0X2dldCAoKSwKKysJCQkJICAgICBhdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAoKSk7 CisrCisrICBjbWQgPSBhZGRfY21kICgiYWRkLWF1dG8tbG9hZC1zYWZlLXBhdGgiLCBjbGFzc19z dXBwb3J0LAorKwkJIGFkZF9hdXRvX2xvYWRfc2FmZV9wYXRoLAorKwkJIF8oIkFkZCBlbnRyaWVz IHRvIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggaXQgaXMgc2FmZSAiCisrCQkg ICAidG8gYXV0by1sb2FkIGZpbGVzLlxuXAorK1NlZSB0aGUgY29tbWFuZHMgJ3NldCBhdXRvLWxv YWQgc2FmZS1wYXRoJyBhbmQgJ3Nob3cgYXV0by1sb2FkIHNhZmUtcGF0aCcgdG9cblwKKythY2Nl c3MgdGhlIGN1cnJlbnQgZnVsbCBsaXN0IHNldHRpbmcuIiksCisrCQkgJmNtZGxpc3QpOworKyAg c2V0X2NtZF9jb21wbGV0ZXIgKGNtZCwgZmlsZW5hbWVfY29tcGxldGVyKTsKKyB9CitJbmRleDog Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmgKKz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGIt Ny40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2F1dG8tbG9hZC5oCTIwMTItMDQtMTggMDA6NDY6NDcu MDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmgJ MjAxMi0wNC0xOCAwMDo0OToyMS42MDc3MzYwMjAgKzAyMDAKK0BAIC0zOSw3ICszOSw4IEBAIGV4 dGVybiBpbnQgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfbG9hZGUKKyBleHRlcm4gc3RydWN0IGF1 dG9fbG9hZF9wc3BhY2VfaW5mbyAqCisgICBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9s b2FkaW5nIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlKTsKKyBleHRlcm4gaW50IG1heWJl X2FkZF9zY3JpcHQgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvLAor LQkJCSAgICAgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqZnVsbF9wYXRoLAorKwkJCSAg ICAgaW50IGxvYWRlZCwgY29uc3QgY2hhciAqbmFtZSwKKysJCQkgICAgIGNvbnN0IGNoYXIgKmZ1 bGxfcGF0aCwKKyAJCQkgICAgIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UgKmxhbmd1YWdl KTsKKyBleHRlcm4gdm9pZCBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlLAorIAkJCQkgICAgICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5n dWFnZSk7CitAQCAtNTQsNCArNTUsNiBAQCBleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQg KiphdXRvX2xvCisgZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqYXV0b19sb2FkX3No b3dfY21kbGlzdF9nZXQgKHZvaWQpOworIGV4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAq KmF1dG9fbG9hZF9pbmZvX2NtZGxpc3RfZ2V0ICh2b2lkKTsKKyAKKytleHRlcm4gaW50IGZpbGVf aXNfYXV0b19sb2FkX3NhZmUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKKysKKyAjZW5kaWYgLyog QVVUT19MT0FEX0ggKi8KK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWcuaW4K Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2NvbmZpZy5pbgky MDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL2NvbmZpZy5pbgkyMDEyLTA0LTE4IDAwOjQ5OjIxLjYwNzczNjAyMCArMDIwMAorQEAg LTQzLDYgKzQzLDkgQEAKKyAgICBtb3ZlZC4gKi8KKyAjdW5kZWYgREVCVUdESVJfUkVMT0NBVEFC TEUKKyAKKysvKiBEaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMuICov CisrI3VuZGVmIERFRkFVTFRfQVVUT19MT0FEX1NBRkVfUEFUSAorKworIC8qIERlZmluZSB0byBC RkQncyBkZWZhdWx0IGFyY2hpdGVjdHVyZS4gKi8KKyAjdW5kZWYgREVGQVVMVF9CRkRfQVJDSAor IAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZQorPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlndXJlCTIwMTItMDQtMTggMDA6 NDY6NDcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmln dXJlCTIwMTItMDQtMTggMDA6NDk6MjEuNjExNzM2MDEwICswMjAwCitAQCAtOTU1LDYgKzk1NSw3 IEBAIHdpdGhfc2VwYXJhdGVfZGVidWdfZGlyCisgd2l0aF9nZGJfZGF0YWRpcgorIHdpdGhfcmVs b2NhdGVkX3NvdXJjZXMKKyB3aXRoX3JwbQorK3dpdGhfYXV0b19sb2FkX3NhZmVfcGF0aAorIGVu YWJsZV90YXJnZXRzCisgZW5hYmxlXzY0X2JpdF9iZmQKKyBlbmFibGVfZ2RiY2xpCitAQCAtMTY2 Niw2ICsxNjY3LDEwIEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgYXV0b21hdGljYWxseSByZWxvY2F0ZSB0aGlzIHBhdGggZm9yIHNvdXJjZSBmaWxlcwor ICAgLS13aXRoLXJwbSAgICAgICAgICAgICAgcXVlcnkgcnBtIGRhdGFiYXNlIGZvciBtaXNzaW5n IGRlYnVnaW5mb3MgKHllcy9ubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZi4gYXV0 bz1saWJycG0uc28pCisrICAtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aD1QQVRICisrICAgICAg ICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQg ZmlsZXMKKysgIC0td2l0aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRoCisrICAgICAgICAgICAgICAg ICAgICAgICAgICBkbyBub3QgcmVzdHJpY3QgYXV0by1sb2FkZWQgZmlsZXMgbG9jYXRpb25zCisg ICAtLXdpdGgtbGlidW53aW5kICAgICAgICB1c2UgbGlidW53aW5kIGZyYW1lIHVud2luZGluZyBz dXBwb3J0CisgICAtLXdpdGgtY3Vyc2VzICAgICAgICAgICB1c2UgdGhlIGN1cnNlcyBsaWJyYXJ5 IGluc3RlYWQgb2YgdGhlIHRlcm1jYXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJh cnkKK0BAIC04NDc3LDYgKzg0ODIsMzIgQEAgJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogJFJQ TV9QS0dfRVJSTworICAgZmkKKyBmaQorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogY2hlY2tpbmcgZm9yIGRlZmF1bHQgYXV0by1sb2FkIHNhZmUtcGF0aCIgPiY1 CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGRlZmF1bHQgYXV0by1sb2FkIHNhZmUtcGF0aC4u LiAiID4mNjsgfQorKworKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0 aCB3YXMgZ2l2ZW4uCisraWYgdGVzdCAiJHt3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgrc2V0fSIg PSBzZXQ7IHRoZW4gOgorKyAgd2l0aHZhbD0kd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoOyBpZiB0 ZXN0ICIkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIiA9ICJubyI7IHRoZW4KKysgICB3aXRoX2F1 dG9fbG9hZF9zYWZlX3BhdGg9IiIKKysgZmkKKytlbHNlCisrICB3aXRoX2F1dG9fbG9hZF9zYWZl X3BhdGg9IiRwcmVmaXgiCisrZmkKKysKKysKKysgIHRlc3QgIngkcHJlZml4IiA9IHhOT05FICYm IHByZWZpeD0iJGFjX2RlZmF1bHRfcHJlZml4IgorKyAgdGVzdCAieCRleGVjX3ByZWZpeCIgPSB4 Tk9ORSAmJiBleGVjX3ByZWZpeD0nJHtwcmVmaXh9JworKyAgYWNfZGVmaW5lX2Rpcj1gZXZhbCBl Y2hvICR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGhgCisrICBhY19kZWZpbmVfZGlyPWBldmFsIGVj aG8gJGFjX2RlZmluZV9kaXJgCisrCisrY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorKyNkZWZp bmUgREVGQVVMVF9BVVRPX0xPQURfU0FGRV9QQVRIICIkYWNfZGVmaW5lX2RpciIKKytfQUNFT0YK KysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog JHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCIgPiY1CisrJGFzX2VjaG8gIiR3aXRoX2F1dG9fbG9h ZF9zYWZlX3BhdGgiID4mNjsgfQorKworIAorIAorIHN1YmRpcnM9IiRzdWJkaXJzIHRlc3RzdWl0 ZSIKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUuYWMKKz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEyLTA0 LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L2NvbmZpZ3VyZS5hYwkyMDEyLTA0LTE4IDAwOjQ5OjIxLjYxMTczNjAxMCArMDIwMAorQEAgLTMz OSw2ICszMzksMTggQEAgZXh0ZXJuIHJwbWRiTWF0Y2hJdGVyYXRvciBycG10c0luaXRJdGVyYQor ICAgZmkKKyBmaQorICAKKytBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBkZWZhdWx0IGF1dG8tbG9hZCBz YWZlLXBhdGhdKQorK0FDX0FSR19XSVRIKGF1dG8tbG9hZC1zYWZlLXBhdGgsCisrQVNfSEVMUF9T VFJJTkcoWy0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoPVBBVEhdLCBbZGlyZWN0b3JpZXMgc2Fm ZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzXSkKKytBU19IRUxQX1NUUklORyhbLS13aXRob3V0 LWF1dG8tbG9hZC1zYWZlLXBhdGhdLCBbZG8gbm90IHJlc3RyaWN0IGF1dG8tbG9hZGVkIGZpbGVz IGxvY2F0aW9uc10pLAorK1tpZiB0ZXN0ICIkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIiA9ICJu byI7IHRoZW4KKysgICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiIKKysgZmldLAorK1t3aXRo X2F1dG9fbG9hZF9zYWZlX3BhdGg9IiRwcmVmaXgiXSkKKytBQ19ERUZJTkVfRElSKERFRkFVTFRf QVVUT19MT0FEX1NBRkVfUEFUSCwgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoLAorKwkgICAgICBb RGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzLl0pCisrQUNfTVNHX1JF U1VMVChbJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aF0pCisrCisgQUNfQ09ORklHX1NVQkRJUlMo dGVzdHN1aXRlKQorIAorICMgQ2hlY2sgd2hldGhlciB0byBzdXBwb3J0IGFsdGVybmF0aXZlIHRh cmdldCBjb25maWd1cmF0aW9ucworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2xpbnV4 LXRocmVhZC1kYi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dk Yi9saW51eC10aHJlYWQtZGIuYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCArMDIwMAor KysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2xpbnV4LXRocmVhZC1kYi5jCTIwMTItMDQtMTgg MDA6NDk6MjEuNjEyNzM2MDA3ICswMjAwCitAQCAtODY4LDcgKzg2OCwxMSBAQCB0cnlfdGhyZWFk X2RiX2xvYWRfZnJvbV9wZGlyXzEgKHN0cnVjdCBvCisgICAvKiBUaGlzIHNob3VsZCBhdCBtaW5p bXVtIGhpdCB0aGUgZmlyc3QgY2hhcmFjdGVyLiAgKi8KKyAgIGdkYl9hc3NlcnQgKGNwICE9IE5V TEwpOworICAgc3RyY3B5IChjcCArIDEsIExJQlRIUkVBRF9EQl9TTyk7CistICByZXN1bHQgPSB0 cnlfdGhyZWFkX2RiX2xvYWQgKHBhdGgpOworKworKyAgaWYgKCFmaWxlX2lzX2F1dG9fbG9hZF9z YWZlIChwYXRoKSkKKysgICAgcmVzdWx0ID0gMDsKKysgIGVsc2UKKysgICAgcmVzdWx0ID0gdHJ5 X3RocmVhZF9kYl9sb2FkIChwYXRoKTsKKyAKKyAgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKKyAg IHJldHVybiByZXN1bHQ7CitAQCAtOTM0LDcgKzkzOCwxMSBAQCB0cnlfdGhyZWFkX2RiX2xvYWRf ZnJvbV9kaXIgKGNvbnN0IGNoYXIKKyAgIG1lbWNweSAocGF0aCwgZGlyLCBkaXJfbGVuKTsKKyAg IHBhdGhbZGlyX2xlbl0gPSAnLyc7CisgICBzdHJjcHkgKHBhdGggKyBkaXJfbGVuICsgMSwgTElC VEhSRUFEX0RCX1NPKTsKKy0gIHJlc3VsdCA9IHRyeV90aHJlYWRfZGJfbG9hZCAocGF0aCk7Cisr CisrICBpZiAoIWZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKHBhdGgpKQorKyAgICByZXN1bHQgPSAw OworKyAgZWxzZQorKyAgICByZXN1bHQgPSB0cnlfdGhyZWFkX2RiX2xvYWQgKHBhdGgpOworIAor ICAgZG9fY2xlYW51cHMgKGNsZWFudXApOworICAgcmV0dXJuIHJlc3VsdDsKK0luZGV4OiBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIw MTIwMTIwLm9yaWcvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCArMDIw MAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQ5OjIx LjYxMjczNjAwNyArMDIwMAorQEAgLTEwMjYsNyArMTAyNiw4IEBAIGNhcHR1cmVkX21haW4gKHZv aWQgKmRhdGEpCisgICAgIHsKKyAgICAgICBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9wYXRobmFt ZSA9IGdkYl9yZWFscGF0aCAobG9jYWxfZ2RiaW5pdCk7CisgCistICAgICAgaWYgKCFpbmhpYml0 X2dkYmluaXQgJiYgYXV0b19sb2FkX2xvY2FsX2dkYmluaXQpCisrICAgICAgaWYgKCFpbmhpYml0 X2dkYmluaXQgJiYgYXV0b19sb2FkX2xvY2FsX2dkYmluaXQKKysJICAmJiBmaWxlX2lzX2F1dG9f bG9hZF9zYWZlIChsb2NhbF9nZGJpbml0KSkKKyAJeworIAkgIGF1dG9fbG9hZF9sb2NhbF9nZGJp bml0X2xvYWRlZCA9IDE7CisgCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dk Yi50ZXhpbmZvCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9k b2MvZ2RiLnRleGluZm8JMjAxMi0wNC0xOCAwMDo0Njo0Ny4wMDAwMDAwMDAgKzAyMDAKKysrKyBn ZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNC0xOCAwMDo0OToy MS42MjA3MzU5ODcgKzAyMDAKK0BAIC0yMDgwMSw2ICsyMDgwMSw4IEBAIGdkYi1zY3JpcHRzOiAg QXV0by1sb2FkaW5nIG9mIGNhbm5lZCBzZXEKKyBsaWJ0aHJlYWQtZGI6ICBBdXRvLWxvYWRpbmcg b2YgaW5mZXJpb3Igc3BlY2lmaWMgbGlidGhyZWFkX2RiIGlzIG9uLgorIGxvY2FsLWdkYmluaXQ6 ICBBdXRvLWxvYWRpbmcgb2YgLmdkYmluaXQgc2NyaXB0IGZyb20gY3VycmVudCBkaXJlY3Rvcnkg aXMgb24uCisgcHl0aG9uLXNjcmlwdHM6ICBBdXRvLWxvYWRpbmcgb2YgUHl0aG9uIHNjcmlwdHMg aXMgb24uCisrc2FmZS1wYXRoOiAgTGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0IGlz IHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzCisrICAgICAgICAgICAgaXMgL3Vzci9sb2NhbC4KKyBA ZW5kIHNtYWxsZXhhbXBsZQorIAorIEBhbmNob3J7aW5mbyBhdXRvLWxvYWR9CitAQCAtMjA4NzIs MTIgKzIwODc0LDE5IEBAIFRoZXNlIGFyZSBAdmFsdWV7R0RCTn0gY29udHJvbCBjb21tYW5kcwor IEB0YWIgU2hvdyBzZXR0aW5nIG9mIHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFyeS4KKyBAaXRlbSBA eHJlZntpbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9LgorIEB0YWIgU2hvdyBzdGF0ZSBvZiB0 aHJlYWQgZGVidWdnaW5nIGxpYnJhcnkuCisrQGl0ZW0gQHhyZWZ7c2V0IGF1dG8tbG9hZCBzYWZl LXBhdGh9LgorK0B0YWIgQ29udHJvbCBkaXJlY3RvcmllcyB0cnVzdGVkIGZvciBhdXRvbWF0aWMg bG9hZGluZy4KKytAaXRlbSBAeHJlZntzaG93IGF1dG8tbG9hZCBzYWZlLXBhdGh9LgorK0B0YWIg U2hvdyBkaXJlY3RvcmllcyB0cnVzdGVkIGZvciBhdXRvbWF0aWMgbG9hZGluZy4KKytAaXRlbSBA eHJlZnthZGQtYXV0by1sb2FkLXNhZmUtcGF0aH0uCisrQHRhYiBBZGQgZGlyZWN0b3J5IHRydXN0 ZWQgZm9yIGF1dG9tYXRpYyBsb2FkaW5nLgorIEBlbmQgbXVsdGl0YWJsZQorIAorIEBtZW51Cisg KiBJbml0IEZpbGUgaW4gdGhlIEN1cnJlbnQgRGlyZWN0b3J5OjogQHNhbXB7c2V0L3Nob3cvaW5m byBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdH0KKyAqIGxpYnRocmVhZF9kYi5zby4xIGZpbGU6OiAg ICAgICAgICAgICBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9Cisg KiBvYmpmaWxlLWdkYi5nZGIgZmlsZTo6ICAgICAgICAgICAgICAgQHNhbXB7c2V0L3Nob3cvaW5m byBhdXRvLWxvYWQgZ2RiLXNjcmlwdH0KKysqIEF1dG8tbG9hZGluZyBzYWZlIHBhdGg6OiAgICAg ICAgICAgICBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBzYWZlLXBhdGh9CisgQHhyZWZ7 UHl0aG9uIEF1dG8tbG9hZGluZ30uCisgQGVuZCBtZW51CisgCitAQCAtMjA5NzgsNiArMjA5ODcs MTA0IEBAIGF1dG8tbG9hZGVkLgorIElmIEB2YXJ7cmVnZXhwfSBpcyBzdXBwbGllZCBvbmx5IGNh bm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cyB3aXRoCisgbWF0Y2hpbmcgbmFtZXMg YXJlIHByaW50ZWQuCisgCisrQG5vZGUgQXV0by1sb2FkaW5nIHNhZmUgcGF0aAorK0BzdWJzZWN0 aW9uIFNlY3VyaXR5IHJlc3RyaWN0aW9uIGZvciBhdXRvLWxvYWRpbmcKKytAY2luZGV4IGF1dG8t bG9hZGluZyBzYWZlLXBhdGgKKysKKytBcyB0aGUgZmlsZXMgb2YgaW5mZXJpb3IgY2FuIGNvbWUg ZnJvbSB1bnRydXN0ZWQgc291cmNlIChzdWNoIGFzIHN1Ym1pdHRlZCBieQorK2FuIGFwcGxpY2F0 aW9uIHVzZXIpIEB2YWx1ZXtHREJOfSBkb2VzIG5vdCBhbHdheXMgbG9hZCBhbnkgZmlsZXMgYXV0 b21hdGljYWxseS4KKytAdmFsdWV7R0RCTn0gcHJvdmlkZXMgdGhlIEBzYW1we3NldCBhdXRvLWxv YWQgc2FmZS1wYXRofSBzZXR0aW5nIHRvIGxpc3QKKytkaXJlY3RvcmllcyB0cnVzdGVkIGZvciBs b2FkaW5nIGZpbGVzIG5vdCBleHBsaWNpdGx5IHJlcXVlc3RlZCBieSB1c2VyLgorKworK0lmIHRo ZSBwYXRoIGlzIG5vdCBzZXQgcHJvcGVybHkgeW91IHdpbGwgc2VlIGEgd2FybmluZyBhbmQgdGhl IGZpbGUgd2lsbCBub3QKKytnZXQgbG9hZGVkOgorKworK0BzbWFsbGV4YW1wbGUKKyskIC4vZ2Ri IC1xIC4vZ2RiCisrUmVhZGluZyBzeW1ib2xzIGZyb20gL2hvbWUvdXNlci9nZGIvZ2RiLi4uZG9u ZS4KKyt3YXJuaW5nOiBGaWxlICIvaG9tZS91c2VyL2dkYi9nZGItZ2RiLmdkYiIgYXV0by1sb2Fk aW5nIGhhcyBiZWVuCisrICAgICAgICAgZGVjbGluZWQgYnkgeW91ciBgYXV0by1sb2FkIHNhZmUt cGF0aCcgc2V0IHRvICIvdXNyL2xvY2FsIi4KKyt3YXJuaW5nOiBGaWxlICIvaG9tZS91c2VyL2dk Yi9nZGItZ2RiLnB5IiBhdXRvLWxvYWRpbmcgaGFzIGJlZW4KKysgICAgICAgICBkZWNsaW5lZCBi eSB5b3VyIGBhdXRvLWxvYWQgc2FmZS1wYXRoJyBzZXQgdG8gIi91c3IvbG9jYWwiLgorK0BlbmQg c21hbGxleGFtcGxlCisrCisrVGhlIGxpc3Qgb2YgdHJ1c3RlZCBkaXJlY3RvcmllcyBpcyBjb250 cm9sbGVkIGJ5IHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6CisrCisrQHRhYmxlIEBjb2RlCisrQGFu Y2hvcntzZXQgYXV0by1sb2FkIHNhZmUtcGF0aH0KKytAa2luZGV4IHNldCBhdXRvLWxvYWQgc2Fm ZS1wYXRoCisrQGl0ZW0gc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggQHZhcntkaXJlY3Rvcmllc30K KytTZXQgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgKGFuZCB0aGVpciBzdWJkaXJlY3Rvcmllcykg dHJ1c3RlZCBmb3IgYXV0b21hdGljCisrbG9hZGluZyBhbmQgZXhlY3V0aW9uIG9mIHNjcmlwdHMu ICBZb3UgY2FuIGFsc28gZW50ZXIgYSBzcGVjaWZpYyB0cnVzdGVkIGZpbGUuCisrVGhlIGxpc3Qg b2YgZGlyZWN0b3JpZXMgdXNlcyBkaXJlY3Rvcnkgc2VwYXJhdG9yIChAc2FtcHs6fSBvbiBHTlUg YW5kIFVuaXgKKytzeXN0ZW1zLCBAc2FtcHs7fSBvbiBNUy1XaW5kb3dzIGFuZCBNUy1ET1MpIHRv IHNlcGFyYXRlIGRpcmVjdG9yaWVzLCBzaW1pbGFybHkKKyt0byB0aGUgQGVudntQQVRIfSBlbnZp cm9ubWVudCB2YXJpYWJsZS4KKysKKytAYW5jaG9ye3Nob3cgYXV0by1sb2FkIHNhZmUtcGF0aH0K KytAa2luZGV4IHNob3cgYXV0by1sb2FkIHNhZmUtcGF0aAorK0BpdGVtIHNob3cgYXV0by1sb2Fk IHNhZmUtcGF0aAorK1Nob3cgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdHJ1c3RlZCBmb3IgYXV0 b21hdGljIGxvYWRpbmcgYW5kIGV4ZWN1dGlvbiBvZgorK3NjcmlwdHMuCisrCisrQGFuY2hvcnth ZGQtYXV0by1sb2FkLXNhZmUtcGF0aH0KKytAa2luZGV4IGFkZC1hdXRvLWxvYWQtc2FmZS1wYXRo CisrQGl0ZW0gYWRkLWF1dG8tbG9hZC1zYWZlLXBhdGgKKytBZGQgYW4gZW50cnkgKG9yIGxpc3Qg b2YgZW50cmllcykgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdHJ1c3RlZCBmb3IgYXV0b21hdGlj CisrbG9hZGluZyBhbmQgZXhlY3V0aW9uIG9mIHNjcmlwdHMuICBNdWx0aXBsZSBlbnRyaWVzIG1h eSBiZSBkZWxpbWl0ZWQgYnkgdGhlCisraG9zdCBwbGF0Zm9ybSBkaXJlY3Rvcnkgc2VwYXJhdG9y IGluIHVzZS4KKytAZW5kIHRhYmxlCisrCisrU2V0dGluZyB0aGlzIHZhcmlhYmxlIHRvIGFuIGVt cHR5IHN0cmluZyBkaXNhYmxlcyB0aGlzIHNlY3VyaXR5IHByb3RlY3Rpb24uCisrVGhpcyB2YXJp YWJsZSBpcyBzdXBwb3NlZCB0byBiZSBzZXQgdG8gdGhlIHN5c3RlbSBkaXJlY3RvcmllcyB3cml0 YWJsZSBieSB0aGUKKytzeXN0ZW0gc3VwZXJ1c2VyIG9ubHkuICBVc2VycyBjYW4gYWRkIHRoZWly IHNvdXJjZSBkaXJlY3RvcmllcyBpbiBpbml0IGZpbGVzIGluCisrdGhlaXIgaG9tZSBkaXJlY3Rv cmllcyAoQHB4cmVme0hvbWUgRGlyZWN0b3J5IEluaXQgRmlsZX0pLiAgU2VlIGFsc28gZGVwcmVj YXRlZAorK2luaXQgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkKKysoQHB4cmVme0luaXQg RmlsZSBpbiB0aGUgQ3VycmVudCBEaXJlY3RvcnkgZHVyaW5nIFN0YXJ0dXB9KS4KKysKKytUbyBm b3JjZSBAdmFsdWV7R0RCTn0gdG8gbG9hZCB0aGUgZmlsZXMgaXQgZGVjbGluZWQgdG8gbG9hZCBp biB0aGUgcHJldmlvdXMKKytleGFtcGxlLCB5b3UgY291bGQgdXNlIG9uZSBvZiB0aGUgZm9sbG93 aW5nIHdheXM6CisrCisrQGl0ZW1pemUgQGJ1bGxldAorK0BpdGVtIH4vLmdkYmluaXQ6IGFkZC1h dXRvLWxvYWQtc2FmZS1wYXRoIH4vc3JjL2dkYgorK1NwZWNpZnkgdGhpcyB0cnVzdGVkIGRpcmVj dG9yeSAob3IgYSBmaWxlKSBhcyBhZGRpdGlvbmFsIGNvbXBvbmVudCBvZiB0aGUgbGlzdC4KKytZ b3UgaGF2ZSB0byBzcGVjaWZ5IGFsc28gYW55IGV4aXN0aW5nIGRpcmVjdG9yaWVzIGRpc3BsYXll ZCBieQorK2J5IEBzYW1we3Nob3cgYXV0by1sb2FkIHNhZmUtcGF0aH0gKHN1Y2ggYXMgQHNhbXB7 L3VzcjovYmlufSBpbiB0aGlzIGV4YW1wbGUpLgorKworK0BpdGVtIEBrYmR7Z2RiIC1pZXggInNl dCBhdXRvLWxvYWQgc2FmZS1wYXRoIC91c3I6L2Jpbjp+L3NyYy9nZGIiIFtAZG90c3t9XX0KKytT cGVjaWZ5IHRoaXMgZGlyZWN0b3J5IGFzIGluIHRoZSBwcmV2aW91cyBjYXNlIGJ1dCBqdXN0IGZv ciBhIHNpbmdsZQorK0B2YWx1ZXtHREJOfSBzZXNzaW9uLgorKworK0BpdGVtIEBrYmR7Z2RiIC1p ZXggInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIiBbQGRvdHN7fV19CisrRGlzYWJsZSBhdXRvLWxv YWRpbmcgc2FmZXR5IGZvciBhIHNpbmdsZSBAdmFsdWV7R0RCTn0gc2Vzc2lvbi4KKytUaGlzIGFz c3VtZXMgYWxsIHRoZSBmaWxlcyB5b3UgZGVidWcgZHVyaW5nIHRoaXMgQHZhbHVle0dEQk59IHNl c3Npb24gd2lsbCBjb21lCisrZnJvbSB0cnVzdGVkIHNvdXJjZXMuCisrCisrQGl0ZW0gQGtiZHsu L2NvbmZpZ3VyZSAtLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aH0KKytEdXJpbmcgY29tcGls YXRpb24gb2YgQHZhbHVle0dEQk59IHlvdSBtYXkgZGlzYWJsZSBhbnkgYXV0by1sb2FkaW5nIHNh ZmV0eS4KKytUaGlzIGFzc3VtZXMgYWxsIHRoZSBmaWxlcyB5b3Ugd2lsbCBldmVyIGRlYnVnIHdp dGggdGhpcyBAdmFsdWV7R0RCTn0gY29tZSBmcm9tCisrdHJ1c3RlZCBzb3VyY2VzLgorK0BlbmQg aXRlbWl6ZQorKworK09uIHRoZSBvdGhlciBoYW5kIHlvdSBjYW4gYWxzbyBleHBsaWNpdGx5IGZv cmJpZCBhdXRvbWF0aWMgZmlsZXMgbG9hZGluZyB3aGljaAorK2Fsc28gc3VwcHJlc3NlcyBhbnkg c3VjaCB3YXJuaW5nIG1lc3NhZ2VzOgorKworK0BpdGVtaXplIEBidWxsZXQKKytAaXRlbSBAa2Jk e2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIG5vIiBbQGRvdHN7fV19CisrWW91IGNhbiB1c2UgQHZh bHVle0dEQk59IGNvbW1hbmQtbGluZSBvcHRpb24gZm9yIGEgc2luZ2xlIEB2YWx1ZXtHREJOfSBz ZXNzaW9uLgorKworK0BpdGVtIEBzYW1we34vLmdkYmluaXR9OiBAc2FtcHtzZXQgYXV0by1sb2Fk IG5vfQorK0Rpc2FibGUgYXV0by1sb2FkaW5nIGdsb2JhbGx5IGZvciB0aGUgdXNlcgorKyhAcHhy ZWZ7SG9tZSBEaXJlY3RvcnkgSW5pdCBGaWxlfSkuICBXaGlsZSBpdCBpcyBpbXByb2JhYmxlLCB5 b3UgY291bGQgYWxzbworK3VzZSBzeXN0ZW0gaW5pdCBmaWxlIGluc3RlYWQgKEBweHJlZntTeXN0 ZW0td2lkZSBjb25maWd1cmF0aW9ufSkuCisrQGVuZCBpdGVtaXplCisrCisrVGhpcyBzZXR0aW5n IGFwcGxpZXMgdG8gdGhlIGZpbGUgbmFtZXMgYXMgZW50ZXJlZCBieSB1c2VyLiAgSWYgbm8gZW50 cnkgbWF0Y2hlcworK0B2YWx1ZXtHREJOfSB0cmllcyBhcyBhIGxhc3QgcmVzb3J0IHRvIGFsc28g cmVzb2x2ZSBhbGwgdGhlIGZpbGUgbmFtZXMgaW50bworK3RoZWlyIGNhbm9uaWNhbCBmb3JtICh0 eXBpY2FsbHkgcmVzb2x2aW5nIHN5bWJvbGljIGxpbmtzKSBhbmQgY29tcGFyZSB0aGUKKytlbnRy aWVzIGFnYWluLiAgQHZhbHVle0dEQk59IGFscmVhZHkgY2Fub25pY2FsaXplcyBtb3N0IG9mIHRo ZSBmaWxlbmFtZXMgb24gaXRzCisrb3duIGJlZm9yZSBzdGFydGluZyB0aGUgY29tcGFyaXNvbiBz byBhIGNhbm9uaWNhbCBmb3JtIG9mIGRpcmVjdG9yaWVzIGlzCisrcmVjb21tZW5kZWQgdG8gYmUg ZW50ZXJlZC4KKysKKyBAbm9kZSBNZXNzYWdlcy9XYXJuaW5ncworIEBzZWN0aW9uIE9wdGlvbmFs IFdhcm5pbmdzIGFuZCBNZXNzYWdlcworIAorQEAgLTI0OTU1LDEwICsyNTA2MiwxMCBAQCBFeGFt cGxlOgorIAorIEBzbWFsbGV4YW1wbGUKKyAoZ2RiKSBpbmZvIGF1dG8tbG9hZCBweXRob24tc2Ny aXB0cworLUxvYWRlZCAgU2NyaXB0CistWWVzICAgICBweS1zZWN0aW9uLXNjcmlwdC5weQorLSAg ICAgICAgZnVsbCBuYW1lOiAvdG1wL3B5LXNlY3Rpb24tc2NyaXB0LnB5CistTWlzc2luZyBteS1m b28tcHJldHR5LXByaW50ZXJzLnB5CisrTG9hZGVkIFNjcmlwdAorK1llcyAgICBweS1zZWN0aW9u LXNjcmlwdC5weQorKyAgICAgICBmdWxsIG5hbWU6IC90bXAvcHktc2VjdGlvbi1zY3JpcHQucHkK KytObyAgICAgbXktZm9vLXByZXR0eS1wcmludGVycy5weQorIEBlbmQgc21hbGxleGFtcGxlCisg QGVuZCB0YWJsZQorIAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weS1h dXRvLWxvYWQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIv cHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAw CisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTIt MDQtMTggMDA6NDk6MjEuNjIxNzM1OTg1ICswMjAwCitAQCAtNzIsMTQgKzcyLDE5IEBAIHN0YXRp YyB2b2lkCisgZ2RicHlfbG9hZF9hdXRvX3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsIEZJTEUgKmZpbGUsCisgCQkJCSAgICBjb25zdCBjaGFyICpmaWxlbmFtZSkK KyB7CisrICBpbnQgaXNfc2FmZTsKKyAgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBz cGFjZV9pbmZvOworIAorKyAgaXNfc2FmZSA9IGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGZpbGVu YW1lKTsKKysKKyAgIC8qIEFkZCB0aGlzIHNjcmlwdCB0byB0aGUgaGFzaCB0YWJsZSB0b28gc28g ImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIgorICAgICAgY2FuIHByaW50IGl0LiAgKi8K KyAgIHBzcGFjZV9pbmZvID0gZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGluZyAo Y3VycmVudF9wcm9ncmFtX3NwYWNlKTsKKy0gIG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZv LCBmaWxlbmFtZSwgZmlsZW5hbWUsICZzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9uKTsKKysgIG1heWJl X2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBpc19zYWZlLCBmaWxlbmFtZSwgZmlsZW5hbWUsCisr CQkgICAgJnNjcmlwdF9sYW5ndWFnZV9weXRob24pOworIAorLSAgc291cmNlX3B5dGhvbl9zY3Jp cHRfZm9yX29iamZpbGUgKG9iamZpbGUsIGZpbGUsIGZpbGVuYW1lKTsKKysgIGlmIChpc19zYWZl KQorKyAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgZmlsZSwg ZmlsZW5hbWUpOworIH0KKyAKKyAvKiBMb2FkIHNjcmlwdHMgc3BlY2lmaWVkIGluIE9CSkZJTEUu CitAQCAtMTQ3LDYgKzE1Miw5IEBAIHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMgKHN0cnVjdCBvYmpm aWxlICoKKyAJeworIAkgIG1ha2VfY2xlYW51cF9mY2xvc2UgKHN0cmVhbSk7CisgCSAgbWFrZV9j bGVhbnVwICh4ZnJlZSwgZnVsbF9wYXRoKTsKKysKKysJICBpZiAoIWZpbGVfaXNfYXV0b19sb2Fk X3NhZmUgKGZ1bGxfcGF0aCkpCisrCSAgICBvcGVuZWQgPSAwOworIAl9CisgICAgICAgZWxzZQor IAl7CitAQCAtMTY3LDcgKzE3NSw3IEBAIFVzZSBgaW5mbyBhdXRvLWxvYWQgcHl0aG9uIFtSRUdF WFBdJyB0bworIAorIAkgSVdCTiBpZiBjb21wbGFpbnRzLmMgd2VyZSBtb3JlIGdlbmVyYWwtcHVy cG9zZS4gICovCisgCistICAgICAgaW5faGFzaF90YWJsZSA9IG1heWJlX2FkZF9zY3JpcHQgKHBz cGFjZV9pbmZvLCBmaWxlLCBmdWxsX3BhdGgsCisrICAgICAgaW5faGFzaF90YWJsZSA9IG1heWJl X2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBvcGVuZWQsIGZpbGUsIGZ1bGxfcGF0aCwKKyAJCQkJ CSZzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9uKTsKKyAKKyAgICAgICAvKiBJZiB0aGlzIGZpbGUgaXMg bm90IGN1cnJlbnRseSBsb2FkZWQsIGxvYWQgaXQuICAqLworSW5kZXg6IGdkYi03LjQuNTAuMjAx MjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LW9iamZpbGUtc2NyaXB0LmV4cAorPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5w eXRob24vcHktb2JqZmlsZS1zY3JpcHQuZXhwCTIwMTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAw ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24v cHktb2JqZmlsZS1zY3JpcHQuZXhwCTIwMTItMDQtMTggMDA6NDk6MjEuNjIxNzM1OTg1ICswMjAw CitAQCAtMzcsNiArMzcsNyBAQCBpZiB7IFtza2lwX3B5dGhvbl90ZXN0c10gfSB7IGNvbnRpbnVl IH0KKyBzZXQgcmVtb3RlX3B5dGhvbl9maWxlIFtyZW1vdGVfZG93bmxvYWQgaG9zdCAke3NyY2Rp cn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LWdkYi5weS5pbiAke3N1YmRpcn0vJHt0ZXN0ZmlsZX0t Z2RiLnB5XQorIAorIGdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgorK2dkYl90 ZXN0X25vX291dHB1dCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggJHtyZW1vdGVfcHl0aG9uX2Zp bGV9IiAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgiCisgZ2RiX2xvYWQgJHtiaW5maWxlfQorIAor ICMgVmVyaWZ5IGdkYiBsb2FkZWQgdGhlIHNjcmlwdC4KK0luZGV4OiBnZGItNy40LjUwLjIwMTIw MTIwL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1zZWN0aW9uLXNjcmlwdC5leHAKKz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0 aG9uL3B5LXNlY3Rpb24tc2NyaXB0LmV4cAkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCAr MDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5 LXNlY3Rpb24tc2NyaXB0LmV4cAkyMDEyLTA0LTE4IDAwOjQ5OjIxLjYyMTczNTk4NSArMDIwMAor QEAgLTQ5LDYgKzQ5LDcgQEAgaWYgeyBbc2tpcF9weXRob25fdGVzdHNdIH0geyBjb250aW51ZSB9 Cisgc2V0IHJlbW90ZV9weXRob25fZmlsZSBbcmVtb3RlX2Rvd25sb2FkIGhvc3QgJHtzcmNkaXJ9 LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS5weV0KKyAKKyBnZGJfcmVpbml0aWFsaXplX2RpciAkc3Jj ZGlyLyRzdWJkaXIKKytnZGJfdGVzdF9ub19vdXRwdXQgInNldCBhdXRvLWxvYWQgc2FmZS1wYXRo ICR7cmVtb3RlX3B5dGhvbl9maWxlfSIgInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIgorIGdkYl9s b2FkICR7YmluZmlsZX0KKyAKKyAjIFZlcmlmeSBnZGIgbG9hZGVkIHRoZSBzY3JpcHQuCgpkaWZm IC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTEyb2YxMi5wYXRjaCBiL2dkYi1hdXRvbG9hZC0xMm9mMTIu cGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzkyYmRiYwotLS0gL2Rl di9udWxsCisrKyBiL2dkYi1hdXRvbG9hZC0xMm9mMTIucGF0Y2gKQEAgLTAsMCArMSwzNTIgQEAK K1twYXRjaCM0IDYvOF0gc2V0IGRlYnVnIGF1dG8tbG9hZAoraHR0cDovL3NvdXJjZXdhcmUub3Jn L21sL2dkYi1wYXRjaGVzLzIwMTItMDQvbXNnMDAwODkuaHRtbAoraHR0cDovL3NvdXJjZXdhcmUu b3JnL21sL2dkYi1jdnMvMjAxMi0wNC9tc2cwMDExNS5odG1sCisKKyMjIyBzcmMvZ2RiL0NoYW5n ZUxvZwkyMDEyLzA0LzE3IDE1OjU0OjI4CTEuMTQxMTQKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwky MDEyLzA0LzE3IDE1OjU2OjIwCTEuMTQxMTUKKyMjIC0xLDUgKzEsMjcgQEAKKyAyMDEyLTA0LTE3 ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisgCisrCU5ldyBv cHRpb24gInNldCBkZWJ1ZyBhdXRvLWxvYWQiLgorKwkqIE5FV1M6IE5ldyBjb21tYW5kcyAic2V0 IGRlYnVnIGF1dG8tbG9hZCIgYW5kICJzaG93IGRlYnVnIGF1dG8tbG9hZCIuCisrCSogYXV0by1s b2FkLmMgKGRlYnVnX2F1dG9fbG9hZCwgc2hvd19kZWJ1Z19hdXRvX2xvYWQ6IE5ldy4KKysJKGF1 dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSkKKysJKGZpbGVuYW1lX2lzX2luX2F1dG9fbG9h ZF9zYWZlX3BhdGhfdmVjKTogQ2FsbCBmcHJpbnRmX3VuZmlsdGVyZWQKKysJaWYgREVCVUdfQVVU T19MT0FELgorKwkoZmlsZV9pc19hdXRvX2xvYWRfc2FmZSk6IE5ldyBwYXJhbWV0ZXJzIGRlYnVn X2ZtdCBhbmQgLi4uLgorKwlDYWxsIGZwcmludGZfdW5maWx0ZXJlZCBpZiBERUJVR19BVVRPX0xP QUQuCisrCShzb3VyY2VfZ2RiX3NjcmlwdF9mb3Jfb2JqZmlsZSk6IEV4dGVuZCB0aGUgZmlsZV9p c19hdXRvX2xvYWRfc2FmZQorKwljYWxsZXIgYnkgZXhwbGFuYXRvcnkgc3RyaW5nLgorKwkoX2lu aXRpYWxpemVfYXV0b19sb2FkKTogUmVnaXN0ZXIgInNldCBkZWJ1ZyBhdXRvLWxvYWQiLgorKwkq IGF1dG8tbG9hZC5oIChmaWxlX2lzX2F1dG9fbG9hZF9zYWZlKTogTmV3IHBhcmFtZXRlcnMgZGVi dWdfZm10CisrCWFuZCAuLi4uCisrCSogbGludXgtdGhyZWFkLWRiLmMgKHRyeV90aHJlYWRfZGJf bG9hZF9mcm9tX3BkaXJfMSkKKysJKHRyeV90aHJlYWRfZGJfbG9hZF9mcm9tX2Rpcik6IEV4dGVu ZCB0aGUgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSBjYWxsZXIKKysJYnkgZXhwbGFuYXRvcnkgc3Ry aW5nLgorKwkqIG1haW4uYyAoY2FwdHVyZWRfbWFpbik6IExpa2V3aXNlLgorKwkqIHB5dGhvbi9w eS1hdXRvLWxvYWQuYyAoZ2RicHlfbG9hZF9hdXRvX3NjcmlwdF9mb3Jfb2JqZmlsZSkKKysJKHNv dXJjZV9zZWN0aW9uX3NjcmlwdHMpOiBMaWtld2lzZS4KKysKKysyMDEyLTA0LTE3ICBKYW4gS3Jh dG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisrCisgCU5ldyBvcHRpb24gInNl dCBhdXRvLWxvYWQgc2FmZS1wYXRoIi4KKyAJKiBORVdTOiBOZXcgY29tbWFuZHMgInNldCBhdXRv LWxvYWQgc2FmZS1wYXRoIgorIAlhbmQgInNob3cgYXV0by1sb2FkIHNhZmUtcGF0aCIuCitJbmRl eDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTkVXUworPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQu NTAuMjAxMjAxMjAub3JpZy9nZGIvTkVXUwkyMDEyLTA0LTE4IDAwOjQ5OjMzLjAwMDAwMDAwMCAr MDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL05FV1MJMjAxMi0wNC0xOCAwMDo1MDox NS4wMTg2MDAyODIgKzAyMDAKK0BAIC03Miw2ICs3MiwxMCBAQCBzaG93IGF1dG8tbG9hZCBzYWZl LXBhdGgKKyAgIFNldCBhIGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZl IHRvIGF1dG8tbG9hZCBmaWxlcy4KKyAgIFRoZSBkZWxpbWl0ZXIgKCc6JyBhYm92ZSkgbWF5IGRp ZmZlciBhY2NvcmRpbmcgdG8gdGhlIGhvc3QgcGxhdGZvcm0uCisgCisrc2V0IGRlYnVnIGF1dG8t bG9hZCBvbnxvZmYKKytzaG93IGRlYnVnIGF1dG8tbG9hZAorKyAgQ29udHJvbCBkaXNwbGF5IG9m IGRlYnVnZ2luZyBpbmZvIGZvciBhdXRvLWxvYWRpbmcgdGhlIGZpbGVzIGFib3ZlLgorKworICog TmV3IGNvbW1hbmQgbGluZSBvcHRpb25zCisgCisgLS1pbml0LWNvbW1hbmQ9RklMRSwgLWl4ICAg ICAgICAgIExpa2UgLS1jb21tYW5kLCAteCBidXQgZXhlY3V0ZSBpdAorSW5kZXg6IGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4y MDEyMDEyMC5vcmlnL2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQ5OjIxLjAwMDAwMDAw MCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCTIwMTItMDQt MTggMDA6NTA6MDQuODAxNjI2MjM1ICswMjAwCitAQCAtNDMsNiArNDMsMjAgQEAKKyBzdGF0aWMg dm9pZCBzb3VyY2VfZ2RiX3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUsIEZJTEUgKmZpbGUsCisgCQkJCQkgICBjb25zdCBjaGFyICpmaWxlbmFtZSk7CisgCisrLyog VmFsdWUgb2YgdGhlICdzZXQgZGVidWcgYXV0by1sb2FkJyBjb25maWd1cmF0aW9uIHZhcmlhYmxl LiAgKi8KKytzdGF0aWMgaW50IGRlYnVnX2F1dG9fbG9hZCA9IDA7CisrCisrLyogInNob3ciIGNv bW1hbmQgZm9yIHRoZSBkZWJ1Z19hdXRvX2xvYWQgY29uZmlndXJhdGlvbiB2YXJpYWJsZS4gICov CisrCisrc3RhdGljIHZvaWQKKytzaG93X2RlYnVnX2F1dG9fbG9hZCAoc3RydWN0IHVpX2ZpbGUg KmZpbGUsIGludCBmcm9tX3R0eSwKKysJCSAgICAgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpj LCBjb25zdCBjaGFyICp2YWx1ZSkKKyt7CisrICBmcHJpbnRmX2ZpbHRlcmVkIChmaWxlLCBfKCJE ZWJ1Z2dpbmcgb3V0cHV0IGZvciBmaWxlcyAiCisrCQkJICAgICJvZiAnc2V0IGF1dG8tbG9hZCAu Li4nIGlzICVzLlxuIiksCisrCQkgICAgdmFsdWUpOworK30KKysKKyAvKiBVc2VyLXNldHRhYmxl IG9wdGlvbiB0byBlbmFibGUvZGlzYWJsZSBhdXRvLWxvYWRpbmcgb2YgR0RCX0FVVE9fRklMRV9O QU1FCisgICAgc2NyaXB0czoKKyAgICBzZXQgYXV0by1sb2FkIGdkYi1zY3JpcHRzIG9ufG9mZgor QEAgLTExMiw2ICsxMjYsMTEgQEAgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlICh2b2lk KQorICAgdW5zaWduZWQgbGVuOworICAgaW50IGl4OworIAorKyAgaWYgKGRlYnVnX2F1dG9fbG9h ZCkKKysgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAorKwkJCV8oImF1dG8tbG9h ZDogVXBkYXRpbmcgZGlyZWN0b3JpZXMgb2YgXCIlc1wiLlxuIiksCisrCQkJYXV0b19sb2FkX3Nh ZmVfcGF0aCk7CisrCisgICBmcmVlX2NoYXJfcHRyX3ZlYyAoYXV0b19sb2FkX3NhZmVfcGF0aF92 ZWMpOworIAorICAgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMgPSBkaXJuYW1lc190b19jaGFyX3B0 cl92ZWMgKGF1dG9fbG9hZF9zYWZlX3BhdGgpOworQEAgLTEyNiwxNCArMTQ1LDM0IEBAIGF1dG9f bG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAodm9pZCkKKyAgICAgICBjaGFyICpyZWFsX3BhdGgg PSBnZGJfcmVhbHBhdGggKGV4cGFuZGVkKTsKKyAKKyAgICAgICAvKiBFbnN1cmUgdGhlIGN1cnJl bnQgZW50cnkgaXMgYXQgbGVhc3QgdGlsZGVfZXhwYW5kLWVkLiAgKi8KKy0gICAgICB4ZnJlZSAo ZGlyKTsKKyAgICAgICBWRUNfcmVwbGFjZSAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhf dmVjLCBpeCwgZXhwYW5kZWQpOworIAorKyAgICAgIGlmIChkZWJ1Z19hdXRvX2xvYWQpCisrCXsK KysJICBpZiAoc3RyY21wIChleHBhbmRlZCwgZGlyKSA9PSAwKQorKwkgICAgZnByaW50Zl91bmZp bHRlcmVkIChnZGJfc3RkbG9nLAorKwkJCQlfKCJhdXRvLWxvYWQ6IFVzaW5nIGRpcmVjdG9yeSBc IiVzXCIuXG4iKSwKKysJCQkJZXhwYW5kZWQpOworKwkgIGVsc2UKKysJICAgIGZwcmludGZfdW5m aWx0ZXJlZCAoZ2RiX3N0ZGxvZywKKysJCQkJXygiYXV0by1sb2FkOiBSZXNvbHZlZCBkaXJlY3Rv cnkgXCIlc1wiICIKKysJCQkJICAiYXMgXCIlc1wiLlxuIiksCisrCQkJCWRpciwgZXhwYW5kZWQp OworKwl9CisrICAgICAgeGZyZWUgKGRpcik7CisrCisgICAgICAgLyogSWYgZ2RiX3JlYWxwYXRo IHJldHVybnMgYSBkaWZmZXJlbnQgY29udGVudCwgYXBwZW5kIGl0LiAgKi8KKyAgICAgICBpZiAo c3RyY21wIChyZWFsX3BhdGgsIGV4cGFuZGVkKSA9PSAwKQorIAl4ZnJlZSAocmVhbF9wYXRoKTsK KyAgICAgICBlbHNlCistCVZFQ19zYWZlX3B1c2ggKGNoYXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9w YXRoX3ZlYywgcmVhbF9wYXRoKTsKKysJeworKwkgIFZFQ19zYWZlX3B1c2ggKGNoYXJfcHRyLCBh dXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgcmVhbF9wYXRoKTsKKysKKysJICBpZiAoZGVidWdfYXV0 b19sb2FkKQorKwkgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAorKwkJCQlfKCJh dXRvLWxvYWQ6IEFuZCBjYW5vbmljYWxpemVkIGFzIFwiJXNcIi5cbiIpLAorKwkJCQlyZWFsX3Bh dGgpOworKwl9CisgICAgIH0KKyB9CisgCitAQCAtMjE3LDE2ICsyNTYsMzAgQEAgZmlsZW5hbWVf aXNfaW5fYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMgKAorICAgaWYgKGRpciA9PSBOVUxMKQorICAg ICB7CisgICAgICAgaWYgKCpmaWxlbmFtZV9yZWFscCA9PSBOVUxMKQorLQkqZmlsZW5hbWVfcmVh bHAgPSBnZGJfcmVhbHBhdGggKGZpbGVuYW1lKTsKKysJeworKwkgICpmaWxlbmFtZV9yZWFscCA9 IGdkYl9yZWFscGF0aCAoZmlsZW5hbWUpOworKwkgIGlmIChkZWJ1Z19hdXRvX2xvYWQgJiYgc3Ry Y21wICgqZmlsZW5hbWVfcmVhbHAsIGZpbGVuYW1lKSAhPSAwKQorKwkgICAgZnByaW50Zl91bmZp bHRlcmVkIChnZGJfc3RkbG9nLAorKwkJCQlfKCJhdXRvLWxvYWQ6IFJlc29sdmVkICIKKysJCQkJ ICAiZmlsZSBcIiVzXCIgYXMgXCIlc1wiLlxuIiksCisrCQkJCWZpbGVuYW1lLCAqZmlsZW5hbWVf cmVhbHApOworKwl9CisgCistICAgICAgZm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChjaGFyX3B0 ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMsIGl4LCBkaXIpOworLQkgICArK2l4KQorLQlpZiAo ZmlsZW5hbWVfaXNfaW5fZGlyICgqZmlsZW5hbWVfcmVhbHAsIGRpcikpCistCSAgYnJlYWs7Cisr ICAgICAgaWYgKHN0cmNtcCAoKmZpbGVuYW1lX3JlYWxwLCBmaWxlbmFtZSkgIT0gMCkKKysJZm9y IChpeCA9IDA7IFZFQ19pdGVyYXRlIChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMs IGl4LCBkaXIpOworKwkgICAgICsraXgpCisrCSAgaWYgKGZpbGVuYW1lX2lzX2luX2RpciAoKmZp bGVuYW1lX3JlYWxwLCBkaXIpKQorKwkgICAgYnJlYWs7CisgICAgIH0KKyAKKyAgIGlmIChkaXIg IT0gTlVMTCkKKy0gICAgcmV0dXJuIDE7CisrICAgIHsKKysgICAgICBpZiAoZGVidWdfYXV0b19s b2FkKQorKwlmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csIF8oImF1dG8tbG9hZDogRmls ZSBcIiVzXCIgbWF0Y2hlcyAiCisrCQkJCQkgICJkaXJlY3RvcnkgXCIlc1wiLlxuIiksCisrCQkJ ICAgIGZpbGVuYW1lLCBkaXIpOworKyAgICAgIHJldHVybiAxOworKyAgICB9CisgCisgICByZXR1 cm4gMDsKKyB9CitAQCAtMjQwLDExICsyOTMsMjAgQEAgZmlsZW5hbWVfaXNfaW5fYXV0b19sb2Fk X3NhZmVfcGF0aF92ZWMgKAorICAgIGRpcmVjdG9yeS4gICovCisgCisgaW50CistZmlsZV9pc19h dXRvX2xvYWRfc2FmZSAoY29uc3QgY2hhciAqZmlsZW5hbWUpCisrZmlsZV9pc19hdXRvX2xvYWRf c2FmZSAoY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKmRlYnVnX2ZtdCwgLi4uKQor IHsKKyAgIGNoYXIgKmZpbGVuYW1lX3JlYWwgPSBOVUxMOworICAgc3RydWN0IGNsZWFudXAgKmJh Y2tfdG87CisgCisrICBpZiAoZGVidWdfYXV0b19sb2FkKQorKyAgICB7CisrICAgICAgdmFfbGlz dCBkZWJ1Z19hcmdzOworKworKyAgICAgIHZhX3N0YXJ0IChkZWJ1Z19hcmdzLCBkZWJ1Z19mbXQp OworKyAgICAgIHZmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csIGRlYnVnX2ZtdCwgZGVi dWdfYXJncyk7CisrICAgICAgdmFfZW5kIChkZWJ1Z19hcmdzKTsKKysgICAgfQorKworICAgYmFj a190byA9IG1ha2VfY2xlYW51cCAoZnJlZV9jdXJyZW50X2NvbnRlbnRzLCAmZmlsZW5hbWVfcmVh bCk7CisgCisgICBpZiAoZmlsZW5hbWVfaXNfaW5fYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMgKGZp bGVuYW1lLCAmZmlsZW5hbWVfcmVhbCkpCitAQCAtMjgxLDcgKzM0MywxMCBAQCBzb3VyY2VfZ2Ri X3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9iCisgICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFj ZV9pbmZvICpwc3BhY2VfaW5mbzsKKyAgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGU7 CisgCistICBpc19zYWZlID0gZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoZmlsZW5hbWUpOworKyAg aXNfc2FmZSA9IGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGZpbGVuYW1lLCBfKCJhdXRvLWxvYWQ6 IExvYWRpbmcgY2FubmVkICIKKysJCQkJCQkic2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNjcmlwdCAi CisrCQkJCQkJIlwiJXNcIiBmb3Igb2JqZmlsZSBcIiVzXCIuXG4iKSwKKysJCQkJICAgIGZpbGVu YW1lLCBvYmpmaWxlLT5uYW1lKTsKKyAKKyAgIC8qIEFkZCB0aGlzIHNjcmlwdCB0byB0aGUgaGFz aCB0YWJsZSB0b28gc28gImluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzIgorICAgICAgY2FuIHBy aW50IGl0LiAgKi8KK0BAIC05NzUsNCArMTA0MCwxMyBAQCBTZWUgdGhlIGNvbW1hbmRzICdzZXQg YXV0by1sb2FkIHNhZmUtcGF0CisgYWNjZXNzIHRoZSBjdXJyZW50IGZ1bGwgbGlzdCBzZXR0aW5n LiIpLAorIAkJICZjbWRsaXN0KTsKKyAgIHNldF9jbWRfY29tcGxldGVyIChjbWQsIGZpbGVuYW1l X2NvbXBsZXRlcik7CisrCisrICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoImF1dG8tbG9hZCIs IGNsYXNzX21haW50ZW5hbmNlLAorKwkJCSAgICZkZWJ1Z19hdXRvX2xvYWQsIF8oIlwKKytTZXQg YXV0by1sb2FkIHZlcmlmaWNhdGlvbnMgZGVidWdnaW5nLiIpLCBfKCJcCisrU2hvdyBhdXRvLWxv YWQgdmVyaWZpY2F0aW9ucyBkZWJ1Z2dpbmcuIiksIF8oIlwKKytXaGVuIG5vbi16ZXJvLCBkZWJ1 Z2dpbmcgb3V0cHV0IGZvciBmaWxlcyBvZiAnc2V0IGF1dG8tbG9hZCAuLi4nXG5cCisraXMgZGlz cGxheWVkLiIpLAorKwkJCSAgICBOVUxMLCBzaG93X2RlYnVnX2F1dG9fbG9hZCwKKysJCQkgICAg JnNldGRlYnVnbGlzdCwgJnNob3dkZWJ1Z2xpc3QpOworIH0KK0luZGV4OiBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi9hdXRvLWxvYWQuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAx MjAub3JpZy9nZGIvYXV0by1sb2FkLmgJMjAxMi0wNC0xOCAwMDo0OToyMS4wMDAwMDAwMDAgKzAy MDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuaAkyMDEyLTA0LTE4IDAw OjUwOjA0LjgwMTYyNjIzNSArMDIwMAorQEAgLTU1LDYgKzU1LDcgQEAgZXh0ZXJuIHN0cnVjdCBj bWRfbGlzdF9lbGVtZW50ICoqYXV0b19sbworIGV4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVu dCAqKmF1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0ICh2b2lkKTsKKyBleHRlcm4gc3RydWN0IGNt ZF9saXN0X2VsZW1lbnQgKiphdXRvX2xvYWRfaW5mb19jbWRsaXN0X2dldCAodm9pZCk7CisgCist ZXh0ZXJuIGludCBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChjb25zdCBjaGFyICpmaWxlbmFtZSk7 CisrZXh0ZXJuIGludCBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChjb25zdCBjaGFyICpmaWxlbmFt ZSwKKysJCQkJICAgY29uc3QgY2hhciAqZGVidWdfZm10LCAuLi4pOworIAorICNlbmRpZiAvKiBB VVRPX0xPQURfSCAqLworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2xpbnV4LXRocmVh ZC1kYi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9saW51 eC10aHJlYWQtZGIuYwkyMDEyLTA0LTE4IDAwOjQ5OjIxLjAwMDAwMDAwMCArMDIwMAorKysrIGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL2xpbnV4LXRocmVhZC1kYi5jCTIwMTItMDQtMTggMDA6NTA6 MDQuODAxNjI2MjM1ICswMjAwCitAQCAtODY5LDcgKzg2OSw5IEBAIHRyeV90aHJlYWRfZGJfbG9h ZF9mcm9tX3BkaXJfMSAoc3RydWN0IG8KKyAgIGdkYl9hc3NlcnQgKGNwICE9IE5VTEwpOworICAg c3RyY3B5IChjcCArIDEsIExJQlRIUkVBRF9EQl9TTyk7CisgCistICBpZiAoIWZpbGVfaXNfYXV0 b19sb2FkX3NhZmUgKHBhdGgpKQorKyAgaWYgKCFmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChwYXRo LCBfKCJhdXRvLWxvYWQ6IExvYWRpbmcgbGlidGhyZWFkLWRiICIKKysJCQkJICAgICAgICJsaWJy YXJ5IFwiJXNcIiBmcm9tICRwZGlyLlxuIiksCisrCQkJICAgICAgIHBhdGgpKQorICAgICByZXN1 bHQgPSAwOworICAgZWxzZQorICAgICByZXN1bHQgPSB0cnlfdGhyZWFkX2RiX2xvYWQgKHBhdGgp OworQEAgLTkzOSw3ICs5NDEsMTAgQEAgdHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21fZGlyIChjb25z dCBjaGFyCisgICBwYXRoW2Rpcl9sZW5dID0gJy8nOworICAgc3RyY3B5IChwYXRoICsgZGlyX2xl biArIDEsIExJQlRIUkVBRF9EQl9TTyk7CisgCistICBpZiAoIWZpbGVfaXNfYXV0b19sb2FkX3Nh ZmUgKHBhdGgpKQorKyAgaWYgKCFmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChwYXRoLCBfKCJhdXRv LWxvYWQ6IExvYWRpbmcgbGlidGhyZWFkLWRiICIKKysJCQkJICAgICAgICJsaWJyYXJ5IFwiJXNc IiBmcm9tIGV4cGxpY2l0ICIKKysJCQkJICAgICAgICJkaXJlY3RvcnkuXG4iKSwKKysJCQkgICAg ICAgcGF0aCkpCisgICAgIHJlc3VsdCA9IDA7CisgICBlbHNlCisgICAgIHJlc3VsdCA9IHRyeV90 aHJlYWRfZGJfbG9hZCAocGF0aCk7CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbWFp bi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9tYWluLmMJ MjAxMi0wNC0xOCAwMDo0OToyMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIw MTIwL2dkYi9tYWluLmMJMjAxMi0wNC0xOCAwMDo1MDowNC44MDE2MjYyMzUgKzAyMDAKK0BAIC0x MDI3LDcgKzEwMjcsMTAgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKKyAgICAgICBhdXRv X2xvYWRfbG9jYWxfZ2RiaW5pdF9wYXRobmFtZSA9IGdkYl9yZWFscGF0aCAobG9jYWxfZ2RiaW5p dCk7CisgCisgICAgICAgaWYgKCFpbmhpYml0X2dkYmluaXQgJiYgYXV0b19sb2FkX2xvY2FsX2dk YmluaXQKKy0JICAmJiBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChsb2NhbF9nZGJpbml0KSkKKysJ ICAmJiBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChsb2NhbF9nZGJpbml0LAorKwkJCQkgICAgIF8o ImF1dG8tbG9hZDogTG9hZGluZyAuZ2RiaW5pdCAiCisrCQkJCSAgICAgICAiZmlsZSBcIiVzXCIu XG4iKSwKKysJCQkJICAgICBsb2NhbF9nZGJpbml0KSkKKyAJeworIAkgIGF1dG9fbG9hZF9sb2Nh bF9nZGJpbml0X2xvYWRlZCA9IDE7CisgCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv ZG9jL2dkYi50ZXhpbmZvCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmln L2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNC0xOCAwMDo0OToyMS4wMDAwMDAwMDAgKzAyMDAK KysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNC0xOCAw MDo1MDowNC44MDk2MjYyMTUgKzAyMDAKK0BAIC0yMDg4Nyw2ICsyMDg4Nyw3IEBAIFRoZXNlIGFy ZSBAdmFsdWV7R0RCTn0gY29udHJvbCBjb21tYW5kcworICogbGlidGhyZWFkX2RiLnNvLjEgZmls ZTo6ICAgICAgICAgICAgIEBzYW1we3NldC9zaG93L2luZm8gYXV0by1sb2FkIGxpYnRocmVhZC1k Yn0KKyAqIG9iamZpbGUtZ2RiLmdkYiBmaWxlOjogICAgICAgICAgICAgICBAc2FtcHtzZXQvc2hv dy9pbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0fQorICogQXV0by1sb2FkaW5nIHNhZmUgcGF0aDo6 ICAgICAgICAgICAgIEBzYW1we3NldC9zaG93L2luZm8gYXV0by1sb2FkIHNhZmUtcGF0aH0KKysq IEF1dG8tbG9hZGluZyB2ZXJib3NlIG1vZGU6OiAgICAgICAgICBAc2FtcHtzZXQvc2hvdyBkZWJ1 ZyBhdXRvLWxvYWR9CisgQHhyZWZ7UHl0aG9uIEF1dG8tbG9hZGluZ30uCisgQGVuZCBtZW51Cisg CitAQCAtMjEwODUsNiArMjEwODYsNDUgQEAgZW50cmllcyBhZ2Fpbi4gIEB2YWx1ZXtHREJOfSBh bHJlYWR5IGNhbgorIG93biBiZWZvcmUgc3RhcnRpbmcgdGhlIGNvbXBhcmlzb24gc28gYSBjYW5v bmljYWwgZm9ybSBvZiBkaXJlY3RvcmllcyBpcworIHJlY29tbWVuZGVkIHRvIGJlIGVudGVyZWQu CisgCisrQG5vZGUgQXV0by1sb2FkaW5nIHZlcmJvc2UgbW9kZQorK0BzdWJzZWN0aW9uIERpc3Bs YXlpbmcgZmlsZXMgdHJpZWQgZm9yIGF1dG8tbG9hZAorK0BjaW5kZXggYXV0by1sb2FkaW5nIHZl cmJvc2UgbW9kZQorKworK0ZvciBiZXR0ZXIgdmlzaWJpbGl0eSBvZiBhbGwgdGhlIGZpbGUgbG9j YXRpb25zIHdoZXJlIHlvdSBjYW4gcGxhY2Ugc2NyaXB0cyB0bworK2JlIGF1dG8tbG9hZGVkIHdp dGggaW5mZXJpb3IgLS0tIG9yIHRvIHByb3RlY3QgeW91cnNlbGYgYWdhaW5zdCBhY2NpZGVudGFs CisrZXhlY3V0aW9uIG9mIHVudHJ1c3RlZCBzY3JpcHRzIC0tLSBAdmFsdWV7R0RCTn0gcHJvdmlk ZXMgYSBmZWF0dXJlIGZvciBwcmludGluZworK2FsbCB0aGUgZmlsZXMgYXR0ZW1wdGVkIHRvIGJl IGxvYWRlZC4gIEJvdGggZXhpc3RpbmcgYW5kIG5vbi1leGlzdGluZyBmaWxlcyBtYXkKKytiZSBw cmludGVkLgorKworK0ZvciBleGFtcGxlIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hp Y2ggaXQgaXMgc2FmZSB0byBhdXRvLWxvYWQgZmlsZXMKKysoQHB4cmVme0F1dG8tbG9hZGluZyBz YWZlIHBhdGh9KSBhcHBsaWVzIGFsc28gdG8gY2Fub25pY2FsaXplZCBmaWxlbmFtZXMgd2hpY2gK KyttYXkgbm90IGJlIHRvbyBvYnZpb3VzIHdoaWxlIHNldHRpbmcgaXQgdXAuCisrCisrQHNtYWxs ZXhhbXBsZQorKyhnZGIpIHNldCBkZWJ1ZyBhdXRvLWxvYWQgdWVzCisrKGdkYikgZmlsZSB+L3Ny Yy90L3RydWUKKythdXRvLWxvYWQ6IExvYWRpbmcgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5k cyBzY3JpcHQgIi90bXAvdHJ1ZS1nZGIuZ2RiIgorKyAgICAgICAgICAgZm9yIG9iamZpbGUgIi90 bXAvdHJ1ZSIuCisrYXV0by1sb2FkOiBVcGRhdGluZyBkaXJlY3RvcmllcyBvZiAiL3Vzcjovb3B0 Ii4KKythdXRvLWxvYWQ6IFVzaW5nIGRpcmVjdG9yeSAiL3VzciIuCisrYXV0by1sb2FkOiBVc2lu ZyBkaXJlY3RvcnkgIi9vcHQiLgorK3dhcm5pbmc6IEZpbGUgIi90bXAvdHJ1ZS1nZGIuZ2RiIiBh dXRvLWxvYWRpbmcgaGFzIGJlZW4gZGVjbGluZWQKKysgICAgICAgICBieSB5b3VyIGBhdXRvLWxv YWQgc2FmZS1wYXRoJyBzZXQgdG8gIi91c3I6L29wdCIuCisrQGVuZCBzbWFsbGV4YW1wbGUKKysK KytAdGFibGUgQGNvZGUKKytAYW5jaG9ye3NldCBkZWJ1ZyBhdXRvLWxvYWR9CisrQGtpbmRleCBz ZXQgZGVidWcgYXV0by1sb2FkCisrQGl0ZW0gc2V0IGRlYnVnIGF1dG8tbG9hZCBbb258b2ZmXQor K1NldCB3aGV0aGVyIHRvIHByaW50IHRoZSBmaWxlbmFtZXMgYXR0ZW1wdGVkIHRvIGJlIGF1dG8t bG9hZGVkLgorKworK0BhbmNob3J7c2hvdyBkZWJ1ZyBhdXRvLWxvYWR9CisrQGtpbmRleCBzaG93 IGRlYnVnIGF1dG8tbG9hZAorK0BpdGVtIHNob3cgZGVidWcgYXV0by1sb2FkCisrU2hvdyB3aGV0 aGVyIHByaW50aW5nIG9mIHRoZSBmaWxlbmFtZXMgYXR0ZW1wdGVkIHRvIGJlIGF1dG8tbG9hZGVk IGlzIHR1cm5lZAorK29uIG9yIG9mZi4KKytAZW5kIHRhYmxlCisrCisgQG5vZGUgTWVzc2FnZXMv V2FybmluZ3MKKyBAc2VjdGlvbiBPcHRpb25hbCBXYXJuaW5ncyBhbmQgTWVzc2FnZXMKKyAKK0lu ZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMKKz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weS1hdXRvLWxv YWQuYwkyMDEyLTA0LTE4IDAwOjQ5OjIxLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjUwOjA0Ljgx MDYyNjIxMiArMDIwMAorQEAgLTc1LDcgKzc1LDEwIEBAIGdkYnB5X2xvYWRfYXV0b19zY3JpcHRf Zm9yX29iamZpbGUgKHN0cnUKKyAgIGludCBpc19zYWZlOworICAgc3RydWN0IGF1dG9fbG9hZF9w c3BhY2VfaW5mbyAqcHNwYWNlX2luZm87CisgCistICBpc19zYWZlID0gZmlsZV9pc19hdXRvX2xv YWRfc2FmZSAoZmlsZW5hbWUpOworKyAgaXNfc2FmZSA9IGZpbGVfaXNfYXV0b19sb2FkX3NhZmUg KGZpbGVuYW1lLAorKwkJCQkgICAgXygiYXV0by1sb2FkOiBMb2FkaW5nIFB5dGhvbiBzY3JpcHQg XCIlc1wiICIKKysJCQkJICAgICAgImJ5IGV4dGVuc2lvbiBmb3Igb2JqZmlsZSBcIiVzXCIuXG4i KSwKKysJCQkJICAgIGZpbGVuYW1lLCBvYmpmaWxlLT5uYW1lKTsKKyAKKyAgIC8qIEFkZCB0aGlz IHNjcmlwdCB0byB0aGUgaGFzaCB0YWJsZSB0b28gc28gImluZm8gYXV0by1sb2FkIHB5dGhvbi1z Y3JpcHRzIgorICAgICAgY2FuIHByaW50IGl0LiAgKi8KK0BAIC0xNTMsNyArMTU2LDEyIEBAIHNv dXJjZV9zZWN0aW9uX3NjcmlwdHMgKHN0cnVjdCBvYmpmaWxlICoKKyAJICBtYWtlX2NsZWFudXBf ZmNsb3NlIChzdHJlYW0pOworIAkgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGZ1bGxfcGF0aCk7Cisg CistCSAgaWYgKCFmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChmdWxsX3BhdGgpKQorKwkgIGlmICgh ZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoZnVsbF9wYXRoLAorKwkJCQkgICAgICAgXygiYXV0by1s b2FkOiBMb2FkaW5nIFB5dGhvbiBzY3JpcHQgIgorKwkJCQkJICJcIiVzXCIgZnJvbSBzZWN0aW9u IFwiJXNcIiBvZiAiCisrCQkJCQkgIm9iamZpbGUgXCIlc1wiLlxuIiksCisrCQkJCSAgICAgICBm dWxsX3BhdGgsIEdEQlBZX0FVVE9fU0VDVElPTl9OQU1FLAorKwkJCQkgICAgICAgb2JqZmlsZS0+ bmFtZSkpCisgCSAgICBvcGVuZWQgPSAwOworIAl9CisgICAgICAgZWxzZQoKZGlmZiAtLWdpdCBh L2dkYi5zcGVjIGIvZ2RiLnNwZWMKaW5kZXggMjc0ZmFlMC4uNjY3ZDVkZiAxMDA2NDQKLS0tIGEv Z2RiLnNwZWMKKysrIGIvZ2RiLnNwZWMKQEAgLTMzLDcgKzMzLDcgQEAgVmVyc2lvbjogNy40LjUw LiV7c25hcH0KIAogIyBUaGUgcmVsZWFzZSBhbHdheXMgY29udGFpbnMgYSBsZWFkaW5nIHJlc2Vy dmVkIG51bWJlciwgc3RhcnQgaXQgYXQgMS4KICMgYHVwc3RyZWFtJyBpcyBub3QgYSBwYXJ0IG9m IGBuYW1lJyB0byBzdGF5IGZ1bGx5IHJwbSBkZXBlbmRlbmNpZXMgY29tcGF0aWJsZSBmb3IgdGhl IHRlc3RpbmcuCi1SZWxlYXNlOiAzOSV7P2Rpc3R9CitSZWxlYXNlOiA0MCV7P2Rpc3R9CiAKIExp Y2Vuc2U6IEdQTHYzKyBhbmQgR1BMdjMrIHdpdGggZXhjZXB0aW9ucyBhbmQgR1BMdjIrIGFuZCBH UEx2Misgd2l0aCBleGNlcHRpb25zIGFuZCBHUEwrIGFuZCBMR1BMdjIrIGFuZCBCU0QgYW5kIFB1 YmxpYyBEb21haW4KIEdyb3VwOiBEZXZlbG9wbWVudC9EZWJ1Z2dlcnMKQEAgLTE3NCwxMCArMTc0 LDYgQEAgUGF0Y2gxNDU6IGdkYi02LjMtdGhyZWFkZWQtd2F0Y2hwb2ludHMyLTIwMDUwMjI1LnBh dGNoCiAjPWlhNjQKIFBhdGNoMTUzOiBnZGItNi4zLWlhNjQtZ2NvcmUtcGFnZTAtMjAwNTA0MjEu cGF0Y2gKIAotIyBTZWN1cml0eSBlcnJhdGEgZm9yIHVudHJ1c3RlZCAuZ2RiaW5pdAotIz1wdXNo Ci1QYXRjaDE1NzogZ2RiLTYuMy1zZWN1cml0eS1lcnJhdGEtMjAwNTA2MTAucGF0Y2gKLQogIyBJ QTY0IHNpZ3RyYW1wIHByZXYgcmVnaXN0ZXIgcGF0Y2gKICM9aWE2NAogUGF0Y2gxNTg6IGdkYi02 LjMtaWE2NC1zaWd0cmFtcC1mcmFtZS0yMDA1MDcwOC5wYXRjaApAQCAtNTY5LDE5ICs1NjUsMzgg QEAgUGF0Y2g2NTM6IGdkYi1hdHRhY2gtZmFpbC1yZWFzb25zLTVvZjUucGF0Y2gKIFBhdGNoNjU3 OiBnZGItYXR0YWNoLWZhaWwtcmVhc29ucy01b2Y1Y29uZmlndXJlLnBhdGNoCiAKICMgRml4IGlu ZmVyaW9yIGNhbGxzLCBwYXJ0aWN1bGFybHkgdW5jYXVnaHQgdGhyb3duIGV4Y2VwdGlvbnMgKEJa IDc5OTUzMSkuCisjPXB1c2grd29yawogUGF0Y2g2NTQ6IGdkYi14ODYtb25zdGFjay0xb2YyLnBh dGNoCiBQYXRjaDY1ODogZ2RiLXg4Ni1vbnN0YWNrLTJvZjIucGF0Y2gKIAogIyBGaXggRFdBUkYg RElFcyBDVSB2cy4gc2VjdGlvbiByZWxhdGl2ZSBvZmZzZXRzIChKb2VsIEJyb2JlY2tlciwgbWUp LgorIz1wdXNoCiBQYXRjaDY1NTogZ2RiLWRpZS1jdS1vZmZzZXQtMW9mMi5wYXRjaAogUGF0Y2g2 NTY6IGdkYi1kaWUtY3Utb2Zmc2V0LTJvZjIucGF0Y2gKIAogIyBbdmxhXSBGaXggcmVncmVzc2lv biBvbiBubyB0eXBlIGZvciBzdWJyYW5nZSBmcm9tIElCTSBYTEYgRm9ydHJhbiAoQlogODA2OTIw KS4KKyM9cHVzaAogUGF0Y2g2NjA6IGdkYi1zdWJyYW5nZS1uby10eXBlLnBhdGNoCiAKICMgV29y a2Fyb3VuZCBjcmFzaGVzIGZyb20gc3RhbGUgZnJhbWVfaW5mbyBwb2ludGVyIChCWiA4MDQyNTYp LgorIz1wdXNoK3dvcmsKIFBhdGNoNjYxOiBnZGItc3RhbGUtZnJhbWVfaW5mby5wYXRjaAogCisj IFNlY3VyaXR5IGZpeCBmb3IgbG9hZGluZyB1bnRydXN0ZWQgaW5mZXJpb3JzLCBzZWUgInNldCBh dXRvLWxvYWQiIChCWiA3NTYxMTcpLgorIz1wdXNoCitQYXRjaDY2MjogZ2RiLWF1dG9sb2FkLTAx b2YxMi5wYXRjaAorUGF0Y2g2NjM6IGdkYi1hdXRvbG9hZC0wMm9mMTIucGF0Y2gKK1BhdGNoNjY0 OiBnZGItYXV0b2xvYWQtMDNvZjEyLnBhdGNoCitQYXRjaDY2NTogZ2RiLWF1dG9sb2FkLTA0b2Yx Mi5wYXRjaAorUGF0Y2g2NjY6IGdkYi1hdXRvbG9hZC0wNW9mMTIucGF0Y2gKK1BhdGNoNjY3OiBn ZGItYXV0b2xvYWQtMDZvZjEyLnBhdGNoCitQYXRjaDY2ODogZ2RiLWF1dG9sb2FkLTA3b2YxMi5w YXRjaAorUGF0Y2g2Njk6IGdkYi1hdXRvbG9hZC0wOG9mMTIucGF0Y2gKK1BhdGNoNjcwOiBnZGIt YXV0b2xvYWQtMDlvZjEyLnBhdGNoCitQYXRjaDY3MTogZ2RiLWF1dG9sb2FkLTEwb2YxMi5wYXRj aAorUGF0Y2g2NzI6IGdkYi1hdXRvbG9hZC0xMW9mMTIucGF0Y2gKK1BhdGNoNjczOiBnZGItYXV0 b2xvYWQtMTJvZjEyLnBhdGNoCisKICVpZiAwJXshP3JoZWw6MX0gfHwgMCV7P3JoZWx9ID4gNgog IyBSTF9TVEFURV9GRURPUkFfR0RCIHdvdWxkIG5vdCBiZSBmb3VuZCBmb3I6CiAjIFBhdGNoNjQy OiBnZGItcmVhZGxpbmU2Mi1hc2stbW9yZS1yaC5wYXRjaApAQCAtNzY4LDcgKzc4Myw2IEBAIHJt IC1mIGdkYi9qdi1leHAuYyBnZGIvbTItZXhwLmMgZ2RiL29iamMtZXhwLmMgZ2RiL3AtZXhwLmMK ICVwYXRjaDE0MCAtcDEKICVwYXRjaDE0NSAtcDEKICVwYXRjaDE1MyAtcDEKLSVwYXRjaDE1NyAt cDEKICVwYXRjaDE1OCAtcDEKICVwYXRjaDE2MCAtcDEKICVwYXRjaDE2MSAtcDEKQEAgLTg3Myw2 ICs4ODcsMTggQEAgcm0gLWYgZ2RiL2p2LWV4cC5jIGdkYi9tMi1leHAuYyBnZGIvb2JqYy1leHAu YyBnZGIvcC1leHAuYwogJXBhdGNoNjU2IC1wMQogJXBhdGNoNjYwIC1wMQogJXBhdGNoNjYxIC1w MQorJXBhdGNoNjYyIC1wMQorJXBhdGNoNjYzIC1wMQorJXBhdGNoNjY0IC1wMQorJXBhdGNoNjY1 IC1wMQorJXBhdGNoNjY2IC1wMQorJXBhdGNoNjY3IC1wMQorJXBhdGNoNjY4IC1wMQorJXBhdGNo NjY5IC1wMQorJXBhdGNoNjcwIC1wMQorJXBhdGNoNjcxIC1wMQorJXBhdGNoNjcyIC1wMQorJXBh dGNoNjczIC1wMQogCiAlcGF0Y2gzOTMgLXAxCiAlaWYgMCV7IT9lbDU6MX0gfHwgMCV7P3NjbDox fQpAQCAtOTkyLDYgKzEwMTgsNyBAQCAkKDogUkhFTC01IGxpYnJwbSBoYXMgaW5jb21wYXRpYmxl IEFQSS4gKQkJCVwKICVlbHNlICMgISV7aGF2ZV9pbnByb2N0cmFjZX0KIAktLWRpc2FibGUtaW5w cm9jZXNzLWFnZW50CQkJCVwKICVlbmRpZiAjICEle2hhdmVfaW5wcm9jdHJhY2V9CisJLS13aXRo LWF1dG8tbG9hZC1zYWZlLXBhdGg9JXtfcHJlZml4fQkJCVwKICVpZmFyY2ggc3BhcmMgc3BhcmN2 OQogCXNwYXJjLSV7X3ZlbmRvcn0tJXtfdGFyZ2V0X29zfSV7P19nbnV9CiAlZWxzZQpAQCAtMTM1 Miw2ICsxMzc5LDkgQEAgZmkKICVlbmRpZiAjIDAleyE/ZWw1OjF9IHx8ICIle190YXJnZXRfY3B1 fSIgPT0gIm5vYXJjaCIKIAogJWNoYW5nZWxvZworKiBXZWQgQXByIDE4IDIwMTIgSmFuIEtyYXRv Y2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy40LjUwLjIwMTIwMTIwLTQwLmZj MTcKKy0gU2VjdXJpdHkgZml4IGZvciBsb2FkaW5nIHVudHJ1c3RlZCBpbmZlcmlvcnMsIHNlZSAi c2V0IGF1dG8tbG9hZCIgKEJaIDc1NjExNykuCisKICogRnJpIEFwciAxMyAyMDEyIEphbiBLcmF0 b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcuNC41MC4yMDEyMDEyMC0zOS5m YzE3CiAtIFtSSEVMN10gRml4L3JlbW92ZSByZWFkbGluZS1kZXZlbCBCdWlsZFJlcXVpcmVzIHJl ZHVuZGFudCBkaXN0cm8gc3VmZmljIC5mYzE3LgogCg==