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 1qMsdB-003VrH-EZ for pgsql-hackers@arkaria.postgresql.org; Fri, 21 Jul 2023 16:05:25 +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 1qMsd9-0046os-TB for pgsql-hackers@arkaria.postgresql.org; Fri, 21 Jul 2023 16:05:23 +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 1qMsd9-0046ok-Dd for pgsql-hackers@lists.postgresql.org; Fri, 21 Jul 2023 16:05:23 +0000 Received: from mail-lj1-x22a.google.com ([2a00:1450:4864:20::22a]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qMsd6-000i55-Me for pgsql-hackers@lists.postgresql.org; Fri, 21 Jul 2023 16:05:22 +0000 Received: by mail-lj1-x22a.google.com with SMTP id 38308e7fff4ca-2b734aea34aso30954691fa.0 for ; Fri, 21 Jul 2023 09:05:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1689955518; x=1690560318; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=tVlKFBs9kWbwj/EtT56xa61zOYaaJa73C6eZI2A+yCE=; b=eXiXE/bWuFBwKb7384Jsnb42crrPf31vWfcffZajE9BCevAl7GHCzXedItEsgmsmSa 1/JvFgI7UTO6L87gp1w/DCbOOYPnZlYnOFbmXk2+J7lvG/JdiR8MzNE1MzG6K0Ho86mi jwtwNLuvLzNoa6lC3JVUkC6JuTsKBXBb59gvGGu360DgvJCvbH2f+/Iw4p/Z+2Lt8XAD XL/7q746heMsTHxvwwa+llceLkMLKiRqtJzmmkCBBSbQCYd0/yv0bGrVbm4nCnHuNclL XgkjXwe4VJIl7mmMYbKpREbytgDyR9G2EoeqRKGH0VeNRvQ9uZB9Kwws/hk1LYDgGwG4 XjQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689955518; x=1690560318; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=tVlKFBs9kWbwj/EtT56xa61zOYaaJa73C6eZI2A+yCE=; b=dJP01LtI/ydBdYQ1k4s7Imuu7NG6yChWO4nAYsqptNkjxCSv+U8uTlsbZfWxMElzLY ajQe529SzcxuyQCqYlj0n+Qw5k1mXHcwajMjO7pGGvJW8drnh5ebQw/hjXdBdy+nosWk 30WpK1CV7S0XoASv2ljDpHFqnDKREtw2ClwSsYOUoLsGzPWAcbo9kgylw/bKDwKRVMB3 OiccckljoguuxEg5H3bZotARGYDUUx5WoTptxXBoSRUY8E5w64gK7eIMRyoJ5Z4vTjOj 4AeAncTAFhwRBI4a6CuPtWcdVPjBYDcnZhQLASjIN66PbbGYTaISA9XYYe8VfBw70tOr /Lgg== X-Gm-Message-State: ABy/qLYkym2iqZB4o/vYer5Wf66NAEd4nAV+8E3bcZ0YMriyUmrXf1Oa NlRFYgSTREvlZla42ceQ/LUWLBakQO/Vcf+6T1+02Nxd X-Google-Smtp-Source: APBJJlHd/hxPD1HtOEwoN1W6ngexF1smlMGSxTQIfjiEgTTiVHcQpxmF0FAWPXhWoOWWO9f9xFA7F9km70+bh1RVqK4= X-Received: by 2002:a2e:95c8:0:b0:2b9:44c6:d13b with SMTP id y8-20020a2e95c8000000b002b944c6d13bmr1947739ljh.9.1689955518132; Fri, 21 Jul 2023 09:05:18 -0700 (PDT) MIME-Version: 1.0 References: <46e53055d8d1c92704d3cd2709c722e7@oss.nttdata.com> In-Reply-To: From: Bharath Rupireddy Date: Fri, 21 Jul 2023 21:35:06 +0530 Message-ID: Subject: Re: Support worker_spi to execute the function dynamically. To: Masahiro Ikeda Cc: michael@paquier.xyz, pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="00000000000058523b0601016ec9" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000058523b0601016ec9 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Jul 21, 2023 at 4:05=E2=80=AFPM Masahiro Ikeda wrote: > > > In SQL tests, I ensured worker_spi doesn't start static bg workers by > > setting worker_spi.total_workers =3D 0. Again, all of this is not > > necessary, but it will be a very good example for someone writing > > extensions and play around with custom config files, SQL and TAP tests > > etc. > > Thanks for making the patch. I confirmed it works in my environments. Thanks for verifying. > I have some questions about the patch. > > (1) > > Do we need to change the minValue from 1 to 0 to support > worker_spi.total_workers =3D 0? > > DefineCustomIntVariable("worker_spi.total_workers", > "Number of worker= s.", > NULL, > &worker_spi_total= _workers, > 2, > 1, > 100, > PGC_POSTMASTER, > 0, > NULL, > NULL, > NULL); No, let's keep it that way. > (2) > > Do we need "worker_spi.total_workers =3D 0" and > "shared_preload_libraries =3D worker_spi" in dynamic.conf. > > Currently, the static bg workers will not be launched because > "shared_preload_libraries =3D worker_spi" is removed. So > "worker_spi.total_workers =3D 0" is meaningless. You're right. worker_spi.total_workers =3D 0 in custom.conf has no effect. without shared_preload_libraries =3D worker_spi. Removed that. > (3) > > We need change and remove them. > > > # Copyright (c) 2021-2023, PostgreSQL Global Development Group > > > > # Test replication statistics data in pg_stat_replication_slots is sane > > after > > # drop replication slot and restart. Modified. I'm attaching the v2 patch. Thoughts? -- Bharath Rupireddy PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --00000000000058523b0601016ec9 Content-Type: application/octet-stream; name="v2-0001-Add-TAP-tests-to-worker_spi-module.patch" Content-Disposition: attachment; filename="v2-0001-Add-TAP-tests-to-worker_spi-module.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lkcruqjk0 RnJvbSAyNDk4NTY1NzUzMTU0Yzg3MjJmNTRhYWM1ZjMyMWFjYTQxMjkzZTBkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IEZyaSwgMjEgSnVsIDIwMjMgMTU6NTY6MTMgKzAw MDAKU3ViamVjdDogW1BBVENIIHYyXSBBZGQgVEFQIHRlc3RzIHRvIHdvcmtlcl9zcGkgbW9kdWxl CgpUaGlzIGNvbW1pdCBhZGRzIFRBUCB0ZXN0cyB0byBjaGVjayBpZiB0aGUgd29ya2VyX3NwaSBj YW4gc3RhcnQKdGhlIHJpZ2h0IG51bWJlciBvZiBzdGF0aWMgYmcgd29ya2Vycy4gV2UgY2FuJ3Qg dXNlCnNxbC93b3JrZXJfc3BpLnNxbCBmb3IgdGhpcyBiZWNhdXNlIHRoZSBzdGF0aWMgd29ya2Vy cyBuZWVkIGEKZGF0YWJhc2Ugd2hpY2ggaXMgbm90IHRoZXJlIHdoZW4gdGhlIHBvc3RtYXN0ZXIg cHJvY2Vzc2VzIHRoZQpzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMgc2V0dGluZy4KClRoZSBhZGRl ZCBUQVAgdGVzdHMgY2FuIGFsc28gaGVscCBvdGhlciBtb2R1bGUgZGV2ZWxvcGVycyB0bwpxdWlj a2x5IGxlYXJuIGhvdyB0byBhZGQgVEFQIHRlc3RzLgoKV2Uga2VwdCBzcWwvd29ya2VyX3NwaS5z cWwgZXZlbiB0aG91Z2ggdGVzdHMgZnJvbSB0aGVyZSBjYW4gYmUKbW92ZWQgdG8gdGhlIG5ld2x5 IGFkZGVkIFRBUCB0ZXN0IGZpbGUuIFRoaXMgaXMgYmVjYXVzZSB0aGV5IHNob3cKaG93IHRvIHdy aXRlIFNRTCB0ZXN0cyBmb3IgYW4gZXh0ZXJuYWwgbW9kdWxlLgoKV2UgYWxzbyBjaGFuZ2VkIHRo ZSBuYW1lcyBvZiB0aGUgYmcgd29ya2VycyB0byBtYWtlIGl0IGNsZWFyIHdoaWNoCm9uZXMgYXJl IHN0YXRpYyBhbmQgd2hpY2ggb25lcyBhcmUgZHluYW1pYy4KLS0tCiBzcmMvdGVzdC9tb2R1bGVz L3dvcmtlcl9zcGkvTWFrZWZpbGUgICAgICAgICAgfCAgMiArCiBzcmMvdGVzdC9tb2R1bGVzL3dv cmtlcl9zcGkvZHluYW1pYy5jb25mICAgICAgfCAgMiArLQogc3JjL3Rlc3QvbW9kdWxlcy93b3Jr ZXJfc3BpL21lc29uLmJ1aWxkICAgICAgIHwgIDUgKysKIC4uLi9tb2R1bGVzL3dvcmtlcl9zcGkv dC8wMDFfd29ya2VyX3NwaS5wbCAgICB8IDQ5ICsrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0 L21vZHVsZXMvd29ya2VyX3NwaS93b3JrZXJfc3BpLmMgICAgICB8ICA4ICstLQogNSBmaWxlcyBj aGFuZ2VkLCA2MSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy90ZXN0L21vZHVsZXMvd29ya2VyX3NwaS90LzAwMV93b3JrZXJfc3BpLnBsCgpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy93b3JrZXJfc3BpL01ha2VmaWxlIGIvc3JjL3Rlc3Qv bW9kdWxlcy93b3JrZXJfc3BpL01ha2VmaWxlCmluZGV4IGNiZjliMmUzN2YuLjNmNjMwNjg1MTQg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvd29ya2VyX3NwaS9NYWtlZmlsZQorKysgYi9z cmMvdGVzdC9tb2R1bGVzL3dvcmtlcl9zcGkvTWFrZWZpbGUKQEAgLTE0LDYgKzE0LDggQEAgUkVH UkVTU19PUFRTID0gLS10ZW1wLWNvbmZpZyAkKHRvcF9zcmNkaXIpL3NyYy90ZXN0L21vZHVsZXMv d29ya2VyX3NwaS9keW5hbWljLmMKICMgRGlzYWJsZSBpbnN0YWxsY2hlY2sgdG8gZW5zdXJlIHdl IGNvdmVyIGR5bmFtaWMgYmd3b3JrZXJzLgogTk9fSU5TVEFMTENIRUNLID0gMQogCitUQVBfVEVT VFMgPSAxCisKIGlmZGVmIFVTRV9QR1hTCiBQR19DT05GSUcgPSBwZ19jb25maWcKIFBHWFMgOj0g JChzaGVsbCAkKFBHX0NPTkZJRykgLS1wZ3hzKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxl cy93b3JrZXJfc3BpL2R5bmFtaWMuY29uZiBiL3NyYy90ZXN0L21vZHVsZXMvd29ya2VyX3NwaS9k eW5hbWljLmNvbmYKaW5kZXggYmZlMDE1ZjY2NC4uNmM3YzdlZjZhYSAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvbW9kdWxlcy93b3JrZXJfc3BpL2R5bmFtaWMuY29uZgorKysgYi9zcmMvdGVzdC9tb2R1 bGVzL3dvcmtlcl9zcGkvZHluYW1pYy5jb25mCkBAIC0xLDIgKzEsMiBAQAotc2hhcmVkX3ByZWxv YWRfbGlicmFyaWVzID0gd29ya2VyX3NwaQorIyBMZXQncyBkaXNhYmxlIHN0YXRpYyBiZyB3b3Jr ZXJzIGluIFNRTCB0ZXN0cyBhbmQgZW5hYmxlIHRoZW0gaW4gVEFQIHRlc3RzCiB3b3JrZXJfc3Bp LmRhdGFiYXNlID0gY29udHJpYl9yZWdyZXNzaW9uCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1 bGVzL3dvcmtlcl9zcGkvbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9tb2R1bGVzL3dvcmtlcl9zcGkv bWVzb24uYnVpbGQKaW5kZXggYThjZGZkZWIzNi4uMjllZTg3NTY5MCAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvbW9kdWxlcy93b3JrZXJfc3BpL21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L21vZHVs ZXMvd29ya2VyX3NwaS9tZXNvbi5idWlsZApAQCAtMzMsNCArMzMsOSBAQCB0ZXN0cyArPSB7CiAg ICAgJ3JlZ3Jlc3NfYXJncyc6IFsnLS10ZW1wLWNvbmZpZycsIGZpbGVzKCdkeW5hbWljLmNvbmYn KV0sCiAgICAgJ3J1bm5pbmdjaGVjayc6IGZhbHNlLAogICB9LAorICAndGFwJzogeworICAgICd0 ZXN0cyc6IFsKKyAgICAgICd0LzAwMV93b3JrZXJfc3BpLnBsJywKKyAgICBdLAorICB9LAogfQpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy93b3JrZXJfc3BpL3QvMDAxX3dvcmtlcl9zcGku cGwgYi9zcmMvdGVzdC9tb2R1bGVzL3dvcmtlcl9zcGkvdC8wMDFfd29ya2VyX3NwaS5wbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi40ODViZDY0MzM1Ci0tLSAvZGV2L251 bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy93b3JrZXJfc3BpL3QvMDAxX3dvcmtlcl9zcGkucGwK QEAgLTAsMCArMSw0OSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjMsIFBvc3RncmVTUUwgR2xvYmFs IERldmVsb3BtZW50IEdyb3VwCisKKyMgVGVzdCB3b3JrZXJfc3BpIG1vZHVsZSBmdW5jdGlvbmFs aXR5Cit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKwor IyBUZXN0IHNldC11cAorbXkgJG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXco J215bm9kZScpOworJG5vZGUtPmluaXQ7Ciskbm9kZS0+c3RhcnQ7CisKKyRub2RlLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgcShDUkVBVEUgREFUQUJBU0UgbXlkYjspKTsKKworJG5vZGUtPmFwcGVu ZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCBxeworc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzID0g J3dvcmtlcl9zcGknCit3b3JrZXJfc3BpLmRhdGFiYXNlID0gJ215ZGInCit3b3JrZXJfc3BpLnRv dGFsX3dvcmtlcnMgPSAzCit9KTsKKyRub2RlLT5yZXN0YXJ0OworCiskbm9kZS0+c2FmZV9wc3Fs KCdteWRiJywgJ0NSRUFURSBFWFRFTlNJT04gd29ya2VyX3NwaTsnKTsKKworIyBWZXJpZnkgdGhh dCB3b3JrZXJfc3BpIHN0YXRpYyBiZyB3b3JrZXJzIGhhdmUgYmVlbiBsYXVuY2hlZC4KK29rKCAk bm9kZS0+cG9sbF9xdWVyeV91bnRpbCgKKyAgICAgICAgJ215ZGInLAorICAgICAgICBxcVtTRUxF Q1QgY291bnQoKikgPSAzIEZST00gcGdfc3RhdF9hY3Rpdml0eQorICAgICAgICAgICAgV0hFUkUg YmFja2VuZF90eXBlID0gJ3dvcmtlcl9zcGkgc3RhdGljIHdvcmtlcic7XSwKKyAgICAgICAgJ3Qn KSwKKyAgICAnd29ya2VyX3NwaSBzdGF0aWMgYmcgd29ya2VycyBsYXVuY2hlZCcKKykgb3IgZGll ICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3Igd29ya2VyX3NwaSBzdGF0aWMgYmcgd29ya2Vy cyB0byBiZSBsYXVuY2hlZCI7CisKKyMgQXNrIHdvcmtlcl9zcGkgdG8gbGF1bmNoIGR5bmFtaWMg Ymcgd29ya2VycworbXkgJHdvcmtlcjFfcGlkID0gJG5vZGUtPnNhZmVfcHNxbCgnbXlkYicsICdT RUxFQ1Qgd29ya2VyX3NwaV9sYXVuY2goMSk7Jyk7CitteSAkd29ya2VyMl9waWQgPSAkbm9kZS0+ c2FmZV9wc3FsKCdteWRiJywgJ1NFTEVDVCB3b3JrZXJfc3BpX2xhdW5jaCgyKTsnKTsKKworIyBW ZXJpZnkgdGhhdCB3b3JrZXJfc3BpIGR5bmFtaWMgYmcgd29ya2VycyBoYXZlIGJlZW4gbGF1bmNo ZWQuCitvayggJG5vZGUtPnBvbGxfcXVlcnlfdW50aWwoCisgICAgICAgICdteWRiJywKKyAgICAg ICAgcXFbU0VMRUNUIGNvdW50KCopID0gMiBGUk9NIHBnX3N0YXRfYWN0aXZpdHkKKyAgICAgICAg ICAgIFdIRVJFIGJhY2tlbmRfdHlwZSA9ICd3b3JrZXJfc3BpIGR5bmFtaWMgd29ya2VyJyBBTkQK KyAgICAgICAgICAgIHBpZCBJTiAoJHdvcmtlcjFfcGlkLCAkd29ya2VyMl9waWQpO10sCisgICAg ICAgICd0JyksCisgICAgJ3dvcmtlcl9zcGkgZHluYW1pYyBiZyB3b3JrZXJzIGxhdW5jaGVkJwor KSBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciB3b3JrZXJfc3BpIGR5bmFtaWMg Ymcgd29ya2VycyB0byBiZSBsYXVuY2hlZCI7CisKK2RvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvbW9kdWxlcy93b3JrZXJfc3BpL3dvcmtlcl9zcGkuYyBiL3NyYy90ZXN0L21v ZHVsZXMvd29ya2VyX3NwaS93b3JrZXJfc3BpLmMKaW5kZXggYWRhMGZiOGFjNy4uNTY3NjA3MzIx OCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy93b3JrZXJfc3BpL3dvcmtlcl9zcGkuYwor KysgYi9zcmMvdGVzdC9tb2R1bGVzL3dvcmtlcl9zcGkvd29ya2VyX3NwaS5jCkBAIC0zNDMsOCAr MzQzLDggQEAgX1BHX2luaXQodm9pZCkKIAkgKi8KIAlmb3IgKGludCBpID0gMTsgaSA8PSB3b3Jr ZXJfc3BpX3RvdGFsX3dvcmtlcnM7IGkrKykKIAl7Ci0JCXNucHJpbnRmKHdvcmtlci5iZ3dfbmFt ZSwgQkdXX01BWExFTiwgIndvcmtlcl9zcGkgd29ya2VyICVkIiwgaSk7Ci0JCXNucHJpbnRmKHdv cmtlci5iZ3dfdHlwZSwgQkdXX01BWExFTiwgIndvcmtlcl9zcGkiKTsKKwkJc25wcmludGYod29y a2VyLmJnd19uYW1lLCBCR1dfTUFYTEVOLCAid29ya2VyX3NwaSBzdGF0aWMgd29ya2VyICVkIiwg aSk7CisJCXNucHJpbnRmKHdvcmtlci5iZ3dfdHlwZSwgQkdXX01BWExFTiwgIndvcmtlcl9zcGkg c3RhdGljIHdvcmtlciIpOwogCQl3b3JrZXIuYmd3X21haW5fYXJnID0gSW50MzJHZXREYXR1bShp KTsKIAogCQlSZWdpc3RlckJhY2tncm91bmRXb3JrZXIoJndvcmtlcik7CkBAIC0zNzAsOCArMzcw LDggQEAgd29ya2VyX3NwaV9sYXVuY2goUEdfRlVOQ1RJT05fQVJHUykKIAl3b3JrZXIuYmd3X3Jl c3RhcnRfdGltZSA9IEJHV19ORVZFUl9SRVNUQVJUOwogCXNwcmludGYod29ya2VyLmJnd19saWJy YXJ5X25hbWUsICJ3b3JrZXJfc3BpIik7CiAJc3ByaW50Zih3b3JrZXIuYmd3X2Z1bmN0aW9uX25h bWUsICJ3b3JrZXJfc3BpX21haW4iKTsKLQlzbnByaW50Zih3b3JrZXIuYmd3X25hbWUsIEJHV19N QVhMRU4sICJ3b3JrZXJfc3BpIHdvcmtlciAlZCIsIGkpOwotCXNucHJpbnRmKHdvcmtlci5iZ3df dHlwZSwgQkdXX01BWExFTiwgIndvcmtlcl9zcGkiKTsKKwlzbnByaW50Zih3b3JrZXIuYmd3X25h bWUsIEJHV19NQVhMRU4sICJ3b3JrZXJfc3BpIGR5bmFtaWMgd29ya2VyICVkIiwgaSk7CisJc25w cmludGYod29ya2VyLmJnd190eXBlLCBCR1dfTUFYTEVOLCAid29ya2VyX3NwaSBkeW5hbWljIHdv cmtlciIpOwogCXdvcmtlci5iZ3dfbWFpbl9hcmcgPSBJbnQzMkdldERhdHVtKGkpOwogCS8qIHNl dCBiZ3dfbm90aWZ5X3BpZCBzbyB0aGF0IHdlIGNhbiB1c2UgV2FpdEZvckJhY2tncm91bmRXb3Jr ZXJTdGFydHVwICovCiAJd29ya2VyLmJnd19ub3RpZnlfcGlkID0gTXlQcm9jUGlkOwotLSAKMi4z NC4xCgo= --00000000000058523b0601016ec9--