Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mmba4-0006qJ-0F for pgsql-hackers@arkaria.postgresql.org; Mon, 15 Nov 2021 12:59:28 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mmba2-0006tW-DU for pgsql-hackers@arkaria.postgresql.org; Mon, 15 Nov 2021 12:59:26 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mmba2-0006tN-1a for pgsql-hackers@lists.postgresql.org; Mon, 15 Nov 2021 12:59:26 +0000 Received: from oss.nttdata.com ([49.212.34.109]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mmbZx-0004vh-CW for pgsql-hackers@lists.postgresql.org; Mon, 15 Nov 2021 12:59:25 +0000 Received: from oss.nttdata.com (localhost [127.0.0.1]) by oss.nttdata.com (Postfix) with ESMTPA id 0FCA660427; Mon, 15 Nov 2021 21:59:15 +0900 (JST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.3 at oss.nttdata.com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_5efc4e88d3e49624c15448d049dd57c0" Content-Transfer-Encoding: 7bit Date: Mon, 15 Nov 2021 21:59:15 +0900 From: torikoshia To: Bharath Rupireddy Cc: Ekaterina Sokolova , PostgreSQL Hackers Subject: Re: RFC: Logging plan of the running query In-Reply-To: References: <0842b5da697a03869fb50be93817e4e1@oss.nttdata.com> <1c1590d3962cea6e06621da76677b5f3@oss.nttdata.com> <64f716c44629e303b66e6c24502147cc@oss.nttdata.com> <8b53b32f-26cc-0531-4ac0-27310e0bef4b@oss.nttdata.com> <7958d03fffe3bafcfe8a505145c63928@oss.nttdata.com> <9c4d9da6-48a5-fa18-4bff-f8eb0d4c9787@oss.nttdata.com> <59e6df324b41176d319f9c30bdb1d858@oss.nttdata.com> <0642712f-1298-960a-a3ba-e256d56040ac@oss.nttdata.com> <3d345c49561f31a1d8ff60ea86f88840@oss.nttdata.com> User-Agent: Roundcube Webmail/1.4.11 Message-ID: <2637b465ffc1568e6ef17d5b9c9d7c13@oss.nttdata.com> X-Sender: torikoshia@oss.nttdata.com List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_5efc4e88d3e49624c15448d049dd57c0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2021-11-13 22:29, Bharath Rupireddy wrote: Thanks for your review! > On Wed, Oct 13, 2021 at 7:58 PM Ekaterina Sokolova > wrote: >> Thank you for working on this issue. I would be glad to continue to >> follow the development of this issue. > > Thanks for the patch. I'm not sure if v11 is the latest patch, if yes, > I have the following comments: > > 1) Firstly, v11 patch isn't getting applied on the master - > http://cfbot.cputube.org/patch_35_3142.log. Updated the patch. > 2) I think we are moving away from if (!superuser()) checks, see the > commit [1]. The goal is to let the GRANT-REVOKE system deal with who > is supposed to run these system functions. Since > pg_log_current_query_plan also writes the info to server logs, I think > it should do the same thing as commit [1] did for > pg_log_backend_memory_contexts. > > With v11, you are re-introducing the superuser() check in the > pg_log_backend_memory_contexts which is wrong. Yeah, I removed superuser() check and make it possible to be executed by non-superusers when users are granted to do so. > > 3) I think SendProcSignalForLogInfo can be more generic, meaning, it > can also send signal to auxiliary processes if asked to do this will > simplify the things for pg_log_backend_memory_contexts and other > patches like pg_print_backtrace. I would imagine it to be "bool > SendProcSignalForLogInfo(pid_t pid, ProcSignalReason reason, bool > signal_aux_proc);". I agree with your idea. Since sending signals to auxiliary processes to dump memory contexts and pg_print_backtrace is still under discussion, IMHO it would be better to refactor SendProcSignalForLogInfo after these patches are commited. Regards, -- Atsushi Torikoshi NTT DATA CORPORATION --=_5efc4e88d3e49624c15448d049dd57c0 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v12-0001-log-running-query-plan.patch Content-Disposition: attachment; filename=v12-0001-log-running-query-plan.patch; size=27608 RnJvbSA1NDk5MTY3YTdlY2M2ZjA0MGQ1ZmVjODE3Y2YzNmE3YmEwYjVjYmZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpYUBvc3MubnR0 ZGF0YS5jb20+CkRhdGU6IE1vbiwgMTUgTm92IDIwMjEgMjE6MjA6NDMgKzA5MDAKU3ViamVjdDog W1BBVENIIHYxMl0gQWRkIGZ1bmN0aW9uIHRvIGxvZyB0aGUgdW50cnVuY2F0ZWQgcXVlcnkgc3Ry aW5nIGFuZCBpdHMKIHBsYW4gZm9yIHRoZSBxdWVyeSBjdXJyZW50bHkgcnVubmluZyBvbiB0aGUg YmFja2VuZCB3aXRoIHRoZSBzcGVjaWZpZWQKIHByb2Nlc3MgSUQuCgpDdXJyZW50bHksIHdlIGhh dmUgdG8gd2FpdCBmb3IgdGhlIHF1ZXJ5IGV4ZWN1dGlvbiB0byBmaW5pc2gKdG8gY2hlY2sgaXRz IHBsYW4uIFRoaXMgaXMgbm90IHNvIGNvbnZlbmllbnQgd2hlbgppbnZlc3RpZ2F0aW5nIGxvbmct cnVubmluZyBxdWVyaWVzIG9uIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzCndoZXJlIHdlIGNhbm5v dCB1c2UgZGVidWdnZXJzLgpUbyBpbXByb3ZlIHRoaXMgc2l0dWF0aW9uLCB0aGlzIHBhdGNoIGFk ZHMKcGdfbG9nX2N1cnJlbnRfcXVlcnlfcGxhbigpIGZ1bmN0aW9uIHRoYXQgcmVxdWVzdHMgdG8g bG9nIHRoZQpwbGFuIG9mIHRoZSBzcGVjaWZpZWQgYmFja2VuZCBwcm9jZXNzLgoKQnkgZGVmYXVs dCwgb25seSBzdXBlcnVzZXJzIGFyZSBhbGxvd2VkIHRvIHJlcXVlc3QgdG8gbG9nIHRoZQpwbGFu cyBiZWNhdXNlIGFsbG93aW5nIGFueSB1c2VycyB0byBpc3N1ZSB0aGlzIHJlcXVlc3QgYXQgYW4K dW5ib3VuZGVkIHJhdGUgd291bGQgY2F1c2UgbG90cyBvZiBsb2cgbWVzc2FnZXMgYW5kIHdoaWNo IGNhbgpsZWFkIHRvIGRlbmlhbCBvZiBzZXJ2aWNlLgoKT24gcmVjZWlwdCBvZiB0aGUgcmVxdWVz dCwgYXQgdGhlIG5leHQgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSwKdGhlIHRhcmdldCBiYWNrZW5k IGxvZ3MgaXRzIHBsYW4gYXQgTE9HX1NFUlZFUl9PTkxZIGxldmVsLCBzbwp0aGF0IHRoZXNlIHBs YW5zIHdpbGwgYXBwZWFyIGluIHRoZSBzZXJ2ZXIgbG9nIGJ1dCBub3QgYmUgc2VudAp0byB0aGUg Y2xpZW50LgoKU2luY2Ugc29tZSBjb2RlcywgdGVzdHMgYW5kIGNvbW1lbnRzIG9mCnBnX2xvZ19j dXJyZW50X3F1ZXJ5X3BsYW4oKSBhcmUgdGhlIHNhbWUgd2l0aApwZ19sb2dfYmFja2VuZF9tZW1v cnlfY29udGV4dHMoKSwgdGhpcyBwYXRjaCBhbHNvIHJlZmFjdG9ycwp0aGVtIHRvIG1ha2UgdGhl bSBjb21tb24uCgpSZXZpZXdlZC1ieTogQmhhcmF0aCBSdXBpcmVkZHksIEZ1amlpIE1hc2FvLCBE aWxpcCBLdW1hciwgTWFzYWhpcm8gSWtlZGEsIEVrYXRlcmluYSBTb2tvbG92YQotLS0KIGRvYy9z cmMvc2dtbC9mdW5jLnNnbWwgICAgICAgICAgICAgICAgICAgICAgIHwgIDQ1ICsrKysrKysKIHNy Yy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX2Z1bmN0aW9ucy5zcWwgICAgIHwgICAyICsKIHNyYy9i YWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyAgICAgICAgICAgICAgIHwgMTE3ICsrKysrKysrKysr KysrKysrKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgICAgICAgIHwg IDEwICsrCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgICAgICAgICB8ICAg NCArCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaWduYWxmdW5jcy5jICAgICAgICB8ICA1NSAr KysrKysrKysKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMgICAgICAgICAgICAgIHwg ICA5ICstCiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgICAgICB8ICAg NyArKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5jICAgICAgICAgICAgfCAgMzYg Ky0tLS0tCiBzcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYyAgICAgICAgICAgICB8ICAg MSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICB8ICAgNiAr CiBzcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmggICAgICAgICAgICAgICB8ICAgMyArCiBz cmMvaW5jbHVkZS9taXNjYWRtaW4uaCAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMv aW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaCAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5j bHVkZS90Y29wL3BxdWVyeS5oICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL21pc2NfZnVuY3Rpb25zLm91dCB8ICA1NCArKysrKysrLS0KIHNyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL21pc2NfZnVuY3Rpb25zLnNxbCAgICAgIHwgIDQyICsrKysrLS0KIDE3 IGZpbGVzIGNoYW5nZWQsIDMzMyBpbnNlcnRpb25zKCspLCA2MSBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbApp bmRleCAyNDQ0N2MwMDE3Li5lMTJlMWZlZWNhIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZnVu Yy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKQEAgLTI1MzQ1LDYgKzI1MzQ1LDI2 IEBAIFNFTEVDVCBjb2xsYXRpb24gZm9yICgnZm9vJyBDT0xMQVRFICJkZV9ERSIpOwogICAgICAg IDwvcGFyYT48L2VudHJ5PgogICAgICAgPC9yb3c+CiAKKyAgICAgIDxyb3c+CisgICAgICAgPGVu dHJ5IHJvbGU9ImZ1bmNfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4K KyAgICAgICAgPGluZGV4dGVybT4KKyAgICAgICAgIDxwcmltYXJ5PnBnX2xvZ19jdXJyZW50X3F1 ZXJ5X3BsYW48L3ByaW1hcnk+CisgICAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgICA8ZnVuY3Rp b24+cGdfbG9nX2N1cnJlbnRfcXVlcnlfcGxhbjwvZnVuY3Rpb24+ICggPHBhcmFtZXRlcj5waWQ8 L3BhcmFtZXRlcj4gPHR5cGU+aW50ZWdlcjwvdHlwZT4gKQorICAgICAgICA8cmV0dXJudmFsdWU+ Ym9vbGVhbjwvcmV0dXJudmFsdWU+CisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAg ICAgICBSZXF1ZXN0cyB0byBsb2cgdGhlIHBsYW4gb2YgdGhlIHF1ZXJ5IGN1cnJlbnRseSBydW5u aW5nIG9uIHRoZQorICAgICAgICBiYWNrZW5kIHdpdGggc3BlY2lmaWVkIHByb2Nlc3MgSUQgYWxv bmcgd2l0aCB0aGUgdW50cnVuY2F0ZWQKKyAgICAgICAgcXVlcnkgc3RyaW5nLgorICAgICAgICBU aGV5IHdpbGwgYmUgbG9nZ2VkIGF0IDxsaXRlcmFsPkxPRzwvbGl0ZXJhbD4gbWVzc2FnZSBsZXZl bCBhbmQKKyAgICAgICAgd2lsbCBhcHBlYXIgaW4gdGhlIHNlcnZlciBsb2cgYmFzZWQgb24gdGhl IGxvZworICAgICAgICBjb25maWd1cmF0aW9uIHNldCAoU2VlIDx4cmVmIGxpbmtlbmQ9InJ1bnRp bWUtY29uZmlnLWxvZ2dpbmciLz4KKyAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24pLCBidXQg d2lsbCBub3QgYmUgc2VudCB0byB0aGUgY2xpZW50CisgICAgICAgIHJlZ2FyZGxlc3Mgb2YgPHhy ZWYgbGlua2VuZD0iZ3VjLWNsaWVudC1taW4tbWVzc2FnZXMiLz4uCisgICAgICAgPC9wYXJhPjwv ZW50cnk+CisgICAgICA8L3Jvdz4KKwogICAgICAgPHJvdz4KICAgICAgICA8ZW50cnkgcm9sZT0i ZnVuY190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1cmUiPgogICAgICAgICA8 aW5kZXh0ZXJtPgpAQCAtMjU0NTgsNiArMjU0NzgsMzEgQEAgTE9HOiAgR3JhbmQgdG90YWw6IDE2 NTE5MjAgYnl0ZXMgaW4gMjAxIGJsb2NrczsgNjIyMzYwIGZyZWUgKDg4IGNodW5rcyk7IDEwMjk1 NjAKICAgICBiZWNhdXNlIGl0IG1heSBnZW5lcmF0ZSBhIGxhcmdlIG51bWJlciBvZiBsb2cgbWVz c2FnZXMuCiAgICA8L3BhcmE+CiAKKyAgIDxwYXJhPgorICAgIDxmdW5jdGlvbj5wZ19sb2dfY3Vy cmVudF9xdWVyeV9wbGFuPC9mdW5jdGlvbj4gY2FuIGJlIHVzZWQKKyAgICB0byBsb2cgdGhlIHBs YW4gb2YgYSBiYWNrZW5kIHByb2Nlc3MuIEZvciBleGFtcGxlOgorPHByb2dyYW1saXN0aW5nPgor cG9zdGdyZXM9IyBTRUxFQ1QgcGdfbG9nX2N1cnJlbnRfcXVlcnlfcGxhbigyMDExMTYpOworIHBn X2xvZ19jdXJyZW50X3F1ZXJ5X3BsYW4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQK KygxIHJvdykKKzwvcHJvZ3JhbWxpc3Rpbmc+CitUaGUgZm9ybWF0IG9mIHRoZSBxdWVyeSBwbGFu IGlzIHRoZSBzYW1lIGFzIHdoZW4gPGxpdGVyYWw+VkVSQk9TRTwvbGl0ZXJhbD4sCis8bGl0ZXJh bD5DT1NUUzwvbGl0ZXJhbD4sIDxsaXRlcmFsPlNFVFRJTkdTPC9saXRlcmFsPiBhbmQKKzxsaXRl cmFsPkZPUk1BVCBURVhUPC9saXRlcmFsPiBhcmUgdXNlZCBpbiB0aGUgPGNvbW1hbmQ+RVhQTEFJ TjwvY29tbWFuZD4KK2NvbW1hbmQuIEZvciBleGFtcGxlOgorPHNjcmVlbj4KK0xPRzogIHBsYW4g b2YgdGhlIHF1ZXJ5IHJ1bm5pbmcgb24gYmFja2VuZCB3aXRoIFBJRCAxNzc5MyBpczoKKyAgICAg ICAgUXVlcnkgVGV4dDogU0VMRUNUICogRlJPTSBwZ2JlbmNoX2FjY291bnRzOworICAgICAgICBT ZXEgU2NhbiBvbiBwdWJsaWMucGdiZW5jaF9hY2NvdW50cyAgKGNvc3Q9MC4wMC4uNTI3ODcuMDAg cm93cz0yMDAwMDAwIHdpZHRoPTk3KQorICAgICAgICAgIE91dHB1dDogYWlkLCBiaWQsIGFiYWxh bmNlLCBmaWxsZXIKKyAgICAgICAgU2V0dGluZ3M6IHdvcmtfbWVtID0gJzFNQicKKzwvc2NyZWVu PgorICAgIE5vdGUgdGhhdCBuZXN0ZWQgc3RhdGVtZW50cyAoc3RhdGVtZW50cyBleGVjdXRlZCBp bnNpZGUgYSBmdW5jdGlvbikgYXJlIG5vdAorICAgIGNvbnNpZGVyZWQgZm9yIGxvZ2dpbmcuIE9u bHkgdGhlIGRlZXBlc3QgbmVzdGluZyBxdWVyeSdzIHBsYW4gaXMgbG9nZ2VkLgorICAgPC9wYXJh PgorCiAgIDwvc2VjdDI+CiAKICAgPHNlY3QyIGlkPSJmdW5jdGlvbnMtYWRtaW4tYmFja3VwIj4K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX2Z1bmN0aW9ucy5zcWwgYi9z cmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV9mdW5jdGlvbnMuc3FsCmluZGV4IDU0YzkzYjE2YzQu LjAzOWMxNWQ1ODEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX2Z1bmN0 aW9ucy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fZnVuY3Rpb25zLnNxbApA QCAtNzAxLDYgKzcwMSw4IEBAIFJFVk9LRSBFWEVDVVRFIE9OIEZVTkNUSU9OIHBnX2xzX2Rpcih0 ZXh0LGJvb2xlYW4sYm9vbGVhbikgRlJPTSBwdWJsaWM7CiAKIFJFVk9LRSBFWEVDVVRFIE9OIEZV TkNUSU9OIHBnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cyhpbnRlZ2VyKSBGUk9NIFBVQkxJ QzsKIAorUkVWT0tFIEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfbG9nX2N1cnJlbnRfcXVlcnlfcGxh bihpbnRlZ2VyKSBGUk9NIFBVQkxJQzsKKwogLS0KIC0tIFdlIGFsc28gc2V0IHVwIHNvbWUgdGhp bmdzIGFzIGFjY2Vzc2libGUgdG8gc3RhbmRhcmQgcm9sZXMuCiAtLQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFp bi5jCmluZGV4IDEwNjQ0ZGZhYzQuLjMwNDkzYjZmYTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2V4cGxhaW4uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMK QEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJleGVjdXRvci9ub2RlSGFzaC5oIgogI2luY2x1 ZGUgImZvcmVpZ24vZmR3YXBpLmgiCiAjaW5jbHVkZSAiaml0L2ppdC5oIgorI2luY2x1ZGUgIm1p c2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL2V4dGVuc2libGUuaCIKICNpbmNsdWRlICJub2Rl cy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKQEAgLTI4LDYgKzI5 LDkgQEAKICNpbmNsdWRlICJwYXJzZXIvcGFyc2V0cmVlLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9y ZXdyaXRlSGFuZGxlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCisjaW5jbHVkZSAi c3RvcmFnZS9wcm9jYXJyYXkuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NpZ25hbGZ1bmNzLmgiCisj aW5jbHVkZSAidGNvcC9wcXVlcnkuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5j bHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9ndWNfdGFibGVzLmgiCkBA IC00MCw3ICs0NCw2IEBACiAjaW5jbHVkZSAidXRpbHMvdHlwY2FjaGUuaCIKICNpbmNsdWRlICJ1 dGlscy94bWwuaCIKIAotCiAvKiBIb29rIGZvciBwbHVnaW5zIHRvIGdldCBjb250cm9sIGluIEV4 cGxhaW5PbmVRdWVyeSgpICovCiBFeHBsYWluT25lUXVlcnlfaG9va190eXBlIEV4cGxhaW5PbmVR dWVyeV9ob29rID0gTlVMTDsKIApAQCAtMTU5NCw2ICsxNTk3LDkgQEAgRXhwbGFpbk5vZGUoUGxh blN0YXRlICpwbGFuc3RhdGUsIExpc3QgKmFuY2VzdG9ycywKIAkvKgogCSAqIFdlIGhhdmUgdG8g Zm9yY2libHkgY2xlYW4gdXAgdGhlIGluc3RydW1lbnRhdGlvbiBzdGF0ZSBiZWNhdXNlIHdlCiAJ ICogaGF2ZW4ndCBkb25lIEV4ZWN1dG9yRW5kIHlldC4gIFRoaXMgaXMgcHJldHR5IGdyb3R0eSAu Li4KKwkgKiBUaGlzIGNsZWFudXAgc2hvdWxkIG5vdCBiZSBkb25lIHdoZW4gdGhlIHF1ZXJ5IGhh cyBhbHJlYWR5IGJlZW4KKwkgKiBleGVjdXRlZCwgYXMgdGhlIHRhcmdldCBxdWVyeSBtYXkgdXNl IGluc3RydW1lbnRhdGlvbiBhbmQgY2xlYW4KKwkgKiBpdHNlbGYgdXAuCiAJICoKIAkgKiBOb3Rl OiBjb250cmliL2F1dG9fZXhwbGFpbiBjb3VsZCBjYXVzZSBpbnN0cnVtZW50YXRpb24gdG8gYmUg c2V0IHVwCiAJICogZXZlbiB0aG91Z2ggd2UgZGlkbid0IGFzayBmb3IgaXQgaGVyZS4gIEJlIGNh cmVmdWwgbm90IHRvIHByaW50IGFueQpAQCAtMTYwMSw3ICsxNjA3LDcgQEAgRXhwbGFpbk5vZGUo UGxhblN0YXRlICpwbGFuc3RhdGUsIExpc3QgKmFuY2VzdG9ycywKIAkgKiBJbnN0ckVuZExvb3Ag Y2FsbCBhbnl3YXksIGlmIHBvc3NpYmxlLCB0byByZWR1Y2UgdGhlIG51bWJlciBvZiBjYXNlcwog CSAqIGF1dG9fZXhwbGFpbiBoYXMgdG8gY29udGVuZCB3aXRoLgogCSAqLwotCWlmIChwbGFuc3Rh dGUtPmluc3RydW1lbnQpCisJaWYgKHBsYW5zdGF0ZS0+aW5zdHJ1bWVudCAmJiAhZXMtPnJ1bm5p bmcpCiAJCUluc3RyRW5kTG9vcChwbGFuc3RhdGUtPmluc3RydW1lbnQpOwogCiAJaWYgKGVzLT5h bmFseXplICYmCkBAIC00OTIyLDMgKzQ5MjgsMTEwIEBAIGVzY2FwZV95YW1sKFN0cmluZ0luZm8g YnVmLCBjb25zdCBjaGFyICpzdHIpCiB7CiAJZXNjYXBlX2pzb24oYnVmLCBzdHIpOwogfQorCisv KgorICogSGFuZGxlTG9nQ3VycmVudFBsYW5JbnRlcnJ1cHQKKyAqCQlIYW5kbGUgcmVjZWlwdCBv ZiBhbiBpbnRlcnJ1cHQgaW5kaWNhdGluZyBsb2dnaW5nIHRoZSBwbGFuIG9mCisgKgkJdGhlIGN1 cnJlbnRseSBydW5uaW5nIHF1ZXJ5LgorICoKKyAqIEFsbCB0aGUgYWN0dWFsIHdvcmsgaXMgZGVm ZXJyZWQgdG8gUHJvY2Vzc0xvZ0N1cnJlbnRQbGFuSW50ZXJydXB0KCksCisgKiBiZWNhdXNlIHdl IGNhbm5vdCBzYWZlbHkgZW1pdCBhIGxvZyBtZXNzYWdlIGluc2lkZSB0aGUgc2lnbmFsIGhhbmRs ZXIuCisgKi8KK3ZvaWQKK0hhbmRsZUxvZ0N1cnJlbnRQbGFuSW50ZXJydXB0KHZvaWQpCit7CisJ SW50ZXJydXB0UGVuZGluZyA9IHRydWU7CisJTG9nQ3VycmVudFBsYW5QZW5kaW5nID0gdHJ1ZTsK KwkvKiBsYXRjaCB3aWxsIGJlIHNldCBieSBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlciAqLwor fQorCisvKgorICogUHJvY2Vzc0xvZ0N1cnJlbnRQbGFuSW50ZXJydXB0CisgKiAJCVBlcmZvcm0g bG9nZ2luZyB0aGUgcGxhbiBvZiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgcXVlcnkgb24gdGhpcwor ICogCQliYWNrZW5kIHByb2Nlc3MuCisgKgorICogQW55IGJhY2tlbmQgdGhhdCBwYXJ0aWNpcGF0 ZXMgaW4gUHJvY1NpZ25hbCBzaWduYWxpbmcgbXVzdCBhcnJhbmdlIHRvIGNhbGwKKyAqIHRoaXMg ZnVuY3Rpb24gaWYgd2Ugc2VlIExvZ0N1cnJlbnRQbGFuUGVuZGluZyBzZXQuCisgKiBJdCBpcyBj YWxsZWQgZnJvbSBDSEVDS19GT1JfSU5URVJSVVBUUygpLCB3aGljaCBpcyBlbm91Z2ggYmVjYXVz ZSB0aGUgdGFyZ2V0CisgKiBwcm9jZXNzIGZvciBsb2dnaW5nIHBsYW4gaXMgYSBiYWNrZW5kLgor ICovCit2b2lkCitQcm9jZXNzTG9nQ3VycmVudFBsYW5JbnRlcnJ1cHQodm9pZCkKK3sKKwlFeHBs YWluU3RhdGUgKmVzOworCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7CisJTE9DQUxMT0NLICAqbG9j YWxsb2NrOworCUxvZ0N1cnJlbnRQbGFuUGVuZGluZyA9IGZhbHNlOworCisJaWYgKEFjdGl2ZVF1 ZXJ5RGVzYyA9PSBOVUxMKQorCXsKKwkJZXJlcG9ydChMT0dfU0VSVkVSX09OTFksCisJCQkJKGVy cm1zZygiYmFja2VuZCB3aXRoIFBJRCAlZCBpcyBub3QgcnVubmluZyBhIHF1ZXJ5IiwKKwkJCQkJ TXlQcm9jUGlkKSkpOworCQlyZXR1cm47CisJfQorCisJLyoKKwkgKiBFbnN1cmUgbm8gcGFnZSBs b2NrIGlzIGhlbGQgb24gdGhpcyBwcm9jZXNzLgorCSAqCisJICogSWYgcGFnZSBsb2NrIGlzIGhl bGQgYXQgdGhlIHRpbWUgb2YgdGhlIGludGVycnVwdCwgd2UgY2FuJ3QgYWNxdWlyZSBhbnkKKwkg KiBvdGhlciBoZWF2eXdlaWdodCBsb2NrLCB3aGljaCBtaWdodCBiZSBuZWNlc3NhcnkgZm9yIGV4 cGxhaW5pbmcgdGhlIHBsYW4KKwkgKiB3aGVuIHJldHJpZXZpbmcgY29sdW1uIG5hbWVzLgorCSAq CisJICogVGhpcyBtYXkgYmUgb3ZlcmtpbGwsIGJ1dCBzaW5jZSBwYWdlIGxvY2tzIGFyZSBoZWxk IGZvciBhIHNob3J0IGR1cmF0aW9uCisJICogd2UgY2hlY2sgYWxsIHRoZSBMb2NhbExvY2sgZW50 cmllcyBhbmQgd2hlbiBmaW5kaW5nIGV2ZW4gb25lLCBnaXZlIHVwCisJICogbG9nZ2luZyB0aGUg cGxhbi4KKwkgKi8KKwloYXNoX3NlcV9pbml0KCZzdGF0dXMsIEdldExvY2tNZXRob2RMb2NhbEhh c2goKSk7CisJd2hpbGUgKChsb2NhbGxvY2sgPSAoTE9DQUxMT0NLICopIGhhc2hfc2VxX3NlYXJj aCgmc3RhdHVzKSkgIT0gTlVMTCkKKwl7CisJCWlmIChMT0NBTExPQ0tfTE9DS1RBRygqbG9jYWxs b2NrKSA9PSBMT0NLVEFHX1BBR0UpCisJCXsKKwkJCWVyZXBvcnQoTE9HX1NFUlZFUl9PTkxZLAor CQkJCShlcnJtc2coImJhY2tlbmQgd2l0aCBQSUQgJWQgaXMgbm93IGhvbGRpbmcgYSBwYWdlIGxv Y2suIFRyeSBhZ2FpbiIsCisJCQkJCU15UHJvY1BpZCkpKTsKKwkJCWhhc2hfc2VxX3Rlcm0oJnN0 YXR1cyk7CisJCQlyZXR1cm47CisJCX0KKwl9CisKKwllcyA9IE5ld0V4cGxhaW5TdGF0ZSgpOwor CisJZXMtPmZvcm1hdCA9IEVYUExBSU5fRk9STUFUX1RFWFQ7CisJZXMtPnNldHRpbmdzID0gdHJ1 ZTsKKwllcy0+dmVyYm9zZSA9IHRydWU7CisJZXMtPnJ1bm5pbmcgPSB0cnVlOworCisJRXhwbGFp bkJlZ2luT3V0cHV0KGVzKTsKKwlFeHBsYWluUXVlcnlUZXh0KGVzLCBBY3RpdmVRdWVyeURlc2Mp OworCUV4cGxhaW5QcmludFBsYW4oZXMsIEFjdGl2ZVF1ZXJ5RGVzYyk7CisJaWYgKGVzLT5jb3N0 cykKKwkJRXhwbGFpblByaW50SklUU3VtbWFyeShlcywgQWN0aXZlUXVlcnlEZXNjKTsKKwlFeHBs YWluRW5kT3V0cHV0KGVzKTsKKworCS8qIFJlbW92ZSBsYXN0IGxpbmUgYnJlYWsgKi8KKwlpZiAo ZXMtPnN0ci0+bGVuID4gMCAmJiBlcy0+c3RyLT5kYXRhW2VzLT5zdHItPmxlbiAtIDFdID09ICdc bicpCisJCWVzLT5zdHItPmRhdGFbLS1lcy0+c3RyLT5sZW5dID0gJ1wwJzsKKworCWVyZXBvcnQo TE9HX1NFUlZFUl9PTkxZLAorCQkJKGVycm1zZygicGxhbiBvZiB0aGUgcXVlcnkgcnVubmluZyBv biBiYWNrZW5kIHdpdGggUElEICVkIGlzOlxuJXMiLAorCQkJCQlNeVByb2NQaWQsIGVzLT5zdHIt PmRhdGEpLAorCQkJIGVycmhpZGVzdG10KHRydWUpLAorCQkJIGVycmhpZGVjb250ZXh0KHRydWUp KSk7Cit9CisKKy8qCisgKiBwZ19sb2dfY3VycmVudF9xdWVyeV9wbGFuCisgKgkJU2lnbmFsIGEg YmFja2VuZCBwcm9jZXNzIHRvIGxvZyB0aGUgcXVlcnkgcGxhbiBvZiB0aGUgcnVubmluZyBxdWVy eS4KKyAqCisgKiBCeSBkZWZhdWx0LCBvbmx5IHN1cGVydXNlcnMgYXJlIGFsbG93ZWQgdG8gc2ln bmFsIHRvIGxvZyB0aGUgcGxhbiBiZWNhdXNlCisgKiBhbGxvd2luZyBhbnkgdXNlcnMgdG8gaXNz dWUgdGhpcyByZXF1ZXN0IGF0IGFuIHVuYm91bmRlZCByYXRlIHdvdWxkCisgKiBjYXVzZSBsb3Rz IG9mIGxvZyBtZXNzYWdlcyBhbmQgd2hpY2ggY2FuIGxlYWQgdG8gZGVuaWFsIG9mIHNlcnZpY2Uu CisgKiBBZGRpdGlvbmFsIHJvbGVzIGNhbiBiZSBwZXJtaXR0ZWQgd2l0aCBHUkFOVC4KKyAqLwor RGF0dW0KK3BnX2xvZ19jdXJyZW50X3F1ZXJ5X3BsYW4oUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlp bnQJCQlwaWQgPSBQR19HRVRBUkdfSU5UMzIoMCk7CisJUEdfUkVUVVJOX0JPT0woU2VuZFByb2NT aWduYWxGb3JMb2dJbmZvKHBpZCwgUFJPQ1NJR19MT0dfQ1VSUkVOVF9QTEFOKSk7Cit9CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY01haW4uYwppbmRleCBiM2NlNGJhZTUzLi5jNzRhYTFkMDRlIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNNYWluLmMKQEAgLTc2LDYgKzc2LDkgQEAgRXhlY3V0b3JFbmRfaG9va190eXBlIEV4 ZWN1dG9yRW5kX2hvb2sgPSBOVUxMOwogLyogSG9vayBmb3IgcGx1Z2luIHRvIGdldCBjb250cm9s IGluIEV4ZWNDaGVja1JUUGVybXMoKSAqLwogRXhlY3V0b3JDaGVja1Blcm1zX2hvb2tfdHlwZSBF eGVjdXRvckNoZWNrUGVybXNfaG9vayA9IE5VTEw7CiAKKy8qIEN1cnJlbnRseSBleGVjdXRpbmcg cXVlcnkncyBRdWVyeURlc2MgKi8KK1F1ZXJ5RGVzYyAqQWN0aXZlUXVlcnlEZXNjID0gTlVMTDsK KwogLyogZGVjbHMgZm9yIGxvY2FsIHJvdXRpbmVzIG9ubHkgdXNlZCB3aXRoaW4gdGhpcyBtb2R1 bGUgKi8KIHN0YXRpYyB2b2lkIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZs YWdzKTsKIHN0YXRpYyB2b2lkIENoZWNrVmFsaWRSb3dNYXJrUmVsKFJlbGF0aW9uIHJlbCwgUm93 TWFya1R5cGUgbWFya1R5cGUpOwpAQCAtMjk5LDEwICszMDIsMTcgQEAgRXhlY3V0b3JSdW4oUXVl cnlEZXNjICpxdWVyeURlc2MsCiAJCQlTY2FuRGlyZWN0aW9uIGRpcmVjdGlvbiwgdWludDY0IGNv dW50LAogCQkJYm9vbCBleGVjdXRlX29uY2UpCiB7CisJUXVlcnlEZXNjICpzYXZlX0FjdGl2ZVF1 ZXJ5RGVzYzsKKworCXNhdmVfQWN0aXZlUXVlcnlEZXNjID0gQWN0aXZlUXVlcnlEZXNjOworCUFj dGl2ZVF1ZXJ5RGVzYyA9IHF1ZXJ5RGVzYzsKKwogCWlmIChFeGVjdXRvclJ1bl9ob29rKQogCQko KkV4ZWN1dG9yUnVuX2hvb2spIChxdWVyeURlc2MsIGRpcmVjdGlvbiwgY291bnQsIGV4ZWN1dGVf b25jZSk7CiAJZWxzZQogCQlzdGFuZGFyZF9FeGVjdXRvclJ1bihxdWVyeURlc2MsIGRpcmVjdGlv biwgY291bnQsIGV4ZWN1dGVfb25jZSk7CisKKwlBY3RpdmVRdWVyeURlc2MgPSBzYXZlX0FjdGl2 ZVF1ZXJ5RGVzYzsKIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvcHJvY3NpZ25hbC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCmlu ZGV4IDZlNjkzOThjZGQuLjZlYTYzZTBjNTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL3Byb2NzaWduYWwuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2ln bmFsLmMKQEAgLTIwLDYgKzIwLDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvcGFyYWxsZWwuaCIKICNp bmNsdWRlICJwb3J0L3BnX2JpdHV0aWxzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvYXN5bmMuaCIK KyNpbmNsdWRlICJjb21tYW5kcy9leHBsYWluLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAj aW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2Fsc2VuZGVyLmgiCkBA IC02NjEsNiArNjYyLDkgQEAgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIoU0lHTkFMX0FSR1Mp CiAJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX0xPR19NRU1PUllfQ09OVEVYVCkpCiAJCUhh bmRsZUxvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQoKTsKIAorCWlmIChDaGVja1Byb2NTaWduYWwo UFJPQ1NJR19MT0dfQ1VSUkVOVF9QTEFOKSkKKwkJSGFuZGxlTG9nQ3VycmVudFBsYW5JbnRlcnJ1 cHQoKTsKKwogCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9E QVRBQkFTRSkpCiAJCVJlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUFJPQ1NJR19SRUNPVkVSWV9D T05GTElDVF9EQVRBQkFTRSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3NpZ25hbGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaWduYWxmdW5jcy5jCmlu ZGV4IGRlNjlkNjBlNzkuLjk3ZTE4ZWU0Y2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL3NpZ25hbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2lnbmFs ZnVuY3MuYwpAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvcG1zaWduYWwuaCIK ICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5o IgorI2luY2x1ZGUgInN0b3JhZ2Uvc2lnbmFsZnVuY3MuaCIKICNpbmNsdWRlICJ1dGlscy9hY2wu aCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogCkBAIC0yOTgsMyArMjk5LDU3IEBAIHBn X3JvdGF0ZV9sb2dmaWxlX3YyKFBHX0ZVTkNUSU9OX0FSR1MpCiAJU2VuZFBvc3RtYXN0ZXJTaWdu YWwoUE1TSUdOQUxfUk9UQVRFX0xPR0ZJTEUpOwogCVBHX1JFVFVSTl9CT09MKHRydWUpOwogfQor CisvKgorICogU2lnbmFsIGEgYmFja2VuZCBwcm9jZXNzIHRvIGxvZyBpdHMgaW5mb3JtYXRpb24u CisgKgorICogQnkgZGVmYXVsdCwgb25seSBzdXBlcnVzZXJzIGFyZSBhbGxvd2VkIHRvIHNpZ25h bCB0byBsb2cgaW5mb3JtYXRpb24KKyAqIGJlY2F1c2UgYWxsb3dpbmcgYW55IHVzZXJzIHRvIGlz c3VlIHRoaXMgcmVxdWVzdCBhdCBhbiB1bmJvdW5kZWQKKyAqIHJhdGUgd291bGQgY2F1c2UgbG90 cyBvZiBsb2cgbWVzc2FnZXMgYW5kIHdoaWNoIGNhbiBsZWFkIHRvIGRlbmlhbCBvZgorICogc2Vy dmljZS4gQWRkaXRpb25hbCByb2xlcyBjYW4gYmUgcGVybWl0dGVkIHdpdGggR1JBTlQuCisgKgor ICogT24gcmVjZWlwdCBvZiB0aGlzIHNpZ25hbCwgYSBiYWNrZW5kIHNldHMgdGhlIGZsYWcgaW4g dGhlIHNpZ25hbAorICogaGFuZGxlciwgd2hpY2ggY2F1c2VzIHRoZSBuZXh0IENIRUNLX0ZPUl9J TlRFUlJVUFRTKCkgdG8gbG9nIHRoZQorICogaW5mb3JtYXRpb24uCisgKi8KK2Jvb2wKK1NlbmRQ cm9jU2lnbmFsRm9yTG9nSW5mbyhwaWRfdCBwaWQsIFByb2NTaWduYWxSZWFzb24gcmVhc29uKQor eworCVBHUFJPQwkgICAqcHJvYzsKKworCUFzc2VydChyZWFzb24gPT0gUFJPQ1NJR19MT0dfTUVN T1JZX0NPTlRFWFQgfHwKKwkJICAgcmVhc29uID09IFBST0NTSUdfTE9HX0NVUlJFTlRfUExBTik7 CisKKwlwcm9jID0gQmFja2VuZFBpZEdldFByb2MocGlkKTsKKworCS8qCisJICogQmFja2VuZFBp ZEdldFByb2MgcmV0dXJucyBOVUxMIGlmIHRoZSBwaWQgaXNuJ3QgdmFsaWQ7IGJ1dCBieSB0aGUg dGltZQorCSAqIHdlIHJlYWNoIGtpbGwoKSwgYSBwcm9jZXNzIGZvciB3aGljaCB3ZSBnZXQgYSB2 YWxpZCBwcm9jIGhlcmUgbWlnaHQKKwkgKiBoYXZlIHRlcm1pbmF0ZWQgb24gaXRzIG93bi4gIFRo ZXJlJ3Mgbm8gd2F5IHRvIGFjcXVpcmUgYSBsb2NrIG9uIGFuCisJICogYXJiaXRyYXJ5IHByb2Nl c3MgdG8gcHJldmVudCB0aGF0LiBCdXQgc2luY2UgdGhpcyBtZWNoYW5pc20gaXMgdXN1YWxseQor CSAqIHVzZWQgdG8gYmVsb3cgcHVycG9zZXMsIGl0IG1pZ2h0IGVuZCBpdHMgb3duIGZpcnN0IGFu ZCB0aGUgaW5mb3JtYXRpb24KKwkgKiBpcyBub3QgbG9nZ2VkIGlzIG5vdCBhIHByb2JsZW0uCisJ ICogLSBkZWJ1ZyBhIGJhY2tlbmQgcnVubmluZyBhbmQgY29uc3VtaW5nIGxvdHMgb2YgbWVtb3J5 CisJICogLSBsb29rIGludG8gdGhlIHBsYW4gb2YgdGhlIGxvbmcgcnVubmluZyBxdWVyeQorCSAq LworCWlmIChwcm9jID09IE5VTEwpCisJeworCQkvKgorCQkgKiBUaGlzIGlzIGp1c3QgYSB3YXJu aW5nIHNvIGEgbG9vcC10aHJvdWdoLXJlc3VsdHNldCB3aWxsIG5vdCBhYm9ydAorCQkgKiBpZiBv bmUgYmFja2VuZCB0ZXJtaW5hdGVkIG9uIGl0cyBvd24gZHVyaW5nIHRoZSBydW4uCisJCSAqLwor CQllcmVwb3J0KFdBUk5JTkcsCisJCQkJKGVycm1zZygiUElEICVkIGlzIG5vdCBhIFBvc3RncmVT UUwgc2VydmVyIHByb2Nlc3MiLCBwaWQpKSk7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlpZiAo U2VuZFByb2NTaWduYWwocGlkLCByZWFzb24sIHByb2MtPmJhY2tlbmRJZCkgPCAwKQorCXsKKwkJ LyogQWdhaW4sIGp1c3QgYSB3YXJuaW5nIHRvIGFsbG93IGxvb3BzICovCisJCWVyZXBvcnQoV0FS TklORywKKwkJCQkoZXJybXNnKCJjb3VsZCBub3Qgc2VuZCBzaWduYWwgdG8gcHJvY2VzcyAlZDog JW0iLCBwaWQpKSk7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMgYi9zcmMvYmFja2VuZC9z dG9yYWdlL2xtZ3IvbG9jay5jCmluZGV4IGMyNWFmN2ZlMDkuLjhhNzBhNmQ5NGUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMKKysrIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9sbWdyL2xvY2suYwpAQCAtNjE0LDE3ICs2MTQsMTggQEAgTG9ja0hlbGRCeU1lKGNvbnN0 IExPQ0tUQUcgKmxvY2t0YWcsIExPQ0tNT0RFIGxvY2ttb2RlKQogCXJldHVybiAobG9jYWxsb2Nr ICYmIGxvY2FsbG9jay0+bkxvY2tzID4gMCk7CiB9CiAKLSNpZmRlZiBVU0VfQVNTRVJUX0NIRUNL SU5HCiAvKgotICogR2V0TG9ja01ldGhvZExvY2FsSGFzaCAtLSByZXR1cm4gdGhlIGhhc2ggb2Yg bG9jYWwgbG9ja3MsIGZvciBtb2R1bGVzIHRoYXQKLSAqCQlldmFsdWF0ZSBhc3NlcnRpb25zIGJh c2VkIG9uIGFsbCBsb2NrcyBoZWxkLgorICogR2V0TG9ja01ldGhvZExvY2FsSGFzaCAtLSByZXR1 cm4gdGhlIGhhc2ggb2YgbG9jYWwgbG9ja3MsIG1haW5seSBmb3IKKyAqCQltb2R1bGVzIHRoYXQg ZXZhbHVhdGUgYXNzZXJ0aW9ucyBiYXNlZCBvbiBhbGwgbG9ja3MgaGVsZC4KKyAqCisgKiBOT1RF OiBXaGVuIHRoZXJlIGFyZSBtYW55IGVudHJpZXMgaW4gTG9ja01ldGhvZExvY2FsSGFzaCwgY2Fs bGluZyB0aGlzCisgKiBmdW5jdGlvbiBhbmQgbG9va2luZyBpbnRvIGFsbCBvZiB0aGVtIGNhbiBs ZWFkIHRvIHBlcmZvcm1hbmNlIHByb2JsZW1zLgogICovCiBIVEFCICoKIEdldExvY2tNZXRob2RM b2NhbEhhc2godm9pZCkKIHsKIAlyZXR1cm4gTG9ja01ldGhvZExvY2FsSGFzaDsKIH0KLSNlbmRp ZgogCiAvKgogICogTG9ja0hhc1dhaXRlcnMgLS0gbG9vayB1cCAnbG9ja3RhZycgYW5kIGNoZWNr IGlmIHJlbGVhc2luZyB0aGlzCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVz LmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKaW5kZXggMDc3NWFiZTM1ZC4uNzc0ZGFk Yjg3YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9i YWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgImFjY2Vz cy94YWN0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiY29tbWFu ZHMvYXN5bmMuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9leHBsYWluLmgiCiAjaW5jbHVkZSAiY29t bWFuZHMvcHJlcGFyZS5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL3NwaS5oIgogI2luY2x1ZGUgImpp dC9qaXQuaCIKQEAgLTMzNjYsNiArMzM2Nyw5IEBAIFByb2Nlc3NJbnRlcnJ1cHRzKHZvaWQpCiAK IAlpZiAoTG9nTWVtb3J5Q29udGV4dFBlbmRpbmcpCiAJCVByb2Nlc3NMb2dNZW1vcnlDb250ZXh0 SW50ZXJydXB0KCk7CisKKwlpZiAoTG9nQ3VycmVudFBsYW5QZW5kaW5nKQorCQlQcm9jZXNzTG9n Q3VycmVudFBsYW5JbnRlcnJ1cHQoKTsKIH0KIAogCkBAIC00Mjg5LDYgKzQyOTMsOSBAQCBQb3N0 Z3Jlc01haW4oY29uc3QgY2hhciAqZGJuYW1lLCBjb25zdCBjaGFyICp1c2VybmFtZSkKIAkJLyog V2UgZG9uJ3QgaGF2ZSBhIHRyYW5zYWN0aW9uIGNvbW1hbmQgb3BlbiBhbnltb3JlICovCiAJCXhh Y3Rfc3RhcnRlZCA9IGZhbHNlOwogCisJCS8qIFdlIGhhdmUgbm8gcnVubmluZyBxdWVyeSAqLwor CQlBY3RpdmVRdWVyeURlc2MgPSBOVUxMOworCiAJCS8qCiAJCSAqIElmIGFuIGVycm9yIG9jY3Vy cmVkIHdoaWxlIHdlIHdlcmUgcmVhZGluZyBhIG1lc3NhZ2UgZnJvbSB0aGUKIAkJICogY2xpZW50 LCB3ZSBoYXZlIHBvdGVudGlhbGx5IGxvc3QgdHJhY2sgb2Ygd2hlcmUgdGhlIHByZXZpb3VzCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbWN4dGZ1bmNzLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvbWN4dGZ1bmNzLmMKaW5kZXggNmRkYmY3MGIzMC4uMmRiNjYyMjgyZiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9tY3h0ZnVuY3MuYwpAQCAtMTgsOCArMTgsOCBAQAogI2luY2x1ZGUgImZ1 bmNhcGkuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJtYi9wZ193Y2hhci5o IgotI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5 LmgiCisjaW5jbHVkZSAic3RvcmFnZS9zaWduYWxmdW5jcy5oIgogI2luY2x1ZGUgInV0aWxzL2J1 aWx0aW5zLmgiCiAKIC8qIC0tLS0tLS0tLS0KQEAgLTE3NSwzNyArMTc1LDUgQEAgRGF0dW0KIHBn X2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cyhQR19GVU5DVElPTl9BUkdTKQogewogCWludAkJ CXBpZCA9IFBHX0dFVEFSR19JTlQzMigwKTsKLQlQR1BST0MJICAgKnByb2M7Ci0KLQlwcm9jID0g QmFja2VuZFBpZEdldFByb2MocGlkKTsKLQotCS8qCi0JICogQmFja2VuZFBpZEdldFByb2MgcmV0 dXJucyBOVUxMIGlmIHRoZSBwaWQgaXNuJ3QgdmFsaWQ7IGJ1dCBieSB0aGUgdGltZQotCSAqIHdl IHJlYWNoIGtpbGwoKSwgYSBwcm9jZXNzIGZvciB3aGljaCB3ZSBnZXQgYSB2YWxpZCBwcm9jIGhl cmUgbWlnaHQKLQkgKiBoYXZlIHRlcm1pbmF0ZWQgb24gaXRzIG93bi4gIFRoZXJlJ3Mgbm8gd2F5 IHRvIGFjcXVpcmUgYSBsb2NrIG9uIGFuCi0JICogYXJiaXRyYXJ5IHByb2Nlc3MgdG8gcHJldmVu dCB0aGF0LiBCdXQgc2luY2UgdGhpcyBtZWNoYW5pc20gaXMgdXN1YWxseQotCSAqIHVzZWQgdG8g ZGVidWcgYSBiYWNrZW5kIHJ1bm5pbmcgYW5kIGNvbnN1bWluZyBsb3RzIG9mIG1lbW9yeSwgdGhh dCBpdAotCSAqIG1pZ2h0IGVuZCBvbiBpdHMgb3duIGZpcnN0IGFuZCBpdHMgbWVtb3J5IGNvbnRl eHRzIGFyZSBub3QgbG9nZ2VkIGlzCi0JICogbm90IGEgcHJvYmxlbS4KLQkgKi8KLQlpZiAocHJv YyA9PSBOVUxMKQotCXsKLQkJLyoKLQkJICogVGhpcyBpcyBqdXN0IGEgd2FybmluZyBzbyBhIGxv b3AtdGhyb3VnaC1yZXN1bHRzZXQgd2lsbCBub3QgYWJvcnQKLQkJICogaWYgb25lIGJhY2tlbmQg dGVybWluYXRlZCBvbiBpdHMgb3duIGR1cmluZyB0aGUgcnVuLgotCQkgKi8KLQkJZXJlcG9ydChX QVJOSU5HLAotCQkJCShlcnJtc2coIlBJRCAlZCBpcyBub3QgYSBQb3N0Z3JlU1FMIHNlcnZlciBw cm9jZXNzIiwgcGlkKSkpOwotCQlQR19SRVRVUk5fQk9PTChmYWxzZSk7Ci0JfQotCi0JaWYgKFNl bmRQcm9jU2lnbmFsKHBpZCwgUFJPQ1NJR19MT0dfTUVNT1JZX0NPTlRFWFQsIHByb2MtPmJhY2tl bmRJZCkgPCAwKQotCXsKLQkJLyogQWdhaW4sIGp1c3QgYSB3YXJuaW5nIHRvIGFsbG93IGxvb3Bz ICovCi0JCWVyZXBvcnQoV0FSTklORywKLQkJCQkoZXJybXNnKCJjb3VsZCBub3Qgc2VuZCBzaWdu YWwgdG8gcHJvY2VzcyAlZDogJW0iLCBwaWQpKSk7Ci0JCVBHX1JFVFVSTl9CT09MKGZhbHNlKTsK LQl9Ci0KLQlQR19SRVRVUk5fQk9PTCh0cnVlKTsKKwlQR19SRVRVUk5fQk9PTChTZW5kUHJvY1Np Z25hbEZvckxvZ0luZm8ocGlkLCBQUk9DU0lHX0xPR19NRU1PUllfQ09OVEVYVCkpOwogfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMgYi9zcmMvYmFja2VuZC91 dGlscy9pbml0L2dsb2JhbHMuYwppbmRleCAzODFkOWU1NDhkLi4xMjZlZDEwMzYyIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9pbml0L2dsb2JhbHMuYwpAQCAtMzYsNiArMzYsNyBAQCB2b2xhdGlsZSBzaWdfYXRvbWlj X3QgSWRsZUluVHJhbnNhY3Rpb25TZXNzaW9uVGltZW91dFBlbmRpbmcgPSBmYWxzZTsKIHZvbGF0 aWxlIHNpZ19hdG9taWNfdCBJZGxlU2Vzc2lvblRpbWVvdXRQZW5kaW5nID0gZmFsc2U7CiB2b2xh dGlsZSBzaWdfYXRvbWljX3QgUHJvY1NpZ25hbEJhcnJpZXJQZW5kaW5nID0gZmFsc2U7CiB2b2xh dGlsZSBzaWdfYXRvbWljX3QgTG9nTWVtb3J5Q29udGV4dFBlbmRpbmcgPSBmYWxzZTsKK3ZvbGF0 aWxlIHNpZ19hdG9taWNfdCBMb2dDdXJyZW50UGxhblBlbmRpbmcgPSBmYWxzZTsKIHZvbGF0aWxl IHVpbnQzMiBJbnRlcnJ1cHRIb2xkb2ZmQ291bnQgPSAwOwogdm9sYXRpbGUgdWludDMyIFF1ZXJ5 Q2FuY2VsSG9sZG9mZkNvdW50ID0gMDsKIHZvbGF0aWxlIHVpbnQzMiBDcml0U2VjdGlvbkNvdW50 ID0gMDsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IGQwNjhkNjUzMmUuLjU3NjNiNDVmMjMg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtODAzOCw2ICs4MDM4LDEyIEBACiAgIHByb3Jl dHR5cGUgPT4gJ2Jvb2wnLCBwcm9hcmd0eXBlcyA9PiAnaW50NCcsCiAgIHByb3NyYyA9PiAncGdf bG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzJyB9LAogCisjIGxvZ2dpbmcgcGxhbiBvZiB0aGUg cnVubmluZyBxdWVyeSBvbiB0aGUgc3BlY2lmaWVkIGJhY2tlbmQKK3sgb2lkID0+ICc0NTQ1Jywg ZGVzY3IgPT4gJ2xvZyBwbGFuIG9mIHRoZSBydW5uaW5nIHF1ZXJ5IG9uIHRoZSBzcGVjaWZpZWQg YmFja2VuZCcsCisgIHByb25hbWUgPT4gJ3BnX2xvZ19jdXJyZW50X3F1ZXJ5X3BsYW4nLAorICBw cm92b2xhdGlsZSA9PiAndicsIHByb3JldHR5cGUgPT4gJ2Jvb2wnLAorICBwcm9hcmd0eXBlcyA9 PiAnaW50NCcsIHByb3NyYyA9PiAncGdfbG9nX2N1cnJlbnRfcXVlcnlfcGxhbicgfSwKKwogIyBu b24tcGVyc2lzdGVudCBzZXJpZXMgZ2VuZXJhdG9yCiB7IG9pZCA9PiAnMTA2NicsIGRlc2NyID0+ ICdub24tcGVyc2lzdGVudCBzZXJpZXMgZ2VuZXJhdG9yJywKICAgcHJvbmFtZSA9PiAnZ2VuZXJh dGVfc2VyaWVzJywgcHJvcm93cyA9PiAnMTAwMCcsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9j b21tYW5kcy9leHBsYWluLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKaW5kZXgg ZTk0ZDllNDljZi4uN2MyZGNlN2NkZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMv ZXhwbGFpbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaApAQCAtNTksNiAr NTksNyBAQCB0eXBlZGVmIHN0cnVjdCBFeHBsYWluU3RhdGUKIAlib29sCQloaWRlX3dvcmtlcnM7 CS8qIHNldCBpZiB3ZSBmaW5kIGFuIGludmlzaWJsZSBHYXRoZXIgKi8KIAkvKiBzdGF0ZSByZWxh dGVkIHRvIHRoZSBjdXJyZW50IHBsYW4gbm9kZSAqLwogCUV4cGxhaW5Xb3JrZXJzU3RhdGUgKndv cmtlcnNfc3RhdGU7IC8qIG5lZWRlZCBpZiBwYXJhbGxlbCBwbGFuICovCisJYm9vbAkJcnVubmlu ZzsJCS8qIHdoZXRoZXIgdGFyZ2V0IHF1ZXJ5IGlzIGFscmVhZHkgcnVubmluZyAqLwogfSBFeHBs YWluU3RhdGU7CiAKIC8qIEhvb2sgZm9yIHBsdWdpbnMgdG8gZ2V0IGNvbnRyb2wgaW4gRXhwbGFp bk9uZVF1ZXJ5KCkgKi8KQEAgLTEyNCw0ICsxMjUsNiBAQCBleHRlcm4gdm9pZCBFeHBsYWluT3Bl bkdyb3VwKGNvbnN0IGNoYXIgKm9ianR5cGUsIGNvbnN0IGNoYXIgKmxhYmVsbmFtZSwKIGV4dGVy biB2b2lkIEV4cGxhaW5DbG9zZUdyb3VwKGNvbnN0IGNoYXIgKm9ianR5cGUsIGNvbnN0IGNoYXIg KmxhYmVsbmFtZSwKIAkJCQkJCQkgIGJvb2wgbGFiZWxlZCwgRXhwbGFpblN0YXRlICplcyk7CiAK K2V4dGVybiB2b2lkIEhhbmRsZUxvZ0N1cnJlbnRQbGFuSW50ZXJydXB0KHZvaWQpOworZXh0ZXJu IHZvaWQgUHJvY2Vzc0xvZ0N1cnJlbnRQbGFuSW50ZXJydXB0KHZvaWQpOwogI2VuZGlmCQkJCQkJ CS8qIEVYUExBSU5fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmggYi9z cmMvaW5jbHVkZS9taXNjYWRtaW4uaAppbmRleCA5MGEzMDE2MDY1Li4wZmIwZGE3N2UyIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAorKysgYi9zcmMvaW5jbHVkZS9taXNjYWRt aW4uaApAQCAtOTQsNiArOTQsNyBAQCBleHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2lnX2F0 b21pY190IElkbGVJblRyYW5zYWN0aW9uU2Vzc2lvblRpbWVvdXRQZW5kaW5nOwogZXh0ZXJuIFBH RExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBJZGxlU2Vzc2lvblRpbWVvdXRQZW5kaW5n OwogZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBQcm9jU2lnbmFsQmFy cmllclBlbmRpbmc7CiBleHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2lnX2F0b21pY190IExv Z01lbW9yeUNvbnRleHRQZW5kaW5nOworZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19h dG9taWNfdCBMb2dDdXJyZW50UGxhblBlbmRpbmc7CiAKIGV4dGVybiBQR0RMTElNUE9SVCB2b2xh dGlsZSBzaWdfYXRvbWljX3QgQ2hlY2tDbGllbnRDb25uZWN0aW9uUGVuZGluZzsKIGV4dGVybiBQ R0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgQ2xpZW50Q29ubmVjdGlvbkxvc3Q7CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaCBiL3NyYy9pbmNsdWRl L3N0b3JhZ2UvcHJvY3NpZ25hbC5oCmluZGV4IGVlYzE4NmJlMmUuLmMxYTcyMThkNjkgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCisrKyBiL3NyYy9pbmNsdWRl L3N0b3JhZ2UvcHJvY3NpZ25hbC5oCkBAIC0zNSw2ICszNSw3IEBAIHR5cGVkZWYgZW51bQogCVBS T0NTSUdfV0FMU05EX0lOSVRfU1RPUFBJTkcsCS8qIGFzayB3YWxzZW5kZXJzIHRvIHByZXBhcmUg Zm9yIHNodXRkb3duICAqLwogCVBST0NTSUdfQkFSUklFUiwJCQkvKiBnbG9iYWwgYmFycmllciBp bnRlcnJ1cHQgICovCiAJUFJPQ1NJR19MT0dfTUVNT1JZX0NPTlRFWFQsIC8qIGFzayBiYWNrZW5k IHRvIGxvZyB0aGUgbWVtb3J5IGNvbnRleHRzICovCisJUFJPQ1NJR19MT0dfQ1VSUkVOVF9QTEFO LCAvKiBhc2sgYmFja2VuZCB0byBsb2cgcGxhbiBvZiB0aGUgY3VycmVudCBxdWVyeSAqLwogCiAJ LyogUmVjb3ZlcnkgY29uZmxpY3QgcmVhc29ucyAqLwogCVBST0NTSUdfUkVDT1ZFUllfQ09ORkxJ Q1RfREFUQUJBU0UsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS90Y29wL3BxdWVyeS5oIGIvc3Jj L2luY2x1ZGUvdGNvcC9wcXVlcnkuaAppbmRleCAyMzE4ZjA0ZmYwLi5kMzdhNWViODM3IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS90Y29wL3BxdWVyeS5oCisrKyBiL3NyYy9pbmNsdWRlL3Rjb3Av cHF1ZXJ5LmgKQEAgLTIxLDYgKzIxLDcgQEAgc3RydWN0IFBsYW5uZWRTdG10OwkJCQkvKiBhdm9p ZCBpbmNsdWRpbmcgcGxhbm5vZGVzLmggaGVyZSAqLwogCiAKIGV4dGVybiBQR0RMTElNUE9SVCBQ b3J0YWwgQWN0aXZlUG9ydGFsOworZXh0ZXJuIFBHRExMSU1QT1JUIFF1ZXJ5RGVzYyAqQWN0aXZl UXVlcnlEZXNjOwogCiAKIGV4dGVybiBQb3J0YWxTdHJhdGVneSBDaG9vc2VQb3J0YWxTdHJhdGVn eShMaXN0ICpzdG10cyk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL21p c2NfZnVuY3Rpb25zLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbWlzY19mdW5jdGlv bnMub3V0CmluZGV4IDcxZDMxNmNhZDMuLjkxODQ2MGVlMzUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvbWlzY19mdW5jdGlvbnMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvbWlzY19mdW5jdGlvbnMub3V0CkBAIC0xMzQsMjEgKzEzNCwyMiBAQCBMSU5F IDE6IFNFTEVDVCBudW1fbnVsbHMoKTsKICAgICAgICAgICAgICAgIF4KIEhJTlQ6ICBObyBmdW5j dGlvbiBtYXRjaGVzIHRoZSBnaXZlbiBuYW1lIGFuZCBhcmd1bWVudCB0eXBlcy4gWW91IG1pZ2h0 IG5lZWQgdG8gYWRkIGV4cGxpY2l0IHR5cGUgY2FzdHMuCiAtLQotLS0gcGdfbG9nX2JhY2tlbmRf bWVtb3J5X2NvbnRleHRzKCkKKy0tIFRlc3QgbG9nZ2luZyBmdW5jdGlvbnMKIC0tCi0tLSBNZW1v cnkgY29udGV4dHMgYXJlIGxvZ2dlZCBhbmQgdGhleSBhcmUgbm90IHJldHVybmVkIHRvIHRoZSBm dW5jdGlvbi4KKy0tIFRoZSBvdXRwdXRzIG9mIHRoZXNlIGZ1bmN0aW9ucyBhcmUgbG9nZ2VkIGFu ZCB0aGV5IGFyZSBub3QgcmV0dXJuZWQgdG8KKy0tIHRoZSBmdW5jdGlvbi4KIC0tIEZ1cnRoZXJt b3JlLCB0aGVpciBjb250ZW50cyBjYW4gdmFyeSBkZXBlbmRpbmcgb24gdGhlIHRpbWluZy4gSG93 ZXZlciwKIC0tIHdlIGNhbiBhdCBsZWFzdCB2ZXJpZnkgdGhhdCB0aGUgY29kZSBkb2Vzbid0IGZh aWwsIGFuZCB0aGF0IHRoZQogLS0gcGVybWlzc2lvbnMgYXJlIHNldCBwcm9wZXJseS4KLS0tCist LSBwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMoKQorQ1JFQVRFIFJPTEUgcmVncmVzc19s b2c7CiBTRUxFQ1QgcGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKHBnX2JhY2tlbmRfcGlk KCkpOwogIHBnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cyAKIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgdAogKDEgcm93KQogCi1DUkVBVEUgUk9MRSByZWdyZXNzX2xvZ19t ZW1vcnk7Ci1TRUxFQ1QgaGFzX2Z1bmN0aW9uX3ByaXZpbGVnZSgncmVncmVzc19sb2dfbWVtb3J5 JywKK1NFTEVDVCBoYXNfZnVuY3Rpb25fcHJpdmlsZWdlKCdyZWdyZXNzX2xvZycsCiAgICdwZ19s b2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMoaW50ZWdlciknLCAnRVhFQ1VURScpOyAtLSBubwog IGhhc19mdW5jdGlvbl9wcml2aWxlZ2UgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE1 NiwxNSArMTU3LDE1IEBAIFNFTEVDVCBoYXNfZnVuY3Rpb25fcHJpdmlsZWdlKCdyZWdyZXNzX2xv Z19tZW1vcnknLAogKDEgcm93KQogCiBHUkFOVCBFWEVDVVRFIE9OIEZVTkNUSU9OIHBnX2xvZ19i YWNrZW5kX21lbW9yeV9jb250ZXh0cyhpbnRlZ2VyKQotICBUTyByZWdyZXNzX2xvZ19tZW1vcnk7 Ci1TRUxFQ1QgaGFzX2Z1bmN0aW9uX3ByaXZpbGVnZSgncmVncmVzc19sb2dfbWVtb3J5JywKKyAg VE8gcmVncmVzc19sb2c7CitTRUxFQ1QgaGFzX2Z1bmN0aW9uX3ByaXZpbGVnZSgncmVncmVzc19s b2cnLAogICAncGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKGludGVnZXIpJywgJ0VYRUNV VEUnKTsgLS0geWVzCiAgaGFzX2Z1bmN0aW9uX3ByaXZpbGVnZSAKIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogIHQKICgxIHJvdykKIAotU0VUIFJPTEUgcmVncmVzc19sb2dfbWVtb3J5OworU0VU IFJPTEUgcmVncmVzc19sb2c7CiBTRUxFQ1QgcGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRz KHBnX2JhY2tlbmRfcGlkKCkpOwogIHBnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cyAKIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNzMsOCArMTc0LDQxIEBAIFNFTEVD VCBwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMocGdfYmFja2VuZF9waWQoKSk7CiAKIFJF U0VUIFJPTEU7CiBSRVZPS0UgRVhFQ1VURSBPTiBGVU5DVElPTiBwZ19sb2dfYmFja2VuZF9tZW1v cnlfY29udGV4dHMoaW50ZWdlcikKLSAgRlJPTSByZWdyZXNzX2xvZ19tZW1vcnk7Ci1EUk9QIFJP TEUgcmVncmVzc19sb2dfbWVtb3J5OworICBGUk9NIHJlZ3Jlc3NfbG9nOworLS0gcGdfbG9nX2N1 cnJlbnRfcXVlcnlfcGxhbigpCitTRUxFQ1QgcGdfbG9nX2N1cnJlbnRfcXVlcnlfcGxhbihwZ19i YWNrZW5kX3BpZCgpKTsKKyBwZ19sb2dfY3VycmVudF9xdWVyeV9wbGFuIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgaGFzX2Z1bmN0aW9uX3ByaXZp bGVnZSgncmVncmVzc19sb2cnLAorICAncGdfbG9nX2N1cnJlbnRfcXVlcnlfcGxhbihpbnRlZ2Vy KScsICdFWEVDVVRFJyk7IC0tIG5vCisgaGFzX2Z1bmN0aW9uX3ByaXZpbGVnZSAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworR1JBTlQgRVhFQ1VURSBPTiBGVU5DVElP TiBwZ19sb2dfY3VycmVudF9xdWVyeV9wbGFuKGludGVnZXIpCisgIFRPIHJlZ3Jlc3NfbG9nOwor U0VMRUNUIGhhc19mdW5jdGlvbl9wcml2aWxlZ2UoJ3JlZ3Jlc3NfbG9nJywKKyAgJ3BnX2xvZ19j dXJyZW50X3F1ZXJ5X3BsYW4oaW50ZWdlciknLCAnRVhFQ1VURScpOyAtLSB5ZXMKKyBoYXNfZnVu Y3Rpb25fcHJpdmlsZWdlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQor CitTRVQgUk9MRSByZWdyZXNzX2xvZzsKK1NFTEVDVCBwZ19sb2dfY3VycmVudF9xdWVyeV9wbGFu KHBnX2JhY2tlbmRfcGlkKCkpOworIHBnX2xvZ19jdXJyZW50X3F1ZXJ5X3BsYW4gCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1JFU0VUIFJPTEU7CitSRVZPS0Ug RVhFQ1VURSBPTiBGVU5DVElPTiBwZ19sb2dfY3VycmVudF9xdWVyeV9wbGFuKGludGVnZXIpCisg IEZST00gcmVncmVzc19sb2c7CitEUk9QIFJPTEUgcmVncmVzc19sb2c7CiAtLQogLS0gVGVzdCBz b21lIGJ1aWx0LWluIFNSRnMKIC0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9t aXNjX2Z1bmN0aW9ucy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9taXNjX2Z1bmN0aW9ucy5z cWwKaW5kZXggOGMyMzg3NGIzZi4uNDYyYjY2YTc3MCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvbWlzY19mdW5jdGlvbnMuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL21p c2NfZnVuY3Rpb25zLnNxbApAQCAtMzEsMzUgKzMxLDU1IEBAIFNFTEVDVCBudW1fbm9ubnVsbHMo KTsKIFNFTEVDVCBudW1fbnVsbHMoKTsKIAogLS0KLS0tIHBnX2xvZ19iYWNrZW5kX21lbW9yeV9j b250ZXh0cygpCistLSBUZXN0IGxvZ2dpbmcgZnVuY3Rpb25zCiAtLQotLS0gTWVtb3J5IGNvbnRl eHRzIGFyZSBsb2dnZWQgYW5kIHRoZXkgYXJlIG5vdCByZXR1cm5lZCB0byB0aGUgZnVuY3Rpb24u CistLSBUaGUgb3V0cHV0cyBvZiB0aGVzZSBmdW5jdGlvbnMgYXJlIGxvZ2dlZCBhbmQgdGhleSBh cmUgbm90IHJldHVybmVkIHRvCistLSB0aGUgZnVuY3Rpb24uCiAtLSBGdXJ0aGVybW9yZSwgdGhl aXIgY29udGVudHMgY2FuIHZhcnkgZGVwZW5kaW5nIG9uIHRoZSB0aW1pbmcuIEhvd2V2ZXIsCiAt LSB3ZSBjYW4gYXQgbGVhc3QgdmVyaWZ5IHRoYXQgdGhlIGNvZGUgZG9lc24ndCBmYWlsLCBhbmQg dGhhdCB0aGUKIC0tIHBlcm1pc3Npb25zIGFyZSBzZXQgcHJvcGVybHkuCi0tLQogCi1TRUxFQ1Qg cGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKHBnX2JhY2tlbmRfcGlkKCkpOworLS0gcGdf bG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKCkKK0NSRUFURSBST0xFIHJlZ3Jlc3NfbG9nOwog Ci1DUkVBVEUgUk9MRSByZWdyZXNzX2xvZ19tZW1vcnk7CitTRUxFQ1QgcGdfbG9nX2JhY2tlbmRf bWVtb3J5X2NvbnRleHRzKHBnX2JhY2tlbmRfcGlkKCkpOwogCi1TRUxFQ1QgaGFzX2Z1bmN0aW9u X3ByaXZpbGVnZSgncmVncmVzc19sb2dfbWVtb3J5JywKK1NFTEVDVCBoYXNfZnVuY3Rpb25fcHJp dmlsZWdlKCdyZWdyZXNzX2xvZycsCiAgICdwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMo aW50ZWdlciknLCAnRVhFQ1VURScpOyAtLSBubwogCiBHUkFOVCBFWEVDVVRFIE9OIEZVTkNUSU9O IHBnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cyhpbnRlZ2VyKQotICBUTyByZWdyZXNzX2xv Z19tZW1vcnk7CisgIFRPIHJlZ3Jlc3NfbG9nOwogCi1TRUxFQ1QgaGFzX2Z1bmN0aW9uX3ByaXZp bGVnZSgncmVncmVzc19sb2dfbWVtb3J5JywKK1NFTEVDVCBoYXNfZnVuY3Rpb25fcHJpdmlsZWdl KCdyZWdyZXNzX2xvZycsCiAgICdwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMoaW50ZWdl ciknLCAnRVhFQ1VURScpOyAtLSB5ZXMKIAotU0VUIFJPTEUgcmVncmVzc19sb2dfbWVtb3J5Owor U0VUIFJPTEUgcmVncmVzc19sb2c7CiBTRUxFQ1QgcGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRl eHRzKHBnX2JhY2tlbmRfcGlkKCkpOwogUkVTRVQgUk9MRTsKIAogUkVWT0tFIEVYRUNVVEUgT04g RlVOQ1RJT04gcGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKGludGVnZXIpCi0gIEZST00g cmVncmVzc19sb2dfbWVtb3J5OworICBGUk9NIHJlZ3Jlc3NfbG9nOworCistLSBwZ19sb2dfY3Vy cmVudF9xdWVyeV9wbGFuKCkKK1NFTEVDVCBwZ19sb2dfY3VycmVudF9xdWVyeV9wbGFuKHBnX2Jh Y2tlbmRfcGlkKCkpOworCitTRUxFQ1QgaGFzX2Z1bmN0aW9uX3ByaXZpbGVnZSgncmVncmVzc19s b2cnLAorICAncGdfbG9nX2N1cnJlbnRfcXVlcnlfcGxhbihpbnRlZ2VyKScsICdFWEVDVVRFJyk7 IC0tIG5vCisKK0dSQU5UIEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfbG9nX2N1cnJlbnRfcXVlcnlf cGxhbihpbnRlZ2VyKQorICBUTyByZWdyZXNzX2xvZzsKKworU0VMRUNUIGhhc19mdW5jdGlvbl9w cml2aWxlZ2UoJ3JlZ3Jlc3NfbG9nJywKKyAgJ3BnX2xvZ19jdXJyZW50X3F1ZXJ5X3BsYW4oaW50 ZWdlciknLCAnRVhFQ1VURScpOyAtLSB5ZXMKKworU0VUIFJPTEUgcmVncmVzc19sb2c7CitTRUxF Q1QgcGdfbG9nX2N1cnJlbnRfcXVlcnlfcGxhbihwZ19iYWNrZW5kX3BpZCgpKTsKK1JFU0VUIFJP TEU7CisKK1JFVk9LRSBFWEVDVVRFIE9OIEZVTkNUSU9OIHBnX2xvZ19jdXJyZW50X3F1ZXJ5X3Bs YW4oaW50ZWdlcikKKyAgRlJPTSByZWdyZXNzX2xvZzsKIAotRFJPUCBST0xFIHJlZ3Jlc3NfbG9n X21lbW9yeTsKK0RST1AgUk9MRSByZWdyZXNzX2xvZzsKIAogLS0KIC0tIFRlc3Qgc29tZSBidWls dC1pbiBTUkZzCgpiYXNlLWNvbW1pdDogYjBmNzQyNWVjMjQ0NTY3OGYzMjM4MWRlOGJkMzE3NGQz Y2MyMTY3ZQotLSAKMi4yNy4wCgo= --=_5efc4e88d3e49624c15448d049dd57c0--