Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1a43nf-0005tW-O4 for pgadmin-hackers@arkaria.postgresql.org; Wed, 02 Dec 2015 09:34:12 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84) (envelope-from ) id 1a43ne-0003CH-9p for pgadmin-hackers@arkaria.postgresql.org; Wed, 02 Dec 2015 09:34:10 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84) (envelope-from ) id 1a43ZH-00063D-Sh for pgadmin-hackers@postgresql.org; Wed, 02 Dec 2015 09:19:20 +0000 Received: from mail-oi0-x232.google.com ([2607:f8b0:4003:c06::232]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84) (envelope-from ) id 1a43Z9-00044q-VX for pgadmin-hackers@postgresql.org; Wed, 02 Dec 2015 09:19:18 +0000 Received: by oiww189 with SMTP id w189so20937405oiw.3 for ; Wed, 02 Dec 2015 01:19:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=X+5G9V4evne3Ms7qA2ZfYCPHU02m/QHburL90FnV6ag=; b=hLOYmmHPWJ6Rl9WusinWVB0XfStYUvuAgLRgIUClIAhAimu1UFkBm20raKg+AlN2K6 olKhz8w3XrXkxsydMI5WDCwoxFV99HK/qJVpSupQau/KgvFLjMIYG+Azc5BrC5BclyYg HGrn6zEiWpqvTdPpgDPs7R6qJTOIAY10+lOjUD2XPE147wgEMqll3MlvBKCvgJVIemw0 MmnQSu89/psM7rYvY3k7t/PHmOlGV6uzpr2dKXZSJUKT6BHneyNcxXtF75/H/KMVAdq4 dQehXiXp7r0SjtRfx0mhu2e9sfNbRT/lJHZ1uvX7PRnYoovn5O6Z0b2A+N0IRPS/fA4Q 91Kw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=X+5G9V4evne3Ms7qA2ZfYCPHU02m/QHburL90FnV6ag=; b=Xc2tvw5ccIsHIyu12wh834CuzuklTNVRDk83frNwLfn36zWjDP/LVPMwGIN3v4sgCE gc8hlapzPIC6XwMBG1t+88hKgY5ahaWsVGUCUH6kvQ+d1LnXX8fwpgYsfMfWevJGguzj qFbLWmLC1uAUTtKcY75rJPnpd7jv7nIGiuuOwclLRuTzRe3loJVDlDYGzXZ9Jta1DMdt sRrCWixX32BhXME/EDM5Xg65TfKzilfmqYY+mZVc7bXqNCCy7HHX/NNbloapVVKDFJCz TtpfynvmDjMhiOCDYAZl5854b62VSn7LR21ianOS0qU1I+lmY2h31klIsKxkISSOoG7T r0Jw== X-Gm-Message-State: ALoCoQkwUZwZEajTWgjaSVpFYQqxgqhD3xDEWDRcaBMPwJogl4x94XJN4uoZzZxw1Nok2Rz/dSfC MIME-Version: 1.0 X-Received: by 10.202.205.146 with SMTP id d140mr1558160oig.1.1449047950828; Wed, 02 Dec 2015 01:19:10 -0800 (PST) Received: by 10.202.80.5 with HTTP; Wed, 2 Dec 2015 01:19:10 -0800 (PST) In-Reply-To: <48AA5EAC-64A6-466E-9900-E32EDD4187C0@pgadmin.org> References: <48AA5EAC-64A6-466E-9900-E32EDD4187C0@pgadmin.org> Date: Wed, 2 Dec 2015 14:49:10 +0530 Message-ID: Subject: Re: [pgadmin-support] SSH tunnel key exchange methods From: Akshay Joshi To: Dave Page Cc: Sven , pgAdmin Support , pgadmin-hackers Content-Type: multipart/mixed; boundary=001a1134e69a5fbd230525e6c46b X-Pg-Spam-Score: -2.6 (--) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgadmin-hackers Precedence: bulk Sender: pgadmin-hackers-owner@postgresql.org --001a1134e69a5fbd230525e6c46b Content-Type: multipart/alternative; boundary=001a1134e69a5fbd1c0525e6c469 --001a1134e69a5fbd1c0525e6c469 Content-Type: text/plain; charset=UTF-8 Hi Dave I have updated the *libssh2* library with the latest available code on their git repository. The new code used "diffie-hellman-group-exchange-sha256" algorithm for key exchange and they also fixed some memory leak. I have verified it by putting the breakpoint in the libssh2 code, so when we called " libssh2_session_init()" it will automatically call "static int diffie_ hellman_sha256(...)" function, but I don't know exactly how to identify the key exchange method (sha1 or sha256) used by the latest libssh2 library. I have tested the pgadmin3 after updating the libssh2 library on CentOS 6.5 (64 bit) and it works fine. I have also modified the code to add human readable error message returned by the library. Attached is the patch file. Can you please review it and if it looks good can you please commit the code. Sven, how you have identified the key exchange algorithm used by libssh2, is there any way to identify using fingerprint or key?? On Mon, Nov 30, 2015 at 6:38 PM, Dave Page wrote: > Ok, thanks Akshay. > > -- > Dave Page > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > > EnterpriseDB UK:http://www.enterprisedb.com > The Enterprise PostgreSQL Company > > On 30 Nov 2015, at 12:57, Akshay Joshi > wrote: > > Hi Dave > > On Mon, Nov 30, 2015 at 10:41 AM, Akshay Joshi .com> wrote: > >> Hi Dave >> >> On Fri, Nov 27, 2015 at 3:01 PM, Dave Page wrote: >> >>> On Fri, Nov 27, 2015 at 9:23 AM, Sven >>> wrote: >>> >> The key exchange methods offered when opening an SSH tunnel are all >>> >> SHA1 and therefore too weak: >>> >> >>> >> [sshd] fatal: Unable to negotiate with xxx.xxx.xxx.xxx: no matching >>> >> key exchange method found. Their offer: >>> >> diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1, >>> >> diffie-hellman-group1-sha1 [preauth] >>> > >>> > Any news on this? If there's no easy way to add safer kexes, I suggest >>> > you disable the SSH feature altogether. SHA1 is dead and IMO nobody >>> > should trust a connection established with SHA1 kexes in order to talk >>> > to databases. >>> >>> Akshay, you know that code best of all. How do we enable safer kexes? >>> >> >> Today I'll look into it on priority and update accordingly. >> > > I have found that "diffie-hellman-group-exchange-sha256" support > has been added to the libssh2 code on September 24, it's not released yet. > Please check https://github.com/libssh2/libssh2/pull/48 . Today I have > tried to update the libssh2, but facing some compilation issues which needs > to be fixed. I am working on it and then check do we need to change our > logic or libssh2 will automatically used "diffie-hellman > -group-exchange-sha256". > > >> >>> -- >>> Dave Page >>> Blog: http://pgsnake.blogspot.com >>> Twitter: @pgsnake >>> >>> EnterpriseDB UK: http://www.enterprisedb.com >>> The Enterprise PostgreSQL Company >>> >> >> >> >> -- >> *Akshay Joshi* >> *Principal Software Engineer * >> >> >> >> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246* >> > > > > -- > *Akshay Joshi* > *Principal Software Engineer * > > > > *Phone: +91 20-3058-9517Mobile: +91 976-788-8246* > > -- *Akshay Joshi* *Principal Software Engineer * *Phone: +91 20-3058-9517Mobile: +91 976-788-8246* --001a1134e69a5fbd1c0525e6c469 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi Dave=C2=A0

I have updated the lib= ssh2 library with the latest available code on their git repository. Th= e new code used=C2=A0"dif= fie-hellman-group-exchange-sha256"=C2=A0algorithm=C2=A0for key=C2=A0exchan= ge and they also fixed some memory leak. I have verified it by putting the = breakpoint in the lib= ssh2 code, so when we called "libssh2_session_init()" it will automatically call "static int diffie_hellman_sha256(...)&q= uot; function, but I don't know exactly how to ident= ify the key exchange method (sha1 or sha256) used by the latest libssh2 lib= rary.

I have tested the pgadmin3 after updati= ng the libssh2 library on Ce= ntOS 6.5 (64 bit) and it works fine. I have also modified the code t= o add human=C2=A0readable error=C2=A0message returned by the library.=C2=A0= Attached is the patch file. Can you= please review it and if it looks good can you please commit the code.

Sven, how you have identified the key exchange al= gorithm used by libssh2, is there any way to identify using fingerprint or = key??

On Mon, Nov= 30, 2015 at 6:38 PM, Dave Page <dpage@pgadmin.org> wrote:
Ok, thanks Akshay.<= span class=3D"">

--=C2=A0
Dave Page
Blog:=C2=A0http://pgsnake.blogspot.com
Twitter: @pgsnake<= br>
EnterpriseDB UK:http://www.enterprisedb.com
The Enterprise PostgreSQL Company=

On 30 Nov 2015, at 12:5= 7, Akshay Joshi <akshay.joshi@enterprisedb.com> wrote:

Hi Dave

On Mon, Nov 30, 2015 at 10:41 AM, Ak= shay Joshi <akshay.josh= i@enterprisedb.com> wrote:
Hi Dave

On Fri, Nov 27, 2015 at 3:01 PM, Dave Page <dpage@pgadm= in.org> wrote:
On Fri, Nov 27, 2015= at 9:23 AM, Sven <svoop_6cedifwf9e@delirium.ch> wrote:
>> The key exchange methods offered when opening an SSH tunnel are al= l
>> SHA1 and therefore too weak:
>>
>> [sshd] fatal: Unable to negotiate with xxx.xxx.xxx.xxx: no matchin= g
>> key exchange method found. Their offer:
>> diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,
>> diffie-hellman-group1-sha1 [preauth]
>
> Any news on this? If there's no easy way to add safer kexes, I sug= gest
> you disable the SSH feature altogether. SHA1 is dead and IMO nobody
> should trust a connection established with SHA1 kexes in order to talk=
> to databases.

Akshay, you know that code best of all. How do we enable safer kexes= ?

=C2=A0 =C2=A0Today I'll lo= ok into it on priority and update accordingly.
=C2=A0
=C2=A0 =C2=A0 =C2=A0 =C2=A0I have found that = "diffie-hellman-group-exchange-sha256" = support has been added to the libssh2 code on September 24, it's not re= leased yet. Please check=C2=A0https://github.com/libssh2/libssh2= /pull/48=C2=A0. Today I have tried to update the libssh2, but facing so= me compilation issues which needs to be fixed. I am working on it and then = check do we need to change our logic or libssh2 will automatically used =C2= =A0"diffie-hellman-group-exchange-sha256&quo= t;.
=C2=A0

--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

<= br clear=3D"all">

--
Akshay Joshi=
Principal = Software Engineer=C2=A0


Phone: +91 20-3058-9517
Mobile: +91 976-788-8246
=



--
= Akshay Joshi
Principal Software Engineer=C2=A0


Phone: += 91 20-3058-9517
Mobile: +91 976-788-8246



--
Akshay Joshi


<= b>Phone: +91 20-3058-9517
Mobile: +91 976-788= -8246
--001a1134e69a5fbd1c0525e6c469-- --001a1134e69a5fbd230525e6c46b Content-Type: application/octet-stream; name="Update_Libssh2_Library.patch" Content-Disposition: attachment; filename="Update_Libssh2_Library.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iholnsnj0 ZGlmZiAtLWdpdCBhL2FjaW5jbHVkZS1zc2gyLm00IGIvYWNpbmNsdWRlLXNz aDIubTQKaW5kZXggMTRiNDczNi4uNzE4NjBkNiAxMDA2NDQKLS0tIGEvYWNp bmNsdWRlLXNzaDIubTQKKysrIGIvYWNpbmNsdWRlLXNzaDIubTQKQEAgLTEs MyArMSwxNTMgQEAKKworZG5sICoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK K2RubCBDVVJMX0RFVEVDVF9JQ0MgKFtBQ1RJT04tSUYtWUVTXSkKK2RubAor ZG5sIGNoZWNrIGlmIHRoaXMgaXMgdGhlIEludGVsIElDQyBjb21waWxlciwg YW5kIGlmIHNvIHJ1biB0aGUgQUNUSU9OLUlGLVlFUworZG5sIHNldHMgdGhl ICRJQ0MgdmFyaWFibGUgdG8gInllcyIgb3IgIm5vIgorZG5sICoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKK0FDX0RFRlVOKFtDVVJMX0RFVEVDVF9JQ0Nd LAorWworICAgIElDQz0ibm8iCisgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3Ig aWNjIGluIHVzZV0pCisgICAgaWYgdGVzdCAiJEdDQyIgPSAieWVzIjsgdGhl bgorICAgICAgIGRubCBjaGVjayBpZiB0aGlzIGlzIGljYyBhY3RpbmcgYXMg Z2NjIGluIGRpc2d1aXNlCisgICAgICAgQUNfRUdSRVBfQ1BQKFteX19JTlRF TF9DT01QSUxFUl0sIFtfX0lOVEVMX0NPTVBJTEVSXSwKKyAgICAgICAgIGRu bCBhY3Rpb24gaWYgdGhlIHRleHQgaXMgZm91bmQsIHRoaXMgaXQgaGFzIG5v dCBiZWVuIHJlcGxhY2VkIGJ5IHRoZQorICAgICAgICAgZG5sIGNwcAorICAg ICAgICAgSUNDPSJubyIsCisgICAgICAgICBkbmwgdGhlIHRleHQgd2FzIG5v dCBmb3VuZCwgaXQgd2FzIHJlcGxhY2VkIGJ5IHRoZSBjcHAKKyAgICAgICAg IElDQz0ieWVzIgorICAgICAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKKyAg ICAgICAgIFskMV0KKyAgICAgICApCisgICAgZmkKKyAgICBpZiB0ZXN0ICIk SUNDIiA9ICJubyI7IHRoZW4KKyAgICAgICAgIyB0aGlzIGlzIG5vdCBJQ0MK KyAgICAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQorICAgIGZpCitdKQorCitk bmwgV2UgY3JlYXRlIGEgZnVuY3Rpb24gZm9yIGRldGVjdGluZyB3aGljaCBj b21waWxlciB3ZSB1c2UgYW5kIHRoZW4gc2V0IGFzCitkbmwgcGVuZGFudGlj IGNvbXBpbGVyIG9wdGlvbnMgYXMgcG9zc2libGUgZm9yIHRoYXQgcGFydGlj dWxhciBjb21waWxlci4gVGhlCitkbmwgb3B0aW9ucyBhcmUgb25seSB1c2Vk IGZvciBkZWJ1Zy1idWlsZHMuCisKK0FDX0RFRlVOKFtDVVJMX0NDX0RFQlVH X09QVFNdLAorWworICAgIGlmIHRlc3QgInokSUNDIiA9ICJ6IjsgdGhlbgor ICAgICAgQ1VSTF9ERVRFQ1RfSUNDCisgICAgZmkKKworICAgIGlmIHRlc3Qg IiRHQ0MiID0gInllcyI7IHRoZW4KKworICAgICAgIGRubCBmaWd1cmUgb3V0 IGdjYyB2ZXJzaW9uIQorICAgICAgIEFDX01TR19DSEVDS0lORyhbZ2NjIHZl cnNpb25dKQorICAgICAgIGdjY3Zlcj1gJENDIC1kdW1wdmVyc2lvbmAKKyAg ICAgICBudW0xPWBlY2hvICRnY2N2ZXIgfCBjdXQgLWQgLiAtZjFgCisgICAg ICAgbnVtMj1gZWNobyAkZ2NjdmVyIHwgY3V0IC1kIC4gLWYyYAorICAgICAg IGdjY251bT1gKGV4cHIgJG51bTEgIioiIDEwMCArICRudW0yKSAyPi9kZXYv bnVsbGAKKyAgICAgICBBQ19NU0dfUkVTVUxUKCRnY2N2ZXIpCisKKyAgICAg ICBpZiB0ZXN0ICIkSUNDIiA9ICJ5ZXMiOyB0aGVuCisgICAgICAgICBkbmwg dGhpcyBpcyBpY2MsIG5vdCBnY2MuCisKKyAgICAgICAgIGRubCBJQ0Mgd2Fy bmluZ3Mgd2UgaWdub3JlOgorICAgICAgICAgZG5sICogMjY5IHdhcm5zIG9u IG91ciAiJU9kIiBwcmludGYgZm9ybWF0dGVycyBmb3IgY3VybF9vZmZfdCBv dXRwdXQ6CisgICAgICAgICBkbmwgICAiaW52YWxpZCBmb3JtYXQgc3RyaW5n IGNvbnZlcnNpb24iCisgICAgICAgICBkbmwgKiAyNzkgd2FybnMgb24gc3Rh dGljIGNvbmRpdGlvbnMgaW4gd2hpbGUgZXhwcmVzc2lvbnMKKyAgICAgICAg IGRubCAqIDk4MSB3YXJucyBvbiAib3BlcmFuZHMgYXJlIGV2YWx1YXRlZCBp biB1bnNwZWNpZmllZCBvcmRlciIKKyAgICAgICAgIGRubCAqIDE0MTggImV4 dGVybmFsIGRlZmluaXRpb24gd2l0aCBubyBwcmlvciBkZWNsYXJhdGlvbiIK KyAgICAgICAgIGRubCAqIDE0MTkgd2FybnMgb24gImV4dGVybmFsIGRlY2xh cmF0aW9uIGluIHByaW1hcnkgc291cmNlIGZpbGUiCisgICAgICAgICBkbmwg ICB3aGljaCB3ZSBrbm93IGFuZCBkbyBvbiBwdXJwb3NlLgorCisgICAgICAg ICBXQVJOPSItd2QyNzksMjY5LDk4MSwxNDE4LDE0MTkiCisKKyAgICAgICAg IGlmIHRlc3QgIiRnY2NudW0iIC1ndCAiNjAwIjsgdGhlbgorICAgICAgICAg ICAgZG5sIGljYyA2LjAgYW5kIG9sZGVyIGRvZXNuJ3QgaGF2ZSB0aGUgLVdh bGwgZmxhZworICAgICAgICAgICAgV0FSTj0iLVdhbGwgJFdBUk4iCisgICAg ICAgICBmaQorICAgICAgIGVsc2UgZG5sICRJQ0MgPSB5ZXMKKyAgICAgICAg IGRubCB0aGlzIGlzIGEgc2V0IG9mIG9wdGlvbnMgd2UgYmVsaWV2ZSAqQUxM KiBnY2MgdmVyc2lvbnMgc3VwcG9ydDoKKyAgICAgICAgIFdBUk49Ii1XIC1X YWxsIC1Xd3JpdGUtc3RyaW5ncyAtcGVkYW50aWMgLVdwb2ludGVyLWFyaXRo IC1XbmVzdGVkLWV4dGVybnMgLVdpbmxpbmUgLVdtaXNzaW5nLXByb3RvdHlw ZXMiCisKKyAgICAgICAgIGRubCAtV2Nhc3QtYWxpZ24gaXMgYSBiaXQgdG9v IGFubm95aW5nIG9uIGFsbCBnY2MgdmVyc2lvbnMgOy0pCisKKyAgICAgICAg IGlmIHRlc3QgIiRnY2NudW0iIC1nZSAiMjA3IjsgdGhlbgorICAgICAgICAg ICBkbmwgZ2NjIDIuNyBvciBsYXRlcgorICAgICAgICAgICBXQVJOPSIkV0FS TiAtV21pc3NpbmctZGVjbGFyYXRpb25zIgorICAgICAgICAgZmkKKworICAg ICAgICAgaWYgdGVzdCAiJGdjY251bSIgLWd0ICIyOTUiOyB0aGVuCisgICAg ICAgICAgIGRubCBvbmx5IGlmIHRoZSBjb21waWxlciBpcyBuZXdlciB0aGFu IDIuOTUgc2luY2Ugd2UgZ290IGxvdHMgb2YKKyAgICAgICAgICAgZG5sICJg X1BPU0lYX0NfU09VUkNFJyBpcyBub3QgZGVmaW5lZCIgaW4gc3lzdGVtIGhl YWRlcnMgd2l0aAorICAgICAgICAgICBkbmwgZ2NjIDIuOTUuNCBvbiBGcmVl QlNEIDQuOSEKKyAgICAgICAgICAgV0FSTj0iJFdBUk4gLVd1bmRlZiAtV25v LWxvbmctbG9uZyAtV3NpZ24tY29tcGFyZSIKKyAgICAgICAgIGZpCisKKyAg ICAgICAgIGlmIHRlc3QgIiRnY2NudW0iIC1nZSAiMjk2IjsgdGhlbgorICAg ICAgICAgICBkbmwgZ2NjIDIuOTYgb3IgbGF0ZXIKKyAgICAgICAgICAgV0FS Tj0iJFdBUk4gLVdmbG9hdC1lcXVhbCIKKyAgICAgICAgIGZpCisKKyAgICAg ICAgIGlmIHRlc3QgIiRnY2NudW0iIC1ndCAiMjk2IjsgdGhlbgorICAgICAg ICAgICBkbmwgdGhpcyBvcHRpb24gZG9lcyBub3QgZXhpc3QgaW4gMi45Ngor ICAgICAgICAgICBXQVJOPSIkV0FSTiAtV25vLWZvcm1hdC1ub25saXRlcmFs IgorICAgICAgICAgZmkKKworICAgICAgICAgZG5sIC1XdW5yZWFjaGFibGUt Y29kZSBzZWVtcyB0b3RhbGx5IHVucmVsaWFibGUgb24gbXkgZ2NjIDMuMy4y IG9uCisgICAgICAgICBkbmwgb24gaTY4Ni1MaW51eCBhcyBpdCBnaXZlcyB1 cyBoZWFwcyB3aXRoIGZhbHNlIHBvc2l0aXZlcy4KKyAgICAgICAgIGRubCBB bHNvLCBvbiBnY2MgNC4wLlggaXQgaXMgdG90YWxseSB1bmJlYXJhYmxlIGFu ZCBjb21wbGFpbnMgYWxsCisgICAgICAgICBkbmwgb3ZlciBtYWtpbmcgaXQg dW51c2FibGUgZm9yIGdlbmVyaWMgcHVycG9zZXMuIExldCdzIG5vdCB1c2Ug aXQuCisKKyAgICAgICAgIGlmIHRlc3QgIiRnY2NudW0iIC1nZSAiMzAzIjsg dGhlbgorICAgICAgICAgICBkbmwgZ2NjIDMuMyBhbmQgbGF0ZXIKKyAgICAg ICAgICAgV0FSTj0iJFdBUk4gLVdlbmRpZi1sYWJlbHMgLVdzdHJpY3QtcHJv dG90eXBlcyIKKyAgICAgICAgIGZpCisKKyAgICAgICAgIGlmIHRlc3QgIiRn Y2NudW0iIC1nZSAiMzA0IjsgdGhlbgorICAgICAgICAgICAjIHRyeSB0aGVz ZSBvbiBnY2MgMy40CisgICAgICAgICAgIFdBUk49IiRXQVJOIC1XZGVjbGFy YXRpb24tYWZ0ZXItc3RhdGVtZW50IgorICAgICAgICAgZmkKKworICAgICAg ICAgZm9yIGZsYWcgaW4gJENQUEZMQUdTOyBkbworICAgICAgICAgICBjYXNl ICIkZmxhZyIgaW4KKyAgICAgICAgICAgIC1JKikKKyAgICAgICAgICAgICAg ZG5sIEluY2x1ZGUgcGF0aCwgcHJvdmlkZSBhIC1pc3lzdGVtIG9wdGlvbiBm b3IgdGhlIHNhbWUgZGlyCisgICAgICAgICAgICAgIGRubCB0byBwcmV2ZW50 IHdhcm5pbmdzIGluIHRob3NlIGRpcnMuIFRoZSAtaXN5c3RlbSB3YXMgbm90 IHZlcnkKKyAgICAgICAgICAgICAgZG5sIHJlbGlhYmxlIG9uIGVhcmxpZXIg Z2NjIHZlcnNpb25zLgorICAgICAgICAgICAgICBhZGQ9YGVjaG8gJGZsYWcg fCBzZWQgJ3MvXi1JLy1pc3lzdGVtIC9nJ2AKKyAgICAgICAgICAgICAgV0FS Tj0iJFdBUk4gJGFkZCIKKyAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAg ZXNhYworICAgICAgICAgZG9uZQorCisgICAgICAgZmkgZG5sICRJQ0MgPSBu bworCisgICAgICAgQ0ZMQUdTPSIkQ0ZMQUdTICRXQVJOIgorCisgICAgICBB Q19NU0dfTk9USUNFKFtBZGRlZCB0aGlzIHNldCBvZiBjb21waWxlciBvcHRp b25zOiAkV0FSTl0pCisKKyAgICBlbHNlIGRubCAkR0NDID0geWVzCisKKyAg ICAgIEFDX01TR19OT1RJQ0UoW0FkZGVkIG5vIGV4dHJhIGNvbXBpbGVyIG9w dGlvbnNdKQorCisgICAgZmkgZG5sICRHQ0MgPSB5ZXMKKworICAgIGRubCBz dHJpcCBvZmYgb3B0aW1pemVyIGZsYWdzCisgICAgTkVXRkxBR1M9IiIKKyAg ICBmb3IgZmxhZyBpbiAkQ0ZMQUdTOyBkbworICAgICAgY2FzZSAiJGZsYWci IGluCisgICAgICAtTyopCisgICAgICAgIGRubCBlY2hvICJjdXQgb2ZmICRm bGFnIgorICAgICAgICA7OworICAgICAgKikKKyAgICAgICAgTkVXRkxBR1M9 IiRORVdGTEFHUyAkZmxhZyIKKyAgICAgICAgOzsKKyAgICAgIGVzYWMKKyAg ICBkb25lCisgICAgQ0ZMQUdTPSRORVdGTEFHUworCitdKSBkbmwgZW5kIG9m IEFDX0RFRlVOKCkKKwogZG5sIENVUkxfQ0hFQ0tfTk9OQkxPQ0tJTkdfU09D S0VUCiBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogZG5sIENoZWNrIGZvciBob3cgdG8gc2V0IGEgc29j a2V0IHRvIG5vbi1ibG9ja2luZyBzdGF0ZS4gVGhlcmUgc2VlbXMgdG8gZXhp c3QKQEAgLTExLDEyNCArMTYxLDIyNCBAQCBkbmwgdG8gZ2V0IGNhdWdodCBp biB0aGlzIHNjcmlwdCBieSB1c2luZyBhbiBleGNlc3NpdmUgbnVtYmVyIG9m ICNpZmRlZnMuLi4KIGRubAogQUNfREVGVU4oW0NVUkxfQ0hFQ0tfTk9OQkxP Q0tJTkdfU09DS0VUXSwKIFsKLQlBQ19NU0dfQ0hFQ0tJTkcoW25vbi1ibG9j a2luZyBzb2NrZXRzIHN0eWxlXSkKLQlBQ19UUllfQ09NUElMRShbCi0JCS8q IGhlYWRlcnMgZm9yIE9fTk9OQkxPQ0sgdGVzdCAqLwotCQkjaW5jbHVkZSA8 c3lzL3R5cGVzLmg+Ci0JCSNpbmNsdWRlIDx1bmlzdGQuaD4KLQkJI2luY2x1 ZGUgPGZjbnRsLmg+Ci0JXSxbCi0JCS8qIHRyeSB0byBjb21waWxlIE9fTk9O QkxPQ0sgKi8KLQotCQkjaWYgZGVmaW5lZChzdW4pIHx8IGRlZmluZWQoX19z dW5fXykgfHwgZGVmaW5lZChfX1NVTlBST19DKSB8fCBkZWZpbmVkKF9fU1VO UFJPX0NDKQotCQkJIyBpZiBkZWZpbmVkKF9fU1ZSNCkgfHwgZGVmaW5lZChf X3NydjRfXykKLQkJCQkjICBkZWZpbmUgUExBVEZPUk1fU09MQVJJUwotCQkJ IyBlbHNlCi0JCQkJIyAgZGVmaW5lIFBMQVRGT1JNX1NVTk9TNAotCQkJIyBl bmRpZgotCQkjZW5kaWYKLQkJI2lmIChkZWZpbmVkKF9BSVgpIHx8IGRlZmlu ZWQoX194bENfXykpICYmICFkZWZpbmVkKF9BSVg0MSkKLQkJCSMgZGVmaW5l IFBMQVRGT1JNX0FJWF9WMwotCQkjZW5kaWYKLQotCQkjaWYgZGVmaW5lZChQ TEFURk9STV9TVU5PUzQpIHx8IGRlZmluZWQoUExBVEZPUk1fQUlYX1YzKSB8 fCBkZWZpbmVkKF9fQkVPU19fKQotCQkJI2Vycm9yICJPX05PTkJMT0NLIGRv ZXMgbm90IHdvcmsgb24gdGhpcyBwbGF0Zm9ybSIKLQkJI2VuZGlmCi0JCWlu dCBzb2NrZXQ7Ci0JCWludCBmbGFncyA9IGZjbnRsKHNvY2tldCwgRl9TRVRG TCwgZmxhZ3MgfCBPX05PTkJMT0NLKTsKLQldLFsKLQkJZG5sIHRoZSBPX05P TkJMT0NLIHRlc3Qgd2FzIGZpbmUKLQkJbm9uYmxvY2s9Ik9fTk9OQkxPQ0si Ci0JCUFDX0RFRklORShIQVZFX09fTk9OQkxPQ0ssIDEsIFt1c2UgT19OT05C TE9DSyBmb3Igbm9uLWJsb2NraW5nIHNvY2tldHNdKQotCV0sWwotCQlkbmwg dGhlIGNvZGUgd2FzIGJhZCwgdHJ5IGEgZGlmZmVyZW50IHByb2dyYW0gbm93 LCB0ZXN0IDIKLQotCQlBQ19UUllfQ09NUElMRShbCi0JCQkvKiBoZWFkZXJz IGZvciBGSU9OQklPIHRlc3QgKi8KLQkJCSNpbmNsdWRlIDx1bmlzdGQuaD4K LQkJCSNpbmNsdWRlIDxzdHJvcHRzLmg+Ci0JCV0sWwotCQkJLyogRklPTkJJ TyBzb3VyY2UgdGVzdCAob2xkLXN0eWxlIHVuaXgpICovCi0JCQlpbnQgc29j a2V0OwotCQkJaW50IGZsYWdzID0gaW9jdGwoc29ja2V0LCBGSU9OQklPLCAm ZmxhZ3MpOwotCQldLFsKLQkJCWRubCBGSU9OQklPIHRlc3Qgd2FzIGdvb2QK LQkJCW5vbmJsb2NrPSJGSU9OQklPIgotCQkJQUNfREVGSU5FKEhBVkVfRklP TkJJTywgMSwgW3VzZSBGSU9OQklPIGZvciBub24tYmxvY2tpbmcgc29ja2V0 c10pCi0JCV0sWwotCQkJZG5sIEZJT05CSU8gdGVzdCB3YXMgYWxzbyBiYWQK LQkJCWRubCB0aGUgY29kZSB3YXMgYmFkLCB0cnkgYSBkaWZmZXJlbnQgcHJv Z3JhbSBub3csIHRlc3QgMwotCi0JCQlBQ19UUllfQ09NUElMRShbCi0JCQkJ LyogaGVhZGVycyBmb3IgaW9jdGxzb2NrZXQgdGVzdCAoV2luZG93cykgKi8K LQkJCQkjdW5kZWYgaW5saW5lCi0JCQkJI2lmZGVmIEhBVkVfV0lORE9XU19I Ci0JCQkJCSNpZm5kZWYgV0lOMzJfTEVBTl9BTkRfTUVBTgotCQkJCQkJI2Rl ZmluZSBXSU4zMl9MRUFOX0FORF9NRUFOCi0JCQkJCSNlbmRpZgotCQkJCQkj aW5jbHVkZSA8d2luZG93cy5oPgotCQkJCQkjaWZkZWYgSEFWRV9XSU5TT0NL Ml9ICi0JCQkJCQkjaW5jbHVkZSA8d2luc29jazIuaD4KLQkJCQkJI2Vsc2UK LQkJCQkJCSNpZmRlZiBIQVZFX1dJTlNPQ0tfSAotCQkJCQkJCSNpbmNsdWRl IDx3aW5zb2NrLmg+Ci0JCQkJCQkjZW5kaWYKLQkJCQkJI2VuZGlmCi0JCQkJ I2VuZGlmCi0JCQldLFsKLQkJCQkvKiBpb2N0bHNvY2tldCBzb3VyY2UgY29k ZSAqLwotCQkJCVNPQ0tFVCBzZDsKLQkJCQl1bnNpZ25lZCBsb25nIGZsYWdz ID0gMDsKLQkJCQlzZCA9IHNvY2tldCgwLCAwLCAwKTsKLQkJCQlpb2N0bHNv Y2tldChzZCwgRklPTkJJTywgJmZsYWdzKTsKLQkJCV0sWwotCQkJCWRubCBp b2N0bHNvY2tldCB0ZXN0IHdhcyBnb29kCi0JCQkJbm9uYmxvY2s9ImlvY3Rs c29ja2V0IgotCQkJCUFDX0RFRklORShIQVZFX0lPQ1RMU09DS0VULCAxLCBb dXNlIGlvY3Rsc29ja2V0KCkgZm9yIG5vbi1ibG9ja2luZyBzb2NrZXRzXSkK LQkJCV0sWwotCQkJCWRubCBpb2N0bHNvY2tldCBkaWRudCBjb21waWxlISwg Z28gdG8gdGVzdCA0Ci0JCQkJQUNfVFJZX0xJTksoWwotCQkJCQkvKiBoZWFk ZXJzIGZvciBJb2N0bFNvY2tldCB0ZXN0IChBbWlnYT8pICovCi0JCQkJCSNp bmNsdWRlIDxzeXMvaW9jdGwuaD4KLQkJCQldLFsKLQkJCQkJLyogSW9jdGxT b2NrZXQgc291cmNlIGNvZGUgKi8KLQkJCQkJaW50IHNvY2tldDsKLQkJCQkJ aW50IGZsYWdzID0gSW9jdGxTb2NrZXQoc29ja2V0LCBGSU9OQklPLCAobG9u ZykxKTsKLQkJCQldLFsKLQkJCQkJZG5sIGlvY3Rsc29ja2V0IHRlc3Qgd2Fz IGdvb2QKLQkJCQkJbm9uYmxvY2s9IklvY3RsU29ja2V0IgotCQkJCQlBQ19E RUZJTkUoSEFWRV9JT0NUTFNPQ0tFVF9DQVNFLCAxLCBbdXNlIElvY3Rsc29j a2V0KCkgZm9yIG5vbi1ibG9ja2luZyBzb2NrZXRzXSkKLQkJCQldLFsKLQkJ CQkJZG5sIElvY3Rsc29ja2V0IGRpZG50IGNvbXBpbGUsIGRvIHRlc3QgNSEK LQkJCQkJQUNfVFJZX0NPTVBJTEUoWwotCQkJCQkJLyogaGVhZGVycyBmb3Ig U09fTk9OQkxPQ0sgdGVzdCAoQmVPUykgKi8KLQkJCQkJCSNpbmNsdWRlIDxz b2NrZXQuaD4KLQkJCQkJXSxbCi0JCQkJCQkvKiBTT19OT05CTE9DSyBzb3Vy Y2UgY29kZSAqLwotCQkJCQkJbG9uZyBiID0gMTsKLQkJCQkJCWludCBzb2Nr ZXQ7Ci0JCQkJCQlpbnQgZmxhZ3MgPSBzZXRzb2Nrb3B0KHNvY2tldCwgU09M X1NPQ0tFVCwgU09fTk9OQkxPQ0ssICZiLCBzaXplb2YoYikpOwotCQkJCQld LFsKLQkJCQkJCWRubCB0aGUgU09fTk9OQkxPQ0sgdGVzdCB3YXMgZ29vZAot CQkJCQkJbm9uYmxvY2s9IlNPX05PTkJMT0NLIgotCQkJCQkJQUNfREVGSU5F KEhBVkVfU09fTk9OQkxPQ0ssIDEsIFt1c2UgU09fTk9OQkxPQ0sgZm9yIG5v bi1ibG9ja2luZyBzb2NrZXRzXSkKLQkJCQkJXSxbCi0JCQkJCQlkbmwgdGVz dCA1IGRpZG50IGNvbXBpbGUhCi0JCQkJCQlub25ibG9jaz0ibmFkYSIKLQkJ CQkJCUFDX0RFRklORShIQVZFX0RJU0FCTEVEX05PTkJMT0NLSU5HLCAxLCBb ZGlzYWJsZWQgbm9uLWJsb2NraW5nIHNvY2tldHNdKQotCQkJCQldKQotCQkJ CQlkbmwgZW5kIG9mIGZpZnRoIHRlc3QKLQkJCQldKQotCQkJCWRubCBlbmQg b2YgZm9ydGggdGVzdAotCQkJXSkKLQkJCWRubCBlbmQgb2YgdGhpcmQgdGVz dAotCQldKQotCQlkbmwgZW5kIG9mIHNlY29uZCB0ZXN0Ci0JXSkKLQlkbmwg ZW5kIG9mIG5vbi1ibG9ja2luZyB0cnktY29tcGlsZSB0ZXN0Ci0JQUNfTVNH X1JFU1VMVCgkbm9uYmxvY2spCi0KLQlpZiB0ZXN0ICIkbm9uYmxvY2siID0g Im5hZGEiOyB0aGVuCi0JCUFDX01TR19XQVJOKFtub24tYmxvY2sgc29ja2V0 cyBkaXNhYmxlZF0pCi0JZmkKKyAgQUNfTVNHX0NIRUNLSU5HKFtub24tYmxv Y2tpbmcgc29ja2V0cyBzdHlsZV0pCisKKyAgQUNfVFJZX0NPTVBJTEUoWwor LyogaGVhZGVycyBmb3IgT19OT05CTE9DSyB0ZXN0ICovCisjaW5jbHVkZSA8 c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8 ZmNudGwuaD4KK10sWworLyogdHJ5IHRvIGNvbXBpbGUgT19OT05CTE9DSyAq LworCisjaWYgZGVmaW5lZChzdW4pIHx8IGRlZmluZWQoX19zdW5fXykgfHwg ZGVmaW5lZChfX1NVTlBST19DKSB8fCBkZWZpbmVkKF9fU1VOUFJPX0NDKQor IyBpZiBkZWZpbmVkKF9fU1ZSNCkgfHwgZGVmaW5lZChfX3NydjRfXykKKyMg IGRlZmluZSBQTEFURk9STV9TT0xBUklTCisjIGVsc2UKKyMgIGRlZmluZSBQ TEFURk9STV9TVU5PUzQKKyMgZW5kaWYKKyNlbmRpZgorI2lmIChkZWZpbmVk KF9BSVgpIHx8IGRlZmluZWQoX194bENfXykpICYmICFkZWZpbmVkKF9BSVg0 MSkKKyMgZGVmaW5lIFBMQVRGT1JNX0FJWF9WMworI2VuZGlmCisKKyNpZiBk ZWZpbmVkKFBMQVRGT1JNX1NVTk9TNCkgfHwgZGVmaW5lZChQTEFURk9STV9B SVhfVjMpIHx8IGRlZmluZWQoX19CRU9TX18pCisjZXJyb3IgIk9fTk9OQkxP Q0sgZG9lcyBub3Qgd29yayBvbiB0aGlzIHBsYXRmb3JtIgorI2VuZGlmCisg IGludCBzb2NrZXQ7CisgIGludCBmbGFncyA9IGZjbnRsKHNvY2tldCwgRl9T RVRGTCwgZmxhZ3MgfCBPX05PTkJMT0NLKTsKK10sWworZG5sIHRoZSBPX05P TkJMT0NLIHRlc3Qgd2FzIGZpbmUKK25vbmJsb2NrPSJPX05PTkJMT0NLIgor QUNfREVGSU5FKEhBVkVfT19OT05CTE9DSywgMSwgW3VzZSBPX05PTkJMT0NL IGZvciBub24tYmxvY2tpbmcgc29ja2V0c10pCitdLFsKK2RubCB0aGUgY29k ZSB3YXMgYmFkLCB0cnkgYSBkaWZmZXJlbnQgcHJvZ3JhbSBub3csIHRlc3Qg MgorCisgIEFDX1RSWV9DT01QSUxFKFsKKy8qIGhlYWRlcnMgZm9yIEZJT05C SU8gdGVzdCAqLworI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN0 cm9wdHMuaD4KK10sWworLyogRklPTkJJTyBzb3VyY2UgdGVzdCAob2xkLXN0 eWxlIHVuaXgpICovCisgaW50IHNvY2tldDsKKyBpbnQgZmxhZ3MgPSBpb2N0 bChzb2NrZXQsIEZJT05CSU8sICZmbGFncyk7CitdLFsKK2RubCBGSU9OQklP IHRlc3Qgd2FzIGdvb2QKK25vbmJsb2NrPSJGSU9OQklPIgorQUNfREVGSU5F KEhBVkVfRklPTkJJTywgMSwgW3VzZSBGSU9OQklPIGZvciBub24tYmxvY2tp bmcgc29ja2V0c10pCitdLFsKK2RubCBGSU9OQklPIHRlc3Qgd2FzIGFsc28g YmFkCitkbmwgdGhlIGNvZGUgd2FzIGJhZCwgdHJ5IGEgZGlmZmVyZW50IHBy b2dyYW0gbm93LCB0ZXN0IDMKKworICBBQ19UUllfQ09NUElMRShbCisvKiBo ZWFkZXJzIGZvciBpb2N0bHNvY2tldCB0ZXN0IChXaW5kb3dzKSAqLworI3Vu ZGVmIGlubGluZQorI2lmZGVmIEhBVkVfV0lORE9XU19ICisjaWZuZGVmIFdJ TjMyX0xFQU5fQU5EX01FQU4KKyNkZWZpbmUgV0lOMzJfTEVBTl9BTkRfTUVB TgorI2VuZGlmCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2lmZGVmIEhBVkVf V0lOU09DSzJfSAorI2luY2x1ZGUgPHdpbnNvY2syLmg+CisjZWxzZQorI2lm ZGVmIEhBVkVfV0lOU09DS19ICisjaW5jbHVkZSA8d2luc29jay5oPgorI2Vu ZGlmCisjZW5kaWYKKyNlbmRpZgorXSxbCisvKiBpb2N0bHNvY2tldCBzb3Vy Y2UgY29kZSAqLworIFNPQ0tFVCBzZDsKKyB1bnNpZ25lZCBsb25nIGZsYWdz ID0gMDsKKyBzZCA9IHNvY2tldCgwLCAwLCAwKTsKKyBpb2N0bHNvY2tldChz ZCwgRklPTkJJTywgJmZsYWdzKTsKK10sWworZG5sIGlvY3Rsc29ja2V0IHRl c3Qgd2FzIGdvb2QKK25vbmJsb2NrPSJpb2N0bHNvY2tldCIKK0FDX0RFRklO RShIQVZFX0lPQ1RMU09DS0VULCAxLCBbdXNlIGlvY3Rsc29ja2V0KCkgZm9y IG5vbi1ibG9ja2luZyBzb2NrZXRzXSkKK10sWworZG5sIGlvY3Rsc29ja2V0 IGRpZG50IGNvbXBpbGUhLCBnbyB0byB0ZXN0IDQKKworICBBQ19UUllfTElO SyhbCisvKiBoZWFkZXJzIGZvciBJb2N0bFNvY2tldCB0ZXN0IChBbWlnYT8p ICovCisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CitdLFsKKy8qIElvY3RsU29j a2V0IHNvdXJjZSBjb2RlICovCisgaW50IHNvY2tldDsKKyBpbnQgZmxhZ3Mg PSBJb2N0bFNvY2tldChzb2NrZXQsIEZJT05CSU8sIChsb25nKTEpOworXSxb CitkbmwgaW9jdGxzb2NrZXQgdGVzdCB3YXMgZ29vZAorbm9uYmxvY2s9Iklv Y3RsU29ja2V0IgorQUNfREVGSU5FKEhBVkVfSU9DVExTT0NLRVRfQ0FTRSwg MSwgW3VzZSBJb2N0bHNvY2tldCgpIGZvciBub24tYmxvY2tpbmcgc29ja2V0 c10pCitdLFsKK2RubCBJb2N0bHNvY2tldCBkaWRudCBjb21waWxlLCBkbyB0 ZXN0IDUhCisgIEFDX1RSWV9DT01QSUxFKFsKKy8qIGhlYWRlcnMgZm9yIFNP X05PTkJMT0NLIHRlc3QgKEJlT1MpICovCisjaW5jbHVkZSA8c29ja2V0Lmg+ CitdLFsKKy8qIFNPX05PTkJMT0NLIHNvdXJjZSBjb2RlICovCisgbG9uZyBi ID0gMTsKKyBpbnQgc29ja2V0OworIGludCBmbGFncyA9IHNldHNvY2tvcHQo c29ja2V0LCBTT0xfU09DS0VULCBTT19OT05CTE9DSywgJmIsIHNpemVvZihi KSk7CitdLFsKK2RubCB0aGUgU09fTk9OQkxPQ0sgdGVzdCB3YXMgZ29vZAor bm9uYmxvY2s9IlNPX05PTkJMT0NLIgorQUNfREVGSU5FKEhBVkVfU09fTk9O QkxPQ0ssIDEsIFt1c2UgU09fTk9OQkxPQ0sgZm9yIG5vbi1ibG9ja2luZyBz b2NrZXRzXSkKK10sWworZG5sIHRlc3QgNSBkaWRudCBjb21waWxlIQorbm9u YmxvY2s9Im5hZGEiCitBQ19ERUZJTkUoSEFWRV9ESVNBQkxFRF9OT05CTE9D S0lORywgMSwgW2Rpc2FibGVkIG5vbi1ibG9ja2luZyBzb2NrZXRzXSkKK10p CitkbmwgZW5kIG9mIGZpZnRoIHRlc3QKKworXSkKK2RubCBlbmQgb2YgZm9y dGggdGVzdAorCitdKQorZG5sIGVuZCBvZiB0aGlyZCB0ZXN0CisKK10pCitk bmwgZW5kIG9mIHNlY29uZCB0ZXN0CisKK10pCitkbmwgZW5kIG9mIG5vbi1i bG9ja2luZyB0cnktY29tcGlsZSB0ZXN0CisgIEFDX01TR19SRVNVTFQoJG5v bmJsb2NrKQorCisgIGlmIHRlc3QgIiRub25ibG9jayIgPSAibmFkYSI7IHRo ZW4KKyAgICBBQ19NU0dfV0FSTihbbm9uLWJsb2NrIHNvY2tldHMgZGlzYWJs ZWRdKQorICBmaQogXSkKKworZG5sIENVUkxfQ0hFQ0tfTkVFRF9SRUVOVFJB TlRfU1lTVEVNCitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorZG5sIENoZWNrcyBpZiB0aGUgcHJlcHJv Y2Vzc29yIF9SRUVOVFJBTlQgZGVmaW5pdGlvbgorZG5sIG11c3QgYmUgdW5j b25kaXRpb25hbGx5IGRvbmUgZm9yIHRoaXMgcGxhdGZvcm0uCitkbmwgSW50 ZXJuYWwgbWFjcm8gZm9yIENVUkxfQ09ORklHVVJFX1JFRU5UUkFOVC4KKwor QUNfREVGVU4oW0NVUkxfQ0hFQ0tfTkVFRF9SRUVOVFJBTlRfU1lTVEVNXSwg WworICBjYXNlICRob3N0IGluCisgICAgKi0qLXNvbGFyaXMqIHwgKi0qLWhw dXgqKQorICAgICAgdG1wX25lZWRfcmVlbnRyYW50PSJ5ZXMiCisgICAgICA7 OworICAgICopCisgICAgICB0bXBfbmVlZF9yZWVudHJhbnQ9Im5vIgorICAg ICAgOzsKKyAgZXNhYworXSkKKworCitkbmwgQ1VSTF9DT05GSUdVUkVfRlJP TV9OT1dfT05fV0lUSF9SRUVOVFJBTlQKK2RubCAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkbmwgVGhpcyBt YWNybyBlbnN1cmVzIHRoYXQgY29uZmlndXJhdGlvbiB0ZXN0cyBkb25lCitk bmwgYWZ0ZXIgdGhpcyB3aWxsIGV4ZWN1dGUgd2l0aCBwcmVwcm9jZXNzb3Ig c3ltYm9sCitkbmwgX1JFRU5UUkFOVCBkZWZpbmVkLiBUaGlzIG1hY3JvIGFs c28gZW5zdXJlcyB0aGF0CitkbmwgdGhlIGdlbmVyYXRlZCBjb25maWcgZmls ZSBkZWZpbmVzIE5FRURfUkVFTlRSQU5UCitkbmwgYW5kIHRoYXQgaW4gdHVy biBzZXR1cC5oIHdpbGwgZGVmaW5lIF9SRUVOVFJBTlQuCitkbmwgSW50ZXJu YWwgbWFjcm8gZm9yIENVUkxfQ09ORklHVVJFX1JFRU5UUkFOVC4KKworQUNf REVGVU4oW0NVUkxfQ09ORklHVVJFX0ZST01fTk9XX09OX1dJVEhfUkVFTlRS QU5UXSwgWworQUNfREVGSU5FKE5FRURfUkVFTlRSQU5ULCAxLAorICBbRGVm aW5lIHRvIDEgaWYgX1JFRU5UUkFOVCBwcmVwcm9jZXNzb3Igc3ltYm9sIG11 c3QgYmUgZGVmaW5lZC5dKQorY2F0ID4+Y29uZmRlZnMuaCA8PF9FT0YKKyNp Zm5kZWYgX1JFRU5UUkFOVAorIyAgZGVmaW5lIF9SRUVOVFJBTlQKKyNlbmRp ZgorX0VPRgorXSkKKworCitkbmwgQ1VSTF9DT05GSUdVUkVfUkVFTlRSQU5U CitkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorZG5sIFRoaXMgZmlyc3QgY2hlY2tzIGlmIHRoZSBwcmVw cm9jZXNzb3IgX1JFRU5UUkFOVAorZG5sIHN5bWJvbCBpcyBhbHJlYWR5IGRl ZmluZWQuIElmIGl0IGlzbid0IGN1cnJlbnRseQorZG5sIGRlZmluZWQgYSBz ZXQgb2YgY2hlY2tzIGFyZSBwZXJmb3JtZWQgdG8gdmVyaWZ5CitkbmwgaWYg aXRzIGRlZmluaXRpb24gaXMgcmVxdWlyZWQgdG8gbWFrZSB2aXNpYmxlIHRv CitkbmwgdGhlIGNvbXBpbGVyIGEgc2V0IG9mICpfciBmdW5jdGlvbnMuIEZp bmFsbHksIGlmCitkbmwgX1JFRU5UUkFOVCBpcyBhbHJlYWR5IGRlZmluZWQg b3IgbmVlZGVkIGl0IHRha2VzCitkbmwgY2FyZSBvZiBtYWtpbmcgYWRqdXN0 bWVudHMgbmVjZXNzYXJ5IHRvIGVuc3VyZQorZG5sIHRoYXQgaXQgaXMgZGVm aW5lZCBlcXVhbGx5IGZvciBmdXJ0aGVyIGNvbmZpZ3VyZQorZG5sIHRlc3Rz IGFuZCBnZW5lcmF0ZWQgY29uZmlnIGZpbGUuCisKK0FDX0RFRlVOKFtDVVJM X0NPTkZJR1VSRV9SRUVOVFJBTlRdLCBbCisgIEFDX1BSRVJFUShbMi41MF0p ZG5sCisgICMKKyAgQUNfTVNHX0NIRUNLSU5HKFtpZiBfUkVFTlRSQU5UIGlz IGFscmVhZHkgZGVmaW5lZF0pCisgIEFDX0NPTVBJTEVfSUZFTFNFKFsKKyAg ICBBQ19MQU5HX1BST0dSQU0oW1sKKyAgICBdXSxbWworI2lmZGVmIF9SRUVO VFJBTlQKKyAgICAgIGludCBkdW1teT0xOworI2Vsc2UKKyAgICAgIGZvcmNl IGNvbXBpbGF0aW9uIGVycm9yCisjZW5kaWYKKyAgICBdXSkKKyAgXSxbCisg ICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKKyAgICB0bXBfcmVlbnRyYW50X2lu aXRpYWxseV9kZWZpbmVkPSJ5ZXMiCisgIF0sWworICAgIEFDX01TR19SRVNV TFQoW25vXSkKKyAgICB0bXBfcmVlbnRyYW50X2luaXRpYWxseV9kZWZpbmVk PSJubyIKKyAgXSkKKyAgIworICBpZiB0ZXN0ICIkdG1wX3JlZW50cmFudF9p bml0aWFsbHlfZGVmaW5lZCIgPSAibm8iOyB0aGVuCisgICAgQUNfTVNHX0NI RUNLSU5HKFtpZiBfUkVFTlRSQU5UIGlzIGFjdHVhbGx5IG5lZWRlZF0pCisg ICAgQ1VSTF9DSEVDS19ORUVEX1JFRU5UUkFOVF9TWVNURU0KKworICAgIGlm IHRlc3QgIiR0bXBfbmVlZF9yZWVudHJhbnQiID0gInllcyI7IHRoZW4KKyAg ICAgIEFDX01TR19SRVNVTFQoW3llc10pCisgICAgZWxzZQorICAgICAgQUNf TVNHX1JFU1VMVChbbm9dKQorICAgIGZpCisgIGZpCisgICMKKyAgQUNfTVNH X0NIRUNLSU5HKFtpZiBfUkVFTlRSQU5UIGlzIG9ud2FyZHMgZGVmaW5lZF0p CisgIGlmIHRlc3QgIiR0bXBfcmVlbnRyYW50X2luaXRpYWxseV9kZWZpbmVk IiA9ICJ5ZXMiIHx8CisgICAgdGVzdCAiJHRtcF9uZWVkX3JlZW50cmFudCIg PSAieWVzIjsgdGhlbgorICAgIENVUkxfQ09ORklHVVJFX0ZST01fTk9XX09O X1dJVEhfUkVFTlRSQU5UCisgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKKyAg ZWxzZQorICAgIEFDX01TR19SRVNVTFQoW25vXSkKKyAgZmkKKyAgIworXSkK KwpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjLmluIGIvY29uZmlndXJlLmFj LmluCmluZGV4IDU1MDVjNzcuLjE5MTk5MTkgMTAwNjQ0Ci0tLSBhL2NvbmZp Z3VyZS5hYy5pbgorKysgYi9jb25maWd1cmUuYWMuaW4KQEAgLTEwNCw3ICsx MDQsNyBAQCBmaQogQU1fQ09ORElUSU9OQUwoW0JVSUxEX1NTSF9UVU5ORUxd LCBbdGVzdCB4JEJVSUxEX1NTSF9UVU5ORUwgPSB4eWVzXSkKIAogaWYgdGVz dCAiJGFjX2N2X2xpYnNzbCIgPSAieWVzIjsgdGhlbgotCUNQUEZMQUdTPSIk Q1BQRkxBR1MgLURIQVZFX09QRU5TU0xfQ1JZUFRPIgorCUNQUEZMQUdTPSIk Q1BQRkxBR1MgLURIQVZFX09QRU5TU0xfQ1JZUFRPIC1ETElCU1NIMl9PUEVO U1NMIgogCUxJQlM9IiRMSUJTICRMSUJTU0wiCiBmaQogCmRpZmYgLS1naXQg YS9saWItbGQubTQgYi9saWItbGQubTQKaW5kZXggNGUxMzc0ZC4uOTZjNGUy YyAxMDA2NDQKLS0tIGEvbGliLWxkLm00CisrKyBiL2xpYi1sZC5tNApAQCAt MSw1ICsxLDUgQEAKLSMgbGliLWxkLm00IHNlcmlhbCA1IChnZXR0ZXh0LTAu MTguMikKLWRubCBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMywgMjAwOS0yMDEy IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBsaWItbGQubTQg c2VyaWFsIDMgKGdldHRleHQtMC4xMykKK2RubCBDb3B5cmlnaHQgKEMpIDE5 OTYtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIGRubCBU aGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbgogZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRv IGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCiBkbmwgd2l0aCBvciB3aXRo b3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMg cHJlc2VydmVkLgpAQCAtMTAsNyArMTAsNyBAQCBkbmwgd2l0aCBsaWJ0b29s Lm00LgogCiBkbmwgRnJvbSBsaWJ0b29sLTEuNC4gU2V0cyB0aGUgdmFyaWFi bGUgd2l0aF9nbnVfbGQgdG8geWVzIG9yIG5vLgogQUNfREVGVU4oW0FDX0xJ Ql9QUk9HX0xEX0dOVV0sCi1bQUNfQ0FDSEVfQ0hFQ0soW2lmIHRoZSBsaW5r ZXIgKCRMRCkgaXMgR05VIGxkXSwgW2FjbF9jdl9wcm9nX2dudV9sZF0sCitb QUNfQ0FDSEVfQ0hFQ0soW2lmIHRoZSBsaW5rZXIgKCRMRCkgaXMgR05VIGxk XSwgYWNsX2N2X3Byb2dfZ251X2xkLAogWyMgSSdkIHJhdGhlciB1c2UgLS12 ZXJzaW9uIGhlcmUsIGJ1dCBhcHBhcmVudGx5IHNvbWUgR05VIGxkJ3Mgb25s eSBhY2NlcHQgLXYuCiBjYXNlIGAkTEQgLXYgMj4mMSA8L2Rldi9udWxsYCBp bgogKkdOVSogfCAqJ3dpdGggQkZEJyopCkBAIC0yMyw3ICsyMyw3IEBAIHdp dGhfZ251X2xkPSRhY2xfY3ZfcHJvZ19nbnVfbGQKIAogZG5sIEZyb20gbGli dG9vbC0xLjQuIFNldHMgdGhlIHZhcmlhYmxlIExELgogQUNfREVGVU4oW0FD X0xJQl9QUk9HX0xEXSwKLVtBQ19BUkdfV0lUSChbZ251LWxkXSwKK1tBQ19B UkdfV0lUSChnbnUtbGQsCiBbICAtLXdpdGgtZ251LWxkICAgICAgICAgICBh c3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9d XSwKIHRlc3QgIiR3aXRodmFsIiA9IG5vIHx8IHdpdGhfZ251X2xkPXllcywg d2l0aF9nbnVfbGQ9bm8pCiBBQ19SRVFVSVJFKFtBQ19QUk9HX0NDXSlkbmwK QEAgLTMxLDE0ICszMSwxNSBAQCBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxf SE9TVF0pZG5sCiAjIFByZXBhcmUgUEFUSF9TRVBBUkFUT1IuCiAjIFRoZSB1 c2VyIGlzIGFsd2F5cyByaWdodC4KIGlmIHRlc3QgIiR7UEFUSF9TRVBBUkFU T1Irc2V0fSIgIT0gc2V0OyB0aGVuCi0gICMgRGV0ZXJtaW5lIFBBVEhfU0VQ QVJBVE9SIGJ5IHRyeWluZyB0byBmaW5kIC9iaW4vc2ggaW4gYSBQQVRIIHdo aWNoCi0gICMgY29udGFpbnMgb25seSAvYmluLiBOb3RlIHRoYXQga3NoIGxv b2tzIGFsc28gYXQgdGhlIEZQQVRIIHZhcmlhYmxlLAotICAjIHNvIHdlIGhh dmUgdG8gc2V0IHRoYXQgYXMgd2VsbCBmb3IgdGhlIHRlc3QuCi0gIFBBVEhf U0VQQVJBVE9SPToKLSAgKFBBVEg9Jy9iaW47L2Jpbic7IEZQQVRIPSRQQVRI OyBzaCAtYyA6KSA+L2Rldi9udWxsIDI+JjEgXAotICAgICYmIHsgKFBBVEg9 Jy9iaW46L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rldi9udWxs IDI+JjEgXAotICAgICAgICAgICB8fCBQQVRIX1NFUEFSQVRPUj0nOycKLSAg ICAgICB9CisgIGVjaG8gIiMhIC9iaW4vc2giID5jb25mJCQuc2gKKyAgZWNo byAgImV4aXQgMCIgICA+PmNvbmYkJC5zaAorICBjaG1vZCAreCBjb25mJCQu c2gKKyAgaWYgKFBBVEg9Ii9ub25leGlzdGVudDsuIjsgY29uZiQkLnNoKSA+ L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgICBQQVRIX1NFUEFSQVRPUj0nOycK KyAgZWxzZQorICAgIFBBVEhfU0VQQVJBVE9SPToKKyAgZmkKKyAgcm0gLWYg Y29uZiQkLnNoCiBmaQogYWNfcHJvZz1sZAogaWYgdGVzdCAiJEdDQyIgPSB5 ZXM7IHRoZW4KQEAgLTU4LDcgKzU5LDcgQEAgaWYgdGVzdCAiJEdDQyIgPSB5 ZXM7IHRoZW4KICAgICAgICMgQ2Fub25pY2FsaXplIHRoZSBwYXRoIG9mIGxk CiAgICAgICBhY19wcm9nPWBlY2hvICRhY19wcm9nfCBzZWQgJ3MlXFxcXCUv JWcnYAogICAgICAgd2hpbGUgZWNobyAkYWNfcHJvZyB8IGdyZXAgIiRyZV9k aXJlbHQiID4gL2Rldi9udWxsIDI+JjE7IGRvCi0gICAgICAgIGFjX3Byb2c9 YGVjaG8gJGFjX3Byb2d8IHNlZCAicyUkcmVfZGlyZWx0JS8lImAKKwlhY19w cm9nPWBlY2hvICRhY19wcm9nfCBzZWQgInMlJHJlX2RpcmVsdCUvJSJgCiAg ICAgICBkb25lCiAgICAgICB0ZXN0IC16ICIkTEQiICYmIExEPSIkYWNfcHJv ZyIKICAgICAgIDs7CkBAIC03Niw3ICs3Nyw3IEBAIGVsaWYgdGVzdCAiJHdp dGhfZ251X2xkIiA9IHllczsgdGhlbgogZWxzZQogICBBQ19NU0dfQ0hFQ0tJ TkcoW2ZvciBub24tR05VIGxkXSkKIGZpCi1BQ19DQUNIRV9WQUwoW2FjbF9j dl9wYXRoX0xEXSwKK0FDX0NBQ0hFX1ZBTChhY2xfY3ZfcGF0aF9MRCwKIFtp ZiB0ZXN0IC16ICIkTEQiOyB0aGVuCiAgIElGUz0iJHtJRlM9IAl9IjsgYWNf c2F2ZV9pZnM9IiRJRlMiOyBJRlM9IiR7SUZTfSR7UEFUSF9TRVBBUkFUT1It On0iCiAgIGZvciBhY19kaXIgaW4gJFBBVEg7IGRvCkBAIC04OCw5ICs4OSw5 IEBAIEFDX0NBQ0hFX1ZBTChbYWNsX2N2X3BhdGhfTERdLAogICAgICAgIyBC cmVhayBvbmx5IGlmIGl0IHdhcyB0aGUgR05VL25vbi1HTlUgbGQgdGhhdCB3 ZSBwcmVmZXIuCiAgICAgICBjYXNlIGAiJGFjbF9jdl9wYXRoX0xEIiAtdiAy PiYxIDwgL2Rldi9udWxsYCBpbgogICAgICAgKkdOVSogfCAqJ3dpdGggQkZE JyopCi0gICAgICAgIHRlc3QgIiR3aXRoX2dudV9sZCIgIT0gbm8gJiYgYnJl YWsgOzsKKwl0ZXN0ICIkd2l0aF9nbnVfbGQiICE9IG5vICYmIGJyZWFrIDs7 CiAgICAgICAqKQotICAgICAgICB0ZXN0ICIkd2l0aF9nbnVfbGQiICE9IHll cyAmJiBicmVhayA7OworCXRlc3QgIiR3aXRoX2dudV9sZCIgIT0geWVzICYm IGJyZWFrIDs7CiAgICAgICBlc2FjCiAgICAgZmkKICAgZG9uZQpAQCAtMTAw LDkgKzEwMSw5IEBAIGVsc2UKIGZpXSkKIExEPSIkYWNsX2N2X3BhdGhfTEQi CiBpZiB0ZXN0IC1uICIkTEQiOyB0aGVuCi0gIEFDX01TR19SRVNVTFQoWyRM RF0pCisgIEFDX01TR19SRVNVTFQoJExEKQogZWxzZQotICBBQ19NU0dfUkVT VUxUKFtub10pCisgIEFDX01TR19SRVNVTFQobm8pCiBmaQogdGVzdCAteiAi JExEIiAmJiBBQ19NU0dfRVJST1IoW25vIGFjY2VwdGFibGUgbGQgZm91bmQg aW4gXCRQQVRIXSkKIEFDX0xJQl9QUk9HX0xEX0dOVQpkaWZmIC0tZ2l0IGEv bGliLWxpbmsubTQgYi9saWItbGluay5tNAppbmRleCBkMTFiNGI0Li5mMTU3 ZDk4IDEwMDY0NAotLS0gYS9saWItbGluay5tNAorKysgYi9saWItbGluay5t NApAQCAtMSwxMiArMSwxMiBAQAotIyBsaWItbGluay5tNCBzZXJpYWwgMjYg KGdldHRleHQtMC4xOC4yKQotZG5sIENvcHlyaWdodCAoQykgMjAwMS0yMDEy IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBsaWItbGluay5t NCBzZXJpYWwgMTMgKGdldHRleHQtMC4xNi4yKQorZG5sIENvcHlyaWdodCAo QykgMjAwMS0yMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgog ZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uCiBkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Np b24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKIGRubCB3aXRoIG9y IHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGlj ZSBpcyBwcmVzZXJ2ZWQuCiAKIGRubCBGcm9tIEJydW5vIEhhaWJsZS4KIAot QUNfUFJFUkVRKFsyLjU0XSkKK0FDX1BSRVJFUSgyLjU0KQogCiBkbmwgQUNf TElCX0xJTktGTEFHUyhuYW1lIFssIGRlcGVuZGVuY2llc10pIHNlYXJjaGVz IGZvciBsaWJuYW1lIGFuZAogZG5sIHRoZSBsaWJyYXJpZXMgY29ycmVzcG9u ZGluZyB0byBleHBsaWNpdCBhbmQgaW1wbGljaXQgZGVwZW5kZW5jaWVzLgpA QCAtMTgsOSArMTgsOSBAQCBBQ19ERUZVTihbQUNfTElCX0xJTktGTEFHU10s CiBbCiAgIEFDX1JFUVVJUkUoW0FDX0xJQl9QUkVQQVJFX1BSRUZJWF0pCiAg IEFDX1JFUVVJUkUoW0FDX0xJQl9SUEFUSF0pCi0gIHB1c2hkZWYoW05hbWVd LFttNF90cmFuc2xpdChbJDFdLFsuLystXSwgW19fX19dKV0pCi0gIHB1c2hk ZWYoW05BTUVdLFttNF90cmFuc2xpdChbJDFdLFthYmNkZWZnaGlqa2xtbm9w cXJzdHV2d3h5ei4vKy1dLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBbQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfX19fXSldKQor ICBkZWZpbmUoW05hbWVdLFt0cmFuc2xpdChbJDFdLFsuLy1dLCBbX19fXSld KQorICBkZWZpbmUoW05BTUVdLFt0cmFuc2xpdChbJDFdLFthYmNkZWZnaGlq a2xtbm9wcXJzdHV2d3h5ei4vLV0sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgW0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fXSldKQog ICBBQ19DQUNIRV9DSEVDSyhbaG93IHRvIGxpbmsgd2l0aCBsaWJbXSQxXSwg W2FjX2N2X2xpYltdTmFtZVtdX2xpYnNdLCBbCiAgICAgQUNfTElCX0xJTktG TEFHU19CT0RZKFskMV0sIFskMl0pCiAgICAgYWNfY3ZfbGliW11OYW1lW11f bGlicz0iJExJQltdTkFNRSIKQEAgLTM5LDE3ICszOSwxNiBAQCBBQ19ERUZV TihbQUNfTElCX0xJTktGTEFHU10sCiAgIGRubCBBbHNvIHNldCBIQVZFX0xJ QltdTkFNRSBzbyB0aGF0IEFDX0xJQl9IQVZFX0xJTktGTEFHUyBjYW4gcmV1 c2UgdGhlCiAgIGRubCByZXN1bHRzIG9mIHRoaXMgc2VhcmNoIHdoZW4gdGhp cyBsaWJyYXJ5IGFwcGVhcnMgYXMgYSBkZXBlbmRlbmN5LgogICBIQVZFX0xJ QltdTkFNRT15ZXMKLSAgcG9wZGVmKFtOQU1FXSkKLSAgcG9wZGVmKFtOYW1l XSkKKyAgdW5kZWZpbmUoW05hbWVdKQorICB1bmRlZmluZShbTkFNRV0pCiBd KQogCi1kbmwgQUNfTElCX0hBVkVfTElOS0ZMQUdTKG5hbWUsIGRlcGVuZGVu Y2llcywgaW5jbHVkZXMsIHRlc3Rjb2RlLCBbbWlzc2luZy1tZXNzYWdlXSkK K2RubCBBQ19MSUJfSEFWRV9MSU5LRkxBR1MobmFtZSwgZGVwZW5kZW5jaWVz LCBpbmNsdWRlcywgdGVzdGNvZGUpCiBkbmwgc2VhcmNoZXMgZm9yIGxpYm5h bWUgYW5kIHRoZSBsaWJyYXJpZXMgY29ycmVzcG9uZGluZyB0byBleHBsaWNp dCBhbmQKIGRubCBpbXBsaWNpdCBkZXBlbmRlbmNpZXMsIHRvZ2V0aGVyIHdp dGggdGhlIHNwZWNpZmllZCBpbmNsdWRlIGZpbGVzIGFuZAotZG5sIHRoZSBh YmlsaXR5IHRvIGNvbXBpbGUgYW5kIGxpbmsgdGhlIHNwZWNpZmllZCB0ZXN0 Y29kZS4gVGhlIG1pc3NpbmctbWVzc2FnZQotZG5sIGRlZmF1bHRzIHRvICdu bycgYW5kIG1heSBjb250YWluIGFkZGl0aW9uYWwgaGludHMgZm9yIHRoZSB1 c2VyLgotZG5sIElmIGZvdW5kLCBpdCBzZXRzIGFuZCBBQ19TVUJTVHMgSEFW RV9MSUIke05BTUV9PXllcyBhbmQgdGhlIExJQiR7TkFNRX0KLWRubCBhbmQg TFRMSUIke05BTUV9IHZhcmlhYmxlcyBhbmQgYXVnbWVudHMgdGhlIENQUEZM QUdTIHZhcmlhYmxlLCBhbmQKK2RubCB0aGUgYWJpbGl0eSB0byBjb21waWxl IGFuZCBsaW5rIHRoZSBzcGVjaWZpZWQgdGVzdGNvZGUuIElmIGZvdW5kLCBp dAorZG5sIHNldHMgYW5kIEFDX1NVQlNUcyBIQVZFX0xJQiR7TkFNRX09eWVz IGFuZCB0aGUgTElCJHtOQU1FfSBhbmQKK2RubCBMVExJQiR7TkFNRX0gdmFy aWFibGVzIGFuZCBhdWdtZW50cyB0aGUgQ1BQRkxBR1MgdmFyaWFibGUsIGFu ZAogZG5sICNkZWZpbmVzIEhBVkVfTElCJHtOQU1FfSB0byAxLiBPdGhlcndp c2UsIGl0IHNldHMgYW5kIEFDX1NVQlNUcwogZG5sIEhBVkVfTElCJHtOQU1F fT1ubyBhbmQgTElCJHtOQU1FfSBhbmQgTFRMSUIke05BTUV9IHRvIGVtcHR5 LgogZG5sIFNldHMgYW5kIEFDX1NVQlNUcyB0aGUgTElCJHtOQU1FfV9QUkVG SVggdmFyaWFibGUgdG8gbm9uZW1wdHkgaWYgbGlibmFtZQpAQCAtNTgsOSAr NTcsOSBAQCBBQ19ERUZVTihbQUNfTElCX0hBVkVfTElOS0ZMQUdTXSwKIFsK ICAgQUNfUkVRVUlSRShbQUNfTElCX1BSRVBBUkVfUFJFRklYXSkKICAgQUNf UkVRVUlSRShbQUNfTElCX1JQQVRIXSkKLSAgcHVzaGRlZihbTmFtZV0sW200 X3RyYW5zbGl0KFskMV0sWy4vKy1dLCBbX19fX10pXSkKLSAgcHVzaGRlZihb TkFNRV0sW200X3RyYW5zbGl0KFskMV0sW2FiY2RlZmdoaWprbG1ub3BxcnN0 dXZ3eHl6Li8rLV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFtBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9fX19dKV0pCisgIGRl ZmluZShbTmFtZV0sW3RyYW5zbGl0KFskMV0sWy4vLV0sIFtfX19dKV0pCisg IGRlZmluZShbTkFNRV0sW3RyYW5zbGl0KFskMV0sW2FiY2RlZmdoaWprbG1u b3BxcnN0dXZ3eHl6Li8tXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBbQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfX19dKV0pCiAKICAg ZG5sIFNlYXJjaCBmb3IgbGliW11OYW1lIGFuZCBkZWZpbmUgTElCW11OQU1F LCBMVExJQltdTkFNRSBhbmQgSU5DW11OQU1FCiAgIGRubCBhY2NvcmRpbmds eS4KQEAgLTc0LDI2ICs3MywxMyBAQCBBQ19ERUZVTihbQUNfTElCX0hBVkVf TElOS0ZMQUdTXSwKIAogICBBQ19DQUNIRV9DSEVDSyhbZm9yIGxpYltdJDFd LCBbYWNfY3ZfbGliW11OYW1lXSwgWwogICAgIGFjX3NhdmVfTElCUz0iJExJ QlMiCi0gICAgZG5sIElmICRMSUJbXU5BTUUgY29udGFpbnMgc29tZSAtbCBv cHRpb25zLCBhZGQgaXQgdG8gdGhlIGVuZCBvZiBMSUJTLAotICAgIGRubCBi ZWNhdXNlIHRoZXNlIC1sIG9wdGlvbnMgbWlnaHQgcmVxdWlyZSAtTCBvcHRp b25zIHRoYXQgYXJlIHByZXNlbnQgaW4KLSAgICBkbmwgTElCUy4gLWwgb3B0 aW9ucyBiZW5lZml0IG9ubHkgZnJvbSB0aGUgLUwgb3B0aW9ucyBsaXN0ZWQg YmVmb3JlIGl0LgotICAgIGRubCBPdGhlcndpc2UsIGFkZCBpdCB0byB0aGUg ZnJvbnQgb2YgTElCUywgYmVjYXVzZSBpdCBtYXkgYmUgYSBzdGF0aWMKLSAg ICBkbmwgbGlicmFyeSB0aGF0IGRlcGVuZHMgb24gYW5vdGhlciBzdGF0aWMg bGlicmFyeSB0aGF0IGlzIHByZXNlbnQgaW4gTElCUy4KLSAgICBkbmwgU3Rh dGljIGxpYnJhcmllcyBiZW5lZml0IG9ubHkgZnJvbSB0aGUgc3RhdGljIGxp YnJhcmllcyBsaXN0ZWQgYWZ0ZXIKLSAgICBkbmwgaXQuCi0gICAgY2FzZSAi ICRMSUJbXU5BTUUiIGluCi0gICAgICAqIiAtbCIqKSBMSUJTPSIkTElCUyAk TElCW11OQU1FIiA7OwotICAgICAgKikgICAgICAgTElCUz0iJExJQltdTkFN RSAkTElCUyIgOzsKLSAgICBlc2FjCi0gICAgQUNfTElOS19JRkVMU0UoCi0g ICAgICBbQUNfTEFOR19QUk9HUkFNKFtbJDNdXSwgW1skNF1dKV0sCi0gICAg ICBbYWNfY3ZfbGliW11OYW1lPXllc10sCi0gICAgICBbYWNfY3ZfbGliW11O YW1lPSdtNF9pZihbJDVdLCBbXSwgW25vXSwgW1skNV1dKSddKQorICAgIExJ QlM9IiRMSUJTICRMSUJbXU5BTUUiCisgICAgQUNfVFJZX0xJTksoWyQzXSwg WyQ0XSwgW2FjX2N2X2xpYltdTmFtZT15ZXNdLCBbYWNfY3ZfbGliW11OYW1l PW5vXSkKICAgICBMSUJTPSIkYWNfc2F2ZV9MSUJTIgogICBdKQogICBpZiB0 ZXN0ICIkYWNfY3ZfbGliW11OYW1lIiA9IHllczsgdGhlbgogICAgIEhBVkVf TElCW11OQU1FPXllcwotICAgIEFDX0RFRklORShbSEFWRV9MSUJdTkFNRSwg MSwgW0RlZmluZSBpZiB5b3UgaGF2ZSB0aGUgbGliXVskMSBsaWJyYXJ5Ll0p CisgICAgQUNfREVGSU5FKFtIQVZFX0xJQl1OQU1FLCAxLCBbRGVmaW5lIGlm IHlvdSBoYXZlIHRoZSAkMSBsaWJyYXJ5Ll0pCiAgICAgQUNfTVNHX0NIRUNL SU5HKFtob3cgdG8gbGluayB3aXRoIGxpYltdJDFdKQogICAgIEFDX01TR19S RVNVTFQoWyRMSUJbXU5BTUVdKQogICBlbHNlCkBAIC0xMDksMTUgKzk1LDEz IEBAIEFDX0RFRlVOKFtBQ19MSUJfSEFWRV9MSU5LRkxBR1NdLAogICBBQ19T VUJTVChbTElCXU5BTUUpCiAgIEFDX1NVQlNUKFtMVExJQl1OQU1FKQogICBB Q19TVUJTVChbTElCXU5BTUVbX1BSRUZJWF0pCi0gIHBvcGRlZihbTkFNRV0p Ci0gIHBvcGRlZihbTmFtZV0pCisgIHVuZGVmaW5lKFtOYW1lXSkKKyAgdW5k ZWZpbmUoW05BTUVdKQogXSkKIAogZG5sIERldGVybWluZSB0aGUgcGxhdGZv cm0gZGVwZW5kZW50IHBhcmFtZXRlcnMgbmVlZGVkIHRvIHVzZSBycGF0aDoK IGRubCAgIGFjbF9saWJleHQsCiBkbmwgICBhY2xfc2hsaWJleHQsCi1kbmwg ICBhY2xfbGlibmFtZV9zcGVjLAotZG5sICAgYWNsX2xpYnJhcnlfbmFtZXNf c3BlYywKIGRubCAgIGFjbF9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLAog ZG5sICAgYWNsX2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsCiBkbmwgICBh Y2xfaGFyZGNvZGVfZGlyZWN0LApAQCAtMTMwLDcgKzExNCw3IEBAIEFDX0RF RlVOKFtBQ19MSUJfUlBBVEhdLAogICBBQ19SRVFVSVJFKFtBQ19MSUJfUFJP R19MRF0pICAgICAgICAgICAgZG5sIHdlIHVzZSAkTEQsICR3aXRoX2dudV9s ZAogICBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pICAgICAgICAg ZG5sIHdlIHVzZSAkaG9zdAogICBBQ19SRVFVSVJFKFtBQ19DT05GSUdfQVVY X0RJUl9ERUZBVUxUXSkgZG5sIHdlIHVzZSAkYWNfYXV4X2RpcgotICBBQ19D QUNIRV9DSEVDSyhbZm9yIHNoYXJlZCBsaWJyYXJ5IHJ1biBwYXRoIG9yaWdp bl0sIFthY2xfY3ZfcnBhdGhdLCBbCisgIEFDX0NBQ0hFX0NIRUNLKFtmb3Ig c2hhcmVkIGxpYnJhcnkgcnVuIHBhdGggb3JpZ2luXSwgYWNsX2N2X3JwYXRo LCBbCiAgICAgQ0M9IiRDQyIgR0NDPSIkR0NDIiBMREZMQUdTPSIkTERGTEFH UyIgTEQ9IiRMRCIgd2l0aF9nbnVfbGQ9IiR3aXRoX2dudV9sZCIgXAogICAg ICR7Q09ORklHX1NIRUxMLS9iaW4vc2h9ICIkYWNfYXV4X2Rpci9jb25maWcu cnBhdGgiICIkaG9zdCIgPiBjb25mdGVzdC5zaAogICAgIC4gLi9jb25mdGVz dC5zaApAQCAtMTQ3LDMyICsxMzEsMTEgQEAgQUNfREVGVU4oW0FDX0xJQl9S UEFUSF0sCiAgIGFjbF9oYXJkY29kZV9kaXJlY3Q9IiRhY2xfY3ZfaGFyZGNv ZGVfZGlyZWN0IgogICBhY2xfaGFyZGNvZGVfbWludXNfTD0iJGFjbF9jdl9o YXJkY29kZV9taW51c19MIgogICBkbmwgRGV0ZXJtaW5lIHdoZXRoZXIgdGhl IHVzZXIgd2FudHMgcnBhdGggaGFuZGxpbmcgYXQgYWxsLgotICBBQ19BUkdf RU5BQkxFKFtycGF0aF0sCisgIEFDX0FSR19FTkFCTEUocnBhdGgsCiAgICAg WyAgLS1kaXNhYmxlLXJwYXRoICAgICAgICAgZG8gbm90IGhhcmRjb2RlIHJ1 bnRpbWUgbGlicmFyeSBwYXRoc10sCiAgICAgOiwgZW5hYmxlX3JwYXRoPXll cykKIF0pCiAKLWRubCBBQ19MSUJfRlJPTVBBQ0tBR0UobmFtZSwgcGFja2Fn ZSkKLWRubCBkZWNsYXJlcyB0aGF0IGxpYm5hbWUgY29tZXMgZnJvbSB0aGUg Z2l2ZW4gcGFja2FnZS4gVGhlIGNvbmZpZ3VyZSBmaWxlCi1kbmwgd2lsbCB0 aGVuIG5vdCBoYXZlIGEgLS13aXRoLWxpYm5hbWUtcHJlZml4IG9wdGlvbiBi dXQgYQotZG5sIC0td2l0aC1wYWNrYWdlLXByZWZpeCBvcHRpb24uIFNldmVy YWwgbGlicmFyaWVzIGNhbiBjb21lIGZyb20gdGhlIHNhbWUKLWRubCBwYWNr YWdlLiBUaGlzIGRlY2xhcmF0aW9uIG11c3Qgb2NjdXIgYmVmb3JlIGFuIEFD X0xJQl9MSU5LRkxBR1Mgb3Igc2ltaWxhcgotZG5sIG1hY3JvIGNhbGwgdGhh dCBzZWFyY2hlcyBmb3IgbGlibmFtZS4KLUFDX0RFRlVOKFtBQ19MSUJfRlJP TVBBQ0tBR0VdLAotWwotICBwdXNoZGVmKFtOQU1FXSxbbTRfdHJhbnNsaXQo WyQxXSxbYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXouLystXSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0FCQ0RFRkdISUpLTE1O T1BRUlNUVVZXWFlaX19fX10pXSkKLSAgZGVmaW5lKFthY2xfZnJvbXBhY2th Z2VfXU5BTUUsIFskMl0pCi0gIHBvcGRlZihbTkFNRV0pCi0gIHB1c2hkZWYo W1BBQ0tdLFskMl0pCi0gIHB1c2hkZWYoW1BBQ0tVUF0sW200X3RyYW5zbGl0 KFBBQ0ssW2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8rLV0sCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0FCQ0RFRkdISUpL TE1OT1BRUlNUVVZXWFlaX19fX10pXSkKLSAgZGVmaW5lKFthY2xfbGlic2lu cGFja2FnZV9dUEFDS1VQLAotICAgIG00X2lmZGVmKFthY2xfbGlic2lucGFj a2FnZV9dUEFDS1VQLCBbbTRfZGVmbihbYWNsX2xpYnNpbnBhY2thZ2VfXVBB Q0tVUClbLCBdXSwpW2xpYiQxXSkKLSAgcG9wZGVmKFtQQUNLVVBdKQotICBw b3BkZWYoW1BBQ0tdKQotXSkKLQogZG5sIEFDX0xJQl9MSU5LRkxBR1NfQk9E WShuYW1lIFssIGRlcGVuZGVuY2llc10pIHNlYXJjaGVzIGZvciBsaWJuYW1l IGFuZAogZG5sIHRoZSBsaWJyYXJpZXMgY29ycmVzcG9uZGluZyB0byBleHBs aWNpdCBhbmQgaW1wbGljaXQgZGVwZW5kZW5jaWVzLgogZG5sIFNldHMgdGhl IExJQiR7TkFNRX0sIExUTElCJHtOQU1FfSBhbmQgSU5DJHtOQU1FfSB2YXJp YWJsZXMuCkBAIC0xODEsMjMgKzE0NCwxOSBAQCBkbmwgaW4gJHtMSUIke05B TUV9X1BSRUZJWH0vJGFjbF9saWJkaXJzdGVtLgogQUNfREVGVU4oW0FDX0xJ Ql9MSU5LRkxBR1NfQk9EWV0sCiBbCiAgIEFDX1JFUVVJUkUoW0FDX0xJQl9Q UkVQQVJFX01VTFRJTElCXSkKLSAgcHVzaGRlZihbTkFNRV0sW200X3RyYW5z bGl0KFskMV0sW2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8rLV0sCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtBQkNERUZHSElK S0xNTk9QUVJTVFVWV1hZWl9fX19dKV0pCi0gIHB1c2hkZWYoW1BBQ0tdLFtt NF9pZmRlZihbYWNsX2Zyb21wYWNrYWdlX11OQU1FLCBbYWNsX2Zyb21wYWNr YWdlX11OQU1FLCBsaWJbJDFdKV0pCi0gIHB1c2hkZWYoW1BBQ0tVUF0sW200 X3RyYW5zbGl0KFBBQ0ssW2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8r LV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0FC Q0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fX10pXSkKLSAgcHVzaGRlZihb UEFDS0xJQlNdLFttNF9pZmRlZihbYWNsX2Zyb21wYWNrYWdlX11OQU1FLCBb YWNsX2xpYnNpbnBhY2thZ2VfXVBBQ0tVUCwgbGliWyQxXSldKQorICBkZWZp bmUoW05BTUVdLFt0cmFuc2xpdChbJDFdLFthYmNkZWZnaGlqa2xtbm9wcXJz dHV2d3h5ei4vLV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg W0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fXSldKQogICBkbmwgQXV0 b2NvbmYgPj0gMi42MSBzdXBwb3J0cyBkb3RzIGluIC0td2l0aCBvcHRpb25z LgotICBwdXNoZGVmKFtQX0FfQ19LXSxbbTRfaWYobTRfdmVyc2lvbl9jb21w YXJlKG00X2RlZm4oW200X1BBQ0tBR0VfVkVSU0lPTl0pLFsyLjYxXSksWy0x XSxbbTRfdHJhbnNsaXQoUEFDSyxbLl0sW19dKV0sUEFDSyldKQorICBkZWZp bmUoW05fQV9NX0VdLFttNF9pZihtNF92ZXJzaW9uX2NvbXBhcmUobTRfZGVm bihbbTRfUEFDS0FHRV9WRVJTSU9OXSksWzIuNjFdKSxbLTFdLFt0cmFuc2xp dChbJDFdLFsuXSxbX10pXSxbJDFdKV0pCiAgIGRubCBCeSBkZWZhdWx0LCBs b29rIGluICRpbmNsdWRlZGlyIGFuZCAkbGliZGlyLgogICB1c2VfYWRkaXRp b25hbD15ZXMKICAgQUNfTElCX1dJVEhfRklOQUxfUFJFRklYKFsKICAgICBl dmFsIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj1cIiRpbmNsdWRlZGlyXCIKICAg ICBldmFsIGFkZGl0aW9uYWxfbGliZGlyPVwiJGxpYmRpclwiCiAgIF0pCi0g IEFDX0FSR19XSVRIKFBfQV9DX0tbLXByZWZpeF0sCi1bWyAgLS13aXRoLV1d UF9BX0NfS1tbLXByZWZpeFs9RElSXSAgc2VhcmNoIGZvciBdUEFDS0xJQlNb IGluIERJUi9pbmNsdWRlIGFuZCBESVIvbGliCi0gIC0td2l0aG91dC1dXVBf QV9DX0tbWy1wcmVmaXggICAgIGRvbid0IHNlYXJjaCBmb3IgXVBBQ0tMSUJT WyBpbiBpbmNsdWRlZGlyIGFuZCBsaWJkaXJdXSwKKyAgQUNfTElCX0FSR19X SVRIKFtsaWJdTl9BX01fRVstcHJlZml4XSwKK1sgIC0td2l0aC1saWJdTl9B X01fRVstcHJlZml4Wz1ESVJdICBzZWFyY2ggZm9yIGxpYiQxIGluIERJUi9p bmNsdWRlIGFuZCBESVIvbGliCisgIC0td2l0aG91dC1saWJdTl9BX01fRVst cHJlZml4ICAgICBkb24ndCBzZWFyY2ggZm9yIGxpYiQxIGluIGluY2x1ZGVk aXIgYW5kIGxpYmRpcl0sCiBbCiAgICAgaWYgdGVzdCAiWCR3aXRodmFsIiA9 ICJYbm8iOyB0aGVuCiAgICAgICB1c2VfYWRkaXRpb25hbD1ubwpAQCAtMjEw LDEwICsxNjksNiBAQCBBQ19ERUZVTihbQUNfTElCX0xJTktGTEFHU19CT0RZ XSwKICAgICAgIGVsc2UKICAgICAgICAgYWRkaXRpb25hbF9pbmNsdWRlZGly PSIkd2l0aHZhbC9pbmNsdWRlIgogICAgICAgICBhZGRpdGlvbmFsX2xpYmRp cj0iJHdpdGh2YWwvJGFjbF9saWJkaXJzdGVtIgotICAgICAgICBpZiB0ZXN0 ICIkYWNsX2xpYmRpcnN0ZW0yIiAhPSAiJGFjbF9saWJkaXJzdGVtIiBcCi0g ICAgICAgICAgICYmICEgdGVzdCAtZCAiJHdpdGh2YWwvJGFjbF9saWJkaXJz dGVtIjsgdGhlbgotICAgICAgICAgIGFkZGl0aW9uYWxfbGliZGlyPSIkd2l0 aHZhbC8kYWNsX2xpYmRpcnN0ZW0yIgotICAgICAgICBmaQogICAgICAgZmkK ICAgICBmaQogXSkKQEAgLTIyMyw5ICsxNzgsNiBAQCBBQ19ERUZVTihbQUNf TElCX0xJTktGTEFHU19CT0RZXSwKICAgTFRMSUJbXU5BTUU9CiAgIElOQ1td TkFNRT0KICAgTElCW11OQU1FW11fUFJFRklYPQotICBkbmwgSEFWRV9MSUIk e05BTUV9IGlzIGFuIGluZGljYXRvciB0aGF0IExJQiR7TkFNRX0sIExUTElC JHtOQU1FfSBoYXZlIGJlZW4KLSAgZG5sIGNvbXB1dGVkLiBTbyBpdCBoYXMg dG8gYmUgcmVzZXQgaGVyZS4KLSAgSEFWRV9MSUJbXU5BTUU9CiAgIHJwYXRo ZGlycz0KICAgbHRycGF0aGRpcnM9CiAgIG5hbWVzX2FscmVhZHlfaGFuZGxl ZD0KQEAgLTI0NSw3ICsxOTcsNyBAQCBBQ19ERUZVTihbQUNfTElCX0xJTktG TEFHU19CT0RZXSwKICAgICAgICAgbmFtZXNfYWxyZWFkeV9oYW5kbGVkPSIk bmFtZXNfYWxyZWFkeV9oYW5kbGVkICRuYW1lIgogICAgICAgICBkbmwgU2Vl IGlmIGl0IHdhcyBhbHJlYWR5IGxvY2F0ZWQgYnkgYW4gZWFybGllciBBQ19M SUJfTElOS0ZMQUdTCiAgICAgICAgIGRubCBvciBBQ19MSUJfSEFWRV9MSU5L RkxBR1MgY2FsbC4KLSAgICAgICAgdXBwZXJuYW1lPWBlY2hvICIkbmFtZSIg fCBzZWQgLWUgJ3l8YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXouLystfEFC Q0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fX3wnYAorICAgICAgICB1cHBl cm5hbWU9YGVjaG8gIiRuYW1lIiB8IHNlZCAtZSAneXxhYmNkZWZnaGlqa2xt bm9wcXJzdHV2d3h5ei4vLXxBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9f X3wnYAogICAgICAgICBldmFsIHZhbHVlPVwiXCRIQVZFX0xJQiR1cHBlcm5h bWVcIgogICAgICAgICBpZiB0ZXN0IC1uICIkdmFsdWUiOyB0aGVuCiAgICAg ICAgICAgaWYgdGVzdCAiJHZhbHVlIiA9IHllczsgdGhlbgpAQCAtMzc1LDkg KzMyNyw3IEBAIEFDX0RFRlVOKFtBQ19MSUJfTElOS0ZMQUdTX0JPRFldLAog ICAgICAgICAgICAgICBkbmwgTGlua2luZyB3aXRoIGEgc2hhcmVkIGxpYnJh cnkuIFdlIGF0dGVtcHQgdG8gaGFyZGNvZGUgaXRzCiAgICAgICAgICAgICAg IGRubCBkaXJlY3RvcnkgaW50byB0aGUgZXhlY3V0YWJsZSdzIHJ1bnBhdGgs IHVubGVzcyBpdCdzIHRoZQogICAgICAgICAgICAgICBkbmwgc3RhbmRhcmQg L3Vzci9saWIuCi0gICAgICAgICAgICAgIGlmIHRlc3QgIiRlbmFibGVfcnBh dGgiID0gbm8gXAotICAgICAgICAgICAgICAgICB8fCB0ZXN0ICJYJGZvdW5k X2RpciIgPSAiWC91c3IvJGFjbF9saWJkaXJzdGVtIiBcCi0gICAgICAgICAg ICAgICAgIHx8IHRlc3QgIlgkZm91bmRfZGlyIiA9ICJYL3Vzci8kYWNsX2xp YmRpcnN0ZW0yIjsgdGhlbgorICAgICAgICAgICAgICBpZiB0ZXN0ICIkZW5h YmxlX3JwYXRoIiA9IG5vIHx8IHRlc3QgIlgkZm91bmRfZGlyIiA9ICJYL3Vz ci8kYWNsX2xpYmRpcnN0ZW0iOyB0aGVuCiAgICAgICAgICAgICAgICAgZG5s IE5vIGhhcmRjb2RpbmcgaXMgbmVlZGVkLgogICAgICAgICAgICAgICAgIExJ QltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9JGZvdW5kX3Nv IgogICAgICAgICAgICAgICBlbHNlCkBAIC00NjUsMTYgKzQxNSw3IEBAIEFD X0RFRlVOKFtBQ19MSUJfTElOS0ZMQUdTX0JPRFldLAogICAgICAgICAgICAg Y2FzZSAiJGZvdW5kX2RpciIgaW4KICAgICAgICAgICAgICAgKi8kYWNsX2xp YmRpcnN0ZW0gfCAqLyRhY2xfbGliZGlyc3RlbS8pCiAgICAgICAgICAgICAg ICAgYmFzZWRpcj1gZWNobyAiWCRmb3VuZF9kaXIiIHwgc2VkIC1lICdzLF5Y LCwnIC1lICJzLC8kYWNsX2xpYmRpcnN0ZW0vIicqJCwsJ2AKLSAgICAgICAg ICAgICAgICBpZiB0ZXN0ICIkbmFtZSIgPSAnJDEnOyB0aGVuCi0gICAgICAg ICAgICAgICAgICBMSUJbXU5BTUVbXV9QUkVGSVg9IiRiYXNlZGlyIgotICAg ICAgICAgICAgICAgIGZpCi0gICAgICAgICAgICAgICAgYWRkaXRpb25hbF9p bmNsdWRlZGlyPSIkYmFzZWRpci9pbmNsdWRlIgotICAgICAgICAgICAgICAg IDs7Ci0gICAgICAgICAgICAgICovJGFjbF9saWJkaXJzdGVtMiB8ICovJGFj bF9saWJkaXJzdGVtMi8pCi0gICAgICAgICAgICAgICAgYmFzZWRpcj1gZWNo byAiWCRmb3VuZF9kaXIiIHwgc2VkIC1lICdzLF5YLCwnIC1lICJzLC8kYWNs X2xpYmRpcnN0ZW0yLyInKiQsLCdgCi0gICAgICAgICAgICAgICAgaWYgdGVz dCAiJG5hbWUiID0gJyQxJzsgdGhlbgotICAgICAgICAgICAgICAgICAgTElC W11OQU1FW11fUFJFRklYPSIkYmFzZWRpciIKLSAgICAgICAgICAgICAgICBm aQorICAgICAgICAgICAgICAgIExJQltdTkFNRVtdX1BSRUZJWD0iJGJhc2Vk aXIiCiAgICAgICAgICAgICAgICAgYWRkaXRpb25hbF9pbmNsdWRlZGlyPSIk YmFzZWRpci9pbmNsdWRlIgogICAgICAgICAgICAgICAgIDs7CiAgICAgICAg ICAgICBlc2FjCkBAIC01MzUsMTEgKzQ3Niw5IEBAIEFDX0RFRlVOKFtBQ19M SUJfTElOS0ZMQUdTX0JPRFldLAogICAgICAgICAgICAgICAgICAgICBkbmwg ICAzLiBpZiBpdCdzIGFscmVhZHkgcHJlc2VudCBpbiAkTERGTEFHUyBvciB0 aGUgYWxyZWFkeQogICAgICAgICAgICAgICAgICAgICBkbmwgICAgICBjb25z dHJ1Y3RlZCAkTElCTkFNRSwKICAgICAgICAgICAgICAgICAgICAgZG5sICAg NC4gaWYgaXQgZG9lc24ndCBleGlzdCBhcyBhIGRpcmVjdG9yeS4KLSAgICAg ICAgICAgICAgICAgICAgaWYgdGVzdCAiWCRhZGRpdGlvbmFsX2xpYmRpciIg IT0gIlgvdXNyLyRhY2xfbGliZGlyc3RlbSIgXAotICAgICAgICAgICAgICAg ICAgICAgICAmJiB0ZXN0ICJYJGFkZGl0aW9uYWxfbGliZGlyIiAhPSAiWC91 c3IvJGFjbF9saWJkaXJzdGVtMiI7IHRoZW4KKyAgICAgICAgICAgICAgICAg ICAgaWYgdGVzdCAiWCRhZGRpdGlvbmFsX2xpYmRpciIgIT0gIlgvdXNyLyRh Y2xfbGliZGlyc3RlbSI7IHRoZW4KICAgICAgICAgICAgICAgICAgICAgICBo YXZlaXQ9Ci0gICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCRhZGRp dGlvbmFsX2xpYmRpciIgPSAiWC91c3IvbG9jYWwvJGFjbF9saWJkaXJzdGVt IiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgfHwgdGVzdCAiWCRhZGRp dGlvbmFsX2xpYmRpciIgPSAiWC91c3IvbG9jYWwvJGFjbF9saWJkaXJzdGVt MiI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGFk ZGl0aW9uYWxfbGliZGlyIiA9ICJYL3Vzci9sb2NhbC8kYWNsX2xpYmRpcnN0 ZW0iOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1u ICIkR0NDIjsgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNl ICRob3N0X29zIGluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlu dXgqIHwgZ251KiB8IGsqYnNkKi1nbnUpIGhhdmVpdD15ZXM7OwpAQCAtNjcw LDExICs2MDksNiBAQCBBQ19ERUZVTihbQUNfTElCX0xJTktGTEFHU19CT0RZ XSwKICAgICAgIExUTElCW11OQU1FPSIke0xUTElCW11OQU1FfSR7TFRMSUJb XU5BTUU6KyB9LVIkZm91bmRfZGlyIgogICAgIGRvbmUKICAgZmkKLSAgcG9w ZGVmKFtQX0FfQ19LXSkKLSAgcG9wZGVmKFtQQUNLTElCU10pCi0gIHBvcGRl ZihbUEFDS1VQXSkKLSAgcG9wZGVmKFtQQUNLXSkKLSAgcG9wZGVmKFtOQU1F XSkKIF0pCiAKIGRubCBBQ19MSUJfQVBQRU5EVE9WQVIoVkFSLCBDT05URU5U UykgYXBwZW5kcyB0aGUgZWxlbWVudHMgb2YgQ09OVEVOVFMgdG8gVkFSLApA QCAtNzIwLDggKzY1NCw3IEBAIEFDX0RFRlVOKFtBQ19MSUJfTElOS0ZMQUdT X0ZST01fTElCU10sCiAgICAgICAgIGlmIHRlc3QgLW4gIiRuZXh0IjsgdGhl bgogICAgICAgICAgIGRpcj0iJG5leHQiCiAgICAgICAgICAgZG5sIE5vIG5l ZWQgdG8gaGFyZGNvZGUgdGhlIHN0YW5kYXJkIC91c3IvbGliLgotICAgICAg ICAgIGlmIHRlc3QgIlgkZGlyIiAhPSAiWC91c3IvJGFjbF9saWJkaXJzdGVt IiBcCi0gICAgICAgICAgICAgJiYgdGVzdCAiWCRkaXIiICE9ICJYL3Vzci8k YWNsX2xpYmRpcnN0ZW0yIjsgdGhlbgorICAgICAgICAgIGlmIHRlc3QgIlgk ZGlyIiAhPSAiWC91c3IvJGFjbF9saWJkaXJzdGVtIjsgdGhlbgogICAgICAg ICAgICAgcnBhdGhkaXJzPSIkcnBhdGhkaXJzICRkaXIiCiAgICAgICAgICAg ZmkKICAgICAgICAgICBuZXh0PQpAQCAtNzMwLDggKzY2Myw3IEBAIEFDX0RF RlVOKFtBQ19MSUJfTElOS0ZMQUdTX0ZST01fTElCU10sCiAgICAgICAgICAg ICAtTCkgbmV4dD15ZXMgOzsKICAgICAgICAgICAgIC1MKikgZGlyPWBlY2hv ICJYJG9wdCIgfCBzZWQgLWUgJ3MsXlgtTCwsJ2AKICAgICAgICAgICAgICAg ICAgZG5sIE5vIG5lZWQgdG8gaGFyZGNvZGUgdGhlIHN0YW5kYXJkIC91c3Iv bGliLgotICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGRpciIgIT0gIlgv dXNyLyRhY2xfbGliZGlyc3RlbSIgXAotICAgICAgICAgICAgICAgICAgICAm JiB0ZXN0ICJYJGRpciIgIT0gIlgvdXNyLyRhY2xfbGliZGlyc3RlbTIiOyB0 aGVuCisgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkZGlyIiAhPSAiWC91 c3IvJGFjbF9saWJkaXJzdGVtIjsgdGhlbgogICAgICAgICAgICAgICAgICAg IHJwYXRoZGlycz0iJHJwYXRoZGlycyAkZGlyIgogICAgICAgICAgICAgICAg ICBmaQogICAgICAgICAgICAgICAgICBuZXh0PSA7OwpkaWZmIC0tZ2l0IGEv bGliLXByZWZpeC5tNCBiL2xpYi1wcmVmaXgubTQKaW5kZXggMDA3YWEwNS4u YTg2ODRlMSAxMDA2NDQKLS0tIGEvbGliLXByZWZpeC5tNAorKysgYi9saWIt cHJlZml4Lm00CkBAIC0xLDUgKzEsNSBAQAotIyBsaWItcHJlZml4Lm00IHNl cmlhbCA3IChnZXR0ZXh0LTAuMTgpCi1kbmwgQ29weXJpZ2h0IChDKSAyMDAx LTIwMDUsIDIwMDgtMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKyMgbGliLXByZWZpeC5tNCBzZXJpYWwgNSAoZ2V0dGV4dC0wLjE1KQor ZG5sIENvcHlyaWdodCAoQykgMjAwMS0yMDA1IEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgogZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJl OyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCiBkbmwgZ2l2ZXMgdW5s aW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBp dCwKIGRubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9u ZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCkBAIC0xNTMsNzIgKzE1 MywzMyBAQCBBQ19ERUZVTihbQUNfTElCX1dJVEhfRklOQUxfUFJFRklYXSwK ICAgcHJlZml4PSIkYWNsX3NhdmVfcHJlZml4IgogXSkKIAotZG5sIEFDX0xJ Ql9QUkVQQVJFX01VTFRJTElCIGNyZWF0ZXMKLWRubCAtIGEgdmFyaWFibGUg YWNsX2xpYmRpcnN0ZW0sIGNvbnRhaW5pbmcgdGhlIGJhc2VuYW1lIG9mIHRo ZSBsaWJkaXIsIGVpdGhlcgotZG5sICAgImxpYiIgb3IgImxpYjY0IiBvciAi bGliLzY0IiwKLWRubCAtIGEgdmFyaWFibGUgYWNsX2xpYmRpcnN0ZW0yLCBh cyBhIHNlY29uZGFyeSBwb3NzaWJsZSB2YWx1ZSBmb3IKLWRubCAgIGFjbF9s aWJkaXJzdGVtLCBlaXRoZXIgdGhlIHNhbWUgYXMgYWNsX2xpYmRpcnN0ZW0g b3IgImxpYi9zcGFyY3Y5IiBvcgotZG5sICAgImxpYi9hbWQ2NCIuCitkbmwg QUNfTElCX1BSRVBBUkVfTVVMVElMSUIgY3JlYXRlcyBhIHZhcmlhYmxlIGFj bF9saWJkaXJzdGVtLCBjb250YWluaW5nCitkbmwgdGhlIGJhc2VuYW1lIG9m IHRoZSBsaWJkaXIsIGVpdGhlciAibGliIiBvciAibGliNjQiLgogQUNfREVG VU4oW0FDX0xJQl9QUkVQQVJFX01VTFRJTElCXSwKIFsKLSAgZG5sIFRoZXJl IGlzIG5vIGZvcm1hbCBzdGFuZGFyZCByZWdhcmRpbmcgbGliIGFuZCBsaWI2 NC4KLSAgZG5sIE9uIGdsaWJjIHN5c3RlbXMsIHRoZSBjdXJyZW50IHByYWN0 aWNlIGlzIHRoYXQgb24gYSBzeXN0ZW0gc3VwcG9ydGluZwotICBkbmwgMzIt Yml0IGFuZCA2NC1iaXQgaW5zdHJ1Y3Rpb24gc2V0cyBvciBBQklzLCA2NC1i aXQgbGlicmFyaWVzIGdvIHVuZGVyCi0gIGRubCAkcHJlZml4L2xpYjY0IGFu ZCAzMi1iaXQgbGlicmFyaWVzIGdvIHVuZGVyICRwcmVmaXgvbGliLiBXZSBk ZXRlcm1pbmUKLSAgZG5sIHRoZSBjb21waWxlcidzIGRlZmF1bHQgbW9kZSBi eSBsb29raW5nIGF0IHRoZSBjb21waWxlcidzIGxpYnJhcnkgc2VhcmNoCi0g IGRubCBwYXRoLiBJZiBhdCBsZWFzdCBvbmUgb2YgaXRzIGVsZW1lbnRzIGVu ZHMgaW4gL2xpYjY0IG9yIHBvaW50cyB0byBhCi0gIGRubCBkaXJlY3Rvcnkg d2hvc2UgYWJzb2x1dGUgcGF0aG5hbWUgZW5kcyBpbiAvbGliNjQsIHdlIGFz c3VtZSBhIDY0LWJpdCBBQkkuCi0gIGRubCBPdGhlcndpc2Ugd2UgdXNlIHRo ZSBkZWZhdWx0LCBuYW1lbHkgImxpYiIuCi0gIGRubCBPbiBTb2xhcmlzIHN5 c3RlbXMsIHRoZSBjdXJyZW50IHByYWN0aWNlIGlzIHRoYXQgb24gYSBzeXN0 ZW0gc3VwcG9ydGluZwotICBkbmwgMzItYml0IGFuZCA2NC1iaXQgaW5zdHJ1 Y3Rpb24gc2V0cyBvciBBQklzLCA2NC1iaXQgbGlicmFyaWVzIGdvIHVuZGVy Ci0gIGRubCAkcHJlZml4L2xpYi82NCAod2hpY2ggaXMgYSBzeW1saW5rIHRv IGVpdGhlciAkcHJlZml4L2xpYi9zcGFyY3Y5IG9yCi0gIGRubCAkcHJlZml4 L2xpYi9hbWQ2NCkgYW5kIDMyLWJpdCBsaWJyYXJpZXMgZ28gdW5kZXIgJHBy ZWZpeC9saWIuCi0gIEFDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSkK KyAgZG5sIFRoZXJlIGlzIG5vIGZvcm1hbCBzdGFuZGFyZCByZWdhcmRpbmcg bGliIGFuZCBsaWI2NC4gVGhlIGN1cnJlbnQKKyAgZG5sIHByYWN0aWNlIGlz IHRoYXQgb24gYSBzeXN0ZW0gc3VwcG9ydGluZyAzMi1iaXQgYW5kIDY0LWJp dCBpbnN0cnVjdGlvbgorICBkbmwgc2V0cyBvciBBQklzLCA2NC1iaXQgbGli cmFyaWVzIGdvIHVuZGVyICRwcmVmaXgvbGliNjQgYW5kIDMyLWJpdAorICBk bmwgbGlicmFyaWVzIGdvIHVuZGVyICRwcmVmaXgvbGliLiBXZSBkZXRlcm1p bmUgdGhlIGNvbXBpbGVyJ3MgZGVmYXVsdAorICBkbmwgbW9kZSBieSBsb29r aW5nIGF0IHRoZSBjb21waWxlcidzIGxpYnJhcnkgc2VhcmNoIHBhdGguIElm IGF0IGxlYXN0CisgIGRubCBvZiBpdHMgZWxlbWVudHMgZW5kcyBpbiAvbGli NjQgb3IgcG9pbnRzIHRvIGEgZGlyZWN0b3J5IHdob3NlIGFic29sdXRlCisg IGRubCBwYXRobmFtZSBlbmRzIGluIC9saWI2NCwgd2UgYXNzdW1lIGEgNjQt Yml0IEFCSS4gT3RoZXJ3aXNlIHdlIHVzZSB0aGUKKyAgZG5sIGRlZmF1bHQs IG5hbWVseSAibGliIi4KICAgYWNsX2xpYmRpcnN0ZW09bGliCi0gIGFjbF9s aWJkaXJzdGVtMj0KLSAgY2FzZSAiJGhvc3Rfb3MiIGluCi0gICAgc29sYXJp cyopCi0gICAgICBkbmwgU2VlIFNvbGFyaXMgMTAgU29mdHdhcmUgRGV2ZWxv cGVyIENvbGxlY3Rpb24gPiBTb2xhcmlzIDY0LWJpdCBEZXZlbG9wZXIncyBH dWlkZSA+IFRoZSBEZXZlbG9wbWVudCBFbnZpcm9ubWVudAotICAgICAgZG5s IDxodHRwOi8vZG9jcy5zdW4uY29tL2FwcC9kb2NzL2RvYy84MTYtNTEzOC9k ZXYtZW52P2w9ZW4mYT12aWV3Pi4KLSAgICAgIGRubCAiUG9ydGFibGUgTWFr ZWZpbGVzIHNob3VsZCByZWZlciB0byBhbnkgbGlicmFyeSBkaXJlY3Rvcmll cyB1c2luZyB0aGUgNjQgc3ltYm9saWMgbGluay4iCi0gICAgICBkbmwgQnV0 IHdlIHdhbnQgdG8gcmVjb2duaXplIHRoZSBzcGFyY3Y5IG9yIGFtZDY0IHN1 YmRpcmVjdG9yeSBhbHNvIGlmIHRoZQotICAgICAgZG5sIHN5bWxpbmsgaXMg bWlzc2luZywgc28gd2Ugc2V0IGFjbF9saWJkaXJzdGVtMiB0b28uCi0gICAg ICBBQ19DQUNIRV9DSEVDSyhbZm9yIDY0LWJpdCBob3N0XSwgW2dsX2N2X3Nv bGFyaXNfNjRiaXRdLAotICAgICAgICBbQUNfRUdSRVBfQ1BQKFtzaXh0eWZv dXIgYml0c10sIFsKLSNpZmRlZiBfTFA2NAotc2l4dHlmb3VyIGJpdHMKLSNl bmRpZgotICAgICAgICAgICBdLCBbZ2xfY3Zfc29sYXJpc182NGJpdD15ZXNd LCBbZ2xfY3Zfc29sYXJpc182NGJpdD1ub10pCi0gICAgICAgIF0pCi0gICAg ICBpZiB0ZXN0ICRnbF9jdl9zb2xhcmlzXzY0Yml0ID0geWVzOyB0aGVuCi0g ICAgICAgIGFjbF9saWJkaXJzdGVtPWxpYi82NAotICAgICAgICBjYXNlICIk aG9zdF9jcHUiIGluCi0gICAgICAgICAgc3BhcmMqKSAgICAgICAgYWNsX2xp YmRpcnN0ZW0yPWxpYi9zcGFyY3Y5IDs7Ci0gICAgICAgICAgaSo4NiB8IHg4 Nl82NCkgYWNsX2xpYmRpcnN0ZW0yPWxpYi9hbWQ2NCA7OworICBzZWFyY2hw YXRoPWAoTENfQUxMPUMgJENDIC1wcmludC1zZWFyY2gtZGlycykgMj4vZGV2 L251bGwgfCBzZWQgLW4gLWUgJ3MsXmxpYnJhcmllczogLCxwJyB8IHNlZCAt ZSAncyxePSwsJ2AKKyAgaWYgdGVzdCAtbiAiJHNlYXJjaHBhdGgiOyB0aGVu CisgICAgYWNsX3NhdmVfSUZTPSIke0lGUz0gCX0iOyBJRlM9IjoiCisgICAg Zm9yIHNlYXJjaGRpciBpbiAkc2VhcmNocGF0aDsgZG8KKyAgICAgIGlmIHRl c3QgLWQgIiRzZWFyY2hkaXIiOyB0aGVuCisgICAgICAgIGNhc2UgIiRzZWFy Y2hkaXIiIGluCisgICAgICAgICAgKi9saWI2NC8gfCAqL2xpYjY0ICkgYWNs X2xpYmRpcnN0ZW09bGliNjQgOzsKKyAgICAgICAgICAqKSBzZWFyY2hkaXI9 YGNkICIkc2VhcmNoZGlyIiAmJiBwd2RgCisgICAgICAgICAgICAgY2FzZSAi JHNlYXJjaGRpciIgaW4KKyAgICAgICAgICAgICAgICovbGliNjQgKSBhY2xf bGliZGlyc3RlbT1saWI2NCA7OworICAgICAgICAgICAgIGVzYWMgOzsKICAg ICAgICAgZXNhYwogICAgICAgZmkKLSAgICAgIDs7Ci0gICAgKikKLSAgICAg IHNlYXJjaHBhdGg9YChMQ19BTEw9QyAkQ0MgLXByaW50LXNlYXJjaC1kaXJz KSAyPi9kZXYvbnVsbCB8IHNlZCAtbiAtZSAncyxebGlicmFyaWVzOiAsLHAn IHwgc2VkIC1lICdzLF49LCwnYAotICAgICAgaWYgdGVzdCAtbiAiJHNlYXJj aHBhdGgiOyB0aGVuCi0gICAgICAgIGFjbF9zYXZlX0lGUz0iJHtJRlM9IAl9 IjsgSUZTPSI6IgotICAgICAgICBmb3Igc2VhcmNoZGlyIGluICRzZWFyY2hw YXRoOyBkbwotICAgICAgICAgIGlmIHRlc3QgLWQgIiRzZWFyY2hkaXIiOyB0 aGVuCi0gICAgICAgICAgICBjYXNlICIkc2VhcmNoZGlyIiBpbgotICAgICAg ICAgICAgICAqL2xpYjY0LyB8ICovbGliNjQgKSBhY2xfbGliZGlyc3RlbT1s aWI2NCA7OwotICAgICAgICAgICAgICAqLy4uLyB8ICovLi4gKQotICAgICAg ICAgICAgICAgICMgQmV0dGVyIGlnbm9yZSBkaXJlY3RvcmllcyBvZiB0aGlz IGZvcm0uIFRoZXkgYXJlIG1pc2xlYWRpbmcuCi0gICAgICAgICAgICAgICAg OzsKLSAgICAgICAgICAgICAgKikgc2VhcmNoZGlyPWBjZCAiJHNlYXJjaGRp ciIgJiYgcHdkYAotICAgICAgICAgICAgICAgICBjYXNlICIkc2VhcmNoZGly IiBpbgotICAgICAgICAgICAgICAgICAgICovbGliNjQgKSBhY2xfbGliZGly c3RlbT1saWI2NCA7OwotICAgICAgICAgICAgICAgICBlc2FjIDs7Ci0gICAg ICAgICAgICBlc2FjCi0gICAgICAgICAgZmkKLSAgICAgICAgZG9uZQotICAg ICAgICBJRlM9IiRhY2xfc2F2ZV9JRlMiCi0gICAgICBmaQotICAgICAgOzsK LSAgZXNhYwotICB0ZXN0IC1uICIkYWNsX2xpYmRpcnN0ZW0yIiB8fCBhY2xf bGliZGlyc3RlbTI9IiRhY2xfbGliZGlyc3RlbSIKKyAgICBkb25lCisgICAg SUZTPSIkYWNsX3NhdmVfSUZTIgorICBmaQogXSkKZGlmZiAtLWdpdCBhL3Bn YWRtaW4vaW5jbHVkZS9saWJzc2gyL1dpbjMyL2xpYnNzaDJfY29uZmlnLmgg Yi9wZ2FkbWluL2luY2x1ZGUvbGlic3NoMi9XaW4zMi9saWJzc2gyX2NvbmZp Zy5oCmluZGV4IDRlMmFlMjkuLjNlM2NhZjQgMTAwNjQ0Ci0tLSBhL3BnYWRt aW4vaW5jbHVkZS9saWJzc2gyL1dpbjMyL2xpYnNzaDJfY29uZmlnLmgKKysr IGIvcGdhZG1pbi9pbmNsdWRlL2xpYnNzaDIvV2luMzIvbGlic3NoMl9jb25m aWcuaApAQCAtMTYsOCArMTYsOSBAQAogI2RlZmluZSBIQVZFX0lOVFRZUEVT X0gKICNkZWZpbmUgSEFWRV9TWVNfVElNRV9ICiAjZGVmaW5lIEhBVkVfR0VU VElNRU9GREFZCi0jZW5kaWYKKyNlbmRpZiAvKiBfX01JTkdXMzJfXyAqLwog CisjZGVmaW5lIEhBVkVfTElCQ1JZUFQzMgogI2RlZmluZSBIQVZFX1dJTlNP Q0syX0gKICNkZWZpbmUgSEFWRV9JT0NUTFNPQ0tFVAogI2RlZmluZSBIQVZF X1NFTEVDVApAQCAtMzEsOCArMzIsMTAgQEAKICNkZWZpbmUgc3RybmNhc2Vj bXAgX3N0cm5pY21wCiAjZGVmaW5lIHN0cmNhc2VjbXAgX3N0cmljbXAKICNl bHNlCisjaWZuZGVmIF9fTUlOR1czMl9fCiAjZGVmaW5lIHN0cm5jYXNlY21w IHN0cm5pY21wCiAjZGVmaW5lIHN0cmNhc2VjbXAgc3RyaWNtcAorI2VuZGlm IC8qIF9fTUlOR1czMl9fICovCiAjZW5kaWYgLyogX01TQ19WRVIgKi8KIAog LyogRW5hYmxlIG5ld2VyIGRpZmZpZS1oZWxsbWFuLWdyb3VwLWV4Y2hhbmdl LXNoYTEgc3ludGF4ICovCmRpZmYgLS1naXQgYS9wZ2FkbWluL2luY2x1ZGUv bGlic3NoMi9jcnlwdG8uaCBiL3BnYWRtaW4vaW5jbHVkZS9saWJzc2gyL2Ny eXB0by5oCmluZGV4IGZiNTc2YjYuLjA1ZjVhNWMgMTAwNjQ0Ci0tLSBhL3Bn YWRtaW4vaW5jbHVkZS9saWJzc2gyL2NyeXB0by5oCisrKyBiL3BnYWRtaW4v aW5jbHVkZS9saWJzc2gyL2NyeXB0by5oCkBAIC0zOCwxMCArMzgsMTYgQEAK ICNpZm5kZWYgTElCU1NIMl9DUllQVE9fSAogI2RlZmluZSBMSUJTU0gyX0NS WVBUT19ICiAKKyNpZmRlZiBMSUJTU0gyX09QRU5TU0wKKyNpbmNsdWRlICJv cGVuc3NsLmgiCisjZW5kaWYKKwogI2lmZGVmIExJQlNTSDJfTElCR0NSWVBU CiAjaW5jbHVkZSAibGliZ2NyeXB0LmgiCi0jZWxzZQotI2luY2x1ZGUgIm9w ZW5zc2wuaCIKKyNlbmRpZgorCisjaWZkZWYgTElCU1NIMl9XSU5DTkcKKyNp bmNsdWRlICJ3aW5jbmcuaCIKICNlbmRpZgogCiBpbnQgX2xpYnNzaDJfcnNh X25ldyhsaWJzc2gyX3JzYV9jdHggKiogcnNhLApAQCAtNzQsNiArODAsMTAg QEAgaW50IF9saWJzc2gyX3JzYV9zaGExX3NpZ24oTElCU1NIMl9TRVNTSU9O ICogc2Vzc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf dCBoYXNoX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGNoYXIgKipzaWduYXR1cmUsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzaXplX3QgKnNpZ25hdHVyZV9sZW4pOworaW50IF9saWJzc2gyX3Jz YV9uZXdfcHJpdmF0ZV9mcm9tbWVtb3J5KGxpYnNzaDJfcnNhX2N0eCAqKiBy c2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TElCU1NIMl9TRVNTSU9OICogc2Vzc2lvbiwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmaWxlZGF0YSwg c2l6ZV90IGZpbGVkYXRhX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjb25zdCBjaGFyICpwYXNzcGhy YXNlKTsKIAogI2lmIExJQlNTSDJfRFNBCiBpbnQgX2xpYnNzaDJfZHNhX25l dyhsaWJzc2gyX2RzYV9jdHggKiogZHNhLApAQCAtOTYsNiArMTA2LDEwIEBA IGludCBfbGlic3NoMl9kc2Ffc2hhMV92ZXJpZnkobGlic3NoMl9kc2FfY3R4 ICogZHNhY3R4LAogaW50IF9saWJzc2gyX2RzYV9zaGExX3NpZ24obGlic3No Ml9kc2FfY3R4ICogZHNhY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgdW5zaWduZWQgY2hhciAqaGFzaCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgaGFzaF9sZW4sIHVuc2lnbmVk IGNoYXIgKnNpZyk7CitpbnQgX2xpYnNzaDJfZHNhX25ld19wcml2YXRlX2Zy b21tZW1vcnkobGlic3NoMl9kc2FfY3R4ICoqIGRzYSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJTU0gyX1NFU1NJT04g KiBzZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IGNoYXIgKmZpbGVkYXRhLCBzaXplX3QgZmlsZWRhdGFf bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGNvbnN0IGNoYXIgKnBhc3NwaHJhc2UpOwogI2VuZGlmCiAK IGludCBfbGlic3NoMl9jaXBoZXJfaW5pdChfbGlic3NoMl9jaXBoZXJfY3R4 ICogaCwKQEAgLTExNCw2ICsxMjgsMTQgQEAgaW50IF9saWJzc2gyX3B1Yl9w cml2X2tleWZpbGUoTElCU1NIMl9TRVNTSU9OICpzZXNzaW9uLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpwdWJrZXlkYXRhX2xl biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg KnByaXZhdGVrZXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBjaGFyICpwYXNzcGhyYXNlKTsKK2ludCBfbGlic3NoMl9wdWJfcHJp dl9rZXlmaWxlbWVtb3J5KExJQlNTSDJfU0VTU0lPTiAqc2Vzc2lvbiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNo YXIgKiptZXRob2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzaXplX3QgKm1ldGhvZF9sZW4sCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICoqcHVia2V5ZGF0YSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAq cHVia2V5ZGF0YV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBjaGFyICpwcml2YXRla2V5ZGF0YSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBwcml2YXRla2V5 ZGF0YV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBjaGFyICpwYXNzcGhyYXNlKTsKIAogdm9pZCBfbGlic3NoMl9p bml0X2Flc19jdHIodm9pZCk7CiAKZGlmZiAtLWdpdCBhL3BnYWRtaW4vaW5j bHVkZS9saWJzc2gyL2xpYmdjcnlwdC5oIGIvcGdhZG1pbi9pbmNsdWRlL2xp YnNzaDIvbGliZ2NyeXB0LmgKaW5kZXggMWYwMjc2ZS4uMjAwNjJlZCAxMDA2 NDQKLS0tIGEvcGdhZG1pbi9pbmNsdWRlL2xpYnNzaDIvbGliZ2NyeXB0LmgK KysrIGIvcGdhZG1pbi9pbmNsdWRlL2xpYnNzaDIvbGliZ2NyeXB0LmgKQEAg LTQyLDYgKzQyLDggQEAKICNkZWZpbmUgTElCU1NIMl9NRDUgMQogCiAjZGVm aW5lIExJQlNTSDJfSE1BQ19SSVBFTUQgMQorI2RlZmluZSBMSUJTU0gyX0hN QUNfU0hBMjU2IDEKKyNkZWZpbmUgTElCU1NIMl9ITUFDX1NIQTUxMiAxCiAK ICNkZWZpbmUgTElCU1NIMl9BRVMgMQogI2RlZmluZSBMSUJTU0gyX0FFU19D VFIgMQpAQCAtNTUsMzEgKzU3LDQ5IEBACiAKICNkZWZpbmUgTUQ1X0RJR0VT VF9MRU5HVEggMTYKICNkZWZpbmUgU0hBX0RJR0VTVF9MRU5HVEggMjAKKyNk ZWZpbmUgU0hBMjU2X0RJR0VTVF9MRU5HVEggMzIKIAogI2RlZmluZSBfbGli c3NoMl9yYW5kb20oYnVmLCBsZW4pICAgICAgICAgICAgICAgIFwKICAgKGdj cnlfcmFuZG9taXplICgoYnVmKSwgKGxlbiksIEdDUllfU1RST05HX1JBTkRP TSksIDEpCiAKICNkZWZpbmUgbGlic3NoMl9zaGExX2N0eCBnY3J5X21kX2hk X3QKLSNkZWZpbmUgbGlic3NoMl9zaGExX2luaXQoY3R4KSBnY3J5X21kX29w ZW4gKGN0eCwgIEdDUllfTURfU0hBMSwgMCk7Ci0jZGVmaW5lIGxpYnNzaDJf c2hhMV91cGRhdGUoY3R4LCBkYXRhLCBsZW4pIGdjcnlfbWRfd3JpdGUgKGN0 eCwgZGF0YSwgbGVuKQorCisvKiByZXR1cm5zIDAgaW4gY2FzZSBvZiBmYWls dXJlICovCisjZGVmaW5lIGxpYnNzaDJfc2hhMV9pbml0KGN0eCkgXAorICAo R1BHX0VSUl9OT19FUlJPUiA9PSBnY3J5X21kX29wZW4gKGN0eCwgIEdDUllf TURfU0hBMSwgMCkpCisjZGVmaW5lIGxpYnNzaDJfc2hhMV91cGRhdGUoY3R4 LCBkYXRhLCBsZW4pIFwKKyAgZ2NyeV9tZF93cml0ZSAoY3R4LCAodW5zaWdu ZWQgY2hhciAqKSBkYXRhLCBsZW4pCiAjZGVmaW5lIGxpYnNzaDJfc2hhMV9m aW5hbChjdHgsIG91dCkgXAogICBtZW1jcHkgKG91dCwgZ2NyeV9tZF9yZWFk IChjdHgsIDApLCBTSEFfRElHRVNUX0xFTkdUSCksIGdjcnlfbWRfY2xvc2Ug KGN0eCkKICNkZWZpbmUgbGlic3NoMl9zaGExKG1lc3NhZ2UsIGxlbiwgb3V0 KSBcCiAgIGdjcnlfbWRfaGFzaF9idWZmZXIgKEdDUllfTURfU0hBMSwgb3V0 LCBtZXNzYWdlLCBsZW4pCiAKKyNkZWZpbmUgbGlic3NoMl9zaGEyNTZfY3R4 IGdjcnlfbWRfaGRfdAorCisjZGVmaW5lIGxpYnNzaDJfc2hhMjU2X2luaXQo Y3R4KSBcCisgIChHUEdfRVJSX05PX0VSUk9SID09IGdjcnlfbWRfb3BlbiAo Y3R4LCAgR0NSWV9NRF9TSEEyNTYsIDApKQorI2RlZmluZSBsaWJzc2gyX3No YTI1Nl91cGRhdGUoY3R4LCBkYXRhLCBsZW4pIFwKKyAgZ2NyeV9tZF93cml0 ZSAoY3R4LCAodW5zaWduZWQgY2hhciAqKSBkYXRhLCBsZW4pCisjZGVmaW5l IGxpYnNzaDJfc2hhMjU2X2ZpbmFsKGN0eCwgb3V0KSBcCisgIG1lbWNweSAo b3V0LCBnY3J5X21kX3JlYWQgKGN0eCwgMCksIFNIQTI1Nl9ESUdFU1RfTEVO R1RIKSwgZ2NyeV9tZF9jbG9zZSAoY3R4KQorI2RlZmluZSBsaWJzc2gyX3No YTI1NihtZXNzYWdlLCBsZW4sIG91dCkgXAorICBnY3J5X21kX2hhc2hfYnVm ZmVyIChHQ1JZX01EX1NIQTI1Niwgb3V0LCBtZXNzYWdlLCBsZW4pCisKICNk ZWZpbmUgbGlic3NoMl9tZDVfY3R4IGdjcnlfbWRfaGRfdAogCiAvKiByZXR1 cm5zIDAgaW4gY2FzZSBvZiBmYWlsdXJlICovCiAjZGVmaW5lIGxpYnNzaDJf bWQ1X2luaXQoY3R4KSBcCiAgIChHUEdfRVJSX05PX0VSUk9SID09IGdjcnlf bWRfb3BlbiAoY3R4LCAgR0NSWV9NRF9NRDUsIDApKQogCi0jZGVmaW5lIGxp YnNzaDJfbWQ1X3VwZGF0ZShjdHgsIGRhdGEsIGxlbikgZ2NyeV9tZF93cml0 ZSAoY3R4LCBkYXRhLCBsZW4pCisjZGVmaW5lIGxpYnNzaDJfbWQ1X3VwZGF0 ZShjdHgsIGRhdGEsIGxlbikgXAorICBnY3J5X21kX3dyaXRlIChjdHgsICh1 bnNpZ25lZCBjaGFyICopIGRhdGEsIGxlbikKICNkZWZpbmUgbGlic3NoMl9t ZDVfZmluYWwoY3R4LCBvdXQpIFwKICAgbWVtY3B5IChvdXQsIGdjcnlfbWRf cmVhZCAoY3R4LCAwKSwgTUQ1X0RJR0VTVF9MRU5HVEgpLCBnY3J5X21kX2Ns b3NlIChjdHgpCiAjZGVmaW5lIGxpYnNzaDJfbWQ1KG1lc3NhZ2UsIGxlbiwg b3V0KSBcCiAgIGdjcnlfbWRfaGFzaF9idWZmZXIgKEdDUllfTURfTUQ1LCBv dXQsIG1lc3NhZ2UsIGxlbikKIAogI2RlZmluZSBsaWJzc2gyX2htYWNfY3R4 IGdjcnlfbWRfaGRfdAorI2RlZmluZSBsaWJzc2gyX2htYWNfY3R4X2luaXQo Y3R4KQogI2RlZmluZSBsaWJzc2gyX2htYWNfc2hhMV9pbml0KGN0eCwga2V5 LCBrZXlsZW4pIFwKICAgZ2NyeV9tZF9vcGVuIChjdHgsIEdDUllfTURfU0hB MSwgR0NSWV9NRF9GTEFHX0hNQUMpLCBcCiAgICAgZ2NyeV9tZF9zZXRrZXkg KCpjdHgsIGtleSwga2V5bGVuKQpAQCAtODksOCArMTA5LDE0IEBACiAjZGVm aW5lIGxpYnNzaDJfaG1hY19yaXBlbWQxNjBfaW5pdChjdHgsIGtleSwga2V5 bGVuKSBcCiAgIGdjcnlfbWRfb3BlbiAoY3R4LCBHQ1JZX01EX1JNRDE2MCwg R0NSWV9NRF9GTEFHX0hNQUMpLCBcCiAgICAgZ2NyeV9tZF9zZXRrZXkgKCpj dHgsIGtleSwga2V5bGVuKQorI2RlZmluZSBsaWJzc2gyX2htYWNfc2hhMjU2 X2luaXQoY3R4LCBrZXksIGtleWxlbikgXAorICBnY3J5X21kX29wZW4gKGN0 eCwgR0NSWV9NRF9TSEEyNTYsIEdDUllfTURfRkxBR19ITUFDKSwgXAorICAg IGdjcnlfbWRfc2V0a2V5ICgqY3R4LCBrZXksIGtleWxlbikKKyNkZWZpbmUg bGlic3NoMl9obWFjX3NoYTUxMl9pbml0KGN0eCwga2V5LCBrZXlsZW4pIFwK KyAgZ2NyeV9tZF9vcGVuIChjdHgsIEdDUllfTURfU0hBNTEyLCBHQ1JZX01E X0ZMQUdfSE1BQyksIFwKKyAgICBnY3J5X21kX3NldGtleSAoKmN0eCwga2V5 LCBrZXlsZW4pCiAjZGVmaW5lIGxpYnNzaDJfaG1hY191cGRhdGUoY3R4LCBk YXRhLCBkYXRhbGVuKSBcCi0gIGdjcnlfbWRfd3JpdGUgKGN0eCwgZGF0YSwg ZGF0YWxlbikKKyAgZ2NyeV9tZF93cml0ZSAoY3R4LCAodW5zaWduZWQgY2hh ciAqKSBkYXRhLCBkYXRhbGVuKQogI2RlZmluZSBsaWJzc2gyX2htYWNfZmlu YWwoY3R4LCBkYXRhKSBcCiAgIG1lbWNweSAoZGF0YSwgZ2NyeV9tZF9yZWFk IChjdHgsIDApLCBcCiAgICAgICBnY3J5X21kX2dldF9hbGdvX2RsZW4gKGdj cnlfbWRfZ2V0X2FsZ28gKGN0eCkpKQpAQCAtMTQzLDYgKzE2OSw3IEBACiAj ZGVmaW5lIF9saWJzc2gyX2JuX2N0eF9uZXcoKSAwCiAjZGVmaW5lIF9saWJz c2gyX2JuX2N0eF9mcmVlKGJuY3R4KSAoKHZvaWQpMCkKICNkZWZpbmUgX2xp YnNzaDJfYm5faW5pdCgpIGdjcnlfbXBpX25ldygwKQorI2RlZmluZSBfbGli c3NoMl9ibl9pbml0X2Zyb21fYmluKCkgTlVMTCAvKiBiZWNhdXNlIGdjcnlf bXBpX3NjYW4oKSBjcmVhdGVzIGEgbmV3IGJpZ251bSAqLwogI2RlZmluZSBf bGlic3NoMl9ibl9yYW5kKGJuLCBiaXRzLCB0b3AsIGJvdHRvbSkgZ2NyeV9t cGlfcmFuZG9taXplIChibiwgYml0cywgR0NSWV9XRUFLX1JBTkRPTSkKICNk ZWZpbmUgX2xpYnNzaDJfYm5fbW9kX2V4cChyLCBhLCBwLCBtLCBjdHgpIGdj cnlfbXBpX3Bvd20gKHIsIGEsIHAsIG0pCiAjZGVmaW5lIF9saWJzc2gyX2Ju X3NldF93b3JkKGJuLCB2YWwpIGdjcnlfbXBpX3NldF91aShibiwgdmFsKQpk aWZmIC0tZ2l0IGEvcGdhZG1pbi9pbmNsdWRlL2xpYnNzaDIvbGlic3NoMi5o IGIvcGdhZG1pbi9pbmNsdWRlL2xpYnNzaDIvbGlic3NoMi5oCmluZGV4IDli MWE2ZTEuLmYzZDk3NmMgMTAwNjQ0Ci0tLSBhL3BnYWRtaW4vaW5jbHVkZS9s aWJzc2gyL2xpYnNzaDIuaAorKysgYi9wZ2FkbWluL2luY2x1ZGUvbGlic3No Mi9saWJzc2gyLmgKQEAgLTEsNSArMSw1IEBACiAvKiBDb3B5cmlnaHQgKGMp IDIwMDQtMjAwOSwgU2FyYSBHb2xlbW9uIDxzYXJhZ0BsaWJzc2gyLm9yZz4K LSAqIENvcHlyaWdodCAoYykgMjAwOS0yMDEyIERhbmllbCBTdGVuYmVyZwor ICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTUgRGFuaWVsIFN0ZW5iZXJnCiAg KiBDb3B5cmlnaHQgKGMpIDIwMTAgU2ltb24gSm9zZWZzc29uIDxzaW1vbkBq b3NlZnNzb24ub3JnPgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBA IC00MCwxOSArNDAsMTkgQEAKICNpZm5kZWYgTElCU1NIMl9ICiAjZGVmaW5l IExJQlNTSDJfSCAxCiAKLSNkZWZpbmUgTElCU1NIMl9DT1BZUklHSFQgIjIw MDQtMjAxMiBUaGUgbGlic3NoMiBwcm9qZWN0IGFuZCBpdHMgY29udHJpYnV0 b3JzLiIKKyNkZWZpbmUgTElCU1NIMl9DT1BZUklHSFQgIjIwMDQtMjAxNSBU aGUgbGlic3NoMiBwcm9qZWN0IGFuZCBpdHMgY29udHJpYnV0b3JzLiIKIAog LyogV2UgdXNlIHVuZGVyc2NvcmUgaW5zdGVhZCBvZiBkYXNoIHdoZW4gYXBw ZW5kaW5nIERFViBpbiBkZXYgdmVyc2lvbnMganVzdAogICAgdG8gbWFrZSB0 aGUgQkFOTkVSIGRlZmluZSAodXNlZCBieSBzcmMvc2Vzc2lvbi5jKSBiZSBh IHZhbGlkIFNTSAogICAgYmFubmVyLiBSZWxlYXNlIHZlcnNpb25zIGhhdmUg bm8gYXBwZW5kZWQgc3RyaW5ncyBhbmQgbWF5IG9mIGNvdXJzZSBub3QKICAg IGhhdmUgZGFzaGVzIGVpdGhlci4gKi8KLSNkZWZpbmUgTElCU1NIMl9WRVJT SU9OICIxLjQuMyIKKyNkZWZpbmUgTElCU1NIMl9WRVJTSU9OICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiMS42LjFfREVWIgogCiAvKiBUaGUgbnVt ZXJpYyB2ZXJzaW9uIG51bWJlciBpcyBhbHNvIGF2YWlsYWJsZSAiaW4gcGFy dHMiIGJ5IHVzaW5nIHRoZXNlCiAgICBkZWZpbmVzOiAqLwotI2RlZmluZSBM SUJTU0gyX1ZFUlNJT05fTUFKT1IgMQotI2RlZmluZSBMSUJTU0gyX1ZFUlNJ T05fTUlOT1IgNAotI2RlZmluZSBMSUJTU0gyX1ZFUlNJT05fUEFUQ0ggMwor I2RlZmluZSBMSUJTU0gyX1ZFUlNJT05fTUFKT1IgICAgICAgICAgICAgICAg ICAgICAgIDEKKyNkZWZpbmUgTElCU1NIMl9WRVJTSU9OX01JTk9SICAgICAg ICAgICAgICAgICAgICAgICA2CisjZGVmaW5lIExJQlNTSDJfVkVSU0lPTl9Q QVRDSCAgICAgICAgICAgICAgICAgICAgICAgMQogCiAvKiBUaGlzIGlzIHRo ZSBudW1lcmljIHZlcnNpb24gb2YgdGhlIGxpYnNzaDIgdmVyc2lvbiBudW1i ZXIsIG1lYW50IGZvciBlYXNpZXIKICAgIHBhcnNpbmcgYW5kIGNvbXBhcmlv bnMgYnkgcHJvZ3JhbXMuIFRoZSBMSUJTU0gyX1ZFUlNJT05fTlVNIGRlZmlu ZSB3aWxsCkBAIC02OSw3ICs2OSw3IEBACiAgICBhbmQgaXQgaXMgYWx3YXlz IGEgZ3JlYXRlciBudW1iZXIgaW4gYSBtb3JlIHJlY2VudCByZWxlYXNlLiBJ dCBtYWtlcwogICAgY29tcGFyaXNvbnMgd2l0aCBncmVhdGVyIHRoYW4gYW5k IGxlc3MgdGhhbiB3b3JrLgogKi8KLSNkZWZpbmUgTElCU1NIMl9WRVJTSU9O X05VTSAweDAxMDQwMworI2RlZmluZSBMSUJTU0gyX1ZFUlNJT05fTlVNICAg ICAgICAgICAgICAgICAgICAgICAgIDB4MDEwNjAxCiAKIC8qCiAgKiBUaGlz IGlzIHRoZSBkYXRlIGFuZCB0aW1lIHdoZW4gdGhlIGZ1bGwgc291cmNlIHBh Y2thZ2Ugd2FzIGNyZWF0ZWQuIFRoZQpAQCAtODAsNyArODAsNyBAQAogICoK ICAqICJNb24gRmViIDEyIDExOjM1OjMzIFVUQyAyMDA3IgogICovCi0jZGVm aW5lIExJQlNTSDJfVElNRVNUQU1QICJUdWUgTm92IDI3IDIxOjQ1OjIwIFVU QyAyMDEyIgorI2RlZmluZSBMSUJTU0gyX1RJTUVTVEFNUCAiREVWIgogCiAj aWZuZGVmIFJDX0lOVk9LRUQKIApAQCAtMTAwLDE3ICsxMDAsMjEgQEAgZXh0 ZXJuICJDIiB7CiAvKiBBbGxvdyBhbHRlcm5hdGUgQVBJIHByZWZpeCBmcm9t IENGTEFHUyBvciBjYWxsaW5nIGFwcCAqLwogI2lmbmRlZiBMSUJTU0gyX0FQ SQogIyBpZmRlZiBMSUJTU0gyX1dJTjMyCi0jICBpZmRlZiBMSUJTU0gyX0xJ QlJBUlkKLSMgICBkZWZpbmUgTElCU1NIMl9BUEkgX19kZWNsc3BlYyhkbGxl eHBvcnQpCisjICBpZmRlZiBfV0lORExMCisjICAgaWZkZWYgTElCU1NIMl9M SUJSQVJZCisjICAgIGRlZmluZSBMSUJTU0gyX0FQSSBfX2RlY2xzcGVjKGRs bGV4cG9ydCkKKyMgICBlbHNlCisjICAgIGRlZmluZSBMSUJTU0gyX0FQSSBf X2RlY2xzcGVjKGRsbGltcG9ydCkKKyMgICBlbmRpZiAvKiBMSUJTU0gyX0xJ QlJBUlkgKi8KICMgIGVsc2UKLSMgICBkZWZpbmUgTElCU1NIMl9BUEkgX19k ZWNsc3BlYyhkbGxpbXBvcnQpCi0jICBlbmRpZiAvKiBMSUJTU0gyX0xJQlJB UlkgKi8KKyMgICBkZWZpbmUgTElCU1NIMl9BUEkKKyMgIGVuZGlmCiAjIGVs c2UgLyogIUxJQlNTSDJfV0lOMzIgKi8KICMgIGRlZmluZSBMSUJTU0gyX0FQ SQogIyBlbmRpZiAvKiBMSUJTU0gyX1dJTjMyICovCiAjZW5kaWYgLyogTElC U1NIMl9BUEkgKi8KIAotI2lmIGRlZmluZWQoTElCU1NIMl9EQVJXSU4pCisj aWZkZWYgSEFWRV9TWVNfVUlPX0gKICMgaW5jbHVkZSA8c3lzL3Vpby5oPgog I2VuZGlmCiAKQEAgLTE0MSw2ICsxNDUsNjcgQEAgdHlwZWRlZiBpbnQgbGli c3NoMl9zb2NrZXRfdDsKICNkZWZpbmUgTElCU1NIMl9JTlZBTElEX1NPQ0tF VCAtMQogI2VuZGlmIC8qIFdJTjMyICovCiAKKy8qCisgKiBEZXRlcm1pbmUg d2hldGhlciB0aGVyZSBpcyBzbWFsbCBvciBsYXJnZSBmaWxlIHN1cHBvcnQg b24gd2luZG93cy4KKyAqLworCisjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYg IWRlZmluZWQoX1dJTjMyX1dDRSkKKyMgIGlmIChfTVNDX1ZFUiA+PSA5MDAp ICYmIChfSU5URUdSQUxfTUFYX0JJVFMgPj0gNjQpCisjICAgIGRlZmluZSBM SUJTU0gyX1VTRV9XSU4zMl9MQVJHRV9GSUxFUworIyAgZWxzZQorIyAgICBk ZWZpbmUgTElCU1NIMl9VU0VfV0lOMzJfU01BTExfRklMRVMKKyMgIGVuZGlm CisjZW5kaWYKKworI2lmIGRlZmluZWQoX19NSU5HVzMyX18pICYmICFkZWZp bmVkKExJQlNTSDJfVVNFX1dJTjMyX0xBUkdFX0ZJTEVTKQorIyAgZGVmaW5l IExJQlNTSDJfVVNFX1dJTjMyX0xBUkdFX0ZJTEVTCisjZW5kaWYKKworI2lm IGRlZmluZWQoX19XQVRDT01DX18pICYmICFkZWZpbmVkKExJQlNTSDJfVVNF X1dJTjMyX0xBUkdFX0ZJTEVTKQorIyAgZGVmaW5lIExJQlNTSDJfVVNFX1dJ TjMyX0xBUkdFX0ZJTEVTCisjZW5kaWYKKworI2lmIGRlZmluZWQoX19QT0ND X18pCisjICB1bmRlZiBMSUJTU0gyX1VTRV9XSU4zMl9MQVJHRV9GSUxFUwor I2VuZGlmCisKKyNpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoTElC U1NIMl9VU0VfV0lOMzJfTEFSR0VfRklMRVMpICYmICFkZWZpbmVkKExJQlNT SDJfVVNFX1dJTjMyX1NNQUxMX0ZJTEVTKQorIyAgZGVmaW5lIExJQlNTSDJf VVNFX1dJTjMyX1NNQUxMX0ZJTEVTCisjZW5kaWYKKworLyoKKyAqIExhcmdl IGZpbGUgKD4yR2IpIHN1cHBvcnQgdXNpbmcgV0lOMzIgZnVuY3Rpb25zLgor ICovCisKKyNpZmRlZiBMSUJTU0gyX1VTRV9XSU4zMl9MQVJHRV9GSUxFUwor IyAgaW5jbHVkZSA8aW8uaD4KKyMgIGluY2x1ZGUgPHN5cy90eXBlcy5oPgor IyAgaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyMgIGRlZmluZSBMSUJTU0gyX1NU UlVDVF9TVEFUX1NJWkVfRk9STUFUICAgICIlSTY0ZCIKK3R5cGVkZWYgc3Ry dWN0IF9zdGF0aTY0IGxpYnNzaDJfc3RydWN0X3N0YXQ7Cit0eXBlZGVmIF9f aW50NjQgbGlic3NoMl9zdHJ1Y3Rfc3RhdF9zaXplOworI2VuZGlmCisKKy8q CisgKiBTbWFsbCBmaWxlICg8MkdiKSBzdXBwb3J0IHVzaW5nIFdJTjMyIGZ1 bmN0aW9ucy4KKyAqLworCisjaWZkZWYgTElCU1NIMl9VU0VfV0lOMzJfU01B TExfRklMRVMKKyMgIGluY2x1ZGUgPHN5cy90eXBlcy5oPgorIyAgaW5jbHVk ZSA8c3lzL3N0YXQuaD4KKyMgIGlmbmRlZiBfV0lOMzJfV0NFCisjICAgIGRl ZmluZSBMSUJTU0gyX1NUUlVDVF9TVEFUX1NJWkVfRk9STUFUICAgICIlZCIK K3R5cGVkZWYgc3RydWN0IF9zdGF0IGxpYnNzaDJfc3RydWN0X3N0YXQ7Cit0 eXBlZGVmIG9mZl90IGxpYnNzaDJfc3RydWN0X3N0YXRfc2l6ZTsKKyMgIGVu ZGlmCisjZW5kaWYKKworI2lmbmRlZiBMSUJTU0gyX1NUUlVDVF9TVEFUX1NJ WkVfRk9STUFUCisjICBkZWZpbmUgTElCU1NIMl9TVFJVQ1RfU1RBVF9TSVpF X0ZPUk1BVCAgICAgICIlemQiCit0eXBlZGVmIHN0cnVjdCBzdGF0IGxpYnNz aDJfc3RydWN0X3N0YXQ7Cit0eXBlZGVmIG9mZl90IGxpYnNzaDJfc3RydWN0 X3N0YXRfc2l6ZTsKKyNlbmRpZgorCiAvKiBQYXJ0IG9mIGV2ZXJ5IGJhbm5l ciwgdXNlciBzcGVjaWZpZWQgb3Igbm90ICovCiAjZGVmaW5lIExJQlNTSDJf U1NIX0JBTk5FUiAgICAgICAgICAgICAgICAgICJTU0gtMi4wLWxpYnNzaDJf IiBMSUJTU0gyX1ZFUlNJT04KIApAQCAtMjgxLDcgKzM0Niw4IEBAIHR5cGVk ZWYgc3RydWN0IF9MSUJTU0gyX1BPTExGRCB7CiAgICAgdW5zaWduZWQgY2hh ciB0eXBlOyAvKiBMSUJTU0gyX1BPTExGRF8qIGJlbG93ICovCiAKICAgICB1 bmlvbiB7Ci0gICAgICAgIGludCBzb2NrZXQ7IC8qIEZpbGUgZGVzY3JpcHRv cnMgLS0gZXhhbWluZWQgd2l0aCBzeXN0ZW0gc2VsZWN0KCkgY2FsbCAqLwor ICAgICAgICBsaWJzc2gyX3NvY2tldF90IHNvY2tldDsgLyogRmlsZSBkZXNj cmlwdG9ycyAtLSBleGFtaW5lZCB3aXRoCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzeXN0ZW0gc2VsZWN0KCkgY2FsbCAqLwogICAg ICAgICBMSUJTU0gyX0NIQU5ORUwgKmNoYW5uZWw7IC8qIEV4YW1pbmVkIGJ5 IGNoZWNraW5nIGludGVybmFsIHN0YXRlICovCiAgICAgICAgIExJQlNTSDJf TElTVEVORVIgKmxpc3RlbmVyOyAvKiBSZWFkIHBvbGxzIG9ubHkgLS0gYXJl IGluYm91bmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbm5lY3Rpb25zIHdhaXRpbmcgdG8gYmUgYWNjZXB0ZWQ/ICovCkBA IC01MDEsNiArNTY3LDkgQEAgTElCU1NIMl9BUEkgaW50IGxpYnNzaDJfc2Vz c2lvbl9sYXN0X2Vycm9yKExJQlNTSDJfU0VTU0lPTiAqc2Vzc2lvbiwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy ICoqZXJybXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludCAqZXJybXNnX2xlbiwgaW50IHdhbnRfYnVmKTsKIExJ QlNTSDJfQVBJIGludCBsaWJzc2gyX3Nlc3Npb25fbGFzdF9lcnJubyhMSUJT U0gyX1NFU1NJT04gKnNlc3Npb24pOworTElCU1NIMl9BUEkgaW50IGxpYnNz aDJfc2Vzc2lvbl9zZXRfbGFzdF9lcnJvcihMSUJTU0gyX1NFU1NJT04qIHNl c3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludCBlcnJjb2RlLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBlcnJtc2cp OwogTElCU1NIMl9BUEkgaW50IGxpYnNzaDJfc2Vzc2lvbl9ibG9ja19kaXJl Y3Rpb25zKExJQlNTSDJfU0VTU0lPTiAqc2Vzc2lvbik7CiAKIExJQlNTSDJf QVBJIGludCBsaWJzc2gyX3Nlc3Npb25fZmxhZyhMSUJTU0gyX1NFU1NJT04g KnNlc3Npb24sIGludCBmbGFnLApAQCAtNTIxLDggKzU5MCw5IEBAIExJQlNT SDJfQVBJIGludCBsaWJzc2gyX3VzZXJhdXRoX3Bhc3N3b3JkX2V4KExJQlNT SDJfU0VTU0lPTiAqc2Vzc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExJQlNTSDJfUEFTU1dEX0NIQU5HRVJF UV9GVU5DKCgqcGFzc3dkX2NoYW5nZV9jYikpKTsKIAogI2RlZmluZSBsaWJz c2gyX3VzZXJhdXRoX3Bhc3N3b3JkKHNlc3Npb24sIHVzZXJuYW1lLCBwYXNz d29yZCkgXAotIGxpYnNzaDJfdXNlcmF1dGhfcGFzc3dvcmRfZXgoKHNlc3Np b24pLCAodXNlcm5hbWUpLCBzdHJsZW4odXNlcm5hbWUpLCBcCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAocGFzc3dvcmQpLCBzdHJsZW4ocGFz c3dvcmQpLCBOVUxMKQorIGxpYnNzaDJfdXNlcmF1dGhfcGFzc3dvcmRfZXgo KHNlc3Npb24pLCAodXNlcm5hbWUpLCAgICAgICAgICAgXAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGludClzdHJsZW4odXNl cm5hbWUpLCAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBh c3N3b3JkKSwgKHVuc2lnbmVkIGludClzdHJsZW4ocGFzc3dvcmQpLCBOVUxM KQogCiBMSUJTU0gyX0FQSSBpbnQKIGxpYnNzaDJfdXNlcmF1dGhfcHVibGlj a2V5X2Zyb21maWxlX2V4KExJQlNTSDJfU0VTU0lPTiAqc2Vzc2lvbiwKQEAg LTUzNCw5ICs2MDQsMTAgQEAgbGlic3NoMl91c2VyYXV0aF9wdWJsaWNrZXlf ZnJvbWZpbGVfZXgoTElCU1NIMl9TRVNTSU9OICpzZXNzaW9uLAogCiAjZGVm aW5lIGxpYnNzaDJfdXNlcmF1dGhfcHVibGlja2V5X2Zyb21maWxlKHNlc3Np b24sIHVzZXJuYW1lLCBwdWJsaWNrZXksIFwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdmF0ZWtleSwgcGFzc3Bo cmFzZSkgICAgIFwKLSAgbGlic3NoMl91c2VyYXV0aF9wdWJsaWNrZXlfZnJv bWZpbGVfZXgoKHNlc3Npb24pLCAodXNlcm5hbWUpLCBcCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmxlbih1c2VybmFt ZSksIChwdWJsaWNrZXkpLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChwcml2YXRla2V5KSwgKHBhc3NwaHJhc2UpKQor ICAgIGxpYnNzaDJfdXNlcmF1dGhfcHVibGlja2V5X2Zyb21maWxlX2V4KChz ZXNzaW9uKSwgKHVzZXJuYW1lKSwgICAgICAgXAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBpbnQpc3Ry bGVuKHVzZXJuYW1lKSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChwdWJsaWNrZXkpLCAgICAgICAgICAgICAgICAg XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChwcml2YXRla2V5KSwgKHBhc3NwaHJhc2UpKQogCiBMSUJTU0gyX0FQSSBp bnQKIGxpYnNzaDJfdXNlcmF1dGhfcHVibGlja2V5KExJQlNTSDJfU0VTU0lP TiAqc2Vzc2lvbiwKQEAgLTU2MSwxMCArNjMyLDIzIEBAIGxpYnNzaDJfdXNl cmF1dGhfaG9zdGJhc2VkX2Zyb21maWxlX2V4KExJQlNTSDJfU0VTU0lPTiAq c2Vzc2lvbiwKICNkZWZpbmUgbGlic3NoMl91c2VyYXV0aF9ob3N0YmFzZWRf ZnJvbWZpbGUoc2Vzc2lvbiwgdXNlcm5hbWUsIHB1YmxpY2tleSwgXAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2 YXRla2V5LCBwYXNzcGhyYXNlLCBob3N0bmFtZSkgXAogIGxpYnNzaDJfdXNl cmF1dGhfaG9zdGJhc2VkX2Zyb21maWxlX2V4KChzZXNzaW9uKSwgKHVzZXJu YW1lKSwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cmxlbih1c2VybmFtZSksIChwdWJsaWNrZXkpLCBcCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaXZhdGVrZXkp LCAocGFzc3BocmFzZSksIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoaG9zdG5hbWUpLCBzdHJsZW4oaG9zdG5hbWUpLCBc Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVz ZXJuYW1lKSwgc3RybGVuKHVzZXJuYW1lKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgaW50KXN0cmxlbih1 c2VybmFtZSksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAocHVibGlja2V5KSwgICAgICAgICAgICAgICAgICAgIFwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpdmF0 ZWtleSksIChwYXNzcGhyYXNlKSwgICAgIFwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoaG9zdG5hbWUpLCAgICAgICAgICAg ICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAodW5zaWduZWQgaW50KXN0cmxlbihob3N0bmFtZSksIFwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodXNlcm5h bWUpLCAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgaW50KXN0cmxlbih1 c2VybmFtZSkpCisKK0xJQlNTSDJfQVBJIGludAorbGlic3NoMl91c2VyYXV0 aF9wdWJsaWNrZXlfZnJvbW1lbW9yeShMSUJTU0gyX1NFU1NJT04gKnNlc3Np b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IGNoYXIgKnVzZXJuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzaXplX3QgdXNlcm5hbWVfbGVuLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwdWJs aWNrZXlmaWxlZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2l6ZV90IHB1YmxpY2tleWZpbGVkYXRhX2xlbiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq cHJpdmF0ZWtleWZpbGVkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzaXplX3QgcHJpdmF0ZWtleWZpbGVkYXRhX2xlbiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg Y2hhciAqcGFzc3BocmFzZSk7CiAKIC8qCiAgKiByZXNwb25zZV9jYWxsYmFj ayBpcyBwcm92aWRlZCB3aXRoIGZpbGxlZCBieSBsaWJyYXJ5IHByb21wdHMg YXJyYXksCkBAIC01NzgsMTYgKzY2MiwxNyBAQCBsaWJzc2gyX3VzZXJhdXRo X2tleWJvYXJkX2ludGVyYWN0aXZlX2V4KExJQlNTSDJfU0VTU0lPTiogc2Vz c2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgaW50IHVzZXJuYW1lX2xlbiwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCU1NIMl9VU0VSQVVUSF9L QkRJTlRfUkVTUE9OU0VfRlVOQygoKnJlc3BvbnNlX2NhbGxiYWNrKSkpOwog Ci0jZGVmaW5lIGxpYnNzaDJfdXNlcmF1dGhfa2V5Ym9hcmRfaW50ZXJhY3Rp dmUoc2Vzc2lvbiwgdXNlcm5hbWUsIFwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZV9jYWxsYmFjaykg XAotIGxpYnNzaDJfdXNlcmF1dGhfa2V5Ym9hcmRfaW50ZXJhY3RpdmVfZXgo KHNlc3Npb24pLCAodXNlcm5hbWUpLCBcCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4odXNlcm5hbWUpLCAocmVz cG9uc2VfY2FsbGJhY2spKQorI2RlZmluZSBsaWJzc2gyX3VzZXJhdXRoX2tl eWJvYXJkX2ludGVyYWN0aXZlKHNlc3Npb24sIHVzZXJuYW1lLCAgICAgICAg XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJlc3BvbnNlX2NhbGxiYWNrKSAgICAgICAgXAorICAgIGxpYnNzaDJf dXNlcmF1dGhfa2V5Ym9hcmRfaW50ZXJhY3RpdmVfZXgoKHNlc3Npb24pLCAo dXNlcm5hbWUpLCAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGludClzdHJsZW4odXNlcm5h bWUpLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAocmVzcG9uc2VfY2FsbGJhY2spKQogCiBMSUJTU0gyX0FQSSBp bnQgbGlic3NoMl9wb2xsKExJQlNTSDJfUE9MTEZEICpmZHMsIHVuc2lnbmVk IGludCBuZmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25n IHRpbWVvdXQpOwogCiAvKiBDaGFubmVsIEFQSSAqLwotI2RlZmluZSBMSUJT U0gyX0NIQU5ORUxfV0lORE9XX0RFRkFVTFQgICgyNTYqMTAyNCkKKyNkZWZp bmUgTElCU1NIMl9DSEFOTkVMX1dJTkRPV19ERUZBVUxUICAoMioxMDI0KjEw MjQpCiAjZGVmaW5lIExJQlNTSDJfQ0hBTk5FTF9QQUNLRVRfREVGQVVMVCAg MzI3NjgKICNkZWZpbmUgTElCU1NIMl9DSEFOTkVMX01JTkFESlVTVCAgICAg ICAxMDI0CiAKQEAgLTYzNSw5ICs3MjAsMTAgQEAgTElCU1NIMl9BUEkgaW50 IGxpYnNzaDJfY2hhbm5lbF9zZXRlbnZfZXgoTElCU1NIMl9DSEFOTkVMICpj aGFubmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgY2hhciAqdmFsdWUsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdmFsdWVfbGVu KTsKIAotI2RlZmluZSBsaWJzc2gyX2NoYW5uZWxfc2V0ZW52KGNoYW5uZWws IHZhcm5hbWUsIHZhbHVlKSBcCi0gbGlic3NoMl9jaGFubmVsX3NldGVudl9l eCgoY2hhbm5lbCksICh2YXJuYW1lKSwgc3RybGVuKHZhcm5hbWUpLCAodmFs dWUpLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4odmFs dWUpKQorI2RlZmluZSBsaWJzc2gyX2NoYW5uZWxfc2V0ZW52KGNoYW5uZWws IHZhcm5hbWUsIHZhbHVlKSAgICAgICAgICAgICAgICAgXAorICAgIGxpYnNz aDJfY2hhbm5lbF9zZXRlbnZfZXgoKGNoYW5uZWwpLCAodmFybmFtZSksICAg ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHVuc2lnbmVkIGludClzdHJsZW4odmFybmFtZSksICh2YWx1ZSks ICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVk IGludClzdHJsZW4odmFsdWUpKQogCiBMSUJTU0gyX0FQSSBpbnQgbGlic3No Ml9jaGFubmVsX3JlcXVlc3RfcHR5X2V4KExJQlNTSDJfQ0hBTk5FTCAqY2hh bm5lbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgY2hhciAqdGVybSwKQEAgLTY0NiwxMCArNzMyLDEy IEBAIExJQlNTSDJfQVBJIGludCBsaWJzc2gyX2NoYW5uZWxfcmVxdWVzdF9w dHlfZXgoTElCU1NIMl9DSEFOTkVMICpjaGFubmVsLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp bnQgbW9kZXNfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgd2lkdGgsIGludCBoZWlnaHQsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCB3aWR0aF9weCwgaW50IGhlaWdodF9weCk7Ci0jZGVmaW5lIGxpYnNzaDJf Y2hhbm5lbF9yZXF1ZXN0X3B0eShjaGFubmVsLCB0ZXJtKSBcCi0gbGlic3No Ml9jaGFubmVsX3JlcXVlc3RfcHR5X2V4KChjaGFubmVsKSwgKHRlcm0pLCBz dHJsZW4odGVybSksIE5VTEwsIDAsIFwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTElCU1NIMl9URVJNX1dJRFRILCBMSUJTU0gyX1RFUk1f SEVJR0hULCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJ QlNTSDJfVEVSTV9XSURUSF9QWCwgTElCU1NIMl9URVJNX0hFSUdIVF9QWCkK KyNkZWZpbmUgbGlic3NoMl9jaGFubmVsX3JlcXVlc3RfcHR5KGNoYW5uZWws IHRlcm0pICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBsaWJzc2gyX2No YW5uZWxfcmVxdWVzdF9wdHlfZXgoKGNoYW5uZWwpLCAodGVybSksICAgICAg ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHVuc2lnbmVkIGludClzdHJsZW4odGVybSksICAgICAgICAgIFwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTElCU1NIMl9URVJNX1dJRFRILCBMSUJT U0gyX1RFUk1fSEVJR0hULCBcCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIExJQlNTSDJfVEVSTV9XSURUSF9QWCwgTElCU1NIMl9URVJN X0hFSUdIVF9QWCkKIAogTElCU1NIMl9BUEkgaW50IGxpYnNzaDJfY2hhbm5l bF9yZXF1ZXN0X3B0eV9zaXplX2V4KExJQlNTSDJfQ0hBTk5FTCAqY2hhbm5l bCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnQgd2lkdGgsIGludCBoZWlnaHQsCkBAIC02NzYsMTEg Kzc2NCwxMSBAQCBMSUJTU0gyX0FQSSBpbnQgbGlic3NoMl9jaGFubmVsX3By b2Nlc3Nfc3RhcnR1cChMSUJTU0gyX0NIQU5ORUwgKmNoYW5uZWwsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCkKICNkZWZp bmUgbGlic3NoMl9jaGFubmVsX2V4ZWMoY2hhbm5lbCwgY29tbWFuZCkgXAog ICBsaWJzc2gyX2NoYW5uZWxfcHJvY2Vzc19zdGFydHVwKChjaGFubmVsKSwg ImV4ZWMiLCBzaXplb2YoImV4ZWMiKSAtIDEsIFwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoY29tbWFuZCksIHN0cmxlbihjb21tYW5k KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29tbWFu ZCksICh1bnNpZ25lZCBpbnQpc3RybGVuKGNvbW1hbmQpKQogI2RlZmluZSBs aWJzc2gyX2NoYW5uZWxfc3Vic3lzdGVtKGNoYW5uZWwsIHN1YnN5c3RlbSkg XAogICBsaWJzc2gyX2NoYW5uZWxfcHJvY2Vzc19zdGFydHVwKChjaGFubmVs KSwgInN1YnN5c3RlbSIsICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKCJzdWJzeXN0ZW0iKSAtIDEs IChzdWJzeXN0ZW0pLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RybGVuKHN1YnN5c3RlbSkpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHVuc2lnbmVkIGludClzdHJsZW4oc3Vic3lzdGVt KSkKIAogTElCU1NIMl9BUEkgc3NpemVfdCBsaWJzc2gyX2NoYW5uZWxfcmVh ZF9leChMSUJTU0gyX0NIQU5ORUwgKmNoYW5uZWwsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdHJlYW1faWQs IGNoYXIgKmJ1ZiwKQEAgLTc4MSw5ICs4NjksMTQgQEAgTElCU1NIMl9BUEkg aW50IGxpYnNzaDJfY2hhbm5lbF9jbG9zZShMSUJTU0gyX0NIQU5ORUwgKmNo YW5uZWwpOwogTElCU1NIMl9BUEkgaW50IGxpYnNzaDJfY2hhbm5lbF93YWl0 X2Nsb3NlZChMSUJTU0gyX0NIQU5ORUwgKmNoYW5uZWwpOwogTElCU1NIMl9B UEkgaW50IGxpYnNzaDJfY2hhbm5lbF9mcmVlKExJQlNTSDJfQ0hBTk5FTCAq Y2hhbm5lbCk7CiAKKy8qIGxpYnNzaDJfc2NwX3JlY3YgaXMgREVQUkVDQVRF RCwgZG8gbm90IHVzZSEgKi8KIExJQlNTSDJfQVBJIExJQlNTSDJfQ0hBTk5F TCAqbGlic3NoMl9zY3BfcmVjdihMSUJTU0gyX1NFU1NJT04gKnNlc3Npb24s CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgY2hhciAqcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCAqc2IpOworLyog VXNlIGxpYnNzaDJfc2NwX3JlY3YyIGZvciBsYXJnZSAoPiAyR0IpIGZpbGUg c3VwcG9ydCBvbiB3aW5kb3dzICovCitMSUJTU0gyX0FQSSBMSUJTU0gyX0NI QU5ORUwgKmxpYnNzaDJfc2NwX3JlY3YyKExJQlNTSDJfU0VTU0lPTiAqc2Vz c2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgY2hhciAqcGF0aCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlic3NoMl9zdHJ1Y3Rf c3RhdCAqc2IpOwogTElCU1NIMl9BUEkgTElCU1NIMl9DSEFOTkVMICpsaWJz c2gyX3NjcF9zZW5kX2V4KExJQlNTSDJfU0VTU0lPTiAqc2Vzc2lvbiwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBjaGFyICpwYXRoLCBpbnQgbW9kZSwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6 ZSwgbG9uZyBtdGltZSwKQEAgLTg1NiwxMSArOTQ5LDEyIEBAIGxpYnNzaDJf a25vd25ob3N0X2luaXQoTElCU1NIMl9TRVNTSU9OICpzZXNzaW9uKTsKICNk ZWZpbmUgTElCU1NIMl9LTk9XTkhPU1RfS0VZRU5DX0JBU0U2NCAgICgyPDwx NikKIAogLyogdHlwZSBvZiBrZXkgKDIgYml0cykgKi8KLSNkZWZpbmUgTElC U1NIMl9LTk9XTkhPU1RfS0VZX01BU0sgICAgICgzPDwxOCkKKyNkZWZpbmUg TElCU1NIMl9LTk9XTkhPU1RfS0VZX01BU0sgICAgICg3PDwxOCkKICNkZWZp bmUgTElCU1NIMl9LTk9XTkhPU1RfS0VZX1NISUZUICAgIDE4CiAjZGVmaW5l IExJQlNTSDJfS05PV05IT1NUX0tFWV9SU0ExICAgICAoMTw8MTgpCiAjZGVm aW5lIExJQlNTSDJfS05PV05IT1NUX0tFWV9TU0hSU0EgICAoMjw8MTgpCiAj ZGVmaW5lIExJQlNTSDJfS05PV05IT1NUX0tFWV9TU0hEU1MgICAoMzw8MTgp CisjZGVmaW5lIExJQlNTSDJfS05PV05IT1NUX0tFWV9VTktOT1dOICAoNzw8 MTgpCiAKIExJQlNTSDJfQVBJIGludAogbGlic3NoMl9rbm93bmhvc3RfYWRk KExJQlNTSDJfS05PV05IT1NUUyAqaG9zdHMsCmRpZmYgLS1naXQgYS9wZ2Fk bWluL2luY2x1ZGUvbGlic3NoMi9saWJzc2gyX3ByaXYuaCBiL3BnYWRtaW4v aW5jbHVkZS9saWJzc2gyL2xpYnNzaDJfcHJpdi5oCmluZGV4IDRlYzlmNzMu LjEwMjM5NDMgMTAwNjQ0Ci0tLSBhL3BnYWRtaW4vaW5jbHVkZS9saWJzc2gy L2xpYnNzaDJfcHJpdi5oCisrKyBiL3BnYWRtaW4vaW5jbHVkZS9saWJzc2gy L2xpYnNzaDJfcHJpdi5oCkBAIC0xLDUgKzEsNSBAQAogLyogQ29weXJpZ2h0 IChjKSAyMDA0LTIwMDgsIDIwMTAsIFNhcmEgR29sZW1vbiA8c2FyYWdAbGli c3NoMi5vcmc+Ci0gKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMSBieSBEYW5p ZWwgU3RlbmJlcmcKKyAqIENvcHlyaWdodCAoYykgMjAwOS0yMDE0IGJ5IERh bmllbCBTdGVuYmVyZwogICogQ29weXJpZ2h0IChjKSAyMDEwIFNpbW9uIEpv c2Vmc3NvbgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0xMDgs NiArMTA4LDExIEBACiAjZGVmaW5lIFRSVUUgMQogI2VuZGlmCiAKKyNpZmRl ZiBfTVNDX1ZFUgorLyogImlubGluZSIga2V5d29yZCBpcyB2YWxpZCBvbmx5 IHdpdGggQysrIGVuZ2luZSEgKi8KKyNkZWZpbmUgaW5saW5lIF9faW5saW5l CisjZW5kaWYKKwogLyogUHJvdmlkZSBpb3ZlYyAvIHdyaXRldiBvbiBXSU4z MiBwbGF0Zm9ybS4gKi8KICNpZmRlZiBXSU4zMgogCkBAIC0xMTYsOCArMTIx LDYgQEAgc3RydWN0IGlvdmVjIHsKICAgICB2b2lkICogaW92X2Jhc2U7CiB9 OwogCi0jZGVmaW5lIGlubGluZSBfX2lubGluZQotCiBzdGF0aWMgaW5saW5l IGludCB3cml0ZXYoaW50IHNvY2ssIHN0cnVjdCBpb3ZlYyAqaW92LCBpbnQg bnZlY3MpCiB7CiAgICAgRFdPUkQgcmV0OwpAQCAtMTM0LDE0ICsxMzcsOCBA QCBzdGF0aWMgaW5saW5lIGludCB3cml0ZXYoaW50IHNvY2ssIHN0cnVjdCBp b3ZlYyAqaW92LCBpbnQgbnZlY3MpCiAjaWZkZWYgSEFWRV9XSU5TT0NLMl9I CiAKICNpbmNsdWRlIDx3aW5zb2NrMi5oPgotI2luY2x1ZGUgPG1zd3NvY2su aD4KICNpbmNsdWRlIDx3czJ0Y3BpcC5oPgogCi0jaWZkZWYgX01TQ19WRVIK LS8qICJpbmxpbmUiIGtleXdvcmQgaXMgdmFsaWQgb25seSB3aXRoIEMrKyBl bmdpbmUhICovCi0jZGVmaW5lIGlubGluZSBfX2lubGluZQotI2VuZGlmCi0K ICNlbmRpZgogCiAvKiBSRkM0MjUzIHNlY3Rpb24gNi4xIE1heGltdW0gUGFj a2V0IExlbmd0aCBzYXlzOgpAQCAtMTUyLDkgKzE0OSwxMSBAQCBzdGF0aWMg aW5saW5lIGludCB3cml0ZXYoaW50IHNvY2ssIHN0cnVjdCBpb3ZlYyAqaW92 LCBpbnQgbnZlY3MpCiAgKiBwYWRkaW5nIGxlbmd0aCwgcGF5bG9hZCwgcGFk ZGluZywgYW5kIE1BQy4pLiIKICAqLwogI2RlZmluZSBNQVhfU1NIX1BBQ0tF VF9MRU4gMzUwMDAKKyNkZWZpbmUgTUFYX1NIQV9ESUdFU1RfTEVOIFNIQTI1 Nl9ESUdFU1RfTEVOR1RICiAKICNkZWZpbmUgTElCU1NIMl9BTExPQyhzZXNz aW9uLCBjb3VudCkgXAogICBzZXNzaW9uLT5hbGxvYygoY291bnQpLCAmKHNl c3Npb24pLT5hYnN0cmFjdCkKKyNkZWZpbmUgTElCU1NIMl9DQUxMT0Moc2Vz c2lvbiwgY291bnQpIF9saWJzc2gyX2NhbGxvYyhzZXNzaW9uLCBjb3VudCkK ICNkZWZpbmUgTElCU1NIMl9SRUFMTE9DKHNlc3Npb24sIHB0ciwgY291bnQp IFwKICAoKHB0cikgPyBzZXNzaW9uLT5yZWFsbG9jKChwdHIpLCAoY291bnQp LCAmKHNlc3Npb24pLT5hYnN0cmFjdCkgOiBcCiAgc2Vzc2lvbi0+YWxsb2Mo KGNvdW50KSwgJihzZXNzaW9uKS0+YWJzdHJhY3QpKQpAQCAtMjE3LDcgKzIx Niw4IEBAIHR5cGVkZWYgZW51bQogICAgIGxpYnNzaDJfTkJfc3RhdGVfanVt cDIsCiAgICAgbGlic3NoMl9OQl9zdGF0ZV9qdW1wMywKICAgICBsaWJzc2gy X05CX3N0YXRlX2p1bXA0LAotICAgIGxpYnNzaDJfTkJfc3RhdGVfanVtcDUK KyAgICBsaWJzc2gyX05CX3N0YXRlX2p1bXA1LAorICAgIGxpYnNzaDJfTkJf c3RhdGVfZW5kCiB9IGxpYnNzaDJfbm9uYmxvY2tpbmdfc3RhdGVzOwogCiB0 eXBlZGVmIHN0cnVjdCBwYWNrZXRfcmVxdWlyZV9zdGF0ZV90CkBAIC0yMzEs MTMgKzIzMSwxMyBAQCB0eXBlZGVmIHN0cnVjdCBwYWNrZXRfcmVxdWlyZXZf c3RhdGVfdAogICAgIHRpbWVfdCBzdGFydDsKIH0gcGFja2V0X3JlcXVpcmV2 X3N0YXRlX3Q7CiAKLXR5cGVkZWYgc3RydWN0IGttZGhnR1BzaGExa2V4X3N0 YXRlX3QKK3R5cGVkZWYgc3RydWN0IGttZGhnR1BzaGFrZXhfc3RhdGVfdAog ewogICAgIGxpYnNzaDJfbm9uYmxvY2tpbmdfc3RhdGVzIHN0YXRlOwogICAg IHVuc2lnbmVkIGNoYXIgKmVfcGFja2V0OwogICAgIHVuc2lnbmVkIGNoYXIg KnNfcGFja2V0OwogICAgIHVuc2lnbmVkIGNoYXIgKnRtcDsKLSAgICB1bnNp Z25lZCBjaGFyIGhfc2lnX2NvbXBbU0hBX0RJR0VTVF9MRU5HVEhdOworICAg IHVuc2lnbmVkIGNoYXIgaF9zaWdfY29tcFtNQVhfU0hBX0RJR0VTVF9MRU5d OwogICAgIHVuc2lnbmVkIGNoYXIgYzsKICAgICBzaXplX3QgZV9wYWNrZXRf bGVuOwogICAgIHNpemVfdCBzX3BhY2tldF9sZW47CkBAIC0yNTQsMTYgKzI1 NCwxNiBAQCB0eXBlZGVmIHN0cnVjdCBrbWRoZ0dQc2hhMWtleF9zdGF0ZV90 CiAgICAgc2l6ZV90IGZfdmFsdWVfbGVuOwogICAgIHNpemVfdCBrX3ZhbHVl X2xlbjsKICAgICBzaXplX3QgaF9zaWdfbGVuOwotICAgIGxpYnNzaDJfc2hh MV9jdHggZXhjaGFuZ2VfaGFzaDsKKyAgICB2b2lkICpleGNoYW5nZV9oYXNo OwogICAgIHBhY2tldF9yZXF1aXJlX3N0YXRlX3QgcmVxX3N0YXRlOwogICAg IGxpYnNzaDJfbm9uYmxvY2tpbmdfc3RhdGVzIGJ1cm5fc3RhdGU7Ci19IGtt ZGhnR1BzaGExa2V4X3N0YXRlX3Q7Cit9IGttZGhnR1BzaGFrZXhfc3RhdGVf dDsKIAogdHlwZWRlZiBzdHJ1Y3Qga2V5X2V4Y2hhbmdlX3N0YXRlX2xvd190 CiB7CiAgICAgbGlic3NoMl9ub25ibG9ja2luZ19zdGF0ZXMgc3RhdGU7CiAg ICAgcGFja2V0X3JlcXVpcmVfc3RhdGVfdCByZXFfc3RhdGU7Ci0gICAga21k aGdHUHNoYTFrZXhfc3RhdGVfdCBleGNoYW5nZV9zdGF0ZTsKKyAgICBrbWRo Z0dQc2hha2V4X3N0YXRlX3QgZXhjaGFuZ2Vfc3RhdGU7CiAgICAgX2xpYnNz aDJfYm4gKnA7ICAgICAgICAgICAgIC8qIFNTSDIgZGVmaW5lZCB2YWx1ZSAo cF92YWx1ZSkgKi8KICAgICBfbGlic3NoMl9ibiAqZzsgICAgICAgICAgICAg LyogU1NIMiBkZWZpbmVkIHZhbHVlICgyKSAqLwogICAgIHVuc2lnbmVkIGNo YXIgcmVxdWVzdFsxM107CkBAIC0zNTcsNiArMzU3LDggQEAgc3RydWN0IF9M SUJTU0gyX0NIQU5ORUwKICAgICBsaWJzc2gyX2NoYW5uZWxfZGF0YSBsb2Nh bCwgcmVtb3RlOwogICAgIC8qIEFtb3VudCBvZiBieXRlcyB0byBiZSByZWZ1 bmRlZCB0byByZWNlaXZlIHdpbmRvdyAoYnV0IG5vdCB5ZXQgc2VudCkgKi8K ICAgICB1aW50MzJfdCBhZGp1c3RfcXVldWU7CisgICAgLyogRGF0YSBpbW1l ZGlhdGVseSBhdmFpbGFibGUgZm9yIHJlYWRpbmcgKi8KKyAgICB1aW50MzJf dCByZWFkX2F2YWlsOwogCiAgICAgTElCU1NIMl9TRVNTSU9OICpzZXNzaW9u OwogCkBAIC01NzUsNyArNTc3LDcgQEAgc3RydWN0IF9MSUJTU0gyX1NFU1NJ T04KIAogICAgIC8qIEFncmVlZCBLZXkgRXhjaGFuZ2UgTWV0aG9kICovCiAg ICAgY29uc3QgTElCU1NIMl9LRVhfTUVUSE9EICprZXg7Ci0gICAgaW50IGJ1 cm5fb3B0aW1pc3RpY19rZXhpbml0OjE7CisgICAgdW5zaWduZWQgaW50IGJ1 cm5fb3B0aW1pc3RpY19rZXhpbml0OjE7CiAKICAgICB1bnNpZ25lZCBjaGFy ICpzZXNzaW9uX2lkOwogICAgIHVpbnQzMl90IHNlc3Npb25faWRfbGVuOwpA QCAtNjAwLDYgKzYwMiw3IEBAIHN0cnVjdCBfTElCU1NIMl9TRVNTSU9OCiAg ICAgaW50IHNlcnZlcl9ob3N0a2V5X21kNV92YWxpZDsKICNlbmRpZiAgICAg ICAgICAgICAgICAgICAgICAgICAgLyogISBMSUJTU0gyX01ENSAqLwogICAg IHVuc2lnbmVkIGNoYXIgc2VydmVyX2hvc3RrZXlfc2hhMVtTSEFfRElHRVNU X0xFTkdUSF07CisgICAgaW50IHNlcnZlcl9ob3N0a2V5X3NoYTFfdmFsaWQ7 CiAKICAgICAvKiAocmVtb3RlIGFzIHNvdXJjZSBvZiBkYXRhIC0tIHBhY2tl dF9yZWFkICkgKi8KICAgICBsaWJzc2gyX2VuZHBvaW50X2RhdGEgcmVtb3Rl OwpAQCAtNjI4LDYgKzYzMSw3IEBAIHN0cnVjdCBfTElCU1NIMl9TRVNTSU9O CiAgICAgLyogRXJyb3IgdHJhY2tpbmcgKi8KICAgICBjb25zdCBjaGFyICpl cnJfbXNnOwogICAgIGludCBlcnJfY29kZTsKKyAgICBpbnQgZXJyX2ZsYWdz OwogCiAgICAgLyogc3RydWN0IG1lbWJlcnMgZm9yIHBhY2tldC1sZXZlbCBy ZWFkaW5nICovCiAgICAgc3RydWN0IHRyYW5zcG9ydHBhY2tldCBwYWNrZXQ7 CkBAIC03NzgsNyArNzgyLDcgQEAgc3RydWN0IF9MSUJTU0gyX1NFU1NJT04K ICAgICBpbnQgc2Z0cEluaXRfc2VudDsgLyogbnVtYmVyIG9mIGJ5dGVzIGZy b20gdGhlIGJ1ZmZlciB0aGF0IGhhdmUgYmVlbgogICAgICAgICAgICAgICAg ICAgICAgICAgICBzZW50ICovCiAKLSAgICAvKiBTdGF0ZSB2YXJpYWJsZXMg dXNlZCBpbiBsaWJzc2gyX3NjcF9yZWN2KCkgKi8KKyAgICAvKiBTdGF0ZSB2 YXJpYWJsZXMgdXNlZCBpbiBsaWJzc2gyX3NjcF9yZWN2KCkgLyBsaWJzc2hf c2NwX3JlY3YyKCkgKi8KICAgICBsaWJzc2gyX25vbmJsb2NraW5nX3N0YXRl cyBzY3BSZWN2X3N0YXRlOwogICAgIHVuc2lnbmVkIGNoYXIgKnNjcFJlY3Zf Y29tbWFuZDsKICAgICBzaXplX3Qgc2NwUmVjdl9jb21tYW5kX2xlbjsKQEAg LTc4OSw2ICs3OTMsOSBAQCBzdHJ1Y3QgX0xJQlNTSDJfU0VTU0lPTgogICAg IC8qIHdlIGhhdmUgdGhlIHR5cGUgYW5kIHdlIGNhbiBwYXJzZSBzdWNoIG51 bWJlcnMgKi8KICAgICBsb25nIGxvbmcgc2NwUmVjdl9zaXplOwogI2RlZmlu ZSBzY3BzaXplX3N0cnRvbCBzdHJ0b2xsCisjZWxpZiBkZWZpbmVkKEhBVkVf U1RSVE9JNjQpCisgICAgX19pbnQ2NCBzY3BSZWN2X3NpemU7CisjZGVmaW5l IHNjcHNpemVfc3RydG9sIF9zdHJ0b2k2NAogI2Vsc2UKICAgICBsb25nIHNj cFJlY3Zfc2l6ZTsKICNkZWZpbmUgc2Nwc2l6ZV9zdHJ0b2wgc3RydG9sCkBA IC04NTQsNiArODYxLDkgQEAgc3RydWN0IF9MSUJTU0gyX0hPU1RLRVlfTUVU SE9ECiAgICAgICAgICAgICAgICAgIHNpemVfdCBob3N0a2V5X2RhdGFfbGVu LCB2b2lkICoqYWJzdHJhY3QpOwogICAgIGludCAoKmluaXRQRU0pIChMSUJT U0gyX1NFU1NJT04gKiBzZXNzaW9uLCBjb25zdCBjaGFyICpwcml2a2V5Zmls ZSwKICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY29uc3QgY2hhciAq cGFzc3BocmFzZSwgdm9pZCAqKmFic3RyYWN0KTsKKyAgICBpbnQgKCppbml0 UEVNRnJvbU1lbW9yeSkgKExJQlNTSDJfU0VTU0lPTiAqIHNlc3Npb24sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwcml2 a2V5ZmlsZWRhdGEsIHNpemVfdCBwcml2a2V5ZmlsZWRhdGFfbGVuLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY29uc3QgY2hh ciAqcGFzc3BocmFzZSwgdm9pZCAqKmFic3RyYWN0KTsKICAgICBpbnQgKCpz aWdfdmVyaWZ5KSAoTElCU1NIMl9TRVNTSU9OICogc2Vzc2lvbiwgY29uc3Qg dW5zaWduZWQgY2hhciAqc2lnLAogICAgICAgICAgICAgICAgICAgICAgICBz aXplX3Qgc2lnX2xlbiwgY29uc3QgdW5zaWduZWQgY2hhciAqbSwKICAgICAg ICAgICAgICAgICAgICAgICAgc2l6ZV90IG1fbGVuLCB2b2lkICoqYWJzdHJh Y3QpOwpAQCAtOTIzLDYgKzkzMyw5IEBAIHZvaWQgX2xpYnNzaDJfZGVidWco TElCU1NIMl9TRVNTSU9OICogc2Vzc2lvbiwgaW50IGNvbnRleHQsIGNvbnN0 IGNoYXIgKmZvcm1hdCwKIHN0YXRpYyBpbmxpbmUgdm9pZAogX2xpYnNzaDJf ZGVidWcoTElCU1NIMl9TRVNTSU9OICogc2Vzc2lvbiwgaW50IGNvbnRleHQs IGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQogeworICAgICh2b2lkKXNlc3Np b247CisgICAgKHZvaWQpY29udGV4dDsKKyAgICAodm9pZClmb3JtYXQ7CiB9 CiAjZW5kaWYKICNlbmRpZgpAQCAtOTM4LDYgKzk1MSwxMCBAQCBfbGlic3No Ml9kZWJ1ZyhMSUJTU0gyX1NFU1NJT04gKiBzZXNzaW9uLCBpbnQgY29udGV4 dCwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCiAvKiBTb21ldGhpbmcgdmVy eSBiYWQgaXMgZ29pbmcgb24gKi8KICNkZWZpbmUgTElCU1NIMl9NQUNfSU5W QUxJRCAgICAgICAgICAgICAgICAgICAgIC0xCiAKKy8qIEZsYWdzIGZvciBf bGlic3NoMl9lcnJvcl9mbGFncyAqLworLyogRXJyb3IgbWVzc2FnZSBpcyBh bGxvY2F0ZWQgb24gdGhlIGhlYXAgKi8KKyNkZWZpbmUgTElCU1NIMl9FUlJf RkxBR19EVVAgICAgICAgICAgICAgICAgICAgICAxCisKIC8qIFNTSCBQYWNr ZXQgVHlwZXMgLS0gRGVmaW5lZCBieSBpbnRlcm5ldCBkcmFmdCAqLwogLyog VHJhbnNwb3J0IExheWVyICovCiAjZGVmaW5lIFNTSF9NU0dfRElTQ09OTkVD VCAgICAgICAgICAgICAgICAgICAgICAgICAgMQpAQCAtOTU0LDcgKzk3MSw3 IEBAIF9saWJzc2gyX2RlYnVnKExJQlNTSDJfU0VTU0lPTiAqIHNlc3Npb24s IGludCBjb250ZXh0LCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKICNkZWZp bmUgU1NIX01TR19LRVhESF9JTklUICAgICAgICAgICAgICAgICAgICAgICAg ICAzMAogI2RlZmluZSBTU0hfTVNHX0tFWERIX1JFUExZICAgICAgICAgICAg ICAgICAgICAgICAgIDMxCiAKLS8qIGRpZmZpZS1oZWxsbWFuLWdyb3VwLWV4 Y2hhbmdlLXNoYTEgKi8KKy8qIGRpZmZpZS1oZWxsbWFuLWdyb3VwLWV4Y2hh bmdlLXNoYTEgYW5kIGRpZmZpZS1oZWxsbWFuLWdyb3VwLWV4Y2hhbmdlLXNo YTI1NiAqLwogI2RlZmluZSBTU0hfTVNHX0tFWF9ESF9HRVhfUkVRVUVTVF9P TEQgICAgICAgICAgICAgIDMwCiAjZGVmaW5lIFNTSF9NU0dfS0VYX0RIX0dF WF9SRVFVRVNUICAgICAgICAgICAgICAgICAgMzQKICNkZWZpbmUgU1NIX01T R19LRVhfREhfR0VYX0dST1VQICAgICAgICAgICAgICAgICAgICAzMQpAQCAt MTAyMCw2ICsxMDM3LDExIEBAIGludCBfbGlic3NoMl9wZW1fcGFyc2UoTElC U1NIMl9TRVNTSU9OICogc2Vzc2lvbiwKICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgY2hhciAqaGVhZGVyYmVnaW4sCiAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IGNoYXIgKmhlYWRlcmVuZCwKICAgICAgICAgICAgICAg ICAgICAgICAgRklMRSAqIGZwLCB1bnNpZ25lZCBjaGFyICoqZGF0YSwgdW5z aWduZWQgaW50ICpkYXRhbGVuKTsKK2ludCBfbGlic3NoMl9wZW1fcGFyc2Vf bWVtb3J5KExJQlNTSDJfU0VTU0lPTiAqIHNlc3Npb24sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpoZWFkZXJiZWdpbiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmhl YWRlcmVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGNoYXIgKmZpbGVkYXRhLCBzaXplX3QgZmlsZWRhdGFfbGVuLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqKmRhdGEs IHVuc2lnbmVkIGludCAqZGF0YWxlbik7CiBpbnQgX2xpYnNzaDJfcGVtX2Rl Y29kZV9zZXF1ZW5jZSh1bnNpZ25lZCBjaGFyICoqZGF0YSwgdW5zaWduZWQg aW50ICpkYXRhbGVuKTsKIGludCBfbGlic3NoMl9wZW1fZGVjb2RlX2ludGVn ZXIodW5zaWduZWQgY2hhciAqKmRhdGEsIHVuc2lnbmVkIGludCAqZGF0YWxl biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg Y2hhciAqKmksIHVuc2lnbmVkIGludCAqaWxlbik7CmRpZmYgLS1naXQgYS9w Z2FkbWluL2luY2x1ZGUvbGlic3NoMi9saWJzc2gyX3NmdHAuaCBiL3BnYWRt aW4vaW5jbHVkZS9saWJzc2gyL2xpYnNzaDJfc2Z0cC5oCmluZGV4IDc0ODg0 ZmIuLjY3N2ZhZjIgMTAwNjQ0Ci0tLSBhL3BnYWRtaW4vaW5jbHVkZS9saWJz c2gyL2xpYnNzaDJfc2Z0cC5oCisrKyBiL3BnYWRtaW4vaW5jbHVkZS9saWJz c2gyL2xpYnNzaDJfc2Z0cC5oCkBAIC0yNDcsNiArMjQ3LDcgQEAgTElCU1NI Ml9BUEkgaW50IGxpYnNzaDJfc2Z0cF9yZWFkZGlyX2V4KExJQlNTSDJfU0ZU UF9IQU5ETEUgKmhhbmRsZSwgXAogCiBMSUJTU0gyX0FQSSBzc2l6ZV90IGxp YnNzaDJfc2Z0cF93cml0ZShMSUJTU0gyX1NGVFBfSEFORExFICpoYW5kbGUs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBjaGFyICpidWZmZXIsIHNpemVfdCBjb3VudCk7CitMSUJTU0gyX0FQSSBp bnQgbGlic3NoMl9zZnRwX2ZzeW5jKExJQlNTSDJfU0ZUUF9IQU5ETEUgKmhh bmRsZSk7CiAKIExJQlNTSDJfQVBJIGludCBsaWJzc2gyX3NmdHBfY2xvc2Vf aGFuZGxlKExJQlNTSDJfU0ZUUF9IQU5ETEUgKmhhbmRsZSk7CiAjZGVmaW5l IGxpYnNzaDJfc2Z0cF9jbG9zZShoYW5kbGUpIGxpYnNzaDJfc2Z0cF9jbG9z ZV9oYW5kbGUoaGFuZGxlKQpkaWZmIC0tZ2l0IGEvcGdhZG1pbi9pbmNsdWRl L2xpYnNzaDIvbWlzYy5oIGIvcGdhZG1pbi9pbmNsdWRlL2xpYnNzaDIvbWlz Yy5oCmluZGV4IGUyNTI0OGQuLjU0YWU1NDYgMTAwNjQ0Ci0tLSBhL3BnYWRt aW4vaW5jbHVkZS9saWJzc2gyL21pc2MuaAorKysgYi9wZ2FkbWluL2luY2x1 ZGUvbGlic3NoMi9taXNjLmgKQEAgLTEsNiArMSw2IEBACiAjaWZuZGVmIF9f TElCU1NIMl9NSVNDX0gKICNkZWZpbmUgX19MSUJTU0gyX01JU0NfSAotLyog Q29weXJpZ2h0IChjKSAyMDA5LTIwMTEgYnkgRGFuaWVsIFN0ZW5iZXJnCisv KiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxNCBieSBEYW5pZWwgU3RlbmJlcmcK ICAqCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTQ5LDYgKzQ5 LDcgQEAgc3RydWN0IGxpc3Rfbm9kZSB7CiAgICAgc3RydWN0IGxpc3RfaGVh ZCAqaGVhZDsKIH07CiAKK2ludCBfbGlic3NoMl9lcnJvcl9mbGFncyhMSUJT U0gyX1NFU1NJT04qIHNlc3Npb24sIGludCBlcnJjb2RlLCBjb25zdCBjaGFy KiBlcnJtc2csIGludCBlcnJmbGFncyk7CiBpbnQgX2xpYnNzaDJfZXJyb3Io TElCU1NIMl9TRVNTSU9OKiBzZXNzaW9uLCBpbnQgZXJyY29kZSwgY29uc3Qg Y2hhciogZXJybXNnKTsKIAogdm9pZCBfbGlic3NoMl9saXN0X2luaXQoc3Ry dWN0IGxpc3RfaGVhZCAqaGVhZCk7CkBAIC03Nyw2ICs3OCw3IEBAIGxpYnNz aDJfdWludDY0X3QgX2xpYnNzaDJfbnRvaHU2NChjb25zdCB1bnNpZ25lZCBj aGFyICpidWYpOwogdm9pZCBfbGlic3NoMl9odG9udTMyKHVuc2lnbmVkIGNo YXIgKmJ1ZiwgdWludDMyX3QgdmFsKTsKIHZvaWQgX2xpYnNzaDJfc3RvcmVf dTMyKHVuc2lnbmVkIGNoYXIgKipidWYsIHVpbnQzMl90IHZhbHVlKTsKIHZv aWQgX2xpYnNzaDJfc3RvcmVfc3RyKHVuc2lnbmVkIGNoYXIgKipidWYsIGNv bnN0IGNoYXIgKnN0ciwgc2l6ZV90IGxlbik7Cit2b2lkICpfbGlic3NoMl9j YWxsb2MoTElCU1NIMl9TRVNTSU9OKiBzZXNzaW9uLCBzaXplX3Qgc2l6ZSk7 CiAKICNpZiBkZWZpbmVkKExJQlNTSDJfV0lOMzIpICYmICFkZWZpbmVkKF9f TUlOR1czMl9fKSAmJiAhZGVmaW5lZChfX0NZR1dJTl9fKQogLyogcHJvdmlk ZSBhIHByaXZhdGUgb25lICovCmRpZmYgLS1naXQgYS9wZ2FkbWluL2luY2x1 ZGUvbGlic3NoMi9vcGVuc3NsLmggYi9wZ2FkbWluL2luY2x1ZGUvbGlic3No Mi9vcGVuc3NsLmgKaW5kZXggNmYyMWExYS4uODJkMDlmNiAxMDA2NDQKLS0t IGEvcGdhZG1pbi9pbmNsdWRlL2xpYnNzaDIvb3BlbnNzbC5oCisrKyBiL3Bn YWRtaW4vaW5jbHVkZS9saWJzc2gyL29wZW5zc2wuaApAQCAtMzksNiArMzks MTEgQEAKIAogI2luY2x1ZGUgPG9wZW5zc2wvb3BlbnNzbGNvbmYuaD4KICNp bmNsdWRlIDxvcGVuc3NsL3NoYS5oPgorI2luY2x1ZGUgPG9wZW5zc2wvcnNh Lmg+CisjaW5jbHVkZSA8b3BlbnNzbC9lbmdpbmUuaD4KKyNpZm5kZWYgT1BF TlNTTF9OT19EU0EKKyNpbmNsdWRlIDxvcGVuc3NsL2RzYS5oPgorI2VuZGlm CiAjaWZuZGVmIE9QRU5TU0xfTk9fTUQ1CiAjaW5jbHVkZSA8b3BlbnNzbC9t ZDUuaD4KICNlbmRpZgpAQCAtNzIsNiArNzcsOSBAQAogIyBkZWZpbmUgTElC U1NIMl9ITUFDX1JJUEVNRCAxCiAjZW5kaWYKIAorI2RlZmluZSBMSUJTU0gy X0hNQUNfU0hBMjU2IDEKKyNkZWZpbmUgTElCU1NIMl9ITUFDX1NIQTUxMiAx CisKICNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MDA5MDcwMDBM ICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fQUVTKQogIyBkZWZpbmUgTElCU1NI Ml9BRVNfQ1RSIDEKICMgZGVmaW5lIExJQlNTSDJfQUVTIDEKQEAgLTgwLDcg Kzg4LDcgQEAKICMgZGVmaW5lIExJQlNTSDJfQUVTIDAKICNlbmRpZgogCi0j aWZkZWYgT1BFTlNTTF9OT19CTE9XRklTSAorI2lmZGVmIE9QRU5TU0xfTk9f QkYKICMgZGVmaW5lIExJQlNTSDJfQkxPV0ZJU0ggMAogI2Vsc2UKICMgZGVm aW5lIExJQlNTSDJfQkxPV0ZJU0ggMQpAQCAtMTA3LDMzICsxMTUsNTkgQEAK ICNkZWZpbmUgX2xpYnNzaDJfcmFuZG9tKGJ1ZiwgbGVuKSBSQU5EX2J5dGVz ICgoYnVmKSwgKGxlbikpCiAKICNkZWZpbmUgbGlic3NoMl9zaGExX2N0eCBF VlBfTURfQ1RYCi0jZGVmaW5lIGxpYnNzaDJfc2hhMV9pbml0KGN0eCkgRVZQ X0RpZ2VzdEluaXQoY3R4LCBFVlBfZ2V0X2RpZ2VzdGJ5bmFtZSgic2hhMSIp KQorCisvKiByZXR1cm5zIDAgaW4gY2FzZSBvZiBmYWlsdXJlICovCitpbnQg X2xpYnNzaDJfc2hhMV9pbml0KGxpYnNzaDJfc2hhMV9jdHggKmN0eCk7Cisj ZGVmaW5lIGxpYnNzaDJfc2hhMV9pbml0KHgpIF9saWJzc2gyX3NoYTFfaW5p dCh4KQogI2RlZmluZSBsaWJzc2gyX3NoYTFfdXBkYXRlKGN0eCwgZGF0YSwg bGVuKSBFVlBfRGlnZXN0VXBkYXRlKCYoY3R4KSwgZGF0YSwgbGVuKQogI2Rl ZmluZSBsaWJzc2gyX3NoYTFfZmluYWwoY3R4LCBvdXQpIEVWUF9EaWdlc3RG aW5hbCgmKGN0eCksIG91dCwgTlVMTCkKLXZvaWQgbGlic3NoMl9zaGExKGNv bnN0IHVuc2lnbmVkIGNoYXIgKm1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgbGVu LCB1bnNpZ25lZCBjaGFyICpvdXQpOworaW50IF9saWJzc2gyX3NoYTEoY29u c3QgdW5zaWduZWQgY2hhciAqbWVzc2FnZSwgdW5zaWduZWQgbG9uZyBsZW4s CisgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpvdXQpOworI2Rl ZmluZSBsaWJzc2gyX3NoYTEoeCx5LHopIF9saWJzc2gyX3NoYTEoeCx5LHop CiAKLSNkZWZpbmUgbGlic3NoMl9tZDVfY3R4IEVWUF9NRF9DVFgKKyNkZWZp bmUgbGlic3NoMl9zaGEyNTZfY3R4IEVWUF9NRF9DVFgKIAogLyogcmV0dXJu cyAwIGluIGNhc2Ugb2YgZmFpbHVyZSAqLwotI2RlZmluZSBsaWJzc2gyX21k NV9pbml0KGN0eCkgRVZQX0RpZ2VzdEluaXQoY3R4LCBFVlBfZ2V0X2RpZ2Vz dGJ5bmFtZSgibWQ1IikpCitpbnQgX2xpYnNzaDJfc2hhMjU2X2luaXQobGli c3NoMl9zaGEyNTZfY3R4ICpjdHgpOworI2RlZmluZSBsaWJzc2gyX3NoYTI1 Nl9pbml0KHgpIF9saWJzc2gyX3NoYTI1Nl9pbml0KHgpCisjZGVmaW5lIGxp YnNzaDJfc2hhMjU2X3VwZGF0ZShjdHgsIGRhdGEsIGxlbikgRVZQX0RpZ2Vz dFVwZGF0ZSgmKGN0eCksIGRhdGEsIGxlbikKKyNkZWZpbmUgbGlic3NoMl9z aGEyNTZfZmluYWwoY3R4LCBvdXQpIEVWUF9EaWdlc3RGaW5hbCgmKGN0eCks IG91dCwgTlVMTCkKK2ludCBfbGlic3NoMl9zaGEyNTYoY29uc3QgdW5zaWdu ZWQgY2hhciAqbWVzc2FnZSwgdW5zaWduZWQgbG9uZyBsZW4sCisgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpvdXQpOworI2RlZmluZSBsaWJz c2gyX3NoYTI1Nih4LHkseikgX2xpYnNzaDJfc2hhMjU2KHgseSx6KQogCisj ZGVmaW5lIGxpYnNzaDJfbWQ1X2N0eCBFVlBfTURfQ1RYCisKKy8qIHJldHVy bnMgMCBpbiBjYXNlIG9mIGZhaWx1cmUgKi8KK2ludCBfbGlic3NoMl9tZDVf aW5pdChsaWJzc2gyX21kNV9jdHggKik7CisjZGVmaW5lIGxpYnNzaDJfbWQ1 X2luaXQoeCkgX2xpYnNzaDJfbWQ1X2luaXQoeCkKICNkZWZpbmUgbGlic3No Ml9tZDVfdXBkYXRlKGN0eCwgZGF0YSwgbGVuKSBFVlBfRGlnZXN0VXBkYXRl KCYoY3R4KSwgZGF0YSwgbGVuKQogI2RlZmluZSBsaWJzc2gyX21kNV9maW5h bChjdHgsIG91dCkgRVZQX0RpZ2VzdEZpbmFsKCYoY3R4KSwgb3V0LCBOVUxM KQotdm9pZCBsaWJzc2gyX21kNShjb25zdCB1bnNpZ25lZCBjaGFyICptZXNz YWdlLCB1bnNpZ25lZCBsb25nIGxlbiwgdW5zaWduZWQgY2hhciAqb3V0KTsK IAogI2RlZmluZSBsaWJzc2gyX2htYWNfY3R4IEhNQUNfQ1RYCisjZGVmaW5l IGxpYnNzaDJfaG1hY19jdHhfaW5pdChjdHgpIFwKKyAgSE1BQ19DVFhfaW5p dCgmY3R4KQogI2RlZmluZSBsaWJzc2gyX2htYWNfc2hhMV9pbml0KGN0eCwg a2V5LCBrZXlsZW4pIFwKLSAgSE1BQ19Jbml0KGN0eCwga2V5LCBrZXlsZW4s IEVWUF9zaGExKCkpCisgIEhNQUNfSW5pdF9leChjdHgsIGtleSwga2V5bGVu LCBFVlBfc2hhMSgpLCBOVUxMKQogI2RlZmluZSBsaWJzc2gyX2htYWNfbWQ1 X2luaXQoY3R4LCBrZXksIGtleWxlbikgXAotICBITUFDX0luaXQoY3R4LCBr ZXksIGtleWxlbiwgRVZQX21kNSgpKQorICBITUFDX0luaXRfZXgoY3R4LCBr ZXksIGtleWxlbiwgRVZQX21kNSgpLCBOVUxMKQogI2RlZmluZSBsaWJzc2gy X2htYWNfcmlwZW1kMTYwX2luaXQoY3R4LCBrZXksIGtleWxlbikgXAotICBI TUFDX0luaXQoY3R4LCBrZXksIGtleWxlbiwgRVZQX3JpcGVtZDE2MCgpKQor ICBITUFDX0luaXRfZXgoY3R4LCBrZXksIGtleWxlbiwgRVZQX3JpcGVtZDE2 MCgpLCBOVUxMKQorI2RlZmluZSBsaWJzc2gyX2htYWNfc2hhMjU2X2luaXQo Y3R4LCBrZXksIGtleWxlbikgXAorICBITUFDX0luaXRfZXgoY3R4LCBrZXks IGtleWxlbiwgRVZQX3NoYTI1NigpLCBOVUxMKQorI2RlZmluZSBsaWJzc2gy X2htYWNfc2hhNTEyX2luaXQoY3R4LCBrZXksIGtleWxlbikgXAorICBITUFD X0luaXRfZXgoY3R4LCBrZXksIGtleWxlbiwgRVZQX3NoYTUxMigpLCBOVUxM KQorCiAjZGVmaW5lIGxpYnNzaDJfaG1hY191cGRhdGUoY3R4LCBkYXRhLCBk YXRhbGVuKSBcCiAgIEhNQUNfVXBkYXRlKCYoY3R4KSwgZGF0YSwgZGF0YWxl bikKICNkZWZpbmUgbGlic3NoMl9obWFjX2ZpbmFsKGN0eCwgZGF0YSkgSE1B Q19GaW5hbCgmKGN0eCksIGRhdGEsIE5VTEwpCiAjZGVmaW5lIGxpYnNzaDJf aG1hY19jbGVhbnVwKGN0eCkgSE1BQ19jbGVhbnVwKGN0eCkKIAotI2RlZmlu ZSBsaWJzc2gyX2NyeXB0b19pbml0KCkgT3BlblNTTF9hZGRfYWxsX2FsZ29y aXRobXMoKQorI2RlZmluZSBsaWJzc2gyX2NyeXB0b19pbml0KCkgXAorICBP cGVuU1NMX2FkZF9hbGxfYWxnb3JpdGhtcygpOyBcCisgIEVOR0lORV9sb2Fk X2J1aWx0aW5fZW5naW5lcygpOyBcCisgIEVOR0lORV9yZWdpc3Rlcl9hbGxf Y29tcGxldGUoKQorCiAjZGVmaW5lIGxpYnNzaDJfY3J5cHRvX2V4aXQoKQog CiAjZGVmaW5lIGxpYnNzaDJfcnNhX2N0eCBSU0EKQEAgLTE3Miw2ICsyMDYs NyBAQCB2b2lkIGxpYnNzaDJfbWQ1KGNvbnN0IHVuc2lnbmVkIGNoYXIgKm1l c3NhZ2UsIHVuc2lnbmVkIGxvbmcgbGVuLCB1bnNpZ25lZCBjaGFyCiAjZGVm aW5lIF9saWJzc2gyX2JuX2N0eF9uZXcoKSBCTl9DVFhfbmV3KCkKICNkZWZp bmUgX2xpYnNzaDJfYm5fY3R4X2ZyZWUoYm5jdHgpIEJOX0NUWF9mcmVlKGJu Y3R4KQogI2RlZmluZSBfbGlic3NoMl9ibl9pbml0KCkgQk5fbmV3KCkKKyNk ZWZpbmUgX2xpYnNzaDJfYm5faW5pdF9mcm9tX2JpbigpIF9saWJzc2gyX2Ju X2luaXQoKQogI2RlZmluZSBfbGlic3NoMl9ibl9yYW5kKGJuLCBiaXRzLCB0 b3AsIGJvdHRvbSkgQk5fcmFuZChibiwgYml0cywgdG9wLCBib3R0b20pCiAj ZGVmaW5lIF9saWJzc2gyX2JuX21vZF9leHAociwgYSwgcCwgbSwgY3R4KSBC Tl9tb2RfZXhwKHIsIGEsIHAsIG0sIGN0eCkKICNkZWZpbmUgX2xpYnNzaDJf Ym5fc2V0X3dvcmQoYm4sIHZhbCkgQk5fc2V0X3dvcmQoYm4sIHZhbCkKZGlm ZiAtLWdpdCBhL3BnYWRtaW4vaW5jbHVkZS9saWJzc2gyL3NmdHAuaCBiL3Bn YWRtaW4vaW5jbHVkZS9saWJzc2gyL3NmdHAuaAppbmRleCA1NWJkYjQ2Li5i NTUzYjE2IDEwMDY0NAotLS0gYS9wZ2FkbWluL2luY2x1ZGUvbGlic3NoMi9z ZnRwLmgKKysrIGIvcGdhZG1pbi9pbmNsdWRlL2xpYnNzaDIvc2Z0cC5oCkBA IC00OCw3ICs0OCw3IEBACiAvKiBNQVhfU0ZUUF9SRUFEX1NJWkUgaXMgaG93 IG11Y2ggZGF0YSBpcyBhc2tlZCBmb3IgYXQgbWF4IGluIGVhY2ggRlhQX1JF QUQKICAqIHBhY2tldHMuCiAgKi8KLSNkZWZpbmUgTUFYX1NGVFBfUkVBRF9T SVpFIDIwMDAKKyNkZWZpbmUgTUFYX1NGVFBfUkVBRF9TSVpFIDMwMDAwCiAK IHN0cnVjdCBzZnRwX3BpcGVsaW5lX2NodW5rIHsKICAgICBzdHJ1Y3QgbGlz dF9ub2RlIG5vZGU7CkBAIC0xNzUsNiArMTc1LDExIEBAIHN0cnVjdCBfTElC U1NIMl9TRlRQCiAgICAgLyogU3RhdGUgdmFyaWFibGUgdXNlZCBpbiBzZnRw X3dyaXRlKCkgKi8KICAgICBsaWJzc2gyX25vbmJsb2NraW5nX3N0YXRlcyB3 cml0ZV9zdGF0ZTsKIAorICAgIC8qIFN0YXRlIHZhcmlhYmxlcyB1c2VkIGlu IHNmdHBfZnN5bmMoKSAqLworICAgIGxpYnNzaDJfbm9uYmxvY2tpbmdfc3Rh dGVzIGZzeW5jX3N0YXRlOworICAgIHVuc2lnbmVkIGNoYXIgKmZzeW5jX3Bh Y2tldDsKKyAgICB1aW50MzJfdCBmc3luY19yZXF1ZXN0X2lkOworCiAgICAg LyogU3RhdGUgdmFyaWFibGVzIHVzZWQgaW4gbGlic3NoMl9zZnRwX3JlYWRk aXIoKSAqLwogICAgIGxpYnNzaDJfbm9uYmxvY2tpbmdfc3RhdGVzIHJlYWRk aXJfc3RhdGU7CiAgICAgdW5zaWduZWQgY2hhciAqcmVhZGRpcl9wYWNrZXQ7 CmRpZmYgLS1naXQgYS9wZ2FkbWluL2luY2x1ZGUvdXRpbHMvc3NoVHVubmVs LmggYi9wZ2FkbWluL2luY2x1ZGUvdXRpbHMvc3NoVHVubmVsLmgKaW5kZXgg Yzg1NTdlZS4uZDFlOWFhNCAxMDA2NDQKLS0tIGEvcGdhZG1pbi9pbmNsdWRl L3V0aWxzL3NzaFR1bm5lbC5oCisrKyBiL3BnYWRtaW4vaW5jbHVkZS91dGls cy9zc2hUdW5uZWwuaApAQCAtNDUsNyArNDUsNyBAQCBlbnVtIGVuQXV0aGVu dGljYXRpb25NZXRob2QKIAlBVVRIX1BVQkxJQ0tFWSA9IDQKIH07CiAKLXZv aWQgTG9nU1NIVHVubmVsRXJyb3JzKGNvbnN0IHd4U3RyaW5nICZtc2csIGNv bnN0IGludCAmaWQpOwordm9pZCBMb2dTU0hUdW5uZWxFcnJvcnMoY29uc3Qg d3hTdHJpbmcgJm1zZywgY29uc3QgaW50ICZpZCwgc3RydWN0IF9MSUJTU0gy X1NFU1NJT04gKnNlc3Npb24gPSBOVUxMKTsKIHN0YXRpYyB3eE11dGV4IGdf U1NIVGhyZWFkTXV0ZXg7CiAKIFdYX0RFQ0xBUkVfSEFTSF9TRVQoIGludCwg d3hJbnRlZ2VySGFzaCwgd3hJbnRlZ2VyRXF1YWwsIHN1YlRocmVhZFNEU2V0 KTsKZGlmZiAtLWdpdCBhL3BnYWRtaW4vbGlic3NoMi9hZ2VudC5jIGIvcGdh ZG1pbi9saWJzc2gyL2FnZW50LmMKaW5kZXggMWM2NTE0OS4uYjc5N2NiZCAx MDA2NDQKLS0tIGEvcGdhZG1pbi9saWJzc2gyL2FnZW50LmMKKysrIGIvcGdh ZG1pbi9saWJzc2gyL2FnZW50LmMKQEAgLTEsNiArMSw2IEBACiAvKgogICog Q29weXJpZ2h0IChjKSAyMDA5IGJ5IERhaWtpIFVlbm8KLSAqIENvcHlyaWdo dCAoQykgMjAxMCBieSBEYW5pZWwgU3RlbmJlcmcKKyAqIENvcHlyaWdodCAo QykgMjAxMC0yMDE0IGJ5IERhbmllbCBTdGVuYmVyZwogICogQWxsIHJpZ2h0 cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLApAQCAtMTU5LDYgKzE1OSw4IEBA IGFnZW50X2Nvbm5lY3RfdW5peChMSUJTU0gyX0FHRU5UICphZ2VudCkKIAog ICAgIHNfdW4uc3VuX2ZhbWlseSA9IEFGX1VOSVg7CiAgICAgc3RybmNweSAo c191bi5zdW5fcGF0aCwgcGF0aCwgc2l6ZW9mIHNfdW4uc3VuX3BhdGgpOwor ICAgIHNfdW4uc3VuX3BhdGhbc2l6ZW9mKHNfdW4uc3VuX3BhdGgpLTFdPTA7 IC8qIG1ha2Ugc3VyZSB0aGVyZSdzIGEgdHJhaWxpbmcKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6ZXJvICov CiAgICAgaWYgKGNvbm5lY3QoYWdlbnQtPmZkLCAoc3RydWN0IHNvY2thZGRy KikoJnNfdW4pLCBzaXplb2Ygc191bikgIT0gMCkgewogICAgICAgICBjbG9z ZSAoYWdlbnQtPmZkKTsKICAgICAgICAgcmV0dXJuIF9saWJzc2gyX2Vycm9y KGFnZW50LT5zZXNzaW9uLCBMSUJTU0gyX0VSUk9SX0FHRU5UX1BST1RPQ09M LApAQCAtMzAzLDYgKzMwNSwxMiBAQCBhZ2VudF90cmFuc2FjdF9wYWdlYW50 KExJQlNTSDJfQUdFTlQgKmFnZW50LCBhZ2VudF90cmFuc2FjdGlvbl9jdHhf dCB0cmFuc2N0eCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJm YWlsZWQgc2V0dGluZyB1cCBwYWdlYW50IGZpbGVtYXAiKTsKIAogICAgIHAy ID0gcCA9IE1hcFZpZXdPZkZpbGUoZmlsZW1hcCwgRklMRV9NQVBfV1JJVEUs IDAsIDAsIDApOworICAgIGlmIChwID09IE5VTEwgfHwgcDIgPT0gTlVMTCkg eworICAgICAgICBDbG9zZUhhbmRsZShmaWxlbWFwKTsKKyAgICAgICAgcmV0 dXJuIF9saWJzc2gyX2Vycm9yKGFnZW50LT5zZXNzaW9uLCBMSUJTU0gyX0VS Uk9SX0FHRU5UX1BST1RPQ09MLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgImZhaWxlZCB0byBvcGVuIHBhZ2VhbnQgZmlsZW1hcCBmb3Igd3Jp dGluZyIpOworICAgIH0KKwogICAgIF9saWJzc2gyX3N0b3JlX3N0cigmcDIs IChjb25zdCBjaGFyICopdHJhbnNjdHgtPnJlcXVlc3QsCiAgICAgICAgICAg ICAgICAgICAgICAgIHRyYW5zY3R4LT5yZXF1ZXN0X2xlbik7CiAKQEAgLTUz NywxOCArNTQ1LDE3IEBAIGFnZW50X2xpc3RfaWRlbnRpdGllcyhMSUJTU0gy X0FHRU5UICphZ2VudCkKICAgICAgICAgc3RydWN0IGFnZW50X3B1YmxpY2tl eSAqaWRlbnRpdHk7CiAgICAgICAgIHNzaXplX3QgY29tbWVudF9sZW47CiAK LSAgICAgICAgaWRlbnRpdHkgPSBMSUJTU0gyX0FMTE9DKGFnZW50LT5zZXNz aW9uLCBzaXplb2YgKmlkZW50aXR5KTsKLSAgICAgICAgaWYgKCFpZGVudGl0 eSkgewotICAgICAgICAgICAgcmMgPSBMSUJTU0gyX0VSUk9SX0FMTE9DOwot ICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQotCiAgICAgICAg IC8qIFJlYWQgdGhlIGxlbmd0aCBvZiB0aGUgYmxvYiAqLwogICAgICAgICBs ZW4gLT0gNDsKICAgICAgICAgaWYgKGxlbiA8IDApIHsKICAgICAgICAgICAg IHJjID0gTElCU1NIMl9FUlJPUl9BR0VOVF9QUk9UT0NPTDsKICAgICAgICAg ICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KKyAgICAgICAgaWRlbnRpdHkg PSBMSUJTU0gyX0FMTE9DKGFnZW50LT5zZXNzaW9uLCBzaXplb2YgKmlkZW50 aXR5KTsKKyAgICAgICAgaWYgKCFpZGVudGl0eSkgeworICAgICAgICAgICAg cmMgPSBMSUJTU0gyX0VSUk9SX0FMTE9DOworICAgICAgICAgICAgZ290byBl cnJvcjsKKyAgICAgICAgfQogICAgICAgICBpZGVudGl0eS0+ZXh0ZXJuYWwu YmxvYl9sZW4gPSBfbGlic3NoMl9udG9odTMyKHMpOwogICAgICAgICBzICs9 IDQ7CiAKQEAgLTU1NiwxMiArNTYzLDE1IEBAIGFnZW50X2xpc3RfaWRlbnRp dGllcyhMSUJTU0gyX0FHRU5UICphZ2VudCkKICAgICAgICAgbGVuIC09IGlk ZW50aXR5LT5leHRlcm5hbC5ibG9iX2xlbjsKICAgICAgICAgaWYgKGxlbiA8 IDApIHsKICAgICAgICAgICAgIHJjID0gTElCU1NIMl9FUlJPUl9BR0VOVF9Q Uk9UT0NPTDsKKyAgICAgICAgICAgIExJQlNTSDJfRlJFRShhZ2VudC0+c2Vz c2lvbiwgaWRlbnRpdHkpOwogICAgICAgICAgICAgZ290byBlcnJvcjsKICAg ICAgICAgfQorCiAgICAgICAgIGlkZW50aXR5LT5leHRlcm5hbC5ibG9iID0g TElCU1NIMl9BTExPQyhhZ2VudC0+c2Vzc2lvbiwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aXR5LT5l eHRlcm5hbC5ibG9iX2xlbik7CiAgICAgICAgIGlmICghaWRlbnRpdHktPmV4 dGVybmFsLmJsb2IpIHsKICAgICAgICAgICAgIHJjID0gTElCU1NIMl9FUlJP Ul9BTExPQzsKKyAgICAgICAgICAgIExJQlNTSDJfRlJFRShhZ2VudC0+c2Vz c2lvbiwgaWRlbnRpdHkpOwogICAgICAgICAgICAgZ290byBlcnJvcjsKICAg ICAgICAgfQogICAgICAgICBtZW1jcHkoaWRlbnRpdHktPmV4dGVybmFsLmJs b2IsIHMsIGlkZW50aXR5LT5leHRlcm5hbC5ibG9iX2xlbik7CkBAIC01NzEs NiArNTgxLDggQEAgYWdlbnRfbGlzdF9pZGVudGl0aWVzKExJQlNTSDJfQUdF TlQgKmFnZW50KQogICAgICAgICBsZW4gLT0gNDsKICAgICAgICAgaWYgKGxl biA8IDApIHsKICAgICAgICAgICAgIHJjID0gTElCU1NIMl9FUlJPUl9BR0VO VF9QUk9UT0NPTDsKKyAgICAgICAgICAgIExJQlNTSDJfRlJFRShhZ2VudC0+ c2Vzc2lvbiwgaWRlbnRpdHktPmV4dGVybmFsLmJsb2IpOworICAgICAgICAg ICAgTElCU1NIMl9GUkVFKGFnZW50LT5zZXNzaW9uLCBpZGVudGl0eSk7CiAg ICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CiAgICAgICAgIGNv bW1lbnRfbGVuID0gX2xpYnNzaDJfbnRvaHUzMihzKTsKQEAgLTU4MCwxMiAr NTkyLDE3IEBAIGFnZW50X2xpc3RfaWRlbnRpdGllcyhMSUJTU0gyX0FHRU5U ICphZ2VudCkKICAgICAgICAgbGVuIC09IGNvbW1lbnRfbGVuOwogICAgICAg ICBpZiAobGVuIDwgMCkgewogICAgICAgICAgICAgcmMgPSBMSUJTU0gyX0VS Uk9SX0FHRU5UX1BST1RPQ09MOworICAgICAgICAgICAgTElCU1NIMl9GUkVF KGFnZW50LT5zZXNzaW9uLCBpZGVudGl0eS0+ZXh0ZXJuYWwuYmxvYik7Cisg ICAgICAgICAgICBMSUJTU0gyX0ZSRUUoYWdlbnQtPnNlc3Npb24sIGlkZW50 aXR5KTsKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KKwog ICAgICAgICBpZGVudGl0eS0+ZXh0ZXJuYWwuY29tbWVudCA9IExJQlNTSDJf QUxMT0MoYWdlbnQtPnNlc3Npb24sCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50X2xlbiArIDEp OwogICAgICAgICBpZiAoIWlkZW50aXR5LT5leHRlcm5hbC5jb21tZW50KSB7 CiAgICAgICAgICAgICByYyA9IExJQlNTSDJfRVJST1JfQUxMT0M7CisgICAg ICAgICAgICBMSUJTU0gyX0ZSRUUoYWdlbnQtPnNlc3Npb24sIGlkZW50aXR5 LT5leHRlcm5hbC5ibG9iKTsKKyAgICAgICAgICAgIExJQlNTSDJfRlJFRShh Z2VudC0+c2Vzc2lvbiwgaWRlbnRpdHkpOwogICAgICAgICAgICAgZ290byBl cnJvcjsKICAgICAgICAgfQogICAgICAgICBpZGVudGl0eS0+ZXh0ZXJuYWwu Y29tbWVudFtjb21tZW50X2xlbl0gPSAnXDAnOwpAQCAtNjQ1LDEzICs2NjIs MTMgQEAgbGlic3NoMl9hZ2VudF9pbml0KExJQlNTSDJfU0VTU0lPTiAqc2Vz c2lvbikKIHsKICAgICBMSUJTU0gyX0FHRU5UICphZ2VudDsKIAotICAgIGFn ZW50ID0gTElCU1NIMl9BTExPQyhzZXNzaW9uLCBzaXplb2YgKmFnZW50KTsK KyAgICBhZ2VudCA9IExJQlNTSDJfQ0FMTE9DKHNlc3Npb24sIHNpemVvZiAq YWdlbnQpOwogICAgIGlmICghYWdlbnQpIHsKICAgICAgICAgX2xpYnNzaDJf ZXJyb3Ioc2Vzc2lvbiwgTElCU1NIMl9FUlJPUl9BTExPQywKICAgICAgICAg ICAgICAgICAgICAgICAgIlVuYWJsZSB0byBhbGxvY2F0ZSBzcGFjZSBmb3Ig YWdlbnQgY29ubmVjdGlvbiIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAg ICB9Ci0gICAgbWVtc2V0KGFnZW50LCAwLCBzaXplb2YgKmFnZW50KTsKKyAg ICBhZ2VudC0+ZmQgPSBMSUJTU0gyX0lOVkFMSURfU09DS0VUOwogICAgIGFn ZW50LT5zZXNzaW9uID0gc2Vzc2lvbjsKICAgICBfbGlic3NoMl9saXN0X2lu aXQoJmFnZW50LT5oZWFkKTsKIApAQCAtNjk4LDcgKzcxNSw3IEBAIGxpYnNz aDJfYWdlbnRfbGlzdF9pZGVudGl0aWVzKExJQlNTSDJfQUdFTlQgKmFnZW50 KQogICogbGlic3NoMl9hZ2VudF9nZXRfaWRlbnRpdHkoKQogICoKICAqIFRy YXZlcnNlIHRoZSBpbnRlcm5hbCBsaXN0IG9mIHB1YmxpYyBrZXlzLiBQYXNz IE5VTEwgdG8gJ3ByZXYnIHRvIGdldAotICogdGhlIGZpcnN0IG9uZS4gT3Ig cGFzcyBhIHBvaW5lciB0byB0aGUgcHJldmlvdXNseSByZXR1cm5lZCBvbmUg dG8gZ2V0IHRoZQorICogdGhlIGZpcnN0IG9uZS4gT3IgcGFzcyBhIHBvaW50 ZXIgdG8gdGhlIHByZXZpb3VzbHkgcmV0dXJuZWQgb25lIHRvIGdldCB0aGUK ICAqIG5leHQuCiAgKgogICogUmV0dXJuczoKZGlmZiAtLWdpdCBhL3BnYWRt aW4vbGlic3NoMi9jaGFubmVsLmMgYi9wZ2FkbWluL2xpYnNzaDIvY2hhbm5l bC5jCmluZGV4IDRmNDFlMWYuLjMyZDkxNGQgMTAwNjQ0Ci0tLSBhL3BnYWRt aW4vbGlic3NoMi9jaGFubmVsLmMKKysrIGIvcGdhZG1pbi9saWJzc2gyL2No YW5uZWwuYwpAQCAtMSw2ICsxLDYgQEAKIC8qIENvcHlyaWdodCAoYykgMjAw NC0yMDA3IFNhcmEgR29sZW1vbiA8c2FyYWdAbGlic3NoMi5vcmc+CiAgKiBD b3B5cmlnaHQgKGMpIDIwMDUgTWlraGFpbCBHdXNhcm92IDxkb3R0ZWRtYWdA ZG90dGVkbWFnLm5ldD4KLSAqIENvcHlyaWdodCAoYykgMjAwOC0yMDExIGJ5 IERhbmllbCBTdGVuYmVyZworICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTQg YnkgRGFuaWVsIFN0ZW5iZXJnCiAgKgogICogQWxsIHJpZ2h0cyByZXNlcnZl ZC4KICAqCkBAIC0xNTgsMTQgKzE1OCwxMiBAQCBfbGlic3NoMl9jaGFubmVs X29wZW4oTElCU1NIMl9TRVNTSU9OICogc2Vzc2lvbiwgY29uc3QgY2hhciAq Y2hhbm5lbF90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAiT3Blbmlu ZyBDaGFubmVsIC0gd2luICVkIHBhY2sgJWQiLCB3aW5kb3dfc2l6ZSwKICAg ICAgICAgICAgICAgICAgICAgICAgcGFja2V0X3NpemUpOwogICAgICAgICBz ZXNzaW9uLT5vcGVuX2NoYW5uZWwgPQotICAgICAgICAgICAgTElCU1NIMl9B TExPQyhzZXNzaW9uLCBzaXplb2YoTElCU1NIMl9DSEFOTkVMKSk7CisgICAg ICAgICAgICBMSUJTU0gyX0NBTExPQyhzZXNzaW9uLCBzaXplb2YoTElCU1NI Ml9DSEFOTkVMKSk7CiAgICAgICAgIGlmICghc2Vzc2lvbi0+b3Blbl9jaGFu bmVsKSB7CiAgICAgICAgICAgICBfbGlic3NoMl9lcnJvcihzZXNzaW9uLCBM SUJTU0gyX0VSUk9SX0FMTE9DLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgIlVuYWJsZSB0byBhbGxvY2F0ZSBzcGFjZSBmb3IgY2hhbm5lbCBkYXRh Iik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAg ICAgICBtZW1zZXQoc2Vzc2lvbi0+b3Blbl9jaGFubmVsLCAwLCBzaXplb2Yo TElCU1NIMl9DSEFOTkVMKSk7Ci0KICAgICAgICAgc2Vzc2lvbi0+b3Blbl9j aGFubmVsLT5jaGFubmVsX3R5cGVfbGVuID0gY2hhbm5lbF90eXBlX2xlbjsK ICAgICAgICAgc2Vzc2lvbi0+b3Blbl9jaGFubmVsLT5jaGFubmVsX3R5cGUg PQogICAgICAgICAgICAgTElCU1NIMl9BTExPQyhzZXNzaW9uLCBjaGFubmVs X3R5cGVfbGVuKTsKQEAgLTI2OCw4ICsyNjYsMjggQEAgX2xpYnNzaDJfY2hh bm5lbF9vcGVuKExJQlNTSDJfU0VTU0lPTiAqIHNlc3Npb24sIGNvbnN0IGNo YXIgKmNoYW5uZWxfdHlwZSwKICAgICAgICAgfQogCiAgICAgICAgIGlmIChz ZXNzaW9uLT5vcGVuX2RhdGFbMF0gPT0gU1NIX01TR19DSEFOTkVMX09QRU5f RkFJTFVSRSkgewotICAgICAgICAgICAgX2xpYnNzaDJfZXJyb3Ioc2Vzc2lv biwgTElCU1NIMl9FUlJPUl9DSEFOTkVMX0ZBSUxVUkUsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAiQ2hhbm5lbCBvcGVuIGZhaWx1cmUiKTsKKyAg ICAgICAgICAgIHVuc2lnbmVkIGludCByZWFzb25fY29kZSA9IF9saWJzc2gy X250b2h1MzIoc2Vzc2lvbi0+b3Blbl9kYXRhICsgNSk7CisgICAgICAgICAg ICBzd2l0Y2ggKHJlYXNvbl9jb2RlKSB7CisgICAgICAgICAgICBjYXNlIFNT SF9PUEVOX0FETUlOSVNUUkFUSVZFTFlfUFJPSElCSVRFRDoKKyAgICAgICAg ICAgICAgICBfbGlic3NoMl9lcnJvcihzZXNzaW9uLCBMSUJTU0gyX0VSUk9S X0NIQU5ORUxfRkFJTFVSRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiQ2hhbm5lbCBvcGVuIGZhaWx1cmUgKGFkbWluaW5zdHJhdGl2ZWx5 IHByb2hpYml0ZWQpIik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg ICAgICAgICBjYXNlIFNTSF9PUEVOX0NPTk5FQ1RfRkFJTEVEOgorICAgICAg ICAgICAgICAgIF9saWJzc2gyX2Vycm9yKHNlc3Npb24sIExJQlNTSDJfRVJS T1JfQ0hBTk5FTF9GQUlMVVJFLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJDaGFubmVsIG9wZW4gZmFpbHVyZSAoY29ubmVjdCBmYWlsZWQp Iik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl IFNTSF9PUEVOX1VOS05PV05fQ0hBTk5FTFRZUEU6CisgICAgICAgICAgICAg ICAgX2xpYnNzaDJfZXJyb3Ioc2Vzc2lvbiwgTElCU1NIMl9FUlJPUl9DSEFO TkVMX0ZBSUxVUkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IkNoYW5uZWwgb3BlbiBmYWlsdXJlICh1bmtub3duIGNoYW5uZWwgdHlwZSki KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug U1NIX09QRU5fUkVTT1VSQ0VfU0hPUlRBR0U6CisgICAgICAgICAgICAgICAg X2xpYnNzaDJfZXJyb3Ioc2Vzc2lvbiwgTElCU1NIMl9FUlJPUl9DSEFOTkVM X0ZBSUxVUkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNo YW5uZWwgb3BlbiBmYWlsdXJlIChyZXNvdXJjZSBzaG9ydGFnZSkiKTsKKyAg ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6Cisg ICAgICAgICAgICAgICAgX2xpYnNzaDJfZXJyb3Ioc2Vzc2lvbiwgTElCU1NI Ml9FUlJPUl9DSEFOTkVMX0ZBSUxVUkUsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIkNoYW5uZWwgb3BlbiBmYWlsdXJlIik7CisgICAgICAg ICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQ1MSw3ICs0NjksNyBA QCBjaGFubmVsX2ZvcndhcmRfbGlzdGVuKExJQlNTSDJfU0VTU0lPTiAqIHNl c3Npb24sIGNvbnN0IGNoYXIgKmhvc3QsCiAgICAgICAgICAgICBMSUJTU0gy X0FMTE9DKHNlc3Npb24sIHNlc3Npb24tPmZ3ZExzdG5fcGFja2V0X2xlbik7 CiAgICAgICAgIGlmICghc2Vzc2lvbi0+ZndkTHN0bl9wYWNrZXQpIHsKICAg ICAgICAgICAgIF9saWJzc2gyX2Vycm9yKHNlc3Npb24sIExJQlNTSDJfRVJS T1JfQUxMT0MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5hYmxl IHRvIGFsbG9jYXRlIG1lbWVvcnkgZm9yIHNldGVudiBwYWNrZXQiKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICJVbmFibGUgdG8gYWxsb2NhdGUg bWVtb3J5IGZvciBzZXRlbnYgcGFja2V0Iik7CiAgICAgICAgICAgICByZXR1 cm4gTlVMTDsKICAgICAgICAgfQogCkBAIC01MDksMTIgKzUyNywxMSBAQCBj aGFubmVsX2ZvcndhcmRfbGlzdGVuKExJQlNTSDJfU0VTU0lPTiAqIHNlc3Np b24sIGNvbnN0IGNoYXIgKmhvc3QsCiAgICAgICAgIGlmIChkYXRhWzBdID09 IFNTSF9NU0dfUkVRVUVTVF9TVUNDRVNTKSB7CiAgICAgICAgICAgICBMSUJT U0gyX0xJU1RFTkVSICpsaXN0ZW5lcjsKIAotICAgICAgICAgICAgbGlzdGVu ZXIgPSBMSUJTU0gyX0FMTE9DKHNlc3Npb24sIHNpemVvZihMSUJTU0gyX0xJ U1RFTkVSKSk7CisgICAgICAgICAgICBsaXN0ZW5lciA9IExJQlNTSDJfQ0FM TE9DKHNlc3Npb24sIHNpemVvZihMSUJTU0gyX0xJU1RFTkVSKSk7CiAgICAg ICAgICAgICBpZiAoIWxpc3RlbmVyKQogICAgICAgICAgICAgICAgIF9saWJz c2gyX2Vycm9yKHNlc3Npb24sIExJQlNTSDJfRVJST1JfQUxMT0MsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVuYWJsZSB0byBhbGxvY2F0 ZSBtZW1vcnkgZm9yIGxpc3RlbmVyIHF1ZXVlIik7CiAgICAgICAgICAgICBl bHNlIHsKLSAgICAgICAgICAgICAgICBtZW1zZXQobGlzdGVuZXIsIDAsIHNp emVvZihMSUJTU0gyX0xJU1RFTkVSKSk7CiAgICAgICAgICAgICAgICAgbGlz dGVuZXItPmhvc3QgPQogICAgICAgICAgICAgICAgICAgICBMSUJTU0gyX0FM TE9DKHNlc3Npb24sIHNlc3Npb24tPmZ3ZExzdG5faG9zdF9sZW4gKyAxKTsK ICAgICAgICAgICAgICAgICBpZiAoIWxpc3RlbmVyLT5ob3N0KSB7CkBAIC01 MjUsOCArNTQyLDcgQEAgY2hhbm5lbF9mb3J3YXJkX2xpc3RlbihMSUJTU0gy X1NFU1NJT04gKiBzZXNzaW9uLCBjb25zdCBjaGFyICpob3N0LAogICAgICAg ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAg ICAgICAgICAgICAgbGlzdGVuZXItPnNlc3Npb24gPSBzZXNzaW9uOwotICAg ICAgICAgICAgICAgICAgICBtZW1jcHkobGlzdGVuZXItPmhvc3QsIGhvc3Qg PyBob3N0IDogIjAuMC4wLjAiLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2Vzc2lvbi0+ZndkTHN0bl9ob3N0X2xlbik7CisgICAgICAgICAgICAg ICAgICAgIG1lbWNweShsaXN0ZW5lci0+aG9zdCwgaG9zdCwgc2Vzc2lvbi0+ ZndkTHN0bl9ob3N0X2xlbik7CiAgICAgICAgICAgICAgICAgICAgIGxpc3Rl bmVyLT5ob3N0W3Nlc3Npb24tPmZ3ZExzdG5faG9zdF9sZW5dID0gMDsKICAg ICAgICAgICAgICAgICAgICAgaWYgKGRhdGFfbGVuID49IDUgJiYgIXBvcnQp IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyLT5wb3J0ID0g X2xpYnNzaDJfbnRvaHUzMihkYXRhICsgMSk7CkBAIC02MDYsNiArNjIyLDcg QEAgaW50IF9saWJzc2gyX2NoYW5uZWxfZm9yd2FyZF9jYW5jZWwoTElCU1NI Ml9MSVNURU5FUiAqbGlzdGVuZXIpCiAgICAgc2l6ZV90IHBhY2tldF9sZW4g PQogICAgICAgICBob3N0X2xlbiArIDE0ICsgc2l6ZW9mKCJjYW5jZWwtdGNw aXAtZm9yd2FyZCIpIC0gMTsKICAgICBpbnQgcmM7CisgICAgaW50IHJldGNv ZGUgPSAwOwogCiAgICAgaWYgKGxpc3RlbmVyLT5jaGFuRndkQ25jbF9zdGF0 ZSA9PSBsaWJzc2gyX05CX3N0YXRlX2lkbGUpIHsKICAgICAgICAgX2xpYnNz aDJfZGVidWcoc2Vzc2lvbiwgTElCU1NIMl9UUkFDRV9DT05OLApAQCAtNjE1 LDcgKzYzMiw3IEBAIGludCBfbGlic3NoMl9jaGFubmVsX2ZvcndhcmRfY2Fu Y2VsKExJQlNTSDJfTElTVEVORVIgKmxpc3RlbmVyKQogICAgICAgICBzID0g cGFja2V0ID0gTElCU1NIMl9BTExPQyhzZXNzaW9uLCBwYWNrZXRfbGVuKTsK ICAgICAgICAgaWYgKCFwYWNrZXQpIHsKICAgICAgICAgICAgIF9saWJzc2gy X2Vycm9yKHNlc3Npb24sIExJQlNTSDJfRVJST1JfQUxMT0MsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAiVW5hYmxlIHRvIGFsbG9jYXRlIG1lbWVv cnkgZm9yIHNldGVudiBwYWNrZXQiKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICJVbmFibGUgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBzZXRlbnYg cGFja2V0Iik7CiAgICAgICAgICAgICByZXR1cm4gTElCU1NIMl9FUlJPUl9B TExPQzsKICAgICAgICAgfQogCkBAIC02NDQsOSArNjYxLDExIEBAIGludCBf bGlic3NoMl9jaGFubmVsX2ZvcndhcmRfY2FuY2VsKExJQlNTSDJfTElTVEVO RVIgKmxpc3RlbmVyKQogICAgICAgICAgICAgX2xpYnNzaDJfZXJyb3Ioc2Vz c2lvbiwgTElCU1NIMl9FUlJPUl9TT0NLRVRfU0VORCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJVbmFibGUgdG8gc2VuZCBnbG9iYWwtcmVxdWVz dCBwYWNrZXQgZm9yIGZvcndhcmQgIgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgImxpc3RlbiByZXF1ZXN0Iik7Ci0gICAgICAgICAgICBMSUJTU0gy X0ZSRUUoc2Vzc2lvbiwgcGFja2V0KTsKLSAgICAgICAgICAgIGxpc3RlbmVy LT5jaGFuRndkQ25jbF9zdGF0ZSA9IGxpYnNzaDJfTkJfc3RhdGVfaWRsZTsK LSAgICAgICAgICAgIHJldHVybiBMSUJTU0gyX0VSUk9SX1NPQ0tFVF9TRU5E OworICAgICAgICAgICAgLyogc2V0IHRoZSBzdGF0ZSB0byBzb21ldGhpbmcg d2UgZG9uJ3QgY2hlY2sgZm9yLCBmb3IgdGhlCisgICAgICAgICAgICAgICB1 bmZvcnR1bmF0ZSBzaXR1YXRpb24gd2hlcmUgd2UgZ2V0IGFuIEVBR0FJTiBm dXJ0aGVyIGRvd24KKyAgICAgICAgICAgICAgIHdoZW4gdHJ5aW5nIHRvIGJh aWwgb3V0IGR1ZSB0byBlcnJvcnMhICovCisgICAgICAgICAgICBsaXN0ZW5l ci0+Y2hhbkZ3ZENuY2xfc3RhdGUgPSBsaWJzc2gyX05CX3N0YXRlX3NlbnQ7 CisgICAgICAgICAgICByZXRjb2RlID0gTElCU1NIMl9FUlJPUl9TT0NLRVRf U0VORDsKICAgICAgICAgfQogICAgICAgICBMSUJTU0gyX0ZSRUUoc2Vzc2lv biwgcGFja2V0KTsKIApAQCAtNjcwLDkgKzY4OSw3IEBAIGludCBfbGlic3No Ml9jaGFubmVsX2ZvcndhcmRfY2FuY2VsKExJQlNTSDJfTElTVEVORVIgKmxp c3RlbmVyKQogCiAgICAgTElCU1NIMl9GUkVFKHNlc3Npb24sIGxpc3RlbmVy KTsKIAotICAgIGxpc3RlbmVyLT5jaGFuRndkQ25jbF9zdGF0ZSA9IGxpYnNz aDJfTkJfc3RhdGVfaWRsZTsKLQotICAgIHJldHVybiAwOworICAgIHJldHVy biByZXRjb2RlOwogfQogCiAvKgpAQCAtNzg3LDcgKzgwNCw3IEBAIHN0YXRp YyBpbnQgY2hhbm5lbF9zZXRlbnYoTElCU1NIMl9DSEFOTkVMICpjaGFubmVs LAogICAgICAgICAgICAgTElCU1NIMl9BTExPQyhzZXNzaW9uLCBjaGFubmVs LT5zZXRlbnZfcGFja2V0X2xlbik7CiAgICAgICAgIGlmICghY2hhbm5lbC0+ c2V0ZW52X3BhY2tldCkgewogICAgICAgICAgICAgcmV0dXJuIF9saWJzc2gy X2Vycm9yKHNlc3Npb24sIExJQlNTSDJfRVJST1JfQUxMT0MsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVuYWJsZSB0byBhbGxvY2F0 ZSBtZW1lb3J5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiVW5hYmxlIHRvIGFsbG9jYXRlIG1lbW9yeSAiCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgImZvciBzZXRlbnYgcGFja2V0Iik7CiAg ICAgICAgIH0KIApAQCAtMTIzNSw2ICsxMjUyLDExIEBAIF9saWJzc2gyX2No YW5uZWxfcHJvY2Vzc19zdGFydHVwKExJQlNTSDJfQ0hBTk5FTCAqY2hhbm5l bCwKICAgICAgICAgeyBTU0hfTVNHX0NIQU5ORUxfU1VDQ0VTUywgU1NIX01T R19DSEFOTkVMX0ZBSUxVUkUsIDAgfTsKICAgICBpbnQgcmM7CiAKKyAgICBp ZiAoY2hhbm5lbC0+cHJvY2Vzc19zdGF0ZSA9PSBsaWJzc2gyX05CX3N0YXRl X2VuZCkgeworICAgICAgICByZXR1cm4gX2xpYnNzaDJfZXJyb3Ioc2Vzc2lv biwgTElCU1NIMl9FUlJPUl9CQURfVVNFLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIkNoYW5uZWwgY2FuIG5vdCBiZSByZXVzZWQiKTsKKyAg ICB9CisKICAgICBpZiAoY2hhbm5lbC0+cHJvY2Vzc19zdGF0ZSA9PSBsaWJz c2gyX05CX3N0YXRlX2lkbGUpIHsKICAgICAgICAgLyogMTAgPSBwYWNrZXRf dHlwZSgxKSArIGNoYW5uZWwoNCkgKyByZXF1ZXN0X2xlbig0KSArIHdhbnRf cmVwbHkoMSkgKi8KICAgICAgICAgY2hhbm5lbC0+cHJvY2Vzc19wYWNrZXRf bGVuID0gcmVxdWVzdF9sZW4gKyAxMDsKQEAgLTEyODEsNyArMTMwMyw3IEBA IF9saWJzc2gyX2NoYW5uZWxfcHJvY2Vzc19zdGFydHVwKExJQlNTSDJfQ0hB Tk5FTCAqY2hhbm5lbCwKICAgICAgICAgZWxzZSBpZiAocmMpIHsKICAgICAg ICAgICAgIExJQlNTSDJfRlJFRShzZXNzaW9uLCBjaGFubmVsLT5wcm9jZXNz X3BhY2tldCk7CiAgICAgICAgICAgICBjaGFubmVsLT5wcm9jZXNzX3BhY2tl dCA9IE5VTEw7Ci0gICAgICAgICAgICBjaGFubmVsLT5wcm9jZXNzX3N0YXRl ID0gbGlic3NoMl9OQl9zdGF0ZV9pZGxlOworICAgICAgICAgICAgY2hhbm5l bC0+cHJvY2Vzc19zdGF0ZSA9IGxpYnNzaDJfTkJfc3RhdGVfZW5kOwogICAg ICAgICAgICAgcmV0dXJuIF9saWJzc2gyX2Vycm9yKHNlc3Npb24sIHJjLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmFibGUgdG8g c2VuZCBjaGFubmVsIHJlcXVlc3QiKTsKICAgICAgICAgfQpAQCAtMTMwMywx NCArMTMyNSwxNCBAQCBfbGlic3NoMl9jaGFubmVsX3Byb2Nlc3Nfc3RhcnR1 cChMSUJTU0gyX0NIQU5ORUwgKmNoYW5uZWwsCiAgICAgICAgIGlmIChyYyA9 PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikgewogICAgICAgICAgICAgcmV0dXJu IHJjOwogICAgICAgICB9IGVsc2UgaWYgKHJjKSB7Ci0gICAgICAgICAgICBj aGFubmVsLT5wcm9jZXNzX3N0YXRlID0gbGlic3NoMl9OQl9zdGF0ZV9pZGxl OworICAgICAgICAgICAgY2hhbm5lbC0+cHJvY2Vzc19zdGF0ZSA9IGxpYnNz aDJfTkJfc3RhdGVfZW5kOwogICAgICAgICAgICAgcmV0dXJuIF9saWJzc2gy X2Vycm9yKHNlc3Npb24sIHJjLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJGYWlsZWQgd2FpdGluZyBmb3IgY2hhbm5lbCBzdWNjZXNz Iik7CiAgICAgICAgIH0KIAogICAgICAgICBjb2RlID0gZGF0YVswXTsKICAg ICAgICAgTElCU1NIMl9GUkVFKHNlc3Npb24sIGRhdGEpOwotICAgICAgICBj aGFubmVsLT5wcm9jZXNzX3N0YXRlID0gbGlic3NoMl9OQl9zdGF0ZV9pZGxl OworICAgICAgICBjaGFubmVsLT5wcm9jZXNzX3N0YXRlID0gbGlic3NoMl9O Ql9zdGF0ZV9lbmQ7CiAKICAgICAgICAgaWYgKGNvZGUgPT0gU1NIX01TR19D SEFOTkVMX1NVQ0NFU1MpCiAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTE0 MTMsNiArMTQzNSw5IEBAIF9saWJzc2gyX2NoYW5uZWxfZmx1c2goTElCU1NI Ml9DSEFOTkVMICpjaGFubmVsLCBpbnQgc3RyZWFtaWQpCiAgICAgICAgIGNo YW5uZWwtPmZsdXNoX3N0YXRlID0gbGlic3NoMl9OQl9zdGF0ZV9jcmVhdGVk OwogICAgIH0KIAorICAgIGNoYW5uZWwtPnJlYWRfYXZhaWwgLT0gY2hhbm5l bC0+Zmx1c2hfZmx1c2hfYnl0ZXM7CisgICAgY2hhbm5lbC0+cmVtb3RlLndp bmRvd19zaXplIC09IGNoYW5uZWwtPmZsdXNoX2ZsdXNoX2J5dGVzOworCiAg ICAgaWYgKGNoYW5uZWwtPmZsdXNoX3JlZnVuZF9ieXRlcykgewogICAgICAg ICBpbnQgcmM7CiAKQEAgLTE1NDMsNiArMTU2OCw5IEBAIF9saWJzc2gyX2No YW5uZWxfcmVjZWl2ZV93aW5kb3dfYWRqdXN0KExJQlNTSDJfQ0hBTk5FTCAq IGNoYW5uZWwsCiB7CiAgICAgaW50IHJjOwogCisgICAgaWYoc3RvcmUpCisg ICAgICAgICpzdG9yZSA9IGNoYW5uZWwtPnJlbW90ZS53aW5kb3dfc2l6ZTsK KwogICAgIGlmIChjaGFubmVsLT5hZGp1c3Rfc3RhdGUgPT0gbGlic3NoMl9O Ql9zdGF0ZV9pZGxlKSB7CiAgICAgICAgIGlmICghZm9yY2UKICAgICAgICAg ICAgICYmIChhZGp1c3RtZW50ICsgY2hhbm5lbC0+YWRqdXN0X3F1ZXVlIDwK QEAgLTE1NTIsMTQgKzE1ODAsMTAgQEAgX2xpYnNzaDJfY2hhbm5lbF9yZWNl aXZlX3dpbmRvd19hZGp1c3QoTElCU1NIMl9DSEFOTkVMICogY2hhbm5lbCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3IgY2hhbm5lbCAlbHUv JWx1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkanVzdG1lbnQs IGNoYW5uZWwtPmxvY2FsLmlkLCBjaGFubmVsLT5yZW1vdGUuaWQpOwogICAg ICAgICAgICAgY2hhbm5lbC0+YWRqdXN0X3F1ZXVlICs9IGFkanVzdG1lbnQ7 Ci0gICAgICAgICAgICBpZihzdG9yZSkKLSAgICAgICAgICAgICAgICAqc3Rv cmUgPSBjaGFubmVsLT5yZW1vdGUud2luZG93X3NpemU7CiAgICAgICAgICAg ICByZXR1cm4gMDsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghYWRqdXN0 bWVudCAmJiAhY2hhbm5lbC0+YWRqdXN0X3F1ZXVlKSB7Ci0gICAgICAgICAg ICBpZihzdG9yZSkKLSAgICAgICAgICAgICAgICAqc3RvcmUgPSBjaGFubmVs LT5yZW1vdGUud2luZG93X3NpemU7CiAgICAgICAgICAgICByZXR1cm4gMDsK ICAgICAgICAgfQogCkBAIC0xNTk3LDggKzE2MjEsNiBAQCBfbGlic3NoMl9j aGFubmVsX3JlY2VpdmVfd2luZG93X2FkanVzdChMSUJTU0gyX0NIQU5ORUwg KiBjaGFubmVsLAogCiAgICAgY2hhbm5lbC0+YWRqdXN0X3N0YXRlID0gbGli c3NoMl9OQl9zdGF0ZV9pZGxlOwogCi0gICAgaWYoc3RvcmUpCi0gICAgICAg ICpzdG9yZSA9IGNoYW5uZWwtPnJlbW90ZS53aW5kb3dfc2l6ZTsKICAgICBy ZXR1cm4gMDsKIH0KIApAQCAtMTYyNCw3ICsxNjQ2LDcgQEAgbGlic3NoMl9j aGFubmVsX3JlY2VpdmVfd2luZG93X2FkanVzdChMSUJTU0gyX0NIQU5ORUwg KmNoYW5uZWwsCiAgICAgaW50IHJjOwogCiAgICAgaWYoIWNoYW5uZWwpCi0g ICAgICAgIHJldHVybiBMSUJTU0gyX0VSUk9SX0JBRF9VU0U7CisgICAgICAg IHJldHVybiAodW5zaWduZWQgbG9uZylMSUJTU0gyX0VSUk9SX0JBRF9VU0U7 CiAKICAgICBCTE9DS19BREpVU1QocmMsIGNoYW5uZWwtPnNlc3Npb24sCiAg ICAgICAgICAgICAgICAgIF9saWJzc2gyX2NoYW5uZWxfcmVjZWl2ZV93aW5k b3dfYWRqdXN0KGNoYW5uZWwsIGFkaiwKQEAgLTE2NzEsNyArMTY5Myw3IEBA IF9saWJzc2gyX2NoYW5uZWxfZXh0ZW5kZWRfZGF0YShMSUJTU0gyX0NIQU5O RUwgKmNoYW5uZWwsIGludCBpZ25vcmVfbW9kZSkKICAgICAgICAgICAgICAg ICAgICAgICAgIlNldHRpbmcgY2hhbm5lbCAlbHUvJWx1IGhhbmRsZV9leHRl bmRlZF9kYXRhIgogICAgICAgICAgICAgICAgICAgICAgICAiIG1vZGUgdG8g JWQiLAogICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVsLT5sb2NhbC5p ZCwgY2hhbm5lbC0+cmVtb3RlLmlkLCBpZ25vcmVfbW9kZSk7Ci0gICAgICAg IGNoYW5uZWwtPnJlbW90ZS5leHRlbmRlZF9kYXRhX2lnbm9yZV9tb2RlID0g aWdub3JlX21vZGU7CisgICAgICAgIGNoYW5uZWwtPnJlbW90ZS5leHRlbmRl ZF9kYXRhX2lnbm9yZV9tb2RlID0gKGNoYXIpaWdub3JlX21vZGU7CiAKICAg ICAgICAgY2hhbm5lbC0+ZXh0RGF0YTJfc3RhdGUgPSBsaWJzc2gyX05CX3N0 YXRlX2NyZWF0ZWQ7CiAgICAgfQpAQCAtMTc1MCwyMiArMTc3MiwzNiBAQCBz c2l6ZV90IF9saWJzc2gyX2NoYW5uZWxfcmVhZChMSUJTU0gyX0NIQU5ORUwg KmNoYW5uZWwsIGludCBzdHJlYW1faWQsCiAgICAgTElCU1NIMl9QQUNLRVQg KnJlYWRfcGFja2V0OwogICAgIExJQlNTSDJfUEFDS0VUICpyZWFkX25leHQ7 CiAKLSAgICBpZiAoY2hhbm5lbC0+cmVhZF9zdGF0ZSA9PSBsaWJzc2gyX05C X3N0YXRlX2lkbGUpIHsKLSAgICAgICAgX2xpYnNzaDJfZGVidWcoc2Vzc2lv biwgTElCU1NIMl9UUkFDRV9DT05OLAotICAgICAgICAgICAgICAgICAgICAg ICAiY2hhbm5lbF9yZWFkKCkgd2FudHMgJWQgYnl0ZXMgZnJvbSBjaGFubmVs ICVsdS8lbHUgIgotICAgICAgICAgICAgICAgICAgICAgICAic3RyZWFtICMl ZCIsCi0gICAgICAgICAgICAgICAgICAgICAgIChpbnQpIGJ1ZmxlbiwgY2hh bm5lbC0+bG9jYWwuaWQsIGNoYW5uZWwtPnJlbW90ZS5pZCwKLSAgICAgICAg ICAgICAgICAgICAgICAgc3RyZWFtX2lkKTsKLSAgICAgICAgY2hhbm5lbC0+ cmVhZF9zdGF0ZSA9IGxpYnNzaDJfTkJfc3RhdGVfY3JlYXRlZDsKLSAgICB9 CisgICAgX2xpYnNzaDJfZGVidWcoc2Vzc2lvbiwgTElCU1NIMl9UUkFDRV9D T05OLAorICAgICAgICAgICAgICAgICAgICJjaGFubmVsX3JlYWQoKSB3YW50 cyAlZCBieXRlcyBmcm9tIGNoYW5uZWwgJWx1LyVsdSAiCisgICAgICAgICAg ICAgICAgICAgInN0cmVhbSAjJWQiLAorICAgICAgICAgICAgICAgICAgIChp bnQpIGJ1ZmxlbiwgY2hhbm5lbC0+bG9jYWwuaWQsIGNoYW5uZWwtPnJlbW90 ZS5pZCwKKyAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQpOworCisgICAg LyogZXhwYW5kIHRoZSByZWNlaXZpbmcgd2luZG93IGZpcnN0IGlmIGl0IGhh cyBiZWNvbWUgdG9vIG5hcnJvdyAqLworICAgIGlmKCAoY2hhbm5lbC0+cmVh ZF9zdGF0ZSA9PSBsaWJzc2gyX05CX3N0YXRlX2p1bXAxKSB8fAorICAgICAg ICAoY2hhbm5lbC0+cmVtb3RlLndpbmRvd19zaXplIDwgY2hhbm5lbC0+cmVt b3RlLndpbmRvd19zaXplX2luaXRpYWwgLyA0ICogMyArIGJ1ZmxlbikgKSB7 CisKKyAgICAgICAgdWludDMyX3QgYWRqdXN0bWVudCA9IGNoYW5uZWwtPnJl bW90ZS53aW5kb3dfc2l6ZV9pbml0aWFsICsgYnVmbGVuIC0gY2hhbm5lbC0+ cmVtb3RlLndpbmRvd19zaXplOworICAgICAgICBpZiAoYWRqdXN0bWVudCA8 IExJQlNTSDJfQ0hBTk5FTF9NSU5BREpVU1QpCisgICAgICAgICAgICBhZGp1 c3RtZW50ID0gTElCU1NIMl9DSEFOTkVMX01JTkFESlVTVDsKKworICAgICAg ICAvKiB0aGUgYWN0dWFsIHdpbmRvdyBhZGp1c3RpbmcgbWF5IG5vdCBmaW5p c2ggc28gd2UgbmVlZCB0byBkZWFsIHdpdGgKKyAgICAgICAgICAgdGhpcyBz cGVjaWFsIHN0YXRlIGhlcmUgKi8KKyAgICAgICAgY2hhbm5lbC0+cmVhZF9z dGF0ZSA9IGxpYnNzaDJfTkJfc3RhdGVfanVtcDE7CisgICAgICAgIHJjID0g X2xpYnNzaDJfY2hhbm5lbF9yZWNlaXZlX3dpbmRvd19hZGp1c3QoY2hhbm5l bCwgYWRqdXN0bWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAwLCBOVUxMKTsKKyAgICAgICAgaWYg KHJjKQorICAgICAgICAgICAgcmV0dXJuIHJjOwogCi0gICAgcmMgPSAxOyAv KiBzZXQgdG8gPjAgdG8gbGV0IHRoZSB3aGlsZSBsb29wIHN0YXJ0ICovCisg ICAgICAgIGNoYW5uZWwtPnJlYWRfc3RhdGUgPSBsaWJzc2gyX05CX3N0YXRl X2lkbGU7CisgICAgfQogCi0gICAgLyogUHJvY2VzcyBhbGwgcGVuZGluZyBp bmNvbWluZyBwYWNrZXRzIGluIGFsbCBzdGF0ZXMgaW4gb3JkZXIgdG8gImV2 ZW4KLSAgICAgICBvdXQiIHRoZSBuZXR3b3JrIHJlYWRpbmdzLiBUZXN0cyBw cm92ZSB0aGF0IHRoaXMgd2F5IHByb2R1Y2VzIGZhc3RlcgotICAgICAgIHRy YW5zZmVycy4gKi8KLSAgICB3aGlsZSAocmMgPiAwKQorICAgIC8qIFByb2Nl c3MgYWxsIHBlbmRpbmcgaW5jb21pbmcgcGFja2V0cy4gVGVzdHMgcHJvdmUg dGhhdCB0aGlzIHdheQorICAgICAgIHByb2R1Y2VzIGZhc3RlciB0cmFuc2Zl cnMuICovCisgICAgZG8gewogICAgICAgICByYyA9IF9saWJzc2gyX3RyYW5z cG9ydF9yZWFkKHNlc3Npb24pOworICAgIH0gd2hpbGUgKHJjID4gMCk7CiAK ICAgICBpZiAoKHJjIDwgMCkgJiYgKHJjICE9IExJQlNTSDJfRVJST1JfRUFH QUlOKSkKICAgICAgICAgcmV0dXJuIF9saWJzc2gyX2Vycm9yKHNlc3Npb24s IHJjLCAidHJhbnNwb3J0IHJlYWQiKTsKQEAgLTE4NDcsOCArMTg4Myw2IEBA IHNzaXplX3QgX2xpYnNzaDJfY2hhbm5lbF9yZWFkKExJQlNTSDJfQ0hBTk5F TCAqY2hhbm5lbCwgaW50IHN0cmVhbV9pZCwKICAgICB9CiAKICAgICBpZiAo IWJ5dGVzX3JlYWQpIHsKLSAgICAgICAgY2hhbm5lbC0+cmVhZF9zdGF0ZSA9 IGxpYnNzaDJfTkJfc3RhdGVfaWRsZTsKLQogICAgICAgICAvKiBJZiB0aGUg Y2hhbm5lbCBpcyBhbHJlYWR5IGF0IEVPRiBvciBldmVuIGNsb3NlZCwgd2Ug bmVlZCB0byBzaWduYWwKICAgICAgICAgICAgdGhhdCBiYWNrLiBXZSBtYXkg aGF2ZSBnb3R0ZW4gdGhhdCBpbmZvIHdoaWxlIGRyYWluaW5nIHRoZSBpbmNv bWluZwogICAgICAgICAgICB0cmFuc3BvcnQgbGF5ZXIgdW50aWwgRUFHQUlO IHNvIHdlIG11c3Qgbm90IGJlIGZvb2xlZCBieSB0aGF0CkBAIC0xODYxLDEx ICsxODk1LDkgQEAgc3NpemVfdCBfbGlic3NoMl9jaGFubmVsX3JlYWQoTElC U1NIMl9DSEFOTkVMICpjaGFubmVsLCBpbnQgc3RyZWFtX2lkLAogICAgICAg ICAvKiBpZiB0aGUgdHJhbnNwb3J0IGxheWVyIHNhaWQgRUFHQUlOIHRoZW4g d2Ugc2F5IHNvIGFzIHdlbGwgKi8KICAgICAgICAgcmV0dXJuIF9saWJzc2gy X2Vycm9yKHNlc3Npb24sIHJjLCAid291bGQgYmxvY2siKTsKICAgICB9Ci0g ICAgZWxzZQotICAgICAgICAvKiBtYWtlIHN1cmUgd2UgcmVtYWluIGluIHRo ZSBjcmVhdGVkIHN0YXRlIHRvIGZvY3VzIG9uIGVtcHR5aW5nIHRoZQotICAg ICAgICAgICBkYXRhIHdlIGFscmVhZHkgaGF2ZSBpbiB0aGUgcGFja2V0IGJy aWdhZGUgYmVmb3JlIHdlIHRyeSB0byByZWFkCi0gICAgICAgICAgIG1vcmUg b2ZmIHRoZSBuZXR3b3JrIGFnYWluICovCi0gICAgICAgIGNoYW5uZWwtPnJl YWRfc3RhdGUgPSBsaWJzc2gyX05CX3N0YXRlX2NyZWF0ZWQ7CisKKyAgICBj aGFubmVsLT5yZWFkX2F2YWlsIC09IGJ5dGVzX3JlYWQ7CisgICAgY2hhbm5l bC0+cmVtb3RlLndpbmRvd19zaXplIC09IGJ5dGVzX3JlYWQ7CiAKICAgICBy ZXR1cm4gYnl0ZXNfcmVhZDsKIH0KQEAgLTIwMDksMTIgKzIwNDEsMjIgQEAg X2xpYnNzaDJfY2hhbm5lbF93cml0ZShMSUJTU0gyX0NIQU5ORUwgKmNoYW5u ZWwsIGludCBzdHJlYW1faWQsCiAgICAgICAgICAgICByYyA9IF9saWJzc2gy X3RyYW5zcG9ydF9yZWFkKHNlc3Npb24pOwogICAgICAgICB3aGlsZSAocmMg PiAwKTsKIAotICAgICAgICBpZigocmMgPCAwKSAmJiAocmMgIT0gTElCU1NI Ml9FUlJPUl9FQUdBSU4pKQotICAgICAgICAgICAgcmV0dXJuIHJjOworICAg ICAgICBpZigocmMgPCAwKSAmJiAocmMgIT0gTElCU1NIMl9FUlJPUl9FQUdB SU4pKSB7CisgICAgICAgICAgICByZXR1cm4gX2xpYnNzaDJfZXJyb3IoY2hh bm5lbC0+c2Vzc2lvbiwgcmMsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIkZhaWx1cmUgd2hpbGUgZHJhaW5pbmcgaW5jb21pbmcgZmxv dyIpOworICAgICAgICB9CiAKLSAgICAgICAgaWYoY2hhbm5lbC0+bG9jYWwu d2luZG93X3NpemUgPD0gMCkKKyAgICAgICAgaWYoY2hhbm5lbC0+bG9jYWwu d2luZG93X3NpemUgPD0gMCkgewogICAgICAgICAgICAgLyogdGhlcmUncyBu byByb29tIGZvciBkYXRhIHNvIHdlIHN0b3AgKi8KKworICAgICAgICAgICAg LyogV2FpdGluZyBvbiB0aGUgc29ja2V0IHRvIGJlIHdyaXRhYmxlIHdvdWxk IGJlIHdyb25nIGJlY2F1c2Ugd2UKKyAgICAgICAgICAgICAqIHdvdWxkIGJl IGJhY2sgaGVyZSBpbW1lZGlhdGVseSwgYnV0IGEgcmVhZGFibGUgc29ja2V0 IG1pZ2h0CisgICAgICAgICAgICAgKiBoZXJhbGQgYW4gaW5jb21pbmcgd2lu ZG93IGFkanVzdG1lbnQuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAg IHNlc3Npb24tPnNvY2tldF9ibG9ja19kaXJlY3Rpb25zID0gTElCU1NIMl9T RVNTSU9OX0JMT0NLX0lOQk9VTkQ7CisKICAgICAgICAgICAgIHJldHVybiAo cmM9PUxJQlNTSDJfRVJST1JfRUFHQUlOP3JjOjApOworICAgICAgICB9CiAK ICAgICAgICAgY2hhbm5lbC0+d3JpdGVfYnVmd3JpdGUgPSBidWZsZW47CiAK QEAgLTIyNTEsNyArMjI5Myw2IEBAIGludCBfbGlic3NoMl9jaGFubmVsX2Ns b3NlKExJQlNTSDJfQ0hBTk5FTCAqIGNoYW5uZWwpCiB7CiAgICAgTElCU1NI Ml9TRVNTSU9OICpzZXNzaW9uID0gY2hhbm5lbC0+c2Vzc2lvbjsKICAgICBp bnQgcmMgPSAwOwotICAgIGludCByZXRjb2RlOwogCiAgICAgaWYgKGNoYW5u ZWwtPmxvY2FsLmNsb3NlKSB7CiAgICAgICAgIC8qIEFscmVhZHkgY2xvc2Vk LCBhY3QgbGlrZSB3ZSBzZW50IGFub3RoZXIgY2xvc2UsCkBAIC0yMjYwLDkg KzIzMDEsMTUgQEAgaW50IF9saWJzc2gyX2NoYW5uZWxfY2xvc2UoTElCU1NI Ml9DSEFOTkVMICogY2hhbm5lbCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAg fQogCi0gICAgaWYgKCFjaGFubmVsLT5sb2NhbC5lb2YpCi0gICAgICAgIGlm ICgocmV0Y29kZSA9IGNoYW5uZWxfc2VuZF9lb2YoY2hhbm5lbCkpKQotICAg ICAgICAgICAgcmV0dXJuIHJldGNvZGU7CisgICAgaWYgKCFjaGFubmVsLT5s b2NhbC5lb2YpIHsKKyAgICAgICAgaWYgKChyYyA9IGNoYW5uZWxfc2VuZF9l b2YoY2hhbm5lbCkpKSB7CisgICAgICAgICAgICBpZiAocmMgPT0gTElCU1NI Ml9FUlJPUl9FQUdBSU4pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmM7 CisgICAgICAgICAgICB9CisgICAgICAgICAgICBfbGlic3NoMl9lcnJvcihz ZXNzaW9uLCByYywKKyAgICAgICAgICAgICAgICAiVW5hYmxlIHRvIHNlbmQg RU9GLCBidXQgY2xvc2luZyBjaGFubmVsIGFueXdheSIpOworICAgICAgICB9 CisgICAgfQogCiAgICAgLyogaWdub3JlIGlmIHdlIGhhdmUgcmVjZWl2ZWQg YSByZW1vdGUgZW9mIG9yIG5vdCwgYXMgaXQgaXMgbm93IHRvbwogICAgICAg IGxhdGUgZm9yIHVzIHRvIHdhaXQgZm9yIGl0LiBDb250aW51ZSBjbG9zaW5n ISAqLwpAQCAtMjI3OCwxOSArMjMyNSwyMiBAQCBpbnQgX2xpYnNzaDJfY2hh bm5lbF9jbG9zZShMSUJTU0gyX0NIQU5ORUwgKiBjaGFubmVsKQogICAgIH0K IAogICAgIGlmIChjaGFubmVsLT5jbG9zZV9zdGF0ZSA9PSBsaWJzc2gyX05C X3N0YXRlX2NyZWF0ZWQpIHsKLSAgICAgICAgcmV0Y29kZSA9IF9saWJzc2gy X3RyYW5zcG9ydF9zZW5kKHNlc3Npb24sIGNoYW5uZWwtPmNsb3NlX3BhY2tl dCwgNSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE5VTEwsIDApOwotICAgICAgICBpZiAocmV0Y29kZSA9PSBMSUJTU0gy X0VSUk9SX0VBR0FJTikgeworICAgICAgICByYyA9IF9saWJzc2gyX3RyYW5z cG9ydF9zZW5kKHNlc3Npb24sIGNoYW5uZWwtPmNsb3NlX3BhY2tldCwgNSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAw KTsKKyAgICAgICAgaWYgKHJjID09IExJQlNTSDJfRVJST1JfRUFHQUlOKSB7 CiAgICAgICAgICAgICBfbGlic3NoMl9lcnJvcihzZXNzaW9uLCByYywKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJXb3VsZCBibG9jayBzZW5kaW5n IGNsb3NlLWNoYW5uZWwiKTsKLSAgICAgICAgICAgIHJldHVybiByZXRjb2Rl OwotICAgICAgICB9IGVsc2UgaWYgKHJldGNvZGUpIHsKLSAgICAgICAgICAg IGNoYW5uZWwtPmNsb3NlX3N0YXRlID0gbGlic3NoMl9OQl9zdGF0ZV9pZGxl OwotICAgICAgICAgICAgcmV0dXJuIF9saWJzc2gyX2Vycm9yKHNlc3Npb24s IHJldGNvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IlVuYWJsZSB0byBzZW5kIGNsb3NlLWNoYW5uZWwgcmVxdWVzdCIpOwotICAg ICAgICB9CisgICAgICAgICAgICByZXR1cm4gcmM7CisKKyAgICAgICAgfSBl bHNlIGlmIChyYykgeworICAgICAgICAgICAgX2xpYnNzaDJfZXJyb3Ioc2Vz c2lvbiwgcmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5hYmxl IHRvIHNlbmQgY2xvc2UtY2hhbm5lbCByZXF1ZXN0LCAiCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAiYnV0IGNsb3NpbmcgYW55d2F5Iik7CisgICAg ICAgICAgICAvKiBza2lwIHdhaXRpbmcgZm9yIHRoZSByZXNwb25zZSBhbmQg ZmFsbCB0aHJvdWdoIHRvCisgICAgICAgICAgICAgICBMSUJTU0gyX0NIQU5O RUxfQ0xPU0UgYmVsb3cgKi8KIAotICAgICAgICBjaGFubmVsLT5jbG9zZV9z dGF0ZSA9IGxpYnNzaDJfTkJfc3RhdGVfc2VudDsKKyAgICAgICAgfSBlbHNl CisgICAgICAgICAgICBjaGFubmVsLT5jbG9zZV9zdGF0ZSA9IGxpYnNzaDJf TkJfc3RhdGVfc2VudDsKICAgICB9CiAKICAgICBpZiAoY2hhbm5lbC0+Y2xv c2Vfc3RhdGUgPT0gbGlic3NoMl9OQl9zdGF0ZV9zZW50KSB7CkBAIC0yNTUw LDcgKzI2MDAsNyBAQCBsaWJzc2gyX2NoYW5uZWxfd2luZG93X3JlYWRfZXgo TElCU1NIMl9DSEFOTkVMICpjaGFubmVsLAogICogbGlic3NoMl9jaGFubmVs X3dpbmRvd193cml0ZV9leAogICoKICAqIENoZWNrIHRoZSBzdGF0dXMgb2Yg dGhlIHdyaXRlIHdpbmRvdyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMg d2hpY2ggbWF5Ci0gKiBiZSBzYWZlbHkgd3JpdGVuIG9uIHRoZSBjaGFubmVs IHdpdGhvdXQgYmxvY2tpbmcgd2luZG93X3NpemVfaW5pdGlhbCAoaWYKKyAq IGJlIHNhZmVseSB3cml0dGVuIG9uIHRoZSBjaGFubmVsIHdpdGhvdXQgYmxv Y2tpbmcgd2luZG93X3NpemVfaW5pdGlhbCAoaWYKICAqIHBhc3NlZCkgd2ls bCBiZSBwb3B1bGF0ZWQgd2l0aCB0aGUgc2l6ZSBvZiB0aGUgaW5pdGlhbCB3 aW5kb3cgYXMgZGVmaW5lZCBieQogICogdGhlIGNoYW5uZWxfb3BlbiByZXF1 ZXN0CiAgKi8KZGlmZiAtLWdpdCBhL3BnYWRtaW4vbGlic3NoMi9jb21wLmMg Yi9wZ2FkbWluL2xpYnNzaDIvY29tcC5jCmluZGV4IDQ1OTNjZTQuLjQ1NjAx ODggMTAwNjQ0Ci0tLSBhL3BnYWRtaW4vbGlic3NoMi9jb21wLmMKKysrIGIv cGdhZG1pbi9saWJzc2gyL2NvbXAuYwpAQCAtMSw1ICsxLDUgQEAKIC8qIENv cHlyaWdodCAoYykgMjAwNC0yMDA3LCBTYXJhIEdvbGVtb24gPHNhcmFnQGxp YnNzaDIub3JnPgotICogQ29weXJpZ2h0IChjKSAyMDEwLCBEYW5pZWwgU3Rl bmJlcmcgPGRhbmllbEBoYXh4LnNlPgorICogQ29weXJpZ2h0IChjKSAyMDEw LTIwMTQsIERhbmllbCBTdGVuYmVyZyA8ZGFuaWVsQGhheHguc2U+CiAgKiBB bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsCkBAIC0xNDEsMTMg KzE0MSwxMiBAQCBjb21wX21ldGhvZF96bGliX2luaXQoTElCU1NIMl9TRVNT SU9OICogc2Vzc2lvbiwgaW50IGNvbXByLAogICAgIHpfc3RyZWFtICpzdHJt OwogICAgIGludCBzdGF0dXM7CiAKLSAgICBzdHJtID0gTElCU1NIMl9BTExP QyhzZXNzaW9uLCBzaXplb2Yoel9zdHJlYW0pKTsKKyAgICBzdHJtID0gTElC U1NIMl9DQUxMT0Moc2Vzc2lvbiwgc2l6ZW9mKHpfc3RyZWFtKSk7CiAgICAg aWYgKCFzdHJtKSB7CiAgICAgICAgIHJldHVybiBfbGlic3NoMl9lcnJvcihz ZXNzaW9uLCBMSUJTU0gyX0VSUk9SX0FMTE9DLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIlVuYWJsZSB0byBhbGxvY2F0ZSBtZW1vcnkgZm9y ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ6bGliIGNvbXBy ZXNzaW9uL2RlY29tcHJlc3Npb24iKTsKICAgICB9Ci0gICAgbWVtc2V0KHN0 cm0sIDAsIHNpemVvZih6X3N0cmVhbSkpOwogCiAgICAgc3RybS0+b3BhcXVl ID0gKHZvaWRwZikgc2Vzc2lvbjsKICAgICBzdHJtLT56YWxsb2MgPSAoYWxs b2NfZnVuYykgY29tcF9tZXRob2RfemxpYl9hbGxvYzsKQEAgLTE5OCwxNSAr MTk3LDE0IEBAIGNvbXBfbWV0aG9kX3psaWJfY29tcChMSUJTU0gyX1NFU1NJ T04gKnNlc3Npb24sCiAKICAgICBzdGF0dXMgPSBkZWZsYXRlKHN0cm0sIFpf UEFSVElBTF9GTFVTSCk7CiAKLSAgICBpZiAoc3RhdHVzICE9IFpfT0spIHsK LSAgICAgICAgX2xpYnNzaDJfZGVidWcoc2Vzc2lvbiwgTElCU1NIMl9UUkFD RV9UUkFOUywKLSAgICAgICAgICAgICAgICAgICAgICAgInVuaGFuZGxlZCB6 bGliIGNvbXByZXNzaW9uIGVycm9yICVkIiwgc3RhdHVzKTsKLSAgICAgICAg cmV0dXJuIF9saWJzc2gyX2Vycm9yKHNlc3Npb24sIExJQlNTSDJfRVJST1Jf WkxJQiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21wcmVz c2lvbiBmYWlsdXJlIik7CisgICAgaWYgKChzdGF0dXMgPT0gWl9PSykgJiYg KHN0cm0tPmF2YWlsX291dCA+IDApKSB7CisgICAgICAgICpkZXN0X2xlbiA9 IG91dF9tYXhsZW4gLSBzdHJtLT5hdmFpbF9vdXQ7CisgICAgICAgIHJldHVy biAwOwogICAgIH0KIAotICAgICpkZXN0X2xlbiA9IG91dF9tYXhsZW4gLSBz dHJtLT5hdmFpbF9vdXQ7Ci0gICAgcmV0dXJuIDA7CisgICAgX2xpYnNzaDJf ZGVidWcoc2Vzc2lvbiwgTElCU1NIMl9UUkFDRV9UUkFOUywKKyAgICAgICAg ICAgICAgICAgICAidW5oYW5kbGVkIHpsaWIgY29tcHJlc3Npb24gZXJyb3Ig JWQsIGF2YWlsX291dCIsIHN0YXR1cywgc3RybS0+YXZhaWxfb3V0KTsKKyAg ICByZXR1cm4gX2xpYnNzaDJfZXJyb3Ioc2Vzc2lvbiwgTElCU1NIMl9FUlJP Ul9aTElCLCAiY29tcHJlc3Npb24gZmFpbHVyZSIpOwogfQogCiAvKgpAQCAt MjI2LDEzICsyMjQsMTIgQEAgY29tcF9tZXRob2RfemxpYl9kZWNvbXAoTElC U1NIMl9TRVNTSU9OICogc2Vzc2lvbiwKICAgICAvKiBBIHNob3J0LXRlcm0g YWxsb2Mgb2YgYSBmdWxsIGRhdGEgY2h1bmsgaXMgYmV0dGVyIHRoYW4gYSBz ZXJpZXMgb2YKICAgICAgICByZWFsbG9jcyAqLwogICAgIGNoYXIgKm91dDsK LSAgICBpbnQgb3V0X21heGxlbiA9IDggKiBzcmNfbGVuOwotICAgIGludCBs aW1pdGVyID0gMDsKKyAgICBpbnQgb3V0X21heGxlbiA9IDQgKiBzcmNfbGVu OwogCiAgICAgLyogSWYgc3RybSBpcyBudWxsLCB0aGVuIHdlIGhhdmUgbm90 IHlldCBiZWVuIGluaXRpYWxpemVkLiAqLwogICAgIGlmIChzdHJtID09IE5V TEwpCiAgICAgICAgIHJldHVybiBfbGlic3NoMl9lcnJvcihzZXNzaW9uLCBM SUJTU0gyX0VSUk9SX0NPTVBSRVNTLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgImRlY29tcHJlc3Npb24gdW5pdGlsaXplZCIpOzsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNvbXByZXNzaW9uIHVuaW5p dGlhbGl6ZWQiKTs7CiAKICAgICAvKiBJbiBwcmFjdGljZSB0aGV5IG5ldmVy IGNvbWUgc21hbGxlciB0aGFuIHRoaXMgKi8KICAgICBpZiAob3V0X21heGxl biA8IDI1KQpAQCAtMjUyLDE5ICsyNDksMTkgQEAgY29tcF9tZXRob2Rfemxp Yl9kZWNvbXAoTElCU1NIMl9TRVNTSU9OICogc2Vzc2lvbiwKIAogICAgIC8q IExvb3AgdW50aWwgaXQncyBhbGwgaW5mbGF0ZWQgb3IgaGl0IGVycm9yICov CiAgICAgZm9yICg7OykgewotICAgICAgICBpbnQgc3RhdHVzLCBncm93X3Np emU7CisgICAgICAgIGludCBzdGF0dXM7CiAgICAgICAgIHNpemVfdCBvdXRf b2ZzOwogICAgICAgICBjaGFyICpuZXdvdXQ7CiAKICAgICAgICAgc3RhdHVz ID0gaW5mbGF0ZShzdHJtLCBaX1BBUlRJQUxfRkxVU0gpOwogCiAgICAgICAg IGlmIChzdGF0dXMgPT0gWl9PSykgewotICAgICAgICAgICAgaWYgKCEgc3Ry bS0+YXZhaWxfaW4pIHsKLSAgICAgICAgICAgICAgICAvKiBzdGF0dXMgaXMg T0sgYW5kIGlucHV0IGFsbCB1c2VkIHNvIHdlJ3JlIGRvbmUgKi8KKyAgICAg ICAgICAgIGlmIChzdHJtLT5hdmFpbF9vdXQgPiAwKQorICAgICAgICAgICAg ICAgIC8qIHN0YXR1cyBpcyBPSyBhbmQgdGhlIG91dHB1dCBidWZmZXIgaGFz IG5vdCBiZWVuIGV4aGF1c3RlZCBzbyB3ZSdyZSBkb25lICovCiAgICAgICAg ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0gZWxz ZSBpZiAoc3RhdHVzID09IFpfQlVGX0VSUk9SKSB7Ci0gICAgICAgICAgICAv KiBUaGlzIGlzIE9LLCBqdXN0IGRyb3AgdGhyb3VnaCB0byBncm93IHRoZSBi dWZmZXIgKi8KKyAgICAgICAgICAgIC8qIHRoZSBpbnB1dCBkYXRhIGhhcyBi ZWVuIGV4aGF1c3RlZCBzbyB3ZSBhcmUgZG9uZSAqLworICAgICAgICAgICAg YnJlYWs7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvKiBlcnJv ciBzdGF0ZSAqLwogICAgICAgICAgICAgTElCU1NIMl9GUkVFKHNlc3Npb24s IG91dCk7CkBAIC0yNzQsMjIgKzI3MSwxNSBAQCBjb21wX21ldGhvZF96bGli X2RlY29tcChMSUJTU0gyX1NFU1NJT04gKiBzZXNzaW9uLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNvbXByZXNzaW9uIGZhaWx1 cmUiKTsKICAgICAgICAgfQogCi0gICAgICAgIC8qIElmIHdlIGdldCBoZXJl IHdlIG5lZWQgdG8gZ3JvdyB0aGUgb3V0cHV0IGJ1ZmZlciBhbmQgdHJ5IGFn YWluICovCi0gICAgICAgIG91dF9vZnMgPSBvdXRfbWF4bGVuIC0gc3RybS0+ YXZhaWxfb3V0OwotICAgICAgICBpZiAoc3RybS0+YXZhaWxfaW4pIHsKLSAg ICAgICAgICAgIGdyb3dfc2l6ZSA9IHN0cm0tPmF2YWlsX2luICogODsKLSAg ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8qIE5vdCBzdXJlIGhvdyBt dWNoIHRvIGdyb3cgYnkgKi8KLSAgICAgICAgICAgIGdyb3dfc2l6ZSA9IDMy OwotICAgICAgICB9Ci0gICAgICAgIG91dF9tYXhsZW4gKz0gZ3Jvd19zaXpl OwotCi0gICAgICAgIGlmICgob3V0X21heGxlbiA+IChpbnQpIHBheWxvYWRf bGltaXQpICYmIGxpbWl0ZXIrKykgeworICAgICAgICBpZiAob3V0X21heGxl biA+PSAoaW50KSBwYXlsb2FkX2xpbWl0KSB7CiAgICAgICAgICAgICBMSUJT U0gyX0ZSRUUoc2Vzc2lvbiwgb3V0KTsKICAgICAgICAgICAgIHJldHVybiBf bGlic3NoMl9lcnJvcihzZXNzaW9uLCBMSUJTU0gyX0VSUk9SX1pMSUIsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4Y2Vzc2l2ZSBn cm93dGggaW4gZGVjb21wcmVzc2lvbiBwaGFzZSIpOwogICAgICAgICB9CiAK KyAgICAgICAgLyogSWYgd2UgZ2V0IGhlcmUgd2UgbmVlZCB0byBncm93IHRo ZSBvdXRwdXQgYnVmZmVyIGFuZCB0cnkgYWdhaW4gKi8KKyAgICAgICAgb3V0 X29mcyA9IG91dF9tYXhsZW4gLSBzdHJtLT5hdmFpbF9vdXQ7CisgICAgICAg IG91dF9tYXhsZW4gKj0gMjsKICAgICAgICAgbmV3b3V0ID0gTElCU1NIMl9S RUFMTE9DKHNlc3Npb24sIG91dCwgb3V0X21heGxlbik7CiAgICAgICAgIGlm ICghbmV3b3V0KSB7CiAgICAgICAgICAgICBMSUJTU0gyX0ZSRUUoc2Vzc2lv biwgb3V0KTsKQEAgLTI5OCw3ICsyODgsNyBAQCBjb21wX21ldGhvZF96bGli X2RlY29tcChMSUJTU0gyX1NFU1NJT04gKiBzZXNzaW9uLAogICAgICAgICB9 CiAgICAgICAgIG91dCA9IG5ld291dDsKICAgICAgICAgc3RybS0+bmV4dF9v dXQgPSAodW5zaWduZWQgY2hhciAqKSBvdXQgKyBvdXRfb2ZzOwotICAgICAg ICBzdHJtLT5hdmFpbF9vdXQgKz0gZ3Jvd19zaXplOworICAgICAgICBzdHJt LT5hdmFpbF9vdXQgPSBvdXRfbWF4bGVuIC0gb3V0X29mczsKICAgICB9CiAK ICAgICAqZGVzdCA9ICh1bnNpZ25lZCBjaGFyICopIG91dDsKZGlmZiAtLWdp dCBhL3BnYWRtaW4vbGlic3NoMi9ob3N0a2V5LmMgYi9wZ2FkbWluL2xpYnNz aDIvaG9zdGtleS5jCmluZGV4IDc1MzU2M2QuLmFkZDQ0OTUgMTAwNjQ0Ci0t LSBhL3BnYWRtaW4vbGlic3NoMi9ob3N0a2V5LmMKKysrIGIvcGdhZG1pbi9s aWJzc2gyL2hvc3RrZXkuYwpAQCAtMSw1ICsxLDUgQEAKIC8qIENvcHlyaWdo dCAoYykgMjAwNC0yMDA2LCBTYXJhIEdvbGVtb24gPHNhcmFnQGxpYnNzaDIu b3JnPgotICogQ29weXJpZ2h0IChjKSAyMDA5IGJ5IERhbmllbCBTdGVuYmVy ZworICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTQgYnkgRGFuaWVsIFN0ZW5i ZXJnCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsCkBA IC0xMzEsNiArMTMxLDM4IEBAIGhvc3RrZXlfbWV0aG9kX3NzaF9yc2FfaW5p dFBFTShMSUJTU0gyX1NFU1NJT04gKiBzZXNzaW9uLAogfQogCiAvKgorICog aG9zdGtleV9tZXRob2Rfc3NoX3JzYV9pbml0UEVNRnJvbU1lbW9yeQorICoK KyAqIExvYWQgYSBQcml2YXRlIEtleSBmcm9tIGEgbWVtb3J5CisgKi8KK3N0 YXRpYyBpbnQKK2hvc3RrZXlfbWV0aG9kX3NzaF9yc2FfaW5pdFBFTUZyb21N ZW1vcnkoTElCU1NIMl9TRVNTSU9OICogc2Vzc2lvbiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcHJp dmtleWZpbGVkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzaXplX3QgcHJpdmtleWZpbGVkYXRhX2xlbiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg Y29uc3QgY2hhciAqcGFzc3BocmFzZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKmFic3RyYWN0KQoreworICAg IGxpYnNzaDJfcnNhX2N0eCAqcnNhY3R4OworICAgIGludCByZXQ7CisKKyAg ICBpZiAoKmFic3RyYWN0KSB7CisgICAgICAgIGhvc3RrZXlfbWV0aG9kX3Nz aF9yc2FfZHRvcihzZXNzaW9uLCBhYnN0cmFjdCk7CisgICAgICAgICphYnN0 cmFjdCA9IE5VTEw7CisgICAgfQorCisgICAgcmV0ID0gX2xpYnNzaDJfcnNh X25ld19wcml2YXRlX2Zyb21tZW1vcnkoJnJzYWN0eCwgc2Vzc2lvbiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw cml2a2V5ZmlsZWRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcHJpdmtleWZpbGVkYXRhX2xlbiwgcGFzc3Bo cmFzZSk7CisgICAgaWYgKHJldCkgeworICAgICAgICByZXR1cm4gLTE7Cisg ICAgfQorCisgICAgKmFic3RyYWN0ID0gcnNhY3R4OworCisgICAgcmV0dXJu IDA7Cit9CisKKy8qCiAgKiBob3N0a2V5X21ldGhvZF9zc2hfcnNhX3NpZ24K ICAqCiAgKiBWZXJpZnkgc2lnbmF0dXJlIGNyZWF0ZWQgYnkgcmVtb3RlCkBA IC0yMDMsMTEgKzIzNSwxNiBAQCBob3N0a2V5X21ldGhvZF9zc2hfcnNhX2R0 b3IoTElCU1NIMl9TRVNTSU9OICogc2Vzc2lvbiwgdm9pZCAqKmFic3RyYWN0 KQogICAgIHJldHVybiAwOwogfQogCisjaWZkZWYgT1BFTlNTTF9OT19NRDUK KyNkZWZpbmUgTUQ1X0RJR0VTVF9MRU5HVEggMTYKKyNlbmRpZgorCiBzdGF0 aWMgY29uc3QgTElCU1NIMl9IT1NUS0VZX01FVEhPRCBob3N0a2V5X21ldGhv ZF9zc2hfcnNhID0gewogICAgICJzc2gtcnNhIiwKICAgICBNRDVfRElHRVNU X0xFTkdUSCwKICAgICBob3N0a2V5X21ldGhvZF9zc2hfcnNhX2luaXQsCiAg ICAgaG9zdGtleV9tZXRob2Rfc3NoX3JzYV9pbml0UEVNLAorICAgIGhvc3Rr ZXlfbWV0aG9kX3NzaF9yc2FfaW5pdFBFTUZyb21NZW1vcnksCiAgICAgaG9z dGtleV9tZXRob2Rfc3NoX3JzYV9zaWdfdmVyaWZ5LAogICAgIGhvc3RrZXlf bWV0aG9kX3NzaF9yc2Ffc2lnbnYsCiAgICAgTlVMTCwgICAgICAgICAgICAg ICAgICAgICAgIC8qIGVuY3J5cHQgKi8KQEAgLTMwNiw2ICszNDMsMzggQEAg aG9zdGtleV9tZXRob2Rfc3NoX2Rzc19pbml0UEVNKExJQlNTSDJfU0VTU0lP TiAqIHNlc3Npb24sCiB9CiAKIC8qCisgKiBob3N0a2V5X21ldGhvZF9zc2hf ZHNzX2luaXRQRU1Gcm9tTWVtb3J5CisgKgorICogTG9hZCBhIFByaXZhdGUg S2V5IGZyb20gbWVtb3J5CisgKi8KK3N0YXRpYyBpbnQKK2hvc3RrZXlfbWV0 aG9kX3NzaF9kc3NfaW5pdFBFTUZyb21NZW1vcnkoTElCU1NIMl9TRVNTSU9O ICogc2Vzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgY2hhciAqcHJpdmtleWZpbGVkYXRhLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcHJp dmtleWZpbGVkYXRhX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgY29uc3QgY2hhciAqcGFzc3BocmFz ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dm9pZCAqKmFic3RyYWN0KQoreworICAgIGxpYnNzaDJfZHNhX2N0eCAqZHNh Y3R4OworICAgIGludCByZXQ7CisKKyAgICBpZiAoKmFic3RyYWN0KSB7Cisg ICAgICAgIGhvc3RrZXlfbWV0aG9kX3NzaF9kc3NfZHRvcihzZXNzaW9uLCBh YnN0cmFjdCk7CisgICAgICAgICphYnN0cmFjdCA9IE5VTEw7CisgICAgfQor CisgICAgcmV0ID0gX2xpYnNzaDJfZHNhX25ld19wcml2YXRlX2Zyb21tZW1v cnkoJmRzYWN0eCwgc2Vzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwcml2a2V5ZmlsZWRhdGEsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJp dmtleWZpbGVkYXRhX2xlbiwgcGFzc3BocmFzZSk7CisgICAgaWYgKHJldCkg eworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgKmFic3RyYWN0 ID0gZHNhY3R4OworCisgICAgcmV0dXJuIDA7Cit9CisKKy8qCiAgKiBsaWJz c2gyX2hvc3RrZXlfbWV0aG9kX3NzaF9kc3Nfc2lnbgogICoKICAqIFZlcmlm eSBzaWduYXR1cmUgY3JlYXRlZCBieSByZW1vdGUKQEAgLTM0NywxMyArNDE2 LDEyIEBAIGhvc3RrZXlfbWV0aG9kX3NzaF9kc3Nfc2lnbnYoTElCU1NIMl9T RVNTSU9OICogc2Vzc2lvbiwKICAgICBsaWJzc2gyX3NoYTFfY3R4IGN0eDsK ICAgICBpbnQgaTsKIAotICAgICpzaWduYXR1cmUgPSBMSUJTU0gyX0FMTE9D KHNlc3Npb24sIDIgKiBTSEFfRElHRVNUX0xFTkdUSCk7CisgICAgKnNpZ25h dHVyZSA9IExJQlNTSDJfQ0FMTE9DKHNlc3Npb24sIDIgKiBTSEFfRElHRVNU X0xFTkdUSCk7CiAgICAgaWYgKCEqc2lnbmF0dXJlKSB7CiAgICAgICAgIHJl dHVybiAtMTsKICAgICB9CiAKICAgICAqc2lnbmF0dXJlX2xlbiA9IDIgKiBT SEFfRElHRVNUX0xFTkdUSDsKLSAgICBtZW1zZXQoKnNpZ25hdHVyZSwgMCwg MiAqIFNIQV9ESUdFU1RfTEVOR1RIKTsKIAogICAgIGxpYnNzaDJfc2hhMV9p bml0KCZjdHgpOwogICAgIGZvcihpID0gMDsgaSA8IHZlY2NvdW50OyBpKysp IHsKQEAgLTM5Miw2ICs0NjAsNyBAQCBzdGF0aWMgY29uc3QgTElCU1NIMl9I T1NUS0VZX01FVEhPRCBob3N0a2V5X21ldGhvZF9zc2hfZHNzID0gewogICAg IE1ENV9ESUdFU1RfTEVOR1RILAogICAgIGhvc3RrZXlfbWV0aG9kX3NzaF9k c3NfaW5pdCwKICAgICBob3N0a2V5X21ldGhvZF9zc2hfZHNzX2luaXRQRU0s CisgICAgaG9zdGtleV9tZXRob2Rfc3NoX2Rzc19pbml0UEVNRnJvbU1lbW9y eSwKICAgICBob3N0a2V5X21ldGhvZF9zc2hfZHNzX3NpZ192ZXJpZnksCiAg ICAgaG9zdGtleV9tZXRob2Rfc3NoX2Rzc19zaWdudiwKICAgICBOVUxMLCAg ICAgICAgICAgICAgICAgICAgICAgLyogZW5jcnlwdCAqLwpAQCAtNDM1LDcg KzUwNCw5IEBAIGxpYnNzaDJfaG9zdGtleV9oYXNoKExJQlNTSDJfU0VTU0lP TiAqIHNlc3Npb24sIGludCBoYXNoX3R5cGUpCiAgICAgICAgIGJyZWFrOwog I2VuZGlmIC8qIExJQlNTSDJfTUQ1ICovCiAgICAgY2FzZSBMSUJTU0gyX0hP U1RLRVlfSEFTSF9TSEExOgotICAgICAgICByZXR1cm4gKGNoYXIgKikgc2Vz c2lvbi0+c2VydmVyX2hvc3RrZXlfc2hhMTsKKyAgICAgICAgcmV0dXJuIChz ZXNzaW9uLT5zZXJ2ZXJfaG9zdGtleV9zaGExX3ZhbGlkKQorICAgICAgICAg ID8gKGNoYXIgKikgc2Vzc2lvbi0+c2VydmVyX2hvc3RrZXlfc2hhMQorICAg ICAgICAgIDogTlVMTDsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoK ICAgICAgICAgcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9wZ2FkbWluL2xp YnNzaDIva2VlcGFsaXZlLmMgYi9wZ2FkbWluL2xpYnNzaDIva2VlcGFsaXZl LmMKaW5kZXggMjYwMjA2YS4uZmQ3NDlkZCAxMDA2NDQKLS0tIGEvcGdhZG1p bi9saWJzc2gyL2tlZXBhbGl2ZS5jCisrKyBiL3BnYWRtaW4vbGlic3NoMi9r ZWVwYWxpdmUuYwpAQCAtNzUsNyArNzUsOCBAQCBsaWJzc2gyX2tlZXBhbGl2 ZV9zZW5kIChMSUJTU0gyX1NFU1NJT04gKnNlc3Npb24sCiAgICAgICAgIHNp emVfdCBsZW4gPSBzaXplb2YgKGtlZXBhbGl2ZV9kYXRhKSAtIDE7CiAgICAg ICAgIGludCByYzsKIAotICAgICAgICBrZWVwYWxpdmVfZGF0YVtsZW4gLSAx XSA9IHNlc3Npb24tPmtlZXBhbGl2ZV93YW50X3JlcGx5OworICAgICAgICBr ZWVwYWxpdmVfZGF0YVtsZW4gLSAxXSA9CisgICAgICAgICAgICAodW5zaWdu ZWQgY2hhcilzZXNzaW9uLT5rZWVwYWxpdmVfd2FudF9yZXBseTsKIAogICAg ICAgICByYyA9IF9saWJzc2gyX3RyYW5zcG9ydF9zZW5kKHNlc3Npb24sIGtl ZXBhbGl2ZV9kYXRhLCBsZW4sIE5VTEwsIDApOwogICAgICAgICAvKiBTaWxl bnRseSBpZ25vcmUgUEFDS0VUX0VBR0FJTiBoZXJlOiBpZiB0aGUgd3JpdGUg YnVmZmVyIGlzCkBAIC05MCw4ICs5MSw4IEBAIGxpYnNzaDJfa2VlcGFsaXZl X3NlbmQgKExJQlNTSDJfU0VTU0lPTiAqc2Vzc2lvbiwKICAgICAgICAgaWYg KHNlY29uZHNfdG9fbmV4dCkKICAgICAgICAgICAgICpzZWNvbmRzX3RvX25l eHQgPSBzZXNzaW9uLT5rZWVwYWxpdmVfaW50ZXJ2YWw7CiAgICAgfSBlbHNl IGlmIChzZWNvbmRzX3RvX25leHQpIHsKLSAgICAgICAgKnNlY29uZHNfdG9f bmV4dCA9IChpbnQpIHNlc3Npb24tPmtlZXBhbGl2ZV9sYXN0X3NlbnQKLSAg ICAgICAgICAgICsgc2Vzc2lvbi0+a2VlcGFsaXZlX2ludGVydmFsIC0gbm93 OworICAgICAgICAqc2Vjb25kc190b19uZXh0ID0gKGludCkgKHNlc3Npb24t PmtlZXBhbGl2ZV9sYXN0X3NlbnQgLSBub3cpCisgICAgICAgICAgICArIHNl c3Npb24tPmtlZXBhbGl2ZV9pbnRlcnZhbDsKICAgICB9CiAKICAgICByZXR1 cm4gMDsKZGlmZiAtLWdpdCBhL3BnYWRtaW4vbGlic3NoMi9rZXguYyBiL3Bn YWRtaW4vbGlic3NoMi9rZXguYwppbmRleCAwN2U3MTdmLi41OTBiMzBhIDEw MDY0NAotLS0gYS9wZ2FkbWluL2xpYnNzaDIva2V4LmMKKysrIGIvcGdhZG1p bi9saWJzc2gyL2tleC5jCkBAIC03MCwyMyArNzAsNjczIEBACiAgICAgICAg ICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCiAgICAgfQogCisKKy8qIEhlbHBlciBt YWNybyBjYWxsZWQgZnJvbSBrZXhfbWV0aG9kX2RpZmZpZV9oZWxsbWFuX2dy b3VwMV9zaGEyNTZfa2V5X2V4Y2hhbmdlICovCisjZGVmaW5lIExJQlNTSDJf S0VYX01FVEhPRF9ESUZGSUVfSEVMTE1BTl9TSEEyNTZfSEFTSCh2YWx1ZSwg cmVxbGVuLCB2ZXJzaW9uKSBcCit7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCisgICAgbGlic3NoMl9zaGEyNTZfY3R4IGhhc2g7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdW5zaWdu ZWQgbG9uZyBsZW4gPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCEodmFsdWUpKSB7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCisgICAgICAgIHZhbHVlID0gTElCU1NIMl9BTExPQyhzZXNzaW9uLCBy ZXFsZW4gKyBTSEEyNTZfRElHRVNUX0xFTkdUSCk7ICBcCisgICAgfSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCisgICAgaWYgKHZhbHVlKSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCisgICAgICAgIHdoaWxlIChsZW4gPCAodW5zaWduZWQgbG9uZylyZXFs ZW4pIHsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg ICBsaWJzc2gyX3NoYTI1Nl9pbml0KCZoYXNoKTsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBsaWJzc2gyX3NoYTI1 Nl91cGRhdGUoaGFzaCwgZXhjaGFuZ2Vfc3RhdGUtPmtfdmFsdWUsICAgICAg ICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNo YW5nZV9zdGF0ZS0+a192YWx1ZV9sZW4pOyAgICAgICBcCisgICAgICAgICAg ICBsaWJzc2gyX3NoYTI1Nl91cGRhdGUoaGFzaCwgZXhjaGFuZ2Vfc3RhdGUt Pmhfc2lnX2NvbXAsICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBTSEEyNTZfRElHRVNUX0xFTkdUSCk7ICAgICAgICAgICAg ICBcCisgICAgICAgIGlmIChsZW4gPiAwKSB7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg ICBsaWJzc2gyX3NoYTI1Nl91cGRhdGUoaGFzaCwgdmFsdWUsIGxlbik7ICAg ICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgZWxzZSB7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCisgICAgICAgICAgICBsaWJzc2gyX3NoYTI1Nl91cGRhdGUoaGFzaCwg KHZlcnNpb24pLCAxKTsgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg ICBsaWJzc2gyX3NoYTI1Nl91cGRhdGUoaGFzaCwgc2Vzc2lvbi0+c2Vzc2lv bl9pZCwgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZXNzaW9uLT5zZXNzaW9uX2lkX2xlbik7ICAgICAgICAg ICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGxp YnNzaDJfc2hhMjU2X2ZpbmFsKGhhc2gsICh2YWx1ZSkgKyBsZW4pOyAgICAg ICAgICAgICAgICAgICAgICBcCisgICAgICAgIGxlbiArPSBTSEEyNTZfRElH RVNUX0xFTkdUSDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9CisKKworLyoK KyAqIGRpZmZpZV9oZWxsbWFuX3NoYTEKKyAqCisgKiBEaWZmaWUgSGVsbG1h biBLZXkgRXhjaGFuZ2UsIEdyb3VwIEFnbm9zdGljCisgKi8KK3N0YXRpYyBp bnQgZGlmZmllX2hlbGxtYW5fc2hhMShMSUJTU0gyX1NFU1NJT04gKnNlc3Np b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2xpYnNzaDJf Ym4gKmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2xpYnNz aDJfYm4gKnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 IGdyb3VwX29yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGNoYXIgcGFja2V0X3R5cGVfaW5pdCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHBhY2tldF90eXBl X3JlcGx5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGNoYXIgKm1pZGhhc2gsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdW5zaWduZWQgbG9uZyBtaWRoYXNoX2xlbiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBrbWRoZ0dQc2hha2V4X3N0YXRlX3QgKmV4 Y2hhbmdlX3N0YXRlKQoreworICAgIGludCByZXQgPSAwOworICAgIGludCBy YzsKKyAgICBsaWJzc2gyX3NoYTFfY3R4IGV4Y2hhbmdlX2hhc2hfY3R4Owor CisgICAgaWYgKGV4Y2hhbmdlX3N0YXRlLT5zdGF0ZSA9PSBsaWJzc2gyX05C X3N0YXRlX2lkbGUpIHsKKyAgICAgICAgLyogU2V0dXAgaW5pdGlhbCB2YWx1 ZXMgKi8KKyAgICAgICAgZXhjaGFuZ2Vfc3RhdGUtPmVfcGFja2V0ID0gTlVM TDsKKyAgICAgICAgZXhjaGFuZ2Vfc3RhdGUtPnNfcGFja2V0ID0gTlVMTDsK KyAgICAgICAgZXhjaGFuZ2Vfc3RhdGUtPmtfdmFsdWUgPSBOVUxMOworICAg ICAgICBleGNoYW5nZV9zdGF0ZS0+Y3R4ID0gX2xpYnNzaDJfYm5fY3R4X25l dygpOworICAgICAgICBleGNoYW5nZV9zdGF0ZS0+eCA9IF9saWJzc2gyX2Ju X2luaXQoKTsgLyogUmFuZG9tIGZyb20gY2xpZW50ICovCisgICAgICAgIGV4 Y2hhbmdlX3N0YXRlLT5lID0gX2xpYnNzaDJfYm5faW5pdCgpOyAvKiBnXngg bW9kIHAgKi8KKyAgICAgICAgZXhjaGFuZ2Vfc3RhdGUtPmYgPSBfbGlic3No Ml9ibl9pbml0X2Zyb21fYmluKCk7IC8qIGdeKFJhbmRvbSBmcm9tIHNlcnZl cikgbW9kIHAgKi8KKyAgICAgICAgZXhjaGFuZ2Vfc3RhdGUtPmsgPSBfbGli c3NoMl9ibl9pbml0KCk7IC8qIFRoZSBzaGFyZWQgc2VjcmV0OiBmXnggbW9k IHAgKi8KKworICAgICAgICAvKiBaZXJvIHRoZSB3aG9sZSB0aGluZyBvdXQg Ki8KKyAgICAgICAgbWVtc2V0KCZleGNoYW5nZV9zdGF0ZS0+cmVxX3N0YXRl LCAwLCBzaXplb2YocGFja2V0X3JlcXVpcmVfc3RhdGVfdCkpOworCisgICAg ICAgIC8qIEdlbmVyYXRlIHggYW5kIGUgKi8KKyAgICAgICAgX2xpYnNzaDJf Ym5fcmFuZChleGNoYW5nZV9zdGF0ZS0+eCwgZ3JvdXBfb3JkZXIsIDAsIC0x KTsKKyAgICAgICAgX2xpYnNzaDJfYm5fbW9kX2V4cChleGNoYW5nZV9zdGF0 ZS0+ZSwgZywgZXhjaGFuZ2Vfc3RhdGUtPngsIHAsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZXhjaGFuZ2Vfc3RhdGUtPmN0eCk7CisKKyAgICAg ICAgLyogU2VuZCBLRVggaW5pdCAqLworICAgICAgICAvKiBwYWNrZXRfdHlw ZSgxKSArIFN0cmluZyBMZW5ndGgoNCkgKyBsZWFkaW5nIDAoMSkgKi8KKyAg ICAgICAgZXhjaGFuZ2Vfc3RhdGUtPmVfcGFja2V0X2xlbiA9CisgICAgICAg ICAgICBfbGlic3NoMl9ibl9ieXRlcyhleGNoYW5nZV9zdGF0ZS0+ZSkgKyA2 OworICAgICAgICBpZiAoX2xpYnNzaDJfYm5fYml0cyhleGNoYW5nZV9zdGF0 ZS0+ZSkgJSA4KSB7CisgICAgICAgICAgICAvKiBMZWFkaW5nIDAwIG5vdCBu ZWVkZWQgKi8KKyAgICAgICAgICAgIGV4Y2hhbmdlX3N0YXRlLT5lX3BhY2tl dF9sZW4tLTsKKyAgICAgICAgfQorCisgICAgICAgIGV4Y2hhbmdlX3N0YXRl LT5lX3BhY2tldCA9CisgICAgICAgICAgICBMSUJTU0gyX0FMTE9DKHNlc3Np b24sIGV4Y2hhbmdlX3N0YXRlLT5lX3BhY2tldF9sZW4pOworICAgICAgICBp ZiAoIWV4Y2hhbmdlX3N0YXRlLT5lX3BhY2tldCkgeworICAgICAgICAgICAg cmV0ID0gX2xpYnNzaDJfZXJyb3Ioc2Vzc2lvbiwgTElCU1NIMl9FUlJPUl9B TExPQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPdXQg b2YgbWVtb3J5IGVycm9yIik7CisgICAgICAgICAgICBnb3RvIGNsZWFuX2V4 aXQ7CisgICAgICAgIH0KKyAgICAgICAgZXhjaGFuZ2Vfc3RhdGUtPmVfcGFj a2V0WzBdID0gcGFja2V0X3R5cGVfaW5pdDsKKyAgICAgICAgX2xpYnNzaDJf aHRvbnUzMihleGNoYW5nZV9zdGF0ZS0+ZV9wYWNrZXQgKyAxLAorICAgICAg ICAgICAgICAgICAgICAgICAgIGV4Y2hhbmdlX3N0YXRlLT5lX3BhY2tldF9s ZW4gLSA1KTsKKyAgICAgICAgaWYgKF9saWJzc2gyX2JuX2JpdHMoZXhjaGFu Z2Vfc3RhdGUtPmUpICUgOCkgeworICAgICAgICAgICAgX2xpYnNzaDJfYm5f dG9fYmluKGV4Y2hhbmdlX3N0YXRlLT5lLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGV4Y2hhbmdlX3N0YXRlLT5lX3BhY2tldCArIDUpOwor ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZXhjaGFuZ2Vfc3RhdGUt PmVfcGFja2V0WzVdID0gMDsKKyAgICAgICAgICAgIF9saWJzc2gyX2JuX3Rv X2JpbihleGNoYW5nZV9zdGF0ZS0+ZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBleGNoYW5nZV9zdGF0ZS0+ZV9wYWNrZXQgKyA2KTsKKyAg ICAgICAgfQorCisgICAgICAgIF9saWJzc2gyX2RlYnVnKHNlc3Npb24sIExJ QlNTSDJfVFJBQ0VfS0VYLCAiU2VuZGluZyBLRVggcGFja2V0ICVkIiwKKyAg ICAgICAgICAgICAgICAgICAgICAgKGludCkgcGFja2V0X3R5cGVfaW5pdCk7 CisgICAgICAgIGV4Y2hhbmdlX3N0YXRlLT5zdGF0ZSA9IGxpYnNzaDJfTkJf c3RhdGVfY3JlYXRlZDsKKyAgICB9CisKKyAgICBpZiAoZXhjaGFuZ2Vfc3Rh dGUtPnN0YXRlID09IGxpYnNzaDJfTkJfc3RhdGVfY3JlYXRlZCkgeworICAg ICAgICByYyA9IF9saWJzc2gyX3RyYW5zcG9ydF9zZW5kKHNlc3Npb24sIGV4 Y2hhbmdlX3N0YXRlLT5lX3BhY2tldCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBleGNoYW5nZV9zdGF0ZS0+ZV9wYWNrZXRfbGVu LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEws IDApOworICAgICAgICBpZiAocmMgPT0gTElCU1NIMl9FUlJPUl9FQUdBSU4p IHsKKyAgICAgICAgICAgIHJldHVybiByYzsKKyAgICAgICAgfSBlbHNlIGlm IChyYykgeworICAgICAgICAgICAgcmV0ID0gX2xpYnNzaDJfZXJyb3Ioc2Vz c2lvbiwgcmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi VW5hYmxlIHRvIHNlbmQgS0VYIGluaXQgbWVzc2FnZSIpOworICAgICAgICAg ICAgZ290byBjbGVhbl9leGl0OworICAgICAgICB9CisgICAgICAgIGV4Y2hh bmdlX3N0YXRlLT5zdGF0ZSA9IGxpYnNzaDJfTkJfc3RhdGVfc2VudDsKKyAg ICB9CisKKyAgICBpZiAoZXhjaGFuZ2Vfc3RhdGUtPnN0YXRlID09IGxpYnNz aDJfTkJfc3RhdGVfc2VudCkgeworICAgICAgICBpZiAoc2Vzc2lvbi0+YnVy bl9vcHRpbWlzdGljX2tleGluaXQpIHsKKyAgICAgICAgICAgIC8qIFRoZSBm aXJzdCBLRVggcGFja2V0IHRvIGNvbWUgYWxvbmcgd2lsbCBiZSB0aGUgZ3Vl c3MgaW5pdGlhbGx5CisgICAgICAgICAgICAgKiBzZW50IGJ5IHRoZSBzZXJ2 ZXIuICBUaGF0IGd1ZXNzIHR1cm5lZCBvdXQgdG8gYmUgd3Jvbmcgc28gd2UK KyAgICAgICAgICAgICAqIG5lZWQgdG8gc2lsZW50bHkgaWdub3JlIGl0ICov CisgICAgICAgICAgICBpbnQgYnVybl90eXBlOworCisgICAgICAgICAgICBf bGlic3NoMl9kZWJ1ZyhzZXNzaW9uLCBMSUJTU0gyX1RSQUNFX0tFWCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICJXYWl0aW5nIGZvciBiYWRseSBn dWVzc2VkIEtFWCBwYWNrZXQgKHRvIGJlIGlnbm9yZWQpIik7CisgICAgICAg ICAgICBidXJuX3R5cGUgPQorICAgICAgICAgICAgICAgIF9saWJzc2gyX3Bh Y2tldF9idXJuKHNlc3Npb24sICZleGNoYW5nZV9zdGF0ZS0+YnVybl9zdGF0 ZSk7CisgICAgICAgICAgICBpZiAoYnVybl90eXBlID09IExJQlNTSDJfRVJS T1JfRUFHQUlOKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGJ1cm5fdHlw ZTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoYnVybl90eXBlIDw9IDApIHsK KyAgICAgICAgICAgICAgICAvKiBGYWlsZWQgdG8gcmVjZWl2ZSBhIHBhY2tl dCAqLworICAgICAgICAgICAgICAgIHJldCA9IGJ1cm5fdHlwZTsKKyAgICAg ICAgICAgICAgICBnb3RvIGNsZWFuX2V4aXQ7CisgICAgICAgICAgICB9Cisg ICAgICAgICAgICBzZXNzaW9uLT5idXJuX29wdGltaXN0aWNfa2V4aW5pdCA9 IDA7CisKKyAgICAgICAgICAgIF9saWJzc2gyX2RlYnVnKHNlc3Npb24sIExJ QlNTSDJfVFJBQ0VfS0VYLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg IkJ1cm50IHBhY2tldCBvZiB0eXBlOiAlMDJ4IiwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICh1bnNpZ25lZCBpbnQpIGJ1cm5fdHlwZSk7CisgICAg ICAgIH0KKworICAgICAgICBleGNoYW5nZV9zdGF0ZS0+c3RhdGUgPSBsaWJz c2gyX05CX3N0YXRlX3NlbnQxOworICAgIH0KKworICAgIGlmIChleGNoYW5n ZV9zdGF0ZS0+c3RhdGUgPT0gbGlic3NoMl9OQl9zdGF0ZV9zZW50MSkgewor ICAgICAgICAvKiBXYWl0IGZvciBLRVggcmVwbHkgKi8KKyAgICAgICAgcmMg PSBfbGlic3NoMl9wYWNrZXRfcmVxdWlyZShzZXNzaW9uLCBwYWNrZXRfdHlw ZV9yZXBseSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmZXhjaGFuZ2Vfc3RhdGUtPnNfcGFja2V0LAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICZleGNoYW5nZV9zdGF0ZS0+c19wYWNr ZXRfbGVuLCAwLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDAsICZleGNoYW5nZV9zdGF0ZS0+cmVxX3N0YXRlKTsKKyAg ICAgICAgaWYgKHJjID09IExJQlNTSDJfRVJST1JfRUFHQUlOKSB7CisgICAg ICAgICAgICByZXR1cm4gcmM7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJj KSB7CisgICAgICAgICAgICByZXQgPSBfbGlic3NoMl9lcnJvcihzZXNzaW9u LCBMSUJTU0gyX0VSUk9SX1RJTUVPVVQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIEtFWCByZXBs eSIpOworICAgICAgICAgICAgZ290byBjbGVhbl9leGl0OworICAgICAgICB9 CisKKyAgICAgICAgLyogUGFyc2UgS0VYREhfUkVQTFkgKi8KKyAgICAgICAg ZXhjaGFuZ2Vfc3RhdGUtPnMgPSBleGNoYW5nZV9zdGF0ZS0+c19wYWNrZXQg KyAxOworCisgICAgICAgIHNlc3Npb24tPnNlcnZlcl9ob3N0a2V5X2xlbiA9 IF9saWJzc2gyX250b2h1MzIoZXhjaGFuZ2Vfc3RhdGUtPnMpOworICAgICAg ICBleGNoYW5nZV9zdGF0ZS0+cyArPSA0OworCisgICAgICAgIGlmIChzZXNz aW9uLT5zZXJ2ZXJfaG9zdGtleSkKKyAgICAgICAgICAgIExJQlNTSDJfRlJF RShzZXNzaW9uLCBzZXNzaW9uLT5zZXJ2ZXJfaG9zdGtleSk7CisKKyAgICAg ICAgc2Vzc2lvbi0+c2VydmVyX2hvc3RrZXkgPQorICAgICAgICAgICAgTElC U1NIMl9BTExPQyhzZXNzaW9uLCBzZXNzaW9uLT5zZXJ2ZXJfaG9zdGtleV9s ZW4pOworICAgICAgICBpZiAoIXNlc3Npb24tPnNlcnZlcl9ob3N0a2V5KSB7 CisgICAgICAgICAgICByZXQgPSBfbGlic3NoMl9lcnJvcihzZXNzaW9uLCBM SUJTU0gyX0VSUk9SX0FMTE9DLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIlVuYWJsZSB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIGEgY29w eSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib2YgdGhl IGhvc3Qga2V5Iik7CisgICAgICAgICAgICBnb3RvIGNsZWFuX2V4aXQ7Cisg ICAgICAgIH0KKyAgICAgICAgbWVtY3B5KHNlc3Npb24tPnNlcnZlcl9ob3N0 a2V5LCBleGNoYW5nZV9zdGF0ZS0+cywKKyAgICAgICAgICAgICAgIHNlc3Np b24tPnNlcnZlcl9ob3N0a2V5X2xlbik7CisgICAgICAgIGV4Y2hhbmdlX3N0 YXRlLT5zICs9IHNlc3Npb24tPnNlcnZlcl9ob3N0a2V5X2xlbjsKKworI2lm IExJQlNTSDJfTUQ1CisgICAgICAgIHsKKyAgICAgICAgICAgIGxpYnNzaDJf bWQ1X2N0eCBmaW5nZXJwcmludF9jdHg7CisKKyAgICAgICAgICAgIGlmIChs aWJzc2gyX21kNV9pbml0KCZmaW5nZXJwcmludF9jdHgpKSB7CisgICAgICAg ICAgICAgICAgbGlic3NoMl9tZDVfdXBkYXRlKGZpbmdlcnByaW50X2N0eCwg c2Vzc2lvbi0+c2VydmVyX2hvc3RrZXksCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNlc3Npb24tPnNlcnZlcl9ob3N0a2V5X2xlbik7 CisgICAgICAgICAgICAgICAgbGlic3NoMl9tZDVfZmluYWwoZmluZ2VycHJp bnRfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl c3Npb24tPnNlcnZlcl9ob3N0a2V5X21kNSk7CisgICAgICAgICAgICAgICAg c2Vzc2lvbi0+c2VydmVyX2hvc3RrZXlfbWQ1X3ZhbGlkID0gVFJVRTsKKyAg ICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg ICAgIHNlc3Npb24tPnNlcnZlcl9ob3N0a2V5X21kNV92YWxpZCA9IEZBTFNF OworICAgICAgICAgICAgfQorICAgICAgICB9CisjaWZkZWYgTElCU1NIMkRF QlVHCisgICAgICAgIHsKKyAgICAgICAgICAgIGNoYXIgZmluZ2VycHJpbnRb NTBdLCAqZnByaW50ID0gZmluZ2VycHJpbnQ7CisgICAgICAgICAgICBpbnQg aTsKKyAgICAgICAgICAgIGZvcihpID0gMDsgaSA8IDE2OyBpKyssIGZwcmlu dCArPSAzKSB7CisgICAgICAgICAgICAgICAgc25wcmludGYoZnByaW50LCA0 LCAiJTAyeDoiLCBzZXNzaW9uLT5zZXJ2ZXJfaG9zdGtleV9tZDVbaV0pOwor ICAgICAgICAgICAgfQorICAgICAgICAgICAgKigtLWZwcmludCkgPSAnXDAn OworICAgICAgICAgICAgX2xpYnNzaDJfZGVidWcoc2Vzc2lvbiwgTElCU1NI Ml9UUkFDRV9LRVgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2Vy dmVyJ3MgTUQ1IEZpbmdlcnByaW50OiAlcyIsIGZpbmdlcnByaW50KTsKKyAg ICAgICAgfQorI2VuZGlmIC8qIExJQlNTSDJERUJVRyAqLworI2VuZGlmIC8q ICEgTElCU1NIMl9NRDUgKi8KKworICAgICAgICB7CisgICAgICAgICAgICBs aWJzc2gyX3NoYTFfY3R4IGZpbmdlcnByaW50X2N0eDsKKworICAgICAgICAg ICAgaWYgKGxpYnNzaDJfc2hhMV9pbml0KCZmaW5nZXJwcmludF9jdHgpKSB7 CisgICAgICAgICAgICAgICAgbGlic3NoMl9zaGExX3VwZGF0ZShmaW5nZXJw cmludF9jdHgsIHNlc3Npb24tPnNlcnZlcl9ob3N0a2V5LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VydmVyX2hv c3RrZXlfbGVuKTsKKyAgICAgICAgICAgICAgICBsaWJzc2gyX3NoYTFfZmlu YWwoZmluZ2VycHJpbnRfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZXNzaW9uLT5zZXJ2ZXJfaG9zdGtleV9zaGExKTsKKyAg ICAgICAgICAgICAgICBzZXNzaW9uLT5zZXJ2ZXJfaG9zdGtleV9zaGExX3Zh bGlkID0gVFJVRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2Ug eworICAgICAgICAgICAgICAgIHNlc3Npb24tPnNlcnZlcl9ob3N0a2V5X3No YTFfdmFsaWQgPSBGQUxTRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor I2lmZGVmIExJQlNTSDJERUJVRworICAgICAgICB7CisgICAgICAgICAgICBj aGFyIGZpbmdlcnByaW50WzY0XSwgKmZwcmludCA9IGZpbmdlcnByaW50Owor ICAgICAgICAgICAgaW50IGk7CisKKyAgICAgICAgICAgIGZvcihpID0gMDsg aSA8IDIwOyBpKyssIGZwcmludCArPSAzKSB7CisgICAgICAgICAgICAgICAg c25wcmludGYoZnByaW50LCA0LCAiJTAyeDoiLCBzZXNzaW9uLT5zZXJ2ZXJf aG9zdGtleV9zaGExW2ldKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICooLS1mcHJpbnQpID0gJ1wwJzsKKyAgICAgICAgICAgIF9saWJzc2gyX2Rl YnVnKHNlc3Npb24sIExJQlNTSDJfVFJBQ0VfS0VYLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIlNlcnZlcidzIFNIQTEgRmluZ2VycHJpbnQ6ICVz IiwgZmluZ2VycHJpbnQpOworICAgICAgICB9CisjZW5kaWYgLyogTElCU1NI MkRFQlVHICovCisKKyAgICAgICAgaWYgKHNlc3Npb24tPmhvc3RrZXktPmlu aXQoc2Vzc2lvbiwgc2Vzc2lvbi0+c2VydmVyX2hvc3RrZXksCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnNlcnZlcl9o b3N0a2V5X2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJnNlc3Npb24tPnNlcnZlcl9ob3N0a2V5X2Fic3RyYWN0KSkgeworICAg ICAgICAgICAgcmV0ID0gX2xpYnNzaDJfZXJyb3Ioc2Vzc2lvbiwgTElCU1NI Ml9FUlJPUl9IT1NUS0VZX0lOSVQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiVW5hYmxlIHRvIGluaXRpYWxpemUgaG9zdGtleSBpbXBv cnRlciIpOworICAgICAgICAgICAgZ290byBjbGVhbl9leGl0OworICAgICAg ICB9CisKKyAgICAgICAgZXhjaGFuZ2Vfc3RhdGUtPmZfdmFsdWVfbGVuID0g X2xpYnNzaDJfbnRvaHUzMihleGNoYW5nZV9zdGF0ZS0+cyk7CisgICAgICAg IGV4Y2hhbmdlX3N0YXRlLT5zICs9IDQ7CisgICAgICAgIGV4Y2hhbmdlX3N0 YXRlLT5mX3ZhbHVlID0gZXhjaGFuZ2Vfc3RhdGUtPnM7CisgICAgICAgIGV4 Y2hhbmdlX3N0YXRlLT5zICs9IGV4Y2hhbmdlX3N0YXRlLT5mX3ZhbHVlX2xl bjsKKyAgICAgICAgX2xpYnNzaDJfYm5fZnJvbV9iaW4oZXhjaGFuZ2Vfc3Rh dGUtPmYsIGV4Y2hhbmdlX3N0YXRlLT5mX3ZhbHVlX2xlbiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZXhjaGFuZ2Vfc3RhdGUtPmZfdmFsdWUp OworCisgICAgICAgIGV4Y2hhbmdlX3N0YXRlLT5oX3NpZ19sZW4gPSBfbGli c3NoMl9udG9odTMyKGV4Y2hhbmdlX3N0YXRlLT5zKTsKKyAgICAgICAgZXhj aGFuZ2Vfc3RhdGUtPnMgKz0gNDsKKyAgICAgICAgZXhjaGFuZ2Vfc3RhdGUt Pmhfc2lnID0gZXhjaGFuZ2Vfc3RhdGUtPnM7CisKKyAgICAgICAgLyogQ29t cHV0ZSB0aGUgc2hhcmVkIHNlY3JldCAqLworICAgICAgICBfbGlic3NoMl9i bl9tb2RfZXhwKGV4Y2hhbmdlX3N0YXRlLT5rLCBleGNoYW5nZV9zdGF0ZS0+ ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNoYW5nZV9zdGF0 ZS0+eCwgcCwgZXhjaGFuZ2Vfc3RhdGUtPmN0eCk7CisgICAgICAgIGV4Y2hh bmdlX3N0YXRlLT5rX3ZhbHVlX2xlbiA9IF9saWJzc2gyX2JuX2J5dGVzKGV4 Y2hhbmdlX3N0YXRlLT5rKSArIDU7CisgICAgICAgIGlmIChfbGlic3NoMl9i bl9iaXRzKGV4Y2hhbmdlX3N0YXRlLT5rKSAlIDgpIHsKKyAgICAgICAgICAg IC8qIGRvbid0IG5lZWQgbGVhZGluZyAwMCAqLworICAgICAgICAgICAgZXhj aGFuZ2Vfc3RhdGUtPmtfdmFsdWVfbGVuLS07CisgICAgICAgIH0KKyAgICAg ICAgZXhjaGFuZ2Vfc3RhdGUtPmtfdmFsdWUgPQorICAgICAgICAgICAgTElC U1NIMl9BTExPQyhzZXNzaW9uLCBleGNoYW5nZV9zdGF0ZS0+a192YWx1ZV9s ZW4pOworICAgICAgICBpZiAoIWV4Y2hhbmdlX3N0YXRlLT5rX3ZhbHVlKSB7 CisgICAgICAgICAgICByZXQgPSBfbGlic3NoMl9lcnJvcihzZXNzaW9uLCBM SUJTU0gyX0VSUk9SX0FMTE9DLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIlVuYWJsZSB0byBhbGxvY2F0ZSBidWZmZXIgZm9yIEsiKTsK KyAgICAgICAgICAgIGdvdG8gY2xlYW5fZXhpdDsKKyAgICAgICAgfQorICAg ICAgICBfbGlic3NoMl9odG9udTMyKGV4Y2hhbmdlX3N0YXRlLT5rX3ZhbHVl LAorICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2hhbmdlX3N0YXRlLT5r X3ZhbHVlX2xlbiAtIDQpOworICAgICAgICBpZiAoX2xpYnNzaDJfYm5fYml0 cyhleGNoYW5nZV9zdGF0ZS0+aykgJSA4KSB7CisgICAgICAgICAgICBfbGli c3NoMl9ibl90b19iaW4oZXhjaGFuZ2Vfc3RhdGUtPmssIGV4Y2hhbmdlX3N0 YXRlLT5rX3ZhbHVlICsgNCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg ICAgICBleGNoYW5nZV9zdGF0ZS0+a192YWx1ZVs0XSA9IDA7CisgICAgICAg ICAgICBfbGlic3NoMl9ibl90b19iaW4oZXhjaGFuZ2Vfc3RhdGUtPmssIGV4 Y2hhbmdlX3N0YXRlLT5rX3ZhbHVlICsgNSk7CisgICAgICAgIH0KKworICAg ICAgICBleGNoYW5nZV9zdGF0ZS0+ZXhjaGFuZ2VfaGFzaCA9ICh2b2lkKikm ZXhjaGFuZ2VfaGFzaF9jdHg7CisgICAgICAgIGxpYnNzaDJfc2hhMV9pbml0 KCZleGNoYW5nZV9oYXNoX2N0eCk7CisKKyAgICAgICAgaWYgKHNlc3Npb24t PmxvY2FsLmJhbm5lcikgeworICAgICAgICAgICAgX2xpYnNzaDJfaHRvbnUz MihleGNoYW5nZV9zdGF0ZS0+aF9zaWdfY29tcCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RybGVuKChjaGFyICopIHNlc3Npb24tPmxvY2Fs LmJhbm5lcikgLSAyKTsKKyAgICAgICAgICAgIGxpYnNzaDJfc2hhMV91cGRh dGUoZXhjaGFuZ2VfaGFzaF9jdHgsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGV4Y2hhbmdlX3N0YXRlLT5oX3NpZ19jb21wLCA0KTsKKyAg ICAgICAgICAgIGxpYnNzaDJfc2hhMV91cGRhdGUoZXhjaGFuZ2VfaGFzaF9j dHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICop IHNlc3Npb24tPmxvY2FsLmJhbm5lciwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RybGVuKChjaGFyICopIHNlc3Npb24tPmxvY2FsLmJh bm5lcikgLSAyKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIF9s aWJzc2gyX2h0b251MzIoZXhjaGFuZ2Vfc3RhdGUtPmhfc2lnX2NvbXAsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihMSUJTU0gyX1NT SF9ERUZBVUxUX0JBTk5FUikgLSAxKTsKKyAgICAgICAgICAgIGxpYnNzaDJf c2hhMV91cGRhdGUoZXhjaGFuZ2VfaGFzaF9jdHgsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGV4Y2hhbmdlX3N0YXRlLT5oX3NpZ19jb21w LCA0KTsKKyAgICAgICAgICAgIGxpYnNzaDJfc2hhMV91cGRhdGUoZXhjaGFu Z2VfaGFzaF9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IExJQlNTSDJfU1NIX0RFRkFVTFRfQkFOTkVSLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzaXplb2YoTElCU1NIMl9TU0hfREVGQVVMVF9C QU5ORVIpIC0gMSk7CisgICAgICAgIH0KKworICAgICAgICBfbGlic3NoMl9o dG9udTMyKGV4Y2hhbmdlX3N0YXRlLT5oX3NpZ19jb21wLAorICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cmxlbigoY2hhciAqKSBzZXNzaW9uLT5yZW1v dGUuYmFubmVyKSk7CisgICAgICAgIGxpYnNzaDJfc2hhMV91cGRhdGUoZXhj aGFuZ2VfaGFzaF9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZXhjaGFuZ2Vfc3RhdGUtPmhfc2lnX2NvbXAsIDQpOworICAgICAgICBsaWJz c2gyX3NoYTFfdXBkYXRlKGV4Y2hhbmdlX2hhc2hfY3R4LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnJlbW90ZS5iYW5uZXIsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKChjaGFyICopIHNl c3Npb24tPnJlbW90ZS5iYW5uZXIpKTsKKworICAgICAgICBfbGlic3NoMl9o dG9udTMyKGV4Y2hhbmdlX3N0YXRlLT5oX3NpZ19jb21wLAorICAgICAgICAg ICAgICAgICAgICAgICAgIHNlc3Npb24tPmxvY2FsLmtleGluaXRfbGVuKTsK KyAgICAgICAgbGlic3NoMl9zaGExX3VwZGF0ZShleGNoYW5nZV9oYXNoX2N0 eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNoYW5nZV9zdGF0 ZS0+aF9zaWdfY29tcCwgNCk7CisgICAgICAgIGxpYnNzaDJfc2hhMV91cGRh dGUoZXhjaGFuZ2VfaGFzaF9jdHgsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2Vzc2lvbi0+bG9jYWwua2V4aW5pdCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZXNzaW9uLT5sb2NhbC5rZXhpbml0X2xlbik7CisK KyAgICAgICAgX2xpYnNzaDJfaHRvbnUzMihleGNoYW5nZV9zdGF0ZS0+aF9z aWdfY29tcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5y ZW1vdGUua2V4aW5pdF9sZW4pOworICAgICAgICBsaWJzc2gyX3NoYTFfdXBk YXRlKGV4Y2hhbmdlX2hhc2hfY3R4LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGV4Y2hhbmdlX3N0YXRlLT5oX3NpZ19jb21wLCA0KTsKKyAgICAg ICAgbGlic3NoMl9zaGExX3VwZGF0ZShleGNoYW5nZV9oYXNoX2N0eCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5yZW1vdGUua2V4 aW5pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5y ZW1vdGUua2V4aW5pdF9sZW4pOworCisgICAgICAgIF9saWJzc2gyX2h0b251 MzIoZXhjaGFuZ2Vfc3RhdGUtPmhfc2lnX2NvbXAsCisgICAgICAgICAgICAg ICAgICAgICAgICAgc2Vzc2lvbi0+c2VydmVyX2hvc3RrZXlfbGVuKTsKKyAg ICAgICAgbGlic3NoMl9zaGExX3VwZGF0ZShleGNoYW5nZV9oYXNoX2N0eCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNoYW5nZV9zdGF0ZS0+ aF9zaWdfY29tcCwgNCk7CisgICAgICAgIGxpYnNzaDJfc2hhMV91cGRhdGUo ZXhjaGFuZ2VfaGFzaF9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2Vzc2lvbi0+c2VydmVyX2hvc3RrZXksCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2Vzc2lvbi0+c2VydmVyX2hvc3RrZXlfbGVuKTsKKwor ICAgICAgICBpZiAocGFja2V0X3R5cGVfaW5pdCA9PSBTU0hfTVNHX0tFWF9E SF9HRVhfSU5JVCkgeworICAgICAgICAgICAgLyogZGlmZmllLWhlbGxtYW4t Z3JvdXAtZXhjaGFuZ2UgaGFzaGVzIGFkZGl0aW9uYWwgZmllbGRzICovCisj aWZkZWYgTElCU1NIMl9ESF9HRVhfTkVXCisgICAgICAgICAgICBfbGlic3No Ml9odG9udTMyKGV4Y2hhbmdlX3N0YXRlLT5oX3NpZ19jb21wLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBMSUJTU0gyX0RIX0dFWF9NSU5HUk9V UCk7CisgICAgICAgICAgICBfbGlic3NoMl9odG9udTMyKGV4Y2hhbmdlX3N0 YXRlLT5oX3NpZ19jb21wICsgNCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTElCU1NIMl9ESF9HRVhfT1BUR1JPVVApOworICAgICAgICAgICAg X2xpYnNzaDJfaHRvbnUzMihleGNoYW5nZV9zdGF0ZS0+aF9zaWdfY29tcCAr IDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlNTSDJfREhf R0VYX01BWEdST1VQKTsKKyAgICAgICAgICAgIGxpYnNzaDJfc2hhMV91cGRh dGUoZXhjaGFuZ2VfaGFzaF9jdHgsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGV4Y2hhbmdlX3N0YXRlLT5oX3NpZ19jb21wLCAxMik7Cisj ZWxzZQorICAgICAgICAgICAgX2xpYnNzaDJfaHRvbnUzMihleGNoYW5nZV9z dGF0ZS0+aF9zaWdfY29tcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTElCU1NIMl9ESF9HRVhfT1BUR1JPVVApOworICAgICAgICAgICAgbGli c3NoMl9zaGExX3VwZGF0ZShleGNoYW5nZV9oYXNoX2N0eCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZXhjaGFuZ2Vfc3RhdGUtPmhfc2ln X2NvbXAsIDQpOworI2VuZGlmCisgICAgICAgIH0KKworICAgICAgICBpZiAo bWlkaGFzaCkgeworICAgICAgICAgICAgbGlic3NoMl9zaGExX3VwZGF0ZShl eGNoYW5nZV9oYXNoX2N0eCwgbWlkaGFzaCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbWlkaGFzaF9sZW4pOworICAgICAgICB9CisKKyAg ICAgICAgbGlic3NoMl9zaGExX3VwZGF0ZShleGNoYW5nZV9oYXNoX2N0eCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNoYW5nZV9zdGF0ZS0+ ZV9wYWNrZXQgKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4 Y2hhbmdlX3N0YXRlLT5lX3BhY2tldF9sZW4gLSAxKTsKKworICAgICAgICBf bGlic3NoMl9odG9udTMyKGV4Y2hhbmdlX3N0YXRlLT5oX3NpZ19jb21wLAor ICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2hhbmdlX3N0YXRlLT5mX3Zh bHVlX2xlbik7CisgICAgICAgIGxpYnNzaDJfc2hhMV91cGRhdGUoZXhjaGFu Z2VfaGFzaF9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhj aGFuZ2Vfc3RhdGUtPmhfc2lnX2NvbXAsIDQpOworICAgICAgICBsaWJzc2gy X3NoYTFfdXBkYXRlKGV4Y2hhbmdlX2hhc2hfY3R4LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGV4Y2hhbmdlX3N0YXRlLT5mX3ZhbHVlLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2hhbmdlX3N0YXRlLT5mX3Zh bHVlX2xlbik7CisKKyAgICAgICAgbGlic3NoMl9zaGExX3VwZGF0ZShleGNo YW5nZV9oYXNoX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBl eGNoYW5nZV9zdGF0ZS0+a192YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBleGNoYW5nZV9zdGF0ZS0+a192YWx1ZV9sZW4pOworCisgICAg ICAgIGxpYnNzaDJfc2hhMV9maW5hbChleGNoYW5nZV9oYXNoX2N0eCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2hhbmdlX3N0YXRlLT5oX3Np Z19jb21wKTsKKworICAgICAgICBpZiAoc2Vzc2lvbi0+aG9zdGtleS0+Cisg ICAgICAgICAgICBzaWdfdmVyaWZ5KHNlc3Npb24sIGV4Y2hhbmdlX3N0YXRl LT5oX3NpZywKKyAgICAgICAgICAgICAgICAgICAgICAgZXhjaGFuZ2Vfc3Rh dGUtPmhfc2lnX2xlbiwgZXhjaGFuZ2Vfc3RhdGUtPmhfc2lnX2NvbXAsCisg ICAgICAgICAgICAgICAgICAgICAgIDIwLCAmc2Vzc2lvbi0+c2VydmVyX2hv c3RrZXlfYWJzdHJhY3QpKSB7CisgICAgICAgICAgICByZXQgPSBfbGlic3No Ml9lcnJvcihzZXNzaW9uLCBMSUJTU0gyX0VSUk9SX0hPU1RLRVlfU0lHTiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmFibGUgdG8g dmVyaWZ5IGhvc3RrZXkgc2lnbmF0dXJlIik7CisgICAgICAgICAgICBnb3Rv IGNsZWFuX2V4aXQ7CisgICAgICAgIH0KKworICAgICAgICBfbGlic3NoMl9k ZWJ1ZyhzZXNzaW9uLCBMSUJTU0gyX1RSQUNFX0tFWCwgIlNlbmRpbmcgTkVX S0VZUyBtZXNzYWdlIik7CisgICAgICAgIGV4Y2hhbmdlX3N0YXRlLT5jID0g U1NIX01TR19ORVdLRVlTOworCisgICAgICAgIGV4Y2hhbmdlX3N0YXRlLT5z dGF0ZSA9IGxpYnNzaDJfTkJfc3RhdGVfc2VudDI7CisgICAgfQorCisgICAg aWYgKGV4Y2hhbmdlX3N0YXRlLT5zdGF0ZSA9PSBsaWJzc2gyX05CX3N0YXRl X3NlbnQyKSB7CisgICAgICAgIHJjID0gX2xpYnNzaDJfdHJhbnNwb3J0X3Nl bmQoc2Vzc2lvbiwgJmV4Y2hhbmdlX3N0YXRlLT5jLCAxLCBOVUxMLCAwKTsK KyAgICAgICAgaWYgKHJjID09IExJQlNTSDJfRVJST1JfRUFHQUlOKSB7Cisg ICAgICAgICAgICByZXR1cm4gcmM7CisgICAgICAgIH0gZWxzZSBpZiAocmMp IHsKKyAgICAgICAgICAgIHJldCA9IF9saWJzc2gyX2Vycm9yKHNlc3Npb24s IHJjLCAiVW5hYmxlIHRvIHNlbmQgTkVXS0VZUyBtZXNzYWdlIik7CisgICAg ICAgICAgICBnb3RvIGNsZWFuX2V4aXQ7CisgICAgICAgIH0KKworICAgICAg ICBleGNoYW5nZV9zdGF0ZS0+c3RhdGUgPSBsaWJzc2gyX05CX3N0YXRlX3Nl bnQzOworICAgIH0KKworICAgIGlmIChleGNoYW5nZV9zdGF0ZS0+c3RhdGUg PT0gbGlic3NoMl9OQl9zdGF0ZV9zZW50MykgeworICAgICAgICByYyA9IF9s aWJzc2gyX3BhY2tldF9yZXF1aXJlKHNlc3Npb24sIFNTSF9NU0dfTkVXS0VZ UywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXhj aGFuZ2Vfc3RhdGUtPnRtcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmZXhjaGFuZ2Vfc3RhdGUtPnRtcF9sZW4sIDAsIE5VTEws IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmV4 Y2hhbmdlX3N0YXRlLT5yZXFfc3RhdGUpOworICAgICAgICBpZiAocmMgPT0g TElCU1NIMl9FUlJPUl9FQUdBSU4pIHsKKyAgICAgICAgICAgIHJldHVybiBy YzsKKyAgICAgICAgfSBlbHNlIGlmIChyYykgeworICAgICAgICAgICAgcmV0 ID0gX2xpYnNzaDJfZXJyb3Ioc2Vzc2lvbiwgcmMsICJUaW1lZCBvdXQgd2Fp dGluZyBmb3IgTkVXS0VZUyIpOworICAgICAgICAgICAgZ290byBjbGVhbl9l eGl0OworICAgICAgICB9CisgICAgICAgIC8qIFRoZSBmaXJzdCBrZXkgZXhj aGFuZ2UgaGFzIGJlZW4gcGVyZm9ybWVkLAorICAgICAgICAgICBzd2l0Y2gg dG8gYWN0aXZlIGNyeXB0L2NvbXAvbWFjIG1vZGUgKi8KKyAgICAgICAgc2Vz c2lvbi0+c3RhdGUgfD0gTElCU1NIMl9TVEFURV9ORVdLRVlTOworICAgICAg ICBfbGlic3NoMl9kZWJ1ZyhzZXNzaW9uLCBMSUJTU0gyX1RSQUNFX0tFWCwg IlJlY2VpdmVkIE5FV0tFWVMgbWVzc2FnZSIpOworCisgICAgICAgIC8qIFRo aXMgd2lsbCBhY3R1YWxseSBlbmQgdXAgYmVpbmcganVzdCBwYWNrZXRfdHlw ZSgxKQorICAgICAgICAgICBmb3IgdGhpcyBwYWNrZXQgdHlwZSBhbnl3YXkg Ki8KKyAgICAgICAgTElCU1NIMl9GUkVFKHNlc3Npb24sIGV4Y2hhbmdlX3N0 YXRlLT50bXApOworCisgICAgICAgIGlmICghc2Vzc2lvbi0+c2Vzc2lvbl9p ZCkgeworICAgICAgICAgICAgc2Vzc2lvbi0+c2Vzc2lvbl9pZCA9IExJQlNT SDJfQUxMT0Moc2Vzc2lvbiwgU0hBX0RJR0VTVF9MRU5HVEgpOworICAgICAg ICAgICAgaWYgKCFzZXNzaW9uLT5zZXNzaW9uX2lkKSB7CisgICAgICAgICAg ICAgICAgcmV0ID0gX2xpYnNzaDJfZXJyb3Ioc2Vzc2lvbiwgTElCU1NIMl9F UlJPUl9BTExPQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiVW5hYmxlIHRvIGFsbG9jYXRlIGJ1ZmZlciBmb3IgU0hBIGRpZ2Vz dCIpOworICAgICAgICAgICAgICAgIGdvdG8gY2xlYW5fZXhpdDsKKyAgICAg ICAgICAgIH0KKyAgICAgICAgICAgIG1lbWNweShzZXNzaW9uLT5zZXNzaW9u X2lkLCBleGNoYW5nZV9zdGF0ZS0+aF9zaWdfY29tcCwKKyAgICAgICAgICAg ICAgICAgICBTSEFfRElHRVNUX0xFTkdUSCk7CisgICAgICAgICAgICBzZXNz aW9uLT5zZXNzaW9uX2lkX2xlbiA9IFNIQV9ESUdFU1RfTEVOR1RIOworICAg ICAgICAgICAgX2xpYnNzaDJfZGVidWcoc2Vzc2lvbiwgTElCU1NIMl9UUkFD RV9LRVgsICJzZXNzaW9uX2lkIGNhbGN1bGF0ZWQiKTsKKyAgICAgICAgfQor CisgICAgICAgIC8qIENsZWFudXAgYW55IGV4aXN0aW5nIGNpcGhlciAqLwor ICAgICAgICBpZiAoc2Vzc2lvbi0+bG9jYWwuY3J5cHQtPmR0b3IpIHsKKyAg ICAgICAgICAgIHNlc3Npb24tPmxvY2FsLmNyeXB0LT5kdG9yKHNlc3Npb24s CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2Vz c2lvbi0+bG9jYWwuY3J5cHRfYWJzdHJhY3QpOworICAgICAgICB9CisKKyAg ICAgICAgLyogQ2FsY3VsYXRlIElWL1NlY3JldC9LZXkgZm9yIGVhY2ggZGly ZWN0aW9uICovCisgICAgICAgIGlmIChzZXNzaW9uLT5sb2NhbC5jcnlwdC0+ aW5pdCkgeworICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqaXYgPSBOVUxM LCAqc2VjcmV0ID0gTlVMTDsKKyAgICAgICAgICAgIGludCBmcmVlX2l2ID0g MCwgZnJlZV9zZWNyZXQgPSAwOworCisgICAgICAgICAgICBMSUJTU0gyX0tF WF9NRVRIT0RfRElGRklFX0hFTExNQU5fU0hBMV9IQVNIKGl2LAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZXNzaW9uLT5sb2NhbC5jcnlwdC0+CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl2X2xl biwgIkEiKTsKKyAgICAgICAgICAgIGlmICghaXYpIHsKKyAgICAgICAgICAg ICAgICByZXQgPSAtMTsKKyAgICAgICAgICAgICAgICBnb3RvIGNsZWFuX2V4 aXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBMSUJTU0gyX0tFWF9N RVRIT0RfRElGRklFX0hFTExNQU5fU0hBMV9IQVNIKHNlY3JldCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2Vzc2lvbi0+bG9jYWwuY3J5cHQtPgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNy ZXRfbGVuLCAiQyIpOworICAgICAgICAgICAgaWYgKCFzZWNyZXQpIHsKKyAg ICAgICAgICAgICAgICBMSUJTU0gyX0ZSRUUoc2Vzc2lvbiwgaXYpOworICAg ICAgICAgICAgICAgIHJldCA9IExJQlNTSDJfRVJST1JfS0VYX0ZBSUxVUkU7 CisgICAgICAgICAgICAgICAgZ290byBjbGVhbl9leGl0OworICAgICAgICAg ICAgfQorICAgICAgICAgICAgaWYgKHNlc3Npb24tPmxvY2FsLmNyeXB0LT4K KyAgICAgICAgICAgICAgICBpbml0KHNlc3Npb24sIHNlc3Npb24tPmxvY2Fs LmNyeXB0LCBpdiwgJmZyZWVfaXYsIHNlY3JldCwKKyAgICAgICAgICAgICAg ICAgICAgICZmcmVlX3NlY3JldCwgMSwgJnNlc3Npb24tPmxvY2FsLmNyeXB0 X2Fic3RyYWN0KSkgeworICAgICAgICAgICAgICAgIExJQlNTSDJfRlJFRShz ZXNzaW9uLCBpdik7CisgICAgICAgICAgICAgICAgTElCU1NIMl9GUkVFKHNl c3Npb24sIHNlY3JldCk7CisgICAgICAgICAgICAgICAgcmV0ID0gTElCU1NI Ml9FUlJPUl9LRVhfRkFJTFVSRTsKKyAgICAgICAgICAgICAgICBnb3RvIGNs ZWFuX2V4aXQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChm cmVlX2l2KSB7CisgICAgICAgICAgICAgICAgbWVtc2V0KGl2LCAwLCBzZXNz aW9uLT5sb2NhbC5jcnlwdC0+aXZfbGVuKTsKKyAgICAgICAgICAgICAgICBM SUJTU0gyX0ZSRUUoc2Vzc2lvbiwgaXYpOworICAgICAgICAgICAgfQorCisg ICAgICAgICAgICBpZiAoZnJlZV9zZWNyZXQpIHsKKyAgICAgICAgICAgICAg ICBtZW1zZXQoc2VjcmV0LCAwLCBzZXNzaW9uLT5sb2NhbC5jcnlwdC0+c2Vj cmV0X2xlbik7CisgICAgICAgICAgICAgICAgTElCU1NIMl9GUkVFKHNlc3Np b24sIHNlY3JldCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg ICAgX2xpYnNzaDJfZGVidWcoc2Vzc2lvbiwgTElCU1NIMl9UUkFDRV9LRVgs CisgICAgICAgICAgICAgICAgICAgICAgICJDbGllbnQgdG8gU2VydmVyIElW IGFuZCBLZXkgY2FsY3VsYXRlZCIpOworCisgICAgICAgIGlmIChzZXNzaW9u LT5yZW1vdGUuY3J5cHQtPmR0b3IpIHsKKyAgICAgICAgICAgIC8qIENsZWFu dXAgYW55IGV4aXN0aW5nIGNpcGhlciAqLworICAgICAgICAgICAgc2Vzc2lv bi0+cmVtb3RlLmNyeXB0LT5kdG9yKHNlc3Npb24sCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNlc3Npb24tPnJlbW90ZS5j cnlwdF9hYnN0cmFjdCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2Vz c2lvbi0+cmVtb3RlLmNyeXB0LT5pbml0KSB7CisgICAgICAgICAgICB1bnNp Z25lZCBjaGFyICppdiA9IE5VTEwsICpzZWNyZXQgPSBOVUxMOworICAgICAg ICAgICAgaW50IGZyZWVfaXYgPSAwLCBmcmVlX3NlY3JldCA9IDA7CisKKyAg ICAgICAgICAgIExJQlNTSDJfS0VYX01FVEhPRF9ESUZGSUVfSEVMTE1BTl9T SEExX0hBU0goaXYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnJlbW90ZS5jcnlw dC0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGl2X2xlbiwgIkIiKTsKKyAgICAgICAgICAgIGlm ICghaXYpIHsKKyAgICAgICAgICAgICAgICByZXQgPSBMSUJTU0gyX0VSUk9S X0tFWF9GQUlMVVJFOworICAgICAgICAgICAgICAgIGdvdG8gY2xlYW5fZXhp dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIExJQlNTSDJfS0VYX01F VEhPRF9ESUZGSUVfSEVMTE1BTl9TSEExX0hBU0goc2VjcmV0LAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZXNzaW9uLT5yZW1vdGUuY3J5cHQtPgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNy ZXRfbGVuLCAiRCIpOworICAgICAgICAgICAgaWYgKCFzZWNyZXQpIHsKKyAg ICAgICAgICAgICAgICBMSUJTU0gyX0ZSRUUoc2Vzc2lvbiwgaXYpOworICAg ICAgICAgICAgICAgIHJldCA9IExJQlNTSDJfRVJST1JfS0VYX0ZBSUxVUkU7 CisgICAgICAgICAgICAgICAgZ290byBjbGVhbl9leGl0OworICAgICAgICAg ICAgfQorICAgICAgICAgICAgaWYgKHNlc3Npb24tPnJlbW90ZS5jcnlwdC0+ CisgICAgICAgICAgICAgICAgaW5pdChzZXNzaW9uLCBzZXNzaW9uLT5yZW1v dGUuY3J5cHQsIGl2LCAmZnJlZV9pdiwgc2VjcmV0LAorICAgICAgICAgICAg ICAgICAgICAgJmZyZWVfc2VjcmV0LCAwLCAmc2Vzc2lvbi0+cmVtb3RlLmNy eXB0X2Fic3RyYWN0KSkgeworICAgICAgICAgICAgICAgIExJQlNTSDJfRlJF RShzZXNzaW9uLCBpdik7CisgICAgICAgICAgICAgICAgTElCU1NIMl9GUkVF KHNlc3Npb24sIHNlY3JldCk7CisgICAgICAgICAgICAgICAgcmV0ID0gTElC U1NIMl9FUlJPUl9LRVhfRkFJTFVSRTsKKyAgICAgICAgICAgICAgICBnb3Rv IGNsZWFuX2V4aXQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm IChmcmVlX2l2KSB7CisgICAgICAgICAgICAgICAgbWVtc2V0KGl2LCAwLCBz ZXNzaW9uLT5yZW1vdGUuY3J5cHQtPml2X2xlbik7CisgICAgICAgICAgICAg ICAgTElCU1NIMl9GUkVFKHNlc3Npb24sIGl2KTsKKyAgICAgICAgICAgIH0K KworICAgICAgICAgICAgaWYgKGZyZWVfc2VjcmV0KSB7CisgICAgICAgICAg ICAgICAgbWVtc2V0KHNlY3JldCwgMCwgc2Vzc2lvbi0+cmVtb3RlLmNyeXB0 LT5zZWNyZXRfbGVuKTsKKyAgICAgICAgICAgICAgICBMSUJTU0gyX0ZSRUUo c2Vzc2lvbiwgc2VjcmV0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor ICAgICAgICBfbGlic3NoMl9kZWJ1ZyhzZXNzaW9uLCBMSUJTU0gyX1RSQUNF X0tFWCwKKyAgICAgICAgICAgICAgICAgICAgICAgIlNlcnZlciB0byBDbGll bnQgSVYgYW5kIEtleSBjYWxjdWxhdGVkIik7CisKKyAgICAgICAgaWYgKHNl c3Npb24tPmxvY2FsLm1hYy0+ZHRvcikgeworICAgICAgICAgICAgc2Vzc2lv bi0+bG9jYWwubWFjLT5kdG9yKHNlc3Npb24sICZzZXNzaW9uLT5sb2NhbC5t YWNfYWJzdHJhY3QpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHNlc3Np b24tPmxvY2FsLm1hYy0+aW5pdCkgeworICAgICAgICAgICAgdW5zaWduZWQg Y2hhciAqa2V5ID0gTlVMTDsKKyAgICAgICAgICAgIGludCBmcmVlX2tleSA9 IDA7CisKKyAgICAgICAgICAgIExJQlNTSDJfS0VYX01FVEhPRF9ESUZGSUVf SEVMTE1BTl9TSEExX0hBU0goa2V5LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5s b2NhbC5tYWMtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBrZXlfbGVuLCAiRSIpOworICAgICAg ICAgICAgaWYgKCFrZXkpIHsKKyAgICAgICAgICAgICAgICByZXQgPSBMSUJT U0gyX0VSUk9SX0tFWF9GQUlMVVJFOworICAgICAgICAgICAgICAgIGdvdG8g Y2xlYW5fZXhpdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNlc3Np b24tPmxvY2FsLm1hYy0+aW5pdChzZXNzaW9uLCBrZXksICZmcmVlX2tleSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2Vzc2lv bi0+bG9jYWwubWFjX2Fic3RyYWN0KTsKKworICAgICAgICAgICAgaWYgKGZy ZWVfa2V5KSB7CisgICAgICAgICAgICAgICAgbWVtc2V0KGtleSwgMCwgc2Vz c2lvbi0+bG9jYWwubWFjLT5rZXlfbGVuKTsKKyAgICAgICAgICAgICAgICBM SUJTU0gyX0ZSRUUoc2Vzc2lvbiwga2V5KTsKKyAgICAgICAgICAgIH0KKyAg ICAgICAgfQorICAgICAgICBfbGlic3NoMl9kZWJ1ZyhzZXNzaW9uLCBMSUJT U0gyX1RSQUNFX0tFWCwKKyAgICAgICAgICAgICAgICAgICAgICAgIkNsaWVu dCB0byBTZXJ2ZXIgSE1BQyBLZXkgY2FsY3VsYXRlZCIpOworCisgICAgICAg IGlmIChzZXNzaW9uLT5yZW1vdGUubWFjLT5kdG9yKSB7CisgICAgICAgICAg ICBzZXNzaW9uLT5yZW1vdGUubWFjLT5kdG9yKHNlc3Npb24sICZzZXNzaW9u LT5yZW1vdGUubWFjX2Fic3RyYWN0KTsKKyAgICAgICAgfQorCisgICAgICAg IGlmIChzZXNzaW9uLT5yZW1vdGUubWFjLT5pbml0KSB7CisgICAgICAgICAg ICB1bnNpZ25lZCBjaGFyICprZXkgPSBOVUxMOworICAgICAgICAgICAgaW50 IGZyZWVfa2V5ID0gMDsKKworICAgICAgICAgICAgTElCU1NIMl9LRVhfTUVU SE9EX0RJRkZJRV9IRUxMTUFOX1NIQTFfSEFTSChrZXksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNlc3Npb24tPnJlbW90ZS5tYWMtPgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlfbGVuLCAi RiIpOworICAgICAgICAgICAgaWYgKCFrZXkpIHsKKyAgICAgICAgICAgICAg ICByZXQgPSBMSUJTU0gyX0VSUk9SX0tFWF9GQUlMVVJFOworICAgICAgICAg ICAgICAgIGdvdG8gY2xlYW5fZXhpdDsKKyAgICAgICAgICAgIH0KKyAgICAg ICAgICAgIHNlc3Npb24tPnJlbW90ZS5tYWMtPmluaXQoc2Vzc2lvbiwga2V5 LCAmZnJlZV9rZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICZzZXNzaW9uLT5yZW1vdGUubWFjX2Fic3RyYWN0KTsKKworICAg ICAgICAgICAgaWYgKGZyZWVfa2V5KSB7CisgICAgICAgICAgICAgICAgbWVt c2V0KGtleSwgMCwgc2Vzc2lvbi0+cmVtb3RlLm1hYy0+a2V5X2xlbik7Cisg ICAgICAgICAgICAgICAgTElCU1NIMl9GUkVFKHNlc3Npb24sIGtleSk7Cisg ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgX2xpYnNzaDJfZGVi dWcoc2Vzc2lvbiwgTElCU1NIMl9UUkFDRV9LRVgsCisgICAgICAgICAgICAg ICAgICAgICAgICJTZXJ2ZXIgdG8gQ2xpZW50IEhNQUMgS2V5IGNhbGN1bGF0 ZWQiKTsKKworICAgICAgICAvKiBJbml0aWFsaXplIGNvbXByZXNzaW9uIGZv ciBlYWNoIGRpcmVjdGlvbiAqLworCisgICAgICAgIC8qIENsZWFudXAgYW55 IGV4aXN0aW5nIGNvbXByZXNzaW9uICovCisgICAgICAgIGlmIChzZXNzaW9u LT5sb2NhbC5jb21wICYmIHNlc3Npb24tPmxvY2FsLmNvbXAtPmR0b3IpIHsK KyAgICAgICAgICAgIHNlc3Npb24tPmxvY2FsLmNvbXAtPmR0b3Ioc2Vzc2lv biwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JnNlc3Npb24tPmxvY2FsLmNvbXBfYWJzdHJhY3QpOworICAgICAgICB9CisK KyAgICAgICAgaWYgKHNlc3Npb24tPmxvY2FsLmNvbXAgJiYgc2Vzc2lvbi0+ bG9jYWwuY29tcC0+aW5pdCkgeworICAgICAgICAgICAgaWYgKHNlc3Npb24t PmxvY2FsLmNvbXAtPmluaXQoc2Vzc2lvbiwgMSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzZXNzaW9uLT5sb2NhbC5j b21wX2Fic3RyYWN0KSkgeworICAgICAgICAgICAgICAgIHJldCA9IExJQlNT SDJfRVJST1JfS0VYX0ZBSUxVUkU7CisgICAgICAgICAgICAgICAgZ290byBj bGVhbl9leGl0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg IF9saWJzc2gyX2RlYnVnKHNlc3Npb24sIExJQlNTSDJfVFJBQ0VfS0VYLAor ICAgICAgICAgICAgICAgICAgICAgICAiQ2xpZW50IHRvIFNlcnZlciBjb21w cmVzc2lvbiBpbml0aWFsaXplZCIpOworCisgICAgICAgIGlmIChzZXNzaW9u LT5yZW1vdGUuY29tcCAmJiBzZXNzaW9uLT5yZW1vdGUuY29tcC0+ZHRvcikg eworICAgICAgICAgICAgc2Vzc2lvbi0+cmVtb3RlLmNvbXAtPmR0b3Ioc2Vz c2lvbiwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZzZXNzaW9uLT5yZW1vdGUuY29tcF9hYnN0cmFjdCk7CisgICAgICAg IH0KKworICAgICAgICBpZiAoc2Vzc2lvbi0+cmVtb3RlLmNvbXAgJiYgc2Vz c2lvbi0+cmVtb3RlLmNvbXAtPmluaXQpIHsKKyAgICAgICAgICAgIGlmIChz ZXNzaW9uLT5yZW1vdGUuY29tcC0+aW5pdChzZXNzaW9uLCAwLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzZXNzaW9u LT5yZW1vdGUuY29tcF9hYnN0cmFjdCkpIHsKKyAgICAgICAgICAgICAgICBy ZXQgPSBMSUJTU0gyX0VSUk9SX0tFWF9GQUlMVVJFOworICAgICAgICAgICAg ICAgIGdvdG8gY2xlYW5fZXhpdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg fQorICAgICAgICBfbGlic3NoMl9kZWJ1ZyhzZXNzaW9uLCBMSUJTU0gyX1RS QUNFX0tFWCwKKyAgICAgICAgICAgICAgICAgICAgICAgIlNlcnZlciB0byBD bGllbnQgY29tcHJlc3Npb24gaW5pdGlhbGl6ZWQiKTsKKworICAgIH0KKwor ICBjbGVhbl9leGl0OgorICAgIF9saWJzc2gyX2JuX2ZyZWUoZXhjaGFuZ2Vf c3RhdGUtPngpOworICAgIGV4Y2hhbmdlX3N0YXRlLT54ID0gTlVMTDsKKyAg ICBfbGlic3NoMl9ibl9mcmVlKGV4Y2hhbmdlX3N0YXRlLT5lKTsKKyAgICBl eGNoYW5nZV9zdGF0ZS0+ZSA9IE5VTEw7CisgICAgX2xpYnNzaDJfYm5fZnJl ZShleGNoYW5nZV9zdGF0ZS0+Zik7CisgICAgZXhjaGFuZ2Vfc3RhdGUtPmYg PSBOVUxMOworICAgIF9saWJzc2gyX2JuX2ZyZWUoZXhjaGFuZ2Vfc3RhdGUt PmspOworICAgIGV4Y2hhbmdlX3N0YXRlLT5rID0gTlVMTDsKKyAgICBfbGli c3NoMl9ibl9jdHhfZnJlZShleGNoYW5nZV9zdGF0ZS0+Y3R4KTsKKyAgICBl eGNoYW5nZV9zdGF0ZS0+Y3R4ID0gTlVMTDsKKworICAgIGlmIChleGNoYW5n ZV9zdGF0ZS0+ZV9wYWNrZXQpIHsKKyAgICAgICAgTElCU1NIMl9GUkVFKHNl c3Npb24sIGV4Y2hhbmdlX3N0YXRlLT5lX3BhY2tldCk7CisgICAgICAgIGV4 Y2hhbmdlX3N0YXRlLT5lX3BhY2tldCA9IE5VTEw7CisgICAgfQorCisgICAg aWYgKGV4Y2hhbmdlX3N0YXRlLT5zX3BhY2tldCkgeworICAgICAgICBMSUJT U0gyX0ZSRUUoc2Vzc2lvbiwgZXhjaGFuZ2Vfc3RhdGUtPnNfcGFja2V0KTsK KyAgICAgICAgZXhjaGFuZ2Vfc3RhdGUtPnNfcGFja2V0ID0gTlVMTDsKKyAg ICB9CisKKyAgICBpZiAoZXhjaGFuZ2Vfc3RhdGUtPmtfdmFsdWUpIHsKKyAg ICAgICAgTElCU1NIMl9GUkVFKHNlc3Npb24sIGV4Y2hhbmdlX3N0YXRlLT5r X3ZhbHVlKTsKKyAgICAgICAgZXhjaGFuZ2Vfc3RhdGUtPmtfdmFsdWUgPSBO VUxMOworICAgIH0KKworICAgIGV4Y2hhbmdlX3N0YXRlLT5zdGF0ZSA9IGxp YnNzaDJfTkJfc3RhdGVfaWRsZTsKKworICAgIHJldHVybiByZXQ7Cit9CisK KwogLyoKLSAqIGRpZmZpZV9oZWxsbWFuX3NoYTEKKyAqIGRpZmZpZV9oZWxs bWFuX3NoYTI1NgogICoKICAqIERpZmZpZSBIZWxsbWFuIEtleSBFeGNoYW5n ZSwgR3JvdXAgQWdub3N0aWMKICAqLwotc3RhdGljIGludCBkaWZmaWVfaGVs bG1hbl9zaGExKExJQlNTSDJfU0VTU0lPTiAqc2Vzc2lvbiwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBfbGlic3NoMl9ibiAqZywKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBfbGlic3NoMl9ibiAqcCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZ3JvdXBfb3JkZXIs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hh ciBwYWNrZXRfdHlwZV9pbml0LAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGNoYXIgcGFja2V0X3R5cGVfcmVwbHksCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqbWlk aGFzaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBsb25nIG1pZGhhc2hfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGttZGhnR1BzaGExa2V4X3N0YXRlX3QgKmV4Y2hhbmdlX3N0YXRl KQorc3RhdGljIGludCBkaWZmaWVfaGVsbG1hbl9zaGEyNTYoTElCU1NIMl9T RVNTSU9OICpzZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgX2xpYnNzaDJfYm4gKmcsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBfbGlic3NoMl9ibiAqcCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCBncm91cF9vcmRlciwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgcGFja2V0X3R5 cGVfaW5pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGNoYXIgcGFja2V0X3R5cGVfcmVwbHksCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICptaWRoYXNoLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u ZyBtaWRoYXNoX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGttZGhnR1BzaGFrZXhfc3RhdGVfdCAqZXhjaGFuZ2Vfc3RhdGUpCiB7 CiAgICAgaW50IHJldCA9IDA7CiAgICAgaW50IHJjOworICAgIGxpYnNzaDJf c2hhMjU2X2N0eCBleGNoYW5nZV9oYXNoX2N0eDsKIAogICAgIGlmIChleGNo YW5nZV9zdGF0ZS0+c3RhdGUgPT0gbGlic3NoMl9OQl9zdGF0ZV9pZGxlKSB7 CiAgICAgICAgIC8qIFNldHVwIGluaXRpYWwgdmFsdWVzICovCkBAIC05Niw3 ICs3NDYsNyBAQCBzdGF0aWMgaW50IGRpZmZpZV9oZWxsbWFuX3NoYTEoTElC U1NIMl9TRVNTSU9OICpzZXNzaW9uLAogICAgICAgICBleGNoYW5nZV9zdGF0 ZS0+Y3R4ID0gX2xpYnNzaDJfYm5fY3R4X25ldygpOwogICAgICAgICBleGNo YW5nZV9zdGF0ZS0+eCA9IF9saWJzc2gyX2JuX2luaXQoKTsgLyogUmFuZG9t IGZyb20gY2xpZW50ICovCiAgICAgICAgIGV4Y2hhbmdlX3N0YXRlLT5lID0g X2xpYnNzaDJfYm5faW5pdCgpOyAvKiBnXnggbW9kIHAgKi8KLSAgICAgICAg ZXhjaGFuZ2Vfc3RhdGUtPmYgPSBfbGlic3NoMl9ibl9pbml0KCk7IC8qIGde KFJhbmRvbSBmcm9tIHNlcnZlcikgbW9kIHAgKi8KKyAgICAgICAgZXhjaGFu Z2Vfc3RhdGUtPmYgPSBfbGlic3NoMl9ibl9pbml0X2Zyb21fYmluKCk7IC8q IGdeKFJhbmRvbSBmcm9tIHNlcnZlcikgbW9kIHAgKi8KICAgICAgICAgZXhj aGFuZ2Vfc3RhdGUtPmsgPSBfbGlic3NoMl9ibl9pbml0KCk7IC8qIFRoZSBz aGFyZWQgc2VjcmV0OiBmXnggbW9kIHAgKi8KIAogICAgICAgICAvKiBaZXJv IHRoZSB3aG9sZSB0aGluZyBvdXQgKi8KQEAgLTIwMiw2ICs4NTIsMTAgQEAg c3RhdGljIGludCBkaWZmaWVfaGVsbG1hbl9zaGExKExJQlNTSDJfU0VTU0lP TiAqc2Vzc2lvbiwKIAogICAgICAgICBzZXNzaW9uLT5zZXJ2ZXJfaG9zdGtl eV9sZW4gPSBfbGlic3NoMl9udG9odTMyKGV4Y2hhbmdlX3N0YXRlLT5zKTsK ICAgICAgICAgZXhjaGFuZ2Vfc3RhdGUtPnMgKz0gNDsKKworICAgICAgICBp ZiAoc2Vzc2lvbi0+c2VydmVyX2hvc3RrZXkpCisgICAgICAgICAgICBMSUJT U0gyX0ZSRUUoc2Vzc2lvbiwgc2Vzc2lvbi0+c2VydmVyX2hvc3RrZXkpOwor CiAgICAgICAgIHNlc3Npb24tPnNlcnZlcl9ob3N0a2V5ID0KICAgICAgICAg ICAgIExJQlNTSDJfQUxMT0Moc2Vzc2lvbiwgc2Vzc2lvbi0+c2VydmVyX2hv c3RrZXlfbGVuKTsKICAgICAgICAgaWYgKCFzZXNzaW9uLT5zZXJ2ZXJfaG9z dGtleSkgewpAQCAtMjIxLDcgKzg3NSw4IEBAIHN0YXRpYyBpbnQgZGlmZmll X2hlbGxtYW5fc2hhMShMSUJTU0gyX1NFU1NJT04gKnNlc3Npb24sCiAgICAg ICAgICAgICBpZiAobGlic3NoMl9tZDVfaW5pdCgmZmluZ2VycHJpbnRfY3R4 KSkgewogICAgICAgICAgICAgICAgIGxpYnNzaDJfbWQ1X3VwZGF0ZShmaW5n ZXJwcmludF9jdHgsIHNlc3Npb24tPnNlcnZlcl9ob3N0a2V5LAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZXJ2ZXJf aG9zdGtleV9sZW4pOwotICAgICAgICAgICAgICAgIGxpYnNzaDJfbWQ1X2Zp bmFsKGZpbmdlcnByaW50X2N0eCwgc2Vzc2lvbi0+c2VydmVyX2hvc3RrZXlf bWQ1KTsKKyAgICAgICAgICAgICAgICBsaWJzc2gyX21kNV9maW5hbChmaW5n ZXJwcmludF9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2Vzc2lvbi0+c2VydmVyX2hvc3RrZXlfbWQ1KTsKICAgICAgICAgICAg ICAgICBzZXNzaW9uLT5zZXJ2ZXJfaG9zdGtleV9tZDVfdmFsaWQgPSBUUlVF OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CkBAIC0yNDUs MTAgKzkwMCwxNiBAQCBzdGF0aWMgaW50IGRpZmZpZV9oZWxsbWFuX3NoYTEo TElCU1NIMl9TRVNTSU9OICpzZXNzaW9uLAogICAgICAgICB7CiAgICAgICAg ICAgICBsaWJzc2gyX3NoYTFfY3R4IGZpbmdlcnByaW50X2N0eDsKIAotICAg ICAgICAgICAgbGlic3NoMl9zaGExX2luaXQoJmZpbmdlcnByaW50X2N0eCk7 Ci0gICAgICAgICAgICBsaWJzc2gyX3NoYTFfdXBkYXRlKGZpbmdlcnByaW50 X2N0eCwgc2Vzc2lvbi0+c2VydmVyX2hvc3RrZXksCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnNlcnZlcl9ob3N0a2V5X2xl bik7Ci0gICAgICAgICAgICBsaWJzc2gyX3NoYTFfZmluYWwoZmluZ2VycHJp bnRfY3R4LCBzZXNzaW9uLT5zZXJ2ZXJfaG9zdGtleV9zaGExKTsKKyAgICAg ICAgICAgIGlmIChsaWJzc2gyX3NoYTFfaW5pdCgmZmluZ2VycHJpbnRfY3R4 KSkgeworICAgICAgICAgICAgICAgIGxpYnNzaDJfc2hhMV91cGRhdGUoZmlu Z2VycHJpbnRfY3R4LCBzZXNzaW9uLT5zZXJ2ZXJfaG9zdGtleSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnNlcnZl cl9ob3N0a2V5X2xlbik7CisgICAgICAgICAgICAgICAgbGlic3NoMl9zaGEx X2ZpbmFsKGZpbmdlcnByaW50X2N0eCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VydmVyX2hvc3RrZXlfc2hhMSk7 CisgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VydmVyX2hvc3RrZXlfc2hh MV92YWxpZCA9IFRSVUU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBl bHNlIHsKKyAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZXJ2ZXJfaG9zdGtl eV9zaGExX3ZhbGlkID0gRkFMU0U7CisgICAgICAgICAgICB9CiAgICAgICAg IH0KICNpZmRlZiBMSUJTU0gyREVCVUcKICAgICAgICAgewpAQCAtMzA3LDU2 ICs5NjgsNTggQEAgc3RhdGljIGludCBkaWZmaWVfaGVsbG1hbl9zaGExKExJ QlNTSDJfU0VTU0lPTiAqc2Vzc2lvbiwKICAgICAgICAgICAgIF9saWJzc2gy X2JuX3RvX2JpbihleGNoYW5nZV9zdGF0ZS0+aywgZXhjaGFuZ2Vfc3RhdGUt PmtfdmFsdWUgKyA1KTsKICAgICAgICAgfQogCi0gICAgICAgIGxpYnNzaDJf c2hhMV9pbml0KCZleGNoYW5nZV9zdGF0ZS0+ZXhjaGFuZ2VfaGFzaCk7Cisg ICAgICAgIGV4Y2hhbmdlX3N0YXRlLT5leGNoYW5nZV9oYXNoID0gKHZvaWQq KSZleGNoYW5nZV9oYXNoX2N0eDsKKyAgICAgICAgbGlic3NoMl9zaGEyNTZf aW5pdCgmZXhjaGFuZ2VfaGFzaF9jdHgpOworCiAgICAgICAgIGlmIChzZXNz aW9uLT5sb2NhbC5iYW5uZXIpIHsKICAgICAgICAgICAgIF9saWJzc2gyX2h0 b251MzIoZXhjaGFuZ2Vfc3RhdGUtPmhfc2lnX2NvbXAsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cmxlbigoY2hhciAqKSBzZXNzaW9uLT5s b2NhbC5iYW5uZXIpIC0gMik7Ci0gICAgICAgICAgICBsaWJzc2gyX3NoYTFf dXBkYXRlKGV4Y2hhbmdlX3N0YXRlLT5leGNoYW5nZV9oYXNoLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBleGNoYW5nZV9zdGF0ZS0+aF9z aWdfY29tcCwgNCk7Ci0gICAgICAgICAgICBsaWJzc2gyX3NoYTFfdXBkYXRl KGV4Y2hhbmdlX3N0YXRlLT5leGNoYW5nZV9oYXNoLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoY2hhciAqKSBzZXNzaW9uLT5sb2NhbC5i YW5uZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmxl bigoY2hhciAqKSBzZXNzaW9uLT5sb2NhbC5iYW5uZXIpIC0gMik7CisgICAg ICAgICAgICBsaWJzc2gyX3NoYTI1Nl91cGRhdGUoZXhjaGFuZ2VfaGFzaF9j dHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjaGFu Z2Vfc3RhdGUtPmhfc2lnX2NvbXAsIDQpOworICAgICAgICAgICAgbGlic3No Ml9zaGEyNTZfdXBkYXRlKGV4Y2hhbmdlX2hhc2hfY3R4LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopIHNlc3Npb24tPmxv Y2FsLmJhbm5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJsZW4oKGNoYXIgKikgc2Vzc2lvbi0+bG9jYWwuYmFubmVyKSAtIDIp OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgX2xpYnNzaDJfaHRv bnUzMihleGNoYW5nZV9zdGF0ZS0+aF9zaWdfY29tcCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2l6ZW9mKExJQlNTSDJfU1NIX0RFRkFVTFRf QkFOTkVSKSAtIDEpOwotICAgICAgICAgICAgbGlic3NoMl9zaGExX3VwZGF0 ZShleGNoYW5nZV9zdGF0ZS0+ZXhjaGFuZ2VfaGFzaCwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZXhjaGFuZ2Vfc3RhdGUtPmhfc2lnX2Nv bXAsIDQpOwotICAgICAgICAgICAgbGlic3NoMl9zaGExX3VwZGF0ZShleGNo YW5nZV9zdGF0ZS0+ZXhjaGFuZ2VfaGFzaCwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTElCU1NIMl9TU0hfREVGQVVMVF9CQU5ORVIsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihMSUJTU0gy X1NTSF9ERUZBVUxUX0JBTk5FUikgLSAxKTsKKyAgICAgICAgICAgIGxpYnNz aDJfc2hhMjU2X3VwZGF0ZShleGNoYW5nZV9oYXNoX2N0eCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBleGNoYW5nZV9zdGF0ZS0+aF9z aWdfY29tcCwgNCk7CisgICAgICAgICAgICBsaWJzc2gyX3NoYTI1Nl91cGRh dGUoZXhjaGFuZ2VfaGFzaF9jdHgsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTElCU1NIMl9TU0hfREVGQVVMVF9CQU5ORVIsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKExJQlNTSDJf U1NIX0RFRkFVTFRfQkFOTkVSKSAtIDEpOwogICAgICAgICB9CiAKICAgICAg ICAgX2xpYnNzaDJfaHRvbnUzMihleGNoYW5nZV9zdGF0ZS0+aF9zaWdfY29t cCwKICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4oKGNoYXIgKikg c2Vzc2lvbi0+cmVtb3RlLmJhbm5lcikpOwotICAgICAgICBsaWJzc2gyX3No YTFfdXBkYXRlKGV4Y2hhbmdlX3N0YXRlLT5leGNoYW5nZV9oYXNoLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2hhbmdlX3N0YXRlLT5oX3Np Z19jb21wLCA0KTsKLSAgICAgICAgbGlic3NoMl9zaGExX3VwZGF0ZShleGNo YW5nZV9zdGF0ZS0+ZXhjaGFuZ2VfaGFzaCwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZXNzaW9uLT5yZW1vdGUuYmFubmVyLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cmxlbigoY2hhciAqKSBzZXNzaW9uLT5y ZW1vdGUuYmFubmVyKSk7CisgICAgICAgIGxpYnNzaDJfc2hhMjU2X3VwZGF0 ZShleGNoYW5nZV9oYXNoX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGV4Y2hhbmdlX3N0YXRlLT5oX3NpZ19jb21wLCA0KTsKKyAgICAg ICAgbGlic3NoMl9zaGEyNTZfdXBkYXRlKGV4Y2hhbmdlX2hhc2hfY3R4LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+cmVtb3Rl LmJhbm5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmxl bigoY2hhciAqKSBzZXNzaW9uLT5yZW1vdGUuYmFubmVyKSk7CiAKICAgICAg ICAgX2xpYnNzaDJfaHRvbnUzMihleGNoYW5nZV9zdGF0ZS0+aF9zaWdfY29t cCwKICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5sb2NhbC5r ZXhpbml0X2xlbik7Ci0gICAgICAgIGxpYnNzaDJfc2hhMV91cGRhdGUoZXhj aGFuZ2Vfc3RhdGUtPmV4Y2hhbmdlX2hhc2gsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgZXhjaGFuZ2Vfc3RhdGUtPmhfc2lnX2NvbXAsIDQpOwot ICAgICAgICBsaWJzc2gyX3NoYTFfdXBkYXRlKGV4Y2hhbmdlX3N0YXRlLT5l eGNoYW5nZV9oYXNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl c3Npb24tPmxvY2FsLmtleGluaXQsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2Vzc2lvbi0+bG9jYWwua2V4aW5pdF9sZW4pOworICAgICAgICBs aWJzc2gyX3NoYTI1Nl91cGRhdGUoZXhjaGFuZ2VfaGFzaF9jdHgsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBleGNoYW5nZV9zdGF0ZS0+aF9z aWdfY29tcCwgNCk7CisgICAgICAgIGxpYnNzaDJfc2hhMjU2X3VwZGF0ZShl eGNoYW5nZV9oYXNoX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlc3Npb24tPmxvY2FsLmtleGluaXQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZXNzaW9uLT5sb2NhbC5rZXhpbml0X2xlbik7CiAK ICAgICAgICAgX2xpYnNzaDJfaHRvbnUzMihleGNoYW5nZV9zdGF0ZS0+aF9z aWdfY29tcCwKICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5y ZW1vdGUua2V4aW5pdF9sZW4pOwotICAgICAgICBsaWJzc2gyX3NoYTFfdXBk YXRlKGV4Y2hhbmdlX3N0YXRlLT5leGNoYW5nZV9oYXNoLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGV4Y2hhbmdlX3N0YXRlLT5oX3NpZ19jb21w LCA0KTsKLSAgICAgICAgbGlic3NoMl9zaGExX3VwZGF0ZShleGNoYW5nZV9z dGF0ZS0+ZXhjaGFuZ2VfaGFzaCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZXNzaW9uLT5yZW1vdGUua2V4aW5pdCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZXNzaW9uLT5yZW1vdGUua2V4aW5pdF9sZW4pOwor ICAgICAgICBsaWJzc2gyX3NoYTI1Nl91cGRhdGUoZXhjaGFuZ2VfaGFzaF9j dHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNoYW5nZV9z dGF0ZS0+aF9zaWdfY29tcCwgNCk7CisgICAgICAgIGxpYnNzaDJfc2hhMjU2 X3VwZGF0ZShleGNoYW5nZV9oYXNoX2N0eCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNlc3Npb24tPnJlbW90ZS5rZXhpbml0LAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+cmVtb3RlLmtleGlu aXRfbGVuKTsKIAogICAgICAgICBfbGlic3NoMl9odG9udTMyKGV4Y2hhbmdl X3N0YXRlLT5oX3NpZ19jb21wLAogICAgICAgICAgICAgICAgICAgICAgICAg IHNlc3Npb24tPnNlcnZlcl9ob3N0a2V5X2xlbik7Ci0gICAgICAgIGxpYnNz aDJfc2hhMV91cGRhdGUoZXhjaGFuZ2Vfc3RhdGUtPmV4Y2hhbmdlX2hhc2gs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjaGFuZ2Vfc3RhdGUt Pmhfc2lnX2NvbXAsIDQpOwotICAgICAgICBsaWJzc2gyX3NoYTFfdXBkYXRl KGV4Y2hhbmdlX3N0YXRlLT5leGNoYW5nZV9oYXNoLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNlc3Npb24tPnNlcnZlcl9ob3N0a2V5LAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnNlcnZlcl9ob3N0 a2V5X2xlbik7CisgICAgICAgIGxpYnNzaDJfc2hhMjU2X3VwZGF0ZShleGNo YW5nZV9oYXNoX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGV4Y2hhbmdlX3N0YXRlLT5oX3NpZ19jb21wLCA0KTsKKyAgICAgICAgbGli c3NoMl9zaGEyNTZfdXBkYXRlKGV4Y2hhbmdlX2hhc2hfY3R4LAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VydmVyX2hvc3Rr ZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5z ZXJ2ZXJfaG9zdGtleV9sZW4pOwogCiAgICAgICAgIGlmIChwYWNrZXRfdHlw ZV9pbml0ID09IFNTSF9NU0dfS0VYX0RIX0dFWF9JTklUKSB7CiAgICAgICAg ICAgICAvKiBkaWZmaWUtaGVsbG1hbi1ncm91cC1leGNoYW5nZSBoYXNoZXMg YWRkaXRpb25hbCBmaWVsZHMgKi8KQEAgLTM2Nyw0OSArMTAzMCw1MSBAQCBz dGF0aWMgaW50IGRpZmZpZV9oZWxsbWFuX3NoYTEoTElCU1NIMl9TRVNTSU9O ICpzZXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJT U0gyX0RIX0dFWF9PUFRHUk9VUCk7CiAgICAgICAgICAgICBfbGlic3NoMl9o dG9udTMyKGV4Y2hhbmdlX3N0YXRlLT5oX3NpZ19jb21wICsgOCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTElCU1NIMl9ESF9HRVhfTUFYR1JP VVApOwotICAgICAgICAgICAgbGlic3NoMl9zaGExX3VwZGF0ZShleGNoYW5n ZV9zdGF0ZS0+ZXhjaGFuZ2VfaGFzaCwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZXhjaGFuZ2Vfc3RhdGUtPmhfc2lnX2NvbXAsIDEyKTsK KyAgICAgICAgICAgIGxpYnNzaDJfc2hhMjU2X3VwZGF0ZShleGNoYW5nZV9o YXNoX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl eGNoYW5nZV9zdGF0ZS0+aF9zaWdfY29tcCwgMTIpOwogI2Vsc2UKICAgICAg ICAgICAgIF9saWJzc2gyX2h0b251MzIoZXhjaGFuZ2Vfc3RhdGUtPmhfc2ln X2NvbXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlNTSDJf REhfR0VYX09QVEdST1VQKTsKLSAgICAgICAgICAgIGxpYnNzaDJfc2hhMV91 cGRhdGUoZXhjaGFuZ2Vfc3RhdGUtPmV4Y2hhbmdlX2hhc2gsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2hhbmdlX3N0YXRlLT5oX3Np Z19jb21wLCA0KTsKKyAgICAgICAgICAgIGxpYnNzaDJfc2hhMjU2X3VwZGF0 ZShleGNoYW5nZV9oYXNoX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBleGNoYW5nZV9zdGF0ZS0+aF9zaWdfY29tcCwgNCk7CiAj ZW5kaWYKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtaWRoYXNoKSB7Ci0g ICAgICAgICAgICBsaWJzc2gyX3NoYTFfdXBkYXRlKGV4Y2hhbmdlX3N0YXRl LT5leGNoYW5nZV9oYXNoLCBtaWRoYXNoLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBtaWRoYXNoX2xlbik7CisgICAgICAgICAgICBsaWJz c2gyX3NoYTI1Nl91cGRhdGUoZXhjaGFuZ2VfaGFzaF9jdHgsIG1pZGhhc2gs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlkaGFzaF9s ZW4pOwogICAgICAgICB9CiAKLSAgICAgICAgbGlic3NoMl9zaGExX3VwZGF0 ZShleGNoYW5nZV9zdGF0ZS0+ZXhjaGFuZ2VfaGFzaCwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICBleGNoYW5nZV9zdGF0ZS0+ZV9wYWNrZXQgKyAx LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2hhbmdlX3N0YXRl LT5lX3BhY2tldF9sZW4gLSAxKTsKKyAgICAgICAgbGlic3NoMl9zaGEyNTZf dXBkYXRlKGV4Y2hhbmdlX2hhc2hfY3R4LAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZXhjaGFuZ2Vfc3RhdGUtPmVfcGFja2V0ICsgMSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2hhbmdlX3N0YXRlLT5l X3BhY2tldF9sZW4gLSAxKTsKIAogICAgICAgICBfbGlic3NoMl9odG9udTMy KGV4Y2hhbmdlX3N0YXRlLT5oX3NpZ19jb21wLAogICAgICAgICAgICAgICAg ICAgICAgICAgIGV4Y2hhbmdlX3N0YXRlLT5mX3ZhbHVlX2xlbik7Ci0gICAg ICAgIGxpYnNzaDJfc2hhMV91cGRhdGUoZXhjaGFuZ2Vfc3RhdGUtPmV4Y2hh bmdlX2hhc2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjaGFu Z2Vfc3RhdGUtPmhfc2lnX2NvbXAsIDQpOwotICAgICAgICBsaWJzc2gyX3No YTFfdXBkYXRlKGV4Y2hhbmdlX3N0YXRlLT5leGNoYW5nZV9oYXNoLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2hhbmdlX3N0YXRlLT5mX3Zh bHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2hhbmdlX3N0 YXRlLT5mX3ZhbHVlX2xlbik7CisgICAgICAgIGxpYnNzaDJfc2hhMjU2X3Vw ZGF0ZShleGNoYW5nZV9oYXNoX2N0eCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGV4Y2hhbmdlX3N0YXRlLT5oX3NpZ19jb21wLCA0KTsKKyAg ICAgICAgbGlic3NoMl9zaGEyNTZfdXBkYXRlKGV4Y2hhbmdlX2hhc2hfY3R4 LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjaGFuZ2Vfc3Rh dGUtPmZfdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl eGNoYW5nZV9zdGF0ZS0+Zl92YWx1ZV9sZW4pOwogCi0gICAgICAgIGxpYnNz aDJfc2hhMV91cGRhdGUoZXhjaGFuZ2Vfc3RhdGUtPmV4Y2hhbmdlX2hhc2gs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjaGFuZ2Vfc3RhdGUt PmtfdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjaGFu Z2Vfc3RhdGUtPmtfdmFsdWVfbGVuKTsKKyAgICAgICAgbGlic3NoMl9zaGEy NTZfdXBkYXRlKGV4Y2hhbmdlX2hhc2hfY3R4LAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZXhjaGFuZ2Vfc3RhdGUtPmtfdmFsdWUsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBleGNoYW5nZV9zdGF0ZS0+a192 YWx1ZV9sZW4pOwogCi0gICAgICAgIGxpYnNzaDJfc2hhMV9maW5hbChleGNo YW5nZV9zdGF0ZS0+ZXhjaGFuZ2VfaGFzaCwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgIGV4Y2hhbmdlX3N0YXRlLT5oX3NpZ19jb21wKTsKKyAgICAg ICAgbGlic3NoMl9zaGEyNTZfZmluYWwoZXhjaGFuZ2VfaGFzaF9jdHgsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2hhbmdlX3N0YXRlLT5o X3NpZ19jb21wKTsKIAogICAgICAgICBpZiAoc2Vzc2lvbi0+aG9zdGtleS0+ CiAgICAgICAgICAgICBzaWdfdmVyaWZ5KHNlc3Npb24sIGV4Y2hhbmdlX3N0 YXRlLT5oX3NpZywKICAgICAgICAgICAgICAgICAgICAgICAgZXhjaGFuZ2Vf c3RhdGUtPmhfc2lnX2xlbiwgZXhjaGFuZ2Vfc3RhdGUtPmhfc2lnX2NvbXAs Ci0gICAgICAgICAgICAgICAgICAgICAgIDIwLCAmc2Vzc2lvbi0+c2VydmVy X2hvc3RrZXlfYWJzdHJhY3QpKSB7CisgICAgICAgICAgICAgICAgICAgICAg IFNIQTI1Nl9ESUdFU1RfTEVOR1RILCAmc2Vzc2lvbi0+c2VydmVyX2hvc3Rr ZXlfYWJzdHJhY3QpKSB7CiAgICAgICAgICAgICByZXQgPSBfbGlic3NoMl9l cnJvcihzZXNzaW9uLCBMSUJTU0gyX0VSUk9SX0hPU1RLRVlfU0lHTiwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmFibGUgdG8gdmVy aWZ5IGhvc3RrZXkgc2lnbmF0dXJlIik7CiAgICAgICAgICAgICBnb3RvIGNs ZWFuX2V4aXQ7CiAgICAgICAgIH0KIAorCisKICAgICAgICAgX2xpYnNzaDJf ZGVidWcoc2Vzc2lvbiwgTElCU1NIMl9UUkFDRV9LRVgsICJTZW5kaW5nIE5F V0tFWVMgbWVzc2FnZSIpOwogICAgICAgICBleGNoYW5nZV9zdGF0ZS0+YyA9 IFNTSF9NU0dfTkVXS0VZUzsKIApAQCAtNDQ5LDE1ICsxMTE0LDE1IEBAIHN0 YXRpYyBpbnQgZGlmZmllX2hlbGxtYW5fc2hhMShMSUJTU0gyX1NFU1NJT04g KnNlc3Npb24sCiAgICAgICAgIExJQlNTSDJfRlJFRShzZXNzaW9uLCBleGNo YW5nZV9zdGF0ZS0+dG1wKTsKIAogICAgICAgICBpZiAoIXNlc3Npb24tPnNl c3Npb25faWQpIHsKLSAgICAgICAgICAgIHNlc3Npb24tPnNlc3Npb25faWQg PSBMSUJTU0gyX0FMTE9DKHNlc3Npb24sIFNIQV9ESUdFU1RfTEVOR1RIKTsK KyAgICAgICAgICAgIHNlc3Npb24tPnNlc3Npb25faWQgPSBMSUJTU0gyX0FM TE9DKHNlc3Npb24sIFNIQTI1Nl9ESUdFU1RfTEVOR1RIKTsKICAgICAgICAg ICAgIGlmICghc2Vzc2lvbi0+c2Vzc2lvbl9pZCkgewogICAgICAgICAgICAg ICAgIHJldCA9IF9saWJzc2gyX2Vycm9yKHNlc3Npb24sIExJQlNTSDJfRVJS T1JfQUxMT0MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIlVuYWJsZSB0byBhbGxvY2F0ZSBidWZmZXIgZm9yIFNIQSBkaWdlc3Qi KTsKICAgICAgICAgICAgICAgICBnb3RvIGNsZWFuX2V4aXQ7CiAgICAgICAg ICAgICB9CiAgICAgICAgICAgICBtZW1jcHkoc2Vzc2lvbi0+c2Vzc2lvbl9p ZCwgZXhjaGFuZ2Vfc3RhdGUtPmhfc2lnX2NvbXAsCi0gICAgICAgICAgICAg ICAgICAgU0hBX0RJR0VTVF9MRU5HVEgpOwotICAgICAgICAgICAgc2Vzc2lv bi0+c2Vzc2lvbl9pZF9sZW4gPSBTSEFfRElHRVNUX0xFTkdUSDsKKyAgICAg ICAgICAgICAgICAgICBTSEEyNTZfRElHRVNUX0xFTkdUSCk7CisgICAgICAg ICAgICBzZXNzaW9uLT5zZXNzaW9uX2lkX2xlbiA9IFNIQTI1Nl9ESUdFU1Rf TEVOR1RIOwogICAgICAgICAgICAgX2xpYnNzaDJfZGVidWcoc2Vzc2lvbiwg TElCU1NIMl9UUkFDRV9LRVgsICJzZXNzaW9uX2lkIGNhbGN1bGF0ZWQiKTsK ICAgICAgICAgfQogCkBAIC00NzIsMTYgKzExMzcsMTYgQEAgc3RhdGljIGlu dCBkaWZmaWVfaGVsbG1hbl9zaGExKExJQlNTSDJfU0VTU0lPTiAqc2Vzc2lv biwKICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKml2ID0gTlVMTCwgKnNl Y3JldCA9IE5VTEw7CiAgICAgICAgICAgICBpbnQgZnJlZV9pdiA9IDAsIGZy ZWVfc2VjcmV0ID0gMDsKIAotICAgICAgICAgICAgTElCU1NIMl9LRVhfTUVU SE9EX0RJRkZJRV9IRUxMTUFOX1NIQTFfSEFTSChpdiwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2Vzc2lvbi0+bG9jYWwuY3J5cHQtPgotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdl9sZW4sICJB Iik7CisgICAgICAgICAgICBMSUJTU0gyX0tFWF9NRVRIT0RfRElGRklFX0hF TExNQU5fU0hBMjU2X0hBU0goaXYsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+ bG9jYWwuY3J5cHQtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl2X2xlbiwgIkEiKTsKICAg ICAgICAgICAgIGlmICghaXYpIHsKICAgICAgICAgICAgICAgICByZXQgPSAt MTsKICAgICAgICAgICAgICAgICBnb3RvIGNsZWFuX2V4aXQ7CiAgICAgICAg ICAgICB9Ci0gICAgICAgICAgICBMSUJTU0gyX0tFWF9NRVRIT0RfRElGRklF X0hFTExNQU5fU0hBMV9IQVNIKHNlY3JldCwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lv bi0+bG9jYWwuY3J5cHQtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNyZXRfbGVuLCAiQyIp OworICAgICAgICAgICAgTElCU1NIMl9LRVhfTUVUSE9EX0RJRkZJRV9IRUxM TUFOX1NIQTI1Nl9IQVNIKHNlY3JldCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9u LT5sb2NhbC5jcnlwdC0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjcmV0X2xlbiwgIkMi KTsKICAgICAgICAgICAgIGlmICghc2VjcmV0KSB7CiAgICAgICAgICAgICAg ICAgTElCU1NIMl9GUkVFKHNlc3Npb24sIGl2KTsKICAgICAgICAgICAgICAg ICByZXQgPSBMSUJTU0gyX0VSUk9SX0tFWF9GQUlMVVJFOwpAQCAtNTE5LDE2 ICsxMTg0LDE2IEBAIHN0YXRpYyBpbnQgZGlmZmllX2hlbGxtYW5fc2hhMShM SUJTU0gyX1NFU1NJT04gKnNlc3Npb24sCiAgICAgICAgICAgICB1bnNpZ25l ZCBjaGFyICppdiA9IE5VTEwsICpzZWNyZXQgPSBOVUxMOwogICAgICAgICAg ICAgaW50IGZyZWVfaXYgPSAwLCBmcmVlX3NlY3JldCA9IDA7CiAKLSAgICAg ICAgICAgIExJQlNTSDJfS0VYX01FVEhPRF9ESUZGSUVfSEVMTE1BTl9TSEEx X0hBU0goaXYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnJlbW90ZS5jcnlwdC0+ Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGl2X2xlbiwgIkIiKTsKKyAgICAgICAgICAgIExJQlNT SDJfS0VYX01FVEhPRF9ESUZGSUVfSEVMTE1BTl9TSEEyNTZfSEFTSChpdiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZXNzaW9uLT5yZW1vdGUuY3J5cHQtPgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGl2X2xlbiwgIkIiKTsKICAgICAgICAgICAgIGlmICghaXYpIHsK ICAgICAgICAgICAgICAgICByZXQgPSBMSUJTU0gyX0VSUk9SX0tFWF9GQUlM VVJFOwogICAgICAgICAgICAgICAgIGdvdG8gY2xlYW5fZXhpdDsKICAgICAg ICAgICAgIH0KLSAgICAgICAgICAgIExJQlNTSDJfS0VYX01FVEhPRF9ESUZG SUVfSEVMTE1BTl9TSEExX0hBU0goc2VjcmV0LAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNz aW9uLT5yZW1vdGUuY3J5cHQtPgotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNyZXRfbGVuLCAi RCIpOworICAgICAgICAgICAgTElCU1NIMl9LRVhfTUVUSE9EX0RJRkZJRV9I RUxMTUFOX1NIQTI1Nl9IQVNIKHNlY3JldCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNz aW9uLT5yZW1vdGUuY3J5cHQtPgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3JldF9sZW4s ICJEIik7CiAgICAgICAgICAgICBpZiAoIXNlY3JldCkgewogICAgICAgICAg ICAgICAgIExJQlNTSDJfRlJFRShzZXNzaW9uLCBpdik7CiAgICAgICAgICAg ICAgICAgcmV0ID0gTElCU1NIMl9FUlJPUl9LRVhfRkFJTFVSRTsKQEAgLTU2 NCw5ICsxMjI5LDkgQEAgc3RhdGljIGludCBkaWZmaWVfaGVsbG1hbl9zaGEx KExJQlNTSDJfU0VTU0lPTiAqc2Vzc2lvbiwKICAgICAgICAgICAgIHVuc2ln bmVkIGNoYXIgKmtleSA9IE5VTEw7CiAgICAgICAgICAgICBpbnQgZnJlZV9r ZXkgPSAwOwogCi0gICAgICAgICAgICBMSUJTU0gyX0tFWF9NRVRIT0RfRElG RklFX0hFTExNQU5fU0hBMV9IQVNIKGtleSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lv bi0+bG9jYWwubWFjLT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5X2xlbiwgIkUiKTsKKyAg ICAgICAgICAgIExJQlNTSDJfS0VYX01FVEhPRF9ESUZGSUVfSEVMTE1BTl9T SEEyNTZfSEFTSChrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+bG9jYWwu bWFjLT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBrZXlfbGVuLCAiRSIpOwogICAgICAgICAg ICAgaWYgKCFrZXkpIHsKICAgICAgICAgICAgICAgICByZXQgPSBMSUJTU0gy X0VSUk9SX0tFWF9GQUlMVVJFOwogICAgICAgICAgICAgICAgIGdvdG8gY2xl YW5fZXhpdDsKQEAgLTU5MCw5ICsxMjU1LDkgQEAgc3RhdGljIGludCBkaWZm aWVfaGVsbG1hbl9zaGExKExJQlNTSDJfU0VTU0lPTiAqc2Vzc2lvbiwKICAg ICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmtleSA9IE5VTEw7CiAgICAgICAg ICAgICBpbnQgZnJlZV9rZXkgPSAwOwogCi0gICAgICAgICAgICBMSUJTU0gy X0tFWF9NRVRIT0RfRElGRklFX0hFTExNQU5fU0hBMV9IQVNIKGtleSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2Vzc2lvbi0+cmVtb3RlLm1hYy0+Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtl eV9sZW4sICJGIik7CisgICAgICAgICAgICBMSUJTU0gyX0tFWF9NRVRIT0Rf RElGRklFX0hFTExNQU5fU0hBMjU2X0hBU0goa2V5LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNlc3Npb24tPnJlbW90ZS5tYWMtPgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleV9sZW4s ICJGIik7CiAgICAgICAgICAgICBpZiAoIWtleSkgewogICAgICAgICAgICAg ICAgIHJldCA9IExJQlNTSDJfRVJST1JfS0VYX0ZBSUxVUkU7CiAgICAgICAg ICAgICAgICAgZ290byBjbGVhbl9leGl0OwpAQCAtNzA4LDcgKzEzNzMsNyBA QCBrZXhfbWV0aG9kX2RpZmZpZV9oZWxsbWFuX2dyb3VwMV9zaGExX2tleV9l eGNoYW5nZShMSUJTU0gyX1NFU1NJT04gKnNlc3Npb24sCiAKICAgICBpZiAo a2V5X3N0YXRlLT5zdGF0ZSA9PSBsaWJzc2gyX05CX3N0YXRlX2lkbGUpIHsK ICAgICAgICAgLyogZyA9PSAyICovCi0gICAgICAgIGtleV9zdGF0ZS0+cCA9 IF9saWJzc2gyX2JuX2luaXQoKTsgICAgICAvKiBTU0gyIGRlZmluZWQgdmFs dWUgKHBfdmFsdWUpICovCisgICAgICAgIGtleV9zdGF0ZS0+cCA9IF9saWJz c2gyX2JuX2luaXRfZnJvbV9iaW4oKTsgICAgICAvKiBTU0gyIGRlZmluZWQg dmFsdWUgKHBfdmFsdWUpICovCiAgICAgICAgIGtleV9zdGF0ZS0+ZyA9IF9s aWJzc2gyX2JuX2luaXQoKTsgICAgICAvKiBTU0gyIGRlZmluZWQgdmFsdWUg KDIpICovCiAKICAgICAgICAgLyogSW5pdGlhbGl6ZSBQIGFuZCBHICovCkBA IC03ODMsNyArMTQ0OCw3IEBAIGtleF9tZXRob2RfZGlmZmllX2hlbGxtYW5f Z3JvdXAxNF9zaGExX2tleV9leGNoYW5nZShMSUJTU0gyX1NFU1NJT04gKnNl c3Npb24sCiAgICAgaW50IHJldDsKIAogICAgIGlmIChrZXlfc3RhdGUtPnN0 YXRlID09IGxpYnNzaDJfTkJfc3RhdGVfaWRsZSkgewotICAgICAgICBrZXlf c3RhdGUtPnAgPSBfbGlic3NoMl9ibl9pbml0KCk7ICAgICAgLyogU1NIMiBk ZWZpbmVkIHZhbHVlIChwX3ZhbHVlKSAqLworICAgICAgICBrZXlfc3RhdGUt PnAgPSBfbGlic3NoMl9ibl9pbml0X2Zyb21fYmluKCk7ICAgICAgLyogU1NI MiBkZWZpbmVkIHZhbHVlIChwX3ZhbHVlKSAqLwogICAgICAgICBrZXlfc3Rh dGUtPmcgPSBfbGlic3NoMl9ibl9pbml0KCk7ICAgICAgLyogU1NIMiBkZWZp bmVkIHZhbHVlICgyKSAqLwogCiAgICAgICAgIC8qIGcgPT0gMiAqLwpAQCAt ODI3LDggKzE0OTIsOCBAQCBrZXhfbWV0aG9kX2RpZmZpZV9oZWxsbWFuX2dy b3VwX2V4Y2hhbmdlX3NoYTFfa2V5X2V4Y2hhbmdlCiAgICAgaW50IHJjOwog CiAgICAgaWYgKGtleV9zdGF0ZS0+c3RhdGUgPT0gbGlic3NoMl9OQl9zdGF0 ZV9pZGxlKSB7Ci0gICAgICAgIGtleV9zdGF0ZS0+cCA9IF9saWJzc2gyX2Ju X2luaXQoKTsKLSAgICAgICAga2V5X3N0YXRlLT5nID0gX2xpYnNzaDJfYm5f aW5pdCgpOworICAgICAgICBrZXlfc3RhdGUtPnAgPSBfbGlic3NoMl9ibl9p bml0X2Zyb21fYmluKCk7CisgICAgICAgIGtleV9zdGF0ZS0+ZyA9IF9saWJz c2gyX2JuX2luaXRfZnJvbV9iaW4oKTsKICAgICAgICAgLyogQXNrIGZvciBh IFAgYW5kIEcgcGFpciAqLwogI2lmZGVmIExJQlNTSDJfREhfR0VYX05FVwog ICAgICAgICBrZXlfc3RhdGUtPnJlcXVlc3RbMF0gPSBTU0hfTVNHX0tFWF9E SF9HRVhfUkVRVUVTVDsKQEAgLTkxNCw2ICsxNTc5LDEwNSBAQCBrZXhfbWV0 aG9kX2RpZmZpZV9oZWxsbWFuX2dyb3VwX2V4Y2hhbmdlX3NoYTFfa2V5X2V4 Y2hhbmdlCiAKIAogCisvKiBrZXhfbWV0aG9kX2RpZmZpZV9oZWxsbWFuX2dy b3VwX2V4Y2hhbmdlX3NoYTI1Nl9rZXlfZXhjaGFuZ2UKKyAqIERpZmZpZS1I ZWxsbWFuIEdyb3VwIEV4Y2hhbmdlIEtleSBFeGNoYW5nZSB1c2luZyBTSEEy NTYKKyAqIE5lZ290aWF0ZXMgcmFuZG9tKGlzaCkgZ3JvdXAgZm9yIHNlY3Jl dCBkZXJpdmF0aW9uCisgKi8KK3N0YXRpYyBpbnQKK2tleF9tZXRob2RfZGlm ZmllX2hlbGxtYW5fZ3JvdXBfZXhjaGFuZ2Vfc2hhMjU2X2tleV9leGNoYW5n ZQorKExJQlNTSDJfU0VTU0lPTiAqIHNlc3Npb24sIGtleV9leGNoYW5nZV9z dGF0ZV9sb3dfdCAqIGtleV9zdGF0ZSkKK3sKKyAgICB1bnNpZ25lZCBsb25n IHBfbGVuLCBnX2xlbjsKKyAgICBpbnQgcmV0ID0gMDsKKyAgICBpbnQgcmM7 CisKKyAgICBpZiAoa2V5X3N0YXRlLT5zdGF0ZSA9PSBsaWJzc2gyX05CX3N0 YXRlX2lkbGUpIHsKKyAgICAgICAga2V5X3N0YXRlLT5wID0gX2xpYnNzaDJf Ym5faW5pdCgpOworICAgICAgICBrZXlfc3RhdGUtPmcgPSBfbGlic3NoMl9i bl9pbml0KCk7CisgICAgICAgIC8qIEFzayBmb3IgYSBQIGFuZCBHIHBhaXIg Ki8KKyNpZmRlZiBMSUJTU0gyX0RIX0dFWF9ORVcKKyAgICAgICAga2V5X3N0 YXRlLT5yZXF1ZXN0WzBdID0gU1NIX01TR19LRVhfREhfR0VYX1JFUVVFU1Q7 CisgICAgICAgIF9saWJzc2gyX2h0b251MzIoa2V5X3N0YXRlLT5yZXF1ZXN0 ICsgMSwgTElCU1NIMl9ESF9HRVhfTUlOR1JPVVApOworICAgICAgICBfbGli c3NoMl9odG9udTMyKGtleV9zdGF0ZS0+cmVxdWVzdCArIDUsIExJQlNTSDJf REhfR0VYX09QVEdST1VQKTsKKyAgICAgICAgX2xpYnNzaDJfaHRvbnUzMihr ZXlfc3RhdGUtPnJlcXVlc3QgKyA5LCBMSUJTU0gyX0RIX0dFWF9NQVhHUk9V UCk7CisgICAgICAgIGtleV9zdGF0ZS0+cmVxdWVzdF9sZW4gPSAxMzsKKyAg ICAgICAgX2xpYnNzaDJfZGVidWcoc2Vzc2lvbiwgTElCU1NIMl9UUkFDRV9L RVgsCisgICAgICAgICAgICAgICAgICAgICAgICJJbml0aWF0aW5nIERpZmZp ZS1IZWxsbWFuIEdyb3VwLUV4Y2hhbmdlIChOZXcgTWV0aG9kIFNIQTI1Niki KTsKKyNlbHNlCisgICAgICAgIGtleV9zdGF0ZS0+cmVxdWVzdFswXSA9IFNT SF9NU0dfS0VYX0RIX0dFWF9SRVFVRVNUX09MRDsKKyAgICAgICAgX2xpYnNz aDJfaHRvbnUzMihrZXlfc3RhdGUtPnJlcXVlc3QgKyAxLCBMSUJTU0gyX0RI X0dFWF9PUFRHUk9VUCk7CisgICAgICAgIGtleV9zdGF0ZS0+cmVxdWVzdF9s ZW4gPSA1OworICAgICAgICBfbGlic3NoMl9kZWJ1ZyhzZXNzaW9uLCBMSUJT U0gyX1RSQUNFX0tFWCwKKyAgICAgICAgICAgICAgICAgICAgICAgIkluaXRp YXRpbmcgRGlmZmllLUhlbGxtYW4gR3JvdXAtRXhjaGFuZ2UgKE9sZCBNZXRo b2QgU0hBMjU2KSIpOworI2VuZGlmCisKKyAgICAgICAga2V5X3N0YXRlLT5z dGF0ZSA9IGxpYnNzaDJfTkJfc3RhdGVfY3JlYXRlZDsKKyAgICB9CisKKyAg ICBpZiAoa2V5X3N0YXRlLT5zdGF0ZSA9PSBsaWJzc2gyX05CX3N0YXRlX2Ny ZWF0ZWQpIHsKKyAgICAgICAgcmMgPSBfbGlic3NoMl90cmFuc3BvcnRfc2Vu ZChzZXNzaW9uLCBrZXlfc3RhdGUtPnJlcXVlc3QsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAga2V5X3N0YXRlLT5yZXF1ZXN0X2xl biwgTlVMTCwgMCk7CisgICAgICAgIGlmIChyYyA9PSBMSUJTU0gyX0VSUk9S X0VBR0FJTikgeworICAgICAgICAgICAgcmV0dXJuIHJjOworICAgICAgICB9 IGVsc2UgaWYgKHJjKSB7CisgICAgICAgICAgICByZXQgPSBfbGlic3NoMl9l cnJvcihzZXNzaW9uLCByYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJVbmFibGUgdG8gc2VuZCBHcm91cCBFeGNoYW5nZSBSZXF1ZXN0 IFNIQTI1NiIpOworICAgICAgICAgICAgZ290byBkaF9nZXhfY2xlYW5fZXhp dDsKKyAgICAgICAgfQorCisgICAgICAgIGtleV9zdGF0ZS0+c3RhdGUgPSBs aWJzc2gyX05CX3N0YXRlX3NlbnQ7CisgICAgfQorCisgICAgaWYgKGtleV9z dGF0ZS0+c3RhdGUgPT0gbGlic3NoMl9OQl9zdGF0ZV9zZW50KSB7CisgICAg ICAgIHJjID0gX2xpYnNzaDJfcGFja2V0X3JlcXVpcmUoc2Vzc2lvbiwgU1NI X01TR19LRVhfREhfR0VYX0dST1VQLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICZrZXlfc3RhdGUtPmRhdGEsICZrZXlfc3RhdGUt PmRhdGFfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDAsIE5VTEwsIDAsICZrZXlfc3RhdGUtPnJlcV9zdGF0ZSk7CisgICAg ICAgIGlmIChyYyA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikgeworICAgICAg ICAgICAgcmV0dXJuIHJjOworICAgICAgICB9IGVsc2UgaWYgKHJjKSB7Cisg ICAgICAgICAgICByZXQgPSBfbGlic3NoMl9lcnJvcihzZXNzaW9uLCByYywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaW1lb3V0IHdh aXRpbmcgZm9yIEdFWF9HUk9VUCByZXBseSBTSEEyNTYiKTsKKyAgICAgICAg ICAgIGdvdG8gZGhfZ2V4X2NsZWFuX2V4aXQ7CisgICAgICAgIH0KKworICAg ICAgICBrZXlfc3RhdGUtPnN0YXRlID0gbGlic3NoMl9OQl9zdGF0ZV9zZW50 MTsKKyAgICB9CisKKyAgICBpZiAoa2V5X3N0YXRlLT5zdGF0ZSA9PSBsaWJz c2gyX05CX3N0YXRlX3NlbnQxKSB7CisgICAgICAgIHVuc2lnbmVkIGNoYXIg KnMgPSBrZXlfc3RhdGUtPmRhdGEgKyAxOworICAgICAgICBwX2xlbiA9IF9s aWJzc2gyX250b2h1MzIocyk7CisgICAgICAgIHMgKz0gNDsKKyAgICAgICAg X2xpYnNzaDJfYm5fZnJvbV9iaW4oa2V5X3N0YXRlLT5wLCBwX2xlbiwgcyk7 CisgICAgICAgIHMgKz0gcF9sZW47CisKKyAgICAgICAgZ19sZW4gPSBfbGli c3NoMl9udG9odTMyKHMpOworICAgICAgICBzICs9IDQ7CisgICAgICAgIF9s aWJzc2gyX2JuX2Zyb21fYmluKGtleV9zdGF0ZS0+ZywgZ19sZW4sIHMpOwor CisgICAgICAgIHJldCA9IGRpZmZpZV9oZWxsbWFuX3NoYTI1NihzZXNzaW9u LCBrZXlfc3RhdGUtPmcsIGtleV9zdGF0ZS0+cCwgcF9sZW4sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTU0hfTVNHX0tFWF9ESF9H RVhfSU5JVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFNTSF9NU0dfS0VYX0RIX0dFWF9SRVBMWSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGtleV9zdGF0ZS0+ZGF0YSArIDEsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlfc3RhdGUtPmRh dGFfbGVuIC0gMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZrZXlfc3RhdGUtPmV4Y2hhbmdlX3N0YXRlKTsKKyAgICAgICAgaWYg KHJldCA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikgeworICAgICAgICAgICAg cmV0dXJuIHJldDsKKyAgICAgICAgfQorCisgICAgICAgIExJQlNTSDJfRlJF RShzZXNzaW9uLCBrZXlfc3RhdGUtPmRhdGEpOworICAgIH0KKworICBkaF9n ZXhfY2xlYW5fZXhpdDoKKyAgICBrZXlfc3RhdGUtPnN0YXRlID0gbGlic3No Ml9OQl9zdGF0ZV9pZGxlOworICAgIF9saWJzc2gyX2JuX2ZyZWUoa2V5X3N0 YXRlLT5nKTsKKyAgICBrZXlfc3RhdGUtPmcgPSBOVUxMOworICAgIF9saWJz c2gyX2JuX2ZyZWUoa2V5X3N0YXRlLT5wKTsKKyAgICBrZXlfc3RhdGUtPnAg PSBOVUxMOworCisgICAgcmV0dXJuIHJldDsKK30KKworCiAjZGVmaW5lIExJ QlNTSDJfS0VYX01FVEhPRF9GTEFHX1JFUV9FTkNfSE9TVEtFWSAgICAgMHgw MDAxCiAjZGVmaW5lIExJQlNTSDJfS0VYX01FVEhPRF9GTEFHX1JFUV9TSUdO X0hPU1RLRVkgICAgMHgwMDAyCiAKQEAgLTkzNiw5ICsxNzAwLDE3IEBAIGtl eF9tZXRob2RfZGlmZmllX2hlbG1hbl9ncm91cF9leGNoYW5nZV9zaGExID0g ewogICAgIExJQlNTSDJfS0VYX01FVEhPRF9GTEFHX1JFUV9TSUdOX0hPU1RL RVksCiB9OwogCitzdGF0aWMgY29uc3QgTElCU1NIMl9LRVhfTUVUSE9ECitr ZXhfbWV0aG9kX2RpZmZpZV9oZWxtYW5fZ3JvdXBfZXhjaGFuZ2Vfc2hhMjU2 ID0geworICAgICJkaWZmaWUtaGVsbG1hbi1ncm91cC1leGNoYW5nZS1zaGEy NTYiLAorICAgIGtleF9tZXRob2RfZGlmZmllX2hlbGxtYW5fZ3JvdXBfZXhj aGFuZ2Vfc2hhMjU2X2tleV9leGNoYW5nZSwKKyAgICBMSUJTU0gyX0tFWF9N RVRIT0RfRkxBR19SRVFfU0lHTl9IT1NUS0VZLAorfTsKKwogc3RhdGljIGNv bnN0IExJQlNTSDJfS0VYX01FVEhPRCAqbGlic3NoMl9rZXhfbWV0aG9kc1td ID0gewotICAgICZrZXhfbWV0aG9kX2RpZmZpZV9oZWxtYW5fZ3JvdXAxNF9z aGExLAorICAgICZrZXhfbWV0aG9kX2RpZmZpZV9oZWxtYW5fZ3JvdXBfZXhj aGFuZ2Vfc2hhMjU2LAogICAgICZrZXhfbWV0aG9kX2RpZmZpZV9oZWxtYW5f Z3JvdXBfZXhjaGFuZ2Vfc2hhMSwKKyAgICAma2V4X21ldGhvZF9kaWZmaWVf aGVsbWFuX2dyb3VwMTRfc2hhMSwKICAgICAma2V4X21ldGhvZF9kaWZmaWVf aGVsbWFuX2dyb3VwMV9zaGExLAogICAgIE5VTEwKIH07CkBAIC0xNTQ5LDYg KzIzMjEsMzAgQEAgc3RhdGljIGludCBrZXhfYWdyZWVfY29tcChMSUJTU0gy X1NFU1NJT04gKnNlc3Npb24sCiAgKiBUaGUgQ2xpZW50IGdldHMgdG8gbWFr ZSB0aGUgZmluYWwgY2FsbCBvbiAiYWdyZWVkIG1ldGhvZHMiCiAgKi8KIAor LyoKKyAqIGtleF9zdHJpbmdfcGFpcigpIGV4dHJhY3RzIGEgc3RyaW5nIGZy b20gdGhlIHBhY2tldCBhbmQgbWFrZXMgc3VyZSBpdCBmaXRzCisgKiB3aXRo aW4gdGhlIGdpdmVuIHBhY2tldC4KKyAqLworc3RhdGljIGludCBrZXhfc3Ry aW5nX3BhaXIodW5zaWduZWQgY2hhciAqKnNwLCAgIC8qIHBhcnNpbmcgcG9z aXRpb24gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGNoYXIgKmRhdGEsICAvKiBzdGFydCBwb2ludGVyIHRvIHBhY2tldCAqLwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRhdGFfbGVuLCAg ICAgIC8qIHNpemUgb2YgdG90YWwgcGFja2V0ICovCisgICAgICAgICAgICAg ICAgICAgICAgICAgICBzaXplX3QgKmxlbnAsICAgICAgICAgLyogbGVuZ3Ro IG9mIHRoZSBzdHJpbmcgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGNoYXIgKipzdHJwKSAvKiBwb2ludGVyIHRvIHN0cmluZyBz dGFydCAqLworeworICAgIHVuc2lnbmVkIGNoYXIgKnMgPSAqc3A7CisgICAg KmxlbnAgPSBfbGlic3NoMl9udG9odTMyKHMpOworCisgICAgLyogdGhlIGxl bmd0aCBvZiB0aGUgc3RyaW5nIG11c3QgZml0IHdpdGhpbiB0aGUgY3VycmVu dCBwb2ludGVyIGFuZCB0aGUKKyAgICAgICBlbmQgb2YgdGhlIHBhY2tldCAq LworICAgIGlmICgqbGVucCA+IChkYXRhX2xlbiAtIChzIC0gZGF0YSkgLTQp KQorICAgICAgICByZXR1cm4gMTsKKyAgICAqc3RycCA9IHMgKyA0OworICAg IHMgKz0gNCArICpsZW5wOworCisgICAgKnNwID0gczsKKyAgICByZXR1cm4g MDsKK30KKwogLyoga2V4X2FncmVlX21ldGhvZHMKICAqIERlY2lkZSB3aGlj aCBzcGVjaWZpYyBtZXRob2QgdG8gdXNlIG9mIHRoZSBtZXRob2RzIG9mZmVy ZWQgYnkgZWFjaCBwYXJ0eQogICovCkBAIC0xNTY4LDM4ICsyMzY0LDIzIEBA IHN0YXRpYyBpbnQga2V4X2FncmVlX21ldGhvZHMoTElCU1NIMl9TRVNTSU9O ICogc2Vzc2lvbiwgdW5zaWduZWQgY2hhciAqZGF0YSwKICAgICBzICs9IDE2 OwogCiAgICAgLyogTG9jYXRlIGVhY2ggc3RyaW5nICovCi0gICAga2V4X2xl biA9IF9saWJzc2gyX250b2h1MzIocyk7Ci0gICAga2V4ID0gcyArIDQ7Ci0g ICAgcyArPSA0ICsga2V4X2xlbjsKLSAgICBob3N0a2V5X2xlbiA9IF9saWJz c2gyX250b2h1MzIocyk7Ci0gICAgaG9zdGtleSA9IHMgKyA0OwotICAgIHMg Kz0gNCArIGhvc3RrZXlfbGVuOwotICAgIGNyeXB0X2NzX2xlbiA9IF9saWJz c2gyX250b2h1MzIocyk7Ci0gICAgY3J5cHRfY3MgPSBzICsgNDsKLSAgICBz ICs9IDQgKyBjcnlwdF9jc19sZW47Ci0gICAgY3J5cHRfc2NfbGVuID0gX2xp YnNzaDJfbnRvaHUzMihzKTsKLSAgICBjcnlwdF9zYyA9IHMgKyA0OwotICAg IHMgKz0gNCArIGNyeXB0X3NjX2xlbjsKLSAgICBtYWNfY3NfbGVuID0gX2xp YnNzaDJfbnRvaHUzMihzKTsKLSAgICBtYWNfY3MgPSBzICsgNDsKLSAgICBz ICs9IDQgKyBtYWNfY3NfbGVuOwotICAgIG1hY19zY19sZW4gPSBfbGlic3No Ml9udG9odTMyKHMpOwotICAgIG1hY19zYyA9IHMgKyA0OwotICAgIHMgKz0g NCArIG1hY19zY19sZW47Ci0gICAgY29tcF9jc19sZW4gPSBfbGlic3NoMl9u dG9odTMyKHMpOwotICAgIGNvbXBfY3MgPSBzICsgNDsKLSAgICBzICs9IDQg KyBjb21wX2NzX2xlbjsKLSAgICBjb21wX3NjX2xlbiA9IF9saWJzc2gyX250 b2h1MzIocyk7Ci0gICAgY29tcF9zYyA9IHMgKyA0OwotI2lmIDAKLSAgICBz ICs9IDQgKyBjb21wX3NjX2xlbjsKLSAgICBsYW5nX2NzX2xlbiA9IF9saWJz c2gyX250b2h1MzIocyk7Ci0gICAgbGFuZ19jcyA9IHMgKyA0OwotICAgIHMg Kz0gNCArIGxhbmdfY3NfbGVuOwotICAgIGxhbmdfc2NfbGVuID0gX2xpYnNz aDJfbnRvaHUzMihzKTsKLSAgICBsYW5nX3NjID0gcyArIDQ7Ci0gICAgcyAr PSA0ICsgbGFuZ19zY19sZW47Ci0jZW5kaWYKKyAgICBpZihrZXhfc3RyaW5n X3BhaXIoJnMsIGRhdGEsIGRhdGFfbGVuLCAma2V4X2xlbiwgJmtleCkpCisg ICAgICAgIHJldHVybiAtMTsKKyAgICBpZihrZXhfc3RyaW5nX3BhaXIoJnMs IGRhdGEsIGRhdGFfbGVuLCAmaG9zdGtleV9sZW4sICZob3N0a2V5KSkKKyAg ICAgICAgcmV0dXJuIC0xOworICAgIGlmKGtleF9zdHJpbmdfcGFpcigmcywg ZGF0YSwgZGF0YV9sZW4sICZjcnlwdF9jc19sZW4sICZjcnlwdF9jcykpCisg ICAgICAgIHJldHVybiAtMTsKKyAgICBpZihrZXhfc3RyaW5nX3BhaXIoJnMs IGRhdGEsIGRhdGFfbGVuLCAmY3J5cHRfc2NfbGVuLCAmY3J5cHRfc2MpKQor ICAgICAgICByZXR1cm4gLTE7CisgICAgaWYoa2V4X3N0cmluZ19wYWlyKCZz LCBkYXRhLCBkYXRhX2xlbiwgJm1hY19jc19sZW4sICZtYWNfY3MpKQorICAg ICAgICByZXR1cm4gLTE7CisgICAgaWYoa2V4X3N0cmluZ19wYWlyKCZzLCBk YXRhLCBkYXRhX2xlbiwgJm1hY19zY19sZW4sICZtYWNfc2MpKQorICAgICAg ICByZXR1cm4gLTE7CisgICAgaWYoa2V4X3N0cmluZ19wYWlyKCZzLCBkYXRh LCBkYXRhX2xlbiwgJmNvbXBfY3NfbGVuLCAmY29tcF9jcykpCisgICAgICAg IHJldHVybiAtMTsKKyAgICBpZihrZXhfc3RyaW5nX3BhaXIoJnMsIGRhdGEs IGRhdGFfbGVuLCAmY29tcF9zY19sZW4sICZjb21wX3NjKSkKKyAgICAgICAg cmV0dXJuIC0xOworCiAgICAgLyogSWYgdGhlIHNlcnZlciBzZW50IGFuIG9w dGltaXN0aWMgcGFja2V0LCBhc3N1bWUgdGhhdCBpdCBndWVzc2VkIHdyb25n LgogICAgICAqIElmIHRoZSBndWVzcyBpcyBkZXRlcm1pbmVkIHRvIGJlIHJp Z2h0IChieSBrZXhfYWdyZWVfa2V4X2hvc3RrZXkpCiAgICAgICogVGhpcyBm bGFnIHdpbGwgYmUgcmVzZXQgdG8gemVybyBzbyB0aGF0IGl0J3Mgbm90IGln bm9yZWQgKi8KQEAgLTE2NjYsNyArMjQ0Nyw3IEBAIHN0YXRpYyBpbnQga2V4 X2FncmVlX21ldGhvZHMoTElCU1NIMl9TRVNTSU9OICogc2Vzc2lvbiwgdW5z aWduZWQgY2hhciAqZGF0YSwKICAqLwogaW50CiBfbGlic3NoMl9rZXhfZXhj aGFuZ2UoTElCU1NIMl9TRVNTSU9OICogc2Vzc2lvbiwgaW50IHJlZXhjaGFu Z2UsCi0gICAgICAgICAgICAgICAgICAgICBrZXlfZXhjaGFuZ2Vfc3RhdGVf dCAqIGtleV9zdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgICBrZXlfZXhj aGFuZ2Vfc3RhdGVfdCAqIGtleV9zdGF0ZSkKIHsKICAgICBpbnQgcmMgPSAw OwogICAgIGludCByZXRjb2RlOwpAQCAtMTc1Niw3ICsyNTM3LDcgQEAgX2xp YnNzaDJfa2V4X2V4Y2hhbmdlKExJQlNTSDJfU0VTU0lPTiAqIHNlc3Npb24s IGludCByZWV4Y2hhbmdlLAogICAgICAgICBrZXlfc3RhdGUtPnN0YXRlID0g bGlic3NoMl9OQl9zdGF0ZV9zZW50MjsKICAgICB9CiAKLSAgICBpZiAocmMg PT0gMCkgeworICAgIGlmIChyYyA9PSAwICYmIHNlc3Npb24tPmtleCkgewog ICAgICAgICBpZiAoa2V5X3N0YXRlLT5zdGF0ZSA9PSBsaWJzc2gyX05CX3N0 YXRlX3NlbnQyKSB7CiAgICAgICAgICAgICByZXRjb2RlID0gc2Vzc2lvbi0+ a2V4LT5leGNoYW5nZV9rZXlzKHNlc3Npb24sCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZrZXlfc3RhdGUt PmtleV9zdGF0ZV9sb3cpOwpAQCAtMTg2Niw3ICsyNjQ3LDcgQEAgbGlic3No Ml9zZXNzaW9uX21ldGhvZF9wcmVmKExJQlNTSDJfU0VTU0lPTiAqIHNlc3Np b24sIGludCBtZXRob2RfdHlwZSwKICAgICB9CiAgICAgbWVtY3B5KHMsIHBy ZWZzLCBwcmVmc19sZW4gKyAxKTsKIAotICAgIHdoaWxlIChzICYmICpzKSB7 CisgICAgd2hpbGUgKHMgJiYgKnMgJiYgbWxpc3QpIHsKICAgICAgICAgY2hh ciAqcCA9IHN0cmNocihzLCAnLCcpOwogICAgICAgICBpbnQgbWV0aG9kX2xl biA9IHAgPyAocCAtIHMpIDogKGludCkgc3RybGVuKHMpOwogCmRpZmYgLS1n aXQgYS9wZ2FkbWluL2xpYnNzaDIva25vd25ob3N0LmMgYi9wZ2FkbWluL2xp YnNzaDIva25vd25ob3N0LmMKaW5kZXggMTA4N2JjMi4uYTMyZGNmOCAxMDA2 NDQKLS0tIGEvcGdhZG1pbi9saWJzc2gyL2tub3duaG9zdC5jCisrKyBiL3Bn YWRtaW4vbGlic3NoMi9rbm93bmhvc3QuYwpAQCAtMSw1ICsxLDUgQEAKIC8q Ci0gKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMSBieSBEYW5pZWwgU3RlbmJl cmcKKyAqIENvcHlyaWdodCAoYykgMjAwOS0yMDE0IGJ5IERhbmllbCBTdGVu YmVyZwogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLApA QCAtNTAsNyArNTAsMTEgQEAgc3RydWN0IGtub3duX2hvc3QgewogICAgIHNp emVfdCBzYWx0X2xlbjsgLyogc2l6ZSBvZiBzYWx0ICovCiAgICAgY2hhciAq a2V5OyAgICAgICAvKiB0aGUgKGFsbG9jYXRlZCkgYXNzb2NpYXRlZCBrZXku IFRoaXMgaXMga2VwdCBiYXNlNjQKICAgICAgICAgICAgICAgICAgICAgICAg IGVuY29kZWQgaW4gbWVtb3J5LiAqLwotICAgIGNoYXIgKmNvbW1lbnQ7ICAg LyogdGhlIChhbGxvY2F0ZWQpIG9wdGlvbmFsIGNvbW1lbnQgdGV4dCwgbWF5 IGJlIE5VTEwgKi8KKyAgICBjaGFyICprZXlfdHlwZV9uYW1lOyAvKiB0aGUg KGFsbG9jYXRlZCkga2V5IHR5cGUgbmFtZSAqLworICAgIHNpemVfdCBrZXlf dHlwZV9sZW47IC8qIHNpemUgb2Yga2V5X3R5cGVfbmFtZSAqLworICAgIGNo YXIgKmNvbW1lbnQ7ICAgICAgIC8qIHRoZSAoYWxsb2NhdGVkKSBvcHRpb25h bCBjb21tZW50IHRleHQsIG1heSBiZQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE5VTEwgKi8KKyAgICBzaXplX3QgY29tbWVudF9sZW47ICAvKiB0 aGUgc2l6ZSBvZiBjb21tZW50ICovCiAKICAgICAvKiB0aGlzIGlzIHRoZSBz dHJ1Y3Qgd2UgZXhwb3NlIGV4dGVybmFsbHkgKi8KICAgICBzdHJ1Y3QgbGli c3NoMl9rbm93bmhvc3QgZXh0ZXJuYWw7CkBAIC02Nyw2ICs3MSw4IEBAIHN0 YXRpYyB2b2lkIGZyZWVfaG9zdChMSUJTU0gyX1NFU1NJT04gKnNlc3Npb24s IHN0cnVjdCBrbm93bl9ob3N0ICplbnRyeSkKICAgICBpZihlbnRyeSkgewog ICAgICAgICBpZihlbnRyeS0+Y29tbWVudCkKICAgICAgICAgICAgIExJQlNT SDJfRlJFRShzZXNzaW9uLCBlbnRyeS0+Y29tbWVudCk7CisgICAgICAgIGlm IChlbnRyeS0+a2V5X3R5cGVfbmFtZSkKKyAgICAgICAgICAgIExJQlNTSDJf RlJFRShzZXNzaW9uLCBlbnRyeS0+a2V5X3R5cGVfbmFtZSk7CiAgICAgICAg IGlmKGVudHJ5LT5rZXkpCiAgICAgICAgICAgICBMSUJTU0gyX0ZSRUUoc2Vz c2lvbiwgZW50cnktPmtleSk7CiAgICAgICAgIGlmKGVudHJ5LT5zYWx0KQpA QCAtMTI3LDYgKzEzMyw3IEBAIHN0YXRpYyBzdHJ1Y3QgbGlic3NoMl9rbm93 bmhvc3QgKmtub3duaG9zdF90b19leHRlcm5hbChzdHJ1Y3Qga25vd25faG9z dCAqbm9kZSkKIHN0YXRpYyBpbnQKIGtub3duaG9zdF9hZGQoTElCU1NIMl9L Tk9XTkhPU1RTICpob3N0cywKICAgICAgICAgICAgICAgY29uc3QgY2hhciAq aG9zdCwgY29uc3QgY2hhciAqc2FsdCwKKyAgICAgICAgICAgICAgY29uc3Qg Y2hhciAqa2V5X3R5cGVfbmFtZSwgc2l6ZV90IGtleV90eXBlX2xlbiwKICAg ICAgICAgICAgICAgY29uc3QgY2hhciAqa2V5LCBzaXplX3Qga2V5bGVuLAog ICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb21tZW50LCBzaXplX3QgY29t bWVudGxlbiwKICAgICAgICAgICAgICAgaW50IHR5cGVtYXNrLCBzdHJ1Y3Qg bGlic3NoMl9rbm93bmhvc3QgKipzdG9yZSkKQEAgLTE0MiwxMyArMTQ5LDEx IEBAIGtub3duaG9zdF9hZGQoTElCU1NIMl9LTk9XTkhPU1RTICpob3N0cywK ICAgICAgICAgcmV0dXJuIF9saWJzc2gyX2Vycm9yKGhvc3RzLT5zZXNzaW9u LCBMSUJTU0gyX0VSUk9SX0lOVkFMLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIk5vIGtleSB0eXBlIHNldCIpOwogCi0gICAgaWYoIShlbnRy eSA9IExJQlNTSDJfQUxMT0MoaG9zdHMtPnNlc3Npb24sIHNpemVvZihzdHJ1 Y3Qga25vd25faG9zdCkpKSkKKyAgICBpZighKGVudHJ5ID0gTElCU1NIMl9D QUxMT0MoaG9zdHMtPnNlc3Npb24sIHNpemVvZihzdHJ1Y3Qga25vd25faG9z dCkpKSkKICAgICAgICAgcmV0dXJuIF9saWJzc2gyX2Vycm9yKGhvc3RzLT5z ZXNzaW9uLCBMSUJTU0gyX0VSUk9SX0FMTE9DLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIlVuYWJsZSB0byBhbGxvY2F0ZSBtZW1vcnkgZm9y IGtub3duIGhvc3QgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ImVudHJ5Iik7CiAKLSAgICBtZW1zZXQoZW50cnksIDAsIHNpemVvZihzdHJ1 Y3Qga25vd25faG9zdCkpOwotCiAgICAgZW50cnktPnR5cGVtYXNrID0gdHlw ZW1hc2s7CiAKICAgICBzd2l0Y2goZW50cnktPnR5cGVtYXNrICAmIExJQlNT SDJfS05PV05IT1NUX1RZUEVfTUFTSykgewpAQCAtMTYxLDYgKzE2Niw3IEBA IGtub3duaG9zdF9hZGQoTElCU1NIMl9LTk9XTkhPU1RTICpob3N0cywKICAg ICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KICAgICAgICAgbWVt Y3B5KGVudHJ5LT5uYW1lLCBob3N0LCBob3N0bGVuKzEpOworICAgICAgICBl bnRyeS0+bmFtZV9sZW4gPSBob3N0bGVuOwogICAgICAgICBicmVhazsKICAg ICBjYXNlIExJQlNTSDJfS05PV05IT1NUX1RZUEVfU0hBMToKICAgICAgICAg cmMgPSBsaWJzc2gyX2Jhc2U2NF9kZWNvZGUoaG9zdHMtPnNlc3Npb24sICZw dHIsICZwdHJsZW4sCkBAIC0yMTAsNiArMjE2LDE5IEBAIGtub3duaG9zdF9h ZGQoTElCU1NIMl9LTk9XTkhPU1RTICpob3N0cywKICAgICAgICAgZW50cnkt PmtleSA9IHB0cjsKICAgICB9CiAKKyAgICBpZiAoa2V5X3R5cGVfbmFtZSAm JiAoKHR5cGVtYXNrICYgTElCU1NIMl9LTk9XTkhPU1RfS0VZX01BU0spID09 CisgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlNTSDJfS05PV05IT1NU X0tFWV9VTktOT1dOKSkgeworICAgICAgICBlbnRyeS0+a2V5X3R5cGVfbmFt ZSA9IExJQlNTSDJfQUxMT0MoaG9zdHMtPnNlc3Npb24sIGtleV90eXBlX2xl bisxKTsKKyAgICAgICAgaWYgKCFlbnRyeS0+a2V5X3R5cGVfbmFtZSkgewor ICAgICAgICAgICAgcmMgPSBfbGlic3NoMl9lcnJvcihob3N0cy0+c2Vzc2lv biwgTElCU1NIMl9FUlJPUl9BTExPQywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIlVuYWJsZSB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIGtl eSB0eXBlIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9 CisgICAgICAgIG1lbWNweShlbnRyeS0+a2V5X3R5cGVfbmFtZSwga2V5X3R5 cGVfbmFtZSwga2V5X3R5cGVfbGVuKTsKKyAgICAgICAgZW50cnktPmtleV90 eXBlX25hbWVba2V5X3R5cGVfbGVuXT0wOworICAgICAgICBlbnRyeS0+a2V5 X3R5cGVfbGVuID0ga2V5X3R5cGVfbGVuOworICAgIH0KKwogICAgIGlmIChj b21tZW50KSB7CiAgICAgICAgIGVudHJ5LT5jb21tZW50ID0gTElCU1NIMl9B TExPQyhob3N0cy0+c2Vzc2lvbiwgY29tbWVudGxlbisxKTsKICAgICAgICAg aWYoIWVudHJ5LT5jb21tZW50KSB7CkBAIC0yMTksNiArMjM4LDcgQEAga25v d25ob3N0X2FkZChMSUJTU0gyX0tOT1dOSE9TVFMgKmhvc3RzLAogICAgICAg ICB9CiAgICAgICAgIG1lbWNweShlbnRyeS0+Y29tbWVudCwgY29tbWVudCwg Y29tbWVudGxlbisxKTsKICAgICAgICAgZW50cnktPmNvbW1lbnRbY29tbWVu dGxlbl09MDsgLyogZm9yY2UgYSB0ZXJtaW5hdGluZyB6ZXJvIHRyYWlsZXIg Ki8KKyAgICAgICAgZW50cnktPmNvbW1lbnRfbGVuID0gY29tbWVudGxlbjsK ICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGVudHJ5LT5jb21tZW50ID0g TlVMTDsKQEAgLTI2NCw4ICsyODQsOCBAQCBsaWJzc2gyX2tub3duaG9zdF9h ZGQoTElCU1NIMl9LTk9XTkhPU1RTICpob3N0cywKICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBjaGFyICprZXksIHNpemVfdCBrZXlsZW4sCiAgICAg ICAgICAgICAgICAgICAgICAgaW50IHR5cGVtYXNrLCBzdHJ1Y3QgbGlic3No Ml9rbm93bmhvc3QgKipzdG9yZSkKIHsKLSAgICByZXR1cm4ga25vd25ob3N0 X2FkZChob3N0cywgaG9zdCwgc2FsdCwga2V5LCBrZXlsZW4sIE5VTEwsIDAs IHR5cGVtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlKTsK KyAgICByZXR1cm4ga25vd25ob3N0X2FkZChob3N0cywgaG9zdCwgc2FsdCwg TlVMTCwgMCwga2V5LCBrZXlsZW4sIE5VTEwsCisgICAgICAgICAgICAgICAg ICAgICAgICAgMCwgdHlwZW1hc2ssIHN0b3JlKTsKIH0KIAogCkBAIC0zMDMs OCArMzIzLDggQEAgbGlic3NoMl9rbm93bmhvc3RfYWRkYyhMSUJTU0gyX0tO T1dOSE9TVFMgKmhvc3RzLAogICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBjaGFyICpjb21tZW50LCBzaXplX3QgY29tbWVudGxlbiwKICAgICAgICAg ICAgICAgICAgICAgICAgaW50IHR5cGVtYXNrLCBzdHJ1Y3QgbGlic3NoMl9r bm93bmhvc3QgKipzdG9yZSkKIHsKLSAgICByZXR1cm4ga25vd25ob3N0X2Fk ZChob3N0cywgaG9zdCwgc2FsdCwga2V5LCBrZXlsZW4sIGNvbW1lbnQsIGNv bW1lbnRsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW1hc2ss IHN0b3JlKTsKKyAgICByZXR1cm4ga25vd25ob3N0X2FkZChob3N0cywgaG9z dCwgc2FsdCwgTlVMTCwgMCwga2V5LCBrZXlsZW4sCisgICAgICAgICAgICAg ICAgICAgICAgICAgY29tbWVudCwgY29tbWVudGxlbiwgdHlwZW1hc2ssIHN0 b3JlKTsKIH0KIAogLyoKQEAgLTM0Niw2ICszNjYsMjQgQEAga25vd25ob3N0 X2NoZWNrKExJQlNTSDJfS05PV05IT1NUUyAqaG9zdHMsCiAgICAgICAgIC8q IHdlIGNhbid0IHdvcmsgd2l0aCBhIHNoYTEgYXMgZ2l2ZW4gaW5wdXQgKi8K ICAgICAgICAgcmV0dXJuIExJQlNTSDJfS05PV05IT1NUX0NIRUNLX01JU01B VENIOwogCisgICAgLyogaWYgYSBwb3J0IG51bWJlciBpcyBnaXZlbiwgY2hl Y2sgZm9yIGEgJ1tob3N0XTpwb3J0JyBmaXJzdCBiZWZvcmUgdGhlCisgICAg ICAgcGxhaW4gJ2hvc3QnICovCisgICAgaWYocG9ydCA+PSAwKSB7CisgICAg ICAgIGludCBsZW4gPSBzbnByaW50Zihob3N0YnVmZiwgc2l6ZW9mKGhvc3Ri dWZmKSwgIlslc106JWQiLCBob3N0cCwgcG9ydCk7CisgICAgICAgIGlmIChs ZW4gPCAwIHx8IGxlbiA+PSAoaW50KXNpemVvZihob3N0YnVmZikpIHsKKyAg ICAgICAgICAgIF9saWJzc2gyX2Vycm9yKGhvc3RzLT5zZXNzaW9uLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgTElCU1NIMl9FUlJPUl9CVUZGRVJf VE9PX1NNQUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIktub3du LWhvc3Qgd3JpdGUgYnVmZmVyIHRvbyBzbWFsbCIpOworICAgICAgICAgICAg cmV0dXJuIExJQlNTSDJfS05PV05IT1NUX0NIRUNLX0ZBSUxVUkU7CisgICAg ICAgIH0KKyAgICAgICAgaG9zdCA9IGhvc3RidWZmOworICAgICAgICBudW1j aGVjayA9IDI7IC8qIGNoZWNrIGJvdGggY29tYm9zLCBzdGFydCB3aXRoIHRo aXMgKi8KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGhvc3QgPSBob3N0 cDsKKyAgICAgICAgbnVtY2hlY2sgPSAxOyAvKiBvbmx5IGNoZWNrIHRoaXMg aG9zdCB2ZXJzaW9uICovCisgICAgfQorCiAgICAgaWYoISh0eXBlbWFzayAm IExJQlNTSDJfS05PV05IT1NUX0tFWUVOQ19CQVNFNjQpKSB7CiAgICAgICAg IC8qIHdlIGdvdCBhIHJhdyBrZXkgaW5wdXQsIGNvbnZlcnQgaXQgdG8gYmFz ZTY0IGZvciB0aGUgY2hlY2tzIGJlbG93ICovCiAgICAgICAgIHNpemVfdCBu bGVuID0gX2xpYnNzaDJfYmFzZTY0X2VuY29kZShob3N0cy0+c2Vzc2lvbiwg a2V5LCBrZXlsZW4sCkBAIC0zNjEsMTggKzM5OSw2IEBAIGtub3duaG9zdF9j aGVjayhMSUJTU0gyX0tOT1dOSE9TVFMgKmhvc3RzLAogICAgICAgICBrZXkg PSBrZXlhbGxvYzsKICAgICB9CiAKLSAgICAvKiBpZiBhIHBvcnQgbnVtYmVy IGlzIGdpdmVuLCBjaGVjayBmb3IgYSAnW2hvc3RdOnBvcnQnIGZpcnN0IGJl Zm9yZSB0aGUKLSAgICAgICBwbGFpbiAnaG9zdCcgKi8KLSAgICBpZihwb3J0 ID49IDApIHsKLSAgICAgICAgc25wcmludGYoaG9zdGJ1ZmYsIHNpemVvZiho b3N0YnVmZiksICJbJXNdOiVkIiwgaG9zdHAsIHBvcnQpOwotICAgICAgICBo b3N0ID0gaG9zdGJ1ZmY7Ci0gICAgICAgIG51bWNoZWNrID0gMjsgLyogY2hl Y2sgYm90aCBjb21ib3MsIHN0YXJ0IHdpdGggdGhpcyAqLwotICAgIH0KLSAg ICBlbHNlIHsKLSAgICAgICAgaG9zdCA9IGhvc3RwOwotICAgICAgICBudW1j aGVjayA9IDE7IC8qIG9ubHkgY2hlY2sgdGhpcyBob3N0IHZlcnNpb24gKi8K LSAgICB9Ci0KICAgICBkbyB7CiAgICAgICAgIG5vZGUgPSBfbGlic3NoMl9s aXN0X2ZpcnN0KCZob3N0cy0+aGVhZCk7CiAgICAgICAgIHdoaWxlIChub2Rl KSB7CkBAIC0zOTEsMTUgKzQxNywxNyBAQCBrbm93bmhvc3RfY2hlY2soTElC U1NIMl9LTk9XTkhPU1RTICpob3N0cywKICAgICAgICAgICAgICAgICAgICAg ICAgcGxhaW4gaW5wdXQgdG8gcHJvZHVjZSBhIGhhc2ggdG8gY29tcGFyZSB3 aXRoIHRoZQogICAgICAgICAgICAgICAgICAgICAgICBzdG9yZWQgaGFzaC4K ICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICAgICAg bGlic3NoMl9obWFjX2N0eCBjdHg7CiAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGNoYXIgaGFzaFtTSEFfRElHRVNUX0xFTkdUSF07CisgICAgICAg ICAgICAgICAgICAgIGxpYnNzaDJfaG1hY19jdHggY3R4OworICAgICAgICAg ICAgICAgICAgICBsaWJzc2gyX2htYWNfY3R4X2luaXQoY3R4KTsKIAogICAg ICAgICAgICAgICAgICAgICBpZihTSEFfRElHRVNUX0xFTkdUSCAhPSBub2Rl LT5uYW1lX2xlbikgewogICAgICAgICAgICAgICAgICAgICAgICAgLyogdGhl IG5hbWUgaGFzaCBsZW5ndGggbXVzdCBiZSB0aGUgc2hhMSBzaXplIG9yCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICB3ZSBjYW4ndCBtYXRjaCBpdCAq LwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgbGlic3NoMl9obWFj X3NoYTFfaW5pdCgmY3R4LCBub2RlLT5zYWx0LCBub2RlLT5zYWx0X2xlbik7 CisgICAgICAgICAgICAgICAgICAgIGxpYnNzaDJfaG1hY19zaGExX2luaXQo JmN0eCwgKHVuc2lnbmVkIGNoYXIgKilub2RlLT5zYWx0LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNhbHRf bGVuKTsKICAgICAgICAgICAgICAgICAgICAgbGlic3NoMl9obWFjX3VwZGF0 ZShjdHgsICh1bnNpZ25lZCBjaGFyICopaG9zdCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4oaG9zdCkpOwogICAg ICAgICAgICAgICAgICAgICBsaWJzc2gyX2htYWNfZmluYWwoY3R4LCBoYXNo KTsKQEAgLTQxNCwyMyArNDQyLDM1IEBAIGtub3duaG9zdF9jaGVjayhMSUJT U0gyX0tOT1dOSE9TVFMgKmhvc3RzLAogICAgICAgICAgICAgICAgIGJyZWFr OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYobWF0Y2gpIHsKLSAg ICAgICAgICAgICAgICAvKiBob3N0IG5hbWUgbWF0Y2gsIG5vdyBjb21wYXJl IHRoZSBrZXlzICovCi0gICAgICAgICAgICAgICAgaWYoIXN0cmNtcChrZXks IG5vZGUtPmtleSkpIHsKLSAgICAgICAgICAgICAgICAgICAgLyogdGhleSBt YXRjaCEgKi8KLSAgICAgICAgICAgICAgICAgICAgaWYgKGV4dCkKLSAgICAg ICAgICAgICAgICAgICAgICAgICpleHQgPSBrbm93bmhvc3RfdG9fZXh0ZXJu YWwobm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgIGJhZGtleSA9IE5VTEw7 Ci0gICAgICAgICAgICAgICAgICAgIHJjID0gTElCU1NIMl9LTk9XTkhPU1Rf Q0hFQ0tfTUFUQ0g7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAg ICAgICAgICAgICAgICAgLyogcmVtZW1iZXIgdGhlIGZpcnN0IG5vZGUgdGhh dCBoYWQgYSBob3N0IG1hdGNoIGJ1dCBhCi0gICAgICAgICAgICAgICAgICAg ICAgIGZhaWxlZCBrZXkgbWF0Y2ggc2luY2Ugd2UgY29udGludWUgb3VyIHNl YXJjaCBmcm9tCi0gICAgICAgICAgICAgICAgICAgICAgIGhlcmUgKi8KLSAg ICAgICAgICAgICAgICAgICAgaWYoIWJhZGtleSkKLSAgICAgICAgICAgICAg ICAgICAgICAgIGJhZGtleSA9IG5vZGU7Ci0gICAgICAgICAgICAgICAgICAg IG1hdGNoID0gMDsgLyogZG9uJ3QgY291bnQgdGhpcyBhcyBhIG1hdGNoIGFu eW1vcmUgKi8KKyAgICAgICAgICAgICAgICBpbnQgaG9zdF9rZXlfdHlwZSA9 IHR5cGVtYXNrICYgTElCU1NIMl9LTk9XTkhPU1RfS0VZX01BU0s7CisgICAg ICAgICAgICAgICAgaW50IGtub3duX2tleV90eXBlID0KKyAgICAgICAgICAg ICAgICAgICAgbm9kZS0+dHlwZW1hc2sgJiBMSUJTU0gyX0tOT1dOSE9TVF9L RVlfTUFTSzsKKyAgICAgICAgICAgICAgICAvKiBtYXRjaCBvbiBrZXkgdHlw ZSBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgIC0gbmV2ZXIgbWF0 Y2ggb24gYW4gdW5rbm93biBrZXkgdHlwZQorICAgICAgICAgICAgICAgICAg IC0gaWYga2V5X3R5cGUgaXMgc2V0IHRvIHplcm8sIGlnbm9yZSBpdCBhbiBt YXRjaCBhbHdheXMKKyAgICAgICAgICAgICAgICAgICAtIG90aGVyd2lzZSBt YXRjaCB3aGVuIGJvdGgga2V5IHR5cGVzIGFyZSBlcXVhbAorICAgICAgICAg ICAgICAgICovCisgICAgICAgICAgICAgICAgaWYgKCAoaG9zdF9rZXlfdHlw ZSAhPSBMSUJTU0gyX0tOT1dOSE9TVF9LRVlfVU5LTk9XTiApICYmCisgICAg ICAgICAgICAgICAgICAgICAoIChob3N0X2tleV90eXBlID09IDApIHx8Cisg ICAgICAgICAgICAgICAgICAgICAgIChob3N0X2tleV90eXBlID09IGtub3du X2tleV90eXBlKSApICkgeworICAgICAgICAgICAgICAgICAgICAvKiBob3N0 IG5hbWUgYW5kIGtleSB0eXBlIG1hdGNoLCBub3cgY29tcGFyZSB0aGUga2V5 cyAqLworICAgICAgICAgICAgICAgICAgICBpZighc3RyY21wKGtleSwgbm9k ZS0+a2V5KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLyogdGhleSBt YXRjaCEgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHQpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKmV4dCA9IGtub3duaG9zdF90 b19leHRlcm5hbChub2RlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJh ZGtleSA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgICAgICByYyA9IExJ QlNTSDJfS05PV05IT1NUX0NIRUNLX01BVENIOworICAgICAgICAgICAgICAg ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAg ICAvKiByZW1lbWJlciB0aGUgZmlyc3Qgbm9kZSB0aGF0IGhhZCBhIGhvc3Qg bWF0Y2ggYnV0IGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxl ZCBrZXkgbWF0Y2ggc2luY2Ugd2UgY29udGludWUgb3VyIHNlYXJjaCBmcm9t CisgICAgICAgICAgICAgICAgICAgICAgICAgICBoZXJlICovCisgICAgICAg ICAgICAgICAgICAgICAgICBpZighYmFka2V5KQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJhZGtleSA9IG5vZGU7CisgICAgICAgICAgICAgICAg ICAgIH0KICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbWF0 Y2ggPSAwOyAvKiBkb24ndCBjb3VudCB0aGlzIGFzIGEgbWF0Y2ggYW55bW9y ZSAqLwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbm9kZT0gX2xpYnNz aDJfbGlzdF9uZXh0KCZub2RlLT5ub2RlKTsKICAgICAgICAgfQpAQCAtNTcz LDYgKzYxMyw3IEBAIGxpYnNzaDJfa25vd25ob3N0X2ZyZWUoTElCU1NIMl9L Tk9XTkhPU1RTICpob3N0cykKICovCiBzdGF0aWMgaW50IG9sZHN0eWxlX2hv c3RsaW5lKExJQlNTSDJfS05PV05IT1NUUyAqaG9zdHMsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmhvc3QsIHNpemVfdCBo b3N0bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj aGFyICprZXlfdHlwZV9uYW1lLCBzaXplX3Qga2V5X3R5cGVfbGVuLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICprZXksIHNp emVfdCBrZXlsZW4sIGludCBrZXlfdHlwZSwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgY2hhciAqY29tbWVudCwgc2l6ZV90IGNvbW1l bnRsZW4pCiB7CkBAIC02MDcsNyArNjQ4LDkgQEAgc3RhdGljIGludCBvbGRz dHlsZV9ob3N0bGluZShMSUJTU0gyX0tOT1dOSE9TVFMgKmhvc3RzLAogICAg ICAgICAgICAgbWVtY3B5KGhvc3RidWYsIG5hbWUsIG5hbWVsZW4pOwogICAg ICAgICAgICAgaG9zdGJ1ZltuYW1lbGVuXT0wOwogCi0gICAgICAgICAgICBy YyA9IGtub3duaG9zdF9hZGQoaG9zdHMsIGhvc3RidWYsIE5VTEwsIGtleSwg a2V5bGVuLAorICAgICAgICAgICAgcmMgPSBrbm93bmhvc3RfYWRkKGhvc3Rz LCBob3N0YnVmLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGtleV90eXBlX25hbWUsIGtleV90eXBlX2xlbiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBrZXksIGtleWxlbiwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb21tZW50LCBjb21tZW50bGVuLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleV90eXBlIHwgTElCU1NI Ml9LTk9XTkhPU1RfVFlQRV9QTEFJTiB8CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTElCU1NIMl9LTk9XTkhPU1RfS0VZRU5DX0JBU0U2NCwg TlVMTCk7CkBAIC02MjcsNiArNjcwLDcgQEAgc3RhdGljIGludCBvbGRzdHls ZV9ob3N0bGluZShMSUJTU0gyX0tOT1dOSE9TVFMgKmhvc3RzLAogLyogfDF8 W3NhbHRdfFtoYXNoXSAqLwogc3RhdGljIGludCBoYXNoZWRfaG9zdGxpbmUo TElCU1NIMl9LTk9XTkhPU1RTICpob3N0cywKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGNoYXIgKmhvc3QsIHNpemVfdCBob3N0bGVuLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqa2V5X3R5 cGVfbmFtZSwgc2l6ZV90IGtleV90eXBlX2xlbiwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmtleSwgc2l6ZV90IGtleWxlbiwg aW50IGtleV90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgY2hhciAqY29tbWVudCwgc2l6ZV90IGNvbW1lbnRsZW4pCiB7CkBAIC02 NzAsOSArNzE0LDExIEBAIHN0YXRpYyBpbnQgaGFzaGVkX2hvc3RsaW5lKExJ QlNTSDJfS05PV05IT1NUUyAqaG9zdHMsCiAgICAgICAgIG1lbWNweShob3N0 YnVmLCBob3N0LCBob3N0bGVuKTsKICAgICAgICAgaG9zdGJ1Zltob3N0bGVu XT0wOwogCi0gICAgICAgIHJldHVybiBrbm93bmhvc3RfYWRkKGhvc3RzLCBo b3N0YnVmLCBzYWx0LCBrZXksIGtleWxlbiwgY29tbWVudCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29tbWVudGxlbiwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAga2V5X3R5cGUgfCBMSUJTU0gyX0tOT1dOSE9T VF9UWVBFX1NIQTEgfCAKKyAgICAgICAgcmV0dXJuIGtub3duaG9zdF9hZGQo aG9zdHMsIGhvc3RidWYsIHNhbHQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGtleV90eXBlX25hbWUsIGtleV90eXBlX2xlbiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAga2V5LCBrZXlsZW4sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbW1lbnQsIGNvbW1lbnRsZW4sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGtleV90eXBlIHwgTElCU1NIMl9L Tk9XTkhPU1RfVFlQRV9TSEExIHwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTElCU1NIMl9LTk9XTkhPU1RfS0VZRU5DX0JBU0U2NCwgTlVMTCk7 CiAgICAgfQogICAgIGVsc2UKQEAgLTY5NCw3ICs3NDAsOSBAQCBzdGF0aWMg aW50IGhvc3RsaW5lKExJQlNTSDJfS05PV05IT1NUUyAqaG9zdHMsCiAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmtleSwgc2l6ZV90IGtleWxl bikKIHsKICAgICBjb25zdCBjaGFyICpjb21tZW50ID0gTlVMTDsKKyAgICBj b25zdCBjaGFyICprZXlfdHlwZV9uYW1lID0gTlVMTDsKICAgICBzaXplX3Qg Y29tbWVudGxlbiA9IDA7CisgICAgc2l6ZV90IGtleV90eXBlX2xlbiA9IDA7 CiAgICAgaW50IGtleV90eXBlOwogCiAgICAgLyogbWFrZSBzb21lIGNoZWNr cyB0aGF0IHRoZSBsZW5ndGhzIHNlZW0gc2Vuc2libGUgKi8KQEAgLTcwMyw3 ICs3NTEsNyBAQCBzdGF0aWMgaW50IGhvc3RsaW5lKExJQlNTSDJfS05PV05I T1NUUyAqaG9zdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM SUJTU0gyX0VSUk9SX01FVEhPRF9OT1RfU1VQUE9SVEVELAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBwYXJzZSBrbm93bl9o b3N0cyBsaW5lICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIo a2V5IHRvbyBzaG9ydCkiKTsKLSAgICAKKwogICAgIHN3aXRjaChrZXlbMF0p IHsKICAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICcz JzogY2FzZSAnNCc6CiAgICAgY2FzZSAnNSc6IGNhc2UgJzYnOiBjYXNlICc3 JzogY2FzZSAnOCc6IGNhc2UgJzknOgpAQCAtNzE2LDE5ICs3NjQsMjEgQEAg c3RhdGljIGludCBob3N0bGluZShMSUJTU0gyX0tOT1dOSE9TVFMgKmhvc3Rz LAogICAgICAgICAgKi8KICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlICdz JzogLyogc3NoLWRzcyBvciBzc2gtcnNhICovCi0gICAgICAgIGlmKCFzdHJu Y21wKGtleSwgInNzaC1kc3MiLCA3KSkKKyAgICBkZWZhdWx0OgorICAgICAg ICBrZXlfdHlwZV9uYW1lID0ga2V5OworICAgICAgICB3aGlsZSAoa2V5bGVu ICYmICprZXkgJiYKKyAgICAgICAgICAgICAgICgqa2V5ICE9ICcgJykgJiYg KCprZXkgIT0gJ1x0JykpIHsKKyAgICAgICAgICAgIGtleSsrOworICAgICAg ICAgICAga2V5bGVuLS07CisgICAgICAgIH0KKyAgICAgICAga2V5X3R5cGVf bGVuID0ga2V5IC0ga2V5X3R5cGVfbmFtZTsKKworICAgICAgICBpZiAoIXN0 cm5jbXAoa2V5X3R5cGVfbmFtZSwgInNzaC1kc3MiLCBrZXlfdHlwZV9sZW4p KQogICAgICAgICAgICAga2V5X3R5cGUgPSBMSUJTU0gyX0tOT1dOSE9TVF9L RVlfU1NIRFNTOwotICAgICAgICBlbHNlIGlmKCFzdHJuY21wKGtleSwgInNz aC1yc2EiLCA3KSkKKyAgICAgICAgZWxzZSBpZiAoIXN0cm5jbXAoa2V5X3R5 cGVfbmFtZSwgInNzaC1yc2EiLCBrZXlfdHlwZV9sZW4pKQogICAgICAgICAg ICAga2V5X3R5cGUgPSBMSUJTU0gyX0tOT1dOSE9TVF9LRVlfU1NIUlNBOwog ICAgICAgICBlbHNlCi0gICAgICAgICAgICAvKiB1bmtub3duIGtleSB0eXBl ICovCi0gICAgICAgICAgICByZXR1cm4gX2xpYnNzaDJfZXJyb3IoaG9zdHMt PnNlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TElCU1NIMl9FUlJPUl9NRVRIT0RfTk9UX1NVUFBPUlRFRCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biBrZXkgdHlwZSIp OwotCi0gICAgICAgIGtleSArPSA3OwotICAgICAgICBrZXlsZW4gLT0gNzsK KyAgICAgICAgICAgIGtleV90eXBlID0gTElCU1NIMl9LTk9XTkhPU1RfS0VZ X1VOS05PV047CiAKICAgICAgICAgLyogc2tpcCB3aGl0ZXNwYWNlcyAqLwog ICAgICAgICB3aGlsZSgoKmtleSA9PScgJykgfHwgKCprZXkgPT0gJ1x0Jykp IHsKQEAgLTc2MCwxMSArODEwLDYgQEAgc3RhdGljIGludCBob3N0bGluZShM SUJTU0gyX0tOT1dOSE9TVFMgKmhvc3RzLAogICAgICAgICAgICAgY29tbWVu dGxlbi0tOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotCi0gICAgZGVm YXVsdDogLyogdW5rbm93biBrZXkgZm9ybWF0ICovCi0gICAgICAgIHJldHVy biBfbGlic3NoMl9lcnJvcihob3N0cy0+c2Vzc2lvbiwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIExJQlNTSDJfRVJST1JfTUVUSE9EX05PVF9T VVBQT1JURUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5r bm93biBrZXkgZm9ybWF0Iik7CiAgICAgfQogCiAgICAgLyogRmlndXJlIG91 dCBob3N0IGZvcm1hdCAqLwpAQCAtNzc0LDEyICs4MTksMTQgQEAgc3RhdGlj IGludCBob3N0bGluZShMSUJTU0gyX0tOT1dOSE9TVFMgKmhvc3RzLAogICAg ICAgICAgICBmb3IgdGhlIHNha2Ugb2Ygc2ltcGxpY2l0eSwgd2UgYWRkIHRo ZW0gYXMgc2VwYXJhdGUgaG9zdHMgd2l0aCB0aGUKICAgICAgICAgICAgc2Ft ZSBrZXkKICAgICAgICAgKi8KLSAgICAgICAgcmV0dXJuIG9sZHN0eWxlX2hv c3RsaW5lKGhvc3RzLCBob3N0LCBob3N0bGVuLCBrZXksIGtleWxlbiwga2V5 X3R5cGUsCisgICAgICAgIHJldHVybiBvbGRzdHlsZV9ob3N0bGluZShob3N0 cywgaG9zdCwgaG9zdGxlbiwga2V5X3R5cGVfbmFtZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGtleV90eXBlX2xlbiwga2V5LCBrZXls ZW4sIGtleV90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29tbWVudCwgY29tbWVudGxlbik7CiAgICAgfQogICAgIGVsc2Ugewog ICAgICAgICAvKiB8MXxbc2FsdF18W2hhc2hdICovCi0gICAgICAgIHJldHVy biBoYXNoZWRfaG9zdGxpbmUoaG9zdHMsIGhvc3QsIGhvc3RsZW4sIGtleSwg a2V5bGVuLCBrZXlfdHlwZSwKKyAgICAgICAgcmV0dXJuIGhhc2hlZF9ob3N0 bGluZShob3N0cywgaG9zdCwgaG9zdGxlbiwga2V5X3R5cGVfbmFtZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlfdHlwZV9sZW4sIGtl eSwga2V5bGVuLCBrZXlfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb21tZW50LCBjb21tZW50bGVuKTsKICAgICB9CiB9CkBAIC05 NDMsMTcgKzk5MCwxMCBAQCBrbm93bmhvc3Rfd3JpdGVsaW5lKExJQlNTSDJf S05PV05IT1NUUyAqaG9zdHMsCiAgICAgICAgICAgICAgICAgICAgIGNoYXIg KmJ1Ziwgc2l6ZV90IGJ1ZmxlbiwKICAgICAgICAgICAgICAgICAgICAgc2l6 ZV90ICpvdXRsZW4sIGludCB0eXBlKQogewotICAgIGludCByYyA9IExJQlNT SDJfRVJST1JfTk9ORTsKLSAgICBpbnQgdGluZGV4OwotICAgIGNvbnN0IGNo YXIgKmtleXR5cGVzWzRdPXsKLSAgICAgICAgIiIsIC8qIG5vdCB1c2VkICov Ci0gICAgICAgICIiLCAvKiB0aGlzIHR5cGUgaGFzIG5vIG5hbWUgaW4gdGhl IGZpbGUgKi8KLSAgICAgICAgIiBzc2gtcnNhIiwKLSAgICAgICAgIiBzc2gt ZHNzIgotICAgIH07Ci0gICAgY29uc3QgY2hhciAqa2V5dHlwZTsKLSAgICBz aXplX3QgbmxlbjsKLSAgICBzaXplX3QgY29tbWVudGxlbiA9IDA7CisgICAg c2l6ZV90IHJlcXVpcmVkX3NpemU7CisKKyAgICBjb25zdCBjaGFyICprZXlf dHlwZV9uYW1lOworICAgIHNpemVfdCBrZXlfdHlwZV9sZW47CiAKICAgICAv KiB3ZSBvbmx5IHN1cHBvcnQgdGhpcyBzaW5nbGUgZmlsZSB0eXBlIGZvciBu b3csIGJhaWwgb3V0IG9uIGFsbCBvdGhlcgogICAgICAgIGF0dGVtcHRzICov CkBAIC05NjMsNzUgKzEwMDMsMTMxIEBAIGtub3duaG9zdF93cml0ZWxpbmUo TElCU1NIMl9LTk9XTkhPU1RTICpob3N0cywKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJVbnN1cHBvcnRlZCB0eXBlIG9mIGtub3duLWhvc3Qg aW5mb3JtYXRpb24gIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg InN0b3JlIik7CiAKLSAgICB0aW5kZXggPSAobm9kZS0+dHlwZW1hc2sgJiBM SUJTU0gyX0tOT1dOSE9TVF9LRVlfTUFTSykgPj4KLSAgICAgICAgTElCU1NI Ml9LTk9XTkhPU1RfS0VZX1NISUZUOwotCi0gICAgLyogc2V0IHRoZSBzdHJp bmcgdXNlZCBpbiB0aGUgZmlsZSAqLwotICAgIGtleXR5cGUgPSBrZXl0eXBl c1t0aW5kZXhdOworICAgIHN3aXRjaChub2RlLT50eXBlbWFzayAmIExJQlNT SDJfS05PV05IT1NUX0tFWV9NQVNLKSB7CisgICAgY2FzZSBMSUJTU0gyX0tO T1dOSE9TVF9LRVlfUlNBMToKKyAgICAgICAga2V5X3R5cGVfbmFtZSA9IE5V TEw7CisgICAgICAgIGtleV90eXBlX2xlbiA9IDA7CisgICAgICAgIGJyZWFr OworICAgIGNhc2UgTElCU1NIMl9LTk9XTkhPU1RfS0VZX1NTSFJTQToKKyAg ICAgICAga2V5X3R5cGVfbmFtZSA9ICJzc2gtcnNhIjsKKyAgICAgICAga2V5 X3R5cGVfbGVuID0gNzsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMSUJT U0gyX0tOT1dOSE9TVF9LRVlfU1NIRFNTOgorICAgICAgICBrZXlfdHlwZV9u YW1lID0gInNzaC1kc3MiOworICAgICAgICBrZXlfdHlwZV9sZW4gPSA3Owor ICAgICAgICBicmVhazsKKyAgICBjYXNlIExJQlNTSDJfS05PV05IT1NUX0tF WV9VTktOT1dOOgorICAgICAgICBrZXlfdHlwZV9uYW1lID0gbm9kZS0+a2V5 X3R5cGVfbmFtZTsKKyAgICAgICAgaWYgKGtleV90eXBlX25hbWUpIHsKKyAg ICAgICAgICAgIGtleV90eXBlX2xlbiA9IG5vZGUtPmtleV90eXBlX2xlbjsK KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIC8qIG90 aGVyd2lzZSBmYWxsYmFjayB0byBkZWZhdWx0IGFuZCBlcnJvciAqLworICAg IGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBfbGlic3NoMl9lcnJvcihob3N0 cy0+c2Vzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJ QlNTSDJfRVJST1JfTUVUSE9EX05PVF9TVVBQT1JURUQsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiVW5zdXBwb3J0ZWQgdHlwZSBvZiBrbm93 bi1ob3N0IGVudHJ5Iik7CisgICAgfQogCi0gICAgLyogY2FsY3VsYXRlIGV4 dHJhIHNwYWNlIG5lZWRlZCBmb3IgY29tbWVudCAqLworICAgIC8qIFdoZW4g cHV0dGluZyB0b2dldGhlciB0aGUgaG9zdCBsaW5lIHRoZXJlIGFyZSB0aHJl ZSBhc3BlY3RzIHRvIGNvbnNpZGVyOgorICAgICAgIC0gSGFzaGVkIChTSEEx KSBvciB1bmhhc2hlZCBob3N0bmFtZQorICAgICAgIC0ga2V5IG5hbWUgb3Ig bm8ga2V5IG5hbWUgKFJTQTEpCisgICAgICAgLSBjb21tZW50IG9yIG5vIGNv bW1lbnQKKyAgICAgIAorICAgICAgIFRoaXMgbWVhbnMgdGhlcmUgYXJlIDJe MyBkaWZmZXJlbnQgZm9ybWF0czoKKyAgICAgICAoInwxfCVzfCVzICVzICVz ICVzXG4iLCBzYWx0LCBoYXNoZWRfaG9zdCwga2V5X25hbWUsIGtleSwgY29t bWVudCkKKyAgICAgICAoInwxfCVzfCVzICVzICVzXG4iLCBzYWx0LCBoYXNo ZWRfaG9zdCwga2V5X25hbWUsIGtleSkKKyAgICAgICAoInwxfCVzfCVzICVz ICVzXG4iLCBzYWx0LCBoYXNoZWRfaG9zdCwga2V5LCBjb21tZW50KQorICAg ICAgICgifDF8JXN8JXMgJXNcbiIsIHNhbHQsIGhhc2hlZF9ob3N0LCBrZXkp CisgICAgICAgKCIlcyAlcyAlcyAlc1xuIiwgaG9zdCwga2V5X25hbWUsIGtl eSwgY29tbWVudCkKKyAgICAgICAoIiVzICVzICVzXG4iLCBob3N0LCBrZXlf bmFtZSwga2V5KQorICAgICAgICgiJXMgJXMgJXNcbiIsIGhvc3QsIGtleSwg Y29tbWVudCkKKyAgICAgICAoIiVzICVzXG4iLCBob3N0LCBrZXkpCisgICAg ICAKKyAgICAgICBFdmVuIGlmIHRoZSBidWZmZXIgaXMgdG9vIHNtYWxsLCB3 ZSBoYXZlIHRvIHNldCBvdXRsZW4gdG8gdGhlIG51bWJlciBvZgorICAgICAg IGNoYXJhY3RlcnMgdGhlIGNvbXBsZXRlIGxpbmUgd291bGQgaGF2ZSB0YWtl bi4gIFdlIGFsc28gZG9uJ3Qgd3JpdGUKKyAgICAgICBhbnl0aGluZyB0byB0 aGUgYnVmZmVyIHVubGVzcyB3ZSBhcmUgc3VyZSB3ZSBjYW4gd3JpdGUgZXZl cnl0aGluZyB0byB0aGUKKyAgICAgICBidWZmZXIuICovCisKKyAgICByZXF1 aXJlZF9zaXplID0gc3RybGVuKG5vZGUtPmtleSk7CisKKyAgICBpZihrZXlf dHlwZV9sZW4pCisgICAgICAgIHJlcXVpcmVkX3NpemUgKz0ga2V5X3R5cGVf bGVuICsgMTsgLyogJyAnID0gMSAqLwogICAgIGlmKG5vZGUtPmNvbW1lbnQp Ci0gICAgICAgIGNvbW1lbnRsZW4gPSBzdHJsZW4obm9kZS0+Y29tbWVudCkg KyAxOworICAgICAgICByZXF1aXJlZF9zaXplICs9IG5vZGUtPmNvbW1lbnRf bGVuICsgMTsgLyogJyAnID0gMSAqLwogCiAgICAgaWYoKG5vZGUtPnR5cGVt YXNrICYgTElCU1NIMl9LTk9XTkhPU1RfVFlQRV9NQVNLKSA9PQogICAgICAg IExJQlNTSDJfS05PV05IT1NUX1RZUEVfU0hBMSkgewogICAgICAgICBjaGFy ICpuYW1lYWxsb2M7CisgICAgICAgIHNpemVfdCBuYW1lX2Jhc2U2NF9sZW47 CiAgICAgICAgIGNoYXIgKnNhbHRhbGxvYzsKLSAgICAgICAgbmxlbiA9IF9s aWJzc2gyX2Jhc2U2NF9lbmNvZGUoaG9zdHMtPnNlc3Npb24sIG5vZGUtPm5h bWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5v ZGUtPm5hbWVfbGVuLCAmbmFtZWFsbG9jKTsKLSAgICAgICAgaWYoIW5sZW4p CisgICAgICAgIHNpemVfdCBzYWx0X2Jhc2U2NF9sZW47CisKKyAgICAgICAg bmFtZV9iYXNlNjRfbGVuID0gX2xpYnNzaDJfYmFzZTY0X2VuY29kZShob3N0 cy0+c2Vzc2lvbiwgbm9kZS0+bmFtZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5uYW1lX2xlbiwg Jm5hbWVhbGxvYyk7CisgICAgICAgIGlmKCFuYW1lX2Jhc2U2NF9sZW4pCiAg ICAgICAgICAgICByZXR1cm4gX2xpYnNzaDJfZXJyb3IoaG9zdHMtPnNlc3Np b24sIExJQlNTSDJfRVJST1JfQUxMT0MsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIlVuYWJsZSB0byBhbGxvY2F0ZSBtZW1vcnkgZm9y ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFzZTY0 LWVuY29kZWQgaG9zdCBuYW1lIik7CiAKLSAgICAgICAgbmxlbiA9IF9saWJz c2gyX2Jhc2U2NF9lbmNvZGUoaG9zdHMtPnNlc3Npb24sCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnNhbHQsIG5vZGUt PnNhbHRfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmc2FsdGFsbG9jKTsKLSAgICAgICAgaWYoIW5sZW4pIHsKLSAgICAg ICAgICAgIGZyZWUobmFtZWFsbG9jKTsKKyAgICAgICAgc2FsdF9iYXNlNjRf bGVuID0gX2xpYnNzaDJfYmFzZTY0X2VuY29kZShob3N0cy0+c2Vzc2lvbiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBub2RlLT5zYWx0LCBub2RlLT5zYWx0X2xlbiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2FsdGFs bG9jKTsKKyAgICAgICAgaWYoIXNhbHRfYmFzZTY0X2xlbikgeworICAgICAg ICAgICAgTElCU1NIMl9GUkVFKGhvc3RzLT5zZXNzaW9uLCBuYW1lYWxsb2Mp OwogICAgICAgICAgICAgcmV0dXJuIF9saWJzc2gyX2Vycm9yKGhvc3RzLT5z ZXNzaW9uLCBMSUJTU0gyX0VSUk9SX0FMTE9DLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJVbmFibGUgdG8gYWxsb2NhdGUgbWVtb3J5 IGZvciAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJh c2U2NC1lbmNvZGVkIHNhbHQiKTsKICAgICAgICAgfQogCi0gICAgICAgIG5s ZW4gPSBzdHJsZW4oc2FsdGFsbG9jKSArIHN0cmxlbihuYW1lYWxsb2MpICsg c3RybGVuKGtleXR5cGUpICsKLSAgICAgICAgICAgIHN0cmxlbihub2RlLT5r ZXkpICsgY29tbWVudGxlbiArIDc7CisgICAgICAgIHJlcXVpcmVkX3NpemUg Kz0gc2FsdF9iYXNlNjRfbGVuICsgbmFtZV9iYXNlNjRfbGVuICsgNzsKICAg ICAgICAgLyogfDF8ICsgfCArICcgJyArIFxuICsgXDAgPSA3ICovCiAKLSAg ICAgICAgaWYobmxlbiA8PSBidWZsZW4pCi0gICAgICAgICAgICBpZihub2Rl LT5jb21tZW50KQotICAgICAgICAgICAgICAgIHNucHJpbnRmKGJ1ZiwgYnVm bGVuLCAifDF8JXN8JXMlcyAlcyAlc1xuIiwgc2FsdGFsbG9jLCBuYW1lYWxs b2MsCi0gICAgICAgICAgICAgICAgICAgICAgICBrZXl0eXBlLCBub2RlLT5r ZXksIG5vZGUtPmNvbW1lbnQpOworICAgICAgICBpZihyZXF1aXJlZF9zaXpl IDw9IGJ1ZmxlbikgeworICAgICAgICAgICAgaWYobm9kZS0+Y29tbWVudCAm JiBrZXlfdHlwZV9sZW4pCisgICAgICAgICAgICAgICAgc25wcmludGYoYnVm LCBidWZsZW4sICJ8MXwlc3wlcyAlcyAlcyAlc1xuIiwgc2FsdGFsbG9jLAor ICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVhbGxvYywga2V5X3R5cGVf bmFtZSwgbm9kZS0+a2V5LCBub2RlLT5jb21tZW50KTsKKyAgICAgICAgICAg IGVsc2UgaWYgKG5vZGUtPmNvbW1lbnQpCisgICAgICAgICAgICAgICAgc25w cmludGYoYnVmLCBidWZsZW4sICJ8MXwlc3wlcyAlcyAlc1xuIiwgc2FsdGFs bG9jLCBuYW1lYWxsb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgbm9k ZS0+a2V5LCBub2RlLT5jb21tZW50KTsKKyAgICAgICAgICAgIGVsc2UgaWYg KGtleV90eXBlX2xlbikKKyAgICAgICAgICAgICAgICBzbnByaW50ZihidWYs IGJ1ZmxlbiwgInwxfCVzfCVzICVzICVzXG4iLCBzYWx0YWxsb2MsIG5hbWVh bGxvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICBrZXlfdHlwZV9uYW1l LCBub2RlLT5rZXkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg ICAgIHNucHJpbnRmKGJ1ZiwgYnVmbGVuLCAifDF8JXN8JXMlcyAlc1xuIiwg c2FsdGFsbG9jLCBuYW1lYWxsb2MsCi0gICAgICAgICAgICAgICAgICAgICAg ICBrZXl0eXBlLCBub2RlLT5rZXkpOwotICAgICAgICBlbHNlCi0gICAgICAg ICAgICByYyA9IF9saWJzc2gyX2Vycm9yKGhvc3RzLT5zZXNzaW9uLCBMSUJT U0gyX0VSUk9SX0JVRkZFUl9UT09fU01BTEwsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJLbm93bi1ob3N0IHdyaXRlIGJ1ZmZlciB0b28g c21hbGwiKTsKKyAgICAgICAgICAgICAgICBzbnByaW50ZihidWYsIGJ1Zmxl biwgInwxfCVzfCVzICVzXG4iLCBzYWx0YWxsb2MsIG5hbWVhbGxvYywKKyAg ICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5rZXkpOworICAgICAgICB9 CiAKLSAgICAgICAgZnJlZShuYW1lYWxsb2MpOwotICAgICAgICBmcmVlKHNh bHRhbGxvYyk7CisgICAgICAgIExJQlNTSDJfRlJFRShob3N0cy0+c2Vzc2lv biwgbmFtZWFsbG9jKTsKKyAgICAgICAgTElCU1NIMl9GUkVFKGhvc3RzLT5z ZXNzaW9uLCBzYWx0YWxsb2MpOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAg ICAgbmxlbiA9IHN0cmxlbihub2RlLT5uYW1lKSArIHN0cmxlbihrZXl0eXBl KSArIHN0cmxlbihub2RlLT5rZXkpICsKLSAgICAgICAgICAgIGNvbW1lbnRs ZW4gKyAzOworICAgICAgICByZXF1aXJlZF9zaXplICs9IG5vZGUtPm5hbWVf bGVuICsgMzsKICAgICAgICAgLyogJyAnICsgJ1xuJyArIFwwID0gMyAqLwot ICAgICAgICBpZihubGVuIDw9IGJ1ZmxlbikKLSAgICAgICAgICAgIC8qIHRo ZXNlIHR5cGVzIGhhdmUgdGhlIHBsYWluIG5hbWUgKi8KLSAgICAgICAgICAg IGlmKG5vZGUtPmNvbW1lbnQpCi0gICAgICAgICAgICAgICAgc25wcmludGYo YnVmLCBidWZsZW4sICIlcyVzICVzICVzXG4iLCBub2RlLT5uYW1lLCBrZXl0 eXBlLCBub2RlLT5rZXksCi0gICAgICAgICAgICAgICAgICAgICAgICBub2Rl LT5jb21tZW50KTsKKworICAgICAgICBpZihyZXF1aXJlZF9zaXplIDw9IGJ1 ZmxlbikgeworICAgICAgICAgICAgaWYobm9kZS0+Y29tbWVudCAmJiBrZXlf dHlwZV9sZW4pCisgICAgICAgICAgICAgICAgc25wcmludGYoYnVmLCBidWZs ZW4sICIlcyAlcyAlcyAlc1xuIiwgbm9kZS0+bmFtZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICBrZXlfdHlwZV9uYW1lLCBub2RlLT5rZXksIG5vZGUt PmNvbW1lbnQpOworICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Y29tbWVu dCkKKyAgICAgICAgICAgICAgICBzbnByaW50ZihidWYsIGJ1ZmxlbiwgIiVz ICVzICVzXG4iLCBub2RlLT5uYW1lLCBub2RlLT5rZXksCisgICAgICAgICAg ICAgICAgICAgICAgICAgbm9kZS0+Y29tbWVudCk7CisgICAgICAgICAgICBl bHNlIGlmIChrZXlfdHlwZV9sZW4pCisgICAgICAgICAgICAgICAgc25wcmlu dGYoYnVmLCBidWZsZW4sICIlcyAlcyAlc1xuIiwgbm9kZS0+bmFtZSwga2V5 X3R5cGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5r ZXkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHNucHJp bnRmKGJ1ZiwgYnVmbGVuLCAiJXMlcyAlc1xuIiwgbm9kZS0+bmFtZSwga2V5 dHlwZSwgbm9kZS0+a2V5KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg cmMgPSBfbGlic3NoMl9lcnJvcihob3N0cy0+c2Vzc2lvbiwgTElCU1NIMl9F UlJPUl9CVUZGRVJfVE9PX1NNQUxMLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiS25vd24taG9zdCB3cml0ZSBidWZmZXIgdG9vIHNtYWxs Iik7CisgICAgICAgICAgICAgICAgc25wcmludGYoYnVmLCBidWZsZW4sICIl cyAlc1xuIiwgbm9kZS0+bmFtZSwgbm9kZS0+a2V5KTsKKyAgICAgICAgfQog ICAgIH0KIAogICAgIC8qIHdlIHJlcG9ydCB0aGUgZnVsbCBsZW5ndGggb2Yg dGhlIGRhdGEgd2l0aCB0aGUgdHJhaWxpbmcgemVybyBleGNsdWRlZCAqLwot ICAgICpvdXRsZW4gPSBubGVuLTE7CisgICAgKm91dGxlbiA9IHJlcXVpcmVk X3NpemUtMTsKIAotICAgIHJldHVybiByYzsKKyAgICBpZihyZXF1aXJlZF9z aXplIDw9IGJ1ZmxlbikKKyAgICAgICAgcmV0dXJuIExJQlNTSDJfRVJST1Jf Tk9ORTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBfbGlic3NoMl9lcnJv cihob3N0cy0+c2Vzc2lvbiwgTElCU1NIMl9FUlJPUl9CVUZGRVJfVE9PX1NN QUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIktub3duLWhv c3Qgd3JpdGUgYnVmZmVyIHRvbyBzbWFsbCIpOwogfQogCiAvKgpAQCAtMTA4 OSw4ICsxMTg1LDggQEAgbGlic3NoMl9rbm93bmhvc3Rfd3JpdGVmaWxlKExJ QlNTSDJfS05PV05IT1NUUyAqaG9zdHMsCiAKICAgICBmb3Iobm9kZSA9IF9s aWJzc2gyX2xpc3RfZmlyc3QoJmhvc3RzLT5oZWFkKTsKICAgICAgICAgbm9k ZTsKLSAgICAgICAgbm9kZT0gX2xpYnNzaDJfbGlzdF9uZXh0KCZub2RlLT5u b2RlKSApIHsKLSAgICAgICAgc2l6ZV90IHdyb3RlOworICAgICAgICBub2Rl ID0gX2xpYnNzaDJfbGlzdF9uZXh0KCZub2RlLT5ub2RlKSkgeworICAgICAg ICBzaXplX3Qgd3JvdGUgPSAwOwogICAgICAgICBzaXplX3Qgbndyb3RlOwog ICAgICAgICByYyA9IGtub3duaG9zdF93cml0ZWxpbmUoaG9zdHMsIG5vZGUs IGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICZ3cm90ZSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHR5cGUpOwpkaWZmIC0tZ2l0IGEvcGdh ZG1pbi9saWJzc2gyL2xpYmdjcnlwdC5jIGIvcGdhZG1pbi9saWJzc2gyL2xp YmdjcnlwdC5jCmluZGV4IDI5NzcwYzcuLmU4NWFlY2QgMTAwNjQ0Ci0tLSBh L3BnYWRtaW4vbGlic3NoMi9saWJnY3J5cHQuYworKysgYi9wZ2FkbWluL2xp YnNzaDIvbGliZ2NyeXB0LmMKQEAgLTE1MCw2ICsxNTAsMTcgQEAgX2xpYnNz aDJfZHNhX25ldyhsaWJzc2gyX2RzYV9jdHggKiogZHNhY3R4LAogfQogCiBp bnQKK19saWJzc2gyX3JzYV9uZXdfcHJpdmF0ZV9mcm9tbWVtb3J5KGxpYnNz aDJfcnNhX2N0eCAqKiByc2EsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBMSUJTU0gyX1NFU1NJT04gKiBzZXNzaW9uLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZmls ZWRhdGEsIHNpemVfdCBmaWxlZGF0YV9sZW4sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjb25zdCBjaGFyICpwYXNz cGhyYXNlKQoreworICAgIHJldHVybiBfbGlic3NoMl9lcnJvcihzZXNzaW9u LCBMSUJTU0gyX0VSUk9SX01FVEhPRF9OT1RfU1VQUE9SVEVELAorICAgICAg ICAgICAgICAgICAgICAgICAgICJVbmFibGUgdG8gZXh0cmFjdCBwcml2YXRl IGtleSBmcm9tIG1lbW9yeTogIgorICAgICAgICAgICAgICAgICAgICAgICAg ICJNZXRob2QgdW5pbXBsZW1lbnRlZCBpbiBsaWJnY3J5cHQgYmFja2VuZCIp OworfQorCitpbnQKIF9saWJzc2gyX3JzYV9uZXdfcHJpdmF0ZShsaWJzc2gy X3JzYV9jdHggKiogcnNhLAogICAgICAgICAgICAgICAgICAgICAgICAgIExJ QlNTSDJfU0VTU0lPTiAqIHNlc3Npb24sCiAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUsIHVuc2lnbmVkIGNvbnN0IGNo YXIgKnBhc3NwaHJhc2UpCkBAIC0yNTIsNiArMjYzLDE3IEBAIF9saWJzc2gy X3JzYV9uZXdfcHJpdmF0ZShsaWJzc2gyX3JzYV9jdHggKiogcnNhLAogfQog CiBpbnQKK19saWJzc2gyX2RzYV9uZXdfcHJpdmF0ZV9mcm9tbWVtb3J5KGxp YnNzaDJfZHNhX2N0eCAqKiBkc2EsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMSUJTU0gyX1NFU1NJT04gKiBzZXNzaW9uLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq ZmlsZWRhdGEsIHNpemVfdCBmaWxlZGF0YV9sZW4sCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjb25zdCBjaGFyICpw YXNzcGhyYXNlKQoreworICAgIHJldHVybiBfbGlic3NoMl9lcnJvcihzZXNz aW9uLCBMSUJTU0gyX0VSUk9SX01FVEhPRF9OT1RfU1VQUE9SVEVELAorICAg ICAgICAgICAgICAgICAgICAgICAgICJVbmFibGUgdG8gZXh0cmFjdCBwcml2 YXRlIGtleSBmcm9tIG1lbW9yeTogIgorICAgICAgICAgICAgICAgICAgICAg ICAgICJNZXRob2QgdW5pbXBsZW1lbnRlZCBpbiBsaWJnY3J5cHQgYmFja2Vu ZCIpOworfQorCitpbnQKIF9saWJzc2gyX2RzYV9uZXdfcHJpdmF0ZShsaWJz c2gyX2RzYV9jdHggKiogZHNhLAogICAgICAgICAgICAgICAgICAgICAgICAg IExJQlNTSDJfU0VTU0lPTiAqIHNlc3Npb24sCiAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUsIHVuc2lnbmVkIGNvbnN0 IGNoYXIgKnBhc3NwaHJhc2UpCkBAIC0zNDIsNyArMzY0LDcgQEAgX2xpYnNz aDJfZHNhX25ld19wcml2YXRlKGxpYnNzaDJfZHNhX2N0eCAqKiBkc2EsCiAK IGludAogX2xpYnNzaDJfcnNhX3NoYTFfc2lnbihMSUJTU0gyX1NFU1NJT04g KiBzZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICBsaWJzc2gyX2Rz YV9jdHggKiByc2FjdHgsCisgICAgICAgICAgICAgICAgICAgICAgIGxpYnNz aDJfcnNhX2N0eCAqIHJzYWN0eCwKICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgdW5zaWduZWQgY2hhciAqaGFzaCwKICAgICAgICAgICAgICAgICAg ICAgICAgc2l6ZV90IGhhc2hfbGVuLAogICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBjaGFyICoqc2lnbmF0dXJlLCBzaXplX3QgKnNpZ25hdHVy ZV9sZW4pCkBAIC01NjcsNiArNTg5LDIxIEBAIF9saWJzc2gyX2NpcGhlcl9j cnlwdChfbGlic3NoMl9jaXBoZXJfY3R4ICogY3R4LAogfQogCiBpbnQKK19s aWJzc2gyX3B1Yl9wcml2X2tleWZpbGVtZW1vcnkoTElCU1NIMl9TRVNTSU9O ICpzZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBjaGFyICoqbWV0aG9kLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzaXplX3QgKm1ldGhvZF9sZW4sCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKipwdWJrZXlkYXRh LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKnB1 YmtleWRhdGFfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBjaGFyICpwcml2YXRla2V5ZGF0YSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2l6ZV90IHByaXZhdGVrZXlkYXRhX2xlbiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq cGFzc3BocmFzZSkKK3sKKyAgICByZXR1cm4gX2xpYnNzaDJfZXJyb3Ioc2Vz c2lvbiwgTElCU1NIMl9FUlJPUl9NRVRIT0RfTk9UX1NVUFBPUlRFRCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAiVW5hYmxlIHRvIGV4dHJhY3QgcHVi bGljIGtleSBmcm9tIHByaXZhdGUga2V5IGluIG1lbW9yeTogIgorICAgICAg ICAgICAgICAgICAgICAgICAgICJNZXRob2QgdW5pbXBsZW1lbnRlZCBpbiBs aWJnY3J5cHQgYmFja2VuZCIpOworfQorCitpbnQKIF9saWJzc2gyX3B1Yl9w cml2X2tleWZpbGUoTElCU1NIMl9TRVNTSU9OICpzZXNzaW9uLAogICAgICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICoqbWV0aG9kLAog ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKm1ldGhvZF9sZW4s CmRpZmYgLS1naXQgYS9wZ2FkbWluL2xpYnNzaDIvbWFjLmMgYi9wZ2FkbWlu L2xpYnNzaDIvbWFjLmMKaW5kZXggNzY4OTRmYy4uNWVjMjZlYiAxMDA2NDQK LS0tIGEvcGdhZG1pbi9saWJzc2gyL21hYy5jCisrKyBiL3BnYWRtaW4vbGli c3NoMi9tYWMuYwpAQCAtOTYsNiArOTYsOTcgQEAgbWFjX21ldGhvZF9jb21t b25fZHRvcihMSUJTU0gyX1NFU1NJT04gKiBzZXNzaW9uLCB2b2lkICoqYWJz dHJhY3QpCiAKIAogCisjaWYgTElCU1NIMl9ITUFDX1NIQTUxMgorLyogbWFj X21ldGhvZF9obWFjX3NoYTUxMl9oYXNoCisgKiBDYWxjdWxhdGUgaGFzaCB1 c2luZyBmdWxsIHNoYTUxMiB2YWx1ZQorICovCitzdGF0aWMgaW50CittYWNf bWV0aG9kX2htYWNfc2hhMl81MTJfaGFzaChMSUJTU0gyX1NFU1NJT04gKiBz ZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBj aGFyICpidWYsIHVpbnQzMl90IHNlcW5vLAorICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwYWNrZXQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHBhY2tldF9sZW4sCisgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFk ZHRsLAorICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhZGR0 bF9sZW4sIHZvaWQgKiphYnN0cmFjdCkKK3sKKyAgICBsaWJzc2gyX2htYWNf Y3R4IGN0eDsKKyAgICB1bnNpZ25lZCBjaGFyIHNlcW5vX2J1Zls0XTsKKyAg ICAodm9pZCkgc2Vzc2lvbjsKKworICAgIF9saWJzc2gyX2h0b251MzIoc2Vx bm9fYnVmLCBzZXFubyk7CisKKyAgICBsaWJzc2gyX2htYWNfY3R4X2luaXQo Y3R4KTsKKyAgICBsaWJzc2gyX2htYWNfc2hhNTEyX2luaXQoJmN0eCwgKmFi c3RyYWN0LCA2NCk7CisgICAgbGlic3NoMl9obWFjX3VwZGF0ZShjdHgsIHNl cW5vX2J1ZiwgNCk7CisgICAgbGlic3NoMl9obWFjX3VwZGF0ZShjdHgsIHBh Y2tldCwgcGFja2V0X2xlbik7CisgICAgaWYgKGFkZHRsICYmIGFkZHRsX2xl bikgeworICAgICAgICBsaWJzc2gyX2htYWNfdXBkYXRlKGN0eCwgYWRkdGws IGFkZHRsX2xlbik7CisgICAgfQorICAgIGxpYnNzaDJfaG1hY19maW5hbChj dHgsIGJ1Zik7CisgICAgbGlic3NoMl9obWFjX2NsZWFudXAoJmN0eCk7CisK KyAgICByZXR1cm4gMDsKK30KKworCisKK3N0YXRpYyBjb25zdCBMSUJTU0gy X01BQ19NRVRIT0QgbWFjX21ldGhvZF9obWFjX3NoYTJfNTEyID0geworICAg ICJobWFjLXNoYTItNTEyIiwKKyAgICA2NCwKKyAgICA2NCwKKyAgICBtYWNf bWV0aG9kX2NvbW1vbl9pbml0LAorICAgIG1hY19tZXRob2RfaG1hY19zaGEy XzUxMl9oYXNoLAorICAgIG1hY19tZXRob2RfY29tbW9uX2R0b3IsCit9Owor I2VuZGlmCisKKworCisjaWYgTElCU1NIMl9ITUFDX1NIQTI1NgorLyogbWFj X21ldGhvZF9obWFjX3NoYTI1Nl9oYXNoCisgKiBDYWxjdWxhdGUgaGFzaCB1 c2luZyBmdWxsIHNoYTI1NiB2YWx1ZQorICovCitzdGF0aWMgaW50CittYWNf bWV0aG9kX2htYWNfc2hhMl8yNTZfaGFzaChMSUJTU0gyX1NFU1NJT04gKiBz ZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBj aGFyICpidWYsIHVpbnQzMl90IHNlcW5vLAorICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwYWNrZXQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHBhY2tldF9sZW4sCisgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFk ZHRsLAorICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhZGR0 bF9sZW4sIHZvaWQgKiphYnN0cmFjdCkKK3sKKyAgICBsaWJzc2gyX2htYWNf Y3R4IGN0eDsKKyAgICB1bnNpZ25lZCBjaGFyIHNlcW5vX2J1Zls0XTsKKyAg ICAodm9pZCkgc2Vzc2lvbjsKKworICAgIF9saWJzc2gyX2h0b251MzIoc2Vx bm9fYnVmLCBzZXFubyk7CisKKyAgICBsaWJzc2gyX2htYWNfY3R4X2luaXQo Y3R4KTsKKyAgICBsaWJzc2gyX2htYWNfc2hhMjU2X2luaXQoJmN0eCwgKmFi c3RyYWN0LCAzMik7CisgICAgbGlic3NoMl9obWFjX3VwZGF0ZShjdHgsIHNl cW5vX2J1ZiwgNCk7CisgICAgbGlic3NoMl9obWFjX3VwZGF0ZShjdHgsIHBh Y2tldCwgcGFja2V0X2xlbik7CisgICAgaWYgKGFkZHRsICYmIGFkZHRsX2xl bikgeworICAgICAgICBsaWJzc2gyX2htYWNfdXBkYXRlKGN0eCwgYWRkdGws IGFkZHRsX2xlbik7CisgICAgfQorICAgIGxpYnNzaDJfaG1hY19maW5hbChj dHgsIGJ1Zik7CisgICAgbGlic3NoMl9obWFjX2NsZWFudXAoJmN0eCk7CisK KyAgICByZXR1cm4gMDsKK30KKworCisKK3N0YXRpYyBjb25zdCBMSUJTU0gy X01BQ19NRVRIT0QgbWFjX21ldGhvZF9obWFjX3NoYTJfMjU2ID0geworICAg ICJobWFjLXNoYTItMjU2IiwKKyAgICAzMiwKKyAgICAzMiwKKyAgICBtYWNf bWV0aG9kX2NvbW1vbl9pbml0LAorICAgIG1hY19tZXRob2RfaG1hY19zaGEy XzI1Nl9oYXNoLAorICAgIG1hY19tZXRob2RfY29tbW9uX2R0b3IsCit9Owor I2VuZGlmCisKKworCisKIC8qIG1hY19tZXRob2RfaG1hY19zaGExX2hhc2gK ICAqIENhbGN1bGF0ZSBoYXNoIHVzaW5nIGZ1bGwgc2hhMSB2YWx1ZQogICov CkBAIC0xMTMsNiArMjA0LDcgQEAgbWFjX21ldGhvZF9obWFjX3NoYTFfaGFz aChMSUJTU0gyX1NFU1NJT04gKiBzZXNzaW9uLAogCiAgICAgX2xpYnNzaDJf aHRvbnUzMihzZXFub19idWYsIHNlcW5vKTsKIAorICAgIGxpYnNzaDJfaG1h Y19jdHhfaW5pdChjdHgpOwogICAgIGxpYnNzaDJfaG1hY19zaGExX2luaXQo JmN0eCwgKmFic3RyYWN0LCAyMCk7CiAgICAgbGlic3NoMl9obWFjX3VwZGF0 ZShjdHgsIHNlcW5vX2J1ZiwgNCk7CiAgICAgbGlic3NoMl9obWFjX3VwZGF0 ZShjdHgsIHBhY2tldCwgcGFja2V0X2xlbik7CkBAIC0xODUsNiArMjc3LDcg QEAgbWFjX21ldGhvZF9obWFjX21kNV9oYXNoKExJQlNTSDJfU0VTU0lPTiAq IHNlc3Npb24sIHVuc2lnbmVkIGNoYXIgKmJ1ZiwKIAogICAgIF9saWJzc2gy X2h0b251MzIoc2Vxbm9fYnVmLCBzZXFubyk7CiAKKyAgICBsaWJzc2gyX2ht YWNfY3R4X2luaXQoY3R4KTsKICAgICBsaWJzc2gyX2htYWNfbWQ1X2luaXQo JmN0eCwgKmFic3RyYWN0LCAxNik7CiAgICAgbGlic3NoMl9obWFjX3VwZGF0 ZShjdHgsIHNlcW5vX2J1ZiwgNCk7CiAgICAgbGlic3NoMl9obWFjX3VwZGF0 ZShjdHgsIHBhY2tldCwgcGFja2V0X2xlbik7CkBAIC0yNTcsNiArMzUwLDcg QEAgbWFjX21ldGhvZF9obWFjX3JpcGVtZDE2MF9oYXNoKExJQlNTSDJfU0VT U0lPTiAqIHNlc3Npb24sCiAKICAgICBfbGlic3NoMl9odG9udTMyKHNlcW5v X2J1Ziwgc2Vxbm8pOwogCisgICAgbGlic3NoMl9obWFjX2N0eF9pbml0KGN0 eCk7CiAgICAgbGlic3NoMl9obWFjX3JpcGVtZDE2MF9pbml0KCZjdHgsICph YnN0cmFjdCwgMjApOwogICAgIGxpYnNzaDJfaG1hY191cGRhdGUoY3R4LCBz ZXFub19idWYsIDQpOwogICAgIGxpYnNzaDJfaG1hY191cGRhdGUoY3R4LCBw YWNrZXQsIHBhY2tldF9sZW4pOwpAQCAtMjkxLDYgKzM4NSwxMiBAQCBzdGF0 aWMgY29uc3QgTElCU1NIMl9NQUNfTUVUSE9EIG1hY19tZXRob2RfaG1hY19y aXBlbWQxNjBfb3BlbnNzaF9jb20gPSB7CiAjZW5kaWYgLyogTElCU1NIMl9I TUFDX1JJUEVNRCAqLwogCiBzdGF0aWMgY29uc3QgTElCU1NIMl9NQUNfTUVU SE9EICptYWNfbWV0aG9kc1tdID0geworI2lmIExJQlNTSDJfSE1BQ19TSEEy NTYKKyAgICAmbWFjX21ldGhvZF9obWFjX3NoYTJfMjU2LAorI2VuZGlmCisj aWYgTElCU1NIMl9ITUFDX1NIQTUxMgorICAgICZtYWNfbWV0aG9kX2htYWNf c2hhMl81MTIsCisjZW5kaWYKICAgICAmbWFjX21ldGhvZF9obWFjX3NoYTEs CiAgICAgJm1hY19tZXRob2RfaG1hY19zaGExXzk2LAogI2lmIExJQlNTSDJf TUQ1CmRpZmYgLS1naXQgYS9wZ2FkbWluL2xpYnNzaDIvbWlzYy5jIGIvcGdh ZG1pbi9saWJzc2gyL21pc2MuYwppbmRleCBhOWY0MjNhLi4zMjBkZjQ0IDEw MDY0NAotLS0gYS9wZ2FkbWluL2xpYnNzaDIvbWlzYy5jCisrKyBiL3BnYWRt aW4vbGlic3NoMi9taXNjLmMKQEAgLTEsNSArMSw1IEBACiAvKiBDb3B5cmln aHQgKGMpIDIwMDQtMjAwNyBTYXJhIEdvbGVtb24gPHNhcmFnQGxpYnNzaDIu b3JnPgotICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTAgYnkgRGFuaWVsIFN0 ZW5iZXJnCisgKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxNCBieSBEYW5pZWwg U3RlbmJlcmcKICAqIENvcHlyaWdodCAoYykgMjAxMCAgU2ltb24gSm9zZWZz c29uCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTUxLDEwICs1 MSwyOSBAQAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8ZXJybm8u aD4KIAotaW50IF9saWJzc2gyX2Vycm9yKExJQlNTSDJfU0VTU0lPTiogc2Vz c2lvbiwgaW50IGVycmNvZGUsIGNvbnN0IGNoYXIqIGVycm1zZykKK2ludCBf bGlic3NoMl9lcnJvcl9mbGFncyhMSUJTU0gyX1NFU1NJT04qIHNlc3Npb24s IGludCBlcnJjb2RlLCBjb25zdCBjaGFyKiBlcnJtc2csIGludCBlcnJmbGFn cykKIHsKLSAgICBzZXNzaW9uLT5lcnJfbXNnID0gZXJybXNnOworICAgIGlm IChzZXNzaW9uLT5lcnJfZmxhZ3MgJiBMSUJTU0gyX0VSUl9GTEFHX0RVUCkK KyAgICAgICAgTElCU1NIMl9GUkVFKHNlc3Npb24sIChjaGFyICopc2Vzc2lv bi0+ZXJyX21zZyk7CisKICAgICBzZXNzaW9uLT5lcnJfY29kZSA9IGVycmNv ZGU7CisgICAgc2Vzc2lvbi0+ZXJyX2ZsYWdzID0gMDsKKworICAgIGlmICgo ZXJybXNnICE9IE5VTEwpICYmICgoZXJyZmxhZ3MgJiBMSUJTU0gyX0VSUl9G TEFHX0RVUCkgIT0gMCkpIHsKKyAgICAgICAgc2l6ZV90IGxlbiA9IHN0cmxl bihlcnJtc2cpOworICAgICAgICBjaGFyICpjb3B5ID0gTElCU1NIMl9BTExP QyhzZXNzaW9uLCBsZW4gKyAxKTsKKyAgICAgICAgaWYgKGNvcHkpIHsKKyAg ICAgICAgICAgIG1lbWNweShjb3B5LCBlcnJtc2csIGxlbiArIDEpOworICAg ICAgICAgICAgc2Vzc2lvbi0+ZXJyX2ZsYWdzID0gTElCU1NIMl9FUlJfRkxB R19EVVA7CisgICAgICAgICAgICBzZXNzaW9uLT5lcnJfbXNnID0gY29weTsK KyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICAvKiBPdXQg b2YgbWVtb3J5OiB0aGlzIGNvZGUgcGF0aCBpcyB2ZXJ5IHVubGlrZWx5ICov CisgICAgICAgICAgICBzZXNzaW9uLT5lcnJfbXNnID0gImZvcm1lciBlcnJv ciBmb3Jnb3R0ZW4gKE9PTSkiOworICAgIH0KKyAgICBlbHNlCisgICAgICAg IHNlc3Npb24tPmVycl9tc2cgPSBlcnJtc2c7CisKICNpZmRlZiBMSUJTU0gy REVCVUcKICAgICBpZigoZXJyY29kZSA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJ TikgJiYgIXNlc3Npb24tPmFwaV9ibG9ja19tb2RlKQogICAgICAgICAvKiBp ZiB0aGlzIGlzIEVBR0FJTiBhbmQgd2UncmUgaW4gbm9uLWJsb2NraW5nIG1v ZGUsIGRvbid0IGdlbmVyYXRlCkBAIC02Nyw2ICs4NiwxMSBAQCBpbnQgX2xp YnNzaDJfZXJyb3IoTElCU1NIMl9TRVNTSU9OKiBzZXNzaW9uLCBpbnQgZXJy Y29kZSwgY29uc3QgY2hhciogZXJybXNnKQogICAgIHJldHVybiBlcnJjb2Rl OwogfQogCitpbnQgX2xpYnNzaDJfZXJyb3IoTElCU1NIMl9TRVNTSU9OKiBz ZXNzaW9uLCBpbnQgZXJyY29kZSwgY29uc3QgY2hhciogZXJybXNnKQorewor ICAgIHJldHVybiBfbGlic3NoMl9lcnJvcl9mbGFncyhzZXNzaW9uLCBlcnJj b2RlLCBlcnJtc2csIDApOworfQorCiAjaWZkZWYgV0lOMzIKIHN0YXRpYyBp bnQgd3NhMmVycm5vKHZvaWQpCiB7CkBAIC05NCw5ICsxMTgsMTQgQEAgc3Rh dGljIGludCB3c2EyZXJybm8odm9pZCkKICAqIFJlcGxhY2VtZW50IGZvciB0 aGUgc3RhbmRhcmQgcmVjdiwgcmV0dXJuIC1lcnJubyBvbiBmYWlsdXJlLgog ICovCiBzc2l6ZV90Ci1fbGlic3NoMl9yZWN2KGxpYnNzaDJfc29ja2V0X3Qg c29jaywgdm9pZCAqYnVmZmVyLCBzaXplX3QgbGVuZ3RoLCBpbnQgZmxhZ3Ms IHZvaWQgKiphYnN0cmFjdCkKK19saWJzc2gyX3JlY3YobGlic3NoMl9zb2Nr ZXRfdCBzb2NrLCB2b2lkICpidWZmZXIsIHNpemVfdCBsZW5ndGgsCisgICAg ICAgICAgICAgIGludCBmbGFncywgdm9pZCAqKmFic3RyYWN0KQogewotICAg IHNzaXplX3QgcmMgPSByZWN2KHNvY2ssIGJ1ZmZlciwgbGVuZ3RoLCBmbGFn cyk7CisgICAgc3NpemVfdCByYzsKKworICAgICh2b2lkKSBhYnN0cmFjdDsK KworICAgIHJjID0gcmVjdihzb2NrLCBidWZmZXIsIGxlbmd0aCwgZmxhZ3Mp OwogI2lmZGVmIFdJTjMyCiAgICAgaWYgKHJjIDwgMCApCiAgICAgICAgIHJl dHVybiAtd3NhMmVycm5vKCk7CkBAIC0xMjgsNyArMTU3LDExIEBAIHNzaXpl X3QKIF9saWJzc2gyX3NlbmQobGlic3NoMl9zb2NrZXRfdCBzb2NrLCBjb25z dCB2b2lkICpidWZmZXIsIHNpemVfdCBsZW5ndGgsCiAgICAgICAgICAgICAg IGludCBmbGFncywgdm9pZCAqKmFic3RyYWN0KQogewotICAgIHNzaXplX3Qg cmMgPSBzZW5kKHNvY2ssIGJ1ZmZlciwgbGVuZ3RoLCBmbGFncyk7CisgICAg c3NpemVfdCByYzsKKworICAgICh2b2lkKSBhYnN0cmFjdDsKKworICAgIHJj ID0gc2VuZChzb2NrLCBidWZmZXIsIGxlbmd0aCwgZmxhZ3MpOwogI2lmZGVm IFdJTjMyCiAgICAgaWYgKHJjIDwgMCApCiAgICAgICAgIHJldHVybiAtd3Nh MmVycm5vKCk7CkBAIC0yNTcsMTUgKzI5MCwxNSBAQCBsaWJzc2gyX2Jhc2U2 NF9kZWNvZGUoTElCU1NIMl9TRVNTSU9OICpzZXNzaW9uLCBjaGFyICoqZGF0 YSwKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBzd2l0Y2ggKGkg JSA0KSB7CiAgICAgICAgIGNhc2UgMDoKLSAgICAgICAgICAgIGRbbGVuXSA9 IHYgPDwgMjsKKyAgICAgICAgICAgIGRbbGVuXSA9ICh1bnNpZ25lZCBjaGFy KSh2IDw8IDIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug MToKICAgICAgICAgICAgIGRbbGVuKytdIHw9IHYgPj4gNDsKLSAgICAgICAg ICAgIGRbbGVuXSA9IHYgPDwgNDsKKyAgICAgICAgICAgIGRbbGVuXSA9ICh1 bnNpZ25lZCBjaGFyKSh2IDw8IDQpOwogICAgICAgICAgICAgYnJlYWs7CiAg ICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgIGRbbGVuKytdIHw9IHYgPj4g MjsKLSAgICAgICAgICAgIGRbbGVuXSA9IHYgPDwgNjsKKyAgICAgICAgICAg IGRbbGVuXSA9ICh1bnNpZ25lZCBjaGFyKSh2IDw8IDYpOwogICAgICAgICAg ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgIGRbbGVu KytdIHw9IHY7CkBAIC01OTYsNyArNjI5LDcgQEAgaW50IF9fY2RlY2wgX2xp YnNzaDJfZ2V0dGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICp0cCwgdm9pZCAq dHpwKQogICAgIHVuc2lnbmVkIF9faW50NjQgbnMxMDA7IC8qdGltZSBzaW5j ZSAxIEphbiAxNjAxIGluIDEwMG5zIHVuaXRzICovCiAgICAgRklMRVRJTUUg ZnQ7CiAgIH0gIF9ub3c7Ci0KKyAgKHZvaWQpdHpwOwogICBpZih0cCkKICAg ICB7CiAgICAgICBHZXRTeXN0ZW1UaW1lQXNGaWxlVGltZSAoJl9ub3cuZnQp OwpAQCAtNjEwLDMgKzY0MywxMiBAQCBpbnQgX19jZGVjbCBfbGlic3NoMl9n ZXR0aW1lb2ZkYXkoc3RydWN0IHRpbWV2YWwgKnRwLCB2b2lkICp0enApCiAK IAogI2VuZGlmCisKK3ZvaWQgKl9saWJzc2gyX2NhbGxvYyhMSUJTU0gyX1NF U1NJT04qIHNlc3Npb24sIHNpemVfdCBzaXplKQoreworICAgIHZvaWQgKnAg PSBMSUJTU0gyX0FMTE9DKHNlc3Npb24sIHNpemUpOworICAgIGlmKHApIHsK KyAgICAgICAgbWVtc2V0KHAsIDAsIHNpemUpOworICAgIH0KKyAgICByZXR1 cm4gcDsKK30KZGlmZiAtLWdpdCBhL3BnYWRtaW4vbGlic3NoMi9vcGVuc3Ns LmMgYi9wZ2FkbWluL2xpYnNzaDIvb3BlbnNzbC5jCmluZGV4IDI5YzhmNDcu LmMzZGUyZDEgMTAwNjQ0Ci0tLSBhL3BnYWRtaW4vbGlic3NoMi9vcGVuc3Ns LmMKKysrIGIvcGdhZG1pbi9saWJzc2gyL29wZW5zc2wuYwpAQCAtNDAsNyAr NDAsNyBAQAogCiAjaW5jbHVkZSAibGlic3NoMl9wcml2LmgiCiAKLSNpZm5k ZWYgTElCU1NIMl9MSUJHQ1JZUFQgLyogY29tcGlsZSBvbmx5IGlmIHdlIGJ1 aWxkIHdpdGggT3BlblNTTCAqLworI2lmZGVmIExJQlNTSDJfT1BFTlNTTCAv KiBjb21waWxlIG9ubHkgaWYgd2UgYnVpbGQgd2l0aCBvcGVuc3NsICovCiAK ICNpbmNsdWRlIDxzdHJpbmcuaD4KIApAQCAtMTA1LDcgKzEwNSw4IEBAIF9s aWJzc2gyX3JzYV9zaGExX3ZlcmlmeShsaWJzc2gyX3JzYV9jdHggKiByc2Fj dHgsCiAgICAgdW5zaWduZWQgY2hhciBoYXNoW1NIQV9ESUdFU1RfTEVOR1RI XTsKICAgICBpbnQgcmV0OwogCi0gICAgbGlic3NoMl9zaGExKG0sIG1fbGVu LCBoYXNoKTsKKyAgICBpZiAoX2xpYnNzaDJfc2hhMShtLCBtX2xlbiwgaGFz aCkpCisgICAgICAgIHJldHVybiAtMTsgLyogZmFpbHVyZSAqLwogICAgIHJl dCA9IFJTQV92ZXJpZnkoTklEX3NoYTEsIGhhc2gsIFNIQV9ESUdFU1RfTEVO R1RILAogICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIgKikg c2lnLCBzaWdfbGVuLCByc2FjdHgpOwogICAgIHJldHVybiAocmV0ID09IDEp ID8gMCA6IC0xOwpAQCAtMTUzLDE1ICsxNTQsMTcgQEAgX2xpYnNzaDJfZHNh X3NoYTFfdmVyaWZ5KGxpYnNzaDJfZHNhX2N0eCAqIGRzYWN0eCwKIHsKICAg ICB1bnNpZ25lZCBjaGFyIGhhc2hbU0hBX0RJR0VTVF9MRU5HVEhdOwogICAg IERTQV9TSUcgZHNhc2lnOwotICAgIGludCByZXQ7CisgICAgaW50IHJldCA9 IC0xOwogCiAgICAgZHNhc2lnLnIgPSBCTl9uZXcoKTsKICAgICBCTl9iaW4y Ym4oc2lnLCAyMCwgZHNhc2lnLnIpOwogICAgIGRzYXNpZy5zID0gQk5fbmV3 KCk7CiAgICAgQk5fYmluMmJuKHNpZyArIDIwLCAyMCwgZHNhc2lnLnMpOwog Ci0gICAgbGlic3NoMl9zaGExKG0sIG1fbGVuLCBoYXNoKTsKLSAgICByZXQg PSBEU0FfZG9fdmVyaWZ5KGhhc2gsIFNIQV9ESUdFU1RfTEVOR1RILCAmZHNh c2lnLCBkc2FjdHgpOworICAgIGlmICghX2xpYnNzaDJfc2hhMShtLCBtX2xl biwgaGFzaCkpCisgICAgICAgIC8qIF9saWJzc2gyX3NoYTEoKSBzdWNjZWVk ZWQgKi8KKyAgICAgICAgcmV0ID0gRFNBX2RvX3ZlcmlmeShoYXNoLCBTSEFf RElHRVNUX0xFTkdUSCwgJmRzYXNpZywgZHNhY3R4KTsKKwogICAgIEJOX2Ns ZWFyX2ZyZWUoZHNhc2lnLnMpOwogICAgIEJOX2NsZWFyX2ZyZWUoZHNhc2ln LnIpOwogCkBAIC0zODgsNiArMzkxLDI4IEBAIHR5cGVkZWYgdm9pZCAqICgq cGVtX3JlYWRfYmlvX2Z1bmMpKEJJTyAqLCB2b2lkICoqLCBwZW1fcGFzc3dv cmRfY2IgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHZvaWQgKiB1KTsKIAogc3RhdGljIGludAorcmVhZF9wcml2YXRlX2tleV9m cm9tX21lbW9yeSh2b2lkICoqIGtleV9jdHgsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHBlbV9yZWFkX2Jpb19mdW5jIHJlYWRfcHJpdmF0ZV9r ZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg KiBmaWxlZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6 ZV90IGZpbGVkYXRhX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgY29uc3QgY2hhciAqcGFzc3BocmFzZSkKK3sKKyAgICBC SU8gKiBicDsKKworICAgICprZXlfY3R4ID0gTlVMTDsKKworICAgIGJwID0g QklPX25ld19tZW1fYnVmKChjaGFyICopZmlsZWRhdGEsIGZpbGVkYXRhX2xl bik7CisgICAgaWYgKCFicCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAg fQorICAgICprZXlfY3R4ID0gcmVhZF9wcml2YXRlX2tleShicCwgTlVMTCwg KHBlbV9wYXNzd29yZF9jYiAqKSBwYXNzcGhyYXNlX2NiLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKSBwYXNzcGhyYXNlKTsK KworICAgIEJJT19mcmVlKGJwKTsKKyAgICByZXR1cm4gKCprZXlfY3R4KSA/ IDAgOiAtMTsKK30KKworc3RhdGljIGludAogcmVhZF9wcml2YXRlX2tleV9m cm9tX2ZpbGUodm9pZCAqKiBrZXlfY3R4LAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgcGVtX3JlYWRfYmlvX2Z1bmMgcmVhZF9wcml2YXRlX2tleSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBmaWxl bmFtZSwKQEAgLTQxMCw2ICs0MzUsMjIgQEAgcmVhZF9wcml2YXRlX2tleV9m cm9tX2ZpbGUodm9pZCAqKiBrZXlfY3R4LAogfQogCiBpbnQKK19saWJzc2gy X3JzYV9uZXdfcHJpdmF0ZV9mcm9tbWVtb3J5KGxpYnNzaDJfcnNhX2N0eCAq KiByc2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM SUJTU0gyX1NFU1NJT04gKiBzZXNzaW9uLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZmlsZWRhdGEsIHNpemVf dCBmaWxlZGF0YV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBjb25zdCBjaGFyICpwYXNzcGhyYXNlKQorewor ICAgIHBlbV9yZWFkX2Jpb19mdW5jIHJlYWRfcnNhID0KKyAgICAgICAgKHBl bV9yZWFkX2Jpb19mdW5jKSAmUEVNX3JlYWRfYmlvX1JTQVByaXZhdGVLZXk7 CisgICAgKHZvaWQpIHNlc3Npb247CisKKyAgICBfbGlic3NoMl9pbml0X2lm X25lZWRlZCgpOworCisgICAgcmV0dXJuIHJlYWRfcHJpdmF0ZV9rZXlfZnJv bV9tZW1vcnkoKHZvaWQgKiopIHJzYSwgcmVhZF9yc2EsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZWRhdGEsIGZpbGVk YXRhX2xlbiwgcGFzc3BocmFzZSk7Cit9CisKK2ludAogX2xpYnNzaDJfcnNh X25ld19wcml2YXRlKGxpYnNzaDJfcnNhX2N0eCAqKiByc2EsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgTElCU1NIMl9TRVNTSU9OICogc2Vzc2lvbiwK ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmaWxlbmFt ZSwgdW5zaWduZWQgY29uc3QgY2hhciAqcGFzc3BocmFzZSkKQEAgLTQyNiw2 ICs0NjcsMjIgQEAgX2xpYnNzaDJfcnNhX25ld19wcml2YXRlKGxpYnNzaDJf cnNhX2N0eCAqKiByc2EsCiAKICNpZiBMSUJTU0gyX0RTQQogaW50CitfbGli c3NoMl9kc2FfbmV3X3ByaXZhdGVfZnJvbW1lbW9yeShsaWJzc2gyX2RzYV9j dHggKiogZHNhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTElCU1NIMl9TRVNTSU9OICogc2Vzc2lvbiwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZpbGVkYXRhLCBz aXplX3QgZmlsZWRhdGFfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgY29uc3QgY2hhciAqcGFzc3BocmFzZSkK K3sKKyAgICBwZW1fcmVhZF9iaW9fZnVuYyByZWFkX2RzYSA9CisgICAgICAg IChwZW1fcmVhZF9iaW9fZnVuYykgJlBFTV9yZWFkX2Jpb19EU0FQcml2YXRl S2V5OworICAgICh2b2lkKSBzZXNzaW9uOworCisgICAgX2xpYnNzaDJfaW5p dF9pZl9uZWVkZWQoKTsKKworICAgIHJldHVybiByZWFkX3ByaXZhdGVfa2V5 X2Zyb21fbWVtb3J5KCh2b2lkICoqKSBkc2EsIHJlYWRfZHNhLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVkYXRhLCBm aWxlZGF0YV9sZW4sIHBhc3NwaHJhc2UpOworfQorCitpbnQKIF9saWJzc2gy X2RzYV9uZXdfcHJpdmF0ZShsaWJzc2gyX2RzYV9jdHggKiogZHNhLAogICAg ICAgICAgICAgICAgICAgICAgICAgIExJQlNTSDJfU0VTU0lPTiAqIHNlc3Np b24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZmls ZW5hbWUsIHVuc2lnbmVkIGNvbnN0IGNoYXIgKnBhc3NwaHJhc2UpCkBAIC01 MDksMjYgKzU2Niw1NSBAQCBfbGlic3NoMl9kc2Ffc2hhMV9zaWduKGxpYnNz aDJfZHNhX2N0eCAqIGRzYWN0eCwKIH0KICNlbmRpZiAvKiBMSUJTU0hfRFNB ICovCiAKLXZvaWQKLWxpYnNzaDJfc2hhMShjb25zdCB1bnNpZ25lZCBjaGFy ICptZXNzYWdlLCB1bnNpZ25lZCBsb25nIGxlbiwKLSAgICAgICAgICAgICB1 bnNpZ25lZCBjaGFyICpvdXQpCitpbnQKK19saWJzc2gyX3NoYTFfaW5pdChs aWJzc2gyX3NoYTFfY3R4ICpjdHgpCit7CisgICAgRVZQX01EX0NUWF9pbml0 KGN0eCk7CisgICAgcmV0dXJuIEVWUF9EaWdlc3RJbml0KGN0eCwgRVZQX2dl dF9kaWdlc3RieW5hbWUoInNoYTEiKSk7Cit9CisKK2ludAorX2xpYnNzaDJf c2hhMShjb25zdCB1bnNpZ25lZCBjaGFyICptZXNzYWdlLCB1bnNpZ25lZCBs b25nIGxlbiwKKyAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqb3V0KQog ewogICAgIEVWUF9NRF9DVFggY3R4OwogCi0gICAgRVZQX0RpZ2VzdEluaXQo JmN0eCwgRVZQX2dldF9kaWdlc3RieW5hbWUoInNoYTEiKSk7Ci0gICAgRVZQ X0RpZ2VzdFVwZGF0ZSgmY3R4LCBtZXNzYWdlLCBsZW4pOwotICAgIEVWUF9E aWdlc3RGaW5hbCgmY3R4LCBvdXQsIE5VTEwpOworICAgIEVWUF9NRF9DVFhf aW5pdCgmY3R4KTsKKyAgICBpZiAoRVZQX0RpZ2VzdEluaXQoJmN0eCwgRVZQ X2dldF9kaWdlc3RieW5hbWUoInNoYTEiKSkpIHsKKyAgICAgICAgRVZQX0Rp Z2VzdFVwZGF0ZSgmY3R4LCBtZXNzYWdlLCBsZW4pOworICAgICAgICBFVlBf RGlnZXN0RmluYWwoJmN0eCwgb3V0LCBOVUxMKTsKKyAgICAgICAgcmV0dXJu IDA7IC8qIHN1Y2Nlc3MgKi8KKyAgICB9CisgICAgcmV0dXJuIDE7IC8qIGVy cm9yICovCit9CisKK2ludAorX2xpYnNzaDJfc2hhMjU2X2luaXQobGlic3No Ml9zaGEyNTZfY3R4ICpjdHgpCit7CisgICAgRVZQX01EX0NUWF9pbml0KGN0 eCk7CisgICAgcmV0dXJuIEVWUF9EaWdlc3RJbml0KGN0eCwgRVZQX2dldF9k aWdlc3RieW5hbWUoInNoYTI1NiIpKTsKIH0KIAotdm9pZAotbGlic3NoMl9t ZDUoY29uc3QgdW5zaWduZWQgY2hhciAqbWVzc2FnZSwgdW5zaWduZWQgbG9u ZyBsZW4sCi0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpvdXQpCitpbnQK K19saWJzc2gyX3NoYTI1Nihjb25zdCB1bnNpZ25lZCBjaGFyICptZXNzYWdl LCB1bnNpZ25lZCBsb25nIGxlbiwKKyAgICAgICAgICAgICAgICB1bnNpZ25l ZCBjaGFyICpvdXQpCiB7CiAgICAgRVZQX01EX0NUWCBjdHg7CiAKLSAgICBF VlBfRGlnZXN0SW5pdCgmY3R4LCBFVlBfZ2V0X2RpZ2VzdGJ5bmFtZSgibWQ1 IikpOwotICAgIEVWUF9EaWdlc3RVcGRhdGUoJmN0eCwgbWVzc2FnZSwgbGVu KTsKLSAgICBFVlBfRGlnZXN0RmluYWwoJmN0eCwgb3V0LCBOVUxMKTsKKyAg ICBFVlBfTURfQ1RYX2luaXQoJmN0eCk7CisgICAgaWYoRVZQX0RpZ2VzdElu aXQoJmN0eCwgRVZQX2dldF9kaWdlc3RieW5hbWUoInNoYTI1NiIpKSkgewor ICAgICAgICBFVlBfRGlnZXN0VXBkYXRlKCZjdHgsIG1lc3NhZ2UsIGxlbik7 CisgICAgICAgIEVWUF9EaWdlc3RGaW5hbCgmY3R4LCBvdXQsIE5VTEwpOwor ICAgICAgICByZXR1cm4gMDsgLyogc3VjY2VzcyAqLworICAgIH0KKyAgICBy ZXR1cm4gMTsgLyogZXJyb3IgKi8KK30KKworaW50CitfbGlic3NoMl9tZDVf aW5pdChsaWJzc2gyX21kNV9jdHggKmN0eCkKK3sKKyAgICBFVlBfTURfQ1RY X2luaXQoY3R4KTsKKyAgICByZXR1cm4gRVZQX0RpZ2VzdEluaXQoY3R4LCBF VlBfZ2V0X2RpZ2VzdGJ5bmFtZSgibWQ1IikpOwogfQogCiBzdGF0aWMgdW5z aWduZWQgY2hhciAqCkBAIC01ODQsNiArNjcwLDcgQEAgZ2VuX3B1YmxpY2tl eV9mcm9tX3JzYShMSUJTU0gyX1NFU1NJT04gKnNlc3Npb24sIFJTQSAqcnNh LAogICAgIHJldHVybiBrZXk7CiB9CiAKKyNpZiBMSUJTU0gyX0RTQQogc3Rh dGljIHVuc2lnbmVkIGNoYXIgKgogZ2VuX3B1YmxpY2tleV9mcm9tX2RzYShM SUJTU0gyX1NFU1NJT04qIHNlc3Npb24sIERTQSAqZHNhLAogICAgICAgICAg ICAgICAgICAgICAgICBzaXplX3QgKmtleV9sZW4pCkBAIC02MjIsNiArNzA5 LDcgQEAgZ2VuX3B1YmxpY2tleV9mcm9tX2RzYShMSUJTU0gyX1NFU1NJT04q IHNlc3Npb24sIERTQSAqZHNhLAogICAgICprZXlfbGVuID0gKHNpemVfdCko cCAtIGtleSk7CiAgICAgcmV0dXJuIGtleTsKIH0KKyNlbmRpZiAvKiBMSUJT U0hfRFNBICovCiAKIHN0YXRpYyBpbnQKIGdlbl9wdWJsaWNrZXlfZnJvbV9y c2FfZXZwKExJQlNTSDJfU0VTU0lPTiAqc2Vzc2lvbiwKQEAgLTY3Nyw2ICs3 NjUsNyBAQCBnZW5fcHVibGlja2V5X2Zyb21fcnNhX2V2cChMSUJTU0gyX1NF U1NJT04gKnNlc3Npb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJV bmFibGUgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBwcml2YXRlIGtleSBkYXRh Iik7CiB9CiAKKyNpZiBMSUJTU0gyX0RTQQogc3RhdGljIGludAogZ2VuX3B1 YmxpY2tleV9mcm9tX2RzYV9ldnAoTElCU1NIMl9TRVNTSU9OICpzZXNzaW9u LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAq Km1ldGhvZCwKQEAgLTczMCw2ICs4MTksNyBAQCBnZW5fcHVibGlja2V5X2Zy b21fZHNhX2V2cChMSUJTU0gyX1NFU1NJT04gKnNlc3Npb24sCiAgICAgICAg ICAgICAgICAgICAgICAgICAgIExJQlNTSDJfRVJST1JfQUxMT0MsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICJVbmFibGUgdG8gYWxsb2NhdGUgbWVt b3J5IGZvciBwcml2YXRlIGtleSBkYXRhIik7CiB9CisjZW5kaWYgLyogTElC U1NIX0RTQSAqLwogCiBpbnQKIF9saWJzc2gyX3B1Yl9wcml2X2tleWZpbGUo TElCU1NIMl9TRVNTSU9OICpzZXNzaW9uLApAQCAtNzgzLDExICs4NzMsODAg QEAgX2xpYnNzaDJfcHViX3ByaXZfa2V5ZmlsZShMSUJTU0gyX1NFU1NJT04g KnNlc3Npb24sCiAgICAgICAgICAgICBzZXNzaW9uLCBtZXRob2QsIG1ldGhv ZF9sZW4sIHB1YmtleWRhdGEsIHB1YmtleWRhdGFfbGVuLCBwayk7CiAgICAg ICAgIGJyZWFrOwogCisjaWYgTElCU1NIMl9EU0EKICAgICBjYXNlIEVWUF9Q S0VZX0RTQSA6CiAgICAgICAgIHN0ID0gZ2VuX3B1YmxpY2tleV9mcm9tX2Rz YV9ldnAoCiAgICAgICAgICAgICBzZXNzaW9uLCBtZXRob2QsIG1ldGhvZF9s ZW4sIHB1YmtleWRhdGEsIHB1YmtleWRhdGFfbGVuLCBwayk7CiAgICAgICAg IGJyZWFrOworI2VuZGlmIC8qIExJQlNTSF9EU0EgKi8KKworICAgIGRlZmF1 bHQgOgorICAgICAgICBzdCA9IF9saWJzc2gyX2Vycm9yKHNlc3Npb24sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCU1NIMl9FUlJPUl9GSUxF LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmFibGUgdG8gZXh0 cmFjdCBwdWJsaWMga2V5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiZnJvbSBwcml2YXRlIGtleSBmaWxlOiAiCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIlVuc3VwcG9ydGVkIHByaXZhdGUga2V5IGZpbGUgZm9y bWF0Iik7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIEVWUF9QS0VZ X2ZyZWUocGspOworICAgIHJldHVybiBzdDsKK30KKworaW50CitfbGlic3No Ml9wdWJfcHJpdl9rZXlmaWxlbWVtb3J5KExJQlNTSDJfU0VTU0lPTiAqc2Vz c2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgY2hhciAqKm1ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2l6ZV90ICptZXRob2RfbGVuLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICoqcHVia2V5ZGF0YSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpwdWJrZXlk YXRhX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgY2hhciAqcHJpdmF0ZWtleWRhdGEsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNpemVfdCBwcml2YXRla2V5ZGF0YV9sZW4sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhc3Nw aHJhc2UpCit7CisgICAgaW50ICAgICAgIHN0OworICAgIEJJTyogICAgICBi cDsKKyAgICBFVlBfUEtFWSogcGs7CiAKKyAgICBfbGlic3NoMl9kZWJ1Zyhz ZXNzaW9uLAorICAgICAgICAgICAgICAgICAgIExJQlNTSDJfVFJBQ0VfQVVU SCwKKyAgICAgICAgICAgICAgICAgICAiQ29tcHV0aW5nIHB1YmxpYyBrZXkg ZnJvbSBwcml2YXRlIGtleS4iKTsKKworICAgIGJwID0gQklPX25ld19tZW1f YnVmKChjaGFyICopcHJpdmF0ZWtleWRhdGEsIHByaXZhdGVrZXlkYXRhX2xl bik7CisgICAgaWYgKCFicCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAg fQorICAgIGlmICghRVZQX2dldF9jaXBoZXJieW5hbWUoImRlcyIpKSB7Cisg ICAgICAgIC8qIElmIHRoaXMgY2lwaGVyIGlzbid0IGxvYWRlZCBpdCdzIGEg cHJldHR5IGdvb2QgaW5kaWNhdGlvbiB0aGF0IG5vbmUKKyAgICAgICAgICog YXJlLiAgSSBoYXZlICpOTyBET1VCVCogdGhhdCB0aGVyZSdzIGEgYmV0dGVy IHdheSB0byBkZWFsIHdpdGggdGhpcworICAgICAgICAgKiAoJCMmJSMkKCUk IyggU29tZW9uZSBidXkgbWUgYW4gT3BlblNTTCBtYW51YWwgYW5kIEknbGwg cmVhZCB1cCBvbgorICAgICAgICAgKiBpdC4KKyAgICAgICAgICovCisgICAg ICAgIE9wZW5TU0xfYWRkX2FsbF9jaXBoZXJzKCk7CisgICAgfQorICAgIEJJ T19yZXNldChicCk7CisgICAgcGsgPSBQRU1fcmVhZF9iaW9fUHJpdmF0ZUtl eShicCwgTlVMTCwgTlVMTCwgKHZvaWQqKXBhc3NwaHJhc2UpOworICAgIEJJ T19mcmVlKGJwKTsKKworICAgIGlmIChwayA9PSBOVUxMKSB7CisgICAgICAg IHJldHVybiBfbGlic3NoMl9lcnJvcihzZXNzaW9uLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTElCU1NIMl9FUlJPUl9GSUxFLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIlVuYWJsZSB0byBleHRyYWN0IHB1 YmxpYyBrZXkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZy b20gcHJpdmF0ZSBrZXkgZmlsZTogIgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIldyb25nIHBhc3NwaHJhc2Ugb3IgaW52YWxpZC91bnJlY29n bml6ZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInByaXZh dGUga2V5IGZpbGUgZm9ybWF0Iik7CisgICAgfQorCisgICAgc3dpdGNoIChw ay0+dHlwZSkgeworICAgIGNhc2UgRVZQX1BLRVlfUlNBIDoKKyAgICAgICAg c3QgPSBnZW5fcHVibGlja2V5X2Zyb21fcnNhX2V2cChzZXNzaW9uLCBtZXRo b2QsIG1ldGhvZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcHVia2V5ZGF0YSwgcHVia2V5ZGF0YV9sZW4sIHBrKTsK KyAgICAgICAgYnJlYWs7CisjaWYgTElCU1NIMl9EU0EKKyAgICBjYXNlIEVW UF9QS0VZX0RTQSA6CisgICAgICAgIHN0ID0gZ2VuX3B1YmxpY2tleV9mcm9t X2RzYV9ldnAoc2Vzc2lvbiwgbWV0aG9kLCBtZXRob2RfbGVuLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmtleWRhdGEs IHB1YmtleWRhdGFfbGVuLCBwayk7CisgICAgICAgIGJyZWFrOworI2VuZGlm IC8qIExJQlNTSF9EU0EgKi8KICAgICBkZWZhdWx0IDoKICAgICAgICAgc3Qg PSBfbGlic3NoMl9lcnJvcihzZXNzaW9uLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIExJQlNTSDJfRVJST1JfRklMRSwKQEAgLTgwMSw0ICs5NjAs NCBAQCBfbGlic3NoMl9wdWJfcHJpdl9rZXlmaWxlKExJQlNTSDJfU0VTU0lP TiAqc2Vzc2lvbiwKICAgICByZXR1cm4gc3Q7CiB9CiAKLSNlbmRpZiAvKiAh TElCU1NIMl9MSUJHQ1JZUFQgKi8KKyNlbmRpZiAvKiBMSUJTU0gyX09QRU5T U0wgKi8KZGlmZiAtLWdpdCBhL3BnYWRtaW4vbGlic3NoMi9wYWNrZXQuYyBi L3BnYWRtaW4vbGlic3NoMi9wYWNrZXQuYwppbmRleCBiZmJkNTZhLi41ZjFm ZWI4IDEwMDY0NAotLS0gYS9wZ2FkbWluL2xpYnNzaDIvcGFja2V0LmMKKysr IGIvcGdhZG1pbi9saWJzc2gyL3BhY2tldC5jCkBAIC0xLDYgKzEsNiBAQAog LyogQ29weXJpZ2h0IChjKSAyMDA0LTIwMDcsIFNhcmEgR29sZW1vbiA8c2Fy YWdAbGlic3NoMi5vcmc+CiAgKiBDb3B5cmlnaHQgKGMpIDIwMDUsMjAwNiBN aWtoYWlsIEd1c2Fyb3YKLSAqIENvcHlyaWdodCAoYykgMjAwOS0yMDEwIGJ5 IERhbmllbCBTdGVuYmVyZworICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTQg YnkgRGFuaWVsIFN0ZW5iZXJnCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTAgU2lt b24gSm9zZWZzc29uCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAg LTEzOSw3ICsxMzksNyBAQCBwYWNrZXRfcXVldWVfbGlzdGVuZXIoTElCU1NI Ml9TRVNTSU9OICogc2Vzc2lvbiwgdW5zaWduZWQgY2hhciAqZGF0YSwKICAg ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg ICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgY2hhbm5lbCA9IExJQlNT SDJfQUxMT0Moc2Vzc2lvbiwgc2l6ZW9mKExJQlNTSDJfQ0hBTk5FTCkpOwor ICAgICAgICAgICAgICAgICAgICBjaGFubmVsID0gTElCU1NIMl9DQUxMT0Mo c2Vzc2lvbiwgc2l6ZW9mKExJQlNTSDJfQ0hBTk5FTCkpOwogICAgICAgICAg ICAgICAgICAgICBpZiAoIWNoYW5uZWwpIHsKICAgICAgICAgICAgICAgICAg ICAgICAgIF9saWJzc2gyX2Vycm9yKHNlc3Npb24sIExJQlNTSDJfRVJST1Jf QUxMT0MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiVW5hYmxlIHRvIGFsbG9jYXRlIGEgY2hhbm5lbCBmb3IgIgpAQCAtMTUw LDggKzE1MCw2IEBAIHBhY2tldF9xdWV1ZV9saXN0ZW5lcihMSUJTU0gyX1NF U1NJT04gKiBzZXNzaW9uLCB1bnNpZ25lZCBjaGFyICpkYXRhLAogICAgICAg ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGxpc3Rlbl9z dGF0ZS0+Y2hhbm5lbCA9IGNoYW5uZWw7CiAKLSAgICAgICAgICAgICAgICAg ICAgbWVtc2V0KGNoYW5uZWwsIDAsIHNpemVvZihMSUJTU0gyX0NIQU5ORUwp KTsKLQogICAgICAgICAgICAgICAgICAgICBjaGFubmVsLT5zZXNzaW9uID0g c2Vzc2lvbjsKICAgICAgICAgICAgICAgICAgICAgY2hhbm5lbC0+Y2hhbm5l bF90eXBlX2xlbiA9IHNpemVvZigiZm9yd2FyZGVkLXRjcGlwIikgLSAxOwog ICAgICAgICAgICAgICAgICAgICBjaGFubmVsLT5jaGFubmVsX3R5cGUgPSBM SUJTU0gyX0FMTE9DKHNlc3Npb24sCkBAIC0yMTgsOSArMjE2LDExIEBAIHBh Y2tldF9xdWV1ZV9saXN0ZW5lcihMSUJTU0gyX1NFU1NJT04gKiBzZXNzaW9u LCB1bnNpZ25lZCBjaGFyICpkYXRhLAogICAgICAgICAgICAgICAgICAgICB9 CiAKICAgICAgICAgICAgICAgICAgICAgLyogTGluayB0aGUgY2hhbm5lbCBp bnRvIHRoZSBlbmQgb2YgdGhlIHF1ZXVlIGxpc3QgKi8KLSAgICAgICAgICAg ICAgICAgICAgX2xpYnNzaDJfbGlzdF9hZGQoJmxpc3RuLT5xdWV1ZSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxpc3Rlbl9z dGF0ZS0+Y2hhbm5lbC0+bm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgIGxp c3RuLT5xdWV1ZV9zaXplKys7CisgICAgICAgICAgICAgICAgICAgIGlmIChs aXN0ZW5fc3RhdGUtPmNoYW5uZWwpIHsKKyAgICAgICAgICAgICAgICAgICAg ICAgIF9saWJzc2gyX2xpc3RfYWRkKCZsaXN0bi0+cXVldWUsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbGlzdGVuX3N0 YXRlLT5jaGFubmVsLT5ub2RlKTsKKyAgICAgICAgICAgICAgICAgICAgICAg IGxpc3RuLT5xdWV1ZV9zaXplKys7CisgICAgICAgICAgICAgICAgICAgIH0K IAogICAgICAgICAgICAgICAgICAgICBsaXN0ZW5fc3RhdGUtPnN0YXRlID0g bGlic3NoMl9OQl9zdGF0ZV9pZGxlOwogICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gMDsKQEAgLTI5NywxNCArMjk3LDEzIEBAIHBhY2tldF94MTFfb3Bl bihMSUJTU0gyX1NFU1NJT04gKiBzZXNzaW9uLCB1bnNpZ25lZCBjaGFyICpk YXRhLAogCiAgICAgaWYgKHNlc3Npb24tPngxMSkgewogICAgICAgICBpZiAo eDExb3Blbl9zdGF0ZS0+c3RhdGUgPT0gbGlic3NoMl9OQl9zdGF0ZV9hbGxv Y2F0ZWQpIHsKLSAgICAgICAgICAgIGNoYW5uZWwgPSBMSUJTU0gyX0FMTE9D KHNlc3Npb24sIHNpemVvZihMSUJTU0gyX0NIQU5ORUwpKTsKKyAgICAgICAg ICAgIGNoYW5uZWwgPSBMSUJTU0gyX0NBTExPQyhzZXNzaW9uLCBzaXplb2Yo TElCU1NIMl9DSEFOTkVMKSk7CiAgICAgICAgICAgICBpZiAoIWNoYW5uZWwp IHsKICAgICAgICAgICAgICAgICBfbGlic3NoMl9lcnJvcihzZXNzaW9uLCBM SUJTU0gyX0VSUk9SX0FMTE9DLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJhbGxvY2F0ZSBhIGNoYW5uZWwgZm9yIG5ldyBjb25uZWN0aW9u Iik7CiAgICAgICAgICAgICAgICAgZmFpbHVyZV9jb2RlID0gU1NIX09QRU5f UkVTT1VSQ0VfU0hPUlRBR0U7CiAgICAgICAgICAgICAgICAgZ290byB4MTFf ZXhpdDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1lbXNldChjaGFu bmVsLCAwLCBzaXplb2YoTElCU1NIMl9DSEFOTkVMKSk7CiAKICAgICAgICAg ICAgIGNoYW5uZWwtPnNlc3Npb24gPSBzZXNzaW9uOwogICAgICAgICAgICAg Y2hhbm5lbC0+Y2hhbm5lbF90eXBlX2xlbiA9IHNpemVvZigieDExIikgLSAx OwpAQCAtNDA4LDYgKzQwNyw3IEBAIHBhY2tldF94MTFfb3BlbihMSUJTU0gy X1NFU1NJT04gKiBzZXNzaW9uLCB1bnNpZ25lZCBjaGFyICpkYXRhLAogICoK ICAqIFRoZSBpbnB1dCBwb2ludGVyICdkYXRhJyBpcyBwb2ludGluZyB0byBh bGxvY2F0ZWQgZGF0YSB0aGF0IHRoaXMgZnVuY3Rpb24KICAqIGlzIGFza2Vk IHRvIGRlYWwgd2l0aCBzbyBvbiBmYWlsdXJlIE9SIHN1Y2Nlc3MsIGl0IG11 c3QgYmUgZnJlZWQgZmluZS4KKyAqIFRoZSBvbmx5IGV4Y2VwdGlvbiBpcyB3 aGVuIHRoZSByZXR1cm4gY29kZSBpcyBMSUJTU0gyX0VSUk9SX0VBR0FJTi4K ICAqCiAgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgYWx3YXlzIGJlIGNhbGxlZCB3 aXRoICdkYXRhbGVuJyBncmVhdGVyIHRoYW4gemVyby4KICAqLwpAQCAtNTgz LDcgKzU4Myw4IEBAIF9saWJzc2gyX3BhY2tldF9hZGQoTElCU1NIMl9TRVNT SU9OICogc2Vzc2lvbiwgdW5zaWduZWQgY2hhciAqZGF0YSwKIAogCiAgICAg ICAgICAgICAgICAgaWYgKHdhbnRfcmVwbHkpIHsKLSAgICAgICAgICAgICAg ICAgICAgdW5zaWduZWQgY2hhciBwYWNrZXQgPSBTU0hfTVNHX1JFUVVFU1Rf RkFJTFVSRTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgcGFja2V0ID0KKyAgICAgICAgICAgICAgICAgICAgICAg IFNTSF9NU0dfUkVRVUVTVF9GQUlMVVJFOwogICAgICAgICAgICAgICAgICAg bGlic3NoMl9wYWNrZXRfYWRkX2p1bXBfcG9pbnQ1OgogICAgICAgICAgICAg ICAgICAgICBzZXNzaW9uLT5wYWNrQWRkX3N0YXRlID0gbGlic3NoMl9OQl9z dGF0ZV9qdW1wNTsKICAgICAgICAgICAgICAgICAgICAgcmMgPSBfbGlic3No Ml90cmFuc3BvcnRfc2VuZChzZXNzaW9uLCAmcGFja2V0LCAxLCBOVUxMLCAw KTsKQEAgLTY1Myw2ICs2NTQsMTggQEAgX2xpYnNzaDJfcGFja2V0X2FkZChM SUJTU0gyX1NFU1NJT04gKiBzZXNzaW9uLCB1bnNpZ25lZCBjaGFyICpkYXRh LAogICAgICAgICAgICAgICAgIF9saWJzc2gyX2RlYnVnKHNlc3Npb24sIExJ QlNTSDJfVFJBQ0VfQ09OTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiSWdub3JpbmcgZXh0ZW5kZWQgZGF0YSBhbmQgcmVmdW5kaW5nICVk IGJ5dGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50 KSAoZGF0YWxlbiAtIDEzKSk7CisgICAgICAgICAgICAgICAgaWYgKGNoYW5u ZWxwLT5yZWFkX2F2YWlsICsgZGF0YWxlbiAtIGRhdGFfaGVhZCA+PQorICAg ICAgICAgICAgICAgICAgICBjaGFubmVscC0+cmVtb3RlLndpbmRvd19zaXpl KQorICAgICAgICAgICAgICAgICAgICBkYXRhbGVuID0gY2hhbm5lbHAtPnJl bW90ZS53aW5kb3dfc2l6ZSAtCisgICAgICAgICAgICAgICAgICAgICAgICBj aGFubmVscC0+cmVhZF9hdmFpbCArIGRhdGFfaGVhZDsKKworICAgICAgICAg ICAgICAgIGNoYW5uZWxwLT5yZW1vdGUud2luZG93X3NpemUgLT0gZGF0YWxl biAtIGRhdGFfaGVhZDsKKyAgICAgICAgICAgICAgICBfbGlic3NoMl9kZWJ1 ZyhzZXNzaW9uLCBMSUJTU0gyX1RSQUNFX0NPTk4sCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgInNocmlua2luZyB3aW5kb3cgc2l6ZSBieSAl bHUgYnl0ZXMgdG8gJWx1LCByZWFkX2F2YWlsICVsdSIsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZGF0YWxlbiAtIGRhdGFfaGVhZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVscC0+cmVtb3Rl LndpbmRvd19zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNoYW5uZWxwLT5yZWFkX2F2YWlsKTsKKwogICAgICAgICAgICAgICAgIHNl c3Npb24tPnBhY2tBZGRfY2hhbm5lbHAgPSBjaGFubmVscDsKIAogICAgICAg ICAgICAgICAgIC8qIEFkanVzdCB0aGUgd2luZG93IGJhc2VkIG9uIHRoZSBi bG9jayB3ZSBqdXN0IGZyZWVkICovCkBAIC02ODQsNyArNjk3LDcgQEAgX2xp YnNzaDJfcGFja2V0X2FkZChMSUJTU0gyX1NFU1NJT04gKiBzZXNzaW9uLCB1 bnNpZ25lZCBjaGFyICpkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICIgdG8gcmVjZWl2ZSwgdHJ1bmNhdGluZyIpOwogICAgICAgICAg ICAgICAgIGRhdGFsZW4gPSBjaGFubmVscC0+cmVtb3RlLnBhY2tldF9zaXpl ICsgZGF0YV9oZWFkOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYg KGNoYW5uZWxwLT5yZW1vdGUud2luZG93X3NpemUgPD0gMCkgeworICAgICAg ICAgICAgaWYgKGNoYW5uZWxwLT5yZW1vdGUud2luZG93X3NpemUgPD0gY2hh bm5lbHAtPnJlYWRfYXZhaWwpIHsKICAgICAgICAgICAgICAgICAvKgogICAg ICAgICAgICAgICAgICAqIFNwZWMgc2F5cyB3ZSBNQVkgaWdub3JlIGJ5dGVz IHNlbnQgYmV5b25kCiAgICAgICAgICAgICAgICAgICogd2luZG93X3NpemUK QEAgLTcwMCwxNyArNzEzLDI2IEBAIF9saWJzc2gyX3BhY2tldF9hZGQoTElC U1NIMl9TRVNTSU9OICogc2Vzc2lvbiwgdW5zaWduZWQgY2hhciAqZGF0YSwK ICAgICAgICAgICAgIC8qIFJlc2V0IEVPRiBzdGF0dXMgKi8KICAgICAgICAg ICAgIGNoYW5uZWxwLT5yZW1vdGUuZW9mID0gMDsKIAotICAgICAgICAgICAg aWYgKChkYXRhbGVuIC0gZGF0YV9oZWFkKSA+IGNoYW5uZWxwLT5yZW1vdGUu d2luZG93X3NpemUpIHsKKyAgICAgICAgICAgIGlmIChjaGFubmVscC0+cmVh ZF9hdmFpbCArIGRhdGFsZW4gLSBkYXRhX2hlYWQgPgorICAgICAgICAgICAg ICAgIGNoYW5uZWxwLT5yZW1vdGUud2luZG93X3NpemUpIHsKICAgICAgICAg ICAgICAgICBfbGlic3NoMl9lcnJvcihzZXNzaW9uLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIExJQlNTSDJfRVJST1JfQ0hBTk5FTF9XSU5E T1dfRVhDRUVERUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IlJlbW90ZSBzZW50IG1vcmUgZGF0YSB0aGFuIGN1cnJlbnQgIgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJ3aW5kb3cgYWxsb3dzLCB0cnVu Y2F0aW5nIik7Ci0gICAgICAgICAgICAgICAgZGF0YWxlbiA9IGNoYW5uZWxw LT5yZW1vdGUud2luZG93X3NpemUgKyBkYXRhX2hlYWQ7Ci0gICAgICAgICAg ICAgICAgY2hhbm5lbHAtPnJlbW90ZS53aW5kb3dfc2l6ZSA9IDA7CisgICAg ICAgICAgICAgICAgZGF0YWxlbiA9IGNoYW5uZWxwLT5yZW1vdGUud2luZG93 X3NpemUgLQorICAgICAgICAgICAgICAgICAgICBjaGFubmVscC0+cmVhZF9h dmFpbCArIGRhdGFfaGVhZDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg IGVsc2UKLSAgICAgICAgICAgICAgICAvKiBOb3cgdGhhdCB3ZSd2ZSByZWNl aXZlZCBpdCwgc2hyaW5rIG91ciB3aW5kb3cgKi8KLSAgICAgICAgICAgICAg ICBjaGFubmVscC0+cmVtb3RlLndpbmRvd19zaXplIC09IGRhdGFsZW4gLSBk YXRhX2hlYWQ7CisKKyAgICAgICAgICAgIC8qIFVwZGF0ZSB0aGUgcmVhZF9h dmFpbCBjb3VudGVyLiBUaGUgd2luZG93IHNpemUgd2lsbCBiZQorICAgICAg ICAgICAgICogdXBkYXRlZCBvbmNlIHRoZSBkYXRhIGlzIGFjdHVhbGx5IHJl YWQgZnJvbSB0aGUgcXVldWUKKyAgICAgICAgICAgICAqIGZyb20gYW4gdXBw ZXIgbGF5ZXIgKi8KKyAgICAgICAgICAgIGNoYW5uZWxwLT5yZWFkX2F2YWls ICs9IGRhdGFsZW4gLSBkYXRhX2hlYWQ7CisKKyAgICAgICAgICAgIF9saWJz c2gyX2RlYnVnKHNlc3Npb24sIExJQlNTSDJfVFJBQ0VfQ09OTiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICJpbmNyZWFzaW5nIHJlYWRfYXZhaWwg YnkgJWx1IGJ5dGVzIHRvICVsdS8lbHUiLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGxvbmcpKGRhdGFsZW4gLSBkYXRhX2hlYWQpLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGxvbmcpY2hhbm5lbHAtPnJlYWRfYXZh aWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyljaGFubmVs cC0+cmVtb3RlLndpbmRvd19zaXplKTsKIAogICAgICAgICAgICAgYnJlYWs7 CiAKQEAgLTk0NSw2ICs5NjcsNyBAQCBfbGlic3NoMl9wYWNrZXRfYWRkKExJ QlNTSDJfU0VTU0lPTiAqIHNlc3Npb24sIHVuc2lnbmVkIGNoYXIgKmRhdGEs CiAgICAgICAgIGlmICghcGFja2V0cCkgewogICAgICAgICAgICAgX2xpYnNz aDJfZGVidWcoc2Vzc2lvbiwgTElCU1NIMl9FUlJPUl9BTExPQywKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJtZW1vcnkgZm9yIHBhY2tldCIpOwor ICAgICAgICAgICAgTElCU1NIMl9GUkVFKHNlc3Npb24sIGRhdGEpOwogICAg ICAgICAgICAgc2Vzc2lvbi0+cGFja0FkZF9zdGF0ZSA9IGxpYnNzaDJfTkJf c3RhdGVfaWRsZTsKICAgICAgICAgICAgIHJldHVybiBMSUJTU0gyX0VSUk9S X0FMTE9DOwogICAgICAgICB9CkBAIC0xMTM0LDE0ICsxMTU3LDE0IEBAIF9s aWJzc2gyX3BhY2tldF9idXJuKExJQlNTSDJfU0VTU0lPTiAqIHNlc3Npb24s CiB7CiAgICAgdW5zaWduZWQgY2hhciAqZGF0YTsKICAgICBzaXplX3QgZGF0 YV9sZW47Ci0gICAgdW5zaWduZWQgY2hhciBhbGxfcGFja2V0c1syNTVdOwot ICAgIGludCBpOworICAgIHVuc2lnbmVkIGNoYXIgaSwgYWxsX3BhY2tldHNb MjU1XTsKICAgICBpbnQgcmV0OwogCiAgICAgaWYgKCpzdGF0ZSA9PSBsaWJz c2gyX05CX3N0YXRlX2lkbGUpIHsKLSAgICAgICAgZm9yKGkgPSAxOyBpIDwg MjU2OyBpKyspIHsKKyAgICAgICAgZm9yKGkgPSAxOyBpIDwgMjU1OyBpKysp IHsKICAgICAgICAgICAgIGFsbF9wYWNrZXRzW2kgLSAxXSA9IGk7CiAgICAg ICAgIH0KKyAgICAgICAgYWxsX3BhY2tldHNbMjU0XSA9IDA7CiAKICAgICAg ICAgaWYgKF9saWJzc2gyX3BhY2tldF9hc2t2KHNlc3Npb24sIGFsbF9wYWNr ZXRzLCAmZGF0YSwgJmRhdGFfbGVuLCAwLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTlVMTCwgMCkgPT0gMCkgewpAQCAtMTE3MCw3ICsx MTkzLDggQEAgX2xpYnNzaDJfcGFja2V0X2J1cm4oTElCU1NIMl9TRVNTSU9O ICogc2Vzc2lvbiwKIAogICAgICAgICAvKiBCZSBsYXp5LCBsZXQgcGFja2V0 X2FzayBwdWxsIGl0IG91dCBvZiB0aGUgYnJpZ2FkZSAqLwogICAgICAgICBp ZiAoMCA9PQotICAgICAgICAgICAgX2xpYnNzaDJfcGFja2V0X2FzayhzZXNz aW9uLCByZXQsICZkYXRhLCAmZGF0YV9sZW4sIDAsIE5VTEwsIDApKSB7Cisg ICAgICAgICAgICBfbGlic3NoMl9wYWNrZXRfYXNrKHNlc3Npb24sICh1bnNp Z25lZCBjaGFyKXJldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJmRhdGEsICZkYXRhX2xlbiwgMCwgTlVMTCwgMCkpIHsK ICAgICAgICAgICAgIC8qIFNtb2tlICdlbSBpZiB5b3UgZ290ICdlbSAqLwog ICAgICAgICAgICAgTElCU1NIMl9GUkVFKHNlc3Npb24sIGRhdGEpOwogICAg ICAgICAgICAgKnN0YXRlID0gbGlic3NoMl9OQl9zdGF0ZV9pZGxlOwpkaWZm IC0tZ2l0IGEvcGdhZG1pbi9saWJzc2gyL3BlbS5jIGIvcGdhZG1pbi9saWJz c2gyL3BlbS5jCmluZGV4IDU3NDliYzguLjlmNTFiYmEgMTAwNjQ0Ci0tLSBh L3BnYWRtaW4vbGlic3NoMi9wZW0uYworKysgYi9wZ2FkbWluL2xpYnNzaDIv cGVtLmMKQEAgLTM4LDIwICszOCw1OSBAQAogCiAjaW5jbHVkZSAibGlic3No Ml9wcml2LmgiCiAKLSNpZmRlZiBMSUJTU0gyX0xJQkdDUllQVCAvKiBjb21w aWxlIG9ubHkgaWYgd2UgYnVpbGQgd2l0aCBsaWJnY3J5cHQgKi8KLQogc3Rh dGljIGludAogcmVhZGxpbmUoY2hhciAqbGluZSwgaW50IGxpbmVfc2l6ZSwg RklMRSAqIGZwKQogeworICAgIHNpemVfdCBsZW47CisKKyAgICBpZiAoIWxp bmUpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KICAgICBpZiAoIWZn ZXRzKGxpbmUsIGxpbmVfc2l6ZSwgZnApKSB7CiAgICAgICAgIHJldHVybiAt MTsKICAgICB9Ci0gICAgaWYgKCpsaW5lICYmIGxpbmVbc3RybGVuKGxpbmUp IC0gMV0gPT0gJ1xuJykgewotICAgICAgICBsaW5lW3N0cmxlbihsaW5lKSAt IDFdID0gJ1wwJzsKKworICAgIGlmICgqbGluZSkgeworICAgICAgICBsZW4g PSBzdHJsZW4obGluZSk7CisgICAgICAgIGlmIChsZW4gPiAwICYmIGxpbmVb bGVuIC0gMV0gPT0gJ1xuJykgeworICAgICAgICAgICAgbGluZVtsZW4gLSAx XSA9ICdcMCc7CisgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKCpsaW5lICYm IGxpbmVbc3RybGVuKGxpbmUpIC0gMV0gPT0gJ1xyJykgewotICAgICAgICBs aW5lW3N0cmxlbihsaW5lKSAtIDFdID0gJ1wwJzsKKworICAgIGlmICgqbGlu ZSkgeworICAgICAgICBsZW4gPSBzdHJsZW4obGluZSk7CisgICAgICAgIGlm IChsZW4gPiAwICYmIGxpbmVbbGVuIC0gMV0gPT0gJ1xyJykgeworICAgICAg ICAgICAgbGluZVtsZW4gLSAxXSA9ICdcMCc7CisgICAgICAgIH0KICAgICB9 CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorcmVhZGxpbmVf bWVtb3J5KGNoYXIgKmxpbmUsIHNpemVfdCBsaW5lX3NpemUsCisgICAgICAg ICAgICAgICAgY29uc3QgY2hhciAqZmlsZWRhdGEsIHNpemVfdCBmaWxlZGF0 YV9sZW4sCisgICAgICAgICAgICAgICAgc2l6ZV90ICpmaWxlZGF0YV9vZmZz ZXQpCit7CisgICAgc2l6ZV90IG9mZiwgbGVuOworCisgICAgb2ZmID0gKmZp bGVkYXRhX29mZnNldDsKKworICAgIGZvciAobGVuID0gMDsgb2ZmICsgbGVu IDwgZmlsZWRhdGFfbGVuICYmIGxlbiA8IGxpbmVfc2l6ZTsgbGVuKyspIHsK KyAgICAgICAgaWYgKGZpbGVkYXRhW29mZiArIGxlbl0gPT0gJ1xuJyB8fAor ICAgICAgICAgICAgZmlsZWRhdGFbb2ZmICsgbGVuXSA9PSAnXHInKSB7Cisg ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAg ICBpZiAobGVuKSB7CisgICAgICAgIG1lbWNweShsaW5lLCBmaWxlZGF0YSAr IG9mZiwgbGVuKTsKKyAgICAgICAgKmZpbGVkYXRhX29mZnNldCArPSBsZW47 CisgICAgfQorCisgICAgbGluZVtsZW5dID0gJ1wwJzsKKyAgICAqZmlsZWRh dGFfb2Zmc2V0ICs9IDE7CisKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNjks NiArMTA4LDggQEAgX2xpYnNzaDJfcGVtX3BhcnNlKExJQlNTSDJfU0VTU0lP TiAqIHNlc3Npb24sCiAgICAgaW50IHJldDsKIAogICAgIGRvIHsKKyAgICAg ICAgKmxpbmUgPSAnXDAnOworCiAgICAgICAgIGlmIChyZWFkbGluZShsaW5l LCBMSU5FX1NJWkUsIGZwKSkgewogICAgICAgICAgICAgcmV0dXJuIC0xOwog ICAgICAgICB9CkBAIC05MywxMiArMTM0LDg0IEBAIF9saWJzc2gyX3BlbV9w YXJzZShMSUJTU0gyX1NFU1NJT04gKiBzZXNzaW9uLAogICAgICAgICAgICAg YjY0ZGF0YWxlbiArPSBsaW5lbGVuOwogICAgICAgICB9CiAKKyAgICAgICAg KmxpbmUgPSAnXDAnOworCiAgICAgICAgIGlmIChyZWFkbGluZShsaW5lLCBM SU5FX1NJWkUsIGZwKSkgewogICAgICAgICAgICAgcmV0ID0gLTE7CiAgICAg ICAgICAgICBnb3RvIG91dDsKICAgICAgICAgfQogICAgIH0gd2hpbGUgKHN0 cmNtcChsaW5lLCBoZWFkZXJlbmQpICE9IDApOwogCisgICAgaWYgKCFiNjRk YXRhKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAo bGlic3NoMl9iYXNlNjRfZGVjb2RlKHNlc3Npb24sIChjaGFyKiopIGRhdGEs IGRhdGFsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiNjRk YXRhLCBiNjRkYXRhbGVuKSkgeworICAgICAgICByZXQgPSAtMTsKKyAgICAg ICAgZ290byBvdXQ7CisgICAgfQorCisgICAgcmV0ID0gMDsKKyAgb3V0Ogor ICAgIGlmIChiNjRkYXRhKSB7CisgICAgICAgIExJQlNTSDJfRlJFRShzZXNz aW9uLCBiNjRkYXRhKTsKKyAgICB9CisgICAgcmV0dXJuIHJldDsKK30KKwor aW50CitfbGlic3NoMl9wZW1fcGFyc2VfbWVtb3J5KExJQlNTSDJfU0VTU0lP TiAqIHNlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGNoYXIgKmhlYWRlcmJlZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBjaGFyICpoZWFkZXJlbmQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IGNoYXIgKmZpbGVkYXRhLCBzaXplX3QgZmlsZWRhdGFf bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFy ICoqZGF0YSwgdW5zaWduZWQgaW50ICpkYXRhbGVuKQoreworICAgIGNoYXIg bGluZVtMSU5FX1NJWkVdOworICAgIGNoYXIgKmI2NGRhdGEgPSBOVUxMOwor ICAgIHVuc2lnbmVkIGludCBiNjRkYXRhbGVuID0gMDsKKyAgICBzaXplX3Qg b2ZmID0gMDsKKyAgICBpbnQgcmV0OworCisgICAgZG8geworICAgICAgICAq bGluZSA9ICdcMCc7CisKKyAgICAgICAgaWYgKHJlYWRsaW5lX21lbW9yeShs aW5lLCBMSU5FX1NJWkUsIGZpbGVkYXRhLCBmaWxlZGF0YV9sZW4sICZvZmYp KSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9 CisgICAgd2hpbGUgKHN0cmNtcChsaW5lLCBoZWFkZXJiZWdpbikgIT0gMCk7 CisKKyAgICAqbGluZSA9ICdcMCc7CisKKyAgICBkbyB7CisgICAgICAgIGlm ICgqbGluZSkgeworICAgICAgICAgICAgY2hhciAqdG1wOworICAgICAgICAg ICAgc2l6ZV90IGxpbmVsZW47CisKKyAgICAgICAgICAgIGxpbmVsZW4gPSBz dHJsZW4obGluZSk7CisgICAgICAgICAgICB0bXAgPSBMSUJTU0gyX1JFQUxM T0Moc2Vzc2lvbiwgYjY0ZGF0YSwgYjY0ZGF0YWxlbiArIGxpbmVsZW4pOwor ICAgICAgICAgICAgaWYgKCF0bXApIHsKKyAgICAgICAgICAgICAgICByZXQg PSAtMTsKKyAgICAgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgICAg IH0KKyAgICAgICAgICAgIG1lbWNweSh0bXAgKyBiNjRkYXRhbGVuLCBsaW5l LCBsaW5lbGVuKTsKKyAgICAgICAgICAgIGI2NGRhdGEgPSB0bXA7CisgICAg ICAgICAgICBiNjRkYXRhbGVuICs9IGxpbmVsZW47CisgICAgICAgIH0KKwor ICAgICAgICAqbGluZSA9ICdcMCc7CisKKyAgICAgICAgaWYgKHJlYWRsaW5l X21lbW9yeShsaW5lLCBMSU5FX1NJWkUsIGZpbGVkYXRhLCBmaWxlZGF0YV9s ZW4sICZvZmYpKSB7CisgICAgICAgICAgICByZXQgPSAtMTsKKyAgICAgICAg ICAgIGdvdG8gb3V0OworICAgICAgICB9CisgICAgfSB3aGlsZSAoc3RyY21w KGxpbmUsIGhlYWRlcmVuZCkgIT0gMCk7CisKKyAgICBpZiAoIWI2NGRhdGEp IHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKwogICAgIGlmIChsaWJz c2gyX2Jhc2U2NF9kZWNvZGUoc2Vzc2lvbiwgKGNoYXIqKikgZGF0YSwgZGF0 YWxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGI2NGRhdGEs IGI2NGRhdGFsZW4pKSB7CiAgICAgICAgIHJldCA9IC0xOwpAQCAtMjA5LDUg KzMyMiwzIEBAIF9saWJzc2gyX3BlbV9kZWNvZGVfaW50ZWdlcih1bnNpZ25l ZCBjaGFyICoqZGF0YSwgdW5zaWduZWQgaW50ICpkYXRhbGVuLAogCiAgICAg cmV0dXJuIDA7CiB9Ci0KLSNlbmRpZiAvKiBMSUJTU0gyX0xJQkdDUllQVCAq LwpkaWZmIC0tZ2l0IGEvcGdhZG1pbi9saWJzc2gyL3B1YmxpY2tleS5jIGIv cGdhZG1pbi9saWJzc2gyL3B1YmxpY2tleS5jCmluZGV4IDI4MmZmZmUuLmJm ZWUwYTggMTAwNjQ0Ci0tLSBhL3BnYWRtaW4vbGlic3NoMi9wdWJsaWNrZXku YworKysgYi9wZ2FkbWluL2xpYnNzaDIvcHVibGlja2V5LmMKQEAgLTEsNSAr MSw1IEBACiAvKiBDb3B5cmlnaHQgKGMpIDIwMDQtMjAwNywgU2FyYSBHb2xl bW9uIDxzYXJhZ0BsaWJzc2gyLm9yZz4KLSAqIENvcHlyaWdodCAoYykgMjAx MC0yMDEyIGJ5IERhbmllbCBTdGVuYmVyZworICogQ29weXJpZ2h0IChjKSAy MDEwLTIwMTQgYnkgRGFuaWVsIFN0ZW5iZXJnCiAgKiBBbGwgcmlnaHRzIHJl c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291 cmNlIGFuZCBiaW5hcnkgZm9ybXMsCkBAIC0xMzYsNiArMTM2LDggQEAgcHVi bGlja2V5X3BhY2tldF9yZWNlaXZlKExJQlNTSDJfUFVCTElDS0VZICogcGtl eSwKICAgICBMSUJTU0gyX1NFU1NJT04gKnNlc3Npb24gPSBjaGFubmVsLT5z ZXNzaW9uOwogICAgIHVuc2lnbmVkIGNoYXIgYnVmZmVyWzRdOwogICAgIGlu dCByYzsKKyAgICAqZGF0YSA9IE5VTEw7IC8qIGRlZmF1bHQgdG8gbm90aGlu ZyByZXR1cm5lZCAqLworICAgICpkYXRhX2xlbiA9IDA7CiAKICAgICBpZiAo cGtleS0+cmVjZWl2ZV9zdGF0ZSA9PSBsaWJzc2gyX05CX3N0YXRlX2lkbGUp IHsKICAgICAgICAgcmMgPSBfbGlic3NoMl9jaGFubmVsX3JlYWQoY2hhbm5l bCwgMCwgKGNoYXIgKikgYnVmZmVyLCA0KTsKQEAgLTM0OCwxMyArMzUwLDEy IEBAIHN0YXRpYyBMSUJTU0gyX1BVQkxJQ0tFWSAqcHVibGlja2V5X2luaXQo TElCU1NIMl9TRVNTSU9OICpzZXNzaW9uKQogICAgICAgICB9CiAKICAgICAg ICAgc2Vzc2lvbi0+cGtleUluaXRfcGtleSA9Ci0gICAgICAgICAgICBMSUJT U0gyX0FMTE9DKHNlc3Npb24sIHNpemVvZihMSUJTU0gyX1BVQkxJQ0tFWSkp OworICAgICAgICAgICAgTElCU1NIMl9DQUxMT0Moc2Vzc2lvbiwgc2l6ZW9m KExJQlNTSDJfUFVCTElDS0VZKSk7CiAgICAgICAgIGlmICghc2Vzc2lvbi0+ cGtleUluaXRfcGtleSkgewogICAgICAgICAgICAgX2xpYnNzaDJfZXJyb3Io c2Vzc2lvbiwgTElCU1NIMl9FUlJPUl9BTExPQywKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJVbmFibGUgdG8gYWxsb2NhdGUgYSBuZXcgcHVibGlj a2V5IHN0cnVjdHVyZSIpOwogICAgICAgICAgICAgZ290byBlcnJfZXhpdDsK ICAgICAgICAgfQotICAgICAgICBtZW1zZXQoc2Vzc2lvbi0+cGtleUluaXRf cGtleSwgMCwgc2l6ZW9mKExJQlNTSDJfUFVCTElDS0VZKSk7CiAgICAgICAg IHNlc3Npb24tPnBrZXlJbml0X3BrZXktPmNoYW5uZWwgPSBzZXNzaW9uLT5w a2V5SW5pdF9jaGFubmVsOwogICAgICAgICBzZXNzaW9uLT5wa2V5SW5pdF9w a2V5LT52ZXJzaW9uID0gMDsKIApkaWZmIC0tZ2l0IGEvcGdhZG1pbi9saWJz c2gyL3NjcC5jIGIvcGdhZG1pbi9saWJzc2gyL3NjcC5jCmluZGV4IDYzZDE4 MWUuLjIyNzc4ZGQgMTAwNjQ0Ci0tLSBhL3BnYWRtaW4vbGlic3NoMi9zY3Au YworKysgYi9wZ2FkbWluL2xpYnNzaDIvc2NwLmMKQEAgLTEzMyw3ICsxMzMs NyBAQCBzaGVsbF9xdW90ZWFyZyhjb25zdCBjaGFyICpwYXRoLCB1bnNpZ25l ZCBjaGFyICpidWYsCiAgICAgICogUHJvY2Vzc2luZyBTdGF0ZXM6CiAgICAg ICogIFVRU1RSSU5HOiAgICAgICB1bnF1b3RlZCBzdHJpbmc6IC4uLiAtLSB1 c2VkIGZvciBxdW90aW5nIGV4Y2xhbWF0aW9uCiAgICAgICogICAgICAgICAg ICAgICAgICBtYXJrcy4gVGhpcyBpcyB0aGUgaW5pdGlhbCBzdGF0ZQotICAg ICAqICBTUVNUUklORzogICAgICAgc2luZ2xlLXFvdXRlZC1zdHJpbmc6ICcu Li4gLS0gYW55IGNoYXJhY3RlciBtYXkgZm9sbG93CisgICAgICogIFNRU1RS SU5HOiAgICAgICBzaW5nbGUtcXVvdGVkLXN0cmluZzogJy4uLiAtLSBhbnkg Y2hhcmFjdGVyIG1heSBmb2xsb3cKICAgICAgKiAgUVNUUklORzogICAgICAg IHF1b3RlZCBzdHJpbmc6ICIuLi4gLS0gb25seSBhcG9zdHJvcGhlcyBtYXkg Zm9sbG93CiAgICAgICovCiAgICAgZW51bSB7IFVRU1RSSU5HLCBTUVNUUklO RywgUVNUUklORyB9IHN0YXRlID0gVVFTVFJJTkc7CkBAIC0yNjgsNyArMjY4 LDcgQEAgc2hlbGxfcXVvdGVhcmcoY29uc3QgY2hhciAqcGF0aCwgdW5zaWdu ZWQgY2hhciAqYnVmLAogICoKICAqLwogc3RhdGljIExJQlNTSDJfQ0hBTk5F TCAqCi1zY3BfcmVjdihMSUJTU0gyX1NFU1NJT04gKiBzZXNzaW9uLCBjb25z dCBjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdCAqIHNiKQorc2NwX3JlY3YoTElC U1NIMl9TRVNTSU9OICogc2Vzc2lvbiwgY29uc3QgY2hhciAqcGF0aCwgbGli c3NoMl9zdHJ1Y3Rfc3RhdCAqIHNiKQogewogICAgIGludCBjbWRfbGVuOwog ICAgIGludCByYzsKQEAgLTI5NSwxNCArMjk1LDE2IEBAIHNjcF9yZWN2KExJ QlNTSDJfU0VTU0lPTiAqIHNlc3Npb24sIGNvbnN0IGNoYXIgKnBhdGgsIHN0 cnVjdCBzdGF0ICogc2IpCiAgICAgICAgIH0KIAogICAgICAgICBzbnByaW50 ZigoY2hhciAqKXNlc3Npb24tPnNjcFJlY3ZfY29tbWFuZCwKLSAgICAgICAg ICAgICAgICAgc2Vzc2lvbi0+c2NwUmVjdl9jb21tYW5kX2xlbiwgInNjcCAt JXNmICIsIHNiPyJwIjoiIik7CisgICAgICAgICAgICAgICAgIHNlc3Npb24t PnNjcFJlY3ZfY29tbWFuZF9sZW4sCisgICAgICAgICAgICAgICAgICJzY3Ag LSVzZiAiLCBzYj8icCI6IiIpOwogCiAgICAgICAgIGNtZF9sZW4gPSBzdHJs ZW4oKGNoYXIgKilzZXNzaW9uLT5zY3BSZWN2X2NvbW1hbmQpOworICAgICAg ICBjbWRfbGVuICs9IHNoZWxsX3F1b3RlYXJnKHBhdGgsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJnNlc3Npb24tPnNjcFJlY3ZfY29t bWFuZFtjbWRfbGVuXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZXNzaW9uLT5zY3BSZWN2X2NvbW1hbmRfbGVuIC0gY21kX2xlbik7 CiAKLSAgICAgICAgKHZvaWQpIHNoZWxsX3F1b3RlYXJnKHBhdGgsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmc2Vzc2lvbi0+c2NwUmVjdl9j b21tYW5kW2NtZF9sZW5dLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2Vzc2lvbi0+c2NwUmVjdl9jb21tYW5kX2xlbiAtIGNtZF9sZW4pOwot CisgICAgICAgIHNlc3Npb24tPnNjcFJlY3ZfY29tbWFuZFtjbWRfbGVuXSA9 ICdcMCc7CisgICAgICAgIHNlc3Npb24tPnNjcFJlY3ZfY29tbWFuZF9sZW4g PSBjbWRfbGVuICsgMTsKIAogICAgICAgICBfbGlic3NoMl9kZWJ1ZyhzZXNz aW9uLCBMSUJTU0gyX1RSQUNFX1NDUCwKICAgICAgICAgICAgICAgICAgICAg ICAgIk9wZW5pbmcgY2hhbm5lbCBmb3IgU0NQIHJlY2VpdmUiKTsKQEAgLTcy MiwxMiArNzI0LDEyIEBAIHNjcF9yZWN2KExJQlNTSDJfU0VTU0lPTiAqIHNl c3Npb24sIGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBzdGF0ICogc2IpCiAg ICAgfQogCiAgICAgaWYgKHNiKSB7Ci0gICAgICAgIG1lbXNldChzYiwgMCwg c2l6ZW9mKHN0cnVjdCBzdGF0KSk7CisgICAgICAgIG1lbXNldChzYiwgMCwg c2l6ZW9mKGxpYnNzaDJfc3RydWN0X3N0YXQpKTsKIAogICAgICAgICBzYi0+ c3RfbXRpbWUgPSBzZXNzaW9uLT5zY3BSZWN2X210aW1lOwogICAgICAgICBz Yi0+c3RfYXRpbWUgPSBzZXNzaW9uLT5zY3BSZWN2X2F0aW1lOwogICAgICAg ICBzYi0+c3Rfc2l6ZSA9IHNlc3Npb24tPnNjcFJlY3Zfc2l6ZTsKLSAgICAg ICAgc2ItPnN0X21vZGUgPSBzZXNzaW9uLT5zY3BSZWN2X21vZGU7CisgICAg ICAgIHNiLT5zdF9tb2RlID0gKHVuc2lnbmVkIHNob3J0KXNlc3Npb24tPnNj cFJlY3ZfbW9kZTsKICAgICB9CiAKICAgICBzZXNzaW9uLT5zY3BSZWN2X3N0 YXRlID0gbGlic3NoMl9OQl9zdGF0ZV9pZGxlOwpAQCAtNzU3LDEzICs3NTks NDkgQEAgc2NwX3JlY3YoTElCU1NIMl9TRVNTSU9OICogc2Vzc2lvbiwgY29u c3QgY2hhciAqcGF0aCwgc3RydWN0IHN0YXQgKiBzYikKIC8qCiAgKiBsaWJz c2gyX3NjcF9yZWN2CiAgKgotICogT3BlbiBhIGNoYW5uZWwgYW5kIHJlcXVl c3QgYSByZW1vdGUgZmlsZSB2aWEgU0NQCisgKiBERVBSRUNBVEVECisgKgor ICogT3BlbiBhIGNoYW5uZWwgYW5kIHJlcXVlc3QgYSByZW1vdGUgZmlsZSB2 aWEgU0NQLiAgVGhpcyByZWNlaXZlcyBmaWxlcyBsYXJnZXIKKyAqIHRoYW4g MiBHQiwgYnV0IGlzIHVuYWJsZSB0byByZXBvcnQgdGhlIHByb3BlciBzaXpl IG9uIHBsYXRmb3JtcyB3aGVyZSB0aGUKKyAqIHN0X3NpemUgbWVtYmVyIG9m IHN0cnVjdCBzdGF0IGlzIGxpbWl0ZWQgdG8gMiBHQiAoZS5nLiB3aW5kb3dz KS4KICAqCiAgKi8KIExJQlNTSDJfQVBJIExJQlNTSDJfQ0hBTk5FTCAqCiBs aWJzc2gyX3NjcF9yZWN2KExJQlNTSDJfU0VTU0lPTiAqc2Vzc2lvbiwgY29u c3QgY2hhciAqcGF0aCwgc3RydWN0IHN0YXQgKiBzYikKIHsKICAgICBMSUJT U0gyX0NIQU5ORUwgKnB0cjsKKworICAgIC8qIHNjcF9yZWN2IHVzZXMgbGli c3NoMl9zdHJ1Y3Rfc3RhdCwgc28gcGFzcyBvbmUgaWYgdGhlIGNhbGxlciBn YXZlIHVzIGEgc3RydWN0IHRvIHBvcHVsYXRlLi4uICovCisgICAgbGlic3No Ml9zdHJ1Y3Rfc3RhdCBzYl9pbnRsOworICAgIGxpYnNzaDJfc3RydWN0X3N0 YXQgKnNiX3B0cjsKKyAgICBzYl9wdHIgPSBzYiA/ICZzYl9pbnRsIDogTlVM TDsKKworICAgIEJMT0NLX0FESlVTVF9FUlJOTyhwdHIsIHNlc3Npb24sIHNj cF9yZWN2KHNlc3Npb24sIHBhdGgsIHNiX3B0cikpOworCisgICAgLyogLi4u YW5kIHBvcHVsYXRlIHRoZSBjYWxsZXIncyB3aXRoIGFzIG11Y2ggaW5mbyBh cyBmaXRzLiAqLworICAgIGlmIChzYikgeworICAgICAgICBtZW1zZXQoc2Is IDAsIHNpemVvZihzdHJ1Y3Qgc3RhdCkpOworCisgICAgICAgIHNiLT5zdF9t dGltZSA9IHNiX2ludGwuc3RfbXRpbWU7CisgICAgICAgIHNiLT5zdF9hdGlt ZSA9IHNiX2ludGwuc3RfYXRpbWU7CisgICAgICAgIHNiLT5zdF9zaXplID0g KG9mZl90KXNiX2ludGwuc3Rfc2l6ZTsKKyAgICAgICAgc2ItPnN0X21vZGUg PSBzYl9pbnRsLnN0X21vZGU7CisgICAgfQorCisgICAgcmV0dXJuIHB0cjsK K30KKworLyoKKyAqIGxpYnNzaDJfc2NwX3JlY3YyCisgKgorICogT3BlbiBh IGNoYW5uZWwgYW5kIHJlcXVlc3QgYSByZW1vdGUgZmlsZSB2aWEgU0NQLiAg VGhpcyBzdXBwb3J0cyBmaWxlcyA+IDJHQgorICogb24gcGxhdGZvcm1zIHRo YXQgc3VwcG9ydCBpdC4KKyAqCisgKi8KK0xJQlNTSDJfQVBJIExJQlNTSDJf Q0hBTk5FTCAqCitsaWJzc2gyX3NjcF9yZWN2MihMSUJTU0gyX1NFU1NJT04g KnNlc3Npb24sIGNvbnN0IGNoYXIgKnBhdGgsIGxpYnNzaDJfc3RydWN0X3N0 YXQgKiBzYikKK3sKKyAgICBMSUJTU0gyX0NIQU5ORUwgKnB0cjsKICAgICBC TE9DS19BREpVU1RfRVJSTk8ocHRyLCBzZXNzaW9uLCBzY3BfcmVjdihzZXNz aW9uLCBwYXRoLCBzYikpOwogICAgIHJldHVybiBwdHI7CiB9CkBAIC03OTAs MjIgKzgyOCwyNSBAQCBzY3Bfc2VuZChMSUJTU0gyX1NFU1NJT04gKiBzZXNz aW9uLCBjb25zdCBjaGFyICpwYXRoLCBpbnQgbW9kZSwKIAogICAgICAgICBz ZXNzaW9uLT5zY3BTZW5kX2NvbW1hbmQgPQogICAgICAgICAgICAgTElCU1NI Ml9BTExPQyhzZXNzaW9uLCBzZXNzaW9uLT5zY3BTZW5kX2NvbW1hbmRfbGVu KTsKKwogICAgICAgICBpZiAoIXNlc3Npb24tPnNjcFNlbmRfY29tbWFuZCkg ewogICAgICAgICAgICAgX2xpYnNzaDJfZXJyb3Ioc2Vzc2lvbiwgTElCU1NI Ml9FUlJPUl9BTExPQywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJV bmFibGUgdG8gYWxsb2NhdGUgYSBjb21tYW5kIGJ1ZmZlciBmb3Igc2NwIHNl c3Npb24iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmFibGUg dG8gYWxsb2NhdGUgYSBjb21tYW5kIGJ1ZmZlciBmb3IgIgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIlNDUCBzZXNzaW9uIik7CiAgICAgICAgICAg ICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogCi0gICAgICAgIHNucHJpbnRm KChjaGFyICopc2Vzc2lvbi0+c2NwU2VuZF9jb21tYW5kLCBzZXNzaW9uLT5z Y3BTZW5kX2NvbW1hbmRfbGVuLAorICAgICAgICBzbnByaW50ZigoY2hhciAq KXNlc3Npb24tPnNjcFNlbmRfY29tbWFuZCwKKyAgICAgICAgICAgICAgICAg c2Vzc2lvbi0+c2NwU2VuZF9jb21tYW5kX2xlbiwKICAgICAgICAgICAgICAg ICAgInNjcCAtJXN0ICIsIChtdGltZSB8fCBhdGltZSk/InAiOiIiKTsKIAog ICAgICAgICBjbWRfbGVuID0gc3RybGVuKChjaGFyICopc2Vzc2lvbi0+c2Nw U2VuZF9jb21tYW5kKTsKKyAgICAgICAgY21kX2xlbiArPSBzaGVsbF9xdW90 ZWFyZyhwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZzZXNzaW9uLT5zY3BTZW5kX2NvbW1hbmRbY21kX2xlbl0sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2NwU2VuZF9j b21tYW5kX2xlbiAtIGNtZF9sZW4pOwogCi0gICAgICAgICh2b2lkKXNoZWxs X3F1b3RlYXJnKHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZzZXNzaW9uLT5zY3BTZW5kX2NvbW1hbmRbY21kX2xlbl0sCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnNjcFNlbmRfY29tbWFu ZF9sZW4gLSBjbWRfbGVuKTsKLQotICAgICAgICBzZXNzaW9uLT5zY3BTZW5k X2NvbW1hbmRbc2Vzc2lvbi0+c2NwU2VuZF9jb21tYW5kX2xlbiAtIDFdID0g J1wwJzsKKyAgICAgICAgc2Vzc2lvbi0+c2NwU2VuZF9jb21tYW5kW2NtZF9s ZW5dID0gJ1wwJzsKKyAgICAgICAgc2Vzc2lvbi0+c2NwU2VuZF9jb21tYW5k X2xlbiA9IGNtZF9sZW4gKyAxOwogCiAgICAgICAgIF9saWJzc2gyX2RlYnVn KHNlc3Npb24sIExJQlNTSDJfVFJBQ0VfU0NQLAogICAgICAgICAgICAgICAg ICAgICAgICAiT3BlbmluZyBjaGFubmVsIGZvciBTQ1Agc2VuZCIpOwpkaWZm IC0tZ2l0IGEvcGdhZG1pbi9saWJzc2gyL3Nlc3Npb24uYyBiL3BnYWRtaW4v bGlic3NoMi9zZXNzaW9uLmMKaW5kZXggOTgzOGQyYi4uMDZlNjFkZCAxMDA2 NDQKLS0tIGEvcGdhZG1pbi9saWJzc2gyL3Nlc3Npb24uYworKysgYi9wZ2Fk bWluL2xpYnNzaDIvc2Vzc2lvbi5jCkBAIC0xLDUgKzEsNSBAQAogLyogQ29w eXJpZ2h0IChjKSAyMDA0LTIwMDcgU2FyYSBHb2xlbW9uIDxzYXJhZ0BsaWJz c2gyLm9yZz4KLSAqIENvcHlyaWdodCAoYykgMjAwOS0yMDExIGJ5IERhbmll bCBTdGVuYmVyZworICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTUgYnkgRGFu aWVsIFN0ZW5iZXJnCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTAgU2ltb24gSm9z ZWZzc29uIDxzaW1vbkBqb3NlZnNzb24ub3JnPgogICogQWxsIHJpZ2h0cyBy ZXNlcnZlZC4KICAqCkBAIC02MDEsNyArNjAxLDcgQEAgaW50IF9saWJzc2gy X3dhaXRfc29ja2V0KExJQlNTSDJfU0VTU0lPTiAqc2Vzc2lvbiwgdGltZV90 IHN0YXJ0X3RpbWUpCiAgICAgICAgIChzZWNvbmRzX3RvX25leHQgPT0gMCB8 fAogICAgICAgICAgc2Vjb25kc190b19uZXh0ID4gc2Vzc2lvbi0+YXBpX3Rp bWVvdXQpKSB7CiAgICAgICAgIHRpbWVfdCBub3cgPSB0aW1lIChOVUxMKTsK LSAgICAgICAgZWxhcHNlZF9tcyA9IChsb25nKSgxMDAwKmRpZmZ0aW1lKHN0 YXJ0X3RpbWUsIG5vdykpOworICAgICAgICBlbGFwc2VkX21zID0gKGxvbmcp KDEwMDAqZGlmZnRpbWUobm93LCBzdGFydF90aW1lKSk7CiAgICAgICAgIGlm IChlbGFwc2VkX21zID4gc2Vzc2lvbi0+YXBpX3RpbWVvdXQpIHsKICAgICAg ICAgICAgIHNlc3Npb24tPmVycl9jb2RlID0gTElCU1NIMl9FUlJPUl9USU1F T1VUOwogICAgICAgICAgICAgcmV0dXJuIExJQlNTSDJfRVJST1JfVElNRU9V VDsKQEAgLTY4Niw4ICs2ODYsMTMgQEAgc2Vzc2lvbl9zdGFydHVwKExJQlNT SDJfU0VTU0lPTiAqc2Vzc2lvbiwgbGlic3NoMl9zb2NrZXRfdCBzb2NrKQog ICAgICAgICAgICAgIWdldF9zb2NrZXRfbm9uYmxvY2tpbmcoc2Vzc2lvbi0+ c29ja2V0X2ZkKTsKIAogICAgICAgICBpZiAoc2Vzc2lvbi0+c29ja2V0X3By ZXZfYmxvY2tzdGF0ZSkgewotICAgICAgICAgICAgLyogSWYgaW4gYmxvY2tp bmcgc3RhdGUgY2hhbmcgdG8gbm9uLWJsb2NraW5nICovCi0gICAgICAgICAg ICBzZXNzaW9uX25vbmJsb2NrKHNlc3Npb24tPnNvY2tldF9mZCwgMSk7Cisg ICAgICAgICAgICAvKiBJZiBpbiBibG9ja2luZyBzdGF0ZSBjaGFuZ2UgdG8g bm9uLWJsb2NraW5nICovCisgICAgICAgICAgICByYyA9IHNlc3Npb25fbm9u YmxvY2soc2Vzc2lvbi0+c29ja2V0X2ZkLCAxKTsKKyAgICAgICAgICAgIGlm IChyYykgeworICAgICAgICAgICAgICAgIHJldHVybiBfbGlic3NoMl9lcnJv cihzZXNzaW9uLCByYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIkZhaWxlZCBjaGFuZ2luZyBzb2NrZXQncyAiCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJibG9ja2luZyBzdGF0 ZSB0byBub24tYmxvY2tpbmciKTsKKyAgICAgICAgICAgIH0KICAgICAgICAg fQogCiAgICAgICAgIHNlc3Npb24tPnN0YXJ0dXBfc3RhdGUgPSBsaWJzc2gy X05CX3N0YXRlX2NyZWF0ZWQ7CkBAIC0xMDE2LDYgKzEwMjEsMTQgQEAgc2Vz c2lvbl9mcmVlKExJQlNTSDJfU0VTU0lPTiAqc2Vzc2lvbikKICAgICBpZiAo c2Vzc2lvbi0+c2NwU2VuZF9jb21tYW5kKSB7CiAgICAgICAgIExJQlNTSDJf RlJFRShzZXNzaW9uLCBzZXNzaW9uLT5zY3BTZW5kX2NvbW1hbmQpOwogICAg IH0KKyAgICBpZiAoc2Vzc2lvbi0+c2Z0cEluaXRfc2Z0cCkgeworICAgICAg ICBMSUJTU0gyX0ZSRUUoc2Vzc2lvbiwgc2Vzc2lvbi0+c2Z0cEluaXRfc2Z0 cCk7CisgICAgfQorCisgICAgLyogRnJlZSBwYXlsb2FkIGJ1ZmZlciAqLwor ICAgIGlmIChzZXNzaW9uLT5wYWNrZXQudG90YWxfbnVtKSB7CisgICAgICAg IExJQlNTSDJfRlJFRShzZXNzaW9uLCBzZXNzaW9uLT5wYWNrZXQucGF5bG9h ZCk7CisgICAgfQogCiAgICAgLyogQ2xlYW51cCBhbGwgcmVtYWluaW5nIHBh Y2tldHMgKi8KICAgICB3aGlsZSAoKHBrZyA9IF9saWJzc2gyX2xpc3RfZmly c3QoJnNlc3Npb24tPnBhY2tldHMpKSkgewpAQCAtMTAzMiwxNCArMTA0NSwy NCBAQCBzZXNzaW9uX2ZyZWUoTElCU1NIMl9TRVNTSU9OICpzZXNzaW9uKQog ICAgIF9saWJzc2gyX2RlYnVnKHNlc3Npb24sIExJQlNTSDJfVFJBQ0VfVFJB TlMsCiAgICAgICAgICAiRXh0cmEgcGFja2V0cyBsZWZ0ICVkIiwgcGFja2V0 c19sZWZ0KTsKIAotICAgIGlmKHNlc3Npb24tPnNvY2tldF9wcmV2X2Jsb2Nr c3RhdGUpCisgICAgaWYoc2Vzc2lvbi0+c29ja2V0X3ByZXZfYmxvY2tzdGF0 ZSkgewogICAgICAgICAvKiBpZiB0aGUgc29ja2V0IHdhcyBwcmV2aW91c2x5 IGJsb2NraW5nLCBwdXQgaXQgYmFjayBzbyAqLwotICAgICAgICBzZXNzaW9u X25vbmJsb2NrKHNlc3Npb24tPnNvY2tldF9mZCwgMCk7CisgICAgICAgIHJj ID0gc2Vzc2lvbl9ub25ibG9jayhzZXNzaW9uLT5zb2NrZXRfZmQsIDApOwor ICAgICAgICBpZiAocmMpIHsKKyAgICAgICAgICAgIF9saWJzc2gyX2RlYnVn KHNlc3Npb24sIExJQlNTSDJfVFJBQ0VfVFJBTlMsCisgICAgICAgICAgICAg InVuYWJsZSB0byByZXNldCBzb2NrZXQncyBibG9ja2luZyBzdGF0ZSIpOwor ICAgICAgICB9CisgICAgfQogCiAgICAgaWYgKHNlc3Npb24tPnNlcnZlcl9o b3N0a2V5KSB7CiAgICAgICAgIExJQlNTSDJfRlJFRShzZXNzaW9uLCBzZXNz aW9uLT5zZXJ2ZXJfaG9zdGtleSk7CiAgICAgfQogCisgICAgLyogZXJyb3Ig c3RyaW5nICovCisgICAgaWYgKHNlc3Npb24tPmVycl9tc2cgJiYgKChzZXNz aW9uLT5lcnJfZmxhZ3MgJiBMSUJTU0gyX0VSUl9GTEFHX0RVUCkgIT0gMCkp IHsKKyAgICAgICAgTElCU1NIMl9GUkVFKHNlc3Npb24sIChjaGFyICopc2Vz c2lvbi0+ZXJyX21zZyk7CisgICAgfQorCiAgICAgTElCU1NIMl9GUkVFKHNl c3Npb24sIHNlc3Npb24pOwogCiAgICAgcmV0dXJuIDA7CkBAIC0xMjY3LDcg KzEyOTAsMjQgQEAgbGlic3NoMl9zZXNzaW9uX2xhc3RfZXJybm8oTElCU1NI Ml9TRVNTSU9OICogc2Vzc2lvbikKICAgICByZXR1cm4gc2Vzc2lvbi0+ZXJy X2NvZGU7CiB9CiAKLS8qIGxpYnNzaDJfc2Vzc2lvbl9mbGFnCisvKiBsaWJz c2gyX3Nlc3Npb25fc2V0X2xhc3RfZXJyb3IKKyAqCisgKiBTZXRzIHRoZSBp bnRlcm5hbCBlcnJvciBjb2RlIGZvciB0aGUgc2Vzc2lvbi4KKyAqCisgKiBU aGlzIGZ1bmN0aW9uIGlzIGF2YWlsYWJsZSBzcGVjaWZpY2FsbHkgdG8gYmUg dXNlZCBieSBoaWdoIGxldmVsCisgKiBsYW5ndWFnZSB3cmFwcGVycyAoaS5l LiBQeXRob24gb3IgUGVybCkgdGhhdCBtYXkgZXh0ZW5kIHRoZSBsaWJyYXJ5 CisgKiBmZWF0dXJlcyB3aGlsZSBzdGlsbCByZWx5aW5nIG9uIGl0cyBlcnJv ciByZXBvcnRpbmcgbWVjaGFuaXNtLgorICovCitMSUJTU0gyX0FQSSBpbnQK K2xpYnNzaDJfc2Vzc2lvbl9zZXRfbGFzdF9lcnJvcihMSUJTU0gyX1NFU1NJ T04qIHNlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50IGVycmNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgY2hhciogZXJybXNnKQoreworICAgIHJldHVybiBfbGlic3NoMl9l cnJvcl9mbGFncyhzZXNzaW9uLCBlcnJjb2RlLCBlcnJtc2csCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIExJQlNTSDJfRVJSX0ZMQUdfRFVQ KTsKK30KKworLyogTGlic3NoMl9zZXNzaW9uX2ZsYWcKICAqCiAgKiBTZXQv R2V0IHNlc3Npb24gZmxhZ3MKICAqCkBAIC0xNTE0LDcgKzE1NTQsNyBAQCBs aWJzc2gyX3BvbGwoTElCU1NIMl9QT0xMRkQgKiBmZHMsIHVuc2lnbmVkIGlu dCBuZmRzLCBsb25nIHRpbWVvdXQpCiAgICAgfQogI2Vsc2UKICAgICAvKiBO byBzZWxlY3QoKSBvciBwb2xsKCkKLSAgICAgKiBubyBzb2NrZXRzIHN0dXJj dHVyZSB0byBzZXR1cAorICAgICAqIG5vIHNvY2tldHMgc3RydWN0dXJlIHRv IHNldHVwCiAgICAgICovCiAKICAgICB0aW1lb3V0ID0gMDsKZGlmZiAtLWdp dCBhL3BnYWRtaW4vbGlic3NoMi9zZnRwLmMgYi9wZ2FkbWluL2xpYnNzaDIv c2Z0cC5jCmluZGV4IGQwNTM2ZGQuLmIwYTNmMWQgMTAwNjQ0Ci0tLSBhL3Bn YWRtaW4vbGlic3NoMi9zZnRwLmMKKysrIGIvcGdhZG1pbi9saWJzc2gyL3Nm dHAuYwpAQCAtMSw2ICsxLDYgQEAKIC8qIENvcHlyaWdodCAoYykgMjAwNC0y MDA4LCBTYXJhIEdvbGVtb24gPHNhcmFnQGxpYnNzaDIub3JnPgogICogQ29w eXJpZ2h0IChjKSAyMDA3IEVsaSBGYW50IDxlbGlmYW50dUBtYWlsLnJ1Pgot ICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTIgYnkgRGFuaWVsIFN0ZW5iZXJn CisgKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxNCBieSBEYW5pZWwgU3RlbmJl cmcKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3JtcywKQEAg LTkzLDcgKzkzLDYgQEAKICAgIHNvbWUga2luZCBvZiBzZXJ2ZXIgcHJvYmxl bS4gKi8KICNkZWZpbmUgTElCU1NIMl9TRlRQX1BBQ0tFVF9NQVhMRU4gIDgw MDAwCiAKLXN0YXRpYyBpbnQgc2Z0cF9jbG9zZV9oYW5kbGUoTElCU1NIMl9T RlRQX0hBTkRMRSAqaGFuZGxlKTsKIHN0YXRpYyBpbnQgc2Z0cF9wYWNrZXRf YXNrKExJQlNTSDJfU0ZUUCAqc2Z0cCwgdW5zaWduZWQgY2hhciBwYWNrZXRf dHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHJl cXVlc3RfaWQsIHVuc2lnbmVkIGNoYXIgKipkYXRhLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2l6ZV90ICpkYXRhX2xlbik7CkBAIC0yMDUsNyAr MjA0LDggQEAgc2Z0cF9wYWNrZXRfYWRkKExJQlNTSDJfU0ZUUCAqc2Z0cCwg dW5zaWduZWQgY2hhciAqZGF0YSwKICAgICBMSUJTU0gyX1NGVFBfUEFDS0VU ICpwYWNrZXQ7CiAgICAgdWludDMyX3QgcmVxdWVzdF9pZDsKIAotICAgIF9s aWJzc2gyX2RlYnVnKHNlc3Npb24sIExJQlNTSDJfVFJBQ0VfU0ZUUCwgIlJl Y2VpdmVkIHBhY2tldCAlZCAobGVuICVkKSIsCisgICAgX2xpYnNzaDJfZGVi dWcoc2Vzc2lvbiwgTElCU1NIMl9UUkFDRV9TRlRQLAorICAgICAgICAgICAg ICAgICAgICJSZWNlaXZlZCBwYWNrZXQgdHlwZSAlZCAobGVuICVkKSIsCiAg ICAgICAgICAgICAgICAgICAgKGludCkgZGF0YVswXSwgZGF0YV9sZW4pOwog CiAgICAgLyoKQEAgLTI1MSw2ICsyNTEsOSBAQCBzZnRwX3BhY2tldF9hZGQo TElCU1NIMl9TRlRQICpzZnRwLCB1bnNpZ25lZCBjaGFyICpkYXRhLAogCiAg ICAgcmVxdWVzdF9pZCA9IF9saWJzc2gyX250b2h1MzIoJmRhdGFbMV0pOwog CisgICAgX2xpYnNzaDJfZGVidWcoc2Vzc2lvbiwgTElCU1NIMl9UUkFDRV9T RlRQLCAiUmVjZWl2ZWQgcGFja2V0IGlkICVkIiwKKyAgICAgICAgICAgICAg ICAgICByZXF1ZXN0X2lkKTsKKwogICAgIC8qIERvbid0IGFkZCB0aGUgcGFj a2V0IGlmIGl0IGFuc3dlcnMgYSByZXF1ZXN0IHdlJ3ZlIGdpdmVuIHVwIG9u LiAqLwogICAgIGlmKChkYXRhWzBdID09IFNTSF9GWFBfU1RBVFVTIHx8IGRh dGFbMF0gPT0gU1NIX0ZYUF9EQVRBKQogICAgICAgICAmJiBmaW5kX3pvbWJp ZV9yZXF1ZXN0KHNmdHAsIHJlcXVlc3RfaWQpKSB7CkBAIC01MzUsNyArNTM4 LDcgQEAgc2Z0cF9wYWNrZXRfcmVxdWlyZShMSUJTU0gyX1NGVFAgKnNmdHAs IHVuc2lnbmVkIGNoYXIgcGFja2V0X3R5cGUsCiB9CiAKIC8qIHNmdHBfcGFj a2V0X3JlcXVpcmV2Ci0gKiBSZXF1aXJlIG9uZSBvZiBOIHBvc3NpYmxlIHJl cG9uc2VzCisgKiBSZXF1aXJlIG9uZSBvZiBOIHBvc3NpYmxlIHJlc3BvbnNl cwogICovCiBzdGF0aWMgaW50CiBzZnRwX3BhY2tldF9yZXF1aXJldihMSUJT U0gyX1NGVFAgKnNmdHAsIGludCBudW1fdmFsaWRfcmVzcG9uc2VzLApAQCAt NzIxLDcgKzcyNCw3IEBAIHN0YXRpYyBMSUJTU0gyX1NGVFAgKnNmdHBfaW5p dChMSUJTU0gyX1NFU1NJT04gKnNlc3Npb24pCiAgICAgICAgICAqCiAgICAg ICAgICAqIE5vdGUgdGhhdCB5b3UgTVVTVCBOT1QgdHJ5IHRvIGNhbGwgbGli c3NoMl9zZnRwX2luaXQoKSBhZ2FpbiB0byBnZXQKICAgICAgICAgICogYW5v dGhlciBoYW5kbGUgdW50aWwgdGhlIHByZXZpb3VzIGNhbGwgaGFzIGZpbmlz aGVkIGFuZCBlaXRoZXIKLSAgICAgICAgICogc3VjY2VzZmZ1bGx5IG1hZGUg YSBoYW5kbGUgb3IgZmFpbGVkIGFuZCByZXR1cm5lZCBlcnJvciAobm90Cisg ICAgICAgICAqIHN1Y2Nlc3NmdWxseSBtYWRlIGEgaGFuZGxlIG9yIGZhaWxl ZCBhbmQgcmV0dXJuZWQgZXJyb3IgKG5vdAogICAgICAgICAgKiBpbmNsdWRp bmcgKkVBR0FJTikuCiAgICAgICAgICAqLwogCkBAIC03ODIsMTMgKzc4NSwx MiBAQCBzdGF0aWMgTElCU1NIMl9TRlRQICpzZnRwX2luaXQoTElCU1NIMl9T RVNTSU9OICpzZXNzaW9uKQogCiAgICAgICAgIHNmdHBfaGFuZGxlID0KICAg ICAgICAgICAgIHNlc3Npb24tPnNmdHBJbml0X3NmdHAgPQotICAgICAgICAg ICAgTElCU1NIMl9BTExPQyhzZXNzaW9uLCBzaXplb2YoTElCU1NIMl9TRlRQ KSk7CisgICAgICAgICAgICBMSUJTU0gyX0NBTExPQyhzZXNzaW9uLCBzaXpl b2YoTElCU1NIMl9TRlRQKSk7CiAgICAgICAgIGlmICghc2Z0cF9oYW5kbGUp IHsKICAgICAgICAgICAgIF9saWJzc2gyX2Vycm9yKHNlc3Npb24sIExJQlNT SDJfRVJST1JfQUxMT0MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAi VW5hYmxlIHRvIGFsbG9jYXRlIGEgbmV3IFNGVFAgc3RydWN0dXJlIik7CiAg ICAgICAgICAgICBnb3RvIHNmdHBfaW5pdF9lcnJvcjsKICAgICAgICAgfQot ICAgICAgICBtZW1zZXQoc2Z0cF9oYW5kbGUsIDAsIHNpemVvZihMSUJTU0gy X1NGVFApKTsKICAgICAgICAgc2Z0cF9oYW5kbGUtPmNoYW5uZWwgPSBzZXNz aW9uLT5zZnRwSW5pdF9jaGFubmVsOwogICAgICAgICBzZnRwX2hhbmRsZS0+ cmVxdWVzdF9pZCA9IDA7CiAKQEAgLTg0NCw2ICs4NDYsNyBAQCBzdGF0aWMg TElCU1NIMl9TRlRQICpzZnRwX2luaXQoTElCU1NIMl9TRVNTSU9OICpzZXNz aW9uKQogICAgIGlmIChkYXRhX2xlbiA8IDUpIHsKICAgICAgICAgX2xpYnNz aDJfZXJyb3Ioc2Vzc2lvbiwgTElCU1NIMl9FUlJPUl9TRlRQX1BST1RPQ09M LAogICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBTU0hfRlhQX1ZF UlNJT04gcmVzcG9uc2UiKTsKKyAgICAgICAgTElCU1NIMl9GUkVFKHNlc3Np b24sIGRhdGEpOwogICAgICAgICBnb3RvIHNmdHBfaW5pdF9lcnJvcjsKICAg ICB9CiAKQEAgLTg1Nyw3ICs4NjAsNyBAQCBzdGF0aWMgTElCU1NIMl9TRlRQ ICpzZnRwX2luaXQoTElCU1NIMl9TRVNTSU9OICpzZXNzaW9uKQogICAgICAg ICBzZnRwX2hhbmRsZS0+dmVyc2lvbiA9IExJQlNTSDJfU0ZUUF9WRVJTSU9O OwogICAgIH0KICAgICBfbGlic3NoMl9kZWJ1ZyhzZXNzaW9uLCBMSUJTU0gy X1RSQUNFX1NGVFAsCi0gICAgICAgICAgICAgICAgICAgIkVuYWJsaW5nIFNG VFAgdmVyc2lvbiAlbHUgY29tcGF0YWJpbGl0eSIsCisgICAgICAgICAgICAg ICAgICAgIkVuYWJsaW5nIFNGVFAgdmVyc2lvbiAlbHUgY29tcGF0aWJpbGl0 eSIsCiAgICAgICAgICAgICAgICAgICAgc2Z0cF9oYW5kbGUtPnZlcnNpb24p OwogICAgIHdoaWxlIChzIDwgKGRhdGEgKyBkYXRhX2xlbikpIHsKICAgICAg ICAgc2l6ZV90IGV4dG5hbWVfbGVuLCBleHRkYXRhX2xlbjsKQEAgLTkyOCw3 ICs5MzEsNyBAQCBMSUJTU0gyX0FQSSBMSUJTU0gyX1NGVFAgKmxpYnNzaDJf c2Z0cF9pbml0KExJQlNTSDJfU0VTU0lPTiAqc2Vzc2lvbikKIC8qCiAgKiBz ZnRwX3NodXRkb3duCiAgKgotICogU2h1dHNkb3duIHRoZSBTRlRQIHN1YnN5 c3RlbQorICogU2h1dHMgZG93biB0aGUgU0ZUUCBzdWJzeXN0ZW0KICAqLwog c3RhdGljIGludAogc2Z0cF9zaHV0ZG93bihMSUJTU0gyX1NGVFAgKnNmdHAp CkBAIC05ODYsNiArOTg5LDEwIEBAIHNmdHBfc2h1dGRvd24oTElCU1NIMl9T RlRQICpzZnRwKQogICAgICAgICBMSUJTU0gyX0ZSRUUoc2Vzc2lvbiwgc2Z0 cC0+c3ltbGlua19wYWNrZXQpOwogICAgICAgICBzZnRwLT5zeW1saW5rX3Bh Y2tldCA9IE5VTEw7CiAgICAgfQorICAgIGlmIChzZnRwLT5mc3luY19wYWNr ZXQpIHsKKyAgICAgICAgTElCU1NIMl9GUkVFKHNlc3Npb24sIHNmdHAtPmZz eW5jX3BhY2tldCk7CisgICAgICAgIHNmdHAtPmZzeW5jX3BhY2tldCA9IE5V TEw7CisgICAgfQogCiAgICAgc2Z0cF9wYWNrZXRfZmx1c2goc2Z0cCk7CiAK QEAgLTExNjksMTQgKzExNzYsMTMgQEAgc2Z0cF9vcGVuKExJQlNTSDJfU0ZU UCAqc2Z0cCwgY29uc3QgY2hhciAqZmlsZW5hbWUsCiAgICAgICAgICAgICBy ZXR1cm4gTlVMTDsKICAgICAgICAgfQogCi0gICAgICAgIGZwID0gTElCU1NI Ml9BTExPQyhzZXNzaW9uLCBzaXplb2YoTElCU1NIMl9TRlRQX0hBTkRMRSkp OworICAgICAgICBmcCA9IExJQlNTSDJfQ0FMTE9DKHNlc3Npb24sIHNpemVv ZihMSUJTU0gyX1NGVFBfSEFORExFKSk7CiAgICAgICAgIGlmICghZnApIHsK ICAgICAgICAgICAgIF9saWJzc2gyX2Vycm9yKHNlc3Npb24sIExJQlNTSDJf RVJST1JfQUxMT0MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5h YmxlIHRvIGFsbG9jYXRlIG5ldyBTRlRQIGhhbmRsZSBzdHJ1Y3R1cmUiKTsK ICAgICAgICAgICAgIExJQlNTSDJfRlJFRShzZXNzaW9uLCBkYXRhKTsKICAg ICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIG1l bXNldChmcCwgMCwgc2l6ZW9mKExJQlNTSDJfU0ZUUF9IQU5ETEUpKTsKICAg ICAgICAgZnAtPmhhbmRsZV90eXBlID0gb3Blbl9maWxlID8gTElCU1NIMl9T RlRQX0hBTkRMRV9GSUxFIDoKICAgICAgICAgICAgIExJQlNTSDJfU0ZUUF9I QU5ETEVfRElSOwogCkBAIC0xMjQzLDYgKzEyNDksOCBAQCBzdGF0aWMgc3Np emVfdCBzZnRwX3JlYWQoTElCU1NIMl9TRlRQX0hBTkRMRSAqIGhhbmRsZSwg Y2hhciAqYnVmZmVyLAogICAgIHNzaXplX3QgcmM7CiAgICAgc3RydWN0IF9s aWJzc2gyX3NmdHBfaGFuZGxlX2ZpbGVfZGF0YSAqZmlsZXAgPQogICAgICAg ICAmaGFuZGxlLT51LmZpbGU7CisgICAgc2l6ZV90IGJ5dGVzX2luX2J1ZmZl ciA9IDA7CisgICAgY2hhciAqc2xpZGluZ19idWZmZXJwID0gYnVmZmVyOwog CiAgICAgLyogVGhpcyBmdW5jdGlvbiBjYW4gYmUgaW50ZXJydXB0ZWQgaW4g dGhyZWUgZGlmZmVyZW50IHBsYWNlcyB3aGVyZSBpdAogICAgICAgIG1pZ2h0 IG5lZWQgdG8gd2FpdCBmb3IgZGF0YSBmcm9tIHRoZSBuZXR3b3JrLiAgSXQg cmV0dXJucyBFQUdBSU4gdG8KQEAgLTEzMDMsNyArMTMxMSw3IEBAIHN0YXRp YyBzc2l6ZV90IHNmdHBfcmVhZChMSUJTU0gyX1NGVFBfSEFORExFICogaGFu ZGxlLCBjaGFyICpidWZmZXIsCiAgICAgICAgICAgIHdpdGhvdXQgaGF2aW5n IGJlZW4gYWNrZWQgLSB1bnRpbCB3ZSByZWFjaCBFT0YuICovCiAgICAgICAg IGlmKCFmaWxlcC0+ZW9mKSB7CiAgICAgICAgICAgICAvKiBOdW1iZXIgb2Yg Ynl0ZXMgYXNrZWQgZm9yIHRoYXQgaGF2ZW4ndCBiZWVuIGFja2VkIHlldCAq LwotICAgICAgICAgICAgc2l6ZV90IGFscmVhZHkgPSAoZmlsZXAtPm9mZnNl dF9zZW50IC0gZmlsZXAtPm9mZnNldCk7CisgICAgICAgICAgICBzaXplX3Qg YWxyZWFkeSA9IChzaXplX3QpKGZpbGVwLT5vZmZzZXRfc2VudCAtIGZpbGVw LT5vZmZzZXQpOwogCiAgICAgICAgICAgICBzaXplX3QgbWF4X3JlYWRfYWhl YWQgPSBidWZmZXJfc2l6ZSo0OwogICAgICAgICAgICAgdW5zaWduZWQgbG9u ZyByZWN2X3dpbmRvdzsKQEAgLTEzODksNiArMTM5Nyw3IEBAIHN0YXRpYyBz c2l6ZV90IHNmdHBfcmVhZChMSUJTU0gyX1NGVFBfSEFORExFICogaGFuZGxl LCBjaGFyICpidWZmZXIsCiAgICAgICAgICAgICBfbGlic3NoMl9saXN0X2Fk ZCgmaGFuZGxlLT5wYWNrZXRfbGlzdCwgJmNodW5rLT5ub2RlKTsKICAgICAg ICAgICAgIGNvdW50IC09IHNpemU7IC8qIGRlZHVjdCB0aGUgc2l6ZSB3ZSB1 c2VkLCBhcyB3ZSBtaWdodCBoYXZlCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0byBjcmVhdGUgbW9yZSBwYWNrZXRzICovCisgICAgICAgICAg ICBfbGlic3NoMl9kZWJ1ZyhzZXNzaW9uLCBMSUJTU0gyX1RSQUNFX1NGVFAs ICJyZWFkIHJlcXVlc3QgaWQgJWQgc2VudCIsIHJlcXVlc3RfaWQpOwogICAg ICAgICB9CiAKICAgICBjYXNlIGxpYnNzaDJfTkJfc3RhdGVfc2VudDoKQEAg LTE0NzMsNyArMTQ4Miw3IEBAIHN0YXRpYyBzc2l6ZV90IHNmdHBfcmVhZChM SUJTU0gyX1NGVFBfSEFORExFICogaGFuZGxlLCBjaGFyICpidWZmZXIsCiAK ICAgICAgICAgICAgICAgICBpZiAocmMzMiA9PSBMSUJTU0gyX0ZYX0VPRikg ewogICAgICAgICAgICAgICAgICAgICBmaWxlcC0+ZW9mID0gVFJVRTsKLSAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAg ICAgIHJldHVybiBieXRlc19pbl9idWZmZXI7CiAgICAgICAgICAgICAgICAg fQogICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAg ICBzZnRwLT5sYXN0X2Vycm5vID0gcmMzMjsKQEAgLTE1MDMsMTMgKzE1MTIs MTMgQEAgc3RhdGljIHNzaXplX3Qgc2Z0cF9yZWFkKExJQlNTSDJfU0ZUUF9I QU5ETEUgKiBoYW5kbGUsIGNoYXIgKmJ1ZmZlciwKICAgICAgICAgICAgICAg ICAgICAgZmlsZXAtPm9mZnNldF9zZW50IC09IChjaHVuay0+bGVuIC0gcmMz Mik7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYo cmMzMiA+IGJ1ZmZlcl9zaXplKSB7CisgICAgICAgICAgICAgICAgaWYoKGJ5 dGVzX2luX2J1ZmZlciArIHJjMzIpID4gYnVmZmVyX3NpemUpIHsKICAgICAg ICAgICAgICAgICAgICAgLyogZmlndXJlIG91dCB0aGUgb3ZlcmxhcCBhbW91 bnQgKi8KLSAgICAgICAgICAgICAgICAgICAgZmlsZXAtPmRhdGFfbGVmdCA9 IHJjMzIgLSBidWZmZXJfc2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgZmls ZXAtPmRhdGFfbGVmdCA9IChieXRlc19pbl9idWZmZXIgKyByYzMyKSAtIGJ1 ZmZlcl9zaXplOwogCiAgICAgICAgICAgICAgICAgICAgIC8qIGdldHRpbmcg dGhlIGZ1bGwgcGFja2V0IHdvdWxkIG92ZXJmbG93IHRoZSBidWZmZXIsIHNv CiAgICAgICAgICAgICAgICAgICAgICAgIG9ubHkgZ2V0IHRoZSBjb3JyZWN0 IGFtb3VudCBhbmQga2VlcCB0aGUgcmVtYWluZGVyICovCi0gICAgICAgICAg ICAgICAgICAgIHJjMzIgPSAodWludDMyX3QpYnVmZmVyX3NpemU7CisgICAg ICAgICAgICAgICAgICAgIHJjMzIgPSAodWludDMyX3QpYnVmZmVyX3NpemUg LSBieXRlc19pbl9idWZmZXI7CiAKICAgICAgICAgICAgICAgICAgICAgLyog c3RvcmUgZGF0YSB0byBrZWVwIGZvciBuZXh0IGNhbGwgKi8KICAgICAgICAg ICAgICAgICAgICAgZmlsZXAtPmRhdGEgPSBkYXRhOwpAQCAtMTUyMCw3ICsx NTI5LDcgQEAgc3RhdGljIHNzaXplX3Qgc2Z0cF9yZWFkKExJQlNTSDJfU0ZU UF9IQU5ETEUgKiBoYW5kbGUsIGNoYXIgKmJ1ZmZlciwKIAogICAgICAgICAg ICAgICAgIC8qIGNvcHkgdGhlIHJlY2VpdmVkIGRhdGEgZnJvbSB0aGUgcmVj ZWl2ZWQgRlhQX0RBVEEgcGFja2V0IHRvCiAgICAgICAgICAgICAgICAgICAg dGhlIGJ1ZmZlciBhdCB0aGUgY29ycmVjdCBpbmRleCAqLwotICAgICAgICAg ICAgICAgIG1lbWNweShidWZmZXIsIGRhdGEgKyA5LCByYzMyKTsKKyAgICAg ICAgICAgICAgICBtZW1jcHkoc2xpZGluZ19idWZmZXJwLCBkYXRhICsgOSwg cmMzMik7CiAgICAgICAgICAgICAgICAgZmlsZXAtPm9mZnNldCArPSByYzMy OwogCiAgICAgICAgICAgICAgICAgaWYoZmlsZXAtPmRhdGFfbGVuID09IDAp CkBAIC0xNTM2LDggKzE1NDUsMTAgQEAgc3RhdGljIHNzaXplX3Qgc2Z0cF9y ZWFkKExJQlNTSDJfU0ZUUF9IQU5ETEUgKiBoYW5kbGUsIGNoYXIgKmJ1ZmZl ciwKICAgICAgICAgICAgICAgICBjaHVuayA9IE5VTEw7CiAKICAgICAgICAg ICAgICAgICBpZihyYzMyID4gMCkgewotICAgICAgICAgICAgICAgICAgICAv KiB3ZSBtdXN0IHJldHVybiBhcyB3ZSB3cm90ZSBzb21lIGRhdGEgdG8gdGhl IGJ1ZmZlciAqLwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmMzMjsK KyAgICAgICAgICAgICAgICAgICAgLyogY29udGludWUgdG8gdGhlIG5leHQg Y2h1bmsgKi8KKyAgICAgICAgICAgICAgICAgICAgYnl0ZXNfaW5fYnVmZmVy ICs9IHJjMzI7CisgICAgICAgICAgICAgICAgICAgIHNsaWRpbmdfYnVmZmVy cCArPSByYzMyOworICAgICAgICAgICAgICAgICAgICBjaHVuayA9IG5leHQ7 CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAg ICAgLyogQSB6ZXJvLWJ5dGUgcmVhZCBpcyBub3QgbmVjZXNzYXJpbHkgRU9G IHNvIHdlIG11c3Qgbm90CiAgICAgICAgICAgICAgICAgICAgICAqIHJldHVy biAwICh0aGF0IHdvdWxkIHNpZ25hbCBFT0YgdG8gdGhlIGNhbGxlcikgc28K QEAgLTE1NTMsNiArMTU2NCw5IEBAIHN0YXRpYyBzc2l6ZV90IHNmdHBfcmVh ZChMSUJTU0gyX1NGVFBfSEFORExFICogaGFuZGxlLCBjaGFyICpidWZmZXIs CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoYnl0 ZXNfaW5fYnVmZmVyID4gMCkKKyAgICAgICAgICAgIHJldHVybiBieXRlc19p bl9idWZmZXI7CisKICAgICAgICAgYnJlYWs7CiAKICAgICBkZWZhdWx0OgpA QCAtMTYxNiw3ICsxNjMwLDcgQEAgc3RhdGljIHNzaXplX3Qgc2Z0cF9yZWFk ZGlyKExJQlNTSDJfU0ZUUF9IQU5ETEUgKmhhbmRsZSwgY2hhciAqYnVmZmVy LAogCiAgICAgICAgICAgICBmaWxlbmFtZV9sZW4gPSByZWFsX2ZpbGVuYW1l X2xlbjsKICAgICAgICAgICAgIGlmIChmaWxlbmFtZV9sZW4gPj0gYnVmZmVy X21heGxlbikgewotICAgICAgICAgICAgICAgIGZpbGVuYW1lX2xlbiA9IExJ QlNTSDJfRVJST1JfQlVGRkVSX1RPT19TTUFMTDsKKyAgICAgICAgICAgICAg ICBmaWxlbmFtZV9sZW4gPSAoc2l6ZV90KUxJQlNTSDJfRVJST1JfQlVGRkVS X1RPT19TTUFMTDsKICAgICAgICAgICAgICAgICBnb3RvIGVuZDsKICAgICAg ICAgICAgIH0KIApAQCAtMTYzMSw3ICsxNjQ1LDcgQEAgc3RhdGljIHNzaXpl X3Qgc2Z0cF9yZWFkZGlyKExJQlNTSDJfU0ZUUF9IQU5ETEUgKmhhbmRsZSwg Y2hhciAqYnVmZmVyLAogICAgICAgICAgICAgICAgIGxvbmdlbnRyeV9sZW4g PSByZWFsX2xvbmdlbnRyeV9sZW47CiAKICAgICAgICAgICAgICAgICBpZiAo bG9uZ2VudHJ5X2xlbiA+PSBsb25nZW50cnlfbWF4bGVuKSB7Ci0gICAgICAg ICAgICAgICAgICAgIGZpbGVuYW1lX2xlbiA9IExJQlNTSDJfRVJST1JfQlVG RkVSX1RPT19TTUFMTDsKKyAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWVf bGVuID0gKHNpemVfdClMSUJTU0gyX0VSUk9SX0JVRkZFUl9UT09fU01BTEw7 CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZW5kOwogICAgICAgICAgICAg ICAgIH0KIApAQCAtMTgyNSw3ICsxODM5LDcgQEAgc3RhdGljIHNzaXplX3Qg c2Z0cF93cml0ZShMSUJTU0gyX1NGVFBfSEFORExFICpoYW5kbGUsIGNvbnN0 IGNoYXIgKmJ1ZmZlciwKICAgICAgICAgICAgYWNrZWQgYnV0IHdlIGhhdmVu J3QgYmVlbiBhYmxlIHRvIHJldHVybiBhcyBzdWNoIHlldCwgc28gd2Ugd2ls bAogICAgICAgICAgICBnZXQgdGhhdCBkYXRhIGFzIHdlbGwgcGFzc2VkIGlu IGhlcmUgYWdhaW4uCiAgICAgICAgICovCi0gICAgICAgIGFscmVhZHkgPSAo aGFuZGxlLT51LmZpbGUub2Zmc2V0X3NlbnQgLSBoYW5kbGUtPnUuZmlsZS5v ZmZzZXQpKworICAgICAgICBhbHJlYWR5ID0gKHNpemVfdCkgKGhhbmRsZS0+ dS5maWxlLm9mZnNldF9zZW50IC0gaGFuZGxlLT51LmZpbGUub2Zmc2V0KSsK ICAgICAgICAgICAgIGhhbmRsZS0+dS5maWxlLmFja2VkOwogCiAgICAgICAg IGlmKGNvdW50ID49IGFscmVhZHkpIHsKQEAgLTE5NTUsNyArMTk2OSw3IEBA IHN0YXRpYyBzc2l6ZV90IHNmdHBfd3JpdGUoTElCU1NIMl9TRlRQX0hBTkRM RSAqaGFuZGxlLCBjb25zdCBjaGFyICpidWZmZXIsCiAgICAgICAgICAgICAg ICAgLyogZmx1c2ggYWxsIHBlbmRpbmcgcGFja2V0cyBmcm9tIHRoZSBvdXRn b2luZyBsaXN0ICovCiAgICAgICAgICAgICAgICAgc2Z0cF9wYWNrZXRsaXN0 X2ZsdXNoKGhhbmRsZSk7CiAKLSAgICAgICAgICAgICAgICAvKiBzaW5jZSB3 ZSByZXR1cm4gZXJyb3Igbm93LCB0aGUgYXBwbGljYXRvbiB3aWxsIG5vdCBn ZXQgYW55CisgICAgICAgICAgICAgICAgLyogc2luY2Ugd2UgcmV0dXJuIGVy cm9yIG5vdywgdGhlIGFwcGxpY2F0aW9uIHdpbGwgbm90IGdldCBhbnkKICAg ICAgICAgICAgICAgICAgICBvdXRzdGFuZGluZyBkYXRhIGFja2VkLCBzbyB3 ZSBuZWVkIHRvIHJld2luZCB0aGUgb2Zmc2V0IHRvCiAgICAgICAgICAgICAg ICAgICAgd2hlcmUgdGhlIGFwcGxpY2F0aW9uIGtub3dzIGl0IGhhcyByZWFj aGVkIHdpdGggYWNrZWQgZGF0YSAqLwogICAgICAgICAgICAgICAgIGhhbmRs ZS0+dS5maWxlLm9mZnNldCAtPSBoYW5kbGUtPnUuZmlsZS5hY2tlZDsKQEAg LTIwMTQsNiArMjAyOCw5OSBAQCBsaWJzc2gyX3NmdHBfd3JpdGUoTElCU1NI Ml9TRlRQX0hBTkRMRSAqaG5kLCBjb25zdCBjaGFyICpidWZmZXIsCiAKIH0K IAorc3RhdGljIGludCBzZnRwX2ZzeW5jKExJQlNTSDJfU0ZUUF9IQU5ETEUg KmhhbmRsZSkKK3sKKyAgICBMSUJTU0gyX1NGVFAgKnNmdHAgPSBoYW5kbGUt PnNmdHA7CisgICAgTElCU1NIMl9DSEFOTkVMICpjaGFubmVsID0gc2Z0cC0+ Y2hhbm5lbDsKKyAgICBMSUJTU0gyX1NFU1NJT04gKnNlc3Npb24gPSBjaGFu bmVsLT5zZXNzaW9uOworICAgIC8qIDM0ID0gcGFja2V0X2xlbig0KSArIHBh Y2tldF90eXBlKDEpICsgcmVxdWVzdF9pZCg0KSArCisgICAgICAgc3RyaW5n X2xlbig0KSArIHN0cmxlbigiZnN5bmNAb3BlbnNzaC5jb20iKSgxNykgKyBo YW5kbGVfbGVuKDQpICovCisgICAgdWludDMyX3QgcGFja2V0X2xlbiA9IGhh bmRsZS0+aGFuZGxlX2xlbiArIDM0OworICAgIHNpemVfdCBkYXRhX2xlbjsK KyAgICB1bnNpZ25lZCBjaGFyICpwYWNrZXQsICpzLCAqZGF0YTsKKyAgICBz c2l6ZV90IHJjOworICAgIHVpbnQzMl90IHJldGNvZGU7CisKKyAgICBpZiAo c2Z0cC0+ZnN5bmNfc3RhdGUgPT0gbGlic3NoMl9OQl9zdGF0ZV9pZGxlKSB7 CisgICAgICAgIF9saWJzc2gyX2RlYnVnKHNlc3Npb24sIExJQlNTSDJfVFJB Q0VfU0ZUUCwKKyAgICAgICAgICAgICAgICAgICAgICAgIklzc3VpbmcgZnN5 bmMgY29tbWFuZCIpOworICAgICAgICBzID0gcGFja2V0ID0gTElCU1NIMl9B TExPQyhzZXNzaW9uLCBwYWNrZXRfbGVuKTsKKyAgICAgICAgaWYgKCFwYWNr ZXQpIHsKKyAgICAgICAgICAgIHJldHVybiBfbGlic3NoMl9lcnJvcihzZXNz aW9uLCBMSUJTU0gyX0VSUk9SX0FMTE9DLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJVbmFibGUgdG8gYWxsb2NhdGUgbWVtb3J5IGZv ciBGWFBfRVhURU5ERUQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJwYWNrZXQiKTsKKyAgICAgICAgfQorCisgICAgICAgIF9saWJz c2gyX3N0b3JlX3UzMigmcywgcGFja2V0X2xlbiAtIDQpOworICAgICAgICAq KHMrKykgPSBTU0hfRlhQX0VYVEVOREVEOworICAgICAgICBzZnRwLT5mc3lu Y19yZXF1ZXN0X2lkID0gc2Z0cC0+cmVxdWVzdF9pZCsrOworICAgICAgICBf bGlic3NoMl9zdG9yZV91MzIoJnMsIHNmdHAtPmZzeW5jX3JlcXVlc3RfaWQp OworICAgICAgICBfbGlic3NoMl9zdG9yZV9zdHIoJnMsICJmc3luY0BvcGVu c3NoLmNvbSIsIDE3KTsKKyAgICAgICAgX2xpYnNzaDJfc3RvcmVfc3RyKCZz LCBoYW5kbGUtPmhhbmRsZSwgaGFuZGxlLT5oYW5kbGVfbGVuKTsKKworICAg ICAgICBzZnRwLT5mc3luY19zdGF0ZSA9IGxpYnNzaDJfTkJfc3RhdGVfY3Jl YXRlZDsKKyAgICB9IGVsc2UgeworICAgICAgICBwYWNrZXQgPSBzZnRwLT5m c3luY19wYWNrZXQ7CisgICAgfQorCisgICAgaWYgKHNmdHAtPmZzeW5jX3N0 YXRlID09IGxpYnNzaDJfTkJfc3RhdGVfY3JlYXRlZCkgeworICAgICAgICBy YyA9IF9saWJzc2gyX2NoYW5uZWxfd3JpdGUoY2hhbm5lbCwgMCwgcGFja2V0 LCBwYWNrZXRfbGVuKTsKKyAgICAgICAgaWYgKHJjID09IExJQlNTSDJfRVJS T1JfRUFHQUlOIHx8CisgICAgICAgICAgICAoMCA8PSByYyAmJiByYyA8IChz c2l6ZV90KXBhY2tldF9sZW4pKSB7CisgICAgICAgICAgICBzZnRwLT5mc3lu Y19wYWNrZXQgPSBwYWNrZXQ7CisgICAgICAgICAgICByZXR1cm4gTElCU1NI Ml9FUlJPUl9FQUdBSU47CisgICAgICAgIH0KKworICAgICAgICBMSUJTU0gy X0ZSRUUoc2Vzc2lvbiwgcGFja2V0KTsKKyAgICAgICAgc2Z0cC0+ZnN5bmNf cGFja2V0ID0gTlVMTDsKKworICAgICAgICBpZiAocmMgPCAwKSB7CisgICAg ICAgICAgICBzZnRwLT5mc3luY19zdGF0ZSA9IGxpYnNzaDJfTkJfc3RhdGVf aWRsZTsKKyAgICAgICAgICAgIHJldHVybiBfbGlic3NoMl9lcnJvcihzZXNz aW9uLCBMSUJTU0gyX0VSUk9SX1NPQ0tFVF9TRU5ELAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJfbGlic3NoMl9jaGFubmVsX3dyaXRl KCkgZmFpbGVkIik7CisgICAgICAgIH0KKyAgICAgICAgc2Z0cC0+ZnN5bmNf c3RhdGUgPSBsaWJzc2gyX05CX3N0YXRlX3NlbnQ7CisgICAgfQorCisgICAg cmMgPSBzZnRwX3BhY2tldF9yZXF1aXJlKHNmdHAsIFNTSF9GWFBfU1RBVFVT LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZnRwLT5mc3luY19y ZXF1ZXN0X2lkLCAmZGF0YSwgJmRhdGFfbGVuKTsKKyAgICBpZiAocmMgPT0g TElCU1NIMl9FUlJPUl9FQUdBSU4pIHsKKyAgICAgICAgcmV0dXJuIHJjOwor ICAgIH0gZWxzZSBpZiAocmMpIHsKKyAgICAgICAgc2Z0cC0+ZnN5bmNfc3Rh dGUgPSBsaWJzc2gyX05CX3N0YXRlX2lkbGU7CisgICAgICAgIHJldHVybiBf bGlic3NoMl9lcnJvcihzZXNzaW9uLCByYywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJFcnJvciB3YWl0aW5nIGZvciBGWFAgRVhURU5ERUQg UkVQTFkiKTsKKyAgICB9CisKKyAgICBzZnRwLT5mc3luY19zdGF0ZSA9IGxp YnNzaDJfTkJfc3RhdGVfaWRsZTsKKworICAgIHJldGNvZGUgPSBfbGlic3No Ml9udG9odTMyKGRhdGEgKyA1KTsKKyAgICBMSUJTU0gyX0ZSRUUoc2Vzc2lv biwgZGF0YSk7CisKKyAgICBpZiAocmV0Y29kZSAhPSBMSUJTU0gyX0ZYX09L KSB7CisgICAgICAgIHNmdHAtPmxhc3RfZXJybm8gPSByZXRjb2RlOworICAg ICAgICByZXR1cm4gX2xpYnNzaDJfZXJyb3Ioc2Vzc2lvbiwgTElCU1NIMl9F UlJPUl9TRlRQX1BST1RPQ09MLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgImZzeW5jIGZhaWxlZCIpOworICAgIH0KKworICAgIHJldHVybiAw OworfQorCisvKiBsaWJzc2gyX3NmdHBfZnN5bmMKKyAqIENvbW1pdCBkYXRh IG9uIHRoZSBoYW5kbGUgdG8gZGlzay4KKyAqLworTElCU1NIMl9BUEkgaW50 CitsaWJzc2gyX3NmdHBfZnN5bmMoTElCU1NIMl9TRlRQX0hBTkRMRSAqaG5k KQoreworICAgIGludCByYzsKKyAgICBpZighaG5kKQorICAgICAgICByZXR1 cm4gTElCU1NIMl9FUlJPUl9CQURfVVNFOworICAgIEJMT0NLX0FESlVTVChy YywgaG5kLT5zZnRwLT5jaGFubmVsLT5zZXNzaW9uLAorICAgICAgICAgICAg ICAgICBzZnRwX2ZzeW5jKGhuZCkpOworICAgIHJldHVybiByYzsKK30KKwor CiAvKgogICogc2Z0cF9mc3RhdAogICoKQEAgLTIxMzIsMjEgKzIyMzksMjQg QEAgbGlic3NoMl9zZnRwX2ZzdGF0X2V4KExJQlNTSDJfU0ZUUF9IQU5ETEUg KmhuZCwKIExJQlNTSDJfQVBJIHZvaWQKIGxpYnNzaDJfc2Z0cF9zZWVrNjQo TElCU1NIMl9TRlRQX0hBTkRMRSAqaGFuZGxlLCBsaWJzc2gyX3VpbnQ2NF90 IG9mZnNldCkKIHsKLSAgICBpZihoYW5kbGUpIHsKLSAgICAgICAgaGFuZGxl LT51LmZpbGUub2Zmc2V0ID0gaGFuZGxlLT51LmZpbGUub2Zmc2V0X3NlbnQg PSBvZmZzZXQ7Ci0gICAgICAgIC8qIGRpc2NhcmQgYWxsIHBlbmRpbmcgcmVx dWVzdHMgYW5kIGN1cnJlbnRseSByZWFkIGRhdGEgKi8KLSAgICAgICAgc2Z0 cF9wYWNrZXRsaXN0X2ZsdXNoKGhhbmRsZSk7CisgICAgaWYoIWhhbmRsZSkK KyAgICAgICAgcmV0dXJuOworICAgIGlmKGhhbmRsZS0+dS5maWxlLm9mZnNl dCA9PSBvZmZzZXQgJiYgaGFuZGxlLT51LmZpbGUub2Zmc2V0X3NlbnQgPT0g b2Zmc2V0KQorICAgICAgICByZXR1cm47CiAKLSAgICAgICAgLyogZnJlZSB0 aGUgbGVmdCByZWNlaXZlZCBidWZmZXJlZCBkYXRhICovCi0gICAgICAgIGlm IChoYW5kbGUtPnUuZmlsZS5kYXRhX2xlZnQpIHsKLSAgICAgICAgICAgIExJ QlNTSDJfRlJFRShoYW5kbGUtPnNmdHAtPmNoYW5uZWwtPnNlc3Npb24sIGhh bmRsZS0+dS5maWxlLmRhdGEpOwotICAgICAgICAgICAgaGFuZGxlLT51LmZp bGUuZGF0YV9sZWZ0ID0gaGFuZGxlLT51LmZpbGUuZGF0YV9sZW4gPSAwOwot ICAgICAgICAgICAgaGFuZGxlLT51LmZpbGUuZGF0YSA9IE5VTEw7Ci0gICAg ICAgIH0KKyAgICBoYW5kbGUtPnUuZmlsZS5vZmZzZXQgPSBoYW5kbGUtPnUu ZmlsZS5vZmZzZXRfc2VudCA9IG9mZnNldDsKKyAgICAvKiBkaXNjYXJkIGFs bCBwZW5kaW5nIHJlcXVlc3RzIGFuZCBjdXJyZW50bHkgcmVhZCBkYXRhICov CisgICAgc2Z0cF9wYWNrZXRsaXN0X2ZsdXNoKGhhbmRsZSk7CiAKLSAgICAg ICAgLyogcmVzZXQgRU9GIHRvIEZhbHNlICovCi0gICAgICAgIGhhbmRsZS0+ dS5maWxlLmVvZiA9IEZBTFNFOworICAgIC8qIGZyZWUgdGhlIGxlZnQgcmVj ZWl2ZWQgYnVmZmVyZWQgZGF0YSAqLworICAgIGlmIChoYW5kbGUtPnUuZmls ZS5kYXRhX2xlZnQpIHsKKyAgICAgICAgTElCU1NIMl9GUkVFKGhhbmRsZS0+ c2Z0cC0+Y2hhbm5lbC0+c2Vzc2lvbiwgaGFuZGxlLT51LmZpbGUuZGF0YSk7 CisgICAgICAgIGhhbmRsZS0+dS5maWxlLmRhdGFfbGVmdCA9IGhhbmRsZS0+ dS5maWxlLmRhdGFfbGVuID0gMDsKKyAgICAgICAgaGFuZGxlLT51LmZpbGUu ZGF0YSA9IE5VTEw7CiAgICAgfQorCisgICAgLyogcmVzZXQgRU9GIHRvIEZh bHNlICovCisgICAgaGFuZGxlLT51LmZpbGUuZW9mID0gRkFMU0U7CiB9CiAK IC8qIGxpYnNzaDJfc2Z0cF9zZWVrCkBAIC0yMjIyLDggKzIzMzIsMTEgQEAg c3RhdGljIHZvaWQgc2Z0cF9wYWNrZXRfZmx1c2goTElCU1NIMl9TRlRQICpz ZnRwKQogCiAvKiBzZnRwX2Nsb3NlX2hhbmRsZQogICoKLSAqIENsb3NlIGEg ZmlsZSBvciBkaXJlY3RvcnkgaGFuZGxlCi0gKiBBbHNvIGZyZWVzIGhhbmRs ZSByZXNvdXJjZSBhbmQgdW5saW5rcyBpdCBmcm9tIHRoZSBTRlRQIHN0cnVj dHVyZQorICogQ2xvc2UgYSBmaWxlIG9yIGRpcmVjdG9yeSBoYW5kbGUuCisg KiBBbHNvIGZyZWVzIGhhbmRsZSByZXNvdXJjZSBhbmQgdW5saW5rcyBpdCBm cm9tIHRoZSBTRlRQIHN0cnVjdHVyZS4KKyAqIFRoZSBoYW5kbGUgaXMgbm8g bG9uZ2VyIHVzYWJsZSBhZnRlciByZXR1cm4gb2YgdGhpcyBmdW5jdGlvbiwg dW5sZXNzCisgKiB0aGUgcmV0dXJuIHZhbHVlIGlzIExJQlNTSDJfRVJST1Jf RUFHQUlOIGluIHdoaWNoIGNhc2UgdGhpcyBmdW5jdGlvbgorICogc2hvdWxk IGJlIGNhbGxlZCBhZ2Fpbi4KICAqLwogc3RhdGljIGludAogc2Z0cF9jbG9z ZV9oYW5kbGUoTElCU1NIMl9TRlRQX0hBTkRMRSAqaGFuZGxlKQpAQCAtMjIz MiwyNyArMjM0NSwyOCBAQCBzZnRwX2Nsb3NlX2hhbmRsZShMSUJTU0gyX1NG VFBfSEFORExFICpoYW5kbGUpCiAgICAgTElCU1NIMl9DSEFOTkVMICpjaGFu bmVsID0gc2Z0cC0+Y2hhbm5lbDsKICAgICBMSUJTU0gyX1NFU1NJT04gKnNl c3Npb24gPSBjaGFubmVsLT5zZXNzaW9uOwogICAgIHNpemVfdCBkYXRhX2xl bjsKLSAgICBpbnQgcmV0Y29kZTsKICAgICAvKiAxMyA9IHBhY2tldF9sZW4o NCkgKyBwYWNrZXRfdHlwZSgxKSArIHJlcXVlc3RfaWQoNCkgKyBoYW5kbGVf bGVuKDQpICovCiAgICAgdWludDMyX3QgcGFja2V0X2xlbiA9IGhhbmRsZS0+ aGFuZGxlX2xlbiArIDEzOwogICAgIHVuc2lnbmVkIGNoYXIgKnMsICpkYXRh ID0gTlVMTDsKLSAgICBpbnQgcmM7CisgICAgaW50IHJjID0gMDsKIAogICAg IGlmIChoYW5kbGUtPmNsb3NlX3N0YXRlID09IGxpYnNzaDJfTkJfc3RhdGVf aWRsZSkgewogICAgICAgICBfbGlic3NoMl9kZWJ1ZyhzZXNzaW9uLCBMSUJT U0gyX1RSQUNFX1NGVFAsICJDbG9zaW5nIGhhbmRsZSIpOwogICAgICAgICBz ID0gaGFuZGxlLT5jbG9zZV9wYWNrZXQgPSBMSUJTU0gyX0FMTE9DKHNlc3Np b24sIHBhY2tldF9sZW4pOwogICAgICAgICBpZiAoIWhhbmRsZS0+Y2xvc2Vf cGFja2V0KSB7Ci0gICAgICAgICAgICByZXR1cm4gX2xpYnNzaDJfZXJyb3Io c2Vzc2lvbiwgTElCU1NIMl9FUlJPUl9BTExPQywKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiVW5hYmxlIHRvIGFsbG9jYXRlIG1lbW9y eSBmb3IgRlhQX0NMT1NFICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAicGFja2V0Iik7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIGhh bmRsZS0+Y2xvc2Vfc3RhdGUgPSBsaWJzc2gyX05CX3N0YXRlX2lkbGU7Cisg ICAgICAgICAgICByYyA9IF9saWJzc2gyX2Vycm9yKHNlc3Npb24sIExJQlNT SDJfRVJST1JfQUxMT0MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJVbmFibGUgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBGWFBfQ0xPU0Ug IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFja2V0Iik7 CisJfSBlbHNlIHsKIAotICAgICAgICBfbGlic3NoMl9zdG9yZV91MzIoJnMs IHBhY2tldF9sZW4gLSA0KTsKLSAgICAgICAgKihzKyspID0gU1NIX0ZYUF9D TE9TRTsKLSAgICAgICAgaGFuZGxlLT5jbG9zZV9yZXF1ZXN0X2lkID0gc2Z0 cC0+cmVxdWVzdF9pZCsrOwotICAgICAgICBfbGlic3NoMl9zdG9yZV91MzIo JnMsIGhhbmRsZS0+Y2xvc2VfcmVxdWVzdF9pZCk7Ci0gICAgICAgIF9saWJz c2gyX3N0b3JlX3N0cigmcywgaGFuZGxlLT5oYW5kbGUsIGhhbmRsZS0+aGFu ZGxlX2xlbik7Ci0gICAgICAgIGhhbmRsZS0+Y2xvc2Vfc3RhdGUgPSBsaWJz c2gyX05CX3N0YXRlX2NyZWF0ZWQ7CisJICAgIF9saWJzc2gyX3N0b3JlX3Uz MigmcywgcGFja2V0X2xlbiAtIDQpOworCSAgICAqKHMrKykgPSBTU0hfRlhQ X0NMT1NFOworCSAgICBoYW5kbGUtPmNsb3NlX3JlcXVlc3RfaWQgPSBzZnRw LT5yZXF1ZXN0X2lkKys7CisJICAgIF9saWJzc2gyX3N0b3JlX3UzMigmcywg aGFuZGxlLT5jbG9zZV9yZXF1ZXN0X2lkKTsKKwkgICAgX2xpYnNzaDJfc3Rv cmVfc3RyKCZzLCBoYW5kbGUtPmhhbmRsZSwgaGFuZGxlLT5oYW5kbGVfbGVu KTsKKwkgICAgaGFuZGxlLT5jbG9zZV9zdGF0ZSA9IGxpYnNzaDJfTkJfc3Rh dGVfY3JlYXRlZDsKKwl9CiAgICAgfQogCiAgICAgaWYgKGhhbmRsZS0+Y2xv c2Vfc3RhdGUgPT0gbGlic3NoMl9OQl9zdGF0ZV9jcmVhdGVkKSB7CkBAIC0y MjYxLDE2ICsyMzc1LDE0IEBAIHNmdHBfY2xvc2VfaGFuZGxlKExJQlNTSDJf U0ZUUF9IQU5ETEUgKmhhbmRsZSkKICAgICAgICAgaWYgKHJjID09IExJQlNT SDJfRVJST1JfRUFHQUlOKSB7CiAgICAgICAgICAgICByZXR1cm4gcmM7CiAg ICAgICAgIH0gZWxzZSBpZiAoKHNzaXplX3QpcGFja2V0X2xlbiAhPSByYykg ewotICAgICAgICAgICAgTElCU1NIMl9GUkVFKHNlc3Npb24sIGhhbmRsZS0+ Y2xvc2VfcGFja2V0KTsKLSAgICAgICAgICAgIGhhbmRsZS0+Y2xvc2VfcGFj a2V0ID0gTlVMTDsKICAgICAgICAgICAgIGhhbmRsZS0+Y2xvc2Vfc3RhdGUg PSBsaWJzc2gyX05CX3N0YXRlX2lkbGU7Ci0gICAgICAgICAgICByZXR1cm4g X2xpYnNzaDJfZXJyb3Ioc2Vzc2lvbiwgTElCU1NIMl9FUlJPUl9TT0NLRVRf U0VORCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5h YmxlIHRvIHNlbmQgRlhQX0NMT1NFIGNvbW1hbmQiKTsKLSAgICAgICAgfQor ICAgICAgICAgICAgcmMgPSBfbGlic3NoMl9lcnJvcihzZXNzaW9uLCBMSUJT U0gyX0VSUk9SX1NPQ0tFVF9TRU5ELAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiVW5hYmxlIHRvIHNlbmQgRlhQX0NMT1NFIGNvbW1hbmQi KTsKKyAgICAgICAgfSBlbHNlCisJICAgIGhhbmRsZS0+Y2xvc2Vfc3RhdGUg PSBsaWJzc2gyX05CX3N0YXRlX3NlbnQ7CisKICAgICAgICAgTElCU1NIMl9G UkVFKHNlc3Npb24sIGhhbmRsZS0+Y2xvc2VfcGFja2V0KTsKICAgICAgICAg aGFuZGxlLT5jbG9zZV9wYWNrZXQgPSBOVUxMOwotCi0gICAgICAgIGhhbmRs ZS0+Y2xvc2Vfc3RhdGUgPSBsaWJzc2gyX05CX3N0YXRlX3NlbnQ7CiAgICAg fQogCiAgICAgaWYgKGhhbmRsZS0+Y2xvc2Vfc3RhdGUgPT0gbGlic3NoMl9O Ql9zdGF0ZV9zZW50KSB7CkBAIC0yMjc5LDI5ICsyMzkxLDMwIEBAIHNmdHBf Y2xvc2VfaGFuZGxlKExJQlNTSDJfU0ZUUF9IQU5ETEUgKmhhbmRsZSkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkYXRhX2xlbik7CiAg ICAgICAgIGlmIChyYyA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikgewogICAg ICAgICAgICAgcmV0dXJuIHJjOworCiAgICAgICAgIH0gZWxzZSBpZiAocmMp IHsKLSAgICAgICAgICAgIGhhbmRsZS0+Y2xvc2Vfc3RhdGUgPSBsaWJzc2gy X05CX3N0YXRlX2lkbGU7Ci0gICAgICAgICAgICByZXR1cm4gX2xpYnNzaDJf ZXJyb3Ioc2Vzc2lvbiwgcmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIkVycm9yIHdhaXRpbmcgZm9yIHN0YXR1cyBtZXNzYWdlIik7 CisgICAgICAgICAgICBfbGlic3NoMl9lcnJvcihzZXNzaW9uLCByYywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICJFcnJvciB3YWl0aW5nIGZvciBz dGF0dXMgbWVzc2FnZSIpOwogICAgICAgICB9CiAKICAgICAgICAgaGFuZGxl LT5jbG9zZV9zdGF0ZSA9IGxpYnNzaDJfTkJfc3RhdGVfc2VudDE7CiAgICAg fQogCi0gICAgaWYoIWRhdGEpCisgICAgaWYoIWRhdGEpIHsKICAgICAgICAg LyogaWYgaXQgcmVhY2hlcyB0aGlzIHBvaW50IHdpdGggZGF0YSB1bnNldCwg c29tZXRoaW5nIHVud2FudGVkCi0gICAgICAgICAgIGhhcHBlbmVkIChsaWtl IHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGFnYWluIHdoZW4gaW4KLSAgICAg ICAgICAgbGlic3NoMl9OQl9zdGF0ZV9zZW50MSBzdGF0ZSkgYW5kIHdlIGp1 c3QgYmFpbCBvdXQgKi8KLSAgICAgICAgcmV0dXJuIExJQlNTSDJfRVJST1Jf SU5WQUw7CisgICAgICAgICAgIGhhcHBlbmVkIGZvciB3aGljaCB3ZSBzaG91 bGQgaGF2ZSBzZXQgYW4gZXJyb3IgY29kZSAqLworICAgICAgICBhc3NlcnQo cmMpOwogCi0gICAgcmV0Y29kZSA9IF9saWJzc2gyX250b2h1MzIoZGF0YSAr IDUpOwotICAgIExJQlNTSDJfRlJFRShzZXNzaW9uLCBkYXRhKTsKKyAgICB9 IGVsc2UgeworCWludCByZXRjb2RlID0gX2xpYnNzaDJfbnRvaHUzMihkYXRh ICsgNSk7CisJTElCU1NIMl9GUkVFKHNlc3Npb24sIGRhdGEpOwogCi0gICAg aWYgKHJldGNvZGUgIT0gTElCU1NIMl9GWF9PSykgewotICAgICAgICBzZnRw LT5sYXN0X2Vycm5vID0gcmV0Y29kZTsKLSAgICAgICAgaGFuZGxlLT5jbG9z ZV9zdGF0ZSA9IGxpYnNzaDJfTkJfc3RhdGVfaWRsZTsKLSAgICAgICAgcmV0 dXJuIF9saWJzc2gyX2Vycm9yKHNlc3Npb24sIExJQlNTSDJfRVJST1JfU0ZU UF9QUk9UT0NPTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJT RlRQIFByb3RvY29sIEVycm9yIik7CisJaWYgKHJldGNvZGUgIT0gTElCU1NI Ml9GWF9PSykgeworCSAgICBzZnRwLT5sYXN0X2Vycm5vID0gcmV0Y29kZTsK KwkgICAgaGFuZGxlLT5jbG9zZV9zdGF0ZSA9IGxpYnNzaDJfTkJfc3RhdGVf aWRsZTsKKwkgICAgcmMgPSBfbGlic3NoMl9lcnJvcihzZXNzaW9uLCBMSUJT U0gyX0VSUk9SX1NGVFBfUFJPVE9DT0wsCisJCQkgICAgICAgIlNGVFAgUHJv dG9jb2wgRXJyb3IiKTsKKwl9CiAgICAgfQogCiAgICAgLyogcmVtb3ZlIHRo aXMgaGFuZGxlIGZyb20gdGhlIHBhcmVudCdzIGxpc3QgKi8KQEAgLTIzMjMs NyArMjQzNiw3IEBAIHNmdHBfY2xvc2VfaGFuZGxlKExJQlNTSDJfU0ZUUF9I QU5ETEUgKmhhbmRsZSkKIAogICAgIExJQlNTSDJfRlJFRShzZXNzaW9uLCBo YW5kbGUpOwogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHJjOwogfQog CiAvKiBsaWJzc2gyX3NmdHBfY2xvc2VfaGFuZGxlCkBAIC0yNTgzLDYgKzI2 OTYsOCBAQCBzdGF0aWMgaW50IHNmdHBfZnN0YXR2ZnMoTElCU1NIMl9TRlRQ X0hBTkRMRSAqaGFuZGxlLCBMSUJTU0gyX1NGVFBfU1RBVFZGUyAqc3QpCiAg ICAgdW5zaWduZWQgY2hhciAqcGFja2V0LCAqcywgKmRhdGE7CiAgICAgc3Np emVfdCByYzsKICAgICB1bnNpZ25lZCBpbnQgZmxhZzsKKyAgICBzdGF0aWMg Y29uc3QgdW5zaWduZWQgY2hhciByZXNwb25zZXNbMl0gPQorICAgICAgICB7 IFNTSF9GWFBfRVhURU5ERURfUkVQTFksIFNTSF9GWFBfU1RBVFVTIH07CiAK ICAgICBpZiAoc2Z0cC0+ZnN0YXR2ZnNfc3RhdGUgPT0gbGlic3NoMl9OQl9z dGF0ZV9pZGxlKSB7CiAgICAgICAgIF9saWJzc2gyX2RlYnVnKHNlc3Npb24s IExJQlNTSDJfVFJBQ0VfU0ZUUCwKQEAgLTI2MjYsMTUgKzI3NDEsMjcgQEAg c3RhdGljIGludCBzZnRwX2ZzdGF0dmZzKExJQlNTSDJfU0ZUUF9IQU5ETEUg KmhhbmRsZSwgTElCU1NIMl9TRlRQX1NUQVRWRlMgKnN0KQogICAgICAgICBz ZnRwLT5mc3RhdHZmc19zdGF0ZSA9IGxpYnNzaDJfTkJfc3RhdGVfc2VudDsK ICAgICB9CiAKLSAgICByYyA9IHNmdHBfcGFja2V0X3JlcXVpcmUoc2Z0cCwg U1NIX0ZYUF9FWFRFTkRFRF9SRVBMWSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2Z0cC0+ZnN0YXR2ZnNfcmVxdWVzdF9pZCwgJmRhdGEsICZk YXRhX2xlbik7CisgICAgcmMgPSBzZnRwX3BhY2tldF9yZXF1aXJldihzZnRw LCAyLCByZXNwb25zZXMsIHNmdHAtPmZzdGF0dmZzX3JlcXVlc3RfaWQsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YSwgJmRhdGFfbGVu KTsKKwogICAgIGlmIChyYyA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikgewog ICAgICAgICByZXR1cm4gcmM7CiAgICAgfSBlbHNlIGlmIChyYykgewogICAg ICAgICBzZnRwLT5mc3RhdHZmc19zdGF0ZSA9IGxpYnNzaDJfTkJfc3RhdGVf aWRsZTsKICAgICAgICAgcmV0dXJuIF9saWJzc2gyX2Vycm9yKHNlc3Npb24s IHJjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVycm9yIHdh aXRpbmcgZm9yIEZYUCBFWFRFTkRFRCBSRVBMWSIpOwotICAgIH0gZWxzZSBp ZiAoZGF0YV9sZW4gPCA5MykgeworICAgIH0KKworICAgIGlmIChkYXRhWzBd ID09IFNTSF9GWFBfU1RBVFVTKSB7CisgICAgICAgIGludCByZXRjb2RlID0g X2xpYnNzaDJfbnRvaHUzMihkYXRhICsgNSk7CisgICAgICAgIHNmdHAtPmZz dGF0dmZzX3N0YXRlID0gbGlic3NoMl9OQl9zdGF0ZV9pZGxlOworICAgICAg ICBMSUJTU0gyX0ZSRUUoc2Vzc2lvbiwgZGF0YSk7CisgICAgICAgIHNmdHAt Pmxhc3RfZXJybm8gPSByZXRjb2RlOworICAgICAgICByZXR1cm4gX2xpYnNz aDJfZXJyb3Ioc2Vzc2lvbiwgTElCU1NIMl9FUlJPUl9TRlRQX1BST1RPQ09M LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNGVFAgUHJvdG9j b2wgRXJyb3IiKTsKKyAgICB9CisKKyAgICBpZiAoZGF0YV9sZW4gPCA5Mykg ewogICAgICAgICBMSUJTU0gyX0ZSRUUoc2Vzc2lvbiwgZGF0YSk7CiAgICAg ICAgIHNmdHAtPmZzdGF0dmZzX3N0YXRlID0gbGlic3NoMl9OQl9zdGF0ZV9p ZGxlOwogICAgICAgICByZXR1cm4gX2xpYnNzaDJfZXJyb3Ioc2Vzc2lvbiwg TElCU1NIMl9FUlJPUl9TRlRQX1BST1RPQ09MLApAQCAtMjY1MiwxMyArMjc3 OSwxMyBAQCBzdGF0aWMgaW50IHNmdHBfZnN0YXR2ZnMoTElCU1NIMl9TRlRQ X0hBTkRMRSAqaGFuZGxlLCBMSUJTU0gyX1NGVFBfU1RBVFZGUyAqc3QpCiAg ICAgc3QtPmZfZmZyZWUgPSBfbGlic3NoMl9udG9odTY0KGRhdGEgKyA1Myk7 CiAgICAgc3QtPmZfZmF2YWlsID0gX2xpYnNzaDJfbnRvaHU2NChkYXRhICsg NjEpOwogICAgIHN0LT5mX2ZzaWQgPSBfbGlic3NoMl9udG9odTY0KGRhdGEg KyA2OSk7Ci0gICAgZmxhZyA9IF9saWJzc2gyX250b2h1NjQoZGF0YSArIDc3 KTsKKyAgICBmbGFnID0gKHVuc2lnbmVkIGludClfbGlic3NoMl9udG9odTY0 KGRhdGEgKyA3Nyk7CiAgICAgc3QtPmZfbmFtZW1heCA9IF9saWJzc2gyX250 b2h1NjQoZGF0YSArIDg1KTsKIAogICAgIHN0LT5mX2ZsYWcgPSAoZmxhZyAm IFNTSF9GWEVfU1RBVFZGU19TVF9SRE9OTFkpCi0gICAgICAgICAgICAgICAg ICA/IExJQlNTSDJfU0ZUUF9TVF9SRE9OTFkgOiAwOworICAgICAgICA/IExJ QlNTSDJfU0ZUUF9TVF9SRE9OTFkgOiAwOwogICAgIHN0LT5mX2ZsYWcgfD0g KGZsYWcgJiBTU0hfRlhFX1NUQVRWRlNfU1RfTk9TVUlEKQotICAgICAgICAg ICAgICAgICAgPyBMSUJTU0gyX1NGVFBfU1RfTk9TVUlEIDogMDsKKyAgICAg ICAgPyBMSUJTU0gyX1NGVFBfU1RfTk9TVUlEIDogMDsKIAogICAgIExJQlNT SDJfRlJFRShzZXNzaW9uLCBkYXRhKTsKICAgICByZXR1cm4gMDsKQEAgLTI2 OTYsNiArMjgyMyw4IEBAIHN0YXRpYyBpbnQgc2Z0cF9zdGF0dmZzKExJQlNT SDJfU0ZUUCAqc2Z0cCwgY29uc3QgY2hhciAqcGF0aCwKICAgICB1bnNpZ25l ZCBjaGFyICpwYWNrZXQsICpzLCAqZGF0YTsKICAgICBzc2l6ZV90IHJjOwog ICAgIHVuc2lnbmVkIGludCBmbGFnOworICAgIHN0YXRpYyBjb25zdCB1bnNp Z25lZCBjaGFyIHJlc3BvbnNlc1syXSA9CisgICAgICAgIHsgU1NIX0ZYUF9F WFRFTkRFRF9SRVBMWSwgU1NIX0ZYUF9TVEFUVVMgfTsKIAogICAgIGlmIChz ZnRwLT5zdGF0dmZzX3N0YXRlID09IGxpYnNzaDJfTkJfc3RhdGVfaWRsZSkg ewogICAgICAgICBfbGlic3NoMl9kZWJ1ZyhzZXNzaW9uLCBMSUJTU0gyX1RS QUNFX1NGVFAsCkBAIC0yNzM5LDE3ICsyODY4LDI4IEBAIHN0YXRpYyBpbnQg c2Z0cF9zdGF0dmZzKExJQlNTSDJfU0ZUUCAqc2Z0cCwgY29uc3QgY2hhciAq cGF0aCwKICAgICAgICAgc2Z0cC0+c3RhdHZmc19zdGF0ZSA9IGxpYnNzaDJf TkJfc3RhdGVfc2VudDsKICAgICB9CiAKLSAgICByYyA9IHNmdHBfcGFja2V0 X3JlcXVpcmUoc2Z0cCwgU1NIX0ZYUF9FWFRFTkRFRF9SRVBMWSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2Z0cC0+c3RhdHZmc19yZXF1ZXN0 X2lkLCAmZGF0YSwgJmRhdGFfbGVuKTsKKyAgICByYyA9IHNmdHBfcGFja2V0 X3JlcXVpcmV2KHNmdHAsIDIsIHJlc3BvbnNlcywgc2Z0cC0+c3RhdHZmc19y ZXF1ZXN0X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRh dGEsICZkYXRhX2xlbik7CiAgICAgaWYgKHJjID09IExJQlNTSDJfRVJST1Jf RUFHQUlOKSB7CiAgICAgICAgIHJldHVybiByYzsKICAgICB9IGVsc2UgaWYg KHJjKSB7CiAgICAgICAgIHNmdHAtPnN0YXR2ZnNfc3RhdGUgPSBsaWJzc2gy X05CX3N0YXRlX2lkbGU7CiAgICAgICAgIHJldHVybiBfbGlic3NoMl9lcnJv cihzZXNzaW9uLCByYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJFcnJvciB3YWl0aW5nIGZvciBGWFAgRVhURU5ERUQgUkVQTFkiKTsKLSAg ICB9IGVsc2UgaWYgKGRhdGFfbGVuIDwgOTMpIHsKKyAgICB9CisKKyAgICBp ZiAoZGF0YVswXSA9PSBTU0hfRlhQX1NUQVRVUykgeworICAgICAgICBpbnQg cmV0Y29kZSA9IF9saWJzc2gyX250b2h1MzIoZGF0YSArIDUpOworICAgICAg ICBzZnRwLT5zdGF0dmZzX3N0YXRlID0gbGlic3NoMl9OQl9zdGF0ZV9pZGxl OwogICAgICAgICBMSUJTU0gyX0ZSRUUoc2Vzc2lvbiwgZGF0YSk7Ci0gICAg ICAgIHNmdHAtPmZzdGF0dmZzX3N0YXRlID0gbGlic3NoMl9OQl9zdGF0ZV9p ZGxlOworICAgICAgICBzZnRwLT5sYXN0X2Vycm5vID0gcmV0Y29kZTsKKyAg ICAgICAgcmV0dXJuIF9saWJzc2gyX2Vycm9yKHNlc3Npb24sIExJQlNTSDJf RVJST1JfU0ZUUF9QUk9UT0NPTCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJTRlRQIFByb3RvY29sIEVycm9yIik7CisgICAgfQorCisgICAg aWYgKGRhdGFfbGVuIDwgOTMpIHsKKyAgICAgICAgTElCU1NIMl9GUkVFKHNl c3Npb24sIGRhdGEpOworICAgICAgICBzZnRwLT5zdGF0dmZzX3N0YXRlID0g bGlic3NoMl9OQl9zdGF0ZV9pZGxlOwogICAgICAgICByZXR1cm4gX2xpYnNz aDJfZXJyb3Ioc2Vzc2lvbiwgTElCU1NIMl9FUlJPUl9TRlRQX1BST1RPQ09M LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNGVFAgUHJvdG9j b2wgRXJyb3I6IHNob3J0IHJlc3BvbnNlIik7CiAgICAgfQpAQCAtMjc2NSw3 ICsyOTA1LDcgQEAgc3RhdGljIGludCBzZnRwX3N0YXR2ZnMoTElCU1NIMl9T RlRQICpzZnRwLCBjb25zdCBjaGFyICpwYXRoLAogICAgIHN0LT5mX2ZmcmVl ID0gX2xpYnNzaDJfbnRvaHU2NChkYXRhICsgNTMpOwogICAgIHN0LT5mX2Zh dmFpbCA9IF9saWJzc2gyX250b2h1NjQoZGF0YSArIDYxKTsKICAgICBzdC0+ Zl9mc2lkID0gX2xpYnNzaDJfbnRvaHU2NChkYXRhICsgNjkpOwotICAgIGZs YWcgPSBfbGlic3NoMl9udG9odTY0KGRhdGEgKyA3Nyk7CisgICAgZmxhZyA9 ICh1bnNpZ25lZCBpbnQpX2xpYnNzaDJfbnRvaHU2NChkYXRhICsgNzcpOwog ICAgIHN0LT5mX25hbWVtYXggPSBfbGlic3NoMl9udG9odTY0KGRhdGEgKyA4 NSk7CiAKICAgICBzdC0+Zl9mbGFnID0gKGZsYWcgJiBTU0hfRlhFX1NUQVRW RlNfU1RfUkRPTkxZKQpkaWZmIC0tZ2l0IGEvcGdhZG1pbi9saWJzc2gyL3Ry YW5zcG9ydC5jIGIvcGdhZG1pbi9saWJzc2gyL3RyYW5zcG9ydC5jCmluZGV4 IGI0ZWMwMzcuLjg3MjVkYTAgMTAwNjQ0Ci0tLSBhL3BnYWRtaW4vbGlic3No Mi90cmFuc3BvcnQuYworKysgYi9wZ2FkbWluL2xpYnNzaDIvdHJhbnNwb3J0 LmMKQEAgLTUyLDcgKzUyLDcgQEAKICNpbmNsdWRlICJtYWMuaCIKIAogI2Rl ZmluZSBNQVhfQkxPQ0tTSVpFIDMyICAgIC8qIE1VU1QgZml0IGJpZ2dlc3Qg Y3J5cHRvIGJsb2NrIHNpemUgd2UgdXNlL2dldCAqLwotI2RlZmluZSBNQVhf TUFDU0laRSAyMCAgICAgIC8qIE1VU1QgZml0IGJpZ2dlc3QgTUFDIGxlbmd0 aCB3ZSBzdXBwb3J0ICovCisjZGVmaW5lIE1BWF9NQUNTSVpFIDY0ICAgICAg LyogTVVTVCBmaXQgYmlnZ2VzdCBNQUMgbGVuZ3RoIHdlIHN1cHBvcnQgKi8K IAogI2lmZGVmIExJQlNTSDJERUJVRwogI2RlZmluZSBVTlBSSU5UQUJMRV9D SEFSICcuJwpAQCAtMjQxLDggKzI0MSwxMiBAQCBmdWxscGFja2V0KExJQlNT SDJfU0VTU0lPTiAqIHNlc3Npb24sIGludCBlbmNyeXB0ZWQgLyogMSBvciAw ICovICkKICAgICAgICAgcmMgPSBfbGlic3NoMl9wYWNrZXRfYWRkKHNlc3Np b24sIHAtPnBheWxvYWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZXNzaW9uLT5mdWxscGFja2V0X3BheWxvYWRfbGVuLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+ZnVsbHBhY2tl dF9tYWNzdGF0ZSk7Ci0gICAgICAgIGlmIChyYykKKyAgICAgICAgaWYgKHJj ID09IExJQlNTSDJfRVJST1JfRUFHQUlOKQorICAgICAgICAgICAgcmV0dXJu IHJjOworICAgICAgICBpZiAocmMpIHsKKyAgICAgICAgICAgIHNlc3Npb24t PmZ1bGxwYWNrZXRfc3RhdGUgPSBsaWJzc2gyX05CX3N0YXRlX2lkbGU7CiAg ICAgICAgICAgICByZXR1cm4gcmM7CisgICAgICAgIH0KICAgICB9CiAKICAg ICBzZXNzaW9uLT5mdWxscGFja2V0X3N0YXRlID0gbGlic3NoMl9OQl9zdGF0 ZV9pZGxlOwpAQCAtNTI0LDYgKzUyOCw3IEBAIGludCBfbGlic3NoMl90cmFu c3BvcnRfcmVhZChMSUJTU0gyX1NFU1NJT04gKiBzZXNzaW9uKQogICAgICAg ICAgICAgLyogbm93IGRlY3J5cHQgdGhlIGxvdCAqLwogICAgICAgICAgICAg cmMgPSBkZWNyeXB0KHNlc3Npb24sICZwLT5idWZbcC0+cmVhZGlkeF0sIHAt PndwdHIsIG51bWRlY3J5cHQpOwogICAgICAgICAgICAgaWYgKHJjICE9IExJ QlNTSDJfRVJST1JfTk9ORSkgeworICAgICAgICAgICAgICAgIHAtPnRvdGFs X251bSA9IDA7ICAgLyogbm8gcGFja2V0IGJ1ZmZlciBhdmFpbGFibGUgKi8K ICAgICAgICAgICAgICAgICByZXR1cm4gcmM7CiAgICAgICAgICAgICB9CiAK QEAgLTUzMSw3ICs1MzYsNyBAQCBpbnQgX2xpYnNzaDJfdHJhbnNwb3J0X3Jl YWQoTElCU1NIMl9TRVNTSU9OICogc2Vzc2lvbikKICAgICAgICAgICAgIHAt PnJlYWRpZHggKz0gbnVtZGVjcnlwdDsKICAgICAgICAgICAgIC8qIGFkdmFu Y2Ugd3JpdGUgcG9pbnRlciAqLwogICAgICAgICAgICAgcC0+d3B0ciArPSBu dW1kZWNyeXB0OwotICAgICAgICAgICAgLyogaW5jcmVzZSBkYXRhX251bSAq LworICAgICAgICAgICAgLyogaW5jcmVhc2UgZGF0YV9udW0gKi8KICAgICAg ICAgICAgIHAtPmRhdGFfbnVtICs9IG51bWRlY3J5cHQ7CiAKICAgICAgICAg ICAgIC8qIGJ5dGVzIGxlZnQgdG8gdGFrZSBjYXJlIG9mIHdpdGhvdXQgZGVj cnlwdGlvbiAqLwpAQCAtNTQ3LDcgKzU1Miw3IEBAIGludCBfbGlic3NoMl90 cmFuc3BvcnRfcmVhZChMSUJTU0gyX1NFU1NJT04gKiBzZXNzaW9uKQogICAg ICAgICAgICAgcC0+cmVhZGlkeCArPSBudW1ieXRlczsKICAgICAgICAgICAg IC8qIGFkdmFuY2Ugd3JpdGUgcG9pbnRlciAqLwogICAgICAgICAgICAgcC0+ d3B0ciArPSBudW1ieXRlczsKLSAgICAgICAgICAgIC8qIGluY3Jlc2UgZGF0 YV9udW0gKi8KKyAgICAgICAgICAgIC8qIGluY3JlYXNlIGRhdGFfbnVtICov CiAgICAgICAgICAgICBwLT5kYXRhX251bSArPSBudW1ieXRlczsKICAgICAg ICAgfQogCkBAIC04MjQsNyArODI5LDcgQEAgaW50IF9saWJzc2gyX3RyYW5z cG9ydF9zZW5kKExJQlNTSDJfU0VTU0lPTiAqc2Vzc2lvbiwKICAgICAgICB0 aGUgTUFDIGFuZCB0aGUgcGFja2V0X2xlbmd0aCBmaWVsZCBpdHNlbGYgKi8K ICAgICBfbGlic3NoMl9odG9udTMyKHAtPm91dGJ1ZiwgcGFja2V0X2xlbmd0 aCAtIDQpOwogICAgIC8qIHN0b3JlIHBhZGRpbmdfbGVuZ3RoICovCi0gICAg cC0+b3V0YnVmWzRdID0gcGFkZGluZ19sZW5ndGg7CisgICAgcC0+b3V0YnVm WzRdID0gKHVuc2lnbmVkIGNoYXIpcGFkZGluZ19sZW5ndGg7CiAKICAgICAv KiBmaWxsIHRoZSBwYWRkaW5nIGFyZWEgd2l0aCByYW5kb20ganVuayAqLwog ICAgIF9saWJzc2gyX3JhbmRvbShwLT5vdXRidWYgKyA1ICsgZGF0YV9sZW4s IHBhZGRpbmdfbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL3BnYWRtaW4vbGlic3No Mi91c2VyYXV0aC5jIGIvcGdhZG1pbi9saWJzc2gyL3VzZXJhdXRoLmMKaW5k ZXggYTA3MzNkNS4uNjdiYjlkMiAxMDA2NDQKLS0tIGEvcGdhZG1pbi9saWJz c2gyL3VzZXJhdXRoLmMKKysrIGIvcGdhZG1pbi9saWJzc2gyL3VzZXJhdXRo LmMKQEAgLTEsNiArMSw2IEBACiAvKiBDb3B5cmlnaHQgKGMpIDIwMDQtMjAw NywgU2FyYSBHb2xlbW9uIDxzYXJhZ0BsaWJzc2gyLm9yZz4KICAqIENvcHly aWdodCAoYykgMjAwNSBNaWtoYWlsIEd1c2Fyb3YgPGRvdHRlZG1hZ0Bkb3R0 ZWRtYWcubmV0PgotICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTEgYnkgRGFu aWVsIFN0ZW5iZXJnCisgKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxNCBieSBE YW5pZWwgU3RlbmJlcmcKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy eSBmb3JtcywKQEAgLTIxMSwxMiArMjExLDEzIEBAIHVzZXJhdXRoX3Bhc3N3 b3JkKExJQlNTSDJfU0VTU0lPTiAqc2Vzc2lvbiwKICAgICAgICAgICAgICAg IHNpemVvZihzZXNzaW9uLT51c2VyYXV0aF9wc3dkX3BhY2tldF9yZXF1aXJl dl9zdGF0ZSkpOwogCiAgICAgICAgIC8qCi0gICAgICAgICAqIDQwID0gYWNr ZXRfdHlwZSgxKSArIHVzZXJuYW1lX2xlbig0KSArIHNlcnZpY2VfbGVuKDQp ICsKKyAgICAgICAgICogNDAgPSBwYWNrZXRfdHlwZSgxKSArIHVzZXJuYW1l X2xlbig0KSArIHNlcnZpY2VfbGVuKDQpICsKICAgICAgICAgICogc2Vydmlj ZSgxNCkic3NoLWNvbm5lY3Rpb24iICsgbWV0aG9kX2xlbig0KSArIG1ldGhv ZCg4KSJwYXNzd29yZCIgKwogICAgICAgICAgKiBjaGdwd2Rib29sKDEpICsg cGFzc3dvcmRfbGVuKDQpICovCiAgICAgICAgIHNlc3Npb24tPnVzZXJhdXRo X3Bzd2RfZGF0YV9sZW4gPSB1c2VybmFtZV9sZW4gKyA0MDsKIAotICAgICAg ICBzZXNzaW9uLT51c2VyYXV0aF9wc3dkX2RhdGEwID0gflNTSF9NU0dfVVNF UkFVVEhfUEFTU1dEX0NIQU5HRVJFUTsKKyAgICAgICAgc2Vzc2lvbi0+dXNl cmF1dGhfcHN3ZF9kYXRhMCA9CisgICAgICAgICAgICAodW5zaWduZWQgY2hh cikgflNTSF9NU0dfVVNFUkFVVEhfUEFTU1dEX0NIQU5HRVJFUTsKIAogICAg ICAgICAvKiBUT0RPOiByZW1vdmUgdGhpcyBhbGxvYyB3aXRoIGEgZml4ZWQg YnVmZmVyIGluIHRoZSBzZXNzaW9uCiAgICAgICAgICAgIHN0cnVjdCAqLwpA QCAtMjc2LDEzICsyNzcsMTMgQEAgdXNlcmF1dGhfcGFzc3dvcmQoTElCU1NI Ml9TRVNTSU9OICpzZXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgMCwgTlVMTCwgMCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzZXNzaW9uLT4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJhdXRo X3Bzd2RfcGFja2V0X3JlcXVpcmV2X3N0YXRlKTsKLSAgICAgICAgICAgIGlm IChyYyA9PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikgewotICAgICAgICAgICAg ICAgIHJldHVybiBfbGlic3NoMl9lcnJvcihzZXNzaW9uLCBMSUJTU0gyX0VS Uk9SX0VBR0FJTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIldvdWxkIGJsb2NrIHdhaXRpbmciKTsKLSAgICAgICAgICAgIH0g ZWxzZSBpZiAocmMpIHsKLSAgICAgICAgICAgICAgICBzZXNzaW9uLT51c2Vy YXV0aF9wc3dkX3N0YXRlID0gbGlic3NoMl9OQl9zdGF0ZV9pZGxlOwotICAg ICAgICAgICAgICAgIHJldHVybiBfbGlic3NoMl9lcnJvcihzZXNzaW9uLCBM SUJTU0gyX0VSUk9SX1RJTUVPVVQsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJXb3VsZCBibG9jayB3YWl0aW5nIik7CisKKyAg ICAgICAgICAgIGlmIChyYykgeworICAgICAgICAgICAgICAgIGlmIChyYyAh PSBMSUJTU0gyX0VSUk9SX0VBR0FJTikKKyAgICAgICAgICAgICAgICAgICAg c2Vzc2lvbi0+dXNlcmF1dGhfcHN3ZF9zdGF0ZSA9IGxpYnNzaDJfTkJfc3Rh dGVfaWRsZTsKKworICAgICAgICAgICAgICAgIHJldHVybiBfbGlic3NoMl9l cnJvcihzZXNzaW9uLCByYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIldhaXRpbmcgZm9yIHBhc3N3b3JkIHJlc3BvbnNlIik7 CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChzZXNzaW9uLT51 c2VyYXV0aF9wc3dkX2RhdGFbMF0gPT0gU1NIX01TR19VU0VSQVVUSF9TVUND RVNTKSB7CkBAIC00NDEsNiArNDQyLDc2IEBAIGxpYnNzaDJfdXNlcmF1dGhf cGFzc3dvcmRfZXgoTElCU1NIMl9TRVNTSU9OICpzZXNzaW9uLCBjb25zdCBj aGFyICp1c2VybmFtZSwKICAgICByZXR1cm4gcmM7CiB9CiAKK3N0YXRpYyBp bnQKK21lbW9yeV9yZWFkX3B1YmxpY2tleShMSUJTU0gyX1NFU1NJT04gKiBz ZXNzaW9uLCB1bnNpZ25lZCBjaGFyICoqbWV0aG9kLAorICAgICAgICAgICAg ICAgICAgICAgIHNpemVfdCAqbWV0aG9kX2xlbiwKKyAgICAgICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBjaGFyICoqcHVia2V5ZGF0YSwKKyAgICAgICAg ICAgICAgICAgICAgICBzaXplX3QgKnB1YmtleWRhdGFfbGVuLAorICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnB1YmtleWZpbGVkYXRhLAor ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBwdWJrZXlmaWxlZGF0YV9s ZW4pCit7CisgICAgdW5zaWduZWQgY2hhciAqcHVia2V5ID0gTlVMTCwgKnNw MSwgKnNwMiwgKnRtcDsKKyAgICBzaXplX3QgcHVia2V5X2xlbiA9IHB1Ymtl eWZpbGVkYXRhX2xlbjsKKyAgICB1bnNpZ25lZCBpbnQgdG1wX2xlbjsKKwor ICAgIGlmIChwdWJrZXlmaWxlZGF0YV9sZW4gPD0gMSkgeworICAgICAgICBy ZXR1cm4gX2xpYnNzaDJfZXJyb3Ioc2Vzc2lvbiwgTElCU1NIMl9FUlJPUl9G SUxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQg ZGF0YSBpbiBwdWJsaWMga2V5IGZpbGUiKTsKKyAgICB9CisKKyAgICBwdWJr ZXkgPSBMSUJTU0gyX0FMTE9DKHNlc3Npb24sIHB1YmtleWZpbGVkYXRhX2xl bik7CisgICAgaWYgKCFwdWJrZXkpIHsKKyAgICAgICAgcmV0dXJuIF9saWJz c2gyX2Vycm9yKHNlc3Npb24sIExJQlNTSDJfRVJST1JfQUxMT0MsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5hYmxlIHRvIGFsbG9jYXRl IG1lbW9yeSBmb3IgcHVibGljIGtleSBkYXRhIik7CisgICAgfQorCisgICAg bWVtY3B5KHB1YmtleSwgcHVia2V5ZmlsZWRhdGEsIHB1YmtleWZpbGVkYXRh X2xlbik7CisKKyAgICAvKgorICAgICAqICAgUmVtb3ZlIHRyYWlsaW5nIHdo aXRlc3BhY2UKKyAgICAgKi8KKyAgICB3aGlsZSAocHVia2V5X2xlbiAmJiBp c3NwYWNlKHB1YmtleVtwdWJrZXlfbGVuIC0gMV0pKQorICAgICAgICBwdWJr ZXlfbGVuLS07CisKKyAgICBpZiAoIXB1YmtleV9sZW4pIHsKKyAgICAgICAg TElCU1NIMl9GUkVFKHNlc3Npb24sIHB1YmtleSk7CisgICAgICAgIHJldHVy biBfbGlic3NoMl9lcnJvcihzZXNzaW9uLCBMSUJTU0gyX0VSUk9SX0ZJTEUs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWlzc2luZyBwdWJs aWMga2V5IGRhdGEiKTsKKyAgICB9CisKKyAgICBpZiAoKHNwMSA9IG1lbWNo cihwdWJrZXksICcgJywgcHVia2V5X2xlbikpID09IE5VTEwpIHsKKyAgICAg ICAgTElCU1NIMl9GUkVFKHNlc3Npb24sIHB1YmtleSk7CisgICAgICAgIHJl dHVybiBfbGlic3NoMl9lcnJvcihzZXNzaW9uLCBMSUJTU0gyX0VSUk9SX0ZJ TEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBw dWJsaWMga2V5IGRhdGEiKTsKKyAgICB9CisKKyAgICBzcDErKzsKKworICAg IGlmICgoc3AyID0gbWVtY2hyKHNwMSwgJyAnLCBwdWJrZXlfbGVuIC0gKHNw MSAtIHB1YmtleSAtIDEpKSkgPT0gTlVMTCkgeworICAgICAgICAvKiBBc3N1 bWUgdGhhdCB0aGUgaWQgc3RyaW5nIGlzIG1pc3NpbmcsIGJ1dCB0aGF0IGl0 J3Mgb2theSAqLworICAgICAgICBzcDIgPSBwdWJrZXkgKyBwdWJrZXlfbGVu OworICAgIH0KKworICAgIGlmIChsaWJzc2gyX2Jhc2U2NF9kZWNvZGUoc2Vz c2lvbiwgKGNoYXIgKiopICZ0bXAsICZ0bXBfbGVuLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGNoYXIgKikgc3AxLCBzcDIgLSBzcDEpKSB7 CisgICAgICAgIExJQlNTSDJfRlJFRShzZXNzaW9uLCBwdWJrZXkpOworICAg ICAgICByZXR1cm4gX2xpYnNzaDJfZXJyb3Ioc2Vzc2lvbiwgTElCU1NIMl9F UlJPUl9GSUxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJJbnZhbGlkIGtleSBkYXRhLCBub3QgYmFzZTY0IGVuY29kZWQiKTsKKyAg ICB9CisKKyAgICAvKiBXYXN0aW5nIHNvbWUgYnl0ZXMgaGVyZSAob2theSwg bW9yZSB0aGFuIHNvbWUpLCBidXQgc2luY2UgaXQncyBsaWtlbHkKKyAgICAg KiB0byBiZSBmcmVlZCBzb29uIGFueXdheSwgd2UnbGwganVzdCBhdm9pZCB0 aGUgZXh0cmEgZnJlZS9hbGxvYyBhbmQgY2FsbAorICAgICAqIGl0IGEgd2Fz aAorICAgICAqLworICAgICptZXRob2QgPSBwdWJrZXk7CisgICAgKm1ldGhv ZF9sZW4gPSBzcDEgLSBwdWJrZXkgLSAxOworCisgICAgKnB1YmtleWRhdGEg PSB0bXA7CisgICAgKnB1YmtleWRhdGFfbGVuID0gdG1wX2xlbjsKKworICAg IHJldHVybiAwOworfQorCiAvKgogICogZmlsZV9yZWFkX3B1YmxpY2tleQog ICoKQEAgLTQ2MSw3ICs1MzIsNyBAQCBmaWxlX3JlYWRfcHVibGlja2V5KExJ QlNTSDJfU0VTU0lPTiAqIHNlc3Npb24sIHVuc2lnbmVkIGNoYXIgKiptZXRo b2QsCiAgICAgRklMRSAqZmQ7CiAgICAgY2hhciBjOwogICAgIHVuc2lnbmVk IGNoYXIgKnB1YmtleSA9IE5VTEwsICpzcDEsICpzcDIsICp0bXA7Ci0gICAg c2l6ZV90IHB1YmtleV9sZW4gPSAwOworICAgIHNpemVfdCBwdWJrZXlfbGVu ID0gMCwgc3BfbGVuOwogICAgIHVuc2lnbmVkIGludCB0bXBfbGVuOwogCiAg ICAgX2xpYnNzaDJfZGVidWcoc2Vzc2lvbiwgTElCU1NIMl9UUkFDRV9BVVRI LCAiTG9hZGluZyBwdWJsaWMga2V5IGZpbGU6ICVzIiwKQEAgLTQ3MiwxMSAr NTQzLDggQEAgZmlsZV9yZWFkX3B1YmxpY2tleShMSUJTU0gyX1NFU1NJT04g KiBzZXNzaW9uLCB1bnNpZ25lZCBjaGFyICoqbWV0aG9kLAogICAgICAgICBy ZXR1cm4gX2xpYnNzaDJfZXJyb3Ioc2Vzc2lvbiwgTElCU1NIMl9FUlJPUl9G SUxFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVuYWJsZSB0 byBvcGVuIHB1YmxpYyBrZXkgZmlsZSIpOwogICAgIH0KLSAgICB3aGlsZSAo IWZlb2YoZmQpICYmIDEgPT0gZnJlYWQoJmMsIDEsIDEsIGZkKSAmJiBjICE9 ICdccicgJiYgYyAhPSAnXG4nKQorICAgIHdoaWxlICghZmVvZihmZCkgJiYg MSA9PSBmcmVhZCgmYywgMSwgMSwgZmQpICYmIGMgIT0gJ1xyJyAmJiBjICE9 ICdcbicpIHsKICAgICAgICAgcHVia2V5X2xlbisrOwotICAgIGlmIChmZW9m KGZkKSkgewotICAgICAgICAvKiB0aGUgbGFzdCBjaGFyYWN0ZXIgd2FzIEVP RiAqLwotICAgICAgICBwdWJrZXlfbGVuLS07CiAgICAgfQogICAgIHJld2lu ZChmZCk7CiAKQEAgLTUwMiw4ICs1NzAsOSBAQCBmaWxlX3JlYWRfcHVibGlj a2V5KExJQlNTSDJfU0VTU0lPTiAqIHNlc3Npb24sIHVuc2lnbmVkIGNoYXIg KiptZXRob2QsCiAgICAgLyoKICAgICAgKiBSZW1vdmUgdHJhaWxpbmcgd2hp dGVzcGFjZQogICAgICAqLwotICAgIHdoaWxlIChwdWJrZXlfbGVuICYmIGlz c3BhY2UocHVia2V5W3B1YmtleV9sZW4gLSAxXSkpCisgICAgd2hpbGUgKHB1 YmtleV9sZW4gJiYgaXNzcGFjZShwdWJrZXlbcHVia2V5X2xlbiAtIDFdKSkg ewogICAgICAgICBwdWJrZXlfbGVuLS07CisgICAgfQogCiAgICAgaWYgKCFw dWJrZXlfbGVuKSB7CiAgICAgICAgIExJQlNTSDJfRlJFRShzZXNzaW9uLCBw dWJrZXkpOwpAQCAtNTE5LDcgKzU4OCw4IEBAIGZpbGVfcmVhZF9wdWJsaWNr ZXkoTElCU1NIMl9TRVNTSU9OICogc2Vzc2lvbiwgdW5zaWduZWQgY2hhciAq Km1ldGhvZCwKIAogICAgIHNwMSsrOwogCi0gICAgaWYgKChzcDIgPSBtZW1j aHIoc3AxLCAnICcsIHB1YmtleV9sZW4gLSAoc3AxIC0gcHVia2V5IC0gMSkp KSA9PSBOVUxMKSB7CisgICAgc3BfbGVuID0gc3AxID4gcHVia2V5ID8gKHNw MSAtIHB1YmtleSkgLSAxIDogMDsKKyAgICBpZiAoKHNwMiA9IG1lbWNocihz cDEsICcgJywgcHVia2V5X2xlbiAtIHNwX2xlbikpID09IE5VTEwpIHsKICAg ICAgICAgLyogQXNzdW1lIHRoYXQgdGhlIGlkIHN0cmluZyBpcyBtaXNzaW5n LCBidXQgdGhhdCBpdCdzIG9rYXkgKi8KICAgICAgICAgc3AyID0gcHVia2V5 ICsgcHVia2V5X2xlbjsKICAgICB9CkBAIC01NDMsNyArNjEzLDQzIEBAIGZp bGVfcmVhZF9wdWJsaWNrZXkoTElCU1NIMl9TRVNTSU9OICogc2Vzc2lvbiwg dW5zaWduZWQgY2hhciAqKm1ldGhvZCwKICAgICByZXR1cm4gMDsKIH0KIAor c3RhdGljIGludAorbWVtb3J5X3JlYWRfcHJpdmF0ZWtleShMSUJTU0gyX1NF U1NJT04gKiBzZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBMSUJTU0gyX0hPU1RLRVlfTUVUSE9EICoqIGhvc3RrZXlfbWV0aG9kLAor ICAgICAgICAgICAgICAgICAgICAgICB2b2lkICoqaG9zdGtleV9hYnN0cmFj dCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hh ciAqbWV0aG9kLCBpbnQgbWV0aG9kX2xlbiwKKyAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgY2hhciAqcHJpdmtleWZpbGVkYXRhLCBzaXplX3QgcHJp dmtleWZpbGVkYXRhX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgY2hhciAqcGFzc3BocmFzZSkKK3sKKyAgICBjb25zdCBMSUJTU0gyX0hP U1RLRVlfTUVUSE9EICoqaG9zdGtleV9tZXRob2RzX2F2YWlsID0KKyAgICAg ICAgbGlic3NoMl9ob3N0a2V5X21ldGhvZHMoKTsKIAorICAgICpob3N0a2V5 X21ldGhvZCA9IE5VTEw7CisgICAgKmhvc3RrZXlfYWJzdHJhY3QgPSBOVUxM OworICAgIHdoaWxlICgqaG9zdGtleV9tZXRob2RzX2F2YWlsICYmICgqaG9z dGtleV9tZXRob2RzX2F2YWlsKS0+bmFtZSkgeworICAgICAgICBpZiAoKCpo b3N0a2V5X21ldGhvZHNfYXZhaWwpLT5pbml0UEVNRnJvbU1lbW9yeQorICAg ICAgICAgICAgICYmIHN0cm5jbXAoKCpob3N0a2V5X21ldGhvZHNfYXZhaWwp LT5uYW1lLCAoY29uc3QgY2hhciAqKSBtZXRob2QsCisgICAgICAgICAgICAg ICAgICAgICAgICBtZXRob2RfbGVuKSA9PSAwKSB7CisgICAgICAgICAgICAq aG9zdGtleV9tZXRob2QgPSAqaG9zdGtleV9tZXRob2RzX2F2YWlsOworICAg ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaG9zdGtleV9t ZXRob2RzX2F2YWlsKys7CisgICAgfQorICAgIGlmICghKmhvc3RrZXlfbWV0 aG9kKSB7CisgICAgICAgIHJldHVybiBfbGlic3NoMl9lcnJvcihzZXNzaW9u LCBMSUJTU0gyX0VSUk9SX01FVEhPRF9OT05FLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIk5vIGhhbmRsZXIgZm9yIHNwZWNpZmllZCBwcml2 YXRlIGtleSIpOworICAgIH0KKworICAgIGlmICgoKmhvc3RrZXlfbWV0aG9k KS0+CisgICAgICAgIGluaXRQRU1Gcm9tTWVtb3J5KHNlc3Npb24sIHByaXZr ZXlmaWxlZGF0YSwgcHJpdmtleWZpbGVkYXRhX2xlbiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIgKikgcGFzc3BocmFzZSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdGtleV9hYnN0cmFjdCkp IHsKKyAgICAgICAgcmV0dXJuIF9saWJzc2gyX2Vycm9yKHNlc3Npb24sIExJ QlNTSDJfRVJST1JfRklMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJVbmFibGUgdG8gaW5pdGlhbGl6ZSBwcml2YXRlIGtleSBmcm9tIGZp bGUiKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KIAogLyogbGlic3No Ml9maWxlX3JlYWRfcHJpdmF0ZWtleQogICogUmVhZCBhIFBFTSBlbmNvZGVk IHByaXZhdGUga2V5IGZyb20gYW4gaWRfPz8/IHN0eWxlIGZpbGUKQEAgLTU5 Miw2ICs2OTgsNDIgQEAgc3RydWN0IHByaXZrZXlfZmlsZSB7CiB9OwogCiBz dGF0aWMgaW50CitzaWduX2Zyb21tZW1vcnkoTElCU1NIMl9TRVNTSU9OICpz ZXNzaW9uLCB1bnNpZ25lZCBjaGFyICoqc2lnLCBzaXplX3QgKnNpZ19sZW4s CisgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwg c2l6ZV90IGRhdGFfbGVuLCB2b2lkICoqYWJzdHJhY3QpCit7CisgICAgc3Ry dWN0IHByaXZrZXlfZmlsZSAqcGtfZmlsZSA9IChzdHJ1Y3QgcHJpdmtleV9m aWxlICopICgqYWJzdHJhY3QpOworICAgIGNvbnN0IExJQlNTSDJfSE9TVEtF WV9NRVRIT0QgKnByaXZrZXlvYmo7CisgICAgdm9pZCAqaG9zdGtleV9hYnN0 cmFjdDsKKyAgICBzdHJ1Y3QgaW92ZWMgZGF0YXZlYzsKKyAgICBpbnQgcmM7 CisKKyAgICByYyA9IG1lbW9yeV9yZWFkX3ByaXZhdGVrZXkoc2Vzc2lvbiwg JnByaXZrZXlvYmosICZob3N0a2V5X2Fic3RyYWN0LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT51c2VyYXV0aF9wYmxjX21l dGhvZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lv bi0+dXNlcmF1dGhfcGJsY19tZXRob2RfbGVuLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwa19maWxlLT5maWxlbmFtZSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKHBrX2ZpbGUtPmZpbGVu YW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGtfZmls ZS0+cGFzc3BocmFzZSk7CisgICAgaWYocmMpCisgICAgICAgIHJldHVybiBy YzsKKworICAgIGRhdGF2ZWMuaW92X2Jhc2UgPSAodm9pZCAqKWRhdGE7Cisg ICAgZGF0YXZlYy5pb3ZfbGVuICA9IGRhdGFfbGVuOworCisgICAgaWYgKHBy aXZrZXlvYmotPnNpZ252KHNlc3Npb24sIHNpZywgc2lnX2xlbiwgMSwgJmRh dGF2ZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZob3N0a2V5X2Fi c3RyYWN0KSkgeworICAgICAgICBpZiAocHJpdmtleW9iai0+ZHRvcikgewor ICAgICAgICAgICAgcHJpdmtleW9iai0+ZHRvcihzZXNzaW9uLCBhYnN0cmFj dCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKwor ICAgIGlmIChwcml2a2V5b2JqLT5kdG9yKSB7CisgICAgICAgIHByaXZrZXlv YmotPmR0b3Ioc2Vzc2lvbiwgJmhvc3RrZXlfYWJzdHJhY3QpOworICAgIH0K KyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAogc2lnbl9mcm9tZmls ZShMSUJTU0gyX1NFU1NJT04gKnNlc3Npb24sIHVuc2lnbmVkIGNoYXIgKipz aWcsIHNpemVfdCAqc2lnX2xlbiwKICAgICAgICAgICAgICAgY29uc3QgdW5z aWduZWQgY2hhciAqZGF0YSwgc2l6ZV90IGRhdGFfbGVuLCB2b2lkICoqYWJz dHJhY3QpCiB7CkBAIC02MTUsNyArNzU3LDcgQEAgc2lnbl9mcm9tZmlsZShM SUJTU0gyX1NFU1NJT04gKnNlc3Npb24sIHVuc2lnbmVkIGNoYXIgKipzaWcs IHNpemVfdCAqc2lnX2xlbiwKICAgICBpZiAocHJpdmtleW9iai0+c2lnbnYo c2Vzc2lvbiwgc2lnLCBzaWdfbGVuLCAxLCAmZGF0YXZlYywKICAgICAgICAg ICAgICAgICAgICAgICAgICAgJmhvc3RrZXlfYWJzdHJhY3QpKSB7CiAgICAg ICAgIGlmIChwcml2a2V5b2JqLT5kdG9yKSB7Ci0gICAgICAgICAgICBwcml2 a2V5b2JqLT5kdG9yKHNlc3Npb24sIGFic3RyYWN0KTsKKyAgICAgICAgICAg IHByaXZrZXlvYmotPmR0b3Ioc2Vzc2lvbiwgJmhvc3RrZXlfYWJzdHJhY3Qp OwogICAgICAgICB9CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC02 NDQsOSArNzg2LDkgQEAgdXNlcmF1dGhfaG9zdGJhc2VkX2Zyb21maWxlKExJ QlNTSDJfU0VTU0lPTiAqc2Vzc2lvbiwKIAogICAgIGlmIChzZXNzaW9uLT51 c2VyYXV0aF9ob3N0X3N0YXRlID09IGxpYnNzaDJfTkJfc3RhdGVfaWRsZSkg ewogICAgICAgICBjb25zdCBMSUJTU0gyX0hPU1RLRVlfTUVUSE9EICpwcml2 a2V5b2JqOwotICAgICAgICB1bnNpZ25lZCBjaGFyICpwdWJrZXlkYXRhLCAq c2lnOwotICAgICAgICBzaXplX3QgcHVia2V5ZGF0YV9sZW47Ci0gICAgICAg IHNpemVfdCBzaWdfbGVuOworICAgICAgICB1bnNpZ25lZCBjaGFyICpwdWJr ZXlkYXRhLCAqc2lnID0gTlVMTDsKKyAgICAgICAgc2l6ZV90IHB1YmtleWRh dGFfbGVuID0gMDsKKyAgICAgICAgc2l6ZV90IHNpZ19sZW4gPSAwOwogICAg ICAgICB2b2lkICphYnN0cmFjdDsKICAgICAgICAgdW5zaWduZWQgY2hhciBi dWZbNV07CiAgICAgICAgIHN0cnVjdCBpb3ZlYyBkYXRhdmVjWzRdOwpAQCAt NzM4LDcgKzg4MCw5IEBAIHVzZXJhdXRoX2hvc3RiYXNlZF9mcm9tZmlsZShM SUJTU0gyX1NFU1NJT04gKnNlc3Npb24sCiAgICAgICAgIGRhdGF2ZWNbMl0u aW92X2Jhc2UgPSAodm9pZCAqKXNlc3Npb24tPnVzZXJhdXRoX2hvc3RfcGFj a2V0OwogICAgICAgICBkYXRhdmVjWzJdLmlvdl9sZW4gPSBzZXNzaW9uLT51 c2VyYXV0aF9ob3N0X3BhY2tldF9sZW47CiAKLSAgICAgICAgaWYgKHByaXZr ZXlvYmotPnNpZ252KHNlc3Npb24sICZzaWcsICZzaWdfbGVuLCAzLCBkYXRh dmVjLCAmYWJzdHJhY3QpKSB7CisgICAgICAgIGlmIChwcml2a2V5b2JqICYm IHByaXZrZXlvYmotPnNpZ252ICYmCisgICAgICAgICAgICAgICAgICAgICAg ICAgIHByaXZrZXlvYmotPnNpZ252KHNlc3Npb24sICZzaWcsICZzaWdfbGVu LCAzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkYXRhdmVjLCAmYWJzdHJhY3QpKSB7CiAgICAgICAgICAgICBMSUJT U0gyX0ZSRUUoc2Vzc2lvbiwgc2Vzc2lvbi0+dXNlcmF1dGhfaG9zdF9tZXRo b2QpOwogICAgICAgICAgICAgc2Vzc2lvbi0+dXNlcmF1dGhfaG9zdF9tZXRo b2QgPSBOVUxMOwogICAgICAgICAgICAgTElCU1NIMl9GUkVFKHNlc3Npb24s IHNlc3Npb24tPnVzZXJhdXRoX2hvc3RfcGFja2V0KTsKQEAgLTc0OSw3ICs4 OTMsNyBAQCB1c2VyYXV0aF9ob3N0YmFzZWRfZnJvbWZpbGUoTElCU1NIMl9T RVNTSU9OICpzZXNzaW9uLAogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAg ICAgICB9CiAKLSAgICAgICAgaWYgKHByaXZrZXlvYmotPmR0b3IpIHsKKyAg ICAgICAgaWYgKHByaXZrZXlvYmogJiYgcHJpdmtleW9iai0+ZHRvcikgewog ICAgICAgICAgICAgcHJpdmtleW9iai0+ZHRvcihzZXNzaW9uLCAmYWJzdHJh Y3QpOwogICAgICAgICB9CiAKQEAgLTEyMTEsNiArMTM1NSw2NSBAQCBfbGli c3NoMl91c2VyYXV0aF9wdWJsaWNrZXkoTElCU1NIMl9TRVNTSU9OICpzZXNz aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlcm5hbWUvcHVi bGljIGtleSBjb21iaW5hdGlvbiIpOwogfQogCisgLyoKKyAgKiB1c2VyYXV0 aF9wdWJsaWNrZXlfZnJvbW1lbW9yeQorICAqIEF1dGhlbnRpY2F0ZSB1c2lu ZyBhIGtleXBhaXIgZnJvbSBtZW1vcnkKKyAgKi8KK3N0YXRpYyBpbnQKK3Vz ZXJhdXRoX3B1YmxpY2tleV9mcm9tbWVtb3J5KExJQlNTSDJfU0VTU0lPTiAq c2Vzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGNoYXIgKnVzZXJuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2l6ZV90IHVzZXJuYW1lX2xlbiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGNoYXIgKnB1YmxpY2tleWRhdGEsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcHVibGlja2V5ZGF0YV9s ZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy ICpwcml2YXRla2V5ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNpemVfdCBwcml2YXRla2V5ZGF0YV9sZW4sCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXNzcGhyYXNlKQorewor ICAgIHVuc2lnbmVkIGNoYXIgKnB1YmtleWRhdGEgPSBOVUxMOworICAgIHNp emVfdCBwdWJrZXlkYXRhX2xlbiA9IDA7CisgICAgc3RydWN0IHByaXZrZXlf ZmlsZSBwcml2a2V5X2ZpbGU7CisgICAgdm9pZCAqYWJzdHJhY3QgPSAmcHJp dmtleV9maWxlOworICAgIGludCByYzsKKworICAgIHByaXZrZXlfZmlsZS5m aWxlbmFtZSA9IHByaXZhdGVrZXlkYXRhOworICAgIHByaXZrZXlfZmlsZS5w YXNzcGhyYXNlID0gcGFzc3BocmFzZTsKKworICAgIGlmIChzZXNzaW9uLT51 c2VyYXV0aF9wYmxjX3N0YXRlID09IGxpYnNzaDJfTkJfc3RhdGVfaWRsZSkg eworICAgICAgICBpZiAocHVibGlja2V5ZGF0YV9sZW4gJiYgcHVibGlja2V5 ZGF0YSkgeworICAgICAgICAgICAgcmMgPSBtZW1vcnlfcmVhZF9wdWJsaWNr ZXkoc2Vzc2lvbiwgJnNlc3Npb24tPnVzZXJhdXRoX3BibGNfbWV0aG9kLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNlc3Np b24tPnVzZXJhdXRoX3BibGNfbWV0aG9kX2xlbiwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZwdWJrZXlkYXRhLCAmcHVia2V5 ZGF0YV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwdWJsaWNrZXlkYXRhLCBwdWJsaWNrZXlkYXRhX2xlbik7CisgICAg ICAgICAgICBpZihyYykKKyAgICAgICAgICAgICAgICByZXR1cm4gcmM7Cisg ICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAocHJpdmF0ZWtleWRhdGFfbGVu ICYmIHByaXZhdGVrZXlkYXRhKSB7CisgICAgICAgICAgICAvKiBDb21wdXRl IHB1YmxpYyBrZXkgZnJvbSBwcml2YXRlIGtleS4gKi8KKyAgICAgICAgICAg IGlmIChfbGlic3NoMl9wdWJfcHJpdl9rZXlmaWxlbWVtb3J5KHNlc3Npb24s CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmc2Vzc2lvbi0+dXNlcmF1dGhfcGJsY19tZXRob2QsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2Vz c2lvbi0+dXNlcmF1dGhfcGJsY19tZXRob2RfbGVuLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnB1YmtleWRh dGEsICZwdWJrZXlkYXRhX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHByaXZhdGVrZXlkYXRhLCBwcml2 YXRla2V5ZGF0YV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwYXNzcGhyYXNlKSkKKyAgICAgICAgICAg ICAgICByZXR1cm4gX2xpYnNzaDJfZXJyb3Ioc2Vzc2lvbiwgTElCU1NIMl9F UlJPUl9GSUxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiVW5hYmxlIHRvIGV4dHJhY3QgcHVibGljIGtleSAiCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcm9tIHByaXZhdGUg a2V5LiIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAg ICAgcmV0dXJuIF9saWJzc2gyX2Vycm9yKHNlc3Npb24sIExJQlNTSDJfRVJS T1JfRklMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi SW52YWxpZCBkYXRhIGluIHB1YmxpYyBhbmQgcHJpdmF0ZSBrZXkuIik7Cisg ICAgICAgIH0KKyAgICB9CisKKyAgICByYyA9IF9saWJzc2gyX3VzZXJhdXRo X3B1YmxpY2tleShzZXNzaW9uLCB1c2VybmFtZSwgdXNlcm5hbWVfbGVuLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmtleWRh dGEsIHB1YmtleWRhdGFfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNpZ25fZnJvbW1lbW9yeSwgJmFic3RyYWN0KTsKKyAg ICBpZihwdWJrZXlkYXRhKQorICAgICAgICBMSUJTU0gyX0ZSRUUoc2Vzc2lv biwgcHVia2V5ZGF0YSk7CisKKyAgICByZXR1cm4gcmM7Cit9CisKIC8qCiAg KiB1c2VyYXV0aF9wdWJsaWNrZXlfZnJvbWZpbGUKICAqIEF1dGhlbnRpY2F0 ZSB1c2luZyBhIGtleXBhaXIgZm91bmQgaW4gdGhlIG5hbWVkIGZpbGVzCkBA IC0xMjYzLDYgKzE0NjYsMzYgQEAgdXNlcmF1dGhfcHVibGlja2V5X2Zyb21m aWxlKExJQlNTSDJfU0VTU0lPTiAqc2Vzc2lvbiwKICAgICByZXR1cm4gcmM7 CiB9CiAKKy8qIGxpYnNzaDJfdXNlcmF1dGhfcHVibGlja2V5X2Zyb21tZW1v cnkKKyAqIEF1dGhlbnRpY2F0ZSB1c2luZyBhIGtleXBhaXIgZnJvbSBtZW1v cnkKKyAqLworTElCU1NIMl9BUEkgaW50CitsaWJzc2gyX3VzZXJhdXRoX3B1 YmxpY2tleV9mcm9tbWVtb3J5KExJQlNTSDJfU0VTU0lPTiAqc2Vzc2lvbiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg Y2hhciAqdXNlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2l6ZV90IHVzZXJfbGVuLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwdWJsaWNrZXlmaWxlZGF0 YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6 ZV90IHB1YmxpY2tleWZpbGVkYXRhX2xlbiwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcHJpdmF0ZWtleWZp bGVkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzaXplX3QgcHJpdmF0ZWtleWZpbGVkYXRhX2xlbiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGFzc3Bo cmFzZSkKK3sKKyAgICBpbnQgcmM7CisKKyAgICBpZihOVUxMID09IHBhc3Nw aHJhc2UpCisgICAgICAgIC8qIGlmIGdpdmVuIGEgTlVMTCBwb2ludGVyLCBt YWtlIGl0IHBvaW50IHRvIGEgemVyby1sZW5ndGgKKyAgICAgICAgICAgc3Ry aW5nIHRvIHNhdmUgdXMgZnJvbSBoYXZpbmcgdG8gY2hlY2sgdGhpcyBhbGwg b3ZlciAqLworICAgICAgICBwYXNzcGhyYXNlPSIiOworCisgICAgQkxPQ0tf QURKVVNUKHJjLCBzZXNzaW9uLAorICAgICAgICAgICAgICAgICB1c2VyYXV0 aF9wdWJsaWNrZXlfZnJvbW1lbW9yeShzZXNzaW9uLCB1c2VyLCB1c2VyX2xl biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcHVibGlja2V5ZmlsZWRhdGEsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpY2tleWZpbGVkYXRh X2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcHJpdmF0ZWtleWZpbGVkYXRhLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2YXRla2V5Zmls ZWRhdGFfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwYXNzcGhyYXNlKSk7CisgICAgcmV0dXJuIHJjOwor fQorCiAvKiBsaWJzc2gyX3VzZXJhdXRoX3B1YmxpY2tleV9mcm9tZmlsZV9l eAogICogQXV0aGVudGljYXRlIHVzaW5nIGEga2V5cGFpciBmb3VuZCBpbiB0 aGUgbmFtZWQgZmlsZXMKICAqLwpAQCAtMTUwMSw0MSArMTczNCwzNSBAQCB1 c2VyYXV0aF9rZXlib2FyZF9pbnRlcmFjdGl2ZShMSUJTU0gyX1NFU1NJT04g KiBzZXNzaW9uLAogCiAgICAgICAgICAgICBpZihzZXNzaW9uLT51c2VyYXV0 aF9reWJkX251bV9wcm9tcHRzKSB7CiAgICAgICAgICAgICAgICAgc2Vzc2lv bi0+dXNlcmF1dGhfa3liZF9wcm9tcHRzID0KLSAgICAgICAgICAgICAgICAg ICAgTElCU1NIMl9BTExPQyhzZXNzaW9uLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNpemVvZihMSUJTU0gyX1VTRVJBVVRIX0tCRElO VF9QUk9NUFQpICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzZXNzaW9uLT51c2VyYXV0aF9reWJkX251bV9wcm9tcHRzKTsKKyAgICAg ICAgICAgICAgICAgICAgTElCU1NIMl9DQUxMT0Moc2Vzc2lvbiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKExJQlNTSDJf VVNFUkFVVEhfS0JESU5UX1BST01QVCkgKgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZXNzaW9uLT51c2VyYXV0aF9reWJkX251bV9w cm9tcHRzKTsKICAgICAgICAgICAgICAgICBpZiAoIXNlc3Npb24tPnVzZXJh dXRoX2t5YmRfcHJvbXB0cykgewogICAgICAgICAgICAgICAgICAgICBfbGli c3NoMl9lcnJvcihzZXNzaW9uLCBMSUJTU0gyX0VSUk9SX0FMTE9DLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5hYmxlIHRvIGFs bG9jYXRlIG1lbW9yeSBmb3IgIgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAia2V5Ym9hcmQtaW50ZXJhY3RpdmUgcHJvbXB0cyBhcnJh eSIpOwogICAgICAgICAgICAgICAgICAgICBnb3RvIGNsZWFudXA7CiAgICAg ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG1lbXNldChzZXNzaW9u LT51c2VyYXV0aF9reWJkX3Byb21wdHMsIDAsCi0gICAgICAgICAgICAgICAg ICAgICAgIHNpemVvZihMSUJTU0gyX1VTRVJBVVRIX0tCRElOVF9QUk9NUFQp ICoKLSAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+dXNlcmF1dGhf a3liZF9udW1fcHJvbXB0cyk7CiAKICAgICAgICAgICAgICAgICBzZXNzaW9u LT51c2VyYXV0aF9reWJkX3Jlc3BvbnNlcyA9Ci0gICAgICAgICAgICAgICAg ICAgIExJQlNTSDJfQUxMT0Moc2Vzc2lvbiwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzaXplb2YoTElCU1NIMl9VU0VSQVVUSF9LQkRJ TlRfUkVTUE9OU0UpICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZXNzaW9uLT51c2VyYXV0aF9reWJkX251bV9wcm9tcHRzKTsKKyAg ICAgICAgICAgICAgICAgICAgTElCU1NIMl9DQUxMT0Moc2Vzc2lvbiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKExJQlNT SDJfVVNFUkFVVEhfS0JESU5UX1JFU1BPTlNFKSAqCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnVzZXJhdXRoX2t5YmRf bnVtX3Byb21wdHMpOwogICAgICAgICAgICAgICAgIGlmICghc2Vzc2lvbi0+ dXNlcmF1dGhfa3liZF9yZXNwb25zZXMpIHsKICAgICAgICAgICAgICAgICAg ICAgX2xpYnNzaDJfZXJyb3Ioc2Vzc2lvbiwgTElCU1NIMl9FUlJPUl9BTExP QywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVuYWJs ZSB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yICIKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgImtleWJvYXJkLWludGVyYWN0aXZlIHJlc3Bv bnNlcyBhcnJheSIpOwogICAgICAgICAgICAgICAgICAgICBnb3RvIGNsZWFu dXA7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG1lbXNl dChzZXNzaW9uLT51c2VyYXV0aF9reWJkX3Jlc3BvbnNlcywgMCwKLSAgICAg ICAgICAgICAgICAgICAgICAgc2l6ZW9mKExJQlNTSDJfVVNFUkFVVEhfS0JE SU5UX1JFU1BPTlNFKSAqCi0gICAgICAgICAgICAgICAgICAgICAgIHNlc3Np b24tPnVzZXJhdXRoX2t5YmRfbnVtX3Byb21wdHMpOwogCi0gICAgICAgICAg ICAgICAgZm9yKGkgPSAwOyBpICE9IHNlc3Npb24tPnVzZXJhdXRoX2t5YmRf bnVtX3Byb21wdHM7ICsraSkgeworICAgICAgICAgICAgICAgIGZvcihpID0g MDsgaSA8IHNlc3Npb24tPnVzZXJhdXRoX2t5YmRfbnVtX3Byb21wdHM7IGkr KykgewogICAgICAgICAgICAgICAgICAgICAvKiBzdHJpbmcgICAgcHJvbXB0 WzFdIChJU08tMTA2NDYgVVRGLTgpICovCiAgICAgICAgICAgICAgICAgICAg IHNlc3Npb24tPnVzZXJhdXRoX2t5YmRfcHJvbXB0c1tpXS5sZW5ndGggPQog ICAgICAgICAgICAgICAgICAgICAgICAgX2xpYnNzaDJfbnRvaHUzMihzKTsK ICAgICAgICAgICAgICAgICAgICAgcyArPSA0OwogICAgICAgICAgICAgICAg ICAgICBzZXNzaW9uLT51c2VyYXV0aF9reWJkX3Byb21wdHNbaV0udGV4dCA9 Ci0gICAgICAgICAgICAgICAgICAgICAgICBMSUJTU0gyX0FMTE9DKHNlc3Np b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl c3Npb24tPnVzZXJhdXRoX2t5YmRfcHJvbXB0c1tpXS5sZW5ndGgpOworICAg ICAgICAgICAgICAgICAgICAgICAgTElCU1NIMl9DQUxMT0Moc2Vzc2lvbiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Np b24tPnVzZXJhdXRoX2t5YmRfcHJvbXB0c1tpXS5sZW5ndGgpOwogICAgICAg ICAgICAgICAgICAgICBpZiAoIXNlc3Npb24tPnVzZXJhdXRoX2t5YmRfcHJv bXB0c1tpXS50ZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBfbGli c3NoMl9lcnJvcihzZXNzaW9uLCBMSUJTU0gyX0VSUk9SX0FMTE9DLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVuYWJsZSB0 byBhbGxvY2F0ZSBtZW1vcnkgZm9yICIKQEAgLTE1NjksNyArMTc5Niw3IEBA IHVzZXJhdXRoX2tleWJvYXJkX2ludGVyYWN0aXZlKExJQlNTSDJfU0VTU0lP TiAqIHNlc3Npb24sCiAgICAgICAgICAgICAgICAgKyA0ICAgICAgICAgICAg IC8qIGludCAgICAgICBudW0tcmVzcG9uc2VzICovCiAgICAgICAgICAgICAg ICAgOwogCi0gICAgICAgICAgICBmb3IoaSA9IDA7IGkgIT0gc2Vzc2lvbi0+ dXNlcmF1dGhfa3liZF9udW1fcHJvbXB0czsgKytpKSB7CisgICAgICAgICAg ICBmb3IoaSA9IDA7IGkgPCBzZXNzaW9uLT51c2VyYXV0aF9reWJkX251bV9w cm9tcHRzOyBpKyspIHsKICAgICAgICAgICAgICAgICAvKiBzdHJpbmcgICAg cmVzcG9uc2VbMV0gKElTTy0xMDY0NiBVVEYtOCkgKi8KICAgICAgICAgICAg ICAgICBzZXNzaW9uLT51c2VyYXV0aF9reWJkX3BhY2tldF9sZW4gKz0KICAg ICAgICAgICAgICAgICAgICAgNCArIHNlc3Npb24tPnVzZXJhdXRoX2t5YmRf cmVzcG9uc2VzW2ldLmxlbmd0aDsKQEAgLTE1OTIsNyArMTgxOSw3IEBAIHVz ZXJhdXRoX2tleWJvYXJkX2ludGVyYWN0aXZlKExJQlNTSDJfU0VTU0lPTiAq IHNlc3Npb24sCiAgICAgICAgICAgICBzKys7CiAgICAgICAgICAgICBfbGli c3NoMl9zdG9yZV91MzIoJnMsIHNlc3Npb24tPnVzZXJhdXRoX2t5YmRfbnVt X3Byb21wdHMpOwogCi0gICAgICAgICAgICBmb3IoaSA9IDA7IGkgIT0gc2Vz c2lvbi0+dXNlcmF1dGhfa3liZF9udW1fcHJvbXB0czsgKytpKSB7CisgICAg ICAgICAgICBmb3IoaSA9IDA7IGkgPCBzZXNzaW9uLT51c2VyYXV0aF9reWJk X251bV9wcm9tcHRzOyBpKyspIHsKICAgICAgICAgICAgICAgICBfbGlic3No Ml9zdG9yZV9zdHIoJnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlc3Npb24tPnVzZXJhdXRoX2t5YmRfcmVzcG9uc2VzW2ldLnRl eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Np b24tPnVzZXJhdXRoX2t5YmRfcmVzcG9uc2VzW2ldLmxlbmd0aCk7CkBAIC0x NjI4LDE0ICsxODU1LDE0IEBAIHVzZXJhdXRoX2tleWJvYXJkX2ludGVyYWN0 aXZlKExJQlNTSDJfU0VTU0lPTiAqIHNlc3Npb24sCiAgICAgICAgIHNlc3Np b24tPnVzZXJhdXRoX2t5YmRfZGF0YSA9IE5VTEw7CiAKICAgICAgICAgaWYg KHNlc3Npb24tPnVzZXJhdXRoX2t5YmRfcHJvbXB0cykgewotICAgICAgICAg ICAgZm9yKGkgPSAwOyBpICE9IHNlc3Npb24tPnVzZXJhdXRoX2t5YmRfbnVt X3Byb21wdHM7ICsraSkgeworICAgICAgICAgICAgZm9yKGkgPSAwOyBpIDwg c2Vzc2lvbi0+dXNlcmF1dGhfa3liZF9udW1fcHJvbXB0czsgaSsrKSB7CiAg ICAgICAgICAgICAgICAgTElCU1NIMl9GUkVFKHNlc3Npb24sIHNlc3Npb24t PnVzZXJhdXRoX2t5YmRfcHJvbXB0c1tpXS50ZXh0KTsKICAgICAgICAgICAg ICAgICBzZXNzaW9uLT51c2VyYXV0aF9reWJkX3Byb21wdHNbaV0udGV4dCA9 IE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBp ZiAoc2Vzc2lvbi0+dXNlcmF1dGhfa3liZF9yZXNwb25zZXMpIHsKLSAgICAg ICAgICAgIGZvcihpID0gMDsgaSAhPSBzZXNzaW9uLT51c2VyYXV0aF9reWJk X251bV9wcm9tcHRzOyArK2kpIHsKKyAgICAgICAgICAgIGZvcihpID0gMDsg aSA8IHNlc3Npb24tPnVzZXJhdXRoX2t5YmRfbnVtX3Byb21wdHM7IGkrKykg ewogICAgICAgICAgICAgICAgIExJQlNTSDJfRlJFRShzZXNzaW9uLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT51c2VyYXV0aF9r eWJkX3Jlc3BvbnNlc1tpXS50ZXh0KTsKICAgICAgICAgICAgICAgICBzZXNz aW9uLT51c2VyYXV0aF9reWJkX3Jlc3BvbnNlc1tpXS50ZXh0ID0gTlVMTDsK ZGlmZiAtLWdpdCBhL3BnYWRtaW4vcGdBZG1pbjMudmN4cHJvaiBiL3BnYWRt aW4vcGdBZG1pbjMudmN4cHJvagppbmRleCBiM2ExYmNmLi5jMGY4YjI5IDEw MDY0NAotLS0gYS9wZ2FkbWluL3BnQWRtaW4zLnZjeHByb2oKKysrIGIvcGdh ZG1pbi9wZ0FkbWluMy52Y3hwcm9qCkBAIC0xNjksNyArMTY5LDcgQEAKICAg ICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KICAg ICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5BbnlTdWl0YWJsZTwvSW5s aW5lRnVuY3Rpb25FeHBhbnNpb24+CiAgICAgICA8QWRkaXRpb25hbEluY2x1 ZGVEaXJlY3Rvcmllcz4kKE9QRU5TU0wpL2luY2x1ZGU7JChXWFdJTikvbGli L3ZjX2RsbC9tc3d1LzskKFdYV0lOKS9pbmNsdWRlOyQoV1hXSU4pL2NvbnRy aWIvaW5jbHVkZTskKFBHRElSKS9pbmNsdWRlOyQoUEdCVUlMRCkvaW5jbHVk ZS87JChQR0JVSUxEKS9saWJ4bWwyL2luY2x1ZGUvOyQoUEdCVUlMRCkvbGli eHNsdC9pbmNsdWRlLzskKFBHQlVJTEQpL2ljb252L2luY2x1ZGUvOyQoUFJP SkVDVERJUikvaW5jbHVkZTskKFBHRElSKS9pbmNsdWRlL3NlcnZlcjskKFBS T0pFQ1RESVIpL2luY2x1ZGUvbGlic3NoMjskKFBST0pFQ1RESVIpL2luY2x1 ZGUvbGlic3NoMi9XaW4zMjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp ZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFBy ZXByb2Nlc3NvckRlZmluaXRpb25zPl9DUlRfU0VDVVJFX05PX0RFUFJFQ0FU RT0xO0hBVkVfT1BFTlNTTF9DUllQVE87TkRFQlVHO1dJTjMyO19XSU5ET1dT O19fV0lORE9XU19fO19fV0lOOTVfXztfX1dJTjMyX187V0lOVkVSPTB4MDQw MDtTVFJJQ1Q7X19XWE1TV19fO1dYVVNJTkdETEw7d3hVU0VfVU5JQ09ERT0x O1VOSUNPREU7RU1CRURfWFJDO1BHX1NTTDtIQVZFX0NPTk5JTkZPX1BBUlNF OyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZp bml0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ1JU X1NFQ1VSRV9OT19ERVBSRUNBVEU9MTtIQVZFX09QRU5TU0xfQ1JZUFRPO0xJ QlNTSDJfT1BFTlNTTDtOREVCVUc7V0lOMzI7X1dJTkRPV1M7X19XSU5ET1dT X187X19XSU45NV9fO19fV0lOMzJfXztXSU5WRVI9MHgwNDAwO1NUUklDVDtf X1dYTVNXX187V1hVU0lOR0RMTDt3eFVTRV9VTklDT0RFPTE7VU5JQ09ERTtF TUJFRF9YUkM7UEdfU1NMO0hBVkVfQ09OTklORk9fUEFSU0U7JShQcmVwcm9j ZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgog ICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAg ICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1l TGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9G dW5jdGlvbkxldmVsTGlua2luZz4KQEAgLTI4Miw3ICsyODIsNyBAQAogICAg IDxDbENvbXBpbGU+CiAgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9P cHRpbWl6YXRpb24+CiAgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv cmllcz4kKE9QRU5TU0wpL2luY2x1ZGU7JChXWFdJTikvbGliL3ZjX2RsbC9t c3d1ZC87JChXWFdJTikvaW5jbHVkZTskKFdYV0lOKS9jb250cmliL2luY2x1 ZGU7JChQR0RJUikvaW5jbHVkZTskKFBHQlVJTEQpL2luY2x1ZGUvOyQoUEdC VUlMRCkvbGlieG1sMi9pbmNsdWRlLzskKFBHQlVJTEQpL2xpYnhzbHQvaW5j bHVkZS87JChQR0JVSUxEKS9pY29udi9pbmNsdWRlLzskKFBST0pFQ1RESVIp L2luY2x1ZGU7JChQR0RJUikvaW5jbHVkZS9zZXJ2ZXI7JChQUk9KRUNURElS KS9pbmNsdWRlL2xpYnNzaDI7JChQUk9KRUNURElSKS9pbmNsdWRlL2xpYnNz aDIvV2luMzI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRk aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNz b3JEZWZpbml0aW9ucz5fQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU9MTtIQVZF X09QRU5TU0xfQ1JZUFRPO1dJTjMyO19ERUJVRztfV0lORE9XUztfX1dJTkRP V1NfXztfX1dYTVNXX187V1hVU0lOR0RMTDtERUJVRz0xO19fV1hERUJVR19f O19fV0lOOTVfXztfX1dJTjMyX187V0lOVkVSPTB4MDQwMDtTVFJJQ1Q7d3hV U0VfVU5JQ09ERT0xO1VOSUNPREU7UEdfU1NMO0hBVkVfQ09OTklORk9fUEFS U0U7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRl ZmluaXRpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9D UlRfU0VDVVJFX05PX0RFUFJFQ0FURT0xO0hBVkVfT1BFTlNTTF9DUllQVE87 TElCU1NIMl9PUEVOU1NMO1dJTjMyO19ERUJVRztfV0lORE9XUztfX1dJTkRP V1NfXztfX1dYTVNXX187V1hVU0lOR0RMTDtERUJVRz0xO19fV1hERUJVR19f O19fV0lOOTVfXztfX1dJTjMyX187V0lOVkVSPTB4MDQwMDtTVFJJQ1Q7d3hV U0VfVU5JQ09ERT0xO1VOSUNPREU7UEdfU1NMO0hBVkVfQ09OTklORk9fUEFS U0U7TElCU1NIMl9PUEVOU1NMOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMp PC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxNaW5pbWFsUmVi dWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAgIDxSdW50aW1lTGli cmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5Pgog ICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJlY29tcGlsZWRIZWFk ZXI+CkBAIC00MDIsNyArNDAyLDcgQEAKICAgICA8Q2xDb21waWxlPgogICAg ICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgogICAg ICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChXWFdJTikvbGli L3ZjX2RsbC9tc3d1ZC87JChXWFdJTikvaW5jbHVkZTskKE9QRU5TU0wpL2lu Y2x1ZGU7JChXWFdJTikvY29udHJpYi9pbmNsdWRlOyQoUEdESVIpL2luY2x1 ZGU7JChQR0JVSUxEKS9pbmNsdWRlLzskKFBHQlVJTEQpL2xpYnhtbDIvaW5j bHVkZS87JChQR0JVSUxEKS9saWJ4c2x0L2luY2x1ZGUvOyQoUEdCVUlMRCkv aWNvbnYvaW5jbHVkZS87JChQUk9KRUNURElSKS9pbmNsdWRlOyQoUEdESVIp L2luY2x1ZGUvc2VydmVyOyQoUFJPSkVDVERJUikvaW5jbHVkZS9saWJzc2gy OyQoUFJPSkVDVERJUikvaW5jbHVkZS9saWJzc2gyL1dpbjMyOyUoQWRkaXRp b25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGly ZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NS VF9TRUNVUkVfTk9fREVQUkVDQVRFPTE7SEFWRV9PUEVOU1NMX0NSWVBUTztX SU4zMjtfREVCVUc7X1dJTkRPV1M7X19XSU5ET1dTX187X19XWE1TV19fO1dY VVNJTkdETEw7REVCVUc9MTtfX1dYREVCVUdfXztfX1dJTjk1X187X19XSU4z Ml9fO1dJTlZFUj0weDA0MDA7U1RSSUNUO3d4VVNFX1VOSUNPREU9MTtVTklD T0RFO1BHX1NTTDtIQVZFX0NPTk5JTkZPX1BBUlNFOyUoUHJlcHJvY2Vzc29y RGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAg IDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ1JUX1NFQ1VSRV9OT19ERVBS RUNBVEU9MTtIQVZFX09QRU5TU0xfQ1JZUFRPO0xJQlNTSDJfT1BFTlNTTDtX SU4zMjtfREVCVUc7X1dJTkRPV1M7X19XSU5ET1dTX187X19XWE1TV19fO1dY VVNJTkdETEw7REVCVUc9MTtfX1dYREVCVUdfXztfX1dJTjk1X187X19XSU4z Ml9fO1dJTlZFUj0weDA0MDA7U1RSSUNUO3d4VVNFX1VOSUNPREU9MTtVTklD T0RFO1BHX1NTTDtIQVZFX0NPTk5JTkZPX1BBUlNFOyUoUHJlcHJvY2Vzc29y RGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAg IDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KICAgICAg IDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRp bWVMaWJyYXJ5PgogICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPlVzZTwvUHJl Y29tcGlsZWRIZWFkZXI+CkBAIC01MjMsNyArNTIzLDcgQEAKICAgICAgIDxP cHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KICAgICAgIDxJ bmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5BbnlTdWl0YWJsZTwvSW5saW5lRnVu Y3Rpb25FeHBhbnNpb24+CiAgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJl Y3Rvcmllcz4kKFdYV0lOKS9saWIvdmNfZGxsL21zd3UvOyQoV1hXSU4pL2lu Y2x1ZGU7JChPUEVOU1NMKS9pbmNsdWRlOyQoV1hXSU4pL2NvbnRyaWIvaW5j bHVkZTskKFBHRElSKS9pbmNsdWRlOyQoUEdCVUlMRCkvaW5jbHVkZS87JChQ R0JVSUxEKS9saWJ4bWwyL2luY2x1ZGUvOyQoUEdCVUlMRCkvbGlieHNsdC9p bmNsdWRlLzskKFBHQlVJTEQpL2ljb252L2luY2x1ZGUvOyQoUFJPSkVDVERJ UikvaW5jbHVkZTskKFBHRElSKS9pbmNsdWRlL3NlcnZlcjskKFBST0pFQ1RE SVIpL2luY2x1ZGUvbGlic3NoMjskKFBST0pFQ1RESVIpL2luY2x1ZGUvbGli c3NoMi9XaW4zMjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9B ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nl c3NvckRlZmluaXRpb25zPl9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURT0xO0hB VkVfT1BFTlNTTF9DUllQVE87TkRFQlVHO1dJTjMyO19XSU5ET1dTO19fV0lO RE9XU19fO19fV0lOOTVfXztfX1dJTjMyX187V0lOVkVSPTB4MDQwMDtTVFJJ Q1Q7X19XWE1TV19fO1dYVVNJTkdETEw7d3hVU0VfVU5JQ09ERT0xO1VOSUNP REU7RU1CRURfWFJDO1BHX1NTTDtIQVZFX0NPTk5JTkZPX1BBUlNFOyUoUHJl cHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9u cz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ1JUX1NFQ1VS RV9OT19ERVBSRUNBVEU9MTtIQVZFX09QRU5TU0xfQ1JZUFRPO0xJQlNTSDJf T1BFTlNTTDtOREVCVUc7V0lOMzI7X1dJTkRPV1M7X19XSU5ET1dTX187X19X SU45NV9fO19fV0lOMzJfXztXSU5WRVI9MHgwNDAwO1NUUklDVDtfX1dYTVNX X187V1hVU0lOR0RMTDt3eFVTRV9VTklDT0RFPTE7VU5JQ09ERTtFTUJFRF9Y UkM7UEdfU1NMO0hBVkVfQ09OTklORk9fUEFSU0U7JShQcmVwcm9jZXNzb3JE ZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAg PFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KICAgICAgIDxS dW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFy eT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlv bkxldmVsTGlua2luZz4KZGlmZiAtLWdpdCBhL3BnYWRtaW4vdXRpbHMvc3No VHVubmVsLmNwcCBiL3BnYWRtaW4vdXRpbHMvc3NoVHVubmVsLmNwcAppbmRl eCA5YTI0NjY4Li44NWUwNmQ0IDEwMDY0NAotLS0gYS9wZ2FkbWluL3V0aWxz L3NzaFR1bm5lbC5jcHAKKysrIGIvcGdhZG1pbi91dGlscy9zc2hUdW5uZWwu Y3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgYm9vbCBDU1NIVHVubmVsVGhyZWFk OjpJbml0aWFsaXplKCkKIAkJcmMgPSBsaWJzc2gyX3Nlc3Npb25faGFuZHNo YWtlKG1fc2Vzc2lvbiwgbV9zb2NrKTsKIAkJaWYgKHJjKQogCQl7Ci0JCQlM b2dTU0hUdW5uZWxFcnJvcnMod3hTdHJpbmc6OkZvcm1hdChfKCJTU0ggZXJy b3I6IEVycm9yIHdoZW4gc3RhcnRpbmcgdXAgU1NIIHNlc3Npb24gd2l0aCBl cnJvciBjb2RlICVkIiksIHJjKSwgR2V0SWQoKSk7CisJCQlMb2dTU0hUdW5u ZWxFcnJvcnMod3hTdHJpbmc6OkZvcm1hdChfKCJTU0ggZXJyb3I6IEVycm9y IHdoZW4gc3RhcnRpbmcgdXAgU1NIIHNlc3Npb24gd2l0aCBlcnJvciBjb2Rl ICVkIiksIHJjKSwgR2V0SWQoKSwgbV9zZXNzaW9uKTsKIAkJCXJldHVybiBm YWxzZTsKIAkJfQogCkBAIC0xNzcsNyArMTc3LDcgQEAgYm9vbCBDU1NIVHVu bmVsVGhyZWFkOjpJbml0aWFsaXplKCkKIAkJCXJjID0gbGlic3NoMl91c2Vy YXV0aF9wYXNzd29yZChtX3Nlc3Npb24sIG1fdXNlcm5hbWUubWJfc3RyKCks IG1fcGFzc3dvcmQubWJfc3RyKCkpOwogCQkJaWYgKHJjKQogCQkJewotCQkJ CUxvZ1NTSFR1bm5lbEVycm9ycyh3eFN0cmluZzo6Rm9ybWF0KF8oIlNTSCBl cnJvcjogQXV0aGVudGljYXRpb24gYnkgcGFzc3dvcmQgZmFpbGVkIHdpdGgg ZXJyb3IgY29kZSAlZCIpLCByYyksIEdldElkKCkpOworCQkJCUxvZ1NTSFR1 bm5lbEVycm9ycyh3eFN0cmluZzo6Rm9ybWF0KF8oIlNTSCBlcnJvcjogQXV0 aGVudGljYXRpb24gYnkgcGFzc3dvcmQgZmFpbGVkIHdpdGggZXJyb3IgY29k ZSAlZCIpLCByYyksIEdldElkKCksIG1fc2Vzc2lvbik7CiAJCQkJQ2xlYW51 cCgpOwogCQkJCXJldHVybiBmYWxzZTsKIAkJCX0KQEAgLTE4Nyw3ICsxODcs NyBAQCBib29sIENTU0hUdW5uZWxUaHJlYWQ6OkluaXRpYWxpemUoKQogCQkJ cmMgPSBsaWJzc2gyX3VzZXJhdXRoX2tleWJvYXJkX2ludGVyYWN0aXZlKG1f c2Vzc2lvbiwgbV91c2VybmFtZS5tYl9zdHIoKSwgJkNTU0hUdW5uZWxUaHJl YWQ6OmtleWJvYXJkX2ludGVyYWN0aXZlKTsKIAkJCWlmIChyYykKIAkJCXsK LQkJCQlMb2dTU0hUdW5uZWxFcnJvcnMod3hTdHJpbmc6OkZvcm1hdChfKCJT U0ggZXJyb3I6IEF1dGhlbnRpY2F0aW9uIGJ5IHBhc3N3b3JkIGZhaWxlZCB3 aXRoIGVycm9yIGNvZGUgJWQiKSwgcmMpLCBHZXRJZCgpKTsKKwkJCQlMb2dT U0hUdW5uZWxFcnJvcnMod3hTdHJpbmc6OkZvcm1hdChfKCJTU0ggZXJyb3I6 IEF1dGhlbnRpY2F0aW9uIGJ5IHBhc3N3b3JkIGZhaWxlZCB3aXRoIGVycm9y IGNvZGUgJWQiKSwgcmMpLCBHZXRJZCgpLCBtX3Nlc3Npb24pOwogCQkJCUNs ZWFudXAoKTsKIAkJCQlyZXR1cm4gZmFsc2U7CiAJCQl9CkBAIC0yMDEsNyAr MjAxLDcgQEAgYm9vbCBDU1NIVHVubmVsVGhyZWFkOjpJbml0aWFsaXplKCkK ICNlbmRpZgogCQkJaWYgKHJjKQogCQkJewotCQkJCUxvZ1NTSFR1bm5lbEVy cm9ycyh3eFN0cmluZzo6Rm9ybWF0KF8oIlNTSCBlcnJvcjogQXV0aGVudGlj YXRpb24gYnkgaWRlbnRpdHkgZmlsZSBmYWlsZWQgd2l0aCBlcnJvciBjb2Rl ICVkIiksIHJjKSwgR2V0SWQoKSk7CisJCQkJTG9nU1NIVHVubmVsRXJyb3Jz KHd4U3RyaW5nOjpGb3JtYXQoXygiU1NIIGVycm9yOiBBdXRoZW50aWNhdGlv biBieSBpZGVudGl0eSBmaWxlIGZhaWxlZCB3aXRoIGVycm9yIGNvZGUgJWQi KSwgcmMpLCBHZXRJZCgpLCBtX3Nlc3Npb24pOwogCQkJCUNsZWFudXAoKTsK IAkJCQlyZXR1cm4gZmFsc2U7CiAJCQl9CkBAIC01OTksMTMgKzU5OSwyNyBA QCBzaHV0ZG93bjoKIAlyZXR1cm4gTlVMTDsKIH0KIAotdm9pZCBMb2dTU0hU dW5uZWxFcnJvcnMoY29uc3Qgd3hTdHJpbmcgJm1zZywgY29uc3QgaW50ICZp ZCkKK3ZvaWQgTG9nU1NIVHVubmVsRXJyb3JzKGNvbnN0IHd4U3RyaW5nICZt c2csIGNvbnN0IGludCAmaWQsIHN0cnVjdCBfTElCU1NIMl9TRVNTSU9OICpz ZXNzaW9uKQogewogCWdfU1NIVGhyZWFkTXV0ZXguVHJ5TG9jaygpOwogCisJ d3hTdHJpbmcgZXJyb3JNc2cgPSBtc2c7CisJLy8gSWYgc2Vzc2lvbiBpcyBu b3QgTlVMTCB0aGVuIGZldGNoIHRoZSBsYXN0IGVycm9yIG9uIHRoYXQgc2Vz c2lvbgorCWlmIChzZXNzaW9uKQorCXsKKwkJY2hhciogZXJybXNnOworCQlp bnQgZXJybXNnX2xlbjsKKwkJbGlic3NoMl9zZXNzaW9uX2xhc3RfZXJyb3Io c2Vzc2lvbiwgJmVycm1zZywgJmVycm1zZ19sZW4sIDApOworCQlpZiAoZXJy bXNnX2xlbiA+IDApCisJCXsKKwkJCXd4U3RyaW5nIGVycm1zZ19zKGVycm1z Zywgd3hDb252TGliYyk7CisJCQllcnJvck1zZyArPSB3eFN0cmluZzo6Rm9y bWF0KF8oIiBbJXNdIiksIGVycm1zZ19zLmNfc3RyKCkpOworCQl9CisJfQor CiAJd3hDb21tYW5kRXZlbnQgZXZlbnQoU1NIX1RVTk5FTF9FUlJPUl9FVkVO VCwgaWQpOwogCS8vIEdpdmUgaXQgc29tZSBjb250ZW50cwotCWV2ZW50LlNl dFN0cmluZyhtc2cpOworCWV2ZW50LlNldFN0cmluZyhlcnJvck1zZyk7CiAK IAkvLyBEbyBzZW5kIGl0CiAJd3hQb3N0RXZlbnQod2luTWFpbiwgZXZlbnQp Owo= --001a1134e69a5fbd230525e6c46b Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers --001a1134e69a5fbd230525e6c46b--