From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Ergus Newsgroups: gmane.emacs.devel Subject: Re: Question about display engine Date: Thu, 5 Sep 2019 19:26:09 +0000 (UTC) Message-ID: <318675867.1913640.1567711569517@mail.yahoo.com> References: <318675867.1913640.1567711569517.ref@mail.yahoo.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_1913639_1843383234.1567711569517" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="161636"; mail-complaints-to="usenet@blaine.gmane.org" Cc: eliz@gnu.org, emacs-devel@gnu.org To: rudalics@gmx.at Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Sep 05 21:26:49 2019 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1i5xP2-000fnn-Vf for ged-emacs-devel@m.gmane.org; Thu, 05 Sep 2019 21:26:46 +0200 Original-Received: from localhost ([::1]:49184 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i5xP1-000486-52 for ged-emacs-devel@m.gmane.org; Thu, 05 Sep 2019 15:26:43 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:46441) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i5xOg-00047n-J9 for emacs-devel@gnu.org; Thu, 05 Sep 2019 15:26:27 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1i5xOa-0000pU-7c for emacs-devel@gnu.org; Thu, 05 Sep 2019 15:26:21 -0400 Original-Received: from sonic314-14.consmr.mail.bf2.yahoo.com ([74.6.132.124]:34249) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1i5xOZ-0000oU-BK for emacs-devel@gnu.org; Thu, 05 Sep 2019 15:26:16 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aol.com; s=a2048; t=1567711574; bh=jiJLrAHaSHiYtiKgjQn8/ojTB2zWaZadKyjsJylcvj8=; h=Date:From:To:Cc:Subject:References:From:Subject; b=uA8GniWukHvo8geJd9EguAYTcdvp0aNhGLjHJ9z7gy+fdw0M6ZAlfO7wz/vgEhjtieLke50HVxhm0MoTHykBxP7Y7DB7kGEUzeMg5fZlK/19+W4UYS+L+y/br3coxLH8oDGxjNOpeDFvLKueGgdWEeY4tD47UgB56j5cOv0oMzH+5CksKwEorJRdwuEKSLrQzJl5pvBSKX42vBLlt80ulqLkStXscyqYUwaBnVRQPY4xh6FK4GBMFok4YMdhjQKnFj2JwZcY2Xc/hYASyUWOJBblUf2Bz+vz7m61o3l9Z7c3BWclyVfGOTWYeDOZ5kuVtWC6Frd3kkQNYRt81QWjgg== X-YMail-OSG: 7dx0VIkVM1mZy0nVcqijuA.kYswffNYoH5MiWRnYxVmBCytfr5aa.6BJAgunXba wAinfl9.wEF801McSWfZafybybdJixPesqJTIpvcZRnngKPA5TJMSbxdqWpCMsYD6t0pG7TesAl3 rz3EPksoNbF0xChTauYsjoMyZIUnGrOstREhOFMi.iAj36g1wI1wIOODrFLxpM_5cv1uViOsKjj5 6cezTJmlELXQAEI2leXyI2zkQJldGphFovQYKxVQn7p4OBAgu5RKIYezBOMIdIv9trpJEDTa0teH jOCU4sVyFVPCE40ZL7FkA2vwExy_9PDFUHkVPArJNG5EvMaf4w2OgxkvWiSHNbBrHAiR735sQRee Yh5vOmTTskE8ml2LUKMoSOeHbuUgxzI3MtctsE0giL3oSjOvw3TWJMOPAjZEZMw2MTBfvqminu5y alXFCTT00WMmE3MS3dYL5Rm0WRuGOivBFw4LLhFWzjtzOg9Xc5yaVjbgV.YtZz9y3BMeqT4OWpGg JZFieO5k7ZKGcfhEVFpgXxucRzD9N3D6jqTTSLmySi_4b4DZ6PHwhq5TYGvPvso7XSc2WS9LO4e5 0vgSq8X9.C54YgqvGi0zV7cUpdmTJkB9sp.IglSS4APFRlXCZsA74gzpmxCCTXdu427iPO3u2JK0 smpzpY_bNsnO4Q1yKUnuauKJurNneBe4fHVhCecHQRWlypVOpGbXWNEh3XBTn4VYQaR6sWyYgyiG rllAJkWW47hMcGy9LW.dmtidgB2FEBZrOhQEq0Tb5DJF03hMTNLUyRwvoFiypA3BBmbgS5HYC4X5 NoAEmxVYE_aiCuQY.0fqgIjCL2AAevG9O21QqNNAuX Original-Received: from sonic.gate.mail.ne1.yahoo.com by sonic314.consmr.mail.bf2.yahoo.com with HTTP; Thu, 5 Sep 2019 19:26:14 +0000 X-Mailer: WebService/1.1.14303 aolwebmail Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 74.6.132.124 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:239877 Archived-At: ------=_Part_1913639_1843383234.1567711569517 Content-Type: multipart/alternative; boundary="----=_Part_1913634_746735376.1567711569451" ------=_Part_1913634_746735376.1567711569451 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi Eli and Martin: I attach here a new patch with all the changes I have just made. After fixi= ng the latest Martin's issue there was exposed a new issue maybe related wi= th the initialization per line. (picture attached)=C2=A0 The issue is actually related with the fact that extend_face_id is never re= started to face_id when going back from an extend to a non_extend face betw= een lines (for example when mark is active and the iterator crosses the poi= nter to outside the selected region like in the=C2=A0 picture).=C2=A0 I made all the=C2=A0 updates of the extend_face_id in the same places where= face_id was updated (even when uneeded for now.) But I don't see any speci= al function that is called before display_line. I can set extend_face_id = =3D face_id at the beginning of display_line... but I am not sure if this i= s consistent or the right to do.=C2=A0 In some face_id merges I ignored the merge for extend_face_id because=C2=A0= Qnobreak_space, Qglyphless_char or=C2=A0Qescape_glyph I don't think are exp= ected to be :extend t in any case.=C2=A0 So the conditional merge is only called in=C2=A0next_element_from_display_v= ector and the conditionals there seems to be the key for this.=C2=A0 The rest of the times the extend_face_id is only saved and restored so as t= here were no merges I just asign to convenient values (caches, saved or fac= e_id). But maybe this last could be also the problem. I am not convinced that I am doing this right. maybe some experts eyes coul= d help. Lets expect this time marting can execute it ;p=C2=A0 Thanks in advance,Ergus. -----Original Message----- From: Ergus To: rudalics Cc: eliz ; emacs-devel Sent: Thu, Sep 5, 2019 3:55 pm Subject: Re: Question about display engine For some reason I was not facing this; but it was actually a bug I just fix= ed. I'll send a patch in a while because this exposed an issue somewhere el= se. -----Original Message----- From: martin rudalics To: Ergus Cc: Eli Zaretskii ; emacs-devel Sent: Thu, Sep 5, 2019 11:24 am Subject: Re: Question about display engine > Here is the diff of the latest commit. (Patch attached anyway). Thanks.=C2=A0 I tried with the patch.patch you attached.=C2=A0 When trying = a gtk build I get: ../../src/xfaces.c:5434: Emacs fatal error: assertion failed: lface_fully_s= pecified_p (XVECTOR (lface)->contents) Fatal error 6: Aborted Backtrace: ../src/bootstrap-emacs[0x67e32f] ../src/bootstrap-emacs[0x6344c8] ../src/bootstrap-emacs[0x74fb6f] ../src/bootstrap-emacs[0x5a8e43] ../src/bootstrap-emacs[0x5a83f8] ../src/bootstrap-emacs[0x59bccf] ../src/bootstrap-emacs[0x436ad1] ../src/bootstrap-emacs[0x4fd0ad] ../src/bootstrap-emacs[0x76376c] ../src/bootstrap-emacs[0x63530c] ../src/bootstrap-emacs[0x635860] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf1)[0x7f68217952e1] ../src/bootstrap-emacs[0x4151aa] /bin/bash: Zeile 2: 12088 Abgebrochen=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 EMACSLOADPATH=3D '../src/bootstrap-emacs' -batch --no-site-file --no-si= te-lisp --eval '(setq load-prefer-newer t)' -l bytecomp -f byte-compile-ref= resh-preloaded -f batch-byte-compile ../../lisp/cus-face.el Makefile:280: die Regel f=C3=BCr Ziel =E2=80=9E../../lisp/cus-face.elc=E2= =80=9C scheiterte make[2]: *** [../../lisp/cus-face.elc] Fehler 134 Makefile:784: die Regel f=C3=BCr Ziel =E2=80=9E../../lisp/cus-face.elc=E2= =80=9C scheiterte make[1]: *** [../../lisp/cus-face.elc] Fehler 2 make[1]: *** Es wird auf noch nicht beendete Prozesse gewartet... ../../src/xfaces.c:5434: Emacs fatal error: assertion failed: lface_fully_s= pecified_p (XVECTOR (lface)->contents) Backtrace: ../src/bootstrap-emacs[0x67e32f] ../src/bootstrap-emacs[0x6344c8] ../src/bootstrap-emacs[0x74fb6f] ../src/bootstrap-emacs[0x5a8e43] ../src/bootstrap-emacs[0x5a83f8] ../src/bootstrap-emacs[0x59bccf] ../src/bootstrap-emacs[0x436ad1] ../src/bootstrap-emacs[0x4fd0ad] ../src/bootstrap-emacs[0x76376c] ../src/bootstrap-emacs[0x63530c] ../src/bootstrap-emacs[0x635860] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf1)[0x7f0e8f3a32e1] ../src/bootstrap-emacs[0x4151aa] /bin/bash: Zeile 2: 12090 Abgebrochen=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 EMACSLOADPATH=3D '../src/bootstrap-emacs' -batch --no-site-file --no-si= te-lisp --eval '(setq load-prefer-newer t)' -l bytecomp -f byte-compile-ref= resh-preloaded -f batch-byte-compile ../../lisp/faces.el Makefile:280: die Regel f=C3=BCr Ziel =E2=80=9E../../lisp/faces.elc=E2=80= =9C scheiterte make[2]: *** [../../lisp/faces.elc] Fehler 134 Makefile:784: die Regel f=C3=BCr Ziel =E2=80=9E../../lisp/faces.elc=E2=80= =9C scheiterte make[1]: *** [../../lisp/faces.elc] Fehler 2 make[1]: Verzeichnis =E2=80=9E/home/martin/emacs-git/trunk/obj-gtk/src=E2= =80=9C wird verlassen Makefile:424: die Regel f=C3=BCr Ziel =E2=80=9Esrc=E2=80=9C scheiterte make: *** [src] Fehler 2 and a similar crash on Windows.=C2=A0 Before proceeding to dig into this I'd like to hear your ideas. > https://github.com/Ergus/Emacs/commit/4943087027acd3f2c7a54a092b64bc839e= f8850e Is there any way to get the diffs wrt current master on that site?=C2=A0 I never use github for such a thing and my browser settings are quite restrictive. Thanks, martin ------=_Part_1913634_746735376.1567711569451 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi Eli = and Martin:


I attach here a new patch with all the changes I have just made. After= fixing the latest Martin's issue there was exposed a new issue maybe relat= ed with the initialization per line. (picture attached) 

The issue is actually related with the fact that extend_face_id is nev= er restarted to face_id when going back from an extend to a non_extend face= between lines (for example when mark is active and the iterator crosses th= e pointer to outside the selected region like in the  picture). <= /div>

I made all the  updates of the extend_face_id in the same places = where face_id was updated (even when uneeded for now.) But I don't see any = special function that is called before display_line. I can set extend_face_= id =3D face_id at the beginning of display_line... but I am not sure if thi= s is consistent or the right to do. 

In some face_id merges I ignored the merge for extend_face_id because&= nbsp;Qnobreak_space, Qglyphless_char or Qescape_glyph I don't think ar= e expected to be :extend t in any case. 

So the conditional merge is only called in next_element_from_disp= lay_vector and the conditionals there seems to be the key for this. 

The rest of the times the extend_face_id is only saved and restored so= as there were no merges I just asign to convenient values (caches, saved o= r face_id). But maybe this last could be also the problem.

I am not convinced that I am doing this right. maybe some experts eyes= could help. Lets expect this time marting can execute it ;p 

Thanks in advance,
Ergus.


-----= Original Message-----
From: Ergus <spacibba@aol.com>
To: rudalics <rudalics@gmx.at>
Cc: eliz <eliz@gnu.org>; emacs-devel <emacs-devel@gnu.org>
Sent: Thu, Sep 5, 2019 3:55 pm
Subject: Re: Question about display engine

For some= reason I was not facing this; but it was actually a bug I just fixed. I'll= send a patch in a while because this exposed an issue somewhere else.


-----Original Message-----
From: martin rudalics <rudalics@gmx.at>
To: Ergus <spacibba@aol.com>
Cc: Eli Zaretskii <eliz@gnu.org>; emacs-devel <emacs-devel@gnu.org= >
Sent: Thu, Sep 5, 2019 11:24 am
Subject: Re: Question about display engine

> Here is the diff of the latest commit. (Patch attache= d anyway).

Thanks.  I tried with = the patch.patch you attached.  When trying a gtk
bui= ld I get:

../../src/xfaces.c:5434: Ema= cs fatal error: assertion failed: lface_fully_specified_p (XVECTOR (lface)-= >contents)
Fatal error 6: Aborted
Ba= cktrace:
../src/bootstrap-emacs[0x67e32f]
../src/bootstrap-emacs[0x6344c8]
../src/bootstrap-emac= s[0x74fb6f]
../src/bootstrap-emacs[0x5a8e43]
../src/bootstrap-emacs[0x5a83f8]
../src/bootstrap-e= macs[0x59bccf]
../src/bootstrap-emacs[0x436ad1]
../src/bootstrap-emacs[0x4fd0ad]
../src/bootstr= ap-emacs[0x76376c]
../src/bootstrap-emacs[0x63530c]
../src/bootstrap-emacs[0x635860]
/lib/x86_64= -linux-gnu/libc.so.6(__libc_start_main+0xf1)[0x7f68217952e1]
../src/bootstrap-emacs[0x4151aa]
/bin/bash: Zeile 2: = 12088 Abgebrochen            EMACSLOADPATH= =3D '../src/bootstrap-emacs' -batch --no-site-file --no-site-lisp --eval '(= setq load-prefer-newer t)' -l bytecomp -f byte-compile-refresh-preloaded -f= batch-byte-compile ../../lisp/cus-face.el
Makefile:280: = die Regel f=C3=BCr Ziel =E2=80=9E../../lisp/cus-face.elc=E2=80=9C scheitert= e
make[2]: *** [../../lisp/cus-face.elc] Fehler 134
Makefile:784: die Regel f=C3=BCr Ziel =E2=80=9E../../lisp/cus-= face.elc=E2=80=9C scheiterte
make[1]: *** [../../lisp/cus= -face.elc] Fehler 2
make[1]: *** Es wird auf noch nicht b= eendete Prozesse gewartet...

../../src= /xfaces.c:5434: Emacs fatal error: assertion failed: lface_fully_specified_= p (XVECTOR (lface)->contents)
Backtrace:
../src/bootstrap-emacs[0x67e32f]
../src/bootstrap-em= acs[0x6344c8]
../src/bootstrap-emacs[0x74fb6f]
../src/bootstrap-emacs[0x5a8e43]
../src/bootstr= ap-emacs[0x5a83f8]
../src/bootstrap-emacs[0x59bccf]
../src/bootstrap-emacs[0x436ad1]
../src/boot= strap-emacs[0x4fd0ad]
../src/bootstrap-emacs[0x76376c]../src/bootstrap-emacs[0x63530c]
../src/b= ootstrap-emacs[0x635860]
/lib/x86_64-linux-gnu/libc.so.6(= __libc_start_main+0xf1)[0x7f0e8f3a32e1]
../src/bootstrap-= emacs[0x4151aa]
/bin/bash: Zeile 2: 12090 Abgebrochen&nbs= p;           EMACSLOADPATH=3D '../src/bootstrap-e= macs' -batch --no-site-file --no-site-lisp --eval '(setq load-prefer-newer = t)' -l bytecomp -f byte-compile-refresh-preloaded -f batch-byte-compile ../= ../lisp/faces.el
Makefile:280: die Regel f=C3=BCr Ziel = =E2=80=9E../../lisp/faces.elc=E2=80=9C scheiterte
make[2]= : *** [../../lisp/faces.elc] Fehler 134
Makefile:784: die= Regel f=C3=BCr Ziel =E2=80=9E../../lisp/faces.elc=E2=80=9C scheiterte
make[1]: *** [../../lisp/faces.elc] Fehler 2
make[1]: Verzeichnis =E2=80=9E/home/martin/emacs-git/trunk/obj-gtk/src=E2= =80=9C wird verlassen
Makefile:424: die Regel f=C3=BCr Zi= el =E2=80=9Esrc=E2=80=9C scheiterte
make: *** [src] Fehle= r 2

and a similar crash on Windows.&nb= sp; Before proceeding to dig into this
I'd like to hear y= our ideas.

> https://github.com/= Ergus/Emacs/commit/4943087027acd3f2c7a54a092b64bc839ef8850e

Is there any way to get the diffs wrt current mas= ter on that site?  I
never use github for such a thi= ng and my browser settings are quite
restrictive.

Thanks, martin
------=_Part_1913634_746735376.1567711569451-- ------=_Part_1913639_1843383234.1567711569517 Content-Type: image/png Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="Screenshot_2019-09-05_20-49-41.png" Content-ID: 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 /fr1o4+zWVhY/Pnnnxz95G6ntbVVfo2Y28r9500ikajfHy2tvz86MIclOcZfvp8Kv05lWy82mtbn 1rt379bWVnwRA+C5U/E+kpOTM2TIEOUT7NXV1TExMTExMRKJxNnZeefOnSUlJVKp1MrKKjs7W7md xsZGQoiOjg79pkYrLS1VPlzGxtDQ0MzMbNOmTSKRiBAyYsQIbW1tppNvvfUWM6nQOPqjcrkc9bW1 tffs2bNjx46Ghoa9e/eOHTuWWQvl9eIeB2UlJSUNDQ1Dhw6lv8lqY2PTvhuVoz937twZOnRoQkIC IWTw4MEK90qlUvlP91KptKKiYtiwYRkZGYQQW1vb+vp6tm/fPgmF5TJqa2vZ9jYGDx6cl5fX0tKC 1zDA86Xi7Prp06ft7e0VChcsWODu7t6/f/8RI0Y4Ojrm5OQQQlpbWzds2BAeHj5jxow33nhjypQp 8qdJS0pKGhsb3dzcunfvrqOjw6NzlZWVZWVlvr6+ZmZm06dP9/Dw0NPToyeS8PDwjz/+2M/Pz9LS 0sHBYeXKlW32RxlH/aVLl/bp02f16tUhISE6Ojpr1qzhWC9NlyuTyQ4ePLh+/fpBgwZNmTJlzpw5 7btROfoTHR29ZMkSBweHUaNG+fn5KTwwKytr6tSpQ4YMMTExocd5165dgYGB9vb2Y8aMCQoK2rVr VzvuQnEsl5aZmfnJJ5+8/vrrxsbGCg+xt7fnPlkFAM+Gin2R3bt35+Tk9OzZUyqVMoV1dXXLli0b MGBAXV1dXFwc8wX/0NBQoVC4detWY2Pj4uJi+kMuTSqVfvnll/QPCZOTk9v8mpZK7u7u27dvX7Ro 0YULF1xdXTMyMmxtbbOzs0+dOuXp6blmzZqwsLAHDx6o0x+VVNYfNmzYmjVrJkyYIJPJCCGffvpp enp6QkIC/ZFc5Xppulw/P78DBw5cu3YtLy9v3bp17f6lVbb+bN68uX///idOnHj06NFPP/0UFBSk sOkdHR0zMzO7detmaWlZVFQUHBxsbGycmJiopaV19OhRerZud8rLpctXrFixf//+wsLC+/fvy59v 09XVnT59uvJnHQB49lRfjTE2NvbSpUttfoEHOjV3d/c1a9YoH9fq+ObPnz916tTp06f/twBXYwR4 blRfR2vFihX19fUYnRePubm5u7t73759X3vttYCAAB4/1OgIGhsbv/zyS2xNgI4AV4Z/uVhaWh46 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 6NjmOCtDShUAMDpKShVbKpTK9CH6XUBlytChQ4dcXV337dtHCHF1dT106BBFUUKhcNGiRR4eHunp 6fSboFgsNjc3Ly4uTk1NjYqK2rVrV2Nj4759+06fPs3dz3//+9/h4eHnzp2j3+Do689ztK/puO3b t2/evHmhoaGEkDlz5hw8eFAmk7U5zipplMLEMc7KkFIFAIyOklKlMhWKLX2I/lNlytDBgwednZ27 devWpUuXqVOnHjx4kBBiYWGhr68fHR1dVlZWVlZ2+/ZtupB+yKpVq1577bWBAwcuXbq0zX4OGDDg xo0b9O28vDz6Bnf7Go1bbGystbX14MGDdXR0XF1dY2Ji1BlnldRPYeIeZ2VIqQIARkdJqVKZCsWW PkRTmTJ0+fLlyspKJyenf/3rX48fP05NTSX/zZVydnYe/l+mpqYXL16kH9KvXz8TE5M+ffoovO+z pWkxCVfMOHC3rxLbuIlEotOnT8+ZM8fJyamxsZHZJ+MeZ5XUT2HiHmdlSKkCgP+9opWLnktKlcpU KLb0Ie726YNajx8/jo+Pp3MsSkpKpFKplZWV8hd2tbW19+zZs2PHjoaGhr17944dO5Y5BaKyn3fu 3Bk6dCh9rmLw4MF0IUf7hJDGxkZCiI6OjsKZIbZx27dv39q1a/v37x8bGyufw8ExzhqleCnTdJyR UgUAjI6SUsWWCsWWPsTh4MGD8fHxTU1Nc+fOpUtaW1s3bNgQHh7++PHjvLy8gQMHzp0798MPPySE LF26tE+fPqtXr25paZk+ffqaNWtWr17N0c/o6Ohly5alpaXJZDIm/pajfUJISUlJY2Ojm5sb3St6 LuEYt/j4+MjIyA8//HDcuHFMIfc4q5/ixUajcUZKFQAwFGcRjpQqBweHlJSU7OzsdevWMV9PolOq BgwYUFdXFxcXxzulik6FWrNmTVhY2IMHD5h2goODjY2NExMTtbS0jh49yqQPcUhPT29sbNTV1U1O TmYKQ0NDhULh1q1bjY2Ni4uL6Z2JYcOGrVmzZsKECfQZ7E8//TQ9PT0hIYF+61HZz82bN/fv3//E iROPHj366aefmN+RqGyfJpVKv/zyS/qHfsnJyfTXtDjGrb6+Pj4+/u23387MzGQKucd59+7djo6O mZmZ3bp1s7S0VPP0uzwe46wRtuePOvz8/G7cuOHv7//9999r2v+MjIw5c+ZcuHChubkZKVUAT8ML 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 ------=_Part_1913639_1843383234.1567711569517 Content-Type: text/x-patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="patch.patch" Content-ID: ZGlmZiAtLWdpdCBhL2xpc3AvY3VzLWZhY2UuZWwgYi9saXNwL2N1cy1mYWNlLmVsCmluZGV4IGQ3 M2JjZTQyYzMuLjVhNDlhODEwNDMgMTAwNjQ0Ci0tLSBhL2xpc3AvY3VzLWZhY2UuZWwKKysrIGIv bGlzcC9jdXMtZmFjZS5lbApAQCAtMjMzLDcgKzIzMywxMSBAQCBjdXN0b20tZmFjZS1hdHRyaWJ1 dGVzCiAJICAgICAoZmlsZSA6dGFnICJGaWxlIgogCQkgICA6aGVscC1lY2hvICJOYW1lIG9mIGJp dG1hcCBmaWxlLiIKIAkJICAgOm11c3QtbWF0Y2ggdCkpKQotCisgICAgKDpleHRlbmQKKyAgICAg KGNob2ljZSA6dGFnICJFeHRlbmQiCisJICAgICA6aGVscC1lY2hvICJDb250cm9sIHdoZXRoZXIg YXR0cmlidXRlcyBzaG91bGQgYmUgZXh0ZW5kZWQgYWZ0ZXIgRU9MLiIKKwkgICAgIChjb25zdCA6 dGFnICJPZmYiIG5pbCkKKwkgICAgIChjb25zdCA6dGFnICJPbiIgdCkpKQogICAgICg6aW5oZXJp dAogICAgICAocmVwZWF0IDp0YWcgIkluaGVyaXQiCiAJICAgICA6aGVscC1lY2hvICJMaXN0IG9m IGZhY2VzIHRvIGluaGVyaXQgYXR0cmlidXRlcyBmcm9tLiIKZGlmZiAtLWdpdCBhL2xpc3AvZmFj ZXMuZWwgYi9saXNwL2ZhY2VzLmVsCmluZGV4IDUxOTNjMjE2ZDAuLjgxNGE0YjJjOWEgMTAwNjQ0 Ci0tLSBhL2xpc3AvZmFjZXMuZWwKKysrIGIvbGlzcC9mYWNlcy5lbApAQCAtMzQyLDYgKzM0Miw3 IEBAIGZhY2UteC1yZXNvdXJjZXMKICAgICAoOmJveCAoIi5hdHRyaWJ1dGVCb3giIC4gIkZhY2Uu QXR0cmlidXRlQm94IikpCiAgICAgKDp1bmRlcmxpbmUgKCIuYXR0cmlidXRlVW5kZXJsaW5lIiAu ICJGYWNlLkF0dHJpYnV0ZVVuZGVybGluZSIpKQogICAgICg6aW52ZXJzZS12aWRlbyAoIi5hdHRy aWJ1dGVJbnZlcnNlIiAuICJGYWNlLkF0dHJpYnV0ZUludmVyc2UiKSkKKyAgICAoOmV4dGVuZCAo Ii5hdHRyaWJ1dGVFeHRlbmQiIC4gIkZhY2UuQXR0cmlidXRlRXh0ZW5kIikpCiAgICAgKDpzdGlw cGxlCiAgICAgICgiLmF0dHJpYnV0ZVN0aXBwbGUiIC4gIkZhY2UuQXR0cmlidXRlU3RpcHBsZSIp CiAgICAgICgiLmF0dHJpYnV0ZUJhY2tncm91bmRQaXhtYXAiIC4gIkZhY2UuQXR0cmlidXRlQmFj a2dyb3VuZFBpeG1hcCIpKQpAQCAtNTk0LDYgKzU5NSwxMyBAQCBmYWNlLWl0YWxpYy1wCiAgIChs ZXQgKChpdGFsaWMgKGZhY2UtYXR0cmlidXRlIGZhY2UgOnNsYW50IGZyYW1lIGluaGVyaXQpKSkK ICAgICAobWVtcSBpdGFsaWMgJyhpdGFsaWMgb2JsaXF1ZSkpKSkKIAorKGRlZnVuIGZhY2UtZXh0 ZW5kLXAgKGZhY2UgJm9wdGlvbmFsIGZyYW1lIGluaGVyaXQpCisgIlJldHVybiBub24tbmlsIGlm IEZBQ0Ugc3BlY2lmaWVzIGEgbm9uLW5pbCBleHRlbmQuCitJZiB0aGUgb3B0aW9uYWwgYXJndW1l bnQgRlJBTUUgaXMgZ2l2ZW4sIHJlcG9ydCBvbiBmYWNlIEZBQ0UgaW4gdGhhdCBmcmFtZS4KK0lm IEZSQU1FIGlzIHQsIHJlcG9ydCBvbiB0aGUgZGVmYXVsdHMgZm9yIGZhY2UgRkFDRSAoZm9yIG5l dyBmcmFtZXMpLgorSWYgRlJBTUUgaXMgb21pdHRlZCBvciBuaWwsIHVzZSB0aGUgc2VsZWN0ZWQg ZnJhbWUuCitPcHRpb25hbCBhcmd1bWVudCBJTkhFUklUIGlzIHBhc3NlZCB0byBgZmFjZS1hdHRy aWJ1dGUnLiIKKyAoZXEgKGZhY2UtYXR0cmlidXRlIGZhY2UgOmV4dGVuZCBmcmFtZSBpbmhlcml0 KSB0KSkKIAogDAogOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7CkBAIC03NjAsNiArNzY4LDExIEBAIHNldC1mYWNl LWF0dHJpYnV0ZQogYDpoZWlnaHQnLCBgOndlaWdodCcsIGFuZCBgOnNsYW50JyBtYXkgYWxzbyBi ZSBzZXQgaW4gb25lIHN0ZXAKIGZyb20gYW4gWCBmb250IG5hbWU6CiAKK2A6ZXh0ZW5kJworCitW QUxVRSBzcGVjaWZpZXMgd2hldGhlciB0aGUgRkFDRSBzaG91bGQgYmUgZXh0ZW5kZWQgYWZ0ZXIg RU9MLgorVkFMVUUgbXVzdCBiZSBvbmUgb2YgdCBvciBuaWwuCisKIGA6Zm9udCcKIAogU2V0IGZv bnQtcmVsYXRlZCBmYWNlIGF0dHJpYnV0ZXMgZnJvbSBWQUxVRS4KQEAgLTk3OSw2ICs5OTIsMTgg QEAgc2V0LWZhY2UtaXRhbGljCiAKIChkZWZpbmUtb2Jzb2xldGUtZnVuY3Rpb24tYWxpYXMgJ3Nl dC1mYWNlLWl0YWxpYy1wICdzZXQtZmFjZS1pdGFsaWMgIjI0LjQiKQogCisoZGVmdW4gc2V0LWZh Y2UtZXh0ZW5kIChmYWNlIGV4dGVuZC1wICZvcHRpb25hbCBmcmFtZSkKKyAgIlNwZWNpZnkgd2hl dGhlciBmYWNlIEZBQ0Ugc2hvdWxkIGJlIGV4dGVuZGVkLgorRVhURU5ELVAgbmlsIG1lYW5zIEZB Q0UgZXhwbGljaXRseSBkb2Vzbid0IGV4dGVuZCBhZnRlciBFT0wuCitFWFRFTkQtUCB0IG1lYW5z IEZBQ0UgZXh0ZW5kcyBhZnRlciBFT0wuCisKK0ZSQU1FIG5pbCBvciBub3Qgc3BlY2lmaWVkIG1l YW5zIGNoYW5nZSBmYWNlIG9uIGFsbCBmcmFtZXMuCitVc2UgYHNldC1mYWNlLWF0dHJpYnV0ZScg dG8gXCJ1bnNwZWNpZnlcIiB1bmRlcmxpbmluZy4iCisgIChpbnRlcmFjdGl2ZQorICAgKGxldCAo KGxpc3QgKHJlYWQtZmFjZS1hbmQtYXR0cmlidXRlIDpleHRlbmQpKSkKKyAgICAgKGxpc3QgKGNh ciBsaXN0KSAoaWYgKGNhZHIgbGlzdCkgdCkpKSkKKyAgKHNldC1mYWNlLWF0dHJpYnV0ZSBmYWNl IGZyYW1lIDpleHRlbmQgZXh0ZW5kLXApKQorCiAKIChkZWZhbGlhcyAnc2V0LWZhY2UtYmFja2dy b3VuZC1waXhtYXAgJ3NldC1mYWNlLXN0aXBwbGUpCiAKQEAgLTExMDIsNyArMTEyNyw3IEBAIGZh Y2UtdmFsaWQtYXR0cmlidXRlLXZhbHVlcwogCSAgICg6c2xhbnQKIAkgICAgKG1hcGNhciAjJyhs YW1iZGEgKHgpIChjb25zIChzeW1ib2wtbmFtZSAoYXJlZiB4IDEpKSAoYXJlZiB4IDEpKSkKIAkJ ICAgIGZvbnQtc2xhbnQtdGFibGUpKQotCSAgICg6aW52ZXJzZS12aWRlbworCSAgICgob3IgOmlu dmVyc2UtdmlkZW8gOmV4dGVuZCkKIAkgICAgKG1hcGNhciAjJyhsYW1iZGEgKHgpIChjb25zIChz eW1ib2wtbmFtZSB4KSB4KSkKIAkJICAgIChpbnRlcm5hbC1saXNwLWZhY2UtYXR0cmlidXRlLXZh bHVlcyBhdHRyaWJ1dGUpKSkKICAgICAgICAgICAgKChvciA6dW5kZXJsaW5lIDpvdmVybGluZSA6 c3RyaWtlLXRocm91Z2ggOmJveCkKQEAgLTExNDcsNiArMTE3Miw3IEBAIGZhY2UtYXR0cmlidXRl LW5hbWUtYWxpc3QKICAgICAoOnNsYW50IC4gInNsYW50IikKICAgICAoOnVuZGVybGluZSAuICJ1 bmRlcmxpbmUiKQogICAgICg6b3ZlcmxpbmUgLiAib3ZlcmxpbmUiKQorICAgICg6ZXh0ZW5kIC4g ImV4dGVuZCIpCiAgICAgKDpzdHJpa2UtdGhyb3VnaCAuICJzdHJpa2UtdGhyb3VnaCIpCiAgICAg KDpib3ggLiAiYm94IikKICAgICAoOmludmVyc2UtdmlkZW8gLiAiaW52ZXJzZS12aWRlbyBkaXNw bGF5IikKQEAgLTE0NDgsNiArMTQ3NCw3IEBAIGRlc2NyaWJlLWZhY2UKIAkJICAoOnN0aXBwbGUg LiAiU3RpcHBsZSIpCiAJCSAgKDpmb250IC4gIkZvbnQiKQogCQkgICg6Zm9udHNldCAuICJGb250 c2V0IikKKyAgICAgICAgICAgICAgICAgICg6ZXh0ZW5kIC4gIkV4dGVuZCIpCiAJCSAgKDppbmhl cml0IC4gIkluaGVyaXQiKSkpCiAJKG1heC13aWR0aCAoYXBwbHkgIydtYXggKG1hcGNhciAjJyhs YW1iZGEgKHgpIChsZW5ndGggKGNkciB4KSkpCiAJCQkJCWF0dHJzKSkpKQpAQCAtMTY2Nyw3ICsx Njk0LDggQEAgZmFjZS1zcGVjLXJlc2V0LWZhY2UKIAkgICAgIDs7IChzZWUgYWxzbyByZWFsaXpl X2RlZmF1bHRfZmFjZSBpbiB4ZmFjZXMuYykuCiAJICAgICAoYXBwZW5kCiAJICAgICAgJyg6dW5k ZXJsaW5lIG5pbCA6b3ZlcmxpbmUgbmlsIDpzdHJpa2UtdGhyb3VnaCBuaWwKLQkJOmJveCBuaWwg OmludmVyc2UtdmlkZW8gbmlsIDpzdGlwcGxlIG5pbCA6aW5oZXJpdCBuaWwpCisJCTpib3ggbmls IDppbnZlcnNlLXZpZGVvIG5pbCA6c3RpcHBsZSBuaWwgOmluaGVyaXQgbmlsCisgICAgICAgICAg ICAgICAgOmV4dGVuZCBuaWwpCiAJICAgICAgOzsgYGRpc3BsYXktZ3JhcGhpYy1wJyBpcyB1bmF2 YWlsYWJsZSB3aGVuIHJ1bm5pbmcKIAkgICAgICA7OyB0ZW1hY3MsIHByaW9yIHRvIGxvYWRpbmcg ZnJhbWUuZWwuCiAJICAgICAgKHdoZW4gKGZib3VuZHAgJ2Rpc3BsYXktZ3JhcGhpYy1wKQpAQCAt MjQzMiwyNCArMjQ2MCwyNCBAQCBoaWdobGlnaHQKIDs7IGlmIGJhY2tncm91bmQgaXMgbGlnaHQu CiAoZGVmZmFjZSByZWdpb24KICAgJygoKChjbGFzcyBjb2xvcikgKG1pbi1jb2xvcnMgODgpIChi YWNrZ3JvdW5kIGRhcmspKQotICAgICA6YmFja2dyb3VuZCAiYmx1ZTMiKQorICAgICA6YmFja2dy b3VuZCAiYmx1ZTMiIDpleHRlbmQgdCkKICAgICAoKChjbGFzcyBjb2xvcikgKG1pbi1jb2xvcnMg ODgpIChiYWNrZ3JvdW5kIGxpZ2h0KSAodHlwZSBndGspKQogICAgICA6ZGlzdGFudC1mb3JlZ3Jv dW5kICJndGtfc2VsZWN0aW9uX2ZnX2NvbG9yIgotICAgICA6YmFja2dyb3VuZCAiZ3RrX3NlbGVj dGlvbl9iZ19jb2xvciIpCisgICAgIDpiYWNrZ3JvdW5kICJndGtfc2VsZWN0aW9uX2JnX2NvbG9y IiA6ZXh0ZW5kIHQpCiAgICAgKCgoY2xhc3MgY29sb3IpIChtaW4tY29sb3JzIDg4KSAoYmFja2dy b3VuZCBsaWdodCkgKHR5cGUgbnMpKQogICAgICA6ZGlzdGFudC1mb3JlZ3JvdW5kICJuc19zZWxl Y3Rpb25fZmdfY29sb3IiCi0gICAgIDpiYWNrZ3JvdW5kICJuc19zZWxlY3Rpb25fYmdfY29sb3Ii KQorICAgICA6YmFja2dyb3VuZCAibnNfc2VsZWN0aW9uX2JnX2NvbG9yIiA6ZXh0ZW5kIHQpCiAg ICAgKCgoY2xhc3MgY29sb3IpIChtaW4tY29sb3JzIDg4KSAoYmFja2dyb3VuZCBsaWdodCkpCi0g ICAgIDpiYWNrZ3JvdW5kICJsaWdodGdvbGRlbnJvZDIiKQorICAgICA6YmFja2dyb3VuZCAibGln aHRnb2xkZW5yb2QyIiA6ZXh0ZW5kIHQpCiAgICAgKCgoY2xhc3MgY29sb3IpIChtaW4tY29sb3Jz IDE2KSAoYmFja2dyb3VuZCBkYXJrKSkKLSAgICAgOmJhY2tncm91bmQgImJsdWUzIikKKyAgICAg OmJhY2tncm91bmQgImJsdWUzIiA6ZXh0ZW5kIHQpCiAgICAgKCgoY2xhc3MgY29sb3IpIChtaW4t Y29sb3JzIDE2KSAoYmFja2dyb3VuZCBsaWdodCkpCi0gICAgIDpiYWNrZ3JvdW5kICJsaWdodGdv bGRlbnJvZDIiKQorICAgICA6YmFja2dyb3VuZCAibGlnaHRnb2xkZW5yb2QyIiA6ZXh0ZW5kIHQp CiAgICAgKCgoY2xhc3MgY29sb3IpIChtaW4tY29sb3JzIDgpKQotICAgICA6YmFja2dyb3VuZCAi Ymx1ZSIgOmZvcmVncm91bmQgIndoaXRlIikKKyAgICAgOmJhY2tncm91bmQgImJsdWUiIDpmb3Jl Z3JvdW5kICJ3aGl0ZSIgOmV4dGVuZCB0KQogICAgICgoKHR5cGUgdHR5KSAoY2xhc3MgbW9ubykp CiAgICAgIDppbnZlcnNlLXZpZGVvIHQpCi0gICAgKHQgOmJhY2tncm91bmQgImdyYXkiKSkKKyAg ICAodCA6YmFja2dyb3VuZCAiZ3JheSIgOmV4dGVuZCB0KSkKICAgIkJhc2ljIGZhY2UgZm9yIGhp Z2hsaWdodGluZyB0aGUgcmVnaW9uLiIKICAgOnZlcnNpb24gIjIxLjEiCiAgIDpncm91cCAnYmFz aWMtZmFjZXMpCmRpZmYgLS1naXQgYS9zcmMvZGlzcGV4dGVybi5oIGIvc3JjL2Rpc3BleHRlcm4u aAppbmRleCAwNWYxOTlmZjM1Li5jMTFhM2E3YjU0IDEwMDY0NAotLS0gYS9zcmMvZGlzcGV4dGVy bi5oCisrKyBiL3NyYy9kaXNwZXh0ZXJuLmgKQEAgLTE1NjQsNiArMTU2NCw3IEBAICNkZWZpbmUg Rk9OVF9UT09fSElHSChmdCkJCQkJCQlcCiAgIExGQUNFX0lOSEVSSVRfSU5ERVgsCiAgIExGQUNF X0ZPTlRTRVRfSU5ERVgsCiAgIExGQUNFX0RJU1RBTlRfRk9SRUdST1VORF9JTkRFWCwKKyAgTEZB Q0VfRVhURU5EX0lOREVYLAogICBMRkFDRV9WRUNUT1JfU0laRQogfTsKIApAQCAtMTU4OSw2ICsx NTkwLDcgQEAgI2RlZmluZSBGT05UX1RPT19ISUdIKGZ0KQkJCQkJCVwKIAogZW51bSBmYWNlX3Vu ZGVybGluZV90eXBlCiB7CisgIEZBQ0VfTk9fVU5ERVJMSU5FID0gMCwKICAgRkFDRV9VTkRFUl9M SU5FLAogICBGQUNFX1VOREVSX1dBVkUKIH07CkBAIC0xNjMyLDExICsxNjM0LDkgQEAgI2RlZmlu ZSBGT05UX1RPT19ISUdIKGZ0KQkJCQkJCVwKICAgLyogUGl4ZWwgdmFsdWUgb3IgY29sb3IgaW5k ZXggb2YgYmFja2dyb3VuZCBjb2xvci4gICovCiAgIHVuc2lnbmVkIGxvbmcgYmFja2dyb3VuZDsK IAotICAvKiBQaXhlbCB2YWx1ZSBvciBjb2xvciBpbmRleCBvZiB1bmRlcmxpbmUgY29sb3IuICAq LworICAvKiBQaXhlbCB2YWx1ZSBvciBjb2xvciBpbmRleCBvZiB1bmRlcmxpbmUsIG92ZXJsaW5l ZCwKKyAgICAgc3RyaWtlLXRocm91Z2gsIG9yIGJveCBjb2xvci4gICovCiAgIHVuc2lnbmVkIGxv bmcgdW5kZXJsaW5lX2NvbG9yOwotCi0gIC8qIFBpeGVsIHZhbHVlIG9yIGNvbG9yIGluZGV4IG9m IG92ZXJsaW5lZCwgc3RyaWtlLXRocm91Z2gsIG9yIGJveAotICAgICBjb2xvci4gICovCiAgIHVu c2lnbmVkIGxvbmcgb3ZlcmxpbmVfY29sb3I7CiAgIHVuc2lnbmVkIGxvbmcgc3RyaWtlX3Rocm91 Z2hfY29sb3I7CiAgIHVuc2lnbmVkIGxvbmcgYm94X2NvbG9yOwpAQCAtMTY2Myw3ICsxNjYzLDcg QEAgI2RlZmluZSBGT05UX1RPT19ISUdIKGZ0KQkJCQkJCVwKICAgRU5VTV9CRiAoZmFjZV9ib3hf dHlwZSkgYm94IDogMjsKIAogICAvKiBTdHlsZSBvZiB1bmRlcmxpbmluZy4gKi8KLSAgRU5VTV9C RiAoZmFjZV91bmRlcmxpbmVfdHlwZSkgdW5kZXJsaW5lX3R5cGUgOiAxOworICBFTlVNX0JGIChm YWNlX3VuZGVybGluZV90eXBlKSB1bmRlcmxpbmUgOiAyOwogCiAgIC8qIElmIGBib3gnIGFib3Zl IHNwZWNpZmllcyBhIDNEIHR5cGUsIHRydWUgbWVhbnMgdXNlIGJveF9jb2xvciBmb3IKICAgICAg ZHJhd2luZyBzaGFkb3dzLiAgKi8KQEAgLTE2NzEsNyArMTY3MSw2IEBAICNkZWZpbmUgRk9OVF9U T09fSElHSChmdCkJCQkJCQlcCiAKICAgLyogTm9uLXplcm8gaWYgdGV4dCBpbiB0aGlzIGZhY2Ug c2hvdWxkIGJlIHVuZGVybGluZWQsIG92ZXJsaW5lZCwKICAgICAgc3RyaWtlLXRocm91Z2ggb3Ig aGF2ZSBhIGJveCBkcmF3biBhcm91bmQgaXQuICAqLwotICBib29sX2JmIHVuZGVybGluZV9wIDog MTsKICAgYm9vbF9iZiBvdmVybGluZV9wIDogMTsKICAgYm9vbF9iZiBzdHJpa2VfdGhyb3VnaF9w IDogMTsKIApAQCAtMTY4MSwxNCArMTY4MCwxMCBAQCAjZGVmaW5lIEZPTlRfVE9PX0hJR0goZnQp CQkJCQkJXAogICBib29sX2JmIGZvcmVncm91bmRfZGVmYXVsdGVkX3AgOiAxOwogICBib29sX2Jm IGJhY2tncm91bmRfZGVmYXVsdGVkX3AgOiAxOwogCi0gIC8qIFRydWUgbWVhbnMgdGhhdCBlaXRo ZXIgbm8gY29sb3IgaXMgc3BlY2lmaWVkIGZvciB1bmRlcmxpbmluZyBvciB0aGF0Ci0gICAgIHRo ZSBzcGVjaWZpZWQgY29sb3IgY291bGRuJ3QgYmUgbG9hZGVkLiAgVXNlIHRoZSBmb3JlZ3JvdW5k Ci0gICAgIGNvbG9yIHdoZW4gZHJhd2luZyBpbiB0aGF0IGNhc2UuICovCi0gIGJvb2xfYmYgdW5k ZXJsaW5lX2RlZmF1bHRlZF9wIDogMTsKLQogICAvKiBUcnVlIG1lYW5zIHRoYXQgZWl0aGVyIG5v IGNvbG9yIGlzIHNwZWNpZmllZCBmb3IgdGhlIGNvcnJlc3BvbmRpbmcKICAgICAgYXR0cmlidXRl IG9yIHRoYXQgdGhlIHNwZWNpZmllZCBjb2xvciBjb3VsZG4ndCBiZSBsb2FkZWQuCiAgICAgIFVz ZSB0aGUgZm9yZWdyb3VuZCBjb2xvciB3aGVuIGRyYXdpbmcgaW4gdGhhdCBjYXNlLiAqLworICBi b29sX2JmIHVuZGVybGluZV9kZWZhdWx0ZWRfcCA6IDE7CiAgIGJvb2xfYmYgb3ZlcmxpbmVfY29s b3JfZGVmYXVsdGVkX3AgOiAxOwogICBib29sX2JmIHN0cmlrZV90aHJvdWdoX2NvbG9yX2RlZmF1 bHRlZF9wIDogMTsKICAgYm9vbF9iZiBib3hfY29sb3JfZGVmYXVsdGVkX3AgOiAxOwpAQCAtMTgy Miw2ICsxODE3LDkgQEAgI2RlZmluZSBGQUNFX0ZST01fSURfT1JfTlVMTChGLCBJRCkJCQlcCiAg ICA/IEZSQU1FX0ZBQ0VfQ0FDSEUgKEYpLT5mYWNlc19ieV9pZFtJRF0JCVwKICAgIDogTlVMTCkK IAorI2RlZmluZSBGQUNFX0VYVEVOU0lCTEVfUChGKQkJCVwKKyAgKCFOSUxQIChGLT5sZmFjZVtM RkFDRV9FWFRFTkRfSU5ERVhdKSkKKwogLyogVHJ1ZSBpZiBGQUNFIGlzIHN1aXRhYmxlIGZvciBk aXNwbGF5aW5nIEFTQ0lJIGNoYXJhY3RlcnMuICAqLwogSU5MSU5FIGJvb2wKIEZBQ0VfU1VJVEFC TEVfRk9SX0FTQ0lJX0NIQVJfUCAoc3RydWN0IGZhY2UgKmZhY2UpCkBAIC0yMzI4LDcgKzIzMjYs NyBAQCAjZGVmaW5lIElUX1NUQUNLX1NJWkUgNQogICAvKiBGYWNlIGlkIG9mIHRoZSBpdGVyYXRv ciBzYXZlZCBpbiBjYXNlIGEgZ2x5cGggZnJvbSBkcHZlYyBjb250YWlucwogICAgICBhIGZhY2Uu ICBUaGUgZmFjZSBpcyByZXN0b3JlZCB3aGVuIGFsbCBnbHlwaHMgZnJvbSBkcHZlYyBoYXZlCiAg ICAgIGJlZW4gZGVsaXZlcmVkLiAgKi8KLSAgaW50IHNhdmVkX2ZhY2VfaWQ7CisgIGludCBzYXZl ZF9mYWNlX2lkLCBzYXZlZF9leHRlbmRfZmFjZV9pZDsKIAogICAvKiBWZWN0b3Igb2YgZ2x5cGhz IGZvciBjb250cm9sIGNoYXJhY3RlciB0cmFuc2xhdGlvbi4gIFRoZSBwb2ludGVyCiAgICAgIGRw dmVjIGlzIHNldCB0byBjdGxfY2hhcnMgd2hlbiBhIGNvbnRyb2wgY2hhcmFjdGVyIGlzIHRyYW5z bGF0ZWQuCkBAIC0yMzkwLDcgKzIzODgsNyBAQCAjZGVmaW5lIE9WRVJMQVlfU1RSSU5HX0NIVU5L X1NJWkUgMTYKICAgICBwdHJkaWZmX3QgcHJldl9zdG9wOwogICAgIHB0cmRpZmZfdCBiYXNlX2xl dmVsX3N0b3A7CiAgICAgc3RydWN0IGNvbXBvc2l0aW9uX2l0IGNtcF9pdDsKLSAgICBpbnQgZmFj ZV9pZDsKKyAgICBpbnQgZmFjZV9pZCwgZXh0ZW5kX2ZhY2VfaWQ7CiAKICAgICAvKiBTYXZlIHZh bHVlcyBzcGVjaWZpYyB0byBhIGdpdmVuIG1ldGhvZC4gICovCiAgICAgdW5pb24gewpAQCAtMjQ0 OCw2ICsyNDQ2LDkgQEAgI2RlZmluZSBPVkVSTEFZX1NUUklOR19DSFVOS19TSVpFIDE2CiAgIC8q IEZhY2UgdG8gdXNlLiAgKi8KICAgaW50IGZhY2VfaWQ7CiAKKyAgLyogRmFjZSB0byBleHRlbmQg YXQgRU9MLyAgKi8KKyAgaW50IGV4dGVuZF9mYWNlX2lkOworCiAgIC8qIFNldHRpbmcgb2YgYnVm ZmVyLWxvY2FsIHZhcmlhYmxlIHNlbGVjdGl2ZS1kaXNwbGF5LWVsbGlwc2VzLiAgKi8KICAgYm9v bF9iZiBzZWxlY3RpdmVfZGlzcGxheV9lbGxpcHNpc19wIDogMTsKIApkaWZmIC0tZ2l0IGEvc3Jj L25zdGVybS5tIGIvc3JjL25zdGVybS5tCmluZGV4IDQyZWY0ZGQwMTAuLjk5YjYyMTUzM2EgMTAw NjQ0Ci0tLSBhL3NyYy9uc3Rlcm0ubQorKysgYi9zcmMvbnN0ZXJtLm0KQEAgLTM0MDQsOSArMzQw NCw5IEBAIE5vdGUgdGhhdCBDVVJTT1JfV0lEVEggaXMgbWVhbmluZ2Z1bCBvbmx5IGZvciAoaCli YXIgY3Vyc29ycy4KICAgICByZXR1cm47CiAKICAgLyogRG8gdW5kZXJsaW5lLiAgKi8KLSAgaWYg KGZhY2UtPnVuZGVybGluZV9wKQorICBpZiAoZmFjZS0+dW5kZXJsaW5lKQogICAgIHsKLSAgICAg IGlmIChzLT5mYWNlLT51bmRlcmxpbmVfdHlwZSA9PSBGQUNFX1VOREVSX1dBVkUpCisgICAgICBp ZiAocy0+ZmFjZS0+dW5kZXJsaW5lID09IEZBQ0VfVU5ERVJfV0FWRSkKICAgICAgICAgewogICAg ICAgICAgIGlmIChmYWNlLT51bmRlcmxpbmVfZGVmYXVsdGVkX3ApCiAgICAgICAgICAgICBbZGVm YXVsdENvbCBzZXRdOwpAQCAtMzQxNSwxNSArMzQxNSwxNSBAQCBOb3RlIHRoYXQgQ1VSU09SX1dJ RFRIIGlzIG1lYW5pbmdmdWwgb25seSBmb3IgKGgpYmFyIGN1cnNvcnMuCiAKICAgICAgICAgICBu c19kcmF3X3VuZGVyd2F2ZSAocywgd2lkdGgsIHgpOwogICAgICAgICB9Ci0gICAgICBlbHNlIGlm IChzLT5mYWNlLT51bmRlcmxpbmVfdHlwZSA9PSBGQUNFX1VOREVSX0xJTkUpCisgICAgICBlbHNl IGlmIChzLT5mYWNlLT51bmRlcmxpbmUgPT0gRkFDRV9VTkRFUl9MSU5FKQogICAgICAgICB7CiAK ICAgICAgICAgICBOU1JlY3QgcjsKICAgICAgICAgICB1bnNpZ25lZCBsb25nIHRoaWNrbmVzcywg cG9zaXRpb247CiAKICAgICAgICAgICAvKiBJZiB0aGUgcHJldiB3YXMgdW5kZXJsaW5lZCwgbWF0 Y2ggaXRzIGFwcGVhcmFuY2UuICAqLwotICAgICAgICAgIGlmIChzLT5wcmV2ICYmIHMtPnByZXYt PmZhY2UtPnVuZGVybGluZV9wCi0JICAgICAgJiYgcy0+cHJldi0+ZmFjZS0+dW5kZXJsaW5lX3R5 cGUgPT0gRkFDRV9VTkRFUl9MSU5FCisgICAgICAgICAgaWYgKHMtPnByZXYKKwkgICAgICAmJiBz LT5wcmV2LT5mYWNlLT51bmRlcmxpbmUgPT0gRkFDRV9VTkRFUl9MSU5FCiAgICAgICAgICAgICAg ICYmIHMtPnByZXYtPnVuZGVybGluZV90aGlja25lc3MgPiAwKQogICAgICAgICAgICAgewogICAg ICAgICAgICAgICB0aGlja25lc3MgPSBzLT5wcmV2LT51bmRlcmxpbmVfdGhpY2tuZXNzOwpkaWZm IC0tZ2l0IGEvc3JjL3czMnRlcm0uYyBiL3NyYy93MzJ0ZXJtLmMKaW5kZXggZTU4NzRmMmQzNi4u OTlhMWRiNTc4NCAxMDA2NDQKLS0tIGEvc3JjL3czMnRlcm0uYworKysgYi9zcmMvdzMydGVybS5j CkBAIC0yNDc5LDkgKzI0NzksOSBAQCB3MzJfZHJhd19nbHlwaF9zdHJpbmcgKHN0cnVjdCBnbHlw aF9zdHJpbmcgKnMpCiAgIGlmICghcy0+Zm9yX292ZXJsYXBzKQogICAgIHsKICAgICAgIC8qIERy YXcgdW5kZXJsaW5lLiAgKi8KLSAgICAgIGlmIChzLT5mYWNlLT51bmRlcmxpbmVfcCkKKyAgICAg IGlmIChzLT5mYWNlLT51bmRlcmxpbmUpCiAgICAgICAgIHsKLSAgICAgICAgICBpZiAocy0+ZmFj ZS0+dW5kZXJsaW5lX3R5cGUgPT0gRkFDRV9VTkRFUl9XQVZFKQorICAgICAgICAgIGlmIChzLT5m YWNlLT51bmRlcmxpbmUgPT0gRkFDRV9VTkRFUl9XQVZFKQogICAgICAgICAgICAgewogICAgICAg ICAgICAgICBDT0xPUlJFRiBjb2xvcjsKIApAQCAtMjQ5MiwxMyArMjQ5MiwxMyBAQCB3MzJfZHJh d19nbHlwaF9zdHJpbmcgKHN0cnVjdCBnbHlwaF9zdHJpbmcgKnMpCiAKICAgICAgICAgICAgICAg dzMyX2RyYXdfdW5kZXJ3YXZlIChzLCBjb2xvcik7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg ZWxzZSBpZiAocy0+ZmFjZS0+dW5kZXJsaW5lX3R5cGUgPT0gRkFDRV9VTkRFUl9MSU5FKQorICAg ICAgICAgIGVsc2UgaWYgKHMtPmZhY2UtPnVuZGVybGluZSA9PSBGQUNFX1VOREVSX0xJTkUpCiAg ICAgICAgICAgICB7CiAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdGhpY2tuZXNzLCBwb3Np dGlvbjsKICAgICAgICAgICAgICAgaW50IHk7CiAKLSAgICAgICAgICAgICAgaWYgKHMtPnByZXYg JiYgcy0+cHJldi0+ZmFjZS0+dW5kZXJsaW5lX3AKLQkJICAmJiBzLT5wcmV2LT5mYWNlLT51bmRl cmxpbmVfdHlwZSA9PSBGQUNFX1VOREVSX0xJTkUpCisgICAgICAgICAgICAgIGlmIChzLT5wcmV2 CisJICAgICAgICAgICYmIHMtPnByZXYtPmZhY2UtPnVuZGVybGluZSA9PSBGQUNFX1VOREVSX0xJ TkUpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgLyogV2UgdXNlIHRoZSBz YW1lIHVuZGVybGluZSBzdHlsZSBhcyB0aGUgcHJldmlvdXMgb25lLiAgKi8KICAgICAgICAgICAg ICAgICAgIHRoaWNrbmVzcyA9IHMtPnByZXYtPnVuZGVybGluZV90aGlja25lc3M7CkBAIC0yNTEy LDcgKzI1MTIsNyBAQCB3MzJfZHJhd19nbHlwaF9zdHJpbmcgKHN0cnVjdCBnbHlwaF9zdHJpbmcg KnMpCiAJCSAgQk9PTCB1c2VfdW5kZXJsaW5lX3Bvc2l0aW9uX3Byb3BlcnRpZXM7CiAJCSAgTGlz cF9PYmplY3QgdmFsCiAJCSAgICA9IGJ1ZmZlcl9sb2NhbF92YWx1ZSAoUXVuZGVybGluZV9taW5p bXVtX29mZnNldCwKLQkJCQkJcy0+dy0+Y29udGVudHMpOworCQkgICAgICAgICAgICAgICAgICAg ICAgICAgIHMtPnctPmNvbnRlbnRzKTsKIAkJICBpZiAoRklYTlVNUCAodmFsKSkKIAkJICAgIG1p bmltdW1fb2Zmc2V0ID0gbWF4ICgwLCBYRklYTlVNICh2YWwpKTsKIAkJICBlbHNlCmRpZmYgLS1n aXQgYS9zcmMveGRpc3AuYyBiL3NyYy94ZGlzcC5jCmluZGV4IDk0Zjk2OWYzN2MuLjYyNzMwOTAz ZmQgMTAwNjQ0Ci0tLSBhL3NyYy94ZGlzcC5jCisrKyBiL3NyYy94ZGlzcC5jCkBAIC0zMTIwLDYg KzMxMjAsNyBAQCBpbml0X2l0ZXJhdG9yIChzdHJ1Y3QgaXQgKml0LCBzdHJ1Y3Qgd2luZG93ICp3 LAogICAgICAgc3RydWN0IGZhY2UgKmZhY2U7CiAKICAgICAgIGl0LT5mYWNlX2lkID0gcmVtYXBw ZWRfYmFzZV9mYWNlX2lkOworICAgICAgaXQtPmV4dGVuZF9mYWNlX2lkID0gcmVtYXBwZWRfYmFz ZV9mYWNlX2lkOwogCiAgICAgICAvKiBJZiB3ZSBoYXZlIGEgYm94ZWQgbW9kZSBsaW5lLCBtYWtl IHRoZSBmaXJzdCBjaGFyYWN0ZXIgYXBwZWFyCiAJIHdpdGggYSBsZWZ0IGJveCBsaW5lLiAgKi8K QEAgLTMxNDEsNiArMzE0Miw4IEBAIGluaXRfaXRlcmF0b3IgKHN0cnVjdCBpdCAqaXQsIHN0cnVj dCB3aW5kb3cgKncsCiAgICAgICAvKiBXZSB3aWxsIHJlbHkgb24gYHJlc2VhdCcgdG8gc2V0IHRo aXMgdXAgcHJvcGVybHksIHZpYQogCSBoYW5kbGVfZmFjZV9wcm9wLiAgKi8KICAgICAgIGl0LT5m YWNlX2lkID0gaXQtPmJhc2VfZmFjZV9pZDsKKyAgICAgIGl0LT5leHRlbmRfZmFjZV9pZCA9IGl0 LT5iYXNlX2ZhY2VfaWQ7ICAvLyBFUkdVUzogRklYX1RISVMKKwogCiAgICAgICBpdC0+c3RhcnQg PSBpdC0+Y3VycmVudDsKICAgICAgIC8qIERvIHdlIG5lZWQgdG8gcmVvcmRlciBiaWRpcmVjdGlv bmFsIHRleHQ/ICBOb3QgaWYgdGhpcyBpcyBhCkBAIC0zNTM2LDcgKzM1MzksMTAgQEAgaGFuZGxl X3N0b3AgKHN0cnVjdCBpdCAqaXQpCiAKICAgLyogVXNlIGZhY2Ugb2YgcHJlY2VkaW5nIHRleHQg Zm9yIGVsbGlwc2lzIChpZiBpbnZpc2libGUpICovCiAgIGlmIChpdC0+c2VsZWN0aXZlX2Rpc3Bs YXlfZWxsaXBzaXNfcCkKLSAgICBpdC0+c2F2ZWRfZmFjZV9pZCA9IGl0LT5mYWNlX2lkOworICAg IHsKKyAgICAgIGl0LT5zYXZlZF9mYWNlX2lkID0gaXQtPmZhY2VfaWQ7CisgICAgICBpdC0+c2F2 ZWRfZXh0ZW5kX2ZhY2VfaWQgPSBpdC0+ZXh0ZW5kX2ZhY2VfaWQ7CisgICAgfQogCiAgIC8qIEhl cmUncyB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIHNlbWFudGljcyBvZiwgYW5kIHRoZSBsb2dpYyBi ZWhpbmQsCiAgICAgIHRoZSB2YXJpb3VzIEhBTkRMRURfKiBzdGF0dXNlczoKQEAgLTQxNTQsNyAr NDE2MCwxNSBAQCBoYW5kbGVfZmFjZV9wcm9wIChzdHJ1Y3QgaXQgKml0KQogCSAgaXQtPnN0YXJ0 X29mX2JveF9ydW5fcCA9IChuZXdfZmFjZS0+Ym94ICE9IEZBQ0VfTk9fQk9YCiAJCQkJICAgICYm IChvbGRfZmFjZSA9PSBOVUxMIHx8ICFvbGRfZmFjZS0+Ym94KSk7CiAJICBpdC0+ZmFjZV9ib3hf cCA9IG5ld19mYWNlLT5ib3ggIT0gRkFDRV9OT19CT1g7CisKKwkgIC8qIFVwZGF0ZSB0aGUgZmFj ZXMgaWQgYW5kIGV4dGVuZC4gICovCisJICBpdC0+ZmFjZV9pZCA9IG5ld19mYWNlX2lkOworCisJ ICBpZiAoRkFDRV9FWFRFTlNJQkxFX1AgKG5ld19mYWNlKSkKKwkgICAgaXQtPmV4dGVuZF9mYWNl X2lkID0gbmV3X2ZhY2VfaWQ7CisKIAl9CisKICAgICB9CiAgIGVsc2UKICAgICB7CkBAIC00MjUw LDEzICs0MjY0LDE5IEBAIGhhbmRsZV9mYWNlX3Byb3AgKHN0cnVjdCBpdCAqaXQpCiAJICAvKiBJ ZiBuZXcgZmFjZSBoYXMgYSBib3ggYnV0IG9sZCBmYWNlIGhhc24ndCwgdGhpcyBpcyB0aGUKIAkg ICAgIHN0YXJ0IG9mIGEgcnVuIG9mIGNoYXJhY3RlcnMgd2l0aCBib3gsIGkuZS4gaXQgaGFzIGEK IAkgICAgIHNoYWRvdyBvbiB0aGUgbGVmdCBzaWRlLiAgKi8KLQkgIGl0LT5zdGFydF9vZl9ib3hf cnVuX3AKLQkgICAgPSBuZXdfZmFjZS0+Ym94ICYmIChvbGRfZmFjZSA9PSBOVUxMIHx8ICFvbGRf ZmFjZS0+Ym94KTsKKwkgIGl0LT5zdGFydF9vZl9ib3hfcnVuX3AgPSAobmV3X2ZhY2UtPmJveCAh PSBGQUNFX05PX0JPWAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAob2xkX2ZhY2Ug PT0gTlVMTCB8fCAhb2xkX2ZhY2UtPmJveCkpOwogCSAgaXQtPmZhY2VfYm94X3AgPSBuZXdfZmFj ZS0+Ym94ICE9IEZBQ0VfTk9fQk9YOworCisJICAvKiBVcGRhdGUgdGhlIGZhY2VzIGlkIGFuZCBl eHRlbmQuICAqLworCSAgaXQtPmZhY2VfaWQgPSBuZXdfZmFjZV9pZDsKKworCSAgaWYgKEZBQ0Vf RVhURU5TSUJMRV9QIChuZXdfZmFjZSkpCisJICAgIGl0LT5leHRlbmRfZmFjZV9pZCA9IG5ld19m YWNlX2lkOworCiAJfQogICAgIH0KIAotICBpdC0+ZmFjZV9pZCA9IG5ld19mYWNlX2lkOwogICBy ZXR1cm4gSEFORExFRF9OT1JNQUxMWTsKIH0KIApAQCAtNDg1NCw2ICs0ODc0LDkgQEAgc2V0dXBf Zm9yX2VsbGlwc2lzIChzdHJ1Y3QgaXQgKml0LCBpbnQgbGVuKQogICBpZiAoaXQtPnNhdmVkX2Zh Y2VfaWQgPj0gMCkKICAgICBpdC0+ZmFjZV9pZCA9IGl0LT5zYXZlZF9mYWNlX2lkOwogCisgIGlm IChpdC0+c2F2ZWRfZXh0ZW5kX2ZhY2VfaWQgPj0gMCkKKyAgICBpdC0+ZXh0ZW5kX2ZhY2VfaWQg PSBpdC0+c2F2ZWRfZXh0ZW5kX2ZhY2VfaWQ7CisKICAgLyogSWYgdGhlIGVsbGlwc2lzIHJlcHJl c2VudHMgYnVmZmVyIHRleHQsIGl0IG1lYW5zIHdlIGFkdmFuY2VkIGluCiAgICAgIHRoZSBidWZm ZXIsIHNvIHdlIHNob3VsZCBubyBsb25nZXIgaWdub3JlIG92ZXJsYXkgc3RyaW5ncy4gICovCiAg IGlmIChpdC0+bWV0aG9kID09IEdFVF9GUk9NX0JVRkZFUikKQEAgLTUwNjMsNyArNTA4Niw4IEBA IGRpc3BsYXlfcHJvcF9lbmQgKHN0cnVjdCBpdCAqaXQsIExpc3BfT2JqZWN0IG9iamVjdCwgc3Ry dWN0IHRleHRfcG9zIHN0YXJ0X3BvcykKICAgIG9mIGJ1ZmZlciBvciBzdHJpbmcgdGV4dC4gICov CiAKIHN0YXRpYyBpbnQKLWhhbmRsZV9zaW5nbGVfZGlzcGxheV9zcGVjIChzdHJ1Y3QgaXQgKml0 LCBMaXNwX09iamVjdCBzcGVjLCBMaXNwX09iamVjdCBvYmplY3QsCitoYW5kbGVfc2luZ2xlX2Rp c3BsYXlfc3BlYyAoc3RydWN0IGl0ICppdCwgTGlzcF9PYmplY3Qgc3BlYywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMaXNwX09iamVjdCBvYmplY3QsCiAJCQkgICAgTGlzcF9PYmplY3Qg b3ZlcmxheSwgc3RydWN0IHRleHRfcG9zICpwb3NpdGlvbiwKIAkJCSAgICBwdHJkaWZmX3QgYnVm cG9zLCBpbnQgZGlzcGxheV9yZXBsYWNlZCwKIAkJCSAgICBib29sIGZyYW1lX3dpbmRvd19wLCBi b29sIGVuYWJsZV9ldmFsX3ApCkBAIC01MTM3LDcgKzUxNjEsMTEgQEAgaGFuZGxlX3NpbmdsZV9k aXNwbGF5X3NwZWMgKHN0cnVjdCBpdCAqaXQsIExpc3BfT2JqZWN0IHNwZWMsIExpc3BfT2JqZWN0 IG9iamVjdCwKIAkJICBpbnQgc3RlcHMgPSBYRklYTlVNIChYQ0FSIChYQ0RSIChpdC0+Zm9udF9o ZWlnaHQpKSk7CiAJCSAgaWYgKEVRIChYQ0FSIChpdC0+Zm9udF9oZWlnaHQpLCBRcGx1cykpCiAJ CSAgICBzdGVwcyA9IC0gc3RlcHM7CisKIAkJICBpdC0+ZmFjZV9pZCA9IHNtYWxsZXJfZmFjZSAo aXQtPmYsIGl0LT5mYWNlX2lkLCBzdGVwcyk7CisJCSAgaXQtPmV4dGVuZF9mYWNlX2lkCisJCSAg ICA9IHNtYWxsZXJfZmFjZSAoaXQtPmYsIGl0LT5leHRlbmRfZmFjZV9pZCwgc3RlcHMpOworCiAJ CX0KIAkgICAgICBlbHNlIGlmIChGVU5DVElPTlAgKGl0LT5mb250X2hlaWdodCkgJiYgZW5hYmxl X2V2YWxfcCkKIAkJewpAQCAtNTE4MCw3ICs1MjA4LDEyIEBAIGhhbmRsZV9zaW5nbGVfZGlzcGxh eV9zcGVjIChzdHJ1Y3QgaXQgKml0LCBMaXNwX09iamVjdCBzcGVjLCBMaXNwX09iamVjdCBvYmpl Y3QsCiAJCX0KIAogCSAgICAgIGlmIChuZXdfaGVpZ2h0ID4gMCkKLQkJaXQtPmZhY2VfaWQgPSBm YWNlX3dpdGhfaGVpZ2h0IChpdC0+ZiwgaXQtPmZhY2VfaWQsIG5ld19oZWlnaHQpOworCQl7CisJ CSAgaXQtPmZhY2VfaWQKKwkJICAgID0gZmFjZV93aXRoX2hlaWdodCAoaXQtPmYsIGl0LT5mYWNl X2lkLCBuZXdfaGVpZ2h0KTsKKwkJICBpdC0+ZXh0ZW5kX2ZhY2VfaWQKKwkJICAgID0gZmFjZV93 aXRoX2hlaWdodCAoaXQtPmYsIGl0LT5leHRlbmRfZmFjZV9pZCwgbmV3X2hlaWdodCk7CisJCX0K IAkgICAgfQogCX0KIApAQCAtNTM3MCw2ICs1NDAzLDcgQEAgaGFuZGxlX3NpbmdsZV9kaXNwbGF5 X3NwZWMgKHN0cnVjdCBpdCAqaXQsIExpc3BfT2JqZWN0IHNwZWMsIExpc3BfT2JqZWN0IG9iamVj dCwKIAkgIGl0LT5tZXRob2QgPSBHRVRfRlJPTV9JTUFHRTsKIAkgIGl0LT5mcm9tX292ZXJsYXkg PSBRbmlsOwogCSAgaXQtPmZhY2VfaWQgPSBmYWNlX2lkOworCSAgaXQtPmV4dGVuZF9mYWNlX2lk ID0gZmFjZV9pZDsgLy8gRVJHVVM6IEZJWF9USElTCiAJICBpdC0+ZnJvbV9kaXNwX3Byb3BfcCA9 IHRydWU7CiAKIAkgIC8qIFNheSB0aGF0IHdlIGhhdmVuJ3QgY29uc3VtZWQgdGhlIGNoYXJhY3Rl cnMgd2l0aApAQCAtNjI2Myw2ICs2Mjk3LDcgQEAgcHVzaF9pdCAoc3RydWN0IGl0ICppdCwgc3Ry dWN0IHRleHRfcG9zICpwb3NpdGlvbikKICAgcC0+Y21wX2l0ID0gaXQtPmNtcF9pdDsKICAgZWFz c2VydCAoaXQtPmZhY2VfaWQgPj0gMCk7CiAgIHAtPmZhY2VfaWQgPSBpdC0+ZmFjZV9pZDsKKyAg cC0+ZXh0ZW5kX2ZhY2VfaWQgPSBpdC0+ZXh0ZW5kX2ZhY2VfaWQ7CiAgIHAtPnN0cmluZyA9IGl0 LT5zdHJpbmc7CiAgIHAtPm1ldGhvZCA9IGl0LT5tZXRob2Q7CiAgIHAtPmZyb21fb3ZlcmxheSA9 IGl0LT5mcm9tX292ZXJsYXk7CkBAIC02MzY2LDYgKzY0MDEsNyBAQCBwb3BfaXQgKHN0cnVjdCBp dCAqaXQpCiAgIGl0LT5iYXNlX2xldmVsX3N0b3AgPSBwLT5iYXNlX2xldmVsX3N0b3A7CiAgIGl0 LT5jbXBfaXQgPSBwLT5jbXBfaXQ7CiAgIGl0LT5mYWNlX2lkID0gcC0+ZmFjZV9pZDsKKyAgaXQt PmV4dGVuZF9mYWNlX2lkID0gcC0+ZXh0ZW5kX2ZhY2VfaWQ7CiAgIGl0LT5jdXJyZW50ID0gcC0+ Y3VycmVudDsKICAgaXQtPnBvc2l0aW9uID0gcC0+cG9zaXRpb247CiAgIGl0LT5zdHJpbmcgPSBw LT5zdHJpbmc7CkBAIC03MTQyLDE3ICs3MTc4LDMyIEBAIGxvb2t1cF9nbHlwaGxlc3NfY2hhcl9k aXNwbGF5IChpbnQgYywgc3RydWN0IGl0ICppdCkKIAogLyogTWVyZ2UgZXNjYXBlIGdseXBoIGZh Y2UgYW5kIGNhY2hlIHRoZSByZXN1bHQuICAqLwogCitzdGF0aWMgaW50CittZXJnZV9leHRlbmRf Z2x5cGhfZmFjZSAoc3RydWN0IGl0ICppdCwgaW50IGxmYWNlX2lkKQoreworCisgIHN0cnVjdCBm YWNlICpsZmFjZSA9IEZBQ0VfRlJPTV9JRCAoaXQtPmYsIGxmYWNlX2lkKTsKKworICBpZiAobGZh Y2UgJiYgRkFDRV9FWFRFTlNJQkxFX1AgKGxmYWNlKSkKKyAgICByZXR1cm4gbWVyZ2VfZmFjZXMg KGl0LT53LCBRdCwgbGZhY2VfaWQsIGl0LT5leHRlbmRfZmFjZV9pZCk7CisKKyAgcmV0dXJuIGl0 LT5leHRlbmRfZmFjZV9pZDsKK30KKworLyogTWVyZ2UgZXNjYXBlIGdseXBoIGZhY2UgYW5kIGNh Y2hlIHRoZSByZXN1bHQuICAqLwogc3RhdGljIHN0cnVjdCBmcmFtZSAqbGFzdF9lc2NhcGVfZ2x5 cGhfZnJhbWUgPSBOVUxMOwogc3RhdGljIGludCBsYXN0X2VzY2FwZV9nbHlwaF9mYWNlX2lkID0g KDEgPDwgRkFDRV9JRF9CSVRTKTsKIHN0YXRpYyBpbnQgbGFzdF9lc2NhcGVfZ2x5cGhfbWVyZ2Vk X2ZhY2VfaWQgPSAwOwogCiBzdGF0aWMgaW50Ci1tZXJnZV9lc2NhcGVfZ2x5cGhfZmFjZSAoc3Ry dWN0IGl0ICppdCkKK21lcmdlX2VzY2FwZV9nbHlwaF9mYWNlIChzdHJ1Y3QgaXQgKml0LCBpbnQg bGZhY2VfaWQpCiB7CiAgIGludCBmYWNlX2lkOwogCi0gIGlmIChpdC0+ZiA9PSBsYXN0X2VzY2Fw ZV9nbHlwaF9mcmFtZQotICAgICAgJiYgaXQtPmZhY2VfaWQgPT0gbGFzdF9lc2NhcGVfZ2x5cGhf ZmFjZV9pZCkKKyAgaWYgKGxmYWNlX2lkKQorICAgIGZhY2VfaWQgPSBtZXJnZV9mYWNlcyAoaXQt PncsIFF0LCBsZmFjZV9pZCwgaXQtPmZhY2VfaWQpOworICBlbHNlIGlmIChpdC0+ZiA9PSBsYXN0 X2VzY2FwZV9nbHlwaF9mcmFtZQorICAgICAgICAgICAmJiBpdC0+ZmFjZV9pZCA9PSBsYXN0X2Vz Y2FwZV9nbHlwaF9mYWNlX2lkKQogICAgIGZhY2VfaWQgPSBsYXN0X2VzY2FwZV9nbHlwaF9tZXJn ZWRfZmFjZV9pZDsKICAgZWxzZQogICAgIHsKQEAgLTcxNjIsNiArNzIxMyw3IEBAIG1lcmdlX2Vz Y2FwZV9nbHlwaF9mYWNlIChzdHJ1Y3QgaXQgKml0KQogICAgICAgbGFzdF9lc2NhcGVfZ2x5cGhf ZmFjZV9pZCA9IGl0LT5mYWNlX2lkOwogICAgICAgbGFzdF9lc2NhcGVfZ2x5cGhfbWVyZ2VkX2Zh Y2VfaWQgPSBmYWNlX2lkOwogICAgIH0KKwogICByZXR1cm4gZmFjZV9pZDsKIH0KIApAQCAtNzE5 MCw2ICs3MjQyLDcgQEAgbWVyZ2VfZ2x5cGhsZXNzX2dseXBoX2ZhY2UgKHN0cnVjdCBpdCAqaXQp CiAgIHJldHVybiBmYWNlX2lkOwogfQogCisKIC8qIEZvcmdldCB0aGUgYGVzY2FwZS1nbHlwaCcg YW5kIGBnbHlwaGxlc3MtY2hhcicgZmFjZXMuICBUaGlzIHNob3VsZAogICAgYmUgY2FsbGVkIGJl Zm9yZSByZWRpc3BsYXlpbmcgd2luZG93cywgYW5kIHdoZW4gdGhlIGZyYW1lJ3MgZmFjZQogICAg Y2FjaGUgaXMgZnJlZWQuICAqLwpAQCAtNzI3NSw2ICs3MzI4LDcgQEAgZ2V0X25leHRfZGlzcGxh eV9lbGVtZW50IChzdHJ1Y3QgaXQgKml0KQogCQkgIGl0LT5jdXJyZW50LmRwdmVjX2luZGV4ID0g MDsKIAkJICBpdC0+ZHB2ZWNfZmFjZV9pZCA9IC0xOwogCQkgIGl0LT5zYXZlZF9mYWNlX2lkID0g aXQtPmZhY2VfaWQ7CisJCSAgaXQtPnNhdmVkX2V4dGVuZF9mYWNlX2lkID0gaXQtPmV4dGVuZF9m YWNlX2lkOwogCQkgIGl0LT5tZXRob2QgPSBHRVRfRlJPTV9ESVNQTEFZX1ZFQ1RPUjsKIAkJICBp dC0+ZWxsaXBzaXNfcCA9IGZhbHNlOwogCQl9CkBAIC03MzU1LDkgKzc0MDksNyBAQCBnZXRfbmV4 dF9kaXNwbGF5X2VsZW1lbnQgKHN0cnVjdCBpdCAqaXQpCiAJCSAgICAgIGxmYWNlX2lkID0gR0xZ UEhfQ09ERV9GQUNFIChnYyk7CiAJCSAgICB9CiAKLQkJICBmYWNlX2lkID0gKGxmYWNlX2lkCi0J CQkgICAgID8gbWVyZ2VfZmFjZXMgKGl0LT53LCBRdCwgbGZhY2VfaWQsIGl0LT5mYWNlX2lkKQot CQkJICAgICA6IG1lcmdlX2VzY2FwZV9nbHlwaF9mYWNlIChpdCkpOworCQkgIGZhY2VfaWQgPSBt ZXJnZV9lc2NhcGVfZ2x5cGhfZmFjZSAoaXQsIGxmYWNlX2lkKTsKIAogCQkgIFhTRVRJTlQgKGl0 LT5jdGxfY2hhcnNbMF0sIGcpOwogCQkgIFhTRVRJTlQgKGl0LT5jdGxfY2hhcnNbMV0sIGMgXiAw MTAwKTsKQEAgLTczNzMsNiArNzQyNSw3IEBAIGdldF9uZXh0X2Rpc3BsYXlfZWxlbWVudCAoc3Ry dWN0IGl0ICppdCkKIAkJICAvKiBNZXJnZSBgbm9icmVhay1zcGFjZScgaW50byB0aGUgY3VycmVu dCBmYWNlLiAgKi8KIAkJICBmYWNlX2lkID0gbWVyZ2VfZmFjZXMgKGl0LT53LCBRbm9icmVha19z cGFjZSwgMCwKIAkJCQkJIGl0LT5mYWNlX2lkKTsKKwogCQkgIFhTRVRJTlQgKGl0LT5jdGxfY2hh cnNbMF0sICcgJyk7CiAJCSAgY3RsX2xlbiA9IDE7CiAJCSAgZ290byBkaXNwbGF5X2NvbnRyb2w7 CkBAIC03Mzg1LDcgKzc0MzgsOCBAQCBnZXRfbmV4dF9kaXNwbGF5X2VsZW1lbnQgKHN0cnVjdCBp dCAqaXQpCiAJCXsKIAkJICAvKiBNZXJnZSBgbm9icmVhay1zcGFjZScgaW50byB0aGUgY3VycmVu dCBmYWNlLiAgKi8KIAkJICBmYWNlX2lkID0gbWVyZ2VfZmFjZXMgKGl0LT53LCBRbm9icmVha19o eXBoZW4sIDAsCi0JCQkJCSBpdC0+ZmFjZV9pZCk7CisJCSAgICAgICAgICAgICAgICAgICAgICAg ICBpdC0+ZmFjZV9pZCk7CisKIAkJICBYU0VUSU5UIChpdC0+Y3RsX2NoYXJzWzBdLCAnLScpOwog CQkgIGN0bF9sZW4gPSAxOwogCQkgIGdvdG8gZGlzcGxheV9jb250cm9sOwpAQCAtNzQwMywxMiAr NzQ1Nyw5IEBAIGdldF9uZXh0X2Rpc3BsYXlfZWxlbWVudCAoc3RydWN0IGl0ICppdCkKIAkJICBs ZmFjZV9pZCA9IEdMWVBIX0NPREVfRkFDRSAoZ2MpOwogCQl9CiAKLQkgICAgICBmYWNlX2lkID0g KGxmYWNlX2lkCi0JCQkgPyBtZXJnZV9mYWNlcyAoaXQtPncsIFF0LCBsZmFjZV9pZCwgaXQtPmZh Y2VfaWQpCi0JCQkgOiBtZXJnZV9lc2NhcGVfZ2x5cGhfZmFjZSAoaXQpKTsKKwkgICAgICBmYWNl X2lkID0gbWVyZ2VfZXNjYXBlX2dseXBoX2ZhY2UgKGl0LCBsZmFjZV9pZCk7CiAKIAkgICAgICAv KiBEcmF3IG5vbi1BU0NJSSBzcGFjZS9oeXBoZW4gd2l0aCBlc2NhcGUgZ2x5cGg6ICovCi0KIAkg ICAgICBpZiAobm9uYXNjaWlfc3BhY2VfcCB8fCBub25hc2NpaV9oeXBoZW5fcCkKIAkJewogCQkg IFhTRVRJTlQgKGl0LT5jdGxfY2hhcnNbMF0sIGVzY2FwZV9nbHlwaCk7CkBAIC03NDQzLDYgKzc0 OTQsNyBAQCBnZXRfbmV4dF9kaXNwbGF5X2VsZW1lbnQgKHN0cnVjdCBpdCAqaXQpCiAJICAgICAg aXQtPmN1cnJlbnQuZHB2ZWNfaW5kZXggPSAwOwogCSAgICAgIGl0LT5kcHZlY19mYWNlX2lkID0g ZmFjZV9pZDsKIAkgICAgICBpdC0+c2F2ZWRfZmFjZV9pZCA9IGl0LT5mYWNlX2lkOworCSAgICAg IGl0LT5zYXZlZF9leHRlbmRfZmFjZV9pZCA9IGl0LT5leHRlbmRfZmFjZV9pZDsKIAkgICAgICBp dC0+bWV0aG9kID0gR0VUX0ZST01fRElTUExBWV9WRUNUT1I7CiAJICAgICAgaXQtPmVsbGlwc2lz X3AgPSBmYWxzZTsKIAkgICAgICBnb3RvIGdldF9uZXh0OwpAQCAtNzc3OCw2ICs3ODMwLDcgQEAg c2V0X2l0ZXJhdG9yX3RvX25leHQgKHN0cnVjdCBpdCAqaXQsIGJvb2wgcmVzZWF0X3ApCiAgICAg ICAvKiBSZXN0b3JlIGZhY2Ugb2YgdGhlIGl0ZXJhdG9yIHRvIHdoYXQgdGhleSB3ZXJlIGJlZm9y ZSB0aGUKICAgICAgICAgIGRpc3BsYXkgdmVjdG9yIGVudHJ5ICh0aGVzZSBlbnRyaWVzIG1heSBj b250YWluIGZhY2VzKS4gICovCiAgICAgICBpdC0+ZmFjZV9pZCA9IGl0LT5zYXZlZF9mYWNlX2lk OworICAgICAgaXQtPmV4dGVuZF9mYWNlX2lkID0gaXQtPnNhdmVkX2V4dGVuZF9mYWNlX2lkOwog CiAgICAgICBpZiAoaXQtPmRwdmVjICsgaXQtPmN1cnJlbnQuZHB2ZWNfaW5kZXggPj0gaXQtPmRw ZW5kKQogCXsKQEAgLTgwMTIsNiArODA2NSw3IEBAIG5leHRfZWxlbWVudF9mcm9tX2Rpc3BsYXlf dmVjdG9yIChzdHJ1Y3QgaXQgKml0KQogICBlYXNzZXJ0IChpdC0+ZHB2ZWMgJiYgaXQtPmN1cnJl bnQuZHB2ZWNfaW5kZXggPj0gMCk7CiAKICAgaXQtPmZhY2VfaWQgPSBpdC0+c2F2ZWRfZmFjZV9p ZDsKKyAgaXQtPmV4dGVuZF9mYWNlX2lkID0gaXQtPnNhdmVkX2V4dGVuZF9mYWNlX2lkOwogCiAg IC8qIEtGUzogVGhpcyBjb2RlIHVzZWQgdG8gY2hlY2sgaXAtPmRwdmVjWzBdIGluc3RlYWQgb2Yg dGhlIGN1cnJlbnQgZWxlbWVudC4KICAgICAgVGhhdCBzZWVtZWQgdG90YWxseSBib2d1cyAtIHNv IEkgY2hhbmdlZCBpdC4uLiAgKi8KQEAgLTgwMjcsMTMgKzgwODEsMjEgQEAgbmV4dF9lbGVtZW50 X2Zyb21fZGlzcGxheV92ZWN0b3IgKHN0cnVjdCBpdCAqaXQpCiAJIHRoZSBpZCBvZiBhIExpc3Ag ZmFjZSwgbm90IGEgcmVhbGl6ZWQgZmFjZS4gIEEgZmFjZSBpZCBvZgogCSB6ZXJvIG1lYW5zIG5v IGZhY2UgaXMgc3BlY2lmaWVkLiAgKi8KICAgICAgIGlmIChpdC0+ZHB2ZWNfZmFjZV9pZCA+PSAw KQotCWl0LT5mYWNlX2lkID0gaXQtPmRwdmVjX2ZhY2VfaWQ7CisJeworCSAgaXQtPmZhY2VfaWQg PSBpdC0+ZHB2ZWNfZmFjZV9pZDsKKwkgIGl0LT5leHRlbmRfZmFjZV9pZCA9IGl0LT5kcHZlY19m YWNlX2lkOyAvLyBFUkdVUzogRklYX1RISVMKKwl9CiAgICAgICBlbHNlCiAJewogCSAgaW50IGxm YWNlX2lkID0gR0xZUEhfQ09ERV9GQUNFIChnYyk7CiAJICBpZiAobGZhY2VfaWQgPiAwKQotCSAg ICBpdC0+ZmFjZV9pZCA9IG1lcmdlX2ZhY2VzIChpdC0+dywgUXQsIGxmYWNlX2lkLAotCQkJCSAg ICAgICBpdC0+c2F2ZWRfZmFjZV9pZCk7CisJICAgIHsKKwkgICAgICBpdC0+ZmFjZV9pZCA9IG1l cmdlX2ZhY2VzIChpdC0+dywgUXQsIGxmYWNlX2lkLAorCSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGl0LT5zYXZlZF9mYWNlX2lkKTsKKworCSAgICAgIGl0LT5leHRlbmRfZmFjZV9p ZCA9CisJCW1lcmdlX2V4dGVuZF9nbHlwaF9mYWNlIChpdCwgbGZhY2VfaWQpOworCSAgICB9CiAJ fQogCiAgICAgICAvKiBHbHlwaHMgaW4gdGhlIGRpc3BsYXkgdmVjdG9yIGNvdWxkIGhhdmUgdGhl IGJveCBmYWNlLCBzbyB3ZQpAQCAtODA2MSw4ICs4MTIzLDEyIEBAIG5leHRfZWxlbWVudF9mcm9t X2Rpc3BsYXlfdmVjdG9yIChzdHJ1Y3QgaXQgKml0KQogCQlHTFlQSF9DT0RFX0ZBQ0UgKGl0LT5k cHZlY1tpdC0+Y3VycmVudC5kcHZlY19pbmRleCArIDFdKTsKIAogCSAgICAgIGlmIChsZmFjZV9p ZCA+IDApCi0JCW5leHRfZmFjZV9pZCA9IG1lcmdlX2ZhY2VzIChpdC0+dywgUXQsIGxmYWNlX2lk LAotCQkJCQkgICAgaXQtPnNhdmVkX2ZhY2VfaWQpOworCQl7CisJCSAgbmV4dF9mYWNlX2lkID0g bWVyZ2VfZmFjZXMgKGl0LT53LCBRdCwgbGZhY2VfaWQsCisJCSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGl0LT5zYXZlZF9mYWNlX2lkKTsKKwkJICBpdC0+ZXh0ZW5kX2ZhY2VfaWQgPQor CQkgICAgbWVyZ2VfZXh0ZW5kX2dseXBoX2ZhY2UgKGl0LCBsZmFjZV9pZCk7CisJCX0KIAkgICAg fQogCX0KICAgICAgIG5leHRfZmFjZSA9IEZBQ0VfRlJPTV9JRF9PUl9OVUxMIChpdC0+ZiwgbmV4 dF9mYWNlX2lkKTsKQEAgLTg0MTEsNiArODQ3Nyw3IEBAIG5leHRfZWxlbWVudF9mcm9tX2VsbGlw c2lzIChzdHJ1Y3QgaXQgKml0KQogCSB3YXMgaW4gSVQtPnNhdmVkX2ZhY2VfaWQsIGFuZCBzaWdu YWwgdGhhdCBpdCdzIHRoZXJlIGJ5CiAJIHNldHRpbmcgZmFjZV9iZWZvcmVfc2VsZWN0aXZlX3Au ICAqLwogICAgICAgaXQtPnNhdmVkX2ZhY2VfaWQgPSBpdC0+ZmFjZV9pZDsKKyAgICAgIGl0LT5z YXZlZF9leHRlbmRfZmFjZV9pZCA9IGl0LT5leHRlbmRfZmFjZV9pZDsKICAgICAgIGl0LT5tZXRo b2QgPSBHRVRfRlJPTV9CVUZGRVI7CiAgICAgICBpdC0+b2JqZWN0ID0gaXQtPnctPmNvbnRlbnRz OwogICAgICAgcmVzZWF0X2F0X25leHRfdmlzaWJsZV9saW5lX3N0YXJ0IChpdCwgdHJ1ZSk7CkBA IC0xMjg0OCw3ICsxMjkxNSwxMCBAQCBkaXNwbGF5X3Rvb2xfYmFyX2xpbmUgKHN0cnVjdCBpdCAq aXQsIGludCBoZWlnaHQpCiAgICAgIHVzZSB0aGUgdG9vbC1iYXIgZmFjZSBmb3IgdGhlIGJvcmRl ciB0b28uICAqLwogICBpZiAoIU1BVFJJWF9ST1dfRElTUExBWVNfVEVYVF9QIChyb3cpCiAgICAg ICAmJiAhRVEgKFZhdXRvX3Jlc2l6ZV90b29sX2JhcnMsIFFncm93X29ubHkpKQotICAgIGl0LT5m YWNlX2lkID0gREVGQVVMVF9GQUNFX0lEOworICAgIHsKKyAgICAgIGl0LT5mYWNlX2lkID0gREVG QVVMVF9GQUNFX0lEOworICAgICAgaXQtPmV4dGVuZF9mYWNlX2lkID0gREVGQVVMVF9GQUNFX0lE OworICAgIH0KIAogICBleHRlbmRfZmFjZV90b19lbmRfb2ZfbGluZSAoaXQpOwogICBsYXN0ID0g cm93LT5nbHlwaHNbVEVYVF9BUkVBXSArIHJvdy0+dXNlZFtURVhUX0FSRUFdIC0gMTsKQEAgLTIw MzAxLDcgKzIwMzcxLDcgQEAgYXBwZW5kX3NwYWNlX2Zvcl9uZXdsaW5lIChzdHJ1Y3QgaXQgKml0 LCBib29sIGRlZmF1bHRfZmFjZV9wKQogCiAJICAvKiBDb3JuZXIgY2FzZSBmb3Igd2hlbiBkaXNw bGF5LWZpbGwtY29sdW1uLWluZGljYXRvci1tb2RlCiAJICAgICBpcyBhY3RpdmUgYW5kIHRoZSBl eHRyYSBjaGFyYWN0ZXIgc2hvdWxkIGJlIGFkZGVkIGluIHRoZQotCSAgICAgc2FtZSBwbGFjZSB0 aGFuIHRoZSBsaW5lLiAgKi8KKwkgICAgIHNhbWUgcGxhY2UgdGhhbiB0aGUgc3BhY2UuICAqLwog CSAgaW50IGluZGljYXRvcl9jb2x1bW4gPSAoaXQtPnctPnBzZXVkb193aW5kb3dfcCA9PSAwCiAJ CQkJICA/IGZpbGxfY29sdW1uX2luZGljYXRvcl9jb2x1bW4gKGl0KQogCQkJCSAgOiAtMSk7CkBA IC0yMDMyNSw3ICsyMDM5NSw3IEBAIGFwcGVuZF9zcGFjZV9mb3JfbmV3bGluZSAoc3RydWN0IGl0 ICppdCwgYm9vbCBkZWZhdWx0X2ZhY2VfcCkKIAkJICAgICA9IFhGSVhOQVQgKFZkaXNwbGF5X2Zp bGxfY29sdW1uX2luZGljYXRvcl9jaGFyYWN0ZXIpOwogCSAgICAgICAgICAgaXQtPmZhY2VfaWQK IAkJICAgICA9IG1lcmdlX2ZhY2VzIChpdC0+dywgUWZpbGxfY29sdW1uX2luZGljYXRvciwKLQkJ CQkgICAgMCwgc2F2ZWRfZmFjZV9pZCk7CisJCSAgICAgICAgICAgICAgICAgICAgMCwgaXQtPmZh Y2VfaWQpOwogCSAgICAgICAgICAgZmFjZSA9IEZBQ0VfRlJPTV9JRCAoaXQtPmYsIGl0LT5mYWNl X2lkKTsKIAkgICAgICAgICAgIGdvdG8gcHJvZHVjZV9nbHlwaHM7CiAJICAgICAgICAgfQpAQCAt MjAzMzcsNyArMjA0MDcsNyBAQCBhcHBlbmRfc3BhY2VfZm9yX25ld2xpbmUgKHN0cnVjdCBpdCAq aXQsIGJvb2wgZGVmYXVsdF9mYWNlX3ApCiAJICBpZiAoZGVmYXVsdF9mYWNlX3ApCiAJICAgIGl0 LT5mYWNlX2lkID0gbG9jYWxfZGVmYXVsdF9mYWNlX2lkOwogCSAgZWxzZSBpZiAoaXQtPmZhY2Vf YmVmb3JlX3NlbGVjdGl2ZV9wKQotCSAgICBpdC0+ZmFjZV9pZCA9IGl0LT5zYXZlZF9mYWNlX2lk OworCSAgICBpdC0+ZmFjZV9pZCA9IGl0LT5mYWNlX2lkOwogCiAJICBmYWNlID0gRkFDRV9GUk9N X0lEIChpdC0+ZiwgaXQtPmZhY2VfaWQpOwogCSAgaXQtPmZhY2VfaWQgPSBGQUNFX0ZPUl9DSEFS IChpdC0+ZiwgZmFjZSwgMCwgLTEsIFFuaWwpOwpAQCAtMjA0NzIsMzMgKzIwNTQyLDM1IEBAIGV4 dGVuZF9mYWNlX3RvX2VuZF9vZl9saW5lIChzdHJ1Y3QgaXQgKml0KQogICAgICAxLWBgcGl4ZWwn JyB3aWRlLCBzbyB0aGV5IGhpdCB0aGUgZXF1YWxpdHkgdG9vIGVhcmx5LiAgVGhpcyBncmFjZQog ICAgICBpcyBuZWVkZWQgb25seSBmb3IgUjJMIHJvd3MgdGhhdCBhcmUgbm90IGNvbnRpbnVlZCwg dG8gcHJvZHVjZQogICAgICBvbmUgZXh0cmEgYmxhbmsgd2hlcmUgd2UgY291bGQgZGlzcGxheSB0 aGUgY3Vyc29yLiAgKi8KLSAgaWYgKChpdC0+Y3VycmVudF94ID49IGl0LT5sYXN0X3Zpc2libGVf eAotICAgICAgICsgKCFGUkFNRV9XSU5ET1dfUCAoZikKLQkgICYmIGl0LT5nbHlwaF9yb3ctPnJl dmVyc2VkX3AKLQkgICYmICFpdC0+Z2x5cGhfcm93LT5jb250aW51ZWRfcCkpCi0gICAgICAvKiBJ ZiB0aGUgd2luZG93IGhhcyBkaXNwbGF5IG1hcmdpbnMsIHdlIHdpbGwgbmVlZCB0byBleHRlbmQK LQkgdGhlaXIgZmFjZSBldmVuIGlmIHRoZSB0ZXh0IGFyZWEgaXMgZmlsbGVkLiAgKi8KLSAgICAg ICYmICEoV0lORE9XX0xFRlRfTUFSR0lOX1dJRFRIIChpdC0+dykgPiAwCi0JICAgfHwgV0lORE9X X1JJR0hUX01BUkdJTl9XSURUSCAoaXQtPncpID4gMCkpCi0gICAgcmV0dXJuOwotCi0gIC8qIEZh Y2UgZXh0ZW5zaW9uIGV4dGVuZHMgdGhlIGJhY2tncm91bmQgYW5kIGJveCBvZiBJVC0+ZmFjZV9p ZAotICAgICB0byB0aGUgZW5kIG9mIHRoZSBsaW5lLiAgSWYgdGhlIGJhY2tncm91bmQgZXF1YWxz IHRoZSBiYWNrZ3JvdW5kCi0gICAgIG9mIHRoZSBmcmFtZSwgd2UgZG9uJ3QgaGF2ZSB0byBkbyBh bnl0aGluZy4gICovCi0gIGZhY2UgPSBGQUNFX0ZST01fSUQgKGYsIChpdC0+ZmFjZV9iZWZvcmVf c2VsZWN0aXZlX3AKLQkJCSAgID8gaXQtPnNhdmVkX2ZhY2VfaWQKLQkJCSAgIDogaXQtPmZhY2Vf aWQpKTsKLQotICBpZiAoRlJBTUVfV0lORE9XX1AgKGYpCi0gICAgICAmJiBNQVRSSVhfUk9XX0RJ U1BMQVlTX1RFWFRfUCAoaXQtPmdseXBoX3JvdykKLSAgICAgICYmIGZhY2UtPmJveCA9PSBGQUNF X05PX0JPWAotICAgICAgJiYgRkFDRV9DT0xPUl9UT19QSVhFTCAoZmFjZS0+YmFja2dyb3VuZCwg ZikgPT0gRlJBTUVfQkFDS0dST1VORF9QSVhFTCAoZikKLSNpZmRlZiBIQVZFX1dJTkRPV19TWVNU RU0KLSAgICAgICYmICFmYWNlLT5zdGlwcGxlCi0jZW5kaWYKLSAgICAgICYmICFpdC0+Z2x5cGhf cm93LT5yZXZlcnNlZF9wCi0gICAgICAmJiAhVmRpc3BsYXlfZmlsbF9jb2x1bW5faW5kaWNhdG9y KQotICAgIHJldHVybjsKKy8qICAgaWYgKChpdC0+Y3VycmVudF94ID49IGl0LT5sYXN0X3Zpc2li bGVfeCAqLworLyogICAgICAgICsgKCFGUkFNRV9XSU5ET1dfUCAoZikgKi8KKy8qICAgICAgICAg ICAmJiBpdC0+Z2x5cGhfcm93LT5yZXZlcnNlZF9wICovCisvKiAgICAgICAgICAgJiYgIWl0LT5n bHlwaF9yb3ctPmNvbnRpbnVlZF9wKSkgKi8KKy8qICAgICAgIC9cKiBJZiB0aGUgd2luZG93IGhh cyBkaXNwbGF5IG1hcmdpbnMsIHdlIHdpbGwgbmVlZCB0byBleHRlbmQgKi8KKy8qIAkgdGhlaXIg ZmFjZSBldmVuIGlmIHRoZSB0ZXh0IGFyZWEgaXMgZmlsbGVkLiAgKlwvICovCisvKiAgICAgICAm JiAhKFdJTkRPV19MRUZUX01BUkdJTl9XSURUSCAoaXQtPncpID4gMCAqLworLyogCSAgIHx8IFdJ TkRPV19SSUdIVF9NQVJHSU5fV0lEVEggKGl0LT53KSA+IDApKSAqLworLyogICAgIHJldHVybjsg Ki8KKworLyogICAvXCogRmFjZSBleHRlbnNpb24gZXh0ZW5kcyB0aGUgYmFja2dyb3VuZCBhbmQg Ym94IG9mIElULT5mYWNlX2lkICovCisvKiAgICAgIHRvIHRoZSBlbmQgb2YgdGhlIGxpbmUuICBJ ZiB0aGUgYmFja2dyb3VuZCBlcXVhbHMgdGhlIGJhY2tncm91bmQgKi8KKy8qICAgICAgb2YgdGhl IGZyYW1lLCB3ZSBkb24ndCBoYXZlIHRvIGRvIGFueXRoaW5nLiAgKlwvICovCisgIC8qIGZhY2Ug PSBGQUNFX0ZST01fSUQgKGYsIChpdC0+ZmFjZV9iZWZvcmVfc2VsZWN0aXZlX3AgKi8KKyAgLyog CQkJICAgPyBpdC0+c2F2ZWRfZXh0ZW5kX2ZhY2VfaWQgKi8KKyAgLyogCQkJICAgOiBpdC0+ZXh0 ZW5kX2ZhY2VfaWQpKTsgKi8KKworICBmYWNlID0gRkFDRV9GUk9NX0lEIChmLCBpdC0+ZXh0ZW5k X2ZhY2VfaWQpOworCisvKiAgIGlmIChGUkFNRV9XSU5ET1dfUCAoZikgKi8KKy8qICAgICAgICYm IE1BVFJJWF9ST1dfRElTUExBWVNfVEVYVF9QIChpdC0+Z2x5cGhfcm93KSAqLworLyogICAgICAg JiYgZmFjZS0+Ym94ID09IEZBQ0VfTk9fQk9YICovCisvKiAgICAgICAmJiBGQUNFX0NPTE9SX1RP X1BJWEVMIChmYWNlLT5iYWNrZ3JvdW5kLCBmKSA9PSBGUkFNRV9CQUNLR1JPVU5EX1BJWEVMIChm KSAqLworLyogI2lmZGVmIEhBVkVfV0lORE9XX1NZU1RFTSAqLworLyogICAgICAgJiYgIWZhY2Ut PnN0aXBwbGUgKi8KKy8qICNlbmRpZiAqLworLyogICAgICAgJiYgIWl0LT5nbHlwaF9yb3ctPnJl dmVyc2VkX3AgKi8KKy8qICAgICAgICYmICFWZGlzcGxheV9maWxsX2NvbHVtbl9pbmRpY2F0b3Ip ICovCisvKiAgICAgcmV0dXJuOyAqLwogCiAgIC8qIFNldCB0aGUgZ2x5cGggcm93IGZsYWcgaW5k aWNhdGluZyB0aGF0IHRoZSBmYWNlIG9mIHRoZSBsYXN0IGdseXBoCiAgICAgIGluIHRoZSB0ZXh0 IGFyZWEgaGFzIHRvIGJlIGRyYXduIHRvIHRoZSBlbmQgb2YgdGhlIHRleHQgYXJlYS4gICovCkBA IC0yMDU2MSw3OSArMjA2MzMsODggQEAgZXh0ZW5kX2ZhY2VfdG9fZW5kX29mX2xpbmUgKHN0cnVj dCBpdCAqaXQpCiAJICAvKiBEaXNwbGF5IGZpbGwgY29sdW1uIGluZGljYXRvciBpZiBub3QgaW4g bW9kZWxpbmUgb3IKIAkgICAgIHRvb2xiYXIgYW5kIGRpc3BsYXkgZmlsbCBjb2x1bW4gaW5kaWNh dG9yIG1vZGUgaXMKIAkgICAgIGFjdGl2ZS4gICovCisJICBjb25zdCBjaGFyIHNhdmVkX2NoYXIg PSBpdC0+Y2hhcl90b19kaXNwbGF5OworCSAgY29uc3Qgc3RydWN0IHRleHRfcG9zIHNhdmVkX3Bv cyA9IGl0LT5wb3NpdGlvbjsKKwkgIGNvbnN0IGJvb2wgc2F2ZWRfYXZvaWRfY3Vyc29yID0gaXQt PmF2b2lkX2N1cnNvcl9wOworCSAgY29uc3QgaW50IHNhdmVkX2ZhY2VfaWQgPSBpdC0+ZmFjZV9p ZDsKKwkgIGNvbnN0IGJvb2wgc2F2ZWRfYm94X3N0YXJ0ID0gaXQtPnN0YXJ0X29mX2JveF9ydW5f cDsKKwkgIExpc3BfT2JqZWN0IHNhdmVfb2JqZWN0ID0gaXQtPm9iamVjdDsKKworCSAgaXQtPmF2 b2lkX2N1cnNvcl9wID0gdHJ1ZTsKKwkgIGl0LT5vYmplY3QgPSBRbmlsOworCSAgbWVtc2V0ICgm aXQtPnBvc2l0aW9uLCAwLCBzaXplb2YgaXQtPnBvc2l0aW9uKTsKKwogCSAgaW50IGluZGljYXRv cl9jb2x1bW4gPSAoaXQtPnctPnBzZXVkb193aW5kb3dfcCA9PSAwCiAJCQkJICA/IGZpbGxfY29s dW1uX2luZGljYXRvcl9jb2x1bW4gKGl0KQogCQkJCSAgOiAtMSk7Ci0JICBpZiAoaW5kaWNhdG9y X2NvbHVtbiA+PSAwKQotICAgICAgICAgICAgewotCSAgICAgIHN0cnVjdCBmb250ICpmb250ID0g KGRlZmF1bHRfZmFjZS0+Zm9udAorCisJICBzdHJ1Y3QgZm9udCAqZm9udCA9IChkZWZhdWx0X2Zh Y2UtPmZvbnQKIAkJCQkgICA/IGRlZmF1bHRfZmFjZS0+Zm9udAogCQkJCSAgIDogRlJBTUVfRk9O VCAoZikpOwotCSAgICAgIGNvbnN0IGludCBjaGFyX3dpZHRoID0gKGZvbnQtPmF2ZXJhZ2Vfd2lk dGgKLQkJCQkgICAgICA/IGZvbnQtPmF2ZXJhZ2Vfd2lkdGgKLQkJCQkgICAgICA6IGZvbnQtPnNw YWNlX3dpZHRoKTsKLQkgICAgICBpbnQgY29sdW1uX3g7Ci0KLQkgICAgICBpZiAoIUlOVF9NVUxU SVBMWV9XUkFQViAoaW5kaWNhdG9yX2NvbHVtbiwgY2hhcl93aWR0aCwgJmNvbHVtbl94KQotCQkg ICYmICFJTlRfQUREX1dSQVBWIChpdC0+bG51bV9waXhlbF93aWR0aCwgY29sdW1uX3gsICZjb2x1 bW5feCkKLQkJICAmJiBjb2x1bW5feCA+PSBpdC0+Y3VycmVudF94Ci0JCSAgJiYgY29sdW1uX3gg PD0gaXQtPmxhc3RfdmlzaWJsZV94KQotCSAgICAgICAgewotCSAgICAgICAgICBjb25zdCBjaGFy IHNhdmVkX2NoYXIgPSBpdC0+Y2hhcl90b19kaXNwbGF5OwotCSAgICAgICAgICBjb25zdCBzdHJ1 Y3QgdGV4dF9wb3Mgc2F2ZWRfcG9zID0gaXQtPnBvc2l0aW9uOwotCSAgICAgICAgICBjb25zdCBi b29sIHNhdmVkX2F2b2lkX2N1cnNvciA9IGl0LT5hdm9pZF9jdXJzb3JfcDsKLQkgICAgICAgICAg Y29uc3QgaW50IHNhdmVkX2ZhY2VfaWQgPSBpdC0+ZmFjZV9pZDsKLQkgICAgICAgICAgY29uc3Qg Ym9vbCBzYXZlZF9ib3hfc3RhcnQgPSBpdC0+c3RhcnRfb2ZfYm94X3J1bl9wOwotCSAgICAgICAg ICBMaXNwX09iamVjdCBzYXZlX29iamVjdCA9IGl0LT5vYmplY3Q7Ci0KLQkgICAgICAgICAgLyog VGhlIHN0cmV0Y2ggd2lkdGggbmVlZHMgdG8gY29uc2lkZXQgdGhlIGxhdHRlcgotCSAgICAgICAg ICAgICBhZGRlZCBnbHlwaC4gICovCi0JICAgICAgICAgIGNvbnN0IGludCBzdHJldGNoX3dpZHRo Ci0JCSAgICA9IGNvbHVtbl94IC0gaXQtPmN1cnJlbnRfeCAtIGNoYXJfd2lkdGg7Ci0KLQkgICAg ICAgICAgbWVtc2V0ICgmaXQtPnBvc2l0aW9uLCAwLCBzaXplb2YgaXQtPnBvc2l0aW9uKTsKLQkg ICAgICAgICAgaXQtPmF2b2lkX2N1cnNvcl9wID0gdHJ1ZTsKLQkgICAgICAgICAgaXQtPm9iamVj dCA9IFFuaWw7Ci0KLQkgICAgICAgICAgLyogT25seSBnZW5lcmF0ZSBhIHN0cmV0Y2ggZ2x5cGgg aWYgdGhlcmUgaXMgZGlzdGFuY2UKLQkgICAgICAgICAgICAgYmV0d2VlbiBjdXJyZW50X3ggYW5k IGFuZCB0aGUgaW5kaWNhdG9yIHBvc2l0aW9uLiAgKi8KLQkgICAgICAgICAgaWYgKHN0cmV0Y2hf d2lkdGggPiAwKQotCQkgICAgewotCQkgICAgICBpbnQgc3RyZXRjaF9hc2NlbnQgPSAoKChpdC0+ YXNjZW50ICsgaXQtPmRlc2NlbnQpCi0JCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBG T05UX0JBU0UgKGZvbnQpKSAvIEZPTlRfSEVJR0hUIChmb250KSk7Ci0JCSAgICAgIGFwcGVuZF9z dHJldGNoX2dseXBoIChpdCwgUW5pbCwgc3RyZXRjaF93aWR0aCwKLQkJICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGl0LT5hc2NlbnQgKyBpdC0+ZGVzY2VudCwKLQkJICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cmV0Y2hfYXNjZW50KTsKLQkJICAgIH0KKwkgIGNvbnN0IGludCBjaGFy X3dpZHRoID0gKGZvbnQtPmF2ZXJhZ2Vfd2lkdGgKKwkgICAgICAgICAgICAgICAgICAgICAgICAg ID8gZm9udC0+YXZlcmFnZV93aWR0aAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgOiBmb250 LT5zcGFjZV93aWR0aCk7CisJICBpbnQgY29sdW1uX3g7CisKKwkgIGlmIChpbmRpY2F0b3JfY29s dW1uID49IDAKKwkgICAgICAmJiAhSU5UX01VTFRJUExZX1dSQVBWIChpbmRpY2F0b3JfY29sdW1u LCBjaGFyX3dpZHRoLCAmY29sdW1uX3gpCisJICAgICAgJiYgIUlOVF9BRERfV1JBUFYgKGl0LT5s bnVtX3BpeGVsX3dpZHRoLCBjb2x1bW5feCwgJmNvbHVtbl94KQorCSAgICAgICYmIGNvbHVtbl94 ID49IGl0LT5jdXJyZW50X3gKKwkgICAgICAmJiBjb2x1bW5feCA8PSBpdC0+bGFzdF92aXNpYmxl X3gpCisJICAgIHsKKworCSAgICAgIC8qIFRoZSBzdHJldGNoIHdpZHRoIG5lZWRzIHRvIGNvbnNp ZGV0IHRoZSBsYXR0ZXIKKwkJIGFkZGVkIGdseXBoLiAgKi8KKwkgICAgICBjb25zdCBpbnQgc3Ry ZXRjaF93aWR0aAorCQk9IGNvbHVtbl94IC0gaXQtPmN1cnJlbnRfeCAtIGNoYXJfd2lkdGg7CisK KwkgICAgICAvKiBPbmx5IGdlbmVyYXRlIGEgc3RyZXRjaCBnbHlwaCBpZiB0aGVyZSBpcyBkaXN0 YW5jZQorCQkgYmV0d2VlbiBjdXJyZW50X3ggYW5kIGFuZCB0aGUgaW5kaWNhdG9yIHBvc2l0aW9u LiAgKi8KKwkgICAgICBpZiAoc3RyZXRjaF93aWR0aCA+IDApCisJCXsKKwkJICBpdC0+ZmFjZV9p ZCA9IGl0LT5leHRlbmRfZmFjZV9pZDsKIAotCSAgICAgICAgICAvKiBHZW5lcmF0ZSB0aGUgZ2x5 cGggaW5kaWNhdG9yIG9ubHkgaWYKLQkgICAgICAgICAgICAgYXBwZW5kX3NwYWNlX2Zvcl9uZXds aW5lIGRpZG4ndCBhbHJlYWR5LiAgKi8KLQkgICAgICAgICAgaWYgKGl0LT5jdXJyZW50X3ggPCBj b2x1bW5feCkKLQkgICAgICAgICAgICB7Ci0JCSAgICAgIGl0LT5jaGFyX3RvX2Rpc3BsYXkKLQkJ CT0gWEZJWE5BVCAoVmRpc3BsYXlfZmlsbF9jb2x1bW5faW5kaWNhdG9yX2NoYXJhY3Rlcik7Ci0J ICAgICAgICAgICAgICBpdC0+ZmFjZV9pZAotCQkJPSBtZXJnZV9mYWNlcyAoaXQtPncsIFFmaWxs X2NvbHVtbl9pbmRpY2F0b3IsCi0JCQkJICAgICAgIDAsIHNhdmVkX2ZhY2VfaWQpOwotCSAgICAg ICAgICAgICAgUFJPRFVDRV9HTFlQSFMgKGl0KTsKLQkgICAgICAgICAgICB9Ci0KLQkgICAgICAg ICAgLyogUmVzdG9yZSB0aGUgZmFjZSBhZnRlciB0aGUgaW5kaWNhdG9yIHdhcyBnZW5lcmF0ZWQu ICAqLwotCSAgICAgICAgICBpdC0+ZmFjZV9pZCA9IHNhdmVkX2ZhY2VfaWQ7Ci0KLQkgICAgICAg ICAgLyogSWYgdGhlcmUgaXMgc3BhY2UgYWZ0ZXIgdGhlIGluZGljYXRvciBnZW5lcmF0ZSBhbgot CSAgICAgICAgICAgICBleHRyYSBlbXB0eSBnbHlwaCB0byByZXN0b3JlIHRoZSBmYWNlLiAgSXNz dWUgd2FzCi0JICAgICAgICAgICAgIG9ic2VydmVkIGluIFggc3lzdGVtcy4gICovCi0JICAgICAg ICAgIGl0LT5jaGFyX3RvX2Rpc3BsYXkgPSAnICc7Ci0JICAgICAgICAgIFBST0RVQ0VfR0xZUEhT IChpdCk7Ci0KLQkgICAgICAgICAgaXQtPmNoYXJfdG9fZGlzcGxheSA9IHNhdmVkX2NoYXI7Ci0J ICAgICAgICAgIGl0LT5wb3NpdGlvbiA9IHNhdmVkX3BvczsKLQkgICAgICAgICAgaXQtPmF2b2lk X2N1cnNvcl9wID0gc2F2ZWRfYXZvaWRfY3Vyc29yOwotCSAgICAgICAgICBpdC0+c3RhcnRfb2Zf Ym94X3J1bl9wID0gc2F2ZWRfYm94X3N0YXJ0OwotCSAgICAgICAgICBpdC0+b2JqZWN0ID0gc2F2 ZV9vYmplY3Q7Ci0JICAgICAgICB9Ci0gICAgICAgICAgICB9CisJCSAgaW50IHN0cmV0Y2hfYXNj ZW50ID0gKCgoaXQtPmFzY2VudCArIGl0LT5kZXNjZW50KQorCQkgICAgICAgICAgICAgICAgICAg ICAgICAgKiBGT05UX0JBU0UgKGZvbnQpKSAvIEZPTlRfSEVJR0hUIChmb250KSk7CisJCSAgYXBw ZW5kX3N0cmV0Y2hfZ2x5cGggKGl0LCBRbmlsLCBzdHJldGNoX3dpZHRoLAorCQkgICAgICAgICAg ICAgICAgICAgICAgICBpdC0+YXNjZW50ICsgaXQtPmRlc2NlbnQsCisJCSAgICAgICAgICAgICAg ICAgICAgICAgIHN0cmV0Y2hfYXNjZW50KTsKKwkJfQorCisJICAgICAgLyogR2VuZXJhdGUgdGhl IGdseXBoIGluZGljYXRvciBvbmx5IGlmCisJCSBhcHBlbmRfc3BhY2VfZm9yX25ld2xpbmUgZGlk bid0IGFscmVhZHkuICAqLworCSAgICAgIGlmIChpdC0+Y3VycmVudF94IDwgY29sdW1uX3gpCisJ CXsKKwkJICBpdC0+Y2hhcl90b19kaXNwbGF5CisJCSAgICA9IFhGSVhOQVQgKFZkaXNwbGF5X2Zp bGxfY29sdW1uX2luZGljYXRvcl9jaGFyYWN0ZXIpOworCQkgIGl0LT5mYWNlX2lkCisJCSAgICA9 IG1lcmdlX2ZhY2VzIChpdC0+dywgUWZpbGxfY29sdW1uX2luZGljYXRvciwKKwkJICAgICAgICAg ICAgICAgICAgIDAsIGl0LT5leHRlbmRfZmFjZV9pZCk7CisJCSAgUFJPRFVDRV9HTFlQSFMgKGl0 KTsKKwkJICBpdC0+Y2hhcl90b19kaXNwbGF5ID0gc2F2ZWRfY2hhcjsKKwkJfQorCisJICAgIH0K KworCSAgY29uc3QgaW50IHN0cmV0Y2hfd2lkdGggPSBpdC0+bGFzdF92aXNpYmxlX3ggLSBpdC0+ Y3VycmVudF94OworCisJICBpZiAoc3RyZXRjaF93aWR0aCA+IDApCisJICAgIHsKKwkgICAgICBp dC0+ZmFjZV9pZCA9IGl0LT5leHRlbmRfZmFjZV9pZDsKKworCSAgICAgIGludCBzdHJldGNoX2Fz Y2VudCA9ICgoKGl0LT5hc2NlbnQgKyBpdC0+ZGVzY2VudCkKKwkgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICogRk9OVF9CQVNFIChmb250KSkgLyBGT05UX0hFSUdIVCAoZm9udCkpOworCSAg ICAgIGFwcGVuZF9zdHJldGNoX2dseXBoIChpdCwgUW5pbCwgc3RyZXRjaF93aWR0aCwKKwkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaXQtPmFzY2VudCArIGl0LT5kZXNjZW50LAorCSAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJldGNoX2FzY2VudCk7CisJICAgIH0KKworCSAgaXQt PmNoYXJfdG9fZGlzcGxheSA9IHNhdmVkX2NoYXI7CisJICBpdC0+cG9zaXRpb24gPSBzYXZlZF9w b3M7CisJICBpdC0+YXZvaWRfY3Vyc29yX3AgPSBzYXZlZF9hdm9pZF9jdXJzb3I7CisJICBpdC0+ ZmFjZV9pZCA9IHNhdmVkX2ZhY2VfaWQ7CisJICBpdC0+c3RhcnRfb2ZfYm94X3J1bl9wID0gc2F2 ZWRfYm94X3N0YXJ0OworCSAgaXQtPm9iamVjdCA9IHNhdmVfb2JqZWN0OwogCX0KICAgICAgIGlm IChpdC0+Z2x5cGhfcm93LT5yZXZlcnNlZF9wKQogCXsKQEAgLTIwNjc5LDEwICsyMDc2MCw5IEBA IGV4dGVuZF9mYWNlX3RvX2VuZF9vZl9saW5lIChzdHJ1Y3QgaXQgKml0KQogCSAgICAgIC8qIFRo ZSBsYXN0IHJvdydzIHN0cmV0Y2ggZ2x5cGggc2hvdWxkIGdldCB0aGUgZGVmYXVsdAogCQkgZmFj ZSwgdG8gYXZvaWQgcGFpbnRpbmcgdGhlIHJlc3Qgb2YgdGhlIHdpbmRvdyB3aXRoCiAJCSB0aGUg cmVnaW9uIGZhY2UsIGlmIHRoZSByZWdpb24gZW5kcyBhdCBaVi4gICovCi0JICAgICAgaWYgKGl0 LT5nbHlwaF9yb3ctPmVuZHNfYXRfenZfcCkKLQkJaXQtPmZhY2VfaWQgPSBkZWZhdWx0X2ZhY2Ut PmlkOwotCSAgICAgIGVsc2UKLQkJaXQtPmZhY2VfaWQgPSBmYWNlLT5pZDsKKwkgICAgICBpdC0+ ZmFjZV9pZCA9IChpdC0+Z2x5cGhfcm93LT5lbmRzX2F0X3p2X3AgPworCSAgICAgICAgICAgICAg ICAgICAgIGRlZmF1bHRfZmFjZS0+aWQgOiBmYWNlLT5pZCk7CisKIAkgICAgICBpdC0+c3RhcnRf b2ZfYm94X3J1bl9wID0gZmFsc2U7CiAJICAgICAgYXBwZW5kX3N0cmV0Y2hfZ2x5cGggKGl0LCBR bmlsLCBzdHJldGNoX3dpZHRoLAogCQkJCSAgICBpdC0+YXNjZW50ICsgaXQtPmRlc2NlbnQsIHN0 cmV0Y2hfYXNjZW50KTsKQEAgLTIwNzE5LDcgKzIwNzk5LDcgQEAgZXh0ZW5kX2ZhY2VfdG9fZW5k X29mX2xpbmUgKHN0cnVjdCBpdCAqaXQpCiAgICAgICBpdC0+bGVuID0gMTsKIAogICAgICAgaWYg KFdJTkRPV19MRUZUX01BUkdJTl9XSURUSCAoaXQtPncpID4gMAotCSAgJiYgKGl0LT5nbHlwaF9y b3ctPnVzZWRbTEVGVF9NQVJHSU5fQVJFQV0KKyAgICAgICAgICAmJiAoaXQtPmdseXBoX3Jvdy0+ dXNlZFtMRUZUX01BUkdJTl9BUkVBXQogCSAgICAgIDwgV0lORE9XX0xFRlRfTUFSR0lOX1dJRFRI IChpdC0+dykpCiAJICAmJiAhaXQtPmdseXBoX3Jvdy0+bW9kZV9saW5lX3AKIAkgICYmIEZBQ0Vf Q09MT1JfVE9fUElYRUwgKGZhY2UtPmJhY2tncm91bmQsIGYpICE9IEZSQU1FX0JBQ0tHUk9VTkRf UElYRUwgKGYpKQpAQCAtMjA3NTAsMTAgKzIwODMwLDggQEAgZXh0ZW5kX2ZhY2VfdG9fZW5kX29m X2xpbmUgKHN0cnVjdCBpdCAqaXQpCiAgICAgICAvKiBUaGUgbGFzdCByb3cncyBibGFuayBnbHlw aHMgc2hvdWxkIGdldCB0aGUgZGVmYXVsdCBmYWNlLCB0bwogCSBhdm9pZCBwYWludGluZyB0aGUg cmVzdCBvZiB0aGUgd2luZG93IHdpdGggdGhlIHJlZ2lvbiBmYWNlLAogCSBpZiB0aGUgcmVnaW9u IGVuZHMgYXQgWlYuICAqLwotICAgICAgaWYgKGl0LT5nbHlwaF9yb3ctPmVuZHNfYXRfenZfcCkK LQlpdC0+ZmFjZV9pZCA9IGRlZmF1bHRfZmFjZS0+aWQ7Ci0gICAgICBlbHNlCi0JaXQtPmZhY2Vf aWQgPSBmYWNlLT5pZDsKKyAgICAgIGl0LT5mYWNlX2lkID0gKGl0LT5nbHlwaF9yb3ctPmVuZHNf YXRfenZfcCA/CisgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0X2ZhY2UtPmlkIDogZmFjZS0+ aWQpOwogCiAgICAgICAvKiBEaXNwbGF5IGZpbGwtY29sdW1uIGluZGljYXRvciBpZiBuZWVkZWQu ICAqLwogICAgICAgaW50IGluZGljYXRvcl9jb2x1bW4gPSBmaWxsX2NvbHVtbl9pbmRpY2F0b3Jf Y29sdW1uIChpdCk7CkBAIC0yMDc2MywyNCArMjA4NDEsMjUgQEAgZXh0ZW5kX2ZhY2VfdG9fZW5k X29mX2xpbmUgKHN0cnVjdCBpdCAqaXQpCiAJaW5kaWNhdG9yX2NvbHVtbiA9IC0xOwogICAgICAg ZG8KIAl7Ci0JICBpbnQgc2F2ZWRfZmFjZV9pZDsKLQkgIGJvb2wgaW5kaWNhdGUgPSBpdC0+Y3Vy cmVudF94ID09IGluZGljYXRvcl9jb2x1bW47Ci0JICBpZiAoaW5kaWNhdGUpCisJICBpZiAoaXQt PmN1cnJlbnRfeCA9PSBpbmRpY2F0b3JfY29sdW1uKQogCSAgICB7Ci0JICAgICAgc2F2ZWRfZmFj ZV9pZCA9IGl0LT5mYWNlX2lkOworCSAgICAgIGludCBzYXZlZF9mYWNlX2lkID0gaXQtPmZhY2Vf aWQ7CisKIAkgICAgICBpdC0+ZmFjZV9pZAotCQk9IG1lcmdlX2ZhY2VzIChpdC0+dywgUWZpbGxf Y29sdW1uX2luZGljYXRvciwgMCwgc2F2ZWRfZmFjZV9pZCk7CisJCT0gbWVyZ2VfZmFjZXMgKGl0 LT53LCBRZmlsbF9jb2x1bW5faW5kaWNhdG9yLCAwLAorCQkgICAgICAgICAgICAgICBpdC0+ZXh0 ZW5kX2ZhY2VfaWQpOwogCSAgICAgIGl0LT5jID0gaXQtPmNoYXJfdG9fZGlzcGxheQogCQk9IFhG SVhOQVQgKFZkaXNwbGF5X2ZpbGxfY29sdW1uX2luZGljYXRvcl9jaGFyYWN0ZXIpOwotCSAgICB9 CiAKLQkgIFBST0RVQ0VfR0xZUEhTIChpdCk7CisJICAgICAgUFJPRFVDRV9HTFlQSFMgKGl0KTsK IAotCSAgaWYgKGluZGljYXRlKQotCSAgICB7CiAJICAgICAgaXQtPmZhY2VfaWQgPSBzYXZlZF9m YWNlX2lkOwogCSAgICAgIGl0LT5jID0gaXQtPmNoYXJfdG9fZGlzcGxheSA9ICcgJzsKIAkgICAg fQorCSAgZWxzZQorCSAgICB7CisJICAgICAgUFJPRFVDRV9HTFlQSFMgKGl0KTsKKwkgICAgfQog CX0KICAgICAgIHdoaWxlIChpdC0+Y3VycmVudF94IDw9IGl0LT5sYXN0X3Zpc2libGVfeCk7CiAK QEAgLTI1NDIzLDcgKzI1NTAyLDggQEAgZGlzcGxheV9jb3VudF9saW5lcyAocHRyZGlmZl90IHN0 YXJ0X2J5dGUsCiAgICBWYWx1ZSBpcyB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgZGlzcGxheWVkLiAg Ki8KIAogc3RhdGljIGludAotZGlzcGxheV9zdHJpbmcgKGNvbnN0IGNoYXIgKnN0cmluZywgTGlz cF9PYmplY3QgbGlzcF9zdHJpbmcsIExpc3BfT2JqZWN0IGZhY2Vfc3RyaW5nLAorZGlzcGxheV9z dHJpbmcgKGNvbnN0IGNoYXIgKnN0cmluZywgTGlzcF9PYmplY3QgbGlzcF9zdHJpbmcsCisgICAg ICAgICAgICAgICAgTGlzcF9PYmplY3QgZmFjZV9zdHJpbmcsCiAJCXB0cmRpZmZfdCBmYWNlX3N0 cmluZ19wb3MsIHB0cmRpZmZfdCBzdGFydCwgc3RydWN0IGl0ICppdCwKIAkJaW50IGZpZWxkX3dp ZHRoLCBpbnQgcHJlY2lzaW9uLCBpbnQgbWF4X3gsIGludCBtdWx0aWJ5dGUpCiB7CkBAIC0yNTQ0 NiwxMiArMjU1MjYsMTMgQEAgZGlzcGxheV9zdHJpbmcgKGNvbnN0IGNoYXIgKnN0cmluZywgTGlz cF9PYmplY3QgbGlzcF9zdHJpbmcsIExpc3BfT2JqZWN0IGZhY2Vfc3QKICAgaWYgKFNUUklOR1Ag KGZhY2Vfc3RyaW5nKSkKICAgICB7CiAgICAgICBwdHJkaWZmX3QgZW5kcHRyOwotICAgICAgc3Ry dWN0IGZhY2UgKmZhY2U7CiAKICAgICAgIGl0LT5mYWNlX2lkCiAJPSBmYWNlX2F0X3N0cmluZ19w b3NpdGlvbiAoaXQtPncsIGZhY2Vfc3RyaW5nLCBmYWNlX3N0cmluZ19wb3MsCiAJCQkJICAgMCwg JmVuZHB0ciwgaXQtPmJhc2VfZmFjZV9pZCwgZmFsc2UpOwotICAgICAgZmFjZSA9IEZBQ0VfRlJP TV9JRCAoaXQtPmYsIGl0LT5mYWNlX2lkKTsKKworICAgICAgc3RydWN0IGZhY2UgKmZhY2UgPSBG QUNFX0ZST01fSUQgKGl0LT5mLCBpdC0+ZmFjZV9pZCk7CisKICAgICAgIGl0LT5mYWNlX2JveF9w ID0gZmFjZS0+Ym94ICE9IEZBQ0VfTk9fQk9YOwogICAgIH0KIApAQCAtMjczNTUsNyArMjc0MzYs NyBAQCBmb250X2Zvcl91bmRlcmxpbmVfbWV0cmljcyAoc3RydWN0IGdseXBoX3N0cmluZyAqcykK ICAgZm9yIChnID0gcy0+Zmlyc3RfZ2x5cGggLSAxOyBnID49IGcwOyBnLS0pCiAgICAgewogICAg ICAgc3RydWN0IGZhY2UgKnByZXZfZmFjZSA9IEZBQ0VfRlJPTV9JRCAocy0+ZiwgZy0+ZmFjZV9p ZCk7Ci0gICAgICBpZiAoIShwcmV2X2ZhY2UgJiYgcHJldl9mYWNlLT51bmRlcmxpbmVfcCkpCisg ICAgICBpZiAoIShwcmV2X2ZhY2UgJiYgcHJldl9mYWNlLT51bmRlcmxpbmUgIT0gRkFDRV9OT19V TkRFUkxJTkUpKQogCWJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvc3JjL3hmYWNlcy5jIGIv c3JjL3hmYWNlcy5jCmluZGV4IGMzY2FlN2UyYTYuLjljNThlM2U1MWEgMTAwNjQ0Ci0tLSBhL3Ny Yy94ZmFjZXMuYworKysgYi9zcmMveGZhY2VzLmMKQEAgLTEyMDksNyArMTIwOSw3IEBAIGZyZWVf ZmFjZV9jb2xvcnMgKHN0cnVjdCBmcmFtZSAqZiwgc3RydWN0IGZhY2UgKmZhY2UpCiAgICAgICBJ Rl9ERUJVRyAoLS1uY29sb3JzX2FsbG9jYXRlZCk7CiAgICAgfQogCi0gIGlmIChmYWNlLT51bmRl cmxpbmVfcAorICBpZiAoZmFjZS0+dW5kZXJsaW5lCiAgICAgICAmJiAhZmFjZS0+dW5kZXJsaW5l X2RlZmF1bHRlZF9wKQogICAgIHsKICAgICAgIHhfZnJlZV9jb2xvcnMgKGYsICZmYWNlLT51bmRl cmxpbmVfY29sb3IsIDEpOwpAQCAtMTU5MCw2ICsxNTkwLDcgQEAgI2RlZmluZSBMRkFDRV9CT1go TEZBQ0UpCSAgICBBUkVGICgoTEZBQ0UpLCBMRkFDRV9CT1hfSU5ERVgpCiAjZGVmaW5lIExGQUNF X0ZPTlQoTEZBQ0UpCSAgICBBUkVGICgoTEZBQ0UpLCBMRkFDRV9GT05UX0lOREVYKQogI2RlZmlu ZSBMRkFDRV9JTkhFUklUKExGQUNFKQkgICAgQVJFRiAoKExGQUNFKSwgTEZBQ0VfSU5IRVJJVF9J TkRFWCkKICNkZWZpbmUgTEZBQ0VfRk9OVFNFVChMRkFDRSkJICAgIEFSRUYgKChMRkFDRSksIExG QUNFX0ZPTlRTRVRfSU5ERVgpCisjZGVmaW5lIExGQUNFX0VYVEVORChMRkFDRSkJICAgIEFSRUYg KChMRkFDRSksIExGQUNFX0VYVEVORF9JTkRFWCkKICNkZWZpbmUgTEZBQ0VfRElTVEFOVF9GT1JF R1JPVU5EKExGQUNFKSBcCiAgIEFSRUYgKChMRkFDRSksIExGQUNFX0RJU1RBTlRfRk9SRUdST1VO RF9JTkRFWCkKIApAQCAtMTYzMyw2ICsxNjM0LDEwIEBAIGNoZWNrX2xmYWNlX2F0dHJzIChMaXNw X09iamVjdCBhdHRyc1tMRkFDRV9WRUNUT1JfU0laRV0pCiAJICAgfHwgU1lNQk9MUCAoYXR0cnNb TEZBQ0VfVU5ERVJMSU5FX0lOREVYXSkKIAkgICB8fCBTVFJJTkdQIChhdHRyc1tMRkFDRV9VTkRF UkxJTkVfSU5ERVhdKQogCSAgIHx8IENPTlNQIChhdHRyc1tMRkFDRV9VTkRFUkxJTkVfSU5ERVhd KSk7CisgIGVhc3NlcnQgKFVOU1BFQ0lGSUVEUCAoYXR0cnNbTEZBQ0VfRVhURU5EX0lOREVYXSkK KwkgICB8fCBJR05PUkVfREVGRkFDRV9QIChhdHRyc1tMRkFDRV9FWFRFTkRfSU5ERVhdKQorCSAg IHx8IFNZTUJPTFAgKGF0dHJzW0xGQUNFX0VYVEVORF9JTkRFWF0pCisJICAgfHwgU1RSSU5HUCAo YXR0cnNbTEZBQ0VfRVhURU5EX0lOREVYXSkpOwogICBlYXNzZXJ0IChVTlNQRUNJRklFRFAgKGF0 dHJzW0xGQUNFX09WRVJMSU5FX0lOREVYXSkKIAkgICB8fCBJR05PUkVfREVGRkFDRV9QIChhdHRy c1tMRkFDRV9PVkVSTElORV9JTkRFWF0pCiAJICAgfHwgU1lNQk9MUCAoYXR0cnNbTEZBQ0VfT1ZF UkxJTkVfSU5ERVhdKQpAQCAtMjUxMiw2ICsyNTE3LDEzIEBAIG1lcmdlX2ZhY2VfcmVmIChzdHJ1 Y3Qgd2luZG93ICp3LAogCQkJCQllcnJfbXNncywgbmFtZWRfbWVyZ2VfcG9pbnRzKSkKIAkJICAg IGVyciA9IHRydWU7CiAJCX0KKwkgICAgICBlbHNlIGlmIChFUSAoa2V5d29yZCwgUUNleHRlbmQp KQorCQl7CisJCSAgaWYgKEVRICh2YWx1ZSwgUXQpIHx8IE5JTFAgKHZhbHVlKSkKKwkJICAgIHRv W0xGQUNFX0VYVEVORF9JTkRFWF0gPSB2YWx1ZTsKKwkJICBlbHNlCisJCSAgICBlcnIgPSB0cnVl OworCQl9CiAJICAgICAgZWxzZQogCQllcnIgPSB0cnVlOwogCkBAIC0zMDMwLDYgKzMwNDIsMTcg QEAgREVGVU4gKCJpbnRlcm5hbC1zZXQtbGlzcC1mYWNlLWF0dHJpYnV0ZSIsIEZpbnRlcm5hbF9z ZXRfbGlzcF9mYWNlX2F0dHJpYnV0ZSwKICAgICAgIG9sZF92YWx1ZSA9IExGQUNFX0lOVkVSU0Ug KGxmYWNlKTsKICAgICAgIEFTRVQgKGxmYWNlLCBMRkFDRV9JTlZFUlNFX0lOREVYLCB2YWx1ZSk7 CiAgICAgfQorICBlbHNlIGlmIChFUSAoYXR0ciwgUUNleHRlbmQpKQorICAgIHsKKyAgICAgIGlm ICghVU5TUEVDSUZJRURQICh2YWx1ZSkgJiYgIUlHTk9SRV9ERUZGQUNFX1AgKHZhbHVlKSkKKwl7 CisJICBDSEVDS19TWU1CT0wgKHZhbHVlKTsKKwkgIGlmICghRVEgKHZhbHVlLCBRdCkgJiYgIU5J TFAgKHZhbHVlKSkKKwkgICAgc2lnbmFsX2Vycm9yICgiSW52YWxpZCBleHRlbmQgZmFjZSBhdHRy aWJ1dGUgdmFsdWUiLCB2YWx1ZSk7CisJfQorICAgICAgb2xkX3ZhbHVlID0gTEZBQ0VfRVhURU5E IChsZmFjZSk7CisgICAgICBBU0VUIChsZmFjZSwgTEZBQ0VfRVhURU5EX0lOREVYLCB2YWx1ZSk7 CisgICAgfQogICBlbHNlIGlmIChFUSAoYXR0ciwgUUNmb3JlZ3JvdW5kKSkKICAgICB7CiAgICAg ICAvKiBDb21wYXRpYmlsaXR5IHdpdGggMjAueC4gICovCkBAIC0zNTAzLDcgKzM1MjYsOSBAQCBE RUZVTiAoImludGVybmFsLXNldC1saXNwLWZhY2UtYXR0cmlidXRlLWZyb20tcmVzb3VyY2UiLAog ICAgIHZhbHVlID0gZmFjZV9ib29sZWFuX3hfcmVzb3VyY2VfdmFsdWUgKHZhbHVlLCB0cnVlKTsK ICAgZWxzZSBpZiAoRVEgKGF0dHIsIFFDd2VpZ2h0KSB8fCBFUSAoYXR0ciwgUUNzbGFudCkgfHwg RVEgKGF0dHIsIFFDd2lkdGgpKQogICAgIHZhbHVlID0gaW50ZXJuIChTU0RBVEEgKHZhbHVlKSk7 Ci0gIGVsc2UgaWYgKEVRIChhdHRyLCBRQ3JldmVyc2VfdmlkZW8pIHx8IEVRIChhdHRyLCBRQ2lu dmVyc2VfdmlkZW8pKQorICBlbHNlIGlmIChFUSAoYXR0ciwgUUNyZXZlcnNlX3ZpZGVvKQorICAg ICAgICAgICB8fCBFUSAoYXR0ciwgUUNpbnZlcnNlX3ZpZGVvKQorICAgICAgICAgICB8fCBFUSAo YXR0ciwgUUNleHRlbmQpKQogICAgIHZhbHVlID0gZmFjZV9ib29sZWFuX3hfcmVzb3VyY2VfdmFs dWUgKHZhbHVlLCB0cnVlKTsKICAgZWxzZSBpZiAoRVEgKGF0dHIsIFFDdW5kZXJsaW5lKQogCSAg IHx8IEVRIChhdHRyLCBRQ292ZXJsaW5lKQpAQCAtMzcyNyw2ICszNzUyLDggQEAgREVGVU4gKCJp bnRlcm5hbC1nZXQtbGlzcC1mYWNlLWF0dHJpYnV0ZSIsIEZpbnRlcm5hbF9nZXRfbGlzcF9mYWNl X2F0dHJpYnV0ZSwKICAgICB2YWx1ZSA9IExGQUNFX1NXSURUSCAobGZhY2UpOwogICBlbHNlIGlm IChFUSAoa2V5d29yZCwgUUNpbmhlcml0KSkKICAgICB2YWx1ZSA9IExGQUNFX0lOSEVSSVQgKGxm YWNlKTsKKyAgZWxzZSBpZiAoRVEgKGtleXdvcmQsIFFDZXh0ZW5kKSkKKyAgICB2YWx1ZSA9IExG QUNFX0VYVEVORCAobGZhY2UpOwogICBlbHNlIGlmIChFUSAoa2V5d29yZCwgUUNmb250KSkKICAg ICB2YWx1ZSA9IExGQUNFX0ZPTlQgKGxmYWNlKTsKICAgZWxzZSBpZiAoRVEgKGtleXdvcmQsIFFD Zm9udHNldCkpCkBAIC0zNzU0LDcgKzM3ODEsOSBAQCBERUZVTiAoImludGVybmFsLWxpc3AtZmFj ZS1hdHRyaWJ1dGUtdmFsdWVzIiwKIAogICBpZiAoRVEgKGF0dHIsIFFDdW5kZXJsaW5lKSB8fCBF USAoYXR0ciwgUUNvdmVybGluZSkKICAgICAgIHx8IEVRIChhdHRyLCBRQ3N0cmlrZV90aHJvdWdo KQotICAgICAgfHwgRVEgKGF0dHIsIFFDaW52ZXJzZV92aWRlbykgfHwgRVEgKGF0dHIsIFFDcmV2 ZXJzZV92aWRlbykpCisgICAgICB8fCBFUSAoYXR0ciwgUUNpbnZlcnNlX3ZpZGVvKQorICAgICAg fHwgRVEgKGF0dHIsIFFDcmV2ZXJzZV92aWRlbykKKyAgICAgIHx8IEVRIChhdHRyLCBRQ2V4dGVu ZCkpCiAgICAgcmVzdWx0ID0gbGlzdDIgKFF0LCBRbmlsKTsKIAogICByZXR1cm4gcmVzdWx0OwpA QCAtNDc4Miw2ICs0ODExLDkgQEAgZ3VpX3N1cHBvcnRzX2ZhY2VfYXR0cmlidXRlc19wIChzdHJ1 Y3QgZnJhbWUgKmYsCiAgICAgICB8fCAoIVVOU1BFQ0lGSUVEUCAoYXR0cnNbTEZBQ0VfSU5WRVJT RV9JTkRFWF0pCiAJICAmJiBmYWNlX2F0dHJfZXF1YWxfcCAoYXR0cnNbTEZBQ0VfSU5WRVJTRV9J TkRFWF0sCiAJCQkJZGVmX2F0dHJzW0xGQUNFX0lOVkVSU0VfSU5ERVhdKSkKKyAgICAgIHx8ICgh VU5TUEVDSUZJRURQIChhdHRyc1tMRkFDRV9FWFRFTkRfSU5ERVhdKQorCSAgJiYgZmFjZV9hdHRy X2VxdWFsX3AgKGF0dHJzW0xGQUNFX0VYVEVORF9JTkRFWF0sCisJCQkJZGVmX2F0dHJzW0xGQUNF X0VYVEVORF9JTkRFWF0pKQogICAgICAgfHwgKCFVTlNQRUNJRklFRFAgKGF0dHJzW0xGQUNFX0ZP UkVHUk9VTkRfSU5ERVhdKQogCSAgJiYgZmFjZV9hdHRyX2VxdWFsX3AgKGF0dHJzW0xGQUNFX0ZP UkVHUk9VTkRfSU5ERVhdLAogCQkJCWRlZl9hdHRyc1tMRkFDRV9GT1JFR1JPVU5EX0lOREVYXSkp CkBAIC01MzU4LDYgKzUzOTAsOSBAQCByZWFsaXplX2RlZmF1bHRfZmFjZSAoc3RydWN0IGZyYW1l ICpmKQogCUFTRVQgKGxmYWNlLCBMRkFDRV9GT05UU0VUX0lOREVYLCBRbmlsKTsKICAgICB9CiAK KyAgaWYgKFVOU1BFQ0lGSUVEUCAoTEZBQ0VfRVhURU5EIChsZmFjZSkpKQorICAgIEFTRVQgKGxm YWNlLCBMRkFDRV9FWFRFTkRfSU5ERVgsIFFuaWwpOworCiAgIGlmIChVTlNQRUNJRklFRFAgKExG QUNFX1VOREVSTElORSAobGZhY2UpKSkKICAgICBBU0VUIChsZmFjZSwgTEZBQ0VfVU5ERVJMSU5F X0lOREVYLCBRbmlsKTsKIApAQCAtNTY5NCwxNiArNTcyOSwxNCBAQCByZWFsaXplX2d1aV9mYWNl IChzdHJ1Y3QgZmFjZV9jYWNoZSAqY2FjaGUsIExpc3BfT2JqZWN0IGF0dHJzW0xGQUNFX1ZFQ1RP Ul9TSVpFXQogICBpZiAoRVEgKHVuZGVybGluZSwgUXQpKQogICAgIHsKICAgICAgIC8qIFVzZSBk ZWZhdWx0IGNvbG9yIChzYW1lIGFzIGZvcmVncm91bmQgY29sb3IpLiAgKi8KLSAgICAgIGZhY2Ut PnVuZGVybGluZV9wID0gdHJ1ZTsKLSAgICAgIGZhY2UtPnVuZGVybGluZV90eXBlID0gRkFDRV9V TkRFUl9MSU5FOworICAgICAgZmFjZS0+dW5kZXJsaW5lID0gRkFDRV9VTkRFUl9MSU5FOwogICAg ICAgZmFjZS0+dW5kZXJsaW5lX2RlZmF1bHRlZF9wID0gdHJ1ZTsKICAgICAgIGZhY2UtPnVuZGVy bGluZV9jb2xvciA9IDA7CiAgICAgfQogICBlbHNlIGlmIChTVFJJTkdQICh1bmRlcmxpbmUpKQog ICAgIHsKICAgICAgIC8qIFVzZSBzcGVjaWZpZWQgY29sb3IuICAqLwotICAgICAgZmFjZS0+dW5k ZXJsaW5lX3AgPSB0cnVlOwotICAgICAgZmFjZS0+dW5kZXJsaW5lX3R5cGUgPSBGQUNFX1VOREVS X0xJTkU7CisgICAgICBmYWNlLT51bmRlcmxpbmUgPSBGQUNFX1VOREVSX0xJTkU7CiAgICAgICBm YWNlLT51bmRlcmxpbmVfZGVmYXVsdGVkX3AgPSBmYWxzZTsKICAgICAgIGZhY2UtPnVuZGVybGlu ZV9jb2xvcgogCT0gbG9hZF9jb2xvciAoZiwgZmFjZSwgdW5kZXJsaW5lLApAQCAtNTcxMSw3ICs1 NzQ0LDcgQEAgcmVhbGl6ZV9ndWlfZmFjZSAoc3RydWN0IGZhY2VfY2FjaGUgKmNhY2hlLCBMaXNw X09iamVjdCBhdHRyc1tMRkFDRV9WRUNUT1JfU0laRV0KICAgICB9CiAgIGVsc2UgaWYgKE5JTFAg KHVuZGVybGluZSkpCiAgICAgewotICAgICAgZmFjZS0+dW5kZXJsaW5lX3AgPSBmYWxzZTsKKyAg ICAgIGZhY2UtPnVuZGVybGluZSA9IEZBQ0VfTk9fVU5ERVJMSU5FOwogICAgICAgZmFjZS0+dW5k ZXJsaW5lX2RlZmF1bHRlZF9wID0gZmFsc2U7CiAgICAgICBmYWNlLT51bmRlcmxpbmVfY29sb3Ig PSAwOwogICAgIH0KQEAgLTU3MTksMTAgKzU3NTIsOSBAQCByZWFsaXplX2d1aV9mYWNlIChzdHJ1 Y3QgZmFjZV9jYWNoZSAqY2FjaGUsIExpc3BfT2JqZWN0IGF0dHJzW0xGQUNFX1ZFQ1RPUl9TSVpF XQogICAgIHsKICAgICAgIC8qIGAoOmNvbG9yIENPTE9SIDpzdHlsZSBTVFlMRSknLgogICAgICAg ICAgU1RZTEUgYmVpbmcgb25lIG9mIGBsaW5lJyBvciBgd2F2ZScuICovCi0gICAgICBmYWNlLT51 bmRlcmxpbmVfcCA9IHRydWU7CisgICAgICBmYWNlLT51bmRlcmxpbmUgPSBGQUNFX1VOREVSX0xJ TkU7CiAgICAgICBmYWNlLT51bmRlcmxpbmVfY29sb3IgPSAwOwogICAgICAgZmFjZS0+dW5kZXJs aW5lX2RlZmF1bHRlZF9wID0gdHJ1ZTsKLSAgICAgIGZhY2UtPnVuZGVybGluZV90eXBlID0gRkFD RV9VTkRFUl9MSU5FOwogCiAgICAgICAvKiBGSVhNRT8gIFRoaXMgaXMgYWxzbyBub3Qgcm9idXN0 IGFib3V0IGNoZWNraW5nIHRoZSBwcmVjaXNlIGZvcm0uCiAgICAgICAgICBTZWUgY29tbWVudHMg aW4gRmludGVybmFsX3NldF9saXNwX2ZhY2VfYXR0cmlidXRlLiAgKi8KQEAgLTU3NTUsOSArNTc4 Nyw5IEBAIHJlYWxpemVfZ3VpX2ZhY2UgKHN0cnVjdCBmYWNlX2NhY2hlICpjYWNoZSwgTGlzcF9P YmplY3QgYXR0cnNbTEZBQ0VfVkVDVE9SX1NJWkVdCiAgICAgICAgICAgZWxzZSBpZiAoRVEgKGtl eXdvcmQsIFFDc3R5bGUpKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICBpZiAoRVEgKHZh bHVlLCBRbGluZSkpCi0gICAgICAgICAgICAgICAgZmFjZS0+dW5kZXJsaW5lX3R5cGUgPSBGQUNF X1VOREVSX0xJTkU7CisgICAgICAgICAgICAgICAgZmFjZS0+dW5kZXJsaW5lID0gRkFDRV9VTkRF Ul9MSU5FOwogICAgICAgICAgICAgICBlbHNlIGlmIChFUSAodmFsdWUsIFF3YXZlKSkKLSAgICAg ICAgICAgICAgICBmYWNlLT51bmRlcmxpbmVfdHlwZSA9IEZBQ0VfVU5ERVJfV0FWRTsKKyAgICAg ICAgICAgICAgICBmYWNlLT51bmRlcmxpbmUgPSBGQUNFX1VOREVSX1dBVkU7CiAgICAgICAgICAg ICB9CiAgICAgICAgIH0KICAgICB9CkBAIC02MjkyLDkgKzYzMjQsOCBAQCBtZXJnZV9mYWNlcyAo c3RydWN0IHdpbmRvdyAqdywgTGlzcF9PYmplY3QgZmFjZV9uYW1lLCBpbnQgZmFjZV9pZCwKIHsK ICAgc3RydWN0IGZyYW1lICpmID0gV0lORE9XX1hGUkFNRSAodyk7CiAgIExpc3BfT2JqZWN0IGF0 dHJzW0xGQUNFX1ZFQ1RPUl9TSVpFXTsKLSAgc3RydWN0IGZhY2UgKmJhc2VfZmFjZTsKKyAgc3Ry dWN0IGZhY2UgKmJhc2VfZmFjZSA9IEZBQ0VfRlJPTV9JRF9PUl9OVUxMIChmLCBiYXNlX2ZhY2Vf aWQpOwogCi0gIGJhc2VfZmFjZSA9IEZBQ0VfRlJPTV9JRF9PUl9OVUxMIChmLCBiYXNlX2ZhY2Vf aWQpOwogICBpZiAoIWJhc2VfZmFjZSkKICAgICByZXR1cm4gYmFzZV9mYWNlX2lkOwogCkBAIC02 MzE5LDEyICs2MzUwLDE0IEBAIG1lcmdlX2ZhY2VzIChzdHJ1Y3Qgd2luZG93ICp3LCBMaXNwX09i amVjdCBmYWNlX25hbWUsIGludCBmYWNlX2lkLAogICAgIH0KICAgZWxzZQogICAgIHsKLSAgICAg IHN0cnVjdCBmYWNlICpmYWNlOwogICAgICAgaWYgKGZhY2VfaWQgPCAwKQogCXJldHVybiBiYXNl X2ZhY2VfaWQ7Ci0gICAgICBmYWNlID0gRkFDRV9GUk9NX0lEX09SX05VTEwgKGYsIGZhY2VfaWQp OworCisgICAgICBzdHJ1Y3QgZmFjZSAqZmFjZSA9IEZBQ0VfRlJPTV9JRF9PUl9OVUxMIChmLCBm YWNlX2lkKTsKKwogICAgICAgaWYgKCFmYWNlKQogCXJldHVybiBiYXNlX2ZhY2VfaWQ7CisKICAg ICAgIG1lcmdlX2ZhY2VfdmVjdG9ycyAodywgZiwgZmFjZS0+bGZhY2UsIGF0dHJzLCAwKTsKICAg ICB9CiAKQEAgLTY0MTIsNyArNjQ0NSw3IEBAIGR1bXBfcmVhbGl6ZWRfZmFjZSAoc3RydWN0IGZh Y2UgKmZhY2UpCiAjZW5kaWYKICAgZnByaW50ZiAoc3RkZXJyLCAiZm9udHNldDogJWRcbiIsIGZh Y2UtPmZvbnRzZXQpOwogICBmcHJpbnRmIChzdGRlcnIsICJ1bmRlcmxpbmU6ICVkICglcylcbiIs Ci0JICAgZmFjZS0+dW5kZXJsaW5lX3AsCisJICAgZmFjZS0+dW5kZXJsaW5lLAogCSAgIFNEQVRB IChGc3ltYm9sX25hbWUgKGZhY2UtPmxmYWNlW0xGQUNFX1VOREVSTElORV9JTkRFWF0pKSk7CiAg IGZwcmludGYgKHN0ZGVyciwgImhhc2g6ICUiIFBSSXVQVFIgIlxuIiwgZmFjZS0+aGFzaCk7CiB9 CkBAIC02NTM3LDYgKzY1NzAsNyBAQCBzeW1zX29mX3hmYWNlcyAodm9pZCkKICAgREVGU1lNIChR Q3N0cmlrZV90aHJvdWdoLCAiOnN0cmlrZS10aHJvdWdoIik7CiAgIERFRlNZTSAoUUNib3gsICI6 Ym94Iik7CiAgIERFRlNZTSAoUUNpbmhlcml0LCAiOmluaGVyaXQiKTsKKyAgREVGU1lNIChRQ2V4 dGVuZCwgIjpleHRlbmQiKTsKIAogICAvKiBTeW1ib2xzIHVzZWQgZm9yIExpc3AgZmFjZSBhdHRy aWJ1dGUgdmFsdWVzLiAgKi8KICAgREVGU1lNIChRQ2NvbG9yLCAiOmNvbG9yIik7CmRpZmYgLS1n aXQgYS9zcmMveHRlcm0uYyBiL3NyYy94dGVybS5jCmluZGV4IGI3NjFlYWY0ZDEuLmI4ZjhkYjU2 YTcgMTAwNjQ0Ci0tLSBhL3NyYy94dGVybS5jCisrKyBiL3NyYy94dGVybS5jCkBAIC0zNzk4LDkg KzM3OTgsOSBAQCB4X2RyYXdfZ2x5cGhfc3RyaW5nIChzdHJ1Y3QgZ2x5cGhfc3RyaW5nICpzKQog ICBpZiAoIXMtPmZvcl9vdmVybGFwcykKICAgICB7CiAgICAgICAvKiBEcmF3IHVuZGVybGluZS4g ICovCi0gICAgICBpZiAocy0+ZmFjZS0+dW5kZXJsaW5lX3ApCisgICAgICBpZiAocy0+ZmFjZS0+ dW5kZXJsaW5lKQogICAgICAgICB7Ci0gICAgICAgICAgaWYgKHMtPmZhY2UtPnVuZGVybGluZV90 eXBlID09IEZBQ0VfVU5ERVJfV0FWRSkKKyAgICAgICAgICBpZiAocy0+ZmFjZS0+dW5kZXJsaW5l ID09IEZBQ0VfVU5ERVJfV0FWRSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgaWYgKHMt PmZhY2UtPnVuZGVybGluZV9kZWZhdWx0ZWRfcCkKICAgICAgICAgICAgICAgICB4X2RyYXdfdW5k ZXJ3YXZlIChzKTsKQEAgLTM4MTQsMTMgKzM4MTQsMTMgQEAgeF9kcmF3X2dseXBoX3N0cmluZyAo c3RydWN0IGdseXBoX3N0cmluZyAqcykKICAgICAgICAgICAgICAgICAgIFhTZXRGb3JlZ3JvdW5k IChkaXNwbGF5LCBzLT5nYywgeGdjdi5mb3JlZ3JvdW5kKTsKICAgICAgICAgICAgICAgICB9CiAg ICAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSBpZiAocy0+ZmFjZS0+dW5kZXJsaW5lX3R5cGUg PT0gRkFDRV9VTkRFUl9MSU5FKQorICAgICAgICAgIGVsc2UgaWYgKHMtPmZhY2UtPnVuZGVybGlu ZSA9PSBGQUNFX1VOREVSX0xJTkUpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgIHVuc2ln bmVkIGxvbmcgdGhpY2tuZXNzLCBwb3NpdGlvbjsKICAgICAgICAgICAgICAgaW50IHk7CiAKLSAg ICAgICAgICAgICAgaWYgKHMtPnByZXYgJiYgcy0+cHJldi0+ZmFjZS0+dW5kZXJsaW5lX3AKLQkJ ICAmJiBzLT5wcmV2LT5mYWNlLT51bmRlcmxpbmVfdHlwZSA9PSBGQUNFX1VOREVSX0xJTkUpCisg ICAgICAgICAgICAgIGlmIChzLT5wcmV2ICYmCisJICAgICAgICAgIHMtPnByZXYtPmZhY2UtPnVu ZGVybGluZSA9PSBGQUNFX1VOREVSX0xJTkUpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAg ICAgICAgICAgLyogV2UgdXNlIHRoZSBzYW1lIHVuZGVybGluZSBzdHlsZSBhcyB0aGUgcHJldmlv dXMgb25lLiAgKi8KICAgICAgICAgICAgICAgICAgIHRoaWNrbmVzcyA9IHMtPnByZXYtPnVuZGVy bGluZV90aGlja25lc3M7Cg== ------=_Part_1913639_1843383234.1567711569517--