From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NLl0c-0006Zm-9j for qemu-devel@nongnu.org; Fri, 18 Dec 2009 17:09:14 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1NLl0a-0006WT-2e for qemu-devel@nongnu.org; Fri, 18 Dec 2009 17:09:13 -0500 Received: from [199.232.76.173] (port=37094 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NLl0Z-0006WB-Ru for qemu-devel@nongnu.org; Fri, 18 Dec 2009 17:09:11 -0500 Received: from are.twiddle.net ([75.149.56.221]:45000) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NLl0Z-0006un-3S for qemu-devel@nongnu.org; Fri, 18 Dec 2009 17:09:12 -0500 Message-ID: <4B2BFD85.6070702@twiddle.net> Date: Fri, 18 Dec 2009 14:09:09 -0800 From: Richard Henderson MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------060003010305060403070704" Subject: [Qemu-devel] [patch] target-alpha: squashed fpu qualifiers patch List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: laurent.desnogues@gmail.com This is a multi-part message in MIME format. --------------060003010305060403070704 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit This is a squashed version of the 3 or 4 incremental patches that I had sent out for implementing the alpha fpu instruction qualifiers. r~ --------------060003010305060403070704 Content-Type: text/plain; name="commit-fpu-qual" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="commit-fpu-qual" Y29tbWl0IDU3MjE2NDcwMmRkODM5NTVmYzg3ODNjODU4MTFlYzg2YzNmYjZlNGEKQXV0aG9y OiBSaWNoYXJkIEhlbmRlcnNvbiA8cnRoQHR3aWRkbGUubmV0PgpEYXRlOiAgIEZyaSBEZWMg MTggMTA6NTA6MzIgMjAwOSAtMDgwMAoKICAgIHRhcmdldC1hbHBoYTogSW1wbGVtZW50IGZw IGluc24gcXVhbGlmaWVycy4KICAgIAogICAgQWRkcyBhIHRoaXJkIGNvbnN0YW50IGFyZ3Vt ZW50IHRvIHRoZSBmcHUgaGVscGVycywgd2hpY2ggY29udGFpbiB0aGUKICAgIHVucGFyc2Vk IHF1YWxpZmllciBiaXRzLiAgVGhlIGhlbHBlciBmdW5jdGlvbnMgdXNlIG5ldyBiZWdpbl9m cC9lbmRfZnAKICAgIHJvdXRpbmVzIHRoYXQgZXh0cmFjdCB0aGUgcm91bmRpbmcgbW9kZSBm cm9tIHRoZSBxdWFsaWZpZXIgYml0cywgYXMKICAgIHdlbGwgYXMgcmFpc2UgZXhjZXB0aW9u cyBmb3Igbm9uLWZpbml0ZSBpbnB1dHMgYW5kIG91dHB1dHMgYWxzbyBhcwogICAgZGlyZWN0 ZWQgYnkgdGhlIHF1YWxpZmllciBiaXRzLgogICAgCiAgICBjcHVfYWxwaGFfbG9hZC9zdG9y ZV9mcGNyIG1vZGlmaWVkIHRvIGxvYWQvc3RvcmUgdGhlIG1ham9yaXR5IG9mIHRoZQogICAg Yml0cyBmcm9tIGVudi0+ZnBjci4gIFRoaXMgYmVjYXVzZSB3ZSBoYWRuJ3QgYmVlbiBzYXZp bmcgYSBmZXcgb2YgdGhlCiAgICBmcGNyIGJpdHMgaW4gdGhlIGZwX3N0YXR1cyBmaWVsZDog aW4gcGFydGljdWxhciBETlouCiAgICAKICAgIFJlLWltcGxlbWVudCBjdnR0cSB3aXRob3V0 IHNhdHVyYXRpb24gb2Ygb3ZlcmZsb3cgcmVzdWx0cywgdG8gbWF0Y2gKICAgIHRoZSBBbHBo YSBzcGVjaWZpY2F0aW9uLgogICAgCiAgICBTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIEhlbmRl cnNvbiA8cnRoQHR3aWRkbGUubmV0PgoKZGlmZiAtLWdpdCBhL3RhcmdldC1hbHBoYS9jcHUu aCBiL3RhcmdldC1hbHBoYS9jcHUuaAppbmRleCBjMGRmZjRiLi5jMWMwNDcwIDEwMDY0NAot LS0gYS90YXJnZXQtYWxwaGEvY3B1LmgKKysrIGIvdGFyZ2V0LWFscGhhL2NwdS5oCkBAIC00 MzAsOSArNDMwLDEzIEBAIGVudW0gewogfTsKIAogLyogQXJpdGhtZXRpYyBleGNlcHRpb24g Ki8KLWVudW0gewotICAgIEVYQ1BfQVJJVEhfT1ZFUkZMT1csCi19OworI2RlZmluZSBFWENf TV9JT1YJKDE8PDE2KQkJLyogSW50ZWdlciBPdmVyZmxvdyAqLworI2RlZmluZSBFWENfTV9J TkUJKDE8PDE1KQkJLyogSW5leGFjdCByZXN1bHQgKi8KKyNkZWZpbmUgRVhDX01fVU5GCSgx PDwxNCkJCS8qIFVuZGVyZmxvdyAqLworI2RlZmluZSBFWENfTV9GT1YJKDE8PDEzKQkJLyog T3ZlcmZsb3cgKi8KKyNkZWZpbmUgRVhDX01fRFpFCSgxPDwxMikJCS8qIERpdmlzaW9uIGJ5 IHplcm8gKi8KKyNkZWZpbmUgRVhDX01fSU5WCSgxPDwxMSkJCS8qIEludmFsaWQgb3BlcmF0 aW9uICovCisjZGVmaW5lIEVYQ19NX1NXQwkoMTw8MTApCQkvKiBTb2Z0d2FyZSBjb21wbGV0 aW9uICovCiAKIGVudW0gewogICAgIElSX1YwICAgPSAwLApkaWZmIC0tZ2l0IGEvdGFyZ2V0 LWFscGhhL2hlbHBlci5jIGIvdGFyZ2V0LWFscGhhL2hlbHBlci5jCmluZGV4IGJlN2QzN2Iu Ljk0ODIxYmQgMTAwNjQ0Ci0tLSBhL3RhcmdldC1hbHBoYS9oZWxwZXIuYworKysgYi90YXJn ZXQtYWxwaGEvaGVscGVyLmMKQEAgLTI3LDQxICsyNywxMyBAQAogCiB1aW50NjRfdCBjcHVf YWxwaGFfbG9hZF9mcGNyIChDUFVTdGF0ZSAqZW52KQogewotICAgIHVpbnQ2NF90IHJldCA9 IDA7Ci0gICAgaW50IGZsYWdzLCBtYXNrOwotCi0gICAgZmxhZ3MgPSBlbnYtPmZwX3N0YXR1 cy5mbG9hdF9leGNlcHRpb25fZmxhZ3M7Ci0gICAgcmV0IHw9ICh1aW50NjRfdCkgZmxhZ3Mg PDwgNTI7Ci0gICAgaWYgKGZsYWdzKQotICAgICAgICByZXQgfD0gRlBDUl9TVU07Ci0gICAg ZW52LT5pcHJbSVBSX0VYQ19TVU1dICY9IH4weDNFOwotICAgIGVudi0+aXByW0lQUl9FWENf U1VNXSB8PSBmbGFncyA8PCAxOwotCi0gICAgbWFzayA9IGVudi0+ZnBfc3RhdHVzLmZsb2F0 X2V4Y2VwdGlvbl9tYXNrOwotICAgIGlmIChtYXNrICYgZmxvYXRfZmxhZ19pbnZhbGlkKQot ICAgICAgICByZXQgfD0gRlBDUl9JTlZEOwotICAgIGlmIChtYXNrICYgZmxvYXRfZmxhZ19k aXZieXplcm8pCi0gICAgICAgIHJldCB8PSBGUENSX0RaRUQ7Ci0gICAgaWYgKG1hc2sgJiBm bG9hdF9mbGFnX292ZXJmbG93KQotICAgICAgICByZXQgfD0gRlBDUl9PVkZEOwotICAgIGlm IChtYXNrICYgZmxvYXRfZmxhZ191bmRlcmZsb3cpCi0gICAgICAgIHJldCB8PSBGUENSX1VO RkQ7Ci0gICAgaWYgKG1hc2sgJiBmbG9hdF9mbGFnX2luZXhhY3QpCi0gICAgICAgIHJldCB8 PSBGUENSX0lORUQ7Ci0KLSAgICBzd2l0Y2ggKGVudi0+ZnBfc3RhdHVzLmZsb2F0X3JvdW5k aW5nX21vZGUpIHsKLSAgICBjYXNlIGZsb2F0X3JvdW5kX25lYXJlc3RfZXZlbjoKLSAgICAg ICAgcmV0IHw9IDJVTEwgPDwgRlBDUl9EWU5fU0hJRlQ7Ci0gICAgICAgIGJyZWFrOwotICAg IGNhc2UgZmxvYXRfcm91bmRfZG93bjoKLSAgICAgICAgcmV0IHw9IDFVTEwgPDwgRlBDUl9E WU5fU0hJRlQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgZmxvYXRfcm91bmRfdXA6Ci0g ICAgICAgIHJldCB8PSAzVUxMIDw8IEZQQ1JfRFlOX1NISUZUOwotICAgICAgICBicmVhazsK LSAgICBjYXNlIGZsb2F0X3JvdW5kX3RvX3plcm86Ci0gICAgICAgIGJyZWFrOwotICAgIH0K KyAgICB1aW50NjRfdCByZXQgPSBlbnYtPmZwX3N0YXR1cy5mbG9hdF9leGNlcHRpb25fZmxh Z3M7CisKKyAgICBpZiAocmV0KQorICAgICAgcmV0ID0gRlBDUl9TVU0gfCAocmV0IDw8IDUy KTsKKworICAgIHJldCB8PSBlbnYtPmZwY3IgJiB+KEZQQ1JfU1VNIHwgRlBDUl9TVEFUVVNf TUFTSyk7CisKICAgICByZXR1cm4gcmV0OwogfQogCkBAIC02OSw2ICs0MSw4IEBAIHZvaWQg Y3B1X2FscGhhX3N0b3JlX2ZwY3IgKENQVVN0YXRlICplbnYsIHVpbnQ2NF90IHZhbCkKIHsK ICAgICBpbnQgcm91bmRfbW9kZSwgbWFzazsKIAorICAgIGVudi0+ZnBjciA9IHZhbDsKKwog ICAgIHNldF9mbG9hdF9leGNlcHRpb25fZmxhZ3MoKHZhbCA+PiA1MikgJiAweDNGLCAmZW52 LT5mcF9zdGF0dXMpOwogCiAgICAgbWFzayA9IDA7CkBAIC04Niw2ICs2MCw3IEBAIHZvaWQg Y3B1X2FscGhhX3N0b3JlX2ZwY3IgKENQVVN0YXRlICplbnYsIHVpbnQ2NF90IHZhbCkKIAog ICAgIHN3aXRjaCAoKHZhbCA+PiBGUENSX0RZTl9TSElGVCkgJiAzKSB7CiAgICAgY2FzZSAw OgorICAgIGRlZmF1bHQ6CiAgICAgICAgIHJvdW5kX21vZGUgPSBmbG9hdF9yb3VuZF90b196 ZXJvOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDE6CkBAIC0xMDAsNiArNzUsMTEgQEAg dm9pZCBjcHVfYWxwaGFfc3RvcmVfZnBjciAoQ1BVU3RhdGUgKmVudiwgdWludDY0X3QgdmFs KQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgc2V0X2Zsb2F0X3JvdW5kaW5nX21vZGUo cm91bmRfbW9kZSwgJmVudi0+ZnBfc3RhdHVzKTsKKworICAgIG1hc2sgPSAwOworICAgIGlm ICgodmFsICYgKEZQQ1JfVU5EWnxGUENSX1VORkQpKSA9PSAoRlBDUl9VTkRafEZQQ1JfVU5G RCkpCisgICAgICAgIG1hc2sgPSAxOworICAgIHNldF9mbHVzaF90b196ZXJvKG1hc2ssICZl bnYtPmZwX3N0YXR1cyk7CiB9CiAKICNpZiBkZWZpbmVkKENPTkZJR19VU0VSX09OTFkpCmRp ZmYgLS1naXQgYS90YXJnZXQtYWxwaGEvaGVscGVyLmggYi90YXJnZXQtYWxwaGEvaGVscGVy LmgKaW5kZXggYmVkZDNjMC4uMTUyMWE4NCAxMDA2NDQKLS0tIGEvdGFyZ2V0LWFscGhhL2hl bHBlci5oCisrKyBiL3RhcmdldC1hbHBoYS9oZWxwZXIuaApAQCAtNDEsMzMgKzQxLDMzIEBA IERFRl9IRUxQRVJfMShzdG9yZV9mcGNyLCB2b2lkLCBpNjQpCiAKIERFRl9IRUxQRVJfMShm X3RvX21lbW9yeSwgaTMyLCBpNjQpCiBERUZfSEVMUEVSXzEobWVtb3J5X3RvX2YsIGk2NCwg aTMyKQotREVGX0hFTFBFUl8yKGFkZGYsIGk2NCwgaTY0LCBpNjQpCi1ERUZfSEVMUEVSXzIo c3ViZiwgaTY0LCBpNjQsIGk2NCkKLURFRl9IRUxQRVJfMihtdWxmLCBpNjQsIGk2NCwgaTY0 KQotREVGX0hFTFBFUl8yKGRpdmYsIGk2NCwgaTY0LCBpNjQpCi1ERUZfSEVMUEVSXzEoc3Fy dGYsIGk2NCwgaTY0KQorREVGX0hFTFBFUl8zKGFkZGYsIGk2NCwgaTY0LCBpNjQsIGkzMikK K0RFRl9IRUxQRVJfMyhzdWJmLCBpNjQsIGk2NCwgaTY0LCBpMzIpCitERUZfSEVMUEVSXzMo bXVsZiwgaTY0LCBpNjQsIGk2NCwgaTMyKQorREVGX0hFTFBFUl8zKGRpdmYsIGk2NCwgaTY0 LCBpNjQsIGkzMikKK0RFRl9IRUxQRVJfMihzcXJ0ZiwgaTY0LCBpNjQsIGkzMikKIAogREVG X0hFTFBFUl8xKGdfdG9fbWVtb3J5LCBpNjQsIGk2NCkKIERFRl9IRUxQRVJfMShtZW1vcnlf dG9fZywgaTY0LCBpNjQpCi1ERUZfSEVMUEVSXzIoYWRkZywgaTY0LCBpNjQsIGk2NCkKLURF Rl9IRUxQRVJfMihzdWJnLCBpNjQsIGk2NCwgaTY0KQotREVGX0hFTFBFUl8yKG11bGcsIGk2 NCwgaTY0LCBpNjQpCi1ERUZfSEVMUEVSXzIoZGl2ZywgaTY0LCBpNjQsIGk2NCkKLURFRl9I RUxQRVJfMShzcXJ0ZywgaTY0LCBpNjQpCitERUZfSEVMUEVSXzMoYWRkZywgaTY0LCBpNjQs IGk2NCwgaTMyKQorREVGX0hFTFBFUl8zKHN1YmcsIGk2NCwgaTY0LCBpNjQsIGkzMikKK0RF Rl9IRUxQRVJfMyhtdWxnLCBpNjQsIGk2NCwgaTY0LCBpMzIpCitERUZfSEVMUEVSXzMoZGl2 ZywgaTY0LCBpNjQsIGk2NCwgaTMyKQorREVGX0hFTFBFUl8yKHNxcnRnLCBpNjQsIGk2NCwg aTMyKQogCiBERUZfSEVMUEVSXzEoc190b19tZW1vcnksIGkzMiwgaTY0KQogREVGX0hFTFBF Ul8xKG1lbW9yeV90b19zLCBpNjQsIGkzMikKLURFRl9IRUxQRVJfMihhZGRzLCBpNjQsIGk2 NCwgaTY0KQotREVGX0hFTFBFUl8yKHN1YnMsIGk2NCwgaTY0LCBpNjQpCi1ERUZfSEVMUEVS XzIobXVscywgaTY0LCBpNjQsIGk2NCkKLURFRl9IRUxQRVJfMihkaXZzLCBpNjQsIGk2NCwg aTY0KQotREVGX0hFTFBFUl8xKHNxcnRzLCBpNjQsIGk2NCkKLQotREVGX0hFTFBFUl8yKGFk ZHQsIGk2NCwgaTY0LCBpNjQpCi1ERUZfSEVMUEVSXzIoc3VidCwgaTY0LCBpNjQsIGk2NCkK LURFRl9IRUxQRVJfMihtdWx0LCBpNjQsIGk2NCwgaTY0KQotREVGX0hFTFBFUl8yKGRpdnQs IGk2NCwgaTY0LCBpNjQpCi1ERUZfSEVMUEVSXzEoc3FydHQsIGk2NCwgaTY0KQorREVGX0hF TFBFUl8zKGFkZHMsIGk2NCwgaTY0LCBpNjQsIGkzMikKK0RFRl9IRUxQRVJfMyhzdWJzLCBp NjQsIGk2NCwgaTY0LCBpMzIpCitERUZfSEVMUEVSXzMobXVscywgaTY0LCBpNjQsIGk2NCwg aTMyKQorREVGX0hFTFBFUl8zKGRpdnMsIGk2NCwgaTY0LCBpNjQsIGkzMikKK0RFRl9IRUxQ RVJfMihzcXJ0cywgaTY0LCBpNjQsIGkzMikKKworREVGX0hFTFBFUl8zKGFkZHQsIGk2NCwg aTY0LCBpNjQsIGkzMikKK0RFRl9IRUxQRVJfMyhzdWJ0LCBpNjQsIGk2NCwgaTY0LCBpMzIp CitERUZfSEVMUEVSXzMobXVsdCwgaTY0LCBpNjQsIGk2NCwgaTMyKQorREVGX0hFTFBFUl8z KGRpdnQsIGk2NCwgaTY0LCBpNjQsIGkzMikKK0RFRl9IRUxQRVJfMihzcXJ0dCwgaTY0LCBp NjQsIGkzMikKIAogREVGX0hFTFBFUl8yKGNtcHR1biwgaTY0LCBpNjQsIGk2NCkKIERFRl9I RUxQRVJfMihjbXB0ZXEsIGk2NCwgaTY0LCBpNjQpCkBAIC04MSwxNSArODEsMTUgQEAgREVG X0hFTFBFUl8yKGNweXMsIGk2NCwgaTY0LCBpNjQpCiBERUZfSEVMUEVSXzIoY3B5c24sIGk2 NCwgaTY0LCBpNjQpCiBERUZfSEVMUEVSXzIoY3B5c2UsIGk2NCwgaTY0LCBpNjQpCiAKLURF Rl9IRUxQRVJfMShjdnR0cywgaTY0LCBpNjQpCi1ERUZfSEVMUEVSXzEoY3Z0c3QsIGk2NCwg aTY0KQotREVGX0hFTFBFUl8xKGN2dHRxLCBpNjQsIGk2NCkKLURFRl9IRUxQRVJfMShjdnRx cywgaTY0LCBpNjQpCi1ERUZfSEVMUEVSXzEoY3Z0cXQsIGk2NCwgaTY0KQotREVGX0hFTFBF Ul8xKGN2dHFmLCBpNjQsIGk2NCkKLURFRl9IRUxQRVJfMShjdnRnZiwgaTY0LCBpNjQpCi1E RUZfSEVMUEVSXzEoY3Z0Z3EsIGk2NCwgaTY0KQotREVGX0hFTFBFUl8xKGN2dHFnLCBpNjQs IGk2NCkKK0RFRl9IRUxQRVJfMihjdnR0cywgaTY0LCBpNjQsIGkzMikKK0RFRl9IRUxQRVJf MihjdnRzdCwgaTY0LCBpNjQsIGkzMikKK0RFRl9IRUxQRVJfMihjdnR0cSwgaTY0LCBpNjQs IGkzMikKK0RFRl9IRUxQRVJfMihjdnRxcywgaTY0LCBpNjQsIGkzMikKK0RFRl9IRUxQRVJf MihjdnRxdCwgaTY0LCBpNjQsIGkzMikKK0RFRl9IRUxQRVJfMihjdnRxZiwgaTY0LCBpNjQs IGkzMikKK0RFRl9IRUxQRVJfMihjdnRnZiwgaTY0LCBpNjQsIGkzMikKK0RFRl9IRUxQRVJf MihjdnRncSwgaTY0LCBpNjQsIGkzMikKK0RFRl9IRUxQRVJfMihjdnRxZywgaTY0LCBpNjQs IGkzMikKIERFRl9IRUxQRVJfMShjdnRscSwgaTY0LCBpNjQpCiBERUZfSEVMUEVSXzEoY3Z0 cWwsIGk2NCwgaTY0KQogREVGX0hFTFBFUl8xKGN2dHFsdiwgaTY0LCBpNjQpCmRpZmYgLS1n aXQgYS90YXJnZXQtYWxwaGEvb3BfaGVscGVyLmMgYi90YXJnZXQtYWxwaGEvb3BfaGVscGVy LmMKaW5kZXggYjJhYmY2Yy4uMmQxYzNkNSAxMDA2NDQKLS0tIGEvdGFyZ2V0LWFscGhhL29w X2hlbHBlci5jCisrKyBiL3RhcmdldC1hbHBoYS9vcF9oZWxwZXIuYwpAQCAtMjQsNyArMjQs NyBAQAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAvKiBFeGNlcHRpb25zIHByb2Nl c3NpbmcgaGVscGVycyAqLwotdm9pZCBoZWxwZXJfZXhjcCAoaW50IGV4Y3AsIGludCBlcnJv cikKK3ZvaWQgUUVNVV9OT1JFVFVSTiBoZWxwZXJfZXhjcCAoaW50IGV4Y3AsIGludCBlcnJv cikKIHsKICAgICBlbnYtPmV4Y2VwdGlvbl9pbmRleCA9IGV4Y3A7CiAgICAgZW52LT5lcnJv cl9jb2RlID0gZXJyb3I7CkBAIC03OCw3ICs3OCw3IEBAIHVpbnQ2NF90IGhlbHBlcl9hZGRx diAodWludDY0X3Qgb3AxLCB1aW50NjRfdCBvcDIpCiAgICAgdWludDY0X3QgdG1wID0gb3Ax OwogICAgIG9wMSArPSBvcDI7CiAgICAgaWYgKHVubGlrZWx5KCh0bXAgXiBvcDIgXiAoLTFV TEwpKSAmICh0bXAgXiBvcDEpICYgKDFVTEwgPDwgNjMpKSkgewotICAgICAgICBoZWxwZXJf ZXhjcChFWENQX0FSSVRILCBFWENQX0FSSVRIX09WRVJGTE9XKTsKKyAgICAgICAgaGVscGVy X2V4Y3AoRVhDUF9BUklUSCwgRVhDX01fSU9WKTsKICAgICB9CiAgICAgcmV0dXJuIG9wMTsK IH0KQEAgLTg4LDcgKzg4LDcgQEAgdWludDY0X3QgaGVscGVyX2FkZGx2ICh1aW50NjRfdCBv cDEsIHVpbnQ2NF90IG9wMikKICAgICB1aW50NjRfdCB0bXAgPSBvcDE7CiAgICAgb3AxID0g KHVpbnQzMl90KShvcDEgKyBvcDIpOwogICAgIGlmICh1bmxpa2VseSgodG1wIF4gb3AyIF4g KC0xVUwpKSAmICh0bXAgXiBvcDEpICYgKDFVTCA8PCAzMSkpKSB7Ci0gICAgICAgIGhlbHBl cl9leGNwKEVYQ1BfQVJJVEgsIEVYQ1BfQVJJVEhfT1ZFUkZMT1cpOworICAgICAgICBoZWxw ZXJfZXhjcChFWENQX0FSSVRILCBFWENfTV9JT1YpOwogICAgIH0KICAgICByZXR1cm4gb3Ax OwogfQpAQCAtOTgsNyArOTgsNyBAQCB1aW50NjRfdCBoZWxwZXJfc3VicXYgKHVpbnQ2NF90 IG9wMSwgdWludDY0X3Qgb3AyKQogICAgIHVpbnQ2NF90IHJlczsKICAgICByZXMgPSBvcDEg LSBvcDI7CiAgICAgaWYgKHVubGlrZWx5KChvcDEgXiBvcDIpICYgKHJlcyBeIG9wMSkgJiAo MVVMTCA8PCA2MykpKSB7Ci0gICAgICAgIGhlbHBlcl9leGNwKEVYQ1BfQVJJVEgsIEVYQ1Bf QVJJVEhfT1ZFUkZMT1cpOworICAgICAgICBoZWxwZXJfZXhjcChFWENQX0FSSVRILCBFWENf TV9JT1YpOwogICAgIH0KICAgICByZXR1cm4gcmVzOwogfQpAQCAtMTA4LDcgKzEwOCw3IEBA IHVpbnQ2NF90IGhlbHBlcl9zdWJsdiAodWludDY0X3Qgb3AxLCB1aW50NjRfdCBvcDIpCiAg ICAgdWludDMyX3QgcmVzOwogICAgIHJlcyA9IG9wMSAtIG9wMjsKICAgICBpZiAodW5saWtl bHkoKG9wMSBeIG9wMikgJiAocmVzIF4gb3AxKSAmICgxVUwgPDwgMzEpKSkgewotICAgICAg ICBoZWxwZXJfZXhjcChFWENQX0FSSVRILCBFWENQX0FSSVRIX09WRVJGTE9XKTsKKyAgICAg ICAgaGVscGVyX2V4Y3AoRVhDUF9BUklUSCwgRVhDX01fSU9WKTsKICAgICB9CiAgICAgcmV0 dXJuIHJlczsKIH0KQEAgLTExOCw3ICsxMTgsNyBAQCB1aW50NjRfdCBoZWxwZXJfbXVsbHYg KHVpbnQ2NF90IG9wMSwgdWludDY0X3Qgb3AyKQogICAgIGludDY0X3QgcmVzID0gKGludDY0 X3Qpb3AxICogKGludDY0X3Qpb3AyOwogCiAgICAgaWYgKHVubGlrZWx5KChpbnQzMl90KXJl cyAhPSByZXMpKSB7Ci0gICAgICAgIGhlbHBlcl9leGNwKEVYQ1BfQVJJVEgsIEVYQ1BfQVJJ VEhfT1ZFUkZMT1cpOworICAgICAgICBoZWxwZXJfZXhjcChFWENQX0FSSVRILCBFWENfTV9J T1YpOwogICAgIH0KICAgICByZXR1cm4gKGludDY0X3QpKChpbnQzMl90KXJlcyk7CiB9CkBA IC0xMzAsNyArMTMwLDcgQEAgdWludDY0X3QgaGVscGVyX211bHF2ICh1aW50NjRfdCBvcDEs IHVpbnQ2NF90IG9wMikKICAgICBtdWxzNjQoJnRsLCAmdGgsIG9wMSwgb3AyKTsKICAgICAv KiBJZiB0aCAhPSAwICYmIHRoICE9IC0xLCB0aGVuIHdlIGhhZCBhbiBvdmVyZmxvdyAqLwog ICAgIGlmICh1bmxpa2VseSgodGggKyAxKSA+IDEpKSB7Ci0gICAgICAgIGhlbHBlcl9leGNw KEVYQ1BfQVJJVEgsIEVYQ1BfQVJJVEhfT1ZFUkZMT1cpOworICAgICAgICBoZWxwZXJfZXhj cChFWENQX0FSSVRILCBFWENfTV9JT1YpOwogICAgIH0KICAgICByZXR1cm4gdGw7CiB9CkBA IC0zNzAsOCArMzcwLDE3NSBAQCB1aW50NjRfdCBoZWxwZXJfdW5wa2J3ICh1aW50NjRfdCBv cDEpCiAKIC8qIEZsb2F0aW5nIHBvaW50IGhlbHBlcnMgKi8KIAorLyogPz8/IE5vdCBpbXBs ZW1lbnRlZCBpcyBzZXR0aW5nIEVYQ19NQVNLLCBjb250YWluaW5nIGEgYml0bWFzayBvZgor ICAgZGVzdGluYXRpb24gcmVnaXN0ZXJzIG9mIGluc3RydWN0aW9ucyB0aGF0IGhhdmUgY2F1 c2VkIGFyaXRobWV0aWMKKyAgIHRyYXBzLiAgTm90IG5lZWRlZCBmb3IgdXNlcnNwYWNlIGVt dWxhdGlvbiwgb3IgZm9yIGNvbXBsZXRlIAorICAgZW11bGF0aW9uIG9mIHRoZSBlbnRpcmUg ZnB1IHN0YWNrIHdpdGhpbiBxZW11LiAgQnV0IHdlIHdvdWxkIG5lZWQKKyAgIGl0IHRvIGlu dm9rZSBhIGd1ZXN0IGtlcm5lbCdzIGVudEFyaXRoIHRyYXAgaGFuZGxlciBwcm9wZXJseS4K KyAgIAorICAgSXQgd291bGQgYmUgcG9zc2libGUgdG8gZW5jb2RlIHRoZSBGUCBkZXN0aW5h dGlvbiByZWdpc3RlciBpbiB0aGUKKyAgIFFVQUwgcGFyYW1ldGVyIGZvciB0aGUgRlBVIGhl bHBlcnMgYmVsb3c7IGFkZGl0aW9uYWwgY2hhbmdlcyB3b3VsZAorICAgYmUgcmVxdWlyZWQg Zm9yIEFERC9WIGV0IGFsIGFib3ZlLiAgKi8KKworI2RlZmluZSBRVUFMX1JNX04JMHgwODAJ LyogUm91bmQgbW9kZSBuZWFyZXN0IGV2ZW4gKi8KKyNkZWZpbmUgUVVBTF9STV9DCTB4MDAw CS8qIFJvdW5kIG1vZGUgY2hvcHBlZCAqLworI2RlZmluZSBRVUFMX1JNX00JMHgwNDAJLyog Um91bmQgbW9kZSBtaW51cyBpbmZpbml0eSAqLworI2RlZmluZSBRVUFMX1JNX0QJMHgwYzAJ LyogUm91bmQgbW9kZSBkeW5hbWljICovCisjZGVmaW5lIFFVQUxfUk1fTUFTSwkweDBjMAor CisjZGVmaW5lIFFVQUxfVQkJMHgxMDAJLyogVW5kZXJmbG93IGVuYWJsZSAoZnAgb3V0cHV0 KSAqLworI2RlZmluZSBRVUFMX1YJCTB4MTAwCS8qIE92ZXJmbG93IGVuYWJsZSAoaW50IG91 dHB1dCkgKi8KKyNkZWZpbmUgUVVBTF9TCQkweDQwMAkvKiBTb2Z0d2FyZSBjb21wbGV0aW9u IGVuYWJsZSAqLworI2RlZmluZSBRVUFMX0kJCTB4MjAwCS8qIEluZXhhY3QgZGV0ZWN0aW9u IGVuYWJsZSAqLworCisvKiBJZiB0aGUgZmxvYXRpbmctcG9pbnQgcXVhbGlmaWVycyBzcGVj aWZpZWQgYSByb3VuZGluZyBtb2RlLAorICAgc2V0IHRoYXQgcm91bmRpbmcgbW9kZSBhbmQg cmVtZW1iZXIgdGhlIG9yaWdpbmFsIG1vZGUgZm9yCisgICByZXNldHRpbmcgYXQgdGhlIGVu ZCBvZiB0aGUgaW5zdHJ1Y3Rpb24uICAqLworc3RhdGljIGlubGluZSB1aW50MzJfdCBiZWdp bl9mcF9yb3VuZG1vZGUodWludDMyX3QgcXVhbCkKK3sKKyAgICB1aW50MzJfdCBybSA9IEZQ X1NUQVRVUy5mbG9hdF9yb3VuZGluZ19tb2RlLCBvbGRfcm0gPSBybTsKKworICAgIHN3aXRj aCAocXVhbCAmIFFVQUxfUk1fTUFTSykgeworICAgIGRlZmF1bHQ6CisgICAgY2FzZSBRVUFM X1JNX046CisgICAgICAgIHJtID0gZmxvYXRfcm91bmRfbmVhcmVzdF9ldmVuOworICAgICAg ICBicmVhazsKKyAgICBjYXNlIFFVQUxfUk1fQzoKKyAgICAgICAgcm0gPSBmbG9hdF9yb3Vu ZF90b196ZXJvOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFFVQUxfUk1fTToKKyAgICAg ICAgcm0gPSBmbG9hdF9yb3VuZF9kb3duOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFFV QUxfUk1fRDoKKyAgICAgICAgcmV0dXJuIG9sZF9ybTsKKyAgICB9CisgICAgaWYgKG9sZF9y bSAhPSBybSkKKyAgICAgICAgc2V0X2Zsb2F0X3JvdW5kaW5nX21vZGUocm0sICZGUF9TVEFU VVMpOworICAgIHJldHVybiBvbGRfcm07Cit9CisKKy8qIFplcm8gdGhlIGV4Y2VwdGlvbiBm bGFncyBzbyB0aGF0IHdlIGNhbiBkZXRlcm1pbmUgaWYgdGhlIGN1cnJlbnQKKyAgIGluc3Ry dWN0aW9uIHJhaXNlcyBhbnkgZXhjZXB0aW9ucy4gIFNhdmUgdGhlIG9sZCBhY3J1ZWQgZXhj ZXB0aW9uCisgICBzdGF0dXMgc28gdGhhdCB3ZSBjYW4gcmVzdG9yZSB0aGVtIGF0IHRoZSBl bmQgb2YgdGhlIGluc24uICAqLworc3RhdGljIGlubGluZSB1aW50MzJfdCBiZWdpbl9mcF9l eGNlcHRpb24odm9pZCkKK3sKKyAgICB1aW50MzJfdCBvbGRfZXhjID0gKHVpbnQzMl90KUZQ X1NUQVRVUy5mbG9hdF9leGNlcHRpb25fZmxhZ3MgPDwgODsKKyAgICBzZXRfZmxvYXRfZXhj ZXB0aW9uX2ZsYWdzKDAsICZGUF9TVEFUVVMpOworICAgIHJldHVybiBvbGRfZXhjOworfQor CitzdGF0aWMgaW5saW5lIHVpbnQzMl90IGJlZ2luX2ZwX2ZsdXNoX3RvX3plcm8odWludDMy X3QgcXVhbHMpCit7CisgICAgLyogSWYgdW5kZXJmbG93IGRldGVjdGlvbiBpcyBkaXNhYmxl ZCwgc2lsZW50bHkgZmx1c2ggdG8gemVyby4KKyAgICAgICBOb3RlIHRoYXQgZmx1c2gtdG8t emVybyBtb2RlIG1heSBhbHJlYWR5IGJlIGVuYWJsZWQgdmlhIHRoZSBGUENSLiAgKi8KKyAg ICBpZiAoKHF1YWxzICYgUVVBTF9VKSA9PSAwICYmICFGUF9TVEFUVVMuZmx1c2hfdG9femVy bykgeworICAgICAgICBzZXRfZmx1c2hfdG9femVybygxLCAmRlBfU1RBVFVTKTsKKyAgICAg ICAgcmV0dXJuIDB4MTAwMDA7CisgICAgfQorICAgIHJldHVybiAwOworfQorCisvKiBCZWdp biBwcm9jZXNzaW5nIGFuIGZwIG9wZXJhdGlvbi4gIFJldHVybiBhIHRva2VuIHRoYXQgc2hv dWxkIGJlIHBhc3NlZAorICAgd2hlbiBjb21wbGV0aW5nIHRoZSBmcCBvcGVyYXRpb24uICAq Lworc3RhdGljIHVpbnQzMl90IGJlZ2luX2ZwKHVpbnQzMl90IHF1YWxzKQoreworICAgIHVp bnQzMl90IHJldCA9IDA7CisKKyAgICByZXQgfD0gYmVnaW5fZnBfcm91bmRtb2RlKHF1YWxz KTsKKyAgICByZXQgfD0gYmVnaW5fZnBfZmx1c2hfdG9femVybyhxdWFscyk7CisgICAgcmV0 IHw9IGJlZ2luX2ZwX2V4Y2VwdGlvbigpOworCisgICAgcmV0dXJuIHJldDsKK30KKworLyog RW5kIHByb2Nlc3NpbmcgYW4gZnAgb3BlcmF0aW9uLiAgKi8KKworc3RhdGljIGlubGluZSB2 b2lkIGVuZF9mcF9yb3VuZG1vZGUodWludDMyX3Qgb3JpZykKK3sKKyAgICB1aW50MzJfdCBy bSA9IEZQX1NUQVRVUy5mbG9hdF9yb3VuZGluZ19tb2RlLCBvbGRfcm0gPSBvcmlnICYgMHhm ZjsKKyAgICBpZiAodW5saWtlbHkocm0gIT0gb2xkX3JtKSkKKyAgICAgICAgc2V0X2Zsb2F0 X3JvdW5kaW5nX21vZGUob2xkX3JtLCAmRlBfU1RBVFVTKTsKK30KKworc3RhdGljIGlubGlu ZSB2b2lkIGVuZF9mcF9mbHVzaF90b196ZXJvKHVpbnQzMl90IG9yaWcpCit7CisgICAgaWYg KG9yaWcgJiAweDEwMDAwKQorICAgICAgICBzZXRfZmx1c2hfdG9femVybygwLCAmRlBfU1RB VFVTKTsKK30KKworc3RhdGljIHZvaWQgZW5kX2ZwX2V4Y2VwdGlvbih1aW50MzJfdCBxdWFs cywgdWludDMyX3Qgb3JpZykKK3sKKyAgICB1aW50OF90IGV4YyA9IEZQX1NUQVRVUy5mbG9h dF9leGNlcHRpb25fZmxhZ3M7CisKKyAgICAvKiBJZiBpbmV4YWN0IGRldGVjdGlvbiBpcyBk aXNhYmxlZCwgc2lsZW50bHkgY2xlYXIgaXQuICAqLworICAgIGlmICgocXVhbHMgJiBRVUFM X0kpID09IDApCisgICAgICAgIGV4YyAmPSB+ZmxvYXRfZmxhZ19pbmV4YWN0OworCisgICAg b3JpZyA9IChvcmlnID4+IDgpICYgMHhmZjsKKyAgICBzZXRfZmxvYXRfZXhjZXB0aW9uX2Zs YWdzKGV4YyB8IG9yaWcsICZGUF9TVEFUVVMpOworCisgICAgLyogUmFpc2UgYW4gZXhjZXB0 aW9uIGFzIHJlcXVpcmVkLiAgKi8KKyAgICBpZiAodW5saWtlbHkoZXhjKSkgeworICAgICAg ICBpZiAocXVhbHMgJiBRVUFMX1MpCisgICAgICAgICAgICBleGMgJj0gfkZQX1NUQVRVUy5m bG9hdF9leGNlcHRpb25fbWFzazsKKyAgICAgICAgaWYgKGV4YykgeworICAgICAgICAgICAg dWludDMyX3QgaHdfZXhjID0gMDsKKworICAgICAgICAgICAgaWYgKGV4YyAmIGZsb2F0X2Zs YWdfaW52YWxpZCkKKyAgICAgICAgICAgICAgICBod19leGMgfD0gRVhDX01fSU5WOworICAg ICAgICAgICAgaWYgKGV4YyAmIGZsb2F0X2ZsYWdfZGl2Ynl6ZXJvKQorICAgICAgICAgICAg ICAgIGh3X2V4YyB8PSBFWENfTV9EWkU7CisgICAgICAgICAgICBpZiAoZXhjICYgZmxvYXRf ZmxhZ19vdmVyZmxvdykKKyAgICAgICAgICAgICAgICBod19leGMgfD0gRVhDX01fRk9WOwor ICAgICAgICAgICAgaWYgKGV4YyAmIGZsb2F0X2ZsYWdfdW5kZXJmbG93KQorICAgICAgICAg ICAgICAgIGh3X2V4YyB8PSBFWENfTV9VTkY7CisgICAgICAgICAgICBpZiAoZXhjICYgZmxv YXRfZmxhZ19pbmV4YWN0KQorICAgICAgICAgICAgICAgIGh3X2V4YyB8PSBFWENfTV9JTkU7 CisKKyAgICAgICAgICAgIGhlbHBlcl9leGNwKEVYQ1BfQVJJVEgsIGh3X2V4Yyk7CisgICAg ICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGVuZF9mcCh1aW50MzJfdCBxdWFscywg dWludDMyX3Qgb3JpZykKK3sKKyAgICBlbmRfZnBfcm91bmRtb2RlKG9yaWcpOworICAgIGVu ZF9mcF9mbHVzaF90b196ZXJvKG9yaWcpOworICAgIGVuZF9mcF9leGNlcHRpb24ocXVhbHMs IG9yaWcpOworfQorCitzdGF0aWMgdWludDY0X3QgcmVtYXBfaWVlZV9pbnB1dCh1aW50MzJf dCBxdWFscywgdWludDY0X3QgYSkKK3sKKyAgICB1aW50NjRfdCBmcmFjOworICAgIHVpbnQz Ml90IGV4cDsKKworICAgIGV4cCA9ICh1aW50MzJfdCkoYSA+PiA1MikgJiAweDdmZjsKKyAg ICBmcmFjID0gYSAmIDB4ZmZmZmZmZmZmZmZmZnVsbDsKKworICAgIGlmIChleHAgPT0gMCkg eworICAgICAgICBpZiAoZnJhYyAhPSAwKSB7CisgICAgICAgICAgICAvKiBJZiBETlogaXMg c2V0LCBmbHVzaCBkZW5vcm1hbHMgdG8gemVybyBvbiBpbnB1dC4gICovCisgICAgICAgICAg ICBpZiAoZW52LT5mcGNyICYgRlBDUl9ETlopCisgICAgICAgICAgICAgICAgYSA9IGEgJiAo MXVsbCA8PCA2Myk7CisgICAgICAgICAgICAvKiBJZiBzb2Z0d2FyZSBjb21wbGV0aW9uIG5v dCBlbmFibGVkLCB0cmFwLiAgKi8KKyAgICAgICAgICAgIGVsc2UgaWYgKChxdWFscyAmIFFV QUxfUykgPT0gMCkKKyAgICAgICAgICAgICAgICBoZWxwZXJfZXhjcChFWENQX0FSSVRILCBF WENfTV9VTkYpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChleHAgPT0gMHg3ZmYpIHsK KyAgICAgICAgLyogSW5maW5pdHkgb3IgTmFOLiAgSWYgc29mdHdhcmUgY29tcGxldGlvbiBp cyBub3QgZW5hYmxlZCwgdHJhcC4KKyAgICAgICAgICAgSWYgL3MgaXMgZW5hYmxlZCwgd2Un bGwgcHJvcGVybHkgc2lnbmFsIGZvciBTTmFOIG9uIG91dHB1dC4gICovCisgICAgICAgIC8q ID8/PyBJJ20gbm90IHN1cmUgdGhlc2UgZXhjZXB0aW9uIGJpdCBmbGFncyBhcmUgY29ycmVj dC4gIEkgZG8KKyAgICAgICAgICAga25vdyB0aGF0IHRoZSBMaW51eCBrZXJuZWwsIGF0IGxl YXN0LCBkb2Vzbid0IHJlbHkgb24gdGhlbSBhbmQKKyAgICAgICAgICAganVzdCBlbXVsYXRl cyB0aGUgaW5zbiB0byBmaWd1cmUgb3V0IHdoYXQgZXhjZXB0aW9uIHRvIHVzZS4gICovCisg ICAgICAgIGlmICgocXVhbHMgJiBRVUFMX1MpID09IDApCisgICAgICAgICAgICBoZWxwZXJf ZXhjcChFWENQX0FSSVRILCBmcmFjID8gRVhDX01fSU5WIDogRVhDX01fRk9WKTsKKyAgICB9 CisKKyAgICByZXR1cm4gYTsKK30KKwogLyogRiBmbG9hdGluZyAoVkFYKSAqLwotc3RhdGlj IGlubGluZSB1aW50NjRfdCBmbG9hdDMyX3RvX2YoZmxvYXQzMiBmYSkKK3N0YXRpYyB1aW50 NjRfdCBmbG9hdDMyX3RvX2YoZmxvYXQzMiBmYSkKIHsKICAgICB1aW50NjRfdCByLCBleHAs IG1hbnQsIHNpZzsKICAgICBDUFVfRmxvYXRVIGE7CkBAIC00MDQsNyArNTcxLDcgQEAgc3Rh dGljIGlubGluZSB1aW50NjRfdCBmbG9hdDMyX3RvX2YoZmxvYXQzMiBmYSkKICAgICByZXR1 cm4gcjsKIH0KIAotc3RhdGljIGlubGluZSBmbG9hdDMyIGZfdG9fZmxvYXQzMih1aW50NjRf dCBhKQorc3RhdGljIGZsb2F0MzIgZl90b19mbG9hdDMyKHVpbnQ2NF90IGEpCiB7CiAgICAg dWludDMyX3QgZXhwLCBtYW50X3NpZzsKICAgICBDUFVfRmxvYXRVIHI7CkBAIC00NDcsNTgg KzYxNCw4MyBAQCB1aW50NjRfdCBoZWxwZXJfbWVtb3J5X3RvX2YgKHVpbnQzMl90IGEpCiAg ICAgcmV0dXJuIHI7CiB9CiAKLXVpbnQ2NF90IGhlbHBlcl9hZGRmICh1aW50NjRfdCBhLCB1 aW50NjRfdCBiKQordWludDY0X3QgaGVscGVyX2FkZGYgKHVpbnQ2NF90IGEsIHVpbnQ2NF90 IGIsIHVpbnQzMl90IHF1YWxzKQogewogICAgIGZsb2F0MzIgZmEsIGZiLCBmcjsKKyAgICB1 aW50MzJfdCB0b2tlbjsKIAogICAgIGZhID0gZl90b19mbG9hdDMyKGEpOwogICAgIGZiID0g Zl90b19mbG9hdDMyKGIpOworCisgICAgdG9rZW4gPSBiZWdpbl9mcChxdWFscyk7CiAgICAg ZnIgPSBmbG9hdDMyX2FkZChmYSwgZmIsICZGUF9TVEFUVVMpOworICAgIGVuZF9mcChxdWFs cywgdG9rZW4pOworCiAgICAgcmV0dXJuIGZsb2F0MzJfdG9fZihmcik7CiB9CiAKLXVpbnQ2 NF90IGhlbHBlcl9zdWJmICh1aW50NjRfdCBhLCB1aW50NjRfdCBiKQordWludDY0X3QgaGVs cGVyX3N1YmYgKHVpbnQ2NF90IGEsIHVpbnQ2NF90IGIsIHVpbnQzMl90IHF1YWxzKQogewog ICAgIGZsb2F0MzIgZmEsIGZiLCBmcjsKKyAgICB1aW50MzJfdCB0b2tlbjsKIAogICAgIGZh ID0gZl90b19mbG9hdDMyKGEpOwogICAgIGZiID0gZl90b19mbG9hdDMyKGIpOworCisgICAg dG9rZW4gPSBiZWdpbl9mcChxdWFscyk7CiAgICAgZnIgPSBmbG9hdDMyX3N1YihmYSwgZmIs ICZGUF9TVEFUVVMpOworICAgIGVuZF9mcChxdWFscywgdG9rZW4pOworCiAgICAgcmV0dXJu IGZsb2F0MzJfdG9fZihmcik7CiB9CiAKLXVpbnQ2NF90IGhlbHBlcl9tdWxmICh1aW50NjRf dCBhLCB1aW50NjRfdCBiKQordWludDY0X3QgaGVscGVyX211bGYgKHVpbnQ2NF90IGEsIHVp bnQ2NF90IGIsIHVpbnQzMl90IHF1YWxzKQogewogICAgIGZsb2F0MzIgZmEsIGZiLCBmcjsK KyAgICB1aW50MzJfdCB0b2tlbjsKIAogICAgIGZhID0gZl90b19mbG9hdDMyKGEpOwogICAg IGZiID0gZl90b19mbG9hdDMyKGIpOworCisgICAgdG9rZW4gPSBiZWdpbl9mcChxdWFscyk7 CiAgICAgZnIgPSBmbG9hdDMyX211bChmYSwgZmIsICZGUF9TVEFUVVMpOworICAgIGVuZF9m cChxdWFscywgdG9rZW4pOworCiAgICAgcmV0dXJuIGZsb2F0MzJfdG9fZihmcik7CiB9CiAK LXVpbnQ2NF90IGhlbHBlcl9kaXZmICh1aW50NjRfdCBhLCB1aW50NjRfdCBiKQordWludDY0 X3QgaGVscGVyX2RpdmYgKHVpbnQ2NF90IGEsIHVpbnQ2NF90IGIsIHVpbnQzMl90IHF1YWxz KQogewogICAgIGZsb2F0MzIgZmEsIGZiLCBmcjsKKyAgICB1aW50MzJfdCB0b2tlbjsKIAog ICAgIGZhID0gZl90b19mbG9hdDMyKGEpOwogICAgIGZiID0gZl90b19mbG9hdDMyKGIpOwor CisgICAgdG9rZW4gPSBiZWdpbl9mcChxdWFscyk7CiAgICAgZnIgPSBmbG9hdDMyX2Rpdihm YSwgZmIsICZGUF9TVEFUVVMpOworICAgIGVuZF9mcChxdWFscywgdG9rZW4pOworCiAgICAg cmV0dXJuIGZsb2F0MzJfdG9fZihmcik7CiB9CiAKLXVpbnQ2NF90IGhlbHBlcl9zcXJ0ZiAo dWludDY0X3QgdCkKK3VpbnQ2NF90IGhlbHBlcl9zcXJ0ZiAodWludDY0X3QgdCwgdWludDMy X3QgcXVhbHMpCiB7CiAgICAgZmxvYXQzMiBmdCwgZnI7CisgICAgdWludDMyX3QgdG9rZW47 CiAKICAgICBmdCA9IGZfdG9fZmxvYXQzMih0KTsKKworICAgIHRva2VuID0gYmVnaW5fZnAo cXVhbHMpOwogICAgIGZyID0gZmxvYXQzMl9zcXJ0KGZ0LCAmRlBfU1RBVFVTKTsKKyAgICBl bmRfZnAocXVhbHMsIHRva2VuKTsKKwogICAgIHJldHVybiBmbG9hdDMyX3RvX2YoZnIpOwog fQogCiAKIC8qIEcgZmxvYXRpbmcgKFZBWCkgKi8KLXN0YXRpYyBpbmxpbmUgdWludDY0X3Qg ZmxvYXQ2NF90b19nKGZsb2F0NjQgZmEpCitzdGF0aWMgdWludDY0X3QgZmxvYXQ2NF90b19n KGZsb2F0NjQgZmEpCiB7CiAgICAgdWludDY0X3QgciwgZXhwLCBtYW50LCBzaWc7CiAgICAg Q1BVX0RvdWJsZVUgYTsKQEAgLTUzMSw3ICs3MjMsNyBAQCBzdGF0aWMgaW5saW5lIHVpbnQ2 NF90IGZsb2F0NjRfdG9fZyhmbG9hdDY0IGZhKQogICAgIHJldHVybiByOwogfQogCi1zdGF0 aWMgaW5saW5lIGZsb2F0NjQgZ190b19mbG9hdDY0KHVpbnQ2NF90IGEpCitzdGF0aWMgZmxv YXQ2NCBnX3RvX2Zsb2F0NjQodWludDY0X3QgYSkKIHsKICAgICB1aW50NjRfdCBleHAsIG1h bnRfc2lnOwogICAgIENQVV9Eb3VibGVVIHI7CkBAIC01NzQsNTIgKzc2Niw3NyBAQCB1aW50 NjRfdCBoZWxwZXJfbWVtb3J5X3RvX2cgKHVpbnQ2NF90IGEpCiAgICAgcmV0dXJuIHI7CiB9 CiAKLXVpbnQ2NF90IGhlbHBlcl9hZGRnICh1aW50NjRfdCBhLCB1aW50NjRfdCBiKQordWlu dDY0X3QgaGVscGVyX2FkZGcgKHVpbnQ2NF90IGEsIHVpbnQ2NF90IGIsIHVpbnQzMl90IHF1 YWxzKQogewogICAgIGZsb2F0NjQgZmEsIGZiLCBmcjsKKyAgICB1aW50MzJfdCB0b2tlbjsK IAogICAgIGZhID0gZ190b19mbG9hdDY0KGEpOwogICAgIGZiID0gZ190b19mbG9hdDY0KGIp OworCisgICAgdG9rZW4gPSBiZWdpbl9mcChxdWFscyk7CiAgICAgZnIgPSBmbG9hdDY0X2Fk ZChmYSwgZmIsICZGUF9TVEFUVVMpOworICAgIGVuZF9mcChxdWFscywgdG9rZW4pOworCiAg ICAgcmV0dXJuIGZsb2F0NjRfdG9fZyhmcik7CiB9CiAKLXVpbnQ2NF90IGhlbHBlcl9zdWJn ICh1aW50NjRfdCBhLCB1aW50NjRfdCBiKQordWludDY0X3QgaGVscGVyX3N1YmcgKHVpbnQ2 NF90IGEsIHVpbnQ2NF90IGIsIHVpbnQzMl90IHF1YWxzKQogewogICAgIGZsb2F0NjQgZmEs IGZiLCBmcjsKKyAgICB1aW50MzJfdCB0b2tlbjsKIAogICAgIGZhID0gZ190b19mbG9hdDY0 KGEpOwogICAgIGZiID0gZ190b19mbG9hdDY0KGIpOworCisgICAgdG9rZW4gPSBiZWdpbl9m cChxdWFscyk7CiAgICAgZnIgPSBmbG9hdDY0X3N1YihmYSwgZmIsICZGUF9TVEFUVVMpOwor ICAgIGVuZF9mcChxdWFscywgdG9rZW4pOworCiAgICAgcmV0dXJuIGZsb2F0NjRfdG9fZyhm cik7CiB9CiAKLXVpbnQ2NF90IGhlbHBlcl9tdWxnICh1aW50NjRfdCBhLCB1aW50NjRfdCBi KQordWludDY0X3QgaGVscGVyX211bGcgKHVpbnQ2NF90IGEsIHVpbnQ2NF90IGIsIHVpbnQz Ml90IHF1YWxzKQogewogICAgIGZsb2F0NjQgZmEsIGZiLCBmcjsKLQorICAgIHVpbnQzMl90 IHRva2VuOworICAgIAogICAgIGZhID0gZ190b19mbG9hdDY0KGEpOwogICAgIGZiID0gZ190 b19mbG9hdDY0KGIpOworCisgICAgdG9rZW4gPSBiZWdpbl9mcChxdWFscyk7CiAgICAgZnIg PSBmbG9hdDY0X211bChmYSwgZmIsICZGUF9TVEFUVVMpOworICAgIGVuZF9mcChxdWFscywg dG9rZW4pOworCiAgICAgcmV0dXJuIGZsb2F0NjRfdG9fZyhmcik7CiB9CiAKLXVpbnQ2NF90 IGhlbHBlcl9kaXZnICh1aW50NjRfdCBhLCB1aW50NjRfdCBiKQordWludDY0X3QgaGVscGVy X2RpdmcgKHVpbnQ2NF90IGEsIHVpbnQ2NF90IGIsIHVpbnQzMl90IHF1YWxzKQogewogICAg IGZsb2F0NjQgZmEsIGZiLCBmcjsKKyAgICB1aW50MzJfdCB0b2tlbjsKIAogICAgIGZhID0g Z190b19mbG9hdDY0KGEpOwogICAgIGZiID0gZ190b19mbG9hdDY0KGIpOworCisgICAgdG9r ZW4gPSBiZWdpbl9mcChxdWFscyk7CiAgICAgZnIgPSBmbG9hdDY0X2RpdihmYSwgZmIsICZG UF9TVEFUVVMpOworICAgIGVuZF9mcChxdWFscywgdG9rZW4pOworCiAgICAgcmV0dXJuIGZs b2F0NjRfdG9fZyhmcik7CiB9CiAKLXVpbnQ2NF90IGhlbHBlcl9zcXJ0ZyAodWludDY0X3Qg YSkKK3VpbnQ2NF90IGhlbHBlcl9zcXJ0ZyAodWludDY0X3QgYSwgdWludDMyX3QgcXVhbHMp CiB7CiAgICAgZmxvYXQ2NCBmYSwgZnI7CisgICAgdWludDMyX3QgdG9rZW47CiAKICAgICBm YSA9IGdfdG9fZmxvYXQ2NChhKTsKKworICAgIHRva2VuID0gYmVnaW5fZnAocXVhbHMpOwog ICAgIGZyID0gZmxvYXQ2NF9zcXJ0KGZhLCAmRlBfU1RBVFVTKTsKKyAgICBlbmRfZnAocXVh bHMsIHRva2VuKTsKKwogICAgIHJldHVybiBmbG9hdDY0X3RvX2coZnIpOwogfQogCkBAIC02 MjcsNyArODQ0LDcgQEAgdWludDY0X3QgaGVscGVyX3NxcnRnICh1aW50NjRfdCBhKQogLyog UyBmbG9hdGluZyAoc2luZ2xlKSAqLwogCiAvKiBUYWtlbiBmcm9tIGxpbnV4L2FyY2gvYWxw aGEva2VybmVsL3RyYXBzLmMsIHNfbWVtX3RvX3JlZy4gICovCi1zdGF0aWMgaW5saW5lIHVp bnQ2NF90IGZsb2F0MzJfdG9fc19pbnQodWludDMyX3QgZmkpCitzdGF0aWMgdWludDY0X3Qg ZmxvYXQzMl90b19zX2ludCh1aW50MzJfdCBmaSkKIHsKICAgICB1aW50MzJfdCBmcmFjID0g ZmkgJiAweDdmZmZmZjsKICAgICB1aW50MzJfdCBzaWduID0gZmkgPj4gMzE7CkBAIC02NDks NyArODY2LDcgQEAgc3RhdGljIGlubGluZSB1aW50NjRfdCBmbG9hdDMyX3RvX3NfaW50KHVp bnQzMl90IGZpKQogICAgICAgICAgICAgfCAoKHVpbnQ2NF90KWZyYWMgPDwgMjkpKTsKIH0K IAotc3RhdGljIGlubGluZSB1aW50NjRfdCBmbG9hdDMyX3RvX3MoZmxvYXQzMiBmYSkKK3N0 YXRpYyB1aW50NjRfdCBmbG9hdDMyX3RvX3MoZmxvYXQzMiBmYSkKIHsKICAgICBDUFVfRmxv YXRVIGE7CiAgICAgYS5mID0gZmE7CkBAIC02NzgsNTIgKzg5NSw3NyBAQCB1aW50NjRfdCBo ZWxwZXJfbWVtb3J5X3RvX3MgKHVpbnQzMl90IGEpCiAgICAgcmV0dXJuIGZsb2F0MzJfdG9f c19pbnQoYSk7CiB9CiAKLXVpbnQ2NF90IGhlbHBlcl9hZGRzICh1aW50NjRfdCBhLCB1aW50 NjRfdCBiKQorc3RhdGljIGZsb2F0MzIgaW5wdXRfcyh1aW50MzJfdCBxdWFscywgdWludDY0 X3QgYSkKK3sKKyAgICByZXR1cm4gc190b19mbG9hdDMyKHJlbWFwX2llZWVfaW5wdXQocXVh bHMsIGEpKTsKK30KKwordWludDY0X3QgaGVscGVyX2FkZHMgKHVpbnQ2NF90IGEsIHVpbnQ2 NF90IGIsIHVpbnQzMl90IHF1YWxzKQogewogICAgIGZsb2F0MzIgZmEsIGZiLCBmcjsKKyAg ICB1aW50MzJfdCB0b2tlbjsKIAotICAgIGZhID0gc190b19mbG9hdDMyKGEpOwotICAgIGZi ID0gc190b19mbG9hdDMyKGIpOworICAgIHRva2VuID0gYmVnaW5fZnAocXVhbHMpOworICAg IGZhID0gaW5wdXRfcyhxdWFscywgYSk7CisgICAgZmIgPSBpbnB1dF9zKHF1YWxzLCBiKTsK ICAgICBmciA9IGZsb2F0MzJfYWRkKGZhLCBmYiwgJkZQX1NUQVRVUyk7CisgICAgZW5kX2Zw KHF1YWxzLCB0b2tlbik7CisKICAgICByZXR1cm4gZmxvYXQzMl90b19zKGZyKTsKIH0KIAot dWludDY0X3QgaGVscGVyX3N1YnMgKHVpbnQ2NF90IGEsIHVpbnQ2NF90IGIpCit1aW50NjRf dCBoZWxwZXJfc3VicyAodWludDY0X3QgYSwgdWludDY0X3QgYiwgdWludDMyX3QgcXVhbHMp CiB7CiAgICAgZmxvYXQzMiBmYSwgZmIsIGZyOworICAgIHVpbnQzMl90IHRva2VuOwogCi0g ICAgZmEgPSBzX3RvX2Zsb2F0MzIoYSk7Ci0gICAgZmIgPSBzX3RvX2Zsb2F0MzIoYik7Cisg ICAgdG9rZW4gPSBiZWdpbl9mcChxdWFscyk7CisgICAgZmEgPSBpbnB1dF9zKHF1YWxzLCBh KTsKKyAgICBmYiA9IGlucHV0X3MocXVhbHMsIGIpOwogICAgIGZyID0gZmxvYXQzMl9zdWIo ZmEsIGZiLCAmRlBfU1RBVFVTKTsKKyAgICBlbmRfZnAocXVhbHMsIHRva2VuKTsKKwogICAg IHJldHVybiBmbG9hdDMyX3RvX3MoZnIpOwogfQogCi11aW50NjRfdCBoZWxwZXJfbXVscyAo dWludDY0X3QgYSwgdWludDY0X3QgYikKK3VpbnQ2NF90IGhlbHBlcl9tdWxzICh1aW50NjRf dCBhLCB1aW50NjRfdCBiLCB1aW50MzJfdCBxdWFscykKIHsKICAgICBmbG9hdDMyIGZhLCBm YiwgZnI7CisgICAgdWludDMyX3QgdG9rZW47CiAKLSAgICBmYSA9IHNfdG9fZmxvYXQzMihh KTsKLSAgICBmYiA9IHNfdG9fZmxvYXQzMihiKTsKKyAgICB0b2tlbiA9IGJlZ2luX2ZwKHF1 YWxzKTsKKyAgICBmYSA9IGlucHV0X3MocXVhbHMsIGEpOworICAgIGZiID0gaW5wdXRfcyhx dWFscywgYik7CiAgICAgZnIgPSBmbG9hdDMyX211bChmYSwgZmIsICZGUF9TVEFUVVMpOwor ICAgIGVuZF9mcChxdWFscywgdG9rZW4pOworCiAgICAgcmV0dXJuIGZsb2F0MzJfdG9fcyhm cik7CiB9CiAKLXVpbnQ2NF90IGhlbHBlcl9kaXZzICh1aW50NjRfdCBhLCB1aW50NjRfdCBi KQordWludDY0X3QgaGVscGVyX2RpdnMgKHVpbnQ2NF90IGEsIHVpbnQ2NF90IGIsIHVpbnQz Ml90IHF1YWxzKQogewogICAgIGZsb2F0MzIgZmEsIGZiLCBmcjsKKyAgICB1aW50MzJfdCB0 b2tlbjsKIAotICAgIGZhID0gc190b19mbG9hdDMyKGEpOwotICAgIGZiID0gc190b19mbG9h dDMyKGIpOworICAgIHRva2VuID0gYmVnaW5fZnAocXVhbHMpOworICAgIGZhID0gaW5wdXRf cyhxdWFscywgYSk7CisgICAgZmIgPSBpbnB1dF9zKHF1YWxzLCBiKTsKICAgICBmciA9IGZs b2F0MzJfZGl2KGZhLCBmYiwgJkZQX1NUQVRVUyk7CisgICAgZW5kX2ZwKHF1YWxzLCB0b2tl bik7CisKICAgICByZXR1cm4gZmxvYXQzMl90b19zKGZyKTsKIH0KIAotdWludDY0X3QgaGVs cGVyX3NxcnRzICh1aW50NjRfdCBhKQordWludDY0X3QgaGVscGVyX3NxcnRzICh1aW50NjRf dCBhLCB1aW50MzJfdCBxdWFscykKIHsKICAgICBmbG9hdDMyIGZhLCBmcjsKKyAgICB1aW50 MzJfdCB0b2tlbjsKIAotICAgIGZhID0gc190b19mbG9hdDMyKGEpOworICAgIHRva2VuID0g YmVnaW5fZnAocXVhbHMpOworICAgIGZhID0gaW5wdXRfcyhxdWFscywgYSk7CiAgICAgZnIg PSBmbG9hdDMyX3NxcnQoZmEsICZGUF9TVEFUVVMpOworICAgIGVuZF9mcChxdWFscywgdG9r ZW4pOworCiAgICAgcmV0dXJuIGZsb2F0MzJfdG9fcyhmcik7CiB9CiAKQEAgLTc0NSw1MiAr OTg3LDc4IEBAIHN0YXRpYyBpbmxpbmUgdWludDY0X3QgZmxvYXQ2NF90b190KGZsb2F0NjQg ZmEpCiAgICAgcmV0dXJuIHIubGw7CiB9CiAKLXVpbnQ2NF90IGhlbHBlcl9hZGR0ICh1aW50 NjRfdCBhLCB1aW50NjRfdCBiKQorLyogUmFpc2UgYW55IGV4Y2VwdGlvbnMgbmVlZGVkIGZv ciB1c2luZyBGLCBnaXZlbiB0aGUgaW5zbiBxdWFsaWZpZXJzLiAgKi8KK3N0YXRpYyBmbG9h dDY0IGlucHV0X3QodWludDMyX3QgcXVhbHMsIHVpbnQ2NF90IGEpCit7CisgICAgcmV0dXJu IHRfdG9fZmxvYXQ2NChyZW1hcF9pZWVlX2lucHV0KHF1YWxzLCBhKSk7Cit9CisKK3VpbnQ2 NF90IGhlbHBlcl9hZGR0ICh1aW50NjRfdCBhLCB1aW50NjRfdCBiLCB1aW50MzJfdCBxdWFs cykKIHsKICAgICBmbG9hdDY0IGZhLCBmYiwgZnI7CisgICAgdWludDMyX3QgdG9rZW47CiAK LSAgICBmYSA9IHRfdG9fZmxvYXQ2NChhKTsKLSAgICBmYiA9IHRfdG9fZmxvYXQ2NChiKTsK KyAgICB0b2tlbiA9IGJlZ2luX2ZwKHF1YWxzKTsKKyAgICBmYSA9IGlucHV0X3QocXVhbHMs IGEpOworICAgIGZiID0gaW5wdXRfdChxdWFscywgYik7CiAgICAgZnIgPSBmbG9hdDY0X2Fk ZChmYSwgZmIsICZGUF9TVEFUVVMpOworICAgIGVuZF9mcChxdWFscywgdG9rZW4pOworCiAg ICAgcmV0dXJuIGZsb2F0NjRfdG9fdChmcik7CiB9CiAKLXVpbnQ2NF90IGhlbHBlcl9zdWJ0 ICh1aW50NjRfdCBhLCB1aW50NjRfdCBiKQordWludDY0X3QgaGVscGVyX3N1YnQgKHVpbnQ2 NF90IGEsIHVpbnQ2NF90IGIsIHVpbnQzMl90IHF1YWxzKQogewogICAgIGZsb2F0NjQgZmEs IGZiLCBmcjsKKyAgICB1aW50MzJfdCB0b2tlbjsKIAotICAgIGZhID0gdF90b19mbG9hdDY0 KGEpOwotICAgIGZiID0gdF90b19mbG9hdDY0KGIpOworICAgIHRva2VuID0gYmVnaW5fZnAo cXVhbHMpOworICAgIGZhID0gaW5wdXRfdChxdWFscywgYSk7CisgICAgZmIgPSBpbnB1dF90 KHF1YWxzLCBiKTsKICAgICBmciA9IGZsb2F0NjRfc3ViKGZhLCBmYiwgJkZQX1NUQVRVUyk7 CisgICAgZW5kX2ZwKHF1YWxzLCB0b2tlbik7CisgICAgCiAgICAgcmV0dXJuIGZsb2F0NjRf dG9fdChmcik7CiB9CiAKLXVpbnQ2NF90IGhlbHBlcl9tdWx0ICh1aW50NjRfdCBhLCB1aW50 NjRfdCBiKQordWludDY0X3QgaGVscGVyX211bHQgKHVpbnQ2NF90IGEsIHVpbnQ2NF90IGIs IHVpbnQzMl90IHF1YWxzKQogewogICAgIGZsb2F0NjQgZmEsIGZiLCBmcjsKKyAgICB1aW50 MzJfdCB0b2tlbjsKIAotICAgIGZhID0gdF90b19mbG9hdDY0KGEpOwotICAgIGZiID0gdF90 b19mbG9hdDY0KGIpOworICAgIHRva2VuID0gYmVnaW5fZnAocXVhbHMpOworICAgIGZhID0g aW5wdXRfdChxdWFscywgYSk7CisgICAgZmIgPSBpbnB1dF90KHF1YWxzLCBiKTsKICAgICBm ciA9IGZsb2F0NjRfbXVsKGZhLCBmYiwgJkZQX1NUQVRVUyk7CisgICAgZW5kX2ZwKHF1YWxz LCB0b2tlbik7CisKICAgICByZXR1cm4gZmxvYXQ2NF90b190KGZyKTsKIH0KIAotdWludDY0 X3QgaGVscGVyX2RpdnQgKHVpbnQ2NF90IGEsIHVpbnQ2NF90IGIpCit1aW50NjRfdCBoZWxw ZXJfZGl2dCAodWludDY0X3QgYSwgdWludDY0X3QgYiwgdWludDMyX3QgcXVhbHMpCiB7CiAg ICAgZmxvYXQ2NCBmYSwgZmIsIGZyOworICAgIHVpbnQzMl90IHRva2VuOwogCi0gICAgZmEg PSB0X3RvX2Zsb2F0NjQoYSk7Ci0gICAgZmIgPSB0X3RvX2Zsb2F0NjQoYik7CisgICAgdG9r ZW4gPSBiZWdpbl9mcChxdWFscyk7CisgICAgZmEgPSBpbnB1dF90KHF1YWxzLCBhKTsKKyAg ICBmYiA9IGlucHV0X3QocXVhbHMsIGIpOwogICAgIGZyID0gZmxvYXQ2NF9kaXYoZmEsIGZi LCAmRlBfU1RBVFVTKTsKKyAgICBlbmRfZnAocXVhbHMsIHRva2VuKTsKKwogICAgIHJldHVy biBmbG9hdDY0X3RvX3QoZnIpOwogfQogCi11aW50NjRfdCBoZWxwZXJfc3FydHQgKHVpbnQ2 NF90IGEpCit1aW50NjRfdCBoZWxwZXJfc3FydHQgKHVpbnQ2NF90IGEsIHVpbnQzMl90IHF1 YWxzKQogewogICAgIGZsb2F0NjQgZmEsIGZyOworICAgIHVpbnQzMl90IHRva2VuOwogCi0g ICAgZmEgPSB0X3RvX2Zsb2F0NjQoYSk7CisgICAgdG9rZW4gPSBiZWdpbl9mcChxdWFscyk7 CisgICAgZmEgPSBpbnB1dF90KHF1YWxzLCBhKTsKICAgICBmciA9IGZsb2F0NjRfc3FydChm YSwgJkZQX1NUQVRVUyk7CisgICAgZW5kX2ZwKHF1YWxzLCB0b2tlbik7CisKICAgICByZXR1 cm4gZmxvYXQ2NF90b190KGZyKTsKIH0KIApAQCAtODEzLDYgKzEwODEsOCBAQCB1aW50NjRf dCBoZWxwZXJfY3B5c2UodWludDY0X3QgYSwgdWludDY0X3QgYikKIAogCiAvKiBDb21wYXJp c29ucyAqLworLyogPz8/IFNvZnR3YXJlIGNvbXBsZXRpb24gcXVhbGlmaWVyIG1pc3Npbmcu ICAqLworCiB1aW50NjRfdCBoZWxwZXJfY21wdHVuICh1aW50NjRfdCBhLCB1aW50NjRfdCBi KQogewogICAgIGZsb2F0NjQgZmEsIGZiOwpAQCAtOTA1LDcwICsxMTc1LDIxOCBAQCB1aW50 NjRfdCBoZWxwZXJfY21wZ2x0KHVpbnQ2NF90IGEsIHVpbnQ2NF90IGIpCiB9CiAKIC8qIEZs b2F0aW5nIHBvaW50IGZvcm1hdCBjb252ZXJzaW9uICovCi11aW50NjRfdCBoZWxwZXJfY3Z0 dHMgKHVpbnQ2NF90IGEpCit1aW50NjRfdCBoZWxwZXJfY3Z0dHMgKHVpbnQ2NF90IGEsIHVp bnQzMl90IHF1YWxzKQogewogICAgIGZsb2F0NjQgZmE7CiAgICAgZmxvYXQzMiBmcjsKKyAg ICB1aW50MzJfdCB0b2tlbjsKIAotICAgIGZhID0gdF90b19mbG9hdDY0KGEpOworICAgIHRv a2VuID0gYmVnaW5fZnAocXVhbHMpOworICAgIGZhID0gaW5wdXRfdChxdWFscywgYSk7CiAg ICAgZnIgPSBmbG9hdDY0X3RvX2Zsb2F0MzIoZmEsICZGUF9TVEFUVVMpOworICAgIGVuZF9m cChxdWFscywgdG9rZW4pOworCiAgICAgcmV0dXJuIGZsb2F0MzJfdG9fcyhmcik7CiB9CiAK LXVpbnQ2NF90IGhlbHBlcl9jdnRzdCAodWludDY0X3QgYSkKK3VpbnQ2NF90IGhlbHBlcl9j dnRzdCAodWludDY0X3QgYSwgdWludDMyX3QgcXVhbHMpCiB7CiAgICAgZmxvYXQzMiBmYTsK ICAgICBmbG9hdDY0IGZyOworICAgIHVpbnQzMl90IHRva2VuOwogCi0gICAgZmEgPSBzX3Rv X2Zsb2F0MzIoYSk7CisgICAgdG9rZW4gPSBiZWdpbl9mcChxdWFscyk7CisgICAgZmEgPSBp bnB1dF9zKHF1YWxzLCBhKTsKICAgICBmciA9IGZsb2F0MzJfdG9fZmxvYXQ2NChmYSwgJkZQ X1NUQVRVUyk7CisgICAgZW5kX2ZwKHF1YWxzLCB0b2tlbik7CisKICAgICByZXR1cm4gZmxv YXQ2NF90b190KGZyKTsKIH0KIAotdWludDY0X3QgaGVscGVyX2N2dHFzICh1aW50NjRfdCBh KQordWludDY0X3QgaGVscGVyX2N2dHFzICh1aW50NjRfdCBhLCB1aW50MzJfdCBxdWFscykK IHsKLSAgICBmbG9hdDMyIGZyID0gaW50NjRfdG9fZmxvYXQzMihhLCAmRlBfU1RBVFVTKTsK KyAgICBmbG9hdDMyIGZyOworICAgIHVpbnQzMl90IHRva2VuOworCisgICAgdG9rZW4gPSBi ZWdpbl9mcChxdWFscyk7CisgICAgZnIgPSBpbnQ2NF90b19mbG9hdDMyKGEsICZGUF9TVEFU VVMpOworICAgIGVuZF9mcChxdWFscywgdG9rZW4pOworCiAgICAgcmV0dXJuIGZsb2F0MzJf dG9fcyhmcik7CiB9CiAKLXVpbnQ2NF90IGhlbHBlcl9jdnR0cSAodWludDY0X3QgYSkKKy8q IEltcGxlbWVudCBmbG9hdDY0IHRvIHVpbnQ2NCBjb252ZXJzaW9uIHdpdGhvdXQgb3ZlcmZs b3cgZW5hYmxlZC4KKyAgIEluIHRoaXMgbW9kZSB3ZSBtdXN0IHN1cHBseSB0aGUgdHJ1bmNh dGVkIHJlc3VsdC4gIFRoaXMgYmVoYXZpb3VyCisgICBpcyB1c2VkIGJ5IHRoZSBjb21waWxl ciB0byBnZXQgdW5zaWduZWQgY29udmVyc2lvbiBmb3IgZnJlZSB3aXRoCisgICB0aGUgc2Ft ZSBpbnN0cnVjdGlvbi4gICovCisKK3N0YXRpYyB1aW50NjRfdCBjdnR0cV9pbnRlcm5hbCh1 aW50NjRfdCBhKQogewotICAgIGZsb2F0NjQgZmEgPSB0X3RvX2Zsb2F0NjQoYSk7Ci0gICAg cmV0dXJuIGZsb2F0NjRfdG9faW50NjRfcm91bmRfdG9femVybyhmYSwgJkZQX1NUQVRVUyk7 CisgICAgdWludDY0X3QgZnJhYywgcmV0ID0gMDsKKyAgICB1aW50MzJfdCBleHAsIHNpZ24s IGV4YyA9IDA7CisgICAgaW50IHNoaWZ0OworCisgICAgc2lnbiA9IChhID4+IDYzKTsKKyAg ICBleHAgPSAodWludDMyX3QpKGEgPj4gNTIpICYgMHg3ZmY7CisgICAgZnJhYyA9IGEgJiAw eGZmZmZmZmZmZmZmZmZ1bGw7CisKKyAgICBpZiAoZXhwID09IDApIHsKKyAgICAgICAgaWYg KHVubGlrZWx5KGZyYWMgIT0gMCkpCisgICAgICAgICAgICBnb3RvIGRvX3VuZGVyZmxvdzsK KyAgICB9IGVsc2UgaWYgKGV4cCA9PSAweDdmZikgeworICAgICAgICBpZiAoZnJhYyA9PSAw KQorICAgICAgICAgICAgZXhjID0gZmxvYXRfZmxhZ19vdmVyZmxvdzsKKyAgICAgICAgZWxz ZQorICAgICAgICAgICAgZXhjID0gZmxvYXRfZmxhZ19pbnZhbGlkOworICAgIH0gZWxzZSB7 CisgICAgICAgIC8qIFJlc3RvcmUgaW1wbGljaXQgYml0LiAgKi8KKyAgICAgICAgZnJhYyB8 PSAweDEwMDAwMDAwMDAwMDAwdWxsOworCisgICAgICAgIC8qIE5vdGUgdGhhdCBuZWl0aGVy IG92ZXJmbG93IGV4Y2VwdGlvbnMgbm9yIGluZXhhY3QgZXhjZXB0aW9ucworICAgICAgICAg ICBhcmUgZGVzaXJlZC4gIFRoaXMgbGV0cyB1cyBzdHJlYW1saW5lIHRoZSBjaGVja3MgcXVp dGUgYSBiaXQuICAqLworICAgICAgICBzaGlmdCA9IGV4cCAtIDEwMjMgLSA1MjsKKyAgICAg ICAgaWYgKHNoaWZ0ID49IDApIHsKKyAgICAgICAgICAgIC8qIEluIHRoaXMgY2FzZSB0aGUg bnVtYmVyIGlzIHNvIGxhcmdlIHRoYXQgd2UgbXVzdCBzaGlmdAorICAgICAgICAgICAgICAg dGhlIGZyYWN0aW9uIGxlZnQuICBUaGVyZSBpcyBubyByb3VuZGluZyB0byBkby4gICovCisg ICAgICAgICAgICBpZiAoc2hpZnQgPCA2MykgeworICAgICAgICAgICAgICAgIHJldCA9IGZy YWMgPDwgc2hpZnQ7CisgICAgICAgICAgICAgICAgaWYgKChyZXQgPj4gc2hpZnQpICE9IGZy YWMpCisgICAgICAgICAgICAgICAgICAgIGV4YyA9IGZsb2F0X2ZsYWdfb3ZlcmZsb3c7Cisg ICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB1aW50NjRfdCBy b3VuZDsKKworICAgICAgICAgICAgLyogSW4gdGhpcyBjYXNlIHRoZSBudW1iZXIgaXMgc21h bGxlciB0aGFuIHRoZSBmcmFjdGlvbiBhcworICAgICAgICAgICAgICAgcmVwcmVzZW50ZWQg YnkgdGhlIDUyIGJpdCBudW1iZXIuICBIZXJlIHdlIG11c3QgdGhpbmsgCisgICAgICAgICAg ICAgICBhYm91dCByb3VuZGluZyB0aGUgcmVzdWx0LiAgSGFuZGxlIHRoaXMgYnkgc2hpZnRp bmcgdGhlCisgICAgICAgICAgICAgICBmcmFjdGlvbmFsIHBhcnQgb2YgdGhlIG51bWJlciBp bnRvIHRoZSBoaWdoIGJpdHMgb2YgUk9VTkQuCisgICAgICAgICAgICAgICBUaGlzIHdpbGwg bGV0IHVzIGVmZmljaWVudGx5IGhhbmRsZSByb3VuZC10by1uZWFyZXN0LiAgKi8KKyAgICAg ICAgICAgIHNoaWZ0ID0gLXNoaWZ0OworICAgICAgICAgICAgaWYgKHNoaWZ0IDwgNjMpIHsK KyAgICAgICAgICAgICAgICByZXQgPSBmcmFjID4+IHNoaWZ0OworICAgICAgICAgICAgICAg IHJvdW5kID0gZnJhYyA8PCAoNjQgLSBzaGlmdCk7CisgICAgICAgICAgICB9IGVsc2Ugewor ICAgICAgICAgICAgICAgIC8qIFRoZSBleHBvbmVudCBpcyBzbyBzbWFsbCB3ZSBzaGlmdCBv dXQgZXZlcnl0aGluZy4KKyAgICAgICAgICAgICAgICAgICBMZWF2ZSBhIHN0aWNreSBiaXQg Zm9yIHByb3BlciByb3VuZGluZyBiZWxvdy4gICovCisgICAgICAgICAgICBkb191bmRlcmZs b3c6CisgICAgICAgICAgICAgICAgcm91bmQgPSAxOworICAgICAgICAgICAgfQorCisgICAg ICAgICAgICBpZiAocm91bmQpIHsKKyAgICAgICAgICAgICAgICBleGMgPSBmbG9hdF9mbGFn X2luZXhhY3Q7CisgICAgICAgICAgICAgICAgc3dpdGNoIChGUF9TVEFUVVMuZmxvYXRfcm91 bmRpbmdfbW9kZSkgeworICAgICAgICAgICAgICAgIGNhc2UgZmxvYXRfcm91bmRfbmVhcmVz dF9ldmVuOgorICAgICAgICAgICAgICAgICAgICBpZiAocm91bmQgPT0gKDF1bGwgPDwgNjMp KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiBGcmFjdGlvbiBpcyBleGFjdGx5IDAu NTsgcm91bmQgdG8gZXZlbi4gICovCisgICAgICAgICAgICAgICAgICAgICAgICByZXQgKz0g KHJldCAmIDEpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJvdW5kID4gKDF1 bGwgPDwgNjMpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXQgKz0gMTsKKyAgICAg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg ICAgICAgICBjYXNlIGZsb2F0X3JvdW5kX3RvX3plcm86CisgICAgICAgICAgICAgICAgICAg IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgZmxvYXRfcm91bmRfdXA6CisgICAgICAg ICAgICAgICAgICAgIGlmICghc2lnbikKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldCAr PSAxOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNl IGZsb2F0X3JvdW5kX2Rvd246CisgICAgICAgICAgICAgICAgICAgIGlmIChzaWduKQorICAg ICAgICAgICAgICAgICAgICAgICAgcmV0ICs9IDE7CisgICAgICAgICAgICAgICAgICAgIGJy ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg ICAgICBpZiAoc2lnbikKKyAgICAgICAgICAgIHJldCA9IC1yZXQ7CisgICAgfQorICAgIGlm ICh1bmxpa2VseShleGMpKQorICAgICAgICBmbG9hdF9yYWlzZShleGMsICZGUF9TVEFUVVMp OworCisgICAgcmV0dXJuIHJldDsKK30KKwordWludDY0X3QgaGVscGVyX2N2dHRxICh1aW50 NjRfdCBhLCB1aW50MzJfdCBxdWFscykKK3sKKyAgICB1aW50NjRfdCByZXQ7CisgICAgdWlu dDMyX3QgdG9rZW47CisKKyAgICAvKiA/Pz8gVGhlcmUncyBhbiBhcnVndW1lbnQgdG8gYmUg bWFkZSB0aGF0IHdoZW4gL1MgaXMgZW5hYmxlZCwgd2UKKyAgICAgICBzaG91bGQgcHJvdmlk ZSB0aGUgc3RhbmRhcmQgSUVFRSBzYXR1cmF0ZWQgcmVzdWx0LCBpbnN0ZWFkIG9mCisgICAg ICAgdGhlIHRydW5jYXRlZCByZXN1bHQgdGhhdCB3ZSAqbXVzdCogcHJvdmlkZSB3aGVuIC9W IGlzIGRpc2FibGVkLgorICAgICAgIEhvd2V2ZXIsIHRoYXQncyBub3QgaG93IGVpdGhlciB0 aGUgVHJ1NjQgb3IgTGludXggY29tcGxldGlvbgorICAgICAgIGhhbmRsZXJzIGFjdHVhbGx5 IHdvcmssIGFuZCBHQ0Mga25vd3MgaXQuICAqLworCisgICAgdG9rZW4gPSBiZWdpbl9mcChx dWFscyk7CisgICAgYSA9IHJlbWFwX2llZWVfaW5wdXQocXVhbHMsIGEpOworICAgIHJldCA9 IGN2dHRxX2ludGVybmFsKGEpOworICAgIGVuZF9mcChxdWFscywgdG9rZW4pOworCisgICAg cmV0dXJuIHJldDsKIH0KIAotdWludDY0X3QgaGVscGVyX2N2dHF0ICh1aW50NjRfdCBhKQor dWludDY0X3QgaGVscGVyX2N2dHF0ICh1aW50NjRfdCBhLCB1aW50MzJfdCBxdWFscykKIHsK LSAgICBmbG9hdDY0IGZyID0gaW50NjRfdG9fZmxvYXQ2NChhLCAmRlBfU1RBVFVTKTsKKyAg ICBmbG9hdDY0IGZyOworICAgIHVpbnQzMl90IHRva2VuOworCisgICAgdG9rZW4gPSBiZWdp bl9mcChxdWFscyk7CisgICAgZnIgPSBpbnQ2NF90b19mbG9hdDY0KGEsICZGUF9TVEFUVVMp OworICAgIGVuZF9mcChxdWFscywgdG9rZW4pOworCiAgICAgcmV0dXJuIGZsb2F0NjRfdG9f dChmcik7CiB9CiAKLXVpbnQ2NF90IGhlbHBlcl9jdnRxZiAodWludDY0X3QgYSkKK3VpbnQ2 NF90IGhlbHBlcl9jdnRxZiAodWludDY0X3QgYSwgdWludDMyX3QgcXVhbHMpCiB7Ci0gICAg ZmxvYXQzMiBmciA9IGludDY0X3RvX2Zsb2F0MzIoYSwgJkZQX1NUQVRVUyk7CisgICAgZmxv YXQzMiBmcjsKKyAgICB1aW50MzJfdCB0b2tlbjsKKworICAgIHRva2VuID0gYmVnaW5fZnAo cXVhbHMpOworICAgIGZyID0gaW50NjRfdG9fZmxvYXQzMihhLCAmRlBfU1RBVFVTKTsKKyAg ICBlbmRfZnAocXVhbHMsIHRva2VuKTsKKwogICAgIHJldHVybiBmbG9hdDMyX3RvX2YoZnIp OwogfQogCi11aW50NjRfdCBoZWxwZXJfY3Z0Z2YgKHVpbnQ2NF90IGEpCit1aW50NjRfdCBo ZWxwZXJfY3Z0Z2YgKHVpbnQ2NF90IGEsIHVpbnQzMl90IHF1YWxzKQogewogICAgIGZsb2F0 NjQgZmE7CiAgICAgZmxvYXQzMiBmcjsKKyAgICB1aW50MzJfdCB0b2tlbjsKIAogICAgIGZh ID0gZ190b19mbG9hdDY0KGEpOworCisgICAgdG9rZW4gPSBiZWdpbl9mcChxdWFscyk7CiAg ICAgZnIgPSBmbG9hdDY0X3RvX2Zsb2F0MzIoZmEsICZGUF9TVEFUVVMpOworICAgIGVuZF9m cChxdWFscywgdG9rZW4pOworCiAgICAgcmV0dXJuIGZsb2F0MzJfdG9fZihmcik7CiB9CiAK LXVpbnQ2NF90IGhlbHBlcl9jdnRncSAodWludDY0X3QgYSkKK3VpbnQ2NF90IGhlbHBlcl9j dnRncSAodWludDY0X3QgYSwgdWludDMyX3QgcXVhbHMpCiB7Ci0gICAgZmxvYXQ2NCBmYSA9 IGdfdG9fZmxvYXQ2NChhKTsKLSAgICByZXR1cm4gZmxvYXQ2NF90b19pbnQ2NF9yb3VuZF90 b196ZXJvKGZhLCAmRlBfU1RBVFVTKTsKKyAgICBmbG9hdDY0IGZhOworICAgIHVpbnQ2NF90 IHJldDsKKyAgICB1aW50MzJfdCB0b2tlbjsKKworICAgIGZhID0gZ190b19mbG9hdDY0KGEp OworCisgICAgdG9rZW4gPSBiZWdpbl9mcChxdWFscyk7CisgICAgcmV0ID0gZmxvYXQ2NF90 b19pbnQ2NChmYSwgJkZQX1NUQVRVUyk7CisgICAgZW5kX2ZwKHF1YWxzLCB0b2tlbik7CisK KyAgICByZXR1cm4gcmV0OwogfQogCi11aW50NjRfdCBoZWxwZXJfY3Z0cWcgKHVpbnQ2NF90 IGEpCit1aW50NjRfdCBoZWxwZXJfY3Z0cWcgKHVpbnQ2NF90IGEsIHVpbnQzMl90IHF1YWxz KQogewogICAgIGZsb2F0NjQgZnI7CisgICAgdWludDMyX3QgdG9rZW47CisKKyAgICB0b2tl biA9IGJlZ2luX2ZwKHF1YWxzKTsKICAgICBmciA9IGludDY0X3RvX2Zsb2F0NjQoYSwgJkZQ X1NUQVRVUyk7CisgICAgZW5kX2ZwKHF1YWxzLCB0b2tlbik7CisKICAgICByZXR1cm4gZmxv YXQ2NF90b19nKGZyKTsKIH0KIApAQCAtOTc5LDM1ICsxMzk3LDI0IEBAIHVpbnQ2NF90IGhl bHBlcl9jdnRscSAodWludDY0X3QgYSkKICAgICByZXR1cm4gKGxvICYgMHgzRkZGRkZGRikg fCAoaGkgJiAweGMwMDAwMDAwKTsKIH0KIAotc3RhdGljIGlubGluZSB1aW50NjRfdCBfX2hl bHBlcl9jdnRxbCh1aW50NjRfdCBhLCBpbnQgcywgaW50IHYpCi17Ci0gICAgdWludDY0X3Qg cjsKLQotICAgIHIgPSAoKHVpbnQ2NF90KShhICYgMHhDMDAwMDAwMCkpIDw8IDMyOwotICAg IHIgfD0gKCh1aW50NjRfdCkoYSAmIDB4N0ZGRkZGRkYpKSA8PCAyOTsKLQotICAgIGlmICh2 ICYmIChpbnQ2NF90KSgoaW50MzJfdClyKSAhPSAoaW50NjRfdClyKSB7Ci0gICAgICAgIGhl bHBlcl9leGNwKEVYQ1BfQVJJVEgsIEVYQ1BfQVJJVEhfT1ZFUkZMT1cpOwotICAgIH0KLSAg ICBpZiAocykgewotICAgICAgICAvKiBUT0RPICovCi0gICAgfQotICAgIHJldHVybiByOwot fQotCiB1aW50NjRfdCBoZWxwZXJfY3Z0cWwgKHVpbnQ2NF90IGEpCiB7Ci0gICAgcmV0dXJu IF9faGVscGVyX2N2dHFsKGEsIDAsIDApOworICAgIHJldHVybiAoKGEgJiAweEMwMDAwMDAw KSA8PCAzMikgfCAoKGEgJiAweDdGRkZGRkZGKSA8PCAyOSk7CiB9CiAKIHVpbnQ2NF90IGhl bHBlcl9jdnRxbHYgKHVpbnQ2NF90IGEpCiB7Ci0gICAgcmV0dXJuIF9faGVscGVyX2N2dHFs KGEsIDAsIDEpOworICAgIGlmICgoaW50MzJfdClhICE9IChpbnQ2NF90KWEpCisgICAgICAg IGhlbHBlcl9leGNwKEVYQ1BfQVJJVEgsIEVYQ19NX0lPVik7CisgICAgcmV0dXJuIGhlbHBl cl9jdnRxbChhKTsKIH0KIAogdWludDY0X3QgaGVscGVyX2N2dHFsc3YgKHVpbnQ2NF90IGEp CiB7Ci0gICAgcmV0dXJuIF9faGVscGVyX2N2dHFsKGEsIDEsIDEpOworICAgIC8qID8/PyBJ J20gcHJldHR5IHN1cmUgdGhlcmUncyBub3RoaW5nIHRoYXQgL3N2IG5lZWRzIHRvIGRvIHRo YXQgL3YKKyAgICAgICBkb2Vzbid0IGRvLiAgVGhlIG9ubHkgdGhpbmcgSSBjYW4gdGhpbmsg aXMgdGhhdCAvc3YgaXMgYSB2YWxpZAorICAgICAgIGluc3RydWN0aW9uIG1lcmVseSBmb3Ig Y29tcGxldGVuZXNzIGluIHRoZSBJU0EuICAqLworICAgIHJldHVybiBoZWxwZXJfY3Z0cWx2 KGEpOwogfQogCiAvKiBQQUxjb2RlIHN1cHBvcnQgc3BlY2lhbCBpbnN0cnVjdGlvbnMgKi8K ZGlmZiAtLWdpdCBhL3RhcmdldC1hbHBoYS90cmFuc2xhdGUuYyBiL3RhcmdldC1hbHBoYS90 cmFuc2xhdGUuYwppbmRleCA0NWNiNjk3Li5lMGNhMGVkIDEwMDY0NAotLS0gYS90YXJnZXQt YWxwaGEvdHJhbnNsYXRlLmMKKysrIGIvdGFyZ2V0LWFscGhhL3RyYW5zbGF0ZS5jCkBAIC00 NDIsODEgKzQ0Miw3OSBAQCBzdGF0aWMgdm9pZCBnZW5fZmNtb3YoVENHQ29uZCBpbnZfY29u ZCwgaW50IHJhLCBpbnQgcmIsIGludCByYykKICAgICBnZW5fc2V0X2xhYmVsKGwxKTsKIH0K IAotI2RlZmluZSBGQVJJVEgyKG5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotc3RhdGljIGlubGluZSB2b2lkIGdsdWUoZ2VuX2YsIG5hbWUpKGludCBy YiwgaW50IHJjKSAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmICh1bmxpa2VseShyYyA9PSAz MSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgcmV0dXJuOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAotICAgIGlmIChyYiAhPSAzMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotICAgICAgICBnZW5faGVscGVyXyAjIyBuYW1lIChjcHVfZmlyW3JjXSwg Y3B1X2ZpcltyYl0pOyAgICBcCi0gICAgZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIFRDR3YgdG1wID0gdGNnX2Nv bnN0X2k2NCgwKTsgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGdlbl9oZWxw ZXJfICMjIG5hbWUgKGNwdV9maXJbcmNdLCB0bXApOyAgICAgICAgICAgIFwKLSAgICAgICAg dGNnX3RlbXBfZnJlZSh0bXApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKyNkZWZpbmUgRkFSSVRIMihuYW1lKSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorc3RhdGljIGlubGluZSB2b2lkIGdsdWUoZ2VuX2YsIG5hbWUpKGlu dCByYiwgaW50IHJjKSAgICBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAodW5saWtlbHkocmMgPT0gMzEpKSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgcmV0dXJuOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAocmIgIT0g MzEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBn ZW5faGVscGVyXyAjIyBuYW1lIChjcHVfZmlyW3JjXSwgY3B1X2ZpcltyYl0pOyBcCisgICAg ZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK KyAgICAgICAgVENHdiB0bXAgPSB0Y2dfY29uc3RfaTY0KDApOyAgICAgICAgICAgICAgICAg ICAgXAorICAgICAgICBnZW5faGVscGVyXyAjIyBuYW1lIChjcHVfZmlyW3JjXSwgdG1wKTsg ICAgICAgICBcCisgICAgICAgIHRjZ190ZW1wX2ZyZWUodG1wKTsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAogfQotRkFSSVRIMihzcXJ0cykKLUZBUklUSDIoc3FydGYp Ci1GQVJJVEgyKHNxcnRnKQotRkFSSVRIMihzcXJ0dCkKLUZBUklUSDIoY3Z0Z2YpCi1GQVJJ VEgyKGN2dGdxKQotRkFSSVRIMihjdnRxZikKLUZBUklUSDIoY3Z0cWcpCi1GQVJJVEgyKGN2 dHN0KQotRkFSSVRIMihjdnR0cykKLUZBUklUSDIoY3Z0dHEpCi1GQVJJVEgyKGN2dHFzKQot RkFSSVRIMihjdnRxdCkKIEZBUklUSDIoY3Z0bHEpCiBGQVJJVEgyKGN2dHFsKQogRkFSSVRI MihjdnRxbHYpCiBGQVJJVEgyKGN2dHFsc3YpCiAKLSNkZWZpbmUgRkFSSVRIMyhuYW1lKSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot c3RhdGljIGlubGluZSB2b2lkIGdsdWUoZ2VuX2YsIG5hbWUpKGludCByYSwgaW50IHJiLCBp bnQgcmMpICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAo dW5saWtlbHkocmMgPT0gMzEpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotICAgICAgICByZXR1cm47ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSAgICBpZiAocmEgIT0gMzEpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAocmIgIT0gMzEpICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g ICAgICAgICAgICBnZW5faGVscGVyXyAjIyBuYW1lIChjcHVfZmlyW3JjXSwgY3B1X2Zpclty YV0sIGNwdV9maXJbcmJdKTsgIFwKLSAgICAgICAgZWxzZSB7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAg ICAgVENHdiB0bXAgPSB0Y2dfY29uc3RfaTY0KDApOyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCi0gICAgICAgICAgICBnZW5faGVscGVyXyAjIyBuYW1lIChjcHVfZmly W3JjXSwgY3B1X2ZpcltyYV0sIHRtcCk7ICAgICAgICAgIFwKLSAgICAgICAgICAgIHRjZ190 ZW1wX2ZyZWUodG1wKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAotICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSBlbHNlIHsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg ICAgICAgVENHdiB0bXAgPSB0Y2dfY29uc3RfaTY0KDApOyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAocmIgIT0gMzEpICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAg ICBnZW5faGVscGVyXyAjIyBuYW1lIChjcHVfZmlyW3JjXSwgdG1wLCBjcHVfZmlyW3JiXSk7 ICAgICAgICAgIFwKLSAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgZ2VuX2hl bHBlcl8gIyMgbmFtZSAoY3B1X2ZpcltyY10sIHRtcCwgdG1wKTsgICAgICAgICAgICAgICAg ICAgXAotICAgICAgICB0Y2dfdGVtcF9mcmVlKHRtcCk7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyNk ZWZpbmUgUUZBUklUSDIobmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCitzdGF0aWMgaW5saW5lIHZvaWQgZ2x1ZShnZW5fZiwgbmFtZSkoaW50IHJi LCBpbnQgcmMsIGludCBvcGMpICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBUQ0d2X2kzMiBxdWFs czsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg aWYgKHVubGlrZWx5KHJjID09IDMxKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorICAgICAgcmV0dXJuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKKyAgICBxdWFscyA9IHRjZ19jb25zdF9pMzIob3BjICYg fjB4M2YpOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKHJiICE9IDMxKSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg ICBnZW5faGVscGVyXyAjIyBuYW1lIChjcHVfZmlyW3JjXSwgY3B1X2ZpcltyYl0sIHF1YWxz KTsgIFwKKyAgICBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCisgICAgICAgIFRDR3YgdG1wID0gdGNnX2NvbnN0X2k2NCgw KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBnZW5faGVscGVyXyAj IyBuYW1lIChjcHVfZmlyW3JjXSwgdG1wLCBxdWFscyk7ICAgICAgICAgIFwKKyAgICAgICAg dGNnX3RlbXBfZnJlZSh0bXApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAorICAgIHRjZ190ZW1wX2ZyZWVfaTMyKHF1YWxzKTsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30KK1FGQVJJVEgyKHNxcnRzKQorUUZB UklUSDIoc3FydGYpCitRRkFSSVRIMihzcXJ0ZykKK1FGQVJJVEgyKHNxcnR0KQorUUZBUklU SDIoY3Z0Z2YpCitRRkFSSVRIMihjdnRncSkKK1FGQVJJVEgyKGN2dHFmKQorUUZBUklUSDIo Y3Z0cWcpCitRRkFSSVRIMihjdnRzdCkKK1FGQVJJVEgyKGN2dHRzKQorUUZBUklUSDIoY3Z0 dHEpCitRRkFSSVRIMihjdnRxcykKK1FGQVJJVEgyKGN2dHF0KQorCisjZGVmaW5lIEZBUklU SDMobmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor c3RhdGljIGlubGluZSB2b2lkIGdsdWUoZ2VuX2YsIG5hbWUpKGludCByYSwgaW50IHJiLCBp bnQgcmMpICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgVENHdiB6ZXJvLCB0YSwgdGI7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICh1bmxpa2Vs eShyYyA9PSAzMSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg ICAgICAgcmV0dXJuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCisgICAgdGEgPSBjcHVfZmlyW3JhXTsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorICAgIHRiID0gY3B1X2ZpcltyYl07ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAodW5saWtlbHko cmEgPT0gMzEpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg ICAgIHplcm8gPSB0Y2dfY29uc3RfaTY0KDApOyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorICAgICAgICB0YSA9IHplcm87ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKHVubGlrZWx5KHJi ID09IDMxKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg ICBpZiAocmEgIT0gMzEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKKyAgICAgICAgICAgIHplcm8gPSB0Y2dfY29uc3RfaTY0KDApOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCisgICAgICAgIHRiID0gemVybzsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBnZW5f aGVscGVyXyAjIyBuYW1lIChjcHVfZmlyW3JjXSwgdGEsIHRiKTsgICAgICAgICAgICAgICAg ICBcCisgICAgaWYgKHJhID09IDMxIHx8IHJiID09IDMxKSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAorICAgICAgICB0Y2dfdGVtcF9mcmVlKHplcm8pOyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKIH0KLQotRkFSSVRIMyhhZGRmKQotRkFS SVRIMyhzdWJmKQotRkFSSVRIMyhtdWxmKQotRkFSSVRIMyhkaXZmKQotRkFSSVRIMyhhZGRn KQotRkFSSVRIMyhzdWJnKQotRkFSSVRIMyhtdWxnKQotRkFSSVRIMyhkaXZnKQogRkFSSVRI MyhjbXBnZXEpCiBGQVJJVEgzKGNtcGdsdCkKIEZBUklUSDMoY21wZ2xlKQotRkFSSVRIMyhh ZGRzKQotRkFSSVRIMyhzdWJzKQotRkFSSVRIMyhtdWxzKQotRkFSSVRIMyhkaXZzKQotRkFS SVRIMyhhZGR0KQotRkFSSVRIMyhzdWJ0KQotRkFSSVRIMyhtdWx0KQotRkFSSVRIMyhkaXZ0 KQogRkFSSVRIMyhjbXB0dW4pCiBGQVJJVEgzKGNtcHRlcSkKIEZBUklUSDMoY21wdGx0KQpA QCAtNTI1LDYgKzUyMyw0NyBAQCBGQVJJVEgzKGNweXMpCiBGQVJJVEgzKGNweXNuKQogRkFS SVRIMyhjcHlzZSkKIAorI2RlZmluZSBRRkFSSVRIMyhuYW1lKSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorc3RhdGljIGlubGluZSB2b2lk IGdsdWUoZ2VuX2YsIG5hbWUpKGludCByYSwgaW50IHJiLCBpbnQgcmMsIGludCBvcGMpICAg XAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorICAgIFRDR3YgemVybywgdGEsIHRiOyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFRDR3Zf aTMyIHF1YWxzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorICAgIGlmICh1bmxpa2VseShyYyA9PSAzMSkpICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm47ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor ICAgIHRhID0gY3B1X2ZpcltyYV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorICAgIHRiID0gY3B1X2ZpcltyYl07ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICh1bmxp a2VseShyYSA9PSAzMSkpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorICAgICAgICB6ZXJvID0gdGNnX2NvbnN0X2k2NCgwKTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB0YSA9IHplcm87ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAorICAgIGlmICh1bmxpa2VseShyYiA9PSAzMSkpIHsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAocmEg IT0gMzEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAorICAgICAgICAgICAgemVybyA9IHRjZ19jb25zdF9pNjQoMCk7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB0YiA9IHplcm87ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorICAgIHF1YWxzID0gdGNnX2NvbnN0X2kzMihvcGMgJiB+MHgzZik7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGdlbl9oZWxwZXJfICMj IG5hbWUgKGNwdV9maXJbcmNdLCB0YSwgdGIsIHF1YWxzKTsgICAgICAgICAgICAgICAgICAg XAorICAgIHRjZ190ZW1wX2ZyZWVfaTMyKHF1YWxzKTsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmIChyYSA9PSAzMSB8fCByYiA9PSAzMSkg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB0 Y2dfdGVtcF9mcmVlKHplcm8pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorfQorUUZBUklUSDMoYWRkZikKK1FGQVJJVEgzKHN1YmYpCitRRkFSSVRI MyhtdWxmKQorUUZBUklUSDMoZGl2ZikKK1FGQVJJVEgzKGFkZGcpCitRRkFSSVRIMyhzdWJn KQorUUZBUklUSDMobXVsZykKK1FGQVJJVEgzKGRpdmcpCitRRkFSSVRIMyhhZGRzKQorUUZB UklUSDMoc3VicykKK1FGQVJJVEgzKG11bHMpCitRRkFSSVRIMyhkaXZzKQorUUZBUklUSDMo YWRkdCkKK1FGQVJJVEgzKHN1YnQpCitRRkFSSVRIMyhtdWx0KQorUUZBUklUSDMoZGl2dCkK Kwogc3RhdGljIGlubGluZSB1aW50NjRfdCB6YXBub3RfbWFzayh1aW50OF90IGxpdCkKIHsK ICAgICB1aW50NjRfdCBtYXNrID0gMDsKQEAgLTE2MDcsNyArMTY0Niw3IEBAIHN0YXRpYyBp bmxpbmUgaW50IHRyYW5zbGF0ZV9vbmUoRGlzYXNDb250ZXh0ICpjdHgsIHVpbnQzMl90IGlu c24pCiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAweDE0OgotICAgICAg ICBzd2l0Y2ggKGZwZm4pIHsgLyogZjExICYgMHgzRiAqLworICAgICAgICBzd2l0Y2ggKGZw Zm4pIHsgLyogZm4xMSAmIDB4M0YgKi8KICAgICAgICAgY2FzZSAweDA0OgogICAgICAgICAg ICAgLyogSVRPRlMgKi8KICAgICAgICAgICAgIGlmICghKGN0eC0+YW1hc2sgJiBBTUFTS19G SVgpKQpAQCAtMTYyNiwxMyArMTY2NSwxMyBAQCBzdGF0aWMgaW5saW5lIGludCB0cmFuc2xh dGVfb25lKERpc2FzQ29udGV4dCAqY3R4LCB1aW50MzJfdCBpbnNuKQogICAgICAgICAgICAg LyogU1FSVEYgKi8KICAgICAgICAgICAgIGlmICghKGN0eC0+YW1hc2sgJiBBTUFTS19GSVgp KQogICAgICAgICAgICAgICAgIGdvdG8gaW52YWxpZF9vcGM7Ci0gICAgICAgICAgICBnZW5f ZnNxcnRmKHJiLCByYyk7CisgICAgICAgICAgICBnZW5fZnNxcnRmKHJiLCByYywgZm4xMSk7 CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAweDBCOgogICAgICAgICAgICAg LyogU1FSVFMgKi8KICAgICAgICAgICAgIGlmICghKGN0eC0+YW1hc2sgJiBBTUFTS19GSVgp KQogICAgICAgICAgICAgICAgIGdvdG8gaW52YWxpZF9vcGM7Ci0gICAgICAgICAgICBnZW5f ZnNxcnRzKHJiLCByYyk7CisgICAgICAgICAgICBnZW5fZnNxcnRzKHJiLCByYywgZm4xMSk7 CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAweDE0OgogICAgICAgICAgICAg LyogSVRPRkYgKi8KQEAgLTE2NjMsMTMgKzE3MDIsMTMgQEAgc3RhdGljIGlubGluZSBpbnQg dHJhbnNsYXRlX29uZShEaXNhc0NvbnRleHQgKmN0eCwgdWludDMyX3QgaW5zbikKICAgICAg ICAgICAgIC8qIFNRUlRHICovCiAgICAgICAgICAgICBpZiAoIShjdHgtPmFtYXNrICYgQU1B U0tfRklYKSkKICAgICAgICAgICAgICAgICBnb3RvIGludmFsaWRfb3BjOwotICAgICAgICAg ICAgZ2VuX2ZzcXJ0ZyhyYiwgcmMpOworICAgICAgICAgICAgZ2VuX2ZzcXJ0ZyhyYiwgcmMs IGZuMTEpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMHgwMkI6CiAgICAg ICAgICAgICAvKiBTUVJUVCAqLwogICAgICAgICAgICAgaWYgKCEoY3R4LT5hbWFzayAmIEFN QVNLX0ZJWCkpCiAgICAgICAgICAgICAgICAgZ290byBpbnZhbGlkX29wYzsKLSAgICAgICAg ICAgIGdlbl9mc3FydHQocmIsIHJjKTsKKyAgICAgICAgICAgIGdlbl9mc3FydHQocmIsIHJj LCBmbjExKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAg ICAgICAgZ290byBpbnZhbGlkX29wYzsKQEAgLTE2NzcsNDcgKzE3MTYsNDIgQEAgc3RhdGlj IGlubGluZSBpbnQgdHJhbnNsYXRlX29uZShEaXNhc0NvbnRleHQgKmN0eCwgdWludDMyX3Qg aW5zbikKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAweDE1OgogICAgICAgICAvKiBWQVgg ZmxvYXRpbmcgcG9pbnQgKi8KLSAgICAgICAgLyogWFhYOiByb3VuZGluZyBtb2RlIGFuZCB0 cmFwIGFyZSBpZ25vcmVkICghKSAqLwotICAgICAgICBzd2l0Y2ggKGZwZm4pIHsgLyogZjEx ICYgMHgzRiAqLworICAgICAgICBzd2l0Y2ggKGZwZm4pIHsgLyogZm4xMSAmIDB4M0YgKi8K ICAgICAgICAgY2FzZSAweDAwOgogICAgICAgICAgICAgLyogQURERiAqLwotICAgICAgICAg ICAgZ2VuX2ZhZGRmKHJhLCByYiwgcmMpOworICAgICAgICAgICAgZ2VuX2ZhZGRmKHJhLCBy YiwgcmMsIGZuMTEpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMHgwMToK ICAgICAgICAgICAgIC8qIFNVQkYgKi8KLSAgICAgICAgICAgIGdlbl9mc3ViZihyYSwgcmIs IHJjKTsKKyAgICAgICAgICAgIGdlbl9mc3ViZihyYSwgcmIsIHJjLCBmbjExKTsKICAgICAg ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDB4MDI6CiAgICAgICAgICAgICAvKiBNVUxG ICovCi0gICAgICAgICAgICBnZW5fZm11bGYocmEsIHJiLCByYyk7CisgICAgICAgICAgICBn ZW5fZm11bGYocmEsIHJiLCByYywgZm4xMSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg ICAgY2FzZSAweDAzOgogICAgICAgICAgICAgLyogRElWRiAqLwotICAgICAgICAgICAgZ2Vu X2ZkaXZmKHJhLCByYiwgcmMpOworICAgICAgICAgICAgZ2VuX2ZkaXZmKHJhLCByYiwgcmMs IGZuMTEpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMHgxRToKICAgICAg ICAgICAgIC8qIENWVERHICovCi0jaWYgMCAvLyBUT0RPCi0gICAgICAgICAgICBnZW5fZmN2 dGRnKHJiLCByYyk7Ci0jZWxzZQorICAgICAgICAgICAgLyogVE9ETyAqLwogICAgICAgICAg ICAgZ290byBpbnZhbGlkX29wYzsKLSNlbmRpZgotICAgICAgICAgICAgYnJlYWs7CiAgICAg ICAgIGNhc2UgMHgyMDoKICAgICAgICAgICAgIC8qIEFEREcgKi8KLSAgICAgICAgICAgIGdl bl9mYWRkZyhyYSwgcmIsIHJjKTsKKyAgICAgICAgICAgIGdlbl9mYWRkZyhyYSwgcmIsIHJj LCBmbjExKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDB4MjE6CiAgICAg ICAgICAgICAvKiBTVUJHICovCi0gICAgICAgICAgICBnZW5fZnN1YmcocmEsIHJiLCByYyk7 CisgICAgICAgICAgICBnZW5fZnN1YmcocmEsIHJiLCByYywgZm4xMSk7CiAgICAgICAgICAg ICBicmVhazsKICAgICAgICAgY2FzZSAweDIyOgogICAgICAgICAgICAgLyogTVVMRyAqLwot ICAgICAgICAgICAgZ2VuX2ZtdWxnKHJhLCByYiwgcmMpOworICAgICAgICAgICAgZ2VuX2Zt dWxnKHJhLCByYiwgcmMsIGZuMTEpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh c2UgMHgyMzoKICAgICAgICAgICAgIC8qIERJVkcgKi8KLSAgICAgICAgICAgIGdlbl9mZGl2 ZyhyYSwgcmIsIHJjKTsKKyAgICAgICAgICAgIGdlbl9mZGl2ZyhyYSwgcmIsIHJjLCBmbjEx KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDB4MjU6CiAgICAgICAgICAg ICAvKiBDTVBHRVEgKi8KQEAgLTE3MzMsMjcgKzE3NjcsMjMgQEAgc3RhdGljIGlubGluZSBp bnQgdHJhbnNsYXRlX29uZShEaXNhc0NvbnRleHQgKmN0eCwgdWludDMyX3QgaW5zbikKICAg ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDB4MkM6CiAgICAgICAgICAgICAvKiBD VlRHRiAqLwotICAgICAgICAgICAgZ2VuX2ZjdnRnZihyYiwgcmMpOworICAgICAgICAgICAg Z2VuX2ZjdnRnZihyYiwgcmMsIGZuMTEpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg IGNhc2UgMHgyRDoKICAgICAgICAgICAgIC8qIENWVEdEICovCi0jaWYgMCAvLyBUT0RPCi0g ICAgICAgICAgICBnZW5fZmN2dGdkKHJiLCByYyk7Ci0jZWxzZQorICAgICAgICAgICAgLyog VE9ETyAqLwogICAgICAgICAgICAgZ290byBpbnZhbGlkX29wYzsKLSNlbmRpZgotICAgICAg ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMHgyRjoKICAgICAgICAgICAgIC8qIENWVEdR ICovCi0gICAgICAgICAgICBnZW5fZmN2dGdxKHJiLCByYyk7CisgICAgICAgICAgICBnZW5f ZmN2dGdxKHJiLCByYywgZm4xMSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz ZSAweDNDOgogICAgICAgICAgICAgLyogQ1ZUUUYgKi8KLSAgICAgICAgICAgIGdlbl9mY3Z0 cWYocmIsIHJjKTsKKyAgICAgICAgICAgIGdlbl9mY3Z0cWYocmIsIHJjLCBmbjExKTsKICAg ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDB4M0U6CiAgICAgICAgICAgICAvKiBD VlRRRyAqLwotICAgICAgICAgICAgZ2VuX2ZjdnRxZyhyYiwgcmMpOworICAgICAgICAgICAg Z2VuX2ZjdnRxZyhyYiwgcmMsIGZuMTEpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg IGRlZmF1bHQ6CiAgICAgICAgICAgICBnb3RvIGludmFsaWRfb3BjOwpAQCAtMTc2MSwzOSAr MTc5MSwzOCBAQCBzdGF0aWMgaW5saW5lIGludCB0cmFuc2xhdGVfb25lKERpc2FzQ29udGV4 dCAqY3R4LCB1aW50MzJfdCBpbnNuKQogICAgICAgICBicmVhazsKICAgICBjYXNlIDB4MTY6 CiAgICAgICAgIC8qIElFRUUgZmxvYXRpbmctcG9pbnQgKi8KLSAgICAgICAgLyogWFhYOiBy b3VuZGluZyBtb2RlIGFuZCB0cmFwcyBhcmUgaWdub3JlZCAoISkgKi8KLSAgICAgICAgc3dp dGNoIChmcGZuKSB7IC8qIGYxMSAmIDB4M0YgKi8KKyAgICAgICAgc3dpdGNoIChmcGZuKSB7 IC8qIGZuMTEgJiAweDNGICovCiAgICAgICAgIGNhc2UgMHgwMDoKICAgICAgICAgICAgIC8q IEFERFMgKi8KLSAgICAgICAgICAgIGdlbl9mYWRkcyhyYSwgcmIsIHJjKTsKKyAgICAgICAg ICAgIGdlbl9mYWRkcyhyYSwgcmIsIHJjLCBmbjExKTsKICAgICAgICAgICAgIGJyZWFrOwog ICAgICAgICBjYXNlIDB4MDE6CiAgICAgICAgICAgICAvKiBTVUJTICovCi0gICAgICAgICAg ICBnZW5fZnN1YnMocmEsIHJiLCByYyk7CisgICAgICAgICAgICBnZW5fZnN1YnMocmEsIHJi LCByYywgZm4xMSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAweDAyOgog ICAgICAgICAgICAgLyogTVVMUyAqLwotICAgICAgICAgICAgZ2VuX2ZtdWxzKHJhLCByYiwg cmMpOworICAgICAgICAgICAgZ2VuX2ZtdWxzKHJhLCByYiwgcmMsIGZuMTEpOwogICAgICAg ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMHgwMzoKICAgICAgICAgICAgIC8qIERJVlMg Ki8KLSAgICAgICAgICAgIGdlbl9mZGl2cyhyYSwgcmIsIHJjKTsKKyAgICAgICAgICAgIGdl bl9mZGl2cyhyYSwgcmIsIHJjLCBmbjExKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg ICBjYXNlIDB4MjA6CiAgICAgICAgICAgICAvKiBBRERUICovCi0gICAgICAgICAgICBnZW5f ZmFkZHQocmEsIHJiLCByYyk7CisgICAgICAgICAgICBnZW5fZmFkZHQocmEsIHJiLCByYywg Zm4xMSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAweDIxOgogICAgICAg ICAgICAgLyogU1VCVCAqLwotICAgICAgICAgICAgZ2VuX2ZzdWJ0KHJhLCByYiwgcmMpOwor ICAgICAgICAgICAgZ2VuX2ZzdWJ0KHJhLCByYiwgcmMsIGZuMTEpOwogICAgICAgICAgICAg YnJlYWs7CiAgICAgICAgIGNhc2UgMHgyMjoKICAgICAgICAgICAgIC8qIE1VTFQgKi8KLSAg ICAgICAgICAgIGdlbl9mbXVsdChyYSwgcmIsIHJjKTsKKyAgICAgICAgICAgIGdlbl9mbXVs dChyYSwgcmIsIHJjLCBmbjExKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl IDB4MjM6CiAgICAgICAgICAgICAvKiBESVZUICovCi0gICAgICAgICAgICBnZW5fZmRpdnQo cmEsIHJiLCByYyk7CisgICAgICAgICAgICBnZW5fZmRpdnQocmEsIHJiLCByYywgZm4xMSk7 CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAweDI0OgogICAgICAgICAgICAg LyogQ01QVFVOICovCkBAIC0xODEyLDI2ICsxODQxLDI1IEBAIHN0YXRpYyBpbmxpbmUgaW50 IHRyYW5zbGF0ZV9vbmUoRGlzYXNDb250ZXh0ICpjdHgsIHVpbnQzMl90IGluc24pCiAgICAg ICAgICAgICBnZW5fZmNtcHRsZShyYSwgcmIsIHJjKTsKICAgICAgICAgICAgIGJyZWFrOwog ICAgICAgICBjYXNlIDB4MkM6Ci0gICAgICAgICAgICAvKiBYWFg6IGluY29ycmVjdCAqLwog ICAgICAgICAgICAgaWYgKGZuMTEgPT0gMHgyQUMgfHwgZm4xMSA9PSAweDZBQykgewogICAg ICAgICAgICAgICAgIC8qIENWVFNUICovCi0gICAgICAgICAgICAgICAgZ2VuX2ZjdnRzdChy YiwgcmMpOworICAgICAgICAgICAgICAgIGdlbl9mY3Z0c3QocmIsIHJjLCBmbjExKTsKICAg ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLyogQ1ZUVFMgKi8KLSAgICAg ICAgICAgICAgICBnZW5fZmN2dHRzKHJiLCByYyk7CisgICAgICAgICAgICAgICAgZ2VuX2Zj dnR0cyhyYiwgcmMsIGZuMTEpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7 CiAgICAgICAgIGNhc2UgMHgyRjoKICAgICAgICAgICAgIC8qIENWVFRRICovCi0gICAgICAg ICAgICBnZW5fZmN2dHRxKHJiLCByYyk7CisgICAgICAgICAgICBnZW5fZmN2dHRxKHJiLCBy YywgZm4xMSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAweDNDOgogICAg ICAgICAgICAgLyogQ1ZUUVMgKi8KLSAgICAgICAgICAgIGdlbl9mY3Z0cXMocmIsIHJjKTsK KyAgICAgICAgICAgIGdlbl9mY3Z0cXMocmIsIHJjLCBmbjExKTsKICAgICAgICAgICAgIGJy ZWFrOwogICAgICAgICBjYXNlIDB4M0U6CiAgICAgICAgICAgICAvKiBDVlRRVCAqLwotICAg ICAgICAgICAgZ2VuX2ZjdnRxdChyYiwgcmMpOworICAgICAgICAgICAgZ2VuX2ZjdnRxdChy YiwgcmMsIGZuMTEpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAg ICAgICAgICAgICBnb3RvIGludmFsaWRfb3BjOwo= --------------060003010305060403070704--