From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id DD6041FF170 for ; Thu, 26 Jun 2025 17:12:03 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 15B873BDAD; Thu, 26 Jun 2025 17:12:12 +0200 (CEST) From: =?UTF-8?q?Michael=20K=C3=B6ppl?= To: pve-devel@lists.proxmox.com Date: Thu, 26 Jun 2025 17:11:18 +0200 Message-Id: <20250626151119.255169-8-m.koeppl@proxmox.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250626151119.255169-1-m.koeppl@proxmox.com> References: <20250626151119.255169-1-m.koeppl@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.017 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 v3 7/7] common: add checks for valid subnet mask and IPv4 address within subnet X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox VE development discussion Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" QWRkIGNoZWNrcyBmb3IgdmFsaWQgc3VibmV0IG1hc2sgKGdyZWF0ZXIgdGhhbiAvMCBhbmQgYXQg bW9zdCAvMzIgZm9yCklQdjQpLiBJbiBhZGRpdGlvbiwgY2hlY2sgaWYgdGhlIGFkZHJlc3MgZW50 ZXJlZCBieSB0aGUgdXNlciBpcyB2YWxpZAp3aXRoaW4gdGhlIGdpdmVuIHN1Ym5ldCwgaS5lLiBu b3QgYSBuZXR3b3JrIGFkZHJlc3Mgb3IgYnJvYWRjYXN0CmFkZHJlc3MuIC8zMSBpcyBjb25zaWRl cmVkIGFuIGV4Y2VwdGlvbiBpbiBhY2NvcmRhbmNlIHdpdGggUkZDMzAyMSBbMF0sCmNvbnNpZGVy aW5nIGFueSBvZiB0aGUgMiBhdmFpbGFibGUgYWRkcmVzc2VzIHRvIGJlIHZhbGlkIGhvc3QgYWRk cmVzc2VzLgoKWzBdIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjMzAy MQoKU2lnbmVkLW9mZi1ieTogTWljaGFlbCBLw7ZwcGwgPG0ua29lcHBsQHByb3htb3guY29tPgot LS0KIHByb3htb3gtYXV0by1pbnN0YWxsZXIvdGVzdHMvcGFyc2UtYW5zd2VyLnJzICB8ICAzICsK IC4uLi9wYXJzZV9hbnN3ZXIvaXB2NF9hbmRfc3VibmV0XzMxLmpzb24gICAgICB8IDE5ICsrKysr CiAuLi4vcGFyc2VfYW5zd2VyL2lwdjRfYW5kX3N1Ym5ldF8zMS50b21sICAgICAgfCAxOCArKysr CiAuLi4vaXB2NF9hbmRfc3VibmV0X2FkZHJfaXNfbmV0d29yay5qc29uICAgICAgfCAgMyArCiAu Li4vaXB2NF9hbmRfc3VibmV0X2FkZHJfaXNfbmV0d29yay50b21sICAgICAgfCAxOCArKysrCiAu Li4vaXB2NF9hbmRfc3VibmV0X21hc2tfMzMuanNvbiAgICAgICAgICAgICAgfCAgMyArCiAuLi4v aXB2NF9hbmRfc3VibmV0X21hc2tfMzMudG9tbCAgICAgICAgICAgICAgfCAxOCArKysrCiBwcm94 bW94LWluc3RhbGxlci1jb21tb24vc3JjL3V0aWxzLnJzICAgICAgICAgfCA4MiArKysrKysrKysr KysrKy0tLS0tCiA4IGZpbGVzIGNoYW5nZWQsIDE0NCBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlv bnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwcm94bW94LWF1dG8taW5zdGFsbGVyL3Rlc3RzL3Jl c291cmNlcy9wYXJzZV9hbnN3ZXIvaXB2NF9hbmRfc3VibmV0XzMxLmpzb24KIGNyZWF0ZSBtb2Rl IDEwMDY0NCBwcm94bW94LWF1dG8taW5zdGFsbGVyL3Rlc3RzL3Jlc291cmNlcy9wYXJzZV9hbnN3 ZXIvaXB2NF9hbmRfc3VibmV0XzMxLnRvbWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwcm94bW94LWF1 dG8taW5zdGFsbGVyL3Rlc3RzL3Jlc291cmNlcy9wYXJzZV9hbnN3ZXJfZmFpbC9pcHY0X2FuZF9z dWJuZXRfYWRkcl9pc19uZXR3b3JrLmpzb24KIGNyZWF0ZSBtb2RlIDEwMDY0NCBwcm94bW94LWF1 dG8taW5zdGFsbGVyL3Rlc3RzL3Jlc291cmNlcy9wYXJzZV9hbnN3ZXJfZmFpbC9pcHY0X2FuZF9z dWJuZXRfYWRkcl9pc19uZXR3b3JrLnRvbWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwcm94bW94LWF1 dG8taW5zdGFsbGVyL3Rlc3RzL3Jlc291cmNlcy9wYXJzZV9hbnN3ZXJfZmFpbC9pcHY0X2FuZF9z dWJuZXRfbWFza18zMy5qc29uCiBjcmVhdGUgbW9kZSAxMDA2NDQgcHJveG1veC1hdXRvLWluc3Rh bGxlci90ZXN0cy9yZXNvdXJjZXMvcGFyc2VfYW5zd2VyX2ZhaWwvaXB2NF9hbmRfc3VibmV0X21h c2tfMzMudG9tbAoKZGlmZiAtLWdpdCBhL3Byb3htb3gtYXV0by1pbnN0YWxsZXIvdGVzdHMvcGFy c2UtYW5zd2VyLnJzIGIvcHJveG1veC1hdXRvLWluc3RhbGxlci90ZXN0cy9wYXJzZS1hbnN3ZXIu cnMKaW5kZXggOGI3ZWFjNC4uODhmMzBhYSAxMDA2NDQKLS0tIGEvcHJveG1veC1hdXRvLWluc3Rh bGxlci90ZXN0cy9wYXJzZS1hbnN3ZXIucnMKKysrIGIvcHJveG1veC1hdXRvLWluc3RhbGxlci90 ZXN0cy9wYXJzZS1hbnN3ZXIucnMKQEAgLTEyNyw2ICsxMjcsNyBAQCBtb2QgdGVzdHMgewogICAg ICAgICAgICAgZnFkbl9mcm9tX2RoY3Bfbm9fZGhjcF9kb21haW5fd2l0aF9kZWZhdWx0X2RvbWFp biwKICAgICAgICAgICAgIGZ1bGxfZnFkbl9mcm9tX2RoY3Bfd2l0aF9kZWZhdWx0X2RvbWFpbiwK ICAgICAgICAgICAgIGhhc2hlZF9yb290X3Bhc3N3b3JkLAorICAgICAgICAgICAgaXB2NF9hbmRf c3VibmV0XzMxLAogICAgICAgICAgICAgbWluaW1hbCwKICAgICAgICAgICAgIG5pY19tYXRjaGlu ZywKICAgICAgICAgICAgIHNwZWNpZmljX25pYywKQEAgLTE0Niw2ICsxNDcsOCBAQCBtb2QgdGVz dHMgewogICAgICAgICAgICAgZHVwbGljYXRlX2Rpc2ssCiAgICAgICAgICAgICBmcWRuX2Zyb21f ZGhjcF9ub19kZWZhdWx0X2RvbWFpbiwKICAgICAgICAgICAgIGZxZG5faG9zdG5hbWVfb25seSwK KyAgICAgICAgICAgIGlwdjRfYW5kX3N1Ym5ldF9hZGRyX2lzX25ldHdvcmssCisgICAgICAgICAg ICBpcHY0X2FuZF9zdWJuZXRfbWFza18zMywKICAgICAgICAgICAgIGx2bV9zd2Fwc2l6ZV9ncmVh dGVyX3RoYW5faGRzaXplLAogICAgICAgICAgICAgbm9fZnFkbl9mcm9tX2RoY3AsCiAgICAgICAg ICAgICBub19yb290X3Bhc3N3b3JkX3NldCwKZGlmZiAtLWdpdCBhL3Byb3htb3gtYXV0by1pbnN0 YWxsZXIvdGVzdHMvcmVzb3VyY2VzL3BhcnNlX2Fuc3dlci9pcHY0X2FuZF9zdWJuZXRfMzEuanNv biBiL3Byb3htb3gtYXV0by1pbnN0YWxsZXIvdGVzdHMvcmVzb3VyY2VzL3BhcnNlX2Fuc3dlci9p cHY0X2FuZF9zdWJuZXRfMzEuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li4yYTQ3NWZlCi0tLSAvZGV2L251bGwKKysrIGIvcHJveG1veC1hdXRvLWluc3RhbGxlci90ZXN0 cy9yZXNvdXJjZXMvcGFyc2VfYW5zd2VyL2lwdjRfYW5kX3N1Ym5ldF8zMS5qc29uCkBAIC0wLDAg KzEsMTkgQEAKK3sKKyAgImF1dG9yZWJvb3QiOiAxLAorICAiY2lkciI6ICIxMC4xMC4xMC4xMC8z MSIsCisgICJjb3VudHJ5IjogImF0IiwKKyAgImRucyI6ICIxMC4xMC4xMC4xIiwKKyAgImRvbWFp biI6ICJ0ZXN0aW5zdGFsbCIsCisgICJmaWxlc3lzIjogImV4dDQiLAorICAiZ2F0ZXdheSI6ICIx MC4xMC4xMC4xIiwKKyAgImhkc2l6ZSI6IDIyMy41NzA4ODQ3MDQ1ODk4NCwKKyAgImV4aXN0aW5n X3N0b3JhZ2VfYXV0b19yZW5hbWUiOiAxLAorICAiaG9zdG5hbWUiOiAicHZlYXV0byIsCisgICJr ZXltYXAiOiAiZGUiLAorICAibWFpbHRvIjogIm1haWxAbm8uaW52YWxpZCIsCisgICJtbmdtdF9u aWMiOiAiZW5wMTI5czBmMW5wMSIsCisgICJyb290X3Bhc3N3b3JkIjogeyAicGxhaW4iOiAiMTIz NDU2NzgiIH0sCisgICJ0YXJnZXRfaGQiOiAiL2Rldi9zZGEiLAorICAidGltZXpvbmUiOiAiRXVy b3BlL1ZpZW5uYSIsCisgICJmaXJzdF9ib290IjogeyAiZW5hYmxlZCI6IDAgfQorfQpkaWZmIC0t Z2l0IGEvcHJveG1veC1hdXRvLWluc3RhbGxlci90ZXN0cy9yZXNvdXJjZXMvcGFyc2VfYW5zd2Vy L2lwdjRfYW5kX3N1Ym5ldF8zMS50b21sIGIvcHJveG1veC1hdXRvLWluc3RhbGxlci90ZXN0cy9y ZXNvdXJjZXMvcGFyc2VfYW5zd2VyL2lwdjRfYW5kX3N1Ym5ldF8zMS50b21sCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjYTZjYTUKLS0tIC9kZXYvbnVsbAorKysgYi9wcm94 bW94LWF1dG8taW5zdGFsbGVyL3Rlc3RzL3Jlc291cmNlcy9wYXJzZV9hbnN3ZXIvaXB2NF9hbmRf c3VibmV0XzMxLnRvbWwKQEAgLTAsMCArMSwxOCBAQAorW2dsb2JhbF0KK2tleWJvYXJkID0gImRl IgorY291bnRyeSA9ICJhdCIKK2ZxZG4gPSAicHZlYXV0by50ZXN0aW5zdGFsbCIKK21haWx0byA9 ICJtYWlsQG5vLmludmFsaWQiCit0aW1lem9uZSA9ICJFdXJvcGUvVmllbm5hIgorcm9vdF9wYXNz d29yZCA9ICIxMjM0NTY3OCIKKworW25ldHdvcmtdCitzb3VyY2UgPSAiZnJvbS1hbnN3ZXIiCitj aWRyID0gIjEwLjEwLjEwLjEwLzMxIgorZG5zID0gIjEwLjEwLjEwLjEiCitnYXRld2F5ID0gIjEw LjEwLjEwLjEiCitmaWx0ZXIuSURfTkVUX05BTUUgPSAiZW5wMTI5czBmMW5wMSIKKworW2Rpc2st c2V0dXBdCitmaWxlc3lzdGVtID0gImV4dDQiCitkaXNrX2xpc3QgPSBbInNkYSJdCmRpZmYgLS1n aXQgYS9wcm94bW94LWF1dG8taW5zdGFsbGVyL3Rlc3RzL3Jlc291cmNlcy9wYXJzZV9hbnN3ZXJf ZmFpbC9pcHY0X2FuZF9zdWJuZXRfYWRkcl9pc19uZXR3b3JrLmpzb24gYi9wcm94bW94LWF1dG8t aW5zdGFsbGVyL3Rlc3RzL3Jlc291cmNlcy9wYXJzZV9hbnN3ZXJfZmFpbC9pcHY0X2FuZF9zdWJu ZXRfYWRkcl9pc19uZXR3b3JrLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uYjI4Njk5ZAotLS0gL2Rldi9udWxsCisrKyBiL3Byb3htb3gtYXV0by1pbnN0YWxsZXIvdGVz dHMvcmVzb3VyY2VzL3BhcnNlX2Fuc3dlcl9mYWlsL2lwdjRfYW5kX3N1Ym5ldF9hZGRyX2lzX25l dHdvcmsuanNvbgpAQCAtMCwwICsxLDMgQEAKK3sKKyAgInBhcnNlLWVycm9yIjogImVycm9yIHBh cnNpbmcgYW5zd2VyLnRvbWw6IEludmFsaWQgQ0lEUjogYWRkcmVzcyBpcyBhIG5ldHdvcmsgYWRk cmVzcyIKK30KZGlmZiAtLWdpdCBhL3Byb3htb3gtYXV0by1pbnN0YWxsZXIvdGVzdHMvcmVzb3Vy Y2VzL3BhcnNlX2Fuc3dlcl9mYWlsL2lwdjRfYW5kX3N1Ym5ldF9hZGRyX2lzX25ldHdvcmsudG9t bCBiL3Byb3htb3gtYXV0by1pbnN0YWxsZXIvdGVzdHMvcmVzb3VyY2VzL3BhcnNlX2Fuc3dlcl9m YWlsL2lwdjRfYW5kX3N1Ym5ldF9hZGRyX2lzX25ldHdvcmsudG9tbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi43YTkxNDFiCi0tLSAvZGV2L251bGwKKysrIGIvcHJveG1veC1h dXRvLWluc3RhbGxlci90ZXN0cy9yZXNvdXJjZXMvcGFyc2VfYW5zd2VyX2ZhaWwvaXB2NF9hbmRf c3VibmV0X2FkZHJfaXNfbmV0d29yay50b21sCkBAIC0wLDAgKzEsMTggQEAKK1tnbG9iYWxdCitr ZXlib2FyZCA9ICJkZSIKK2NvdW50cnkgPSAiYXQiCitmcWRuID0gInB2ZWF1dG8udGVzdGluc3Rh bGwiCittYWlsdG8gPSAibWFpbEBuby5pbnZhbGlkIgordGltZXpvbmUgPSAiRXVyb3BlL1ZpZW5u YSIKK3Jvb3RfcGFzc3dvcmQgPSAiMTIzNDU2NzgiCisKK1tuZXR3b3JrXQorc291cmNlID0gImZy b20tYW5zd2VyIgorY2lkciA9ICIxMC4xMC4xMC4zMi8yNyIKK2RucyA9ICIxMC4xMC4xMC4xIgor Z2F0ZXdheSA9ICIxMC4xMC4xMC4xIgorZmlsdGVyLklEX05FVF9OQU1FID0gImVucDEyOXMwZjFu cDEiCisKK1tkaXNrLXNldHVwXQorZmlsZXN5c3RlbSA9ICJleHQ0IgorZGlza19saXN0ID0gWyJz ZGEiXQpkaWZmIC0tZ2l0IGEvcHJveG1veC1hdXRvLWluc3RhbGxlci90ZXN0cy9yZXNvdXJjZXMv cGFyc2VfYW5zd2VyX2ZhaWwvaXB2NF9hbmRfc3VibmV0X21hc2tfMzMuanNvbiBiL3Byb3htb3gt YXV0by1pbnN0YWxsZXIvdGVzdHMvcmVzb3VyY2VzL3BhcnNlX2Fuc3dlcl9mYWlsL2lwdjRfYW5k X3N1Ym5ldF9tYXNrXzMzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u NmIyODg4YgotLS0gL2Rldi9udWxsCisrKyBiL3Byb3htb3gtYXV0by1pbnN0YWxsZXIvdGVzdHMv cmVzb3VyY2VzL3BhcnNlX2Fuc3dlcl9mYWlsL2lwdjRfYW5kX3N1Ym5ldF9tYXNrXzMzLmpzb24K QEAgLTAsMCArMSwzIEBACit7CisgICAgInBhcnNlLWVycm9yIjogImVycm9yIHBhcnNpbmcgYW5z d2VyLnRvbWw6IEludmFsaWQgQ0lEUjogbWFzayBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuIDMyIgor fQpkaWZmIC0tZ2l0IGEvcHJveG1veC1hdXRvLWluc3RhbGxlci90ZXN0cy9yZXNvdXJjZXMvcGFy c2VfYW5zd2VyX2ZhaWwvaXB2NF9hbmRfc3VibmV0X21hc2tfMzMudG9tbCBiL3Byb3htb3gtYXV0 by1pbnN0YWxsZXIvdGVzdHMvcmVzb3VyY2VzL3BhcnNlX2Fuc3dlcl9mYWlsL2lwdjRfYW5kX3N1 Ym5ldF9tYXNrXzMzLnRvbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTZh NTYwZgotLS0gL2Rldi9udWxsCisrKyBiL3Byb3htb3gtYXV0by1pbnN0YWxsZXIvdGVzdHMvcmVz b3VyY2VzL3BhcnNlX2Fuc3dlcl9mYWlsL2lwdjRfYW5kX3N1Ym5ldF9tYXNrXzMzLnRvbWwKQEAg LTAsMCArMSwxOCBAQAorW2dsb2JhbF0KK2tleWJvYXJkID0gImRlIgorY291bnRyeSA9ICJhdCIK K2ZxZG4gPSAicHZlYXV0by50ZXN0aW5zdGFsbCIKK21haWx0byA9ICJtYWlsQG5vLmludmFsaWQi Cit0aW1lem9uZSA9ICJFdXJvcGUvVmllbm5hIgorcm9vdF9wYXNzd29yZCA9ICIxMjM0NTY3OCIK KworW25ldHdvcmtdCitzb3VyY2UgPSAiZnJvbS1hbnN3ZXIiCitjaWRyID0gIjEwLjEwLjEwLjEw LzMzIgorZG5zID0gIjEwLjEwLjEwLjEiCitnYXRld2F5ID0gIjEwLjEwLjEwLjEiCitmaWx0ZXIu SURfTkVUX05BTUUgPSAiZW5wMTI5czBmMW5wMSIKKworW2Rpc2stc2V0dXBdCitmaWxlc3lzdGVt ID0gImV4dDQiCitkaXNrX2xpc3QgPSBbInNkYSJdCmRpZmYgLS1naXQgYS9wcm94bW94LWluc3Rh bGxlci1jb21tb24vc3JjL3V0aWxzLnJzIGIvcHJveG1veC1pbnN0YWxsZXItY29tbW9uL3NyYy91 dGlscy5ycwppbmRleCAxZmU2YTc0Li45MjljYzZiIDEwMDY0NAotLS0gYS9wcm94bW94LWluc3Rh bGxlci1jb21tb24vc3JjL3V0aWxzLnJzCisrKyBiL3Byb3htb3gtaW5zdGFsbGVyLWNvbW1vbi9z cmMvdXRpbHMucnMKQEAgLTEsNyArMSw3IEBACiB1c2Ugc3RkOjp7CisgICAgZXJyb3I6OkVycm9y LAogICAgIGZtdCwKICAgICBuZXQ6OntBZGRyUGFyc2VFcnJvciwgSXBBZGRyfSwKLSAgICBudW06 OlBhcnNlSW50RXJyb3IsCiAgICAgc3RyOjpGcm9tU3RyLAogfTsKIApAQCAtMTUsMjAgKzE1LDI2 IEBAIHB1YiBlbnVtIENpZHJBZGRyZXNzUGFyc2VFcnJvciB7CiAgICAgLy8vIFRoZSBJUCBhZGRy ZXNzIHBhcnQgY291bGQgbm90IGJlIHBhcnNlZC4KICAgICBJbnZhbGlkQWRkcihBZGRyUGFyc2VF cnJvciksCiAgICAgLy8vIFRoZSBtYXNrIGNvdWxkIG5vdCBiZSBwYXJzZWQuCi0gICAgSW52YWxp ZE1hc2soT3B0aW9uPFBhcnNlSW50RXJyb3I+KSwKKyAgICBJbnZhbGlkTWFzayhCb3g8ZHluIEVy cm9yPiksCisgICAgLy8vIFRoZSBJUCBhZGRyZXNzIGlzIGEgbmV0d29yayBhZGRyZXNzLgorICAg IElzTmV0d29ya0FkZHIsCisgICAgLy8vIFRoZSBJUCBhZGRyZXNzIGlzIGEgYnJvYWRjYXN0IGFk ZHJlc3MuCisgICAgSXNCcm9hZGNhc3RBZGRyLAogfQogCiBpbXBsIGZtdDo6RGlzcGxheSBmb3Ig Q2lkckFkZHJlc3NQYXJzZUVycm9yIHsKICAgICBmbiBmbXQoJnNlbGYsIGY6ICZtdXQgZm10OjpG b3JtYXR0ZXI8J18+KSAtPiBmbXQ6OlJlc3VsdCB7Ci0gICAgICAgIGxldCBtc2cgPSBtYXRjaCAm c2VsZiB7CisgICAgICAgIHdyaXRlIShmLCAiSW52YWxpZCBDSURSOiAiKT87CisKKyAgICAgICAg bWF0Y2ggc2VsZiB7CiAgICAgICAgICAgICBDaWRyQWRkcmVzc1BhcnNlRXJyb3I6Ok5vRGVsaW1p dGVyID0+IHsKLSAgICAgICAgICAgICAgICBTdHJpbmc6OmZyb20oIk5vIGRlbGltaXRlciBmb3Ig c2VwYXJhdGluZyBhZGRyZXNzIGFuZCBtYXNrIHdhcyBmb3VuZCIpCisgICAgICAgICAgICAgICAg d3JpdGUhKGYsICJubyBkZWxpbWl0ZXIgZm9yIHNlcGFyYXRpbmcgYWRkcmVzcyBhbmQgbWFzayB3 YXMgZm91bmQiKQogICAgICAgICAgICAgfQotICAgICAgICAgICAgQ2lkckFkZHJlc3NQYXJzZUVy cm9yOjpJbnZhbGlkQWRkcihhZGRyX3BhcnNlX2Vycm9yKSA9PiBmb3JtYXQhKCJ7YWRkcl9wYXJz ZV9lcnJvcn0iKSwKLSAgICAgICAgICAgIENpZHJBZGRyZXNzUGFyc2VFcnJvcjo6SW52YWxpZE1h c2socGFyc2VfaW50X2Vycm9yKSA9PiBmb3JtYXQhKCJ7Oj99IiwgcGFyc2VfaW50X2Vycm9yKSwK LSAgICAgICAgfTsKLQotICAgICAgICB3cml0ZSEoZiwgIkludmFsaWQgQ0lEUjoge21zZ30iKQor ICAgICAgICAgICAgQ2lkckFkZHJlc3NQYXJzZUVycm9yOjpJbnZhbGlkQWRkcihlcnIpID0+IHdy aXRlIShmLCAie2Vycn0iKSwKKyAgICAgICAgICAgIENpZHJBZGRyZXNzUGFyc2VFcnJvcjo6SW52 YWxpZE1hc2soZXJyKSA9PiB3cml0ZSEoZiwgIntlcnJ9IiksCisgICAgICAgICAgICBDaWRyQWRk cmVzc1BhcnNlRXJyb3I6OklzTmV0d29ya0FkZHIgPT4gd3JpdGUhKGYsICJhZGRyZXNzIGlzIGEg bmV0d29yayBhZGRyZXNzIiksCisgICAgICAgICAgICBDaWRyQWRkcmVzc1BhcnNlRXJyb3I6Oklz QnJvYWRjYXN0QWRkciA9PiB3cml0ZSEoZiwgImFkZHJlc3MgaXMgYSBicm9hZGNhc3QgYWRkcmVz cyIpLAorICAgICAgICB9CiAgICAgfQogfQogCkBAIC02MSwxMSArNjcsMTAgQEAgaW1wbCBDaWRy QWRkcmVzcyB7CiAgICAgcHViIGZuIG5ldzxUOiBJbnRvPElwQWRkcj4+KGFkZHI6IFQsIG1hc2s6 IHVzaXplKSAtPiBSZXN1bHQ8U2VsZiwgQ2lkckFkZHJlc3NQYXJzZUVycm9yPiB7CiAgICAgICAg IGxldCBhZGRyID0gYWRkci5pbnRvKCk7CiAKLSAgICAgICAgaWYgbWFzayA+IG1hc2tfbGltaXQo JmFkZHIpIHsKLSAgICAgICAgICAgIEVycihDaWRyQWRkcmVzc1BhcnNlRXJyb3I6OkludmFsaWRN YXNrKE5vbmUpKQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgT2soU2VsZiB7IGFkZHIs IG1hc2sgfSkKLSAgICAgICAgfQorICAgICAgICBjaGVja19tYXNrX2xpbWl0KCZhZGRyLCBtYXNr KT87CisgICAgICAgIGNoZWNrX2FkZHJfdmFsaWRfaW5fc3VibmV0KCZhZGRyLCBtYXNrKT87CisK KyAgICAgICAgT2soU2VsZiB7IGFkZHIsIG1hc2sgfSkKICAgICB9CiAKICAgICAvLy8gUmV0dXJu cyBvbmx5IHRoZSBJUCBhZGRyZXNzIHBhcnQgb2YgdGhlIGFkZHJlc3MuCkBAIC0xMDEsMTMgKzEw NiwxMiBAQCBpbXBsIEZyb21TdHIgZm9yIENpZHJBZGRyZXNzIHsKIAogICAgICAgICBsZXQgbWFz ayA9IG1hc2sKICAgICAgICAgICAgIC5wYXJzZSgpCi0gICAgICAgICAgICAubWFwX2Vycih8ZXJy fCBDaWRyQWRkcmVzc1BhcnNlRXJyb3I6OkludmFsaWRNYXNrKFNvbWUoZXJyKSkpPzsKKyAgICAg ICAgICAgIC5tYXBfZXJyKHxlcnJ8IENpZHJBZGRyZXNzUGFyc2VFcnJvcjo6SW52YWxpZE1hc2so Qm94OjpuZXcoZXJyKSkpPzsKIAotICAgICAgICBpZiBtYXNrID4gbWFza19saW1pdCgmYWRkcikg ewotICAgICAgICAgICAgRXJyKENpZHJBZGRyZXNzUGFyc2VFcnJvcjo6SW52YWxpZE1hc2soTm9u ZSkpCi0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBPayhTZWxmIHsgYWRkciwgbWFzayB9 KQotICAgICAgICB9CisgICAgICAgIGNoZWNrX21hc2tfbGltaXQoJmFkZHIsIG1hc2spPzsKKyAg ICAgICAgY2hlY2tfYWRkcl92YWxpZF9pbl9zdWJuZXQoJmFkZHIsIG1hc2spPzsKKworICAgICAg ICBPayhTZWxmIHsgYWRkciwgbWFzayB9KQogICAgIH0KIH0KIApAQCAtMTMzLDYgKzEzNyw0NCBA QCBmbiBtYXNrX2xpbWl0KGFkZHI6ICZJcEFkZHIpIC0+IHVzaXplIHsKICAgICBpZiBhZGRyLmlz X2lwdjQoKSB7IDMyIH0gZWxzZSB7IDEyOCB9CiB9CiAKK2ZuIGNoZWNrX21hc2tfbGltaXQoYWRk cjogJklwQWRkciwgbWFzazogdXNpemUpIC0+IFJlc3VsdDwoKSwgQ2lkckFkZHJlc3NQYXJzZUVy cm9yPiB7CisgICAgbGV0IGxpbWl0ID0gbWFza19saW1pdCgmYWRkcik7CisgICAgcmV0dXJuIGlm IG1hc2sgPiBsaW1pdCB7CisgICAgICAgIEVycihDaWRyQWRkcmVzc1BhcnNlRXJyb3I6OkludmFs aWRNYXNrKAorICAgICAgICAgICAgZm9ybWF0ISgibWFzayBjYW5ub3QgYmUgZ3JlYXRlciB0aGFu IHtsaW1pdH0iKS5pbnRvKCksCisgICAgICAgICkpCisgICAgfSBlbHNlIHsKKyAgICAgICAgT2so KCkpCisgICAgfTsKK30KKworZm4gY2hlY2tfYWRkcl92YWxpZF9pbl9zdWJuZXQoYWRkcjogJklw QWRkciwgbWFzazogdXNpemUpIC0+IFJlc3VsdDwoKSwgQ2lkckFkZHJlc3NQYXJzZUVycm9yPiB7 CisgICAgbWF0Y2ggJmFkZHIgeworICAgICAgICBJcEFkZHI6OlY0KGFkZHJfdjQpID0+IHsKKyAg ICAgICAgICAgIGlmIG1hc2sgPj0gMzEgeworICAgICAgICAgICAgICAgIHJldHVybiBPaygoKSk7 CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxldCBudW1faG9zdF9iaXRzID0gMzIgLSBt YXNrOworICAgICAgICAgICAgbGV0IGhvc3RfcGFydF9tYXNrID0gKDF1MzIgPDwgbnVtX2hvc3Rf Yml0cykgLSAxOworCisgICAgICAgICAgICBsZXQgaXBfYml0cyA9IHUzMjo6ZnJvbV9iZV9ieXRl cyhhZGRyX3Y0Lm9jdGV0cygpKTsKKworICAgICAgICAgICAgbGV0IG5ldHdvcmtfYWRkciA9IGlw X2JpdHMgJiAhaG9zdF9wYXJ0X21hc2s7CisgICAgICAgICAgICBsZXQgYnJvYWRjYXN0X2FkZHIg PSBuZXR3b3JrX2FkZHIgfCBob3N0X3BhcnRfbWFzazsKKworICAgICAgICAgICAgaWYgaXBfYml0 cyA9PSBuZXR3b3JrX2FkZHIgeworICAgICAgICAgICAgICAgIEVycihDaWRyQWRkcmVzc1BhcnNl RXJyb3I6OklzTmV0d29ya0FkZHIpCisgICAgICAgICAgICB9IGVsc2UgaWYgaXBfYml0cyA9PSBi cm9hZGNhc3RfYWRkciB7CisgICAgICAgICAgICAgICAgRXJyKENpZHJBZGRyZXNzUGFyc2VFcnJv cjo6SXNCcm9hZGNhc3RBZGRyKQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg ICBPaygoKSkKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBJcEFkZHI6OlY2KF8p ID0+IE9rKCgpKSwKKyAgICB9Cit9CisKIC8vLyBQb3NzaWJsZSBlcnJvcnMgdGhhdCBtaWdodCBv Y2N1ciB3aGVuIHBhcnNpbmcgRlFETnMuCiAjW2Rlcml2ZShEZWJ1ZywgRXEsIFBhcnRpYWxFcSld CiBwdWIgZW51bSBGcWRuUGFyc2VFcnJvciB7Ci0tIAoyLjM5LjUKCgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KcHZlLWRldmVsIG1haWxpbmcgbGlzdApw dmUtZGV2ZWxAbGlzdHMucHJveG1veC5jb20KaHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9jZ2kt YmluL21haWxtYW4vbGlzdGluZm8vcHZlLWRldmVsCg==