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 1utx1o-00Gu7p-Hq for pgpool-hackers@arkaria.postgresql.org; Wed, 03 Sep 2025 23:36:37 +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 1utx1n-00C9a4-PV for pgpool-hackers@arkaria.postgresql.org; Wed, 03 Sep 2025 23:36:36 +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.94.2) (envelope-from ) id 1utx1n-00C9Zv-Ee for pgpool-hackers@lists.postgresql.org; Wed, 03 Sep 2025 23:36:36 +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 1utx1j-000Qwk-2f for pgpool-hackers@lists.postgresql.org; Wed, 03 Sep 2025 23:36:35 +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=SJMS6Y4uTQdSBMRdc79NlIGJFX5nai9xobp1QrK0M5s=; b=UMCczQLPKU5loV9Em28h5zxwqg 8w46QQb7vllWplnNzXMglgmRQQ/jDPqcxfuduWXRUsHNmxTOqnbjRBKLVaZR8AptLS3ajgzX0cX4b Okw8tRzKTkooNp3IhEDeQxdEcKD6eOr+g51BufMbPpb6V1oG1M/Tki1bRbHUZRY9DVMLdMBEX1Kll UlAEZeFVXtFX7sSzqVe6B2YGpFSUaA+zW26NHCcb8rdxKIpiNUUaxNu6ecMhkM81FTipjE4rjOERX P5Be+RsdQhlNC8uDHOSC33J7CezoOzD1wa5MCLmyRTYVh2rpAFo7ZvXEf0Rmu9u4eXKx7TqSyo19t Y0NHNTuA==; Received: from [2409:11:4120:300:651a:91c7:9439:de4] (helo=localhost) by meldrar.postgresql.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.96) (envelope-from ) id 1utx1c-0015Y1-1s; Wed, 03 Sep 2025 23:36:27 +0000 Date: Thu, 04 Sep 2025 08:36:15 +0900 (JST) Message-Id: <20250904.083615.1569744760401897215.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: <20250902.074118.343005423574242823.ishii@postgresql.org> X-Mailer: Mew version 6.8 on Emacs 26.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:651a:91c7:9439:de4 (failed) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk SGksDQoNCj4gSGksDQo+IA0KPiBBbGwgZ29vZC4NCj4gDQo+IFRoZSB1c3VhbCB3YXkgdGhlIFBn cG9vbCBhY2Nlc3NlcyB0aGUgbGFnIHBhcmFtcyBpcyB0aHJvdWdoIHRoZSByZWxldmFudA0KPiB0 YWJsZXMgaW4gdGhlIERCLiBmb3IgYXVyb3JhIHRoYXQgaXNuJ3QgYXZhaWxhYmxlLg0KPiBUaGUg bnVtYmVycyBhcmUgYXZhaWxhYmxlIGRpcmVjdGx5IGZyb20gQVdTIEFQSSBjYWxscyB0aG8uIFRo aXMgc29sdXRpb24NCj4gd2lsbCB3b3JrIHdpdGggQXVyb3JhIGJ5IGNpcmN1bXZlbnRpbmcgdGhp cyBpc3N1ZS4NCj4gDQo+IFdoYXQgaSBtZW50aW9uZWQgYXMgYSBjb25jZXJuIGlzIHRoYXQgc2lu Y2UgdGhlIGNvbW1hbmQgZG9lc24ndCBjdXJyZW50bHkNCj4gYWNjZXB0IHRoZSBhY3R1YWwgREIg aW5zdGFuY2UgbGlzdCAocHJpbWFyeS9yZXBsaWNhcykgYW5kIHRoZWlyIG9yZGVyIGl0DQo+IGNh bid0IGd1YXJhbnRlZSBpdCdsbCByZXR1cm4gdGhlIGxhZyB2YWx1ZXMgaW4gdGhlIGV4cGVjdGVk IG9yZGVyLg0KPiANCj4gRXhjZXB0IHRoZSBwcmltYXJ5IGJlaW5nIHRoZSBmaXJzdCwgaG93IHdp bGwgdGhlIHJ1bm5pbmcgY29tbWFuZCBrbm93IHRoZQ0KPiBvcmRlciBpbiB3aGljaCBwZ3Bvb2wg aGFzIGxvYWRlZCB0aGUgcmVwbGljYXMgaW50byBpdCdzDQo+IG1lbW9yeS9jb25maWd1cmF0aW9u Pw0KPiANCj4gSG9wZSB0aGlzIG1ha2VzIG1vcmUgc2Vuc2UgLSBpZiBub3QgbGV0IG1lIGtub3cg YW5kIGknbGwgcHJvdmlkZSBzb21lDQo+IGV4YW1wbGVzLg0KDQpZZXMsIGV4YW1wbGVzIHdvdWxk IGJlIGhlbHBmdWwuDQoNCkJlc3QgcmVnYXJkcywNCi0tDQpUYXRzdW8gSXNoaWkNClNSQSBPU1Mg Sy5LLg0KRW5nbGlzaDogaHR0cDovL3d3dy5zcmFvc3MuY28uanAvaW5kZXhfZW4vDQpKYXBhbmVz ZTpodHRwOi8vd3d3LnNyYW9zcy5jby5qcA0KDQo+IFRoYW5rcywNCj4gDQo+IE9uIFR1ZSwgU2Vw IDIsIDIwMjUgYXQgMTo0MeKAr0FNIFRhdHN1byBJc2hpaSA8aXNoaWlAcG9zdGdyZXNxbC5vcmc+ IHdyb3RlOg0KPiANCj4+IEhpIE5hZGF2LA0KPj4NCj4+IFNvcnJ5IGZvciBsYXRlIHJlcGx5Lg0K Pj4NCj4+ID4+IEkgaGF2ZW7igJl0IHRyaWVkIGl0IHlldCBidXQgdGhlIHdob2xlIHByZW1pc2Ug b2YgaGF2aW5nIGl0IHJ1biBhIGNvbW1hbmQNCj4+IGlzDQo+PiA+PiB0aGF0IGl04oCZcyBub3Qg ZGVwZW5kZW50IG9uIHRoZSBzcGVjaWZpYyBEQi4gQXMgeW91IG1lbnRpb25lZCBlYXJsaWVyLg0K Pj4gPj4NCj4+ID4+IFRoZSBpc3N1ZSBibG9ja2luZyB0aGUgcmVndWxhciBsYWcgZXh0cmFjdGlv biBmcm9tIGF1cm9yYSBpcyB0aGF0IGl0DQo+PiA+PiBkb2VzbuKAmXQgdXBkYXRlIHRoZSB0YWJs ZXMgaW4gdGhlIERCLiBJdCBkb2VzIGhhdmUgYSBDbG91ZFdhdGNoIEFQSSB0bw0KPj4gZ2V0DQo+ PiA+PiB0aGUgbnVtYmVycyB0aG8uDQo+Pg0KPj4gSSBhbSBub3QgZmFtaWxpYXIgd2l0aCBDbG91 ZFdhdGNoIEFQSSBhbmQgYW0gbm90IHN1cmUgSSBmdWxseQ0KPj4gdW5kZXJzdGFuZCB5b3UgaXNz dWUuIFdoYXQgaXMgeW91ciBpc3N1ZSB3aXRoIENsb3VkV2F0Y2ggQVBJPyAgSXMgaXQgYQ0KPj4g dGVjaG5pY2FsIHByb2JsZW0sIG9yIHNvbWUgY29zdCBpc3N1ZSAoSSBndWVzcyBDbG91ZFdhdGNo IGlzIGEgcGFpZA0KPj4gc2VydmljZSk/DQo+Pg0KPj4gPj4gT3JkZXJpbmcgaGVyZSBjb3VsZCBn ZXQgdHJpY2t5IHNpbmNlIHdlIGNvdXBsZSB0aGUgY29tbWFuZCB3aXRoIHRoZQ0KPj4gPj4gaW5z dGFuY2Ugb3JkZXIuDQo+PiA+Pg0KPj4gPj4gTWF5YmUgd2UgY2FuIGV4cGFuZCB0aGUgY29tbWFu ZCB0byByZWNlaXZlIHNvbWUgYXJndW1lbnRzIGFzIHRvIGluc3RhbmNlDQo+PiA+PiBvcmRlci4N Cj4+DQo+PiBDYW4geW91IGVsYWJvcmF0ZSB3aGF0ICJvcmRlcmluZyIgaXM/DQo+Pg0KPj4gQmVz dCByZWdhcmRzLA0KPj4gLS0NCj4+IFRhdHN1byBJc2hpaQ0KPj4gU1JBIE9TUyBLLksuDQo+PiBF bmdsaXNoOiBodHRwOi8vd3d3LnNyYW9zcy5jby5qcC9pbmRleF9lbi8NCj4+IEphcGFuZXNlOmh0 dHA6Ly93d3cuc3Jhb3NzLmNvLmpwDQo+Pg0KPj4gPiBIaSBUYXRzdW8sDQo+PiA+DQo+PiA+IEkg ZG9uJ3Qgd2FudCB0byBydXNoIGF0IGFsbCAtIGRpZCB5b3UgZ2V0IGEgY2hhbmNlIHRvIGxvb2sg YXQgd2hhdCBJDQo+PiBzZW50Pw0KPj4gPiBDYW4gSSBzaGFyZSBtb3JlIHJlbGV2YW50IGluZm9y bWF0aW9uIHdpdGggeW91Pw0KPj4gPg0KPj4gPiBXaGF0IGRvIHlvdSB0aGluaz8NCj4+ID4NCj4+ ID4gT24gVHVlLCBBdWcgMjYsIDIwMjUgYXQgOTo1NOKAr0FNIE5hZGF2IFNoYXR6IDxuYWRhdkB0 YWlsb3JicmFuZHMuY29tPg0KPj4gd3JvdGU6DQo+PiA+DQo+PiA+PiBIaSBUYXRzdW8sDQo+PiA+ Pg0KPj4gPj4gSSBoYXZlbuKAmXQgdHJpZWQgaXQgeWV0IGJ1dCB0aGUgd2hvbGUgcHJlbWlzZSBv ZiBoYXZpbmcgaXQgcnVuIGEgY29tbWFuZA0KPj4gaXMNCj4+ID4+IHRoYXQgaXTigJlzIG5vdCBk ZXBlbmRlbnQgb24gdGhlIHNwZWNpZmljIERCLiBBcyB5b3UgbWVudGlvbmVkIGVhcmxpZXIuDQo+ PiA+Pg0KPj4gPj4gVGhlIGlzc3VlIGJsb2NraW5nIHRoZSByZWd1bGFyIGxhZyBleHRyYWN0aW9u IGZyb20gYXVyb3JhIGlzIHRoYXQgaXQNCj4+ID4+IGRvZXNu4oCZdCB1cGRhdGUgdGhlIHRhYmxl cyBpbiB0aGUgREIuIEl0IGRvZXMgaGF2ZSBhIENsb3VkV2F0Y2ggQVBJIHRvDQo+PiBnZXQNCj4+ ID4+IHRoZSBudW1iZXJzIHRoby4NCj4+ID4+DQo+PiA+PiBZb3UgY2FuIHNlZSB0aGUgbWV0cmlj IEF1cm9yYVJlcGxpY2FMYWcgdW5kZXINCj4+ID4+DQo+PiA+Pg0KPj4gaHR0cHM6Ly9kb2NzLmF3 cy5hbWF6b24uY29tL0FtYXpvblJEUy9sYXRlc3QvQXVyb3JhVXNlckd1aWRlL21ldHJpY3MtcmVm ZXJlbmNlLmh0bWwNCj4+ID4+DQo+PiA+PiBTbyBpZiB3ZSBoYXZlIGEgc2ltcGxlIGNvbW1hbmQg dG8gZWl0aGVyIGdldCBpdCBvciBoYXZlIHNvbWV0aGluZyBlbHNlDQo+PiA+PiB1cGRhdGUgYSBm aWxlIHdpdGggdGhlIG51bWJlcnMgYmFzZWQgb24gaXQgd2XigJlsbCBiZSBmaW5lLg0KPj4gPj4N Cj4+ID4+IE9yZGVyaW5nIGhlcmUgY291bGQgZ2V0IHRyaWNreSBzaW5jZSB3ZSBjb3VwbGUgdGhl IGNvbW1hbmQgd2l0aCB0aGUNCj4+ID4+IGluc3RhbmNlIG9yZGVyLg0KPj4gPj4NCj4+ID4+IE1h eWJlIHdlIGNhbiBleHBhbmQgdGhlIGNvbW1hbmQgdG8gcmVjZWl2ZSBzb21lIGFyZ3VtZW50cyBh cyB0byBpbnN0YW5jZQ0KPj4gPj4gb3JkZXIuDQo+PiA+Pg0KPj4gPj4gV2hhdCBkbyB5b3UgdGhp bms/DQo+PiA+Pg0KPj4gPj4NCj4+ID4+IE5hZGF2IFNoYXR6DQo+PiA+PiBUYWlsb3IgQnJhbmRz IHwgQ1RPDQo+PiA+Pg0KPj4gPj4NCj4+ID4+IE9uIFR1ZSwgQXVnIDI2LCAyMDI1IGF0IDQ6NDLi gK9BTSBUYXRzdW8gSXNoaWkgPGlzaGlpQHBvc3RncmVzcWwub3JnPg0KPj4gd3JvdGU6DQo+PiA+ Pg0KPj4gPj4+IEhpIE5hZGF2LA0KPj4gPj4+DQo+PiA+Pj4gVGhhbmsgeW91IGZvciB1cGRhdGlu ZyB0aGUgcGF0Y2guIEkgd2lsbCBsb29rIGludG8gdGhhdC4NCj4+ID4+Pg0KPj4gPj4+IEkgaGF2 ZSBhIHF1ZXN0aW9uLiBIYXZlIHlvdSBhY3R1YWxseSB0cmllZCB0aGUgcGF0Y2ggd2l0aCBBV1Mg QXVyb3JhPw0KPj4gPj4+IEkgYW0gd29uZGVyaW5nIGhvdyBwYXRjaGVkIHBncG9vbCB3b3JrcyB3 aXRoIEF1cm9yYS4gSSBhbSBhc2tpbmcNCj4+ID4+PiBiZWNhdXNlIGluIHRoZSBkb2MgIjguNS4g QXVyb3JhIENvbmZpZ3VyYXRpb24gRXhhbXBsZSI6DQo+PiA+Pj4NCj4+ID4+PiAgU2V0IHNyX2No ZWNrX3BlcmlvZCB0byAwIHRvIGRpc2FibGUgc3RyZWFtaW5nIHJlcGxpY2F0aW9uIGRlbGF5DQo+ PiA+Pj4gIGNoZWNraW5nLiBUaGlzIGlzIGJlY2F1c2UgQXVyb3JhIGRvZXMgbm90IHByb3ZpZGUg bmVjZXNzYXJ5IGZ1bmN0aW9ucw0KPj4gPj4+ICB0byBjaGVjayB0aGUgcmVwbGljYXRpb24gZGVs YXkuDQo+PiA+Pj4NCj4+ID4+PiAgc3JfY2hlY2tfcGVyaW9kID0gMA0KPj4gPj4+DQo+PiA+Pj4g U28gc3RyZWFtaW5nIHJlcGxpY2F0aW9uIGNoZWNraW5nIGlzIGRpc2FibGVkLCBhbmQgaXQgbWVh bnMgdGhhdCB5b3VyDQo+PiA+Pj4gcGF0Y2ggaXMgYWxzbyBlZmZlY3RpdmVseSBkaXNhYmxlZCB0 b28uDQo+PiA+Pj4NCj4+ID4+PiBCZXN0IHJlZ2FyZHMsDQo+PiA+Pj4gLS0NCj4+ID4+PiBUYXRz dW8gSXNoaWkNCj4+ID4+PiBTUkEgT1NTIEsuSy4NCj4+ID4+PiBFbmdsaXNoOiBodHRwOi8vd3d3 LnNyYW9zcy5jby5qcC9pbmRleF9lbi8NCj4+ID4+PiBKYXBhbmVzZTpodHRwOi8vd3d3LnNyYW9z cy5jby5qcA0KPj4gPj4+DQo+PiA+Pj4gPiBIaSBUYXRzdW8sDQo+PiA+Pj4gPg0KPj4gPj4+ID4g VGhhbmsgeW91IGZvciB0aGUgbm90ZXMgLSBwbGVhc2UgZmluZCBhdHRhY2hlZCBhbiB1cGRhdGVk IHZlcnNpb24uDQo+PiA+Pj4gPg0KPj4gPj4+ID4gV2hhdCBkbyB5b3UgdGhpbms/DQo+PiA+Pj4g Pg0KPj4gPj4+ID4gVGhhbmtzLA0KPj4gPj4+ID4NCj4+ID4+PiA+IE9uIE1vbiwgQXVnIDI1LCAy MDI1IGF0IDU6MTjigK9BTSBUYXRzdW8gSXNoaWkgPGlzaGlpQHBvc3RncmVzcWwub3JnPg0KPj4g Pj4+IHdyb3RlOg0KPj4gPj4+ID4NCj4+ID4+PiA+PiBIaSBOYWRhdiwNCj4+ID4+PiA+Pg0KPj4g Pj4+ID4+IFRoYW5rIHlvdSBmb3IgdGhlIHBhdGNoIQ0KPj4gPj4+ID4+DQo+PiA+Pj4gPj4gSSBo YXZlIG9uZSBxdWVzdGlvbi4gSG93IGRvIHlvdSBwcm92aWRlIGEgcGFzc3dvcmQNCj4+IChzcl9j aGVja19wYXNzd29yZCkNCj4+ID4+PiA+PiB3aGlsZSBleGVjdXRpbmcgcmVwbGljYXRpb25fZGVs YXlfc291cmNlX2NtZCBhcyBzcl9jaGVja191c2VyPyBJbiBteQ0KPj4gPj4+ID4+IHVuZGVyc3Rh bmRpbmcgcmVwbGljYXRpb25fZGVsYXlfc291cmNlX2NtZCBpcyBleGVjdXRlZCB0aHJvdWdoIHN1 DQo+PiA+Pj4gPj4gY29tbWFuZCBpbiB5b3VyIHBhdGNoLiBJbiB0aGlzIGNhc2Ugc3UgY29tbWFu ZCB0cmllcyB0byByZWFkIHRoZQ0KPj4gPj4+ID4+IHBhc3N3b3JkIGZyb20gdGVybWluYWwuIEkg ZG9uJ3Qgc2VlIHN1Y2ggYSBjb2RlIGluIHRoZSBwYXRjaC4NCj4+ID4+PiA+Pg0KPj4gPj4+ID4+ IEJUVywgSSBzdGFydCB0byB0aGluayB0aGF0IGV4ZWN1dGluZyByZXBsaWNhdGlvbl9kZWxheV9z b3VyY2VfY21kIGFzDQo+PiA+Pj4gPj4gc3JfY2hlY2tfdXNlciBtaWdodCBub3QgYmUgYSBnb29k IGlkZWEuIHNyX2NoZWNrX3VzZXIgaXMgYSBkYXRhYmFzZQ0KPj4gPj4+ID4+IHVzZXIsIG5vdCBP UyB1c2VyLiBJbiBQb3N0Z3JlU1FMIHRoZXkgYXJlIG5vdCBuZWNlc3NhcmlseSB0aGUNCj4+ID4+ PiA+PiBzYW1lLiBBbHNvIGRvaW5nIHN1IGluIHBncG9vbCBwcm9jZXNzIG5lZWRzIHRvIGJlIHZl cnkgY2FyZWZ1bGx5IHRvDQo+PiA+Pj4gPj4gYXZvaWQgdnVsbmVyYWJpbGl0eS4gUHJvYmFibHkg d2UganVzdCBleGVjdXRlIGl0IGFzIHBncG9vbCBPUyB1c2VyPw0KPj4gPj4+ID4+DQo+PiA+Pj4g Pj4gTGFzdGx5IHdoZW4gSSBhcHBseSB0aGUgcGF0Y2hlcyB1c2luZyBnaXQgYXBwbHksIHRoZXJl IGFyZSBzb21lDQo+PiA+Pj4gPj4gdHJhaWxpbmcgc3BhY2UgZXJyb3JzLg0KPj4gPj4+ID4+DQo+ PiA+Pj4gPj4gJCBnaXQgYXBwbHkgfi9leHRlcm5hbC1sYWctZmVhdHVyZS1pbXBsZW1lbnRhdGlv bi5wYXRjaA0KPj4gPj4+ID4+IC9ob21lL3QtaXNoaWkvZXh0ZXJuYWwtbGFnLWZlYXR1cmUtaW1w bGVtZW50YXRpb24ucGF0Y2g6MzE0Og0KPj4gdHJhaWxpbmcNCj4+ID4+PiA+PiB3aGl0ZXNwYWNl Lg0KPj4gPj4+ID4+DQo+PiA+Pj4gPj4gL2hvbWUvdC1pc2hpaS9leHRlcm5hbC1sYWctZmVhdHVy ZS1pbXBsZW1lbnRhdGlvbi5wYXRjaDozMTc6DQo+PiB0cmFpbGluZw0KPj4gPj4+ID4+IHdoaXRl c3BhY2UuDQo+PiA+Pj4gPj4NCj4+ID4+PiA+PiAvaG9tZS90LWlzaGlpL2V4dGVybmFsLWxhZy1m ZWF0dXJlLWltcGxlbWVudGF0aW9uLnBhdGNoOjMxODoNCj4+IHRyYWlsaW5nDQo+PiA+Pj4gPj4g d2hpdGVzcGFjZS4NCj4+ID4+PiA+PiAgICAgICAgICAgICAgICAgICAgICAgICBjbWRfbGVuID0g c3RybGVuKGVzY2FwZWRfY21kKSArDQo+PiA+Pj4gPj4gL2hvbWUvdC1pc2hpaS9leHRlcm5hbC1s YWctZmVhdHVyZS1pbXBsZW1lbnRhdGlvbi5wYXRjaDozMjA6DQo+PiB0cmFpbGluZw0KPj4gPj4+ ID4+IHdoaXRlc3BhY2UuDQo+PiA+Pj4gPj4NCj4+ID4+PiA+PiAvaG9tZS90LWlzaGlpL2V4dGVy bmFsLWxhZy1mZWF0dXJlLWltcGxlbWVudGF0aW9uLnBhdGNoOjMyMjoNCj4+IHRyYWlsaW5nDQo+ PiA+Pj4gPj4gd2hpdGVzcGFjZS4NCj4+ID4+PiA+PiAgICAgICAgICAgICAgICAgICAgICAgICBz bnByaW50ZihmdWxsX2NvbW1hbmQsIGNtZF9sZW4sICJzdSAtICVzIC1jDQo+PiA+Pj4gJyVzJyIs DQo+PiA+Pj4gPj4gd2FybmluZzogc3F1ZWxjaGVkIDQgd2hpdGVzcGFjZSBlcnJvcnMNCj4+ID4+ PiA+PiB3YXJuaW5nOiA5IGxpbmVzIGFkZCB3aGl0ZXNwYWNlIGVycm9ycy4NCj4+ID4+PiA+Pg0K Pj4gPj4+ID4+ICQgZ2l0IGFwcGx5IH4vZXh0ZXJuYWwtbGFnLWZlYXR1cmUtdGVzdHMucGF0Y2gN Cj4+ID4+PiA+PiAvaG9tZS90LWlzaGlpL2V4dGVybmFsLWxhZy1mZWF0dXJlLXRlc3RzLnBhdGNo Ojg3OiB0cmFpbGluZw0KPj4gd2hpdGVzcGFjZS4NCj4+ID4+PiA+PiAtIHRlc3RfcGFyc2luZy5z aDogVW5pdCB0ZXN0IGZvciBwYXJzaW5nIGxvZ2ljDQo+PiA+Pj4gPj4gL2hvbWUvdC1pc2hpaS9l eHRlcm5hbC1sYWctZmVhdHVyZS10ZXN0cy5wYXRjaDo0NDA6IHRyYWlsaW5nDQo+PiA+Pj4gd2hp dGVzcGFjZS4NCj4+ID4+PiA+PiAjIFRlc3QgMjogRmxvYXQgdmFsdWVzDQo+PiA+Pj4gPj4gd2Fy bmluZzogMiBsaW5lcyBhZGQgd2hpdGVzcGFjZSBlcnJvcnMuDQo+PiA+Pj4gPj4NCj4+ID4+PiA+ PiBBbHNvIEkgaGF2ZSBzb21lIGNvbXBpbGF0aW9uIGVycm9ycyBhZnRlciBwYXRjaGluZyB0aGUg c291cmNlDQo+PiA+Pj4gPj4gY29kZS4gU2VlIGF0dGFjaGVkIGNvbXBpbGF0aW9uIGxvZy4NCj4+ ID4+PiA+Pg0KPj4gPj4+ID4+IEJlc3QgcmVnYXJkcywNCj4+ID4+PiA+PiAtLQ0KPj4gPj4+ID4+ IFRhdHN1byBJc2hpaQ0KPj4gPj4+ID4+IFNSQSBPU1MgSy5LLg0KPj4gPj4+ID4+IEVuZ2xpc2g6 IGh0dHA6Ly93d3cuc3Jhb3NzLmNvLmpwL2luZGV4X2VuLw0KPj4gPj4+ID4+IEphcGFuZXNlOmh0 dHA6Ly93d3cuc3Jhb3NzLmNvLmpwDQo+PiA+Pj4gPj4NCj4+ID4+PiA+DQo+PiA+Pj4gPg0KPj4g Pj4+ID4gLS0NCj4+ID4+PiA+IE5hZGF2IFNoYXR6DQo+PiA+Pj4gPiBUYWlsb3IgQnJhbmRzIHwg Q1RPDQo+PiA+Pj4NCj4+ID4+DQo+PiA+DQo+PiA+IC0tDQo+PiA+IE5hZGF2IFNoYXR6DQo+PiA+ IFRhaWxvciBCcmFuZHMgfCBDVE8NCj4+DQo+IA0KPiANCj4gLS0gDQo+IE5hZGF2IFNoYXR6DQo+ IFRhaWxvciBCcmFuZHMgfCBDVE8NCg==