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 1wddwE-004FMN-1M for pgpool-hackers@arkaria.postgresql.org; Sun, 28 Jun 2026 01:03:58 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wddwD-00FwF7-1D for pgpool-hackers@arkaria.postgresql.org; Sun, 28 Jun 2026 01:03:57 +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 1wddwD-00FwEz-0R for pgpool-hackers@lists.postgresql.org; Sun, 28 Jun 2026 01:03:57 +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.98.2) (envelope-from ) id 1wddwA-00000000Z1E-1YCj for pgpool-hackers@lists.postgresql.org; Sun, 28 Jun 2026 01:03:56 +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=4KRSjV7uKpTkNEO3n8RrF/oC1V+3pmZQmcf11LmjMQ8=; b=CRHS/jSHSXuv4yUeFTbb7Krvay YD1UeZiqRBenEJAHSqm1G8ucswO8JYGCgBofh0HnH4Hp4EHgmQULqxvC0Mk34WUqE1tZ/2T4cRA+L VQ+tixdtboBdUALtCrqzwDGjA4OUlUE2f7A5oSh/1v+LsoiGLMoRegQYjkmIJGlMKbq/aJh0Mak3a pHtnJe+brOSOQ/CMB83GH56fvOxQc4f45FKuBE5JMI9qYbeq3hHLk8IrSxopeMyeedcLl9KKhHSLz 18gqK3LsGML/OW1dASRB0xBNSh24Y2a0gXUWiUuiz4/VBZa4HmtWdXiBlmrOrBw/ZGRP2QDpSmedo /I+ZF6YA==; Received: from [2409:11:4120:300:4cca:7ec:43dc:a48b] (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 1wddw7-0076wS-1h; Sun, 28 Jun 2026 01:03:54 +0000 Date: Sun, 28 Jun 2026 10:03:41 +0900 (JST) Message-Id: <20260628.100341.1340554543853410923.ishii@postgresql.org> To: nadav@tailorbrands.com Cc: pgpool-hackers@lists.postgresql.org Subject: Re: Proposal: Recent mutated table tracking in memory From: Tatsuo Ishii In-Reply-To: References: <20260627.105108.665094997299401916.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:4cca:7ec:43dc:a48b (failed) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk SGkgTmFkYXYsDQoNClRoYW5rcyBmb3IgdGhlIHVwZGF0ZWQgcGF0Y2guDQoNCkkgbWFkZSBzdWJ0 bGUgY2hhbmdlcyB0byB0aGUgcGF0Y2ggKGFuZCBhbG9uZyB3aXRoIEphcGFuZXNlIGRvY3MpIGFu ZA0KcHVzaGVkIGl0Lg0KDQotIEZpeCBpbmRlbnRhdGlvbiBpbiBsb2FkYmFsYW5jZS5zZ21sLg0K DQotIEFkZCBhIGxpbWl0YXRpb24gb2YgdGhlIGZlYXR1cmUgdG8gdGhlIGRvYyB0byBhdm9pZCBj b25mdXNpb24gZnJvbQ0KICB1c2VycyB3aG8gd2FudCB0byB1c2UgdGhlIGZlYXR1cmUgYW5kDQog IGRtbF9hZGFwdGl2ZV9vYmplY3RfcmVsYXRpb25zaGlwX2xpc3QgdG9nZXRoZXIuDQoNCiAgICAg IDxwYXJhPg0KICAgICAgIE5vdGUsIGhvd2V2ZXIsIHlvdSBjYW5ub3QNCiAgICAgICB1c2UgPHhy ZWYgbGlua2VuZD0iZ3VjLWRtbC1hZGFwdGl2ZS1vYmplY3QtcmVsYXRpb25zaGlwLWxpc3QiPiB0 byB0cmFjaw0KICAgICAgIGRlcGVuZGVuY3kgYW1vbmcgdGFibGUgYW5kIG90aGVyIG9iamVjdHMN CiAgICAgICBpZiA8eHJlZiBsaW5rZW5kPSJndWMtZGlzYWJsZS1sb2FkLWJhbGFuY2Utb24td3Jp dGUiPiBpcyBzZXQNCiAgICAgICB0byA8dmFybmFtZT5kbWxfYWRhcHRpdmVfZ2xvYmFsPC92YXJu YW1lPi4NCiAgICAgPC9wYXJhPg0KDQotIE1vZGlmeSBoYW5kbGVfcXVlcnlfY29udGV4dCgpIHRv IHVzZSBmb3JlYWNoX29pZCwgcmF0aGVyIHRoYW4gcGxhaW4NCiAgZm9yZWFjaCB0byBzaW1wbGlm eSB0aGUgY29kZSBhIGxpdHRsZSBiaXQuDQoNClRoYW5rIHlvdSBzbyBtdWNoIHRvIGFkZCB0aGUg ZXhjZWxsZW50IGZlYXR1cmUgdG8gUGdwb29sLUlJIQ0KLS0NClRhdHN1byBJc2hpaQ0KU1JBIE9T UyBLLksuDQpFbmdsaXNoOiBodHRwOi8vd3d3LnNyYW9zcy5jby5qcC9pbmRleF9lbi8NCkphcGFu ZXNlOmh0dHA6Ly93d3cuc3Jhb3NzLmNvLmpwDQoNCj4gSGkgVGF0c3VvLA0KPiANCj4gVGhhbmtz IGZvciB0aGUgcmV2aWV3LiBBbGwgYWRkcmVzc2VkIGluIHY3Og0KPiANCj4gMS4gTWVzc2FnZSBm b3JtYXQgc3RyaW5ncyBzcGxpdCBhY3Jvc3MgbGluZXMNCj4gICAgUmVzdG9yZWQgdG8gc2luZ2xl LWxpbmUgc3RyaW5ncyBpbiBpc19zZWxlY3Rfb2JqZWN0X2luX3RlbXBfd3JpdGVfbGlzdCgpDQo+ ICAgIGFuZCBldmVyeSBvdGhlciBwbGFjZSBpbiB0aGUgcGF0Y2ggKHBvb2xfcXVlcnlfY29udGV4 dC5jIGFuZA0KPiAgICBwb29sX3RyYWNrX3RhYmxlX211dGF0aW9uLmMpLiBMb25nIGxpbmVzIGFy ZSBsZWZ0IGxvbmc7IG9ubHkgdGhlDQo+ICAgIG1lc3NhZ2Ugc3RyaW5ncyB3ZXJlIHJlam9pbmVk Lg0KPiANCj4gMi4gVGhlIGxhcmdlICJlbHNlIGlmIiBicmFuY2ggaW4gd2hlcmVfdG9fc2VuZF9t YWluX3JlcGxpY2EoKQ0KPiAgICBNb3ZlZCBpbnRvIGEgbmV3IHN0YXRpYyBzdWJyb3V0aW5lLA0K PiAgICB3aGVyZV90b19zZW5kX2RtbF9hZGFwdGl2ZV9nbG9iYWwoKSwgc28gdGhlIHJvdXRpbmcg ZnVuY3Rpb24gc3RheXMNCj4gICAgcmVhZGFibGUuIFRoZSBjYWxsIHNpdGUgaXMgbm93IGp1c3Q6 DQo+IA0KPiAgICAgIGVsc2UgaWYgKHBvb2xfY29uZmlnLT5kaXNhYmxlX2xvYWRfYmFsYW5jZV9v bl93cml0ZSA9PQ0KPiAgICAgICAgICAgICAgIERMQk9XX0RNTF9BREFQVElWRV9HTE9CQUwpDQo+ ICAgICAgew0KPiAgICAgICAgICB3aGVyZV90b19zZW5kX2RtbF9hZGFwdGl2ZV9nbG9iYWwocXVl cnlfY29udGV4dCwgcXVlcnksIG5vZGUsDQo+IGRlc3QpOw0KPiAgICAgIH0NCj4gDQo+IDMuIENv cHlyaWdodCB5ZWFyIG9uIHRoZSB0d28gbmV3IGZpbGVzDQo+ICAgIENoYW5nZWQgdG8gIkNvcHly aWdodCAoYykgMjAyNiIgaW4gcG9vbF90cmFja190YWJsZV9tdXRhdGlvbi5jIGFuZA0KPiAgICBw b29sX3RyYWNrX3RhYmxlX211dGF0aW9uLmguDQo+IA0KPiA0LiBGTlYtMWEgY29tbWVudA0KPiAg ICBFeHBhbmRlZCB3aXRoIGEgc2hvcnQgZXhwbGFuYXRpb24gb2Ygd2hhdCBGTlYtMWEgaXMgKG9m ZnNldCBiYXNpcyArDQo+ICAgIHBlci1ieXRlIFhPUi9tdWx0aXBseSBieSB0aGUgRk5WIHByaW1l LCBub24tY3J5cHRvZ3JhcGhpYywgZ29vZA0KPiAgICBkaXNwZXJzaW9uIGZvciBzaG9ydCBrZXlz KSBhbmQgYSByZWZlcmVuY2UgbGluay4NCj4gDQo+IDUuIGdldF9jdXJyZW50X3RpbWUoKSB3cmFw cGVyDQo+ICAgIEdvb2QgcG9pbnQgLS0gdGhlcmUgd2FzIG5vIHJlYXNvbiBmb3IgaXQuIFJlbW92 ZWQgdGhlIHdyYXBwZXIgYW5kIGNhbGwNCj4gICAgZ2V0dGltZW9mZGF5KCkgZGlyZWN0bHkgYXQg dGhlIGNhbGwgc2l0ZXMuDQo+IA0KPiBBdHRhY2hpbmcgdGhlIHVwZGF0ZWQgc2luZ2xlIHBhdGNo Og0KPiANCj4gICB2Ny0wMDAxLUZlYXR1cmUtbG9hZC1iYWxhbmNpbmctY29udHJvbC1ieS10YWJs ZS10cmFja2luZy5wYXRjaA0KPiANCj4gQnVpbGRzIGNsZWFubHkgYW5kIHBhc3NlcyB0aGUgZG1s X2FkYXB0aXZlX2dsb2JhbCByb3V0aW5nIHRlc3RzIG9uIGENCj4gUEcxNiBzdHJlYW1pbmctcmVw bGljYXRpb24gY2x1c3Rlci4NCj4gDQo+IFRoYW5rcyENCj4gDQo+IE9uIFNhdCwgSnVuIDI3LCAy MDI2IGF0IDQ6NTHigK9BTSBUYXRzdW8gSXNoaWkgPGlzaGlpQHBvc3RncmVzcWwub3JnPiB3cm90 ZToNCj4gDQo+PiBIaSBOYWRhdiwNCj4+DQo+PiA+IEhpIFRhdHN1bywNCj4+ID4NCj4+ID4gU29y cnkgLS0gbXkgd29yZGluZyB3YXMgbWlzbGVhZGluZy4gTm8sIHVucGF0Y2hlZCBwZ3Bvb2wgZG9l cyBOT1QgaGF2ZQ0KPj4gPiB0aGlzIHByb2JsZW0sIGFuZCB5b3UncmUgcmlnaHQgdGhhdCB5b3Vy IHRlc3Qgc2hvd3Mgbm8gaGFuZyBvbiBtYXN0ZXIuDQo+PiA+IFRoZSBoYW5nIGlzIGVudGlyZWx5 IGluIHRoZSBuZXcgY29kZSBteSBwYXRjaCBhZGRzLCBub3QgaW4gcGdwb29sDQo+PiA+IGl0c2Vs Zi4NCj4+ID4NCj4+ID4gVG8gYmUgcHJlY2lzZTogdGhlIG1hcmtpbmcgY29kZSB0aGF0IGh1bmcg aXMgdGhlIGRtbF9hZGFwdGl2ZV9nbG9iYWwNCj4+ID4gYnJhbmNoIGluIGhhbmRsZV9xdWVyeV9j b250ZXh0KCkgKENvbW1hbmRDb21wbGV0ZS5jKSB0aGF0IG15IHBhdGNoDQo+PiA+IGludHJvZHVj ZXMuIEl0IGlzIGdhdGVkIG9uIGRpc2FibGVfbG9hZF9iYWxhbmNlX29uX3dyaXRlID0NCj4+ID4g ZG1sX2FkYXB0aXZlX2dsb2JhbCwgd2hpY2ggb25seSBleGlzdHMgd2l0aCB0aGUgcGF0Y2ggYXBw bGllZCwgc28gbWFzdGVyDQo+PiA+IG5ldmVyIHJ1bnMgaXQuDQo+PiA+DQo+PiA+IEl0IGFsc28g ZG9lc24ndCBmaXJlIGZvciB5b3VyIGV4YWN0IHNlcXVlbmNlLCBmb3IgdHdvIHJlYXNvbnM6DQo+ PiA+DQo+PiA+ICAgMS4gWW91IHJhbiBpdCBvbiBtYXN0ZXIsIHdoaWNoIGRvZXNuJ3QgY29udGFp biB0aGUgYnJhbmNoIGF0IGFsbC4NCj4+ID4gICAyLiBFdmVuIG9uIGEgcGF0Y2hlZCBidWlsZCwg eW91ciBzdGF0ZW1lbnRzIGFyZSBpbnNpZGUgYW4gZXhwbGljaXQNCj4+ID4gICAgICB0cmFuc2Fj dGlvbiAoQkVHSU4gLi4uIENPTU1JVCksIGFuZCB0aGF0IGJyYW5jaCBvbmx5IHJ1bnMgZm9yDQo+ PiA+ICAgICAgYXV0b2NvbW1pdCBzdGF0ZW1lbnRzICh0aGUgIiFpc19pbl90cmFuc2FjdGlvbiIg Y2FzZSkuDQo+PiA+DQo+PiA+IFdoYXQgYWN0dWFsbHkgaHVuZywgb24gYSBwYXRjaGVkIGJ1aWxk IHdpdGggZG1sX2FkYXB0aXZlX2dsb2JhbCBzZXQgaW4NCj4+ID4gc3RyZWFtaW5nIHJlcGxpY2F0 aW9uLCB3YXMgYSAqYmFyZSBhdXRvY29tbWl0KiBzdGF0ZW1lbnQgKG5vIHN1cnJvdW5kaW5nDQo+ PiA+IHRyYW5zYWN0aW9uKSB3aG9zZSB0YWJsZSBPSUQgY2Fubm90IGJlIHNlcnZlZCBmcm9tIHRo ZSByZWxjYWNoZSAtLSBmb3INCj4+ID4gZXhhbXBsZToNCj4+ID4NCj4+ID4gICBEUk9QIFRBQkxF IElGIEVYSVNUUyBub25fZXhpc3RlbnRfdGFibGU7ICAgICAtLSBubyBCRUdJTi9DT01NSVQNCj4+ ID4NCj4+ID4gQmVjYXVzZSB0aGUgbmFtZSBpcyB1bnJlc29sdmFibGUsIHBvb2xfdGFibGVfbmFt ZV90b19vaWQoKSBkb2VzIG5vdCBjYWNoZQ0KPj4gPiBpdCAobm9fY2FjaGVfaWZfemVybyksIHNv IGV2ZXJ5IGxvb2t1cCBpcyBhIHJlbGNhY2hlIG1pc3MuIFRoZSBtYXJraW5nDQo+PiA+IGJyYW5j aCBjYWxscyBwb29sX2V4dHJhY3RfdGFibGVfb2lkcygpIC0+IC4uLiAtPiBkb19xdWVyeSgpIHRv IHJlc29sdmUNCj4+ID4gdGhlIE9JRCwgYnV0IGhhbmRsZV9xdWVyeV9jb250ZXh0KCkgcnVucyBi ZWZvcmUgdGhlIHN0YXRlbWVudCdzDQo+PiA+IENvbW1hbmRDb21wbGV0ZSByZXNwb25zZSBoYXMg YmVlbiByZWFkIGZyb20gdGhlIGJhY2tlbmQsIHNvIGluamVjdGluZw0KPj4gPiB0aGF0IHF1ZXJ5 IGRlc3luY3MgdGhlIHByb3RvY29sIGFuZCB0aGUgc2Vzc2lvbiBibG9ja3MuIEJhY2t0cmFjZToN Cj4+ID4NCj4+ID4gICAjMiAgcG9vbF9yZWFkMiAgICAgICAgICAgICAgICAoYmxvY2tlZCBpbiBy ZWFkKCkpDQo+PiA+ICAgIzMgIGRvX3F1ZXJ5ICAgICAgICAgICAgICAgICAgIlNFTEVDVA0KPj4g PiBDT0FMRVNDRShwZ19jYXRhbG9nLnRvX3JlZ2NsYXNzKCcuLi4nKTo6b2lkLCAwKSINCj4+ID4g ICAjNCAgcG9vbF9zZWFyY2hfcmVsY2FjaGUgICAgICAocmVsY2FjaGUgbWlzcykNCj4+ID4gICAj NSAgcG9vbF90YWJsZV9uYW1lX3RvX29pZA0KPj4gPiAgICM2ICBwb29sX2V4dHJhY3RfdGFibGVf b2lkcyAgIHF1ZXJ5X2NhY2hlL3Bvb2xfbWVtcWNhY2hlLmMNCj4+ID4gICAjNyAgaGFuZGxlX3F1 ZXJ5X2NvbnRleHQgICAgICBwcm90b2NvbC9Db21tYW5kQ29tcGxldGUuYw0KPj4gPiAgKCFpc19p bl90cmFuc2FjdGlvbiBicmFuY2gpDQo+PiA+ICAgIzggIENvbW1hbmRDb21wbGV0ZQ0KPj4gPg0K Pj4gPiBUaGlzIGlzIHRoZSBzYW1lIGNsYXNzIG9mIGlzc3VlIGFzIHRoZSBvbmUgYmVoaW5kIHlv dXIgb3JpZ2luYWwgcmV2aWV3DQo+PiA+IGNvbW1lbnQ6IHJlc29sdmluZyBPSURzIGF0IENvbW1h bmRDb21wbGV0ZSB0aW1lIG1lYW5zIGRvaW5nIGJhY2tlbmQgSS9PDQo+PiA+IHdoaWxlIGEgcmVz cG9uc2UgaXMgaW4gZmxpZ2h0Lg0KPj4gPg0KPj4gPiB2Ni0wMDAxIGZpeGVzIGl0IGZvciBnb29k IGJ5IHJlc29sdmluZyB0aGUgd3JpdHRlbiB0YWJsZXMnIE9JRHMgKGFuZCB0aGUNCj4+ID4gZGF0 YWJhc2UgT0lEKSBhdCBETUwgKnJvdXRpbmcqIHRpbWUgLS0gd2hlbiB0aGUgY29ubmVjdGlvbiBp cyBpZGxlIGFuZA0KPj4gPiBkb19xdWVyeSBpcyBzYWZlLCB0aGUgc2FtZSBwb2ludCB0aGUgZmVh dHVyZSBhbHJlYWR5IHJlc29sdmVzIE9JRHMgZm9yDQo+PiA+IHRoZSBTRUxFQ1Qgc3RhbGVuZXNz IGNoZWNrLiBoYW5kbGVfcXVlcnlfY29udGV4dCgpIHRoZW4gb25seSBtYXJrcyB0aGUNCj4+ID4g YWxyZWFkeS1yZXNvbHZlZCBPSURzIGFuZCBkb2VzIG5vIGJhY2tlbmQgSS9PIGF0IGFsbCwgZm9y IGJvdGggdGhlDQo+PiA+IGF1dG9jb21taXQgYW5kIHRoZSBDT01NSVQgcGF0aHMuDQo+PiA+DQo+ PiA+IFZlcmlmaWVkIG9uIGEgUEcxNiBzdHJlYW1pbmctcmVwbGljYXRpb24gY2x1c3RlciB3aXRo DQo+PiBkbWxfYWRhcHRpdmVfZ2xvYmFsOg0KPj4gPiB0aGUgYmFyZSAiRFJPUCBUQUJMRSBJRiBF WElTVFMgbm9uX2V4aXN0ZW50X3RhYmxlOyIgYW5kIHlvdXINCj4+ID4gIkJFR0lOOyBEUk9QIFRB QkxFIElGIEVYSVNUUyAuLi47IENPTU1JVDsiIGJvdGggcmV0dXJuIHByb21wdGx5LCB0aGUNCj4+ ID4gZGVmZXJyZWQtY29uc3RyYWludCBDT01NSVQgZmFpbHVyZSBsZWF2ZXMgdGhlIHRhYmxlIHVu bWFya2VkIChyZWFkcyBrZWVwDQo+PiA+IGxvYWQtYmFsYW5jaW5nIHRvIHRoZSBzdGFuZGJ5KSwg YW5kIGEgc3VjY2Vzc2Z1bCBhdXRvY29tbWl0IG9yIENPTU1JVA0KPj4gPiB3cml0ZSBtYXJrcyB0 aGUgdGFibGUgYW5kIGZvcmNlcyByZWFkcyB0byB0aGUgcHJpbWFyeS4NCj4+DQo+PiBVbmRlcnN0 b29kLg0KPj4NCj4+ID4gU29ycnkgYWdhaW4gZm9yIHRoZSBjb25mdXNpbmcgZWFybGllciBwaHJh c2luZy4NCj4+DQo+PiBObyBwcm9ibGVtLiBUaGFuayB5b3UgZm9yIGRldGFpbGVkIGV4cGxhbmF0 aW9uIQ0KPj4NCj4+IFNvLCBteSByZXZpZXcgY29tbWVudHMgYXJlIGJlbG93LiBNb3N0bHkgY29z bWV0aWMgY29kaW5nIHN0eWxlDQo+PiBzdWdnZXN0aW9ucy4NCj4+DQo+PiBkaWZmIC0tZ2l0IGEv c3JjL2NvbnRleHQvcG9vbF9xdWVyeV9jb250ZXh0LmMNCj4+IGIvc3JjL2NvbnRleHQvcG9vbF9x dWVyeV9jb250ZXh0LmMNCj4+IGluZGV4IDczYmM2NDMzOC4uYTc3NTZlYzhiIDEwMDY0NA0KPj4g LS0tIGEvc3JjL2NvbnRleHQvcG9vbF9xdWVyeV9jb250ZXh0LmMNCj4+ICsrKyBiL3NyYy9jb250 ZXh0L3Bvb2xfcXVlcnlfY29udGV4dC5jDQo+PiBAQCAtMTg0OCwyMCArMTg0OSwyNiBAQCBpc19p bl9saXN0KGNoYXIgKm5hbWUsIExpc3QgKmxpc3QpDQo+PiAgc3RhdGljIGJvb2wNCj4+ICBpc19z ZWxlY3Rfb2JqZWN0X2luX3RlbXBfd3JpdGVfbGlzdChOb2RlICpub2RlLCB2b2lkICpjb250ZXh0 KQ0KPj4gIHsNCj4+IC0gICAgICAgaWYgKG5vZGUgPT0gTlVMTCB8fCBwb29sX2NvbmZpZy0+ZGlz YWJsZV9sb2FkX2JhbGFuY2Vfb25fd3JpdGUgIT0NCj4+IERMQk9XX0RNTF9BREFQVElWRSkNCj4+ ICsgICAgICAgaWYgKG5vZGUgPT0gTlVMTCB8fA0KPj4gKw0KPj4gICFETEJPV19JU19ETUxfQURB UFRJVkUocG9vbF9jb25maWctPmRpc2FibGVfbG9hZF9iYWxhbmNlX29uX3dyaXRlKSkNCj4+ICAg ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQo+Pg0KPj4gICAgICAgICBpZiAoSXNBKG5vZGUs IFJhbmdlVmFyKSkNCj4+ICAgICAgICAgew0KPj4gICAgICAgICAgICAgICAgIFJhbmdlVmFyICAg KnJndiA9IChSYW5nZVZhciAqKSBub2RlOw0KPj4gLSAgICAgICAgICAgICAgIFBPT0xfU0VTU0lP Tl9DT05URVhUICpzZXNzaW9uX2NvbnRleHQgPQ0KPj4gcG9vbF9nZXRfc2Vzc2lvbl9jb250ZXh0 KGZhbHNlKTsNCj4+ICsgICAgICAgICAgICAgICBQT09MX1NFU1NJT05fQ09OVEVYVCAqc2Vzc2lv bl9jb250ZXh0Ow0KPj4NCj4+IC0gICAgICAgICAgICAgICBpZiAocG9vbF9jb25maWctPmRpc2Fi bGVfbG9hZF9iYWxhbmNlX29uX3dyaXRlID09DQo+PiBETEJPV19ETUxfQURBUFRJVkUgJiYgc2Vz c2lvbl9jb250ZXh0LT5pc19pbl90cmFuc2FjdGlvbikNCj4+ICsgICAgICAgICAgICAgICBzZXNz aW9uX2NvbnRleHQgPSBwb29sX2dldF9zZXNzaW9uX2NvbnRleHQoZmFsc2UpOw0KPj4gKw0KPj4g KyAgICAgICAgICAgICAgIGlmIChzZXNzaW9uX2NvbnRleHQtPmlzX2luX3RyYW5zYWN0aW9uKQ0K Pj4gICAgICAgICAgICAgICAgIHsNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgIGVyZXBvcnQo REVCVUcxLA0KPj4gLQ0KPj4gIChlcnJtc2coImlzX3NlbGVjdF9vYmplY3RfaW5fdGVtcF93cml0 ZV9saXN0OiBcIiVzXCIsIGZvdW5kIHJlbGF0aW9uDQo+PiBcIiVzXCIiLCAoY2hhciAqKSBjb250 ZXh0LCByZ3YtPnJlbG5hbWUpKSk7DQo+PiArDQo+PiAgKGVycm1zZygiaXNfc2VsZWN0X29iamVj dF9pbl90ZW1wX3dyaXRlX2xpc3Q6Ig0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiIFwiJXNcIiwgZm91bmQNCj4+IHJlbGF0aW9uIFwi JXNcIiIsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChjaGFyICopIGNvbnRleHQsDQo+PiByZ3YtPnJlbG5hbWUpKSk7DQo+Pg0KPj4g SSBndWVzcyB5b3UgYWltZWQgdG8gc2hvcnRlbiB0aGUgbWVzc2FnZSBzbyB0aGF0IGl0IGRvZXMg bm90IGV4Y2VlZA0KPj4gbGluZSBsZW5ndGggbGltaXQgKDc4KS4gQnV0IElNTyB0aGUgcnVsZSBp cyBub3QgYXBwbGllZCB0byBtZXNzYWdlDQo+PiBmb3JtYXQgc3RyaW5ncyBiZWNhdXNlIHRoaXMg a2luZCBvZiBzdHlsZSAoZGl2aWRlIHRoZSBtZXNzYWdlIGxpbmUNCj4+IGludG8gbXVsdGlwbGUg bGluZXMpIGlzIGhhcmQgdG8gcmVhZC4gSSBzdWdnZXN0IHRvIHJlc3RvcmUgdG8gZm9ybWVyIHN0 eWxlLg0KPj4NCj4+IFNhbWUgc3VnZ2VzdGlvbiBpcyBhcHBsaWVkIHRvIGFsbCBvdGhlciBzaW1p bGFyIHBsYWNlcy4NCj4+DQo+PiBAQCAtMjE2OSw2ICsyMjc1LDE1MyBAQCB3aGVyZV90b19zZW5k X21haW5fcmVwbGljYShQT09MX1FVRVJZX0NPTlRFWFQNCj4+ICpxdWVyeV9jb250ZXh0LCBjaGFy ICpxdWVyeSwgTm9kZQ0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQo+Pg0K Pj4gcG9vbF9zZXRfbm9kZV90b19iZV9zZW50KHF1ZXJ5X2NvbnRleHQsIFBSSU1BUllfTk9ERV9J RCk7DQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCj4+ICsNCj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoNCj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICogQ2hlY2sgdHJhY2sgdGFibGUgbXV0YXRpb24gZm9yIHJlY2VudGx5DQo+PiB3 cml0dGVuIHRhYmxlcy4gIElmDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq IGluIGNvbGQgc3RhcnQgb3IgYW55IHRhYmxlIHdhcyByZWNlbnRseQ0KPj4gd3JpdHRlbiwgcm91 dGUgdG8NCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcHJpbWFyeSB0byBh dm9pZCBzdGFsZSByZWFkcy4NCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICov DQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYNCj4+IChwb29sX2Nv bmZpZy0+ZGlzYWJsZV9sb2FkX2JhbGFuY2Vfb25fd3JpdGUgPT0NCj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBETEJPV19ETUxfQURBUFRJVkVfR0xP QkFMKQ0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQo+Pg0KPj4gVGhpcyAi ZWxzZSBpZiIgYnJhbmNoIGlzIHRvbyBsYXJnZSBhbmQgaGFyZCB0byByZWFkLiBZb3Ugc2hvdWxk IG1vdmUNCj4+IHRoZSBjb2RlIG9mIHRoZSBicmFuY2ggdG8gYSBzdWJyb3V0aW5lIGFuZCBjYWxs IGl0IGZyb20gaGVyZS4NCj4+DQo+PiBkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcG9v bF90cmFja190YWJsZV9tdXRhdGlvbi5oDQo+PiBiL3NyYy9pbmNsdWRlL3V0aWxzL3Bvb2xfdHJh Y2tfdGFibGVfbXV0YXRpb24uaA0KPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+IGluZGV4IDAw MDAwMDAwMC4uZGZiYWM2NjZkDQo+PiAtLS0gL2Rldi9udWxsDQo+PiArKysgYi9zcmMvaW5jbHVk ZS91dGlscy9wb29sX3RyYWNrX3RhYmxlX211dGF0aW9uLmgNCj4+IEBAIC0wLDAgKzEsMTY3IEBA DQo+PiArLyogLSotcGdzcWwtYy0qLSAqLw0KPj4gKy8qDQo+PiArICogcGdwb29sOiBhIGxhbmd1 YWdlIGluZGVwZW5kZW50IGNvbm5lY3Rpb24gcG9vbCBzZXJ2ZXIgZm9yIFBvc3RncmVTUUwNCj4+ ICsgKiB3cml0dGVuIGJ5IFRhdHN1byBJc2hpaQ0KPj4gKyAqDQo+PiArICogQ29weXJpZ2h0IChj KSAyMDAzLTIwMjYgICAgIFBnUG9vbCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXANCj4+DQo+PiBT aW5jZSB0aGlzIGZpbGUgaXMgbmV3LCB0aGUgQ29weXJpZ2h0IHllYXIgc2hvdWxkIGJlIGp1c3Qg MjAyNi4NCj4+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMjYgIFBnUG9vbCBHbG9iYWwgRGV2ZWxvcG1l bnQgR3JvdXANCj4+DQo+PiBkaWZmIC0tZ2l0IGEvc3JjL3Byb3RvY29sL0NvbW1hbmRDb21wbGV0 ZS5jDQo+PiBiL3NyYy9wcm90b2NvbC9Db21tYW5kQ29tcGxldGUuYw0KPj4gaW5kZXggMWY2M2Ew ZThkLi43NmU3N2ZlYTAgMTAwNjQ0DQo+PiAtLS0gYS9zcmMvcHJvdG9jb2wvQ29tbWFuZENvbXBs ZXRlLmMNCj4+ICsrKyBiL3NyYy9wcm90b2NvbC9Db21tYW5kQ29tcGxldGUuYw0KPj4gZGlmZiAt LWdpdCBhL3NyYy91dGlscy9wb29sX3RyYWNrX3RhYmxlX211dGF0aW9uLmMNCj4+IGIvc3JjL3V0 aWxzL3Bvb2xfdHJhY2tfdGFibGVfbXV0YXRpb24uYw0KPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQN Cj4+IGluZGV4IDAwMDAwMDAwMC4uZTc3NzFlN2JmDQo+PiAtLS0gL2Rldi9udWxsDQo+PiArKysg Yi9zcmMvdXRpbHMvcG9vbF90cmFja190YWJsZV9tdXRhdGlvbi5jDQo+PiBAQCAtMCwwICsxLDkw MiBAQA0KPj4gKy8qIC0qLXBnc3FsLWMtKi0gKi8NCj4+ICsvKg0KPj4gKyAqIHBncG9vbDogYSBs YW5ndWFnZSBpbmRlcGVuZGVudCBjb25uZWN0aW9uIHBvb2wgc2VydmVyIGZvciBQb3N0Z3JlU1FM DQo+PiArICogd3JpdHRlbiBieSBUYXRzdW8gSXNoaWkNCj4+ICsgKg0KPj4gKyAqIENvcHlyaWdo dCAoYykgMjAwMy0yMDI2ICAgICBQZ1Bvb2wgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwDQo+Pg0K Pj4gU2luY2UgdGhpcyBmaWxlIGlzIG5ldywgdGhlIENvcHlyaWdodCB5ZWFyIHNob3VsZCBiZSBq dXN0IDIwMjYuDQo+PiArICogQ29weXJpZ2h0IChjKSAyMDI2ICBQZ1Bvb2wgR2xvYmFsIERldmVs b3BtZW50IEdyb3VwDQo+Pg0KPj4gKy8qIC0tLS0tLS0tLS0tLS0tLS0NCj4+ICsgKiBIYXNoIGZ1 bmN0aW9ucw0KPj4gKyAqIC0tLS0tLS0tLS0tLS0tLS0NCj4+ICsgKi8NCj4+ICsNCj4+ICsvKg0K Pj4gKyAqIEZOVi0xYSBoYXNoIGZvciB0YWJsZS9kYXRhYmFzZSBvaWQgcGFpcg0KPj4gKyAqLw0K Pj4NCj4+IENhbiB5b3UgcGxlYXNlIGFkZCBtb3JlIGNvbW1lbnRzIHJlZ2FyZGluZyBGTlYtMWE/ IEknbSBub3Qgc3VyZQ0KPj4gZXZlcnlvbmUgaXMgZmFtaW1pbGFyIHdpdGggRk5WLTFhIChhdCBs ZWFzZSBJIGFtIG5vdCkuDQo+Pg0KPj4gKy8qDQo+PiArICogR2V0IGN1cnJlbnQgdGltZQ0KPj4g KyAqLw0KPj4gK3N0YXRpYyB2b2lkDQo+PiArZ2V0X2N1cnJlbnRfdGltZShzdHJ1Y3QgdGltZXZh bCAqdHYpDQo+PiArew0KPj4gKyAgICAgICBnZXR0aW1lb2ZkYXkodHYsIE5VTEwpOw0KPj4gK30N Cj4+DQo+PiBKdXN0IG91dCBvZiBjdXJpb3NpdHksIHdoeSB5b3UgZG9uJ3QgY2FsbCBnZXR0aW1l b2ZkYXkgZGlyZWN0bHk/DQo+Pg0KPj4gUmVnYXJkcywNCj4+IC0tDQo+PiBUYXRzdW8gSXNoaWkN Cj4+IFNSQSBPU1MgSy5LLg0KPj4gRW5nbGlzaDogaHR0cDovL3d3dy5zcmFvc3MuY28uanAvaW5k ZXhfZW4vDQo+PiBKYXBhbmVzZTpodHRwOi8vd3d3LnNyYW9zcy5jby5qcA0KPj4NCj4gDQo+IA0K PiAtLSANCj4gTmFkYXYgU2hhdHoNCj4gVGFpbG9yIEJyYW5kcyB8IENUTw0K