From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Jaesup Kwak Newsgroups: gmane.emacs.bugs Subject: bug#29565: [PATCH] Support xwidget webkit for macOS X Date: Tue, 5 Dec 2017 01:44:42 +0900 Message-ID: NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="001a114683027190ab055f866fb3" X-Trace: blaine.gmane.org 1512409276 29439 195.159.176.226 (4 Dec 2017 17:41:16 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Mon, 4 Dec 2017 17:41:16 +0000 (UTC) To: 29565@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Mon Dec 04 18:41:10 2017 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eLujq-0007B1-IB for geb-bug-gnu-emacs@m.gmane.org; Mon, 04 Dec 2017 18:41:08 +0100 Original-Received: from localhost ([::1]:44482 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eLujx-00074A-Rg for geb-bug-gnu-emacs@m.gmane.org; Mon, 04 Dec 2017 12:41:13 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:48146) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eLujo-00072n-8k for bug-gnu-emacs@gnu.org; Mon, 04 Dec 2017 12:41:05 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eLujn-0004rf-3V for bug-gnu-emacs@gnu.org; Mon, 04 Dec 2017 12:41:04 -0500 Original-Received: from debbugs.gnu.org ([208.118.235.43]:37094) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eLujm-0004rQ-PG for bug-gnu-emacs@gnu.org; Mon, 04 Dec 2017 12:41:03 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1eLujm-0006gi-Fz for bug-gnu-emacs@gnu.org; Mon, 04 Dec 2017 12:41:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Jaesup Kwak Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 04 Dec 2017 17:41:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 29565 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.151240925025678 (code B ref -1); Mon, 04 Dec 2017 17:41:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 4 Dec 2017 17:40:50 +0000 Original-Received: from localhost ([127.0.0.1]:45775 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eLuja-0006g5-En for submit@debbugs.gnu.org; Mon, 04 Dec 2017 12:40:50 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:37542) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eLtrS-0005Lt-QW for submit@debbugs.gnu.org; Mon, 04 Dec 2017 11:44:56 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eLtrM-0007o4-Gg for submit@debbugs.gnu.org; Mon, 04 Dec 2017 11:44:49 -0500 Original-Received: from lists.gnu.org ([2001:4830:134:3::11]:36658) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eLtrM-0007nt-7A for submit@debbugs.gnu.org; Mon, 04 Dec 2017 11:44:48 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:56730) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eLtrK-0001B3-Tx for bug-gnu-emacs@gnu.org; Mon, 04 Dec 2017 11:44:47 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eLtrJ-0007lv-S6 for bug-gnu-emacs@gnu.org; Mon, 04 Dec 2017 11:44:46 -0500 Original-Received: from mail-wm0-x229.google.com ([2a00:1450:400c:c09::229]:38913) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eLtrJ-0007lP-59 for bug-gnu-emacs@gnu.org; Mon, 04 Dec 2017 11:44:45 -0500 Original-Received: by mail-wm0-x229.google.com with SMTP id i11so15455494wmf.4 for ; Mon, 04 Dec 2017 08:44:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=SfIN9kUkrwuEwvdE3tLMQj2JbY9W/AUUWUlsTFknKk8=; b=VWkoO+HthNMpPwxwDH5H6a/yf+VWY+vPc25MJ0fT4UmzY54kbwY29ZmNjGs/svBuUz lVN8St638HdXOBWcroc8LDEEkkh51DJAnUri5dj67rXRB9vu2qcT2vXaU99iiYrclsKI MfVtnDPQdhmeo2nFTKjsU2dUaEfwfvVy2KF07RF00OixONLLomdcFtzDkZkUMjotKsev nMxW60xpT+Jvx7md7zB48aOFdDr5/REkLCn9qSt1/vnb0VPR/MCenOhG7ic3LT8ztk96 ZTzIAFaWlpEv7tcSxrhiN4JYIjddsG1UNHd87VAsC47vCWMpffUizhPk382UDslQkRrg z+JA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=SfIN9kUkrwuEwvdE3tLMQj2JbY9W/AUUWUlsTFknKk8=; b=qOxnEo/GS2OGF11lFoG7I8doMw/CVXQzj/VX16rn5qtfAddgq9fYgwnTmK7fxFnlkc Scxwz3BCE2GuCgLqm7H+wvD7lrveOmy+JeLHW1dF1f3f9u2cdvKkDfSRfwrQnKXbbfix +AAHBbzRUCTlPZJTq9I72uh+/jJkam9i/nW6+uTcqofPeSVS3raYj7rFgZVcWeOkWilC cZVabTaV7iP0IvEk/evNbTi8vd0JAU0mKY5fySZ5WkIuNqy+C9XqJ8CDbydy233DBPdh AwyBNC5QiIQExVDTnKpCnRH76d3djNXWHAx5g04CY6GRFMVPJ4czMiUJOCaPHcN09nQA XwaA== X-Gm-Message-State: AKGB3mKwEtNC9Ks2lYwqyGWFuTvzCK1THktueah90onR/rFhQvTWOmg/ gMg/sp08n5VjcQaNSamgkGRmjCZX6LjX07r6Wniq7w== X-Google-Smtp-Source: AGs4zMaym7Ygd/SFYJvu4G0Pp7st0eDfgF4U9/QlnNBZuzMJntVgG+lYCBnLuA6VndzLuAwwnx8z+/XiWpNRC0P9BAU= X-Received: by 10.28.23.196 with SMTP id 187mr7728855wmx.101.1512405883509; Mon, 04 Dec 2017 08:44:43 -0800 (PST) Original-Received: by 10.28.227.67 with HTTP; Mon, 4 Dec 2017 08:44:42 -0800 (PST) X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Mailman-Approved-At: Mon, 04 Dec 2017 12:40:49 -0500 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:140685 Archived-At: --001a114683027190ab055f866fb3 Content-Type: multipart/alternative; boundary="001a114683027190a6055f866fb1" --001a114683027190a6055f866fb1 Content-Type: text/plain; charset="UTF-8" I attached a patch to support xwidget webkit for macOS X, rebased onto the latest master. This was proposed in emacs-devel@gnu.org < https://lists.gnu.org/archive/html/emacs-devel/2017-12/msg00091.html> and told to post a patch here. Thanks --001a114683027190a6055f866fb1 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
I attached a patch to support xwidget webkit for macO= S X, rebased onto the latest master.


--001a114683027190a6055f866fb1-- --001a114683027190ab055f866fb3 Content-Type: application/octet-stream; name="0001-Support-xwidget-webkit-for-macOS-X.patch" Content-Disposition: attachment; filename="0001-Support-xwidget-webkit-for-macOS-X.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jasfdgoz0 RnJvbSBiOWNhNzNhMjcwMTU5NzU1ZjM0MmVkNjI5NmVlYzkzMmM3ZGMwM2E5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWVzdXAgS3dhayA8dmVzaGJvb0BnbWFpbC5jb20+CkRhdGU6 IE1vbiwgNCBEZWMgMjAxNyAyMToyMzoxOSArMDkwMApTdWJqZWN0OiBbUEFUQ0hdIFN1cHBvcnQg eHdpZGdldCB3ZWJraXQgZm9yIG1hY09TIFgKCkFkZCB4d2lkZ2V0IHdlYmtpdCBzdXBwb3J0IGZv ciBtYWNPUyBYIC8gTlMgQ29jb2EgYW5kIGFjY29tcGFueWluZwpjaGFuZ2VzLgoKKiAuZ2l0aWdu b3JlOiBJZ25vcmUgLkRTX1N0b3JlLgoqIGNvbmZpZ3VyZS5hYzogQWxsb3cgJy0td2l0aC14d2lk Z2V0cycgZm9yICduZXh0c3RlcCcuCiogbGlzcC94d2lkZ2V0LmVsCih4d2lkZ2V0LXdlYmtpdC1j eDItY2IsIHh3aWRnZXQtd2Via2l0LWN4My1jYiwgeHdpZGdldC13ZWJraXQtY3gyKQooeHdpZGdl dC13ZWJraXQtY3gzLCB4d2lkZ2V0LXdlYmtpdC1tb2RlLW1hcCk6IE5ldyB3ZWJraXQgc2Vzc2lv biB3aGVuCndpbmRvdyBzcGxpdCBhbmQga2V5IG1hcCBmb3IgJ25leHRzdGVwJy4KKHh3aWRnZXQt bG9nKTogRml4IHR5cG8gaW4gYnVmZmVyIG5hbWUuCih4d2lkZ2V0LWV2ZW50LWhhbmRsZXIpOiBS ZW1vdmUgYSAnbWVzc2FnZScuCih4d2lkZ2V0LXdlYmtpdC1jYWxsYmFjaywgeHdpZGdldC13ZWJr aXQtdXJsLXRpdGxlLWNiKTogUmVwbGFjZSBsYW1iZGEKd2l0aCBkZWZ1biBmb3IgR0Mgc2FmZSwg cmVtZW1iZXIgVVJMIGZvciBib29rbWFyayBpbnRlZ3JhdGlvbiwgYW5kCnN1cHBvcnQgdmVjdG9y IHJlc3VsdCBmcm9tIGphdmFzY3JpcHQuCih4d2lkZ2V0LXdlYmtpdC1tb2RlKTogTm8gY3Vyc29y IGFuZCBpbnRlZ3JhdGlvbiBmb3IgJ2lzZWFyY2gnLgooeHdpZGdldC13ZWJraXQtYm9va21hcmst anVtcC1uZXctc2Vzc2lvbik6IEFkZCBuZXcgdmFyaWFibGUuCih4d2lkZ2V0LXdlYmtpdC1ib29r bWFyay1tYWtlLXJlY29yZCk6IENoYW5nZXMgdG8gc2F2ZSBVUkwgaW4KJ2ZpbGVuYW1lJyBhdHRy aWJ1dGUgb2YgYSBib29rbWFyayByZWNvcmQsIHRoZSBVUkwgb2J0YWluZWQgd2hlbiB0aGUKcGFn ZSB3YXMgbG9hZGVkLCBhbmQgJ3N3aXRjaC10by1idWZmZXInIHdoZW4gYSBib29rbWFyayBzZWxl Y3RlZC4KKHh3aWRnZXQtd2Via2l0LWlzZWFyY2gtbGFzdC1sZW5ndGgsIHh3aWRnZXQtd2Via2l0 LXNlYXJjaC1qcykKKHh3aWRnZXQtd2Via2l0LXNlYXJjaC1mdW4tZnVuY3Rpb24pOiBJbnRlZ3Jh dGlvbiBmb3IgJ2lzZWFyY2gnLgooeHdpZGdldC13ZWJraXQtaW5zZXJ0LXN0cmluZywgeHdpZGdl dC13ZWJraXQtaW5zZXJ0LXN0cmluZy1jYik6IEdDCnNhZmUsIEZJRUxEIGlzIG5vdyBhIGxpc3Qs IGFuZCBmaXggZm9yIGEgamF2YXNjcmlwdCBleGNlcHRpb24uCih4d2lkZ2V0LXdpbmRvdy1pbnNp ZGUtcGl4ZWwtd2lkdGgpCih4d2lkZ2V0LXdpbmRvdy1pbnNpZGUtcGl4ZWwtaGVpZ2h0KQooeHdp ZGdldC13ZWJraXQtYWRqdXN0LXNpemUtdG8td2luZG93KQooeHdpZGdldC13ZWJraXQtbmV3LXNl c3Npb24pOiBOZXcgZnVuY3Rpb25zIHRvIGdldCB3aW5kb3cgaW5zaWRlIHdpZHRoCmFuZCBoZWln aHQgaW4gcGl4ZWwgYW5kIGluc2VydCBpbnZpc2libGUgVVJMIGluc3RlYWQgb2YgJyAnLgooeHdp ZGdldC13ZWJraXQtY3VycmVudC11cmwsIHh3aWRnZXQtd2Via2l0LWN1cnJlbnQtdXJsLWNiKTog R0Mgc2FmZS4KKHh3aWRnZXQtd2Via2l0LWNvcHktc2VsZWN0aW9uLWFzLWtpbGwpOiBHQyBzYWZl LgoqIG5leHRzdGVwL3RlbXBsYXRlcy9JbmZvLnBsaXN0LmluOiBBZGQgJ05TQXBwVHJhbnNwb3J0 U2VjdXJpdHknLgoqIHNyYy9NYWtlZmlsZS5pbjogQWRkIG5zeHdpZGdldC5vIGZvciBjb21waWxh dGlvbi4KKiBzcmMvZW1hY3MuYyAobWFpbik6IFNpbXBsaWZ5IGNvbmRpdGlvbmFsIGNhbGwgdG8g J3N5bXNfb2ZfeHdpZGdldCcuCiogc3JjL25zdGVybS5tIChuc19kcmF3X2dseXBoX3N0cmluZyk6 IEFkZCBjYXNlIGZvciAnWFdJREdFVF9HTFlQSCcuCihub3RlX21vdXNlX21vdmVtZW50IG1vdXNl TW92ZWQpOiBNYWtlIGl0IGVhc3kgdG8gcmVzaXplIHdpbmRvdyBieQpkcmFnZ2luZyBtb2RlLWxp bmUgb3IgdmVydGljYWwgc2VwYXJhdG9yIGFkamFjZW50IHRvIGxhcmdlIGdseXBoLgoqIHNyYy9u c3h3aWRnZXQuaCBzcmMvbnN4d2lkZ2V0Lm06IE5ld2x5IGFkZGVkIGZpbGVzLCB4d2lkZ2V0IHdl YmtpdApiYWNrZW5kIGZvciBuZXh0c3RlcC4KKiBzcmMveHdpZGdldC5jIHNyYy94d2lkZ2V0Lmgg KHh3aWRnZXQgeHdpZGdldF92aWV3KTogQWRkIG5leHRzdGVwCnNwZWNpZmljIGZpZWxkcyB3aXRo ICdIQVZFX05TJywgZ3VhcmQgR1RLIHNwZWNpZmljIGZpZWxkcyB3aXRoCidVU0VfR1RLJyBpbiB0 aGUgc3RydWN0dXJlcywgYW5kIGltcGxlbWVudCBhY2NvcmRpbmdseS4KKHhfZHJhd194d2lkZ2V0 X2dseXBoX3N0cmluZyk6IENoYW5nZSBmb3IgdG9wIGFsaWdubWVudCBvZiB4d2lkZ2V0cyBpbgph IGdseXBoIHN0cmluZyBpbnN0ZWFkIG9mIHZlcnRpY2FsbHkgbWlkZGxlIGFsaWdubWVudC4KLS0t CiAuZ2l0aWdub3JlICAgICAgICAgICAgICAgICAgICAgICB8ICAgMyArCiBjb25maWd1cmUuYWMg ICAgICAgICAgICAgICAgICAgICB8ICAzNCArKy0KIGxpc3AveHdpZGdldC5lbCAgICAgICAgICAg ICAgICAgIHwgMjM1ICsrKysrKysrKysrKysrLS0tLQogbmV4dHN0ZXAvdGVtcGxhdGVzL0luZm8u cGxpc3QuaW4gfCAgIDggKwogc3JjL01ha2VmaWxlLmluICAgICAgICAgICAgICAgICAgfCAgIDEg Kwogc3JjL2VtYWNzLmMgICAgICAgICAgICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9uc3Rlcm0u bSAgICAgICAgICAgICAgICAgICAgIHwgIDIwICstCiBzcmMvbnN4d2lkZ2V0LmggICAgICAgICAg ICAgICAgICB8ICA3NyArKysrKysKIHNyYy9uc3h3aWRnZXQubSAgICAgICAgICAgICAgICAgIHwg NTEwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL3h3aWRnZXQu YyAgICAgICAgICAgICAgICAgICAgfCAxODMgKysrKysrKysrKysrLS0KIHNyYy94d2lkZ2V0Lmgg ICAgICAgICAgICAgICAgICAgIHwgIDM1ICsrLQogMTEgZmlsZXMgY2hhbmdlZCwgMTAzMyBpbnNl cnRpb25zKCspLCA3OCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvbnN4d2lk Z2V0LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvbnN4d2lkZ2V0Lm0KCmRpZmYgLS1naXQgYS8u Z2l0aWdub3JlIGIvLmdpdGlnbm9yZQppbmRleCA3NDI2MDgyOTA2Li4yZWFlMzM4NTA4IDEwMDY0 NAotLS0gYS8uZ2l0aWdub3JlCisrKyBiLy5naXRpZ25vcmUKQEAgLTI3OCwzICsyNzgsNiBAQCBu dC9lbWFjcy5yYwogbnQvZW1hY3NjbGllbnQucmMKIHNyYy9nZGIuaW5pCiAvdmFyLworCisjIG1h Y09TIC0gRm9sZGVyIGN1c3RvbSBhdHRyaWJ1dGVzIGZpbGVzCisuRFNfU3RvcmUKZGlmZiAtLWdp dCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCA2MTQ1NWE0YjBmLi4xYjdiNWM1 MDc5IDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0zOTks NyArMzk5LDcgQEAgQUNfREVGVU4KICBbd2l0aF9maWxlX25vdGlmaWNhdGlvbj0kd2l0aF9mZWF0 dXJlc10pCiAKIE9QVElPTl9ERUZBVUxUX09GRihbeHdpZGdldHNdLAotICBbZW5hYmxlIHVzZSBv ZiBzb21lIGd0ayB3aWRnZXRzIGluIEVtYWNzIGJ1ZmZlcnMgKHJlcXVpcmVzIGd0azMpXSkKKyAg W2VuYWJsZSB1c2Ugb2Ygc29tZSBndGsgd2lkZ2V0cyBpbiBFbWFjcyBidWZmZXJzIChyZXF1aXJl cyBndGszIG9yIE5TKV0pCiAKICMjIEZvciB0aGUgdGltZXMgd2hlbiB5b3Ugd2FudCB0byBidWls ZCBFbWFjcyBidXQgZG9uJ3QgaGF2ZQogIyMgYSBzdWl0YWJsZSBtYWtlaW5mbywgYW5kIGNhbiBs aXZlIHdpdGhvdXQgdGhlIG1hbnVhbHMuCkBAIC0yNzE1LDIwICsyNzE1LDM0IEBAIEFDX0RFRlVO CiAKIAogZG5sIEVuYWJsZSB4d2lkZ2V0cyBpZiBHVEszIGFuZCBXZWJLaXRHVEsrIGFyZSBhdmFp bGFibGUuCitkbmwgRW5hYmxlIHh3aWRnZXRzIGlmIE5TIENvY29hIGFuZCBXZWJLaXQgZnJhbWV3 b3JrIGFyZSBhdmFpbGFibGUuCiBIQVZFX1hXSURHRVRTPW5vCiBYV0lER0VUU19PQko9CiBpZiB0 ZXN0ICIkd2l0aF94d2lkZ2V0cyIgIT0gIm5vIjsgdGhlbgotICB0ZXN0ICIkVVNFX0dUS19UT09M S0lUIiA9ICJHVEszIiAmJiB0ZXN0ICIkd2luZG93X3N5c3RlbSIgIT0gIm5vbmUiIHx8Ci0gICAg QUNfTVNHX0VSUk9SKFt4d2lkZ2V0cyByZXF1ZXN0ZWQgYnV0IGd0azMgbm90IHVzZWQuXSkKKyAg aWYgdGVzdCAiJFVTRV9HVEtfVE9PTEtJVCIgPSAiR1RLMyIgJiYgdGVzdCAiJHdpbmRvd19zeXN0 ZW0iICE9ICJub25lIjsgdGhlbgorICAgIFdFQktJVF9SRVFVSVJFRD0yLjEyCisgICAgV0VCS0lU X01PRFVMRVM9IndlYmtpdDJndGstNC4wID49ICRXRUJLSVRfUkVRVUlSRUQiCisgICAgRU1BQ1Nf Q0hFQ0tfTU9EVUxFUyhbV0VCS0lUXSwgWyRXRUJLSVRfTU9EVUxFU10pCisgICAgSEFWRV9YV0lE R0VUUz0kSEFWRV9XRUJLSVQKKyAgICBYV0lER0VUU19PQko9Inh3aWRnZXQubyIKKyAgZWxpZiB0 ZXN0ICIkd2luZG93X3N5c3RlbSIgPSAibmV4dHN0ZXAiOyB0aGVuCisgICAgZG5sIEZJWE1FOiBD aGVjayBmcmFtZXdvcmsgV2ViS2l0MgorICAgIGRubCBXRUJLSVRfUkVRVUlSRUQ9TS5tLnAKKyAg ICBXRUJLSVRfTElCUz0iLVdsLC1mcmFtZXdvcmsgLVdsLFdlYktpdCIKKyAgICBXRUJLSVRfQ0ZM QUdTPSItRF9SRUVOVFJBTlQgLUkvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9XZWJLaXQuZnJh bWV3b3JrL0hlYWRlcnMiCisgICAgSEFWRV9XRUJLSVQ9InllcyIKKyAgICBIQVZFX1hXSURHRVRT PSRIQVZFX1dFQktJVAorICAgIFhXSURHRVRTX09CSj0ieHdpZGdldC5vIgorICAgIE5TX09CSkNf T0JKPSIkTlNfT0JKQ19PQkogbnN4d2lkZ2V0Lm8iCisgICAgZG5sIFVwZGF0ZSBOU19PQkpDX09C SiB3aXRoIGFkZGVkIG5zeHdpZGdldC5vCisgICAgQUNfU1VCU1QoTlNfT0JKQ19PQkopCisgIGVs c2UKKyAgICBBQ19NU0dfRVJST1IoW3h3aWRnZXRzIHJlcXVlc3RlZCwgaXQgcmVxdWlyZXMgR1RL MyBhcyBYIHdpbmRvdyB0b29sa2l0IG9yIE5leHRzdGVwIGFzIHdpbmRvdyBzeXN0ZW1sXSkKKyAg ZmkKIAotICBXRUJLSVRfUkVRVUlSRUQ9Mi4xMgotICBXRUJLSVRfTU9EVUxFUz0id2Via2l0Mmd0 ay00LjAgPj0gJFdFQktJVF9SRVFVSVJFRCIKLSAgRU1BQ1NfQ0hFQ0tfTU9EVUxFUyhbV0VCS0lU XSwgWyRXRUJLSVRfTU9EVUxFU10pCi0gIEhBVkVfWFdJREdFVFM9JEhBVkVfV0VCS0lUCiAgIHRl c3QgJEhBVkVfWFdJREdFVFMgPSB5ZXMgfHwKLSAgICBBQ19NU0dfRVJST1IoW3h3aWRnZXRzIHJl cXVlc3RlZCBidXQgV2ViS2l0R1RLKyBub3QgZm91bmQuXSkKKyAgICBBQ19NU0dfRVJST1IoW3h3 aWRnZXRzIHJlcXVlc3RlZCBidXQgV2ViS2l0R1RLKyBvciBXZWJLaXQgZnJhbWV3b3JrIG5vdCBm b3VuZC5dKQogCi0gIFhXSURHRVRTX09CSj14d2lkZ2V0Lm8KICAgQUNfREVGSU5FKFtIQVZFX1hX SURHRVRTXSwgMSwgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHh3aWRnZXRzIHN1cHBvcnQuXSkK IGZpCiBBQ19TVUJTVChYV0lER0VUU19PQkopCkBAIC01NDE5LDcgKzU0MzMsNyBAQCBBQ19ERUZV TgogICBEb2VzIEVtYWNzIGRpcmVjdGx5IHVzZSB6bGliPyAgICAgICAgICAgICAgICAgICAgICAg ICAgICR7SEFWRV9aTElCfQogICBEb2VzIEVtYWNzIGhhdmUgZHluYW1pYyBtb2R1bGVzIHN1cHBv cnQ/ICAgICAgICAgICAgICAgICR7SEFWRV9NT0RVTEVTfQogICBEb2VzIEVtYWNzIHVzZSB0b29s a2l0IHNjcm9sbCBiYXJzPyAgICAgICAgICAgICAgICAgICAgICR7VVNFX1RPT0xLSVRfU0NST0xM X0JBUlN9Ci0gIERvZXMgRW1hY3Mgc3VwcG9ydCBYd2lkZ2V0cyAocmVxdWlyZXMgZ3RrMyk/ICAg ICAgICAgICAgJHtIQVZFX1hXSURHRVRTfQorICBEb2VzIEVtYWNzIHN1cHBvcnQgWHdpZGdldHMg KHJlcXVpcmVzIGd0azMgb3IgTlMpPyAgICAgICR7SEFWRV9YV0lER0VUU30KICAgRG9lcyBFbWFj cyBoYXZlIHRocmVhZGluZyBzdXBwb3J0IGluIGxpc3A/ICAgICAgICAgICAgICAke3RocmVhZHNf ZW5hYmxlZH0KICJdKQogCmRpZmYgLS1naXQgYS9saXNwL3h3aWRnZXQuZWwgYi9saXNwL3h3aWRn ZXQuZWwKaW5kZXggNWUzNzIwOWNjMi4uMDMxODNjMTlkNSAxMDA2NDQKLS0tIGEvbGlzcC94d2lk Z2V0LmVsCisrKyBiL2xpc3AveHdpZGdldC5lbApAQCAtNzgsNiArNzgsNyBAQCB4d2lkZ2V0LWF0 CiA7Ozsgd2Via2l0IHN1cHBvcnQKIChyZXF1aXJlICdicm93c2UtdXJsKQogKHJlcXVpcmUgJ2lt YWdlLW1vZGUpOztmb3Igc29tZSBpbWFnZS1tb2RlIGFsaWtlIGZ1bmN0aW9uYWxpdHkKKyhyZXF1 aXJlICdzZXEpCiAKIDs7OyMjI2F1dG9sb2FkCiAoZGVmdW4geHdpZGdldC13ZWJraXQtYnJvd3Nl LXVybCAodXJsICZvcHRpb25hbCBuZXctc2Vzc2lvbikKQEAgLTk2LDYgKzk3LDM4IEBAIHh3aWRn ZXQtd2Via2l0LWJyb3dzZS11cmwKICAgICAgICAgKHh3aWRnZXQtd2Via2l0LW5ldy1zZXNzaW9u IHVybCkKICAgICAgICh4d2lkZ2V0LXdlYmtpdC1nb3RvLXVybCB1cmwpKSkpCiAKKzs7IE5PVEU6 IEBqYXZhc2NyaXB0LWNhbGxiYWNrIC0gcHJlZmVyIGRlZnVuIHRvIGxhbWJkYS4KKzs7IExhbWJk YSBzZWVtcyB0byBiZSBtb3JlIGVhc2lseSBnYXJiYWdlIGNvbGxlY3RlZCBpbiBmbGlnaHQgZnJv bQorOzsgYHh3aWRnZXQtd2Via2l0LWV4ZWN1dGUtc2NyaXB0JyB0byBpdHMgZXhlY3V0aW9uIHZp YSBldmVudC4KKworOzsgQGphdmFzY3JpcHQtY2FsbGJhY2sKKyhkZWZ1biB4d2lkZ2V0LXdlYmtp dC1jeDItY2IgKHVybCkKKyAgIk5ldyB4d2lkZ2V0IHdlYmtpdCBzZXNzaW9uIGFuZCBidWZmZXIg d2l0aCBVUkwgaW4gc3BsaXQgd2luZG93IGJlbG93LiIKKyAgKHdpdGgtc2VsZWN0ZWQtd2luZG93 IChzcGxpdC13aW5kb3ctYmVsb3cpCisgICAgKHh3aWRnZXQtd2Via2l0LW5ldy1zZXNzaW9uIHVy bCkpKQorCis7OyBAamF2YXNjcmlwdC1jYWxsYmFjaworKGRlZnVuIHh3aWRnZXQtd2Via2l0LWN4 My1jYiAodXJsKQorICAiTmV3IHh3aWRnZXQgd2Via2l0IHNlc3Npb24gYW5kIGJ1ZmZlciB3aXRo IFVSTCBpbiBzcGxpdCB3aW5kb3cgcmlnaHQuIgorICAod2l0aC1zZWxlY3RlZC13aW5kb3cgKHNw bGl0LXdpbmRvdy1yaWdodCkKKyAgICAoeHdpZGdldC13ZWJraXQtbmV3LXNlc3Npb24gdXJsKSkp CisKKyhkZWZ1biB4d2lkZ2V0LXdlYmtpdC1jeDIgKCkKKyAgIkdldCB0aGUgVVJMIG9mIGN1cnJl bnQgc2Vzc2lvbiwgdGhlbiBgeHdpZGdldC13ZWJraXQtY3gyLWNiJy4iCisgIChpbnRlcmFjdGl2 ZSkKKyAgKHh3aWRnZXQtd2Via2l0LWV4ZWN1dGUtc2NyaXB0CisgICAoeHdpZGdldC13ZWJraXQt Y3VycmVudC1zZXNzaW9uKQorICAgImRvY3VtZW50LlVSTCIKKyAgICd4d2lkZ2V0LXdlYmtpdC1j eDItY2IpKQorCisoZGVmdW4geHdpZGdldC13ZWJraXQtY3gzICgpCisgICJHZXQgdGhlIFVSTCBv ZiBjdXJyZW50IHNlc3Npb24sIHRoZW4gYHh3aWRnZXQtd2Via2l0LWN4My1jYicuIgorICAoaW50 ZXJhY3RpdmUpCisgICh4d2lkZ2V0LXdlYmtpdC1leGVjdXRlLXNjcmlwdAorICAgKHh3aWRnZXQt d2Via2l0LWN1cnJlbnQtc2Vzc2lvbikKKyAgICJkb2N1bWVudC5VUkwiCisgICAneHdpZGdldC13 ZWJraXQtY3gzLWNiKSkKKwogOzt0b2RvLgogOzsgLSBjaGVjayB0aGF0IHRoZSB3ZWJraXQgc3Vw cG9ydCBpcyBjb21waWxlZCBpbgogKGRlZnZhciB4d2lkZ2V0LXdlYmtpdC1tb2RlLW1hcApAQCAt MTMxLDYgKzE2NCwxMiBAQCB4d2lkZ2V0LXdlYmtpdC1tb2RlLW1hcAogICAgIDs7IChkZWZpbmUt a2V5IG1hcCBbcmVtYXAgbW92ZS1lbmQtb2YtbGluZV0gICAgICAgJ2ltYWdlLWVvbCkKICAgICAo ZGVmaW5lLWtleSBtYXAgW3JlbWFwIGJlZ2lubmluZy1vZi1idWZmZXJdICd4d2lkZ2V0LXdlYmtp dC1zY3JvbGwtdG9wKQogICAgIChkZWZpbmUta2V5IG1hcCBbcmVtYXAgZW5kLW9mLWJ1ZmZlcl0g ICAgICAgJ3h3aWRnZXQtd2Via2l0LXNjcm9sbC1ib3R0b20pCisKKyAgICA7OyBGb3IgbWFjT1Mg eHdpZGdldCB3ZWJraXQsIHdlIGRvbid0IHN1cHBvcnQgbXVsdGlwbGUgdmlld3MgZm9yIGEKKyAg ICA7OyBtb2RlbCwgaW5zdGVhZCwgY3JlYXRlIGEgbmV3IHNlc3Npb24gYW5kIG1vZGVsIGJlaGlu ZCB0aGUgc2NlbmUuCisgICAgKHdoZW4gKG1lbXEgd2luZG93LXN5c3RlbSAnKG1hYyBucykpCisg ICAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiQy14IDIiKSAneHdpZGdldC13ZWJraXQtY3gyKQor ICAgICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIkMteCAzIikgJ3h3aWRnZXQtd2Via2l0LWN4Mykp CiAgICAgbWFwKQogICAiS2V5bWFwIGZvciBgeHdpZGdldC13ZWJraXQtbW9kZScuIikKIApAQCAt MTkyLDcgKzIzMSw3IEBAIHh3aWRnZXQtd2Via2l0LXNjcm9sbC1ib3R0b20KIChkZWZpbmUta2V5 IChjdXJyZW50LWdsb2JhbC1tYXApIFt4d2lkZ2V0LWV2ZW50XSAjJ3h3aWRnZXQtZXZlbnQtaGFu ZGxlcikKIChkZWZ1biB4d2lkZ2V0LWxvZyAoJnJlc3QgbXNnKQogICAiTG9nIE1TRyB0byBhIGJ1 ZmZlci4iCi0gIChsZXQgKChidWYgKGdldC1idWZmZXItY3JlYXRlICIgKnh3aWRnZXQtbG9nKiIp KSkKKyAgKGxldCAoKGJ1ZiAoZ2V0LWJ1ZmZlci1jcmVhdGUgIip4d2lkZ2V0LWxvZyoiKSkpCiAg ICAgKHdpdGgtY3VycmVudC1idWZmZXIgYnVmCiAgICAgICAoaW5zZXJ0IChhcHBseSAjJ2Zvcm1h dCBtc2cpKQogICAgICAgKGluc2VydCAiXG4iKSkpKQpAQCAtMjA4LDcgKzI0Nyw2IEBAIHh3aWRn ZXQtZXZlbnQtaGFuZGxlcgogICAgICAgIDs7VE9ETyBzdG9wcGVkIHdvcmtpbmcgZm9yIHNvbWUg cmVhc29uCiAgICAgICAgKQogICAgIDs7KGZ1bmNhbGwgIHh3aWRnZXQtY2FsbGJhY2sgeHdpZGdl dCB4d2lkZ2V0LWV2ZW50LXR5cGUpCi0gICAgKG1lc3NhZ2UgInh3IGNhbGxiYWNrICVzIiB4d2lk Z2V0KQogICAgIChmdW5jYWxsICAneHdpZGdldC13ZWJraXQtY2FsbGJhY2sgeHdpZGdldCB4d2lk Z2V0LWV2ZW50LXR5cGUpKSkKIAogKGRlZnVuIHh3aWRnZXQtd2Via2l0LWNhbGxiYWNrICh4d2lk Z2V0IHh3aWRnZXQtZXZlbnQtdHlwZSkKQEAgLTIxOCwxNiArMjU2LDI1IEBAIHh3aWRnZXQtd2Vi a2l0LWNhbGxiYWNrCiAgICAgICAoeHdpZGdldC1sb2cKICAgICAgICAiZXJyb3I6IGNhbGxiYWNr IGNhbGxlZCBmb3IgeHdpZGdldCB3aXRoIGRlYWQgYnVmZmVyIikKICAgICAod2l0aC1jdXJyZW50 LWJ1ZmZlciAoeHdpZGdldC1idWZmZXIgeHdpZGdldCkKKworICAgICAgOzsgQGphdmFzY3JpcHQt Y2FsbGJhY2sKKyAgICAgIDs7IFdlIGRvIG5vdCBjaGFuZ2Ugc2VsZWN0ZWQgd2luZG93IGR1ZSB0 byBnZXR0aW5nIHRvIGtub3dpbmcKKyAgICAgIDs7IFVSTCBhbmQgdGl0bGUuICBBbmQgYWxzbyBk byBub3QgYWRqdXN0IHdlYmtpdCBzaXplIHRvIHdpbmRvdworICAgICAgOzsgaGVyZSwgdGhlIHdp bmRvdyBjYW4gYmUgdGhlIG1pbmktYnVmZmVyIHdpbmRvdyB1bndhbnRlZGx5LgorICAgICAgKGRl ZnVuIHh3aWRnZXQtd2Via2l0LXVybC10aXRsZS1jYiAodXJsLXRpdGxlKQorICAgICAgICAiUHV0 IFVSTCBhcyB0ZXh0IHByb3BlcnR5IGFuZCBjaGFuZ2UgYnVmZmVyIG5hbWUgdXNpbmcgVElUTEUu IgorICAgICAgICAobGV0ICgodXJsIChjYXIgdXJsLXRpdGxlKSkKKyAgICAgICAgICAgICAgKHRp dGxlIChjYXIgKGNkciB1cmwtdGl0bGUpKSkpCisgICAgICAgICAgKHh3aWRnZXQtbG9nICJ3ZWJr aXQgZmluaXNoZWQgbG9hZGluZzogJyVzJyBmcm9tICclcyciIHRpdGxlIHVybCkKKyAgICAgICAg ICAoc2V0cSBidWZmZXItcmVhZC1vbmx5IG5pbCkKKyAgICAgICAgICAocHV0LXRleHQtcHJvcGVy dHkgMiAzICdVUkwgdXJsKQorICAgICAgICAgIChzZXRxIGJ1ZmZlci1yZWFkLW9ubHkgdCkKKyAg ICAgICAgICAocmVuYW1lLWJ1ZmZlciAoZm9ybWF0ICIqeHdpZGdldCB3ZWJraXQ6ICVzICoiIHRp dGxlKSkpKQorCiAgICAgICAoY29uZCAoKGVxIHh3aWRnZXQtZXZlbnQtdHlwZSAnbG9hZC1jaGFu Z2VkKQogICAgICAgICAgICAgICh4d2lkZ2V0LXdlYmtpdC1leGVjdXRlLXNjcmlwdAotICAgICAg ICAgICAgICB4d2lkZ2V0ICJkb2N1bWVudC50aXRsZSIKLSAgICAgICAgICAgICAgKGxhbWJkYSAo dGl0bGUpCi0gICAgICAgICAgICAgICAgKHh3aWRnZXQtbG9nICJ3ZWJraXQgZmluaXNoZWQgbG9h ZGluZzogJyVzJyIgdGl0bGUpCi0gICAgICAgICAgICAgICAgOztUT0RPIC0gY2hlY2sgdGhlIG5h dGl2ZS9pbnRlcm5hbCBzY3JvbGwKLSAgICAgICAgICAgICAgICA7Oyh4d2lkZ2V0LWFkanVzdC1z aXplLXRvLWNvbnRlbnQgeHdpZGdldCkKLSAgICAgICAgICAgICAgICAoeHdpZGdldC13ZWJraXQt YWRqdXN0LXNpemUtdG8td2luZG93IHh3aWRnZXQpCi0gICAgICAgICAgICAgICAgKHJlbmFtZS1i dWZmZXIgKGZvcm1hdCAiKnh3aWRnZXQgd2Via2l0OiAlcyAqIiB0aXRsZSkpKSkKLSAgICAgICAg ICAgICAocG9wLXRvLWJ1ZmZlciAoY3VycmVudC1idWZmZXIpKSkKKyAgICAgICAgICAgICAgeHdp ZGdldCAiW2RvY3VtZW50LlVSTCwgZG9jdW1lbnQudGl0bGVdIgorICAgICAgICAgICAgICAneHdp ZGdldC13ZWJraXQtdXJsLXRpdGxlLWNiKSkKICAgICAgICAgICAgICgoZXEgeHdpZGdldC1ldmVu dC10eXBlICdkZWNpZGUtcG9saWN5KQogICAgICAgICAgICAgIChsZXQgKChzdHJhcmcgIChudGgg MyBsYXN0LWlucHV0LWV2ZW50KSkpCiAgICAgICAgICAgICAgICAoaWYgKHN0cmluZy1tYXRjaCAi LiojXFwoLipcXCkiIHN0cmFyZykKQEAgLTIzNywyNSArMjg0LDEwOCBAQCB4d2lkZ2V0LXdlYmtp dC1jYWxsYmFjawogICAgICAgICAgICAgKChlcSB4d2lkZ2V0LWV2ZW50LXR5cGUgJ2phdmFzY3Jp cHQtY2FsbGJhY2spCiAgICAgICAgICAgICAgKGxldCAoKHByb2MgKG50aCAzIGxhc3QtaW5wdXQt ZXZlbnQpKQogICAgICAgICAgICAgICAgICAgIChhcmcgIChudGggNCBsYXN0LWlucHV0LWV2ZW50 KSkpCi0gICAgICAgICAgICAgICAoZnVuY2FsbCBwcm9jIGFyZykpKQorICAgICAgICAgICAgICAg OzsgU29tZSBqYXZhc2NyaXB0IHJldHVybiB2ZWN0b3IgYXMgcmVzdWx0CisgICAgICAgICAgICAg ICAoaWYgKHZlY3RvcnAgYXJnKQorICAgICAgICAgICAgICAgICAgIChmdW5jYWxsIHByb2MgKHNl cS1pbnRvIGFyZyAnbGlzdCkpCisgICAgICAgICAgICAgICAgIChmdW5jYWxsIHByb2MgYXJnKSkp KQogICAgICAgICAgICAgKHQgKHh3aWRnZXQtbG9nICJ1bmhhbmRsZWQgZXZlbnQ6JXMiIHh3aWRn ZXQtZXZlbnQtdHlwZSkpKSkpKQogCiAoZGVmdmFyIGJvb2ttYXJrLW1ha2UtcmVjb3JkLWZ1bmN0 aW9uKQorKGRlZnZhciBpc2VhcmNoLXNlYXJjaC1mdW4tZnVuY3Rpb24pCiAoZGVmaW5lLWRlcml2 ZWQtbW9kZSB4d2lkZ2V0LXdlYmtpdC1tb2RlCiAgICAgc3BlY2lhbC1tb2RlICJ4d2lkZ2V0LXdl YmtpdCIgIlh3aWRnZXQgd2Via2l0IHZpZXcgbW9kZS4iCiAgICAgKHNldHEgYnVmZmVyLXJlYWQt b25seSB0KQorICAgIChzZXRxIGN1cnNvci10eXBlIG5pbCkKICAgICAoc2V0cS1sb2NhbCBib29r bWFyay1tYWtlLXJlY29yZC1mdW5jdGlvbgogICAgICAgICAgICAgICAgICMneHdpZGdldC13ZWJr aXQtYm9va21hcmstbWFrZS1yZWNvcmQpCisgICAgKHNldHEtbG9jYWwgaXNlYXJjaC1zZWFyY2gt ZnVuLWZ1bmN0aW9uCisgICAgICAgICAgICAgICAgIyd4d2lkZ2V0LXdlYmtpdC1zZWFyY2gtZnVu LWZ1bmN0aW9uKQorICAgIChzZXRxLWxvY2FsIGlzZWFyY2gtbGF6eS1oaWdobGlnaHQgbmlsKQog ICAgIDs7IEtlZXAgdHJhY2sgb2YgW3ZoXXNjcm9sbCB3aGVuIHN3aXRjaGluZyBidWZmZXJzCiAg ICAgKGltYWdlLW1vZGUtc2V0dXAtd2lucHJvcHMpKQogCis7OzsgQm9va21hcmtzIGludGVncmF0 aW9uCisKKyhkZWZ2YXIgeHdpZGdldC13ZWJraXQtYm9va21hcmstanVtcC1uZXctc2Vzc2lvbiBu aWwKKyAgIkNvbnRyb2wgYm9va21hcmsganVtcCB0byB1c2UgbmV3IHNlc3Npb24gb3Igbm90Lgor SWYgbm9uLW5pbCwgaXQgd2lsbCB1c2UgYSBuZXcgc2Vzc2lvbi4gIE90aGVyd2lzZSwgaXQgd2ls bCB1c2UKK2B4d2lkZ2V0LXdlYmtpdC1sYXN0LXNlc3Npb24nLiAgV2hlbiB5b3Ugc2V0IHRoaXMg dmFyaWFibGUgdG8KK25pbCwgY29uc2lkZXIgZnVydGhlciBjdXN0b21pemF0aW9uIHdpdGgKK2B4 d2lkZ2V0LXdlYmtpdC1sYXN0LXNlc3Npb24tYnVmZmVyJy4iKQorCis7OyBXZSBhdm9pZCB1c2lu ZyBhc3luYyBgeHdpZGdldC13ZWJraXQtY3VycmVudC11cmwnLCBpbnN0ZWFkIHVzZSBVUkwKKzs7 IGtlcHQgaW4geHdpZGdldCB3ZWJraXQgYXMgcHJvcGVydHkKIChkZWZ1biB4d2lkZ2V0LXdlYmtp dC1ib29rbWFyay1tYWtlLXJlY29yZCAoKQogICAiSW50ZWdyYXRlIEVtYWNzIGJvb2ttYXJrcyB3 aXRoIHRoZSB3ZWJraXQgeHdpZGdldC4iCiAgIChuY29uYyAoYm9va21hcmstbWFrZS1yZWNvcmQt ZGVmYXVsdCB0IHQpCi0gICAgICAgICBgKChwYWdlICAgICAuICwoeHdpZGdldC13ZWJraXQtY3Vy cmVudC11cmwpKQotICAgICAgICAgICAoaGFuZGxlciAgLiAobGFtYmRhIChibWspIChicm93c2Ut dXJsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYm9va21hcmstcHJvcC1nZXQg Ym1rICdwYWdlKSkpKSkpKQotCisgICAgICAgICBgKChmaWxlbmFtZSAuICwoZ2V0LXRleHQtcHJv cGVydHkgMiAnVVJMKSkKKyAgICAgICAgICAgKGhhbmRsZXIgIC4gKGxhbWJkYSAoYm1rKQorICAg ICAgICAgICAgICAgICAgICAgICAgIChicm93c2UtdXJsCisgICAgICAgICAgICAgICAgICAgICAg ICAgIChib29rbWFyay1wcm9wLWdldCBibWsgJ2ZpbGVuYW1lKQorICAgICAgICAgICAgICAgICAg ICAgICAgICB4d2lkZ2V0LXdlYmtpdC1ib29rbWFyay1qdW1wLW5ldy1zZXNzaW9uKQorICAgICAg ICAgICAgICAgICAgICAgICAgIChzd2l0Y2gtdG8tYnVmZmVyCisgICAgICAgICAgICAgICAgICAg ICAgICAgICh4d2lkZ2V0LWJ1ZmZlciAoeHdpZGdldC13ZWJraXQtbGFzdC1zZXNzaW9uKSkpKSkp KSkKKworOzs7IFNlYXJjaCB0ZXh0IGluIHBhZ2UKKworOzsgSW5pdGlhbGl6ZSBsYXN0IHNlYXJj aCB0ZXh0IGxlbmd0aCB2YXJpYWJsZSB3aGVuIGlzZWFyY2ggc3RhcnRzCisoZGVmdmFyIHh3aWRn ZXQtd2Via2l0LWlzZWFyY2gtbGFzdC1sZW5ndGggMCkKKyhhZGQtaG9vayAnaXNlYXJjaC1tb2Rl LWhvb2sKKyAgICAgICAgICAobGFtYmRhICgpCisgICAgICAgICAgICAoc2V0cSB4d2lkZ2V0LXdl YmtpdC1pc2VhcmNoLWxhc3QtbGVuZ3RoIDApKSkKKworOzsgVGhpcyBpcyBtaW5pbWFsLiBSZWdl eCBhbmQgaW5jcmVtZW50YWwgc2VhcmNoIHdpbGwgYmUgbmljZQorKGRlZnZhciB4d2lkZ2V0LXdl YmtpdC1zZWFyY2gtanMgIgordmFyIHh3U2VhcmNoRm9yd2FyZCA9ICVzOwordmFyIHh3U2VhcmNo UmVwZWF0ID0gJXM7Cit2YXIgeHdTZWFyY2hTdHJpbmcgPSAnJXMnOworaWYgKHdpbmRvdy5nZXRT ZWxlY3Rpb24oKSAmJiAhd2luZG93LmdldFNlbGVjdGlvbigpLmlzQ29sbGFwc2VkKSB7CisgIGlm ICh4d1NlYXJjaFJlcGVhdCkgeworICAgIGlmICh4d1NlYXJjaEZvcndhcmQpCisgICAgICB3aW5k b3cuZ2V0U2VsZWN0aW9uKCkuY29sbGFwc2VUb0VuZCgpOworICAgIGVsc2UKKyAgICAgIHdpbmRv dy5nZXRTZWxlY3Rpb24oKS5jb2xsYXBzZVRvU3RhcnQoKTsKKyAgfSBlbHNlIHsKKyAgICBpZiAo eHdTZWFyY2hGb3J3YXJkKQorICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmNvbGxhcHNlVG9T dGFydCgpOworICAgIGVsc2UgeworICAgICAgdmFyIHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24o KTsKKyAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5jb2xsYXBzZShzZWwuZm9jdXNOb2RlLCBz ZWwuZm9jdXNPZmZzZXQgKyAxKTsKKyAgICB9CisgIH0KK30KK3dpbmRvdy5maW5kKHh3U2VhcmNo U3RyaW5nLCBmYWxzZSwgIXh3U2VhcmNoRm9yd2FyZCwgdHJ1ZSwgZmFsc2UsIHRydWUpOworIikK KworKGRlZnVuIHh3aWRnZXQtd2Via2l0LXNlYXJjaC1mdW4tZnVuY3Rpb24gKCkKKyAgIlJldHVy biB0aGUgZnVuY3Rpb24gd2hpY2ggcGVyZm9ybSB0aGUgc2VhcmNoIGluIHh3aWRnZXQgd2Via2l0 LiIKKyAgKGxhbWJkYSAoc3RyaW5nICZvcHRpb25hbCBib3VuZCBub2Vycm9yIGNvdW50KQorICAg IChpZ25vcmUgYm91bmQgbm9lcnJvciBjb3VudCkKKyAgICAobGV0ICgoY3VycmVudC1sZW5ndGgg KGxlbmd0aCBzdHJpbmcpKQorICAgICAgICAgIHNlYXJjaC1mb3J3YXJkCisgICAgICAgICAgc2Vh cmNoLXJlcGVhdCkKKyAgICAgIDs7IEZvcndhcmQgb3IgYmFja3dhcmQKKyAgICAgIChpZiAoZXEg aXNlYXJjaC1mb3J3YXJkIG5pbCkKKyAgICAgICAgICAoc2V0cSBzZWFyY2gtZm9yd2FyZCAiZmFs c2UiKQorICAgICAgICAoc2V0cSBzZWFyY2gtZm9yd2FyZCAidHJ1ZSIpKQorICAgICAgOzsgUmVw ZWF0IGlmIHNlYXJjaCBzdHJpbmcgbGVuZ3RoIG5vdCBjaGFuZ2VkCisgICAgICAoaWYgKGVxIGN1 cnJlbnQtbGVuZ3RoIHh3aWRnZXQtd2Via2l0LWlzZWFyY2gtbGFzdC1sZW5ndGgpCisgICAgICAg ICAgKHNldHEgc2VhcmNoLXJlcGVhdCAidHJ1ZSIpCisgICAgICAgIChzZXRxIHNlYXJjaC1yZXBl YXQgImZhbHNlIikpCisgICAgICAoc2V0cSB4d2lkZ2V0LXdlYmtpdC1pc2VhcmNoLWxhc3QtbGVu Z3RoIGN1cnJlbnQtbGVuZ3RoKQorICAgICAgKHh3aWRnZXQtd2Via2l0LWV4ZWN1dGUtc2NyaXB0 CisgICAgICAgKHh3aWRnZXQtd2Via2l0LWN1cnJlbnQtc2Vzc2lvbikKKyAgICAgICAoZm9ybWF0 IHh3aWRnZXQtd2Via2l0LXNlYXJjaC1qcworICAgICAgICAgICAgICAgc2VhcmNoLWZvcndhcmQK KyAgICAgICAgICAgICAgIHNlYXJjaC1yZXBlYXQKKyAgICAgICAgICAgICAgIChyZWdleHAtcXVv dGUgc3RyaW5nKSkpCisgICAgICA7OyBVbmNvbmRpdGlvbmFsbHkgYXZvaWQgJ0ZhaWxpbmcgSS1z ZWFyY2ggLi4uJworICAgICAgKGlmIChlcSBpc2VhcmNoLWZvcndhcmQgbmlsKQorICAgICAgICAg IChnb3RvLWNoYXIgKHBvaW50LW1heCkpCisgICAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikp KQorICAgICAgKSkpCisKKzs7OyB4d2lkZ2V0IHdlYmtpdCBzZXNzaW9uCiAKIChkZWZ2YXIgeHdp ZGdldC13ZWJraXQtbGFzdC1zZXNzaW9uLWJ1ZmZlciBuaWwpCiAKQEAgLTMwMyw3ICs0MzMsNyBA QCB4d2lkZ2V0LXdlYmtpdC1hY3RpdmVlbGVtZW50LWpzIgogCiAiCiAKLSAgImphdmFzY3JpcHQg dGhhdCBmaW5kcyB0aGUgYWN0aXZlIGVsZW1lbnQuIgorICAiSmF2YXNjcmlwdCB0aGF0IGZpbmRz IHRoZSBhY3RpdmUgZWxlbWVudC4iCiAgIDs7IFllcyBpdCdzIHVnbHksIGJlY2F1c2U6CiAgIDs7 IC0gdGhlcmUgaXMgYXBwYXJlbnRseSBubyB3YXkgdG8gZmluZCB0aGUgYWN0aXZlIGZyYW1lIG90 aGVyIHRoYW4gcmVjdXJzaW9uCiAgIDs7IC0gdGhlIGpzICJmb3IgZWFjaCIgY29uc3RydWN0IG1p c2JlaGF2ZWQgb24gdGhlICJmcmFtZXMiIGNvbGxlY3Rpb24KQEAgLTMxMywyOSArNDQzLDM1IEBA IHh3aWRnZXQtd2Via2l0LWFjdGl2ZWVsZW1lbnQtanMiCiAgICkKIAogKGRlZnVuIHh3aWRnZXQt d2Via2l0LWluc2VydC1zdHJpbmcgKCkKLSAgIlByb21wdCBmb3IgYSBzdHJpbmcgYW5kIGluc2Vy dCBpdCBpbiB0aGUgYWN0aXZlIGZpZWxkIGluIHRoZQorICAiUHJvbXB0IGZvciBhIHN0cmluZyBh bmQgaW5zZXJ0IGl0IGluIHRoZSBhY3RpdmUgZmllbGQgaW4gdGhlIFwKIGN1cnJlbnQgd2Via2l0 IHdpZGdldC4iCiAgIDs7IFJlYWQgb3V0IHRoZSBzdHJpbmcgaW4gdGhlIGZpZWxkIGZpcnN0IGFu ZCBwcm92aWRlIGZvciBlZGl0LgogICAoaW50ZXJhY3RpdmUpCiAgIChsZXQgKCh4d3cgKHh3aWRn ZXQtd2Via2l0LWN1cnJlbnQtc2Vzc2lvbikpKQorCisgICAgOzsgQGphdmFzY3JpcHQtY2FsbGJh Y2sKKyAgICAoZGVmdW4geHdpZGdldC13ZWJraXQtaW5zZXJ0LXN0cmluZy1jYiAoZmllbGQpCisg ICAgICAiUHJvbXB0IGEgc3RyaW5nIGZvciB0aGUgRklFTEQgYW5kIGluc2VydCBpbiB0aGUgYWN0 aXZlIGlucHV0LiIKKyAgICAgIChsZXQgKChzdHIgKHBjYXNlIGZpZWxkCisgICAgICAgICAgICAg ICAgICAgKGAoLHZhbCAidGV4dCIpCisgICAgICAgICAgICAgICAgICAgIChyZWFkLXN0cmluZyAi VGV4dDogIiB2YWwpKQorICAgICAgICAgICAgICAgICAgIChgKCx2YWwgInBhc3N3b3JkIikKKyAg ICAgICAgICAgICAgICAgICAgKHJlYWQtcGFzc3dkICJQYXNzd29yZDogIiBuaWwgdmFsKSkKKyAg ICAgICAgICAgICAgICAgICAoYCgsdmFsICJ0ZXh0YXJlYSIpCisgICAgICAgICAgICAgICAgICAg ICh4d2lkZ2V0LXdlYmtpdC1iZWdpbi1lZGl0LXRleHRhcmVhIHh3dyB2YWwpKSkpKQorICAgICAg ICAoeHdpZGdldC13ZWJraXQtZXhlY3V0ZS1zY3JpcHQKKyAgICAgICAgIHh3dworICAgICAgICAg KGZvcm1hdCAiZmluZGFjdGl2ZWVsZW1lbnQoZG9jdW1lbnQpLnZhbHVlPSclcyciIHN0cikpKSkK KwogICAgICh4d2lkZ2V0LXdlYmtpdC1leGVjdXRlLXNjcmlwdAogICAgICB4d3cKICAgICAgKGNv bmNhdCB4d2lkZ2V0LXdlYmtpdC1hY3RpdmVlbGVtZW50LWpzICIKIChmdW5jdGlvbiAoKSB7CiAg IHZhciByZXMgPSBmaW5kYWN0aXZlZWxlbWVudChkb2N1bWVudCk7Ci0gIHJldHVybiBbcmVzLnZh bHVlLCByZXMudHlwZV07CisgIGlmIChyZXMpCisgICAgcmV0dXJuIFtyZXMudmFsdWUsIHJlcy50 eXBlXTsKIH0pKCk7IikKLSAgICAgKGxhbWJkYSAoZmllbGQpCi0gICAgICAgKGxldCAoKHN0ciAo cGNhc2UgZmllbGQKLSAgICAgICAgICAgICAgICAgICAgKGBbLHZhbCAidGV4dCJdCi0gICAgICAg ICAgICAgICAgICAgICAocmVhZC1zdHJpbmcgIlRleHQ6ICIgdmFsKSkKLSAgICAgICAgICAgICAg ICAgICAgKGBbLHZhbCAicGFzc3dvcmQiXQotICAgICAgICAgICAgICAgICAgICAgKHJlYWQtcGFz c3dkICJQYXNzd29yZDogIiBuaWwgdmFsKSkKLSAgICAgICAgICAgICAgICAgICAgKGBbLHZhbCAi dGV4dGFyZWEiXQotICAgICAgICAgICAgICAgICAgICAgKHh3aWRnZXQtd2Via2l0LWJlZ2luLWVk aXQtdGV4dGFyZWEgeHd3IHZhbCkpKSkpCi0gICAgICAgICAoeHdpZGdldC13ZWJraXQtZXhlY3V0 ZS1zY3JpcHQKLSAgICAgICAgICB4d3cKLSAgICAgICAgICAoZm9ybWF0ICJmaW5kYWN0aXZlZWxl bWVudChkb2N1bWVudCkudmFsdWU9JyVzJyIgc3RyKSkpKSkpKQorICAgICAneHdpZGdldC13ZWJr aXQtaW5zZXJ0LXN0cmluZy1jYikpKQogCiAoZGVmdmFyIHh3aWRnZXQteHdibCkKIChkZWZ1biB4 d2lkZ2V0LXdlYmtpdC1iZWdpbi1lZGl0LXRleHRhcmVhICh4dyB0ZXh0KQpAQCAtNDQ0LDExICs1 ODAsMjMgQEAgeHdpZGdldC13ZWJraXQtYWRqdXN0LXNpemUtZGlzcGF0Y2gKICAgKGlnbm9yZS1l cnJvcnMKICAgICAocmVjZW50ZXItdG9wLWJvdHRvbSkpKQogCis7OyBVdGlsaXR5IGZ1bmN0aW9u cywgd2FudGVkIGluIGB3aW5kb3cuZWwnCisKKyhkZWZ1biB4d2lkZ2V0LXdpbmRvdy1pbnNpZGUt cGl4ZWwtd2lkdGggKHdpbmRvdykKKyAgIlJldHVybiBFbWFjcyBXSU5ET1cgYm9keSB3aWR0aCBp biBwaXhlbC4iCisgIChsZXQgKChlZGdlcyAod2luZG93LWluc2lkZS1waXhlbC1lZGdlcyB3aW5k b3cpKSkKKyAgICAoLSAobnRoIDIgZWRnZXMpIChudGggMCBlZGdlcykpKSkKKworKGRlZnVuIHh3 aWRnZXQtd2luZG93LWluc2lkZS1waXhlbC1oZWlnaHQgKHdpbmRvdykKKyAgIlJldHVybiBFbWFj cyBXSU5ET1cgYm9keSBoZWlnaHQgaW4gcGl4ZWwuIgorICAobGV0ICgoZWRnZXMgKHdpbmRvdy1p bnNpZGUtcGl4ZWwtZWRnZXMgd2luZG93KSkpCisgICAgKC0gKG50aCAzIGVkZ2VzKSAobnRoIDEg ZWRnZXMpKSkpCisKIChkZWZ1biB4d2lkZ2V0LXdlYmtpdC1hZGp1c3Qtc2l6ZS10by13aW5kb3cg KHh3aWRnZXQgJm9wdGlvbmFsIHdpbmRvdykKICAgIkFkanVzdCB0aGUgc2l6ZSBvZiB0aGUgd2Vi a2l0IFhXSURHRVQgdG8gZml0IHRoZSBXSU5ET1cuIgogICAoeHdpZGdldC1yZXNpemUgeHdpZGdl dAotICAgICAgICAgICAgICAgICAgKHdpbmRvdy1waXhlbC13aWR0aCB3aW5kb3cpCi0gICAgICAg ICAgICAgICAgICAod2luZG93LXBpeGVsLWhlaWdodCB3aW5kb3cpKSkKKyAgICAgICAgICAgICAg ICAgICh4d2lkZ2V0LXdpbmRvdy1pbnNpZGUtcGl4ZWwtd2lkdGggd2luZG93KQorICAgICAgICAg ICAgICAgICAgKHh3aWRnZXQtd2luZG93LWluc2lkZS1waXhlbC1oZWlnaHQgd2luZG93KSkpCiAK IChkZWZ1biB4d2lkZ2V0LXdlYmtpdC1hZGp1c3Qtc2l6ZSAodyBoKQogICAiTWFudWFsbHkgc2V0 IHdlYmtpdCBzaXplIHRvIHdpZHRoIFcsIGhlaWdodCBILiIKQEAgLTQ4NywxMCArNjM1LDEyIEBA IHh3aWRnZXQtd2Via2l0LW5ldy1zZXNzaW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGdldC1idWZmZXItY3JlYXRlIGJ1Zm5hbWUpKSkKICAgICA7OyBU aGUgeHdpZGdldCBpZCBpcyBzdG9yZWQgaW4gYSB0ZXh0IHByb3BlcnR5LCBzbyB3ZSBuZWVkIHRv IGhhdmUKICAgICA7OyBhdCBsZWFzdCBjaGFyYWN0ZXIgaW4gdGhpcyBidWZmZXIuCi0gICAgKGlu c2VydCAiICIpCisgICAgOzsgSW5zZXJ0IGludmlzaWJsZSB1cmwsIGdvb2QgZGVmYXVsdCBmb3Ig bmV4dCBgZycgdG8gYnJvd3NlIHVybC4KKyAgICAoaW5zZXJ0IHVybCkKKyAgICAocHV0LXRleHQt cHJvcGVydHkgMSAoKyAxIChsZW5ndGggdXJsKSkgJ2ludmlzaWJsZSB0KQogICAgIChzZXRxIHh3 ICh4d2lkZ2V0LWluc2VydCAxICd3ZWJraXQgYnVmbmFtZQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAod2luZG93LXBpeGVsLXdpZHRoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAod2luZG93LXBpeGVsLWhlaWdodCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo eHdpZGdldC13aW5kb3ctaW5zaWRlLXBpeGVsLXdpZHRoIChzZWxlY3RlZC13aW5kb3cpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoeHdpZGdldC13aW5kb3ctaW5zaWRlLXBpeGVsLWhl aWdodCAoc2VsZWN0ZWQtd2luZG93KSkpKQogICAgICh4d2lkZ2V0LXB1dCB4dyAnY2FsbGJhY2sg J3h3aWRnZXQtd2Via2l0LWNhbGxiYWNrKQogICAgICh4d2lkZ2V0LXdlYmtpdC1tb2RlKQogICAg ICh4d2lkZ2V0LXdlYmtpdC1nb3RvLXVyaSAoeHdpZGdldC13ZWJraXQtbGFzdC1zZXNzaW9uKSB1 cmwpKSkKQEAgLTUxNSwxNCArNjY1LDE4IEBAIHh3aWRnZXQtd2Via2l0LXJlbG9hZAogICAoeHdp ZGdldC13ZWJraXQtZXhlY3V0ZS1zY3JpcHQgKHh3aWRnZXQtd2Via2l0LWN1cnJlbnQtc2Vzc2lv bikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoaXN0b3J5LmdvKDApOyIpKQog Cis7OyBAamF2YXNjcmlwdC1jYWxsYmFjaworKGRlZnVuIHh3aWRnZXQtd2Via2l0LWN1cnJlbnQt dXJsLWNiIChyZXN1bHQpCisgICJDYWxsYmFjayBmb3IgYHh3aWRnZXQtd2Via2l0LWN1cnJlbnQt dXJsJywgbWVzc2FnZSBhbmQga2lsbCB0aGUgUkVTVUxULiIKKyAgKGxldCAoKHVybCAoa2lsbC1u ZXcgKG9yIHJlc3VsdCAiIikpKSkKKyAgICAobWVzc2FnZSAidXJsOiAlcyIgdXJsKSkpCisKIChk ZWZ1biB4d2lkZ2V0LXdlYmtpdC1jdXJyZW50LXVybCAoKQotICAiR2V0IHRoZSB3ZWJraXQgdXJs IGFuZCBwbGFjZSBpdCBvbiB0aGUga2lsbC1yaW5nLiIKKyAgIkdldCB0aGUgd2Via2l0IHVybCBh bmQgcGxhY2UgaXQgb24gdGhlIGBraWxsLXJpbmcnLiIKICAgKGludGVyYWN0aXZlKQogICAoeHdp ZGdldC13ZWJraXQtZXhlY3V0ZS1zY3JpcHQKICAgICh4d2lkZ2V0LXdlYmtpdC1jdXJyZW50LXNl c3Npb24pCi0gICAiZG9jdW1lbnQuVVJMIiAobGFtYmRhIChydikKLSAgICAgICAgICAgICAgICAg ICAgKGxldCAoKHVybCAoa2lsbC1uZXcgKG9yIHJ2ICIiKSkpKQotICAgICAgICAgICAgICAgICAg ICAgIChtZXNzYWdlICJ1cmw6ICVzIiB1cmwpKSkpKQorICAgImRvY3VtZW50LlVSTCIgJ3h3aWRn ZXQtd2Via2l0LWN1cnJlbnQtdXJsLWNiKSkKIAogOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7OwogKGRlZnVuIHh3aWRnZXQtd2Via2l0LWdldC1zZWxlY3Rpb24gKHByb2MpCkBAIC01MzMs MTAgKzY4Nyw5IEBAIHh3aWRnZXQtd2Via2l0LWdldC1zZWxlY3Rpb24KICAgIHByb2MpKQogCiAo ZGVmdW4geHdpZGdldC13ZWJraXQtY29weS1zZWxlY3Rpb24tYXMta2lsbCAoKQotICAiR2V0IHRo ZSB3ZWJraXQgc2VsZWN0aW9uIGFuZCBwdXQgaXQgb24gdGhlIGtpbGwtcmluZy4iCisgICJHZXQg dGhlIHdlYmtpdCBzZWxlY3Rpb24gYW5kIHB1dCBpdCBvbiB0aGUgYGtpbGwtcmluZycuIgogICAo aW50ZXJhY3RpdmUpCi0gICh4d2lkZ2V0LXdlYmtpdC1nZXQtc2VsZWN0aW9uIChsYW1iZGEgKHNl bGVjdGlvbikgKGtpbGwtbmV3IHNlbGVjdGlvbikpKSkKLQorICAoeHdpZGdldC13ZWJraXQtZ2V0 LXNlbGVjdGlvbiAjJ2tpbGwtbmV3KSkKIAogOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsKIDs7IFh3aWRnZXQgcGxpc3QgbWFuYWdlbWVudCAo c2ltaWxhciB0byB0aGUgcHJvY2VzcyBwbGlzdCBmdW5jdGlvbnMpCmRpZmYgLS1naXQgYS9uZXh0 c3RlcC90ZW1wbGF0ZXMvSW5mby5wbGlzdC5pbiBiL25leHRzdGVwL3RlbXBsYXRlcy9JbmZvLnBs aXN0LmluCmluZGV4IDVkMmViN2RlZjMuLjRkMzc1Mzc0YzggMTAwNjQ0Ci0tLSBhL25leHRzdGVw L3RlbXBsYXRlcy9JbmZvLnBsaXN0LmluCisrKyBiL25leHRzdGVwL3RlbXBsYXRlcy9JbmZvLnBs aXN0LmluCkBAIC02NzUsNSArNjc1LDEzIEBAIGFsb25nIHdpdGggR05VIEVtYWNzLiAgSWYgbm90 LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIAk8L2FycmF5PgogCTxrZXk+ TlNBcHBsZVNjcmlwdEVuYWJsZWQ8L2tleT4KIAk8c3RyaW5nPllFUzwvc3RyaW5nPgorICAgICAg ICA8IS0tIEZJWE1FOiBVbmNvbW1lbnQgZm9yIHh3aWRnZXQgd2Via2l0IHRvIGJyb3dzZSByZW1v dGUgdXJsLAorICAgICAgICAgICAgIGJ1dCB0aGlzIHNldCBubyByZXN0cmljdGlvbiBhdCBhbGwu ICBDb25zdWx0IGFwcGxlJ3MgZG9jdW1lbnRhdGlvbgorICAgICAgICAgICAgIGZvciBkZXRhaWwg aW5mb3JtYXRpb24gYWJvdXQgYE5TQXBwbGljYXRpb25EZWZpbmVkTWFzaycuIC0tPgorICAgICAg ICA8a2V5Pk5TQXBwVHJhbnNwb3J0U2VjdXJpdHk8L2tleT4KKyAgICAgICAgPGRpY3Q+CisgICAg ICAgICAgPGtleT5OU0FsbG93c0FyYml0cmFyeUxvYWRzPC9rZXk+CisgICAgICAgICAgPHRydWUv PgorICAgICAgICA8L2RpY3Q+CiA8L2RpY3Q+CiA8L3BsaXN0PgpkaWZmIC0tZ2l0IGEvc3JjL01h a2VmaWxlLmluIGIvc3JjL01ha2VmaWxlLmluCmluZGV4IDlhOGM5Yzg1ZjAuLjVjYWRiNzFjOTUg MTAwNjQ0Ci0tLSBhL3NyYy9NYWtlZmlsZS5pbgorKysgYi9zcmMvTWFrZWZpbGUuaW4KQEAgLTQw OCw2ICs0MDgsNyBAQCBTT01FX01BQ0hJTkVfT0JKRUNUUyA9CiAgIHh0ZXJtLm8geGZucy5vIHht ZW51Lm8geHNlbGVjdC5vIHhyZGIubyB4c21mbnMubyBmcmluZ2UubyBpbWFnZS5vIFwKICAgZm9u dHNldC5vIGRidXNiaW5kLm8gY3lndzMyLm8gXAogICBuc3Rlcm0ubyBuc2Zucy5vIG5zbWVudS5v IG5zc2VsZWN0Lm8gbnNpbWFnZS5vIG5zZm9udC5vIG1hY2ZvbnQubyBcCisgIG5zeHdpZGdldC5v IFwKICAgdzMyLm8gdzMyY29uc29sZS5vIHczMmZucy5vIHczMmhlYXAubyB3MzJpbmV2dC5vIHcz Mm5vdGlmeS5vIFwKICAgdzMybWVudS5vIHczMnByb2MubyB3MzJyZWcubyB3MzJzZWxlY3QubyB3 MzJ0ZXJtLm8gdzMyeGZucy5vIFwKICAgdzE2c2VsZWN0Lm8gd2lkZ2V0Lm8geGZvbnQubyBmdGZv bnQubyB4ZnRmb250Lm8gZnR4Zm9udC5vIGd0a3V0aWwubyBcCmRpZmYgLS1naXQgYS9zcmMvZW1h Y3MuYyBiL3NyYy9lbWFjcy5jCmluZGV4IDgwOGFiY2Q5YWEuLjhlNzQwMzgxZTEgMTAwNjQ0Ci0t LSBhL3NyYy9lbWFjcy5jCisrKyBiL3NyYy9lbWFjcy5jCkBAIC0xNTMyLDcgKzE1MzIsNiBAQCBV c2luZyBhbiBFbWFjcyBjb25maWd1cmVkIHdpdGggLS13aXRoLXgtdG9vbGtpdD1sdWNpZCBkb2Vz IG5vdCBoYXZlIHRoaXMgcHJvYmxlbQogICAgICAgc3ltc19vZl94Zm5zICgpOwogICAgICAgc3lt c19vZl94bWVudSAoKTsKICAgICAgIHN5bXNfb2ZfZm9udHNldCAoKTsKLSAgICAgIHN5bXNfb2Zf eHdpZGdldCAoKTsKICAgICAgIHN5bXNfb2ZfeHNldHRpbmdzICgpOwogI2lmZGVmIEhBVkVfWF9T TQogICAgICAgc3ltc19vZl94c21mbnMgKCk7CkBAIC0xNjA1LDYgKzE2MDQsMTAgQEAgVXNpbmcg YW4gRW1hY3MgY29uZmlndXJlZCB3aXRoIC0td2l0aC14LXRvb2xraXQ9bHVjaWQgZG9lcyBub3Qg aGF2ZSB0aGlzIHByb2JsZW0KICNlbmRpZiAvKiBIQVZFX1czMk5PVElGWSAqLwogI2VuZGlmIC8q IFdJTkRPV1NOVCAqLwogCisjaWZkZWYgSEFWRV9YV0lER0VUUworICAgICAgc3ltc19vZl94d2lk Z2V0ICgpOworI2VuZGlmIC8qIEhBVkVfWFdJREdFVFMgKi8KKwogICAgICAgc3ltc19vZl90aHJl YWRzICgpOwogICAgICAgc3ltc19vZl9wcm9maWxlciAoKTsKIApkaWZmIC0tZ2l0IGEvc3JjL25z dGVybS5tIGIvc3JjL25zdGVybS5tCmluZGV4IDUwZTA2Yzk0ZDQuLjVlYjRmMGMwMTcgMTAwNjQ0 Ci0tLSBhL3NyYy9uc3Rlcm0ubQorKysgYi9zcmMvbnN0ZXJtLm0KQEAgLTQ4LDYgKzQ4LDcgQEAg VXBkYXRlZCBieSBDaHJpc3RpYW4gTGltcGFjaCAoY2hyaXNAbmljZS5jaCkKICNpbmNsdWRlICJu c3Rlcm0uaCIKICNpbmNsdWRlICJzeXN0aW1lLmgiCiAjaW5jbHVkZSAiY2hhcmFjdGVyLmgiCisj aW5jbHVkZSAieHdpZGdldC5oIgogI2luY2x1ZGUgImZvbnRzZXQuaCIKICNpbmNsdWRlICJjb21w b3NpdGUuaCIKICNpbmNsdWRlICJjY2wuaCIKQEAgLTI0MjksNyArMjQzMCw3IEBAIHNvIHNvbWUg a2V5IHByZXNzZXMgKFRBQikgYXJlIHN3YWxsb3dlZCBieSB0aGUgc3lzdGVtLiAqLwogfQogCiBz dGF0aWMgaW50Ci1ub3RlX21vdXNlX21vdmVtZW50IChzdHJ1Y3QgZnJhbWUgKmZyYW1lLCBDR0Zs b2F0IHgsIENHRmxvYXQgeSkKK25vdGVfbW91c2VfbW92ZW1lbnQgKHN0cnVjdCBmcmFtZSAqZnJh bWUsIENHRmxvYXQgeCwgQ0dGbG9hdCB5LCBCT09MIGRyYWdnaW5nKQogLyogICAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KICAgICAgQ2FsbGVkIGJ5IEVtYWNzVmlldyBvbiBtb3VzZU1vdmVtZW50IGV2ZW50cy4g IFBhc3NlcyBvbgogICAgICB0byBlbWFjcyBtYWluc3RyZWFtIGNvZGUgaWYgd2UgbW92ZWQgb2Zm IG9mIGEgcmVjdCBvZiBpbnRlcmVzdApAQCAtMjQzOCwxNyArMjQzOSwyNCBAQCBzbyBzb21lIGtl eSBwcmVzc2VzIChUQUIpIGFyZSBzd2FsbG93ZWQgYnkgdGhlIHN5c3RlbS4gKi8KIHsKICAgc3Ry dWN0IG5zX2Rpc3BsYXlfaW5mbyAqZHB5aW5mbyA9IEZSQU1FX0RJU1BMQVlfSU5GTyAoZnJhbWUp OwogICBOU1JlY3QgKnI7CisgIEJPT0wgZm9yY2VfdXBkYXRlID0gTk87CiAKIC8vICBOU1RSQUNF ICgibm90ZV9tb3VzZV9tb3ZlbWVudCIpOwogCiAgIGRweWluZm8tPmxhc3RfbW91c2VfbW90aW9u X2ZyYW1lID0gZnJhbWU7CiAgIHIgPSAmZHB5aW5mby0+bGFzdF9tb3VzZV9nbHlwaDsKIAorICAv KiBJZiB0aGUgbGFzdCByZWN0IGlzIHRvbyBsYXJnZSAoZXgsIHh3aWRnZXQgd2Via2l0KSwgdXBk YXRlIGF0CisgICAgIGV2ZXJ5IG1vdmUsIG9yIHJlc2l6aW5nIGJ5IGRyYWdnaW5nIG1vZGVsaW5l IG9yIHZlcnRpY2FsIHNwbGl0IGlzCisgICAgIHZlcnkgaGFyZCB0byBtYWtlIGl0cyB3YXkuICov CisgIGlmIChkcmFnZ2luZyAmJiAoci0+c2l6ZS53aWR0aCA+IDMyIHx8IHItPnNpemUuaGVpZ2h0 ID4gMzIpKQorICAgIGZvcmNlX3VwZGF0ZSA9IFlFUzsKKwogICAvKiBOb3RlLCB0aGlzIGRvZXNu J3QgZ2V0IGNhbGxlZCBmb3IgZW50ZXIvbGVhdmUsIHNpbmNlIHdlIGRvbid0IGhhdmUgYQogICAg ICBwb3NpdGlvbi4gIFRob3NlIGFyZSB0YWtlbiBjYXJlIG9mIGluIHRoZSBjb3JyZXNwb25kaW5n IE5TVmlldyBtZXRob2RzLiAqLwogCiAgIC8qIGhhcyBtb3ZlbWVudCBnb25lIGJleW9uZCBsYXN0 IHJlY3Qgd2Ugd2VyZSB0cmFja2luZz8gKi8KLSAgaWYgKHggPCByLT5vcmlnaW4ueCB8fCB4ID49 IHItPm9yaWdpbi54ICsgci0+c2l6ZS53aWR0aAorICBpZiAoZm9yY2VfdXBkYXRlIHx8IHggPCBy LT5vcmlnaW4ueCB8fCB4ID49IHItPm9yaWdpbi54ICsgci0+c2l6ZS53aWR0aAogICAgICAgfHwg eSA8IHItPm9yaWdpbi55IHx8IHkgPj0gci0+b3JpZ2luLnkgKyByLT5zaXplLmhlaWdodCkKICAg ICB7CiAgICAgICBuc191cGRhdGVfYmVnaW4gKGZyYW1lKTsKQEAgLTQwNjYsNiArNDA3NCwxMCBA QCBvdmVyd3JpdGluZyBjdXJzb3IgKHVzdWFsbHkgd2hlbiBjdXJzb3Igb24gYSB0YWIpICovCiAg ICAgICBuc191bmZvY3VzIChzLT5mKTsKICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBYV0lER0VU X0dMWVBIOgorICAgICAgeF9kcmF3X3h3aWRnZXRfZ2x5cGhfc3RyaW5nIChzKTsKKyAgICAgIGJy ZWFrOworCiAgICAgY2FzZSBTVFJFVENIX0dMWVBIOgogICAgICAgbnNfZHVtcGdseXBoc19zdHJl dGNoIChzKTsKICAgICAgIGJyZWFrOwpAQCAtNjcyNCw2ICs2NzM2LDcgQEAgLSAodm9pZCltb3Vz ZU1vdmVkOiAoTlNFdmVudCAqKWUKICAgc3RydWN0IG5zX2Rpc3BsYXlfaW5mbyAqZHB5aW5mbyA9 IEZSQU1FX0RJU1BMQVlfSU5GTyAoZW1hY3NmcmFtZSk7CiAgIExpc3BfT2JqZWN0IGZyYW1lOwog ICBOU1BvaW50IHB0OworICBCT09MIGRyYWdnaW5nOwogCiAgIE5TVFJBQ0VfV0hFTiAoTlNUUkFD RV9HUk9VUF9FVkVOVFMsICJbRW1hY3NWaWV3IG1vdXNlTW92ZWQ6XSIpOwogCkBAIC02NzY2LDcg KzY3NzksOCBAQCAtICh2b2lkKW1vdXNlTW92ZWQ6IChOU0V2ZW50ICopZQogICAgICAgbGFzdF9t b3VzZV93aW5kb3cgPSB3aW5kb3c7CiAgICAgfQogCi0gIGlmICghbm90ZV9tb3VzZV9tb3ZlbWVu dCAoZW1hY3NmcmFtZSwgcHQueCwgcHQueSkpCisgIGRyYWdnaW5nID0gKGUudHlwZSA9PSBOU0V2 ZW50VHlwZUxlZnRNb3VzZURyYWdnZWQpOworICBpZiAoIW5vdGVfbW91c2VfbW92ZW1lbnQgKGVt YWNzZnJhbWUsIHB0LngsIHB0LnksIGRyYWdnaW5nKSkKICAgICBoZWxwX2VjaG9fc3RyaW5nID0g cHJldmlvdXNfaGVscF9lY2hvX3N0cmluZzsKIAogICBYU0VURlJBTUUgKGZyYW1lLCBlbWFjc2Zy YW1lKTsKZGlmZiAtLWdpdCBhL3NyYy9uc3h3aWRnZXQuaCBiL3NyYy9uc3h3aWRnZXQuaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4zMzlkZjI4NGM5Ci0tLSAvZGV2L251 bGwKKysrIGIvc3JjL25zeHdpZGdldC5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qIEhlYWRlciBmb3Ig TlMgQ29jb2EgcGFydCBvZiB4d2lkZ2V0IGFuZCB3ZWJraXQgd2lkZ2V0LgorCitDb3B5cmlnaHQg KEMpIDIwMTEtMjAxNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworVGhpcyBmaWxl IGlzIHBhcnQgb2YgR05VIEVtYWNzLgorCitHTlUgRW1hY3MgaXMgZnJlZSBzb2Z0d2FyZTogeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQoraXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKK3RoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y IChhdAoreW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCitHTlUgRW1hY3MgaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKK2J1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCitNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CitHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCitZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQorYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uICAqLworCisjaWZuZGVmIE5TWFdJREdFVF9IX0lOQ0xVREVECisjZGVmaW5l IE5TWFdJREdFVF9IX0lOQ0xVREVECisKKy8qIFRoaXMgZmlsZSBjYW4gYmUgaW5jbHVkZWQgZnJv bSBub24tb2JqYyBmaWxlcyB0aHJvdWdoIGB4d2lkZ2V0LmgnICovCisjaWZkZWYgX19PQkpDX18K KyNpbXBvcnQgPEFwcEtpdC9OU1ZpZXcuaD4KKyNlbmRpZgorCisjaW5jbHVkZSAiZGlzcGV4dGVy bi5oIgorI2luY2x1ZGUgImxpc3AuaCIKKyNpbmNsdWRlICJ4d2lkZ2V0LmgiCisKKy8qIHdlYmtp dCAqLworCitib29sIG5zeHdpZGdldF9pc193ZWJfdmlldyAoc3RydWN0IHh3aWRnZXQgKnh3KTsK K3ZvaWQgbnN4d2lkZ2V0X3dlYmtpdF9nb3RvX3VyaSAoc3RydWN0IHh3aWRnZXQgKnh3LCBjb25z dCBjaGFyICp1cmkpOwordm9pZCBuc3h3aWRnZXRfd2Via2l0X3pvb20gKHN0cnVjdCB4d2lkZ2V0 ICp4dywgZG91YmxlIHpvb21fY2hhbmdlKTsKK3ZvaWQgbnN4d2lkZ2V0X3dlYmtpdF9leGVjdXRl X3NjcmlwdCAoc3RydWN0IHh3aWRnZXQgKnh3LCBjb25zdCBjaGFyICpzY3JpcHQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3BfT2JqZWN0IGZ1bik7CisKKy8qIHh3 OiBtb2RlbCAqLworCisjaWZkZWYgX19PQkpDX18KK0BpbnRlcmZhY2UgWHdXaW5kb3cgOiBOU1Zp ZXcKK0Bwcm9wZXJ0eSBzdHJ1Y3QgeHdpZGdldCAqeHc7CitAZW5kCisjZW5kaWYKKwordm9pZCBu c3h3aWRnZXRfaW5pdCAoc3RydWN0IHh3aWRnZXQgKnh3KTsKK3ZvaWQgbnN4d2lkZ2V0X2tpbGwg KHN0cnVjdCB4d2lkZ2V0ICp4dyk7Cit2b2lkIG5zeHdpZGdldF9yZXNpemUgKHN0cnVjdCB4d2lk Z2V0ICp4dyk7CitMaXNwX09iamVjdCBuc3h3aWRnZXRfZ2V0X3NpemUgKHN0cnVjdCB4d2lkZ2V0 ICp4dyk7CisKKy8qIHh2OiB2aWV3ICovCisKKyNpZmRlZiBfX09CSkNfXworQGludGVyZmFjZSBY dldpbmRvdyA6IE5TVmlldworQHByb3BlcnR5IHN0cnVjdCB4d2lkZ2V0ICp4dzsKK0Bwcm9wZXJ0 eSBzdHJ1Y3QgeHdpZGdldF92aWV3ICp4djsKK0BlbmQKKyNlbmRpZgorCit2b2lkIG5zeHdpZGdl dF9pbml0X3ZpZXcgKHN0cnVjdCB4d2lkZ2V0X3ZpZXcgKnh2LAorICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgeHdpZGdldCAqeHd3LAorICAgICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgZ2x5cGhfc3RyaW5nICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeCwg aW50IHkpOwordm9pZCBuc3h3aWRnZXRfZGVsZXRlX3ZpZXcgKHN0cnVjdCB4d2lkZ2V0X3ZpZXcg Knh2KTsKKwordm9pZCBuc3h3aWRnZXRfc2hvd192aWV3IChzdHJ1Y3QgeHdpZGdldF92aWV3ICp4 dik7Cit2b2lkIG5zeHdpZGdldF9oaWRlX3ZpZXcgKHN0cnVjdCB4d2lkZ2V0X3ZpZXcgKnh2KTsK K3ZvaWQgbnN4d2lkZ2V0X3Jlc2l6ZV92aWV3IChzdHJ1Y3QgeHdpZGdldF92aWV3ICp4diwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2lkZ2V0LCBpbnQgaGVpZ2h0KTsKKwordm9p ZCBuc3h3aWRnZXRfbW92ZV92aWV3IChzdHJ1Y3QgeHdpZGdldF92aWV3ICp4diwgaW50IHgsIGlu dCB5KTsKK3ZvaWQgbnN4d2lkZ2V0X21vdmVfd2lkZ2V0X2luX3ZpZXcgKHN0cnVjdCB4d2lkZ2V0 X3ZpZXcgKnh2LCBpbnQgeCwgaW50IHkpOwordm9pZCBuc3h3aWRnZXRfc2V0X25lZWRzZGlzcGxh eSAoc3RydWN0IHh3aWRnZXRfdmlldyAqeHYpOworCisjZW5kaWYgLyogTlNYV0lER0VUX0hfSU5D TFVERUQgKi8KZGlmZiAtLWdpdCBhL3NyYy9uc3h3aWRnZXQubSBiL3NyYy9uc3h3aWRnZXQubQpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi44NmRlZmRiNmMxCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjL25zeHdpZGdldC5tCkBAIC0wLDAgKzEsNTEwIEBACisvKiBOUyBDb2Nv YSBwYXJ0IGltcGxlbWVudGF0aW9uIG9mIHh3aWRnZXQgYW5kIHdlYmtpdCB3aWRnZXQuCisKK0Nv cHlyaWdodCAoQykgMTk4OSwgMTk5Mi0xOTk0LCAyMDA1LTIwMDYsIDIwMDgtMjAxNyBGcmVlIFNv ZnR3YXJlCitGb3VuZGF0aW9uLCBJbmMuCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBFbWFj cy4KKworR05VIEVtYWNzIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKK2l0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cit0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQKK3lvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KKworR05VIEVtYWNzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCitidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKK2Fsb25nIHdpdGggR05VIEVt YWNzLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKwor I2luY2x1ZGUgPGNvbmZpZy5oPgorCisjaW5jbHVkZSAibGlzcC5oIgorI2luY2x1ZGUgImJsb2Nr aW5wdXQuaCIKKyNpbmNsdWRlICJkaXNwZXh0ZXJuLmgiCisjaW5jbHVkZSAiYnVmZmVyLmgiCisj aW5jbHVkZSAiZnJhbWUuaCIKKyNpbmNsdWRlICJuc3Rlcm0uaCIKKyNpbmNsdWRlICJ4d2lkZ2V0 LmgiCisKKy8qIGluIHh3aWRnZXQuYyAqLwordm9pZCBzdG9yZV94d2lkZ2V0X2V2ZW50X3N0cmlu ZyAoc3RydWN0IHh3aWRnZXQgKnh3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgY2hhciAqZXZlbnRuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgY2hhciAqZXZlbnRzdHIpOworCit2b2lkIHN0b3JlX3h3aWRnZXRfanNfY2FsbGJhY2tf ZXZlbnQgKHN0cnVjdCB4d2lkZ2V0ICp4dywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTGlzcF9PYmplY3QgcHJvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTGlzcF9PYmplY3QgYXJndW1lbnQpOworCisjaW1wb3J0IDxBcHBLaXQvQXBwS2l0 Lmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CisKKy8qIFRob3VnaHRzIG9uIE5TIENvY29h IHh3aWRnZXQgYW5kIHdlYmtpdDI6CisKKyAgIFdlYmtpdDIgcHJvY2VzcyBhcmNoaXRlY3R1cmUg c2VlbXMgdG8gYmUgdmVyeSBob3N0aWxlIGZvciBvZmZzY3JlZW4KKyAgIHJlbmRlcmluZyB0ZWNo bmlxdWVzLCB3aGljaCBpcyB1c2VkIGJ5IEdUSyB4d2lnZXQgaW1wbGVtZW50YXRpb247CisgICBT cGVjaWZpY2FsbHkgTlNWaWV3IGxldmVsIHZpZXcgc2hhcmluZyAvIGNvcHlpbmcgaXMgbm90IHdv cmtpbmcuCisKKyAgICoqKiBTbyBvbmx5IG9uZSB2aWV3IGNhbiBiZSBhc3NvY2ljYXRlZCB3aXRo IGEgbW9kZWwuICoqKgorCisgICBXaXRoIHRoaXMgZGVjaXNpb24sIGltcGxlbWVudGF0aW9uIGlz IHBsYWluIGFuZCBjYW4gZXhwZWN0IGJlc3Qgb3V0CisgICBvZiB3ZWJraXQyJ3MgcmF0aW9uYWxl LiAgQnV0IHByb2Nlc3MgYW5kIHNlc3Npb24gc3RydWN0dXJlcyB3aWxsCisgICBkaXZlcmdlIGZy b20gR1RLIHh3aWdldC4gIFRob3VnaCwgY29zbWV0aWNhbGx5IHNpbWlsYXIgdXNhZ2VzIGNhbgor ICAgYmUgcHJlc2VudGVkIGFuZCB3aWxsIGJlIHByZWZlcnJlZCwgaWYgYWdyZWVhYmxlLgorCisg ICBGb3Igb3RoZXIgd2lkZ2V0IHR5cGVzLCBPU1Igc2VlbXMgcG9zc2libGUsIGJ1dCB3aWxsIG5v dCBjYXJlIGZvciBhCisgICB3aGlsZS4KKyovCisKKy8qIHh3aWRnZXQgd2Via2l0ICovCisKK0Bp bnRlcmZhY2UgWHdXZWJWaWV3IDogV0tXZWJWaWV3Cis8V0tOYXZpZ2F0aW9uRGVsZWdhdGUsIFdL VUlEZWxlZ2F0ZSwgV0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4KK0Bwcm9wZXJ0eSBzdHJ1Y3QgeHdp ZGdldCAqeHc7CitAZW5kCitAaW1wbGVtZW50YXRpb24gWHdXZWJWaWV3IDogV0tXZWJWaWV3CisK Ky0gKGlkKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZQorICAgICAgY29uZmlndXJhdGlvbjoo V0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgIHh3aWRn ZXQ6KHN0cnVjdCB4d2lkZ2V0ICopeHcKK3sKKyAgLyogU2NyaXB0IGNvbnRyb2xsZXIgdG8gYWRk IHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIgYW5kIHVzZXIgc2NyaXB0ICovCisgIFdLVXNlckNvbnRl bnRDb250cm9sbGVyICpzY3JpcHRvciA9IFtbV0tVc2VyQ29udGVudENvbnRyb2xsZXIgYWxsb2Nd IGluaXRdOworICBjb25maWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJvbGxlciA9IHNjcmlwdG9y OworCisgIHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhGcmFtZTpmcmFtZSBjb25maWd1cmF0aW9uOmNv bmZpZ3VyYXRpb25dOworICBpZiAoc2VsZikKKyAgICB7CisgICAgICBzZWxmLnh3ID0geHc7Cisg ICAgICBzZWxmLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IHNlbGY7CisgICAgICBzZWxmLlVJRGVsZWdh dGUgPSBzZWxmOworICAgICAgc2VsZi5jdXN0b21Vc2VyQWdlbnQgPQorICAgICAgICBAIk1vemls bGEvNS4wIChNYWNpbnRvc2g7IEludGVsIE1hYyBPUyBYIDEwXzEyXzYpIgorICAgICAgICBAIiBB cHBsZVdlYktpdC82MDMuMy44IChLSFRNTCwgbGlrZSBHZWNrbykiCisgICAgICAgIEAiIFZlcnNp b24vMTEuMC4xIFNhZmFyaS82MDMuMy44IjsKKyAgICAgIFtzY3JpcHRvciBhZGRTY3JpcHRNZXNz YWdlSGFuZGxlcjpzZWxmIG5hbWU6QCJrZXlEb3duIl07CisgICAgICBbc2NyaXB0b3IgYWRkVXNl clNjcmlwdDpbW1dLVXNlclNjcmlwdCBhbGxvY10KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW5pdFdpdGhTb3VyY2U6eHdTY3JpcHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGluamVjdGlvblRpbWU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRFbmQKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZm9yTWFpbkZyYW1lT25seTpOT11dOworICAgIH0KKyAgcmV0dXJuIHNl bGY7Cit9CisKKyNpZiAwCisvKiBOb24gQVJDIC0ganVzdCB0byBjaGVjayBsaWZlY3ljbGUgKi8K Ky0gKHZvaWQpZGVhbGxvYworeworICBOU0xvZyAoQCJYd1dlYlZpZXcgZGVhbGxvYyIpOworICBb c3VwZXIgZGVhbGxvY107Cit9CisjZW5kaWYKKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcg Kil3ZWJWaWV3CitkaWRGaW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9u Cit7CisgIHN0b3JlX3h3aWRnZXRfZXZlbnRfc3RyaW5nIChzZWxmLnh3LCAibG9hZC1jaGFuZ2Vk IiwgIiIpOworfQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKK2RlY2lk ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRp b25BY3Rpb24KK2RlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9s aWN5KSlkZWNpc2lvbkhhbmRsZXIKK3sKKyAgc3dpdGNoIChuYXZpZ2F0aW9uQWN0aW9uLm5hdmln YXRpb25UeXBlKSB7CisgIGNhc2UgV0tOYXZpZ2F0aW9uVHlwZUxpbmtBY3RpdmF0ZWQ6CisgICAg ZGVjaXNpb25IYW5kbGVyIChXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyk7CisgICAgYnJl YWs7CisgIGRlZmF1bHQ6CisgICAgLy8gZGVjaXNpb25IYW5kbGVyIChXS05hdmlnYXRpb25BY3Rp b25Qb2xpY3lDYW5jZWwpOworICAgIGRlY2lzaW9uSGFuZGxlciAoV0tOYXZpZ2F0aW9uQWN0aW9u UG9saWN5QWxsb3cpOworICAgIGJyZWFrOworICB9Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tX ZWJWaWV3ICopd2ViVmlldworZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOihXS05h dmlnYXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZQorZGVjaXNpb25IYW5kbGVyOih2 b2lkICheKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkpZGVjaXNpb25IYW5kbGVyCit7Cisg IGlmICghbmF2aWdhdGlvblJlc3BvbnNlLmNhblNob3dNSU1FVHlwZSkKKyAgICB7CisgICAgICAv KiBUT0RPOiBkb3dubG9hZCB1c2luZyBOU1VSTHh4eD8gKi8KKyAgICB9CisgIGRlY2lzaW9uSGFu ZGxlciAoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvdyk7Cit9CisKKy8qIE5vIGFkZGl0 aW9uYWwgbmV3IHdlYnZpZXcgb3IgZW1hY3Mgd2luZG93IHdpbGwgYmUgY3JlYXRlZAorICAgZm9y IDxhIC4uLiB0YXJnZXQ9Il9ibGFuayI+ICovCistIChXS1dlYlZpZXcgKil3ZWJWaWV3OihXS1dl YlZpZXcgKil3ZWJWaWV3CitjcmVhdGVXZWJWaWV3V2l0aENvbmZpZ3VyYXRpb246KFdLV2ViVmll d0NvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uCisgICBmb3JOYXZpZ2F0aW9uQWN0aW9uOihX S05hdmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uCisgICAgICAgIHdpbmRvd0ZlYXR1 cmVzOihXS1dpbmRvd0ZlYXR1cmVzICopd2luZG93RmVhdHVyZXMKK3sKKyAgaWYgKCFuYXZpZ2F0 aW9uQWN0aW9uLnRhcmdldEZyYW1lLmlzTWFpbkZyYW1lKQorICAgIFt3ZWJWaWV3IGxvYWRSZXF1 ZXN0Om5hdmlnYXRpb25BY3Rpb24ucmVxdWVzdF07CisgIHJldHVybiBuaWw7Cit9CisKKy8qIEJ5 IGZvcndhcmRpbmcgbW91c2UgZXZlbnRzIHRvIGVtYWNzIHZpZXcgKGZyYW1lKQorICAgLSBtb3Vz ZSBjbGljayBpbiB3ZWJ2aWV3IHNlbGVjdHMgdGhlIHdpbmRvdyBjb250YWlucyB0aGUgd2Vidmll dworICAgLSBjb3JyZWN0IG1vdXNlIGhhbmQvYXJyb3cvSS1iZWFtIGlzIGRpc3BsYXkgKFRPRE86 IG5vdCBwZXJmZWN0IHlldCkKKyovCisKKy0gKHZvaWQpbW91c2VEb3duOihOU0V2ZW50ICopZXZl bnQKK3sKKyAgW3NlbGYueHctPnh2LT5lbWFjc3dpbmRvdyBtb3VzZURvd246ZXZlbnRdOworICBb c3VwZXIgbW91c2VEb3duOmV2ZW50XTsKK30KKworLSAodm9pZCltb3VzZVVwOihOU0V2ZW50ICop ZXZlbnQKK3sKKyAgW3NlbGYueHctPnh2LT5lbWFjc3dpbmRvdyBtb3VzZVVwOmV2ZW50XTsKKyAg W3N1cGVyIG1vdXNlVXA6ZXZlbnRdOworfQorCisvKiBCYXNpY2FsbHkgd2Ugd2FudCBrZXlib2Fy ZCBldmVudHMgaGFuZGxlZCBieSBlbWFjcyB1bmxlc3MgYW4gaW5wdXQKKyAgIGVsZW1lbnQgaGFz IGZvY3VzLiAgRXNwZWNpYWxseSwgd2hpbGUgaW5jcmVtZW50YWwgc2VhcmNoLCB3ZSBzZXQKKyAg IGVtYWNzIGFzIGZpcnN0IHJlc3BvbmRlciB0byBhdm9pZCBmb2N1cyBoZWxkIGluIGFuIGlucHV0 IGVsZW1lbnQKKyAgIHdpdGggbWF0Y2hpbmcgdGV4dC4gKi8KKworLSAodm9pZClrZXlEb3duOihO U0V2ZW50ICopZXZlbnQKK3sKKyAgTGlzcF9PYmplY3QgdmFyID0gRmludGVybiAoYnVpbGRfc3Ry aW5nICgiaXNlYXJjaC1tb2RlIiksIFFuaWwpOworICBMaXNwX09iamVjdCB2YWwgPSBidWZmZXJf bG9jYWxfdmFsdWUgKHZhciwgRmN1cnJlbnRfYnVmZmVyICgpKTsKKyAgaWYgKCFFUSAodmFsLCBR dW5ib3VuZCkgJiYgIUVRICh2YWwsIFFuaWwpKQorICAgIHsKKyAgICAgIFtzZWxmLndpbmRvdyBt YWtlRmlyc3RSZXNwb25kZXI6c2VsZi54dy0+eHYtPmVtYWNzd2luZG93XTsKKyAgICAgIFtzZWxm Lnh3LT54di0+ZW1hY3N3aW5kb3cga2V5RG93bjpldmVudF07CisgICAgICByZXR1cm47CisgICAg fQorCisgIFtzZWxmIGV2YWx1YXRlSmF2YVNjcmlwdDpAInh3SGFzRm9jdXMoKSIKKyAgICAgICAg IGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAg aWYgKGVycm9yKQorICAgICAgICBOU0xvZyAoQCJ4d0hhc0ZvY3VzOiAlQCIsIGVycm9yLmxvY2Fs aXplZERlc2NyaXB0aW9uKTsKKyAgICAgIGVsc2UgaWYgKHJlc3VsdCkKKyAgICAgICAgeworICAg ICAgICAgIE5TTnVtYmVyICpoYXNGb2N1cyA9IHJlc3VsdDsgLyogX19OU0NGQm9vbGVhbiAqLwor ICAgICAgICAgIGlmICghaGFzRm9jdXMuYm9vbFZhbHVlKQorICAgICAgICAgICAgW3NlbGYueHct Pnh2LT5lbWFjc3dpbmRvdyBrZXlEb3duOmV2ZW50XTsKKyAgICAgICAgICBlbHNlCisgICAgICAg ICAgICBbc3VwZXIga2V5RG93bjpldmVudF07CisgICAgICAgIH0KKyAgICB9XTsKK30KKworLSAo dm9pZClpbnRlcnByZXRLZXlFdmVudHM6KE5TQXJyYXk8TlNFdmVudCAqPiAqKWV2ZW50QXJyYXkK K3sKKyAgLyogV2Ugc2hvdWxkIGRvIG5vdGhpbmcgYW5kIGRvIG5vdCBmb3J3YXJkIChkZWZhdWx0 IGltcGxlbWVudGF0aW9uCisgICAgIGlmIHdlIG5vdCBvdmVycmlkZSBoZXJlKSB0byBsZXQgZW1h Y3MgY29sbGVjdCBrZXkgZXZlbnRzIGFuZCBhc2sKKyAgICAgaW50ZXJwcmV0S2V5RXZlbnRzIHRv IGl0cyBzdXBlcmNsYXNzICovCit9CisKK3N0YXRpYyBOU1N0cmluZyAqeHdTY3JpcHQ7CisrICh2 b2lkKWluaXRpYWxpemUKK3sKKyAgLyogRmluZCBvdXQgaWYgYW4gaW5wdXQgZWxlbWVudCBoYXMg Zm9jdXMuCisgICAgIE1lc3NhZ2UgdG8gc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB3aGVuICdDLWcn IGtleSBkb3duLiAqLworICBpZiAoIXh3U2NyaXB0KQorICAgIHh3U2NyaXB0ID0KKyAgICAgIEAi ZnVuY3Rpb24geHdIYXNGb2N1cygpIHsiCisgICAgICBAIiAgdmFyIGFlID0gZG9jdW1lbnQuYWN0 aXZlRWxlbWVudDsiCisgICAgICBAIiAgaWYgKGFlKSB7IgorICAgICAgQCIgICAgdmFyIG5hbWUg PSBhZS5ub2RlTmFtZTsiCisgICAgICBAIiAgICByZXR1cm4gbmFtZSA9PSAnSU5QVVQnIHx8IG5h bWUgPT0gJ1RFWFRBUkVBJzsiCisgICAgICBAIiAgfSBlbHNlIHsiCisgICAgICBAIiAgICByZXR1 cm4gZmFsc2U7IgorICAgICAgQCIgIH0iCisgICAgICBAIn0iCisgICAgICBAImZ1bmN0aW9uIHh3 S2V5RG93bihldmVudCkgeyIKKyAgICAgIEAiICBpZiAoZXZlbnQuY3RybEtleSAmJiBldmVudC5r ZXkgPT0gJ2cnKSB7IgorICAgICAgQCIgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMu a2V5RG93bi5wb3N0TWVzc2FnZSgnQy1nJyk7IgorICAgICAgQCIgIH0iCisgICAgICBAIn0iCisg ICAgICBAImRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB4d0tleURvd24pOyIK KyAgICAgIDsKK30KKworLyogQ29uZmlybWluZyB0byBXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyLCBs aXN0ZW5zIGNvbmNlcm5pbmcga2V5RG93biBpbgorICAgd2Via2l0LiBDdXJyZW50bHkgJ0MtZycu ICovCistICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2VyQ29udGVudENvbnRyb2xs ZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIKKyAgICAgIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdl OihXS1NjcmlwdE1lc3NhZ2UgKiltZXNzYWdlCit7CisgIGlmIChbbWVzc2FnZS5ib2R5IGlzRXF1 YWxUb1N0cmluZzpAIkMtZyJdKSAvKiBOU1RhZ2dlZFBvaW50ZXJTdHJpbmcgKi8KKyAgICB7Cisg ICAgICAvKiBKdXN0IGdpdmUgdXAgZm9jdXMsIG5vIHJlbGF5ICJDLWciIHRvIGVtYWNzLCBhbm90 aGVyICJDLWciCisgICAgICAgICBmb2xsb3dzIHdpbGwgYmUgaGFuZGxlZCBieSBlbWFjcy4gKi8K KyAgICAgIFtzZWxmLndpbmRvdyBtYWtlRmlyc3RSZXNwb25kZXI6c2VsZi54dy0+eHYtPmVtYWNz d2luZG93XTsKKyAgICB9Cit9CisKK0BlbmQKKworLyogd2Via2l0IGNvbW1hbmQgKi8KKworYm9v bAorbnN4d2lkZ2V0X2lzX3dlYl92aWV3IChzdHJ1Y3QgeHdpZGdldCAqeHcpCit7CisgIHJldHVy biB4dy0+eHdXaWRnZXQgIT0gTlVMTCAmJgorICAgIFt4dy0+eHdXaWRnZXQgaXNLaW5kT2ZDbGFz czpXS1dlYlZpZXcuY2xhc3NdOworfQorCisvKiBATm90ZSBBVFMgLSBhcHBsaWNhdGlvbiB0cmFu c3BvcnQgc2VjdXJpdHkgaW4gJ0luZm8ucGxpc3QnIG9yCisgICByZW1vdGUgcGFnZXMgd2lsbCBu b3QgbG9hZGVkICovCit2b2lkCituc3h3aWRnZXRfd2Via2l0X2dvdG9fdXJpIChzdHJ1Y3QgeHdp ZGdldCAqeHcsIGNvbnN0IGNoYXIgKnVyaSkKK3sKKyAgWHdXZWJWaWV3ICp4d1dlYlZpZXcgPSAo WHdXZWJWaWV3ICopIHh3LT54d1dpZGdldDsKKyAgTlNTdHJpbmcgKnVybFN0cmluZyA9IFtOU1N0 cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzp1cmldOworICBOU1VSTCAqdXJsID0gW05TVVJMIFVS TFdpdGhTdHJpbmc6dXJsU3RyaW5nXTsKKyAgTlNVUkxSZXF1ZXN0ICp1cmxSZXF1ZXN0ID0gW05T VVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp1cmxdOworICBbeHdXZWJWaWV3IGxvYWRSZXF1ZXN0 OnVybFJlcXVlc3RdOworfQorCit2b2lkCituc3h3aWRnZXRfd2Via2l0X3pvb20gKHN0cnVjdCB4 d2lkZ2V0ICp4dywgZG91YmxlIHpvb21fY2hhbmdlKQoreworICBYd1dlYlZpZXcgKnh3V2ViVmll dyA9IChYd1dlYlZpZXcgKikgeHctPnh3V2lkZ2V0OworICB4d1dlYlZpZXcubWFnbmlmaWNhdGlv biArPSB6b29tX2NoYW5nZTsKKyAgLyogVE9ETzogc2V0TWFnbmlmaWNhdGlvbjpjZW50ZXJlZEF0 UG9pbnQgKi8KK30KKworLyogQnVpbGQgbGlzcCBzdHJpbmcgKi8KK3N0YXRpYyBMaXNwX09iamVj dAorYnVpbGRfc3RyaW5nX3dpdGhfbnNzdHIgKE5TU3RyaW5nICpuc3N0cikKK3sKKyAgY29uc3Qg Y2hhciAqdXRmc3RyID0gW25zc3RyIFVURjhTdHJpbmddOworICBOU1VJbnRlZ2VyIGJ5dGVzID0g W25zc3RyIGxlbmd0aE9mQnl0ZXNVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsK KyAgcmV0dXJuIG1ha2Vfc3RyaW5nICh1dGZzdHIsIGJ5dGVzKTsKK30KKworLyogUmVjdXJzaXZl bHkgY29udmVydCBhbiBvYmpjIG5hdGl2ZSB0eXBlIEphdmFTY3JpcHQgdmFsdWUgdG8gYSBMaXNw CisgICB2YWx1ZS4gIE1vc3RseSBjb3BpZWQgZnJvbSBHVEsgeHdpZGdldCAnd2Via2l0X2pzX3Rv X2xpc3AnICovCitzdGF0aWMgTGlzcF9PYmplY3QKK2pzX3RvX2xpc3AgKGlkIHZhbHVlKQorewor ICBpZiAodmFsdWUgPT0gbmlsIHx8IFt2YWx1ZSBpc0tpbmRPZkNsYXNzOk5TTnVsbC5jbGFzc10p CisgICAgcmV0dXJuIFFuaWw7CisgIGVsc2UgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOk5TU3Ry aW5nLmNsYXNzXSkKKyAgICByZXR1cm4gYnVpbGRfc3RyaW5nX3dpdGhfbnNzdHIgKChOU1N0cmlu ZyAqKSB2YWx1ZSk7CisgIGVsc2UgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOk5TTnVtYmVyLmNs YXNzXSkKKyAgICB7CisgICAgICBOU051bWJlciAqbnNudW0gPSAoTlNOdW1iZXIgKikgdmFsdWU7 CisgICAgICBjaGFyIHR5cGUgPSBuc251bS5vYmpDVHlwZVswXTsKKyAgICAgIGlmICh0eXBlID09 ICdjJykgLyogX19OU0NGQm9vbGVhbiBoYXMgdHlwZSBjaGFyYWN0ZXIgJ2MnICovCisgICAgICAg IHJldHVybiBuc251bS5ib29sVmFsdWU/IFF0IDogUW5pbDsKKyAgICAgIGVsc2UKKyAgICAgICAg eworICAgICAgICAgIGlmICh0eXBlID09ICdpJyB8fCB0eXBlID09ICdsJykKKyAgICAgICAgICAg IHJldHVybiBtYWtlX251bWJlciAobnNudW0ubG9uZ1ZhbHVlKTsKKyAgICAgICAgICBlbHNlIGlm ICh0eXBlID09ICdmJyB8fCB0eXBlID09ICdkJykKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2Zs b2F0IChuc251bS5kb3VibGVWYWx1ZSk7CisgICAgICAgICAgLyogZWxzZSBmYWxsIHRocm91Z2gg Ki8KKyAgICAgICAgfQorICAgIH0KKyAgZWxzZSBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6TlNB cnJheS5jbGFzc10pCisgICAgeworICAgICAgTlNBcnJheSAqbnNhcnIgPSAoTlNBcnJheSAqKSB2 YWx1ZTsKKyAgICAgIEVNQUNTX0lOVCBuID0gbnNhcnIuY291bnQ7CisgICAgICBMaXNwX09iamVj dCBvYmo7CisgICAgICBzdHJ1Y3QgTGlzcF9WZWN0b3IgKnAgPSBhbGxvY2F0ZV92ZWN0b3IgKG4p OworCisgICAgICBmb3IgKHB0cmRpZmZfdCBpID0gMDsgaSA8IG47ICsraSkKKyAgICAgICAgcC0+ Y29udGVudHNbaV0gPSBqc190b19saXNwIChbbnNhcnIgb2JqZWN0QXRJbmRleDppXSk7CisgICAg ICBYU0VUVkVDVE9SIChvYmosIHApOworICAgICAgcmV0dXJuIG9iajsKKyAgICB9CisgIGVsc2Ug aWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOk5TRGljdGlvbmFyeS5jbGFzc10pCisgICAgeworICAg ICAgTlNEaWN0aW9uYXJ5ICpuc2RpY3QgPSAoTlNEaWN0aW9uYXJ5ICopIHZhbHVlOworICAgICAg TlNBcnJheSAqa2V5cyA9IG5zZGljdC5hbGxLZXlzOworICAgICAgcHRyZGlmZl90IG4gPSBrZXlz LmNvdW50OworICAgICAgTGlzcF9PYmplY3Qgb2JqOworICAgICAgc3RydWN0IExpc3BfVmVjdG9y ICpwID0gYWxsb2NhdGVfdmVjdG9yIChuKTsKKworICAgICAgZm9yIChwdHJkaWZmX3QgaSA9IDA7 IGkgPCBuOyArK2kpCisgICAgICAgIHsKKyAgICAgICAgICBOU1N0cmluZyAqcHJvcF9rZXkgPSAo TlNTdHJpbmcgKikgW2tleXMgb2JqZWN0QXRJbmRleDppXTsKKyAgICAgICAgICBpZCBwcm9wX3Zh bHVlID0gW25zZGljdCB2YWx1ZUZvcktleTpwcm9wX2tleV07CisgICAgICAgICAgcC0+Y29udGVu dHNbaV0gPSBGY29ucyAoYnVpbGRfc3RyaW5nX3dpdGhfbnNzdHIgKHByb3Bfa2V5KSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc190b19saXNwIChwcm9wX3ZhbHVlKSk7Cisg ICAgICAgIH0KKyAgICAgIFhTRVRWRUNUT1IgKG9iaiwgcCk7CisgICAgICByZXR1cm4gb2JqOwor ICAgIH0KKyAgTlNMb2cgKEAiVW5oYW5kbGVkIHR5cGUgaW4gamF2YXNjcmlwdCByZXN1bHQiKTsK KyAgcmV0dXJuIFFuaWw7Cit9CisKK3ZvaWQKK25zeHdpZGdldF93ZWJraXRfZXhlY3V0ZV9zY3Jp cHQgKHN0cnVjdCB4d2lkZ2V0ICp4dywgY29uc3QgY2hhciAqc2NyaXB0LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTGlzcF9PYmplY3QgZnVuKQoreworICBOU1N0cmluZyAqamF2 YXNjcmlwdFN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzpzY3JpcHRdOwor ICBYd1dlYlZpZXcgKnh3V2ViVmlldyA9IChYd1dlYlZpZXcgKikgeHctPnh3V2lkZ2V0OworCisg IFt4d1dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OmphdmFzY3JpcHRTdHJpbmcKKyAgICAgICAg ICAgICAgY29tcGxldGlvbkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7Cisg ICAgICBpZiAoZXJyb3IpCisgICAgICAgIHsKKyAgICAgICAgICBOU0xvZyAoQCJldmFsdWF0ZUph dmFTY3JpcHQgZXJyb3IgOiAlQCIsIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKTsKKyAgICAg ICAgICBOU0xvZyAoQCJlcnJvciBzY3JpcHQ9JUAiLCBqYXZhc2NyaXB0U3RyaW5nKTsKKyAgICAg ICAgfQorICAgICAgZWxzZSBpZiAocmVzdWx0ICYmIEZVTkNUSU9OUCAoZnVuKSkKKyAgICAgICAg eworICAgICAgICAgIC8vIE5TTG9nIChAInJlc3VsdD0lQCwgdHlwZT0lQCIsIHJlc3VsdCwgW3Jl c3VsdCBjbGFzc10pOworICAgICAgICAgIExpc3BfT2JqZWN0IGxpc3BfdmFsdWUgPSBqc190b19s aXNwIChyZXN1bHQpOworICAgICAgICAgIHN0b3JlX3h3aWRnZXRfanNfY2FsbGJhY2tfZXZlbnQg KHh3LCBmdW4sIGxpc3BfdmFsdWUpOworICAgICAgICB9CisgICAgfV07Cit9CisKKy8qIHdpbmRv dyBjb250YWluaW5nIGFuIHh3aWRnZXQgKi8KKworQGltcGxlbWVudGF0aW9uIFh3V2luZG93Cist IChCT09MKWlzRmxpcHBlZCB7IHJldHVybiBZRVM7IH0KK0BlbmQKKworLyogeHcgOiB4d2lkZ2V0 IG1vZGVsLCBucyBjb2NvYSBwYXJ0ICovCisKK3ZvaWQKK25zeHdpZGdldF9pbml0KHN0cnVjdCB4 d2lkZ2V0ICp4dykKK3sKKyAgYmxvY2tfaW5wdXQgKCk7CisgIE5TUmVjdCByZWN0ID0gTlNNYWtl UmVjdCAoMCwgMCwgeHctPndpZHRoLCB4dy0+aGVpZ2h0KTsKKyAgeHctPnh3V2lkZ2V0ID0gW1tY d1dlYlZpZXcgYWxsb2NdCisgICAgICAgICAgICAgICAgICAgaW5pdFdpdGhGcmFtZTpyZWN0Cisg ICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbjpbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g YWxsb2NdIGluaXRdCisgICAgICAgICAgICAgICAgICAgICAgICAgeHdpZGdldDp4d107CisgIHh3 LT54d1dpbmRvdyA9IFtbWHdXaW5kb3cgYWxsb2NdCisgICAgICAgICAgICAgICAgICAgaW5pdFdp dGhGcmFtZTpyZWN0XTsKKyAgW3h3LT54d1dpbmRvdyBhZGRTdWJ2aWV3Onh3LT54d1dpZGdldF07 CisgIHh3LT54diA9IE5VTEw7IC8qIGZvciAxIHRvIDEgcmVsYXRpb25zaGlwIG9mIHdlYmtpdDIg Ki8KKyAgdW5ibG9ja19pbnB1dCAoKTsKK30KKwordm9pZAorbnN4d2lkZ2V0X2tpbGwgKHN0cnVj dCB4d2lkZ2V0ICp4dykKK3sKKyAgaWYgKHh3KQorICAgIHsKKyAgICAgIFdLVXNlckNvbnRlbnRD b250cm9sbGVyICpzY3JpcHRvciA9CisgICAgICAgICgoWHdXZWJWaWV3ICopIHh3LT54d1dpZGdl dCkuY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXI7CisgICAgICBbc2NyaXB0b3Ig cmVtb3ZlQWxsVXNlclNjcmlwdHNdOworICAgICAgW3NjcmlwdG9yIHJlbW92ZVNjcmlwdE1lc3Nh Z2VIYW5kbGVyRm9yTmFtZTpAImZvY3VzSGFuZGxlciJdOworICAgICAgW3NjcmlwdG9yIHJlbGVh c2VdOworICAgICAgaWYgKHh3LT54dikKKyAgICAgICAgeHctPnh2LT5tb2RlbCA9IFFuaWw7IC8q IE1ha2Ugc3VyZSByZWxhdGVkIHZpZXcgc3RhbGUgKi8KKyAgICAgIFt4dy0+eHdXaWRnZXQgcmVt b3ZlRnJvbVN1cGVydmlld1dpdGhvdXROZWVkaW5nRGlzcGxheV07CisgICAgICBbeHctPnh3V2lk Z2V0IHJlbGVhc2VdOworICAgICAgW3h3LT54d1dpbmRvdyByZW1vdmVGcm9tU3VwZXJ2aWV3V2l0 aG91dE5lZWRpbmdEaXNwbGF5XTsKKyAgICAgIFt4dy0+eHdXaW5kb3cgcmVsZWFzZV07CisgICAg ICB4dy0+eHdXaWRnZXQgPSBuaWw7CisgICAgfQorfQorCit2b2lkCituc3h3aWRnZXRfcmVzaXpl IChzdHJ1Y3QgeHdpZGdldCAqeHcpCit7CisgIGlmICh4dy0+eHdXaWRnZXQpCisgICAgeworICAg ICAgW3h3LT54d1dpbmRvdyBzZXRGcmFtZVNpemU6TlNNYWtlU2l6ZSh4dy0+d2lkdGgsIHh3LT5o ZWlnaHQpXTsKKyAgICAgIFt4dy0+eHdXaWRnZXQgc2V0RnJhbWVTaXplOk5TTWFrZVNpemUoeHct PndpZHRoLCB4dy0+aGVpZ2h0KV07CisgICAgfQorfQorCitMaXNwX09iamVjdAorbnN4d2lkZ2V0 X2dldF9zaXplIChzdHJ1Y3QgeHdpZGdldCAqeHcpCit7CisgIHJldHVybiBsaXN0MiAobWFrZV9u dW1iZXIgKHh3LT54d1dpZGdldC5mcmFtZS5zaXplLndpZHRoKSwKKyAgICAgICAgICAgICAgICBt YWtlX251bWJlciAoeHctPnh3V2lkZ2V0LmZyYW1lLnNpemUuaGVpZ2h0KSk7Cit9CisKKy8qIHh2 IDogeHdpZGdldCB2aWV3LCBucyBjb2NvYSBwYXJ0ICovCisKK0BpbXBsZW1lbnRhdGlvbiBYdldp bmRvdyA6IE5TVmlldworLSAoQk9PTClpc0ZsaXBwZWQgeyByZXR1cm4gWUVTOyB9CitAZW5kCisK K3ZvaWQKK25zeHdpZGdldF9pbml0X3ZpZXcgKHN0cnVjdCB4d2lkZ2V0X3ZpZXcgKnh2LAorICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IHh3aWRnZXQgKnh3LAorICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IGdseXBoX3N0cmluZyAqcywKKyAgICAgICAgICAgICAgICAgICAgIGludCB4LCBp bnQgeSkKK3sKKyAgLyogJ3hfZHJhd194d2lkZ2V0X2dseXBoX3N0cmluZycgd2lsbCBjYWxjdWxh dGUgY29ycmVjdCBwb3NpdGlvbiBhbmQKKyAgICAgc2l6ZSBvZiBjbGlwIHRvIGRyYXcgaW4gZW1h Y3MgYnVmZmVyIHdpbmRvdy4gVGh1cywganVzdCBiZWdpbiBhdAorICAgICBvcmlnaW4gd2l0aCBu byBjcm9wLiAqLworICB4di0+eCA9IHg7CisgIHh2LT55ID0geTsKKyAgeHYtPmNsaXBfbGVmdCA9 IDA7CisgIHh2LT5jbGlwX3JpZ2h0ID0geHctPndpZHRoOworICB4di0+Y2xpcF90b3AgPSAwOwor ICB4di0+Y2xpcF9ib3R0b20gPSB4dy0+aGVpZ2h0OworCisgIHh2LT54dldpbmRvdyA9IFtbWHZX aW5kb3cgYWxsb2NdCisgICAgICAgICAgICAgICAgICAgaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0 ICh4LCB5LCB4dy0+d2lkdGgsIHh3LT5oZWlnaHQpXTsKKyAgeHYtPnh2V2luZG93Lnh3ID0geHc7 CisgIHh2LT54dldpbmRvdy54diA9IHh2OworCisgIHh3LT54diA9IHh2OyAvKiBGb3IgMSB0byAx IHJlbGF0aW9uc2hpcCBvZiB3ZWJraXQyICovCisgIFt4di0+eHZXaW5kb3cgYWRkU3Vidmlldzp4 dy0+eHdXaW5kb3ddOworCisgIHh2LT5lbWFjc3dpbmRvdyA9IEZSQU1FX05TX1ZJRVcgKHMtPmYp OworICBbeHYtPmVtYWNzd2luZG93IGFkZFN1YnZpZXc6eHYtPnh2V2luZG93XTsKK30KKwordm9p ZAorbnN4d2lkZ2V0X2RlbGV0ZV92aWV3IChzdHJ1Y3QgeHdpZGdldF92aWV3ICp4dikKK3sKKyAg aWYgKCFFUSAoeHYtPm1vZGVsLCBRbmlsKSkKKyAgICB7CisgICAgICBzdHJ1Y3QgeHdpZGdldCAq eHcgPSBYWFdJREdFVCAoeHYtPm1vZGVsKTsKKyAgICAgIFt4dy0+eHdXaW5kb3cgcmVtb3ZlRnJv bVN1cGVydmlld1dpdGhvdXROZWVkaW5nRGlzcGxheV07CisgICAgICB4dy0+eHYgPSBOVUxMOyAv KiBOb3cgbW9kZWwgaGFzIG5vIHZpZXcgKi8KKyAgICB9CisgIFt4di0+eHZXaW5kb3cgcmVtb3Zl RnJvbVN1cGVydmlld1dpdGhvdXROZWVkaW5nRGlzcGxheV07CisgIFt4di0+eHZXaW5kb3cgcmVs ZWFzZV07Cit9CisKK3ZvaWQKK25zeHdpZGdldF9zaG93X3ZpZXcgKHN0cnVjdCB4d2lkZ2V0X3Zp ZXcgKnh2KQoreworICB4di0+aGlkZGVuID0gTk87CisgIFt4di0+eHZXaW5kb3cgc2V0RnJhbWVP cmlnaW46TlNNYWtlUG9pbnQoeHYtPnggKyB4di0+Y2xpcF9sZWZ0LAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHh2LT55ICsgeHYtPmNsaXBfdG9wKV07Cit9CisK K3ZvaWQKK25zeHdpZGdldF9oaWRlX3ZpZXcgKHN0cnVjdCB4d2lkZ2V0X3ZpZXcgKnh2KQorewor ICB4di0+aGlkZGVuID0gWUVTOworICBbeHYtPnh2V2luZG93IHNldEZyYW1lT3JpZ2luOk5TTWFr ZVBvaW50KDEwMDAwLCAxMDAwMCldOworfQorCit2b2lkCituc3h3aWRnZXRfcmVzaXplX3ZpZXcg KHN0cnVjdCB4d2lkZ2V0X3ZpZXcgKnh2LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7CisgIFt4 di0+eHZXaW5kb3cgc2V0RnJhbWVTaXplOk5TTWFrZVNpemUod2lkdGgsIGhlaWdodCldOworfQor Cit2b2lkCituc3h3aWRnZXRfbW92ZV92aWV3IChzdHJ1Y3QgeHdpZGdldF92aWV3ICp4diwgaW50 IHgsIGludCB5KQoreworICBbeHYtPnh2V2luZG93IHNldEZyYW1lT3JpZ2luOk5TTWFrZVBvaW50 ICh4LCB5KV07Cit9CisKKy8qIE1vdmUgbW9kZWwgd2luZG93IGluIGNvbnRhaW5lciAodmlldyB3 aW5kb3cpICovCit2b2lkCituc3h3aWRnZXRfbW92ZV93aWRnZXRfaW5fdmlldyAoc3RydWN0IHh3 aWRnZXRfdmlldyAqeHYsIGludCB4LCBpbnQgeSkKK3sKKyAgc3RydWN0IHh3aWRnZXQgKnh3dyA9 IHh2LT54dldpbmRvdy54dzsKKyAgW3h3dy0+eHdXaW5kb3cgc2V0RnJhbWVPcmlnaW46TlNNYWtl UG9pbnQgKHgsIHkpXTsKK30KKwordm9pZAorbnN4d2lkZ2V0X3NldF9uZWVkc2Rpc3BsYXkgKHN0 cnVjdCB4d2lkZ2V0X3ZpZXcgKnh2KQoreworICB4di0+eHZXaW5kb3cubmVlZHNEaXNwbGF5ID0g WUVTOworfQpkaWZmIC0tZ2l0IGEvc3JjL3h3aWRnZXQuYyBiL3NyYy94d2lkZ2V0LmMKaW5kZXgg YTY3ZGMwZWNmNC4uOTQxNDdjYTIxNiAxMDA2NDQKLS0tIGEvc3JjL3h3aWRnZXQuYworKysgYi9z cmMveHdpZGdldC5jCkBAIC0xOCwxNyArMTgsMjYgQEAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIGFsb25nIHdpdGggR05V IEVtYWNzLiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICov CiAKICNpbmNsdWRlIDxjb25maWcuaD4KKyNpbmNsdWRlIDxzdGRpby5oPiAvKiBGSVhNRTogRW1h Y3MgZXJyb3I/IG1lc3NhZ2U/IGluc3RlYWQgb2YgcHJpbnRmICovCiAKICNpbmNsdWRlICJ4d2lk Z2V0LmgiCiAKICNpbmNsdWRlICJsaXNwLmgiCiAjaW5jbHVkZSAiYmxvY2tpbnB1dC5oIgorI2lu Y2x1ZGUgImRpc3BleHRlcm4uaCIKICNpbmNsdWRlICJmcmFtZS5oIgogI2luY2x1ZGUgImtleWJv YXJkLmgiCiAjaW5jbHVkZSAiZ3RrdXRpbC5oIgorI2luY2x1ZGUgInRlcm1ob29rcy5oIgorI2lu Y2x1ZGUgIndpbmRvdy5oIgogCisvKiBJbmNsdWRlIHh3aWRnZXQgYm90dG9tIGVuZCBoZWFkZXJz ICovCisjaWYgZGVmaW5lZCAoVVNFX0dUSykKICNpbmNsdWRlIDx3ZWJraXQyL3dlYmtpdDIuaD4K ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Lmg+CisjZWxpZiBkZWZpbmVkIChI QVZFX05TKQorI2luY2x1ZGUgIm5zeHdpZGdldC5oIgorI2VuZGlmCiAKIHN0YXRpYyBzdHJ1Y3Qg eHdpZGdldCAqCiBhbGxvY2F0ZV94d2lkZ2V0ICh2b2lkKQpAQCAtNDgsNiArNTcsNyBAQCBhbGxv Y2F0ZV94d2lkZ2V0X3ZpZXcgKHZvaWQpCiAKIHN0YXRpYyBzdHJ1Y3QgeHdpZGdldF92aWV3ICp4 d2lkZ2V0X3ZpZXdfbG9va3VwIChzdHJ1Y3QgeHdpZGdldCAqLAogCQkJCQkJIHN0cnVjdCB3aW5k b3cgKik7CisjaWYgZGVmaW5lZCAoVVNFX0dUSykKIHN0YXRpYyB2b2lkIHdlYmtpdF92aWV3X2xv YWRfY2hhbmdlZF9jYiAoV2ViS2l0V2ViVmlldyAqLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBXZWJLaXRMb2FkRXZlbnQsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGdwb2ludGVyKTsKQEAgLTYxLDYgKzcxLDcgQEAgd2Via2l0X2Rl Y2lkZV9wb2xpY3lfY2IgKFdlYktpdFdlYlZpZXcgKiwKICAgICAgICAgICAgICAgICAgICAgICAg ICBXZWJLaXRQb2xpY3lEZWNpc2lvbiAqLAogICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktp dFBvbGljeURlY2lzaW9uVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlcik7 CisjZW5kaWYKIAogCiBERUZVTiAoIm1ha2UteHdpZGdldCIsCkBAIC05MiwxMCArMTAzLDExIEBA IFJldHVybnMgdGhlIG5ld2x5IGNvbnN0cnVjdGVkIHh3aWRnZXQsIG9yIG5pbCBpZiBjb25zdHJ1 Y3Rpb24gZmFpbHMuICAqLykKICAgeHctPmtpbGxfd2l0aG91dF9xdWVyeSA9IGZhbHNlOwogICBY U0VUWFdJREdFVCAodmFsLCB4dyk7CiAgIFZ4d2lkZ2V0X2xpc3QgPSBGY29ucyAodmFsLCBWeHdp ZGdldF9saXN0KTsKLSAgeHctPndpZGdldHdpbmRvd19vc3IgPSBOVUxMOwotICB4dy0+d2lkZ2V0 X29zciA9IE5VTEw7CiAgIHh3LT5wbGlzdCA9IFFuaWw7CiAKKyNpZiBkZWZpbmVkIChVU0VfR1RL KQorICB4dy0+d2lkZ2V0d2luZG93X29zciA9IE5VTEw7CisgIHh3LT53aWRnZXRfb3NyID0gTlVM TDsKICAgaWYgKEVRICh4dy0+dHlwZSwgUXdlYmtpdCkpCiAgICAgewogICAgICAgYmxvY2tfaW5w dXQgKCk7CkBAIC0xNTAsNiArMTYyLDkgQEAgUmV0dXJucyB0aGUgbmV3bHkgY29uc3RydWN0ZWQg eHdpZGdldCwgb3IgbmlsIGlmIGNvbnN0cnVjdGlvbiBmYWlscy4gICovKQogCiAgICAgICB1bmJs b2NrX2lucHV0ICgpOwogICAgIH0KKyNlbGlmIGRlZmluZWQgKEhBVkVfTlMpCisgIG5zeHdpZGdl dF9pbml0ICh4dyk7CisjZW5kaWYKIAogICByZXR1cm4gdmFsOwogfQpAQCAtMTg1LDYgKzIwMCw3 IEBAIHh3aWRnZXRfaGlkZGVuIChzdHJ1Y3QgeHdpZGdldF92aWV3ICp4dikKICAgcmV0dXJuIHh2 LT5oaWRkZW47CiB9CiAKKyNpZiBkZWZpbmVkIChVU0VfR1RLKQogc3RhdGljIHZvaWQKIHh3aWRn ZXRfc2hvd192aWV3IChzdHJ1Y3QgeHdpZGdldF92aWV3ICp4dikKIHsKQEAgLTIyMyw4ICsyMzks OSBAQCBvZmZzY3JlZW5fZGFtYWdlX2V2ZW50IChHdGtXaWRnZXQgKndpZGdldCwgR2RrRXZlbnQg KmV2ZW50LAogCiAgIHJldHVybiBGQUxTRTsKIH0KKyNlbmRpZiAvKiBVU0VfR1RLICovCiAKLXN0 YXRpYyB2b2lkCit2b2lkCiBzdG9yZV94d2lkZ2V0X2V2ZW50X3N0cmluZyAoc3RydWN0IHh3aWRn ZXQgKnh3LCBjb25zdCBjaGFyICpldmVudG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgY2hhciAqZXZlbnRzdHIpCiB7CkBAIC0yMzgsNyArMjU1LDcgQEAgc3RvcmVfeHdp ZGdldF9ldmVudF9zdHJpbmcgKHN0cnVjdCB4d2lkZ2V0ICp4dywgY29uc3QgY2hhciAqZXZlbnRu YW1lLAogICBrYmRfYnVmZmVyX3N0b3JlX2V2ZW50ICgmZXZlbnQpOwogfQogCi1zdGF0aWMgdm9p ZAordm9pZAogc3RvcmVfeHdpZGdldF9qc19jYWxsYmFja19ldmVudCAoc3RydWN0IHh3aWRnZXQg Knh3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzcF9PYmplY3QgcHJvYywK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3BfT2JqZWN0IGFyZ3VtZW50KQpA QCAtMjU0LDYgKzI3MSw3IEBAIHN0b3JlX3h3aWRnZXRfanNfY2FsbGJhY2tfZXZlbnQgKHN0cnVj dCB4d2lkZ2V0ICp4dywKIH0KIAogCisjaWYgZGVmaW5lZCAoVVNFX0dUSykKIHZvaWQKIHdlYmtp dF92aWV3X2xvYWRfY2hhbmdlZF9jYiAoV2ViS2l0V2ViVmlldyAqd2Via2l0d2VidmlldywKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0TG9hZEV2ZW50IGxvYWRfZXZlbnQsCkBA IC0zODksOSArNDA3LDggQEAgd2Via2l0X2phdmFzY3JpcHRfZmluaXNoZWRfY2IgKEdPYmplY3Qg ICAgICAqd2VidmlldywKICAgICAvKiBSZWdpc3RlciBhbiB4d2lkZ2V0IGV2ZW50IGhlcmUsIHdo aWNoIHRoZW4gcnVucyB0aGUgY2FsbGJhY2suCiAgICAgICAgVGhpcyBlbnN1cmVzIHRoYXQgdGhl IGNhbGxiYWNrIHJ1bnMgaW4gc3luYyB3aXRoIHRoZSBFbWFjcwogICAgICAgIGV2ZW50IGxvb3Au ICAqLwotICAgIC8qIEZJWE1FOiBUaGlzIG1pZ2h0IGxlYWQgdG8gZGlzYXN0ZXIgaWYgTElTUF9D QUxMQkFDS+KAmXMgb2JqZWN0Ci0gICAgICAgd2FzIGdhcmJhZ2UgY29sbGVjdGVkIGJlZm9yZSBu b3cuICBTZWUgdGhlIEZJWE1FIGluCi0gICAgICAgRnh3aWRnZXRfd2Via2l0X2V4ZWN1dGVfc2Ny aXB0LiAgKi8KKyAgICAvKiBMSVNQX0NBTExCQUNLIG11c3Qgbm90IGJlIGdhcmJhZ2UgY29sbGVj dGVkIHVwIHRvIGhlcmUuICBTZWUKKyAgICAgICBjb21tZW50cyBpbiBGeHdpZGdldF93ZWJraXRf ZXhlY3V0ZV9zY3JpcHQuICovCiAgICAgc3RvcmVfeHdpZGdldF9qc19jYWxsYmFja19ldmVudCAo eHcsIFhJTCAoKGludHB0cl90KSBsaXNwX2NhbGxiYWNrKSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsaXNwX3ZhbHVlKTsKIH0KQEAgLTUwMCw2ICs1MTcsNyBAQCB4d2lk Z2V0X29zcl9ldmVudF9zZXRfZW1iZWRkZXIgKEd0a1dpZGdldCAqd2lkZ2V0LCBHZGtFdmVudCAq ZXZlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3RrX3dpZGdldF9n ZXRfd2luZG93ICh4di0+d2lkZ2V0KSk7CiAgIHJldHVybiBGQUxTRTsKIH0KKyNlbmRpZiAvKiBV U0VfR1RLICovCiAKIAogLyogSW5pdGlhbGl6ZXMgYW5kIGRvZXMgaW5pdGlhbCBwbGFjZW1lbnQg b2YgYW4geHdpZGdldCB2aWV3IG9uIHNjcmVlbi4gICovCkBAIC01MTcsNiArNTM1LDcgQEAgeHdp ZGdldF9pbml0X3ZpZXcgKHN0cnVjdCB4d2lkZ2V0ICp4d3csCiAgIFhTRVRXSU5ET1cgKHh2LT53 LCBzLT53KTsKICAgWFNFVFhXSURHRVQgKHh2LT5tb2RlbCwgeHd3KTsKIAorI2lmIGRlZmluZWQg KFVTRV9HVEspCiAgIGlmIChFUSAoeHd3LT50eXBlLCBRd2Via2l0KSkKICAgICB7CiAgICAgICB4 di0+d2lkZ2V0ID0gZ3RrX2RyYXdpbmdfYXJlYV9uZXcgKCk7CkBAIC01NzQsNiArNTkzLDkgQEAg eHdpZGdldF9pbml0X3ZpZXcgKHN0cnVjdCB4d2lkZ2V0ICp4d3csCiAgIHh2LT54ID0geDsKICAg eHYtPnkgPSB5OwogICBndGtfd2lkZ2V0X3Nob3dfYWxsICh4di0+d2lkZ2V0d2luZG93KTsKKyNl bGlmIGRlZmluZWQgKEhBVkVfTlMpCisgIG5zeHdpZGdldF9pbml0X3ZpZXcgKHh2LCB4d3csIHMs IHgsIHkpOworI2VuZGlmCiAKICAgcmV0dXJuIHh2OwogfQpAQCAtNTg2LDI0ICs2MDgsNTkgQEAg eF9kcmF3X3h3aWRnZXRfZ2x5cGhfc3RyaW5nIChzdHJ1Y3QgZ2x5cGhfc3RyaW5nICpzKQogICAg ICBpbml0aWFsaXphdGlvbi4gICovCiAgIHN0cnVjdCB4d2lkZ2V0ICp4d3cgPSBzLT54d2lkZ2V0 OwogICBzdHJ1Y3QgeHdpZGdldF92aWV3ICp4diA9IHh3aWRnZXRfdmlld19sb29rdXAgKHh3dywg cy0+dyk7CisgIGludCB0ZXh0X2FyZWFfeCwgdGV4dF9hcmVhX3ksIHRleHRfYXJlYV93aWR0aCwg dGV4dF9hcmVhX2hlaWdodDsKICAgaW50IGNsaXBfcmlnaHQ7CiAgIGludCBjbGlwX2JvdHRvbTsK ICAgaW50IGNsaXBfdG9wOwogICBpbnQgY2xpcF9sZWZ0OwogCiAgIGludCB4ID0gcy0+eDsKLSAg aW50IHkgPSBzLT55ICsgKHMtPmhlaWdodCAvIDIpIC0gKHh3dy0+aGVpZ2h0IC8gMik7CisgIGlu dCB5ID0gcy0+eTsKIAogICAvKiBEbyBpbml0aWFsaXphdGlvbiBoZXJlIGluIHRoZSBkaXNwbGF5 IGxvb3AgYmVjYXVzZSB0aGVyZSBpcyBubwogICAgICBvdGhlciB0aW1lIHRvIGtub3cgdGhpbmdz IGxpa2Ugd2luZG93IHBsYWNlbWVudCBldGMuICBEbyBub3QKICAgICAgY3JlYXRlIGEgbmV3IHZp ZXcgaWYgd2UgaGF2ZSBmb3VuZCBvbmUgdGhhdCBpcyB1c2FibGUuICAqLworI2lmIGRlZmluZWQg KFVTRV9HVEspCiAgIGlmICgheHYpCiAgICAgeHYgPSB4d2lkZ2V0X2luaXRfdmlldyAoeHd3LCBz LCB4LCB5KTsKLQotICBpbnQgdGV4dF9hcmVhX3gsIHRleHRfYXJlYV95LCB0ZXh0X2FyZWFfd2lk dGgsIHRleHRfYXJlYV9oZWlnaHQ7CisjZWxpZiBkZWZpbmVkIChIQVZFX05TKQorICBpZiAoIXh2 KQorICAgIHsKKyAgICAgIC8qIEVuZm9yY2UgMSB0byAxLCBtb2RlbCBhbmQgdmlldyBmb3IgTlMg Q29jb2Egd2Via2l0MiAqLworICAgICAgaWYgKHh3dy0+eHYpCisgICAgICAgIHsKKyAgICAgICAg ICBpZiAoeHdpZGdldF9oaWRkZW4gKHh3dy0+eHYpKQorICAgICAgICAgICAgeworICAgICAgICAg ICAgICBMaXNwX09iamVjdCB4dmw7CisgICAgICAgICAgICAgIFhTRVRYV0lER0VUX1ZJRVcgKHh2 bCwgeHd3LT54dik7CisgICAgICAgICAgICAgIEZkZWxldGVfeHdpZGdldF92aWV3ICh4dmwpOwor ICAgICAgICAgICAgfQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgbWVzc2FnZSAoIllvdSBjYW4ndCBzaGFyZSBhbiB4d2lkZ2V0ICh3ZWJraXQyKSBhbW9uZyB3 aW5kb3dzLiIpOworICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAg IH0KKyAgICAgIHh2ID0geHdpZGdldF9pbml0X3ZpZXcgKHh3dywgcywgeCwgeSk7CisgICAgfQor I2VuZGlmCiAKICAgd2luZG93X2JveCAocy0+dywgVEVYVF9BUkVBLCAmdGV4dF9hcmVhX3gsICZ0 ZXh0X2FyZWFfeSwKICAgICAgICAgICAgICAgJnRleHRfYXJlYV93aWR0aCwgJnRleHRfYXJlYV9o ZWlnaHQpOworCisgIC8qIFJlc2l6ZSB4d2lkZ2V0IHdlYmtpdCBpZiBpdHMgY29udGFpbmVyIHdp bmRvdyBzaXplIGlzIGNoYW5nZWQgaW4KKyAgICAgc29tZSB3YXlzLCBmb3IgZXhhbXBsZSwgYSBi dWZmZXIgYmVjYW1lIGhpZGRlbiBpbiBzbWFsbCBzcGxpdAorICAgICB3aW5kb3csIHRoZW4gaXQg Y2FuIGFwcGVhciBmcm9udCBpbiBtZXJnZWQgd2hvbGUgd2luZG93LiAqLworICBpZiAoRVEgKHh3 dy0+dHlwZSwgUXdlYmtpdCkKKyAgICAgICYmICh4d3ctPndpZHRoICE9IHRleHRfYXJlYV93aWR0 aCB8fCB4d3ctPmhlaWdodCAhPSB0ZXh0X2FyZWFfaGVpZ2h0KSkKKyAgICB7CisgICAgICBMaXNw X09iamVjdCB4d2w7CisgICAgICBYU0VUWFdJREdFVCAoeHdsLCB4d3cpOworICAgICAgRnh3aWRn ZXRfcmVzaXplICh4d2wsCisgICAgICAgICAgICAgICAgICAgICAgIG1ha2VfbnVtYmVyICh0ZXh0 X2FyZWFfd2lkdGgpLAorICAgICAgICAgICAgICAgICAgICAgICBtYWtlX251bWJlciAodGV4dF9h cmVhX2hlaWdodCkpOworICAgIH0KKwogICBjbGlwX2xlZnQgPSBtYXggKDAsIHRleHRfYXJlYV94 IC0geCk7CiAgIGNsaXBfcmlnaHQgPSBtYXggKGNsaXBfbGVmdCwKIAkJICAgIG1pbiAoeHd3LT53 aWR0aCwgdGV4dF9hcmVhX3ggKyB0ZXh0X2FyZWFfd2lkdGggLSB4KSk7CkBAIC02MjYsOCArNjgz LDE0IEBAIHhfZHJhd194d2lkZ2V0X2dseXBoX3N0cmluZyAoc3RydWN0IGdseXBoX3N0cmluZyAq cykKIAogICAvKiBIYXMgaXQgbW92ZWQ/ICAqLwogICBpZiAobW92ZWQpCi0gICAgZ3RrX2ZpeGVk X21vdmUgKEdUS19GSVhFRCAoRlJBTUVfR1RLX1dJREdFVCAocy0+ZikpLAotCQkgICAgeHYtPndp ZGdldHdpbmRvdywgeCArIGNsaXBfbGVmdCwgeSArIGNsaXBfdG9wKTsKKyAgICB7CisjaWYgZGVm aW5lZCAoVVNFX0dUSykKKyAgICAgIGd0a19maXhlZF9tb3ZlIChHVEtfRklYRUQgKEZSQU1FX0dU S19XSURHRVQgKHMtPmYpKSwKKyAgICAgICAgICAgICAgICAgICAgICB4di0+d2lkZ2V0d2luZG93 LCB4ICsgY2xpcF9sZWZ0LCB5ICsgY2xpcF90b3ApOworI2VsaWYgZGVmaW5lZCAoSEFWRV9OUykK KyAgICAgIG5zeHdpZGdldF9tb3ZlX3ZpZXcgKHh2LCB4ICsgY2xpcF9sZWZ0LCB5ICsgY2xpcF90 b3ApOworI2VuZGlmCisgICAgfQogCiAgIC8qIENsaXAgdGhlIHdpZGdldCB3aW5kb3cgaWYgc29t ZSBwYXJ0cyBoYXBwZW4gdG8gYmUgb3V0c2lkZQogICAgICBkcmF3YWJsZSBhcmVhLiAgQW4gRW1h Y3Mgd2luZG93IGlzIG5vdCBhIGd0ayB3aW5kb3cuICBBIGd0ayB3aW5kb3cKQEAgLTYzOCwxMCAr NzAxLDE2IEBAIHhfZHJhd194d2lkZ2V0X2dseXBoX3N0cmluZyAoc3RydWN0IGdseXBoX3N0cmlu ZyAqcykKICAgICAgIHx8IHh2LT5jbGlwX2JvdHRvbSAhPSBjbGlwX2JvdHRvbQogICAgICAgfHwg eHYtPmNsaXBfdG9wICE9IGNsaXBfdG9wIHx8IHh2LT5jbGlwX2xlZnQgIT0gY2xpcF9sZWZ0KQog ICAgIHsKKyNpZiBkZWZpbmVkIChVU0VfR1RLKQogICAgICAgZ3RrX3dpZGdldF9zZXRfc2l6ZV9y ZXF1ZXN0ICh4di0+d2lkZ2V0d2luZG93LCBjbGlwX3JpZ2h0IC0gY2xpcF9sZWZ0LAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwX2JvdHRvbSAtIGNsaXBfdG9wKTsKICAg ICAgIGd0a19maXhlZF9tb3ZlIChHVEtfRklYRUQgKHh2LT53aWRnZXR3aW5kb3cpLCB4di0+d2lk Z2V0LCAtY2xpcF9sZWZ0LAogICAgICAgICAgICAgICAgICAgICAgIC1jbGlwX3RvcCk7CisjZWxp ZiBkZWZpbmVkIChIQVZFX05TKQorICAgICAgbnN4d2lkZ2V0X3Jlc2l6ZV92aWV3ICh4diwgY2xp cF9yaWdodCAtIGNsaXBfbGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpcF9i b3R0b20gLSBjbGlwX3RvcCk7CisgICAgICBuc3h3aWRnZXRfbW92ZV93aWRnZXRfaW5fdmlldyAo eHYsIC1jbGlwX2xlZnQsIC1jbGlwX3RvcCk7CisjZW5kaWYKIAogICAgICAgeHYtPmNsaXBfcmln aHQgPSBjbGlwX3JpZ2h0OwogICAgICAgeHYtPmNsaXBfYm90dG9tID0gY2xpcF9ib3R0b207CkBA IC02NTUsMTggKzcyNCwzMiBAQCB4X2RyYXdfeHdpZGdldF9nbHlwaF9zdHJpbmcgKHN0cnVjdCBn bHlwaF9zdHJpbmcgKnMpCiAgICAgIHh3aWRnZXRzIGJhY2tncm91bmQuICBJdCdzIGp1c3QgYSB2 aXN1YWwgZ2xpdGNoIHRob3VnaC4gICovCiAgIGlmICgheHdpZGdldF9oaWRkZW4gKHh2KSkKICAg ICB7CisjaWYgZGVmaW5lZCAoVVNFX0dUSykKICAgICAgIGd0a193aWRnZXRfcXVldWVfZHJhdyAo eHYtPndpZGdldHdpbmRvdyk7CiAgICAgICBndGtfd2lkZ2V0X3F1ZXVlX2RyYXcgKHh2LT53aWRn ZXQpOworI2VsaWYgZGVmaW5lZCAoSEFWRV9OUykKKyAgICAgIG5zeHdpZGdldF9zZXRfbmVlZHNk aXNwbGF5ICh4dik7CisjZW5kaWYKICAgICB9CiB9CiAKLS8qIE1hY3JvIHRoYXQgY2hlY2tzIFdF QktJVF9JU19XRUJfVklFVyAoeHctPndpZGdldF9vc3IpIGZpcnN0LiAgKi8KK3N0YXRpYyBib29s Cit4d2lkZ2V0X2lzX3dlYl92aWV3IChzdHJ1Y3QgeHdpZGdldCAqeHcpCit7CisjaWYgZGVmaW5l ZCAoVVNFX0dUSykKKyAgcmV0dXJuIHh3LT53aWRnZXRfb3NyICE9IE5VTEwgJiYgV0VCS0lUX0lT X1dFQl9WSUVXICh4dy0+d2lkZ2V0X29zcik7CisjZWxpZiBkZWZpbmVkIChIQVZFX05TKQorICBy ZXR1cm4gbnN4d2lkZ2V0X2lzX3dlYl92aWV3ICh4dyk7CisjZW5kaWYgLyogZGVmaW5lZCAoSEFW RV9OUykgKi8KK30KKworLyogTWFjcm8gdGhhdCBjaGVja3MgeHdpZGdldCBob2xkIHdlYmtpdCB3 ZWIgdmlldyBmaXJzdC4gICovCiAjZGVmaW5lIFdFQktJVF9GTl9JTklUKCkJCQkJCQlcCiAgIENI RUNLX1hXSURHRVQgKHh3aWRnZXQpOwkJCQkJCVwKICAgc3RydWN0IHh3aWRnZXQgKnh3ID0gWFhX SURHRVQgKHh3aWRnZXQpOwkJCQlcCi0gIGlmICgheHctPndpZGdldF9vc3IgfHwgIVdFQktJVF9J U19XRUJfVklFVyAoeHctPndpZGdldF9vc3IpKQkJXAorICBpZiAoIXh3aWRnZXRfaXNfd2ViX3Zp ZXcgKHh3KSkJCQkJCVwKICAgICB7CQkJCQkJCQkJXAotICAgICAgcHJpbnRmICgiRVJST1IgeHct PndpZGdldF9vc3IgZG9lcyBub3QgaG9sZCBhIHdlYmtpdCBpbnN0YW5jZVxuIik7IFwKKyAgICAg IHByaW50ZiAoIkVSUk9SIHh3aWRnZXQgZG9lcyBub3QgaG9sZCBhIHdlYmtpdCBpbnN0YW5jZVxu Iik7CVwKICAgICAgIHJldHVybiBRbmlsOwkJCQkJCQlcCiAgICAgfQogCkBAIC02NzgsNyArNzYx LDExIEBAIERFRlVOICgieHdpZGdldC13ZWJraXQtZ290by11cmkiLAogewogICBXRUJLSVRfRk5f SU5JVCAoKTsKICAgQ0hFQ0tfU1RSSU5HICh1cmkpOworI2lmIGRlZmluZWQgKFVTRV9HVEspCiAg IHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaSAoV0VCS0lUX1dFQl9WSUVXICh4dy0+d2lkZ2V0X29z ciksIFNTREFUQSAodXJpKSk7CisjZWxpZiBkZWZpbmVkIChIQVZFX05TKQorICBuc3h3aWRnZXRf d2Via2l0X2dvdG9fdXJpICh4dywgU1NEQVRBICh1cmkpKTsKKyNlbmRpZgogICByZXR1cm4gUW5p bDsKIH0KIApAQCAtNjkzLDEwICs3ODAsMTQgQEAgcmVmZXJlbmNlZCBieSBYV0lER0VULiAgKi8p CiAgIGlmIChGTE9BVFAgKGZhY3RvcikpCiAgICAgewogICAgICAgZG91YmxlIHpvb21fY2hhbmdl ID0gWEZMT0FUX0RBVEEgKGZhY3Rvcik7CisjaWYgZGVmaW5lZCAoVVNFX0dUSykKICAgICAgIHdl YmtpdF93ZWJfdmlld19zZXRfem9vbV9sZXZlbAogICAgICAgICAoV0VCS0lUX1dFQl9WSUVXICh4 dy0+d2lkZ2V0X29zciksCiAgICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3pvb21fbGV2ZWwK ICAgICAgICAgIChXRUJLSVRfV0VCX1ZJRVcgKHh3LT53aWRnZXRfb3NyKSkgKyB6b29tX2NoYW5n ZSk7CisjZWxpZiBkZWZpbmVkIChIQVZFX05TKQorICAgICAgbnN4d2lkZ2V0X3dlYmtpdF96b29t ICh4dywgem9vbV9jaGFuZ2UpOworI2VuZGlmCiAgICAgfQogICByZXR1cm4gUW5pbDsKIH0KQEAg LTcxMiwxNyArODAzLDE4IEBAIGFyZ3VtZW50IHByb2NlZHVyZSBGVU4uKi8pCiB7CiAgIFdFQktJ VF9GTl9JTklUICgpOwogICBDSEVDS19TVFJJTkcgKHNjcmlwdCk7Ci0gIGlmICghTklMUCAoZnVu KSAmJiAhRlVOQ1RJT05QIChmdW4pKQorICAvKiBGVU4gd2lsbCBub3QgYmUgZ2FyYmFnZSBjb2xs ZWN0ZWQgaWYgaXQgaXMgZGVmaW5lZCB3aXRoIGBkZWZ1bicKKyAgICAgaW5zdGVhZCBvZiBgbGFt YmRhJy4gIElmIGl0IGlzIGdhcmJhZ2UgY29sbGVjdGVkIGV2ZW4gdGhvdWdoIGl0CisgICAgIGlz IGBkZWZ1bicsIHdlIGNhbiBjb3VudGVyIGJ5IHBpbm5pbmcgdGhlIEZVTidzIHN5bWJvbC4gKi8K KyAgaWYgKCFOSUxQIChmdW4pICYmICFTWU1CT0xQIChmdW4pICYmICFOSUxQIChGZmJvdW5kcCAo ZnVuKSkpCiAgICAgd3JvbmdfdHlwZV9hcmd1bWVudCAoUWludmFsaWRfZnVuY3Rpb24sIGZ1bik7 CiAKKyNpZiBkZWZpbmVkIChVU0VfR1RLKQogICBHQXN5bmNSZWFkeUNhbGxiYWNrIGNhbGxiYWNr CiAgICAgPSBGVU5DVElPTlAgKGZ1bikgPyB3ZWJraXRfamF2YXNjcmlwdF9maW5pc2hlZF9jYiA6 IE5VTEw7CiAKICAgLyogRklYTUU6IFRoZSBmb2xsb3dpbmcgaGFjayBhc3N1bWVzIFVTRV9MU0Jf VEFHLiAgKi8KICAgdmVyaWZ5IChVU0VfTFNCX1RBRyk7Ci0gIC8qIEZJWE1FOiBUaGlzIGhhY2sg bWlnaHQgbGVhZCB0byBkaXNhc3RlciBpZiBGVU4gaXMgZ2FyYmFnZQotICAgICBjb2xsZWN0ZWQg YmVmb3JlIHN0b3JlX3h3aWRnZXRfanNfY2FsbGJhY2tfZXZlbnQgbWFrZXMgaXQgdmlzaWJsZQot ICAgICB0byBMaXNwIGFnYWluLiAgU2VlIHRoZSBGSVhNRSBpbiB3ZWJraXRfamF2YXNjcmlwdF9m aW5pc2hlZF9jYi4gICovCiAgIGdwb2ludGVyIGNhbGxiYWNrX2FyZyA9IChncG9pbnRlcikgKGlu dHB0cl90KSBYTEkgKGZ1bik7CiAKICAgLyogSmF2YVNjcmlwdCBleGVjdXRpb24gaGFwcGVucyBh c3luY2hyb25vdXNseS4gIElmIGFuIGVsaXNwCkBAIC03MzIsNiArODI0LDkgQEAgYXJndW1lbnQg cHJvY2VkdXJlIEZVTi4qLykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTU0RB VEEgKHNjcmlwdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgLyog Y2FuY2VsYWJsZSAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNr LCBjYWxsYmFja19hcmcpOworI2VsaWYgZGVmaW5lZCAoSEFWRV9OUykKKyAgbnN4d2lkZ2V0X3dl YmtpdF9leGVjdXRlX3NjcmlwdCAoeHcsIFNTREFUQSAoc2NyaXB0KSwgZnVuKTsKKyNlbmRpZgog ICByZXR1cm4gUW5pbDsKIH0KIApAQCAtNzUwLDYgKzg0NSw3IEBAIERFRlVOICgieHdpZGdldC1y ZXNpemUiLCBGeHdpZGdldF9yZXNpemUsIFN4d2lkZ2V0X3Jlc2l6ZSwgMywgMywgMCwKICAgeHct PmhlaWdodCA9IGg7CiAKICAgLyogSWYgdGhlcmUgaXMgYW4gb2Zmc2NyZWVuIHdpZGdldCByZXNp emUgaXQgZmlyc3QuICAqLworI2lmIGRlZmluZWQgKFVTRV9HVEspCiAgIGlmICh4dy0+d2lkZ2V0 X29zcikKICAgICB7CiAgICAgICBndGtfd2luZG93X3Jlc2l6ZSAoR1RLX1dJTkRPVyAoeHctPndp ZGdldHdpbmRvd19vc3IpLCB4dy0+d2lkdGgsCkBAIC03NTgsNiArODU0LDkgQEAgREVGVU4gKCJ4 d2lkZ2V0LXJlc2l6ZSIsIEZ4d2lkZ2V0X3Jlc2l6ZSwgU3h3aWRnZXRfcmVzaXplLCAzLCAzLCAw LAogICAgICAgZ3RrX3dpZGdldF9zZXRfc2l6ZV9yZXF1ZXN0IChHVEtfV0lER0VUICh4dy0+d2lk Z2V0X29zciksIHh3LT53aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg eHctPmhlaWdodCk7CiAgICAgfQorI2VsaWYgZGVmaW5lZCAoSEFWRV9OUykKKyAgbnN4d2lkZ2V0 X3Jlc2l6ZSAoeHcpOworI2VuZGlmCiAKICAgZm9yIChMaXNwX09iamVjdCB0YWlsID0gVnh3aWRn ZXRfdmlld19saXN0OyBDT05TUCAodGFpbCk7IHRhaWwgPSBYQ0RSICh0YWlsKSkKICAgICB7CkBA IC03NjUsOCArODY0LDE0IEBAIERFRlVOICgieHdpZGdldC1yZXNpemUiLCBGeHdpZGdldF9yZXNp emUsIFN4d2lkZ2V0X3Jlc2l6ZSwgMywgMywgMCwKICAgICAgICAgewogICAgICAgICAgIHN0cnVj dCB4d2lkZ2V0X3ZpZXcgKnh2ID0gWFhXSURHRVRfVklFVyAoWENBUiAodGFpbCkpOwogICAgICAg ICAgIGlmIChYWFdJREdFVCAoeHYtPm1vZGVsKSA9PSB4dykKKyAgICAgICAgICAgIHsKKyNpZiBk ZWZpbmVkIChVU0VfR1RLKQogICAgICAgICAgICAgICBndGtfd2lkZ2V0X3NldF9zaXplX3JlcXVl c3QgKEdUS19XSURHRVQgKHh2LT53aWRnZXQpLCB4dy0+d2lkdGgsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgeHctPmhlaWdodCk7CisjZWxpZiBkZWZpbmVkIChI QVZFX05TKQorICAgICAgICAgICAgICBuc3h3aWRnZXRfcmVzaXplX3ZpZXcoeHYsIHh3LT53aWR0 aCwgeHctPmhlaWdodCk7CisjZW5kaWYKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K IApAQCAtNzg1LDEwICs4OTAsMTQgQEAgRW1hY3MgYWxsb2NhdGVkIGFyZWEgYWNjb3JkaW5nbHku ICAqLykKICAgKExpc3BfT2JqZWN0IHh3aWRnZXQpCiB7CiAgIENIRUNLX1hXSURHRVQgKHh3aWRn ZXQpOworI2lmIGRlZmluZWQgKFVTRV9HVEspCiAgIEd0a1JlcXVpc2l0aW9uIHJlcXVpc2l0aW9u OwogICBndGtfd2lkZ2V0X3NpemVfcmVxdWVzdCAoWFhXSURHRVQgKHh3aWRnZXQpLT53aWRnZXRf b3NyLCAmcmVxdWlzaXRpb24pOwogICByZXR1cm4gbGlzdDIgKG1ha2VfbnVtYmVyIChyZXF1aXNp dGlvbi53aWR0aCksCiAJCW1ha2VfbnVtYmVyIChyZXF1aXNpdGlvbi5oZWlnaHQpKTsKKyNlbGlm IGRlZmluZWQgKEhBVkVfTlMpCisgIHJldHVybiBuc3h3aWRnZXRfZ2V0X3NpemUoWFhXSURHRVQg KHh3aWRnZXQpKTsKKyNlbmRpZgogfQogCiBERUZVTiAoInh3aWRnZXRwIiwKQEAgLTg2NSwxNCAr OTc0LDE5IEBAIERFRlVOICgiZGVsZXRlLXh3aWRnZXQtdmlldyIsCiB7CiAgIENIRUNLX1hXSURH RVRfVklFVyAoeHdpZGdldF92aWV3KTsKICAgc3RydWN0IHh3aWRnZXRfdmlldyAqeHYgPSBYWFdJ REdFVF9WSUVXICh4d2lkZ2V0X3ZpZXcpOwotICBndGtfd2lkZ2V0X2Rlc3Ryb3kgKHh2LT53aWRn ZXR3aW5kb3cpOwogICBWeHdpZGdldF92aWV3X2xpc3QgPSBGZGVscSAoeHdpZGdldF92aWV3LCBW eHdpZGdldF92aWV3X2xpc3QpOworI2lmIGRlZmluZWQgKFVTRV9HVEspCisgIGd0a193aWRnZXRf ZGVzdHJveSAoeHYtPndpZGdldHdpbmRvdyk7CiAgIC8qIHh2LT5tb2RlbCBzdGlsbCBoYXMgc2ln bmFscyBwb2ludGluZyB0byB0aGUgdmlldy4gIFRoZXJlIGNhbiBiZQogICAgICBzZXZlcmFsIHZp ZXdzLiAgRmluZCB0aGUgbWF0Y2hpbmcgc2lnbmFscyBhbmQgZGVsZXRlIHRoZW0gYWxsLiAgKi8K ICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9tYXRjaGVkICAoWFhXSURHRVQgKHh2LT5t b2RlbCktPndpZGdldHdpbmRvd19vc3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdfU0lHTkFMX01BVENIX0RBVEEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHh2LT53aWRnZXQpOworI2VsaWYgZGVmaW5lZCAoSEFWRV9OUykKKyAgbnN4 d2lkZ2V0X2RlbGV0ZV92aWV3ICh4dik7CisjZW5kaWYKKwogICByZXR1cm4gUW5pbDsKIH0KIApA QCAtMTE1MSwxMSArMTI2NSwxOSBAQCB4d2lkZ2V0X2VuZF9yZWRpc3BsYXkgKHN0cnVjdCB3aW5k b3cgKncsIHN0cnVjdCBnbHlwaF9tYXRyaXggKm1hdHJpeCkKIAkJICAgICB4d2lkZ2V0X2VuZF9y ZWRpc3BsYXkgKHctPmN1cnJlbnRfbWF0cml4KTsgICovCiAJCSAgc3RydWN0IHh3aWRnZXRfdmll dyAqeHYKIAkJICAgID0geHdpZGdldF92aWV3X2xvb2t1cCAoZ2x5cGgtPnUueHdpZGdldCwgdyk7 CisjaWYgZGVmaW5lZCAoVVNFX0dUSykKIAkJICAvKiBGSVhNRTogSXMgaXQgc2FmZSB0byBhc3N1 bWUgeHdpZGdldF92aWV3X2xvb2t1cAogCQkgICAgIGFsd2F5cyBzdWNjZWVkcyBoZXJlPyAgSWYg c28sIHRoaXMgY29tbWVudCBjYW4gYmUgcmVtb3ZlZC4KIAkJICAgICBJZiBub3QsIHRoZSBjb2Rl IHByb2JhYmx5IG5lZWRzIGZpeGluZy4gICovCiAJCSAgZWFzc3VtZSAoeHYpOwogCQkgIHh3aWRn ZXRfdG91Y2ggKHh2KTsKKyNlbGlmIGRlZmluZWQgKEhBVkVfTlMpCisgICAgICAgICAgICAgICAg ICAvKiBJbiBOUyB4d2lkZ2V0LCB4diBjYW4gYmUgTlVMTCBmb3IgdGhlIHNlY29uZCBvcgorICAg ICAgICAgICAgICAgICAgICAgbGF0ZXIgdmlld3MgZm9yIGEgbW9kZWwsIHRoZSByZXN1bHQgb2Yg MSB0byAxCisgICAgICAgICAgICAgICAgICAgICBtb2RlbCB2aWV3IHJlbGF0aW9uIGVuZm9yY2Vt ZW50LiAqLworICAgICAgICAgICAgICAgICAgaWYgKHh2KQorICAgICAgICAgICAgICAgICAgICB4 d2lkZ2V0X3RvdWNoICh4dik7CisjZW5kaWYKIAkJfQogCSAgfQogICAgIH0KQEAgLTExNzIsOSAr MTI5NCwyMSBAQCB4d2lkZ2V0X2VuZF9yZWRpc3BsYXkgKHN0cnVjdCB3aW5kb3cgKncsIHN0cnVj dCBnbHlwaF9tYXRyaXggKm1hdHJpeCkKICAgICAgICAgICBpZiAoWFdJTkRPVyAoeHYtPncpID09 IHcpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgIGlmICh4d2lkZ2V0X3RvdWNoZWQgKHh2 KSkKLSAgICAgICAgICAgICAgICB4d2lkZ2V0X3Nob3dfdmlldyAoeHYpOworICAgICAgICAgICAg ICAgIHsKKyNpZiBkZWZpbmVkIChVU0VfR1RLKQorICAgICAgICAgICAgICAgICAgeHdpZGdldF9z aG93X3ZpZXcgKHh2KTsKKyNlbGlmIGRlZmluZWQgKEhBVkVfTlMpCisgICAgICAgICAgICAgICAg ICBuc3h3aWRnZXRfc2hvd192aWV3ICh4dik7CisjZW5kaWYKKyAgICAgICAgICAgICAgICB9CiAg ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB4d2lkZ2V0X2hpZGVfdmlldyAoeHYp OworICAgICAgICAgICAgICAgIHsKKyNpZiBkZWZpbmVkIChVU0VfR1RLKQorICAgICAgICAgICAg ICAgICAgeHdpZGdldF9oaWRlX3ZpZXcgKHh2KTsKKyNlbGlmIGRlZmluZWQgKEhBVkVfTlMpCisg ICAgICAgICAgICAgICAgICBuc3h3aWRnZXRfaGlkZV92aWV3ICh4dik7CisjZW5kaWYKKyAgICAg ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xMTkzLDEx ICsxMzI3LDE2IEBAIGtpbGxfYnVmZmVyX3h3aWRnZXRzIChMaXNwX09iamVjdCBidWZmZXIpCiAg ICAgICB7CiAgICAgICAgIENIRUNLX1hXSURHRVQgKHh3aWRnZXQpOwogICAgICAgICBzdHJ1Y3Qg eHdpZGdldCAqeHcgPSBYWFdJREdFVCAoeHdpZGdldCk7CisjaWYgZGVmaW5lZCAoVVNFX0dUSykK ICAgICAgICAgaWYgKHh3LT53aWRnZXRfb3NyICYmIHh3LT53aWRnZXR3aW5kb3dfb3NyKQogICAg ICAgICAgIHsKICAgICAgICAgICAgIGd0a193aWRnZXRfZGVzdHJveSAoeHctPndpZGdldF9vc3Ip OwogICAgICAgICAgICAgZ3RrX3dpZGdldF9kZXN0cm95ICh4dy0+d2lkZ2V0d2luZG93X29zcik7 CiAgICAgICAgICAgfQorI2VsaWYgZGVmaW5lZCAoSEFWRV9OUykKKyAgICAgICAgbnN4d2lkZ2V0 X2tpbGwgKHh3KTsKKyNlbmRpZgorICAgICAgICAvKiBUT0RPOiBkZS91bmFsbG9jYXRlX3h3aWRn ZXQgKi8KICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9zcmMveHdpZGdldC5oIGIvc3Jj L3h3aWRnZXQuaAppbmRleCAwMmEwNDUzZGFiLi5jZGQwMjhlNmY4IDEwMDY0NAotLS0gYS9zcmMv eHdpZGdldC5oCisrKyBiL3NyYy94d2lkZ2V0LmgKQEAgLTI5LDcgKzI5LDEzIEBAIHN0cnVjdCB4 d2lkZ2V0X3ZpZXc7CiBzdHJ1Y3Qgd2luZG93OwogCiAjaWZkZWYgSEFWRV9YV0lER0VUUwotIyBp bmNsdWRlIDxndGsvZ3RrLmg+CisKKyNpZiBkZWZpbmVkIChVU0VfR1RLKQorI2luY2x1ZGUgPGd0 ay9ndGsuaD4KKyNlbGlmIGRlZmluZWQgKEhBVkVfTlMpICYmIGRlZmluZWQgKF9fT0JKQ19fKQor I2ltcG9ydCA8QXBwS2l0L05TVmlldy5oPgorI2ltcG9ydCAibnN4d2lkZ2V0LmgiCisjZW5kaWYK IAogc3RydWN0IHh3aWRnZXQKIHsKQEAgLTUyLDkgKzU4LDI1IEBAIHN0cnVjdCB4d2lkZ2V0CiAg IGludCBoZWlnaHQ7CiAgIGludCB3aWR0aDsKIAorI2lmIGRlZmluZWQgKFVTRV9HVEspCiAgIC8q IEZvciBvZmZzY3JlZW4gd2lkZ2V0cywgdW51c2VkIGlmIG5vdCBvc3IuICAqLwogICBHdGtXaWRn ZXQgKndpZGdldF9vc3I7CiAgIEd0a1dpZGdldCAqd2lkZ2V0d2luZG93X29zcjsKKyNlbGlmIGRl ZmluZWQgKEhBVkVfTlMpCisjIGlmZGVmIF9fT0JKQ19fCisgIC8qIEZvciBvZmZzY3JlZW4gd2lk Z2V0cywgdW51c2VkIGlmIG5vdCBvc3IuICAqLworICBOU1ZpZXcgKnh3V2lkZ2V0OworICBYd1dp bmRvdyAqeHdXaW5kb3c7CisKKyAgLyogVXNlZCBvbmx5IGZvciB4d2lkZ2V0IHR5cGVzIChzdWNo IGFzIHdlYmtpdDIpIGVuZm9yY2luZyAxIHRvIDEKKyAgICAgcmVsYXRpb25zaGlwIGJldHdlZW4g bW9kZWwgYW5kIHZpZXcuICovCisgIHN0cnVjdCB4d2lkZ2V0X3ZpZXcgKnh2OworIyBlbHNlCisg IHZvaWQgKnh3V2lkZ2V0OworICB2b2lkICp4d1dpbmRvdzsKKyAgc3RydWN0IHh3aWRnZXRfdmll dyAqeHY7CisjIGVuZGlmCisjZW5kaWYKIAogICAvKiBLaWxsIHNpbGVudGx5IGlmIEVtYWNzIGlz IGV4aXRlZC4gICovCiAgIGJvb2xfYmYga2lsbF93aXRob3V0X3F1ZXJ5IDogMTsKQEAgLTc0LDkg Kzk2LDIwIEBAIHN0cnVjdCB4d2lkZ2V0X3ZpZXcKICAgLyogVGhlICJsaXZlIiBpbnN0YW5jZSBp c24ndCBkcmF3bi4gICovCiAgIGJvb2wgaGlkZGVuOwogCisjaWYgZGVmaW5lZCAoVVNFX0dUSykK ICAgR3RrV2lkZ2V0ICp3aWRnZXQ7CiAgIEd0a1dpZGdldCAqd2lkZ2V0d2luZG93OwogICBHdGtX aWRnZXQgKmVtYWNzd2luZG93OworI2VsaWYgZGVmaW5lZCAoSEFWRV9OUykKKyMgaWZkZWYgX19P QkpDX18KKyAgWHZXaW5kb3cgKnh2V2luZG93OworICBOU1ZpZXcgKmVtYWNzd2luZG93OworIyBl bHNlCisgIHZvaWQgKnh2V2luZG93OworICB2b2lkICplbWFjc3dpbmRvdzsKKyMgZW5kaWYKKyNl bmRpZgorCiAgIGludCB4OwogICBpbnQgeTsKICAgaW50IGNsaXBfcmlnaHQ7Ci0tIAoyLjE1LjAK Cg== --001a114683027190ab055f866fb3--