From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id ED8C51FF15F for ; Mon, 18 Nov 2024 18:43:44 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 3E2EF16916; Mon, 18 Nov 2024 18:43:48 +0100 (CET) From: Stefan Hanreich To: pve-devel@lists.proxmox.com Date: Mon, 18 Nov 2024 18:43:34 +0100 Message-Id: <20241118174343.268165-2-s.hanreich@proxmox.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20241118174343.268165-1-s.hanreich@proxmox.com> References: <20241118174343.268165-1-s.hanreich@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.242 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 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_RPBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. 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 v5 01/10] sdn: add vnet firewall configuration 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 Cc: Wolfgang Bumiller Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" U2lnbmVkLW9mZi1ieTogU3RlZmFuIEhhbnJlaWNoIDxzLmhhbnJlaWNoQHByb3htb3guY29tPgpS ZXZpZXdlZC1ieTogV29sZmdhbmcgQnVtaWxsZXIgPHcuYnVtaWxsZXJAcHJveG1veC5jb20+ClRl c3RlZC1ieTogSGFubmVzIETDvHJyIDxoLmR1ZXJyQHByb3htb3guY29tPgotLS0KIHNyYy9QVkUv RmlyZXdhbGwucG0gICAgICAgICB8IDEyNyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLS0KIHNyYy9QVkUvRmlyZXdhbGwvSGVscGVycy5wbSB8ICAxMiArKysrCiAyIGZpbGVzIGNo YW5nZWQsIDEzMiBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9QVkUvRmlyZXdhbGwucG0gYi9zcmMvUFZFL0ZpcmV3YWxsLnBtCmluZGV4IDhjZmU1NWQuLjVm MTdmZmEgMTAwNjQ0Ci0tLSBhL3NyYy9QVkUvRmlyZXdhbGwucG0KKysrIGIvc3JjL1BWRS9GaXJl d2FsbC5wbQpAQCAtMzAsNiArMzAsNyBAQCB1c2UgUFZFOjpSUzo6RmlyZXdhbGw6OlNETjsKIAog bXkgJHB2ZWZ3X2NvbmZfZGlyID0gIi9ldGMvcHZlL2ZpcmV3YWxsIjsKIG15ICRjbHVzdGVyZndf Y29uZl9maWxlbmFtZSA9ICIkcHZlZndfY29uZl9kaXIvY2x1c3Rlci5mdyI7CitteSAkdm5ldGZ3 X2NvbmZfZGlyID0gIi9ldGMvcHZlL3Nkbi9maXJld2FsbCI7CiAKICMgZHluYW1pY2FsbHkgaW5j bHVkZSBQVkU6OlFlbXVTZXJ2ZXIgYW5kIFBWRTo6TFhDCiAjIHRvIGF2b2lkIGRlcGVuZGVuY3kg cHJvYmxlbXMKQEAgLTEyOTEsNiArMTI5MiwxMiBAQCBvdXIgJGNsdXN0ZXJfb3B0aW9uX3Byb3Bl cnRpZXMgPSB7CiAJb3B0aW9uYWwgPT4gMSwKIAllbnVtID0+IFsnQUNDRVBUJywgJ1JFSkVDVCcs ICdEUk9QJ10sCiAgICAgfSwKKyAgICBwb2xpY3lfZm9yd2FyZCA9PiB7CisJZGVzY3JpcHRpb24g PT4gIkZvcndhcmQgcG9saWN5LiIsCisJdHlwZSA9PiAnc3RyaW5nJywKKwlvcHRpb25hbCA9PiAx LAorCWVudW0gPT4gWydBQ0NFUFQnLCAnRFJPUCddLAorICAgIH0sCiAgICAgbG9nX3JhdGVsaW1p dCA9PiB7CiAJZGVzY3JpcHRpb24gPT4gIkxvZyByYXRlbGltaXRpbmcgc2V0dGluZ3MiLAogCXR5 cGUgPT4gJ3N0cmluZycsIGZvcm1hdCA9PiB7CkBAIC0xMzMwLDYgKzEzMzcsOCBAQCBvdXIgJGhv c3Rfb3B0aW9uX3Byb3BlcnRpZXMgPSB7CiAJZGVzY3JpcHRpb24gPT4gIkxvZyBsZXZlbCBmb3Ig aW5jb21pbmcgdHJhZmZpYy4iIH0pLAogICAgIGxvZ19sZXZlbF9vdXQgPT4gIGdldF9zdGFuZGFy ZF9vcHRpb24oJ3B2ZS1mdy1sb2dsZXZlbCcsIHsKIAlkZXNjcmlwdGlvbiA9PiAiTG9nIGxldmVs IGZvciBvdXRnb2luZyB0cmFmZmljLiIgfSksCisgICAgbG9nX2xldmVsX2ZvcndhcmQgPT4gIGdl dF9zdGFuZGFyZF9vcHRpb24oJ3B2ZS1mdy1sb2dsZXZlbCcsIHsKKwlkZXNjcmlwdGlvbiA9PiAi TG9nIGxldmVsIGZvciBmb3J3YXJkZWQgdHJhZmZpYy4iIH0pLAogICAgIHRjcF9mbGFnc19sb2df bGV2ZWwgPT4gIGdldF9zdGFuZGFyZF9vcHRpb24oJ3B2ZS1mdy1sb2dsZXZlbCcsIHsKIAlkZXNj cmlwdGlvbiA9PiAiTG9nIGxldmVsIGZvciBpbGxlZ2FsIHRjcCBmbGFncyBmaWx0ZXIuIiB9KSwK ICAgICBzbXVyZl9sb2dfbGV2ZWwgPT4gIGdldF9zdGFuZGFyZF9vcHRpb24oJ3B2ZS1mdy1sb2ds ZXZlbCcsIHsKQEAgLTE0NzcsNiArMTQ4NiwyMyBAQCBvdXIgJHZtX29wdGlvbl9wcm9wZXJ0aWVz ID0gewogCiB9OwogCitvdXIgJHZuZXRfb3B0aW9uX3Byb3BlcnRpZXMgPSB7CisgICAgZW5hYmxl ID0+IHsKKwlkZXNjcmlwdGlvbiA9PiAiRW5hYmxlL2Rpc2FibGUgZmlyZXdhbGwgcnVsZXMuIiwK Kwl0eXBlID0+ICdib29sZWFuJywKKwlkZWZhdWx0ID0+IDAsCisJb3B0aW9uYWwgPT4gMSwKKyAg ICB9LAorICAgIHBvbGljeV9mb3J3YXJkID0+IHsKKwlkZXNjcmlwdGlvbiA9PiAiRm9yd2FyZCBw b2xpY3kuIiwKKwl0eXBlID0+ICdzdHJpbmcnLAorCW9wdGlvbmFsID0+IDEsCisJZW51bSA9PiBb J0FDQ0VQVCcsICdEUk9QJ10sCisgICAgfSwKKyAgICBsb2dfbGV2ZWxfZm9yd2FyZCA9PiAgZ2V0 X3N0YW5kYXJkX29wdGlvbigncHZlLWZ3LWxvZ2xldmVsJywgeworCWRlc2NyaXB0aW9uID0+ICJM b2cgbGV2ZWwgZm9yIGZvcndhcmRlZCB0cmFmZmljLiIgfSksCit9OworCiAKIG15ICRhZGRyX2xp c3RfZGVzY3IgPSAiVGhpcyBjYW4gcmVmZXIgdG8gYSBzaW5nbGUgSVAgYWRkcmVzcywgYW4gSVAg c2V0ICgnK2lwc2V0bmFtZScpIG9yIGFuIElQIGFsaWFzIGRlZmluaXRpb24uIFlvdSBjYW4gYWxz byBzcGVjaWZ5IGFuIGFkZHJlc3MgcmFuZ2UgbGlrZSAnMjAuMzQuMTAxLjIwNy0yMDEuMy45Ljk5 Jywgb3IgYSBsaXN0IG9mIElQIGFkZHJlc3NlcyBhbmQgbmV0d29ya3MgKGVudHJpZXMgYXJlIHNl cGFyYXRlZCBieSBjb21tYSkuIFBsZWFzZSBkbyBub3QgbWl4IElQdjQgYW5kIElQdjYgYWRkcmVz c2VzIGluc2lkZSBzdWNoIGxpc3RzLiI7CiAKQEAgLTE0OTQsNyArMTUyMCw3IEBAIG15ICRydWxl X3Byb3BlcnRpZXMgPSB7CiAJZGVzY3JpcHRpb24gPT4gIlJ1bGUgdHlwZS4iLAogCXR5cGUgPT4g J3N0cmluZycsCiAJb3B0aW9uYWwgPT4gMSwKLQllbnVtID0+IFsnaW4nLCAnb3V0JywgJ2dyb3Vw J10sCisJZW51bSA9PiBbJ2luJywgJ291dCcsICdmb3J3YXJkJywgJ2dyb3VwJ10sCiAgICAgfSwK ICAgICBhY3Rpb24gPT4gewogCWRlc2NyaXB0aW9uID0+ICJSdWxlIGFjdGlvbiAoJ0FDQ0VQVCcs ICdEUk9QJywgJ1JFSkVDVCcpIG9yIHNlY3VyaXR5IGdyb3VwIG5hbWUuIiwKQEAgLTE2NTIsMTAg KzE2NzgsMjAgQEAgbXkgJHJ1bGVfZW52X2lmYWNlX2xvb2t1cCA9IHsKICAgICAnY3QnID0+IDEs CiAgICAgJ3ZtJyA9PiAxLAogICAgICdncm91cCcgPT4gMCwKKyAgICAndm5ldCcgPT4gMCwKICAg ICAnY2x1c3RlcicgPT4gMSwKICAgICAnaG9zdCcgPT4gMSwKIH07CiAKK215ICRydWxlX2Vudl9k aXJlY3Rpb25fbG9va3VwID0geworICAgICdjdCcgPT4gWydpbicsICdvdXQnLCAnZ3JvdXAnXSwK KyAgICAndm0nID0+IFsnaW4nLCAnb3V0JywgJ2dyb3VwJ10sCisgICAgJ2dyb3VwJyA9PiBbJ2lu JywgJ291dCcsICdmb3J3YXJkJ10sCisgICAgJ2NsdXN0ZXInID0+IFsnaW4nLCAnb3V0JywgJ2Zv cndhcmQnLCAnZ3JvdXAnXSwKKyAgICAnaG9zdCcgPT4gWydpbicsICdvdXQnLCAnZm9yd2FyZCcs ICdncm91cCddLAorICAgICd2bmV0JyA9PiBbJ2ZvcndhcmQnLCAnZ3JvdXAnXSwKK307CisKIHN1 YiB2ZXJpZnlfcnVsZSB7CiAgICAgbXkgKCRydWxlLCAkY2x1c3Rlcl9jb25mLCAkZndfY29uZiwg JHJ1bGVfZW52LCAkbm9lcnIpID0gQF87CiAKQEAgLTE3MjksOCArMTc2NSwxNyBAQCBzdWIgdmVy aWZ5X3J1bGUgewogICAgICYkYWRkX2Vycm9yKCdhY3Rpb24nLCAibWlzc2luZyBwcm9wZXJ0eSIp IGlmICEkYWN0aW9uOwogCiAgICAgaWYgKCR0eXBlKSB7Ci0JaWYgKCR0eXBlIGVxICAnaW4nIHx8 ICR0eXBlIGVxICdvdXQnKSB7Ci0JICAgICYkYWRkX2Vycm9yKCdhY3Rpb24nLCAidW5rbm93biBh Y3Rpb24gJyRhY3Rpb24nIikKKwlteSAkdmFsaWRfdHlwZXMgPSAkcnVsZV9lbnZfZGlyZWN0aW9u X2xvb2t1cC0+eyRydWxlX2Vudn0KKwkgICAgb3IgZGllICJ1bmtub3duIHJ1bGVfZW52ICckcnVs ZV9lbnYnXG4iOworCisJJGFkZF9lcnJvci0+KCd0eXBlJywgImludmFsaWQgcnVsZSB0eXBlICck dHlwZScgZm9yIHJ1bGVfZW52ICckcnVsZV9lbnYnIikKKwkgICAgaWYgIShncmVwIHsgJF8gZXEg JHR5cGUgfSBAJHZhbGlkX3R5cGVzKTsKKworCWlmICgkdHlwZSBlcSAgJ2luJyB8fCAkdHlwZSBl cSAnb3V0JyB8fCAkdHlwZSBlcSAnZm9yd2FyZCcpIHsKKwkgICAgJGFkZF9lcnJvci0+KCdhY3Rp b24nLCAnY2Fubm90IGRlZmluZSBSRUpFQ1QgcnVsZXMgb24gZm9yd2FyZCBjaGFpbicpCisJCWlm ICR0eXBlIGVxICdmb3J3YXJkJyAmJiAkYWN0aW9uIGVxICdSRUpFQ1QnOworCisJICAgICRhZGRf ZXJyb3ItPignYWN0aW9uJywgInVua25vd24gYWN0aW9uICckYWN0aW9uJyIpCiAJCWlmICRhY3Rp b24gJiYgKCRhY3Rpb24gIX4gbS9eKEFDQ0VQVHxEUk9QfFJFSkVDVCkkLyk7CiAJfSBlbHNpZiAo JHR5cGUgZXEgJ2dyb3VwJykgewogCSAgICAmJGFkZF9lcnJvcigndHlwZScsICJzZWN1cml0eSBn cm91cHMgbm90IGFsbG93ZWQiKQpAQCAtMjgzNiw3ICsyODgxLDcgQEAgc3ViIHBhcnNlX2Z3X3J1 bGUgewogICAgICRydWxlLT57dHlwZX0gPSBsYygkMSk7CiAgICAgJHJ1bGUtPnthY3Rpb259ID0g JDI7CiAKLSAgICBpZiAoJHJ1bGUtPnt0eXBlfSBlcSAgJ2luJyB8fCAkcnVsZS0+e3R5cGV9IGVx ICdvdXQnKSB7CisgICAgaWYgKCRydWxlLT57dHlwZX0gZXEgICdpbicgfHwgJHJ1bGUtPnt0eXBl fSBlcSAnb3V0JyB8fCAkcnVsZS0+e3R5cGV9IGVxICdmb3J3YXJkJykgewogCWlmICgkcnVsZS0+ e2FjdGlvbn0gPX4gbS9eKFxTKylcKChBQ0NFUFR8RFJPUHxSRUpFQ1QpXCkkLykgewogCSAgICAk cnVsZS0+e21hY3JvfSA9ICQxOwogCSAgICAkcnVsZS0+e2FjdGlvbn0gPSAkMjsKQEAgLTI5NTAs NyArMjk5NSw3IEBAIHN1YiBwYXJzZV9ob3N0Zndfb3B0aW9uIHsKICAgICBpZiAoJGxpbmUgPX4g bS9eKGVuYWJsZXxub3NtdXJmc3x0Y3BmbGFnc3xuZHB8bG9nX25mX2Nvbm50cmFja3xuZl9jb25u dHJhY2tfYWxsb3dfaW52YWxpZHxwcm90ZWN0aW9uX3N5bmZsb29kfG5mdGFibGVzKTpccyooMHwx KVxzKiQvaSkgewogCSRvcHQgPSBsYygkMSk7CiAJJHZhbHVlID0gaW50KCQyKTsKLSAgICB9IGVs c2lmICgkbGluZSA9fiBtL14obG9nX2xldmVsX2lufGxvZ19sZXZlbF9vdXR8dGNwX2ZsYWdzX2xv Z19sZXZlbHxzbXVyZl9sb2dfbGV2ZWwpOlxzKigoJGxvZ2xldmVscylccyopPyQvaSkgeworICAg IH0gZWxzaWYgKCRsaW5lID1+IG0vXihsb2dfbGV2ZWxfKD86aW58b3V0fGZvcndhcmQpfHRjcF9m bGFnc19sb2dfbGV2ZWx8c211cmZfbG9nX2xldmVsKTpccyooKCRsb2dsZXZlbHMpXHMqKT8kL2kp IHsKIAkkb3B0ID0gbGMoJDEpOwogCSR2YWx1ZSA9ICQyID8gbGMoJDMpIDogJyc7CiAgICAgfSBl bHNpZiAoJGxpbmUgPX4gbS9eKG5mX2Nvbm50cmFja19oZWxwZXJzKTpccyooKChcUyspWyxdPykr KVxzKiQvaSkgewpAQCAtMjk4MSw3ICszMDI2LDcgQEAgc3ViIHBhcnNlX2NsdXN0ZXJmd19vcHRp b24gewogICAgIH0gZWxzaWYgKCRsaW5lID1+IG0vXihlYnRhYmxlcyk6XHMqKDB8MSlccyokL2kp IHsKIAkkb3B0ID0gbGMoJDEpOwogCSR2YWx1ZSA9IGludCgkMik7Ci0gICAgfSBlbHNpZiAoJGxp bmUgPX4gbS9eKHBvbGljeV8oaW58b3V0KSk6XHMqKEFDQ0VQVHxEUk9QfFJFSkVDVClccyokL2kp IHsKKyAgICB9IGVsc2lmICgkbGluZSA9fiBtL14ocG9saWN5XyhpbnxvdXR8Zm9yd2FyZCkpOlxz KihBQ0NFUFR8RFJPUHxSRUpFQ1QpXHMqJC9pKSB7CiAJJG9wdCA9IGxjKCQxKTsKIAkkdmFsdWUg PSB1YygkMyk7CiAgICAgfSBlbHNpZiAoJGxpbmUgPX4gbS9eKGxvZ19yYXRlbGltaXQpOlxzKihc UyspXHMqJC8pIHsKQEAgLTI5OTQsNiArMzAzOSwyNCBAQCBzdWIgcGFyc2VfY2x1c3RlcmZ3X29w dGlvbiB7CiAgICAgcmV0dXJuICgkb3B0LCAkdmFsdWUpOwogfQogCitzdWIgcGFyc2Vfdm5ldGZ3 X29wdGlvbiB7CisgICAgbXkgKCRsaW5lKSA9IEBfOworCisgICAgbXkgKCRvcHQsICR2YWx1ZSk7 CisKKyAgICBpZiAoJGxpbmUgPX4gbS9eKGVuYWJsZSk6XHMqKFxkKylccyokL2kpIHsKKwkkb3B0 ID0gbGMoJDEpOworCSR2YWx1ZSA9IGludCgkMik7CisgICAgfSBlbHNpZiAoJGxpbmUgPX4gbS9e KHBvbGljeV9mb3J3YXJkKTpccyooQUNDRVBUfERST1ApXHMqJC9pKSB7CisJJG9wdCA9IGxjKCQx KTsKKwkkdmFsdWUgPSB1YygkMik7CisgICAgfSBlbHNlIHsKKwlkaWUgImNhbid0IHBhcnNlIG9w dGlvbiAnJGxpbmUnXG4iCisgICAgfQorCisgICAgcmV0dXJuICgkb3B0LCAkdmFsdWUpOworfQor CiBzdWIgcmVzb2x2ZV9hbGlhcyB7CiAgICAgbXkgKCRjbHVzdGVyZndfY29uZiwgJGZ3X2NvbmYs ICRjaWRyLCAkc2NvcGUpID0gQF87CiAKQEAgLTMxNjAsNiArMzIyMyw4IEBAIHN1YiBnZW5lcmlj X2Z3X2NvbmZpZ19wYXJzZXIgewogCQkgICAgKCRvcHQsICR2YWx1ZSkgPSBwYXJzZV9jbHVzdGVy Zndfb3B0aW9uKCRsaW5lKTsKIAkJfSBlbHNpZiAoJHJ1bGVfZW52IGVxICdob3N0JykgewogCQkg ICAgKCRvcHQsICR2YWx1ZSkgPSBwYXJzZV9ob3N0Zndfb3B0aW9uKCRsaW5lKTsKKwkJfSBlbHNp ZiAoJHJ1bGVfZW52IGVxICd2bmV0JykgeworCQkgICAgKCRvcHQsICR2YWx1ZSkgPSBwYXJzZV92 bmV0Zndfb3B0aW9uKCRsaW5lKTsKIAkJfSBlbHNlIHsKIAkJICAgICgkb3B0LCAkdmFsdWUpID0g cGFyc2Vfdm1md19vcHRpb24oJGxpbmUpOwogCQl9CkBAIC0zMjk5LDYgKzMzNjQsMTAgQEAgc3Vi IGxvY2tfdm1md19jb25mIHsKICAgICByZXR1cm4gUFZFOjpGaXJld2FsbDo6SGVscGVyczo6bG9j a192bWZ3X2NvbmYoQF8pOwogfQogCitzdWIgbG9ja192bmV0ZndfY29uZiB7CisgICAgcmV0dXJu IFBWRTo6RmlyZXdhbGw6OkhlbHBlcnM6OmxvY2tfdm5ldGZ3X2NvbmYoQF8pOworfQorCiBzdWIg bG9hZF92bWZ3X2NvbmYgewogICAgIG15ICgkY2x1c3Rlcl9jb25mLCAkcnVsZV9lbnYsICR2bWlk LCAkZGlyKSA9IEBfOwogCkBAIC0zMzI1LDcgKzMzOTQsNyBAQCBteSAkZm9ybWF0X3J1bGVzID0g c3ViIHsKICAgICBteSAkcmF3ID0gJyc7CiAKICAgICBmb3JlYWNoIG15ICRydWxlIChAJHJ1bGVz KSB7Ci0JaWYgKCRydWxlLT57dHlwZX0gZXEgICdpbicgfHwgJHJ1bGUtPnt0eXBlfSBlcSAnb3V0 JyB8fCAkcnVsZS0+e3R5cGV9IGVxICdncm91cCcpIHsKKwlpZiAoZ3JlcCB7ICRfIGVxICRydWxl LT57dHlwZX0gfSBxdyhpbiBvdXQgZm9yd2FyZCBncm91cCkpIHsKIAkgICAgJHJhdyAuPSAnfCcg aWYgZGVmaW5lZCgkcnVsZS0+e2VuYWJsZX0pICYmICEkcnVsZS0+e2VuYWJsZX07CiAJICAgICRy YXcgLj0gdWMoJHJ1bGUtPnt0eXBlfSk7CiAJICAgIGlmICgkcnVsZS0+e21hY3JvfSkgewpAQCAt Mzc3Niw2ICszODQ1LDUwIEBAIHN1YiBzYXZlX2hvc3Rmd19jb25mIHsKICAgICB9CiB9CiAKK3N1 YiBsb2FkX3ZuZXRmd19jb25mIHsKKyAgICBteSAoJGNsdXN0ZXJfY29uZiwgJHJ1bGVfZW52LCAk dm5ldCwgJGRpcikgPSBAXzsKKworICAgICRydWxlX2VudiA9ICd2bmV0JyBpZiAhZGVmaW5lZCgk cnVsZV9lbnYpOworCisgICAgbXkgJGZpbGVuYW1lID0gIiR2bmV0ZndfY29uZl9kaXIvJHZuZXQu ZnciOworCisgICAgbXkgJGVtcHR5X2NvbmYgPSB7CisJcnVsZXMgPT4gW10sCisJb3B0aW9ucyA9 PiB7fSwKKyAgICB9OworCisgICAgbXkgJHZuZXRmd19jb25mID0gZ2VuZXJpY19md19jb25maWdf cGFyc2VyKCRmaWxlbmFtZSwgJGNsdXN0ZXJfY29uZiwgJGVtcHR5X2NvbmYsICRydWxlX2Vudik7 CisgICAgJHZuZXRmd19jb25mLT57dm5ldH0gPSAkdm5ldDsKKworICAgIHJldHVybiAkdm5ldGZ3 X2NvbmY7Cit9CisKK3N1YiBzYXZlX3ZuZXRmd19jb25mIHsKKyAgICBteSAoJHZuZXQsICRjb25m KSA9IEBfOworCisgICAgbXkgJGZpbGVuYW1lID0gIiR2bmV0ZndfY29uZl9kaXIvJHZuZXQuZnci OworCisgICAgbXkgJHJhdyA9ICcnOworCisgICAgbXkgJG9wdGlvbnMgPSAkY29uZi0+e29wdGlv bnN9OworICAgICRyYXcgLj0gJiRmb3JtYXRfb3B0aW9ucygkb3B0aW9ucykgaWYgJG9wdGlvbnMg JiYgc2NhbGFyKGtleXMgJSRvcHRpb25zKTsKKworICAgIG15ICRydWxlcyA9ICRjb25mLT57cnVs ZXN9OworICAgIGlmICgkcnVsZXMgJiYgc2NhbGFyKEAkcnVsZXMpKSB7CisJJHJhdyAuPSAiW1JV TEVTXVxuXG4iOworCSRyYXcgLj0gJiRmb3JtYXRfcnVsZXMoJHJ1bGVzLCAxKTsKKwkkcmF3IC49 ICJcbiI7CisgICAgfQorCisgICAgbWtkaXIoJHZuZXRmd19jb25mX2RpciwgMDc1NSkgaWYgIS1k ICR2bmV0ZndfY29uZl9kaXI7CisKKyAgICBpZiAoJHJhdykgeworCVBWRTo6VG9vbHM6OmZpbGVf c2V0X2NvbnRlbnRzKCRmaWxlbmFtZSwgJHJhdyk7CisgICAgfSBlbHNlIHsKKwl1bmxpbmsgJGZp bGVuYW1lOworICAgIH0KK30KKwogc3ViIGNvbXBpbGUgewogICAgIG15ICgkY2x1c3Rlcl9jb25m LCAkaG9zdGZ3X2NvbmYsICR2bWRhdGEsICRjb3Jvc3luY19jb25mKSA9IEBfOwogCmRpZmYgLS1n aXQgYS9zcmMvUFZFL0ZpcmV3YWxsL0hlbHBlcnMucG0gYi9zcmMvUFZFL0ZpcmV3YWxsL0hlbHBl cnMucG0KaW5kZXggN2RjYmNhMy4uMGI0NjVhZSAxMDA2NDQKLS0tIGEvc3JjL1BWRS9GaXJld2Fs bC9IZWxwZXJzLnBtCisrKyBiL3NyYy9QVkUvRmlyZXdhbGwvSGVscGVycy5wbQpAQCAtMzIsNiAr MzIsMTggQEAgc3ViIGxvY2tfdm1md19jb25mIHsKICAgICByZXR1cm4gJHJlczsKIH0KIAorc3Vi IGxvY2tfdm5ldGZ3X2NvbmYgeworICAgIG15ICgkdm5ldCwgJHRpbWVvdXQsICRjb2RlLCBAcGFy YW0pID0gQF87CisKKyAgICBkaWUgImNhbid0IGxvY2sgdm5ldCBmaXJld2FsbCBjb25maWcgZm9y IHVuZGVmaW5lZCB2bmV0XG4iCisJaWYgIWRlZmluZWQoJHZuZXQpOworCisgICAgbXkgJHJlcyA9 IFBWRTo6Q2x1c3Rlcjo6Y2ZzX2xvY2tfZmlyZXdhbGwoInZuZXQtJHZuZXQiLCAkdGltZW91dCwg JGNvZGUsIEBwYXJhbSk7CisgICAgZGllICRAIGlmICRAOworCisgICAgcmV0dXJuICRyZXM7Cit9 CisKIHN1YiByZW1vdmVfdm1md19jb25mIHsKICAgICBteSAoJHZtaWQpID0gQF87CiAKLS0gCjIu MzkuNQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCnB2 ZS1kZXZlbCBtYWlsaW5nIGxpc3QKcHZlLWRldmVsQGxpc3RzLnByb3htb3guY29tCmh0dHBzOi8v bGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3B2ZS1kZXZlbAo=