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 1D5AE1FF136 for ; Mon, 26 Jan 2026 10:43:50 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 48E7F84C1; Mon, 26 Jan 2026 10:44:11 +0100 (CET) Mime-Version: 1.0 Date: Mon, 26 Jan 2026 17:43:28 +0800 Message-Id: From: "Kefu Chai" To: "Samuel Rufinatscha" , "Proxmox VE development discussion" X-Mailer: aerc 0.20.0 References: <20260106142440.2368585-1-k.chai@proxmox.com> <20260106142440.2368585-3-k.chai@proxmox.com> In-Reply-To: X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1769420550860 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.167 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_RPBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: Re: [pve-devel] [PATCH pve-cluster 02/15] pmxcfs-rs: add pmxcfs-config crate 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" T24gRnJpIEphbiAyMywgMjAyNiBhdCAxMTowMSBQTSBDU1QsIFNhbXVlbCBSdWZpbmF0c2NoYSB3 cm90ZToKPiBjb21tZW50cyBpbmxpbmUKPgo+IE9uIDEvNi8yNiAzOjI1IFBNLCBLZWZ1IENoYWkg d3JvdGU6Cj4+IEFkZCBjb25maWd1cmF0aW9uIG1hbmFnZW1lbnQgY3JhdGUgdGhhdCBwcm92aWRl czoKPj4gLSBDb25maWcgc3RydWN0IGZvciBydW50aW1lIGNvbmZpZ3VyYXRpb24KPj4gLSBOb2Rl IGhvc3RuYW1lLCBJUCwgYW5kIGdyb3VwIElEIHRyYWNraW5nCj4+IC0gRGVidWcgYW5kIGxvY2Fs IG1vZGUgZmxhZ3MKPj4gLSBUaHJlYWQtc2FmZSBjb25maWd1cmF0aW9uIGFjY2VzcyB2aWEgcGFy a2luZ19sb3QgTXV0ZXgKPj4gCj4+IFRoaXMgaXMgYSBmb3VuZGF0aW9uYWwgY3JhdGUgd2l0aCBu byBpbnRlcm5hbCBkZXBlbmRlbmNpZXMsIG9ubHkKPj4gcmVxdWlyaW5nIHBhcmtpbmdfbG90IGZv ciBzeW5jaHJvbml6YXRpb24uIE90aGVyIGNyYXRlcyB3aWxsIHVzZQo+PiB0aGlzIGZvciBhY2Nl c3NpbmcgcnVudGltZSBjb25maWd1cmF0aW9uLgo+PiAKPj4gU2lnbmVkLW9mZi1ieTogS2VmdSBD aGFpIDxrLmNoYWlAcHJveG1veC5jb20+Cj4+IC0tLQo+PiAgIHNyYy9wbXhjZnMtcnMvQ2FyZ28u dG9tbCAgICAgICAgICAgICAgIHwgICAzICstCj4+ICAgc3JjL3BteGNmcy1ycy9wbXhjZnMtY29u ZmlnL0NhcmdvLnRvbWwgfCAgMTYgKwo+PiAgIHNyYy9wbXhjZnMtcnMvcG14Y2ZzLWNvbmZpZy9S RUFETUUubWQgIHwgMTI3ICsrKysrKysKPj4gICBzcmMvcG14Y2ZzLXJzL3BteGNmcy1jb25maWcv c3JjL2xpYi5ycyB8IDQ3MSArKysrKysrKysrKysrKysrKysrKysrKysrCj4+ICAgNCBmaWxlcyBj aGFuZ2VkLCA2MTYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+PiAgIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvcG14Y2ZzLXJzL3BteGNmcy1jb25maWcvQ2FyZ28udG9tbAo+PiAgIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmMvcG14Y2ZzLXJzL3BteGNmcy1jb25maWcvUkVBRE1FLm1kCj4+ICAg Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9wbXhjZnMtcnMvcG14Y2ZzLWNvbmZpZy9zcmMvbGliLnJz Cj4+IAo+PiBkaWZmIC0tZ2l0IGEvc3JjL3BteGNmcy1ycy9DYXJnby50b21sIGIvc3JjL3BteGNm cy1ycy9DYXJnby50b21sCj4+IGluZGV4IDE1ZDg4ZjUyLi4yOGUyMGJiNyAxMDA2NDQKPj4gLS0t IGEvc3JjL3BteGNmcy1ycy9DYXJnby50b21sCj4+ICsrKyBiL3NyYy9wbXhjZnMtcnMvQ2FyZ28u dG9tbAo+PiBAQCAtMSw3ICsxLDggQEAKPj4gICAjIFdvcmtzcGFjZSByb290IGZvciBwbXhjZnMg UnVzdCBpbXBsZW1lbnRhdGlvbgo+PiAgIFt3b3Jrc3BhY2VdCj4+ICAgbWVtYmVycyA9IFsKPj4g LSAgICAicG14Y2ZzLWFwaS10eXBlcyIsICMgU2hhcmVkIHR5cGVzIGFuZCBlcnJvciBkZWZpbml0 aW9ucwo+PiArICAgICJwbXhjZnMtYXBpLXR5cGVzIiwgICMgU2hhcmVkIHR5cGVzIGFuZCBlcnJv ciBkZWZpbml0aW9ucwo+PiArICAgICJwbXhjZnMtY29uZmlnIiwgICAgICMgQ29uZmlndXJhdGlv biBtYW5hZ2VtZW50Cj4+ICAgXQo+PiAgIHJlc29sdmVyID0gIjIiCj4+ICAgCj4+IGRpZmYgLS1n aXQgYS9zcmMvcG14Y2ZzLXJzL3BteGNmcy1jb25maWcvQ2FyZ28udG9tbCBiL3NyYy9wbXhjZnMt cnMvcG14Y2ZzLWNvbmZpZy9DYXJnby50b21sCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGlu ZGV4IDAwMDAwMDAwLi5mNWE2MDk5NQo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL3NyYy9wbXhj ZnMtcnMvcG14Y2ZzLWNvbmZpZy9DYXJnby50b21sCj4+IEBAIC0wLDAgKzEsMTYgQEAKPj4gK1tw YWNrYWdlXQo+PiArbmFtZSA9ICJwbXhjZnMtY29uZmlnIgo+PiArZGVzY3JpcHRpb24gPSAiQ29u ZmlndXJhdGlvbiBtYW5hZ2VtZW50IGZvciBwbXhjZnMiCj4+ICsKPj4gK3ZlcnNpb24ud29ya3Nw YWNlID0gdHJ1ZQo+PiArZWRpdGlvbi53b3Jrc3BhY2UgPSB0cnVlCj4+ICthdXRob3JzLndvcmtz cGFjZSA9IHRydWUKPj4gK2xpY2Vuc2Uud29ya3NwYWNlID0gdHJ1ZQo+PiArcmVwb3NpdG9yeS53 b3Jrc3BhY2UgPSB0cnVlCj4+ICsKPj4gK1tsaW50c10KPj4gK3dvcmtzcGFjZSA9IHRydWUKPj4g Kwo+PiArW2RlcGVuZGVuY2llc10KPj4gKyMgQ29uY3VycmVuY3kgcHJpbWl0aXZlcwo+PiArcGFy a2luZ19sb3Qud29ya3NwYWNlID0gdHJ1ZQo+PiBkaWZmIC0tZ2l0IGEvc3JjL3BteGNmcy1ycy9w bXhjZnMtY29uZmlnL1JFQURNRS5tZCBiL3NyYy9wbXhjZnMtcnMvcG14Y2ZzLWNvbmZpZy9SRUFE TUUubWQKPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMDAuLmMwNmIyMTcw Cj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvc3JjL3BteGNmcy1ycy9wbXhjZnMtY29uZmlnL1JF QURNRS5tZAo+PiBAQCAtMCwwICsxLDEyNyBAQAo+PiArIyBwbXhjZnMtY29uZmlnCj4+ICsKPj4g KyoqQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50KiogYW5kICoqQ2x1c3RlciBTZXJ2aWNlcyoqIGZv ciBwbXhjZnMuCj4+ICsKPj4gK1RoaXMgY3JhdGUgcHJvdmlkZXMgY29uZmlndXJhdGlvbiBzdHJ1 Y3R1cmVzIGFuZCBjbHVzdGVyIGludGVncmF0aW9uIHNlcnZpY2VzIGluY2x1ZGluZyBxdW9ydW0g dHJhY2tpbmcgYW5kIGNsdXN0ZXIgY29uZmlndXJhdGlvbiBtb25pdG9yaW5nIHZpYSBDb3Jvc3lu YyBBUElzLgo+PiArCj4+ICsjIyBPdmVydmlldwo+PiArCj4+ICtUaGlzIGNyYXRlIGNvbnRhaW5z Ogo+PiArMS4gKipDb25maWcgc3RydWN0Kio6IFJ1bnRpbWUgY29uZmlndXJhdGlvbiAobm9kZSBu YW1lLCBJUHMsIGZsYWdzKQo+PiArMi4gSW50ZWdyYXRpb24gd2l0aCBDb3Jvc3luYyBzZXJ2aWNl cyAodHJhY2tlZCBpbiBtYWluIHBteGNmcyBjcmF0ZSk6Cj4+ICsgICAtICoqUXVvcnVtU2Vydmlj ZSoqIChgcG14Y2ZzL3NyYy9xdW9ydW1fc2VydmljZS5yc2ApIC0gUXVvcnVtIG1vbml0b3JpbmcK Pj4gKyAgIC0gKipDbHVzdGVyQ29uZmlnU2VydmljZSoqIChgcG14Y2ZzL3NyYy9jbHVzdGVyX2Nv bmZpZ19zZXJ2aWNlLnJzYCkgLSBDb25maWcgdHJhY2tpbmcKPgo+IFRoaXMgcGF0Y2ggb25seSBj b250YWlucyB0aGUgQ29uZmlnIHN0cnVjdCwgYnV0IG5vdCBDbHVzdGVyIFNlcnZpY2VzCj4gb3Ig UXVvcnVtU2VydmljZSwgcGxlYXNlIHJldmlzdCBjb21taXQgbWVzc2FnZSBhbmQgUkVBRE1FLgoK U29ycnksIHRoZSBSRUFETUUubWQgd2FzIG91dC1vZi1zeW5jIGFmdGVyIHRoZSBsYXRlc3QgcmVm YXRvcnkuIEZpeGVkLgoKPgo+PiArCj4+ICsjIyBDb25maWcgU3RydWN0Cj4+ICsKPj4gK1RoZSBg Q29uZmlnYCBzdHJ1Y3QgaG9sZHMgZGFlbW9uLXdpZGUgY29uZmlndXJhdGlvbiBpbmNsdWRpbmcg bm9kZSBob3N0bmFtZSwgSVAgYWRkcmVzcywgd3d3LWRhdGEgZ3JvdXAgSUQsIGRlYnVnIGZsYWcs IGxvY2FsIG1vZGUgZmxhZywgYW5kIGNsdXN0ZXIgbmFtZS4KPj4gKwo+PiArIyMgQ2x1c3RlciBT ZXJ2aWNlcwo+PiArCj4+ICtUaGUgZm9sbG93aW5nIHNlcnZpY2VzIGFyZSBpbXBsZW1lbnRlZCBp biB0aGUgbWFpbiBwbXhjZnMgY3JhdGUgYnV0IGRvY3VtZW50ZWQgaGVyZSBmb3IgY29tcGxldGVu ZXNzLgo+PiArCj4+ICsjIyMgUXVvcnVtU2VydmljZQo+PiArCj4+ICsqKkMgRXF1aXZhbGVudDoq KiBgc3JjL3BteGNmcy9xdW9ydW0uY2AgLSBgc2VydmljZV9xdW9ydW1fbmV3KClgCj4+ICsqKlJ1 c3QgTG9jYXRpb246KiogYHNyYy9wbXhjZnMtcnMvcG14Y2ZzL3NyYy9xdW9ydW1fc2VydmljZS5y c2AKPj4gKwo+PiArTW9uaXRvcnMgY2x1c3RlciBxdW9ydW0gc3RhdHVzIHZpYSBDb3Jvc3luYyBx dW9ydW0gQVBJLgo+PiArCj4+ICsjIyMjIEZlYXR1cmVzCj4+ICstIFRyYWNrcyBxdW9ydW0gc3Rh dGUgKHF1b3JhdGUvaW5xdW9yYXRlKQo+PiArLSBNb25pdG9ycyBtZW1iZXIgbGlzdCBjaGFuZ2Vz Cj4+ICstIEF1dG9tYXRpYyByZWNvbm5lY3Rpb24gb24gQ29yb3N5bmMgcmVzdGFydAo+PiArLSBV cGRhdGVzIGBTdGF0dXNgIHF1b3J1bSBmbGFnCj4+ICsKPj4gKyMjIyMgQyB0byBSdXN0IE1hcHBp bmcKPj4gKwo+PiArfCBDIEZ1bmN0aW9uIHwgUnVzdCBFcXVpdmFsZW50IHwgTG9jYXRpb24gfAo+ PiArfC0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS18Cj4+ICt8IGBzZXJ2 aWNlX3F1b3J1bV9uZXcoKWAgfCBgUXVvcnVtU2VydmljZTo6bmV3KClgIHwgcXVvcnVtX3NlcnZp Y2UucnMgfAo+PiArfCBgc2VydmljZV9xdW9ydW1fZGVzdHJveSgpYCB8IChEcm9wIHRyYWl0IC8g ZmluYWxpemUpIHwgQXV0b21hdGljIHwKPj4gK3wgYHF1b3J1bV9ub3RpZmljYXRpb25fZm5gIHwg cXVvcnVtX25vdGlmaWNhdGlvbiBjbG9zdXJlIHwgcXVvcnVtX3NlcnZpY2UucnMgfAo+PiArfCBg bm9kZWxpc3Rfbm90aWZpY2F0aW9uX2ZuYCB8IG5vZGVsaXN0X25vdGlmaWNhdGlvbiBjbG9zdXJl IHwgcXVvcnVtX3NlcnZpY2UucnMgfAo+PiArCj4+ICsjIyMjIFF1b3J1bSBOb3RpZmljYXRpb25z Cj4+ICsKPj4gK1RoZSBzZXJ2aWNlIG1vbml0b3JzIHF1b3J1bSBzdGF0ZSBjaGFuZ2VzIGFuZCBt ZW1iZXIgbGlzdCBjaGFuZ2VzLCB1cGRhdGluZyB0aGUgU3RhdHVzIGFjY29yZGluZ2x5Lgo+PiAr Cj4+ICsjIyMgQ2x1c3RlckNvbmZpZ1NlcnZpY2UKPj4gKwo+PiArKipDIEVxdWl2YWxlbnQ6Kiog YHNyYy9wbXhjZnMvY29uZmRiLmNgIC0gYHNlcnZpY2VfY29uZmRiX25ldygpYAo+PiArKipSdXN0 IExvY2F0aW9uOioqIGBzcmMvcG14Y2ZzLXJzL3BteGNmcy9zcmMvY2x1c3Rlcl9jb25maWdfc2Vy dmljZS5yc2AKPj4gKwo+PiArTW9uaXRvcnMgQ29yb3N5bmMgY2x1c3RlciBjb25maWd1cmF0aW9u IChjbWFwKSBhbmQgdHJhY2tzIG5vZGUgbWVtYmVyc2hpcC4KPj4gKwo+PiArIyMjIyBGZWF0dXJl cwo+PiArLSBNb25pdG9ycyBjbHVzdGVyIG1lbWJlcnNoaXAgdmlhIENvcm9zeW5jIGNtYXAgQVBJ Cj4+ICstIFRyYWNrcyBub2RlIGFkZGl0aW9ucy9yZW1vdmFscwo+PiArLSBSZWdpc3RlcnMgbm9k ZXMgaW4gU3RhdHVzCj4+ICstIEF1dG9tYXRpYyByZWNvbm5lY3Rpb24gb24gQ29yb3N5bmMgcmVz dGFydAo+PiArCj4+ICsjIyMjIEMgdG8gUnVzdCBNYXBwaW5nCj4+ICsKPj4gK3wgQyBGdW5jdGlv biB8IFJ1c3QgRXF1aXZhbGVudCB8IExvY2F0aW9uIHwKPj4gK3wtLS0tLS0tLS0tLXwtLS0tLS0t LS0tLS0tLS0tLXwtLS0tLS0tLS0tfAo+PiArfCBgc2VydmljZV9jb25mZGJfbmV3KClgIHwgYENs dXN0ZXJDb25maWdTZXJ2aWNlOjpuZXcoKWAgfCBjbHVzdGVyX2NvbmZpZ19zZXJ2aWNlLnJzIHwK Pj4gK3wgYHNlcnZpY2VfY29uZmRiX2Rlc3Ryb3koKWAgfCAoRHJvcCB0cmFpdCAvIGZpbmFsaXpl KSB8IEF1dG9tYXRpYyB8Cj4+ICt8IGBjb25mZGJfdHJhY2tfZm5gIHwgKGRpcmVjdCBjbWFwIHF1 ZXJpZXMpIHwgRGlmZmVyZW50IGFwcHJvYWNoIHwKPj4gKwo+PiArIyMjIyBDb25maWd1cmF0aW9u IFRyYWNraW5nCj4+ICsKPj4gK1RoZSBzZXJ2aWNlIG1vbml0b3JzOgo+PiArLSBgbm9kZWxpc3Qu bm9kZS4qLm5vZGVpZGAgLSBOb2RlIElEcwo+PiArLSBgbm9kZWxpc3Qubm9kZS4qLm5hbWVgIC0g Tm9kZSBuYW1lcwo+PiArLSBgbm9kZWxpc3Qubm9kZS4qLnJpbmcqX2FkZHJgIC0gTm9kZSBJUCBh ZGRyZXNzZXMKPj4gKwo+PiArVXBkYXRlcyBgU3RhdHVzYCB3aXRoIGN1cnJlbnQgY2x1c3RlciBt ZW1iZXJzaGlwLgo+PiArCj4+ICsjIyBLZXkgRGlmZmVyZW5jZXMgZnJvbSBDIEltcGxlbWVudGF0 aW9uCj4+ICsKPj4gKyMjIyBDbHVzdGVyIENvbmZpZyBTZXJ2aWNlIEFQSQo+PiArCj4+ICsqKkMg VmVyc2lvbiAoY29uZmRiLmMpOioqCj4+ICstIFVzZXMgZGVwcmVjYXRlZCBjb25mZGIgQVBJCj4+ ICstIFRyYWNrIGNoYW5nZXMgdmlhIGNvbmZkYiBub3RpZmljYXRpb25zCj4+ICsKPj4gKyoqUnVz dCBWZXJzaW9uOioqCj4+ICstIFVzZXMgbW9kZXJuIGNtYXAgQVBJCj4+ICstIERpcmVjdCBjbWFw IHF1ZXJpZXMKPj4gKwo+PiArQm90aCByZWFkIHRoZSBzYW1lIGRhdGEsIGJ1dCBSdXN0IHVzZXMg dGhlIG1vZGVybiBDb3Jvc3luYyBBUEkuCj4+ICsKPj4gKyMjIyBTZXJ2aWNlIEludGVncmF0aW9u Cj4+ICsKPj4gKyoqQyBWZXJzaW9uOioqCj4+ICstIHFiX2xvb3AgbWFuYWdlcyBsaWZlY3ljbGUK Pj4gKwo+PiArKipSdXN0IFZlcnNpb246KioKPj4gKy0gU2VydmljZSB0cmFpdCBhYnN0cmFjdHMg bGlmZWN5Y2xlCj4+ICstIFNlcnZpY2VNYW5hZ2VyIGhhbmRsZXMgcmV0cnkKPj4gKy0gVG9raW8g YXN5bmMgZGlzcGF0Y2gKPj4gKwo+PiArIyMgS25vd24gSXNzdWVzIC8gVE9ET3MKPj4gKwo+PiAr IyMjIENvbXBhdGliaWxpdHkKPj4gKy0gKipRdW9ydW0gdHJhY2tpbmcqKjogQ29tcGF0aWJsZSB3 aXRoIEMgaW1wbGVtZW50YXRpb24KPj4gKy0gKipOb2RlIHJlZ2lzdHJhdGlvbioqOiBFcXVpdmFs ZW50IGJlaGF2aW9yCj4+ICstICoqY21hcCB2cyBjb25mZGIqKjogUnVzdCB1c2VzIG1vZGVybiBj bWFwIEFQSSAoQyB1c2VzIGRlcHJlY2F0ZWQgY29uZmRiKQo+PiArCj4+ICsjIyMgTWlzc2luZyBG ZWF0dXJlcwo+PiArLSBOb25lIGlkZW50aWZpZWQKPj4gKwo+PiArIyMjIEJlaGF2aW9yYWwgRGlm ZmVyZW5jZXMgKEJlbmlnbikKPj4gKy0gKipBUEkgY2hvaWNlKio6IFJ1c3QgdXNlcyBjbWFwLCBD IHVzZXMgY29uZmRiIChib3RoIHJlYWQgc2FtZSBkYXRhKQo+PiArLSAqKkxpZmVjeWNsZSoqOiBS dXN0IHVzZXMgU2VydmljZSB0cmFpdCwgQyB1c2VzIG1hbnVhbCBsaWZlY3ljbGUKPj4gKwo+PiAr IyMgUmVmZXJlbmNlcwo+PiArCj4+ICsjIyMgQyBJbXBsZW1lbnRhdGlvbgo+PiArLSBgc3JjL3Bt eGNmcy9xdW9ydW0uY2AgLyBgcXVvcnVtLmhgIC0gUXVvcnVtIHNlcnZpY2UKPj4gKy0gYHNyYy9w bXhjZnMvY29uZmRiLmNgIC8gYGNvbmZkYi5oYCAtIENsdXN0ZXIgY29uZmlnIHNlcnZpY2UKPj4g Kwo+PiArIyMjIFJlbGF0ZWQgQ3JhdGVzCj4+ICstICoqcG14Y2ZzKio6IE1haW4gZGFlbW9uIHdp dGggUXVvcnVtU2VydmljZSBhbmQgQ2x1c3RlckNvbmZpZ1NlcnZpY2UKPj4gKy0gKipwbXhjZnMt c3RhdHVzKio6IFN0YXR1cyB0cmFja2luZyB1cGRhdGVkIGJ5IHRoZXNlIHNlcnZpY2VzCj4+ICst ICoqcG14Y2ZzLXNlcnZpY2VzKio6IFNlcnZpY2UgZnJhbWV3b3JrIHVzZWQgYnkgYm90aCBzZXJ2 aWNlcwo+PiArLSAqKnJ1c3QtY29yb3N5bmMqKjogQ29yb3N5bmMgRkZJIGJpbmRpbmdzCj4+IGRp ZmYgLS1naXQgYS9zcmMvcG14Y2ZzLXJzL3BteGNmcy1jb25maWcvc3JjL2xpYi5ycyBiL3NyYy9w bXhjZnMtcnMvcG14Y2ZzLWNvbmZpZy9zcmMvbGliLnJzCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 Cj4+IGluZGV4IDAwMDAwMDAwLi41ZTFlZTFiMgo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL3Ny Yy9wbXhjZnMtcnMvcG14Y2ZzLWNvbmZpZy9zcmMvbGliLnJzCj4+IEBAIC0wLDAgKzEsNDcxIEBA Cj4+ICt1c2UgcGFya2luZ19sb3Q6OlJ3TG9jazsKPj4gK3VzZSBzdGQ6OnN5bmM6OkFyYzsKPj4g Kwo+PiArLy8vIEdsb2JhbCBjb25maWd1cmF0aW9uIGZvciBwbXhjZnMKPj4gK3B1YiBzdHJ1Y3Qg Q29uZmlnIHsKPj4gKyAgICAvLy8gTm9kZSBuYW1lIChob3N0bmFtZSB3aXRob3V0IGRvbWFpbikK Pj4gKyAgICBwdWIgbm9kZW5hbWU6IFN0cmluZywKPj4gKwo+PiArICAgIC8vLyBOb2RlIElQIGFk ZHJlc3MKPj4gKyAgICBwdWIgbm9kZV9pcDogU3RyaW5nLAo+Cj4gQ29uc2lkZXIgdXNpbmcgc3Rk OjpuZXQ6OklwQWRkciAob3IgU29ja2V0QWRkciBpZiBhIHBvcnQgaXMgcGFydCBvZiB0aGUKPiB2 YWx1ZSkuIFRlc3RzIGN1cnJlbnRseSBtaXggSVAgdnMgSVA6UE9SVCwgc28gaXTigJlzIHVuY2xl YXIgd2hhdCBub2RlX2lwCj4gaXMgc3VwcG9zZWQgdG8gcmVwcmVzZW50LgoKSXQncyBhIHZhbHVl IGV4dHJhY3RlZCBmcm9tIHJlc29sdmVfbm9kZV9pcCgpLCBzbyBpdCdzIGp1c3QgYW4gSVAKYWRk cmVzcy4gc28gc3dpdGNoZWQgdG8gSXBBZGRyLCBhbmQgdGVzdHMgYXJlIHVwZGF0ZWQgYWNjb3Jk aW5nbHkuCgo+Cj4+ICsKPj4gKyAgICAvLy8gd3d3LWRhdGEgZ3JvdXAgSUQgZm9yIGZpbGUgcGVy bWlzc2lvbnMKPj4gKyAgICBwdWIgd3d3X2RhdGFfZ2lkOiB1MzIsCj4+ICsKPj4gKyAgICAvLy8g RGVidWcgbW9kZSBlbmFibGVkCj4+ICsgICAgcHViIGRlYnVnOiBib29sLAo+PiArCj4+ICsgICAg Ly8vIEZvcmNlIGxvY2FsIG1vZGUgKG5vIGNsdXN0ZXJpbmcpCj4+ICsgICAgcHViIGxvY2FsX21v ZGU6IGJvb2wsCj4+ICsKPj4gKyAgICAvLy8gQ2x1c3RlciBuYW1lIChDUEcgZ3JvdXAgbmFtZSkK Pj4gKyAgICBwdWIgY2x1c3Rlcl9uYW1lOiBTdHJpbmcsCj4+ICsKPj4gKyAgICAvLy8gRGVidWcg bGV2ZWwgKDAgPSBub3JtYWwsIDErID0gZGVidWcpIC0gbXV0YWJsZSBhdCBydW50aW1lCj4+ICsg ICAgZGVidWdfbGV2ZWw6IFJ3TG9jazx1OD4sCj4KPiBpbiB0aGUgY3JhdGUgZG9jcyBpdCBzYXlz OiDigJxUaGUgQ29uZmlnIHN0cnVjdCB1c2VzIEFyYzxBdG9taWNVOD4gZm9yCj4gZGVidWdfbGV2 ZWzigJ0gYnV0IHRoZSBpbXBsZW1lbnRhdGlvbiB1c2VzIHBhcmtpbmdfbG90OjpSd0xvY2s8dTg+ Lgo+IFVubGVzcyB3ZSBuZWVkIGxvY2sgY291cGxpbmcgd2l0aCBvdGhlciBmaWVsZHMsIEF0b21p Y1U4IHdvdWxkIGxpa2VseQo+IGJlIHN1ZmZpY2llbnQgKGFuZCBjaGVhcGVyKSBmb3IgZGVidWdf bGV2ZWwuIEFsc28gcGxlYXNlIHJlLWNoZWNrIHRoZQo+IGNvbW1pdCBtZXNzYWdlLCB3aGljaCBt ZW50aW9ucyBwYXJraW5nX2xvdDo6TXV0ZXguCgpJbmRlZWQuIEF0b21pY1U4IGlzIG1vcmUgbGln aHQtd2VpZ2h0IGFuZCBzaW1wbGVyIHRoYW4gUndMb2NrLiBjaGFuZ2VkIAphY2NvcmRpbmdseS4K Cj4KPj4gK30KPj4gKwo+PiAraW1wbCBDbG9uZSBmb3IgQ29uZmlnIHsKPj4gKyAgICBmbiBjbG9u ZSgmc2VsZikgLT4gU2VsZiB7Cj4+ICsgICAgICAgIFNlbGYgewo+PiArICAgICAgICAgICAgbm9k ZW5hbWU6IHNlbGYubm9kZW5hbWUuY2xvbmUoKSwKPj4gKyAgICAgICAgICAgIG5vZGVfaXA6IHNl bGYubm9kZV9pcC5jbG9uZSgpLAo+PiArICAgICAgICAgICAgd3d3X2RhdGFfZ2lkOiBzZWxmLnd3 d19kYXRhX2dpZCwKPj4gKyAgICAgICAgICAgIGRlYnVnOiBzZWxmLmRlYnVnLAo+PiArICAgICAg ICAgICAgbG9jYWxfbW9kZTogc2VsZi5sb2NhbF9tb2RlLAo+PiArICAgICAgICAgICAgY2x1c3Rl cl9uYW1lOiBzZWxmLmNsdXN0ZXJfbmFtZS5jbG9uZSgpLAo+PiArICAgICAgICAgICAgZGVidWdf bGV2ZWw6IFJ3TG9jazo6bmV3KCpzZWxmLmRlYnVnX2xldmVsLnJlYWQoKSksCj4+ICsgICAgICAg IH0KPj4gKyAgICB9Cj4+ICt9Cj4+ICsKPj4gK2ltcGwgc3RkOjpmbXQ6OkRlYnVnIGZvciBDb25m aWcgewo+PiArICAgIGZuIGZtdCgmc2VsZiwgZjogJm11dCBzdGQ6OmZtdDo6Rm9ybWF0dGVyPCdf PikgLT4gc3RkOjpmbXQ6OlJlc3VsdCB7Cj4+ICsgICAgICAgIGYuZGVidWdfc3RydWN0KCJDb25m aWciKQo+PiArICAgICAgICAgICAgLmZpZWxkKCJub2RlbmFtZSIsICZzZWxmLm5vZGVuYW1lKQo+ PiArICAgICAgICAgICAgLmZpZWxkKCJub2RlX2lwIiwgJnNlbGYubm9kZV9pcCkKPj4gKyAgICAg ICAgICAgIC5maWVsZCgid3d3X2RhdGFfZ2lkIiwgJnNlbGYud3d3X2RhdGFfZ2lkKQo+PiArICAg ICAgICAgICAgLmZpZWxkKCJkZWJ1ZyIsICZzZWxmLmRlYnVnKQo+PiArICAgICAgICAgICAgLmZp ZWxkKCJsb2NhbF9tb2RlIiwgJnNlbGYubG9jYWxfbW9kZSkKPj4gKyAgICAgICAgICAgIC5maWVs ZCgiY2x1c3Rlcl9uYW1lIiwgJnNlbGYuY2x1c3Rlcl9uYW1lKQo+PiArICAgICAgICAgICAgLmZp ZWxkKCJkZWJ1Z19sZXZlbCIsICYqc2VsZi5kZWJ1Z19sZXZlbC5yZWFkKCkpCj4+ICsgICAgICAg ICAgICAuZmluaXNoKCkKPj4gKyAgICB9Cj4+ICt9Cj4+ICsKPj4gK2ltcGwgQ29uZmlnIHsKPj4g KyAgICBwdWIgZm4gbmV3KAo+PiArICAgICAgICBub2RlbmFtZTogU3RyaW5nLAo+PiArICAgICAg ICBub2RlX2lwOiBTdHJpbmcsCj4+ICsgICAgICAgIHd3d19kYXRhX2dpZDogdTMyLAo+PiArICAg ICAgICBkZWJ1ZzogYm9vbCwKPj4gKyAgICAgICAgbG9jYWxfbW9kZTogYm9vbCwKPj4gKyAgICAg ICAgY2x1c3Rlcl9uYW1lOiBTdHJpbmcsCj4+ICsgICAgKSAtPiBBcmM8U2VsZj4gewo+Cj4gVGhl IGNvbnN0cnVjdG9yIHJldHVybnMgQXJjPENvbmZpZz4KPiBJIHRoaW5rIHdlIGNvdWxkIGtlZXAg bmV3KCkgLT4gU2VsZiwgYW5kIHByb3ZpZGUgY29udmVuaWVuY2UKPiBjb25zdHJ1Y3RvciBzaGFy ZWQoKSAtPiBBcmM8U2VsZj4uCj4gVGhpcyB3b3VsZCBhbGxvdyBsb2NhbCB1c2FnZSAoZS5nLiBm b3IgdGVzdHMpIHdpdGhvdXQgaGVhcCBhbGxvY2F0aW9uCj4gb2YgdGhlIHN0cnVjdAoKQ29uZmln OjpuZXcoKSBpcyBhZGRlZC4gQW5kIHRlc3RzIGFyZSB1c2luZyBpdCBhdXRvbWF0aWNhbGx5LgoK Pgo+PiArICAgICAgICBsZXQgZGVidWdfbGV2ZWwgPSBpZiBkZWJ1ZyB7IDEgfSBlbHNlIHsgMCB9 Owo+Cj4gZGVidWdfbGV2ZWwgaXMgZGVyaXZlZCBmcm9tIGRlYnVnIGF0IGNyZWF0aW9uIHRpbWUs IGJ1dCB0aGVyZWFmdGVyOgo+IHNldF9kZWJ1Z19sZXZlbCgpIGRvZXMgbm90IHVwZGF0ZSBkZWJ1 ZyBhbmQgaXNfZGVidWcoKSB3b3VsZCBjb250aW51ZQo+IHRvIHJlZmxlY3QgdGhlIGluaXRpYWwg ZmxhZywgbm90IHRoZSBlZmZlY3RpdmUgZGVidWcgbGV2ZWwKPiBpc19kZWJ1ZygpIHNob3VsZCBq dXN0IGJlIGEgaGVscGVyIHRoYXQgcmV0dXJucyBzZWxmLmRlYnVnX2xldmVsKCkgPiAwLgo+IFRo ZSBkZWJ1ZyBmaWVsZCBzaG91bGQgcHJvYmFibHkgYmUgcmVtb3ZlZCBlbnRpcmVseS4KCkFoaCwg dGhhbmtzIGZvciBwb2ludGluZyB0aGlzIG91dC4gRml4ZWQuCgo+Cj4+ICsgICAgICAgIEFyYzo6 bmV3KFNlbGYgewo+PiArICAgICAgICAgICAgbm9kZW5hbWUsCj4+ICsgICAgICAgICAgICBub2Rl X2lwLAo+PiArICAgICAgICAgICAgd3d3X2RhdGFfZ2lkLAo+PiArICAgICAgICAgICAgZGVidWcs Cj4+ICsgICAgICAgICAgICBsb2NhbF9tb2RlLAo+PiArICAgICAgICAgICAgY2x1c3Rlcl9uYW1l LAo+PiArICAgICAgICAgICAgZGVidWdfbGV2ZWw6IFJ3TG9jazo6bmV3KGRlYnVnX2xldmVsKSwK Pj4gKyAgICAgICAgfSkKPj4gKyAgICB9Cj4+ICsKPj4gKyAgICBwdWIgZm4gY2x1c3Rlcl9uYW1l KCZzZWxmKSAtPiAmc3RyIHsKPj4gKyAgICAgICAgJnNlbGYuY2x1c3Rlcl9uYW1lCj4+ICsgICAg fQo+PiArCj4+ICsgICAgcHViIGZuIG5vZGVuYW1lKCZzZWxmKSAtPiAmc3RyIHsKPj4gKyAgICAg ICAgJnNlbGYubm9kZW5hbWUKPj4gKyAgICB9Cj4+ICsKPj4gKyAgICBwdWIgZm4gbm9kZV9pcCgm c2VsZikgLT4gJnN0ciB7Cj4+ICsgICAgICAgICZzZWxmLm5vZGVfaXAKPj4gKyAgICB9Cj4+ICsK Pj4gKyAgICBwdWIgZm4gd3d3X2RhdGFfZ2lkKCZzZWxmKSAtPiB1MzIgewo+PiArICAgICAgICBz ZWxmLnd3d19kYXRhX2dpZAo+PiArICAgIH0KPj4gKwo+PiArICAgIHB1YiBmbiBpc19kZWJ1Zygm c2VsZikgLT4gYm9vbCB7Cj4+ICsgICAgICAgIHNlbGYuZGVidWcKPj4gKyAgICB9Cj4+ICsKPj4g KyAgICBwdWIgZm4gaXNfbG9jYWxfbW9kZSgmc2VsZikgLT4gYm9vbCB7Cj4+ICsgICAgICAgIHNl bGYubG9jYWxfbW9kZQo+PiArICAgIH0KPj4gKwo+PiArICAgIC8vLyBHZXQgY3VycmVudCBkZWJ1 ZyBsZXZlbCAoMCA9IG5vcm1hbCwgMSsgPSBkZWJ1ZykKPj4gKyAgICBwdWIgZm4gZGVidWdfbGV2 ZWwoJnNlbGYpIC0+IHU4IHsKPj4gKyAgICAgICAgKnNlbGYuZGVidWdfbGV2ZWwucmVhZCgpCj4+ ICsgICAgfQo+PiArCj4+ICsgICAgLy8vIFNldCBkZWJ1ZyBsZXZlbCAoMCA9IG5vcm1hbCwgMSsg PSBkZWJ1ZykKPj4gKyAgICBwdWIgZm4gc2V0X2RlYnVnX2xldmVsKCZzZWxmLCBsZXZlbDogdTgp IHsKPj4gKyAgICAgICAgKnNlbGYuZGVidWdfbGV2ZWwud3JpdGUoKSA9IGxldmVsOwo+PiArICAg IH0KPgo+IFJpZ2h0IG5vdyBtb3N0IGZpZWxkcyBhcmUgcHViIGJ1dCBhbHNvIGdldHRlcnMgYXJl IGV4cG9zZWQuIFRoaXMgd2lsbAo+IG1ha2UgaXQgaGFyZGVyIHRvIGVuZm9yY2UgaW52YXJpYW50 cy4KPiBJIHdvdWxkIHN1Z2dlc3QgdG8gbWFrZSBmaWVsZHMgcHJpdmF0ZSBhbmQga2VlcCBnZXR0 ZXJzLCBvciBrZWVwIGZpZWxkcwo+IHB1YmxpYyBhbmQgZHJvcCB0aGUgZ2V0dGVycy4KCkluZGVl ZC4gSSBtYWRlIGFsbCBmaWVsZHMgcHJpdmF0ZSBhbmQga2VlcCBnZXR0ZXJzLgoKPgo+PiArfQo+ PiArCj4+ICsjW2NmZyh0ZXN0KV0KPj4gK21vZCB0ZXN0cyB7Cj4+ICsgICAgLy8hIFVuaXQgdGVz dHMgZm9yIENvbmZpZyBzdHJ1Y3QKPj4gKyAgICAvLyEKPj4gKyAgICAvLyEgVGhpcyB0ZXN0IG1v ZHVsZSBwcm92aWRlcyBjb21wcmVoZW5zaXZlIGNvdmVyYWdlIGZvcjoKPj4gKyAgICAvLyEgLSBD b25maWd1cmF0aW9uIGNyZWF0aW9uIGFuZCBpbml0aWFsaXphdGlvbgo+PiArICAgIC8vISAtIEdl dHRlciBtZXRob2RzIGZvciBhbGwgY29uZmlndXJhdGlvbiBmaWVsZHMKPj4gKyAgICAvLyEgLSBE ZWJ1ZyBsZXZlbCBtdXRhdGlvbiBhbmQgdGhyZWFkIHNhZmV0eQo+PiArICAgIC8vISAtIENvbmN1 cnJlbnQgYWNjZXNzIHBhdHRlcm5zIChyZWFkcyBhbmQgd3JpdGVzKQo+PiArICAgIC8vISAtIENs b25lIGluZGVwZW5kZW5jZQo+PiArICAgIC8vISAtIERlYnVnIGZvcm1hdHRpbmcKPj4gKyAgICAv LyEgLSBFZGdlIGNhc2VzIChlbXB0eSBzdHJpbmdzLCBsb25nIHN0cmluZ3MsIHNwZWNpYWwgY2hh cmFjdGVycywgdW5pY29kZSkKPj4gKyAgICAvLyEKPj4gKyAgICAvLyEgIyMgVGhyZWFkIFNhZmV0 eQo+PiArICAgIC8vIQo+PiArICAgIC8vISBUaGUgQ29uZmlnIHN0cnVjdCB1c2VzIGBBcmM8QXRv bWljVTg+YCBmb3IgZGVidWdfbGV2ZWwgdG8gYWxsb3cKPj4gKyAgICAvLyEgc2FmZSBjb25jdXJy ZW50IHJlYWRzIGFuZCB3cml0ZXMuIFRlc3RzIHZlcmlmeToKPj4gKyAgICAvLyEgLSAxMCB0aHJl YWRzIMOXIDEwMCBvcGVyYXRpb25zIChjb25jdXJyZW50IG1vZGlmaWNhdGlvbnMpCj4+ICsgICAg Ly8hIC0gMjAgdGhyZWFkcyDDlyAxMDAwIG9wZXJhdGlvbnMgKGNvbmN1cnJlbnQgcmVhZHMpCj4+ ICsgICAgLy8hCj4+ICsgICAgLy8hICMjIEVkZ2UgQ2FzZXMKPj4gKyAgICAvLyEKPj4gKyAgICAv LyEgVGVzdHMgY292ZXIgdmFyaW91cyBlZGdlIGNhc2VzIGluY2x1ZGluZzoKPj4gKyAgICAvLyEg LSBFbXB0eSBzdHJpbmdzIGZvciBub2RlL2NsdXN0ZXIgbmFtZXMKPj4gKyAgICAvLyEgLSBMb25n IHN0cmluZ3MgKDEwMDArIGNoYXJhY3RlcnMpCj4+ICsgICAgLy8hIC0gU3BlY2lhbCBjaGFyYWN0 ZXJzIGluIHN0cmluZ3MKPj4gKyAgICAvLyEgLSBVbmljb2RlIHN1cHBvcnQgKGVtb2ppLCBub24t QVNDSUkgY2hhcmFjdGVycykKPj4gKwo+PiArICAgIHVzZSBzdXBlcjo6KjsKPj4gKyAgICB1c2Ug c3RkOjp0aHJlYWQ7Cj4+ICsKPj4gKyAgICAvLyA9PT09PSBCYXNpYyBDb25zdHJ1Y3Rpb24gVGVz dHMgPT09PT0KPj4gKwo+PiArICAgICNbdGVzdF0KPj4gKyAgICBmbiB0ZXN0X2NvbmZpZ19jcmVh dGlvbigpIHsKPj4gKyAgICAgICAgbGV0IGNvbmZpZyA9IENvbmZpZzo6bmV3KAo+PiArICAgICAg ICAgICAgIm5vZGUxIi50b19zdHJpbmcoKSwKPj4gKyAgICAgICAgICAgICIxOTIuMTY4LjEuMTAi LnRvX3N0cmluZygpLAo+PiArICAgICAgICAgICAgMzMsCj4+ICsgICAgICAgICAgICBmYWxzZSwK Pj4gKyAgICAgICAgICAgIGZhbHNlLAo+PiArICAgICAgICAgICAgInBteGNmcyIudG9fc3RyaW5n KCksCj4+ICsgICAgICAgICk7Cj4+ICsKPj4gKyAgICAgICAgYXNzZXJ0X2VxIShjb25maWcubm9k ZW5hbWUoKSwgIm5vZGUxIik7Cj4+ICsgICAgICAgIGFzc2VydF9lcSEoY29uZmlnLm5vZGVfaXAo KSwgIjE5Mi4xNjguMS4xMCIpOwo+PiArICAgICAgICBhc3NlcnRfZXEhKGNvbmZpZy53d3dfZGF0 YV9naWQoKSwgMzMpOwo+PiArICAgICAgICBhc3NlcnQhKCFjb25maWcuaXNfZGVidWcoKSk7Cj4+ ICsgICAgICAgIGFzc2VydCEoIWNvbmZpZy5pc19sb2NhbF9tb2RlKCkpOwo+PiArICAgICAgICBh c3NlcnRfZXEhKGNvbmZpZy5jbHVzdGVyX25hbWUoKSwgInBteGNmcyIpOwo+PiArICAgICAgICBh c3NlcnRfZXEhKAo+PiArICAgICAgICAgICAgY29uZmlnLmRlYnVnX2xldmVsKCksCj4+ICsgICAg ICAgICAgICAwLAo+PiArICAgICAgICAgICAgIkRlYnVnIGxldmVsIHNob3VsZCBiZSAwIHdoZW4g ZGVidWcgaXMgZmFsc2UiCj4+ICsgICAgICAgICk7Cj4+ICsgICAgfQo+PiArCj4+ICsgICAgI1t0 ZXN0XQo+PiArICAgIGZuIHRlc3RfY29uZmlnX2NyZWF0aW9uX3dpdGhfZGVidWcoKSB7Cj4+ICsg ICAgICAgIGxldCBjb25maWcgPSBDb25maWc6Om5ldygKPj4gKyAgICAgICAgICAgICJub2RlMiIu dG9fc3RyaW5nKCksCj4+ICsgICAgICAgICAgICAiMTAuMC4wLjUiLnRvX3N0cmluZygpLAo+PiAr ICAgICAgICAgICAgMTAwMCwKPj4gKyAgICAgICAgICAgIHRydWUsCj4+ICsgICAgICAgICAgICBm YWxzZSwKPj4gKyAgICAgICAgICAgICJ0ZXN0LWNsdXN0ZXIiLnRvX3N0cmluZygpLAo+PiArICAg ICAgICApOwo+PiArCj4+ICsgICAgICAgIGFzc2VydCEoY29uZmlnLmlzX2RlYnVnKCkpOwo+PiAr ICAgICAgICBhc3NlcnRfZXEhKAo+PiArICAgICAgICAgICAgY29uZmlnLmRlYnVnX2xldmVsKCks Cj4+ICsgICAgICAgICAgICAxLAo+PiArICAgICAgICAgICAgIkRlYnVnIGxldmVsIHNob3VsZCBi ZSAxIHdoZW4gZGVidWcgaXMgdHJ1ZSIKPj4gKyAgICAgICAgKTsKPj4gKyAgICB9Cj4+ICsKPj4g KyAgICAjW3Rlc3RdCj4+ICsgICAgZm4gdGVzdF9jb25maWdfY3JlYXRpb25fbG9jYWxfbW9kZSgp IHsKPj4gKyAgICAgICAgbGV0IGNvbmZpZyA9IENvbmZpZzo6bmV3KAo+PiArICAgICAgICAgICAg ImxvY2FsaG9zdCIudG9fc3RyaW5nKCksCj4+ICsgICAgICAgICAgICAiMTI3LjAuMC4xIi50b19z dHJpbmcoKSwKPj4gKyAgICAgICAgICAgIDMzLAo+PiArICAgICAgICAgICAgZmFsc2UsCj4+ICsg ICAgICAgICAgICB0cnVlLAo+PiArICAgICAgICAgICAgImxvY2FsIi50b19zdHJpbmcoKSwKPj4g KyAgICAgICAgKTsKPj4gKwo+PiArICAgICAgICBhc3NlcnQhKGNvbmZpZy5pc19sb2NhbF9tb2Rl KCkpOwo+PiArICAgICAgICBhc3NlcnQhKCFjb25maWcuaXNfZGVidWcoKSk7Cj4+ICsgICAgfQo+ PiArCj4+ICsgICAgLy8gPT09PT0gR2V0dGVyIFRlc3RzID09PT09Cj4+ICsKPj4gKyAgICAjW3Rl c3RdCj4+ICsgICAgZm4gdGVzdF9hbGxfZ2V0dGVycygpIHsKPj4gKyAgICAgICAgbGV0IGNvbmZp ZyA9IENvbmZpZzo6bmV3KAo+PiArICAgICAgICAgICAgInRlc3Rub2RlIi50b19zdHJpbmcoKSwK Pj4gKyAgICAgICAgICAgICIxNzIuMTYuMC4xIi50b19zdHJpbmcoKSwKPj4gKyAgICAgICAgICAg IDk5OSwKPj4gKyAgICAgICAgICAgIHRydWUsCj4+ICsgICAgICAgICAgICB0cnVlLAo+PiArICAg ICAgICAgICAgIm15LWNsdXN0ZXIiLnRvX3N0cmluZygpLAo+PiArICAgICAgICApOwo+PiArCj4+ ICsgICAgICAgIC8vIFRlc3QgYWxsIGdldHRlciBtZXRob2RzCj4+ICsgICAgICAgIGFzc2VydF9l cSEoY29uZmlnLm5vZGVuYW1lKCksICJ0ZXN0bm9kZSIpOwo+PiArICAgICAgICBhc3NlcnRfZXEh KGNvbmZpZy5ub2RlX2lwKCksICIxNzIuMTYuMC4xIik7Cj4+ICsgICAgICAgIGFzc2VydF9lcSEo Y29uZmlnLnd3d19kYXRhX2dpZCgpLCA5OTkpOwo+PiArICAgICAgICBhc3NlcnQhKGNvbmZpZy5p c19kZWJ1ZygpKTsKPj4gKyAgICAgICAgYXNzZXJ0IShjb25maWcuaXNfbG9jYWxfbW9kZSgpKTsK Pj4gKyAgICAgICAgYXNzZXJ0X2VxIShjb25maWcuY2x1c3Rlcl9uYW1lKCksICJteS1jbHVzdGVy Iik7Cj4+ICsgICAgICAgIGFzc2VydF9lcSEoY29uZmlnLmRlYnVnX2xldmVsKCksIDEpOwo+PiAr ICAgIH0KPj4gKwo+PiArICAgIC8vID09PT09IERlYnVnIExldmVsIE11dGF0aW9uIFRlc3RzID09 PT09Cj4+ICsKPj4gKyAgICAjW3Rlc3RdCj4+ICsgICAgZm4gdGVzdF9kZWJ1Z19sZXZlbF9tdXRh dGlvbigpIHsKPj4gKyAgICAgICAgbGV0IGNvbmZpZyA9IENvbmZpZzo6bmV3KAo+PiArICAgICAg ICAgICAgIm5vZGUxIi50b19zdHJpbmcoKSwKPj4gKyAgICAgICAgICAgICIxOTIuMTY4LjEuMSIu dG9fc3RyaW5nKCksCj4+ICsgICAgICAgICAgICAzMywKPj4gKyAgICAgICAgICAgIGZhbHNlLAo+ PiArICAgICAgICAgICAgZmFsc2UsCj4+ICsgICAgICAgICAgICAicG14Y2ZzIi50b19zdHJpbmco KSwKPj4gKyAgICAgICAgKTsKPj4gKwo+PiArICAgICAgICBhc3NlcnRfZXEhKGNvbmZpZy5kZWJ1 Z19sZXZlbCgpLCAwKTsKPj4gKwo+PiArICAgICAgICBjb25maWcuc2V0X2RlYnVnX2xldmVsKDEp Owo+PiArICAgICAgICBhc3NlcnRfZXEhKGNvbmZpZy5kZWJ1Z19sZXZlbCgpLCAxKTsKPj4gKwo+ PiArICAgICAgICBjb25maWcuc2V0X2RlYnVnX2xldmVsKDUpOwo+PiArICAgICAgICBhc3NlcnRf ZXEhKGNvbmZpZy5kZWJ1Z19sZXZlbCgpLCA1KTsKPj4gKwo+PiArICAgICAgICBjb25maWcuc2V0 X2RlYnVnX2xldmVsKDApOwo+PiArICAgICAgICBhc3NlcnRfZXEhKGNvbmZpZy5kZWJ1Z19sZXZl bCgpLCAwKTsKPj4gKyAgICB9Cj4+ICsKPj4gKyAgICAjW3Rlc3RdCj4+ICsgICAgZm4gdGVzdF9k ZWJ1Z19sZXZlbF9tYXhfdmFsdWUoKSB7Cj4+ICsgICAgICAgIGxldCBjb25maWcgPSBDb25maWc6 Om5ldygKPj4gKyAgICAgICAgICAgICJub2RlMSIudG9fc3RyaW5nKCksCj4+ICsgICAgICAgICAg ICAiMTkyLjE2OC4xLjEiLnRvX3N0cmluZygpLAo+PiArICAgICAgICAgICAgMzMsCj4+ICsgICAg ICAgICAgICBmYWxzZSwKPj4gKyAgICAgICAgICAgIGZhbHNlLAo+PiArICAgICAgICAgICAgInBt eGNmcyIudG9fc3RyaW5nKCksCj4+ICsgICAgICAgICk7Cj4+ICsKPj4gKyAgICAgICAgY29uZmln LnNldF9kZWJ1Z19sZXZlbCgyNTUpOwo+PiArICAgICAgICBhc3NlcnRfZXEhKGNvbmZpZy5kZWJ1 Z19sZXZlbCgpLCAyNTUpOwo+PiArCj4+ICsgICAgICAgIGNvbmZpZy5zZXRfZGVidWdfbGV2ZWwo MCk7Cj4+ICsgICAgICAgIGFzc2VydF9lcSEoY29uZmlnLmRlYnVnX2xldmVsKCksIDApOwo+PiAr ICAgIH0KPj4gKwo+PiArICAgIC8vID09PT09IFRocmVhZCBTYWZldHkgVGVzdHMgPT09PT0KPj4g Kwo+PiArICAgICNbdGVzdF0KPj4gKyAgICBmbiB0ZXN0X2RlYnVnX2xldmVsX3RocmVhZF9zYWZl dHkoKSB7Cj4+ICsgICAgICAgIGxldCBjb25maWcgPSBDb25maWc6Om5ldygKPj4gKyAgICAgICAg ICAgICJub2RlMSIudG9fc3RyaW5nKCksCj4+ICsgICAgICAgICAgICAiMTkyLjE2OC4xLjEiLnRv X3N0cmluZygpLAo+PiArICAgICAgICAgICAgMzMsCj4+ICsgICAgICAgICAgICBmYWxzZSwKPj4g KyAgICAgICAgICAgIGZhbHNlLAo+PiArICAgICAgICAgICAgInBteGNmcyIudG9fc3RyaW5nKCks Cj4+ICsgICAgICAgICk7Cj4+ICsKPj4gKyAgICAgICAgbGV0IGNvbmZpZ19jbG9uZSA9IEFyYzo6 Y2xvbmUoJmNvbmZpZyk7Cj4+ICsKPj4gKyAgICAgICAgLy8gU3Bhd24gbXVsdGlwbGUgdGhyZWFk cyB0aGF0IGNvbmN1cnJlbnRseSBtb2RpZnkgZGVidWcgbGV2ZWwKPj4gKyAgICAgICAgbGV0IGhh bmRsZXM6IFZlYzxfPiA9ICgwLi4xMCkKPj4gKyAgICAgICAgICAgIC5tYXAofGl8IHsKPj4gKyAg ICAgICAgICAgICAgICBsZXQgY2ZnID0gQXJjOjpjbG9uZSgmY29uZmlnKTsKPj4gKyAgICAgICAg ICAgICAgICB0aHJlYWQ6OnNwYXduKG1vdmUgfHwgewo+PiArICAgICAgICAgICAgICAgICAgICBm b3IgXyBpbiAwLi4xMDAgewo+PiArICAgICAgICAgICAgICAgICAgICAgICAgY2ZnLnNldF9kZWJ1 Z19sZXZlbChpKTsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGxldCBfID0gY2ZnLmRlYnVn X2xldmVsKCk7Cj4+ICsgICAgICAgICAgICAgICAgICAgIH0KPj4gKyAgICAgICAgICAgICAgICB9 KQo+PiArICAgICAgICAgICAgfSkKPj4gKyAgICAgICAgICAgIC5jb2xsZWN0KCk7Cj4+ICsKPj4g KyAgICAgICAgLy8gQWxsIHRocmVhZHMgc2hvdWxkIGNvbXBsZXRlIHdpdGhvdXQgcGFuaWNraW5n Cj4+ICsgICAgICAgIGZvciBoYW5kbGUgaW4gaGFuZGxlcyB7Cj4+ICsgICAgICAgICAgICBoYW5k bGUuam9pbigpLnVud3JhcCgpOwo+PiArICAgICAgICB9Cj4+ICsKPj4gKyAgICAgICAgLy8gRmlu YWwgdmFsdWUgc2hvdWxkIGJlIG9uZSBvZiB0aGUgdmFsdWVzIHNldCBieSB0aHJlYWRzCj4+ICsg ICAgICAgIGxldCBmaW5hbF9sZXZlbCA9IGNvbmZpZ19jbG9uZS5kZWJ1Z19sZXZlbCgpOwo+PiAr ICAgICAgICBhc3NlcnQhKAo+PiArICAgICAgICAgICAgZmluYWxfbGV2ZWwgPCAxMCwKPj4gKyAg ICAgICAgICAgICJEZWJ1ZyBsZXZlbCBzaG91bGQgYmUgPCAxMCwgZ290IHtmaW5hbF9sZXZlbH0i Cj4+ICsgICAgICAgICk7Cj4+ICsgICAgfQo+PiArCj4+ICsgICAgI1t0ZXN0XQo+PiArICAgIGZu IHRlc3RfY29uY3VycmVudF9yZWFkcygpIHsKPj4gKyAgICAgICAgbGV0IGNvbmZpZyA9IENvbmZp Zzo6bmV3KAo+PiArICAgICAgICAgICAgIm5vZGUxIi50b19zdHJpbmcoKSwKPj4gKyAgICAgICAg ICAgICIxOTIuMTY4LjEuMSIudG9fc3RyaW5nKCksCj4+ICsgICAgICAgICAgICAzMywKPj4gKyAg ICAgICAgICAgIHRydWUsCj4+ICsgICAgICAgICAgICBmYWxzZSwKPj4gKyAgICAgICAgICAgICJw bXhjZnMiLnRvX3N0cmluZygpLAo+PiArICAgICAgICApOwo+PiArCj4+ICsgICAgICAgIC8vIFNw YXduIG11bHRpcGxlIHRocmVhZHMgdGhhdCBjb25jdXJyZW50bHkgcmVhZCBjb25maWcKPj4gKyAg ICAgICAgbGV0IGhhbmRsZXM6IFZlYzxfPiA9ICgwLi4yMCkKPj4gKyAgICAgICAgICAgIC5tYXAo fF98IHsKPj4gKyAgICAgICAgICAgICAgICBsZXQgY2ZnID0gQXJjOjpjbG9uZSgmY29uZmlnKTsK Pj4gKyAgICAgICAgICAgICAgICB0aHJlYWQ6OnNwYXduKG1vdmUgfHwgewo+PiArICAgICAgICAg ICAgICAgICAgICBmb3IgXyBpbiAwLi4xMDAwIHsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg IGFzc2VydF9lcSEoY2ZnLm5vZGVuYW1lKCksICJub2RlMSIpOwo+PiArICAgICAgICAgICAgICAg ICAgICAgICAgYXNzZXJ0X2VxIShjZmcubm9kZV9pcCgpLCAiMTkyLjE2OC4xLjEiKTsKPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcSEoY2ZnLnd3d19kYXRhX2dpZCgpLCAzMyk7 Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQhKGNmZy5pc19kZWJ1ZygpKTsKPj4g KyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCEoIWNmZy5pc19sb2NhbF9tb2RlKCkpOwo+ PiArICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxIShjZmcuY2x1c3Rlcl9uYW1lKCks ICJwbXhjZnMiKTsKPj4gKyAgICAgICAgICAgICAgICAgICAgfQo+PiArICAgICAgICAgICAgICAg IH0pCj4+ICsgICAgICAgICAgICB9KQo+PiArICAgICAgICAgICAgLmNvbGxlY3QoKTsKPj4gKwo+ PiArICAgICAgICBmb3IgaGFuZGxlIGluIGhhbmRsZXMgewo+PiArICAgICAgICAgICAgaGFuZGxl LmpvaW4oKS51bndyYXAoKTsKPj4gKyAgICAgICAgfQo+PiArICAgIH0KPj4gKwo+PiArICAgIC8v ID09PT09IENsb25lIFRlc3RzID09PT09Cj4+ICsKPj4gKyAgICAjW3Rlc3RdCj4+ICsgICAgZm4g dGVzdF9jb25maWdfY2xvbmUoKSB7Cj4+ICsgICAgICAgIGxldCBjb25maWcxID0gQ29uZmlnOjpu ZXcoCj4+ICsgICAgICAgICAgICAibm9kZTEiLnRvX3N0cmluZygpLAo+PiArICAgICAgICAgICAg IjE5Mi4xNjguMS4xIi50b19zdHJpbmcoKSwKPj4gKyAgICAgICAgICAgIDMzLAo+PiArICAgICAg ICAgICAgdHJ1ZSwKPj4gKyAgICAgICAgICAgIGZhbHNlLAo+PiArICAgICAgICAgICAgInBteGNm cyIudG9fc3RyaW5nKCksCj4+ICsgICAgICAgICk7Cj4+ICsKPj4gKyAgICAgICAgY29uZmlnMS5z ZXRfZGVidWdfbGV2ZWwoNSk7Cj4+ICsKPj4gKyAgICAgICAgbGV0IGNvbmZpZzIgPSAoKmNvbmZp ZzEpLmNsb25lKCk7Cj4+ICsKPj4gKyAgICAgICAgLy8gQ2xvbmVkIGNvbmZpZyBzaG91bGQgaGF2 ZSBzYW1lIHZhbHVlcwo+PiArICAgICAgICBhc3NlcnRfZXEhKGNvbmZpZzIubm9kZW5hbWUoKSwg Y29uZmlnMS5ub2RlbmFtZSgpKTsKPj4gKyAgICAgICAgYXNzZXJ0X2VxIShjb25maWcyLm5vZGVf aXAoKSwgY29uZmlnMS5ub2RlX2lwKCkpOwo+PiArICAgICAgICBhc3NlcnRfZXEhKGNvbmZpZzIu d3d3X2RhdGFfZ2lkKCksIGNvbmZpZzEud3d3X2RhdGFfZ2lkKCkpOwo+PiArICAgICAgICBhc3Nl cnRfZXEhKGNvbmZpZzIuaXNfZGVidWcoKSwgY29uZmlnMS5pc19kZWJ1ZygpKTsKPj4gKyAgICAg ICAgYXNzZXJ0X2VxIShjb25maWcyLmlzX2xvY2FsX21vZGUoKSwgY29uZmlnMS5pc19sb2NhbF9t b2RlKCkpOwo+PiArICAgICAgICBhc3NlcnRfZXEhKGNvbmZpZzIuY2x1c3Rlcl9uYW1lKCksIGNv bmZpZzEuY2x1c3Rlcl9uYW1lKCkpOwo+PiArICAgICAgICBhc3NlcnRfZXEhKGNvbmZpZzIuZGVi dWdfbGV2ZWwoKSwgNSk7Cj4+ICsKPj4gKyAgICAgICAgLy8gTW9kaWZ5aW5nIG9uZSBzaG91bGQg bm90IGFmZmVjdCB0aGUgb3RoZXIKPj4gKyAgICAgICAgY29uZmlnMi5zZXRfZGVidWdfbGV2ZWwo MTApOwo+PiArICAgICAgICBhc3NlcnRfZXEhKGNvbmZpZzEuZGVidWdfbGV2ZWwoKSwgNSk7Cj4+ ICsgICAgICAgIGFzc2VydF9lcSEoY29uZmlnMi5kZWJ1Z19sZXZlbCgpLCAxMCk7Cj4+ICsgICAg fQo+PiArCj4+ICsgICAgLy8gPT09PT0gRGVidWcgRm9ybWF0dGluZyBUZXN0cyA9PT09PQo+PiAr Cj4+ICsgICAgI1t0ZXN0XQo+PiArICAgIGZuIHRlc3RfZGVidWdfZm9ybWF0KCkgewo+PiArICAg ICAgICBsZXQgY29uZmlnID0gQ29uZmlnOjpuZXcoCj4+ICsgICAgICAgICAgICAibm9kZTEiLnRv X3N0cmluZygpLAo+PiArICAgICAgICAgICAgIjE5Mi4xNjguMS4xIi50b19zdHJpbmcoKSwKPj4g KyAgICAgICAgICAgIDMzLAo+PiArICAgICAgICAgICAgdHJ1ZSwKPj4gKyAgICAgICAgICAgIGZh bHNlLAo+PiArICAgICAgICAgICAgInBteGNmcyIudG9fc3RyaW5nKCksCj4+ICsgICAgICAgICk7 Cj4+ICsKPj4gKyAgICAgICAgbGV0IGRlYnVnX3N0ciA9IGZvcm1hdCEoIntjb25maWc6P30iKTsK Pj4gKwo+PiArICAgICAgICAvLyBDaGVjayB0aGF0IGRlYnVnIG91dHB1dCBjb250YWlucyBhbGwg ZmllbGRzCj4+ICsgICAgICAgIGFzc2VydCEoZGVidWdfc3RyLmNvbnRhaW5zKCJDb25maWciKSk7 Cj4+ICsgICAgICAgIGFzc2VydCEoZGVidWdfc3RyLmNvbnRhaW5zKCJub2RlbmFtZSIpKTsKPj4g KyAgICAgICAgYXNzZXJ0IShkZWJ1Z19zdHIuY29udGFpbnMoIm5vZGUxIikpOwo+PiArICAgICAg ICBhc3NlcnQhKGRlYnVnX3N0ci5jb250YWlucygibm9kZV9pcCIpKTsKPj4gKyAgICAgICAgYXNz ZXJ0IShkZWJ1Z19zdHIuY29udGFpbnMoIjE5Mi4xNjguMS4xIikpOwo+PiArICAgICAgICBhc3Nl cnQhKGRlYnVnX3N0ci5jb250YWlucygid3d3X2RhdGFfZ2lkIikpOwo+PiArICAgICAgICBhc3Nl cnQhKGRlYnVnX3N0ci5jb250YWlucygiMzMiKSk7Cj4+ICsgICAgICAgIGFzc2VydCEoZGVidWdf c3RyLmNvbnRhaW5zKCJkZWJ1ZyIpKTsKPj4gKyAgICAgICAgYXNzZXJ0IShkZWJ1Z19zdHIuY29u dGFpbnMoInRydWUiKSk7Cj4+ICsgICAgICAgIGFzc2VydCEoZGVidWdfc3RyLmNvbnRhaW5zKCJs b2NhbF9tb2RlIikpOwo+PiArICAgICAgICBhc3NlcnQhKGRlYnVnX3N0ci5jb250YWlucygiZmFs c2UiKSk7Cj4+ICsgICAgICAgIGFzc2VydCEoZGVidWdfc3RyLmNvbnRhaW5zKCJjbHVzdGVyX25h bWUiKSk7Cj4+ICsgICAgICAgIGFzc2VydCEoZGVidWdfc3RyLmNvbnRhaW5zKCJwbXhjZnMiKSk7 Cj4+ICsgICAgICAgIGFzc2VydCEoZGVidWdfc3RyLmNvbnRhaW5zKCJkZWJ1Z19sZXZlbCIpKTsK Pj4gKyAgICB9Cj4+ICsKPj4gKyAgICAvLyA9PT09PSBFZGdlIENhc2VzIGFuZCBCb3VuZGFyeSBU ZXN0cyA9PT09PQo+PiArCj4+ICsgICAgI1t0ZXN0XQo+PiArICAgIGZuIHRlc3RfZW1wdHlfc3Ry aW5ncygpIHsKPj4gKyAgICAgICAgbGV0IGNvbmZpZyA9IENvbmZpZzo6bmV3KFN0cmluZzo6bmV3 KCksIFN0cmluZzo6bmV3KCksIDAsIGZhbHNlLCBmYWxzZSwgU3RyaW5nOjpuZXcoKSk7Cj4+ICsK Pj4gKyAgICAgICAgYXNzZXJ0X2VxIShjb25maWcubm9kZW5hbWUoKSwgIiIpOwo+PiArICAgICAg ICBhc3NlcnRfZXEhKGNvbmZpZy5ub2RlX2lwKCksICIiKTsKPj4gKyAgICAgICAgYXNzZXJ0X2Vx IShjb25maWcuY2x1c3Rlcl9uYW1lKCksICIiKTsKPj4gKyAgICAgICAgYXNzZXJ0X2VxIShjb25m aWcud3d3X2RhdGFfZ2lkKCksIDApOwo+PiArICAgIH0KPj4gKwo+PiArICAgICNbdGVzdF0KPj4g KyAgICBmbiB0ZXN0X2xvbmdfc3RyaW5ncygpIHsKPj4gKyAgICAgICAgbGV0IGxvbmdfbmFtZSA9 ICJhIi5yZXBlYXQoMTAwMCk7Cj4+ICsgICAgICAgIGxldCBsb25nX2lwID0gIjE5Mi4xNjguMS4i LnRvX3N0cmluZygpICsgJiIxIi5yZXBlYXQoMTAwKTsKPj4gKyAgICAgICAgbGV0IGxvbmdfY2x1 c3RlciA9ICJjbHVzdGVyLSIudG9fc3RyaW5nKCkgKyAmIngiLnJlcGVhdCg1MDApOwo+PiArCj4+ ICsgICAgICAgIGxldCBjb25maWcgPSBDb25maWc6Om5ldygKPj4gKyAgICAgICAgICAgIGxvbmdf bmFtZS5jbG9uZSgpLAo+PiArICAgICAgICAgICAgbG9uZ19pcC5jbG9uZSgpLAo+PiArICAgICAg ICAgICAgdTMyOjpNQVgsCj4+ICsgICAgICAgICAgICB0cnVlLAo+PiArICAgICAgICAgICAgdHJ1 ZSwKPj4gKyAgICAgICAgICAgIGxvbmdfY2x1c3Rlci5jbG9uZSgpLAo+PiArICAgICAgICApOwo+ PiArCj4+ICsgICAgICAgIGFzc2VydF9lcSEoY29uZmlnLm5vZGVuYW1lKCksIGxvbmdfbmFtZSk7 Cj4+ICsgICAgICAgIGFzc2VydF9lcSEoY29uZmlnLm5vZGVfaXAoKSwgbG9uZ19pcCk7Cj4+ICsg ICAgICAgIGFzc2VydF9lcSEoY29uZmlnLmNsdXN0ZXJfbmFtZSgpLCBsb25nX2NsdXN0ZXIpOwo+ PiArICAgICAgICBhc3NlcnRfZXEhKGNvbmZpZy53d3dfZGF0YV9naWQoKSwgdTMyOjpNQVgpOwo+ PiArICAgIH0KPj4gKwo+PiArICAgICNbdGVzdF0KPj4gKyAgICBmbiB0ZXN0X3NwZWNpYWxfY2hh cmFjdGVyc19pbl9zdHJpbmdzKCkgewo+PiArICAgICAgICBsZXQgY29uZmlnID0gQ29uZmlnOjpu ZXcoCj4+ICsgICAgICAgICAgICAibm9kZS0xX3Rlc3QubG9jYWwiLnRvX3N0cmluZygpLAo+PiAr ICAgICAgICAgICAgIjE5Mi4xNjguMS4xMDo4MDA2Ii50b19zdHJpbmcoKSwKPj4gKyAgICAgICAg ICAgIDMzLAo+PiArICAgICAgICAgICAgZmFsc2UsCj4+ICsgICAgICAgICAgICBmYWxzZSwKPj4g KyAgICAgICAgICAgICJteS1jbHVzdGVyX3YyLjAiLnRvX3N0cmluZygpLAo+PiArICAgICAgICAp Owo+PiArCj4+ICsgICAgICAgIGFzc2VydF9lcSEoY29uZmlnLm5vZGVuYW1lKCksICJub2RlLTFf dGVzdC5sb2NhbCIpOwo+PiArICAgICAgICBhc3NlcnRfZXEhKGNvbmZpZy5ub2RlX2lwKCksICIx OTIuMTY4LjEuMTA6ODAwNiIpOwo+PiArICAgICAgICBhc3NlcnRfZXEhKGNvbmZpZy5jbHVzdGVy X25hbWUoKSwgIm15LWNsdXN0ZXJfdjIuMCIpOwo+PiArICAgIH0KPj4gKwo+PiArICAgICNbdGVz dF0KPj4gKyAgICBmbiB0ZXN0X3VuaWNvZGVfaW5fc3RyaW5ncygpIHsKPj4gKyAgICAgICAgbGV0 IGNvbmZpZyA9IENvbmZpZzo6bmV3KAo+PiArICAgICAgICAgICAgIuODjuODvOODiTEiLnRvX3N0 cmluZygpLAo+PiArICAgICAgICAgICAgIjo6MSIudG9fc3RyaW5nKCksCj4+ICsgICAgICAgICAg ICAzMywKPj4gKyAgICAgICAgICAgIGZhbHNlLAo+PiArICAgICAgICAgICAgZmFsc2UsCj4+ICsg ICAgICAgICAgICAi6ZuG576kIi50b19zdHJpbmcoKSwKPj4gKyAgICAgICAgKTsKPj4gKwo+PiAr ICAgICAgICBhc3NlcnRfZXEhKGNvbmZpZy5ub2RlbmFtZSgpLCAi44OO44O844OJMSIpOwo+PiAr ICAgICAgICBhc3NlcnRfZXEhKGNvbmZpZy5ub2RlX2lwKCksICI6OjEiKTsKPj4gKyAgICAgICAg YXNzZXJ0X2VxIShjb25maWcuY2x1c3Rlcl9uYW1lKCksICLpm4bnvqQiKTsKPj4gKyAgICB9Cj4+ ICt9CgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCnB2 ZS1kZXZlbCBtYWlsaW5nIGxpc3QKcHZlLWRldmVsQGxpc3RzLnByb3htb3guY29tCmh0dHBzOi8v bGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3B2ZS1kZXZlbAo=