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 1rSn1b-00Fv27-SI for pgsql-hackers@arkaria.postgresql.org; Wed, 24 Jan 2024 23:51:20 +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 1rSn1a-009gV4-Re for pgsql-hackers@arkaria.postgresql.org; Wed, 24 Jan 2024 23:51:18 +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 1rSn1Z-009gUv-Vn for pgsql-hackers@lists.postgresql.org; Wed, 24 Jan 2024 23:51:18 +0000 Received: from lahtoruutu.iki.fi ([185.185.170.37]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rSn1R-003CwP-9w for pgsql-hackers@postgresql.org; Wed, 24 Jan 2024 23:51:16 +0000 Received: from [192.168.1.115] (dsl-hkibng22-54f8db-125.dhcp.inet.fi [84.248.219.125]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: hlinnaka) by lahtoruutu.iki.fi (Postfix) with ESMTPSA id 4TL11g1WBvz49Q0X; Thu, 25 Jan 2024 01:51:02 +0200 (EET) Content-Type: multipart/mixed; boundary="------------Rwaxn7iHyg7hsWq1khSGJm6k" Message-ID: <08eff756-beeb-4a11-9eb5-d45b6af38998@iki.fi> Date: Thu, 25 Jan 2024 01:51:02 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Refactoring backend fork+exec code Content-Language: en-US To: Andres Freund Cc: Tristan Partin , pgsql-hackers , Thomas Munro References: <7a59b073-5b5b-151e-7ed3-8b01ff7ce9ef@iki.fi> <20230710225043.svl7fqxecwshwc7a@awork3.anarazel.de> <119551e6-60f6-49b2-ae04-a382a89f900c@iki.fi> <20231130202648.7k6agmuizdilufnv@awork3.anarazel.de> <59527c9b-c3f7-4d0c-a3f1-00d0ed5cc186@iki.fi> <20240122210740.7vq5fd4woixpwx3f@awork3.anarazel.de> <8171f1aa-496f-46a6-afc3-c46fe7a9b407@iki.fi> <20240123195009.44wtutga24p5sh3s@awork3.anarazel.de> From: Heikki Linnakangas In-Reply-To: <20240123195009.44wtutga24p5sh3s@awork3.anarazel.de> 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. --------------Rwaxn7iHyg7hsWq1khSGJm6k Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 23/01/2024 21:50, Andres Freund wrote: > On 2024-01-23 21:07:08 +0200, Heikki Linnakangas wrote: >> On 22/01/2024 23:07, Andres Freund wrote: >>>> diff --git a/src/backend/utils/activity/backend_status.c b/src/backend/utils/activity/backend_status.c >>>> index 1a1050c8da1..92f24db4e18 100644 >>>> --- a/src/backend/utils/activity/backend_status.c >>>> +++ b/src/backend/utils/activity/backend_status.c >>>> @@ -257,17 +257,16 @@ pgstat_beinit(void) >>>> else >>>> { >>>> /* Must be an auxiliary process */ >>>> - Assert(MyAuxProcType != NotAnAuxProcess); >>>> + Assert(IsAuxProcess(MyBackendType)); >>>> /* >>>> * Assign the MyBEEntry for an auxiliary process. Since it doesn't >>>> * have a BackendId, the slot is statically allocated based on the >>>> - * auxiliary process type (MyAuxProcType). Backends use slots indexed >>>> - * in the range from 0 to MaxBackends (exclusive), so we use >>>> - * MaxBackends + AuxProcType as the index of the slot for an auxiliary >>>> - * process. >>>> + * auxiliary process type. Backends use slots indexed in the range >>>> + * from 0 to MaxBackends (exclusive), and aux processes use the slots >>>> + * after that. >>>> */ >>>> - MyBEEntry = &BackendStatusArray[MaxBackends + MyAuxProcType]; >>>> + MyBEEntry = &BackendStatusArray[MaxBackends + MyBackendType - FIRST_AUX_PROC]; >>>> } >>> >>> Hm, this seems less than pretty. It's probably ok for now, but it seems like a >>> better fix might be to just start assigning backend ids to aux procs or switch >>> to indexing by pgprocno? >> >> Using pgprocno is a good idea. Come to think of it, why do we even have a >> concept of backend ID that's separate from pgprocno? backend ID is used to >> index the ProcState array, but AFAICS we could use pgprocno as the index to >> that, too. > > I think we should do that. There are a few processes not participating in > sinval, but it doesn't make enough of a difference to make sinval slower. And > I think there'd be far bigger efficiency improvements to sinvaladt than not > having a handful more entries. And here we go. BackendID is now a 1-based index directly into the PGPROC array. -- Heikki Linnakangas Neon (https://neon.tech) --------------Rwaxn7iHyg7hsWq1khSGJm6k Content-Type: text/x-patch; charset=UTF-8; name="v7-0001-Remove-superfluous-pgprocno-field-from-PGPROC.patch" Content-Disposition: attachment; filename*0="v7-0001-Remove-superfluous-pgprocno-field-from-PGPROC.patch" Content-Transfer-Encoding: base64 RnJvbSA4N2RiMzVjODc3ZjQ0OTJiOTg4NDhkZmNkMGJhYTQ5Y2M4MTAwYzFiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFdlZCwgMjQgSmFuIDIwMjQgMjM6MTU6NTUgKzAyMDAK U3ViamVjdDogW1BBVENIIHY3IDEvNF0gUmVtb3ZlIHN1cGVyZmx1b3VzICdwZ3Byb2Nubycg ZmllbGQgZnJvbSBQR1BST0MKCkl0IHdhcyBhbHdheXMganVzdCB0aGUgaW5kZXggb2YgdGhl IFBHUFJPQyBlbnRyeSBmcm9tIHRoZSBiZWdpbm5pbmcgb2YKdGhlIHByb2MgYXJyYXkuIElu dHJvZHVjZSBhIG1hY3JvIHRvIGNvbXB1dGUgaXQgZnJvbSB0aGUgcG9pbnRlcgppbnN0ZWFk LgoKUmV2aWV3ZWQtYnk6IFhYWApEaXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jlc3Fs Lm9yZy9tZXNzYWdlLWlkLzgxNzFmMWFhLTQ5NmYtNDZhNi1hZmMzLWM0NmZlN2E5YjQwNyU0 MGlraS5maQotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2Nsb2cuYyAgICAgICAg ICAgICB8ICA0ICsrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMg ICAgICAgICB8IDExICsrKysrLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9nLmMgICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dy aXRlci5jICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdh cmNoLmMgICAgICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dh bHN1bW1hcml6ZXIuYyAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZm ZXIvYnVmbWdyLmMgICAgICAgICAgIHwgIDYgKysrLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9wcm9jYXJyYXkuYyAgICAgICAgICAgfCAgNiArKystLS0KIHNyYy9iYWNrZW5kL3N0 b3JhZ2UvbG1nci9jb25kaXRpb25fdmFyaWFibGUuYyB8IDEyICsrKysrKy0tLS0tLQogc3Jj L2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9jay5jICAgICAgICAgICAgIHwgIDYgKysrLS0t CiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMgICAgICAgICAgfCAgMiAr LQogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYyAgICAgICAgICAgICAgIHwgIDEg LQogc3JjL2luY2x1ZGUvc3RvcmFnZS9sb2NrLmggICAgICAgICAgICAgICAgICAgIHwgIDIg Ky0KIHNyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oICAgICAgICAgICAgICAgICAgICB8ICA2 ICstLS0tLQogMTQgZmlsZXMgY2hhbmdlZCwgMjkgaW5zZXJ0aW9ucygrKSwgMzUgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY2xvZy5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY2xvZy5jCmluZGV4IGY2ZTdkYTdmZmM5 Li43NTUwMzA5YzI1YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v Y2xvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2Nsb2cuYwpAQCAtNDU4 LDcgKzQ1OCw3IEBAIFRyYW5zYWN0aW9uR3JvdXBVcGRhdGVYaWRTdGF0dXMoVHJhbnNhY3Rp b25JZCB4aWQsIFhpZFN0YXR1cyBzdGF0dXMsCiAJCSAqIGxlc3MgZWZmaWNpZW50bHkuCiAJ CSAqLwogCQlpZiAobmV4dGlkeCAhPSBJTlZBTElEX1BHUFJPQ05PICYmCi0JCQlQcm9jR2xv YmFsLT5hbGxQcm9jc1tuZXh0aWR4XS5jbG9nR3JvdXBNZW1iZXJQYWdlICE9IHByb2MtPmNs b2dHcm91cE1lbWJlclBhZ2UpCisJCQlHZXRQR1Byb2NCeU51bWJlcihuZXh0aWR4KS0+Y2xv Z0dyb3VwTWVtYmVyUGFnZSAhPSBwcm9jLT5jbG9nR3JvdXBNZW1iZXJQYWdlKQogCQl7CiAJ CQkvKgogCQkJICogRW5zdXJlIHRoYXQgdGhpcyBwcm9jIGlzIG5vdCBhIG1lbWJlciBvZiBh bnkgY2xvZyBncm91cCB0aGF0CkBAIC00NzMsNyArNDczLDcgQEAgVHJhbnNhY3Rpb25Hcm91 cFVwZGF0ZVhpZFN0YXR1cyhUcmFuc2FjdGlvbklkIHhpZCwgWGlkU3RhdHVzIHN0YXR1cywK IAogCQlpZiAocGdfYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2VfdTMyKCZwcm9jZ2xvYmFsLT5j bG9nR3JvdXBGaXJzdCwKIAkJCQkJCQkJCQkgICAmbmV4dGlkeCwKLQkJCQkJCQkJCQkgICAo dWludDMyKSBwcm9jLT5wZ3Byb2NubykpCisJCQkJCQkJCQkJICAgKHVpbnQzMikgR2V0TnVt YmVyRnJvbVBHUHJvYyhwcm9jKSkpCiAJCQlicmVhazsKIAl9CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS90d29waGFzZS5jCmluZGV4IDg0MjY0NThmN2Y1Li4yMzRjOGQwOGViYyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdHdvcGhhc2UuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90d29waGFzZS5jCkBAIC0yODQsNyArMjg0 LDcgQEAgVHdvUGhhc2VTaG1lbUluaXQodm9pZCkKIAkJCVR3b1BoYXNlU3RhdGUtPmZyZWVH WGFjdHMgPSAmZ3hhY3RzW2ldOwogCiAJCQkvKiBhc3NvY2lhdGUgaXQgd2l0aCBhIFBHUFJP QyBhc3NpZ25lZCBieSBJbml0UHJvY0dsb2JhbCAqLwotCQkJZ3hhY3RzW2ldLnBncHJvY25v ID0gUHJlcGFyZWRYYWN0UHJvY3NbaV0ucGdwcm9jbm87CisJCQlneGFjdHNbaV0ucGdwcm9j bm8gPSBHZXROdW1iZXJGcm9tUEdQcm9jKCZQcmVwYXJlZFhhY3RQcm9jc1tpXSk7CiAKIAkJ CS8qCiAJCQkgKiBBc3NpZ24gYSB1bmlxdWUgSUQgZm9yIGVhY2ggZHVtbXkgcHJvYywgc28g dGhhdCB0aGUgcmFuZ2Ugb2YKQEAgLTQ2MSw3ICs0NjEsNiBAQCBNYXJrQXNQcmVwYXJpbmdH dXRzKEdsb2JhbFRyYW5zYWN0aW9uIGd4YWN0LCBUcmFuc2FjdGlvbklkIHhpZCwgY29uc3Qg Y2hhciAqZ2lkLAogCiAJLyogSW5pdGlhbGl6ZSB0aGUgUEdQUk9DIGVudHJ5ICovCiAJTWVt U2V0KHByb2MsIDAsIHNpemVvZihQR1BST0MpKTsKLQlwcm9jLT5wZ3Byb2NubyA9IGd4YWN0 LT5wZ3Byb2NubzsKIAlkbGlzdF9ub2RlX2luaXQoJnByb2MtPmxpbmtzKTsKIAlwcm9jLT53 YWl0U3RhdHVzID0gUFJPQ19XQUlUX1NUQVRVU19PSzsKIAlpZiAoTG9jYWxUcmFuc2FjdGlv bklkSXNWYWxpZChNeVByb2MtPmx4aWQpKQpAQCAtNzgwLDcgKzc3OSw3IEBAIHBnX3ByZXBh cmVkX3hhY3QoUEdfRlVOQ1RJT05fQVJHUykKIAl3aGlsZSAoc3RhdHVzLT5hcnJheSAhPSBO VUxMICYmIHN0YXR1cy0+Y3VycklkeCA8IHN0YXR1cy0+bmd4YWN0cykKIAl7CiAJCUdsb2Jh bFRyYW5zYWN0aW9uIGd4YWN0ID0gJnN0YXR1cy0+YXJyYXlbc3RhdHVzLT5jdXJySWR4Kytd OwotCQlQR1BST0MJICAgKnByb2MgPSAmUHJvY0dsb2JhbC0+YWxsUHJvY3NbZ3hhY3QtPnBn cHJvY25vXTsKKwkJUEdQUk9DCSAgICpwcm9jID0gR2V0UEdQcm9jQnlOdW1iZXIoZ3hhY3Qt PnBncHJvY25vKTsKIAkJRGF0dW0JCXZhbHVlc1s1XSA9IHswfTsKIAkJYm9vbAkJbnVsbHNb NV0gPSB7MH07CiAJCUhlYXBUdXBsZQl0dXBsZTsKQEAgLTkzNSw3ICs5MzQsNyBAQCBUd29Q aGFzZUdldER1bW15UHJvYyhUcmFuc2FjdGlvbklkIHhpZCwgYm9vbCBsb2NrX2hlbGQpCiB7 CiAJR2xvYmFsVHJhbnNhY3Rpb24gZ3hhY3QgPSBUd29QaGFzZUdldEdYYWN0KHhpZCwgbG9j a19oZWxkKTsKIAotCXJldHVybiAmUHJvY0dsb2JhbC0+YWxsUHJvY3NbZ3hhY3QtPnBncHJv Y25vXTsKKwlyZXR1cm4gR2V0UEdQcm9jQnlOdW1iZXIoZ3hhY3QtPnBncHJvY25vKTsKIH0K IAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KQEAgLTEwODAsNyArMTA3OSw3IEBAIHNhdmVfc3Rh dGVfZGF0YShjb25zdCB2b2lkICpkYXRhLCB1aW50MzIgbGVuKQogdm9pZAogU3RhcnRQcmVw YXJlKEdsb2JhbFRyYW5zYWN0aW9uIGd4YWN0KQogewotCVBHUFJPQwkgICAqcHJvYyA9ICZQ cm9jR2xvYmFsLT5hbGxQcm9jc1tneGFjdC0+cGdwcm9jbm9dOworCVBHUFJPQwkgICAqcHJv YyA9IEdldFBHUHJvY0J5TnVtYmVyKGd4YWN0LT5wZ3Byb2Nubyk7CiAJVHJhbnNhY3Rpb25J ZCB4aWQgPSBneGFjdC0+eGlkOwogCVR3b1BoYXNlRmlsZUhlYWRlciBoZHI7CiAJVHJhbnNh Y3Rpb25JZCAqY2hpbGRyZW47CkBAIC0xNTM5LDcgKzE1MzgsNyBAQCBGaW5pc2hQcmVwYXJl ZFRyYW5zYWN0aW9uKGNvbnN0IGNoYXIgKmdpZCwgYm9vbCBpc0NvbW1pdCkKIAkgKiB0cnkg dG8gY29tbWl0IHRoZSBzYW1lIEdJRCBhdCBvbmNlLgogCSAqLwogCWd4YWN0ID0gTG9ja0dY YWN0KGdpZCwgR2V0VXNlcklkKCkpOwotCXByb2MgPSAmUHJvY0dsb2JhbC0+YWxsUHJvY3Nb Z3hhY3QtPnBncHJvY25vXTsKKwlwcm9jID0gR2V0UEdQcm9jQnlOdW1iZXIoZ3hhY3QtPnBn cHJvY25vKTsKIAl4aWQgPSBneGFjdC0+eGlkOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3hsb2cuYwppbmRleCA0NzgzNzdjNGEyMy4uYmUzMGEyMzg4ZjUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS94bG9nLmMKQEAgLTEzNzksNyArMTM3OSw3IEBAIFdBTEluc2VydExv Y2tBY3F1aXJlKHZvaWQpCiAJc3RhdGljIGludAlsb2NrVG9UcnkgPSAtMTsKIAogCWlmIChs b2NrVG9UcnkgPT0gLTEpCi0JCWxvY2tUb1RyeSA9IE15UHJvYy0+cGdwcm9jbm8gJSBOVU1f WExPR0lOU0VSVF9MT0NLUzsKKwkJbG9ja1RvVHJ5ID0gR2V0TnVtYmVyRnJvbVBHUHJvYyhN eVByb2MpICUgTlVNX1hMT0dJTlNFUlRfTE9DS1M7CiAJTXlMb2NrTm8gPSBsb2NrVG9Ucnk7 CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dyaXRlci5j IGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dyaXRlci5jCmluZGV4IGQ3ZDZjYzBjZDdi Li4wNjc3ZTA2MTIxNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dy aXRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3cml0ZXIuYwpAQCAtMzMx LDcgKzMzMSw3IEBAIEJhY2tncm91bmRXcml0ZXJNYWluKHZvaWQpCiAJCWlmIChyYyA9PSBX TF9USU1FT1VUICYmIGNhbl9oaWJlcm5hdGUgJiYgcHJldl9oaWJlcm5hdGUpCiAJCXsKIAkJ CS8qIEFzayBmb3Igbm90aWZpY2F0aW9uIGF0IG5leHQgYnVmZmVyIGFsbG9jYXRpb24gKi8K LQkJCVN0cmF0ZWd5Tm90aWZ5QmdXcml0ZXIoTXlQcm9jLT5wZ3Byb2Nubyk7CisJCQlTdHJh dGVneU5vdGlmeUJnV3JpdGVyKEdldE51bWJlckZyb21QR1Byb2MoTXlQcm9jKSk7CiAJCQkv KiBTbGVlcCAuLi4gKi8KIAkJCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwKIAkJCQkJCQkg V0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3BnYXJjaC5jIGIvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9wZ2FyY2guYwppbmRleCA2NzY5M2IwNTgwNi4uOWJmZTRmYWUwNDYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdhcmNoLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci9wZ2FyY2guYwpAQCAtMjQyLDcgKzI0Miw3IEBAIFBnQXJjaGl2 ZXJNYWluKHZvaWQpCiAJICogQWR2ZXJ0aXNlIG91ciBwZ3Byb2NubyBzbyB0aGF0IGJhY2tl bmRzIGNhbiB1c2Ugb3VyIGxhdGNoIHRvIHdha2UgdXMgdXAKIAkgKiB3aGlsZSB3ZSdyZSBz bGVlcGluZy4KIAkgKi8KLQlQZ0FyY2gtPnBncHJvY25vID0gTXlQcm9jLT5wZ3Byb2NubzsK KwlQZ0FyY2gtPnBncHJvY25vID0gR2V0TnVtYmVyRnJvbVBHUHJvYyhNeVByb2MpOwogCiAJ LyogQ3JlYXRlIHdvcmtzcGFjZSBmb3IgcGdhcmNoX3JlYWR5WGxvZygpICovCiAJYXJjaF9m aWxlcyA9IHBhbGxvYyhzaXplb2Yoc3RydWN0IGFyY2hfZmlsZXNfc3RhdGUpKTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jIGIvc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci93YWxzdW1tYXJpemVyLmMKaW5kZXggOWI4ODNjMjFjYTQuLjE2 NWJkZDkzZmEzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1h cml6ZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuYwpA QCAtMjQ4LDcgKzI0OCw3IEBAIFdhbFN1bW1hcml6ZXJNYWluKHZvaWQpCiAJLyogQWR2ZXJ0 aXNlIG91cnNlbHZlcy4gKi8KIAlvbl9zaG1lbV9leGl0KFdhbFN1bW1hcml6ZXJTaHV0ZG93 biwgKERhdHVtKSAwKTsKIAlMV0xvY2tBY3F1aXJlKFdBTFN1bW1hcml6ZXJMb2NrLCBMV19F WENMVVNJVkUpOwotCVdhbFN1bW1hcml6ZXJDdGwtPnN1bW1hcml6ZXJfcGdwcm9jbm8gPSBN eVByb2MtPnBncHJvY25vOworCVdhbFN1bW1hcml6ZXJDdGwtPnN1bW1hcml6ZXJfcGdwcm9j bm8gPSBHZXROdW1iZXJGcm9tUEdQcm9jKE15UHJvYyk7CiAJTFdMb2NrUmVsZWFzZShXQUxT dW1tYXJpemVyTG9jayk7CiAKIAkvKiBDcmVhdGUgYW5kIHN3aXRjaCB0byBhIG1lbW9yeSBj b250ZXh0IHRoYXQgd2UgY2FuIHJlc2V0IG9uIGVycm9yLiAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2J1ZmZlci9idWZtZ3IuYwppbmRleCA3ZDYwMWJlZjZkZC4uZTE5ZDQzM2E4ZDMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCisrKyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCkBAIC00NzkyLDcgKzQ3OTIsNyBAQCBV bmxvY2tCdWZmZXJzKHZvaWQpCiAJCSAqIGdvdCBhIGNhbmNlbC9kaWUgaW50ZXJydXB0IGJl Zm9yZSBnZXR0aW5nIHRoZSBzaWduYWwuCiAJCSAqLwogCQlpZiAoKGJ1Zl9zdGF0ZSAmIEJN X1BJTl9DT1VOVF9XQUlURVIpICE9IDAgJiYKLQkJCWJ1Zi0+d2FpdF9iYWNrZW5kX3BncHJv Y25vID09IE15UHJvYy0+cGdwcm9jbm8pCisJCQlidWYtPndhaXRfYmFja2VuZF9wZ3Byb2Nu byA9PSBHZXROdW1iZXJGcm9tUEdQcm9jKE15UHJvYykpCiAJCQlidWZfc3RhdGUgJj0gfkJN X1BJTl9DT1VOVF9XQUlURVI7CiAKIAkJVW5sb2NrQnVmSGRyKGJ1ZiwgYnVmX3N0YXRlKTsK QEAgLTQ5NDIsNyArNDk0Miw3IEBAIExvY2tCdWZmZXJGb3JDbGVhbnVwKEJ1ZmZlciBidWZm ZXIpCiAJCQlMb2NrQnVmZmVyKGJ1ZmZlciwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKIAkJCWVs b2coRVJST1IsICJtdWx0aXBsZSBiYWNrZW5kcyBhdHRlbXB0aW5nIHRvIHdhaXQgZm9yIHBp bmNvdW50IDEiKTsKIAkJfQotCQlidWZIZHItPndhaXRfYmFja2VuZF9wZ3Byb2NubyA9IE15 UHJvYy0+cGdwcm9jbm87CisJCWJ1Zkhkci0+d2FpdF9iYWNrZW5kX3BncHJvY25vID0gR2V0 TnVtYmVyRnJvbVBHUHJvYyhNeVByb2MpOwogCQlQaW5Db3VudFdhaXRCdWYgPSBidWZIZHI7 CiAJCWJ1Zl9zdGF0ZSB8PSBCTV9QSU5fQ09VTlRfV0FJVEVSOwogCQlVbmxvY2tCdWZIZHIo YnVmSGRyLCBidWZfc3RhdGUpOwpAQCAtNTAwNiw3ICs1MDA2LDcgQEAgTG9ja0J1ZmZlckZv ckNsZWFudXAoQnVmZmVyIGJ1ZmZlcikKIAkJICovCiAJCWJ1Zl9zdGF0ZSA9IExvY2tCdWZI ZHIoYnVmSGRyKTsKIAkJaWYgKChidWZfc3RhdGUgJiBCTV9QSU5fQ09VTlRfV0FJVEVSKSAh PSAwICYmCi0JCQlidWZIZHItPndhaXRfYmFja2VuZF9wZ3Byb2NubyA9PSBNeVByb2MtPnBn cHJvY25vKQorCQkJYnVmSGRyLT53YWl0X2JhY2tlbmRfcGdwcm9jbm8gPT0gR2V0TnVtYmVy RnJvbVBHUHJvYyhNeVByb2MpKQogCQkJYnVmX3N0YXRlICY9IH5CTV9QSU5fQ09VTlRfV0FJ VEVSOwogCQlVbmxvY2tCdWZIZHIoYnVmSGRyLCBidWZfc3RhdGUpOwogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvaXBjL3Byb2NhcnJheS5jCmluZGV4IGVlMmQ3Zjg1ODVhLi41YTMzZWI3ZjdmNyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKKysrIGIv c3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKQEAgLTUwNSw3ICs1MDUsNyBA QCBQcm9jQXJyYXlBZGQoUEdQUk9DICpwcm9jKQogCQlBc3NlcnQoYWxsUHJvY3NbcHJvY25v XS5wZ3hhY3RvZmYgPT0gaW5kZXgpOwogCiAJCS8qIElmIHdlIGhhdmUgZm91bmQgb3VyIHJp Z2h0IHBvc2l0aW9uIGluIHRoZSBhcnJheSwgYnJlYWsgKi8KLQkJaWYgKGFycmF5UC0+cGdw cm9jbm9zW2luZGV4XSA+IHByb2MtPnBncHJvY25vKQorCQlpZiAoYXJyYXlQLT5wZ3Byb2Nu b3NbaW5kZXhdID4gR2V0TnVtYmVyRnJvbVBHUHJvYyhwcm9jKSkKIAkJCWJyZWFrOwogCX0K IApAQCAtNTIzLDcgKzUyMyw3IEBAIFByb2NBcnJheUFkZChQR1BST0MgKnByb2MpCiAJCQkm UHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3NbaW5kZXhdLAogCQkJbW92ZWNvdW50ICogc2l6ZW9m KCpQcm9jR2xvYmFsLT5zdGF0dXNGbGFncykpOwogCi0JYXJyYXlQLT5wZ3Byb2Nub3NbaW5k ZXhdID0gcHJvYy0+cGdwcm9jbm87CisJYXJyYXlQLT5wZ3Byb2Nub3NbaW5kZXhdID0gR2V0 TnVtYmVyRnJvbVBHUHJvYyhwcm9jKTsKIAlwcm9jLT5wZ3hhY3RvZmYgPSBpbmRleDsKIAlQ cm9jR2xvYmFsLT54aWRzW2luZGV4XSA9IHByb2MtPnhpZDsKIAlQcm9jR2xvYmFsLT5zdWJ4 aWRTdGF0ZXNbaW5kZXhdID0gcHJvYy0+c3VieGlkU3RhdHVzOwpAQCAtODA4LDcgKzgwOCw3 IEBAIFByb2NBcnJheUdyb3VwQ2xlYXJYaWQoUEdQUk9DICpwcm9jLCBUcmFuc2FjdGlvbklk IGxhdGVzdFhpZCkKIAogCQlpZiAocGdfYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2VfdTMyKCZw cm9jZ2xvYmFsLT5wcm9jQXJyYXlHcm91cEZpcnN0LAogCQkJCQkJCQkJCSAgICZuZXh0aWR4 LAotCQkJCQkJCQkJCSAgICh1aW50MzIpIHByb2MtPnBncHJvY25vKSkKKwkJCQkJCQkJCQkg ICAodWludDMyKSBHZXROdW1iZXJGcm9tUEdQcm9jKHByb2MpKSkKIAkJCWJyZWFrOwogCX0K IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2NvbmRpdGlvbl92YXJp YWJsZS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2NvbmRpdGlvbl92YXJpYWJsZS5j CmluZGV4IGUyZDZkNjg1MjIwLi5kNGE1MGM3MGVhNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9sbWdyL2NvbmRpdGlvbl92YXJpYWJsZS5jCisrKyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvbG1nci9jb25kaXRpb25fdmFyaWFibGUuYwpAQCAtNTcsNyArNTcsNyBAQCBD b25kaXRpb25WYXJpYWJsZUluaXQoQ29uZGl0aW9uVmFyaWFibGUgKmN2KQogdm9pZAogQ29u ZGl0aW9uVmFyaWFibGVQcmVwYXJlVG9TbGVlcChDb25kaXRpb25WYXJpYWJsZSAqY3YpCiB7 Ci0JaW50CQkJcGdwcm9jbm8gPSBNeVByb2MtPnBncHJvY25vOworCWludAkJCXBncHJvY25v ID0gR2V0TnVtYmVyRnJvbVBHUHJvYyhNeVByb2MpOwogCiAJLyoKIAkgKiBJZiBzb21lIG90 aGVyIHNsZWVwIGlzIGFscmVhZHkgcHJlcGFyZWQsIGNhbmNlbCBpdDsgdGhpcyBpcyBuZWNl c3NhcnkKQEAgLTE4MSwxMCArMTgxLDEwIEBAIENvbmRpdGlvblZhcmlhYmxlVGltZWRTbGVl cChDb25kaXRpb25WYXJpYWJsZSAqY3YsIGxvbmcgdGltZW91dCwKIAkJICogZ3VhcmFudGVl IG5vdCB0byByZXR1cm4gc3B1cmlvdXNseSwgd2UnbGwgYXZvaWQgdGhpcyBvYnZpb3VzIGNh c2UuCiAJCSAqLwogCQlTcGluTG9ja0FjcXVpcmUoJmN2LT5tdXRleCk7Ci0JCWlmICghcHJv Y2xpc3RfY29udGFpbnMoJmN2LT53YWtldXAsIE15UHJvYy0+cGdwcm9jbm8sIGN2V2FpdExp bmspKQorCQlpZiAoIXByb2NsaXN0X2NvbnRhaW5zKCZjdi0+d2FrZXVwLCBHZXROdW1iZXJG cm9tUEdQcm9jKE15UHJvYyksIGN2V2FpdExpbmspKQogCQl7CiAJCQlkb25lID0gdHJ1ZTsK LQkJCXByb2NsaXN0X3B1c2hfdGFpbCgmY3YtPndha2V1cCwgTXlQcm9jLT5wZ3Byb2Nubywg Y3ZXYWl0TGluayk7CisJCQlwcm9jbGlzdF9wdXNoX3RhaWwoJmN2LT53YWtldXAsIEdldE51 bWJlckZyb21QR1Byb2MoTXlQcm9jKSwgY3ZXYWl0TGluayk7CiAJCX0KIAkJU3BpbkxvY2tS ZWxlYXNlKCZjdi0+bXV0ZXgpOwogCkBAIC0yMzYsOCArMjM2LDggQEAgQ29uZGl0aW9uVmFy aWFibGVDYW5jZWxTbGVlcCh2b2lkKQogCQlyZXR1cm4gZmFsc2U7CiAKIAlTcGluTG9ja0Fj cXVpcmUoJmN2LT5tdXRleCk7Ci0JaWYgKHByb2NsaXN0X2NvbnRhaW5zKCZjdi0+d2FrZXVw LCBNeVByb2MtPnBncHJvY25vLCBjdldhaXRMaW5rKSkKLQkJcHJvY2xpc3RfZGVsZXRlKCZj di0+d2FrZXVwLCBNeVByb2MtPnBncHJvY25vLCBjdldhaXRMaW5rKTsKKwlpZiAocHJvY2xp c3RfY29udGFpbnMoJmN2LT53YWtldXAsIEdldE51bWJlckZyb21QR1Byb2MoTXlQcm9jKSwg Y3ZXYWl0TGluaykpCisJCXByb2NsaXN0X2RlbGV0ZSgmY3YtPndha2V1cCwgR2V0TnVtYmVy RnJvbVBHUHJvYyhNeVByb2MpLCBjdldhaXRMaW5rKTsKIAllbHNlCiAJCXNpZ25hbGVkID0g dHJ1ZTsKIAlTcGluTG9ja1JlbGVhc2UoJmN2LT5tdXRleCk7CkBAIC0yODEsNyArMjgxLDcg QEAgQ29uZGl0aW9uVmFyaWFibGVTaWduYWwoQ29uZGl0aW9uVmFyaWFibGUgKmN2KQogdm9p ZAogQ29uZGl0aW9uVmFyaWFibGVCcm9hZGNhc3QoQ29uZGl0aW9uVmFyaWFibGUgKmN2KQog ewotCWludAkJCXBncHJvY25vID0gTXlQcm9jLT5wZ3Byb2NubzsKKwlpbnQJCQlwZ3Byb2Nu byA9IEdldE51bWJlckZyb21QR1Byb2MoTXlQcm9jKTsKIAlQR1BST0MJICAgKnByb2MgPSBO VUxMOwogCWJvb2wJCWhhdmVfc2VudGluZWwgPSBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9jay5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9s bWdyL2x3bG9jay5jCmluZGV4IDk4ZmE2MDM1Y2M1Li45YjY5ZTlmMWUzMiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9jay5jCisrKyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvbG1nci9sd2xvY2suYwpAQCAtMTA1Niw5ICsxMDU2LDkgQEAgTFdMb2NrUXVl dWVTZWxmKExXTG9jayAqbG9jaywgTFdMb2NrTW9kZSBtb2RlKQogCiAJLyogTFdfV0FJVF9V TlRJTF9GUkVFIHdhaXRlcnMgYXJlIGFsd2F5cyBhdCB0aGUgZnJvbnQgb2YgdGhlIHF1ZXVl ICovCiAJaWYgKG1vZGUgPT0gTFdfV0FJVF9VTlRJTF9GUkVFKQotCQlwcm9jbGlzdF9wdXNo X2hlYWQoJmxvY2stPndhaXRlcnMsIE15UHJvYy0+cGdwcm9jbm8sIGx3V2FpdExpbmspOwor CQlwcm9jbGlzdF9wdXNoX2hlYWQoJmxvY2stPndhaXRlcnMsIEdldE51bWJlckZyb21QR1By b2MoTXlQcm9jKSwgbHdXYWl0TGluayk7CiAJZWxzZQotCQlwcm9jbGlzdF9wdXNoX3RhaWwo JmxvY2stPndhaXRlcnMsIE15UHJvYy0+cGdwcm9jbm8sIGx3V2FpdExpbmspOworCQlwcm9j bGlzdF9wdXNoX3RhaWwoJmxvY2stPndhaXRlcnMsIEdldE51bWJlckZyb21QR1Byb2MoTXlQ cm9jKSwgbHdXYWl0TGluayk7CiAKIAkvKiBDYW4gcmVsZWFzZSB0aGUgbXV0ZXggbm93ICov CiAJTFdMb2NrV2FpdExpc3RVbmxvY2sobG9jayk7CkBAIC0xMDk3LDcgKzEwOTcsNyBAQCBM V0xvY2tEZXF1ZXVlU2VsZihMV0xvY2sgKmxvY2spCiAJICovCiAJb25fd2FpdGxpc3QgPSBN eVByb2MtPmx3V2FpdGluZyA9PSBMV19XU19XQUlUSU5HOwogCWlmIChvbl93YWl0bGlzdCkK LQkJcHJvY2xpc3RfZGVsZXRlKCZsb2NrLT53YWl0ZXJzLCBNeVByb2MtPnBncHJvY25vLCBs d1dhaXRMaW5rKTsKKwkJcHJvY2xpc3RfZGVsZXRlKCZsb2NrLT53YWl0ZXJzLCBHZXROdW1i ZXJGcm9tUEdQcm9jKE15UHJvYyksIGx3V2FpdExpbmspOwogCiAJaWYgKHByb2NsaXN0X2lz X2VtcHR5KCZsb2NrLT53YWl0ZXJzKSAmJgogCQkocGdfYXRvbWljX3JlYWRfdTMyKCZsb2Nr LT5zdGF0ZSkgJiBMV19GTEFHX0hBU19XQUlURVJTKSAhPSAwKQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9sbWdyL3ByZWRpY2F0ZS5jCmluZGV4IGVlNWVhMTE3NWM3Li45M2U0MGFlMjJmMCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCisrKyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYwpAQCAtMTgxMSw3ICsxODExLDcg QEAgR2V0U2VyaWFsaXphYmxlVHJhbnNhY3Rpb25TbmFwc2hvdEludChTbmFwc2hvdCBzbmFw c2hvdCwKIAlzeGFjdC0+ZmluaXNoZWRCZWZvcmUgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsK IAlzeGFjdC0+eG1pbiA9IHNuYXBzaG90LT54bWluOwogCXN4YWN0LT5waWQgPSBNeVByb2NQ aWQ7Ci0Jc3hhY3QtPnBncHJvY25vID0gTXlQcm9jLT5wZ3Byb2NubzsKKwlzeGFjdC0+cGdw cm9jbm8gPSBHZXROdW1iZXJGcm9tUEdQcm9jKE15UHJvYyk7CiAJZGxpc3RfaW5pdCgmc3hh Y3QtPnByZWRpY2F0ZUxvY2tzKTsKIAlkbGlzdF9ub2RlX2luaXQoJnN4YWN0LT5maW5pc2hl ZExpbmspOwogCXN4YWN0LT5mbGFncyA9IDA7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9z dG9yYWdlL2xtZ3IvcHJvYy5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYwpp bmRleCA0YWQ5NmJlYjg3YS4uZDlkZWVmM2E5YmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3N0b3JhZ2UvbG1nci9wcm9jLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3By b2MuYwpAQCAtMjI3LDcgKzIyNyw2IEBAIEluaXRQcm9jR2xvYmFsKHZvaWQpCiAJCQlJbml0 U2hhcmVkTGF0Y2goJihwcm9jLT5wcm9jTGF0Y2gpKTsKIAkJCUxXTG9ja0luaXRpYWxpemUo Jihwcm9jLT5mcEluZm9Mb2NrKSwgTFdUUkFOQ0hFX0xPQ0tfRkFTVFBBVEgpOwogCQl9Ci0J CXByb2MtPnBncHJvY25vID0gaTsKIAogCQkvKgogCQkgKiBOZXdseSBjcmVhdGVkIFBHUFJP Q3MgZm9yIG5vcm1hbCBiYWNrZW5kcywgYXV0b3ZhY3V1bSBhbmQgYmd3b3JrZXJzCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2suaCBiL3NyYy9pbmNsdWRlL3N0b3Jh Z2UvbG9jay5oCmluZGV4IDAwNjc5NjI0ZjdkLi5lZDYwNzFmMzI4NiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvc3RvcmFnZS9sb2NrLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9s b2NrLmgKQEAgLTU0MCw3ICs1NDAsNyBAQCB0eXBlZGVmIGVudW0KICAqIHVzZWQgZm9yIGEg Z2l2ZW4gbG9jayBncm91cCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBncm91cCBsZWFkZXIncyBw Z3Byb2Nuby4KICAqLwogI2RlZmluZSBMb2NrSGFzaFBhcnRpdGlvbkxvY2tCeVByb2MobGVh ZGVyX3BncHJvYykgXAotCUxvY2tIYXNoUGFydGl0aW9uTG9jaygobGVhZGVyX3BncHJvYykt PnBncHJvY25vKQorCUxvY2tIYXNoUGFydGl0aW9uTG9jayhHZXROdW1iZXJGcm9tUEdQcm9j KGxlYWRlcl9wZ3Byb2MpKQogCiAvKgogICogZnVuY3Rpb24gcHJvdG90eXBlcwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdl L3Byb2MuaAppbmRleCA0YmMyMjZlMzZjZC4uMzdjZjhiNDA2N2QgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJv Yy5oCkBAIC0xOTQsMTEgKzE5NCw2IEBAIHN0cnVjdCBQR1BST0MKIAlpbnQJCQlwZ3hhY3Rv ZmY7CQkvKiBvZmZzZXQgaW50byB2YXJpb3VzIFByb2NHbG9iYWwtPmFycmF5cyB3aXRoCiAJ CQkJCQkJCSAqIGRhdGEgbWlycm9yZWQgZnJvbSB0aGlzIFBHUFJPQyAqLwogCi0JaW50CQkJ cGdwcm9jbm87CQkvKiBOdW1iZXIgb2YgdGhpcyBQR1BST0MgaW4KLQkJCQkJCQkJICogUHJv Y0dsb2JhbC0+YWxsUHJvY3MgYXJyYXkuIFRoaXMgaXMgc2V0Ci0JCQkJCQkJCSAqIG9uY2Ug YnkgSW5pdFByb2NHbG9iYWwoKS4KLQkJCQkJCQkJICogUHJvY0dsb2JhbC0+YWxsUHJvY3Nb bl0ucGdwcm9jbm8gPT0gbiAqLwotCiAJLyogVGhlc2UgZmllbGRzIGFyZSB6ZXJvIHdoaWxl IGEgYmFja2VuZCBpcyBzdGlsbCBzdGFydGluZyB1cDogKi8KIAlCYWNrZW5kSWQJYmFja2Vu ZElkOwkJLyogVGhpcyBiYWNrZW5kJ3MgYmFja2VuZCBJRCAoaWYgYXNzaWduZWQpICovCiAJ T2lkCQkJZGF0YWJhc2VJZDsJCS8qIE9JRCBvZiBkYXRhYmFzZSB0aGlzIGJhY2tlbmQgaXMg dXNpbmcgKi8KQEAgLTQxMiw2ICs0MDcsNyBAQCBleHRlcm4gUEdETExJTVBPUlQgUEdQUk9D ICpQcmVwYXJlZFhhY3RQcm9jczsKIAogLyogQWNjZXNzb3IgZm9yIFBHUFJPQyBnaXZlbiBh IHBncHJvY25vLiAqLwogI2RlZmluZSBHZXRQR1Byb2NCeU51bWJlcihuKSAoJlByb2NHbG9i YWwtPmFsbFByb2NzWyhuKV0pCisjZGVmaW5lIEdldE51bWJlckZyb21QR1Byb2MocHJvYykg KChwcm9jKSAtICZQcm9jR2xvYmFsLT5hbGxQcm9jc1swXSkKIAogLyoKICAqIFdlIHNldCBh c2lkZSBzb21lIGV4dHJhIFBHUFJPQyBzdHJ1Y3R1cmVzIGZvciBhdXhpbGlhcnkgcHJvY2Vz c2VzLAotLSAKMi4zOS4yCgo= --------------Rwaxn7iHyg7hsWq1khSGJm6k Content-Type: text/x-patch; charset=UTF-8; name="v7-0002-Redefine-backend-ID-to-be-an-index-into-the-proc-.patch" Content-Disposition: attachment; filename*0="v7-0002-Redefine-backend-ID-to-be-an-index-into-the-proc-.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBmNmIxMWMyNGJmMjhiMzU3M2VhYWI3NzM1MzFiZjdjMGE3MDViMGM2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFRodSwgMjUgSmFuIDIwMjQgMDA6NDk6MTcgKzAyMDAK U3ViamVjdDogW1BBVENIIHY3IDIvNF0gUmVkZWZpbmUgYmFja2VuZCBJRCB0byBiZSBhbiBp bmRleCBpbnRvIHRoZSBwcm9jCiBhcnJheS4KClByZXZpb3VzbHksIGJhY2tlbmQgSUQgd2Fz IGFuIGluZGV4IGludG8gdGhlIFByb2NTdGF0ZSBhcnJheSwgaW4gdGhlCnNoYXJlZCBjYWNo ZSBpbnZhbGlkYXRpb24gbWFuYWdlciAoc2ludmFsYWR0LmMpLiBUaGUgZW50cnkgaW4gdGhl ClByb2NTdGF0ZSBhcnJheSB3YXMgcmVzZXJ2ZWQgYXQgYmFja2VuZCBzdGFydHVwIGJ5IHNj YW5uaW5nIHRoZSBhcnJheQpmb3IgYSBmcmVlIGVudHJ5LCBhbmQgdGhhdCB3YXMgYWxzbyB3 aGVuIHRoZSBiYWNrZW5kIGdvdCBpdHMgYmFja2VuZApJRC4gVGhpbmdzIGJlY29tZXMgc2xp Z2h0bHkgc2ltcGxlciBpZiB3ZSByZWRlZmluZSBiYWNrZW5kIElEIHRvIGJlCnRoZSBpbmRl eCBpbnRvIHRoZSBQR1BST0MgYXJyYXksIGFuZCBkaXJlY3RseSB1c2UgaXQgYWxzbyBhcyBh biBpbmRleAp0byB0aGUgUHJvY1N0YXRlIGFycmF5LiBUaGlzIHVzZXMgYSBsaXR0bGUgbW9y ZSBtZW1vcnksIGFzIHdlIHJlc2VydmUKYSBmZXcgZXh0cmEgc2xvdHMgaW4gdGhlIFByb2NT dGF0ZSBhcnJheSBmb3IgYXV4IHByb2Nlc3NlcyB0aGF0IGRvbid0Cm5lZWQgdGhlbSwgYnV0 IHRoZSBzaW1wbGljaXR5IGlzIHdvcnRoIGl0LgoKQXV4IHByb2Nlc3NlcyBub3cgYWxzbyBo YXZlIGEgYmFja2VuZCBJRC4gVGhpcyBzaW1wbGlmaWVzIHRoZQpyZXNlcnZhdGlvbiBvZiBC YWNrZW5kU3RhdHVzQXJyYXkgYW5kIFByb2NTaWduYWwgc2xvdHMuCgpZb3UgY2FuIG5vdyBj b252ZXJ0IGEgYmFja2VuZCBJRCBpbnRvIGFuIGluZGV4IGludG8gdGhlIFBHUFJPQyBhcnJh eQpzaW1wbHkgYnkgc3VidHJhY3RpbmcgMS4gV2Ugc3RpbGwgdXNlIDAtYmFzZWQgInBncHJv Y25vcyIgaW4gdmFyaW91cwpwbGFjZXMsIGZvciBpbmRleGVzIGludG8gdGhlIFBHUFJPQyBh cnJheSwgYnV0IHRoZSBvbmx5IGRpZmZlcmVuY2Ugbm93CmlzIHRoYXQgYmFja2VuZCBJRHMg c3RhcnQgYXQgMSB3aGlsZSBwZ3Byb2Nub3Mgc3RhcnQgYXQgMC4KCk9uZSBwb3RlbnRpYWwg ZG93bnNpZGUgb2YgdGhpcyBwYXRjaCBpcyB0aGF0IHRoZSBQcm9jU3RhdGUgYXJyYXkgbWln aHQKZ2V0IGxlc3MgZGVuc2VseSBwYWNrZWQsIGFzIHdlIHdlIGRvbid0IHRyeSBzbyBoYXJk IHRvIGFzc2lnbgpsb3ctbnVtYmVyZWQgYmFja2VuZCBJRCBhbnltb3JlLiBJZiBpdCdzIGxl c3MgZGVuc2VseSBwYWNrZWQsCmxhc3RCYWNrZW5kIHdpbGwgc3RheSBhdCBhIGhpZ2hlciB2 YWx1ZSwgYW5kIFNJSW5zZXJ0RGF0YUVudHJpZXMoKSBhbmQKU0lDbGVhbnVwUXVldWUoKSBu ZWVkIHRvIHNjYW4gb3ZlciBtb3JlIHVudXNlZCBlbnRyaWVzLiBJIHRoaW5rIHRoYXQncwpm aW5lLiBUaGV5IGFyZSBwZXJmb3JtYW5jZSBjcml0aWNhbCBlbm91Z2ggdG8gbWF0dGVyLCBh bmQgdGhlcmUgd2FzIG5vCmd1YXJhbnRlZSBvbiBkZW5zZSBwYWNraW5nIGJlZm9yZSBlaXRo ZXI6IElmIHlvdSBsYXVuY2hlZCBhIGxvdCBvZgpiYWNrZW5kcyBjb25jdXJyZW50bHksIGFu ZCBrZXB0IHRoZSBsYXN0IG9uZSBvcGVuLCBsYXN0QmFja2VuZCB3b3VsZAphbHNvIHN0YXkg YXQgYSBoaWdoIHZhbHVlLgoKQW5vdGhlciBwb3RlbnRpYWwgZG93bnNpZGUgb2Ygbm90IGFz c2lnbmluZyBsb3cgYmFja2VuZCBJRHMgYXMKYWdncmVzc2l2ZWx5IGlzIHRoYXQgeW91IG1p Z2h0IGVuZCB1cCB3aXRoIG1vcmUgcGdfdGVtcCBuYW1lc3BhY2VzLCBpZgptb3JlIGRpc3Rp bmN0IGJhY2tlbmQgSURzIGFyZSB1c2VkLiBJIHRoaW5rIHRoYXQncyBmaW5lLCBhbmQgdGhl cmUKaGFzbid0IGJlZW4gYW55IGd1YXJhbnRlZXMgb24gdGhhdCBlaXRoZXIuIEJ1dCBpZiB0 aG9zZSB0aGluZ3MgbWF0dGVyLAp3ZSBjb3VsZCB3b3JrIG9uIHRoZSBtYW5hZ2VtZW50IG9m IGZyZWUgUEdQUk9DIGVudHJpZXMgaW4gcHJvYy5jLCB0bwphc3NpZ24gUEdQUk9DIGVudHJp ZXMgYW5kIGhlbmNlIGJhY2tlbmQgSURzIGRpZmZlcmVudGx5LgoKUmV2aWV3ZWQtYnk6IFhY WApEaXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkLzgx NzFmMWFhLTQ5NmYtNDZhNi1hZmMzLWM0NmZlN2E5YjQwN0Bpa2kuZmkKLS0tCiBzcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS90d29waGFzZS5jICAgICAgIHwgIDI5ICstLS0KIHNyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYyAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9i YWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5jICAgICAgICAgfCAgMTIgKy0KIHNyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jICAgICAgICAgfCAgNjAgKysrKysrKy0K IHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYyAgICAgICAgfCAgMjcgKyst LQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2ludmFsYWR0LmMgICAgICAgICB8IDE0NSAr KysrLS0tLS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xvY2suYyAg ICAgICAgICAgICB8ICAxNiArLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMg ICAgICAgICAgICAgfCAgMTQgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L2JhY2tl bmRfc3RhdHVzLmMgfCAgNTIgKysrLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRm dW5jcy5jICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvZXJyb3IvY3N2 bG9nLmMgICAgICAgICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvdXRpbHMvZXJyb3IvZWxv Zy5jICAgICAgICAgICAgICB8ICAgNiArLQogc3JjL2JhY2tlbmQvdXRpbHMvZXJyb3IvanNv bmxvZy5jICAgICAgICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0 aW5pdC5jICAgICAgICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFw bWdyLmMgICAgICAgICAgICB8ICAgNCArLQogc3JjL2luY2x1ZGUvbWlzY2FkbWluLmggICAg ICAgICAgICAgICAgICAgICB8ICAgMiAtCiBzcmMvaW5jbHVkZS9zdG9yYWdlL2JhY2tlbmRp ZC5oICAgICAgICAgICAgIHwgIDEyICstCiBzcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2suaCAg ICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaCAg ICAgICAgICAgICAgICAgIHwgIDEwICstCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NhcnJh eS5oICAgICAgICAgICAgIHwgICA0ICsKIHNyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25h bC5oICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL3N0b3JhZ2Uvc2ludmFsYWR0 LmggICAgICAgICAgICAgfCAgIDQgLQogMjMgZmlsZXMgY2hhbmdlZCwgMTcwIGluc2VydGlv bnMoKyksIDI1NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS90d29waGFzZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdHdv cGhhc2UuYwppbmRleCAyMzRjOGQwOGViYy4uMGI2ZGQzYjNjZjAgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0vdHdvcGhhc2UuYwpAQCAtMTUxLDcgKzE1MSw2IEBAIHR5cGVkZWYg c3RydWN0IEdsb2JhbFRyYW5zYWN0aW9uRGF0YQogewogCUdsb2JhbFRyYW5zYWN0aW9uIG5l eHQ7CQkvKiBsaXN0IGxpbmsgZm9yIGZyZWUgbGlzdCAqLwogCWludAkJCXBncHJvY25vOwkJ LyogSUQgb2YgYXNzb2NpYXRlZCBkdW1teSBQR1BST0MgKi8KLQlCYWNrZW5kSWQJZHVtbXlC YWNrZW5kSWQ7IC8qIHNpbWlsYXIgdG8gYmFja2VuZCBpZCBmb3IgYmFja2VuZHMgKi8KIAlU aW1lc3RhbXBUeiBwcmVwYXJlZF9hdDsJLyogdGltZSBvZiBwcmVwYXJhdGlvbiAqLwogCiAJ LyoKQEAgLTI4NSwyMCArMjg0LDYgQEAgVHdvUGhhc2VTaG1lbUluaXQodm9pZCkKIAogCQkJ LyogYXNzb2NpYXRlIGl0IHdpdGggYSBQR1BST0MgYXNzaWduZWQgYnkgSW5pdFByb2NHbG9i YWwgKi8KIAkJCWd4YWN0c1tpXS5wZ3Byb2NubyA9IEdldE51bWJlckZyb21QR1Byb2MoJlBy ZXBhcmVkWGFjdFByb2NzW2ldKTsKLQotCQkJLyoKLQkJCSAqIEFzc2lnbiBhIHVuaXF1ZSBJ RCBmb3IgZWFjaCBkdW1teSBwcm9jLCBzbyB0aGF0IHRoZSByYW5nZSBvZgotCQkJICogZHVt bXkgYmFja2VuZCBJRHMgaW1tZWRpYXRlbHkgZm9sbG93cyB0aGUgcmFuZ2Ugb2Ygbm9ybWFs Ci0JCQkgKiBiYWNrZW5kIElEcy4gV2UgZG9uJ3QgZGFyZSB0byBhc3NpZ24gYSByZWFsIGJh Y2tlbmQgSUQgdG8gZHVtbXkKLQkJCSAqIHByb2NzLCBiZWNhdXNlIHByZXBhcmVkIHRyYW5z YWN0aW9ucyBkb24ndCB0YWtlIHBhcnQgaW4gY2FjaGUKLQkJCSAqIGludmFsaWRhdGlvbiBs aWtlIGEgcmVhbCBiYWNrZW5kIElEIHdvdWxkIGltcGx5LCBidXQgaGF2aW5nIGEKLQkJCSAq IHVuaXF1ZSBJRCBmb3IgdGhlbSBpcyBuZXZlcnRoZWxlc3MgaGFuZHkuIFRoaXMgYXJyYW5n ZW1lbnQKLQkJCSAqIGFsbG93cyB5b3UgdG8gYWxsb2NhdGUgYW4gYXJyYXkgb2Ygc2l6ZSAo TWF4QmFja2VuZHMgKwotCQkJICogbWF4X3ByZXBhcmVkX3hhY3RzICsgMSksIGFuZCBoYXZl IGEgc2xvdCBmb3IgZXZlcnkgYmFja2VuZCBhbmQKLQkJCSAqIHByZXBhcmVkIHRyYW5zYWN0 aW9uLiBDdXJyZW50bHkgbXVsdGl4YWN0LmMgdXNlcyB0aGF0Ci0JCQkgKiB0ZWNobmlxdWUu Ci0JCQkgKi8KLQkJCWd4YWN0c1tpXS5kdW1teUJhY2tlbmRJZCA9IE1heEJhY2tlbmRzICsg MSArIGk7CiAJCX0KIAl9CiAJZWxzZQpAQCAtNDU3LDcgKzQ0Miw3IEBAIE1hcmtBc1ByZXBh cmluZ0d1dHMoR2xvYmFsVHJhbnNhY3Rpb24gZ3hhY3QsIFRyYW5zYWN0aW9uSWQgeGlkLCBj b25zdCBjaGFyICpnaWQsCiAJQXNzZXJ0KExXTG9ja0hlbGRCeU1lSW5Nb2RlKFR3b1BoYXNl U3RhdGVMb2NrLCBMV19FWENMVVNJVkUpKTsKIAogCUFzc2VydChneGFjdCAhPSBOVUxMKTsK LQlwcm9jID0gJlByb2NHbG9iYWwtPmFsbFByb2NzW2d4YWN0LT5wZ3Byb2Nub107CisJcHJv YyA9IEdldFBHUHJvY0J5TnVtYmVyKGd4YWN0LT5wZ3Byb2Nubyk7CiAKIAkvKiBJbml0aWFs aXplIHRoZSBQR1BST0MgZW50cnkgKi8KIAlNZW1TZXQocHJvYywgMCwgc2l6ZW9mKFBHUFJP QykpOwpAQCAtNDY3LDE0ICs0NTIsMTIgQEAgTWFya0FzUHJlcGFyaW5nR3V0cyhHbG9iYWxU cmFuc2FjdGlvbiBneGFjdCwgVHJhbnNhY3Rpb25JZCB4aWQsIGNvbnN0IGNoYXIgKmdpZCwK IAl7CiAJCS8qIGNsb25lIFZYSUQsIGZvciBUd29QaGFzZUdldFhpZEJ5VmlydHVhbFhJRCgp IHRvIGZpbmQgKi8KIAkJcHJvYy0+bHhpZCA9IE15UHJvYy0+bHhpZDsKLQkJcHJvYy0+YmFj a2VuZElkID0gTXlCYWNrZW5kSWQ7CiAJfQogCWVsc2UKIAl7CiAJCUFzc2VydChBbVN0YXJ0 dXBQcm9jZXNzKCkgfHwgIUlzUG9zdG1hc3RlckVudmlyb25tZW50KTsKIAkJLyogR2V0TG9j a0NvbmZsaWN0cygpIHVzZXMgdGhpcyB0byBzcGVjaWZ5IGEgd2FpdCBvbiB0aGUgWElEICov CiAJCXByb2MtPmx4aWQgPSB4aWQ7Ci0JCXByb2MtPmJhY2tlbmRJZCA9IEludmFsaWRCYWNr ZW5kSWQ7CiAJfQogCXByb2MtPnhpZCA9IHhpZDsKIAlBc3NlcnQocHJvYy0+eG1pbiA9PSBJ bnZhbGlkVHJhbnNhY3Rpb25JZCk7CkBAIC01MjIsNyArNTA1LDcgQEAgc3RhdGljIHZvaWQK IEdYYWN0TG9hZFN1YnhhY3REYXRhKEdsb2JhbFRyYW5zYWN0aW9uIGd4YWN0LCBpbnQgbnN1 YnhhY3RzLAogCQkJCQkgVHJhbnNhY3Rpb25JZCAqY2hpbGRyZW4pCiB7Ci0JUEdQUk9DCSAg ICpwcm9jID0gJlByb2NHbG9iYWwtPmFsbFByb2NzW2d4YWN0LT5wZ3Byb2Nub107CisJUEdQ Uk9DCSAgICpwcm9jID0gR2V0UEdQcm9jQnlOdW1iZXIoZ3hhY3QtPnBncHJvY25vKTsKIAog CS8qIFdlIG5lZWQgbm8gZXh0cmEgbG9jayBzaW5jZSB0aGUgR1hBQ1QgaXNuJ3QgdmFsaWQg eWV0ICovCiAJaWYgKG5zdWJ4YWN0cyA+IFBHUFJPQ19NQVhfQ0FDSEVEX1NVQlhJRFMpCkBA IC01NTksNyArNTQyLDcgQEAgTWFya0FzUHJlcGFyZWQoR2xvYmFsVHJhbnNhY3Rpb24gZ3hh Y3QsIGJvb2wgbG9ja19oZWxkKQogCSAqIFB1dCBpdCBpbnRvIHRoZSBnbG9iYWwgUHJvY0Fy cmF5IHNvIFRyYW5zYWN0aW9uSWRJc0luUHJvZ3Jlc3MgY29uc2lkZXJzCiAJICogdGhlIFhJ RCBhcyBzdGlsbCBydW5uaW5nLgogCSAqLwotCVByb2NBcnJheUFkZCgmUHJvY0dsb2JhbC0+ YWxsUHJvY3NbZ3hhY3QtPnBncHJvY25vXSk7CisJUHJvY0FycmF5QWRkKEdldFBHUHJvY0J5 TnVtYmVyKGd4YWN0LT5wZ3Byb2NubykpOwogfQogCiAvKgpAQCAtNTgzLDcgKzU2Niw3IEBA IExvY2tHWGFjdChjb25zdCBjaGFyICpnaWQsIE9pZCB1c2VyKQogCWZvciAoaSA9IDA7IGkg PCBUd29QaGFzZVN0YXRlLT5udW1QcmVwWGFjdHM7IGkrKykKIAl7CiAJCUdsb2JhbFRyYW5z YWN0aW9uIGd4YWN0ID0gVHdvUGhhc2VTdGF0ZS0+cHJlcFhhY3RzW2ldOwotCQlQR1BST0MJ ICAgKnByb2MgPSAmUHJvY0dsb2JhbC0+YWxsUHJvY3NbZ3hhY3QtPnBncHJvY25vXTsKKwkJ UEdQUk9DCSAgICpwcm9jID0gR2V0UEdQcm9jQnlOdW1iZXIoZ3hhY3QtPnBncHJvY25vKTsK IAogCQkvKiBJZ25vcmUgbm90LXlldC12YWxpZCBHSURzICovCiAJCWlmICghZ3hhY3QtPnZh bGlkKQpAQCAtODg0LDcgKzg2Nyw3IEBAIFR3b1BoYXNlR2V0WGlkQnlWaXJ0dWFsWElEKFZp cnR1YWxUcmFuc2FjdGlvbklkIHZ4aWQsCiAKIAkJaWYgKCFneGFjdC0+dmFsaWQpCiAJCQlj b250aW51ZTsKLQkJcHJvYyA9ICZQcm9jR2xvYmFsLT5hbGxQcm9jc1tneGFjdC0+cGdwcm9j bm9dOworCQlwcm9jID0gR2V0UEdQcm9jQnlOdW1iZXIoZ3hhY3QtPnBncHJvY25vKTsKIAkJ R0VUX1ZYSURfRlJPTV9QR1BST0MocHJvY192eGlkLCAqcHJvYyk7CiAJCWlmIChWaXJ0dWFs VHJhbnNhY3Rpb25JZEVxdWFscyh2eGlkLCBwcm9jX3Z4aWQpKQogCQl7CkBAIC05MTksNyAr OTAyLDcgQEAgVHdvUGhhc2VHZXREdW1teUJhY2tlbmRJZChUcmFuc2FjdGlvbklkIHhpZCwg Ym9vbCBsb2NrX2hlbGQpCiB7CiAJR2xvYmFsVHJhbnNhY3Rpb24gZ3hhY3QgPSBUd29QaGFz ZUdldEdYYWN0KHhpZCwgbG9ja19oZWxkKTsKIAotCXJldHVybiBneGFjdC0+ZHVtbXlCYWNr ZW5kSWQ7CisJcmV0dXJuIGd4YWN0LT5wZ3Byb2NubyArIDE7CiB9CiAKIC8qCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS94YWN0LmMKaW5kZXggNDY0ODU4MTE3ZTAuLjZjNWM2MTQ3ZjEzIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCkBAIC0yMDk3LDkgKzIwOTcsOCBAQCBT dGFydFRyYW5zYWN0aW9uKHZvaWQpCiAKIAkvKgogCSAqIEFkdmVydGlzZSBpdCBpbiB0aGUg cHJvYyBhcnJheS4gIFdlIGFzc3VtZSBhc3NpZ25tZW50IG9mCi0JICogbG9jYWxUcmFuc2Fj dGlvbklkIGlzIGF0b21pYywgYW5kIHRoZSBiYWNrZW5kSWQgc2hvdWxkIGJlIHNldCBhbHJl YWR5LgorCSAqIGxvY2FsVHJhbnNhY3Rpb25JZCBpcyBhdG9taWMuCiAJICovCi0JQXNzZXJ0 KE15UHJvYy0+YmFja2VuZElkID09IHZ4aWQuYmFja2VuZElkKTsKIAlNeVByb2MtPmx4aWQg PSB2eGlkLmxvY2FsVHJhbnNhY3Rpb25JZDsKIAogCVRSQUNFX1BPU1RHUkVTUUxfVFJBTlNB Q1RJT05fU1RBUlQodnhpZC5sb2NhbFRyYW5zYWN0aW9uSWQpOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvbmFt ZXNwYWNlLmMKaW5kZXggYjYxMGFhNjI0MjMuLmU2ZWVhOTJhYmQ2IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jYXRhbG9nL25hbWVzcGFjZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvbmFtZXNwYWNlLmMKQEAgLTQ5LDcgKzQ5LDcgQEAKICNpbmNsdWRlICJwYXJzZXIvcGFy c2VfZnVuYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9sbWdyLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9zaW52YWxhZHQuaCIKKyNpbmNsdWRlICJz dG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInV0aWxzL2FjbC5oIgogI2luY2x1ZGUg InV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvY2F0Y2FjaGUuaCIKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5jIGIvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9hdXhwcm9jZXNzLmMKaW5kZXggYWI4NmU4MDJmMjEuLjM5MTcxZmVh MDZiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1eHByb2Nlc3MuYwor KysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1eHByb2Nlc3MuYwpAQCAtMTA3LDE3ICsx MDcsNyBAQCBBdXhpbGlhcnlQcm9jZXNzTWFpbihBdXhQcm9jVHlwZSBhdXh0eXBlKQogCiAJ QmFzZUluaXQoKTsKIAotCS8qCi0JICogQXNzaWduIHRoZSBQcm9jU2lnbmFsU2xvdCBmb3Ig YW4gYXV4aWxpYXJ5IHByb2Nlc3MuICBTaW5jZSBpdCBkb2Vzbid0Ci0JICogaGF2ZSBhIEJh Y2tlbmRJZCwgdGhlIHNsb3QgaXMgc3RhdGljYWxseSBhbGxvY2F0ZWQgYmFzZWQgb24gdGhl Ci0JICogYXV4aWxpYXJ5IHByb2Nlc3MgdHlwZSAoTXlBdXhQcm9jVHlwZSkuICBCYWNrZW5k cyB1c2Ugc2xvdHMgaW5kZXhlZCBpbgotCSAqIHRoZSByYW5nZSBmcm9tIDEgdG8gTWF4QmFj a2VuZHMgKGluY2x1c2l2ZSksIHNvIHdlIHVzZSBNYXhCYWNrZW5kcyArCi0JICogQXV4UHJv Y1R5cGUgKyAxIGFzIHRoZSBpbmRleCBvZiB0aGUgc2xvdCBmb3IgYW4gYXV4aWxpYXJ5IHBy b2Nlc3MuCi0JICoKLQkgKiBUaGlzIHdpbGwgbmVlZCByZXRoaW5raW5nIGlmIHdlIGV2ZXIg d2FudCBtb3JlIHRoYW4gb25lIG9mIGEgcGFydGljdWxhcgotCSAqIGF1eGlsaWFyeSBwcm9j ZXNzIHR5cGUuCi0JICovCi0JUHJvY1NpZ25hbEluaXQoTWF4QmFja2VuZHMgKyBNeUF1eFBy b2NUeXBlICsgMSk7CisJUHJvY1NpZ25hbEluaXQoKTsKIAogCS8qCiAJICogQXV4aWxpYXJ5 IHByb2Nlc3NlcyBkb24ndCBydW4gdHJhbnNhY3Rpb25zLCBidXQgdGhleSBtYXkgbmVlZCBh CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jCmluZGV4IDVhMzNlYjdmN2Y3Li5j ZDEyN2E1MzU3YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2Fy cmF5LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKQEAgLTI1 NDYsNyArMjU0Niw3IEBAIFByb2NBcnJheUluc3RhbGxJbXBvcnRlZFhtaW4oVHJhbnNhY3Rp b25JZCB4bWluLAogCQkJY29udGludWU7CiAKIAkJLyogV2UgYXJlIG9ubHkgaW50ZXJlc3Rl ZCBpbiB0aGUgc3BlY2lmaWMgdmlydHVhbCB0cmFuc2FjdGlvbi4gKi8KLQkJaWYgKHByb2Mt PmJhY2tlbmRJZCAhPSBzb3VyY2V2eGlkLT5iYWNrZW5kSWQpCisJCWlmIChHZXRCYWNrZW5k SWRGcm9tUEdQcm9jKHByb2MpICE9IHNvdXJjZXZ4aWQtPmJhY2tlbmRJZCkKIAkJCWNvbnRp bnVlOwogCQlpZiAocHJvYy0+bHhpZCAhPSBzb3VyY2V2eGlkLT5sb2NhbFRyYW5zYWN0aW9u SWQpCiAJCQljb250aW51ZTsKQEAgLTMwOTcsNiArMzA5Nyw2NCBAQCBIYXZlVmlydHVhbFhJ RHNEZWxheWluZ0Noa3B0KFZpcnR1YWxUcmFuc2FjdGlvbklkICp2eGlkcywgaW50IG52eGlk cywgaW50IHR5cGUpCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyoKKyAqIEJhY2tlbmRJZEdl dFByb2MgLS0gZ2V0IGEgYmFja2VuZCdzIFBHUFJPQyBnaXZlbiBpdHMgYmFja2VuZCBJRAor ICoKKyAqIFRoZSByZXN1bHQgbWF5IGJlIG91dCBvZiBkYXRlIGFyYml0cmFyaWx5IHF1aWNr bHksIHNvIHRoZSBjYWxsZXIKKyAqIG11c3QgYmUgY2FyZWZ1bCBhYm91dCBob3cgdGhpcyBp bmZvcm1hdGlvbiBpcyB1c2VkLiAgTlVMTCBpcworICogcmV0dXJuZWQgaWYgdGhlIGJhY2tl bmQgaXMgbm90IGFjdGl2ZS4KKyAqLworUEdQUk9DICoKK0JhY2tlbmRJZEdldFByb2MoaW50 IGJhY2tlbmRJRCkKK3sKKwlQR1BST0MJICAgKnJlc3VsdDsKKworCWlmIChiYWNrZW5kSUQg PCAxIHx8IGJhY2tlbmRJRCA+IFByb2NHbG9iYWwtPmFsbFByb2NDb3VudCkKKwkJcmV0dXJu IE5VTEw7CisJcmVzdWx0ID0gR2V0UEdQcm9jQnlCYWNrZW5kSWQoYmFja2VuZElEKTsKKwor CWlmIChyZXN1bHQtPnBpZCA9PSAwKQorCQlyZXR1cm4gTlVMTDsKKworCXJldHVybiByZXN1 bHQ7Cit9CisKKy8qCisgKiBCYWNrZW5kSWRHZXRUcmFuc2FjdGlvbklkcyAtLSBnZXQgYSBi YWNrZW5kJ3MgdHJhbnNhY3Rpb24gc3RhdHVzCisgKgorICogR2V0IHRoZSB4aWQsIHhtaW4s IG5zdWJ4aWQgYW5kIG92ZXJmbG93IHN0YXR1cyBvZiB0aGUgYmFja2VuZC4gIFRoZQorICog cmVzdWx0IG1heSBiZSBvdXQgb2YgZGF0ZSBhcmJpdHJhcmlseSBxdWlja2x5LCBzbyB0aGUg Y2FsbGVyIG11c3QgYmUKKyAqIGNhcmVmdWwgYWJvdXQgaG93IHRoaXMgaW5mb3JtYXRpb24g aXMgdXNlZC4KKyAqLwordm9pZAorQmFja2VuZElkR2V0VHJhbnNhY3Rpb25JZHMoaW50IGJh Y2tlbmRJRCwgVHJhbnNhY3Rpb25JZCAqeGlkLAorCQkJCQkJICAgVHJhbnNhY3Rpb25JZCAq eG1pbiwgaW50ICpuc3VieGlkLCBib29sICpvdmVyZmxvd2VkKQoreworCVBHUFJPQwkgICAq cHJvYzsKKworCSp4aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwkqeG1pbiA9IEludmFs aWRUcmFuc2FjdGlvbklkOworCSpuc3VieGlkID0gMDsKKwkqb3ZlcmZsb3dlZCA9IGZhbHNl OworCisJaWYgKGJhY2tlbmRJRCA8IDEgfHwgYmFja2VuZElEID4gUHJvY0dsb2JhbC0+YWxs UHJvY0NvdW50KQorCQlyZXR1cm47CisJcHJvYyA9IEdldFBHUHJvY0J5QmFja2VuZElkKGJh Y2tlbmRJRCk7CisKKwkvKiBOZWVkIHRvIGxvY2sgb3V0IGFkZGl0aW9ucy9yZW1vdmFscyBv ZiBiYWNrZW5kcyAqLworCUxXTG9ja0FjcXVpcmUoUHJvY0FycmF5TG9jaywgTFdfU0hBUkVE KTsKKworCWlmIChwcm9jLT5waWQgIT0gMCkKKwl7CisJCSp4aWQgPSBwcm9jLT54aWQ7CisJ CSp4bWluID0gcHJvYy0+eG1pbjsKKwkJKm5zdWJ4aWQgPSBwcm9jLT5zdWJ4aWRTdGF0dXMu Y291bnQ7CisJCSpvdmVyZmxvd2VkID0gcHJvYy0+c3VieGlkU3RhdHVzLm92ZXJmbG93ZWQ7 CisJfQorCisJTFdMb2NrUmVsZWFzZShQcm9jQXJyYXlMb2NrKTsKK30KKwogLyoKICAqIEJh Y2tlbmRQaWRHZXRQcm9jIC0tIGdldCBhIGJhY2tlbmQncyBQR1BST0MgZ2l2ZW4gaXRzIFBJ RAogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwu YyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwppbmRleCBlODQ2MTll NWE1OC4uZDFkNWJmMGMxNTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3Byb2NzaWduYWwuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFs LmMKQEAgLTg3LDcgKzg3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QKICAqIHBvc3NpYmxlIGF1eGls aWFyeSBwcm9jZXNzIHR5cGUuICAoVGhpcyBzY2hlbWUgYXNzdW1lcyB0aGVyZSBpcyBub3QK ICAqIG1vcmUgdGhhbiBvbmUgb2YgYW55IGF1eGlsaWFyeSBwcm9jZXNzIHR5cGUgYXQgYSB0 aW1lLikKICAqLwotI2RlZmluZSBOdW1Qcm9jU2lnbmFsU2xvdHMJKE1heEJhY2tlbmRzICsg TlVNX0FVWFBST0NUWVBFUykKKyNkZWZpbmUgTnVtUHJvY1NpZ25hbFNsb3RzCShNYXhCYWNr ZW5kcyArIE5VTV9BVVhJTElBUllfUFJPQ1MpCiAKIC8qIENoZWNrIHdoZXRoZXIgdGhlIHJl bGV2YW50IHR5cGUgYml0IGlzIHNldCBpbiB0aGUgZmxhZ3MuICovCiAjZGVmaW5lIEJBUlJJ RVJfU0hPVUxEX0NIRUNLKGZsYWdzLCB0eXBlKSBcCkBAIC0xNTQsMjQgKzE1NCwyMyBAQCBQ cm9jU2lnbmFsU2htZW1Jbml0KHZvaWQpCiAvKgogICogUHJvY1NpZ25hbEluaXQKICAqCQlS ZWdpc3RlciB0aGUgY3VycmVudCBwcm9jZXNzIGluIHRoZSBQcm9jU2lnbmFsIGFycmF5Ci0g KgotICogVGhlIHBhc3NlZCBpbmRleCBzaG91bGQgYmUgbXkgQmFja2VuZElkIGlmIHRoZSBw cm9jZXNzIGhhcyBvbmUsCi0gKiBvciBNYXhCYWNrZW5kcyArIGF1eCBwcm9jZXNzIHR5cGUg aWYgbm90LgogICovCiB2b2lkCi1Qcm9jU2lnbmFsSW5pdChpbnQgcHNzX2lkeCkKK1Byb2NT aWduYWxJbml0KHZvaWQpCiB7CiAJUHJvY1NpZ25hbFNsb3QgKnNsb3Q7CiAJdWludDY0CQli YXJyaWVyX2dlbmVyYXRpb247CiAKLQlBc3NlcnQocHNzX2lkeCA+PSAxICYmIHBzc19pZHgg PD0gTnVtUHJvY1NpZ25hbFNsb3RzKTsKLQotCXNsb3QgPSAmUHJvY1NpZ25hbC0+cHNoX3Ns b3RbcHNzX2lkeCAtIDFdOworCWlmIChNeUJhY2tlbmRJZCA8PSAwKQorCQllbG9nKEVSUk9S LCAiTXlCYWNrZW5kSWQgbm90IHNldCIpOworCWlmIChNeUJhY2tlbmRJZCA+IE51bVByb2NT aWduYWxTbG90cykKKwkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgTXlCYWNrZW5kSWQgJWQg aW4gUHJvY1NpZ25hbEluaXQgKG1heCAlZCkiLCBNeUJhY2tlbmRJZCwgTnVtUHJvY1NpZ25h bFNsb3RzKTsKKwlzbG90ID0gJlByb2NTaWduYWwtPnBzaF9zbG90W015QmFja2VuZElkIC0g MV07CiAKIAkvKiBzYW5pdHkgY2hlY2sgKi8KIAlpZiAoc2xvdC0+cHNzX3BpZCAhPSAwKQog CQllbG9nKExPRywgInByb2Nlc3MgJWQgdGFraW5nIG92ZXIgUHJvY1NpZ25hbCBzbG90ICVk LCBidXQgaXQncyBub3QgZW1wdHkiLAotCQkJIE15UHJvY1BpZCwgcHNzX2lkeCk7CisJCQkg TXlQcm9jUGlkLCAoaW50KSAoc2xvdCAtIFByb2NTaWduYWwtPnBzaF9zbG90KSk7CiAKIAkv KiBDbGVhciBvdXQgYW55IGxlZnRvdmVyIHNpZ25hbCByZWFzb25zICovCiAJTWVtU2V0KHNs b3QtPnBzc19zaWduYWxGbGFncywgMCwgTlVNX1BST0NTSUdOQUxTICogc2l6ZW9mKHNpZ19h dG9taWNfdCkpOwpAQCAtMjAwLDcgKzE5OSw3IEBAIFByb2NTaWduYWxJbml0KGludCBwc3Nf aWR4KQogCU15UHJvY1NpZ25hbFNsb3QgPSBzbG90OwogCiAJLyogU2V0IHVwIHRvIHJlbGVh c2UgdGhlIHNsb3Qgb24gcHJvY2VzcyBleGl0ICovCi0Jb25fc2htZW1fZXhpdChDbGVhbnVw UHJvY1NpZ25hbFN0YXRlLCBJbnQzMkdldERhdHVtKHBzc19pZHgpKTsKKwlvbl9zaG1lbV9l eGl0KENsZWFudXBQcm9jU2lnbmFsU3RhdGUsIChEYXR1bSkgMCk7CiB9CiAKIC8qCkBAIC0y MTIsMTEgKzIxMSw3IEBAIFByb2NTaWduYWxJbml0KGludCBwc3NfaWR4KQogc3RhdGljIHZv aWQKIENsZWFudXBQcm9jU2lnbmFsU3RhdGUoaW50IHN0YXR1cywgRGF0dW0gYXJnKQogewot CWludAkJCXBzc19pZHggPSBEYXR1bUdldEludDMyKGFyZyk7Ci0JUHJvY1NpZ25hbFNsb3Qg KnNsb3Q7Ci0KLQlzbG90ID0gJlByb2NTaWduYWwtPnBzaF9zbG90W3Bzc19pZHggLSAxXTsK LQlBc3NlcnQoc2xvdCA9PSBNeVByb2NTaWduYWxTbG90KTsKKwlQcm9jU2lnbmFsU2xvdCAq c2xvdCA9IE15UHJvY1NpZ25hbFNsb3Q7CiAKIAkvKgogCSAqIENsZWFyIE15UHJvY1NpZ25h bFNsb3QsIHNvIHRoYXQgYSBTSUdVU1IxIHJlY2VpdmVkIGFmdGVyIHRoaXMgcG9pbnQKQEAg LTIzMyw3ICsyMjgsNyBAQCBDbGVhbnVwUHJvY1NpZ25hbFN0YXRlKGludCBzdGF0dXMsIERh dHVtIGFyZykKIAkJICogaW5maW5pdGUgbG9vcCB0cnlpbmcgdG8gZXhpdAogCQkgKi8KIAkJ ZWxvZyhMT0csICJwcm9jZXNzICVkIHJlbGVhc2luZyBQcm9jU2lnbmFsIHNsb3QgJWQsIGJ1 dCBpdCBjb250YWlucyAlZCIsCi0JCQkgTXlQcm9jUGlkLCBwc3NfaWR4LCAoaW50KSBzbG90 LT5wc3NfcGlkKTsKKwkJCSBNeVByb2NQaWQsIChpbnQpIChzbG90IC0gUHJvY1NpZ25hbC0+ cHNoX3Nsb3QpLCAoaW50KSBzbG90LT5wc3NfcGlkKTsKIAkJcmV0dXJuOwkJCQkJLyogWFhY IGJldHRlciB0byB6ZXJvIHRoZSBzbG90IGFueXdheT8gKi8KIAl9CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NpbnZhbGFkdC5jIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvc2ludmFsYWR0LmMKaW5kZXggNzQ4YTc5MmE4NTQuLjgxMDU3MTdjNTc4IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaW52YWxhZHQuYworKysgYi9z cmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaW52YWxhZHQuYwpAQCAtMTM5LDcgKzEzOSw2IEBA IHR5cGVkZWYgc3RydWN0IFByb2NTdGF0ZQogewogCS8qIHByb2NQaWQgaXMgemVybyBpbiBh biBpbmFjdGl2ZSBQcm9jU3RhdGUgYXJyYXkgZW50cnkuICovCiAJcGlkX3QJCXByb2NQaWQ7 CQkvKiBQSUQgb2YgYmFja2VuZCwgZm9yIHNpZ25hbGluZyAqLwotCVBHUFJPQwkgICAqcHJv YzsJCQkvKiBQR1BST0Mgb2YgYmFja2VuZCAqLwogCS8qIG5leHRNc2dOdW0gaXMgbWVhbmlu Z2xlc3MgaWYgcHJvY1BpZCA9PSAwIG9yIHJlc2V0U3RhdGUgaXMgdHJ1ZS4gKi8KIAlpbnQJ CQluZXh0TXNnTnVtOwkJLyogbmV4dCBtZXNzYWdlIG51bWJlciB0byByZWFkICovCiAJYm9v bAkJcmVzZXRTdGF0ZTsJCS8qIGJhY2tlbmQgbmVlZHMgdG8gcmVzZXQgaXRzIHN0YXRlICov CkBAIC0xNzMsNyArMTcyLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgU0lTZWcKIAlpbnQJCQltYXhN c2dOdW07CQkvKiBuZXh0IG1lc3NhZ2UgbnVtYmVyIHRvIGJlIGFzc2lnbmVkICovCiAJaW50 CQkJbmV4dFRocmVzaG9sZDsJLyogIyBvZiBtZXNzYWdlcyB0byBjYWxsIFNJQ2xlYW51cFF1 ZXVlICovCiAJaW50CQkJbGFzdEJhY2tlbmQ7CS8qIGluZGV4IG9mIGxhc3QgYWN0aXZlIHBy b2NTdGF0ZSBlbnRyeSwgKzEgKi8KLQlpbnQJCQltYXhCYWNrZW5kczsJLyogc2l6ZSBvZiBw cm9jU3RhdGUgYXJyYXkgKi8KIAogCXNsb2NrX3QJCW1zZ251bUxvY2s7CQkvKiBzcGlubG9j ayBwcm90ZWN0aW5nIG1heE1zZ051bSAqLwogCkBAIC0xODMsMTEgKzE4MSwxOCBAQCB0eXBl ZGVmIHN0cnVjdCBTSVNlZwogCVNoYXJlZEludmFsaWRhdGlvbk1lc3NhZ2UgYnVmZmVyW01B WE5VTU1FU1NBR0VTXTsKIAogCS8qCi0JICogUGVyLWJhY2tlbmQgaW52YWxpZGF0aW9uIHN0 YXRlIGluZm8gKGhhcyBNYXhCYWNrZW5kcyBlbnRyaWVzKS4KKwkgKiBQZXItYmFja2VuZCBp bnZhbGlkYXRpb24gc3RhdGUgaW5mbyAoaGFzIE51bVByb2NTdGF0ZVNsb3RzIGVudHJpZXMp LgogCSAqLwogCVByb2NTdGF0ZQlwcm9jU3RhdGVbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsK IH0gU0lTZWc7CiAKKy8qCisgKiBXZSByZXNlcnZlIGEgc2xvdCBmb3IgZWFjaCBwb3NzaWJs ZSBCYWNrZW5kSWQsIHBsdXMgb25lIGZvciBlYWNoCisgKiBwb3NzaWJsZSBhdXhpbGlhcnkg cHJvY2VzcyB0eXBlLiAgKFRoaXMgc2NoZW1lIGFzc3VtZXMgdGhlcmUgaXMgbm90CisgKiBt b3JlIHRoYW4gb25lIG9mIGFueSBhdXhpbGlhcnkgcHJvY2VzcyB0eXBlIGF0IGEgdGltZS4p CisgKi8KKyNkZWZpbmUgTnVtUHJvY1N0YXRlU2xvdHMJKE1heEJhY2tlbmRzICsgTlVNX0FV WElMSUFSWV9QUk9DUykKKwogc3RhdGljIFNJU2VnICpzaG1JbnZhbEJ1ZmZlcjsJLyogcG9p bnRlciB0byB0aGUgc2hhcmVkIGludmFsIGJ1ZmZlciAqLwogCiAKQEAgLTIwNSwxNiArMjEw LDcgQEAgU0ludmFsU2htZW1TaXplKHZvaWQpCiAJU2l6ZQkJc2l6ZTsKIAogCXNpemUgPSBv ZmZzZXRvZihTSVNlZywgcHJvY1N0YXRlKTsKLQotCS8qCi0JICogSW4gSG90IFN0YW5kYnkg bW9kZSwgdGhlIHN0YXJ0dXAgcHJvY2VzcyByZXF1ZXN0cyBhIHByb2NTdGF0ZSBhcnJheQot CSAqIHNsb3QgdXNpbmcgSW5pdFJlY292ZXJ5VHJhbnNhY3Rpb25FbnZpcm9ubWVudCgpLiBF dmVuIHRob3VnaAotCSAqIE1heEJhY2tlbmRzIGRvZXNuJ3QgYWNjb3VudCBmb3IgdGhlIHN0 YXJ0dXAgcHJvY2VzcywgaXQgaXMgZ3VhcmFudGVlZAotCSAqIHRvIGdldCBhIGZyZWUgc2xv dC4gVGhpcyBpcyBiZWNhdXNlIHRoZSBhdXRvdmFjdXVtIGxhdW5jaGVyIGFuZCB3b3JrZXIK LQkgKiBwcm9jZXNzZXMsIHdoaWNoIGFyZSBpbmNsdWRlZCBpbiBNYXhCYWNrZW5kcywgYXJl IG5vdCBzdGFydGVkIGluIEhvdAotCSAqIFN0YW5kYnkgbW9kZS4KLQkgKi8KLQlzaXplID0g YWRkX3NpemUoc2l6ZSwgbXVsX3NpemUoc2l6ZW9mKFByb2NTdGF0ZSksIE1heEJhY2tlbmRz KSk7CisJc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9zaXplKHNpemVvZihQcm9jU3RhdGUp LCBOdW1Qcm9jU3RhdGVTbG90cykpOwogCiAJcmV0dXJuIHNpemU7CiB9CkBAIC0yNDAsMTYg KzIzNiwxNCBAQCBDcmVhdGVTaGFyZWRJbnZhbGlkYXRpb25TdGF0ZSh2b2lkKQogCXNobUlu dmFsQnVmZmVyLT5tYXhNc2dOdW0gPSAwOwogCXNobUludmFsQnVmZmVyLT5uZXh0VGhyZXNo b2xkID0gQ0xFQU5VUF9NSU47CiAJc2htSW52YWxCdWZmZXItPmxhc3RCYWNrZW5kID0gMDsK LQlzaG1JbnZhbEJ1ZmZlci0+bWF4QmFja2VuZHMgPSBNYXhCYWNrZW5kczsKIAlTcGluTG9j a0luaXQoJnNobUludmFsQnVmZmVyLT5tc2dudW1Mb2NrKTsKIAogCS8qIFRoZSBidWZmZXJb XSBhcnJheSBpcyBpbml0aWFsbHkgYWxsIHVudXNlZCwgc28gd2UgbmVlZCBub3QgZmlsbCBp dCAqLwogCiAJLyogTWFyayBhbGwgYmFja2VuZHMgaW5hY3RpdmUsIGFuZCBpbml0aWFsaXpl IG5leHRMWElEICovCi0JZm9yIChpID0gMDsgaSA8IHNobUludmFsQnVmZmVyLT5tYXhCYWNr ZW5kczsgaSsrKQorCWZvciAoaSA9IDA7IGkgPCBOdW1Qcm9jU3RhdGVTbG90czsgaSsrKQog CXsKIAkJc2htSW52YWxCdWZmZXItPnByb2NTdGF0ZVtpXS5wcm9jUGlkID0gMDsJLyogaW5h Y3RpdmUgKi8KLQkJc2htSW52YWxCdWZmZXItPnByb2NTdGF0ZVtpXS5wcm9jID0gTlVMTDsK IAkJc2htSW52YWxCdWZmZXItPnByb2NTdGF0ZVtpXS5uZXh0TXNnTnVtID0gMDsJLyogbWVh bmluZ2xlc3MgKi8KIAkJc2htSW52YWxCdWZmZXItPnByb2NTdGF0ZVtpXS5yZXNldFN0YXRl ID0gZmFsc2U7CiAJCXNobUludmFsQnVmZmVyLT5wcm9jU3RhdGVbaV0uc2lnbmFsZWQgPSBm YWxzZTsKQEAgLTI2NSwxMCArMjU5LDE3IEBAIENyZWF0ZVNoYXJlZEludmFsaWRhdGlvblN0 YXRlKHZvaWQpCiB2b2lkCiBTaGFyZWRJbnZhbEJhY2tlbmRJbml0KGJvb2wgc2VuZE9ubHkp CiB7Ci0JaW50CQkJaW5kZXg7Ci0JUHJvY1N0YXRlICAqc3RhdGVQID0gTlVMTDsKKwlQcm9j U3RhdGUgICpzdGF0ZVA7CisJcGlkX3QJCW9sZFBpZDsKIAlTSVNlZwkgICAqc2VnUCA9IHNo bUludmFsQnVmZmVyOwogCisJaWYgKE15QmFja2VuZElkIDw9IDApCisJCWVsb2coRVJST1Is ICJNeUJhY2tlbmRJZCBub3Qgc2V0Iik7CisJaWYgKE15QmFja2VuZElkID4gTnVtUHJvY1N0 YXRlU2xvdHMpCisJCWVsb2coUEFOSUMsICJ1bmV4cGVjdGVkIE15QmFja2VuZElkICVkIGlu IFNoYXJlZEludmFsQmFja2VuZEluaXQgKG1heCAlZCkiLAorCQkJIE15QmFja2VuZElkLCBO dW1Qcm9jU3RhdGVTbG90cyk7CisJc3RhdGVQID0gJnNlZ1AtPnByb2NTdGF0ZVtNeUJhY2tl bmRJZCAtIDFdOworCiAJLyoKIAkgKiBUaGlzIGNhbiBydW4gaW4gcGFyYWxsZWwgd2l0aCBy ZWFkIG9wZXJhdGlvbnMsIGJ1dCBub3Qgd2l0aCB3cml0ZQogCSAqIG9wZXJhdGlvbnMsIHNp bmNlIFNJSW5zZXJ0RGF0YUVudHJpZXMgcmVsaWVzIG9uIGxhc3RCYWNrZW5kIHRvIHNldApA QCAtMjc2LDQ4ICsyNzcsMjIgQEAgU2hhcmVkSW52YWxCYWNrZW5kSW5pdChib29sIHNlbmRP bmx5KQogCSAqLwogCUxXTG9ja0FjcXVpcmUoU0ludmFsV3JpdGVMb2NrLCBMV19FWENMVVNJ VkUpOwogCi0JLyogTG9vayBmb3IgYSBmcmVlIGVudHJ5IGluIHRoZSBwcm9jU3RhdGUgYXJy YXkgKi8KLQlmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBzZWdQLT5sYXN0QmFja2VuZDsgaW5k ZXgrKykKLQl7Ci0JCWlmIChzZWdQLT5wcm9jU3RhdGVbaW5kZXhdLnByb2NQaWQgPT0gMCkJ LyogaW5hY3RpdmUgc2xvdD8gKi8KLQkJewotCQkJc3RhdGVQID0gJnNlZ1AtPnByb2NTdGF0 ZVtpbmRleF07Ci0JCQlicmVhazsKLQkJfQotCX0KLQotCWlmIChzdGF0ZVAgPT0gTlVMTCkK KwlvbGRQaWQgPSBzdGF0ZVAtPnByb2NQaWQ7CisJaWYgKG9sZFBpZCAhPSAwKQogCXsKLQkJ aWYgKHNlZ1AtPmxhc3RCYWNrZW5kIDwgc2VnUC0+bWF4QmFja2VuZHMpCi0JCXsKLQkJCXN0 YXRlUCA9ICZzZWdQLT5wcm9jU3RhdGVbc2VnUC0+bGFzdEJhY2tlbmRdOwotCQkJQXNzZXJ0 KHN0YXRlUC0+cHJvY1BpZCA9PSAwKTsKLQkJCXNlZ1AtPmxhc3RCYWNrZW5kKys7Ci0JCX0K LQkJZWxzZQotCQl7Ci0JCQkvKgotCQkJICogb3V0IG9mIHByb2NTdGF0ZSBzbG90czogTWF4 QmFja2VuZHMgZXhjZWVkZWQgLS0gcmVwb3J0IG5vcm1hbGx5Ci0JCQkgKi8KLQkJCU15QmFj a2VuZElkID0gSW52YWxpZEJhY2tlbmRJZDsKLQkJCUxXTG9ja1JlbGVhc2UoU0ludmFsV3Jp dGVMb2NrKTsKLQkJCWVyZXBvcnQoRkFUQUwsCi0JCQkJCShlcnJjb2RlKEVSUkNPREVfVE9P X01BTllfQ09OTkVDVElPTlMpLAotCQkJCQkgZXJybXNnKCJzb3JyeSwgdG9vIG1hbnkgY2xp ZW50cyBhbHJlYWR5IikpKTsKLQkJfQorCQlMV0xvY2tSZWxlYXNlKFNJbnZhbFdyaXRlTG9j ayk7CisJCWVsb2coRVJST1IsICJzaW52YWwgc2xvdCBmb3IgYmFja2VuZCAlZCBpcyBhbHJl YWR5IGluIHVzZSBieSBwcm9jZXNzICVkIiwKKwkJCSBNeUJhY2tlbmRJZCwgb2xkUGlkKTsK IAl9CiAKLQlNeUJhY2tlbmRJZCA9IChzdGF0ZVAgLSAmc2VnUC0+cHJvY1N0YXRlWzBdKSAr IDE7Ci0KLQkvKiBBZHZlcnRpc2UgYXNzaWduZWQgYmFja2VuZCBJRCBpbiBNeVByb2MgKi8K LQlNeVByb2MtPmJhY2tlbmRJZCA9IE15QmFja2VuZElkOworCWlmIChNeUJhY2tlbmRJZCA+ IHNlZ1AtPmxhc3RCYWNrZW5kKQorCQlzZWdQLT5sYXN0QmFja2VuZCA9IE15QmFja2VuZElk OwogCiAJLyogRmV0Y2ggbmV4dCBsb2NhbCB0cmFuc2FjdGlvbiBJRCBpbnRvIGxvY2FsIG1l bW9yeSAqLwogCW5leHRMb2NhbFRyYW5zYWN0aW9uSWQgPSBzdGF0ZVAtPm5leHRMWElEOwog CiAJLyogbWFyayBteXNlbGYgYWN0aXZlLCB3aXRoIGFsbCBleHRhbnQgbWVzc2FnZXMgYWxy ZWFkeSByZWFkICovCiAJc3RhdGVQLT5wcm9jUGlkID0gTXlQcm9jUGlkOwotCXN0YXRlUC0+ cHJvYyA9IE15UHJvYzsKIAlzdGF0ZVAtPm5leHRNc2dOdW0gPSBzZWdQLT5tYXhNc2dOdW07 CiAJc3RhdGVQLT5yZXNldFN0YXRlID0gZmFsc2U7CiAJc3RhdGVQLT5zaWduYWxlZCA9IGZh bHNlOwpAQCAtMzI4LDggKzMwMyw2IEBAIFNoYXJlZEludmFsQmFja2VuZEluaXQoYm9vbCBz ZW5kT25seSkKIAogCS8qIHJlZ2lzdGVyIGV4aXQgcm91dGluZSB0byBtYXJrIG15IGVudHJ5 IGluYWN0aXZlIGF0IGV4aXQgKi8KIAlvbl9zaG1lbV9leGl0KENsZWFudXBJbnZhbGlkYXRp b25TdGF0ZSwgUG9pbnRlckdldERhdHVtKHNlZ1ApKTsKLQotCWVsb2coREVCVUc0LCAibXkg YmFja2VuZCBJRCBpcyAlZCIsIE15QmFja2VuZElkKTsKIH0KIAogLyoKQEAgLTM1OCw3ICsz MzEsNiBAQCBDbGVhbnVwSW52YWxpZGF0aW9uU3RhdGUoaW50IHN0YXR1cywgRGF0dW0gYXJn KQogCiAJLyogTWFyayBteXNlbGYgaW5hY3RpdmUgKi8KIAlzdGF0ZVAtPnByb2NQaWQgPSAw OwotCXN0YXRlUC0+cHJvYyA9IE5VTEw7CiAJc3RhdGVQLT5uZXh0TXNnTnVtID0gMDsKIAlz dGF0ZVAtPnJlc2V0U3RhdGUgPSBmYWxzZTsKIAlzdGF0ZVAtPnNpZ25hbGVkID0gZmFsc2U7 CkBAIC0zNzQsNzEgKzM0Niw2IEBAIENsZWFudXBJbnZhbGlkYXRpb25TdGF0ZShpbnQgc3Rh dHVzLCBEYXR1bSBhcmcpCiAJTFdMb2NrUmVsZWFzZShTSW52YWxXcml0ZUxvY2spOwogfQog Ci0vKgotICogQmFja2VuZElkR2V0UHJvYwotICoJCUdldCB0aGUgUEdQUk9DIHN0cnVjdHVy ZSBmb3IgYSBiYWNrZW5kLCBnaXZlbiB0aGUgYmFja2VuZCBJRC4KLSAqCQlUaGUgcmVzdWx0 IG1heSBiZSBvdXQgb2YgZGF0ZSBhcmJpdHJhcmlseSBxdWlja2x5LCBzbyB0aGUgY2FsbGVy Ci0gKgkJbXVzdCBiZSBjYXJlZnVsIGFib3V0IGhvdyB0aGlzIGluZm9ybWF0aW9uIGlzIHVz ZWQuICBOVUxMIGlzCi0gKgkJcmV0dXJuZWQgaWYgdGhlIGJhY2tlbmQgaXMgbm90IGFjdGl2 ZS4KLSAqLwotUEdQUk9DICoKLUJhY2tlbmRJZEdldFByb2MoaW50IGJhY2tlbmRJRCkKLXsK LQlQR1BST0MJICAgKnJlc3VsdCA9IE5VTEw7Ci0JU0lTZWcJICAgKnNlZ1AgPSBzaG1JbnZh bEJ1ZmZlcjsKLQotCS8qIE5lZWQgdG8gbG9jayBvdXQgYWRkaXRpb25zL3JlbW92YWxzIG9m IGJhY2tlbmRzICovCi0JTFdMb2NrQWNxdWlyZShTSW52YWxXcml0ZUxvY2ssIExXX1NIQVJF RCk7Ci0KLQlpZiAoYmFja2VuZElEID4gMCAmJiBiYWNrZW5kSUQgPD0gc2VnUC0+bGFzdEJh Y2tlbmQpCi0JewotCQlQcm9jU3RhdGUgICpzdGF0ZVAgPSAmc2VnUC0+cHJvY1N0YXRlW2Jh Y2tlbmRJRCAtIDFdOwotCi0JCXJlc3VsdCA9IHN0YXRlUC0+cHJvYzsKLQl9Ci0KLQlMV0xv Y2tSZWxlYXNlKFNJbnZhbFdyaXRlTG9jayk7Ci0KLQlyZXR1cm4gcmVzdWx0OwotfQotCi0v KgotICogQmFja2VuZElkR2V0VHJhbnNhY3Rpb25JZHMKLSAqCQlHZXQgdGhlIHhpZCwgeG1p biwgbnN1YnhpZCBhbmQgb3ZlcmZsb3cgc3RhdHVzIG9mIHRoZSBiYWNrZW5kLiBUaGUKLSAq CQlyZXN1bHQgbWF5IGJlIG91dCBvZiBkYXRlIGFyYml0cmFyaWx5IHF1aWNrbHksIHNvIHRo ZSBjYWxsZXIgbXVzdCBiZQotICoJCWNhcmVmdWwgYWJvdXQgaG93IHRoaXMgaW5mb3JtYXRp b24gaXMgdXNlZC4KLSAqLwotdm9pZAotQmFja2VuZElkR2V0VHJhbnNhY3Rpb25JZHMoaW50 IGJhY2tlbmRJRCwgVHJhbnNhY3Rpb25JZCAqeGlkLAotCQkJCQkJICAgVHJhbnNhY3Rpb25J ZCAqeG1pbiwgaW50ICpuc3VieGlkLCBib29sICpvdmVyZmxvd2VkKQotewotCVNJU2VnCSAg ICpzZWdQID0gc2htSW52YWxCdWZmZXI7Ci0KLQkqeGlkID0gSW52YWxpZFRyYW5zYWN0aW9u SWQ7Ci0JKnhtaW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKLQkqbnN1YnhpZCA9IDA7Ci0J Km92ZXJmbG93ZWQgPSBmYWxzZTsKLQotCS8qIE5lZWQgdG8gbG9jayBvdXQgYWRkaXRpb25z L3JlbW92YWxzIG9mIGJhY2tlbmRzICovCi0JTFdMb2NrQWNxdWlyZShTSW52YWxXcml0ZUxv Y2ssIExXX1NIQVJFRCk7Ci0KLQlpZiAoYmFja2VuZElEID4gMCAmJiBiYWNrZW5kSUQgPD0g c2VnUC0+bGFzdEJhY2tlbmQpCi0JewotCQlQcm9jU3RhdGUgICpzdGF0ZVAgPSAmc2VnUC0+ cHJvY1N0YXRlW2JhY2tlbmRJRCAtIDFdOwotCQlQR1BST0MJICAgKnByb2MgPSBzdGF0ZVAt PnByb2M7Ci0KLQkJaWYgKHByb2MgIT0gTlVMTCkKLQkJewotCQkJKnhpZCA9IHByb2MtPnhp ZDsKLQkJCSp4bWluID0gcHJvYy0+eG1pbjsKLQkJCSpuc3VieGlkID0gcHJvYy0+c3VieGlk U3RhdHVzLmNvdW50OwotCQkJKm92ZXJmbG93ZWQgPSBwcm9jLT5zdWJ4aWRTdGF0dXMub3Zl cmZsb3dlZDsKLQkJfQotCX0KLQotCUxXTG9ja1JlbGVhc2UoU0ludmFsV3JpdGVMb2NrKTsK LX0KLQogLyoKICAqIFNJSW5zZXJ0RGF0YUVudHJpZXMKICAqCQlBZGQgbmV3IGludmFsaWRh dGlvbiBtZXNzYWdlKHMpIHRvIHRoZSBidWZmZXIuCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL2xtZ3IvbG9jay5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xvY2su YwppbmRleCBjNzBhMWFkYjlhZC4uMDI1MmNhY2YwYTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdy L2xvY2suYwpAQCAtMzYyNSw3ICszNjI1LDcgQEAgR2V0TG9ja1N0YXR1c0RhdGEodm9pZCkK IAkJCQkJCQkJIHByb2MtPmZwUmVsSWRbZl0pOwogCQkJaW5zdGFuY2UtPmhvbGRNYXNrID0g bG9ja2JpdHMgPDwgRkFTVF9QQVRIX0xPQ0tOVU1CRVJfT0ZGU0VUOwogCQkJaW5zdGFuY2Ut PndhaXRMb2NrTW9kZSA9IE5vTG9jazsKLQkJCWluc3RhbmNlLT5iYWNrZW5kID0gcHJvYy0+ YmFja2VuZElkOworCQkJaW5zdGFuY2UtPmJhY2tlbmQgPSBHZXRCYWNrZW5kSWRGcm9tUEdQ cm9jKHByb2MpOwogCQkJaW5zdGFuY2UtPmx4aWQgPSBwcm9jLT5seGlkOwogCQkJaW5zdGFu Y2UtPnBpZCA9IHByb2MtPnBpZDsKIAkJCWluc3RhbmNlLT5sZWFkZXJQaWQgPSBwcm9jLT5w aWQ7CkBAIC0zNjUyLDE0ICszNjUyLDE0IEBAIEdldExvY2tTdGF0dXNEYXRhKHZvaWQpCiAJ CQkJCXJlcGFsbG9jKGRhdGEtPmxvY2tzLCBzaXplb2YoTG9ja0luc3RhbmNlRGF0YSkgKiBl bHMpOwogCQkJfQogCi0JCQl2eGlkLmJhY2tlbmRJZCA9IHByb2MtPmJhY2tlbmRJZDsKKwkJ CXZ4aWQuYmFja2VuZElkID0gR2V0QmFja2VuZElkRnJvbVBHUHJvYyhwcm9jKTsKIAkJCXZ4 aWQubG9jYWxUcmFuc2FjdGlvbklkID0gcHJvYy0+ZnBMb2NhbFRyYW5zYWN0aW9uSWQ7CiAK IAkJCWluc3RhbmNlID0gJmRhdGEtPmxvY2tzW2VsXTsKIAkJCVNFVF9MT0NLVEFHX1ZJUlRV QUxUUkFOU0FDVElPTihpbnN0YW5jZS0+bG9ja3RhZywgdnhpZCk7CiAJCQlpbnN0YW5jZS0+ aG9sZE1hc2sgPSBMT0NLQklUX09OKEV4Y2x1c2l2ZUxvY2spOwogCQkJaW5zdGFuY2UtPndh aXRMb2NrTW9kZSA9IE5vTG9jazsKLQkJCWluc3RhbmNlLT5iYWNrZW5kID0gcHJvYy0+YmFj a2VuZElkOworCQkJaW5zdGFuY2UtPmJhY2tlbmQgPSBHZXRCYWNrZW5kSWRGcm9tUEdQcm9j KHByb2MpOwogCQkJaW5zdGFuY2UtPmx4aWQgPSBwcm9jLT5seGlkOwogCQkJaW5zdGFuY2Ut PnBpZCA9IHByb2MtPnBpZDsKIAkJCWluc3RhbmNlLT5sZWFkZXJQaWQgPSBwcm9jLT5waWQ7 CkBAIC0zNzEyLDcgKzM3MTIsNyBAQCBHZXRMb2NrU3RhdHVzRGF0YSh2b2lkKQogCQkJaW5z dGFuY2UtPndhaXRMb2NrTW9kZSA9IHByb2MtPndhaXRMb2NrTW9kZTsKIAkJZWxzZQogCQkJ aW5zdGFuY2UtPndhaXRMb2NrTW9kZSA9IE5vTG9jazsKLQkJaW5zdGFuY2UtPmJhY2tlbmQg PSBwcm9jLT5iYWNrZW5kSWQ7CisJCWluc3RhbmNlLT5iYWNrZW5kID0gR2V0QmFja2VuZElk RnJvbVBHUHJvYyhwcm9jKTsKIAkJaW5zdGFuY2UtPmx4aWQgPSBwcm9jLT5seGlkOwogCQlp bnN0YW5jZS0+cGlkID0gcHJvYy0+cGlkOwogCQlpbnN0YW5jZS0+bGVhZGVyUGlkID0gcHJv Y2xvY2stPmdyb3VwTGVhZGVyLT5waWQ7CkBAIC0zODg4LDcgKzM4ODgsNyBAQCBHZXRTaW5n bGVQcm9jQmxvY2tlclN0YXR1c0RhdGEoUEdQUk9DICpibG9ja2VkX3Byb2MsIEJsb2NrZWRQ cm9jc0RhdGEgKmRhdGEpCiAJCQlpbnN0YW5jZS0+d2FpdExvY2tNb2RlID0gcHJvYy0+d2Fp dExvY2tNb2RlOwogCQllbHNlCiAJCQlpbnN0YW5jZS0+d2FpdExvY2tNb2RlID0gTm9Mb2Nr OwotCQlpbnN0YW5jZS0+YmFja2VuZCA9IHByb2MtPmJhY2tlbmRJZDsKKwkJaW5zdGFuY2Ut PmJhY2tlbmQgPSBHZXRCYWNrZW5kSWRGcm9tUEdQcm9jKHByb2MpOwogCQlpbnN0YW5jZS0+ bHhpZCA9IHByb2MtPmx4aWQ7CiAJCWluc3RhbmNlLT5waWQgPSBwcm9jLT5waWQ7CiAJCWlu c3RhbmNlLT5sZWFkZXJQaWQgPSBwcm9jbG9jay0+Z3JvdXBMZWFkZXItPnBpZDsKQEAgLTQz OTEsNyArNDM5MSw3IEBAIFZpcnR1YWxYYWN0TG9ja1RhYmxlSW5zZXJ0KFZpcnR1YWxUcmFu c2FjdGlvbklkIHZ4aWQpCiAKIAlMV0xvY2tBY3F1aXJlKCZNeVByb2MtPmZwSW5mb0xvY2ss IExXX0VYQ0xVU0lWRSk7CiAKLQlBc3NlcnQoTXlQcm9jLT5iYWNrZW5kSWQgPT0gdnhpZC5i YWNrZW5kSWQpOworCUFzc2VydChNeUJhY2tlbmRJZCA9PSB2eGlkLmJhY2tlbmRJZCk7CiAJ QXNzZXJ0KE15UHJvYy0+ZnBMb2NhbFRyYW5zYWN0aW9uSWQgPT0gSW52YWxpZExvY2FsVHJh bnNhY3Rpb25JZCk7CiAJQXNzZXJ0KE15UHJvYy0+ZnBWWElETG9jayA9PSBmYWxzZSk7CiAK QEAgLTQ0MTMsOCArNDQxMyw2IEBAIFZpcnR1YWxYYWN0TG9ja1RhYmxlQ2xlYW51cCh2b2lk KQogCWJvb2wJCWZhc3RwYXRoOwogCUxvY2FsVHJhbnNhY3Rpb25JZCBseGlkOwogCi0JQXNz ZXJ0KE15UHJvYy0+YmFja2VuZElkICE9IEludmFsaWRCYWNrZW5kSWQpOwotCiAJLyoKIAkg KiBDbGVhbiB1cCBzaGFyZWQgbWVtb3J5IHN0YXRlLgogCSAqLwpAQCAtNDU0MSw3ICs0NTM5 LDcgQEAgVmlydHVhbFhhY3RMb2NrKFZpcnR1YWxUcmFuc2FjdGlvbklkIHZ4aWQsIGJvb2wg d2FpdCkKIAkgKi8KIAlMV0xvY2tBY3F1aXJlKCZwcm9jLT5mcEluZm9Mb2NrLCBMV19FWENM VVNJVkUpOwogCi0JaWYgKHByb2MtPmJhY2tlbmRJZCAhPSB2eGlkLmJhY2tlbmRJZAorCWlm IChHZXRCYWNrZW5kSWRGcm9tUEdQcm9jKHByb2MpICE9IHZ4aWQuYmFja2VuZElkCiAJCXx8 IHByb2MtPmZwTG9jYWxUcmFuc2FjdGlvbklkICE9IHZ4aWQubG9jYWxUcmFuc2FjdGlvbklk KQogCXsKIAkJLyogVlhJRCBlbmRlZCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3Rv cmFnZS9sbWdyL3Byb2MuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKaW5k ZXggZDlkZWVmM2E5YmMuLmFjNTA5NmY0NWFhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9z dG9yYWdlL2xtZ3IvcHJvYy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9j LmMKQEAgLTIzOSwyNSArMjM5LDI1IEBAIEluaXRQcm9jR2xvYmFsKHZvaWQpCiAJCWlmIChp IDwgTWF4Q29ubmVjdGlvbnMpCiAJCXsKIAkJCS8qIFBHUFJPQyBmb3Igbm9ybWFsIGJhY2tl bmQsIGFkZCB0byBmcmVlUHJvY3MgbGlzdCAqLwotCQkJZGxpc3RfcHVzaF9oZWFkKCZQcm9j R2xvYmFsLT5mcmVlUHJvY3MsICZwcm9jLT5saW5rcyk7CisJCQlkbGlzdF9wdXNoX3RhaWwo JlByb2NHbG9iYWwtPmZyZWVQcm9jcywgJnByb2MtPmxpbmtzKTsKIAkJCXByb2MtPnByb2Nn bG9iYWxsaXN0ID0gJlByb2NHbG9iYWwtPmZyZWVQcm9jczsKIAkJfQogCQllbHNlIGlmIChp IDwgTWF4Q29ubmVjdGlvbnMgKyBhdXRvdmFjdXVtX21heF93b3JrZXJzICsgMSkKIAkJewog CQkJLyogUEdQUk9DIGZvciBBViBsYXVuY2hlci93b3JrZXIsIGFkZCB0byBhdXRvdmFjRnJl ZVByb2NzIGxpc3QgKi8KLQkJCWRsaXN0X3B1c2hfaGVhZCgmUHJvY0dsb2JhbC0+YXV0b3Zh Y0ZyZWVQcm9jcywgJnByb2MtPmxpbmtzKTsKKwkJCWRsaXN0X3B1c2hfdGFpbCgmUHJvY0ds b2JhbC0+YXV0b3ZhY0ZyZWVQcm9jcywgJnByb2MtPmxpbmtzKTsKIAkJCXByb2MtPnByb2Nn bG9iYWxsaXN0ID0gJlByb2NHbG9iYWwtPmF1dG92YWNGcmVlUHJvY3M7CiAJCX0KIAkJZWxz ZSBpZiAoaSA8IE1heENvbm5lY3Rpb25zICsgYXV0b3ZhY3V1bV9tYXhfd29ya2VycyArIDEg KyBtYXhfd29ya2VyX3Byb2Nlc3NlcykKIAkJewogCQkJLyogUEdQUk9DIGZvciBiZ3dvcmtl ciwgYWRkIHRvIGJnd29ya2VyRnJlZVByb2NzIGxpc3QgKi8KLQkJCWRsaXN0X3B1c2hfaGVh ZCgmUHJvY0dsb2JhbC0+Ymd3b3JrZXJGcmVlUHJvY3MsICZwcm9jLT5saW5rcyk7CisJCQlk bGlzdF9wdXNoX3RhaWwoJlByb2NHbG9iYWwtPmJnd29ya2VyRnJlZVByb2NzLCAmcHJvYy0+ bGlua3MpOwogCQkJcHJvYy0+cHJvY2dsb2JhbGxpc3QgPSAmUHJvY0dsb2JhbC0+Ymd3b3Jr ZXJGcmVlUHJvY3M7CiAJCX0KIAkJZWxzZSBpZiAoaSA8IE1heEJhY2tlbmRzKQogCQl7CiAJ CQkvKiBQR1BST0MgZm9yIHdhbHNlbmRlciwgYWRkIHRvIHdhbHNlbmRlckZyZWVQcm9jcyBs aXN0ICovCi0JCQlkbGlzdF9wdXNoX2hlYWQoJlByb2NHbG9iYWwtPndhbHNlbmRlckZyZWVQ cm9jcywgJnByb2MtPmxpbmtzKTsKKwkJCWRsaXN0X3B1c2hfdGFpbCgmUHJvY0dsb2JhbC0+ d2Fsc2VuZGVyRnJlZVByb2NzLCAmcHJvYy0+bGlua3MpOwogCQkJcHJvYy0+cHJvY2dsb2Jh bGxpc3QgPSAmUHJvY0dsb2JhbC0+d2Fsc2VuZGVyRnJlZVByb2NzOwogCQl9CiAKQEAgLTM1 MSw2ICszNTEsNyBAQCBJbml0UHJvY2Vzcyh2b2lkKQogCQkJCShlcnJjb2RlKEVSUkNPREVf VE9PX01BTllfQ09OTkVDVElPTlMpLAogCQkJCSBlcnJtc2coInNvcnJ5LCB0b28gbWFueSBj bGllbnRzIGFscmVhZHkiKSkpOwogCX0KKwlNeUJhY2tlbmRJZCA9IEdldEJhY2tlbmRJZEZy b21QR1Byb2MoTXlQcm9jKTsKIAogCS8qCiAJICogQ3Jvc3MtY2hlY2sgdGhhdCB0aGUgUEdQ Uk9DIGlzIG9mIHRoZSB0eXBlIHdlIGV4cGVjdDsgaWYgdGhpcyB3ZXJlIG5vdApAQCAtMzgw LDcgKzM4MSw2IEBAIEluaXRQcm9jZXNzKHZvaWQpCiAJTXlQcm9jLT54bWluID0gSW52YWxp ZFRyYW5zYWN0aW9uSWQ7CiAJTXlQcm9jLT5waWQgPSBNeVByb2NQaWQ7CiAJLyogYmFja2Vu ZElkLCBkYXRhYmFzZUlkIGFuZCByb2xlSWQgd2lsbCBiZSBmaWxsZWQgaW4gbGF0ZXIgKi8K LQlNeVByb2MtPmJhY2tlbmRJZCA9IEludmFsaWRCYWNrZW5kSWQ7CiAJTXlQcm9jLT5kYXRh YmFzZUlkID0gSW52YWxpZE9pZDsKIAlNeVByb2MtPnJvbGVJZCA9IEludmFsaWRPaWQ7CiAJ TXlQcm9jLT50ZW1wTmFtZXNwYWNlSWQgPSBJbnZhbGlkT2lkOwpAQCAtNTYxLDYgKzU2MSw3 IEBAIEluaXRBdXhpbGlhcnlQcm9jZXNzKHZvaWQpCiAJKCh2b2xhdGlsZSBQR1BST0MgKikg YXV4cHJvYyktPnBpZCA9IE15UHJvY1BpZDsKIAogCU15UHJvYyA9IGF1eHByb2M7CisJTXlC YWNrZW5kSWQgPSBHZXRCYWNrZW5kSWRGcm9tUEdQcm9jKE15UHJvYyk7CiAKIAlTcGluTG9j a1JlbGVhc2UoUHJvY1N0cnVjdExvY2spOwogCkBAIC01NzUsNyArNTc2LDYgQEAgSW5pdEF1 eGlsaWFyeVByb2Nlc3Modm9pZCkKIAlNeVByb2MtPmZwTG9jYWxUcmFuc2FjdGlvbklkID0g SW52YWxpZExvY2FsVHJhbnNhY3Rpb25JZDsKIAlNeVByb2MtPnhpZCA9IEludmFsaWRUcmFu c2FjdGlvbklkOwogCU15UHJvYy0+eG1pbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOwotCU15 UHJvYy0+YmFja2VuZElkID0gSW52YWxpZEJhY2tlbmRJZDsKIAlNeVByb2MtPmRhdGFiYXNl SWQgPSBJbnZhbGlkT2lkOwogCU15UHJvYy0+cm9sZUlkID0gSW52YWxpZE9pZDsKIAlNeVBy b2MtPnRlbXBOYW1lc3BhY2VJZCA9IEludmFsaWRPaWQ7CkBAIC05MDUsNiArOTA1LDcgQEAg UHJvY0tpbGwoaW50IGNvZGUsIERhdHVtIGFyZykKIAogCXByb2MgPSBNeVByb2M7CiAJTXlQ cm9jID0gTlVMTDsKKwlNeUJhY2tlbmRJZCA9IEludmFsaWRCYWNrZW5kSWQ7CiAJRGlzb3du TGF0Y2goJnByb2MtPnByb2NMYXRjaCk7CiAKIAlwcm9jZ2xvYmFsbGlzdCA9IHByb2MtPnBy b2NnbG9iYWxsaXN0OwpAQCAtOTc2LDYgKzk3Nyw3IEBAIEF1eGlsaWFyeVByb2NLaWxsKGlu dCBjb2RlLCBEYXR1bSBhcmcpCiAKIAlwcm9jID0gTXlQcm9jOwogCU15UHJvYyA9IE5VTEw7 CisJTXlCYWNrZW5kSWQgPSBJbnZhbGlkQmFja2VuZElkOwogCURpc293bkxhdGNoKCZwcm9j LT5wcm9jTGF0Y2gpOwogCiAJU3BpbkxvY2tBY3F1aXJlKFByb2NTdHJ1Y3RMb2NrKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L2JhY2tlbmRfc3RhdHVzLmMg Yi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9iYWNrZW5kX3N0YXR1cy5jCmluZGV4IDFh MTA1MGM4ZGExLi4zZDNmN2IwNjcyMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWN0aXZpdHkvYmFja2VuZF9zdGF0dXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rp dml0eS9iYWNrZW5kX3N0YXR1cy5jCkBAIC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSAicG9y dC9hdG9taWNzLmgiCQkvKiBmb3IgbWVtb3J5IGJhcnJpZXJzICovCiAjaW5jbHVkZSAic3Rv cmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIJCS8qIGZvciBNeVByb2Mg Ki8KKyNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv c2ludmFsYWR0LmgiCiAjaW5jbHVkZSAidXRpbHMvYXNjaWkuaCIKICNpbmNsdWRlICJ1dGls cy9iYWNrZW5kX3N0YXR1cy5oIgpAQCAtMjksMTMgKzMwLDEyIEBACiAvKiAtLS0tLS0tLS0t CiAgKiBUb3RhbCBudW1iZXIgb2YgYmFja2VuZHMgaW5jbHVkaW5nIGF1eGlsaWFyeQogICoK LSAqIFdlIHJlc2VydmUgYSBzbG90IGZvciBlYWNoIHBvc3NpYmxlIEJhY2tlbmRJZCwgcGx1 cyBvbmUgZm9yIGVhY2gKLSAqIHBvc3NpYmxlIGF1eGlsaWFyeSBwcm9jZXNzIHR5cGUuICAo VGhpcyBzY2hlbWUgYXNzdW1lcyB0aGVyZSBpcyBub3QKLSAqIG1vcmUgdGhhbiBvbmUgb2Yg YW55IGF1eGlsaWFyeSBwcm9jZXNzIHR5cGUgYXQgYSB0aW1lLikgTWF4QmFja2VuZHMKLSAq IGluY2x1ZGVzIGF1dG92YWN1dW0gd29ya2VycyBhbmQgYmFja2dyb3VuZCB3b3JrZXJzIGFz IHdlbGwuCisgKiBXZSByZXNlcnZlIGEgc2xvdCBmb3IgZWFjaCBwb3NzaWJsZSBQR1BST0Mg ZW50cnksIGluY2x1ZGluZyBhdXggcHJvY2Vzc2VzLgorICogKEJ1dCBub3QgaW5jbHVkaW5n IFBHUFJPQyBlbnRyaWVzIHJlc2VydmVkIGZvciBwcmVwYXJlZCB4YWN0czsgdGhleSBhcmUg bm90CisgKiByZWFsIHByb2Nlc3Nlcy4pCiAgKiAtLS0tLS0tLS0tCiAgKi8KLSNkZWZpbmUg TnVtQmFja2VuZFN0YXRTbG90cyAoTWF4QmFja2VuZHMgKyBOVU1fQVVYUFJPQ1RZUEVTKQor I2RlZmluZSBOdW1CYWNrZW5kU3RhdFNsb3RzIChNYXhCYWNrZW5kcyArIE5VTV9BVVhJTElB UllfUFJPQ1MpCiAKIAogLyogLS0tLS0tLS0tLQpAQCAtMjM4LDEwICsyMzgsOSBAQCBDcmVh dGVTaGFyZWRCYWNrZW5kU3RhdHVzKHZvaWQpCiAKIC8qCiAgKiBJbml0aWFsaXplIHBnc3Rh dHMgYmFja2VuZCBhY3Rpdml0eSBzdGF0ZSwgYW5kIHNldCB1cCBvdXIgb24tcHJvYy1leGl0 Ci0gKiBob29rLiAgQ2FsbGVkIGZyb20gSW5pdFBvc3RncmVzIGFuZCBBdXhpbGlhcnlQcm9j ZXNzTWFpbi4gRm9yIGF1eGlsaWFyeQotICogcHJvY2VzcywgTXlCYWNrZW5kSWQgaXMgaW52 YWxpZC4gT3RoZXJ3aXNlLCBNeUJhY2tlbmRJZCBtdXN0IGJlIHNldCwgYnV0IHdlCi0gKiBt dXN0IG5vdCBoYXZlIHN0YXJ0ZWQgYW55IHRyYW5zYWN0aW9uIHlldCAoc2luY2UgdGhlIGV4 aXQgaG9vayBtdXN0IHJ1bgotICogYWZ0ZXIgdGhlIGxhc3QgdHJhbnNhY3Rpb24gZXhpdCku CisgKiBob29rLiAgQ2FsbGVkIGZyb20gSW5pdFBvc3RncmVzIGFuZCBBdXhpbGlhcnlQcm9j ZXNzTWFpbi4gIE15QmFja2VuZElkIG11c3QKKyAqIGJlIHNldCwgYnV0IHdlIG11c3Qgbm90 IGhhdmUgc3RhcnRlZCBhbnkgdHJhbnNhY3Rpb24geWV0IChzaW5jZSB0aGUgZXhpdAorICog aG9vayBtdXN0IHJ1biBhZnRlciB0aGUgbGFzdCB0cmFuc2FjdGlvbiBleGl0KS4KICAqCiAg KiBOT1RFOiBNeURhdGFiYXNlSWQgaXNuJ3Qgc2V0IHlldDsgc28gdGhlIHNodXRkb3duIGhv b2sgaGFzIHRvIGJlIGNhcmVmdWwuCiAgKi8KQEAgLTI0OSwyNiArMjQ4LDkgQEAgdm9pZAog cGdzdGF0X2JlaW5pdCh2b2lkKQogewogCS8qIEluaXRpYWxpemUgTXlCRUVudHJ5ICovCi0J aWYgKE15QmFja2VuZElkICE9IEludmFsaWRCYWNrZW5kSWQpCi0JewotCQlBc3NlcnQoTXlC YWNrZW5kSWQgPj0gMSAmJiBNeUJhY2tlbmRJZCA8PSBNYXhCYWNrZW5kcyk7Ci0JCU15QkVF bnRyeSA9ICZCYWNrZW5kU3RhdHVzQXJyYXlbTXlCYWNrZW5kSWQgLSAxXTsKLQl9Ci0JZWxz ZQotCXsKLQkJLyogTXVzdCBiZSBhbiBhdXhpbGlhcnkgcHJvY2VzcyAqLwotCQlBc3NlcnQo TXlBdXhQcm9jVHlwZSAhPSBOb3RBbkF1eFByb2Nlc3MpOwotCi0JCS8qCi0JCSAqIEFzc2ln biB0aGUgTXlCRUVudHJ5IGZvciBhbiBhdXhpbGlhcnkgcHJvY2Vzcy4gIFNpbmNlIGl0IGRv ZXNuJ3QKLQkJICogaGF2ZSBhIEJhY2tlbmRJZCwgdGhlIHNsb3QgaXMgc3RhdGljYWxseSBh bGxvY2F0ZWQgYmFzZWQgb24gdGhlCi0JCSAqIGF1eGlsaWFyeSBwcm9jZXNzIHR5cGUgKE15 QXV4UHJvY1R5cGUpLiAgQmFja2VuZHMgdXNlIHNsb3RzIGluZGV4ZWQKLQkJICogaW4gdGhl IHJhbmdlIGZyb20gMCB0byBNYXhCYWNrZW5kcyAoZXhjbHVzaXZlKSwgc28gd2UgdXNlCi0J CSAqIE1heEJhY2tlbmRzICsgQXV4UHJvY1R5cGUgYXMgdGhlIGluZGV4IG9mIHRoZSBzbG90 IGZvciBhbiBhdXhpbGlhcnkKLQkJICogcHJvY2Vzcy4KLQkJICovCi0JCU15QkVFbnRyeSA9 ICZCYWNrZW5kU3RhdHVzQXJyYXlbTWF4QmFja2VuZHMgKyBNeUF1eFByb2NUeXBlXTsKLQl9 CisJQXNzZXJ0KE15QmFja2VuZElkICE9IEludmFsaWRCYWNrZW5kSWQpOworCUFzc2VydChN eUJhY2tlbmRJZCA+PSAxICYmIE15QmFja2VuZElkIDw9IE51bUJhY2tlbmRTdGF0U2xvdHMp OworCU15QkVFbnRyeSA9ICZCYWNrZW5kU3RhdHVzQXJyYXlbTXlCYWNrZW5kSWQgLSAxXTsK IAogCS8qIFNldCB1cCBhIHByb2Nlc3MtZXhpdCBob29rIHRvIGNsZWFuIHVwICovCiAJb25f c2htZW1fZXhpdChwZ3N0YXRfYmVzaHV0ZG93bl9ob29rLCAwKTsKQEAgLTI4MSwxMiArMjYz LDEyIEBAIHBnc3RhdF9iZWluaXQodm9pZCkKICAqCUluaXRpYWxpemUgdGhpcyBiYWNrZW5k J3MgZW50cnkgaW4gdGhlIFBnQmFja2VuZFN0YXR1cyBhcnJheS4KICAqCUNhbGxlZCBmcm9t IEluaXRQb3N0Z3Jlcy4KICAqCi0gKglBcGFydCBmcm9tIGF1eGlsaWFyeSBwcm9jZXNzZXMs IE15QmFja2VuZElkLCBNeURhdGFiYXNlSWQsCi0gKglzZXNzaW9uIHVzZXJpZCwgYW5kIGFw cGxpY2F0aW9uX25hbWUgbXVzdCBiZSBzZXQgZm9yIGEKLSAqCWJhY2tlbmQgKGhlbmNlLCB0 aGlzIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIHBnc3RhdF9iZWluaXQpLgotICoJTm90ZSBh bHNvIHRoYXQgd2UgbXVzdCBiZSBpbnNpZGUgYSB0cmFuc2FjdGlvbiBpZiB0aGlzIGlzbid0 IGFuIGF1eAotICoJcHJvY2VzcywgYXMgd2UgbWF5IG5lZWQgdG8gZG8gZW5jb2RpbmcgY29u dmVyc2lvbiBvbiBzb21lIHN0cmluZ3MuCi0gKiAtLS0tLS0tLS0tCisgKglBcGFydCBmcm9t IGF1eGlsaWFyeSBwcm9jZXNzZXMsIE15RGF0YWJhc2VJZCwgc2Vzc2lvbiB1c2VyaWQsIGFu ZAorICoJYXBwbGljYXRpb25fbmFtZSBtdXN0IGFscmVhZHkgYmUgc2V0IChoZW5jZSwgdGhp cyBjYW5ub3QgYmUgY29tYmluZWQKKyAqCXdpdGggcGdzdGF0X2JlaW5pdCkuICBOb3RlIGFs c28gdGhhdCB3ZSBtdXN0IGJlIGluc2lkZSBhIHRyYW5zYWN0aW9uCisgKglpZiB0aGlzIGlz bid0IGFuIGF1eCBwcm9jZXNzLCBhcyB3ZSBtYXkgbmVlZCB0byBkbyBlbmNvZGluZyBjb252 ZXJzaW9uCisgKglvbiBzb21lIHN0cmluZ3MuCisgKi0tLS0tLS0tLS0KICAqLwogdm9pZAog cGdzdGF0X2Jlc3RhcnQodm9pZCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9tY3h0ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tY3h0ZnVuY3MuYwppbmRl eCA0NzA4ZDczZjVmYS4uYzhjM2I4ZGJhZjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9tY3h0ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbWN4dGZ1 bmNzLmMKQEAgLTE1OSw3ICsxNTksNyBAQCBwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4 dHMoUEdfRlVOQ1RJT05fQVJHUykKIAkgKiBoYXZlIGEgdmFsaWQgYmFja2VuZCBpZC4KIAkg Ki8KIAlpZiAocHJvYyAhPSBOVUxMKQotCQliYWNrZW5kSWQgPSBwcm9jLT5iYWNrZW5kSWQ7 CisJCWJhY2tlbmRJZCA9IEdldEJhY2tlbmRJZEZyb21QR1Byb2MocHJvYyk7CiAJZWxzZQog CQlwcm9jID0gQXV4aWxpYXJ5UGlkR2V0UHJvYyhwaWQpOwogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9lcnJvci9jc3Zsb2cuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Vycm9y L2NzdmxvZy5jCmluZGV4IDFiNjJiMDdmMjMxLi42OTJlZTNjMTQ5MSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvZXJyb3IvY3N2bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvZXJyb3IvY3N2bG9nLmMKQEAgLTE1Miw4ICsxNTIsOCBAQCB3cml0ZV9jc3Zsb2coRXJy b3JEYXRhICplZGF0YSkKIAogCS8qIFZpcnR1YWwgdHJhbnNhY3Rpb24gaWQgKi8KIAkvKiBr ZWVwIFZYSUQgZm9ybWF0IGluIHN5bmMgd2l0aCBsb2NrZnVuY3MuYyAqLwotCWlmIChNeVBy b2MgIT0gTlVMTCAmJiBNeVByb2MtPmJhY2tlbmRJZCAhPSBJbnZhbGlkQmFja2VuZElkKQot CQlhcHBlbmRTdHJpbmdJbmZvKCZidWYsICIlZC8ldSIsIE15UHJvYy0+YmFja2VuZElkLCBN eVByb2MtPmx4aWQpOworCWlmIChNeVByb2MgIT0gTlVMTCkKKwkJYXBwZW5kU3RyaW5nSW5m bygmYnVmLCAiJWQvJXUiLCBNeUJhY2tlbmRJZCwgTXlQcm9jLT5seGlkKTsKIAlhcHBlbmRT dHJpbmdJbmZvQ2hhcigmYnVmLCAnLCcpOwogCiAJLyogVHJhbnNhY3Rpb24gaWQgKi8KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2Vsb2cuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL2Vycm9yL2Vsb2cuYwppbmRleCAyYzdhMjBlM2QzMS4uMTAyNDlmMTQwZmUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2Vsb2cuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9lcnJvci9lbG9nLmMKQEAgLTMwNzQsMTggKzMwNzQsMTggQEAgbG9nX3N0 YXR1c19mb3JtYXQoU3RyaW5nSW5mbyBidWYsIGNvbnN0IGNoYXIgKmZvcm1hdCwgRXJyb3JE YXRhICplZGF0YSkKIAkJCQlicmVhazsKIAkJCWNhc2UgJ3YnOgogCQkJCS8qIGtlZXAgVlhJ RCBmb3JtYXQgaW4gc3luYyB3aXRoIGxvY2tmdW5jcy5jICovCi0JCQkJaWYgKE15UHJvYyAh PSBOVUxMICYmIE15UHJvYy0+YmFja2VuZElkICE9IEludmFsaWRCYWNrZW5kSWQpCisJCQkJ aWYgKE15UHJvYyAhPSBOVUxMKQogCQkJCXsKIAkJCQkJaWYgKHBhZGRpbmcgIT0gMCkKIAkJ CQkJewogCQkJCQkJY2hhcgkJc3RyZmJ1ZlsxMjhdOwogCiAJCQkJCQlzbnByaW50ZihzdHJm YnVmLCBzaXplb2Yoc3RyZmJ1ZikgLSAxLCAiJWQvJXUiLAotCQkJCQkJCQkgTXlQcm9jLT5i YWNrZW5kSWQsIE15UHJvYy0+bHhpZCk7CisJCQkJCQkJCSBNeUJhY2tlbmRJZCwgTXlQcm9j LT5seGlkKTsKIAkJCQkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiJSpzIiwgcGFkZGluZywg c3RyZmJ1Zik7CiAJCQkJCX0KIAkJCQkJZWxzZQotCQkJCQkJYXBwZW5kU3RyaW5nSW5mbyhi dWYsICIlZC8ldSIsIE15UHJvYy0+YmFja2VuZElkLCBNeVByb2MtPmx4aWQpOworCQkJCQkJ YXBwZW5kU3RyaW5nSW5mbyhidWYsICIlZC8ldSIsIE15QmFja2VuZElkLCBNeVByb2MtPmx4 aWQpOwogCQkJCX0KIAkJCQllbHNlIGlmIChwYWRkaW5nICE9IDApCiAJCQkJCWFwcGVuZFN0 cmluZ0luZm9TcGFjZXMoYnVmLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvZXJy b3IvanNvbmxvZy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvZXJyb3IvanNvbmxvZy5jCmluZGV4 IDI5MDM1NjFmMWM0Li4zZWJlMGI3YjEzYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvZXJyb3IvanNvbmxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2pzb25s b2cuYwpAQCAtMTk3LDggKzE5Nyw4IEBAIHdyaXRlX2pzb25sb2coRXJyb3JEYXRhICplZGF0 YSkKIAogCS8qIFZpcnR1YWwgdHJhbnNhY3Rpb24gaWQgKi8KIAkvKiBrZWVwIFZYSUQgZm9y bWF0IGluIHN5bmMgd2l0aCBsb2NrZnVuY3MuYyAqLwotCWlmIChNeVByb2MgIT0gTlVMTCAm JiBNeVByb2MtPmJhY2tlbmRJZCAhPSBJbnZhbGlkQmFja2VuZElkKQotCQlhcHBlbmRKU09O S2V5VmFsdWVGbXQoJmJ1ZiwgInZ4aWQiLCB0cnVlLCAiJWQvJXUiLCBNeVByb2MtPmJhY2tl bmRJZCwKKwlpZiAoTXlQcm9jICE9IE5VTEwpCisJCWFwcGVuZEpTT05LZXlWYWx1ZUZtdCgm YnVmLCAidnhpZCIsIHRydWUsICIlZC8ldSIsIE15QmFja2VuZElkLAogCQkJCQkJCSAgTXlQ cm9jLT5seGlkKTsKIAogCS8qIFRyYW5zYWN0aW9uIGlkICovCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMgYi9zcmMvYmFja2VuZC91dGlscy9pbml0 L3Bvc3Rpbml0LmMKaW5kZXggMWFkMzM2NzE1OTguLmU4MjJjZDYxZDVmIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvaW5pdC9wb3N0aW5pdC5jCkBAIC03NDAsMTggKzc0MCwxMCBAQCBJbml0UG9zdGdy ZXMoY29uc3QgY2hhciAqaW5fZGJuYW1lLCBPaWQgZGJvaWQsCiAJLyoKIAkgKiBJbml0aWFs aXplIG15IGVudHJ5IGluIHRoZSBzaGFyZWQtaW52YWxpZGF0aW9uIG1hbmFnZXIncyBhcnJh eSBvZgogCSAqIHBlci1iYWNrZW5kIGRhdGEuCi0JICoKLQkgKiBTZXRzIHVwIE15QmFja2Vu ZElkLCBhIHVuaXF1ZSBiYWNrZW5kIGlkZW50aWZpZXIuCiAJICovCi0JTXlCYWNrZW5kSWQg PSBJbnZhbGlkQmFja2VuZElkOwotCiAJU2hhcmVkSW52YWxCYWNrZW5kSW5pdChmYWxzZSk7 CiAKLQlpZiAoTXlCYWNrZW5kSWQgPiBNYXhCYWNrZW5kcyB8fCBNeUJhY2tlbmRJZCA8PSAw KQotCQllbG9nKEZBVEFMLCAiYmFkIGJhY2tlbmQgSUQ6ICVkIiwgTXlCYWNrZW5kSWQpOwot Ci0JLyogTm93IHRoYXQgd2UgaGF2ZSBhIEJhY2tlbmRJZCwgd2UgY2FuIHBhcnRpY2lwYXRl IGluIFByb2NTaWduYWwgKi8KLQlQcm9jU2lnbmFsSW5pdChNeUJhY2tlbmRJZCk7CisJUHJv Y1NpZ25hbEluaXQoKTsKIAogCS8qCiAJICogQWxzbyBzZXQgdXAgdGltZW91dCBoYW5kbGVy cyBuZWVkZWQgZm9yIGJhY2tlbmQgb3BlcmF0aW9uLiAgV2UgbmVlZApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMgYi9zcmMvYmFja2VuZC91dGlscy90 aW1lL3NuYXBtZ3IuYwppbmRleCA2NzVlODFkODJkNy4uOTRkZGY2OGZhNTIgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUvc25hcG1nci5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL3RpbWUvc25hcG1nci5jCkBAIC0xMTU0LDcgKzExNTQsNyBAQCBFeHBvcnRTbmFw c2hvdChTbmFwc2hvdCBzbmFwc2hvdCkKIAkgKiBpbnNpZGUgdGhlIHRyYW5zYWN0aW9uIGZy b20gMS4KIAkgKi8KIAlzbnByaW50ZihwYXRoLCBzaXplb2YocGF0aCksIFNOQVBTSE9UX0VY UE9SVF9ESVIgIi8lMDhYLSUwOFgtJWQiLAotCQkJIE15UHJvYy0+YmFja2VuZElkLCBNeVBy b2MtPmx4aWQsIGxpc3RfbGVuZ3RoKGV4cG9ydGVkU25hcHNob3RzKSArIDEpOworCQkJIE15 QmFja2VuZElkLCBNeVByb2MtPmx4aWQsIGxpc3RfbGVuZ3RoKGV4cG9ydGVkU25hcHNob3Rz KSArIDEpOwogCiAJLyoKIAkgKiBDb3B5IHRoZSBzbmFwc2hvdCBpbnRvIFRvcFRyYW5zYWN0 aW9uQ29udGV4dCwgYWRkIGl0IHRvIHRoZQpAQCAtMTE4MSw3ICsxMTgxLDcgQEAgRXhwb3J0 U25hcHNob3QoU25hcHNob3Qgc25hcHNob3QpCiAJICovCiAJaW5pdFN0cmluZ0luZm8oJmJ1 Zik7CiAKLQlhcHBlbmRTdHJpbmdJbmZvKCZidWYsICJ2eGlkOiVkLyV1XG4iLCBNeVByb2Mt PmJhY2tlbmRJZCwgTXlQcm9jLT5seGlkKTsKKwlhcHBlbmRTdHJpbmdJbmZvKCZidWYsICJ2 eGlkOiVkLyV1XG4iLCBNeUJhY2tlbmRJZCwgTXlQcm9jLT5seGlkKTsKIAlhcHBlbmRTdHJp bmdJbmZvKCZidWYsICJwaWQ6JWRcbiIsIE15UHJvY1BpZCk7CiAJYXBwZW5kU3RyaW5nSW5m bygmYnVmLCAiZGJpZDoldVxuIiwgTXlEYXRhYmFzZUlkKTsKIAlhcHBlbmRTdHJpbmdJbmZv KCZidWYsICJpc286JWRcbiIsIFhhY3RJc29MZXZlbCk7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9taXNjYWRtaW4uaCBiL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCmluZGV4IDBiMDFj MWYwOTM1Li5jYmRjNjFiODU3NiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbWlzY2FkbWlu LmgKKysrIGIvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKQEAgLTQ0NCw4ICs0NDQsNiBAQCB0 eXBlZGVmIGVudW0KIAlXYWxXcml0ZXJQcm9jZXNzLAogCVdhbFJlY2VpdmVyUHJvY2VzcywK IAlXYWxTdW1tYXJpemVyUHJvY2VzcywKLQotCU5VTV9BVVhQUk9DVFlQRVMJCQkvKiBNdXN0 IGJlIGxhc3QhICovCiB9IEF1eFByb2NUeXBlOwogCiBleHRlcm4gUEdETExJTVBPUlQgQXV4 UHJvY1R5cGUgTXlBdXhQcm9jVHlwZTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3Jh Z2UvYmFja2VuZGlkLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2JhY2tlbmRpZC5oCmluZGV4 IDUwYWM5ODJkYTE5Li4wMTM4NzcyM2Y3OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3Rv cmFnZS9iYWNrZW5kaWQuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2JhY2tlbmRpZC5o CkBAIC0xNCwxMSArMTQsMTUgQEAKICNpZm5kZWYgQkFDS0VORElEX0gKICNkZWZpbmUgQkFD S0VORElEX0gKIAotLyogLS0tLS0tLS0tLS0tLS0tLQotICoJCS1jaW0gOC8xNy85MAotICog LS0tLS0tLS0tLS0tLS0tLQorLyoKKyAqIEJhY2tlbmRJZCB1bmlxdWVseSBpZGVudGlmaWVz IGFuIGFjdGl2ZSBiYWNrZW5kIG9yIGF1eGlsaWFyeSBwcm9jZXNzLiAgSXQncworICogYXNz aWduZWQgYXQgYmFja2VuZCBzdGFydHVwIGFmdGVyIGF1dGhlbnRpY2F0aW9uLiAgTm90ZSB0 aGF0IGEgYmFja2VuZCBJRAorICogY2FuIGJlIHJldXNlZCBmb3IgYSBkaWZmZXJlbnQgYmFj a2VuZCBpbW1lZGlhdGVseSBhZnRlciBhIGJhY2tlbmQgZXhpdHMuCisgKgorICogQmFja2Vu ZCBJRHMgYXJlIGFzc2lnbmVkIHN0YXJ0aW5nIGZyb20gMS4gRm9yIGhpc3RvcmljYWwgcmVh c29ucywgQmFja2VuZElkCisgKiAwIGlzIHVudXNlZCwgYnV0IEludmFsaWRCYWNrZW5kSWQg aXMgZGVmaW5lZCBhcyAtMS4KICAqLwotdHlwZWRlZiBpbnQgQmFja2VuZElkOwkJCS8qIHVu aXF1ZSBjdXJyZW50bHkgYWN0aXZlIGJhY2tlbmQgaWRlbnRpZmllciAqLwordHlwZWRlZiBp bnQgQmFja2VuZElkOwogCiAjZGVmaW5lIEludmFsaWRCYWNrZW5kSWQJCSgtMSkKIApkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9sb2NrLmggYi9zcmMvaW5jbHVkZS9zdG9y YWdlL2xvY2suaAppbmRleCBlZDYwNzFmMzI4Ni4uMDNhOTIwYjIyNTQgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG9jay5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv bG9jay5oCkBAIC03NSw3ICs3NSw3IEBAIHR5cGVkZWYgc3RydWN0CiAJKCh2eGlkKS5iYWNr ZW5kSWQgPSBJbnZhbGlkQmFja2VuZElkLCBcCiAJICh2eGlkKS5sb2NhbFRyYW5zYWN0aW9u SWQgPSBJbnZhbGlkTG9jYWxUcmFuc2FjdGlvbklkKQogI2RlZmluZSBHRVRfVlhJRF9GUk9N X1BHUFJPQyh2eGlkLCBwcm9jKSBcCi0JKCh2eGlkKS5iYWNrZW5kSWQgPSAocHJvYykuYmFj a2VuZElkLCBcCisJKCh2eGlkKS5iYWNrZW5kSWQgPSBHZXRCYWNrZW5kSWRGcm9tUEdQcm9j KCYocHJvYykpLCBcCiAJICh2eGlkKS5sb2NhbFRyYW5zYWN0aW9uSWQgPSAocHJvYykubHhp ZCkKIAogLyogTUFYX0xPQ0tNT0RFUyBjYW5ub3QgYmUgbGFyZ2VyIHRoYW4gdGhlICMgb2Yg Yml0cyBpbiBMT0NLTUFTSyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9w cm9jLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaAppbmRleCAzN2NmOGI0MDY3ZC4u MGQ0MjRhMzMzNGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCisr KyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCkBAIC0xOTUsNyArMTk1LDYgQEAgc3Ry dWN0IFBHUFJPQwogCQkJCQkJCQkgKiBkYXRhIG1pcnJvcmVkIGZyb20gdGhpcyBQR1BST0Mg Ki8KIAogCS8qIFRoZXNlIGZpZWxkcyBhcmUgemVybyB3aGlsZSBhIGJhY2tlbmQgaXMgc3Rp bGwgc3RhcnRpbmcgdXA6ICovCi0JQmFja2VuZElkCWJhY2tlbmRJZDsJCS8qIFRoaXMgYmFj a2VuZCdzIGJhY2tlbmQgSUQgKGlmIGFzc2lnbmVkKSAqLwogCU9pZAkJCWRhdGFiYXNlSWQ7 CQkvKiBPSUQgb2YgZGF0YWJhc2UgdGhpcyBiYWNrZW5kIGlzIHVzaW5nICovCiAJT2lkCQkJ cm9sZUlkOwkJCS8qIE9JRCBvZiByb2xlIHVzaW5nIHRoaXMgYmFja2VuZCAqLwogCkBAIC00 MDUsOSArNDA0LDE2IEBAIGV4dGVybiBQR0RMTElNUE9SVCBQUk9DX0hEUiAqUHJvY0dsb2Jh bDsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIFBHUFJPQyAqUHJlcGFyZWRYYWN0UHJvY3M7CiAK LS8qIEFjY2Vzc29yIGZvciBQR1BST0MgZ2l2ZW4gYSBwZ3Byb2Nuby4gKi8KKy8qCisgKiBB Y2Nlc3NvcnMgZm9yIGdldHRpbmcgUEdQUk9DIGdpdmVuIGEgcGdwcm9jbm8gb3IgQmFja2Vu ZElkLCBhbmQgdmljZSB2ZXJzYS4KKyAqCisgKiBGb3IgaGlzdG9yaWNhbCByZWFzb25zLCBz b21lIGNvZGUgdXNlcyAwLWJhc2VkICJwcm9jIG51bWJlcnMiLCB3aGlsZSBvdGhlcgorICog Y29kZSB1c2VzIDEtYmFzZWQgYmFja2VuZCBJRHMuCisgKi8KICNkZWZpbmUgR2V0UEdQcm9j QnlOdW1iZXIobikgKCZQcm9jR2xvYmFsLT5hbGxQcm9jc1sobildKQogI2RlZmluZSBHZXRO dW1iZXJGcm9tUEdQcm9jKHByb2MpICgocHJvYykgLSAmUHJvY0dsb2JhbC0+YWxsUHJvY3Nb MF0pCisjZGVmaW5lIEdldFBHUHJvY0J5QmFja2VuZElkKG4pICgmUHJvY0dsb2JhbC0+YWxs UHJvY3NbKG4pIC0gMV0pCisjZGVmaW5lIEdldEJhY2tlbmRJZEZyb21QR1Byb2MocHJvYykg KEdldE51bWJlckZyb21QR1Byb2MocHJvYykgKyAxKQogCiAvKgogICogV2Ugc2V0IGFzaWRl IHNvbWUgZXh0cmEgUEdQUk9DIHN0cnVjdHVyZXMgZm9yIGF1eGlsaWFyeSBwcm9jZXNzZXMs CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NhcnJheS5oIGIvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9wcm9jYXJyYXkuaAppbmRleCBmM2ViYTliNzY0MC4uM2FmNzU3N2U4 YzYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY2FycmF5LmgKKysrIGIv c3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jYXJyYXkuaApAQCAtNjQsNiArNjQsMTAgQEAgZXh0 ZXJuIFZpcnR1YWxUcmFuc2FjdGlvbklkICpHZXRWaXJ0dWFsWElEc0RlbGF5aW5nQ2hrcHQo aW50ICpudnhpZHMsIGludCB0eXBlKTsKIGV4dGVybiBib29sIEhhdmVWaXJ0dWFsWElEc0Rl bGF5aW5nQ2hrcHQoVmlydHVhbFRyYW5zYWN0aW9uSWQgKnZ4aWRzLAogCQkJCQkJCQkJCSBp bnQgbnZ4aWRzLCBpbnQgdHlwZSk7CiAKK2V4dGVybiBQR1BST0MgKkJhY2tlbmRJZEdldFBy b2MoaW50IGJhY2tlbmRJRCk7CitleHRlcm4gdm9pZCBCYWNrZW5kSWRHZXRUcmFuc2FjdGlv bklkcyhpbnQgYmFja2VuZElELCBUcmFuc2FjdGlvbklkICp4aWQsCisJCQkJCQkJCQkgICBU cmFuc2FjdGlvbklkICp4bWluLCBpbnQgKm5zdWJ4aWQsCisJCQkJCQkJCQkgICBib29sICpv dmVyZmxvd2VkKTsKIGV4dGVybiBQR1BST0MgKkJhY2tlbmRQaWRHZXRQcm9jKGludCBwaWQp OwogZXh0ZXJuIFBHUFJPQyAqQmFja2VuZFBpZEdldFByb2NXaXRoTG9jayhpbnQgcGlkKTsK IGV4dGVybiBpbnQJQmFja2VuZFhpZEdldFBpZChUcmFuc2FjdGlvbklkIHhpZCk7CmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaCBiL3NyYy9pbmNsdWRl L3N0b3JhZ2UvcHJvY3NpZ25hbC5oCmluZGV4IDUyZGNiNGMyYWRmLi5mZWJkZGEzNjExYyAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKKysrIGIvc3Jj L2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKQEAgLTYyLDcgKzYyLDcgQEAgdHlwZWRl ZiBlbnVtCiBleHRlcm4gU2l6ZSBQcm9jU2lnbmFsU2htZW1TaXplKHZvaWQpOwogZXh0ZXJu IHZvaWQgUHJvY1NpZ25hbFNobWVtSW5pdCh2b2lkKTsKIAotZXh0ZXJuIHZvaWQgUHJvY1Np Z25hbEluaXQoaW50IHBzc19pZHgpOworZXh0ZXJuIHZvaWQgUHJvY1NpZ25hbEluaXQodm9p ZCk7CiBleHRlcm4gaW50CVNlbmRQcm9jU2lnbmFsKHBpZF90IHBpZCwgUHJvY1NpZ25hbFJl YXNvbiByZWFzb24sCiAJCQkJCQkgICBCYWNrZW5kSWQgYmFja2VuZElkKTsKIApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaW52YWxhZHQuaCBiL3NyYy9pbmNsdWRlL3N0 b3JhZ2Uvc2ludmFsYWR0LmgKaW5kZXggYWEzZDIwM2VmY2EuLmMzYzk3YjNmOGI3IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3NpbnZhbGFkdC5oCisrKyBiL3NyYy9pbmNs dWRlL3N0b3JhZ2Uvc2ludmFsYWR0LmgKQEAgLTMxLDEwICszMSw2IEBACiBleHRlcm4gU2l6 ZSBTSW52YWxTaG1lbVNpemUodm9pZCk7CiBleHRlcm4gdm9pZCBDcmVhdGVTaGFyZWRJbnZh bGlkYXRpb25TdGF0ZSh2b2lkKTsKIGV4dGVybiB2b2lkIFNoYXJlZEludmFsQmFja2VuZElu aXQoYm9vbCBzZW5kT25seSk7Ci1leHRlcm4gUEdQUk9DICpCYWNrZW5kSWRHZXRQcm9jKGlu dCBiYWNrZW5kSUQpOwotZXh0ZXJuIHZvaWQgQmFja2VuZElkR2V0VHJhbnNhY3Rpb25JZHMo aW50IGJhY2tlbmRJRCwgVHJhbnNhY3Rpb25JZCAqeGlkLAotCQkJCQkJCQkJICAgVHJhbnNh Y3Rpb25JZCAqeG1pbiwgaW50ICpuc3VieGlkLAotCQkJCQkJCQkJICAgYm9vbCAqb3ZlcmZs b3dlZCk7CiAKIGV4dGVybiB2b2lkIFNJSW5zZXJ0RGF0YUVudHJpZXMoY29uc3QgU2hhcmVk SW52YWxpZGF0aW9uTWVzc2FnZSAqZGF0YSwgaW50IG4pOwogZXh0ZXJuIGludAlTSUdldERh dGFFbnRyaWVzKFNoYXJlZEludmFsaWRhdGlvbk1lc3NhZ2UgKmRhdGEsIGludCBkYXRhc2l6 ZSk7Ci0tIAoyLjM5LjIKCg== --------------Rwaxn7iHyg7hsWq1khSGJm6k Content-Type: text/x-patch; charset=UTF-8; name="v7-0003-Remove-MyAuxProcType-use-MyBackendType-instead.patch" Content-Disposition: attachment; filename*0="v7-0003-Remove-MyAuxProcType-use-MyBackendType-instead.patch" Content-Transfer-Encoding: base64 RnJvbSBjMDg3YTk0YWJjOWVjOWE3OTVmODQ5OWQ1ZjZmYjUyNGY1OTgyNGE1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFdlZCwgMjQgSmFuIDIwMjQgMjI6NTI6NTAgKzAyMDAK U3ViamVjdDogW1BBVENIIHY3IDMvNF0gUmVtb3ZlIE15QXV4UHJvY1R5cGUsIHVzZSBNeUJh Y2tlbmRUeXBlIGluc3RlYWQKCk15QXV4UHJvY1R5cGUgd2FzIHJlZHVuZGFudCB3aXRoIE15 QmFja2VuZFR5cGUuCgpSZXZpZXdlZC1ieTogWFhYCkRpc2N1c3Npb246IFhYWAotLS0KIHNy Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5jIHwgNjAgKysrKysrLS0tLS0tLS0t LS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMgfCAzNiAr KysrKysrLS0tLS0tLS0KIHNyYy9pbmNsdWRlL21pc2NhZG1pbi5oICAgICAgICAgICAgIHwg NjggKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL3Bvc3RtYXN0 ZXIvYXV4cHJvY2Vzcy5oIHwgIDIgKy0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0ICAgIHwgIDEgLQogNSBmaWxlcyBjaGFuZ2VkLCA2NCBpbnNlcnRpb25zKCspLCAxMDMg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXhw cm9jZXNzLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1eHByb2Nlc3MuYwppbmRleCAz OTE3MWZlYTA2Yi4uNTQ5M2E1ZjFlZjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvYXV4cHJvY2Vzcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV4cHJv Y2Vzcy5jCkBAIC0zOCwxNCArMzgsNiBAQAogc3RhdGljIHZvaWQgU2h1dGRvd25BdXhpbGlh cnlQcm9jZXNzKGludCBjb2RlLCBEYXR1bSBhcmcpOwogCiAKLS8qIC0tLS0tLS0tLS0tLS0t LS0KLSAqCQlnbG9iYWwgdmFyaWFibGVzCi0gKiAtLS0tLS0tLS0tLS0tLS0tCi0gKi8KLQot QXV4UHJvY1R5cGUgTXlBdXhQcm9jVHlwZSA9IE5vdEFuQXV4UHJvY2VzczsJLyogZGVjbGFy ZWQgaW4gbWlzY2FkbWluLmggKi8KLQotCiAvKgogICoJIEF1eGlsaWFyeVByb2Nlc3NNYWlu CiAgKgpAQCAtNTUsMzkgKzQ3LDEzIEBAIEF1eFByb2NUeXBlIE15QXV4UHJvY1R5cGUgPSBO b3RBbkF1eFByb2Nlc3M7CS8qIGRlY2xhcmVkIGluIG1pc2NhZG1pbi5oICovCiAgKgkgVGhp cyBjb2RlIGlzIGhlcmUganVzdCBiZWNhdXNlIG9mIGhpc3RvcmljYWwgcmVhc29ucy4KICAq Lwogdm9pZAotQXV4aWxpYXJ5UHJvY2Vzc01haW4oQXV4UHJvY1R5cGUgYXV4dHlwZSkKK0F1 eGlsaWFyeVByb2Nlc3NNYWluKEJhY2tlbmRUeXBlIGF1eHR5cGUpCiB7CiAJQXNzZXJ0KElz VW5kZXJQb3N0bWFzdGVyKTsKIAotCU15QXV4UHJvY1R5cGUgPSBhdXh0eXBlOwotCi0Jc3dp dGNoIChNeUF1eFByb2NUeXBlKQotCXsKLQkJY2FzZSBTdGFydHVwUHJvY2VzczoKLQkJCU15 QmFja2VuZFR5cGUgPSBCX1NUQVJUVVA7Ci0JCQlicmVhazsKLQkJY2FzZSBBcmNoaXZlclBy b2Nlc3M6Ci0JCQlNeUJhY2tlbmRUeXBlID0gQl9BUkNISVZFUjsKLQkJCWJyZWFrOwotCQlj YXNlIEJnV3JpdGVyUHJvY2VzczoKLQkJCU15QmFja2VuZFR5cGUgPSBCX0JHX1dSSVRFUjsK LQkJCWJyZWFrOwotCQljYXNlIENoZWNrcG9pbnRlclByb2Nlc3M6Ci0JCQlNeUJhY2tlbmRU eXBlID0gQl9DSEVDS1BPSU5URVI7Ci0JCQlicmVhazsKLQkJY2FzZSBXYWxXcml0ZXJQcm9j ZXNzOgotCQkJTXlCYWNrZW5kVHlwZSA9IEJfV0FMX1dSSVRFUjsKLQkJCWJyZWFrOwotCQlj YXNlIFdhbFJlY2VpdmVyUHJvY2VzczoKLQkJCU15QmFja2VuZFR5cGUgPSBCX1dBTF9SRUNF SVZFUjsKLQkJCWJyZWFrOwotCQljYXNlIFdhbFN1bW1hcml6ZXJQcm9jZXNzOgotCQkJTXlC YWNrZW5kVHlwZSA9IEJfV0FMX1NVTU1BUklaRVI7Ci0JCQlicmVhazsKLQkJZGVmYXVsdDoK LQkJCWVsb2coUEFOSUMsICJ1bnJlY29nbml6ZWQgcHJvY2VzcyB0eXBlOiAlZCIsIChpbnQp IE15QXV4UHJvY1R5cGUpOwotCQkJTXlCYWNrZW5kVHlwZSA9IEJfSU5WQUxJRDsKLQl9CisJ TXlCYWNrZW5kVHlwZSA9IGF1eHR5cGU7CisJaWYgKCFJc0F1eFByb2Nlc3MoTXlCYWNrZW5k VHlwZSkpCisJCWVsb2coUEFOSUMsICJ1bnJlY29nbml6ZWQgcHJvY2VzcyB0eXBlOiAlZCIs IChpbnQpIE15QmFja2VuZFR5cGUpOwogCiAJaW5pdF9wc19kaXNwbGF5KE5VTEwpOwogCkBA IC0xMjYsMzggKzkyLDM4IEBAIEF1eGlsaWFyeVByb2Nlc3NNYWluKEF1eFByb2NUeXBlIGF1 eHR5cGUpCiAKIAlTZXRQcm9jZXNzaW5nTW9kZShOb3JtYWxQcm9jZXNzaW5nKTsKIAotCXN3 aXRjaCAoTXlBdXhQcm9jVHlwZSkKKwlzd2l0Y2ggKE15QmFja2VuZFR5cGUpCiAJewotCQlj YXNlIFN0YXJ0dXBQcm9jZXNzOgorCQljYXNlIEJfU1RBUlRVUDoKIAkJCVN0YXJ0dXBQcm9j ZXNzTWFpbigpOwogCQkJcHJvY19leGl0KDEpOwogCi0JCWNhc2UgQXJjaGl2ZXJQcm9jZXNz OgorCQljYXNlIEJfQVJDSElWRVI6CiAJCQlQZ0FyY2hpdmVyTWFpbigpOwogCQkJcHJvY19l eGl0KDEpOwogCi0JCWNhc2UgQmdXcml0ZXJQcm9jZXNzOgorCQljYXNlIEJfQkdfV1JJVEVS OgogCQkJQmFja2dyb3VuZFdyaXRlck1haW4oKTsKIAkJCXByb2NfZXhpdCgxKTsKIAotCQlj YXNlIENoZWNrcG9pbnRlclByb2Nlc3M6CisJCWNhc2UgQl9DSEVDS1BPSU5URVI6CiAJCQlD aGVja3BvaW50ZXJNYWluKCk7CiAJCQlwcm9jX2V4aXQoMSk7CiAKLQkJY2FzZSBXYWxXcml0 ZXJQcm9jZXNzOgorCQljYXNlIEJfV0FMX1dSSVRFUjoKIAkJCVdhbFdyaXRlck1haW4oKTsK IAkJCXByb2NfZXhpdCgxKTsKIAotCQljYXNlIFdhbFJlY2VpdmVyUHJvY2VzczoKKwkJY2Fz ZSBCX1dBTF9SRUNFSVZFUjoKIAkJCVdhbFJlY2VpdmVyTWFpbigpOwogCQkJcHJvY19leGl0 KDEpOwogCi0JCWNhc2UgV2FsU3VtbWFyaXplclByb2Nlc3M6CisJCWNhc2UgQl9XQUxfU1VN TUFSSVpFUjoKIAkJCVdhbFN1bW1hcml6ZXJNYWluKCk7CiAJCQlwcm9jX2V4aXQoMSk7CiAK IAkJZGVmYXVsdDoKLQkJCWVsb2coUEFOSUMsICJ1bnJlY29nbml6ZWQgcHJvY2VzcyB0eXBl OiAlZCIsIChpbnQpIE15QXV4UHJvY1R5cGUpOworCQkJZWxvZyhQQU5JQywgInVucmVjb2du aXplZCBwcm9jZXNzIHR5cGU6ICVkIiwgKGludCkgTXlCYWNrZW5kVHlwZSk7CiAJCQlwcm9j X2V4aXQoMSk7CiAJfQogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9w b3N0bWFzdGVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYwppbmRl eCBmZWI0NzFkZDFkZi4uYzUxYjZhMTM3NmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvcG9zdG1hc3Rlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9z dG1hc3Rlci5jCkBAIC00NDAsNyArNDQwLDcgQEAgc3RhdGljIGludAlDb3VudENoaWxkcmVu KGludCB0YXJnZXQpOwogc3RhdGljIGJvb2wgYXNzaWduX2JhY2tlbmRsaXN0X2VudHJ5KFJl Z2lzdGVyZWRCZ1dvcmtlciAqcncpOwogc3RhdGljIHZvaWQgbWF5YmVfc3RhcnRfYmd3b3Jr ZXJzKHZvaWQpOwogc3RhdGljIGJvb2wgQ3JlYXRlT3B0c0ZpbGUoaW50IGFyZ2MsIGNoYXIg KmFyZ3ZbXSwgY2hhciAqZnVsbHByb2duYW1lKTsKLXN0YXRpYyBwaWRfdCBTdGFydENoaWxk UHJvY2VzcyhBdXhQcm9jVHlwZSB0eXBlKTsKK3N0YXRpYyBwaWRfdCBTdGFydENoaWxkUHJv Y2VzcyhCYWNrZW5kVHlwZSB0eXBlKTsKIHN0YXRpYyB2b2lkIFN0YXJ0QXV0b3ZhY3V1bVdv cmtlcih2b2lkKTsKIHN0YXRpYyB2b2lkIE1heWJlU3RhcnRXYWxSZWNlaXZlcih2b2lkKTsK IHN0YXRpYyB2b2lkIE1heWJlU3RhcnRXYWxTdW1tYXJpemVyKHZvaWQpOwpAQCAtNTYxLDEz ICs1NjEsMTMgQEAgc3RhdGljIHZvaWQgU2htZW1CYWNrZW5kQXJyYXlBZGQoQmFja2VuZCAq Ym4pOwogc3RhdGljIHZvaWQgU2htZW1CYWNrZW5kQXJyYXlSZW1vdmUoQmFja2VuZCAqYm4p OwogI2VuZGlmCQkJCQkJCS8qIEVYRUNfQkFDS0VORCAqLwogCi0jZGVmaW5lIFN0YXJ0dXBE YXRhQmFzZSgpCQlTdGFydENoaWxkUHJvY2VzcyhTdGFydHVwUHJvY2VzcykKLSNkZWZpbmUg U3RhcnRBcmNoaXZlcigpCQkJU3RhcnRDaGlsZFByb2Nlc3MoQXJjaGl2ZXJQcm9jZXNzKQot I2RlZmluZSBTdGFydEJhY2tncm91bmRXcml0ZXIoKSBTdGFydENoaWxkUHJvY2VzcyhCZ1dy aXRlclByb2Nlc3MpCi0jZGVmaW5lIFN0YXJ0Q2hlY2twb2ludGVyKCkJCVN0YXJ0Q2hpbGRQ cm9jZXNzKENoZWNrcG9pbnRlclByb2Nlc3MpCi0jZGVmaW5lIFN0YXJ0V2FsV3JpdGVyKCkJ CVN0YXJ0Q2hpbGRQcm9jZXNzKFdhbFdyaXRlclByb2Nlc3MpCi0jZGVmaW5lIFN0YXJ0V2Fs UmVjZWl2ZXIoKQkJU3RhcnRDaGlsZFByb2Nlc3MoV2FsUmVjZWl2ZXJQcm9jZXNzKQotI2Rl ZmluZSBTdGFydFdhbFN1bW1hcml6ZXIoKQlTdGFydENoaWxkUHJvY2VzcyhXYWxTdW1tYXJp emVyUHJvY2VzcykKKyNkZWZpbmUgU3RhcnR1cERhdGFCYXNlKCkJCVN0YXJ0Q2hpbGRQcm9j ZXNzKEJfU1RBUlRVUCkKKyNkZWZpbmUgU3RhcnRBcmNoaXZlcigpCQkJU3RhcnRDaGlsZFBy b2Nlc3MoQl9BUkNISVZFUikKKyNkZWZpbmUgU3RhcnRCYWNrZ3JvdW5kV3JpdGVyKCkgU3Rh cnRDaGlsZFByb2Nlc3MoQl9CR19XUklURVIpCisjZGVmaW5lIFN0YXJ0Q2hlY2twb2ludGVy KCkJCVN0YXJ0Q2hpbGRQcm9jZXNzKEJfQ0hFQ0tQT0lOVEVSKQorI2RlZmluZSBTdGFydFdh bFdyaXRlcigpCQlTdGFydENoaWxkUHJvY2VzcyhCX1dBTF9XUklURVIpCisjZGVmaW5lIFN0 YXJ0V2FsUmVjZWl2ZXIoKQkJU3RhcnRDaGlsZFByb2Nlc3MoQl9XQUxfUkVDRUlWRVIpCisj ZGVmaW5lIFN0YXJ0V2FsU3VtbWFyaXplcigpCVN0YXJ0Q2hpbGRQcm9jZXNzKEJfV0FMX1NV TU1BUklaRVIpCiAKIC8qIE1hY3JvcyB0byBjaGVjayBleGl0IHN0YXR1cyBvZiBhIGNoaWxk IHByb2Nlc3MgKi8KICNkZWZpbmUgRVhJVF9TVEFUVVNfMChzdCkgICgoc3QpID09IDApCkBA IC00OTUzLDcgKzQ5NTMsNyBAQCBTdWJQb3N0bWFzdGVyTWFpbihpbnQgYXJnYywgY2hhciAq YXJndltdKQogCX0KIAlpZiAoc3RyY21wKGFyZ3ZbMV0sICItLWZvcmthdXgiKSA9PSAwKQog CXsKLQkJQXV4UHJvY1R5cGUgYXV4dHlwZTsKKwkJQmFja2VuZFR5cGUgYXV4dHlwZTsKIAog CQlBc3NlcnQoYXJnYyA9PSA0KTsKIApAQCAtNTI5Miw3ICs1MjkyLDcgQEAgQ291bnRDaGls ZHJlbihpbnQgdGFyZ2V0KQogICogdG8gc3RhcnQgc3VicHJvY2Vzcy4KICAqLwogc3RhdGlj IHBpZF90Ci1TdGFydENoaWxkUHJvY2VzcyhBdXhQcm9jVHlwZSB0eXBlKQorU3RhcnRDaGls ZFByb2Nlc3MoQmFja2VuZFR5cGUgdHlwZSkKIHsKIAlwaWRfdAkJcGlkOwogCkBAIC01MzQ0 LDMxICs1MzQ0LDMxIEBAIFN0YXJ0Q2hpbGRQcm9jZXNzKEF1eFByb2NUeXBlIHR5cGUpCiAJ CWVycm5vID0gc2F2ZV9lcnJubzsKIAkJc3dpdGNoICh0eXBlKQogCQl7Ci0JCQljYXNlIFN0 YXJ0dXBQcm9jZXNzOgorCQkJY2FzZSBCX1NUQVJUVVA6CiAJCQkJZXJlcG9ydChMT0csCiAJ CQkJCQkoZXJybXNnKCJjb3VsZCBub3QgZm9yayBzdGFydHVwIHByb2Nlc3M6ICVtIikpKTsK IAkJCQlicmVhazsKLQkJCWNhc2UgQXJjaGl2ZXJQcm9jZXNzOgorCQkJY2FzZSBCX0FSQ0hJ VkVSOgogCQkJCWVyZXBvcnQoTE9HLAogCQkJCQkJKGVycm1zZygiY291bGQgbm90IGZvcmsg YXJjaGl2ZXIgcHJvY2VzczogJW0iKSkpOwogCQkJCWJyZWFrOwotCQkJY2FzZSBCZ1dyaXRl clByb2Nlc3M6CisJCQljYXNlIEJfQkdfV1JJVEVSOgogCQkJCWVyZXBvcnQoTE9HLAogCQkJ CQkJKGVycm1zZygiY291bGQgbm90IGZvcmsgYmFja2dyb3VuZCB3cml0ZXIgcHJvY2Vzczog JW0iKSkpOwogCQkJCWJyZWFrOwotCQkJY2FzZSBDaGVja3BvaW50ZXJQcm9jZXNzOgorCQkJ Y2FzZSBCX0NIRUNLUE9JTlRFUjoKIAkJCQllcmVwb3J0KExPRywKIAkJCQkJCShlcnJtc2co ImNvdWxkIG5vdCBmb3JrIGNoZWNrcG9pbnRlciBwcm9jZXNzOiAlbSIpKSk7CiAJCQkJYnJl YWs7Ci0JCQljYXNlIFdhbFdyaXRlclByb2Nlc3M6CisJCQljYXNlIEJfV0FMX1dSSVRFUjoK IAkJCQllcmVwb3J0KExPRywKIAkJCQkJCShlcnJtc2coImNvdWxkIG5vdCBmb3JrIFdBTCB3 cml0ZXIgcHJvY2VzczogJW0iKSkpOwogCQkJCWJyZWFrOwotCQkJY2FzZSBXYWxSZWNlaXZl clByb2Nlc3M6CisJCQljYXNlIEJfV0FMX1JFQ0VJVkVSOgogCQkJCWVyZXBvcnQoTE9HLAog CQkJCQkJKGVycm1zZygiY291bGQgbm90IGZvcmsgV0FMIHJlY2VpdmVyIHByb2Nlc3M6ICVt IikpKTsKIAkJCQlicmVhazsKLQkJCWNhc2UgV2FsU3VtbWFyaXplclByb2Nlc3M6CisJCQlj YXNlIEJfV0FMX1NVTU1BUklaRVI6CiAJCQkJZXJlcG9ydChMT0csCiAJCQkJCQkoZXJybXNn KCJjb3VsZCBub3QgZm9yayBXQUwgc3VtbWFyaXplciBwcm9jZXNzOiAlbSIpKSk7CiAJCQkJ YnJlYWs7CkBAIC01MzgyLDcgKzUzODIsNyBAQCBTdGFydENoaWxkUHJvY2VzcyhBdXhQcm9j VHlwZSB0eXBlKQogCQkgKiBmb3JrIGZhaWx1cmUgaXMgZmF0YWwgZHVyaW5nIHN0YXJ0dXAs IGJ1dCB0aGVyZSdzIG5vIG5lZWQgdG8gY2hva2UKIAkJICogaW1tZWRpYXRlbHkgaWYgc3Rh cnRpbmcgb3RoZXIgY2hpbGQgdHlwZXMgZmFpbHMuCiAJCSAqLwotCQlpZiAodHlwZSA9PSBT dGFydHVwUHJvY2VzcykKKwkJaWYgKHR5cGUgPT0gQl9TVEFSVFVQKQogCQkJRXhpdFBvc3Rt YXN0ZXIoMSk7CiAJCXJldHVybiAwOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL21p c2NhZG1pbi5oIGIvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKaW5kZXggY2JkYzYxYjg1NzYu LmRjMGY2NzY1ZTgyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAorKysg Yi9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaApAQCAtMzIxLDIxICszMjEsMzYgQEAgZXh0ZXJu IHZvaWQgSW5pdFByb2Nlc3NMb2NhbExhdGNoKHZvaWQpOwogZXh0ZXJuIHZvaWQgU3dpdGNo VG9TaGFyZWRMYXRjaCh2b2lkKTsKIGV4dGVybiB2b2lkIFN3aXRjaEJhY2tUb0xvY2FsTGF0 Y2godm9pZCk7CiAKKy8qCisgKiBNeUJhY2tlbmRUeXBlIGluZGljYXRlcyB3aGF0IGtpbmQg b2YgYSBiYWNrZW5kIHRoaXMgaXMuCisgKi8KIHR5cGVkZWYgZW51bSBCYWNrZW5kVHlwZQog ewogCUJfSU5WQUxJRCA9IDAsCi0JQl9BUkNISVZFUiwKKworCS8qIEJhY2tlbmRzIGFuZCBv dGhlciBiYWNrZW5kLWxpa2UgcHJvY2Vzc2VzICovCisJQl9CQUNLRU5ELAogCUJfQVVUT1ZB Q19MQVVOQ0hFUiwKIAlCX0FVVE9WQUNfV09SS0VSLAotCUJfQkFDS0VORCwKIAlCX0JHX1dP UktFUiwKKwlCX1dBTF9TRU5ERVIsCisKKwlCX1NUQU5EQUxPTkVfQkFDS0VORCwKKwlCX0xP R0dFUiwKKworCS8qCisJICogQXV4aWxpYXJ5IHByb2Nlc3Nlcy4gVGhlc2UgaGF2ZSBQR1BS T0MgZW50cmllcywgYnV0IHRoZXkgYXJlIG5vdAorCSAqIGF0dGFjaGVkIHRvIGFueSBwYXJ0 aWN1bGFyIGRhdGFiYXNlLiBUaGVyZSBjYW4gYmUgb25seSBvbmUgb2YgZWFjaCBvZgorCSAq IHRoZXNlIHJ1bm5pbmcgYXQgYSB0aW1lLgorCSAqCisJICogSWYgeW91IG1vZGlmeSB0aGVz ZSwgbWFrZSBzdXJlIHRvIHVwZGF0ZSBOVU1fQVVYSUxJQVJZX1BST0NTIGFuZCB0aGUKKwkg KiBnbG9zc2FyeSBpbiB0aGUgZG9jcy4KKwkgKi8KKwlCX0FSQ0hJVkVSLAogCUJfQkdfV1JJ VEVSLAogCUJfQ0hFQ0tQT0lOVEVSLAotCUJfTE9HR0VSLAotCUJfU1RBTkRBTE9ORV9CQUNL RU5ELAogCUJfU1RBUlRVUCwKIAlCX1dBTF9SRUNFSVZFUiwKLQlCX1dBTF9TRU5ERVIsCiAJ Ql9XQUxfU1VNTUFSSVpFUiwKIAlCX1dBTF9XUklURVIsCiB9IEJhY2tlbmRUeXBlOwpAQCAt MzQ0LDYgKzM1OSwxOCBAQCB0eXBlZGVmIGVudW0gQmFja2VuZFR5cGUKIAogZXh0ZXJuIFBH RExMSU1QT1JUIEJhY2tlbmRUeXBlIE15QmFja2VuZFR5cGU7CiAKKyNkZWZpbmUgRklSU1Rf QVVYX1BST0MgQl9BUkNISVZFUgorCisjZGVmaW5lIEFtU3RhcnR1cFByb2Nlc3MoKQkJCShN eUJhY2tlbmRUeXBlID09IEJfU1RBUlRVUCkKKyNkZWZpbmUgQW1CYWNrZ3JvdW5kV3JpdGVy UHJvY2VzcygpIChNeUJhY2tlbmRUeXBlID09IEJfQkdfV1JJVEVSKQorI2RlZmluZSBBbUFy Y2hpdmVyUHJvY2VzcygpCQkJKE15QmFja2VuZFR5cGUgPT0gQl9BUkNISVZFUikKKyNkZWZp bmUgQW1DaGVja3BvaW50ZXJQcm9jZXNzKCkJCShNeUJhY2tlbmRUeXBlID09IEJfQ0hFQ0tQ T0lOVEVSKQorI2RlZmluZSBBbVdhbFdyaXRlclByb2Nlc3MoKQkJKE15QmFja2VuZFR5cGUg PT0gQl9XQUxfV1JJVEVSKQorI2RlZmluZSBBbVdhbFJlY2VpdmVyUHJvY2VzcygpCQkoTXlC YWNrZW5kVHlwZSA9PSBCX1dBTF9SRUNFSVZFUikKKyNkZWZpbmUgQW1XYWxTdW1tYXJpemVy UHJvY2VzcygpCShNeUJhY2tlbmRUeXBlID09IEJfV0FMX1NVTU1BUklaRVIpCisKKyNkZWZp bmUgSXNBdXhQcm9jZXNzKHR5cGUpCQkJKE15QmFja2VuZFR5cGUgPj0gRklSU1RfQVVYX1BS T0MpCisKIGV4dGVybiBjb25zdCBjaGFyICpHZXRCYWNrZW5kVHlwZURlc2MoQmFja2VuZFR5 cGUgYmFja2VuZFR5cGUpOwogCiBleHRlcm4gdm9pZCBTZXREYXRhYmFzZVBhdGgoY29uc3Qg Y2hhciAqcGF0aCk7CkBAIC00MjYsMzcgKzQ1Myw2IEBAIGV4dGVybiBQR0RMTElNUE9SVCBQ cm9jZXNzaW5nTW9kZSBNb2RlOwogCX0gd2hpbGUoMCkKIAogCi0vKgotICogQXV4aWxpYXJ5 LXByb2Nlc3MgdHlwZSBpZGVudGlmaWVycy4gIFRoZXNlIHVzZWQgdG8gYmUgaW4gYm9vdHN0 cmFwLmgKLSAqIGJ1dCBpdCBzZWVtcyBzYW5lciB0byBoYXZlIHRoZW0gaGVyZSwgd2l0aCB0 aGUgUHJvY2Vzc2luZ01vZGUgc3R1ZmYuCi0gKiBUaGUgTXlBdXhQcm9jVHlwZSBnbG9iYWwg aXMgZGVmaW5lZCBhbmQgc2V0IGluIGF1eHByb2Nlc3MuYy4KLSAqCi0gKiBNYWtlIHN1cmUg dG8gbGlzdCBpbiB0aGUgZ2xvc3NhcnkgYW55IGl0ZW1zIHlvdSBhZGQgaGVyZS4KLSAqLwot Ci10eXBlZGVmIGVudW0KLXsKLQlOb3RBbkF1eFByb2Nlc3MgPSAtMSwKLQlTdGFydHVwUHJv Y2VzcyA9IDAsCi0JQmdXcml0ZXJQcm9jZXNzLAotCUFyY2hpdmVyUHJvY2VzcywKLQlDaGVj a3BvaW50ZXJQcm9jZXNzLAotCVdhbFdyaXRlclByb2Nlc3MsCi0JV2FsUmVjZWl2ZXJQcm9j ZXNzLAotCVdhbFN1bW1hcml6ZXJQcm9jZXNzLAotfSBBdXhQcm9jVHlwZTsKLQotZXh0ZXJu IFBHRExMSU1QT1JUIEF1eFByb2NUeXBlIE15QXV4UHJvY1R5cGU7Ci0KLSNkZWZpbmUgQW1T dGFydHVwUHJvY2VzcygpCQkJKE15QXV4UHJvY1R5cGUgPT0gU3RhcnR1cFByb2Nlc3MpCi0j ZGVmaW5lIEFtQmFja2dyb3VuZFdyaXRlclByb2Nlc3MoKSAoTXlBdXhQcm9jVHlwZSA9PSBC Z1dyaXRlclByb2Nlc3MpCi0jZGVmaW5lIEFtQXJjaGl2ZXJQcm9jZXNzKCkJCQkoTXlBdXhQ cm9jVHlwZSA9PSBBcmNoaXZlclByb2Nlc3MpCi0jZGVmaW5lIEFtQ2hlY2twb2ludGVyUHJv Y2VzcygpCQkoTXlBdXhQcm9jVHlwZSA9PSBDaGVja3BvaW50ZXJQcm9jZXNzKQotI2RlZmlu ZSBBbVdhbFdyaXRlclByb2Nlc3MoKQkJKE15QXV4UHJvY1R5cGUgPT0gV2FsV3JpdGVyUHJv Y2VzcykKLSNkZWZpbmUgQW1XYWxSZWNlaXZlclByb2Nlc3MoKQkJKE15QXV4UHJvY1R5cGUg PT0gV2FsUmVjZWl2ZXJQcm9jZXNzKQotI2RlZmluZSBBbVdhbFN1bW1hcml6ZXJQcm9jZXNz KCkJKE15QXV4UHJvY1R5cGUgPT0gV2FsU3VtbWFyaXplclByb2Nlc3MpCi0KLQogLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCiAgKgkgIHBpbml0LmggLS0JCQkJCQkJCQkJCQkJCQkgKgog ICoJCQlQT1NUR1JFUyBpbml0aWFsaXphdGlvbiBhbmQgY2xlYW51cCBkZWZpbml0aW9ucy4g ICAgICAgICAgICAgICAgICoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIv YXV4cHJvY2Vzcy5oIGIvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9hdXhwcm9jZXNzLmgKaW5k ZXggMWZkZGUzYmI3N2IuLjNlNDQzZWRkZTcwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9w b3N0bWFzdGVyL2F1eHByb2Nlc3MuaAorKysgYi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1 eHByb2Nlc3MuaApAQCAtMTUsNiArMTUsNiBAQAogCiAjaW5jbHVkZSAibWlzY2FkbWluLmgi CiAKLWV4dGVybiB2b2lkIEF1eGlsaWFyeVByb2Nlc3NNYWluKEF1eFByb2NUeXBlIGF1eHR5 cGUpIHBnX2F0dHJpYnV0ZV9ub3JldHVybigpOworZXh0ZXJuIHZvaWQgQXV4aWxpYXJ5UHJv Y2Vzc01haW4oQmFja2VuZFR5cGUgYXV4dHlwZSkgcGdfYXR0cmlidXRlX25vcmV0dXJuKCk7 CiAKICNlbmRpZgkJCQkJCQkvKiBBVVhQUk9DRVNTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QKaW5kZXggN2U4NjZlM2MzZDAuLmNhZmYzZmMxMTU4IDEwMDY0NAotLS0gYS9z cmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdApAQCAtMTcyLDcgKzE3Miw2IEBAIEF1dG9WYWNPcHRzCiBBdXRv VmFjdXVtU2htZW1TdHJ1Y3QKIEF1dG9WYWN1dW1Xb3JrSXRlbQogQXV0b1ZhY3V1bVdvcmtJ dGVtVHlwZQotQXV4UHJvY1R5cGUKIEJGX2N0eAogQkZfa2V5CiBCRl93b3JkCi0tIAoyLjM5 LjIKCg== --------------Rwaxn7iHyg7hsWq1khSGJm6k Content-Type: text/x-patch; charset=UTF-8; name="v7-0004-Use-MyBackendType-in-more-places-to-check-what-pr.patch" Content-Disposition: attachment; filename*0="v7-0004-Use-MyBackendType-in-more-places-to-check-what-pr.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA1MTA5MDViMmU0MDYyM2ExOTk2NGY1ZWZmOWViZjExZGJmNjMzNzFkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFdlZCwgMTAgSmFuIDIwMjQgMTI6NTk6NDggKzAyMDAK U3ViamVjdDogW1BBVENIIHY3IDQvNF0gVXNlIE15QmFja2VuZFR5cGUgaW4gbW9yZSBwbGFj ZXMgdG8gY2hlY2sgd2hhdCBwcm9jZXNzCiB0aGlzIGlzCgpSZW1vdmUgSXNCYWNrZ3JvdW5k V29ya2VyLCBJc0F1dG9WYWN1dW1MYXVuY2hlclByb2Nlc3MoKSBhbmQKSXNBdXRvVmFjdXVt V29ya2VyUHJvY2VzcygpIGluIGZhdm9yIG9mIG5ldyBBbSpQcm9jZXNzKCkgbWFjcm9zIHRo YXQKdXNlIE15QmFja2VuZFR5cGUuIEZvciBjb25zaXN0ZW5jeSB3aXRoIHRoZSBleGlzdGlu ZyBBbSpQcm9jZXNzKCkKbWFjcm9zLgoKUmV2aWV3ZWQtYnk6IFhYWApEaXNjdXNzaW9uOiBY WFgKLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmZhc3QuYyAgICAgICAgICAgICB8 ICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbnZhY3V1bS5jICAgICAgICAgICB8 ICA2ICsrLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgICAgICAg ICB8ICA0ICstLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jICAgICAgICAgICAg ICAgfCAgNCArLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jICAgICAgICAgICAg ICAgIHwgIDggKysrLS0tCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyAg ICAgICAgICB8IDI2IC0tLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9wb3N0bWFz dGVyL2Jnd29ya2VyLmMgICAgICAgICAgICB8ICAyIC0tCiBzcmMvYmFja2VuZC9wb3N0bWFz dGVyL3Bvc3RtYXN0ZXIuYyAgICAgICAgICB8ICAzIC0tLQogc3JjL2JhY2tlbmQvc3RhdGlz dGljcy9leHRlbmRlZF9zdGF0cy5jICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvaXBjLmMgICAgICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvc3RvcmFn ZS9sbWdyL3Byb2MuYyAgICAgICAgICAgICAgfCAxOSArKysrKysrLS0tLS0tLQogc3JjL2Jh Y2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgICAgICAgICAgfCAgNiArKy0tLQogc3Jj L2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3JlbGF0aW9uLmMgfCAgNCArLS0KIHNy Yy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jICAgICAgICAgICAgIHwgIDEgLQogc3Jj L2JhY2tlbmQvdXRpbHMvaW5pdC9taXNjaW5pdC5jICAgICAgICAgICAgfCAgMiArLQogc3Jj L2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jICAgICAgICAgICAgfCAgOCArKystLS0K IHNyYy9pbmNsdWRlL21pc2NhZG1pbi5oICAgICAgICAgICAgICAgICAgICAgIHwgIDggKysr LS0tCiBzcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1dG92YWN1dW0uaCAgICAgICAgICB8ICA1 IC0tLS0KIDE4IGZpbGVzIGNoYW5nZWQsIDM4IGluc2VydGlvbnMoKyksIDc0IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luZmFzdC5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5mYXN0LmMKaW5kZXggY2ZmNjg1MGVmODYuLmUx MThjZWNiOWE0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmZhc3Qu YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmZhc3QuYwpAQCAtODEyLDcgKzgx Miw3IEBAIGdpbkluc2VydENsZWFudXAoR2luU3RhdGUgKmdpbnN0YXRlLCBib29sIGZ1bGxf Y2xlYW4sCiAJCSAqLwogCQlMb2NrUGFnZShpbmRleCwgR0lOX01FVEFQQUdFX0JMS05PLCBF eGNsdXNpdmVMb2NrKTsKIAkJd29ya01lbW9yeSA9Ci0JCQkoSXNBdXRvVmFjdXVtV29ya2Vy UHJvY2VzcygpICYmIGF1dG92YWN1dW1fd29ya19tZW0gIT0gLTEpID8KKwkJCShBbUF1dG9W YWN1dW1Xb3JrZXJQcm9jZXNzKCkgJiYgYXV0b3ZhY3V1bV93b3JrX21lbSAhPSAtMSkgPwog CQkJYXV0b3ZhY3V1bV93b3JrX21lbSA6IG1haW50ZW5hbmNlX3dvcmtfbWVtOwogCX0KIAll bHNlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbnZhY3V1bS5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW52YWN1dW0uYwppbmRleCBhZWU2YWFiNDRhZS4u YjNmNDE1ZTI4NDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2ludmFj dXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW52YWN1dW0uYwpAQCAtNTkw LDcgKzU5MCw3IEBAIGdpbmJ1bGtkZWxldGUoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRl eEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzLAogCQkvKgogCQkgKiBhbmQgY2xlYW51cCBhbnkg cGVuZGluZyBpbnNlcnRzCiAJCSAqLwotCQlnaW5JbnNlcnRDbGVhbnVwKCZndnMuZ2luc3Rh dGUsICFJc0F1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCksCisJCWdpbkluc2VydENsZWFudXAo Jmd2cy5naW5zdGF0ZSwgIUFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSwKIAkJCQkJCSBm YWxzZSwgdHJ1ZSwgc3RhdHMpOwogCX0KIApAQCAtNzAxLDcgKzcwMSw3IEBAIGdpbnZhY3V1 bWNsZWFudXAoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQg KnN0YXRzKQogCSAqLwogCWlmIChpbmZvLT5hbmFseXplX29ubHkpCiAJewotCQlpZiAoSXNB dXRvVmFjdXVtV29ya2VyUHJvY2VzcygpKQorCQlpZiAoQW1BdXRvVmFjdXVtV29ya2VyUHJv Y2VzcygpKQogCQl7CiAJCQlpbml0R2luU3RhdGUoJmdpbnN0YXRlLCBpbmRleCk7CiAJCQln aW5JbnNlcnRDbGVhbnVwKCZnaW5zdGF0ZSwgZmFsc2UsIHRydWUsIHRydWUsIHN0YXRzKTsK QEAgLTcxNyw3ICs3MTcsNyBAQCBnaW52YWN1dW1jbGVhbnVwKEluZGV4VmFjdXVtSW5mbyAq aW5mbywgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0cykKIAl7CiAJCXN0YXRzID0gKElu ZGV4QnVsa0RlbGV0ZVJlc3VsdCAqKSBwYWxsb2MwKHNpemVvZihJbmRleEJ1bGtEZWxldGVS ZXN1bHQpKTsKIAkJaW5pdEdpblN0YXRlKCZnaW5zdGF0ZSwgaW5kZXgpOwotCQlnaW5JbnNl cnRDbGVhbnVwKCZnaW5zdGF0ZSwgIUlzQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSwKKwkJ Z2luSW5zZXJ0Q2xlYW51cCgmZ2luc3RhdGUsICFBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNz KCksCiAJCQkJCQkgZmFsc2UsIHRydWUsIHN0YXRzKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCAwZmIzOTUzNTEzZC4uZWIzNjk1OGI2MmIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTMwNyw3ICszMDcsNyBA QCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVsLCBWYWN1dW1QYXJhbXMgKnBhcmFtcywK IAljaGFyCSAgKippbmRuYW1lcyA9IE5VTEw7CiAKIAl2ZXJib3NlID0gKHBhcmFtcy0+b3B0 aW9ucyAmIFZBQ09QVF9WRVJCT1NFKSAhPSAwOwotCWluc3RydW1lbnQgPSAodmVyYm9zZSB8 fCAoSXNBdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpICYmCisJaW5zdHJ1bWVudCA9ICh2ZXJi b3NlIHx8IChBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkgJiYKIAkJCQkJCQkgIHBhcmFt cy0+bG9nX21pbl9kdXJhdGlvbiA+PSAwKSk7CiAJaWYgKGluc3RydW1lbnQpCiAJewpAQCAt MzEwOCw3ICszMTA4LDcgQEAgc3RhdGljIGludAogZGVhZF9pdGVtc19tYXhfaXRlbXMoTFZS ZWxTdGF0ZSAqdmFjcmVsKQogewogCWludDY0CQltYXhfaXRlbXM7Ci0JaW50CQkJdmFjX3dv cmtfbWVtID0gSXNBdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpICYmCisJaW50CQkJdmFjX3dv cmtfbWVtID0gQW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpICYmCiAJCWF1dG92YWN1dW1f d29ya19tZW0gIT0gLTEgPwogCQlhdXRvdmFjdXVtX3dvcmtfbWVtIDogbWFpbnRlbmFuY2Vf d29ya19tZW07CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYwppbmRleCBhMDM0OTVkNmM5NS4u ZDEwNWQyZmFkN2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUu YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKQEAgLTM1MSw3ICszNTEs NyBAQCBkb19hbmFseXplX3JlbChSZWxhdGlvbiBvbmVyZWwsIFZhY3V1bVBhcmFtcyAqcGFy YW1zLAogCXNhdmVfbmVzdGxldmVsID0gTmV3R1VDTmVzdExldmVsKCk7CiAKIAkvKiBtZWFz dXJlIGVsYXBzZWQgdGltZSBpZmYgYXV0b3ZhY3V1bSBsb2dnaW5nIHJlcXVpcmVzIGl0ICov Ci0JaWYgKElzQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSAmJiBwYXJhbXMtPmxvZ19taW5f ZHVyYXRpb24gPj0gMCkKKwlpZiAoQW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpICYmIHBh cmFtcy0+bG9nX21pbl9kdXJhdGlvbiA+PSAwKQogCXsKIAkJaWYgKHRyYWNrX2lvX3RpbWlu ZykKIAkJewpAQCAtNzI5LDcgKzcyOSw3IEBAIGRvX2FuYWx5emVfcmVsKFJlbGF0aW9uIG9u ZXJlbCwgVmFjdXVtUGFyYW1zICpwYXJhbXMsCiAJdmFjX2Nsb3NlX2luZGV4ZXMobmluZGV4 ZXMsIElyZWwsIE5vTG9jayk7CiAKIAkvKiBMb2cgdGhlIGFjdGlvbiBpZiBhcHByb3ByaWF0 ZSAqLwotCWlmIChJc0F1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkgJiYgcGFyYW1zLT5sb2df bWluX2R1cmF0aW9uID49IDApCisJaWYgKEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSAm JiBwYXJhbXMtPmxvZ19taW5fZHVyYXRpb24gPj0gMCkKIAl7CiAJCVRpbWVzdGFtcFR6IGVu ZHRpbWUgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMK aW5kZXggNjRkYTg0ODYyNzYuLmU0MGNlZjY1NjZlIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy92YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0u YwpAQCAtNTY0LDcgKzU2NCw3IEBAIHZhY3V1bShMaXN0ICpyZWxhdGlvbnMsIFZhY3V1bVBh cmFtcyAqcGFyYW1zLCBCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3ksCiAJZWxzZQog CXsKIAkJQXNzZXJ0KHBhcmFtcy0+b3B0aW9ucyAmIFZBQ09QVF9BTkFMWVpFKTsKLQkJaWYg KElzQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSkKKwkJaWYgKEFtQXV0b1ZhY3V1bVdvcmtl clByb2Nlc3MoKSkKIAkJCXVzZV9vd25feGFjdHMgPSB0cnVlOwogCQllbHNlIGlmIChpbl9v dXRlcl94YWN0KQogCQkJdXNlX293bl94YWN0cyA9IGZhbHNlOwpAQCAtODA5LDcgKzgwOSw3 IEBAIHZhY3V1bV9vcGVuX3JlbGF0aW9uKE9pZCByZWxpZCwgUmFuZ2VWYXIgKnJlbGF0aW9u LCBiaXRzMzIgb3B0aW9ucywKIAkgKiBzdGF0ZW1lbnRzIGluIHRoZSBwZXJtaXNzaW9uIGNo ZWNrczsgb3RoZXJ3aXNlLCBvbmx5IGxvZyBpZiB0aGUgY2FsbGVyCiAJICogc28gcmVxdWVz dGVkLgogCSAqLwotCWlmICghSXNBdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpKQorCWlmICgh QW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpKQogCQllbGV2ZWwgPSBXQVJOSU5HOwogCWVs c2UgaWYgKHZlcmJvc2UpCiAJCWVsZXZlbCA9IExPRzsKQEAgLTg5Niw3ICs4OTYsNyBAQCBl eHBhbmRfdmFjdXVtX3JlbChWYWN1dW1SZWxhdGlvbiAqdnJlbCwgTWVtb3J5Q29udGV4dCB2 YWNfY29udGV4dCwKIAkJICogU2luY2UgYXV0b3ZhY3V1bSB3b3JrZXJzIHN1cHBseSBPSURz IHdoZW4gY2FsbGluZyB2YWN1dW0oKSwgbm8KIAkJICogYXV0b3ZhY3V1bSB3b3JrZXIgc2hv dWxkIHJlYWNoIHRoaXMgY29kZS4KIAkJICovCi0JCUFzc2VydCghSXNBdXRvVmFjdXVtV29y a2VyUHJvY2VzcygpKTsKKwkJQXNzZXJ0KCFBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkp OwogCiAJCS8qCiAJCSAqIFdlIHRyYW5zaWVudGx5IHRha2UgQWNjZXNzU2hhcmVMb2NrIHRv IHByb3RlY3QgdGhlIHN5c2NhY2hlIGxvb2t1cApAQCAtMjMzNiw3ICsyMzM2LDcgQEAgdmFj dXVtX2RlbGF5X3BvaW50KHZvaWQpCiAJICogW2F1dG92YWN1dW1fXXZhY3V1bV9jb3N0X2Rl bGF5IHRvIHRha2UgZWZmZWN0IHdoaWxlIGEgdGFibGUgaXMgYmVpbmcKIAkgKiB2YWN1dW1l ZCBvciBhbmFseXplZC4KIAkgKi8KLQlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZyAmJiBJc0F1 dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkpCisJaWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcgJiYg QW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpKQogCXsKIAkJQ29uZmlnUmVsb2FkUGVuZGlu ZyA9IGZhbHNlOwogCQlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKaW5kZXggMmMzMDk5Zjc2ZjEuLmNlY2JhYWE1Yjkx IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYworKysg Yi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwpAQCAtMTM1LDEwICsxMzUs NiBAQCBpbnQJCQlMb2dfYXV0b3ZhY3V1bV9taW5fZHVyYXRpb24gPSA2MDAwMDA7CiAjZGVm aW5lIE1JTl9BVVRPVkFDX1NMRUVQVElNRSAxMDAuMCAvKiBtaWxsaXNlY29uZHMgKi8KICNk ZWZpbmUgTUFYX0FVVE9WQUNfU0xFRVBUSU1FIDMwMAkvKiBzZWNvbmRzICovCiAKLS8qIEZs YWdzIHRvIHRlbGwgaWYgd2UgYXJlIGluIGFuIGF1dG92YWN1dW0gcHJvY2VzcyAqLwotc3Rh dGljIGJvb2wgYW1fYXV0b3ZhY3V1bV9sYXVuY2hlciA9IGZhbHNlOwotc3RhdGljIGJvb2wg YW1fYXV0b3ZhY3V1bV93b3JrZXIgPSBmYWxzZTsKLQogLyoKICAqIFZhcmlhYmxlcyB0byBz YXZlIHRoZSBjb3N0LXJlbGF0ZWQgc3RvcmFnZSBwYXJhbWV0ZXJzIGZvciB0aGUgY3VycmVu dAogICogcmVsYXRpb24gYmVpbmcgdmFjdXVtZWQgYnkgdGhpcyBhdXRvdmFjdXVtIHdvcmtl ci4gVXNpbmcgdGhlc2UsIHdlIGNhbgpAQCAtNDM1LDggKzQzMSw2IEBAIEF1dG9WYWNMYXVu Y2hlck1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIHsKIAlzaWdqbXBfYnVmCWxvY2Fs X3NpZ2ptcF9idWY7CiAKLQlhbV9hdXRvdmFjdXVtX2xhdW5jaGVyID0gdHJ1ZTsKLQogCU15 QmFja2VuZFR5cGUgPSBCX0FVVE9WQUNfTEFVTkNIRVI7CiAJaW5pdF9wc19kaXNwbGF5KE5V TEwpOwogCkBAIC0xNDk1LDggKzE0ODksNiBAQCBBdXRvVmFjV29ya2VyTWFpbihpbnQgYXJn YywgY2hhciAqYXJndltdKQogCXNpZ2ptcF9idWYJbG9jYWxfc2lnam1wX2J1ZjsKIAlPaWQJ CQlkYmlkOwogCi0JYW1fYXV0b3ZhY3V1bV93b3JrZXIgPSB0cnVlOwotCiAJTXlCYWNrZW5k VHlwZSA9IEJfQVVUT1ZBQ19XT1JLRVI7CiAJaW5pdF9wc19kaXNwbGF5KE5VTEwpOwogCkBA IC0zMzU1LDI0ICszMzQ3LDYgQEAgYXV0b3ZhY19pbml0KHZvaWQpCiAJCQkJIGVycmhpbnQo IkVuYWJsZSB0aGUgXCJ0cmFja19jb3VudHNcIiBvcHRpb24uIikpKTsKIH0KIAotLyoKLSAq IElzQXV0b1ZhY3V1bSBmdW5jdGlvbnMKLSAqCQlSZXR1cm4gd2hldGhlciB0aGlzIGlzIGVp dGhlciBhIGxhdW5jaGVyIGF1dG92YWN1dW0gcHJvY2VzcyBvciBhIHdvcmtlcgotICoJCXBy b2Nlc3MuCi0gKi8KLWJvb2wKLUlzQXV0b1ZhY3V1bUxhdW5jaGVyUHJvY2Vzcyh2b2lkKQot ewotCXJldHVybiBhbV9hdXRvdmFjdXVtX2xhdW5jaGVyOwotfQotCi1ib29sCi1Jc0F1dG9W YWN1dW1Xb3JrZXJQcm9jZXNzKHZvaWQpCi17Ci0JcmV0dXJuIGFtX2F1dG92YWN1dW1fd29y a2VyOwotfQotCi0KIC8qCiAgKiBBdXRvVmFjdXVtU2htZW1TaXplCiAgKgkJQ29tcHV0ZSBz cGFjZSBuZWVkZWQgZm9yIGF1dG92YWN1dW0tcmVsYXRlZCBzaGFyZWQgbWVtb3J5CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMgYi9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKaW5kZXggNjdmOTJjMjRkYjEuLmQ4ZTg5ZGU3NDk0 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKKysrIGIv c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCkBAIC03MzEsOCArNzMxLDYgQEAg QmFja2dyb3VuZFdvcmtlck1haW4odm9pZCkKIAlpZiAod29ya2VyID09IE5VTEwpCiAJCWVs b2coRkFUQUwsICJ1bmFibGUgdG8gZmluZCBiZ3dvcmtlciBlbnRyeSIpOwogCi0JSXNCYWNr Z3JvdW5kV29ya2VyID0gdHJ1ZTsKLQogCU15QmFja2VuZFR5cGUgPSBCX0JHX1dPUktFUjsK IAlpbml0X3BzX2Rpc3BsYXkod29ya2VyLT5iZ3dfbmFtZSk7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9wb3N0bWFzdGVyLmMKaW5kZXggYzUxYjZhMTM3NmEuLjhhYTJkZGYwYzQ2IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYworKysgYi9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYwpAQCAtNDk3OSw5ICs0OTc5LDYgQEAg U3ViUG9zdG1hc3Rlck1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAl9CiAJaWYgKHN0 cmNtcChhcmd2WzFdLCAiLS1mb3JrYmd3b3JrZXIiKSA9PSAwKQogCXsKLQkJLyogZG8gdGhp cyBhcyBlYXJseSBhcyBwb3NzaWJsZTsgaW4gcGFydGljdWxhciwgYmVmb3JlIEluaXRQcm9j ZXNzKCkgKi8KLQkJSXNCYWNrZ3JvdW5kV29ya2VyID0gdHJ1ZTsKLQogCQkvKiBSZXN0b3Jl IGJhc2ljIHNoYXJlZCBtZW1vcnkgcG9pbnRlcnMgKi8KIAkJSW5pdFNobWVtQWNjZXNzKFVz ZWRTaG1lbVNlZ0FkZHIpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdGF0aXN0aWNz L2V4dGVuZGVkX3N0YXRzLmMgYi9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2V4dGVuZGVkX3N0 YXRzLmMKaW5kZXggYzU0NjE1MTRkOGYuLjEzNTE1MWEyNzIzIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9zdGF0aXN0aWNzL2V4dGVuZGVkX3N0YXRzLmMKKysrIGIvc3JjL2JhY2tlbmQv c3RhdGlzdGljcy9leHRlbmRlZF9zdGF0cy5jCkBAIC0xNzMsNyArMTczLDcgQEAgQnVpbGRS ZWxhdGlvbkV4dFN0YXRpc3RpY3MoUmVsYXRpb24gb25lcmVsLCBib29sIGluaCwgZG91Ymxl IHRvdGFscm93cywKIAkJCQkJCQkJCSAgbmF0dHMsIHZhY2F0dHJzdGF0cyk7CiAJCWlmICgh c3RhdHMpCiAJCXsKLQkJCWlmICghSXNBdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpKQorCQkJ aWYgKCFBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkpCiAJCQkJZXJlcG9ydChXQVJOSU5H LAogCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwK IAkJCQkJCSBlcnJtc2coInN0YXRpc3RpY3Mgb2JqZWN0IFwiJXMuJXNcIiBjb3VsZCBub3Qg YmUgY29tcHV0ZWQgZm9yIHJlbGF0aW9uIFwiJXMuJXNcIiIsCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9pcGMuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lw Yy5jCmluZGV4IDI2ODFlNGNkZmY1Li5iMDZlNGI4NDUyOCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvaXBjLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv aXBjLmMKQEAgLTEzNiw3ICsxMzYsNyBAQCBwcm9jX2V4aXQoaW50IGNvZGUpCiAJCSAqLwog CQljaGFyCQlncHJvZkRpck5hbWVbMzJdOwogCi0JCWlmIChJc0F1dG9WYWN1dW1Xb3JrZXJQ cm9jZXNzKCkpCisJCWlmIChBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkpCiAJCQlzbnBy aW50ZihncHJvZkRpck5hbWUsIDMyLCAiZ3Byb2YvYXZ3b3JrZXIiKTsKIAkJZWxzZQogCQkJ c25wcmludGYoZ3Byb2ZEaXJOYW1lLCAzMiwgImdwcm9mLyVkIiwgKGludCkgZ2V0cGlkKCkp OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKaW5kZXggYWM1MDk2ZjQ1YWEuLjJhZDE5NWEw ODc0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCisrKyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKQEAgLTQxLDcgKzQxLDYgQEAKICNp bmNsdWRlICJwb3N0bWFzdGVyL2F1dG92YWN1dW0uaCIKICNpbmNsdWRlICJyZXBsaWNhdGlv bi9zbG90LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vc3luY3JlcC5oIgotI2luY2x1ZGUg InJlcGxpY2F0aW9uL3dhbHNlbmRlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvY29uZGl0aW9u X3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9y YWdlL2xtZ3IuaCIKQEAgLTMwOCwxMSArMzA3LDExIEBAIEluaXRQcm9jZXNzKHZvaWQpCiAJ CWVsb2coRVJST1IsICJ5b3UgYWxyZWFkeSBleGlzdCIpOwogCiAJLyogRGVjaWRlIHdoaWNo IGxpc3Qgc2hvdWxkIHN1cHBseSBvdXIgUEdQUk9DLiAqLwotCWlmIChJc0FueUF1dG9WYWN1 dW1Qcm9jZXNzKCkpCisJaWYgKEFtQXV0b1ZhY3V1bUxhdW5jaGVyUHJvY2VzcygpIHx8IEFt QXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSkKIAkJcHJvY2dsb2JhbGxpc3QgPSAmUHJvY0ds b2JhbC0+YXV0b3ZhY0ZyZWVQcm9jczsKLQllbHNlIGlmIChJc0JhY2tncm91bmRXb3JrZXIp CisJZWxzZSBpZiAoQW1CYWNrZ3JvdW5kV29ya2VyUHJvY2VzcygpKQogCQlwcm9jZ2xvYmFs bGlzdCA9ICZQcm9jR2xvYmFsLT5iZ3dvcmtlckZyZWVQcm9jczsKLQllbHNlIGlmIChhbV93 YWxzZW5kZXIpCisJZWxzZSBpZiAoQW1XYWxTZW5kZXJQcm9jZXNzKCkpCiAJCXByb2NnbG9i YWxsaXN0ID0gJlByb2NHbG9iYWwtPndhbHNlbmRlckZyZWVQcm9jczsKIAllbHNlCiAJCXBy b2NnbG9iYWxsaXN0ID0gJlByb2NHbG9iYWwtPmZyZWVQcm9jczsKQEAgLTM0Miw3ICszNDEs NyBAQCBJbml0UHJvY2Vzcyh2b2lkKQogCQkgKiBpbiB0aGUgYXV0b3ZhY3V1bSBjYXNlPwog CQkgKi8KIAkJU3BpbkxvY2tSZWxlYXNlKFByb2NTdHJ1Y3RMb2NrKTsKLQkJaWYgKGFtX3dh bHNlbmRlcikKKwkJaWYgKEFtV2FsU2VuZGVyUHJvY2VzcygpKQogCQkJZXJlcG9ydChGQVRB TCwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9UT09fTUFOWV9DT05ORUNUSU9OUyksCiAJCQkJ CSBlcnJtc2coIm51bWJlciBvZiByZXF1ZXN0ZWQgc3RhbmRieSBjb25uZWN0aW9ucyBleGNl ZWRzIG1heF93YWxfc2VuZGVycyAoY3VycmVudGx5ICVkKSIsCkBAIC0zNjUsNyArMzY0LDcg QEAgSW5pdFByb2Nlc3Modm9pZCkKIAkgKiBjbGVhbmluZyB1cC4gIChYWFggYXV0b3ZhYyBs YXVuY2hlciBjdXJyZW50bHkgZG9lc24ndCBwYXJ0aWNpcGF0ZSBpbgogCSAqIHRoaXM7IGl0 IHByb2JhYmx5IHNob3VsZC4pCiAJICovCi0JaWYgKElzVW5kZXJQb3N0bWFzdGVyICYmICFJ c0F1dG9WYWN1dW1MYXVuY2hlclByb2Nlc3MoKSkKKwlpZiAoSXNVbmRlclBvc3RtYXN0ZXIg JiYgIUFtQXV0b1ZhY3V1bUxhdW5jaGVyUHJvY2VzcygpKQogCQlNYXJrUG9zdG1hc3RlckNo aWxkQWN0aXZlKCk7CiAKIAkvKgpAQCAtMzg0LDExICszODMsMTEgQEAgSW5pdFByb2Nlc3Mo dm9pZCkKIAlNeVByb2MtPmRhdGFiYXNlSWQgPSBJbnZhbGlkT2lkOwogCU15UHJvYy0+cm9s ZUlkID0gSW52YWxpZE9pZDsKIAlNeVByb2MtPnRlbXBOYW1lc3BhY2VJZCA9IEludmFsaWRP aWQ7Ci0JTXlQcm9jLT5pc0JhY2tncm91bmRXb3JrZXIgPSBJc0JhY2tncm91bmRXb3JrZXI7 CisJTXlQcm9jLT5pc0JhY2tncm91bmRXb3JrZXIgPSBBbUJhY2tncm91bmRXb3JrZXJQcm9j ZXNzKCk7CiAJTXlQcm9jLT5kZWxheUNoa3B0RmxhZ3MgPSAwOwogCU15UHJvYy0+c3RhdHVz RmxhZ3MgPSAwOwogCS8qIE5CIC0tIGF1dG92YWMgbGF1bmNoZXIgaW50ZW50aW9uYWxseSBk b2VzIG5vdCBzZXQgSVNfQVVUT1ZBQ1VVTSAqLwotCWlmIChJc0F1dG9WYWN1dW1Xb3JrZXJQ cm9jZXNzKCkpCisJaWYgKEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSkKIAkJTXlQcm9j LT5zdGF0dXNGbGFncyB8PSBQUk9DX0lTX0FVVE9WQUNVVU07CiAJTXlQcm9jLT5sd1dhaXRp bmcgPSBMV19XU19OT1RfV0FJVElORzsKIAlNeVByb2MtPmx3V2FpdE1vZGUgPSAwOwpAQCAt NTc5LDcgKzU3OCw3IEBAIEluaXRBdXhpbGlhcnlQcm9jZXNzKHZvaWQpCiAJTXlQcm9jLT5k YXRhYmFzZUlkID0gSW52YWxpZE9pZDsKIAlNeVByb2MtPnJvbGVJZCA9IEludmFsaWRPaWQ7 CiAJTXlQcm9jLT50ZW1wTmFtZXNwYWNlSWQgPSBJbnZhbGlkT2lkOwotCU15UHJvYy0+aXNC YWNrZ3JvdW5kV29ya2VyID0gSXNCYWNrZ3JvdW5kV29ya2VyOworCU15UHJvYy0+aXNCYWNr Z3JvdW5kV29ya2VyID0gQW1CYWNrZ3JvdW5kV29ya2VyUHJvY2VzcygpOwogCU15UHJvYy0+ ZGVsYXlDaGtwdEZsYWdzID0gMDsKIAlNeVByb2MtPnN0YXR1c0ZsYWdzID0gMDsKIAlNeVBy b2MtPmx3V2FpdGluZyA9IExXX1dTX05PVF9XQUlUSU5HOwpAQCAtOTM1LDcgKzkzNCw3IEBA IFByb2NLaWxsKGludCBjb2RlLCBEYXR1bSBhcmcpCiAJICogd2F5LCBzbyB0ZWxsIHRoZSBw b3N0bWFzdGVyIHdlJ3ZlIGNsZWFuZWQgdXAgYWNjZXB0YWJseSB3ZWxsLiAoWFhYCiAJICog YXV0b3ZhYyBsYXVuY2hlciBzaG91bGQgYmUgaW5jbHVkZWQgaGVyZSBzb21lZGF5KQogCSAq LwotCWlmIChJc1VuZGVyUG9zdG1hc3RlciAmJiAhSXNBdXRvVmFjdXVtTGF1bmNoZXJQcm9j ZXNzKCkpCisJaWYgKElzVW5kZXJQb3N0bWFzdGVyICYmICFBbUF1dG9WYWN1dW1MYXVuY2hl clByb2Nlc3MoKSkKIAkJTWFya1Bvc3RtYXN0ZXJDaGlsZEluYWN0aXZlKCk7CiAKIAkvKiB3 YWtlIGF1dG92YWMgbGF1bmNoZXIgaWYgbmVlZGVkIC0tIHNlZSBjb21tZW50cyBpbiBGcmVl V29ya2VySW5mbyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5j IGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4IDFhMzRiZDM3MTVmLi4zODYx MGI3MjNhZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisrKyBi L3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpAQCAtMzI2Nyw3ICszMjY3LDcgQEAgUHJv Y2Vzc0ludGVycnVwdHModm9pZCkKIAkJCWVyZXBvcnQoRkFUQUwsCiAJCQkJCShlcnJjb2Rl KEVSUkNPREVfUVVFUllfQ0FOQ0VMRUQpLAogCQkJCQkgZXJybXNnKCJjYW5jZWxpbmcgYXV0 aGVudGljYXRpb24gZHVlIHRvIHRpbWVvdXQiKSkpOwotCQllbHNlIGlmIChJc0F1dG9WYWN1 dW1Xb3JrZXJQcm9jZXNzKCkpCisJCWVsc2UgaWYgKEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nl c3MoKSkKIAkJCWVyZXBvcnQoRkFUQUwsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfQURNSU5f U0hVVERPV04pLAogCQkJCQkgZXJybXNnKCJ0ZXJtaW5hdGluZyBhdXRvdmFjdXVtIHByb2Nl c3MgZHVlIHRvIGFkbWluaXN0cmF0b3IgY29tbWFuZCIpKSk7CkBAIC0zMjg2LDcgKzMyODYs NyBAQCBQcm9jZXNzSW50ZXJydXB0cyh2b2lkKQogCQkJICovCiAJCQlwcm9jX2V4aXQoMSk7 CiAJCX0KLQkJZWxzZSBpZiAoSXNCYWNrZ3JvdW5kV29ya2VyKQorCQllbHNlIGlmIChBbUJh Y2tncm91bmRXb3JrZXJQcm9jZXNzKCkpCiAJCQllcmVwb3J0KEZBVEFMLAogCQkJCQkoZXJy Y29kZShFUlJDT0RFX0FETUlOX1NIVVRET1dOKSwKIAkJCQkJIGVycm1zZygidGVybWluYXRp bmcgYmFja2dyb3VuZCB3b3JrZXIgXCIlc1wiIGR1ZSB0byBhZG1pbmlzdHJhdG9yIGNvbW1h bmQiLApAQCAtMzM4Niw3ICszMzg2LDcgQEAgUHJvY2Vzc0ludGVycnVwdHModm9pZCkKIAkJ CQkJKGVycmNvZGUoRVJSQ09ERV9RVUVSWV9DQU5DRUxFRCksCiAJCQkJCSBlcnJtc2coImNh bmNlbGluZyBzdGF0ZW1lbnQgZHVlIHRvIHN0YXRlbWVudCB0aW1lb3V0IikpKTsKIAkJfQot CQlpZiAoSXNBdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpKQorCQlpZiAoQW1BdXRvVmFjdXVt V29ya2VyUHJvY2VzcygpKQogCQl7CiAJCQlMb2NrRXJyb3JDbGVhbnVwKCk7CiAJCQllcmVw b3J0KEVSUk9SLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdz dGF0X3JlbGF0aW9uLmMgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfcmVs YXRpb24uYwppbmRleCAxMTEwNTA3MjVhNi4uYjIwYTYwYjVhODcgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9yZWxhdGlvbi5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9yZWxhdGlvbi5jCkBAIC0yNDYsNyArMjQ2 LDcgQEAgcGdzdGF0X3JlcG9ydF92YWN1dW0oT2lkIHRhYmxlb2lkLCBib29sIHNoYXJlZCwK IAkgKi8KIAl0YWJlbnRyeS0+aW5zX3NpbmNlX3ZhY3V1bSA9IDA7CiAKLQlpZiAoSXNBdXRv VmFjdXVtV29ya2VyUHJvY2VzcygpKQorCWlmIChBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNz KCkpCiAJewogCQl0YWJlbnRyeS0+bGFzdF9hdXRvdmFjdXVtX3RpbWUgPSB0czsKIAkJdGFi ZW50cnktPmF1dG92YWN1dW1fY291bnQrKzsKQEAgLTMzNyw3ICszMzcsNyBAQCBwZ3N0YXRf cmVwb3J0X2FuYWx5emUoUmVsYXRpb24gcmVsLAogCWlmIChyZXNldGNvdW50ZXIpCiAJCXRh YmVudHJ5LT5tb2Rfc2luY2VfYW5hbHl6ZSA9IDA7CiAKLQlpZiAoSXNBdXRvVmFjdXVtV29y a2VyUHJvY2VzcygpKQorCWlmIChBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkpCiAJewog CQl0YWJlbnRyeS0+bGFzdF9hdXRvYW5hbHl6ZV90aW1lID0gR2V0Q3VycmVudFRpbWVzdGFt cCgpOwogCQl0YWJlbnRyeS0+YXV0b2FuYWx5emVfY291bnQrKzsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5p dC9nbG9iYWxzLmMKaW5kZXggODhiMDNlOGZhM2MuLmNlMWZhMTA5MmYyIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9pbml0L2dsb2JhbHMuYwpAQCAtMTE0LDcgKzExNCw2IEBAIHBpZF90CQlQb3N0bWFz dGVyUGlkID0gMDsKIGJvb2wJCUlzUG9zdG1hc3RlckVudmlyb25tZW50ID0gZmFsc2U7CiBi b29sCQlJc1VuZGVyUG9zdG1hc3RlciA9IGZhbHNlOwogYm9vbAkJSXNCaW5hcnlVcGdyYWRl ID0gZmFsc2U7Ci1ib29sCQlJc0JhY2tncm91bmRXb3JrZXIgPSBmYWxzZTsKIAogYm9vbAkJ RXhpdE9uQW55RXJyb3IgPSBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvaW5pdC9taXNjaW5pdC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9taXNjaW5pdC5j CmluZGV4IDIzZjc3YTU5ZTU4Li45YzkxZTlhMTMyNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvaW5pdC9taXNjaW5pdC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQv bWlzY2luaXQuYwpAQCAtODM3LDcgKzgzNyw3IEBAIEluaXRpYWxpemVTZXNzaW9uVXNlcklk U3RhbmRhbG9uZSh2b2lkKQogCSAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIG9ubHkgYmUgY2Fs bGVkIGluIHNpbmdsZS11c2VyIG1vZGUsIGluIGF1dG92YWN1dW0KIAkgKiB3b3JrZXJzLCBh bmQgaW4gYmFja2dyb3VuZCB3b3JrZXJzLgogCSAqLwotCUFzc2VydCghSXNVbmRlclBvc3Rt YXN0ZXIgfHwgSXNBdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpIHx8IElzQmFja2dyb3VuZFdv cmtlcik7CisJQXNzZXJ0KCFJc1VuZGVyUG9zdG1hc3RlciB8fCBBbUF1dG9WYWN1dW1Xb3Jr ZXJQcm9jZXNzKCkgfHwgQW1CYWNrZ3JvdW5kV29ya2VyUHJvY2VzcygpKTsKIAogCS8qIGNh bGwgb25seSBvbmNlICovCiAJQXNzZXJ0KCFPaWRJc1ZhbGlkKEF1dGhlbnRpY2F0ZWRVc2Vy SWQpKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYwppbmRleCBlODIyY2Q2MWQ1Zi4u NmJmNzFiMmQ0ZTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGlu aXQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMKQEAgLTM0NCw3 ICszNDQsNyBAQCBDaGVja015RGF0YWJhc2UoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBhbV9z dXBlcnVzZXIsIGJvb2wgb3ZlcnJpZGVfYWxsb3dfY29ubmVjdAogCSAqCiAJICogV2UgZG8g bm90IGVuZm9yY2UgdGhlbSBmb3IgYXV0b3ZhY3V1bSB3b3JrZXIgcHJvY2Vzc2VzIGVpdGhl ci4KIAkgKi8KLQlpZiAoSXNVbmRlclBvc3RtYXN0ZXIgJiYgIUlzQXV0b1ZhY3V1bVdvcmtl clByb2Nlc3MoKSkKKwlpZiAoSXNVbmRlclBvc3RtYXN0ZXIgJiYgIUFtQXV0b1ZhY3V1bVdv cmtlclByb2Nlc3MoKSkKIAl7CiAJCS8qCiAJCSAqIENoZWNrIHRoYXQgdGhlIGRhdGFiYXNl IGlzIGN1cnJlbnRseSBhbGxvd2luZyBjb25uZWN0aW9ucy4KQEAgLTgyNSw3ICs4MjUsNyBA QCBJbml0UG9zdGdyZXMoY29uc3QgY2hhciAqaW5fZGJuYW1lLCBPaWQgZGJvaWQsCiAJYmVm b3JlX3NobWVtX2V4aXQoU2h1dGRvd25Qb3N0Z3JlcywgMCk7CiAKIAkvKiBUaGUgYXV0b3Zh Y3V1bSBsYXVuY2hlciBpcyBkb25lIGhlcmUgKi8KLQlpZiAoSXNBdXRvVmFjdXVtTGF1bmNo ZXJQcm9jZXNzKCkpCisJaWYgKEFtQXV0b1ZhY3V1bUxhdW5jaGVyUHJvY2VzcygpKQogCXsK IAkJLyogcmVwb3J0IHRoaXMgYmFja2VuZCBpbiB0aGUgUGdCYWNrZW5kU3RhdHVzIGFycmF5 ICovCiAJCXBnc3RhdF9iZXN0YXJ0KCk7CkBAIC04NjksNyArODY5LDcgQEAgSW5pdFBvc3Rn cmVzKGNvbnN0IGNoYXIgKmluX2RibmFtZSwgT2lkIGRib2lkLAogCSAqIEluIHN0YW5kYWxv bmUgbW9kZSBhbmQgaW4gYXV0b3ZhY3V1bSB3b3JrZXIgcHJvY2Vzc2VzLCB3ZSB1c2UgYSBm aXhlZAogCSAqIElELCBvdGhlcndpc2Ugd2UgZmlndXJlIGl0IG91dCBmcm9tIHRoZSBhdXRo ZW50aWNhdGVkIHVzZXIgbmFtZS4KIAkgKi8KLQlpZiAoYm9vdHN0cmFwIHx8IElzQXV0b1Zh Y3V1bVdvcmtlclByb2Nlc3MoKSkKKwlpZiAoYm9vdHN0cmFwIHx8IEFtQXV0b1ZhY3V1bVdv cmtlclByb2Nlc3MoKSkKIAl7CiAJCUluaXRpYWxpemVTZXNzaW9uVXNlcklkU3RhbmRhbG9u ZSgpOwogCQlhbV9zdXBlcnVzZXIgPSB0cnVlOwpAQCAtODg1LDcgKzg4NSw3IEBAIEluaXRQ b3N0Z3Jlcyhjb25zdCBjaGFyICppbl9kYm5hbWUsIE9pZCBkYm9pZCwKIAkJCQkJIGVycmhp bnQoIllvdSBzaG91bGQgaW1tZWRpYXRlbHkgcnVuIENSRUFURSBVU0VSIFwiJXNcIiBTVVBF UlVTRVI7LiIsCiAJCQkJCQkJIHVzZXJuYW1lICE9IE5VTEwgPyB1c2VybmFtZSA6ICJwb3N0 Z3JlcyIpKSk7CiAJfQotCWVsc2UgaWYgKElzQmFja2dyb3VuZFdvcmtlcikKKwllbHNlIGlm IChBbUJhY2tncm91bmRXb3JrZXJQcm9jZXNzKCkpCiAJewogCQlpZiAodXNlcm5hbWUgPT0g TlVMTCAmJiAhT2lkSXNWYWxpZCh1c2Vyb2lkKSkKIAkJewpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvbWlzY2FkbWluLmggYi9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAppbmRleCBkYzBm Njc2NWU4Mi4uZmUwZjJiNTk5YTkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL21pc2NhZG1p bi5oCisrKyBiL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCkBAIC0xNjQsNyArMTY0LDYgQEAg ZG8geyBcCiBleHRlcm4gUEdETExJTVBPUlQgcGlkX3QgUG9zdG1hc3RlclBpZDsKIGV4dGVy biBQR0RMTElNUE9SVCBib29sIElzUG9zdG1hc3RlckVudmlyb25tZW50OwogZXh0ZXJuIFBH RExMSU1QT1JUIGJvb2wgSXNVbmRlclBvc3RtYXN0ZXI7Ci1leHRlcm4gUEdETExJTVBPUlQg Ym9vbCBJc0JhY2tncm91bmRXb3JrZXI7CiBleHRlcm4gUEdETExJTVBPUlQgYm9vbCBJc0Jp bmFyeVVwZ3JhZGU7CiAKIGV4dGVybiBQR0RMTElNUE9SVCBib29sIEV4aXRPbkFueUVycm9y OwpAQCAtMzYwLDcgKzM1OSwxMiBAQCB0eXBlZGVmIGVudW0gQmFja2VuZFR5cGUKIGV4dGVy biBQR0RMTElNUE9SVCBCYWNrZW5kVHlwZSBNeUJhY2tlbmRUeXBlOwogCiAjZGVmaW5lIEZJ UlNUX0FVWF9QUk9DIEJfQVJDSElWRVIKKyNkZWZpbmUgSXNBdXhQcm9jZXNzKHR5cGUpCQkJ KE15QmFja2VuZFR5cGUgPj0gRklSU1RfQVVYX1BST0MpCiAKKyNkZWZpbmUgQW1BdXRvVmFj dXVtTGF1bmNoZXJQcm9jZXNzKCkgKE15QmFja2VuZFR5cGUgPT0gQl9BVVRPVkFDX0xBVU5D SEVSKQorI2RlZmluZSBBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkJKE15QmFja2VuZFR5 cGUgPT0gQl9BVVRPVkFDX1dPUktFUikKKyNkZWZpbmUgQW1CYWNrZ3JvdW5kV29ya2VyUHJv Y2VzcygpIChNeUJhY2tlbmRUeXBlID09IEJfQkdfV09SS0VSKQorI2RlZmluZSBBbVdhbFNl bmRlclByb2Nlc3MoKSAgICAgICAgKE15QmFja2VuZFR5cGUgPT0gQl9XQUxfU0VOREVSKQog I2RlZmluZSBBbVN0YXJ0dXBQcm9jZXNzKCkJCQkoTXlCYWNrZW5kVHlwZSA9PSBCX1NUQVJU VVApCiAjZGVmaW5lIEFtQmFja2dyb3VuZFdyaXRlclByb2Nlc3MoKSAoTXlCYWNrZW5kVHlw ZSA9PSBCX0JHX1dSSVRFUikKICNkZWZpbmUgQW1BcmNoaXZlclByb2Nlc3MoKQkJCShNeUJh Y2tlbmRUeXBlID09IEJfQVJDSElWRVIpCkBAIC0zNjksOCArMzczLDYgQEAgZXh0ZXJuIFBH RExMSU1QT1JUIEJhY2tlbmRUeXBlIE15QmFja2VuZFR5cGU7CiAjZGVmaW5lIEFtV2FsUmVj ZWl2ZXJQcm9jZXNzKCkJCShNeUJhY2tlbmRUeXBlID09IEJfV0FMX1JFQ0VJVkVSKQogI2Rl ZmluZSBBbVdhbFN1bW1hcml6ZXJQcm9jZXNzKCkJKE15QmFja2VuZFR5cGUgPT0gQl9XQUxf U1VNTUFSSVpFUikKIAotI2RlZmluZSBJc0F1eFByb2Nlc3ModHlwZSkJCQkoTXlCYWNrZW5k VHlwZSA+PSBGSVJTVF9BVVhfUFJPQykKLQogZXh0ZXJuIGNvbnN0IGNoYXIgKkdldEJhY2tl bmRUeXBlRGVzYyhCYWNrZW5kVHlwZSBiYWNrZW5kVHlwZSk7CiAKIGV4dGVybiB2b2lkIFNl dERhdGFiYXNlUGF0aChjb25zdCBjaGFyICpwYXRoKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5oIGIvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9h dXRvdmFjdXVtLmgKaW5kZXggMTk5NGFlZGVmMDMuLjgwY2Y0Y2RkOTY5IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1dG92YWN1dW0uaAorKysgYi9zcmMvaW5jbHVk ZS9wb3N0bWFzdGVyL2F1dG92YWN1dW0uaApAQCAtNDksMTEgKzQ5LDYgQEAgZXh0ZXJuIFBH RExMSU1QT1JUIGludCBMb2dfYXV0b3ZhY3V1bV9taW5fZHVyYXRpb247CiAKIC8qIFN0YXR1 cyBpbnF1aXJ5IGZ1bmN0aW9ucyAqLwogZXh0ZXJuIGJvb2wgQXV0b1ZhY3V1bWluZ0FjdGl2 ZSh2b2lkKTsKLWV4dGVybiBib29sIElzQXV0b1ZhY3V1bUxhdW5jaGVyUHJvY2Vzcyh2b2lk KTsKLWV4dGVybiBib29sIElzQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3Modm9pZCk7Ci0KLSNk ZWZpbmUgSXNBbnlBdXRvVmFjdXVtUHJvY2VzcygpIFwKLQkoSXNBdXRvVmFjdXVtTGF1bmNo ZXJQcm9jZXNzKCkgfHwgSXNBdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpKQogCiAvKiBGdW5j dGlvbnMgdG8gc3RhcnQgYXV0b3ZhY3V1bSBwcm9jZXNzLCBjYWxsZWQgZnJvbSBwb3N0bWFz dGVyICovCiBleHRlcm4gdm9pZCBhdXRvdmFjX2luaXQodm9pZCk7Ci0tIAoyLjM5LjIKCg== --------------Rwaxn7iHyg7hsWq1khSGJm6k--