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 5EE2F1FF173 for <inbox@lore.proxmox.com>; Mon, 10 Feb 2025 11:43:34 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 7C17A8528; Mon, 10 Feb 2025 11:43:32 +0100 (CET) Date: Mon, 10 Feb 2025 11:43:25 +0100 From: Fabian =?iso-8859-1?q?Gr=FCnbichler?= <f.gruenbichler@proxmox.com> To: Thomas Skinner <thomas@atskinner.net> References: <20241224202429.3072813-1-thomas@atskinner.net> <20241224202429.3072813-4-thomas@atskinner.net> <1737710597.ns84scjebn.astroid@yuna.none> <CALn9RMe8dS2mMUP=3mqA6i4adQ-HvzXtiM_DxE4bORaDn8-D9A@mail.gmail.com> In-Reply-To: <CALn9RMe8dS2mMUP=3mqA6i4adQ-HvzXtiM_DxE4bORaDn8-D9A@mail.gmail.com> MIME-Version: 1.0 User-Agent: astroid/0.16.0 (https://github.com/astroidmail/astroid) Message-Id: <1739183392.ck16962mrs.astroid@yuna.none> X-SPAM-LEVEL: Spam detection results: 0 AWL 0.046 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: Re: [pve-devel] [PATCH access-control v2 1/1] fix #4411: openid: add logic for openid groups support 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> Cc: 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> T24gRmVicnVhcnkgNiwgMjAyNSA2OjA2IGFtLCBUaG9tYXMgU2tpbm5lciB3cm90ZToKPiBPbiBG cmksIEphbiAyNCwgMjAyNSBhdCA0OjE44oCvQU0gRmFiaWFuIEdyw7xuYmljaGxlcgo+IDxmLmdy dWVuYmljaGxlckBwcm94bW94LmNvbT4gd3JvdGU6Cj4+Cj4+IE9uIERlY2VtYmVyIDI0LCAyMDI0 IDk6MjQgcG0sIFRob21hcyBTa2lubmVyIHdyb3RlOgo+PiA+IFNpZ25lZC1vZmYtYnk6IFRob21h cyBTa2lubmVyIDx0aG9tYXNAYXRza2lubmVyLm5ldD4KPj4gPiAtLS0KPj4gPiAgc3JjL1BWRS9B UEkyL09wZW5JZC5wbSAgIHwgNjggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKwo+PiA+ICBzcmMvUFZFL0FjY2Vzc0NvbnRyb2wucG0gfCAxMyArKysrKy0tLQo+PiA+ICBz cmMvUFZFL0F1dGgvT3BlbklkLnBtICAgfCAzMCArKysrKysrKysrKysrKysrKysKPj4gPiAgMyBm aWxlcyBjaGFuZ2VkLCAxMDcgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKPj4gPgo+PiA+ IGRpZmYgLS1naXQgYS9zcmMvUFZFL0FQSTIvT3BlbklkLnBtIGIvc3JjL1BWRS9BUEkyL09wZW5J ZC5wbQo+PiA+IGluZGV4IDc3NDEwZTYuLjVjZmU1YTEgMTAwNjQ0Cj4+ID4gLS0tIGEvc3JjL1BW RS9BUEkyL09wZW5JZC5wbQo+PiA+ICsrKyBiL3NyYy9QVkUvQVBJMi9PcGVuSWQucG0KPj4gPiBA QCAtMTMsNiArMTMsNyBAQCB1c2UgUFZFOjpDbHVzdGVyIHF3KGNmc19yZWFkX2ZpbGUgY2ZzX3dy aXRlX2ZpbGUpOwo+PiA+ICB1c2UgUFZFOjpBY2Nlc3NDb250cm9sOwo+PiA+ICB1c2UgUFZFOjpK U09OU2NoZW1hIHF3KGdldF9zdGFuZGFyZF9vcHRpb24pOwo+PiA+ICB1c2UgUFZFOjpBdXRoOjpQ bHVnaW47Cj4+ID4gK3VzZSBQVkU6OkF1dGg6Ok9wZW5JZDsKPj4gPgo+PiA+ICB1c2UgUFZFOjpS RVNUSGFuZGxlcjsKPj4gPgo+PiA+IEBAIC0yMjAsNiArMjIxLDczIEBAIF9fUEFDS0FHRV9fLT5y ZWdpc3Rlcl9tZXRob2QgKHsKPj4gPiAgICAgICAgICAgICAgICRycGNlbnYtPmNoZWNrX3VzZXJf ZW5hYmxlZCgkdXNlcm5hbWUpOwo+PiA+ICAgICAgICAgICB9Cj4+ID4KPj4gPiArICAgICAgICAg aWYgKGRlZmluZWQobXkgJGdyb3Vwc19jbGFpbSA9ICRjb25maWctPnsnZ3JvdXBzLWNsYWltJ30p KSB7Cj4+ID4gKyAgICAgICAgICAgICBpZiAoZGVmaW5lZChteSAkZ3JvdXBzX2xpc3QgPSAkaW5m by0+eyRncm91cHNfY2xhaW19KSkgewo+PiA+ICsgICAgICAgICAgICAgICAgIGlmIChyZWYoJGdy b3Vwc19saXN0KSBlcSAnQVJSQVknKSB7Cj4+ID4gKyAgICAgICAgICAgICAgICAgICAgIFBWRTo6 QWNjZXNzQ29udHJvbDo6bG9ja191c2VyX2NvbmZpZyhzdWIgewo+PiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgbXkgJHVzZXJjZmcgPSBjZnNfcmVhZF9maWxlKCJ1c2VyLmNmZyIpOwo+PiA+ ICsKPj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICMgcmVwbGFjZSBhbnkgaW52YWxpZCBj aGFyYWN0ZXJzIHdpdGgKPj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRyZXBsYWNl X2NoYXJhY3RlciA9ICRjb25maWctPnsnZ3JvdXBzLXJlcGxhY2UtY2hhcmFjdGVyJ30gLy8gJ18n Owo+PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgbXkgQG9pZGNfZ3JvdXBzX2xpc3QgPSBt YXAgewo+Pgo+PiBzdHlsZSBuaXQ6IHdlIG1vc3RseSB1c2UgYXJyYXkgcmVmZXJlbmNlcyBpbiBv dXIgY29kZSwgaS5lLgo+Pgo+PiBteSAkb2lkY19ncm91cF9saXN0ID0gWyBtYXAgLi4uIF07Cj4+ Cj4+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJF8gPX4gcy9bXiRQVkU6OkF1dGg6 Ok9wZW5JZDo6Z3JvdXBuYW1lX3JlZ2V4X2NoYXJzXS8kcmVwbGFjZV9jaGFyYWN0ZXIvZ3IKPj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgIH0gJGdyb3Vwc19saXN0LT5AKjsKPj4gPiArCj4+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAjIGxpc3QgZ3JvdXBzIHRoYXQgZXhpc3QgaW4g cHZlCj4+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICBteSBAZXhpc3RpbmdfZ3JvdXBzX2xp c3QgPSBrZXlzICV7JHVzZXJjZmctPntncm91cHN9fTsKPj4KPj4gc2FtZSBoZXJlCj4+Cj4+ID4g Kwo+PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgbXkgQGdyb3Vwc19pbnRlcnNlY3Q7Cj4+ Cj4+IGFuZCBoZXJlCj4+Cj4+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRjb25m aWctPnsnZ3JvdXBzLWF1dG9jcmVhdGUnfSApIHsKPj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAjIHBvcHVsYXRlIGFsbCBncm91cHMgaW4gY2xhaW0KPj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBAZ3JvdXBzX2ludGVyc2VjdCA9IEBvaWRjX2dyb3Vwc19saXN0Owo+ Pgo+PiBhbmQgaGVyZSA7KQo+Pgo+PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgfQo+PiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7Cj4+Cj4+IHN0eWxlIG5pdDogdGhlICd9 JyBhbmQgJ2Vsc2Ugeycgc2hvdWxkIGJlIG9uIGEgc2luZ2xlIGxpbmUKPj4KPj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIG9ubHkgcG9wdWxhdGUgZ3JvdXBzIHRoYXQgYXJlIGlu IHRoZSBvaWRjIGxpc3QgYW5kIGV4aXN0IGluIHB2ZQo+PiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEBncm91cHNfaW50ZXJzZWN0ID0gQHtQVkU6OlRvb2xzOjphcnJheV9pbnRlcnNl Y3QoCj4+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxAb2lkY19ncm91cHNf bGlzdCwKPj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXEBleGlzdGluZ19n cm91cHNfbGlzdCwKPj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfTsKPj4KPj4g dGhlbiB0aGlzIHNpbXBseSBiZWNvbWVzCj4+Cj4+ICRncm91cHNfaW50ZXJzZWN0ID0gUFZFOjpU b29sczo6YXJyYXlfaW50ZXJzZWN0KCRvaWRjX2dyb3Vwc19saXN0LCAkZXhpc3RpbmdfZ3JvdXBz X2xpc3QpOwo+IAo+IFVuZGVyc3Rvb2QgZm9yIGFsbCB0aGUgYWJvdmUgYW5kIHdpbGwgZml4LiBB cG9sb2dpZXMgZm9yIG1pc3NpbmcgdGhlbQo+IHdoZW4gdGhleSBhcmUgY2xlYXJseSBpbiB0aGUg c3R5bGUgZ3VpZGUuIElzIHRoZXJlIGFueSBsaW50aW5nIHNldHVwCj4gdGhhdCB5b3UnZCByZWNv bW1lbmQgZm9yIG15IGRldiBlbnZpcm9ubWVudCB0aGF0IHdvdWxkIGhlbHAgY2F0Y2gKPiB0aGVz ZSBmb3IgZnV0dXJlIHBhdGNoZXMgYmVmb3JlIEkgc2VuZCB0aGVtPyBJIGRvbid0IHdhbnQgdG8g cmVjcmVhdGUKPiB0aGUgd2hlZWwgaWYgdGhlIFByb3htb3ggdGVhbSBhbHJlYWR5IGhhcyBzb21l dGhpbmcgaW4tcGxhY2UgdGhhdAo+IGNvdWxkIGJlIHNoYXJlZC4KCnRoZXJlJ3MgcGVybGNyaXRp YyB0aGF0IGNhbiBoZWxwIHdpdGggdGhpcyAoc2VlIGJvdHRvbSBwYXJ0IG9mIHRoZSBwZXJsCnN0 eWxlIGd1aWRlKSwgYnV0IGdpdmVuIHBlcmwncyBuYXR1cmUsIHRoZXJlIGlzbid0IHJlYWxseSBh IHByb3BlciB0b29sCnRoYXQgcmVhbGx5IGhhbmRsZXMgZXZlcnl0aGluZy4uCgo+IAo+PiBidXQg c2luY2UgdGhlIGV4aXN0aW5nIGdyb3VwcyBhcmUgYWxyZWFkeSBhIGhhc2gsIHlvdSBjb3VsZCBh bHNvIGRvIHRoZQo+PiBpbnRlcnNlY3Rpb24gKyBjb252ZXJzaW9uIHRvIGEgaGFzaCBpbiBhIHNp bmdsZSBnbyBoZXJlIChzZWUgYmVsb3cgZm9yCj4+IHdoeSBhIGhhc2ggaXMgbmljZXIgYW55d2F5 KToKPj4KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkY29uZmlnLT57J2dyb3Vw cy1hdXRvY3JlYXRlJ30pIHsKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHBv cHVsYXRlIGFsbCBncm91cHMgaW4gY2xhaW0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAkZ3JvdXBzX2ludGVyc2VjdCA9IHsgbWFwIHsgJF8gPT4gMSB9ICRvaWRjX2dyb3Vwc19s aXN0LT5AKiB9Owo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKPj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHBvcHVsYXRlIG9ubHkgZXhpc3RpbmcgZ3Jv dXBzCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRncm91cCAoJG9p ZGNfZ3JvdXBzX2xpc3QtPkAqKSB7Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICRncm91cHNfaW50ZXJzZWN0LT57JGdyb3VwfSA9IDEgaWYgJHVzZXJjZmctPntncm91cHN9 LT57JGdyb3VwfTsKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cj4+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB9Cj4+Cj4+Cj4+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICB9Cj4+ID4gKwo+PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiBncm91cHMg c2hvdWxkIGJlIG92ZXJ3cml0dGVuLCBmaW5kIGFuZCBkZWxldGUgdGhlIG9uZXMgdG8gcmVtb3Zl Cj4+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRjb25maWctPnsnZ3JvdXBzLW92 ZXJ3cml0ZSd9ICkgewo+PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZ2V0IHRo ZSBncm91cHMgdGhhdCBuZWVkIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgdXNlcgo+PiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG15ICVncm91cHNfcmVtb3ZlX3VzZXI7Cj4+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJGdyb3Vwc19yZW1vdmVfdXNlcnsgJF8gfSA9IHVu ZGVmCj4+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrZXlzICV7JHVz ZXJjZmctPnt1c2Vyc30tPnskdXNlcm5hbWV9LT57Z3JvdXBzfX07Cj4+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGVsZXRlICRncm91cHNfcmVtb3ZlX3VzZXJ7ICRfIH0gZm9yIEBn cm91cHNfaW50ZXJzZWN0Owo+PiA+ICsKPj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAjIGVuc3VyZSB1c2VyIGlzIG5vdCBhIG1lbWJlciBvZiB0aGVzZSBncm91cHMKPj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQVkU6OkFjY2Vzc0NvbnRyb2w6OmRlbGV0ZV91c2Vy X2dyb3VwX3NpbmdsZSgKPj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHVz ZXJuYW1lLAo+PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdXNlcmNmZywK Pj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJF8sCj4+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKSBmb3Iga2V5cyAlZ3JvdXBzX3JlbW92ZV91c2VyOwo+PiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgfQo+PiA+ICsKPj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICMgZ2V0IHRoZSBncm91cHMgdGhhdCBuZWVkIHRvIGJlIGFkZGVkIHRvIHRoZSB1 c2VyCj4+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICBteSAlZ3JvdXBzX2FkZF91c2VyOwo+ PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgJGdyb3Vwc19hZGRfdXNlcnsgJF8gfSA9IHVu ZGVmIGZvciBAZ3JvdXBzX2ludGVyc2VjdDsKPj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg IGRlbGV0ZSAkZ3JvdXBzX2FkZF91c2VyeyAkXyB9Cj4+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZm9yIGtleXMgJXskdXNlcmNmZy0+e3VzZXJzfS0+eyR1c2VybmFtZX0tPntncm91 cHN9fTsKPj4gPiArCj4+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAjIGVuc3VyZSB1c2Vy IGlzIGEgbWVtYmVyIG9mIHRoZXNlIGdyb3Vwcwo+PiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgUFZFOjpBY2Nlc3NDb250cm9sOjphZGRfdXNlcl9ncm91cCgKPj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAkdXNlcm5hbWUsCj4+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJHVzZXJjZmcsCj4+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJF8KPj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICkgZm9yIGtleXMgJWdyb3Vwc19hZGRfdXNlcjsK Pj4gPiArCj4+Cj4+Cj4+IHdlIGRvbid0IGRvIHBvc3QtZm9yIGVpdGhlciA7KQo+Pgo+PiB5b3Ug Y2FuIGp1c3QgZG8KPj4KPj4gIyBjb252ZXJ0cyBncm91cCBpbnRlcnNlY3Rpb24gdG8gaGFzaCAo YnV0IHNlZSBhYm92ZSA7KSkKPj4gbXkgJGdyb3Vwc19pbnRlcnNlY3RfaGFzaCA9IHsgbWFwIHsg JF8gPT4gMSB9ICRncm91cHNfaW50ZXJzZWN0LT5AIH07Cj4+Cj4+IGlmICgkY29uZmlnLT57J2dy b3Vwcy1vdmVyd3JpdGUnfSkgewo+PiAgICAgbXkgJHVzZXJfZ3JvdXBzID0gJHVzZXJjZmctPnt1 c2Vyc30tPnskdXNlcm5hbWV9LT57Z3JvdXBzfTsKPj4gICAgIGZvciBteSAkZ3JvdXAgKGtleXMg JHVzZXJfZ3JvdXBzLT4lKikgewo+PiAgICAgICAgIGRlbGV0ZSAkdXNlcl9ncm91cHMtPnskZ3Jv dXB9IGlmICFncm91cHNfaW50ZXJzZWN0X2hhc2gtPnskZ3JvdXB9Owo+PiAgICAgfQo+PiB9Cj4+ Cj4+IGFuZCBzaW1pbGFybHkgZm9yIHRoZSBhZGRpdGlvbiwgYWx0aG91Z2ggd2l0aCBhZGRpdGlv biwgeW91IGNvdWxkIGV2ZW4KPj4gZG8gaXQgdW5jb25kaXRpb25hbGx5IHNpbmNlIGl0IGlzIGJv dGggY2hlYXAgYW5kIGlkZW1wb3RlbnQgKGl0IGp1c3QKPj4gc2V0cyB0d28gYm9vbGVhbnMgaW4g dGhlICR1c2VyY2ZnIGhhc2gpLgo+Pgo+PiBvciB5b3UgY291bGQgbWFrZSBpdCBhIGJpdCBlYXNp ZXIsIGFuZCBqdXN0IGRlbGV0ZSBhbGwgZ3JvdXBzIGFuZCB0aGVuCj4+IGFkZCBhbGwgdGhlIGdy b3VwcyBpbiB0aGUgaW50ZXJzZWN0aW5nIHNldCwgd2hpY2ggd291bGQgYmUgc2ltaWxhciB0bwo+ PiBob3cgd2UgZG8gaXQgd2hlbiBkaXJlY3RseSBvdmVyd3JpdGluZyBhIHVzZXIncyBncm91cCB2 aWEgdGhlIEFQSS9wdmV1bToKPj4KPj4gaHR0cHM6Ly9naXQucHJveG1veC5jb20vP3A9cHZlLWFj Y2Vzcy1jb250cm9sLmdpdDthPWJsb2I7Zj1zcmMvUFZFL0FQSTIvVXNlci5wbTtoPTUzNWU1OGUw YjNkYmQ0YzhkOGM4ODJiNzg0NTE3MzQ4OTgwM2Q4ZDA7aGI9SEVBRCNsNDE3Cj4+Cj4+IHRoZSBj aGFuZ2VzIHdpbGwgb25seSBwZXJzaXN0ZWQgb24tZGlzayBvbmNlIHlvdSBoaXQgdGhlIGNmc193 cml0ZSBpbiB0aGUKPj4gbmV4dCBsaW5lLCBzbyB0aGlzIHNob3VsZG4ndCBiZSBhbiBpc3N1ZS4K PiAKPiBUaGUgcmVhc29uIHRoYXQgSSBtYWRlIGFuIGFkanVzdG1lbnQgdG8gdGhlIGJlaGF2aW9y IHdhcyBwdXJlbHkgZm9yCj4gZnV0dXJlIGF1ZGl0aW5nIChvbmx5IHJlcG9ydCBncm91cHMgYWRk ZWQvcmVtb3ZlZCksIHdoaWNoIHNwZWFrcyB0bwo+IHRoZSBiZWxvdyBjb21tZW50cyBhYm91dCBs b2dnaW5nLiBIb3dldmVyLCBldmVuIGp1c3QgaGF2aW5nIGxvZ2dpbmcgb2YKPiBncm91cCBtZW1i ZXJzaGlwIGNhdXNlZCBieSBPSURDIHdvdWxkIGJlIHN1ZmZpY2llbnQuIFBsdXMsIHNpbXBsaWZ5 aW5nCj4gdGhpcyBtYWtlcyBhIGxvdCBtb3JlIHNlbnNlIHRvIG1lIGluIGhpbmRzaWdodC4KPiAK Pj4gc29tZSBoaWdoZXItbGV2ZWwgcXVlc3Rpb25zOgo+Pgo+PiBkbyB3ZSB3YW50IHRvIGhhdmUg YSBiaXQgbW9yZSBsb2dnaW5nIGhlcmUsIGFsdGhvdWdoIGl0IHdvdWxkIG9ubHkgZW5kCj4+IHVw IGluIHN5c2xvZy9qb3VybmFsLi4gbWF5YmUgYXQgbGVhc3QgZm9yIGdyb3VwcyB3aGljaCBhcmUg Y3JlYXRlZD8KPiAKPiBJIGRvbid0IG1pbmQgYWRkaW5nIG1vcmUgbG9nZ2luZyBhdCBhbGwuIEkn bSBhbGwgZm9yIHN1cHBvcnRpbmcgbW9yZQo+IGF1ZGl0YWJsZSBhY3Rpb25zLiBEbyB5b3UgaGF2 ZSBhbnkgb3RoZXIgc3VnZ2VzdGlvbnMgb2Ygd2hlcmUgbG9nZ2luZwo+IHdvdWxkIGJlIHVzZWZ1 bD8gTXkgY3VycmVudCB0aG91Z2h0cyBhcmU6IGdyb3VwcyBhdXRvIGNyZWF0ZWQsIHVzZXIKPiBy ZW1vdmVkIGZyb20gZ3JvdXBzLCB1c2VyIGFkZGVkIHRvIGdyb3Vwcy4KCkkgdGhpbmsgZm9yIGdy b3VwcyBiZWluZyBjcmVhdGVkIGl0IG1ha2VzIHNlbnNlLCB1c2VyIGdyb3VwCm1vZGlmaWNhdGlv bnMgbWF5YmUgYXMgd2VsbCwgaWYgeW91IHdhbnQgdG8gc3RydWN0dXJlIHRoZSBjb2RlIGluIGEg d2F5CnRoYXQgZ2l2ZXMgeW91IHRoYXQgaW5mb3JtYXRpb24gOykKCj4gCj4+IGRvIHdlIHdhbnQg dG8gbWFuZ2xlIHRoZSBncm91cCBuYW1lcyB0byBpbmNsdWRlIHRoZSBPSURDLXJlYWxtIG5hbWUs Cj4+IGxpa2Ugd2UgZG8gZm9yIExEQVAvQUQgc3luY2luZz8gdGhhdCB3YXkgaXQgaXMgbW9yZSBj bGVhciB0aGF0IHRob3NlCj4+IGdyb3VwcyBvcmlnaW5hdGVkIGZyb20gT0lEQy4uIGRvd25zaWRl IGlzIHRoYXQgeW91IGNhbid0IHVzZSBhIGdyb3VwCj4+IHNoYXJlZCBiZXR3ZWVuIE9JREMgYW5k IG90aGVyIHJlYWxtcy4uCj4gCj4gWWVzLCB0aGlzIHdhcyB3aGF0IHdlbnQgdGhyb3VnaCBteSBt aW5kIGluIGNvbnNpZGVyYXRpb24uIEFkZGluZyB0aGUKPiBwcmVmaXggZGVmaW5pdGVseSB3b3Vs ZCBtYWtlIHRoZW0gbmVhcmx5IHVuaXF1ZSBhY3Jvc3MgcHJvdmlkZXJzLiBPbgo+IHRoZSBmbGlw c2lkZSwgdGhlIGdyb3VwcyBuYW1lcyBzaG91bGQgYmUgYWJsZSB0byBiZSBjb250cm9sbGVkIGF0 IHRoZQo+IElkUC4gV2hhdCBkbyB5b3UgdGhpbmsgYWJvdXQgYWRkaW5nIGFuIGFkdmFuY2VkIG9w dGlvbiBmb3IgYWRkaW5nIGEKPiBwcmVmaXggdG8gdGhlIGZyb250IG9mIHRoZSBncm91cCBuYW1l IGFzIHRoZSByZWFsbSBuYW1lLCB0aGF0IHdheSB0aGUKPiB1c2VyIGNvdWxkIGhhdmUgYm90aCBv cHRpb25zIChJJ20gdGhpbmtpbmcgYSBib29sZWFuIHRoYXQgYWRkcyB3aGF0Cj4geW91IHN1Z2dl c3RlZCBhYm92ZSwgZGVmYXVsdCBvcHRlZCBvdXQpPyBBY3R1YWxseSBtaWdodCBub3QgYmUgYSBi YWQKPiBpZGVhIGZvciBvdGhlciBhdXRoIHR5cGVzLCB0b28uCgp0aGUgbWFpbiByZWFzb24gdG8g Im5hbWVzcGFjZSIgdGhlIGdyb3VwcyBpcyB0byBwcmV2ZW50IGFjY2lkZW50cyAoZ3JvdXAKYWxy ZWFkeSBleGlzdHMgd2l0aCBkaWZmZXJlbnQgc2VtYW50aWNzIGFuZCBoYXMgQUNMcywgT0lEQyBh ZGRzIHVzZXIgdG8KZ3JvdXAsIGFjY2lkZW50YWxseSBnYXZlIGFjY2VzcyB0byBzb21lIHJlc291 cmNlIGFzIGEgcmVzdWx0KQoKSSBkb24ndCB0aGluayB0aGVyZSBpcyBhIGh1Z2UgdXNlIGNhc2Ug Zm9yIHRoZSBub24tbmFtZXNwYWNlZCB2YXJpYW50IC0KaWYgeW91IHdhbnQgdG8gcHJlLWNvbmZp Z3VyZSBhIGdyb3VwIHRoYXQgaXMgcmVmZXJlbmNlZCB2aWEgT0lEQywgeW91CmNhbiBzdGlsbCBk byB0aGF0IGFmdGVyIGFsbC4uCgo+IAo+PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgY2Zz X3dyaXRlX2ZpbGUoInVzZXIuY2ZnIiwgJHVzZXJjZmcpOwo+PiA+ICsgICAgICAgICAgICAgICAg ICAgICB9LCAib3BlbmlkIGdyb3VwIG1hcHBpbmcgZmFpbGVkIik7Cj4+ID4gKyAgICAgICAgICAg ICAgICAgfSBlbHNlIHsKPj4gPiArICAgICAgICAgICAgICAgICAgICAgc3lzbG9nKCdlcnInLCAi Z3JvdXBzIGxpc3QgaXMgbm90IGFuIGFycmF5OyBncm91cHMgd2lsbCBub3QgYmUgdXBkYXRlZCIp Owo+PiA+ICsgICAgICAgICAgICAgICAgIH0KPj4gPiArICAgICAgICAgICAgIH0gZWxzZSB7Cj4+ ID4gKyAgICAgICAgICAgICAgICAgc3lzbG9nKCdlcnInLCAiZ3JvdXBzIGNsYWltICckZ3JvdXBz X2NsYWltJyBpcyBub3QgZm91bmQgaW4gY2xhaW1zIik7Cj4+ID4gKyAgICAgICAgICAgICB9Cj4+ ID4gKyAgICAgICAgIH0KPj4gPiArCj4+ID4gICAgICAgICAgIG15ICR0aWNrZXQgPSBQVkU6OkFj Y2Vzc0NvbnRyb2w6OmFzc2VtYmxlX3RpY2tldCgkdXNlcm5hbWUpOwo+PiA+ICAgICAgICAgICBt eSAkY3NyZnRva2VuID0gUFZFOjpBY2Nlc3NDb250cm9sOjphc3NlbWJsZV9jc3JmX3ByZXZlbnRp b25fdG9rZW4oJHVzZXJuYW1lKTsKPj4gPiAgICAgICAgICAgbXkgJGNhcCA9ICRycGNlbnYtPmNv bXB1dGVfYXBpX3Blcm1pc3Npb24oJHVzZXJuYW1lKTsKPj4gPiBkaWZmIC0tZ2l0IGEvc3JjL1BW RS9BY2Nlc3NDb250cm9sLnBtIGIvc3JjL1BWRS9BY2Nlc3NDb250cm9sLnBtCj4+ID4gaW5kZXgg NDdmMmQzOC4uZDY0M2EwMCAxMDA2NDQKPj4gPiAtLS0gYS9zcmMvUFZFL0FjY2Vzc0NvbnRyb2wu cG0KPj4gPiArKysgYi9zcmMvUFZFL0FjY2Vzc0NvbnRyb2wucG0KPj4gPiBAQCAtOTkwLDEyICs5 OTAsMTcgQEAgc3ViIGRlbGV0ZV91c2VyX2dyb3VwIHsKPj4gPiAgICAgIG15ICgkdXNlcm5hbWUs ICR1c2VyY2ZnKSA9IEBfOwo+PiA+Cj4+ID4gICAgICBmb3JlYWNoIG15ICRncm91cCAoa2V5cyAl eyR1c2VyY2ZnLT57Z3JvdXBzfX0pIHsKPj4gPiAtCj4+ID4gLSAgICAgZGVsZXRlICgkdXNlcmNm Zy0+e2dyb3Vwc30tPnskZ3JvdXB9LT57dXNlcnN9LT57JHVzZXJuYW1lfSkKPj4gPiAtICAgICAg ICAgaWYgJHVzZXJjZmctPntncm91cHN9LT57JGdyb3VwfS0+e3VzZXJzfS0+eyR1c2VybmFtZX07 Cj4+ID4gKyAgICAgZGVsZXRlX3VzZXJfZ3JvdXBfc2luZ2xlKCR1c2VybmFtZSwgJHVzZXJjZmcs ICRncm91cCk7Cj4+Cj4+IHRvIGJlIGhvbmVzdCBJIGFtIG5vdCBzdXJlIHdoeSB0aGF0IHBvc3Qt aWYgaXMgdGhlcmUgaW4gdGhlIGZpcnN0IHBsYWNlLi4KPj4KPj4gd2hlbiBwYXJzaW5nIHRoZSBj b25maWcsIHRoZSBncm91cCBpcyBpbml0aWFsaXplZCB3aXRoIGFuIGVtcHR5ICd1c2VycycKPj4g aGFzaCBhcyBtZW1iZXJzIGJlZm9yZSBmaWxsaW5nIHVzaW5nIHRoZSBtZW1iZXIgbGlzdCwgc28g dGhlcmUgaXMgbm8KPj4gcmlzayBvZiBhdXRvLXZpdmlmeWluZyBzb21ldGhpbmcgaGVyZS4uCj4+ Cj4+IGlmIHlvdSB3YW50IHRvIGRlbGV0ZSBhIHVzZXIncyBncm91cCBtZW1iZXJzaGlwLCB5b3Ug Y2FuIGp1c3QKPj4KPj4gZGVsZXRlICR1c2VyY2ZnLT57Z3JvdXBzfS0+eyRncm91cH0tPnt1c2Vy c30tPnskdXNlcm5hbWV9Owo+Pgo+PiBhbmQgd2UgZG9uJ3QgbmVlZCB0aGlzIHJlZmFjdG9yaW5n Cj4gCj4gV2lsbCB1cGRhdGUgYW5kIHJlbW92ZSB0aGUgcmVmYWN0b3IuIFRoYW5rcyBmb3IgcG9p bnRpbmcgdGhhdCBvdXQuCj4gCj4+ID4gICAgICB9Cj4+ID4gIH0KPj4gPgo+PiA+ICtzdWIgZGVs ZXRlX3VzZXJfZ3JvdXBfc2luZ2xlIHsKPj4gPiArICAgIG15ICgkdXNlcm5hbWUsICR1c2VyY2Zn LCAkZ3JvdXApID0gQF87Cj4+ID4gKwo+PiA+ICsgICAgZGVsZXRlICgkdXNlcmNmZy0+e2dyb3Vw c30tPnskZ3JvdXB9LT57dXNlcnN9LT57JHVzZXJuYW1lfSkKPj4gPiArICAgICBpZiAkdXNlcmNm Zy0+e2dyb3Vwc30tPnskZ3JvdXB9LT57dXNlcnN9LT57JHVzZXJuYW1lfTsKPj4gPiArfQo+PiA+ ICsKPj4gPiAgc3ViIGRlbGV0ZV91c2VyX2FjbCB7Cj4+ID4gICAgICBteSAoJHVzZXJuYW1lLCAk dXNlcmNmZykgPSBAXzsKPj4gPgo+PiA+IEBAIC0xMjkzLDcgKzEyOTgsNyBAQCBQVkU6OkpTT05T Y2hlbWE6OnJlZ2lzdGVyX2Zvcm1hdCgncHZlLWdyb3VwaWQnLCBcJnZlcmlmeV9ncm91cG5hbWUp Owo+PiA+ICBzdWIgdmVyaWZ5X2dyb3VwbmFtZSB7Cj4+ID4gICAgICBteSAoJGdyb3VwbmFtZSwg JG5vZXJyKSA9IEBfOwo+PiA+Cj4+ID4gLSAgICBpZiAoJGdyb3VwbmFtZSAhfiBtL15bQS1aYS16 MC05XC5cLV9dKyQvKSB7Cj4+ID4gKyAgICBpZiAoJGdyb3VwbmFtZSAhfiBtL15bJFBWRTo6QXV0 aDo6T3BlbklkOjpncm91cG5hbWVfcmVnZXhfY2hhcnNdKyQvKSB7Cj4+Cj4+IHNlZSBiZWxvdyA7 KSBpZiB0aGUgUkUgbW92ZXMgdGhlcmUsIHdlIGNvdWxkIGFjdHVhbGx5IG1vdmUgdGhlIHdob2xl Cj4+IGhlbHBlciBhbmQgZm9ybWF0IHJlZ2lzdHJhdGlvbiAobWF5YmUgYXMgYSBzZXBhcmF0ZSBj b21taXQvcGF0Y2g/KQo+IAo+IFdvdWxkIGEgc2VwYXJhdGUgcGF0Y2ggZm9yIHRoaXMgYmUgcHJl ZmVycmVkPyBJIGRvbid0IG1pbmQgd29ya2luZyBpdAo+IGludG8gdGhpcyBvbmUgYXMgd2VsbC4K CnllcywgdGhpcyBtYWtlcyBzZW5zZSBhcyBhIHN0YW5kYWxvbmUgcGF0Y2ggSU1ITy4KCj4+ID4K Pj4gPiAgICAgICBkaWUgImdyb3VwIG5hbWUgJyRncm91cG5hbWUnIGNvbnRhaW5zIGludmFsaWQg Y2hhcmFjdGVyc1xuIiBpZiAhJG5vZXJyOwo+PiA+Cj4+ID4gZGlmZiAtLWdpdCBhL3NyYy9QVkUv QXV0aC9PcGVuSWQucG0gYi9zcmMvUFZFL0F1dGgvT3BlbklkLnBtCj4+ID4gaW5kZXggYzhlNGRi OS4uZDdiNTU3NCAxMDA3NTUKPj4gPiAtLS0gYS9zcmMvUFZFL0F1dGgvT3BlbklkLnBtCj4+ID4g KysrIGIvc3JjL1BWRS9BdXRoL09wZW5JZC5wbQo+PiA+IEBAIC05LDYgKzksOCBAQCB1c2UgUFZF OjpDbHVzdGVyIHF3KGNmc19yZWdpc3Rlcl9maWxlIGNmc19yZWFkX2ZpbGUgY2ZzX3dyaXRlX2Zp bGUgY2ZzX2xvY2tfZmlsZQo+PiA+Cj4+ID4gIHVzZSBiYXNlIHF3KFBWRTo6QXV0aDo6UGx1Z2lu KTsKPj4gPgo+PiA+ICtvdXIgJGdyb3VwbmFtZV9yZWdleF9jaGFycyA9IHFyL0EtWmEtejAtOVwu XC1fLzsKPj4KPj4gdGhpcyBzaG91bGQgcHJvYmFibHkgYmUgaW4gUFZFOjpBdXRoOjpQbHVnaW4s IHdoZXJlIHRoZSB1c2VyIGFuZCByZWFsbQo+PiBSRXMgYXJlIGFzIHdlbGwuCj4gCj4gSSdtIGp1 c3QgcmVjZW50bHkgZGl2aW5nIGludG8gcGx1Z2lucyBpbiBhbm90aGVyIHBhdGNoIEknbSB3b3Jr aW5nIG9uCj4gYW5kIGRlZmluaXRlbHkgc2VlIHdoZXJlIHRoaXMgbWFrZXMgbW9yZSBzZW5zZS4K PiAKPj4gPiArCj4+ID4gIHN1YiB0eXBlIHsKPj4gPiAgICAgIHJldHVybiAnb3BlbmlkJzsKPj4g PiAgfQo+PiA+IEBAIC00Miw2ICs0NCwzMCBAQCBzdWIgcHJvcGVydGllcyB7Cj4+ID4gICAgICAg ICAgIHR5cGUgPT4gJ3N0cmluZycsCj4+ID4gICAgICAgICAgIG9wdGlvbmFsID0+IDEsCj4+ID4g ICAgICAgfSwKPj4gPiArICAgICAiZ3JvdXBzLWNsYWltIiA9PiB7Cj4+ID4gKyAgICAgICAgIGRl c2NyaXB0aW9uID0+ICJPcGVuSUQgY2xhaW0gdXNlZCB0byByZXRyaWV2ZSBncm91cHMgd2l0aC4i LAo+PiA+ICsgICAgICAgICB0eXBlID0+ICdzdHJpbmcnLAo+Pgo+PiB0aGlzIHNob3VsZCBwcm9i YWJseSBiZSByZXN0cmljdGVkIChvdXIgdXN1YWwgc2FmZWlkIG1pZ2h0IGJlIHRvbwo+PiBzdHJp Y3QgKEkga25vdyBzb21lIE9JREMgcHJvdmlkZXJzIGxpa2UgdG8gdXNlciB0aGluZ3MgbGlrZSBA IGFuZCA6IGluCj4+IGF0dHJpYnV0ZXMsIHdvdWxkIGhhdmUgdG8gY2hlY2sgd2hhdCB0aGUgc3Bl YyBzYXlzIGhlcmU/KSwgYnV0IHNvbWUKPj4gc2Vuc2libGUgc2V0IG9mIGNoYXJhY3RlcnMgYXQg bGVhc3Qgd291bGQgYmUgbmljZSA7KSkKPiAKPiBJZiB0aGlzIGZpZWxkIG11c3QgYmUgcmVzdHJp Y3RlZCwgdGhlbiBJJ2Qgc3VnZ2VzdCB3ZSBzdGFydCB3aXRoCj4gcHJpbnRhYmxlIEFTQ0lJIGNo YXJhY3RlcnMgYXMgYSByZWFzb25hYmxlIGxpbWl0YXRpb24uIFRoYXQgd291bGQKPiBjb3ZlciBl dmVyeXRoaW5nIHRoYXQgd291bGQgbGlrZWx5IGVuZCB1cCBpbiBhIEpXVC4gSWYgYW55dGhpbmcK PiBvdXRzaWRlIG9mIHRoYXQgaXMgbmVlZGVkLCBhIHBhdGNoIGNvdWxkIGJlIHN1Ym1pdHRlZC4g Q291bGQgc3RhcnQKPiB3aXRoIGEgMTI4IGNoYXJhY3RlciBsaW1pdCBvbiBsZW5ndGggYXMgd2Vs bC4gVGhvdWdodHM/Cgpzb3VuZHMgc2Vuc2libGUuCgo+IAo+PiA+ICsgICAgICAgICBvcHRpb25h bCA9PiAxLAo+PiA+ICsgICAgIH0sCj4+ID4gKyAgICAgImdyb3Vwcy1hdXRvY3JlYXRlIiA9PiB7 Cj4+ID4gKyAgICAgICAgIGRlc2NyaXB0aW9uID0+ICJBdXRvbWF0aWNhbGx5IGNyZWF0ZSBncm91 cHMgaWYgdGhleSBkbyBub3QgZXhpc3QuIiwKPj4gPiArICAgICAgICAgb3B0aW9uYWwgPT4gMSwK Pj4gPiArICAgICAgICAgdHlwZSA9PiAnYm9vbGVhbicsCj4+ID4gKyAgICAgICAgIGRlZmF1bHQg PT4gMCwKPj4gPiArICAgICB9LAo+PiA+ICsgICAgICJncm91cHMtb3ZlcndyaXRlIiA9PiB7Cj4+ ID4gKyAgICAgICAgIGRlc2NyaXB0aW9uID0+ICJBbGwgZ3JvdXBzIHdpbGwgYmUgb3ZlcndyaXR0 ZW4gZm9yIHRoZSB1c2VyIG9uIGxvZ2luLiIsCj4+ID4gKyAgICAgICAgIHR5cGUgPT4gJ2Jvb2xl YW4nLAo+PiA+ICsgICAgICAgICBkZWZhdWx0ID0+IDAsCj4+ID4gKyAgICAgICAgIG9wdGlvbmFs ID0+IDEsCj4+ID4gKyAgICAgfSwKPj4gPiArICAgICAiZ3JvdXBzLXJlcGxhY2UtY2hhcmFjdGVy IiA9PiB7Cj4+ID4gKyAgICAgICAgIGRlc2NyaXB0aW9uID0+ICJDaGFyYWN0ZXIgdXNlZCB0byBy ZXBsYWNlIGFueSBpbnZhbGlkIGNoYXJhY3RlcnMgaW4gZ3JvdXBzIGZyb20gcHJvdmlkZXIuIiwK Pj4gPiArICAgICAgICAgdHlwZSA9PiAnc3RyaW5nJywKPj4gPiArICAgICAgICAgcGF0dGVybiA9 PiBxci9eWyRncm91cG5hbWVfcmVnZXhfY2hhcnNdJC8sCj4+ID4gKyAgICAgICAgIGRlZmF1bHQg PT4gJ18nLAo+PiA+ICsgICAgICAgICBvcHRpb25hbCA9PiAxLAo+PiA+ICsgICAgIH0sCj4+ID4g ICAgICAgcHJvbXB0ID0+IHsKPj4gPiAgICAgICAgICAgZGVzY3JpcHRpb24gPT4gIlNwZWNpZmll cyB3aGV0aGVyIHRoZSBBdXRob3JpemF0aW9uIFNlcnZlciBwcm9tcHRzIHRoZSBFbmQtVXNlciBm b3IiCj4+ID4gICAgICAgICAgICAgICAuIiByZWF1dGhlbnRpY2F0aW9uIGFuZCBjb25zZW50LiIs Cj4+ID4gQEAgLTczLDYgKzk5LDEwIEBAIHN1YiBvcHRpb25zIHsKPj4gPiAgICAgICAiY2xpZW50 LWtleSIgPT4geyBvcHRpb25hbCA9PiAxIH0sCj4+ID4gICAgICAgYXV0b2NyZWF0ZSA9PiB7IG9w dGlvbmFsID0+IDEgfSwKPj4gPiAgICAgICAidXNlcm5hbWUtY2xhaW0iID0+IHsgb3B0aW9uYWwg PT4gMSwgZml4ZWQgPT4gMSB9LAo+PiA+ICsgICAgICJncm91cHMtY2xhaW0iID0+IHsgb3B0aW9u YWwgPT4gMSB9LAo+PiA+ICsgICAgICJncm91cHMtYXV0b2NyZWF0ZSIgPT4geyBvcHRpb25hbCA9 PiAxIH0sCj4+ID4gKyAgICAgImdyb3Vwcy1vdmVyd3JpdGUiID0+IHsgb3B0aW9uYWwgPT4gMSB9 LAo+PiA+ICsgICAgICJncm91cHMtcmVwbGFjZS1jaGFyYWN0ZXIiID0+IHsgb3B0aW9uYWwgPT4g MX0sCj4+ID4gICAgICAgcHJvbXB0ID0+IHsgb3B0aW9uYWwgPT4gMSB9LAo+PiA+ICAgICAgIHNj b3BlcyA9PiB7IG9wdGlvbmFsID0+IDEgfSwKPj4gPiAgICAgICAiYWNyLXZhbHVlcyIgPT4geyBv cHRpb25hbCA9PiAxIH0sCj4+ID4gLS0KPj4gPiAyLjM5LjUKPj4gPgo+PiA+Cj4+ID4gX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4gPiBwdmUtZGV2ZWwg bWFpbGluZyBsaXN0Cj4+ID4gcHZlLWRldmVsQGxpc3RzLnByb3htb3guY29tCj4+ID4gaHR0cHM6 Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vcHZlLWRldmVsCj4+ ID4KPj4gPgo+PiA+Cj4+Cj4gCj4gCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KcHZlLWRldmVsIG1haWxpbmcgbGlzdApwdmUtZGV2ZWxAbGlzdHMucHJv eG1veC5jb20KaHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGlu Zm8vcHZlLWRldmVsCg==