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.96) (envelope-from ) id 1vXq2M-007Dud-1q for pgpool-hackers@arkaria.postgresql.org; Tue, 23 Dec 2025 00:14:03 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vXq2J-00GnSN-25 for pgpool-hackers@arkaria.postgresql.org; Tue, 23 Dec 2025 00:14:00 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vXq2J-00GnSG-1B for pgpool-hackers@lists.postgresql.org; Tue, 23 Dec 2025 00:14:00 +0000 Received: from meldrar.postgresql.org ([2a02:c0:301:0:ffff::31]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vXq2H-002CbG-0V for pgpool-hackers@lists.postgresql.org; Tue, 23 Dec 2025 00:13:59 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=postgresql.org; s=20171124; h=Content-Transfer-Encoding:Content-Type: Mime-Version:References:In-Reply-To:From:Subject:Cc:To:Message-Id:Date:Sender :Reply-To:Content-ID:Content-Description; bh=p4IZLXTjCCb/l6xMx+rivXPMcaKwbxK/3s8+Ej3CVFw=; b=XgI/hHWZAnC1mTRjF4A67+dI9b oeCv/a/19FHDkoHdrO3ZZhB/IKWmL1F4m6gkt5xA23PMt3ObcD/BdaOanX/dbWecwr7bZEpBbEQe8 ppX0FzXPBNs172UQjjeFtGPnNUxBMfLUhrlb/VOz0GJ2mhfwCmPRysKkY5ylZ1Z5chg2ty5bmIKwy PjsOwIYD1WHz2oI+qZVh2iYDRrsa+FZ0qXOexXIwUu/MaJgYesXdRQcwMJ8O9eHIENdHa+U+QX+r8 PcU5qBOCrG2BHwQ33U7pQtYq+LDJuV+seqGUIzcIlu7TjS+ARXKN+nifwT9dj7yyM8jYjPlx2kbpU f5ypQhVA==; Received: from [2409:11:4120:300:d5fa:e024:ccf3:d14e] (helo=localhost) by meldrar.postgresql.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vXq2E-004fK1-2j; Tue, 23 Dec 2025 00:13:57 +0000 Date: Tue, 23 Dec 2025 09:13:42 +0900 (JST) Message-Id: <20251223.091342.1595559830808064194.ishii@postgresql.org> To: nadav@tailorbrands.com Cc: pgpool-hackers@lists.postgresql.org Subject: Re: Proposal: recent access based routing for primary-replica setups From: Tatsuo Ishii In-Reply-To: References: <20251124.164130.561276744202086083.ishii@postgresql.org> X-Mailer: Mew version 6.8 on Emacs 29.3 Mime-Version: 1.0 Content-Type: Text/Plain; charset=utf-8 Content-Transfer-Encoding: base64 X-Host-Lookup-Failed: Reverse DNS lookup failed for 2409:11:4120:300:d5fa:e024:ccf3:d14e (failed) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk PiBJIHRoaW5rIGV2ZXJ5dGhpbmcgaXMgcGFzc2luZyBub3cuIG5ldyB2ZXJzaW9uIGF0dGFjaGVk Lg0KDQpVbmZvcnR1bmF0ZWx5IFRlc3QxIGRpZCBub3QgcGFzcy4NCg0KPT09IFRlc3QxOiBCYXNp YyBleHRlcm5hbCBjb21tYW5kIHdpdGggaW50ZWdlciBtaWxsaXNlY29uZCB2YWx1ZXMgPT09DQp3 YWl0aW5nIGZvciBzZXJ2ZXIgdG8gc3RhcnQuLi4uMTQzODYwMCAyMDI1LTEyLTIzIDA5OjA5OjQ4 LjMzNyBKU1QgTE9HOiAgcmVkaXJlY3RpbmcgbG9nIG91dHB1dCB0byBsb2dnaW5nIGNvbGxlY3Rv ciBwcm9jZXNzDQoxNDM4NjAwIDIwMjUtMTItMjMgMDk6MDk6NDguMzM3IEpTVCBISU5UOiAgRnV0 dXJlIGxvZyBvdXRwdXQgd2lsbCBhcHBlYXIgaW4gZGlyZWN0b3J5ICJsb2ciLg0KIGRvbmUNCnNl cnZlciBzdGFydGVkDQp3YWl0aW5nIGZvciBzZXJ2ZXIgdG8gc3RhcnQuLi4uMTQzODYxNyAyMDI1 LTEyLTIzIDA5OjA5OjQ4LjQ0MyBKU1QgTE9HOiAgcmVkaXJlY3RpbmcgbG9nIG91dHB1dCB0byBs b2dnaW5nIGNvbGxlY3RvciBwcm9jZXNzDQoxNDM4NjE3IDIwMjUtMTItMjMgMDk6MDk6NDguNDQz IEpTVCBISU5UOiAgRnV0dXJlIGxvZyBvdXRwdXQgd2lsbCBhcHBlYXIgaW4gZGlyZWN0b3J5ICJs b2ciLg0KIGRvbmUNCnNlcnZlciBzdGFydGVkDQp3YWl0aW5nIGZvciBzZXJ2ZXIgdG8gc3RhcnQu Li4uMTQzODYzNCAyMDI1LTEyLTIzIDA5OjA5OjQ4LjU2MSBKU1QgTE9HOiAgcmVkaXJlY3Rpbmcg bG9nIG91dHB1dCB0byBsb2dnaW5nIGNvbGxlY3RvciBwcm9jZXNzDQoxNDM4NjM0IDIwMjUtMTIt MjMgMDk6MDk6NDguNTYxIEpTVCBISU5UOiAgRnV0dXJlIGxvZyBvdXRwdXQgd2lsbCBhcHBlYXIg aW4gZGlyZWN0b3J5ICJsb2ciLg0KIGRvbmUNCnNlcnZlciBzdGFydGVkDQpDUkVBVEUgVEFCTEUN CldhaXRpbmcgZm9yIHNyX2NoZWNrIHRvIHJ1bi4uLg0KQ29tbWFuZCBleGVjdXRlZCBhZnRlciAx IHNlY29uZHMNCiBub2RlX2lkIHwgaG9zdG5hbWUgIHwgcG9ydCAgfCBzdGF0dXMgfCBwZ19zdGF0 dXMgfCBsYl93ZWlnaHQgfCAgcm9sZSAgIHwgcGdfcm9sZSB8IHNlbGVjdF9jbnQgfCBsb2FkX2Jh bGFuY2Vfbm9kZSB8IHJlcGxpY2F0aW9uX2RlbGF5IHwgcmVwbGljYXRpb25fc3RhdGUgfCByZXBs aWNhdGlvbl9zeW5jX3N0YXRlIHwgbGFzdF9zdGF0dXNfY2hhbmdlICANCi0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0NCiAwICAgICAgIHwgbG9jYWxob3N0IHwgMTEwMDIgfCB1cCAgICAg fCB1cCAgICAgICAgfCAwLjMzMzMzMyAgfCBwcmltYXJ5IHwgcHJpbWFyeSB8IDAgICAgICAgICAg fCB0cnVlICAgICAgICAgICAgICB8IDAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAg ICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAyNS0xMi0yMyAwOTowOTo0OQ0KIDEgICAg ICAgfCBsb2NhbGhvc3QgfCAxMTAwMyB8IHVwICAgICB8IHVwICAgICAgICB8IDAuMzMzMzMzICB8 IHN0YW5kYnkgfCBzdGFuZGJ5IHwgMCAgICAgICAgICB8IGZhbHNlICAgICAgICAgICAgIHwgMCAg ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAg ICAgfCAyMDI1LTEyLTIzIDA5OjA5OjQ5DQogMiAgICAgICB8IGxvY2FsaG9zdCB8IDExMDA0IHwg dXAgICAgIHwgdXAgICAgICAgIHwgMC4zMzMzMzMgIHwgc3RhbmRieSB8IHN0YW5kYnkgfCAwICAg ICAgICAgIHwgZmFsc2UgICAgICAgICAgICAgfCAwICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IDIwMjUtMTItMjMgMDk6MDk6NDkN CigzIHJvd3MpDQoNCmZhaWw6IGV4dGVybmFsIGNvbW1hbmQgZGVsYXkgbG9nZ2luZyBub3QgZm91 bmQNCg0KPiBPbiBNb24sIE5vdiAyNCwgMjAyNSBhdCA5OjQx4oCvQU0gVGF0c3VvIElzaGlpIDxp c2hpaUBwb3N0Z3Jlc3FsLm9yZz4gd3JvdGU6DQo+IA0KPj4gVGhhbmsgeW91IGZvciB1cGRhdGlu ZyB0aGUgcGF0Y2ghIFRoaXMgdGltZSB0aGUgcGF0Y2ggYXBwbGllcyB3aXRob3V0DQo+PiBhbnkg aXNzdWUgYW5kIGNvbXBpbGVzIGZpbmUuIFVuZm9ydHVuYXRlbHkgcmVncmVzc2lvbiB0ZXN0IGZh aWxlZC4NCj4+DQo+PiB0ZXN0aW5nIDA0MS5leHRlcm5hbF9yZXBsaWNhdGlvbl9kZWxheS4uLmZh aWxlZC4NCj4+DQo+PiBGcm9tIHRoZSByZWdyZXNzaW9uIGxvZywgaXQgc2VlbXMgVGVzdDcgZmFp bGVkLg0KPj4NCj4+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPj4gPT09IFRlc3Q3OiBDb21tYW5k IHRpbWVvdXQgaGFuZGxpbmcgPT09DQo+PiB3YWl0aW5nIGZvciBzZXJ2ZXIgdG8gc3RhcnQuLi4u NDExMTgxIDIwMjUtMTEtMjQgMTY6MzE6MDUuMjQ0IEpTVCBMT0c6DQo+PiByZWRpcmVjdGluZyBs b2cgb3V0cHV0IHRvIGxvZ2dpbmcgY29sbGVjdG9yIHByb2Nlc3MNCj4+IDQxMTE4MSAyMDI1LTEx LTI0IDE2OjMxOjA1LjI0NCBKU1QgSElOVDogIEZ1dHVyZSBsb2cgb3V0cHV0IHdpbGwgYXBwZWFy IGluDQo+PiBkaXJlY3RvcnkgImxvZyIuDQo+PiAgZG9uZQ0KPj4gc2VydmVyIHN0YXJ0ZWQNCj4+ IHdhaXRpbmcgZm9yIHNlcnZlciB0byBzdGFydC4uLi40MTExOTYgMjAyNS0xMS0yNCAxNjozMTow NS4zNTIgSlNUIExPRzoNCj4+IHJlZGlyZWN0aW5nIGxvZyBvdXRwdXQgdG8gbG9nZ2luZyBjb2xs ZWN0b3IgcHJvY2Vzcw0KPj4gNDExMTk2IDIwMjUtMTEtMjQgMTY6MzE6MDUuMzUyIEpTVCBISU5U OiAgRnV0dXJlIGxvZyBvdXRwdXQgd2lsbCBhcHBlYXIgaW4NCj4+IGRpcmVjdG9yeSAibG9nIi4N Cj4+ICBkb25lDQo+PiBzZXJ2ZXIgc3RhcnRlZA0KPj4gd2FpdGluZyBmb3Igc2VydmVyIHRvIHN0 YXJ0Li4uLjQxMTIxMyAyMDI1LTExLTI0IDE2OjMxOjA1LjQ2MSBKU1QgTE9HOg0KPj4gcmVkaXJl Y3RpbmcgbG9nIG91dHB1dCB0byBsb2dnaW5nIGNvbGxlY3RvciBwcm9jZXNzDQo+PiA0MTEyMTMg MjAyNS0xMS0yNCAxNjozMTowNS40NjEgSlNUIEhJTlQ6ICBGdXR1cmUgbG9nIG91dHB1dCB3aWxs IGFwcGVhciBpbg0KPj4gZGlyZWN0b3J5ICJsb2ciLg0KPj4gIGRvbmUNCj4+IHNlcnZlciBzdGFy dGVkDQo+PiBXYWl0aW5nIGZvciBjb21tYW5kIHRpbWVvdXQuLi4NCj4+IGZhaWw6IGNvbW1hbmQg dGltZW91dCBub3QgZGV0ZWN0ZWQNCj4+DQo+PiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4+DQo+ PiBBdHRhY2hlZCBpcyB0aGUgcGdwb29sLmxvZy4gSWYgeW91IG5lZWQgbW9yZSBpbmZvLCBwbGVh c2UgbGV0IG1lIGtub3cuDQo+Pg0KPj4gQmVzdCByZWdhcmRzLA0KPj4gLS0NCj4+IFRhdHN1byBJ c2hpaQ0KPj4gU1JBIE9TUyBLLksuDQo+PiBFbmdsaXNoOiBodHRwOi8vd3d3LnNyYW9zcy5jby5q cC9pbmRleF9lbi8NCj4+IEphcGFuZXNlOmh0dHA6Ly93d3cuc3Jhb3NzLmNvLmpwDQo+Pg0KPj4N Cj4+ID4gSGkgVGF0c3VvLA0KPj4gPg0KPj4gPiBTb3JyeSBhZ2FpbiwgdGhpcyB3YXMgZHVlIHRv IHRoZSBzZXBhcmF0aW9uIG9mIDIgcGF0Y2hlcyBhbmQgaSBvbmx5IHNlbnQNCj4+ID4gdGhlIG9u ZS4NCj4+ID4NCj4+ID4gSSd2ZSBtZXJnZWQgaXQgaW50byAxIGNvbW1pdCBhbmQgMSBwYXRjaCBh bmQgcmViYXNlZCBvdmVyIG1hc3RlciB0byBhdm9pZA0KPj4gPiB0aGVzZSBpc3N1ZXMgbW92aW5n IGZvcndhcmQuDQo+PiA+DQo+PiA+IFBGQSBsYXRlc3QgdmVyc2lvbg0KPj4gPg0KPj4gPiBPbiBU aHUsIE5vdiAyMCwgMjAyNSBhdCAxOjA54oCvQU0gVGF0c3VvIElzaGlpIDxpc2hpaUBwb3N0Z3Jl c3FsLm9yZz4NCj4+IHdyb3RlOg0KPj4gPg0KPj4gPj4gSGkgTmFkYXYsDQo+PiA+Pg0KPj4gPj4g VGhhbmsgeW91IGZvciBuZXcgcGF0Y2guDQo+PiA+PiBVbmZvcnR1bmF0ZWx5IHRoZSBwYXRjaCBk aWQgbm90IGFwcGx5IHRvIGN1cnJlbnQgbWFzdGVyLg0KPj4gPj4NCj4+ID4+ICQgZ2l0IGFwcGx5 DQo+PiA+PiB+LzAwMDEtRml4LW11bHRpcGxlLWlzc3Vlcy1pbi1leHRlcm5hbC1yZXBsaWNhdGlv bi1kZWxheS1mZS5wYXRjaA0KPj4gPj4gZXJyb3I6IHBhdGNoIGZhaWxlZDogc3JjL3N0cmVhbWlu Z19yZXBsaWNhdGlvbi9wb29sX3dvcmtlcl9jaGlsZC5jOjY5NA0KPj4gPj4gZXJyb3I6IHNyYy9z dHJlYW1pbmdfcmVwbGljYXRpb24vcG9vbF93b3JrZXJfY2hpbGQuYzogcGF0Y2ggZG9lcyBub3QN Cj4+IGFwcGx5DQo+PiA+Pg0KPj4gPj4gTWF5YmUgdGhlIHBhdGNoIGlzIG9uIHRvcCBvZiB5b3Vy IHByZXZpb3VzIHBhdGNoPw0KPj4gPj4NCj4+ID4+IEFsc28gSSBzdWdnZXN0IHRvIHVzZSAiLXYi IG9wdGlvbiBvZiAiZ2l0IGZvcm1hdC1wYXRjaCIgdG8gYWRkIHRoZQ0KPj4gPj4gcGF0Y2ggdmVy c2lvbiBudW1iZXIgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGtub3cgd2hpY2ggcGF0Y2ggaXMgdGhl DQo+PiA+PiBsYXRlc3QuDQo+PiA+Pg0KPj4gPj4gQmVzdCByZWdhcmRzLA0KPj4gPj4gLS0NCj4+ ID4+IFRhdHN1byBJc2hpaQ0KPj4gPj4gU1JBIE9TUyBLLksuDQo+PiA+PiBFbmdsaXNoOiBodHRw Oi8vd3d3LnNyYW9zcy5jby5qcC9pbmRleF9lbi8NCj4+ID4+IEphcGFuZXNlOmh0dHA6Ly93d3cu c3Jhb3NzLmNvLmpwDQo+PiA+Pg0KPj4gPj4gPiBIaSBUYXRzdW8sDQo+PiA+PiA+DQo+PiA+PiA+ IFBsZWFzZSBzZWUgYXR0YWNoZWQgYW4gdXBkYXRlZCB2ZXJzaW9uLg0KPj4gPj4gPg0KPj4gPj4g PiB0aGFuayB5b3UNCj4+ID4+ID4NCj4+ID4+ID4gT24gRnJpLCBOb3YgNywgMjAyNSBhdCAyOjA3 4oCvQU0gVGF0c3VvIElzaGlpIDxpc2hpaUBwb3N0Z3Jlc3FsLm9yZz4NCj4+ID4+IHdyb3RlOg0K Pj4gPj4gPg0KPj4gPj4gPj4gPiBTb3JyeSBmb3IgdGhhdCAtIHRoYW5rcyBmb3IgdGhlIHBhdGNo Lg0KPj4gPj4gPj4gPg0KPj4gPj4gPj4gPiBQbGVhc2UgZmluZCBhdHRhY2hlZCBhIG5ldyB2ZXJz aW9uDQo+PiA+PiA+Pg0KPj4gPj4gPj4gVGhhbmtzIGZvciB0aGUgbmV3IHZlcnNpb24uIFVuZm9y dHVuYXRlbHkgdGhpcyB0aW1lIHJlZ3Jlc3Npb24gdGVzdA0KPj4gPj4gPj4gZmFpbHMgYXQ6DQo+ PiA+PiA+Pg0KPj4gPj4gPj4gPiBXYWl0aW5nIGZvciBjb21tYW5kIHRpbWVvdXQuLi4NCj4+ID4+ ID4+ID4gZmFpbDogY29tbWFuZCB0aW1lb3V0IG5vdCBkZXRlY3RlZA0KPj4gPj4gPj4NCj4+ID4+ ID4+IEF0dGFjaGVkIGlzIHRoZSBwZ3Bvb2wubG9nLg0KPj4gPj4gPj4NCj4+ID4+ID4+IEJlc3Qg cmVnYXJkcywNCj4+ID4+ID4+IC0tDQo+PiA+PiA+PiBUYXRzdW8gSXNoaWkNCj4+ID4+ID4+IFNS QSBPU1MgSy5LLg0KPj4gPj4gPj4gRW5nbGlzaDogaHR0cDovL3d3dy5zcmFvc3MuY28uanAvaW5k ZXhfZW4vDQo+PiA+PiA+PiBKYXBhbmVzZTpodHRwOi8vd3d3LnNyYW9zcy5jby5qcA0KPj4gPj4g Pj4NCj4+ID4+ID4+ID4gT24gTW9uLCBOb3YgMywgMjAyNSBhdCA5OjA14oCvQU0gVGF0c3VvIElz aGlpIDxpc2hpaUBwb3N0Z3Jlc3FsLm9yZz4NCj4+ID4+ID4+IHdyb3RlOg0KPj4gPj4gPj4gPg0K Pj4gPj4gPj4gPj4gPiB0aGFua3MgYW5kIHNvcnJ5IGZvciB0aGUgaXNzdWVzLCBwbGVhc2UgZmlu ZCBhdHRhY2hlZCB1cGRhdGVkDQo+PiA+PiB2ZXJzaW9uLg0KPj4gPj4gPj4gPj4NCj4+ID4+ID4+ ID4+IE5vIHByb2JsZW0uDQo+PiA+PiA+PiA+Pg0KPj4gPj4gPj4gPj4gVGhpcyB0aW1lIHRoZSBw YXRjaCBhcHBsaWVzIGZpbmUsIG5vIGNvbXBpbGVyIHdhcm5pbmdzLiAgSG93ZXZlciwNCj4+ID4+ ID4+ID4+IHJlZ3Jlc3Npb24gdGVzdCBkaWQgbm90IHBhc3NlZCBoZXJlIChvbiBVYnVudHUgMjQg TFRTIGlmIHRoaXMNCj4+ID4+ID4+ID4+IG1hdHRlcnMpLiAgU28gSSBsb29rZWQgaW50bw0KPj4g Pj4gPj4gPj4gc3JjL3Rlc3QvcmVncmVzc2lvbi90ZXN0cy8wNDEuZXh0ZXJuYWxfcmVwbGljYXRp b25fZGVsYXkvdGVzdC5zaCBhDQo+PiA+PiA+PiA+PiBsaXR0bGUgYml0IGFuZCBhcHBseSBhdHRh Y2hlZCBwYXRjaCAodGVzdC5zaC5wYXRjaCkuIEl0IG1vdmVkDQo+PiBmb3J3YXJkDQo+PiA+PiA+ PiA+PiBwYXJ0aWFsbHkgYnV0IGZhaWxlZCBhdDoNCj4+ID4+ID4+ID4+DQo+PiA+PiA+PiA+PiBm YWlsOiBjb21tYW5kIGV4ZWN1dGlvbiBmYWlsdXJlIG5vdCBkZXRlY3RlZA0KPj4gPj4gPj4gPj4N Cj4+ID4+ID4+ID4+IFBsZWFzZSBmaW5kIGF0dGFjaGVkDQo+PiA+PiA+PiA+Pg0KPj4gPj4gPj4N Cj4+ID4+DQo+PiBzcmMvdGVzdC9yZWdyZXNzaW9uL3Rlc3RzLzA0MS5leHRlcm5hbF9yZXBsaWNh dGlvbl9kZWxheS90ZXN0ZGlyL3BncG9vbC5sb2cNCj4+ID4+ID4+ID4+IGFuZCBzcmMvdGVzdC9y ZWdyZXNzaW9uL2xvZy8wNDEuZXh0ZXJuYWxfcmVwbGljYXRpb25fZGVsYXkuDQo+PiA+PiA+PiA+ Pg0KPj4gPj4gPj4gPj4gQmVzdCByZWdhcmRzLA0KPj4gPj4gPj4gPj4gLS0NCj4+ID4+ID4+ID4+ IFRhdHN1byBJc2hpaQ0KPj4gPj4gPj4gPj4gU1JBIE9TUyBLLksuDQo+PiA+PiA+PiA+PiBFbmds aXNoOiBodHRwOi8vd3d3LnNyYW9zcy5jby5qcC9pbmRleF9lbi8NCj4+ID4+ID4+ID4+IEphcGFu ZXNlOmh0dHA6Ly93d3cuc3Jhb3NzLmNvLmpwDQo+PiA+PiA+PiA+Pg0KPj4gPj4gPj4gPg0KPj4g Pj4gPj4gPg0KPj4gPj4gPj4gPiAtLQ0KPj4gPj4gPj4gPiBOYWRhdiBTaGF0eg0KPj4gPj4gPj4g PiBUYWlsb3IgQnJhbmRzIHwgQ1RPDQo+PiA+PiA+Pg0KPj4gPj4gPg0KPj4gPj4gPg0KPj4gPj4g PiAtLQ0KPj4gPj4gPiBOYWRhdiBTaGF0eg0KPj4gPj4gPiBUYWlsb3IgQnJhbmRzIHwgQ1RPDQo+ PiA+Pg0KPj4gPg0KPj4gPg0KPj4gPiAtLQ0KPj4gPiBOYWRhdiBTaGF0eg0KPj4gPiBUYWlsb3Ig QnJhbmRzIHwgQ1RPDQo+Pg0KPiANCj4gDQo+IC0tIA0KPiBOYWRhdiBTaGF0eg0KPiBUYWlsb3Ig QnJhbmRzIHwgQ1RPDQo=