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 A69701FF189 for ; Thu, 18 Sep 2025 08:27:09 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id F2DD71213A; Thu, 18 Sep 2025 08:27:22 +0200 (CEST) Message-ID: <0092ff33-673f-4a6a-9ae0-502b25691455@proxmox.com> Date: Thu, 18 Sep 2025 08:27:17 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Beta To: Proxmox VE development discussion , "Max R. Carrara" References: <20250908180058.530119-1-m.carrara@proxmox.com> <882e278b-e588-4099-b52f-4a32696cee8c@proxmox.com> Content-Language: en-US From: Thomas Lamprecht In-Reply-To: X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1758176829068 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.029 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] [RFC pve-storage, pve-manager master v1 00/12] GUI Support for Custom Storage Plugins X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox VE development discussion Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" QW0gMDkuMDkuMjUgdW0gMTY6MjIgc2NocmllYiBNYXggUi4gQ2FycmFyYToKPiBPbiBNb24gU2Vw IDgsIDIwMjUgYXQgOToyMyBQTSBDRVNULCBUaG9tYXMgTGFtcHJlY2h0IHdyb3RlOgo+PiBBbSAw OC4wOS4yNSB1bSAyMDowMSBzY2hyaWViIE1heCBSLiBDYXJyYXJhOgo+Pj4gR1VJIFN1cHBvcnQg Zm9yIEN1c3RvbSBTdG9yYWdlIFBsdWdpbnMKPj4+ID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Cj4+Pgo+Pj4gdGw7ZHI6Cj4+Pgo+Pj4gQWRkIGFuIEFQSSBtZXRob2QgdG8g UFZFOjpTdG9yYWdlOjpQbHVnaW4gdGhhdCByZXR1cm5zIHRoZSBkZWZpbml0aW9uCj4+PiBmb3Ig dGhlIGZvcm0gdmlldyBvZiBjdXN0b20gc3RvcmFnZSBwbHVnaW5zLiBUaGlzIGRlZmluaXRpb24g aXMgdXNlZCBieQo+Pj4gdGhlIGZyb250ZW5kIHRvIGJ1aWxkIHRoZSBmb3JtIHZpZXcgZm9yIGNy ZWF0aW5nIC8gZWRpdGluZyB0aGUgc3RvcmFnZQo+Pj4gY29uZmlnIGVudHJ5IG9mIHRoZSBwbHVn aW4uIFRoZSB1bHRpbWF0ZSBnb2FsIGhlcmUgaXMgdGhhdCBjdXN0b20KPj4+IHN0b3JhZ2UgcGx1 Z2luIGRldnMgZG9uJ3QgaGF2ZSB0byAoYW5kIGFsc28gKm11c3Qgbm90KikgZXZlciB0b3VjaAo+ Pj4gSmF2YVNjcmlwdCB0byBtYWtlIHRoZWlyIHBsdWdpbnMgc2hvdyB1cCBpbiB0aGUgR1VJLgo+ Pgo+PiBEaWQgbm90IGNoZWNrIHRoZSBjaGFuZ2VzIGluIGZ1bGwsIGJ1dCBJIHNlZSBubyBtZW50 aW9uaW5nIG9mIHRoZSBBQ01FCj4+IEROUyBwbHVnaW5zLCB3aGljaCBhbHJlYWR5IHByb3ZpZGUg c3VjaCBhIG1lY2hhbmlzbSwgYWxiZWl0IGEgYml0IGxvd2VyCj4+IGxldmVsIHdpdGggbm8gcmVh bCBjb250cm9sIGhvdyB0aGUgZmllbGRzIGdldCBsYXlvdXRlZC4gRGlkIHlvdSBjaGVjawo+PiB0 aGF0IG91dCBhbmQgbWF5YmUgYWxyZWFkeSByZS11c2VkIHRoZSB1bmRlcmx5aW5nIHBhcnRzIG9m IHRoZQo+PiBpbXBsZW1lbnRhdGlvbiBidXQganVzdCBub3QgcmVmZXJlbmNlZCBpdCwgb3IgaXMg dGhpcyBzb21ldGhpbmcKPj4gY29tcGxldGVseSBuZXcvY3VzdG9tPwo+IAo+IFRoaXMgaXMgc29t ZXRoaW5nIGNvbXBsZXRlbHkgbmV3LCBhcyB0aGUgY29kZSByZWdhcmRpbmcgdGhlIEFDTUUgRE5T Cj4gcGx1Z2lucyBpc24ndCByZWFsbHkgYWRhcHRhYmxlIC8gYXBwbGljYWJsZSBpbiB0aGlzIGNh c2UgaGVyZS4KPiAKPiBXaGVuIEFhcm9uIGFuZCBJIGJyYWluc3Rvcm1lZCB0aGUgd2hvbGUgdGhp bmcsIGhlIGRpZCBtZW50aW9uIHRoYXQgd2UKPiBhbHJlYWR5IGRvIGEgc29tZXdoYXQgc2ltaWxh ciB0aGluZyB3aXRoIHRoZSBBQ01FIEROUyBwbHVnaW5zIGFuZAo+IHN1Z2dlc3RlZCB0aGF0IEkg bWlnaHQgd2FudCB0byBjaGVjayB0aGF0IG91dCBmaXJzdC4gRG9taW5payB0aGVuIGFsc28KPiBt ZW50aW9uZWQgaXQsIGJ1dCBzdWdnZXN0ZWQgdGhhdCBJIHByb2JhYmx5IHNob3VsZG4ndCBpbXBs ZW1lbnQgaXQgdGhlCj4gd2F5IHdlIGRpZCBmb3IgdGhlIEFDTUUgRE5TIHBsdWdpbnMsIHNvIEkg ZGVjaWRlZCB0byBub3QgbG9vayBhdCB0aGF0Cj4gY29kZSBhdCBhbGwuCj4gCj4gSG93ZXZlciwg RG9taW5payBhbmQgSSBqdXN0IHdlbnQgdGhyb3VnaCB0aGUgQUNNRSBHVUkgc3R1ZmYgZm9yIGdv b2QKPiBtZWFzdXJlIGFuZCBmb3VuZCB0d28gbWFpbiByZWFzb25zIHdoeSB0aGUgZnVuY3Rpb25h bGl0eSBjYW4ndCByZWFsbHkgYmUKPiByZXVzZWQ6Cj4gCj4gMS4gVGhlIEFDTUUgRE5TIHBsdWdp biBbc2NoZW1hXSBpcyB0b28gc2ltcGxlIGFuZCBkb2Vzbid0IHJlYWxseQo+IHRyYW5zbGF0ZSB0 byBzdG9yYWdlIHBsdWdpbnMuCgpBcyBtZW50aW9uZWQgb2ZmIGxpc3QsIHRoZSBnZW5lcmFsIGFw cHJvYWNoIHRvIG5vdGljaW5nIHRoYXQgaXMgdG8KZmlyc3QgZXZhbHVhdGUgaWYgaXQgY2FuIGJl IGV4dGVuZGVkLCBub3QganVtcGluZyBzdHJhaWdodCB0byBOSUguCgpBcyB0bGRyL3RvcC1sZXZl bCBwb2ludHMgdGhhdCB0aGlzIGltcGxlbWVudGF0aW9uIHJlYWxseSBzaG91bGQKZm9jdXMgb24s IG5vdCBvbmx5IHRvIGF2b2lkIGEgbWFpbnRlbmFuY2UgYnVyZGVuIHdlIGdvdCB0byBzdXBwb3J0 CmJhc2ljYWxseSBmb3JldmVyIChvciBoYXZlIHRvIHBheSBldmVuIG1vcmUgdG8gbW92ZSBhd2F5 IGZyb20pIGJ1dAphbHNvIHRvIGhhdmUgYW55IHJlYWxpc3RpYyBjaGFuY2UgdG8gZ2V0IGluIHNv b24gYXJlOgoKLSBXZSBnb3QgYSBTZWN0aW9uQ29uZmlnIGhlcmUgYXMgYmFzZSwgdGhhdCBwcm92 aWRlcyB1cGRhdGUgYW5kCiAgY3JlYXRlIHNjaGVtYXMgZm9yIHRoZSB1bmRlcmx5aW5nIGRhdGEg cmVxdWlyZWQgdG8gY29uZmlndXJlIGEKICBwbHVnaW4uIFdlIGFscmVhZHkgZGVyaXZlIHRoZSBD TEkgVUkgZnJvbSB0aGF0LCBzbyBpdCBvbmx5IG1ha2VzCiAgc2Vuc2UgdG8gYWxzbyBkZXJpdmUg dGhlIHdlYiBVSSBmcm9tIHRoYXQsIGl0J3MgdGhlIGVzc2VudGlhbCBiYXNlCiAgc2NoZW1hIGRl ZmluaXRpb24gYWZ0ZXIgYWxsIGFuZCBvbmUgb2Ygb3VyIGNvcmUgcHJpbmNpcGxlcyBpcyB0bwog IHJldXNlIChhbmQgZXh0ZW5kIGlmIG5lZWRlZCkgdGhpcyBhcyB3aWRlIGFzIHBvc3NpYmxlIHRv IGVuc3VyZQogIGhhdmluZyBhIHNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGggdGhhdCBpcyBtdWNoIGhh cmRlciB0byBnZXQgb3V0ZGF0ZWQKICB0aGFuICphbnkqIG90aGVyIGFwcHJvYWNoLgogIFNvLCBi YXNpY2FsbHksIGlmIHdlIGV2ZXIgZ290IGEgc2NoZW1hIGRlZmluZWQgc29tZXdoZXJlIGFuZCB0 aGUKICB0YXNrIGlzIHRoYXQgb25lIGNvbmZpZ3VyZXMgZW50aXRpZXMgdGhhdCBhcmUgYmFja2Vk IGJ5IHRoYXQgc2NoZW1hCiAgdGhlbiBpdCdzIGJhc2ljYWxseSBzaG91bGQgYmUgdGhlIGxhc3Qg cmVzb3J0IHRvIGNyZWF0ZSBhIHNlY29uZAogIHN5c3RlbSBmb3IgZG9pbmcgdGhhdC4KCi0gVGhl IGZpcnN0IGl0ZXJhdGlvbiBvZiB0aGlzIG11c3QgYmUgYSBNVlAgKG1pbmltdW0gdmlhYmxlIHBy b2R1Y3QpLgogIEl0IG11c3QgYmUgc2ltcGxlIGFuZCB0aGUgb25seSBjb3JlIGZlYXR1cmUgaXQg bXVzdCBwcm92aWRlIGlzIHRoYXQKICBhIHVzZXIgY2FuIGVudGVyIGFsbCByZWxldmFudCBjb25m aWd1cmF0aW9uIHZhbHVlcyB3aXRob3V0IHRvdWNoaW5nCiAgdGhlIENMSSBvciBBUEkgIm1hbnVh bGx5Ii4KICBUaGlzIGNvdWxkIGV2ZW4gYmUganVzdCBhICJkdW1iIiBsaXN0IG9mIGZyZWUgZm9y bSB0ZXh0IGZpZWxkcywKICBiYXNpY2FsbHkgd2hhdCB0aGUgQUNNRS9ETlMgcGx1Z2luIHN0dWZm IGlzLiBCdXQgd2UgY2FuIHRvIGEgYml0CiAgYmV0dGVyIHRoYW5rcyB0byBoYXZpbmcgdGhlIHNj aGVtYSBhbmQgYmVpbmcgYWJsZSB0byBhZGQgdGhlIG1vc3QKICBjcml0aWNhbCBwcm9wZXJ0aWVz IHJlcXVpcmVkIHRvIHByb3ZpZGUgYSBiZXR0ZXIgVVggKG1vcmUgb24gdGhlbQogIGJlbG93KS4g QnV0IGV2ZW4gdGhhdCAiZG9pbmcgYmV0dGVyIiBwYXJ0IEknZCBwdXQgaW4gc2VwYXJhdGUKICBj b21taXRzIGJ1aWxkaW5nIG9uIHRoaXMgYmFzZSBpZGVhLCBhcyB0aGlzIGNhbiByZWFsbHkgYmUg ZG9uZQogIGluIHN0ZXBzLiBHZXR0aW5nIHRoZSBleGlzdGluZyBzY2hlbWEgdG8gdGhlIGZyb250 ZW5kIGlzIHRoZSBjb3JlCiAgaGVyZSwgc28gSSB0aGluayBpdCdkIGJlIGJlc3QgdG8gZm9jdXMg b24gdGhhdCBmaXJzdC4KCi0gVG8gZ2V0IHRoZSAiZHVtYiBmb3JtIiB0aGUgc3RvcmFnZSBwbHVn aW4gaWRlYWxseSBzaG91bGQgbm90IGhhdmUKICB0byBkbyBhbnl0aGluZy4gV2UgY2FuIHN0aWxs IGFkZCBzb21lIGJhc2ljIHJlcXVpcmVtZW50cyAobGlrZSBsaW5rCiAgdG8gdXBzdHJlYW0gc3Rv cmFnZSBwbHVnaW4gZG9jdW1lbnRhdGlvbiksIHBsdWdpbiBhdXRob3JzIGFscmVhZHkKICBkZWZp bmUgdGhlIHNjaGVtYS4gVGhpcyBjYW4gc3RpbGwgYmUgZXh0ZW5kZWQgaW4gdGhlIGxvbmcgcnVu LCBpdCdzCiAgbm90IHNldCBpbiBzdG9uZSBhbmQgbXVjaCBlYXNpZXIgdG8gYWRkIHRoZSBmZXcg YWN0dWFsIG1pc3NpbmcKICBmZWF0dXJlcyAoaWRlYWxseSBpbiBhIGRlY2xhcmF0aXZlIHdheSkg b3ZlciBtb3JlIGNvbXBsZXggc2VwYXJhdGUKICBtZWNoYW5pc21zLgoKLSBmaW5hbGx5OiBTdG9y YWdlIGRvIG5vdCBnZXQgYWRkIGhpZ2hseSBmcmVxdWVudCwgZm9yIGxvdHMgKG1vc3Q/KQogIHNl dHVwcyBpdCdzIGRvbmUgb25jZSBvbiBpbml0aWFsIGNsdXN0ZXIgc2V0dXAsIHNpbXBseSBub3Qg d29ydGggaXQKICB0byBzdGFydCBvdXQgdGhpcyBjb21wbGV4IGV2ZW4gaWYgb3VyIHNjaGVtYSB3 b3VsZCBiZSBtdWNoIG1vcmUKICBsaW1pdGVkLCBidXQgaXQgd2lsbCBhbGxvdyBmb3IgdGhlIGJh c2ljIFVYIG5pY2V0aWVzIHRoYXQgbWFrZQogIHdpbGwgYWxsb3cgdXMgYSBuaWNlciBpbXBsZW1l bnRhdGlvbiB0aGFuIHdoYXQgQUNNRSBETlMgcHJvdmlkZXMsCiAgd2hpY2ggaXMgYWxzbyBub3Qg bGltaXRlZCBieSB0aGUgYmFzaWMgYXBwcm9hY2gsIGJ1dCBtb3N0bHkgYmVjYXVzZQogIG5vYm9k eSBpbnZlc3RlZCBtb3JlIHRpbWUgaW4gaXQsIG5vdCBldmVuIGluIGFkZGluZyB0aGUgc2NoZW1h CiAgZm9yIG1vcmUgcGx1Z2lucyAoSUlSQyBJIGRpZCBtb3N0IG9mIHRoZW0uLi4pLgoKVGhhdCAo bWludXMgc29tZSBkZXRhaWxzKSBzaG91bGQgcHJvdmlkZSB0aGUgYmFzZSBkaXJlY3Rpb25zIGZv ciBhbgppbml0aWFsIGludGVncmF0aW9uLgoKPiBJbiBwYXJ0aWN1bGFyLCB0aGUgW3NjaGVtYV0g aXMgc3RhdGljLCB3aXRoIGFsbCBmaWVsZHMgZXhjZXB0IG9uZSBiZWluZwo+IG9mIHR5cGUgInN0 cmluZyIuIFRoaW5ncyBsaWtlIGNoZWNrYm94ZXMgYW5kIGR5bmFtaWMgZHJvcGRvd24gc2VsZWN0 aW9uCj4gYm94ZXMgYXJlbid0IHJlYWxseSBhY2NvdW50ZWQgZm9yLCBzaW5jZSB0aGV5J3JlIG5v dCBuZWVkZWQuCgpBcyBtZW50aW9uZWQsIGR5bmFtaWMgZHJvcCBkb3duIHNlbGVjdGlvbiBhcmUg bm90IHJlbGV2YW50IGZvciBub3cuCkZvciBtb3N0IHRoaW5ncyB0aGV5IGFyZSBub3QgcHJhY3Rp Y2FsIGZvciBleHRlcm5hbCBwbHVnaW5zIGFzIGJhc2ljYWxseQphbGwgb2YgdGhlbSBhcmUgbmV0 d29yayB0YXJnZXRzIGFuZCB0aHVzIG9uZSBjYW5ub3QgcXVlcnkgc29tZSBwcm9wZXJ0aWVzCm9u IHRoZSBmbHkgb2YgdGhlIHRhcmdldC4gU3RhdGljICBGb3IgY29uZmlndXJhdGlvbiBjb21iaW5h dGlvbnMgdGhhdCAKCj4gCj4gMi4gVGhlIEFDTUUgRE5TIEFQSSBbZWRpdCB3aW5kb3ddIGlzIGRl c2lnbmVkIGZvciBlZGl0aW5nIG9uIHRoZSBmbHkuCj4gCj4gVGhlIGVudGlyZSBbc2NoZW1hXSBp cyBmZXRjaGVkIGF0IG9uY2UgZnJvbSB0aGUgYmFja2VuZC4gVGhlIHdpbmRvdwo+IHJlbWVtYmVy cyB3aGljaCBETlMgQVBJIHRoZSB1c2VyIHNlbGVjdGVkIGFuZCBzdG9yZXMgdGhlIEtWLXBhaXJz IGluIHRoZQo+IGJhY2tncm91bmQuIFNvIHdoZW4geW91IHN3aXRjaCBiYWNrIGFuZCBmb3J0aCBi ZXR3ZWVuIGUuZy4gIkNsb3VkZmxhcmUKPiBNYW5hZ2VkIEROUyIgYW5kICJBbGliYWJhIENsb3Vk IEROUyIsIHRoZSB2YWx1ZXMgeW91IGVudGVyZWQgYXJlCj4gcmV0YWluZWQuCgpZZXMsIHRoYXQn cyBnZW5lcmFsbHkgYSBnb29kIHRoaW5nIGFuZCB0aGUgc3dpdGNoaW5nIGRvZXMgbm90IGFwcGx5 IGF0CmFsbCB0byB0aGUgc3RvcmFnZSBzeXN0ZW0sIHdoZXJlIG9uZSBjYW5ub3QgY2hhbmdlIHRo ZSBzdG9yYWdlIHR5cGUKZHVyaW5nIGNyZWF0aW5nIG9yIGVkaXRpbmcgYSBzdG9yYWdlIGVudHJ5 LiBBbmQgY2xlYXJpbmcgdGhlIGZpZWxkcwpiZXR3ZWVuIHN3aXRjaGluZyB3b3VsZCBiZSB0cml2 aWFsIHRvIGRvLCBzbyByZWFsbHkgbm90IHN1cmUgaG93IHRoYXQKY291bGQgYmUgdXNlZCBhcyBh cmd1bWVudD8KCj4gCj4gSWYgeW91IHRoZW4gc3dpdGNoIHRvIGFuIEFQSSB3aXRob3V0IGFueSBm aWVsZHMgaW4gdGhlIHNjaGVtYSwgdGhlCj4gZXhpc3RpbmcgS1YtcGFpcnMgb2Ygb3RoZXIgcGx1 Z2lucyBhcmUgaW5zZXJ0ZWQgaW50byB0aGUgZmFsbGJhY2sgdGV4dAo+IGFyZWEuIElmIHlvdSBz ZWxlY3QgYW4gQVBJIHdpdGggZmllbGRzIGFnYWluLCB0aGUgY29udGVudCBvZiB0aGUgdGV4dAo+ IGFyZWEgaXMgcGFyc2VkIGJhY2sgaW50byB0aGUgS1YtcGFpcnMuCj4gCj4gU28sIGFsc28gbm90 IHNvbWV0aGluZyB0aGF0J3MgcmVhbGx5IGFwcGxpY2FibGUgLyByZXVzYWJsZSBmb3Igc3RvcmFn ZQo+IHBsdWdpbnMuCgpJIHRoaW5rIHRoZXJlIGlzIGEgc2VyaW91cyBtaXNjb25jZXB0aW9uIG9u IHdoYXQgcmV1c2UgbWVhbnMsIG9yIGF0IGxlYXN0CndheSB0byBsaXRlcmFsLiBPbmUgY2FuIHJl dXNlIHNtYWxsZXIgcGFydHMgb2YgYSB0aGluZywgb25lIGNhbiBhbHNvIHJldXNlCnNlbWFudGlj cyB0byBwcm92aWRlIGEgY29oZXJlbnQgc3lzdGVtIGFuZCBub3QgYSBkb3plbnMgb2YgTklIIG9u ZXMuCklmIGl0IHdhcyBqdXN0IGluc3RhbnRpYXRpbmcgdGhhdCB3aWRnZXQgd2l0aG91dCBhbnkg Y2hhbmdlcyBpdCB3b3VsZCBoYXZlCmJlZW4gbG9uZyBkb25lLCBidXQgYXMgaXQncyBvYnZpb3Vz bHkgYSBiaXQgc3BlY2lhbCB0byBBQ01FIEROUyBwbHVnaW5zLCBpdApuYXR1cmFsbHkgbmVlZHMg c29tZSBhZGFwdGlvbiBvciByZWZhY3RvcmluZyBmb3IgYWN0dWFsIGNvZGUgcmV1c2UuCkFuZCBp ZGVhbGx5IHNvbWUgb2YgdGhlIGltcHJvdmVtZW50cyB0byAoVVgpIHBvc3NpYmlsaXRpZXMgd291 bGQgZmxvdyBiYWNrCmludG8gQUNNRS4KCj4+IEZ1cnRoZXIsIEZXSUNUIHRoaXMgc2VlbXMgdG8g YWRkIHNvbWUgcGFyYWxsZWwgaW5mcmEgYW5kIG5lZWQgb2YKPj4gZGVmaW5pdGlvbnMsIG1pZ2h0 IHdlIGdldCBhd2F5IHdpdGggImp1c3QiIGFubm90YXRpbmcgdGhlIGV4aXN0aW5nCj4+IHNjaGVt YXMgYSBiaXQgYmV0dGVyLCBpLmUuIGFkZCB0aGUgZmxhZ3MgZm9yIHNpZ25hbGluZyBzZWNyZXRz IGFuZAo+PiBwb3RlbnRpYWxseSBzb21lIGxheW91dCBoaW50cywgYXMgdGhlIGNvcmUgaW1wb3J0 YW5jZSBpcyB0byBiZSBhYmxlIHRvCj4+IGlucHV0IHJlcXVpcmVkIGRhdGEgdG8gY29uZmlndXJl IGEgc3RvcmFnZSwgbm90IHRoYXQgaXQgbmVlZHMgdG8gbG9vawo+PiAicGVyZmVjdCIsIGF0IGxl YXN0IG5vdCBpbiB0aGUgaW5pdGlhbCB2ZXJzaW9uIG9mIHRoaXMgaW1wbGVtZW50YXRpb24sCj4+ IGFzIGFkZGluZyBtb3JlIGZlYXR1cmVzIGFuZCBjb21wbGV4ZXIgbGF5b3V0aW5nIGxhdGVyIG9u LCBlc3BlY2lhbGx5Cj4+IG9uY2Ugd2UgZ290IGZlZWRiYWNrIGZyb20gaW50ZWdyYXRvcnMgYW5k IHNlZSBob3cgdGhleSB1c2UgaXQuCj4gCj4gTWF5YmUgSSBzaG91bGQgY2xhcmlmeSB0aGF0IHRo ZSBjb3JlIHBhcnQgb2YgdGhpcyBSRkMgaXNuJ3QgcmVhbGx5IHRoZQo+IGxheW91dGluZzogVGhl IGZvcm0gdmlldyBzY2hlbWEgYWxsb3dzIGRldnMgdG8gc3BlY2lmeSB3aGljaCBjb2x1bW5zIGFy ZQo+IHVzZWQsIGFuZCBhIGNvbHVtbiBpcyBqdXN0IGFuIG9iamVjdCB3aXRoIGFuIGFycmF5IG9m IGZpZWxkcy4gVGhlIGZpZWxkcwo+IGFyZSBkaXNwbGF5ZWQgaW4gdGhlIG9yZGVyIGluIHdoaWNo IHRoZXkgYXBwZWFyIGluIHRoZSBjb2x1bW4uIFRoYXQncwo+IGFib3V0IGFzIG11Y2ggbGF5b3V0 aW5nIGFzIG9uZSBjYW4gZG8gYXQgdGhlIG1vbWVudC4KPiAKPiBXaGF0J3MgaW1wb3J0YW50IGFy ZSB0aGUgZGVmaW5pdGlvbnMgb2YgdGhlIGZpZWxkcyB0aGVtc2VsdmVzLiBFYWNoCj4gZmllbGQg Y29ycmVzcG9uZHMgdG8gYSBTZWN0aW9uQ29uZmlnIHByb3BlcnR5IG9mIHRoZSBzdG9yYWdlIHBs dWdpbiB0aGUKPiBmb3JtIGlzIGRlZmluZWQgZm9yLgo+IAo+IFRvIHByb3ZpZGUgc29tZSBhZGRp dGlvbmFsIGNvbnRleHQgYmVmb3JlIEkgY29udGludWUsIG15IGluaXRpYWwgaWRlYQo+IHdhcyB0 byAqanVzdCogZGVmaW5lIHdoYXQgU2VjdGlvbkNvbmZpZyBwcm9wZXJ0aWVzIGFyZSBzaG93biBp biB0aGUgVUkKPiBhbmQgaGF2ZSB0aGUgcmVzdCBiZSAiaW5mZXJyZWQiIGluIHNvbWUgd2F5IGZy b20gdGhlIGdsb2JhbCBzZXQgb2YKPiBTZWN0aW9uQ29uZmlnIHByb3BlcnRpZXMuCj4gCj4gVGhh dCBxdWlja2x5IHR1cm5lZCBvdXQgdG8gYmUgYSBodWdlIGNhbiBvZiB3b3JtcywgcmFpc2luZyBh IGxvdCBvZgo+IHF1ZXN0aW9uczoKPiAKPiAtIFNpbmdsZSBTZWxlY3Rpb246Cj4gCj4gICAqIEhv dyB3b3VsZCAic3RyaW5nIiB0eXBlIHByb3BlcnRpZXMgd2hvc2UgdmFsdWUgaXMKPiAgICAgZnJv bSBhIHNldCBvZiBwb3NzaWJsZSBzZWxlY3Rpb24gdmFsdWVzIGJlIHNob3duIGluIHRoZSBVST8K CmVudW1zIGV4aXN0IGluIG91ciBzY2hlbWEuCgo+IAo+ICAgICAgIFdvdWxkIG5lZWQgYSBoaW50 IHRoYXQgaXQncyBhICJzaW5nbGUtc2VsZWN0aW9uIiBmaWVsZCBvcgo+ICAgICAgIHNvbWV0aGlu Zy4KPiAKPiAgICogSG93IHdvdWxkIG9uZSB0ZWxsIHRoZSBVSSB3aGljaCBwb3NzaWJsZSBzZWxl Y3Rpb24gdmFsdWVzIHRoZXJlIGFyZT8KCnN0YXRpYyAtPiBlbnVtCmR5bmFtaWMgLT4gbm8gc3Vw cG9ydGVkIGFzIGNvbWJvYm94IGluIHRoZSBmcm9udCBlbmQsIHVzZSBhIHRleHRmaWVsZAphbmQg dGhlIHBsdWdpbiBjYW4gdGhyb3cgYSB0ZWxsaW5nIGVycm9yIG1lc3NhZ2UuCgpGb3Igc29tZSBz cGVjaWZpYyBjYXNlcyB3ZSBjYW4gaW1wcm92ZSBpdCAobGlrZSBiZWluZyBhYmxlIHRvIG1hcmsg YQpmaWVsZCBvZiBiZWluZyBiYWNrZWQgYnkgdGhlIHN0b3JhZ2Ugc2NhbiBBUEkpLCBidXQgZGVm aW5pdGl2ZWx5CnNvbWV0aGluZyBmb3IgbGF0ZXIgYW5kIG5vdCB0aGUgZmlyc3QgaXRlcmF0aW9u LgoKPiAKPiAgICAgICBIYXJkIHRvIGRvIHdpdGgganVzdCBhIGhpbnQgLyBtYXJrZXIsIGFzIHRo b3NlIHNlbGVjdGlvbiB2YWx1ZXMKPiAgICAgICBjYW4gYmUgZHluYW1pYywgZS5nLiB0aGUgcG9z c2libGUgc2VsZWN0aW9ucyBmb3IgdGhlICJwb29sIiBwcm9wIG9mCj4gICAgICAgdGhlIFpGU1Bv b2xQbHVnaW4gYXJlIGRldGVybWluZWQgYnkgbGlzdGluZyB3aGljaCBwb29scyBhcmUKPiAgICAg ICBhdmFpbGFibGUgdmlhIHRoZSBaRlMgQ0xJLgo+IAo+IC0gTXVsdGlwbGUgU2VsZWN0aW9uczoK PiAKPiAgICogU2FtZSBhcyBhYm92ZSwgYnV0IHdpdGggbXVsdGlwbGUgcG9zc2libGUgc2VsZWN0 aW9uIHZhbHVlcyAodXN1YWxseQo+ICAgICBwcm9wZXJ0aWVzIHRoYXQgaGF2ZSBhIGZvcm1hdCB3 aG9zZSBuYW1lIGVuZHMgd2l0aCAiLWxpc3QiKS4KClNvIHlvdSB0ZWxsIG1lIHRoZSBzY2hlbWEg a25vd3MgdGhpcyBhbHJlYWR5LCBidXQgeW91IGNhbm5vdCB1c2UgaXQKZm9yIGRlcml2aW5nIHRo YXQ/IQoKPiAKPiAtIFNlbnNpdGl2ZSBQcm9wZXJ0aWVzOgo+IAo+ICAgKiBIb3cgc2hvdWxkIHNl bnNpdGl2ZSBwcm9wZXJ0aWVzIGJlIHNob3duIGluIHRoZSBVST8KCkV2ZW4gaWYgKGh5cG90aGV0 aWNhbGx5KSB5b3Ugc2hvdyB0aGVtIGluIHBsYWluIGl0J3MgT0ssIGFzIGVpdGhlciB0aGUKQVBJ IHNlbmRzIGl0IG9yIG5vdCwgc28gdGhlIGNsaWVudCBpcyBhbHJlYWR5IGFsbG93ZWQgdG8gc2Vl IGl0LCBvciBpdCdzCmFuIEFQSSBidWcgYW55d2F5LgoKQmVpbmcgYWJsZSB0byBhbm5vdGF0ZSB0 aGUgc2NoZW1hIHdpdGggYSBmbGFnIHRvIG1hcmsgc29tZXRoaW5nIGFzIHNlY3JldAppcyBpbiB0 aGUgbWlkdGVybSBuYXR1cmFsbHkgYmV0dGVyLCBhcyBsb25nIGFzIHdlIGRvIG5vdCBoYXZlIHBy b3BlcnRpZXMKdGhhdCBkeW5hbWljYWxseSB3YW50IHRvIGJlIHNlY3JldCBvciBub3Qgd2UgaGF2 ZSBubyBwcm9ibGVtIGhlcmUuCkFuZCBsdWNraWx5IHdlIGFscmVhZHkgZ290ICdzZW5zaXRpdmUt cHJvcGVydGllcycgYXZhaWxhYmxlIGZvciBwbHVnaW5zLgoKPiAKPiAgICAgICBXZSBjdXJyZW50 bHkgZG8gbm90IGRvIHRoYXQgdW5pZm9ybWx5LCBlLmcuIHRoZSAiUGFzc3dvcmQiIGZpZWxkCj4g ICAgICAgb2YgdGhlIEVTWGkgaW1wb3J0ZXIgYWx3YXlzIGhhcyBgaW5wdXRUeXBlOiAncGFzc3dv cmQnYCB3aGV0aGVyCj4gICAgICAgeW91J3JlIGNyZWF0aW5nIG9yIGVkaXRpbmcgaXQsIHdoZXJl YXMgdGhlICJLZXlyaW5nIiBmaWVsZCBvZiB0aGUKPiAgICAgICBSQkQgc3RvcmFnZSBpcyBkaXNw bGF5ZWQgZHVyaW5nIGNyZWF0aW9uIGJ1dCBpc24ndCBzaG93biBub3IKPiAgICAgICBlZGl0YWJs ZSB3aGVuIGVkaXRpbmcgaXQgKGFtb25nc3Qgb3RoZXIgdGhpbmdzKS4KClllYWgsIG91ciBwbHVn aW5zIHVzZSB0aGUgZmFjdCB0aGF0IHRoZXkgYXJlIG5hdGl2ZSBmb3IgdXMgYW5kIGNhbiBnZXQK YSBmaXJzdCBjbGFzcyBpbnRlZ3JhdGlvbiwgdGhpcmQgcGFydHkgcGx1Z2lucyB3aWxsIGdldCBu b3QgZ2V0IHRoZSBzYW1lCmZ1bGwgY29udHJvbCBldmVyLCBhcyB0aGF0J3MgYmFzaWNhbGx5IGdp dmluZyB0aGVtIGZyZWUgcmVpZ24gb3ZlciB0aGUKdXNlcnMgYnJvd3Nlciwgd2hpY2ggaXMgYSBu byBnbywgYW5kIGV2ZW4geW91ciBkZXNpZ24gd2lsbCBsaW1pdCB0aGUKaW1wbGVtZW50YXRpb24g dG8gbm90IGJlIGFibGUgdG8gbGV2ZXJhZ2UgdGhlIGZ1bGwgY2FwYWJpbGl0aWVzIG9mIGVhY2gK VUkgdGVjaCAoRXh0SlMsIFlldywgb3Igc2F5IEZsdXR0ZXIsIHdobyBrbm93cyB3aGF0J3MgdGhl cmUgaW4gdGhlIGxvbmcKdGVybSBmdXR1cmUpCgpBbmQgdGhhdCdzIGFscyB3aHkgSSBkZWZpbml0 aXZlbHkgd29uJ3Qgc2VlIGdldHRpbmcgaW1wbGVtZW50ZWQgdGhyb3VnaApzdWNoIGEgbWVjaGFu aXNtLCBhcyBhIG5hdGl2ZSBVSSBpbXBsZW1lbnRhdGlvbiBjYW4gYmUgYWx3YXlzIG1hZGUgYmV0 dGVyCm92ZXIgYSBnZW5lcmF0ZWQgb25lLCBlc3BlY2lhbGx5IHdpdGggc3BlY2lmaWMgVVgvaGlu dHMvLi4uKSwgYW5kIHdlCmFscmVhZHkgZ290IG91ciBpbXBsZW1lbnRhdGlvbnMgYW5kIGFyZSBo YXBweSB3aXRoIHRoZW0sIHNvIHplcm8gbmVlZAp0byBzd2l0Y2ggdGhlbSB0byBzb21ldGhpbmcg bW9yZSByZXN0cmljdGl2ZS4KCj4gCj4gVGhlIGxpc3QgZ29lcyBvbjsgSSB0aGluayB5b3UgZ2V0 IHRoZSBpZGVhLiA6UAoKTm8sIHRvIGJlIGhvbmVzIEkgcmVhbGx5IGRvIG5vdCBnZXQgdGhlIGlk ZWEgb3IgYXJndW1lbnRzIGZyb20gdGhhdC4KClRoaXMgcmF0aGVyIHJlYWRzIHRvIG1lIGFzIHlv dSBkaWQgbm90IHJlYWxseSBjaGVja2VkIG91dCB3aGF0IHRoZQpleGlzdGluZyBzY2hlbWEgY2Fw YWJpbGl0aWVzIG1pZ2h0IHByb3ZpZGUgeW91IGZvciB0aGlzIGZlYXR1cmUsIGJ1dAp3YXkgdG8g ZmFzdCBzd2l0Y2hlZCB0byAiZnVsbHkgY3VzdG9tIERTTCBzY2hlbWEgbGlrZSBwYXJhbGxlbApp bXBsZW1lbnRhdGlvbiIgKHRvIGV4YWdnZXJhdGUpIHJhdGhlciB0aGFuIGNhbiBjaGVja2luZyBp ZiB0aGVyZSBpcwphbHJlYWR5IGluZm8gZm9yIG1vc3QgYmFzaWMgVVggb3IgaG93IG9uZSBjYW4g YWRkIHRoZSBmZXcgVUkgc3BlY2lmaWMKZmxhZ3MgdG8gdGhlIHNjaGVtYSBuZWVkZWQgdG8gcHJv dmlkZSBhIG1vcmUgdGhhbiBnb29kIGVub3VnaCBVWC4KQWxzbyBtaXNzaW5nIHRoZSBjb3JlIHBy aW5jaXBsZSBvZiBvdXIgY29uZmlncyBiZWluZyByZXByZXNlbnRlZCBieQphIHNpbmdsZSBzY2hl bWEgdGhhdCBpcyByZXVzZWQgYXMgbXVjaCBhcyBwb3NzaWJsZSwgYW5kIGRlZmluaXRpdmVseQpt dXN0IGJlIHRoZSBiYXNlIHNvdXJjZSBmb3IgYSBhdXRvIGdlbmVyYXRlZCBVSSBmb3IgZXh0ZXJu YWwgcGx1Z2lucy4KCkkga25vdyBpdCdzIGZ1biB0byBpbXBsZW1lbnQgbmV3IHRoaW5ncyB3aXRo b3V0IGhhdmluZyB0byBiZSBib3RoZXJlZApieSBleGlzdGluZyBpbXBsZW1lbnRhdGlvbnMgYW5k IHRoZWlyIGNhcGFiaWxpdGllcywgYnV0IHRoaXMgaXMgc2ltcGx5Cm5vdCBhIGdyZWVuZmllbGQg cHJvamVjdC4KCj4gU28sIGluc3RlYWQgb2YgbWFraW5nIHBvc3NpYmx5IHJlc3RyaWN0aXZlIGRl c2lnbiBkZWNpc2lvbnMgZm9yIHVzZQo+IGNhc2VzIEknbSBub3QgZXZlbiBhd2FyZSBvZiwgSSBp bnN0ZWFkIGNob3NlIHRoaXMgIm1hbnVhbCIgd2F5IG9mCj4gZGVmaW5pbmcgdGhlIGZvcm0gdmll dywgc2lkZXN0ZXBwaW5nIGFsbCB0aG9zZSBxdWVzdGlvbnMuCgpBcyB0YWxrZWQgb2ZmIGxpc3Q6 IGxldCdzIHBsZWFzZSBzdGFydCBvdXQgd2l0aCB1c2luZyB0aGUgc2NoZW1hCmRpcmVjdGx5LCB0 aGUgZmlyc3QgaXRlcmF0aW9uIG1pZ2h0IGJlIGFzIHdlbGwgY29uc2lzdCBvZiB0d28gcGF0Y2hl cywKb25lIGZvciBzdG9yYWdlIHRvIGV4cG9zZSB0aGUgY3JlYXRlL3VwZGF0ZSBzY2hlbWEgYW5k IG9uZSBmb3IgbWFuYWdlcgp0byB1c2UgdGhhdCBpbXBsZW1lbnRpbmcgdGhlIFVJIChjYW4ganVz dCBjb3B5K2FkYXB0IHRoZSByZWxldmFudCBwYXJ0cwpmcm9tIEFDTUUgZm9yIGEgV0lQIFJGQyku IE1vbGRpbmcgdGhhdCBpbiBzb21ldGhpbmcgd2l0aCBhIGJpdCBtb3JlIFVYCnNob3VsZCBub3Qg YmUgdGhhdCBtdWNoIHdvcmsuIFdlIGdvdCBtYW55IGluZm8gYWxyZWFkeSBpbiB0aGUgc2NoZW1h LAppLmUuIHNlbnNpdGl2ZS1wcm9wZXJ0aWVzLCBwcm9wZXJ0aWVzIGJlaW5nICJmaXhlZCIgKGNy ZWF0ZSBvbmx5KSBvcgpub3QgKGNhbiBiZSB1cGRhdGVkIG9uIGVkaXQpLiBPbmUgdGhpbmcgdGhh dCBtaWdodCBtaXNzIGlzIGEgbGFiZWwsIGJ1dApmb3Igc3RhcnRlcnMgSSdkIG5vdCBjYXJlIChh bmQgSUlSQyB3ZSBnb3Qgc29tZSBzY2hlbWEgcHJvcGVydGllcyBmb3IKc29tZSBoaW50cywgc28g d2UgbWF5YmUgbWlnaHQgZXZlbiByZXVzZSBhbiBleGlzdGluZyBvbmUgb3IgYWRkIGEKZGVkaWNh dGVkIGxhYmVsIG9uZSksIHNvIGV2ZW4gc29tZSBzbGlnaHRseSBpbXByb3ZlZCBVWCB0byBnZXQg bW9yZQpmcm9udGVuZCBjaGVja3MgdGhhdCByZWR1Y2UgdXNhZ2UgZnJpY3Rpb24gY2FuIGJlIGFk ZGVkIG5vdyBhbHJlYWR5LgoKVGhlIHNpbmdsZSB0aGluZyBJJ20gYWN0dWFsbHkgYSBiaXQgd29y cmllZCBhYm91dCBpcyBzdG9yYWdlIG5vdCB1c2luZwpwcm9wZXJ0eSBpc29sYXRpb24gZm9yIHRo ZSBzZWN0aW9uIGNvbmZpZ3MsIGJ1dCBpZiB0aGF0IHdvdWxkIGJlIGluZGVlZAphIGJsb2NrZXIg dGhlbiBJJ2QgcHJpb3JpdGl6ZSBpdCBub3csIGFzIHRoYXQncyB3aWxsIG5ldmVyIGdldCBlYXNp ZXIKdG8gY2hhbmdlLCBvbiB0aGUgY29udHJhcnksIHRoZSBtb3JlIGV4dGVybmFsIGRldnMsIHBs dWdpbnMgYW5kIHN0b3JhZ2UKZmVhdHVyZXMgd2UgZ290LCB0aGUgaGFyZGVyIGl0IHdpbGwgYmUg dG8gY2hhbmdlLiAKCj4gKkZvciBub3cqIHRoaXMgYWxzbyBzZWVtcyB0byBiZSB0aGUgc2ltcGxl ciwgYW5kIG1vcmUgaW1wb3J0YW50bHksIG1vcmUKPiBtYWludGFpbmFibGUgb3B0aW9uLCBzaW5j ZSB0aGluZ3MgcmVsYXRlZCB0byB0aGUgVUkgYXJlbid0IGNvdXBsZWQgdG8KPiB0aGUgU2VjdGlv bkNvbmZpZyBkZWZpbml0aW9ucyAoYmVzaWRlcyBzcGVjaWZ5aW5nIHdoYXQgcHJvcGVydHkgYSBm aWVsZAo+IGNvcnJlc3BvbmRzIHRvKS4gSSB0aGluayB0aGF0IHRoaXMgYXBwcm9hY2ggbWFrZXMg aXQgb3ZlcmFsbCBlYXNpZXIgZm9yCj4gdGhpcmQtcGFydHkgcGx1Z2luIGRldnMgdG8gaW50ZWdy YXRlIHRoZWlyIHBsdWdpbiBpbnRvIHRoZSBHVUksIGFuZCBpdCdzCj4gc29tZXRoaW5nIHdlIGNv dWxkIGV2ZW50dWFsbHkgYWxzbyBhZG9wdCBmb3IgbW9zdCBvZiBvdXIgb3duIHBsdWdpbnMuCgpU aGVyZSBpcyBhbHdheXMgYSBjb3VwbGluZyBiZXR3ZWVuIHRoZSBzZWN0aW9uIGNvbmZpZyBzY2hl bWEgYW5kIHRoZSBVSSwKYXMgdGhlIGxhdHRlciAqaXMqIGp1c3QgYW4gaW50ZXJmYWNlIGZvciB0 aGUgZm9ybWVyLCB0aGF0J3Mgbm90aGluZyB0bwphcmd1ZSBhYm91dCwgaXQgc2ltcGx5ICpoYXMg dG8gYmUqLgpIaWRpbmcgdGhhdCwgbGlrZSB5b3UgdHJ5IHRvIGRvIGhlcmUsIGlzIGp1c3QgYWRk aW5nIGhpZGRlbiBjb3VwbGluZywKd2hpY2ggaGFzIHNvbWUgZ29vZCBwb3RlbnRpYWwgdG8gYmVj b21lIGEgUElUQSB0byBtYW5hZ2UgZm9yIHVzIGFuZCBhbHNvCmRldnMgdXNpbmcgdGhpcy4KCj4+ IEFzIGl0J3MgbXVjaCBlYXNpZXIgdG8gc2VlIHdoYXQncyByZWFsbHkgcmVxdWlyZWQgYW5kIHdo YXQgbWlnaHQgYmUKPj4gcmF0aGVyIGEgKG5vdCBtdWNoIHVzZWQpIGhlYWRhY2hlIHRvIG1haW50 YWluIHN1cHBvcnQgZm9yIGluIEV4dEpTCj4+IGFuZCBhIGZ1dHVyZSBZZXcgYmFzZWQgVUkuIEku ZS4sIEknZCBiZSB0b3RhbGx5IGZpbmUgaWYgdGhlIGluaXRpYWwKPj4gdmVyc2lvbiB3b3VsZCBi YXNpY2FsbHkgbG9vayBsaWtlIHdoYXQgdGhlIEFDTUUgRE5TIHBsdWdpbiBVSSBkb2VzLAo+PiBm b2N1c2luZyBwdXJlbHkgb24gcmVxdWlyZWQgcGFyYW1ldGVycywgZGF0YSB0eXBlcyBhbmQgdmFs aWRhdGlvbgo+PiBvdmVyIGxheW91dC4KPiAKPiBJIHRvdGFsbHkgZ2V0IHlvdXIgcG9pbnQgaGVy ZSwgYW5kIHRoZSBmb2N1cyBpcyBvbiBleGFjdGx5Cj4gdGhhdOKAlHdoZXRoZXIgb3Igbm90IHRo ZSBjb2x1bW5zIGFyZSBpbiB0aGUgc2NoZW1hIGRvZXNuJ3QgcmVhbGx5IG1ha2UKPiBhbnkgZGlm ZmVyZW5jZSBJTUhPLgoKWWVhaCwgZG9uJ3QgZm9jdXMgb24gdGhlIGNvbHVtbnMsIHRoYXQncyB0 aGUgbGVhc3Qgb2Ygb3VyIHByb2JsZW1zCmhlcmUuCgpJbiBjb25jbHVzaW9uOiBsZXQncyBnZXQg YSBzaW1wbGUgaW1wbGVtZW50YXRpb24gb3V0IHNvb25lciB0aGF0IGhhcwptaW5pbWFsIGNvZGUg Y2hhbmdlcywgd2UgY2FuIGFsd2F5cyBleHRlbmQgdGhhdCwgYm90aCBpbiBzY2hlbWEKY2FwYWJp bGl0aWVzIG9yIGV2ZW4gaW4gb3ZlcmFsbCBhcHByb2FjaC4gSXQncyAqbXVjaCogZWFzaWVyIHRv IGtlZXAKYmFja3dhcmQgY29tcGF0aWJpbGl0eSBzdXBwb3J0IGZvciBzb21ldGhpbmcgYXMgc2lt cGxlIHRoYXQgd2UgaGF2ZQp0byBzdXBwb3J0IGFueXdheSAoaS5lLiwgdGhlIHNlY3Rpb24gY29u ZmlnIHNjaGVtYSksIHNvIGV2ZW4gaWYgaXQgdHVybnMKb3V0IHRoYXQgaXQganVzdCBoYXMgdG8g YmUgc29tZSBkZWRpY2F0ZWQgVUkgc3BlY2lmaWMgc2NoZW1hIHN0dWZmIHdpdGgKbHVhIHNjcmlw dGluZyBhbmQgd2hhdCBub3QsIHdlIGNvdWxkIHN0aWxsIGRvIGl0LCBidXQgZ2l2ZW4gdGhlIGV4 aXN0aW5nCnNjaGVtYSBzdGF0ZSBhbmQgY2FwYWJpbGl0eSBJIHJlYWxseSBkbyBub3Qgc2VlIGFu eSBuZWVkIGZvciBzdGFydGluZwpvdXQgd2l0aCBhbnl0aGluZyBsaWtlIHRoYXQuCgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KcHZlLWRldmVsIG1haWxp bmcgbGlzdApwdmUtZGV2ZWxAbGlzdHMucHJveG1veC5jb20KaHR0cHM6Ly9saXN0cy5wcm94bW94 LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vcHZlLWRldmVsCg==