From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <pve-devel-bounces@lists.proxmox.com> Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id BEC6B1FF16B for <inbox@lore.proxmox.com>; Thu, 3 Apr 2025 09:23:49 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id A7F5B38CD7; Thu, 3 Apr 2025 09:23:35 +0200 (CEST) Date: Thu, 03 Apr 2025 09:23:27 +0200 From: Fabian =?iso-8859-1?q?Gr=FCnbichler?= <f.gruenbichler@proxmox.com> To: Proxmox VE development discussion <pve-devel@lists.proxmox.com> References: <20250326142059.261938-1-m.carrara@proxmox.com> <20250326142059.261938-7-m.carrara@proxmox.com> <1743430815.p3lidgbz0m.astroid@yuna.none> <D8WAP6RU0D56.1T3QC7BCQI5D7@proxmox.com> In-Reply-To: <D8WAP6RU0D56.1T3QC7BCQI5D7@proxmox.com> MIME-Version: 1.0 User-Agent: astroid/0.16.0 (https://github.com/astroidmail/astroid) Message-Id: <1743664476.2gt96bhyxx.astroid@yuna.none> X-SPAM-LEVEL: Spam detection results: 0 AWL 0.044 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_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment 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: [pve-devel] [PATCH v1 pve-storage 6/8] pluginbase: document image operation methods X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion <pve-devel.lists.proxmox.com> List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pve-devel>, <mailto:pve-devel-request@lists.proxmox.com?subject=unsubscribe> List-Archive: <http://lists.proxmox.com/pipermail/pve-devel/> List-Post: <mailto:pve-devel@lists.proxmox.com> List-Help: <mailto:pve-devel-request@lists.proxmox.com?subject=help> List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel>, <mailto:pve-devel-request@lists.proxmox.com?subject=subscribe> Reply-To: Proxmox VE development discussion <pve-devel@lists.proxmox.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" <pve-devel-bounces@lists.proxmox.com> T24gQXByaWwgMiwgMjAyNSA2OjMyIHBtLCBNYXggQ2FycmFyYSB3cm90ZToKPiBPbiBNb24gTWFy IDMxLCAyMDI1IGF0IDU6MTIgUE0gQ0VTVCwgRmFiaWFuIEdyw7xuYmljaGxlciB3cm90ZToKPj4g T24gTWFyY2ggMjYsIDIwMjUgMzoyMCBwbSwgTWF4IENhcnJhcmEgd3JvdGU6Cj4+ID4gQWRkIGRv Y3VtZW50YXRpb24gZm9yIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKPj4gPiAtIGxpc3RfaW1hZ2Vz Cj4+ID4gLSBjcmVhdGVfYmFzZQo+PiA+IC0gY2xvbmVfaW1hZ2UKPj4gPiAtIGFsbG9jX2ltYWdl Cj4+ID4gLSBmcmVlX2ltYWdlCj4+ID4gCj4+ID4gU2lnbmVkLW9mZi1ieTogTWF4IENhcnJhcmEg PG0uY2FycmFyYUBwcm94bW94LmNvbT4KPj4gPiBDby1hdXRob3JlZC1ieTogTWF4aW1pbGlhbm8g U2FuZG92YWwgPG0uc2FuZG92YWxAcHJveG1veC5jb20+Cj4+ID4gLS0tCj4+ID4gIHNyYy9QVkUv U3RvcmFnZS9QbHVnaW5CYXNlLnBtIHwgMTExICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKPj4gPiAgMSBmaWxlIGNoYW5nZWQsIDExMSBpbnNlcnRpb25zKCspCj4+ID4gCj4+ID4g ZGlmZiAtLWdpdCBhL3NyYy9QVkUvU3RvcmFnZS9QbHVnaW5CYXNlLnBtIGIvc3JjL1BWRS9TdG9y YWdlL1BsdWdpbkJhc2UucG0KPj4gPiBpbmRleCBiM2NlNjg0Li4zN2IxNDcxIDEwMDY0NAo+PiA+ IC0tLSBhL3NyYy9QVkUvU3RvcmFnZS9QbHVnaW5CYXNlLnBtCj4+ID4gKysrIGIvc3JjL1BWRS9T dG9yYWdlL1BsdWdpbkJhc2UucG0KPj4gPiBAQCAtNzIxLDI2ICs3MjEsMTM3IEBAIHN1YiBvbl9k ZWxldGVfaG9vayB7Cj4+ID4gIAo+PiA+ICA9Y3V0Cj4+ID4gIAo+PiA+ICs9aGVhZDMgJHBsdWdp bi0+bGlzdF9pbWFnZXMoJHN0b3JlaWQsIFwlc2NmZyBbLCAkdm1pZCwgXEB2b2xsaXN0LCBcJWNh Y2hlXSkKPj4gPiArCj4+ID4gK0I8UkVRVUlSRUQ6PiBNdXN0IGJlIGltcGxlbWVudGVkIGluIGV2 ZXJ5IHN0b3JhZ2UgcGx1Z2luLgo+PiA+ICsKPj4gPiArUmV0dXJucyBhIGxpc3RyZWYgb2YgYWxs IGRpc2sgaW1hZ2VzIG9mIGEgc3RvcmFnZS4gSWYgdGhlIHN0b3JhZ2UgZG9lcyBub3QKPj4gPiAr c3VwcG9ydCBzdG9yaW5nIGRpc2sgaW1hZ2VzLCByZXR1cm5zIGFuIGVtcHR5IGxpc3RyZWYuCj4+ ID4gKwo+PiA+ICtPcHRpb25hbGx5LCBpZiBDPFxAdm9sbGlzdD4gaXMgcHJvdmlkZWQsIHJldHVy biBvbmx5IGRpc2tzIHdob3NlIHZvbHVtZSBJRCBpcwo+PiA+ICt3aXRoaW4gQzxcQHZvbGxpc3Q+ LiBOb3RlIHRoYXQgdGhpcyB1c3VhbGx5IGhhcyBoaWdoZXIgcHJlY2VkZW5jZSB0aGFuCj4+ID4g K0M8JHZtaWQ+Lgo+IAo+IFVwZnJvbnQgbm90ZTogVW5sZXNzIEkgb3RoZXJ3aXNlIGNvbW1lbnQg c29tZXRoaW5nLCBJIGFncmVlIHdpdGggeW91Lgo+IEp1c3Qgc3BhcmluZyBteXNlbGYgZnJvbSB3 cml0aW5nIGFuZCB5b3UgZnJvbSByZWFkaW5nIHRvbyBtYW55IEFDS3MgOlAKPiAKPj4KPj4gd2hh dCBkb2VzIHVzdWFsbHkgbWVhbj8gd2hhdCBkb2VzICR2bWlkIGRvPwo+IAo+IFNvcnJ5LCB0aGlz IGdvdCBsb3N0IHdoZW4gdG9zc2luZyBvdXQgc29tZSByZWR1bmRhbnQgcGFyYWdyYXBocyBoZXJl Lgo+IAo+IFRoZSAidXN1YWxseSIgY2FuIGJlIGRyb3BwZWQ7IEM8JHZtaWQ+IGlzIHRoZSBndWVz dCdzIElEIChtZW50aW9uZWQgaW4KPiB0aGUgREVTQ1JJUFRJT04gaW4gcGF0Y2ggMDEpIGFuZCB1 bmxlc3MgQzxcQHZvbGxpc3Q+IGlzIHByb3ZpZGVkLCB0aGUKPiBpbWFnZXMgdGhhdCB0aGUgZ2l2 ZW4gQzwkdm1pZD4gb3ducyB3aWxsIGJlIHJldHVybmVkLgoKaW4gY2FzZSB0aGF0IHdhc24ndCBv YnZpb3VzIC0gSSBrbm93IHdoYXQgJHZtaWQgaXMgKGFuZCBhbHNvIHdoYXQgaXQKZG9lcykgLSBp dCBzaG91bGQgYmUgZXhwbGFpbmVkIHRvIHJlYWRlcnMgdGhhdCBkb24ndCAoeWV0KS4KClNvIEkg dGhpbmsgdGhpcyBzaG91bGQgc2F5IHNvbWV0aGluZyBsaWtlOgoKSWYgQzwkdm1pZD4gaXMgc2V0 LCBvbmx5IGltYWdlcyBvd25lZCBieSB0aGF0IFZNSUQgbXVzdCBiZSBpbmNsdWRlZCBpbgp0aGUg cmV0dXJuIHZhbHVlLgoKSWYgQzxcQHZvbGxpc3Q+IGlzIHNldCBhbmQgbm90IGVtcHR5LCB0aGUg cmV0dXJuIHZhbHVlIG11c3QgYmUgZmlsdGVyZWQKdXNpbmcgdGhlIGNvbnRhaW5lZCB2b2xpZHMu CgpJZiBib3RoIEM8JHZtaWQ+IGFuZCBDPFxAdm9sbGlzdD4gYXJlIHNldCwgb25seSBDPFxAdm9s bGlzdD4gc2hvdWxkIGJlCmhvbm9yZWQuCgphbmQgYWJvdXQgdGhhdCBsYXN0IHBhcnQgLSBkbyB3 ZSBhY3R1YWxseSBoYXZlIGNhbGxlcnMgdGhhdCBzZXQgYm90aD8gaWYKbm90LCBzaG91bGQgd2Ug aW5zdGVhZCByZWNvbW1lbmQgdHJlYXRpbmcgaXQgYXMgYW4gZXJyb3IgYW5kIGRvY3VtZW50IGl0 CmFzIHN1Y2g/Cgo+PiA+ICsKPj4gPiArQzxkaWU+cyBpbiBjYXNlIG9mIGVycm9ycy4KPj4gPiAr Cj4+ID4gK1RoaXMgbWV0aG9kIG1heSByZXVzZSBMPDwgY2FjaGVkIGluZm9ybWF0aW9uIHZpYSBD PFwlY2FjaGU+fC8iQ0FDSElORyBFWFBFTlNJVkUgT1BFUkFUSU9OUyIgPj4uCj4+ID4gKwo+PiA+ ICtUaGUgcmV0dXJuZWQgbGlzdHJlZiBoYXMgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmU6Cj4+ID4g Kwo+PiA+ICsgICAgWwo+PiA+ICsJewo+PiA+ICsJICAgIGN0aW1lID0+ICIxNjg5MTYzMzIyIiwg IyBjcmVhdGlvbiB0aW1lIGFzIHVuaXggdGltZXN0YW1wCj4+ID4gKwkgICAgZm9ybWF0ID0+ICJy YXciLAo+PiA+ICsJICAgIHNpemUgPT4gODU4OTkzNDU5MiwgIyBpbiBieXRlcyEKPj4gPiArCSAg ICB2bWlkID0+IDEwMSwKPj4gPiArCSAgICB2b2xpZCA9PiAibG9jYWwtbHZtOmJhc2UtMTAxLWRp c2stMCIsICMgdm9sdW1lIElELCBzdG9yYWdlLXNwZWNpZmljCj4+ID4gKwl9LAo+PiA+ICsJIyBb Li4uXQo+PiA+ICsgICAgXQo+PiA+ICsKPj4gPiArPWN1dAo+PiA+ICsKPj4gPiAgc3ViIGxpc3Rf aW1hZ2VzIHsKPj4gPiAgICAgIG15ICgkY2xhc3MsICRzdG9yZWlkLCAkc2NmZywgJHZtaWQsICR2 b2xsaXN0LCAkY2FjaGUpID0gQF87Cj4+ID4gICAgICBjcm9hayAiaW1wbGVtZW50IG1lIGluIHN1 Yi1jbGFzc1xuIjsKPj4gPiAgfQo+PiA+ICAKPj4gPiArPWhlYWQzICRwbHVnaW4tPmNyZWF0ZV9i YXNlKCRzdG9yZWlkLCBcJXNjZmcsICR2b2xuYW1lKQo+PiA+ICsKPj4gPiArQjxPUFRJT05BTDo+ IE1heSBiZSBpbXBsZW1lbnRlZCBpbiBhIHN0b3JhZ2UgcGx1Z2luLgo+PiA+ICsKPj4gPiArQ3Jl YXRlcyBhIGJhc2Ugdm9sdW1lIGZyb20gYW4gZXhpc3Rpbmcgdm9sdW1lLCBhbGxvd2luZyB0aGUg dm9sdW1lIHRvIGJlCj4+Cj4+IHRoaXMgaXMgbWlzbGVhZGluZyAtIGl0IGRvZXNuJ3QgY3JlYXRl IGEgYmFzZSB2b2x1bWUgZnJvbSBhbiBleGlzdGluZwo+PiB2b2x1bWUsIGl0ICpjb252ZXJ0cyog YW4gZXhpc3Rpbmcgdm9sdW1lIGludG8gYSBiYXNlIHZvbHVtZSEKPiAKPiBPaCBkYW5nLCB0aGFu a3MgZm9yIHBvaW50aW5nIHRoaXMgb3V0ISBTb3JyeSBmb3IgdGhlIG92ZXJzaWdodC4KPiAKPj4K Pj4gPiArTDw8IGNsb25lZHwvIiRwbHVnaW4tPmNsb25lX2ltYWdlKC4uLikiID4+LiBUaGlzIGNs b25lZCB2b2x1bWUgKHVzdWFsbHkKPj4gPiArYSBkaXNrIGltYWdlKSBtYXkgdGhlbiBiZSB1c2Vk IGFzIGEgYmFzZSBmb3IgdGhlIHB1cnBvc2Ugb2YgY3JlYXRpbmcgbGlua2VkCj4+Cj4+IHRoaXMg aXMgd3Jvbmc/IHRoZXJlIGlzIG5vIGNsb25lZCB2b2x1bWUgeWV0PyBhbmQgYWxsIG9mIHRoaXMg b25seQo+PiBhcHBsaWVzIHRvIGltYWdlcyBhbmQgbm90IG90aGVyIHZvbHVtZXM/Cj4+Cj4+ID4g K2Nsb25lcy4gU2VlIEw8QzxQVkU6OlN0b3JhZ2U6Okx2bVRoaW5QbHVnaW4+PiBhbmQKPj4gPiAr TDxDPFBWRTo6U3RvcmFnZTo6WkZTUG9vbFBsdWdpbj4+IGZvciBleGFtcGxlIGltcGxlbWVudGF0 aW9ucy4KPj4gPiArCj4+ID4gK09uIGNvbXBsZXRpb24sIHJldHVybnMgdGhlIG5hbWUgb2YgdGhl IG5ldyBiYXNlIHZvbHVtZSAodGhlIG5ldyBDPCR2b2xuYW1lPikuCj4+ID4gKwo+PiA+ICtUaGlz IG1ldGhvZCBpcyBjYWxsZWQgaW4gdGhlIGNvbnRleHQgb2YgQzxMPDwgY2x1c3Rlcl9sb2NrX3N0 b3JhZ2UoKXwvImNsdXN0ZXJfbG9ja19zdG9yYWdlKC4uLikiID4+PiwKPj4gPiAraS5lLiB3aGVu IHRoZSBzdG9yYWdlIGlzIEI8bG9ja2VkPi4KPj4KPj4gU2hvdWxkbid0IHRoaXMgc2F5IHRoYXQg aXQgKnNob3VsZCogYmUgY2FsbGVkIGluIGEgbG9ja2VkIGNvbnRleHQ/Cj4+Cj4+ID4gKwo+PiA+ ICs9Y3V0Cj4+ID4gKwo+PiA+ICBzdWIgY3JlYXRlX2Jhc2Ugewo+PiA+ICAgICAgbXkgKCRjbGFz cywgJHN0b3JlaWQsICRzY2ZnLCAkdm9sbmFtZSkgPSBAXzsKPj4gPiAgICAgIGNyb2FrICJpbXBs ZW1lbnQgbWUgaW4gc3ViLWNsYXNzXG4iOwo+PiA+ICB9Cj4+ID4gIAo+PiA+ICs9aGVhZDMgJHBs dWdpbi0+Y2xvbmVfaW1hZ2UoJHNjZmcsICRzdG9yZWlkLCAkdm9sbmFtZSwgJHZtaWQgWywgJHNu YXBdKQo+PiA+ICsKPj4gPiArPWhlYWQzICRwbHVnaW4tPmNsb25lX2ltYWdlKC4uLikKPj4gPiAr Cj4+ID4gK0I8UkVRVUlSRUQ6PiBNdXN0IGJlIGltcGxlbWVudGVkIGluIGV2ZXJ5IHN0b3JhZ2Ug cGx1Z2luLgo+Pgo+PiBub3QgcmVhbGx5PyB0aGVyZSdzIGEgZmVhdHVyZSBndWFyZCBmb3IgaXQs IHNvIG9ubHkgc3RvcmFnZSBwbHVnaW5zIHRoYXQKPj4gc3VwcG9ydCBpdCBzaG91bGQgZXZlciBn ZXQgaXQgY2FsbGVkIGFueXdheS4uCj4+Cj4+IHdoYXQgZG9lcyAkdm1pZCBtZWFuPwo+IAo+IFNl ZSBhYm92ZTsgdGhlIGd1ZXN0J3MgSUQuIFNpbmNlIGl0IHdhcyB1bmNsZWFyLCB0aGUgcGFyYW1l dGVyIHNob3VsZAo+IHByb2JhYmx5IGJlIGV4cGxhaW5lZCBoZXJlIChhbmQgYWxzbyBhYm92ZSkg aW5zdGVhZCBvZiAoanVzdCkgaW4gdGhlCj4gREVTQ1JJUFRJT04gc2VjdGlvbi4KCkkga25vdyB3 aGF0IGEgdm1pZCBpcyA7KSB0aGUgcXVlc3Rpb24gaXMgd2hhdCBkb2VzIHRoaXMgcGFyYW1ldGVy ICptZWFuKgpmb3IgdGhpcyBwYXJ0aWN1bGFyIG1ldGhvZD8KCkM8JHZtaWQ+IGNvbnRhaW5zIHRo ZSBvd25lciBvZiB0aGUgbmV3IHZvbHVtZSwgd2hpY2ggbXVzdCBiZSBlbmNvZGVkIGluCnRoZSBy ZXR1cm5lZCB2b2xpZC4KCm9yIHNvbWV0aGluZyBsaWtlIHRoYXQ/Cgo+PiA+ICsKPj4gPiArQ2xv bmVzIGEgZGlzayBpbWFnZSBvciBhIHNuYXBzaG90IG9mIGFuIGltYWdlLCByZXR1cm5pbmcgdGhl IG5hbWUgb2YgdGhlIG5ldwo+PiA+ICtpbWFnZSAodGhlIG5ldyBDPCR2b2xuYW1lPikuIE5vdGUg dGhhdCBJPGNsb25pbmc+IGhlcmUgbWVhbnMgdG8gY3JlYXRlIGEgbGlua2VkCj4+ID4gK2Nsb25l IGFuZCBub3QgZHVwbGljYXRpbmcgYW4gaW1hZ2UuIFNlZSBMPEM8UFZFOjpTdG9yYWdlOjpMdm1U aGluUGx1Z2luPj4gYW5kCj4+ID4gK0w8QzxQVkU6OlN0b3JhZ2U6OlpGU1Bvb2xQbHVnaW4+PiBm b3IgZXhhbXBsZSBpbXBsZW1lbnRhdGlvbnMuCj4+Cj4+IHRoZW4gd2h5IG5vdCBzdGFydCB3aXRo Cj4+Cj4+ICJDcmVhdGVzIGEgbGlua2VkIGNsb25lIG9mIGFuIGV4aXN0aW5nIGRpc2sgaW1hZ2Ug b3Igc25hcHNob3Qgb2YgYW4KPj4gaW1hZ2UiCj4+Cj4+ID8gbWF5YmUgYWxzbyBpbmNsdWRlIHRo YXQgdW5sZXNzIHRoZSBsaW5rZWQgY2xvbmUgaXMgMTAwJSBpbmRlcGVuZGVudAo+PiBmcm9tIHRo ZSBiYXNlIChvbmx5IHRydWUgZm9yIExWTSB0aGluIGF0bT8pLCB0aGUgbmV3IHZvbGlkIHNob3Vs ZCBlbmNvZGUKPj4gdGhlIGJhc2UtPmNsb25lIHJlbGF0aW9uIGluIHRoZSB2b2xuYW1lPwo+Pgo+ PiA+ICsKPj4gPiArQzxkaWU+cyBpbiBjYXNlIG9mIGFuIGVycm9yIG9mIGlmIHRoZSB1bmRlcmx5 aW5nIHN0b3JhZ2UgZG9lc24ndCBzdXBwb3J0Cj4+Cj4+IHMvb2Yvb3IvCj4+Cj4+ID4gK2Nsb25p bmcgaW1hZ2VzLgo+PiA+ICsKPj4gPiArVGhpcyBtZXRob2QgaXMgY2FsbGVkIGluIHRoZSBjb250 ZXh0IG9mIEM8TDw8IGNsdXN0ZXJfbG9ja19zdG9yYWdlKCl8LyJjbHVzdGVyX2xvY2tfc3RvcmFn ZSguLi4pIiA+Pj4sCj4+ID4gK2kuZS4gd2hlbiB0aGUgc3RvcmFnZSBpcyBCPGxvY2tlZD4uCj4+ Cj4+IHNhbWUgYXMgYWJvdmUKPj4KPj4gPiArCj4+ID4gKz1jdXQKPj4gPiArCj4+ID4gIHN1YiBj bG9uZV9pbWFnZSB7Cj4+ID4gICAgICBteSAoJGNsYXNzLCAkc2NmZywgJHN0b3JlaWQsICR2b2xu YW1lLCAkdm1pZCwgJHNuYXApID0gQF87Cj4+ID4gICAgICBjcm9hayAiaW1wbGVtZW50IG1lIGlu IHN1Yi1jbGFzc1xuIjsKPj4gPiAgfQo+PiA+ICAKPj4gPiArPWhlYWQzICRwbHVnaW4tPmFsbG9j X2ltYWdlKCRzdG9yZWlkLCAkc2NmZywgJHZtaWQsICRmbXQsICRuYW1lLCAkc2l6ZSkKPj4gPiAr Cj4+ID4gK0I8UkVRVUlSRUQ6PiBNdXN0IGJlIGltcGxlbWVudGVkIGluIGV2ZXJ5IHN0b3JhZ2Ug cGx1Z2luLgo+PiA+ICsKPj4gPiArQWxsb2NhdGVzIGEgZGlzayBpbWFnZSB3aXRoIHRoZSBnaXZl biBmb3JtYXQgQzwkZm10PiBhbmQgQzwkc2l6ZT4gaW4gYnl0ZXMsCj4+ID4gK3JldHVybmluZyB0 aGUgbmFtZSBvZiB0aGUgbmV3IGltYWdlICh0aGUgbmV3IEM8JHZvbG5hbWU+KS4gU2VlCj4+ID4g K0M8TDw8IHBsdWdpbmRhdGEoKXwvIiRwbHVnaW4tPnBsdWdpbmRhdGEoKSIgPj4+IGZvciBhbGwg ZGlzayBmb3JtYXRzLgo+PiA+ICsKPj4gPiArT3B0aW9uYWxseSwgaWYgZ2l2ZW4sIHNldCB0aGUg bmFtZSBvZiB0aGUgaW1hZ2UgdG8gQzwkbmFtZT4uIElmIEM8JG5hbWU+IGlzbid0Cj4+ID4gK3By b3ZpZGVkLCB0aGUgbmV4dCBuYW1lIHNob3VsZCBiZSBkZXRlcm1pbmVkIHZpYSBDPEw8PCBmaW5k X2ZyZWVfZGlza25hbWUoKXwvIiRwbHVnaW4tPmZpbmRfZnJlZV9kaXNrbmFtZSguLi4pIiA+Pj4u Cj4+Cj4+IGEgc3VpdGFibGUgbmFtZSBzaG91bGQgYmUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQs IHVubGVzcyB3ZSByZWFsbHkgd2FudAo+PiB0byBzdGFiaWxpemUgZmluZF9mcmVlX2Rpc2tuYW1l IGFzIHBhcnQgb2YgdGhlIEFQSS4uCj4+Cj4+IHdoYXQgZG9lcyAkdm1pZCBtZWFuPwoKaGVyZSBh cyB3ZWxsLCBzaW1pbGFyIHRvIGNsb25lX2ltYWdlIGFib3ZlCgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KcHZlLWRldmVsIG1haWxpbmcgbGlzdApwdmUt ZGV2ZWxAbGlzdHMucHJveG1veC5jb20KaHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmlu L21haWxtYW4vbGlzdGluZm8vcHZlLWRldmVsCg==