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 1rnepU-00ENwA-5Z for pgsql-hackers@arkaria.postgresql.org; Fri, 22 Mar 2024 13:21: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 1rnepS-003Pix-46 for pgsql-hackers@arkaria.postgresql.org; Fri, 22 Mar 2024 13:21:02 +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 1rnepQ-003Pip-Se for pgsql-hackers@lists.postgresql.org; Fri, 22 Mar 2024 13:21:02 +0000 Received: from dd26416.kasserver.com ([85.13.145.105]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rnepK-005qtt-Mb for pgsql-hackers@lists.postgresql.org; Fri, 22 Mar 2024 13:21:00 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oopsware.de; s=kas202403071112; t=1711113653; bh=hEqzG+OZbrfxF3TfWrkmRsM95Ij60Pb5j5t+Y/hDjRg=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=Uhja5hTnKxEDjuulqzmhvGOVd0cFbElo9pVsUEvfWTEme4H+Y2Uk+nRkOcrlDnfzV gdiU9jU9u+zVoCbibweOfTFt2PlBxGTa+D7oJzMBu6/iW2VfefRvIn83zYZB40ceZ4 B+i19GM6oYZmNf50VTydToMqN1be5nGON5me3NBqCxEdjTlZW1KT7/H3U2DNz4gGmT Zzv2R7KE+DqVtuWDWZeVyqEMscTS7mr9YhTufiW9uxvagM5YPhpie6zcu83MD3tPC3 zGll7oV43jRH8cnRSr/2i3ARjgDe2uwXnsKX5lRYxicjtViwJNBuTgk/aZ5pNRIWKT g8hagKTEPbgRw== Received: from sethos.at.struktu.ro (sethos.at.struktu.ro [46.4.183.126]) by dd26416.kasserver.com (Postfix) with ESMTPSA id 04AF180021D; Fri, 22 Mar 2024 14:20:53 +0100 (CET) Received: from chufu.bluecherstrasse.oopsware.lan (i5C74318B.versanet.de [92.116.49.139]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sethos.at.struktu.ro (Postfix) with ESMTPSA id 2092E4058DE6; Fri, 22 Mar 2024 14:20:51 +0100 (CET) Message-ID: Subject: Re: [PATCH] Add sortsupport for range types and btree_gist From: Bernd Helmle To: jian he Cc: pgsql-hackers@lists.postgresql.org Date: Fri, 22 Mar 2024 14:20:50 +0100 In-Reply-To: <31f23e46f71b744fb639967169d7df4c748110af.camel@oopsware.de> References: <437ccbcf-8f80-2919-411d-a3af88becf6c@cybertec.at> <77f4bacbeb9d223f90b3a0bd55ef7d65407bfddd.camel@oopsware.de> <2f2e88bf1d44d06c1baf27bbf3db880f42a5cb87.camel@oopsware.de> <31f23e46f71b744fb639967169d7df4c748110af.camel@oopsware.de> Autocrypt: addr=mailings@oopsware.de; prefer-encrypt=mutual; keydata=mQGiBEIM4dYRBACEnxQZ/CfR1xbCJzGOIjvh3fZpLALMm+tt237QlZm9nlLaEwCn317sT1khPAJwhyBHSHbNFbH+LOL6ezYrg4V2Q9KHyYJDStJtC8c+D7vHVB5Jfslynx89DnCH6jb3H0j+U0iNYmRmT18PWTZhD5RuXT+Toyz/0hH4YnJzha4VUwCggikXRuhIQ0KIzrps7/PsvasTPjUD/1aoEHRwVyk2C2hXh6GWJYq+1l+sB2d0TOnFJf2xy3Xo03Hi+BEJJdYGqJKqzd0KfsFyJYhO2GIGScSEj1hsTqAiY8OZeRqRGHe69OQEguUSVXp/jPaqU8fel8dbDDMnXkgULq8oO4T9e4GJSFqIvrlx0sJqSMFdiihV+xCzDS40BACBrTq9tyXmyxJWzQ1/0Hx9S4sU+yeR8ztZH9xgWi1wksfHpEgZBdAkQynlI80/bCtgxfVu+LKgxeqGfMSnT9t8agpr1IGcmSbDntbn/K+3EmCze0jq8EQrZHJWiwCqraM8mnmILSEl5znaoVoBIF062b60zZicuNeYaVgEKSHfirQgQmVybmQgSGVsbWxlIDxiZXJuZEBvb3Bzd2FyZS5kZT6IXgQTEQIAHgUCQhyP2gIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRBRdc2OhdlKzMm4AJ9mW1np2RXi66WzEvcIanaJkDT+xgCfZmXG/Sziz5FchI3OjXfXDZfwnNm0J0Jlcm5kIEhlbG1sZSA8YmVybmQuaGVsbWxlQG9vcHN3YXJlLmRlPoheBBMRAgAeBQJCDOHWAhsDBgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEFF1zY6F2UrMWZgAn3MVwDBzRS5dZu1yjx7WU3E3JSheAJ41CUYMIkX/oYfWssUVYnOuedgn8LQlQmVybmQgSGVsbWxlIDxiaEBzY2huYWVwcGNoZW5qYWdkLmRlPoheBBMRAgAeBQJCHI+pA hsDBgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEFF1zY6F2UrMYMUAn0rk8fEEY2tHGSUD7PNbk+Fwkd7MAJ4wMfOerrvsKTrB9xmFnZ2ZUy67w7QjQmVybmQgSGVsbWxlIDxtYWlsaW5nc0Bvb3Bzd2FyZS5kZT6IXgQTEQIAHgUCQhyPxgIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRBRdc2OhdlKzOhrAJ4w+A3HcjTJb54lUDpyyQu6Y5dlVQCeJCFKygOVbpn4HSp4Z+R6+s4Rul60J0Jlcm5kIEhlbG1sZSA8YmVybmQuaGVsbWxlQGN5YmVydGVjLmF0Poh4BBMRAgA4FiEEcLVWcrwQIdBqHtvMUXXNjoXZSswFAmDe1DkCGwMFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQUXXNjoXZSszs9QCfbbpKT0/Mh4PhfS6rRbmNNQC1zS8An2x1PLHPS6649DRkiYOMWTXzAlSEuQINBEIM4d0QCADaxWn10/2l8HHygHCUlBs+vNRYkMrGDWuj1tyehVRRcFYnNfBaEB44GMsaWdKW0GGP4S1BcEwLM3T+ObIrMt6jsLYXWrMctMcGkW60CTbusllwqFN80prqk0Nh/yZsja8UOt+OrWL4ucIBEx9RsUcdUd7+PeuYThOFO1dMgu4gmbac5eN2LZceHJgN9fha19m/vdLXmLc5IEPX/s6+O5oyEkbBt4GYIdvodnBHG9fyip7ff5GPLKzU2gBJz3RWUuHGEaj3RxCffK1x1S87MonbbEkPl2BtmJg2HeWNHn0eaauTp61V0xUWo1XaBB7Ezovogj+70wQjJ4GEgXoH7MRvAAMFCAC/MFpNfWALuQiKE3GA/VdoBTljq2rOnkDcRzBrn8BBVwpYqa2g7SA/VUW334ztI2PmZZYJ0Bjms/Q+oEv87agSL7sQTr8xUOPEyABVnAoDIuIzrAilflYYbvq7o3kwNcsmkr vPZ1FURstKbO+85M/e8tIyCHa6IbTKru6W8Rqxldx2TjoTvcOov3H7bknAdaA8dv6ea/dpI0WTVkuBTMw+jCy2gezwO1wvY+2ehiObOOnlKB2OsMshbe7FHtMU4qB6H1IthiSCzYz5IAsovS8u88HwtUVh/fjLHjTBB85IIMswvJ6SiCXfpe4z8Aj2b5hdo6ggZmI6opiBpaeK164SiEkEGBECAAkFAkIM4d0CGwwACgkQUXXNjoXZSszvIgCfeqX8AYMGEnF+rOp2ukoCWQXfq48AmQEAzB0c5vVMlRnuBh0z9qMKRqbi Content-Type: multipart/mixed; boundary="=-qS5EnXBh8OiWGbgAfCy/" User-Agent: Evolution 3.50.4 (3.50.4-1.fc39) MIME-Version: 1.0 X-Spamd-Bar: + List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-qS5EnXBh8OiWGbgAfCy/ Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, Here is a rebased version of the patch. Since i don't have anything to add at the moment and the numbers looks promising and to move on, i've marked this patch "Ready For Committer". Thanks, Bernd --=-qS5EnXBh8OiWGbgAfCy/ Content-Disposition: attachment; filename="v7.1-Add-GIST-sortsupport-btree-gist.patch" Content-Type: text/x-patch; name="v7.1-Add-GIST-sortsupport-btree-gist.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9NYWtlZmlsZSBiL2NvbnRyaWIvYnRyZWVf Z2lzdC9NYWtlZmlsZQppbmRleCA3YWMyZGYyNmMxMC4uNjgxOTBhYzVlNDYgMTAwNjQ0Ci0tLSBh L2NvbnRyaWIvYnRyZWVfZ2lzdC9NYWtlZmlsZQorKysgYi9jb250cmliL2J0cmVlX2dpc3QvTWFr ZWZpbGUKQEAgLTM0LDcgKzM0LDcgQEAgREFUQSA9IGJ0cmVlX2dpc3QtLTEuMC0tMS4xLnNxbCBc CiAgICAgICAgYnRyZWVfZ2lzdC0tMS4xLS0xLjIuc3FsIGJ0cmVlX2dpc3QtLTEuMi5zcWwgYnRy ZWVfZ2lzdC0tMS4yLS0xLjMuc3FsIFwKICAgICAgICBidHJlZV9naXN0LS0xLjMtLTEuNC5zcWwg YnRyZWVfZ2lzdC0tMS40LS0xLjUuc3FsIFwKICAgICAgICBidHJlZV9naXN0LS0xLjUtLTEuNi5z cWwgYnRyZWVfZ2lzdC0tMS42LS0xLjcuc3FsIFwKLSAgICAgICBidHJlZV9naXN0LS0xLjctLTEu OC5zcWwKKyAgICAgICBidHJlZV9naXN0LS0xLjctLTEuOC5zcWwgYnRyZWVfZ2lzdC0tMS44LS0x Ljkuc3FsCiBQR0ZJTEVERVNDID0gImJ0cmVlX2dpc3QgLSBCLXRyZWUgZXF1aXZhbGVudCBHaVNU IG9wZXJhdG9yIGNsYXNzZXMiCiAKIFJFR1JFU1MgPSBpbml0IGludDIgaW50NCBpbnQ4IGZsb2F0 NCBmbG9hdDggY2FzaCBvaWQgdGltZXN0YW1wIHRpbWVzdGFtcHR6IFwKZGlmZiAtLWdpdCBhL2Nv bnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9iaXQuYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9i aXQuYwppbmRleCA2NzkwZjIyYjRiNi4uNjdlYTVkOWUxODIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv YnRyZWVfZ2lzdC9idHJlZV9iaXQuYworKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfYml0 LmMKQEAgLTYsNyArNiw3IEBACiAjaW5jbHVkZSAiYnRyZWVfZ2lzdC5oIgogI2luY2x1ZGUgImJ0 cmVlX3V0aWxzX3Zhci5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCi0jaW5jbHVkZSAi dXRpbHMvYnl0ZWEuaCIKKyNpbmNsdWRlICJ1dGlscy9zb3J0c3VwcG9ydC5oIgogI2luY2x1ZGUg InV0aWxzL3ZhcmJpdC5oIgogCiAKQEAgLTE5LDEwICsxOSwzMyBAQCBQR19GVU5DVElPTl9JTkZP X1YxKGdidF9iaXRfcGlja3NwbGl0KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2JpdF9jb25z aXN0ZW50KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2JpdF9wZW5hbHR5KTsKIFBHX0ZVTkNU SU9OX0lORk9fVjEoZ2J0X2JpdF9zYW1lKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2JpdF9z b3J0c3VwcG9ydCk7CitQR19GVU5DVElPTl9JTkZPX1YxKGdidF92YXJiaXRfc29ydHN1cHBvcnQp OwogCiAKIC8qIGRlZmluZSBmb3IgY29tcGFyaXNvbiAqLwogCitzdGF0aWMgaW50CitnYnRfYml0 X3NzdXBfY21wKERhdHVtIHgsIERhdHVtIHksIFNvcnRTdXBwb3J0IHNzdXApCit7CisJR0JUX1ZB UktFWSAqa2V5MSA9IFBHX0RFVE9BU1RfREFUVU0oeCk7CisJR0JUX1ZBUktFWSAqa2V5MiA9IFBH X0RFVE9BU1RfREFUVU0oeSk7CisKKwlHQlRfVkFSS0VZX1IgYXJnMSA9IGdidF92YXJfa2V5X3Jl YWRhYmxlKGtleTEpOworCUdCVF9WQVJLRVlfUiBhcmcyID0gZ2J0X3Zhcl9rZXlfcmVhZGFibGUo a2V5Mik7CisJRGF0dW0gcmVzdWx0OworCisJLyogbG93ZXIgaXMgYWx3YXlzIGVxdWFsIHRvIHVw cGVyLCBzbyBqdXN0IGNvbXBhcmUgdGhvc2UgZmllbGRzICovCisJcmVzdWx0ID0gRGlyZWN0RnVu Y3Rpb25DYWxsMihiaXRjbXAsCisJCQkJCQkJCSBQb2ludGVyR2V0RGF0dW0oYXJnMS5sb3dlciks CisJCQkJCQkJCSBQb2ludGVyR2V0RGF0dW0oYXJnMi5sb3dlcikpOworCisJR0JUX0ZSRUVfSUZf Q09QWShrZXkxLCB4KTsKKwlHQlRfRlJFRV9JRl9DT1BZKGtleTIsIHkpOworCisJcmV0dXJuIERh dHVtR2V0SW50MzIocmVzdWx0KTsKK30KKwogc3RhdGljIGJvb2wKIGdidF9iaXRndChjb25zdCB2 b2lkICphLCBjb25zdCB2b2lkICpiLCBPaWQgY29sbGF0aW9uLCBGbWdySW5mbyAqZmxpbmZvKQog ewpAQCAtMjA4LDMgKzIzMSwyNSBAQCBnYnRfYml0X3BlbmFsdHkoUEdfRlVOQ1RJT05fQVJHUykK IAlQR19SRVRVUk5fUE9JTlRFUihnYnRfdmFyX3BlbmFsdHkocmVzdWx0LCBvLCBuLCBQR19HRVRf Q09MTEFUSU9OKCksCiAJCQkJCQkJCQkgICZ0aW5mbywgZmNpbmZvLT5mbGluZm8pKTsKIH0KKwor RGF0dW0KK2didF9iaXRfc29ydHN1cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlTb3J0U3Vw cG9ydCBzc3VwID0gKFNvcnRTdXBwb3J0KSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKworCXNzdXAt PmNvbXBhcmF0b3IgPSBnYnRfYml0X3NzdXBfY21wOworCXNzdXAtPnNzdXBfZXh0cmEgPSBOVUxM OworCisJUEdfUkVUVVJOX1ZPSUQoKTsKK30KKworRGF0dW0KK2didF92YXJiaXRfc29ydHN1cHBv cnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlTb3J0U3VwcG9ydCBzc3VwID0gKFNvcnRTdXBwb3J0 KSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKworCXNzdXAtPmNvbXBhcmF0b3IgPSBnYnRfYml0X3Nz dXBfY21wOworCXNzdXAtPnNzdXBfZXh0cmEgPSBOVUxMOworCisJUEdfUkVUVVJOX1ZPSUQoKTsK K30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVl X2dpc3QvYnRyZWVfYm9vbC5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Jvb2wuYwppbmRl eCA4YjJhZjEyOWI1Mi4uNTA1OGRiYTI5ODYgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lz dC9idHJlZV9ib29sLmMKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Jvb2wuYwpAQCAt Niw2ICs2LDcgQEAKICNpbmNsdWRlICJidHJlZV9naXN0LmgiCiAjaW5jbHVkZSAiYnRyZWVfdXRp bHNfbnVtLmgiCiAjaW5jbHVkZSAiY29tbW9uL2ludC5oIgorI2luY2x1ZGUgInV0aWxzL3NvcnRz dXBwb3J0LmgiCiAKIHR5cGVkZWYgc3RydWN0IGJvb2xrZXkKIHsKQEAgLTIzLDYgKzI0LDE2IEBA IFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2Jvb2xfcGlja3NwbGl0KTsKIFBHX0ZVTkNUSU9OX0lO Rk9fVjEoZ2J0X2Jvb2xfY29uc2lzdGVudCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9ib29s X3BlbmFsdHkpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfYm9vbF9zYW1lKTsKK1BHX0ZVTkNU SU9OX0lORk9fVjEoZ2J0X2Jvb2xfc29ydHN1cHBvcnQpOworCitzdGF0aWMgaW50CitnYnRfYm9v bF9zc3VwX2NtcChEYXR1bSB4LCBEYXR1bSB5LCBTb3J0U3VwcG9ydCBzc3VwKQoreworCWJvb2xL RVkJKmFyZzEgPSAoYm9vbEtFWSAqKSBEYXR1bUdldFBvaW50ZXIoeCk7CisJYm9vbEtFWSAqYXJn MiA9IChib29sS0VZICopIERhdHVtR2V0UG9pbnRlcih5KTsKKworCXJldHVybiBhcmcxLT5sb3dl ciAtIGFyZzItPmxvd2VyOworfQogCiBzdGF0aWMgYm9vbAogZ2J0X2Jvb2xndChjb25zdCB2b2lk ICphLCBjb25zdCB2b2lkICpiLCBGbWdySW5mbyAqZmxpbmZvKQpAQCAtMTY3LDMgKzE3OCwxNCBA QCBnYnRfYm9vbF9zYW1lKFBHX0ZVTkNUSU9OX0FSR1MpCiAJKnJlc3VsdCA9IGdidF9udW1fc2Ft ZSgodm9pZCAqKSBiMSwgKHZvaWQgKikgYjIsICZ0aW5mbywgZmNpbmZvLT5mbGluZm8pOwogCVBH X1JFVFVSTl9QT0lOVEVSKHJlc3VsdCk7CiB9CisKK0RhdHVtCitnYnRfYm9vbF9zb3J0c3VwcG9y dChQR19GVU5DVElPTl9BUkdTKQoreworCVNvcnRTdXBwb3J0IHNzdXAgPSAoU29ydFN1cHBvcnQp IFBHX0dFVEFSR19QT0lOVEVSKDApOworCisJc3N1cC0+Y29tcGFyYXRvciA9IGdidF9ib29sX3Nz dXBfY21wOworCXNzdXAtPnNzdXBfZXh0cmEgPSBOVUxMOworCisJUEdfUkVUVVJOX1ZPSUQoKTsK K30KZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9ieXRlYS5jIGIvY29udHJp Yi9idHJlZV9naXN0L2J0cmVlX2J5dGVhLmMKaW5kZXggNmIwMDVmMDE1N2UuLjIwNDdlM2RkZWUw IDEwMDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfYnl0ZWEuYworKysgYi9jb250 cmliL2J0cmVlX2dpc3QvYnRyZWVfYnl0ZWEuYwpAQCAtNiw3ICs2LDcgQEAKICNpbmNsdWRlICJi dHJlZV9naXN0LmgiCiAjaW5jbHVkZSAiYnRyZWVfdXRpbHNfdmFyLmgiCiAjaW5jbHVkZSAidXRp bHMvYnVpbHRpbnMuaCIKLSNpbmNsdWRlICJ1dGlscy9ieXRlYS5oIgorI2luY2x1ZGUgInV0aWxz L3NvcnRzdXBwb3J0LmgiCiAKIAogLyoKQEAgLTE4LDcgKzE4LDQxIEBAIFBHX0ZVTkNUSU9OX0lO Rk9fVjEoZ2J0X2J5dGVhX3BpY2tzcGxpdCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9ieXRl YV9jb25zaXN0ZW50KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2J5dGVhX3BlbmFsdHkpOwog UEdfRlVOQ1RJT05fSU5GT19WMShnYnRfYnl0ZWFfc2FtZSk7CitQR19GVU5DVElPTl9JTkZPX1Yx KGdidF9ieXRlYV9zb3J0c3VwcG9ydCk7CiAKKy8qIHNvcnRzdXBwb3J0IHN1cHBvcnQgKi8KKwor c3RhdGljIGludAorZ2J0X2J5dGVhX3NzdXBfY21wKERhdHVtIHgsIERhdHVtIHksIFNvcnRTdXBw b3J0IHNzdXApCit7CisJR0JUX1ZBUktFWSAqa2V5MSA9IFBHX0RFVE9BU1RfREFUVU0oeCk7CisJ R0JUX1ZBUktFWSAqa2V5MiA9IFBHX0RFVE9BU1RfREFUVU0oeSk7CisKKwlHQlRfVkFSS0VZX1Ig eGtleSA9IGdidF92YXJfa2V5X3JlYWRhYmxlKGtleTEpOworCUdCVF9WQVJLRVlfUiB5a2V5ID0g Z2J0X3Zhcl9rZXlfcmVhZGFibGUoa2V5Mik7CisJRGF0dW0gcmVzdWx0OworCisJLyogbG93ZXIg YW5kIHVwcGVyIGFyZSBhbHdheXMgdGhlIHNhbWUsIHNvIGl0IGlzIGVub3VnaCB0byBjb21wYXJl IGxvd2VyICovCisJcmVzdWx0ID0gRGlyZWN0RnVuY3Rpb25DYWxsMihieXRlYWNtcCwKKwkJCQkJ CQkJIFBvaW50ZXJHZXREYXR1bSh4a2V5Lmxvd2VyKSwKKwkJCQkJCQkJIFBvaW50ZXJHZXREYXR1 bSh5a2V5Lmxvd2VyKSk7CisKKwlHQlRfRlJFRV9JRl9DT1BZKGtleTEsIHgpOworCUdCVF9GUkVF X0lGX0NPUFkoa2V5MiwgeSk7CisKKwlyZXR1cm4gRGF0dW1HZXRJbnQzMihyZXN1bHQpOworfQor CitEYXR1bQorZ2J0X2J5dGVhX3NvcnRzdXBwb3J0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJU29y dFN1cHBvcnQgc3N1cCA9IChTb3J0U3VwcG9ydCkgUEdfR0VUQVJHX1BPSU5URVIoMCk7CisKKwlz c3VwLT5jb21wYXJhdG9yID0gZ2J0X2J5dGVhX3NzdXBfY21wOworCXNzdXAtPnNzdXBfZXh0cmEg PSBOVUxMOworCisJUEdfUkVUVVJOX1ZPSUQoKTsKK30KIAogLyogZGVmaW5lIGZvciBjb21wYXJp c29uICovCiAKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9jYXNoLmMgYi9j b250cmliL2J0cmVlX2dpc3QvYnRyZWVfY2FzaC5jCmluZGV4IDU0NmI5NDhlYTQwLi45NDA5MGM5 YWMwZCAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2Nhc2guYworKysgYi9j b250cmliL2J0cmVlX2dpc3QvYnRyZWVfY2FzaC5jCkBAIC03LDYgKzcsNyBAQAogI2luY2x1ZGUg ImJ0cmVlX3V0aWxzX251bS5oIgogI2luY2x1ZGUgImNvbW1vbi9pbnQuaCIKICNpbmNsdWRlICJ1 dGlscy9jYXNoLmgiCisjaW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIKIAogdHlwZWRlZiBz dHJ1Y3QKIHsKQEAgLTI1LDYgKzI2LDIxIEBAIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2Nhc2hf Y29uc2lzdGVudCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9jYXNoX2Rpc3RhbmNlKTsKIFBH X0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2Nhc2hfcGVuYWx0eSk7CiBQR19GVU5DVElPTl9JTkZPX1Yx KGdidF9jYXNoX3NhbWUpOworUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfY2FzaF9zb3J0c3VwcG9y dCk7CisKK2V4dGVybiBEYXR1bSBjYXNoX2NtcChQR19GVU5DVElPTl9BUkdTKTsKKworc3RhdGlj IGludAorZ2J0X2Nhc2hfc3N1cF9jbXAoRGF0dW0geCwgRGF0dW0geSwgU29ydFN1cHBvcnQgc3N1 cCkKK3sKKwljYXNoS0VZCSphcmcxID0gKGNhc2hLRVkgKikgRGF0dW1HZXRQb2ludGVyKHgpOwor CWNhc2hLRVkJKmFyZzIgPSAoY2FzaEtFWSAqKSBEYXR1bUdldFBvaW50ZXIoeSk7CisKKwkvKiBT aW5jZSBsb3dlciBhbmQgdXBwZXIgYXJlIGFsd2F5cyBlcXVhbCwgaXQgaXMgZW5vdWdoIHRvIGNv bXBhcmUgbG93ZXIgKi8KKwlyZXR1cm4gRGF0dW1HZXRJbnQzMihEaXJlY3RGdW5jdGlvbkNhbGwy KGNhc2hfY21wLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2Fz aEdldERhdHVtKGFyZzEtPmxvd2VyKSwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIENhc2hHZXREYXR1bShhcmcyLT5sb3dlcikpKTsKK30KIAogc3RhdGljIGJvb2wK IGdidF9jYXNoZ3QoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgRm1nckluZm8gKmZsaW5m bykKQEAgLTIxNSwzICsyMzEsMTQgQEAgZ2J0X2Nhc2hfc2FtZShQR19GVU5DVElPTl9BUkdTKQog CSpyZXN1bHQgPSBnYnRfbnVtX3NhbWUoKHZvaWQgKikgYjEsICh2b2lkICopIGIyLCAmdGluZm8s IGZjaW5mby0+ZmxpbmZvKTsKIAlQR19SRVRVUk5fUE9JTlRFUihyZXN1bHQpOwogfQorCitEYXR1 bQorZ2J0X2Nhc2hfc29ydHN1cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlTb3J0U3VwcG9y dCBzc3VwID0gKFNvcnRTdXBwb3J0KSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKworCXNzdXAtPmNv bXBhcmF0b3IgPSBnYnRfY2FzaF9zc3VwX2NtcDsKKwlzc3VwLT5zc3VwX2V4dHJhID0gTlVMTDsK KworCVBHX1JFVFVSTl9WT0lEKCk7Cit9CmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3Qv YnRyZWVfZGF0ZS5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2RhdGUuYwppbmRleCA2OGE0 MTA3ZGJmMC4uYzRmZjE1ZjI3YjQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJl ZV9kYXRlLmMKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2RhdGUuYwpAQCAtNiw2ICs2 LDcgQEAKICNpbmNsdWRlICJidHJlZV9naXN0LmgiCiAjaW5jbHVkZSAiYnRyZWVfdXRpbHNfbnVt LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9zb3J0c3Vw cG9ydC5oIgogI2luY2x1ZGUgInV0aWxzL2RhdGUuaCIKIAogdHlwZWRlZiBzdHJ1Y3QKQEAgLTI1 LDYgKzI2LDMwIEBAIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2RhdGVfY29uc2lzdGVudCk7CiBQ R19GVU5DVElPTl9JTkZPX1YxKGdidF9kYXRlX2Rpc3RhbmNlKTsKIFBHX0ZVTkNUSU9OX0lORk9f VjEoZ2J0X2RhdGVfcGVuYWx0eSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9kYXRlX3NhbWUp OworUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfZGF0ZV9zb3J0c3VwcG9ydCk7CisKKy8qIHNvcnRz dXBwb3J0IGZ1bmN0aW9ucyAqLworCitzdGF0aWMgaW50IGdidF9kYXRlX3NzdXBfY21wKERhdHVt IHgsIERhdHVtIHksIFNvcnRTdXBwb3J0IHNzdXApCit7CisJZGF0ZUtFWSAqYWtleSA9IChkYXRl S0VZICopIERhdHVtR2V0UG9pbnRlcih4KTsKKwlkYXRlS0VZICpia2V5ID0gKGRhdGVLRVkgKikg RGF0dW1HZXRQb2ludGVyKHkpOworCisJcmV0dXJuIERhdHVtR2V0SW50MzIoRGlyZWN0RnVuY3Rp b25DYWxsMihkYXRlX2NtcCwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIERhdGVBRFRHZXREYXR1bShha2V5LT5sb3dlciksCisJICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBEYXRlQURUR2V0RGF0dW0oYmtleS0+bG93ZXIpKSk7Cit9CisK K0RhdHVtCitnYnRfZGF0ZV9zb3J0c3VwcG9ydChQR19GVU5DVElPTl9BUkdTKQoreworCVNvcnRT dXBwb3J0IHNzdXAgPSAoU29ydFN1cHBvcnQpIFBHX0dFVEFSR19QT0lOVEVSKDApOworCisJc3N1 cC0+Y29tcGFyYXRvciA9IGdidF9kYXRlX3NzdXBfY21wOworCXNzdXAtPnNzdXBfZXh0cmEgPSBO VUxMOworCisJUEdfUkVUVVJOX1ZPSUQoKTsKK30KIAogc3RhdGljIGJvb2wKIGdidF9kYXRlZ3Qo Y29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgRm1nckluZm8gKmZsaW5mbykKZGlmZiAtLWdp dCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9lbnVtLmMgYi9jb250cmliL2J0cmVlX2dpc3Qv YnRyZWVfZW51bS5jCmluZGV4IGQ0ZGMzOGEzOGU1Li42NzM5NTE4MjM0MSAxMDA2NDQKLS0tIGEv Y29udHJpYi9idHJlZV9naXN0L2J0cmVlX2VudW0uYworKysgYi9jb250cmliL2J0cmVlX2dpc3Qv YnRyZWVfZW51bS5jCkBAIC03LDYgKzcsNyBAQAogI2luY2x1ZGUgImJ0cmVlX3V0aWxzX251bS5o IgogI2luY2x1ZGUgImZtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1 ZGUgInV0aWxzL3NvcnRzdXBwb3J0LmgiCiAKIC8qIGVudW1zIGFyZSByZWFsbHkgT2lkcywgc28g d2UganVzdCB1c2UgdGhlIHNhbWUgc3RydWN0dXJlICovCiAKQEAgLTI2LDggKzI3LDIwIEBAIFBH X0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2VudW1fcGlja3NwbGl0KTsKIFBHX0ZVTkNUSU9OX0lORk9f VjEoZ2J0X2VudW1fY29uc2lzdGVudCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9lbnVtX3Bl bmFsdHkpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfZW51bV9zYW1lKTsKK1BHX0ZVTkNUSU9O X0lORk9fVjEoZ2J0X2VudW1fc29ydHN1cHBvcnQpOwogCiAKK3N0YXRpYyBpbnQKK2didF9lbnVt X3NzdXBfY21wKERhdHVtIHgsIERhdHVtIHksIFNvcnRTdXBwb3J0IHNzdXApCit7CisJb2lkS0VZ ICphcmcxID0gKG9pZEtFWSAqKSBEYXR1bUdldFBvaW50ZXIoeCk7CisJb2lkS0VZICphcmcyID0g KG9pZEtFWSAqKSBEYXR1bUdldFBvaW50ZXIoeSk7CisKKwkvKiBTaW5jZSBsb3dlciBhbmQgdXBw ZXIgaW4gb2lkS0VZIGFyZSBhbHdheXMgdGhlIHNhbWUsIGp1c3QgY29tcGFyZSBsb3dlciAqLwor CXJldHVybiBEYXR1bUdldEludDMyKENhbGxlckZJbmZvRnVuY3Rpb25DYWxsMihlbnVtX2NtcCwg c3N1cC0+c3N1cF9leHRyYSwKKwkJCQkJCQkJCQkJCSAgSW52YWxpZE9pZCwgYXJnMS0+bG93ZXIs IGFyZzItPmxvd2VyKSk7Cit9CisKIHN0YXRpYyBib29sCiBnYnRfZW51bWd0KGNvbnN0IHZvaWQg KmEsIGNvbnN0IHZvaWQgKmIsIEZtZ3JJbmZvICpmbGluZm8pCiB7CkBAIC0xODMsMyArMTk2LDIw IEBAIGdidF9lbnVtX3NhbWUoUEdfRlVOQ1RJT05fQVJHUykKIAkqcmVzdWx0ID0gZ2J0X251bV9z YW1lKCh2b2lkICopIGIxLCAodm9pZCAqKSBiMiwgJnRpbmZvLCBmY2luZm8tPmZsaW5mbyk7CiAJ UEdfUkVUVVJOX1BPSU5URVIocmVzdWx0KTsKIH0KKworRGF0dW0KK2didF9lbnVtX3NvcnRzdXBw b3J0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJU29ydFN1cHBvcnQgc3N1cCA9IChTb3J0U3VwcG9y dCkgUEdfR0VUQVJHX1BPSU5URVIoMCk7CisKKwlzc3VwLT5jb21wYXJhdG9yID0gZ2J0X2VudW1f c3N1cF9jbXA7CisKKwkvKgorCSAqIFNpbmNlIGVudW1fZmFzdF9jbXAoKSBhbHNvIHVzZXMgZW51 bV9jbXAoKSBsaWtlIHRoZSByZXN0IG9mIHRoZQorCSAqIGNvbXBhcnNpb24gZnVuY3Rpb25zLCBp dCBhbHNvIG5lZWRzIHRvIHBhc3Mgb24gZmxpbmZvIHdoZW4gY2FsbGluZworCSAqIGl0LiBUaHVz IHNhdmUgaXQgaW4gLT5zc3VwX2V4dHJhIGFuZCBsYXRlciByZXRyaWV2ZSBpdCBpbiBlbnVtX2Zh c3RfY21wKCkuCisJICovCisJc3N1cC0+c3N1cF9leHRyYSA9IGZjaW5mby0+ZmxpbmZvOworCisJ UEdfUkVUVVJOX1ZPSUQoKTsKK30KZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJl ZV9mbG9hdDQuYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9mbG9hdDQuYwppbmRleCA4NGNh NWVlZTUwMS4uYjIyMjljZGIwNGQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJl ZV9mbG9hdDQuYworKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZmxvYXQ0LmMKQEAgLTUs NiArNSw3IEBACiAKICNpbmNsdWRlICJidHJlZV9naXN0LmgiCiAjaW5jbHVkZSAiYnRyZWVfdXRp bHNfbnVtLmgiCisjaW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIKICNpbmNsdWRlICJ1dGls cy9mbG9hdC5oIgogCiB0eXBlZGVmIHN0cnVjdCBmbG9hdDRrZXkKQEAgLTI0LDYgKzI1LDMzIEBA IFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2Zsb2F0NF9jb25zaXN0ZW50KTsKIFBHX0ZVTkNUSU9O X0lORk9fVjEoZ2J0X2Zsb2F0NF9kaXN0YW5jZSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9m bG9hdDRfcGVuYWx0eSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9mbG9hdDRfc2FtZSk7CitQ R19GVU5DVElPTl9JTkZPX1YxKGdidF9mbG9hdDRfc29ydHN1cHBvcnQpOworCitleHRlcm4gRGF0 dW0gYnRmbG9hdDRjbXAoUEdfRlVOQ1RJT05fQVJHUyk7CisKKy8qIHNvcnRzdXBwb3J0IGZ1bmN0 aW9ucyAqLworc3RhdGljIGludAorZ2J0X2Zsb2F0NF9zc3VwX2NtcChEYXR1bSB4LCBEYXR1bSB5 LCBTb3J0U3VwcG9ydCBzc3VwKQoreworCWZsb2F0NEtFWSAqYXJnMSA9IChmbG9hdDRLRVkgKikg RGF0dW1HZXRQb2ludGVyKHgpOworCWZsb2F0NEtFWSAqYXJnMiA9IChmbG9hdDRLRVkgKikgRGF0 dW1HZXRQb2ludGVyKHkpOworCisJLyogU2luY2UgbG93ZXIgYW5kIHVwcGVyIGZvciBmbG9hdDRL RVlzIGhlcmUgYXJlIGFsd2F5cyBlcXVhbCBpdCBpcyBva2F5IHRvIGNvbXBhcmUgdGhlbSBvbmx5 ICovCisJcmV0dXJuIERhdHVtR2V0SW50MzIoRGlyZWN0RnVuY3Rpb25DYWxsMihidGZsb2F0NGNt cCwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0NEdldERh dHVtKGFyZzEtPmxvd2VyKSwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEZsb2F0NEdldERhdHVtKGFyZzItPmxvd2VyKSkpOworfQorCitEYXR1bQorZ2J0X2Zsb2F0 NF9zb3J0c3VwcG9ydChQR19GVU5DVElPTl9BUkdTKQoreworCVNvcnRTdXBwb3J0IHNzdXAgPSAo U29ydFN1cHBvcnQpIFBHX0dFVEFSR19QT0lOVEVSKDApOworCisJc3N1cC0+Y29tcGFyYXRvciA9 IGdidF9mbG9hdDRfc3N1cF9jbXA7CisJc3N1cC0+c3N1cF9leHRyYSA9IE5VTEw7CisKKwlQR19S RVRVUk5fVk9JRCgpOworfQogCiBzdGF0aWMgYm9vbAogZ2J0X2Zsb2F0NGd0KGNvbnN0IHZvaWQg KmEsIGNvbnN0IHZvaWQgKmIsIEZtZ3JJbmZvICpmbGluZm8pCmRpZmYgLS1naXQgYS9jb250cmli L2J0cmVlX2dpc3QvYnRyZWVfZmxvYXQ4LmMgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZmxv YXQ4LmMKaW5kZXggMDgxYTcxOWIwMDYuLjJmMzEyZjViZDgzIDEwMDY0NAotLS0gYS9jb250cmli L2J0cmVlX2dpc3QvYnRyZWVfZmxvYXQ4LmMKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVl X2Zsb2F0OC5jCkBAIC01LDYgKzUsNyBAQAogCiAjaW5jbHVkZSAiYnRyZWVfZ2lzdC5oIgogI2lu Y2x1ZGUgImJ0cmVlX3V0aWxzX251bS5oIgorI2luY2x1ZGUgInV0aWxzL3NvcnRzdXBwb3J0Lmgi CiAjaW5jbHVkZSAidXRpbHMvZmxvYXQuaCIKIAogdHlwZWRlZiBzdHJ1Y3QgZmxvYXQ4a2V5CkBA IC0yNCw3ICsyNSwzMyBAQCBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9mbG9hdDhfY29uc2lzdGVu dCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9mbG9hdDhfZGlzdGFuY2UpOwogUEdfRlVOQ1RJ T05fSU5GT19WMShnYnRfZmxvYXQ4X3BlbmFsdHkpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRf ZmxvYXQ4X3NhbWUpOworUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfZmxvYXQ4X3NvcnRzdXBwb3J0 KTsKIAorZXh0ZXJuIERhdHVtIGJ0ZmxvYXQ4Y21wKFBHX0ZVTkNUSU9OX0FSR1MpOworCisvKiBz b3J0c3VwcG9ydCBmdW5jdGlvbnMgKi8KK3N0YXRpYyBpbnQKK2didF9mbG9hdDhfc3N1cF9jbXAo RGF0dW0geCwgRGF0dW0geSwgU29ydFN1cHBvcnQgc3N1cCkKK3sKKwlmbG9hdDhLRVkgKmFyZzEg PSAoZmxvYXQ4S0VZICopIERhdHVtR2V0UG9pbnRlcih4KTsKKwlmbG9hdDhLRVkgKmFyZzIgPSAo ZmxvYXQ4S0VZICopIERhdHVtR2V0UG9pbnRlcih5KTsKKworCS8qIHVwcGVyIGFuZCBsb3dlciBm b3IgaW5wdXQga2V5cyBhcmUgZXF1YWwgaGVyZSAqLworCXJldHVybiBEYXR1bUdldEludDMyKERp cmVjdEZ1bmN0aW9uQ2FsbDIoYnRmbG9hdDhjbXAsCisJICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBGbG9hdDhHZXREYXR1bShhcmcxLT5sb3dlciksCisJCQkJCQkJCQkJ CSBGbG9hdDhHZXREYXR1bShhcmcyLT5sb3dlcikpKTsKK30KKworRGF0dW0KK2didF9mbG9hdDhf c29ydHN1cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlTb3J0U3VwcG9ydCBzc3VwID0gKFNv cnRTdXBwb3J0KSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKworCXNzdXAtPmNvbXBhcmF0b3IgPSBn YnRfZmxvYXQ4X3NzdXBfY21wOworCXNzdXAtPnNzdXBfZXh0cmEgPSBOVUxMOworCisJUEdfUkVU VVJOX1ZPSUQoKTsKK30KIAogc3RhdGljIGJvb2wKIGdidF9mbG9hdDhndChjb25zdCB2b2lkICph LCBjb25zdCB2b2lkICpiLCBGbWdySW5mbyAqZmxpbmZvKQpkaWZmIC0tZ2l0IGEvY29udHJpYi9i dHJlZV9naXN0L2J0cmVlX2dpc3QtLTEuNy0tMS44LnNxbCBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9i dHJlZV9naXN0LS0xLjctLTEuOC5zcWwKaW5kZXggMzA3YmZlNTc0YjAuLjY1NzI4NWNhN2NlIDEw MDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC0tMS43LS0xLjguc3FsCisr KyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9naXN0LS0xLjctLTEuOC5zcWwKQEAgLTg1LDMg Kzg1LDQgQEAgQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfZW51bV9vcHMgVVNJTkcgZ2lzdCBB REQKIAogQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfYm9vbF9vcHMgVVNJTkcgZ2lzdCBBREQK IAlGVU5DVElPTiAxMiAoYm9vbCwgYm9vbCkgZ2lzdF9zdHJhdG51bV9idHJlZSAoaW50MikgOwor CmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC0tMS44LS0xLjkuc3Fs IGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QtLTEuOC0tMS45LnNxbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYzUyZTc1MGVkMWEKLS0tIC9kZXYvbnVsbAor KysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC0tMS44LS0xLjkuc3FsCkBAIC0wLDAg KzEsMTkyIEBACisvKiBjb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC0tMS43LS0xLjguc3Fs ICovCisKKy0tIGNvbXBsYWluIGlmIHNjcmlwdCBpcyBzb3VyY2VkIGluIHBzcWwsIHJhdGhlciB0 aGFuIHZpYSBDUkVBVEUgRVhURU5TSU9OCitcZWNobyBVc2UgIkFMVEVSIEVYVEVOU0lPTiBidHJl ZV9naXN0IFVQREFURSBUTyAnMS45JyIgdG8gbG9hZCB0aGlzIGZpbGUuIFxxdWl0CisKK0NSRUFU RSBGVU5DVElPTiBnYnRfYml0X3NvcnRzdXBwb3J0KGludGVybmFsKQorUkVUVVJOUyB2b2lkCitB UyAnTU9EVUxFX1BBVEhOQU1FJworTEFOR1VBR0UgQyBJTU1VVEFCTEUgU1RSSUNUOworCitDUkVB VEUgRlVOQ1RJT04gZ2J0X3ZhcmJpdF9zb3J0c3VwcG9ydChpbnRlcm5hbCkKK1JFVFVSTlMgdm9p ZAorQVMgJ01PRFVMRV9QQVRITkFNRScKK0xBTkdVQUdFIEMgSU1NVVRBQkxFIFNUUklDVDsKKwor Q1JFQVRFIEZVTkNUSU9OIGdidF9ib29sX3NvcnRzdXBwb3J0KGludGVybmFsKQorUkVUVVJOUyB2 b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJworTEFOR1VBR0UgQyBJTU1VVEFCTEUgU1RSSUNUOwor CitDUkVBVEUgRlVOQ1RJT04gZ2J0X2Nhc2hfc29ydHN1cHBvcnQoaW50ZXJuYWwpCitSRVRVUk5T IHZvaWQKK0FTICdNT0RVTEVfUEFUSE5BTUUnCitMQU5HVUFHRSBDIElNTVVUQUJMRSBTVFJJQ1Q7 CisKK0NSRUFURSBGVU5DVElPTiBnYnRfZW51bV9zb3J0c3VwcG9ydChpbnRlcm5hbCkKK1JFVFVS TlMgdm9pZAorQVMgJ01PRFVMRV9QQVRITkFNRScKK0xBTkdVQUdFIEMgSU1NVVRBQkxFIFNUUklD VDsKKworQ1JFQVRFIEZVTkNUSU9OIGdidF9pbmV0X3NvcnRzdXBwb3J0KGludGVybmFsKQorUkVU VVJOUyB2b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJworTEFOR1VBR0UgQyBJTU1VVEFCTEUgU1RS SUNUOworCitDUkVBVEUgRlVOQ1RJT04gZ2J0X2ludHZfc29ydHN1cHBvcnQoaW50ZXJuYWwpCitS RVRVUk5TIHZvaWQKK0FTICdNT0RVTEVfUEFUSE5BTUUnCitMQU5HVUFHRSBDIElNTVVUQUJMRSBT VFJJQ1Q7CisKK0NSRUFURSBGVU5DVElPTiBnYnRfbWFjYWQ4X3NvcnRzdXBwb3J0KGludGVybmFs KQorUkVUVVJOUyB2b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJworTEFOR1VBR0UgQyBJTU1VVEFC TEUgU1RSSUNUOworCitDUkVBVEUgRlVOQ1RJT04gZ2J0X3RpbWVfc29ydHN1cHBvcnQoaW50ZXJu YWwpCitSRVRVUk5TIHZvaWQKK0FTICdNT0RVTEVfUEFUSE5BTUUnCitMQU5HVUFHRSBDIElNTVVU QUJMRSBTVFJJQ1Q7CisKK0NSRUFURSBGVU5DVElPTiBnYnRfaW50Ml9zb3J0c3VwcG9ydChpbnRl cm5hbCkKKyAgICBSRVRVUk5TIHZvaWQKK0FTICdNT0RVTEVfUEFUSE5BTUUnCisgICAgTEFOR1VB R0UgQyBJTU1VVEFCTEUgU1RSSUNUOworCitDUkVBVEUgRlVOQ1RJT04gZ2J0X2ludDRfc29ydHN1 cHBvcnQoaW50ZXJuYWwpCisgICAgUkVUVVJOUyB2b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJwor TEFOR1VBR0UgQyBJTU1VVEFCTEUgU1RSSUNUOworCitDUkVBVEUgRlVOQ1RJT04gZ2J0X2ludDhf c29ydHN1cHBvcnQoaW50ZXJuYWwpCisgICAgUkVUVVJOUyB2b2lkCitBUyAnTU9EVUxFX1BBVEhO QU1FJworICAgIExBTkdVQUdFIEMgSU1NVVRBQkxFIFNUUklDVDsKKworQ1JFQVRFIEZVTkNUSU9O IGdidF9ieXRlYV9zb3J0c3VwcG9ydChpbnRlcm5hbCkKKyAgICBSRVRVUk5TIHZvaWQKK0FTICdN T0RVTEVfUEFUSE5BTUUnCisgICAgTEFOR1VBR0UgQyBJTU1VVEFCTEUgU1RSSUNUOworCitDUkVB VEUgRlVOQ1RJT04gZ2J0X2RhdGVfc29ydHN1cHBvcnQoaW50ZXJuYWwpCisgICAgUkVUVVJOUyB2 b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJworICAgIExBTkdVQUdFIEMgSU1NVVRBQkxFIFNUUklD VDsKKworQ1JFQVRFIEZVTkNUSU9OIGdidF9mbG9hdDRfc29ydHN1cHBvcnQoaW50ZXJuYWwpCisg ICAgUkVUVVJOUyB2b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJworICAgIExBTkdVQUdFIEMgSU1N VVRBQkxFIFNUUklDVDsKKworQ1JFQVRFIEZVTkNUSU9OIGdidF9mbG9hdDhfc29ydHN1cHBvcnQo aW50ZXJuYWwpCisgICAgUkVUVVJOUyB2b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJworICAgIExB TkdVQUdFIEMgSU1NVVRBQkxFIFNUUklDVDsKKworQ1JFQVRFIEZVTkNUSU9OIGdidF9tYWNhZGRy X3NvcnRzdXBwb3J0KGludGVybmFsKQorICAgIFJFVFVSTlMgdm9pZAorQVMgJ01PRFVMRV9QQVRI TkFNRScKKyAgICBMQU5HVUFHRSBDIElNTVVUQUJMRSBTVFJJQ1Q7CisKK0NSRUFURSBGVU5DVElP TiBnYnRfbnVtZXJpY19zb3J0c3VwcG9ydChpbnRlcm5hbCkKKyAgICBSRVRVUk5TIHZvaWQKK0FT ICdNT0RVTEVfUEFUSE5BTUUnCisgICAgTEFOR1VBR0UgQyBJTU1VVEFCTEUgU1RSSUNUOworCitD UkVBVEUgRlVOQ1RJT04gZ2J0X29pZF9zb3J0c3VwcG9ydChpbnRlcm5hbCkKKyAgICBSRVRVUk5T IHZvaWQKK0FTICdNT0RVTEVfUEFUSE5BTUUnCisgICAgTEFOR1VBR0UgQyBJTU1VVEFCTEUgU1RS SUNUOworCitDUkVBVEUgRlVOQ1RJT04gZ2J0X3RleHRfc29ydHN1cHBvcnQoaW50ZXJuYWwpCisg ICAgUkVUVVJOUyB2b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJworICAgIExBTkdVQUdFIEMgSU1N VVRBQkxFIFNUUklDVDsKKworQ1JFQVRFIEZVTkNUSU9OIGdidF90c19zb3J0c3VwcG9ydChpbnRl cm5hbCkKKyAgICBSRVRVUk5TIHZvaWQKK0FTICdNT0RVTEVfUEFUSE5BTUUnCisgICAgTEFOR1VB R0UgQyBJTU1VVEFCTEUgU1RSSUNUOworCitDUkVBVEUgRlVOQ1RJT04gZ2J0X3V1aWRfc29ydHN1 cHBvcnQoaW50ZXJuYWwpCisgICAgUkVUVVJOUyB2b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJwor ICAgIExBTkdVQUdFIEMgSU1NVVRBQkxFIFNUUklDVDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZ IGdpc3RfdmJpdF9vcHMgVVNJTkcgZ2lzdCBBREQKKyAgICBGVU5DVElPTiAgICAxMSAgKHZhcmJp dCwgdmFyYml0KSBnYnRfdmFyYml0X3NvcnRzdXBwb3J0IChpbnRlcm5hbCkgOworCitBTFRFUiBP UEVSQVRPUiBGQU1JTFkgZ2lzdF9iaXRfb3BzIFVTSU5HIGdpc3QgQURECisgICAgRlVOQ1RJT04g ICAgMTEgIChiaXQsIGJpdCkgZ2J0X2JpdF9zb3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsKKworQUxU RVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfYm9vbF9vcHMgVVNJTkcgZ2lzdCBBREQKKyAgICBGVU5D VElPTiAgICAxMSAgKGJvb2wsIGJvb2wpIGdidF9ib29sX3NvcnRzdXBwb3J0IChpbnRlcm5hbCkg OworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9ieXRlYV9vcHMgVVNJTkcgZ2lzdCBBREQK KyAgICBGVU5DVElPTiAgICAxMSAgKGJ5dGVhLCBieXRlYSkgZ2J0X2J5dGVhX3NvcnRzdXBwb3J0 IChpbnRlcm5hbCkgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9jYXNoX29wcyBVU0lO RyBnaXN0IEFERAorICAgIEZVTkNUSU9OICAgIDExICAobW9uZXksIG1vbmV5KSBnYnRfY2FzaF9z b3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfZGF0 ZV9vcHMgVVNJTkcgZ2lzdCBBREQKKyAgICBGVU5DVElPTiAgICAxMSAgKGRhdGUsIGRhdGUpIGdi dF9kYXRlX3NvcnRzdXBwb3J0IChpbnRlcm5hbCkgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkg Z2lzdF9lbnVtX29wcyBVU0lORyBnaXN0IEFERAorICAgIEZVTkNUSU9OICAgIDExICAoYW55ZW51 bSwgYW55ZW51bSkgZ2J0X2VudW1fc29ydHN1cHBvcnQgKGludGVybmFsKSA7CisKK0FMVEVSIE9Q RVJBVE9SIEZBTUlMWSBnaXN0X2Zsb2F0NF9vcHMgVVNJTkcgZ2lzdCBBREQKKyAgICBGVU5DVElP TiAgICAxMSAgKGZsb2F0NCwgZmxvYXQ0KSBnYnRfZmxvYXQ0X3NvcnRzdXBwb3J0IChpbnRlcm5h bCkgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9mbG9hdDhfb3BzIFVTSU5HIGdpc3Qg QURECisgICAgRlVOQ1RJT04gICAgMTEgIChmbG9hdDgsIGZsb2F0OCkgZ2J0X2Zsb2F0OF9zb3J0 c3VwcG9ydCAoaW50ZXJuYWwpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfaW5ldF9v cHMgVVNJTkcgZ2lzdCBBREQKKyAgICBGVU5DVElPTiAgICAxMSAgKGluZXQsIGluZXQpIGdidF9p bmV0X3NvcnRzdXBwb3J0IChpbnRlcm5hbCkgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lz dF9jaWRyX29wcyBVU0lORyBnaXN0IEFERAorICAgIEZVTkNUSU9OICAgIDExICAoaW5ldCwgaW5l dCkgZ2J0X2luZXRfc29ydHN1cHBvcnQgKGludGVybmFsKSA7CisKK0FMVEVSIE9QRVJBVE9SIEZB TUlMWSBnaXN0X2ludDJfb3BzIFVTSU5HIGdpc3QgQURECisgICAgRlVOQ1RJT04gICAgMTEgIChp bnQyLCBpbnQyKSBnYnRfaW50Ml9zb3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsKKworQUxURVIgT1BF UkFUT1IgRkFNSUxZIGdpc3RfaW50NF9vcHMgVVNJTkcgZ2lzdCBBREQKKyAgICBGVU5DVElPTiAg ICAxMSAgKGludDQsIGludDQpIGdidF9pbnQ0X3NvcnRzdXBwb3J0IChpbnRlcm5hbCkgOworCitB TFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9pbnQ4X29wcyBVU0lORyBnaXN0IEFERAorICAgIEZV TkNUSU9OICAgIDExICAoaW50OCwgaW50OCkgZ2J0X2ludDhfc29ydHN1cHBvcnQgKGludGVybmFs KSA7CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBnaXN0X2ludGVydmFsX29wcyBVU0lORyBnaXN0 IEFERAorICAgIEZVTkNUSU9OICAgIDExICAoaW50ZXJ2YWwsIGludGVydmFsKSBnYnRfaW50dl9z b3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfbWFj YWRkcl9vcHMgVVNJTkcgZ2lzdCBBREQKKyAgICBGVU5DVElPTiAgICAxMSAgKG1hY2FkZHIsIG1h Y2FkZHIpIGdidF9tYWNhZDhfc29ydHN1cHBvcnQgKGludGVybmFsKSA7CisKK0FMVEVSIE9QRVJB VE9SIEZBTUlMWSBnaXN0X21hY2FkZHI4X29wcyBVU0lORyBnaXN0IEFERAorICAgIEZVTkNUSU9O ICAgIDExICAobWFjYWRkcjgsIG1hY2FkZHI4KSBnYnRfbWFjYWQ4X3NvcnRzdXBwb3J0IChpbnRl cm5hbCkgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9udW1lcmljX29wcyBVU0lORyBn aXN0IEFERAorICAgIEZVTkNUSU9OICAgIDExICAobnVtZXJpYywgbnVtZXJpYykgZ2J0X251bWVy aWNfc29ydHN1cHBvcnQgKGludGVybmFsKSA7CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBnaXN0 X29pZF9vcHMgVVNJTkcgZ2lzdCBBREQKKyAgICBGVU5DVElPTiAgICAxMSAgKG9pZCwgb2lkKSBn YnRfb2lkX3NvcnRzdXBwb3J0IChpbnRlcm5hbCkgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkg Z2lzdF90ZXh0X29wcyBVU0lORyBnaXN0IEFERAorICAgIEZVTkNUSU9OICAgIDExICAodGV4dCwg dGV4dCkgZ2J0X3RleHRfc29ydHN1cHBvcnQgKGludGVybmFsKSA7CisKK0FMVEVSIE9QRVJBVE9S IEZBTUlMWSBnaXN0X2JwY2hhcl9vcHMgVVNJTkcgZ2lzdCBBREQKKyAgICBGVU5DVElPTiAgICAx MSAgKGJwY2hhciwgYnBjaGFyKSBicGNoYXJfc29ydHN1cHBvcnQgKGludGVybmFsKSA7CisKK0FM VEVSIE9QRVJBVE9SIEZBTUlMWSBnaXN0X3RpbWVfb3BzIFVTSU5HIGdpc3QgQURECisgICAgRlVO Q1RJT04gICAgMTEgICh0aW1lLCB0aW1lKSBnYnRfdGltZV9zb3J0c3VwcG9ydCAoaW50ZXJuYWwp IDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfdGltZXN0YW1wX29wcyBVU0lORyBnaXN0 IEFERAorICAgIEZVTkNUSU9OICAgIDExICAodGltZXN0YW1wLCB0aW1lc3RhbXApIGdidF90c19z b3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsKKworQUxURVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfdGlt ZXN0YW1wdHpfb3BzIFVTSU5HIGdpc3QgQURECisgICAgRlVOQ1RJT04gICAgMTEgICh0aW1lc3Rh bXB0eiwgdGltZXN0YW1wdHopIGdidF90c19zb3J0c3VwcG9ydCAoaW50ZXJuYWwpIDsKKworQUxU RVIgT1BFUkFUT1IgRkFNSUxZIGdpc3RfdGltZXR6X29wcyBVU0lORyBnaXN0IEFERAorICAgIEZV TkNUSU9OICAgIDExICAodGltZXR6LCB0aW1ldHopIGdidF90aW1lX3NvcnRzdXBwb3J0IChpbnRl cm5hbCkgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF91dWlkX29wcyBVU0lORyBnaXN0 IEFERAorICAgIEZVTkNUSU9OICAgIDExICAodXVpZCwgdXVpZCkgZ2J0X3V1aWRfc29ydHN1cHBv cnQgKGludGVybmFsKSA7CmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lz dC5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QuYwppbmRleCA1ZmQ0Y2NlMjdkMC4u YzhhY2JlNzZiNTUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9naXN0LmMK KysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QuYwpAQCAtNiw2ICs2LDkgQEAKICNp bmNsdWRlICJhY2Nlc3Mvc3RyYXRudW0uaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgog CisjaW5jbHVkZSAiYWNjZXNzL2dpc3QuaCIKKyNpbmNsdWRlICJidHJlZV9naXN0LmgiCisKIFBH X01PRFVMRV9NQUdJQzsKIAogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfZGVjb21wcmVzcyk7CmRp ZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC5jb250cm9sIGIvY29udHJp Yi9idHJlZV9naXN0L2J0cmVlX2dpc3QuY29udHJvbAppbmRleCBhYmY2NjUzOGYzMi4uNjlkOTM0 MWEwYWQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9naXN0LmNvbnRyb2wK KysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QuY29udHJvbApAQCAtMSw2ICsxLDYg QEAKICMgYnRyZWVfZ2lzdCBleHRlbnNpb24KIGNvbW1lbnQgPSAnc3VwcG9ydCBmb3IgaW5kZXhp bmcgY29tbW9uIGRhdGF0eXBlcyBpbiBHaVNUJwotZGVmYXVsdF92ZXJzaW9uID0gJzEuOCcKK2Rl ZmF1bHRfdmVyc2lvbiA9ICcxLjknCiBtb2R1bGVfcGF0aG5hbWUgPSAnJGxpYmRpci9idHJlZV9n aXN0JwogcmVsb2NhdGFibGUgPSB0cnVlCiB0cnVzdGVkID0gdHJ1ZQpkaWZmIC0tZ2l0IGEvY29u dHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QuaCBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9n aXN0LmgKaW5kZXggMGRiODUyMmM4YTcuLjI0NWMzNTU5MjgxIDEwMDY0NAotLS0gYS9jb250cmli L2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC5oCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9n aXN0LmgKQEAgLTksNiArOSwxMiBAQAogCiAjZGVmaW5lIEJ0cmVlR2lzdE5vdEVxdWFsU3RyYXRl Z3lOdW1iZXIgNgogCit0eXBlZGVmIHN0cnVjdCBpbnQzMmtleQoreworICBpbnQzMgkJbG93ZXI7 CisgIGludDMyCQl1cHBlcjsKK30gaW50MzJLRVk7CisKIC8qIGluZGV4ZWQgdHlwZXMgKi8KIAog ZW51bSBnYnRyZWVfdHlwZQpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2lu ZXQuYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbmV0LmMKaW5kZXggMmZiOTUyZGNhODMu Ljc3ZWYxNGE0ZjdkIDEwMDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW5ldC5j CisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbmV0LmMKQEAgLTgsNiArOCw3IEBACiAj aW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIK ICNpbmNsdWRlICJ1dGlscy9pbmV0LmgiCisjaW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIK IAogdHlwZWRlZiBzdHJ1Y3QgaW5ldGtleQogewpAQCAtMjQsOCArMjUsMjMgQEAgUEdfRlVOQ1RJ T05fSU5GT19WMShnYnRfaW5ldF9waWNrc3BsaXQpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRf aW5ldF9jb25zaXN0ZW50KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2luZXRfcGVuYWx0eSk7 CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9pbmV0X3NhbWUpOworUEdfRlVOQ1RJT05fSU5GT19W MShnYnRfaW5ldF9zb3J0c3VwcG9ydCk7CiAKIAorc3RhdGljIGludAorZ2J0X2luZXRfc3N1cF9j bXAoRGF0dW0geCwgRGF0dW0geSwgU29ydFN1cHBvcnQgc3N1cCkKK3sKKwlpbmV0S0VZICphcmcx ID0gKGluZXRLRVkgKikgRGF0dW1HZXRQb2ludGVyKHgpOworCWluZXRLRVkgKmFyZzIgPSAoaW5l dEtFWSAqKSBEYXR1bUdldFBvaW50ZXIoeSk7CisKKwlpZiAoYXJnMS0+bG93ZXIgPT0gYXJnMi0+ bG93ZXIpCisJCXJldHVybiAwOworCWVsc2UgaWYgKGFyZzEtPmxvd2VyID4gYXJnMi0+bG93ZXIp CisJCXJldHVybiAxOworCWVsc2UKKwkJcmV0dXJuIC0xOworfQorCiBzdGF0aWMgYm9vbAogZ2J0 X2luZXRndChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiLCBGbWdySW5mbyAqZmxpbmZvKQog ewpAQCAtMTg1LDMgKzIwMSwxNCBAQCBnYnRfaW5ldF9zYW1lKFBHX0ZVTkNUSU9OX0FSR1MpCiAJ KnJlc3VsdCA9IGdidF9udW1fc2FtZSgodm9pZCAqKSBiMSwgKHZvaWQgKikgYjIsICZ0aW5mbywg ZmNpbmZvLT5mbGluZm8pOwogCVBHX1JFVFVSTl9QT0lOVEVSKHJlc3VsdCk7CiB9CisKK0RhdHVt CitnYnRfaW5ldF9zb3J0c3VwcG9ydChQR19GVU5DVElPTl9BUkdTKQoreworCVNvcnRTdXBwb3J0 IHNzdXAgPSAoU29ydFN1cHBvcnQpIFBHX0dFVEFSR19QT0lOVEVSKDApOworCisJc3N1cC0+Y29t cGFyYXRvciA9IGdidF9pbmV0X3NzdXBfY21wOworCXNzdXAtPnNzdXBfZXh0cmEgPSBOVUxMOwor CisJUEdfUkVUVVJOX1ZPSUQoKTsKK30KZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9i dHJlZV9pbnQyLmMgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50Mi5jCmluZGV4IGZkYmYx NTY1ODZjLi5iMTk3NzBmZjY3ZiAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVl X2ludDIuYworKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50Mi5jCkBAIC01LDYgKzUs NyBAQAogCiAjaW5jbHVkZSAiYnRyZWVfZ2lzdC5oIgogI2luY2x1ZGUgImJ0cmVlX3V0aWxzX251 bS5oIgorI2luY2x1ZGUgInV0aWxzL3NvcnRzdXBwb3J0LmgiCiAjaW5jbHVkZSAiY29tbW9uL2lu dC5oIgogCiB0eXBlZGVmIHN0cnVjdCBpbnQxNmtleQpAQCAtMjQsNiArMjUsMzEgQEAgUEdfRlVO Q1RJT05fSU5GT19WMShnYnRfaW50Ml9jb25zaXN0ZW50KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEo Z2J0X2ludDJfZGlzdGFuY2UpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfaW50Ml9wZW5hbHR5 KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2ludDJfc2FtZSk7CitQR19GVU5DVElPTl9JTkZP X1YxKGdidF9pbnQyX3NvcnRzdXBwb3J0KTsKKworLyogc29ydHN1cHBvcnQgZnVuY3Rpb25zICov CitzdGF0aWMgaW50CitnYnRfaW50Ml9zc3VwX2NtcChEYXR1bSB4LCBEYXR1bSB5LCBTb3J0U3Vw cG9ydCBzc3VwKQoreworCWludDE2S0VZICphcmcxID0gKGludDE2S0VZICopIERhdHVtR2V0UG9p bnRlcih4KTsKKwlpbnQxNktFWSAqYXJnMiA9IChpbnQxNktFWSAqKSBEYXR1bUdldFBvaW50ZXIo eSk7CisKKwlpZiAoYXJnMS0+bG93ZXIgPCBhcmcyLT5sb3dlcikKKwkJcmV0dXJuIC0xOworCWVs c2UgaWYgKGFyZzEtPmxvd2VyID4gYXJnMi0+bG93ZXIpCisJCXJldHVybiAxOworCWVsc2UKKwkJ cmV0dXJuIDA7Cit9CisKK0RhdHVtCitnYnRfaW50Ml9zb3J0c3VwcG9ydChQR19GVU5DVElPTl9B UkdTKQoreworCVNvcnRTdXBwb3J0IHNzdXAgPSAoU29ydFN1cHBvcnQpIFBHX0dFVEFSR19QT0lO VEVSKDApOworCisJc3N1cC0+Y29tcGFyYXRvciA9IGdidF9pbnQyX3NzdXBfY21wOworCVBHX1JF VFVSTl9WT0lEKCk7Cit9CiAKIHN0YXRpYyBib29sCiBnYnRfaW50Mmd0KGNvbnN0IHZvaWQgKmEs IGNvbnN0IHZvaWQgKmIsIEZtZ3JJbmZvICpmbGluZm8pCmRpZmYgLS1naXQgYS9jb250cmliL2J0 cmVlX2dpc3QvYnRyZWVfaW50NC5jIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludDQuYwpp bmRleCA4OTE1ZmI1ZDA4Ny4uNjA0MTg1MTFlZGUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVf Z2lzdC9idHJlZV9pbnQ0LmMKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludDQuYwpA QCAtMiwxNiArMiwxMCBAQAogICogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludDQuYwogICov CiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKLQorI2luY2x1ZGUgImNvbW1vbi9pbnQuaCIKKyNpbmNs dWRlICJ1dGlscy9zb3J0c3VwcG9ydC5oIgogI2luY2x1ZGUgImJ0cmVlX2dpc3QuaCIKICNpbmNs dWRlICJidHJlZV91dGlsc19udW0uaCIKLSNpbmNsdWRlICJjb21tb24vaW50LmgiCi0KLXR5cGVk ZWYgc3RydWN0IGludDMya2V5Ci17Ci0JaW50MzIJCWxvd2VyOwotCWludDMyCQl1cHBlcjsKLX0g aW50MzJLRVk7CiAKIC8qCiAqKiBpbnQzMiBvcHMKQEAgLTI0LDYgKzE4LDcgQEAgUEdfRlVOQ1RJ T05fSU5GT19WMShnYnRfaW50NF9jb25zaXN0ZW50KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0 X2ludDRfZGlzdGFuY2UpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfaW50NF9wZW5hbHR5KTsK IFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2ludDRfc2FtZSk7CitQR19GVU5DVElPTl9JTkZPX1Yx KGdidF9pbnQ0X3NvcnRzdXBwb3J0KTsKIAogCiBzdGF0aWMgYm9vbApAQCAtOTAsNiArODUsMjkg QEAgc3RhdGljIGNvbnN0IGdidHJlZV9uaW5mbyB0aW5mbyA9CiAJZ2J0X2ludDRfZGlzdAogfTsK IAorc3RhdGljIGludAorZ2J0X2ludDRfc3N1cF9jbXAoRGF0dW0gYSwgRGF0dW0gYiwgU29ydFN1 cHBvcnQgc3N1cCkKK3sKKwlpbnQzMktFWSAgICppYSA9IChpbnQzMktFWSAqKSBEYXR1bUdldFBv aW50ZXIoYSk7CisJaW50MzJLRVkgICAqaWIgPSAoaW50MzJLRVkgKikgRGF0dW1HZXRQb2ludGVy KGIpOworCisJLyogaW50NEtFWSB1cHBlciBhbmQgbG93ZXIgYXJlIGFsd2F5cyB0aGUgc2FtZSBm b3IgaW5wdXQga2V5cyBoZXJlLiAqLworCWlmIChpYS0+bG93ZXIgPCBpYi0+bG93ZXIpCisJCXJl dHVybiAtMTsKKwllbHNlIGlmIChpYS0+bG93ZXIgPiBpYi0+bG93ZXIpCisJCXJldHVybiAxOwor CWVsc2UKKwkJcmV0dXJuIDA7Cit9CisKK0RhdHVtCitnYnRfaW50NF9zb3J0c3VwcG9ydChQR19G VU5DVElPTl9BUkdTKQoreworCVNvcnRTdXBwb3J0IHNzdXAgPSAoU29ydFN1cHBvcnQpIFBHX0dF VEFSR19QT0lOVEVSKDApOworCisJc3N1cC0+Y29tcGFyYXRvciA9IGdidF9pbnQ0X3NzdXBfY21w OworCVBHX1JFVFVSTl9WT0lEKCk7Cit9CiAKIFBHX0ZVTkNUSU9OX0lORk9fVjEoaW50NF9kaXN0 KTsKIERhdHVtCmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50OC5jIGIv Y29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludDguYwppbmRleCA3YzYzYTViNmRjMS4uMDBkNTUx NjNmYzkgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbnQ4LmMKKysrIGIv Y29udHJpYi9idHJlZV9naXN0L2J0cmVlX2ludDguYwpAQCAtNiw2ICs2LDcgQEAKICNpbmNsdWRl ICJidHJlZV9naXN0LmgiCiAjaW5jbHVkZSAiYnRyZWVfdXRpbHNfbnVtLmgiCiAjaW5jbHVkZSAi Y29tbW9uL2ludC5oIgorI2luY2x1ZGUgInV0aWxzL3NvcnRzdXBwb3J0LmgiCiAKIHR5cGVkZWYg c3RydWN0IGludDY0a2V5CiB7CkBAIC0yNCw3ICsyNSwzMiBAQCBQR19GVU5DVElPTl9JTkZPX1Yx KGdidF9pbnQ4X2NvbnNpc3RlbnQpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfaW50OF9kaXN0 YW5jZSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9pbnQ4X3BlbmFsdHkpOwogUEdfRlVOQ1RJ T05fSU5GT19WMShnYnRfaW50OF9zYW1lKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2ludDhf c29ydHN1cHBvcnQpOwogCisvKiBzb3J0c3VwcG9ydCBmdW5jdGlvbnMgKi8KK3N0YXRpYyBpbnQK K2didF9pbnQ4X3NzdXBfY21wKERhdHVtIHgsIERhdHVtIHksIFNvcnRTdXBwb3J0IHNzdXApCit7 CisJaW50NjRLRVkgKmFyZzEgPSAoaW50NjRLRVkgKikgRGF0dW1HZXRQb2ludGVyKHgpOworCWlu dDY0S0VZICphcmcyID0gKGludDY0S0VZICopIERhdHVtR2V0UG9pbnRlcih5KTsKKworCWlmIChh cmcxLT5sb3dlciA8IGFyZzItPmxvd2VyKQorCQlyZXR1cm4gLTE7CisJZWxzZSBpZiAoYXJnMS0+ bG93ZXIgPiBhcmcyLT5sb3dlcikKKwkJcmV0dXJuIDE7CisJZWxzZQorCQlyZXR1cm4gMDsKKwor fQorCitEYXR1bQorZ2J0X2ludDhfc29ydHN1cHBvcnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlT b3J0U3VwcG9ydCBzc3VwID0gKFNvcnRTdXBwb3J0KSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKwor CXNzdXAtPmNvbXBhcmF0b3IgPSBnYnRfaW50OF9zc3VwX2NtcDsKKwlQR19SRVRVUk5fVk9JRCgp OworfQogCiBzdGF0aWMgYm9vbAogZ2J0X2ludDhndChjb25zdCB2b2lkICphLCBjb25zdCB2b2lk ICpiLCBGbWdySW5mbyAqZmxpbmZvKQpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0 cmVlX2ludGVydmFsLmMgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfaW50ZXJ2YWwuYwppbmRl eCBiMGFmZGYwMmJiNS4uNGRhMzBiZTllNDYgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lz dC9idHJlZV9pbnRlcnZhbC5jCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9pbnRlcnZh bC5jCkBAIC02LDYgKzYsNyBAQAogI2luY2x1ZGUgImJ0cmVlX2dpc3QuaCIKICNpbmNsdWRlICJi dHJlZV91dGlsc19udW0uaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUg InV0aWxzL3NvcnRzdXBwb3J0LmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCiAKIHR5 cGVkZWYgc3RydWN0CkBAIC0yNyw4ICsyOCwyMSBAQCBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9p bnR2X2NvbnNpc3RlbnQpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfaW50dl9kaXN0YW5jZSk7 CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9pbnR2X3BlbmFsdHkpOwogUEdfRlVOQ1RJT05fSU5G T19WMShnYnRfaW50dl9zYW1lKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X2ludHZfc29ydHN1 cHBvcnQpOwogCiAKK3N0YXRpYyBpbnQKK2didF9pbnR2X3NzdXBfY21wKERhdHVtIHgsIERhdHVt IHksIFNvcnRTdXBwb3J0IHNzdXApCit7CisJaW50dktFWSAqYXJnMSA9IChpbnR2S0VZICopIERh dHVtR2V0UG9pbnRlcih4KTsKKwlpbnR2S0VZICphcmcyID0gKGludHZLRVkgKikgRGF0dW1HZXRQ b2ludGVyKHkpOworCisJLyogaW50dktFWSBsb3dlciBhbmQgdXBwZXIgYXJlIGFsd2F5cyBlcXVh bCBoZXJlLCBzbyBjb21wYXJlIGp1c3QgbG93ZXIgbWVtYmVycyBpcyBlbm91Z2ggKi8KKwlyZXR1 cm4gRGF0dW1HZXRJbnQzMihEaXJlY3RGdW5jdGlvbkNhbGwyKGludGVydmFsX2NtcCwKKwkJCQkJ CQkJCQkJIEludGVydmFsUEdldERhdHVtKCZhcmcxLT5sb3dlciksCisJCQkJCQkJCQkJCSBJbnRl cnZhbFBHZXREYXR1bSgmYXJnMi0+bG93ZXIpKSk7Cit9CisKIHN0YXRpYyBib29sCiBnYnRfaW50 dmd0KGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIEZtZ3JJbmZvICpmbGluZm8pCiB7CkBA IC0yOTUsMyArMzA5LDE0IEBAIGdidF9pbnR2X3NhbWUoUEdfRlVOQ1RJT05fQVJHUykKIAkqcmVz dWx0ID0gZ2J0X251bV9zYW1lKCh2b2lkICopIGIxLCAodm9pZCAqKSBiMiwgJnRpbmZvLCBmY2lu Zm8tPmZsaW5mbyk7CiAJUEdfUkVUVVJOX1BPSU5URVIocmVzdWx0KTsKIH0KKworRGF0dW0KK2di dF9pbnR2X3NvcnRzdXBwb3J0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJU29ydFN1cHBvcnQgc3N1 cCA9IChTb3J0U3VwcG9ydCkgUEdfR0VUQVJHX1BPSU5URVIoMCk7CisKKwlzc3VwLT5jb21wYXJh dG9yID0gZ2J0X2ludHZfc3N1cF9jbXA7CisJc3N1cC0+c3N1cF9leHRyYSA9IE5VTEw7CisKKwlQ R19SRVRVUk5fVk9JRCgpOworfQpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVl X21hY2FkZHIuYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9tYWNhZGRyLmMKaW5kZXggMTcy OTA1MjljMDIuLmI5NWZkOGQzNDA5IDEwMDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3QvYnRy ZWVfbWFjYWRkci5jCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9tYWNhZGRyLmMKQEAg LTcsNiArNyw3IEBACiAjaW5jbHVkZSAiYnRyZWVfdXRpbHNfbnVtLmgiCiAjaW5jbHVkZSAidXRp bHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9pbmV0LmgiCisjaW5jbHVkZSAidXRpbHMv c29ydHN1cHBvcnQuaCIKIAogdHlwZWRlZiBzdHJ1Y3QKIHsKQEAgLTI1LDYgKzI2LDM0IEBAIFBH X0ZVTkNUSU9OX0lORk9fVjEoZ2J0X21hY2FkX3BpY2tzcGxpdCk7CiBQR19GVU5DVElPTl9JTkZP X1YxKGdidF9tYWNhZF9jb25zaXN0ZW50KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X21hY2Fk X3BlbmFsdHkpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfbWFjYWRfc2FtZSk7CitQR19GVU5D VElPTl9JTkZPX1YxKGdidF9tYWNhZGRyX3NvcnRzdXBwb3J0KTsKKworLyogc29ydHN1cHBvcnQg ZnVuY3Rpb25zICovCitzdGF0aWMgaW50CitnYnRfbWFjYWRkcl9zc3VwX2NtcChEYXR1bSB4LCBE YXR1bSB5LCBTb3J0U3VwcG9ydCBzc3VwKQoreworCW1hY0tFWSAqYXJnMSA9IChtYWNLRVkgKikg RGF0dW1HZXRQb2ludGVyKHgpOworCW1hY0tFWSAqYXJnMiA9IChtYWNLRVkgKikgRGF0dW1HZXRQ b2ludGVyKHkpOworCisJLyogbWFjS0VZIGxvd2VyIGFuZCB1cHBlciBtZW1iZXJzIGFyZSBhbHdh eXMgZXF1YWwgaGVyZSwKKwkgKiBzbyBpdHMgZW5vdWdoIHRvIGNvbXBhcmUganVzdCBsb3dlci4K KwkgKi8KKwlyZXR1cm4gRGF0dW1HZXRJbnQzMihEaXJlY3RGdW5jdGlvbkNhbGwyKG1hY2FkZHJf Y21wLAorCQkJCQkJCQkJCQkgTWFjYWRkclBHZXREYXR1bSgmYXJnMS0+bG93ZXIpLAorCQkJCQkJ CQkJCQkgTWFjYWRkclBHZXREYXR1bSgmYXJnMi0+bG93ZXIpKSk7CisKK30KKworRGF0dW0KK2di dF9tYWNhZGRyX3NvcnRzdXBwb3J0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJU29ydFN1cHBvcnQg c3N1cCA9IChTb3J0U3VwcG9ydCkgUEdfR0VUQVJHX1BPSU5URVIoMCk7CisKKwlzc3VwLT5jb21w YXJhdG9yID0gZ2J0X21hY2FkZHJfc3N1cF9jbXA7CisJc3N1cC0+c3N1cF9leHRyYSA9IE5VTEw7 CisKKwlQR19SRVRVUk5fVk9JRCgpOworfQogCiAKIHN0YXRpYyBib29sCmRpZmYgLS1naXQgYS9j b250cmliL2J0cmVlX2dpc3QvYnRyZWVfbWFjYWRkcjguYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9i dHJlZV9tYWNhZGRyOC5jCmluZGV4IDc5NmNjNGVmZWUzLi5jM2ZmN2VlYjBiNSAxMDA2NDQKLS0t IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX21hY2FkZHI4LmMKKysrIGIvY29udHJpYi9idHJl ZV9naXN0L2J0cmVlX21hY2FkZHI4LmMKQEAgLTcsNiArNyw3IEBACiAjaW5jbHVkZSAiYnRyZWVf dXRpbHNfbnVtLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGls cy9pbmV0LmgiCisjaW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIKIAogdHlwZWRlZiBzdHJ1 Y3QKIHsKQEAgLTI1LDggKzI2LDIwIEBAIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X21hY2FkOF9w aWNrc3BsaXQpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfbWFjYWQ4X2NvbnNpc3RlbnQpOwog UEdfRlVOQ1RJT05fSU5GT19WMShnYnRfbWFjYWQ4X3BlbmFsdHkpOwogUEdfRlVOQ1RJT05fSU5G T19WMShnYnRfbWFjYWQ4X3NhbWUpOworUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfbWFjYWQ4X3Nv cnRzdXBwb3J0KTsKIAogCitzdGF0aWMgaW50CitnYnRfbWFjYWRkcjhfc3N1cF9jbXAoRGF0dW0g eCwgRGF0dW0geSwgU29ydFN1cHBvcnQgc3N1cCkKK3sKKwltYWM4S0VZICphcmcxID0gKG1hYzhL RVkgKikgRGF0dW1HZXRQb2ludGVyKHgpOworCW1hYzhLRVkgKmFyZzIgPSAobWFjOEtFWSAqKSBE YXR1bUdldFBvaW50ZXIoeSk7CisKKwlyZXR1cm4gRGF0dW1HZXRJbnQzMihEaXJlY3RGdW5jdGlv bkNhbGwyKG1hY2FkZHI4X2NtcCwKKwkJCQkJCQkJCQkJIE1hY2FkZHI4UEdldERhdHVtKCZhcmcx LT5sb3dlciksCisJCQkJCQkJCQkJCSBNYWNhZGRyOFBHZXREYXR1bSgmYXJnMi0+bG93ZXIpKSk7 Cit9CisKIHN0YXRpYyBib29sCiBnYnRfbWFjYWQ4Z3QoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9p ZCAqYiwgRm1nckluZm8gKmZsaW5mbykKIHsKQEAgLTE5NCwzICsyMDcsMTQgQEAgZ2J0X21hY2Fk OF9zYW1lKFBHX0ZVTkNUSU9OX0FSR1MpCiAJKnJlc3VsdCA9IGdidF9udW1fc2FtZSgodm9pZCAq KSBiMSwgKHZvaWQgKikgYjIsICZ0aW5mbywgZmNpbmZvLT5mbGluZm8pOwogCVBHX1JFVFVSTl9Q T0lOVEVSKHJlc3VsdCk7CiB9CisKK0RhdHVtCitnYnRfbWFjYWQ4X3NvcnRzdXBwb3J0KFBHX0ZV TkNUSU9OX0FSR1MpCit7CisJU29ydFN1cHBvcnQgc3N1cCA9IChTb3J0U3VwcG9ydCkgUEdfR0VU QVJHX1BPSU5URVIoMCk7CisKKwlzc3VwLT5jb21wYXJhdG9yID0gZ2J0X21hY2FkZHI4X3NzdXBf Y21wOworCXNzdXAtPnNzdXBfZXh0cmEgPSBOVUxMOworCisJUEdfUkVUVVJOX1ZPSUQoKTsKK30K ZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9udW1lcmljLmMgYi9jb250cmli L2J0cmVlX2dpc3QvYnRyZWVfbnVtZXJpYy5jCmluZGV4IDM1ZTQ2NmNkZDk0Li4yMjc3MTI2NDVk YSAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX251bWVyaWMuYworKysgYi9j b250cmliL2J0cmVlX2dpc3QvYnRyZWVfbnVtZXJpYy5jCkBAIC0xMSw2ICsxMSw3IEBACiAjaW5j bHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9udW1lcmljLmgiCiAjaW5j bHVkZSAidXRpbHMvcmVsLmgiCisjaW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIKIAogLyoK ICoqIEJ5dGVhIG9wcwpAQCAtMjEsNyArMjIsMzkgQEAgUEdfRlVOQ1RJT05fSU5GT19WMShnYnRf bnVtZXJpY19waWNrc3BsaXQpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfbnVtZXJpY19jb25z aXN0ZW50KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X251bWVyaWNfcGVuYWx0eSk7CiBQR19G VU5DVElPTl9JTkZPX1YxKGdidF9udW1lcmljX3NhbWUpOworUEdfRlVOQ1RJT05fSU5GT19WMShn YnRfbnVtZXJpY19zb3J0c3VwcG9ydCk7CiAKKy8qIFNvcnRzdXBwb3J0IGZ1bmN0aW9ucyAqLwor c3RhdGljIGludAorZ2J0X251bWVyaWNfc3N1cF9jbXAoRGF0dW0geCwgRGF0dW0geSwgU29ydFN1 cHBvcnQgc3N1cCkKK3sKKwlHQlRfVkFSS0VZICprZXkxID0gUEdfREVUT0FTVF9EQVRVTSh4KTsK KwlHQlRfVkFSS0VZICprZXkyID0gUEdfREVUT0FTVF9EQVRVTSh5KTsKKworCUdCVF9WQVJLRVlf UiBhcmcxID0gZ2J0X3Zhcl9rZXlfcmVhZGFibGUoa2V5MSk7CisJR0JUX1ZBUktFWV9SIGFyZzIg PSBnYnRfdmFyX2tleV9yZWFkYWJsZShrZXkyKTsKKwlEYXR1bSByZXN1bHQ7CisKKwlyZXN1bHQg PSBEaXJlY3RGdW5jdGlvbkNhbGwyKG51bWVyaWNfY21wLAorCQkJCQkJCQkgUG9pbnRlckdldERh dHVtKGFyZzEubG93ZXIpLAorCQkJCQkJCQkgUG9pbnRlckdldERhdHVtKGFyZzIubG93ZXIpKTsK KworCUdCVF9GUkVFX0lGX0NPUFkoa2V5MSwgeCk7CisJR0JUX0ZSRUVfSUZfQ09QWShrZXkyLCB5 KTsKKworCXJldHVybiBEYXR1bUdldEludDMyKHJlc3VsdCk7Cit9CisKK0RhdHVtCitnYnRfbnVt ZXJpY19zb3J0c3VwcG9ydChQR19GVU5DVElPTl9BUkdTKQoreworCVNvcnRTdXBwb3J0IHNzdXAg PSAoU29ydFN1cHBvcnQpIFBHX0dFVEFSR19QT0lOVEVSKDApOworCisJc3N1cC0+Y29tcGFyYXRv ciA9IGdidF9udW1lcmljX3NzdXBfY21wOworCXNzdXAtPnNzdXBfZXh0cmEgPSBOVUxMOworCisJ UEdfUkVUVVJOX1ZPSUQoKTsKK30KIAogLyogZGVmaW5lIGZvciBjb21wYXJpc29uICovCiAKZGlm ZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9vaWQuYyBiL2NvbnRyaWIvYnRyZWVf Z2lzdC9idHJlZV9vaWQuYwppbmRleCAzY2M3ZDQyNDVkNC4uNGNlNGQzZmY4N2UgMTAwNjQ0Ci0t LSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9vaWQuYworKysgYi9jb250cmliL2J0cmVlX2dp c3QvYnRyZWVfb2lkLmMKQEAgLTUsNiArNSw3IEBACiAKICNpbmNsdWRlICJidHJlZV9naXN0Lmgi CiAjaW5jbHVkZSAiYnRyZWVfdXRpbHNfbnVtLmgiCisjaW5jbHVkZSAidXRpbHMvc29ydHN1cHBv cnQuaCIKIAogdHlwZWRlZiBzdHJ1Y3QKIHsKQEAgLTIzLDcgKzI0LDM0IEBAIFBHX0ZVTkNUSU9O X0lORk9fVjEoZ2J0X29pZF9jb25zaXN0ZW50KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X29p ZF9kaXN0YW5jZSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9vaWRfcGVuYWx0eSk7CiBQR19G VU5DVElPTl9JTkZPX1YxKGdidF9vaWRfc2FtZSk7CitQR19GVU5DVElPTl9JTkZPX1YxKGdidF9v aWRfc29ydHN1cHBvcnQpOwogCisvKiBTb3J0c3VwcG9ydCBmdW5jdGlvbnMgKi8KK3N0YXRpYyBp bnQKK2didF9vaWRfc3N1cF9jbXAoRGF0dW0geCwgRGF0dW0geSwgU29ydFN1cHBvcnQgc3N1cCkK K3sKKwlvaWRLRVkgKmFyZzEgPSAob2lkS0VZICopIERhdHVtR2V0UG9pbnRlcih4KTsKKwlvaWRL RVkgKmFyZzIgPSAob2lkS0VZICopIERhdHVtR2V0UG9pbnRlcih5KTsKKworCS8qIHVwcGVyIGFu ZCBsb3dlciBmaWVsZHMgYXJlIGVxdWFsIGZvciBlYWNoIG9pZEtFWSwgc28ganVzdCBjb21wYXJl IGxvd2VyICovCisJaWYgKGFyZzEtPmxvd2VyID4gYXJnMi0+bG93ZXIpCisJCXJldHVybiAxOwor CWVsc2UgaWYgKGFyZzEtPmxvd2VyIDwgYXJnMi0+bG93ZXIpCisJCXJldHVybiAtMTsKKwllbHNl CisJCXJldHVybiAwOworfQorCitEYXR1bQorZ2J0X29pZF9zb3J0c3VwcG9ydChQR19GVU5DVElP Tl9BUkdTKQoreworCVNvcnRTdXBwb3J0IHNzdXAgPSAoU29ydFN1cHBvcnQpIFBHX0dFVEFSR19Q T0lOVEVSKDApOworCisJc3N1cC0+Y29tcGFyYXRvciA9IGdidF9vaWRfc3N1cF9jbXA7CisJc3N1 cC0+c3N1cF9leHRyYSA9IE5VTEw7CisKKwlQR19SRVRVUk5fVk9JRCgpOworfQogCiBzdGF0aWMg Ym9vbAogZ2J0X29pZGd0KGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIEZtZ3JJbmZvICpm bGluZm8pCmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfdGV4dC5jIGIvY29u dHJpYi9idHJlZV9naXN0L2J0cmVlX3RleHQuYwppbmRleCBiZTBlYWM3OTc1Yi4uNTMwNjQ4Y2I2 MjkgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV90ZXh0LmMKKysrIGIvY29u dHJpYi9idHJlZV9naXN0L2J0cmVlX3RleHQuYwpAQCAtNiw2ICs2LDcgQEAKICNpbmNsdWRlICJi dHJlZV9naXN0LmgiCiAjaW5jbHVkZSAiYnRyZWVfdXRpbHNfdmFyLmgiCiAjaW5jbHVkZSAidXRp bHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9zb3J0c3VwcG9ydC5oIgogCiAvKgogKiog VGV4dCBvcHMKQEAgLTE4LDcgKzE5LDQwIEBAIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X3RleHRf Y29uc2lzdGVudCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF9icGNoYXJfY29uc2lzdGVudCk7 CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF90ZXh0X3BlbmFsdHkpOwogUEdfRlVOQ1RJT05fSU5G T19WMShnYnRfdGV4dF9zYW1lKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X3RleHRfc29ydHN1 cHBvcnQpOwogCisvKiBTb3J0c3VwcG9ydCBmdW5jdGlvbnMgKi8KK3N0YXRpYyBpbnQKK2didF90 ZXh0X3NzdXBfY21wKERhdHVtIHgsIERhdHVtIHksIFNvcnRTdXBwb3J0IHNzdXApCit7CisJR0JU X1ZBUktFWSAqa2V5MSA9IFBHX0RFVE9BU1RfREFUVU0oeCk7CisJR0JUX1ZBUktFWSAqa2V5MiA9 IFBHX0RFVE9BU1RfREFUVU0oeSk7CisKKwlHQlRfVkFSS0VZX1IgYXJnMSA9IGdidF92YXJfa2V5 X3JlYWRhYmxlKGtleTEpOworCUdCVF9WQVJLRVlfUiBhcmcyID0gZ2J0X3Zhcl9rZXlfcmVhZGFi bGUoa2V5Mik7CisJRGF0dW0gcmVzdWx0OworCisJcmVzdWx0ID0gRGlyZWN0RnVuY3Rpb25DYWxs MkNvbGwoYnR0ZXh0Y21wLAorCQkJCQkJCQkJIHNzdXAtPnNzdXBfY29sbGF0aW9uLAorCQkJCQkJ CQkJIFBvaW50ZXJHZXREYXR1bShhcmcxLmxvd2VyKSwKKwkJCQkJCQkJCSBQb2ludGVyR2V0RGF0 dW0oYXJnMi5sb3dlcikpOworCisJR0JUX0ZSRUVfSUZfQ09QWShrZXkxLCB4KTsKKwlHQlRfRlJF RV9JRl9DT1BZKGtleTIsIHkpOworCisJcmV0dXJuIERhdHVtR2V0SW50MzIocmVzdWx0KTsKK30K KworRGF0dW0KK2didF90ZXh0X3NvcnRzdXBwb3J0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJU29y dFN1cHBvcnQgc3N1cCA9IChTb3J0U3VwcG9ydCkgUEdfR0VUQVJHX1BPSU5URVIoMCk7CisKKwlz c3VwLT5jb21wYXJhdG9yID0gZ2J0X3RleHRfc3N1cF9jbXA7CisJc3N1cC0+c3N1cF9leHRyYSA9 IE5VTEw7CisKKwlQR19SRVRVUk5fVk9JRCgpOworfQogCiAvKiBkZWZpbmUgZm9yIGNvbXBhcmlz b24gKi8KIApkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3RpbWUuYyBiL2Nv bnRyaWIvYnRyZWVfZ2lzdC9idHJlZV90aW1lLmMKaW5kZXggZDg5NDAxYzBmNTEuLjM0NGI1NjM3 ZWE1IDEwMDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfdGltZS5jCisrKyBiL2Nv bnRyaWIvYnRyZWVfZ2lzdC9idHJlZV90aW1lLmMKQEAgLTcsNiArNyw3IEBACiAjaW5jbHVkZSAi YnRyZWVfdXRpbHNfbnVtLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRl ICJ1dGlscy9kYXRlLmgiCisjaW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIKICNpbmNsdWRl ICJ1dGlscy90aW1lc3RhbXAuaCIKIAogdHlwZWRlZiBzdHJ1Y3QKQEAgLTI4LDYgKzI5LDggQEAg UEdfRlVOQ1RJT05fSU5GT19WMShnYnRfdGltZV9kaXN0YW5jZSk7CiBQR19GVU5DVElPTl9JTkZP X1YxKGdidF90aW1ldHpfY29uc2lzdGVudCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF90aW1l X3BlbmFsdHkpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfdGltZV9zYW1lKTsKK1BHX0ZVTkNU SU9OX0lORk9fVjEoZ2J0X3RpbWVfc29ydHN1cHBvcnQpOworUEdfRlVOQ1RJT05fSU5GT19WMShn YnRfdGltZXR6X3NvcnRzdXBwb3J0KTsKIAogCiAjaWZkZWYgVVNFX0ZMT0FUOF9CWVZBTApAQCAt MzcsNiArNDAsMTggQEAgUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfdGltZV9zYW1lKTsKICNlbmRp ZgogCiAKK3N0YXRpYyBpbnQKK2didF90aW1la2V5X3NzdXBfY21wKERhdHVtIHgsIERhdHVtIHks IFNvcnRTdXBwb3J0IHNzdXApCit7CisJdGltZUtFWSAqYXJnMSA9ICh0aW1lS0VZICopIERhdHVt R2V0UG9pbnRlcih4KTsKKwl0aW1lS0VZICphcmcyID0gKHRpbWVLRVkgKikgRGF0dW1HZXRQb2lu dGVyKHkpOworCisJLyogbG93ZXIgYW5kIHVwcGVyIGFyZSBlcXVhbCBkdXJpbmcgc29ydHN1cHBv cnQgY29tcGFyaXNvbiAqLworCXJldHVybiBEYXR1bUdldEludDMyKERpcmVjdEZ1bmN0aW9uQ2Fs bDIodGltZV9jbXAsCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU aW1lQURUR2V0RGF0dW1GYXN0KGFyZzEtPmxvd2VyKSwKKwkgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFRpbWVBRFRHZXREYXR1bUZhc3QoYXJnMi0+bG93ZXIpKSk7Cit9 CisKIHN0YXRpYyBib29sCiBnYnRfdGltZWd0KGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIs IEZtZ3JJbmZvICpmbGluZm8pCiB7CkBAIC0zMzIsMyArMzQ3LDE0IEBAIGdidF90aW1lX3NhbWUo UEdfRlVOQ1RJT05fQVJHUykKIAkqcmVzdWx0ID0gZ2J0X251bV9zYW1lKCh2b2lkICopIGIxLCAo dm9pZCAqKSBiMiwgJnRpbmZvLCBmY2luZm8tPmZsaW5mbyk7CiAJUEdfUkVUVVJOX1BPSU5URVIo cmVzdWx0KTsKIH0KKworRGF0dW0KK2didF90aW1lX3NvcnRzdXBwb3J0KFBHX0ZVTkNUSU9OX0FS R1MpCit7CisJU29ydFN1cHBvcnQgc3N1cCA9IChTb3J0U3VwcG9ydCkgUEdfR0VUQVJHX1BPSU5U RVIoMCk7CisKKwlzc3VwLT5jb21wYXJhdG9yID0gZ2J0X3RpbWVrZXlfc3N1cF9jbXA7CisJc3N1 cC0+c3N1cF9leHRyYSA9IE5VTEw7CisKKwlQR19SRVRVUk5fVk9JRCgpOworfQpkaWZmIC0tZ2l0 IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3RzLmMgYi9jb250cmliL2J0cmVlX2dpc3QvYnRy ZWVfdHMuYwppbmRleCAzZjViYTkxODkxZC4uZWYxM2ZjMTViYmEgMTAwNjQ0Ci0tLSBhL2NvbnRy aWIvYnRyZWVfZ2lzdC9idHJlZV90cy5jCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV90 cy5jCkBAIC0xMCw2ICsxMCw3IEBACiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNs dWRlICJ1dGlscy9kYXRldGltZS5oIgogI2luY2x1ZGUgInV0aWxzL2Zsb2F0LmgiCisjaW5jbHVk ZSAidXRpbHMvc29ydHN1cHBvcnQuaCIKIAogdHlwZWRlZiBzdHJ1Y3QKIHsKQEAgLTMxLDYgKzMy LDcgQEAgUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfdHN0el9jb25zaXN0ZW50KTsKIFBHX0ZVTkNU SU9OX0lORk9fVjEoZ2J0X3RzdHpfZGlzdGFuY2UpOwogUEdfRlVOQ1RJT05fSU5GT19WMShnYnRf dHNfcGVuYWx0eSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF90c19zYW1lKTsKK1BHX0ZVTkNU SU9OX0lORk9fVjEoZ2J0X3RzX3NvcnRzdXBwb3J0KTsKIAogCiAjaWZkZWYgVVNFX0ZMT0FUOF9C WVZBTApAQCAtMzksNiArNDEsMjkgQEAgUEdfRlVOQ1RJT05fSU5GT19WMShnYnRfdHNfc2FtZSk7 CiAjZGVmaW5lIFRpbWVzdGFtcEdldERhdHVtRmFzdChYKSBQb2ludGVyR2V0RGF0dW0oJihYKSkK ICNlbmRpZgogCisvKiBTb3J0c3VwcG9ydCBmdW5jdGlvbnMgKi8KK3N0YXRpYyBpbnQKK2didF90 c19zc3VwX2NtcChEYXR1bSB4LCBEYXR1bSB5LCBTb3J0U3VwcG9ydCBzc3VwKQoreworCXRzS0VZ ICphcmcxID0gKHRzS0VZICopIERhdHVtR2V0UG9pbnRlcih4KTsKKwl0c0tFWSAqYXJnMiA9ICh0 c0tFWSAqKSBEYXR1bUdldFBvaW50ZXIoeSk7CisKKwkvKiBTb3J0c3VwcG9ydCBhbHdheXMgZ2V0 cyB0aGUgc2FtZSBsb3dlciBhbmQgdXBwZXIgdmFsdWUgZm9yIGlucHV0IGtleXMgKi8KKwlyZXR1 cm4gRGF0dW1HZXRJbnQzMihEaXJlY3RGdW5jdGlvbkNhbGwyKHRpbWVzdGFtcF9jbXAsCisJCQkJ CQkJCQkJCSBUaW1lc3RhbXBHZXREYXR1bUZhc3QoYXJnMS0+bG93ZXIpLAorCQkJCQkJCQkJCQkg VGltZXN0YW1wR2V0RGF0dW1GYXN0KGFyZzItPmxvd2VyKSkpOworfQorCitEYXR1bQorZ2J0X3Rz X3NvcnRzdXBwb3J0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJU29ydFN1cHBvcnQgc3N1cCA9IChT b3J0U3VwcG9ydCkgUEdfR0VUQVJHX1BPSU5URVIoMCk7CisKKwlzc3VwLT5jb21wYXJhdG9yID0g Z2J0X3RzX3NzdXBfY21wOworCXNzdXAtPnNzdXBfZXh0cmEgPSBOVUxMOworCisJUEdfUkVUVVJO X1ZPSUQoKTsKK30KIAogc3RhdGljIGJvb2wKIGdidF90c2d0KGNvbnN0IHZvaWQgKmEsIGNvbnN0 IHZvaWQgKmIsIEZtZ3JJbmZvICpmbGluZm8pCmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dp c3QvYnRyZWVfdXRpbHNfdmFyLmggYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfdXRpbHNfdmFy LmgKaW5kZXggMmY4ZGVmNjU1YzguLjE2ZmYxNjVhZDNjIDEwMDY0NAotLS0gYS9jb250cmliL2J0 cmVlX2dpc3QvYnRyZWVfdXRpbHNfdmFyLmgKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVl X3V0aWxzX3Zhci5oCkBAIC00Miw3ICs0MiwxNyBAQCB0eXBlZGVmIHN0cnVjdAogCUdCVF9WQVJL RVkgKigqZl9sMm4pIChHQlRfVkFSS0VZICosIEZtZ3JJbmZvICpmbGluZm8pOwkvKiBjb252ZXJ0 IGxlYWYgdG8gbm9kZSAqLwogfSBnYnRyZWVfdmluZm87CiAKLQorLyoKKyAqIEZyZWUgcHRyMSBp biBjYXNlIGl0cyBhIGNvcHkgb2YgcHRyMi4KKyAqCisgKiBUaGlzIGlzIGFkYXB0ZWQgZnJvbSB2 YXJsZW5hJ3MgUEdfRlJFRV9JRl9DT1BZLCB0aG91Z2gKKyAqIGRvZXNuJ3QgcmVxdWlyZSBmY2lu Zm8gYWNjZXNzLgorICovCisjZGVmaW5lIEdCVF9GUkVFX0lGX0NPUFkocHRyMSwgcHRyMikgXAor CWRvIHsgXAorCQlpZiAoKFBvaW50ZXIpIChwdHIxKSAhPSBEYXR1bUdldFBvaW50ZXIocHRyMikp IFwKKwkJCXBmcmVlKHB0cjEpOyBcCisJfSB3aGlsZSAoMCkKIAogZXh0ZXJuIEdCVF9WQVJLRVlf UiBnYnRfdmFyX2tleV9yZWFkYWJsZShjb25zdCBHQlRfVkFSS0VZICprKTsKIApkaWZmIC0tZ2l0 IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX3V1aWQuYyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9i dHJlZV91dWlkLmMKaW5kZXggZmU4YzY3OWNiZWQuLjA4MzcyZmM4YmM5IDEwMDY0NAotLS0gYS9j b250cmliL2J0cmVlX2dpc3QvYnRyZWVfdXVpZC5jCisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9i dHJlZV91dWlkLmMKQEAgLTYsNiArNiw3IEBACiAjaW5jbHVkZSAiYnRyZWVfZ2lzdC5oIgogI2lu Y2x1ZGUgImJ0cmVlX3V0aWxzX251bS5oIgogI2luY2x1ZGUgInBvcnQvcGdfYnN3YXAuaCIKKyNp bmNsdWRlICJ1dGlscy9zb3J0c3VwcG9ydC5oIgogI2luY2x1ZGUgInV0aWxzL3V1aWQuaCIKIAog dHlwZWRlZiBzdHJ1Y3QKQEAgLTI1LDcgKzI2LDMxIEBAIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0 X3V1aWRfcGlja3NwbGl0KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X3V1aWRfY29uc2lzdGVu dCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKGdidF91dWlkX3BlbmFsdHkpOwogUEdfRlVOQ1RJT05f SU5GT19WMShnYnRfdXVpZF9zYW1lKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEoZ2J0X3V1aWRfc29y dHN1cHBvcnQpOwogCitzdGF0aWMgaW50IHV1aWRfaW50ZXJuYWxfY21wKGNvbnN0IHBnX3V1aWRf dCAqYXJnMSwgY29uc3QgcGdfdXVpZF90ICphcmcyKTsKKworLyogU29ydHN1cHBvcnQgZnVuY3Rp b25zICovCitzdGF0aWMgaW50CitnYnRfdXVpZF9zc3VwX2NtcChEYXR1bSB4LCBEYXR1bSB5LCBT b3J0U3VwcG9ydCBzc3VwKQoreworCXV1aWRLRVkgKmFyZzEgPSAodXVpZEtFWSAqKSBEYXR1bUdl dFBvaW50ZXIoeCk7CisJdXVpZEtFWSAqYXJnMiA9ICh1dWlkS0VZICopIERhdHVtR2V0UG9pbnRl cih5KTsKKworCS8qIFNvcnRzdXBwb3J0IGdldHMgZXF1YWwgdXBwZXIgYW5kIGxvd2VyIHZhbHVl cyBmb3IgZWFjaCBrZXkgdG8gY29tcGFyZSAqLworCXJldHVybiB1dWlkX2ludGVybmFsX2NtcCgm YXJnMS0+bG93ZXIsICZhcmcyLT5sb3dlcik7Cit9CisKK0RhdHVtCitnYnRfdXVpZF9zb3J0c3Vw cG9ydChQR19GVU5DVElPTl9BUkdTKQoreworCVNvcnRTdXBwb3J0IHNzdXAgPSAoU29ydFN1cHBv cnQpIFBHX0dFVEFSR19QT0lOVEVSKDApOworCisJc3N1cC0+Y29tcGFyYXRvciA9IGdidF91dWlk X3NzdXBfY21wOworCXNzdXAtPnNzdXBfZXh0cmEgPSBOVUxMOworCisJUEdfUkVUVVJOX1ZPSUQo KTsKK30KIAogc3RhdGljIGludAogdXVpZF9pbnRlcm5hbF9jbXAoY29uc3QgcGdfdXVpZF90ICph cmcxLCBjb25zdCBwZ191dWlkX3QgKmFyZzIpCmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dp c3QvbWVzb24uYnVpbGQgYi9jb250cmliL2J0cmVlX2dpc3QvbWVzb24uYnVpbGQKaW5kZXggNzNi MWJiZjUyYTYuLjViNGNhZmY1YmFmIDEwMDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3QvbWVz b24uYnVpbGQKKysrIGIvY29udHJpYi9idHJlZV9naXN0L21lc29uLmJ1aWxkCkBAIC01MSw2ICs1 MSw3IEBAIGluc3RhbGxfZGF0YSgKICAgJ2J0cmVlX2dpc3QtLTEuNS0tMS42LnNxbCcsCiAgICdi dHJlZV9naXN0LS0xLjYtLTEuNy5zcWwnLAogICAnYnRyZWVfZ2lzdC0tMS43LS0xLjguc3FsJywK KyAgJ2J0cmVlX2dpc3QtLTEuOC0tMS45LnNxbCcsCiAgIGt3YXJnczogY29udHJpYl9kYXRhX2Fy Z3MsCiApCiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9idHJlZS1naXN0LnNnbWwgYi9kb2Mv c3JjL3NnbWwvYnRyZWUtZ2lzdC5zZ21sCmluZGV4IDMxZTdjNzhhYWVmLi44ZGVmMmQzNzk4ZSAx MDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2J0cmVlLWdpc3Quc2dtbAorKysgYi9kb2Mvc3JjL3Nn bWwvYnRyZWUtZ2lzdC5zZ21sCkBAIC01Miw2ICs1MiwxNCBAQAogICA8dHlwZT5vaWQ8L3R5cGU+ LCBhbmQgPHR5cGU+bW9uZXk8L3R5cGU+LgogIDwvcGFyYT4KIAorIDxwYXJhPgorICBQZXIgZGVm YXVsdCA8ZmlsZW5hbWU+YnRyZWVfZ2lzdDwvZmlsZW5hbWU+IGJ1aWxkcyA8YWNyb255bT5HaVNU PC9hY3JvbnltPiBpbmRleGUgd2l0aAorICA8ZnVuY3Rpb24+c29ydHN1cHBvcnQ8L2Z1bmN0aW9u PiBpbiA8Zmlyc3R0ZXJtPnNvcnRlZDwvZmlyc3R0ZXJtPiBtb2RlLiBUaGlzIHVzdWFsbHkgcmVz dWx0cyBpbiBhCisgIG11Y2ggYmV0dGVyIGluZGV4IHF1YWxpdHkgYW5kIHNtYWxsZXIgaW5kZXgg c2l6ZXMgYnkgbXVjaCBmYXN0ZXIgaW5kZXggYnVpbHQgc3BlZWQuIEl0IGlzIHN0aWxsCisgIHBv c3NpYmxlIHRvIHJldmVydCB0byBidWZmZXJlZCBidWlsdCBzdHJhdGVneSBieSB1c2luZyB0aGUg PGxpdGVyYWw+YnVmZmVyaW5nPC9saXRlcmFsPiBwYXJhbWV0ZXIKKyAgd2hlbiBjcmVhdGluZyB0 aGUgaW5kZXguCisgPC9wYXJhPgorCiAgPHBhcmE+CiAgIFRoaXMgbW9kdWxlIGlzIGNvbnNpZGVy ZWQgPHF1b3RlPnRydXN0ZWQ8L3F1b3RlPiwgdGhhdCBpcywgaXQgY2FuIGJlCiAgIGluc3RhbGxl ZCBieSBub24tc3VwZXJ1c2VycyB3aG8gaGF2ZSA8bGl0ZXJhbD5DUkVBVEU8L2xpdGVyYWw+IHBy aXZpbGVnZQo= --=-qS5EnXBh8OiWGbgAfCy/ Content-Disposition: attachment; filename="v7.1-Add-GIST-sortsupport-rangetypes.patch" Content-Type: text/x-patch; name="v7.1-Add-GIST-sortsupport-rangetypes.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVzX2dpc3QuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVzX2dpc3QuYwppbmRleCBjYjI4ZTk4NTlhYi4u YjBjNzczOTAwMjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVz X2dpc3QuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlc19naXN0LmMKQEAg LTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJ1dGlscy9mbWdycHJvdG9zLmgiCiAjaW5jbHVkZSAi dXRpbHMvbXVsdGlyYW5nZXR5cGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmFuZ2V0eXBlcy5oIgor I2luY2x1ZGUgInV0aWxzL3NvcnRzdXBwb3J0LmgiCiAKIC8qCiAgKiBSYW5nZSBjbGFzcyBwcm9w ZXJ0aWVzIHVzZWQgdG8gc2VncmVnYXRlIGRpZmZlcmVudCBjbGFzc2VzIG9mIHJhbmdlcyBpbgpA QCAtMTc3LDYgKzE3OCw3IEBAIHN0YXRpYyB2b2lkIHJhbmdlX2dpc3RfZG91YmxlX3NvcnRpbmdf c3BsaXQoVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlLAogc3RhdGljIHZvaWQgcmFuZ2VfZ2lzdF9j b25zaWRlcl9zcGxpdChDb25zaWRlclNwbGl0Q29udGV4dCAqY29udGV4dCwKIAkJCQkJCQkJCSAg UmFuZ2VCb3VuZCAqcmlnaHRfbG93ZXIsIGludCBtaW5fbGVmdF9jb3VudCwKIAkJCQkJCQkJCSAg UmFuZ2VCb3VuZCAqbGVmdF91cHBlciwgaW50IG1heF9sZWZ0X2NvdW50KTsKK3N0YXRpYyBpbnQJ cmFuZ2VfZ2lzdF9jbXAoRGF0dW0gYSwgRGF0dW0gYiwgU29ydFN1cHBvcnQgc3N1cCk7CiBzdGF0 aWMgaW50CWdldF9naXN0X3JhbmdlX2NsYXNzKFJhbmdlVHlwZSAqcmFuZ2UpOwogc3RhdGljIGlu dAlzaW5nbGVfYm91bmRfY21wKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIHZvaWQgKmFy Zyk7CiBzdGF0aWMgaW50CWludGVydmFsX2NtcF9sb3dlcihjb25zdCB2b2lkICphLCBjb25zdCB2 b2lkICpiLCB2b2lkICphcmcpOwpAQCAtNzczLDYgKzc3NSwyMCBAQCByYW5nZV9naXN0X3BpY2tz cGxpdChQR19GVU5DVElPTl9BUkdTKQogCVBHX1JFVFVSTl9QT0lOVEVSKHYpOwogfQogCisvKgor ICogU29ydCBzdXBwb3J0IHJvdXRpbmUgZm9yIGZhc3QgR2lTVCBpbmRleCBidWlsZCBieSBzb3J0 aW5nLgorICovCitEYXR1bQorcmFuZ2VfZ2lzdF9zb3J0c3VwcG9ydChQR19GVU5DVElPTl9BUkdT KQoreworCVNvcnRTdXBwb3J0CXNzdXAgPSAoU29ydFN1cHBvcnQpIFBHX0dFVEFSR19QT0lOVEVS KDApOworCisJc3N1cC0+Y29tcGFyYXRvciA9IHJhbmdlX2dpc3RfY21wOworCXNzdXAtPnNzdXBf ZXh0cmEgPSBOVUxMOworCisJUEdfUkVUVVJOX1ZPSUQoKTsKK30KKwogLyogZXF1YWxpdHkgY29t cGFyYXRvciBmb3IgR2lTVCAqLwogRGF0dW0KIHJhbmdlX2dpc3Rfc2FtZShQR19GVU5DVElPTl9B UkdTKQpAQCAtMTY5Myw2ICsxNzA5LDYwIEBAIHJhbmdlX2dpc3RfY29uc2lkZXJfc3BsaXQoQ29u c2lkZXJTcGxpdENvbnRleHQgKmNvbnRleHQsCiAJfQogfQogCisvKgorICogR2lTVCBzb3J0c3Vw cG9ydCBjb21wYXJhdG9yIGZvciByYW5nZXMuCisgKiBzaW1pbGFyIHRvIHJhbmdlX2NtcCwgYnV0 IHJhbmdlIHR5cGNhY2hlIGlzIGNhY2hlZC4KKyAqLworc3RhdGljIGludAorcmFuZ2VfZ2lzdF9j bXAoRGF0dW0gYSwgRGF0dW0gYiwgU29ydFN1cHBvcnQgc3N1cCkKK3sKKwlSYW5nZVR5cGUgKnJh bmdlX2EgPSBEYXR1bUdldFJhbmdlVHlwZVAoYSk7CisJUmFuZ2VUeXBlICpyYW5nZV9iID0gRGF0 dW1HZXRSYW5nZVR5cGVQKGIpOworCVR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSA9IHNzdXAtPnNz dXBfZXh0cmE7CisJUmFuZ2VCb3VuZAlsb3dlcjEsCisJCQkJbG93ZXIyOworCVJhbmdlQm91bmQJ dXBwZXIxLAorCQkJCXVwcGVyMjsKKwlib29sCQllbXB0eTEsCisJCQkJZW1wdHkyOworCWludAkJ CXJlc3VsdDsKKworCWlmICh0eXBjYWNoZSA9PSBOVUxMKQorCXsKKwkJQXNzZXJ0KFJhbmdlVHlw ZUdldE9pZChyYW5nZV9hKSA9PSBSYW5nZVR5cGVHZXRPaWQocmFuZ2VfYikpOworCQl0eXBjYWNo ZSA9IGxvb2t1cF90eXBlX2NhY2hlKFJhbmdlVHlwZUdldE9pZChyYW5nZV9hKSwgVFlQRUNBQ0hF X1JBTkdFX0lORk8pOworCisJCS8qCisJCSAqIENhY2hlIHRoZSByYW5nZSBpbmZvIGJldHdlZW4g Y2FsbHMgdG8gYXZvaWQgaGF2aW5nIHRvIGNhbGwKKwkJICogbG9va3VwX3R5cGVfY2FjaGUoKSBm b3IgZWFjaCBjb21wYXJpc29uLgorCQkgKi8KKwkJc3N1cC0+c3N1cF9leHRyYSA9IHR5cGNhY2hl OworCX0KKworCXJhbmdlX2Rlc2VyaWFsaXplKHR5cGNhY2hlLCByYW5nZV9hLCAmbG93ZXIxLCAm dXBwZXIxLCAmZW1wdHkxKTsKKwlyYW5nZV9kZXNlcmlhbGl6ZSh0eXBjYWNoZSwgcmFuZ2VfYiwg Jmxvd2VyMiwgJnVwcGVyMiwgJmVtcHR5Mik7CisKKwlpZiAoZW1wdHkxICYmIGVtcHR5MikKKwkJ cmVzdWx0ID0gMDsKKwllbHNlIGlmIChlbXB0eTEpCisJCXJlc3VsdCA9IC0xOworCWVsc2UgaWYg KGVtcHR5MikKKwkJcmVzdWx0ID0gMTsKKwllbHNlCisJeworCQlyZXN1bHQgPSByYW5nZV9jbXBf Ym91bmRzKHR5cGNhY2hlLCAmbG93ZXIxLCAmbG93ZXIyKTsKKwkJaWYgKHJlc3VsdCA9PSAwKQor CQkJcmVzdWx0ID0gcmFuZ2VfY21wX2JvdW5kcyh0eXBjYWNoZSwgJnVwcGVyMSwgJnVwcGVyMik7 CisJfQorCisJaWYgKChEYXR1bSkgcmFuZ2VfYSAhPSBhKQorCQlwZnJlZShyYW5nZV9hKTsKKwlp ZiAoKERhdHVtKSByYW5nZV9iICE9IGIpCisJCXBmcmVlKHJhbmdlX2IpOworCisJcmV0dXJuIHJl c3VsdDsKK30KKwogLyoKICAqIEZpbmQgY2xhc3MgbnVtYmVyIGZvciByYW5nZS4KICAqCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX2FtcHJvYy5kYXQKaW5kZXggMzUyNTU4YzFmMDYuLmZjMjI5ZDk5ODQ1IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19hbXByb2MuZGF0CkBAIC02MDcsNiArNjA3LDkgQEAKIHsgYW1wcm9jZmFt aWx5ID0+ICdnaXN0L3JhbmdlX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdhbnlyYW5nZScsCiAg IGFtcHJvY3JpZ2h0dHlwZSA9PiAnYW55cmFuZ2UnLCBhbXByb2NudW0gPT4gJzcnLAogICBhbXBy b2MgPT4gJ3JhbmdlX2dpc3Rfc2FtZScgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdnaXN0L3Jhbmdl X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdhbnlyYW5nZScsCisgIGFtcHJvY3JpZ2h0dHlwZSA9 PiAnYW55cmFuZ2UnLCBhbXByb2NudW0gPT4gJzExJywKKyAgYW1wcm9jID0+ICdyYW5nZV9naXN0 X3NvcnRzdXBwb3J0JyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2dpc3QvcmFuZ2Vfb3BzJywgYW1w cm9jbGVmdHR5cGUgPT4gJ2FueXJhbmdlJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdhbnlyYW5n ZScsIGFtcHJvY251bSA9PiAnMTInLAogICBhbXByb2MgPT4gJ2dpc3Rfc3RyYXRudW1faWRlbnRp dHknIH0sCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCA3MWM3NDM1MGEwZC4uNjBlYWEyZjgx ZjcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtMTA1OTUsNiArMTA1OTUsOSBAQAogeyBv aWQgPT4gJzM4ODEnLCBkZXNjciA9PiAnR2lTVCBzdXBwb3J0JywKICAgcHJvbmFtZSA9PiAncmFu Z2VfZ2lzdF9zYW1lJywgcHJvcmV0dHlwZSA9PiAnaW50ZXJuYWwnLAogICBwcm9hcmd0eXBlcyA9 PiAnYW55cmFuZ2UgYW55cmFuZ2UgaW50ZXJuYWwnLCBwcm9zcmMgPT4gJ3JhbmdlX2dpc3Rfc2Ft ZScgfSwKK3sgb2lkID0+ICc4ODQ5JywgZGVzY3IgPT4gJ0dpU1Qgc3VwcG9ydCcsCisgIHByb25h bWUgPT4gJ3JhbmdlX2dpc3Rfc29ydHN1cHBvcnQnLCBwcm9yZXR0eXBlID0+ICd2b2lkJywKKyAg cHJvYXJndHlwZXMgPT4gJ2ludGVybmFsJywgcHJvc3JjID0+ICdyYW5nZV9naXN0X3NvcnRzdXBw b3J0JyB9LAogeyBvaWQgPT4gJzYxNTQnLCBkZXNjciA9PiAnR2lTVCBzdXBwb3J0JywKICAgcHJv bmFtZSA9PiAnbXVsdGlyYW5nZV9naXN0X2NvbnNpc3RlbnQnLCBwcm9yZXR0eXBlID0+ICdib29s JywKICAgcHJvYXJndHlwZXMgPT4gJ2ludGVybmFsIGFueW11bHRpcmFuZ2UgaW50MiBvaWQgaW50 ZXJuYWwnLAo= --=-qS5EnXBh8OiWGbgAfCy/--