Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rp7mc-005Bqg-9W for pgsql-hackers@arkaria.postgresql.org; Tue, 26 Mar 2024 14:28:11 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rp7mb-00Fxwm-A4 for pgsql-hackers@arkaria.postgresql.org; Tue, 26 Mar 2024 14:28:09 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rp7ma-00FxwS-KU for pgsql-hackers@lists.postgresql.org; Tue, 26 Mar 2024 14:28:09 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by makus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rp7mV-006Xh5-FB for pgsql-hackers@lists.postgresql.org; Tue, 26 Mar 2024 14:28:07 +0000 Received: from mail.postgrespro.ru (unknown [192.168.2.28]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: m.litsarev@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id 26D6EE20E92 for ; Tue, 26 Mar 2024 17:28:01 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1711463281; bh=i48uQD9PVf/horBMPGwlinJpPjnNjj/O/BBZdbeR8zQ=; h=Date:From:To:Subject:User-Agent:Message-ID:From; b=KaFv+nDVrrgH1U1LUbcUeFcYpjRxrMV/555HwDOtT9Li/ZACdtJZYPQq5jv3Roq6V YFSUkpGu4BynKgrsH5Ty6yz3LAIyDQGlQUuXZ5R0tLal1J3VEEDD3DxwFNy3bRsGKS 7GWSbzyjS/NH3HUkMRdxpCyDCeequ9jmcj7U9pvfqOac7YKfy4WRLwgTJzfw/JE6mU 1VqL4GaDcNjhrfMy199pH8jJpGATPbJA3wVS3qc5i4EtYOyHSWfK5ROzAf0GvFDEMc 4nk6zjJrnB0ayOGyFR15r3253JbKhEnui/9drcBFhgGXTLhfTeu0m7Rl/fSnVH33Oy ZtDQx29JKGqaA== MIME-Version: 1.0 Date: Tue, 26 Mar 2024 17:28:01 +0300 From: m.litsarev@postgrespro.ru To: pgsql-hackers@lists.postgresql.org Subject: SQL function which allows to distinguish a server being in point in time recovery mode and an ordinary replica User-Agent: Roundcube Webmail/1.6.5 Message-ID: <06c02ef916d85e77778e5cdfdf67a3df@postgrespro.ru> X-Sender: m.litsarev@postgrespro.ru Content-Type: multipart/mixed; boundary="=_0e80e945942c3510e40898360dcd0e99" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_0e80e945942c3510e40898360dcd0e99 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed Hi, At present time, an existing pg_is_in_recovery() method is not enough to distinguish a server being in point in time recovery (PITR) mode and an ordinary replica because it returns true in both cases. That is why pg_is_standby_requested() function introduced in attached patch might help. It reports whether a standby.signal file was found in the data directory at startup process. Instructions for reproducing the possible use case are also attached. Hope it will be usefull. Respectfully, Mikhail Litsarev Postgres Professional: https://postgrespro.com --=_0e80e945942c3510e40898360dcd0e99 Content-Transfer-Encoding: base64 Content-Type: text/plain; name=use_case_pitr.txt Content-Disposition: attachment; filename=use_case_pitr.txt; size=1982 U3RlcHMgdG8gcmVwcm9kdWNlIHVzZSBjYXNlOgoKMS4gIExvZyBpbiBhcyBhIHBvc3RncmVzIHVz ZXIgYW5kIHNldHVwIGVudiB2YXJpYWJsZXMgKFBHREFUQSwgUEdMT0csIFBHUE9SVCBldGMuKSwg YWxzbyAKICAgIG1rZGlyICRQR0RBVEEvLi4vYXJjaGl2ZV9kaXIKCjIuICBDcmVhdGUgZGF0YSBk aXJlY3RvcnkKICAgIGluaXRkYiAtawoKMy4gIE1vZGlmeSBwb3N0Z3Jlc3FsLmNvbmYKICAgIHdh bF9sZXZlbCA9IHJlcGxpY2EKICAgIGFyY2hpdmVfbW9kZSA9IG9uCiAgICBhcmNoaXZlX2NvbW1h bmQgPSAndGVzdCAhIC1mIC9ob21lL3Bvc3RncmVzL2RhdGEvcGdwcm8vYXJjaGl2ZV9kaXIvJWYg JiYgY3AgJXAgL2hvbWUvcG9zdGdyZXMvZGF0YS9wZ3Byby9hcmNoaXZlX2Rpci8lZicKCjQuICBT dGFydCBzZXJ2ZXIKICAgIHBnX2N0bCBzdGFydCAtbCAkUEdMT0cvbG9nZmlsZQoKNS4gIENyZWF0 ZSBleGFtcGxlIGRhdGFiYXNlIGFuZCBydW4gcHNxbAogICAgY3JlYXRlZGIgZGJfcGl0cl8wMQog ICAgcHNxbCAtZCBkYl9waXRyXzEKCjYuICBDcmVhdGUgdGFibGUgKGp1c3QgdG8gbW9kaWZ5IGRh dGFiYXNlKQogICAgQ1JFQVRFIFRBQkxFIHQ4eDFfZmxvYXQ0IEFTIFNFTEVDVCByYW5kb20oKTo6 ZmxvYXQ0IGFzIGExIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDgpOwoKNy4gIFN3aXRjaCB0byBh IG5ldyBXQUwgZmlsZQogICAgU0VMRUNUIHBnX3N3aXRjaF93YWwoKTsKCjguICBNYWtlIGEgYmFj a3VwCiAgICBwZ19iYXNlYmFja3VwIC1GdCAtWCBub25lIC1EIC0gfCBnemlwID4gL2hvbWUvcG9z dGdyZXMvZGF0YS9wZ3Byby9kYl9maWxlX2JhY2t1cC50YXIuZ3oKCjkuICBVcGRhdGUgdGFibGUg CiAgICBJTlNFUlQgSU5UTyB0OHgxX2Zsb2F0NCB2YWx1ZXMgICgxLik7CiAgICBJTlNFUlQgSU5U TyB0OHgxX2Zsb2F0NCB2YWx1ZXMgICgyLik7CiAgICBJTlNFUlQgSU5UTyB0OHgxX2Zsb2F0NCB2 YWx1ZXMgICgzLik7CgoxMC4gU3dpdGNoIHRvIGEgbmV3IFdBTCBmaWxlCiAgICBTRUxFQ1QgcGdf c3dpdGNoX3dhbCgpOwoKMTEuIFN0b3AgZGF0YWJhc2UgYW5kIHJlbW92ZSBkYXRhIGRpcmVjdG9y eQogICAgcGdfY3RsIHN0b3AKICAgIHJtIC1yIC9ob21lL3Bvc3RncmVzL2RhdGEvcGdwcm8vZGF0 YS1kZWJ1Zy8qCgoxMi4gUmVzdG9yZSBkYXRhIGRpcmVjdG9yeQogICAgdGFyIHh2ZnogZGJfZmls ZV9iYWNrdXAudGFyLmd6IC1DIC9ob21lL3Bvc3RncmVzL2RhdGEvcGdwcm8vZGF0YS1kZWJ1Zy8K CjEzLiBVcGRhdGUgdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzIGluIHBvc3RncmVzcHJvLmNvbmYK ICAgIHJlY292ZXJ5X3RhcmdldF90aW1lID0gJzIwMjQtMDMtMjYgMTA6MjY6MzAgR01UJwogICAg cmVzdG9yZV9jb21tYW5kID0gJ2NwIC9ob21lL3Bvc3RncmVzL2RhdGEvcGdwcm8vYXJjaGl2ZV9k aXIvJWYgJXAnCgoxNC4KICAgdG91Y2ggcmVjb3Zlcnkuc2lnbmFsCgoxNS4gCiAgICBwZ19jdGwg c3RhcnQgIC1sICRQR0xPRy9sb2dmaWxlCgoxNi4gU3RhcnQgZGF0YWJhc2UgYW5kIHNlZSBpdCBp cyBpbiBQb2ludCBJbiBUaW1lIFJlY292ZXJ5IG1vZGUKICAgIHBzcWwgLWQgZGJfcGl0cl8wMQoK ICAgIGRiX3BpdHJfMDE9IyBTRUxFQ1QgcGdfaXNfaW5fcmVjb3ZlcnkoKTsKICAgICBwZ19pc19p bl9yZWNvdmVyeSAKICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICB0CiAgICAoMSByb3cpCgog ICAgZGJfcGl0cl8wMT0jIFNFTEVDVCBwZ19pc19zdGFuZGJ5X3JlcXVlc3RlZCgpOwogICAgIHBn X2lzX3N0YW5kYnlfcmVxdWVzdGVkIAogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAg IGYKICAgICgxIHJvdykKCk5vdyB3ZSBjYW4gZGlmZmVyIHJlY292ZXJpbmcgc2VydmVyIGluIFBv aW50IEluIFRpbWUgUmVjb3ZlcnkgbW9kZSBmcm9tIHN0YW5kYnkgbW9kZS4KcGdfaXNfc3RhbmRi eV9yZXF1ZXN0ZWQoKSByZXR1cm5zIHRydWUgZm9yIGEgcmVwbGljYS4KCgo= --=_0e80e945942c3510e40898360dcd0e99 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v1-0001-Standby-mode-requested.patch Content-Disposition: attachment; filename=v1-0001-Standby-mode-requested.patch; size=7378 RnJvbSA1NjM0MzFmZmI1M2QwYjU5OGYzM2QzMzc4YjdiYTQwMzM4MDIwY2E2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIExpdHNhcmV2IDxtLmxpdHNhcmV2QHBvc3RncmVz cHJvLnJ1PgpEYXRlOiBUdWUsIDIwIEZlYiAyMDI0IDIwOjA1OjM3ICswMzAwClN1YmplY3Q6IFtQ QVRDSCAxLzJdIEludHJvZHVjZSBwZ19pc19zdGFuZGJ5X3JlcXVlc3RlZCgpLgoKSW50cm9kdWNl IHBnX2lzX3N0YW5kYnlfcmVxdWVzdGVkKCkgZnVuY3Rpb24gdG8gZGlzdGluZ3Vpc2gKYSByZXBs aWNhIGZyb20gYSByZWd1bGFyIGluc3RhbmNlIGluIHBvaW50IGluIHRpbWUgcmVjb3ZlcnkgbW9k ZS4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVuY3MuYyAgICB8IDE0ICsr KysrKysrKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jIHwgMzMg KysrKysrKysrKysrKysrKysrKysrKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy94bG9ncmVjb3Zlcnku aCAgICAgICAgIHwgIDEgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAg ICAgfCAgNCArKysKIDQgZmlsZXMgY2hhbmdlZCwgNTIgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMKaW5kZXggNDU0NTJkOTM3YzcuLjMxNzBjNGVmMzQz IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVuY3MuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVuY3MuYwpAQCAtNzUzLDMgKzc1Mywx NyBAQCBwZ19wcm9tb3RlKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJCQkgICB3YWl0X3NlY29uZHMp KSk7CiAJUEdfUkVUVVJOX0JPT0woZmFsc2UpOwogfQorCisvKgorICogUmV0dXJucyBib29sIHdp dGggYSBjdXJyZW50IHZhbHVlIG9mIFN0YW5kYnlNb2RlSXNSZXF1ZXN0ZWQgZmxhZworICogdG8g ZGlzdGluZ3Vpc2ggYSByZXBsaWNhIGZyb20gYSByZWd1bGFyIGluc3RhbmNlIGluIGEKKyAqIFBv aW50IEluIFRpbWUgUmVjb3ZlcnkgKFBJVFIpIG1vZGUuCisgKgorICogUmV0dXJucwl0cnVlCWlm IHN0YW5kYnkuc2lnbmFsIGZpbGUgaXMgZm91bmQgYXQgc3RhcnR1cCBwcm9jZXNzCisgKiAJCQlm YWxzZQlvdGhlcndpc2UKKyAqLworRGF0dW0KK3BnX2lzX3N0YW5kYnlfcmVxdWVzdGVkKFBHX0ZV TkNUSU9OX0FSR1MpCit7CisJUEdfUkVUVVJOX0JPT0woU3RhbmRieU1vZGVJc1JlcXVlc3RlZCgp KTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVy eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMKaW5kZXggNjMx ODg3ODM1NmEuLmNiY2E0YzUwNTVkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS94bG9ncmVjb3ZlcnkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9n cmVjb3ZlcnkuYwpAQCAtMzIxLDYgKzMyMSwxMiBAQCB0eXBlZGVmIHN0cnVjdCBYTG9nUmVjb3Zl cnlDdGxEYXRhCiAJICovCiAJYm9vbAkJU2hhcmVkUHJvbW90ZUlzVHJpZ2dlcmVkOwogCisJLyoK KwkgKiBTaGFyZWRTdGFuZGJ5TW9kZVJlcXVlc3RlZCBpbmRpY2F0ZXMgaWYgd2UncmUgaW4gYSBz dGFuZGJ5IG1vZGUgYXQKKwkgKiBzdGFydCwgd2hpbGUgcmVjb3ZlcnkgbW9kZSBpcyBvbi4gUHJv dGVjdGVkIGJ5IGluZm9fbGNrLgorCSAqLworCWJvb2wJCVNoYXJlZFN0YW5kYnlNb2RlUmVxdWVz dGVkOworCiAJLyoKIAkgKiByZWNvdmVyeVdha2V1cExhdGNoIGlzIHVzZWQgdG8gd2FrZSB1cCB0 aGUgc3RhcnR1cCBwcm9jZXNzIHRvIGNvbnRpbnVlCiAJICogV0FMIHJlcGxheSwgaWYgaXQgaXMg d2FpdGluZyBmb3IgV0FMIHRvIGFycml2ZSBvciBwcm9tb3Rpb24gdG8gYmUKQEAgLTEwNzAsNyAr MTA3NiwxNiBAQCByZWFkUmVjb3ZlcnlTaWduYWxGaWxlKHZvaWQpCiAJCUFyY2hpdmVSZWNvdmVy eVJlcXVlc3RlZCA9IHRydWU7CiAJfQogCWVsc2UKKwl7CisJCS8qCisJCSAqIFRoZXJlIGlzIG5v IG5lZWQgdG8gdXNlIFNwaW5sb2NrIGhlcmUgYmVjYXVzZSBvbmx5IHRoZSBzdGFydHVwCisJCSAq IHByb2Nlc3MgbW9kaWZpZXMgdGhlIFNoYXJlZFN0YW5kYnlNb2RlUmVxdWVzdGVkIHZhcmlhYmxl IGhlcmUgYW5kCisJCSAqIG5vIG90aGVyIHByb2Nlc3NlcyBhcmUgcmVhZGluZyBpdCBhdCB0aGF0 IHRpbWUuCisJCSAqLworCQlYTG9nUmVjb3ZlcnlDdGwtPlNoYXJlZFN0YW5kYnlNb2RlUmVxdWVz dGVkID0gU3RhbmRieU1vZGVSZXF1ZXN0ZWQ7CiAJCXJldHVybjsKKwl9CisJWExvZ1JlY292ZXJ5 Q3RsLT5TaGFyZWRTdGFuZGJ5TW9kZVJlcXVlc3RlZCA9IFN0YW5kYnlNb2RlUmVxdWVzdGVkOwog CiAJLyoKIAkgKiBXZSBkb24ndCBzdXBwb3J0IHN0YW5kYnkgbW9kZSBpbiBzdGFuZGFsb25lIGJh Y2tlbmRzOyB0aGF0IHJlcXVpcmVzCkBAIC00NTU1LDYgKzQ1NzAsMjQgQEAgSG90U3RhbmRieUFj dGl2ZUluUmVwbGF5KHZvaWQpCiAJcmV0dXJuIExvY2FsSG90U3RhbmRieUFjdGl2ZTsKIH0KIAor CisvKgorICogSXQgcmVwb3J0cyB3ZXRoZXIgYSBzdGFuZGJ5LnNpZ25hbCBmaWxlIGlzIGluIHRo ZSBkYXRhIGRpcmVjdG9yeQorICogYXQgc3RhcnR1cC4KKyAqCisgKiBUaGlzIHdvcmtzIGluIGFu eSBwcm9jZXNzIHRoYXQncyBjb25uZWN0ZWQgdG8gc2hhcmVkIG1lbW9yeS4KKyAqLworYm9vbAor U3RhbmRieU1vZGVJc1JlcXVlc3RlZCh2b2lkKQoreworCS8qCisJICogU3BpbmxvY2sgaXMgbm90 IG5lZWRlZCBoZXJlIGJlY2F1c2UgU2hhcmVkU3RhbmRieU1vZGVSZXF1ZXN0ZWQgdmFyaWFibGUK KwkgKiBjYW4gb25seSBiZSByZWFkIGFmdGVyIHN0YXJ0dXAgcHJvY2VzcyBpcyBkb25lIGFuZCBu byBvdGhlciBhY3Rpb25zIChpbgorCSAqIGZ1bmN0aW9ucywgaW4gcHJvY2Vzc2VzKSBjaGFuZ2Ug aXQgdGhlbi4KKwkgKi8KKwlyZXR1cm4gWExvZ1JlY292ZXJ5Q3RsLT5TaGFyZWRTdGFuZGJ5TW9k ZVJlcXVlc3RlZDsKK30KKwogLyoKICAqIEdldCBsYXRlc3QgcmVkbyBhcHBseSBwb3NpdGlvbi4K ICAqCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3JlY292ZXJ5LmggYi9zcmMv aW5jbHVkZS9hY2Nlc3MveGxvZ3JlY292ZXJ5LmgKaW5kZXggNjZhZmZkMmVhYzMuLmY4NWEyYWY2 YTIzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3JlY292ZXJ5LmgKKysrIGIv c3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dyZWNvdmVyeS5oCkBAIC0xNDUsNiArMTQ1LDcgQEAgZXh0 ZXJuIFRpbWVzdGFtcFR6IEdldExhdGVzdFhUaW1lKHZvaWQpOwogZXh0ZXJuIFRpbWVzdGFtcFR6 IEdldEN1cnJlbnRDaHVua1JlcGxheVN0YXJ0VGltZSh2b2lkKTsKIGV4dGVybiBYTG9nUmVjUHRy IEdldEN1cnJlbnRSZXBsYXlSZWNQdHIoVGltZUxpbmVJRCAqcmVwbGF5RW5kVExJKTsKIAorZXh0 ZXJuIGJvb2wgU3RhbmRieU1vZGVJc1JlcXVlc3RlZCh2b2lkKTsKIGV4dGVybiBib29sIFByb21v dGVJc1RyaWdnZXJlZCh2b2lkKTsKIGV4dGVybiBib29sIENoZWNrUHJvbW90ZVNpZ25hbCh2b2lk KTsKIGV4dGVybiB2b2lkIFdha2V1cFJlY292ZXJ5KHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5k YXQKaW5kZXggYmI3NzVjZTcyNjQuLmEyYWM0MTYwZDhjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5k YXQKQEAgLTY0OTQsNiArNjQ5NCwxMCBAQAogeyBvaWQgPT4gJzM4MTAnLCBkZXNjciA9PiAndHJ1 ZSBpZiBzZXJ2ZXIgaXMgaW4gcmVjb3ZlcnknLAogICBwcm9uYW1lID0+ICdwZ19pc19pbl9yZWNv dmVyeScsIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAnYm9vbCcsCiAgIHByb2Fy Z3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ3BnX2lzX2luX3JlY292ZXJ5JyB9LAoreyBvaWQgPT4g Jzg0MzknLAorICBkZXNjciA9PiAnSXMgU3RhbmRieU1vZGUgcmVxdWVzdGVkIGF0IHN0YXJ0dXAg d2hpbGUgYmVpbmcgaW4gcmVjb3ZlcnkgbW9kZScsCisgIHByb25hbWUgPT4gJ3BnX2lzX3N0YW5k YnlfcmVxdWVzdGVkJywgcHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9yZXR0eXBlID0+ICdib29sJywK KyAgcHJvYXJndHlwZXMgPT4gJycsIHByb3NyYyA9PiAncGdfaXNfc3RhbmRieV9yZXF1ZXN0ZWQn IH0sCiAKIHsgb2lkID0+ICczODIwJywgZGVzY3IgPT4gJ2N1cnJlbnQgd2FsIGZsdXNoIGxvY2F0 aW9uJywKICAgcHJvbmFtZSA9PiAncGdfbGFzdF93YWxfcmVjZWl2ZV9sc24nLCBwcm92b2xhdGls ZSA9PiAndicsCi0tIAoyLjM0LjEKCgpGcm9tIDNkOTQ0NDIzZWQxYzBmMmE3M2U0YTM4YTYxYWM1 NDVmMDQ1MGE3MGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IE1pa2hhaWwgTGl0c2Fy ZXYgPG0ubGl0c2FyZXZAcG9zdGdyZXNwcm8ucnU+CkRhdGU6IFR1ZSwgMjcgRmViIDIwMjQgMTQ6 MDg6NDIgKzAzMDAKU3ViamVjdDogW1BBVENIIDIvMl0gVGVzdCBwZ19pc19zdGFuZGJ5X3JlcXVl c3RlZCgpIGluIGRpZmZlcmVudCB1c2UtY2FzZXMuCgpBZGQgdGlueSB0ZXN0cyBpbiBzcmMvdGVz dC9yZWNvdmVyeS90LzAwNF90aW1lbGluZV9zd2l0Y2gucGwKVGhleSB2YWxpZGF0ZToKIC0gbWFz dGVyIGlzIG5vdCBhIHJlcGxpY2EKIC0gc3RhbmRieV8xIGlzIGEgcmVwbGljYQogLSBwcm9tb3Rl ZCByZXBsaWNhIGluIG1hc3RlciBtb2RlCiAtIHN0YW5kYnlfMiByZW1haW5zIGEgcmVwbGljYSBh ZnRlciBzd2l0Y2ggdG8gcHJvbW90ZWQgbWFzdGVyCi0tLQogc3JjL3Rlc3QvcmVjb3ZlcnkvdC8w MDRfdGltZWxpbmVfc3dpdGNoLnBsIHwgMjMgKysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxl IGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVy eS90LzAwNF90aW1lbGluZV9zd2l0Y2gucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAwNF90aW1l bGluZV9zd2l0Y2gucGwKaW5kZXggZWRhZWY5MTg0NTQuLmUzZjMyMGFiOWFiIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWNvdmVyeS90LzAwNF90aW1lbGluZV9zd2l0Y2gucGwKKysrIGIvc3JjL3Rl c3QvcmVjb3ZlcnkvdC8wMDRfdGltZWxpbmVfc3dpdGNoLnBsCkBAIC0xOCw2ICsxOCwxMSBAQCBt eSAkbm9kZV9wcmltYXJ5ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwcmltYXJ5 Jyk7CiAkbm9kZV9wcmltYXJ5LT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gMSk7CiAkbm9kZV9w cmltYXJ5LT5zdGFydDsKIAorIyBWYWxpZGF0ZSBwZ19pc19zdGFuZGJ5X3JlcXVlc3RlZCgpIGZv ciBtYXN0ZXIKK215ICRyZXRfbW9kZV9wcmltYXJ5ID0gJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJJ1NFTEVDVCBwZ19pc19zdGFuZGJ5X3JlcXVlc3RlZCgpJyk7Citpcygk cmV0X21vZGVfcHJpbWFyeSwgJ2YnLCAibWFzdGVyIGlzIG5vdCBhIHJlcGxpY2EiKTsKKwogIyBU YWtlIGJhY2t1cAogbXkgJGJhY2t1cF9uYW1lID0gJ215X2JhY2t1cCc7CiAkbm9kZV9wcmltYXJ5 LT5iYWNrdXAoJGJhY2t1cF9uYW1lKTsKQEAgLTMyLDYgKzM3LDExIEBAICRub2RlX3N0YW5kYnlf Mi0+aW5pdF9mcm9tX2JhY2t1cCgkbm9kZV9wcmltYXJ5LCAkYmFja3VwX25hbWUsCiAJaGFzX3N0 cmVhbWluZyA9PiAxKTsKICRub2RlX3N0YW5kYnlfMi0+c3RhcnQ7CiAKKyMgVmFsaWRhdGUgcGdf aXNfc3RhbmRieV9yZXF1ZXN0ZWQoKSBmb3IgcmVwbGljYSBub2RlCitteSAkcmV0X21vZGVfc3Rh bmRieV8xID0gJG5vZGVfc3RhbmRieV8xLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwknU0VMRUNU IHBnX2lzX3N0YW5kYnlfcmVxdWVzdGVkKCknKTsKK2lzKCRyZXRfbW9kZV9zdGFuZGJ5XzEsICd0 JywgIm5vZGVfc3RhbmRieV8xIGlzIGEgcmVwbGljYSIpOworCiAjIENyZWF0ZSBzb21lIGNvbnRl bnQgb24gcHJpbWFyeQogJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNS RUFURSBUQUJMRSB0YWJfaW50IEFTIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAwKSBBUyBh Iik7CkBAIC01MCw2ICs2MCwxNCBAQCAkbm9kZV9zdGFuZGJ5XzEtPnBzcWwoCiAJc3Rkb3V0ID0+ IFwkcHNxbF9vdXQpOwogaXMoJHBzcWxfb3V0LCAndCcsICJwcm9tb3Rpb24gb2Ygc3RhbmRieSB3 aXRoIHBnX3Byb21vdGUiKTsKIAorIyBWYWxpZGF0ZSBwZ19pc19zdGFuZGJ5X3JlcXVlc3RlZCgp IGZvciBtYXN0ZXIgcHJvbW90ZWQgZnJvbSBzdGFuZGJ5IG5vZGUuCisjIHBnX2lzX3N0YW5kYnlf cmVxdWVzdGVkKCkgcmV0dXJucyB0cnVlIGJlY2F1c2Ugc3RhbmRieS5zaWduYWwgZmlsZQorIyB3 YXMgZm91bmQgd2hpbGUgYmVpbmcgYSByZXBsaWNhLgorIyBVc2UgaXQgd2l0aCBwZ19pc19pbl9y ZWNvdmVyeSgpIChyZXR1cm5zIGZhbHNlKSwgZm9yIHN1Y2ggdXNlLWNhc2VzLgorbXkgJHJldF9t b2RlXzEgPSAkbm9kZV9zdGFuZGJ5XzEtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSdTRUxFQ1Qg cGdfaXNfc3RhbmRieV9yZXF1ZXN0ZWQoKScpOworaXMoJHJldF9tb2RlXzEsICd0JywgIm5vZGVf c3RhbmRieV8xIGJlY29tZXMgYSBtYXN0ZXIiKTsKKwogIyBTd2l0Y2ggc3RhbmRieSAyIHRvIHJl cGxheSBmcm9tIHN0YW5kYnkgMQogbXkgJGNvbm5zdHJfMSA9ICRub2RlX3N0YW5kYnlfMS0+Y29u bnN0cjsKICRub2RlX3N0YW5kYnlfMi0+YXBwZW5kX2NvbmYoCkBAIC01OCw2ICs3NiwxMSBAQCBw cmltYXJ5X2Nvbm5pbmZvPSckY29ubnN0cl8xJwogKSk7CiAkbm9kZV9zdGFuZGJ5XzItPnJlc3Rh cnQ7CiAKKyMgVmFsaWRhdGUgcGdfaXNfc3RhbmRieV9yZXF1ZXN0ZWQoKSBmb3Igc2Vjb25kIHJl cGxpY2EgYWZ0ZXIgcmVzdGFydAorbXkgJHJldF9tb2RlX3N0YW5kYnlfMiA9ICRub2RlX3N0YW5k YnlfMi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJJ1NFTEVDVCBwZ19pc19zdGFuZGJ5X3JlcXVl c3RlZCgpJyk7CitpcygkcmV0X21vZGVfc3RhbmRieV8yLCAndCcsICJub2RlX3N0YW5kYnlfMiBy ZW1haW5zIGEgcmVwbGljYSIpOworCiAjIEluc2VydCBzb21lIGRhdGEgaW4gc3RhbmRieSAxIGFu ZCBjaGVjayBpdHMgcHJlc2VuY2UgaW4gc3RhbmRieSAyCiAjIHRvIGVuc3VyZSB0aGF0IHRoZSB0 aW1lbGluZSBzd2l0Y2ggaGFzIGJlZW4gZG9uZS4KICRub2RlX3N0YW5kYnlfMS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0tIAoyLjM0LjEKCg== --=_0e80e945942c3510e40898360dcd0e99--