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 C35001FF16F for <inbox@lore.proxmox.com>; Tue, 29 Apr 2025 16:09:55 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id CE32B9AE7; Tue, 29 Apr 2025 16:09:51 +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:40 +0200 Message-Id: <20250429140940.161711-7-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] [RFC PATCH pve-installer v2 6/6] 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 <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> QWRkIGNoZWNrcyBmb3IgdmFsaWQgc3VibmV0IG1hc2sgKGdyZWF0ZXIgdGhhbiAvMCBhbmQgYXQg bW9zdCAvMzIgZm9yCklQdjQpLiBJbiBhZGRpdGlvbiwgY2hlY2sgaWYgdGhlIGFkZHJlc3MgZW50 ZXJlZCBieSB0aGUgdXNlciBpcyB2YWxpZAp3aXRoaW4gdGhlIGdpdmVuIHN1Ym5ldCwgaS5lLiBu b3QgYSBuZXR3b3JrIGFkZHJlc3Mgb3IgYnJvYWRjYXN0CmFkZHJlc3MuIC8zMSBpcyBjb25zaWRl cmVkIGFuIGV4Y2VwdGlvbiBpbiBhY2NvcmRhbmNlIHdpdGggUkZDMzAyMSBbMF0sCmNvbnNpZGVy aW5nIGFueSBvZiB0aGUgMiBhdmFpbGFibGUgYWRkcmVzc2VzIHRvIGJlIHZhbGlkIGhvc3QgYWRk cmVzc2VzLgoKWzBdIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjMzAy MQoKU2lnbmVkLW9mZi1ieTogTWljaGFlbCBLw7ZwcGwgPG0ua29lcHBsQHByb3htb3guY29tPgot LS0KU29tZSBpbnB1dCAvIGRpc2N1c3Npb24gd291bGQgYmUgbXVjaCBhcHByZWNpYXRlZCBoZXJl LCBzaW5jZSB0aGlzIG1pZ2h0CmFnYWluIGJlIGNvbnNpZGVyZWQgdG9vIHJlc3RyaWN0aXZlLgoK IHByb3htb3gtYXV0by1pbnN0YWxsZXIvdGVzdHMvcGFyc2UtYW5zd2VyLnJzICB8ICAzICsKIC4u Li9wYXJzZV9hbnN3ZXIvaXB2NF9hbmRfc3VibmV0XzMxLmpzb24gICAgICB8IDE5ICsrKysrCiAu Li4vcGFyc2VfYW5zd2VyL2lwdjRfYW5kX3N1Ym5ldF8zMS50b21sICAgICAgfCAxOCArKysrKwog Li4uL2lwdjRfYW5kX3N1Ym5ldF9hZGRyX2lzX25ldHdvcmsuanNvbiAgICAgIHwgIDMgKwogLi4u L2lwdjRfYW5kX3N1Ym5ldF9hZGRyX2lzX25ldHdvcmsudG9tbCAgICAgIHwgMTggKysrKysKIC4u Li9pcHY0X2FuZF9zdWJuZXRfbWFza18zMy5qc29uICAgICAgICAgICAgICB8ICAzICsKIC4uLi9p cHY0X2FuZF9zdWJuZXRfbWFza18zMy50b21sICAgICAgICAgICAgICB8IDE4ICsrKysrCiBwcm94 bW94LWluc3RhbGxlci1jb21tb24vc3JjL3V0aWxzLnJzICAgICAgICAgfCA4MSArKysrKysrKysr KysrKy0tLS0tCiA4IGZpbGVzIGNoYW5nZWQsIDE0MyBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlv bnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwcm94bW94LWF1dG8taW5zdGFsbGVyL3Rlc3RzL3Jl c291cmNlcy9wYXJzZV9hbnN3ZXIvaXB2NF9hbmRfc3VibmV0XzMxLmpzb24KIGNyZWF0ZSBtb2Rl IDEwMDY0NCBwcm94bW94LWF1dG8taW5zdGFsbGVyL3Rlc3RzL3Jlc291cmNlcy9wYXJzZV9hbnN3 ZXIvaXB2NF9hbmRfc3VibmV0XzMxLnRvbWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwcm94bW94LWF1 dG8taW5zdGFsbGVyL3Rlc3RzL3Jlc291cmNlcy9wYXJzZV9hbnN3ZXJfZmFpbC9pcHY0X2FuZF9z dWJuZXRfYWRkcl9pc19uZXR3b3JrLmpzb24KIGNyZWF0ZSBtb2RlIDEwMDY0NCBwcm94bW94LWF1 dG8taW5zdGFsbGVyL3Rlc3RzL3Jlc291cmNlcy9wYXJzZV9hbnN3ZXJfZmFpbC9pcHY0X2FuZF9z dWJuZXRfYWRkcl9pc19uZXR3b3JrLnRvbWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwcm94bW94LWF1 dG8taW5zdGFsbGVyL3Rlc3RzL3Jlc291cmNlcy9wYXJzZV9hbnN3ZXJfZmFpbC9pcHY0X2FuZF9z dWJuZXRfbWFza18zMy5qc29uCiBjcmVhdGUgbW9kZSAxMDA2NDQgcHJveG1veC1hdXRvLWluc3Rh bGxlci90ZXN0cy9yZXNvdXJjZXMvcGFyc2VfYW5zd2VyX2ZhaWwvaXB2NF9hbmRfc3VibmV0X21h c2tfMzMudG9tbAoKZGlmZiAtLWdpdCBhL3Byb3htb3gtYXV0by1pbnN0YWxsZXIvdGVzdHMvcGFy c2UtYW5zd2VyLnJzIGIvcHJveG1veC1hdXRvLWluc3RhbGxlci90ZXN0cy9wYXJzZS1hbnN3ZXIu cnMKaW5kZXggZjU2MDQ4My4uNmY2MjdhMCAxMDA2NDQKLS0tIGEvcHJveG1veC1hdXRvLWluc3Rh bGxlci90ZXN0cy9wYXJzZS1hbnN3ZXIucnMKKysrIGIvcHJveG1veC1hdXRvLWluc3RhbGxlci90 ZXN0cy9wYXJzZS1hbnN3ZXIucnMKQEAgLTEyNyw2ICsxMjcsNyBAQCBtb2QgdGVzdHMgewogICAg ICAgICAgICAgZnFkbl9mcm9tX2RoY3Bfbm9fZGhjcF9kb21haW5fd2l0aF9kZWZhdWx0X2RvbWFp biwKICAgICAgICAgICAgIGZ1bGxfZnFkbl9mcm9tX2RoY3Bfd2l0aF9kZWZhdWx0X2RvbWFpbiwK ICAgICAgICAgICAgIGhhc2hlZF9yb290X3Bhc3N3b3JkLAorICAgICAgICAgICAgaXB2NF9hbmRf c3VibmV0XzMxLAogICAgICAgICAgICAgbWluaW1hbCwKICAgICAgICAgICAgIG5pY19tYXRjaGlu ZywKICAgICAgICAgICAgIHNwZWNpZmljX25pYywKQEAgLTE0Niw2ICsxNDcsOCBAQCBtb2QgdGVz dHMgewogICAgICAgICAgICAgZHVwbGljYXRlX2Rpc2ssCiAgICAgICAgICAgICBmcWRuX2Zyb21f ZGhjcF9ub19kZWZhdWx0X2RvbWFpbiwKICAgICAgICAgICAgIGZxZG5faG9zdG5hbWVfb25seSwK KyAgICAgICAgICAgIGlwdjRfYW5kX3N1Ym5ldF9hZGRyX2lzX25ldHdvcmssCisgICAgICAgICAg ICBpcHY0X2FuZF9zdWJuZXRfbWFza18zMywKICAgICAgICAgICAgIGx2bV9tYXhyb290X2dyZWF0 ZXJfdGhhbl9tYXhpbXVtLAogICAgICAgICAgICAgbHZtX3N3YXBzaXplX2dyZWF0ZXJfdGhhbl9o ZHNpemUsCiAgICAgICAgICAgICBub19mcWRuX2Zyb21fZGhjcCwKZGlmZiAtLWdpdCBhL3Byb3ht b3gtYXV0by1pbnN0YWxsZXIvdGVzdHMvcmVzb3VyY2VzL3BhcnNlX2Fuc3dlci9pcHY0X2FuZF9z dWJuZXRfMzEuanNvbiBiL3Byb3htb3gtYXV0by1pbnN0YWxsZXIvdGVzdHMvcmVzb3VyY2VzL3Bh cnNlX2Fuc3dlci9pcHY0X2FuZF9zdWJuZXRfMzEuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi4yYTQ3NWZlCi0tLSAvZGV2L251bGwKKysrIGIvcHJveG1veC1hdXRvLWlu c3RhbGxlci90ZXN0cy9yZXNvdXJjZXMvcGFyc2VfYW5zd2VyL2lwdjRfYW5kX3N1Ym5ldF8zMS5q c29uCkBAIC0wLDAgKzEsMTkgQEAKK3sKKyAgImF1dG9yZWJvb3QiOiAxLAorICAiY2lkciI6ICIx MC4xMC4xMC4xMC8zMSIsCisgICJjb3VudHJ5IjogImF0IiwKKyAgImRucyI6ICIxMC4xMC4xMC4x IiwKKyAgImRvbWFpbiI6ICJ0ZXN0aW5zdGFsbCIsCisgICJmaWxlc3lzIjogImV4dDQiLAorICAi Z2F0ZXdheSI6ICIxMC4xMC4xMC4xIiwKKyAgImhkc2l6ZSI6IDIyMy41NzA4ODQ3MDQ1ODk4NCwK KyAgImV4aXN0aW5nX3N0b3JhZ2VfYXV0b19yZW5hbWUiOiAxLAorICAiaG9zdG5hbWUiOiAicHZl YXV0byIsCisgICJrZXltYXAiOiAiZGUiLAorICAibWFpbHRvIjogIm1haWxAbm8uaW52YWxpZCIs CisgICJtbmdtdF9uaWMiOiAiZW5wMTI5czBmMW5wMSIsCisgICJyb290X3Bhc3N3b3JkIjogeyAi cGxhaW4iOiAiMTIzNDU2NzgiIH0sCisgICJ0YXJnZXRfaGQiOiAiL2Rldi9zZGEiLAorICAidGlt ZXpvbmUiOiAiRXVyb3BlL1ZpZW5uYSIsCisgICJmaXJzdF9ib290IjogeyAiZW5hYmxlZCI6IDAg fQorfQpkaWZmIC0tZ2l0IGEvcHJveG1veC1hdXRvLWluc3RhbGxlci90ZXN0cy9yZXNvdXJjZXMv cGFyc2VfYW5zd2VyL2lwdjRfYW5kX3N1Ym5ldF8zMS50b21sIGIvcHJveG1veC1hdXRvLWluc3Rh bGxlci90ZXN0cy9yZXNvdXJjZXMvcGFyc2VfYW5zd2VyL2lwdjRfYW5kX3N1Ym5ldF8zMS50b21s Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjYTZjYTUKLS0tIC9kZXYvbnVs bAorKysgYi9wcm94bW94LWF1dG8taW5zdGFsbGVyL3Rlc3RzL3Jlc291cmNlcy9wYXJzZV9hbnN3 ZXIvaXB2NF9hbmRfc3VibmV0XzMxLnRvbWwKQEAgLTAsMCArMSwxOCBAQAorW2dsb2JhbF0KK2tl eWJvYXJkID0gImRlIgorY291bnRyeSA9ICJhdCIKK2ZxZG4gPSAicHZlYXV0by50ZXN0aW5zdGFs bCIKK21haWx0byA9ICJtYWlsQG5vLmludmFsaWQiCit0aW1lem9uZSA9ICJFdXJvcGUvVmllbm5h Igorcm9vdF9wYXNzd29yZCA9ICIxMjM0NTY3OCIKKworW25ldHdvcmtdCitzb3VyY2UgPSAiZnJv bS1hbnN3ZXIiCitjaWRyID0gIjEwLjEwLjEwLjEwLzMxIgorZG5zID0gIjEwLjEwLjEwLjEiCitn YXRld2F5ID0gIjEwLjEwLjEwLjEiCitmaWx0ZXIuSURfTkVUX05BTUUgPSAiZW5wMTI5czBmMW5w MSIKKworW2Rpc2stc2V0dXBdCitmaWxlc3lzdGVtID0gImV4dDQiCitkaXNrX2xpc3QgPSBbInNk YSJdCmRpZmYgLS1naXQgYS9wcm94bW94LWF1dG8taW5zdGFsbGVyL3Rlc3RzL3Jlc291cmNlcy9w YXJzZV9hbnN3ZXJfZmFpbC9pcHY0X2FuZF9zdWJuZXRfYWRkcl9pc19uZXR3b3JrLmpzb24gYi9w cm94bW94LWF1dG8taW5zdGFsbGVyL3Rlc3RzL3Jlc291cmNlcy9wYXJzZV9hbnN3ZXJfZmFpbC9p cHY0X2FuZF9zdWJuZXRfYWRkcl9pc19uZXR3b3JrLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uYjI4Njk5ZAotLS0gL2Rldi9udWxsCisrKyBiL3Byb3htb3gtYXV0by1p bnN0YWxsZXIvdGVzdHMvcmVzb3VyY2VzL3BhcnNlX2Fuc3dlcl9mYWlsL2lwdjRfYW5kX3N1Ym5l dF9hZGRyX2lzX25ldHdvcmsuanNvbgpAQCAtMCwwICsxLDMgQEAKK3sKKyAgInBhcnNlLWVycm9y IjogImVycm9yIHBhcnNpbmcgYW5zd2VyLnRvbWw6IEludmFsaWQgQ0lEUjogYWRkcmVzcyBpcyBh IG5ldHdvcmsgYWRkcmVzcyIKK30KZGlmZiAtLWdpdCBhL3Byb3htb3gtYXV0by1pbnN0YWxsZXIv dGVzdHMvcmVzb3VyY2VzL3BhcnNlX2Fuc3dlcl9mYWlsL2lwdjRfYW5kX3N1Ym5ldF9hZGRyX2lz X25ldHdvcmsudG9tbCBiL3Byb3htb3gtYXV0by1pbnN0YWxsZXIvdGVzdHMvcmVzb3VyY2VzL3Bh cnNlX2Fuc3dlcl9mYWlsL2lwdjRfYW5kX3N1Ym5ldF9hZGRyX2lzX25ldHdvcmsudG9tbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTkxNDFiCi0tLSAvZGV2L251bGwKKysr IGIvcHJveG1veC1hdXRvLWluc3RhbGxlci90ZXN0cy9yZXNvdXJjZXMvcGFyc2VfYW5zd2VyX2Zh aWwvaXB2NF9hbmRfc3VibmV0X2FkZHJfaXNfbmV0d29yay50b21sCkBAIC0wLDAgKzEsMTggQEAK K1tnbG9iYWxdCitrZXlib2FyZCA9ICJkZSIKK2NvdW50cnkgPSAiYXQiCitmcWRuID0gInB2ZWF1 dG8udGVzdGluc3RhbGwiCittYWlsdG8gPSAibWFpbEBuby5pbnZhbGlkIgordGltZXpvbmUgPSAi RXVyb3BlL1ZpZW5uYSIKK3Jvb3RfcGFzc3dvcmQgPSAiMTIzNDU2NzgiCisKK1tuZXR3b3JrXQor c291cmNlID0gImZyb20tYW5zd2VyIgorY2lkciA9ICIxMC4xMC4xMC4zMi8yNyIKK2RucyA9ICIx MC4xMC4xMC4xIgorZ2F0ZXdheSA9ICIxMC4xMC4xMC4xIgorZmlsdGVyLklEX05FVF9OQU1FID0g ImVucDEyOXMwZjFucDEiCisKK1tkaXNrLXNldHVwXQorZmlsZXN5c3RlbSA9ICJleHQ0IgorZGlz a19saXN0ID0gWyJzZGEiXQpkaWZmIC0tZ2l0IGEvcHJveG1veC1hdXRvLWluc3RhbGxlci90ZXN0 cy9yZXNvdXJjZXMvcGFyc2VfYW5zd2VyX2ZhaWwvaXB2NF9hbmRfc3VibmV0X21hc2tfMzMuanNv biBiL3Byb3htb3gtYXV0by1pbnN0YWxsZXIvdGVzdHMvcmVzb3VyY2VzL3BhcnNlX2Fuc3dlcl9m YWlsL2lwdjRfYW5kX3N1Ym5ldF9tYXNrXzMzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uNmIyODg4YgotLS0gL2Rldi9udWxsCisrKyBiL3Byb3htb3gtYXV0by1pbnN0 YWxsZXIvdGVzdHMvcmVzb3VyY2VzL3BhcnNlX2Fuc3dlcl9mYWlsL2lwdjRfYW5kX3N1Ym5ldF9t YXNrXzMzLmpzb24KQEAgLTAsMCArMSwzIEBACit7CisgICAgInBhcnNlLWVycm9yIjogImVycm9y IHBhcnNpbmcgYW5zd2VyLnRvbWw6IEludmFsaWQgQ0lEUjogbWFzayBjYW5ub3QgYmUgZ3JlYXRl ciB0aGFuIDMyIgorfQpkaWZmIC0tZ2l0IGEvcHJveG1veC1hdXRvLWluc3RhbGxlci90ZXN0cy9y ZXNvdXJjZXMvcGFyc2VfYW5zd2VyX2ZhaWwvaXB2NF9hbmRfc3VibmV0X21hc2tfMzMudG9tbCBi L3Byb3htb3gtYXV0by1pbnN0YWxsZXIvdGVzdHMvcmVzb3VyY2VzL3BhcnNlX2Fuc3dlcl9mYWls L2lwdjRfYW5kX3N1Ym5ldF9tYXNrXzMzLnRvbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uMTZhNTYwZgotLS0gL2Rldi9udWxsCisrKyBiL3Byb3htb3gtYXV0by1pbnN0YWxs ZXIvdGVzdHMvcmVzb3VyY2VzL3BhcnNlX2Fuc3dlcl9mYWlsL2lwdjRfYW5kX3N1Ym5ldF9tYXNr XzMzLnRvbWwKQEAgLTAsMCArMSwxOCBAQAorW2dsb2JhbF0KK2tleWJvYXJkID0gImRlIgorY291 bnRyeSA9ICJhdCIKK2ZxZG4gPSAicHZlYXV0by50ZXN0aW5zdGFsbCIKK21haWx0byA9ICJtYWls QG5vLmludmFsaWQiCit0aW1lem9uZSA9ICJFdXJvcGUvVmllbm5hIgorcm9vdF9wYXNzd29yZCA9 ICIxMjM0NTY3OCIKKworW25ldHdvcmtdCitzb3VyY2UgPSAiZnJvbS1hbnN3ZXIiCitjaWRyID0g IjEwLjEwLjEwLjEwLzMzIgorZG5zID0gIjEwLjEwLjEwLjEiCitnYXRld2F5ID0gIjEwLjEwLjEw LjEiCitmaWx0ZXIuSURfTkVUX05BTUUgPSAiZW5wMTI5czBmMW5wMSIKKworW2Rpc2stc2V0dXBd CitmaWxlc3lzdGVtID0gImV4dDQiCitkaXNrX2xpc3QgPSBbInNkYSJdCmRpZmYgLS1naXQgYS9w cm94bW94LWluc3RhbGxlci1jb21tb24vc3JjL3V0aWxzLnJzIGIvcHJveG1veC1pbnN0YWxsZXIt Y29tbW9uL3NyYy91dGlscy5ycwppbmRleCAxZmU2YTc0Li5mZWE5OGRiIDEwMDY0NAotLS0gYS9w cm94bW94LWluc3RhbGxlci1jb21tb24vc3JjL3V0aWxzLnJzCisrKyBiL3Byb3htb3gtaW5zdGFs bGVyLWNvbW1vbi9zcmMvdXRpbHMucnMKQEAgLTEsNyArMSw3IEBACiB1c2Ugc3RkOjp7CisgICAg ZXJyb3I6OkVycm9yLAogICAgIGZtdCwKICAgICBuZXQ6OntBZGRyUGFyc2VFcnJvciwgSXBBZGRy fSwKLSAgICBudW06OlBhcnNlSW50RXJyb3IsCiAgICAgc3RyOjpGcm9tU3RyLAogfTsKIApAQCAt MTUsMjAgKzE1LDI2IEBAIHB1YiBlbnVtIENpZHJBZGRyZXNzUGFyc2VFcnJvciB7CiAgICAgLy8v IFRoZSBJUCBhZGRyZXNzIHBhcnQgY291bGQgbm90IGJlIHBhcnNlZC4KICAgICBJbnZhbGlkQWRk cihBZGRyUGFyc2VFcnJvciksCiAgICAgLy8vIFRoZSBtYXNrIGNvdWxkIG5vdCBiZSBwYXJzZWQu Ci0gICAgSW52YWxpZE1hc2soT3B0aW9uPFBhcnNlSW50RXJyb3I+KSwKKyAgICBJbnZhbGlkTWFz ayhCb3g8ZHluIEVycm9yPiksCisgICAgLy8vIFRoZSBJUCBhZGRyZXNzIGlzIGEgbmV0d29yayBh ZGRyZXNzLgorICAgIElzTmV0d29ya0FkZHIsCisgICAgLy8vIFRoZSBJUCBhZGRyZXNzIGlzIGEg YnJvYWRjYXN0IGFkZHJlc3MuCisgICAgSXNCcm9hZGNhc3RBZGRyLAogfQogCiBpbXBsIGZtdDo6 RGlzcGxheSBmb3IgQ2lkckFkZHJlc3NQYXJzZUVycm9yIHsKICAgICBmbiBmbXQoJnNlbGYsIGY6 ICZtdXQgZm10OjpGb3JtYXR0ZXI8J18+KSAtPiBmbXQ6OlJlc3VsdCB7Ci0gICAgICAgIGxldCBt c2cgPSBtYXRjaCAmc2VsZiB7CisgICAgICAgIHdyaXRlIShmLCAiSW52YWxpZCBDSURSOiAiKT87 CisKKyAgICAgICAgbWF0Y2ggc2VsZiB7CiAgICAgICAgICAgICBDaWRyQWRkcmVzc1BhcnNlRXJy b3I6Ok5vRGVsaW1pdGVyID0+IHsKLSAgICAgICAgICAgICAgICBTdHJpbmc6OmZyb20oIk5vIGRl bGltaXRlciBmb3Igc2VwYXJhdGluZyBhZGRyZXNzIGFuZCBtYXNrIHdhcyBmb3VuZCIpCisgICAg ICAgICAgICAgICAgd3JpdGUhKGYsICJubyBkZWxpbWl0ZXIgZm9yIHNlcGFyYXRpbmcgYWRkcmVz cyBhbmQgbWFzayB3YXMgZm91bmQiKQogICAgICAgICAgICAgfQotICAgICAgICAgICAgQ2lkckFk ZHJlc3NQYXJzZUVycm9yOjpJbnZhbGlkQWRkcihhZGRyX3BhcnNlX2Vycm9yKSA9PiBmb3JtYXQh KCJ7YWRkcl9wYXJzZV9lcnJvcn0iKSwKLSAgICAgICAgICAgIENpZHJBZGRyZXNzUGFyc2VFcnJv cjo6SW52YWxpZE1hc2socGFyc2VfaW50X2Vycm9yKSA9PiBmb3JtYXQhKCJ7Oj99IiwgcGFyc2Vf aW50X2Vycm9yKSwKLSAgICAgICAgfTsKLQotICAgICAgICB3cml0ZSEoZiwgIkludmFsaWQgQ0lE Ujoge21zZ30iKQorICAgICAgICAgICAgQ2lkckFkZHJlc3NQYXJzZUVycm9yOjpJbnZhbGlkQWRk cihlcnIpID0+IHdyaXRlIShmLCAie2Vycn0iKSwKKyAgICAgICAgICAgIENpZHJBZGRyZXNzUGFy c2VFcnJvcjo6SW52YWxpZE1hc2soZXJyKSA9PiB3cml0ZSEoZiwgIntlcnJ9IiksCisgICAgICAg ICAgICBDaWRyQWRkcmVzc1BhcnNlRXJyb3I6OklzTmV0d29ya0FkZHIgPT4gd3JpdGUhKGYsICJh ZGRyZXNzIGlzIGEgbmV0d29yayBhZGRyZXNzIiksCisgICAgICAgICAgICBDaWRyQWRkcmVzc1Bh cnNlRXJyb3I6OklzQnJvYWRjYXN0QWRkciA9PiB3cml0ZSEoZiwgImFkZHJlc3MgaXMgYSBicm9h ZGNhc3QgYWRkcmVzcyIpLAorICAgICAgICB9CiAgICAgfQogfQogCkBAIC02MSwxMSArNjcsMTAg QEAgaW1wbCBDaWRyQWRkcmVzcyB7CiAgICAgcHViIGZuIG5ldzxUOiBJbnRvPElwQWRkcj4+KGFk ZHI6IFQsIG1hc2s6IHVzaXplKSAtPiBSZXN1bHQ8U2VsZiwgQ2lkckFkZHJlc3NQYXJzZUVycm9y PiB7CiAgICAgICAgIGxldCBhZGRyID0gYWRkci5pbnRvKCk7CiAKLSAgICAgICAgaWYgbWFzayA+ IG1hc2tfbGltaXQoJmFkZHIpIHsKLSAgICAgICAgICAgIEVycihDaWRyQWRkcmVzc1BhcnNlRXJy b3I6OkludmFsaWRNYXNrKE5vbmUpKQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgT2so U2VsZiB7IGFkZHIsIG1hc2sgfSkKLSAgICAgICAgfQorICAgICAgICBjaGVja19tYXNrX2xpbWl0 KCZhZGRyLCBtYXNrKT87CisgICAgICAgIGNoZWNrX2FkZHJfdmFsaWRfaW5fc3VibmV0KCZhZGRy LCBtYXNrKT87CisKKyAgICAgICAgT2soU2VsZiB7IGFkZHIsIG1hc2sgfSkKICAgICB9CiAKICAg ICAvLy8gUmV0dXJucyBvbmx5IHRoZSBJUCBhZGRyZXNzIHBhcnQgb2YgdGhlIGFkZHJlc3MuCkBA IC0xMDEsMTMgKzEwNiwxMiBAQCBpbXBsIEZyb21TdHIgZm9yIENpZHJBZGRyZXNzIHsKIAogICAg ICAgICBsZXQgbWFzayA9IG1hc2sKICAgICAgICAgICAgIC5wYXJzZSgpCi0gICAgICAgICAgICAu bWFwX2Vycih8ZXJyfCBDaWRyQWRkcmVzc1BhcnNlRXJyb3I6OkludmFsaWRNYXNrKFNvbWUoZXJy KSkpPzsKKyAgICAgICAgICAgIC5tYXBfZXJyKHxlcnJ8IENpZHJBZGRyZXNzUGFyc2VFcnJvcjo6 SW52YWxpZE1hc2soQm94OjpuZXcoZXJyKSkpPzsKIAotICAgICAgICBpZiBtYXNrID4gbWFza19s aW1pdCgmYWRkcikgewotICAgICAgICAgICAgRXJyKENpZHJBZGRyZXNzUGFyc2VFcnJvcjo6SW52 YWxpZE1hc2soTm9uZSkpCi0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBPayhTZWxmIHsg YWRkciwgbWFzayB9KQotICAgICAgICB9CisgICAgICAgIGNoZWNrX21hc2tfbGltaXQoJmFkZHIs IG1hc2spPzsKKyAgICAgICAgY2hlY2tfYWRkcl92YWxpZF9pbl9zdWJuZXQoJmFkZHIsIG1hc2sp PzsKKworICAgICAgICBPayhTZWxmIHsgYWRkciwgbWFzayB9KQogICAgIH0KIH0KIApAQCAtMTMz LDYgKzEzNyw0MyBAQCBmbiBtYXNrX2xpbWl0KGFkZHI6ICZJcEFkZHIpIC0+IHVzaXplIHsKICAg ICBpZiBhZGRyLmlzX2lwdjQoKSB7IDMyIH0gZWxzZSB7IDEyOCB9CiB9CiAKK2ZuIGNoZWNrX21h c2tfbGltaXQoYWRkcjogJklwQWRkciwgbWFzazogdXNpemUpIC0+IFJlc3VsdDwoKSwgQ2lkckFk ZHJlc3NQYXJzZUVycm9yPiB7CisgICAgcmV0dXJuIGlmIG1hc2sgPiBtYXNrX2xpbWl0KCZhZGRy KSB7CisgICAgICAgIEVycihDaWRyQWRkcmVzc1BhcnNlRXJyb3I6OkludmFsaWRNYXNrKAorICAg ICAgICAgICAgIm1hc2sgY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiAzMiIuaW50bygpLAorICAgICAg ICApKQorICAgIH0gZWxzZSB7CisgICAgICAgIE9rKCgpKQorICAgIH07Cit9CisKK2ZuIGNoZWNr X2FkZHJfdmFsaWRfaW5fc3VibmV0KGFkZHI6ICZJcEFkZHIsIG1hc2s6IHVzaXplKSAtPiBSZXN1 bHQ8KCksIENpZHJBZGRyZXNzUGFyc2VFcnJvcj4geworICAgIG1hdGNoICZhZGRyIHsKKyAgICAg ICAgSXBBZGRyOjpWNChhZGRyX3Y0KSA9PiB7CisgICAgICAgICAgICBpZiBtYXNrID49IDMxIHsK KyAgICAgICAgICAgICAgICByZXR1cm4gT2soKCkpOworICAgICAgICAgICAgfQorCisgICAgICAg ICAgICBsZXQgbnVtX2hvc3RfYml0cyA9IDMyIC0gbWFzazsKKyAgICAgICAgICAgIGxldCBob3N0 X3BhcnRfbWFzayA9ICgxdTMyIDw8IG51bV9ob3N0X2JpdHMpIC0gMTsKKworICAgICAgICAgICAg bGV0IGlwX2JpdHMgPSB1MzI6OmZyb21fYmVfYnl0ZXMoYWRkcl92NC5vY3RldHMoKSk7CisKKyAg ICAgICAgICAgIGxldCBuZXR3b3JrX2FkZHIgPSBpcF9iaXRzICYgIWhvc3RfcGFydF9tYXNrOwor ICAgICAgICAgICAgbGV0IGJyb2FkY2FzdF9hZGRyID0gbmV0d29ya19hZGRyIHwgaG9zdF9wYXJ0 X21hc2s7CisKKyAgICAgICAgICAgIGlmIGlwX2JpdHMgPT0gbmV0d29ya19hZGRyIHsKKyAgICAg ICAgICAgICAgICBFcnIoQ2lkckFkZHJlc3NQYXJzZUVycm9yOjpJc05ldHdvcmtBZGRyKQorICAg ICAgICAgICAgfSBlbHNlIGlmIGlwX2JpdHMgPT0gYnJvYWRjYXN0X2FkZHIgeworICAgICAgICAg ICAgICAgIEVycihDaWRyQWRkcmVzc1BhcnNlRXJyb3I6OklzQnJvYWRjYXN0QWRkcikKKyAgICAg ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgT2soKCkpCisgICAgICAgICAgICB9Cisg ICAgICAgIH0KKyAgICAgICAgSXBBZGRyOjpWNihfKSA9PiBPaygoKSksCisgICAgfQorfQorCiAv Ly8gUG9zc2libGUgZXJyb3JzIHRoYXQgbWlnaHQgb2NjdXIgd2hlbiBwYXJzaW5nIEZRRE5zLgog I1tkZXJpdmUoRGVidWcsIEVxLCBQYXJ0aWFsRXEpXQogcHViIGVudW0gRnFkblBhcnNlRXJyb3Ig ewotLSAKMi4zOS41CgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCnB2ZS1kZXZlbCBtYWlsaW5nIGxpc3QKcHZlLWRldmVsQGxpc3RzLnByb3htb3guY29t Cmh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3B2ZS1k ZXZlbAo=