Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rcN2j-002Uvq-PG for pgsql-hackers@arkaria.postgresql.org; Tue, 20 Feb 2024 10:08:06 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rcN2h-003FfT-Ua for pgsql-hackers@arkaria.postgresql.org; Tue, 20 Feb 2024 10:08:03 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rcN2g-003FfE-Eg for pgsql-hackers@lists.postgresql.org; Tue, 20 Feb 2024 10:08:03 +0000 Received: from mail-178177.yeah.net ([123.58.178.177]) by makus.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rcN2X-007iHF-6i for pgsql-hackers@lists.postgresql.org; Tue, 20 Feb 2024 10:08:00 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yeah.net; s=s110527; h=Content-Type:Message-ID:Date:MIME-Version:From: Subject; bh=3WrmOayx/3kGpJspuEi/4iP9KOrgA0KT18orqbgEv48=; b=SBfU WQYbGa9w6QSo0B67RRJ7onWCHQTGTpsEyC13Uc0DEFFD/UhyAEnev7Teqej+Icip yZdqDz0Z82wwvcD+ze7zAlgZQe1J/eWO21SNQ2qWYOzSKcE4lRwAEsGmo5NyUkOy gUOF9KDAsYXOqgjAijc4jft5vePlyaCs2eQKpBQ= Received: from [IPV6:2408:8210:2410:aeb0:14d5:c781:675f:31e3] (unknown [2408:8210:2410:aeb0:14d5:c781:675f:31e3]) by smtp3 (Coremail) with SMTP id sVUQrAD3X9fzedRlOm8oAA--.19237S2; Tue, 20 Feb 2024 18:07:48 +0800 (CST) Content-Type: multipart/mixed; boundary="------------OuitABupa6m0mOjMBmpJdoFO" Message-ID: Date: Tue, 20 Feb 2024 18:07:46 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US To: pgsql-hackers@lists.postgresql.org From: Quan Zongliang Subject: Change the bool member of the Query structure to bits X-CM-TRANSID:sVUQrAD3X9fzedRlOm8oAA--.19237S2 X-Coremail-Antispam: 1Uf129KBjDUn29KB7ZKAUJUUUU8529EdanIXcx71UUUUU7v73 VFW2AGmfu7bjvjm3AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvjxUVD7VDUUUU X-Originating-IP: [2408:8210:2410:aeb0:14d5:c781:675f:31e3] X-CM-SenderInfo: htxd06xrqjzxxdqjq5hhdkh0dhw/1tbiGBSKJF6NniXbFQAAsE List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------OuitABupa6m0mOjMBmpJdoFO Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit The Query structure has an increasing number of bool attributes. This is likely to increase in the future. And they have the same properties. Wouldn't it be better to store them in bits? Common statements don't use them, so they have little impact. This also saves memory space. -- Quan Zongliang --------------OuitABupa6m0mOjMBmpJdoFO Content-Type: text/plain; charset=UTF-8; name="query-bits.patch" Content-Disposition: attachment; filename="query-bits.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jIGIvY29u dHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMKaW5kZXggMTQyZGNmYzk5NS4uYTI4 ZDYyNTE0NyAxMDA2NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3 LmMKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMKQEAgLTMzNDEs NyArMzM0MSw3IEBAIGVzdGltYXRlX3BhdGhfY29zdF9zaXplKFBsYW5uZXJJbmZvICpyb290 LAogCiAJCQkvKiBDb2xsZWN0IHN0YXRpc3RpY3MgYWJvdXQgYWdncmVnYXRlcyBmb3IgZXN0 aW1hdGluZyBjb3N0cy4gKi8KIAkJCU1lbVNldCgmYWdnY29zdHMsIDAsIHNpemVvZihBZ2dD bGF1c2VDb3N0cykpOwotCQkJaWYgKHJvb3QtPnBhcnNlLT5oYXNBZ2dzKQorCQkJaWYgKFF1 ZXJ5SGFzQWdncyhyb290LT5wYXJzZSkpCiAJCQl7CiAJCQkJZ2V0X2FnZ19jbGF1c2VfY29z dHMocm9vdCwgQUdHU1BMSVRfU0lNUExFLCAmYWdnY29zdHMpOwogCQkJfQpAQCAtNjc2Miw3 ICs2NzYyLDcgQEAgYWRkX2ZvcmVpZ25fZ3JvdXBpbmdfcGF0aHMoUGxhbm5lckluZm8gKnJv b3QsIFJlbE9wdEluZm8gKmlucHV0X3JlbCwKIAlDb3N0CQl0b3RhbF9jb3N0OwogCiAJLyog Tm90aGluZyB0byBiZSBkb25lLCBpZiB0aGVyZSBpcyBubyBncm91cGluZyBvciBhZ2dyZWdh dGlvbiByZXF1aXJlZC4gKi8KLQlpZiAoIXBhcnNlLT5ncm91cENsYXVzZSAmJiAhcGFyc2Ut Pmdyb3VwaW5nU2V0cyAmJiAhcGFyc2UtPmhhc0FnZ3MgJiYKKwlpZiAoIXBhcnNlLT5ncm91 cENsYXVzZSAmJiAhcGFyc2UtPmdyb3VwaW5nU2V0cyAmJiAhUXVlcnlIYXNBZ2dzKHBhcnNl KSAmJgogCQkhcm9vdC0+aGFzSGF2aW5nUXVhbCkKIAkJcmV0dXJuOwogCkBAIC02ODU5LDcg KzY4NTksNyBAQCBhZGRfZm9yZWlnbl9vcmRlcmVkX3BhdGhzKFBsYW5uZXJJbmZvICpyb290 LCBSZWxPcHRJbmZvICppbnB1dF9yZWwsCiAJQXNzZXJ0KHBhcnNlLT5zb3J0Q2xhdXNlKTsK IAogCS8qIFdlIGRvbid0IHN1cHBvcnQgY2FzZXMgd2hlcmUgdGhlcmUgYXJlIGFueSBTUkZz IGluIHRoZSB0YXJnZXRsaXN0ICovCi0JaWYgKHBhcnNlLT5oYXNUYXJnZXRTUkZzKQorCWlm IChRdWVyeUhhc1RhcmdldFNSRnMocGFyc2UpKQogCQlyZXR1cm47CiAKIAkvKiBTYXZlIHRo ZSBpbnB1dF9yZWwgYXMgb3V0ZXJyZWwgaW4gZnBpbmZvICovCkBAIC03MDA3LDcgKzcwMDcs NyBAQCBhZGRfZm9yZWlnbl9maW5hbF9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0 SW5mbyAqaW5wdXRfcmVsLAogCQlyZXR1cm47CiAKIAkvKiBXZSBkb24ndCBzdXBwb3J0IGNh c2VzIHdoZXJlIHRoZXJlIGFyZSBhbnkgU1JGcyBpbiB0aGUgdGFyZ2V0bGlzdCAqLwotCWlm IChwYXJzZS0+aGFzVGFyZ2V0U1JGcykKKwlpZiAoUXVlcnlIYXNUYXJnZXRTUkZzKHBhcnNl KSkKIAkJcmV0dXJuOwogCiAJLyogU2F2ZSB0aGUgaW5wdXRfcmVsIGFzIG91dGVycmVsIGlu IGZwaW5mbyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmlldy5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvdmlldy5jCmluZGV4IGRjZTg5OGM3NTEuLmUzMjhiZDky NDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZpZXcuYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy92aWV3LmMKQEAgLTM5OCw3ICszOTgsNyBAQCBEZWZpbmVWaWV3 KFZpZXdTdG10ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkgKiBEZWZpbmVR dWVyeVJld3JpdGUoKSwgYnV0IHRoYXQgZnVuY3Rpb24gd2lsbCBjb21wbGFpbiBhYm91dCBh IGJvZ3VzIE9OCiAJICogU0VMRUNUIHJ1bGUsIGFuZCB3ZSdkIHJhdGhlciB0aGUgbWVzc2Fn ZSBjb21wbGFpbiBhYm91dCBhIHZpZXcuCiAJICovCi0JaWYgKHZpZXdQYXJzZS0+aGFzTW9k aWZ5aW5nQ1RFKQorCWlmIChRdWVyeUhhc01vZGlmeWluZ0NURSh2aWV3UGFyc2UpKQogCQll cmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9S VEVEKSwKIAkJCQkgZXJybXNnKCJ2aWV3cyBtdXN0IG5vdCBjb250YWluIGRhdGEtbW9kaWZ5 aW5nIHN0YXRlbWVudHMgaW4gV0lUSCIpKSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9mdW5jdGlvbnMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5j CmluZGV4IDBmODExZmQyZmMuLmNkYzk0ZjA4MmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0 aW9ucy5jCkBAIC00ODgsNyArNDg4LDcgQEAgaW5pdF9leGVjdXRpb25fc3RhdGUoTGlzdCAq cXVlcnlUcmVlX2xpc3QsCiAJCQkJLyogVXRpbGl0eSBjb21tYW5kcyByZXF1aXJlIG5vIHBs YW5uaW5nLiAqLwogCQkJCXN0bXQgPSBtYWtlTm9kZShQbGFubmVkU3RtdCk7CiAJCQkJc3Rt dC0+Y29tbWFuZFR5cGUgPSBDTURfVVRJTElUWTsKLQkJCQlzdG10LT5jYW5TZXRUYWcgPSBx dWVyeVRyZWUtPmNhblNldFRhZzsKKwkJCQlzdG10LT5jYW5TZXRUYWcgPSBRdWVyeUNhblNl dFRhZyhxdWVyeVRyZWUpOwogCQkJCXN0bXQtPnV0aWxpdHlTdG10ID0gcXVlcnlUcmVlLT51 dGlsaXR5U3RtdDsKIAkJCQlzdG10LT5zdG10X2xvY2F0aW9uID0gcXVlcnlUcmVlLT5zdG10 X2xvY2F0aW9uOwogCQkJCXN0bXQtPnN0bXRfbGVuID0gcXVlcnlUcmVlLT5zdG10X2xlbjsK QEAgLTU0MCw3ICs1NDAsNyBAQCBpbml0X2V4ZWN1dGlvbl9zdGF0ZShMaXN0ICpxdWVyeVRy ZWVfbGlzdCwKIAkJCW5ld2VzLT5zdG10ID0gc3RtdDsKIAkJCW5ld2VzLT5xZCA9IE5VTEw7 CiAKLQkJCWlmIChxdWVyeVRyZWUtPmNhblNldFRhZykKKwkJCWlmIChRdWVyeUNhblNldFRh ZyhxdWVyeVRyZWUpKQogCQkJCWxhc3R0YWdlcyA9IG5ld2VzOwogCiAJCQlwcmV2ZXMgPSBu ZXdlczsKQEAgLTE2NTAsNyArMTY1MCw3IEBAIGNoZWNrX3NxbF9mbl9yZXR2YWwoTGlzdCAq cXVlcnlUcmVlTGlzdHMsCiAJCXsKIAkJCVF1ZXJ5CSAgICpxID0gbGZpcnN0X25vZGUoUXVl cnksIGxjMik7CiAKLQkJCWlmIChxLT5jYW5TZXRUYWcpCisJCQlpZiAoUXVlcnlDYW5TZXRU YWcocSkpCiAJCQl7CiAJCQkJcGFyc2UgPSBxOwogCQkJCXBhcnNlX2NlbGwgPSBsYzI7CkBA IC0xOTM0LDcgKzE5MzQsNyBAQCB0bGlzdF9jb2VyY2lvbl9maW5pc2hlZDoKIAkJbmV3cXVl cnkgPSBtYWtlTm9kZShRdWVyeSk7CiAJCW5ld3F1ZXJ5LT5jb21tYW5kVHlwZSA9IENNRF9T RUxFQ1Q7CiAJCW5ld3F1ZXJ5LT5xdWVyeVNvdXJjZSA9IHBhcnNlLT5xdWVyeVNvdXJjZTsK LQkJbmV3cXVlcnktPmNhblNldFRhZyA9IHRydWU7CisJCVF1ZXJ5U2V0RmxhZyhuZXdxdWVy eSwgQ0FOX1NFVF9UQUcpOwogCQluZXdxdWVyeS0+dGFyZ2V0TGlzdCA9IHVwcGVyX3RsaXN0 OwogCiAJCS8qIFdlIG5lZWQgYSBtb2RlcmF0ZWx5IHJlYWxpc3RpYyBjb2xuYW1lcyBsaXN0 IGZvciB0aGUgc3VicXVlcnkgUlRFICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGF0aC9hbGxwYXRocy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxs cGF0aHMuYwppbmRleCBkNDA0ZmJmMjYyLi5iZDM1OWZkNjM2IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRocy5jCisrKyBiL3NyYy9iYWNrZW5kL29w dGltaXplci9wYXRoL2FsbHBhdGhzLmMKQEAgLTI1OTUsNyArMjU5NSw3IEBAIHNldF9zdWJx dWVyeV9wYXRobGlzdChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAogCQkJ CQkgKiBzbyB0aGVuIGl0IG1pZ2h0IGJlIHVzZWZ1bCB0byB1c2UgZm9yIHRoZSBXaW5kb3dB Z2cncwogCQkJCQkgKiBydW5Db25kaXRpb24uCiAJCQkJCSAqLwotCQkJCQlpZiAoIXN1YnF1 ZXJ5LT5oYXNXaW5kb3dGdW5jcyB8fAorCQkJCQlpZiAoIVF1ZXJ5SGFzV2luZG93RnVuY3Mo c3VicXVlcnkpIHx8CiAJCQkJCQljaGVja19hbmRfcHVzaF93aW5kb3dfcXVhbHMoc3VicXVl cnksIHJ0ZSwgcnRpLCBjbGF1c2UsCiAJCQkJCQkJCQkJCQkJJnJ1bl9jb25kX2F0dHJzKSkK IAkJCQkJewpAQCAtMjYzMyw3ICsyNjMzLDcgQEAgc2V0X3N1YnF1ZXJ5X3BhdGhsaXN0KFBs YW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAJICogd2UnZCBiZXR0ZXIgdGVs bCB0aGUgc3VicXVlcnkgdG8gcGxhbiBmb3IgZnVsbCByZXRyaWV2YWwuIChYWFggVGhpcwog CSAqIGNvdWxkIHByb2JhYmx5IGJlIG1hZGUgbW9yZSBpbnRlbGxpZ2VudCAuLi4pCiAJICov Ci0JaWYgKHBhcnNlLT5oYXNBZ2dzIHx8CisJaWYgKFF1ZXJ5SGFzQWdncyhwYXJzZSkgfHwK IAkJcGFyc2UtPmdyb3VwQ2xhdXNlIHx8CiAJCXBhcnNlLT5ncm91cGluZ1NldHMgfHwKIAkJ cm9vdC0+aGFzSGF2aW5nUXVhbCB8fApAQCAtMzYwNCw4ICszNjA0LDggQEAgc3VicXVlcnlf aXNfcHVzaGRvd25fc2FmZShRdWVyeSAqc3VicXVlcnksIFF1ZXJ5ICp0b3BxdWVyeSwKIAog CS8qIENoZWNrIHBvaW50cyAzLCA0LCBhbmQgNSAqLwogCWlmIChzdWJxdWVyeS0+ZGlzdGlu Y3RDbGF1c2UgfHwKLQkJc3VicXVlcnktPmhhc1dpbmRvd0Z1bmNzIHx8Ci0JCXN1YnF1ZXJ5 LT5oYXNUYXJnZXRTUkZzKQorCQlRdWVyeUhhc1dpbmRvd0Z1bmNzKHN1YnF1ZXJ5KSB8fAor CQlRdWVyeUhhc1RhcmdldFNSRnMoc3VicXVlcnkpKQogCQlzYWZldHlJbmZvLT51bnNhZmVW b2xhdGlsZSA9IHRydWU7CiAKIAkvKgpAQCAtMzcyNiw3ICszNzI2LDcgQEAgY2hlY2tfb3V0 cHV0X2V4cHJlc3Npb25zKFF1ZXJ5ICpzdWJxdWVyeSwgcHVzaGRvd25fc2FmZXR5X2luZm8g KnNhZmV0eUluZm8pCiAJCQljb250aW51ZTsJCQkvKiBpZ25vcmUgcmVzanVuayBjb2x1bW5z ICovCiAKIAkJLyogRnVuY3Rpb25zIHJldHVybmluZyBzZXRzIGFyZSB1bnNhZmUgKHBvaW50 IDEpICovCi0JCWlmIChzdWJxdWVyeS0+aGFzVGFyZ2V0U1JGcyAmJgorCQlpZiAoUXVlcnlI YXNUYXJnZXRTUkZzKHN1YnF1ZXJ5KSAmJgogCQkJKHNhZmV0eUluZm8tPnVuc2FmZUZsYWdz W3RsZS0+cmVzbm9dICYKIAkJCSBVTlNBRkVfSEFTX1NFVF9GVU5DKSA9PSAwICYmCiAJCQll eHByZXNzaW9uX3JldHVybnNfc2V0KChOb2RlICopIHRsZS0+ZXhwcikpCkBAIC0zNzQ1LDcg KzM3NDUsNyBAQCBjaGVja19vdXRwdXRfZXhwcmVzc2lvbnMoUXVlcnkgKnN1YnF1ZXJ5LCBw dXNoZG93bl9zYWZldHlfaW5mbyAqc2FmZXR5SW5mbykKIAkJfQogCiAJCS8qIElmIHN1YnF1 ZXJ5IHVzZXMgRElTVElOQ1QgT04sIGNoZWNrIHBvaW50IDMgKi8KLQkJaWYgKHN1YnF1ZXJ5 LT5oYXNEaXN0aW5jdE9uICYmCisJCWlmIChRdWVyeUhhc0Rpc3RpbmN0T24oc3VicXVlcnkp ICYmCiAJCQkoc2FmZXR5SW5mby0+dW5zYWZlRmxhZ3NbdGxlLT5yZXNub10gJgogCQkJIFVO U0FGRV9OT1RJTl9ESVNUSU5DVE9OX0NMQVVTRSkgPT0gMCAmJgogCQkJIXRhcmdldElzSW5T b3J0TGlzdCh0bGUsIEludmFsaWRPaWQsIHN1YnF1ZXJ5LT5kaXN0aW5jdENsYXVzZSkpCkBA IC0zNzU2LDcgKzM3NTYsNyBAQCBjaGVja19vdXRwdXRfZXhwcmVzc2lvbnMoUXVlcnkgKnN1 YnF1ZXJ5LCBwdXNoZG93bl9zYWZldHlfaW5mbyAqc2FmZXR5SW5mbykKIAkJfQogCiAJCS8q IElmIHN1YnF1ZXJ5IHVzZXMgd2luZG93IGZ1bmN0aW9ucywgY2hlY2sgcG9pbnQgNCAqLwot CQlpZiAoc3VicXVlcnktPmhhc1dpbmRvd0Z1bmNzICYmCisJCWlmIChRdWVyeUhhc1dpbmRv d0Z1bmNzKHN1YnF1ZXJ5KSAmJgogCQkJKHNhZmV0eUluZm8tPnVuc2FmZUZsYWdzW3RsZS0+ cmVzbm9dICYKIAkJCSBVTlNBRkVfTk9USU5fRElTVElOQ1RPTl9DTEFVU0UpID09IDAgJiYK IAkJCSF0YXJnZXRJc0luQWxsUGFydGl0aW9uTGlzdHModGxlLCBzdWJxdWVyeSkpCkBAIC0z OTg1LDE0ICszOTg1LDE0IEBAIHN1YnF1ZXJ5X3B1c2hfcXVhbChRdWVyeSAqc3VicXVlcnks IFJhbmdlVGJsRW50cnkgKnJ0ZSwgSW5kZXggcnRpLCBOb2RlICpxdWFsKQogCQlxdWFsID0g UmVwbGFjZVZhcnNGcm9tVGFyZ2V0TGlzdChxdWFsLCBydGksIDAsIHJ0ZSwKIAkJCQkJCQkJ CQkgc3VicXVlcnktPnRhcmdldExpc3QsCiAJCQkJCQkJCQkJIFJFUExBQ0VWQVJTX1JFUE9S VF9FUlJPUiwgMCwKLQkJCQkJCQkJCQkgJnN1YnF1ZXJ5LT5oYXNTdWJMaW5rcyk7CisJCQkJ CQkJCQkJICZzdWJxdWVyeS0+ZmxhZ3MpOwogCiAJCS8qCiAJCSAqIE5vdyBhdHRhY2ggdGhl IHF1YWwgdG8gdGhlIHByb3BlciBwbGFjZTogbm9ybWFsbHkgV0hFUkUsIGJ1dCBpZiB0aGUK IAkJICogc3VicXVlcnkgdXNlcyBncm91cGluZyBvciBhZ2dyZWdhdGlvbiwgcHV0IGl0IGlu IEhBVklORyAoc2luY2UgdGhlCiAJCSAqIHF1YWwgcmVhbGx5IHJlZmVycyB0byB0aGUgZ3Jv dXAtcmVzdWx0IHJvd3MpLgogCQkgKi8KLQkJaWYgKHN1YnF1ZXJ5LT5oYXNBZ2dzIHx8IHN1 YnF1ZXJ5LT5ncm91cENsYXVzZSB8fCBzdWJxdWVyeS0+Z3JvdXBpbmdTZXRzIHx8IHN1YnF1 ZXJ5LT5oYXZpbmdRdWFsKQorCQlpZiAoUXVlcnlIYXNBZ2dzKHN1YnF1ZXJ5KSB8fCBzdWJx dWVyeS0+Z3JvdXBDbGF1c2UgfHwgc3VicXVlcnktPmdyb3VwaW5nU2V0cyB8fCBzdWJxdWVy eS0+aGF2aW5nUXVhbCkKIAkJCXN1YnF1ZXJ5LT5oYXZpbmdRdWFsID0gbWFrZV9hbmRfcXVh bChzdWJxdWVyeS0+aGF2aW5nUXVhbCwgcXVhbCk7CiAJCWVsc2UKIAkJCXN1YnF1ZXJ5LT5q b2ludHJlZS0+cXVhbHMgPQpAQCAtNDA4Niw3ICs0MDg2LDcgQEAgcmVtb3ZlX3VudXNlZF9z dWJxdWVyeV9vdXRwdXRzKFF1ZXJ5ICpzdWJxdWVyeSwgUmVsT3B0SW5mbyAqcmVsLAogCSAq IElmIHN1YnF1ZXJ5IGhhcyByZWd1bGFyIERJU1RJTkNUIChub3QgRElTVElOQ1QgT04pLCB3 ZSdyZSB3YXN0aW5nIG91cgogCSAqIHRpbWU6IGFsbCBpdHMgb3V0cHV0IGNvbHVtbnMgbXVz dCBiZSB1c2VkIGluIHRoZSBkaXN0aW5jdENsYXVzZS4KIAkgKi8KLQlpZiAoc3VicXVlcnkt PmRpc3RpbmN0Q2xhdXNlICYmICFzdWJxdWVyeS0+aGFzRGlzdGluY3RPbikKKwlpZiAoc3Vi cXVlcnktPmRpc3RpbmN0Q2xhdXNlICYmICFRdWVyeUhhc0Rpc3RpbmN0T24oc3VicXVlcnkp KQogCQlyZXR1cm47CiAKIAkvKgpAQCAtNDE0Nyw3ICs0MTQ3LDcgQEAgcmVtb3ZlX3VudXNl ZF9zdWJxdWVyeV9vdXRwdXRzKFF1ZXJ5ICpzdWJxdWVyeSwgUmVsT3B0SW5mbyAqcmVsLAog CQkgKiBJZiBpdCBjb250YWlucyBhIHNldC1yZXR1cm5pbmcgZnVuY3Rpb24sIHdlIGNhbid0 IHJlbW92ZSBpdCBzaW5jZQogCQkgKiB0aGF0IGNvdWxkIGNoYW5nZSB0aGUgbnVtYmVyIG9m IHJvd3MgcmV0dXJuZWQgYnkgdGhlIHN1YnF1ZXJ5LgogCQkgKi8KLQkJaWYgKHN1YnF1ZXJ5 LT5oYXNUYXJnZXRTUkZzICYmCisJCWlmIChRdWVyeUhhc1RhcmdldFNSRnMoc3VicXVlcnkp ICYmCiAJCQlleHByZXNzaW9uX3JldHVybnNfc2V0KHRleHByKSkKIAkJCWNvbnRpbnVlOwog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9hbmFseXplam9pbnMu YyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2FuYWx5emVqb2lucy5jCmluZGV4IGU0 OTRhY2Q1MWEuLjYxOGZlZDI1ZmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL2FuYWx5emVqb2lucy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFu L2FuYWx5emVqb2lucy5jCkBAIC0xMDEwLDE0ICsxMDEwLDE0IEBAIGJvb2wKIHF1ZXJ5X3N1 cHBvcnRzX2Rpc3RpbmN0bmVzcyhRdWVyeSAqcXVlcnkpCiB7CiAJLyogU1JGcyBicmVhayBk aXN0aW5jdG5lc3MgZXhjZXB0IHdpdGggRElTVElOQ1QsIHNlZSBiZWxvdyAqLwotCWlmIChx dWVyeS0+aGFzVGFyZ2V0U1JGcyAmJiBxdWVyeS0+ZGlzdGluY3RDbGF1c2UgPT0gTklMKQor CWlmIChRdWVyeUhhc1RhcmdldFNSRnMocXVlcnkpICYmIHF1ZXJ5LT5kaXN0aW5jdENsYXVz ZSA9PSBOSUwpCiAJCXJldHVybiBmYWxzZTsKIAogCS8qIGNoZWNrIGZvciBmZWF0dXJlcyB3 ZSBjYW4gcHJvdmUgZGlzdGluY3RuZXNzIHdpdGggKi8KIAlpZiAocXVlcnktPmRpc3RpbmN0 Q2xhdXNlICE9IE5JTCB8fAogCQlxdWVyeS0+Z3JvdXBDbGF1c2UgIT0gTklMIHx8CiAJCXF1 ZXJ5LT5ncm91cGluZ1NldHMgIT0gTklMIHx8Ci0JCXF1ZXJ5LT5oYXNBZ2dzIHx8CisJCVF1 ZXJ5SGFzQWdncyhxdWVyeSkgfHwKIAkJcXVlcnktPmhhdmluZ1F1YWwgfHwKIAkJcXVlcnkt PnNldE9wZXJhdGlvbnMpCiAJCXJldHVybiB0cnVlOwpAQCAtMTA4MSw3ICsxMDgxLDcgQEAg cXVlcnlfaXNfZGlzdGluY3RfZm9yKFF1ZXJ5ICpxdWVyeSwgTGlzdCAqY29sbm9zLCBMaXN0 ICpvcGlkcykKIAkgKiBjb2x1bW5zLCBpdCB3b3VsZCBiZSBzYWZlIGJlY2F1c2UgdGhleSdk IGJlIGV4cGFuZGVkIGJlZm9yZSBncm91cGluZy4KIAkgKiBCdXQgaXQgZG9lc24ndCBjdXJy ZW50bHkgc2VlbSB3b3J0aCB0aGUgZWZmb3J0IHRvIGNoZWNrIGZvciB0aGF0LikKIAkgKi8K LQlpZiAocXVlcnktPmhhc1RhcmdldFNSRnMpCisJaWYgKFF1ZXJ5SGFzVGFyZ2V0U1JGcyhx dWVyeSkpCiAJCXJldHVybiBmYWxzZTsKIAogCS8qCkBAIC0xMTMxLDcgKzExMzEsNyBAQCBx dWVyeV9pc19kaXN0aW5jdF9mb3IoUXVlcnkgKnF1ZXJ5LCBMaXN0ICpjb2xub3MsIExpc3Qg Km9waWRzKQogCQkgKiBJZiB3ZSBoYXZlIG5vIEdST1VQIEJZLCBidXQgZG8gaGF2ZSBhZ2dy ZWdhdGVzIG9yIEhBVklORywgdGhlbiB0aGUKIAkJICogcmVzdWx0IGlzIGF0IG1vc3Qgb25l IHJvdyBzbyBpdCdzIHN1cmVseSB1bmlxdWUsIGZvciBhbnkgb3BlcmF0b3JzLgogCQkgKi8K LQkJaWYgKHF1ZXJ5LT5oYXNBZ2dzIHx8IHF1ZXJ5LT5oYXZpbmdRdWFsKQorCQlpZiAoUXVl cnlIYXNBZ2dzKHF1ZXJ5KSB8fCBxdWVyeS0+aGF2aW5nUXVhbCkKIAkJCXJldHVybiB0cnVl OwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbmFn Zy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbmFnZy5jCmluZGV4IDcwMGMw YjdhYzcuLmZlNWRhYWEzMzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL3BsYW5hZ2cuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFuYWdn LmMKQEAgLTg0LDcgKzg0LDcgQEAgcHJlcHJvY2Vzc19taW5tYXhfYWdncmVnYXRlcyhQbGFu bmVySW5mbyAqcm9vdCkKIAlBc3NlcnQocm9vdC0+bWlubWF4X2FnZ3MgPT0gTklMKTsKIAog CS8qIE5vdGhpbmcgdG8gZG8gaWYgcXVlcnkgaGFzIG5vIGFnZ3JlZ2F0ZXMgKi8KLQlpZiAo IXBhcnNlLT5oYXNBZ2dzKQorCWlmICghUXVlcnlIYXNBZ2dzKHBhcnNlKSkKIAkJcmV0dXJu OwogCiAJQXNzZXJ0KCFwYXJzZS0+c2V0T3BlcmF0aW9ucyk7CS8qIHNob3VsZG4ndCBnZXQg aGVyZSBpZiBhIHNldG9wICovCkBAIC05OCw3ICs5OCw3IEBAIHByZXByb2Nlc3NfbWlubWF4 X2FnZ3JlZ2F0ZXMoUGxhbm5lckluZm8gKnJvb3QpCiAJICogc28gdGhlcmUncyBub3QgbXVj aCBwb2ludCBpbiBvcHRpbWl6aW5nIE1JTi9NQVguCiAJICovCiAJaWYgKHBhcnNlLT5ncm91 cENsYXVzZSB8fCBsaXN0X2xlbmd0aChwYXJzZS0+Z3JvdXBpbmdTZXRzKSA+IDEgfHwKLQkJ cGFyc2UtPmhhc1dpbmRvd0Z1bmNzKQorCQlRdWVyeUhhc1dpbmRvd0Z1bmNzKHBhcnNlKSkK IAkJcmV0dXJuOwogCiAJLyoKQEAgLTM3OSw4ICszNzksOCBAQCBidWlsZF9taW5tYXhfcGF0 aChQbGFubmVySW5mbyAqcm9vdCwgTWluTWF4QWdnSW5mbyAqbW1pbmZvLAogCXBhcnNlLT5o YXZpbmdRdWFsID0gTlVMTDsKIAlzdWJyb290LT5oYXNIYXZpbmdRdWFsID0gZmFsc2U7CiAJ cGFyc2UtPmRpc3RpbmN0Q2xhdXNlID0gTklMOwotCXBhcnNlLT5oYXNEaXN0aW5jdE9uID0g ZmFsc2U7Ci0JcGFyc2UtPmhhc0FnZ3MgPSBmYWxzZTsKKwlRdWVyeUNsZWFyRmxhZyhwYXJz ZSwgSEFTX0RJU1RJTkNUX09OKTsKKwlRdWVyeUNsZWFyRmxhZyhwYXJzZSwgSEFTX0FHR1Mp OwogCiAJLyogQnVpbGQgInRhcmdldCBJUyBOT1QgTlVMTCIgZXhwcmVzc2lvbiAqLwogCW50 ZXN0ID0gbWFrZU5vZGUoTnVsbFRlc3QpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vcGxhbm5lci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxh bm5lci5jCmluZGV4IGJlNGUxODI4NjkuLmExODgzMjUwN2YgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYworKysgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9wbGFubmVyLmMKQEAgLTM0OCw3ICszNDgsNyBAQCBzdGFuZGFyZF9wbGFu bmVyKFF1ZXJ5ICpwYXJzZSwgY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nLCBpbnQgY3Vyc29y T3B0aW9ucywKIAlpZiAoKGN1cnNvck9wdGlvbnMgJiBDVVJTT1JfT1BUX1BBUkFMTEVMX09L KSAhPSAwICYmCiAJCUlzVW5kZXJQb3N0bWFzdGVyICYmCiAJCXBhcnNlLT5jb21tYW5kVHlw ZSA9PSBDTURfU0VMRUNUICYmCi0JCSFwYXJzZS0+aGFzTW9kaWZ5aW5nQ1RFICYmCisJCSFR dWVyeUhhc01vZGlmeWluZ0NURShwYXJzZSkgJiYKIAkJbWF4X3BhcmFsbGVsX3dvcmtlcnNf cGVyX2dhdGhlciA+IDAgJiYKIAkJIUlzUGFyYWxsZWxXb3JrZXIoKSkKIAl7CkBAIC01NDAs OCArNTQwLDggQEAgc3RhbmRhcmRfcGxhbm5lcihRdWVyeSAqcGFyc2UsIGNvbnN0IGNoYXIg KnF1ZXJ5X3N0cmluZywgaW50IGN1cnNvck9wdGlvbnMsCiAJcmVzdWx0LT5jb21tYW5kVHlw ZSA9IHBhcnNlLT5jb21tYW5kVHlwZTsKIAlyZXN1bHQtPnF1ZXJ5SWQgPSBwYXJzZS0+cXVl cnlJZDsKIAlyZXN1bHQtPmhhc1JldHVybmluZyA9IChwYXJzZS0+cmV0dXJuaW5nTGlzdCAh PSBOSUwpOwotCXJlc3VsdC0+aGFzTW9kaWZ5aW5nQ1RFID0gcGFyc2UtPmhhc01vZGlmeWlu Z0NURTsKLQlyZXN1bHQtPmNhblNldFRhZyA9IHBhcnNlLT5jYW5TZXRUYWc7CisJcmVzdWx0 LT5oYXNNb2RpZnlpbmdDVEUgPSBRdWVyeUhhc01vZGlmeWluZ0NURShwYXJzZSk7CisJcmVz dWx0LT5jYW5TZXRUYWcgPSBRdWVyeUNhblNldFRhZyhwYXJzZSk7CiAJcmVzdWx0LT50cmFu c2llbnRQbGFuID0gZ2xvYi0+dHJhbnNpZW50UGxhbjsKIAlyZXN1bHQtPmRlcGVuZHNPblJv bGUgPSBnbG9iLT5kZXBlbmRzT25Sb2xlOwogCXJlc3VsdC0+cGFyYWxsZWxNb2RlTmVlZGVk ID0gZ2xvYi0+cGFyYWxsZWxNb2RlTmVlZGVkOwpAQCAtNzA3LDcgKzcwNyw3IEBAIHN1YnF1 ZXJ5X3BsYW5uZXIoUGxhbm5lckdsb2JhbCAqZ2xvYiwgUXVlcnkgKnBhcnNlLAogCSAqIGlu dG8gc3VicXVlcmllczsgaWYgd2UgcHVsbCB1cCBhbnkgc3VicXVlcmllcyBiZWxvdywgdGhl aXIgU3ViTGlua3MgYXJlCiAJICogcHJvY2Vzc2VkIGp1c3QgYmVmb3JlIHB1bGxpbmcgdGhl bSB1cC4KIAkgKi8KLQlpZiAocGFyc2UtPmhhc1N1YkxpbmtzKQorCWlmIChRdWVyeUhhc1N1 YkxpbmtzKHBhcnNlKSkKIAkJcHVsbF91cF9zdWJsaW5rcyhyb290KTsKIAogCS8qCkBAIC04 MzQsOCArODM0LDEyIEBAIHN1YnF1ZXJ5X3BsYW5uZXIoUGxhbm5lckdsb2JhbCAqZ2xvYiwg UXVlcnkgKnBhcnNlLAogCQkJCQkJCSAgRVhQUktJTkRfVEFSR0VUKTsKIAogCS8qIENvbnN0 YW50LWZvbGRpbmcgbWlnaHQgaGF2ZSByZW1vdmVkIGFsbCBzZXQtcmV0dXJuaW5nIGZ1bmN0 aW9ucyAqLwotCWlmIChwYXJzZS0+aGFzVGFyZ2V0U1JGcykKLQkJcGFyc2UtPmhhc1Rhcmdl dFNSRnMgPSBleHByZXNzaW9uX3JldHVybnNfc2V0KChOb2RlICopIHBhcnNlLT50YXJnZXRM aXN0KTsKKwlpZiAoUXVlcnlIYXNUYXJnZXRTUkZzKHBhcnNlKSkKKwl7CisJCVF1ZXJ5Q29u ZFNldEZsYWcocGFyc2UsCisJCQkJCWV4cHJlc3Npb25fcmV0dXJuc19zZXQoKE5vZGUgKikg cGFyc2UtPnRhcmdldExpc3QpLAorCQkJCQlIQVNfVEFSR0VUX1NSRlMpOworCX0KIAogCW5l d1dpdGhDaGVja09wdGlvbnMgPSBOSUw7CiAJZm9yZWFjaChsLCBwYXJzZS0+d2l0aENoZWNr T3B0aW9ucykKQEAgLTExODksNyArMTE5Myw3IEBAIHByZXByb2Nlc3NfZXhwcmVzc2lvbihQ bGFubmVySW5mbyAqcm9vdCwgTm9kZSAqZXhwciwgaW50IGtpbmQpCiAJfQogCiAJLyogRXhw YW5kIFN1YkxpbmtzIHRvIFN1YlBsYW5zICovCi0JaWYgKHJvb3QtPnBhcnNlLT5oYXNTdWJM aW5rcykKKwlpZiAoUXVlcnlIYXNTdWJMaW5rcyhyb290LT5wYXJzZSkpCiAJCWV4cHIgPSBT U19wcm9jZXNzX3N1YmxpbmtzKHJvb3QsIGV4cHIsIChraW5kID09IEVYUFJLSU5EX1FVQUwp KTsKIAogCS8qCkBAIC0xMzY4LDcgKzEzNzIsNyBAQCBncm91cGluZ19wbGFubmVyKFBsYW5u ZXJJbmZvICpyb290LCBkb3VibGUgdHVwbGVfZnJhY3Rpb24pCiAJCQlpc19wYXJhbGxlbF9z YWZlKHJvb3QsIChOb2RlICopIGZpbmFsX3RhcmdldC0+ZXhwcnMpOwogCiAJCS8qIFRoZSBz ZXRvcCByZXN1bHQgdGxpc3QgY291bGRuJ3QgY29udGFpbiBhbnkgU1JGcyAqLwotCQlBc3Nl cnQoIXBhcnNlLT5oYXNUYXJnZXRTUkZzKTsKKwkJQXNzZXJ0KCFRdWVyeUhhc1RhcmdldFNS RnMocGFyc2UpKTsKIAkJZmluYWxfdGFyZ2V0cyA9IGZpbmFsX3RhcmdldHNfY29udGFpbl9z cmZzID0gTklMOwogCiAJCS8qCkBAIC0xNDQ2LDcgKzE0NTAsNyBAQCBncm91cGluZ19wbGFu bmVyKFBsYW5uZXJJbmZvICpyb290LCBkb3VibGUgdHVwbGVfZnJhY3Rpb24pCiAJCSAqIHBh dGh0YXJnZXRzLCBlbHNlIHNvbWUgY29waWVzIG9mIHRoZSBBZ2dyZWYgbm9kZXMgbWlnaHQg ZXNjYXBlCiAJCSAqIGJlaW5nIG1hcmtlZC4KIAkJICovCi0JCWlmIChwYXJzZS0+aGFzQWdn cykKKwkJaWYgKFF1ZXJ5SGFzQWdncyhwYXJzZSkpCiAJCXsKIAkJCXByZXByb2Nlc3NfYWdn cmVmcyhyb290LCAoTm9kZSAqKSByb290LT5wcm9jZXNzZWRfdGxpc3QpOwogCQkJcHJlcHJv Y2Vzc19hZ2dyZWZzKHJvb3QsIChOb2RlICopIHBhcnNlLT5oYXZpbmdRdWFsKTsKQEAgLTE0 NTgsNyArMTQ2Miw3IEBAIGdyb3VwaW5nX3BsYW5uZXIoUGxhbm5lckluZm8gKnJvb3QsIGRv dWJsZSB0dXBsZV9mcmFjdGlvbikKIAkJICogdG9vLikgIE5vdGUgdGhhdCB0aGV5IGNvdWxk IGFsbCBoYXZlIGJlZW4gZWxpbWluYXRlZCBieSBjb25zdGFudAogCQkgKiBmb2xkaW5nLCBp biB3aGljaCBjYXNlIHdlIGRvbid0IG5lZWQgdG8gZG8gYW55IG1vcmUgd29yay4KIAkJICov Ci0JCWlmIChwYXJzZS0+aGFzV2luZG93RnVuY3MpCisJCWlmIChRdWVyeUhhc1dpbmRvd0Z1 bmNzKHBhcnNlKSkKIAkJewogCQkJd2ZsaXN0cyA9IGZpbmRfd2luZG93X2Z1bmN0aW9ucygo Tm9kZSAqKSByb290LT5wcm9jZXNzZWRfdGxpc3QsCiAJCQkJCQkJCQkJCWxpc3RfbGVuZ3Ro KHBhcnNlLT53aW5kb3dDbGF1c2UpKTsKQEAgLTE0NzQsNyArMTQ3OCw3IEBAIGdyb3VwaW5n X3BsYW5uZXIoUGxhbm5lckluZm8gKnJvb3QsIGRvdWJsZSB0dXBsZV9mcmFjdGlvbikKIAkJ CQlhY3RpdmVXaW5kb3dzID0gc2VsZWN0X2FjdGl2ZV93aW5kb3dzKHJvb3QsIHdmbGlzdHMp OwogCQkJfQogCQkJZWxzZQotCQkJCXBhcnNlLT5oYXNXaW5kb3dGdW5jcyA9IGZhbHNlOwor CQkJCVF1ZXJ5Q2xlYXJGbGFnKHBhcnNlLCBIQVNfV0lORE9XX0ZVTkNTKTsKIAkJfQogCiAJ CS8qCkBAIC0xNDgzLDcgKzE0ODcsNyBAQCBncm91cGluZ19wbGFubmVyKFBsYW5uZXJJbmZv ICpyb290LCBkb3VibGUgdHVwbGVfZnJhY3Rpb24pCiAJCSAqIHRoYXQgaXMgbmVlZGVkIGlu IE1JTi9NQVgtb3B0aW1pemFibGUgY2FzZXMgd2lsbCBoYXZlIHRvIGJlCiAJCSAqIGR1cGxp Y2F0ZWQgaW4gcGxhbmFnZy5jLgogCQkgKi8KLQkJaWYgKHBhcnNlLT5oYXNBZ2dzKQorCQlp ZiAoUXVlcnlIYXNBZ2dzKHBhcnNlKSkKIAkJCXByZXByb2Nlc3NfbWlubWF4X2FnZ3JlZ2F0 ZXMocm9vdCk7CiAKIAkJLyoKQEAgLTE0OTUsOSArMTQ5OSw5IEBAIGdyb3VwaW5nX3BsYW5u ZXIoUGxhbm5lckluZm8gKnJvb3QsIGRvdWJsZSB0dXBsZV9mcmFjdGlvbikKIAkJaWYgKHBh cnNlLT5ncm91cENsYXVzZSB8fAogCQkJcGFyc2UtPmdyb3VwaW5nU2V0cyB8fAogCQkJcGFy c2UtPmRpc3RpbmN0Q2xhdXNlIHx8Ci0JCQlwYXJzZS0+aGFzQWdncyB8fAotCQkJcGFyc2Ut Pmhhc1dpbmRvd0Z1bmNzIHx8Ci0JCQlwYXJzZS0+aGFzVGFyZ2V0U1JGcyB8fAorCQkJUXVl cnlIYXNBZ2dzKHBhcnNlKSB8fAorCQkJUXVlcnlIYXNXaW5kb3dGdW5jcyhwYXJzZSkgfHwK KwkJCVF1ZXJ5SGFzVGFyZ2V0U1JGcyhwYXJzZSkgfHwKIAkJCXJvb3QtPmhhc0hhdmluZ1F1 YWwpCiAJCQlyb290LT5saW1pdF90dXBsZXMgPSAtMS4wOwogCQllbHNlCkBAIC0xNTczLDcg KzE1NzcsNyBAQCBncm91cGluZ19wbGFubmVyKFBsYW5uZXJJbmZvICpyb290LCBkb3VibGUg dHVwbGVfZnJhY3Rpb24pCiAJCSAqIHNob3VsZCBlbWl0IGdyb3VwaW5nX3RhcmdldC4KIAkJ ICovCiAJCWhhdmVfZ3JvdXBpbmcgPSAocGFyc2UtPmdyb3VwQ2xhdXNlIHx8IHBhcnNlLT5n cm91cGluZ1NldHMgfHwKLQkJCQkJCSBwYXJzZS0+aGFzQWdncyB8fCByb290LT5oYXNIYXZp bmdRdWFsKTsKKwkJCQkJCSBRdWVyeUhhc0FnZ3MocGFyc2UpIHx8IHJvb3QtPmhhc0hhdmlu Z1F1YWwpOwogCQlpZiAoaGF2ZV9ncm91cGluZykKIAkJewogCQkJc2NhbmpvaW5fdGFyZ2V0 ID0gbWFrZV9ncm91cF9pbnB1dF90YXJnZXQocm9vdCwgZmluYWxfdGFyZ2V0KTsKQEAgLTE1 OTIsNyArMTU5Niw3IEBAIGdyb3VwaW5nX3BsYW5uZXIoUGxhbm5lckluZm8gKnJvb3QsIGRv dWJsZSB0dXBsZV9mcmFjdGlvbikKIAkJICogZWFjaCBvZiB0aGUgbmFtZWQgdGFyZ2V0cyB3 aXRoIGEgU1JGLWZyZWUgdmVyc2lvbiwgYW5kIHJlbWVtYmVyIHRoZQogCQkgKiBsaXN0IG9m IGFkZGl0aW9uYWwgcHJvamVjdGlvbiBzdGVwcyB3ZSBuZWVkIHRvIGFkZCBhZnRlcndhcmRz LgogCQkgKi8KLQkJaWYgKHBhcnNlLT5oYXNUYXJnZXRTUkZzKQorCQlpZiAoUXVlcnlIYXNU YXJnZXRTUkZzKHBhcnNlKSkKIAkJewogCQkJLyogZmluYWxfdGFyZ2V0IGRvZXNuJ3QgcmVj b21wdXRlIGFueSBTUkZzIGluIHNvcnRfaW5wdXRfdGFyZ2V0ICovCiAJCQlzcGxpdF9wYXRo dGFyZ2V0X2F0X3NyZnMocm9vdCwgZmluYWxfdGFyZ2V0LCBzb3J0X2lucHV0X3RhcmdldCwK QEAgLTE2NjQsNyArMTY2OCw3IEBAIGdyb3VwaW5nX3BsYW5uZXIoUGxhbm5lckluZm8gKnJv b3QsIGRvdWJsZSB0dXBsZV9mcmFjdGlvbikKIAkJCQkJCQkJCQkJCWdyb3VwaW5nX3Rhcmdl dF9wYXJhbGxlbF9zYWZlLAogCQkJCQkJCQkJCQkJZ3NldF9kYXRhKTsKIAkJCS8qIEZpeCB0 aGluZ3MgdXAgaWYgZ3JvdXBpbmdfdGFyZ2V0IGNvbnRhaW5zIFNSRnMgKi8KLQkJCWlmIChw YXJzZS0+aGFzVGFyZ2V0U1JGcykKKwkJCWlmIChRdWVyeUhhc1RhcmdldFNSRnMocGFyc2Up KQogCQkJCWFkanVzdF9wYXRoc19mb3Jfc3Jmcyhyb290LCBjdXJyZW50X3JlbCwKIAkJCQkJ CQkJCSAgZ3JvdXBpbmdfdGFyZ2V0cywKIAkJCQkJCQkJCSAgZ3JvdXBpbmdfdGFyZ2V0c19j b250YWluX3NyZnMpOwpAQCAtMTY4NCw3ICsxNjg4LDcgQEAgZ3JvdXBpbmdfcGxhbm5lcihQ bGFubmVySW5mbyAqcm9vdCwgZG91YmxlIHR1cGxlX2ZyYWN0aW9uKQogCQkJCQkJCQkJCQkg IHdmbGlzdHMsCiAJCQkJCQkJCQkJCSAgYWN0aXZlV2luZG93cyk7CiAJCQkvKiBGaXggdGhp bmdzIHVwIGlmIHNvcnRfaW5wdXRfdGFyZ2V0IGNvbnRhaW5zIFNSRnMgKi8KLQkJCWlmIChw YXJzZS0+aGFzVGFyZ2V0U1JGcykKKwkJCWlmIChRdWVyeUhhc1RhcmdldFNSRnMocGFyc2Up KQogCQkJCWFkanVzdF9wYXRoc19mb3Jfc3Jmcyhyb290LCBjdXJyZW50X3JlbCwKIAkJCQkJ CQkJCSAgc29ydF9pbnB1dF90YXJnZXRzLAogCQkJCQkJCQkJICBzb3J0X2lucHV0X3Rhcmdl dHNfY29udGFpbl9zcmZzKTsKQEAgLTE3MTgsNyArMTcyMiw3IEBAIGdyb3VwaW5nX3BsYW5u ZXIoUGxhbm5lckluZm8gKnJvb3QsIGRvdWJsZSB0dXBsZV9mcmFjdGlvbikKIAkJCQkJCQkJ CQkgICBoYXZlX3Bvc3Rwb25lZF9zcmZzID8gLTEuMCA6CiAJCQkJCQkJCQkJICAgbGltaXRf dHVwbGVzKTsKIAkJLyogRml4IHRoaW5ncyB1cCBpZiBmaW5hbF90YXJnZXQgY29udGFpbnMg U1JGcyAqLwotCQlpZiAocGFyc2UtPmhhc1RhcmdldFNSRnMpCisJCWlmIChRdWVyeUhhc1Rh cmdldFNSRnMocGFyc2UpKQogCQkJYWRqdXN0X3BhdGhzX2Zvcl9zcmZzKHJvb3QsIGN1cnJl bnRfcmVsLAogCQkJCQkJCQkgIGZpbmFsX3RhcmdldHMsCiAJCQkJCQkJCSAgZmluYWxfdGFy Z2V0c19jb250YWluX3NyZnMpOwpAQCAtMTk1NSw3ICsxOTU5LDcgQEAgZ3JvdXBpbmdfcGxh bm5lcihQbGFubmVySW5mbyAqcm9vdCwgZG91YmxlIHR1cGxlX2ZyYWN0aW9uKQogCQkJCWNy ZWF0ZV9tb2RpZnl0YWJsZV9wYXRoKHJvb3QsIGZpbmFsX3JlbCwKIAkJCQkJCQkJCQlwYXRo LAogCQkJCQkJCQkJCXBhcnNlLT5jb21tYW5kVHlwZSwKLQkJCQkJCQkJCQlwYXJzZS0+Y2Fu U2V0VGFnLAorCQkJCQkJCQkJCVF1ZXJ5Q2FuU2V0VGFnKHBhcnNlKSwKIAkJCQkJCQkJCQlw YXJzZS0+cmVzdWx0UmVsYXRpb24sCiAJCQkJCQkJCQkJcm9vdFJlbGF0aW9uLAogCQkJCQkJ CQkJCXJvb3QtPnBhcnRDb2xzVXBkYXRlZCwKQEAgLTM1NzMsNyArMzU3Nyw3IEBAIGdldF9u dW1iZXJfb2ZfZ3JvdXBzKFBsYW5uZXJJbmZvICpyb290LAogCQkvKiBFbXB0eSBncm91cGlu ZyBzZXRzIC4uLiBvbmUgcmVzdWx0IHJvdyBmb3IgZWFjaCBvbmUgKi8KIAkJZE51bUdyb3Vw cyA9IGxpc3RfbGVuZ3RoKHBhcnNlLT5ncm91cGluZ1NldHMpOwogCX0KLQllbHNlIGlmIChw YXJzZS0+aGFzQWdncyB8fCByb290LT5oYXNIYXZpbmdRdWFsKQorCWVsc2UgaWYgKFF1ZXJ5 SGFzQWdncyhwYXJzZSkgfHwgcm9vdC0+aGFzSGF2aW5nUXVhbCkKIAl7CiAJCS8qIFBsYWlu IGFnZ3JlZ2F0aW9uLCBvbmUgcmVzdWx0IHJvdyAqLwogCQlkTnVtR3JvdXBzID0gMTsKQEAg LTM3NzYsNyArMzc4MCw3IEBAIGlzX2RlZ2VuZXJhdGVfZ3JvdXBpbmcoUGxhbm5lckluZm8g KnJvb3QpCiAJUXVlcnkJICAgKnBhcnNlID0gcm9vdC0+cGFyc2U7CiAKIAlyZXR1cm4gKHJv b3QtPmhhc0hhdmluZ1F1YWwgfHwgcGFyc2UtPmdyb3VwaW5nU2V0cykgJiYKLQkJIXBhcnNl LT5oYXNBZ2dzICYmIHBhcnNlLT5ncm91cENsYXVzZSA9PSBOSUw7CisJCSFRdWVyeUhhc0Fn Z3MocGFyc2UpICYmIHBhcnNlLT5ncm91cENsYXVzZSA9PSBOSUw7CiB9CiAKIC8qCkBAIC00 NjY1LDcgKzQ2NjksNyBAQCBjcmVhdGVfcGFydGlhbF9kaXN0aW5jdF9wYXRocyhQbGFubmVy SW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVsLAogCXBhcnNlID0gcm9vdC0+cGFy c2U7CiAKIAkvKiBjYW4ndCBkbyBwYXJhbGxlbCBESVNUSU5DVCBPTiAqLwotCWlmIChwYXJz ZS0+aGFzRGlzdGluY3RPbikKKwlpZiAoUXVlcnlIYXNEaXN0aW5jdE9uKHBhcnNlKSkKIAkJ cmV0dXJuOwogCiAJcGFydGlhbF9kaXN0aW5jdF9yZWwgPSBmZXRjaF91cHBlcl9yZWwocm9v dCwgVVBQRVJSRUxfUEFSVElBTF9ESVNUSU5DVCwKQEAgLTQ4NTUsNyArNDg1OSw3IEBAIGNy ZWF0ZV9maW5hbF9kaXN0aW5jdF9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5m byAqaW5wdXRfcmVsLAogCWJvb2wJCWFsbG93X2hhc2g7CiAKIAkvKiBFc3RpbWF0ZSBudW1i ZXIgb2YgZGlzdGluY3Qgcm93cyB0aGVyZSB3aWxsIGJlICovCi0JaWYgKHBhcnNlLT5ncm91 cENsYXVzZSB8fCBwYXJzZS0+Z3JvdXBpbmdTZXRzIHx8IHBhcnNlLT5oYXNBZ2dzIHx8CisJ aWYgKHBhcnNlLT5ncm91cENsYXVzZSB8fCBwYXJzZS0+Z3JvdXBpbmdTZXRzIHx8IFF1ZXJ5 SGFzQWdncyhwYXJzZSkgfHwKIAkJcm9vdC0+aGFzSGF2aW5nUXVhbCkKIAl7CiAJCS8qCkBA IC00OTAyLDcgKzQ5MDYsNyBAQCBjcmVhdGVfZmluYWxfZGlzdGluY3RfcGF0aHMoUGxhbm5l ckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmlucHV0X3JlbCwKIAkJTGlzdENlbGwgICAqbGM7 CiAJCWRvdWJsZQkJbGltaXR0dXBsZXMgPSByb290LT5kaXN0aW5jdF9wYXRoa2V5cyA9PSBO SUwgPyAxLjAgOiAtMS4wOwogCi0JCWlmIChwYXJzZS0+aGFzRGlzdGluY3RPbiAmJgorCQlp ZiAoUXVlcnlIYXNEaXN0aW5jdE9uKHBhcnNlKSAmJgogCQkJbGlzdF9sZW5ndGgocm9vdC0+ ZGlzdGluY3RfcGF0aGtleXMpIDwKIAkJCWxpc3RfbGVuZ3RoKHJvb3QtPnNvcnRfcGF0aGtl eXMpKQogCQkJbmVlZGVkX3BhdGhrZXlzID0gcm9vdC0+c29ydF9wYXRoa2V5czsKQEAgLTUw MTEsNyArNTAxNSw3IEBAIGNyZWF0ZV9maW5hbF9kaXN0aW5jdF9wYXRocyhQbGFubmVySW5m byAqcm9vdCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVsLAogCSAqLwogCWlmIChkaXN0aW5jdF9y ZWwtPnBhdGhsaXN0ID09IE5JTCkKIAkJYWxsb3dfaGFzaCA9IHRydWU7CQkvKiB3ZSBoYXZl IG5vIGFsdGVybmF0aXZlcyAqLwotCWVsc2UgaWYgKHBhcnNlLT5oYXNEaXN0aW5jdE9uIHx8 ICFlbmFibGVfaGFzaGFnZykKKwllbHNlIGlmIChRdWVyeUhhc0Rpc3RpbmN0T24ocGFyc2Up IHx8ICFlbmFibGVfaGFzaGFnZykKIAkJYWxsb3dfaGFzaCA9IGZhbHNlOwkJLyogcG9saWN5 LWJhc2VkIGRlY2lzaW9uIG5vdCB0byBoYXNoICovCiAJZWxzZQogCQlhbGxvd19oYXNoID0g dHJ1ZTsJCS8qIGRlZmF1bHQgKi8KQEAgLTU4MzksNyArNTg0Myw3IEBAIG1ha2Vfd2luZG93 X2lucHV0X3RhcmdldChQbGFubmVySW5mbyAqcm9vdCwKIAlpbnQJCQlpOwogCUxpc3RDZWxs ICAgKmxjOwogCi0JQXNzZXJ0KHJvb3QtPnBhcnNlLT5oYXNXaW5kb3dGdW5jcyk7CisJQXNz ZXJ0KFF1ZXJ5SGFzV2luZG93RnVuY3Mocm9vdC0+cGFyc2UpKTsKIAogCS8qCiAJICogQ29s bGVjdCB0aGUgc29ydGdyb3VwcmVmIG51bWJlcnMgb2Ygd2luZG93IFBBUlRJVElPTi9PUkRF UiBCWSBjbGF1c2VzCkBAIC02MTIzLDcgKzYxMjcsNyBAQCBtYWtlX3NvcnRfaW5wdXRfdGFy Z2V0KFBsYW5uZXJJbmZvICpyb290LAogCQkJICogQ2hlY2sgZm9yIFNSRiBvciB2b2xhdGls ZSBmdW5jdGlvbnMuICBDaGVjayB0aGUgU1JGIGNhc2UgZmlyc3QKIAkJCSAqIGJlY2F1c2Ug d2UgbXVzdCBrbm93IHdoZXRoZXIgd2UgaGF2ZSBhbnkgcG9zdHBvbmVkIFNSRnMuCiAJCQkg Ki8KLQkJCWlmIChwYXJzZS0+aGFzVGFyZ2V0U1JGcyAmJgorCQkJaWYgKFF1ZXJ5SGFzVGFy Z2V0U1JGcyhwYXJzZSkgJiYKIAkJCQlleHByZXNzaW9uX3JldHVybnNfc2V0KChOb2RlICop IGV4cHIpKQogCQkJewogCQkJCS8qIFdlJ2xsIGRlY2lkZSBiZWxvdyB3aGV0aGVyIHRoZXNl IGFyZSBwb3N0cG9uYWJsZSAqLwpAQCAtNjE2Myw3ICs2MTY3LDcgQEAgbWFrZV9zb3J0X2lu cHV0X3RhcmdldChQbGFubmVySW5mbyAqcm9vdCwKIAkJewogCQkJLyogRm9yIHNvcnRncm91 cHJlZiBjb2xzLCBqdXN0IGNoZWNrIGlmIGFueSBjb250YWluIFNSRnMgKi8KIAkJCWlmICgh aGF2ZV9zcmZfc29ydGNvbHMgJiYKLQkJCQlwYXJzZS0+aGFzVGFyZ2V0U1JGcyAmJgorCQkJ CVF1ZXJ5SGFzVGFyZ2V0U1JGcyhwYXJzZSkgJiYKIAkJCQlleHByZXNzaW9uX3JldHVybnNf c2V0KChOb2RlICopIGV4cHIpKQogCQkJCWhhdmVfc3JmX3NvcnRjb2xzID0gdHJ1ZTsKIAkJ fQpAQCAtNjg0NSw3ICs2ODQ5LDcgQEAgYWRkX3BhdGhzX3RvX2dyb3VwaW5nX3JlbChQbGFu bmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVsLAogCQkJCQkJCQkJCQkJcGF0 aCwgdHJ1ZSwgY2FuX2hhc2gsCiAJCQkJCQkJCQkJCQlnZCwgYWdnX2Nvc3RzLCBkTnVtR3Jv dXBzKTsKIAkJCQl9Ci0JCQkJZWxzZSBpZiAocGFyc2UtPmhhc0FnZ3MpCisJCQkJZWxzZSBp ZiAoUXVlcnlIYXNBZ2dzKHBhcnNlKSkKIAkJCQl7CiAJCQkJCS8qCiAJCQkJCSAqIFdlIGhh dmUgYWdncmVnYXRpb24sIHBvc3NpYmx5IHdpdGggcGxhaW4gR1JPVVAgQlkuIE1ha2UKQEAg LTY5MjAsNyArNjkyNCw3IEBAIGFkZF9wYXRoc190b19ncm91cGluZ19yZWwoUGxhbm5lcklu Zm8gKnJvb3QsIFJlbE9wdEluZm8gKmlucHV0X3JlbCwKIAkJCQkJaWYgKHBhdGggPT0gTlVM TCkKIAkJCQkJCWNvbnRpbnVlOwogCi0JCQkJCWlmIChwYXJzZS0+aGFzQWdncykKKwkJCQkJ aWYgKFF1ZXJ5SGFzQWdncyhwYXJzZSkpCiAJCQkJCQlhZGRfcGF0aChncm91cGVkX3JlbCwg KFBhdGggKikKIAkJCQkJCQkJIGNyZWF0ZV9hZ2dfcGF0aChyb290LAogCQkJCQkJCQkJCQkJ IGdyb3VwZWRfcmVsLApAQCAtNzEwNSw3ICs3MTA5LDcgQEAgY3JlYXRlX3BhcnRpYWxfZ3Jv dXBpbmdfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsCiAJCSAqLwogCQlNZW1TZXQoYWdnX3Bh cnRpYWxfY29zdHMsIDAsIHNpemVvZihBZ2dDbGF1c2VDb3N0cykpOwogCQlNZW1TZXQoYWdn X2ZpbmFsX2Nvc3RzLCAwLCBzaXplb2YoQWdnQ2xhdXNlQ29zdHMpKTsKLQkJaWYgKHBhcnNl LT5oYXNBZ2dzKQorCQlpZiAoUXVlcnlIYXNBZ2dzKHBhcnNlKSkKIAkJewogCQkJLyogcGFy dGlhbCBwaGFzZSAqLwogCQkJZ2V0X2FnZ19jbGF1c2VfY29zdHMocm9vdCwgQUdHU1BMSVRf SU5JVElBTF9TRVJJQUwsCkBAIC03MTM2LDcgKzcxNDAsNyBAQCBjcmVhdGVfcGFydGlhbF9n cm91cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9vdCwKIAlpZiAoY2FuX3NvcnQgJiYgY2hl YXBlc3RfdG90YWxfcGF0aCAhPSBOVUxMKQogCXsKIAkJLyogVGhpcyBzaG91bGQgaGF2ZSBi ZWVuIGNoZWNrZWQgcHJldmlvdXNseSAqLwotCQlBc3NlcnQocGFyc2UtPmhhc0FnZ3MgfHwg cGFyc2UtPmdyb3VwQ2xhdXNlKTsKKwkJQXNzZXJ0KFF1ZXJ5SGFzQWdncyhwYXJzZSkgfHwg cGFyc2UtPmdyb3VwQ2xhdXNlKTsKIAogCQkvKgogCQkgKiBVc2UgYW55IGF2YWlsYWJsZSBz dWl0YWJseS1zb3J0ZWQgcGF0aCBhcyBpbnB1dCwgYW5kIGFsc28gY29uc2lkZXIKQEAgLTcx NzEsNyArNzE3NSw3IEBAIGNyZWF0ZV9wYXJ0aWFsX2dyb3VwaW5nX3BhdGhzKFBsYW5uZXJJ bmZvICpyb290LAogCQkJCWlmIChwYXRoID09IE5VTEwpCiAJCQkJCWNvbnRpbnVlOwogCi0J CQkJaWYgKHBhcnNlLT5oYXNBZ2dzKQorCQkJCWlmIChRdWVyeUhhc0FnZ3MocGFyc2UpKQog CQkJCQlhZGRfcGF0aChwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwsIChQYXRoICopCiAJCQkJCQkJ IGNyZWF0ZV9hZ2dfcGF0aChyb290LAogCQkJCQkJCQkJCQkgcGFydGlhbGx5X2dyb3VwZWRf cmVsLApAQCAtNzIyOCw3ICs3MjMyLDcgQEAgY3JlYXRlX3BhcnRpYWxfZ3JvdXBpbmdfcGF0 aHMoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJaWYgKHBhdGggPT0gTlVMTCkKIAkJCQkJY29u dGludWU7CiAKLQkJCQlpZiAocGFyc2UtPmhhc0FnZ3MpCisJCQkJaWYgKFF1ZXJ5SGFzQWdn cyhwYXJzZSkpCiAJCQkJCWFkZF9wYXJ0aWFsX3BhdGgocGFydGlhbGx5X2dyb3VwZWRfcmVs LCAoUGF0aCAqKQogCQkJCQkJCQkJIGNyZWF0ZV9hZ2dfcGF0aChyb290LAogCQkJCQkJCQkJ CQkJCSBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwsCkBAIC03MjU4LDcgKzcyNjIsNyBAQCBjcmVh dGVfcGFydGlhbF9ncm91cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9vdCwKIAlpZiAoY2Fu X2hhc2ggJiYgY2hlYXBlc3RfdG90YWxfcGF0aCAhPSBOVUxMKQogCXsKIAkJLyogQ2hlY2tl ZCBhYm92ZSAqLwotCQlBc3NlcnQocGFyc2UtPmhhc0FnZ3MgfHwgcGFyc2UtPmdyb3VwQ2xh dXNlKTsKKwkJQXNzZXJ0KFF1ZXJ5SGFzQWdncyhwYXJzZSkgfHwgcGFyc2UtPmdyb3VwQ2xh dXNlKTsKIAogCQlhZGRfcGF0aChwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwsIChQYXRoICopCiAJ CQkJIGNyZWF0ZV9hZ2dfcGF0aChyb290LApAQCAtNzQwMSw3ICs3NDA1LDcgQEAgY2FuX3Bh cnRpYWxfYWdnKFBsYW5uZXJJbmZvICpyb290KQogewogCVF1ZXJ5CSAgICpwYXJzZSA9IHJv b3QtPnBhcnNlOwogCi0JaWYgKCFwYXJzZS0+aGFzQWdncyAmJiBwYXJzZS0+Z3JvdXBDbGF1 c2UgPT0gTklMKQorCWlmICghUXVlcnlIYXNBZ2dzKHBhcnNlKSAmJiBwYXJzZS0+Z3JvdXBD bGF1c2UgPT0gTklMKQogCXsKIAkJLyoKIAkJICogV2UgZG9uJ3Qga25vdyBob3cgdG8gZG8g cGFyYWxsZWwgYWdncmVnYXRpb24gdW5sZXNzIHdlIGhhdmUgZWl0aGVyCkBAIC03NTYwLDcg Kzc1NjQsNyBAQCBhcHBseV9zY2Fuam9pbl90YXJnZXRfdG9fcGF0aHMoUGxhbm5lckluZm8g KnJvb3QsCiAJICogY2hlYXBlc3QtcGF0aCBmaWVsZHMsIHdoaWNoIGlzIGEgZ29vZCB0aGlu ZyBiZWNhdXNlIHRoZXkncmUgYm9ndXMgcmlnaHQKIAkgKiBub3cuKQogCSAqLwotCWlmIChy b290LT5wYXJzZS0+aGFzVGFyZ2V0U1JGcykKKwlpZiAoUXVlcnlIYXNUYXJnZXRTUkZzKHJv b3QtPnBhcnNlKSkKIAkJYWRqdXN0X3BhdGhzX2Zvcl9zcmZzKHJvb3QsIHJlbCwKIAkJCQkJ CQkgIHNjYW5qb2luX3RhcmdldHMsCiAJCQkJCQkJICBzY2Fuam9pbl90YXJnZXRzX2NvbnRh aW5fc3Jmcyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRy ZWZzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKaW5kZXggMjJh MWZhMjlmMy4uM2M0NTQzMWQ4NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BsYW4vc2V0cmVmcy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJl ZnMuYwpAQCAtMzYwMCw3ICszNjAwLDcgQEAgZXh0cmFjdF9xdWVyeV9kZXBlbmRlbmNpZXNf d2Fsa2VyKE5vZGUgKm5vZGUsIFBsYW5uZXJJbmZvICpjb250ZXh0KQogCQl9CiAKIAkJLyog UmVtZW1iZXIgaWYgYW55IFF1ZXJ5IGhhcyBSTFMgcXVhbHMgYXBwbGllZCBieSByZXdyaXRl ciAqLwotCQlpZiAocXVlcnktPmhhc1Jvd1NlY3VyaXR5KQorCQlpZiAoUXVlcnlIYXNSb3dT ZWN1cml0eShxdWVyeSkpCiAJCQljb250ZXh0LT5nbG9iLT5kZXBlbmRzT25Sb2xlID0gdHJ1 ZTsKIAogCQkvKiBDb2xsZWN0IHJlbGF0aW9uIE9JRHMgaW4gdGhpcyBRdWVyeSdzIHJ0YWJs ZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc3Vic2VsZWN0 LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zdWJzZWxlY3QuYwppbmRleCA0N2Ux NDcyM2QyLi5lNjVhMWExNzQwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGxhbi9zdWJzZWxlY3QuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zdWJz ZWxlY3QuYwpAQCAtMTU2MiwxMSArMTU2MiwxMSBAQCBzaW1wbGlmeV9FWElTVFNfcXVlcnko UGxhbm5lckluZm8gKnJvb3QsIFF1ZXJ5ICpxdWVyeSkKIAkgKi8KIAlpZiAocXVlcnktPmNv bW1hbmRUeXBlICE9IENNRF9TRUxFQ1QgfHwKIAkJcXVlcnktPnNldE9wZXJhdGlvbnMgfHwK LQkJcXVlcnktPmhhc0FnZ3MgfHwKKwkJUXVlcnlIYXNBZ2dzKHF1ZXJ5KSB8fAogCQlxdWVy eS0+Z3JvdXBpbmdTZXRzIHx8Ci0JCXF1ZXJ5LT5oYXNXaW5kb3dGdW5jcyB8fAotCQlxdWVy eS0+aGFzVGFyZ2V0U1JGcyB8fAotCQlxdWVyeS0+aGFzTW9kaWZ5aW5nQ1RFIHx8CisJCVF1 ZXJ5SGFzV2luZG93RnVuY3MocXVlcnkpIHx8CisJCVF1ZXJ5SGFzVGFyZ2V0U1JGcyhxdWVy eSkgfHwKKwkJUXVlcnlIYXNNb2RpZnlpbmdDVEUocXVlcnkpIHx8CiAJCXF1ZXJ5LT5oYXZp bmdRdWFsIHx8CiAJCXF1ZXJ5LT5saW1pdE9mZnNldCB8fAogCQlxdWVyeS0+cm93TWFya3Mp CkBAIC0xNjE4LDcgKzE2MTgsNyBAQCBzaW1wbGlmeV9FWElTVFNfcXVlcnkoUGxhbm5lcklu Zm8gKnJvb3QsIFF1ZXJ5ICpxdWVyeSkKIAlxdWVyeS0+d2luZG93Q2xhdXNlID0gTklMOwog CXF1ZXJ5LT5kaXN0aW5jdENsYXVzZSA9IE5JTDsKIAlxdWVyeS0+c29ydENsYXVzZSA9IE5J TDsKLQlxdWVyeS0+aGFzRGlzdGluY3RPbiA9IGZhbHNlOworCVF1ZXJ5Q2xlYXJGbGFnKHF1 ZXJ5LCBIQVNfRElTVElOQ1RfT04pOwogCiAJcmV0dXJuIHRydWU7CiB9CkBAIC0xNzc5LDcg KzE3NzksNyBAQCBjb252ZXJ0X0VYSVNUU190b19BTlkoUGxhbm5lckluZm8gKnJvb3QsIFF1 ZXJ5ICpzdWJzZWxlY3QsCiAJaWYgKGNvbnRhaW5fdmFyc19vZl9sZXZlbCgoTm9kZSAqKSBu ZXdXaGVyZSwgMSkgfHwKIAkJY29udGFpbl92YXJzX29mX2xldmVsKChOb2RlICopIHJpZ2h0 YXJncywgMSkpCiAJCXJldHVybiBOVUxMOwotCWlmIChyb290LT5wYXJzZS0+aGFzQWdncyAm JgorCWlmIChRdWVyeUhhc0FnZ3Mocm9vdC0+cGFyc2UpICYmCiAJCShjb250YWluX2FnZ3Nf b2ZfbGV2ZWwoKE5vZGUgKikgbmV3V2hlcmUsIDEpIHx8CiAJCSBjb250YWluX2FnZ3Nfb2Zf bGV2ZWwoKE5vZGUgKikgcmlnaHRhcmdzLCAxKSkpCiAJCXJldHVybiBOVUxMOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcGpvaW50cmVlLmMgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwam9pbnRyZWUuYwppbmRleCBhYTgzZGQzNjM2 Li41Yjg1YWE4ZmY5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9w cmVwam9pbnRyZWUuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwam9p bnRyZWUuYwpAQCAtNDksNyArNDksNyBAQCB0eXBlZGVmIHN0cnVjdCBwdWxsdXBfcmVwbGFj ZV92YXJzX2NvbnRleHQKIAlSYW5nZVRibEVudHJ5ICp0YXJnZXRfcnRlOwkvKiBSVEUgb2Yg c3VicXVlcnkgKi8KIAlSZWxpZHMJCXJlbGlkczsJCQkvKiByZWxpZHMgd2l0aGluIHN1YnF1 ZXJ5LCBhcyBudW1iZXJlZCBhZnRlcgogCQkJCQkJCQkgKiBwdWxsdXAgKHNldCBvbmx5IGlm IHRhcmdldF9ydGUtPmxhdGVyYWwpICovCi0JYm9vbAkgICAqb3V0ZXJfaGFzU3ViTGlua3M7 CS8qIC0+IG91dGVyIHF1ZXJ5J3MgaGFzU3ViTGlua3MgKi8KKwlpbnQJCSAgICpvdXRlcl9m bGFnczsJLyogLT4gb3V0ZXIgcXVlcnkncyBmbGFncyAqLwogCWludAkJCXZhcm5vOwkJCS8q IHZhcm5vIG9mIHN1YnF1ZXJ5ICovCiAJYm9vbAkJd3JhcF9ub25fdmFyczsJLyogZG8gd2Ug bmVlZCBhbGwgbm9uLVZhciBvdXRwdXRzIHRvIGJlIFBIVnM/ICovCiAJTm9kZQkgICoqcnZf Y2FjaGU7CQkvKiBjYWNoZSBmb3IgcmVzdWx0cyB3aXRoIFBIVnMgKi8KQEAgLTE2OCw3ICsx NjgsNyBAQCB0cmFuc2Zvcm1fTUVSR0VfdG9fam9pbihRdWVyeSAqcGFyc2UpCiAJICogb3V0 ZXIgam9pbiBzbyB0aGF0IHdlIHByb2Nlc3MgYWxsIHVubWF0Y2hlZCB0dXBsZXMgZnJvbSB0 aGUgc291cmNlCiAJICogcmVsYXRpb24uICBJZiBub25lIGV4aXN0LCB3ZSBjYW4gdXNlIGFu IGlubmVyIGpvaW4uCiAJICovCi0JaWYgKHBhcnNlLT5tZXJnZVVzZU91dGVySm9pbikKKwlp ZiAoUXVlcnlNZXJnZVVzZU91dGVySm9pbihwYXJzZSkpCiAJCWpvaW50eXBlID0gSk9JTl9S SUdIVDsKIAllbHNlCiAJCWpvaW50eXBlID0gSk9JTl9JTk5FUjsKQEAgLTEwMjgsNyArMTAy OCw3IEBAIHB1bGxfdXBfc2ltcGxlX3N1YnF1ZXJ5KFBsYW5uZXJJbmZvICpyb290LCBOb2Rl ICpqdG5vZGUsIFJhbmdlVGJsRW50cnkgKnJ0ZSwKIAkgKiBQdWxsIHVwIGFueSBTdWJMaW5r cyB3aXRoaW4gdGhlIHN1YnF1ZXJ5J3MgcXVhbHMsIHNvIHRoYXQgd2UgZG9uJ3QKIAkgKiBs ZWF2ZSB1bm9wdGltaXplZCBTdWJMaW5rcyBiZWhpbmQuCiAJICovCi0JaWYgKHN1YnF1ZXJ5 LT5oYXNTdWJMaW5rcykKKwlpZiAoUXVlcnlIYXNTdWJMaW5rcyhzdWJxdWVyeSkpCiAJCXB1 bGxfdXBfc3VibGlua3Moc3Vicm9vdCk7CiAKIAkvKgpAQCAtMTExOSw3ICsxMTE5LDcgQEAg cHVsbF91cF9zaW1wbGVfc3VicXVlcnkoUGxhbm5lckluZm8gKnJvb3QsIE5vZGUgKmp0bm9k ZSwgUmFuZ2VUYmxFbnRyeSAqcnRlLAogCQkJCQkJCQkJCQkJICB0cnVlLCB0cnVlKTsKIAll bHNlCQkJCQkJLyogd29uJ3QgbmVlZCByZWxpZHMgKi8KIAkJcnZjb250ZXh0LnJlbGlkcyA9 IE5VTEw7Ci0JcnZjb250ZXh0Lm91dGVyX2hhc1N1YkxpbmtzID0gJnBhcnNlLT5oYXNTdWJM aW5rczsKKwlydmNvbnRleHQub3V0ZXJfZmxhZ3MgPSAmcGFyc2UtPmZsYWdzOwogCXJ2Y29u dGV4dC52YXJubyA9IHZhcm5vOwogCS8qIHRoaXMgZmxhZyB3aWxsIGJlIHNldCBiZWxvdywg aWYgbmVlZGVkICovCiAJcnZjb250ZXh0LndyYXBfbm9uX3ZhcnMgPSBmYWxzZTsKQEAgLTEy NjAsMTAgKzEyNjAsMTQgQEAgcHVsbF91cF9zaW1wbGVfc3VicXVlcnkoUGxhbm5lckluZm8g KnJvb3QsIE5vZGUgKmp0bm9kZSwgUmFuZ2VUYmxFbnRyeSAqcnRlLAogCSAqIGFuZCBWQUxV RVMgUlRFcyBjb3BpZWQgdXAgZnJvbSB0aGUgc3VicXVlcnkuICBTbyBpdCdzIG5lY2Vzc2Fy eSB0byBjb3B5CiAJICogc3VicXVlcnktPmhhc1N1YkxpbmtzIGFueXdheS4gIFBlcmhhcHMg dGhpcyBjYW4gYmUgaW1wcm92ZWQgc29tZWRheS4KIAkgKi8KLQlwYXJzZS0+aGFzU3ViTGlu a3MgfD0gc3VicXVlcnktPmhhc1N1YkxpbmtzOworCVF1ZXJ5Q29uZFNldEZsYWcocGFyc2Us CisJCQlRdWVyeUhhc1N1YkxpbmtzKHBhcnNlKSB8fCBRdWVyeUhhc1N1YkxpbmtzKHN1YnF1 ZXJ5KSwKKwkJCUhBU19TVUJfTElOS1MpOwogCiAJLyogSWYgc3VicXVlcnkgaGFkIGFueSBS TFMgY29uZGl0aW9ucywgbm93IG1haW4gcXVlcnkgZG9lcyB0b28gKi8KLQlwYXJzZS0+aGFz Um93U2VjdXJpdHkgfD0gc3VicXVlcnktPmhhc1Jvd1NlY3VyaXR5OworCVF1ZXJ5Q29uZFNl dEZsYWcocGFyc2UsCisJCQlRdWVyeUhhc1Jvd1NlY3VyaXR5KHBhcnNlKSB8fCBRdWVyeUhh c1Jvd1NlY3VyaXR5KHN1YnF1ZXJ5KSwKKwkJCUhBU19ST1dfU0VDVVJJVFkpOwogCiAJLyoK IAkgKiBzdWJxdWVyeSB3b24ndCBiZSBwdWxsZWQgdXAgaWYgaXQgaGFzQWdncywgaGFzV2lu ZG93RnVuY3MsIG9yCkBAIC0xNTEyLDkgKzE1MTYsOSBAQCBpc19zaW1wbGVfc3VicXVlcnko UGxhbm5lckluZm8gKnJvb3QsIFF1ZXJ5ICpzdWJxdWVyeSwgUmFuZ2VUYmxFbnRyeSAqcnRl LAogCSAqIHRoYXQgY2FzZSB0aGUgbG9ja2luZyB3YXMgb3JpZ2luYWxseSBkZWNsYXJlZCBp biB0aGUgdXBwZXIgcXVlcnkKIAkgKiBhbnl3YXkuCiAJICovCi0JaWYgKHN1YnF1ZXJ5LT5o YXNBZ2dzIHx8Ci0JCXN1YnF1ZXJ5LT5oYXNXaW5kb3dGdW5jcyB8fAotCQlzdWJxdWVyeS0+ aGFzVGFyZ2V0U1JGcyB8fAorCWlmIChRdWVyeUhhc0FnZ3Moc3VicXVlcnkpIHx8CisJCVF1 ZXJ5SGFzV2luZG93RnVuY3Moc3VicXVlcnkpIHx8CisJCVF1ZXJ5SGFzVGFyZ2V0U1JGcyhz dWJxdWVyeSkgfHwKIAkJc3VicXVlcnktPmdyb3VwQ2xhdXNlIHx8CiAJCXN1YnF1ZXJ5LT5n cm91cGluZ1NldHMgfHwKIAkJc3VicXVlcnktPmhhdmluZ1F1YWwgfHwKQEAgLTE1MjIsNyAr MTUyNiw3IEBAIGlzX3NpbXBsZV9zdWJxdWVyeShQbGFubmVySW5mbyAqcm9vdCwgUXVlcnkg KnN1YnF1ZXJ5LCBSYW5nZVRibEVudHJ5ICpydGUsCiAJCXN1YnF1ZXJ5LT5kaXN0aW5jdENs YXVzZSB8fAogCQlzdWJxdWVyeS0+bGltaXRPZmZzZXQgfHwKIAkJc3VicXVlcnktPmxpbWl0 Q291bnQgfHwKLQkJc3VicXVlcnktPmhhc0ZvclVwZGF0ZSB8fAorCQlRdWVyeUhhc0ZvclVw ZGF0ZShzdWJxdWVyeSkgfHwKIAkJc3VicXVlcnktPmN0ZUxpc3QpCiAJCXJldHVybiBmYWxz ZTsKIApAQCAtMTY2NSw3ICsxNjY5LDcgQEAgcHVsbF91cF9zaW1wbGVfdmFsdWVzKFBsYW5u ZXJJbmZvICpyb290LCBOb2RlICpqdG5vZGUsIFJhbmdlVGJsRW50cnkgKnJ0ZSkKIAlydmNv bnRleHQudGFyZ2V0bGlzdCA9IHRsaXN0OwogCXJ2Y29udGV4dC50YXJnZXRfcnRlID0gcnRl OwogCXJ2Y29udGV4dC5yZWxpZHMgPSBOVUxMOwotCXJ2Y29udGV4dC5vdXRlcl9oYXNTdWJM aW5rcyA9ICZwYXJzZS0+aGFzU3ViTGlua3M7CisJcnZjb250ZXh0Lm91dGVyX2ZsYWdzID0g JnBhcnNlLT5mbGFnczsKIAlydmNvbnRleHQudmFybm8gPSB2YXJubzsKIAlydmNvbnRleHQu d3JhcF9ub25fdmFycyA9IGZhbHNlOwogCS8qIGluaXRpYWxpemUgY2FjaGUgYXJyYXkgd2l0 aCBpbmRleGVzIDAgLi4gbGVuZ3RoKHRsaXN0KSAqLwpAQCAtMTgyNiw3ICsxODMwLDcgQEAg cHVsbF91cF9jb25zdGFudF9mdW5jdGlvbihQbGFubmVySW5mbyAqcm9vdCwgTm9kZSAqanRu b2RlLAogCSAqLwogCXJ2Y29udGV4dC5yZWxpZHMgPSBOVUxMOwogCi0JcnZjb250ZXh0Lm91 dGVyX2hhc1N1YkxpbmtzID0gJnBhcnNlLT5oYXNTdWJMaW5rczsKKwlydmNvbnRleHQub3V0 ZXJfZmxhZ3MgPSAmcGFyc2UtPmZsYWdzOwogCXJ2Y29udGV4dC52YXJubyA9ICgoUmFuZ2VU YmxSZWYgKikganRub2RlKS0+cnRpbmRleDsKIAkvKiB0aGlzIGZsYWcgd2lsbCBiZSBzZXQg YmVsb3csIGlmIG5lZWRlZCAqLwogCXJ2Y29udGV4dC53cmFwX25vbl92YXJzID0gZmFsc2U7 CkBAIC0yMzAyLDcgKzIzMDYsNyBAQCBwdWxsdXBfcmVwbGFjZV92YXJzKE5vZGUgKmV4cHIs IHB1bGx1cF9yZXBsYWNlX3ZhcnNfY29udGV4dCAqY29udGV4dCkKIAkJCQkJCQkJIGNvbnRl eHQtPnZhcm5vLCAwLAogCQkJCQkJCQkgcHVsbHVwX3JlcGxhY2VfdmFyc19jYWxsYmFjaywK IAkJCQkJCQkJICh2b2lkICopIGNvbnRleHQsCi0JCQkJCQkJCSBjb250ZXh0LT5vdXRlcl9o YXNTdWJMaW5rcyk7CisJCQkJCQkJCSBjb250ZXh0LT5vdXRlcl9mbGFncyk7CiB9CiAKIHN0 YXRpYyBOb2RlICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wcmVwL3By ZXB1bmlvbi5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcHVuaW9uLmMKaW5k ZXggYzkzOWI1YTQ1Zi4uMzU0YWFlOTQ2NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3ByZXAvcHJlcHVuaW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3By ZXAvcHJlcHVuaW9uLmMKQEAgLTM0MCw3ICszNDAsNyBAQCByZWN1cnNlX3NldF9vcGVyYXRp b25zKE5vZGUgKnNldE9wLCBQbGFubmVySW5mbyAqcm9vdCwKIAkJewogCQkJaWYgKHN1YnF1 ZXJ5LT5ncm91cENsYXVzZSB8fCBzdWJxdWVyeS0+Z3JvdXBpbmdTZXRzIHx8CiAJCQkJc3Vi cXVlcnktPmRpc3RpbmN0Q2xhdXNlIHx8Ci0JCQkJc3Vicm9vdC0+aGFzSGF2aW5nUXVhbCB8 fCBzdWJxdWVyeS0+aGFzQWdncykKKwkJCQlzdWJyb290LT5oYXNIYXZpbmdRdWFsIHx8IFF1 ZXJ5SGFzQWdncyhzdWJxdWVyeSkpCiAJCQkJKnBOdW1Hcm91cHMgPSBzdWJwYXRoLT5yb3dz OwogCQkJZWxzZQogCQkJCSpwTnVtR3JvdXBzID0gZXN0aW1hdGVfbnVtX2dyb3VwcyhzdWJy b290LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5j IGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jCmluZGV4IGVkYzI1ZDcx MmUuLjNkNTEzMTk0YTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGls L2NsYXVzZXMuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMK QEAgLTQ2NzIsMTAgKzQ2NzIsMTAgQEAgaW5saW5lX2Z1bmN0aW9uKE9pZCBmdW5jaWQsIE9p ZCByZXN1bHRfdHlwZSwgT2lkIHJlc3VsdF9jb2xsaWQsCiAJICovCiAJaWYgKCFJc0EocXVl cnl0cmVlLCBRdWVyeSkgfHwKIAkJcXVlcnl0cmVlLT5jb21tYW5kVHlwZSAhPSBDTURfU0VM RUNUIHx8Ci0JCXF1ZXJ5dHJlZS0+aGFzQWdncyB8fAotCQlxdWVyeXRyZWUtPmhhc1dpbmRv d0Z1bmNzIHx8Ci0JCXF1ZXJ5dHJlZS0+aGFzVGFyZ2V0U1JGcyB8fAotCQlxdWVyeXRyZWUt Pmhhc1N1YkxpbmtzIHx8CisJCVF1ZXJ5SGFzQWdncyhxdWVyeXRyZWUpIHx8CisJCVF1ZXJ5 SGFzV2luZG93RnVuY3MocXVlcnl0cmVlKSB8fAorCQlRdWVyeUhhc1RhcmdldFNSRnMocXVl cnl0cmVlKSB8fAorCQlRdWVyeUhhc1N1YkxpbmtzKHF1ZXJ5dHJlZSkgfHwKIAkJcXVlcnl0 cmVlLT5jdGVMaXN0IHx8CiAJCXF1ZXJ5dHJlZS0+cnRhYmxlIHx8CiAJCXF1ZXJ5dHJlZS0+ am9pbnRyZWUtPmZyb21saXN0IHx8CkBAIC01Mjk4LDcgKzUyOTgsNyBAQCBpbmxpbmVfc2V0 X3JldHVybmluZ19mdW5jdGlvbihQbGFubmVySW5mbyAqcm9vdCwgUmFuZ2VUYmxFbnRyeSAq cnRlKQogCSAqIFdlIG11c3QgYWxzbyBub3RpY2UgaWYgdGhlIGluc2VydGVkIHF1ZXJ5IGFk ZHMgYSBkZXBlbmRlbmN5IG9uIHRoZQogCSAqIGNhbGxpbmcgcm9sZSBkdWUgdG8gUkxTIHF1 YWxzLgogCSAqLwotCWlmIChxdWVyeXRyZWUtPmhhc1Jvd1NlY3VyaXR5KQorCWlmIChRdWVy eUhhc1Jvd1NlY3VyaXR5KHF1ZXJ5dHJlZSkpCiAJCXJvb3QtPmdsb2ItPmRlcGVuZHNPblJv bGUgPSB0cnVlOwogCiAJcmV0dXJuIHF1ZXJ5dHJlZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL29wdGltaXplci91dGlsL3Zhci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwv dmFyLmMKaW5kZXggODQ0ZmMzMDk3OC4uNGUxZDJhNWUxYyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3V0aWwvdmFyLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3V0aWwvdmFyLmMKQEAgLTc1Niw5ICs3NTYsOSBAQCBmbGF0dGVuX2pvaW5fYWxpYXNfdmFy cyhQbGFubmVySW5mbyAqcm9vdCwgUXVlcnkgKnF1ZXJ5LCBOb2RlICpub2RlKQogCWNvbnRl eHQucXVlcnkgPSBxdWVyeTsKIAljb250ZXh0LnN1YmxldmVsc191cCA9IDA7CiAJLyogZmxh ZyB3aGV0aGVyIGpvaW4gYWxpYXNlcyBjb3VsZCBwb3NzaWJseSBjb250YWluIFN1Ykxpbmtz ICovCi0JY29udGV4dC5wb3NzaWJsZV9zdWJsaW5rID0gcXVlcnktPmhhc1N1YkxpbmtzOwor CWNvbnRleHQucG9zc2libGVfc3VibGluayA9IFF1ZXJ5SGFzU3ViTGlua3MocXVlcnkpOwog CS8qIGlmIGhhc1N1YkxpbmtzIGlzIGFscmVhZHkgdHJ1ZSwgbm8gbmVlZCB0byB3b3JrIGhh cmQgKi8KLQljb250ZXh0Lmluc2VydGVkX3N1YmxpbmsgPSBxdWVyeS0+aGFzU3ViTGlua3M7 CisJY29udGV4dC5pbnNlcnRlZF9zdWJsaW5rID0gUXVlcnlIYXNTdWJMaW5rcyhxdWVyeSk7 CiAKIAlyZXR1cm4gZmxhdHRlbl9qb2luX2FsaWFzX3ZhcnNfbXV0YXRvcihub2RlLCAmY29u dGV4dCk7CiB9CkBAIC04ODEsMTIgKzg4MSwxMyBAQCBmbGF0dGVuX2pvaW5fYWxpYXNfdmFy c19tdXRhdG9yKE5vZGUgKm5vZGUsCiAKIAkJY29udGV4dC0+c3VibGV2ZWxzX3VwKys7CiAJ CXNhdmVfaW5zZXJ0ZWRfc3VibGluayA9IGNvbnRleHQtPmluc2VydGVkX3N1Ymxpbms7Ci0J CWNvbnRleHQtPmluc2VydGVkX3N1YmxpbmsgPSAoKFF1ZXJ5ICopIG5vZGUpLT5oYXNTdWJM aW5rczsKKwkJY29udGV4dC0+aW5zZXJ0ZWRfc3VibGluayA9IFF1ZXJ5SGFzU3ViTGlua3Mo KChRdWVyeSAqKSBub2RlKSk7CiAJCW5ld25vZGUgPSBxdWVyeV90cmVlX211dGF0b3IoKFF1 ZXJ5ICopIG5vZGUsCiAJCQkJCQkJCQkgZmxhdHRlbl9qb2luX2FsaWFzX3ZhcnNfbXV0YXRv ciwKIAkJCQkJCQkJCSAodm9pZCAqKSBjb250ZXh0LAogCQkJCQkJCQkJIFFUV19JR05PUkVf Sk9JTkFMSUFTRVMpOwotCQluZXdub2RlLT5oYXNTdWJMaW5rcyB8PSBjb250ZXh0LT5pbnNl cnRlZF9zdWJsaW5rOworCQlpZiAoY29udGV4dC0+aW5zZXJ0ZWRfc3VibGluaykKKwkJCVF1 ZXJ5U2V0RmxhZyhuZXdub2RlLCBIQVNfU1VCX0xJTktTKTsKIAkJY29udGV4dC0+aW5zZXJ0 ZWRfc3VibGluayA9IHNhdmVfaW5zZXJ0ZWRfc3VibGluazsKIAkJY29udGV4dC0+c3VibGV2 ZWxzX3VwLS07CiAJCXJldHVybiAoTm9kZSAqKSBuZXdub2RlOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXpl LmMKaW5kZXggZGJkZjZiZjg5Ni4uN2I2NzAxNmQzNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcGFyc2VyL2FuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5j CkBAIC00MjAsNyArNDIwLDcgQEAgdHJhbnNmb3JtU3RtdChQYXJzZVN0YXRlICpwc3RhdGUs IE5vZGUgKnBhcnNlVHJlZSkKIAogCS8qIE1hcmsgYXMgb3JpZ2luYWwgcXVlcnkgdW50aWwg d2UgbGVhcm4gZGlmZmVyZW50bHkgKi8KIAlyZXN1bHQtPnF1ZXJ5U291cmNlID0gUVNSQ19P UklHSU5BTDsKLQlyZXN1bHQtPmNhblNldFRhZyA9IHRydWU7CisJUXVlcnlTZXRGbGFnKHJl c3VsdCwgQ0FOX1NFVF9UQUcpOwogCiAJcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTUxOSw5ICs1 MTksOSBAQCB0cmFuc2Zvcm1EZWxldGVTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgRGVsZXRl U3RtdCAqc3RtdCkKIAkvKiBwcm9jZXNzIHRoZSBXSVRIIGNsYXVzZSBpbmRlcGVuZGVudGx5 IG9mIGFsbCBlbHNlICovCiAJaWYgKHN0bXQtPndpdGhDbGF1c2UpCiAJewotCQlxcnktPmhh c1JlY3Vyc2l2ZSA9IHN0bXQtPndpdGhDbGF1c2UtPnJlY3Vyc2l2ZTsKKwkJUXVlcnlDb25k U2V0RmxhZyhxcnksIHN0bXQtPndpdGhDbGF1c2UtPnJlY3Vyc2l2ZSwgSEFTX1JFQ1VSU0lW RSk7CiAJCXFyeS0+Y3RlTGlzdCA9IHRyYW5zZm9ybVdpdGhDbGF1c2UocHN0YXRlLCBzdG10 LT53aXRoQ2xhdXNlKTsKLQkJcXJ5LT5oYXNNb2RpZnlpbmdDVEUgPSBwc3RhdGUtPnBfaGFz TW9kaWZ5aW5nQ1RFOworCQlRdWVyeUNvbmRTZXRGbGFnKHFyeSwgcHN0YXRlLT5wX2hhc01v ZGlmeWluZ0NURSwgSEFTX01PRElGWUlOR19DVEUpOwogCX0KIAogCS8qIHNldCB1cCByYW5n ZSB0YWJsZSB3aXRoIGp1c3QgdGhlIHJlc3VsdCByZWwgKi8KQEAgLTU2MCwxMCArNTYwLDEw IEBAIHRyYW5zZm9ybURlbGV0ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBEZWxldGVTdG10 ICpzdG10KQogCXFyeS0+cnRlcGVybWluZm9zID0gcHN0YXRlLT5wX3J0ZXBlcm1pbmZvczsK IAlxcnktPmpvaW50cmVlID0gbWFrZUZyb21FeHByKHBzdGF0ZS0+cF9qb2lubGlzdCwgcXVh bCk7CiAKLQlxcnktPmhhc1N1YkxpbmtzID0gcHN0YXRlLT5wX2hhc1N1YkxpbmtzOwotCXFy eS0+aGFzV2luZG93RnVuY3MgPSBwc3RhdGUtPnBfaGFzV2luZG93RnVuY3M7Ci0JcXJ5LT5o YXNUYXJnZXRTUkZzID0gcHN0YXRlLT5wX2hhc1RhcmdldFNSRnM7Ci0JcXJ5LT5oYXNBZ2dz ID0gcHN0YXRlLT5wX2hhc0FnZ3M7CisJUXVlcnlDb25kU2V0RmxhZyhxcnksIHBzdGF0ZS0+ cF9oYXNTdWJMaW5rcywgSEFTX1NVQl9MSU5LUyk7CisJUXVlcnlDb25kU2V0RmxhZyhxcnks IHBzdGF0ZS0+cF9oYXNXaW5kb3dGdW5jcywgSEFTX1dJTkRPV19GVU5DUyk7CisJUXVlcnlD b25kU2V0RmxhZyhxcnksIHBzdGF0ZS0+cF9oYXNUYXJnZXRTUkZzLCBIQVNfVEFSR0VUX1NS RlMpOworCVF1ZXJ5Q29uZFNldEZsYWcocXJ5LCBwc3RhdGUtPnBfaGFzQWdncywgSEFTX0FH R1MpOwogCiAJYXNzaWduX3F1ZXJ5X2NvbGxhdGlvbnMocHN0YXRlLCBxcnkpOwogCkBAIC02 MDcsOSArNjA3LDkgQEAgdHJhbnNmb3JtSW5zZXJ0U3RtdChQYXJzZVN0YXRlICpwc3RhdGUs IEluc2VydFN0bXQgKnN0bXQpCiAJLyogcHJvY2VzcyB0aGUgV0lUSCBjbGF1c2UgaW5kZXBl bmRlbnRseSBvZiBhbGwgZWxzZSAqLwogCWlmIChzdG10LT53aXRoQ2xhdXNlKQogCXsKLQkJ cXJ5LT5oYXNSZWN1cnNpdmUgPSBzdG10LT53aXRoQ2xhdXNlLT5yZWN1cnNpdmU7CisJCVF1 ZXJ5Q29uZFNldEZsYWcocXJ5LCBzdG10LT53aXRoQ2xhdXNlLT5yZWN1cnNpdmUsIEhBU19S RUNVUlNJVkUpOwogCQlxcnktPmN0ZUxpc3QgPSB0cmFuc2Zvcm1XaXRoQ2xhdXNlKHBzdGF0 ZSwgc3RtdC0+d2l0aENsYXVzZSk7Ci0JCXFyeS0+aGFzTW9kaWZ5aW5nQ1RFID0gcHN0YXRl LT5wX2hhc01vZGlmeWluZ0NURTsKKwkJUXVlcnlDb25kU2V0RmxhZyhxcnksIHBzdGF0ZS0+ cF9oYXNNb2RpZnlpbmdDVEUsIEhBU19NT0RJRllJTkdfQ1RFKTsKIAl9CiAKIAlxcnktPm92 ZXJyaWRlID0gc3RtdC0+b3ZlcnJpZGU7CkBAIC05ODcsOCArOTg3LDggQEAgdHJhbnNmb3Jt SW5zZXJ0U3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIEluc2VydFN0bXQgKnN0bXQpCiAJcXJ5 LT5ydGVwZXJtaW5mb3MgPSBwc3RhdGUtPnBfcnRlcGVybWluZm9zOwogCXFyeS0+am9pbnRy ZWUgPSBtYWtlRnJvbUV4cHIocHN0YXRlLT5wX2pvaW5saXN0LCBOVUxMKTsKIAotCXFyeS0+ aGFzVGFyZ2V0U1JGcyA9IHBzdGF0ZS0+cF9oYXNUYXJnZXRTUkZzOwotCXFyeS0+aGFzU3Vi TGlua3MgPSBwc3RhdGUtPnBfaGFzU3ViTGlua3M7CisJUXVlcnlDb25kU2V0RmxhZyhxcnks IHBzdGF0ZS0+cF9oYXNUYXJnZXRTUkZzLCBIQVNfVEFSR0VUX1NSRlMpOworCVF1ZXJ5Q29u ZFNldEZsYWcocXJ5LCBwc3RhdGUtPnBfaGFzU3ViTGlua3MsIEhBU19TVUJfTElOS1MpOwog CiAJYXNzaWduX3F1ZXJ5X2NvbGxhdGlvbnMocHN0YXRlLCBxcnkpOwogCkBAIC0xMzM1LDkg KzEzMzUsOSBAQCB0cmFuc2Zvcm1TZWxlY3RTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgU2Vs ZWN0U3RtdCAqc3RtdCkKIAkvKiBwcm9jZXNzIHRoZSBXSVRIIGNsYXVzZSBpbmRlcGVuZGVu dGx5IG9mIGFsbCBlbHNlICovCiAJaWYgKHN0bXQtPndpdGhDbGF1c2UpCiAJewotCQlxcnkt Pmhhc1JlY3Vyc2l2ZSA9IHN0bXQtPndpdGhDbGF1c2UtPnJlY3Vyc2l2ZTsKKwkJUXVlcnlD b25kU2V0RmxhZyhxcnksIHN0bXQtPndpdGhDbGF1c2UtPnJlY3Vyc2l2ZSwgSEFTX1JFQ1VS U0lWRSk7CiAJCXFyeS0+Y3RlTGlzdCA9IHRyYW5zZm9ybVdpdGhDbGF1c2UocHN0YXRlLCBz dG10LT53aXRoQ2xhdXNlKTsKLQkJcXJ5LT5oYXNNb2RpZnlpbmdDVEUgPSBwc3RhdGUtPnBf aGFzTW9kaWZ5aW5nQ1RFOworCQlRdWVyeUNvbmRTZXRGbGFnKHFyeSwgcHN0YXRlLT5wX2hh c01vZGlmeWluZ0NURSwgSEFTX01PRElGWUlOR19DVEUpOwogCX0KIAogCS8qIENvbXBsYWlu IGlmIHdlIGdldCBjYWxsZWQgZnJvbSBzb21lcGxhY2Ugd2hlcmUgSU5UTyBpcyBub3QgYWxs b3dlZCAqLwpAQCAtMTM5Niw3ICsxMzk2LDcgQEAgdHJhbnNmb3JtU2VsZWN0U3RtdChQYXJz ZVN0YXRlICpwc3RhdGUsIFNlbGVjdFN0bXQgKnN0bXQpCiAJaWYgKHN0bXQtPmRpc3RpbmN0 Q2xhdXNlID09IE5JTCkKIAl7CiAJCXFyeS0+ZGlzdGluY3RDbGF1c2UgPSBOSUw7Ci0JCXFy eS0+aGFzRGlzdGluY3RPbiA9IGZhbHNlOworCQlRdWVyeUNsZWFyRmxhZyhxcnksIEhBU19E SVNUSU5DVF9PTik7CiAJfQogCWVsc2UgaWYgKGxpbml0aWFsKHN0bXQtPmRpc3RpbmN0Q2xh dXNlKSA9PSBOVUxMKQogCXsKQEAgLTE0MDUsNyArMTQwNSw3IEBAIHRyYW5zZm9ybVNlbGVj dFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBTZWxlY3RTdG10ICpzdG10KQogCQkJCQkJCQkJ CQkJCSAgJnFyeS0+dGFyZ2V0TGlzdCwKIAkJCQkJCQkJCQkJCQkgIHFyeS0+c29ydENsYXVz ZSwKIAkJCQkJCQkJCQkJCQkgIGZhbHNlKTsKLQkJcXJ5LT5oYXNEaXN0aW5jdE9uID0gZmFs c2U7CisJCVF1ZXJ5Q2xlYXJGbGFnKHFyeSwgSEFTX0RJU1RJTkNUX09OKTsKIAl9CiAJZWxz ZQogCXsKQEAgLTE0MTQsNyArMTQxNCw3IEBAIHRyYW5zZm9ybVNlbGVjdFN0bXQoUGFyc2VT dGF0ZSAqcHN0YXRlLCBTZWxlY3RTdG10ICpzdG10KQogCQkJCQkJCQkJCQkJCQlzdG10LT5k aXN0aW5jdENsYXVzZSwKIAkJCQkJCQkJCQkJCQkJJnFyeS0+dGFyZ2V0TGlzdCwKIAkJCQkJ CQkJCQkJCQkJcXJ5LT5zb3J0Q2xhdXNlKTsKLQkJcXJ5LT5oYXNEaXN0aW5jdE9uID0gdHJ1 ZTsKKwkJUXVlcnlTZXRGbGFnKHFyeSwgSEFTX0RJU1RJTkNUX09OKTsKIAl9CiAKIAkvKiB0 cmFuc2Zvcm0gTElNSVQgKi8KQEAgLTE0MzksMTAgKzE0MzksMTEgQEAgdHJhbnNmb3JtU2Vs ZWN0U3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFNlbGVjdFN0bXQgKnN0bXQpCiAJcXJ5LT5y dGVwZXJtaW5mb3MgPSBwc3RhdGUtPnBfcnRlcGVybWluZm9zOwogCXFyeS0+am9pbnRyZWUg PSBtYWtlRnJvbUV4cHIocHN0YXRlLT5wX2pvaW5saXN0LCBxdWFsKTsKIAotCXFyeS0+aGFz U3ViTGlua3MgPSBwc3RhdGUtPnBfaGFzU3ViTGlua3M7Ci0JcXJ5LT5oYXNXaW5kb3dGdW5j cyA9IHBzdGF0ZS0+cF9oYXNXaW5kb3dGdW5jczsKLQlxcnktPmhhc1RhcmdldFNSRnMgPSBw c3RhdGUtPnBfaGFzVGFyZ2V0U1JGczsKLQlxcnktPmhhc0FnZ3MgPSBwc3RhdGUtPnBfaGFz QWdnczsKKwlRdWVyeUNvbmRTZXRGbGFnKHFyeSwgcHN0YXRlLT5wX2hhc1N1YkxpbmtzLCBI QVNfU1VCX0xJTktTKTsKKwlRdWVyeUNvbmRTZXRGbGFnKHFyeSwgcHN0YXRlLT5wX2hhc1dp bmRvd0Z1bmNzLCBIQVNfV0lORE9XX0ZVTkNTKTsKKwlRdWVyeUNvbmRTZXRGbGFnKHFyeSwg cHN0YXRlLT5wX2hhc1RhcmdldFNSRnMsIEhBU19UQVJHRVRfU1JGUyk7CisJUXVlcnlDb25k U2V0RmxhZyhxcnksIHBzdGF0ZS0+cF9oYXNBZ2dzLCBIQVNfQUdHUyk7CisKIAogCWZvcmVh Y2gobCwgc3RtdC0+bG9ja2luZ0NsYXVzZSkKIAl7CkBAIC0xNDk4LDkgKzE0OTksOSBAQCB0 cmFuc2Zvcm1WYWx1ZXNDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBTZWxlY3RTdG10ICpz dG10KQogCS8qIHByb2Nlc3MgdGhlIFdJVEggY2xhdXNlIGluZGVwZW5kZW50bHkgb2YgYWxs IGVsc2UgKi8KIAlpZiAoc3RtdC0+d2l0aENsYXVzZSkKIAl7Ci0JCXFyeS0+aGFzUmVjdXJz aXZlID0gc3RtdC0+d2l0aENsYXVzZS0+cmVjdXJzaXZlOworCQlRdWVyeUNvbmRTZXRGbGFn KHFyeSwgc3RtdC0+d2l0aENsYXVzZS0+cmVjdXJzaXZlLCBIQVNfUkVDVVJTSVZFKTsKIAkJ cXJ5LT5jdGVMaXN0ID0gdHJhbnNmb3JtV2l0aENsYXVzZShwc3RhdGUsIHN0bXQtPndpdGhD bGF1c2UpOwotCQlxcnktPmhhc01vZGlmeWluZ0NURSA9IHBzdGF0ZS0+cF9oYXNNb2RpZnlp bmdDVEU7CisJCVF1ZXJ5Q29uZFNldEZsYWcocXJ5LCBwc3RhdGUtPnBfaGFzTW9kaWZ5aW5n Q1RFLCBIQVNfTU9ESUZZSU5HX0NURSk7CiAJfQogCiAJLyoKQEAgLTE2NjgsNyArMTY2OSw3 IEBAIHRyYW5zZm9ybVZhbHVlc0NsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsIFNlbGVjdFN0 bXQgKnN0bXQpCiAJcXJ5LT5ydGVwZXJtaW5mb3MgPSBwc3RhdGUtPnBfcnRlcGVybWluZm9z OwogCXFyeS0+am9pbnRyZWUgPSBtYWtlRnJvbUV4cHIocHN0YXRlLT5wX2pvaW5saXN0LCBO VUxMKTsKIAotCXFyeS0+aGFzU3ViTGlua3MgPSBwc3RhdGUtPnBfaGFzU3ViTGlua3M7CisJ UXVlcnlDb25kU2V0RmxhZyhxcnksIHBzdGF0ZS0+cF9oYXNTdWJMaW5rcywgSEFTX1NVQl9M SU5LUyk7CiAKIAlhc3NpZ25fcXVlcnlfY29sbGF0aW9ucyhwc3RhdGUsIHFyeSk7CiAKQEAg LTE3NjUsOSArMTc2Niw5IEBAIHRyYW5zZm9ybVNldE9wZXJhdGlvblN0bXQoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBTZWxlY3RTdG10ICpzdG10KQogCS8qIFByb2Nlc3MgdGhlIFdJVEggY2xh dXNlIGluZGVwZW5kZW50bHkgb2YgYWxsIGVsc2UgKi8KIAlpZiAod2l0aENsYXVzZSkKIAl7 Ci0JCXFyeS0+aGFzUmVjdXJzaXZlID0gd2l0aENsYXVzZS0+cmVjdXJzaXZlOworCQlRdWVy eUNvbmRTZXRGbGFnKHFyeSwgd2l0aENsYXVzZS0+cmVjdXJzaXZlLCBIQVNfUkVDVVJTSVZF KTsKIAkJcXJ5LT5jdGVMaXN0ID0gdHJhbnNmb3JtV2l0aENsYXVzZShwc3RhdGUsIHdpdGhD bGF1c2UpOwotCQlxcnktPmhhc01vZGlmeWluZ0NURSA9IHBzdGF0ZS0+cF9oYXNNb2RpZnlp bmdDVEU7CisJCVF1ZXJ5Q29uZFNldEZsYWcocXJ5LCBwc3RhdGUtPnBfaGFzTW9kaWZ5aW5n Q1RFLCBIQVNfTU9ESUZZSU5HX0NURSk7CiAJfQogCiAJLyoKQEAgLTE5MTUsMTAgKzE5MTYs MTAgQEAgdHJhbnNmb3JtU2V0T3BlcmF0aW9uU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFNl bGVjdFN0bXQgKnN0bXQpCiAJcXJ5LT5ydGVwZXJtaW5mb3MgPSBwc3RhdGUtPnBfcnRlcGVy bWluZm9zOwogCXFyeS0+am9pbnRyZWUgPSBtYWtlRnJvbUV4cHIocHN0YXRlLT5wX2pvaW5s aXN0LCBOVUxMKTsKIAotCXFyeS0+aGFzU3ViTGlua3MgPSBwc3RhdGUtPnBfaGFzU3ViTGlu a3M7Ci0JcXJ5LT5oYXNXaW5kb3dGdW5jcyA9IHBzdGF0ZS0+cF9oYXNXaW5kb3dGdW5jczsK LQlxcnktPmhhc1RhcmdldFNSRnMgPSBwc3RhdGUtPnBfaGFzVGFyZ2V0U1JGczsKLQlxcnkt Pmhhc0FnZ3MgPSBwc3RhdGUtPnBfaGFzQWdnczsKKwlRdWVyeUNvbmRTZXRGbGFnKHFyeSwg cHN0YXRlLT5wX2hhc1N1YkxpbmtzLCBIQVNfU1VCX0xJTktTKTsKKwlRdWVyeUNvbmRTZXRG bGFnKHFyeSwgcHN0YXRlLT5wX2hhc1dpbmRvd0Z1bmNzLCBIQVNfV0lORE9XX0ZVTkNTKTsK KwlRdWVyeUNvbmRTZXRGbGFnKHFyeSwgcHN0YXRlLT5wX2hhc1RhcmdldFNSRnMsIEhBU19U QVJHRVRfU1JGUyk7CisJUXVlcnlDb25kU2V0RmxhZyhxcnksIHBzdGF0ZS0+cF9oYXNBZ2dz LCBIQVNfQUdHUyk7CiAKIAlmb3JlYWNoKGwsIGxvY2tpbmdDbGF1c2UpCiAJewpAQCAtMjM3 OSw3ICsyMzgwLDcgQEAgdHJhbnNmb3JtUmV0dXJuU3RtdChQYXJzZVN0YXRlICpwc3RhdGUs IFJldHVyblN0bXQgKnN0bXQpCiAJUXVlcnkJICAgKnFyeSA9IG1ha2VOb2RlKFF1ZXJ5KTsK IAogCXFyeS0+Y29tbWFuZFR5cGUgPSBDTURfU0VMRUNUOwotCXFyeS0+aXNSZXR1cm4gPSB0 cnVlOworCVF1ZXJ5U2V0RmxhZyhxcnksIElTX1JFVFVSTik7CiAKIAlxcnktPnRhcmdldExp c3QgPSBsaXN0X21ha2UxKG1ha2VUYXJnZXRFbnRyeSgoRXhwciAqKSB0cmFuc2Zvcm1FeHBy KHBzdGF0ZSwgc3RtdC0+cmV0dXJudmFsLCBFWFBSX0tJTkRfU0VMRUNUX1RBUkdFVCksCiAJ CQkJCQkJCQkJCQkgMSwgTlVMTCwgZmFsc2UpKTsKQEAgLTIzODksMTAgKzIzOTAsMTAgQEAg dHJhbnNmb3JtUmV0dXJuU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFJldHVyblN0bXQgKnN0 bXQpCiAJcXJ5LT5ydGFibGUgPSBwc3RhdGUtPnBfcnRhYmxlOwogCXFyeS0+cnRlcGVybWlu Zm9zID0gcHN0YXRlLT5wX3J0ZXBlcm1pbmZvczsKIAlxcnktPmpvaW50cmVlID0gbWFrZUZy b21FeHByKHBzdGF0ZS0+cF9qb2lubGlzdCwgTlVMTCk7Ci0JcXJ5LT5oYXNTdWJMaW5rcyA9 IHBzdGF0ZS0+cF9oYXNTdWJMaW5rczsKLQlxcnktPmhhc1dpbmRvd0Z1bmNzID0gcHN0YXRl LT5wX2hhc1dpbmRvd0Z1bmNzOwotCXFyeS0+aGFzVGFyZ2V0U1JGcyA9IHBzdGF0ZS0+cF9o YXNUYXJnZXRTUkZzOwotCXFyeS0+aGFzQWdncyA9IHBzdGF0ZS0+cF9oYXNBZ2dzOworCVF1 ZXJ5Q29uZFNldEZsYWcocXJ5LCBwc3RhdGUtPnBfaGFzU3ViTGlua3MsIEhBU19TVUJfTElO S1MpOworCVF1ZXJ5Q29uZFNldEZsYWcocXJ5LCBwc3RhdGUtPnBfaGFzV2luZG93RnVuY3Ms IEhBU19XSU5ET1dfRlVOQ1MpOworCVF1ZXJ5Q29uZFNldEZsYWcocXJ5LCBwc3RhdGUtPnBf aGFzVGFyZ2V0U1JGcywgSEFTX1RBUkdFVF9TUkZTKTsKKwlRdWVyeUNvbmRTZXRGbGFnKHFy eSwgcHN0YXRlLT5wX2hhc0FnZ3MsIEhBU19BR0dTKTsKIAogCWFzc2lnbl9xdWVyeV9jb2xs YXRpb25zKHBzdGF0ZSwgcXJ5KTsKIApAQCAtMjQxNyw5ICsyNDE4LDkgQEAgdHJhbnNmb3Jt VXBkYXRlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFVwZGF0ZVN0bXQgKnN0bXQpCiAJLyog cHJvY2VzcyB0aGUgV0lUSCBjbGF1c2UgaW5kZXBlbmRlbnRseSBvZiBhbGwgZWxzZSAqLwog CWlmIChzdG10LT53aXRoQ2xhdXNlKQogCXsKLQkJcXJ5LT5oYXNSZWN1cnNpdmUgPSBzdG10 LT53aXRoQ2xhdXNlLT5yZWN1cnNpdmU7CisJCVF1ZXJ5Q29uZFNldEZsYWcocXJ5LCBzdG10 LT53aXRoQ2xhdXNlLT5yZWN1cnNpdmUsIEhBU19SRUNVUlNJVkUpOwogCQlxcnktPmN0ZUxp c3QgPSB0cmFuc2Zvcm1XaXRoQ2xhdXNlKHBzdGF0ZSwgc3RtdC0+d2l0aENsYXVzZSk7Ci0J CXFyeS0+aGFzTW9kaWZ5aW5nQ1RFID0gcHN0YXRlLT5wX2hhc01vZGlmeWluZ0NURTsKKwkJ UXVlcnlDb25kU2V0RmxhZyhxcnksIHBzdGF0ZS0+cF9oYXNNb2RpZnlpbmdDVEUsIEhBU19N T0RJRllJTkdfQ1RFKTsKIAl9CiAKIAlxcnktPnJlc3VsdFJlbGF0aW9uID0gc2V0VGFyZ2V0 VGFibGUocHN0YXRlLCBzdG10LT5yZWxhdGlvbiwKQEAgLTI0NTcsOCArMjQ1OCw5IEBAIHRy YW5zZm9ybVVwZGF0ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBVcGRhdGVTdG10ICpzdG10 KQogCXFyeS0+cnRlcGVybWluZm9zID0gcHN0YXRlLT5wX3J0ZXBlcm1pbmZvczsKIAlxcnkt PmpvaW50cmVlID0gbWFrZUZyb21FeHByKHBzdGF0ZS0+cF9qb2lubGlzdCwgcXVhbCk7CiAK LQlxcnktPmhhc1RhcmdldFNSRnMgPSBwc3RhdGUtPnBfaGFzVGFyZ2V0U1JGczsKLQlxcnkt Pmhhc1N1YkxpbmtzID0gcHN0YXRlLT5wX2hhc1N1YkxpbmtzOworCVF1ZXJ5Q29uZFNldEZs YWcocXJ5LCBwc3RhdGUtPnBfaGFzVGFyZ2V0U1JGcywgSEFTX1RBUkdFVF9TUkZTKTsKKwlR dWVyeUNvbmRTZXRGbGFnKHFyeSwgcHN0YXRlLT5wX2hhc1N1YkxpbmtzLCBIQVNfU1VCX0xJ TktTKTsKKwogCiAJYXNzaWduX3F1ZXJ5X2NvbGxhdGlvbnMocHN0YXRlLCBxcnkpOwogCkBA IC0yNzgxLDcgKzI3ODMsNyBAQCB0cmFuc2Zvcm1QTEFzc2lnblN0bXQoUGFyc2VTdGF0ZSAq cHN0YXRlLCBQTEFzc2lnblN0bXQgKnN0bXQpCiAJaWYgKHNzdG10LT5kaXN0aW5jdENsYXVz ZSA9PSBOSUwpCiAJewogCQlxcnktPmRpc3RpbmN0Q2xhdXNlID0gTklMOwotCQlxcnktPmhh c0Rpc3RpbmN0T24gPSBmYWxzZTsKKwkJUXVlcnlDbGVhckZsYWcocXJ5LCBIQVNfRElTVElO Q1RfT04pOwogCX0KIAllbHNlIGlmIChsaW5pdGlhbChzc3RtdC0+ZGlzdGluY3RDbGF1c2Up ID09IE5VTEwpCiAJewpAQCAtMjc5MCw3ICsyNzkyLDcgQEAgdHJhbnNmb3JtUExBc3NpZ25T dG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgUExBc3NpZ25TdG10ICpzdG10KQogCQkJCQkJCQkJ CQkJCSAgJnFyeS0+dGFyZ2V0TGlzdCwKIAkJCQkJCQkJCQkJCQkgIHFyeS0+c29ydENsYXVz ZSwKIAkJCQkJCQkJCQkJCQkgIGZhbHNlKTsKLQkJcXJ5LT5oYXNEaXN0aW5jdE9uID0gZmFs c2U7CisJCVF1ZXJ5Q2xlYXJGbGFnKHFyeSwgSEFTX0RJU1RJTkNUX09OKTsKIAl9CiAJZWxz ZQogCXsKQEAgLTI3OTksNyArMjgwMSw3IEBAIHRyYW5zZm9ybVBMQXNzaWduU3RtdChQYXJz ZVN0YXRlICpwc3RhdGUsIFBMQXNzaWduU3RtdCAqc3RtdCkKIAkJCQkJCQkJCQkJCQkJc3N0 bXQtPmRpc3RpbmN0Q2xhdXNlLAogCQkJCQkJCQkJCQkJCQkmcXJ5LT50YXJnZXRMaXN0LAog CQkJCQkJCQkJCQkJCQlxcnktPnNvcnRDbGF1c2UpOwotCQlxcnktPmhhc0Rpc3RpbmN0T24g PSB0cnVlOworCQlRdWVyeVNldEZsYWcocXJ5LCBIQVNfRElTVElOQ1RfT04pOwogCX0KIAog CS8qIHRyYW5zZm9ybSBMSU1JVCAqLwpAQCAtMjgyMCwxMCArMjgyMiwxMCBAQCB0cmFuc2Zv cm1QTEFzc2lnblN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBQTEFzc2lnblN0bXQgKnN0bXQp CiAJcXJ5LT5ydGVwZXJtaW5mb3MgPSBwc3RhdGUtPnBfcnRlcGVybWluZm9zOwogCXFyeS0+ am9pbnRyZWUgPSBtYWtlRnJvbUV4cHIocHN0YXRlLT5wX2pvaW5saXN0LCBxdWFsKTsKIAot CXFyeS0+aGFzU3ViTGlua3MgPSBwc3RhdGUtPnBfaGFzU3ViTGlua3M7Ci0JcXJ5LT5oYXNX aW5kb3dGdW5jcyA9IHBzdGF0ZS0+cF9oYXNXaW5kb3dGdW5jczsKLQlxcnktPmhhc1Rhcmdl dFNSRnMgPSBwc3RhdGUtPnBfaGFzVGFyZ2V0U1JGczsKLQlxcnktPmhhc0FnZ3MgPSBwc3Rh dGUtPnBfaGFzQWdnczsKKwlRdWVyeUNvbmRTZXRGbGFnKHFyeSwgcHN0YXRlLT5wX2hhc1N1 YkxpbmtzLCBIQVNfU1VCX0xJTktTKTsKKwlRdWVyeUNvbmRTZXRGbGFnKHFyeSwgcHN0YXRl LT5wX2hhc1dpbmRvd0Z1bmNzLCBIQVNfV0lORE9XX0ZVTkNTKTsKKwlRdWVyeUNvbmRTZXRG bGFnKHFyeSwgcHN0YXRlLT5wX2hhc1RhcmdldFNSRnMsIEhBU19UQVJHRVRfU1JGUyk7CisJ UXVlcnlDb25kU2V0RmxhZyhxcnksIHBzdGF0ZS0+cF9oYXNBZ2dzLCBIQVNfQUdHUyk7CiAK IAlmb3JlYWNoKGwsIHNzdG10LT5sb2NraW5nQ2xhdXNlKQogCXsKQEAgLTI4ODcsNyArMjg4 OSw3IEBAIHRyYW5zZm9ybURlY2xhcmVDdXJzb3JTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwg RGVjbGFyZUN1cnNvclN0bXQgKnN0bXQpCiAJICogYWxsb3dlZCwgYnV0IHRoZSBzZW1hbnRp Y3Mgb2Ygd2hlbiB0aGUgdXBkYXRlcyBvY2N1ciBtaWdodCBiZQogCSAqIHN1cnByaXNpbmcu KQogCSAqLwotCWlmIChxdWVyeS0+aGFzTW9kaWZ5aW5nQ1RFKQorCWlmIChRdWVyeUhhc01v ZGlmeWluZ0NURShxdWVyeSkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJS Q09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJCSBlcnJtc2coIkRFQ0xBUkUgQ1VS U09SIG11c3Qgbm90IGNvbnRhaW4gZGF0YS1tb2RpZnlpbmcgc3RhdGVtZW50cyBpbiBXSVRI IikpKTsKQEAgLTMwMTQsNyArMzAxNiw3IEBAIHRyYW5zZm9ybUNyZWF0ZVRhYmxlQXNTdG10 KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlVGFibGVBc1N0bXQgKnN0bXQpCiAJCSAqIG1h dGVyaWFsaXplZCB2aWV3LiBJdCdzIG5vdCBzdWZmaWNpZW50bHkgY2xlYXIgd2hhdCB0aGUg dXNlciB3b3VsZAogCQkgKiB3YW50IHRvIGhhcHBlbiBpZiB0aGUgTVYgaXMgcmVmcmVzaGVk IG9yIGluY3JlbWVudGFsbHkgbWFpbnRhaW5lZC4KIAkJICovCi0JCWlmIChxdWVyeS0+aGFz TW9kaWZ5aW5nQ1RFKQorCQlpZiAoUXVlcnlIYXNNb2RpZnlpbmdDVEUocXVlcnkpKQogCQkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQ T1JURUQpLAogCQkJCQkgZXJybXNnKCJtYXRlcmlhbGl6ZWQgdmlld3MgbXVzdCBub3QgdXNl IGRhdGEtbW9kaWZ5aW5nIHN0YXRlbWVudHMgaW4gV0lUSCIpKSk7CkBAIC0zMjU0LDIxICsz MjU2LDIxIEBAIENoZWNrU2VsZWN0TG9ja2luZyhRdWVyeSAqcXJ5LCBMb2NrQ2xhdXNlU3Ry ZW5ndGggc3RyZW5ndGgpCiAJCSAgdHJhbnNsYXRvcjogJXMgaXMgYSBTUUwgcm93IGxvY2tp bmcgY2xhdXNlIHN1Y2ggYXMgRk9SIFVQREFURSAqLwogCQkJCSBlcnJtc2coIiVzIGlzIG5v dCBhbGxvd2VkIHdpdGggSEFWSU5HIGNsYXVzZSIsCiAJCQkJCQlMQ1NfYXNTdHJpbmcoc3Ry ZW5ndGgpKSkpOwotCWlmIChxcnktPmhhc0FnZ3MpCisJaWYgKFF1ZXJ5SGFzQWdncyhxcnkp KQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1Rf U1VQUE9SVEVEKSwKIAkJLyotLS0tLS0KIAkJICB0cmFuc2xhdG9yOiAlcyBpcyBhIFNRTCBy b3cgbG9ja2luZyBjbGF1c2Ugc3VjaCBhcyBGT1IgVVBEQVRFICovCiAJCQkJIGVycm1zZygi JXMgaXMgbm90IGFsbG93ZWQgd2l0aCBhZ2dyZWdhdGUgZnVuY3Rpb25zIiwKIAkJCQkJCUxD U19hc1N0cmluZyhzdHJlbmd0aCkpKSk7Ci0JaWYgKHFyeS0+aGFzV2luZG93RnVuY3MpCisJ aWYgKFF1ZXJ5SGFzV2luZG93RnVuY3MocXJ5KSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQko ZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCS8qLS0tLS0tCiAJ CSAgdHJhbnNsYXRvcjogJXMgaXMgYSBTUUwgcm93IGxvY2tpbmcgY2xhdXNlIHN1Y2ggYXMg Rk9SIFVQREFURSAqLwogCQkJCSBlcnJtc2coIiVzIGlzIG5vdCBhbGxvd2VkIHdpdGggd2lu ZG93IGZ1bmN0aW9ucyIsCiAJCQkJCQlMQ1NfYXNTdHJpbmcoc3RyZW5ndGgpKSkpOwotCWlm IChxcnktPmhhc1RhcmdldFNSRnMpCisJaWYgKFF1ZXJ5SGFzVGFyZ2V0U1JGcyhxcnkpKQog CQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQ UE9SVEVEKSwKIAkJLyotLS0tLS0KQEAgLTM1MjMsNyArMzUyNSw3IEBAIGFwcGx5TG9ja2lu Z0NsYXVzZShRdWVyeSAqcXJ5LCBJbmRleCBydGluZGV4LAogCiAJLyogSWYgaXQncyBhbiBl eHBsaWNpdCBjbGF1c2UsIG1ha2Ugc3VyZSBoYXNGb3JVcGRhdGUgZ2V0cyBzZXQgKi8KIAlp ZiAoIXB1c2hlZERvd24pCi0JCXFyeS0+aGFzRm9yVXBkYXRlID0gdHJ1ZTsKKwkJUXVlcnlT ZXRGbGFnKHFyeSwgSEFTX0ZPUl9VUERBVEUpOwogCiAJLyogQ2hlY2sgZm9yIHByZS1leGlz dGluZyBlbnRyeSBmb3Igc2FtZSBydGluZGV4ICovCiAJaWYgKChyYyA9IGdldF9wYXJzZV9y b3dtYXJrKHFyeSwgcnRpbmRleCkpICE9IE5VTEwpCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfY3RlLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY3RlLmMK aW5kZXggM2M4OGM5YWJiYS4uNTcxOWI0MzdjYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX2N0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jdGUu YwpAQCAtMzQ2LDcgKzM0Niw3IEBAIGFuYWx5emVDVEUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBD b21tb25UYWJsZUV4cHIgKmN0ZSkKIAkgKiBtYXR0ZXJzIGZvciBkYXRhLW1vZGlmeWluZyBz dGF0ZW1lbnRzLCBmb3Igd2hpY2ggdGhlIGZsYWcgd2lsbCBiZQogCSAqIHByb3BhZ2F0ZWQg dG8gdGhlIE1vZGlmeVRhYmxlIHBsYW4gbm9kZS4pCiAJICovCi0JcXVlcnktPmNhblNldFRh ZyA9IGZhbHNlOworCVF1ZXJ5Q2xlYXJGbGFnKHF1ZXJ5LCBDQU5fU0VUX1RBRyk7CiAKIAlp ZiAoIWN0ZS0+Y3RlcmVjdXJzaXZlKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9tZXJnZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX21lcmdlLmMK aW5kZXggNWY2YTY4M2FiOS4uYmRlY2ZiMjI0NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX21lcmdlLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX21l cmdlLmMKQEAgLTEwOCw3ICsxMDgsNyBAQCB0cmFuc2Zvcm1NZXJnZVN0bXQoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBNZXJnZVN0bXQgKnN0bXQpCiAJQXNzZXJ0KHBzdGF0ZS0+cF9jdGVuYW1l c3BhY2UgPT0gTklMKTsKIAogCXFyeS0+Y29tbWFuZFR5cGUgPSBDTURfTUVSR0U7Ci0JcXJ5 LT5oYXNSZWN1cnNpdmUgPSBmYWxzZTsKKwlRdWVyeUNsZWFyRmxhZyhxcnksIEhBU19SRUNV UlNJVkUpOwogCiAJLyogcHJvY2VzcyB0aGUgV0lUSCBjbGF1c2UgaW5kZXBlbmRlbnRseSBv ZiBhbGwgZWxzZSAqLwogCWlmIChzdG10LT53aXRoQ2xhdXNlKQpAQCAtMTE5LDcgKzExOSw3 IEBAIHRyYW5zZm9ybU1lcmdlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIE1lcmdlU3RtdCAq c3RtdCkKIAkJCQkJIGVycm1zZygiV0lUSCBSRUNVUlNJVkUgaXMgbm90IHN1cHBvcnRlZCBm b3IgTUVSR0Ugc3RhdGVtZW50IikpKTsKIAogCQlxcnktPmN0ZUxpc3QgPSB0cmFuc2Zvcm1X aXRoQ2xhdXNlKHBzdGF0ZSwgc3RtdC0+d2l0aENsYXVzZSk7Ci0JCXFyeS0+aGFzTW9kaWZ5 aW5nQ1RFID0gcHN0YXRlLT5wX2hhc01vZGlmeWluZ0NURTsKKwkJUXVlcnlDb25kU2V0Rmxh ZyhxcnksIHBzdGF0ZS0+cF9oYXNNb2RpZnlpbmdDVEUsIEhBU19NT0RJRllJTkdfQ1RFKTsK IAl9CiAKIAkvKgpAQCAtMjU5LDcgKzI1OSw3IEBAIHRyYW5zZm9ybU1lcmdlU3RtdChQYXJz ZVN0YXRlICpwc3RhdGUsIE1lcmdlU3RtdCAqc3RtdCkKIAogCQkvKiBVc2UgYW4gb3V0ZXIg am9pbiBpZiBhbnkgSU5TRVJUIGFjdGlvbnMgZXhpc3QgaW4gdGhlIGNvbW1hbmQuICovCiAJ CWlmIChhY3Rpb24tPmNvbW1hbmRUeXBlID09IENNRF9JTlNFUlQpCi0JCQlxcnktPm1lcmdl VXNlT3V0ZXJKb2luID0gdHJ1ZTsKKwkJCVF1ZXJ5U2V0RmxhZyhxcnksIE1FUkdFX1VTRV9P VVRFUkpPSU4pOwogCiAJCS8qCiAJCSAqIFNldCBuYW1lc3BhY2UgZm9yIHRoZSBzcGVjaWZp YyBhY3Rpb24uIFRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZQpAQCAtMzkzLDggKzM5Myw4IEBA IHRyYW5zZm9ybU1lcmdlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIE1lcmdlU3RtdCAqc3Rt dCkKIAkvKiBSRVRVUk5JTkcgY291bGQgcG90ZW50aWFsbHkgYmUgYWRkZWQgaW4gdGhlIGZ1 dHVyZSwgYnV0IG5vdCBpbiBTUUwgc3RkICovCiAJcXJ5LT5yZXR1cm5pbmdMaXN0ID0gTlVM TDsKIAotCXFyeS0+aGFzVGFyZ2V0U1JGcyA9IGZhbHNlOwotCXFyeS0+aGFzU3ViTGlua3Mg PSBwc3RhdGUtPnBfaGFzU3ViTGlua3M7CisJUXVlcnlDbGVhckZsYWcocXJ5LCBIQVNfVEFS R0VUX1NSRlMpOworCVF1ZXJ5Q29uZFNldEZsYWcocXJ5LCBwc3RhdGUtPnBfaGFzU3ViTGlu a3MsIEhBU19TVUJfTElOS1MpOwogCiAJYXNzaWduX3F1ZXJ5X2NvbGxhdGlvbnMocHN0YXRl LCBxcnkpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVEZWZp bmUuYyBiL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZURlZmluZS5jCmluZGV4IGI0NDky NDRhNTMuLmUwZWQzZjYxNDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3 cml0ZURlZmluZS5jCisrKyBiL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZURlZmluZS5j CkBAIC0zNTAsNyArMzUwLDcgQEAgRGVmaW5lUXVlcnlSZXdyaXRlKGNvbnN0IGNoYXIgKnJ1 bGVuYW1lLAogCQkvKgogCQkgKiAuLi4gaXQgY2Fubm90IGNvbnRhaW4gZGF0YS1tb2RpZnlp bmcgV0lUSCAuLi4KIAkJICovCi0JCWlmIChxdWVyeS0+aGFzTW9kaWZ5aW5nQ1RFKQorCQlp ZiAoUXVlcnlIYXNNb2RpZnlpbmdDVEUocXVlcnkpKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJ CQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJCQkgZXJy bXNnKCJydWxlcyBvbiBTRUxFQ1QgbXVzdCBub3QgY29udGFpbiBkYXRhLW1vZGlmeWluZyBz dGF0ZW1lbnRzIGluIFdJVEgiKSkpOwpAQCAtNjg1LDcgKzY4NSw3IEBAIHNldFJ1bGVDaGVj a0FzVXNlcl9RdWVyeShRdWVyeSAqcXJ5LCBPaWQgdXNlcmlkKQogCX0KIAogCS8qIElmIHRo ZXJlIGFyZSBzdWJsaW5rcywgc2VhcmNoIGZvciB0aGVtIGFuZCBwcm9jZXNzIHRoZWlyIFJU RXMgKi8KLQlpZiAocXJ5LT5oYXNTdWJMaW5rcykKKwlpZiAoUXVlcnlIYXNTdWJMaW5rcyhx cnkpKQogCQlxdWVyeV90cmVlX3dhbGtlcihxcnksIHNldFJ1bGVDaGVja0FzVXNlcl93YWxr ZXIsICh2b2lkICopICZ1c2VyaWQsCiAJCQkJCQkgIFFUV19JR05PUkVfUkNfU1VCUVVFUklF Uyk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVy LmMgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMKaW5kZXggZjYwYjM0 ZGViNi4uNDJiMjNhNmQ4NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdy aXRlSGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIu YwpAQCAtMjkyLDcgKzI5Miw3IEBAIEFjcXVpcmVSZXdyaXRlTG9ja3MoUXVlcnkgKnBhcnNl dHJlZSwKIAkgKiBSZWN1cnNlIGludG8gc3VibGluayBzdWJxdWVyaWVzLCB0b28uICBCdXQg d2UgYWxyZWFkeSBkaWQgdGhlIG9uZXMgaW4KIAkgKiB0aGUgcnRhYmxlIGFuZCBjdGVMaXN0 LgogCSAqLwotCWlmIChwYXJzZXRyZWUtPmhhc1N1YkxpbmtzKQorCWlmIChRdWVyeUhhc1N1 YkxpbmtzKHBhcnNldHJlZSkpCiAJCXF1ZXJ5X3RyZWVfd2Fsa2VyKHBhcnNldHJlZSwgYWNx dWlyZUxvY2tzT25TdWJMaW5rcywgJmNvbnRleHQsCiAJCQkJCQkgIFFUV19JR05PUkVfUkNf U1VCUVVFUklFUyk7CiB9CkBAIC00NTcsNyArNDU3LDcgQEAgcmV3cml0ZVJ1bGVBY3Rpb24o UXVlcnkgKnBhcnNldHJlZSwKIAkgKiBUaGVyZSBjb3VsZCBoYXZlIGJlZW4gc29tZSBTdWJM aW5rcyBpbiBwYXJzZXRyZWUncyBydGFibGUsIGluIHdoaWNoCiAJICogY2FzZSB3ZSdkIGJl dHRlciBtYXJrIHRoZSBzdWJfYWN0aW9uIGNvcnJlY3RseS4KIAkgKi8KLQlpZiAocGFyc2V0 cmVlLT5oYXNTdWJMaW5rcyAmJiAhc3ViX2FjdGlvbi0+aGFzU3ViTGlua3MpCisJaWYgKFF1 ZXJ5SGFzU3ViTGlua3MocGFyc2V0cmVlKSAmJiAhUXVlcnlIYXNTdWJMaW5rcyhzdWJfYWN0 aW9uKSkKIAl7CiAJCWZvcmVhY2gobGMsIHBhcnNldHJlZS0+cnRhYmxlKQogCQl7CkBAIC00 NjYsMjggKzQ2NiwyOCBAQCByZXdyaXRlUnVsZUFjdGlvbihRdWVyeSAqcGFyc2V0cmVlLAog CQkJc3dpdGNoIChydGUtPnJ0ZWtpbmQpCiAJCQl7CiAJCQkJY2FzZSBSVEVfUkVMQVRJT046 Ci0JCQkJCXN1Yl9hY3Rpb24tPmhhc1N1YkxpbmtzID0KLQkJCQkJCWNoZWNrRXhwckhhc1N1 YkxpbmsoKE5vZGUgKikgcnRlLT50YWJsZXNhbXBsZSk7CisJCQkJCVF1ZXJ5Q29uZFNldEZs YWcoc3ViX2FjdGlvbiwKKwkJCQkJCWNoZWNrRXhwckhhc1N1YkxpbmsoKE5vZGUgKikgcnRl LT50YWJsZXNhbXBsZSksIEhBU19TVUJfTElOS1MpOwogCQkJCQlicmVhazsKIAkJCQljYXNl IFJURV9GVU5DVElPTjoKLQkJCQkJc3ViX2FjdGlvbi0+aGFzU3ViTGlua3MgPQotCQkJCQkJ Y2hlY2tFeHBySGFzU3ViTGluaygoTm9kZSAqKSBydGUtPmZ1bmN0aW9ucyk7CisJCQkJCVF1 ZXJ5Q29uZFNldEZsYWcoc3ViX2FjdGlvbiwKKwkJCQkJCWNoZWNrRXhwckhhc1N1Ykxpbmso KE5vZGUgKikgcnRlLT5mdW5jdGlvbnMpLCBIQVNfU1VCX0xJTktTKTsKIAkJCQkJYnJlYWs7 CiAJCQkJY2FzZSBSVEVfVEFCTEVGVU5DOgotCQkJCQlzdWJfYWN0aW9uLT5oYXNTdWJMaW5r cyA9Ci0JCQkJCQljaGVja0V4cHJIYXNTdWJMaW5rKChOb2RlICopIHJ0ZS0+dGFibGVmdW5j KTsKKwkJCQkJUXVlcnlDb25kU2V0RmxhZyhzdWJfYWN0aW9uLAorCQkJCQkJY2hlY2tFeHBy SGFzU3ViTGluaygoTm9kZSAqKSBydGUtPnRhYmxlZnVuYyksIEhBU19TVUJfTElOS1MpOwog CQkJCQlicmVhazsKIAkJCQljYXNlIFJURV9WQUxVRVM6Ci0JCQkJCXN1Yl9hY3Rpb24tPmhh c1N1YkxpbmtzID0KLQkJCQkJCWNoZWNrRXhwckhhc1N1YkxpbmsoKE5vZGUgKikgcnRlLT52 YWx1ZXNfbGlzdHMpOworCQkJCQlRdWVyeUNvbmRTZXRGbGFnKHN1Yl9hY3Rpb24sCisJCQkJ CQljaGVja0V4cHJIYXNTdWJMaW5rKChOb2RlICopIHJ0ZS0+dmFsdWVzX2xpc3RzKSwgSEFT X1NVQl9MSU5LUyk7CiAJCQkJCWJyZWFrOwogCQkJCWRlZmF1bHQ6CiAJCQkJCS8qIG90aGVy IFJURSB0eXBlcyBkb24ndCBjb250YWluIGJhcmUgZXhwcmVzc2lvbnMgKi8KIAkJCQkJYnJl YWs7CiAJCQl9Ci0JCQlzdWJfYWN0aW9uLT5oYXNTdWJMaW5rcyB8PQotCQkJCWNoZWNrRXhw ckhhc1N1YkxpbmsoKE5vZGUgKikgcnRlLT5zZWN1cml0eVF1YWxzKTsKLQkJCWlmIChzdWJf YWN0aW9uLT5oYXNTdWJMaW5rcykKKwkJCWlmIChjaGVja0V4cHJIYXNTdWJMaW5rKChOb2Rl ICopIHJ0ZS0+c2VjdXJpdHlRdWFscykpCisJCQkJUXVlcnlTZXRGbGFnKHN1Yl9hY3Rpb24s IEhBU19TVUJfTElOS1MpOworCQkJaWYgKFF1ZXJ5SGFzU3ViTGlua3Moc3ViX2FjdGlvbikp CiAJCQkJYnJlYWs7CQkJLyogbm8gbmVlZCB0byBrZWVwIHNjYW5uaW5nIHJ0YWJsZSAqLwog CQl9CiAJfQpAQCAtNDk5LDcgKzQ5OSw4IEBAIHJld3JpdGVSdWxlQWN0aW9uKFF1ZXJ5ICpw YXJzZXRyZWUsCiAJICogdGhpcyBpcyBhIG5vLW9wIGJlY2F1c2UgUkxTIGNvbmRpdGlvbnMg YXJlbid0IGFkZGVkIHRpbGwgbGF0ZXIsIGJ1dCBpdAogCSAqIHNlZW1zIGxpa2UgZ29vZCBm dXR1cmUtcHJvb2ZpbmcgdG8gZG8gdGhpcyBhbnl3YXkuKQogCSAqLwotCXN1Yl9hY3Rpb24t Pmhhc1Jvd1NlY3VyaXR5IHw9IHBhcnNldHJlZS0+aGFzUm93U2VjdXJpdHk7CisJaWYoUXVl cnlIYXNSb3dTZWN1cml0eShwYXJzZXRyZWUpKQorCQlRdWVyeVNldEZsYWcoc3ViX2FjdGlv biwgSEFTX1JPV19TRUNVUklUWSk7CiAKIAkvKgogCSAqIEVhY2ggcnVsZSBhY3Rpb24ncyBq b2ludHJlZSBzaG91bGQgYmUgdGhlIG1haW4gcGFyc2V0cmVlJ3Mgam9pbnRyZWUKQEAgLTU0 Niw5ICs1NDcsOSBAQCByZXdyaXRlUnVsZUFjdGlvbihRdWVyeSAqcGFyc2V0cmVlLAogCQkJ ICogVGhlcmUgY291bGQgaGF2ZSBiZWVuIHNvbWUgU3ViTGlua3MgaW4gbmV3am9pbnRyZWUs IGluIHdoaWNoCiAJCQkgKiBjYXNlIHdlJ2QgYmV0dGVyIG1hcmsgdGhlIHN1Yl9hY3Rpb24g Y29ycmVjdGx5LgogCQkJICovCi0JCQlpZiAocGFyc2V0cmVlLT5oYXNTdWJMaW5rcyAmJiAh c3ViX2FjdGlvbi0+aGFzU3ViTGlua3MpCi0JCQkJc3ViX2FjdGlvbi0+aGFzU3ViTGlua3Mg PQotCQkJCQljaGVja0V4cHJIYXNTdWJMaW5rKChOb2RlICopIG5ld2pvaW50cmVlKTsKKwkJ CWlmIChRdWVyeUhhc1N1YkxpbmtzKHBhcnNldHJlZSkgJiYgIVF1ZXJ5SGFzU3ViTGlua3Mo c3ViX2FjdGlvbikpCisJCQkJUXVlcnlDb25kU2V0RmxhZyhzdWJfYWN0aW9uLAorCQkJCQkJ CQkgY2hlY2tFeHBySGFzU3ViTGluaygoTm9kZSAqKSBuZXdqb2ludHJlZSksIEhBU19TVUJf TElOS1MpOwogCQl9CiAJfQogCkBAIC01OTAsOCArNTkxLDEwIEBAIHJld3JpdGVSdWxlQWN0 aW9uKFF1ZXJ5ICpwYXJzZXRyZWUsCiAJCXN1Yl9hY3Rpb24tPmN0ZUxpc3QgPSBsaXN0X2Nv bmNhdChzdWJfYWN0aW9uLT5jdGVMaXN0LAogCQkJCQkJCQkJCSAgY29weU9iamVjdChwYXJz ZXRyZWUtPmN0ZUxpc3QpKTsKIAkJLyogLi4uIGFuZCBkb24ndCBmb3JnZXQgYWJvdXQgdGhl IGFzc29jaWF0ZWQgZmxhZ3MgKi8KLQkJc3ViX2FjdGlvbi0+aGFzUmVjdXJzaXZlIHw9IHBh cnNldHJlZS0+aGFzUmVjdXJzaXZlOwotCQlzdWJfYWN0aW9uLT5oYXNNb2RpZnlpbmdDVEUg fD0gcGFyc2V0cmVlLT5oYXNNb2RpZnlpbmdDVEU7CisJCWlmIChRdWVyeUhhc1JlY3Vyc2l2 ZShwYXJzZXRyZWUpKQorCQkJUXVlcnlTZXRGbGFnKHN1Yl9hY3Rpb24sIEhBU19SRUNVUlNJ VkUpOworCQlpZiAoUXVlcnlIYXNNb2RpZnlpbmdDVEUocGFyc2V0cmVlKSkKKwkJCVF1ZXJ5 U2V0RmxhZyhzdWJfYWN0aW9uLCBIQVNfTU9ESUZZSU5HX0NURSk7CiAKIAkJLyoKIAkJICog SWYgcnVsZV9hY3Rpb24gaXMgZGlmZmVyZW50IGZyb20gc3ViX2FjdGlvbiAoaS5lLiwgdGhl IHJ1bGUgYWN0aW9uCkBAIC02MDUsNyArNjA4LDcgQEAgcmV3cml0ZVJ1bGVBY3Rpb24oUXVl cnkgKnBhcnNldHJlZSwKIAkJICogaGF2ZSB0byBpbmNyZW1lbnQgY3RlbGV2ZWxzdXAgaW4g UlRFcyBhbmQgU3ViTGlua3MgY29waWVkIGZyb20gdGhlCiAJCSAqIG9yaWdpbmFsIHF1ZXJ5 LiAgRm9yIG5vdywgaXQgZG9lc24ndCBzZWVtIHdvcnRoIHRoZSB0cm91YmxlLgogCQkgKi8K LQkJaWYgKHN1Yl9hY3Rpb24tPmhhc01vZGlmeWluZ0NURSAmJiBydWxlX2FjdGlvbiAhPSBz dWJfYWN0aW9uKQorCQlpZiAoUXVlcnlIYXNNb2RpZnlpbmdDVEUoc3ViX2FjdGlvbikgJiYg cnVsZV9hY3Rpb24gIT0gc3ViX2FjdGlvbikKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShl cnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkJIGVycm1zZygi SU5TRVJUIC4uLiBTRUxFQ1QgcnVsZSBhY3Rpb25zIGFyZSBub3Qgc3VwcG9ydGVkIGZvciBx dWVyaWVzIGhhdmluZyBkYXRhLW1vZGlmeWluZyBzdGF0ZW1lbnRzIGluIFdJVEgiKSkpOwpA QCAtNjcyLDE1ICs2NzUsMTYgQEAgcmV3cml0ZVJ1bGVBY3Rpb24oUXVlcnkgKnBhcnNldHJl ZSwKIAkJCQkJCQkJCSAgcnVsZV9hY3Rpb24tPnJldHVybmluZ0xpc3QsCiAJCQkJCQkJCQkg IFJFUExBQ0VWQVJTX1JFUE9SVF9FUlJPUiwKIAkJCQkJCQkJCSAgMCwKLQkJCQkJCQkJCSAg JnJ1bGVfYWN0aW9uLT5oYXNTdWJMaW5rcyk7CisJCQkJCQkJCQkgICZydWxlX2FjdGlvbi0+ ZmxhZ3MpOwogCiAJCS8qCiAJCSAqIFRoZXJlIGNvdWxkIGhhdmUgYmVlbiBzb21lIFN1Ykxp bmtzIGluIHBhcnNldHJlZSdzIHJldHVybmluZ0xpc3QsCiAJCSAqIGluIHdoaWNoIGNhc2Ug d2UnZCBiZXR0ZXIgbWFyayB0aGUgcnVsZV9hY3Rpb24gY29ycmVjdGx5LgogCQkgKi8KLQkJ aWYgKHBhcnNldHJlZS0+aGFzU3ViTGlua3MgJiYgIXJ1bGVfYWN0aW9uLT5oYXNTdWJMaW5r cykKLQkJCXJ1bGVfYWN0aW9uLT5oYXNTdWJMaW5rcyA9Ci0JCQkJY2hlY2tFeHBySGFzU3Vi TGluaygoTm9kZSAqKSBydWxlX2FjdGlvbi0+cmV0dXJuaW5nTGlzdCk7CisJCWlmIChRdWVy eUhhc1N1YkxpbmtzKHBhcnNldHJlZSkgJiYgIVF1ZXJ5SGFzU3ViTGlua3MocnVsZV9hY3Rp b24pKQorCQkJUXVlcnlDb25kU2V0RmxhZyhydWxlX2FjdGlvbiwKKwkJCQkJCQkgY2hlY2tF eHBySGFzU3ViTGluaygoTm9kZSAqKSBydWxlX2FjdGlvbi0+cmV0dXJuaW5nTGlzdCksCisJ CQkJCQkJIEhBU19TVUJfTElOS1MpOwogCX0KIAogCXJldHVybiBydWxlX2FjdGlvbjsKQEAg LTIxNTQsNyArMjE1OCw3IEBAIGZpcmVSSVJydWxlcyhRdWVyeSAqcGFyc2V0cmVlLCBMaXN0 ICphY3RpdmVSSVJzKQogCSAqIFJlY3Vyc2UgaW50byBzdWJsaW5rIHN1YnF1ZXJpZXMsIHRv by4gIEJ1dCB3ZSBhbHJlYWR5IGRpZCB0aGUgb25lcyBpbgogCSAqIHRoZSBydGFibGUgYW5k IGN0ZUxpc3QuCiAJICovCi0JaWYgKHBhcnNldHJlZS0+aGFzU3ViTGlua3MpCisJaWYgKFF1 ZXJ5SGFzU3ViTGlua3MocGFyc2V0cmVlKSkKIAkJcXVlcnlfdHJlZV93YWxrZXIocGFyc2V0 cmVlLCBmaXJlUklSb25TdWJMaW5rLCAodm9pZCAqKSBhY3RpdmVSSVJzLAogCQkJCQkJICBR VFdfSUdOT1JFX1JDX1NVQlFVRVJJRVMpOwogCkBAIC0yMjUzLDkgKzIyNTcsOSBAQCBmaXJl UklScnVsZXMoUXVlcnkgKnBhcnNldHJlZSwgTGlzdCAqYWN0aXZlUklScykKIAkJICogYXBw bGllcywgb3IgaWYgdGhlIG5ldyBxdWFscyBoYWQgc3VibGlua3MuCiAJCSAqLwogCQlpZiAo aGFzUm93U2VjdXJpdHkpCi0JCQlwYXJzZXRyZWUtPmhhc1Jvd1NlY3VyaXR5ID0gdHJ1ZTsK KwkJCVF1ZXJ5U2V0RmxhZyhwYXJzZXRyZWUsIEhBU19ST1dfU0VDVVJJVFkpOwogCQlpZiAo aGFzU3ViTGlua3MpCi0JCQlwYXJzZXRyZWUtPmhhc1N1YkxpbmtzID0gdHJ1ZTsKKwkJCVF1 ZXJ5U2V0RmxhZyhwYXJzZXRyZWUsIEhBU19TVUJfTElOS1MpOwogCiAJCXRhYmxlX2Nsb3Nl KHJlbCwgTm9Mb2NrKTsKIAl9CkBAIC0yMzExLDcgKzIzMTUsNyBAQCBDb3B5QW5kQWRkSW52 ZXJ0ZWRRdWFsKFF1ZXJ5ICpwYXJzZXRyZWUsCiAJCQkJCQkJCQkJCSBSRVBMQUNFVkFSU19D SEFOR0VfVkFSTk8gOgogCQkJCQkJCQkJCQkgUkVQTEFDRVZBUlNfU1VCU1RJVFVURV9OVUxM LAogCQkJCQkJCQkJCQkgcnRfaW5kZXgsCi0JCQkJCQkJCQkJCSAmcGFyc2V0cmVlLT5oYXNT dWJMaW5rcyk7CisJCQkJCQkJCQkJCSAmcGFyc2V0cmVlLT5mbGFncyk7CiAJLyogQW5kIGF0 dGFjaCB0aGUgZml4ZWQgcXVhbCAqLwogCUFkZEludmVydGVkUXVhbChwYXJzZXRyZWUsIG5l d19xdWFsKTsKIApAQCAtMjQxOSw3ICsyNDIzLDcgQEAgZmlyZVJ1bGVzKFF1ZXJ5ICpwYXJz ZXRyZWUsCiAJCQkJCQkJCQkJCXJldHVybmluZ19mbGFnKTsKIAogCQkJcnVsZV9hY3Rpb24t PnF1ZXJ5U291cmNlID0gcXNyYzsKLQkJCXJ1bGVfYWN0aW9uLT5jYW5TZXRUYWcgPSBmYWxz ZTsgLyogbWlnaHQgY2hhbmdlIGxhdGVyICovCisJCQlRdWVyeUNsZWFyRmxhZyhydWxlX2Fj dGlvbiwgQ0FOX1NFVF9UQUcpOyAvKiBtaWdodCBjaGFuZ2UgbGF0ZXIgKi8KIAogCQkJcmVz dWx0cyA9IGxhcHBlbmQocmVzdWx0cywgcnVsZV9hY3Rpb24pOwogCQl9CkBAIC0yNjIyLDEz ICsyNjI2LDEzIEBAIHZpZXdfcXVlcnlfaXNfYXV0b191cGRhdGFibGUoUXVlcnkgKnZpZXdx dWVyeSwgYm9vbCBjaGVja19jb2xzKQogCSAqIFRoZXNlIHJlc3RyaWN0aW9ucyBlbnN1cmUg dGhhdCBlYWNoIHJvdyBvZiB0aGUgdmlldyBjb3JyZXNwb25kcyB0byBhCiAJICogdW5pcXVl IHJvdyBpbiB0aGUgdW5kZXJseWluZyBiYXNlIHJlbGF0aW9uLgogCSAqLwotCWlmICh2aWV3 cXVlcnktPmhhc0FnZ3MpCisJaWYgKFF1ZXJ5SGFzQWdncyh2aWV3cXVlcnkpKQogCQlyZXR1 cm4gZ2V0dGV4dF9ub29wKCJWaWV3cyB0aGF0IHJldHVybiBhZ2dyZWdhdGUgZnVuY3Rpb25z IGFyZSBub3QgYXV0b21hdGljYWxseSB1cGRhdGFibGUuIik7CiAKLQlpZiAodmlld3F1ZXJ5 LT5oYXNXaW5kb3dGdW5jcykKKwlpZiAoUXVlcnlIYXNXaW5kb3dGdW5jcyh2aWV3cXVlcnkp KQogCQlyZXR1cm4gZ2V0dGV4dF9ub29wKCJWaWV3cyB0aGF0IHJldHVybiB3aW5kb3cgZnVu Y3Rpb25zIGFyZSBub3QgYXV0b21hdGljYWxseSB1cGRhdGFibGUuIik7CiAKLQlpZiAodmll d3F1ZXJ5LT5oYXNUYXJnZXRTUkZzKQorCWlmIChRdWVyeUhhc1RhcmdldFNSRnModmlld3F1 ZXJ5KSkKIAkJcmV0dXJuIGdldHRleHRfbm9vcCgiVmlld3MgdGhhdCByZXR1cm4gc2V0LXJl dHVybmluZyBmdW5jdGlvbnMgYXJlIG5vdCBhdXRvbWF0aWNhbGx5IHVwZGF0YWJsZS4iKTsK IAogCS8qCkBAIC0zMjEyLDcgKzMyMTYsNyBAQCByZXdyaXRlVGFyZ2V0VmlldyhRdWVyeSAq cGFyc2V0cmVlLCBSZWxhdGlvbiB2aWV3KQogCSAqIGJlIGFueSBzdWJxdWVyaWVzIGluIHRo ZSByYW5nZSB0YWJsZSBvciBDVEVzLCBzbyB3ZSBjYW4gc2tpcCB0aG9zZSwgYXMKIAkgKiBp biBBY3F1aXJlUmV3cml0ZUxvY2tzLgogCSAqLwotCWlmICh2aWV3cXVlcnktPmhhc1N1Ykxp bmtzKQorCWlmIChRdWVyeUhhc1N1YkxpbmtzKHZpZXdxdWVyeSkpCiAJewogCQlhY3F1aXJl TG9ja3NPblN1YkxpbmtzX2NvbnRleHQgY29udGV4dDsKIApAQCAtMzQ3Myw3ICszNDc3LDcg QEAgcmV3cml0ZVRhcmdldFZpZXcoUXVlcnkgKnBhcnNldHJlZSwgUmVsYXRpb24gdmlldykK IAkJCQkJCQkJCSAgdG1wX3RsaXN0LAogCQkJCQkJCQkJICBSRVBMQUNFVkFSU19SRVBPUlRf RVJST1IsCiAJCQkJCQkJCQkgIDAsCi0JCQkJCQkJCQkgICZwYXJzZXRyZWUtPmhhc1N1Ykxp bmtzKTsKKwkJCQkJCQkJCSAgJnBhcnNldHJlZS0+ZmxhZ3MpOwogCX0KIAogCS8qCkBAIC0z NTI0LDggKzM1MjgsOCBAQCByZXdyaXRlVGFyZ2V0VmlldyhRdWVyeSAqcGFyc2V0cmVlLCBS ZWxhdGlvbiB2aWV3KQogCQkJICogTWFrZSBzdXJlIHRoYXQgdGhlIHF1ZXJ5IGlzIG1hcmtl ZCBjb3JyZWN0bHkgaWYgdGhlIGFkZGVkIHF1YWwKIAkJCSAqIGhhcyBzdWJsaW5rcy4KIAkJ CSAqLwotCQkJaWYgKCFwYXJzZXRyZWUtPmhhc1N1YkxpbmtzKQotCQkJCXBhcnNldHJlZS0+ aGFzU3ViTGlua3MgPSBjaGVja0V4cHJIYXNTdWJMaW5rKHZpZXdxdWFsKTsKKwkJCWlmICgh UXVlcnlIYXNTdWJMaW5rcyhwYXJzZXRyZWUpKQorCQkJCVF1ZXJ5Q29uZFNldEZsYWcocGFy c2V0cmVlLCBjaGVja0V4cHJIYXNTdWJMaW5rKHZpZXdxdWFsKSwgSEFTX1NVQl9MSU5LUyk7 CiAJCX0KIAkJZWxzZQogCQkJQWRkUXVhbChwYXJzZXRyZWUsIChOb2RlICopIHZpZXdxdWFs KTsKQEAgLTM1OTYsOSArMzYwMCw5IEBAIHJld3JpdGVUYXJnZXRWaWV3KFF1ZXJ5ICpwYXJz ZXRyZWUsIFJlbGF0aW9uIHZpZXcpCiAJCQkJICogY2FzZSB0aGUgc2FtZSBxdWFsIHdpbGwg aGF2ZSBhbHJlYWR5IGJlZW4gYWRkZWQsIGFuZCB0aGlzCiAJCQkJICogY2hlY2sgd2lsbCBh bHJlYWR5IGhhdmUgYmVlbiBkb25lLgogCQkJCSAqLwotCQkJCWlmICghcGFyc2V0cmVlLT5o YXNTdWJMaW5rcyAmJgorCQkJCWlmICghUXVlcnlIYXNTdWJMaW5rcyhwYXJzZXRyZWUpICYm CiAJCQkJCXBhcnNldHJlZS0+Y29tbWFuZFR5cGUgIT0gQ01EX1VQREFURSkKLQkJCQkJcGFy c2V0cmVlLT5oYXNTdWJMaW5rcyA9IGNoZWNrRXhwckhhc1N1Ykxpbmsod2NvLT5xdWFsKTsK KwkJCQkJUXVlcnlDb25kU2V0RmxhZyhwYXJzZXRyZWUsIGNoZWNrRXhwckhhc1N1Ykxpbmso d2NvLT5xdWFsKSwgSEFTX1NVQl9MSU5LUyk7CiAJCQl9CiAJCX0KIAl9CkBAIC0zNjcwLDcg KzM2NzQsNyBAQCBSZXdyaXRlUXVlcnkoUXVlcnkgKnBhcnNldHJlZSwgTGlzdCAqcmV3cml0 ZV9ldmVudHMsIGludCBvcmlnX3J0X2xlbmd0aCkKIAkJCQkJCSBlcnJtc2coIkRPIElOU1RF QUQgTk9USUZZIHJ1bGVzIGFyZSBub3Qgc3VwcG9ydGVkIGZvciBkYXRhLW1vZGlmeWluZyBz dGF0ZW1lbnRzIGluIFdJVEgiKSkpOwogCQkJfQogCQkJLyogV0lUSCBxdWVyaWVzIHNob3Vs ZCBuZXZlciBiZSBjYW5TZXRUYWcgKi8KLQkJCUFzc2VydCghY3RlcXVlcnktPmNhblNldFRh Zyk7CisJCQlBc3NlcnQoIVF1ZXJ5Q2FuU2V0VGFnKGN0ZXF1ZXJ5KSk7CiAJCQkvKiBQdXNo IHRoZSBzaW5nbGUgUXVlcnkgYmFjayBpbnRvIHRoZSBDVEUgbm9kZSAqLwogCQkJY3RlLT5j dGVxdWVyeSA9IChOb2RlICopIGN0ZXF1ZXJ5OwogCQl9CkBAIC00MjExLDcgKzQyMTUsNyBA QCBRdWVyeVJld3JpdGUoUXVlcnkgKnBhcnNldHJlZSkKIAkgKiBUaGlzIGZ1bmN0aW9uIGlz IG9ubHkgYXBwbGllZCB0byB0b3AtbGV2ZWwgb3JpZ2luYWwgcXVlcmllcwogCSAqLwogCUFz c2VydChwYXJzZXRyZWUtPnF1ZXJ5U291cmNlID09IFFTUkNfT1JJR0lOQUwpOwotCUFzc2Vy dChwYXJzZXRyZWUtPmNhblNldFRhZyk7CisJQXNzZXJ0KFF1ZXJ5Q2FuU2V0VGFnKHBhcnNl dHJlZSkpOwogCiAJLyoKIAkgKiBTdGVwIDEKQEAgLTQyNjUsNyArNDI2OSw3IEBAIFF1ZXJ5 UmV3cml0ZShRdWVyeSAqcGFyc2V0cmVlKQogCiAJCWlmIChxdWVyeS0+cXVlcnlTb3VyY2Ug PT0gUVNSQ19PUklHSU5BTCkKIAkJewotCQkJQXNzZXJ0KHF1ZXJ5LT5jYW5TZXRUYWcpOwor CQkJQXNzZXJ0KFF1ZXJ5Q2FuU2V0VGFnKHF1ZXJ5KSk7CiAJCQlBc3NlcnQoIWZvdW5kT3Jp Z2luYWxRdWVyeSk7CiAJCQlmb3VuZE9yaWdpbmFsUXVlcnkgPSB0cnVlOwogI2lmbmRlZiBV U0VfQVNTRVJUX0NIRUNLSU5HCkBAIC00Mjc0LDcgKzQyNzgsNyBAQCBRdWVyeVJld3JpdGUo UXVlcnkgKnBhcnNldHJlZSkKIAkJfQogCQllbHNlCiAJCXsKLQkJCUFzc2VydCghcXVlcnkt PmNhblNldFRhZyk7CisJCQlBc3NlcnQoIVF1ZXJ5Q2FuU2V0VGFnKHF1ZXJ5KSk7CiAJCQlp ZiAocXVlcnktPmNvbW1hbmRUeXBlID09IG9yaWdDbWRUeXBlICYmCiAJCQkJKHF1ZXJ5LT5x dWVyeVNvdXJjZSA9PSBRU1JDX0lOU1RFQURfUlVMRSB8fAogCQkJCSBxdWVyeS0+cXVlcnlT b3VyY2UgPT0gUVNSQ19RVUFMX0lOU1RFQURfUlVMRSkpCkBAIC00MjgzLDcgKzQyODcsNyBA QCBRdWVyeVJld3JpdGUoUXVlcnkgKnBhcnNldHJlZSkKIAl9CiAKIAlpZiAoIWZvdW5kT3Jp Z2luYWxRdWVyeSAmJiBsYXN0SW5zdGVhZCAhPSBOVUxMKQotCQlsYXN0SW5zdGVhZC0+Y2Fu U2V0VGFnID0gdHJ1ZTsKKwkJUXVlcnlTZXRGbGFnKGxhc3RJbnN0ZWFkLCBDQU5fU0VUX1RB Ryk7CiAKIAlyZXR1cm4gcmVzdWx0czsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl d3JpdGUvcmV3cml0ZU1hbmlwLmMgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVNYW5p cC5jCmluZGV4IDc2Yzk3YTViMjguLjdmYjI4NTliOGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3Jld3JpdGUvcmV3cml0ZU1hbmlwLmMKKysrIGIvc3JjL2JhY2tlbmQvcmV3cml0ZS9y ZXdyaXRlTWFuaXAuYwpAQCAtMTEwMiw4ICsxMTAyLDggQEAgQWRkUXVhbChRdWVyeSAqcGFy c2V0cmVlLCBOb2RlICpxdWFsKQogCSAqIE1ha2Ugc3VyZSBxdWVyeSBpcyBtYXJrZWQgY29y cmVjdGx5IGlmIGFkZGVkIHF1YWwgaGFzIHN1YmxpbmtzLiBOZWVkCiAJICogbm90IHNlYXJj aCBxdWFsIHdoZW4gcXVlcnkgaXMgYWxyZWFkeSBtYXJrZWQuCiAJICovCi0JaWYgKCFwYXJz ZXRyZWUtPmhhc1N1YkxpbmtzKQotCQlwYXJzZXRyZWUtPmhhc1N1YkxpbmtzID0gY2hlY2tF eHBySGFzU3ViTGluayhjb3B5KTsKKwlpZiAoIVF1ZXJ5SGFzU3ViTGlua3MocGFyc2V0cmVl KSkKKwkJUXVlcnlDb25kU2V0RmxhZyhwYXJzZXRyZWUsIGNoZWNrRXhwckhhc1N1Ykxpbmso Y29weSksIEhBU19TVUJfTElOS1MpOwogfQogCiAKQEAgLTEzMzQsNyArMTMzNCw3IEBAIE5v ZGUgKgogcmVwbGFjZV9ydGVfdmFyaWFibGVzKE5vZGUgKm5vZGUsIGludCB0YXJnZXRfdmFy bm8sIGludCBzdWJsZXZlbHNfdXAsCiAJCQkJCSAgcmVwbGFjZV9ydGVfdmFyaWFibGVzX2Nh bGxiYWNrIGNhbGxiYWNrLAogCQkJCQkgIHZvaWQgKmNhbGxiYWNrX2FyZywKLQkJCQkJICBi b29sICpvdXRlcl9oYXNTdWJMaW5rcykKKwkJCQkJICBpbnQgKm91dGVyX2ZsYWdzKQogewog CU5vZGUJICAgKnJlc3VsdDsKIAlyZXBsYWNlX3J0ZV92YXJpYWJsZXNfY29udGV4dCBjb250 ZXh0OwpAQCAtMTM0OSw5ICsxMzQ5LDkgQEAgcmVwbGFjZV9ydGVfdmFyaWFibGVzKE5vZGUg Km5vZGUsIGludCB0YXJnZXRfdmFybm8sIGludCBzdWJsZXZlbHNfdXAsCiAJICogZGV0ZWN0 IG5ldyBzdWJsaW5rcyBiZWNhdXNlIHRoZSBxdWVyeSBhbHJlYWR5IGhhcyBzb21lLgogCSAq LwogCWlmIChub2RlICYmIElzQShub2RlLCBRdWVyeSkpCi0JCWNvbnRleHQuaW5zZXJ0ZWRf c3VibGluayA9ICgoUXVlcnkgKikgbm9kZSktPmhhc1N1YkxpbmtzOwotCWVsc2UgaWYgKG91 dGVyX2hhc1N1YkxpbmtzKQotCQljb250ZXh0Lmluc2VydGVkX3N1YmxpbmsgPSAqb3V0ZXJf aGFzU3ViTGlua3M7CisJCWNvbnRleHQuaW5zZXJ0ZWRfc3VibGluayA9IFF1ZXJ5SGFzU3Vi TGlua3MoKFF1ZXJ5ICopIG5vZGUpOworCWVsc2UgaWYgKG91dGVyX2ZsYWdzKQorCQljb250 ZXh0Lmluc2VydGVkX3N1YmxpbmsgPSBRdWVyeUZsYWdJc1NldCgqb3V0ZXJfZmxhZ3MsIEhB U19TVUJfTElOS1MpOwogCWVsc2UKIAkJY29udGV4dC5pbnNlcnRlZF9zdWJsaW5rID0gZmFs c2U7CiAKQEAgLTEzNjcsOSArMTM2Nyw5IEBAIHJlcGxhY2VfcnRlX3ZhcmlhYmxlcyhOb2Rl ICpub2RlLCBpbnQgdGFyZ2V0X3Zhcm5vLCBpbnQgc3VibGV2ZWxzX3VwLAogCWlmIChjb250 ZXh0Lmluc2VydGVkX3N1YmxpbmspCiAJewogCQlpZiAocmVzdWx0ICYmIElzQShyZXN1bHQs IFF1ZXJ5KSkKLQkJCSgoUXVlcnkgKikgcmVzdWx0KS0+aGFzU3ViTGlua3MgPSB0cnVlOwot CQllbHNlIGlmIChvdXRlcl9oYXNTdWJMaW5rcykKLQkJCSpvdXRlcl9oYXNTdWJMaW5rcyA9 IHRydWU7CisJCQlRdWVyeVNldEZsYWcoKChRdWVyeSAqKSByZXN1bHQpLCBIQVNfU1VCX0xJ TktTKTsKKwkJZWxzZSBpZiAob3V0ZXJfZmxhZ3MpCisJCQlRdWVyeUZsYWdTZXQoKm91dGVy X2ZsYWdzLCBIQVNfU1VCX0xJTktTKTsKIAkJZWxzZQogCQkJZWxvZyhFUlJPUiwgInJlcGxh Y2VfcnRlX3ZhcmlhYmxlcyBpbnNlcnRlZCBhIFN1YkxpbmssIGJ1dCBoYXMgbm9wbGFjZSB0 byByZWNvcmQgaXQiKTsKIAl9CkBAIC0xNDI4LDEyICsxNDI4LDEzIEBAIHJlcGxhY2VfcnRl X3ZhcmlhYmxlc19tdXRhdG9yKE5vZGUgKm5vZGUsCiAKIAkJY29udGV4dC0+c3VibGV2ZWxz X3VwKys7CiAJCXNhdmVfaW5zZXJ0ZWRfc3VibGluayA9IGNvbnRleHQtPmluc2VydGVkX3N1 Ymxpbms7Ci0JCWNvbnRleHQtPmluc2VydGVkX3N1YmxpbmsgPSAoKFF1ZXJ5ICopIG5vZGUp LT5oYXNTdWJMaW5rczsKKwkJY29udGV4dC0+aW5zZXJ0ZWRfc3VibGluayA9IFF1ZXJ5SGFz U3ViTGlua3MoKFF1ZXJ5ICopIG5vZGUpOwogCQluZXdub2RlID0gcXVlcnlfdHJlZV9tdXRh dG9yKChRdWVyeSAqKSBub2RlLAogCQkJCQkJCQkJIHJlcGxhY2VfcnRlX3ZhcmlhYmxlc19t dXRhdG9yLAogCQkJCQkJCQkJICh2b2lkICopIGNvbnRleHQsCiAJCQkJCQkJCQkgMCk7Ci0J CW5ld25vZGUtPmhhc1N1YkxpbmtzIHw9IGNvbnRleHQtPmluc2VydGVkX3N1Ymxpbms7CisJ CWlmIChjb250ZXh0LT5pbnNlcnRlZF9zdWJsaW5rKQorCQkJUXVlcnlTZXRGbGFnKG5ld25v ZGUsIEhBU19TVUJfTElOS1MpOwogCQljb250ZXh0LT5pbnNlcnRlZF9zdWJsaW5rID0gc2F2 ZV9pbnNlcnRlZF9zdWJsaW5rOwogCQljb250ZXh0LT5zdWJsZXZlbHNfdXAtLTsKIAkJcmV0 dXJuIChOb2RlICopIG5ld25vZGU7CkBAIC0xNzY0LDcgKzE3NjUsNyBAQCBSZXBsYWNlVmFy c0Zyb21UYXJnZXRMaXN0KE5vZGUgKm5vZGUsCiAJCQkJCQkgIExpc3QgKnRhcmdldGxpc3Qs CiAJCQkJCQkgIFJlcGxhY2VWYXJzTm9NYXRjaE9wdGlvbiBub21hdGNoX29wdGlvbiwKIAkJ CQkJCSAgaW50IG5vbWF0Y2hfdmFybm8sCi0JCQkJCQkgIGJvb2wgKm91dGVyX2hhc1N1Ykxp bmtzKQorCQkJCQkJICBpbnQgKm91dGVyX2ZsYWdzKQogewogCVJlcGxhY2VWYXJzRnJvbVRh cmdldExpc3RfY29udGV4dCBjb250ZXh0OwogCkBAIC0xNzc2LDUgKzE3NzcsNSBAQCBSZXBs YWNlVmFyc0Zyb21UYXJnZXRMaXN0KE5vZGUgKm5vZGUsCiAJcmV0dXJuIHJlcGxhY2VfcnRl X3ZhcmlhYmxlcyhub2RlLCB0YXJnZXRfdmFybm8sIHN1YmxldmVsc191cCwKIAkJCQkJCQkJ IFJlcGxhY2VWYXJzRnJvbVRhcmdldExpc3RfY2FsbGJhY2ssCiAJCQkJCQkJCSAodm9pZCAq KSAmY29udGV4dCwKLQkJCQkJCQkJIG91dGVyX2hhc1N1YkxpbmtzKTsKKwkJCQkJCQkJIG91 dGVyX2ZsYWdzKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0 ZVNlYXJjaEN5Y2xlLmMgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVTZWFyY2hDeWNs ZS5jCmluZGV4IDkxMWE5MDE4MDguLmQzY2QwMmM0ZTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3Jld3JpdGUvcmV3cml0ZVNlYXJjaEN5Y2xlLmMKKysrIGIvc3JjL2JhY2tlbmQvcmV3 cml0ZS9yZXdyaXRlU2VhcmNoQ3ljbGUuYwpAQCAtMjc4LDcgKzI3OCw3IEBAIHJld3JpdGVT ZWFyY2hBbmRDeWNsZShDb21tb25UYWJsZUV4cHIgKmN0ZSkKIAkgKi8KIAluZXdxMSA9IG1h a2VOb2RlKFF1ZXJ5KTsKIAluZXdxMS0+Y29tbWFuZFR5cGUgPSBDTURfU0VMRUNUOwotCW5l d3ExLT5jYW5TZXRUYWcgPSB0cnVlOworCVF1ZXJ5U2V0RmxhZyhuZXdxMSwgQ0FOX1NFVF9U QUcpOwogCiAJbmV3cnRlID0gbWFrZU5vZGUoUmFuZ2VUYmxFbnRyeSk7CiAJbmV3cnRlLT5y dGVraW5kID0gUlRFX1NVQlFVRVJZOwpAQCAtMzY1LDcgKzM2NSw3IEBAIHJld3JpdGVTZWFy Y2hBbmRDeWNsZShDb21tb25UYWJsZUV4cHIgKmN0ZSkKIAkgKi8KIAluZXdxMiA9IG1ha2VO b2RlKFF1ZXJ5KTsKIAluZXdxMi0+Y29tbWFuZFR5cGUgPSBDTURfU0VMRUNUOwotCW5ld3Ey LT5jYW5TZXRUYWcgPSB0cnVlOworCVF1ZXJ5U2V0RmxhZyhuZXdxMiwgQ0FOX1NFVF9UQUcp OwogCiAJbmV3cnRlID0gbWFrZU5vZGUoUmFuZ2VUYmxFbnRyeSk7CiAJbmV3cnRlLT5ydGVr aW5kID0gUlRFX1NVQlFVRVJZOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0 Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4IDJjNjNiNzg3NWEu LjE4MTAwMTI4Y2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwor KysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTk4NCw3ICs5ODQsNyBAQCBw Z19wbGFuX3F1ZXJpZXMoTGlzdCAqcXVlcnl0cmVlcywgY29uc3QgY2hhciAqcXVlcnlfc3Ry aW5nLCBpbnQgY3Vyc29yT3B0aW9ucywKIAkJCS8qIFV0aWxpdHkgY29tbWFuZHMgcmVxdWly ZSBubyBwbGFubmluZy4gKi8KIAkJCXN0bXQgPSBtYWtlTm9kZShQbGFubmVkU3RtdCk7CiAJ CQlzdG10LT5jb21tYW5kVHlwZSA9IENNRF9VVElMSVRZOwotCQkJc3RtdC0+Y2FuU2V0VGFn ID0gcXVlcnktPmNhblNldFRhZzsKKwkJCXN0bXQtPmNhblNldFRhZyA9IFF1ZXJ5Q2FuU2V0 VGFnKHF1ZXJ5KTsKIAkJCXN0bXQtPnV0aWxpdHlTdG10ID0gcXVlcnktPnV0aWxpdHlTdG10 OwogCQkJc3RtdC0+c3RtdF9sb2NhdGlvbiA9IHF1ZXJ5LT5zdG10X2xvY2F0aW9uOwogCQkJ c3RtdC0+c3RtdF9sZW4gPSBxdWVyeS0+c3RtdF9sZW47CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC90Y29wL3BxdWVyeS5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYwppbmRleCAw YzQ1ZmNmMzE4Li4zMjlmYzA1YWM0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3Bx dWVyeS5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKQEAgLTIyNSwxMSArMjI1 LDExIEBAIENob29zZVBvcnRhbFN0cmF0ZWd5KExpc3QgKnN0bXRzKQogCQl7CiAJCQlRdWVy eQkgICAqcXVlcnkgPSAoUXVlcnkgKikgc3RtdDsKIAotCQkJaWYgKHF1ZXJ5LT5jYW5TZXRU YWcpCisJCQlpZiAoUXVlcnlDYW5TZXRUYWcocXVlcnkpKQogCQkJewogCQkJCWlmIChxdWVy eS0+Y29tbWFuZFR5cGUgPT0gQ01EX1NFTEVDVCkKIAkJCQl7Ci0JCQkJCWlmIChxdWVyeS0+ aGFzTW9kaWZ5aW5nQ1RFKQorCQkJCQlpZiAoUXVlcnlIYXNNb2RpZnlpbmdDVEUocXVlcnkp KQogCQkJCQkJcmV0dXJuIFBPUlRBTF9PTkVfTU9EX1dJVEg7CiAJCQkJCWVsc2UKIAkJCQkJ CXJldHVybiBQT1JUQUxfT05FX1NFTEVDVDsKQEAgLTI4Myw3ICsyODMsNyBAQCBDaG9vc2VQ b3J0YWxTdHJhdGVneShMaXN0ICpzdG10cykKIAkJewogCQkJUXVlcnkJICAgKnF1ZXJ5ID0g KFF1ZXJ5ICopIHN0bXQ7CiAKLQkJCWlmIChxdWVyeS0+Y2FuU2V0VGFnKQorCQkJaWYgKFF1 ZXJ5Q2FuU2V0VGFnKHF1ZXJ5KSkKIAkJCXsKIAkJCQlpZiAoKytuU2V0VGFnID4gMSkKIAkJ CQkJcmV0dXJuIFBPUlRBTF9NVUxUSV9RVUVSWTsJLyogbm8gbmVlZCB0byBsb29rIGZ1cnRo ZXIgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwppbmRleCBhOTI4YThjNTVkLi5k YWVjNDljMjg2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxz LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC01NTYyLDcg KzU1NjIsNyBAQCBnZXRfd2l0aF9jbGF1c2UoUXVlcnkgKnF1ZXJ5LCBkZXBhcnNlX2NvbnRl eHQgKmNvbnRleHQpCiAJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyAnKTsKIAl9CiAK LQlpZiAocXVlcnktPmhhc1JlY3Vyc2l2ZSkKKwlpZiAoUXVlcnlIYXNSZWN1cnNpdmUocXVl cnkpKQogCQlzZXAgPSAiV0lUSCBSRUNVUlNJVkUgIjsKIAllbHNlCiAJCXNlcCA9ICJXSVRI ICI7CkBAIC01NzYzLDcgKzU3NjMsNyBAQCBnZXRfc2VsZWN0X3F1ZXJ5X2RlZihRdWVyeSAq cXVlcnksIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwKIAl9CiAKIAkvKiBBZGQgRk9SIFtL RVldIFVQREFURS9TSEFSRSBjbGF1c2VzIGlmIHByZXNlbnQgKi8KLQlpZiAocXVlcnktPmhh c0ZvclVwZGF0ZSkKKwlpZiAoUXVlcnlIYXNGb3JVcGRhdGUocXVlcnkpKQogCXsKIAkJZm9y ZWFjaChsLCBxdWVyeS0+cm93TWFya3MpCiAJCXsKQEAgLTU5MTYsNyArNTkxNiw3IEBAIGdl dF9iYXNpY19zZWxlY3RfcXVlcnkoUXVlcnkgKnF1ZXJ5LCBkZXBhcnNlX2NvbnRleHQgKmNv bnRleHQsCiAJLyoKIAkgKiBCdWlsZCB1cCB0aGUgcXVlcnkgc3RyaW5nIC0gZmlyc3Qgd2Ug c2F5IFNFTEVDVAogCSAqLwotCWlmIChxdWVyeS0+aXNSZXR1cm4pCisJaWYgKFF1ZXJ5SXNS ZXR1cm4ocXVlcnkpKQogCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIlJFVFVSTiIp OwogCWVsc2UKIAkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICJTRUxFQ1QiKTsKQEAg LTU5MjQsNyArNTkyNCw3IEBAIGdldF9iYXNpY19zZWxlY3RfcXVlcnkoUXVlcnkgKnF1ZXJ5 LCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCiAJLyogQWRkIHRoZSBESVNUSU5DVCBjbGF1 c2UgaWYgZ2l2ZW4gKi8KIAlpZiAocXVlcnktPmRpc3RpbmN0Q2xhdXNlICE9IE5JTCkKIAl7 Ci0JCWlmIChxdWVyeS0+aGFzRGlzdGluY3RPbikKKwkJaWYgKFF1ZXJ5SGFzRGlzdGluY3RP bihxdWVyeSkpCiAJCXsKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiIERJU1RJ TkNUIE9OICgiKTsKIAkJCXNlcCA9ICIiOwpAQCAtNjg5OCw3ICs2ODk4LDcgQEAgZ2V0X3Vw ZGF0ZV9xdWVyeV90YXJnZXRsaXN0X2RlZihRdWVyeSAqcXVlcnksIExpc3QgKnRhcmdldExp c3QsCiAJICogZW50cmllcy4KIAkgKi8KIAltYV9zdWJsaW5rcyA9IE5JTDsKLQlpZiAocXVl cnktPmhhc1N1YkxpbmtzKQkJLyogZWxzZSB0aGVyZSBjYW4ndCBiZSBhbnkgKi8KKwlpZiAo UXVlcnlIYXNTdWJMaW5rcyhxdWVyeSkpCQkvKiBlbHNlIHRoZXJlIGNhbid0IGJlIGFueSAq LwogCXsKIAkJZm9yZWFjaChsLCB0YXJnZXRMaXN0KQogCQl7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL3BsYW5jYWNoZS5jCmluZGV4IDUxOTRjYmYyY2MuLmZjZjM3MTYyMmEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCkBAIC0xMzg0LDcgKzEzODQsNyBAQCBDYWNo ZWRQbGFuQWxsb3dzU2ltcGxlVmFsaWRpdHlDaGVjayhDYWNoZWRQbGFuU291cmNlICpwbGFu c291cmNlLAogCiAJCWlmIChxdWVyeS0+Y29tbWFuZFR5cGUgPT0gQ01EX1VUSUxJVFkpCiAJ CQlyZXR1cm4gZmFsc2U7Ci0JCWlmIChxdWVyeS0+cnRhYmxlIHx8IHF1ZXJ5LT5jdGVMaXN0 IHx8IHF1ZXJ5LT5oYXNTdWJMaW5rcykKKwkJaWYgKHF1ZXJ5LT5ydGFibGUgfHwgcXVlcnkt PmN0ZUxpc3QgfHwgUXVlcnlIYXNTdWJMaW5rcyhxdWVyeSkpCiAJCQlyZXR1cm4gZmFsc2U7 CiAJfQogCkBAIC0xNzYwLDcgKzE3NjAsNyBAQCBRdWVyeUxpc3RHZXRQcmltYXJ5U3RtdChM aXN0ICpzdG10cykKIAl7CiAJCVF1ZXJ5CSAgICpzdG10ID0gbGZpcnN0X25vZGUoUXVlcnks IGxjKTsKIAotCQlpZiAoc3RtdC0+Y2FuU2V0VGFnKQorCQlpZiAoUXVlcnlDYW5TZXRUYWco c3RtdCkpCiAJCQlyZXR1cm4gc3RtdDsKIAl9CiAJcmV0dXJuIE5VTEw7CkBAIC0xOTA3LDcg KzE5MDcsNyBAQCBTY2FuUXVlcnlGb3JMb2NrcyhRdWVyeSAqcGFyc2V0cmVlLCBib29sIGFj cXVpcmUpCiAJICogUmVjdXJzZSBpbnRvIHN1Ymxpbmsgc3VicXVlcmllcywgdG9vLiAgQnV0 IHdlIGFscmVhZHkgZGlkIHRoZSBvbmVzIGluCiAJICogdGhlIHJ0YWJsZSBhbmQgY3RlTGlz dC4KIAkgKi8KLQlpZiAocGFyc2V0cmVlLT5oYXNTdWJMaW5rcykKKwlpZiAoUXVlcnlIYXNT dWJMaW5rcyhwYXJzZXRyZWUpKQogCXsKIAkJcXVlcnlfdHJlZV93YWxrZXIocGFyc2V0cmVl LCBTY2FuUXVlcnlXYWxrZXIsCiAJCQkJCQkgICh2b2lkICopICZhY3F1aXJlLApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9k ZXMvcGFyc2Vub2Rlcy5oCmluZGV4IGQ1YjA4ZGVkNDQuLmVjYWVmZTliMWEgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9u b2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTEyOSw5ICsxMjksNiBAQCB0eXBlZGVmIHN0cnVjdCBR dWVyeQogCSAqLwogCXVpbnQ2NAkJcXVlcnlJZCBwZ19ub2RlX2F0dHIoZXF1YWxfaWdub3Jl LCBxdWVyeV9qdW1ibGVfaWdub3JlLCByZWFkX3dyaXRlX2lnbm9yZSwgcmVhZF9hcygwKSk7 CiAKLQkvKiBkbyBJIHNldCB0aGUgY29tbWFuZCByZXN1bHQgdGFnPyAqLwotCWJvb2wJCWNh blNldFRhZyBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7Ci0KIAlOb2RlCSAg ICp1dGlsaXR5U3RtdDsJLyogbm9uLW51bGwgaWYgY29tbWFuZFR5cGUgPT0gQ01EX1VUSUxJ VFkgKi8KIAogCS8qCkBAIC0xNDEsMjYgKzEzOCw3IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5 CiAJICovCiAJaW50CQkJcmVzdWx0UmVsYXRpb24gcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJs ZV9pZ25vcmUpOwogCi0JLyogaGFzIGFnZ3JlZ2F0ZXMgaW4gdGxpc3Qgb3IgaGF2aW5nUXVh bCAqLwotCWJvb2wJCWhhc0FnZ3MgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUp OwotCS8qIGhhcyB3aW5kb3cgZnVuY3Rpb25zIGluIHRsaXN0ICovCi0JYm9vbAkJaGFzV2lu ZG93RnVuY3MgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwotCS8qIGhhcyBz ZXQtcmV0dXJuaW5nIGZ1bmN0aW9ucyBpbiB0bGlzdCAqLwotCWJvb2wJCWhhc1RhcmdldFNS RnMgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwotCS8qIGhhcyBzdWJxdWVy eSBTdWJMaW5rICovCi0JYm9vbAkJaGFzU3ViTGlua3MgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1 bWJsZV9pZ25vcmUpOwotCS8qIGRpc3RpbmN0Q2xhdXNlIGlzIGZyb20gRElTVElOQ1QgT04g Ki8KLQlib29sCQloYXNEaXN0aW5jdE9uIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdu b3JlKTsKLQkvKiBXSVRIIFJFQ1VSU0lWRSB3YXMgc3BlY2lmaWVkICovCi0JYm9vbAkJaGFz UmVjdXJzaXZlIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKLQkvKiBoYXMg SU5TRVJUL1VQREFURS9ERUxFVEUgaW4gV0lUSCAqLwotCWJvb2wJCWhhc01vZGlmeWluZ0NU RSBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7Ci0JLyogRk9SIFtLRVldIFVQ REFURS9TSEFSRSB3YXMgc3BlY2lmaWVkICovCi0JYm9vbAkJaGFzRm9yVXBkYXRlIHBnX25v ZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKLQkvKiByZXdyaXRlciBoYXMgYXBwbGll ZCBzb21lIFJMUyBwb2xpY3kgKi8KLQlib29sCQloYXNSb3dTZWN1cml0eSBwZ19ub2RlX2F0 dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7Ci0JLyogaXMgYSBSRVRVUk4gc3RhdGVtZW50ICov Ci0JYm9vbAkJaXNSZXR1cm4gcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwor CWludAkJCWZsYWdzIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIAogCUxp c3QJICAgKmN0ZUxpc3Q7CQkvKiBXSVRIIGxpc3QgKG9mIENvbW1vblRhYmxlRXhwcidzKSAq LwogCkBAIC0xNzUsOCArMTUzLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgUXVlcnkKIAkJCQkJCQkJ ICogYWxzbyBVU0lORyBjbGF1c2UgZm9yIE1FUkdFICovCiAKIAlMaXN0CSAgICptZXJnZUFj dGlvbkxpc3Q7CS8qIGxpc3Qgb2YgYWN0aW9ucyBmb3IgTUVSR0UgKG9ubHkpICovCi0JLyog d2hldGhlciB0byB1c2Ugb3V0ZXIgam9pbiAqLwotCWJvb2wJCW1lcmdlVXNlT3V0ZXJKb2lu IHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIAogCUxpc3QJICAgKnRhcmdl dExpc3Q7CQkvKiB0YXJnZXQgbGlzdCAob2YgVGFyZ2V0RW50cnkpICovCiAKQEAgLTIzMCw2 ICsyMDYsNjAgQEAgdHlwZWRlZiBzdHJ1Y3QgUXVlcnkKIAlpbnQJCQlzdG10X2xlbiBwZ19u b2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CiB9IFF1ZXJ5OwogCisvKiBkbyBJIHNl dCB0aGUgY29tbWFuZCByZXN1bHQgdGFnPyAqLworI2RlZmluZSBRVUVSWV9DQU5fU0VUX1RB RwkJCQkoMSkKKy8qIGhhcyBhZ2dyZWdhdGVzIGluIHRsaXN0IG9yIGhhdmluZ1F1YWwgKi8K KyNkZWZpbmUgUVVFUllfSEFTX0FHR1MJCQkJCSgxIDw8IDEpCisvKiBoYXMgd2luZG93IGZ1 bmN0aW9ucyBpbiB0bGlzdCAqLworI2RlZmluZSBRVUVSWV9IQVNfV0lORE9XX0ZVTkNTCQkJ KDEgPDwgMikKKy8qIGhhcyBzZXQtcmV0dXJuaW5nIGZ1bmN0aW9ucyBpbiB0bGlzdCAqLwor I2RlZmluZSBRVUVSWV9IQVNfVEFSR0VUX1NSRlMJCQkoMSA8PCAzKQorLyogaGFzIHN1YnF1 ZXJ5IFN1YkxpbmsgKi8KKyNkZWZpbmUgUVVFUllfSEFTX1NVQl9MSU5LUwkJCQkoMSA8PCA0 KQorLyogZGlzdGluY3RDbGF1c2UgaXMgZnJvbSBESVNUSU5DVCBPTiAqLworI2RlZmluZSBR VUVSWV9IQVNfRElTVElOQ1RfT04JCQkoMSA8PCA1KQorLyogV0lUSCBSRUNVUlNJVkUgd2Fz IHNwZWNpZmllZCAqLworI2RlZmluZSBRVUVSWV9IQVNfUkVDVVJTSVZFCQkJCSgxIDw8IDYp CisvKiBoYXMgSU5TRVJUL1VQREFURS9ERUxFVEUgaW4gV0lUSCAqLworI2RlZmluZSBRVUVS WV9IQVNfTU9ESUZZSU5HX0NURQkJCSgxIDw8IDcpCisvKiBGT1IgW0tFWV0gVVBEQVRFL1NI QVJFIHdhcyBzcGVjaWZpZWQgKi8KKyNkZWZpbmUgUVVFUllfSEFTX0ZPUl9VUERBVEUJCQko MSA8PCA4KQorLyogcmV3cml0ZXIgaGFzIGFwcGxpZWQgc29tZSBSTFMgcG9saWN5ICovCisj ZGVmaW5lIFFVRVJZX0hBU19ST1dfU0VDVVJJVFkJCQkoMSA8PCA5KQorLyogaXMgYSBSRVRV Uk4gc3RhdGVtZW50ICovCisjZGVmaW5lIFFVRVJZX0lTX1JFVFVSTgkJCQkJKDEgPDwgMTAp CisvKiB3aGV0aGVyIHRvIHVzZSBvdXRlciBqb2luICovCisjZGVmaW5lIFFVRVJZX01FUkdF X1VTRV9PVVRFUkpPSU4JCSgxIDw8IDExKQorCisjZGVmaW5lCVF1ZXJ5Q2FuU2V0VGFnKHF1 ZXJ5KQkJCSgocXVlcnkpLT5mbGFncyAmIFFVRVJZX0NBTl9TRVRfVEFHKQorI2RlZmluZQlR dWVyeUhhc0FnZ3MocXVlcnkpCQkJCSgocXVlcnkpLT5mbGFncyAmIFFVRVJZX0hBU19BR0dT KQorI2RlZmluZQlRdWVyeUhhc1dpbmRvd0Z1bmNzKHF1ZXJ5KQkJKChxdWVyeSktPmZsYWdz ICYgUVVFUllfSEFTX1dJTkRPV19GVU5DUykKKyNkZWZpbmUJUXVlcnlIYXNUYXJnZXRTUkZz KHF1ZXJ5KQkJKChxdWVyeSktPmZsYWdzICYgUVVFUllfSEFTX1RBUkdFVF9TUkZTKQorI2Rl ZmluZQlRdWVyeUhhc1N1YkxpbmtzKHF1ZXJ5KQkJCSgocXVlcnkpLT5mbGFncyAmIFFVRVJZ X0hBU19TVUJfTElOS1MpCisjZGVmaW5lCVF1ZXJ5SGFzRGlzdGluY3RPbihxdWVyeSkJCSgo cXVlcnkpLT5mbGFncyAmIFFVRVJZX0hBU19ESVNUSU5DVF9PTikKKyNkZWZpbmUJUXVlcnlI YXNSZWN1cnNpdmUocXVlcnkpCQkoKHF1ZXJ5KS0+ZmxhZ3MgJiBRVUVSWV9IQVNfUkVDVVJT SVZFKQorI2RlZmluZQlRdWVyeUhhc01vZGlmeWluZ0NURShxdWVyeSkJCSgocXVlcnkpLT5m bGFncyAmIFFVRVJZX0hBU19NT0RJRllJTkdfQ1RFKQorI2RlZmluZQlRdWVyeUhhc0ZvclVw ZGF0ZShxdWVyeSkJCSgocXVlcnkpLT5mbGFncyAmIFFVRVJZX0hBU19GT1JfVVBEQVRFKQor I2RlZmluZQlRdWVyeUhhc1Jvd1NlY3VyaXR5KHF1ZXJ5KQkJKChxdWVyeSktPmZsYWdzICYg UVVFUllfSEFTX1JPV19TRUNVUklUWSkKKyNkZWZpbmUJUXVlcnlJc1JldHVybihxdWVyeSkJ CQkoKHF1ZXJ5KS0+ZmxhZ3MgJiBRVUVSWV9JU19SRVRVUk4pCisjZGVmaW5lCVF1ZXJ5TWVy Z2VVc2VPdXRlckpvaW4ocXVlcnkpCSgocXVlcnkpLT5mbGFncyAmIFFVRVJZX01FUkdFX1VT RV9PVVRFUkpPSU4pCisKKyNkZWZpbmUJUXVlcnlGbGFnU2V0KGZsYWdzLCBmbmFtZSkJCSgo ZmxhZ3MpIHw9IChRVUVSWV8jI2ZuYW1lKSkKKyNkZWZpbmUJUXVlcnlTZXRGbGFnKHF1ZXJ5 LCBmbmFtZSkJCVF1ZXJ5RmxhZ1NldCgocXVlcnkpLT5mbGFncywgZm5hbWUpCisKKyNkZWZp bmUJUXVlcnlGbGFnSXNTZXQoZmxhZ3MsIGZuYW1lKQkoKGZsYWdzKSAmIChRVUVSWV8jI2Zu YW1lKSkKKworI2RlZmluZQlRdWVyeUZsYWdDbGVhcihmbGFncywgZm5hbWUpCSgoZmxhZ3Mp ICY9IH4oUVVFUllfIyNmbmFtZSkpCisjZGVmaW5lCVF1ZXJ5Q2xlYXJGbGFnKHF1ZXJ5LCBm bmFtZSkJUXVlcnlGbGFnQ2xlYXIoKHF1ZXJ5KS0+ZmxhZ3MsIGZuYW1lKQorCisjZGVmaW5l CVF1ZXJ5Q29uZFNldEZsYWcocXVlcnksIGNvbmQsIHBuYW1lKSBcCisJeyBcCisJCWlmIChj b25kKSBcCisJCQlRdWVyeVNldEZsYWcocXVlcnksIHBuYW1lKTsgXAorCQllbHNlIFwKKwkJ CVF1ZXJ5Q2xlYXJGbGFnKHF1ZXJ5LCBwbmFtZSk7IFwKKwl9CisKIAogLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKICAqCVN1cHBvcnRpbmcgZGF0YSBzdHJ1Y3R1cmVzIGZvciBQYXJzZSBU cmVlcwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmV3cml0ZS9yZXdyaXRlTWFuaXAuaCBi L3NyYy9pbmNsdWRlL3Jld3JpdGUvcmV3cml0ZU1hbmlwLmgKaW5kZXggYWM2ZDIwNDllOC4u MmJiOGJiMTMxNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmV3cml0ZS9yZXdyaXRlTWFu aXAuaAorKysgYi9zcmMvaW5jbHVkZS9yZXdyaXRlL3Jld3JpdGVNYW5pcC5oCkBAIC03Niw3 ICs3Niw3IEBAIGV4dGVybiBOb2RlICpyZXBsYWNlX3J0ZV92YXJpYWJsZXMoTm9kZSAqbm9k ZSwKIAkJCQkJCQkJICAgaW50IHRhcmdldF92YXJubywgaW50IHN1YmxldmVsc191cCwKIAkJ CQkJCQkJICAgcmVwbGFjZV9ydGVfdmFyaWFibGVzX2NhbGxiYWNrIGNhbGxiYWNrLAogCQkJ CQkJCQkgICB2b2lkICpjYWxsYmFja19hcmcsCi0JCQkJCQkJCSAgIGJvb2wgKm91dGVyX2hh c1N1YkxpbmtzKTsKKwkJCQkJCQkJICAgaW50ICpvdXRlcl9oYXNTdWJMaW5rcyk7CiBleHRl cm4gTm9kZSAqcmVwbGFjZV9ydGVfdmFyaWFibGVzX211dGF0b3IoTm9kZSAqbm9kZSwKIAkJ CQkJCQkJCQkgICByZXBsYWNlX3J0ZV92YXJpYWJsZXNfY29udGV4dCAqY29udGV4dCk7CiAK QEAgLTkxLDYgKzkxLDYgQEAgZXh0ZXJuIE5vZGUgKlJlcGxhY2VWYXJzRnJvbVRhcmdldExp c3QoTm9kZSAqbm9kZSwKIAkJCQkJCQkJCSAgIExpc3QgKnRhcmdldGxpc3QsCiAJCQkJCQkJ CQkgICBSZXBsYWNlVmFyc05vTWF0Y2hPcHRpb24gbm9tYXRjaF9vcHRpb24sCiAJCQkJCQkJ CQkgICBpbnQgbm9tYXRjaF92YXJubywKLQkJCQkJCQkJCSAgIGJvb2wgKm91dGVyX2hhc1N1 YkxpbmtzKTsKKwkJCQkJCQkJCSAgIGludCAqb3V0ZXJfaGFzU3ViTGlua3MpOwogCiAjZW5k aWYJCQkJCQkJLyogUkVXUklURU1BTklQX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHBn c3FsL3NyYy9wbF9leGVjLmMgYi9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5jCmluZGV4 IDZkMTY5MTM0MGMuLmU3ZjM2NTI4NjMgMTAwNjQ0Ci0tLSBhL3NyYy9wbC9wbHBnc3FsL3Ny Yy9wbF9leGVjLmMKKysrIGIvc3JjL3BsL3BscGdzcWwvc3JjL3BsX2V4ZWMuYwpAQCAtODAy MCwxMCArODAyMCwxMCBAQCBleGVjX3NpbXBsZV9jaGVja19wbGFuKFBMcGdTUUxfZXhlY3N0 YXRlICplc3RhdGUsIFBMcGdTUUxfZXhwciAqZXhwcikKIAkgKiBpbmxpbmluZyBhIFNRTCBm dW5jdGlvbjsgb3RoZXJ3aXNlLCBpbmxpbmluZyBjb3VsZCBjaGFuZ2Ugb3VyCiAJICogY29u Y2x1c2lvbiBhYm91dCB3aGV0aGVyIGFuIGV4cHJlc3Npb24gaXMgc2ltcGxlLCB3aGljaCB3 ZSBkb24ndCB3YW50LikKIAkgKi8KLQlpZiAocXVlcnktPmhhc0FnZ3MgfHwKLQkJcXVlcnkt Pmhhc1dpbmRvd0Z1bmNzIHx8Ci0JCXF1ZXJ5LT5oYXNUYXJnZXRTUkZzIHx8Ci0JCXF1ZXJ5 LT5oYXNTdWJMaW5rcyB8fAorCWlmIChRdWVyeUhhc0FnZ3MocXVlcnkpIHx8CisJCVF1ZXJ5 SGFzV2luZG93RnVuY3MocXVlcnkpIHx8CisJCVF1ZXJ5SGFzVGFyZ2V0U1JGcyhxdWVyeSkg fHwKKwkJUXVlcnlIYXNTdWJMaW5rcyhxdWVyeSkgfHwKIAkJcXVlcnktPmN0ZUxpc3QgfHwK IAkJcXVlcnktPmpvaW50cmVlLT5mcm9tbGlzdCB8fAogCQlxdWVyeS0+am9pbnRyZWUtPnF1 YWxzIHx8Cg== --------------OuitABupa6m0mOjMBmpJdoFO--