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 1q8A8o-0002TR-RZ for pgsql-hackers@arkaria.postgresql.org; Sun, 11 Jun 2023 01:45:15 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1q8A8n-00047y-Li for pgsql-hackers@arkaria.postgresql.org; Sun, 11 Jun 2023 01:45:13 +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 1q8A8n-00047p-5b for pgsql-hackers@lists.postgresql.org; Sun, 11 Jun 2023 01:45:13 +0000 Received: from mail-lf1-x130.google.com ([2a00:1450:4864:20::130]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1q8A8k-001ULy-Ec for pgsql-hackers@lists.postgresql.org; Sun, 11 Jun 2023 01:45:11 +0000 Received: by mail-lf1-x130.google.com with SMTP id 2adb3069b0e04-4f6283d0d84so3659771e87.1 for ; Sat, 10 Jun 2023 18:45:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686447908; x=1689039908; h=cc:to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=JMNVAgzyHP4Z1Ruk0ASWMXP0y/+QWnwsD3+SniO8fN4=; b=daJ27FRIUI3IILIyUOyqtJyeqhodI8ZHQNQ686lu+RMjfiQkhgxOaoeiMPByGcO0x0 NB8OB8K2T0bSTBHNQlQJaabZOSr6nH6/zZg9LLc40s+wKwjGMzoiZ8kUrZ01GmLeetSN tBfz731+ozsqtEwrOb8I3drij6YSdMAX0SDhuEEk1v7jM0ILfP0di7qKn243t3rfDNK1 cz2byU4IPCWA7aWEFpzeoDYz6724iq0tL0Q+Lt63lplV4yQ01f/RHY4HGH391QUw5+Iy p3xB5/W9HCnpNpCxjX4lY+jVJogPpNkTUMC+Z9Wl1Dqn4Ebs9qUCMQc0rk8InU4kC1y+ M9cg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686447908; x=1689039908; h=cc:to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=JMNVAgzyHP4Z1Ruk0ASWMXP0y/+QWnwsD3+SniO8fN4=; b=khRtG4U4mAjkiQRCHCSeauPRxT9o8ranzR6n6Pz0cKXodDKXKndExHwVUeWxGK7hse pqdNz1M8yQYwoiFZ+xDC3SrxzFKIOIftsCW3/L0EB0M24lpiIZ+f7qpE1WITFB25uTZS 77C4dg+9xjJszUDrMu7RiNdNH6HIHsXNs+1/PulF5hy1QiMDLi/SxM/mQi0qXP4LH1lh rD0bXv+RyYK8B5Qwaqnr7iEaQaYa8/LVFq9JzaQuGGe2mZr1O3LhPJcGsymoTHOl8oUi i+bkdzOunj6vReB6ADlQzoAhfqT5oy25Zt+hbfeX8bz60RwzX2IyjsdVdRYPG1tumr1G nB7A== X-Gm-Message-State: AC+VfDzx15xlPHkIzFHtOiXli+y+l+/IG/6dG0O7/+hTim6Zo9VdF5Qi LdY11DWXE/4naghRRi/WpjHYF8iIShh5lvoggTo= X-Google-Smtp-Source: ACHHUZ6SDDGenve+sfnJ2tNdlMbO9Ex281s7NEYaXKr5HMWBPsXreWLRA5pgTXUKIJo75ATEXRCbhTIOdahlKgE9FQ8= X-Received: by 2002:a19:f248:0:b0:4f1:43b9:a600 with SMTP id d8-20020a19f248000000b004f143b9a600mr1931373lfk.60.1686447907455; Sat, 10 Jun 2023 18:45:07 -0700 (PDT) MIME-Version: 1.0 From: Bharath Rupireddy Date: Sun, 11 Jun 2023 07:14:54 +0530 Message-ID: Subject: Re: Add a perl function in Cluster.pm to generate WAL To: Kyotaro Horiguchi , Michael Paquier Cc: Alvaro Herrera , Andrew Dunstan , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000074e79705fdd0c098" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000074e79705fdd0c098 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Aug 24, 2022 at 6:42=E2=80=AFAM Kyotaro Horiguchi wrote: > > At Tue, 16 Aug 2022 18:40:49 +0200, Alvaro Herrera wrote in > > On 2022-Aug-16, Andrew Dunstan wrote: > > > > > I don't think there's a hard and fast rule about it. Certainly the ca= se > > > would be more compelling if the functions were used across different = TAP > > > suites. The SSL suite has suite-specific modules. That's a pattern al= so > > > worth considering. e.g something like. > > > > > > use FindBin qw($Bin); > > > use lib $Bin; > > > use MySuite; > > > > > > and then you put your common routines in MySuite.pm in the same > > > directory as the TAP test files. > > > > Yeah, I agree with that for advance_wal. Regarding find_in_log, that > > one seems general enough to warrant being in Cluster.pm -- consider > > issues_sql_like, which also slurps_file($log). That could be unified a > > little bit, I think. > > +1 With the generalized function for find_in_log() has been added as part of https://git.postgresql.org/gitweb/?p=3Dpostgresql.git;a=3Dcommitdiff;h= =3De25e5f7fc6b74c9d4ce82627e9145ef5537412e2, I'm proposing a generalized function for advance_wal(). Please find the attached patch. I tried to replace the existing tests with the new cluster function advance_wal(). Please let me know if I'm missing any other tests. Also, this new function can be used by an in-progress feature - https://commitfest.postgresql.org/43/3663/. Thoughts? FWIW, it's discussed here - https://www.postgresql.org/message-id/ZIKVd%2Ba43UfsIWJE%40paquier.xyz. -- Bharath Rupireddy PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --00000000000074e79705fdd0c098 Content-Type: application/x-patch; name="v1-0001-Add-a-perl-function-in-Cluster.pm-to-generate-WAL.patch" Content-Disposition: attachment; filename="v1-0001-Add-a-perl-function-in-Cluster.pm-to-generate-WAL.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lipqg4wu0 RnJvbSBhYjdhNWI1NmUwZWQ4NGZiMGNjZWVmMTg5MmRjNDM1ZmVkODc3MDI5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IFNhdCwgMTAgSnVuIDIwMjMgMDg6MDU6MjAgKzAw MDAKU3ViamVjdDogW1BBVENIIHYxXSBBZGQgYSBwZXJsIGZ1bmN0aW9uIGluIENsdXN0ZXIucG0g dG8gZ2VuZXJhdGUgV0FMCgpUaGlzIGNvbW1pdCBhZGRzIGEgcGVybCBmdW5jdGlvbiBpbiBDbHVz dGVyLnBtIHRvIGdlbmVyYXRlIFdBTC4KU29tZSBUQVAgdGVzdHMgYXJlIG5vdyB1c2luZyB0aGVp ciBvd24gd2F5IHRvIGdlbmVyYXRlIFdBTC4KR2VuZXJhbGl6aW5nIHRoaXMgZnVuY3Rpb25hbGl0 eSBlbmFibGVzIG11bHRpcGxlIFRBUCB0ZXN0cyB0bwpyZXVzZSB0aGUgZnVuY3Rpb25hbGl0eS4K LS0tCiBzcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtICAgICAgfCAyMCAr KysrKysrKwogc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMDFfc3RyZWFtX3JlcC5wbCAgICAgICAgIHwg IDYgKy0tCiBzcmMvdGVzdC9yZWNvdmVyeS90LzAxOV9yZXBsc2xvdF9saW1pdC5wbCAgICAgfCA0 NiArKysrLS0tLS0tLS0tLS0tLS0tCiAuLi4vdC8wMzVfc3RhbmRieV9sb2dpY2FsX2RlY29kaW5n LnBsICAgICAgICAgfCAgNyArLS0KIDQgZmlsZXMgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwg NDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rl c3QvQ2x1c3Rlci5wbSBiL3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0K aW5kZXggNWUxNjFkYmVlNi4uY2YyMjAyZDE3MCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcGVybC9Q b3N0Z3JlU1FML1Rlc3QvQ2x1c3Rlci5wbQorKysgYi9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwv VGVzdC9DbHVzdGVyLnBtCkBAIC0zMTIwLDYgKzMxMjAsMjYgQEAgc3ViIGNyZWF0ZV9sb2dpY2Fs X3Nsb3Rfb25fc3RhbmRieQogCiA9cG9kCiAKKz1pdGVtICRub2RlLT5hZHZhbmNlX3dhbCgkbikK KworQWR2YW5jZSBXQUwgb2YgZ2l2ZW4gbm9kZSBieSAkbiBzZWdtZW50cworCis9Y3V0CisKK3N1 YiBhZHZhbmNlX3dhbAoreworCW15ICgkc2VsZiwgJG4pID0gQF87CisKKwkjIEFkdmFuY2UgYnkg JG4gc2VnbWVudHMgKD0gKHdhbF9zZWdtZW50X3NpemUgKiAkbikgYnl0ZXMpLgorCWZvciAobXkg JGkgPSAwOyAkaSA8ICRuOyAkaSsrKQorCXsKKwkJJHNlbGYtPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCQkJIkNSRUFURSBUQUJMRSB0dCAoKTsgRFJPUCBUQUJMRSB0dDsgU0VMRUNUIHBnX3N3aXRj aF93YWwoKTsiKTsKKwl9Cit9CisKKz1wb2QKKwogPWJhY2sKIAogPWN1dApkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMDFfc3RyZWFtX3JlcC5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5 L3QvMDAxX3N0cmVhbV9yZXAucGwKaW5kZXggMGM3MmJhMDk0NC4uMGUyNTZkYWI4ZCAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMDFfc3RyZWFtX3JlcC5wbAorKysgYi9zcmMvdGVz dC9yZWNvdmVyeS90LzAwMV9zdHJlYW1fcmVwLnBsCkBAIC00OTYsMTEgKzQ5Niw3IEBAICRub2Rl X3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogbXkgJHNlZ21lbnRfcmVtb3ZlZCA9ICRu b2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSdTRUxFQ1QgcGdfd2FsZmlsZV9u YW1lKHBnX2N1cnJlbnRfd2FsX2xzbigpKScpOwogY2hvbXAoJHNlZ21lbnRfcmVtb3ZlZCk7Ci0k bm9kZV9wcmltYXJ5LT5wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlDUkVBVEUgVEFCTEUgdGFiX3Bo eXNfc2xvdCAoYSBpbnQpOwotCUlOU0VSVCBJTlRPIHRhYl9waHlzX3Nsb3QgVkFMVUVTIChnZW5l cmF0ZV9zZXJpZXMoMSwxMCkpOwotCVNFTEVDVCBwZ19zd2l0Y2hfd2FsKCk7Iik7Ciskbm9kZV9w cmltYXJ5LT5hZHZhbmNlX3dhbCgxKTsKIG15ICRjdXJyZW50X2xzbiA9CiAgICRub2RlX3ByaW1h cnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpOyIp OwogY2hvbXAoJGN1cnJlbnRfbHNuKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3Qv MDE5X3JlcGxzbG90X2xpbWl0LnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMTlfcmVwbHNsb3Rf bGltaXQucGwKaW5kZXggMzNlNTBhZDkzMy4uYTZlNDI3ZWJmMSAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVjb3ZlcnkvdC8wMTlfcmVwbHNsb3RfbGltaXQucGwKKysrIGIvc3JjL3Rlc3QvcmVjb3Zl cnkvdC8wMTlfcmVwbHNsb3RfbGltaXQucGwKQEAgLTU5LDcgKzU5LDcgQEAgJHJlc3VsdCA9ICRu b2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogaXMoJHJlc3VsdCwgInJlc2VydmVk fHQiLCAnY2hlY2sgdGhlIGNhdGNoaW5nLXVwIHN0YXRlJyk7CiAKICMgQWR2YW5jZSBXQUwgYnkg Zml2ZSBzZWdtZW50cyAoPSA1TUIpIG9uIHByaW1hcnkKLWFkdmFuY2Vfd2FsKCRub2RlX3ByaW1h cnksIDEpOworJG5vZGVfcHJpbWFyeS0+YWR2YW5jZV93YWwoMSk7CiAkbm9kZV9wcmltYXJ5LT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNIRUNLUE9JTlQ7Iik7CiAKICMgVGhlIHNsb3QgaXMgYWx3 YXlzICJzYWZlIiB3aGVuIGZpdHRpbmcgbWF4X3dhbF9zaXplCkBAIC02OSw3ICs2OSw3IEBAICRy ZXN1bHQgPSAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIGlzKCRyZXN1bHQs ICJyZXNlcnZlZHx0IiwKIAknY2hlY2sgdGhhdCBpdCBpcyBzYWZlIGlmIFdBTCBmaXRzIGluIG1h eF93YWxfc2l6ZScpOwogCi1hZHZhbmNlX3dhbCgkbm9kZV9wcmltYXJ5LCA0KTsKKyRub2RlX3By aW1hcnktPmFkdmFuY2Vfd2FsKDQpOwogJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJDSEVDS1BPSU5UOyIpOwogCiAjIFRoZSBzbG90IGlzIGFsd2F5cyAic2FmZSIgd2hlbiBt YXhfc2xvdF93YWxfa2VlcF9zaXplIGlzIG5vdCBzZXQKQEAgLTEwMCw3ICsxMDAsNyBAQCAkcmVz dWx0ID0gJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiBpcygkcmVzdWx0LCAi cmVzZXJ2ZWQiLCAnY2hlY2sgdGhhdCBtYXhfc2xvdF93YWxfa2VlcF9zaXplIGlzIHdvcmtpbmcn KTsKIAogIyBBZHZhbmNlIFdBTCBhZ2FpbiB0aGVuIGNoZWNrcG9pbnQsIHJlZHVjaW5nIHJlbWFp biBieSAyIE1CLgotYWR2YW5jZV93YWwoJG5vZGVfcHJpbWFyeSwgMik7Ciskbm9kZV9wcmltYXJ5 LT5hZHZhbmNlX3dhbCgyKTsKICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi Q0hFQ0tQT0lOVDsiKTsKIAogIyBUaGUgc2xvdCBpcyBzdGlsbCB3b3JraW5nCkBAIC0xMTgsNyAr MTE4LDcgQEAgJG5vZGVfc3RhbmRieS0+c3RvcDsKICRyZXN1bHQgPSAkbm9kZV9wcmltYXJ5LT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQUxURVIgU1lTVEVNIFNFVCB3YWxfa2VlcF9zaXplIHRv ICc4TUInOyBTRUxFQ1QgcGdfcmVsb2FkX2NvbmYoKTsiKTsKICMgQWR2YW5jZSBXQUwgYWdhaW4g dGhlbiBjaGVja3BvaW50LCByZWR1Y2luZyByZW1haW4gYnkgNiBNQi4KLWFkdmFuY2Vfd2FsKCRu b2RlX3ByaW1hcnksIDYpOworJG5vZGVfcHJpbWFyeS0+YWR2YW5jZV93YWwoNik7CiAkcmVzdWx0 ID0gJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIlNFTEVDVCB3YWxfc3Rh dHVzIGFzIHJlbWFpbiBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RzIFdIRVJFIHNsb3RfbmFtZSA9 ICdyZXAxJyIKICk7CkBAIC0xMzQsNyArMTM0LDcgQEAgJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3Jf Y2F0Y2h1cCgkbm9kZV9zdGFuZGJ5KTsKICRub2RlX3N0YW5kYnktPnN0b3A7CiAKICMgQWR2YW5j ZSBXQUwgYWdhaW4gd2l0aG91dCBjaGVja3BvaW50LCByZWR1Y2luZyByZW1haW4gYnkgNiBNQi4K LWFkdmFuY2Vfd2FsKCRub2RlX3ByaW1hcnksIDYpOworJG5vZGVfcHJpbWFyeS0+YWR2YW5jZV93 YWwoNik7CiAKICMgU2xvdCBnZXRzIGludG8gJ3Jlc2VydmVkJyBzdGF0ZQogJHJlc3VsdCA9ICRu b2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLApAQCAtMTQ1LDcgKzE0NSw3IEBAIGlz KCRyZXN1bHQsICJleHRlbmRlZCIsICdjaGVjayB0aGF0IHRoZSBzbG90IHN0YXRlIGNoYW5nZXMg dG8gImV4dGVuZGVkIicpOwogJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJD SEVDS1BPSU5UOyIpOwogCiAjIEFkdmFuY2UgV0FMIGFnYWluIHdpdGhvdXQgY2hlY2twb2ludDsg cmVtYWluIGdvZXMgdG8gMC4KLWFkdmFuY2Vfd2FsKCRub2RlX3ByaW1hcnksIDEpOworJG5vZGVf cHJpbWFyeS0+YWR2YW5jZV93YWwoMSk7CiAKICMgU2xvdCBnZXRzIGludG8gJ3VucmVzZXJ2ZWQn IHN0YXRlIGFuZCBzYWZlX3dhbF9zaXplIGlzIG5lZ2F0aXZlCiAkcmVzdWx0ID0gJG5vZGVfcHJp bWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCkBAIC0xNzQsNyArMTc0LDcgQEAgJG5vZGVfcHJp bWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAKICMgQWR2YW5jZSBXQUwgYWdhaW4uIFRoZSBz bG90IGxvc2VzIHRoZSBvbGRlc3Qgc2VnbWVudCBieSB0aGUgbmV4dCBjaGVja3BvaW50CiBteSAk bG9nc3RhcnQgPSBnZXRfbG9nX3NpemUoJG5vZGVfcHJpbWFyeSk7Ci1hZHZhbmNlX3dhbCgkbm9k ZV9wcmltYXJ5LCA3KTsKKyRub2RlX3ByaW1hcnktPmFkdmFuY2Vfd2FsKDcpOwogCiAjIE5vdyBj cmVhdGUgYW5vdGhlciBjaGVja3BvaW50IGFuZCB3YWl0IHVudGlsIHRoZSBXQVJOSU5HIGlzIGlz c3VlZAogJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCkBAIC0yNzUsMTkgKzI3 NSw4IEBAICRub2RlX3N0YW5kYnktPmluaXRfZnJvbV9iYWNrdXAoJG5vZGVfcHJpbWFyeTIsICRi YWNrdXBfbmFtZSwKIAloYXNfc3RyZWFtaW5nID0+IDEpOwogJG5vZGVfc3RhbmRieS0+YXBwZW5k X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJwcmltYXJ5X3Nsb3RfbmFtZSA9ICdyZXAxJyIpOwog JG5vZGVfc3RhbmRieS0+c3RhcnQ7Ci1teSBAcmVzdWx0ID0KLSAgc3BsaXQoCi0JJ1xuJywKLQkk bm9kZV9wcmltYXJ5Mi0+c2FmZV9wc3FsKAotCQkncG9zdGdyZXMnLAotCQkiQ1JFQVRFIFRBQkxF IHR0KCk7Ci0JCSBEUk9QIFRBQkxFIHR0OwotCQkgU0VMRUNUIHBnX3N3aXRjaF93YWwoKTsKLQkJ IENIRUNLUE9JTlQ7Ci0JCSBTRUxFQ1QgJ2ZpbmlzaGVkJzsiLAotCQl0aW1lb3V0ID0+ICRQb3N0 Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0KSk7Ci1pcygkcmVzdWx0WzFdLCAn ZmluaXNoZWQnLCAnY2hlY2sgaWYgY2hlY2twb2ludCBjb21tYW5kIGlzIG5vdCBibG9ja2VkJyk7 Ci0KKyRub2RlX3ByaW1hcnkyLT5hZHZhbmNlX3dhbCgxKTsKKyRub2RlX3ByaW1hcnkyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgJ0NIRUNLUE9JTlQ7Jyk7CiAkbm9kZV9wcmltYXJ5Mi0+c3RvcDsK ICRub2RlX3N0YW5kYnktPnN0b3A7CiAKQEAgLTM3Miw3ICszNjEsNyBAQCAkbG9nc3RhcnQgPSBn ZXRfbG9nX3NpemUoJG5vZGVfcHJpbWFyeTMpOwogIyBmcmVlemUgd2Fsc2VuZGVyIGFuZCB3YWxy ZWNlaXZlci4gU2xvdCB3aWxsIHN0aWxsIGJlIGFjdGl2ZSwgYnV0IHdhbHJlY2VpdmVyCiAjIHdv bid0IGdldCBhbnl0aGluZyBhbnltb3JlLgoga2lsbCAnU1RPUCcsICRzZW5kZXJwaWQsICRyZWNl aXZlcnBpZDsKLWFkdmFuY2Vfd2FsKCRub2RlX3ByaW1hcnkzLCAyKTsKKyRub2RlX3ByaW1hcnkz LT5hZHZhbmNlX3dhbCgyKTsKIAogbXkgJG1zZ19sb2dnZWQgPSAwOwogbXkgJG1heF9hdHRlbXB0 cyA9ICRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0OwpAQCAtNDE4LDIx ICs0MDcsNiBAQCBraWxsICdDT05UJywgJHJlY2VpdmVycGlkOwogJG5vZGVfcHJpbWFyeTMtPnN0 b3A7CiAkbm9kZV9zdGFuZGJ5My0+c3RvcDsKIAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwotIyBBZHZhbmNlIFdBTCBvZiAkbm9kZSBieSAkbiBzZWdtZW50cwotc3ViIGFk dmFuY2Vfd2FsCi17Ci0JbXkgKCRub2RlLCAkbikgPSBAXzsKLQotCSMgQWR2YW5jZSBieSAkbiBz ZWdtZW50cyAoPSAod2FsX3NlZ21lbnRfc2l6ZSAqICRuKSBieXRlcykgb24gcHJpbWFyeS4KLQlm b3IgKG15ICRpID0gMDsgJGkgPCAkbjsgJGkrKykKLQl7Ci0JCSRub2RlLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKLQkJCSJDUkVBVEUgVEFCTEUgdCAoKTsgRFJPUCBUQUJMRSB0OyBTRUxFQ1QgcGdf c3dpdGNoX3dhbCgpOyIpOwotCX0KLQlyZXR1cm47Ci19Ci0KICMgcmV0dXJuIHRoZSBzaXplIG9m IGxvZ2ZpbGUgb2YgJG5vZGUgaW4gYnl0ZXMKIHN1YiBnZXRfbG9nX3NpemUKIHsKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbCBi L3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbAppbmRl eCA0ODBlNmQ2Y2FhLi4yZDE5YWRhYjRlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWNvdmVyeS90 LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwKKysrIGIvc3JjL3Rlc3QvcmVjb3Zlcnkv dC8wMzVfc3RhbmRieV9sb2dpY2FsX2RlY29kaW5nLnBsCkBAIC01MjQsMTEgKzUyNCw4IEBAIG15 ICR3YWxmaWxlX25hbWUgPSAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIGNo b21wKCR3YWxmaWxlX25hbWUpOwogCiAjIEdlbmVyYXRlIHNvbWUgYWN0aXZpdHkgYW5kIHN3aXRj aCBXQUwgZmlsZSBvbiB0aGUgcHJpbWFyeQotJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKAotCSdw b3N0Z3JlcycsICJjcmVhdGUgdGFibGUgcmV0YWluX3Rlc3QoYSBpbnQpOwotCQkJCQkJCQkJIHNl bGVjdCBwZ19zd2l0Y2hfd2FsKCk7Ci0JCQkJCQkJCQkgaW5zZXJ0IGludG8gcmV0YWluX3Rlc3Qg dmFsdWVzKDEpOwotCQkJCQkJCQkJIGNoZWNrcG9pbnQ7Iik7Ciskbm9kZV9wcmltYXJ5LT5hZHZh bmNlX3dhbCgxKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiY2hlY2tw b2ludDsiKTsKIAogIyBXYWl0IGZvciB0aGUgc3RhbmRieSB0byBjYXRjaCB1cAogJG5vZGVfcHJp bWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJG5vZGVfc3RhbmRieSk7Ci0tIAoyLjM0LjEK Cg== --00000000000074e79705fdd0c098--