From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <pbs-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 F096B1FF189 for <inbox@lore.proxmox.com>; Tue, 18 Feb 2025 17:17:21 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id D3B17119BD; Tue, 18 Feb 2025 17:17:18 +0100 (CET) From: Gabriel Goller <g.goller@proxmox.com> To: pbs-devel@lists.proxmox.com Date: Tue, 18 Feb 2025 17:16:38 +0100 Message-Id: <20250218161641.563080-2-g.goller@proxmox.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250218161641.563080-1-g.goller@proxmox.com> References: <20250218161641.563080-1-g.goller@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.030 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: [pbs-devel] [PATCH proxmox 1/2] log: introduce logging builder X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion <pbs-devel.lists.proxmox.com> List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pbs-devel>, <mailto:pbs-devel-request@lists.proxmox.com?subject=unsubscribe> List-Archive: <http://lists.proxmox.com/pipermail/pbs-devel/> List-Post: <mailto:pbs-devel@lists.proxmox.com> List-Help: <mailto:pbs-devel-request@lists.proxmox.com?subject=help> List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel>, <mailto:pbs-devel-request@lists.proxmox.com?subject=subscribe> Reply-To: Proxmox Backup Server development discussion <pbs-devel@lists.proxmox.com> Cc: Lukas Wagner <l.wagner@proxmox.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" <pbs-devel-bounces@lists.proxmox.com> QWRkIGEgYnVpbGRlci1saWtlIHN0cnVjdCB0byBjb21wb3NlIGEgdHJhY2luZyBsb2dnZXIgdXNp bmcgZGlmZmVyZW50CmxheWVycy4gSW5zdGVhZCBvZiBoYXZpbmcgYW4gaW5pdCBmdW5jdGlvbiBw ZXIgcHJvZHVjdC9iaW5hcnkgb3IKc3VwZXItc3BlY2lmaWMgaW5pdCBmdW5jdGlvbnMgdGhhdCBk ZXNjcmliZSB0aGUgbG9nZ2VyLCBoYXZlIGEgZHluYW1pYwpidWlsZGVyLiBUaGUgYnVpbGRlciBp bXByb3ZlcyB0aGUgdXNhYmlsaXR5IGFuZCBtYWtlcyB0aGUgbG9nZ2luZwppbml0aWFsaXphdGlv biBtb3JlIHNlbGYtZXhwbGFpbmluZy4KClN1Z2dlc3RlZC1ieTogTHVrYXMgV2FnbmVyIDxsLndh Z25lckBwcm94bW94LmNvbT4KU2lnbmVkLW9mZi1ieTogR2FicmllbCBHb2xsZXIgPGcuZ29sbGVy QHByb3htb3guY29tPgotLS0KIHByb3htb3gtbG9nL3NyYy9idWlsZGVyLnJzIHwgMTI3ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHByb3htb3gtbG9nL3NyYy9saWIucnMg ICAgIHwgIDkyICsrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAx NjMgaW5zZXJ0aW9ucygrKSwgNTYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgcHJv eG1veC1sb2cvc3JjL2J1aWxkZXIucnMKCmRpZmYgLS1naXQgYS9wcm94bW94LWxvZy9zcmMvYnVp bGRlci5ycyBiL3Byb3htb3gtbG9nL3NyYy9idWlsZGVyLnJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uZjdkYjM4YTk0OTgyCi0tLSAvZGV2L251bGwKKysrIGIvcHJv eG1veC1sb2cvc3JjL2J1aWxkZXIucnMKQEAgLTAsMCArMSwxMjcgQEAKK3VzZSB0cmFjaW5nOjp7 bGV2ZWxfZmlsdGVyczo6TGV2ZWxGaWx0ZXIsIExldmVsfTsKK3VzZSB0cmFjaW5nX2xvZzo6e0Fz TG9nLCBMb2dUcmFjZXJ9OwordXNlIHRyYWNpbmdfc3Vic2NyaWJlcjo6e2ZpbHRlcjo6ZmlsdGVy X2ZuLCBsYXllcjo6U3Vic2NyaWJlckV4dCwgTGF5ZXJ9OworCit1c2UgY3JhdGU6OnsKKyAgICBn ZXRfZW52X3ZhcmlhYmxlLCBqb3VybmFsZF9vcl9zdGRlcnJfbGF5ZXIsIHBsYWluX3N0ZGVycl9s YXllciwKKyAgICB0YXNrbG9nX2xheWVyOjpUYXNrbG9nTGF5ZXIsIExvZ0NvbnRleHQsCit9Owor CisvLy8gQnVpbGRlci1saWtlIHN0cnVjdCB0byBjb21wb3NlIHlvdXIgbG9nZ2luZyBsYXllcnMu CisvLy8KKy8vLyBTdG9yZXMgYSBnbG9iYWwgbG9nIGxldmVsIHdoaWNoIHdpbGwgYWxzbyBiZSBh cHBsaWVkIHRvIGFsbCBsYXllcnMuIFRoZSBkaWZmZXJlbnQgbGF5ZXJzIGNhbiBiZQorLy8vIGFk ZGVkIHdpdGggdGhlIGJ1aWxkZXIgbWV0aG9kcy4gTm90ZSB0aGF0IHRoZSBpbml0IG1ldGhvZCBj YW4gb25seSBiZSBjYWxsZWQgb25jZS4KKy8vLworLy8vICMgRXhhbXBsZXMKKy8vLworLy8vIGBg YAorLy8vIC8vIFRoZSBkZWZhdWx0IFBCUyBkYWVtb24vcHJveHkgbG9nZ2VyCisvLy8gTG9nZ2Vy Ojpmcm9tX2VudigiUEJTX0xPRyIsIExldmVsRmlsdGVyOjpJTkZPKQorLy8vICAgICAuam91cm5h bGRfb25fbm9fd29ya2VydGFzaygpCisvLy8gICAgIC50YXNrbG9nX3BicygpCisvLy8gICAgIC5p bml0KCk/OworLy8vIGBgYAorLy8vCisvLy8gYGBgCisvLy8gLy8gVGhlIGRlZmF1bHQgUEJTIGNs aSBsb2dnZXIKKy8vLyBMb2dnZXI6OmZyb21fZW52KCJQQlNfTE9HIiwgTGV2ZWxGaWx0ZXI6OklO Rk8pCisvLy8gICAgIC5zdGRlcnIoKQorLy8vICAgICAuaW5pdCgpPzsKKy8vLyBgYGAKK3B1YiBz dHJ1Y3QgTG9nZ2VyIHsKKyAgICBnbG9iYWxfbG9nX2xldmVsOiBMZXZlbEZpbHRlciwKKyAgICBs YXllcjogVmVjPAorICAgICAgICBCb3g8ZHluIHRyYWNpbmdfc3Vic2NyaWJlcjo6TGF5ZXI8dHJh Y2luZ19zdWJzY3JpYmVyOjpSZWdpc3RyeT4gKyBTZW5kICsgU3luYyArICdzdGF0aWM+LAorICAg ID4sCit9CisKK2ltcGwgTG9nZ2VyIHsKKyAgICAvLy8gQ3JlYXRlIGEgbmV3IExvZ0J1aWxkZXIg d2l0aCBubyBsYXllcnMgYW5kIGEgZGVmYXVsdCBsb2dsZXZlbCByZXRyaWV2ZWQgZnJvbSBhbiBl bnYKKyAgICAvLy8gdmFyaWFibGUuIElmIHRoZSBlbnYgdmFyaWFibGUgY2Fubm90IGJlIHJldHJp ZXZlZCBvciB0aGUgY29udGVudCBpcyBub3QgcGFyc2FibGUsIGZhbGxiYWNrCisgICAgLy8vIHRv IHRoZSBkZWZhdWx0X2xvZ19sZXZlbCBwYXNzZWQuCisgICAgcHViIGZuIGZyb21fZW52KGVudl92 YXI6ICZzdHIsIGRlZmF1bHRfbG9nX2xldmVsOiBMZXZlbEZpbHRlcikgLT4gTG9nZ2VyIHsKKyAg ICAgICAgbGV0IGxvZ19sZXZlbCA9IGdldF9lbnZfdmFyaWFibGUoZW52X3ZhciwgZGVmYXVsdF9s b2dfbGV2ZWwpOworICAgICAgICBMb2dnZXIgeworICAgICAgICAgICAgZ2xvYmFsX2xvZ19sZXZl bDogbG9nX2xldmVsLAorICAgICAgICAgICAgbGF5ZXI6IHZlYyFbXSwKKyAgICAgICAgfQorICAg IH0KKworICAgIC8vLyBQcmludCB0byBqb3VybmFsZC4KKyAgICAvLy8KKyAgICAvLy8gSWYgdGhl IGpvdXJuYWwgY2Fubm90IGJlIG9wZW5lZCwgcHJpbnQgdG8gc3RkZXJyIGluc3RlYWQuCisgICAg cHViIGZuIGpvdXJuYWxkKG11dCBzZWxmKSAtPiBMb2dnZXIgeworICAgICAgICBzZWxmLmxheWVy LnB1c2goCisgICAgICAgICAgICBqb3VybmFsZF9vcl9zdGRlcnJfbGF5ZXIoKQorICAgICAgICAg ICAgICAgIC53aXRoX2ZpbHRlcihzZWxmLmdsb2JhbF9sb2dfbGV2ZWwpCisgICAgICAgICAgICAg ICAgLmJveGVkKCksCisgICAgICAgICk7CisgICAgICAgIHNlbGYKKyAgICB9CisKKyAgICAvLy8g UHJpbnQgdG8gam91cm5hbGQgaWYgbm8gTG9nQ29udGV4dCAod2UncmUgbm90IGluIGEgUEJTIHdv cmtlcnRhc2spIGlzIGdpdmVuLgorICAgIC8vLworICAgIC8vLyBJZiBvcGVuaW5nIHRoZSBqb3Vy bmFsIGZhaWxzLCB3ZSBmYWxsYmFjayBhbmQgcHJpbnQgdG8gc3RkZXJyLiBXZSBwcmludCB0byBq b3VybmFsZCBpZgorICAgIC8vLyBubyBMb2dDb250ZXh0IGV4aXN0cyDigJMgd2hpY2ggbWVhbnMg d2UgYXJlIG5vdCBpbiBhIFBCUyB3b3JrZXJ0YXNrIOKAkyBvciB0aGUgbGV2ZWwgb2YgdGhlCisg ICAgLy8vIGxvZyBtZXNzYWdlIGlzICdFUlJPUicuCisgICAgcHViIGZuIGpvdXJuYWxkX29uX25v X3dvcmtlcnRhc2sobXV0IHNlbGYpIC0+IExvZ2dlciB7CisgICAgICAgIHNlbGYubGF5ZXIucHVz aCgKKyAgICAgICAgICAgIGpvdXJuYWxkX29yX3N0ZGVycl9sYXllcigpCisgICAgICAgICAgICAg ICAgLndpdGhfZmlsdGVyKGZpbHRlcl9mbih8bWV0YWRhdGF8IHsKKyAgICAgICAgICAgICAgICAg ICAgIUxvZ0NvbnRleHQ6OmV4aXN0cygpIHx8ICptZXRhZGF0YS5sZXZlbCgpID09IExldmVsOjpF UlJPUgorICAgICAgICAgICAgICAgIH0pKQorICAgICAgICAgICAgICAgIC53aXRoX2ZpbHRlcihz ZWxmLmdsb2JhbF9sb2dfbGV2ZWwpCisgICAgICAgICAgICAgICAgLmJveGVkKCksCisgICAgICAg ICk7CisgICAgICAgIHNlbGYKKyAgICB9CisKKyAgICAvLy8gUHJpbnQgdG8gdGhlIFBCUyB0YXNr bG9nIGlmIHdlIGFyZSBpbiBhIFBCUyB3b3JrZXJ0YXNrLgorICAgIC8vLworICAgIC8vLyBDaGVj ayBpZiBhIExvZ0NvbnRleHQgZXhpc3RzIGFuZCBpZiBpdCBkb2VzLCBwcmludCB0byB0aGUgY29y cmVzcG9uZGluZyB0YXNrIGxvZyBmaWxlLgorICAgIHB1YiBmbiB0YXNrbG9nX3BicyhtdXQgc2Vs ZikgLT4gTG9nZ2VyIHsKKyAgICAgICAgc2VsZi5sYXllcgorICAgICAgICAgICAgLnB1c2goVGFz a2xvZ0xheWVyIHt9LndpdGhfZmlsdGVyKHNlbGYuZ2xvYmFsX2xvZ19sZXZlbCkuYm94ZWQoKSk7 CisgICAgICAgIHNlbGYKKyAgICB9CisKKyAgICAvLy8gUHJpbnQgdG8gc3RkZXJyLgorICAgIC8v LworICAgIC8vLyBQcmludHMgYWxsIHRoZSBldmVudHMgdG8gc3RkZXJyIHdpdGggdGhlIGNvbXBh Y3QgZm9ybWF0IChubyBsZXZlbCwgbm8gdGltZXN0YW1wKS4KKyAgICBwdWIgZm4gc3RkZXJyKG11 dCBzZWxmKSAtPiBMb2dnZXIgeworICAgICAgICBzZWxmLmxheWVyLnB1c2goCisgICAgICAgICAg ICBwbGFpbl9zdGRlcnJfbGF5ZXIoKQorICAgICAgICAgICAgICAgIC53aXRoX2ZpbHRlcihzZWxm Lmdsb2JhbF9sb2dfbGV2ZWwpCisgICAgICAgICAgICAgICAgLmJveGVkKCksCisgICAgICAgICk7 CisgICAgICAgIHNlbGYKKyAgICB9CisKKyAgICAvLy8gUHJpbnQgdG8gc3RkZXJyIGlmIG5vIHdv cmtlcnRhc2sgZXhpc3RzIG9yIHRoZSBldmVudCBsZXZlbCBpcyBgRVJST1JgLgorICAgIC8vLwor ICAgIC8vLyBQcmludCB0byBzdGRlcnIgaW4gdGhlIGRlZmF1bHQgY29tcGFjdCBmb3JtYXQgKG5v IGxldmVsLCBubyB0aW1lc3RhbXApLiBUaGlzIHdpbGwgb25seSBiZQorICAgIC8vLyB0cmlnZ2Vy ZWQgaWYgbm8gd29ya2VydGFzayBjb3VsZCBiZSBmb3VuZCAobm8gTG9nQ29udGV4dCBleGlzdHMp IG9yIHRoZSBldmVudCBsZXZlbCBpcworICAgIC8vLyBgRVJST1JgLgorICAgIHB1YiBmbiBzdGRl cnJfb25fbm9fd29ya2VydGFzayhtdXQgc2VsZikgLT4gTG9nZ2VyIHsKKyAgICAgICAgc2VsZi5s YXllci5wdXNoKAorICAgICAgICAgICAgcGxhaW5fc3RkZXJyX2xheWVyKCkKKyAgICAgICAgICAg ICAgICAud2l0aF9maWx0ZXIoZmlsdGVyX2ZuKHxtZXRhZGF0YXwgeworICAgICAgICAgICAgICAg ICAgICAhTG9nQ29udGV4dDo6ZXhpc3RzKCkgfHwgKm1ldGFkYXRhLmxldmVsKCkgPT0gTGV2ZWw6 OkVSUk9SCisgICAgICAgICAgICAgICAgfSkpCisgICAgICAgICAgICAgICAgLndpdGhfZmlsdGVy KHNlbGYuZ2xvYmFsX2xvZ19sZXZlbCkKKyAgICAgICAgICAgICAgICAuYm94ZWQoKSwKKyAgICAg ICAgKTsKKyAgICAgICAgc2VsZgorICAgIH0KKworICAgIC8vLyBJbml0cyB0aGUgdHJhY2luZyBs b2dnZXIgd2l0aCB0aGUgcHJldmlvdXNseSBjb25maWd1cmVkIGxheWVycy4KKyAgICAvLy8KKyAg ICAvLy8gQWxzbyBjb25maWd1cmVzIHRoZSBgTG9nVHJhY2VyYCB3aGljaCB3aWxsIGNvbnZlcnQg YWxsIGBsb2dgIGV2ZW50cyB0byB0cmFjaW5nIGV2ZW50cy4KKyAgICBwdWIgZm4gaW5pdChzZWxm KSAtPiBSZXN1bHQ8KCksIGFueWhvdzo6RXJyb3I+IHsKKyAgICAgICAgbGV0IHJlZ2lzdHJ5ID0g dHJhY2luZ19zdWJzY3JpYmVyOjpyZWdpc3RyeSgpLndpdGgoc2VsZi5sYXllcik7CisgICAgICAg IHRyYWNpbmc6OnN1YnNjcmliZXI6OnNldF9nbG9iYWxfZGVmYXVsdChyZWdpc3RyeSk/OworCisg ICAgICAgIExvZ1RyYWNlcjo6aW5pdF93aXRoX2ZpbHRlcihzZWxmLmdsb2JhbF9sb2dfbGV2ZWwu YXNfbG9nKCkpPzsKKyAgICAgICAgT2soKCkpCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvcHJveG1v eC1sb2cvc3JjL2xpYi5ycyBiL3Byb3htb3gtbG9nL3NyYy9saWIucnMKaW5kZXggOGM3NGU0MmI2 MThkLi41MWNhODlhY2M5OTIgMTAwNjQ0Ci0tLSBhL3Byb3htb3gtbG9nL3NyYy9saWIucnMKKysr IGIvcHJveG1veC1sb2cvc3JjL2xpYi5ycwpAQCAtNiwxNyArNiwxNSBAQCB1c2Ugc3RkOjpmdXR1 cmU6OkZ1dHVyZTsKIHVzZSBzdGQ6OnN5bmM6OntBcmMsIE11dGV4fTsKIAogdXNlIHRva2lvOjp0 YXNrOjpmdXR1cmVzOjpUYXNrTG9jYWxGdXR1cmU7Ci11c2UgdHJhY2luZ19sb2c6OntBc0xvZywg TG9nVHJhY2VyfTsKLXVzZSB0cmFjaW5nX3N1YnNjcmliZXI6OmZpbHRlcjo6ZmlsdGVyX2ZuOwog dXNlIHRyYWNpbmdfc3Vic2NyaWJlcjo6cHJlbHVkZTo6KjsKIAotdXNlIHRhc2tsb2dfbGF5ZXI6 OlRhc2tsb2dMYXllcjsKLQogbW9kIGZpbGVfbG9nZ2VyOwotcHViIHVzZSBmaWxlX2xvZ2dlcjo6 e0ZpbGVMb2dPcHRpb25zLCBGaWxlTG9nZ2VyfTsKLQogbW9kIHRhc2tsb2dfbGF5ZXI7CiAKK3B1 YiBtb2QgYnVpbGRlcjsKK3B1YiB1c2UgYnVpbGRlcjo6TG9nZ2VyOworcHViIHVzZSBmaWxlX2xv Z2dlcjo6e0ZpbGVMb2dPcHRpb25zLCBGaWxlTG9nZ2VyfTsKKwogcHViIHVzZSB0cmFjaW5nOjpk ZWJ1ZzsKIHB1YiB1c2UgdHJhY2luZzo6ZGVidWdfc3BhbjsKIHB1YiB1c2UgdHJhY2luZzo6ZW5h YmxlZDsKQEAgLTM4LDM2ICszNiw2IEBAIHRva2lvOjp0YXNrX2xvY2FsISB7CiAgICAgc3RhdGlj IExPR19DT05URVhUOiBMb2dDb250ZXh0OwogfQogCi1wdWIgZm4gaW5pdF9sb2dnZXIoCi0gICAg ZW52X3Zhcl9uYW1lOiAmc3RyLAotICAgIGRlZmF1bHRfbG9nX2xldmVsOiBMZXZlbEZpbHRlciwK LSkgLT4gUmVzdWx0PCgpLCBhbnlob3c6OkVycm9yPiB7Ci0gICAgbGV0IG11dCBsb2dfbGV2ZWwg PSBkZWZhdWx0X2xvZ19sZXZlbDsKLSAgICBpZiBsZXQgT2sodikgPSBlbnY6OnZhcihlbnZfdmFy X25hbWUpIHsKLSAgICAgICAgbWF0Y2ggdi5wYXJzZTo6PExldmVsRmlsdGVyPigpIHsKLSAgICAg ICAgICAgIE9rKGwpID0+IHsKLSAgICAgICAgICAgICAgICBsb2dfbGV2ZWwgPSBsOwotICAgICAg ICAgICAgfQotICAgICAgICAgICAgRXJyKGUpID0+IHsKLSAgICAgICAgICAgICAgICBlcHJpbnRs biEoImVudiB2YXJpYWJsZSB7ZW52X3Zhcl9uYW1lfSBmb3VuZCwgYnV0IHBhcnNpbmcgZmFpbGVk OiB7ZTo/fSIpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIGxldCByZWdp c3RyeSA9IHRyYWNpbmdfc3Vic2NyaWJlcjo6cmVnaXN0cnkoKQotICAgICAgICAud2l0aCgKLSAg ICAgICAgICAgIGpvdXJuYWxkX29yX3N0ZGVycl9sYXllcigpCi0gICAgICAgICAgICAgICAgLndp dGhfZmlsdGVyKGZpbHRlcl9mbih8bWV0YWRhdGF8IHsKLSAgICAgICAgICAgICAgICAgICAgIUxv Z0NvbnRleHQ6OmV4aXN0cygpIHx8ICptZXRhZGF0YS5sZXZlbCgpID09IExldmVsOjpFUlJPUgot ICAgICAgICAgICAgICAgIH0pKQotICAgICAgICAgICAgICAgIC53aXRoX2ZpbHRlcihsb2dfbGV2 ZWwpLAotICAgICAgICApCi0gICAgICAgIC53aXRoKFRhc2tsb2dMYXllciB7fS53aXRoX2ZpbHRl cihsb2dfbGV2ZWwpKTsKLQotICAgIHRyYWNpbmc6OnN1YnNjcmliZXI6OnNldF9nbG9iYWxfZGVm YXVsdChyZWdpc3RyeSk/OwotICAgIExvZ1RyYWNlcjo6aW5pdF93aXRoX2ZpbHRlcihsb2dfbGV2 ZWwuYXNfbG9nKCkpPzsKLSAgICBPaygoKSkKLX0KLQogLy8vIEEgZmlsZSBsb2dnZXIgYW5kIHdh cm5pbmdzIGNvdW50ZXIgd2hpY2ggY2FuIGJlIHVzZWQgYWNyb3NzIGEgc2NvcGUgZm9yIHNlcGFy YXRlIGxvZ2dpbmcuCiAvLy8gTWFpbmx5IHVzZWQgZm9yIHdvcmtlci10YXNrIGxvZ2dpbmcuCiBw dWIgc3RydWN0IEZpbGVMb2dTdGF0ZSB7CkBAIC0xNjAsMzQgKzEyOCw0NiBAQCB3aGVyZQogICAg ICAgICAud2l0aF93cml0ZXIoc3RkOjppbzo6c3RkZXJyKQogfQogCi0vLy8gSW5pdGlhbGl6ZSBk ZWZhdWx0IGxvZ2dlciBmb3IgQ0xJIGJpbmFyaWVzCi1wdWIgZm4gaW5pdF9jbGlfbG9nZ2VyKAot ICAgIGVudl92YXJfbmFtZTogJnN0ciwKLSAgICBkZWZhdWx0X2xvZ19sZXZlbDogTGV2ZWxGaWx0 ZXIsCi0pIC0+IFJlc3VsdDwoKSwgYW55aG93OjpFcnJvcj4geworZm4gZ2V0X2Vudl92YXJpYWJs ZShlbnZfdmFyOiAmc3RyLCBkZWZhdWx0X2xvZ19sZXZlbDogTGV2ZWxGaWx0ZXIpIC0+IExldmVs RmlsdGVyIHsKICAgICBsZXQgbXV0IGxvZ19sZXZlbCA9IGRlZmF1bHRfbG9nX2xldmVsOwotICAg IGlmIGxldCBPayh2KSA9IGVudjo6dmFyKGVudl92YXJfbmFtZSkgeworICAgIGlmIGxldCBPayh2 KSA9IGVudjo6dmFyKGVudl92YXIpIHsKICAgICAgICAgbWF0Y2ggdi5wYXJzZTo6PExldmVsRmls dGVyPigpIHsKICAgICAgICAgICAgIE9rKGwpID0+IHsKICAgICAgICAgICAgICAgICBsb2dfbGV2 ZWwgPSBsOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgRXJyKGUpID0+IHsKLSAgICAgICAg ICAgICAgICBlcHJpbnRsbiEoImVudiB2YXJpYWJsZSB7ZW52X3Zhcl9uYW1lfSBmb3VuZCwgYnV0 IHBhcnNpbmcgZmFpbGVkOiB7ZTo/fSIpOworICAgICAgICAgICAgICAgIGVwcmludGxuISgiZW52 IHZhcmlhYmxlIHtlbnZfdmFyfSBmb3VuZCwgYnV0IHBhcnNpbmcgZmFpbGVkOiB7ZTo/fSIpOwog ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQorICAgIGxvZ19sZXZlbAorfQogCi0gICAg bGV0IHJlZ2lzdHJ5ID0gdHJhY2luZ19zdWJzY3JpYmVyOjpyZWdpc3RyeSgpCi0gICAgICAgIC53 aXRoKAotICAgICAgICAgICAgcGxhaW5fc3RkZXJyX2xheWVyKCkKLSAgICAgICAgICAgICAgICAu d2l0aF9maWx0ZXIoZmlsdGVyX2ZuKHxtZXRhZGF0YXwgewotICAgICAgICAgICAgICAgICAgICAh TG9nQ29udGV4dDo6ZXhpc3RzKCkgfHwgKm1ldGFkYXRhLmxldmVsKCkgPj0gTGV2ZWw6OkVSUk9S Ci0gICAgICAgICAgICAgICAgfSkpCi0gICAgICAgICAgICAgICAgLndpdGhfZmlsdGVyKGxvZ19s ZXZlbCksCi0gICAgICAgICkKLSAgICAgICAgLndpdGgoVGFza2xvZ0xheWVyIHt9LndpdGhfZmls dGVyKGxvZ19sZXZlbCkpOwotCi0gICAgdHJhY2luZzo6c3Vic2NyaWJlcjo6c2V0X2dsb2JhbF9k ZWZhdWx0KHJlZ2lzdHJ5KT87Ci0gICAgTG9nVHJhY2VyOjppbml0X3dpdGhfZmlsdGVyKGxvZ19s ZXZlbC5hc19sb2coKSk/OwotICAgIE9rKCgpKQorLy8vIEluaXRpYWxpemUgdHJhY2luZyBsb2dn ZXIgdGhhdCBwcmludHMgdG8gam91cm5hbGQgb3Igc3RkZXJyIGRlcGVuZGluZyBvbiBpZiB3ZSBh cmUgaW4gYSBwYnMKKy8vLyB0YXNrLgorLy8vCisvLy8gQ2hlY2sgdGhlICh0b2tpbykgTG9nQ29u dGV4dCBhbmQgcHJpbnQgdG8gZWl0aGVyIGpvdXJuYWxkIG9yIHRoZSBUYXNrbG9nLgorI1tkZXBy ZWNhdGVkKG5vdGUgPSAiVXNlIHRoZSBgTG9nZ2VyYCBidWlsZGVyIGluc3RlYWQiKV0KK3B1YiBm biBpbml0X2xvZ2dlcigKKyAgICBlbnZfdmFyX25hbWU6ICZzdHIsCisgICAgZGVmYXVsdF9sb2df bGV2ZWw6IExldmVsRmlsdGVyLAorKSAtPiBSZXN1bHQ8KCksIGFueWhvdzo6RXJyb3I+IHsKKyAg ICBMb2dnZXI6OmZyb21fZW52KGVudl92YXJfbmFtZSwgZGVmYXVsdF9sb2dfbGV2ZWwpCisgICAg ICAgIC5qb3VybmFsZF9vbl9ub193b3JrZXJ0YXNrKCkKKyAgICAgICAgLnRhc2tsb2dfcGJzKCkK KyAgICAgICAgLmluaXQoKQorfQorCisvLy8gSW5pdGlhbGl6ZSBkZWZhdWx0IHRyYWNpbmcgbG9n Z2VyIGZvciBDTEkgYmluYXJpZXMuCisvLy8KKy8vLyBQcmludHMgdG8gc3RkZXJyIGFuZCB0byB0 aGUgdGFza2xvZyBpZiB3ZSBhcmUgaW4gYSBwYnMgd29ya2VydGFzay4KKyNbZGVwcmVjYXRlZChu b3RlID0gIlVzZSB0aGUgYExvZ2dlcmAgYnVpbGRlciBpbnN0ZWFkIildCitwdWIgZm4gaW5pdF9j bGlfbG9nZ2VyKAorICAgIGVudl92YXJfbmFtZTogJnN0ciwKKyAgICBkZWZhdWx0X2xvZ19sZXZl bDogTGV2ZWxGaWx0ZXIsCispIC0+IFJlc3VsdDwoKSwgYW55aG93OjpFcnJvcj4geworICAgIExv Z2dlcjo6ZnJvbV9lbnYoZW52X3Zhcl9uYW1lLCBkZWZhdWx0X2xvZ19sZXZlbCkKKyAgICAgICAg LnN0ZGVycl9vbl9ub193b3JrZXJ0YXNrKCkKKyAgICAgICAgLnRhc2tsb2dfcGJzKCkKKyAgICAg ICAgLmluaXQoKQogfQotLSAKMi4zOS41CgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCnBicy1kZXZlbCBtYWlsaW5nIGxpc3QKcGJzLWRldmVsQGxpc3Rz LnByb3htb3guY29tCmh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xp c3RpbmZvL3Bicy1kZXZlbAo=