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 775661FF17C for <inbox@lore.proxmox.com>; Wed, 2 Apr 2025 12:02:07 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 75A3FE53C; Wed, 2 Apr 2025 12:01:54 +0200 (CEST) Mime-Version: 1.0 Date: Wed, 02 Apr 2025 12:01:44 +0200 Message-Id: <D8W2EDAGJLSS.3VZCQPHVUO11X@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: <20250401173435.221892-1-f.ebner@proxmox.com> <20250401173435.221892-13-f.ebner@proxmox.com> In-Reply-To: <20250401173435.221892-13-f.ebner@proxmox.com> X-SPAM-LEVEL: Spam detection results: 0 AWL 0.076 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 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: [pve-devel] [PATCH storage v7 12/37] plugin: introduce new_backup_provider() method 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> T24gVHVlIEFwciAxLCAyMDI1IGF0IDc6MzQgUE0gQ0VTVCwgRmlvbmEgRWJuZXIgd3JvdGU6Cj4g VGhlIG5ld19iYWNrdXBfcHJvdmlkZXIoKSBtZXRob2QgY2FuIGJlIHVzZWQgYnkgc3RvcmFnZSBw bHVnaW5zIGZvcgo+IGV4dGVybmFsIGJhY2t1cCBwcm92aWRlcnMuIElmIHRoZSBtZXRob2QgcmV0 dXJucyBhIHByb3ZpZGVyLCBQcm94bW94Cj4gVkUgd2lsbCB1c2UgY2FsbGJhY2tzIHRvIHRoYXQg cHJvdmlkZXIgZm9yIGJhY2t1cHMgYW5kIHJlc3RvcmUgaW5zdGVhZAo+IG9mIHVzaW5nIGl0cyB1 c3VhbCBiYWNrdXAvcmVzdG9yZSBtZWNoYW5pc21zLgoKUmVhbGx5IGxpa2luZyB0aGlzIHBhdGNo IGFzIHdlbGwgYXMgYWxsIHRoZSBkb2N1bWVudGF0aW9uISA6KQoKVGhlcmUgYXJlIGEgY291cGxl IGNvbW1lbnRzIGlubGluZS4KCj4KPiBUaGUgYmFja3VwIHByb3ZpZGVyIEFQSSBpcyBzcGxpdCBp bnRvIHR3byBwYXJ0cywgYm90aCBvZiB3aGljaCBhZ2Fpbgo+IG5lZWQgZGlmZmVyZW50IGltcGxl bWVudGF0aW9ucyBmb3IgVk0gYW5kIExYQyBndWVzdHM6Cj4KPiAxLiBCYWNrdXAgQVBJCj4KPiBJ biBQcm94bW94IFZFLCBhIGJhY2t1cCBqb2IgY29uc2lzdHMgb2YgYmFja3VwIHRhc2tzIGZvciBp bmRpdmlkdWFsCj4gZ3Vlc3RzLiBUaGVyZSBhcmUgbWV0aG9kcyBmb3IgaW5pdGlhbGl6YXRpb24g YW5kIGNsZWFudXAgb2YgdGhlIGpvYiwKPiBpLmUuIGpvYl9pbml0KCkgYW5kIGpvYl9jbGVhbnVw KCkgYW5kIGZvciBlYWNoIGd1ZXN0IGJhY2t1cCwgaS5lLgo+IGJhY2t1cF9pbml0KCkgYW5kIGJh Y2t1cF9jbGVhbnVwKCkuCj4KPiBUaGUgYmFja3VwX2dldF9tZWNoYW5pc20oKSBtZXRob2QgaXMg dXNlZCB0byBkZWNpZGUgb24gdGhlIGJhY2t1cAo+IG1lY2hhbmlzbS4gQ3VycmVudGx5LCAnZmls ZS1oYW5kbGUnIG9yICduYmQnIGZvciBWTXMsIGFuZCAnZGlyZWN0b3J5Jwo+IGZvciBjb250YWlu ZXJzIGlzIHBvc3NpYmxlLiBUaGUgbWV0aG9kIGFsc28gbGV0J3MgdGhlIHBsdWdpbiBpbmRpY2F0 ZQo+IHdoZXRoZXIgdG8gdXNlIGEgYml0bWFwIGZvciBpbmNyZW1lbnRhbCBWTSBiYWNrdXAgb3Ig bm90LiBJdCBpcyBlbm91Z2gKPiB0byBpbXBsZW1lbnQgb25lIG1lY2hhbmlzbSBmb3IgVk1zIGFu ZCBvbmUgbWVjaGFuaXNtIGZvciBjb250YWluZXJzLgo+Cj4gTmV4dCwgdGhlcmUgYXJlIG1ldGhv ZHMgZm9yIGJhY2tpbmcgdXAgdGhlIGd1ZXN0J3MgY29uZmlndXJhdGlvbiBhbmQKPiBkYXRhLCBi YWNrdXBfdm0oKSBmb3IgVk0gYmFja3VwIGFuZCBiYWNrdXBfY29udGFpbmVyKCkgZm9yIGNvbnRh aW5lcgo+IGJhY2t1cCwgd2l0aCB0aGUgbGF0dGVyIHJ1bm5pbmcKPgo+IEZpbmFsbHksIHNvbWUg aGVscGVycyBsaWtlIGdldHRpbmcgdGhlIHByb3ZpZGVyIG5hbWUgb3Igdm9sdW1lIElEIGZvcgo+ IHRoZSBiYWNrdXAgdGFyZ2V0LCBhcyB3ZWxsIGFzIGZvciBoYW5kbGluZyB0aGUgYmFja3VwIGxv Zy4KPgo+IFRoZSBiYWNrdXAgdHJhbnNhY3Rpb24gbG9va3MgYXMgZm9sbG93czoKPgo+IEZpcnN0 LCBqb2JfaW5pdCgpIGlzIGNhbGxlZCB0aGF0IGNhbiBiZSB1c2VkIHRvIGNoZWNrIGJhY2t1cCBz ZXJ2ZXIKPiBhdmFpbGFiaWxpdHkgYW5kIHByZXBhcmUgdGhlIGNvbm5lY3Rpb24uIFRoZW4gZm9y IGVhY2ggZ3Vlc3QKPiBiYWNrdXBfaW5pdCgpIGZvbGxvd2VkIGJ5IGJhY2t1cF92bSgpIG9yIGJh Y2t1cF9jb250YWluZXIoKSBhbmQgZmluYWxseQo+IGJhY2t1cF9jbGVhbnVwKCkuIEFmdGVyd2Fy ZHMgam9iX2NsZWFudXAoKSBpcyBjYWxsZWQuIEZvciBjb250YWluZXJzLAo+IHRoZXJlIGlzIGFu IGFkZGl0aW9uYWwgYmFja3VwX2NvbnRhaW5lcl9wcmVwYXJlKCkgY2FsbCB3aGlsZSBzdGlsbAo+ IHByaXZpbGVnZWQuIFRoZSBhY3R1YWwgYmFja3VwX2NvbnRhaW5lcigpIGNhbGwgaGFwcGVucyBh cyB0aGUKPiAodW5wcml2aWxlZ2VkKSBjb250YWluZXIgcm9vdCB1c2VyLCBzbyB0aGF0IHRoZSBm aWxlIG93bmVyIGFuZCBncm91cCBJRHMKPiBtYXRjaCB0aGUgY29udGFpbmVyJ3MgcGVyc3BlY3Rp dmUuCj4KPiAxLjEgQmFja3VwIE1lY2hhbmlzbXMKPgo+IFZNOgo+Cj4gQWNjZXNzIHRvIHRoZSBk YXRhIG9uIHRoZSBWTSdzIGRpc2sgZnJvbSB0aGUgdGltZSB0aGUgYmFja3VwIHN0YXJ0ZWQKPiBp cyBtYWRlIGF2YWlsYWJsZSB2aWEgYSBzby1jYWxsZWQgInNuYXBzaG90IGFjY2VzcyIuIFRoaXMg aXMgZWl0aGVyCj4gdGhlIGZ1bGwgaW1hZ2UsIG9yIGluIGNhc2UgYSBiaXRtYXAgaXMgdXNlZCwg dGhlIGRpcnR5IHBhcnRzIG9mIHRoZQo+IGltYWdlIHNpbmNlIHRoZSBsYXN0IHRpbWUgdGhlIGJp dG1hcCB3YXMgdXNlZCBmb3IgYSBzdWNjZXNzZnVsIGJhY2t1cC4KPiBSZWFkaW5nIG91dHNpZGUg b2YgdGhlIGRpcnR5IHBhcnRzIHdpbGwgcmVzdWx0IGluIGFuIGVycm9yLiBBZnRlcgo+IGJhY2tp bmcgdXAgZWFjaCBwYXJ0IG9mIHRoZSBkaXNrLCBpdCBzaG91bGQgYmUgZGlzY2FyZGVkIGluIHRo ZSBleHBvcnQKPiB0byBhdm9pZCB1bm5lY2Vzc2FyeSBzcGFjZSB1c2FnZSBvbiB0aGUgUHJveG1v eCBWRSBzaWRlICh0aGVyZSBpcyBhbgo+IGFzc29jaWF0ZWQgZmxlZWNpbmcgaW1hZ2UpLgo+Cj4g Vk0gbWVjaGFuaXNtICdmaWxlLWhhbmRsZSc6Cj4KPiBUaGUgc25hcHNob3QgYWNjZXNzIGlzIGV4 cG9zZWQgdmlhIGEgZmlsZSBkZXNjcmlwdG9yLiBBIHN1YnJvdXRpbmUgdG8KPiByZWFkIHRoZSBk aXJ0eSByZWdpb25zIGZvciBpbmNyZW1lbnRhbCBiYWNrdXAgaXMgcHJvdmlkZWQgYXMgd2VsbC4K Pgo+IFZNIG1lY2hhbmlzbSAnbmJkJzoKPgo+IFRoZSBzbmFwc2hvdCBhY2Nlc3MgYW5kLCBpZiB1 c2VkLCBiaXRtYXAgYXJlIGV4cG9ydGVkIHZpYSBOQkQuCj4KPiBDb250YWluZXIgbWVjaGFuaXNt ICdkaXJlY3RvcnknOgo+Cj4gQSBjb3B5IG9yIHNuYXBzaG90IG9mIHRoZSBjb250YWluZXIncyBm aWxlc3lzdGVtIHN0YXRlIGlzIG1hZGUKPiBhdmFpbGFibGUgYXMgYSBkaXJlY3RvcnkuIFRoZSBt ZXRob2QgaXMgZXhlY3V0ZWQgaW5zaWRlIHRoZSB1c2VyCj4gbmFtZXNwYWNlIGFzc29jaWF0ZWQg dG8gdGhlIGNvbnRhaW5lci4KPgo+IDIuIFJlc3RvcmUgQVBJCj4KPiBUaGUgcmVzdG9yZV9nZXRf bWVjaGFuaXNtKCkgbWV0aG9kIGlzIHVzZWQgdG8gZGVjaWRlIG9uIHRoZSByZXN0b3JlCj4gbWVj aGFuaXNtLiBDdXJyZW50bHksICdxZW11LWltZycgZm9yIFZNcywgYW5kICdkaXJlY3RvcnknIG9y ICd0YXInIGZvcgo+IGNvbnRhaW5lcnMgYXJlIHBvc3NpYmxlLiBJdCBpcyBlbm91Z2ggdG8gaW1w bGVtZW50IG9uZSBtZWNoYW5pc20gZm9yCj4gVk1zIGFuZCBvbmUgbWVjaGFuaXNtIGZvciBjb250 YWluZXJzLgo+Cj4gTmV4dCwgbWV0aG9kcyBmb3IgZXh0cmFjdGluZyB0aGUgZ3Vlc3QgYW5kIGZp cmV3YWxsIGNvbmZpZ3VyYXRpb24gYW5kCj4gdGhlIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgcmVz dG9yZSBtZWNoYW5pc20gdmlhIGEgcGFpciBvZiBtZXRob2RzOiBhbgo+IGluaXQgbWV0aG9kLCBm b3IgbWFraW5nIHRoZSBkYXRhIGF2YWlsYWJsZSB0byBQcm94bW94IFZFIGFuZCBhIGNsZWFudXAK PiBtZXRob2QgdGhhdCBpcyBjYWxsZWQgYWZ0ZXIgcmVzdG9yZS4KPgo+IDIuMS4gUmVzdG9yZSBN ZWNoYW5pc21zCj4KPiBWTSBtZWNoYW5pc20gJ3FlbXUtaW1nJzoKPgo+IFRoZSBiYWNrdXAgcHJv dmlkZXIgZ2l2ZXMgYSBwYXRoIHRvIHRoZSBkaXNrIGltYWdlIHRoYXQgd2lsbCBiZQo+IHJlc3Rv cmVkLiBUaGUgcGF0aCBuZWVkcyB0byBiZSBzb21ldGhpbmcgJ3FlbXUtaW1nJyBjYW4gZGVhbCB3 aXRoLAo+IGUuZy4gY2FuIGFsc28gYmUgYW4gTkJEIFVSSSBvciBzaW1pbGFyLgo+Cj4gQ29udGFp bmVyIG1lY2hhbmlzbSAnZGlyZWN0b3J5JzoKPgo+IFRoZSBiYWNrdXAgcHJvdmlkZXIgZ2l2ZXMg dGhlIHBhdGggdG8gYSBkaXJlY3Rvcnkgd2l0aCB0aGUgZnVsbAo+IGZpbGVzeXN0ZW0gc3RydWN0 dXJlIG9mIHRoZSBjb250YWluZXIuCj4KPiBDb250YWluZXIgbWVjaGFuaXNtICd0YXInOgo+Cj4g VGhlIGJhY2t1cCBwcm92aWRlciBnaXZlcyB0aGUgcGF0aCB0byBhIChwb3RlbnRpYWxseSBjb21w cmVzc2VkKSB0YXIKPiBhcmNoaXZlIHdpdGggdGhlIGZ1bGwgZmlsZXN5c3RlbSBzdHJ1Y3R1cmUg b2YgdGhlIGNvbnRhaW5lci4KPgo+IFNlZSB0aGUgUFZFOjpCYWNrdXBQcm92aWRlcjo6UGx1Z2lu IG1vZHVsZSBmb3IgdGhlIGZ1bGwgQVBJCj4gZG9jdW1lbnRhdGlvbi4KPgo+IFNpZ25lZC1vZmYt Ynk6IEZpb25hIEVibmVyIDxmLmVibmVyQHByb3htb3guY29tPgo+IC0tLQo+Cj4gQ2hhbmdlcyBp biB2NzoKPiAqIFZlcmlmeSByZXN1bHQgZnJvbSBiYWNrdXBfaW5pdCgpLiBEb2N1bWVudCBhbGxv d2VkIGNoYXJhY3RlcnMsIGkuZS4KPiAgICRQVkU6OlN0b3JhZ2U6OlNBRkVfQ0hBUl9DTEFTU19S RSArIHNsYXNoICsgY29sb24KPiAqIE1vdmUgYmFja3VwX2NvbnRhaW5lcl9wZXJwYXJlKCkgdG8g ZGlyZWN0bHkgYWJvdmUgYmFja3VwX2NvbnRhaW5lcigpCj4gICBpbiB0aGUgYmFzZSBiYWNrdXAg cHJvdmlkZXIgcGx1Z2luLgo+ICogRG9jdW1lbnQgbGltaXRhdGlvbiBvZiBiYWNrdXBfY29udGFp bmVyKCkgbWV0aG9kIG5vdCBiZWluZyBhYmxlIHRvCj4gICBwZXJzaXN0ZW50bHkgbW9kaWZ5ICRz ZWxmLCBiZWNhdXNlIGl0IHJ1bnMgaW4gYSBmb3JrKCkuCj4gKiBTdXBwb3J0IHBlci1kZXZpY2Ug Yml0bWFwIG5hbWVzLiBBZGRlZCBhIG5ldwo+ICAgYmFja3VwX3ZtX2F2YWlsYWJsZV9iaXRtYXBz KCkgbWV0aG9kIHRvIHRoZSBiYWNrdXAgcHJvdmlkZXIgQVBJLiBUaGUKPiAgIGJhY2t1cCBwcm92 aWRlciBjYW4gY2hlY2sgb24gdGhlIHNlcnZlciB3aGljaCBiaXRtYXBzIGNhbiBiZSB1c2VkIGlu Cj4gICBwcmluY2lwbGUgYW5kIHRlbGwgdXMgdG8gdHJ5LiBBY3V0YWwgYml0bWFwIG1vZGUgc3Rp bGwgd2lsbCBiZQo+ICAgd2hhdCdzIHBhc3NlZCB0byBiYWNrdXBfdm0oKSwgYmVjYXVzZSB0aGUg cmVxdWVzdGVkIGJpdG1hcCBtaWdodCBub3QKPiAgIGV4aXN0IChhbnltb3JlKS4gVGhpcyBhbHNv IG1lYW5zIHRoZSBnZXRfYmFja3VwX21lY2hhbmlzbSgpIG1ldGhvZAo+ICAgd2lsbCByZXR1cm4g b25seSB0aGUgbWVjaGFuaXNtIGFuZCBub3QgdGhlIGJpdG1hcCBuYW1lLgo+Cj4gIHNyYy9QVkUv QmFja3VwUHJvdmlkZXIvTWFrZWZpbGUgICAgICAgIHwgICAgMyArCj4gIHNyYy9QVkUvQmFja3Vw UHJvdmlkZXIvUGx1Z2luL0Jhc2UucG0gIHwgMTE2NSArKysrKysrKysrKysrKysrKysrKysrKysK PiAgc3JjL1BWRS9CYWNrdXBQcm92aWRlci9QbHVnaW4vTWFrZWZpbGUgfCAgICA1ICsKPiAgc3Jj L1BWRS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKPiAgc3JjL1BWRS9T dG9yYWdlLnBtICAgICAgICAgICAgICAgICAgICAgfCAgICA4ICsKPiAgc3JjL1BWRS9TdG9yYWdl L1BsdWdpbi5wbSAgICAgICAgICAgICAgfCAgIDE1ICsKPiAgNiBmaWxlcyBjaGFuZ2VkLCAxMTk3 IGluc2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9QVkUvQmFja3VwUHJvdmlk ZXIvTWFrZWZpbGUKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9QVkUvQmFja3VwUHJvdmlkZXIv UGx1Z2luL0Jhc2UucG0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9QVkUvQmFja3VwUHJvdmlk ZXIvUGx1Z2luL01ha2VmaWxlCj4KPiBkaWZmIC0tZ2l0IGEvc3JjL1BWRS9CYWNrdXBQcm92aWRl ci9NYWtlZmlsZSBiL3NyYy9QVkUvQmFja3VwUHJvdmlkZXIvTWFrZWZpbGUKPiBuZXcgZmlsZSBt b2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLmYwMThjZWYKPiAtLS0gL2Rldi9udWxsCj4gKysr IGIvc3JjL1BWRS9CYWNrdXBQcm92aWRlci9NYWtlZmlsZQo+IEBAIC0wLDAgKzEsMyBAQAo+ICsu UEhPTlk6IGluc3RhbGwKPiAraW5zdGFsbDoKPiArCW1ha2UgLUMgUGx1Z2luIGluc3RhbGwKPiBk aWZmIC0tZ2l0IGEvc3JjL1BWRS9CYWNrdXBQcm92aWRlci9QbHVnaW4vQmFzZS5wbSBiL3NyYy9Q VkUvQmFja3VwUHJvdmlkZXIvUGx1Z2luL0Jhc2UucG0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ IGluZGV4IDAwMDAwMDAuLmY4Mzc4NjcKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvc3JjL1BWRS9C YWNrdXBQcm92aWRlci9QbHVnaW4vQmFzZS5wbQo+IEBAIC0wLDAgKzEsMTE2NSBAQAo+ICtwYWNr YWdlIFBWRTo6QmFja3VwUHJvdmlkZXI6OlBsdWdpbjo6QmFzZTsKPiArCj4gK3VzZSBzdHJpY3Q7 Cj4gK3VzZSB3YXJuaW5nczsKPiArCj4gKz1wb2QKPiArCj4gKz1oZWFkMSBOQU1FCj4gKwo+ICtQ VkU6OkJhY2t1cFByb3ZpZGVyOjpQbHVnaW46OkJhc2UgLSBCYXNlIFBsdWdpbiBmb3IgQmFja3Vw IFByb3ZpZGVyIEFQSQo+ICsKPiArPWhlYWQxIFNZTk9QU0lTCj4gKwo+ICsgICAgdXNlIGJhc2Ug cXcoUFZFOjpCYWNrdXBQcm92aWRlcjo6UGx1Z2luOjpCYXNlKTsKCllvdSBjYW4gYHVzZSBwYXJl bnQgLi4uYCBoZXJlLCBhcyB0aGF0J3MgbW9yZSBsaWdodHdlaWdodC4gYGJhc2VgIGlzCmZpbmUg dG9vIHRob3VnaC4KClNlZTogaHR0cHM6Ly9wZXJsZG9jLnBlcmwub3JnL3BhcmVudAoKT25seSBk aWZmZXJlbmNlIGlzIHRoYXQgYHVzZSBwYXJlbnQgLi4uYCBkb2Vzbid0IHN1cHBvcnQgdGhlIGBm aWVsZHNgCnByYWdtYSwgYnV0IHRoYXQgZG9lc24ndCBhcHBseSBoZXJlIGFueXdheSA6UAoKPiAr Cj4gKz1oZWFkMSBERVNDUklQVElPTgo+ICsKPiArVGhpcyBtb2R1bGUgc2VydmVzIGFzIHRoZSBi YXNlIGZvciBhbnkgbW9kdWxlIGltcGxlbWVudGluZyB0aGUgQVBJIHRoYXQgUHJveG1veAo+ICtW RSB1c2VzIHRvIGludGVyZmFjZSB3aXRoIGV4dGVybmFsIGJhY2t1cCBwcm92aWRlcnMuIFRoZSBB UEkgaXMgdXNlZCBmb3IKPiArY3JlYXRpbmcgYW5kIHJlc3RvcmluZyBiYWNrdXBzLiBBIGJhY2t1 cCBwcm92aWRlciBhbHNvIG5lZWRzIHRvIHByb3ZpZGUgYQo+ICtzdG9yYWdlIHBsdWdpbiBmb3Ig aW50ZWdyYXRpb24gd2l0aCB0aGUgZnJvbnQtZW5kLiBUaGUgQVBJIGhlcmUgaXMgdXNlZCBieSB0 aGUKPiArYmFja3VwIHN0YWNrIGluIHRoZSBiYWNrZW5kLgo+ICsKPiArMS4gQmFja3VwIEFQSQoK VGhlc2Ugc3Vic2VjdGlvbnMgaGVyZSAqY291bGQqIHN0YXJ0IHdpdGggYSBgPWhlYWQyYCBpZiB5 b3Ugd2FudCB0bywgYnV0CklNTyB0aGlzIGlzIGp1c3QgZmluZSBvdGhlcndpc2UuIEUuZy4KCj1o ZWFkMiAxLiBCYWNrdXAgQVBJCgo+ICsKPiArSW4gUHJveG1veCBWRSwgYSBiYWNrdXAgam9iIGNv bnNpc3RzIG9mIGJhY2t1cCB0YXNrcyBmb3IgaW5kaXZpZHVhbCBndWVzdHMuCj4gK1RoZXJlIGFy ZSBtZXRob2RzIGZvciBpbml0aWFsaXphdGlvbiBhbmQgY2xlYW51cCBvZiB0aGUgam9iLCBpLmUu IGpvYl9pbml0KCkgYW5kCj4gK2pvYl9jbGVhbnVwKCkgYW5kIGZvciBlYWNoIGd1ZXN0IGJhY2t1 cCwgaS5lLiBiYWNrdXBfaW5pdCgpIGFuZAo+ICtiYWNrdXBfY2xlYW51cCgpLgo+ICsKPiArVGhl IGJhY2t1cF9nZXRfbWVjaGFuaXNtKCkgbWV0aG9kIGlzIHVzZWQgdG8gZGVjaWRlIG9uIHRoZSBi YWNrdXAgbWVjaGFuaXNtLgo+ICtDdXJyZW50bHksICdmaWxlLWhhbmRsZScgb3IgJ25iZCcgZm9y IFZNcywgYW5kICdkaXJlY3RvcnknIGZvciBjb250YWluZXJzIGlzCj4gK3Bvc3NpYmxlLiBUaGUg bWV0aG9kIGFsc28gbGV0J3MgdGhlIHBsdWdpbiBpbmRpY2F0ZSB3aGV0aGVyIHRvIHVzZSBhIGJp dG1hcCBmb3IKPiAraW5jcmVtZW50YWwgVk0gYmFja3VwIG9yIG5vdC4gSXQgaXMgZW5vdWdoIHRv IGltcGxlbWVudCBvbmUgbWVjaGFuaXNtIGZvciBWTXMKPiArYW5kIG9uZSBtZWNoYW5pc20gZm9y IGNvbnRhaW5lcnMuCj4gKwo+ICtOZXh0LCB0aGVyZSBhcmUgbWV0aG9kcyBmb3IgYmFja2luZyB1 cCB0aGUgZ3Vlc3QncyBjb25maWd1cmF0aW9uIGFuZCBkYXRhLAo+ICtiYWNrdXBfdm0oKSBmb3Ig Vk0gYmFja3VwIGFuZCBiYWNrdXBfY29udGFpbmVyKCkgZm9yIGNvbnRhaW5lciBiYWNrdXAuCj4g Kwo+ICtGaW5hbGx5LCBzb21lIGhlbHBlcnMgbGlrZSBwcm92aWRlcl9uYW1lKCkgZm9yIGdldHRp bmcgdGhlIG5hbWUgb2YgdGhlIGJhY2t1cAo+ICtwcm92aWRlciBhbmQgYmFja3VwX2hhbmRsZV9s b2dfZmlsZSgpIGZvciBoYW5kbGluZyB0aGUgYmFja3VwIHRhc2sgbG9nLgo+ICsKPiArVGhlIGJh Y2t1cCB0cmFuc2FjdGlvbiBsb29rcyBhcyBmb2xsb3dzOgo+ICsKPiArRmlyc3QsIGpvYl9pbml0 KCkgaXMgY2FsbGVkIHRoYXQgY2FuIGJlIHVzZWQgdG8gY2hlY2sgYmFja3VwIHNlcnZlciBhdmFp bGFiaWxpdHkKPiArYW5kIHByZXBhcmUgdGhlIGNvbm5lY3Rpb24uIFRoZW4gZm9yIGVhY2ggZ3Vl c3QgYmFja3VwX2luaXQoKSBmb2xsb3dlZCBieQo+ICtiYWNrdXBfdm0oKSBvciBiYWNrdXBfY29u dGFpbmVyKCkgYW5kIGZpbmFsbHkgYmFja3VwX2NsZWFudXAoKS4gQWZ0ZXJ3YXJkcwo+ICtqb2Jf Y2xlYW51cCgpIGlzIGNhbGxlZC4gRm9yIGNvbnRhaW5lcnMsIHRoZXJlIGlzIGFuIGFkZGl0aW9u YWwKPiArYmFja3VwX2NvbnRhaW5lcl9wcmVwYXJlKCkgY2FsbCB3aGlsZSBzdGlsbCBwcml2aWxl Z2VkLiBUaGUgYWN0dWFsCj4gK2JhY2t1cF9jb250YWluZXIoKSBjYWxsIGhhcHBlbnMgYXMgdGhl ICh1bnByaXZpbGVnZWQpIGNvbnRhaW5lciByb290IHVzZXIsIHNvCj4gK3RoYXQgdGhlIGZpbGUg b3duZXIgYW5kIGdyb3VwIElEcyBtYXRjaCB0aGUgY29udGFpbmVyJ3MgcGVyc3BlY3RpdmUuCj4g Kwo+ICsxLjEgQmFja3VwIE1lY2hhbmlzbXMKPiArCj4gK1ZNOgo+ICsKPiArQWNjZXNzIHRvIHRo ZSBkYXRhIG9uIHRoZSBWTSdzIGRpc2sgaXMgbWFkZSBhdmFpbGFibGUgdmlhIGEgInNuYXBzaG90 IGFjY2VzcyIKPiArYWJzdHJhY3Rpb24uIFRoaXMgaXMgZWZmZWN0aXZlbHkgYSBzbmFwc2hvdCBv ZiB0aGUgZGF0YSBmcm9tIHRoZSB0aW1lIHRoZSBiYWNrdXAKPiAraXMgc3RhcnRlZC4gTmV3IGd1 ZXN0IHdyaXRlcyBhZnRlciB0aGUgYmFja3VwIHN0YXJ0ZWQgZG8gbm90IGFmZmVjdCB0aGlzLiBU aGUKPiArInNuYXBzaG90IGFjY2VzcyIgcmVwcmVzZW50cyBlaXRoZXIgdGhlIGZ1bGwgaW1hZ2Us IG9yIGluIGNhc2UgYSBiaXRtYXAgaXMgdXNlZCwKPiArdGhlIGRpcnR5IHBhcnRzIG9mIHRoZSBp bWFnZSBzaW5jZSB0aGUgbGFzdCB0aW1lIHRoZSBiaXRtYXAgd2FzIHVzZWQgZm9yIGEKPiArc3Vj Y2Vzc2Z1bCBiYWNrdXAuCj4gKwo+ICtOT1RFOiBJZiBhIGJpdG1hcCBpcyB1c2VkLCB0aGUgInNu YXBzaG90IGFjY2VzcyIgaXMgcmVhbGx5IG9ubHkgdGhlIGRpcnR5IHBhcnRzCj4gK29mIHRoZSBp bWFnZS4gWW91IGhhdmUgdG8gcXVlcnkgdGhlIGJpdG1hcCB0byBzZWUgd2hpY2ggcGFydHMgb2Yg dGhlIGltYWdlIGFyZQo+ICthY2Nlc3NpYmxlL3ByZXNlbnQuIFJlYWRpbmcgb3IgZG9pbmcgYW55 IG90aGVyIG9wZXJhdGlvbiAobGlrZSBxdWVyeWluZyB0aGUKPiArYmxvY2sgYWxsb2NhdGlvbiBz dGF0dXMgdmlhIE5CRCkgb3V0c2lkZSBvZiB0aGUgZGlydHkgcGFydHMgb2YgdGhlIGltYWdlIHdp bGwKPiArcmVzdWx0IGluIGFuIGVycm9yLiBJbiBwYXJ0aWN1bGFyLCBpZiB0aGVyZSB3ZXJlIG5v IG5ldyB3cml0ZXMgc2luY2UgdGhlIGxhc3QKPiArc3VjY2Vzc2Z1bCBiYWNrdXAsIGkuZS4gdGhl IGJpdG1hcCBpcyBmdWxseSBjbGVhbiwgdGhlbiB0aGUgaW1hZ2UgY2Fubm90IGJlCj4gK2FjY2Vz c2VkIGF0IGFsbCwgeW91IGNhbiBvbmx5IHF1ZXJ5IHRoZSBkaXJ0eSBiaXRtYXAuCj4gKwo+ICtB ZnRlciBiYWNraW5nIHVwIGVhY2ggcGFydCBvZiB0aGUgZGlzaywgaXQgc2hvdWxkIGJlIGRpc2Nh cmRlZCBpbiB0aGUgZXhwb3J0IHRvCj4gK2F2b2lkIHVubmVjZXNzYXJ5IHNwYWNlIHVzYWdlIG9u IHRoZSBQcm94bW94IFZFIHNpZGUgKHRoZXJlIGlzIGFuIGFzc29jaWF0ZWQKPiArZmxlZWNpbmcg aW1hZ2UpLgo+ICsKPiArVk0gbWVjaGFuaXNtICdmaWxlLWhhbmRsZSc6Cj4gKwo+ICtUaGUgc25h cHNob3QgYWNjZXNzIGlzIGV4cG9zZWQgdmlhIGEgZmlsZSBkZXNjcmlwdG9yLiBBIHN1YnJvdXRp bmUgdG8gcmVhZCB0aGUKPiArZGlydHkgcmVnaW9ucyBmb3IgaW5jcmVtZW50YWwgYmFja3VwIGlz IHByb3ZpZGVkIGFzIHdlbGwuCj4gKwo+ICtWTSBtZWNoYW5pc20gJ25iZCc6Cj4gKwo+ICtUaGUg c25hcHNob3QgYWNjZXNzIGFuZCwgaWYgdXNlZCwgYml0bWFwIGFyZSBleHBvcnRlZCB2aWEgTkJE LiBGb3IgdGhlCj4gK3NwZWNpZmljYXRpb24gb2YgdGhlIE5CRCBtZXRhZGF0YSBjb250ZXh0IGZv ciBkaXJ0eSBiaXRtYXBzLCBzZWU6Cj4gK2h0dHBzOi8vcWVtdS5yZWFkdGhlZG9jcy5pby9lbi9t YXN0ZXIvaW50ZXJvcC9uYmQuaHRtbAoKVGhlIGh5cGVybGluayBhYm92ZSBzaG91bGQgYmU6CgpM PGh0dHBzOi8vcWVtdS5yZWFkdGhlZG9jcy5pby9lbi9tYXN0ZXIvaW50ZXJvcC9uYmQuaHRtbD4K CihZZWFoIEkga25vdywgaXQncyBhIFBPRCB0aGluZyA7UCApCgo+ICsKPiArQ29udGFpbmVyIG1l Y2hhbmlzbSAnZGlyZWN0b3J5JzoKPiArCj4gK0EgY29weSBvciBzbmFwc2hvdCBvZiB0aGUgY29u dGFpbmVyJ3MgZmlsZXN5c3RlbSBzdGF0ZSBpcyBtYWRlIGF2YWlsYWJsZSBhcyBhCj4gK2RpcmVj dG9yeS4KPiArCj4gKzIuIFJlc3RvcmUgQVBJCj4gKwo+ICtUaGUgcmVzdG9yZV9nZXRfbWVjaGFu aXNtKCkgbWV0aG9kIGlzIHVzZWQgdG8gZGVjaWRlIG9uIHRoZSByZXN0b3JlIG1lY2hhbmlzbS4K PiArQ3VycmVudGx5LCAncWVtdS1pbWcnIGZvciBWTXMsIGFuZCAnZGlyZWN0b3J5JyBvciAndGFy JyBmb3IgY29udGFpbmVycyBhcmUKPiArcG9zc2libGUuIEl0IGlzIGVub3VnaCB0byBpbXBsZW1l bnQgb25lIG1lY2hhbmlzbSBmb3IgVk1zIGFuZCBvbmUgbWVjaGFuaXNtIGZvcgo+ICtjb250YWlu ZXJzLgo+ICsKPiArTmV4dCwgbWV0aG9kcyBmb3IgZXh0cmFjdGluZyB0aGUgZ3Vlc3QgYW5kIGZp cmV3YWxsIGNvbmZpZ3VyYXRpb24gYW5kIHRoZQo+ICtpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIHJl c3RvcmUgbWVjaGFuaXNtIHZpYSBhIHBhaXIgb2YgbWV0aG9kczogYW4gaW5pdCBtZXRob2QsCj4g K2ZvciBtYWtpbmcgdGhlIGRhdGEgYXZhaWxhYmxlIHRvIFByb3htb3ggVkUgYW5kIGEgY2xlYW51 cCBtZXRob2QgdGhhdCBpcyBjYWxsZWQKPiArYWZ0ZXIgcmVzdG9yZS4KPiArCj4gKzIuMS4gUmVz dG9yZSBNZWNoYW5pc21zCj4gKwo+ICtWTSBtZWNoYW5pc20gJ3FlbXUtaW1nJzoKPiArCj4gK1Ro ZSBiYWNrdXAgcHJvdmlkZXIgZ2l2ZXMgYSBwYXRoIHRvIHRoZSBkaXNrIGltYWdlIHRoYXQgd2ls bCBiZSByZXN0b3JlZC4gVGhlCj4gK3BhdGggbmVlZHMgdG8gYmUgc29tZXRoaW5nICdxZW11LWlt ZycgY2FuIGRlYWwgd2l0aCwgZS5nLiBjYW4gYWxzbyBiZSBhbiBOQkQgVVJJCj4gK29yIHNpbWls YXIuCj4gKwo+ICtDb250YWluZXIgbWVjaGFuaXNtICdkaXJlY3RvcnknOgo+ICsKPiArVGhlIGJh Y2t1cCBwcm92aWRlciBnaXZlcyB0aGUgcGF0aCB0byBhIGRpcmVjdG9yeSB3aXRoIHRoZSBmdWxs IGZpbGVzeXN0ZW0KPiArc3RydWN0dXJlIG9mIHRoZSBjb250YWluZXIuCj4gKwo+ICtDb250YWlu ZXIgbWVjaGFuaXNtICd0YXInOgo+ICsKPiArVGhlIGJhY2t1cCBwcm92aWRlciBnaXZlcyB0aGUg cGF0aCB0byBhIChwb3RlbnRpYWxseSBjb21wcmVzc2VkKSB0YXIgYXJjaGl2ZQo+ICt3aXRoIHRo ZSBmdWxsIGZpbGVzeXN0ZW0gc3RydWN0dXJlIG9mIHRoZSBjb250YWluZXIuCj4gKwo+ICs9aGVh ZDEgTUVUSE9EUwo+ICsKPiArPWN1dAo+ICsKPiArIyBwbHVnaW4gbWV0aG9kcwoKSSdtIHZlcnkg aGFwcHkgdG8gc2VlIGRvY3VtZW50YXRpb24gZm9yIGFsbCBvZiB0aGVzZSDwn5mPCgpUaGVyZSdz IGp1c3Qgb25lIHN1Z2dlc3Rpb24gSSdkIGxpa2UgdG8gbWFrZTogWW91IGNhbiBzbGltIGRvd24g YSBsb3Qgb2YKdGhlIFBPRCBieSB1c2luZyBhIGA9aGVhZDNgIGluc3RlYWQsIGUuZy46CgogICAg PWhlYWQzIG5ldwogICAgCiAgICBUaGUgY29uc3RydWN0b3IuIFsuLi5dCiAgICAKICAgID1jdXQK ClBPRCBkb2Vzbid0IGhhdmUgdG8gc3RhcnQgd2l0aCBgPXBvZGAgYWN0dWFsbHksIGFueSBraW5k IG9mIGNvbW1hbmQKcGFyYWdyYXBoIChhbnl0aGluZyB0aGF0IHN0YXJ0cyB3aXRoIGA9YCkgaXMg ZmluZS4gWW91IGNhbiBsZWF2ZSBvdXQgdGhlCkM8PiBmb3JtYXQgY29kZSB0aGVuIHRvbywgYXMg aXQncyB1c3VhbGx5IG5vdCB1c2VkIHdoZW4gZG9jdW1lbnRpbmcgc3Vicwp2aWEgaGVhZGVycy4K CllvdSBhbHNvIHdvdWxkbid0IGhhdmUgdG8gbmVzdCBsaXN0cyB0aGF0IG9mdGVuIGFueW1vcmUs IGFzIHRoYXQncyBhbHNvCmtpbmQgb2YuLi4gc3Vib3B0aW1hbCBpbiBQT0QgKGR1ZSB0bywgd2Vs bCwgUE9ELi4uKSA7UAoKU3BlYWtpbmcgb2YgbmVzdGVkIGxpc3RzOiBJZiB0aGVyZSBhcmVuJ3Qg dGhhdCBtYW55IHBhcmFtZXRlcnMgdGhhdCBuZWVkCnRvIGJlIGRvY3VtZW50ZWQsIHlvdSBjYW4g YWxzbyBqdXN0IGRlc2NyaWJlIHRoZW0gaW4gcHJvc2UuCgpUbyBnaXZlIGEgZnVsbCBleGFtcGxl IG9mIGFsbCBvZiB0aGUgYWJvdmUsIHRoZSBgbmV3YCBtZXRob2QgYmVsb3cgY291bGQKbG9vayBs aWtlIHRoaXM6CgogICAgPWhlYWQzIG5ldwogICAgCiAgICBUaGUgY29uc3RydWN0b3IuIFJldHVy bnMgYSBibGVzc2VkIGluc3RhbmNlIG9mIHRoZSBiYWNrdXAgcHJvdmlkZXIgY2xhc3MuCiAgICAK ICAgIFBhcmFtZXRlcnM6CiAgICAKICAgID1vdmVyCiAgICAKICAgID1pdGVtIEM8JHN0b3JhZ2Vf cGx1Z2luPgogICAgCiAgICBUaGUgYXNzb2NpYXRlZCBzdG9yYWdlIHBsdWdpbiBjbGFzcy4KICAg IAogICAgPWl0ZW0gQzwkc2NmZz4KICAgIAogICAgVGhlIHN0b3JhZ2UgY29uZmlndXJhdGlvbiBv ZiB0aGUgYXNzb2NpYXRlZCBzdG9yYWdlLgogICAgCiAgICA9aXRlbSBDPCRzdG9yZWlkPgogICAg CiAgICBUaGUgc3RvcmFnZSBJRCBvZiB0aGUgYXNzb2NpYXRlZCBzdG9yYWdlLgogICAgCiAgICA9 aXRlbSBDPCRsb2dfZnVuY3Rpb24+CiAgICAKICAgIFRoZSBmdW5jdGlvbiBzaWduYXR1cmUgaXMg QzwkbG9nX2Z1bmN0aW9uKCRsb2dfbGV2ZWwsICRtZXNzYWdlKT4uIFRoaXMgbG9nCiAgICBmdW5j dGlvbiBjYW4gYmUgdXNlZCB0byB3cml0ZSB0byB0aGUgYmFja3VwIHRhc2sgbG9nIGluIFByb3ht b3ggVkUuCiAgICAKICAgIFRoZSBDPCRsb2dfbGV2ZWw+IGlzIGVpdGhlciBDPGluZm8+LCBDPHdh cm4+IG9yIEM8ZXJyPiBmb3IgaW5mb3JtYXRpb25hbAogICAgbWVzc2FnZXMsIHdhcm5pbmdzIG9y IGVycm9yIG1lc3NhZ2VzLiBDPCRtZXNzYWdlPiBpcyB0aGUgbWVzc2FnZSB0byBiZQogICAgcHJp bnRlZC4KICAgIAogICAgPWJhY2sKICAgIAogICAgPWN1dAoKPiArCj4gKz1wb2QKPiArCj4gKz1v dmVyCj4gKwo+ICs9aXRlbSBDPG5ldz4KPiArCj4gK1RoZSBjb25zdHJ1Y3Rvci4gUmV0dXJucyBh IGJsZXNzZWQgaW5zdGFuY2Ugb2YgdGhlIGJhY2t1cCBwcm92aWRlciBjbGFzcy4KPiArCj4gK1Bh cmFtZXRlcnM6Cj4gKwo+ICs9b3Zlcgo+ICsKPiArPWl0ZW0gQzwkc3RvcmFnZV9wbHVnaW4+Cj4g Kwo+ICtUaGUgYXNzb2NpYXRlZCBzdG9yYWdlIHBsdWdpbiBjbGFzcy4KPiArCj4gKz1pdGVtIEM8 JHNjZmc+Cj4gKwo+ICtUaGUgc3RvcmFnZSBjb25maWd1cmF0aW9uIG9mIHRoZSBhc3NvY2lhdGVk IHN0b3JhZ2UuCj4gKwo+ICs9aXRlbSBDPCRzdG9yZWlkPgo+ICsKPiArVGhlIHN0b3JhZ2UgSUQg b2YgdGhlIGFzc29jaWF0ZWQgc3RvcmFnZS4KPiArCj4gKz1pdGVtIEM8JGxvZ19mdW5jdGlvbj4K PiArCj4gK1RoZSBmdW5jdGlvbiBzaWduYXR1cmUgaXMgQzwkbG9nX2Z1bmN0aW9uKCRsb2dfbGV2 ZWwsICRtZXNzYWdlKT4uIFRoaXMgbG9nCj4gK2Z1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIHdyaXRl IHRvIHRoZSBiYWNrdXAgdGFzayBsb2cgaW4gUHJveG1veCBWRS4KPiArCj4gKz1vdmVyCj4gKwo+ ICs9aXRlbSBDPCRsb2dfbGV2ZWw+Cj4gKwo+ICtFaXRoZXIgQzxpbmZvPiwgQzx3YXJuPiBvciBD PGVycj4gZm9yIGluZm9ybWF0aW9uYWwgbWVzc2FnZXMsIHdhcm5pbmdzIG9yIGVycm9yCj4gK21l c3NhZ2VzLgo+ICsKPiArPWl0ZW0gQzwkbWVzc2FnZT4KPiArCj4gK1RoZSBtZXNzYWdlIHRvIGJl IHByaW50ZWQuCj4gKwo+ICs9YmFjawo+ICsKPiArPWJhY2sKPiArCj4gKz1iYWNrCj4gKwo+ICs9 Y3V0Cj4gK3N1YiBuZXcgewo+ICsgICAgbXkgKCRjbGFzcywgJHN0b3JhZ2VfcGx1Z2luLCAkc2Nm ZywgJHN0b3JlaWQsICRsb2dfZnVuY3Rpb24pID0gQF87Cj4gKwo+ICsgICAgZGllICJpbXBsZW1l bnQgbWUgaW4gc3ViY2xhc3MiOwo+ICt9Cj4gKwo+ICs9cG9kCj4gKwo+ICs9b3Zlcgo+ICsKPiAr PWl0ZW0gQzxwcm92aWRlcl9uYW1lPgo+ICsKPiArUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgYmFj a3VwIHByb3ZpZGVyLiBJdCB3aWxsIGJlIHByaW50ZWQgaW4gc29tZSBsb2cgbGluZXMuCj4gKwo+ ICs9YmFjawo+ICsKPiArPWN1dAo+ICtzdWIgcHJvdmlkZXJfbmFtZSB7Cj4gKyAgICBteSAoJHNl bGYpID0gQF87Cj4gKwo+ICsgICAgZGllICJpbXBsZW1lbnQgbWUgaW4gc3ViY2xhc3MiOwo+ICt9 Cj4gKwo+ICs9cG9kCj4gKwo+ICs9b3Zlcgo+ICsKPiArPWl0ZW0gQzxqb2JfaW5pdD4KPiArCj4g K0NhbGxlZCB3aGVuIHRoZSBqb2IgaXMgc3RhcnRlZC4gQ2FuIGJlIHVzZWQgdG8gY2hlY2sgdGhl IGJhY2t1cCBzZXJ2ZXIKPiArYXZhaWxhYmlsaXR5IGFuZCBwcmVwYXJlIGZvciB0aGUgdXBjb21p bmcgYmFja3VwIHRhc2tzIG9mIGluZGl2aWR1YWwgZ3Vlc3RzLiBGb3IKPiArZXhhbXBsZSwgdG8g ZXN0YWJsaXNoIGEgY29ubmVjdGlvbiB0byBiZSB1c2VkIGR1cmluZyBDPGJhY2t1cF9jb250YWlu ZXIoKT4gb3IKPiArQzxiYWNrdXBfdm0oKT4uCj4gKwo+ICtQYXJhbWV0ZXJzOgo+ICsKPiArPW92 ZXIKPiArCj4gKz1pdGVtIEM8JHN0YXJ0X3RpbWU+Cj4gKwo+ICtVbml4IHRpbWUtc3RhbXAgb2Yg d2hlbiB0aGUgam9iIHN0YXJ0ZWQuCj4gKwo+ICs9YmFjawo+ICsKPiArPWJhY2sKPiArCj4gKz1j dXQKPiArc3ViIGpvYl9pbml0IHsKPiArICAgIG15ICgkc2VsZiwgJHN0YXJ0X3RpbWUpID0gQF87 Cj4gKwo+ICsgICAgZGllICJpbXBsZW1lbnQgbWUgaW4gc3ViY2xhc3MiOwo+ICt9Cj4gKwo+ICs9 cG9kCj4gKwo+ICs9b3Zlcgo+ICsKPiArPWl0ZW0gQzxqb2JfY2xlYW51cD4KPiArCj4gK0NhbGxl ZCB3aGVuIHRoZSBqb2IgaXMgZmluaXNoZWQgdG8gYWxsb3cgZm9yIGFueSBwb3RlbnRpYWwgY2xl YW51cCByZWxhdGVkIHRvCj4gK3RoZSBiYWNrdXAgc2VydmVyLiBDYWxsZWQgaW4gYm90aCwgc3Vj Y2VzcyBhbmQgZmFpbHVyZSBzY2VuYXJpb3MuCj4gKwo+ICs9YmFjawo+ICsKPiArPWN1dAo+ICtz dWIgam9iX2NsZWFudXAgewo+ICsgICAgbXkgKCRzZWxmKSA9IEBfOwo+ICsKPiArICAgIGRpZSAi aW1wbGVtZW50IG1lIGluIHN1YmNsYXNzIjsKPiArfQo+ICsKPiArPXBvZAo+ICsKPiArPW92ZXIK PiArCj4gKz1pdGVtIEM8YmFja3VwX2luaXQ+Cj4gKwo+ICtDYWxsZWQgYmVmb3JlIHRoZSBiYWNr dXAgb2YgdGhlIGdpdmVuIGd1ZXN0IGlzIG1hZGUuIFRoZSBhcmNoaXZlIG5hbWUgaXMKPiArZGV0 ZXJtaW5lZCBmb3IgdGhlIGJhY2t1cCB0YXNrIGFuZCByZXR1cm5lZCB0byB0aGUgY2FsbGVyIHZp YSBhIGhhc2ggcmVmZXJlbmNlOgo+ICsKPiArICAgIG15ICRyZXMgPSAkYmFja3VwX3Byb3ZpZGVy LT5iYWNrdXBfaW5pdCgkdm1pZCwgJHZtdHlwZSwgJHN0YXJ0X3RpbWUpOwo+ICsgICAgbXkgJGFy Y2hpdmVfbmFtZSA9ICRyZXMtPnsnYXJjaGl2ZS1uYW1lJ307Cj4gKwo+ICtUaGUgYXJjaGl2ZSBu YW1lIG11c3QgY29udGFpbiBvbmx5IGNoYXJhY3RlcnMgZnJvbSB0aGUKPiArQzwkUFZFOjpTdG9y YWdlOjpTQUZFX0NIQVJfQ0xBU1NfUkU+IGNoYXJhY3RlciBjbGFzcyBhcyB3ZWxsIGFzIGZvcndh cmQgc2xhc2gKPiArQzwvPiBhbmQgY29sb24gQzw6Pi4KPiArCj4gK1VzZSBDPCRzZWxmPiB0byBy ZW1lbWJlciBpdCBmb3IgdGhlIEM8YmFja3VwX2NvbnRhaW5lcigpPiBvciBDPGJhY2t1cF92bSgp Pgo+ICttZXRob2QgdGhhdCB3aWxsIGJlIGNhbGxlZCBsYXRlci4KPiArCj4gK1BhcmFtZXRlcnM6 Cj4gKwo+ICs9b3Zlcgo+ICsKPiArPWl0ZW0gQzwkdm1pZD4KPiArCj4gK1RoZSBJRCBvZiB0aGUg Z3Vlc3QgYmVpbmcgYmFja2VkIHVwLgo+ICsKPiArPWl0ZW0gQzwkdm10eXBlPgo+ICsKPiArVGhl IHR5cGUgb2YgdGhlIGd1ZXN0IGJlaW5nIGJhY2tlZCB1cC4gQ3VycmVudGx5LCBlaXRoZXIgQzxx ZW11PiBvciBDPGx4Yz4uCj4gKwo+ICs9aXRlbSBDPCRzdGFydF90aW1lPgo+ICsKPiArVW5peCB0 aW1lLXN0YW1wIG9mIHdoZW4gdGhlIGd1ZXN0IGJhY2t1cCBzdGFydGVkLgo+ICsKPiArPWJhY2sK PiArCj4gKz1iYWNrCj4gKwo+ICs9Y3V0Cj4gK3N1YiBiYWNrdXBfaW5pdCB7Cj4gKyAgICBteSAo JHNlbGYsICR2bWlkLCAkdm10eXBlLCAkc3RhcnRfdGltZSkgPSBAXzsKPiArCj4gKyAgICBkaWUg ImltcGxlbWVudCBtZSBpbiBzdWJjbGFzcyI7Cj4gK30KPiArCj4gKz1wb2QKPiArCj4gKz1vdmVy Cj4gKwo+ICs9aXRlbSBDPGJhY2t1cF9jbGVhbnVwPgo+ICsKPiArQ2FsbGVkIHdoZW4gdGhlIGd1 ZXN0IGJhY2t1cCBpcyBmaW5pc2hlZC4gQ2FsbGVkIGluIGJvdGgsIHN1Y2Nlc3MgYW5kIGZhaWx1 cmUKPiArc2NlbmFyaW9zLiBJbiB0aGUgc3VjY2VzcyBjYXNlLCBzdGF0aXN0aWNzIGFib3V0IHRo ZSB0YXNrIGFmdGVyIGNvbXBsZXRpb24gb2YKPiArdGhlIGJhY2t1cCBhcmUgcmV0dXJuZWQgdmlh IGEgaGFzaCByZWZlcmVuY2UuIEN1cnJlbnRseSwgb25seSB0aGUgYXJjaGl2ZSBzaXplCj4gK2lz IHBhcnQgb2YgdGhlIHJlc3VsdDoKPiArCj4gKyAgICBteSAkcmVzID0gJGJhY2t1cF9wcm92aWRl ci0+YmFja3VwX2NsZWFudXAoJHZtaWQsICR2bXR5cGUsICRzdWNjZXNzLCAkaW5mbyk7Cj4gKyAg ICBteSAkc3RhdHMgPSAkcmVzLT57c3RhdHN9Owo+ICsgICAgbXkgJGFyY2hpdmVfc2l6ZSA9ICRz dGF0cy0+eydhcmNoaXZlLXNpemUnfTsKPiArCj4gK1BhcmFtZXRlcnM6Cj4gKwo+ICs9b3Zlcgo+ ICsKPiArPWl0ZW0gQzwkdm1pZD4KPiArCj4gK1RoZSBJRCBvZiB0aGUgZ3Vlc3QgYmVpbmcgYmFj a2VkIHVwLgo+ICsKPiArPWl0ZW0gQzwkdm10eXBlPgo+ICsKPiArVGhlIHR5cGUgb2YgdGhlIGd1 ZXN0IGJlaW5nIGJhY2tlZCB1cC4gQ3VycmVudGx5LCBlaXRoZXIgQzxxZW11PiBvciBDPGx4Yz4u Cj4gK01pZ2h0IGJlIEM8dW5kZWY+IGluIHBoYXNlIEM8YWJvcnQ+IGZvciBjZXJ0YWluIGVycm9y IHNjZW5hcmlvcy4KPiArCj4gKz1pdGVtIEM8JHN1Y2Nlc3M+Cj4gKwo+ICtCb29sZWFuIGluZGlj YXRpbmcgd2hldGhlciB0aGUgam9iIHdhcyBzdWNjZXNzZnVsIG9yIG5vdC4gU3VjY2VzcyBtZWFu cyB0aGF0IGFsbAo+ICtpbmRpdmlkdWFsIGd1ZXN0IGJhY2t1cHMgd2VyZSBzdWNjZXNzZnVsLgo+ ICsKPiArPWl0ZW0gQzwkaW5mbz4KPiArCj4gK0EgaGFzaCByZWZlcmVuY2Ugd2l0aCBvcHRpb25h bCBpbmZvcm1hdGlvbi4gQ3VycmVudGx5LCB0aGUgZXJyb3IgbWVzc2FnZSBpbiBjYXNlCj4gK29m IGEgZmFpbHVyZS4KPiArCj4gKz1vdmVyCj4gKwo+ICs9aXRlbSBDPDwgJGluZm8tPntlcnJvcn0g Pj4KPiArCj4gK1ByZXNlbnQgaWYgdGhlcmUgd2FzIGEgZmFpbHVyZS4gVGhlIGVycm9yIG1lc3Nh Z2UgaW5kaWNhdGluZyB0aGUgZmFpbHVyZS4KPiArCj4gKz1iYWNrCj4gKwo+ICs9YmFjawo+ICsK PiArPWJhY2sKPiArCj4gKz1jdXQKPiArc3ViIGJhY2t1cF9jbGVhbnVwIHsKPiArICAgIG15ICgk c2VsZiwgJHZtaWQsICR2bXR5cGUsICRzdWNjZXNzLCAkaW5mbykgPSBAXzsKPiArCj4gKyAgICBk aWUgImltcGxlbWVudCBtZSBpbiBzdWJjbGFzcyI7Cj4gK30KPiArCj4gKz1wb2QKPiArCj4gKz1v dmVyCj4gKwo+ICs9aXRlbSBDPGJhY2t1cF9nZXRfbWVjaGFuaXNtPgo+ICsKPiArVGVsbCB0aGUg Y2FsbGVyIHdoYXQgbWVjaGFuaXNtIHRvIHVzZSBmb3IgYmFja2luZyB1cCB0aGUgZ3Vlc3QuIFRo ZSBiYWNrdXAKPiArbWV0aG9kIGZvciB0aGUgZ3Vlc3QsIGkuZS4gQzxiYWNrdXBfdm0+IGZvciBn dWVzdCB0eXBlIEM8cWVtdT4gb3IKPiArQzxiYWNrdXBfY29udGFpbmVyPiBmb3IgZ3Vlc3QgdHlw ZSBDPGx4Yz4sIHdpbGwgbGF0ZXIgYmUgY2FsbGVkIHdpdGgKPiArbWVjaGFuaXNtLXNwZWNpZmlj IGluZm9ybWF0aW9uLiBTZWUgdGhvc2UgbWV0aG9kcyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KPiAr Cj4gK1JldHVybnMgdGhlIG1lY2hhbmlzbToKPiArCj4gKyAgICBteSAkbWVjaGFuaXNtID0gJGJh Y2t1cF9wcm92aWRlci0+YmFja3VwX2dldF9tZWNoYW5pc20oJHZtaWQsICR2bXR5cGUpOwo+ICsK PiArQ3VycmVudGx5IEM8bmJkPiBhbmQgQzxmaWxlLWhhbmRsZT4gZm9yIGd1ZXN0IHR5cGUgQzxx ZW11PiBhbmQgQzxkaXJlY3Rvcnk+IGZvcgo+ICtndWVzdCB0eXBlIEM8bHhjPiBhcmUgcG9zc2li bGUuIElmIHRoZXJlIGlzIG5vIHN1cHBvcnQgZm9yIG9uZSBvZiB0aGUgZ3Vlc3QKPiArdHlwZXMs IHRoZSBtZXRob2Qgc2hvdWxkIGVpdGhlciBDPGRpZT4gb3IgcmV0dXJuIEM8dW5kZWY+Lgo+ICsK PiArUGFyYW1ldGVyczoKPiArCj4gKz1vdmVyCj4gKwo+ICs9aXRlbSBDPCR2bWlkPgo+ICsKPiAr VGhlIElEIG9mIHRoZSBndWVzdCBiZWluZyBiYWNrZWQgdXAuCj4gKwo+ICs9aXRlbSBDPCR2bXR5 cGU+Cj4gKwo+ICtUaGUgdHlwZSBvZiB0aGUgZ3Vlc3QgYmVpbmcgYmFja2VkIHVwLiBDdXJyZW50 bHksIGVpdGhlciBDPHFlbXU+IG9yIEM8bHhjPi4KPiArCj4gKz1iYWNrCj4gKwo+ICs9YmFjawo+ ICsKPiArPWN1dAo+ICtzdWIgYmFja3VwX2dldF9tZWNoYW5pc20gewo+ICsgICAgbXkgKCRzZWxm LCAkdm1pZCwgJHZtdHlwZSkgPSBAXzsKPiArCj4gKyAgICBkaWUgImltcGxlbWVudCBtZSBpbiBz dWJjbGFzcyI7Cj4gK30KPiArCj4gKz1wb2QKPiArCj4gKz1vdmVyCj4gKwo+ICs9aXRlbSBDPGJh Y2t1cF9oYW5kbGVfbG9nX2ZpbGU+Cj4gKwo+ICtIYW5kbGUgdGhlIGJhY2t1cCdzIGxvZyBmaWxl IHdoaWNoIGNvbnRhaW5zIHRoZSB0YXNrIGxvZyBmb3IgdGhlIGJhY2t1cC4gRm9yCj4gK2V4YW1w bGUsIGEgcHJvdmlkZXIgbWlnaHQgd2FudCB0byB1cGxvYWQgYSBjb3B5IHRvIHRoZSBiYWNrdXAg c2VydmVyLgo+ICsKPiArUGFyYW1ldGVyczoKPiArCj4gKz1vdmVyCj4gKwo+ICs9aXRlbSBDPCR2 bWlkPgo+ICsKPiArVGhlIElEIG9mIHRoZSBndWVzdCBiZWluZyBiYWNrZWQgdXAuCj4gKwo+ICs9 aXRlbSBDPCRmaWxlbmFtZT4KPiArCj4gK1BhdGggdG8gdGhlIGZpbGUgd2l0aCB0aGUgYmFja3Vw IGxvZy4KPiArCj4gKz1iYWNrCj4gKwo+ICs9YmFjawo+ICsKPiArPWN1dAo+ICtzdWIgYmFja3Vw X2hhbmRsZV9sb2dfZmlsZSB7Cj4gKyAgICBteSAoJHNlbGYsICR2bWlkLCAkZmlsZW5hbWUpID0g QF87Cj4gKwo+ICsgICAgZGllICJpbXBsZW1lbnQgbWUgaW4gc3ViY2xhc3MiOwo+ICt9Cj4gKwo+ ICs9cG9kCj4gKwo+ICs9b3Zlcgo+ICsKPiArPWl0ZW0gQzxiYWNrdXBfdm1fYXZhaWxhYmxlX2Jp dG1hcHM+Cj4gKwo+ICtEZXRlcm1pbmVzIHdoaWNoIGJpdG1hcCBuYW1lIHRoZSBiYWNrdXAgc2Vy dmVyIGNhbiB1c2UgZm9yIGVhY2ggdm9sdW1lIGZvcgo+ICtpbmNyZW1lbnRhbCBiYWNrdXAuIElm IGluY3JlbWVudGFsIGJhY2t1cCBpcyBub3Qgc3VwcG9ydGVkLCBzaW1wbHkgcmV0dXJuCj4gK3dp dGhvdXQgbW9kaWZ5aW5nIHRoZSBDPCR2b2x1bWVzPiBwYXJhbWV0ZXIuCj4gKwo+ICtJdCBjYW5u b3QgYmUgZ3VhcmFudGVlZCB0aGF0IHRoZSBkZXZpY2Ugb24gdGhlIFFFTVUtc2lkZSBzdGlsbCBo YXMgdGhlIGJpdG1hcC4KPiArRm9yIGV4YW1wbGUsIHRoZSBWTSBtaWdodCBub3QgYmUgcnVubmlu Zywgb3IgdGhlIGRldmljZSBtaWdodCBoYXZlIGJlZW4gcmVzaXplZAo+ICtvciBkZXRhY2hlZCBh bmQgcmUtYXR0YWNoZWQuIFRoZSBDPCR2b2x1bWVzPiBwYXJhbWV0ZXIgaW4gQzxiYWNrdXBfdm0o KT4KPiArd2lsbCBjb250YWluIHRoZSBlZmZlY3RpdmUgYml0bWFwIG1vZGUsIHNlZSB0aGUgQzxi YWNrdXBfdm0oKT4gbWV0aG9kIGZvcgo+ICtkZXRhaWxzLgo+ICsKPiArVGhpcyBtZXRob2QgZG9l cyBub3QgaGF2ZSBhIHJldHVybiB2YWx1ZSwgYnV0IHNob3VsZCBzZXQgdGhlIGJpdG1hcCBuYW1l IGluCj4gK0M8PCAkdm9sdW1lcy0+eyRkZXZpY2VfbmFtZX0tPnsnYml0bWFwLW5hbWUnfSA+PiBm b3IgZWFjaCBkZXZpY2UuCj4gKwo+ICtQYXJhbWV0ZXJzOgo+ICsKPiArPW92ZXIKPiArCj4gKz1p dGVtIEM8JHZtaWQ+Cj4gKwo+ICtUaGUgSUQgb2YgdGhlIGd1ZXN0IGJlaW5nIGJhY2tlZCB1cC4K PiArCj4gKz1pdGVtIEM8JHZvbHVtZXM+Cj4gKwo+ICtIYXNoIHJlZmVyZW5jZSB3aXRoIGluZm9y bWF0aW9uIGFib3V0IHRoZSBWTSdzIHZvbHVtZXMuCj4gKwo+ICs9b3Zlcgo+ICsKPiArPWl0ZW0g Qzw8ICR2b2x1bWVzLT57JGRldmljZV9uYW1lfSA+Pgo+ICsKPiArSGFzaCByZWZlcmVuY2Ugd2l0 aCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgVk0gdm9sdW1lIGFzc29jaWF0ZWQgdG8gdGhlIGRldmlj ZQo+ICtDPCRkZXZpY2VfbmFtZT4uCj4gKwo+ICs9b3Zlcgo+ICsKPiArPWl0ZW0gQzw8ICR2b2x1 bWVzLT57JGRldmljZV9uYW1lfS0+e3NpemV9ID4+Cj4gKwo+ICtTaXplIG9mIHRoZSB2b2x1bWUg aW4gYnl0ZXMuIElmIHRoZSBzaXplIGRvZXMgbm90IG1hdGNoIHdoYXQgeW91IGV4cGVjdCBvbiB0 aGUKPiArYmFja3VwIHNlcnZlciBzaWRlLCB0aGUgYml0bWFwIHdpbGwgbm90IGV4aXN0IGFueW1v cmUgb24gdGhlIFFFTVUgc2lkZS4gSW4gdGhpcwo+ICtjYXNlLCBpdCBjYW4gYmUgZGVjaWRlZCBl YXJseSB0byB1c2UgYSBuZXcgYml0bWFwIG5hbWUsIGJ1dCBpdCBpcyBhbHNvIHBvc3NpYmxlCj4g K3RvIHJlLXVzZSB0aGUgc2FtZSBuYW1lLCBpbiB3aGljaCBjYXNlIGEgYml0bWFwIHdpdGggdGhh dCBuYW1lIHdpbGwgYmUgbmV3bHkKPiArY3JlYXRlZCBvbiB0aGUgdm9sdW1lLgo+ICsKPiArPWJh Y2sKPiArCj4gKz1iYWNrCj4gKwo+ICs9YmFjawo+ICsKPiArPWJhY2sKPiArCj4gKz1jdXQKPiAr c3ViIGJhY2t1cF92bV9hdmFpbGFibGVfYml0bWFwcyB7Cj4gKyAgICBteSAoJHNlbGYsICR2bWlk LCAkdm9sdW1lcykgPSBAXzsKPiArCj4gKyAgICBkaWUgImltcGxlbWVudCBtZSBpbiBzdWJjbGFz cyI7Cj4gK30KPiArCj4gKz1wb2QKPiArCj4gKz1vdmVyCj4gKwo+ICs9aXRlbSBDPGJhY2t1cF92 bT4KPiArCj4gK1VzZWQgd2hlbiB0aGUgZ3Vlc3QgdHlwZSBpcyBDPHFlbXU+LiBCYWNrIHVwIHRo ZSB2aXJ0dWFsIG1hY2hpbmUncyBjb25maWd1cmF0aW9uCj4gK2FuZCB2b2x1bWVzIHRoYXQgd2Vy ZSBtYWRlIGF2YWlsYWJsZSBhY2NvcmRpbmcgdG8gdGhlIG1lY2hhbmlzbSByZXR1cm5lZCBieQo+ ICtDPGJhY2t1cF9nZXRfbWVjaGFuaXNtPi4gUmV0dXJucyB3aGVuIGRvbmUgYmFja2luZyB1cC4g SWRlYWxseSwgdGhlIG1ldGhvZAo+ICtzaG91bGQgbG9nIHRoZSBwcm9ncmVzcyBkdXJpbmcgYmFj a3VwLgo+ICsKPiArQWNjZXNzIHRvIHRoZSBkYXRhIG9uIHRoZSBWTSdzIGRpc2sgaXMgbWFkZSBh dmFpbGFibGUgdmlhIGEgInNuYXBzaG90IGFjY2VzcyIKPiArYWJzdHJhY3Rpb24uIFRoaXMgaXMg ZWZmZWN0aXZlbHkgYSBzbmFwc2hvdCBvZiB0aGUgZGF0YSBmcm9tIHRoZSB0aW1lIHRoZSBiYWNr dXAKPiAraXMgc3RhcnRlZC4gTmV3IGd1ZXN0IHdyaXRlcyBhZnRlciB0aGUgYmFja3VwIHN0YXJ0 ZWQgZG8gbm90IGFmZmVjdCB0aGlzLiBUaGUKPiArInNuYXBzaG90IGFjY2VzcyIgcmVwcmVzZW50 cyBlaXRoZXIgdGhlIGZ1bGwgaW1hZ2UsIG9yIGluIGNhc2UgYSBiaXRtYXAgaXMgdXNlZCwKPiAr dGhlIGRpcnR5IHBhcnRzIG9mIHRoZSBpbWFnZSBzaW5jZSB0aGUgbGFzdCB0aW1lIHRoZSBiaXRt YXAgd2FzIHVzZWQgZm9yIGEKPiArc3VjY2Vzc2Z1bCBiYWNrdXAuCj4gKwo+ICtOT1RFOiBJZiBh IGJpdG1hcCBpcyB1c2VkLCB0aGUgInNuYXBzaG90IGFjY2VzcyIgaXMgcmVhbGx5IG9ubHkgdGhl IGRpcnR5IHBhcnRzCj4gK29mIHRoZSBpbWFnZS4gWW91IGhhdmUgdG8gcXVlcnkgdGhlIGJpdG1h cCB0byBzZWUgd2hpY2ggcGFydHMgb2YgdGhlIGltYWdlIGFyZQo+ICthY2Nlc3NpYmxlL3ByZXNl bnQuIFJlYWRpbmcgb3IgZG9pbmcgYW55IG90aGVyIG9wZXJhdGlvbiAobGlrZSBxdWVyeWluZyB0 aGUKPiArYmxvY2sgYWxsb2NhdGlvbiBzdGF0dXMgdmlhIE5CRCkgb3V0c2lkZSBvZiB0aGUgZGly dHkgcGFydHMgb2YgdGhlIGltYWdlIHdpbGwKPiArcmVzdWx0IGluIGFuIGVycm9yLiBJbiBwYXJ0 aWN1bGFyLCBpZiB0aGVyZSB3ZXJlIG5vIG5ldyB3cml0ZXMgc2luY2UgdGhlIGxhc3QKPiArc3Vj Y2Vzc2Z1bCBiYWNrdXAsIGkuZS4gdGhlIGJpdG1hcCBpcyBmdWxseSBjbGVhbiwgdGhlbiB0aGUg aW1hZ2UgY2Fubm90IGJlCj4gK2FjY2Vzc2VkIGF0IGFsbCwgeW91IGNhbiBvbmx5IHF1ZXJ5IHRo ZSBkaXJ0eSBiaXRtYXAuCj4gKwo+ICtBZnRlciBiYWNraW5nIHVwIGVhY2ggcGFydCBvZiB0aGUg ZGlzaywgaXQgc2hvdWxkIGJlIGRpc2NhcmRlZCBpbiB0aGUgZXhwb3J0IHRvCj4gK2F2b2lkIHVu bmVjZXNzYXJ5IHNwYWNlIHVzYWdlIG9uIHRoZSBQcm94bW94IFZFIHNpZGUgKHRoZXJlIGlzIGFu IGFzc29jaWF0ZWQKPiArZmxlZWNpbmcgaW1hZ2UpLgo+ICsKPiArUGFyYW1ldGVyczoKPiArCj4g Kz1vdmVyCj4gKwo+ICs9aXRlbSBDPCR2bWlkPgo+ICsKPiArVGhlIElEIG9mIHRoZSBndWVzdCBi ZWluZyBiYWNrZWQgdXAuCj4gKwo+ICs9aXRlbSBDPCRndWVzdF9jb25maWc+Cj4gKwo+ICtUaGUg Z3Vlc3QgY29uZmlndXJhdGlvbiBhcyByYXcgZGF0YS4KPiArCj4gKz1pdGVtIEM8JHZvbHVtZXM+ Cj4gKwo+ICtIYXNoIHJlZmVyZW5jZSB3aXRoIGluZm9ybWF0aW9uIGFib3V0IHRoZSBWTSdzIHZv bHVtZXMuIFNvbWUgcGFyYW1ldGVycyBhcmUKPiArbWVjaGFuaXNtLXNwZWNpZmljLgo+ICsKPiAr PW92ZXIKPiArCj4gKz1pdGVtIEM8PCAkdm9sdW1lcy0+eyRkZXZpY2VfbmFtZX0gPj4KPiArCj4g K0hhc2ggcmVmZXJlbmNlIHdpdGggaW5mb3JtYXRpb24gYWJvdXQgdGhlIFZNIHZvbHVtZSBhc3Nv Y2lhdGVkIHRvIHRoZSBkZXZpY2UKPiArQzwkZGV2aWNlX25hbWU+LiBUaGUgZGV2aWNlIG5hbWUg bmVlZHMgdG8gYmUgcmVtZW1iZXJlZCBmb3IgcmVzdG9yaW5nLiBUaGUKPiArZGV2aWNlIG5hbWUg aXMgYWxzbyB0aGUgbmFtZSBvZiB0aGUgTkJEIGV4cG9ydCB3aGVuIHRoZSBDPG5iZD4gbWVjaGFu aXNtIGlzCj4gK3VzZWQuCj4gKwo+ICs9aXRlbSBDPDwgJHZvbHVtZXMtPnskZGV2aWNlX25hbWV9 LT57c2l6ZX0gPj4KPiArCj4gK1NpemUgb2YgdGhlIHZvbHVtZSBpbiBieXRlcy4KPiArCj4gKz1p dGVtIEM8PCAkdm9sdW1lcy0+eyRkZXZpY2VfbmFtZX0tPnsnYml0bWFwLW1vZGUnfSA+Pgo+ICsK PiArSG93IGEgYml0bWFwIGlzIHVzZWQgZm9yIHRoZSBjdXJyZW50IHZvbHVtZS4KPiArCj4gKz1v dmVyCj4gKwo+ICs9aXRlbSBDPG5vbmU+Cj4gKwo+ICtObyBiaXRtYXAgaXMgdXNlZC4KPiArCj4g Kz1pdGVtIEM8bmV3Pgo+ICsKPiArQSBiaXRtYXAgaGFzIGJlZW4gbmV3bHkgY3JlYXRlZCBvbiB0 aGUgdm9sdW1lLgo+ICsKPiArPWl0ZW0gQzxyZXVzZT4KPiArCj4gK1RoZSBiaXRtYXAgd2l0aCB0 aGUgc2FtZSBJRCBhcyByZXF1ZXN0ZWQgaXMgYmVpbmcgcmUtdXNlZC4KPiArCj4gKz1iYWNrCj4g Kwo+ICs9YmFjawo+ICsKPiArTWVjaGFuc2ltcy1zcGVjaWZpYyBwYXJhbWV0ZXJzIGZvciBtZWNo YW5pc206CgpzL01lY2hhbnNpbXMtc3BlY2lmaWMvTWVjaGFuaXNtLXNwZWNpZmljCgoob3IgTWVj aGFuaXNtcy1zcGVjaWZpYz8pCgo+ICsKPiArPW92ZXIKPiArCj4gKz1pdGVtIEM8ZmlsZS1oYW5k bGU+Cj4gKwo+ICs9b3Zlcgo+ICsKPiArPWl0ZW0gQzw8ICR2b2x1bWVzLT57JGRldmljZV9uYW1l fS0+eydmaWxlLWhhbmRsZSd9ID4+Cj4gKwo+ICtGaWxlIGhhbmRsZSB0aGUgYmFja3VwIGRhdGEg Y2FuIGJlIHJlYWQgZnJvbS4gRGlzY2FyZHMgc2hvdWxkIGJlIGlzc3VlZCB2aWEgdGhlCj4gK0M8 UFZFOjpTdG9yYWdlOjpDb21tb246OmRlYWxsb2NhdGUoKT4gZnVuY3Rpb24gZm9yIHJhbmdlcyB0 aGF0IGFscmVhZHkgaGF2ZSBiZWVuCj4gK2JhY2tlZC11cCBzdWNjZXNzZnVsbHkgdG8gcmVkdWNl IHNwYWNlIHVzYWdlIG9uIHRoZSBzb3VyY2Utc2lkZS4KPiArCj4gKz1pdGVtIEM8PCAkdm9sdW1l cy0+eyRkZXZpY2VfbmFtZX0tPnsnbmV4dC1kaXJ0eS1yZWdpb24nfSA+Pgo+ICsKPiArQSBmdW5j dGlvbiB0aGF0IHdpbGwgcmV0dXJuIHRoZSBvZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgbmV4dCBk aXJ0eSByZWdpb24gYXMgYQo+ICt0d28tZWxlbWVudCBsaXN0LiBBZnRlciB0aGUgbGFzdCBkaXJ0 eSByZWdpb24sIGl0IHdpbGwgcmV0dXJuIEM8dW5kZWY+LiBJZiBubwo+ICtiaXRtYXAgaXMgdXNl ZCwgaXQgd2lsbCByZXR1cm4gQzwoMCwgJHNpemUpPiBhbmQgdGhlbiBDPHVuZGVmPi4gSWYgYSBi aXRtYXAgaXMKPiArdXNlZCwgdGhlc2UgYXJlIHRoZSBkaXJ0eSByZWdpb25zIGFjY29yZGluZyB0 byB0aGUgYml0bWFwLgo+ICsKPiArPWJhY2sKPiArCj4gKz1pdGVtIEM8bmJkPgo+ICsKPiArRm9y IHRoZSBzcGVjaWZpY2F0aW9uIG9mIHRoZSBOQkQgbWV0YWRhdGEgY29udGV4dCBmb3IgZGlydHkg Yml0bWFwcywgc2VlOgo+ICtodHRwczovL3FlbXUucmVhZHRoZWRvY3MuaW8vZW4vbWFzdGVyL2lu dGVyb3AvbmJkLmh0bWwKCkh5cGVybGluayBzaG91bGQgYmUgd2l0aGluIEw8PiBoZXJlIGFzIHdl bGwgOykKCj4gKwo+ICs9b3Zlcgo+ICsKPiArPWl0ZW0gQzw8ICR2b2x1bWVzLT57JGRldmljZV9u YW1lfS0+eyduYmQtcGF0aCd9ID4+Cj4gKwo+ICtUaGUgcGF0aCB0byB0aGUgVW5peCBzb2NrZXQg cHJvdmlkaW5nIHRoZSBOQkQgZXhwb3J0IHdpdGggdGhlIGJhY2t1cCBkYXRhIGFuZCwKPiAraWYg YSBiaXRtYXAgaXMgdXNlZCwgYml0bWFwIGRhdGEuIERpc2NhcmRzIHNob3VsZCBiZSBpc3N1ZWQg YWZ0ZXIgcmVhZGluZyB0aGUKPiArZGF0YSB0byByZWR1Y2Ugc3BhY2UgdXNhZ2Ugb24gdGhlIHNv dXJjZS1zaWRlLgo+ICsKPiArPWl0ZW0gQzw8ICR2b2x1bWVzLT57JGRldmljZV9uYW1lfS0+eydi aXRtYXAtbmFtZSd9ID4+Cj4gKwo+ICtUaGUgbmFtZSBvZiB0aGUgYml0bWFwIGluIGNhc2UgYSBi aXRtYXAgaXMgdXNlZC4KPiArCj4gKz1iYWNrCj4gKwo+ICs9YmFjawo+ICsKPiArPWl0ZW0gQzwk aW5mbz4KPiArCj4gK0EgaGFzaCByZWZlcmVuY2UgY29udGFpbmluZyBvcHRpb25hbCBwYXJhbWV0 ZXJzLgo+ICsKPiArT3B0aW9uYWwgcGFyYW1ldGVyczoKPiArCj4gKz1vdmVyCj4gKwo+ICs9aXRl bSBDPDwgJGluZm8tPnsnYmFuZHdpZHRoLWxpbWl0J30gPj4KPiArCj4gK1RoZSByZXF1ZXN0ZWQg YmFuZHdpdGggbGltaXQuIFRoZSB2YWx1ZSBpcyBpbiBieXRlcy9zZWNvbmQuIFRoZSBiYWNrdXAg cHJvdmlkZXIKCnMvYmFuZHdpdGgvYmFuZHdpZHRoCgo+ICtpcyBleHBlY3RlZCB0byBob25vciB0 aGlzIHJhdGUgbGltaXQgZm9yIElPIG9uIHRoZSBiYWNrdXAgc291cmNlIGFuZCBuZXR3b3JrCj4g K3RyYWZmaWMuIEEgdmFsdWUgb2YgQzwwPiwgQzx1bmRlZj4gb3IgaWYgdGhlcmUgaXMgbm8gc3Vj aCBrZXkgaW4gdGhlIGhhc2ggYWxsCj4gK21lYW4gdGhhdCB0aGVyZSBpcyBubyBsaW1pdC4KPiAr Cj4gKz1pdGVtIEM8PCAkaW5mby0+eydmaXJld2FsbC1jb25maWcnfSA+Pgo+ICsKPiArUHJlc2Vu dCBpZiB0aGUgZmlyZXdhbGwgY29uZmlndXJhdGlvbiBleGlzdHMuIFRoZSBndWVzdCdzIGZpcmV3 YWxsCj4gK2NvbmZpZ3VyYXRpb24gYXMgcmF3IGRhdGEuCj4gKwo+ICs9YmFjawo+ICsKPiArPWJh Y2sKPiArCj4gKz1iYWNrCj4gKwo+ICs9Y3V0Cj4gK3N1YiBiYWNrdXBfdm0gewo+ICsgICAgbXkg KCRzZWxmLCAkdm1pZCwgJGd1ZXN0X2NvbmZpZywgJHZvbHVtZXMsICRpbmZvKSA9IEBfOwo+ICsK PiArICAgIGRpZSAiaW1wbGVtZW50IG1lIGluIHN1YmNsYXNzIjsKPiArfQo+ICsKPiArPXBvZAo+ ICsKPiArPW92ZXIKPiArCj4gKz1pdGVtIEM8YmFja3VwX2NvbnRhaW5lcl9wcmVwYXJlPgo+ICsK PiArQ2FsbGVkIHJpZ2h0IGJlZm9yZSBDPGJhY2t1cF9jb250YWluZXIoKT4gaXMgY2FsbGVkLiBU aGUgbWV0aG9kCj4gK0M8YmFja3VwX2NvbnRhaW5lcigpPiBpcyBjYWxsZWQgYXMgdGhlIElELW1h cHBlZCByb290IHVzZXIgb2YgdGhlIGNvbnRhaW5lciwgc28KPiArYXMgYSBwb3RlbnRpYWxseSB1 bnByaXZpbGVnZWQgdXNlci4gVGhlIGhvb2sgaXMgc3RpbGwgY2FsbGVkIGFzIGEgcHJpdmlsZWdl ZAo+ICt1c2VyIHRvIGFsbG93IGZvciB0aGUgbmVjZXNzYXJ5IHByZXBhcmF0aW9uLgo+ICsKPiAr UGFyYW1ldGVyczoKPiArCj4gKz1vdmVyCj4gKwo+ICs9aXRlbSBDPCR2bWlkPgo+ICsKPiArVGhl IElEIG9mIHRoZSBndWVzdCBiZWluZyBiYWNrZWQgdXAuCj4gKwo+ICs9aXRlbSBDPCRpbmZvPgo+ ICsKPiArVGhlIHNhbWUgaW5mb3JtYXRpb24gdGhhdCdzIHBhc3NlZCBhbG9uZyB0byBDPGJhY2t1 cF9jb250YWluZXIoKT4sIHNlZSB0aGUKPiArZGVzY3JpcHRpb24gdGhlcmUuCj4gKwo+ICs9YmFj awo+ICsKPiArPWJhY2sKPiArCj4gKz1jdXQKPiArc3ViIGJhY2t1cF9jb250YWluZXJfcHJlcGFy ZSB7Cj4gKyAgICBteSAoJHNlbGYsICR2bWlkLCAkaW5mbykgPSBAXzsKPiArCj4gKyAgICBkaWUg ImltcGxlbWVudCBtZSBpbiBzdWJjbGFzcyI7Cj4gK30KPiArCj4gKz1wb2QKPiArCj4gKz1vdmVy Cj4gKwo+ICs9aXRlbSBDPGJhY2t1cF9jb250YWluZXI+Cj4gKwo+ICtVc2VkIHdoZW4gdGhlIGd1 ZXN0IHR5cGUgaXMgQzxseGM+LiBCYWNrIHVwIHRoZSBjb250YWluZXIgZmlsZXN5c3RlbSBzdHJ1 Y3R1cmUKPiArdGhhdCBpcyBtYWRlIGF2YWlsYWJsZSBmb3IgdGhlIG1lY2hhbmlzbSByZXR1cm5l ZCBieSBDPGJhY2t1cF9nZXRfbWVjaGFuaXNtPi4KPiArUmV0dXJucyB3aGVuIGRvbmUgYmFja2lu ZyB1cC4gSWRlYWxseSwgdGhlIG1ldGhvZCBzaG91bGQgbG9nIHRoZSBwcm9ncmVzcyBkdXJpbmcK PiArYmFja3VwLgo+ICsKPiArTm90ZSB0aGF0IHRoaXMgbWV0aG9kIGlzIGV4ZWN1dGVkIGFzIHRo ZSBJRC1tYXBwZWQgcm9vdCB1c2VyIG9mIHRoZSBjb250YWluZXIsCj4gK3NvIGEgcG90ZW50aWFs bHkgdW5wcml2aWxlZ2VkIHVzZXIuIFRoZSBJRCBpcyBwYXNzZWQgYWxvbmcgYXMgcGFydCBvZiBD PCRpbmZvPi4KPiArVXNlIHRoZSBDPGJhY2t1cF9jb250YWluZXJfcHJlcGFyZSgpPiBtZXRob2Qg Zm9yIHByZXBhcmF0aW9uLiBGb3IgZXhhbXBsZSwgdG8KPiArbWFrZSBjcmVkZW50aWFscyBhdmFp bGFibGUgdG8gdGhlIHBvdGVudGlhbGx5IHVucHJpdmlsZWdlZCB1c2VyLgo+ICsKPiArTm90ZSB0 aGF0IGNoYW5nZXMgdG8gQzwkc2VsZj4gbWFkZSBkdXJpbmcgdGhpcyBtZXRob2Qgd2lsbCBub3Qg YmUgdmlzaWJsZSBpbgo+ICtsYXRlciBtZXRob2QgY2FsbHMuIFRoaXMgaXMgYmVjYXVzZSB0aGUg bWV0aG9kIGlzIGV4ZWN1dGVkIGluIGEgc2VwYXJhdGUKPiArZXhlY3V0aW9uIGNvbnRleHQgYWZ0 ZXIgZm9ya2luZy4gVXNlIHRoZSBDPGJhY2t1cF9jb250YWluZXJfcHJlcGFyZSgpPiBtZXRob2QK PiAraWYgeW91IG5lZWQgcGVyc2lzdGVudCBjaGFuZ2VzIHRvIEM8JHNlbGY+Lgo+ICsKPiArUGFy YW1ldGVyczoKPiArCj4gKz1vdmVyCj4gKwo+ICs9aXRlbSBDPCR2bWlkPgo+ICsKPiArVGhlIElE IG9mIHRoZSBndWVzdCBiZWluZyBiYWNrZWQgdXAuCj4gKwo+ICs9aXRlbSBDPCRndWVzdF9jb25m aWc+Cj4gKwo+ICtHdWVzdCBjb25maWd1cmF0aW9uIGFzIHJhdyBkYXRhLgo+ICsKPiArPWl0ZW0g QzwkZXhjbHVkZV9wYXR0ZXJucz4KPiArCj4gK0EgbGlzdCBvZiBnbG9iIHBhdHRlcm5zIG9mIGZp bGVzIGFuZCBkaXJlY3RvcmllcyB0byBiZSBleGNsdWRlZC4gQzwqKj4gaXMgdXNlZAo+ICt0byBt YXRjaCBjdXJyZW50IGRpcmVjdG9yeSBhbmQgc3ViZGlyZWN0b3JpZXMuIFNlZSBhbHNvIHRoZSBm b2xsb3dpbmcgKG5vdGUKPiArdGhhdCBQQlMgaW1wbGVtZW50cyBtb3JlIHRoYW4gcmVxdWlyZWQg aGVyZSwgbGlrZSBleHBsaWNpdCBpbmNsdXNpb24gd2hlbgo+ICtzdGFydGluZyB3aXRoIGEgQzwh Pik6Cj4gK0w8dnpkdW1wIGRvY3VtZW50YXRpb258aHR0cHM6Ly9wdmUucHJveG1veC5jb20vcHZl LWRvY3MvY2hhcHRlci12emR1bXAuaHRtbCNfZmlsZV9leGNsdXNpb25zPgo+ICthbmQKPiArTDxQ QlMgZG9jdW1lbnRhdGlvbnxodHRwczovL3Bicy5wcm94bW94LmNvbS9kb2NzL2JhY2t1cC1jbGll bnQuaHRtbCNleGNsdWRpbmctZmlsZXMtZGlyZWN0b3JpZXMtZnJvbS1hLWJhY2t1cD4KPiArCj4g Kz1pdGVtIEM8JGluZm8+Cj4gKwo+ICtBIGhhc2ggcmVmZXJlbmNlIGNvbnRhaW5pbmcgb3B0aW9u YWwgYW5kIG1lY2hhbmlzbS1zcGVjaWZpYyBwYXJhbWV0ZXJzLgo+ICsKPiArT3B0aW9uYWwgcGFy YW1ldGVyczoKPiArCj4gKz1vdmVyCj4gKwo+ICs9aXRlbSBDPDwgJGluZm8tPnsnYmFuZHdpZHRo LWxpbWl0J30gPj4KPiArCj4gK1RoZSByZXF1ZXN0ZWQgYmFuZHdpdGggbGltaXQuIFRoZSB2YWx1 ZSBpcyBpbiBieXRlcy9zZWNvbmQuIFRoZSBiYWNrdXAgcHJvdmlkZXIKCnMvYmFuZHdpdGgvYmFu ZHdpZHRoCgo+ICtpcyBleHBlY3RlZCB0byBob25vciB0aGlzIHJhdGUgbGltaXQgZm9yIElPIG9u IHRoZSBiYWNrdXAgc291cmNlIGFuZCBuZXR3b3JrCj4gK3RyYWZmaWMuIEEgdmFsdWUgb2YgQzww PiwgQzx1bmRlZj4gb3IgaWYgdGhlcmUgaXMgbm8gc3VjaCBrZXkgaW4gdGhlIGhhc2ggYWxsCj4g K21lYW4gdGhhdCB0aGVyZSBpcyBubyBsaW1pdC4KPiArCj4gKz1pdGVtIEM8PCAkaW5mby0+eydm aXJld2FsbC1jb25maWcnfSA+Pgo+ICsKPiArUHJlc2VudCBpZiB0aGUgZmlyZXdhbGwgY29uZmln dXJhdGlvbiBleGlzdHMuIFRoZSBndWVzdCdzIGZpcmV3YWxsCj4gK2NvbmZpZ3VyYXRpb24gYXMg cmF3IGRhdGEuCj4gKwo+ICs9YmFjawo+ICsKPiArTWVjaGFuc2ltcy1zcGVjaWZpYyBwYXJhbWV0 ZXJzIGZvciBtZWNoYW5pc206CgpzL01lY2hhbnNpbXMtc3BlY2lmaWMvTWVjaGFuaXNtLXNwZWNp ZmljCgoob3IgTWVjaGFuaXNtcy1zcGVjaWZpYz8pCgo+ICsKPiArPW92ZXIKPiArCj4gKz1pdGVt IEM8ZGlyZWN0b3J5Pgo+ICsKPiArPW92ZXIKPiArCj4gKz1pdGVtIEM8PCAkaW5mby0+e2RpcmVj dG9yeX0gPj4KPiArCj4gK1BhdGggdG8gdGhlIGRpcmVjdG9yeSB3aXRoIHRoZSBjb250YWluZXIn cyBmaWxlIHN5c3RlbSBzdHJ1Y3R1cmUuCj4gKwo+ICs9aXRlbSBDPDwgJGluZm8tPntzb3VyY2Vz fSA+Pgo+ICsKPiArTGlzdCBvZiBwYXRocyAoZm9yIHNlcGFyYXRlIG1vdW50IHBvaW50cywgaW5j bHVkaW5nICIuIiBmb3IgdGhlIHJvb3QpIGluc2lkZSB0aGUKPiArZGlyZWN0b3J5IHRvIGJlIGJh Y2tlZCB1cC4KPiArCj4gKz1pdGVtIEM8PCAkaW5mby0+eydiYWNrdXAtdXNlci1pZCd9ID4+Cj4g Kwo+ICtUaGUgdXNlciBJRCBvZiB0aGUgSUQtbWFwcGVkIHJvb3QgdXNlciBvZiB0aGUgY29udGFp bmVyLiBGb3IgZXhhbXBsZSwgQzwxMDAwMDA+Cj4gK2ZvciB1bnByaXZpbGVnZWQgY29udGFpbmVy cyBieSBkZWZhdWx0Lgo+ICsKPiArPWJhY2sKPiArCj4gKz1iYWNrCj4gKwo+ICs9YmFjawo+ICsK PiArPWJhY2sKPiArCj4gKz1jdXQKPiArc3ViIGJhY2t1cF9jb250YWluZXIgewo+ICsgICAgbXkg KCRzZWxmLCAkdm1pZCwgJGd1ZXN0X2NvbmZpZywgJGV4Y2x1ZGVfcGF0dGVybnMsICRpbmZvKSA9 IEBfOwo+ICsKPiArICAgIGRpZSAiaW1wbGVtZW50IG1lIGluIHN1YmNsYXNzIjsKPiArfQo+ICsK PiArPXBvZAo+ICsKPiArPW92ZXIKPiArCj4gKz1pdGVtIEM8cmVzdG9yZV9nZXRfbWVjaGFuaXNt Pgo+ICsKPiArVGVsbCB0aGUgY2FsbGVyIHdoYXQgbWVjaGFuaXNtIHRvIHVzZSBmb3IgcmVzdG9y aW5nIHRoZSBndWVzdC4gVGhlIHJlc3RvcmUKPiArbWV0aG9kcyBmb3IgdGhlIGd1ZXN0LCBpLmUu IEM8cmVzdG9yZV9xZW11X2ltZ19pbml0PiBhbmQKPiArQzxyZXN0b3JlX3FlbXVfaW1nX2NsZWFu dXA+IGZvciBndWVzdCB0eXBlIEM8cWVtdT4sIG9yIEM8cmVzdG9yZV9jb250YWluZXJfaW5pdD4K PiArYW5kIEM8cmVzdG9yZV9jb250YWluZXJfY2xlYW51cD4gZm9yIGd1ZXN0IHR5cGUgQzxseGM+ IHdpbGwgYmUgY2FsbGVkIHdpdGgKPiArbWVjaGFuaXNtLXNwZWNpZmljIGluZm9ybWF0aW9uIGFu ZCB0aGVpciByZXR1cm4gdmFsdWUgbWlnaHQgYWxzbyBkZXBlbmQgb24gdGhlCj4gK21lY2hhbmlz bS4gU2VlIHRob3NlIG1ldGhvZHMgZm9yIG1vcmUgaW5mb3JtYXRpb24uIFJldHVybnMKPiArQzwo JG1lY2hhbmlzbSwgJHZtdHlwZSk+Ogo+ICsKPiArPW92ZXIKPiArCj4gKz1pdGVtIEM8JG1lY2hh bmlzbT4KPiArCj4gK0N1cnJlbnRseSwgQzwncWVtdS1pbWcnPiBmb3IgZ3Vlc3QgdHlwZSBDPCdx ZW11Jz4gYW5kIGVpdGhlciBDPCd0YXInPiBvcgo+ICtDPCdkaXJlY3RvcnknPiBmb3IgdHlwZSBD PCdseGMnPiBhcmUgcG9zc2libGUuCj4gKwo+ICs9aXRlbSBDPCR2bXR5cGU+Cj4gKwo+ICtFaXRo ZXIgQzxxZW11PiBvciBDPGx4Yz4gZGVwZW5kaW5nIG9uIHdoYXQgdHlwZSB0aGUgZ3Vlc3QgaW4g dGhlIGJhY2tlZC11cAo+ICthcmNoaXZlIGlzLgo+ICsKPiArPWJhY2sKPiArCj4gK1BhcmFtZXRl cnM6Cj4gKwo+ICs9b3Zlcgo+ICsKPiArPWl0ZW0gQzwkdm9sbmFtZT4KPiArCj4gK1RoZSB2b2x1 bWUgSUQgb2YgdGhlIGFyY2hpdmUgYmVpbmcgcmVzdG9yZWQuCj4gKwo+ICs9YmFjawo+ICsKPiAr PWJhY2sKPiArCj4gKz1jdXQKPiArc3ViIHJlc3RvcmVfZ2V0X21lY2hhbmlzbSB7Cj4gKyAgICBt eSAoJHNlbGYsICR2b2xuYW1lKSA9IEBfOwo+ICsKPiArICAgIGRpZSAiaW1wbGVtZW50IG1lIGlu IHN1YmNsYXNzIjsKPiArfQo+ICsKPiArPXBvZAo+ICsKPiArPW92ZXIKPiArCj4gKz1pdGVtIEM8 YXJjaGl2ZV9nZXRfZ3Vlc3RfY29uZmlnPgo+ICsKPiArRXh0cmFjdCB0aGUgZ3Vlc3QgY29uZmln dXJhdGlvbiBmcm9tIHRoZSBnaXZlbiBiYWNrdXAuIFJldHVybnMgdGhlIHJhdyBjb250ZW50cwo+ ICtvZiB0aGUgYmFja2VkLXVwIGNvbmZpZ3VyYXRpb24gZmlsZS4gTm90ZSB0aGF0IHRoaXMgbWV0 aG9kIGlzIGNhbGxlZAo+ICtpbmRlcGVuZGVudGx5IGZyb20gQzxyZXN0b3JlX2NvbnRhaW5lcl9p bml0KCk+IG9yIEM8cmVzdG9yZV92bV9pbml0KCk+Lgo+ICsKPiArUGFyYW1ldGVyczoKPiArCj4g Kz1vdmVyCj4gKwo+ICs9aXRlbSBDPCR2b2xuYW1lPgo+ICsKPiArVGhlIHZvbHVtZSBJRCBvZiB0 aGUgYXJjaGl2ZSBiZWluZyByZXN0b3JlZC4KPiArCj4gKz1iYWNrCj4gKwo+ICs9YmFjawo+ICsK PiArPWN1dAo+ICtzdWIgYXJjaGl2ZV9nZXRfZ3Vlc3RfY29uZmlnIHsKPiArICAgIG15ICgkc2Vs ZiwgJHZvbG5hbWUpID0gQF87Cj4gKwo+ICsgICAgZGllICJpbXBsZW1lbnQgbWUgaW4gc3ViY2xh c3MiOwo+ICt9Cj4gKwo+ICs9cG9kCj4gKwo+ICs9b3Zlcgo+ICsKPiArPWl0ZW0gQzxhcmNoaXZl X2dldF9maXJld2FsbF9jb25maWc+Cj4gKwo+ICtFeHRyYWN0IHRoZSBndWVzdCdzIGZpcmV3YWxs IGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUgZ2l2ZW4gYmFja3VwLiBSZXR1cm5zIHRoZQo+ICtyYXcg Y29udGVudHMgb2YgdGhlIGJhY2tlZC11cCBjb25maWd1cmF0aW9uIGZpbGUuIFJldHVybnMgQzx1 bmRlZj4gaWYgdGhlcmUgaXMKPiArbm8gZmlyZXdhbGwgY29uZmlnIGluIHRoZSBhcmNoaXZlLCBD PGRpZT4gaWYgdGhlIGNvbmZpZ3VyYXRpb24gY2FuJ3QgYmUKPiArZXh0cmFjdGVkLiBOb3RlIHRo YXQgdGhpcyBtZXRob2QgaXMgY2FsbGVkIGluZGVwZW5kZW50bHkgZnJvbQo+ICtDPHJlc3RvcmVf Y29udGFpbmVyX2luaXQoKT4gb3IgQzxyZXN0b3JlX3ZtX2luaXQoKT4uCj4gKwo+ICtQYXJhbWV0 ZXJzOgo+ICsKPiArPW92ZXIKPiArCj4gKz1pdGVtIEM8JHZvbG5hbWU+Cj4gKwo+ICtUaGUgdm9s dW1lIElEIG9mIHRoZSBhcmNoaXZlIGJlaW5nIHJlc3RvcmVkLgo+ICsKPiArPWJhY2sKPiArCj4g Kz1iYWNrCj4gKwo+ICs9Y3V0Cj4gK3N1YiBhcmNoaXZlX2dldF9maXJld2FsbF9jb25maWcgewo+ ICsgICAgbXkgKCRzZWxmLCAkdm9sbmFtZSkgPSBAXzsKPiArCj4gKyAgICBkaWUgImltcGxlbWVu dCBtZSBpbiBzdWJjbGFzcyI7Cj4gK30KPiArCj4gKz1wb2QKPiArCj4gKz1vdmVyCj4gKwo+ICs9 aXRlbSBDPHJlc3RvcmVfdm1faW5pdD4KPiArCj4gK1ByZXBhcmUgYSBWTSBhcmNoaXZlIGZvciBy ZXN0b3JlLiBSZXR1cm5zIHRoZSBiYXNpYyBpbmZvcm1hdGlvbiBhYm91dCB0aGUKPiArdm9sdW1l cyBpbiB0aGUgYmFja3VwIGFzIGEgaGFzaCByZWZlcmVuY2Ugd2l0aCB0aGUgZm9sbG93aW5nIHN0 cnVjdHVyZToKPiArCj4gKyAgICB7Cj4gKwkkZGV2aWNlX25hbWVBID0+IHsgc2l6ZSA9PiAkc2l6 ZUEgfSwKPiArCSRkZXZpY2VfbmFtZUIgPT4geyBzaXplID0+ICRzaXplQiB9LAo+ICsJLi4uCj4g KyAgICB9Cj4gKwo+ICs9b3Zlcgo+ICsKPiArPWl0ZW0gQzwkZGV2aWNlX25hbWU+Cj4gKwo+ICtU aGUgZGV2aWNlIG5hbWUgdGhhdCB3YXMgZ2l2ZW4gYXMgYW4gYXJndW1lbnQgdG8gdGhlIGJhY2t1 cCByb3V0aW5lIHdoZW4gdGhlCj4gK2JhY2t1cCB3YXMgY3JlYXRlZC4KPiArCj4gKz1pdGVtIEM8 JHNpemU+Cj4gKwo+ICtUaGUgdmlydHVhbCBzaXplIG9mIHRoZSBWTSB2b2x1bWUgdGhhdCB3YXMg YmFja2VkIHVwLiBBIHZvbHVtZSB3aXRoIHRoaXMgc2l6ZSBpcwo+ICtjcmVhdGVkIGZvciB0aGUg cmVzdG9yZSBvcGVyYXRpb24uIEluIHBhcnRpY3VsYXIsIGZvciB0aGUgQzxxZW11LWltZz4gbWVj aGFuaXNtLAo+ICt0aGlzIHNob3VsZCBiZSB0aGUgc2l6ZSBvZiB0aGUgYmxvY2sgZGV2aWNlIHJl ZmVyZW5jZWQgYnkgdGhlIEM8cWVtdS1pbWctcGF0aD4KPiArcmV0dXJuZWQgYnkgQzxyZXN0b3Jl X3ZtX3ZvbHVtZT4uCj4gKwo+ICs9YmFjawo+ICsKPiArUGFyYW1ldGVyczoKPiArCj4gKz1vdmVy Cj4gKwo+ICs9aXRlbSBDPCR2b2xuYW1lPgo+ICsKPiArVGhlIHZvbHVtZSBJRCBvZiB0aGUgYXJj aGl2ZSBiZWluZyByZXN0b3JlZC4KPiArCj4gKz1iYWNrCj4gKwo+ICs9YmFjawo+ICsKPiArPWN1 dAo+ICtzdWIgcmVzdG9yZV92bV9pbml0IHsKPiArICAgIG15ICgkc2VsZiwgJHZvbG5hbWUpID0g QF87Cj4gKwo+ICsgICAgZGllICJpbXBsZW1lbnQgbWUgaW4gc3ViY2xhc3MiOwo+ICt9Cj4gKwo+ ICs9cG9kCj4gKwo+ICs9b3Zlcgo+ICsKPiArPWl0ZW0gQzxyZXN0b3JlX3ZtX2NsZWFudXA+Cj4g Kwo+ICtGb3IgVk0gYmFja3VwcywgY2xlYW4gdXAgYWZ0ZXIgdGhlIHJlc3RvcmUuIENhbGxlZCBp biBib3RoLCBzdWNjZXNzIGFuZAo+ICtmYWlsdXJlIHNjZW5hcmlvcy4KPiArCj4gK1BhcmFtZXRl cnM6Cj4gKwo+ICs9b3Zlcgo+ICsKPiArPWl0ZW0gQzwkdm9sbmFtZT4KPiArCj4gK1RoZSB2b2x1 bWUgSUQgb2YgdGhlIGFyY2hpdmUgYmVpbmcgcmVzdG9yZWQuCj4gKwo+ICs9YmFjawo+ICsKPiAr PWJhY2sKPiArCj4gKz1jdXQKPiArc3ViIHJlc3RvcmVfdm1fY2xlYW51cCB7Cj4gKyAgICBteSAo JHNlbGYsICR2b2xuYW1lKSA9IEBfOwo+ICsKPiArICAgIGRpZSAiaW1wbGVtZW50IG1lIGluIHN1 YmNsYXNzIjsKPiArfQo+ICsKPiArPXBvZAo+ICsKPiArPW92ZXIKPiArCj4gKz1pdGVtIEM8cmVz dG9yZV92bV92b2x1bWVfaW5pdD4KPiArCj4gK1ByZXBhcmUgYSBWTSB2b2x1bWUgaW4gdGhlIGFy Y2hpdmUgZm9yIHJlc3RvcmUuIFJldHVybnMgYSBoYXNoIHJlZmVyZW5jZSB3aXRoCj4gK3RoZSBt ZWNoYW5pc20tc3BlY2lmaWMgaW5mb3JtYXRpb24gZm9yIHRoZSByZXN0b3JlOgo+ICsKPiArPW92 ZXIKPiArCj4gKz1pdGVtIEM8cWVtdS1pbWc+Cj4gKwo+ICsgICAgeyAncWVtdS1pbWctcGF0aCcg PT4gJHBhdGggfQo+ICsKPiArVGhlIHZvbHVtZSB3aWxsIGJlIHJlc3RvcmVkIHVzaW5nIHRoZSBD PHFlbXUtaW1nIGNvbnZlcnQ+IGNvbW1hbmQuCj4gKwo+ICs9b3Zlcgo+ICsKPiArPWl0ZW0gQzwk cGF0aD4KPiArCj4gK0EgcGF0aCB0byB0aGUgdm9sdW1lIHRoYXQgQzxxZW11LWltZz4gY2FuIHVz ZSBhcyBhIHNvdXJjZSBmb3IgdGhlCj4gK0M8cWVtdS1pbWcgY29udmVydD4gY29tbWFuZC4gRm9y IGV4YW1wbGUsIHRoZSBwYXRoIGNvdWxkIGFsc28gYmUgYW4gTkJEIFVSSS4gVGhlCj4gK2ltYWdl IGNvbnRlbnRzIGFyZSBpbnRlcnByZXRlZCBhcyBiZWluZyBpbiBDPHJhdz4gZm9ybWF0IGFuZCBj b3BpZWQgdmVyYmF0aW0uCj4gK090aGVyIGZvcm1hdHMgbGlrZSBDPHFjb3cyPiB3aWxsIG5vdCBi ZSBkZXRlY3RlZCBjdXJyZW50bHkuCj4gKwo+ICs9YmFjawo+ICsKPiArPWJhY2sKPiArCj4gK1Bh cmFtZXRlcnM6Cj4gKwo+ICs9b3Zlcgo+ICsKPiArPWl0ZW0gQzwkdm9sbmFtZT4KPiArCj4gK1Ro ZSB2b2x1bWUgSUQgb2YgdGhlIGFyY2hpdmUgYmVpbmcgcmVzdG9yZWQuCj4gKwo+ICs9aXRlbSBD PCRkZXZpY2VfbmFtZT4KPiArCj4gK1RoZSBkZXZpY2UgbmFtZSBhc3NvY2lhdGVkIHRvIHRoZSB2 b2x1bWUgdGhhdCBzaG91bGQgYmUgcHJlcGFyZWQgZm9yIHRoZQo+ICtyZXN0b3JlLiBTYW1lIGFz IHRoZSBhcmd1bWVudCB0byB0aGUgYmFja3VwIHJvdXRpbmUgd2hlbiB0aGUgYmFja3VwIHdhcyBj cmVhdGVkLgo+ICsKPiArPWl0ZW0gQzwkaW5mbz4KPiArCj4gK0EgaGFzaCByZWZlcmVuY2Ugd2l0 aCBvcHRpb25hbCBhbmQgbWVjaGFuaXNtLXNwZWNpZmljIHBhcmFtZXRlcnMuIEN1cnJlbnRseQo+ ICtlbXB0eS4KPiArCj4gKz1iYWNrCj4gKwo+ICs9YmFjawo+ICsKPiArPWN1dAo+ICtzdWIgcmVz dG9yZV92bV92b2x1bWVfaW5pdCB7Cj4gKyAgICBteSAoJHNlbGYsICR2b2xuYW1lLCAkZGV2aWNl X25hbWUsICRpbmZvKSA9IEBfOwo+ICsKPiArICAgIGRpZSAiaW1wbGVtZW50IG1lIGluIHN1YmNs YXNzIjsKPiArfQo+ICsKPiArPXBvZAo+ICsKPiArPW92ZXIKPiArCj4gKz1pdGVtIEM8cmVzdG9y ZV92bV92b2x1bWVfY2xlYW51cD4KPiArCj4gK0ZvciBWTSBiYWNrdXBzLCBjbGVhbiB1cCBhZnRl ciB0aGUgcmVzdG9yZSBvZiBhIGdpdmVuIHZvbHVtZS4gQ2FsbGVkIGluIGJvdGgsCj4gK3N1Y2Nl c3MgYW5kIGZhaWx1cmUgc2NlbmFyaW9zLgo+ICsKPiArUGFyYW1ldGVyczoKPiArCj4gKz1vdmVy Cj4gKwo+ICs9aXRlbSBDPCR2b2xuYW1lPgo+ICsKPiArVGhlIHZvbHVtZSBJRCBvZiB0aGUgYXJj aGl2ZSBiZWluZyByZXN0b3JlZC4KPiArCj4gKz1pdGVtIEM8JGRldmljZV9uYW1lPgo+ICsKPiAr VGhlIGRldmljZSBuYW1lIGFzc29jaWF0ZWQgdG8gdGhlIHZvbHVtZSB0aGF0IHNob3VsZCBiZSBw cmVwYXJlZCBmb3IgdGhlCj4gK3Jlc3RvcmUuIFNhbWUgYXMgdGhlIGFyZ3VtZW50IHRvIHRoZSBi YWNrdXAgcm91dGluZSB3aGVuIHRoZSBiYWNrdXAgd2FzIGNyZWF0ZWQuCj4gKwo+ICs9aXRlbSBD PCRpbmZvPgo+ICsKPiArQSBoYXNoIHJlZmVyZW5jZSB3aXRoIG9wdGlvbmFsIGFuZCBtZWNoYW5p c20tc3BlY2lmaWMgcGFyYW1ldGVycy4gQ3VycmVudGx5Cj4gK2VtcHR5Lgo+ICsKPiArPWJhY2sK PiArCj4gKz1iYWNrCj4gKwo+ICs9Y3V0Cj4gK3N1YiByZXN0b3JlX3ZtX3ZvbHVtZV9jbGVhbnVw IHsKPiArICAgIG15ICgkc2VsZiwgJHZvbG5hbWUsICRkZXZpY2VfbmFtZSwgJGluZm8pID0gQF87 Cj4gKwo+ICsgICAgZGllICJpbXBsZW1lbnQgbWUgaW4gc3ViY2xhc3MiOwo+ICt9Cj4gKwo+ICs9 cG9kCj4gKwo+ICs9b3Zlcgo+ICsKPiArPWl0ZW0gQzxyZXN0b3JlX2NvbnRhaW5lcl9pbml0Pgo+ ICsKPiArUHJlcGFyZSBhIGNvbnRhaW5lciBhcmNoaXZlIGZvciByZXN0b3JlLiBSZXR1cm5zIGEg aGFzaCByZWZlcmVuY2Ugd2l0aCB0aGUKPiArbWVjaGFuaXNtLXNwZWNpZmljIGluZm9ybWF0aW9u IGZvciB0aGUgcmVzdG9yZToKPiArCj4gKz1vdmVyCj4gKwo+ICs9aXRlbSBDPHRhcj4KPiArCj4g KyAgICB7ICd0YXItcGF0aCcgPT4gJHBhdGggfQo+ICsKPiArVGhlIGFyY2hpdmUgd2lsbCBiZSBy ZXN0b3JlZCB2aWEgdGhlIEM8dGFyPiBjb21tYW5kLgo+ICsKPiArPW92ZXIKPiArCj4gKz1pdGVt IEM8JHBhdGg+Cj4gKwo+ICtUaGUgcGF0aCB0byB0aGUgdGFyIGFyY2hpdmUgY29udGFpbmluZyB0 aGUgZnVsbCBmaWxlc3lzdGVtIHN0cnVjdHVyZSBvZiB0aGUKPiArY29udGFpbmVyLgo+ICsKPiAr PWJhY2sKPiArCj4gKz1pdGVtIEM8ZGlyZWN0b3J5Pgo+ICsKPiArICAgIHsgJ2FyY2hpdmUtZGly ZWN0b3J5JyA9PiAkcGF0aCB9Cj4gKwo+ICtUaGUgYXJjaGl2ZSB3aWxsIGJlIHJlc3RvcmVkIHZp YSBDPHJzeW5jPiBmcm9tIGEgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGZ1bGwKPiArZmlsZXN5 c3RlbSBzdHJ1Y3R1cmUgb2YgdGhlIGNvbnRhaW5lci4KPiArCj4gKz1vdmVyCj4gKwo+ICs9aXRl bSBDPCRwYXRoPgo+ICsKPiArVGhlIHBhdGggdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRo ZSBmdWxsIGZpbGVzeXN0ZW0gc3RydWN0dXJlIG9mIHRoZQo+ICtjb250YWluZXIuCj4gKwo+ICs9 YmFjawo+ICsKPiArPWJhY2sKPiArCj4gK1BhcmFtZXRlcnM6Cj4gKwo+ICs9b3Zlcgo+ICsKPiAr PWl0ZW0gQzwkdm9sbmFtZT4KPiArCj4gK1RoZSB2b2x1bWUgSUQgb2YgdGhlIGFyY2hpdmUgYmVp bmcgcmVzdG9yZWQuCj4gKwo+ICs9aXRlbSBDPCRpbmZvPgo+ICsKPiArQSBoYXNoIHJlZmVyZW5j ZSB3aXRoIG9wdGlvbmFsIGFuZCBtZWNoYW5pc20tc3BlY2lmaWMgcGFyYW1ldGVycy4gQ3VycmVu dGx5Cj4gK2VtcHR5Lgo+ICsKPiArPWJhY2sKPiArCj4gKz1iYWNrCj4gKwo+ICs9Y3V0Cj4gK3N1 YiByZXN0b3JlX2NvbnRhaW5lcl9pbml0IHsKPiArICAgIG15ICgkc2VsZiwgJHZvbG5hbWUsICRp bmZvKSA9IEBfOwo+ICsKPiArICAgIGRpZSAiaW1wbGVtZW50IG1lIGluIHN1YmNsYXNzIjsKPiAr fQo+ICsKPiArPXBvZAo+ICsKPiArPW92ZXIKPiArCj4gKz1pdGVtIEM8cmVzdG9yZV9jb250YWlu ZXJfY2xlYW51cD4KPiArCj4gK0ZvciBjb250YWluZXIgYmFja3VwcywgY2xlYW4gdXAgYWZ0ZXIg dGhlIHJlc3RvcmUuIENhbGxlZCBpbiBib3RoLCBzdWNjZXNzIGFuZAo+ICtmYWlsdXJlIHNjZW5h cmlvcy4KPiArCj4gK1BhcmFtZXRlcnM6Cj4gKwo+ICs9b3Zlcgo+ICsKPiArPWl0ZW0gQzwkdm9s bmFtZT4KPiArCj4gK1RoZSB2b2x1bWUgSUQgb2YgdGhlIGFyY2hpdmUgYmVpbmcgcmVzdG9yZWQu Cj4gKwo+ICs9aXRlbSBDPCRpbmZvPgo+ICsKPiArQSBoYXNoIHJlZmVyZW5jZSB3aXRoIG9wdGlv bmFsIGFuZCBtZWNoYW5pc20tc3BlY2lmaWMgcGFyYW1ldGVycy4gQ3VycmVudGx5Cj4gK2VtcHR5 Lgo+ICsKPiArPWJhY2sKPiArCj4gKz1iYWNrCj4gKwo+ICs9Y3V0Cj4gK3N1YiByZXN0b3JlX2Nv bnRhaW5lcl9jbGVhbnVwIHsKPiArICAgIG15ICgkc2VsZiwgJHZvbG5hbWUsICRpbmZvKSA9IEBf Owo+ICsKPiArICAgIGRpZSAiaW1wbGVtZW50IG1lIGluIHN1YmNsYXNzIjsKPiArfQo+ICsKPiAr MTsKPiBkaWZmIC0tZ2l0IGEvc3JjL1BWRS9CYWNrdXBQcm92aWRlci9QbHVnaW4vTWFrZWZpbGUg Yi9zcmMvUFZFL0JhY2t1cFByb3ZpZGVyL1BsdWdpbi9NYWtlZmlsZQo+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uYmJkNzQzMQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9z cmMvUFZFL0JhY2t1cFByb3ZpZGVyL1BsdWdpbi9NYWtlZmlsZQo+IEBAIC0wLDAgKzEsNSBAQAo+ ICtTT1VSQ0VTID0gQmFzZS5wbQo+ICsKPiArLlBIT05ZOiBpbnN0YWxsCj4gK2luc3RhbGw6Cj4g Kwlmb3IgaSBpbiAke1NPVVJDRVN9OyBkbyBpbnN0YWxsIC1EIC1tIDA2NDQgJCRpICR7REVTVERJ Un0ke1BFUkxESVJ9L1BWRS9CYWNrdXBQcm92aWRlci9QbHVnaW4vJCRpOyBkb25lCj4gZGlmZiAt LWdpdCBhL3NyYy9QVkUvTWFrZWZpbGUgYi9zcmMvUFZFL01ha2VmaWxlCj4gaW5kZXggMGFmMzA4 MS4uOWU5ZjZhYSAxMDA2NDQKPiAtLS0gYS9zcmMvUFZFL01ha2VmaWxlCj4gKysrIGIvc3JjL1BW RS9NYWtlZmlsZQo+IEBAIC05LDYgKzksNyBAQCBpbnN0YWxsOgo+ICAJbWFrZSAtQyBTdG9yYWdl IGluc3RhbGwKPiAgCW1ha2UgLUMgR3Vlc3RJbXBvcnQgaW5zdGFsbAo+ICAJbWFrZSAtQyBBUEky IGluc3RhbGwKPiArCW1ha2UgLUMgQmFja3VwUHJvdmlkZXIgaW5zdGFsbAo+ICAJbWFrZSAtQyBD TEkgaW5zdGFsbAo+ICAKPiAgLlBIT05ZOiB0ZXN0Cj4gZGlmZiAtLWdpdCBhL3NyYy9QVkUvU3Rv cmFnZS5wbSBiL3NyYy9QVkUvU3RvcmFnZS5wbQo+IGluZGV4IDhjYmZiNGYuLjdmZDk3YjcgMTAw NzU1Cj4gLS0tIGEvc3JjL1BWRS9TdG9yYWdlLnBtCj4gKysrIGIvc3JjL1BWRS9TdG9yYWdlLnBt Cj4gQEAgLTIwMjcsNiArMjAyNywxNCBAQCBzdWIgdm9sdW1lX2V4cG9ydF9zdGFydCB7Cj4gICAg ICBQVkU6OlRvb2xzOjpydW5fY29tbWFuZCgkY21kcywgJSRydW5fY29tbWFuZF9wYXJhbXMpOwo+ ICB9Cj4gIAo+ICtzdWIgbmV3X2JhY2t1cF9wcm92aWRlciB7Cj4gKyAgICBteSAoJGNmZywgJHN0 b3JlaWQsICRsb2dfZnVuY3Rpb24pID0gQF87Cj4gKwo+ICsgICAgbXkgJHNjZmcgPSBzdG9yYWdl X2NvbmZpZygkY2ZnLCAkc3RvcmVpZCk7Cj4gKyAgICBteSAkcGx1Z2luID0gUFZFOjpTdG9yYWdl OjpQbHVnaW4tPmxvb2t1cCgkc2NmZy0+e3R5cGV9KTsKPiArICAgIHJldHVybiAkcGx1Z2luLT5u ZXdfYmFja3VwX3Byb3ZpZGVyKCRzY2ZnLCAkc3RvcmVpZCwgJGxvZ19mdW5jdGlvbik7Cj4gK30K PiArCj4gICMgYmFzaCBjb21wbGV0aW9uIGhlbHBlcgo+ICAKPiAgc3ViIGNvbXBsZXRlX3N0b3Jh Z2Ugewo+IGRpZmYgLS1naXQgYS9zcmMvUFZFL1N0b3JhZ2UvUGx1Z2luLnBtIGIvc3JjL1BWRS9T dG9yYWdlL1BsdWdpbi5wbQo+IGluZGV4IDgwZGFlZWEuLmRmMmRkYzUgMTAwNjQ0Cj4gLS0tIGEv c3JjL1BWRS9TdG9yYWdlL1BsdWdpbi5wbQo+ICsrKyBiL3NyYy9QVkUvU3RvcmFnZS9QbHVnaW4u cG0KPiBAQCAtMTg2OCw2ICsxODY4LDIxIEBAIHN1YiByZW5hbWVfdm9sdW1lIHsKPiAgICAgIHJl dHVybiAiJHtzdG9yZWlkfToke2Jhc2V9JHt0YXJnZXRfdm1pZH0vJHt0YXJnZXRfdm9sbmFtZX0i Owo+ICB9Cj4gIAo+ICsjIFVzZWQgYnkgc3RvcmFnZSBwbHVnaW5zIGZvciBleHRlcm5hbCBiYWNr dXAgcHJvdmlkZXJzLiBTZWUgUFZFOjpCYWNrdXBQcm92aWRlcjo6UGx1Z2luIGZvciB0aGUgQVBJ Cj4gKyMgdGhlIHByb3ZpZGVyIG5lZWRzIHRvIGltcGxlbWVudC4KPiArIwo+ICsjICRzY2ZnIC0g dGhlIHN0b3JhZ2UgY29uZmlndXJhdGlvbgo+ICsjICRzdG9yZWlkIC0gdGhlIHN0b3JhZ2UgSUQK PiArIyAkbG9nX2Z1bmN0aW9uKCRsb2dfbGV2ZWwsICRtZXNzYWdlKSAtIHRoaXMgbG9nIGZ1bmN0 aW9uIGNhbiBiZSB1c2VkIHRvIHdyaXRlIHRvIHRoZSBiYWNrdXAgdGFzawo+ICsjICAgbG9nIGlu IFByb3htb3ggVkUuICRsb2dfbGV2ZWwgaXMgJ2luZm8nLCAnd2Fybicgb3IgJ2VycicsICRtZXNz YWdlIGlzIHRoZSBtZXNzYWdlIHRvIGJlIHByaW50ZWQuCj4gKyMKPiArIyBSZXR1cm5zIGEgYmxl c3NlZCByZWZlcmVuY2UgdG8gdGhlIGJhY2t1cCBwcm92aWRlciBjbGFzcy4KPiArc3ViIG5ld19i YWNrdXBfcHJvdmlkZXIgewo+ICsgICAgbXkgKCRjbGFzcywgJHNjZmcsICRzdG9yZWlkLCAkbG9n X2Z1bmN0aW9uKSA9IEBfOwo+ICsKPiArICAgIGRpZSAiaW1wbGVtZW50IG1lIGlmIGVuYWJsaW5n IHRoZSBmZWF0dXJlICdiYWNrdXAtcHJvdmlkZXInIGluIHBsdWdpbmRhdGEoKS0+e2ZlYXR1cmVz fVxuIjsKPiArfQoKRm9yIGZlYXR1cmVzLCB3ZSBjb3VsZCBpbiB0aGUgZnV0dXJlIGNoZWNrIHdo ZXRoZXIgYSBwbHVnaW4gYWN0dWFsbHkKaW1wbGVtZW50cyBhbGwgb2YgdGhlIG1ldGhvZHMgcmVx dWlyZWQgZm9yIHRoYXQgZmVhdHVyZS4gT3V0IG9mIHNjb3BlCmZvciB0aGlzIHNlcmllcywgb2Yg Y291cnNlIQoKSSB0cmllZCAob3ZlcmVuZ2luZWVyZWQpIHNvbWV0aGluZyBzaW1pbGFyIGluIG9u ZSBvbGQgUkZDIFtyZmNdIG9mIG1pbmUKLS0gd2hhdCB3ZSBjb3VsZCBkbyBpcyBjaGVjayB3aGV0 aGVyIHRoZSBhZGRyZXNzIG9mIGUuZy4gdGhlCmBuZXdfYmFja3VwX3Byb3ZpZGVyYCBzeW1ib2wg aW4gdGhlIGNvbmNyZXRlIHBsdWdpbiBpcyB0aGUgc2FtZSBhcyB0aGUKb25lIGluIGA6OlBsdWdp bmA7IGlmIGl0IGlzLCB0aHJvdyBvciByZWZ1c2UgdG8gbG9hZCB0aGUgcGx1Z2luLgoKSW4gb3Ro ZXIgd29yZHM6IElmIHRoZSBwbHVnaW4gYXV0aG9yIGhhcyBvdmVycmlkZGVuIHRoZSBtZXRob2Qs IHRoZQpzeW1ib2wncyBhZGRyZXNzIHdpbGwgYmUgZGlmZmVyZW50LiA6UAoKTm90IHN1cmUgaWYg d2UgYWN0dWFsbHkgd2FudCB0byBlbmZvcmNlIHRoaXMgdGhvdWdoOyBhbHRlcm5hdGl2ZWx5LCB3 ZQpjb3VsZCBsZXQgc29tZSBraW5kIG9mIGRldiB0b29saW5nIGNoZWNrIGZvciAiY29uZm9ybWFu Y2UiIGxpa2UgdGhhdC4gSXQKY2FuIHF1aWNrbHkgZ2V0IHRvbyBtZXNzeSBvdGhlcndpc2UgW3Jm Y10uCgpbcmZjXTogaHR0cHM6Ly9sb3JlLnByb3htb3guY29tL3B2ZS1kZXZlbC8yMDI1MDEzMDE0 NTEyNC4zMTc3NDUtMS1tLmNhcnJhcmFAcHJveG1veC5jb20vCgo+ICsKPiAgc3ViIGNvbmZpZ19h d2FyZV9iYXNlX21rZGlyIHsKPiAgICAgIG15ICgkY2xhc3MsICRzY2ZnLCAkcGF0aCkgPSBAXzsK PiAgCgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCnB2 ZS1kZXZlbCBtYWlsaW5nIGxpc3QKcHZlLWRldmVsQGxpc3RzLnByb3htb3guY29tCmh0dHBzOi8v bGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3B2ZS1kZXZlbAo=