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 [212.224.123.68])
	by lore.proxmox.com (Postfix) with ESMTPS id ED55F1FF16F
	for <inbox@lore.proxmox.com>; Tue, 29 Apr 2025 16:10:22 +0200 (CEST)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id 3BC8E9CFB;
	Tue, 29 Apr 2025 16:10:19 +0200 (CEST)
From: =?UTF-8?q?Michael=20K=C3=B6ppl?= <m.koeppl@proxmox.com>
To: pve-devel@lists.proxmox.com
Date: Tue, 29 Apr 2025 16:09:36 +0200
Message-Id: <20250429140940.161711-3-m.koeppl@proxmox.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20250429140940.161711-1-m.koeppl@proxmox.com>
References: <20250429140940.161711-1-m.koeppl@proxmox.com>
MIME-Version: 1.0
X-SPAM-LEVEL: Spam detection results:  0
 AWL 0.000 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: [pve-devel] [PATCH pve-installer v2 2/6] move RAID setup checks to
 RAID level enum implementations
X-BeenThere: pve-devel@lists.proxmox.com
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Proxmox VE development discussion <pve-devel.lists.proxmox.com>
List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pve-devel>, 
 <mailto:pve-devel-request@lists.proxmox.com?subject=unsubscribe>
List-Archive: <http://lists.proxmox.com/pipermail/pve-devel/>
List-Post: <mailto:pve-devel@lists.proxmox.com>
List-Help: <mailto:pve-devel-request@lists.proxmox.com?subject=help>
List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel>, 
 <mailto:pve-devel-request@lists.proxmox.com?subject=subscribe>
Reply-To: Proxmox VE development discussion <pve-devel@lists.proxmox.com>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: pve-devel-bounces@lists.proxmox.com
Sender: "pve-devel" <pve-devel-bounces@lists.proxmox.com>

SW5zdGVhZCBvZiBoYXZpbmcgcGFydHMgb2YgdGhlIFJBSUQgc2V0dXAgY2hlY2tzIHNjYXR0ZXJl
ZCBpbiBtdWx0aXBsZQpwbGFjZXMsIG1vdmUgdGhlIGNvcmUgb2YgdGhlIGNoZWNrcyB0byBpbXBs
ZW1lbnRhdGlvbnMgb2YgdGhlClpmc1JhaWRMZXZlbCBhbmQgQnRyZnNSYWlkTGV2ZWwgZW51bXMu
CgpTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIEvDtnBwbCA8bS5rb2VwcGxAcHJveG1veC5jb20+Ci0t
LQogcHJveG1veC1pbnN0YWxsZXItY29tbW9uL3NyYy9kaXNrX2NoZWNrcy5ycyB8IDE1NiArKysr
LS0tLS0tLS0tLS0tLS0tLQogcHJveG1veC1pbnN0YWxsZXItY29tbW9uL3NyYy9vcHRpb25zLnJz
ICAgICB8ICA1OSArKysrKysrKwogcHJveG1veC10dWktaW5zdGFsbGVyL3NyYy92aWV3cy9ib290
ZGlzay5ycyB8ICAxMyArLQogMyBmaWxlcyBjaGFuZ2VkLCA5NiBpbnNlcnRpb25zKCspLCAxMzIg
ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvcHJveG1veC1pbnN0YWxsZXItY29tbW9uL3NyYy9k
aXNrX2NoZWNrcy5ycyBiL3Byb3htb3gtaW5zdGFsbGVyLWNvbW1vbi9zcmMvZGlza19jaGVja3Mu
cnMKaW5kZXggZWNjNDNiZC4uZDUzNTgzNyAxMDA2NDQKLS0tIGEvcHJveG1veC1pbnN0YWxsZXIt
Y29tbW9uL3NyYy9kaXNrX2NoZWNrcy5ycworKysgYi9wcm94bW94LWluc3RhbGxlci1jb21tb24v
c3JjL2Rpc2tfY2hlY2tzLnJzCkBAIC0xLDYgKzEsNiBAQAogdXNlIHN0ZDo6Y29sbGVjdGlvbnM6
Okhhc2hTZXQ7CiAKLXVzZSBjcmF0ZTo6b3B0aW9uczo6e0J0cmZzUmFpZExldmVsLCBEaXNrLCBa
ZnNSYWlkTGV2ZWx9OwordXNlIGNyYXRlOjpvcHRpb25zOjpEaXNrOwogdXNlIGNyYXRlOjpzZXR1
cDo6Qm9vdFR5cGU7CiAKIC8vLyBDaGVja3MgYSBsaXN0IG9mIGRpc2tzIGZvciBkdXBsaWNhdGUg
ZW50cmllcywgdXNpbmcgdGhlaXIgaW5kZXggYXMga2V5LgpAQCAtNDksOTQgKzQ5LDEwIEBAIHB1
YiBmbiBjaGVja19kaXNrc180a25fbGVnYWN5X2Jvb3QoYm9vdF90eXBlOiBCb290VHlwZSwgZGlz
a3M6ICZbRGlza10pIC0+IFJlc3VsCiAgICAgT2soKCkpCiB9CiAKLS8vLyBDaGVja3Mgd2hldGhl
ciBhIHVzZXItc3VwcGxpZWQgWkZTIFJBSUQgc2V0dXAgaXMgdmFsaWQgb3Igbm90LCBzdWNoIGFz
IGRpc2sgc2l6ZXMgYW5kbWluaW11bQotLy8vIG51bWJlciBvZiBkaXNrcy4KLS8vLwotLy8vICMg
QXJndW1lbnRzCi0vLy8KLS8vLyAqIGBsZXZlbGAgLSBUaGUgdGFyZ2V0ZWQgWkZTIFJBSUQgbGV2
ZWwgYnkgdGhlIHVzZXIuCi0vLy8gKiBgZGlza3NgIC0gTGlzdCBvZiBkaXNrcyBkZXNpZ25hdGVk
IGFzIFJBSUQgdGFyZ2V0cy4KLXB1YiBmbiBjaGVja196ZnNfcmFpZF9jb25maWcobGV2ZWw6IFpm
c1JhaWRMZXZlbCwgZGlza3M6ICZbRGlza10pIC0+IFJlc3VsdDwoKSwgU3RyaW5nPiB7Ci0gICAg
Ly8gU2VlIGFsc28gUHJveG1veC9JbnN0YWxsLnBtOmdldF96ZnNfcmFpZF9zZXR1cCgpCi0KLSAg
ICBsZXQgY2hlY2tfbWlycm9yX3NpemUgPSB8ZGlzazE6ICZEaXNrLCBkaXNrMjogJkRpc2t8IHsK
LSAgICAgICAgaWYgKGRpc2sxLnNpemUgLSBkaXNrMi5zaXplKS5hYnMoKSA+IGRpc2sxLnNpemUg
LyAxMC4gewotICAgICAgICAgICAgRXJyKGZvcm1hdCEoCi0gICAgICAgICAgICAgICAgIk1pcnJv
cmVkIGRpc2tzIG11c3QgaGF2ZSBzYW1lIHNpemU6XG5cbiAgKiB7ZGlzazF9XG4gICoge2Rpc2sy
fSIKLSAgICAgICAgICAgICkpCi0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBPaygoKSkK
LSAgICAgICAgfQotICAgIH07Ci0KLSAgICBtYXRjaCBsZXZlbCB7Ci0gICAgICAgIFpmc1JhaWRM
ZXZlbDo6UmFpZDAgPT4gY2hlY2tfcmFpZF9taW5fZGlza3MoZGlza3MsIDEpPywKLSAgICAgICAg
WmZzUmFpZExldmVsOjpSYWlkMSA9PiB7Ci0gICAgICAgICAgICBjaGVja19yYWlkX21pbl9kaXNr
cyhkaXNrcywgMik/OwotICAgICAgICAgICAgZm9yIGRpc2sgaW4gZGlza3MgewotICAgICAgICAg
ICAgICAgIGNoZWNrX21pcnJvcl9zaXplKCZkaXNrc1swXSwgZGlzayk/OwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgICAgIFpmc1JhaWRMZXZlbDo6UmFpZDEwID0+IHsKLSAgICAgICAg
ICAgIGNoZWNrX3JhaWRfbWluX2Rpc2tzKGRpc2tzLCA0KT87Ci0KLSAgICAgICAgICAgIGlmIGRp
c2tzLmxlbigpICUgMiAhPSAwIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gRXJyKGZvcm1hdCEo
Ci0gICAgICAgICAgICAgICAgICAgICJOZWVkcyBhbiBldmVuIG51bWJlciBvZiBkaXNrcywgY3Vy
cmVudGx5IHNlbGVjdGVkOiB7fSIsCi0gICAgICAgICAgICAgICAgICAgIGRpc2tzLmxlbigpLAot
ICAgICAgICAgICAgICAgICkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBQYWly
cyBuZWVkIHRvIGhhdmUgdGhlIHNhbWUgc2l6ZQotICAgICAgICAgICAgZm9yIGkgaW4gKDAuLmRp
c2tzLmxlbigpKS5zdGVwX2J5KDIpIHsKLSAgICAgICAgICAgICAgICBjaGVja19taXJyb3Jfc2l6
ZSgmZGlza3NbaV0sICZkaXNrc1tpICsgMV0pPzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgICAgICAvLyBGb3IgUkFJRC1aOiBtaW5pbXVtIGRpc2tzIG51bWJlciBpcyBsZXZlbCArIDIK
LSAgICAgICAgWmZzUmFpZExldmVsOjpSYWlkWiA9PiB7Ci0gICAgICAgICAgICBjaGVja19yYWlk
X21pbl9kaXNrcyhkaXNrcywgMyk/OwotICAgICAgICAgICAgZm9yIGRpc2sgaW4gZGlza3Mgewot
ICAgICAgICAgICAgICAgIGNoZWNrX21pcnJvcl9zaXplKCZkaXNrc1swXSwgZGlzayk/OwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIFpmc1JhaWRMZXZlbDo6UmFpZFoyID0+IHsK
LSAgICAgICAgICAgIGNoZWNrX3JhaWRfbWluX2Rpc2tzKGRpc2tzLCA0KT87Ci0gICAgICAgICAg
ICBmb3IgZGlzayBpbiBkaXNrcyB7Ci0gICAgICAgICAgICAgICAgY2hlY2tfbWlycm9yX3NpemUo
JmRpc2tzWzBdLCBkaXNrKT87Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgWmZz
UmFpZExldmVsOjpSYWlkWjMgPT4gewotICAgICAgICAgICAgY2hlY2tfcmFpZF9taW5fZGlza3Mo
ZGlza3MsIDUpPzsKLSAgICAgICAgICAgIGZvciBkaXNrIGluIGRpc2tzIHsKLSAgICAgICAgICAg
ICAgICBjaGVja19taXJyb3Jfc2l6ZSgmZGlza3NbMF0sIGRpc2spPzsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgIH0KLQotICAgIE9rKCgpKQotfQotCi0vLy8gQ2hlY2tzIHdoZXRoZXIg
YSB1c2VyLXN1cHBsaWVkIEJ0cmZzIFJBSUQgc2V0dXAgaXMgdmFsaWQgb3Igbm90LCBzdWNoIGFz
IG1pbmltdW0KLS8vLyBudW1iZXIgb2YgZGlza3MuCi0vLy8KLS8vLyAjIEFyZ3VtZW50cwotLy8v
Ci0vLy8gKiBgbGV2ZWxgIC0gVGhlIHRhcmdldGVkIEJ0cmZzIFJBSUQgbGV2ZWwgYnkgdGhlIHVz
ZXIuCi0vLy8gKiBgZGlza3NgIC0gTGlzdCBvZiBkaXNrcyBkZXNpZ25hdGVkIGFzIFJBSUQgdGFy
Z2V0cy4KLXB1YiBmbiBjaGVja19idHJmc19yYWlkX2NvbmZpZyhsZXZlbDogQnRyZnNSYWlkTGV2
ZWwsIGRpc2tzOiAmW0Rpc2tdKSAtPiBSZXN1bHQ8KCksIFN0cmluZz4gewotICAgIC8vIFNlZSBh
bHNvIFByb3htb3gvSW5zdGFsbC5wbTpnZXRfYnRyZnNfcmFpZF9zZXR1cCgpCi0KLSAgICBtYXRj
aCBsZXZlbCB7Ci0gICAgICAgIEJ0cmZzUmFpZExldmVsOjpSYWlkMCA9PiBjaGVja19yYWlkX21p
bl9kaXNrcyhkaXNrcywgMSk/LAotICAgICAgICBCdHJmc1JhaWRMZXZlbDo6UmFpZDEgPT4gY2hl
Y2tfcmFpZF9taW5fZGlza3MoZGlza3MsIDIpPywKLSAgICAgICAgQnRyZnNSYWlkTGV2ZWw6OlJh
aWQxMCA9PiBjaGVja19yYWlkX21pbl9kaXNrcyhkaXNrcywgNCk/LAotICAgIH0KLQotICAgIE9r
KCgpKQotfQotCiAjW2NmZyh0ZXN0KV0KIG1vZCB0ZXN0cyB7CisgICAgdXNlIGNyYXRlOjpvcHRp
b25zOjp7QnRyZnNSYWlkTGV2ZWwsIFpmc1JhaWRMZXZlbH07CisKICAgICB1c2Ugc3VwZXI6Oio7
CiAKICAgICBmbiBkdW1teV9kaXNrKGluZGV4OiB1c2l6ZSkgLT4gRGlzayB7CkBAIC0xOTQsNTAg
KzExMCwzOCBAQCBtb2QgdGVzdHMgewogICAgIGZuIGJ0cmZzX3JhaWQoKSB7CiAgICAgICAgIGxl
dCBkaXNrcyA9IGR1bW15X2Rpc2tzKDEwKTsKIAotICAgICAgICBhc3NlcnQhKGNoZWNrX2J0cmZz
X3JhaWRfY29uZmlnKEJ0cmZzUmFpZExldmVsOjpSYWlkMCwgJltdKS5pc19lcnIoKSk7Ci0gICAg
ICAgIGFzc2VydCEoY2hlY2tfYnRyZnNfcmFpZF9jb25maWcoQnRyZnNSYWlkTGV2ZWw6OlJhaWQw
LCAmZGlza3NbLi4xXSkuaXNfb2soKSk7Ci0gICAgICAgIGFzc2VydCEoY2hlY2tfYnRyZnNfcmFp
ZF9jb25maWcoQnRyZnNSYWlkTGV2ZWw6OlJhaWQwLCAmZGlza3MpLmlzX29rKCkpOwotCi0gICAg
ICAgIGFzc2VydCEoY2hlY2tfYnRyZnNfcmFpZF9jb25maWcoQnRyZnNSYWlkTGV2ZWw6OlJhaWQx
LCAmW10pLmlzX2VycigpKTsKLSAgICAgICAgYXNzZXJ0IShjaGVja19idHJmc19yYWlkX2NvbmZp
ZyhCdHJmc1JhaWRMZXZlbDo6UmFpZDEsICZkaXNrc1suLjFdKS5pc19lcnIoKSk7Ci0gICAgICAg
IGFzc2VydCEoY2hlY2tfYnRyZnNfcmFpZF9jb25maWcoQnRyZnNSYWlkTGV2ZWw6OlJhaWQxLCAm
ZGlza3NbLi4yXSkuaXNfb2soKSk7Ci0gICAgICAgIGFzc2VydCEoY2hlY2tfYnRyZnNfcmFpZF9j
b25maWcoQnRyZnNSYWlkTGV2ZWw6OlJhaWQxLCAmZGlza3MpLmlzX29rKCkpOwotCi0gICAgICAg
IGFzc2VydCEoY2hlY2tfYnRyZnNfcmFpZF9jb25maWcoQnRyZnNSYWlkTGV2ZWw6OlJhaWQxMCwg
JltdKS5pc19lcnIoKSk7Ci0gICAgICAgIGFzc2VydCEoY2hlY2tfYnRyZnNfcmFpZF9jb25maWco
QnRyZnNSYWlkTGV2ZWw6OlJhaWQxMCwgJmRpc2tzWy4uM10pLmlzX2VycigpKTsKLSAgICAgICAg
YXNzZXJ0IShjaGVja19idHJmc19yYWlkX2NvbmZpZyhCdHJmc1JhaWRMZXZlbDo6UmFpZDEwLCAm
ZGlza3NbLi40XSkuaXNfb2soKSk7Ci0gICAgICAgIGFzc2VydCEoY2hlY2tfYnRyZnNfcmFpZF9j
b25maWcoQnRyZnNSYWlkTGV2ZWw6OlJhaWQxMCwgJmRpc2tzKS5pc19vaygpKTsKKyAgICAgICAg
bGV0IGJ0cmZzX3JhaWRfdmFyaWFudHMgPSBbCisgICAgICAgICAgICBCdHJmc1JhaWRMZXZlbDo6
UmFpZDAsCisgICAgICAgICAgICBCdHJmc1JhaWRMZXZlbDo6UmFpZDEsCisgICAgICAgICAgICBC
dHJmc1JhaWRMZXZlbDo6UmFpZDEwLAorICAgICAgICBdOworCisgICAgICAgIGZvciB2IGluIGJ0
cmZzX3JhaWRfdmFyaWFudHMgeworICAgICAgICAgICAgYXNzZXJ0ISh2LmNoZWNrX2Rpc2tzKCZb
XSkuaXNfZXJyKCkpOworICAgICAgICAgICAgYXNzZXJ0ISh2LmNoZWNrX2Rpc2tzKCZkaXNrc1su
LnYuZ2V0X21pbl9kaXNrcygpIC0gMV0pLmlzX2VycigpKTsKKyAgICAgICAgICAgIGFzc2VydCEo
di5jaGVja19kaXNrcygmZGlza3NbLi52LmdldF9taW5fZGlza3MoKV0pLmlzX29rKCkpOworICAg
ICAgICAgICAgYXNzZXJ0ISh2LmNoZWNrX2Rpc2tzKCZkaXNrcykuaXNfb2soKSk7CisgICAgICAg
IH0KICAgICB9CiAKICAgICAjW3Rlc3RdCiAgICAgZm4gemZzX3JhaWQoKSB7CiAgICAgICAgIGxl
dCBkaXNrcyA9IGR1bW15X2Rpc2tzKDEwKTsKIAotICAgICAgICBhc3NlcnQhKGNoZWNrX3pmc19y
YWlkX2NvbmZpZyhaZnNSYWlkTGV2ZWw6OlJhaWQwLCAmW10pLmlzX2VycigpKTsKLSAgICAgICAg
YXNzZXJ0IShjaGVja196ZnNfcmFpZF9jb25maWcoWmZzUmFpZExldmVsOjpSYWlkMCwgJmRpc2tz
Wy4uMV0pLmlzX29rKCkpOwotICAgICAgICBhc3NlcnQhKGNoZWNrX3pmc19yYWlkX2NvbmZpZyha
ZnNSYWlkTGV2ZWw6OlJhaWQwLCAmZGlza3MpLmlzX29rKCkpOwotCi0gICAgICAgIGFzc2VydCEo
Y2hlY2tfemZzX3JhaWRfY29uZmlnKFpmc1JhaWRMZXZlbDo6UmFpZDEsICZbXSkuaXNfZXJyKCkp
OwotICAgICAgICBhc3NlcnQhKGNoZWNrX3pmc19yYWlkX2NvbmZpZyhaZnNSYWlkTGV2ZWw6OlJh
aWQxLCAmZGlza3NbLi4yXSkuaXNfb2soKSk7Ci0gICAgICAgIGFzc2VydCEoY2hlY2tfemZzX3Jh
aWRfY29uZmlnKFpmc1JhaWRMZXZlbDo6UmFpZDEsICZkaXNrcykuaXNfb2soKSk7Ci0KLSAgICAg
ICAgYXNzZXJ0IShjaGVja196ZnNfcmFpZF9jb25maWcoWmZzUmFpZExldmVsOjpSYWlkMTAsICZb
XSkuaXNfZXJyKCkpOwotICAgICAgICBhc3NlcnQhKGNoZWNrX3pmc19yYWlkX2NvbmZpZyhaZnNS
YWlkTGV2ZWw6OlJhaWQxMCwgJmR1bW15X2Rpc2tzKDQpKS5pc19vaygpKTsKLSAgICAgICAgYXNz
ZXJ0IShjaGVja196ZnNfcmFpZF9jb25maWcoWmZzUmFpZExldmVsOjpSYWlkMTAsICZkaXNrcyku
aXNfb2soKSk7Ci0KLSAgICAgICAgYXNzZXJ0IShjaGVja196ZnNfcmFpZF9jb25maWcoWmZzUmFp
ZExldmVsOjpSYWlkWiwgJltdKS5pc19lcnIoKSk7Ci0gICAgICAgIGFzc2VydCEoY2hlY2tfemZz
X3JhaWRfY29uZmlnKFpmc1JhaWRMZXZlbDo6UmFpZFosICZkaXNrc1suLjJdKS5pc19lcnIoKSk7
Ci0gICAgICAgIGFzc2VydCEoY2hlY2tfemZzX3JhaWRfY29uZmlnKFpmc1JhaWRMZXZlbDo6UmFp
ZFosICZkaXNrc1suLjNdKS5pc19vaygpKTsKLSAgICAgICAgYXNzZXJ0IShjaGVja196ZnNfcmFp
ZF9jb25maWcoWmZzUmFpZExldmVsOjpSYWlkWiwgJmRpc2tzKS5pc19vaygpKTsKLQotICAgICAg
ICBhc3NlcnQhKGNoZWNrX3pmc19yYWlkX2NvbmZpZyhaZnNSYWlkTGV2ZWw6OlJhaWRaMiwgJltd
KS5pc19lcnIoKSk7Ci0gICAgICAgIGFzc2VydCEoY2hlY2tfemZzX3JhaWRfY29uZmlnKFpmc1Jh
aWRMZXZlbDo6UmFpZFoyLCAmZGlza3NbLi4zXSkuaXNfZXJyKCkpOwotICAgICAgICBhc3NlcnQh
KGNoZWNrX3pmc19yYWlkX2NvbmZpZyhaZnNSYWlkTGV2ZWw6OlJhaWRaMiwgJmRpc2tzWy4uNF0p
LmlzX29rKCkpOwotICAgICAgICBhc3NlcnQhKGNoZWNrX3pmc19yYWlkX2NvbmZpZyhaZnNSYWlk
TGV2ZWw6OlJhaWRaMiwgJmRpc2tzKS5pc19vaygpKTsKLQotICAgICAgICBhc3NlcnQhKGNoZWNr
X3pmc19yYWlkX2NvbmZpZyhaZnNSYWlkTGV2ZWw6OlJhaWRaMywgJltdKS5pc19lcnIoKSk7Ci0g
ICAgICAgIGFzc2VydCEoY2hlY2tfemZzX3JhaWRfY29uZmlnKFpmc1JhaWRMZXZlbDo6UmFpZFoz
LCAmZGlza3NbLi40XSkuaXNfZXJyKCkpOwotICAgICAgICBhc3NlcnQhKGNoZWNrX3pmc19yYWlk
X2NvbmZpZyhaZnNSYWlkTGV2ZWw6OlJhaWRaMywgJmRpc2tzWy4uNV0pLmlzX29rKCkpOwotICAg
ICAgICBhc3NlcnQhKGNoZWNrX3pmc19yYWlkX2NvbmZpZyhaZnNSYWlkTGV2ZWw6OlJhaWRaMywg
JmRpc2tzKS5pc19vaygpKTsKKyAgICAgICAgbGV0IHpmc19yYWlkX3ZhcmlhbnRzID0gWworICAg
ICAgICAgICAgWmZzUmFpZExldmVsOjpSYWlkMCwKKyAgICAgICAgICAgIFpmc1JhaWRMZXZlbDo6
UmFpZDEsCisgICAgICAgICAgICBaZnNSYWlkTGV2ZWw6OlJhaWQxMCwKKyAgICAgICAgICAgIFpm
c1JhaWRMZXZlbDo6UmFpZFosCisgICAgICAgICAgICBaZnNSYWlkTGV2ZWw6OlJhaWRaMiwKKyAg
ICAgICAgICAgIFpmc1JhaWRMZXZlbDo6UmFpZFozLAorICAgICAgICBdOworCisgICAgICAgIGZv
ciB2IGluIHpmc19yYWlkX3ZhcmlhbnRzIHsKKyAgICAgICAgICAgIGFzc2VydCEodi5jaGVja19k
aXNrcygmW10pLmlzX2VycigpKTsKKyAgICAgICAgICAgIGFzc2VydCEodi5jaGVja19kaXNrcygm
ZGlza3NbLi52LmdldF9taW5fZGlza3MoKSAtIDFdKS5pc19lcnIoKSk7CisgICAgICAgICAgICBh
c3NlcnQhKHYuY2hlY2tfZGlza3MoJmRpc2tzWy4udi5nZXRfbWluX2Rpc2tzKCldKS5pc19vaygp
KTsKKyAgICAgICAgICAgIGFzc2VydCEodi5jaGVja19kaXNrcygmZGlza3MpLmlzX29rKCkpOwor
ICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvcHJveG1veC1pbnN0YWxsZXItY29tbW9u
L3NyYy9vcHRpb25zLnJzIGIvcHJveG1veC1pbnN0YWxsZXItY29tbW9uL3NyYy9vcHRpb25zLnJz
CmluZGV4IDkyNzFiOGIuLjA1NTI5NTQgMTAwNjQ0Ci0tLSBhL3Byb3htb3gtaW5zdGFsbGVyLWNv
bW1vbi9zcmMvb3B0aW9ucy5ycworKysgYi9wcm94bW94LWluc3RhbGxlci1jb21tb24vc3JjL29w
dGlvbnMucnMKQEAgLTYsNiArNiw3IEBAIHVzZSBzdGQ6OnN0cjo6RnJvbVN0cjsKIHVzZSBzdGQ6
OnN5bmM6Ok9uY2VMb2NrOwogdXNlIHN0ZDo6e2NtcCwgZm10fTsKIAordXNlIGNyYXRlOjpkaXNr
X2NoZWNrczo6Y2hlY2tfcmFpZF9taW5fZGlza3M7CiB1c2UgY3JhdGU6OnNldHVwOjp7TG9jYWxl
SW5mbywgTmV0d29ya0luZm8sIFJ1bnRpbWVJbmZvLCBTZXR1cEluZm99OwogdXNlIGNyYXRlOjp1
dGlsczo6e0NpZHJBZGRyZXNzLCBGcWRufTsKIApAQCAtMjgsNiArMjksMTcgQEAgaW1wbCBCdHJm
c1JhaWRMZXZlbCB7CiAgICAgICAgICAgICBCdHJmc1JhaWRMZXZlbDo6UmFpZDEwID0+IDQsCiAg
ICAgICAgIH0KICAgICB9CisKKyAgICAvLy8gQ2hlY2tzIHdoZXRoZXIgYSB1c2VyLXN1cHBsaWVk
IEJ0cmZzIFJBSUQgc2V0dXAgaXMgdmFsaWQgb3Igbm90LCBzdWNoIGFzIG1pbmltdW0KKyAgICAv
Ly8gbnVtYmVyIG9mIGRpc2tzLgorICAgIC8vLworICAgIC8vLyAjIEFyZ3VtZW50cworICAgIC8v
LworICAgIC8vLyAqIGBkaXNrc2AgLSBMaXN0IG9mIGRpc2tzIGRlc2lnbmF0ZWQgYXMgUkFJRCB0
YXJnZXRzLgorICAgIHB1YiBmbiBjaGVja19kaXNrcygmc2VsZiwgZGlza3M6ICZbRGlza10pIC0+
IFJlc3VsdDwoKSwgU3RyaW5nPiB7CisgICAgICAgIGNoZWNrX3JhaWRfbWluX2Rpc2tzKGRpc2tz
LCBzZWxmLmdldF9taW5fZGlza3MoKSk/OworICAgICAgICBPaygoKSkKKyAgICB9CiB9CiAKIHNl
cmRlX3BsYWluOjpkZXJpdmVfZGlzcGxheV9mcm9tX3NlcmlhbGl6ZSEoQnRyZnNSYWlkTGV2ZWwp
OwpAQCAtNjksNiArODEsNTMgQEAgaW1wbCBaZnNSYWlkTGV2ZWwgewogICAgICAgICAgICAgWmZz
UmFpZExldmVsOjpSYWlkWjMgPT4gNSwKICAgICAgICAgfQogICAgIH0KKworICAgIGZuIGNoZWNr
X21pcnJvcl9zaXplKCZzZWxmLCBkaXNrMTogJkRpc2ssIGRpc2syOiAmRGlzaykgLT4gUmVzdWx0
PCgpLCBTdHJpbmc+IHsKKyAgICAgICAgaWYgKGRpc2sxLnNpemUgLSBkaXNrMi5zaXplKS5hYnMo
KSA+IGRpc2sxLnNpemUgLyAxMC4geworICAgICAgICAgICAgRXJyKGZvcm1hdCEoCisgICAgICAg
ICAgICAgICAgIk1pcnJvcmVkIGRpc2tzIG11c3QgaGF2ZSBzYW1lIHNpemU6XG5cbiAgKiB7ZGlz
azF9XG4gICoge2Rpc2syfSIKKyAgICAgICAgICAgICkpCisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBPaygoKSkKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vLyBDaGVja3Mgd2hldGhl
ciBhIHVzZXItc3VwcGxpZWQgWkZTIFJBSUQgc2V0dXAgaXMgdmFsaWQgb3Igbm90LCBzdWNoIGFz
IGRpc2sgc2l6ZXMgYW5kbWluaW11bQorICAgIC8vLyBudW1iZXIgb2YgZGlza3MuCisgICAgLy8v
CisgICAgLy8vICMgQXJndW1lbnRzCisgICAgLy8vCisgICAgLy8vICogYGRpc2tzYCAtIExpc3Qg
b2YgZGlza3MgZGVzaWduYXRlZCBhcyBSQUlEIHRhcmdldHMuCisgICAgcHViIGZuIGNoZWNrX2Rp
c2tzKCZzZWxmLCBkaXNrczogJltEaXNrXSkgLT4gUmVzdWx0PCgpLCBTdHJpbmc+IHsKKyAgICAg
ICAgY2hlY2tfcmFpZF9taW5fZGlza3MoZGlza3MsIHNlbGYuZ2V0X21pbl9kaXNrcygpKT87CisK
KyAgICAgICAgbWF0Y2ggc2VsZiB7CisgICAgICAgICAgICBaZnNSYWlkTGV2ZWw6OlJhaWQwID0+
IHt9CisgICAgICAgICAgICBaZnNSYWlkTGV2ZWw6OlJhaWQxMCA9PiB7CisgICAgICAgICAgICAg
ICAgaWYgZGlza3MubGVuKCkgJSAyICE9IDAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
RXJyKGZvcm1hdCEoCisgICAgICAgICAgICAgICAgICAgICAgICAiTmVlZHMgYW4gZXZlbiBudW1i
ZXIgb2YgZGlza3MsIGN1cnJlbnRseSBzZWxlY3RlZDoge30iLAorICAgICAgICAgICAgICAgICAg
ICAgICAgZGlza3MubGVuKCksCisgICAgICAgICAgICAgICAgICAgICkpOworICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFBhaXJzIG5lZWQgdG8gaGF2ZSB0aGUgc2FtZSBz
aXplCisgICAgICAgICAgICAgICAgZm9yIGkgaW4gKDAuLmRpc2tzLmxlbigpKS5zdGVwX2J5KDIp
IHsKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5jaGVja19taXJyb3Jfc2l6ZSgmZGlza3NbaV0s
ICZkaXNrc1tpICsgMV0pPzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBaZnNSYWlkTGV2ZWw6OlJhaWQxCisgICAgICAgICAgICB8IFpmc1JhaWRMZXZlbDo6
UmFpZFoKKyAgICAgICAgICAgIHwgWmZzUmFpZExldmVsOjpSYWlkWjIKKyAgICAgICAgICAgIHwg
WmZzUmFpZExldmVsOjpSYWlkWjMgPT4geworICAgICAgICAgICAgICAgIGZvciBkaXNrIGluIGRp
c2tzIHsKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5jaGVja19taXJyb3Jfc2l6ZSgmZGlza3Nb
MF0sIGRpc2spPzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICBPaygoKSkKKyAgICB9CiB9CiAKIHNlcmRlX3BsYWluOjpkZXJpdmVfZGlzcGxh
eV9mcm9tX3NlcmlhbGl6ZSEoWmZzUmFpZExldmVsKTsKZGlmZiAtLWdpdCBhL3Byb3htb3gtdHVp
LWluc3RhbGxlci9zcmMvdmlld3MvYm9vdGRpc2sucnMgYi9wcm94bW94LXR1aS1pbnN0YWxsZXIv
c3JjL3ZpZXdzL2Jvb3RkaXNrLnJzCmluZGV4IDMxM2EzYzkuLmU4N2IwNDAgMTAwNjQ0Ci0tLSBh
L3Byb3htb3gtdHVpLWluc3RhbGxlci9zcmMvdmlld3MvYm9vdGRpc2sucnMKKysrIGIvcHJveG1v
eC10dWktaW5zdGFsbGVyL3NyYy92aWV3cy9ib290ZGlzay5ycwpAQCAtMTcsMTAgKzE3LDcgQEAg
dXNlIGNyYXRlOjpJbnN0YWxsZXJTdGF0ZTsKIHVzZSBjcmF0ZTo6b3B0aW9uczo6RlNfVFlQRVM7
CiAKIHVzZSBwcm94bW94X2luc3RhbGxlcl9jb21tb246OnsKLSAgICBkaXNrX2NoZWNrczo6ewot
ICAgICAgICBjaGVja19idHJmc19yYWlkX2NvbmZpZywgY2hlY2tfZGlza3NfNGtuX2xlZ2FjeV9i
b290LCBjaGVja19mb3JfZHVwbGljYXRlX2Rpc2tzLAotICAgICAgICBjaGVja196ZnNfcmFpZF9j
b25maWcsCi0gICAgfSwKKyAgICBkaXNrX2NoZWNrczo6e2NoZWNrX2Rpc2tzXzRrbl9sZWdhY3lf
Ym9vdCwgY2hlY2tfZm9yX2R1cGxpY2F0ZV9kaXNrc30sCiAgICAgb3B0aW9uczo6ewogICAgICAg
ICBBZHZhbmNlZEJvb3RkaXNrT3B0aW9ucywgQlRSRlNfQ09NUFJFU1NfT1BUSU9OUywgQm9vdGRp
c2tPcHRpb25zLCBCdHJmc0Jvb3RkaXNrT3B0aW9ucywKICAgICAgICAgRGlzaywgRnNUeXBlLCBM
dm1Cb290ZGlza09wdGlvbnMsIFpGU19DSEVDS1NVTV9PUFRJT05TLCBaRlNfQ09NUFJFU1NfT1BU
SU9OUywKQEAgLTI3NSw3ICsyNzIsOSBAQCBpbXBsIEFkdmFuY2VkQm9vdGRpc2tPcHRpb25zVmll
dyB7CiAgICAgICAgICAgICAgICAgLm9rX29yKCJGYWlsZWQgdG8gcmV0cmlldmUgYWR2YW5jZWQg
Ym9vdGRpc2sgb3B0aW9ucyIpPzsKIAogICAgICAgICAgICAgaWYgbGV0IEZzVHlwZTo6WmZzKGxl
dmVsKSA9IGZzdHlwZSB7Ci0gICAgICAgICAgICAgICAgY2hlY2tfemZzX3JhaWRfY29uZmlnKGxl
dmVsLCAmZGlza3MpLm1hcF9lcnIofGVycnwgZm9ybWF0ISgie2ZzdHlwZX06IHtlcnJ9IikpPzsK
KyAgICAgICAgICAgICAgICBsZXZlbAorICAgICAgICAgICAgICAgICAgICAuY2hlY2tfZGlza3Mo
JmRpc2tzKQorICAgICAgICAgICAgICAgICAgICAubWFwX2Vycih8ZXJyfCBmb3JtYXQhKCJ7ZnN0
eXBlfToge2Vycn0iKSk/OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBPayhCb290ZGlz
a09wdGlvbnMgewpAQCAtMjg5LDcgKzI4OCw5IEBAIGltcGwgQWR2YW5jZWRCb290ZGlza09wdGlv
bnNWaWV3IHsKICAgICAgICAgICAgICAgICAub2tfb3IoIkZhaWxlZCB0byByZXRyaWV2ZSBhZHZh
bmNlZCBib290ZGlzayBvcHRpb25zIik/OwogCiAgICAgICAgICAgICBpZiBsZXQgRnNUeXBlOjpC
dHJmcyhsZXZlbCkgPSBmc3R5cGUgewotICAgICAgICAgICAgICAgIGNoZWNrX2J0cmZzX3JhaWRf
Y29uZmlnKGxldmVsLCAmZGlza3MpLm1hcF9lcnIofGVycnwgZm9ybWF0ISgie2ZzdHlwZX06IHtl
cnJ9IikpPzsKKyAgICAgICAgICAgICAgICBsZXZlbAorICAgICAgICAgICAgICAgICAgICAuY2hl
Y2tfZGlza3MoJmRpc2tzKQorICAgICAgICAgICAgICAgICAgICAubWFwX2Vycih8ZXJyfCBmb3Jt
YXQhKCJ7ZnN0eXBlfToge2Vycn0iKSk/OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBP
ayhCb290ZGlza09wdGlvbnMgewotLSAKMi4zOS41CgoKCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCnB2ZS1kZXZlbCBtYWlsaW5nIGxpc3QKcHZlLWRldmVs
QGxpc3RzLnByb3htb3guY29tCmh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWls
bWFuL2xpc3RpbmZvL3B2ZS1kZXZlbAo=