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 1lTNwv-00089s-C3 for pgsql-hackers@arkaria.postgresql.org; Mon, 05 Apr 2021 12:03:21 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1lTNwu-0007NS-9T for pgsql-hackers@arkaria.postgresql.org; Mon, 05 Apr 2021 12:03:20 +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 1lTNwt-0007NK-Vw for pgsql-hackers@lists.postgresql.org; Mon, 05 Apr 2021 12:03:20 +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 1lTNwr-0002DB-1d for pgsql-hackers@postgresql.org; Mon, 05 Apr 2021 12:03:19 +0000 Received: from oss.nttdata.com (localhost [127.0.0.1]) by oss.nttdata.com (Postfix) with ESMTP id 899A062829; Mon, 5 Apr 2021 21:03:12 +0900 (JST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.102.3 at oss.nttdata.com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_6ebc0663ff20aad6b537220b9e277165" Date: Mon, 05 Apr 2021 21:03:12 +0900 From: torikoshia To: Fujii Masao , Zhihong Yu Cc: Kyotaro Horiguchi , PostgreSQL-development , Tom Lane , gkokolatos@protonmail.com, kasahara.tatsuhito@gmail.com, Craig Ringer Subject: Re: Get memory contexts of an arbitrary backend process In-Reply-To: <6ab7b7f1-8dca-288f-5578-0a0716567341@oss.nttdata.com> References: <1f259e90-08c8-2202-be66-f7ee05d22cd2@oss.nttdata.com> <20210331.151612.259240960686480846.horikyota.ntt@gmail.com> <65fbf059-bcff-1585-59a1-1ec6a6f5ac75@oss.nttdata.com> <6ab7b7f1-8dca-288f-5578-0a0716567341@oss.nttdata.com> Message-ID: X-Sender: torikoshia@oss.nttdata.com User-Agent: Roundcube Webmail/1.1.9 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_6ebc0663ff20aad6b537220b9e277165 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed On 2021-04-05 12:59, Fujii Masao wrote: > On 2021/04/05 12:20, Zhihong Yu wrote: Thanks for reviewing! >> + * On receipt of this signal, a backend sets the flag in the signal >> + * handler, and then which causes the next CHECK_FOR_INTERRUPTS() >> I think the 'and then' is not needed: Although I wonder either would be fine, removed the words. >> +        * This is just a warning so a loop-through-resultset will not >> abort >> +        * if one backend logged its memory contexts during the run. >> >> The pid given by arg 0 is not a PostgreSQL server process. Which other >> backend could it be ? > > This is the comment that I added wrongly. So the comment should be > "This is just a warning so a loop-through-resultset will not abort > if one backend terminated on its own during the run.", > like pg_signal_backend(). Thought? +1. Attached v10 patch. Regards, --=_6ebc0663ff20aad6b537220b9e277165 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v10-0001-add-memorycontext-elog-print.patch Content-Disposition: attachment; filename=v10-0001-add-memorycontext-elog-print.patch; size=28742 RnJvbSA4OTMxMDk5Y2JmM2Q2ZTZlZjI0MTUwNDk2Y2I3OTU0MTM3ODVmODA4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpYUBvc3MubnR0 ZGF0YS5jb20+CkRhdGU6IE1vbiwgNSBBcHIgMjAyMSAyMDo0MDoxMiArMDkwMApTdWJqZWN0OiBb UEFUQ0ggdjEwXSBBZnRlciBjb21taXQgM2U5OGMwYmFmYjI4ZGUsIHdlIGNhbiBkaXNwbGF5IHRo ZSB1c2FnZSBvZgogbWVtb3J5IGNvbnRleHRzIHVzaW5nIHBnX2JhY2tlbmRfbWVtb3J5X2NvbnRl eHRzIHN5c3RlbSB2aWV3LiBIb3dldmVyLCBpdHMKIHRhcmdldCBwcm9jZXNzIGlzIGxpbWl0ZWQg dG8gdGhlIGJhY2tlbmQgd2hpY2ggaXMgc2hvd2luZyB0aGUgdmlldy4gVGhpcwogcGF0Y2ggaW50 cm9kdWNlcyBwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMocGlkKSB3aGljaCBsb2dzIG1l bW9yeQogY29udGV4dHMgb2YgdGhlIHNwZWNpZmllZCBiYWNrZW5kIHByb2Nlc3MuCgpDdXJyZW50 bHkgdGhlIG51bWJlciBvZiBjaGlsZCBjb250ZXh0cyB0byBiZSBsb2dnZWQgcGVyIHBhcmVudCBp cyBsaW1pdGVkCnRvIDEwMC4KQXMgd2l0aCBNZW1vcnlDb250ZXh0U3RhdHMoKSwgaXQgc3VwcG9z ZXMgdGhhdCBwcmFjdGljYWwgY2FzZXMgd2hlcmUgdGhlCmR1bXAgZ2V0cyBsb25nIHdpbGwgdHlw aWNhbGx5IGJlIGh1Z2UgbnVtYmVycyBvZiBzaWJsaW5ncyB1bmRlciB0aGUgc2FtZQpwYXJlbnQg Y29udGV4dDsgd2hpbGUgdGhlIGFkZGl0aW9uYWwgZGVidWdnaW5nIHZhbHVlIGZyb20gc2VlaW5n IGRldGFpbHMKYWJvdXQgaW5kaXZpZHVhbCBzaWJsaW5ncyBiZXlvbmQgMTAwIHdpbGwgbm90IGJl IGxhcmdlLgotLS0KIGRvYy9zcmMvc2dtbC9mdW5jLnNnbWwgICAgICAgICAgICAgICAgICAgICAg IHwgIDQ3ICsrKysrCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgICAgICAg ICB8ICAgNCArCiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgICAgICB8 ICAgMyArCiBzcmMvYmFja2VuZC91dGlscy9hZHQvbWN4dGZ1bmNzLmMgICAgICAgICAgICB8ICA2 MCArKysrKystCiBzcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYyAgICAgICAgICAgICB8 ICAgMSArCiBzcmMvYmFja2VuZC91dGlscy9tbWdyL2FzZXQuYyAgICAgICAgICAgICAgICB8ICAg OCArLQogc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9nZW5lcmF0aW9uLmMgICAgICAgICAgfCAgIDgg Ky0KIHNyYy9iYWNrZW5kL3V0aWxzL21tZ3IvbWN4dC5jICAgICAgICAgICAgICAgIHwgMTcxICsr KysrKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL21tZ3Ivc2xhYi5jICAgICAgICAg ICAgICAgIHwgICA5ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAg ICAgICB8ICAgNiArCiBzcmMvaW5jbHVkZS9taXNjYWRtaW4uaCAgICAgICAgICAgICAgICAgICAg ICB8ICAgMSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9tZW1ub2Rlcy5oICAgICAgICAgICAgICAgICB8 ICAgNiArLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmggICAgICAgICAgICAgfCAg IDEgKwogc3JjL2luY2x1ZGUvdXRpbHMvbWVtdXRpbHMuaCAgICAgICAgICAgICAgICAgfCAgIDUg Ky0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbWlzY19mdW5jdGlvbnMub3V0IHwgIDEzICsr CiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9taXNjX2Z1bmN0aW9ucy5zcWwgICAgICB8ICAgOSArCiAx NiBmaWxlcyBjaGFuZ2VkLCAzMDUgaW5zZXJ0aW9ucygrKSwgNDcgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbCBiL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwK aW5kZXggM2NmMjQzYTE2YS4uYTIwYmU0MzVjYSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Z1 bmMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sCkBAIC0yNDkxMyw2ICsyNDkxMywy MyBAQCBTRUxFQ1QgY29sbGF0aW9uIGZvciAoJ2ZvbycgQ09MTEFURSAiZGVfREUiKTsKICAgICAg ICA8L3BhcmE+PC9lbnRyeT4KICAgICAgIDwvcm93PgogCisgICAgICA8cm93PgorICAgICAgIDxl bnRyeSByb2xlPSJmdW5jX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+ CisgICAgICAgIDxpbmRleHRlcm0+CisgICAgICAgICA8cHJpbWFyeT5wZ19sb2dfYmFja2VuZF9t ZW1vcnlfY29udGV4dHM8L3ByaW1hcnk+CisgICAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgICA8 ZnVuY3Rpb24+cGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzPC9mdW5jdGlvbj4gKCA8cGFy YW1ldGVyPnBpZDwvcGFyYW1ldGVyPiA8dHlwZT5pbnRlZ2VyPC90eXBlPiApCisgICAgICAgIDxy ZXR1cm52YWx1ZT5ib29sZWFuPC9yZXR1cm52YWx1ZT4KKyAgICAgICA8L3BhcmE+CisgICAgICAg PHBhcmE+CisgICAgICAgIExvZ3MgdGhlIG1lbW9yeSBjb250ZXh0cyB3aG9zZSBiYWNrZW5kIHBy b2Nlc3MgaGFzIHRoZSBzcGVjaWZpZWQKKyAgICAgICAgcHJvY2VzcyBJRC4KKyAgICAgICAgTWVt b3J5IGNvbnRleHRzIHdpbGwgYmUgbG9nZ2VkIGJhc2VkIG9uIHRoZSBsb2cgY29uZmlndXJhdGlv biBzZXQuCisgICAgICAgIFNlZSA8eHJlZiBsaW5rZW5kPSJydW50aW1lLWNvbmZpZy1sb2dnaW5n Ii8+IGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICBPbmx5IHN1cGVydXNlcnMgY2FuIGxv ZyB0aGUgbWVtb3J5IGNvbnRleHRzLgorICAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICAgPC9y b3c+CisKICAgICAgIDxyb3c+CiAgICAgICAgPGVudHJ5IHJvbGU9ImZ1bmNfdGFibGVfZW50cnki PjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KICAgICAgICAgPGluZGV4dGVybT4KQEAgLTI0 OTgzLDYgKzI1MDAwLDM2IEBAIFNFTEVDVCBjb2xsYXRpb24gZm9yICgnZm9vJyBDT0xMQVRFICJk ZV9ERSIpOwogICAgIDxzdHJ1Y3RuYW1lPnBnX3N0YXRfYWN0aXZpdHk8L3N0cnVjdG5hbWU+IHZp ZXcuCiAgICA8L3BhcmE+CiAKKyAgIDxwYXJhPgorICAgIDxmdW5jdGlvbj5wZ19sb2dfYmFja2Vu ZF9tZW1vcnlfY29udGV4dHM8L2Z1bmN0aW9uPiBjYW4gYmUgdXNlZAorICAgIHRvIGxvZyB0aGUg bWVtb3J5IGNvbnRleHRzIG9mIHRoZSBiYWNrZW5kIHByb2Nlc3MuIEZvciBleGFtcGxlLAorPHBy b2dyYW1saXN0aW5nPgorcG9zdGdyZXM9IyBTRUxFQ1QgcGdfbG9nX2JhY2tlbmRfbWVtb3J5X2Nv bnRleHRzKHBnX2JhY2tlbmRfcGlkKCkpOworIHBnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0 cyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorPC9wcm9n cmFtbGlzdGluZz4KK09uZSBtZXNzYWdlIGZvciBlYWNoIG1lbW9yeSBjb250ZXh0IHdpbGwgYmUg bG9nZ2VkLiBGb3IgZXhhbXBsZToKKzxzY3JlZW4+CitMT0c6ICBsb2dnaW5nIG1lbW9yeSBjb250 ZXh0cyBvZiBQSUQgMTAzNzcKK1NUQVRFTUVOVDogIFNFTEVDVCBwZ19sb2dfYmFja2VuZF9tZW1v cnlfY29udGV4dHMocGdfYmFja2VuZF9waWQoKSk7CitMT0c6ICBsZXZlbDogMDsgVG9wTWVtb3J5 Q29udGV4dDogODA4MDAgdG90YWwgaW4gNiBibG9ja3M7IDE0NDMyIGZyZWUgKDUgY2h1bmtzKTsg NjYzNjggdXNlZAorTE9HOiAgbGV2ZWw6IDE7IHBnc3RhdCBUYWJTdGF0dXNBcnJheSBsb29rdXAg aGFzaCB0YWJsZTogODE5MiB0b3RhbCBpbiAxIGJsb2NrczsgMTQwOCBmcmVlICgwIGNodW5rcyk7 IDY3ODQgdXNlZAorTE9HOiAgbGV2ZWw6IDE7IFRvcFRyYW5zYWN0aW9uQ29udGV4dDogODE5MiB0 b3RhbCBpbiAxIGJsb2NrczsgNzcyMCBmcmVlICgxIGNodW5rcyk7IDQ3MiB1c2VkCitMT0c6ICBs ZXZlbDogMTsgUm93RGVzY3JpcHRpb25Db250ZXh0OiA4MTkyIHRvdGFsIGluIDEgYmxvY2tzOyA2 ODgwIGZyZWUgKDAgY2h1bmtzKTsgMTMxMiB1c2VkCitMT0c6ICBsZXZlbDogMTsgTWVzc2FnZUNv bnRleHQ6IDE2Mzg0IHRvdGFsIGluIDIgYmxvY2tzOyA1MTUyIGZyZWUgKDAgY2h1bmtzKTsgMTEy MzIgdXNlZAorTE9HOiAgbGV2ZWw6IDE7IE9wZXJhdG9yIGNsYXNzIGNhY2hlOiA4MTkyIHRvdGFs IGluIDEgYmxvY2tzOyA1MTIgZnJlZSAoMCBjaHVua3MpOyA3NjgwIHVzZWQKK0xPRzogIGxldmVs OiAxOyBzbWdyIHJlbGF0aW9uIHRhYmxlOiAxNjM4NCB0b3RhbCBpbiAyIGJsb2NrczsgNDU0NCBm cmVlICgzIGNodW5rcyk7IDExODQwIHVzZWQKK0xPRzogIGxldmVsOiAxOyBUcmFuc2FjdGlvbkFi b3J0Q29udGV4dDogMzI3NjggdG90YWwgaW4gMSBibG9ja3M7IDMyNTA0IGZyZWUgKDAgY2h1bmtz KTsgMjY0IHVzZWQKKy4uLgorTE9HOiAgbGV2ZWw6IDE7IEVycm9yQ29udGV4dDogODE5MiB0b3Rh bCBpbiAxIGJsb2NrczsgNzkyOCBmcmVlICgzIGNodW5rcyk7IDI2NCB1c2VkCitMT0c6ICBHcmFu ZCB0b3RhbDogMTY1MTkyMCBieXRlcyBpbiAyMDEgYmxvY2tzOyA2MjIzNjAgZnJlZSAoODggY2h1 bmtzKTsgMTAyOTU2MCB1c2VkCis8L3NjcmVlbj4KKyAgICBGb3IgbW9yZSB0aGFuIDEwMCBjaGls ZCBjb250ZXh0cyB1bmRlciB0aGUgc2FtZSBwYXJlbnQgb25lLAorICAgIDEwMCBjaGlsZCBjb250 ZXh0cyBhbmQgYSBzdW1tYXJ5IG9mIHRoZSByZW1haW5pbmcgb25lcyB3aWxsIGJlIGxvZ2dlZC4K KyAgIDwvcGFyYT4KKwogICA8L3NlY3QyPgogCiAgIDxzZWN0MiBpZD0iZnVuY3Rpb25zLWFkbWlu LWJhY2t1cCI+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFs LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKaW5kZXggYzZhOGQ0NjEx ZS4uZWFjNjg5NTE0MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3Np Z25hbC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwpAQCAtMzAs NiArMzAsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKICNpbmNsdWRlICJzdG9yYWdl L3NpbnZhbC5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKKyNpbmNsdWRlICJ1dGlscy9t ZW11dGlscy5oIgogCiAvKgogICogVGhlIFNJR1VTUjEgc2lnbmFsIGlzIG11bHRpcGxleGVkIHRv IHN1cHBvcnQgc2lnbmFsaW5nIG11bHRpcGxlIGV2ZW50CkBAIC02NTcsNiArNjU4LDkgQEAgcHJv Y3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIoU0lHTkFMX0FSR1MpCiAJaWYgKENoZWNrUHJvY1NpZ25h bChQUk9DU0lHX0JBUlJJRVIpKQogCQlIYW5kbGVQcm9jU2lnbmFsQmFycmllckludGVycnVwdCgp OwogCisJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX0xPR19NRU1PUllfQ09OVEVYVCkpCisJ CUhhbmRsZUxvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQoKTsKKwogCWlmIChDaGVja1Byb2NTaWdu YWwoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9EQVRBQkFTRSkpCiAJCVJlY292ZXJ5Q29uZmxp Y3RJbnRlcnJ1cHQoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9EQVRBQkFTRSk7CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9z dGdyZXMuYwppbmRleCBhZDM1MWUyZmQxLi4zMzBlYzViMDI4IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC90Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBA IC0zMzI3LDYgKzMzMjcsOSBAQCBQcm9jZXNzSW50ZXJydXB0cyh2b2lkKQogCiAJaWYgKFBhcmFs bGVsTWVzc2FnZVBlbmRpbmcpCiAJCUhhbmRsZVBhcmFsbGVsTWVzc2FnZXMoKTsKKworCWlmIChM b2dNZW1vcnlDb250ZXh0UGVuZGluZykKKwkJUHJvY2Vzc0xvZ01lbW9yeUNvbnRleHRJbnRlcnJ1 cHQoKTsKIH0KIAogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbWN4dGZ1bmNz LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbWN4dGZ1bmNzLmMKaW5kZXggYzAyZmE0NzU1MC4u ZTJiODdhN2VkOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tY3h0ZnVuY3MuYwpAQCAtMTgsNiArMTgsOCBA QAogI2luY2x1ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRl ICJtYi9wZ193Y2hhci5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgorI2luY2x1ZGUgInN0 b3JhZ2UvcHJvY2FycmF5LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKIAogLyogLS0t LS0tLS0tLQpAQCAtNjEsNyArNjMsNyBAQCBQdXRNZW1vcnlDb250ZXh0c1N0YXRzVHVwbGVTdG9y ZShUdXBsZXN0b3Jlc3RhdGUgKnR1cHN0b3JlLAogCiAJLyogRXhhbWluZSB0aGUgY29udGV4dCBp dHNlbGYgKi8KIAltZW1zZXQoJnN0YXQsIDAsIHNpemVvZihzdGF0KSk7Ci0JKCpjb250ZXh0LT5t ZXRob2RzLT5zdGF0cykgKGNvbnRleHQsIE5VTEwsICh2b2lkICopICZsZXZlbCwgJnN0YXQpOwor CSgqY29udGV4dC0+bWV0aG9kcy0+c3RhdHMpIChjb250ZXh0LCBOVUxMLCAodm9pZCAqKSAmbGV2 ZWwsICZzdGF0LCB0cnVlKTsKIAogCW1lbXNldCh2YWx1ZXMsIDAsIHNpemVvZih2YWx1ZXMpKTsK IAltZW1zZXQobnVsbHMsIDAsIHNpemVvZihudWxscykpOwpAQCAtMTU1LDMgKzE1Nyw1OSBAQCBw Z19nZXRfYmFja2VuZF9tZW1vcnlfY29udGV4dHMoUEdfRlVOQ1RJT05fQVJHUykKIAogCXJldHVy biAoRGF0dW0pIDA7CiB9CisKKy8qCisgKiBwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMK KyAqCQlTaWduYWwgYSBiYWNrZW5kIHByb2Nlc3MgdG8gbG9nIGl0cyBtZW1vcnkgY29udGV4dHMu CisgKgorICogT25seSBzdXBlcnVzZXJzIGFyZSBhbGxvd2VkIHRvIHNpZ25hbCB0byBsb2cgdGhl IG1lbW9yeSBjb250ZXh0cworICogYmVjYXVzZSBhbGxvd2luZyBhbnkgdXNlcnMgdG8gaXNzdWUg dGhpcyByZXF1ZXN0IGF0IGFuIHVuYm91bmRlZAorICogcmF0ZSB3b3VsZCBjYXVzZSBsb3RzIG9m IGxvZyBtZXNzYWdlcyBhbmQgd2hpY2ggY2FuIGxlYWQgdG8KKyAqIGRlbmlhbCBvZiBzZXJ2aWNl LgorICoKKyAqIE9uIHJlY2VpcHQgb2YgdGhpcyBzaWduYWwsIGEgYmFja2VuZCBzZXRzIHRoZSBm bGFnIGluIHRoZSBzaWduYWwKKyAqIGhhbmRsZXIsIHdoaWNoIGNhdXNlcyB0aGUgbmV4dCBDSEVD S19GT1JfSU5URVJSVVBUUygpIHRvIGxvZyB0aGUKKyAqIG1lbW9yeSBjb250ZXh0cy4KKyAqLwor RGF0dW0KK3BnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cyhQR19GVU5DVElPTl9BUkdTKQor eworCWludAkJCXBpZCA9IFBHX0dFVEFSR19JTlQzMigwKTsKKwlQR1BST0MJICAgKnByb2MgPSBC YWNrZW5kUGlkR2V0UHJvYyhwaWQpOworCisJLyoKKwkgKiBCYWNrZW5kUGlkR2V0UHJvYyByZXR1 cm5zIE5VTEwgaWYgdGhlIHBpZCBpc24ndCB2YWxpZDsgYnV0IGJ5IHRoZSB0aW1lCisJICogd2Ug cmVhY2gga2lsbCgpLCBhIHByb2Nlc3MgZm9yIHdoaWNoIHdlIGdldCBhIHZhbGlkIHByb2MgaGVy ZSBtaWdodAorCSAqIGhhdmUgdGVybWluYXRlZCBvbiBpdHMgb3duLiAgVGhlcmUncyBubyB3YXkg dG8gYWNxdWlyZSBhIGxvY2sgb24gYW4KKwkgKiBhcmJpdHJhcnkgcHJvY2VzcyB0byBwcmV2ZW50 IHRoYXQuIEJ1dCBzaW5jZSB0aGlzIG1lY2hhbmlzbSBpcyB1c3VhbGx5CisJICogdXNlZCB0byBk ZWJ1ZyBhIGJhY2tlbmQgcnVubmluZyBhbmQgY29uc3VtaW5nIGxvdHMgb2YgbWVtb3J5LCB0aGF0 IGl0CisJICogbWlnaHQgZW5kIG9uIGl0cyBvd24gZmlyc3QgYW5kIGl0cyBtZW1vcnkgY29udGV4 dHMgYXJlIG5vdCBsb2dnZWQgaXMKKwkgKiBub3QgYSBwcm9ibGVtLgorCSAqLworCWlmIChwcm9j ID09IE5VTEwpCisJeworCQkvKgorCQkgKiBUaGlzIGlzIGp1c3QgYSB3YXJuaW5nIHNvIGEgbG9v cC10aHJvdWdoLXJlc3VsdHNldCB3aWxsIG5vdCBhYm9ydAorCQkgKiBpZiBvbmUgYmFja2VuZCB0 ZXJtaW5hdGVkIG9uIGl0cyBvd24gZHVyaW5nIHRoZSBydW4uCisJCSAqLworCQllcmVwb3J0KFdB Uk5JTkcsCisJCQkJKGVycm1zZygiUElEICVkIGlzIG5vdCBhIFBvc3RncmVTUUwgc2VydmVyIHBy b2Nlc3MiLCBwaWQpKSk7CisJCVBHX1JFVFVSTl9CT09MKGZhbHNlKTsKKwl9CisKKwkvKiBPbmx5 IGFsbG93IHN1cGVydXNlcnMgdG8gbG9nIG1lbW9yeSBjb250ZXh0cy4gKi8KKwlpZiAoIXN1cGVy dXNlcigpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJ RU5UX1BSSVZJTEVHRSksCisJCQkJIGVycm1zZygibXVzdCBiZSBhIHN1cGVydXNlciB0byBsb2cg bWVtb3J5IGNvbnRleHRzIikpKTsKKworCWlmIChTZW5kUHJvY1NpZ25hbChwaWQsIFBST0NTSUdf TE9HX01FTU9SWV9DT05URVhULCBwcm9jLT5iYWNrZW5kSWQpIDwgMCkKKwl7CisJCS8qIEFnYWlu LCBqdXN0IGEgd2FybmluZyB0byBhbGxvdyBsb29wcyAqLworCQllcmVwb3J0KFdBUk5JTkcsCisJ CQkJKGVycm1zZygiY291bGQgbm90IHNlbmQgc2lnbmFsIHRvIHByb2Nlc3MgJWQ6ICVtIiwgcGlk KSkpOworCQlQR19SRVRVUk5fQk9PTChmYWxzZSk7CisJfQorCisJUEdfUkVUVVJOX0JPT0wodHJ1 ZSk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jCmluZGV4IGE5ZjBmYzMwMTcuLjM4MWQ5ZTU0 OGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jCkBAIC0zNSw2ICszNSw3IEBAIHZvbGF0aWxl IHNpZ19hdG9taWNfdCBDbGllbnRDb25uZWN0aW9uTG9zdCA9IGZhbHNlOwogdm9sYXRpbGUgc2ln X2F0b21pY190IElkbGVJblRyYW5zYWN0aW9uU2Vzc2lvblRpbWVvdXRQZW5kaW5nID0gZmFsc2U7 CiB2b2xhdGlsZSBzaWdfYXRvbWljX3QgSWRsZVNlc3Npb25UaW1lb3V0UGVuZGluZyA9IGZhbHNl Owogdm9sYXRpbGUgc2lnX2F0b21pY190IFByb2NTaWduYWxCYXJyaWVyUGVuZGluZyA9IGZhbHNl Owordm9sYXRpbGUgc2lnX2F0b21pY190IExvZ01lbW9yeUNvbnRleHRQZW5kaW5nID0gZmFsc2U7 CiB2b2xhdGlsZSB1aW50MzIgSW50ZXJydXB0SG9sZG9mZkNvdW50ID0gMDsKIHZvbGF0aWxlIHVp bnQzMiBRdWVyeUNhbmNlbEhvbGRvZmZDb3VudCA9IDA7CiB2b2xhdGlsZSB1aW50MzIgQ3JpdFNl Y3Rpb25Db3VudCA9IDA7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL2FzZXQu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvYXNldC5jCmluZGV4IGVjNmMxMzBkMGYuLjc3ODcy ZTc3YmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvYXNldC5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL21tZ3IvYXNldC5jCkBAIC0yNzIsNyArMjcyLDggQEAgc3RhdGljIFNp emUgQWxsb2NTZXRHZXRDaHVua1NwYWNlKE1lbW9yeUNvbnRleHQgY29udGV4dCwgdm9pZCAqcG9p bnRlcik7CiBzdGF0aWMgYm9vbCBBbGxvY1NldElzRW1wdHkoTWVtb3J5Q29udGV4dCBjb250ZXh0 KTsKIHN0YXRpYyB2b2lkIEFsbG9jU2V0U3RhdHMoTWVtb3J5Q29udGV4dCBjb250ZXh0LAogCQkJ CQkJICBNZW1vcnlTdGF0c1ByaW50RnVuYyBwcmludGZ1bmMsIHZvaWQgKnBhc3N0aHJ1LAotCQkJ CQkJICBNZW1vcnlDb250ZXh0Q291bnRlcnMgKnRvdGFscyk7CisJCQkJCQkgIE1lbW9yeUNvbnRl eHRDb3VudGVycyAqdG90YWxzLAorCQkJCQkJICBib29sIHByaW50X3RvX3N0ZGVycik7CiAKICNp ZmRlZiBNRU1PUllfQ09OVEVYVF9DSEVDS0lORwogc3RhdGljIHZvaWQgQWxsb2NTZXRDaGVjayhN ZW1vcnlDb250ZXh0IGNvbnRleHQpOwpAQCAtMTMzNiwxMSArMTMzNywxMiBAQCBBbGxvY1NldElz RW1wdHkoTWVtb3J5Q29udGV4dCBjb250ZXh0KQogICogcHJpbnRmdW5jOiBpZiBub3QgTlVMTCwg cGFzcyBhIGh1bWFuLXJlYWRhYmxlIHN0YXRzIHN0cmluZyB0byB0aGlzLgogICogcGFzc3RocnU6 IHBhc3MgdGhpcyBwb2ludGVyIHRocm91Z2ggdG8gcHJpbnRmdW5jLgogICogdG90YWxzOiBpZiBu b3QgTlVMTCwgYWRkIHN0YXRzIGFib3V0IHRoaXMgY29udGV4dCBpbnRvICp0b3RhbHMuCisgKiBw cmludF90b19zdGRlcnI6IHByaW50IHN0YXRzIHRvIHN0ZGVyciBpZiB0cnVlLCBlbG9nIG90aGVy d2lzZS4KICAqLwogc3RhdGljIHZvaWQKIEFsbG9jU2V0U3RhdHMoTWVtb3J5Q29udGV4dCBjb250 ZXh0LAogCQkJICBNZW1vcnlTdGF0c1ByaW50RnVuYyBwcmludGZ1bmMsIHZvaWQgKnBhc3N0aHJ1 LAotCQkJICBNZW1vcnlDb250ZXh0Q291bnRlcnMgKnRvdGFscykKKwkJCSAgTWVtb3J5Q29udGV4 dENvdW50ZXJzICp0b3RhbHMsIGJvb2wgcHJpbnRfdG9fc3RkZXJyKQogewogCUFsbG9jU2V0CXNl dCA9IChBbGxvY1NldCkgY29udGV4dDsKIAlTaXplCQluYmxvY2tzID0gMDsKQEAgLTEzNzksNyAr MTM4MSw3IEBAIEFsbG9jU2V0U3RhdHMoTWVtb3J5Q29udGV4dCBjb250ZXh0LAogCQkJCSAiJXp1 IHRvdGFsIGluICV6ZCBibG9ja3M7ICV6dSBmcmVlICglemQgY2h1bmtzKTsgJXp1IHVzZWQiLAog CQkJCSB0b3RhbHNwYWNlLCBuYmxvY2tzLCBmcmVlc3BhY2UsIGZyZWVjaHVua3MsCiAJCQkJIHRv dGFsc3BhY2UgLSBmcmVlc3BhY2UpOwotCQlwcmludGZ1bmMoY29udGV4dCwgcGFzc3RocnUsIHN0 YXRzX3N0cmluZyk7CisJCXByaW50ZnVuYyhjb250ZXh0LCBwYXNzdGhydSwgc3RhdHNfc3RyaW5n LCBwcmludF90b19zdGRlcnIpOwogCX0KIAogCWlmICh0b3RhbHMpCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9tbWdyL2dlbmVyYXRpb24uYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3Iv Z2VuZXJhdGlvbi5jCmluZGV4IDJiOTAwMzQ3NjQuLjU4NGNkNjE0ZGEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL21tZ3IvZ2VuZXJhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L21tZ3IvZ2VuZXJhdGlvbi5jCkBAIC0xNTUsNyArMTU1LDggQEAgc3RhdGljIFNpemUgR2VuZXJh dGlvbkdldENodW5rU3BhY2UoTWVtb3J5Q29udGV4dCBjb250ZXh0LCB2b2lkICpwb2ludGVyKTsK IHN0YXRpYyBib29sIEdlbmVyYXRpb25Jc0VtcHR5KE1lbW9yeUNvbnRleHQgY29udGV4dCk7CiBz dGF0aWMgdm9pZCBHZW5lcmF0aW9uU3RhdHMoTWVtb3J5Q29udGV4dCBjb250ZXh0LAogCQkJCQkJ CU1lbW9yeVN0YXRzUHJpbnRGdW5jIHByaW50ZnVuYywgdm9pZCAqcGFzc3RocnUsCi0JCQkJCQkJ TWVtb3J5Q29udGV4dENvdW50ZXJzICp0b3RhbHMpOworCQkJCQkJCU1lbW9yeUNvbnRleHRDb3Vu dGVycyAqdG90YWxzLAorCQkJCQkJCWJvb2wgcHJpbnRfdG9fc3RkZXJyKTsKIAogI2lmZGVmIE1F TU9SWV9DT05URVhUX0NIRUNLSU5HCiBzdGF0aWMgdm9pZCBHZW5lcmF0aW9uQ2hlY2soTWVtb3J5 Q29udGV4dCBjb250ZXh0KTsKQEAgLTY2NSw2ICs2NjYsNyBAQCBHZW5lcmF0aW9uSXNFbXB0eShN ZW1vcnlDb250ZXh0IGNvbnRleHQpCiAgKiBwcmludGZ1bmM6IGlmIG5vdCBOVUxMLCBwYXNzIGEg aHVtYW4tcmVhZGFibGUgc3RhdHMgc3RyaW5nIHRvIHRoaXMuCiAgKiBwYXNzdGhydTogcGFzcyB0 aGlzIHBvaW50ZXIgdGhyb3VnaCB0byBwcmludGZ1bmMuCiAgKiB0b3RhbHM6IGlmIG5vdCBOVUxM LCBhZGQgc3RhdHMgYWJvdXQgdGhpcyBjb250ZXh0IGludG8gKnRvdGFscy4KKyAqIHByaW50X3Rv X3N0ZGVycjogcHJpbnQgc3RhdHMgdG8gc3RkZXJyIGlmIHRydWUsIGVsb2cgb3RoZXJ3aXNlLgog ICoKICAqIFhYWCBmcmVlc3BhY2Ugb25seSBhY2NvdW50cyBmb3IgZW1wdHkgc3BhY2UgYXQgdGhl IGVuZCBvZiB0aGUgYmxvY2ssIG5vdAogICogc3BhY2Ugb2YgZnJlZWQgY2h1bmtzICh3aGljaCBp cyB1bmtub3duKS4KQEAgLTY3Miw3ICs2NzQsNyBAQCBHZW5lcmF0aW9uSXNFbXB0eShNZW1vcnlD b250ZXh0IGNvbnRleHQpCiBzdGF0aWMgdm9pZAogR2VuZXJhdGlvblN0YXRzKE1lbW9yeUNvbnRl eHQgY29udGV4dCwKIAkJCQlNZW1vcnlTdGF0c1ByaW50RnVuYyBwcmludGZ1bmMsIHZvaWQgKnBh c3N0aHJ1LAotCQkJCU1lbW9yeUNvbnRleHRDb3VudGVycyAqdG90YWxzKQorCQkJCU1lbW9yeUNv bnRleHRDb3VudGVycyAqdG90YWxzLCBib29sIHByaW50X3RvX3N0ZGVycikKIHsKIAlHZW5lcmF0 aW9uQ29udGV4dCAqc2V0ID0gKEdlbmVyYXRpb25Db250ZXh0ICopIGNvbnRleHQ7CiAJU2l6ZQkJ bmJsb2NrcyA9IDA7CkBAIC03MDQsNyArNzA2LDcgQEAgR2VuZXJhdGlvblN0YXRzKE1lbW9yeUNv bnRleHQgY29udGV4dCwKIAkJCQkgIiV6dSB0b3RhbCBpbiAlemQgYmxvY2tzICglemQgY2h1bmtz KTsgJXp1IGZyZWUgKCV6ZCBjaHVua3MpOyAlenUgdXNlZCIsCiAJCQkJIHRvdGFsc3BhY2UsIG5i bG9ja3MsIG5jaHVua3MsIGZyZWVzcGFjZSwKIAkJCQkgbmZyZWVjaHVua3MsIHRvdGFsc3BhY2Ug LSBmcmVlc3BhY2UpOwotCQlwcmludGZ1bmMoY29udGV4dCwgcGFzc3RocnUsIHN0YXRzX3N0cmlu Zyk7CisJCXByaW50ZnVuYyhjb250ZXh0LCBwYXNzdGhydSwgc3RhdHNfc3RyaW5nLCBwcmludF90 b19zdGRlcnIpOwogCX0KIAogCWlmICh0b3RhbHMpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9tbWdyL21jeHQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvbWN4dC5jCmluZGV4IDg0 NDcyYjkxNTguLmJkNDFmOGQzMWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3Iv bWN4dC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvbWN4dC5jCkBAIC0yMyw2ICsyMywx MCBAQAogCiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIK KyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5o IgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgorI2luY2x1ZGUgInV0aWxzL2ZtZ3Jw cm90b3MuaCIKICNpbmNsdWRlICJ1dGlscy9tZW1kZWJ1Zy5oIgogI2luY2x1ZGUgInV0aWxzL21l bXV0aWxzLmgiCiAKQEAgLTU1LDkgKzU5LDExIEBAIE1lbW9yeUNvbnRleHQgUG9ydGFsQ29udGV4 dCA9IE5VTEw7CiBzdGF0aWMgdm9pZCBNZW1vcnlDb250ZXh0Q2FsbFJlc2V0Q2FsbGJhY2tzKE1l bW9yeUNvbnRleHQgY29udGV4dCk7CiBzdGF0aWMgdm9pZCBNZW1vcnlDb250ZXh0U3RhdHNJbnRl cm5hbChNZW1vcnlDb250ZXh0IGNvbnRleHQsIGludCBsZXZlbCwKIAkJCQkJCQkJCSAgIGJvb2wg cHJpbnQsIGludCBtYXhfY2hpbGRyZW4sCi0JCQkJCQkJCQkgICBNZW1vcnlDb250ZXh0Q291bnRl cnMgKnRvdGFscyk7CisJCQkJCQkJCQkgICBNZW1vcnlDb250ZXh0Q291bnRlcnMgKnRvdGFscywK KwkJCQkJCQkJCSAgIGJvb2wgcHJpbnRfdG9fc3RkZXJyKTsKIHN0YXRpYyB2b2lkIE1lbW9yeUNv bnRleHRTdGF0c1ByaW50KE1lbW9yeUNvbnRleHQgY29udGV4dCwgdm9pZCAqcGFzc3RocnUsCi0J CQkJCQkJCQljb25zdCBjaGFyICpzdGF0c19zdHJpbmcpOworCQkJCQkJCQkJY29uc3QgY2hhciAq c3RhdHNfc3RyaW5nLAorCQkJCQkJCQkJYm9vbCBwcmludF90b19zdGRlcnIpOwogCiAvKgogICog WW91IHNob3VsZCBub3QgZG8gbWVtb3J5IGFsbG9jYXRpb25zIHdpdGhpbiBhIGNyaXRpY2FsIHNl Y3Rpb24sIGJlY2F1c2UKQEAgLTQ5OSw3ICs1MDUsNyBAQCB2b2lkCiBNZW1vcnlDb250ZXh0U3Rh dHMoTWVtb3J5Q29udGV4dCBjb250ZXh0KQogewogCS8qIEEgaGFyZC13aXJlZCBsaW1pdCBvbiB0 aGUgbnVtYmVyIG9mIGNoaWxkcmVuIGlzIHVzdWFsbHkgZ29vZCBlbm91Z2ggKi8KLQlNZW1vcnlD b250ZXh0U3RhdHNEZXRhaWwoY29udGV4dCwgMTAwKTsKKwlNZW1vcnlDb250ZXh0U3RhdHNEZXRh aWwoY29udGV4dCwgMTAwLCB0cnVlKTsKIH0KIAogLyoKQEAgLTUwOCwxOSArNTE0LDM0IEBAIE1l bW9yeUNvbnRleHRTdGF0cyhNZW1vcnlDb250ZXh0IGNvbnRleHQpCiAgKiBFbnRyeSBwb2ludCBm b3IgdXNlIGlmIHlvdSB3YW50IHRvIHZhcnkgdGhlIG51bWJlciBvZiBjaGlsZCBjb250ZXh0cyBz aG93bi4KICAqLwogdm9pZAotTWVtb3J5Q29udGV4dFN0YXRzRGV0YWlsKE1lbW9yeUNvbnRleHQg Y29udGV4dCwgaW50IG1heF9jaGlsZHJlbikKK01lbW9yeUNvbnRleHRTdGF0c0RldGFpbChNZW1v cnlDb250ZXh0IGNvbnRleHQsIGludCBtYXhfY2hpbGRyZW4sCisJCQkJCQkgYm9vbCBwcmludF90 b19zdGRlcnIpCiB7CiAJTWVtb3J5Q29udGV4dENvdW50ZXJzIGdyYW5kX3RvdGFsczsKIAogCW1l bXNldCgmZ3JhbmRfdG90YWxzLCAwLCBzaXplb2YoZ3JhbmRfdG90YWxzKSk7CiAKLQlNZW1vcnlD b250ZXh0U3RhdHNJbnRlcm5hbChjb250ZXh0LCAwLCB0cnVlLCBtYXhfY2hpbGRyZW4sICZncmFu ZF90b3RhbHMpOworCU1lbW9yeUNvbnRleHRTdGF0c0ludGVybmFsKGNvbnRleHQsIDAsIHRydWUs IG1heF9jaGlsZHJlbiwgJmdyYW5kX3RvdGFscywgcHJpbnRfdG9fc3RkZXJyKTsKIAotCWZwcmlu dGYoc3RkZXJyLAotCQkJIkdyYW5kIHRvdGFsOiAlenUgYnl0ZXMgaW4gJXpkIGJsb2NrczsgJXp1 IGZyZWUgKCV6ZCBjaHVua3MpOyAlenUgdXNlZFxuIiwKLQkJCWdyYW5kX3RvdGFscy50b3RhbHNw YWNlLCBncmFuZF90b3RhbHMubmJsb2NrcywKLQkJCWdyYW5kX3RvdGFscy5mcmVlc3BhY2UsIGdy YW5kX3RvdGFscy5mcmVlY2h1bmtzLAotCQkJZ3JhbmRfdG90YWxzLnRvdGFsc3BhY2UgLSBncmFu ZF90b3RhbHMuZnJlZXNwYWNlKTsKKwlpZiAocHJpbnRfdG9fc3RkZXJyKQorCQlmcHJpbnRmKHN0 ZGVyciwKKwkJCQkiR3JhbmQgdG90YWw6ICV6dSBieXRlcyBpbiAlemQgYmxvY2tzOyAlenUgZnJl ZSAoJXpkIGNodW5rcyk7ICV6dSB1c2VkXG4iLAorCQkJCWdyYW5kX3RvdGFscy50b3RhbHNwYWNl LCBncmFuZF90b3RhbHMubmJsb2NrcywKKwkJCQlncmFuZF90b3RhbHMuZnJlZXNwYWNlLCBncmFu ZF90b3RhbHMuZnJlZWNodW5rcywKKwkJCQlncmFuZF90b3RhbHMudG90YWxzcGFjZSAtIGdyYW5k X3RvdGFscy5mcmVlc3BhY2UpOworCWVsc2UKKworCQkvKgorCQkgKiBVc2UgTE9HX1NFUlZFUl9P TkxZIHRvIHByZXZlbnQgdGhlIG1lbW9yeSBjb250ZXh0cyBmcm9tIGJlaW5nIHNlbnQKKwkJICog dG8gdGhlIGNvbm5lY3RlZCBjbGllbnQuCisJCSAqLworCQllcmVwb3J0KExPR19TRVJWRVJfT05M WSwKKwkJCQkoZXJyaGlkZXN0bXQodHJ1ZSksCisJCQkJIGVycmhpZGVjb250ZXh0KHRydWUpLAor CQkJCSBlcnJtc2dfaW50ZXJuYWwoIkdyYW5kIHRvdGFsOiAlenUgYnl0ZXMgaW4gJXpkIGJsb2Nr czsgJXp1IGZyZWUgKCV6ZCBjaHVua3MpOyAlenUgdXNlZCIsCisJCQkJCQkJCSBncmFuZF90b3Rh bHMudG90YWxzcGFjZSwgZ3JhbmRfdG90YWxzLm5ibG9ja3MsCisJCQkJCQkJCSBncmFuZF90b3Rh bHMuZnJlZXNwYWNlLCBncmFuZF90b3RhbHMuZnJlZWNodW5rcywKKwkJCQkJCQkJIGdyYW5kX3Rv dGFscy50b3RhbHNwYWNlIC0gZ3JhbmRfdG90YWxzLmZyZWVzcGFjZSkpKTsKIH0KIAogLyoKQEAg LTUzMyw3ICs1NTQsOCBAQCBNZW1vcnlDb250ZXh0U3RhdHNEZXRhaWwoTWVtb3J5Q29udGV4dCBj b250ZXh0LCBpbnQgbWF4X2NoaWxkcmVuKQogc3RhdGljIHZvaWQKIE1lbW9yeUNvbnRleHRTdGF0 c0ludGVybmFsKE1lbW9yeUNvbnRleHQgY29udGV4dCwgaW50IGxldmVsLAogCQkJCQkJICAgYm9v bCBwcmludCwgaW50IG1heF9jaGlsZHJlbiwKLQkJCQkJCSAgIE1lbW9yeUNvbnRleHRDb3VudGVy cyAqdG90YWxzKQorCQkJCQkJICAgTWVtb3J5Q29udGV4dENvdW50ZXJzICp0b3RhbHMsCisJCQkJ CQkgICBib29sIHByaW50X3RvX3N0ZGVycikKIHsKIAlNZW1vcnlDb250ZXh0Q291bnRlcnMgbG9j YWxfdG90YWxzOwogCU1lbW9yeUNvbnRleHQgY2hpbGQ7CkBAIC01NDUsNyArNTY3LDcgQEAgTWVt b3J5Q29udGV4dFN0YXRzSW50ZXJuYWwoTWVtb3J5Q29udGV4dCBjb250ZXh0LCBpbnQgbGV2ZWws CiAJY29udGV4dC0+bWV0aG9kcy0+c3RhdHMoY29udGV4dCwKIAkJCQkJCQlwcmludCA/IE1lbW9y eUNvbnRleHRTdGF0c1ByaW50IDogTlVMTCwKIAkJCQkJCQkodm9pZCAqKSAmbGV2ZWwsCi0JCQkJ CQkJdG90YWxzKTsKKwkJCQkJCQl0b3RhbHMsIHByaW50X3RvX3N0ZGVycik7CiAKIAkvKgogCSAq IEV4YW1pbmUgY2hpbGRyZW4uICBJZiB0aGVyZSBhcmUgbW9yZSB0aGFuIG1heF9jaGlsZHJlbiBv ZiB0aGVtLCB3ZSBkbwpAQCAtNTYwLDExICs1ODIsMTMgQEAgTWVtb3J5Q29udGV4dFN0YXRzSW50 ZXJuYWwoTWVtb3J5Q29udGV4dCBjb250ZXh0LCBpbnQgbGV2ZWwsCiAJCWlmIChpY2hpbGQgPCBt YXhfY2hpbGRyZW4pCiAJCQlNZW1vcnlDb250ZXh0U3RhdHNJbnRlcm5hbChjaGlsZCwgbGV2ZWwg KyAxLAogCQkJCQkJCQkJICAgcHJpbnQsIG1heF9jaGlsZHJlbiwKLQkJCQkJCQkJCSAgIHRvdGFs cyk7CisJCQkJCQkJCQkgICB0b3RhbHMsCisJCQkJCQkJCQkgICBwcmludF90b19zdGRlcnIpOwog CQllbHNlCiAJCQlNZW1vcnlDb250ZXh0U3RhdHNJbnRlcm5hbChjaGlsZCwgbGV2ZWwgKyAxLAog CQkJCQkJCQkJICAgZmFsc2UsIG1heF9jaGlsZHJlbiwKLQkJCQkJCQkJCSAgICZsb2NhbF90b3Rh bHMpOworCQkJCQkJCQkJICAgJmxvY2FsX3RvdGFscywKKwkJCQkJCQkJCSAgIHByaW50X3RvX3N0 ZGVycik7CiAJfQogCiAJLyogRGVhbCB3aXRoIGV4Y2VzcyBjaGlsZHJlbiAqLwpAQCAtNTcyLDE4 ICs1OTYsMzMgQEAgTWVtb3J5Q29udGV4dFN0YXRzSW50ZXJuYWwoTWVtb3J5Q29udGV4dCBjb250 ZXh0LCBpbnQgbGV2ZWwsCiAJewogCQlpZiAocHJpbnQpCiAJCXsKLQkJCWludAkJCWk7Ci0KLQkJ CWZvciAoaSA9IDA7IGkgPD0gbGV2ZWw7IGkrKykKLQkJCQlmcHJpbnRmKHN0ZGVyciwgIiAgIik7 Ci0JCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJIiVkIG1vcmUgY2hpbGQgY29udGV4dHMgY29udGFp bmluZyAlenUgdG90YWwgaW4gJXpkIGJsb2NrczsgJXp1IGZyZWUgKCV6ZCBjaHVua3MpOyAlenUg dXNlZFxuIiwKLQkJCQkJaWNoaWxkIC0gbWF4X2NoaWxkcmVuLAotCQkJCQlsb2NhbF90b3RhbHMu dG90YWxzcGFjZSwKLQkJCQkJbG9jYWxfdG90YWxzLm5ibG9ja3MsCi0JCQkJCWxvY2FsX3RvdGFs cy5mcmVlc3BhY2UsCi0JCQkJCWxvY2FsX3RvdGFscy5mcmVlY2h1bmtzLAotCQkJCQlsb2NhbF90 b3RhbHMudG90YWxzcGFjZSAtIGxvY2FsX3RvdGFscy5mcmVlc3BhY2UpOworCQkJaWYgKHByaW50 X3RvX3N0ZGVycikKKwkJCXsKKwkJCQlpbnQJCQlpOworCisJCQkJZm9yIChpID0gMDsgaSA8PSBs ZXZlbDsgaSsrKQorCQkJCQlmcHJpbnRmKHN0ZGVyciwgIiAgIik7CisJCQkJZnByaW50ZihzdGRl cnIsCisJCQkJCQkiJWQgbW9yZSBjaGlsZCBjb250ZXh0cyBjb250YWluaW5nICV6dSB0b3RhbCBp biAlemQgYmxvY2tzOyAlenUgZnJlZSAoJXpkIGNodW5rcyk7ICV6dSB1c2VkXG4iLAorCQkJCQkJ aWNoaWxkIC0gbWF4X2NoaWxkcmVuLAorCQkJCQkJbG9jYWxfdG90YWxzLnRvdGFsc3BhY2UsCisJ CQkJCQlsb2NhbF90b3RhbHMubmJsb2NrcywKKwkJCQkJCWxvY2FsX3RvdGFscy5mcmVlc3BhY2Us CisJCQkJCQlsb2NhbF90b3RhbHMuZnJlZWNodW5rcywKKwkJCQkJCWxvY2FsX3RvdGFscy50b3Rh bHNwYWNlIC0gbG9jYWxfdG90YWxzLmZyZWVzcGFjZSk7CisJCQl9CisJCQllbHNlCisJCQkJZXJl cG9ydChMT0dfU0VSVkVSX09OTFksCisJCQkJCQkoZXJyaGlkZXN0bXQodHJ1ZSksCisJCQkJCQkg ZXJyaGlkZWNvbnRleHQodHJ1ZSksCisJCQkJCQkgZXJybXNnX2ludGVybmFsKCJsZXZlbDogJWQ7 ICVkIG1vcmUgY2hpbGQgY29udGV4dHMgY29udGFpbmluZyAlenUgdG90YWwgaW4gJXpkIGJsb2Nr czsgJXp1IGZyZWUgKCV6ZCBjaHVua3MpOyAlenUgdXNlZCIsCisJCQkJCQkJCQkJIGxldmVsLAor CQkJCQkJCQkJCSBpY2hpbGQgLSBtYXhfY2hpbGRyZW4sCisJCQkJCQkJCQkJIGxvY2FsX3RvdGFs cy50b3RhbHNwYWNlLAorCQkJCQkJCQkJCSBsb2NhbF90b3RhbHMubmJsb2NrcywKKwkJCQkJCQkJ CQkgbG9jYWxfdG90YWxzLmZyZWVzcGFjZSwKKwkJCQkJCQkJCQkgbG9jYWxfdG90YWxzLmZyZWVj aHVua3MsCisJCQkJCQkJCQkJIGxvY2FsX3RvdGFscy50b3RhbHNwYWNlIC0gbG9jYWxfdG90YWxz LmZyZWVzcGFjZSkpKTsKIAkJfQogCiAJCWlmICh0b3RhbHMpCkBAIC02MDUsMTEgKzY0NCwxMyBA QCBNZW1vcnlDb250ZXh0U3RhdHNJbnRlcm5hbChNZW1vcnlDb250ZXh0IGNvbnRleHQsIGludCBs ZXZlbCwKICAqLwogc3RhdGljIHZvaWQKIE1lbW9yeUNvbnRleHRTdGF0c1ByaW50KE1lbW9yeUNv bnRleHQgY29udGV4dCwgdm9pZCAqcGFzc3RocnUsCi0JCQkJCQljb25zdCBjaGFyICpzdGF0c19z dHJpbmcpCisJCQkJCQljb25zdCBjaGFyICpzdGF0c19zdHJpbmcsCisJCQkJCQlib29sIHByaW50 X3RvX3N0ZGVycikKIHsKIAlpbnQJCQlsZXZlbCA9ICooaW50ICopIHBhc3N0aHJ1OwogCWNvbnN0 IGNoYXIgKm5hbWUgPSBjb250ZXh0LT5uYW1lOwogCWNvbnN0IGNoYXIgKmlkZW50ID0gY29udGV4 dC0+aWRlbnQ7CisJY2hhcgkJdHJ1bmNhdGVkX2lkZW50WzExMF07CiAJaW50CQkJaTsKIAogCS8q CkBAIC02MjMsOSArNjY0LDggQEAgTWVtb3J5Q29udGV4dFN0YXRzUHJpbnQoTWVtb3J5Q29udGV4 dCBjb250ZXh0LCB2b2lkICpwYXNzdGhydSwKIAkJaWRlbnQgPSBOVUxMOwogCX0KIAotCWZvciAo aSA9IDA7IGkgPCBsZXZlbDsgaSsrKQotCQlmcHJpbnRmKHN0ZGVyciwgIiAgIik7Ci0JZnByaW50 ZihzdGRlcnIsICIlczogJXMiLCBuYW1lLCBzdGF0c19zdHJpbmcpOworCXRydW5jYXRlZF9pZGVu dFswXSA9ICdcMCc7CisKIAlpZiAoaWRlbnQpCiAJewogCQkvKgpAQCAtNjM3LDI0ICs2NzcsNDEg QEAgTWVtb3J5Q29udGV4dFN0YXRzUHJpbnQoTWVtb3J5Q29udGV4dCBjb250ZXh0LCB2b2lkICpw YXNzdGhydSwKIAkJaW50CQkJaWRsZW4gPSBzdHJsZW4oaWRlbnQpOwogCQlib29sCQl0cnVuY2F0 ZWQgPSBmYWxzZTsKIAorCQlzdHJjcHkodHJ1bmNhdGVkX2lkZW50LCAiOiAiKTsKKwkJaSA9IHN0 cmxlbih0cnVuY2F0ZWRfaWRlbnQpOworCiAJCWlmIChpZGxlbiA+IDEwMCkKIAkJewogCQkJaWRs ZW4gPSBwZ19tYmNsaXBsZW4oaWRlbnQsIGlkbGVuLCAxMDApOwogCQkJdHJ1bmNhdGVkID0gdHJ1 ZTsKIAkJfQotCQlmcHJpbnRmKHN0ZGVyciwgIjogIik7CisKIAkJd2hpbGUgKGlkbGVuLS0gPiAw KQogCQl7CiAJCQl1bnNpZ25lZCBjaGFyIGMgPSAqaWRlbnQrKzsKIAogCQkJaWYgKGMgPCAnICcp CiAJCQkJYyA9ICcgJzsKLQkJCWZwdXRjKGMsIHN0ZGVycik7CisJCQl0cnVuY2F0ZWRfaWRlbnRb aSsrXSA9IGM7CiAJCX0KKwkJdHJ1bmNhdGVkX2lkZW50W2ldID0gJ1wwJzsKKwogCQlpZiAodHJ1 bmNhdGVkKQotCQkJZnByaW50ZihzdGRlcnIsICIuLi4iKTsKKwkJCXN0cmNhdCh0cnVuY2F0ZWRf aWRlbnQsICIuLi4iKTsKIAl9Ci0JZnB1dGMoJ1xuJywgc3RkZXJyKTsKKworCWlmIChwcmludF90 b19zdGRlcnIpCisJeworCQlmb3IgKGkgPSAwOyBpIDwgbGV2ZWw7IGkrKykKKwkJCWZwcmludGYo c3RkZXJyLCAiICAiKTsKKwkJZnByaW50ZihzdGRlcnIsICIlczogJXMlc1xuIiwgbmFtZSwgc3Rh dHNfc3RyaW5nLCB0cnVuY2F0ZWRfaWRlbnQpOworCX0KKwllbHNlCisJCWVyZXBvcnQoTE9HX1NF UlZFUl9PTkxZLAorCQkJCShlcnJoaWRlc3RtdCh0cnVlKSwKKwkJCQkgZXJyaGlkZWNvbnRleHQo dHJ1ZSksCisJCQkJIGVycm1zZ19pbnRlcm5hbCgibGV2ZWw6ICVkOyAlczogJXMlcyIsCisJCQkJ CQkJCSBsZXZlbCwgbmFtZSwgc3RhdHNfc3RyaW5nLCB0cnVuY2F0ZWRfaWRlbnQpKSk7CiB9CiAK IC8qCkBAIC05NDYsNiArMTAwMyw1MiBAQCBNZW1vcnlDb250ZXh0QWxsb2NFeHRlbmRlZChNZW1v cnlDb250ZXh0IGNvbnRleHQsIFNpemUgc2l6ZSwgaW50IGZsYWdzKQogCXJldHVybiByZXQ7CiB9 CiAKKy8qCisgKiBIYW5kbGVMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0CisgKgkJSGFuZGxlIHJl Y2VpcHQgb2YgYW4gaW50ZXJydXB0IGluZGljYXRpbmcgbG9nZ2luZyBvZiBtZW1vcnkKKyAqCQlj b250ZXh0cy4KKyAqCisgKiBBbGwgdGhlIGFjdHVhbCB3b3JrIGlzIGRlZmVycmVkIHRvIFByb2Nl c3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KCksCisgKiBiZWNhdXNlIHdlIGNhbm5vdCBzYWZl bHkgZW1pdCBhIGxvZyBtZXNzYWdlIGluc2lkZSB0aGUgc2lnbmFsIGhhbmRsZXIuCisgKi8KK3Zv aWQKK0hhbmRsZUxvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQodm9pZCkKK3sKKwlJbnRlcnJ1cHRQ ZW5kaW5nID0gdHJ1ZTsKKwlMb2dNZW1vcnlDb250ZXh0UGVuZGluZyA9IHRydWU7CisJLyogbGF0 Y2ggd2lsbCBiZSBzZXQgYnkgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIgKi8KK30KKworLyoK KyAqIFByb2Nlc3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0CisgKiAJCVBlcmZvcm0gbG9nZ2lu ZyBvZiBtZW1vcnkgY29udGV4dHMgb2YgdGhpcyBiYWNrZW5kIHByb2Nlc3MuCisgKgorICogQW55 IGJhY2tlbmQgdGhhdCBwYXJ0aWNpcGF0ZXMgaW4gUHJvY1NpZ25hbCBzaWduYWxpbmcgbXVzdCBh cnJhbmdlCisgKiB0byBjYWxsIHRoaXMgZnVuY3Rpb24gaWYgd2Ugc2VlIExvZ01lbW9yeUNvbnRl eHRQZW5kaW5nIHNldC4KKyAqIEl0IGlzIGNhbGxlZCBmcm9tIENIRUNLX0ZPUl9JTlRFUlJVUFRT KCksIHdoaWNoIGlzIGVub3VnaCBiZWNhdXNlCisgKiB0aGUgdGFyZ2V0IHByb2Nlc3MgZm9yIGxv Z2dpbmcgb2YgbWVtb3J5IGNvbnRleHRzIGlzIGEgYmFja2VuZC4KKyAqLwordm9pZAorUHJvY2Vz c0xvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQodm9pZCkKK3sKKwlMb2dNZW1vcnlDb250ZXh0UGVu ZGluZyA9IGZhbHNlOworCisJZXJlcG9ydChMT0csCisJCQkoZXJybXNnKCJsb2dnaW5nIG1lbW9y eSBjb250ZXh0cyBvZiBQSUQgJWQiLCBNeVByb2NQaWQpKSk7CisKKwkvKgorCSAqIFdoZW4gYSBi YWNrZW5kIHByb2Nlc3MgaXMgY29uc3VtaW5nIGh1Z2UgbWVtb3J5LCBsb2dnaW5nIGFsbCBpdHMg bWVtb3J5CisJICogY29udGV4dHMgbWlnaHQgb3ZlcnJ1biBhdmFpbGFibGUgZGlzayBzcGFjZS4g VG8gcHJldmVudCB0aGlzLCB3ZSBsaW1pdAorCSAqIHRoZSBudW1iZXIgb2YgY2hpbGQgY29udGV4 dHMgdG8gbG9nIHBlciBwYXJlbnQgdG8gMTAwLgorCSAqCisJICogQXMgd2l0aCBNZW1vcnlDb250 ZXh0U3RhdHMoKSwgd2Ugc3VwcG9zZSB0aGF0IHByYWN0aWNhbCBjYXNlcyB3aGVyZSB0aGUKKwkg KiBkdW1wIGdldHMgbG9uZyB3aWxsIHR5cGljYWxseSBiZSBodWdlIG51bWJlcnMgb2Ygc2libGlu Z3MgdW5kZXIgdGhlCisJICogc2FtZSBwYXJlbnQgY29udGV4dDsgd2hpbGUgdGhlIGFkZGl0aW9u YWwgZGVidWdnaW5nIHZhbHVlIGZyb20gc2VlaW5nCisJICogZGV0YWlscyBhYm91dCBpbmRpdmlk dWFsIHNpYmxpbmdzIGJleW9uZCAxMDAgd2lsbCBub3QgYmUgbGFyZ2UuCisJICovCisJTWVtb3J5 Q29udGV4dFN0YXRzRGV0YWlsKFRvcE1lbW9yeUNvbnRleHQsIDEwMCwgZmFsc2UpOworfQorCiB2 b2lkICoKIHBhbGxvYyhTaXplIHNpemUpCiB7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9tbWdyL3NsYWIuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3Ivc2xhYi5jCmluZGV4IDkyMTNi ZTdjOTUuLjU1M2RkN2Y2NjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3Ivc2xh Yi5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3Ivc2xhYi5jCkBAIC0xMzUsNyArMTM1LDgg QEAgc3RhdGljIFNpemUgU2xhYkdldENodW5rU3BhY2UoTWVtb3J5Q29udGV4dCBjb250ZXh0LCB2 b2lkICpwb2ludGVyKTsKIHN0YXRpYyBib29sIFNsYWJJc0VtcHR5KE1lbW9yeUNvbnRleHQgY29u dGV4dCk7CiBzdGF0aWMgdm9pZCBTbGFiU3RhdHMoTWVtb3J5Q29udGV4dCBjb250ZXh0LAogCQkJ CQkgIE1lbW9yeVN0YXRzUHJpbnRGdW5jIHByaW50ZnVuYywgdm9pZCAqcGFzc3RocnUsCi0JCQkJ CSAgTWVtb3J5Q29udGV4dENvdW50ZXJzICp0b3RhbHMpOworCQkJCQkgIE1lbW9yeUNvbnRleHRD b3VudGVycyAqdG90YWxzLAorCQkJCQkgIGJvb2wgcHJpbnRfdG9fc3RkZXJyKTsKICNpZmRlZiBN RU1PUllfQ09OVEVYVF9DSEVDS0lORwogc3RhdGljIHZvaWQgU2xhYkNoZWNrKE1lbW9yeUNvbnRl eHQgY29udGV4dCk7CiAjZW5kaWYKQEAgLTYzMiwxMSArNjMzLDEzIEBAIFNsYWJJc0VtcHR5KE1l bW9yeUNvbnRleHQgY29udGV4dCkKICAqIHByaW50ZnVuYzogaWYgbm90IE5VTEwsIHBhc3MgYSBo dW1hbi1yZWFkYWJsZSBzdGF0cyBzdHJpbmcgdG8gdGhpcy4KICAqIHBhc3N0aHJ1OiBwYXNzIHRo aXMgcG9pbnRlciB0aHJvdWdoIHRvIHByaW50ZnVuYy4KICAqIHRvdGFsczogaWYgbm90IE5VTEws IGFkZCBzdGF0cyBhYm91dCB0aGlzIGNvbnRleHQgaW50byAqdG90YWxzLgorICogcHJpbnRfdG9f c3RkZXJyOiBwcmludCBzdGF0cyB0byBzdGRlcnIgaWYgdHJ1ZSwgZWxvZyBvdGhlcndpc2UuCiAg Ki8KIHN0YXRpYyB2b2lkCiBTbGFiU3RhdHMoTWVtb3J5Q29udGV4dCBjb250ZXh0LAogCQkgIE1l bW9yeVN0YXRzUHJpbnRGdW5jIHByaW50ZnVuYywgdm9pZCAqcGFzc3RocnUsCi0JCSAgTWVtb3J5 Q29udGV4dENvdW50ZXJzICp0b3RhbHMpCisJCSAgTWVtb3J5Q29udGV4dENvdW50ZXJzICp0b3Rh bHMsCisJCSAgYm9vbCBwcmludF90b19zdGRlcnIpCiB7CiAJU2xhYkNvbnRleHQgKnNsYWIgPSBj YXN0Tm9kZShTbGFiQ29udGV4dCwgY29udGV4dCk7CiAJU2l6ZQkJbmJsb2NrcyA9IDA7CkBAIC02 NzEsNyArNjc0LDcgQEAgU2xhYlN0YXRzKE1lbW9yeUNvbnRleHQgY29udGV4dCwKIAkJCQkgIiV6 dSB0b3RhbCBpbiAlemQgYmxvY2tzOyAlenUgZnJlZSAoJXpkIGNodW5rcyk7ICV6dSB1c2VkIiwK IAkJCQkgdG90YWxzcGFjZSwgbmJsb2NrcywgZnJlZXNwYWNlLCBmcmVlY2h1bmtzLAogCQkJCSB0 b3RhbHNwYWNlIC0gZnJlZXNwYWNlKTsKLQkJcHJpbnRmdW5jKGNvbnRleHQsIHBhc3N0aHJ1LCBz dGF0c19zdHJpbmcpOworCQlwcmludGZ1bmMoY29udGV4dCwgcGFzc3RocnUsIHN0YXRzX3N0cmlu ZywgcHJpbnRfdG9fc3RkZXJyKTsKIAl9CiAKIAlpZiAodG90YWxzKQpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQKaW5kZXggNjlmZmQwYzNmNC4uNzNjMjJjOGI0ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2Mu ZGF0CkBAIC03OTQ2LDYgKzc5NDYsMTIgQEAKICAgcHJvYXJnbmFtZXMgPT4gJ3tuYW1lLCBpZGVu dCwgcGFyZW50LCBsZXZlbCwgdG90YWxfYnl0ZXMsIHRvdGFsX25ibG9ja3MsIGZyZWVfYnl0ZXMs IGZyZWVfY2h1bmtzLCB1c2VkX2J5dGVzfScsCiAgIHByb3NyYyA9PiAncGdfZ2V0X2JhY2tlbmRf bWVtb3J5X2NvbnRleHRzJyB9LAogCisjIGxvZ2dpbmcgbWVtb3J5IGNvbnRleHRzIG9mIHRoZSBz cGVjaWZpZWQgYmFja2VuZAoreyBvaWQgPT4gJzQ1NDMnLCBkZXNjciA9PiAnbG9nIG1lbW9yeSBj b250ZXh0cyBvZiB0aGUgc3BlY2lmaWVkIGJhY2tlbmQnLAorICBwcm9uYW1lID0+ICdwZ19sb2df YmFja2VuZF9tZW1vcnlfY29udGV4dHMnLAorICBwcm92b2xhdGlsZSA9PiAndicsIHByb3JldHR5 cGUgPT4gJ2Jvb2wnLAorICBwcm9hcmd0eXBlcyA9PiAnaW50NCcsIHByb3NyYyA9PiAncGdfbG9n X2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzJyB9LAorCiAjIG5vbi1wZXJzaXN0ZW50IHNlcmllcyBn ZW5lcmF0b3IKIHsgb2lkID0+ICcxMDY2JywgZGVzY3IgPT4gJ25vbi1wZXJzaXN0ZW50IHNlcmll cyBnZW5lcmF0b3InLAogICBwcm9uYW1lID0+ICdnZW5lcmF0ZV9zZXJpZXMnLCBwcm9yb3dzID0+ ICcxMDAwJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oIGIvc3JjL2luY2x1 ZGUvbWlzY2FkbWluLmgKaW5kZXggNmY4MjUxZTBiMC4uOTUyMDJkMzdhZiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKKysrIGIvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKQEAg LTg0LDYgKzg0LDcgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBQ cm9jRGllUGVuZGluZzsKIGV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3Qg SWRsZUluVHJhbnNhY3Rpb25TZXNzaW9uVGltZW91dFBlbmRpbmc7CiBleHRlcm4gUEdETExJTVBP UlQgdm9sYXRpbGUgc2lnX2F0b21pY190IElkbGVTZXNzaW9uVGltZW91dFBlbmRpbmc7CiBleHRl cm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2lnX2F0b21pY190IFByb2NTaWduYWxCYXJyaWVyUGVu ZGluZzsKK2V4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgTG9nTWVtb3J5 Q29udGV4dFBlbmRpbmc7CiAKIGV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWlj X3QgQ2hlY2tDbGllbnRDb25uZWN0aW9uUGVuZGluZzsKIGV4dGVybiBQR0RMTElNUE9SVCB2b2xh dGlsZSBzaWdfYXRvbWljX3QgQ2xpZW50Q29ubmVjdGlvbkxvc3Q7CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9ub2Rlcy9tZW1ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvbWVtbm9kZXMuaApp bmRleCA5MzMxZWY4MGZkLi5lNmE3NTdkNmEwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rl cy9tZW1ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL21lbW5vZGVzLmgKQEAgLTUyLDcg KzUyLDggQEAgdHlwZWRlZiBzdHJ1Y3QgTWVtb3J5Q29udGV4dENvdW50ZXJzCiAgKi8KIAogdHlw ZWRlZiB2b2lkICgqTWVtb3J5U3RhdHNQcmludEZ1bmMpIChNZW1vcnlDb250ZXh0IGNvbnRleHQs IHZvaWQgKnBhc3N0aHJ1LAotCQkJCQkJCQkJICBjb25zdCBjaGFyICpzdGF0c19zdHJpbmcpOwor CQkJCQkJCQkJICBjb25zdCBjaGFyICpzdGF0c19zdHJpbmcsCisJCQkJCQkJCQkgIGJvb2wgcHJp bnRfdG9fc3RkZXJyKTsKIAogdHlwZWRlZiBzdHJ1Y3QgTWVtb3J5Q29udGV4dE1ldGhvZHMKIHsK QEAgLTY2LDcgKzY3LDggQEAgdHlwZWRlZiBzdHJ1Y3QgTWVtb3J5Q29udGV4dE1ldGhvZHMKIAli b29sCQkoKmlzX2VtcHR5KSAoTWVtb3J5Q29udGV4dCBjb250ZXh0KTsKIAl2b2lkCQkoKnN0YXRz KSAoTWVtb3J5Q29udGV4dCBjb250ZXh0LAogCQkJCQkJICBNZW1vcnlTdGF0c1ByaW50RnVuYyBw cmludGZ1bmMsIHZvaWQgKnBhc3N0aHJ1LAotCQkJCQkJICBNZW1vcnlDb250ZXh0Q291bnRlcnMg KnRvdGFscyk7CisJCQkJCQkgIE1lbW9yeUNvbnRleHRDb3VudGVycyAqdG90YWxzLAorCQkJCQkJ ICBib29sIHByaW50X3RvX3N0ZGVycik7CiAjaWZkZWYgTUVNT1JZX0NPTlRFWFRfQ0hFQ0tJTkcK IAl2b2lkCQkoKmNoZWNrKSAoTWVtb3J5Q29udGV4dCBjb250ZXh0KTsKICNlbmRpZgpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmggYi9zcmMvaW5jbHVkZS9zdG9y YWdlL3Byb2NzaWduYWwuaAppbmRleCA0YWU3ZGMzM2I4Li5lZWMxODZiZTJlIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9y YWdlL3Byb2NzaWduYWwuaApAQCAtMzQsNiArMzQsNyBAQCB0eXBlZGVmIGVudW0KIAlQUk9DU0lH X1BBUkFMTEVMX01FU1NBR0UsCS8qIG1lc3NhZ2UgZnJvbSBjb29wZXJhdGluZyBwYXJhbGxlbCBi YWNrZW5kICovCiAJUFJPQ1NJR19XQUxTTkRfSU5JVF9TVE9QUElORywJLyogYXNrIHdhbHNlbmRl cnMgdG8gcHJlcGFyZSBmb3Igc2h1dGRvd24gICovCiAJUFJPQ1NJR19CQVJSSUVSLAkJCS8qIGds b2JhbCBiYXJyaWVyIGludGVycnVwdCAgKi8KKwlQUk9DU0lHX0xPR19NRU1PUllfQ09OVEVYVCwg LyogYXNrIGJhY2tlbmQgdG8gbG9nIHRoZSBtZW1vcnkgY29udGV4dHMgKi8KIAogCS8qIFJlY292 ZXJ5IGNvbmZsaWN0IHJlYXNvbnMgKi8KIAlQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0RBVEFC QVNFLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvbWVtdXRpbHMuaCBiL3NyYy9pbmNs dWRlL3V0aWxzL21lbXV0aWxzLmgKaW5kZXggMzZhYWU0ZTUxYy4uZmY4NzIyNzRkNCAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvbWVtdXRpbHMuaAorKysgYi9zcmMvaW5jbHVkZS91dGls cy9tZW11dGlscy5oCkBAIC04NCw3ICs4NCw4IEBAIGV4dGVybiBNZW1vcnlDb250ZXh0IE1lbW9y eUNvbnRleHRHZXRQYXJlbnQoTWVtb3J5Q29udGV4dCBjb250ZXh0KTsKIGV4dGVybiBib29sIE1l bW9yeUNvbnRleHRJc0VtcHR5KE1lbW9yeUNvbnRleHQgY29udGV4dCk7CiBleHRlcm4gU2l6ZSBN ZW1vcnlDb250ZXh0TWVtQWxsb2NhdGVkKE1lbW9yeUNvbnRleHQgY29udGV4dCwgYm9vbCByZWN1 cnNlKTsKIGV4dGVybiB2b2lkIE1lbW9yeUNvbnRleHRTdGF0cyhNZW1vcnlDb250ZXh0IGNvbnRl eHQpOwotZXh0ZXJuIHZvaWQgTWVtb3J5Q29udGV4dFN0YXRzRGV0YWlsKE1lbW9yeUNvbnRleHQg Y29udGV4dCwgaW50IG1heF9jaGlsZHJlbik7CitleHRlcm4gdm9pZCBNZW1vcnlDb250ZXh0U3Rh dHNEZXRhaWwoTWVtb3J5Q29udGV4dCBjb250ZXh0LCBpbnQgbWF4X2NoaWxkcmVuLAorCQkJCQkJ CQkJIGJvb2wgcHJpbnRfdG9fc3RkZXJyKTsKIGV4dGVybiB2b2lkIE1lbW9yeUNvbnRleHRBbGxv d0luQ3JpdGljYWxTZWN0aW9uKE1lbW9yeUNvbnRleHQgY29udGV4dCwKIAkJCQkJCQkJCQkJCWJv b2wgYWxsb3cpOwogCkBAIC0xNDQsNiArMTQ1LDggQEAgZXh0ZXJuIHZvaWQgTWVtb3J5Q29udGV4 dENyZWF0ZShNZW1vcnlDb250ZXh0IG5vZGUsCiAJCQkJCQkJCU1lbW9yeUNvbnRleHQgcGFyZW50 LAogCQkJCQkJCQljb25zdCBjaGFyICpuYW1lKTsKIAorZXh0ZXJuIHZvaWQgSGFuZGxlTG9nTWVt b3J5Q29udGV4dEludGVycnVwdCh2b2lkKTsKK2V4dGVybiB2b2lkIFByb2Nlc3NMb2dNZW1vcnlD b250ZXh0SW50ZXJydXB0KHZvaWQpOwogCiAvKgogICogTWVtb3J5LWNvbnRleHQtdHlwZS1zcGVj aWZpYyBmdW5jdGlvbnMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbWlz Y19mdW5jdGlvbnMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9taXNjX2Z1bmN0aW9u cy5vdXQKaW5kZXggZDNhY2I5OGQwNC4uZTg0NTA0MmQzOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9taXNjX2Z1bmN0aW9ucy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9taXNjX2Z1bmN0aW9ucy5vdXQKQEAgLTEzMyw2ICsxMzMsMTkgQEAgRVJST1I6 ICBmdW5jdGlvbiBudW1fbnVsbHMoKSBkb2VzIG5vdCBleGlzdAogTElORSAxOiBTRUxFQ1QgbnVt X251bGxzKCk7CiAgICAgICAgICAgICAgICBeCiBISU5UOiAgTm8gZnVuY3Rpb24gbWF0Y2hlcyB0 aGUgZ2l2ZW4gbmFtZSBhbmQgYXJndW1lbnQgdHlwZXMuIFlvdSBtaWdodCBuZWVkIHRvIGFkZCBl eHBsaWNpdCB0eXBlIGNhc3RzLgorLS0KKy0tIHBnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0 cygpCistLQorLS0gTWVtb3J5IGNvbnRleHRzIGFyZSBsb2dnZWQgYW5kIHRoZXkgYXJlIG5vdCBy ZXR1cm5lZCB0byB0aGUgZnVuY3Rpb24uCistLSBGdXJ0aGVybW9yZSwgdGhlaXIgY29udGVudHMg Y2FuIHZhcnkgZGVwZW5kaW5nIG9uIHRoZSB0aW1pbmcuIEhvd2V2ZXIsCistLSB3ZSBjYW4gYXQg bGVhc3QgdmVyaWZ5IHRoYXQgdGhlIGNvZGUgZG9lc24ndCBmYWlsLgorLS0KK1NFTEVDVCAqIEZS T00gcGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKHBnX2JhY2tlbmRfcGlkKCkpOworIHBn X2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgdAorKDEgcm93KQorCiAtLQogLS0gVGVzdCBzb21lIGJ1aWx0LWluIFNSRnMKIC0t CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9taXNjX2Z1bmN0aW9ucy5zcWwgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9taXNjX2Z1bmN0aW9ucy5zcWwKaW5kZXggMDk0ZThmODI5Ni4u YTM5ODM0OWFmYyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbWlzY19mdW5jdGlv bnMuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL21pc2NfZnVuY3Rpb25zLnNxbApAQCAt MzAsNiArMzAsMTUgQEAgU0VMRUNUIG51bV9udWxscyhWQVJJQURJQyAne30nOjppbnRbXSk7CiBT RUxFQ1QgbnVtX25vbm51bGxzKCk7CiBTRUxFQ1QgbnVtX251bGxzKCk7CiAKKy0tCistLSBwZ19s b2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMoKQorLS0KKy0tIE1lbW9yeSBjb250ZXh0cyBhcmUg bG9nZ2VkIGFuZCB0aGV5IGFyZSBub3QgcmV0dXJuZWQgdG8gdGhlIGZ1bmN0aW9uLgorLS0gRnVy dGhlcm1vcmUsIHRoZWlyIGNvbnRlbnRzIGNhbiB2YXJ5IGRlcGVuZGluZyBvbiB0aGUgdGltaW5n LiBIb3dldmVyLAorLS0gd2UgY2FuIGF0IGxlYXN0IHZlcmlmeSB0aGF0IHRoZSBjb2RlIGRvZXNu J3QgZmFpbC4KKy0tCitTRUxFQ1QgKiBGUk9NIHBnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0 cyhwZ19iYWNrZW5kX3BpZCgpKTsKKwogLS0KIC0tIFRlc3Qgc29tZSBidWlsdC1pbiBTUkZzCiAt LQotLSAKMi4xOC4xCgo= --=_6ebc0663ff20aad6b537220b9e277165--