From unknown Tue Aug 19 05:14:07 2025 X-Loop: help-debbugs@gnu.org Subject: bug#79160: [PATCH] Allow borders to be any alpha, independently of frame alpha Resent-From: Garklein Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 03 Aug 2025 02:20:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 79160 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 79160@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.17541875529445 (code B ref -1); Sun, 03 Aug 2025 02:20:02 +0000 Received: (at submit) by debbugs.gnu.org; 3 Aug 2025 02:19:12 +0000 Received: from localhost ([127.0.0.1]:40093 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uiOJY-0002SE-Ql for submit@debbugs.gnu.org; Sat, 02 Aug 2025 22:19:12 -0400 Received: from lists.gnu.org ([2001:470:142::17]:42694) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uiOJS-0002R6-QE for submit@debbugs.gnu.org; Sat, 02 Aug 2025 22:19:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uiOJJ-0002cs-BV for bug-gnu-emacs@gnu.org; Sat, 02 Aug 2025 22:18:53 -0400 Received: from mail-ej1-x62c.google.com ([2a00:1450:4864:20::62c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uiOJE-0000xz-GF for bug-gnu-emacs@gnu.org; Sat, 02 Aug 2025 22:18:53 -0400 Received: by mail-ej1-x62c.google.com with SMTP id a640c23a62f3a-af910372ab3so678000166b.1 for ; Sat, 02 Aug 2025 19:18:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754187525; x=1754792325; darn=gnu.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=Q68Yy2EtpNXI7I9I5H1lh936hWgynR8+X2+TjQzNxxw=; b=Jb4HhjJ263WsdTnX2GvqcB/ShKWW4G8m6aY4XVZgaaa2I2CBh5XGlwlDx/wBR5EW+9 Ho6i3E1c5vnnFK9FoDaRHRWVdbXu3DjdKiS/sMYT4trqFRQkM9fG+qNZuwCgQXfbu6S9 rAnlzcuzshBT60bc5WWGskRrtJ5FHH/olaEPW694RtDJbRQR83OlQcxMfGUoEOk1P56M fFEExp6XvlH36sygeqtpk7isuHR5SEa5/lU7X1BsEXgHJ9MGIkkyAlRpKxx2Vlb2XPwF pRHKaPUo9bn8P7A9x70FfU+fB4U0YIOK8RqyDE4y+0SRzWndGwsU8RXppjCzYrJTu3rK SiKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754187525; x=1754792325; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=Q68Yy2EtpNXI7I9I5H1lh936hWgynR8+X2+TjQzNxxw=; b=UTTuyzJkLKpxmKwZiq7rPbuScVJJlftmG9D3G2ysh16sDCuS7yKHPJAHLiMkVipIG5 HL27vXxfk5R6cuVo4WQcEW2sgJWdw4btYyoezniu/Ht7jADsqQx+OJBIvq1ZsPPWR4/p UoAE+5AyXOUQYNsHnRdH2wuE9FB69irozg/qn1lI0LhYxH4MQqvx4bzNYMdL6VoMhbc3 FEWi7HiCNV9mbsOdGyBtojAeQNnZP8eRPrY7uM/wVGdByxrmN4R+57Aqi9djas1QhPQt 4t9QKBuzJSWGXWyChEjiIlRQAPbQdRRUFZ2SZx1G51b3kTKmHsD230mUDGuwSpkfaw4F o2Hg== X-Gm-Message-State: AOJu0Yz3CRYwS2s8g4U+kMbZBYYCDArXmr0KYqo7sbPWhg+ChiFhLRx0 8vmGyCRTY7sMHb2rV+gLz3SuL7F3geqVyOD0bKOrGXVgvN78/9635zmx2kShmxb8l235ae80TQX r8wkcCDMkNV04Rv7xYHuaUgCLAK9XMv+cOqgR X-Gm-Gg: ASbGncttMjH4KuASUZpJAw9lp2RqYaIS11/dC+bSeJri+Wbvx6uojZ+lTfFq7cNXnG5 /x+QW8XyP6j4Aa4oTwYrEqy3AzA67FBEa+GeyN/p879ZyxG2NiEo4WUR4XZtLHgd8NUq2/WM6Dd iF/DXEuMWpDZdXMDfwudyk4tW7buA8oEw4OkrJG1NVFHxZiDm6ct4i1LcKawWIE7LR7B14gKLQk EEmiX7KgT53b5f2K5LT/AtlZGaqadBe+v7LTsM4sC6Qg1wrBFEj X-Google-Smtp-Source: AGHT+IGPQWGb8sh/BPRZhR4jCoEwQf+KG5snL+9A7cIjITN6sFRSsplDlxmk/1rtqHIESwpeEQ3YUelUw0sul3y54OM= X-Received: by 2002:a17:907:3cd2:b0:af9:3f53:ed1d with SMTP id a640c23a62f3a-af9408a1522mr517268566b.16.1754187525402; Sat, 02 Aug 2025 19:18:45 -0700 (PDT) MIME-Version: 1.0 From: Garklein Date: Sat, 2 Aug 2025 22:18:34 -0400 X-Gm-Features: Ac12FXzEH1UEOFB1NGl86qkKU4AoWpQWl0KBwkrm669ujleES-u8cQ4F02iAYPk Message-ID: Content-Type: multipart/mixed; boundary="0000000000005276c4063b6c9c65" Received-SPF: pass client-ip=2a00:1450:4864:20::62c; envelope-from=garklein97@gmail.com; helo=mail-ej1-x62c.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 1.2 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: This patch replaces my previous borders-respect-alpha-background frame parameter with an alpha-borders frame parameter, which lets users set the alpha of borders to whatever they desire. Most of the changes are just changing boolean respect_alpha_background parameters to double alpha parameters. respect_alpha_background=true gets replaced with f->alpha_background, and respect_alpha_ba [...] Content analysis details: (1.2 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.0 SPF_SOFTFAIL SPF: sender does not match SPF record (softfail) 0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends in digit (garklein97[at]gmail.com) -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (garklein97[at]gmail.com) -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2001:470:142:0:0:0:0:17 listed in] [list.dnswl.org] 0.0 HTML_MESSAGE BODY: HTML included in message X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.2 (/) --0000000000005276c4063b6c9c65 Content-Type: multipart/alternative; boundary="0000000000005276c3063b6c9c63" --0000000000005276c3063b6c9c63 Content-Type: text/plain; charset="UTF-8" This patch replaces my previous borders-respect-alpha-background frame parameter with an alpha-borders frame parameter, which lets users set the alpha of borders to whatever they desire. Most of the changes are just changing boolean respect_alpha_background parameters to double alpha parameters. respect_alpha_background=true gets replaced with f->alpha_background, and respect_alpha_background=false gets replaced with 1.0 (opaque). I have tested both the GTK3 and PGTK builds. One detail I noticed (prior to this patch) is that on X, internal borders are opaque. However, on PGTK, internal borders take on the alpha-background opacity. Is this intentional? If not, I'm happy to fix it. Best, Garklein In GNU Emacs 30.1 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.49, cairo version 1.18.2) Windowing system distributor 'The X.Org Foundation', version 11.0.12101016 System Description: NixOS 25.11 (Xantusia) Configured using: 'configure --prefix=/nix/store/xkc0y1ycq86fs24fipcbzkph2acwsjnz-emacs-gtk3-30.1 --disable-build-details --with-modules --with-x-toolkit=gtk3 --with-cairo --without-xft --with-compress-install --with-toolkit-scroll-bars --with-native-compilation --without-imagemagick --with-mailutils --without-small-ja-dic --with-tree-sitter --with-xinput2 --without-xwidgets --with-dbus --with-selinux' --0000000000005276c3063b6c9c63 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
This=C2=A0patch replaces my previous borders-respect-= alpha-background frame parameter with an alpha-borders frame parameter, whi= ch lets users set the alpha of borders to whatever they desire.
<= br>
Most of the changes are just changing boolean respect_alpha_b= ackground parameters to double alpha parameters. respect_alpha_background= =3Dtrue gets replaced with f->alpha_background, and respect_alpha_backgr= ound=3Dfalse gets replaced with 1.0 (opaque).

I ha= ve tested both the GTK3 and PGTK builds.

One detai= l I noticed (prior to this patch) is that on X, internal borders are opaque= . However, on PGTK, internal borders take on the alpha-background opacity. = Is this intentional? If not, I'm happy to fix it.

<= div>Best,
Garklein

In GNU Emacs 30.1 (bu= ild 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.49,
cairo version 1.18.2)<= br>Windowing system distributor 'The X.Org Foundation', version 11.= 0.12101016
System Description: NixOS 25.11 (Xantusia)

Configured = using:
=C2=A0'configure
=C2=A0--prefix=3D/nix/store/xkc0y1ycq86fs= 24fipcbzkph2acwsjnz-emacs-gtk3-30.1
=C2=A0--disable-build-details --with= -modules --with-x-toolkit=3Dgtk3
=C2=A0--with-cairo --without-xft --with= -compress-install
=C2=A0--with-toolkit-scroll-bars --with-native-compila= tion
=C2=A0--without-imagemagick --with-mailutils --without-small-ja-dic=
=C2=A0--with-tree-sitter --with-xinput2 --without-xwidgets --with-dbus<= br>=C2=A0--with-selinux'

--0000000000005276c3063b6c9c63-- --0000000000005276c4063b6c9c65 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Allow-borders-to-be-any-alpha-independently-of-frame.patch" Content-Disposition: attachment; filename="0001-Allow-borders-to-be-any-alpha-independently-of-frame.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mdv1whur0 RnJvbSA3NmMxMjY4YjQ3ZDQ3ZjllNzhiZTVmMjQxYTUxZGYxNjk1MDQ3OTVlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHYXJrbGVpbiA8Z2Fya2xlaW45N0BnbWFpbC5jb20+CkRhdGU6 IFNhdCwgMiBBdWcgMjAyNSAyMjowODoxMiAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIEFsbG93IGJv cmRlcnMgdG8gYmUgYW55IGFscGhhLCBpbmRlcGVuZGVudGx5IG9mIGZyYW1lIGFscGhhCgpUaGUg cHJldmlvdXMgJ2JvcmRlcnMtcmVzcGVjdC1hbHBoYS1iYWNrZ3JvdW5kJyBmcmFtZSBwYXJhbWV0 ZXIKaXMgcmVwbGFjZWQgYnkgdGhlICdhbHBoYS1ib3JkZXJzJyBmcmFtZSBwYXJhbWV0ZXIuICBU aGlzCmFsbG93cyBzZXR0aW5nIGJvcmRlciBhbHBoYSB0byBhbnkgb3BhY2l0eSwgaW5kZXBlbmRl bnQgb2YgdGhlCidhbHBoYS1iYWNrZ3JvdW5kJy4KKiBkb2MvbGlzcHJlZi9mcmFtZXMudGV4aSAo Rm9udCBhbmQgQ29sb3IgUGFyYW1ldGVycyk6CkRvY3VtZW50IHRoZSBjaGFuZ2UuCiogc3JjL2Zy YW1lLmMgKGZyYW1lX3Bhcm1fdGFibGUsIHN5bXNfb2ZfZnJhbWUpCihndWlfc2V0X2JvcmRlcnNf cmVzcGVjdF9hbHBoYV9iYWNrZ3JvdW5kKQooZ3VpX3NldF9hbHBoYV9ib3JkZXJzKToKKiBzcmMv ZnJhbWUuaCAoc3RydWN0IGZyYW1lKToKKiBzcmMvYW5kcm9pZGZucy5jICh4X2NyZWF0ZV9mcmFt ZSwgYW5kcm9pZF9jcmVhdGVfdGlwX2ZyYW1lKQooYW5kcm9pZF9mcmFtZV9wYXJtX2hhbmRsZXJz KToKKiBzcmMvaGFpa3VmbnMuYyAoaGFpa3VfY3JlYXRlX2ZyYW1lLCBoYWlrdV9jcmVhdGVfdGlw X2ZyYW1lKQooaGFpa3VfZnJhbWVfcGFybV9oYW5kbGVycyk6Ciogc3JjL25zZm5zLm0gKG5zX2Zy YW1lX3Bhcm1faGFuZGxlcnMsIHhfY3JlYXRlX2ZyYW1lKToKKiBzcmMvcGd0a2Zucy5jIChwZ3Rr X3NldF91cF9wYXJ0aWFsX2FscGhhKQoocGd0a19zZXRfYWxwaGFfYmFja2dyb3VuZCwgcGd0a19z ZXRfYWxwaGFfYm9yZGVycykKKHBndGtfZnJhbWVfcGFybV9oYW5kbGVycywgeF9jcmVhdGVfZnJh bWUpCihwZ3RrX2NyZWF0ZV90aXBfZnJhbWUpOgoqIHNyYy93MzJmbnMuYyAoeF9jcmVhdGVfZnJh bWUsIHczMl9jcmVhdGVfdGlwX2ZyYW1lKQoodzMyX2ZyYW1lX3Bhcm1faGFuZGxlcnMpOgoqIHNy Yy94Zm5zLmMgKHhfc2V0X3VwX3BhcnRpYWxfYWxwaGEsIHhfcGFydGlhbF9hbHBoYV9zdXBwb3J0 ZWQpCih4X3NldF9hbHBoYV9iYWNrZ3JvdW5kLCB4X2NyZWF0ZV9mcmFtZSwgeF9jcmVhdGVfdGlw X2ZyYW1lKQooeF9mcmFtZV9wYXJtX2hhbmRsZXJzKToKUmVwbGFjZSAnYm9yZGVycy1yZXNwZWN0 LWFscGhhLWJhY2tncm91bmQnIHdpdGggJ2FscGhhLWJvcmRlcnMnCiogc3JjL3BndGt0ZXJtLmMg KHBndGtfc2V0X2NyX3NvdXJjZV93aXRoX2NvbG9yKQoocGd0a19zZXRfY3Jfc291cmNlX3dpdGhf Z2NfYmFja2dyb3VuZCkKKHBndGtfc2V0X2NyX3NvdXJjZV93aXRoX2djX2ZvcmVncm91bmQpCihw Z3RrX2RyYXdfcmVjdGFuZ2xlLCBwZ3RrX2ZpbGxfcmVjdGFuZ2xlKQoqIHNyYy9wZ3RrdGVybS5o IChwZ3RrX3NldF9jcl9zb3VyY2Vfd2l0aF9jb2xvcikKKHBndGtfc2V0X2NyX3NvdXJjZV93aXRo X2djX2JhY2tncm91bmQpCihwZ3RrX3NldF9jcl9zb3VyY2Vfd2l0aF9nY19mb3JlZ3JvdW5kKQoq IHNyYy94dGVybS5jICh4X3NldF9jcl9zb3VyY2Vfd2l0aF9nY19mb3JlZ3JvdW5kKQooeF9zZXRf Y3Jfc291cmNlX3dpdGhfZ2NfYmFja2dyb3VuZCkKKHhfZmlsbF9yZWN0YW5nbGUsIHhfY2xlYXJf cmVjdGFuZ2xlLCB4X2NsZWFyX3BvaW50KToKKiBzcmMveHRlcm0uaCAoeF9zZXRfY3Jfc291cmNl X3dpdGhfZ2NfZm9yZWdyb3VuZCkKKHhfc2V0X2NyX3NvdXJjZV93aXRoX2djX2JhY2tncm91bmQp OgpSZXBsYWNlICdib29sIHJlc3BlY3RfYWxwaGFfYmFja2dyb3VuZCcgcGFyYW1ldGVycyB3aXRo Cidkb3VibGUgYWxwaGEnIHBhcmFtZXRlcnMuCiogc3JjL2Z0Y3Jmb250LmMgKGZ0Y3Jmb250X2Ry YXcpOgoqIHNyYy9wZ3RrdGVybS5jIChwZ3RrX2RyYXdfd2luZG93X2RpdmlkZXIpCihwZ3RrX2dl dF9mcmFtZV9hbHBoYV9iYWNrZ3JvdW5kKQoqIHNyYy9wZ3RrdGVybS5oIChwZ3RrX2dldF9mcmFt ZV9hbHBoYV9iYWNrZ3JvdW5kKQoqIHNyYy94dGVybS5jICh4X2RyYXdfd2luZG93X2RpdmlkZXIp Cih4X2NsZWFyX3VuZGVyX2ludGVybmFsX2JvcmRlciwgeF9nZXRfZnJhbWVfYWxwaGFfYmFja2dy b3VuZCk6Ciogc3JjL3h0ZXJtLmggKHhfZ2V0X2ZyYW1lX2FscGhhX2JhY2tncm91bmQpCkltcGxl bWVudCAnYWxwaGEtYm9yZGVycycuCi0tLQogZG9jL2xpc3ByZWYvZnJhbWVzLnRleGkgfCAgIDkg KystCiBzcmMvYW5kcm9pZGZucy5jICAgICAgICB8ICAxMiArKy0KIHNyYy9mcmFtZS5jICAgICAg ICAgICAgIHwgIDMwICsrKysrLS0KIHNyYy9mcmFtZS5oICAgICAgICAgICAgIHwgIDEwICstLQog c3JjL2Z0Y3Jmb250LmMgICAgICAgICAgfCAgMTUgKystLQogc3JjL2hhaWt1Zm5zLmMgICAgICAg ICAgfCAgMTIgKystCiBzcmMvbnNmbnMubSAgICAgICAgICAgICB8ICAgNyArLQogc3JjL3BndGtm bnMuYyAgICAgICAgICAgfCAgMzggKysrKysrLS0tCiBzcmMvcGd0a3Rlcm0uYyAgICAgICAgICB8 IDEyNiArKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogc3JjL3BndGt0ZXJtLmggICAgICAg ICAgfCAgIDcgKy0KIHNyYy93MzJmbnMuYyAgICAgICAgICAgIHwgIDE3ICsrLS0KIHNyYy94Zm5z LmMgICAgICAgICAgICAgIHwgIDc4ICsrKysrKysrKysrKy0tLS0tLQogc3JjL3h0ZXJtLmMgICAg ICAgICAgICAgfCAxNzMgKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQog c3JjL3h0ZXJtLmggICAgICAgICAgICAgfCAgIDUgKy0KIDE0IGZpbGVzIGNoYW5nZWQsIDI5NyBp bnNlcnRpb25zKCspLCAyNDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL2xpc3ByZWYv ZnJhbWVzLnRleGkgYi9kb2MvbGlzcHJlZi9mcmFtZXMudGV4aQppbmRleCA3NDBlYTQzYTkwZi4u YjdmMWU3MDRkODMgMTAwNjQ0Ci0tLSBhL2RvYy9saXNwcmVmL2ZyYW1lcy50ZXhpCisrKyBiL2Rv Yy9saXNwcmVmL2ZyYW1lcy50ZXhpCkBAIC0yNTgyLDEyICsyNTgyLDEzIEBAIEZvbnQgYW5kIENv bG9yIFBhcmFtZXRlcnMKIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgMTAwLCB3 aGVyZSAwIG1lYW5zCiBjb21wbGV0ZWx5IHRyYW5zcGFyZW50IGFuZCAxMDAgbWVhbnMgY29tcGxl dGVseSBvcGFxdWUgKGRlZmF1bHQpLgogCi1AdmluZGV4IGJvcmRlcnMtcmVzcGVjdC1hbHBoYS1i YWNrZ3JvdW5kQHJ7LCBhIGZyYW1lIHBhcmFtZXRlcn0KLUBpdGVtIGJvcmRlcnMtcmVzcGVjdC1h bHBoYS1iYWNrZ3JvdW5kCitAdmluZGV4IGFscGhhLWJvcmRlcnNAcnssIGEgZnJhbWUgcGFyYW1l dGVyfQorQGl0ZW0gYWxwaGEtYm9yZGVycwogQGNpbmRleCBvcGFjaXR5LCBmcmFtZQogQGNpbmRl eCB0cmFuc3BhcmVuY3ksIGZyYW1lCi1XaGVuIG5vbi1AY29kZXtuaWx9LCBpbnRlcm5hbCBib3Jk ZXJzIGFuZCB3aW5kb3cgZGl2aWRlcnMgYXJlCi10cmFuc3BhcmVudCBhY2NvcmRpbmcgdG8gQGNv ZGV7YWxwaGEtYmFja2dyb3VuZH0uCitTZXRzIHRoZSBiYWNrZ3JvdW5kIHRyYW5zcGFyZW5jeSBv ZiBib3JkZXJzICh3aW5kb3cgZGl2aWRlcnMKK2FuZCBpbnRlcm5hbCBib3JkZXJzKS4gIEp1c3Qg bGlrZSBAY29kZXthbHBoYS1iYWNrZ3JvdW5kfSwgaXQKK3Nob3VsZCBiZSBhbiBpbnRlZ2VyIGJl dHdlZW4gMCBhbmQgMTAwLgogQGVuZCB0YWJsZQogCiBUaGUgZm9sbG93aW5nIGZyYW1lIHBhcmFt ZXRlcnMgYXJlIHNlbWktb2Jzb2xldGUgaW4gdGhhdCB0aGV5IGFyZQpkaWZmIC0tZ2l0IGEvc3Jj L2FuZHJvaWRmbnMuYyBiL3NyYy9hbmRyb2lkZm5zLmMKaW5kZXggMWNhZTEyOWMyZGUuLmE3NGM2 NWYwMzExIDEwMDY0NAotLS0gYS9zcmMvYW5kcm9pZGZucy5jCisrKyBiL3NyYy9hbmRyb2lkZm5z LmMKQEAgLTExMTAsOSArMTExMCw4IEBAIERFRlVOICgieC1jcmVhdGUtZnJhbWUiLCBGeF9jcmVh dGVfZnJhbWUsIFN4X2NyZWF0ZV9mcmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiYWxw aGEiLCAiQWxwaGEiLCBSRVNfVFlQRV9OVU1CRVIpOwogICBndWlfZGVmYXVsdF9wYXJhbWV0ZXIg KGYsIHBhcm1zLCBRYWxwaGFfYmFja2dyb3VuZCwgUW5pbCwKICAgICAgICAgICAgICAgICAgICAg ICAgICAiYWxwaGFCYWNrZ3JvdW5kIiwgIkFscGhhQmFja2dyb3VuZCIsIFJFU19UWVBFX05VTUJF Uik7Ci0gIGd1aV9kZWZhdWx0X3BhcmFtZXRlciAoZiwgcGFybXMsIFFib3JkZXJzX3Jlc3BlY3Rf YWxwaGFfYmFja2dyb3VuZCwgUW5pbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiYm9yZGVy c1Jlc3BlY3RBbHBoYUJhY2tncm91bmQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICJCb3Jk ZXJzUmVzcGVjdEFscGhhQmFja2dyb3VuZCIsIFJFU19UWVBFX05VTUJFUik7CisgIGd1aV9kZWZh dWx0X3BhcmFtZXRlciAoZiwgcGFybXMsIFFhbHBoYV9ib3JkZXJzLCBRbmlsLAorICAgICAgICAg ICAgICAgICAgICAgICAgICJhbHBoYUJvcmRlcnMiLCAiQWxwaGFCb3JkZXJzIiwgUkVTX1RZUEVf TlVNQkVSKTsKIAogICBpZiAoIU5JTFAgKHBhcmVudF9mcmFtZSkpCiAgICAgewpAQCAtMjEwMCw5 ICsyMDk5LDggQEAgYW5kcm9pZF9jcmVhdGVfdGlwX2ZyYW1lIChzdHJ1Y3QgYW5kcm9pZF9kaXNw bGF5X2luZm8gKmRweWluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgImFscGhhIiwgIkFs cGhhIiwgUkVTX1RZUEVfTlVNQkVSKTsKICAgZ3VpX2RlZmF1bHRfcGFyYW1ldGVyIChmLCBwYXJt cywgUWFscGhhX2JhY2tncm91bmQsIFFuaWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImFs cGhhQmFja2dyb3VuZCIsICJBbHBoYUJhY2tncm91bmQiLCBSRVNfVFlQRV9OVU1CRVIpOwotICBn dWlfZGVmYXVsdF9wYXJhbWV0ZXIgKGYsIHBhcm1zLCBRYm9yZGVyc19yZXNwZWN0X2FscGhhX2Jh Y2tncm91bmQsIFFuaWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgImJvcmRlcnNSZXNwZWN0 QWxwaGFCYWNrZ3JvdW5kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiQm9yZGVyc1Jlc3Bl Y3RBbHBoYUJhY2tncm91bmQiLCBSRVNfVFlQRV9OVU1CRVIpOworICBndWlfZGVmYXVsdF9wYXJh bWV0ZXIgKGYsIHBhcm1zLCBRYWxwaGFfYm9yZGVycywgUW5pbCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAiYWxwaGFCb3JkZXJzIiwgIkFscGhhQm9yZGVycyIsIFJFU19UWVBFX05VTUJFUik7 CiAKICAgLyogQWRkIGB0b29sdGlwJyBmcmFtZSBwYXJhbWV0ZXIncyBkZWZhdWx0IHZhbHVlLiAq LwogICBpZiAoTklMUCAoRmZyYW1lX3BhcmFtZXRlciAoZnJhbWUsIFF0b29sdGlwKSkpCkBAIC0z MTg4LDcgKzMxODYsNyBAQCBhbmRyb2lkX3NldF9ub19hY2NlcHRfZm9jdXMgKHN0cnVjdCBmcmFt ZSAqZiwgTGlzcF9PYmplY3QgbmV3X3ZhbHVlLAogICBOVUxMLAogICBndWlfc2V0X25vX3NwZWNp YWxfZ2x5cGhzLAogICBOVUxMLAotICBndWlfc2V0X2JvcmRlcnNfcmVzcGVjdF9hbHBoYV9iYWNr Z3JvdW5kLAorICBndWlfc2V0X2FscGhhX2JvcmRlcnMsCiAgIE5VTEwsCiB9OwogCmRpZmYgLS1n aXQgYS9zcmMvZnJhbWUuYyBiL3NyYy9mcmFtZS5jCmluZGV4IDZhOTM5NDVjZTMzLi40NWQyNmIy ZmM0MCAxMDA2NDQKLS0tIGEvc3JjL2ZyYW1lLmMKKysrIGIvc3JjL2ZyYW1lLmMKQEAgLTQ2MTcs OCArNDYxNyw3IEBAIERFRlVOICgiZnJhbWUtc2NhbGUtZmFjdG9yIiwgRmZyYW1lX3NjYWxlX2Zh Y3RvciwgU2ZyYW1lX3NjYWxlX2ZhY3RvciwKICAgeyJvdmVycmlkZS1yZWRpcmVjdCIsCQlTWU1C T0xfSU5ERVggKFFvdmVycmlkZV9yZWRpcmVjdCl9LAogICB7Im5vLXNwZWNpYWwtZ2x5cGhzIiwJ CVNZTUJPTF9JTkRFWCAoUW5vX3NwZWNpYWxfZ2x5cGhzKX0sCiAgIHsiYWxwaGEtYmFja2dyb3Vu ZCIsCQlTWU1CT0xfSU5ERVggKFFhbHBoYV9iYWNrZ3JvdW5kKX0sCi0gIHsiYm9yZGVycy1yZXNw ZWN0LWFscGhhLWJhY2tncm91bmQiLAotCQkJCVNZTUJPTF9JTkRFWCAoUWJvcmRlcnNfcmVzcGVj dF9hbHBoYV9iYWNrZ3JvdW5kKX0sCisgIHsiYWxwaGEtYm9yZGVycyIsCQlTWU1CT0xfSU5ERVgg KFFhbHBoYV9ib3JkZXJzKX0sCiAgIHsidXNlLWZyYW1lLXN5bmNocm9uaXphdGlvbiIsCVNZTUJP TF9JTkRFWCAoUXVzZV9mcmFtZV9zeW5jaHJvbml6YXRpb24pfSwKICNpZmRlZiBIQVZFX1hfV0lO RE9XUwogICB7InNoYWRlZCIsCQkJU1lNQk9MX0lOREVYIChRc2hhZGVkKX0sCkBAIC01ODIxLDEw ICs1ODIwLDI5IEBAIGd1aV9zZXRfYWxwaGFfYmFja2dyb3VuZCAoc3RydWN0IGZyYW1lICpmLCBM aXNwX09iamVjdCBhcmcsIExpc3BfT2JqZWN0IG9sZHZhbCkKIH0KIAogdm9pZAotZ3VpX3NldF9i b3JkZXJzX3Jlc3BlY3RfYWxwaGFfYmFja2dyb3VuZCAoc3RydWN0IGZyYW1lICpmLCBMaXNwX09i amVjdCBhcmcsCi0JCQkJCSAgTGlzcF9PYmplY3Qgb2xkdmFsKQorZ3VpX3NldF9hbHBoYV9ib3Jk ZXJzIChzdHJ1Y3QgZnJhbWUgKmYsIExpc3BfT2JqZWN0IGFyZywgTGlzcF9PYmplY3Qgb2xkdmFs KQogewotICBmLT5ib3JkZXJzX3Jlc3BlY3RfYWxwaGFfYmFja2dyb3VuZCA9ICFOSUxQIChhcmcp OworICBkb3VibGUgYWxwaGEgPSAxLjA7CisKKyAgaWYgKE5JTFAgKGFyZykpCisgICAgYWxwaGEg PSAxLjA7CisgIGVsc2UgaWYgKEZMT0FUUCAoYXJnKSkKKyAgICB7CisgICAgICBhbHBoYSA9IFhG TE9BVF9EQVRBIChhcmcpOworICAgICAgaWYgKCEgKDAgPD0gYWxwaGEgJiYgYWxwaGEgPD0gMS4w KSkKKwlhcmdzX291dF9vZl9yYW5nZSAobWFrZV9mbG9hdCAoMC4wKSwgbWFrZV9mbG9hdCAoMS4w KSk7CisgICAgfQorICBlbHNlIGlmIChGSVhOVU1QIChhcmcpKQorICAgIHsKKyAgICAgIEVNQUNT X0lOVCBpYWxwaGEgPSBYRklYTlVNIChhcmcpOworICAgICAgaWYgKCEgKDAgPD0gaWFscGhhICYm IGlhbHBoYSA8PSAxMDApKQorCWFyZ3Nfb3V0X29mX3JhbmdlIChtYWtlX2ZpeG51bSAoMCksIG1h a2VfZml4bnVtICgxMDApKTsKKyAgICAgIGFscGhhID0gaWFscGhhIC8gMTAwLjA7CisgICAgfQor ICBlbHNlCisgICAgd3JvbmdfdHlwZV9hcmd1bWVudCAoUW51bWJlcnAsIGFyZyk7CisKKyAgZi0+ YWxwaGFfYm9yZGVycyA9IGFscGhhOwogfQogCiAvKioKQEAgLTcwMTgsNyArNzAzNiw3IEBAIHN5 bXNfb2ZfZnJhbWUgKHZvaWQpCiAKICAgREVGU1lNIChRYWxwaGEsICJhbHBoYSIpOwogICBERUZT WU0gKFFhbHBoYV9iYWNrZ3JvdW5kLCAiYWxwaGEtYmFja2dyb3VuZCIpOwotICBERUZTWU0gKFFi b3JkZXJzX3Jlc3BlY3RfYWxwaGFfYmFja2dyb3VuZCwgImJvcmRlcnMtcmVzcGVjdC1hbHBoYS1i YWNrZ3JvdW5kIik7CisgIERFRlNZTSAoUWFscGhhX2JvcmRlcnMsICJhbHBoYS1ib3JkZXJzIik7 CiAgIERFRlNZTSAoUWF1dG9fbG93ZXIsICJhdXRvLWxvd2VyIik7CiAgIERFRlNZTSAoUWF1dG9f cmFpc2UsICJhdXRvLXJhaXNlIik7CiAgIERFRlNZTSAoUWJvcmRlcl9jb2xvciwgImJvcmRlci1j b2xvciIpOwpkaWZmIC0tZ2l0IGEvc3JjL2ZyYW1lLmggYi9zcmMvZnJhbWUuaAppbmRleCA5MjM4 YjRjY2Q2ZS4uMjkyY2I1Mjk2NTQgMTAwNjQ0Ci0tLSBhL3NyYy9mcmFtZS5oCisrKyBiL3NyYy9m cmFtZS5oCkBAIC01MzEsMTAgKzUzMSw2IEBAICNkZWZpbmUgRU1BQ1NfRlJBTUVfSAogICAgICBz ZWxlY3RlZCB3aW5kb3cgaW4gdGhlIGZyYW1lLCBhc3N1bWluZyB0aGVyZSBpcyBzdGlsbCBhbiBh Y3RpdmUKICAgICAgbWluaWJ1ZmZlciBpbiB0aGF0IG1pbmktd2luZG93LiAgKi8KICAgYm9vbF9i ZiBzZWxlY3RfbWluaV93aW5kb3dfZmxhZyA6IDE7Ci0KLSAgLyogU2V0IHRvIHRydWUgd2hlbiBi b3JkZXJzJyB0cmFuc3BhcmVuY2llcyBzaG91bGQgbWF0Y2ggdGhlCi0gICAgIGJhY2tncm91bmQg b3BhY2l0eS4gICovCi0gIGJvb2xfYmYgYm9yZGVyc19yZXNwZWN0X2FscGhhX2JhY2tncm91bmQg OiAxOwogICAvKiBCaXRmaWVsZCBhcmVhIGVuZHMgaGVyZS4gICovCiAKICAgLyogVGhpcyBmcmFt ZSdzIGNoYW5nZSBzdGFtcCwgc2V0IHRoZSBsYXN0IHRpbWUgd2luZG93IGNoYW5nZQpAQCAtNzEw LDYgKzcwNiw5IEBAICNkZWZpbmUgRU1BQ1NfRlJBTUVfSAogICAvKiBCYWNrZ3JvdW5kIG9wYWNp dHkgKi8KICAgZG91YmxlIGFscGhhX2JhY2tncm91bmQ7CiAKKyAgLyogQm9yZGVyIG9wYWN0aXkg Ki8KKyAgZG91YmxlIGFscGhhX2JvcmRlcnM7CisKICAgLyogRXhwb25lbnQgZm9yIGdhbW1hIGNv cnJlY3Rpb24gb2YgY29sb3JzLiAgMS8oVklFV0lOR19HQU1NQSAqCiAgICAgIFNDUkVFTl9HQU1N QSkgd2hlcmUgdmlld2luZ19nYW1tYSBpcyAwLjQ1NDUgYW5kIFNDUkVFTl9HQU1NQSBpcyBhCiAg ICAgIGZyYW1lIHBhcmFtZXRlci4gIDAgbWVhbnMgZG9uJ3QgZG8gZ2FtbWEgY29ycmVjdGlvbi4g ICovCkBAIC0xODUzLDggKzE4NTIsNyBAQCAjZGVmaW5lIEVNQUNTX0NMQVNTICJFbWFjcyIKIAog ZXh0ZXJuIHZvaWQgZ3VpX3NldF9hbHBoYSAoc3RydWN0IGZyYW1lICosIExpc3BfT2JqZWN0LCBM aXNwX09iamVjdCk7CiBleHRlcm4gdm9pZCBndWlfc2V0X2FscGhhX2JhY2tncm91bmQgKHN0cnVj dCBmcmFtZSAqLCBMaXNwX09iamVjdCwgTGlzcF9PYmplY3QpOwotZXh0ZXJuIHZvaWQgZ3VpX3Nl dF9ib3JkZXJzX3Jlc3BlY3RfYWxwaGFfYmFja2dyb3VuZCAoc3RydWN0IGZyYW1lICosIExpc3Bf T2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGlzcF9PYmplY3QpOworZXh0ZXJuIHZvaWQgZ3VpX3NldF9hbHBoYV9ib3JkZXJzIChz dHJ1Y3QgZnJhbWUgKiwgTGlzcF9PYmplY3QsIExpc3BfT2JqZWN0KTsKIGV4dGVybiB2b2lkIGd1 aV9zZXRfbm9fc3BlY2lhbF9nbHlwaHMgKHN0cnVjdCBmcmFtZSAqLCBMaXNwX09iamVjdCwgTGlz cF9PYmplY3QpOwogCiBleHRlcm4gdm9pZCB2YWxpZGF0ZV94X3Jlc291cmNlX25hbWUgKHZvaWQp OwpkaWZmIC0tZ2l0IGEvc3JjL2Z0Y3Jmb250LmMgYi9zcmMvZnRjcmZvbnQuYwppbmRleCA0MmVl NmMzZTU3Mi4uZTU3MTVmNGU5MzYgMTAwNjQ0Ci0tLSBhL3NyYy9mdGNyZm9udC5jCisrKyBiL3Ny Yy9mdGNyZm9udC5jCkBAIC01ODYsMTAgKzU4NiwxNSBAQCBmdGNyZm9udF9kcmF3IChzdHJ1Y3Qg Z2x5cGhfc3RyaW5nICpzLAogICAgIHsKICNpZm5kZWYgVVNFX0JFX0NBSVJPCiAjaWZkZWYgSEFW RV9YX1dJTkRPV1MKLSAgICAgIHhfc2V0X2NyX3NvdXJjZV93aXRoX2djX2JhY2tncm91bmQgKGYs IHMtPmdjLCBzLT5obCAhPSBEUkFXX0NVUlNPUik7CisgICAgICBkb3VibGUgYWxwaGEgPSBzLT5o bCAhPSBEUkFXX0NVUlNPUgorICAgICAgICA/IHhfZ2V0X2ZyYW1lX2FscGhhX2JhY2tncm91bmQg KGYpCisgICAgICAgIDogMS4wOworICAgICAgeF9zZXRfY3Jfc291cmNlX3dpdGhfZ2NfYmFja2dy b3VuZCAoZiwgcy0+Z2MsIGFscGhhKTsKICNlbHNlCi0gICAgICBwZ3RrX3NldF9jcl9zb3VyY2Vf d2l0aF9jb2xvciAoZiwgcy0+eGdjdi5iYWNrZ3JvdW5kLAotCQkJCSAgICAgcy0+aGwgIT0gRFJB V19DVVJTT1IpOworICAgICAgZG91YmxlIGFscGhhID0gcy0+aGwgIT0gRFJBV19DVVJTT1IKKyAg ICAgICAgPyBwZ3RrX2dldF9mcmFtZV9hbHBoYV9iYWNrZ3JvdW5kIChmKQorICAgICAgICA6IDEu MDsKKyAgICAgIHBndGtfc2V0X2NyX3NvdXJjZV93aXRoX2NvbG9yIChmLCBzLT54Z2N2LmJhY2tn cm91bmQsIGFscGhhKTsKICNlbmRpZgogI2Vsc2UKICAgICAgIHVpbnQzMl90IGNvbCA9IGJlX2Jh Y2tncm91bmQ7CkBAIC02MTUsOSArNjIwLDkgQEAgZnRjcmZvbnRfZHJhdyAoc3RydWN0IGdseXBo X3N0cmluZyAqcywKICAgICB9CiAjaWZuZGVmIFVTRV9CRV9DQUlSTwogI2lmZGVmIEhBVkVfWF9X SU5ET1dTCi0gIHhfc2V0X2NyX3NvdXJjZV93aXRoX2djX2ZvcmVncm91bmQgKGYsIHMtPmdjLCBm YWxzZSk7CisgIHhfc2V0X2NyX3NvdXJjZV93aXRoX2djX2ZvcmVncm91bmQgKGYsIHMtPmdjLCAx LjApOwogI2Vsc2UKLSAgcGd0a19zZXRfY3Jfc291cmNlX3dpdGhfY29sb3IgKGYsIHMtPnhnY3Yu Zm9yZWdyb3VuZCwgZmFsc2UpOworICBwZ3RrX3NldF9jcl9zb3VyY2Vfd2l0aF9jb2xvciAoZiwg cy0+eGdjdi5mb3JlZ3JvdW5kLCAxLjApOwogI2VuZGlmCiAjZWxzZQogICB1aW50MzJfdCBjb2wg PSBiZV9mb3JlZ3JvdW5kOwpkaWZmIC0tZ2l0IGEvc3JjL2hhaWt1Zm5zLmMgYi9zcmMvaGFpa3Vm bnMuYwppbmRleCA1Y2NhOTVlZTkwYS4uYWE3OWZlNmYzNzUgMTAwNjQ0Ci0tLSBhL3NyYy9oYWlr dWZucy5jCisrKyBiL3NyYy9oYWlrdWZucy5jCkBAIC05MzgsOSArOTM4LDggQEAgaGFpa3VfY3Jl YXRlX2ZyYW1lIChMaXNwX09iamVjdCBwYXJtcykKIAkJCSAiYWxwaGEiLCAiQWxwaGEiLCBSRVNf VFlQRV9OVU1CRVIpOwogICBndWlfZGVmYXVsdF9wYXJhbWV0ZXIgKGYsIHBhcm1zLCBRYWxwaGFf YmFja2dyb3VuZCwgUW5pbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAiYWxwaGFCYWNrZ3Jv dW5kIiwgIkFscGhhQmFja2dyb3VuZCIsIFJFU19UWVBFX05VTUJFUik7Ci0gIGd1aV9kZWZhdWx0 X3BhcmFtZXRlciAoZiwgcGFybXMsIFFib3JkZXJzX3Jlc3BlY3RfYWxwaGFfYmFja2dyb3VuZCwg UW5pbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiYm9yZGVyc1Jlc3BlY3RBbHBoYUJhY2tn cm91bmQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICJCb3JkZXJzUmVzcGVjdEFscGhhQmFj a2dyb3VuZCIsIFJFU19UWVBFX05VTUJFUik7CisgIGd1aV9kZWZhdWx0X3BhcmFtZXRlciAoZiwg cGFybXMsIFFhbHBoYV9ib3JkZXJzLCBRbmlsLAorICAgICAgICAgICAgICAgICAgICAgICAgICJh bHBoYUJvcmRlcnMiLCAiQWxwaGFCb3JkZXJzIiwgUkVTX1RZUEVfTlVNQkVSKTsKICAgZ3VpX2Rl ZmF1bHRfcGFyYW1ldGVyIChmLCBwYXJtcywgUWZ1bGxzY3JlZW4sIFFuaWwsCiAJCQkgImZ1bGxz Y3JlZW4iLCAiRnVsbHNjcmVlbiIsIFJFU19UWVBFX1NZTUJPTCk7CiAKQEAgLTExNjUsOSArMTE2 NCw4IEBAIGhhaWt1X2NyZWF0ZV90aXBfZnJhbWUgKExpc3BfT2JqZWN0IHBhcm1zKQogICAgICAg ICAgICAgICAgICAgICAgICAgICJhbHBoYSIsICJBbHBoYSIsIFJFU19UWVBFX05VTUJFUik7CiAg IGd1aV9kZWZhdWx0X3BhcmFtZXRlciAoZiwgcGFybXMsIFFhbHBoYV9iYWNrZ3JvdW5kLCBRbmls LAogICAgICAgICAgICAgICAgICAgICAgICAgICJhbHBoYUJhY2tncm91bmQiLCAiQWxwaGFCYWNr Z3JvdW5kIiwgUkVTX1RZUEVfTlVNQkVSKTsKLSAgZ3VpX2RlZmF1bHRfcGFyYW1ldGVyIChmLCBw YXJtcywgUWJvcmRlcnNfcmVzcGVjdF9hbHBoYV9iYWNrZ3JvdW5kLCBRbmlsLAotICAgICAgICAg ICAgICAgICAgICAgICAgICJib3JkZXJzUmVzcGVjdEFscGhhQmFja2dyb3VuZCIsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgIkJvcmRlcnNSZXNwZWN0QWxwaGFCYWNrZ3JvdW5kIiwgUkVTX1RZ UEVfTlVNQkVSKTsKKyAgZ3VpX2RlZmF1bHRfcGFyYW1ldGVyIChmLCBwYXJtcywgUWFscGhhX2Jv cmRlcnMsIFFuaWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgImFscGhhQm9yZGVycyIsICJB bHBoYUJvcmRlcnMiLCBSRVNfVFlQRV9OVU1CRVIpOwogCiAgIGluaXRpYWxfc2V0dXBfYmFja19i dWZmZXIgKGYpOwogCkBAIC0zMTk1LDcgKzMxOTMsNyBAQCBERUZVTiAoImhhaWt1LWRpc3BsYXkt bW9uaXRvci1hdHRyaWJ1dGVzLWxpc3QiLAogICAgIGhhaWt1X3NldF9vdmVycmlkZV9yZWRpcmVj dCwKICAgICBndWlfc2V0X25vX3NwZWNpYWxfZ2x5cGhzLAogICAgIGd1aV9zZXRfYWxwaGFfYmFj a2dyb3VuZCwKLSAgICBndWlfc2V0X2JvcmRlcnNfcmVzcGVjdF9hbHBoYV9iYWNrZ3JvdW5kLAor ICAgIGd1aV9zZXRfYWxwaGFfYm9yZGVycywKICAgICBoYWlrdV9zZXRfdXNlX2ZyYW1lX3N5bmNo cm9uaXphdGlvbiwKICAgfTsKIApkaWZmIC0tZ2l0IGEvc3JjL25zZm5zLm0gYi9zcmMvbnNmbnMu bQppbmRleCAzNTI4YzRhY2Q1MC4uZjJiNzZlNjMwMWIgMTAwNjQ0Ci0tLSBhL3NyYy9uc2Zucy5t CisrKyBiL3NyYy9uc2Zucy5tCkBAIC0xMTA2LDcgKzExMDYsNyBAQCBUdXJuIHRoZSBpbnB1dCBt ZW51IChhbiBOU01lbnUpIGludG8gYSBsaXNwIGxpc3QgZm9yIHRyYWNraW5nIG9uIGxpc3Agc2lk ZS4KICAgMCwgLyogeF9zZXRfb3ZlcnJpZGVfcmVkaXJlY3QgKi8KICAgZ3VpX3NldF9ub19zcGVj aWFsX2dseXBocywKICAgZ3VpX3NldF9hbHBoYV9iYWNrZ3JvdW5kLAotICBndWlfc2V0X2JvcmRl cnNfcmVzcGVjdF9hbHBoYV9iYWNrZ3JvdW5kLAorICBndWlfc2V0X2FscGhhX2JvcmRlcnMsCiAg IE5VTEwsCiAjaWZkZWYgTlNfSU1QTF9DT0NPQQogICBuc19zZXRfYXBwZWFyYW5jZSwKQEAgLTE1 MzMsOSArMTUzMyw4IEBAIFR1cm4gdGhlIGlucHV0IG1lbnUgKGFuIE5TTWVudSkgaW50byBhIGxp c3AgbGlzdCBmb3IgdHJhY2tpbmcgb24gbGlzcCBzaWRlLgogICAgICAgICAgICAgICAgICAgICAg ICAgICJhbHBoYSIsICJBbHBoYSIsIFJFU19UWVBFX05VTUJFUik7CiAgIGd1aV9kZWZhdWx0X3Bh cmFtZXRlciAoZiwgcGFybXMsIFFhbHBoYV9iYWNrZ3JvdW5kLCBRbmlsLAogICAgICAgICAgICAg ICAgICAgICAgICAgICJhbHBoYUJhY2tncm91bmQiLCAiQWxwaGFCYWNrZ3JvdW5kIiwgUkVTX1RZ UEVfTlVNQkVSKTsKLSAgZ3VpX2RlZmF1bHRfcGFyYW1ldGVyIChmLCBwYXJtcywgUWJvcmRlcnNf cmVzcGVjdF9hbHBoYV9iYWNrZ3JvdW5kLCBRbmlsLAotICAgICAgICAgICAgICAgICAgICAgICAg ICJib3JkZXJzUmVzcGVjdEFscGhhQmFja2dyb3VuZCIsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgIkJvcmRlcnNSZXNwZWN0QWxwaGFCYWNrZ3JvdW5kIiwgUkVTX1RZUEVfTlVNQkVSKTsKKyAg Z3VpX2RlZmF1bHRfcGFyYW1ldGVyIChmLCBwYXJtcywgUWFscGhhX2JvcmRlcnMsIFFuaWwsCisg ICAgICAgICAgICAgICAgICAgICAgICAgImFscGhhQm9yZGVycyIsICJBbHBoYUJvcmRlcnMiLCBS RVNfVFlQRV9OVU1CRVIpOwogICBndWlfZGVmYXVsdF9wYXJhbWV0ZXIgKGYsIHBhcm1zLCBRZnVs bHNjcmVlbiwgUW5pbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZnVsbHNjcmVlbiIsICJG dWxsc2NyZWVuIiwgUkVTX1RZUEVfU1lNQk9MKTsKIApkaWZmIC0tZ2l0IGEvc3JjL3BndGtmbnMu YyBiL3NyYy9wZ3RrZm5zLmMKaW5kZXggOTE3YzllN2FiNjcuLjM1YTc0MDc5MzA3IDEwMDY0NAot LS0gYS9zcmMvcGd0a2Zucy5jCisrKyBiL3NyYy9wZ3RrZm5zLmMKQEAgLTIyMSwyNCArMjIxLDQw IEBAIHBndGtfc2V0X2JhY2tncm91bmRfY29sb3IgKHN0cnVjdCBmcmFtZSAqZiwgTGlzcF9PYmpl Y3QgYXJnLCBMaXNwX09iamVjdCBvbGR2YWwpCiAgIHVuYmxvY2tfaW5wdXQgKCk7CiB9CiAKKy8q IFVzZWQgZm9yIGZyYW1lIHBhcmFtZXRlcnMgbGlrZSBhbHBoYS1iYWNrZ3JvdW5kIGFuZCBhbHBo YS1ib3JkZXJzLAorICAgd2hpY2ggbWFrZSBvbmx5IHBhcnQgb2YgdGhlIGZyYW1lIHRyYW5zcGFy ZW50ICovCisKIHN0YXRpYyB2b2lkCi1wZ3RrX3NldF9hbHBoYV9iYWNrZ3JvdW5kIChzdHJ1Y3Qg ZnJhbWUgKmYsIExpc3BfT2JqZWN0IGFyZywgTGlzcF9PYmplY3Qgb2xkdmFsKQorcGd0a19zZXRf dXBfcGFydGlhbF9hbHBoYSAoc3RydWN0IGZyYW1lICpmKQogewotICBndWlfc2V0X2FscGhhX2Jh Y2tncm91bmQgKGYsIGFyZywgb2xkdmFsKTsKKyAgYm9vbCBwYXJ0aWFsX2FscGhhID0gZi0+YWxw aGFfYmFja2dyb3VuZCAhPSAxLjAgfHwgZi0+YWxwaGFfYm9yZGVycyAhPSAxLjA7CiAKICAgLyog VGhpcyBwcmV2ZW50cyBHVEsgZnJvbSBwYWludGluZyB0aGUgd2luZG93J3MgYmFja2dyb3VuZCwg d2hpY2gKICAgICAgaW50ZXJmZXJlcyB3aXRoIHRyYW5zcGFyZW50IGJhY2tncm91bmQgaW4gc29t ZSBlbnZpcm9ubWVudHMgKi8KIAotICBndGtfd2lkZ2V0X3NldF9hcHBfcGFpbnRhYmxlIChGUkFN RV9HVEtfT1VURVJfV0lER0VUIChmKSwKLQkJCQlmLT5hbHBoYV9iYWNrZ3JvdW5kICE9IDEuMCk7 CisgIGd0a193aWRnZXRfc2V0X2FwcF9wYWludGFibGUgKEZSQU1FX0dUS19PVVRFUl9XSURHRVQg KGYpLCBwYXJ0aWFsX2FscGhhKTsKIAogICBpZiAoRlJBTUVfR1RLX09VVEVSX1dJREdFVCAoZikK ICAgICAgICYmIGd0a193aWRnZXRfZ2V0X3JlYWxpemVkIChGUkFNRV9HVEtfT1VURVJfV0lER0VU IChmKSkKLSAgICAgICYmIGYtPmFscGhhX2JhY2tncm91bmQgIT0gMS4wKQorICAgICAgJiYgcGFy dGlhbF9hbHBoYSkKICAgICBnZGtfd2luZG93X3NldF9vcGFxdWVfcmVnaW9uIChndGtfd2lkZ2V0 X2dldF93aW5kb3cgKEZSQU1FX0dUS19PVVRFUl9XSURHRVQgKGYpKSwKIAkJCQkgIE5VTEwpOwog fQogCitzdGF0aWMgdm9pZAorcGd0a19zZXRfYWxwaGFfYmFja2dyb3VuZCAoc3RydWN0IGZyYW1l ICpmLCBMaXNwX09iamVjdCBhcmcsIExpc3BfT2JqZWN0IG9sZHZhbCkKK3sKKyAgZ3VpX3NldF9h bHBoYV9iYWNrZ3JvdW5kIChmLCBhcmcsIG9sZHZhbCk7CisgIHBndGtfc2V0X3VwX3BhcnRpYWxf YWxwaGEgKGYpOworfQorCitzdGF0aWMgdm9pZAorcGd0a19zZXRfYWxwaGFfYm9yZGVycyAoc3Ry dWN0IGZyYW1lICpmLCBMaXNwX09iamVjdCBhcmcsIExpc3BfT2JqZWN0IG9sZHZhbCkKK3sKKyAg Z3VpX3NldF9hbHBoYV9ib3JkZXJzIChmLCBhcmcsIG9sZHZhbCk7CisgIHBndGtfc2V0X3VwX3Bh cnRpYWxfYWxwaGEgKGYpOworfQorCiBzdGF0aWMgdm9pZAogcGd0a19zZXRfYm9yZGVyX2NvbG9y IChzdHJ1Y3QgZnJhbWUgKmYsIExpc3BfT2JqZWN0IGFyZywgTGlzcF9PYmplY3Qgb2xkdmFsKQog ewpAQCAtOTg1LDcgKzEwMDEsNyBAQCBERUZVTiAoIngtZXhwb3J0LWZyYW1lcyIsIEZ4X2V4cG9y dF9mcmFtZXMsIFN4X2V4cG9ydF9mcmFtZXMsIDAsIDIsIDAsCiAgICAgcGd0a19zZXRfb3ZlcnJp ZGVfcmVkaXJlY3QsCiAgICAgZ3VpX3NldF9ub19zcGVjaWFsX2dseXBocywKICAgICBwZ3RrX3Nl dF9hbHBoYV9iYWNrZ3JvdW5kLAotICAgIGd1aV9zZXRfYm9yZGVyc19yZXNwZWN0X2FscGhhX2Jh Y2tncm91bmQsCisgICAgcGd0a19zZXRfYWxwaGFfYm9yZGVycywKICAgICBOVUxMLAogICB9Owog CkBAIC0xNTcyLDkgKzE1ODgsOCBAQCAjZGVmaW5lIElOU1RBTExfQ1VSU09SKEZJRUxELCBOQU1F KSBcCiAJCQkgImFscGhhIiwgIkFscGhhIiwgUkVTX1RZUEVfTlVNQkVSKTsKICAgZ3VpX2RlZmF1 bHRfcGFyYW1ldGVyIChmLCBwYXJtcywgUWFscGhhX2JhY2tncm91bmQsIFFuaWwsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgImFscGhhQmFja2dyb3VuZCIsICJBbHBoYUJhY2tncm91bmQiLCBS RVNfVFlQRV9OVU1CRVIpOwotICBndWlfZGVmYXVsdF9wYXJhbWV0ZXIgKGYsIHBhcm1zLCBRYm9y ZGVyc19yZXNwZWN0X2FscGhhX2JhY2tncm91bmQsIFFuaWwsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgImJvcmRlcnNSZXNwZWN0QWxwaGFCYWNrZ3JvdW5kIiwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAiQm9yZGVyc1Jlc3BlY3RBbHBoYUJhY2tncm91bmQiLCBSRVNfVFlQRV9OVU1CRVIp OworICBndWlfZGVmYXVsdF9wYXJhbWV0ZXIgKGYsIHBhcm1zLCBRYWxwaGFfYm9yZGVycywgUW5p bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiYWxwaGFCb3JkZXJzIiwgIkFscGhhQm9yZGVy cyIsIFJFU19UWVBFX05VTUJFUik7CiAKICAgaWYgKCFOSUxQIChwYXJlbnRfZnJhbWUpKQogICAg IHsKQEAgLTI3MzQsOSArMjc0OSw4IEBAIHBndGtfY3JlYXRlX3RpcF9mcmFtZSAoc3RydWN0IHBn dGtfZGlzcGxheV9pbmZvICpkcHlpbmZvLCBMaXNwX09iamVjdCBwYXJtcywgc3RyCiAgICAgICAg ICAgICAgICAgICAgICAgICAgImFscGhhIiwgIkFscGhhIiwgUkVTX1RZUEVfTlVNQkVSKTsKICAg Z3VpX2RlZmF1bHRfcGFyYW1ldGVyIChmLCBwYXJtcywgUWFscGhhX2JhY2tncm91bmQsIFFuaWws CiAgICAgICAgICAgICAgICAgICAgICAgICAgImFscGhhQmFja2dyb3VuZCIsICJBbHBoYUJhY2tn cm91bmQiLCBSRVNfVFlQRV9OVU1CRVIpOwotICBndWlfZGVmYXVsdF9wYXJhbWV0ZXIgKGYsIHBh cm1zLCBRYm9yZGVyc19yZXNwZWN0X2FscGhhX2JhY2tncm91bmQsIFFuaWwsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgImJvcmRlcnNSZXNwZWN0QWxwaGFCYWNrZ3JvdW5kIiwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAiQm9yZGVyc1Jlc3BlY3RBbHBoYUJhY2tncm91bmQiLCBSRVNfVFlQ RV9OVU1CRVIpOworICBndWlfZGVmYXVsdF9wYXJhbWV0ZXIgKGYsIHBhcm1zLCBRYWxwaGFfYm9y ZGVycywgUW5pbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiYWxwaGFCb3JkZXJzIiwgIkFs cGhhQm9yZGVycyIsIFJFU19UWVBFX05VTUJFUik7CiAKICAgLyogQWRkIGB0b29sdGlwJyBmcmFt ZSBwYXJhbWV0ZXIncyBkZWZhdWx0IHZhbHVlLiAqLwogICBpZiAoTklMUCAoRmZyYW1lX3BhcmFt ZXRlciAoZnJhbWUsIFF0b29sdGlwKSkpCmRpZmYgLS1naXQgYS9zcmMvcGd0a3Rlcm0uYyBiL3Ny Yy9wZ3RrdGVybS5jCmluZGV4IGE3YmUyZDkwODk5Li5jMDdlODUyNzhiMCAxMDA2NDQKLS0tIGEv c3JjL3BndGt0ZXJtLmMKKysrIGIvc3JjL3BndGt0ZXJtLmMKQEAgLTExMSw3ICsxMTEsNyBAQCAj ZGVmaW5lIEZSQU1FX0NSX1NVUkZBQ0UoZikJCShjYWlyb19nZXRfdGFyZ2V0IChGUkFNRV9DUl9D T05URVhUIChmKSkpCiBzdGF0aWMgdm9pZCBwZ3RrX2RlbGV0ZV9kaXNwbGF5IChzdHJ1Y3QgcGd0 a19kaXNwbGF5X2luZm8gKik7CiBzdGF0aWMgdm9pZCBwZ3RrX2NsZWFyX2ZyYW1lX2FyZWEgKHN0 cnVjdCBmcmFtZSAqLCBpbnQsIGludCwgaW50LCBpbnQpOwogc3RhdGljIHZvaWQgcGd0a19maWxs X3JlY3RhbmdsZSAoc3RydWN0IGZyYW1lICosIHVuc2lnbmVkIGxvbmcsIGludCwgaW50LAotCQkJ CSBpbnQsIGludCwgYm9vbCk7CisJCQkJIGludCwgaW50LCBkb3VibGUpOwogc3RhdGljIHZvaWQg cGd0a19jbGlwX3RvX3JvdyAoc3RydWN0IHdpbmRvdyAqLCBzdHJ1Y3QgZ2x5cGhfcm93ICosCiAJ CQkgICAgICBlbnVtIGdseXBoX3Jvd19hcmVhLCBjYWlyb190ICopOwogc3RhdGljIHN0cnVjdCBm cmFtZSAqcGd0a19hbnlfd2luZG93X3RvX2ZyYW1lIChHZGtXaW5kb3cgKik7CkBAIC0xMzA4LDkg KzEzMDgsMTAgQEAgcGd0a19jb21wdXRlX2dseXBoX3N0cmluZ19vdmVyaGFuZ3MgKHN0cnVjdCBn bHlwaF9zdHJpbmcgKnMpCiBwZ3RrX2NsZWFyX2dseXBoX3N0cmluZ19yZWN0IChzdHJ1Y3QgZ2x5 cGhfc3RyaW5nICpzLCBpbnQgeCwgaW50IHksCiAJCQkgICAgICBpbnQgdywgaW50IGgpCiB7Ci0g IHBndGtfZmlsbF9yZWN0YW5nbGUgKHMtPmYsIHMtPnhnY3YuYmFja2dyb3VuZCwgeCwgeSwgdywg aCwKLQkJICAgICAgIChzLT5maXJzdF9nbHlwaC0+dHlwZSAhPSBTVFJFVENIX0dMWVBICi0JCQl8 fCBzLT5obCAhPSBEUkFXX0NVUlNPUikpOworICBkb3VibGUgYWxwaGEgPSAocy0+Zmlyc3RfZ2x5 cGgtPnR5cGUgIT0gU1RSRVRDSF9HTFlQSCB8fCBzLT5obCAhPSBEUkFXX0NVUlNPUikKKyAgICA/ IHMtPmYtPmFscGhhX2JhY2tncm91bmQKKyAgICA6IDEuMDsKKyAgcGd0a19maWxsX3JlY3Rhbmds ZSAocy0+Ziwgcy0+eGdjdi5iYWNrZ3JvdW5kLCB4LCB5LCB3LCBoLCBhbHBoYSk7CiB9CiAKIHN0 YXRpYyB2b2lkCkBAIC0xMzk0LDEyICsxMzk1LDEyIEBAIHBndGtfZHJhd19nbHlwaF9zdHJpbmdf YmFja2dyb3VuZCAoc3RydWN0IGdseXBoX3N0cmluZyAqcywgYm9vbCBmb3JjZV9wKQogCiBzdGF0 aWMgdm9pZAogcGd0a19kcmF3X3JlY3RhbmdsZSAoc3RydWN0IGZyYW1lICpmLCB1bnNpZ25lZCBs b25nIGNvbG9yLCBpbnQgeCwgaW50IHksCi0JCSAgICAgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBi b29sIHJlc3BlY3RfYWxwaGFfYmFja2dyb3VuZCkKKwkJICAgICBpbnQgd2lkdGgsIGludCBoZWln aHQsIGRvdWJsZSBhbHBoYSkKIHsKICAgY2Fpcm9fdCAqY3I7CiAKICAgY3IgPSBwZ3RrX2JlZ2lu X2NyX2NsaXAgKGYpOwotICBwZ3RrX3NldF9jcl9zb3VyY2Vfd2l0aF9jb2xvciAoZiwgY29sb3Is IHJlc3BlY3RfYWxwaGFfYmFja2dyb3VuZCk7CisgIHBndGtfc2V0X2NyX3NvdXJjZV93aXRoX2Nv bG9yIChmLCBjb2xvciwgYWxwaGEpOwogICBjYWlyb19yZWN0YW5nbGUgKGNyLCB4ICsgMC41LCB5 ICsgMC41LCB3aWR0aCwgaGVpZ2h0KTsKICAgY2Fpcm9fc2V0X2xpbmVfd2lkdGggKGNyLCAxKTsK ICAgY2Fpcm9fc3Ryb2tlIChjcik7CkBAIC0xNDI5LDcgKzE0MzAsNyBAQCBwZ3RrX2RyYXdfZ2x5 cGhfc3RyaW5nX2ZvcmVncm91bmQgKHN0cnVjdCBnbHlwaF9zdHJpbmcgKnMpCiAJICBwZ3RrX2Ry YXdfcmVjdGFuZ2xlIChzLT5mLAogCQkJICAgICAgIHMtPmZhY2UtPmZvcmVncm91bmQsIHgsIHMt PnksCiAJCQkgICAgICAgZy0+cGl4ZWxfd2lkdGggLSAxLCBzLT5oZWlnaHQgLSAxLAotCQkJICAg ICAgIGZhbHNlKTsKKwkJCSAgICAgICAxLjApOwogCSAgeCArPSBnLT5waXhlbF93aWR0aDsKIAl9 CiAgICAgfQpAQCAtMTQ3OCw3ICsxNDc5LDcgQEAgcGd0a19kcmF3X2NvbXBvc2l0ZV9nbHlwaF9z dHJpbmdfZm9yZWdyb3VuZCAoc3RydWN0IGdseXBoX3N0cmluZyAqcykKICAgICB7CiAgICAgICBp ZiAocy0+Y21wX2Zyb20gPT0gMCkKIAlwZ3RrX2RyYXdfcmVjdGFuZ2xlIChzLT5mLCBzLT5mYWNl LT5mb3JlZ3JvdW5kLCB4LCBzLT55LAotCQkJICAgICBzLT53aWR0aCAtIDEsIHMtPmhlaWdodCAt IDEsIGZhbHNlKTsKKwkJCSAgICAgcy0+d2lkdGggLSAxLCBzLT5oZWlnaHQgLSAxLCAxLjApOwog ICAgIH0KICAgZWxzZSBpZiAoIXMtPmZpcnN0X2dseXBoLT51LmNtcC5hdXRvbWF0aWMpCiAgICAg ewpAQCAtMTYyMiw3ICsxNjIzLDcgQEAgcGd0a19kcmF3X2dseXBobGVzc19nbHlwaF9zdHJpbmdf Zm9yZWdyb3VuZCAoc3RydWN0IGdseXBoX3N0cmluZyAqcykKIAkJCSAgICAgeCwgcy0+eWJhc2Ug LSBnbHlwaC0+YXNjZW50LAogCQkJICAgICBnbHlwaC0+cGl4ZWxfd2lkdGggLSAxLAogCQkJICAg ICBnbHlwaC0+YXNjZW50ICsgZ2x5cGgtPmRlc2NlbnQgLSAxLAotCQkJICAgICBmYWxzZSk7CisJ CQkgICAgIDEuMCk7CiAgICAgICB4ICs9IGdseXBoLT5waXhlbF93aWR0aDsKICAgICB9CiAKQEAg LTE3MjIsNyArMTcyMyw3IEBAIHBndGtfZmlsbF90cmFwZXpvaWRfZm9yX3JlbGllZiAoc3RydWN0 IGZyYW1lICpmLCB1bnNpZ25lZCBsb25nIGNvbG9yLCBpbnQgeCwKICAgY2Fpcm9fdCAqY3I7CiAK ICAgY3IgPSBwZ3RrX2JlZ2luX2NyX2NsaXAgKGYpOwotICBwZ3RrX3NldF9jcl9zb3VyY2Vfd2l0 aF9jb2xvciAoZiwgY29sb3IsIGZhbHNlKTsKKyAgcGd0a19zZXRfY3Jfc291cmNlX3dpdGhfY29s b3IgKGYsIGNvbG9yLCAxLjApOwogICBjYWlyb19tb3ZlX3RvIChjciwgdG9wX3AgPyB4IDogeCAr IGhlaWdodCwgeSk7CiAgIGNhaXJvX2xpbmVfdG8gKGNyLCB4LCB5ICsgaGVpZ2h0KTsKICAgY2Fp cm9fbGluZV90byAoY3IsIHRvcF9wID8geCArIHdpZHRoIC0gaGVpZ2h0IDogeCArIHdpZHRoLCB5 ICsgaGVpZ2h0KTsKQEAgLTE3NDksNyArMTc1MCw3IEBAIHBndGtfZXJhc2VfY29ybmVyc19mb3Jf cmVsaWVmIChzdHJ1Y3QgZnJhbWUgKmYsIHVuc2lnbmVkIGxvbmcgY29sb3IsIGludCB4LAogICBp bnQgaTsKIAogICBjciA9IHBndGtfYmVnaW5fY3JfY2xpcCAoZik7Ci0gIHBndGtfc2V0X2NyX3Nv dXJjZV93aXRoX2NvbG9yIChmLCBjb2xvciwgZmFsc2UpOworICBwZ3RrX3NldF9jcl9zb3VyY2Vf d2l0aF9jb2xvciAoZiwgY29sb3IsIDEuMCk7CiAgIGZvciAoaSA9IDA7IGkgPCBDT1JORVJfTEFT VDsgaSsrKQogICAgIGlmIChjb3JuZXJzICYgKDEgPDwgaSkpCiAgICAgICB7CkBAIC0xODcxLDcg KzE4NzIsNyBAQCBwZ3RrX2RyYXdfcmVsaWVmX3JlY3QgKHN0cnVjdCBmcmFtZSAqZiwKICAgaWYg KGxlZnRfcCkKICAgICB7CiAgICAgICBwZ3RrX2ZpbGxfcmVjdGFuZ2xlIChmLCB0b3BfbGVmdF9j b2xvciwgbGVmdF94LCB0b3BfeSwKLQkJCSAgIHZ3aWR0aCwgYm90dG9tX3kgKyAxIC0gdG9wX3ks IGZhbHNlKTsKKwkJCSAgIHZ3aWR0aCwgYm90dG9tX3kgKyAxIC0gdG9wX3ksIDEuMCk7CiAgICAg ICBpZiAodG9wX3ApCiAJY29ybmVycyB8PSAxIDw8IENPUk5FUl9UT1BfTEVGVDsKICAgICAgIGlm IChib3RfcCkKQEAgLTE4ODAsNyArMTg4MSw3IEBAIHBndGtfZHJhd19yZWxpZWZfcmVjdCAoc3Ry dWN0IGZyYW1lICpmLAogICBpZiAocmlnaHRfcCkKICAgICB7CiAgICAgICBwZ3RrX2ZpbGxfcmVj dGFuZ2xlIChmLCBib3R0b21fcmlnaHRfY29sb3IsIHJpZ2h0X3ggKyAxIC0gdndpZHRoLCB0b3Bf eSwKLQkJCSAgIHZ3aWR0aCwgYm90dG9tX3kgKyAxIC0gdG9wX3ksIGZhbHNlKTsKKwkJCSAgIHZ3 aWR0aCwgYm90dG9tX3kgKyAxIC0gdG9wX3ksIDEuMCk7CiAgICAgICBpZiAodG9wX3ApCiAJY29y bmVycyB8PSAxIDw8IENPUk5FUl9UT1BfUklHSFQ7CiAgICAgICBpZiAoYm90X3ApCkBAIC0xODkw LDcgKzE4OTEsNyBAQCBwZ3RrX2RyYXdfcmVsaWVmX3JlY3QgKHN0cnVjdCBmcmFtZSAqZiwKICAg ICB7CiAgICAgICBpZiAoIXJpZ2h0X3ApCiAJcGd0a19maWxsX3JlY3RhbmdsZSAoZiwgdG9wX2xl ZnRfY29sb3IsIGxlZnRfeCwgdG9wX3ksCi0JCQkgICAgIHJpZ2h0X3ggKyAxIC0gbGVmdF94LCBo d2lkdGgsIGZhbHNlKTsKKwkJCSAgICAgcmlnaHRfeCArIDEgLSBsZWZ0X3gsIGh3aWR0aCwgMS4w KTsKICAgICAgIGVsc2UKIAlwZ3RrX2ZpbGxfdHJhcGV6b2lkX2Zvcl9yZWxpZWYgKGYsIHRvcF9s ZWZ0X2NvbG9yLCBsZWZ0X3gsIHRvcF95LAogCQkJCQlyaWdodF94ICsgMSAtIGxlZnRfeCwgaHdp ZHRoLCAxKTsKQEAgLTE5MDAsNyArMTkwMSw3IEBAIHBndGtfZHJhd19yZWxpZWZfcmVjdCAoc3Ry dWN0IGZyYW1lICpmLAogICAgICAgaWYgKCFsZWZ0X3ApCiAJcGd0a19maWxsX3JlY3RhbmdsZSAo ZiwgYm90dG9tX3JpZ2h0X2NvbG9yLCBsZWZ0X3gsCiAJCQkgICAgIGJvdHRvbV95ICsgMSAtIGh3 aWR0aCwgcmlnaHRfeCArIDEgLSBsZWZ0X3gsCi0JCQkgICAgIGh3aWR0aCwgZmFsc2UpOworCQkJ ICAgICBod2lkdGgsIDEuMCk7CiAgICAgICBlbHNlCiAJcGd0a19maWxsX3RyYXBlem9pZF9mb3Jf cmVsaWVmIChmLCBib3R0b21fcmlnaHRfY29sb3IsCiAJCQkJCWxlZnRfeCwgYm90dG9tX3kgKyAx IC0gaHdpZHRoLApAQCAtMTkwOCwxMCArMTkwOSwxMCBAQCBwZ3RrX2RyYXdfcmVsaWVmX3JlY3Qg KHN0cnVjdCBmcmFtZSAqZiwKICAgICB9CiAgIGlmIChsZWZ0X3AgJiYgdndpZHRoID4gMSkKICAg ICBwZ3RrX2ZpbGxfcmVjdGFuZ2xlIChmLCBib3R0b21fcmlnaHRfY29sb3IsIGxlZnRfeCwgdG9w X3ksCi0JCQkgMSwgYm90dG9tX3kgKyAxIC0gdG9wX3ksIGZhbHNlKTsKKwkJCSAxLCBib3R0b21f eSArIDEgLSB0b3BfeSwgMS4wKTsKICAgaWYgKHRvcF9wICYmIGh3aWR0aCA+IDEpCiAgICAgcGd0 a19maWxsX3JlY3RhbmdsZSAoZiwgYm90dG9tX3JpZ2h0X2NvbG9yLCBsZWZ0X3gsIHRvcF95LAot CQkJIHJpZ2h0X3ggKyAxIC0gbGVmdF94LCAxLCBmYWxzZSk7CisJCQkgcmlnaHRfeCArIDEgLSBs ZWZ0X3gsIDEsIDEuMCk7CiAgIGlmIChjb3JuZXJzKQogICAgIHBndGtfZXJhc2VfY29ybmVyc19m b3JfcmVsaWVmIChmLCBGUkFNRV9CQUNLR1JPVU5EX1BJWEVMIChmKSwgbGVmdF94LAogCQkJCSAg IHRvcF95LCByaWdodF94IC0gbGVmdF94ICsgMSwKQEAgLTE5NDUsMjQgKzE5NDYsMjQgQEAgcGd0 a19kcmF3X2JveF9yZWN0IChzdHJ1Y3QgZ2x5cGhfc3RyaW5nICpzLCBpbnQgbGVmdF94LAogICAv KiBUb3AuICAqLwogICBwZ3RrX2ZpbGxfcmVjdGFuZ2xlIChzLT5mLCBzLT54Z2N2LmZvcmVncm91 bmQsCiAJCSAgICAgICBsZWZ0X3gsIHRvcF95LCByaWdodF94IC0gbGVmdF94ICsgMSwgaHdpZHRo LAotCQkgICAgICAgZmFsc2UpOworCQkgICAgICAgMS4wKTsKIAogICAvKiBMZWZ0LiAgKi8KICAg aWYgKGxlZnRfcCkKICAgICBwZ3RrX2ZpbGxfcmVjdGFuZ2xlIChzLT5mLCBzLT54Z2N2LmZvcmVn cm91bmQsCiAJCQkgbGVmdF94LCB0b3BfeSwgdndpZHRoLCBib3R0b21feSAtIHRvcF95ICsgMSwK LQkJCSBmYWxzZSk7CisJCQkgMS4wKTsKIAogICAvKiBCb3R0b20uICAqLwogICBwZ3RrX2ZpbGxf cmVjdGFuZ2xlIChzLT5mLCBzLT54Z2N2LmZvcmVncm91bmQsCiAJCSAgICAgICBsZWZ0X3gsIGJv dHRvbV95IC0gaHdpZHRoICsgMSwgcmlnaHRfeCAtIGxlZnRfeCArIDEsCi0JCSAgICAgICBod2lk dGgsIGZhbHNlKTsKKwkJICAgICAgIGh3aWR0aCwgMS4wKTsKIAogICAvKiBSaWdodC4gICovCiAg IGlmIChyaWdodF9wKQogICAgIHBndGtfZmlsbF9yZWN0YW5nbGUgKHMtPmYsIHMtPnhnY3YuZm9y ZWdyb3VuZCwKIAkJCSByaWdodF94IC0gdndpZHRoICsgMSwgdG9wX3ksIHZ3aWR0aCwKLQkJCSBi b3R0b21feSAtIHRvcF95ICsgMSwgZmFsc2UpOworCQkJIGJvdHRvbV95IC0gdG9wX3kgKyAxLCAx LjApOwogCiAgIHMtPnhnY3YuZm9yZWdyb3VuZCA9IGZvcmVncm91bmRfYmFja3VwOwogCkBAIC0y MDI2LDcgKzIwMjcsNyBAQCBwZ3RrX2RyYXdfaG9yaXpvbnRhbF93YXZlIChzdHJ1Y3QgZnJhbWUg KmYsIHVuc2lnbmVkIGxvbmcgY29sb3IsIGludCB4LCBpbnQgeSwKICAgaW50IHhvZmZzZXQsIG47 CiAKICAgY3IgPSBwZ3RrX2JlZ2luX2NyX2NsaXAgKGYpOwotICBwZ3RrX3NldF9jcl9zb3VyY2Vf d2l0aF9jb2xvciAoZiwgY29sb3IsIGZhbHNlKTsKKyAgcGd0a19zZXRfY3Jfc291cmNlX3dpdGhf Y29sb3IgKGYsIGNvbG9yLCAxLjApOwogICBjYWlyb19yZWN0YW5nbGUgKGNyLCB4LCB5LCB3aWR0 aCwgaGVpZ2h0KTsKICAgY2Fpcm9fY2xpcCAoY3IpOwogCkBAIC0yMTgzLDcgKzIxODQsNyBAQCBw Z3RrX2NyX2RyYXdfaW1hZ2UgKHN0cnVjdCBmcmFtZSAqZiwgRW1hY3NfR0MgKmdjLCBjYWlyb19w YXR0ZXJuX3QgKmltYWdlLAogICAgIGNhaXJvX3JlY3RhbmdsZSAoY3IsIGRlc3RfeCwgZGVzdF95 LCB3aWR0aCwgaGVpZ2h0KTsKICAgZWxzZQogICAgIHsKLSAgICAgIHBndGtfc2V0X2NyX3NvdXJj ZV93aXRoX2djX2JhY2tncm91bmQgKGYsIGdjLCBmYWxzZSk7CisgICAgICBwZ3RrX3NldF9jcl9z b3VyY2Vfd2l0aF9nY19iYWNrZ3JvdW5kIChmLCBnYywgMS4wKTsKICAgICAgIGNhaXJvX3JlY3Rh bmdsZSAoY3IsIGRlc3RfeCwgZGVzdF95LCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgIGNhaXJvX2Zp bGxfcHJlc2VydmUgKGNyKTsKICAgICB9CkBAIC0yMjAwLDcgKzIyMDEsNyBAQCBwZ3RrX2NyX2Ry YXdfaW1hZ2UgKHN0cnVjdCBmcmFtZSAqZiwgRW1hY3NfR0MgKmdjLCBjYWlyb19wYXR0ZXJuX3Qg KmltYWdlLAogICAgIH0KICAgZWxzZQogICAgIHsKLSAgICAgIHBndGtfc2V0X2NyX3NvdXJjZV93 aXRoX2djX2ZvcmVncm91bmQgKGYsIGdjLCBmYWxzZSk7CisgICAgICBwZ3RrX3NldF9jcl9zb3Vy Y2Vfd2l0aF9nY19mb3JlZ3JvdW5kIChmLCBnYywgMS4wKTsKICAgICAgIGNhaXJvX2NsaXAgKGNy KTsKICAgICAgIGNhaXJvX21hc2sgKGNyLCBpbWFnZSk7CiAgICAgfQpAQCAtMjI1MCw3ICsyMjUx LDcgQEAgcGd0a19kcmF3X2ltYWdlX2ZvcmVncm91bmQgKHN0cnVjdCBnbHlwaF9zdHJpbmcgKnMp CiAJICAgICAgaW50IHJlbGllZiA9IGVhYnMgKHMtPmltZy0+cmVsaWVmKTsKIAkgICAgICBwZ3Rr X2RyYXdfcmVjdGFuZ2xlIChzLT5mLCBzLT54Z2N2LmZvcmVncm91bmQsIHggLSByZWxpZWYsCiAJ CQkJICAgeSAtIHJlbGllZiwgcy0+c2xpY2Uud2lkdGggKyByZWxpZWYgKiAyIC0gMSwKLQkJCQkg ICBzLT5zbGljZS5oZWlnaHQgKyByZWxpZWYgKiAyIC0gMSwgZmFsc2UpOworCQkJCSAgIHMtPnNs aWNlLmhlaWdodCArIHJlbGllZiAqIDIgLSAxLCAxLjApOwogCSAgICB9CiAJfQogICAgICAgcGd0 a19lbmRfY3JfY2xpcCAocy0+Zik7CkBAIC0yMjU4LDcgKzIyNTksNyBAQCBwZ3RrX2RyYXdfaW1h Z2VfZm9yZWdyb3VuZCAoc3RydWN0IGdseXBoX3N0cmluZyAqcykKICAgZWxzZQogICAgIC8qIERy YXcgYSByZWN0YW5nbGUgaWYgaW1hZ2UgY291bGQgbm90IGJlIGxvYWRlZC4gICovCiAgICAgcGd0 a19kcmF3X3JlY3RhbmdsZSAocy0+Ziwgcy0+eGdjdi5mb3JlZ3JvdW5kLCB4LCB5LAotCQkJIHMt PnNsaWNlLndpZHRoIC0gMSwgcy0+c2xpY2UuaGVpZ2h0IC0gMSwgZmFsc2UpOworCQkJIHMtPnNs aWNlLndpZHRoIC0gMSwgcy0+c2xpY2UuaGVpZ2h0IC0gMSwgMS4wKTsKIH0KIAogLyogRHJhdyBp bWFnZSBnbHlwaCBzdHJpbmcgUy4KQEAgLTIzOTgsNyArMjM5OSw3IEBAIHBndGtfZHJhd19zdHJl dGNoX2dseXBoX3N0cmluZyAoc3RydWN0IGdseXBoX3N0cmluZyAqcykKIAkgICAgZmlsbF9iYWNr Z3JvdW5kIChzLCB4LCB5LCB3LCBoKTsKIAkgIGVsc2UKIAkgICAgcGd0a19maWxsX3JlY3Rhbmds ZSAocy0+ZiwgY29sb3IsIHgsIHksIHcsIGgsCi0JCQkJIHRydWUpOworCQkJCSBzLT5mLT5hbHBo YV9iYWNrZ3JvdW5kKTsKIAogCSAgcGd0a19lbmRfY3JfY2xpcCAocy0+Zik7CiAJfQpAQCAtMjQz OCw3ICsyNDM5LDcgQEAgcGd0a19kcmF3X2Rhc2ggKHN0cnVjdCBmcmFtZSAqZiwgc3RydWN0IGds eXBoX3N0cmluZyAqcywKICAgZG91YmxlIGNyX3NlZ21lbnQsIHlfY2VudGVyOwogCiAgIGNyID0g cGd0a19iZWdpbl9jcl9jbGlwIChzLT5mKTsKLSAgcGd0a19zZXRfY3Jfc291cmNlX3dpdGhfY29s b3IgKGYsIGZvcmVncm91bmQsIGZhbHNlKTsKKyAgcGd0a19zZXRfY3Jfc291cmNlX3dpdGhfY29s b3IgKGYsIGZvcmVncm91bmQsIDEuMCk7CiAgIGNyX3NlZ21lbnQgPSAoZG91YmxlKSBzZWdtZW50 OwogICB5X2NlbnRlciA9IHMtPnliYXNlICsgb2Zmc2V0ICsgKHRoaWNrbmVzcyAvIDIuMCk7CiAK QEAgLTI0NzIsNyArMjQ3Myw3IEBAIHBndGtfZmlsbF91bmRlcmxpbmUgKHN0cnVjdCBmcmFtZSAq Ziwgc3RydWN0IGdseXBoX3N0cmluZyAqcywKICAgICBjYXNlIEZBQ0VfVU5ERVJMSU5FX1NJTkdM RToKICAgICBjYXNlIEZBQ0VfVU5ERVJMSU5FX0RPVUJMRV9MSU5FOgogICAgICAgcGd0a19maWxs X3JlY3RhbmdsZSAoZiwgZm9yZWdyb3VuZCwgcy0+eCwgcy0+eWJhc2UgKyBwb3NpdGlvbiwKLQkJ CSAgIGRlY29yYXRpb25fd2lkdGgsIHRoaWNrbmVzcywgZmFsc2UpOworCQkJICAgZGVjb3JhdGlv bl93aWR0aCwgdGhpY2tuZXNzLCAxLjApOwogICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEZBQ0Vf VU5ERVJMSU5FX0RPVFM6CkBAIC0yNzAxLDEwICsyNzAyLDEwIEBAIHBndGtfZHJhd19nbHlwaF9z dHJpbmcgKHN0cnVjdCBnbHlwaF9zdHJpbmcgKnMpCiAKIAkgIGlmIChzLT5mYWNlLT5vdmVybGlu ZV9jb2xvcl9kZWZhdWx0ZWRfcCkKIAkgICAgcGd0a19maWxsX3JlY3RhbmdsZSAocy0+Ziwgcy0+ eGdjdi5mb3JlZ3JvdW5kLCBzLT54LCBzLT55ICsgZHksCi0JCQkJIHMtPndpZHRoLCBoLCBmYWxz ZSk7CisJCQkJIHMtPndpZHRoLCBoLCAxLjApOwogCSAgZWxzZQogCSAgICBwZ3RrX2ZpbGxfcmVj dGFuZ2xlIChzLT5mLCBzLT5mYWNlLT5vdmVybGluZV9jb2xvciwgcy0+eCwKLQkJCQkgcy0+eSAr IGR5LCBzLT53aWR0aCwgaCwgZmFsc2UpOworCQkJCSBzLT55ICsgZHksIHMtPndpZHRoLCBoLCAx LjApOwogCX0KIAogICAgICAgLyogRHJhdyBzdHJpa2UtdGhyb3VnaC4gICovCkBAIC0yNzI0LDEw ICsyNzI1LDEwIEBAIHBndGtfZHJhd19nbHlwaF9zdHJpbmcgKHN0cnVjdCBnbHlwaF9zdHJpbmcg KnMpCiAKIAkgIGlmIChzLT5mYWNlLT5zdHJpa2VfdGhyb3VnaF9jb2xvcl9kZWZhdWx0ZWRfcCkK IAkgICAgcGd0a19maWxsX3JlY3RhbmdsZSAocy0+Ziwgcy0+eGdjdi5mb3JlZ3JvdW5kLCBzLT54 LCBnbHlwaF95ICsgZHksCi0JCQkJIHMtPndpZHRoLCBoLCBmYWxzZSk7CisJCQkJIHMtPndpZHRo LCBoLCAxLjApOwogCSAgZWxzZQogCSAgICBwZ3RrX2ZpbGxfcmVjdGFuZ2xlIChzLT5mLCBzLT5m YWNlLT5zdHJpa2VfdGhyb3VnaF9jb2xvciwgcy0+eCwKLQkJCQkgZ2x5cGhfeSArIGR5LCBzLT53 aWR0aCwgaCwgZmFsc2UpOworCQkJCSBnbHlwaF95ICsgZHksIHMtPndpZHRoLCBoLCAxLjApOwog CX0KIAogICAgICAgaWYgKHMtPnByZXYpCkBAIC0yODY0LDcgKzI4NjUsNyBAQCBwZ3RrX2RyYXdf aG9sbG93X2N1cnNvciAoc3RydWN0IHdpbmRvdyAqdywgc3RydWN0IGdseXBoX3JvdyAqcm93KQog ICAvKiBUaGUgZm9yZWdyb3VuZCBvZiBjdXJzb3JfZ2MgaXMgdHlwaWNhbGx5IHRoZSBzYW1lIGFz IHRoZSBub3JtYWwKICAgICAgYmFja2dyb3VuZCBjb2xvciwgd2hpY2ggY2FuIGNhdXNlIHRoZSBj dXJzb3IgYm94IHRvIGJlIGludmlzaWJsZS4gICovCiAgIGNhaXJvX3QgKmNyID0gcGd0a19iZWdp bl9jcl9jbGlwIChmKTsKLSAgcGd0a19zZXRfY3Jfc291cmNlX3dpdGhfY29sb3IgKGYsIEZSQU1F X1hfT1VUUFVUIChmKS0+Y3Vyc29yX2NvbG9yLCBmYWxzZSk7CisgIHBndGtfc2V0X2NyX3NvdXJj ZV93aXRoX2NvbG9yIChmLCBGUkFNRV9YX09VVFBVVCAoZiktPmN1cnNvcl9jb2xvciwgMS4wKTsK IAogICAvKiBXaGVuIG9uIFIyTCBjaGFyYWN0ZXIsIHNob3cgY3Vyc29yIGF0IHRoZSByaWdodCBl ZGdlIG9mIHRoZQogICAgICBnbHlwaCwgdW5sZXNzIHRoZSBjdXJzb3IgYm94IGlzIGFzIHdpZGUg YXMgdGhlIGdseXBoIG9yIHdpZGVyCkBAIC0yODc5LDcgKzI4ODAsNyBAQCBwZ3RrX2RyYXdfaG9s bG93X2N1cnNvciAoc3RydWN0IHdpbmRvdyAqdywgc3RydWN0IGdseXBoX3JvdyAqcm93KQogICAv KiBTZXQgY2xpcHBpbmcsIGRyYXcgdGhlIHJlY3RhbmdsZSwgYW5kIHJlc2V0IGNsaXBwaW5nIGFn YWluLiAgKi8KICAgcGd0a19jbGlwX3RvX3JvdyAodywgcm93LCBURVhUX0FSRUEsIGNyKTsKICAg cGd0a19kcmF3X3JlY3RhbmdsZSAoZiwgRlJBTUVfWF9PVVRQVVQgKGYpLT5jdXJzb3JfY29sb3Is Ci0JCSAgICAgICB4LCB5LCB3ZCwgaCAtIDEsIGZhbHNlKTsKKwkJICAgICAgIHgsIHksIHdkLCBo IC0gMSwgMS4wKTsKICAgcGd0a19lbmRfY3JfY2xpcCAoZik7CiB9CiAKQEAgLTI5NTMsNyArMjk1 NCw3IEBAIHBndGtfZHJhd19iYXJfY3Vyc29yIChzdHJ1Y3Qgd2luZG93ICp3LCBzdHJ1Y3QgZ2x5 cGhfcm93ICpyb3csIGludCB3aWR0aCwKIAogCSAgcGd0a19maWxsX3JlY3RhbmdsZSAoZiwgY29s b3IsIHgsCiAJCQkgICAgICAgV0lORE9XX1RPX0ZSQU1FX1BJWEVMX1kgKHcsIHctPnBoeXNfY3Vy c29yLnkpLAotCQkJICAgICAgIHdpZHRoLCByb3ctPmhlaWdodCwgZmFsc2UpOworCQkJICAgICAg IHdpZHRoLCByb3ctPmhlaWdodCwgMS4wKTsKIAl9CiAgICAgICBlbHNlCQkJLyogSEJBUl9DVVJT T1IgKi8KIAl7CkBAIC0yOTc0LDcgKzI5NzUsNyBAQCBwZ3RrX2RyYXdfYmFyX2N1cnNvciAoc3Ry dWN0IHdpbmRvdyAqdywgc3RydWN0IGdseXBoX3JvdyAqcm93LCBpbnQgd2lkdGgsCiAJICBwZ3Rr X2ZpbGxfcmVjdGFuZ2xlIChmLCBjb2xvciwgeCwKIAkJCSAgICAgICBXSU5ET1dfVE9fRlJBTUVf UElYRUxfWSAodywgdy0+cGh5c19jdXJzb3IueSArCiAJCQkJCQkJcm93LT5oZWlnaHQgLSB3aWR0 aCksCi0JCQkgICAgICAgdy0+cGh5c19jdXJzb3Jfd2lkdGggLSAxLCB3aWR0aCwgZmFsc2UpOwor CQkJICAgICAgIHctPnBoeXNfY3Vyc29yX3dpZHRoIC0gMSwgd2lkdGgsIDEuMCk7CiAJfQogCiAg ICAgICBwZ3RrX2VuZF9jcl9jbGlwIChmKTsKQEAgLTMzMzAsNyArMzMzMSw3IEBAIHBndGtfZHJh d192ZXJ0aWNhbF93aW5kb3dfYm9yZGVyIChzdHJ1Y3Qgd2luZG93ICp3LCBpbnQgeCwgaW50IHkw LCBpbnQgeTEpCiAKICAgZmFjZSA9IEZBQ0VfRlJPTV9JRF9PUl9OVUxMIChmLCBWRVJUSUNBTF9C T1JERVJfRkFDRV9JRCk7CiAgIGlmIChmYWNlKQotICAgIHBndGtfc2V0X2NyX3NvdXJjZV93aXRo X2NvbG9yIChmLCBmYWNlLT5mb3JlZ3JvdW5kLCBmYWxzZSk7CisgICAgcGd0a19zZXRfY3Jfc291 cmNlX3dpdGhfY29sb3IgKGYsIGZhY2UtPmZvcmVncm91bmQsIDEuMCk7CiAKICAgY2Fpcm9fcmVj dGFuZ2xlIChjciwgeCwgeTAsIDEsIHkxIC0geTApOwogICBjYWlyb19maWxsIChjcik7CkBAIC0z MzYxLDM5ICszMzYyLDMyIEBAIHBndGtfZHJhd193aW5kb3dfZGl2aWRlciAoc3RydWN0IHdpbmRv dyAqdywgaW50IHgwLCBpbnQgeDEsIGludCB5MCwgaW50IHkxKQogICBpZiAoeTEgLSB5MCA+IHgx IC0geDAgJiYgeDEgLSB4MCA+IDIpCiAgICAgLyogVmVydGljYWwuICAqLwogICAgIHsKLSAgICAg IHBndGtfc2V0X2NyX3NvdXJjZV93aXRoX2NvbG9yIChmLCBjb2xvcl9maXJzdCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLT5ib3JkZXJzX3Jlc3BlY3RfYWxwaGFfYmFj a2dyb3VuZCk7CisgICAgICBwZ3RrX3NldF9jcl9zb3VyY2Vfd2l0aF9jb2xvciAoZiwgY29sb3Jf Zmlyc3QsIGYtPmFscGhhX2JvcmRlcnMpOwogICAgICAgY2Fpcm9fcmVjdGFuZ2xlIChjciwgeDAs IHkwLCAxLCB5MSAtIHkwKTsKICAgICAgIGNhaXJvX2ZpbGwgKGNyKTsKLSAgICAgIHBndGtfc2V0 X2NyX3NvdXJjZV93aXRoX2NvbG9yIChmLCBjb2xvciwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBmLT5ib3JkZXJzX3Jlc3BlY3RfYWxwaGFfYmFja2dyb3VuZCk7CisgICAg ICBwZ3RrX3NldF9jcl9zb3VyY2Vfd2l0aF9jb2xvciAoZiwgY29sb3IsIGYtPmFscGhhX2JvcmRl cnMpOwogICAgICAgY2Fpcm9fcmVjdGFuZ2xlIChjciwgeDAgKyAxLCB5MCwgeDEgLSB4MCAtIDIs IHkxIC0geTApOwogICAgICAgY2Fpcm9fZmlsbCAoY3IpOwotICAgICAgcGd0a19zZXRfY3Jfc291 cmNlX3dpdGhfY29sb3IgKGYsIGNvbG9yX2xhc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZi0+Ym9yZGVyc19yZXNwZWN0X2FscGhhX2JhY2tncm91bmQpOworICAgICAg cGd0a19zZXRfY3Jfc291cmNlX3dpdGhfY29sb3IgKGYsIGNvbG9yX2xhc3QsIGYtPmFscGhhX2Jv cmRlcnMpOwogICAgICAgY2Fpcm9fcmVjdGFuZ2xlIChjciwgeDEgLSAxLCB5MCwgMSwgeTEgLSB5 MCk7CiAgICAgICBjYWlyb19maWxsIChjcik7CiAgICAgfQogICBlbHNlIGlmICh4MSAtIHgwID4g eTEgLSB5MCAmJiB5MSAtIHkwID4gMykKICAgICAvKiBIb3Jpem9udGFsLiAgKi8KICAgICB7Ci0g ICAgICBwZ3RrX3NldF9jcl9zb3VyY2Vfd2l0aF9jb2xvciAoZiwgY29sb3JfZmlyc3QsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi0+Ym9yZGVyc19yZXNwZWN0X2FscGhh X2JhY2tncm91bmQpOworICAgICAgcGd0a19zZXRfY3Jfc291cmNlX3dpdGhfY29sb3IgKGYsIGNv bG9yX2ZpcnN0LCBmLT5hbHBoYV9ib3JkZXJzKTsKICAgICAgIGNhaXJvX3JlY3RhbmdsZSAoY3Is IHgwLCB5MCwgeDEgLSB4MCwgMSk7CiAgICAgICBjYWlyb19maWxsIChjcik7Ci0gICAgICBwZ3Rr X3NldF9jcl9zb3VyY2Vfd2l0aF9jb2xvciAoZiwgY29sb3IsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZi0+Ym9yZGVyc19yZXNwZWN0X2FscGhhX2JhY2tncm91bmQpOwor ICAgICAgcGd0a19zZXRfY3Jfc291cmNlX3dpdGhfY29sb3IgKGYsIGNvbG9yLCBmLT5hbHBoYV9i b3JkZXJzKTsKICAgICAgIGNhaXJvX3JlY3RhbmdsZSAoY3IsIHgwLCB5MCArIDEsIHgxIC0geDAs IHkxIC0geTAgLSAyKTsKICAgICAgIGNhaXJvX2ZpbGwgKGNyKTsKLSAgICAgIHBndGtfc2V0X2Ny X3NvdXJjZV93aXRoX2NvbG9yIChmLCBjb2xvcl9sYXN0LAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGYtPmJvcmRlcnNfcmVzcGVjdF9hbHBoYV9iYWNrZ3JvdW5kKTsKKyAg ICAgIHBndGtfc2V0X2NyX3NvdXJjZV93aXRoX2NvbG9yIChmLCBjb2xvcl9sYXN0LCBmLT5hbHBo YV9ib3JkZXJzKTsKICAgICAgIGNhaXJvX3JlY3RhbmdsZSAoY3IsIHgwLCB5MSAtIDEsIHgxIC0g eDAsIDEpOwogICAgICAgY2Fpcm9fZmlsbCAoY3IpOwogICAgIH0KICAgZWxzZQogICAgIHsKLSAg ICAgIHBndGtfc2V0X2NyX3NvdXJjZV93aXRoX2NvbG9yIChmLCBjb2xvciwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBmLT5ib3JkZXJzX3Jlc3BlY3RfYWxwaGFfYmFja2dy b3VuZCk7CisgICAgICBwZ3RrX3NldF9jcl9zb3VyY2Vfd2l0aF9jb2xvciAoZiwgY29sb3IsIGYt PmFscGhhX2JvcmRlcnMpOwogICAgICAgY2Fpcm9fcmVjdGFuZ2xlIChjciwgeDAsIHkwLCB4MSAt IHgwLCB5MSAtIHkwKTsKICAgICAgIGNhaXJvX2ZpbGwgKGNyKTsKICAgICB9CkBAIC00OTkyLDEx ICs0OTg2LDExIEBAIHBndGtfaGFuZGxlX2V2ZW50IChHdGtXaWRnZXQgKndpZGdldCwgR2RrRXZl bnQgKmV2ZW50LCBncG9pbnRlciAqZGF0YSkKIAogc3RhdGljIHZvaWQKIHBndGtfZmlsbF9yZWN0 YW5nbGUgKHN0cnVjdCBmcmFtZSAqZiwgdW5zaWduZWQgbG9uZyBjb2xvciwgaW50IHgsIGludCB5 LAotCQkgICAgIGludCB3aWR0aCwgaW50IGhlaWdodCwgYm9vbCByZXNwZWN0X2FscGhhX2JhY2tn cm91bmQpCisJCSAgICAgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBkb3VibGUgYWxwaGEpCiB7CiAg IGNhaXJvX3QgKmNyOwogICBjciA9IHBndGtfYmVnaW5fY3JfY2xpcCAoZik7Ci0gIHBndGtfc2V0 X2NyX3NvdXJjZV93aXRoX2NvbG9yIChmLCBjb2xvciwgcmVzcGVjdF9hbHBoYV9iYWNrZ3JvdW5k KTsKKyAgcGd0a19zZXRfY3Jfc291cmNlX3dpdGhfY29sb3IgKGYsIGNvbG9yLCBhbHBoYSk7CiAg IGNhaXJvX3JlY3RhbmdsZSAoY3IsIHgsIHksIHdpZHRoLCBoZWlnaHQpOwogICBjYWlyb19maWxs IChjcik7CiAgIHBndGtfZW5kX2NyX2NsaXAgKGYpOwpAQCAtNzQxOSw3ICs3NDEzLDcgQEAgcGd0 a19jbGVhcl9hcmVhIChzdHJ1Y3QgZnJhbWUgKmYsIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBp bnQgaGVpZ2h0KQogCiAgIGNyID0gcGd0a19iZWdpbl9jcl9jbGlwIChmKTsKICAgcGd0a19zZXRf Y3Jfc291cmNlX3dpdGhfY29sb3IgKGYsIEZSQU1FX1hfT1VUUFVUIChmKS0+YmFja2dyb3VuZF9j b2xvciwKLQkJCQkgdHJ1ZSk7CisJCQkJIGYtPmFscGhhX2JhY2tncm91bmQpOwogICBjYWlyb19y ZWN0YW5nbGUgKGNyLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKICAgY2Fpcm9fZmlsbCAoY3IpOwog ICBwZ3RrX2VuZF9jcl9jbGlwIChmKTsKQEAgLTc1NzAsMzEgKzc1NjQsMzUgQEAgcGd0a19lbmRf Y3JfY2xpcCAoc3RydWN0IGZyYW1lICpmKQogICBjYWlyb19yZXN0b3JlIChGUkFNRV9DUl9DT05U RVhUIChmKSk7CiB9CiAKK2RvdWJsZQorcGd0a19nZXRfZnJhbWVfYWxwaGFfYmFja2dyb3VuZCAo c3RydWN0IGZyYW1lICpmKQoreworICByZXR1cm4gZi0+YWxwaGFfYmFja2dyb3VuZDsKK30KKwog dm9pZAogcGd0a19zZXRfY3Jfc291cmNlX3dpdGhfZ2NfZm9yZWdyb3VuZCAoc3RydWN0IGZyYW1l ICpmLCBFbWFjc19HQyAqZ2MsCi0JCQkJICAgICAgIGJvb2wgcmVzcGVjdHNfYWxwaGFfYmFja2dy b3VuZCkKKwkJCQkgICAgICAgZG91YmxlIGFscGhhKQogewotICBwZ3RrX3NldF9jcl9zb3VyY2Vf d2l0aF9jb2xvciAoZiwgZ2MtPmZvcmVncm91bmQsCi0JCQkJIHJlc3BlY3RzX2FscGhhX2JhY2tn cm91bmQpOworICBwZ3RrX3NldF9jcl9zb3VyY2Vfd2l0aF9jb2xvciAoZiwgZ2MtPmZvcmVncm91 bmQsIGFscGhhKTsKIH0KIAogdm9pZAogcGd0a19zZXRfY3Jfc291cmNlX3dpdGhfZ2NfYmFja2dy b3VuZCAoc3RydWN0IGZyYW1lICpmLCBFbWFjc19HQyAqZ2MsCi0JCQkJICAgICAgIGJvb2wgcmVz cGVjdHNfYWxwaGFfYmFja2dyb3VuZCkKKwkJCQkgICAgICAgZG91YmxlIGFscGhhKQogewotICBw Z3RrX3NldF9jcl9zb3VyY2Vfd2l0aF9jb2xvciAoZiwgZ2MtPmJhY2tncm91bmQsCi0JCQkJIHJl c3BlY3RzX2FscGhhX2JhY2tncm91bmQpOworICBwZ3RrX3NldF9jcl9zb3VyY2Vfd2l0aF9jb2xv ciAoZiwgZ2MtPmJhY2tncm91bmQsIGFscGhhKTsKIH0KIAogdm9pZAogcGd0a19zZXRfY3Jfc291 cmNlX3dpdGhfY29sb3IgKHN0cnVjdCBmcmFtZSAqZiwgdW5zaWduZWQgbG9uZyBjb2xvciwKLQkJ CSAgICAgICBib29sIHJlc3BlY3RzX2FscGhhX2JhY2tncm91bmQpCisJCQkgICAgICAgZG91Ymxl IGFscGhhKQogewogICBFbWFjc19Db2xvciBjb2w7CiAgIGNvbC5waXhlbCA9IGNvbG9yOwogICBw Z3RrX3F1ZXJ5X2NvbG9yIChmLCAmY29sKTsKIAotICBpZiAoIXJlc3BlY3RzX2FscGhhX2JhY2tn cm91bmQpCisgIGlmIChhbHBoYSA9PSAxLjApCiAgICAgewogICAgICAgY2Fpcm9fc2V0X3NvdXJj ZV9yZ2IgKEZSQU1FX0NSX0NPTlRFWFQgKGYpLCBjb2wucmVkIC8gNjU1MzUuMCwKIAkJCSAgICBj b2wuZ3JlZW4gLyA2NTUzNS4wLCBjb2wuYmx1ZSAvIDY1NTM1LjApOwpAQCAtNzYwNCw3ICs3NjAy LDcgQEAgcGd0a19zZXRfY3Jfc291cmNlX3dpdGhfY29sb3IgKHN0cnVjdCBmcmFtZSAqZiwgdW5z aWduZWQgbG9uZyBjb2xvciwKICAgICB7CiAgICAgICBjYWlyb19zZXRfc291cmNlX3JnYmEgKEZS QU1FX0NSX0NPTlRFWFQgKGYpLCBjb2wucmVkIC8gNjU1MzUuMCwKIAkJCSAgICAgY29sLmdyZWVu IC8gNjU1MzUuMCwgY29sLmJsdWUgLyA2NTUzNS4wLAotCQkJICAgICBmLT5hbHBoYV9iYWNrZ3Jv dW5kKTsKKwkJCSAgICAgYWxwaGEpOwogICAgICAgY2Fpcm9fc2V0X29wZXJhdG9yIChGUkFNRV9D Ul9DT05URVhUIChmKSwgQ0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKICAgICB9CiB9CmRpZmYgLS1n aXQgYS9zcmMvcGd0a3Rlcm0uaCBiL3NyYy9wZ3RrdGVybS5oCmluZGV4IDk0YTQwYjgyM2M4Li5m OTc3NzVkMWM0ZiAxMDA2NDQKLS0tIGEvc3JjL3BndGt0ZXJtLmgKKysrIGIvc3JjL3BndGt0ZXJt LmgKQEAgLTYxMSw5ICs2MTEsMTAgQEAgI2RlZmluZSBTRUxFQ1RJT05fRVZFTlRfVElNRShldmVu dHApCVwKIGV4dGVybiB2b2lkIHBndGtfY3JfdXBkYXRlX3N1cmZhY2VfZGVzaXJlZF9zaXplIChz dHJ1Y3QgZnJhbWUgKiwgaW50LCBpbnQsIGJvb2wpOwogZXh0ZXJuIGNhaXJvX3QgKnBndGtfYmVn aW5fY3JfY2xpcCAoc3RydWN0IGZyYW1lICopOwogZXh0ZXJuIHZvaWQgcGd0a19lbmRfY3JfY2xp cCAoc3RydWN0IGZyYW1lICopOwotZXh0ZXJuIHZvaWQgcGd0a19zZXRfY3Jfc291cmNlX3dpdGhf Z2NfZm9yZWdyb3VuZCAoc3RydWN0IGZyYW1lICosIEVtYWNzX0dDICosIGJvb2wpOwotZXh0ZXJu IHZvaWQgcGd0a19zZXRfY3Jfc291cmNlX3dpdGhfZ2NfYmFja2dyb3VuZCAoc3RydWN0IGZyYW1l ICosIEVtYWNzX0dDICosIGJvb2wpOwotZXh0ZXJuIHZvaWQgcGd0a19zZXRfY3Jfc291cmNlX3dp dGhfY29sb3IgKHN0cnVjdCBmcmFtZSAqLCB1bnNpZ25lZCBsb25nLCBib29sKTsKK2V4dGVybiBk b3VibGUgcGd0a19nZXRfZnJhbWVfYWxwaGFfYmFja2dyb3VuZCAoc3RydWN0IGZyYW1lICopOwor ZXh0ZXJuIHZvaWQgcGd0a19zZXRfY3Jfc291cmNlX3dpdGhfZ2NfZm9yZWdyb3VuZCAoc3RydWN0 IGZyYW1lICosIEVtYWNzX0dDICosIGRvdWJsZSk7CitleHRlcm4gdm9pZCBwZ3RrX3NldF9jcl9z b3VyY2Vfd2l0aF9nY19iYWNrZ3JvdW5kIChzdHJ1Y3QgZnJhbWUgKiwgRW1hY3NfR0MgKiwgZG91 YmxlKTsKK2V4dGVybiB2b2lkIHBndGtfc2V0X2NyX3NvdXJjZV93aXRoX2NvbG9yIChzdHJ1Y3Qg ZnJhbWUgKiwgdW5zaWduZWQgbG9uZywgZG91YmxlKTsKIGV4dGVybiB2b2lkIHBndGtfY3JfZHJh d19mcmFtZSAoY2Fpcm9fdCAqLCBzdHJ1Y3QgZnJhbWUgKik7CiBleHRlcm4gdm9pZCBwZ3RrX2Ny X2Rlc3Ryb3lfZnJhbWVfY29udGV4dCAoc3RydWN0IGZyYW1lICopOwogZXh0ZXJuIExpc3BfT2Jq ZWN0IHBndGtfY3JfZXhwb3J0X2ZyYW1lcyAoTGlzcF9PYmplY3QgLCBjYWlyb19zdXJmYWNlX3R5 cGVfdCk7CmRpZmYgLS1naXQgYS9zcmMvdzMyZm5zLmMgYi9zcmMvdzMyZm5zLmMKaW5kZXggNGFh YWZkZDg1ZDMuLjMzNmI2NTA0N2I0IDEwMDY0NAotLS0gYS9zcmMvdzMyZm5zLmMKKysrIGIvc3Jj L3czMmZucy5jCkBAIC02NDg3LDkgKzY0ODcsOCBAQCBERUZVTiAoIngtY3JlYXRlLWZyYW1lIiwg RnhfY3JlYXRlX2ZyYW1lLCBTeF9jcmVhdGVfZnJhbWUsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgTlVMTCwgTlVMTCwgUkVTX1RZUEVfQk9PTEVBTik7CiAgIGd1aV9kZWZhdWx0X3BhcmFtZXRl ciAoZiwgcGFyYW1ldGVycywgUWFscGhhX2JhY2tncm91bmQsIFFuaWwsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgImFscGhhQmFja2dyb3VuZCIsICJBbHBoYUJhY2tncm91bmQiLCBSRVNfVFlQ RV9OVU1CRVIpOwotICBndWlfZGVmYXVsdF9wYXJhbWV0ZXIgKGYsIHBhcmFtZXRlcnMsIFFib3Jk ZXJzX3Jlc3BlY3RfYWxwaGFfYmFja2dyb3VuZCwKLQkJCSBRbmlsLCAiYm9yZGVyc1Jlc3BlY3RB bHBoYUJhY2tncm91bmQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICJCb3JkZXJzUmVzcGVj dEFscGhhQmFja2dyb3VuZCIsIFJFU19UWVBFX05VTUJFUik7CisgIGd1aV9kZWZhdWx0X3BhcmFt ZXRlciAoZiwgcGFyYW1ldGVycywgUWFscGhhX2JvcmRlcnMsIFFuaWwsCisgICAgICAgICAgICAg ICAgICAgICAgICAgImFscGhhQm9yZGVycyIsICJBbHBoYUJvcmRlcnMiLCBSRVNfVFlQRV9OVU1C RVIpOwogCiAgIC8qIFByb2Nlc3MgYWxwaGEgaGVyZSAoQnVnIzE2NjE5KS4gIE9uIFhQIHRoaXMg ZmFpbHMgd2l0aCBjaGlsZAogICAgICBmcmFtZXMuICBGb3IgYG5vLWZvY3VzLW9uLW1hcCcgZnJh bWVzIGRlbGF5IHByb2Nlc3Npbmcgb2YgYWxwaGEKQEAgLTY2MzMsOSArNjYzMiw4IEBAIERFRlVO ICgieC1jcmVhdGUtZnJhbWUiLCBGeF9jcmVhdGVfZnJhbWUsIFN4X2NyZWF0ZV9mcmFtZSwKIAog ICBndWlfZGVmYXVsdF9wYXJhbWV0ZXIgKGYsIHBhcmFtZXRlcnMsIFFhbHBoYV9iYWNrZ3JvdW5k LCBRbmlsLAogICAgICAgICAgICAgICAgICAgICAgICAgICJhbHBoYUJhY2tncm91bmQiLCAiQWxw aGFCYWNrZ3JvdW5kIiwgUkVTX1RZUEVfTlVNQkVSKTsKLSAgZ3VpX2RlZmF1bHRfcGFyYW1ldGVy IChmLCBwYXJhbWV0ZXJzLCBRYm9yZGVyc19yZXNwZWN0X2FscGhhX2JhY2tncm91bmQsCi0JCQkg UW5pbCwgImJvcmRlcnNSZXNwZWN0QWxwaGFCYWNrZ3JvdW5kIiwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAiQm9yZGVyc1Jlc3BlY3RBbHBoYUJhY2tncm91bmQiLCBSRVNfVFlQRV9OVU1CRVIp OworICBndWlfZGVmYXVsdF9wYXJhbWV0ZXIgKGYsIHBhcmFtZXRlcnMsIFFhbHBoYV9ib3JkZXJz LCBRbmlsLAorICAgICAgICAgICAgICAgICAgICAgICAgICJhbHBoYUJvcmRlcnMiLCAiQWxwaGFC b3JkZXJzIiwgUkVTX1RZUEVfTlVNQkVSKTsKIAogICAvKiBNYWtlIHRoZSB3aW5kb3cgYXBwZWFy IG9uIHRoZSBmcmFtZSBhbmQgZW5hYmxlIGRpc3BsYXksIHVubGVzcwogICAgICB0aGUgY2FsbGVy IHNheXMgbm90IHRvLiAgSG93ZXZlciwgd2l0aCBleHBsaWNpdCBwYXJlbnQsIEVtYWNzCkBAIC03 NTY5LDkgKzc1NjcsOCBAQCB3MzJfY3JlYXRlX3RpcF9mcmFtZSAoc3RydWN0IHczMl9kaXNwbGF5 X2luZm8gKmRweWluZm8sIExpc3BfT2JqZWN0IHBhcm1zKQogICAgICAgICAgICAgICAgICAgICAg ICAgICJhbHBoYSIsICJBbHBoYSIsIFJFU19UWVBFX05VTUJFUik7CiAgIGd1aV9kZWZhdWx0X3Bh cmFtZXRlciAoZiwgcGFybXMsIFFhbHBoYV9iYWNrZ3JvdW5kLCBRbmlsLAogICAgICAgICAgICAg ICAgICAgICAgICAgICJhbHBoYUJhY2tncm91bmQiLCAiQWxwaGFCYWNrZ3JvdW5kIiwgUkVTX1RZ UEVfTlVNQkVSKTsKLSAgZ3VpX2RlZmF1bHRfcGFyYW1ldGVyIChmLCBwYXJtcywgUWJvcmRlcnNf cmVzcGVjdF9hbHBoYV9iYWNrZ3JvdW5kLCBRbmlsLAotICAgICAgICAgICAgICAgICAgICAgICAg ICJib3JkZXJzUmVzcGVjdEFscGhhQmFja2dyb3VuZCIsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgIkJvcmRlcnNSZXNwZWN0QWxwaGFCYWNrZ3JvdW5kIiwgUkVTX1RZUEVfTlVNQkVSKTsKKyAg Z3VpX2RlZmF1bHRfcGFyYW1ldGVyIChmLCBwYXJtcywgUWFscGhhX2JvcmRlcnMsIFFuaWwsCisg ICAgICAgICAgICAgICAgICAgICAgICAgImFscGhhQm9yZGVycyIsICJBbHBoYUJvcmRlcnMiLCBS RVNfVFlQRV9OVU1CRVIpOwogICBndWlfZGVmYXVsdF9wYXJhbWV0ZXIgKGYsIHBhcm1zLCBRaW5o aWJpdF9kb3VibGVfYnVmZmVyaW5nLCBRbmlsLAogICAgICAgICAgICAgICAgICAgICAgICAgICJp bmhpYml0RG91YmxlQnVmZmVyaW5nIiwgIkluaGliaXREb3VibGVCdWZmZXJpbmciLAogICAgICAg ICAgICAgICAgICAgICAgICAgIFJFU19UWVBFX0JPT0xFQU4pOwpAQCAtMTEwMzEsNyArMTEwMjgs NyBAQCBERUZVTiAoInczMi1zZXQtd2FsbHBhcGVyIiwgRnczMl9zZXRfd2FsbHBhcGVyLCBTdzMy X3NldF93YWxscGFwZXIsIDEsIDEsIDAsCiAgIDAsIC8qIHhfc2V0X292ZXJyaWRlX3JlZGlyZWN0 ICovCiAgIGd1aV9zZXRfbm9fc3BlY2lhbF9nbHlwaHMsCiAgIGd1aV9zZXRfYWxwaGFfYmFja2dy b3VuZCwKLSAgZ3VpX3NldF9ib3JkZXJzX3Jlc3BlY3RfYWxwaGFfYmFja2dyb3VuZCwKKyAgZ3Vp X3NldF9hbHBoYV9ib3JkZXJzLAogICAwLCAvKiB4X3NldF91c2VfZnJhbWVfc3luY2hyb25pemF0 aW9uICovCiB9OwogCmRpZmYgLS1naXQgYS9zcmMveGZucy5jIGIvc3JjL3hmbnMuYwppbmRleCBj NTQ3ZDQ1ZmUzYS4uNDI4NTg1MGNjNjAgMTAwNjQ0Ci0tLSBhL3NyYy94Zm5zLmMKKysrIGIvc3Jj L3hmbnMuYwpAQCAtNzI5LDkgKzcyOSwxNCBAQCB4X3NldF93YWl0X2Zvcl93bSAoc3RydWN0IGZy YW1lICpmLCBMaXNwX09iamVjdCBuZXdfdmFsdWUsIExpc3BfT2JqZWN0IG9sZF92YWx1ZQogICBm LT5vdXRwdXRfZGF0YS54LT53YWl0X2Zvcl93bSA9ICFOSUxQIChuZXdfdmFsdWUpOwogfQogCisv KiBVc2VkIGZvciBmcmFtZSBwYXJhbWV0ZXJzIGxpa2UgYWxwaGEtYmFja2dyb3VuZCBhbmQgYWxw aGEtYm9yZGVycywKKyAgIHdoaWNoIG1ha2Ugb25seSBwYXJ0IG9mIHRoZSBmcmFtZSB0cmFuc3Bh cmVudCAqLworCiBzdGF0aWMgdm9pZAoteF9zZXRfYWxwaGFfYmFja2dyb3VuZCAoc3RydWN0IGZy YW1lICpmLCBMaXNwX09iamVjdCBhcmcsIExpc3BfT2JqZWN0IG9sZHZhbCkKK3hfc2V0X3VwX3Bh cnRpYWxfYWxwaGEgKHN0cnVjdCBmcmFtZSAqZikKIHsKKyAgYm9vbCBwYXJ0aWFsX2FscGhhID0g Zi0+YWxwaGFfYmFja2dyb3VuZCAhPSAxLjAgfHwgZi0+YWxwaGFfYm9yZGVycyAhPSAxLjA7CisK ICAgdW5zaWduZWQgbG9uZyBvcGFxdWVfcmVnaW9uW10gPSB7MCwgMCwgRlJBTUVfUElYRUxfV0lE VEggKGYpLAogCQkJCSAgIEZSQU1FX1BJWEVMX0hFSUdIVCAoZil9OwogI2lmZGVmIEhBVkVfR1RL MwpAQCAtNzM5LDMzICs3NDQsMTkgQEAgeF9zZXRfYWxwaGFfYmFja2dyb3VuZCAoc3RydWN0IGZy YW1lICpmLCBMaXNwX09iamVjdCBhcmcsIExpc3BfT2JqZWN0IG9sZHZhbCkKICAgR3RrV2lkZ2V0 Q2xhc3MgKmNsYXNzOwogI2VuZGlmCiAKLSAgZ3VpX3NldF9hbHBoYV9iYWNrZ3JvdW5kIChmLCBh cmcsIG9sZHZhbCk7Ci0KLSNpZmRlZiBIQVZFX1hSRU5ERVIKLSAgLyogU2V0dGluZyBgYWxwaGFf YmFja2dyb3VuZCcgdG8gc29tZXRoaW5nIG90aGVyIHRoYW4gb3BhcXVlIG9uIGEKLSAgICAgZGlz cGxheSB0aGF0IGRvZXNuJ3Qgc3VwcG9ydCB0aGUgcmVxdWlyZWQgZmVhdHVyZXMgbGVhZHMgdG8K LSAgICAgY29uZnVzaW5nIHJlc3VsdHMuICAqLwotICBpZiAoZi0+YWxwaGFfYmFja2dyb3VuZCA8 IDEuMAotICAgICAgJiYgIUZSQU1FX0RJU1BMQVlfSU5GTyAoZiktPmFscGhhX2JpdHMKLSAgICAg ICYmICFGUkFNRV9DSEVDS19YUl9WRVJTSU9OIChmLCAwLCAyKSkKLSAgICBmLT5hbHBoYV9iYWNr Z3JvdW5kID0gMS4wOwotI2Vsc2UKLSAgZi0+YWxwaGFfYmFja2dyb3VuZCA9IDEuMDsKLSNlbmRp ZgotCiAjaWZkZWYgVVNFX0dUSwogICAvKiBUaGlzIHByZXZlbnRzIEdUSyBmcm9tIHBhaW50aW5n IHRoZSB3aW5kb3cncyBiYWNrZ3JvdW5kLCB3aGljaAogICAgICBpbnRlcmZlcmVzIHdpdGggdHJh bnNwYXJlbnQgYmFja2dyb3VuZCBpbiBzb21lIGVudmlyb25tZW50cyAqLwogCiAgIGlmICghRlJB TUVfVE9PTFRJUF9QIChmKSkKICAgICBndGtfd2lkZ2V0X3NldF9hcHBfcGFpbnRhYmxlIChGUkFN RV9HVEtfT1VURVJfV0lER0VUIChmKSwKLQkJCQkgIGYtPmFscGhhX2JhY2tncm91bmQgIT0gMS4w KTsKKwkJCQkgIHBhcnRpYWxfYWxwaGEpOwogI2VuZGlmCiAKICAgaWYgKCFGUkFNRV9ESVNQTEFZ X0lORk8gKGYpLT5hbHBoYV9iaXRzKQogICAgIHJldHVybjsKIAotICBpZiAoZi0+YWxwaGFfYmFj a2dyb3VuZCAhPSAxLjApCisgIGlmIChwYXJ0aWFsX2FscGhhKQogICAgIHsKICAgICAgIFhDaGFu Z2VQcm9wZXJ0eSAoRlJBTUVfWF9ESVNQTEFZIChmKSwKIAkJICAgICAgIEZSQU1FX1hfV0lORE9X IChmKSwKQEAgLTgwMSw2ICs3OTIsNDcgQEAgeF9zZXRfYWxwaGFfYmFja2dyb3VuZCAoc3RydWN0 IGZyYW1lICpmLCBMaXNwX09iamVjdCBhcmcsIExpc3BfT2JqZWN0IG9sZHZhbCkKICNlbmRpZgog fQogCitzdGF0aWMgYm9vbAoreF9wYXJ0aWFsX2FscGhhX3N1cHBvcnRlZCAoc3RydWN0IGZyYW1l ICpmKQoreworICBib29sIHBhcnRpYWxfYWxwaGEgPSBmLT5hbHBoYV9iYWNrZ3JvdW5kICE9IDEu MCB8fCBmLT5hbHBoYV9ib3JkZXJzICE9IDEuMDsKKworI2lmZGVmIEhBVkVfWFJFTkRFUgorICAv KiBTZXR0aW5nIGBhbHBoYV9iYWNrZ3JvdW5kJyB0byBzb21ldGhpbmcgb3RoZXIgdGhhbiBvcGFx dWUgb24gYQorICAgICBkaXNwbGF5IHRoYXQgZG9lc24ndCBzdXBwb3J0IHRoZSByZXF1aXJlZCBm ZWF0dXJlcyBsZWFkcyB0bworICAgICBjb25mdXNpbmcgcmVzdWx0cy4gICovCisgIGlmIChwYXJ0 aWFsX2FscGhhCisgICAgICAmJiAhRlJBTUVfRElTUExBWV9JTkZPIChmKS0+YWxwaGFfYml0cwor ICAgICAgJiYgIUZSQU1FX0NIRUNLX1hSX1ZFUlNJT04gKGYsIDAsIDIpKQorICAgIHJldHVybiBm YWxzZTsKKyAgcmV0dXJuIHRydWU7CisjZWxzZQorICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30K KworCitzdGF0aWMgdm9pZAoreF9zZXRfYWxwaGFfYmFja2dyb3VuZCAoc3RydWN0IGZyYW1lICpm LCBMaXNwX09iamVjdCBhcmcsIExpc3BfT2JqZWN0IG9sZHZhbCkKK3sKKyAgZ3VpX3NldF9hbHBo YV9iYWNrZ3JvdW5kIChmLCBhcmcsIG9sZHZhbCk7CisKKyAgaWYgKCF4X3BhcnRpYWxfYWxwaGFf c3VwcG9ydGVkIChmKSkKKyAgICBmLT5hbHBoYV9iYWNrZ3JvdW5kID0gMS4wOworCisgIHhfc2V0 X3VwX3BhcnRpYWxfYWxwaGEoZik7Cit9CisKK3N0YXRpYyB2b2lkCit4X3NldF9hbHBoYV9ib3Jk ZXJzIChzdHJ1Y3QgZnJhbWUgKmYsIExpc3BfT2JqZWN0IGFyZywgTGlzcF9PYmplY3Qgb2xkdmFs KSB7CisgIGd1aV9zZXRfYWxwaGFfYm9yZGVycyAoZiwgYXJnLCBvbGR2YWwpOworCisgIGlmICgh eF9wYXJ0aWFsX2FscGhhX3N1cHBvcnRlZCAoZikpCisgICAgZi0+YWxwaGFfYm9yZGVycyA9IDEu MDsKKworICB4X3NldF91cF9wYXJ0aWFsX2FscGhhKGYpOworfQorCiBzdGF0aWMgdm9pZAogeF9z ZXRfdG9vbF9iYXJfcG9zaXRpb24gKHN0cnVjdCBmcmFtZSAqZiwKICAgICAgICAgICAgICAgICAg ICAgICAgICBMaXNwX09iamVjdCBuZXdfdmFsdWUsCkBAIC01MzMzLDkgKzUzNjUsOCBAQCBERUZV TiAoIngtY3JlYXRlLWZyYW1lIiwgRnhfY3JlYXRlX2ZyYW1lLCBTeF9jcmVhdGVfZnJhbWUsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgImFscGhhIiwgIkFscGhhIiwgUkVTX1RZUEVfTlVNQkVS KTsKICAgZ3VpX2RlZmF1bHRfcGFyYW1ldGVyIChmLCBwYXJtcywgUWFscGhhX2JhY2tncm91bmQs IFFuaWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImFscGhhQmFja2dyb3VuZCIsICJBbHBo YUJhY2tncm91bmQiLCBSRVNfVFlQRV9OVU1CRVIpOwotICBndWlfZGVmYXVsdF9wYXJhbWV0ZXIg KGYsIHBhcm1zLCBRYm9yZGVyc19yZXNwZWN0X2FscGhhX2JhY2tncm91bmQsIFFuaWwsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgImJvcmRlcnNSZXNwZWN0QWxwaGFCYWNrZ3JvdW5kIiwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAiQm9yZGVyc1Jlc3BlY3RBbHBoYUJhY2tncm91bmQiLCBS RVNfVFlQRV9OVU1CRVIpOworICBndWlfZGVmYXVsdF9wYXJhbWV0ZXIgKGYsIHBhcm1zLCBRYWxw aGFfYm9yZGVycywgUW5pbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiYWxwaGFCb3JkZXJz IiwgIkFscGhhQm9yZGVycyIsIFJFU19UWVBFX05VTUJFUik7CiAKICAgaWYgKCFOSUxQIChwYXJl bnRfZnJhbWUpKQogICAgIHsKQEAgLTg2NjAsOSArODY5MSw4IEBAIHhfY3JlYXRlX3RpcF9mcmFt ZSAoc3RydWN0IHhfZGlzcGxheV9pbmZvICpkcHlpbmZvLCBMaXNwX09iamVjdCBwYXJtcykKICAg ICAgICAgICAgICAgICAgICAgICAgICAiYWxwaGEiLCAiQWxwaGEiLCBSRVNfVFlQRV9OVU1CRVIp OwogICBndWlfZGVmYXVsdF9wYXJhbWV0ZXIgKGYsIHBhcm1zLCBRYWxwaGFfYmFja2dyb3VuZCwg UW5pbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAiYWxwaGFCYWNrZ3JvdW5kIiwgIkFscGhh QmFja2dyb3VuZCIsIFJFU19UWVBFX05VTUJFUik7Ci0gIGd1aV9kZWZhdWx0X3BhcmFtZXRlciAo ZiwgcGFybXMsIFFib3JkZXJzX3Jlc3BlY3RfYWxwaGFfYmFja2dyb3VuZCwgUW5pbCwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAiYm9yZGVyc1Jlc3BlY3RBbHBoYUJhY2tncm91bmQiLAotICAg ICAgICAgICAgICAgICAgICAgICAgICJCb3JkZXJzUmVzcGVjdEFscGhhQmFja2dyb3VuZCIsIFJF U19UWVBFX05VTUJFUik7CisgIGd1aV9kZWZhdWx0X3BhcmFtZXRlciAoZiwgcGFybXMsIFFhbHBo YV9ib3JkZXJzLCBRbmlsLAorICAgICAgICAgICAgICAgICAgICAgICAgICJhbHBoYUJvcmRlcnMi LCAiQWxwaGFCb3JkZXJzIiwgUkVTX1RZUEVfTlVNQkVSKTsKIAogICAvKiBBZGQgYHRvb2x0aXAn IGZyYW1lIHBhcmFtZXRlcidzIGRlZmF1bHQgdmFsdWUuICovCiAgIGlmIChOSUxQIChGZnJhbWVf cGFyYW1ldGVyIChmcmFtZSwgUXRvb2x0aXApKSkKQEAgLTEwMjAyLDcgKzEwMjMyLDcgQEAgREVG VU4gKCJ4LXRlc3Qtc3RyaW5nLWNvbnZlcnNpb24iLCBGeF90ZXN0X3N0cmluZ19jb252ZXJzaW9u LAogICB4X3NldF9vdmVycmlkZV9yZWRpcmVjdCwKICAgZ3VpX3NldF9ub19zcGVjaWFsX2dseXBo cywKICAgeF9zZXRfYWxwaGFfYmFja2dyb3VuZCwKLSAgZ3VpX3NldF9ib3JkZXJzX3Jlc3BlY3Rf YWxwaGFfYmFja2dyb3VuZCwKKyAgeF9zZXRfYWxwaGFfYm9yZGVycywKICAgeF9zZXRfdXNlX2Zy YW1lX3N5bmNocm9uaXphdGlvbiwKICAgeF9zZXRfc2hhZGVkLAogfTsKZGlmZiAtLWdpdCBhL3Ny Yy94dGVybS5jIGIvc3JjL3h0ZXJtLmMKaW5kZXggMDIxNTFmZDJjZWQuLjIwNzY5MDI0YTY5IDEw MDY0NAotLS0gYS9zcmMveHRlcm0uYworKysgYi9zcmMveHRlcm0uYwpAQCAtNjA1Miw5ICs2MDUy LDE1IEBAIHhfZW5kX2NyX2NsaXAgKHN0cnVjdCBmcmFtZSAqZikKICNlbmRpZgogfQogCitkb3Vi bGUKK3hfZ2V0X2ZyYW1lX2FscGhhX2JhY2tncm91bmQgKHN0cnVjdCBmcmFtZSAqZikKK3sKKyAg cmV0dXJuIGYtPmFscGhhX2JhY2tncm91bmQ7Cit9CisKIHZvaWQKIHhfc2V0X2NyX3NvdXJjZV93 aXRoX2djX2ZvcmVncm91bmQgKHN0cnVjdCBmcmFtZSAqZiwgR0MgZ2MsCi0JCQkJICAgIGJvb2wg cmVzcGVjdF9hbHBoYV9iYWNrZ3JvdW5kKQorCQkJCSAgICBkb3VibGUgYWxwaGEpCiB7CiAgIFhH Q1ZhbHVlcyB4Z2N2OwogICBYQ29sb3IgY29sb3I7CkBAIC02MDY1LDEyICs2MDcxLDExIEBAIHhf c2V0X2NyX3NvdXJjZV93aXRoX2djX2ZvcmVncm91bmQgKHN0cnVjdCBmcmFtZSAqZiwgR0MgZ2Ms CiAgIHhfcXVlcnlfY29sb3JzIChmLCAmY29sb3IsIDEpOwogICBkZXB0aCA9IEZSQU1FX0RJU1BM QVlfSU5GTyAoZiktPm5fcGxhbmVzOwogCi0gIGlmIChmLT5hbHBoYV9iYWNrZ3JvdW5kIDwgMS4w ICYmIGRlcHRoID09IDMyCi0gICAgICAmJiByZXNwZWN0X2FscGhhX2JhY2tncm91bmQpCisgIGlm IChhbHBoYSA8IDEuMCAmJiBkZXB0aCA9PSAzMikKICAgICB7CiAgICAgICBjYWlyb19zZXRfc291 cmNlX3JnYmEgKEZSQU1FX0NSX0NPTlRFWFQgKGYpLCBjb2xvci5yZWQgLyA2NTUzNS4wLAogCQkJ ICAgICBjb2xvci5ncmVlbiAvIDY1NTM1LjAsIGNvbG9yLmJsdWUgLyA2NTUzNS4wLAotCQkJICAg ICBmLT5hbHBoYV9iYWNrZ3JvdW5kKTsKKwkJCSAgICAgYWxwaGEpOwogCiAgICAgICBjYWlyb19z ZXRfb3BlcmF0b3IgKEZSQU1FX0NSX0NPTlRFWFQgKGYpLCBDQUlST19PUEVSQVRPUl9TT1VSQ0Up OwogICAgIH0KQEAgLTYwODQsNyArNjA4OSw3IEBAIHhfc2V0X2NyX3NvdXJjZV93aXRoX2djX2Zv cmVncm91bmQgKHN0cnVjdCBmcmFtZSAqZiwgR0MgZ2MsCiAKIHZvaWQKIHhfc2V0X2NyX3NvdXJj ZV93aXRoX2djX2JhY2tncm91bmQgKHN0cnVjdCBmcmFtZSAqZiwgR0MgZ2MsCi0JCQkJICAgIGJv b2wgcmVzcGVjdF9hbHBoYV9iYWNrZ3JvdW5kKQorCQkJCSAgICBkb3VibGUgYWxwaGEpCiB7CiAg IFhHQ1ZhbHVlcyB4Z2N2OwogICBYQ29sb3IgY29sb3I7CkBAIC02MDk3LDEyICs2MTAyLDExIEBA IHhfc2V0X2NyX3NvdXJjZV93aXRoX2djX2JhY2tncm91bmQgKHN0cnVjdCBmcmFtZSAqZiwgR0Mg Z2MsCiAKICAgZGVwdGggPSBGUkFNRV9ESVNQTEFZX0lORk8gKGYpLT5uX3BsYW5lczsKIAotICBp ZiAoZi0+YWxwaGFfYmFja2dyb3VuZCA8IDEuMCAmJiBkZXB0aCA9PSAzMgotICAgICAgJiYgcmVz cGVjdF9hbHBoYV9iYWNrZ3JvdW5kKQorICBpZiAoYWxwaGEgPCAxLjAgJiYgZGVwdGggPT0gMzIp CiAgICAgewogICAgICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2JhIChGUkFNRV9DUl9DT05URVhUIChm KSwgY29sb3IucmVkIC8gNjU1MzUuMCwKIAkJCSAgICAgY29sb3IuZ3JlZW4gLyA2NTUzNS4wLCBj b2xvci5ibHVlIC8gNjU1MzUuMCwKLQkJCSAgICAgZi0+YWxwaGFfYmFja2dyb3VuZCk7CisJCQkg ICAgIGFscGhhKTsKIAogICAgICAgY2Fpcm9fc2V0X29wZXJhdG9yIChGUkFNRV9DUl9DT05URVhU IChmKSwgQ0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKICAgICB9CkBAIC02Mjk2LDcgKzYzMDAsNyBA QCB4X2NyX2RyYXdfaW1hZ2UgKHN0cnVjdCBmcmFtZSAqZiwgR0MgZ2MsIGNhaXJvX3BhdHRlcm5f dCAqaW1hZ2UsCiAgICAgY2Fpcm9fcmVjdGFuZ2xlIChjciwgZGVzdF94LCBkZXN0X3ksIHdpZHRo LCBoZWlnaHQpOwogICBlbHNlCiAgICAgewotICAgICAgeF9zZXRfY3Jfc291cmNlX3dpdGhfZ2Nf YmFja2dyb3VuZCAoZiwgZ2MsIGZhbHNlKTsKKyAgICAgIHhfc2V0X2NyX3NvdXJjZV93aXRoX2dj X2JhY2tncm91bmQgKGYsIGdjLCAxLjApOwogICAgICAgY2Fpcm9fcmVjdGFuZ2xlIChjciwgZGVz dF94LCBkZXN0X3ksIHdpZHRoLCBoZWlnaHQpOwogICAgICAgY2Fpcm9fZmlsbF9wcmVzZXJ2ZSAo Y3IpOwogICAgIH0KQEAgLTYzMTMsNyArNjMxNyw3IEBAIHhfY3JfZHJhd19pbWFnZSAoc3RydWN0 IGZyYW1lICpmLCBHQyBnYywgY2Fpcm9fcGF0dGVybl90ICppbWFnZSwKICAgICB9CiAgIGVsc2UK ICAgICB7Ci0gICAgICB4X3NldF9jcl9zb3VyY2Vfd2l0aF9nY19mb3JlZ3JvdW5kIChmLCBnYywg ZmFsc2UpOworICAgICAgeF9zZXRfY3Jfc291cmNlX3dpdGhfZ2NfZm9yZWdyb3VuZCAoZiwgZ2Ms IDEuMCk7CiAgICAgICBjYWlyb19jbGlwIChjcik7CiAgICAgICBjYWlyb19tYXNrIChjciwgaW1h Z2UpOwogICAgIH0KQEAgLTY1NzEsNyArNjU3NSw3IEBAIHhfeHJlbmRlcl9jb2xvcl9mcm9tX2dj X2JhY2tncm91bmQgKHN0cnVjdCBmcmFtZSAqZiwgR0MgZ2MsIFhSZW5kZXJDb2xvciAqY29sb3Is CiAKIHN0YXRpYyB2b2lkCiB4X2ZpbGxfcmVjdGFuZ2xlIChzdHJ1Y3QgZnJhbWUgKmYsIEdDIGdj LCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwKLQkJICBib29sIHJlc3BlY3Rf YWxwaGFfYmFja2dyb3VuZCkKKwkJICBkb3VibGUgYWxwaGEpCiB7CiAjaWZkZWYgVVNFX0NBSVJP CiAgIERpc3BsYXkgKmRweSA9IEZSQU1FX1hfRElTUExBWSAoZik7CkBAIC02NTg3LDcgKzY1OTEs NyBAQCB4X2ZpbGxfcmVjdGFuZ2xlIChzdHJ1Y3QgZnJhbWUgKmYsIEdDIGdjLCBpbnQgeCwgaW50 IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwKIAkgcmVnYXJkZWQgYXMgUGl4bWFwIG9mIHVuc3Bl Y2lmaWVkIHNpemUgZmlsbGVkIHdpdGggb25lcy4gICovCiAgICAgICB8fCAoeGdjdi5zdGlwcGxl ICYgKChQaXhtYXApIDcgPDwgKHNpemVvZiAoUGl4bWFwKSAqIENIQVJfQklUIC0gMykpKSkKICAg ICB7Ci0gICAgICB4X3NldF9jcl9zb3VyY2Vfd2l0aF9nY19mb3JlZ3JvdW5kIChmLCBnYywgcmVz cGVjdF9hbHBoYV9iYWNrZ3JvdW5kKTsKKyAgICAgIHhfc2V0X2NyX3NvdXJjZV93aXRoX2djX2Zv cmVncm91bmQgKGYsIGdjLCBhbHBoYSk7CiAgICAgICBjYWlyb19yZWN0YW5nbGUgKGNyLCB4LCB5 LCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgIGNhaXJvX2ZpbGwgKGNyKTsKICAgICB9CkBAIC02NTk1 LDE0ICs2NTk5LDE0IEBAIHhfZmlsbF9yZWN0YW5nbGUgKHN0cnVjdCBmcmFtZSAqZiwgR0MgZ2Ms IGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LAogICAgIHsKICAgICAgIGVhc3Nl cnQgKHhnY3YuZmlsbF9zdHlsZSA9PSBGaWxsT3BhcXVlU3RpcHBsZWQpOwogICAgICAgZWFzc2Vy dCAoeGdjdi5zdGlwcGxlICE9IE5vbmUpOwotICAgICAgeF9zZXRfY3Jfc291cmNlX3dpdGhfZ2Nf YmFja2dyb3VuZCAoZiwgZ2MsIHJlc3BlY3RfYWxwaGFfYmFja2dyb3VuZCk7CisgICAgICB4X3Nl dF9jcl9zb3VyY2Vfd2l0aF9nY19iYWNrZ3JvdW5kIChmLCBnYywgYWxwaGEpOwogICAgICAgY2Fp cm9fcmVjdGFuZ2xlIChjciwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CiAgICAgICBjYWlyb19maWxs X3ByZXNlcnZlIChjcik7CiAKICAgICAgIGNhaXJvX3BhdHRlcm5fdCAqcGF0dGVybiA9IHhfYml0 bWFwX3N0aXBwbGUgKGYsIHhnY3Yuc3RpcHBsZSk7CiAgICAgICBpZiAocGF0dGVybikKIAl7Ci0J ICB4X3NldF9jcl9zb3VyY2Vfd2l0aF9nY19mb3JlZ3JvdW5kIChmLCBnYywgcmVzcGVjdF9hbHBo YV9iYWNrZ3JvdW5kKTsKKwkgIHhfc2V0X2NyX3NvdXJjZV93aXRoX2djX2ZvcmVncm91bmQgKGYs IGdjLCBhbHBoYSk7CiAJICBjYWlyb19jbGlwIChjcik7CiAJICBjYWlyb19tYXNrIChjciwgcGF0 dGVybik7CiAJfQpAQCAtNjYxMCw4ICs2NjE0LDcgQEAgeF9maWxsX3JlY3RhbmdsZSAoc3RydWN0 IGZyYW1lICpmLCBHQyBnYywgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsCiAg IHhfZW5kX2NyX2NsaXAgKGYpOwogI2Vsc2UKICNpZiBkZWZpbmVkIEhBVkVfWFJFTkRFUiAmJiAo UkVOREVSX01BSk9SID4gMCB8fCAoUkVOREVSX01JTk9SID49IDIpKQotICBpZiAocmVzcGVjdF9h bHBoYV9iYWNrZ3JvdW5kCi0gICAgICAmJiBmLT5hbHBoYV9iYWNrZ3JvdW5kICE9IDEuMAorICBp ZiAoYWxwaGEgIT0gMS4wCiAgICAgICAmJiBGUkFNRV9ESVNQTEFZX0lORk8gKGYpLT5hbHBoYV9i aXRzCiAgICAgICAmJiBGUkFNRV9DSEVDS19YUl9WRVJTSU9OIChmLCAwLCAyKSkKICAgICB7CkBA IC02NjI0LDcgKzY2MjcsNyBAQCB4X2ZpbGxfcmVjdGFuZ2xlIChzdHJ1Y3QgZnJhbWUgKmYsIEdD IGdjLCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwKICNpZiBSRU5ERVJfTUFK T1IgPiAwIHx8IChSRU5ERVJfTUlOT1IgPj0gMTApCiAJICBYR0NWYWx1ZXMgeGdjdjsKIAkgIFhS ZW5kZXJQaWN0dXJlQXR0cmlidXRlcyBhdHRyczsKLQkgIFhSZW5kZXJDb2xvciBhbHBoYTsKKwkg IFhSZW5kZXJDb2xvciBhbHBoYUNvbG9yOwogCSAgUGljdHVyZSBzdGlwcGxlLCBmaWxsOwogI2Vu ZGlmCiAKQEAgLTY2MzcsNyArNjY0MCw3IEBAIHhfZmlsbF9yZWN0YW5nbGUgKHN0cnVjdCBmcmFt ZSAqZiwgR0MgZ2MsIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LAogCSAgaWYg KHhnY3YuZmlsbF9zdHlsZSA9PSBGaWxsT3BhcXVlU3RpcHBsZWQKIAkgICAgICAmJiBGUkFNRV9D SEVDS19YUl9WRVJTSU9OIChmLCAwLCAxMCkpCiAJICAgIHsKLQkgICAgICB4X3hyZW5kZXJfY29s b3JfZnJvbV9nY19iYWNrZ3JvdW5kIChmLCBnYywgJmFscGhhLCB0cnVlKTsKKwkgICAgICB4X3hy ZW5kZXJfY29sb3JfZnJvbV9nY19iYWNrZ3JvdW5kIChmLCBnYywgJmFscGhhQ29sb3IsIHRydWUp OwogCSAgICAgIHhfeHJlbmRlcl9jb2xvcl9mcm9tX2djX2ZvcmVncm91bmQgKGYsIGdjLCAmeGMs IHRydWUpOwogCSAgICAgIGF0dHJzLnJlcGVhdCA9IFJlcGVhdE5vcm1hbDsKIApAQCAtNjY0OSw3 ICs2NjUyLDcgQEAgeF9maWxsX3JlY3RhbmdsZSAoc3RydWN0IGZyYW1lICpmLCBHQyBnYywgaW50 IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsCiAKIAkgICAgICBYUmVuZGVyRmlsbFJl Y3RhbmdsZSAoRlJBTUVfWF9ESVNQTEFZIChmKSwgUGljdE9wU3JjLAogCQkJCSAgICBGUkFNRV9Y X1BJQ1RVUkUgKGYpLAotCQkJCSAgICAmYWxwaGEsIHgsIHksIHdpZHRoLCBoZWlnaHQpOworCQkJ CSAgICAmYWxwaGFDb2xvciwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CiAKIAkgICAgICBmaWxsID0g WFJlbmRlckNyZWF0ZVNvbGlkRmlsbCAoRlJBTUVfWF9ESVNQTEFZIChmKSwgJnhjKTsKIApAQCAt NjY4NSwyMCArNjY4OCwxOSBAQCB4X2ZpbGxfcmVjdGFuZ2xlIChzdHJ1Y3QgZnJhbWUgKmYsIEdD IGdjLCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwKIAogc3RhdGljIHZvaWQK IHhfY2xlYXJfcmVjdGFuZ2xlIChzdHJ1Y3QgZnJhbWUgKmYsIEdDIGdjLCBpbnQgeCwgaW50IHks IGludCB3aWR0aCwgaW50IGhlaWdodCwKLQkJICAgYm9vbCByZXNwZWN0X2FscGhhX2JhY2tncm91 bmQpCisJCSAgIGRvdWJsZSBhbHBoYSkKIHsKICNpZmRlZiBVU0VfQ0FJUk8KICAgY2Fpcm9fdCAq Y3I7CiAKICAgY3IgPSB4X2JlZ2luX2NyX2NsaXAgKGYsIGdjKTsKLSAgeF9zZXRfY3Jfc291cmNl X3dpdGhfZ2NfYmFja2dyb3VuZCAoZiwgZ2MsIHJlc3BlY3RfYWxwaGFfYmFja2dyb3VuZCk7Cisg IHhfc2V0X2NyX3NvdXJjZV93aXRoX2djX2JhY2tncm91bmQgKGYsIGdjLCBhbHBoYSk7CiAgIGNh aXJvX3JlY3RhbmdsZSAoY3IsIHgsIHksIHdpZHRoLCBoZWlnaHQpOwogICBjYWlyb19maWxsIChj cik7CiAgIHhfZW5kX2NyX2NsaXAgKGYpOwogI2Vsc2UKICNpZiBkZWZpbmVkIEhBVkVfWFJFTkRF UiAmJiAoUkVOREVSX01BSk9SID4gMCB8fCAoUkVOREVSX01JTk9SID49IDIpKQotICBpZiAocmVz cGVjdF9hbHBoYV9iYWNrZ3JvdW5kCi0gICAgICAmJiBmLT5hbHBoYV9iYWNrZ3JvdW5kICE9IDEu MAorICBpZiAoYWxwaGEgIT0gMS4wCiAgICAgICAmJiBGUkFNRV9ESVNQTEFZX0lORk8gKGYpLT5h bHBoYV9iaXRzCiAgICAgICAmJiBGUkFNRV9DSEVDS19YUl9WRVJTSU9OIChmLCAwLCAyKSkKICAg ICB7CkBAIC02NzM4LDcgKzY3NDAsNyBAQCB4X2RyYXdfcmVjdGFuZ2xlIChzdHJ1Y3QgZnJhbWUg KmYsIEdDIGdjLCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkKICAgY2Fpcm9f dCAqY3I7CiAKICAgY3IgPSB4X2JlZ2luX2NyX2NsaXAgKGYsIGdjKTsKLSAgeF9zZXRfY3Jfc291 cmNlX3dpdGhfZ2NfZm9yZWdyb3VuZCAoZiwgZ2MsIGZhbHNlKTsKKyAgeF9zZXRfY3Jfc291cmNl X3dpdGhfZ2NfZm9yZWdyb3VuZCAoZiwgZ2MsIDEuMCk7CiAgIGNhaXJvX3JlY3RhbmdsZSAoY3Is IHggKyAwLjUsIHkgKyAwLjUsIHdpZHRoLCBoZWlnaHQpOwogICBjYWlyb19zZXRfbGluZV93aWR0 aCAoY3IsIDEpOwogICBjYWlyb19zdHJva2UgKGNyKTsKQEAgLTY3NTYsNyArNjc1OCw4IEBAIHhf Y2xlYXJfd2luZG93IChzdHJ1Y3QgZnJhbWUgKmYpCiAgIGNhaXJvX3QgKmNyOwogCiAgIGNyID0g eF9iZWdpbl9jcl9jbGlwIChmLCBOVUxMKTsKLSAgeF9zZXRfY3Jfc291cmNlX3dpdGhfZ2NfYmFj a2dyb3VuZCAoZiwgZi0+b3V0cHV0X2RhdGEueC0+bm9ybWFsX2djLCB0cnVlKTsKKyAgeF9zZXRf Y3Jfc291cmNlX3dpdGhfZ2NfYmFja2dyb3VuZCAoZiwgZi0+b3V0cHV0X2RhdGEueC0+bm9ybWFs X2djLAorCQkJCSAgICAgIGYtPmFscGhhX2JhY2tncm91bmQpOwogICBjYWlyb19wYWludCAoY3Ip OwogICB4X2VuZF9jcl9jbGlwIChmKTsKICNlbHNlCkBAIC02Nzg0LDcgKzY3ODcsNyBAQCB4X2Zp bGxfdHJhcGV6b2lkX2Zvcl9yZWxpZWYgKHN0cnVjdCBmcmFtZSAqZiwgR0MgZ2MsIGludCB4LCBp bnQgeSwKICAgY2Fpcm9fdCAqY3I7CiAKICAgY3IgPSB4X2JlZ2luX2NyX2NsaXAgKGYsIGdjKTsK LSAgeF9zZXRfY3Jfc291cmNlX3dpdGhfZ2NfZm9yZWdyb3VuZCAoZiwgZ2MsIGZhbHNlKTsKKyAg eF9zZXRfY3Jfc291cmNlX3dpdGhfZ2NfZm9yZWdyb3VuZCAoZiwgZ2MsIDEuMCk7CiAgIGNhaXJv X21vdmVfdG8gKGNyLCB0b3BfcCA/IHggOiB4ICsgaGVpZ2h0LCB5KTsKICAgY2Fpcm9fbGluZV90 byAoY3IsIHgsIHkgKyBoZWlnaHQpOwogICBjYWlyb19saW5lX3RvIChjciwgdG9wX3AgPyB4ICsg d2lkdGggLSBoZWlnaHQgOiB4ICsgd2lkdGgsIHkgKyBoZWlnaHQpOwpAQCAtNjgxMSw3ICs2ODE0 LDcgQEAgeF9lcmFzZV9jb3JuZXJzX2Zvcl9yZWxpZWYgKHN0cnVjdCBmcmFtZSAqZiwgR0MgZ2Ms IGludCB4LCBpbnQgeSwKICAgaW50IGk7CiAKICAgY3IgPSB4X2JlZ2luX2NyX2NsaXAgKGYsIGdj KTsKLSAgeF9zZXRfY3Jfc291cmNlX3dpdGhfZ2NfYmFja2dyb3VuZCAoZiwgZ2MsIGZhbHNlKTsK KyAgeF9zZXRfY3Jfc291cmNlX3dpdGhfZ2NfYmFja2dyb3VuZCAoZiwgZ2MsIDEuMCk7CiAgIGZv ciAoaSA9IDA7IGkgPCBDT1JORVJfTEFTVDsgaSsrKQogICAgIGlmIChjb3JuZXJzICYgKDEgPDwg aSkpCiAgICAgICB7CkBAIC02ODQ0LDcgKzY4NDcsNyBAQCB4X2RyYXdfaG9yaXpvbnRhbF93YXZl IChzdHJ1Y3QgZnJhbWUgKmYsIEdDIGdjLCBpbnQgeCwgaW50IHksCiAgIGludCB4b2Zmc2V0LCBu OwogCiAgIGNyID0geF9iZWdpbl9jcl9jbGlwIChmLCBnYyk7Ci0gIHhfc2V0X2NyX3NvdXJjZV93 aXRoX2djX2ZvcmVncm91bmQgKGYsIGdjLCBmYWxzZSk7CisgIHhfc2V0X2NyX3NvdXJjZV93aXRo X2djX2ZvcmVncm91bmQgKGYsIGdjLCAxLjApOwogICBjYWlyb19yZWN0YW5nbGUgKGNyLCB4LCB5 LCB3aWR0aCwgaGVpZ2h0KTsKICAgY2Fpcm9fY2xpcCAoY3IpOwogCkBAIC03NDYwLDcgKzc0NjMs NyBAQCB4X2RyYXdfdmVydGljYWxfd2luZG93X2JvcmRlciAoc3RydWN0IHdpbmRvdyAqdywgaW50 IHgsIGludCB5MCwgaW50IHkxKQogCQkgICAgZmFjZS0+Zm9yZWdyb3VuZCk7CiAKICNpZmRlZiBV U0VfQ0FJUk8KLSAgeF9maWxsX3JlY3RhbmdsZSAoZiwgZi0+b3V0cHV0X2RhdGEueC0+bm9ybWFs X2djLCB4LCB5MCwgMSwgeTEgLSB5MCwgZmFsc2UpOworICB4X2ZpbGxfcmVjdGFuZ2xlIChmLCBm LT5vdXRwdXRfZGF0YS54LT5ub3JtYWxfZ2MsIHgsIHkwLCAxLCB5MSAtIHkwLCAxLjApOwogI2Vs c2UKICAgWERyYXdMaW5lIChGUkFNRV9YX0RJU1BMQVkgKGYpLCBGUkFNRV9YX0RSQVdBQkxFIChm KSwKIAkgICAgIGYtPm91dHB1dF9kYXRhLngtPm5vcm1hbF9nYywgeCwgeTAsIHgsIHkxKTsKQEAg LTc0OTMsMTYgKzc0OTYsMTMgQEAgeF9kcmF3X3dpbmRvd19kaXZpZGVyIChzdHJ1Y3Qgd2luZG93 ICp3LCBpbnQgeDAsIGludCB4MSwgaW50IHkwLCBpbnQgeTEpCiAgICAgewogICAgICAgWFNldEZv cmVncm91bmQgKGRpc3BsYXksIGYtPm91dHB1dF9kYXRhLngtPm5vcm1hbF9nYywgY29sb3JfZmly c3QpOwogICAgICAgeF9maWxsX3JlY3RhbmdsZSAoZiwgZi0+b3V0cHV0X2RhdGEueC0+bm9ybWFs X2djLAotCQkJeDAsIHkwLCAxLCB5MSAtIHkwLAotICAgICAgICAgICAgICAgICAgICAgICAgZi0+ Ym9yZGVyc19yZXNwZWN0X2FscGhhX2JhY2tncm91bmQpOworCQkJeDAsIHkwLCAxLCB5MSAtIHkw LCBmLT5hbHBoYV9ib3JkZXJzKTsKICAgICAgIFhTZXRGb3JlZ3JvdW5kIChkaXNwbGF5LCBmLT5v dXRwdXRfZGF0YS54LT5ub3JtYWxfZ2MsIGNvbG9yKTsKICAgICAgIHhfZmlsbF9yZWN0YW5nbGUg KGYsIGYtPm91dHB1dF9kYXRhLngtPm5vcm1hbF9nYywKLQkJCXgwICsgMSwgeTAsIHgxIC0geDAg LSAyLCB5MSAtIHkwLAotICAgICAgICAgICAgICAgICAgICAgICAgZi0+Ym9yZGVyc19yZXNwZWN0 X2FscGhhX2JhY2tncm91bmQpOworCQkJeDAgKyAxLCB5MCwgeDEgLSB4MCAtIDIsIHkxIC0geTAs IGYtPmFscGhhX2JvcmRlcnMpOwogICAgICAgWFNldEZvcmVncm91bmQgKGRpc3BsYXksIGYtPm91 dHB1dF9kYXRhLngtPm5vcm1hbF9nYywgY29sb3JfbGFzdCk7CiAgICAgICB4X2ZpbGxfcmVjdGFu Z2xlIChmLCBmLT5vdXRwdXRfZGF0YS54LT5ub3JtYWxfZ2MsCi0JCQl4MSAtIDEsIHkwLCAxLCB5 MSAtIHkwLAotICAgICAgICAgICAgICAgICAgICAgICAgZi0+Ym9yZGVyc19yZXNwZWN0X2FscGhh X2JhY2tncm91bmQpOworCQkJeDEgLSAxLCB5MCwgMSwgeTEgLSB5MCwgZi0+YWxwaGFfYm9yZGVy cyk7CiAgICAgfQogICBlbHNlIGlmICgoeDEgLSB4MCA+IHkxIC0geTApICYmICh5MSAtIHkwID49 IDMpKQogICAgIC8qIEEgaG9yaXpvbnRhbCBkaXZpZGVyLCBhdCBsZWFzdCB0aHJlZSBwaXhlbHMg aGlnaDogRHJhdyBmaXJzdCBhbmQKQEAgLTc1MTAsMTYgKzc1MTAsMTMgQEAgeF9kcmF3X3dpbmRv d19kaXZpZGVyIChzdHJ1Y3Qgd2luZG93ICp3LCBpbnQgeDAsIGludCB4MSwgaW50IHkwLCBpbnQg eTEpCiAgICAgewogICAgICAgWFNldEZvcmVncm91bmQgKGRpc3BsYXksIGYtPm91dHB1dF9kYXRh LngtPm5vcm1hbF9nYywgY29sb3JfZmlyc3QpOwogICAgICAgeF9maWxsX3JlY3RhbmdsZSAoZiwg Zi0+b3V0cHV0X2RhdGEueC0+bm9ybWFsX2djLAotCQkJeDAsIHkwLCB4MSAtIHgwLCAxLAotICAg ICAgICAgICAgICAgICAgICAgICAgZi0+Ym9yZGVyc19yZXNwZWN0X2FscGhhX2JhY2tncm91bmQp OworCQkJeDAsIHkwLCB4MSAtIHgwLCAxLCBmLT5hbHBoYV9ib3JkZXJzKTsKICAgICAgIFhTZXRG b3JlZ3JvdW5kIChkaXNwbGF5LCBmLT5vdXRwdXRfZGF0YS54LT5ub3JtYWxfZ2MsIGNvbG9yKTsK ICAgICAgIHhfZmlsbF9yZWN0YW5nbGUgKGYsIGYtPm91dHB1dF9kYXRhLngtPm5vcm1hbF9nYywK LQkJCXgwLCB5MCArIDEsIHgxIC0geDAsIHkxIC0geTAgLSAyLAotICAgICAgICAgICAgICAgICAg ICAgICAgZi0+Ym9yZGVyc19yZXNwZWN0X2FscGhhX2JhY2tncm91bmQpOworCQkJeDAsIHkwICsg MSwgeDEgLSB4MCwgeTEgLSB5MCAtIDIsIGYtPmFscGhhX2JvcmRlcnMpOwogICAgICAgWFNldEZv cmVncm91bmQgKGRpc3BsYXksIGYtPm91dHB1dF9kYXRhLngtPm5vcm1hbF9nYywgY29sb3JfbGFz dCk7CiAgICAgICB4X2ZpbGxfcmVjdGFuZ2xlIChmLCBmLT5vdXRwdXRfZGF0YS54LT5ub3JtYWxf Z2MsCi0JCQl4MCwgeTEgLSAxLCB4MSAtIHgwLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAg Zi0+Ym9yZGVyc19yZXNwZWN0X2FscGhhX2JhY2tncm91bmQpOworCQkJeDAsIHkxIC0gMSwgeDEg LSB4MCwgMSwgZi0+YWxwaGFfYm9yZGVycyk7CiAgICAgfQogICBlbHNlCiAgICAgewpAQCAtNzUy Nyw4ICs3NTI0LDcgQEAgeF9kcmF3X3dpbmRvd19kaXZpZGVyIChzdHJ1Y3Qgd2luZG93ICp3LCBp bnQgeDAsIGludCB4MSwgaW50IHkwLCBpbnQgeTEpCiAgICAgICAgZGlmZmVyZW50bHkuICAqLwog ICAgICAgWFNldEZvcmVncm91bmQgKGRpc3BsYXksIGYtPm91dHB1dF9kYXRhLngtPm5vcm1hbF9n YywgY29sb3IpOwogICAgICAgeF9maWxsX3JlY3RhbmdsZSAoZiwgZi0+b3V0cHV0X2RhdGEueC0+ bm9ybWFsX2djLAotCQkJeDAsIHkwLCB4MSAtIHgwLCB5MSAtIHkwLAotICAgICAgICAgICAgICAg ICAgICAgICAgZi0+Ym9yZGVyc19yZXNwZWN0X2FscGhhX2JhY2tncm91bmQpOworCQkJeDAsIHkw LCB4MSAtIHgwLCB5MSAtIHkwLCBmLT5hbHBoYV9ib3JkZXJzKTsKICAgICB9CiB9CiAKQEAgLTc3 MzAsMTQgKzc3MjYsMTQgQEAgeF9jbGVhcl91bmRlcl9pbnRlcm5hbF9ib3JkZXIgKHN0cnVjdCBm cmFtZSAqZikKIAogCSAgWFNldEZvcmVncm91bmQgKGRpc3BsYXksIGdjLCBjb2xvcik7CiAJICB4 X2ZpbGxfcmVjdGFuZ2xlIChmLCBnYywgMCwgbWFyZ2luLCB3aWR0aCwgYm9yZGVyLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGYtPmJvcmRlcnNfcmVzcGVjdF9hbHBoYV9iYWNrZ3JvdW5k KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLT5hbHBoYV9ib3JkZXJzKTsKIAkgIHhf ZmlsbF9yZWN0YW5nbGUgKGYsIGdjLCAwLCAwLCBib3JkZXIsIGhlaWdodCwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmLT5ib3JkZXJzX3Jlc3BlY3RfYWxwaGFfYmFja2dyb3VuZCk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZi0+YWxwaGFfYm9yZGVycyk7CiAJICB4X2ZpbGxf cmVjdGFuZ2xlIChmLCBnYywgd2lkdGggLSBib3JkZXIsIDAsIGJvcmRlciwgaGVpZ2h0LAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGYtPmJvcmRlcnNfcmVzcGVjdF9hbHBoYV9iYWNrZ3Jv dW5kKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLT5hbHBoYV9ib3JkZXJzKTsKIAkg IHhfZmlsbF9yZWN0YW5nbGUgKGYsIGdjLCAwLCBoZWlnaHQgLSBib3R0b21fbWFyZ2luIC0gYm9y ZGVyLAogCQkJICAgIHdpZHRoLCBib3JkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg Zi0+Ym9yZGVyc19yZXNwZWN0X2FscGhhX2JhY2tncm91bmQpOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGYtPmFscGhhX2JvcmRlcnMpOwogCSAgWFNldEZvcmVncm91bmQgKGRpc3BsYXks IGdjLCBGUkFNRV9GT1JFR1JPVU5EX1BJWEVMIChmKSk7CiAJfQogICAgICAgZWxzZQpAQCAtNzgw Miw5ICs3Nzk4LDEwIEBAIHhfYWZ0ZXJfdXBkYXRlX3dpbmRvd19saW5lIChzdHJ1Y3Qgd2luZG93 ICp3LCBzdHJ1Y3QgZ2x5cGhfcm93ICpkZXNpcmVkX3JvdykKIAkgICAgR0MgZ2MgPSBmLT5vdXRw dXRfZGF0YS54LT5ub3JtYWxfZ2M7CiAKIAkgICAgWFNldEZvcmVncm91bmQgKGRpc3BsYXksIGdj LCBjb2xvcik7Ci0JICAgIHhfZmlsbF9yZWN0YW5nbGUgKGYsIGdjLCAwLCB5LCB3aWR0aCwgaGVp Z2h0LCB0cnVlKTsKKwkgICAgeF9maWxsX3JlY3RhbmdsZSAoZiwgZ2MsIDAsIHksIHdpZHRoLCBo ZWlnaHQsCisJCQkgICAgICBmLT5hbHBoYV9iYWNrZ3JvdW5kKTsKIAkgICAgeF9maWxsX3JlY3Rh bmdsZSAoZiwgZ2MsIEZSQU1FX1BJWEVMX1dJRFRIIChmKSAtIHdpZHRoLCB5LAotCQkJICAgICAg d2lkdGgsIGhlaWdodCwgdHJ1ZSk7CisJCQkgICAgICB3aWR0aCwgaGVpZ2h0LCBmLT5hbHBoYV9i YWNrZ3JvdW5kKTsKIAkgICAgWFNldEZvcmVncm91bmQgKGRpc3BsYXksIGdjLCBGUkFNRV9GT1JF R1JPVU5EX1BJWEVMIChmKSk7CiAJICB9CiAJZWxzZQpAQCAtNzg4MCw3ICs3ODc3LDcgQEAgeF9k cmF3X2ZyaW5nZV9iaXRtYXAgKHN0cnVjdCB3aW5kb3cgKncsIHN0cnVjdCBnbHlwaF9yb3cgKnJv dywKIAl7CiAJICBYU2V0RmlsbFN0eWxlIChkaXNwbGF5LCBmYWNlLT5nYywgRmlsbE9wYXF1ZVN0 aXBwbGVkKTsKIAkgIHhfZmlsbF9yZWN0YW5nbGUgKGYsIGZhY2UtPmdjLCBwLT5ieCwgcC0+Ynks IHAtPm54LCBwLT5ueSwKLQkJCSAgICB0cnVlKTsKKwkJCSAgICBmLT5hbHBoYV9iYWNrZ3JvdW5k KTsKIAkgIFhTZXRGaWxsU3R5bGUgKGRpc3BsYXksIGZhY2UtPmdjLCBGaWxsU29saWQpOwogCiAJ ICByb3ctPnN0aXBwbGVfcCA9IHRydWU7CkBAIC03ODg5LDcgKzc4ODYsNyBAQCB4X2RyYXdfZnJp bmdlX2JpdG1hcCAoc3RydWN0IHdpbmRvdyAqdywgc3RydWN0IGdseXBoX3JvdyAqcm93LAogCXsK IAkgIFhTZXRCYWNrZ3JvdW5kIChkaXNwbGF5LCBmYWNlLT5nYywgZmFjZS0+YmFja2dyb3VuZCk7 CiAJICB4X2NsZWFyX3JlY3RhbmdsZSAoZiwgZmFjZS0+Z2MsIHAtPmJ4LCBwLT5ieSwgcC0+bngs IHAtPm55LAotCQkJICAgdHJ1ZSk7CisJCQkgICBmLT5hbHBoYV9iYWNrZ3JvdW5kKTsKIAkgIFhT ZXRGb3JlZ3JvdW5kIChkaXNwbGF5LCBmYWNlLT5nYywgZmFjZS0+Zm9yZWdyb3VuZCk7CiAJfQog ICAgIH0KQEAgLTg1MzAsMjQgKzg1MjcsMjMgQEAgeF9jb21wdXRlX2dseXBoX3N0cmluZ19vdmVy aGFuZ3MgKHN0cnVjdCBnbHlwaF9zdHJpbmcgKnMpCiBzdGF0aWMgdm9pZAogeF9jbGVhcl9nbHlw aF9zdHJpbmdfcmVjdCAoc3RydWN0IGdseXBoX3N0cmluZyAqcywgaW50IHgsIGludCB5LCBpbnQg dywgaW50IGgpCiB7Ci0gIHhfY2xlYXJfcmVjdGFuZ2xlIChzLT5mLCBzLT5nYywgeCwgeSwgdywg aCwgcy0+aGwgIT0gRFJBV19DVVJTT1IpOworICB4X2NsZWFyX3JlY3RhbmdsZSAocy0+Ziwgcy0+ Z2MsIHgsIHksIHcsIGgsIHMtPmhsICE9IERSQVdfQ1VSU09SID8gcy0+Zi0+YWxwaGFfYmFja2dy b3VuZCA6IDEuMCk7CiB9CiAKICNpZm5kZWYgVVNFX0NBSVJPCiAKIHN0YXRpYyB2b2lkCiB4X2Ns ZWFyX3BvaW50IChzdHJ1Y3QgZnJhbWUgKmYsIEdDIGdjLCBpbnQgeCwgaW50IHksCi0JICAgICAg IGJvb2wgcmVzcGVjdF9hbHBoYV9iYWNrZ3JvdW5kKQorCSAgICAgICBkb3VibGUgYWxwaGEpCiB7 CiAgIFhHQ1ZhbHVlcyB4Z2N2OwogICBEaXNwbGF5ICpkcHk7CiAKICAgZHB5ID0gRlJBTUVfWF9E SVNQTEFZIChmKTsKIAotICBpZiAoZi0+YWxwaGFfYmFja2dyb3VuZCAhPSAxLjAKLSAgICAgICYm IHJlc3BlY3RfYWxwaGFfYmFja2dyb3VuZCkKKyAgaWYgKGFscGhhICE9IDEuMCkKICAgICB7Ci0g ICAgICB4X2NsZWFyX3JlY3RhbmdsZSAoZiwgZ2MsIHgsIHksIDEsIDEsIHRydWUpOworICAgICAg eF9jbGVhcl9yZWN0YW5nbGUgKGYsIGdjLCB4LCB5LCAxLCAxLCBhbHBoYSk7CiAgICAgICByZXR1 cm47CiAgICAgfQogCkBAIC04NTgwLDExICs4NTc2LDEyIEBAIHhfZHJhd19nbHlwaF9zdHJpbmdf YmFja2dyb3VuZCAoc3RydWN0IGdseXBoX3N0cmluZyAqcywgYm9vbCBmb3JjZV9wKQogCiAJICAv KiBGaWxsIGJhY2tncm91bmQgd2l0aCBhIHN0aXBwbGUgcGF0dGVybi4gICovCiAJICBYU2V0Rmls bFN0eWxlIChkaXNwbGF5LCBzLT5nYywgRmlsbE9wYXF1ZVN0aXBwbGVkKTsKKwkgIGRvdWJsZSBh bHBoYSA9IHMtPmhsICE9IERSQVdfQ1VSU09SID8gcy0+Zi0+YWxwaGFfYmFja2dyb3VuZCA6IDEu MDsKIAkgIHhfZmlsbF9yZWN0YW5nbGUgKHMtPmYsIHMtPmdjLCBzLT54LAogCQkJICAgIHMtPnkg KyBib3hfbGluZV93aWR0aCwKIAkJCSAgICBzLT5iYWNrZ3JvdW5kX3dpZHRoLAogCQkJICAgIHMt PmhlaWdodCAtIDIgKiBib3hfbGluZV93aWR0aCwKLQkJCSAgICBzLT5obCAhPSBEUkFXX0NVUlNP Uik7CisJCQkgICAgYWxwaGEpOwogCSAgWFNldEZpbGxTdHlsZSAoZGlzcGxheSwgcy0+Z2MsIEZp bGxTb2xpZCk7CiAJICBzLT5iYWNrZ3JvdW5kX2ZpbGxlZF9wID0gdHJ1ZTsKIAl9CkBAIC04Njgw LDcgKzg2NzcsNyBAQCB4X2RyYXdfZ2x5cGhfc3RyaW5nX2ZvcmVncm91bmQgKHN0cnVjdCBnbHlw aF9zdHJpbmcgKnMpCiAJCQkJICAgIHMtPnkgKyBib3hfbGluZV93aWR0aCwKIAkJCQkgICAgcy0+ YmFja2dyb3VuZF93aWR0aCwKIAkJCQkgICAgcy0+aGVpZ2h0IC0gMiAqIGJveF9saW5lX3dpZHRo LAotCQkJCSAgICBmYWxzZSk7CisJCQkJICAgIDEuMCk7CiAJCSAgWFNldEZpbGxTdHlsZSAoZGlz cGxheSwgcy0+Z2MsIEZpbGxTb2xpZCk7CiAJCX0KIAkgICAgICBlbHNlCkBAIC05ODIxLDcgKzk4 MTgsNyBAQCB4X2RyYXdfcmVsaWVmX3JlY3QgKHN0cnVjdCBmcmFtZSAqZiwgaW50IGxlZnRfeCwg aW50IHRvcF95LCBpbnQgcmlnaHRfeCwKICAgaWYgKGxlZnRfcCkKICAgICB7CiAgICAgICB4X2Zp bGxfcmVjdGFuZ2xlIChmLCB0b3BfbGVmdF9nYywgbGVmdF94LCB0b3BfeSwKLQkJCXZ3aWR0aCwg Ym90dG9tX3kgKyAxIC0gdG9wX3ksIGZhbHNlKTsKKwkJCXZ3aWR0aCwgYm90dG9tX3kgKyAxIC0g dG9wX3ksIDEuMCk7CiAgICAgICBpZiAodG9wX3ApCiAJY29ybmVycyB8PSAxIDw8IENPUk5FUl9U T1BfTEVGVDsKICAgICAgIGlmIChib3RfcCkKQEAgLTk4MzAsNyArOTgyNyw3IEBAIHhfZHJhd19y ZWxpZWZfcmVjdCAoc3RydWN0IGZyYW1lICpmLCBpbnQgbGVmdF94LCBpbnQgdG9wX3ksIGludCBy aWdodF94LAogICBpZiAocmlnaHRfcCkKICAgICB7CiAgICAgICB4X2ZpbGxfcmVjdGFuZ2xlIChm LCBib3R0b21fcmlnaHRfZ2MsIHJpZ2h0X3ggKyAxIC0gdndpZHRoLCB0b3BfeSwKLQkJCXZ3aWR0 aCwgYm90dG9tX3kgKyAxIC0gdG9wX3ksIGZhbHNlKTsKKwkJCXZ3aWR0aCwgYm90dG9tX3kgKyAx IC0gdG9wX3ksIDEuMCk7CiAgICAgICBpZiAodG9wX3ApCiAJY29ybmVycyB8PSAxIDw8IENPUk5F Ul9UT1BfUklHSFQ7CiAgICAgICBpZiAoYm90X3ApCkBAIC05ODQwLDcgKzk4MzcsNyBAQCB4X2Ry YXdfcmVsaWVmX3JlY3QgKHN0cnVjdCBmcmFtZSAqZiwgaW50IGxlZnRfeCwgaW50IHRvcF95LCBp bnQgcmlnaHRfeCwKICAgICB7CiAgICAgICBpZiAoIXJpZ2h0X3ApCiAJeF9maWxsX3JlY3Rhbmds ZSAoZiwgdG9wX2xlZnRfZ2MsIGxlZnRfeCwgdG9wX3ksCi0JCQkgIHJpZ2h0X3ggKyAxIC0gbGVm dF94LCBod2lkdGgsIGZhbHNlKTsKKwkJCSAgcmlnaHRfeCArIDEgLSBsZWZ0X3gsIGh3aWR0aCwg MS4wKTsKICAgICAgIGVsc2UKIAl4X2ZpbGxfdHJhcGV6b2lkX2Zvcl9yZWxpZWYgKGYsIHRvcF9s ZWZ0X2djLCBsZWZ0X3gsIHRvcF95LAogCQkJCSAgICAgcmlnaHRfeCArIDEgLSBsZWZ0X3gsIGh3 aWR0aCwgMSk7CkBAIC05ODQ5LDcgKzk4NDYsNyBAQCB4X2RyYXdfcmVsaWVmX3JlY3QgKHN0cnVj dCBmcmFtZSAqZiwgaW50IGxlZnRfeCwgaW50IHRvcF95LCBpbnQgcmlnaHRfeCwKICAgICB7CiAg ICAgICBpZiAoIWxlZnRfcCkKIAl4X2ZpbGxfcmVjdGFuZ2xlIChmLCBib3R0b21fcmlnaHRfZ2Ms IGxlZnRfeCwgYm90dG9tX3kgKyAxIC0gaHdpZHRoLAotCQkJICByaWdodF94ICsgMSAtIGxlZnRf eCwgaHdpZHRoLCBmYWxzZSk7CisJCQkgIHJpZ2h0X3ggKyAxIC0gbGVmdF94LCBod2lkdGgsIDEu MCk7CiAgICAgICBlbHNlCiAJeF9maWxsX3RyYXBlem9pZF9mb3JfcmVsaWVmIChmLCBib3R0b21f cmlnaHRfZ2MsCiAJCQkJICAgICBsZWZ0X3gsIGJvdHRvbV95ICsgMSAtIGh3aWR0aCwKQEAgLTk4 NTcsMTAgKzk4NTQsMTAgQEAgeF9kcmF3X3JlbGllZl9yZWN0IChzdHJ1Y3QgZnJhbWUgKmYsIGlu dCBsZWZ0X3gsIGludCB0b3BfeSwgaW50IHJpZ2h0X3gsCiAgICAgfQogICBpZiAobGVmdF9wICYm IHZ3aWR0aCA+IDEpCiAgICAgeF9maWxsX3JlY3RhbmdsZSAoZiwgYm90dG9tX3JpZ2h0X2djLCBs ZWZ0X3gsIHRvcF95LAotCQkgICAgICAxLCBib3R0b21feSArIDEgLSB0b3BfeSwgZmFsc2UpOwor CQkgICAgICAxLCBib3R0b21feSArIDEgLSB0b3BfeSwgMS4wKTsKICAgaWYgKHRvcF9wICYmIGh3 aWR0aCA+IDEpCiAgICAgeF9maWxsX3JlY3RhbmdsZSAoZiwgYm90dG9tX3JpZ2h0X2djLCBsZWZ0 X3gsIHRvcF95LAotCQkgICAgICByaWdodF94ICsgMSAtIGxlZnRfeCwgMSwgZmFsc2UpOworCQkg ICAgICByaWdodF94ICsgMSAtIGxlZnRfeCwgMSwgMS4wKTsKICAgaWYgKGNvcm5lcnMpCiAgICAg ewogICAgICAgWFNldEJhY2tncm91bmQgKEZSQU1FX1hfRElTUExBWSAoZiksIHRvcF9sZWZ0X2dj LApAQCAtOTkwMiwxMSArOTg5OSwxMSBAQCB4X2RyYXdfcmVsaWVmX3JlY3QgKHN0cnVjdCBmcmFt ZSAqZiwgaW50IGxlZnRfeCwgaW50IHRvcF95LCBpbnQgcmlnaHRfeCwKICAgaWYgKHRvcF9wKQog ICAgIHhfZmlsbF9yZWN0YW5nbGUgKGYsIGdjLCBsZWZ0X3gsIHRvcF95LAogCQkgICAgICByaWdo dF94IC0gbGVmdF94ICsgMSwgaHdpZHRoLAotCQkgICAgICBmYWxzZSk7CisJCSAgICAgIDEuMCk7 CiAKICAgaWYgKGxlZnRfcCkKICAgICB4X2ZpbGxfcmVjdGFuZ2xlIChmLCBnYywgbGVmdF94LCB0 b3BfeSwgdndpZHRoLAotCQkgICAgICBib3R0b21feSAtIHRvcF95ICsgMSwgZmFsc2UpOworCQkg ICAgICBib3R0b21feSAtIHRvcF95ICsgMSwgMS4wKTsKIAogICBpZiAocmFpc2VkX3ApCiAgICAg Z2MgPSBibGFja19nYzsKQEAgLTk5MTUsMTEgKzk5MTIsMTEgQEAgeF9kcmF3X3JlbGllZl9yZWN0 IChzdHJ1Y3QgZnJhbWUgKmYsIGludCBsZWZ0X3gsIGludCB0b3BfeSwgaW50IHJpZ2h0X3gsCiAK ICAgaWYgKGJvdF9wKQogICAgIHhfZmlsbF9yZWN0YW5nbGUgKGYsIGdjLCBsZWZ0X3gsIGJvdHRv bV95IC0gaHdpZHRoICsgMSwKLQkJICAgICAgcmlnaHRfeCAtIGxlZnRfeCArIDEsIGh3aWR0aCwg ZmFsc2UpOworCQkgICAgICByaWdodF94IC0gbGVmdF94ICsgMSwgaHdpZHRoLCAxLjApOwogCiAg IGlmIChyaWdodF9wKQogICAgIHhfZmlsbF9yZWN0YW5nbGUgKGYsIGdjLCByaWdodF94IC0gdndp ZHRoICsgMSwgdG9wX3ksCi0JCSAgICAgIHZ3aWR0aCwgYm90dG9tX3kgLSB0b3BfeSArIDEsIGZh bHNlKTsKKwkJICAgICAgdndpZHRoLCBib3R0b21feSAtIHRvcF95ICsgMSwgMS4wKTsKIAogICAv KiBEcmF3IGNvcm5lcnMuICAqLwogCkBAIC05OTY4LDE5ICs5OTY1LDE5IEBAIHhfZHJhd19yZWxp ZWZfcmVjdCAoc3RydWN0IGZyYW1lICpmLCBpbnQgbGVmdF94LCBpbnQgdG9wX3ksIGludCByaWdo dF94LAogCQkJCQkgICAgICBsZWZ0X3gsIHRvcF95KSkKIAkvKiBUaGlzIHNob3VsZCByZXNwZWN0 IGBhbHBoYS1iYWNrZ3JvdW5kJyBzaW5jZSBpdCdzIGJlaW5nCiAJICAgY2xlYXJlZCB3aXRoIHRo ZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBmcmFtZS4gICovCi0JeF9jbGVhcl9wb2ludCAoZiwg bm9ybWFsX2djLCBsZWZ0X3gsIHRvcF95LCB0cnVlKTsKKwl4X2NsZWFyX3BvaW50IChmLCBub3Jt YWxfZ2MsIGxlZnRfeCwgdG9wX3ksIGYtPmFscGhhX2JhY2tncm91bmQpOwogCiAgICAgICBpZiAo bGVmdF9wICYmIGJvdF9wICYmIHhfaW5zaWRlX3JlY3RfcCAoY2xpcF9yZWN0LCAxLAogCQkJCQkg ICAgICBsZWZ0X3gsIGJvdHRvbV95KSkKLQl4X2NsZWFyX3BvaW50IChmLCBub3JtYWxfZ2MsIGxl ZnRfeCwgYm90dG9tX3ksIHRydWUpOworCXhfY2xlYXJfcG9pbnQgKGYsIG5vcm1hbF9nYywgbGVm dF94LCBib3R0b21feSwgZi0+YWxwaGFfYmFja2dyb3VuZCk7CiAKICAgICAgIGlmIChyaWdodF9w ICYmIHRvcF9wICYmIHhfaW5zaWRlX3JlY3RfcCAoY2xpcF9yZWN0LCAxLAogCQkJCQkgICAgICAg cmlnaHRfeCwgdG9wX3kpKQotCXhfY2xlYXJfcG9pbnQgKGYsIG5vcm1hbF9nYywgcmlnaHRfeCwg dG9wX3ksIHRydWUpOworCXhfY2xlYXJfcG9pbnQgKGYsIG5vcm1hbF9nYywgcmlnaHRfeCwgdG9w X3ksIGYtPmFscGhhX2JhY2tncm91bmQpOwogCiAgICAgICBpZiAocmlnaHRfcCAmJiBib3RfcCAm JiB4X2luc2lkZV9yZWN0X3AgKGNsaXBfcmVjdCwgMSwKIAkJCQkJICAgICAgIHJpZ2h0X3gsIGJv dHRvbV95KSkKLQl4X2NsZWFyX3BvaW50IChmLCBub3JtYWxfZ2MsIHJpZ2h0X3gsIGJvdHRvbV95 LCB0cnVlKTsKKwl4X2NsZWFyX3BvaW50IChmLCBub3JtYWxfZ2MsIHJpZ2h0X3gsIGJvdHRvbV95 LCBmLT5hbHBoYV9iYWNrZ3JvdW5kKTsKICAgICB9CiAKICAgeF9yZXNldF9jbGlwX3JlY3Rhbmds ZXMgKGYsIHdoaXRlX2djKTsKQEAgLTEwMDExLDI0ICsxMDAwOCwyNCBAQCB4X2RyYXdfYm94X3Jl Y3QgKHN0cnVjdCBnbHlwaF9zdHJpbmcgKnMsCiAgIC8qIFRvcC4gICovCiAgIHhfZmlsbF9yZWN0 YW5nbGUgKHMtPmYsIHMtPmdjLAogCQkgICAgbGVmdF94LCB0b3BfeSwgcmlnaHRfeCAtIGxlZnRf eCArIDEsIGh3aWR0aCwKLQkJICAgIGZhbHNlKTsKKwkJICAgIDEuMCk7CiAKICAgLyogTGVmdC4g ICovCiAgIGlmIChsZWZ0X3ApCiAgICAgeF9maWxsX3JlY3RhbmdsZSAocy0+Ziwgcy0+Z2MsCiAJ CSAgICAgIGxlZnRfeCwgdG9wX3ksIHZ3aWR0aCwgYm90dG9tX3kgLSB0b3BfeSArIDEsCi0JCSAg ICAgIGZhbHNlKTsKKwkJICAgICAgMS4wKTsKIAogICAvKiBCb3R0b20uICAqLwogICB4X2ZpbGxf cmVjdGFuZ2xlIChzLT5mLCBzLT5nYywKIAkJICAgIGxlZnRfeCwgYm90dG9tX3kgLSBod2lkdGgg KyAxLCByaWdodF94IC0gbGVmdF94ICsgMSwgaHdpZHRoLAotCQkgICAgZmFsc2UpOworCQkgICAg MS4wKTsKIAogICAvKiBSaWdodC4gICovCiAgIGlmIChyaWdodF9wKQogICAgIHhfZmlsbF9yZWN0 YW5nbGUgKHMtPmYsIHMtPmdjLAogCQkgICAgICByaWdodF94IC0gdndpZHRoICsgMSwgdG9wX3ks IHZ3aWR0aCwgYm90dG9tX3kgLSB0b3BfeSArIDEsCi0JCSAgICAgIGZhbHNlKTsKKwkJICAgICAg MS4wKTsKIAogICBYU2V0Rm9yZWdyb3VuZCAoZGlzcGxheSwgcy0+Z2MsIHhnY3YuZm9yZWdyb3Vu ZCk7CiAgIHhfcmVzZXRfY2xpcF9yZWN0YW5nbGVzIChzLT5mLCBzLT5nYyk7CkBAIC0xMDQ3MSw3 ICsxMDQ2OCw3IEBAIHhfZHJhd19nbHlwaF9zdHJpbmdfYmdfcmVjdCAoc3RydWN0IGdseXBoX3N0 cmluZyAqcywgaW50IHgsIGludCB5LCBpbnQgdywgaW50IGgpCiAKICAgICAgIC8qIEZpbGwgYmFj a2dyb3VuZCB3aXRoIGEgc3RpcHBsZSBwYXR0ZXJuLiAgKi8KICAgICAgIFhTZXRGaWxsU3R5bGUg KGRpc3BsYXksIHMtPmdjLCBGaWxsT3BhcXVlU3RpcHBsZWQpOwotICAgICAgeF9maWxsX3JlY3Rh bmdsZSAocy0+Ziwgcy0+Z2MsIHgsIHksIHcsIGgsIHRydWUpOworICAgICAgeF9maWxsX3JlY3Rh bmdsZSAocy0+Ziwgcy0+Z2MsIHgsIHksIHcsIGgsIHMtPmYtPmFscGhhX2JhY2tncm91bmQpOwog ICAgICAgWFNldEZpbGxTdHlsZSAoZGlzcGxheSwgcy0+Z2MsIEZpbGxTb2xpZCk7CiAgICAgfQog ICBlbHNlCkBAIC0xMDcwMiw3ICsxMDY5OSw3IEBAIHhfZHJhd19zdHJldGNoX2dseXBoX3N0cmlu ZyAoc3RydWN0IGdseXBoX3N0cmluZyAqcykKIAkgICAgewogCSAgICAgIC8qIEZpbGwgYmFja2dy b3VuZCB3aXRoIGEgc3RpcHBsZSBwYXR0ZXJuLiAgKi8KIAkgICAgICBYU2V0RmlsbFN0eWxlIChk aXNwbGF5LCBnYywgRmlsbE9wYXF1ZVN0aXBwbGVkKTsKLQkgICAgICB4X2ZpbGxfcmVjdGFuZ2xl IChzLT5mLCBnYywgeCwgeSwgdywgaCwgdHJ1ZSk7CisJICAgICAgeF9maWxsX3JlY3RhbmdsZSAo cy0+ZiwgZ2MsIHgsIHksIHcsIGgsIHMtPmYtPmFscGhhX2JhY2tncm91bmQpOwogCSAgICAgIFhT ZXRGaWxsU3R5bGUgKGRpc3BsYXksIGdjLCBGaWxsU29saWQpOwogCiAJICAgICAgcy0+cm93LT5z dGlwcGxlX3AgPSB0cnVlOwpAQCAtMTA3MTIsNyArMTA3MDksNyBAQCB4X2RyYXdfc3RyZXRjaF9n bHlwaF9zdHJpbmcgKHN0cnVjdCBnbHlwaF9zdHJpbmcgKnMpCiAJICAgICAgWEdDVmFsdWVzIHhn Y3Y7CiAJICAgICAgWEdldEdDVmFsdWVzIChkaXNwbGF5LCBnYywgR0NGb3JlZ3JvdW5kIHwgR0NC YWNrZ3JvdW5kLCAmeGdjdik7CiAJICAgICAgWFNldEZvcmVncm91bmQgKGRpc3BsYXksIGdjLCB4 Z2N2LmJhY2tncm91bmQpOwotCSAgICAgIHhfZmlsbF9yZWN0YW5nbGUgKHMtPmYsIGdjLCB4LCB5 LCB3LCBoLCB0cnVlKTsKKwkgICAgICB4X2ZpbGxfcmVjdGFuZ2xlIChzLT5mLCBnYywgeCwgeSwg dywgaCwgcy0+Zi0+YWxwaGFfYmFja2dyb3VuZCk7CiAJICAgICAgWFNldEZvcmVncm91bmQgKGRp c3BsYXksIGdjLCB4Z2N2LmZvcmVncm91bmQpOwogCSAgICB9CiAKQEAgLTEwODgzLDcgKzEwODgw LDcgQEAgeF9kcmF3X2Rhc2ggKHN0cnVjdCBmcmFtZSAqZiwgc3RydWN0IGdseXBoX3N0cmluZyAq cywgaW50IHdpZHRoLAogICBjcl9zZWdtZW50ID0gKGRvdWJsZSkgc2VnbWVudDsKICAgeV9jZW50 ZXIgPSBzLT55YmFzZSArIG9mZnNldCArICh0aGlja25lc3MgLyAyLjApOwogCi0gIHhfc2V0X2Ny X3NvdXJjZV93aXRoX2djX2ZvcmVncm91bmQgKGYsIHMtPmdjLCBmYWxzZSk7CisgIHhfc2V0X2Ny X3NvdXJjZV93aXRoX2djX2ZvcmVncm91bmQgKGYsIHMtPmdjLCAxLjApOwogICBjYWlyb19zZXRf ZGFzaCAoY3IsICZjcl9zZWdtZW50LCAxLCBzLT54KTsKICAgY2Fpcm9fc2V0X2xpbmVfd2lkdGgg KGNyLCB0aGlja25lc3MpOwogICBjYWlyb19tb3ZlX3RvIChjciwgcy0+eCwgeV9jZW50ZXIpOwpA QCAtMTA5MTUsNyArMTA5MTIsNyBAQCB4X2ZpbGxfdW5kZXJsaW5lIChzdHJ1Y3QgZnJhbWUgKmYs IHN0cnVjdCBnbHlwaF9zdHJpbmcgKnMsCiAgICAgY2FzZSBGQUNFX1VOREVSTElORV9TSU5HTEU6 CiAgICAgY2FzZSBGQUNFX1VOREVSTElORV9ET1VCTEVfTElORToKICAgICAgIHhfZmlsbF9yZWN0 YW5nbGUgKGYsIHMtPmdjLCBzLT54LCBzLT55YmFzZSArIHBvc2l0aW9uLAotCQkJZGVjb3JhdGlv bl93aWR0aCwgdGhpY2tuZXNzLCBmYWxzZSk7CisJCQlkZWNvcmF0aW9uX3dpZHRoLCB0aGlja25l c3MsIDEuMCk7CiAgICAgICBicmVhazsKIAogICAgIGNhc2UgRkFDRV9VTkRFUkxJTkVfRE9UUzoK QEAgLTExMTk2LDcgKzExMTkzLDcgQEAgeF9kcmF3X2dseXBoX3N0cmluZyAoc3RydWN0IGdseXBo X3N0cmluZyAqcykKIAogCSAgaWYgKHMtPmZhY2UtPm92ZXJsaW5lX2NvbG9yX2RlZmF1bHRlZF9w KQogCSAgICB4X2ZpbGxfcmVjdGFuZ2xlIChzLT5mLCBzLT5nYywgcy0+eCwgcy0+eSArIGR5LAot CQkJICAgICAgZGVjb3JhdGlvbl93aWR0aCwgaCwgZmFsc2UpOworCQkJICAgICAgZGVjb3JhdGlv bl93aWR0aCwgaCwgMS4wKTsKIAkgIGVsc2UKIAkgICAgewogICAgICAgICAgICAgICBEaXNwbGF5 ICpkaXNwbGF5ID0gRlJBTUVfWF9ESVNQTEFZIChzLT5mKTsKQEAgLTExMjA0LDcgKzExMjAxLDcg QEAgeF9kcmF3X2dseXBoX3N0cmluZyAoc3RydWN0IGdseXBoX3N0cmluZyAqcykKIAkgICAgICBY R2V0R0NWYWx1ZXMgKGRpc3BsYXksIHMtPmdjLCBHQ0ZvcmVncm91bmQsICZ4Z2N2KTsKIAkgICAg ICBYU2V0Rm9yZWdyb3VuZCAoZGlzcGxheSwgcy0+Z2MsIHMtPmZhY2UtPm92ZXJsaW5lX2NvbG9y KTsKIAkgICAgICB4X2ZpbGxfcmVjdGFuZ2xlIChzLT5mLCBzLT5nYywgcy0+eCwgcy0+eSArIGR5 LAotCQkJCWRlY29yYXRpb25fd2lkdGgsIGgsIGZhbHNlKTsKKwkJCQlkZWNvcmF0aW9uX3dpZHRo LCBoLCAxLjApOwogCSAgICAgIFhTZXRGb3JlZ3JvdW5kIChkaXNwbGF5LCBzLT5nYywgeGdjdi5m b3JlZ3JvdW5kKTsKIAkgICAgfQogCX0KQEAgLTExMjI2LDcgKzExMjIzLDcgQEAgeF9kcmF3X2ds eXBoX3N0cmluZyAoc3RydWN0IGdseXBoX3N0cmluZyAqcykKIAogCSAgaWYgKHMtPmZhY2UtPnN0 cmlrZV90aHJvdWdoX2NvbG9yX2RlZmF1bHRlZF9wKQogCSAgICB4X2ZpbGxfcmVjdGFuZ2xlIChz LT5mLCBzLT5nYywgcy0+eCwgZ2x5cGhfeSArIGR5LAotCQkJICAgICAgcy0+d2lkdGgsIGgsIGZh bHNlKTsKKwkJCSAgICAgIHMtPndpZHRoLCBoLCAxLjApOwogCSAgZWxzZQogCSAgICB7CiAgICAg ICAgICAgICAgIERpc3BsYXkgKmRpc3BsYXkgPSBGUkFNRV9YX0RJU1BMQVkgKHMtPmYpOwpAQCAt MTEyMzQsNyArMTEyMzEsNyBAQCB4X2RyYXdfZ2x5cGhfc3RyaW5nIChzdHJ1Y3QgZ2x5cGhfc3Ry aW5nICpzKQogCSAgICAgIFhHZXRHQ1ZhbHVlcyAoZGlzcGxheSwgcy0+Z2MsIEdDRm9yZWdyb3Vu ZCwgJnhnY3YpOwogCSAgICAgIFhTZXRGb3JlZ3JvdW5kIChkaXNwbGF5LCBzLT5nYywgcy0+ZmFj ZS0+c3RyaWtlX3Rocm91Z2hfY29sb3IpOwogCSAgICAgIHhfZmlsbF9yZWN0YW5nbGUgKHMtPmYs IHMtPmdjLCBzLT54LCBnbHlwaF95ICsgZHksCi0JCQkJZGVjb3JhdGlvbl93aWR0aCwgaCwgZmFs c2UpOworCQkJCWRlY29yYXRpb25fd2lkdGgsIGgsIDEuMCk7CiAJICAgICAgWFNldEZvcmVncm91 bmQgKGRpc3BsYXksIHMtPmdjLCB4Z2N2LmZvcmVncm91bmQpOwogCSAgICB9CiAJfQpAQCAtMTEz NTEsNyArMTEzNDgsNyBAQCB4X2NsZWFyX2FyZWEgKHN0cnVjdCBmcmFtZSAqZiwgaW50IHgsIGlu dCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAKICAgY3IgPSB4X2JlZ2luX2NyX2NsaXAgKGYs IE5VTEwpOwogICB4X3NldF9jcl9zb3VyY2Vfd2l0aF9nY19iYWNrZ3JvdW5kIChmLCBmLT5vdXRw dXRfZGF0YS54LT5ub3JtYWxfZ2MsCi0JCQkJICAgICAgdHJ1ZSk7CisJCQkJICAgICAgZi0+YWxw aGFfYmFja2dyb3VuZCk7CiAgIGNhaXJvX3JlY3RhbmdsZSAoY3IsIHgsIHksIHdpZHRoLCBoZWln aHQpOwogICBjYWlyb19maWxsIChjcik7CiAgIHhfZW5kX2NyX2NsaXAgKGYpOwpAQCAtMjU5ODEs NyArMjU5NzgsNyBAQCB4X2RyYXdfYmFyX2N1cnNvciAoc3RydWN0IHdpbmRvdyAqdywgc3RydWN0 IGdseXBoX3JvdyAqcm93LCBpbnQgd2lkdGgsIGVudW0gdGV4dAogCiAJICB4X2ZpbGxfcmVjdGFu Z2xlIChmLCBnYywgeCwKIAkJCSAgICBXSU5ET1dfVE9fRlJBTUVfUElYRUxfWSAodywgdy0+cGh5 c19jdXJzb3IueSksCi0JCQkgICAgd2lkdGgsIHJvdy0+aGVpZ2h0LCBmYWxzZSk7CisJCQkgICAg d2lkdGgsIHJvdy0+aGVpZ2h0LCAxLjApOwogCX0KICAgICAgIGVsc2UgLyogSEJBUl9DVVJTT1Ig Ki8KIAl7CkBAIC0yNjAwMiw3ICsyNTk5OSw3IEBAIHhfZHJhd19iYXJfY3Vyc29yIChzdHJ1Y3Qg d2luZG93ICp3LCBzdHJ1Y3QgZ2x5cGhfcm93ICpyb3csIGludCB3aWR0aCwgZW51bSB0ZXh0CiAJ ICB4X2ZpbGxfcmVjdGFuZ2xlIChmLCBnYywgeCwKIAkJCSAgICBXSU5ET1dfVE9fRlJBTUVfUElY RUxfWSAodywgdy0+cGh5c19jdXJzb3IueSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJvdy0+aGVpZ2h0IC0gd2lkdGgpLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHctPnBoeXNfY3Vyc29yX3dpZHRoIC0gMSwgd2lkdGgsIGZhbHNl KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3LT5waHlzX2N1cnNvcl93aWR0aCAtIDEs IHdpZHRoLCAxLjApOwogCX0KIAogICAgICAgeF9yZXNldF9jbGlwX3JlY3RhbmdsZXMgKGYsIGdj KTsKZGlmZiAtLWdpdCBhL3NyYy94dGVybS5oIGIvc3JjL3h0ZXJtLmgKaW5kZXggNTdlMzdhMWE4 ZjUuLmIwOGNjYzIzNmFiIDEwMDY0NAotLS0gYS9zcmMveHRlcm0uaAorKysgYi9zcmMveHRlcm0u aApAQCAtMTgxMiw4ICsxODEyLDkgQEAgI2RlZmluZSBTRUxFQ1RJT05fRVZFTlRfVElNRShldmVu dHApCVwKIGV4dGVybiB2b2lkIHhfY3JfdXBkYXRlX3N1cmZhY2VfZGVzaXJlZF9zaXplIChzdHJ1 Y3QgZnJhbWUgKiwgaW50LCBpbnQpOwogZXh0ZXJuIGNhaXJvX3QgKnhfYmVnaW5fY3JfY2xpcCAo c3RydWN0IGZyYW1lICosIEdDKTsKIGV4dGVybiB2b2lkIHhfZW5kX2NyX2NsaXAgKHN0cnVjdCBm cmFtZSAqKTsKLWV4dGVybiB2b2lkIHhfc2V0X2NyX3NvdXJjZV93aXRoX2djX2ZvcmVncm91bmQg KHN0cnVjdCBmcmFtZSAqLCBHQywgYm9vbCk7Ci1leHRlcm4gdm9pZCB4X3NldF9jcl9zb3VyY2Vf d2l0aF9nY19iYWNrZ3JvdW5kIChzdHJ1Y3QgZnJhbWUgKiwgR0MsIGJvb2wpOworZXh0ZXJuIGRv dWJsZSB4X2dldF9mcmFtZV9hbHBoYV9iYWNrZ3JvdW5kIChzdHJ1Y3QgZnJhbWUgKik7CitleHRl cm4gdm9pZCB4X3NldF9jcl9zb3VyY2Vfd2l0aF9nY19mb3JlZ3JvdW5kIChzdHJ1Y3QgZnJhbWUg KiwgR0MsIGRvdWJsZSk7CitleHRlcm4gdm9pZCB4X3NldF9jcl9zb3VyY2Vfd2l0aF9nY19iYWNr Z3JvdW5kIChzdHJ1Y3QgZnJhbWUgKiwgR0MsIGRvdWJsZSk7CiBleHRlcm4gdm9pZCB4X2NyX2Ry YXdfZnJhbWUgKGNhaXJvX3QgKiwgc3RydWN0IGZyYW1lICopOwogZXh0ZXJuIExpc3BfT2JqZWN0 IHhfY3JfZXhwb3J0X2ZyYW1lcyAoTGlzcF9PYmplY3QsIGNhaXJvX3N1cmZhY2VfdHlwZV90KTsK ICNlbmRpZgotLSAKMi40OS4wCgo= --0000000000005276c4063b6c9c65-- From unknown Tue Aug 19 05:14:07 2025 X-Loop: help-debbugs@gnu.org Subject: bug#79160: [PATCH] Allow borders to be any alpha, independently of frame alpha Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 09 Aug 2025 12:23:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 79160 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Garklein , Po Lu , waylandthrowaway@gmail.com Cc: 79160@debbugs.gnu.org Received: via spool by 79160-submit@debbugs.gnu.org id=B79160.17547421548603 (code B ref 79160); Sat, 09 Aug 2025 12:23:02 +0000 Received: (at 79160) by debbugs.gnu.org; 9 Aug 2025 12:22:34 +0000 Received: from localhost ([127.0.0.1]:40620 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ukiao-0002Ef-2R for submit@debbugs.gnu.org; Sat, 09 Aug 2025 08:22:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41298) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1ukial-0002EI-Ek for 79160@debbugs.gnu.org; Sat, 09 Aug 2025 08:22:31 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ukiaR-0003Iw-8o; Sat, 09 Aug 2025 08:22:23 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=TE0cehDi+61oQJc14crRvke2RTDKDslQ+J5qg/rRfVg=; b=TFyUJN8VSdnq H0j+UVnEEp1vOq1yCmxHCmhygZMKJGj8laqb297E+UGu7/IUMSgdpvWjcIeL28dvaf4tT7Gn/7Z1m mLGEBlAglAjWtTDRob+onSYRIXHcHdHXvkpNZEC2ZWgbc0kY5+ZvTJxbH9iCMm2QB2mJixBATc7kz 7M7NsHBKNiavNK12abWf9nlMTXwN4/Z2lnjXWWDUmucndSDf3FIvED/S/u8/pvWAyXEXaAAvCdrZ1 uJoYfReauE3mflZbt9+KqsglcQ7sc4ElhG3lQ5/gjKpDd2+iig6vgm8mHgAnUlGnkpNmuLC8oktPL DS2DGRp0n6Npmt+W+Ahuxw==; Date: Sat, 09 Aug 2025 15:22:08 +0300 Message-Id: <86v7mwlm6n.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: (message from Garklein on Sat, 2 Aug 2025 22:18:34 -0400) References: X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Garklein > Date: Sat, 2 Aug 2025 22:18:34 -0400 > > This patch replaces my previous borders-respect-alpha-background frame parameter with an alpha-borders > frame parameter, which lets users set the alpha of borders to whatever they desire. > > Most of the changes are just changing boolean respect_alpha_background parameters to double alpha > parameters. respect_alpha_background=true gets replaced with f->alpha_background, and > respect_alpha_background=false gets replaced with 1.0 (opaque). > > I have tested both the GTK3 and PGTK builds. > > One detail I noticed (prior to this patch) is that on X, internal borders are opaque. However, on PGTK, > internal borders take on the alpha-background opacity. Is this intentional? If not, I'm happy to fix it. Thanks. Po Lu, could you take a look, please?