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 1q96IC-0005j2-Cz for pgsql-hackers@arkaria.postgresql.org; Tue, 13 Jun 2023 15:50:48 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1q96HC-00027h-Ll for pgsql-hackers@arkaria.postgresql.org; Tue, 13 Jun 2023 15:49:46 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1q96HB-00027Y-W0 for pgsql-hackers@lists.postgresql.org; Tue, 13 Jun 2023 15:49:46 +0000 Received: from oss.nttdata.com ([49.212.34.109]) by makus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1q96H7-001zxm-UY for pgsql-hackers@postgresql.org; Tue, 13 Jun 2023 15:49:44 +0000 Received: from oss.nttdata.com (localhost [127.0.0.1]) by oss.nttdata.com (Postfix) with ESMTPA id 9D4F6608F6; Wed, 14 Jun 2023 00:49:39 +0900 (JST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.8 at oss.nttdata.com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_84374e9c6b4d3ed996af3501b4364ca1" Content-Transfer-Encoding: 7bit Date: Wed, 14 Jun 2023 00:49:39 +0900 From: torikoshia To: Michael Paquier Cc: Fujii Masao , Kyotaro Horiguchi , Bharath Rupireddy , pgsql-hackers@postgresql.org Subject: Re: Allow pg_archivecleanup to remove backup history files In-Reply-To: References: <61abc656edfba4a668b367d590b1aaab@oss.nttdata.com> <0aad03237204efeb7038dafa38c202aa@oss.nttdata.com> <0e962f8a-78f5-eafe-1d54-7434482e9fd1@oss.nttdata.com> User-Agent: Roundcube Webmail/1.4.11 Message-ID: <34b661c3b6ec651bd13472b47ddb5913@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 --=_84374e9c6b4d3ed996af3501b4364ca1 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2023-06-12 16:33, Michael Paquier wrote: > On Fri, Jun 09, 2023 at 12:32:15AM +0900, Fujii Masao wrote: Thanks for reviewing! >> printf(_(" -n, --dry-run dry run, show the names of >> the files that would be removed\n")); >> + printf(_(" -b, --clean-backup-history clean up files including >> backup history files\n")); >> >> Shouldn't -b option be placed in alphabetical order? > > +1. Modified the place. -- Regards, -- Atsushi Torikoshi NTT DATA CORPORATION --=_84374e9c6b4d3ed996af3501b4364ca1 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v6-0001-Introduce-pg_archivecleanup-into-getopt_long.patch Content-Disposition: attachment; filename=v6-0001-Introduce-pg_archivecleanup-into-getopt_long.patch; size=4037 RnJvbSAwNmI1NjY0ZDEwOTNhYmE0NDUzMzJhZDU0MjBiZDQ0MmI5OWE4Zjk4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpYUBvc3MubnR0 ZGF0YS5jb20+CkRhdGU6IFR1ZSwgMTQgSnVuIDIwMjMgMDA6MzA6MzcgKzA5MDAKU3ViamVjdDog W1BBVENIIHY1IDEvM10gSW50cm9kdWNlIHBnX2FyY2hpdmVjbGVhbnVwIGludG8gZ2V0b3B0X2xv bmcKClRoaXMgcGF0Y2ggaXMgYSBwcmVsaW1pbmFyeSBzdGVwIHRvIGFkZCBhbiBlYXN5LXRvLXVu ZGVyc3RhbmQgb3B0aW9uCnRvIGRlbGV0ZSBiYWNrdXAgaGlzdG9yeSBmaWxlcywgYnV0IGl0IGFs c28gYWRkcyBsb25nIG9wdGlvbnMgdG8KdGhlIGV4aXN0aW5nIG9wdGlvbnMuCi0tLQogZG9jL3Ny Yy9zZ21sL3JlZi9wZ2FyY2hpdmVjbGVhbnVwLnNnbWwgICAgICAgIHwgIDUgKysrKy0KIHNyYy9i aW4vcGdfYXJjaGl2ZWNsZWFudXAvcGdfYXJjaGl2ZWNsZWFudXAuYyB8IDIwICsrKysrKysrKysr Ky0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BnYXJjaGl2ZWNsZWFudXAuc2dtbCBi L2RvYy9zcmMvc2dtbC9yZWYvcGdhcmNoaXZlY2xlYW51cC5zZ21sCmluZGV4IDYzNWU3Yzc2ODUu LjA5OTkxYzJmY2QgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcGdhcmNoaXZlY2xlYW51 cC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcGdhcmNoaXZlY2xlYW51cC5zZ21sCkBAIC05 NSw2ICs5NSw3IEBAIHBnX2FyY2hpdmVjbGVhbnVwOiAgcmVtb3ZpbmcgZmlsZSAiYXJjaGl2ZS8w MDAwMDAwMTAwMDAwMDM3MDAwMDAwMEUiCiAKICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgIDx0 ZXJtPjxvcHRpb24+LWQ8L29wdGlvbj48L3Rlcm0+CisgICAgICA8dGVybT48b3B0aW9uPi0tZGVi dWc8L29wdGlvbj48L3Rlcm0+CiAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgPHBhcmE+CiAgICAg ICAgIFByaW50IGxvdHMgb2YgZGVidWcgbG9nZ2luZyBvdXRwdXQgb24gPGZpbGVuYW1lPnN0ZGVy cjwvZmlsZW5hbWU+LgpAQCAtMTA0LDYgKzEwNSw3IEBAIHBnX2FyY2hpdmVjbGVhbnVwOiAgcmVt b3ZpbmcgZmlsZSAiYXJjaGl2ZS8wMDAwMDAwMTAwMDAwMDM3MDAwMDAwMEUiCiAKICAgICAgPHZh cmxpc3RlbnRyeT4KICAgICAgIDx0ZXJtPjxvcHRpb24+LW48L29wdGlvbj48L3Rlcm0+CisgICAg ICA8dGVybT48b3B0aW9uPi0tZHJ5LXJ1bjwvb3B0aW9uPjwvdGVybT4KICAgICAgIDxsaXN0aXRl bT4KICAgICAgICA8cGFyYT4KICAgICAgICAgUHJpbnQgdGhlIG5hbWVzIG9mIHRoZSBmaWxlcyB0 aGF0IHdvdWxkIGhhdmUgYmVlbiByZW1vdmVkIG9uIDxmaWxlbmFtZT5zdGRvdXQ8L2ZpbGVuYW1l PiAocGVyZm9ybXMgYSBkcnkgcnVuKS4KQEAgLTEyMiw3ICsxMjQsOCBAQCBwZ19hcmNoaXZlY2xl YW51cDogIHJlbW92aW5nIGZpbGUgImFyY2hpdmUvMDAwMDAwMDEwMDAwMDAzNzAwMDAwMDBFIgog ICAgICA8L3Zhcmxpc3RlbnRyeT4KIAogICAgICA8dmFybGlzdGVudHJ5PgotICAgICAgPHRlcm0+ PG9wdGlvbj4teDwvb3B0aW9uPiA8cmVwbGFjZWFibGU+ZXh0ZW5zaW9uPC9yZXBsYWNlYWJsZT48 L3Rlcm0+CisgICAgICA8dGVybT48b3B0aW9uPi14IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5leHRlbnNpb248L3JlcGxhY2VhYmxlPjwvb3B0aW9uPjwvdGVybT4KKyAgICAgIDx0ZXJt PjxvcHRpb24+LS1zdHJpcC1leHRlbnNpb249PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PmV4dGVuc2lvbjwvcmVwbGFjZWFibGU+PC9vcHRpb24+PC90ZXJtPgogICAgICAgPGxpc3RpdGVt PgogICAgICAgIDxwYXJhPgogICAgICAgICBQcm92aWRlIGFuIGV4dGVuc2lvbgpkaWZmIC0tZ2l0 IGEvc3JjL2Jpbi9wZ19hcmNoaXZlY2xlYW51cC9wZ19hcmNoaXZlY2xlYW51cC5jIGIvc3JjL2Jp bi9wZ19hcmNoaXZlY2xlYW51cC9wZ19hcmNoaXZlY2xlYW51cC5jCmluZGV4IDc3MjZkMDUxNDku LmJlNjJmZmU3NWQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfYXJjaGl2ZWNsZWFudXAvcGdfYXJj aGl2ZWNsZWFudXAuYworKysgYi9zcmMvYmluL3BnX2FyY2hpdmVjbGVhbnVwL3BnX2FyY2hpdmVj bGVhbnVwLmMKQEAgLTE3LDcgKzE3LDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy94bG9nX2ludGVy bmFsLmgiCiAjaW5jbHVkZSAiY29tbW9uL2xvZ2dpbmcuaCIKLSNpbmNsdWRlICJwZ19nZXRvcHQu aCIKKyNpbmNsdWRlICJnZXRvcHRfbG9uZy5oIgogCiBjb25zdCBjaGFyICpwcm9nbmFtZTsKIApA QCAtMjUyLDExICsyNTIsMTEgQEAgdXNhZ2Uodm9pZCkKIAlwcmludGYoXygiVXNhZ2U6XG4iKSk7 CiAJcHJpbnRmKF8oIiAgJXMgW09QVElPTl0uLi4gQVJDSElWRUxPQ0FUSU9OIE9MREVTVEtFUFRX QUxGSUxFXG4iKSwgcHJvZ25hbWUpOwogCXByaW50ZihfKCJcbk9wdGlvbnM6XG4iKSk7Ci0JcHJp bnRmKF8oIiAgLWQgICAgICAgICAgICAgZ2VuZXJhdGUgZGVidWcgb3V0cHV0ICh2ZXJib3NlIG1v ZGUpXG4iKSk7Ci0JcHJpbnRmKF8oIiAgLW4gICAgICAgICAgICAgZHJ5IHJ1biwgc2hvdyB0aGUg bmFtZXMgb2YgdGhlIGZpbGVzIHRoYXQgd291bGQgYmUgcmVtb3ZlZFxuIikpOwotCXByaW50Zihf KCIgIC1WLCAtLXZlcnNpb24gIG91dHB1dCB2ZXJzaW9uIGluZm9ybWF0aW9uLCB0aGVuIGV4aXRc biIpKTsKLQlwcmludGYoXygiICAteCBFWFQgICAgICAgICBjbGVhbiB1cCBmaWxlcyBpZiB0aGV5 IGhhdmUgdGhpcyBleHRlbnNpb25cbiIpKTsKLQlwcmludGYoXygiICAtPywgLS1oZWxwICAgICBz aG93IHRoaXMgaGVscCwgdGhlbiBleGl0XG4iKSk7CisJcHJpbnRmKF8oIiAgLWQsIC0tZGVidWcg ICAgICAgICAgICAgICAgIGdlbmVyYXRlIGRlYnVnIG91dHB1dCAodmVyYm9zZSBtb2RlKVxuIikp OworCXByaW50ZihfKCIgIC1uLCAtLWRyeS1ydW4gICAgICAgICAgICAgICBkcnkgcnVuLCBzaG93 IHRoZSBuYW1lcyBvZiB0aGUgZmlsZXMgdGhhdCB3b3VsZCBiZSByZW1vdmVkXG4iKSk7CisJcHJp bnRmKF8oIiAgLVYsIC0tdmVyc2lvbiAgICAgICAgICAgICAgIG91dHB1dCB2ZXJzaW9uIGluZm9y bWF0aW9uLCB0aGVuIGV4aXRcbiIpKTsKKwlwcmludGYoXygiICAteCwgLS1zdHJpcC1leHRlbnNp b249RVhUICAgc3RyaXAgdGhpcyBleHRlbnRpb24gYmVmb3JlIGlkZW50aWZ5aW5nIGZpbGVzIGZv IGNsZWFuIHVwXG4iKSk7CisJcHJpbnRmKF8oIiAgLT8sIC0taGVscCAgICAgICAgICAgICAgICAg IHNob3cgdGhpcyBoZWxwLCB0aGVuIGV4aXRcbiIpKTsKIAlwcmludGYoXygiXG4iCiAJCQkgIkZv ciB1c2UgYXMgYXJjaGl2ZV9jbGVhbnVwX2NvbW1hbmQgaW4gcG9zdGdyZXNxbC5jb25mOlxuIgog CQkJICIgIGFyY2hpdmVfY2xlYW51cF9jb21tYW5kID0gJ3BnX2FyY2hpdmVjbGVhbnVwIFtPUFRJ T05dLi4uIEFSQ0hJVkVMT0NBVElPTiAlJXInXG4iCkBAIC0yNzQsNiArMjc0LDEyIEBAIHVzYWdl KHZvaWQpCiBpbnQKIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogeworCXN0YXRpYyBzdHJ1 Y3Qgb3B0aW9uIGxvbmdfb3B0aW9uc1tdID0geworCQl7ImRlYnVnIiwgbm9fYXJndW1lbnQsIE5V TEwsICdkJ30sCisJCXsiZHJ5LXJ1biIsIG5vX2FyZ3VtZW50LCBOVUxMLCAnbid9LAorCQl7InN0 cmlwLWV4dGVuc2lvbiIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAneCd9LAorCQl7TlVMTCwg MCwgTlVMTCwgMH0KKwl9OwogCWludAkJCWM7CiAKIAlwZ19sb2dnaW5nX2luaXQoYXJndlswXSk7 CkBAIC0yOTQsNyArMzAwLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCX0KIAl9 CiAKLQl3aGlsZSAoKGMgPSBnZXRvcHQoYXJnYywgYXJndiwgImRueDoiKSkgIT0gLTEpCisJd2hp bGUgKChjID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgImRueDoiLCBsb25nX29wdGlvbnMsIE5V TEwpKSAhPSAtMSkKIAl7CiAJCXN3aXRjaCAoYykKIAkJewotLSAKMi4zOS4yCgo= --=_84374e9c6b4d3ed996af3501b4364ca1 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v6-0002-Allow-pg_archivecleanup-to-remove-backup-history-.patch Content-Disposition: attachment; filename=v6-0002-Allow-pg_archivecleanup-to-remove-backup-history-.patch; size=11059 RnJvbSBlZjIzNGZlMDZmMzJiMGIzYjBiM2Q1NGNlZmM3OGVlN2ZiZjQwMzI4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpYUBvc3MubnR0 ZGF0YS5jb20+CkRhdGU6IFR1ZSwgMTQgSnVuIDIwMjMgMDA6MzE6MzkgKzA5MDAKU3ViamVjdDog W1BBVENIIHY1IDIvM10gQWxsb3cgcGdfYXJjaGl2ZWNsZWFudXAgdG8gcmVtb3ZlIGJhY2t1cCBo aXN0b3J5IGZpbGVzCgpCYWNrdXAgaGlzdG9yeSBmaWxlcyBhcmUganVzdCBmZXcgYnl0ZXMsIGJ1 dCBpdCBjYW4gYmUgbm9pc3kgZm9yIHRoZQpleWUgdG8gc2VlIGEgbGFyZ2UgYWNjdW11bGF0aW9u IG9mIGhpc3RvcnkgZmlsZXMgbWl4ZWQgd2l0aCB0aGUgV0FMCnNlZ21lbnRzLgpUaGlzIHBhdGNo IGFkZHMgYSBuZXcgb3B0aW9uIHRvIHJlbW92ZSBmaWxlcyBpbmNsdWRpbmcgYmFja3VwCmhpc3Rv cnkgZmlsZXMgb2xkZXIgb2xkZXN0a2VwdHdhbGZpbGUuCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9w Z2FyY2hpdmVjbGVhbnVwLnNnbWwgICAgICAgIHwgMTEgKysrCiBzcmMvYmluL3BnX2FyY2hpdmVj bGVhbnVwL3BnX2FyY2hpdmVjbGVhbnVwLmMgfCA4NSArKysrKysrKysrKystLS0tLS0tCiAuLi4v dC8wMTBfcGdfYXJjaGl2ZWNsZWFudXAucGwgICAgICAgICAgICAgICAgfCA3OSArKysrKysrKysr Ky0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAxMTcgaW5zZXJ0aW9ucygrKSwgNTggZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9wZ2FyY2hpdmVjbGVhbnVwLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvcmVmL3BnYXJjaGl2ZWNsZWFudXAuc2dtbAppbmRleCAwOTk5MWMyZmNk Li44ZmFjMjMzZGI2IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3BnYXJjaGl2ZWNsZWFu dXAuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3BnYXJjaGl2ZWNsZWFudXAuc2dtbApAQCAt MTEzLDYgKzExMywxNyBAQCBwZ19hcmNoaXZlY2xlYW51cDogIHJlbW92aW5nIGZpbGUgImFyY2hp dmUvMDAwMDAwMDEwMDAwMDAzNzAwMDAwMDBFIgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92 YXJsaXN0ZW50cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgIDx0ZXJtPjxvcHRpb24+ LWI8L29wdGlvbj48L3Rlcm0+CisgICAgICA8dGVybT48b3B0aW9uPi0tY2xlYW4tYmFja3VwLWhp c3Rvcnk8L29wdGlvbj48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+Cisg ICAgICAgICBSZW1vdmUgYmFja3VwIGhpc3RvcnkgZmlsZXMuCisgICAgICAgICBGb3IgZGV0YWls cyBhYm91dCBiYWNrdXAgaGlzdG9yeSBmaWxlLCBwbGVhc2UgcmVmZXIgdG8gdGhlIDx4cmVmIGxp bmtlbmQ9ImJhY2t1cC1iYXNlLWJhY2t1cCIvPi4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xp c3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICA8dmFybGlzdGVudHJ5PgogICAg ICAgPHRlcm0+PG9wdGlvbj4tVjwvb3B0aW9uPjwvdGVybT4KICAgICAgIDx0ZXJtPjxvcHRpb24+ LS12ZXJzaW9uPC9vcHRpb24+PC90ZXJtPgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19hcmNoaXZl Y2xlYW51cC9wZ19hcmNoaXZlY2xlYW51cC5jIGIvc3JjL2Jpbi9wZ19hcmNoaXZlY2xlYW51cC9w Z19hcmNoaXZlY2xlYW51cC5jCmluZGV4IGJlNjJmZmU3NWQuLmE3Zjc3ZDkxNTggMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcGdfYXJjaGl2ZWNsZWFudXAvcGdfYXJjaGl2ZWNsZWFudXAuYworKysgYi9z cmMvYmluL3BnX2FyY2hpdmVjbGVhbnVwL3BnX2FyY2hpdmVjbGVhbnVwLmMKQEAgLTIzLDYgKzIz LDggQEAgY29uc3QgY2hhciAqcHJvZ25hbWU7CiAKIC8qIE9wdGlvbnMgYW5kIGRlZmF1bHRzICov CiBib29sCQlkcnlydW4gPSBmYWxzZTsJCS8qIGFyZSB3ZSBwZXJmb3JtaW5nIGEgZHJ5LXJ1biBv cGVyYXRpb24/ICovCitib29sCQljbGVhbkJhY2t1cEhpc3RvcnkgPSBmYWxzZTsJLyogcmVtb3Zl IGZpbGVzIGluY2x1ZGluZworCQkJCQkJCQkJCQkJICogYmFja3VwIGhpc3RvcnkgZmlsZXMgKi8K IGNoYXIJICAgKmFkZGl0aW9uYWxfZXh0ID0gTlVMTDsJLyogRXh0ZW5zaW9uIHRvIHJlbW92ZSBm cm9tIGZpbGVuYW1lcyAqLwogCiBjaGFyCSAgICphcmNoaXZlTG9jYXRpb247CS8qIHdoZXJlIHRv IGZpbmQgdGhlIGFyY2hpdmU/ICovCkBAIC05NywxNSArOTksMzEgQEAgQ2xlYW51cFByaW9yV0FM RmlsZXModm9pZCkKIAl7CiAJCXdoaWxlIChlcnJubyA9IDAsICh4bGRlID0gcmVhZGRpcih4bGRp cikpICE9IE5VTEwpCiAJCXsKKwkJCWNoYXIJCVdBTEZpbGVQYXRoW01BWFBHUEFUSCAqIDJdOyAv KiB0aGUgZmlsZSBwYXRoCisJCQkJCQkJCQkJCQkJCSAqIGluY2x1ZGluZyBhcmNoaXZlICovCiAJ CQkvKgotCQkJICogVHJ1bmNhdGlvbiBpcyBlc3NlbnRpYWxseSBoYXJtbGVzcywgYmVjYXVzZSB3 ZSBza2lwIG5hbWVzIG9mCi0JCQkgKiBsZW5ndGggb3RoZXIgdGhhbiBYTE9HX0ZOQU1FX0xFTi4g IChJbiBwcmluY2lwbGUsIG9uZSBjb3VsZCB1c2UKLQkJCSAqIGEgMTAwMC1jaGFyYWN0ZXIgYWRk aXRpb25hbF9leHQgYW5kIGdldCB0cm91YmxlLikKKwkJCSAqIFRydW5jYXRpb24gaXMgZXNzZW50 aWFsbHkgaGFybWxlc3MsICBiZWNhdXNlIHdlIGNoZWNrIHRoZSBmaWxlCisJCQkgKiBmb3JtYXQg aW5jbHVkaW5nIHRoZSBsZW5ndGggaW1tZWRpYXRlbHkgYWZ0ZXIgdGhpcy4KKwkJCSAqIChJbiBw cmluY2lwbGUsIG9uZSBjb3VsZCB1c2UgYSAxMDAwLWNoYXJhY3RlciBhZGRpdGlvbmFsX2V4dAor CQkJICogYW5kIGdldCB0cm91YmxlLikKIAkJCSAqLwogCQkJc3RybGNweSh3YWxmaWxlLCB4bGRl LT5kX25hbWUsIE1BWFBHUEFUSCk7CiAJCQlUcmltRXh0ZW5zaW9uKHdhbGZpbGUsIGFkZGl0aW9u YWxfZXh0KTsKIAogCQkJLyoKKwkJCSAqIENoZWNrIGZpbGUgbmFtZS4KKwkJCSAqCisJCQkgKiBX ZSBza2lwIGZpbGVzIHdoaWNoIGFyZSBub3QgV0FMIGZpbGUgb3IgcGFydGlhbCBXQUwgZmlsZS4K KwkJCSAqIEFsc28gd2Ugc2tpcCBiYWNrdXAgaGlzdG9yeSBmaWxlcyB3aGVuIC0tY2xlYW4tYmFj a3VwLWhpc3RvcnkKKwkJCSAqIGlzIG5vdCBzcGVjaWZpZWQuCisJCQkgKi8KKwkJCWlmICghSXNY TG9nRmlsZU5hbWUod2FsZmlsZSkgJiYgIUlzUGFydGlhbFhMb2dGaWxlTmFtZSh3YWxmaWxlKSAm JgorCQkJCSEoY2xlYW5CYWNrdXBIaXN0b3J5ICYmIElzQmFja3VwSGlzdG9yeUZpbGVOYW1lKHdh bGZpbGUpKSkKKwkJCQljb250aW51ZTsKKworCQkJLyoKKwkJCSAqIENoZWNrIGN1dG9mZiBwb2lu dC4KKwkJCSAqCiAJCQkgKiBXZSBpZ25vcmUgdGhlIHRpbWVsaW5lIHBhcnQgb2YgdGhlIFhMT0cg c2VnbWVudCBpZGVudGlmaWVycyBpbgogCQkJICogZGVjaWRpbmcgd2hldGhlciBhIHNlZ21lbnQg aXMgc3RpbGwgbmVlZGVkLiAgVGhpcyBlbnN1cmVzIHRoYXQKIAkJCSAqIHdlIHdvbid0IHByZW1h dHVyZWx5IHJlbW92ZSBhIHNlZ21lbnQgZnJvbSBhIHBhcmVudCB0aW1lbGluZS4KQEAgLTExOCwz OSArMTM2LDM1IEBAIENsZWFudXBQcmlvcldBTEZpbGVzKHZvaWQpCiAJCQkgKiBmaWxlLiBOb3Rl IHRoYXQgdGhpcyBtZWFucyBmaWxlcyBhcmUgbm90IHJlbW92ZWQgaW4gdGhlIG9yZGVyCiAJCQkg KiB0aGV5IHdlcmUgb3JpZ2luYWxseSB3cml0dGVuLCBpbiBjYXNlIHRoaXMgd29ycmllcyB5b3Uu CiAJCQkgKi8KLQkJCWlmICgoSXNYTG9nRmlsZU5hbWUod2FsZmlsZSkgfHwgSXNQYXJ0aWFsWExv Z0ZpbGVOYW1lKHdhbGZpbGUpKSAmJgotCQkJCXN0cmNtcCh3YWxmaWxlICsgOCwgZXhjbHVzaXZl Q2xlYW51cEZpbGVOYW1lICsgOCkgPCAwKQotCQkJewotCQkJCWNoYXIJCVdBTEZpbGVQYXRoW01B WFBHUEFUSCAqIDJdOyAvKiB0aGUgZmlsZSBwYXRoCi0JCQkJCQkJCQkJCQkJCSAqIGluY2x1ZGlu ZyBhcmNoaXZlICovCisJCQlpZiAoc3RyY21wKHdhbGZpbGUgKyA4LCBleGNsdXNpdmVDbGVhbnVw RmlsZU5hbWUgKyA4KSA+PSAwKQorCQkJCWNvbnRpbnVlOwogCisJCQkvKgorCQkJICogVXNlIHRo ZSBvcmlnaW5hbCBmaWxlIG5hbWUgYWdhaW4gbm93LCBpbmNsdWRpbmcgYW55CisJCQkgKiBleHRl bnNpb24gdGhhdCBtaWdodCBoYXZlIGJlZW4gY2hvcHBlZCBvZmYgYmVmb3JlIHRlc3RpbmcKKwkJ CSAqIHRoZSBzZXF1ZW5jZS4KKwkJCSAqLworCQkJc25wcmludGYoV0FMRmlsZVBhdGgsIHNpemVv ZihXQUxGaWxlUGF0aCksICIlcy8lcyIsCisJCQkJCSBhcmNoaXZlTG9jYXRpb24sIHhsZGUtPmRf bmFtZSk7CisKKwkJCWlmIChkcnlydW4pCisJCQl7CiAJCQkJLyoKLQkJCQkgKiBVc2UgdGhlIG9y aWdpbmFsIGZpbGUgbmFtZSBhZ2FpbiBub3csIGluY2x1ZGluZyBhbnkKLQkJCQkgKiBleHRlbnNp b24gdGhhdCBtaWdodCBoYXZlIGJlZW4gY2hvcHBlZCBvZmYgYmVmb3JlIHRlc3RpbmcKLQkJCQkg KiB0aGUgc2VxdWVuY2UuCisJCQkJICogUHJpbnRzIHRoZSBuYW1lIG9mIHRoZSBmaWxlIHRvIGJl IHJlbW92ZWQgYW5kIHNraXBzIHRoZQorCQkJCSAqIGFjdHVhbCByZW1vdmFsLiAgVGhlIHJlZ3Vs YXIgcHJpbnRvdXQgaXMgc28gdGhhdCB0aGUKKwkJCQkgKiB1c2VyIGNhbiBwaXBlIHRoZSBvdXRw dXQgaW50byBzb21lIG90aGVyIHByb2dyYW0uCiAJCQkJICovCi0JCQkJc25wcmludGYoV0FMRmls ZVBhdGgsIHNpemVvZihXQUxGaWxlUGF0aCksICIlcy8lcyIsCi0JCQkJCQkgYXJjaGl2ZUxvY2F0 aW9uLCB4bGRlLT5kX25hbWUpOwotCi0JCQkJaWYgKGRyeXJ1bikKLQkJCQl7Ci0JCQkJCS8qCi0J CQkJCSAqIFByaW50cyB0aGUgbmFtZSBvZiB0aGUgZmlsZSB0byBiZSByZW1vdmVkIGFuZCBza2lw cyB0aGUKLQkJCQkJICogYWN0dWFsIHJlbW92YWwuICBUaGUgcmVndWxhciBwcmludG91dCBpcyBz byB0aGF0IHRoZQotCQkJCQkgKiB1c2VyIGNhbiBwaXBlIHRoZSBvdXRwdXQgaW50byBzb21lIG90 aGVyIHByb2dyYW0uCi0JCQkJCSAqLwotCQkJCQlwcmludGYoIiVzXG4iLCBXQUxGaWxlUGF0aCk7 Ci0JCQkJCXBnX2xvZ19kZWJ1ZygiZmlsZSBcIiVzXCIgd291bGQgYmUgcmVtb3ZlZCIsIFdBTEZp bGVQYXRoKTsKLQkJCQkJY29udGludWU7Ci0JCQkJfQotCi0JCQkJcGdfbG9nX2RlYnVnKCJyZW1v dmluZyBmaWxlIFwiJXNcIiIsIFdBTEZpbGVQYXRoKTsKLQotCQkJCXJjID0gdW5saW5rKFdBTEZp bGVQYXRoKTsKLQkJCQlpZiAocmMgIT0gMCkKLQkJCQkJcGdfZmF0YWwoImNvdWxkIG5vdCByZW1v dmUgZmlsZSBcIiVzXCI6ICVtIiwKLQkJCQkJCQkgV0FMRmlsZVBhdGgpOworCQkJCXByaW50Zigi JXNcbiIsIFdBTEZpbGVQYXRoKTsKKwkJCQlwZ19sb2dfZGVidWcoImZpbGUgXCIlc1wiIHdvdWxk IGJlIHJlbW92ZWQiLCBXQUxGaWxlUGF0aCk7CisJCQkJY29udGludWU7CiAJCQl9CisKKwkJCXBn X2xvZ19kZWJ1ZygicmVtb3ZpbmcgZmlsZSBcIiVzXCIiLCBXQUxGaWxlUGF0aCk7CisKKwkJCXJj ID0gdW5saW5rKFdBTEZpbGVQYXRoKTsKKwkJCWlmIChyYyAhPSAwKQorCQkJCXBnX2ZhdGFsKCJj b3VsZCBub3QgcmVtb3ZlIGZpbGUgXCIlc1wiOiAlbSIsCisJCQkJCQkgV0FMRmlsZVBhdGgpOwog CQl9CiAKIAkJaWYgKGVycm5vKQpAQCAtMjU0LDYgKzI2OCw3IEBAIHVzYWdlKHZvaWQpCiAJcHJp bnRmKF8oIlxuT3B0aW9uczpcbiIpKTsKKwlwcmludGYoXygiICAtYiwgLS1jbGVhbi1iYWNrdXAt aGlzdG9yeSAgY2xlYW4gdXAgZmlsZXMgaW5jbHVkaW5nIGJhY2t1cCBoaXN0b3J5IGZpbGVzXG4i KSk7CiAJcHJpbnRmKF8oIiAgLWQsIC0tZGVidWcgICAgICAgICAgICAgICAgIGdlbmVyYXRlIGRl YnVnIG91dHB1dCAodmVyYm9zZSBtb2RlKVxuIikpOwogCXByaW50ZihfKCIgIC1uLCAtLWRyeS1y dW4gICAgICAgICAgICAgICBkcnkgcnVuLCBzaG93IHRoZSBuYW1lcyBvZiB0aGUgZmlsZXMgdGhh dCB3b3VsZCBiZSByZW1vdmVkXG4iKSk7CiAJcHJpbnRmKF8oIiAgLVYsIC0tdmVyc2lvbiAgICAg ICAgICAgICAgIG91dHB1dCB2ZXJzaW9uIGluZm9ybWF0aW9uLCB0aGVuIGV4aXRcbiIpKTsKIAlw cmludGYoXygiICAteCwgLS1zdHJpcC1leHRlbnNpb249RVhUICAgc3RyaXAgdGhpcyBleHRlbnRp b24gYmVmb3JlIGlkZW50aWZ5aW5nIGZpbGVzIGZvIGNsZWFuIHVwXG4iKSk7CiAJcHJpbnRmKF8o IiAgLT8sIC0taGVscCAgICAgICAgICAgICAgICAgIHNob3cgdGhpcyBoZWxwLCB0aGVuIGV4aXRc biIpKTsKQEAgLTI3NSw2ICsyOTAsNyBAQCBpbnQKIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2 KQogewogCXN0YXRpYyBzdHJ1Y3Qgb3B0aW9uIGxvbmdfb3B0aW9uc1tdID0geworCQl7ImNsZWFu LWJhY2t1cC1oaXN0b3J5Iiwgbm9fYXJndW1lbnQsIE5VTEwsICdiJ30sCiAJCXsiZGVidWciLCBu b19hcmd1bWVudCwgTlVMTCwgJ2QnfSwKIAkJeyJkcnktcnVuIiwgbm9fYXJndW1lbnQsIE5VTEws ICduJ30sCiAJCXsic3RyaXAtZXh0ZW5zaW9uIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICd4 J30sCkBAIC0zMDAsMTAgKzMxNiwxMyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJ fQogCX0KIAotCXdoaWxlICgoYyA9IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsICJkbng6IiwgbG9u Z19vcHRpb25zLCBOVUxMKSkgIT0gLTEpCisJd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcoYXJnYywg YXJndiwgImJkbng6IiwgbG9uZ19vcHRpb25zLCBOVUxMKSkgIT0gLTEpCiAJewogCQlzd2l0Y2gg KGMpCiAJCXsKKwkJCWNhc2UgJ2InOiAJCQkvKiBSZW1vdmUgYmFja3VwIGhpc3RvcnkgZmlsZXMg dG9vICovCisJCQkJY2xlYW5CYWNrdXBIaXN0b3J5ID0gdHJ1ZTsKKwkJCQlicmVhazsKIAkJCWNh c2UgJ2QnOgkJCS8qIERlYnVnIG1vZGUgKi8KIAkJCQlwZ19sb2dnaW5nX2luY3JlYXNlX3ZlcmJv c2l0eSgpOwogCQkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19hcmNoaXZlY2xlYW51 cC90LzAxMF9wZ19hcmNoaXZlY2xlYW51cC5wbCBiL3NyYy9iaW4vcGdfYXJjaGl2ZWNsZWFudXAv dC8wMTBfcGdfYXJjaGl2ZWNsZWFudXAucGwKaW5kZXggY2MzMzg2ZDE0Ni4uMDMwYTgyZTdmYSAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19hcmNoaXZlY2xlYW51cC90LzAxMF9wZ19hcmNoaXZlY2xl YW51cC5wbAorKysgYi9zcmMvYmluL3BnX2FyY2hpdmVjbGVhbnVwL3QvMDEwX3BnX2FyY2hpdmVj bGVhbnVwLnBsCkBAIC0xMiwxMyArMTIsMjMgQEAgcHJvZ3JhbV9vcHRpb25zX2hhbmRsaW5nX29r KCdwZ19hcmNoaXZlY2xlYW51cCcpOwogCiBteSAkdGVtcGRpciA9IFBvc3RncmVTUUw6OlRlc3Q6 OlV0aWxzOjp0ZW1wZGlyOwogCi1teSBAd2FsZmlsZXMgPSAoCi0JJzAwMDAwMDAxMDAwMDAwMzcw MDAwMDAwQy5neicsICcwMDAwMDAwMTAwMDAwMDM3MDAwMDAwMEQnLAotCScwMDAwMDAwMTAwMDAw MDM3MDAwMDAwMEUnLCAnMDAwMDAwMDEwMDAwMDAzNzAwMDAwMDBGLnBhcnRpYWwnLCk7CitteSBA d2FsZmlsZXNfd2l0aF9neiA9ICgKKwl7IG5hbWUgPT4gJzAwMDAwMDAxMDAwMDAwMzcwMDAwMDAw Qy5neicsICAgICAgcHJlc2VudCA9PiAwIH0sCisJeyBuYW1lID0+ICcwMDAwMDAwMTAwMDAwMDM3 MDAwMDAwMEQnLCAgICAgICAgIHByZXNlbnQgPT4gMCB9LAorCXsgbmFtZSA9PiAnMDAwMDAwMDEw MDAwMDAzNzAwMDAwMDBFJywgICAgICAgICBwcmVzZW50ID0+IDEgfSwKKwl7IG5hbWUgPT4gJzAw MDAwMDAxMDAwMDAwMzcwMDAwMDAwRi5wYXJ0aWFsJywgcHJlc2VudCA9PiAxIH0sCisJeyBuYW1l ID0+ICd1bnJlbGF0ZWRfZmlsZScsICAgICAgICAgICAgICAgICAgIHByZXNlbnQgPT4gMSB9KTsK KworbXkgQHdhbGZpbGVzX3dpdGhfYmFja3VwID0gKAorCXsgbmFtZSA9PiAnMDAwMDAwMDEwMDAw MDAzNzAwMDAwMDBEJywgICAgICAgICAgICAgICAgIHByZXNlbnQgPT4gMCB9LAorCXsgbmFtZSA9 PiAnMDAwMDAwMDEwMDAwMDAzNzAwMDAwMDBELjAwMDAwMDI4LmJhY2t1cCcsIHByZXNlbnQgPT4g MCB9LAorCXsgbmFtZSA9PiAnMDAwMDAwMDEwMDAwMDAzNzAwMDAwMDBFJywgICAgICAgICAgICAg ICAgIHByZXNlbnQgPT4gMSB9LAorCXsgbmFtZSA9PiAnMDAwMDAwMDEwMDAwMDAzNzAwMDAwMDBG LnBhcnRpYWwnLCAgICAgICAgIHByZXNlbnQgPT4gMSB9LAorCXsgbmFtZSA9PiAndW5yZWxhdGVk X2ZpbGUnLCAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNlbnQgPT4gMSB9KTsKIAogc3Vi IGNyZWF0ZV9maWxlcwogewotCWZvcmVhY2ggbXkgJGZuIChAd2FsZmlsZXMsICd1bnJlbGF0ZWRf ZmlsZScpCisJZm9yZWFjaCBteSAkZm4gKEBfKQogCXsKIAkJb3BlbiBteSAkZmlsZSwgJz4nLCAi JHRlbXBkaXIvJGZuIjsKIAkJcHJpbnQgJGZpbGUgJ0NPTlRFTlQnOwpAQCAtMjcsNyArMzcsMTgg QEAgc3ViIGNyZWF0ZV9maWxlcwogCXJldHVybjsKIH0KIAotY3JlYXRlX2ZpbGVzKCk7CitzdWIg Z2V0X3dhbGZpbGVzCit7CisJbXkgQHdhbGZpbGVzOworCisJZm9yIG15ICR3YWxwYWlyIChAXykK Kwl7CisJCXB1c2ggQHdhbGZpbGVzLCAkd2FscGFpci0+e25hbWV9OworCX0KKwlyZXR1cm4gQHdh bGZpbGVzOworfQorCitjcmVhdGVfZmlsZXMoZ2V0X3dhbGZpbGVzKEB3YWxmaWxlc193aXRoX2d6 KSk7CiAKIGNvbW1hbmRfZmFpbHNfbGlrZSgKIAlbJ3BnX2FyY2hpdmVjbGVhbnVwJ10sCkBAIC01 OSwxNCArODAsMTQgQEAgY29tbWFuZF9mYWlsc19saWtlKAogCW15ICRzdGRlcnI7CiAJbXkgJHJl c3VsdCA9CiAJICBJUEM6OlJ1bjo6cnVuIFsgJ3BnX2FyY2hpdmVjbGVhbnVwJywgJy1kJywgJy1u JywgJHRlbXBkaXIsCi0JCSR3YWxmaWxlc1syXSBdLAorCQkkd2FsZmlsZXNfd2l0aF9nelsyXS0+ e25hbWV9IF0sCiAJICAnMj4nLCBcJHN0ZGVycjsKIAlvaygkcmVzdWx0LCAicGdfYXJjaGl2ZWNs ZWFudXAgZHJ5IHJ1bjogZXhpdCBjb2RlIDAiKTsKIAlsaWtlKAogCQkkc3RkZXJyLAotCQlxci8k d2FsZmlsZXNbMV0uKndvdWxkIGJlIHJlbW92ZWQvLAorCQlxci8kd2FsZmlsZXNfd2l0aF9nelsx XS0+e25hbWV9Lip3b3VsZCBiZSByZW1vdmVkLywKIAkJInBnX2FyY2hpdmVjbGVhbnVwIGRyeSBy dW46IG1hdGNoZXMiKTsKLQlmb3JlYWNoIG15ICRmbiAoQHdhbGZpbGVzKQorCWZvcmVhY2ggbXkg JGZuIChnZXRfd2FsZmlsZXMoQHdhbGZpbGVzX3dpdGhfZ3opKQogCXsKIAkJb2soLWYgIiR0ZW1w ZGlyLyRmbiIsICIkZm4gbm90IHJlbW92ZWQiKTsKIAl9CkBAIC03NiwzMiArOTcsNDAgQEAgc3Vi IHJ1bl9jaGVjawogewogCWxvY2FsICRUZXN0OjpCdWlsZGVyOjpMZXZlbCA9ICRUZXN0OjpCdWls ZGVyOjpMZXZlbCArIDE7CiAKLQlteSAoJHN1ZmZpeCwgJHRlc3RfbmFtZSkgPSBAXzsKKwlteSAo JHRlc3RkYXRhLCAkb2xkZXN0a2VwdHdhbGZpbGUsICR0ZXN0X25hbWUsIEBvcHRpb25zKSA9IEBf OwogCi0JY3JlYXRlX2ZpbGVzKCk7CisJY3JlYXRlX2ZpbGVzKGdldF93YWxmaWxlcyhAJHRlc3Rk YXRhKSk7CiAKIAljb21tYW5kX29rKAogCQlbCi0JCQkncGdfYXJjaGl2ZWNsZWFudXAnLCAnLXgn LCAnLmd6JywgJHRlbXBkaXIsCi0JCQkkd2FsZmlsZXNbMl0gLiAkc3VmZml4CisJCQkncGdfYXJj aGl2ZWNsZWFudXAnLCBAb3B0aW9ucywgJHRlbXBkaXIsCisJCQkkb2xkZXN0a2VwdHdhbGZpbGUK IAkJXSwKIAkJIiR0ZXN0X25hbWU6IHJ1bnMiKTsKIAotCW9rKCEtZiAiJHRlbXBkaXIvJHdhbGZp bGVzWzBdIiwKLQkJIiR0ZXN0X25hbWU6IGZpcnN0IG9sZGVyIFdBTCBmaWxlIHdhcyBjbGVhbmVk IHVwIik7Ci0Jb2soIS1mICIkdGVtcGRpci8kd2FsZmlsZXNbMV0iLAotCQkiJHRlc3RfbmFtZTog c2Vjb25kIG9sZGVyIFdBTCBmaWxlIHdhcyBjbGVhbmVkIHVwIik7Ci0Jb2soLWYgIiR0ZW1wZGly LyR3YWxmaWxlc1syXSIsCi0JCSIkdGVzdF9uYW1lOiByZXN0YXJ0ZmlsZSB3YXMgbm90IGNsZWFu ZWQgdXAiKTsKLQlvaygtZiAiJHRlbXBkaXIvJHdhbGZpbGVzWzNdIiwKLQkJIiR0ZXN0X25hbWU6 IG5ld2VyIFdBTCBmaWxlIHdhcyBub3QgY2xlYW5lZCB1cCIpOwotCW9rKC1mICIkdGVtcGRpci91 bnJlbGF0ZWRfZmlsZSIsCi0JCSIkdGVzdF9uYW1lOiB1bnJlbGF0ZWQgZmlsZSB3YXMgbm90IGNs ZWFuZWQgdXAiKTsKKwlmb3IgbXkgJHdhbHBhaXIgKEAkdGVzdGRhdGEpCisJeworCQlpZiAoJHdh bHBhaXItPntwcmVzZW50fSkKKwkJeworCQkJb2soLWYgIiR0ZW1wZGlyLyR3YWxwYWlyLT57bmFt ZX0iLAorCQkJCSIkdGVzdF9uYW1lOiR3YWxwYWlyLT57bmFtZX0gd2FzIG5vdCBjbGVhbmVkIHVw Iik7CisJCX0KKwkJZWxzZQorCQl7CisJCQlvayghLWYgIiR0ZW1wZGlyLyR3YWxwYWlyLT57bmFt ZX0iLAorCQkJCSIkdGVzdF9uYW1lOiR3YWxwYWlyLT57bmFtZX0gd2FzIGNsZWFuZWQgdXAiKTsK KwkJfQorCX0KIAlyZXR1cm47CiB9CiAKLXJ1bl9jaGVjaygnJywgJ3BnX2FyY2hpdmVjbGVhbnVw Jyk7Ci1ydW5fY2hlY2soJy5wYXJ0aWFsJywgJ3BnX2FyY2hpdmVjbGVhbnVwIHdpdGggLnBhcnRp YWwgZmlsZScpOwotcnVuX2NoZWNrKCcuMDAwMDAwMjAuYmFja3VwJywgJ3BnX2FyY2hpdmVjbGVh bnVwIHdpdGggLmJhY2t1cCBmaWxlJyk7CitydW5fY2hlY2soXEB3YWxmaWxlc193aXRoX2d6LCAn MDAwMDAwMDEwMDAwMDAzNzAwMDAwMDBFJywKKwkncGdfYXJjaGl2ZWNsZWFudXAnLCAnLXguZ3on KTsKK3J1bl9jaGVjayhcQHdhbGZpbGVzX3dpdGhfZ3osICcwMDAwMDAwMTAwMDAwMDM3MDAwMDAw MEUucGFydGlhbCcsCisJJ3BnX2FyY2hpdmVjbGVhbnVwIHdpdGggLnBhcnRpYWwgZmlsZScsICct eC5neicpOworcnVuX2NoZWNrKFxAd2FsZmlsZXNfd2l0aF9neiwgJzAwMDAwMDAxMDAwMDAwMzcw MDAwMDAwRS4wMDAwMDAyMC5iYWNrdXAnLAorCSdwZ19hcmNoaXZlY2xlYW51cCB3aXRoIC5iYWNr dXAgZmlsZScsICcteC5neicpOworcnVuX2NoZWNrKFxAd2FsZmlsZXNfd2l0aF9iYWNrdXAsICcw MDAwMDAwMTAwMDAwMDM3MDAwMDAwMEUnLAorCSdwZ19hcmNoaXZlY2xlYW51cCB3aXRoIC0tY2xl YW4tYmFja3VwLWhpc3RvcnknLCAnLWInKTsKIAogZG9uZV90ZXN0aW5nKCk7Ci0tIAoyLjM5LjIK Cg== --=_84374e9c6b4d3ed996af3501b4364ca1 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v6-0003-Refactored-to-reduce-the-nesting-level.patch Content-Disposition: attachment; filename=v6-0003-Refactored-to-reduce-the-nesting-level.patch; size=6092 RnJvbSBiZWYzNzZiMjc2NjkyMzMzOWRlZGJmM2ZhZTllNTE2MjYyYjQzM2ExIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpYUBvc3MubnR0 ZGF0YS5jb20+CkRhdGU6IFR1ZSwgMTQgSnVuIDIwMjMgMDA6MzM6MTAgKzA5MDAKU3ViamVjdDog W1BBVENIIHY1IDMvM10gUmVmYWN0b3JlZCB0byByZWR1Y2UgdGhlIG5lc3RpbmcgbGV2ZWwuCgot LS0KIHNyYy9iaW4vcGdfYXJjaGl2ZWNsZWFudXAvcGdfYXJjaGl2ZWNsZWFudXAuYyB8IDE0NiAr KysrKysrKystLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA3MiBpbnNlcnRpb25zKCspLCA3NCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2FyY2hpdmVjbGVhbnVwL3BnX2Fy Y2hpdmVjbGVhbnVwLmMgYi9zcmMvYmluL3BnX2FyY2hpdmVjbGVhbnVwL3BnX2FyY2hpdmVjbGVh bnVwLmMKaW5kZXggYTdmNzdkOTE1OC4uZjQ3NTE3N2VkYiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w Z19hcmNoaXZlY2xlYW51cC9wZ19hcmNoaXZlY2xlYW51cC5jCisrKyBiL3NyYy9iaW4vcGdfYXJj aGl2ZWNsZWFudXAvcGdfYXJjaGl2ZWNsZWFudXAuYwpAQCAtOTUsODcgKzk1LDg1IEBAIENsZWFu dXBQcmlvcldBTEZpbGVzKHZvaWQpCiAJc3RydWN0IGRpcmVudCAqeGxkZTsKIAljaGFyCQl3YWxm aWxlW01BWFBHUEFUSF07CiAKLQlpZiAoKHhsZGlyID0gb3BlbmRpcihhcmNoaXZlTG9jYXRpb24p KSAhPSBOVUxMKQorCWlmICgoeGxkaXIgPSBvcGVuZGlyKGFyY2hpdmVMb2NhdGlvbikpID09IE5V TEwpCisJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBhcmNoaXZlIGxvY2F0aW9uIFwiJXNcIjog JW0iLAorCQkJCSBhcmNoaXZlTG9jYXRpb24pOworCisJd2hpbGUgKGVycm5vID0gMCwgKHhsZGUg PSByZWFkZGlyKHhsZGlyKSkgIT0gTlVMTCkKIAl7Ci0JCXdoaWxlIChlcnJubyA9IDAsICh4bGRl ID0gcmVhZGRpcih4bGRpcikpICE9IE5VTEwpCisJCWNoYXIJCVdBTEZpbGVQYXRoW01BWFBHUEFU SCAqIDJdOyAvKiB0aGUgZmlsZSBwYXRoCisJCQkJCQkJCQkJCQkJICogaW5jbHVkaW5nIGFyY2hp dmUgKi8KKwkJLyoKKwkJICogVHJ1bmNhdGlvbiBpcyBlc3NlbnRpYWxseSBoYXJtbGVzcywgIGJl Y2F1c2Ugd2UgY2hlY2sgdGhlIGZpbGUKKwkJICogZm9ybWF0IGluY2x1ZGluZyB0aGUgbGVuZ3Ro IGltbWVkaWF0ZWx5IGFmdGVyIHRoaXMuCisJCSAqIChJbiBwcmluY2lwbGUsIG9uZSBjb3VsZCB1 c2UgYSAxMDAwLWNoYXJhY3RlciBhZGRpdGlvbmFsX2V4dAorCQkgKiBhbmQgZ2V0IHRyb3VibGUu KQorCQkgKi8KKwkJc3RybGNweSh3YWxmaWxlLCB4bGRlLT5kX25hbWUsIE1BWFBHUEFUSCk7CisJ CVRyaW1FeHRlbnNpb24od2FsZmlsZSwgYWRkaXRpb25hbF9leHQpOworCisJCS8qCisJCSAqIENo ZWNrIGZpbGUgbmFtZS4KKwkJICoKKwkJICogV2Ugc2tpcCBmaWxlcyB3aGljaCBhcmUgbm90IFdB TCBmaWxlIG9yIHBhcnRpYWwgV0FMIGZpbGUuCisJCSAqIEFsc28gd2Ugc2tpcCBiYWNrdXAgaGlz dG9yeSBmaWxlcyB3aGVuIC0tY2xlYW4tYmFja3VwLWhpc3RvcnkKKwkJICogaXMgbm90IHNwZWNp ZmllZC4KKwkJICovCisJCWlmICghSXNYTG9nRmlsZU5hbWUod2FsZmlsZSkgJiYgIUlzUGFydGlh bFhMb2dGaWxlTmFtZSh3YWxmaWxlKSAmJgorCQkJIShjbGVhbkJhY2t1cEhpc3RvcnkgJiYgSXNC YWNrdXBIaXN0b3J5RmlsZU5hbWUod2FsZmlsZSkpKQorCQkJY29udGludWU7CisKKwkJLyoKKwkJ ICogQ2hlY2sgY3V0b2ZmIHBvaW50LgorCQkgKgorCQkgKiBXZSBpZ25vcmUgdGhlIHRpbWVsaW5l IHBhcnQgb2YgdGhlIFhMT0cgc2VnbWVudCBpZGVudGlmaWVycyBpbgorCQkgKiBkZWNpZGluZyB3 aGV0aGVyIGEgc2VnbWVudCBpcyBzdGlsbCBuZWVkZWQuICBUaGlzIGVuc3VyZXMgdGhhdAorCQkg KiB3ZSB3b24ndCBwcmVtYXR1cmVseSByZW1vdmUgYSBzZWdtZW50IGZyb20gYSBwYXJlbnQgdGlt ZWxpbmUuCisJCSAqIFdlIGNvdWxkIHByb2JhYmx5IGJlIGEgbGl0dGxlIG1vcmUgcHJvYWN0aXZl IGFib3V0IHJlbW92aW5nCisJCSAqIHNlZ21lbnRzIG9mIG5vbi1wYXJlbnQgdGltZWxpbmVzLCBi dXQgdGhhdCB3b3VsZCBiZSBhIHdob2xlIGxvdAorCQkgKiBtb3JlIGNvbXBsaWNhdGVkLgorCQkg KgorCQkgKiBXZSB1c2UgdGhlIGFscGhhbnVtZXJpYyBzb3J0aW5nIHByb3BlcnR5IG9mIHRoZSBm aWxlbmFtZXMgdG8KKwkJICogZGVjaWRlIHdoaWNoIG9uZXMgYXJlIGVhcmxpZXIgdGhhbiB0aGUg ZXhjbHVzaXZlQ2xlYW51cEZpbGVOYW1lCisJCSAqIGZpbGUuIE5vdGUgdGhhdCB0aGlzIG1lYW5z IGZpbGVzIGFyZSBub3QgcmVtb3ZlZCBpbiB0aGUgb3JkZXIKKwkJICogdGhleSB3ZXJlIG9yaWdp bmFsbHkgd3JpdHRlbiwgaW4gY2FzZSB0aGlzIHdvcnJpZXMgeW91LgorCQkgKi8KKwkJaWYgKHN0 cmNtcCh3YWxmaWxlICsgOCwgZXhjbHVzaXZlQ2xlYW51cEZpbGVOYW1lICsgOCkgPj0gMCkKKwkJ CWNvbnRpbnVlOworCisJCS8qCisJCSAqIFVzZSB0aGUgb3JpZ2luYWwgZmlsZSBuYW1lIGFnYWlu IG5vdywgaW5jbHVkaW5nIGFueQorCQkgKiBleHRlbnNpb24gdGhhdCBtaWdodCBoYXZlIGJlZW4g Y2hvcHBlZCBvZmYgYmVmb3JlIHRlc3RpbmcKKwkJICogdGhlIHNlcXVlbmNlLgorCQkgKi8KKwkJ c25wcmludGYoV0FMRmlsZVBhdGgsIHNpemVvZihXQUxGaWxlUGF0aCksICIlcy8lcyIsCisJCQkJ IGFyY2hpdmVMb2NhdGlvbiwgeGxkZS0+ZF9uYW1lKTsKKworCQlpZiAoZHJ5cnVuKQogCQl7Ci0J CQljaGFyCQlXQUxGaWxlUGF0aFtNQVhQR1BBVEggKiAyXTsgLyogdGhlIGZpbGUgcGF0aAotCQkJ CQkJCQkJCQkJCQkgKiBpbmNsdWRpbmcgYXJjaGl2ZSAqLwotCQkJLyoKLQkJCSAqIFRydW5jYXRp b24gaXMgZXNzZW50aWFsbHkgaGFybWxlc3MsICBiZWNhdXNlIHdlIGNoZWNrIHRoZSBmaWxlCi0J CQkgKiBmb3JtYXQgaW5jbHVkaW5nIHRoZSBsZW5ndGggaW1tZWRpYXRlbHkgYWZ0ZXIgdGhpcy4K LQkJCSAqIChJbiBwcmluY2lwbGUsIG9uZSBjb3VsZCB1c2UgYSAxMDAwLWNoYXJhY3RlciBhZGRp dGlvbmFsX2V4dAotCQkJICogYW5kIGdldCB0cm91YmxlLikKLQkJCSAqLwotCQkJc3RybGNweSh3 YWxmaWxlLCB4bGRlLT5kX25hbWUsIE1BWFBHUEFUSCk7Ci0JCQlUcmltRXh0ZW5zaW9uKHdhbGZp bGUsIGFkZGl0aW9uYWxfZXh0KTsKLQogCQkJLyoKLQkJCSAqIENoZWNrIGZpbGUgbmFtZS4KLQkJ CSAqCi0JCQkgKiBXZSBza2lwIGZpbGVzIHdoaWNoIGFyZSBub3QgV0FMIGZpbGUgb3IgcGFydGlh bCBXQUwgZmlsZS4KLQkJCSAqIEFsc28gd2Ugc2tpcCBiYWNrdXAgaGlzdG9yeSBmaWxlcyB3aGVu IC0tY2xlYW4tYmFja3VwLWhpc3RvcnkKLQkJCSAqIGlzIG5vdCBzcGVjaWZpZWQuCisJCQkgKiBQ cmludHMgdGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gYmUgcmVtb3ZlZCBhbmQgc2tpcHMgdGhlCisJ CQkgKiBhY3R1YWwgcmVtb3ZhbC4gIFRoZSByZWd1bGFyIHByaW50b3V0IGlzIHNvIHRoYXQgdGhl CisJCQkgKiB1c2VyIGNhbiBwaXBlIHRoZSBvdXRwdXQgaW50byBzb21lIG90aGVyIHByb2dyYW0u CiAJCQkgKi8KLQkJCWlmICghSXNYTG9nRmlsZU5hbWUod2FsZmlsZSkgJiYgIUlzUGFydGlhbFhM b2dGaWxlTmFtZSh3YWxmaWxlKSAmJgotCQkJCSEoY2xlYW5CYWNrdXBIaXN0b3J5ICYmIElzQmFj a3VwSGlzdG9yeUZpbGVOYW1lKHdhbGZpbGUpKSkKLQkJCQljb250aW51ZTsKLQotCQkJLyoKLQkJ CSAqIENoZWNrIGN1dG9mZiBwb2ludC4KLQkJCSAqCi0JCQkgKiBXZSBpZ25vcmUgdGhlIHRpbWVs aW5lIHBhcnQgb2YgdGhlIFhMT0cgc2VnbWVudCBpZGVudGlmaWVycyBpbgotCQkJICogZGVjaWRp bmcgd2hldGhlciBhIHNlZ21lbnQgaXMgc3RpbGwgbmVlZGVkLiAgVGhpcyBlbnN1cmVzIHRoYXQK LQkJCSAqIHdlIHdvbid0IHByZW1hdHVyZWx5IHJlbW92ZSBhIHNlZ21lbnQgZnJvbSBhIHBhcmVu dCB0aW1lbGluZS4KLQkJCSAqIFdlIGNvdWxkIHByb2JhYmx5IGJlIGEgbGl0dGxlIG1vcmUgcHJv YWN0aXZlIGFib3V0IHJlbW92aW5nCi0JCQkgKiBzZWdtZW50cyBvZiBub24tcGFyZW50IHRpbWVs aW5lcywgYnV0IHRoYXQgd291bGQgYmUgYSB3aG9sZSBsb3QKLQkJCSAqIG1vcmUgY29tcGxpY2F0 ZWQuCi0JCQkgKgotCQkJICogV2UgdXNlIHRoZSBhbHBoYW51bWVyaWMgc29ydGluZyBwcm9wZXJ0 eSBvZiB0aGUgZmlsZW5hbWVzIHRvCi0JCQkgKiBkZWNpZGUgd2hpY2ggb25lcyBhcmUgZWFybGll ciB0aGFuIHRoZSBleGNsdXNpdmVDbGVhbnVwRmlsZU5hbWUKLQkJCSAqIGZpbGUuIE5vdGUgdGhh dCB0aGlzIG1lYW5zIGZpbGVzIGFyZSBub3QgcmVtb3ZlZCBpbiB0aGUgb3JkZXIKLQkJCSAqIHRo ZXkgd2VyZSBvcmlnaW5hbGx5IHdyaXR0ZW4sIGluIGNhc2UgdGhpcyB3b3JyaWVzIHlvdS4KLQkJ CSAqLwotCQkJaWYgKHN0cmNtcCh3YWxmaWxlICsgOCwgZXhjbHVzaXZlQ2xlYW51cEZpbGVOYW1l ICsgOCkgPj0gMCkKLQkJCQljb250aW51ZTsKLQotCQkJLyoKLQkJCSAqIFVzZSB0aGUgb3JpZ2lu YWwgZmlsZSBuYW1lIGFnYWluIG5vdywgaW5jbHVkaW5nIGFueQotCQkJICogZXh0ZW5zaW9uIHRo YXQgbWlnaHQgaGF2ZSBiZWVuIGNob3BwZWQgb2ZmIGJlZm9yZSB0ZXN0aW5nCi0JCQkgKiB0aGUg c2VxdWVuY2UuCi0JCQkgKi8KLQkJCXNucHJpbnRmKFdBTEZpbGVQYXRoLCBzaXplb2YoV0FMRmls ZVBhdGgpLCAiJXMvJXMiLAotCQkJCQkgYXJjaGl2ZUxvY2F0aW9uLCB4bGRlLT5kX25hbWUpOwot Ci0JCQlpZiAoZHJ5cnVuKQotCQkJewotCQkJCS8qCi0JCQkJICogUHJpbnRzIHRoZSBuYW1lIG9m IHRoZSBmaWxlIHRvIGJlIHJlbW92ZWQgYW5kIHNraXBzIHRoZQotCQkJCSAqIGFjdHVhbCByZW1v dmFsLiAgVGhlIHJlZ3VsYXIgcHJpbnRvdXQgaXMgc28gdGhhdCB0aGUKLQkJCQkgKiB1c2VyIGNh biBwaXBlIHRoZSBvdXRwdXQgaW50byBzb21lIG90aGVyIHByb2dyYW0uCi0JCQkJICovCi0JCQkJ cHJpbnRmKCIlc1xuIiwgV0FMRmlsZVBhdGgpOwotCQkJCXBnX2xvZ19kZWJ1ZygiZmlsZSBcIiVz XCIgd291bGQgYmUgcmVtb3ZlZCIsIFdBTEZpbGVQYXRoKTsKLQkJCQljb250aW51ZTsKLQkJCX0K LQotCQkJcGdfbG9nX2RlYnVnKCJyZW1vdmluZyBmaWxlIFwiJXNcIiIsIFdBTEZpbGVQYXRoKTsK LQotCQkJcmMgPSB1bmxpbmsoV0FMRmlsZVBhdGgpOwotCQkJaWYgKHJjICE9IDApCi0JCQkJcGdf ZmF0YWwoImNvdWxkIG5vdCByZW1vdmUgZmlsZSBcIiVzXCI6ICVtIiwKLQkJCQkJCSBXQUxGaWxl UGF0aCk7CisJCQlwcmludGYoIiVzXG4iLCBXQUxGaWxlUGF0aCk7CisJCQlwZ19sb2dfZGVidWco ImZpbGUgXCIlc1wiIHdvdWxkIGJlIHJlbW92ZWQiLCBXQUxGaWxlUGF0aCk7CisJCQljb250aW51 ZTsKIAkJfQogCi0JCWlmIChlcnJubykKLQkJCXBnX2ZhdGFsKCJjb3VsZCBub3QgcmVhZCBhcmNo aXZlIGxvY2F0aW9uIFwiJXNcIjogJW0iLAotCQkJCQkgYXJjaGl2ZUxvY2F0aW9uKTsKLQkJaWYg KGNsb3NlZGlyKHhsZGlyKSkKLQkJCXBnX2ZhdGFsKCJjb3VsZCBub3QgY2xvc2UgYXJjaGl2ZSBs b2NhdGlvbiBcIiVzXCI6ICVtIiwKLQkJCQkJIGFyY2hpdmVMb2NhdGlvbik7CisJCXBnX2xvZ19k ZWJ1ZygicmVtb3ZpbmcgZmlsZSBcIiVzXCIiLCBXQUxGaWxlUGF0aCk7CisKKwkJcmMgPSB1bmxp bmsoV0FMRmlsZVBhdGgpOworCQlpZiAocmMgIT0gMCkKKwkJCXBnX2ZhdGFsKCJjb3VsZCBub3Qg cmVtb3ZlIGZpbGUgXCIlc1wiOiAlbSIsCisJCQkJCSBXQUxGaWxlUGF0aCk7CiAJfQotCWVsc2UK LQkJcGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIGFyY2hpdmUgbG9jYXRpb24gXCIlc1wiOiAlbSIs CisKKwlpZiAoZXJybm8pCisJCXBnX2ZhdGFsKCJjb3VsZCBub3QgcmVhZCBhcmNoaXZlIGxvY2F0 aW9uIFwiJXNcIjogJW0iLAorCQkJCSBhcmNoaXZlTG9jYXRpb24pOworCWlmIChjbG9zZWRpcih4 bGRpcikpCisJCXBnX2ZhdGFsKCJjb3VsZCBub3QgY2xvc2UgYXJjaGl2ZSBsb2NhdGlvbiBcIiVz XCI6ICVtIiwKIAkJCQkgYXJjaGl2ZUxvY2F0aW9uKTsKIH0KIAotLSAKMi4zOS4yCgo= --=_84374e9c6b4d3ed996af3501b4364ca1--