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 389D21FF162
	for <inbox@lore.proxmox.com>; Mon,  7 Apr 2025 15:51:34 +0200 (CEST)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id 3B4093FCBD;
	Mon,  7 Apr 2025 15:50:57 +0200 (CEST)
From: Markus Frank <m.frank@proxmox.com>
To: pve-devel@lists.proxmox.com
Date: Mon,  7 Apr 2025 15:49:46 +0200
Message-Id: <20250407134950.265270-7-m.frank@proxmox.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20250407134950.265270-1-m.frank@proxmox.com>
References: <20250407134950.265270-1-m.frank@proxmox.com>
MIME-Version: 1.0
X-SPAM-LEVEL: Spam detection results:  0
 AWL -1.001 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
 KAM_MAILER                  2 Automated Mailer Tag Left in Email
 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 manager v17 06/10] api: add resource map api
 endpoints for directories
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>

U2lnbmVkLW9mZi1ieTogTWFya3VzIEZyYW5rIDxtLmZyYW5rQHByb3htb3guY29tPgpSZXZpZXdl
ZC1ieTogRmlvbmEgRWJuZXIgPGYuZWJuZXJAcHJveG1veC5jb20+ClJldmlld2VkLWJ5OiBMYXVy
ZW7Im2l1IExlYWh1LVZsxINkdWN1IDxsLmxlYWh1LXZsYWR1Y3VAcHJveG1veC5jb20KUmV2aWV3
ZWQtYnk6IERhbmllbCBLcmFsIDxkLmtyYWxAcHJveG1veC5jb20+ClRlc3RlZC1ieTogTGF1cmVu
yJtpdSBMZWFodS1WbMSDZHVjdSA8bC5sZWFodS12bGFkdWN1QHByb3htb3guY29tPgpUZXN0ZWQt
Ynk6IERhbmllbCBLcmFsIDxkLmtyYWxAcHJveG1veC5jb20+ClRlc3RlZC1ieTogTHVrYXMgV2Fn
bmVyIDxsLndhZ25lckBwcm94bW94LmNvbT4KLS0tCm5vdGhpbmcgY2hhbmdlZCBpbiB2MTcKCiBQ
VkUvQVBJMi9DbHVzdGVyL01hcHBpbmcucG0gICAgICAgfCAgIDcgKwogUFZFL0FQSTIvQ2x1c3Rl
ci9NYXBwaW5nL0Rpci5wbSAgIHwgMzA4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog
UFZFL0FQSTIvQ2x1c3Rlci9NYXBwaW5nL01ha2VmaWxlIHwgICAxICsKIDMgZmlsZXMgY2hhbmdl
ZCwgMzE2IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBQVkUvQVBJMi9DbHVzdGVy
L01hcHBpbmcvRGlyLnBtCgpkaWZmIC0tZ2l0IGEvUFZFL0FQSTIvQ2x1c3Rlci9NYXBwaW5nLnBt
IGIvUFZFL0FQSTIvQ2x1c3Rlci9NYXBwaW5nLnBtCmluZGV4IDQwMzg2NTc5Li45ZjBkY2QyYiAx
MDA2NDQKLS0tIGEvUFZFL0FQSTIvQ2x1c3Rlci9NYXBwaW5nLnBtCisrKyBiL1BWRS9BUEkyL0Ns
dXN0ZXIvTWFwcGluZy5wbQpAQCAtMywxMSArMywxNyBAQCBwYWNrYWdlIFBWRTo6QVBJMjo6Q2x1
c3Rlcjo6TWFwcGluZzsKIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3M7CiAKK3VzZSBQVkU6OkFQ
STI6OkNsdXN0ZXI6Ok1hcHBpbmc6OkRpcjsKIHVzZSBQVkU6OkFQSTI6OkNsdXN0ZXI6Ok1hcHBp
bmc6OlBDSTsKIHVzZSBQVkU6OkFQSTI6OkNsdXN0ZXI6Ok1hcHBpbmc6OlVTQjsKIAogdXNlIGJh
c2UgcXcoUFZFOjpSRVNUSGFuZGxlcik7CiAKK19fUEFDS0FHRV9fLT5yZWdpc3Rlcl9tZXRob2Qg
KHsKKyAgICBzdWJjbGFzcyA9PiAiUFZFOjpBUEkyOjpDbHVzdGVyOjpNYXBwaW5nOjpEaXIiLAor
ICAgIHBhdGggPT4gJ2RpcicsCit9KTsKKwogX19QQUNLQUdFX18tPnJlZ2lzdGVyX21ldGhvZCAo
ewogICAgIHN1YmNsYXNzID0+ICJQVkU6OkFQSTI6OkNsdXN0ZXI6Ok1hcHBpbmc6OlBDSSIsCiAg
ICAgcGF0aCA9PiAncGNpJywKQEAgLTQxLDYgKzQ3LDcgQEAgX19QQUNLQUdFX18tPnJlZ2lzdGVy
X21ldGhvZCAoewogCW15ICgkcGFyYW0pID0gQF87CiAKIAlteSAkcmVzdWx0ID0gWworCSAgICB7
IG5hbWUgPT4gJ2RpcicgfSwKIAkgICAgeyBuYW1lID0+ICdwY2knIH0sCiAJICAgIHsgbmFtZSA9
PiAndXNiJyB9LAogCV07CmRpZmYgLS1naXQgYS9QVkUvQVBJMi9DbHVzdGVyL01hcHBpbmcvRGly
LnBtIGIvUFZFL0FQSTIvQ2x1c3Rlci9NYXBwaW5nL0Rpci5wbQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMC4uZjkwNWNlZjMKLS0tIC9kZXYvbnVsbAorKysgYi9QVkUvQVBJMi9D
bHVzdGVyL01hcHBpbmcvRGlyLnBtCkBAIC0wLDAgKzEsMzA4IEBACitwYWNrYWdlIFBWRTo6QVBJ
Mjo6Q2x1c3Rlcjo6TWFwcGluZzo6RGlyOworCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOwor
Cit1c2UgU3RvcmFibGUgcXcoZGNsb25lKTsKKwordXNlIFBWRTo6SU5vdGlmeTsKK3VzZSBQVkU6
OkpTT05TY2hlbWEgcXcoZ2V0X3N0YW5kYXJkX29wdGlvbik7Cit1c2UgUFZFOjpNYXBwaW5nOjpE
aXIgKCk7Cit1c2UgUFZFOjpSUENFbnZpcm9ubWVudDsKK3VzZSBQVkU6OlNlY3Rpb25Db25maWc7
Cit1c2UgUFZFOjpUb29scyBxdyhleHRyYWN0X3BhcmFtKTsKKwordXNlIGJhc2UgcXcoUFZFOjpS
RVNUSGFuZGxlcik7CisKK19fUEFDS0FHRV9fLT5yZWdpc3Rlcl9tZXRob2QgKHsKKyAgICBuYW1l
ID0+ICdpbmRleCcsCisgICAgcGF0aCA9PiAnJywKKyAgICBtZXRob2QgPT4gJ0dFVCcsCisgICAg
IyBvbmx5IHByb3h5IGlmIHdlIGdpdmUgdGhlICdjaGVjay1ub2RlJyBwYXJhbWV0ZXIKKyAgICBw
cm94eXRvX2NhbGxiYWNrID0+IHN1YiB7CisJbXkgKCRycGNlbnYsICRwcm94eXRvLCAkcGFyYW0p
ID0gQF87CisJcmV0dXJuICRwYXJhbS0+eydjaGVjay1ub2RlJ30gLy8gJ2xvY2FsaG9zdCc7Cisg
ICAgfSwKKyAgICBkZXNjcmlwdGlvbiA9PiAiTGlzdCBkaXJlY3RvcnkgbWFwcGluZyIsCisgICAg
cGVybWlzc2lvbnMgPT4geworCWRlc2NyaXB0aW9uID0+ICJPbmx5IGxpc3RzIGVudHJpZXMgd2hl
cmUgeW91IGhhdmUgJ01hcHBpbmcuTW9kaWZ5JywgJ01hcHBpbmcuVXNlJyBvciIKKwkgICAgLiIg
J01hcHBpbmcuQXVkaXQnIHBlcm1pc3Npb25zIG9uICcvbWFwcGluZy9kaXIvPGlkPicuIiwKKwl1
c2VyID0+ICdhbGwnLAorICAgIH0sCisgICAgcGFyYW1ldGVycyA9PiB7CisJYWRkaXRpb25hbFBy
b3BlcnRpZXMgPT4gMCwKKwlwcm9wZXJ0aWVzID0+IHsKKwkgICAgJ2NoZWNrLW5vZGUnID0+IGdl
dF9zdGFuZGFyZF9vcHRpb24oJ3B2ZS1ub2RlJywgeworCQlkZXNjcmlwdGlvbiA9PiAiSWYgZ2l2
ZW4sIGNoZWNrcyB0aGUgY29uZmlndXJhdGlvbnMgb24gdGhlIGdpdmVuIG5vZGUgZm9yIgorCQkg
ICAgLiIgY29ycmVjdG5lc3MsIGFuZCBhZGRzIHJlbGV2YW50IGRpYWdub3N0aWNzIGZvciB0aGUg
ZGlyZWN0b3J5IHRvIHRoZSByZXNwb25zZS4iLAorCQlvcHRpb25hbCA9PiAxLAorCSAgICB9KSwK
Kwl9LAorICAgIH0sCisgICAgcmV0dXJucyA9PiB7CisJdHlwZSA9PiAnYXJyYXknLAorCWl0ZW1z
ID0+IHsKKwkgICAgdHlwZSA9PiAib2JqZWN0IiwKKwkgICAgcHJvcGVydGllcyA9PiB7CisJCWlk
ID0+IHsKKwkJICAgIHR5cGUgPT4gJ3N0cmluZycsCisJCSAgICBkZXNjcmlwdGlvbiA9PiAiVGhl
IGxvZ2ljYWwgSUQgb2YgdGhlIG1hcHBpbmcuIgorCQl9LAorCQltYXAgPT4geworCQkgICAgdHlw
ZSA9PiAnYXJyYXknLAorCQkgICAgZGVzY3JpcHRpb24gPT4gIlRoZSBlbnRyaWVzIG9mIHRoZSBt
YXBwaW5nLiIsCisJCSAgICBpdGVtcyA9PiB7CisJCQl0eXBlID0+ICdzdHJpbmcnLAorCQkJZGVz
Y3JpcHRpb24gPT4gIkEgbWFwcGluZyBmb3IgYSBub2RlLiIsCisJCSAgICB9LAorCQl9LAorCQlk
ZXNjcmlwdGlvbiA9PiB7CisJCSAgICB0eXBlID0+ICdzdHJpbmcnLAorCQkgICAgZGVzY3JpcHRp
b24gPT4gIkEgZGVzY3JpcHRpb24gb2YgdGhlIGxvZ2ljYWwgbWFwcGluZy4iLAorCQl9LAorCQlj
aGVja3MgPT4geworCQkgICAgdHlwZSA9PiAiYXJyYXkiLAorCQkgICAgb3B0aW9uYWwgPT4gMSwK
KwkJICAgIGRlc2NyaXB0aW9uID0+ICJBIGxpc3Qgb2YgY2hlY2tzLCBvbmx5IHByZXNlbnQgaWYg
J2NoZWNrLW5vZGUnIGlzIHNldC4iLAorCQkgICAgaXRlbXMgPT4geworCQkJdHlwZSA9PiAnb2Jq
ZWN0JywKKwkJCXByb3BlcnRpZXMgPT4geworCQkJICAgIHNldmVyaXR5ID0+IHsKKwkJCQl0eXBl
ID0+ICJzdHJpbmciLAorCQkJCWVudW0gPT4gWyd3YXJuaW5nJywgJ2Vycm9yJ10sCisJCQkJZGVz
Y3JpcHRpb24gPT4gIlRoZSBzZXZlcml0eSBvZiB0aGUgZXJyb3IiLAorCQkJICAgIH0sCisJCQkg
ICAgbWVzc2FnZSA9PiB7CisJCQkJdHlwZSA9PiAic3RyaW5nIiwKKwkJCQlkZXNjcmlwdGlvbiA9
PiAiVGhlIG1lc3NhZ2Ugb2YgdGhlIGVycm9yIiwKKwkJCSAgICB9LAorCQkJfSwKKwkJICAgIH0K
KwkJfSwKKwkgICAgfSwKKwl9LAorCWxpbmtzID0+IFsgeyByZWwgPT4gJ2NoaWxkJywgaHJlZiA9
PiAie2lkfSIgfSBdLAorICAgIH0sCisgICAgY29kZSA9PiBzdWIgeworCW15ICgkcGFyYW0pID0g
QF87CisKKwlteSAkcnBjZW52ID0gUFZFOjpSUENFbnZpcm9ubWVudDo6Z2V0KCk7CisJbXkgJGF1
dGh1c2VyID0gJHJwY2Vudi0+Z2V0X3VzZXIoKTsKKworCW15ICRjaGVja19ub2RlID0gJHBhcmFt
LT57J2NoZWNrLW5vZGUnfTsKKwlteSAkbG9jYWxfbm9kZSA9IFBWRTo6SU5vdGlmeTo6bm9kZW5h
bWUoKTsKKworCWRpZSAid3Jvbmcgbm9kZSB0byBjaGVjayAtICRjaGVja19ub2RlICE9ICRsb2Nh
bF9ub2RlXG4iCisJICAgIGlmIGRlZmluZWQoJGNoZWNrX25vZGUpICYmICRjaGVja19ub2RlIG5l
ICdsb2NhbGhvc3QnICYmICRjaGVja19ub2RlIG5lICRsb2NhbF9ub2RlOworCisJbXkgJGNmZyA9
IFBWRTo6TWFwcGluZzo6RGlyOjpjb25maWcoKTsKKworCW15ICRjYW5fc2VlX21hcHBpbmdfcHJp
dnMgPSBbJ01hcHBpbmcuTW9kaWZ5JywgJ01hcHBpbmcuVXNlJywgJ01hcHBpbmcuQXVkaXQnXTsK
KworCW15ICRyZXMgPSBbXTsKKwlmb3IgbXkgJGlkIChrZXlzICRjZmctPntpZHN9LT4lKikgewor
CSAgICBuZXh0IGlmICEkcnBjZW52LT5jaGVja19hbnkoJGF1dGh1c2VyLCAiL21hcHBpbmcvZGly
LyRpZCIsICRjYW5fc2VlX21hcHBpbmdfcHJpdnMsIDEpOworCSAgICBuZXh0IGlmICEkY2ZnLT57
aWRzfS0+eyRpZH07CisKKwkgICAgbXkgJGVudHJ5ID0gZGNsb25lKCRjZmctPntpZHN9LT57JGlk
fSk7CisJICAgICRlbnRyeS0+e2lkfSA9ICRpZDsKKwkgICAgJGVudHJ5LT57ZGlnZXN0fSA9ICRj
ZmctPntkaWdlc3R9OworCisJICAgIGlmIChkZWZpbmVkKCRjaGVja19ub2RlKSkgeworCQkkZW50
cnktPntjaGVja3N9ID0gW107CisJCWlmIChteSAkbWFwcGluZ3MgPSBQVkU6Ok1hcHBpbmc6OkRp
cjo6Z2V0X25vZGVfbWFwcGluZygkY2ZnLCAkaWQsICRjaGVja19ub2RlKSkgeworCQkgICAgaWYg
KCFzY2FsYXIoJG1hcHBpbmdzLT5AKikpIHsKKwkJCXB1c2ggJGVudHJ5LT57Y2hlY2tzfS0+QCos
IHsKKwkJCSAgICBzZXZlcml0eSA9PiAnd2FybmluZycsCisJCQkgICAgbWVzc2FnZSA9PiAiTm8g
bWFwcGluZyBmb3Igbm9kZSAkY2hlY2tfbm9kZS4iLAorCQkJfTsKKwkJICAgIH0KKwkJICAgIGZv
ciBteSAkbWFwcGluZyAoJG1hcHBpbmdzLT5AKikgeworCQkJZXZhbCB7IFBWRTo6TWFwcGluZzo6
RGlyOjphc3NlcnRfdmFsaWQoJG1hcHBpbmcpIH07CisJCQlpZiAobXkgJGVyciA9ICRAKSB7CisJ
CQkgICAgcHVzaCAkZW50cnktPntjaGVja3N9LT5AKiwgeworCQkJCXNldmVyaXR5ID0+ICdlcnJv
cicsCisJCQkJbWVzc2FnZSA9PiAiSW52YWxpZCBjb25maWd1cmF0aW9uOiAkZXJyIiwKKwkJCSAg
ICB9OworCQkJfQorCQkgICAgfQorCQl9CisJICAgIH0KKworCSAgICBwdXNoIEAkcmVzLCAkZW50
cnk7CisJfQorCisJcmV0dXJuICRyZXM7CisgICAgfSwKK30pOworCitfX1BBQ0tBR0VfXy0+cmVn
aXN0ZXJfbWV0aG9kICh7CisgICAgbmFtZSA9PiAnZ2V0JywKKyAgICBwcm90ZWN0ZWQgPT4gMSwK
KyAgICBwYXRoID0+ICd7aWR9JywKKyAgICBtZXRob2QgPT4gJ0dFVCcsCisgICAgZGVzY3JpcHRp
b24gPT4gIkdldCBkaXJlY3RvcnkgbWFwcGluZy4iLAorICAgIHBlcm1pc3Npb25zID0+IHsKKwlj
aGVjayA9Plsnb3InLAorCSAgICBbJ3Blcm0nLCAnL21hcHBpbmcvZGlyL3tpZH0nLCBbJ01hcHBp
bmcuVXNlJ11dLAorCSAgICBbJ3Blcm0nLCAnL21hcHBpbmcvZGlyL3tpZH0nLCBbJ01hcHBpbmcu
TW9kaWZ5J11dLAorCSAgICBbJ3Blcm0nLCAnL21hcHBpbmcvZGlyL3tpZH0nLCBbJ01hcHBpbmcu
QXVkaXQnXV0sCisJXSwKKyAgICB9LAorICAgIHBhcmFtZXRlcnMgPT4geworCWFkZGl0aW9uYWxQ
cm9wZXJ0aWVzID0+IDAsCisJcHJvcGVydGllcyA9PiB7CisJICAgIGlkID0+IHsKKwkJdHlwZSA9
PiAnc3RyaW5nJywKKwkJZm9ybWF0ID0+ICdwdmUtY29uZmlnaWQnLAorCSAgICB9LAorCX0KKyAg
ICB9LAorICAgIHJldHVybnMgPT4geyB0eXBlID0+ICdvYmplY3QnIH0sCisgICAgY29kZSA9PiBz
dWIgeworCW15ICgkcGFyYW0pID0gQF87CisKKwlteSAkY2ZnID0gUFZFOjpNYXBwaW5nOjpEaXI6
OmNvbmZpZygpOworCW15ICRpZCA9ICRwYXJhbS0+e2lkfTsKKworCW15ICRlbnRyeSA9ICRjZmct
PntpZHN9LT57JGlkfTsKKwlkaWUgIm1hcHBpbmcgJyRwYXJhbS0+e2lkfScgbm90IGZvdW5kXG4i
IGlmICFkZWZpbmVkKCRlbnRyeSk7CisKKwlteSAkZGF0YSA9IGRjbG9uZSgkZW50cnkpOworCisJ
JGRhdGEtPntkaWdlc3R9ID0gJGNmZy0+e2RpZ2VzdH07CisKKwlyZXR1cm4gJGRhdGE7CisgICAg
fX0pOworCitfX1BBQ0tBR0VfXy0+cmVnaXN0ZXJfbWV0aG9kICh7CisgICAgbmFtZSA9PiAnY3Jl
YXRlJywKKyAgICBwcm90ZWN0ZWQgPT4gMSwKKyAgICBwYXRoID0+ICcnLAorICAgIG1ldGhvZCA9
PiAnUE9TVCcsCisgICAgZGVzY3JpcHRpb24gPT4gIkNyZWF0ZSBhIG5ldyBkaXJlY3RvcnkgbWFw
cGluZy4iLAorICAgIHBlcm1pc3Npb25zID0+IHsKKwljaGVjayA9PiBbJ3Blcm0nLCAnL21hcHBp
bmcvZGlyJywgWydNYXBwaW5nLk1vZGlmeSddXSwKKyAgICB9LAorICAgIHBhcmFtZXRlcnMgPT4g
UFZFOjpNYXBwaW5nOjpEaXItPmNyZWF0ZVNjaGVtYSgxKSwKKyAgICByZXR1cm5zID0+IHsKKwl0
eXBlID0+ICdudWxsJywKKyAgICB9LAorICAgIGNvZGUgPT4gc3ViIHsKKwlteSAoJHBhcmFtKSA9
IEBfOworCisJbXkgJGlkID0gZXh0cmFjdF9wYXJhbSgkcGFyYW0sICdpZCcpOworCisJbXkgJHBs
dWdpbiA9IFBWRTo6TWFwcGluZzo6RGlyLT5sb29rdXAoJ2RpcicpOworCW15ICRvcHRzID0gJHBs
dWdpbi0+Y2hlY2tfY29uZmlnKCRpZCwgJHBhcmFtLCAxLCAxKTsKKworCW15ICRtYXBfbGlzdCA9
ICRvcHRzLT57bWFwfTsKKwlQVkU6Ok1hcHBpbmc6OkRpcjo6YXNzZXJ0X3ZhbGlkX21hcF9saXN0
KCRtYXBfbGlzdCk7CisKKwlQVkU6Ok1hcHBpbmc6OkRpcjo6bG9ja19kaXJfY29uZmlnKHN1YiB7
CisJICAgIG15ICRjZmcgPSBQVkU6Ok1hcHBpbmc6OkRpcjo6Y29uZmlnKCk7CisKKwkgICAgZGll
ICJkaXIgSUQgJyRpZCcgYWxyZWFkeSBkZWZpbmVkXG4iIGlmIGRlZmluZWQoJGNmZy0+e2lkc30t
PnskaWR9KTsKKworCSAgICAkY2ZnLT57aWRzfS0+eyRpZH0gPSAkb3B0czsKKworCSAgICBQVkU6
Ok1hcHBpbmc6OkRpcjo6d3JpdGVfZGlyX2NvbmZpZygkY2ZnKTsKKworCX0sICJjcmVhdGUgZGly
ZWN0b3J5IG1hcHBpbmcgZmFpbGVkIik7CisKKwlyZXR1cm47CisgICAgfSwKK30pOworCitfX1BB
Q0tBR0VfXy0+cmVnaXN0ZXJfbWV0aG9kICh7CisgICAgbmFtZSA9PiAndXBkYXRlJywKKyAgICBw
cm90ZWN0ZWQgPT4gMSwKKyAgICBwYXRoID0+ICd7aWR9JywKKyAgICBtZXRob2QgPT4gJ1BVVCcs
CisgICAgZGVzY3JpcHRpb24gPT4gIlVwZGF0ZSBhIGRpcmVjdG9yeSBtYXBwaW5nLiIsCisgICAg
cGVybWlzc2lvbnMgPT4geworCWNoZWNrID0+IFsncGVybScsICcvbWFwcGluZy9kaXIve2lkfScs
IFsnTWFwcGluZy5Nb2RpZnknXV0sCisgICAgfSwKKyAgICBwYXJhbWV0ZXJzID0+IFBWRTo6TWFw
cGluZzo6RGlyLT51cGRhdGVTY2hlbWEoKSwKKyAgICByZXR1cm5zID0+IHsKKwl0eXBlID0+ICdu
dWxsJywKKyAgICB9LAorICAgIGNvZGUgPT4gc3ViIHsKKwlteSAoJHBhcmFtKSA9IEBfOworCisJ
bXkgJGRpZ2VzdCA9IGV4dHJhY3RfcGFyYW0oJHBhcmFtLCAnZGlnZXN0Jyk7CisJbXkgJGRlbGV0
ZSA9IGV4dHJhY3RfcGFyYW0oJHBhcmFtLCAnZGVsZXRlJyk7CisJbXkgJGlkID0gZXh0cmFjdF9w
YXJhbSgkcGFyYW0sICdpZCcpOworCisJaWYgKCRkZWxldGUpIHsKKwkgICAgJGRlbGV0ZSA9IFsg
UFZFOjpUb29sczo6c3BsaXRfbGlzdCgkZGVsZXRlKSBdOworCX0KKworCVBWRTo6TWFwcGluZzo6
RGlyOjpsb2NrX2Rpcl9jb25maWcoc3ViIHsKKwkgICAgbXkgJGNmZyA9IFBWRTo6TWFwcGluZzo6
RGlyOjpjb25maWcoKTsKKworCSAgICBQVkU6OlRvb2xzOjphc3NlcnRfaWZfbW9kaWZpZWQoJGNm
Zy0+e2RpZ2VzdH0sICRkaWdlc3QpIGlmIGRlZmluZWQoJGRpZ2VzdCk7CisKKwkgICAgZGllICJk
aXIgSUQgJyRpZCcgZG9lcyBub3QgZXhpc3RcbiIgaWYgIWRlZmluZWQoJGNmZy0+e2lkc30tPnsk
aWR9KTsKKworCSAgICBteSAkcGx1Z2luID0gUFZFOjpNYXBwaW5nOjpEaXItPmxvb2t1cCgnZGly
Jyk7CisJICAgIG15ICRvcHRzID0gJHBsdWdpbi0+Y2hlY2tfY29uZmlnKCRpZCwgJHBhcmFtLCAx
LCAxKTsKKworCSAgICBteSAkbWFwX2xpc3QgPSAkb3B0cy0+e21hcH07CisJICAgIFBWRTo6TWFw
cGluZzo6RGlyOjphc3NlcnRfdmFsaWRfbWFwX2xpc3QoJG1hcF9saXN0KTsKKworCSAgICBteSAk
ZGF0YSA9ICRjZmctPntpZHN9LT57JGlkfTsKKworCSAgICBteSAkb3B0aW9ucyA9ICRwbHVnaW4t
PnByaXZhdGUoKS0+e29wdGlvbnN9LT57ZGlyfTsKKwkgICAgUFZFOjpTZWN0aW9uQ29uZmlnOjpk
ZWxldGVfZnJvbV9jb25maWcoJGRhdGEsICRvcHRpb25zLCAkb3B0cywgJGRlbGV0ZSk7CisKKwkg
ICAgJGRhdGEtPnskX30gPSAkb3B0cy0+eyRffSBmb3Iga2V5cyAkb3B0cy0+JSo7CisKKwkgICAg
UFZFOjpNYXBwaW5nOjpEaXI6OndyaXRlX2Rpcl9jb25maWcoJGNmZyk7CisKKwl9LCAidXBkYXRl
IGRpcmVjdG9yeSBtYXBwaW5nIGZhaWxlZCIpOworCisJcmV0dXJuOworICAgIH0sCit9KTsKKwor
X19QQUNLQUdFX18tPnJlZ2lzdGVyX21ldGhvZCAoeworICAgIG5hbWUgPT4gJ2RlbGV0ZScsCisg
ICAgcHJvdGVjdGVkID0+IDEsCisgICAgcGF0aCA9PiAne2lkfScsCisgICAgbWV0aG9kID0+ICdE
RUxFVEUnLAorICAgIGRlc2NyaXB0aW9uID0+ICJSZW1vdmUgZGlyZWN0b3J5IG1hcHBpbmcuIiwK
KyAgICBwZXJtaXNzaW9ucyA9PiB7CisJY2hlY2sgPT4gWyAncGVybScsICcvbWFwcGluZy9kaXIn
LCBbJ01hcHBpbmcuTW9kaWZ5J11dLAorICAgIH0sCisgICAgcGFyYW1ldGVycyA9PiB7CisJYWRk
aXRpb25hbFByb3BlcnRpZXMgPT4gMCwKKwlwcm9wZXJ0aWVzID0+IHsKKwkgICAgaWQgPT4gewor
CQl0eXBlID0+ICdzdHJpbmcnLAorCQlmb3JtYXQgPT4gJ3B2ZS1jb25maWdpZCcsCisJICAgIH0s
CisJfQorICAgIH0sCisgICAgcmV0dXJucyA9PiB7IHR5cGUgPT4gJ251bGwnIH0sCisgICAgY29k
ZSA9PiBzdWIgeworCW15ICgkcGFyYW0pID0gQF87CisKKwlteSAkaWQgPSAkcGFyYW0tPntpZH07
CisKKwlQVkU6Ok1hcHBpbmc6OkRpcjo6bG9ja19kaXJfY29uZmlnKHN1YiB7CisJICAgIG15ICRj
ZmcgPSBQVkU6Ok1hcHBpbmc6OkRpcjo6Y29uZmlnKCk7CisKKwkgICAgaWYgKCRjZmctPntpZHN9
LT57JGlkfSkgeworCQlkZWxldGUgJGNmZy0+e2lkc30tPnskaWR9OworCSAgICB9CisKKwkgICAg
UFZFOjpNYXBwaW5nOjpEaXI6OndyaXRlX2Rpcl9jb25maWcoJGNmZyk7CisKKwl9LCAiZGVsZXRl
IGRpciBtYXBwaW5nIGZhaWxlZCIpOworCisJcmV0dXJuOworICAgIH0KK30pOworCisxOwpkaWZm
IC0tZ2l0IGEvUFZFL0FQSTIvQ2x1c3Rlci9NYXBwaW5nL01ha2VmaWxlIGIvUFZFL0FQSTIvQ2x1
c3Rlci9NYXBwaW5nL01ha2VmaWxlCmluZGV4IGU3MzQ1YWI0Li41ZGJiM2Y1YyAxMDA2NDQKLS0t
IGEvUFZFL0FQSTIvQ2x1c3Rlci9NYXBwaW5nL01ha2VmaWxlCisrKyBiL1BWRS9BUEkyL0NsdXN0
ZXIvTWFwcGluZy9NYWtlZmlsZQpAQCAtMyw2ICszLDcgQEAgaW5jbHVkZSAuLi8uLi8uLi8uLi9k
ZWZpbmVzLm1rCiAjIGZvciBub2RlIGluZGVwZW5kZW50LCBjbHVzdGVyLXdpZGUgYXBwbGljYWJs
ZSwgQVBJIGVuZHBvaW50cwogIyBlbnN1cmUgd2UgZG8gbm90IGNvbmZsaWN0IHdpdGggZmlsZXMg
c2hpcHBlZCBieSBwdmUtY2x1c3RlciEhCiBQRVJMU09VUkNFPSAJXAorCURpci5wbSAgXAogCVBD
SS5wbQlcCiAJVVNCLnBtCiAKLS0gCjIuMzkuNQoKCgpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpwdmUtZGV2ZWwgbWFpbGluZyBsaXN0CnB2ZS1kZXZlbEBs
aXN0cy5wcm94bW94LmNvbQpodHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1h
bi9saXN0aW5mby9wdmUtZGV2ZWwK