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 034621FF16F for ; Tue, 2 Sep 2025 17:33:23 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id B2D8818A38; Tue, 2 Sep 2025 17:33:36 +0200 (CEST) Date: Tue, 2 Sep 2025 17:33:00 +0200 From: Wolfgang Bumiller To: Dominik Csapak Message-ID: <5zrkhdsc4sw2jsqlqrn7ijbj2oyav6bcpa7f42ybawwrv6zu4a@kjhewrghg7xa> References: <20250828131832.4058422-1-d.csapak@proxmox.com> <20250828131832.4058422-3-d.csapak@proxmox.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20250828131832.4058422-3-d.csapak@proxmox.com> X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1756827167062 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.073 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. [gitlab.com, elastic.co, proxmox.com, lib.rs] Subject: Re: [pdm-devel] [PATCH datacenter-manager v4 02/10] lib: add pdm-search crate X-BeenThere: pdm-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Datacenter Manager development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox Datacenter Manager development discussion Cc: pdm-devel@lists.proxmox.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pdm-devel-bounces@lists.proxmox.com Sender: "pdm-devel" T24gVGh1LCBBdWcgMjgsIDIwMjUgYXQgMDM6MTY6MDFQTSArMDIwMCwgRG9taW5payBDc2FwYWsg d3JvdGU6Cj4gSW50cm9kdWNlIGEgbmV3IGNyZWF0ZSBmb3Igc2VhcmNoICYgZmlsdGVyIHJlbGF0 ZWQgY29kZS4gSXQgY3VycmVudGx5Cj4gaW5jbHVkZXMgYmFzaWMgcGFyc2luZyAmIHRlc3Rpbmcg b2Ygc2VhcmNoIHRlcm1zLiBJbnRlbmRlZCB0byBiZSB1c2VkIG9uCj4gc29tZSBBUEkgY2FsbHMg dGhhdCBhbGxvdyBmb3IgbW9yZSBjb21wbGV4IGZpbHRlcnMsIHN1Y2ggYXMgdGhlCj4gcmVzb3Vy Y2VzIEFQSS4KPiAKPiBDb250YWlucyBhIGBTZWFyY2hUZXJtYCBhbmQgYSBgU2VhcmNoYCBzdHJ1 Y3QuIFRoZSBmb3JtZXIgcmVwcmVzZW50cwo+IGEgc2luZ2xlIHRlcm0gdG8gc2VhcmNoIGZvciwg d2l0aCBhbiBvcHRpb25hbCBjYXRlZ29yeSBhbmQgaWYgaXQncwo+IG9wdGlvbmFsIG9yIG5vdC4g VGhlIGxhdHRlciByZXByZXNlbnRzIGEgZnVsbCBzZWFyY2ggd2l0aCBtdWx0aXBsZQo+IHRlcm1z Lgo+IAo+IFNob3J0IHN5bnRheCBzdW1tYXJ5Ogo+ICdzb21ldGV4dCcgIDogbm9ybWFsIHNlYXJj aCB0ZXJtCj4gJytzb21ldGV4dCcgOiByZXF1aXJlZCBzZWFyY2ggdGVybQo+ICdjYXQ6dGV4dCcg IDogbG9va3MgZm9yICd0ZXh0JyBpbiB0aGUgY2F0ZWdvcnkgJ2NhdCcKPiAKPiByZXF1aXJlZCB0 ZXJtcyBoYXZlIHRvIGV4aXN0IGluIHRoZSByZXN1bHRpbmcgbWF0Y2gsIHdoaWxlIG9wdGlvbmFs Cj4gb25lcyBhcmUgT1InZCAoc28gYXQgbGVhc3Qgb25lIG9wdGlvbmFsIG1hdGNoIG11c3QgZXhp c3QpCgpeIFdvdWxkIGJlIGdvb2QgdG8gY2xhcmlmeSB0aGF0IChhbmQgZml4IGlmIG5vdCkgaWYg Km5vKiBvcHRpb25hbCBvbmUKbWF0Y2hlcyAqYnV0KiB0aGVyZSAqYXJlKiBtYXRjaGluZyByZXF1 aXJlZCBvbmVzLCBpdCdzIGFsc28gYSBwb3NpdGl2ZQptYXRjaC4uLgoKPiAKPiBUaGlzIGlzIGxv b3NlbHkgaW5zcGlyZWQgYnkgdmFyaW91cyBzZWFyY2ggc3ludGF4ZXMsIGUuZy4gdGhlIG9uZSBm cm9tCj4gZ2l0bGFiWzBdIG9yIHF1ZXJ5LWRzbCBmcm9tIGVsYXN0aWNbMV0KPiAKPiBbMV0gaHR0 cHM6Ly9kb2NzLmdpdGxhYi5jb20vdXNlci9zZWFyY2gvYWR2YW5jZWRfc2VhcmNoLwo+IFsyXSBo dHRwczovL3d3dy5lbGFzdGljLmNvL2RvY3MvcmVmZXJlbmNlL3F1ZXJ5LWxhbmd1YWdlcy9xdWVy eS1kc2wvcXVlcnktZHNsLXNpbXBsZS1xdWVyeS1zdHJpbmctcXVlcnkKPiAKPiBTaWduZWQtb2Zm LWJ5OiBEb21pbmlrIENzYXBhayA8ZC5jc2FwYWtAcHJveG1veC5jb20+Cj4gLS0tCj4gY2hhbmdl cyBmcm9tIHYzOgo+ICogYWRkIG1pc3NpbmcgZG9jIGNvbW1lbnRzCj4gKiBtb3JlIHRlc3RzCj4g Cj4gIENhcmdvLnRvbWwgICAgICAgICAgICAgICAgfCAgIDIgKwo+ICBsaWIvcGRtLXNlYXJjaC9D YXJnby50b21sIHwgIDEyICsrCj4gIGxpYi9wZG0tc2VhcmNoL3NyYy9saWIucnMgfCAzMzkgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgMyBmaWxlcyBjaGFuZ2VkLCAz NTMgaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3BkbS1zZWFyY2gvQ2Fy Z28udG9tbAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3BkbS1zZWFyY2gvc3JjL2xpYi5ycwo+ IAo+IGRpZmYgLS1naXQgYS9DYXJnby50b21sIGIvQ2FyZ28udG9tbAo+IGluZGV4IGYwNzczM2Qu LmFlMjgxNmEgMTAwNjQ0Cj4gLS0tIGEvQ2FyZ28udG9tbAo+ICsrKyBiL0NhcmdvLnRvbWwKPiBA QCAtMTksNiArMTksNyBAQCBtZW1iZXJzID0gWwo+ICAgICAgImxpYi9wZG0tYXBpLXR5cGVzIiwK PiAgICAgICJsaWIvcGRtLWNsaWVudCIsCj4gICAgICAibGliL3BkbS1jb25maWciLAo+ICsgICAg ImxpYi9wZG0tc2VhcmNoIiwKPiAgICAgICJsaWIvcGRtLXVpLXNoYXJlZCIsCj4gIAo+ICAgICAg ImNsaS9jbGllbnQiLAo+IEBAIC04Niw2ICs4Nyw3IEBAIHBkbS1hcGktdHlwZXMgPSB7IHBhdGgg PSAibGliL3BkbS1hcGktdHlwZXMiIH0KPiAgcGRtLWJ1aWxkY2ZnID0geyBwYXRoID0gImxpYi9w ZG0tYnVpbGRjZmciIH0KPiAgcGRtLWNvbmZpZyA9IHsgcGF0aCA9ICJsaWIvcGRtLWNvbmZpZyIg fQo+ICBwZG0tY2xpZW50ID0geyB2ZXJzaW9uID0gIjAuMiIsIHBhdGggPSAibGliL3BkbS1jbGll bnQiIH0KPiArcGRtLXNlYXJjaCA9IHsgdmVyc2lvbiA9ICIwLjIiLCBwYXRoID0gImxpYi9wZG0t c2VhcmNoIiB9Cj4gIHBkbS11aS1zaGFyZWQgPSB7IHZlcnNpb24gPSAiMC4yIiwgcGF0aCA9ICJs aWIvcGRtLXVpLXNoYXJlZCIgfQo+ICBwcm94bW94LWZpZG8yID0geyBwYXRoID0gImNsaS9wcm94 bW94LWZpZG8yIiB9Cj4gIAo+IGRpZmYgLS1naXQgYS9saWIvcGRtLXNlYXJjaC9DYXJnby50b21s IGIvbGliL3BkbS1zZWFyY2gvQ2FyZ28udG9tbAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5k ZXggMDAwMDAwMC4uNWY1MWU3NQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9saWIvcGRtLXNlYXJj aC9DYXJnby50b21sCj4gQEAgLTAsMCArMSwxMiBAQAo+ICtbcGFja2FnZV0KPiArbmFtZSA9ICJw ZG0tc2VhcmNoIgo+ICtkZXNjcmlwdGlvbiA9ICJQcm94bW94IERhdGFjZW50ZXIgTWFuYWdlciBz aGFyZWQgdWkgbW9kdWxlcyIKPiAraG9tZXBhZ2UgPSAiaHR0cHM6Ly93d3cucHJveG1veC5jb20i Cj4gKwo+ICt2ZXJzaW9uLndvcmtzcGFjZSA9IHRydWUKPiArZWRpdGlvbi53b3Jrc3BhY2UgPSB0 cnVlCj4gK2xpY2Vuc2Uud29ya3NwYWNlID0gdHJ1ZQo+ICtyZXBvc2l0b3J5LndvcmtzcGFjZSA9 IHRydWUKPiArCj4gK1tkZXBlbmRlbmNpZXNdCj4gK2FueWhvdy53b3Jrc3BhY2UgPSB0cnVlCj4g ZGlmZiAtLWdpdCBhL2xpYi9wZG0tc2VhcmNoL3NyYy9saWIucnMgYi9saWIvcGRtLXNlYXJjaC9z cmMvbGliLnJzCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi40ODU0MTY2 Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYi9wZG0tc2VhcmNoL3NyYy9saWIucnMKPiBAQCAt MCwwICsxLDMzOSBAQAo+ICsvLyEgQWJzdHJhY3Rpb24gb3ZlciBhIFtgU2VhcmNoYF0gdGhhdCBj b250YWlucyBtdWx0aXBsZSBbYFNlYXJjaFRlcm1gXXMuCj4gKy8vIQo+ICsvLyEgUHJvdmlkZXMg bWV0aG9kcyB0byBmaWx0ZXIgYW4gaXRlbSBvdmVyIGEgY29tYmluYXRpb24gb2Ygc3VjaCB0ZXJt cyBhbmQKPiArLy8hIGNvbnN0cnVjdCB0aGVtIGZyb20gdGV4dCwgYW5kIHNlcmlhbGl6ZSB0aGVt IGJhY2sgdG8gdGV4dC4KPiArdXNlIHN0ZDo6c3RyOjpGcm9tU3RyOwoK4oaRIHlvdSBuZXZlciB1 c2UgYW55IG9mIGl0cyBtZXRob2RzLCBmb3IgdGhlIHNpbmdsZSB0cmFpdCBpbXBsZW1lbnRhdGlv bgppdCdzIGZpbmUgdG8ganVzdCBgaW1wbCBzdGQ6OnN0cjo6RnJvbVN0cmAgYmVsb3cKCk9UT0gg eW91IGRvIGltcGxlbWVudCBgRGlzcGxheWAgdHdpY2Ugd2l0aG91dCBpbXBvcnRpbmcgaXQgKHdo aWNoIGlzCmZpbmUsIGRvbid0IGJ1dCBpbXBvcnRpbmcganVzdCBgc3RkOjpmbXRgIHdpbGwgc2hv cnRlbiBpdCBhbGwuLi4pCgoKPiArCj4gK3VzZSBhbnlob3c6OmJhaWw7Cj4gKwo+ICsjW2Rlcml2 ZShDbG9uZSldCj4gK3B1YiBzdHJ1Y3QgU2VhcmNoIHsKPiArICAgIHJlcXVpcmVkX3Rlcm1zOiBW ZWM8U2VhcmNoVGVybT4sCj4gKyAgICBvcHRpb25hbF90ZXJtczogVmVjPFNlYXJjaFRlcm0+LAoK 4oaRIEluIHRoZW9yeSAtIGlzIHBhcnRpdGlvbmluZyB0aGVtIHZlcnkgdXNlZnVsLCBvciB3b3Vs ZCBpdCBiZSBhIGJldHRlcgpVWCBpZiB3ZSBrZXB0IHRoZW0gaW4gYSBzaW5nbGUgdmVjIHN1Y2gg dGhhdCBgLnBhcnNlKCkudG9fc3RyaW5nKClgCmRvZXNuJ3QgcmVvcmRlciB0aGVtPwoKPiArfQo+ ICsKPiAraW1wbCBEZWZhdWx0IGZvciBTZWFyY2ggewoKQSBkZXJpdmUgc2hvdWxkIHdvcmsgaGVy ZQoKPiArICAgIGZuIGRlZmF1bHQoKSAtPiBTZWxmIHsKPiArICAgICAgICBTZWxmOjpuZXcoKQo+ ICsgICAgfQo+ICt9Cj4gKwo+ICtpbXBsIEZyb21JdGVyYXRvcjxTZWFyY2hUZXJtPiBmb3IgU2Vh cmNoIHsKPiArICAgIGZuIGZyb21faXRlcjxUOiBJbnRvSXRlcmF0b3I8SXRlbSA9IFNlYXJjaFRl cm0+PihpdGVyOiBUKSAtPiBTZWxmIHsKPiArICAgICAgICBsZXQgKG9wdGlvbmFsX3Rlcm1zLCBy ZXF1aXJlZF90ZXJtcykgPSBpdGVyLmludG9faXRlcigpLnBhcnRpdGlvbih8dGVybXwgdGVybS5v cHRpb25hbCk7Cj4gKwo+ICsgICAgICAgIFNlbGYgewo+ICsgICAgICAgICAgICByZXF1aXJlZF90 ZXJtcywKPiArICAgICAgICAgICAgb3B0aW9uYWxfdGVybXMsCj4gKyAgICAgICAgfQo+ICsgICAg fQo+ICt9Cj4gKwo+ICtpbXBsPFM6IEFzUmVmPHN0cj4+IEZyb208Uz4gZm9yIFNlYXJjaCB7Cj4g KyAgICBmbiBmcm9tKHZhbHVlOiBTKSAtPiBTZWxmIHsKPiArICAgICAgICB2YWx1ZQo+ICsgICAg ICAgICAgICAuYXNfcmVmKCkKPiArICAgICAgICAgICAgLnNwbGl0X3doaXRlc3BhY2UoKQo+ICsg ICAgICAgICAgICAuZmlsdGVyX21hcCh8dGVybXwgdGVybS5wYXJzZSgpLm9rKCkpCgpNYXliZSBh ZGQgYSBub3RlIGhlcmUgd2h5IHdlIGRvIHRoaXMsIGFzIHRoaXMgaXMgcXVpdGUgcGFpbmZ1bCB0 byByZWFkLgpXZSB0aHJvdyBhd2F5IGVycm9ycyBiZWNhdXNlIHdlIGV4cGVjdCB1c2VycyB0byBw cm9kdWNlIHRoZW0/IDstKQoKPiArICAgICAgICAgICAgLmNvbGxlY3QoKQo+ICsgICAgfQo+ICt9 Cj4gKwo+ICtpbXBsIFNlYXJjaCB7Cj4gKyAgICAvLy8gQ3JlYXRlIGEgbmV3IGVtcHR5IFtgU2Vh cmNoYF0KPiArICAgIHB1YiBmbiBuZXcoKSAtPiBTZWxmIHsKPiArICAgICAgICBTZWxmOjp3aXRo X3Rlcm1zKFZlYzo6bmV3KCkpCj4gKyAgICB9Cj4gKwo+ICsgICAgLy8vIFJldHVybnMgdHJ1ZSBp ZiBubyBbYFNlYXJjaFRlcm1gXSBleGlzdAo+ICsgICAgcHViIGZuIGlzX2VtcHR5KCZzZWxmKSAt PiBib29sIHsKPiArICAgICAgICBzZWxmLnJlcXVpcmVkX3Rlcm1zLmlzX2VtcHR5KCkgJiYgc2Vs Zi5vcHRpb25hbF90ZXJtcy5pc19lbXB0eSgpCj4gKyAgICB9Cj4gKwo+ICsgICAgLy8vIENyZWF0 ZSBhIG5ldyBbYFNlYXJjaGBdIHdpdGggdGhlIGdpdmVuIFtgU2VhcmNoVGVybWBdcwo+ICsgICAg cHViIGZuIHdpdGhfdGVybXModGVybXM6IFZlYzxTZWFyY2hUZXJtPikgLT4gU2VsZiB7CgooClNp bmNlIHdlIGFscmVhZHkgaGF2ZSBgRnJvbUl0ZXJhdG9yYCwgdGhpcyBjb3VsZCBiZQoKICAgIHB1 YiBmbiB3aXRoX3Rlcm1zPEk+KHRlcm1zOiBJKSAtPiBTZWxmCiAgICB3aGVyZQogICAgICAgIEk6 IEludG9JdGVyYXRvcjxJdGVtID0gU2VhcmNoVGVybT47CikKCj4gKyAgICAgICAgdGVybXMuaW50 b19pdGVyKCkuY29sbGVjdCgpCj4gKyAgICB9Cj4gKwo+ICsgICAgLy8vIFRlc3QgaWYgdGhlIGdp dmVuIGBGbigmU2VhcmNoVGVybSkgLT4gYm9vbGAgZm9yIGFsbCBbYFNlYXJjaFRlcm1gXSBjb25m aWd1cmVkIG1hdGNoZXMKPiArICAgIC8vLwo+ICsgICAgLy8vIFJldHVybnMgdHJ1ZSBpZiBpdCBt YXRjaGVzIGNvbnNpZGVyaW5nIHRoZSBjb25zdHJhaW50czoKPiArICAgIC8vLyBpZiB0aGVyZSBh cmUgbm8gZmlsdGVycywgcmV0dXJucyB0cnVlCj4gKyAgICBwdWIgZm4gbWF0Y2hlczxGOiBGbigm U2VhcmNoVGVybSkgLT4gYm9vbD4oJnNlbGYsIG1hdGNoZXM6IEYpIC0+IGJvb2wgewo+ICsgICAg ICAgIGlmIHNlbGYuaXNfZW1wdHkoKSB7Cj4gKyAgICAgICAgICAgIHJldHVybiB0cnVlOwo+ICsg ICAgICAgIH0KPiArCj4gKyAgICAgICAgaWYgc2VsZi5yZXF1aXJlZF90ZXJtcy5pdGVyKCkubWFw KCZtYXRjaGVzKS5hbnkofGZ8ICFmKSB7Cj4gKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKPiAr ICAgICAgICB9Cj4gKwo+ICsgICAgICAgIGlmICFzZWxmLm9wdGlvbmFsX3Rlcm1zLmlzX2VtcHR5 KCkgJiYgc2VsZi5vcHRpb25hbF90ZXJtcy5pdGVyKCkubWFwKCZtYXRjaGVzKS5hbGwofGZ8ICFm KSB7Cj4gKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKPiArICAgICAgICB9Cj4gKwo+ICsgICAg ICAgIHRydWUKPiArICAgIH0KPiArCj4gKyAgICAvLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjb21i aW5hdGlvbiBvZiBbYFNlYXJjaFRlcm1gXXMgcmVxdWlyZSB0aGF0IHRoaXMgY2F0ZWdvcnkgdmFs dWUgbXVzdCBiZQo+ICsgICAgLy8vIHRydWUuIFVzZWZ1bCB0byBmaW5kIG91dCBpZiBzb21lIGNv bmRpdGlvbiBpcyByZXF1aXJlZCAoZS5nLiB0eXBlID09ICdyZW1vdGUnKQo+ICsgICAgcHViIGZu IGNhdGVnb3J5X3ZhbHVlX3JlcXVpcmVkKCZzZWxmLCBjYXRlZ29yeTogJnN0ciwgdmFsdWU6ICZz dHIpIC0+IGJvb2wgewo+ICsgICAgICAgIGZvciB0ZXJtIGluICZzZWxmLnJlcXVpcmVkX3Rlcm1z IHsKPiArICAgICAgICAgICAgaWYgdGVybS5jYXRlZ29yeS5hc19kZXJlZigpID09IFNvbWUoY2F0 ZWdvcnkpICYmIHZhbHVlLmNvbnRhaW5zKCZ0ZXJtLnZhbHVlKSB7CgpXaHkgZG9lcyB0aGlzIHVz ZSBgLmNvbnRhaW5zKClgIGJ1dCB0aGUgbG9vcCBvdmVyIG9wdGlvbmFsIG9uZXMgdXNlcwpgPT1g PwoKPiArICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwo+ICsgICAgICAgICAgICB9Cj4gKyAg ICAgICAgfQo+ICsKPiArICAgICAgICBsZXQgbXV0IG9wdGlvbmFsX2NvdW50ID0gMDsKPiArCj4g KyAgICAgICAgZm9yIHRlcm0gaW4gJnNlbGYub3B0aW9uYWxfdGVybXMgewo+ICsgICAgICAgICAg ICBpZiB0ZXJtLmNhdGVnb3J5LmFzX2RlcmVmKCkgPT0gU29tZShjYXRlZ29yeSkgJiYgdGVybS52 YWx1ZSA9PSB2YWx1ZSB7Cj4gKyAgICAgICAgICAgICAgICBvcHRpb25hbF9jb3VudCArPSAxOwo+ ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICBzZWxmLnJlcXVpcmVk X3Rlcm1zLmlzX2VtcHR5KCkKPiArICAgICAgICAgICAgJiYgc2VsZi5vcHRpb25hbF90ZXJtcy5s ZW4oKSA9PSBvcHRpb25hbF9jb3VudAo+ICsgICAgICAgICAgICAmJiBvcHRpb25hbF9jb3VudCA+ IDAKPiArICAgIH0KPiArfQo+ICsKPiAraW1wbCBzdGQ6OmZtdDo6RGlzcGxheSBmb3IgU2VhcmNo IHsKPiArICAgIGZuIGZtdCgmc2VsZiwgZjogJm11dCBzdGQ6OmZtdDo6Rm9ybWF0dGVyPCdfPikg LT4gc3RkOjpmbXQ6OlJlc3VsdCB7Cj4gKyAgICAgICAgZm9yIChjb3VudCwgdGVybSkgaW4gc2Vs Zi5yZXF1aXJlZF90ZXJtcy5pdGVyKCkuZW51bWVyYXRlKCkgewo+ICsgICAgICAgICAgICBpZiBj b3VudCAhPSAwIHsKPiArICAgICAgICAgICAgICAgIHdyaXRlIShmLCAiICIpPzsKPiArICAgICAg ICAgICAgfQo+ICsKPiArICAgICAgICAgICAgd3JpdGUhKGYsICJ7dGVybX0iKT87Cj4gKyAgICAg ICAgfQoKcGVyc29uYWwgb3BpbmlvbjogZW51bWVyYXRlKCkgdG8gb25seSBoYW5kbGUgdGhlIGZp cnN0IGVsZW1lbnQKZGlmZmVyZW50bHkgc2VlbXMgYSBiaXQgbXVjaCwgaWYgeW91IGNvbnNpZGVy IHRoYXQgaXQga2VlcHMgYSBjb3VudGVyLAp5b3UgY291bGQga2VlcCBhICJzZXBhcmF0b3IiIGlu c3RlYWQgd2hpY2ggeW91IGp1c3QgdXBkYXRlIG9uY2U6CgogICAgbGV0IG11dCBzZXAgPSAiIjsK ICAgIGZvciB0ZXJtIGluICZzZWxmLnJlcXVpcmVkX3Rlcm1zIHsKICAgICAgICB3cml0ZSEoZiwg IntzZXB9e3Rlcm19Iik/OwogICAgICAgIHNlcCA9ICIgIjsKICAgIH0KCj4gKwo+ICsgICAgICAg IGlmICFzZWxmLnJlcXVpcmVkX3Rlcm1zLmlzX2VtcHR5KCkgJiYgIXNlbGYub3B0aW9uYWxfdGVy bXMuaXNfZW1wdHkoKSB7Cj4gKyAgICAgICAgICAgIHdyaXRlIShmLCAiICIpPzsKPiArICAgICAg ICB9CgrihpEgVGhpcyBjb3VsZCB0aGVuIGJlIHNraXBwZWQgZW50aXJlbHkgYW5kIHdlIGNhbiBy ZXVzZSBgc2VwYCBpbnNpZGUgdGhlCmxvd2VyIGxvb3AgdGhlIHNhbWUgd2F5IC0gaWYgbm8gcHJl dmlvdXMgdGV4dCB3YXMgdGhlcmUsIHRoZSBmaXJzdAplbGVtZW50IHdpbGwgc3RpbGwgYmUgdXNp bmcgYW4gZW1wdHkgc3RyaW5nIGZvciBgc2VwYCBiZWZvcmUgdXBkYXRpbmcgaXQKdG8gYmUgYCIg ImAgZm9yIHRoZSByZW1haW5pbmcgZWxlbWVudHMuLi4KClRoZW4gdGhlIGVudGlyZSBpbXBsZW1l bnRhdGlvbiBpcyBqdXN0OgogICAgbGV0IG11dCBzZXAgPSAiIjsKICAgIGZvciB0ZXJtIGluICZz ZWxmLnJlcXVpcmVkX3Rlcm1zIHsKICAgICAgICB3cml0ZSEoZiwgIntzZXB9e3Rlcm19Iik/Owog ICAgICAgIHNlcCA9ICIgIjsKICAgIH0KICAgIGZvciB0ZXJtIGluICZzZWxmLm9wdGlvbmFsX3Rl cm1zIHsKICAgICAgICB3cml0ZSEoZiwgIntzZXB9e3Rlcm19Iik/OwogICAgICAgIHNlcCA9ICIg IjsKICAgIH0KCm9mIGlmIHlvdSdyZSBmZWVsaW5nIGZhbmN5OgoKICAgIGxldCBtdXQgc2VwID0g IiI7CiAgICBmb3IgdGVybSBpbiBzZWxmLnJlcXVpcmVkX3Rlcm1zLml0ZXIoKS5jaGFpbihzZWxm Lm9wdGlvbmFsX3Rlcm1zLml0ZXIoKSkgewogICAgICAgIHdyaXRlIShmLCAie3NlcH17dGVybX0i KT87CiAgICAgICAgc2VwID0gIiAiOwogICAgfQoKPiArCj4gKyAgICAgICAgZm9yIChjb3VudCwg dGVybSkgaW4gc2VsZi5vcHRpb25hbF90ZXJtcy5pdGVyKCkuZW51bWVyYXRlKCkgewo+ICsgICAg ICAgICAgICBpZiBjb3VudCAhPSAwIHsKPiArICAgICAgICAgICAgICAgIHdyaXRlIShmLCAiICIp PzsKPiArICAgICAgICAgICAgfQo+ICsKPiArICAgICAgICAgICAgd3JpdGUhKGYsICJ7dGVybX0i KT87Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICBPaygoKSkKPiArICAgIH0KPiArfQo+ICsK PiArI1tkZXJpdmUoRGVidWcsIENsb25lLCBQYXJ0aWFsRXEpXQo+ICtwdWIgc3RydWN0IFNlYXJj aFRlcm0gewo+ICsgICAgb3B0aW9uYWw6IGJvb2wsCj4gKyAgICBwdWIgdmFsdWU6IFN0cmluZywK PiArICAgIHB1YiBjYXRlZ29yeTogT3B0aW9uPFN0cmluZz4sCj4gK30KPiArCj4gK2ltcGwgU2Vh cmNoVGVybSB7Cj4gKyAgICAvLy8gQ3JlYXRlcyBhIG5ldyBbYFNlYXJjaFRlcm1gXS4KPiArICAg IHB1YiBmbiBuZXc8UzogSW50bzxTdHJpbmc+Pih0ZXJtOiBTKSAtPiBTZWxmIHsKCuKGkSB1c2Ug YEludG88U3RyaW5nPmAsIGBUb1N0cmluZ2Agd2lsbCBjYXVzZSBhbiB1bm5lY2Vzc2FyeSBjbG9u ZSB3aGVuCnBhc3NpbmcgYW4gYWxyZWFkeSBvd25lZCBgU3RyaW5nYCBhcyBpdCBpcyBpbXBsZW1l bnRlZCB2aWEgYERpc3BsYXlgLgoKPiArICAgICAgICBTZWxmIHsKPiArICAgICAgICAgICAgdmFs dWU6IHRlcm0udG9fc3RyaW5nKCksCj4gKyAgICAgICAgICAgIG9wdGlvbmFsOiBmYWxzZSwKPiAr ICAgICAgICAgICAgY2F0ZWdvcnk6IE5vbmUsCj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsKPiAr ICAgIC8vLyBCdWlsZGVyIHN0eWxlIG1ldGhvZCB0byBzZXQgdGhlIGNhdGVnb3J5Cj4gKyAgICBw dWIgZm4gY2F0ZWdvcnk8UzogVG9TdHJpbmc+KG11dCBzZWxmLCBjYXRlZ29yeTogT3B0aW9uPFM+ KSAtPiBTZWxmIHsKPiArICAgICAgICBzZWxmLmNhdGVnb3J5ID0gY2F0ZWdvcnkubWFwKHxzfCBz LnRvX3N0cmluZygpKTsKPiArICAgICAgICBzZWxmCj4gKyAgICB9Cj4gKwo+ICsgICAgLy8vIEJ1 aWxkZXIgc3R5bGUgbWV0aG9kIHRvIG1hcmsgdGhpcyBbYFNlYXJjaFRlcm1gXSBhcyBvcHRpb25h bAo+ICsgICAgcHViIGZuIG9wdGlvbmFsKG11dCBzZWxmLCBvcHRpb25hbDogYm9vbCkgLT4gU2Vs ZiB7Cj4gKyAgICAgICAgc2VsZi5vcHRpb25hbCA9IG9wdGlvbmFsOwo+ICsgICAgICAgIHNlbGYK PiArICAgIH0KPiArfQo+ICsKPiAraW1wbCBGcm9tU3RyIGZvciBTZWFyY2hUZXJtIHsKPiArICAg IHR5cGUgRXJyID0gYW55aG93OjpFcnJvcjsKPiArCj4gKyAgICBmbiBmcm9tX3N0cihzOiAmc3Ry KSAtPiBSZXN1bHQ8U2VsZiwgU2VsZjo6RXJyPiB7CgrihpEgdXNlOiAobXV0IHRlcm06ICZzdHIp Cgo+ICsgICAgICAgIGxldCBtdXQgb3B0aW9uYWwgPSB0cnVlOwo+ICsgICAgICAgIGxldCBtdXQg dGVybTogU3RyaW5nID0gcy5pbnRvKCk7CgrihpEgc2tpcCB0aGUgcHJlbWF0dXJlIGFsbG9jYXRp b24gOy0pCgo+ICsgICAgICAgIGlmIHRlcm0uc3RhcnRzX3dpdGgoIisiKSB7Cj4gKyAgICAgICAg ICAgIG9wdGlvbmFsID0gZmFsc2U7Cj4gKyAgICAgICAgICAgIHRlcm0ucmVtb3ZlKDApOwo+ICsg ICAgICAgIH0KCuKGkQogICAgaWYgbGV0IFNvbWUocmVzdCkgPSB0ZXJtLnN0cmlwX3ByZWZpeCgi KyIpIHsKICAgICAgICB0ZXJtID0gcmVzdDsKICAgICAgICBvcHRpb25hbCA9IGZhbHNlOwogICAg fQoKPiArCj4gKyAgICAgICAgbGV0ICh0ZXJtLCBjYXRlZ29yeSkgPSBpZiBsZXQgU29tZShpZHgp ID0gdGVybS5maW5kKCI6Iikgewo+ICsgICAgICAgICAgICBsZXQgbXV0IHJlYWxfdGVybSA9IHRl cm0uc3BsaXRfb2ZmKGlkeCk7Cj4gKyAgICAgICAgICAgIHJlYWxfdGVybS5yZW1vdmUoMCk7IC8v IHJlbW92ZSAnOicKCuKGkSAyIGV4cGVuc2l2ZSBhdm9pZGFibGUgb3BzLCBzZWUgYmVsb3cKCj4g KyAgICAgICAgICAgIChyZWFsX3Rlcm0sIFNvbWUodGVybSkpCj4gKyAgICAgICAgfSBlbHNlIHsK PiArICAgICAgICAgICAgKHRlcm0sIE5vbmUpCj4gKyAgICAgICAgfTsKCuKGkQogICAgbGV0IGNh dGVnb3J5OwogICAgKHRlcm0sIGNhdGVnb3J5KSA9IG1hdGNoIHRlcm0uc3BsaXRfb25jZSgnOicp IHsKICAgICAgICBTb21lKChjYXRlZ29yeSwgdGVybSkpID0+ICh0ZXJtLCBTb21lKGNhdGVnb3J5 KSksCiAgICAgICAgTm9uZSA9PiAodGVybSwgTm9uZSksCiAgICB9Cgo+ICsKPiArICAgICAgICBp ZiB0ZXJtLmlzX2VtcHR5KCkgewo+ICsgICAgICAgICAgICBiYWlsISgidGVybSBjYW5ub3QgYmUg ZW1wdHkiKTsKPiArICAgICAgICB9Cj4gKwo+ICsgICAgICAgIGlmIGNhdGVnb3J5ID09IFNvbWUo IiIuaW50bygpKSB7CgrihpEgQ2FuIGF2b2lkIHRoaXMgKGFsc28sIGBTdHJpbmc6Om5ldygpYCB3 b3VsZCBiZSBjaGVhcGVyKSB2aWE6CgogICAgaWYgY2F0ZWdvcnkuaXNfc29tZV9hbmQoc3RyOjpp c19lbXB0eSkgewoKCj4gKyAgICAgICAgICAgIGJhaWwhKCJjYXRlZ29yeSBjYW5ub3QgYmUgZW1w dHkiKTsKPiArICAgICAgICB9Cj4gKwo+ICsgICAgICAgIE9rKFNlYXJjaFRlcm06Om5ldyh0ZXJt KS5vcHRpb25hbChvcHRpb25hbCkuY2F0ZWdvcnkoY2F0ZWdvcnkpKQo+ICsgICAgfQo+ICt9Cj4g Kwo+ICtpbXBsIHN0ZDo6Zm10OjpEaXNwbGF5IGZvciBTZWFyY2hUZXJtIHsKPiArICAgIGZuIGZt dCgmc2VsZiwgZjogJm11dCBzdGQ6OmZtdDo6Rm9ybWF0dGVyPCdfPikgLT4gc3RkOjpmbXQ6OlJl c3VsdCB7Cj4gKyAgICAgICAgaWYgIXNlbGYub3B0aW9uYWwgewo+ICsgICAgICAgICAgICBmLndy aXRlX3N0cigiKyIpPzsKPiArICAgICAgICB9Cj4gKwo+ICsgICAgICAgIGlmIGxldCBTb21lKGNh dCkgPSAmc2VsZi5jYXRlZ29yeSB7Cj4gKyAgICAgICAgICAgIGYud3JpdGVfc3RyKGNhdCk/Owo+ ICsgICAgICAgICAgICBmLndyaXRlX3N0cigiOiIpPzsKPiArICAgICAgICB9Cj4gKwo+ICsgICAg ICAgIGYud3JpdGVfc3RyKCZzZWxmLnZhbHVlKQo+ICsgICAgfQo+ICt9Cj4gKwo+ICsjW2NmZyh0 ZXN0KV0KPiArbW9kIHRlc3RzIHsKPiArICAgIHVzZSBjcmF0ZTo6e1NlYXJjaCwgU2VhcmNoVGVy bX07Cj4gKwo+ICsgICAgI1t0ZXN0XQo+ICsgICAgZm4gcGFyc2VfdGVzdF9zaW1wbGVfZmlsdGVy KCkgewo+ICsgICAgICAgIGFzc2VydF9lcSEoCj4gKyAgICAgICAgICAgICJmb28iLnBhcnNlOjo8 U2VhcmNoVGVybT4oKS51bndyYXAoKSwKPiArICAgICAgICAgICAgU2VhcmNoVGVybTo6bmV3KCJm b28iKS5vcHRpb25hbCh0cnVlKSwKPiArICAgICAgICApOwo+ICsgICAgfQo+ICsKPiArICAgICNb dGVzdF0KPiArICAgIGZuIHBhcnNlX3Rlc3RfcmVxdWlyZXNfZmlsdGVyKCkgewo+ICsgICAgICAg IGFzc2VydF9lcSEoCj4gKyAgICAgICAgICAgICIrZm9vIi5wYXJzZTo6PFNlYXJjaFRlcm0+KCku dW53cmFwKCksCj4gKyAgICAgICAgICAgIFNlYXJjaFRlcm06Om5ldygiZm9vIiksCj4gKyAgICAg ICAgKTsKPiArICAgIH0KPiArCj4gKyAgICAjW3Rlc3RdCj4gKyAgICBmbiBwYXJzZV90ZXN0X2Nh dGVnb3J5X2ZpbHRlcigpIHsKPiArICAgICAgICBhc3NlcnRfZXEhKAo+ICsgICAgICAgICAgICAi Zm9vOmJhciIucGFyc2U6OjxTZWFyY2hUZXJtPigpLnVud3JhcCgpLAo+ICsgICAgICAgICAgICBT ZWFyY2hUZXJtOjpuZXcoImJhciIpLm9wdGlvbmFsKHRydWUpLmNhdGVnb3J5KFNvbWUoImZvbyIp KQo+ICsgICAgICAgICk7Cj4gKyAgICAgICAgYXNzZXJ0X2VxISgKPiArICAgICAgICAgICAgIitm b286YmFyIi5wYXJzZTo6PFNlYXJjaFRlcm0+KCkudW53cmFwKCksCj4gKyAgICAgICAgICAgIFNl YXJjaFRlcm06Om5ldygiYmFyIikuY2F0ZWdvcnkoU29tZSgiZm9vIikpCj4gKyAgICAgICAgKTsK PiArICAgIH0KPiArCj4gKyAgICAjW3Rlc3RdCj4gKyAgICBmbiBwYXJzZV90ZXN0X2ludmFsaWRf ZmlsdGVyKCkgewo+ICsgICAgICAgIGFzc2VydCEoIjpiYXIiLnBhcnNlOjo8U2VhcmNoVGVybT4o KS5pc19lcnIoKSk7Cj4gKyAgICAgICAgYXNzZXJ0ISgiK2NhdDoiLnBhcnNlOjo8U2VhcmNoVGVy bT4oKS5pc19lcnIoKSk7Cj4gKyAgICAgICAgYXNzZXJ0ISgiKyIucGFyc2U6OjxTZWFyY2hUZXJt PigpLmlzX2VycigpKTsKPiArICAgICAgICBhc3NlcnQhKCI6Ii5wYXJzZTo6PFNlYXJjaFRlcm0+ KCkuaXNfZXJyKCkpOwo+ICsgICAgfQo+ICsKPiArICAgICNbdGVzdF0KPiArICAgIGZuIG1hdGNo X3Rlc3RzKCkgewo+ICsgICAgICAgIGxldCBzZWFyY2ggPSBTZWFyY2g6OmZyb21faXRlcih2ZWMh Wwo+ICsgICAgICAgICAgICBTZWFyY2hUZXJtOjpuZXcoInJlcXVpcmVkMSIpLm9wdGlvbmFsKGZh bHNlKSwKPiArICAgICAgICAgICAgU2VhcmNoVGVybTo6bmV3KCJyZXF1aXJlZDIiKS5vcHRpb25h bChmYWxzZSksCj4gKyAgICAgICAgICAgIFNlYXJjaFRlcm06Om5ldygib3B0aW9uYWwxIikub3B0 aW9uYWwodHJ1ZSksCj4gKyAgICAgICAgICAgIFNlYXJjaFRlcm06Om5ldygib3B0aW9uYWwyIiku b3B0aW9uYWwodHJ1ZSksCj4gKyAgICAgICAgXSk7Cj4gKwo+ICsgICAgICAgIC8vIGVhY2ggY2Fz ZSBjb250YWlucyByZXN1bHRzIGZvcgo+ICsgICAgICAgIC8vIHJlcXVpcmVkMSwgcmVxdWlyZWQy LCBvcHRpb25hbDEsIG9wdGlvbmFsMgo+ICsgICAgICAgIC8vIGFuZCBpZiBpdCBzaG91bGQgbWF0 Y2ggb3Igbm90Cj4gKyAgICAgICAgbGV0IGNhc2VzID0gWwo+ICsgICAgICAgICAgICAoKHRydWUs IHRydWUsIHRydWUsIGZhbHNlKSwgdHJ1ZSksCj4gKyAgICAgICAgICAgICgodHJ1ZSwgdHJ1ZSwg ZmFsc2UsIHRydWUpLCB0cnVlKSwKPiArICAgICAgICAgICAgKCh0cnVlLCB0cnVlLCB0cnVlLCB0 cnVlKSwgdHJ1ZSksCj4gKyAgICAgICAgICAgICgodHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSwg ZmFsc2UpLAo+ICsgICAgICAgICAgICAoKHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UpLCBmYWxz ZSksCj4gKyAgICAgICAgICAgICgoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpLCBmYWxzZSks Cj4gKyAgICAgICAgICAgICgoZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSksIGZhbHNlKSwKPiAr ICAgICAgICAgICAgKChmYWxzZSwgZmFsc2UsIHRydWUsIHRydWUpLCBmYWxzZSksCj4gKyAgICAg ICAgICAgICgoZmFsc2UsIHRydWUsIHRydWUsIHRydWUpLCBmYWxzZSksCj4gKyAgICAgICAgICAg ICgodHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUpLCBmYWxzZSksCj4gKyAgICAgICAgICAgICgodHJ1 ZSwgZmFsc2UsIHRydWUsIGZhbHNlKSwgZmFsc2UpLAo+ICsgICAgICAgICAgICAoKGZhbHNlLCB0 cnVlLCB0cnVlLCBmYWxzZSksIGZhbHNlKSwKPiArICAgICAgICAgICAgKChmYWxzZSwgZmFsc2Us IHRydWUsIGZhbHNlKSwgZmFsc2UpLAo+ICsgICAgICAgICAgICAoKHRydWUsIGZhbHNlLCBmYWxz ZSwgdHJ1ZSksIGZhbHNlKSwKPiArICAgICAgICAgICAgKChmYWxzZSwgdHJ1ZSwgZmFsc2UsIHRy dWUpLCBmYWxzZSksCj4gKyAgICAgICAgICAgICgoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSks IGZhbHNlKSwKPiArICAgICAgICBdOwo+ICsgICAgICAgIGZvciAoaW5wdXQsIGV4cGVjdGVkKSBp biBjYXNlcyB7Cj4gKyAgICAgICAgICAgIGFzc2VydCEoCj4gKyAgICAgICAgICAgICAgICBzZWFy Y2gubWF0Y2hlcyh8dGVybXwgewo+ICsgICAgICAgICAgICAgICAgICAgIG1hdGNoIHRlcm0udmFs dWUuYXNfc3RyKCkgewo+ICsgICAgICAgICAgICAgICAgICAgICAgICAicmVxdWlyZWQxIiA9PiBp bnB1dC4wLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAicmVxdWlyZWQyIiA9PiBpbnB1dC4x LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAib3B0aW9uYWwxIiA9PiBpbnB1dC4yLAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAib3B0aW9uYWwyIiA9PiBpbnB1dC4zLAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICBfID0+IHVucmVhY2hhYmxlISgpLAo+ICsgICAgICAgICAgICAgICAg ICAgIH0KPiArICAgICAgICAgICAgICAgIH0pID09IGV4cGVjdGVkCj4gKyAgICAgICAgICAgICkK PiArICAgICAgICB9Cj4gKyAgICB9Cj4gKwo+ICsgICAgI1t0ZXN0XQo+ICsgICAgZm4gY2F0ZWdv cnlfdmFsdWVfcmVxdWlyZWQoKSB7Cj4gKyAgICAgICAgbGV0IHNlYXJjaDogU2VhcmNoID0gU2Vh cmNoOjpmcm9tX2l0ZXIodmVjIVtTZWFyY2hUZXJtOjpuZXcoImZvbyIpXSk7Cj4gKyAgICAgICAg YXNzZXJ0ISghc2VhcmNoLmNhdGVnb3J5X3ZhbHVlX3JlcXVpcmVkKCJiYXIiLCAiYmF6IikpOwo+ ICsKPiArICAgICAgICBsZXQgc2VhcmNoOiBTZWFyY2ggPSBTZWFyY2g6OmZyb21faXRlcih2ZWMh W1NlYXJjaFRlcm06Om5ldygiZm9vIikub3B0aW9uYWwodHJ1ZSldKTsKPiArICAgICAgICBhc3Nl cnQhKCFzZWFyY2guY2F0ZWdvcnlfdmFsdWVfcmVxdWlyZWQoImJhciIsICJiYXoiKSk7Cj4gKwo+ ICsgICAgICAgIGxldCBzZWFyY2g6IFNlYXJjaCA9IFNlYXJjaDo6ZnJvbV9pdGVyKHZlYyFbU2Vh cmNoVGVybTo6bmV3KCJmb28iKS5jYXRlZ29yeShTb21lKCJiYXIiKSldKTsKPiArICAgICAgICBh c3NlcnQhKCFzZWFyY2guY2F0ZWdvcnlfdmFsdWVfcmVxdWlyZWQoImJhciIsICJiYXoiKSk7Cj4g Kwo+ICsgICAgICAgIGxldCBzZWFyY2g6IFNlYXJjaCA9IFNlYXJjaDo6ZnJvbV9pdGVyKHZlYyFb U2VhcmNoVGVybTo6bmV3KCJiYXoiKS5jYXRlZ29yeShTb21lKCJiYXIiKSldKTsKPiArICAgICAg ICBhc3NlcnQhKHNlYXJjaC5jYXRlZ29yeV92YWx1ZV9yZXF1aXJlZCgiYmFyIiwgImJheiIpKTsK PiArCj4gKyAgICAgICAgbGV0IHNlYXJjaDogU2VhcmNoID0gU2VhcmNoOjpmcm9tX2l0ZXIodmVj IVtTZWFyY2hUZXJtOjpuZXcoImZvbyIpCj4gKyAgICAgICAgICAgIC5vcHRpb25hbCh0cnVlKQo+ ICsgICAgICAgICAgICAuY2F0ZWdvcnkoU29tZSgiYmFyIikpXSk7Cj4gKyAgICAgICAgYXNzZXJ0 ISghc2VhcmNoLmNhdGVnb3J5X3ZhbHVlX3JlcXVpcmVkKCJiYXIiLCAiYmF6IikpOwo+ICsKPiAr ICAgICAgICBsZXQgc2VhcmNoOiBTZWFyY2ggPSBTZWFyY2g6OmZyb21faXRlcih2ZWMhW1NlYXJj aFRlcm06Om5ldygiYmF6IikKPiArICAgICAgICAgICAgLm9wdGlvbmFsKHRydWUpCj4gKyAgICAg ICAgICAgIC5jYXRlZ29yeShTb21lKCJiYXIiKSldKTsKPiArICAgICAgICBhc3NlcnQhKHNlYXJj aC5jYXRlZ29yeV92YWx1ZV9yZXF1aXJlZCgiYmFyIiwgImJheiIpKTsKPiArCj4gKyAgICAgICAg bGV0IHNlYXJjaDogU2VhcmNoID0gU2VhcmNoOjpmcm9tX2l0ZXIodmVjIVsKPiArICAgICAgICAg ICAgU2VhcmNoVGVybTo6bmV3KCJiYXoiKS5vcHRpb25hbCh0cnVlKS5jYXRlZ29yeShTb21lKCJi YXIiKSksCj4gKyAgICAgICAgICAgIFNlYXJjaFRlcm06Om5ldygiZm9vIikub3B0aW9uYWwodHJ1 ZSksCj4gKyAgICAgICAgXSk7Cj4gKyAgICAgICAgYXNzZXJ0ISghc2VhcmNoLmNhdGVnb3J5X3Zh bHVlX3JlcXVpcmVkKCJiYXIiLCAiYmF6IikpOwo+ICsgICAgfQo+ICsKPiArICAgICNbdGVzdF0K PiArICAgIGZuIHRlc3RfZGlzcGxheSgpIHsKPiArICAgICAgICBsZXQgdGVybSA9IFNlYXJjaFRl cm06Om5ldygiZm9vIik7Cj4gKyAgICAgICAgYXNzZXJ0X2VxISgiK2ZvbyIsICZ0ZXJtLnRvX3N0 cmluZygpKTsKPiArCj4gKyAgICAgICAgbGV0IHRlcm0gPSBTZWFyY2hUZXJtOjpuZXcoImZvbyIp Lm9wdGlvbmFsKHRydWUpOwo+ICsgICAgICAgIGFzc2VydF9lcSEoImZvbyIsICZ0ZXJtLnRvX3N0 cmluZygpKTsKPiArCj4gKyAgICAgICAgbGV0IHRlcm0gPSBTZWFyY2hUZXJtOjpuZXcoImZvbyIp Lm9wdGlvbmFsKGZhbHNlKTsKPiArICAgICAgICBhc3NlcnRfZXEhKCIrZm9vIiwgJnRlcm0udG9f c3RyaW5nKCkpOwo+ICsKPiArICAgICAgICBsZXQgdGVybSA9IFNlYXJjaFRlcm06Om5ldygiZm9v IikuY2F0ZWdvcnkoU29tZSgiYmFyIikpOwo+ICsgICAgICAgIGFzc2VydF9lcSEoIitiYXI6Zm9v IiwgJnRlcm0udG9fc3RyaW5nKCkpOwo+ICsKPiArICAgICAgICBsZXQgdGVybSA9IFNlYXJjaFRl cm06Om5ldygiZm9vIikub3B0aW9uYWwodHJ1ZSkuY2F0ZWdvcnkoU29tZSgiYmFyIikpOwo+ICsg ICAgICAgIGFzc2VydF9lcSEoImJhcjpmb28iLCAmdGVybS50b19zdHJpbmcoKSk7Cj4gKwo+ICsg ICAgICAgIGxldCB0ZXJtID0gU2VhcmNoVGVybTo6bmV3KCJmb28iKS5vcHRpb25hbChmYWxzZSku Y2F0ZWdvcnkoU29tZSgiYmFyIikpOwo+ICsgICAgICAgIGFzc2VydF9lcSEoIitiYXI6Zm9vIiwg JnRlcm0udG9fc3RyaW5nKCkpOwo+ICsgICAgfQo+ICt9Cj4gLS0gCj4gMi40Ny4yCgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KcGRtLWRldmVsIG1haWxp bmcgbGlzdApwZG0tZGV2ZWxAbGlzdHMucHJveG1veC5jb20KaHR0cHM6Ly9saXN0cy5wcm94bW94 LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vcGRtLWRldmVsCg==