From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id CF28F1FF141 for ; Fri, 16 Jan 2026 16:30:05 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 320471C118; Fri, 16 Jan 2026 16:30:10 +0100 (CET) MIME-Version: 1.0 In-Reply-To: <13d6a203-415d-45ff-b4bb-149903d08f94@proxmox.com> References: <20260102160750.285157-1-s.rufinatscha@proxmox.com> <20260102160750.285157-3-s.rufinatscha@proxmox.com> <1768385575.9kaf9dmuhn.astroid@yuna.none> <13d6a203-415d-45ff-b4bb-149903d08f94@proxmox.com> From: Fabian =?utf-8?q?Gr=C3=BCnbichler?= To: Proxmox Backup Server development discussion , Samuel Rufinatscha Date: Fri, 16 Jan 2026 16:29:17 +0100 Message-ID: <176857735749.137827.7483218182007589047@yuna.proxmox.com> User-Agent: alot/0.0.0 X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1768577325388 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.504 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 URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [proxmox.com] Subject: Re: [pbs-devel] [PATCH proxmox-backup v3 2/4] pbs-config: cache verified API token secrets 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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" UXVvdGluZyBTYW11ZWwgUnVmaW5hdHNjaGEgKDIwMjYtMDEtMTYgMTY6MTM6MTcpCj4gT24gMS8x NC8yNiAxMTo0NCBBTSwgRmFiaWFuIEdyw7xuYmljaGxlciB3cm90ZToKPiA+IE9uIEphbnVhcnkg MiwgMjAyNiA1OjA3IHBtLCBTYW11ZWwgUnVmaW5hdHNjaGEgd3JvdGU6Cj4gPj4gQ3VycmVudGx5 LCBldmVyeSB0b2tlbi1iYXNlZCBBUEkgcmVxdWVzdCByZWFkcyB0aGUgdG9rZW4uc2hhZG93IGZp bGUgYW5kCj4gPj4gcnVucyB0aGUgZXhwZW5zaXZlIHBhc3N3b3JkIGhhc2ggdmVyaWZpY2F0aW9u IGZvciB0aGUgZ2l2ZW4gdG9rZW4KPiA+PiBzZWNyZXQuIFRoaXMgc2hvd3MgdXAgYXMgYSBob3Rz cG90IGluIC9zdGF0dXMgcHJvZmlsaW5nIChzZWUKPiA+PiBidWcgIzcwMTcgWzFdKS4KPiA+Pgo+ ID4+IFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhbiBpbi1tZW1vcnkgY2FjaGUgb2Ygc3VjY2Vzc2Z1 bGx5IHZlcmlmaWVkIHRva2VuCj4gPj4gc2VjcmV0cy4gU3Vic2VxdWVudCByZXF1ZXN0cyBmb3Ig dGhlIHNhbWUgdG9rZW4rc2VjcmV0IGNvbWJpbmF0aW9uIG9ubHkKPiA+PiBwZXJmb3JtIGEgY29t cGFyaXNvbiB1c2luZyBvcGVuc3NsOjptZW1jbXA6OmVxIGFuZCBhdm9pZCByZS1ydW5uaW5nIHRo ZQo+ID4+IHBhc3N3b3JkIGhhc2guIFRoZSBjYWNoZSBpcyB1cGRhdGVkIHdoZW4gYSB0b2tlbiBz ZWNyZXQgaXMgc2V0IGFuZAo+ID4+IGNsZWFyZWQgd2hlbiBhIHRva2VuIGlzIGRlbGV0ZWQuIE5v dGUsIHRoaXMgZG9lcyBOT1QgaW5jbHVkZSBtYW51YWwKPiA+PiBjb25maWcgY2hhbmdlcywgd2hp Y2ggd2lsbCBiZSBjb3ZlcmVkIGluIGEgc3Vic2VxdWVudCBwYXRjaC4KPiA+Pgo+ID4+IFRoaXMg cGF0Y2ggaXMgcGFydCBvZiB0aGUgc2VyaWVzIHdoaWNoIGZpeGVzIGJ1ZyAjNzAxNyBbMV0uCj4g Pj4KPiA+PiBbMV0gaHR0cHM6Ly9idWd6aWxsYS5wcm94bW94LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9 NzAxNwo+ID4+Cj4gPj4gU2lnbmVkLW9mZi1ieTogU2FtdWVsIFJ1ZmluYXRzY2hhIDxzLnJ1Zmlu YXRzY2hhQHByb3htb3guY29tPgo+ID4+IC0tLQo+ID4+IENoYW5nZXMgZnJvbSB2MSB0byB2MjoK PiA+Pgo+ID4+ICogUmVwbGFjZSBPbmNlQ2VsbCB3aXRoIExhenlMb2NrLCBhbmQgc3RkOjpzeW5j OjpSd0xvY2sgd2l0aAo+ID4+IHBhcmtpbmdfbG90OjpSd0xvY2suCj4gPj4gKiBBZGQgQVBJX01V VEFUSU9OX0dFTkVSQVRJT04gYW5kIGd1YXJkIGNhY2hlIGluc2VydHMKPiA+PiB0byBwcmV2ZW50 IOKAnHpvbWJpZSBpbnNlcnRz4oCdIGFjcm9zcyBjb25jdXJyZW50IHNldC9kZWxldGUuCj4gPj4g KiBSZWZhY3RvciBjYWNoZSBvcGVyYXRpb25zIGludG8gY2FjaGVfdHJ5X3NlY3JldF9tYXRjaGVz LAo+ID4+IGNhY2hlX3RyeV9pbnNlcnRfc2VjcmV0LCBhbmQgY2VudHJhbGl6ZSB3cml0ZS1zaWRl IGJlaGF2aW9yIGluCj4gPj4gYXBwbHlfYXBpX211dGF0aW9uLgo+ID4+ICogU3dpdGNoIGZhc3Qt cGF0aCBjYWNoZSBhY2Nlc3MgdG8gdHJ5X3JlYWQvdHJ5X3dyaXRlIChiZXN0LWVmZm9ydCkuCj4g Pj4KPiA+PiBDaGFuZ2VzIGZyb20gdjIgdG8gdjM6Cj4gPj4KPiA+PiAqIFJlcGxhY2VkIHByb2Nl c3MtbG9jYWwgY2FjaGUgaW52YWxpZGF0aW9uIChBdG9taWNVNjQKPiA+PiBBUElfTVVUQVRJT05f R0VORVJBVElPTikgd2l0aCBhIGNyb3NzLXByb2Nlc3Mgc2hhcmVkIGdlbmVyYXRpb24gdmlhCj4g Pj4gQ29uZmlnVmVyc2lvbkNhY2hlLgo+ID4+ICogVmFsaWRhdGUgc2hhcmVkIGdlbmVyYXRpb24g YmVmb3JlL2FmdGVyIHRoZSBjb25zdGFudC10aW1lIHNlY3JldAo+ID4+IGNvbXBhcmU7IG9ubHkg aW5zZXJ0IGludG8gY2FjaGUgaWYgdGhlIGdlbmVyYXRpb24gaXMgdW5jaGFuZ2VkLgo+ID4+ICog aW52YWxpZGF0ZV9jYWNoZV9zdGF0ZSgpIG9uIGluc2VydCBpZiBzaGFyZWQgZ2VuZXJhdGlvbiBj aGFuZ2VkLgo+ID4+Cj4gPj4gICBDYXJnby50b21sICAgICAgICAgICAgICAgICAgICAgfCAgIDEg Kwo+ID4+ICAgcGJzLWNvbmZpZy9DYXJnby50b21sICAgICAgICAgIHwgICAxICsKPiA+PiAgIHBi cy1jb25maWcvc3JjL3Rva2VuX3NoYWRvdy5ycyB8IDE1NyArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0KPiA+PiAgIDMgZmlsZXMgY2hhbmdlZCwgMTU4IGluc2VydGlvbnMoKyksIDEg ZGVsZXRpb24oLSkKPiA+Pgo+ID4+IGRpZmYgLS1naXQgYS9DYXJnby50b21sIGIvQ2FyZ28udG9t bAo+ID4+IGluZGV4IDFhYTU3YWU1Li44MjFiNjNiNyAxMDA2NDQKPiA+PiAtLS0gYS9DYXJnby50 b21sCj4gPj4gKysrIGIvQ2FyZ28udG9tbAo+ID4+IEBAIC0xNDMsNiArMTQzLDcgQEAgbm9tID0g IjciCj4gPj4gICBudW0tdHJhaXRzID0gIjAuMiIKPiA+PiAgIG9uY2VfY2VsbCA9ICIxLjMuMSIK PiA+PiAgIG9wZW5zc2wgPSAiMC4xMC40MCIKPiA+PiArcGFya2luZ19sb3QgPSAiMC4xMiIKPiA+ PiAgIHBlcmNlbnQtZW5jb2RpbmcgPSAiMi4xIgo+ID4+ICAgcGluLXByb2plY3QtbGl0ZSA9ICIw LjIiCj4gPj4gICByZWdleCA9ICIxLjUuNSIKPiA+PiBkaWZmIC0tZ2l0IGEvcGJzLWNvbmZpZy9D YXJnby50b21sIGIvcGJzLWNvbmZpZy9DYXJnby50b21sCj4gPj4gaW5kZXggNzRhZmIzYzYuLmVi ODFjZTAwIDEwMDY0NAo+ID4+IC0tLSBhL3Bicy1jb25maWcvQ2FyZ28udG9tbAo+ID4+ICsrKyBi L3Bicy1jb25maWcvQ2FyZ28udG9tbAo+ID4+IEBAIC0xMyw2ICsxMyw3IEBAIGxpYmMud29ya3Nw YWNlID0gdHJ1ZQo+ID4+ICAgbml4LndvcmtzcGFjZSA9IHRydWUKPiA+PiAgIG9uY2VfY2VsbC53 b3Jrc3BhY2UgPSB0cnVlCj4gPj4gICBvcGVuc3NsLndvcmtzcGFjZSA9IHRydWUKPiA+PiArcGFy a2luZ19sb3Qud29ya3NwYWNlID0gdHJ1ZQo+ID4+ICAgcmVnZXgud29ya3NwYWNlID0gdHJ1ZQo+ ID4+ICAgc2VyZGUud29ya3NwYWNlID0gdHJ1ZQo+ID4+ICAgc2VyZGVfanNvbi53b3Jrc3BhY2Ug PSB0cnVlCj4gPj4gZGlmZiAtLWdpdCBhL3Bicy1jb25maWcvc3JjL3Rva2VuX3NoYWRvdy5ycyBi L3Bicy1jb25maWcvc3JjL3Rva2VuX3NoYWRvdy5ycwo+ID4+IGluZGV4IDY0MGZhYmJmLi5mYTg0 YWVlNSAxMDA2NDQKPiA+PiAtLS0gYS9wYnMtY29uZmlnL3NyYy90b2tlbl9zaGFkb3cucnMKPiA+ PiArKysgYi9wYnMtY29uZmlnL3NyYy90b2tlbl9zaGFkb3cucnMKPiA+PiBAQCAtMSw2ICsxLDgg QEAKPiA+PiAgIHVzZSBzdGQ6OmNvbGxlY3Rpb25zOjpIYXNoTWFwOwo+ID4+ICt1c2Ugc3RkOjpz eW5jOjpMYXp5TG9jazsKPiA+PiAgIAo+ID4+ICAgdXNlIGFueWhvdzo6e2JhaWwsIGZvcm1hdF9l cnIsIEVycm9yfTsKPiA+PiArdXNlIHBhcmtpbmdfbG90OjpSd0xvY2s7Cj4gPj4gICB1c2Ugc2Vy ZGU6OntEZXNlcmlhbGl6ZSwgU2VyaWFsaXplfTsKPiA+PiAgIHVzZSBzZXJkZV9qc29uOjp7ZnJv bV92YWx1ZSwgVmFsdWV9Owo+ID4+ICAgCj4gPj4gQEAgLTEzLDYgKzE1LDE4IEBAIHVzZSBjcmF0 ZTo6e29wZW5fYmFja3VwX2xvY2tmaWxlLCBCYWNrdXBMb2NrR3VhcmR9Owo+ID4+ICAgY29uc3Qg TE9DS19GSUxFOiAmc3RyID0gcGJzX2J1aWxkY2ZnOjpjb25maWdkaXIhKCIvdG9rZW4uc2hhZG93 LmxvY2siKTsKPiA+PiAgIGNvbnN0IENPTkZfRklMRTogJnN0ciA9IHBic19idWlsZGNmZzo6Y29u ZmlnZGlyISgiL3Rva2VuLnNoYWRvdyIpOwo+ID4+ICAgCj4gPj4gKy8vLyBHbG9iYWwgaW4tbWVt b3J5IGNhY2hlIGZvciBzdWNjZXNzZnVsbHkgdmVyaWZpZWQgQVBJIHRva2VuIHNlY3JldHMuCj4g Pj4gKy8vLyBUaGUgY2FjaGUgc3RvcmVzIHBsYWluIHRleHQgc2VjcmV0cyBmb3IgdG9rZW4gQXV0 aGlkcyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuCj4gPj4gKy8vLyB2ZXJpZmllZCBhZ2FpbnN0IHRo ZSBoYXNoZWQgdmFsdWVzIGluIGB0b2tlbi5zaGFkb3dgLiBUaGlzIGFsbG93cyBmb3IgY2hlYXAK PiA+PiArLy8vIHN1YnNlcXVlbnQgYXV0aGVudGljYXRpb25zIGZvciB0aGUgc2FtZSB0b2tlbitz ZWNyZXQgY29tYmluYXRpb24sIGF2b2lkaW5nCj4gPj4gKy8vLyByZWNvbXB1dGluZyB0aGUgcGFz c3dvcmQgaGFzaCBvbiBldmVyeSByZXF1ZXN0Lgo+ID4+ICtzdGF0aWMgVE9LRU5fU0VDUkVUX0NB Q0hFOiBMYXp5TG9jazxSd0xvY2s8QXBpVG9rZW5TZWNyZXRDYWNoZT4+ID0gTGF6eUxvY2s6Om5l dyh8fCB7Cj4gPj4gKyAgICBSd0xvY2s6Om5ldyhBcGlUb2tlblNlY3JldENhY2hlIHsKPiA+PiAr ICAgICAgICBzZWNyZXRzOiBIYXNoTWFwOjpuZXcoKSwKPiA+PiArICAgICAgICBzaGFyZWRfZ2Vu OiAwLAo+ID4+ICsgICAgfSkKPiA+PiArfSk7Cj4gPj4gKwo+ID4+ICAgI1tkZXJpdmUoU2VyaWFs aXplLCBEZXNlcmlhbGl6ZSldCj4gPj4gICAjW3NlcmRlKHJlbmFtZV9hbGwgPSAia2ViYWItY2Fz ZSIpXQo+ID4+ICAgLy8vIEFwaVRva2VuIGlkIC8gc2VjcmV0IHBhaXIKPiA+PiBAQCAtNTQsOSAr NjgsMjcgQEAgcHViIGZuIHZlcmlmeV9zZWNyZXQodG9rZW5pZDogJkF1dGhpZCwgc2VjcmV0OiAm c3RyKSAtPiBSZXN1bHQ8KCksIEVycm9yPiB7Cj4gPj4gICAgICAgICAgIGJhaWwhKCJub3QgYW4g QVBJIHRva2VuIElEIik7Cj4gPj4gICAgICAgfQo+ID4+ICAgCj4gPj4gKyAgICAvLyBGYXN0IHBh dGgKPiA+PiArICAgIGlmIGNhY2hlX3RyeV9zZWNyZXRfbWF0Y2hlcyh0b2tlbmlkLCBzZWNyZXQp IHsKPiA+PiArICAgICAgICByZXR1cm4gT2soKCkpOwo+ID4+ICsgICAgfQo+ID4+ICsKPiA+PiAr ICAgIC8vIFNsb3cgcGF0aAo+ID4+ICsgICAgLy8gRmlyc3QsIGNhcHR1cmUgdGhlIHNoYXJlZCBn ZW5lcmF0aW9uIGJlZm9yZSBkb2luZyB0aGUgaGFzaCB2ZXJpZmljYXRpb24uCj4gPj4gKyAgICBs ZXQgZ2VuX2JlZm9yZSA9IHRva2VuX3NoYWRvd19zaGFyZWRfZ2VuKCk7Cj4gPj4gKwo+ID4+ICAg ICAgIGxldCBkYXRhID0gcmVhZF9maWxlKCk/Owo+ID4+ICAgICAgIG1hdGNoIGRhdGEuZ2V0KHRv a2VuaWQpIHsKPiA+PiAtICAgICAgICBTb21lKGhhc2hlZF9zZWNyZXQpID0+IHByb3htb3hfc3lz OjpjcnlwdDo6dmVyaWZ5X2NyeXB0X3B3KHNlY3JldCwgaGFzaGVkX3NlY3JldCksCj4gPj4gKyAg ICAgICAgU29tZShoYXNoZWRfc2VjcmV0KSA9PiB7Cj4gPj4gKyAgICAgICAgICAgIHByb3htb3hf c3lzOjpjcnlwdDo6dmVyaWZ5X2NyeXB0X3B3KHNlY3JldCwgaGFzaGVkX3NlY3JldCk/Owo+ID4+ ICsKPiA+PiArICAgICAgICAgICAgLy8gVHJ5IHRvIGNhY2hlIG9ubHkgaWYgbm90aGluZyBjaGFu Z2VkIHdoaWxlIHZlcmlmeWluZyB0aGUgc2VjcmV0Lgo+ID4+ICsgICAgICAgICAgICBpZiBsZXQg U29tZShnZW4pID0gZ2VuX2JlZm9yZSB7Cj4gPj4gKyAgICAgICAgICAgICAgICBjYWNoZV90cnlf aW5zZXJ0X3NlY3JldCh0b2tlbmlkLmNsb25lKCksIHNlY3JldC50b19vd25lZCgpLCBnZW4pOwo+ ID4+ICsgICAgICAgICAgICB9Cj4gPj4gKwo+ID4+ICsgICAgICAgICAgICBPaygoKSkKPiA+PiAr ICAgICAgICB9Cj4gPj4gICAgICAgICAgIE5vbmUgPT4gYmFpbCEoImludmFsaWQgQVBJIHRva2Vu IiksCj4gPj4gICAgICAgfQo+ID4+ICAgfQo+ID4+IEBAIC04Miw2ICsxMTQsOCBAQCBmbiBzZXRf c2VjcmV0KHRva2VuaWQ6ICZBdXRoaWQsIHNlY3JldDogJnN0cikgLT4gUmVzdWx0PCgpLCBFcnJv cj4gewo+ID4+ICAgICAgIGRhdGEuaW5zZXJ0KHRva2VuaWQuY2xvbmUoKSwgaGFzaGVkX3NlY3Jl dCk7Cj4gPj4gICAgICAgd3JpdGVfZmlsZShkYXRhKT87Cj4gPj4gICAKPiA+PiArICAgIGFwcGx5 X2FwaV9tdXRhdGlvbih0b2tlbmlkLCBTb21lKHNlY3JldCkpOwo+ID4+ICsKPiA+PiAgICAgICBP aygoKSkKPiA+PiAgIH0KPiA+PiAgIAo+ID4+IEBAIC05Nyw1ICsxMzEsMTI2IEBAIHB1YiBmbiBk ZWxldGVfc2VjcmV0KHRva2VuaWQ6ICZBdXRoaWQpIC0+IFJlc3VsdDwoKSwgRXJyb3I+IHsKPiA+ PiAgICAgICBkYXRhLnJlbW92ZSh0b2tlbmlkKTsKPiA+PiAgICAgICB3cml0ZV9maWxlKGRhdGEp PzsKPiA+PiAgIAo+ID4+ICsgICAgYXBwbHlfYXBpX211dGF0aW9uKHRva2VuaWQsIE5vbmUpOwo+ ID4+ICsKPiA+PiAgICAgICBPaygoKSkKPiA+PiAgIH0KPiA+PiArCj4gPj4gK3N0cnVjdCBBcGlU b2tlblNlY3JldENhY2hlIHsKPiA+PiArICAgIC8vLyBLZXlzIGFyZSB0b2tlbiBBdXRoaWRzLCB2 YWx1ZXMgYXJlIHRoZSBjb3JyZXNwb25kaW5nIHBsYWluIHRleHQgc2VjcmV0cy4KPiA+PiArICAg IC8vLyBFbnRyaWVzIGFyZSBhZGRlZCBhZnRlciBhIHN1Y2Nlc3NmdWwgb24tZGlzayB2ZXJpZmlj YXRpb24gaW4KPiA+PiArICAgIC8vLyBgdmVyaWZ5X3NlY3JldGAgb3Igd2hlbiBhIG5ldyB0b2tl biBzZWNyZXQgaXMgZ2VuZXJhdGVkIGJ5Cj4gPj4gKyAgICAvLy8gYGdlbmVyYXRlX2FuZF9zZXRf c2VjcmV0YC4gVXNlZCB0byBhdm9pZCByZXBlYXRlZAo+ID4+ICsgICAgLy8vIHBhc3N3b3JkLWhh c2ggY29tcHV0YXRpb24gb24gc3Vic2VxdWVudCBhdXRoZW50aWNhdGlvbnMuCj4gPj4gKyAgICBz ZWNyZXRzOiBIYXNoTWFwPEF1dGhpZCwgQ2FjaGVkU2VjcmV0PiwKPiA+PiArICAgIC8vLyBTaGFy ZWQgZ2VuZXJhdGlvbiB0byBkZXRlY3QgbXV0YXRpb25zIG9mIHRoZSB1bmRlcmx5aW5nIHRva2Vu LnNoYWRvdyBmaWxlLgo+ID4+ICsgICAgc2hhcmVkX2dlbjogdXNpemUsCj4gPj4gK30KPiA+PiAr Cj4gPj4gKy8vLyBDYWNoZWQgc2VjcmV0Lgo+ID4+ICtzdHJ1Y3QgQ2FjaGVkU2VjcmV0IHsKPiA+ PiArICAgIHNlY3JldDogU3RyaW5nLAo+ID4+ICt9Cj4gPj4gKwo+ID4+ICtmbiBjYWNoZV90cnlf aW5zZXJ0X3NlY3JldCh0b2tlbmlkOiBBdXRoaWQsIHNlY3JldDogU3RyaW5nLCBzaGFyZWRfZ2Vu X2JlZm9yZTogdXNpemUpIHsKPiA+PiArICAgIGxldCBTb21lKG11dCBjYWNoZSkgPSBUT0tFTl9T RUNSRVRfQ0FDSEUudHJ5X3dyaXRlKCkgZWxzZSB7Cj4gPj4gKyAgICAgICAgcmV0dXJuOwo+ID4+ ICsgICAgfTsKPiA+PiArCj4gPj4gKyAgICBsZXQgU29tZShzaGFyZWRfZ2VuX25vdykgPSB0b2tl bl9zaGFkb3dfc2hhcmVkX2dlbigpIGVsc2Ugewo+ID4+ICsgICAgICAgIHJldHVybjsKPiA+PiAr ICAgIH07Cj4gPj4gKwo+ID4+ICsgICAgLy8gSWYgdGhpcyBwcm9jZXNzIG1pc3NlZCBhIGdlbmVy YXRpb24gYnVtcCwgaXRzIGNhY2hlIGlzIHN0YWxlLgo+ID4+ICsgICAgaWYgY2FjaGUuc2hhcmVk X2dlbiAhPSBzaGFyZWRfZ2VuX25vdyB7Cj4gPj4gKyAgICAgICAgaW52YWxpZGF0ZV9jYWNoZV9z dGF0ZSgmbXV0IGNhY2hlKTsKPiA+PiArICAgICAgICBjYWNoZS5zaGFyZWRfZ2VuID0gc2hhcmVk X2dlbl9ub3c7Cj4gPj4gKyAgICB9Cj4gPj4gKwo+ID4+ICsgICAgLy8gSWYgYSBtdXRhdGlvbiBo YXBwZW5lZCB3aGlsZSB3ZSB3ZXJlIHZlcmlmeWluZyB0aGUgc2VjcmV0LCBkbyBub3QgaW5zZXJ0 Lgo+ID4+ICsgICAgaWYgc2hhcmVkX2dlbl9ub3cgPT0gc2hhcmVkX2dlbl9iZWZvcmUgewo+ID4+ ICsgICAgICAgIGNhY2hlLnNlY3JldHMuaW5zZXJ0KHRva2VuaWQsIENhY2hlZFNlY3JldCB7IHNl Y3JldCB9KTsKPiA+PiArICAgIH0KPiA+PiArfQo+ID4+ICsKPiA+PiArLy8gVHJpZXMgdG8gbWF0 Y2ggdGhlIGdpdmVuIHRva2VuIHNlY3JldCBhZ2FpbnN0IHRoZSBjYWNoZWQgc2VjcmV0Lgo+ID4+ ICsvLyBDaGVja3MgdGhlIGdlbmVyYXRpb24gYmVmb3JlIGFuZCBhZnRlciB0aGUgY29uc3RhbnQt dGltZSBjb21wYXJlIHRvIGF2b2lkIGEKPiA+PiArLy8gVE9DVE9VIHdpbmRvdy4gSWYgYW5vdGhl ciBwcm9jZXNzIHJvdGF0ZXMvZGVsZXRlcyBhIHRva2VuIHdoaWxlIHdlJ3JlIHZhbGlkYXRpbmcK PiA+PiArLy8gdGhlIGNhY2hlZCBzZWNyZXQsIHRoZSBnZW5lcmF0aW9uIHdpbGwgY2hhbmdlLCBh bmQgd2UKPiA+PiArLy8gbXVzdCBub3QgdHJ1c3QgdGhlIGNhY2hlIGZvciB0aGlzIHJlcXVlc3Qu Cj4gPj4gK2ZuIGNhY2hlX3RyeV9zZWNyZXRfbWF0Y2hlcyh0b2tlbmlkOiAmQXV0aGlkLCBzZWNy ZXQ6ICZzdHIpIC0+IGJvb2wgewo+ID4+ICsgICAgbGV0IFNvbWUoY2FjaGUpID0gVE9LRU5fU0VD UkVUX0NBQ0hFLnRyeV9yZWFkKCkgZWxzZSB7Cj4gPj4gKyAgICAgICAgcmV0dXJuIGZhbHNlOwo+ ID4+ICsgICAgfTsKPiA+PiArICAgIGxldCBTb21lKGVudHJ5KSA9IGNhY2hlLnNlY3JldHMuZ2V0 KHRva2VuaWQpIGVsc2Ugewo+ID4+ICsgICAgICAgIHJldHVybiBmYWxzZTsKPiA+PiArICAgIH07 Cj4gPj4gKwo+ID4+ICsgICAgbGV0IGNhY2hlX2dlbiA9IGNhY2hlLnNoYXJlZF9nZW47Cj4gPj4g Kwo+ID4+ICsgICAgbGV0IFNvbWUoZ2VuMSkgPSB0b2tlbl9zaGFkb3dfc2hhcmVkX2dlbigpIGVs c2Ugewo+ID4+ICsgICAgICAgIHJldHVybiBmYWxzZTsKPiA+PiArICAgIH07Cj4gPj4gKyAgICBp ZiBnZW4xICE9IGNhY2hlX2dlbiB7Cj4gPj4gKyAgICAgICAgcmV0dXJuIGZhbHNlOwo+ID4+ICsg ICAgfQo+ID4+ICsKPiA+PiArICAgIGxldCBlcSA9IG9wZW5zc2w6Om1lbWNtcDo6ZXEoZW50cnku c2VjcmV0LmFzX2J5dGVzKCksIHNlY3JldC5hc19ieXRlcygpKTsKPiA+IAo+ID4gc2hvdWxkIHdl IGludmFsaWRhdGUgdGhlIGNhY2hlIGhlcmUgZm9yIHRoaXMgcGFydGljdWxhciBhdXRoaWQgaW4g Y2FzZQo+ID4gb2YgYSBtaXNtYXRjaCwgdG8gYXZvaWQgbWFraW5nIGJydXRlIGZvcmNpbmcgdG9v IGVhc3kvY2hlYXA/Cj4gPgo+IAo+IFdlIGFyZSBub3QgZG9pbmcgYSBjaGVhcCByZWplY3QsIGlu IG1pc21hdGNoIHdlIGRvIHN0aWxsIGZhbGwgdGhyb3VnaCB0bwo+IHZlcmlmeV9jcnlwdF9wdygp LiBFdmljdGluZyBvbiBtaXNtYXRjaCBjb3VsZCBob3dldmVyIGVuYWJsZSBjYWNoZQo+IHRocmFz aGluZyB3aGVyZSB3cm9uZyBzZWNyZXRzIGZvciBhIGtub3duIHRva2VuaWQgd291bGQgZXZpY3Qg Y2FjaGVkCj4gZW50cmllcy4gU28gSSB0aGluayB3ZSBzaG91bGQgbm90IGludmFsaWRhdGUgaGVy ZSBvbiBtaXNtYXRjaC4KPiAKPiA+PiArICAgIGxldCBTb21lKGdlbjIpID0gdG9rZW5fc2hhZG93 X3NoYXJlZF9nZW4oKSBlbHNlIHsKPiA+PiArICAgICAgICByZXR1cm4gZmFsc2U7Cj4gPj4gKyAg ICB9Owo+ID4+ICsKPiA+PiArICAgIGVxICYmIGdlbjIgPT0gY2FjaGVfZ2VuCj4gPj4gK30KPiA+ PiArCj4gPj4gK2ZuIGFwcGx5X2FwaV9tdXRhdGlvbih0b2tlbmlkOiAmQXV0aGlkLCBuZXdfc2Vj cmV0OiBPcHRpb248JnN0cj4pIHsKPiA+PiArICAgIC8vIFNpZ25hbCBjYWNoZSBpbnZhbGlkYXRp b24gdG8gb3RoZXIgcHJvY2Vzc2VzIChiZXN0LWVmZm9ydCkuCj4gPj4gKyAgICBsZXQgbmV3X3No YXJlZF9nZW4gPSBidW1wX3Rva2VuX3NoYWRvd19zaGFyZWRfZ2VuKCk7Cj4gPj4gKwo+ID4+ICsg ICAgbGV0IG11dCBjYWNoZSA9IFRPS0VOX1NFQ1JFVF9DQUNIRS53cml0ZSgpOwo+ID4+ICsKPiA+ PiArICAgIC8vIElmIHdlIGNhbm5vdCByZWFkL2J1bXAgdGhlIHNoYXJlZCBnZW5lcmF0aW9uLCB3 ZSBjYW5ub3Qgc2FmZWx5IHRydXN0IHRoZSBjYWNoZS4KPiA+PiArICAgIGxldCBTb21lKGdlbikg PSBuZXdfc2hhcmVkX2dlbiBlbHNlIHsKPiA+PiArICAgICAgICBpbnZhbGlkYXRlX2NhY2hlX3N0 YXRlKCZtdXQgY2FjaGUpOwo+ID4+ICsgICAgICAgIGNhY2hlLnNoYXJlZF9nZW4gPSAwOwo+ID4+ ICsgICAgICAgIHJldHVybjsKPiA+PiArICAgIH07Cj4gPj4gKwo+ID4+ICsgICAgLy8gVXBkYXRl IHRvIHRoZSBwb3N0LW11dGF0aW9uIGdlbmVyYXRpb24uCj4gPj4gKyAgICBjYWNoZS5zaGFyZWRf Z2VuID0gZ2VuOwo+ID4+ICsKPiA+PiArICAgIC8vIEFwcGx5IHRoZSBuZXcgbXV0YXRpb24uCj4g Pj4gKyAgICBtYXRjaCBuZXdfc2VjcmV0IHsKPiA+PiArICAgICAgICBTb21lKHNlY3JldCkgPT4g ewo+ID4+ICsgICAgICAgICAgICBjYWNoZS5zZWNyZXRzLmluc2VydCgKPiA+PiArICAgICAgICAg ICAgICAgIHRva2VuaWQuY2xvbmUoKSwKPiA+PiArICAgICAgICAgICAgICAgIENhY2hlZFNlY3Jl dCB7Cj4gPj4gKyAgICAgICAgICAgICAgICAgICAgc2VjcmV0OiBzZWNyZXQudG9fb3duZWQoKSwK PiA+PiArICAgICAgICAgICAgICAgIH0sCj4gPj4gKyAgICAgICAgICAgICk7Cj4gPj4gKyAgICAg ICAgfQo+ID4+ICsgICAgICAgIE5vbmUgPT4gewo+ID4+ICsgICAgICAgICAgICBjYWNoZS5zZWNy ZXRzLnJlbW92ZSh0b2tlbmlkKTsKPiA+PiArICAgICAgICB9Cj4gPj4gKyAgICB9Cj4gPj4gK30K PiA+PiArCj4gPj4gKy8vLyBHZXQgdGhlIGN1cnJlbnQgc2hhcmVkIGdlbmVyYXRpb24uCj4gPj4g K2ZuIHRva2VuX3NoYWRvd19zaGFyZWRfZ2VuKCkgLT4gT3B0aW9uPHVzaXplPiB7Cj4gPj4gKyAg ICBjcmF0ZTo6Q29uZmlnVmVyc2lvbkNhY2hlOjpuZXcoKQo+ID4+ICsgICAgICAgIC5vaygpCj4g Pj4gKyAgICAgICAgLm1hcCh8Y3ZjfCBjdmMudG9rZW5fc2hhZG93X2dlbmVyYXRpb24oKSkKPiA+ PiArfQo+ID4+ICsKPiA+PiArLy8vIEJ1bXAgYW5kIHJldHVybiB0aGUgbmV3IHNoYXJlZCBnZW5l cmF0aW9uLgo+ID4+ICtmbiBidW1wX3Rva2VuX3NoYWRvd19zaGFyZWRfZ2VuKCkgLT4gT3B0aW9u PHVzaXplPiB7Cj4gPj4gKyAgICBjcmF0ZTo6Q29uZmlnVmVyc2lvbkNhY2hlOjpuZXcoKQo+ID4+ ICsgICAgICAgIC5vaygpCj4gPj4gKyAgICAgICAgLm1hcCh8Y3ZjfCBjdmMuaW5jcmVhc2VfdG9r ZW5fc2hhZG93X2dlbmVyYXRpb24oKSArIDEpCj4gPj4gK30KPiA+PiArCj4gPj4gKy8vLyBJbnZh bGlkYXRlcyB0aGUgY2FjaGUgc3RhdGUgYW5kIG9ubHkga2VlcHMgdGhlIHNoYXJlZCBnZW5lcmF0 aW9uLgo+ID4gCj4gPiBib3RoIGNhbGxzIHRvIHRoaXMgYWN0dWFsbHkgc2V0IHRoZSBjYWNoZWQg Z2VuZXJhdGlvbiB0byBzb21lIHZhbHVlCj4gPiByaWdodCBhZnRlciwgc28gbWF5YmUgdGhpcyBz aG91bGQgdGFrZSBhIGdlbmVyYXRpb24gZGlyZWN0bHkgYW5kIHNldCBpdD8KPiA+Cj4gCj4gcGF0 Y2ggMy80IGRvZXNu4oCZdCBhbHdheXMgdXBkYXRlIHRoZSBnZW4gb24gY2FjaGUgaW52YWxpZGF0 aW9uCj4gKHNoYWRvd19tdGltZV9sZW4oKSBlcnJvciBicmFuY2ggaW4gYXBwbHlfYXBpX211dGF0 aW9uKSBidXQgbW9zdCBvdGhlcgo+IGNhbGwgc2l0ZXMgZG8uIEFncmVlZCB0aGlzIGNhbiBiZSBy ZWZhY3RvcmVkLCBtYXliZToKCnRoYXQgb25lIHNldHMgdGhlIGdlbmVyYXRpb24gYmVmb3JlIChw b3RlbnRpYWxseSkgaW52YWxpZGF0aW5nIHRoZSBjYWNoZQp0aG91Z2gsIHNvIHdlIGNvdWxkIHVu Y29uZGl0aW9uYWxseSByZXNldCB0aGUgZ2VuZXJhdGlvbiB0byB0aGF0IHZhbHVlIHdoZW4KaW52 YWxpZGF0aW5nLi4gd2Ugc2hvdWxkIG1heWJlIGFsc28gcmUtb3JkZXIgdGhlIGxvY2sgYW5kIGJ1 bXAgdGhlcmU/Cgo+IAo+IGZuIGludmFsaWRhdGVfY2FjaGVfc3RhdGUoY2FjaGU6ICZtdXQgQXBp VG9rZW5TZWNyZXRDYWNoZSkgewo+ICAgICAgY2FjaGUuc2VjcmV0cy5jbGVhcigpOwo+ICAgICAg Ly8gY2xlYXIgb3RoZXIgY2FjaGUgZmllbGRzIChtdGltZS9sZW4vbGFzdF9jaGVja2VkKSBhcyBu ZWVkZWQKPiB9Cj4gCj4gZm4gaW52YWxpZGF0ZV9jYWNoZV9zdGF0ZV9hbmRfc2V0X2dlbihjYWNo ZTogJm11dCBBcGlUb2tlblNlY3JldENhY2hlLCAKPiBnZW46IHVzaXplKSB7Cj4gICAgICBpbnZh bGlkYXRlX2NhY2hlX3N0YXRlKGNhY2hlKTsKPiAgICAgIGNhY2hlLnNoYXJlZF9nZW4gPSBnZW47 Cj4gfQo+IAo+IFdlIGNvdWxkIGFsc28gZG8gYSBzaW5nbGUgaGVscGVyIHdpdGggT3B0aW9uPHVz aXplPiBidXQgdHdvIGhlbHBlcnMgbWFrZSAKPiB0aGUgY2FsbCBzaXRlcyBtb3JlIGV4cGxpY2l0 Lgo+IAo+ID4+ICtmbiBpbnZhbGlkYXRlX2NhY2hlX3N0YXRlKGNhY2hlOiAmbXV0IEFwaVRva2Vu U2VjcmV0Q2FjaGUpIHsKPiA+PiArICAgIGNhY2hlLnNlY3JldHMuY2xlYXIoKTsKPiA+PiArfQo+ ID4+IC0tIAo+ID4+IDIuNDcuMwo+ID4+Cj4gPj4KPiA+Pgo+ID4+IF9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPj4gcGJzLWRldmVsIG1haWxpbmcgbGlz dAo+ID4+IHBicy1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQo+ID4+IGh0dHBzOi8vbGlzdHMucHJv eG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3Bicy1kZXZlbAo+ID4+Cj4gPiAKPiA+ IAo+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+ IHBicy1kZXZlbCBtYWlsaW5nIGxpc3QKPiA+IHBicy1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQo+ ID4gaHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vcGJz LWRldmVsCj4gCj4KCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpwYnMtZGV2ZWwgbWFpbGluZyBsaXN0CnBicy1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQpo dHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wYnMtZGV2 ZWwK