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 D5BC51FF16F
	for <inbox@lore.proxmox.com>; Fri, 15 Nov 2024 13:12:39 +0100 (CET)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id DDF7F12A7C;
	Fri, 15 Nov 2024 13:11:50 +0100 (CET)
From: Stefan Hanreich <s.hanreich@proxmox.com>
To: pve-devel@lists.proxmox.com
Date: Fri, 15 Nov 2024 13:11:01 +0100
Message-Id: <20241115121109.170200-11-s.hanreich@proxmox.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241115121109.170200-1-s.hanreich@proxmox.com>
References: <20241115121109.170200-1-s.hanreich@proxmox.com>
MIME-Version: 1.0
X-SPAM-LEVEL: Spam detection results:  0
 AWL -0.233 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_LAZY_DOMAIN_SECURITY 1 Sending domain does not have any anti-forgery
 methods
 RDNS_NONE 0.793 Delivered to internal network by a host with no rDNS
 SPF_HELO_NONE           0.001 SPF: HELO does not publish an SPF Record
 SPF_NONE                0.001 SPF: sender does not publish an SPF Record
Subject: [pve-devel] [PATCH pve-firewall v4 10/18] api: add vnet endpoints
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: Wolfgang Bumiller <w.bumiller@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>

U2lnbmVkLW9mZi1ieTogU3RlZmFuIEhhbnJlaWNoIDxzLmhhbnJlaWNoQHByb3htb3guY29tPgpS
ZXZpZXdlZC1ieTogV29sZmdhbmcgQnVtaWxsZXIgPHcuYnVtaWxsZXJAcHJveG1veC5jb20+ClRl
c3RlZC1ieTogSGFubmVzIETDvHJyIDxoLmR1ZXJyQHByb3htb3guY29tPgotLS0KIHNyYy9QVkUv
QVBJMi9GaXJld2FsbC9NYWtlZmlsZSB8ICAgMSArCiBzcmMvUFZFL0FQSTIvRmlyZXdhbGwvUnVs
ZXMucG0gfCAgODQgKysrKysrKysrKysrKysrKwogc3JjL1BWRS9BUEkyL0ZpcmV3YWxsL1ZuZXQu
cG0gIHwgMTY5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL1BWRS9GaXJl
d2FsbC5wbSAgICAgICAgICAgIHwgIDEwICsrCiA0IGZpbGVzIGNoYW5nZWQsIDI2NCBpbnNlcnRp
b25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL1BWRS9BUEkyL0ZpcmV3YWxsL1ZuZXQucG0K
CmRpZmYgLS1naXQgYS9zcmMvUFZFL0FQSTIvRmlyZXdhbGwvTWFrZWZpbGUgYi9zcmMvUFZFL0FQ
STIvRmlyZXdhbGwvTWFrZWZpbGUKaW5kZXggZTkxNjc1NS4uMzI1YzRkMyAxMDA2NDQKLS0tIGEv
c3JjL1BWRS9BUEkyL0ZpcmV3YWxsL01ha2VmaWxlCisrKyBiL3NyYy9QVkUvQVBJMi9GaXJld2Fs
bC9NYWtlZmlsZQpAQCAtOSw2ICs5LDcgQEAgTElCX1NPVVJDRVM9CQkJXAogCUNsdXN0ZXIucG0J
CVwKIAlIb3N0LnBtCQkJXAogCVZNLnBtCQkJXAorCVZuZXQucG0JCQlcCiAJR3JvdXBzLnBtCiAK
IGFsbDoKZGlmZiAtLWdpdCBhL3NyYy9QVkUvQVBJMi9GaXJld2FsbC9SdWxlcy5wbSBiL3NyYy9Q
VkUvQVBJMi9GaXJld2FsbC9SdWxlcy5wbQppbmRleCA5ZTkwM2Q0Li41YzAzYjdiIDEwMDY0NAot
LS0gYS9zcmMvUFZFL0FQSTIvRmlyZXdhbGwvUnVsZXMucG0KKysrIGIvc3JjL1BWRS9BUEkyL0Zp
cmV3YWxsL1J1bGVzLnBtCkBAIC0xOCw2ICsxOCwyNSBAQCBteSAkYXBpX3Byb3BlcnRpZXMgPSB7
CiAgICAgfSwKIH07CiAKKz1oZWFkMyBjaGVja19wcml2aWxlZ2VzX2Zvcl9tZXRob2QoJGNsYXNz
LCAkbWV0aG9kX25hbWUsICRwYXJhbSkKKworSWYgdGhlIHBlcm1pc3Npb24gY2hlY2tzIGZyb20g
dGhlIHJlZ2lzdGVyX21ldGhvZCgpIGNhbGwgYXJlIG5vdCBzdWZmaWNpZW50LAordGhpcyBmdW5j
dGlvbiBjYW4gYmUgb3ZlcnJpZGVuIGZvciBwZXJmb3JtaW5nIGFkZGl0aW9uYWwgcGVybWlzc2lv
biBjaGVja3MKK2JlZm9yZSBBUEkgbWV0aG9kcyBhcmUgZXhlY3V0ZWQuIElmIHRoZSBwZXJtaXNz
aW9uIGNoZWNrIGZhaWxzLCB0aGlzIGZ1bmN0aW9uCitzaG91bGQgZGllIHdpdGggYW4gYXBwcm9w
cmlhdGUgZXJyb3IgbWVzc2FnZS4gVGhlIG5hbWUgb2YgdGhlIG1ldGhvZCBjYWxsaW5nCit0aGlz
IGZ1bmN0aW9uIGlzIHByb3ZpZGVkIGJ5IEM8JG1ldGhvZF9uYW1lPiBhbmQgdGhlIHBhcmFtZXRl
cnMgb2YgdGhlIEFQSQorbWV0aG9kIGFyZSBwcm92aWRlZCBieSBDPCRwYXJhbT4KKworRGVmYXVs
dCBpbXBsZW1lbnRhdGlvbiBpcyBhIG5vLW9wIHRvIHByZXNlcnZlIGJhY2t3YXJkcyBjb21wYXRp
YmlsaXR5IHdpdGgKK2V4aXN0aW5nIHN1YmNsYXNzZXMsIHNpbmNlIHRoaXMgZ290IGFkZGVkIGxh
dGVyIG9uLiBJdCBwcmVzZXJ2ZXMgZXhpc3RpbmcKK2JlaGF2aW9yIHdpdGhvdXQgaGF2aW5nIHRv
IGNoYW5nZSBldmVyeSBzdWJjbGFzcy4KKworPWN1dAorCitzdWIgY2hlY2tfcHJpdmlsZWdlc19m
b3JfbWV0aG9kIHsKKyAgICBteSAoJGNsYXNzLCAkbWV0aG9kX25hbWUsICRwYXJhbSkgPSBAXzsK
K30KKwogc3ViIGxvY2tfY29uZmlnIHsKICAgICBteSAoJGNsYXNzLCAkcGFyYW0sICRjb2RlKSA9
IEBfOwogCkBAIC05NCw2ICsxMTMsOCBAQCBzdWIgcmVnaXN0ZXJfZ2V0X3J1bGVzIHsKIAljb2Rl
ID0+IHN1YiB7CiAJICAgIG15ICgkcGFyYW0pID0gQF87CiAKKwkgICAgJGNsYXNzLT5jaGVja19w
cml2aWxlZ2VzX2Zvcl9tZXRob2QoJ2dldF9ydWxlcycsICRwYXJhbSk7CisKIAkgICAgbXkgKCRj
bHVzdGVyX2NvbmYsICRmd19jb25mLCAkcnVsZXMpID0gJGNsYXNzLT5sb2FkX2NvbmZpZygkcGFy
YW0pOwogCiAJICAgIG15ICgkbGlzdCwgJGRpZ2VzdCkgPSBQVkU6OkZpcmV3YWxsOjpjb3B5X2xp
c3Rfd2l0aF9kaWdlc3QoJHJ1bGVzKTsKQEAgLTE5Miw2ICsyMTMsOCBAQCBzdWIgcmVnaXN0ZXJf
Z2V0X3J1bGUgewogCWNvZGUgPT4gc3ViIHsKIAkgICAgbXkgKCRwYXJhbSkgPSBAXzsKIAorCSAg
ICAkY2xhc3MtPmNoZWNrX3ByaXZpbGVnZXNfZm9yX21ldGhvZCgnZ2V0X3J1bGUnLCAkcGFyYW0p
OworCiAJICAgIG15ICgkY2x1c3Rlcl9jb25mLCAkZndfY29uZiwgJHJ1bGVzKSA9ICRjbGFzcy0+
bG9hZF9jb25maWcoJHBhcmFtKTsKIAogCSAgICBteSAoJGxpc3QsICRkaWdlc3QpID0gUFZFOjpG
aXJld2FsbDo6Y29weV9saXN0X3dpdGhfZGlnZXN0KCRydWxlcyk7CkBAIC0yMzIsNiArMjU1LDgg
QEAgc3ViIHJlZ2lzdGVyX2NyZWF0ZV9ydWxlIHsKIAljb2RlID0+IHN1YiB7CiAJICAgIG15ICgk
cGFyYW0pID0gQF87CiAKKwkgICAgJGNsYXNzLT5jaGVja19wcml2aWxlZ2VzX2Zvcl9tZXRob2Qo
J2NyZWF0ZV9ydWxlJywgJHBhcmFtKTsKKwogCSAgICAkY2xhc3MtPmxvY2tfY29uZmlnKCRwYXJh
bSwgc3ViIHsKIAkJbXkgKCRwYXJhbSkgPSBAXzsKIApAQCAtMjkzLDYgKzMxOCw4IEBAIHN1YiBy
ZWdpc3Rlcl91cGRhdGVfcnVsZSB7CiAJY29kZSA9PiBzdWIgewogCSAgICBteSAoJHBhcmFtKSA9
IEBfOwogCisJICAgICRjbGFzcy0+Y2hlY2tfcHJpdmlsZWdlc19mb3JfbWV0aG9kKCd1cGRhdGVf
cnVsZScsICRwYXJhbSk7CisKIAkgICAgJGNsYXNzLT5sb2NrX2NvbmZpZygkcGFyYW0sIHN1YiB7
CiAJCW15ICgkcGFyYW0pID0gQF87CiAKQEAgLTM1OSw2ICszODYsOCBAQCBzdWIgcmVnaXN0ZXJf
ZGVsZXRlX3J1bGUgewogCWNvZGUgPT4gc3ViIHsKIAkgICAgbXkgKCRwYXJhbSkgPSBAXzsKIAor
CSAgICAkY2xhc3MtPmNoZWNrX3ByaXZpbGVnZXNfZm9yX21ldGhvZCgnZGVsZXRlX3J1bGUnLCAk
cGFyYW0pOworCiAJICAgICRjbGFzcy0+bG9ja19jb25maWcoJHBhcmFtLCBzdWIgewogCQlteSAo
JHBhcmFtKSA9IEBfOwogCkBAIC02MzQsNCArNjYzLDU5IEBAIHN1YiBzYXZlX3J1bGVzIHsKIAog
X19QQUNLQUdFX18tPnJlZ2lzdGVyX2hhbmRsZXJzKCk7CiAKK3BhY2thZ2UgUFZFOjpBUEkyOjpG
aXJld2FsbDo6Vm5ldFJ1bGVzOworCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOwordXNlIFBW
RTo6SlNPTlNjaGVtYSBxdyhnZXRfc3RhbmRhcmRfb3B0aW9uKTsKKwordXNlIGJhc2UgcXcoUFZF
OjpBUEkyOjpGaXJld2FsbDo6UnVsZXNCYXNlKTsKKworX19QQUNLQUdFX18tPmFkZGl0aW9uYWxf
cGFyYW1ldGVycyh7CisgICAgdm5ldCA9PiBnZXRfc3RhbmRhcmRfb3B0aW9uKCdwdmUtc2RuLXZu
ZXQtaWQnKSwKK30pOworCitzdWIgY2hlY2tfcHJpdmlsZWdlc19mb3JfbWV0aG9kIHsKKyAgICBt
eSAoJGNsYXNzLCAkbWV0aG9kX25hbWUsICRwYXJhbSkgPSBAXzsKKworICAgIGlmICgkbWV0aG9k
X25hbWUgZXEgJ2dldF9ydWxlJyB8fCAkbWV0aG9kX25hbWUgZXEgJ2dldF9ydWxlcycpIHsKKwlQ
VkU6OkFQSTI6OkZpcmV3YWxsOjpWbmV0OjpjaGVja192bmV0X2FjY2VzcygkcGFyYW0tPnt2bmV0
fSwgWydTRE4uQXVkaXQnLCAnU0ROLkFsbG9jYXRlJ10pOworICAgIH0gZWxzaWYgKCRtZXRob2Rf
bmFtZSA9fiAnKHVwZGF0ZXxjcmVhdGV8ZGVsZXRlKV9ydWxlJykgeworCVBWRTo6QVBJMjo6Rmly
ZXdhbGw6OlZuZXQ6OmNoZWNrX3ZuZXRfYWNjZXNzKCRwYXJhbS0+e3ZuZXR9LCBbJ1NETi5BbGxv
Y2F0ZSddKTsKKyAgICB9IGVsc2UgeworCWRpZSAidW5rbm93biBtZXRob2Q6ICRtZXRob2RfbmFt
ZSI7CisgICAgfQorfQorCitzdWIgcnVsZV9lbnYgeworICAgIG15ICgkY2xhc3MsICRwYXJhbSkg
PSBAXzsKKworICAgIHJldHVybiAndm5ldCc7Cit9CisKK3N1YiBsb2NrX2NvbmZpZyB7CisgICAg
bXkgKCRjbGFzcywgJHBhcmFtLCAkY29kZSkgPSBAXzsKKworICAgIFBWRTo6RmlyZXdhbGw6Omxv
Y2tfdm5ldGZ3X2NvbmYoJHBhcmFtLT57dm5ldH0sIDEwLCAkY29kZSwgJHBhcmFtKTsKK30KKwor
c3ViIGxvYWRfY29uZmlnIHsKKyAgICBteSAoJGNsYXNzLCAkcGFyYW0pID0gQF87CisKKyAgICBt
eSAkY2x1c3Rlcl9jb25mID0gUFZFOjpGaXJld2FsbDo6bG9hZF9jbHVzdGVyZndfY29uZigpOwor
ICAgIG15ICRmd19jb25mID0gUFZFOjpGaXJld2FsbDo6bG9hZF92bmV0ZndfY29uZigkY2x1c3Rl
cl9jb25mLCAndm5ldCcsICRwYXJhbS0+e3ZuZXR9KTsKKyAgICBteSAkcnVsZXMgPSAkZndfY29u
Zi0+e3J1bGVzfTsKKworICAgIHJldHVybiAoJGNsdXN0ZXJfY29uZiwgJGZ3X2NvbmYsICRydWxl
cyk7Cit9CisKK3N1YiBzYXZlX3J1bGVzIHsKKyAgICBteSAoJGNsYXNzLCAkcGFyYW0sICRmd19j
b25mLCAkcnVsZXMpID0gQF87CisKKyAgICAkZndfY29uZi0+e3J1bGVzfSA9ICRydWxlczsKKyAg
ICBQVkU6OkZpcmV3YWxsOjpzYXZlX3ZuZXRmd19jb25mKCRwYXJhbS0+e3ZuZXR9LCAkZndfY29u
Zik7Cit9CisKK19fUEFDS0FHRV9fLT5yZWdpc3Rlcl9oYW5kbGVycygpOworCiAxOwpkaWZmIC0t
Z2l0IGEvc3JjL1BWRS9BUEkyL0ZpcmV3YWxsL1ZuZXQucG0gYi9zcmMvUFZFL0FQSTIvRmlyZXdh
bGwvVm5ldC5wbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmY4NTZiCi0t
LSAvZGV2L251bGwKKysrIGIvc3JjL1BWRS9BUEkyL0ZpcmV3YWxsL1ZuZXQucG0KQEAgLTAsMCAr
MSwxNjkgQEAKK3BhY2thZ2UgUFZFOjpBUEkyOjpGaXJld2FsbDo6Vm5ldDsKKwordXNlIHN0cmlj
dDsKK3VzZSB3YXJuaW5nczsKKwordXNlIFN0b3JhYmxlIHF3KGRjbG9uZSk7CisKK3VzZSBQVkU6
OkV4Y2VwdGlvbiBxdyhyYWlzZV9wYXJhbV9leGMpOwordXNlIFBWRTo6SlNPTlNjaGVtYSBxdyhn
ZXRfc3RhbmRhcmRfb3B0aW9uKTsKK3VzZSBQVkU6OlJQQ0Vudmlyb25tZW50OworCit1c2UgUFZF
OjpGaXJld2FsbDsKK3VzZSBQVkU6OkFQSTI6OkZpcmV3YWxsOjpSdWxlczsKKworCit1c2UgYmFz
ZSBxdyhQVkU6OlJFU1RIYW5kbGVyKTsKKworc3ViIGNoZWNrX3ZuZXRfYWNjZXNzIHsKKyAgICBt
eSAoJHZuZXRpZCwgJHByaXZpbGVnZXMpID0gQF87CisKKyAgICBteSAkdm5ldCA9IFBWRTo6TmV0
d29yazo6U0ROOjpWbmV0czo6Z2V0X3ZuZXQoJHZuZXRpZCwgMSkKKwlvciBkaWUgImludmFsaWQg
dm5ldCBzcGVjaWZpZWQiOworCisgICAgbXkgJHpvbmVpZCA9ICR2bmV0LT57em9uZX07CisKKyAg
ICBteSAkcnBjZW52ID0gUFZFOjpSUENFbnZpcm9ubWVudDo6Z2V0KCk7CisgICAgbXkgJGF1dGh1
c2VyID0gJHJwY2Vudi0+Z2V0X3VzZXIoKTsKKworICAgICRycGNlbnYtPmNoZWNrX2FueSgkYXV0
aHVzZXIsICIvc2RuL3pvbmVzLyR6b25laWQvJHZuZXRpZCIsICRwcml2aWxlZ2VzKTsKK307CisK
K19fUEFDS0FHRV9fLT5yZWdpc3Rlcl9tZXRob2QgKHsKKyAgICBzdWJjbGFzcyA9PiAiUFZFOjpB
UEkyOjpGaXJld2FsbDo6Vm5ldFJ1bGVzIiwKKyAgICBwYXRoID0+ICdydWxlcycsCit9KTsKKwor
X19QQUNLQUdFX18tPnJlZ2lzdGVyX21ldGhvZCh7CisgICAgbmFtZSA9PiAnaW5kZXgnLAorICAg
IHBhdGggPT4gJycsCisgICAgbWV0aG9kID0+ICdHRVQnLAorICAgIGRlc2NyaXB0aW9uID0+ICJE
aXJlY3RvcnkgaW5kZXguIiwKKyAgICBwYXJhbWV0ZXJzID0+IHsKKwlhZGRpdGlvbmFsUHJvcGVy
dGllcyA9PiAwLAorCXByb3BlcnRpZXMgPT4geworCSAgICB2bmV0ID0+IGdldF9zdGFuZGFyZF9v
cHRpb24oJ3B2ZS1zZG4tdm5ldC1pZCcpLAorCX0sCisgICAgfSwKKyAgICByZXR1cm5zID0+IHsK
Kwl0eXBlID0+ICdhcnJheScsCisJaXRlbXMgPT4geworCSAgICB0eXBlID0+ICJvYmplY3QiLAor
CSAgICBwcm9wZXJ0aWVzID0+IHt9LAorCX0sCisJbGlua3MgPT4gWyB7IHJlbCA9PiAnY2hpbGQn
LCBocmVmID0+ICJ7bmFtZX0iIH0gXSwKKyAgICB9LAorICAgIGNvZGUgPT4gc3ViIHsKKwlteSAo
JHBhcmFtKSA9IEBfOworCisJbXkgJHJlc3VsdCA9IFsKKwkgICAgeyBuYW1lID0+ICdydWxlcycg
fSwKKwkgICAgeyBuYW1lID0+ICdvcHRpb25zJyB9LAorCV07CisKKwlyZXR1cm4gJHJlc3VsdDsK
KyAgICB9fSk7CisKK215ICRvcHRpb25fcHJvcGVydGllcyA9IGRjbG9uZSgkUFZFOjpGaXJld2Fs
bDo6dm5ldF9vcHRpb25fcHJvcGVydGllcyk7CisKK215IHN1YiBhZGRfb3B0aW9uX3Byb3BlcnRp
ZXMgeworICAgIG15ICgkcHJvcGVydGllcykgPSBAXzsKKworICAgIGZvcmVhY2ggbXkgJGsgKGtl
eXMgJSRvcHRpb25fcHJvcGVydGllcykgeworCSRwcm9wZXJ0aWVzLT57JGt9ID0gJG9wdGlvbl9w
cm9wZXJ0aWVzLT57JGt9OworICAgIH0KKworICAgIHJldHVybiAkcHJvcGVydGllczsKK307CisK
KworX19QQUNLQUdFX18tPnJlZ2lzdGVyX21ldGhvZCh7CisgICAgbmFtZSA9PiAnZ2V0X29wdGlv
bnMnLAorICAgIHBhdGggPT4gJ29wdGlvbnMnLAorICAgIG1ldGhvZCA9PiAnR0VUJywKKyAgICBk
ZXNjcmlwdGlvbiA9PiAiR2V0IHZuZXQgZmlyZXdhbGwgb3B0aW9ucy4iLAorICAgIHByb3RlY3Rl
ZCA9PiAxLAorICAgIHBlcm1pc3Npb25zID0+IHsKKwlkZXNjcmlwdGlvbiA9PiAiTmVlZHMgU0RO
LkF1ZGl0IG9yIFNETi5BbGxvY2F0ZSBwZXJtaXNzaW9ucyBvbiAnL3Nkbi96b25lcy88em9uZT4v
PHZuZXQ+JyIsCisJdXNlciA9PiAnYWxsJywKKyAgICB9LAorICAgIHBhcmFtZXRlcnMgPT4gewor
CWFkZGl0aW9uYWxQcm9wZXJ0aWVzID0+IDAsCisJcHJvcGVydGllcyA9PiB7CisJICAgIHZuZXQg
PT4gZ2V0X3N0YW5kYXJkX29wdGlvbigncHZlLXNkbi12bmV0LWlkJyksCisJfSwKKyAgICB9LAor
ICAgIHJldHVybnMgPT4geworCXR5cGUgPT4gIm9iamVjdCIsCisJcHJvcGVydGllcyA9PiAkb3B0
aW9uX3Byb3BlcnRpZXMsCisgICAgfSwKKyAgICBjb2RlID0+IHN1YiB7CisJbXkgKCRwYXJhbSkg
PSBAXzsKKworCWNoZWNrX3ZuZXRfYWNjZXNzKCRwYXJhbS0+e3ZuZXR9LCBbJ1NETi5BbGxvY2F0
ZScsICdTRE4uQXVkaXQnXSk7CisKKwlteSAkY2x1c3Rlcl9jb25mID0gUFZFOjpGaXJld2FsbDo6
bG9hZF9jbHVzdGVyZndfY29uZigpOworCW15ICR2bmV0ZndfY29uZiA9IFBWRTo6RmlyZXdhbGw6
OmxvYWRfdm5ldGZ3X2NvbmYoJGNsdXN0ZXJfY29uZiwgJ3ZuZXQnLCAkcGFyYW0tPnt2bmV0fSk7
CisKKwlyZXR1cm4gUFZFOjpGaXJld2FsbDo6Y29weV9vcGplY3Rfd2l0aF9kaWdlc3QoJHZuZXRm
d19jb25mLT57b3B0aW9uc30pOworICAgIH19KTsKKworX19QQUNLQUdFX18tPnJlZ2lzdGVyX21l
dGhvZCh7CisgICAgbmFtZSA9PiAnc2V0X29wdGlvbnMnLAorICAgIHBhdGggPT4gJ29wdGlvbnMn
LAorICAgIG1ldGhvZCA9PiAnUFVUJywKKyAgICBkZXNjcmlwdGlvbiA9PiAiU2V0IEZpcmV3YWxs
IG9wdGlvbnMuIiwKKyAgICBwcm90ZWN0ZWQgPT4gMSwKKyAgICBwZXJtaXNzaW9ucyA9PiB7CisJ
ZGVzY3JpcHRpb24gPT4gIk5lZWRzIFNETi5BbGxvY2F0ZSBwZXJtaXNzaW9ucyBvbiAnL3Nkbi96
b25lcy88em9uZT4vPHZuZXQ+JyIsCisJdXNlciA9PiAnYWxsJywKKyAgICB9LAorICAgIHBhcmFt
ZXRlcnMgPT4geworCWFkZGl0aW9uYWxQcm9wZXJ0aWVzID0+IDAsCisJcHJvcGVydGllcyA9PiBh
ZGRfb3B0aW9uX3Byb3BlcnRpZXMoeworCSAgICB2bmV0ID0+IGdldF9zdGFuZGFyZF9vcHRpb24o
J3B2ZS1zZG4tdm5ldC1pZCcpLAorCSAgICBkZWxldGUgPT4geworCQl0eXBlID0+ICdzdHJpbmcn
LCBmb3JtYXQgPT4gJ3B2ZS1jb25maWdpZC1saXN0JywKKwkJZGVzY3JpcHRpb24gPT4gIkEgbGlz
dCBvZiBzZXR0aW5ncyB5b3Ugd2FudCB0byBkZWxldGUuIiwKKwkJb3B0aW9uYWwgPT4gMSwKKwkg
ICAgfSwKKwkgICAgZGlnZXN0ID0+IGdldF9zdGFuZGFyZF9vcHRpb24oJ3B2ZS1jb25maWctZGln
ZXN0JyksCisJfSksCisgICAgfSwKKyAgICByZXR1cm5zID0+IHsgdHlwZSA9PiAibnVsbCIgfSwK
KyAgICBjb2RlID0+IHN1YiB7CisJbXkgKCRwYXJhbSkgPSBAXzsKKworCWNoZWNrX3ZuZXRfYWNj
ZXNzKCRwYXJhbS0+e3ZuZXR9LCBbJ1NETi5BbGxvY2F0ZSddKTsKKworCVBWRTo6RmlyZXdhbGw6
OmxvY2tfdm5ldGZ3X2NvbmYoJHBhcmFtLT57dm5ldH0sIDEwLCBzdWIgeworCSAgICBteSAkY2x1
c3Rlcl9jb25mID0gUFZFOjpGaXJld2FsbDo6bG9hZF9jbHVzdGVyZndfY29uZigpOworCSAgICBt
eSAkdm5ldGZ3X2NvbmYgPSBQVkU6OkZpcmV3YWxsOjpsb2FkX3ZuZXRmd19jb25mKCRjbHVzdGVy
X2NvbmYsICd2bmV0JywgJHBhcmFtLT57dm5ldH0pOworCisJICAgIG15ICh1bmRlZiwgJGRpZ2Vz
dCkgPSBQVkU6OkZpcmV3YWxsOjpjb3B5X29wamVjdF93aXRoX2RpZ2VzdCgkdm5ldGZ3X2NvbmYt
PntvcHRpb25zfSk7CisJICAgIFBWRTo6VG9vbHM6OmFzc2VydF9pZl9tb2RpZmllZCgkZGlnZXN0
LCAkcGFyYW0tPntkaWdlc3R9KTsKKworCSAgICBpZiAoJHBhcmFtLT57ZGVsZXRlfSkgeworCQlm
b3IgbXkgJG9wdCAoUFZFOjpUb29sczo6c3BsaXRfbGlzdCgkcGFyYW0tPntkZWxldGV9KSkgewor
CQkgICAgcmFpc2VfcGFyYW1fZXhjKHsgZGVsZXRlID0+ICJubyBzdWNoIG9wdGlvbiAnJG9wdCci
IH0pCisJCQlpZiAhJG9wdGlvbl9wcm9wZXJ0aWVzLT57JG9wdH07CisJCSAgICBkZWxldGUgJHZu
ZXRmd19jb25mLT57b3B0aW9uc30tPnskb3B0fTsKKwkJfQorCSAgICB9CisKKwkgICAgaWYgKGRl
ZmluZWQoJHBhcmFtLT57ZW5hYmxlfSkpIHsKKwkJJHBhcmFtLT57ZW5hYmxlfSA9ICRwYXJhbS0+
e2VuYWJsZX0gPyAxIDogMDsKKwkgICAgfQorCisJICAgIGZvciBteSAkayAoa2V5cyAlJG9wdGlv
bl9wcm9wZXJ0aWVzKSB7CisJCW5leHQgaWYgIWRlZmluZWQoJHBhcmFtLT57JGt9KTsKKwkJJHZu
ZXRmd19jb25mLT57b3B0aW9uc30tPnska30gPSAkcGFyYW0tPnska307CisJICAgIH0KKworCSAg
ICBQVkU6OkZpcmV3YWxsOjpzYXZlX3ZuZXRmd19jb25mKCRwYXJhbS0+e3ZuZXR9LCAkdm5ldGZ3
X2NvbmYpOworCX0pOworCisJcmV0dXJuIHVuZGVmOworICAgIH19KTsKKworMTsKZGlmZiAtLWdp
dCBhL3NyYy9QVkUvRmlyZXdhbGwucG0gYi9zcmMvUFZFL0ZpcmV3YWxsLnBtCmluZGV4IGVjN2E0
ZTYuLmVlNDllZTkgMTAwNjQ0Ci0tLSBhL3NyYy9QVkUvRmlyZXdhbGwucG0KKysrIGIvc3JjL1BW
RS9GaXJld2FsbC5wbQpAQCAtMTkxNiw2ICsxOTE2LDExIEBAIHN1YiBydWxlc19tb2RpZnlfcGVy
bWlzc2lvbnMgewogCXJldHVybiB7CiAJICAgIGNoZWNrID0+IFsncGVybScsICcvdm1zL3t2bWlk
fScsIFsgJ1ZNLkNvbmZpZy5OZXR3b3JrJyBdXSwKIAl9CisgICAgfSBlbHNpZiAoJHJ1bGVfZW52
IGVxICd2bmV0JykgeworCXJldHVybiB7CisJICAgIGRlc2NyaXB0aW9uID0+ICJOZWVkcyBTRE4u
QWxsb2NhdGUgcGVybWlzc2lvbnMgb24gJy9zZG4vem9uZXMvPHpvbmU+Lzx2bmV0PiciLAorCSAg
ICB1c2VyID0+ICdhbGwnLAorCX0KICAgICB9CiAKICAgICByZXR1cm4gdW5kZWY7CkBAIC0xOTM2
LDYgKzE5NDEsMTEgQEAgc3ViIHJ1bGVzX2F1ZGl0X3Blcm1pc3Npb25zIHsKIAlyZXR1cm4gewog
CSAgICBjaGVjayA9PiBbJ3Blcm0nLCAnL3Ztcy97dm1pZH0nLCBbICdWTS5BdWRpdCcgXV0sCiAJ
fQorICAgIH0gZWxzaWYgKCRydWxlX2VudiBlcSAndm5ldCcpIHsKKwlyZXR1cm4geworCSAgICBk
ZXNjcmlwdGlvbiA9PiAiTmVlZHMgU0ROLkF1ZGl0IG9yIFNETi5BbGxvY2F0ZSBwZXJtaXNzaW9u
cyBvbiAnL3Nkbi96b25lcy88em9uZT4vPHZuZXQ+JyIsCisJICAgIHVzZXIgPT4gJ2FsbCcsCisJ
fQogICAgIH0KIAogICAgIHJldHVybiB1bmRlZjsKLS0gCjIuMzkuNQoKCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCnB2ZS1kZXZlbCBtYWlsaW5nIGxpc3QK
cHZlLWRldmVsQGxpc3RzLnByb3htb3guY29tCmh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dp
LWJpbi9tYWlsbWFuL2xpc3RpbmZvL3B2ZS1kZXZlbAo=