From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <pbs-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 797261FF16E
	for <inbox@lore.proxmox.com>; Mon, 17 Feb 2025 12:49:25 +0100 (CET)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id 8AB841E2B5;
	Mon, 17 Feb 2025 12:49:23 +0100 (CET)
Message-ID: <09867dfc-be1f-421f-be61-b286c3c913a7@proxmox.com>
Date: Mon, 17 Feb 2025 12:49:17 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird Beta
To: Proxmox Backup Server development discussion <pbs-devel@lists.proxmox.com>,
 =?UTF-8?Q?Lauren=C8=9Biu_Leahu-Vl=C4=83ducu?= <l.leahu-vladucu@proxmox.com>
References: <20250206122833.171965-1-l.leahu-vladucu@proxmox.com>
 <20250206122833.171965-4-l.leahu-vladucu@proxmox.com>
Content-Language: en-US
From: Dominik Csapak <d.csapak@proxmox.com>
In-Reply-To: <20250206122833.171965-4-l.leahu-vladucu@proxmox.com>
X-SPAM-LEVEL: Spam detection results:  0
 AWL 0.021 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: [pbs-devel] [PATCH proxmox-backup v2 2/2] Automatically select
 a drive (if part of a changer) when loading tapes
X-BeenThere: pbs-devel@lists.proxmox.com
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Proxmox Backup Server development discussion
 <pbs-devel.lists.proxmox.com>
List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pbs-devel>, 
 <mailto:pbs-devel-request@lists.proxmox.com?subject=unsubscribe>
List-Archive: <http://lists.proxmox.com/pipermail/pbs-devel/>
List-Post: <mailto:pbs-devel@lists.proxmox.com>
List-Help: <mailto:pbs-devel-request@lists.proxmox.com?subject=help>
List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel>, 
 <mailto:pbs-devel-request@lists.proxmox.com?subject=subscribe>
Reply-To: Proxmox Backup Server development discussion
 <pbs-devel@lists.proxmox.com>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: pbs-devel-bounces@lists.proxmox.com
Sender: "pbs-devel" <pbs-devel-bounces@lists.proxmox.com>

T25lIHRoaW5nIGkgc2VlbWluZ2x5IGRpZCBub3Qgbm90aWNlIGxhc3QgdGltZSBhcm91bmQ6Cgp0
aGlzICdhdXRvJyBjaG9vc2luZyBpcyBqdXN0IGJlc3QtZWZmb3J0LCBubz8KdGhlcmUgaXMgbm8g
bWVjaGFuaXNtIGZyb20gcGFyYWxsZWwgcmVxdWVzdCB0byBibG9jayBlYWNoIG90aGVyPwoKZS5n
LiAyIGxvYWRfbWVkaWEgc3RhcnQgc2ltdWx0YW5lb3VzbHkKCmJvdGggcnVuIHVudGlsIHRoZXkg
Y2hvc2UgZHJpdmUxLCAtPiBvbmUgb2YgdGhlIG9wZXJhdGlvbnMgd2lsbCB1c2UgaXQKdGhlIG90
aGVyIHdpbGwgZWl0aGVyIGZhaWwgb3IgdGltZW91dAoKc2luY2UgdGhlIHVwZGF0ZSBvbmx5IGhh
cHBlbnMgb24gdGhlIGFjdHVhbCAnbG9hZF9tZWRpYScKCndvdWxkIGl0IGJlIHBvc3NpYmxlIHRv
IGhvbGQgYSBsb2NrIG92ZXIgJ2Nob29zZV9kcml2ZXMnCnRoYXQgY291bGQgYWxzbyB1cGRhdGUg
dGhlIHVzYWdlIGhlcmUgPwoKdGhlbiB0aGUgY2hvb3NpbmcgbWlnaHQgdGFrZSBhIGJpdCBsb25n
ZXIsIGJ1dCB3ZSBjb3VsZCBhdm9pZCB0aGUgc2l0dWF0aW9uIGFib3ZlCgpBbHNvIGEgZmV3IHNt
YWxsZXIgY29tbWVudHMgaW5saW5lOgoKT24gMi82LzI1IDEzOjI4LCBMYXVyZW7Im2l1IExlYWh1
LVZsxINkdWN1IHdyb3RlOgo+IFRoaXMgcGF0Y2ggYWRkcyB0aGUgcG9zc2liaWxpdHkgdG8gbG9h
ZCB0YXBlcyBpbnRvIGRyaXZlcwo+IGF1dG9tYXRpY2FsbHkgYnkgc3BlY2lmeWluZyBhIGNoYW5n
ZXIuIFRoaXMgaXMgdXNlZnVsIGZvciBsYXJnZXIgdGFwZQo+IGxpYnJhcmllcy4gQ2hvb3Npbmcg
YSBkcml2ZSBpcyBkb25lIGJ5IHVzaW5nIHRoZSBkcml2ZSB0aGF0IGhhcyBub3QKPiBiZWVuIHVz
ZWQgdGhlIGxvbmdlc3QuCj4gCj4gQXQgdGhlIG1vbWVudCwgdGhpcyBwYXRjaCBpbXBsZW1lbnRz
IHRoZSBmdW5jdGlvbmFsaXR5IGZvciBhdXRvbWF0aWMKPiBsb2FkaW5nIGJvdGggb3ZlciB0aGUg
QVBJIGFuZCB1c2luZyB0aGUgcHJveG1veC1iYWNrdXAgQ0xJIHRvb2wsIGFzCj4gd2VsbCBhcyBp
biB0aGUgd2ViIFVJIHdoZW4gc2VsZWN0aW5nIGEgY2hhbmdlci4gQSBzZWNvbmQgcGF0Y2ggd2ls
bAo+IGFkZCB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5IHdoZW4gY29uZmlndXJpbmcgYmFja3VwIGpv
YnMuCj4gCj4gUGFydGlhbGx5IGZpeGVzICMzMzUxCj4gCj4gU2lnbmVkLW9mZi1ieTogTGF1cmVu
yJtpdSBMZWFodS1WbMSDZHVjdSA8bC5sZWFodS12bGFkdWN1QHByb3htb3guY29tPgo+IC0tLQo+
ICAgc3JjL2FwaTIvdGFwZS9jaGFuZ2VyLnJzICAgICAgICB8IDEzMSArKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrLQo+ICAgc3JjL2Jpbi9wcm94bW94LWJhY2t1cC1wcm94eS5ycyB8ICAg
MiArLQo+ICAgc3JjL2Jpbi9wcm94bW94LXRhcGUucnMgICAgICAgICB8ICA0OCArKysrKysrKysr
LS0KPiAgIHNyYy90YXBlL2NoYW5nZXIvbW9kLnJzICAgICAgICAgfCAgMjMgKysrKystCj4gICBz
cmMvdGFwZS9kcml2ZS92aXJ0dWFsX3RhcGUucnMgIHwgICA4ICstCj4gICBzcmMvdGFwZS9kcml2
ZV9pbmZvLnJzICAgICAgICAgIHwgIDU2ICsrKysrKysrKysrKysrCj4gICBzcmMvdGFwZS9tb2Qu
cnMgICAgICAgICAgICAgICAgIHwgICAxICsKPiAgIHd3dy90YXBlL0NoYW5nZXJTdGF0dXMuanMg
ICAgICAgfCAgMTUgKysrLQo+ICAgOCBmaWxlcyBjaGFuZ2VkLCAyNjYgaW5zZXJ0aW9ucygrKSwg
MTggZGVsZXRpb25zKC0pCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3RhcGUvZHJpdmVfaW5m
by5ycwo+IAo+IGRpZmYgLS1naXQgYS9zcmMvYXBpMi90YXBlL2NoYW5nZXIucnMgYi9zcmMvYXBp
Mi90YXBlL2NoYW5nZXIucnMKPiBpbmRleCA3ZWNmN2JmZi4uYWEwNjgwNGQgMTAwNjQ0Cj4gLS0t
IGEvc3JjL2FwaTIvdGFwZS9jaGFuZ2VyLnJzCj4gKysrIGIvc3JjL2FwaTIvdGFwZS9jaGFuZ2Vy
LnJzCj4gQEAgLTEsMTQgKzEsMTUgQEAKPiAgIHVzZSBzdGQ6OmNvbGxlY3Rpb25zOjpIYXNoTWFw
Owo+ICAgCj4gLXVzZSBhbnlob3c6OkVycm9yOwo+ICt1c2UgYW55aG93Ojp7YmFpbCwgRXJyb3J9
Owo+ICAgdXNlIHNlcmRlX2pzb246OlZhbHVlOwo+ICAgCj4gICB1c2UgcHJveG1veF9yb3V0ZXI6
OntsaXN0X3N1YmRpcnNfYXBpX21ldGhvZCwgUGVybWlzc2lvbiwgUm91dGVyLCBScGNFbnZpcm9u
bWVudCwgU3ViZGlyTWFwfTsKPiAgIHVzZSBwcm94bW94X3NjaGVtYTo6YXBpOwo+ICAgCj4gICB1
c2UgcGJzX2FwaV90eXBlczo6ewo+IC0gICAgQXV0aGlkLCBDaGFuZ2VyTGlzdEVudHJ5LCBMdG9U
YXBlRHJpdmUsIE10eEVudHJ5S2luZCwgTXR4U3RhdHVzRW50cnksIFNjc2lUYXBlQ2hhbmdlciwK
PiAtICAgIENIQU5HRVJfTkFNRV9TQ0hFTUEsIFBSSVZfVEFQRV9BVURJVCwgUFJJVl9UQVBFX1JF
QUQsCj4gKyAgICBBdXRoaWQsIENoYW5nZXJMaXN0RW50cnksIERldmljZUFjdGl2aXR5LCBEcml2
ZUxpc3RFbnRyeSwgTHRvVGFwZURyaXZlLCBNdHhFbnRyeUtpbmQsCj4gKyAgICBNdHhTdGF0dXNF
bnRyeSwgU2NzaVRhcGVDaGFuZ2VyLCBDSEFOR0VSX05BTUVfU0NIRU1BLCBNRURJQV9MQUJFTF9T
Q0hFTUEsIFBSSVZfVEFQRV9BVURJVCwKPiArICAgIFBSSVZfVEFQRV9SRUFELCBVUElEX1NDSEVN
QSwKPiAgIH07Cj4gICB1c2UgcGJzX2NvbmZpZzo6Q2FjaGVkVXNlckluZm87Cj4gICB1c2UgcGJz
X3RhcGU6OnsKPiBAQCAtMTk5LDcgKzIwMCwxMzEgQEAgcHViIGZuIGxpc3RfY2hhbmdlcnMoCj4g
ICAgICAgT2sobGlzdCkKPiAgIH0KPiAgIAo+ICsjW2FwaSgKPiArICAgIGlucHV0OiB7Cj4gKyAg
ICAgICAgcHJvcGVydGllczogewo+ICsgICAgICAgICAgICBuYW1lOiB7Cj4gKyAgICAgICAgICAg
ICAgICBzY2hlbWE6IENIQU5HRVJfTkFNRV9TQ0hFTUEsCj4gKyAgICAgICAgICAgIH0sCj4gKyAg
ICAgICAgICAgICJsYWJlbC10ZXh0Ijogewo+ICsgICAgICAgICAgICAgICAgc2NoZW1hOiBNRURJ
QV9MQUJFTF9TQ0hFTUEsCj4gKyAgICAgICAgICAgIH0sCj4gKyAgICAgICAgfSwKPiArICAgIH0s
Cj4gKyAgICByZXR1cm5zOiB7Cj4gKyAgICAgICAgc2NoZW1hOiBVUElEX1NDSEVNQSwKPiArICAg
IH0sCj4gKyAgICBhY2Nlc3M6IHsKPiArICAgICAgICBwZXJtaXNzaW9uOiAmUGVybWlzc2lvbjo6
UHJpdmlsZWdlKCZbInRhcGUiLCAiZGV2aWNlIiwgIntuYW1lfSJdLCBQUklWX1RBUEVfUkVBRCwg
ZmFsc2UpLAo+ICsgICAgfSwKPiArKV0KPiArLy8vIExvYWQgbWVkaWEgd2l0aCBzcGVjaWZpZWQg
bGFiZWwKPiArLy8vCj4gKy8vLyBJc3N1ZSBhIG1lZGlhIGxvYWQgcmVxdWVzdCB0byB0aGUgYXNz
b2NpYXRlZCBjaGFuZ2VyIGRldmljZS4KPiArcHViIGZuIGxvYWRfbWVkaWEoCj4gKyAgICBuYW1l
OiBTdHJpbmcsCj4gKyAgICBsYWJlbF90ZXh0OiBTdHJpbmcsCj4gKyAgICBycGNlbnY6ICZtdXQg
ZHluIFJwY0Vudmlyb25tZW50LAo+ICspIC0+IFJlc3VsdDxWYWx1ZSwgRXJyb3I+IHsKPiArICAg
IGxldCBkcml2ZSA9IGNob29zZV9kcml2ZSgmbmFtZSwgcnBjZW52KTsKPiArICAgIHN1cGVyOjpk
cml2ZTo6bG9hZF9tZWRpYShkcml2ZT8sIGxhYmVsX3RleHQsIHJwY2VudikKPiArfQo+ICsKPiAr
I1thcGkoCj4gKyAgICBpbnB1dDogewo+ICsgICAgICAgIHByb3BlcnRpZXM6IHsKPiArICAgICAg
ICAgICAgbmFtZTogewo+ICsgICAgICAgICAgICAgICAgc2NoZW1hOiBDSEFOR0VSX05BTUVfU0NI
RU1BLAo+ICsgICAgICAgICAgICB9LAo+ICsgICAgICAgICAgICAic291cmNlLXNsb3QiOiB7Cj4g
KyAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogIlNvdXJjZSBzbG90IG51bWJlci4iLAo+ICsg
ICAgICAgICAgICAgICAgbWluaW11bTogMSwKPiArICAgICAgICAgICAgfSwKPiArICAgICAgICB9
LAo+ICsgICAgfSwKPiArICAgIGFjY2Vzczogewo+ICsgICAgICAgIHBlcm1pc3Npb246ICZQZXJt
aXNzaW9uOjpQcml2aWxlZ2UoJlsidGFwZSIsICJkZXZpY2UiLCAie25hbWV9Il0sIFBSSVZfVEFQ
RV9SRUFELCBmYWxzZSksCj4gKyAgICB9LAo+ICspXQo+ICsvLy8gTG9hZCBtZWRpYSBmcm9tIHRo
ZSBzcGVjaWZpZWQgc2xvdAo+ICsvLy8KPiArLy8vIElzc3VlIGEgbWVkaWEgbG9hZCByZXF1ZXN0
IHRvIHRoZSBhc3NvY2lhdGVkIGNoYW5nZXIgZGV2aWNlLgo+ICtwdWIgYXN5bmMgZm4gbG9hZF9z
bG90KAo+ICsgICAgbmFtZTogU3RyaW5nLAo+ICsgICAgc291cmNlX3Nsb3Q6IHU2NCwKPiArICAg
IHJwY2VudjogJm11dCBkeW4gUnBjRW52aXJvbm1lbnQsCj4gKykgLT4gUmVzdWx0PCgpLCBFcnJv
cj4gewo+ICsgICAgbGV0IGRyaXZlID0gY2hvb3NlX2RyaXZlKCZuYW1lLCBycGNlbnYpOwo+ICsg
ICAgc3VwZXI6OmRyaXZlOjpsb2FkX3Nsb3QoZHJpdmU/LCBzb3VyY2Vfc2xvdCkuYXdhaXQKPiAr
fQo+ICsKPiArLy8vIFJldHVybnMgdGhlIGlkbGUgZHJpdmVzIGFzc29jaWF0ZWQgd2l0aCB0aGUg
c3BlY2lmaWVkIGNoYW5nZXIuCj4gK2ZuIGdldF9pZGxlX2RyaXZlcygKPiArICAgIGNoYW5nZXI6
ICZzdHIsCj4gKyAgICBycGNlbnY6ICZtdXQgZHluIFJwY0Vudmlyb25tZW50LAo+ICspIC0+IFJl
c3VsdDxWZWM8RHJpdmVMaXN0RW50cnk+LCBFcnJvcj4gewo+ICsgICAgbGV0IGRyaXZlcyA9IHN1
cGVyOjpkcml2ZTo6bGlzdF9kcml2ZXMoU29tZShjaGFuZ2VyLnRvX3N0cmluZygpKSwgdHJ1ZSwg
VmFsdWU6Ok51bGwsIHJwY2VudikKPiArICAgICAgICAubWFwX2Vycih8ZXJyfCBhbnlob3c6OmZv
cm1hdF9lcnIhKCJjYW5ub3QgcXVlcnkgZHJpdmVzOiB7ZXJyfSIpKT87Cj4gKwo+ICsgICAgbGV0
IGZpbHRlciA9IGRyaXZlcwo+ICsgICAgICAgIC5pbnRvX2l0ZXIoKQo+ICsgICAgICAgIC5maWx0
ZXIofGVudHJ5fCBtYXRjaGVzIShlbnRyeS5hY3Rpdml0eSwgTm9uZSB8IFNvbWUoRGV2aWNlQWN0
aXZpdHk6Ok5vQWN0aXZpdHkpKSk7Cj4gKwo+ICsgICAgT2soZmlsdGVyLmNvbGxlY3QoKSkKPiAr
fQo+ICsKPiArLy8vIFJldHVybnMgdGhlIGRyaXZlcyBzb3J0ZWQgYnkgdGhlIGxhc3QgdXNhZ2Uu
Cj4gKy8vLyBUaGUgZmlyc3QgZHJpdmUgaW4gdGhlIHJldHVybmVkIHZlY3RvciBpcyB0aGUgb25l
IHRoYXQgaGFzIG5vdCBiZWVuIHVzZWQgdGhlIGxvbmdlc3QsIG9yIG5ldmVyLgo+ICtmbiBnZXRf
ZHJpdmVzX3NvcnRlZF9ieV9sYXN0X3VzYWdlKAoKd291bGQgaXQgbWF5YmUgbWFrZSBzZW5zZSB0
byBmaWx0ZXIgb3V0IHRoZSBub24taWRsZSBkcml2ZXMgaGVyZSBhbHJlYWR5PwpUaGF0IHdheSB0
aGUgY29kZSBpbiAnY2hvb3NlX2RyaXZlJyB3b3VsZCBiZWNvbWUgZXZlbiBtb3JlIHNpbXBsZQoo
dGhvdWdoIG5vIGhhcmQgZmVlbGluZ3MgZm9yIHRoaXMgb24gbXkgc2lkZSkKCj4gKyAgICBjaGFu
Z2VyOiAmc3RyLAo+ICsgICAgcnBjZW52OiAmbXV0IGR5biBScGNFbnZpcm9ubWVudCwKPiArKSAt
PiBSZXN1bHQ8VmVjPERyaXZlTGlzdEVudHJ5PiwgRXJyb3I+IHsKPiArICAgIGxldCBkcml2ZXNf
bGFzdF91c2FnZSA9IGNyYXRlOjp0YXBlOjpkcml2ZV9pbmZvOjpnZXRfZHJpdmVzX2xhc3RfdXNh
Z2UoKT87Cj4gKyAgICBsZXQgbXV0IGRyaXZlcyA9IHN1cGVyOjpkcml2ZTo6bGlzdF9kcml2ZXMo
U29tZShjaGFuZ2VyLmludG8oKSksIHRydWUsIFZhbHVlOjpOdWxsLCBycGNlbnYpPzsKPiArICAg
IGRyaXZlcy5zb3J0X2J5KHxmaXJzdCwgc2Vjb25kfCB7Cj4gKyAgICAgICAgbGV0IGZpcnN0X3Vz
YWdlID0gZHJpdmVzX2xhc3RfdXNhZ2UuZHJpdmVzLmdldCgmZmlyc3QuY29uZmlnLm5hbWUpOwo+
ICsgICAgICAgIGxldCBzZWNvbmRfdXNhZ2UgPSBkcml2ZXNfbGFzdF91c2FnZS5kcml2ZXMuZ2V0
KCZzZWNvbmQuY29uZmlnLm5hbWUpOwo+ICsKPiArICAgICAgICBtYXRjaCAoZmlyc3RfdXNhZ2Us
IHNlY29uZF91c2FnZSkgewo+ICsgICAgICAgICAgICAoU29tZShmaXJzdF91c2FnZSksIFNvbWUo
c2Vjb25kX3VzYWdlKSkgPT4gewo+ICsgICAgICAgICAgICAgICAgZmlyc3RfdXNhZ2UubGFzdF91
c2FnZS5jbXAoJnNlY29uZF91c2FnZS5sYXN0X3VzYWdlKQo+ICsgICAgICAgICAgICB9Cj4gKyAg
ICAgICAgICAgIChTb21lKF8pLCBOb25lKSA9PiBzdGQ6OmNtcDo6T3JkZXJpbmc6OkdyZWF0ZXIs
Cj4gKyAgICAgICAgICAgIChOb25lLCBTb21lKF8pKSA9PiBzdGQ6OmNtcDo6T3JkZXJpbmc6Okxl
c3MsCj4gKyAgICAgICAgICAgIChOb25lLCBOb25lKSA9PiBzdGQ6OmNtcDo6T3JkZXJpbmc6OkVx
dWFsLAo+ICsgICAgICAgIH0KPiArICAgIH0pOwo+ICsKPiArICAgIE9rKGRyaXZlcykKPiArfQo+
ICsKPiArZm4gY2hvb3NlX2RyaXZlKGNoYW5nZXI6ICZzdHIsIHJwY2VudjogJm11dCBkeW4gUnBj
RW52aXJvbm1lbnQpIC0+IFJlc3VsdDxTdHJpbmcsIEVycm9yPiB7Cj4gKyAgICBsZXQgaWRsZV9k
cml2ZXMgPSBnZXRfaWRsZV9kcml2ZXMoY2hhbmdlciwgcnBjZW52KT87Cj4gKyAgICBsZXQgZHJp
dmVzX2luX29yZGVyID0gZ2V0X2RyaXZlc19zb3J0ZWRfYnlfbGFzdF91c2FnZShjaGFuZ2VyLCBy
cGNlbnYpOwo+ICsKPiArICAgIC8vIElmIHRoZSBkcml2ZXMgaW5mbyBjb3VsZCBub3QgYmUgcmV0
cmlldmVkLCBzaW1wbHkgdHJ5IHRvIHVzZSB0aGUgZmlyc3Qgb25lIChpZiBwb3NzaWJsZSkuCj4g
KyAgICBsZXQgT2soZHJpdmVzX2luX29yZGVyKSA9IGRyaXZlc19pbl9vcmRlciBlbHNlIHsKPiAr
ICAgICAgICBtYXRjaCBpZGxlX2RyaXZlcy5maXJzdCgpIHsKPiArICAgICAgICAgICAgU29tZShp
ZGxlX2RyaXZlKSA9PiByZXR1cm4gT2soaWRsZV9kcml2ZS5jb25maWcubmFtZS5jbG9uZSgpKSwK
PiArICAgICAgICAgICAgTm9uZSA9PiBiYWlsISgidGhlcmUgYXJlIG5vIGlkbGUgZHJpdmVzIHRv
IGNob29zZSBmb3IgYXV0b21hdGljIGRyaXZlIGFzc2lnbm1lbnQiKSwKPiArICAgICAgICB9Cj4g
KyAgICB9OwoKQUZBSUsgd2UgZG9uJ3QgdXNlIHRoZSBsZXQgWCA9IGZvbyBlbHNlIHt9IHN5bnRh
eCB5ZXQuIGFuZCBwZXJzb25hbGx5IEknbSBtb3JlIGluIGZhdm9yIG9mCgpsZXQgZHJpdmVzID0g
bWF0Y2ggZHJpdmVzIHsKICAgICBPayhkcml2ZXMpID0+IGRyaXZlcywKICAgICBFcnIoZXJyKSA9
PiB7CiAgICAgICAgIC4uCiAgICAgfQp9OwoKaGVyZSBmb3IgdHdvIHJlYXNvbnM6CgoqIGl0J3Mg
YSBiaXQgbW9yZSBvYnZpb3VzIHRoYXQgdGhlcmUgYXJlIHR3byBjYXNlcyAoSSBoYWQgdG8gbG9v
ayB0d2ljZSB0byBzZWUgdGhlICdlbHNlJywKICAgYnV0IHRoYXQgbWlnaHQganVzdCBtZSBub3Qg
YmVpbmcgdXNlZCB0byB0aGlzIHN5bnRheCkKKiB3ZSBjYW4gZG8gc29tZXRoaW5nIHdpdGggZXJy
IGhlcmUsIG5hbWVseSBpJ2QgbGlrZSB0byBsb2cgdGhhdCB3aXRoIGUuZy4gbG9nOjp3YXJuCiAg
IChyZXRyaWV2aW5nIHRoZSBkcml2ZXMgKyB1c2FnZSBzaG91bGQgbm90IHJ1biBpbnRvIGFuIGVy
cm9yLCBzbyBoYXZpbmcgdGhhdCBpbiB0aGUKICAgbG9nIGNhbiBvbmx5IGJlIGdvb2QgZm9yIGRl
YnVnZ2luZykKCgo+ICsKPiArICAgIGxldCBjaG9zZW5fZHJpdmUgPSBkcml2ZXNfaW5fb3JkZXIu
aXRlcigpLmZpbmQofGRyaXZlfCB7Cj4gKyAgICAgICAgaWRsZV9kcml2ZXMKPiArICAgICAgICAg
ICAgLml0ZXIoKQo+ICsgICAgICAgICAgICAuYW55KHxpZGxlX2RyaXZlfCBkcml2ZS5jb25maWcu
bmFtZSA9PSBpZGxlX2RyaXZlLmNvbmZpZy5uYW1lKQo+ICsgICAgfSk7Cj4gKwo+ICsgICAgbWF0
Y2ggY2hvc2VuX2RyaXZlIHsKPiArICAgICAgICBTb21lKGNob3Nlbl9kcml2ZSkgPT4gT2soY2hv
c2VuX2RyaXZlLmNvbmZpZy5uYW1lLmNsb25lKCkpLAo+ICsgICAgICAgIE5vbmUgPT4gYmFpbCEo
InRoZXJlIGFyZSBubyBpZGxlIGRyaXZlcyB0byBjaG9vc2UgZm9yIGF1dG9tYXRpYyBkcml2ZSBh
c3NpZ25tZW50IiksCj4gKyAgICB9Cj4gK30KPiArCj4gICBjb25zdCBTVUJESVJTOiBTdWJkaXJN
YXAgPSAmWwo+ICsgICAgKCJsb2FkLW1lZGlhIiwgJlJvdXRlcjo6bmV3KCkucG9zdCgmQVBJX01F
VEhPRF9MT0FEX01FRElBKSksCj4gKyAgICAoImxvYWQtc2xvdCIsICZSb3V0ZXI6Om5ldygpLnBv
c3QoJkFQSV9NRVRIT0RfTE9BRF9TTE9UKSksCj4gICAgICAgKCJzdGF0dXMiLCAmUm91dGVyOjpu
ZXcoKS5nZXQoJkFQSV9NRVRIT0RfR0VUX1NUQVRVUykpLAo+ICAgICAgICgidHJhbnNmZXIiLCAm
Um91dGVyOjpuZXcoKS5wb3N0KCZBUElfTUVUSE9EX1RSQU5TRkVSKSksCj4gICBdOwo+IGRpZmYg
LS1naXQgYS9zcmMvYmluL3Byb3htb3gtYmFja3VwLXByb3h5LnJzIGIvc3JjL2Jpbi9wcm94bW94
LWJhY2t1cC1wcm94eS5ycwo+IGluZGV4IGVkZDBhNGNjLi5hMTgzODRjYiAxMDA2NDQKPiAtLS0g
YS9zcmMvYmluL3Byb3htb3gtYmFja3VwLXByb3h5LnJzCj4gKysrIGIvc3JjL2Jpbi9wcm94bW94
LWJhY2t1cC1wcm94eS5ycwo+IEBAIC00MzIsNyArNDMyLDcgQEAgYXN5bmMgZm4gcnVuX3Rhc2tf
c2NoZWR1bGVyKCkgewo+ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cj4gICAgICAgICAgICAg
ICAgICAgICAgIHRyYWNpbmc6OmVycm9yISgidGFzayBzY2hlZHVsZXIgcGFuaWMgLSBjYW5ub3Qg
c2hvdyBlcnJvciBtZXNzYWdlIGR1ZSB0byB1bmtub3duIGVycm9yIHR5cGUiKQo+ICAgICAgICAg
ICAgICAgICAgIH0KPiAtICAgICAgICAgICAgfSwKPiArICAgICAgICAgICAgfQo+ICAgICAgICAg
ICAgICAgT2soRXJyKGVycikpID0+IHRyYWNpbmc6OmVycm9yISgidGFzayBzY2hlZHVsZXIgZmFp
bGVkIC0ge2Vycjo/fSIpLAo+ICAgICAgICAgICAgICAgT2soT2soXykpID0+IHt9Cj4gICAgICAg
ICAgIH0KCnRoaXMgaHVuayBpcwoqIG5vdCByZWxhdGVkCiogbm90IGFwcGx5YWJsZSBhbnltb3Jl
IChzbyB5b3UgaGF2ZSB0byByZWJhc2UgYW55d2F5KQoKPiBkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w
cm94bW94LXRhcGUucnMgYi9zcmMvYmluL3Byb3htb3gtdGFwZS5ycwo+IGluZGV4IDhlODU4NGIz
Li43NTJhZTI1NSAxMDA2NDQKPiAtLS0gYS9zcmMvYmluL3Byb3htb3gtdGFwZS5ycwo+ICsrKyBi
L3NyYy9iaW4vcHJveG1veC10YXBlLnJzCj4gQEAgLTEsNiArMSw3IEBACj4gICB1c2Ugc3RkOjpj
b2xsZWN0aW9uczo6SGFzaE1hcDsKPiAgIAo+ICAgdXNlIGFueWhvdzo6e2JhaWwsIGZvcm1hdF9l
cnIsIEVycm9yfTsKPiArdXNlIHBic19jb25maWc6OmRyaXZlOjpjb21wbGV0ZV9jaGFuZ2VyX25h
bWU7Cj4gICB1c2Ugc2VyZGVfanNvbjo6e2pzb24sIFZhbHVlfTsKPiAgIAo+ICAgdXNlIHByb3ht
b3hfaHVtYW5fYnl0ZTo6SHVtYW5CeXRlOwo+IEBAIC0yMCw5ICsyMSwxMCBAQCB1c2UgcGJzX2Nv
bmZpZzo6ZHJpdmU6OmNvbXBsZXRlX2RyaXZlX25hbWU7Cj4gICB1c2UgcGJzX2NvbmZpZzo6bWVk
aWFfcG9vbDo6Y29tcGxldGVfcG9vbF9uYW1lOwo+ICAgCj4gICB1c2UgcGJzX2FwaV90eXBlczo6
ewo+IC0gICAgQXV0aGlkLCBCYWNrdXBOYW1lc3BhY2UsIEdyb3VwTGlzdEl0ZW0sIFVzZXJpZCwg
REFUQVNUT1JFX01BUF9MSVNUX1NDSEVNQSwgREFUQVNUT1JFX1NDSEVNQSwKPiAtICAgIERSSVZF
X05BTUVfU0NIRU1BLCBHUk9VUF9GSUxURVJfTElTVF9TQ0hFTUEsIE1FRElBX0xBQkVMX1NDSEVN
QSwgTUVESUFfUE9PTF9OQU1FX1NDSEVNQSwKPiAtICAgIE5TX01BWF9ERVBUSF9TQ0hFTUEsIFRB
UEVfUkVTVE9SRV9OQU1FU1BBQ0VfU0NIRU1BLCBUQVBFX1JFU1RPUkVfU05BUFNIT1RfU0NIRU1B
LAo+ICsgICAgQXV0aGlkLCBCYWNrdXBOYW1lc3BhY2UsIEdyb3VwTGlzdEl0ZW0sIFVzZXJpZCwg
Q0hBTkdFUl9OQU1FX1NDSEVNQV9BVVRPTUFUSUNfRFJJVkVfQVNTSUdOTUVOVCwKPiArICAgIERB
VEFTVE9SRV9NQVBfTElTVF9TQ0hFTUEsIERBVEFTVE9SRV9TQ0hFTUEsIERSSVZFX05BTUVfU0NI
RU1BLCBHUk9VUF9GSUxURVJfTElTVF9TQ0hFTUEsCj4gKyAgICBNRURJQV9MQUJFTF9TQ0hFTUEs
IE1FRElBX1BPT0xfTkFNRV9TQ0hFTUEsIE5TX01BWF9ERVBUSF9TQ0hFTUEsIFRBUEVfUkVTVE9S
RV9OQU1FU1BBQ0VfU0NIRU1BLAo+ICsgICAgVEFQRV9SRVNUT1JFX1NOQVBTSE9UX1NDSEVNQSwK
PiAgIH07Cj4gICB1c2UgcGJzX3RhcGU6OntCbG9ja1JlYWRFcnJvciwgTWVkaWFDb250ZW50SGVh
ZGVyLCBQUk9YTU9YX0JBQ0tVUF9DT05URU5UX0hFQURFUl9NQUdJQ18xXzB9Owo+ICAgCj4gQEAg
LTIxNCw2ICsyMTYsMTAgQEAgYXN5bmMgZm4gZWplY3RfbWVkaWEobXV0IHBhcmFtOiBWYWx1ZSkg
LT4gUmVzdWx0PCgpLCBFcnJvcj4gewo+ICAgICAgICAgICAgICAgICAgIHNjaGVtYTogRFJJVkVf
TkFNRV9TQ0hFTUEsCj4gICAgICAgICAgICAgICAgICAgb3B0aW9uYWw6IHRydWUsCj4gICAgICAg
ICAgICAgICB9LAo+ICsgICAgICAgICAgICBjaGFuZ2VyOiB7Cj4gKyAgICAgICAgICAgICAgICBz
Y2hlbWE6IENIQU5HRVJfTkFNRV9TQ0hFTUFfQVVUT01BVElDX0RSSVZFX0FTU0lHTk1FTlQsCj4g
KyAgICAgICAgICAgICAgICBvcHRpb25hbDogdHJ1ZSwKPiArICAgICAgICAgICAgfSwKPiAgICAg
ICAgICAgICAgICJsYWJlbC10ZXh0Ijogewo+ICAgICAgICAgICAgICAgICAgIHNjaGVtYTogTUVE
SUFfTEFCRUxfU0NIRU1BLAo+ICAgICAgICAgICAgICAgfSwKPiBAQCAtMjMwLDExICsyMzYsMjEg
QEAgYXN5bmMgZm4gbG9hZF9tZWRpYShtdXQgcGFyYW06IFZhbHVlKSAtPiBSZXN1bHQ8KCksIEVy
cm9yPiB7Cj4gICAKPiAgICAgICBsZXQgKGNvbmZpZywgX2RpZ2VzdCkgPSBwYnNfY29uZmlnOjpk
cml2ZTo6Y29uZmlnKCk/Owo+ICAgCj4gLSAgICBsZXQgZHJpdmUgPSBleHRyYWN0X2RyaXZlX25h
bWUoJm11dCBwYXJhbSwgJmNvbmZpZyk/Owo+ICsgICAgbGV0IGRyaXZlID0gZXh0cmFjdF9kcml2
ZV9uYW1lKCZtdXQgcGFyYW0sICZjb25maWcpOwo+ICsgICAgbGV0IGNoYW5nZXIgPSBwYXJhbVsi
Y2hhbmdlciJdLmFzX3N0cigpOwo+ICsKPiArICAgIGxldCBwYXRoID0gbWF0Y2ggKGNoYW5nZXIs
IGRyaXZlKSB7Cj4gKyAgICAgICAgKFNvbWUoY2hhbmdlciksIEVycihfKSkgPT4gZm9ybWF0ISgi
YXBpMi9qc29uL3RhcGUvY2hhbmdlci97Y2hhbmdlcn0vbG9hZC1tZWRpYSIpLAo+ICsgICAgICAg
IChOb25lLCBPayhkcml2ZSkpID0+IGZvcm1hdCEoImFwaTIvanNvbi90YXBlL2RyaXZlL3tkcml2
ZX0vbG9hZC1tZWRpYSIpLAo+ICsgICAgICAgIF8gPT4gYmFpbCEoImVpdGhlciBhIGNoYW5nZXIg
b3IgYSBkcml2ZSBoYXMgdG8gYmUgc3BlY2lmaWVkIHdoZW4gbG9hZGluZyBtZWRpYSIpLAo+ICsg
ICAgfTsKPiArCj4gKyAgICBpZiBsZXQgU29tZShwYXJhbSkgPSBwYXJhbS5hc19vYmplY3RfbXV0
KCkgewo+ICsgICAgICAgIHBhcmFtLnJlbW92ZSgiY2hhbmdlciIpOwo+ICsgICAgfQoKbWF5YmUg
d2UgY291bGQgbW92ZSB0aGF0IHJlbW92ZSB1cCB0byB3aGVyZSB3ZSBleHRyYWN0IHRoZSBwYXJh
bWV0ZXIsIGJ1dCBubyBoYXJkIGZlZWxpbmdzCmZyb20gbXkgc2lkZQoKPiAgIAo+ICAgICAgIGxl
dCBjbGllbnQgPSBjb25uZWN0X3RvX2xvY2FsaG9zdCgpPzsKPiAgIAo+IC0gICAgbGV0IHBhdGgg
PSBmb3JtYXQhKCJhcGkyL2pzb24vdGFwZS9kcml2ZS97fS9sb2FkLW1lZGlhIiwgZHJpdmUpOwo+
ICAgICAgIGxldCByZXN1bHQgPSBjbGllbnQucG9zdCgmcGF0aCwgU29tZShwYXJhbSkpLmF3YWl0
PzsKPiAgIAo+ICAgICAgIHZpZXdfdGFza19yZXN1bHQoJmNsaWVudCwgcmVzdWx0LCAmb3V0cHV0
X2Zvcm1hdCkuYXdhaXQ/Owo+IEBAIC0yNzYsNiArMjkyLDEwIEBAIGFzeW5jIGZuIGV4cG9ydF9t
ZWRpYShtdXQgcGFyYW06IFZhbHVlKSAtPiBSZXN1bHQ8KCksIEVycm9yPiB7Cj4gICAgICAgICAg
ICAgICAgICAgc2NoZW1hOiBEUklWRV9OQU1FX1NDSEVNQSwKPiAgICAgICAgICAgICAgICAgICBv
cHRpb25hbDogdHJ1ZSwKPiAgICAgICAgICAgICAgIH0sCj4gKyAgICAgICAgICAgIGNoYW5nZXI6
IHsKPiArICAgICAgICAgICAgICAgIHNjaGVtYTogQ0hBTkdFUl9OQU1FX1NDSEVNQV9BVVRPTUFU
SUNfRFJJVkVfQVNTSUdOTUVOVCwKPiArICAgICAgICAgICAgICAgIG9wdGlvbmFsOiB0cnVlLAo+
ICsgICAgICAgICAgICB9LAo+ICAgICAgICAgICAgICAgInNvdXJjZS1zbG90Ijogewo+ICAgICAg
ICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAiU291cmNlIHNsb3QgbnVtYmVyLiIsCj4gICAgICAg
ICAgICAgICAgICAgdHlwZTogdTY0LAo+IEBAIC0yODgsMTEgKzMwOCwyMSBAQCBhc3luYyBmbiBl
eHBvcnRfbWVkaWEobXV0IHBhcmFtOiBWYWx1ZSkgLT4gUmVzdWx0PCgpLCBFcnJvcj4gewo+ICAg
YXN5bmMgZm4gbG9hZF9tZWRpYV9mcm9tX3Nsb3QobXV0IHBhcmFtOiBWYWx1ZSkgLT4gUmVzdWx0
PCgpLCBFcnJvcj4gewo+ICAgICAgIGxldCAoY29uZmlnLCBfZGlnZXN0KSA9IHBic19jb25maWc6
OmRyaXZlOjpjb25maWcoKT87Cj4gICAKPiAtICAgIGxldCBkcml2ZSA9IGV4dHJhY3RfZHJpdmVf
bmFtZSgmbXV0IHBhcmFtLCAmY29uZmlnKT87Cj4gKyAgICBsZXQgZHJpdmUgPSBleHRyYWN0X2Ry
aXZlX25hbWUoJm11dCBwYXJhbSwgJmNvbmZpZyk7Cj4gKyAgICBsZXQgY2hhbmdlciA9IHBhcmFt
WyJjaGFuZ2VyIl0uYXNfc3RyKCk7Cj4gKwo+ICsgICAgbGV0IHBhdGggPSBtYXRjaCAoY2hhbmdl
ciwgZHJpdmUpIHsKPiArICAgICAgICAoU29tZShjaGFuZ2VyKSwgRXJyKF8pKSA9PiBmb3JtYXQh
KCJhcGkyL2pzb24vdGFwZS9jaGFuZ2VyL3tjaGFuZ2VyfS9sb2FkLXNsb3QiKSwKPiArICAgICAg
ICAoTm9uZSwgT2soZHJpdmUpKSA9PiBmb3JtYXQhKCJhcGkyL2pzb24vdGFwZS9kcml2ZS97ZHJp
dmV9L2xvYWQtc2xvdCIpLAo+ICsgICAgICAgIF8gPT4gYmFpbCEoImVpdGhlciBhIGNoYW5nZXIg
b3IgYSBkcml2ZSBoYXMgdG8gYmUgc3BlY2lmaWVkIHdoZW4gbG9hZGluZyBtZWRpYSIpLAo+ICsg
ICAgfTsKPiArCj4gKyAgICBpZiBsZXQgU29tZShwYXJhbSkgPSBwYXJhbS5hc19vYmplY3RfbXV0
KCkgewo+ICsgICAgICAgIHBhcmFtLnJlbW92ZSgiY2hhbmdlciIpOwo+ICsgICAgfQo+ICAgCgpo
ZXJlIHRvbwoKPiAgICAgICBsZXQgY2xpZW50ID0gY29ubmVjdF90b19sb2NhbGhvc3QoKT87Cj4g
ICAKPiAtICAgIGxldCBwYXRoID0gZm9ybWF0ISgiYXBpMi9qc29uL3RhcGUvZHJpdmUve30vbG9h
ZC1zbG90IiwgZHJpdmUpOwo+ICAgICAgIGNsaWVudC5wb3N0KCZwYXRoLCBTb21lKHBhcmFtKSku
YXdhaXQ/Owo+ICAgCj4gICAgICAgT2soKCkpCj4gQEAgLTEwOTEsMTMgKzExMjEsMTUgQEAgZm4g
bWFpbigpIHsKPiAgICAgICAgICAgICAgIENsaUNvbW1hbmQ6Om5ldygmQVBJX01FVEhPRF9MT0FE
X01FRElBKQo+ICAgICAgICAgICAgICAgICAgIC5hcmdfcGFyYW0oJlsibGFiZWwtdGV4dCJdKQo+
ICAgICAgICAgICAgICAgICAgIC5jb21wbGV0aW9uX2NiKCJkcml2ZSIsIGNvbXBsZXRlX2RyaXZl
X25hbWUpCj4gKyAgICAgICAgICAgICAgICAuY29tcGxldGlvbl9jYigiY2hhbmdlciIsIGNvbXBs
ZXRlX2NoYW5nZXJfbmFtZSkKPiAgICAgICAgICAgICAgICAgICAuY29tcGxldGlvbl9jYigibGFi
ZWwtdGV4dCIsIGNvbXBsZXRlX21lZGlhX2xhYmVsX3RleHQpLAo+ICAgICAgICAgICApCj4gICAg
ICAgICAgIC5pbnNlcnQoCj4gICAgICAgICAgICAgICAibG9hZC1tZWRpYS1mcm9tLXNsb3QiLAo+
ICAgICAgICAgICAgICAgQ2xpQ29tbWFuZDo6bmV3KCZBUElfTUVUSE9EX0xPQURfTUVESUFfRlJP
TV9TTE9UKQo+ICAgICAgICAgICAgICAgICAgIC5hcmdfcGFyYW0oJlsic291cmNlLXNsb3QiXSkK
PiAtICAgICAgICAgICAgICAgIC5jb21wbGV0aW9uX2NiKCJkcml2ZSIsIGNvbXBsZXRlX2RyaXZl
X25hbWUpLAo+ICsgICAgICAgICAgICAgICAgLmNvbXBsZXRpb25fY2IoImRyaXZlIiwgY29tcGxl
dGVfZHJpdmVfbmFtZSkKPiArICAgICAgICAgICAgICAgIC5jb21wbGV0aW9uX2NiKCJjaGFuZ2Vy
IiwgY29tcGxldGVfY2hhbmdlcl9uYW1lKSwKPiAgICAgICAgICAgKQo+ICAgICAgICAgICAuaW5z
ZXJ0KAo+ICAgICAgICAgICAgICAgInVubG9hZCIsCj4gZGlmZiAtLWdpdCBhL3NyYy90YXBlL2No
YW5nZXIvbW9kLnJzIGIvc3JjL3RhcGUvY2hhbmdlci9tb2QucnMKPiBpbmRleCAxOGVhMGY0Ni4u
MjJjNzgxODAgMTAwNjQ0Cj4gLS0tIGEvc3JjL3RhcGUvY2hhbmdlci9tb2QucnMKPiArKysgYi9z
cmMvdGFwZS9jaGFuZ2VyL21vZC5ycwo+IEBAIC0yNzMsNiArMjczLDIxIEBAIHB1YiB0cmFpdCBN
ZWRpYUNoYW5nZSB7Cj4gICAgICAgfQo+ICAgfQo+ICAgCj4gKy8vLyBVcGRhdGVzIHRoZSBkcml2
ZSdzIGxhc3QgdXNhZ2UgdGltZSB0byBub3cuCj4gK3B1YihzdXBlcikgZm4gdXBkYXRlX2RyaXZl
X3VzYWdlKGRyaXZlOiAmc3RyKSAtPiBSZXN1bHQ8KCksIEVycm9yPiB7Cj4gKyAgICBsZXQgX2xv
Y2sgPSBjcmF0ZTo6dGFwZTo6ZHJpdmVfaW5mbzo6bG9jaygpPzsKPiArCj4gKyAgICBsZXQgbXV0
IGRyaXZlc19sYXN0X3VzYWdlID0gY3JhdGU6OnRhcGU6OmRyaXZlX2luZm86OmdldF9kcml2ZXNf
bGFzdF91c2FnZSgpPzsKPiArCj4gKyAgICBsZXQgbm93ID0gcHJveG1veF90aW1lOjplcG9jaF9p
NjQoKTsKPiArICAgIGRyaXZlc19sYXN0X3VzYWdlCj4gKyAgICAgICAgLmRyaXZlcwo+ICsgICAg
ICAgIC5lbnRyeShkcml2ZS5pbnRvKCkpCj4gKyAgICAgICAgLm9yX2RlZmF1bHQoKQo+ICsgICAg
ICAgIC5sYXN0X3VzYWdlID0gbm93Owo+ICsgICAgY3JhdGU6OnRhcGU6OmRyaXZlX2luZm86OnNh
dmVfY29uZmlnKCZkcml2ZXNfbGFzdF91c2FnZSkKPiArfQo+ICsKPiAgIGNvbnN0IFVTRV9NVFg6
IGJvb2wgPSBmYWxzZTsKPiAgIAo+ICAgaW1wbCBTY3NpTWVkaWFDaGFuZ2UgZm9yIFNjc2lUYXBl
Q2hhbmdlciB7Cj4gQEAgLTQyMyw3ICs0MzgsMTMgQEAgaW1wbCBNZWRpYUNoYW5nZSBmb3IgTXR4
TWVkaWFDaGFuZ2VyIHsKPiAgICAgICB9Cj4gICAKPiAgICAgICBmbiBsb2FkX21lZGlhX2Zyb21f
c2xvdCgmbXV0IHNlbGYsIHNsb3Q6IHU2NCkgLT4gUmVzdWx0PE10eFN0YXR1cywgRXJyb3I+IHsK
PiAtICAgICAgICBzZWxmLmNvbmZpZy5sb2FkX3Nsb3Qoc2xvdCwgc2VsZi5kcml2ZV9udW1iZXIo
KSkKPiArICAgICAgICBsZXQgc3RhdHVzID0gc2VsZi5jb25maWcubG9hZF9zbG90KHNsb3QsIHNl
bGYuZHJpdmVfbnVtYmVyKCkpPzsKPiArCj4gKyAgICAgICAgaWYgbGV0IEVycihlcnIpID0gdXBk
YXRlX2RyaXZlX3VzYWdlKHNlbGYuZHJpdmVfbmFtZSgpKSB7Cj4gKyAgICAgICAgICAgIGxvZzo6
d2FybiEoImNvdWxkIG5vdCB1cGRhdGUgZHJpdmUgdXNhZ2U6IHtlcnJ9Iik7Cj4gKyAgICAgICAg
fQo+ICsKPiArICAgICAgICBPayhzdGF0dXMpCj4gICAgICAgfQo+ICAgCj4gICAgICAgZm4gdW5s
b2FkX21lZGlhKCZtdXQgc2VsZiwgdGFyZ2V0X3Nsb3Q6IE9wdGlvbjx1NjQ+KSAtPiBSZXN1bHQ8
TXR4U3RhdHVzLCBFcnJvcj4gewo+IGRpZmYgLS1naXQgYS9zcmMvdGFwZS9kcml2ZS92aXJ0dWFs
X3RhcGUucnMgYi9zcmMvdGFwZS9kcml2ZS92aXJ0dWFsX3RhcGUucnMKPiBpbmRleCA4NjZlNGQz
Mi4uMjEzZjE3ZmUgMTAwNjQ0Cj4gLS0tIGEvc3JjL3RhcGUvZHJpdmUvdmlydHVhbF90YXBlLnJz
Cj4gKysrIGIvc3JjL3RhcGUvZHJpdmUvdmlydHVhbF90YXBlLnJzCj4gQEAgLTU2Nyw3ICs1Njcs
MTMgQEAgaW1wbCBNZWRpYUNoYW5nZSBmb3IgVmlydHVhbFRhcGVIYW5kbGUgewo+ICAgICAgICAg
ICB9Owo+ICAgICAgICAgICBzZWxmLnN0b3JlX3N0YXR1cygmc3RhdHVzKT87Cj4gICAKPiAtICAg
ICAgICBzZWxmLnN0YXR1cygpCj4gKyAgICAgICAgbGV0IHN0YXR1cyA9IHNlbGYuc3RhdHVzKCk/
Owo+ICsKPiArICAgICAgICBpZiBsZXQgRXJyKGVycikgPSBjcmF0ZTo6dGFwZTo6Y2hhbmdlcjo6
dXBkYXRlX2RyaXZlX3VzYWdlKHNlbGYuZHJpdmVfbmFtZSgpKSB7Cj4gKyAgICAgICAgICAgIGxv
Zzo6d2FybiEoImNvdWxkIG5vdCB1cGRhdGUgZHJpdmUgdXNhZ2U6IHtlcnJ9Iik7Cj4gKyAgICAg
ICAgfQo+ICsKPiArICAgICAgICBPayhzdGF0dXMpCj4gICAgICAgfQo+ICAgCj4gICAgICAgZm4g
dW5sb2FkX21lZGlhKCZtdXQgc2VsZiwgX3RhcmdldF9zbG90OiBPcHRpb248dTY0PikgLT4gUmVz
dWx0PE10eFN0YXR1cywgRXJyb3I+IHsKPiBkaWZmIC0tZ2l0IGEvc3JjL3RhcGUvZHJpdmVfaW5m
by5ycyBiL3NyYy90YXBlL2RyaXZlX2luZm8ucnMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGlu
ZGV4IDAwMDAwMDAwLi41YmZhYWIwNwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9zcmMvdGFwZS9k
cml2ZV9pbmZvLnJzCj4gQEAgLTAsMCArMSw1NiBAQAo+ICsvLyEgU2VyaWFsaXplL2Rlc2VyaWFs
aXplIHRwYWUgZHJpdmUgaW5mbyAoZS5nLiB1c2VmdWwgZm9yIHN0YXRpc3RpY3MpCj4gKy8vIQo+
ICsvLyEgVGhpcyBjYW4gYmUgdXNlZCB0byBzdG9yZSBhIHN0YXRlIG92ZXIgYSBsb25nZXIgcGVy
aW9kIG9mIHRpbWUgKGUuZy4gbGFzdCB0YXBlIGRyaXZlIHVzYWdlKS4KPiArCj4gK3VzZSBhbnlo
b3c6OkVycm9yOwo+ICt1c2UgcHJveG1veF9wcm9kdWN0X2NvbmZpZzo6QXBpTG9ja0d1YXJkOwo+
ICt1c2Ugc2VyZGU6OntEZXNlcmlhbGl6ZSwgU2VyaWFsaXplfTsKPiArdXNlIHN0ZDo6Y29sbGVj
dGlvbnM6Okhhc2hNYXA7Cj4gKwo+ICsvLy8gRHJpdmUgaW5mbyBmaWxlIG5hbWUKPiArLy8vIFRo
aXMgaGFzIGEgZ2VuZXJpYyBuYW1lIHRvIGJlIGFibGUgdG8gZXh0ZW5kIHRoZSBpbmZvcm1hdGlv
biBpbiB0aGUgZnV0dXJlLgo+ICtwdWIgY29uc3QgRFJJVkVfSU5GT19GSUxFTkFNRTogJnN0ciA9
IGNvbmNhdCEoCj4gKyAgICBwYnNfYnVpbGRjZmc6OlBST1hNT1hfQkFDS1VQX1NUQVRFX0RJUl9N
ISgpLAo+ICsgICAgIi90YXBlX2RyaXZlX2luZm8uanNvbiIKPiArKTsKPiArLy8vIExvY2sgZmls
ZSBuYW1lICh1c2VkIHRvIHByZXZlbnQgY29uY3VycmVudCBhY2Nlc3MpCj4gK3B1YiBjb25zdCBE
UklWRV9JTkZPX0xPQ0tGSUxFOiAmc3RyID0gY29uY2F0ISgKPiArICAgIHBic19idWlsZGNmZzo6
UFJPWE1PWF9CQUNLVVBfU1RBVEVfRElSX00hKCksCj4gKyAgICAiLy50YXBlX2RyaXZlX2luZm8u
anNvbi5sb2NrIgo+ICspOwo+ICsKPiArI1tkZXJpdmUoU2VyaWFsaXplLCBEZXNlcmlhbGl6ZSwg
RGVmYXVsdCldCj4gK3B1YiBzdHJ1Y3QgU2luZ2xlRHJpdmVMYXN0VXNhZ2Ugewo+ICsgICAgI1tz
ZXJkZSh3aXRoID0gInByb3htb3hfc2VyZGU6OmVwb2NoX2FzX3JmYzMzMzkiKV0KPiArICAgIHB1
YiBsYXN0X3VzYWdlOiBpNjQsCj4gK30KPiArCj4gKyNbZGVyaXZlKFNlcmlhbGl6ZSwgRGVzZXJp
YWxpemUsIERlZmF1bHQpXQo+ICtwdWIgc3RydWN0IERyaXZlc0xhc3RVc2FnZSB7Cj4gKyAgICBw
dWIgZHJpdmVzOiBIYXNoTWFwPFN0cmluZywgU2luZ2xlRHJpdmVMYXN0VXNhZ2U+LAo+ICt9Cj4g
Kwo+ICsvLy8gR2V0IGV4Y2x1c2l2ZSBsb2NrCj4gK3B1YiBmbiBsb2NrKCkgLT4gUmVzdWx0PEFw
aUxvY2tHdWFyZCwgRXJyb3I+IHsKPiArICAgIHByb3htb3hfcHJvZHVjdF9jb25maWc6Om9wZW5f
YXBpX2xvY2tmaWxlKERSSVZFX0lORk9fTE9DS0ZJTEUsIE9wdGlvbjo6Tm9uZSwgdHJ1ZSkKPiAr
fQo+ICsKPiArLy8vIFJlYWQgYW5kIHBhcnNlIHRoZSBkcml2ZSBpbmZvIGZpbGUKPiArLy8vIEN1
cnJlbnRseSB1c2VkIHR1IGdldCB0aGUgZHJpdmUncyBsYXN0IHVzYWdlCj4gK3B1YiBmbiBnZXRf
ZHJpdmVzX2xhc3RfdXNhZ2UoKSAtPiBSZXN1bHQ8RHJpdmVzTGFzdFVzYWdlLCBFcnJvcj4gewo+
ICsgICAgbGV0IGNvbnRlbnQgPSBwcm94bW94X3N5czo6ZnM6OmZpbGVfcmVhZF9vcHRpb25hbF9z
dHJpbmcoRFJJVkVfSU5GT19GSUxFTkFNRSk/Owo+ICsKPiArICAgIG1hdGNoIGNvbnRlbnQgewo+
ICsgICAgICAgIFNvbWUoY29udGVudCkgPT4gewo+ICsgICAgICAgICAgICBsZXQgcmVzdWx0ID0g
c2VyZGVfanNvbjo6ZnJvbV9zdHI6OjxEcml2ZXNMYXN0VXNhZ2U+KCZjb250ZW50KT87Cj4gKyAg
ICAgICAgICAgIE9rKHJlc3VsdCkKPiArICAgICAgICB9Cj4gKyAgICAgICAgTm9uZSA9PiBPayhE
cml2ZXNMYXN0VXNhZ2U6OmRlZmF1bHQoKSksCj4gKyAgICB9Cj4gK30KPiArCj4gKy8vLyBTYXZl
IHRoZSBjb25maWd1cmF0aW9uIGZpbGUKPiArcHViIGZuIHNhdmVfY29uZmlnKGRhdGE6ICZEcml2
ZXNMYXN0VXNhZ2UpIC0+IFJlc3VsdDwoKSwgRXJyb3I+IHsKPiArICAgIGxldCBqc29uID0gc2Vy
ZGVfanNvbjo6dG9fc3RyaW5nKGRhdGEpPzsKPiArICAgIHByb3htb3hfcHJvZHVjdF9jb25maWc6
OnJlcGxhY2VfY29uZmlnKERSSVZFX0lORk9fRklMRU5BTUUsIGpzb24uYXNfYnl0ZXMoKSkKPiAr
fQo+IGRpZmYgLS1naXQgYS9zcmMvdGFwZS9tb2QucnMgYi9zcmMvdGFwZS9tb2QucnMKPiBpbmRl
eCBmMjc2Zjk0OC4uOGI4NzE1MmQgMTAwNjQ0Cj4gLS0tIGEvc3JjL3RhcGUvbW9kLnJzCj4gKysr
IGIvc3JjL3RhcGUvbW9kLnJzCj4gQEAgLTIwLDYgKzIwLDcgQEAgcHViIHVzZSBpbnZlbnRvcnk6
Oio7Cj4gICAKPiAgIHB1YiBtb2QgY2hhbmdlcjsKPiAgIHB1YiBtb2QgZHJpdmU7Cj4gK3B1YiBt
b2QgZHJpdmVfaW5mbzsKPiAgIHB1YiBtb2QgZW5jcnlwdGlvbl9rZXlzOwo+ICAgCj4gICBtb2Qg
bWVkaWFfcG9vbDsKPiBkaWZmIC0tZ2l0IGEvd3d3L3RhcGUvQ2hhbmdlclN0YXR1cy5qcyBiL3d3
dy90YXBlL0NoYW5nZXJTdGF0dXMuanMKPiBpbmRleCBlMThhZjkwZS4uMWI4MWRiMzQgMTAwNjQ0
Cj4gLS0tIGEvd3d3L3RhcGUvQ2hhbmdlclN0YXR1cy5qcwo+ICsrKyBiL3d3dy90YXBlL0NoYW5n
ZXJTdGF0dXMuanMKPiBAQCAtMjIyLDEyICsyMjIsMTYgQEAgRXh0LmRlZmluZSgnUEJTLlRhcGVN
YW5hZ2VtZW50LkNoYW5nZXJTdGF0dXMnLCB7Cj4gICAJCSAgICBhdXRvU2hvdzogdHJ1ZSwKPiAg
IAkJICAgIHN1Ym1pdFRleHQ6IGdldHRleHQoJ09LJyksCj4gICAJCSAgICB0aXRsZTogZ2V0dGV4
dCgnTG9hZCBNZWRpYSBpbnRvIERyaXZlJyksCj4gLQkJICAgIHVybDogYC9hcGkyL2V4dGpzL3Rh
cGUvZHJpdmVgLAo+ICsJCSAgICB1cmw6IGAvYXBpMi9leHRqcy90YXBlYCwKPiAgIAkJICAgIG1l
dGhvZDogJ1BPU1QnLAo+ICAgCQkgICAgc3VibWl0VXJsOiBmdW5jdGlvbih1cmwsIHZhbHVlcykg
ewo+IC0JCQlsZXQgZHJpdmUgPSB2YWx1ZXMuZHJpdmU7Cj4gLQkJCWRlbGV0ZSB2YWx1ZXMuZHJp
dmU7Cj4gLQkJCXJldHVybiBgJHt1cmx9LyR7ZW5jb2RlVVJJQ29tcG9uZW50KGRyaXZlKX0vJHth
cGlDYWxsfWA7Cj4gKwkJCSAgICBsZXQgZHJpdmUgPSB2YWx1ZXMuZHJpdmU7Cj4gKwkJCSAgICBk
ZWxldGUgdmFsdWVzLmRyaXZlOwo+ICsKPiArICAgICAgICAgIGxldCB0eXBlID0gZHJpdmUgPyAi
ZHJpdmUiIDogImNoYW5nZXIiOwo+ICsgICAgICAgICAgbGV0IGl0ZW0gPSBkcml2ZSA/IGRyaXZl
IDogY2hhbmdlcjsKPiArCj4gKyAgICAgICAgICByZXR1cm4gYCR7dXJsfS8ke3R5cGV9LyR7ZW5j
b2RlVVJJQ29tcG9uZW50KGl0ZW0pfS8ke2FwaUNhbGx9YDsKCmhlcmUgdGhlIGluZGVudGF0aW9u
IGlzIHdyb25nCgo+ICAgCQkgICAgfSwKPiAgIAkJICAgIGl0ZW1zOiBbCj4gICAJCQlsYWJlbCAh
PT0gIiIgPyB7Cj4gQEAgLTI0OCw2ICsyNTIsOSBAQCBFeHQuZGVmaW5lKCdQQlMuVGFwZU1hbmFn
ZW1lbnQuQ2hhbmdlclN0YXR1cycsIHsKPiAgIAkJCSAgICBmaWVsZExhYmVsOiBnZXR0ZXh0KCdE
cml2ZScpLAo+ICAgCQkJICAgIGNoYW5nZXI6IGNoYW5nZXIsCj4gICAJCQkgICAgbmFtZTogJ2Ry
aXZlJywKPiArCQkJICAgIGVtcHR5VGV4dDogZ2V0dGV4dCgnQ2hvb3NlIEF1dG9tYXRpY2FsbHkn
KSwKPiArCQkJICAgIGFsbG93Qmxhbms6IHRydWUsCj4gKwkJCSAgICBhdXRvU2VsZWN0OiBmYWxz
ZSwKPiAgIAkJCX0sCj4gICAJCSAgICBdLAo+ICAgCQkgICAgbGlzdGVuZXJzOiB7CgoKCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCnBicy1kZXZlbCBtYWls
aW5nIGxpc3QKcGJzLWRldmVsQGxpc3RzLnByb3htb3guY29tCmh0dHBzOi8vbGlzdHMucHJveG1v
eC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3Bicy1kZXZlbAo=