From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1HSKMo-000200-G5 for qemu-devel@nongnu.org; Fri, 16 Mar 2007 17:53:42 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1HSKMm-0001my-3u for qemu-devel@nongnu.org; Fri, 16 Mar 2007 17:53:41 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1HSKMl-0001lE-TY for qemu-devel@nongnu.org; Fri, 16 Mar 2007 16:53:39 -0500 Received: from ug-out-1314.google.com ([66.249.92.168]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1HSKLa-00059S-Bs for qemu-devel@nongnu.org; Fri, 16 Mar 2007 17:52:28 -0400 Received: by ug-out-1314.google.com with SMTP id j40so892859ugd for ; Fri, 16 Mar 2007 14:52:25 -0700 (PDT) Message-ID: Date: Fri, 16 Mar 2007 22:52:22 +0100 From: "andrzej zaborowski" Sender: balrogg@gmail.com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_100114_30209739.1174081942938" Subject: [Qemu-devel] [PATCH] Spitz PDA, example PXA board. Reply-To: balrogg@gmail.com, qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org ------=_Part_100114_30209739.1174081942938 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline This patch adds a full PXA270-based machine. In fact four different, but similar models of the same series. Use "-M spitz", "-M akita", "-M borzoi" or "-M terrier" with qemu-system-arm to select them. The board contains a PXA processor with all its on-chip peripherals plus several other chips including the ADS7846, MAX1111, MAX7310, WM8750, the microdrive, NAND flash, SD slot, one usable PCMCIA socket, touchscreen, a keypad. There is no way to pass a kernel command line to a Linux kernel running on this device because its stock bootloader is quite dumb. So "-append" doesn't work. The machine is also supported by OpenBSD and NetBSD but only Linux has been tested. Cheers, Andrew ------=_Part_100114_30209739.1174081942938 Content-Type: text/plain; name=0013-Spitz-PDA-example-PXA-board.txt; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_ezd7taao Content-Disposition: attachment; filename="0013-Spitz-PDA-example-PXA-board.txt" RnJvbSBjMGVmM2MxMjllNjlkM2ZkZTc2MzJhMmU3YWMxYzY3OWViNDQwMWVlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyemVqIFphYm9yb3dza2kgPGJhbHJvZ0B6YWJvci5vcmc+ CkRhdGU6IEZyaSwgMTYgTWFyIDIwMDcgMTc6MTc6MjcgKzAxMDAKU3ViamVjdDogW1BBVENIXSBT cGl0eiBQREEsIGV4YW1wbGUgUFhBIGJvYXJkCgotLS0KIE1ha2VmaWxlLnRhcmdldCB8ICAgMTQg Ky0KIGh3L3NwaXR6LmMgICAgICB8IDExNTcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwoga2V5bWFwcy9zcGl0eiAgIHwgICAyNiArKwogcWVt dS1kb2MudGV4aSAgIHwgICAzMSArKwogdmwuYyAgICAgICAgICAgIHwgICAgNiArCiB2bC5oICAg ICAgICAgICAgfCAgICA2ICsKIDYgZmlsZXMgY2hhbmdlZCwgMTIzNSBpbnNlcnRpb25zKCspLCA1 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL01ha2VmaWxlLnRhcmdldCBiL01ha2VmaWxlLnRh cmdldAppbmRleCA4ZWFhOGRkLi45YjA4ZWYzIDEwMDY0NAotLS0gYS9NYWtlZmlsZS50YXJnZXQK KysrIGIvTWFrZWZpbGUudGFyZ2V0CkBAIC0zMjksNyArMzI5LDcgQEAgVkxfT0JKUys9dGFwLXdp bjMyLm8KIGVuZGlmCiAKIFNPVU5EX0hXID0gc2IxNi5vIGVzMTM3MC5vCi1BVURJT0RSViA9IGF1 ZGlvLm8gbm9hdWRpby5vIHdhdmF1ZGlvLm8KK0FVRElPRFJWID0gYXVkaW8ubyBub2F1ZGlvLm8g d2F2YXVkaW8ubyBtaXhlbmcubwogaWZkZWYgQ09ORklHX1NETAogQVVESU9EUlYgKz0gc2RsYXVk aW8ubwogZW5kaWYKQEAgLTM3MCwxNiArMzcwLDE2IEBAIGlmZXEgKCQoVEFSR0VUX0JBU0VfQVJD SCksIGkzODYpCiAjIEhhcmR3YXJlIHN1cHBvcnQKIFZMX09CSlMrPSBpZGUubyBwY2tiZC5vIHBz Mi5vIHZnYS5vICQoU09VTkRfSFcpIGRtYS5vICQoQVVESU9EUlYpCiBWTF9PQkpTKz0gZmRjLm8g bWMxNDY4MThydGMubyBzZXJpYWwubyBpODI1OS5vIGk4MjU0Lm8gcGNzcGsubyBwYy5vCi1WTF9P QkpTKz0gY2lycnVzX3ZnYS5vIG1peGVuZy5vIGFwaWMubyBwYXJhbGxlbC5vIGFjcGkubyBwaWl4 X3BjaS5vCitWTF9PQkpTKz0gY2lycnVzX3ZnYS5vIGFwaWMubyBwYXJhbGxlbC5vIGFjcGkubyBw aWl4X3BjaS5vCiBWTF9PQkpTKz0gdXNiLXVoY2kubyBzbWJ1c19lZXByb20ubwotQ1BQRkxBR1Mg Kz0gLURIQVNfQVVESU8KK0NQUEZMQUdTICs9IC1ESEFTX0FVRElPIC1ESEFTX0FVRElPX0NIT0lD RQogZW5kaWYKIGlmZXEgKCQoVEFSR0VUX0JBU0VfQVJDSCksIHBwYykKIFZMX09CSlMrPSBwcGMu byBpZGUubyBwY2tiZC5vIHBzMi5vIHZnYS5vICQoU09VTkRfSFcpIGRtYS5vICQoQVVESU9EUlYp CiBWTF9PQkpTKz0gbWMxNDY4MThydGMubyBzZXJpYWwubyBpODI1OS5vIGk4MjU0Lm8gZmRjLm8g bTQ4dDU5Lm8KLVZMX09CSlMrPSBwcGNfcHJlcC5vIHBwY19jaHJwLm8gY3VkYS5vIGFkYi5vIG9w ZW5waWMubyBoZWF0aHJvd19waWMubyBtaXhlbmcubworVkxfT0JKUys9IHBwY19wcmVwLm8gcHBj X2NocnAubyBjdWRhLm8gYWRiLm8gb3BlbnBpYy5vIGhlYXRocm93X3BpYy5vCiBWTF9PQkpTKz0g Z3JhY2tsZV9wY2kubyBwcmVwX3BjaS5vIHVuaW5fcGNpLm8KLUNQUEZMQUdTICs9IC1ESEFTX0FV RElPCitDUFBGTEFHUyArPSAtREhBU19BVURJTyAtREhBU19BVURJT19DSE9JQ0UKIGVuZGlmCiBp ZmVxICgkKFRBUkdFVF9BUkNIKSwgbWlwcykKIFZMX09CSlMrPSBtaXBzX3I0ay5vIG1pcHNfbWFs dGEubyBtaXBzX3RpbWVyLm8gbWlwc19pbnQubyBkbWEubyB2Z2EubyBzZXJpYWwubyBpODI1NC5v IGk4MjU5Lm8KQEAgLTQwNCw2ICs0MDQsMTAgQEAgVkxfT0JKUys9IGFybV9ib290Lm8gcGwwMTEu byBwbDA1MC5vIHBsMDgwLm8gcGwxMTAubyBwbDE5MC5vCiBWTF9PQkpTKz0gdmVyc2F0aWxlX3Bj aS5vCiBWTF9PQkpTKz0gYXJtX2dpYy5vIHJlYWx2aWV3Lm8gYXJtX3N5c2N0bC5vCiBWTF9PQkpT Kz0gYXJtLXNlbWkubworVkxfT0JKUys9IHB4YTJ4eC5vIHB4YTJ4eF9waWMubyBweGEyeHhfZ3Bp by5vIHB4YTJ4eF90aW1lci5vIHB4YTJ4eF9kbWEubworVkxfT0JKUys9IHB4YTJ4eF9sY2QubyBw eGEyeHhfbW1jaS5vIHB4YTJ4eF9wY21jaWEubyBtYXgxMTF4Lm8gbWF4NzMxMC5vCitWTF9PQkpT Kz0gc3BpdHoubyBhZHM3ODQ2Lm8gc2QubyBpZGUubyBzZXJpYWwubyBuYW5kLm8gJChBVURJT0RS Vikgd204NzUwLm8gCitDUFBGTEFHUyArPSAtREhBU19BVURJTyAtREhJR0hfTEFURU5DWQogZW5k aWYKIGlmZXEgKCQoVEFSR0VUX0JBU0VfQVJDSCksIHNoNCkKIFZMX09CSlMrPSBzaGl4Lm8gc2g3 NzUwLm8gc2g3NzUwX3JlZ25hbWVzLm8gdGM1ODEyOC5vCmRpZmYgLS1naXQgYS9ody9zcGl0ei5j IGIvaHcvc3BpdHouYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Y2U2NDk3 Ci0tLSAvZGV2L251bGwKKysrIGIvaHcvc3BpdHouYwpAQCAtMCwwICsxLDExNTcgQEAKKy8qCisg KiBQWEEyNzAtYmFzZWQgQ2xhbXNoZWxsIFBEQSBwbGF0Zm9ybXMuCisgKgorICogQ29weXJpZ2h0 IChjKSAyMDA2IE9wZW5lZGhhbmQgTHRkLgorICogV3JpdHRlbiBieSBBbmRyemVqIFphYm9yb3dz a2kgPGJhbHJvZ0B6YWJvci5vcmc+CisgKgorICogVGhpcyBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy IHRoZSBHTlUgR1BMIHYyLgorICovCisKKyNpbmNsdWRlICJ2bC5oIgorCisjZGVmaW5lIHNwaXR6 X3ByaW50Zihmb3JtYXQsIC4uLikJXAorICAgIGZwcmludGYoc3RkZXJyLCAiJXM6ICIgZm9ybWF0 LCBfX0ZVTkNUSU9OX18sICMjX19WQV9BUkdTX18pCisjdW5kZWYgUkVHX0ZNVAorI2RlZmluZSBS RUdfRk1UCQkJIjB4JTAybHgiCisKKy8qIFNwaXR6IEZsYXNoICovCisjZGVmaW5lIEZMQVNIX0JB U0UJCTB4MGMwMDAwMDAKKyNkZWZpbmUgRkxBU0hfRUNDTFBMQgkJMHgwMAkvKiBMaW5lIHBhcml0 eSA3IC0gMCBiaXQgKi8KKyNkZWZpbmUgRkxBU0hfRUNDTFBVQgkJMHgwNAkvKiBMaW5lIHBhcml0 eSAxNSAtIDggYml0ICovCisjZGVmaW5lIEZMQVNIX0VDQ0NQCQkweDA4CS8qIENvbHVtbiBwYXJp dHkgNSAtIDAgYml0ICovCisjZGVmaW5lIEZMQVNIX0VDQ0NOVFIJCTB4MGMJLyogRUNDIGJ5dGUg Y291bnRlciAqLworI2RlZmluZSBGTEFTSF9FQ0NDTFJSCQkweDEwCS8qIENsZWFyIEVDQyAqLwor I2RlZmluZSBGTEFTSF9GTEFTSElPCQkweDE0CS8qIEZsYXNoIEkvTyAqLworI2RlZmluZSBGTEFT SF9GTEFTSENUTAkJMHgxOAkvKiBGbGFzaCBDb250cm9sICovCisKKyNkZWZpbmUgRkxBU0hDVExf Q0UwCQkoMSA8PCAwKQorI2RlZmluZSBGTEFTSENUTF9DTEUJCSgxIDw8IDEpCisjZGVmaW5lIEZM QVNIQ1RMX0FMRQkJKDEgPDwgMikKKyNkZWZpbmUgRkxBU0hDVExfV1AJCSgxIDw8IDMpCisjZGVm aW5lIEZMQVNIQ1RMX0NFMQkJKDEgPDwgNCkKKyNkZWZpbmUgRkxBU0hDVExfUllCWQkJKDEgPDwg NSkKKyNkZWZpbmUgRkxBU0hDVExfTkNFCQkoRkxBU0hDVExfQ0UwIHwgRkxBU0hDVExfQ0UxKQor CitzdHJ1Y3Qgc2xfbmFuZF9zIHsKKyAgICB0YXJnZXRfcGh5c19hZGRyX3QgdGFyZ2V0X2Jhc2U7 CisgICAgc3RydWN0IG5hbmRfZmxhc2hfcyAqbmFuZDsKKyAgICB1aW50OF90IGN0bDsKKyAgICBz dHJ1Y3QgZWNjX3N0YXRlX3MgZWNjOworfTsKKworc3RhdGljIHVpbnQzMl90IHNsX3JlYWRiKHZv aWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIpCit7CisgICAgc3RydWN0IHNsX25h bmRfcyAqcyA9IChzdHJ1Y3Qgc2xfbmFuZF9zICopIG9wYXF1ZTsKKyAgICBpbnQgcnlieTsKKyAg ICBhZGRyIC09IHMtPnRhcmdldF9iYXNlOworCisgICAgc3dpdGNoIChhZGRyKSB7CisjZGVmaW5l IEJTSFIoYnl0ZSwgZnJvbSwgdG8pCSgocy0+ZWNjLmxwW2J5dGVdID4+IChmcm9tIC0gdG8pKSAm ICgxIDw8IHRvKSkKKyAgICBjYXNlIEZMQVNIX0VDQ0xQTEI6CisgICAgICAgIHJldHVybiBCU0hS KDAsIDQsIDApIHwgQlNIUigwLCA1LCAyKSB8IEJTSFIoMCwgNiwgNCkgfCBCU0hSKDAsIDcsIDYp IHwKKyAgICAgICAgICAgICAgICBCU0hSKDEsIDQsIDEpIHwgQlNIUigxLCA1LCAzKSB8IEJTSFIo MSwgNiwgNSkgfCBCU0hSKDEsIDcsIDcpOworCisjZGVmaW5lIEJTSEwoYnl0ZSwgZnJvbSwgdG8p CSgocy0+ZWNjLmxwW2J5dGVdIDw8ICh0byAtIGZyb20pKSAmICgxIDw8IHRvKSkKKyAgICBjYXNl IEZMQVNIX0VDQ0xQVUI6CisgICAgICAgIHJldHVybiBCU0hMKDAsIDAsIDApIHwgQlNITCgwLCAx LCAyKSB8IEJTSEwoMCwgMiwgNCkgfCBCU0hMKDAsIDMsIDYpIHwKKyAgICAgICAgICAgICAgICBC U0hMKDEsIDAsIDEpIHwgQlNITCgxLCAxLCAzKSB8IEJTSEwoMSwgMiwgNSkgfCBCU0hMKDEsIDMs IDcpOworCisgICAgY2FzZSBGTEFTSF9FQ0NDUDoKKyAgICAgICAgcmV0dXJuIHMtPmVjYy5jcDsK KworICAgIGNhc2UgRkxBU0hfRUNDQ05UUjoKKyAgICAgICAgcmV0dXJuIHMtPmVjYy5jb3VudCAm IDB4ZmY7CisKKyAgICBjYXNlIEZMQVNIX0ZMQVNIQ1RMOgorICAgICAgICBuYW5kX2dldHBpbnMo cy0+bmFuZCwgJnJ5YnkpOworICAgICAgICBpZiAocnlieSkKKyAgICAgICAgICAgIHJldHVybiBz LT5jdGwgfCBGTEFTSENUTF9SWUJZOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4g cy0+Y3RsOworCisgICAgY2FzZSBGTEFTSF9GTEFTSElPOgorICAgICAgICByZXR1cm4gZWNjX2Rp Z2VzdCgmcy0+ZWNjLCBuYW5kX2dldGlvKHMtPm5hbmQpKTsKKworICAgIGRlZmF1bHQ6CisgICAg ICAgIHNwaXR6X3ByaW50ZigiQmFkIHJlZ2lzdGVyIG9mZnNldCAiIFJFR19GTVQgIlxuIiwgYWRk cik7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBzbF93cml0ZWIodm9p ZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwKKyAgICAgICAgICAgICAgICB1aW50 MzJfdCB2YWx1ZSkKK3sKKyAgICBzdHJ1Y3Qgc2xfbmFuZF9zICpzID0gKHN0cnVjdCBzbF9uYW5k X3MgKikgb3BhcXVlOworICAgIGFkZHIgLT0gcy0+dGFyZ2V0X2Jhc2U7CisKKyAgICBzd2l0Y2gg KGFkZHIpIHsKKyAgICBjYXNlIEZMQVNIX0VDQ0NMUlI6CisgICAgICAgIC8qIFZhbHVlIGlzIGln bm9yZWQuICAqLworICAgICAgICBlY2NfcmVzZXQoJnMtPmVjYyk7CisgICAgICAgIGJyZWFrOwor CisgICAgY2FzZSBGTEFTSF9GTEFTSENUTDoKKyAgICAgICAgcy0+Y3RsID0gdmFsdWUgJiAweGZm ICYgfkZMQVNIQ1RMX1JZQlk7CisgICAgICAgIG5hbmRfc2V0cGlucyhzLT5uYW5kLAorICAgICAg ICAgICAgICAgICAgICAgICAgcy0+Y3RsICYgRkxBU0hDVExfQ0xFLAorICAgICAgICAgICAgICAg ICAgICAgICAgcy0+Y3RsICYgRkxBU0hDVExfQUxFLAorICAgICAgICAgICAgICAgICAgICAgICAg cy0+Y3RsICYgRkxBU0hDVExfTkNFLAorICAgICAgICAgICAgICAgICAgICAgICAgcy0+Y3RsICYg RkxBU0hDVExfV1AsCisgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKyAgICAgICAgYnJlYWs7 CisKKyAgICBjYXNlIEZMQVNIX0ZMQVNISU86CisgICAgICAgIG5hbmRfc2V0aW8ocy0+bmFuZCwg ZWNjX2RpZ2VzdCgmcy0+ZWNjLCB2YWx1ZSAmIDB4ZmYpKTsKKyAgICAgICAgYnJlYWs7CisKKyAg ICBkZWZhdWx0OgorICAgICAgICBzcGl0el9wcmludGYoIkJhZCByZWdpc3RlciBvZmZzZXQgIiBS RUdfRk1UICJcbiIsIGFkZHIpOworICAgIH0KK30KKworZW51bSB7CisgICAgRkxBU0hfMTI4TSwK KyAgICBGTEFTSF8xMDI0TSwKK307CisKK3N0YXRpYyB2b2lkIHNsX2ZsYXNoX3JlZ2lzdGVyKHN0 cnVjdCBweGEyeHhfc3RhdGVfcyAqY3B1LCBpbnQgc2l6ZSkKK3sKKyAgICBpbnQgaW9tZW10eXBl OworICAgIHN0cnVjdCBzbF9uYW5kX3MgKnM7CisgICAgQ1BVUmVhZE1lbW9yeUZ1bmMgKnNsX3Jl YWRmbltdID0geworICAgICAgICBzbF9yZWFkYiwKKyAgICAgICAgc2xfcmVhZGIsCisgICAgICAg IHNsX3JlYWRiLAorICAgIH07CisgICAgQ1BVV3JpdGVNZW1vcnlGdW5jICpzbF93cml0ZWZuW10g PSB7CisgICAgICAgIHNsX3dyaXRlYiwKKyAgICAgICAgc2xfd3JpdGViLAorICAgICAgICBzbF93 cml0ZWIsCisgICAgfTsKKworICAgIHMgPSAoc3RydWN0IHNsX25hbmRfcyAqKSBxZW11X21hbGxv Y3ooc2l6ZW9mKHN0cnVjdCBzbF9uYW5kX3MpKTsKKyAgICBzLT50YXJnZXRfYmFzZSA9IEZMQVNI X0JBU0U7CisgICAgcy0+Y3RsID0gMDsKKyAgICBpZiAoc2l6ZSA9PSBGTEFTSF8xMjhNKQorICAg ICAgICBzLT5uYW5kID0gbmFuZF9pbml0KE5BTkRfTUZSX1NBTVNVTkcsIDB4NzMpOworICAgIGVs c2UgaWYgKHNpemUgPT0gRkxBU0hfMTAyNE0pCisgICAgICAgIHMtPm5hbmQgPSBuYW5kX2luaXQo TkFORF9NRlJfU0FNU1VORywgMHhmMSk7CisKKyAgICBpb21lbXR5cGUgPSBjcHVfcmVnaXN0ZXJf aW9fbWVtb3J5KDAsIHNsX3JlYWRmbiwKKyAgICAgICAgICAgICAgICAgICAgc2xfd3JpdGVmbiwg cyk7CisgICAgY3B1X3JlZ2lzdGVyX3BoeXNpY2FsX21lbW9yeShzLT50YXJnZXRfYmFzZSwgMHg0 MCwgaW9tZW10eXBlKTsKK30KKworLyogU3BpdHogS2V5Ym9hcmQgKi8KKworI2RlZmluZSBTUElU Wl9LRVlfU1RST0JFX05VTQkxMQorI2RlZmluZSBTUElUWl9LRVlfU0VOU0VfTlVNCTcKKworc3Rh dGljIGNvbnN0IGludCBzcGl0el9ncGlvX2tleV9zZW5zZVtTUElUWl9LRVlfU0VOU0VfTlVNXSA9 IHsKKyAgICAxMiwgMTcsIDkxLCAzNCwgMzYsIDM4LCAzOQorfTsKKworc3RhdGljIGNvbnN0IGlu dCBzcGl0el9ncGlvX2tleV9zdHJvYmVbU1BJVFpfS0VZX1NUUk9CRV9OVU1dID0geworICAgIDg4 LCAyMywgMjQsIDI1LCAyNiwgMjcsIDUyLCAxMDMsIDEwNywgMTA4LCAxMTQKK307CisKKy8qIEVp Z2h0aCBhZGRpdGlvbmFsIHJvdyBtYXBzIHRoZSBzcGVjaWFsIGtleXMgKi8KK3N0YXRpYyBpbnQg c3BpdHpfa2V5bWFwW1NQSVRaX0tFWV9TRU5TRV9OVU0gKyAxXVtTUElUWl9LRVlfU1RST0JFX05V TV0gPSB7CisgICAgeyAweDFkLCAweDAyLCAweDA0LCAweDA2LCAweDA3LCAweDA4LCAweDBhLCAw eDBiLCAweDBlLCAweDNmLCAweDQwIH0sCisgICAgeyAgLTEgLCAweDAzLCAweDA1LCAweDEzLCAw eDE1LCAweDA5LCAweDE3LCAweDE4LCAweDE5LCAweDQxLCAweDQyIH0sCisgICAgeyAweDBmLCAw eDEwLCAweDEyLCAweDE0LCAweDIyLCAweDE2LCAweDI0LCAweDI1LCAgLTEgLCAgLTEgLCAgLTEg IH0sCisgICAgeyAweDNjLCAweDExLCAweDFmLCAweDIxLCAweDJmLCAweDIzLCAweDMyLCAweDI2 LCAgLTEgLCAweDM2LCAgLTEgIH0sCisgICAgeyAweDNiLCAweDFlLCAweDIwLCAweDJlLCAweDMw LCAweDMxLCAweDM0LCAgLTEgLCAweDFjLCAweDJhLCAgLTEgIH0sCisgICAgeyAweDQ0LCAweDJj LCAweDJkLCAweDBjLCAweDM5LCAweDMzLCAgLTEgLCAweDQ4LCAgLTEgLCAgLTEgLCAweDNkIH0s CisgICAgeyAweDM3LCAweDM4LCAgLTEgLCAweDQ1LCAweDU3LCAweDU4LCAweDRiLCAweDUwLCAw eDRkLCAgLTEgLCAgLTEgIH0sCisgICAgeyAweDUyLCAweDQzLCAweDAxLCAweDQ3LCAweDQ5LCAg LTEgLCAgLTEgLCAgLTEgLCAgLTEgLCAgLTEgLCAgLTEgIH0sCit9OworCisjZGVmaW5lIFNQSVRa X0dQSU9fQUtfSU5UCTEzCS8qIFJlbW90ZSBjb250cm9sICovCisjZGVmaW5lIFNQSVRaX0dQSU9f U1lOQwkJMTYJLyogU3luYyBidXR0b24gKi8KKyNkZWZpbmUgU1BJVFpfR1BJT19PTl9LRVkJOTUJ LyogUG93ZXIgYnV0dG9uICovCisjZGVmaW5lIFNQSVRaX0dQSU9fU1dBCQk5NwkvKiBMaWQgKi8K KyNkZWZpbmUgU1BJVFpfR1BJT19TV0IJCTk2CS8qIFRhYmxldCBtb2RlICovCisKKy8qIFRoZSBz cGVjaWFsIGJ1dHRvbnMgYXJlIG1hcHBlZCB0byB1bnVzZWQga2V5cyAqLworc3RhdGljIGNvbnN0 IGludCBzcGl0el9ncGlvbWFwWzVdID0geworICAgIFNQSVRaX0dQSU9fQUtfSU5ULCBTUElUWl9H UElPX1NZTkMsIFNQSVRaX0dQSU9fT05fS0VZLAorICAgIFNQSVRaX0dQSU9fU1dBLCBTUElUWl9H UElPX1NXQiwKK307CitzdGF0aWMgaW50IHNwaXR6X2dwaW9faW52ZXJ0WzVdID0geyAwLCAwLCAw LCAwLCAwLCB9OworCitzdHJ1Y3Qgc3BpdHpfa2V5Ym9hcmRfcyB7CisgICAgc3RydWN0IHB4YTJ4 eF9zdGF0ZV9zICpjcHU7CisgICAgaW50IGtleW1hcFsweDgwXTsKKyAgICB1aW50MTZfdCBrZXly b3dbU1BJVFpfS0VZX1NFTlNFX05VTV07CisgICAgdWludDE2X3Qgc3Ryb2JlX3N0YXRlOworICAg IHVpbnQxNl90IHNlbnNlX3N0YXRlOworCisgICAgdWludDE2X3QgcHJlX21hcFsweDEwMF07Cisg ICAgdWludDE2X3QgbW9kaWZpZXJzOworICAgIHVpbnQxNl90IGltb2RpZmllcnM7CisgICAgdWlu dDhfdCBmaWZvWzE2XTsKKyAgICBpbnQgZmlmb3BvcywgZmlmb2xlbjsKKyAgICBRRU1VVGltZXIg KmtiZHRpbWVyOworfTsKKworc3RhdGljIHZvaWQgc3BpdHpfa2V5Ym9hcmRfc2Vuc2VfdXBkYXRl KHN0cnVjdCBzcGl0el9rZXlib2FyZF9zICpzKQoreworICAgIGludCBpOworICAgIHVpbnQxNl90 IHN0cm9iZSwgc2Vuc2UgPSAwOworICAgIGZvciAoaSA9IDA7IGkgPCBTUElUWl9LRVlfU0VOU0Vf TlVNOyBpICsrKSB7CisgICAgICAgIHN0cm9iZSA9IHMtPmtleXJvd1tpXSAmIHMtPnN0cm9iZV9z dGF0ZTsKKyAgICAgICAgaWYgKHN0cm9iZSkgeworICAgICAgICAgICAgc2Vuc2UgfD0gMSA8PCBp OworICAgICAgICAgICAgaWYgKCEocy0+c2Vuc2Vfc3RhdGUgJiAoMSA8PCBpKSkpCisgICAgICAg ICAgICAgICAgcHhhMnh4X2dwaW9fc2V0KHMtPmNwdS0+Z3Bpbywgc3BpdHpfZ3Bpb19rZXlfc2Vu c2VbaV0sIDEpOworICAgICAgICB9IGVsc2UgaWYgKHMtPnNlbnNlX3N0YXRlICYgKDEgPDwgaSkp CisgICAgICAgICAgICBweGEyeHhfZ3Bpb19zZXQocy0+Y3B1LT5ncGlvLCBzcGl0el9ncGlvX2tl eV9zZW5zZVtpXSwgMCk7CisgICAgfQorCisgICAgcy0+c2Vuc2Vfc3RhdGUgPSBzZW5zZTsKK30K Kworc3RhdGljIHZvaWQgc3BpdHpfa2V5Ym9hcmRfc3Ryb2JlKGludCBsaW5lLCBpbnQgbGV2ZWws CisgICAgICAgICAgICAgICAgc3RydWN0IHNwaXR6X2tleWJvYXJkX3MgKnMpCit7CisgICAgaW50 IGk7CisgICAgZm9yIChpID0gMDsgaSA8IFNQSVRaX0tFWV9TVFJPQkVfTlVNOyBpICsrKQorICAg ICAgICBpZiAoc3BpdHpfZ3Bpb19rZXlfc3Ryb2JlW2ldID09IGxpbmUpIHsKKyAgICAgICAgICAg IGlmIChsZXZlbCkKKyAgICAgICAgICAgICAgICBzLT5zdHJvYmVfc3RhdGUgfD0gMSA8PCBpOwor ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHMtPnN0cm9iZV9zdGF0ZSAmPSB+KDEg PDwgaSk7CisKKyAgICAgICAgICAgIHNwaXR6X2tleWJvYXJkX3NlbnNlX3VwZGF0ZShzKTsKKyAg ICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHNwaXR6X2tleWJv YXJkX2tleWRvd24oc3RydWN0IHNwaXR6X2tleWJvYXJkX3MgKnMsIGludCBrZXljb2RlKQorewor ICAgIGludCBzcGl0el9rZXljb2RlID0gcy0+a2V5bWFwW2tleWNvZGUgJiAweDdmXTsKKyAgICBp ZiAoc3BpdHpfa2V5Y29kZSA9PSAtMSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLyogSGFuZGxl IHRoZSBhZGRpdGlvbmFsIGtleXMgKi8KKyAgICBpZiAoKHNwaXR6X2tleWNvZGUgPj4gNCkgPT0g U1BJVFpfS0VZX1NFTlNFX05VTSkgeworICAgICAgICBweGEyeHhfZ3Bpb19zZXQocy0+Y3B1LT5n cGlvLCBzcGl0el9ncGlvbWFwW3NwaXR6X2tleWNvZGUgJiAweGZdLAorICAgICAgICAgICAgICAg ICAgICAgICAgKGtleWNvZGUgPCAweDgwKSBeCisgICAgICAgICAgICAgICAgICAgICAgICBzcGl0 el9ncGlvX2ludmVydFtzcGl0el9rZXljb2RlICYgMHhmXSk7CisgICAgICAgIHJldHVybjsKKyAg ICB9CisKKyAgICBpZiAoa2V5Y29kZSAmIDB4ODApCisgICAgICAgIHMtPmtleXJvd1tzcGl0el9r ZXljb2RlID4+IDRdICY9IH4oMSA8PCAoc3BpdHpfa2V5Y29kZSAmIDB4ZikpOworICAgIGVsc2UK KyAgICAgICAgcy0+a2V5cm93W3NwaXR6X2tleWNvZGUgPj4gNF0gfD0gMSA8PCAoc3BpdHpfa2V5 Y29kZSAmIDB4Zik7CisKKyAgICBzcGl0el9rZXlib2FyZF9zZW5zZV91cGRhdGUocyk7Cit9CisK KyNkZWZpbmUgU0hJRlQJKDEgPDwgNykKKyNkZWZpbmUgQ1RSTAkoMSA8PCA4KQorI2RlZmluZSBG TgkoMSA8PCA5KQorCisjZGVmaW5lIFFVRVVFX0tFWShjKQlzLT5maWZvWyhzLT5maWZvcG9zICsg cy0+Zmlmb2xlbiArKykgJiAweGZdID0gYworCitzdGF0aWMgdm9pZCBzcGl0el9rZXlib2FyZF9o YW5kbGVyKHN0cnVjdCBzcGl0el9rZXlib2FyZF9zICpzLCBpbnQga2V5Y29kZSkKK3sKKyAgICB1 aW50MTZfdCBjb2RlOworICAgIGludCBtYXBjb2RlOworICAgIHN3aXRjaCAoa2V5Y29kZSkgewor ICAgIGNhc2UgMHgyYToJLyogTGVmdCBTaGlmdCAqLworICAgICAgICBzLT5tb2RpZmllcnMgfD0g MTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAweGFhOgorICAgICAgICBzLT5tb2RpZmllcnMg Jj0gfjE7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMHgzNjoJLyogUmlnaHQgU2hpZnQgKi8K KyAgICAgICAgcy0+bW9kaWZpZXJzIHw9IDI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMHhi NjoKKyAgICAgICAgcy0+bW9kaWZpZXJzICY9IH4yOworICAgICAgICBicmVhazsKKyAgICBjYXNl IDB4MWQ6CS8qIENvbnRyb2wgKi8KKyAgICAgICAgcy0+bW9kaWZpZXJzIHw9IDQ7CisgICAgICAg IGJyZWFrOworICAgIGNhc2UgMHg5ZDoKKyAgICAgICAgcy0+bW9kaWZpZXJzICY9IH40OworICAg ICAgICBicmVhazsKKyAgICBjYXNlIDB4Mzg6CS8qIEFsdCAqLworICAgICAgICBzLT5tb2RpZmll cnMgfD0gODsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAweGI4OgorICAgICAgICBzLT5tb2Rp ZmllcnMgJj0gfjg7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNvZGUgPSBzLT5wcmVf bWFwW21hcGNvZGUgPSAoKHMtPm1vZGlmaWVycyAmIDMpID8KKyAgICAgICAgICAgIChrZXljb2Rl IHwgU0hJRlQpIDoKKyAgICAgICAgICAgIChrZXljb2RlICYgflNISUZUKSldOworCisgICAgaWYg KGNvZGUgIT0gbWFwY29kZSkgeworI2lmIDAKKyAgICAgICAgaWYgKChjb2RlICYgU0hJRlQpICYm ICEocy0+bW9kaWZpZXJzICYgMSkpCisgICAgICAgICAgICBRVUVVRV9LRVkoMHgyYSB8IChrZXlj b2RlICYgMHg4MCkpOworICAgICAgICBpZiAoKGNvZGUgJiBDVFJMICkgJiYgIShzLT5tb2RpZmll cnMgJiA0KSkKKyAgICAgICAgICAgIFFVRVVFX0tFWSgweDFkIHwgKGtleWNvZGUgJiAweDgwKSk7 CisgICAgICAgIGlmICgoY29kZSAmIEZOICAgKSAmJiAhKHMtPm1vZGlmaWVycyAmIDgpKQorICAg ICAgICAgICAgUVVFVUVfS0VZKDB4MzggfCAoa2V5Y29kZSAmIDB4ODApKTsKKyAgICAgICAgaWYg KChjb2RlICYgRk4gICApICYmIChzLT5tb2RpZmllcnMgJiAxKSkKKyAgICAgICAgICAgIFFVRVVF X0tFWSgweDJhIHwgKH5rZXljb2RlICYgMHg4MCkpOworICAgICAgICBpZiAoKGNvZGUgJiBGTiAg ICkgJiYgKHMtPm1vZGlmaWVycyAmIDIpKQorICAgICAgICAgICAgUVVFVUVfS0VZKDB4MzYgfCAo fmtleWNvZGUgJiAweDgwKSk7CisjZW5kaWYKKyAgICAgICAgaWYgKGtleWNvZGUgJiAweDgwKSB7 CisgICAgICAgICAgICBpZiAoKHMtPmltb2RpZmllcnMgJiAxICAgKSAmJiAhKHMtPm1vZGlmaWVy cyAmIDEpKQorICAgICAgICAgICAgICAgIFFVRVVFX0tFWSgweDJhIHwgMHg4MCk7CisgICAgICAg ICAgICBpZiAoKHMtPmltb2RpZmllcnMgJiA0ICAgKSAmJiAhKHMtPm1vZGlmaWVycyAmIDQpKQor ICAgICAgICAgICAgICAgIFFVRVVFX0tFWSgweDFkIHwgMHg4MCk7CisgICAgICAgICAgICBpZiAo KHMtPmltb2RpZmllcnMgJiA4ICAgKSAmJiAhKHMtPm1vZGlmaWVycyAmIDgpKQorICAgICAgICAg ICAgICAgIFFVRVVFX0tFWSgweDM4IHwgMHg4MCk7CisgICAgICAgICAgICBpZiAoKHMtPmltb2Rp ZmllcnMgJiAweDEwKSAmJiAocy0+bW9kaWZpZXJzICYgMSkpCisgICAgICAgICAgICAgICAgUVVF VUVfS0VZKDB4MmEpOworICAgICAgICAgICAgaWYgKChzLT5pbW9kaWZpZXJzICYgMHgyMCkgJiYg KHMtPm1vZGlmaWVycyAmIDIpKQorICAgICAgICAgICAgICAgIFFVRVVFX0tFWSgweDM2KTsKKyAg ICAgICAgICAgIHMtPmltb2RpZmllcnMgPSAwOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg ICAgaWYgKChjb2RlICYgU0hJRlQpICYmICEoKHMtPm1vZGlmaWVycyB8IHMtPmltb2RpZmllcnMp ICYgMSkpIHsKKyAgICAgICAgICAgICAgICBRVUVVRV9LRVkoMHgyYSk7CisgICAgICAgICAgICAg ICAgcy0+aW1vZGlmaWVycyB8PSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKChj b2RlICYgQ1RSTCApICYmICEoKHMtPm1vZGlmaWVycyB8IHMtPmltb2RpZmllcnMpICYgNCkpIHsK KyAgICAgICAgICAgICAgICBRVUVVRV9LRVkoMHgxZCk7CisgICAgICAgICAgICAgICAgcy0+aW1v ZGlmaWVycyB8PSA0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKChjb2RlICYgRk4g ICApICYmICEoKHMtPm1vZGlmaWVycyB8IHMtPmltb2RpZmllcnMpICYgOCkpIHsKKyAgICAgICAg ICAgICAgICBRVUVVRV9LRVkoMHgzOCk7CisgICAgICAgICAgICAgICAgcy0+aW1vZGlmaWVycyB8 PSA4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKChjb2RlICYgRk4gICApICYmIChz LT5tb2RpZmllcnMgJiAxKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICEocy0+aW1v ZGlmaWVycyAmIDB4MTApKSB7CisgICAgICAgICAgICAgICAgUVVFVUVfS0VZKDB4MmEgfCAweDgw KTsKKyAgICAgICAgICAgICAgICBzLT5pbW9kaWZpZXJzIHw9IDB4MTA7CisgICAgICAgICAgICB9 CisgICAgICAgICAgICBpZiAoKGNvZGUgJiBGTiAgICkgJiYgKHMtPm1vZGlmaWVycyAmIDIpICYm CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIShzLT5pbW9kaWZpZXJzICYgMHgyMCkpIHsK KyAgICAgICAgICAgICAgICBRVUVVRV9LRVkoMHgzNiB8IDB4ODApOworICAgICAgICAgICAgICAg IHMtPmltb2RpZmllcnMgfD0gMHgyMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K KworICAgIFFVRVVFX0tFWSgoY29kZSAmIDB4N2YpIHwgKGtleWNvZGUgJiAweDgwKSk7Cit9CisK K3N0YXRpYyB2b2lkIHNwaXR6X2tleWJvYXJkX3RpY2sodm9pZCAqb3BhcXVlKQoreworICAgIHN0 cnVjdCBzcGl0el9rZXlib2FyZF9zICpzID0gKHN0cnVjdCBzcGl0el9rZXlib2FyZF9zICopIG9w YXF1ZTsKKworICAgIGlmIChzLT5maWZvbGVuKSB7CisgICAgICAgIHNwaXR6X2tleWJvYXJkX2tl eWRvd24ocywgcy0+Zmlmb1tzLT5maWZvcG9zICsrXSk7CisgICAgICAgIHMtPmZpZm9sZW4gLS07 CisgICAgICAgIGlmIChzLT5maWZvcG9zID49IDE2KQorICAgICAgICAgICAgcy0+Zmlmb3BvcyA9 IDA7CisgICAgfQorCisgICAgcWVtdV9tb2RfdGltZXIocy0+a2JkdGltZXIsIHFlbXVfZ2V0X2Ns b2NrKHZtX2Nsb2NrKSArIHRpY2tzX3Blcl9zZWMgLyAzMik7Cit9CisKK3N0YXRpYyB2b2lkIHNw aXR6X2tleWJvYXJkX3ByZV9tYXAoc3RydWN0IHNwaXR6X2tleWJvYXJkX3MgKnMpCit7CisgICAg aW50IGk7CisgICAgZm9yIChpID0gMDsgaSA8IDB4MTAwOyBpICsrKQorICAgICAgICBzLT5wcmVf bWFwW2ldID0gaTsKKyAgICBzLT5wcmVfbWFwWzB4MDIgfCBTSElGVAldID0gMHgwMiB8IFNISUZU OwkvKiBleGNsYW0gKi8KKyAgICBzLT5wcmVfbWFwWzB4MjggfCBTSElGVAldID0gMHgwMyB8IFNI SUZUOwkvKiBxdW90ZWRibCAqLworICAgIHMtPnByZV9tYXBbMHgwNCB8IFNISUZUCV0gPSAweDA0 IHwgU0hJRlQ7CS8qIG51bWJlcnNpZ24gKi8KKyAgICBzLT5wcmVfbWFwWzB4MDUgfCBTSElGVAld ID0gMHgwNSB8IFNISUZUOwkvKiBkb2xsYXIgKi8KKyAgICBzLT5wcmVfbWFwWzB4MDYgfCBTSElG VAldID0gMHgwNiB8IFNISUZUOwkvKiBwZXJjZW50ICovCisgICAgcy0+cHJlX21hcFsweDA4IHwg U0hJRlQJXSA9IDB4MDcgfCBTSElGVDsJLyogYW1wZXJzYW5kICovCisgICAgcy0+cHJlX21hcFsw eDI4CQldID0gMHgwOCB8IFNISUZUOwkvKiBhcG9zdHJvcGhlICovCisgICAgcy0+cHJlX21hcFsw eDBhIHwgU0hJRlQJXSA9IDB4MDkgfCBTSElGVDsJLyogcGFyZW5sZWZ0ICovCisgICAgcy0+cHJl X21hcFsweDBiIHwgU0hJRlQJXSA9IDB4MGEgfCBTSElGVDsJLyogcGFyZW5yaWdodCAqLworICAg IHMtPnByZV9tYXBbMHgyOSB8IFNISUZUCV0gPSAweDBiIHwgU0hJRlQ7CS8qIGFzY2lpdGlsZGUg Ki8KKyAgICBzLT5wcmVfbWFwWzB4MDMgfCBTSElGVAldID0gMHgwYyB8IFNISUZUOwkvKiBhdCAq LworICAgIHMtPnByZV9tYXBbMHhkMwkJXSA9IDB4MGUgfCBGTjsJCS8qIERlbGV0ZSAqLworICAg IHMtPnByZV9tYXBbMHgzYQkJXSA9IDB4MGYgfCBGTjsJCS8qIENhcHNfTG9jayAqLworICAgIHMt PnByZV9tYXBbMHgwNyB8IFNISUZUCV0gPSAweDExIHwgRk47CQkvKiBhc2NpaWNpcmN1bSAqLwor ICAgIHMtPnByZV9tYXBbMHgwZAkJXSA9IDB4MTIgfCBGTjsJCS8qIGVxdWFsICovCisgICAgcy0+ cHJlX21hcFsweDBkIHwgU0hJRlQJXSA9IDB4MTMgfCBGTjsJCS8qIHBsdXMgKi8KKyAgICBzLT5w cmVfbWFwWzB4MWEJCV0gPSAweDE0IHwgRk47CQkvKiBicmFja2V0bGVmdCAqLworICAgIHMtPnBy ZV9tYXBbMHgxYgkJXSA9IDB4MTUgfCBGTjsJCS8qIGJyYWNrZXRyaWdodCAqLworICAgIHMtPnBy ZV9tYXBbMHgyNwkJXSA9IDB4MjIgfCBGTjsJCS8qIHNlbWljb2xvbiAqLworICAgIHMtPnByZV9t YXBbMHgyNyB8IFNISUZUCV0gPSAweDIzIHwgRk47CQkvKiBjb2xvbiAqLworICAgIHMtPnByZV9t YXBbMHgwOSB8IFNISUZUCV0gPSAweDI0IHwgRk47CQkvKiBhc3RlcmlzayAqLworICAgIHMtPnBy ZV9tYXBbMHgyYgkJXSA9IDB4MjUgfCBGTjsJCS8qIGJhY2tzbGFzaCAqLworICAgIHMtPnByZV9t YXBbMHgyYiB8IFNISUZUCV0gPSAweDI2IHwgRk47CQkvKiBiYXIgKi8KKyAgICBzLT5wcmVfbWFw WzB4MGMgfCBTSElGVAldID0gMHgzMCB8IEZOOwkJLyogdW5kZXJzY29yZSAqLworICAgIHMtPnBy ZV9tYXBbMHgzNQkJXSA9IDB4MzMgfCBTSElGVDsJLyogc2xhc2ggKi8KKyAgICBzLT5wcmVfbWFw WzB4MzUgfCBTSElGVAldID0gMHgzNCB8IFNISUZUOwkvKiBxdWVzdGlvbiAqLworICAgIHMtPnBy ZV9tYXBbMHg0OQkJXSA9IDB4NDggfCBGTjsJCS8qIFBhZ2VfVXAgKi8KKyAgICBzLT5wcmVfbWFw WzB4NTEJCV0gPSAweDUwIHwgRk47CQkvKiBQYWdlX0Rvd24gKi8KKworICAgIHMtPm1vZGlmaWVy cyA9IDA7CisgICAgcy0+aW1vZGlmaWVycyA9IDA7CisgICAgcy0+Zmlmb3BvcyA9IDA7CisgICAg cy0+Zmlmb2xlbiA9IDA7CisgICAgcy0+a2JkdGltZXIgPSBxZW11X25ld190aW1lcih2bV9jbG9j aywgc3BpdHpfa2V5Ym9hcmRfdGljaywgcyk7CisgICAgc3BpdHpfa2V5Ym9hcmRfdGljayhzKTsK K30KKworI3VuZGVmIFNISUZUCisjdW5kZWYgQ1RSTAorI3VuZGVmIEZOCisKK3N0YXRpYyB2b2lk IHNwaXR6X2tleWJvYXJkX3JlZ2lzdGVyKHN0cnVjdCBweGEyeHhfc3RhdGVfcyAqY3B1KQorewor ICAgIGludCBpLCBqOworICAgIHN0cnVjdCBzcGl0el9rZXlib2FyZF9zICpzOworCisgICAgcyA9 IChzdHJ1Y3Qgc3BpdHpfa2V5Ym9hcmRfcyAqKQorICAgICAgICAgICAgcWVtdV9tYWxsb2N6KHNp emVvZihzdHJ1Y3Qgc3BpdHpfa2V5Ym9hcmRfcykpOworICAgIG1lbXNldChzLCAwLCBzaXplb2Yo c3RydWN0IHNwaXR6X2tleWJvYXJkX3MpKTsKKyAgICBzLT5jcHUgPSBjcHU7CisKKyAgICBmb3Ig KGkgPSAwOyBpIDwgMHg4MDsgaSArKykKKyAgICAgICAgcy0+a2V5bWFwW2ldID0gLTE7CisgICAg Zm9yIChpID0gMDsgaSA8IFNQSVRaX0tFWV9TRU5TRV9OVU0gKyAxOyBpICsrKQorICAgICAgICBm b3IgKGogPSAwOyBqIDwgU1BJVFpfS0VZX1NUUk9CRV9OVU07IGogKyspCisgICAgICAgICAgICBp ZiAoc3BpdHpfa2V5bWFwW2ldW2pdICE9IC0xKQorICAgICAgICAgICAgICAgIHMtPmtleW1hcFtz cGl0el9rZXltYXBbaV1bal1dID0gKGkgPDwgNCkgfCBqOworCisgICAgZm9yIChpID0gMDsgaSA8 IFNQSVRaX0tFWV9TVFJPQkVfTlVNOyBpICsrKQorICAgICAgICBweGEyeHhfZ3Bpb19oYW5kbGVy X3NldChjcHUtPmdwaW8sIHNwaXR6X2dwaW9fa2V5X3N0cm9iZVtpXSwKKyAgICAgICAgICAgICAg ICAgICAgICAgIChncGlvX2hhbmRsZXJfdCkgc3BpdHpfa2V5Ym9hcmRfc3Ryb2JlLCBzKTsKKwor ICAgIHNwaXR6X2tleWJvYXJkX3ByZV9tYXAocyk7CisgICAgcWVtdV9hZGRfa2JkX2V2ZW50X2hh bmRsZXIoKFFFTVVQdXRLQkRFdmVudCAqKSBzcGl0el9rZXlib2FyZF9oYW5kbGVyLCBzKTsKK30K KworLyogU0NPT1AgZGV2aWNlcyAqLworCitzdHJ1Y3Qgc2Nvb3BfaW5mb19zIHsKKyAgICB0YXJn ZXRfcGh5c19hZGRyX3QgdGFyZ2V0X2Jhc2U7CisgICAgdWludDE2X3Qgc3RhdHVzOworICAgIHVp bnQxNl90IHBvd2VyOworICAgIHVpbnQzMl90IGdwaW9fbGV2ZWw7CisgICAgdWludDMyX3QgZ3Bp b19kaXI7CisgICAgdWludDMyX3QgcHJldl9sZXZlbDsKKyAgICBzdHJ1Y3QgeworICAgICAgICBn cGlvX2hhbmRsZXJfdCBmbjsKKyAgICAgICAgdm9pZCAqb3BhcXVlOworICAgIH0gaGFuZGxlclsx Nl07CisKKyAgICB1aW50MTZfdCBtY3I7CisgICAgdWludDE2X3QgY2RyOworICAgIHVpbnQxNl90 IGNjcjsKKyAgICB1aW50MTZfdCBpcnI7CisgICAgdWludDE2X3QgaW1yOworICAgIHVpbnQxNl90 IGlzcjsKKyAgICB1aW50MTZfdCBncHJyOworfTsKKworI2RlZmluZSBTQ09PUF9NQ1IJMHgwMAor I2RlZmluZSBTQ09PUF9DRFIJMHgwNAorI2RlZmluZSBTQ09PUF9DU1IJMHgwOAorI2RlZmluZSBT Q09PUF9DUFIJMHgwYworI2RlZmluZSBTQ09PUF9DQ1IJMHgxMAorI2RlZmluZSBTQ09PUF9JUlJf SVJNCTB4MTQKKyNkZWZpbmUgU0NPT1BfSU1SCTB4MTgKKyNkZWZpbmUgU0NPT1BfSVNSCTB4MWMK KyNkZWZpbmUgU0NPT1BfR1BDUgkweDIwCisjZGVmaW5lIFNDT09QX0dQV1IJMHgyNAorI2RlZmlu ZSBTQ09PUF9HUFJSCTB4MjgKKworc3RhdGljIGlubGluZSB2b2lkIHNjb29wX2dwaW9faGFuZGxl cl91cGRhdGUoc3RydWN0IHNjb29wX2luZm9fcyAqcykgeworICAgIHVpbnQzMl90IGxldmVsLCBk aWZmOworICAgIGludCBiaXQ7CisgICAgbGV2ZWwgPSBzLT5ncGlvX2xldmVsICYgcy0+Z3Bpb19k aXI7CisKKyAgICBmb3IgKGRpZmYgPSBzLT5wcmV2X2xldmVsIF4gbGV2ZWw7IGRpZmY7IGRpZmYg Xj0gMSA8PCBiaXQpIHsKKyAgICAgICAgYml0ID0gZmZzKGRpZmYpIC0gMTsKKyAgICAgICAgaWYg KHMtPmhhbmRsZXJbYml0XS5mbikKKyAgICAgICAgICAgIHMtPmhhbmRsZXJbYml0XS5mbihiaXQs IChsZXZlbCA+PiBiaXQpICYgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5oYW5k bGVyW2JpdF0ub3BhcXVlKTsKKyAgICB9CisKKyAgICBzLT5wcmV2X2xldmVsID0gbGV2ZWw7Cit9 CisKK3N0YXRpYyB1aW50MzJfdCBzY29vcF9yZWFkYih2b2lkICpvcGFxdWUsIHRhcmdldF9waHlz X2FkZHJfdCBhZGRyKQoreworICAgIHN0cnVjdCBzY29vcF9pbmZvX3MgKnMgPSAoc3RydWN0IHNj b29wX2luZm9fcyAqKSBvcGFxdWU7CisgICAgYWRkciAtPSBzLT50YXJnZXRfYmFzZTsKKworICAg IHN3aXRjaCAoYWRkcikgeworICAgIGNhc2UgU0NPT1BfTUNSOgorICAgICAgICByZXR1cm4gcy0+ bWNyOworICAgIGNhc2UgU0NPT1BfQ0RSOgorICAgICAgICByZXR1cm4gcy0+Y2RyOworICAgIGNh c2UgU0NPT1BfQ1NSOgorICAgICAgICByZXR1cm4gcy0+c3RhdHVzOworICAgIGNhc2UgU0NPT1Bf Q1BSOgorICAgICAgICByZXR1cm4gcy0+cG93ZXI7CisgICAgY2FzZSBTQ09PUF9DQ1I6CisgICAg ICAgIHJldHVybiBzLT5jY3I7CisgICAgY2FzZSBTQ09PUF9JUlJfSVJNOgorICAgICAgICByZXR1 cm4gcy0+aXJyOworICAgIGNhc2UgU0NPT1BfSU1SOgorICAgICAgICByZXR1cm4gcy0+aW1yOwor ICAgIGNhc2UgU0NPT1BfSVNSOgorICAgICAgICByZXR1cm4gcy0+aXNyOworICAgIGNhc2UgU0NP T1BfR1BDUjoKKyAgICAgICAgcmV0dXJuIHMtPmdwaW9fZGlyOworICAgIGNhc2UgU0NPT1BfR1BX UjoKKyAgICAgICAgcmV0dXJuIHMtPmdwaW9fbGV2ZWw7CisgICAgY2FzZSBTQ09PUF9HUFJSOgor ICAgICAgICByZXR1cm4gcy0+Z3BycjsKKyAgICBkZWZhdWx0OgorICAgICAgICBzcGl0el9wcmlu dGYoIkJhZCByZWdpc3RlciBvZmZzZXQgIiBSRUdfRk1UICJcbiIsIGFkZHIpOworICAgIH0KKwor ICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBzY29vcF93cml0ZWIodm9pZCAqb3BhcXVl LCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwgdWludDMyX3QgdmFsdWUpCit7CisgICAgc3RydWN0 IHNjb29wX2luZm9fcyAqcyA9IChzdHJ1Y3Qgc2Nvb3BfaW5mb19zICopIG9wYXF1ZTsKKyAgICBh ZGRyIC09IHMtPnRhcmdldF9iYXNlOworICAgIHZhbHVlICY9IDB4ZmZmZjsKKworICAgIHN3aXRj aCAoYWRkcikgeworICAgIGNhc2UgU0NPT1BfTUNSOgorICAgICAgICBzLT5tY3IgPSB2YWx1ZTsK KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTQ09PUF9DRFI6CisgICAgICAgIHMtPmNkciA9IHZh bHVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNDT09QX0NQUjoKKyAgICAgICAgcy0+cG93 ZXIgPSB2YWx1ZTsKKyAgICAgICAgaWYgKHZhbHVlICYgMHg4MCkKKyAgICAgICAgICAgIHMtPnBv d2VyIHw9IDB4ODA0MDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTQ09PUF9DQ1I6CisgICAg ICAgIHMtPmNjciA9IHZhbHVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNDT09QX0lSUl9J Uk06CisgICAgICAgIHMtPmlyciA9IHZhbHVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFND T09QX0lNUjoKKyAgICAgICAgcy0+aW1yID0gdmFsdWU7CisgICAgICAgIGJyZWFrOworICAgIGNh c2UgU0NPT1BfSVNSOgorICAgICAgICBzLT5pc3IgPSB2YWx1ZTsKKyAgICAgICAgYnJlYWs7Cisg ICAgY2FzZSBTQ09PUF9HUENSOgorICAgICAgICBzLT5ncGlvX2RpciA9IHZhbHVlOworICAgICAg ICBzY29vcF9ncGlvX2hhbmRsZXJfdXBkYXRlKHMpOworICAgICAgICBicmVhazsKKyAgICBjYXNl IFNDT09QX0dQV1I6CisgICAgICAgIHMtPmdwaW9fbGV2ZWwgPSB2YWx1ZSAmIHMtPmdwaW9fZGly OworICAgICAgICBzY29vcF9ncGlvX2hhbmRsZXJfdXBkYXRlKHMpOworICAgICAgICBicmVhazsK KyAgICBjYXNlIFNDT09QX0dQUlI6CisgICAgICAgIHMtPmdwcnIgPSB2YWx1ZTsKKyAgICAgICAg YnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgc3BpdHpfcHJpbnRmKCJCYWQgcmVnaXN0ZXIg b2Zmc2V0ICIgUkVHX0ZNVCAiXG4iLCBhZGRyKTsKKyAgICB9Cit9CisKK0NQVVJlYWRNZW1vcnlG dW5jICpzY29vcF9yZWFkZm5bXSA9IHsKKyAgICBzY29vcF9yZWFkYiwKKyAgICBzY29vcF9yZWFk YiwKKyAgICBzY29vcF9yZWFkYiwKK307CitDUFVXcml0ZU1lbW9yeUZ1bmMgKnNjb29wX3dyaXRl Zm5bXSA9IHsKKyAgICBzY29vcF93cml0ZWIsCisgICAgc2Nvb3Bfd3JpdGViLAorICAgIHNjb29w X3dyaXRlYiwKK307CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBzY29vcF9ncGlvX3NldChzdHJ1Y3Qg c2Nvb3BfaW5mb19zICpzLCBpbnQgbGluZSwgaW50IGxldmVsKQoreworICAgIGlmIChsaW5lID49 IDE2KSB7CisgICAgICAgIHNwaXR6X3ByaW50ZigiTm8gR1BJTyBwaW4gJWlcbiIsIGxpbmUpOwor ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGxldmVsKQorICAgICAgICBzLT5ncGlv X2xldmVsIHw9ICgxIDw8IGxpbmUpOworICAgIGVsc2UKKyAgICAgICAgcy0+Z3Bpb19sZXZlbCAm PSB+KDEgPDwgbGluZSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBzY29vcF9ncGlvX2hhbmRs ZXJfc2V0KHN0cnVjdCBzY29vcF9pbmZvX3MgKnMsIGludCBsaW5lLAorICAgICAgICAgICAgICAg IGdwaW9faGFuZGxlcl90IGhhbmRsZXIsIHZvaWQgKm9wYXF1ZSkgeworICAgIGlmIChsaW5lID49 IDE2KSB7CisgICAgICAgIHNwaXR6X3ByaW50ZigiTm8gR1BJTyBwaW4gJWlcbiIsIGxpbmUpOwor ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcy0+aGFuZGxlcltsaW5lXS5mbiA9IGhhbmRs ZXI7CisgICAgcy0+aGFuZGxlcltsaW5lXS5vcGFxdWUgPSBvcGFxdWU7Cit9CisKK3N0YXRpYyBz dHJ1Y3Qgc2Nvb3BfaW5mb19zICpzcGl0el9zY29vcF9pbml0KHN0cnVjdCBweGEyeHhfc3RhdGVf cyAqY3B1LAorICAgICAgICAgICAgICAgIGludCBjb3VudCkgeworICAgIGludCBpb21lbXR5cGU7 CisgICAgc3RydWN0IHNjb29wX2luZm9fcyAqczsKKworICAgIHMgPSAoc3RydWN0IHNjb29wX2lu Zm9fcyAqKQorICAgICAgICAgICAgcWVtdV9tYWxsb2N6KHNpemVvZihzdHJ1Y3Qgc2Nvb3BfaW5m b19zKSAqIDIpOworICAgIG1lbXNldChzLCAwLCBzaXplb2Yoc3RydWN0IHNjb29wX2luZm9fcykg KiBjb3VudCk7CisgICAgc1swXS50YXJnZXRfYmFzZSA9IDB4MTA4MDAwMDA7CisgICAgc1sxXS50 YXJnZXRfYmFzZSA9IDB4MDg4MDAwNDA7CisKKyAgICAvKiBSZWFkeSAqLworICAgIHNbMF0uc3Rh dHVzID0gMHgwMjsKKyAgICBzWzFdLnN0YXR1cyA9IDB4MDI7CisKKyAgICBpb21lbXR5cGUgPSBj cHVfcmVnaXN0ZXJfaW9fbWVtb3J5KDAsIHNjb29wX3JlYWRmbiwKKyAgICAgICAgICAgICAgICAg ICAgc2Nvb3Bfd3JpdGVmbiwgJnNbMF0pOworICAgIGNwdV9yZWdpc3Rlcl9waHlzaWNhbF9tZW1v cnkoc1swXS50YXJnZXRfYmFzZSwgMHhmZmYsIGlvbWVtdHlwZSk7CisKKyAgICBpZiAoY291bnQg PCAyKQorICAgICAgICByZXR1cm4gczsKKworICAgIGlvbWVtdHlwZSA9IGNwdV9yZWdpc3Rlcl9p b19tZW1vcnkoMCwgc2Nvb3BfcmVhZGZuLAorICAgICAgICAgICAgICAgICAgICBzY29vcF93cml0 ZWZuLCAmc1sxXSk7CisgICAgY3B1X3JlZ2lzdGVyX3BoeXNpY2FsX21lbW9yeShzWzFdLnRhcmdl dF9iYXNlLCAweGZmZiwgaW9tZW10eXBlKTsKKworICAgIHJldHVybiBzOworfQorCisvKiBMQ0Qg YmFja2xpZ2h0IGNvbnRyb2xsZXIgKi8KKworI2RlZmluZSBMQ0RUR19SRVNDVEwJMHgwMAorI2Rl ZmluZSBMQ0RUR19QSEFDVFJMCTB4MDEKKyNkZWZpbmUgTENEVEdfRFVUWUNUUkwJMHgwMgorI2Rl ZmluZSBMQ0RUR19QT1dFUlJFRzAJMHgwMworI2RlZmluZSBMQ0RUR19QT1dFUlJFRzEJMHgwNAor I2RlZmluZSBMQ0RUR19HUE9SMwkweDA1CisjZGVmaW5lIExDRFRHX1BJQ1RSTAkweDA2CisjZGVm aW5lIExDRFRHX1BPTENUUkwJMHgwNworCitzdGF0aWMgaW50IGJsX2ludGVuc2l0eSwgYmxfcG93 ZXI7CisKK3N0YXRpYyB2b2lkIHNwaXR6X2JsX3VwZGF0ZShzdHJ1Y3QgcHhhMnh4X3N0YXRlX3Mg KnMpCit7CisgICAgaWYgKGJsX3Bvd2VyICYmIGJsX2ludGVuc2l0eSkKKyAgICAgICAgc3BpdHpf cHJpbnRmKCJMQ0QgQmFja2xpZ2h0IG5vdyBhdCAlaS82M1xuIiwgYmxfaW50ZW5zaXR5KTsKKyAg ICBlbHNlCisgICAgICAgIHNwaXR6X3ByaW50ZigiTENEIEJhY2tsaWdodCBub3cgb2ZmXG4iKTsK K30KKworc3RhdGljIHZvaWQgc3BpdHpfYmxfYml0NShpbnQgbGluZSwgaW50IGxldmVsLCB2b2lk ICpvcGFxdWUpCit7CisgICAgaW50IHByZXYgPSBibF9pbnRlbnNpdHk7CisKKyAgICBpZiAobGV2 ZWwpCisgICAgICAgIGJsX2ludGVuc2l0eSAmPSB+MHgyMDsKKyAgICBlbHNlCisgICAgICAgIGJs X2ludGVuc2l0eSB8PSAweDIwOworCisgICAgaWYgKGJsX3Bvd2VyICYmIHByZXYgIT0gYmxfaW50 ZW5zaXR5KQorICAgICAgICBzcGl0el9ibF91cGRhdGUoKHN0cnVjdCBweGEyeHhfc3RhdGVfcyAq KSBvcGFxdWUpOworfQorCitzdGF0aWMgdm9pZCBzcGl0el9ibF9wb3dlcihpbnQgbGluZSwgaW50 IGxldmVsLCB2b2lkICpvcGFxdWUpCit7CisgICAgYmxfcG93ZXIgPSAhIWxldmVsOworICAgIHNw aXR6X2JsX3VwZGF0ZSgoc3RydWN0IHB4YTJ4eF9zdGF0ZV9zICopIG9wYXF1ZSk7Cit9CisKK3N0 YXRpYyB2b2lkIHNwaXR6X2xjZHRnX2RhY19wdXQodm9pZCAqb3BhcXVlLCB1aW50OF90IGNtZCkK K3sKKyAgICBpbnQgYWRkciwgdmFsdWU7CisgICAgYWRkciA9IGNtZCA+PiA1OworICAgIHZhbHVl ID0gY21kICYgMHgxZjsKKworICAgIHN3aXRjaCAoYWRkcikgeworICAgIGNhc2UgTENEVEdfUkVT Q1RMOgorICAgICAgICBpZiAodmFsdWUpCisgICAgICAgICAgICBzcGl0el9wcmludGYoIkxDRCBp biBRVkdBIG1vZGVcbiIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzcGl0el9wcmludGYo IkxDRCBpbiBWR0EgbW9kZVxuIik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBMQ0RUR19E VVRZQ1RSTDoKKyAgICAgICAgYmxfaW50ZW5zaXR5ICY9IH4weDFmOworICAgICAgICBibF9pbnRl bnNpdHkgfD0gdmFsdWU7CisgICAgICAgIGlmIChibF9wb3dlcikKKyAgICAgICAgICAgIHNwaXR6 X2JsX3VwZGF0ZSgoc3RydWN0IHB4YTJ4eF9zdGF0ZV9zICopIG9wYXF1ZSk7CisgICAgICAgIGJy ZWFrOworCisgICAgY2FzZSBMQ0RUR19QT1dFUlJFRzA6CisgICAgICAgIC8qIFNldCBjb21tb24g dm9sdGFnZSB0byBNNjIzMzJGUCAqLworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKKy8qIFNT UCBkZXZpY2VzICovCisKKyNkZWZpbmUgQ09SR0lfU1NQX1BPUlQJCTIKKworI2RlZmluZSBTUElU Wl9HUElPX0xDRENPTl9DUwk1MworI2RlZmluZSBTUElUWl9HUElPX0FEUzc4NDZfQ1MJMTQKKyNk ZWZpbmUgU1BJVFpfR1BJT19NQVgxMTExX0NTCTIwCisjZGVmaW5lIFNQSVRaX0dQSU9fVFBfSU5U CTExCisKK3N0YXRpYyBpbnQgbGNkX2VuLCBhZHNfZW4sIG1heF9lbjsKK3N0YXRpYyBzdHJ1Y3Qg bWF4MTExeF9zICptYXgxMTExOworc3RhdGljIHN0cnVjdCBhZHM3ODQ2X3N0YXRlX3MgKmFkczc4 NDY7CisKKy8qICJEZW11eCIgdGhlIHNpZ25hbCBiYXNlZCBvbiBjdXJyZW50IGNoaXBzZWxlY3Qg Ki8KK3N0YXRpYyB1aW50MzJfdCBjb3JnaV9zc3BfcmVhZCh2b2lkICpvcGFxdWUpCit7CisgICAg aWYgKGxjZF9lbikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKGFkc19lbikKKyAgICAgICAg cmV0dXJuIGFkczc4NDZfcmVhZChhZHM3ODQ2KTsKKyAgICBpZiAobWF4X2VuKQorICAgICAgICBy ZXR1cm4gbWF4MTExeF9yZWFkKG1heDExMTEpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMg dm9pZCBjb3JnaV9zc3Bfd3JpdGUodm9pZCAqb3BhcXVlLCB1aW50MzJfdCB2YWx1ZSkKK3sKKyAg ICBpZiAobGNkX2VuKQorICAgICAgICBzcGl0el9sY2R0Z19kYWNfcHV0KG9wYXF1ZSwgdmFsdWUp OworICAgIGlmIChhZHNfZW4pCisgICAgICAgIGFkczc4NDZfd3JpdGUoYWRzNzg0NiwgdmFsdWUp OworICAgIGlmIChtYXhfZW4pCisgICAgICAgIG1heDExMXhfd3JpdGUobWF4MTExMSwgdmFsdWUp OworfQorCitzdGF0aWMgdm9pZCBjb3JnaV9zc3BfZ3Bpb19jcyhpbnQgbGluZSwgaW50IGxldmVs LCBzdHJ1Y3QgcHhhMnh4X3N0YXRlX3MgKnMpCit7CisgICAgaWYgKGxpbmUgPT0gU1BJVFpfR1BJ T19MQ0RDT05fQ1MpCisgICAgICAgIGxjZF9lbiA9ICFsZXZlbDsKKyAgICBlbHNlIGlmIChsaW5l ID09IFNQSVRaX0dQSU9fQURTNzg0Nl9DUykKKyAgICAgICAgYWRzX2VuID0gIWxldmVsOworICAg IGVsc2UgaWYgKGxpbmUgPT0gU1BJVFpfR1BJT19NQVgxMTExX0NTKQorICAgICAgICBtYXhfZW4g PSAhbGV2ZWw7Cit9CisKKyNkZWZpbmUgTUFYMTExMV9CQVRUX1ZPTFQJMQorI2RlZmluZSBNQVgx MTExX0JBVFRfVEVNUAkyCisjZGVmaW5lIE1BWDExMTFfQUNJTl9WT0xUCTMKKworI2RlZmluZSBT UElUWl9CQVRURVJZX1RFTVAJMHhlMAkvKiBBYm91dCAyLjlWICovCisjZGVmaW5lIFNQSVRaX0JB VFRFUllfVk9MVAkweGQwCS8qIEFib3V0IDQuMFYgKi8KKyNkZWZpbmUgU1BJVFpfQ0hBUkdFT05f QUNJTgkweDgwCS8qIEFib3V0IDUuMFYgKi8KKworc3RhdGljIHZvaWQgc3BpdHpfYWRjX3RlbXBf b24oaW50IGxpbmUsIGludCBsZXZlbCwgdm9pZCAqb3BhcXVlKQoreworICAgIGlmICghbWF4MTEx MSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGxldmVsKQorICAgICAgICBtYXgxMTF4X3Nl dF9pbnB1dChtYXgxMTExLCBNQVgxMTExX0JBVFRfVEVNUCwgU1BJVFpfQkFUVEVSWV9URU1QKTsK KyAgICBlbHNlCisgICAgICAgIG1heDExMXhfc2V0X2lucHV0KG1heDExMTEsIE1BWDExMTFfQkFU VF9URU1QLCAwKTsKK30KKworc3RhdGljIHZvaWQgc3BpdHpfcGVuZG93bl9zZXQodm9pZCAqb3Bh cXVlLCBpbnQgbGV2ZWwpCit7CisgICAgc3RydWN0IHB4YTJ4eF9zdGF0ZV9zICpjcHUgPSAoc3Ry dWN0IHB4YTJ4eF9zdGF0ZV9zICopIG9wYXF1ZTsKKyAgICBweGEyeHhfZ3Bpb19zZXQoY3B1LT5n cGlvLCBTUElUWl9HUElPX1RQX0lOVCwgbGV2ZWwpOworfQorCitzdGF0aWMgdm9pZCBzcGl0el9z c3BfYXR0YWNoKHN0cnVjdCBweGEyeHhfc3RhdGVfcyAqY3B1KQoreworICAgIGxjZF9lbiA9IGFk c19lbiA9IG1heF9lbiA9IDA7CisKKyAgICBhZHM3ODQ2ID0gYWRzNzg0Nl9pbml0KHNwaXR6X3Bl bmRvd25fc2V0LCBjcHUpOworCisgICAgbWF4MTExMSA9IG1heDExMTFfaW5pdCgwLCBjcHUpOwor ICAgIG1heDExMXhfc2V0X2lucHV0KG1heDExMTEsIE1BWDExMTFfQkFUVF9WT0xULCBTUElUWl9C QVRURVJZX1ZPTFQpOworICAgIG1heDExMXhfc2V0X2lucHV0KG1heDExMTEsIE1BWDExMTFfQkFU VF9URU1QLCAwKTsKKyAgICBtYXgxMTF4X3NldF9pbnB1dChtYXgxMTExLCBNQVgxMTExX0FDSU5f Vk9MVCwgU1BJVFpfQ0hBUkdFT05fQUNJTik7CisKKyAgICBweGEyeHhfc3NwX2F0dGFjaChjcHUt PnNzcFtDT1JHSV9TU1BfUE9SVCAtIDFdLCBjb3JnaV9zc3BfcmVhZCwKKyAgICAgICAgICAgICAg ICAgICAgY29yZ2lfc3NwX3dyaXRlLCBjcHUpOworCisgICAgcHhhMnh4X2dwaW9faGFuZGxlcl9z ZXQoY3B1LT5ncGlvLCBTUElUWl9HUElPX0xDRENPTl9DUywKKyAgICAgICAgICAgICAgICAgICAg KGdwaW9faGFuZGxlcl90KSBjb3JnaV9zc3BfZ3Bpb19jcywgY3B1KTsKKyAgICBweGEyeHhfZ3Bp b19oYW5kbGVyX3NldChjcHUtPmdwaW8sIFNQSVRaX0dQSU9fQURTNzg0Nl9DUywKKyAgICAgICAg ICAgICAgICAgICAgKGdwaW9faGFuZGxlcl90KSBjb3JnaV9zc3BfZ3Bpb19jcywgY3B1KTsKKyAg ICBweGEyeHhfZ3Bpb19oYW5kbGVyX3NldChjcHUtPmdwaW8sIFNQSVRaX0dQSU9fTUFYMTExMV9D UywKKyAgICAgICAgICAgICAgICAgICAgKGdwaW9faGFuZGxlcl90KSBjb3JnaV9zc3BfZ3Bpb19j cywgY3B1KTsKKworICAgIGJsX2ludGVuc2l0eSA9IDB4MjA7CisgICAgYmxfcG93ZXIgPSAwOwor fQorCisvKiBDRiBNaWNyb2RyaXZlICovCisKK3N0YXRpYyB2b2lkIHNwaXR6X21pY3JvZHJpdmVf YXR0YWNoKHN0cnVjdCBweGEyeHhfc3RhdGVfcyAqY3B1KQoreworICAgIHN0cnVjdCBwY21jaWFf Y2FyZF9zICptZDsKKyAgICBCbG9ja0RyaXZlclN0YXRlICpicyA9IGJzX3RhYmxlWzBdOworCisg ICAgaWYgKGJzICYmIGJkcnZfaXNfaW5zZXJ0ZWQoYnMpICYmICFiZHJ2X2lzX3JlbW92YWJsZShi cykpIHsKKyAgICAgICAgbWQgPSBkc2NtMXh4eHhfaW5pdChicyk7CisgICAgICAgIHB4YTJ4eF9w Y21jaWFfYXR0YWNoKGNwdS0+cGNtY2lhWzBdLCBtZCk7CisgICAgfQorfQorCisvKiBXbTg3NTAg YW5kIE1heDczMTAgb24gSTJDICovCisKKyNkZWZpbmUgQUtJVEFfTUFYX0FERFIJMHgxOAorI2Rl ZmluZSBTUElUWl9XTV9BRERSTAkweDFhCisjZGVmaW5lIFNQSVRaX1dNX0FERFJICTB4MWIKKwor I2RlZmluZSBTUElUWl9HUElPX1dNCTUKKworI2lmZGVmIEhBU19BVURJTworc3RydWN0IHNwaXR6 X3dtODc1MF9zIHsKKyAgICBzdHJ1Y3QgaTJjX2J1c19zICpidXM7CisgICAgc3RydWN0IGkyY19z bGF2ZV9zICp3bTsKK307CisKK3N0YXRpYyB2b2lkIHNwaXR6X3dtODc1MF9hZGRyKGludCBsaW5l LCBpbnQgbGV2ZWwsIHZvaWQgKm9wYXF1ZSkKK3sKKyAgICBzdHJ1Y3Qgc3BpdHpfd204NzUwX3Mg KnMgPSAoc3RydWN0IHNwaXR6X3dtODc1MF9zICopIG9wYXF1ZTsKKyAgICBpZiAobGV2ZWwpCisg ICAgICAgIGkyY19zbGF2ZV9hdHRhY2gocy0+YnVzLCBTUElUWl9XTV9BRERSSCwgcy0+d20pOwor ICAgIGVsc2UKKyAgICAgICAgaTJjX3NsYXZlX2F0dGFjaChzLT5idXMsIFNQSVRaX1dNX0FERFJM LCBzLT53bSk7Cit9CisjZW5kaWYKKworc3RhdGljIHZvaWQgc3BpdHpfaTJjX3NldHVwKHN0cnVj dCBweGEyeHhfc3RhdGVfcyAqY3B1KQoreworI2lmZGVmIEhBU19BVURJTworICAgIEF1ZGlvU3Rh dGUgKmF1ZGlvOworICAgIHN0cnVjdCBzcGl0el93bTg3NTBfcyAqczsKKyNlbmRpZgorICAgIHN0 cnVjdCBpMmNfYnVzX3MgKmJ1cyA9IChzdHJ1Y3QgaTJjX2J1c19zICopCisgICAgICAgICAgICBx ZW11X21hbGxvY3ooc2l6ZW9mKHN0cnVjdCBpMmNfYnVzX3MpKTsKKworICAgIC8qIEF0dGFjaCB0 aGUgQ1BVIG9uIG9uZSBlbmQgb2Ygb3VyIEkyQyBidXMuICAqLworICAgIGkyY19tYXN0ZXJfYXR0 YWNoKGJ1cywgJmNwdS0+aTJjWzBdLT5tYXN0ZXIpOworCisjaWZkZWYgSEFTX0FVRElPCisgICAg YXVkaW8gPSBBVURfaW5pdCgpOworICAgIGlmICghYXVkaW8pCisgICAgICAgIHJldHVybjsKKyAg ICBzID0gKHN0cnVjdCBzcGl0el93bTg3NTBfcyAqKSBxZW11X21hbGxvY3ooc2l6ZW9mKHN0cnVj dCBzcGl0el93bTg3NTBfcykpOworICAgIHMtPndtID0gd204NzUwX2luaXQoYXVkaW8pOworICAg IHMtPmJ1cyA9IGJ1czsKKworICAgIC8qIEF0dGFjaCBhIFdNODc1MCB0byB0aGUgYnVzICovCisg ICAgaTJjX3NsYXZlX2F0dGFjaChidXMsIFNQSVRaX1dNX0FERFJMLCBzLT53bSk7CisgICAgcHhh Mnh4X2dwaW9faGFuZGxlcl9zZXQoY3B1LT5ncGlvLCBTUElUWl9HUElPX1dNLCBzcGl0el93bTg3 NTBfYWRkciwgcyk7CisgICAgLyogLi4gYW5kIHRvIHRoZSBzb3VuZCBpbnRlcmZhY2UuICAqLwor ICAgIGNwdS0+aTJzLT5vcGFxdWUgPSBzLT53bS0+b3BhcXVlOworICAgIGNwdS0+aTJzLT5jb2Rl Y19vdXQgPSB3bTg3NTBfZGFjX2RhdDsKKyAgICBjcHUtPmkycy0+Y29kZWNfaW4gPSB3bTg3NTBf YWRjX2RhdDsKKyAgICB3bTg3NTBfZGF0YV9yZXFfc2V0KHMtPndtLCBjcHUtPmkycy0+ZGF0YV9y ZXEsIGNwdS0+aTJzKTsKKyNlbmRpZgorfQorCitzdGF0aWMgdm9pZCBzcGl0el9ha2l0YV9pMmNf c2V0dXAoc3RydWN0IHB4YTJ4eF9zdGF0ZV9zICpjcHUpCit7CisgICAgLyogQXR0YWNoIGEgTWF4 NzMxMCB0byBBa2l0YSBJMkMgYnVzLiAgKi8KKyAgICBpMmNfc2xhdmVfYXR0YWNoKGNwdS0+aTJj WzBdLT5tYXN0ZXIuYnVzLCBBS0lUQV9NQVhfQUREUiwgbWF4NzMxMF9pbml0KCkpOworfQorCisv KiBPdGhlciBwZXJpcGhlcmFscyAqLworCitzdGF0aWMgdm9pZCBzcGl0el9jaGFyZ2Vfc3dpdGNo KGludCBsaW5lLCBpbnQgbGV2ZWwsIHZvaWQgKm9wYXF1ZSkKK3sKKyAgICBzcGl0el9wcmludGYo IkNoYXJnaW5nICVzLlxuIiwgbGV2ZWwgPyAib2ZmIiA6ICJvbiIpOworfQorCitzdGF0aWMgdm9p ZCBzcGl0el9kaXNjaGFyZ2Vfc3dpdGNoKGludCBsaW5lLCBpbnQgbGV2ZWwsIHZvaWQgKm9wYXF1 ZSkKK3sKKyAgICBzcGl0el9wcmludGYoIkRpc2NoYXJnaW5nICVzLlxuIiwgbGV2ZWwgPyAib24i IDogIm9mZiIpOworfQorCitzdGF0aWMgdm9pZCBzcGl0el9ncmVlbmxlZF9zd2l0Y2goaW50IGxp bmUsIGludCBsZXZlbCwgdm9pZCAqb3BhcXVlKQoreworICAgIHNwaXR6X3ByaW50ZigiR3JlZW4g TEVEICVzLlxuIiwgbGV2ZWwgPyAib24iIDogIm9mZiIpOworfQorCitzdGF0aWMgdm9pZCBzcGl0 el9vcmFuZ2VsZWRfc3dpdGNoKGludCBsaW5lLCBpbnQgbGV2ZWwsIHZvaWQgKm9wYXF1ZSkKK3sK KyAgICBzcGl0el9wcmludGYoIk9yYW5nZSBMRUQgJXMuXG4iLCBsZXZlbCA/ICJvbiIgOiAib2Zm Iik7Cit9CisKKyNkZWZpbmUgU1BJVFpfU0NQX0xFRF9HUkVFTgkJMQorI2RlZmluZSBTUElUWl9T Q1BfSktfQgkJCTIKKyNkZWZpbmUgU1BJVFpfU0NQX0NIUkdfT04JCTMKKyNkZWZpbmUgU1BJVFpf U0NQX01VVEVfTAkJNAorI2RlZmluZSBTUElUWl9TQ1BfTVVURV9SCQk1CisjZGVmaW5lIFNQSVRa X1NDUF9DRl9QT1dFUgkJNgorI2RlZmluZSBTUElUWl9TQ1BfTEVEX09SQU5HRQkJNworI2RlZmlu ZSBTUElUWl9TQ1BfSktfQQkJCTgKKyNkZWZpbmUgU1BJVFpfU0NQX0FEQ19URU1QX09OCQk5Cisj ZGVmaW5lIFNQSVRaX1NDUDJfSVJfT04JCTEKKyNkZWZpbmUgU1BJVFpfU0NQMl9BS0lOX1BVTExV UAkJMgorI2RlZmluZSBTUElUWl9TQ1AyX0JBQ0tMSUdIVF9DT05UCTcKKyNkZWZpbmUgU1BJVFpf U0NQMl9CQUNLTElHSFRfT04JCTgKKyNkZWZpbmUgU1BJVFpfU0NQMl9NSUNfQklBUwkJOQorCitz dGF0aWMgdm9pZCBzcGl0el9zY29vcF9ncGlvX3NldHVwKHN0cnVjdCBweGEyeHhfc3RhdGVfcyAq Y3B1LAorICAgICAgICAgICAgICAgIHN0cnVjdCBzY29vcF9pbmZvX3MgKnNjcCwgaW50IG51bSkK K3sKKyAgICBzY29vcF9ncGlvX2hhbmRsZXJfc2V0KCZzY3BbMF0sIFNQSVRaX1NDUF9DSFJHX09O LAorICAgICAgICAgICAgICAgICAgICBzcGl0el9jaGFyZ2Vfc3dpdGNoLCBjcHUpOworICAgIHNj b29wX2dwaW9faGFuZGxlcl9zZXQoJnNjcFswXSwgU1BJVFpfU0NQX0pLX0IsCisgICAgICAgICAg ICAgICAgICAgIHNwaXR6X2Rpc2NoYXJnZV9zd2l0Y2gsIGNwdSk7CisgICAgc2Nvb3BfZ3Bpb19o YW5kbGVyX3NldCgmc2NwWzBdLCBTUElUWl9TQ1BfTEVEX0dSRUVOLAorICAgICAgICAgICAgICAg ICAgICBzcGl0el9ncmVlbmxlZF9zd2l0Y2gsIGNwdSk7CisgICAgc2Nvb3BfZ3Bpb19oYW5kbGVy X3NldCgmc2NwWzBdLCBTUElUWl9TQ1BfTEVEX09SQU5HRSwKKyAgICAgICAgICAgICAgICAgICAg c3BpdHpfb3JhbmdlbGVkX3N3aXRjaCwgY3B1KTsKKworICAgIGlmIChudW0gPj0gMikgeworICAg ICAgICBzY29vcF9ncGlvX2hhbmRsZXJfc2V0KCZzY3BbMV0sIFNQSVRaX1NDUDJfQkFDS0xJR0hU X0NPTlQsCisgICAgICAgICAgICAgICAgICAgICAgICBzcGl0el9ibF9iaXQ1LCBjcHUpOworICAg ICAgICBzY29vcF9ncGlvX2hhbmRsZXJfc2V0KCZzY3BbMV0sIFNQSVRaX1NDUDJfQkFDS0xJR0hU X09OLAorICAgICAgICAgICAgICAgICAgICAgICAgc3BpdHpfYmxfcG93ZXIsIGNwdSk7CisgICAg fQorCisgICAgc2Nvb3BfZ3Bpb19oYW5kbGVyX3NldCgmc2NwWzBdLCBTUElUWl9TQ1BfQURDX1RF TVBfT04sCisgICAgICAgICAgICAgICAgICAgIHNwaXR6X2FkY190ZW1wX29uLCBjcHUpOworfQor CisjZGVmaW5lIFNQSVRaX0dQSU9fSFNZTkMJCTIyCisjZGVmaW5lIFNQSVRaX0dQSU9fU0RfREVU RUNUCQk5CisjZGVmaW5lIFNQSVRaX0dQSU9fU0RfV1AJCTgxCisjZGVmaW5lIFNQSVRaX0dQSU9f T05fUkVTRVQJCTg5CisjZGVmaW5lIFNQSVRaX0dQSU9fQkFUX0NPVkVSCQk5MAorI2RlZmluZSBT UElUWl9HUElPX0NGMV9JUlEJCTEwNQorI2RlZmluZSBTUElUWl9HUElPX0NGMV9DRAkJOTQKKyNk ZWZpbmUgU1BJVFpfR1BJT19DRjJfSVJRCQkxMDYKKyNkZWZpbmUgU1BJVFpfR1BJT19DRjJfQ0QJ CTkzCisKK2ludCBzcGl0el9oc3luYzsKKworc3RhdGljIHZvaWQgc3BpdHpfbGNkX2hzeW5jX2hh bmRsZXIodm9pZCAqb3BhcXVlKQoreworICAgIHN0cnVjdCBweGEyeHhfc3RhdGVfcyAqY3B1ID0g KHN0cnVjdCBweGEyeHhfc3RhdGVfcyAqKSBvcGFxdWU7CisgICAgcHhhMnh4X2dwaW9fc2V0KGNw dS0+Z3BpbywgU1BJVFpfR1BJT19IU1lOQywgc3BpdHpfaHN5bmMpOworICAgIHNwaXR6X2hzeW5j IF49IDE7Cit9CisKK3N0YXRpYyB2b2lkIHNwaXR6X21tY19jb3ZlcnN3aXRjaF9jaGFuZ2Uodm9p ZCAqb3BhcXVlLCBpbnQgaW4pCit7CisgICAgc3RydWN0IHB4YTJ4eF9zdGF0ZV9zICpjcHUgPSAo c3RydWN0IHB4YTJ4eF9zdGF0ZV9zICopIG9wYXF1ZTsKKyAgICBweGEyeHhfZ3Bpb19zZXQoY3B1 LT5ncGlvLCBTUElUWl9HUElPX1NEX0RFVEVDVCwgaW4pOworfQorCitzdGF0aWMgdm9pZCBzcGl0 el9tbWNfd3JpdGVwcm90ZWN0X2NoYW5nZSh2b2lkICpvcGFxdWUsIGludCB3cCkKK3sKKyAgICBz dHJ1Y3QgcHhhMnh4X3N0YXRlX3MgKmNwdSA9IChzdHJ1Y3QgcHhhMnh4X3N0YXRlX3MgKikgb3Bh cXVlOworICAgIHB4YTJ4eF9ncGlvX3NldChjcHUtPmdwaW8sIFNQSVRaX0dQSU9fU0RfV1AsIHdw KTsKK30KKworc3RhdGljIHZvaWQgc3BpdHpfZ3Bpb19zZXR1cChzdHJ1Y3QgcHhhMnh4X3N0YXRl X3MgKmNwdSwgaW50IHNsb3RzKQoreworICAgIC8qCisgICAgICogQmFkIGhhY2s6IFdlIHRvZ2ds ZSB0aGUgTENEIGhzeW5jIEdQSU8gb24gZXZlcnkgR1BJTyBzdGF0dXMKKyAgICAgKiByZWFkIHRv IHNhdGlzZnkgYnJva2VuIGd1ZXN0cyB0aGF0IHBvbGwtd2FpdCBmb3IgaHN5bmMuCisgICAgICog U2ltdWxhdGluZyBhIHJlYWwgaHN5bmMgZXZlbnQgd291bGQgYmUgbGVzcyBwcmFjdGljYWwgYW5k CisgICAgICogd291bGRuJ3QgZ3VhcmFudGVlIHRoYXQgYSBndWVzdCBldmVyIGV4aXRzIHRoZSBs b29wLgorICAgICAqLworICAgIHNwaXR6X2hzeW5jID0gMDsKKyAgICBweGEyeHhfZ3Bpb19yZWFk X25vdGlmaWVyKGNwdS0+Z3Bpbywgc3BpdHpfbGNkX2hzeW5jX2hhbmRsZXIsIGNwdSk7CisgICAg cHhhMnh4X2xjZF92c3luY19jYihjcHUtPmxjZCwgc3BpdHpfbGNkX2hzeW5jX2hhbmRsZXIsIGNw dSk7CisKKyAgICAvKiBNTUMvU0QgaG9zdCAqLworICAgIHB4YTJ4eF9tbWNpX2hhbmRsZXJzKGNw dS0+bW1jLCBjcHUsIHNwaXR6X21tY193cml0ZXByb3RlY3RfY2hhbmdlLAorICAgICAgICAgICAg ICAgICAgICBzcGl0el9tbWNfY292ZXJzd2l0Y2hfY2hhbmdlKTsKKworICAgIC8qIEJhdHRlcnkg bG9jayBhbHdheXMgY2xvc2VkICovCisgICAgcHhhMnh4X2dwaW9fc2V0KGNwdS0+Z3BpbywgU1BJ VFpfR1BJT19CQVRfQ09WRVIsIDEpOworCisgICAgLyogSGFuZGxlIHJlc2V0ICovCisgICAgcHhh Mnh4X2dwaW9faGFuZGxlcl9zZXQoY3B1LT5ncGlvLCBTUElUWl9HUElPX09OX1JFU0VULCBweGEy eHhfcmVzZXQsIGNwdSk7CisKKyAgICAvKiBQQ01DSUEgc2lnbmFsczogY2FyZCdzIElSUSBhbmQg Q2FyZC1EZXRlY3QgKi8KKyAgICBpZiAoc2xvdHMgPj0gMSkKKyAgICAgICAgcHhhMnh4X3BjbWNp YV9zZXRfaXJxX2NiKGNwdS0+cGNtY2lhWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgKHZv aWQgKCopKHZvaWQgKiwgaW50LCBpbnQpKSBweGEyeHhfZ3Bpb19zZXQsCisgICAgICAgICAgICAg ICAgICAgICAgICBTUElUWl9HUElPX0NGMV9JUlEsIFNQSVRaX0dQSU9fQ0YxX0NELCBjcHUtPmdw aW8pOworICAgIGlmIChzbG90cyA+PSAyKQorICAgICAgICBweGEyeHhfcGNtY2lhX3NldF9pcnFf Y2IoY3B1LT5wY21jaWFbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAoKikodm9p ZCAqLCBpbnQsIGludCkpIHB4YTJ4eF9ncGlvX3NldCwKKyAgICAgICAgICAgICAgICAgICAgICAg IFNQSVRaX0dQSU9fQ0YyX0lSUSwgU1BJVFpfR1BJT19DRjJfQ0QsIGNwdS0+Z3Bpbyk7CisKKyAg ICAvKiBJbml0aWFsaXNlIHRoZSBzY3JlZW4gcm90YXRpb24gcmVsYXRlZCBzaWduYWxzICovCisg ICAgc3BpdHpfZ3Bpb19pbnZlcnRbM10gPSAwOwkvKiBBbHdheXMgb3BlbiAqLworICAgIGlmIChn cmFwaGljX3JvdGF0ZSkgewkvKiBUYWJsZXQgbW9kZSAqLworICAgICAgICBzcGl0el9ncGlvX2lu dmVydFs0XSA9IDA7CisgICAgfSBlbHNlIHsJCQkvKiBQb3J0cmFpdCBtb2RlICovCisgICAgICAg IHNwaXR6X2dwaW9faW52ZXJ0WzRdID0gMTsKKyAgICB9CisgICAgcHhhMnh4X2dwaW9fc2V0KGNw dS0+Z3BpbywgU1BJVFpfR1BJT19TV0EsIHNwaXR6X2dwaW9faW52ZXJ0WzNdKTsKKyAgICBweGEy eHhfZ3Bpb19zZXQoY3B1LT5ncGlvLCBTUElUWl9HUElPX1NXQiwgc3BpdHpfZ3Bpb19pbnZlcnRb NF0pOworfQorCisvKiBXcml0ZSB0aGUgYm9vdGxvYWRlciBwYXJhbWV0ZXJzIG1lbW9yeSBhcmVh LiAgKi8KKworI2RlZmluZSBNQUdJQ19DSEcoYSwgYiwgYywgZCkJKChkIDw8IDI0KSB8IChjIDw8 IDE2KSB8IChiIDw8IDgpIHwgYSkKKworc3RydWN0IF9fYXR0cmlidXRlX18gKChfX3BhY2tlZF9f KSkgc2xfcGFyYW1faW5mbyB7CisgICAgdWludDMyX3QgY29tYWRqX2tleXdvcmQ7CisgICAgaW50 MzJfdCBjb21hZGo7CisKKyAgICB1aW50MzJfdCB1dWlkX2tleXdvcmQ7CisgICAgY2hhciB1dWlk WzE2XTsKKworICAgIHVpbnQzMl90IHRvdWNoX2tleXdvcmQ7CisgICAgaW50MzJfdCB0b3VjaF94 cDsKKyAgICBpbnQzMl90IHRvdWNoX3lwOworICAgIGludDMyX3QgdG91Y2hfeGQ7CisgICAgaW50 MzJfdCB0b3VjaF95ZDsKKworICAgIHVpbnQzMl90IGFkYWRqX2tleXdvcmQ7CisgICAgaW50MzJf dCBhZGFkajsKKworICAgIHVpbnQzMl90IHBoYWRfa2V5d29yZDsKKyAgICBpbnQzMl90IHBoYWRh ZGo7Cit9IHNwaXR6X2Jvb3RwYXJhbSA9IHsKKyAgICAuY29tYWRqX2tleXdvcmQJPSBNQUdJQ19D SEcoJ0MnLCAnTScsICdBJywgJ0QnKSwKKyAgICAuY29tYWRqCQk9IDEyNSwKKyAgICAudXVpZF9r ZXl3b3JkCT0gTUFHSUNfQ0hHKCdVJywgJ1UnLCAnSScsICdEJyksCisgICAgLnV1aWQJCT0geyAt MSB9LAorICAgIC50b3VjaF9rZXl3b3JkCT0gTUFHSUNfQ0hHKCdUJywgJ1UnLCAnQycsICdIJyks CisgICAgLnRvdWNoX3hwCQk9IC0xLAorICAgIC5hZGFkal9rZXl3b3JkCT0gTUFHSUNfQ0hHKCdC JywgJ1YnLCAnQScsICdEJyksCisgICAgLmFkYWRqCQk9IC0xLAorICAgIC5waGFkX2tleXdvcmQJ PSBNQUdJQ19DSEcoJ1AnLCAnSCcsICdBJywgJ0QnKSwKKyAgICAucGhhZGFkagkJPSAweDAxLAor fTsKKworc3RhdGljIHZvaWQgc2xfYm9vdHBhcmFtX3dyaXRlKHVpbnQzMl90IHB0cikKK3sKKyAg ICBtZW1jcHkocGh5c19yYW1fYmFzZSArIHB0ciwgJnNwaXR6X2Jvb3RwYXJhbSwKKyAgICAgICAg ICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBzbF9wYXJhbV9pbmZvKSk7Cit9CisKKyNkZWZpbmUg U0xfUFhBX1BBUkFNX0JBU0UJMHhhMDAwMGEwMAorCisvKiBCb2FyZCBpbml0LiAgKi8KK2VudW0g c3BpdHpfbW9kZWxfZSB7IHNwaXR6LCBha2l0YSwgYm9yem9pLCB0ZXJyaWVyIH07CisKK3N0YXRp YyB2b2lkIHNwaXR6X2NvbW1vbl9pbml0KGludCByYW1fc2l6ZSwgaW50IHZnYV9yYW1fc2l6ZSwK KyAgICAgICAgICAgICAgICBEaXNwbGF5U3RhdGUgKmRzLCBjb25zdCBjaGFyICprZXJuZWxfZmls ZW5hbWUsCisgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqa2VybmVsX2NtZGxpbmUsIGNvbnN0 IGNoYXIgKmluaXRyZF9maWxlbmFtZSwKKyAgICAgICAgICAgICAgICBlbnVtIHNwaXR6X21vZGVs X2UgbW9kZWwsIGludCBhcm1faWQpCit7CisgICAgdWludDMyX3Qgc3BpdHpfcmFtID0gMHgwNDAw MDAwMDsKKyAgICB1aW50MzJfdCBzcGl0el9yb20gPSAweDAwODAwMDAwOworICAgIHN0cnVjdCBw eGEyeHhfc3RhdGVfcyAqY3B1OworICAgIHN0cnVjdCBzY29vcF9pbmZvX3MgKnNjcDsKKworICAg IGNwdSA9IHB4YTI3MF9pbml0KGRzLCAobW9kZWwgPT0gdGVycmllcikgPyAiYzUiIDogImMwIik7 CisKKyAgICAvKiBTZXR1cCBtZW1vcnkgKi8KKyAgICBpZiAocmFtX3NpemUgPCBzcGl0el9yYW0g KyBzcGl0el9yb20pIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJUaGlzIHBsYXRmb3JtIHJl cXVpcmVzICVpIGJ5dGVzIG9mIG1lbW9yeVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNw aXR6X3JhbSArIHNwaXR6X3JvbSk7CisgICAgICAgIGV4aXQoMSk7CisgICAgfQorICAgIGNwdV9y ZWdpc3Rlcl9waHlzaWNhbF9tZW1vcnkoUFhBMlhYX1JBTV9CQVNFLCBzcGl0el9yYW0sIElPX01F TV9SQU0pOworCisgICAgc2xfZmxhc2hfcmVnaXN0ZXIoY3B1LCAobW9kZWwgPT0gc3BpdHopID8g RkxBU0hfMTI4TSA6IEZMQVNIXzEwMjRNKTsKKworICAgIGNwdV9yZWdpc3Rlcl9waHlzaWNhbF9t ZW1vcnkoMCwgc3BpdHpfcm9tLCBzcGl0el9yYW0gfCBJT19NRU1fUk9NKTsKKworICAgIC8qIFNl dHVwIHBlcmlwaGVyYWxzICovCisgICAgc3BpdHpfa2V5Ym9hcmRfcmVnaXN0ZXIoY3B1KTsKKwor ICAgIHNwaXR6X3NzcF9hdHRhY2goY3B1KTsKKworICAgIHNjcCA9IHNwaXR6X3Njb29wX2luaXQo Y3B1LCAobW9kZWwgPT0gYWtpdGEpID8gMSA6IDIpOworCisgICAgc3BpdHpfc2Nvb3BfZ3Bpb19z ZXR1cChjcHUsIHNjcCwgKG1vZGVsID09IGFraXRhKSA/IDEgOiAyKTsKKworICAgIHNwaXR6X2dw aW9fc2V0dXAoY3B1LCAobW9kZWwgPT0gYWtpdGEpID8gMSA6IDIpOworCisgICAgc3BpdHpfaTJj X3NldHVwKGNwdSk7CisKKyAgICBpZiAobW9kZWwgPT0gYWtpdGEpCisgICAgICAgIHNwaXR6X2Fr aXRhX2kyY19zZXR1cChjcHUpOworCisgICAgaWYgKG1vZGVsID09IHRlcnJpZXIpCisgICAgICAg IC8qIEEgNi4wIEdCIG1pY3JvZHJpdmUgaXMgcGVybWFuZW50bHkgc2l0dGluZyBpbiBDRiBzbG90 IDAuICAqLworICAgICAgICBzcGl0el9taWNyb2RyaXZlX2F0dGFjaChjcHUpOworICAgIGVsc2Ug aWYgKG1vZGVsICE9IGFraXRhKQorICAgICAgICAvKiBBIDQuMCBHQiBtaWNyb2RyaXZlIGlzIHBl cm1hbmVudGx5IHNpdHRpbmcgaW4gQ0Ygc2xvdCAwLiAgKi8KKyAgICAgICAgc3BpdHpfbWljcm9k cml2ZV9hdHRhY2goY3B1KTsKKworICAgIC8qIFNldHVwIGluaXRpYWwgKHJlc2V0KSBtYWNoaW5l IHN0YXRlICovCisgICAgY3B1LT5lbnYtPnJlZ3NbMTVdID0gUFhBMlhYX1JBTV9CQVNFOworCisg ICAgYXJtX2xvYWRfa2VybmVsKGNwdS0+ZW52LCByYW1fc2l6ZSwga2VybmVsX2ZpbGVuYW1lLCBr ZXJuZWxfY21kbGluZSwKKyAgICAgICAgICAgICAgICAgICAgaW5pdHJkX2ZpbGVuYW1lLCBhcm1f aWQpOworICAgIHNsX2Jvb3RwYXJhbV93cml0ZShTTF9QWEFfUEFSQU1fQkFTRSAtIFBYQTJYWF9S QU1fQkFTRSk7Cit9CisKK3N0YXRpYyB2b2lkIHNwaXR6X2luaXQoaW50IHJhbV9zaXplLCBpbnQg dmdhX3JhbV9zaXplLCBpbnQgYm9vdF9kZXZpY2UsCisgICAgICAgICAgICAgICAgRGlzcGxheVN0 YXRlICpkcywgY29uc3QgY2hhciAqKmZkX2ZpbGVuYW1lLCBpbnQgc25hcHNob3QsCisgICAgICAg ICAgICAgICAgY29uc3QgY2hhciAqa2VybmVsX2ZpbGVuYW1lLCBjb25zdCBjaGFyICprZXJuZWxf Y21kbGluZSwKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFyICppbml0cmRfZmlsZW5hbWUsIGNv bnN0IGNoYXIgKmNwdV9tb2RlbCkKK3sKKyAgICBzcGl0el9jb21tb25faW5pdChyYW1fc2l6ZSwg dmdhX3JhbV9zaXplLCBkcywga2VybmVsX2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgIGtlcm5l bF9jbWRsaW5lLCBpbml0cmRfZmlsZW5hbWUsIHNwaXR6LCAweDJjOSk7Cit9CisKK3N0YXRpYyB2 b2lkIGJvcnpvaV9pbml0KGludCByYW1fc2l6ZSwgaW50IHZnYV9yYW1fc2l6ZSwgaW50IGJvb3Rf ZGV2aWNlLAorICAgICAgICAgICAgICAgIERpc3BsYXlTdGF0ZSAqZHMsIGNvbnN0IGNoYXIgKipm ZF9maWxlbmFtZSwgaW50IHNuYXBzaG90LAorICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmtl cm5lbF9maWxlbmFtZSwgY29uc3QgY2hhciAqa2VybmVsX2NtZGxpbmUsCisgICAgICAgICAgICAg ICAgY29uc3QgY2hhciAqaW5pdHJkX2ZpbGVuYW1lLCBjb25zdCBjaGFyICpjcHVfbW9kZWwpCit7 CisgICAgc3BpdHpfY29tbW9uX2luaXQocmFtX3NpemUsIHZnYV9yYW1fc2l6ZSwgZHMsIGtlcm5l bF9maWxlbmFtZSwKKyAgICAgICAgICAgICAgICBrZXJuZWxfY21kbGluZSwgaW5pdHJkX2ZpbGVu YW1lLCBib3J6b2ksIDB4MzNmKTsKK30KKworc3RhdGljIHZvaWQgYWtpdGFfaW5pdChpbnQgcmFt X3NpemUsIGludCB2Z2FfcmFtX3NpemUsIGludCBib290X2RldmljZSwKKyAgICAgICAgICAgICAg ICBEaXNwbGF5U3RhdGUgKmRzLCBjb25zdCBjaGFyICoqZmRfZmlsZW5hbWUsIGludCBzbmFwc2hv dCwKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFyICprZXJuZWxfZmlsZW5hbWUsIGNvbnN0IGNo YXIgKmtlcm5lbF9jbWRsaW5lLAorICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmluaXRyZF9m aWxlbmFtZSwgY29uc3QgY2hhciAqY3B1X21vZGVsKQoreworICAgIHNwaXR6X2NvbW1vbl9pbml0 KHJhbV9zaXplLCB2Z2FfcmFtX3NpemUsIGRzLCBrZXJuZWxfZmlsZW5hbWUsCisgICAgICAgICAg ICAgICAga2VybmVsX2NtZGxpbmUsIGluaXRyZF9maWxlbmFtZSwgYWtpdGEsIDB4MmU4KTsKK30K Kworc3RhdGljIHZvaWQgdGVycmllcl9pbml0KGludCByYW1fc2l6ZSwgaW50IHZnYV9yYW1fc2l6 ZSwgaW50IGJvb3RfZGV2aWNlLAorICAgICAgICAgICAgICAgIERpc3BsYXlTdGF0ZSAqZHMsIGNv bnN0IGNoYXIgKipmZF9maWxlbmFtZSwgaW50IHNuYXBzaG90LAorICAgICAgICAgICAgICAgIGNv bnN0IGNoYXIgKmtlcm5lbF9maWxlbmFtZSwgY29uc3QgY2hhciAqa2VybmVsX2NtZGxpbmUsCisg ICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaW5pdHJkX2ZpbGVuYW1lLCBjb25zdCBjaGFyICpj cHVfbW9kZWwpCit7CisgICAgc3BpdHpfY29tbW9uX2luaXQocmFtX3NpemUsIHZnYV9yYW1fc2l6 ZSwgZHMsIGtlcm5lbF9maWxlbmFtZSwKKyAgICAgICAgICAgICAgICBrZXJuZWxfY21kbGluZSwg aW5pdHJkX2ZpbGVuYW1lLCB0ZXJyaWVyLCAweDMzZik7Cit9CisKK1FFTVVNYWNoaW5lIGFraXRh cGRhX21hY2hpbmUgPSB7CisgICAgImFraXRhIiwKKyAgICAiQWtpdGEgUERBIChQWEEyNzApIiwK KyAgICBha2l0YV9pbml0LAorfTsKKworUUVNVU1hY2hpbmUgc3BpdHpwZGFfbWFjaGluZSA9IHsK KyAgICAic3BpdHoiLAorICAgICJTcGl0eiBQREEgKFBYQTI3MCkiLAorICAgIHNwaXR6X2luaXQs Cit9OworCitRRU1VTWFjaGluZSBib3J6b2lwZGFfbWFjaGluZSA9IHsKKyAgICAiYm9yem9pIiwK KyAgICAiQm9yem9pIFBEQSAoUFhBMjcwKSIsCisgICAgYm9yem9pX2luaXQsCit9OworCitRRU1V TWFjaGluZSB0ZXJyaWVycGRhX21hY2hpbmUgPSB7CisgICAgInRlcnJpZXIiLAorICAgICJUZXJy aWVyIFBEQSAoUFhBMjcwKSIsCisgICAgdGVycmllcl9pbml0LAorfTsKZGlmZiAtLWdpdCBhL2tl eW1hcHMvc3BpdHogYi9rZXltYXBzL3NwaXR6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLmQ0MTM4YzQKLS0tIC9kZXYvbnVsbAorKysgYi9rZXltYXBzL3NwaXR6CkBAIC0wLDAg KzEsMjYgQEAKKyMgUmVmZXJlbmNlIGtleW1hcCBmb3IgdGhlIFNwaXR6CitpbmNsdWRlIGNvbW1v bgorc2xhc2ggMHgzMyBzaGlmdAorcXVlc3Rpb24gMHgzNCBzaGlmdAorZXhjbGFtIDB4MDIgc2hp ZnQKK3F1b3RlZGJsIDB4MDMgc2hpZnQKK251bWJlcnNpZ24gMHgwNCBzaGlmdAorZG9sbGFyIDB4 MDUgc2hpZnQKK3BlcmNlbnQgMHgwNiBzaGlmdAorYW1wZXJzYW5kIDB4MDcgc2hpZnQKK2Fwb3N0 cm9waGUgMHgwOCBzaGlmdAorcGFyZW5sZWZ0IDB4MDkgc2hpZnQKK3BhcmVucmlnaHQgMHgwYSBz aGlmdAorYXNjaWl0aWxkZSAweDBiIHNoaWZ0CithdCAweDBjIHNoaWZ0CitCYWNrU3BhY2UgMHhl CitEZWxldGUgMHhlIGFsdGdyCitUYWIgMHhmCitDYXBzX0xvY2sgMHhmIGFsdGdyCithc2NpaWNp cmN1bSAweDExIGFsdGdyCitlcXVhbCAweDEyIGFsdGdyCitwbHVzIDB4MTMgYWx0Z3IKK2JyYWNr ZXRsZWZ0IDB4MTQgYWx0Z3IKK2JyYWNrZXRyaWdodCAweDE1IGFsdGdyCitQYWdlX1VwIDB4Yzgg YWx0Z3IKK1BhZ2VfRG93biAweGNkIGFsdGdyCmRpZmYgLS1naXQgYS9xZW11LWRvYy50ZXhpIGIv cWVtdS1kb2MudGV4aQppbmRleCAxYWNkNzQ1Li45MmVjNDUyIDEwMDY0NAotLS0gYS9xZW11LWRv Yy50ZXhpCisrKyBiL3FlbXUtZG9jLnRleGkKQEAgLTgwLDYgKzgwLDcgQEAgRm9yIHN5c3RlbSBl bXVsYXRpb24sIHRoZSBmb2xsb3dpbmcgaGFyZHdhcmUgdGFyZ2V0cyBhcmUgc3VwcG9ydGVkOgog QGl0ZW0gQVJNIEludGVncmF0b3IvQ1AgKEFSTTkyNkUgb3IgMTAyNkUgcHJvY2Vzc29yKQogQGl0 ZW0gQVJNIFZlcnNhdGlsZSBiYXNlYm9hcmQgKEFSTTkyNkUpCiBAaXRlbSBBUk0gUmVhbFZpZXcg RW11bGF0aW9uIGJhc2Vib2FyZCAoQVJNOTI2RUotUykKK0BpdGVtIFNwaXR6LCBBa2l0YSwgQm9y em9pIGFuZCBUZXJyaWVyIFBEQXMgKFBYQTI3MCBwcm9jZXNzb3IpCiBAZW5kIGl0ZW1pemUKIAog Rm9yIHVzZXIgZW11bGF0aW9uLCB4ODYsIFBvd2VyUEMsIEFSTSwgTUlQUywgU3BhcmMzMi82NCBh bmQgQ29sZEZpcmUobTY4aykgQ1BVcyBhcmUgc3VwcG9ydGVkLgpAQCAtMTc2Nyw2ICsxNzY4LDM2 IEBAIFBDSSBPSENJIFVTQiBjb250cm9sbGVyCiBMU0k1M0M4OTVBIFBDSSBTQ1NJIEhvc3QgQnVz IEFkYXB0ZXIgd2l0aCBoYXJkIGRpc2sgYW5kIENELVJPTSBkZXZpY2VzCiBAZW5kIGl0ZW1pemUK IAorVGhlIFhTY2FsZS1iYXNlZCBjbGFtc2hlbGwgUERBIG1vZGVscyAoIlNwaXR6IiwgIkFraXRh IiwgIkJvcnpvaSIKK2FuZCAiVGVycmllciIpIGVtdWxhdGlvbiBpbmNsdWRlcyB0aGUgZm9sbG93 aW5nIHBlcmlwaGVyYWxzOgorCitAaXRlbWl6ZSBAbWludXMKK0BpdGVtCitJbnRlbCBQWEEyNzAg U3lzdGVtLW9uLWNoaXAgKEFSTSBWNVRFIGNvcmUpCitAaXRlbQorTkFORCBGbGFzaCBtZW1vcnkK K0BpdGVtCitJQk0vSGl0YWNoaSBEU0NNIG1pY3JvZHJpdmUgaW4gYSBQWEEgUENNQ0lBIHNsb3Qg LSBub3QgaW4gIkFraXRhIgorQGl0ZW0KK09uLWNoaXAgT0hDSSBVU0IgY29udHJvbGxlcgorQGl0 ZW0KK09uLWNoaXAgTENEIGNvbnRyb2xsZXIKK0BpdGVtCitPbi1jaGlwIFJlYWwgVGltZSBDbG9j aworQGl0ZW0KK1RJIEFEUzc4NDYgdG91Y2hzY3JlZW4gY29udHJvbGxlciBvbiBTU1AgYnVzCitA aXRlbQorTWF4aW0gTUFYMTExMSBhbmFsb2ctZGlnaXRhbCBjb252ZXJ0ZXIgb24gSUBtYXRoe14y fUMgYnVzCitAaXRlbQorR1BJTy1jb25uZWN0ZWQga2V5Ym9hcmQgY29udHJvbGxlciBhbmQgTEVE cworQGl0ZW0KK1NlY3VyZSBEaWdpdGFsIGNhcmQgY29ubnRlY3RlZCB0byBQWEEgTU1DL1NEIGhv c3QKK0BpdGVtCitUaHJlZSBvbi1jaGlwIFVBUlRzCitAaXRlbQorV004NzUwIGF1ZGlvIENPREVD IG9uIElAbWF0aHteMn1DIGFuZCBJQG1hdGh7XjJ9UyBidXNzZXMKK0BlbmQgaXRlbWl6ZQorCiBB IExpbnV4IDIuNiB0ZXN0IGltYWdlIGlzIGF2YWlsYWJsZSBvbiB0aGUgUUVNVSB3ZWIgc2l0ZS4g TW9yZQogaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlIGluIHRoZSBRRU1VIG1haWxpbmctbGlzdCBh cmNoaXZlLgogCmRpZmYgLS1naXQgYS92bC5jIGIvdmwuYwppbmRleCBhNTIzZDFhLi45NDI2MGI0 IDEwMDY0NAotLS0gYS92bC5jCisrKyBiL3ZsLmMKQEAgLTY3OTEsNiArNjc5MSwxMCBAQCB2b2lk IHJlZ2lzdGVyX21hY2hpbmVzKHZvaWQpCiAgICAgcWVtdV9yZWdpc3Rlcl9tYWNoaW5lKCZ2ZXJz YXRpbGVwYl9tYWNoaW5lKTsKICAgICBxZW11X3JlZ2lzdGVyX21hY2hpbmUoJnZlcnNhdGlsZWFi X21hY2hpbmUpOwogICAgIHFlbXVfcmVnaXN0ZXJfbWFjaGluZSgmcmVhbHZpZXdfbWFjaGluZSk7 CisgICAgcWVtdV9yZWdpc3Rlcl9tYWNoaW5lKCZha2l0YXBkYV9tYWNoaW5lKTsKKyAgICBxZW11 X3JlZ2lzdGVyX21hY2hpbmUoJnNwaXR6cGRhX21hY2hpbmUpOworICAgIHFlbXVfcmVnaXN0ZXJf bWFjaGluZSgmYm9yem9pcGRhX21hY2hpbmUpOworICAgIHFlbXVfcmVnaXN0ZXJfbWFjaGluZSgm dGVycmllcnBkYV9tYWNoaW5lKTsKICNlbGlmIGRlZmluZWQoVEFSR0VUX1NINCkKICAgICBxZW11 X3JlZ2lzdGVyX21hY2hpbmUoJnNoaXhfbWFjaGluZSk7CiAjZWxzZQpAQCAtNjgwMCw2ICs2ODA0 LDcgQEAgdm9pZCByZWdpc3Rlcl9tYWNoaW5lcyh2b2lkKQogCiAjaWZkZWYgSEFTX0FVRElPCiBz dHJ1Y3Qgc291bmRodyBzb3VuZGh3W10gPSB7CisjaWZkZWYgSEFTX0FVRElPX0NIT0lDRQogI2lm ZGVmIFRBUkdFVF9JMzg2CiAgICAgewogICAgICAgICAicGNzcGsiLApAQCAtNjg0OCw2ICs2ODUz LDcgQEAgc3RydWN0IHNvdW5kaHcgc291bmRod1tdID0gewogICAgICAgICAwLAogICAgICAgICB7 IC5pbml0X3BjaSA9IGVzMTM3MF9pbml0IH0KICAgICB9LAorI2VuZGlmCiAKICAgICB7IE5VTEws IE5VTEwsIDAsIDAsIHsgTlVMTCB9IH0KIH07CmRpZmYgLS1naXQgYS92bC5oIGIvdmwuaAppbmRl eCBhNjE5ZWU2Li42YjFlODMzIDEwMDY0NAotLS0gYS92bC5oCisrKyBiL3ZsLmgKQEAgLTEzMTks NiArMTMxOSwxMiBAQCBleHRlcm4gUUVNVU1hY2hpbmUgdmVyc2F0aWxlYWJfbWFjaGluZTsKIC8q IHJlYWx2aWV3LmMgKi8KIGV4dGVybiBRRU1VTWFjaGluZSByZWFsdmlld19tYWNoaW5lOwogCisv KiBzcGl0ei5jICovCitleHRlcm4gUUVNVU1hY2hpbmUgYWtpdGFwZGFfbWFjaGluZTsKK2V4dGVy biBRRU1VTWFjaGluZSBzcGl0enBkYV9tYWNoaW5lOworZXh0ZXJuIFFFTVVNYWNoaW5lIGJvcnpv aXBkYV9tYWNoaW5lOworZXh0ZXJuIFFFTVVNYWNoaW5lIHRlcnJpZXJwZGFfbWFjaGluZTsKKwog LyogcHMyLmMgKi8KIHZvaWQgKnBzMl9rYmRfaW5pdCh2b2lkICgqdXBkYXRlX2lycSkodm9pZCAq LCBpbnQpLCB2b2lkICp1cGRhdGVfYXJnKTsKIHZvaWQgKnBzMl9tb3VzZV9pbml0KHZvaWQgKCp1 cGRhdGVfaXJxKSh2b2lkICosIGludCksIHZvaWQgKnVwZGF0ZV9hcmcpOwotLSAKMS40LjQuMwoK ------=_Part_100114_30209739.1174081942938--