From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 19C771FF17E for ; Thu, 13 Nov 2025 13:59:16 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 4F38D1B688; Thu, 13 Nov 2025 14:00:10 +0100 (CET) Message-ID: <1c91221e-6979-4b38-9011-0b53921d4093@proxmox.com> Date: Thu, 13 Nov 2025 13:59:34 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: Proxmox Backup Server development discussion , =?UTF-8?Q?Fabian_Gr=C3=BCnbichler?= References: <20251111122941.110412-1-s.rufinatscha@proxmox.com> <20251111122941.110412-2-s.rufinatscha@proxmox.com> <1762936034.bqz00j2ard.astroid@yuna.none> Content-Language: en-US From: Samuel Rufinatscha In-Reply-To: <1762936034.bqz00j2ard.astroid@yuna.none> X-SPAM-LEVEL: Spam detection results: 0 AWL -0.378 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_ASCII_DIVIDERS 0.8 Email that uses ascii formatting dividers and possible spam tricks KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment POISEN_SPAM_PILL 0.1 Meta: its spam POISEN_SPAM_PILL_1 0.1 random spam to be learned in bayes POISEN_SPAM_PILL_3 0.1 random spam to be learned in bayes RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_RPBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: Re: [pbs-devel] [PATCH proxmox-backup 1/3] partial fix #6049: datastore: impl ConfigVersionCache fast path for lookups X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox Backup Server development discussion Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" T24gMTEvMTIvMjUgMjoyNCBQTSwgRmFiaWFuIEdyw7xuYmljaGxlciB3cm90ZToKPiBPbiBOb3Zl bWJlciAxMSwgMjAyNSAxOjI5IHBtLCBTYW11ZWwgUnVmaW5hdHNjaGEgd3JvdGU6Cj4+IFJlcGVh dGVkIC9zdGF0dXMgcmVxdWVzdHMgY2F1c2VkIGxvb2t1cF9kYXRhc3RvcmUoKSB0byByZS1yZWFk IGFuZAo+PiBwYXJzZSBkYXRhc3RvcmUuY2ZnIG9uIGV2ZXJ5IGNhbGwuIFRoZSBpc3N1ZSB3YXMg bWVudGlvbmVkIGluIHJlcG9ydAo+PiAjNjA0OSBbMV0uIGNhcmdvLWZsYW1lZ3JhcGggWzJdIGNv bmZpcm1lZCB0aGF0IHRoZSBob3QgcGF0aCBpcwo+PiBkb21pbmF0ZWQgYnkgcGJzX2NvbmZpZzo6 ZGF0YXN0b3JlOjpjb25maWcoKSAoY29uZmlnIHBhcnNpbmcpLgo+Pgo+PiBUaGlzIHBhdGNoIGFk ZHMgYSBmYXN0IHBhdGggdG8gbG9va3VwX2RhdGFzdG9yZSgpIHVzaW5nIHRoZSBzaGFyZWQtCj4+ IG1lbW9yeSBDb25maWdWZXJzaW9uQ2FjaGUgZ2VuZXJhdGlvbiBjb3VudGVyIGZvciBkYXRhc3Rv cmUuY2ZnLiBJdAo+PiBzdG9yZXMgdGhlIGxhc3Qgc2VlbiBnZW5lcmF0aW9uIG51bWJlciBhbG9u Z3NpZGUgdGhlIGNhY2hlZAo+PiBEYXRhU3RvcmVJbXBsIGFuZCwgd2hlbiBhIHN1YnNlcXVlbnQg bG9va3VwIHNlZXMgdGhlIHNhbWUgZ2VuZXJhdGlvbiwKPj4gd2UgcmV1c2UgdGhlIGNhY2hlZCBp bnN0YW5jZSB3aXRob3V0IHJlLXJlYWRpbmcgdGhlIG9uLWRpc2sgY29uZmlnLiBJZgo+PiB0aGUg Z2VuZXJhdGlvbiBkaWZmZXJzIChvciB0aGUgY2FjaGUgaXMgdW5hdmFpbGFibGUpLCBpdCBmYWxs cyBiYWNrIHRvCj4+IHRoZSBleGlzdGluZyBzbG93IHBhdGggd2l0aCBubyBiZWhhdmlvcmFsIGNo YW5nZXMuCj4+Cj4+IEJlaGF2aW9yYWwgbm90ZXMKPj4KPj4gLSBUaGUgZ2VuZXJhdGlvbiBpcyBi dW1wZWQgdmlhIHRoZSBleGlzdGluZyBzYXZlX2NvbmZpZygpIHBhdGgsIHNvCj4+ICAgIEFQSS1k cml2ZW4gY29uZmlnIGNoYW5nZXMgYXJlIGRldGVjdGVkIGltbWVkaWF0ZWx5Lgo+PiAtIE1hbnVh bCBlZGl0cyB0byBkYXRhc3RvcmUuY2ZnIGFyZSBub3QgZGV0ZWN0ZWQgYnkgdGhpcyBjb21taXQ7 IGEgVFRMCj4+ICAgIGd1YXJkIGlzIGludHJvZHVjZWQgaW4gYSBsYXRlciBwYXRjaCB0byBjb3Zl ciB0aGF0IGNhc2UuCj4+IC0gRGF0YVN0b3JlOjpkcm9wIHN0aWxsIHBlcmZvcm1zIGEgY29uZmln IHJlYWQgb24gdGhlIGNvbW1vbiBwYXRoOyB0aGlzCj4+ICAgIGlzIGFkZHJlc3NlZCBpbiB0aGUg bmV4dCBwYXRjaC4KPj4KPj4gVGVzdGluZwo+Pgo+PiBjYXJnby1mbGFtZWdyYXBoIGNvbmZpcm1z IHRoZSBjb25maWctcGFyc2UgaG90c3BvdCBpbgo+PiBsb29rdXBfZGF0YXN0b3JlKCkgZGlzYXBw ZWFycyBmcm9tIHRoZSBob3QgcGF0aC4KPj4KPj4gQWRkaXRpb25hbGx5LCBhbiBlbmQtdG8tZW5k IGJlbmNobWFyayB3YXMgcGVyZm9ybWVkIHVzaW5nIHRoZQo+PiBgL3N0YXR1cz92ZXJib3NlPTBg IEFQSSB3aXRoIDEwMDAgZGF0YXN0b3JlcywgNSByZXF1ZXN0cyBwZXIgc3RvcmUsCj4+IGFuZCAx Ni13YXkgcGFyYWxsZWxpc206Cj4+Cj4+IHwgTWV0cmljICAgICAgICAgICAgICAgICAgIHwgQmVm b3JlIHwgQWZ0ZXIgIHwgzpQgKGFicykgfCDOlCAoJSkgICB8Cj4+IHwtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLXw6LS0tLS0tOnw6LS0tLS0tOnw6LS0tLS0tLTp8Oi0tLS0tLS06fAo+PiB8IFRv dGFsIHRpbWUgICAgICAgICAgICAgICB8IDEzcyAgICB8IDExcyAgICB8IOKIkjJzICAgICB8IOKI kjE1LjM4JSB8Cj4+IHwgVGhyb3VnaHB1dCAoYWxsIHJvdW5kcykgIHwgMzg0LjYyIHwgNDU0LjU1 IHwgKzY5LjkzICB8ICsxOC4xOCUgfAo+PiB8IENvbGQgUlBTIChyb3VuZCAjMSkgICAgICB8IDc2 LjkyICB8IDkwLjkxICB8ICsxMy45OSAgfCArMTguMTklIHwKPj4gfCBXYXJtIFJQUyAocm91bmRz IDIuLk4pICAgfCAzMDcuNjkgfCAzNjMuNjQgfCArNTUuOTUgIHwgKzE4LjE4JSB8Cj4+Cj4+IFRo cm91Z2hwdXQgaW1wcm92ZWQgYnkgfjE4JSBvdmVyYWxsLCB3aXRoIHRvdGFsIHRpbWUgcmVkdWNl ZCBieSB+MTUlLgo+PiBXYXJtIGxvb2t1cHMgbm93IHJldXNlIGNhY2hlZCBkYXRhc3RvcmUgaW5z dGFuY2VzIGFuZCBza2lwIHJlZHVuZGFudAo+PiBjb25maWcgcGFyc2luZyBlbnRpcmVseS4gVGhl IGZpcnN0LWFjY2VzcyByb3VuZCBhbHNvIHNob3dzIGEgc2ltaWxhcgo+PiBpbXByb3ZlbWVudCwg bGlrZWx5IGR1ZSB0byByZWR1Y2VkIGNvbnRlbnRpb24gYW5kIEkvTyB3aGVuIG1hbnkgc3RvcmVz Cj4+IGFyZSBhY2Nlc3NlZCBpbiBwYXJhbGxlbC4KPj4KPj4gTm90ZTogQSBzZWNvbmQgaG90c3Bv dCByZW1haW5zIGluIERyb3Agd2hlcmUgYSBjb25maWcgcmVhZCBvY2N1cnM7IHRoYXQKPj4gaXMg YWRkcmVzc2VkIGluIHRoZSBuZXh0IGNvbW1pdC4KPiAKPiBpdCB3b3VsZCBiZSBpbnRlcmVzdGlu ZyB0byBhbHNvIGhhdmUgbnVtYmVycyBmb3IganVzdCBsb29rdXArRHJvcCwKPiB3aXRob3V0IGFs bCB0aGUgSFRUUCBhbmQgVExTIG92ZXJoZWFkIHRvIHJlYWxseSBpc29sYXRlIGl0LiB0aGF0IHNo b3VsZAo+IGFsc28gbWFrZSBpdCBlYXNpZXIgdG8gcmVsaWFibHkgYmVuY2htYXJrIHdpdGggc29t ZXRoaW5nIGxpa2UgaHlwZXJmaW5lCj4gOykKPiAKCkdvb2QgcG9pbnQsIEkgd2lsbCBpc29sYXRl IHRoZSBudW1iZXJzIC0gc2VlbXMgbGlrZSB0aGUgVExTIG92ZXJoZWFkIGlzIApxdWl0ZSBodWdl LiBUaGFua3MgZm9yIHRoZSBoeXBlcmZpbmUgcmVmZXJlbmNlIQoKPiBmb3IgbXkgc2ltcGxlIGNv bmZpZyAoNSBkYXRhc3RvcmVzKSBzaW5nbGUtdGhyZWFkZWQgbG9va3VwK2Ryb3Agb2YgYQo+IHNp bmdsZSBkYXRhc3RvcmUgMTAwayB0aW1lcyBnaXZlcyBhcm91bmQgMS4zMSBzcGVlZHVwIGZvciB0 aGUgd2hvbGUKPiBzZXJpZXMuIHRoZSBzbGlnaHRseSBtb2RpZmllZCB2ZXJzaW9uIGZyb20gYmVs b3cgKHdoaWNoIGJhc2ljYWxseSBydW5zCj4gdGhlIG1vc3QgZXhwZW5zaXZlIHBhcnQgb2YgRHJv cCBvbmx5IG9uY2UpIGZvciB0aGUgc2FtZSB0ZXN0IHNldHVwIHN0aWxsCj4gZ2l2ZXMgYSBzcGVl ZHVwIG9mIDEuMTcKPiAKClNvIHRoZSBsb29rdXAgb3B0aW1pemF0aW9uIGRvbWluYXRlcyB0aGUg c3BlZWR1cCBpZiB3ZSBob2xkIGxvbmdlciB0byAKdGhlIGRhdGFzdG9yZXMsIGdyZWF0IHRvIHNl ZS4KCj4gcmUtcnVubmluZyB0aGUgc2FtZSBiZW5jaG1hcmsgd2l0aCBhIGNvbmZpZyB3aXRoIDFr IGRhdGFzdG9yZXMsIHF1ZXJ5aW5nPiBNIGRhdGFzdG9yZXMgTiB0aW1lcyBnaXZlcyB0aGUgZm9s bG93aW5nIHNwZWVkdXBzOgo+IAo+IE0gPSAxLCBOID0gMTAwMDogMTUuNnggZmFzdGVyCj4gTSA9 IDEwLCBOID0gMTAwOiAxNC41eAo+IE0gPSAxMDAsIE4gPSAxMDogOC44eAo+IE0gPSAxMDAwLCBO ID0gMTogMS44eCAoc28gdGhpcyBpcyBiYXNpY2FsbHkgc2hvd2luZyB0aGUgc3BlZWR1cCBvZiB0 aGUKPiBpbXByb3ZlZCBEcm9wIGhhbmRsaW5nIGFsb25lISkKPiAKPiBhbmQgdGhlbiBhIHNsaWdo dGx5IG1vZGlmaWVkIHZlcnNpb24sIHRoYXQga2VlcHMgdGhlIERhdGFTdG9yZSBpbnN0YW5jZQo+ IGFyb3VuZCB1bnRpbCBhbGwgTiBsb29rdXBzIGZvciB0aGF0IGRhdGFzdG9yZSBhcmUgZG9uZSwg dGhlbiBkcm9wcGluZwo+IHRoZW0gaW4gYnVsayAod2hpY2ggbWltaWNzIGhhdmluZyBsb3RzIG9m IGxvb2t1cHMgd2hpbGUgYSB0YXNrIGlzCj4gcnVubmluZywgbWFraW5nIHRoZSBEcm9wIGhhbmRs ZXIgb25seSBkbyB0aGUgZXhwZW5zaXZlIHBhcnQgZXZlcnkgb25jZQo+IGluIGEgd2hpbGUgd2hl biB0aGUgbGFzdCB0YXNrIGZvciBhIGdpdmVuIGRhdGFzdG9yZSBleGl0cyk6Cj4gCj4gdXNlIGFu eWhvdzo6RXJyb3I7Cj4gCj4gdXNlIHBic19hcGlfdHlwZXM6Ok9wZXJhdGlvbjsKPiB1c2UgcGJz X2RhdGFzdG9yZTo6RGF0YVN0b3JlOwo+IAo+IGZuIG1haW4oKSAtPiBSZXN1bHQ8KCksIEVycm9y PiB7Cj4gICAgICBsZXQgbXV0IGFyZ3MgPSBzdGQ6OmVudjo6YXJncygpOwo+ICAgICAgYXJncy5u ZXh0KCk7Cj4gCj4gICAgICBsZXQgZGF0YXN0b3JlcyA9IGlmIGxldCBTb21lKG4pID0gYXJncy5u ZXh0KCkgewo+ICAgICAgICAgIG4ucGFyc2U6Ojx1c2l6ZT4oKT8KPiAgICAgIH0gZWxzZSB7Cj4g ICAgICAgICAgMTAwMAo+ICAgICAgfTsKPiAKPiAgICAgIGxldCBpdGVyYXRpb25zID0gaWYgbGV0 IFNvbWUobikgPSBhcmdzLm5leHQoKSB7Cj4gICAgICAgICAgbi5wYXJzZTo6PHVzaXplPigpPwo+ ICAgICAgfSBlbHNlIHsKPiAgICAgICAgICAxMDAwCj4gICAgICB9Owo+IAo+ICAgICAgZm9yIGQg aW4gMS4uPWRhdGFzdG9yZXMgewo+ICAgICAgICAgIGxldCBuYW1lID0gZm9ybWF0ISgicGJzX2Jl bmNoX3tkfSIpOwo+ICAgICAgICAgIGxldCBtdXQgc3RvcmVzID0gVmVjOjp3aXRoX2NhcGFjaXR5 KGl0ZXJhdGlvbnMpOwo+ICAgICAgICAgIGZvciBpIGluIDEuLj1pdGVyYXRpb25zIHsKPiAgICAg ICAgICAgICAgc3RvcmVzLnB1c2goRGF0YVN0b3JlOjpsb29rdXBfZGF0YXN0b3JlKCZuYW1lLCBT b21lKE9wZXJhdGlvbjo6V3JpdGUpKT8pOwo+ICAgICAgICAgIH0KPiAgICAgIH0KPiAKPiAgICAg IE9rKCgpKQo+IH0KPiAKPiBNID0gMSwgTiA9IDEwMDA6IDguNXggZmFzdGVyCj4gTSA9IDEwLCBO ID0gMTAwOiA3Ljl4Cj4gTSA9IDEwMCwgTiA9IDEwOiA1LjJ4Cj4gTSA9IDEwMDAsIE4gPSAxOiAx Ljl4Cj4gCj4gbG9va2luZyBhdCB0aGUgZmxhbWVncmFwaCBvZiB0aGlzIGlzb2xhdGVkIGJlbmNo bWFyayBpdCdzIG5vdyBvYnZpb3VzCj4gdGhhdCB0aGUgcmVtYWluaW5nIG92ZXJoZWFkIGlzIGxv Y2tmaWxlcyBhbmQgdHJhY2tpbmcgdGhlIG9wZXJhdGlvbnMKPiAoYm90aCBpbiBsb29rdXAgYW5k IHdoZW4gZHJvcHBpbmcpLi4KPiAKClRoYW5rcyBhIGxvdCBhbHNvIGZvciBzZXR0aW5nIHVwIHRo ZSB0ZXN0IGVudmlyb25tZW50IGFuZCBwcm92aWRpbmcgeW91ciAKbnVtYmVycywgd2hpY2ggYXJl IGhlbHBmdWwgdG8gY29tcGFyZSBhZ2FpbnN0IQoKUmVnYXJkaW5nIHRoZSBvdmVyaGVhZCBpbiBs b2NrZmlsZXMgYW5kIHRyYWNraW5nIG9wZXJhdGlvbnMsIGl0IGlzIGEgCmdvb2QgY29uZmlybWF0 aW9uIHRoYXQgZXZlcnl0aGluZyBlbHNlIG9uIHRoZSBob3QgcGF0aCBpcyBvcHRpbWl6ZWQgLSBJ IAp0aGluayB0aGUgbG9ja3MgYW5kIHRyYWNraW5nIG9wZXJhdGlvbnMgY291bGQgbWF5YmUgYmUg cmV2aXNpdGVkIGluIGEgCmZ1dHVyZSBlZmZvcnQhCgo+IHNpZGUtbm90ZTogSSBhY3R1YWxseSBm b3VuZCBhIGJ1ZyBpbiBvdXIgb3BlcmF0aW9ucyB0cmFja2luZyB3aGlsZQo+IGJlbmNobWFya2lu ZyB0aGlzIHNlcmllcyB0aGF0IGdhdmUgbWUgd2lsZGx5IGRpZmZlcmVudCBudW1iZXJzIGJlY2F1 c2UKPiB0aGUgImRyb3AgbGFzdCB0YXNrIiBwYXJ0IG5ldmVyIGdvdCBleGVjdXRlZCBhcyBhIHJl c3VsdDoKPiAKPiBodHRwczovL2xvcmUucHJveG1veC5jb20vcGJzLWRldmVsLzIwMjUxMTEyMTMx NTI1LjY0NTk3MS0xLWYuZ3J1ZW5iaWNobGVyQHByb3htb3guY29tL1QvI3UKPiAKCk5pY2UgY2F0 Y2ghCgo+Pgo+PiBMaW5rcwo+Pgo+PiBbMV0gQnVnemlsbGE6IGh0dHBzOi8vYnVnemlsbGEucHJv eG1veC5jb20vc2hvd19idWcuY2dpP2lkPTYwNDkKPj4gWzJdIGNhcmdvLWZsYW1lZ3JhcGg6IGh0 dHBzOi8vZ2l0aHViLmNvbS9mbGFtZWdyYXBoLXJzL2ZsYW1lZ3JhcGgKPj4KPj4gRml4ZXM6ICM2 MDQ5Cj4+IFNpZ25lZC1vZmYtYnk6IFNhbXVlbCBSdWZpbmF0c2NoYSA8cy5ydWZpbmF0c2NoYUBw cm94bW94LmNvbT4KPj4gLS0tCj4+ICAgcGJzLWNvbmZpZy9zcmMvY29uZmlnX3ZlcnNpb25fY2Fj aGUucnMgfCAxMCArKystCj4+ICAgcGJzLWRhdGFzdG9yZS9zcmMvZGF0YXN0b3JlLnJzICAgICAg ICAgfCA3NyArKysrKysrKysrKysrKysrKy0tLS0tLS0tLQo+PiAgIDIgZmlsZXMgY2hhbmdlZCwg NTkgaW5zZXJ0aW9ucygrKSwgMjggZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9wYnMt Y29uZmlnL3NyYy9jb25maWdfdmVyc2lvbl9jYWNoZS5ycyBiL3Bicy1jb25maWcvc3JjL2NvbmZp Z192ZXJzaW9uX2NhY2hlLnJzCj4+IGluZGV4IGU4ZmI5OTRmLi5iODc1ZjdlMCAxMDA2NDQKPj4g LS0tIGEvcGJzLWNvbmZpZy9zcmMvY29uZmlnX3ZlcnNpb25fY2FjaGUucnMKPj4gKysrIGIvcGJz LWNvbmZpZy9zcmMvY29uZmlnX3ZlcnNpb25fY2FjaGUucnMKPj4gQEAgLTI2LDcgKzI2LDYgQEAg c3RydWN0IENvbmZpZ1ZlcnNpb25DYWNoZURhdGFJbm5lciB7Cj4+ICAgICAgIC8vIFRyYWZmaWMg Y29udHJvbCAodHJhZmZpYy1jb250cm9sLmNmZykgZ2VuZXJhdGlvbi92ZXJzaW9uLgo+PiAgICAg ICB0cmFmZmljX2NvbnRyb2xfZ2VuZXJhdGlvbjogQXRvbWljVXNpemUsCj4+ICAgICAgIC8vIGRh dGFzdG9yZSAoZGF0YXN0b3JlLmNmZykgZ2VuZXJhdGlvbi92ZXJzaW9uCj4+IC0gICAgLy8gRklY TUU6IHJlbW92ZSB3aXRoIFBCUyAzLjAKPj4gICAgICAgZGF0YXN0b3JlX2dlbmVyYXRpb246IEF0 b21pY1VzaXplLAo+PiAgICAgICAvLyBBZGQgZnVydGhlciBhdG9taWNzIGhlcmUKPj4gICB9Cj4+ IEBAIC0xNDUsOCArMTQ0LDE1IEBAIGltcGwgQ29uZmlnVmVyc2lvbkNhY2hlIHsKPj4gICAgICAg ICAgICAgICAuZmV0Y2hfYWRkKDEsIE9yZGVyaW5nOjpBY3FSZWwpOwo+PiAgICAgICB9Cj4+ICAg Cj4+ICsgICAgLy8vIFJldHVybnMgdGhlIGRhdGFzdG9yZSBnZW5lcmF0aW9uIG51bWJlci4KPj4g KyAgICBwdWIgZm4gZGF0YXN0b3JlX2dlbmVyYXRpb24oJnNlbGYpIC0+IHVzaXplIHsKPj4gKyAg ICAgICAgc2VsZi5zaG1lbQo+PiArICAgICAgICAgICAgLmRhdGEoKQo+PiArICAgICAgICAgICAg LmRhdGFzdG9yZV9nZW5lcmF0aW9uCj4+ICsgICAgICAgICAgICAubG9hZChPcmRlcmluZzo6QWNx dWlyZSkKPj4gKyAgICB9Cj4+ICsKPj4gICAgICAgLy8vIEluY3JlYXNlIHRoZSBkYXRhc3RvcmUg Z2VuZXJhdGlvbiBudW1iZXIuCj4+IC0gICAgLy8gRklYTUU6IHJlbW92ZSB3aXRoIFBCUyAzLjAg b3IgbWFrZSBhY3R1YWxseSB1c2VmdWwgYWdhaW4gaW4gZGF0YXN0b3JlIGxvb2t1cAo+PiAgICAg ICBwdWIgZm4gaW5jcmVhc2VfZGF0YXN0b3JlX2dlbmVyYXRpb24oJnNlbGYpIC0+IHVzaXplIHsK Pj4gICAgICAgICAgIHNlbGYuc2htZW0KPj4gICAgICAgICAgICAgICAuZGF0YSgpCj4gCj4gdGhp cyBwYXJ0IGNvdWxkIGJlIHNwbGl0IG91dCBpbnRvIGl0cyBvd24gcGF0Y2gKPiAKCldpbGwgZmFj dG9yIHRoaXMgb3V0IGludG8gYSBzZXBhcmF0ZSBwYXRjaC4KCj4+IGRpZmYgLS1naXQgYS9wYnMt ZGF0YXN0b3JlL3NyYy9kYXRhc3RvcmUucnMgYi9wYnMtZGF0YXN0b3JlL3NyYy9kYXRhc3RvcmUu cnMKPj4gaW5kZXggNzBhZjk0ZDguLjE4ZWViYjU4IDEwMDY0NAo+PiAtLS0gYS9wYnMtZGF0YXN0 b3JlL3NyYy9kYXRhc3RvcmUucnMKPj4gKysrIGIvcGJzLWRhdGFzdG9yZS9zcmMvZGF0YXN0b3Jl LnJzCj4+IEBAIC0zMiw3ICszMiw3IEBAIHVzZSBwYnNfYXBpX3R5cGVzOjp7Cj4+ICAgICAgIE1h aW50ZW5hbmNlVHlwZSwgT3BlcmF0aW9uLCBVUElELAo+PiAgIH07Cj4+ICAgdXNlIHBic19jb25m aWc6OnMzOjpTM19DRkdfVFlQRV9JRDsKPj4gLXVzZSBwYnNfY29uZmlnOjpCYWNrdXBMb2NrR3Vh cmQ7Cj4+ICt1c2UgcGJzX2NvbmZpZzo6e0JhY2t1cExvY2tHdWFyZCwgQ29uZmlnVmVyc2lvbkNh Y2hlfTsKPj4gICAKPj4gICB1c2UgY3JhdGU6OmJhY2t1cF9pbmZvOjp7Cj4+ICAgICAgIEJhY2t1 cERpciwgQmFja3VwR3JvdXAsIEJhY2t1cEluZm8sIE9MRF9MT0NLSU5HLCBQUk9URUNURURfTUFS S0VSX0ZJTEVOQU1FLAo+PiBAQCAtMTQwLDEwICsxNDAsMTAgQEAgcHViIHN0cnVjdCBEYXRhU3Rv cmVJbXBsIHsKPj4gICAgICAgbGFzdF9nY19zdGF0dXM6IE11dGV4PEdhcmJhZ2VDb2xsZWN0aW9u U3RhdHVzPiwKPj4gICAgICAgdmVyaWZ5X25ldzogYm9vbCwKPj4gICAgICAgY2h1bmtfb3JkZXI6 IENodW5rT3JkZXIsCj4+IC0gICAgbGFzdF9kaWdlc3Q6IE9wdGlvbjxbdTg7IDMyXT4sCj4+ICAg ICAgIHN5bmNfbGV2ZWw6IERhdGFzdG9yZUZTeW5jTGV2ZWwsCj4+ICAgICAgIGJhY2tlbmRfY29u ZmlnOiBEYXRhc3RvcmVCYWNrZW5kQ29uZmlnLAo+PiAgICAgICBscnVfc3RvcmVfY2FjaGluZzog T3B0aW9uPExvY2FsRGF0YXN0b3JlTHJ1Q2FjaGU+LAo+PiArICAgIGNhY2hlZF9jb25maWdfdGFn OiBPcHRpb248Q2FjaGVkRGF0YXN0b3JlQ29uZmlnVGFnPiwKPj4gICB9Cj4+ICAgCj4+ICAgaW1w bCBEYXRhU3RvcmVJbXBsIHsKPj4gQEAgLTE1NiwxMCArMTU2LDEwIEBAIGltcGwgRGF0YVN0b3Jl SW1wbCB7Cj4+ICAgICAgICAgICAgICAgbGFzdF9nY19zdGF0dXM6IE11dGV4OjpuZXcoR2FyYmFn ZUNvbGxlY3Rpb25TdGF0dXM6OmRlZmF1bHQoKSksCj4+ICAgICAgICAgICAgICAgdmVyaWZ5X25l dzogZmFsc2UsCj4+ICAgICAgICAgICAgICAgY2h1bmtfb3JkZXI6IERlZmF1bHQ6OmRlZmF1bHQo KSwKPj4gLSAgICAgICAgICAgIGxhc3RfZGlnZXN0OiBOb25lLAo+PiAgICAgICAgICAgICAgIHN5 bmNfbGV2ZWw6IERlZmF1bHQ6OmRlZmF1bHQoKSwKPj4gICAgICAgICAgICAgICBiYWNrZW5kX2Nv bmZpZzogRGVmYXVsdDo6ZGVmYXVsdCgpLAo+PiAgICAgICAgICAgICAgIGxydV9zdG9yZV9jYWNo aW5nOiBOb25lLAo+PiArICAgICAgICAgICAgY2FjaGVkX2NvbmZpZ190YWc6IE5vbmUsCj4+ICAg ICAgICAgICB9KQo+PiAgICAgICB9Cj4+ICAgfQo+PiBAQCAtMjI0LDYgKzIyNCwxNSBAQCBwdWIg ZW51bSBEYXRhc3RvcmVCYWNrZW5kIHsKPj4gICAgICAgUzMoQXJjPFMzQ2xpZW50PiksCj4+ICAg fQo+PiAgIAo+PiArLy8vIFVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBjYWNoZWQgZGF0YXN0 b3JlIGluc3RhbmNlIGlzIHN0aWxsIHZhbGlkCj4+ICsvLy8gb3IgbmVlZHMgdG8gYmUgcmVsb2Fk ZWQgYWZ0ZXIgYSBjb25maWcgY2hhbmdlLgo+PiArc3RydWN0IENhY2hlZERhdGFzdG9yZUNvbmZp Z1RhZyB7Cj4+ICsgICAgLy8vIE1haW50ZW5hbmNlIG1vZGUgYXQgdGhlIHRpbWUgdGhlIGxvb2t1 cCBoaW50IHdhcyBjYXB0dXJlZCwgaWYgYW55Lgo+PiArICAgIGxhc3RfbWFpbnRlbmFuY2VfbW9k ZTogT3B0aW9uPE1haW50ZW5hbmNlTW9kZT4sCj4+ICsgICAgLy8vIERhdGFzdG9yZSBnZW5lcmF0 aW9uIG51bWJlciBmcm9tIGBDb25maWdWZXJzaW9uQ2FjaGVgOyBgTm9uZWAgd2hlbiB0aGUgY2Fj aGUgd2Fzbid0IGF2YWlsYWJsZS4KPj4gKyAgICBsYXN0X2dlbmVyYXRpb246IE9wdGlvbjx1c2l6 ZT4sCj4gCj4gaWYgdGhlIHdob2xlIHRhZyBpcyBhbiBvcHRpb24sIGRvIHdlIHJlYWxseSBuZWVk IHRvIG1ha2UgdGhlIGdlbmVyYXRpb24KPiBhbiBvcHRpb24gYXMgd2VsbD8KPiAKCkdvb2QgcG9p bnQsIGtlZXBpbmcgdGhlIHRhZyBvcHRpb25hbCBvbmx5IGlzIGVub3VnaCBhbmQgd2lsbCBzaW1w bGlmeSAKZ2VuZXJhdGlvbiBjaGVja3MuCgo+PiArfQo+PiArCj4+ICAgaW1wbCBEYXRhU3RvcmUg ewo+PiAgICAgICAvLyBUaGlzIG9uZSBqdXN0IHBhbmljcyBvbiBldmVyeXRoaW5nCj4+ICAgICAg ICNbZG9jKGhpZGRlbildCj4+IEBAIC0yOTksMTMgKzMwOCw0MCBAQCBpbXBsIERhdGFTdG9yZSB7 Cj4+ICAgICAgICAgICAvLyB3ZSB1c2UgaXQgdG8gZGVjaWRlIHdoZXRoZXIgaXQgaXMgb2theSB0 byBkZWxldGUgdGhlIGRhdGFzdG9yZS4KPj4gICAgICAgICAgIGxldCBfY29uZmlnX2xvY2sgPSBw YnNfY29uZmlnOjpkYXRhc3RvcmU6OmxvY2tfY29uZmlnKCk/Owo+PiAgIAo+PiAtICAgICAgICAv LyB3ZSBjb3VsZCB1c2UgdGhlIENvbmZpZ1ZlcnNpb25DYWNoZSdzIGdlbmVyYXRpb24gZm9yIHN0 YWxlbmVzcyBkZXRlY3Rpb24sIGJ1dCAgd2UgbG9hZAo+PiAtICAgICAgICAvLyB0aGUgY29uZmln IGFueXdheSAtPiBqdXN0IHVzZSBkaWdlc3QsIGFkZGl0aW9uYWwgYmVuZWZpdDogbWFudWFsIGNo YW5nZXMgZ2V0IGRldGVjdGVkCj4+IC0gICAgICAgIGxldCAoY29uZmlnLCBkaWdlc3QpID0gcGJz X2NvbmZpZzo6ZGF0YXN0b3JlOjpjb25maWcoKT87Cj4+ICsgICAgICAgIC8vIEdldCB0aGUgY3Vy cmVudCBkYXRhc3RvcmUuY2ZnIGdlbmVyYXRpb24gbnVtYmVyCj4+ICsgICAgICAgIGxldCBnZW5f bnVtID0gQ29uZmlnVmVyc2lvbkNhY2hlOjpuZXcoKQo+PiArICAgICAgICAgICAgLm9rKCkKPj4g KyAgICAgICAgICAgIC5tYXAofGN8IGMuZGF0YXN0b3JlX2dlbmVyYXRpb24oKSk7Cj4+ICsKPj4g KyAgICAgICAgLy8gRmFzdC1wYXRoOiBpZiB3ZSBoYXZlIGEgY2FjaGVkIGVudHJ5IGNyZWF0ZWQg dW5kZXIgdGhlIHNhbWUgZGF0YXN0b3JlLmNmZyBnZW5lcmF0aW9uIG51bWJlciwgcmV1c2UgaXQu Cj4+ICsgICAgICAgIGlmIGxldCAoU29tZShnZW5fbnVtKSwgU29tZShkcykpID0KPj4gKyAgICAg ICAgICAgIChnZW5fbnVtLCBEQVRBU1RPUkVfTUFQLmxvY2soKS51bndyYXAoKS5nZXQobmFtZSku Y2xvbmVkKCkpCj4+ICsgICAgICAgIHsKPj4gKyAgICAgICAgICAgIGlmIGxldCBTb21lKGNhY2hl ZF90YWcpID0gJmRzLmNhY2hlZF9jb25maWdfdGFnIHsKPj4gKyAgICAgICAgICAgICAgICBpZiBj YWNoZWRfdGFnLmxhc3RfZ2VuZXJhdGlvbiA9PSBTb21lKGdlbl9udW0pIHsKPj4gKyAgICAgICAg ICAgICAgICAgICAgaWYgbGV0IFNvbWUobW0pID0gJmNhY2hlZF90YWcubGFzdF9tYWludGVuYW5j ZV9tb2RlIHsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxldCBFcnIoZXJyb3IpID0g bW0uY2hlY2sob3BlcmF0aW9uKSB7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFp bCEoImRhdGFzdG9yZSAne25hbWV9JyBpcyB1bmF2YWlsYWJsZToge2Vycm9yfSIpOwo+PiArICAg ICAgICAgICAgICAgICAgICAgICAgfQo+PiArICAgICAgICAgICAgICAgICAgICB9Cj4+ICsgICAg ICAgICAgICAgICAgICAgIGlmIGxldCBTb21lKG9wZXJhdGlvbikgPSBvcGVyYXRpb24gewo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlX2FjdGl2ZV9vcGVyYXRpb25zKG5hbWUsIG9w ZXJhdGlvbiwgMSk/Owo+PiArICAgICAgICAgICAgICAgICAgICB9Cj4+ICsgICAgICAgICAgICAg ICAgICAgIHJldHVybiBPayhBcmM6Om5ldyhTZWxmIHsKPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgIGlubmVyOiBkcywKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiwKPj4g KyAgICAgICAgICAgICAgICAgICAgfSkpOwo+PiArICAgICAgICAgICAgICAgIH0KPj4gKyAgICAg ICAgICAgIH0KPj4gKyAgICAgICAgfQo+PiArCj4+ICsgICAgICAgIC8vIFNsb3cgcGF0aDogKHJl KWxvYWQgY29uZmlnCj4+ICsgICAgICAgIGxldCAoY29uZmlnLCBfZGlnZXN0KSA9IHBic19jb25m aWc6OmRhdGFzdG9yZTo6Y29uZmlnKCk/Owo+PiAgICAgICAgICAgbGV0IGNvbmZpZzogRGF0YVN0 b3JlQ29uZmlnID0gY29uZmlnLmxvb2t1cCgiZGF0YXN0b3JlIiwgbmFtZSk/Owo+PiAgIAo+PiAt ICAgICAgICBpZiBsZXQgU29tZShtYWludGVuYW5jZV9tb2RlKSA9IGNvbmZpZy5nZXRfbWFpbnRl bmFuY2VfbW9kZSgpIHsKPj4gLSAgICAgICAgICAgIGlmIGxldCBFcnIoZXJyb3IpID0gbWFpbnRl bmFuY2VfbW9kZS5jaGVjayhvcGVyYXRpb24pIHsKPj4gKyAgICAgICAgbGV0IG1haW50ZW5hbmNl X21vZGUgPSBjb25maWcuZ2V0X21haW50ZW5hbmNlX21vZGUoKTsKPj4gKyAgICAgICAgaWYgbGV0 IFNvbWUobW0pID0gJm1haW50ZW5hbmNlX21vZGUgewo+PiArICAgICAgICAgICAgaWYgbGV0IEVy cihlcnJvcikgPSBtbS5jaGVjayhvcGVyYXRpb24pIHsKPj4gICAgICAgICAgICAgICAgICAgYmFp bCEoImRhdGFzdG9yZSAne25hbWV9JyBpcyB1bmF2YWlsYWJsZToge2Vycm9yfSIpOwo+PiAgICAg ICAgICAgICAgIH0KPj4gICAgICAgICAgIH0KPiAKPiBhZnRlciB0aGlzIGhlcmUgd2UgaGF2ZSBh IGNoZWNrIGZvciB0aGUgbW91bnQgc3RhdHVzIGluIHRoZSBvbGQgaG90Cj4gcGF0aCwgdGhhdCBp cyBtaXNzaW5nIGluIHRoZSBuZXcgaG90IHBhdGguIHRoZSBtb3VudCBzdGF0dXMgY2FuIGNoYW5n ZQo+IGV2ZW4gaWYgdGhlIGNvbmZpZyBkb2Vzbid0LCBzbyB3ZSBzaG91bGQgcHJvYmFibHkgYWRk IHRoaXMgYmFjayB0byB0aGUKPiBob3QgcGF0aCBhbmQgcmUtcnVuIHRoZSBudW1iZXJzPwo+IAo+ IHRoYXQgY2hlY2sgYWdhaW4gbmVlZHMgbW9yZSBwYXJ0cyBvZiB0aGUgY29uZmlnLCBzbyBtYXli ZSB3ZSBjb3VsZAo+IGV4cGxvcmUgY2FjaGluZyB0aGUgZnVsbCBjb25maWcgaGVyZT8gZS5nLiwg YWRkIGEgbmV3IHN0YXRpYwo+IE11dGV4PE9wdGlvbjwoRGF0YVN0b3JlQ29uZmlnLCB1c2l6ZSk+ PiAoZXh0ZW5kZWQgYnkgdGhlIHRpbWVzdGFtcCBpbgo+IHRoZSBsYXN0IHBhdGNoKSBhbmQgYWRh cHQgdGhlIHBhdGNoZXMgaGVyZSB0byB1c2UgaXQ/IGRlcGVuZGluZyBvbgo+IHdoZXRoZXIgd2Ug bWFrZSB0aGUgY2FjaGVkIGNvbmZpZyBhdmFpbGFibGUgb3V0c2lkZSBvZiBsb29rdXBfZGF0YXN0 b3JlLAo+IHdlIGNvdWxkIHRoZW4gZXZlbiBub3QgYWRkIHRoZSBtYWludGVuYW5jZSBtb2RlIHRv IHRoZSBjYWNoZSB0YWcsIGFuZAo+IGp1c3Qgc3RvcmUgdGhlIGdlbmVyYXRpb24gbnVtYmVyIHRo ZXJlLCBhbmQgcmV0cmlldmUgdGhlIG1haW50ZW5hbmNlCj4gbW9kZSBmcm9tIHRoZSBjYWNoZWQg Y29uZmlnIGluIHRoZSBEcm9wIGltcGxlbWVudGF0aW9uLi4KPiAKCkZvciB0aGUgbW91bnQgY2hl Y2sgd2Ugd2lsbCBuZWVkIGRldmljZV91dWlkIGFuZCBkYXRhc3RvcmUgbW91bnQgZGlyIApwYXRo IHdoaWNoIHdlIGNvdWxkIGFkZCB0byB0aGUgY2FjaGVkIGVudHJ5LCBob3dldmVyIEkgdGhpbmsg SSB3b3VsZCAKYWxzbyByYXRoZXIgZXhwbG9yZSBjYWNoaW5nIG9mIHRoZSBmdWxsIGdsb2JhbCBj b25maWcgaGVyZS4gVGhpcyBzaG91bGQgCnJlc3VsdCBpbiBmdXJ0aGVyIHBlcmZvcm1hbmNlIGdh aW5zIC0gdGhpcyB3b3VsZC9zaG91bGQgYWxsb3cgZm9yIApldmVudHVhbCBmYXN0LWxvb2t1cHMg dG8gYW55IG90aGVyIGRhdGFzdG9yZS4gV2lsbCB0cnkgdG8gaW50ZWdyYXRlIGl0IAppbiB2Mi4K Cj4gdGhlcmUncyBhIGxpdHRsZSBtb3JlIGR1cGxpY2F0aW9uIGhlcmUsIGUuZy4gd2UgbG9jayB0 aGUgbWFwIGFuZCBjaGVjawo+IGZvciBhbiBlbnRyeSBpbiBib3RoIHRoZSBmYXN0IGFuZCBzbG93 IHBhdGhzLCB3ZSBjb3VsZCBkbyBpdCBvbmNlIHVwCj4gZnJvbnQgKG5vYm9keSBjYW4gY2hhbmdl IHRoZSBtYXAgd2hpbGUgd2UgaGF2ZSBpdCBsb2NrZWQgYW55d2F5KSwgdGhlCj4gY2hlY2tzIGFy ZSB3cml0dGVuIHR3aWNlIGFuZCBjb3VsZCBwcm9iYWJseSBiZSBleHRyYWN0ZWQgaW50byBhIGhl bHBlcgo+IHNvIHRoYXQgZnV0dXJlIHNpbWlsYXIgY2hlY2tzIGFyZSBhZGRlZCB0byBib3RoIHBh dGhzIGFuZCBub3QgdG8gb25seQo+IG9uZSBieSBhY2NpZGVudCwgLi4KPiAKCkdvb2QgcG9pbnQs IEkgd2lsbCBmYWN0b3IgaXQgb3V0IChlLmcuIHNtYWxsIGNsb3N1cmUpLgoKPj4gQEAgLTMyMSwx NiArMzU3LDYgQEAgaW1wbCBEYXRhU3RvcmUgewo+PiAgIAo+PiAgICAgICAgICAgLy8gcmV1c2Ug Y2h1bmsgc3RvcmUgc28gdGhhdCB3ZSBrZWVwIHVzaW5nIHRoZSBzYW1lIHByb2Nlc3MgbG9ja2Vy IGluc3RhbmNlIQo+PiAgICAgICAgICAgbGV0IGNodW5rX3N0b3JlID0gaWYgbGV0IFNvbWUoZGF0 YXN0b3JlKSA9ICZlbnRyeSB7Cj4+IC0gICAgICAgICAgICBsZXQgbGFzdF9kaWdlc3QgPSBkYXRh c3RvcmUubGFzdF9kaWdlc3QuYXNfcmVmKCk7Cj4+IC0gICAgICAgICAgICBpZiBsZXQgU29tZSh0 cnVlKSA9IGxhc3RfZGlnZXN0Lm1hcCh8bGFzdF9kaWdlc3R8IGxhc3RfZGlnZXN0ID09ICZkaWdl c3QpIHsKPj4gLSAgICAgICAgICAgICAgICBpZiBsZXQgU29tZShvcGVyYXRpb24pID0gb3BlcmF0 aW9uIHsKPj4gLSAgICAgICAgICAgICAgICAgICAgdXBkYXRlX2FjdGl2ZV9vcGVyYXRpb25zKG5h bWUsIG9wZXJhdGlvbiwgMSk/Owo+PiAtICAgICAgICAgICAgICAgIH0KPj4gLSAgICAgICAgICAg ICAgICByZXR1cm4gT2soQXJjOjpuZXcoU2VsZiB7Cj4+IC0gICAgICAgICAgICAgICAgICAgIGlu bmVyOiBBcmM6OmNsb25lKGRhdGFzdG9yZSksCj4+IC0gICAgICAgICAgICAgICAgICAgIG9wZXJh dGlvbiwKPj4gLSAgICAgICAgICAgICAgICB9KSk7Cj4+IC0gICAgICAgICAgICB9Cj4+ICAgICAg ICAgICAgICAgQXJjOjpjbG9uZSgmZGF0YXN0b3JlLmNodW5rX3N0b3JlKQo+PiAgICAgICAgICAg fSBlbHNlIHsKPj4gICAgICAgICAgICAgICBsZXQgdHVuaW5nOiBEYXRhc3RvcmVUdW5pbmcgPSBz ZXJkZV9qc29uOjpmcm9tX3ZhbHVlKAo+PiBAQCAtMzQ0LDcgKzM3MCwxMSBAQCBpbXBsIERhdGFT dG9yZSB7Cj4+ICAgICAgICAgICAgICAgKT8pCj4+ICAgICAgICAgICB9Owo+PiAgIAo+PiAtICAg ICAgICBsZXQgZGF0YXN0b3JlID0gRGF0YVN0b3JlOjp3aXRoX3N0b3JlX2FuZF9jb25maWcoY2h1 bmtfc3RvcmUsIGNvbmZpZywgU29tZShkaWdlc3QpKT87Cj4+ICsgICAgICAgIGxldCBtdXQgZGF0 YXN0b3JlID0gRGF0YVN0b3JlOjp3aXRoX3N0b3JlX2FuZF9jb25maWcoY2h1bmtfc3RvcmUsIGNv bmZpZyk/Owo+PiArICAgICAgICBkYXRhc3RvcmUuY2FjaGVkX2NvbmZpZ190YWcgPSBTb21lKENh Y2hlZERhdGFzdG9yZUNvbmZpZ1RhZyB7Cj4+ICsgICAgICAgICAgICBsYXN0X21haW50ZW5hbmNl X21vZGU6IG1haW50ZW5hbmNlX21vZGUsCj4+ICsgICAgICAgICAgICBsYXN0X2dlbmVyYXRpb246 IGdlbl9udW0sCj4+ICsgICAgICAgIH0pOwo+IAo+IHRoaXMgcGFydCBzaG91bGQgYmUgaW4gd2l0 aF9zdG9yZV9hbmRfY29uZmlnLCB3aGljaCBzaG91bGQgZ2V0IHRoZQo+IGxhc3RfZ2VuZXJhdGlv biAoYW5kIGxhdGVyIGxhc3RfdXBkYXRlKSBhcyBwYXJhbWV0ZXIocyksIGp1c3QgbGlrZSBpdAo+ IGhhZCB0aGUgZGlnZXN0IGJlZm9yZSB0aGlzIHBhdGNoLi4KPiAKCkFncmVlLCBJIHdpbGwgbW92 ZSB0aGlzIHBhcnQuCgo+PiAgIAo+PiAgICAgICAgICAgbGV0IGRhdGFzdG9yZSA9IEFyYzo6bmV3 KGRhdGFzdG9yZSk7Cj4+ICAgICAgICAgICBkYXRhc3RvcmVfY2FjaGUuaW5zZXJ0KG5hbWUudG9f c3RyaW5nKCksIGRhdGFzdG9yZS5jbG9uZSgpKTsKPj4gQEAgLTQzMCwxMSArNDYwLDcgQEAgaW1w bCBEYXRhU3RvcmUgewo+PiAgICAgICAgICAgICAgIGNvbmZpZy5hYnNvbHV0ZV9wYXRoKCksCj4+ ICAgICAgICAgICAgICAgdHVuaW5nLnN5bmNfbGV2ZWwudW53cmFwX29yX2RlZmF1bHQoKSwKPj4g ICAgICAgICAgICk/Owo+PiAtICAgICAgICBsZXQgaW5uZXIgPSBBcmM6Om5ldyhTZWxmOjp3aXRo X3N0b3JlX2FuZF9jb25maWcoCj4+IC0gICAgICAgICAgICBBcmM6Om5ldyhjaHVua19zdG9yZSks Cj4+IC0gICAgICAgICAgICBjb25maWcsCj4+IC0gICAgICAgICAgICBOb25lLAo+PiAtICAgICAg ICApPyk7Cj4+ICsgICAgICAgIGxldCBpbm5lciA9IEFyYzo6bmV3KFNlbGY6OndpdGhfc3RvcmVf YW5kX2NvbmZpZyhBcmM6Om5ldyhjaHVua19zdG9yZSksIGNvbmZpZyk/KTsKPj4gICAKPj4gICAg ICAgICAgIGlmIGxldCBTb21lKG9wZXJhdGlvbikgPSBvcGVyYXRpb24gewo+PiAgICAgICAgICAg ICAgIHVwZGF0ZV9hY3RpdmVfb3BlcmF0aW9ucygmbmFtZSwgb3BlcmF0aW9uLCAxKT87Cj4+IEBA IC00NDYsNyArNDcyLDYgQEAgaW1wbCBEYXRhU3RvcmUgewo+PiAgICAgICBmbiB3aXRoX3N0b3Jl X2FuZF9jb25maWcoCj4+ICAgICAgICAgICBjaHVua19zdG9yZTogQXJjPENodW5rU3RvcmU+LAo+ PiAgICAgICAgICAgY29uZmlnOiBEYXRhU3RvcmVDb25maWcsCj4+IC0gICAgICAgIGxhc3RfZGln ZXN0OiBPcHRpb248W3U4OyAzMl0+LAo+PiAgICAgICApIC0+IFJlc3VsdDxEYXRhU3RvcmVJbXBs LCBFcnJvcj4gewo+PiAgICAgICAgICAgbGV0IG11dCBnY19zdGF0dXNfcGF0aCA9IGNodW5rX3N0 b3JlLmJhc2VfcGF0aCgpOwo+PiAgICAgICAgICAgZ2Nfc3RhdHVzX3BhdGgucHVzaCgiLmdjLXN0 YXR1cyIpOwo+PiBAQCAtNTA2LDEwICs1MzEsMTAgQEAgaW1wbCBEYXRhU3RvcmUgewo+PiAgICAg ICAgICAgICAgIGxhc3RfZ2Nfc3RhdHVzOiBNdXRleDo6bmV3KGdjX3N0YXR1cyksCj4+ICAgICAg ICAgICAgICAgdmVyaWZ5X25ldzogY29uZmlnLnZlcmlmeV9uZXcudW53cmFwX29yKGZhbHNlKSwK Pj4gICAgICAgICAgICAgICBjaHVua19vcmRlcjogdHVuaW5nLmNodW5rX29yZGVyLnVud3JhcF9v cl9kZWZhdWx0KCksCj4+IC0gICAgICAgICAgICBsYXN0X2RpZ2VzdCwKPj4gICAgICAgICAgICAg ICBzeW5jX2xldmVsOiB0dW5pbmcuc3luY19sZXZlbC51bndyYXBfb3JfZGVmYXVsdCgpLAo+PiAg ICAgICAgICAgICAgIGJhY2tlbmRfY29uZmlnLAo+PiAgICAgICAgICAgICAgIGxydV9zdG9yZV9j YWNoaW5nLAo+PiArICAgICAgICAgICAgY2FjaGVkX2NvbmZpZ190YWc6IE5vbmUsCj4+ICAgICAg ICAgICB9KQo+PiAgICAgICB9Cj4+ICAgCj4+IC0tIAo+PiAyLjQ3LjMKPj4KPj4KPj4KPj4gX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4gcGJzLWRldmVs IG1haWxpbmcgbGlzdAo+PiBwYnMtZGV2ZWxAbGlzdHMucHJveG1veC5jb20KPj4gaHR0cHM6Ly9s aXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vcGJzLWRldmVsCj4+Cj4g Cj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBw YnMtZGV2ZWwgbWFpbGluZyBsaXN0Cj4gcGJzLWRldmVsQGxpc3RzLnByb3htb3guY29tCj4gaHR0 cHM6Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vcGJzLWRldmVs CgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCnBicy1k ZXZlbCBtYWlsaW5nIGxpc3QKcGJzLWRldmVsQGxpc3RzLnByb3htb3guY29tCmh0dHBzOi8vbGlz dHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3Bicy1kZXZlbAo=