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 35C461FF17C
	for <inbox@lore.proxmox.com>; Wed,  2 Apr 2025 18:33:06 +0200 (CEST)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id A65F81F5F3;
	Wed,  2 Apr 2025 18:32:55 +0200 (CEST)
Mime-Version: 1.0
Date: Wed, 02 Apr 2025 18:32:21 +0200
Message-Id: <D8WAPGBPBNPZ.1D4ISTIVN7UEN@proxmox.com>
To: "Proxmox VE development discussion" <pve-devel@lists.proxmox.com>
From: "Max Carrara" <m.carrara@proxmox.com>
X-Mailer: aerc 0.18.2-0-ge037c095a049
References: <20250326142059.261938-1-m.carrara@proxmox.com>
 <20250326142059.261938-9-m.carrara@proxmox.com>
 <1743495535.spdhir37c5.astroid@yuna.none>
In-Reply-To: <1743495535.spdhir37c5.astroid@yuna.none>
X-SPAM-LEVEL: Spam detection results:  0
 AWL 0.079 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
 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 8/8] pluginbase: document
 import and export 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>

T24gVHVlIEFwciAxLCAyMDI1IGF0IDEwOjQwIEFNIENFU1QsIEZhYmlhbiBHcsO8bmJpY2hsZXIg
d3JvdGU6Cj4gQ0NpbmcgRmlvbmEgaW4gY2FzZSBvZiBmdXJ0aGVyIGlucHV0IHcuci50LiBleHBv
cnQvaW1wb3J0IHRoaW5ncwo+Cj4gT24gTWFyY2ggMjYsIDIwMjUgMzoyMCBwbSwgTWF4IENhcnJh
cmEgd3JvdGU6Cj4gPiBBZGFwdCB0aGUgcHJldmlvdXMgZGVzY3JpcHRpb24sIHNsaWdodGx5IHJl
d29yZGluZyBpdCBhbmQgZm9ybWF0dGluZwo+ID4gaXQgZm9yIFBPRCB1bmRlciB0aGUgSU1QT1JU
UyBBTkQgRVhQT1JUUyBzZWN0aW9uLgo+ID4gCj4gPiBBbHNvIGFkZCBkb2NzdHJpbmdzIGZvciB0
aGUgZm9sbG93aW5nIG1ldGhvZHM6Cj4gPiAtIHZvbHVtZV9leHBvcnQKPiA+IC0gdm9sdW1lX2V4
cG9ydF9mb3JtYXRzCj4gPiAtIHZvbHVtZV9pbXBvcnQKPiA+IC0gdm9sdW1lX2ltcG9ydF9mb3Jt
YXRzCj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IE1heCBDYXJyYXJhIDxtLmNhcnJhcmFAcHJveG1v
eC5jb20+Cj4gPiBDby1hdXRob3JlZC1ieTogTWF4aW1pbGlhbm8gU2FuZG92YWwgPG0uc2FuZG92
YWxAcHJveG1veC5jb20+Cj4gPiAtLS0KPiA+ICBzcmMvUFZFL1N0b3JhZ2UvUGx1Z2luQmFzZS5w
bSB8IDEzNCArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCj4gPiAgMSBmaWxlIGNo
YW5nZWQsIDEwNSBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkKPiA+IAo+ID4gZGlmZiAt
LWdpdCBhL3NyYy9QVkUvU3RvcmFnZS9QbHVnaW5CYXNlLnBtIGIvc3JjL1BWRS9TdG9yYWdlL1Bs
dWdpbkJhc2UucG0KPiA+IGluZGV4IGExYmZjOGQuLmNmYTUwODcgMTAwNjQ0Cj4gPiAtLS0gYS9z
cmMvUFZFL1N0b3JhZ2UvUGx1Z2luQmFzZS5wbQo+ID4gKysrIGIvc3JjL1BWRS9TdG9yYWdlL1Bs
dWdpbkJhc2UucG0KPiA+IEBAIC0xMzQ1LDU1ICsxMzQ1LDEzMSBAQCBzdWIgcHJ1bmVfYmFja3Vw
cyB7Cj4gPiAgCj4gPiAgPWhlYWQyIElNUE9SVFMgQU5EIEVYUE9SVFMKPiA+ICAKPiA+ICtBbnkg
cGF0aC1iYXNlZCBzdG9yYWdlIGlzIGFzc3VtZWQgdG8gc3VwcG9ydCBDPHJhdz4gYW5kIEM8dGFy
PiBzdHJlYW1zLCBzbwo+ID4gK3RoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9ucyBpbiBDPEw8UFZF
OjpTdG9yYWdlOjpQbHVnaW4+PiB3aWxsIHJldHVybiB0aGlzIGlmCj4gPiArQzw8ICRzY2ZnLT57
cGF0aH0gPj4gaXMgc2V0ICh0aGVyZWJ5IG1pbWlja2luZyB0aGUgb2xkIEM8PCBQVkU6OlN0b3Jh
Z2U6OnN0b3JhZ2VfbWlncmF0ZSgpID4+Cj4gPiArZnVuY3Rpb24pLgoKUmVwbHlpbmcgdXAgaGVy
ZSB0byBhZGRyZXNzIGFsbCBvZiB0aGUgY29tbWVudHMgYmVsb3c6IFllYWgsIHdlJ2xsCnJld29y
ayB0aGlzIGVudGlyZSBzZWN0aW9uIGhlcmUsIEkgdGhpbmssIGFuZCBleHBhbmQgdXBvbiBldmVy
eXRoaW5nCm1vcmUuIFNlZW1zIGxpa2Ugd2UgbWlzc2VkIGEgbG90IG9mIGRldGFpbHMuIDpzCgo+
Cj4gbWVoLCBJIGRvbid0IHRoaW5rIHRoaXMgbWFrZXMgc2Vuc2UgaWYgd2Ugd2FudCB0byBkb2N1
bWVudCB0aGUKPiBpbnRlcmZhY2UsIHdlIHNob3VsZCBkb2N1bWVudCB0aGUgaW50ZXJmYWNlLCBh
bmQgbm90IHRoZSBpbXBsZW1lbnRhdGlvbgo+IG9mIG91ciBwbHVnaW4gaGllcmFyY2h5Li4KPgo+
ID4gKwo+ID4gK1BsdWdpbnMgbWF5IGZhbGwgYmFjayB0byBtZXRob2RzIGxpa2UgQzx2b2x1bWVf
ZXhwb3J0PiwgQzx2b2x1bWVfaW1wb3J0PiwgZXRjLgo+ID4gK29mIEM8TDxQVkU6OlN0b3JhZ2U6
OlBsdWdpbj4+IGluIGNhc2UgdGhlIGZvcm1hdCBkb2Vzbid0IG1hdGNoIHRoZWlyCj4gPiArc3Bl
Y2lhbGl6ZWQgaW1wbGVtZW50YXRpb25zIHRvIHJldXNlIHRoZSBDPHJhdz4vQzx0YXI+IGNvZGUu
Cj4KPiBhbmQgdGhlc2Ugc2hvdWxkIG1vdmUgdG8gc29tZSBoZWxwZXIgbW9kdWxlIGFuZCBiZSB1
c2VkIGJ5Cj4gUFZFOjpTdG9yYWdlOjpQbHVnaW4sIGlmIHdlIHdhbnQgdG8gYWxsb3cgZXh0ZXJu
YWwgcGx1Z2lucyB0byByZS11c2UKPiB0aGVtIGFzIGJhc2ljIGltcGxlbWVudGF0aW9uLi4KPgo+
ID4gKwo+ID4gKz1oZWFkMyBGT1JNQVRTCj4gPiArCj4gPiArVGhlIGZvbGxvd2luZyBmb3JtYXRz
IGFyZSBhbGwgcHJlZml4ZWQgd2l0aCBpbWFnZSBpbmZvcm1hdGlvbiBpbiB0aGUgZm9ybSBvZiBh
Cj4gPiArNjQgYml0IGxpdHRsZSBlbmRpYW4gdW5zaWduZWQgaW50ZWdlciAoQzw8IHBhY2soJ1Fc
PCcpID4+KSBpbiBvcmRlciB0byBiZSBhYmxlCj4gPiArdG8gcHJlYWxsb2NhdGUgdGhlIGltYWdl
IG9uIHN0b3JhZ2VzIHdoaWNoIHJlcXVpcmUgaXQuCj4KPiAiaW1hZ2UgaW5mb3JtYXRpb24iIHNo
b3VsZCBtYXliZSBiZSBhIGJpdCBtb3JlIHByZWNpc2UsIGl0J3MgZWFzeSB0bwo+IGd1ZXNzIGZy
b20gdGhlIG5hbWUgdGhhdCBpbmZvcm1hdGlvbj09c2l6ZSwgYnV0IHdoeSBub3Qgc3BlbGwgaXQg
b3V0Pwo+Cj4gPiArCj4gPiArPW92ZXIKPiA+ICsKPiA+ICs9aXRlbSAqIEM8PCByYXcrc2l6ZSA+
PiAoaW1hZ2UgZmlsZXMgb25seSkKPiA+ICsKPiA+ICtBIHJhdyBiaW5hcnkgZGF0YSBzdHJlYW0g
YXMgcHJvZHVjZWQgdmlhIEM8PCBkZCBpZj0kSU1BR0VfRklMRSA+Pi4KPgo+IEEgYmluYXJ5IGRh
dGEgc3RyZWFtIGNvbnRhaW5pbmcgYSB2b2x1bWUncyBsb2dpY2FsIHJhdyBkYXRhLCBmb3IgZXhh
bXBsZQo+IGFzIHByb2R1Y2VkIHZpYSAuLiBpZiB0aGUgaW1hZ2UgaXMgYWxyZWFkeSBpbiByYXcg
Zm9ybWF0LCAqb3IgdmlhCj4gcWVtdS1pbWcgY29udmVydCogaWYgbm90Lgo+Cj4gPiArCj4gPiAr
PWl0ZW0gKiBDPDwgcWNvdzIrc2l6ZSA+PiwgQzw8IHZtZGsgPj4gKGltYWdlIGZpbGVzIG9ubHkp
Cj4KPiBtaXNzaW5nICtzaXplIGZvciB2bWRrCj4KPiA+ICsKPiA+ICtBIHJhdyBDPHFjb3cyPi9D
PHZtZGs+Ly4uLiBmaWxlIGFzIHByb2R1Y2VkIHZpYSBDPDwgZGQgaWY9c29tZV9maWxlLnFjb3cy
ID4+Cj4gPiArZm9yIGZpbGVzIHdoaWNoIGFyZSBhbHJlYWR5IGluIEM8cWNvdzI+IGZvcm1hdCwg
b3IgdmlhIEM8cWVtdS1pbWcgY29udmVydD4uCj4KPiAiQSByYXcgcWNvdzIvdm1kay8uLiBmaWxl
IiBpcyBjb25mdXNpbmcuLgo+Cj4gQSBiaW5hcnkgZGF0YSBzdHJlYW0gY29udGFpbmluZyB0aGUg
cWNvdzIvdm1kay1mb3JtYXR0ZWQgY29udGVudHMgb2YgYQo+IHFjb3cyL3ZtZGsgZmlsZSBhcyBw
cm9kdWNlZCB2aWEgLi4KPgo+IHRoZSBxZW11LWltZyBjb252ZXJ0IHBhcnQgZ290IG1vdmVkIHRv
IHRoZSB3cm9uZyBmb3JtYXQsIGl0J3Mgbm90IG5lZWRlZAo+IHRvIHByb2R1Y2UgYSBxY293Mitz
aXplIHN0cmVhbSBmb3IgcmF3IGZpbGVzICh3ZSBkb24ndCBkbyB0aGF0KSwgYnV0IHRvCj4gcHJv
ZHVjZSBhIHJhdytzaXplIHN0cmVhbSBmcm9tIGEgcWNvdzIgZmlsZSwgc2VlIGFib3ZlLgo+Cj4g
PiArCj4gPiArQjxOT1RFOj4gVGhlc2UgZm9ybWF0cyBhcmUgb25seSB2YWxpZCB3aXRoIEM8JHdp
dGhfc25hcHNob3RzPiBiZWluZyB0cnVlIChDPDE+KS4KPgo+IHRoYXQncyBub3Qgc3RyaWN0bHkg
c3BlYWtpbmcgdHJ1ZSwgYnV0IGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCBvZiB0aGUKPiBjdXJy
ZW50IGltcGxlbWVudGF0aW9uLiB3aGF0IGlzIHRydWUgaXMgdGhhdCByYXcrc2l6ZSBjYW4gbm90
IGNvbnRhaW4KPiBzbmFwc2hvdHMgZm9yIG9idmlvdXMgcmVhc29ucy4KPgo+ID4gKwo+ID4gKz1p
dGVtICogQzw8IHRhcitzaXplID4+IChzdWJ2b2x1bWVzIG9ubHkpCj4gPiArCj4gPiArQSBHTlUg
Qzx0YXI+IHN0cmVhbSBjb250YWluaW5nIGp1c3QgdGhlIGlubmVyIGNvbnRlbnRzIG9mIHRoZSBz
dWJ2b2x1bWUuIFRoaXMKPiA+ICtkb2VzIG5vdCBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZSBjb250
ZW50cyBvZiBhIHByaXZpbGVnZWQgb3IgdW5wcml2aWxlZ2VkCj4gPiArY29udGFpbmVyLiBJbiBv
dGhlciB3b3JkcywgdGhpcyBpcyBmcm9tIHRoZSByb290IHVzZXIgbmFtZXNwYWNlJ3MgcG9pbnQg
b2Ygdmlldwo+ID4gK3dpdGggbm8gdWlkLW1hcHBpbmcgaW4gZWZmZWN0LiBBcyBwcm9kdWNlZCB2
aWEgZS5nLgo+ID4gK0M8PCB0YXIgLUMgdm0tMTAwLWRpc2stMS5zdWJ2b2wgLWNwZiBvdXRwdXRf
ZmlsZS5kYXQgLiA+Pgo+Cj4gd2hhdCBpcyAiaW5uZXIiPyBzaG91bGQvbXVzdCB0aGUgY29udGVu
dCBiZSByZWxhdGl2ZSBvciBhYnNvbHV0ZT8KPiBhbmNob3JlZD8gLi4uCj4KPiA+ICsKPiA+ICs9
YmFjawo+ID4gKwo+ID4gID1jdXQKPiA+ICAKPiA+IC0jIEltcG9ydC9FeHBvcnQgaW50ZXJmYWNl
Ogo+ID4gLSMgICBBbnkgcGF0aCBiYXNlZCBzdG9yYWdlIGlzIGFzc3VtZWQgdG8gc3VwcG9ydCAn
cmF3JyBhbmQgJ3Rhcicgc3RyZWFtcywgc28KPiA+IC0jICAgdGhlIGRlZmF1bHQgaW1wbGVtZW50
YXRpb25zIHdpbGwgcmV0dXJuIHRoaXMgaWYgJHNjZmctPntwYXRofSBpcyBzZXQsCj4gPiAtIyAg
IG1pbWlja2luZyB0aGUgb2xkIFBWRTo6U3RvcmFnZTo6c3RvcmFnZV9taWdyYXRlKCkgZnVuY3Rp
b24uCj4gPiAtIwo+ID4gLSMgUGx1Z2lucyBtYXkgZmFsbCBiYWNrIHRvIFBWRTo6U3RvcmFnZTo6
UGx1Z2luOjp2b2x1bWVfe2V4cG9ydCxpbXBvcnR9Li4uCj4gPiAtIyAgIGZ1bmN0aW9ucyBpbiBj
YXNlIHRoZSBmb3JtYXQgZG9lc24ndCBtYXRjaCB0aGVpciBzcGVjaWFsaXplZAo+ID4gLSMgICBp
bXBsZW1lbnRhdGlvbnMgdG8gcmV1c2UgdGhlIHJhdy90YXIgY29kZS4KPiA+IC0jCj4gPiAtIyBG
b3JtYXQgc3BlY2lmaWNhdGlvbjoKPiA+IC0jICAgVGhlIGZvbGxvd2luZyBmb3JtYXRzIGFyZSBh
bGwgcHJlZml4ZWQgd2l0aCBpbWFnZSBpbmZvcm1hdGlvbiBpbiB0aGUgZm9ybQo+ID4gLSMgICBv
ZiBhIDY0IGJpdCBsaXR0bGUgZW5kaWFuIHVuc2lnbmVkIGludGVnZXIgKHBhY2soJ1E8JykpIGlu
IG9yZGVyIHRvIGJlIGFibGUKPiA+IC0jICAgdG8gcHJlYWxsb2NhdGUgdGhlIGltYWdlIG9uIHN0
b3JhZ2VzIHdoaWNoIHJlcXVpcmUgaXQuCj4gPiAtIwo+ID4gLSMgICByYXcrc2l6ZTogKGltYWdl
IGZpbGVzIG9ubHkpCj4gPiAtIyAgICAgQSByYXcgYmluYXJ5IGRhdGEgc3RyZWFtIHN1Y2ggYXMg
cHJvZHVjZWQgdmlhIGBkZCBpZj1UaGVJbWFnZUZpbGVgLgo+ID4gLSMgICBxY293MitzaXplLCB2
bWRrOiAoaW1hZ2UgZmlsZXMgb25seSkKPiA+IC0jICAgICBBIHJhdyBxY293Mi92bWRrLy4uLiBm
aWxlIHN1Y2ggYXMgcHJvZHVjZWQgdmlhIGBkZCBpZj1zb21lLnFjb3cyYCBmb3IKPiA+IC0jICAg
ICBmaWxlcyB3aGljaCBhcmUgYWxyZWFkeSBpbiBxY293MiBmb3JtYXQsIG9yIHZpYSBgcWVtdS1p
bWcgY29udmVydGAuCj4gPiAtIyAgICAgTm90ZSB0aGF0IHRoZXNlIGZvcm1hdHMgYXJlIG9ubHkg
dmFsaWQgd2l0aCAkd2l0aF9zbmFwc2hvdHMgYmVpbmcgdHJ1ZS4KPiA+IC0jICAgdGFyK3NpemU6
IChzdWJ2b2x1bWVzIG9ubHkpCj4gPiAtIyAgICAgQSBHTlUgdGFyIHN0cmVhbSBjb250YWluaW5n
IGp1c3QgdGhlIGlubmVyIGNvbnRlbnRzIG9mIHRoZSBzdWJ2b2x1bWUuCj4gPiAtIyAgICAgVGhp
cyBkb2VzIG5vdCBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZSBjb250ZW50cyBvZiBhIHByaXZpbGVn
ZWQgb3IKPiA+IC0jICAgICB1bnByaXZpbGVnZWQgY29udGFpbmVyLiBJbiBvdGhlciB3b3Jkcywg
dGhpcyBpcyBmcm9tIHRoZSByb290IHVzZXIKPiA+IC0jICAgICBuYW1lc3BhY2UncyBwb2ludCBv
ZiB2aWV3IHdpdGggbm8gdWlkLW1hcHBpbmcgaW4gZWZmZWN0Lgo+ID4gLSMgICAgIEFzIHByb2R1
Y2VkIHZpYSBgdGFyIC1DIHZtLTEwMC1kaXNrLTEuc3Vidm9sIC1jcGYgVGhlT3V0cHV0RmlsZS5k
YXQgLmAKPiA+ICs9aGVhZDMgJHBsdWdpbi0+dm9sdW1lX2V4cG9ydChcJXNjZmcsICRzdG9yZWlk
LCAkZmgsICR2b2xuYW1lLCAkZm9ybWF0IFssICRzbmFwc2hvdCwgJGJhc2Vfc25hcHNob3QsICR3
aXRoX3NuYXBzaG90c10pCj4gPiArCj4gPiArPWhlYWQzICRwbHVnaW4tPnZvbHVtZV9leHBvcnQo
Li4uKQo+ID4gKwo+ID4gK0V4cG9ydHMgYSB2b2x1bWUgb3IgYSB2b2x1bWUncyBDPCRzbmFwc2hv
dD4gaW50byBhIGZpbGUgaGFuZGxlIEM8JGZoPiBhcyBhCj4gPiArc3RyZWFtIHdpdGggYSBkZXNp
cmVkIGV4cG9ydCBDPCRmb3JtYXQ+LiBTZWUgTDxGT1JNQVRTPiBmb3IgYWxsIGltcG9ydC9leHBv
cnQKPiA+ICtmb3JtYXRzLgo+ID4gKwo+ID4gK09wdGlvbmFsbHksIEM8JHNuYXBzaG90PiAoaWYg
cHJvdmlkZWQpIG1heSBoYXZlIGEgQzwkYmFzZV9zbmFwc2hvdD4sIGFuZAo+ID4gK0M8JHdpdGhf
c25hcHNob3RzPiBzdGF0ZXMgd2hldGhlciB0aGUgdm9sdW1lIGhhcyBzbmFwc2hvdHMgb3ZlcmFs
bC4KPgo+IHRoaXMgaXMgaW5jb21wbGV0ZS93cm9uZwo+Cj4gJHdpdGhfc25hcHNob3RzIG1lYW5z
IHRoZSBleHBvcnQgc2hvdWxkIGluY2x1ZGUgc25hcHNob3RzLCBub3Qgd2hldGhlcgo+IHRoZSB2
b2x1bWUgaGFzIHNuYXBzaG90cy4uCj4gJHNuYXBzaG90IG1lYW5zICJ0aGlzIGlzIHRoZSBzbmFw
c2hvdCB0byBleHBvcnQiIGlmIG9ubHkgZXhwb3J0aW5nIHRoZQo+IHNuYXBzaG90ICgkd2l0aF9z
bmFwc2hvdHMgPT0gMCksIG9yICJ0aGlzIGlzIHRoZSAqbGFzdCogc25hcHNob3QgZXhwb3J0Igo+
IGlmIGV4cG9ydGluZyBhIHN0cmVhbSBvZiBzbmFwc2hvdHMgKCR3aXRoX3NuYXBzaG90cyA9PSAx
KQo+ICRiYXNlX3NuYXBzaG90IG1lYW5zICJ0aGlzIGlzIHRoZSBzdGFydCBvZiB0aGUgc25hcHNo
b3QgcmFuZ2UgdG8gZXhwb3J0Igo+IChpLmUuLCBkbyBhbiBpbmNyZW1lbnRhbCBleHBvcnQgb24g
dG9wIG9mIHRoaXMgYmFzZSkKPgo+IHRoaXMgaXMgbW9zdGx5IG9ubHkgcmVsZXZhbnQgZm9yIHpm
cyBhdCB0aGUgbW9tZW50IChvdGhlciBzdG9yYWdlcyBjYW4KPiBlaXRoZXIgZXhwb3J0IGEgdm9s
dW1lIGluY2x1ZGluZyBpdHMgc25hcHNob3RzLCBvciBqdXN0IHRoZSB2b2x1bWUsIGJ1dAo+IG5v
IGNvbXBsaWNhdGVkIGluY3JlbWVudGFsIHN0cmVhbXMgb2Ygc25hcHNob3RzKSwgYnV0IHdpbGwg
Y2hhbmdlIG9uY2UKPiB3ZSBpbXBsZW1lbnQgcmVwbGljYXRpb24gZXhwb3J0L2ltcG9ydCBmb3Ig
b3RoZXIgc3RvcmFnZXMuLgo+Cj4gPiArCj4gPiArQzxkaWU+cyBpbiBvcmRlciB0byBhYm9ydCB0
aGUgZXhwb3J0IGlmIHRoZXJlIGFyZSAoZ3JhdmUpIHByb2JsZW1zLCBpZiB0aGUKPiA+ICtnaXZl
biBDPCRmb3JtYXQ+IGlzIG5vdCBzdXBwb3J0ZWQsIG9yIGlmIGV4cG9ydGluZyB2b2x1bWVzIGlz
IG5vdCBzdXBwb3J0ZWQgYXMKPiA+ICthIHdob2xlLgo+ID4gKwo+ID4gKz1jdXQKPiA+ICAKPiA+
IC0jIEV4cG9ydCBhIHZvbHVtZSBpbnRvIGEgZmlsZSBoYW5kbGUgYXMgYSBzdHJlYW0gb2YgZGVz
aXJlZCBmb3JtYXQuCj4gPiAgc3ViIHZvbHVtZV9leHBvcnQgewo+ID4gICAgICBteSAoJGNsYXNz
LCAkc2NmZywgJHN0b3JlaWQsICRmaCwgJHZvbG5hbWUsICRmb3JtYXQsICRzbmFwc2hvdCwgJGJh
c2Vfc25hcHNob3QsICR3aXRoX3NuYXBzaG90cykgPSBAXzsKPiA+ICAgICAgY3JvYWsgImltcGxl
bWVudCBtZSBpbiBzdWItY2xhc3NcbiI7Cj4gPiAgfQo+ID4gIAo+ID4gKz1oZWFkMyAkcGx1Z2lu
LT52b2x1bWVfZXhwb3J0X2Zvcm1hdHMoXCVzY2ZnLCAkc3RvcmVpZCwgJHZvbG5hbWUgWywgJHNu
YXBzaG90LCAkYmFzZV9zbmFwc2hvdCwgJHdpdGhfc25hcHNob3RdKQo+ID4gKwo+ID4gKz1oZWFk
MyAkcGx1Z2luLT52b2x1bWVfZXhwb3J0X2Zvcm1hdHMoLi4uKQo+ID4gKwo+ID4gK0I8T1BUSU9O
QUw6PiBNYXkgYmUgaW1wbGVtZW50ZWQgaW4gYSBzdG9yYWdlIHBsdWdpbi4KPiA+ICsKPiA+ICtS
ZXR1cm5zIGEgbGlzdCBvZiBzdXBwb3J0ZWQgZXhwb3J0IGZvcm1hdHMgZm9yIHRoZSBnaXZlbiB2
b2x1bWUgb3Igc25hcHNob3QuCj4gPiArCj4gPiArT3B0aW9uYWxseSwgQzwkc25hcHNob3Q+IChp
ZiBwcm92aWRlZCkgbWF5IGhhdmUgYSBDPCRiYXNlX3NuYXBzaG90PiwgYW5kCj4gPiArQzwkd2l0
aF9zbmFwc2hvdHM+IHN0YXRlcyB3aGV0aGVyIHRoZSB2b2x1bWUgaGFzIHNuYXBzaG90cyBvdmVy
YWxsLgo+Cj4gc2VlIGFib3ZlLi4gdGhlc2UgcGFyYW1ldGVycyBhcmUgdXNlZCB0byBhZmZlY3Qg
dGhlIHJldHVybmVkIGxpc3Qgb2YKPiBmb3JtYXRzCj4KPiA+ICsKPiA+ICtJZiB0aGUgc3RvcmFn
ZSBkb2VzIG5vdCBzdXBwb3J0IGV4cG9ydGluZyB2b2x1bWVzIGF0IGFsbCwgYW5kIGVtcHR5IGxp
c3Qgc2hvdWxkCj4gPiArYmUgcmV0dXJuZWQuCj4gPiArCj4gPiArPWN1dAo+ID4gKwo+ID4gIHN1
YiB2b2x1bWVfZXhwb3J0X2Zvcm1hdHMgewo+ID4gICAgICBteSAoJGNsYXNzLCAkc2NmZywgJHN0
b3JlaWQsICR2b2xuYW1lLCAkc25hcHNob3QsICRiYXNlX3NuYXBzaG90LCAkd2l0aF9zbmFwc2hv
dHMpID0gQF87Cj4gPiAgICAgIGNyb2FrICJpbXBsZW1lbnQgbWUgaW4gc3ViLWNsYXNzXG4iOwo+
ID4gIH0KPiA+ICAKPiA+IC0jIEltcG9ydCBkYXRhIGZyb20gYSBzdHJlYW0sIGNyZWF0aW5nIGEg
bmV3IG9yIHJlcGxhY2luZyBvciBhZGRpbmcgdG8gYW4gZXhpc3Rpbmcgdm9sdW1lLgo+ID4gKz1o
ZWFkMyAkcGx1Z2luLT52b2x1bWVfaW1wb3J0KFwlc2NmZywgJHN0b3JlaWQsICRmaCwgJHZvbG5h
bWUsICRmb3JtYXQgWywgJHNuYXBzaG90LCAkYmFzZV9zbmFwc2hvdCwgJHdpdGhfc25hcHNob3Rz
LCAkYWxsb3dfcmVuYW1lXSkKPiA+ICsKPiA+ICs9aGVhZDMgJHBsdWdpbi0+dm9sdW1lX2ltcG9y
dCguLi4pCj4gPiArCj4gPiArQjxPUFRJT05BTDo+IE1heSBiZSBpbXBsZW1lbnRlZCBpbiBhIHN0
b3JhZ2UgcGx1Z2luLgo+ID4gKwo+ID4gK0ltcG9ydHMgZGF0YSB3aXRoIHRoZSBnaXZlbiBDPCRm
b3JtYXQ+IGZyb20gYSBzdHJlYW0gLyBmaWxlaGFuZGxlIEM8JGZoPiwKPiA+ICtjcmVhdGluZyBh
IG5ldyB2b2x1bWUsIG9yIHJlcGxhY2luZyBvciBhZGRpbmcgdG8gYW4gZXhpc3Rpbmcgb25lLiBS
ZXR1cm5zIHRoZQo+ID4gK3ZvbHVtZSBJRCBvZiB0aGUgaW1wb3J0ZWQgdm9sdW1lLgo+Cj4gSSBk
b24ndCB0aGluayB3ZSBldmVyIHJlcGxhY2UgYW4gZXhpc3Rpbmcgdm9sdW1lPyB3aGF0IHdlIG1p
Z2h0IGRvIGlzCj4gaW1wb3J0IG5ldyBzbmFwc2hvdHMgb24gdG9wIG9mIGJhc2Vfc25hcHNob3Qg
aW4gY2FzZSBvZiBhbiBpbmNyZW1lbnRhbAo+IGltcG9ydC4uCj4KPiBtYXliZQo+Cj4gY3JlYXRp
bmcgYSBuZXcgdm9sdW1lIG9yIGltcG9ydGluZyBhZGRpdGlvbmFsIHNuYXBzaG90cyBvbiB0b3Ag
b2YgYW4KPiBleGlzdGluZyBvbmUuCj4KPiA+ICsKPiA+ICtPcHRpb25hbGx5LCBDPCRzbmFwc2hv
dD4gKGlmIHByb3ZpZGVkKSBtYXkgaGF2ZSBhIEM8JGJhc2Vfc25hcHNob3Q+LCBhbmQKPiA+ICtD
PCR3aXRoX3NuYXBzaG90cz4gc3RhdGVzIHdoZXRoZXIgdGhlIHZvbHVtZSBoYXMgc25hcHNob3Rz
IG92ZXJhbGwuIFJlbmFtaW5nIGFuCj4gPiArZXhpc3Rpbmcgdm9sdW1lIG1heSBhbHNvIG9wdGlv
bmFsbHkgYmUgYWxsb3dlZCB2aWEgQzwkYWxsb3dfcmVuYW1lPgo+Cj4gc2VlIGFib3ZlLCBidXQg
aGVyZSAkc25hcHNob3QgaXMgbWFpbmx5IHRoZXJlIHRvIGhhdmUgdGhlIHNhbWUKPiBhcmd1bWVu
dHMgZm9yIHZvbHVtZV9pbXBvcnRfZm9ybWF0cyBzbyBhIHBsdWdpbiBjYW4gaGF2ZSBhIHNpbmds
ZQo+IGltcGxlbWVudGF0aW9uLCBub3QgYmVjYXVzZSBpdCBpcyB1c2VkIGFueXdoZXJlIElJUkMu
Lgo+Cj4gPiArCj4gPiArQzxkaWU+cyBpZiB0aGUgaW1wb3J0IGZhaWxzLCBpZiB0aGUgZ2l2ZW4g
QzwkZm9ybWF0PiBpcyBub3Qgc3VwcG9ydGVkLCBvciBpZgo+ID4gK2ltcG9ydGluZyB2b2x1bWVz
IGlzIG5vdCBzdXBwb3J0ZWQgYXMgYSB3aG9sZS4KPiA+ICsKPiA+ICs9Y3V0Cj4gPiArCj4gPiAg
c3ViIHZvbHVtZV9pbXBvcnQgewo+ID4gICAgICBteSAoJGNsYXNzLCAkc2NmZywgJHN0b3JlaWQs
ICRmaCwgJHZvbG5hbWUsICRmb3JtYXQsICRzbmFwc2hvdCwgJGJhc2Vfc25hcHNob3QsICR3aXRo
X3NuYXBzaG90cywgJGFsbG93X3JlbmFtZSkgPSBAXzsKPiA+ICAgICAgY3JvYWsgImltcGxlbWVu
dCBtZSBpbiBzdWItY2xhc3NcbiI7Cj4gPiAgfQo+ID4gIAo+ID4gKz1oZWFkMyAkcGx1Z2luLT52
b2x1bWVfaW1wb3J0X2Zvcm1hdHMoXCVzY2ZnLCAkc3RvcmVpZCwgJHZvbG5hbWUgWywgJHNuYXBz
aG90LCAkYmFzZV9zbmFwc2hvdCwgJHdpdGhfc25hcHNob3RdKQo+ID4gKwo+ID4gKz1oZWFkMyAk
cGx1Z2luLT52b2x1bWVfaW1wb3J0X2Zvcm1hdHMoLi4uKQo+ID4gKwo+ID4gK0I8T1BUSU9OQUw6
PiBNYXkgYmUgaW1wbGVtZW50ZWQgaW4gYSBzdG9yYWdlIHBsdWdpbi4KPiA+ICsKPiA+ICtSZXR1
cm5zIGEgbGlzdCBvZiBzdXBwb3J0ZWQgaW1wb3J0IGZvcm1hdHMgZm9yIHRoZSBnaXZlbiB2b2x1
bWUgb3Igc25hcHNob3QuCj4gPiArCj4gPiArT3B0aW9uYWxseSwgQzwkc25hcHNob3Q+IChpZiBw
cm92aWRlZCkgbWF5IGhhdmUgYSBDPCRiYXNlX3NuYXBzaG90PiwgYW5kCj4gPiArQzwkd2l0aF9z
bmFwc2hvdHM+IHN0YXRlcyB3aGV0aGVyIHRoZSB2b2x1bWUgaGFzIHNuYXBzaG90cyBvdmVyYWxs
Lgo+Cj4gc2VlIGFib3ZlLCB0aGVzZSBwYXJhbWV0ZXJzIHNlcnZlIHRoZSBzYW1lIHB1cnBvc2Ug
YXMgZm9yIGV4cG9ydF9mb3JtYXRzCj4gLSB0byBhZmZlY3QgdGhlIHJldHVybiB2YWx1ZSAvIGlu
Zm9ybSB0aGUgcGx1Z2luIGFib3V0IHRoZSBpbnRlbmRlZAo+IGV4cG9ydC9pbXBvcnQKPgo+IGl0
IG1pZ2h0IG1ha2Ugc2Vuc2UgdG8gbm90ZSBzb21ld2hlcmUgdGhhdCB0aGUgb3JkZXIgb2YgcmV0
dXJuZWQgZm9ybWF0cwo+IG1hdHRlcnMgZm9yIGJvdGgsIHNpbmNlIHRoZSBmaXJzdCBlbGVtZW50
IG9mIHRoZSBpbnRlcnNlY3Rpb24gb2YgYm90aAo+IHJldHVybiB2YWx1ZXMgd2lsbCBiZSB1c2Vk
IHRvIGRvIGEgc3RvcmFnZSBtaWdyYXRpb24/Cj4KPiA+ICsKPiA+ICtJZiB0aGUgc3RvcmFnZSBk
b2VzIG5vdCBzdXBwb3J0IGltcG9ydGluZyB2b2x1bWVzIGF0IGFsbCwgYW5kIGVtcHR5IGxpc3Qg
c2hvdWxkCj4gPiArYmUgcmV0dXJuZWQuCj4gPiArCj4gPiArPWN1dAo+ID4gKwo+ID4gIHN1YiB2
b2x1bWVfaW1wb3J0X2Zvcm1hdHMgewo+ID4gICAgICBteSAoJGNsYXNzLCAkc2NmZywgJHN0b3Jl
aWQsICR2b2xuYW1lLCAkc25hcHNob3QsICRiYXNlX3NuYXBzaG90LCAkd2l0aF9zbmFwc2hvdHMp
ID0gQF87Cj4gPiAgICAgIGNyb2FrICJpbXBsZW1lbnQgbWUgaW4gc3ViLWNsYXNzXG4iOwo+ID4g
IH0KPiA+IC0KPiA+ICAxOwo+Cj4KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwo+IHB2ZS1kZXZlbCBtYWlsaW5nIGxpc3QKPiBwdmUtZGV2ZWxAbGlzdHMu
cHJveG1veC5jb20KPiBodHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9s
aXN0aW5mby9wdmUtZGV2ZWwKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KcHZlLWRldmVsIG1haWxpbmcgbGlzdApwdmUtZGV2ZWxAbGlzdHMucHJveG1v
eC5jb20KaHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8v
cHZlLWRldmVsCg==