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 494971FF187 for ; Mon, 3 Nov 2025 11:22:01 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 1BA0817BAE; Mon, 3 Nov 2025 11:21:36 +0100 (CET) From: Daniel Kral To: pve-devel@lists.proxmox.com Date: Mon, 3 Nov 2025 11:19:52 +0100 Message-ID: <20251103102118.153666-9-d.kral@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251103102118.153666-1-d.kral@proxmox.com> References: <20251103102118.153666-1-d.kral@proxmox.com> MIME-Version: 1.0 X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1762165266521 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.015 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 ha-manager v3 08/21] rules: make plugins register transformers instead of plugin_transform 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" UmVwbGFjZXMgdGhlIHJ1bGUgcGx1Z2lucycgcGx1Z2luX3RyYW5zZm9ybSguLi4pIG1ldGhvZCBi eSBhCnJlZ2lzdGVyX3RyYW5zZm9ybSguLi4pIGNhbGwgZm9yIGVhY2ggZGVjbGFyZWQgcnVsZSB0 cmFuc2Zvcm1lciB0byBtYWtlCnRoZWlyIGludGVyZmFjZSBtb3JlIHNpbWlsYXIgdG8gdGhlIG9u ZSBmb3IgcnVsZSBwbHVnaW4gY2hlY2tzLgoKU2lnbmVkLW9mZi1ieTogRGFuaWVsIEtyYWwgPGQu a3JhbEBwcm94bW94LmNvbT4KUmV2aWV3ZWQtYnk6IE1pY2hhZWwgS8O2cHBsIDxtLmtvZXBwbEBw cm94bW94LmNvbT4KVGVzdGVkLWJ5OiBNaWNoYWVsIEvDtnBwbCA8bS5rb2VwcGxAcHJveG1veC5j b20+Ci0tLQpjaGFuZ2VzIHNpbmNlIHYyOgogIC0gbm9uZQoKIHNyYy9QVkUvSEEvUnVsZXMucG0g ICAgICAgICAgICAgICAgICB8IDg1ICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KIHNyYy9Q VkUvSEEvUnVsZXMvUmVzb3VyY2VBZmZpbml0eS5wbSB8IDIyICsrKy0tLS0KIDIgZmlsZXMgY2hh bmdlZCwgNzEgaW5zZXJ0aW9ucygrKSwgMzYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L1BWRS9IQS9SdWxlcy5wbSBiL3NyYy9QVkUvSEEvUnVsZXMucG0KaW5kZXggYzgxYjE1MjUuLmEw NzVmZWFjIDEwMDY0NAotLS0gYS9zcmMvUFZFL0hBL1J1bGVzLnBtCisrKyBiL3NyYy9QVkUvSEEv UnVsZXMucG0KQEAgLTMyLDYgKzMyLDEyIEBAIHRoZSBmZWFzaWJpbGl0eSBiZXR3ZWVuIHJ1bGVz IG9mIHRoZSBzYW1lIHR5cGUgYW5kIGFuZCBiZXR3ZWVuIHJ1bGVzIG9mCiBkaWZmZXJlbnQgdHlw ZXMsIGFuZCBwcnVuZSB0aGUgcnVsZSBzZXQgaW4gc3VjaCBhIHdheSwgdGhhdCBpdCBiZWNvbWVz IGZlYXNpYmxlCiBhZ2Fpbiwgd2hpbGUgbWluaW1pemluZyB0aGUgYW1vdW50IG9mIHJ1bGVzIHRo YXQgbmVlZCB0byBiZSBwcnVuZWQuCiAKK01vcmUgc28sIHRoZSBydWxlcyBnaXZlbiBieSB0aGUg Y29uZmlnIGZpbGUgbWlnaHQgbm90IGJlIGluIHRoZSBiZXN0IGZvcm1hdCB0bworYmUgdXNlZCBp bnRlcm5hbGx5IG9yIGRvZXMgbm90IGNvbnRhaW4gdGhlIGltcGxpY2l0bHkgc3RhdGVkIHJ1bGVz LCB3aGljaCBhcmUKK2luZHVjZWQgYnkgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGRpZmZlcmVu dCBydWxlcy4gVGhlcmVmb3JlLCB0aGlzIHBhY2thZ2UKK2Fsc28gcHJvdmlkZXMgdGhlIGNhcGFi aWxpdHkgdG8gQzxMPHJlZ2lzdGVyIHRyYW5zZm9ybXN8L1JFR0lTVEVSSU5HIFRSQU5TRk9STVM+ PgordG8gaW1wbGVtZW50IHRoZXNlIGludGVybmFsIHJ1bGUgdHJhbnNmb3JtYXRpb25zLgorCiBU aGlzIHBhY2thZ2VzIGluaGVyaXRzIGl0cyBjb25maWctcmVsYXRlZCBtZXRob2RzIGZyb20gQzxM PFBWRTo6U2VjdGlvbkNvbmZpZz4+CiBhbmQgdGhlcmVmb3JlIHJ1bGUgcGx1Z2lucyBuZWVkIHRv IGltcGxlbWVudCBtZXRob2RzIGZyb20gdGhlcmUgYXMgd2VsbC4KIApAQCAtOTAsNiArOTYsMjgg QEAgYW5kIGJsYW1lcyB0aGVzZSBlcnJvcnMgb24gdGhlIEk8Y29tbWVudD4gcHJvcGVydHk6CiAg ICAgICAgIH0KICAgICApOwogCis9aGVhZDIgUkVHSVNURVJJTkcgVFJBTlNGT1JNUworCitSdWxl IHRyYW5zZm9ybXMgYXJlIHVzZWQgZm9yIHRyYW5zZm9ybWluZyB0aGUgcnVsZSBzZXQgaW4gc3Vj aCBhIHdheSB0aGF0Cit0aGUgcnVsZXMgcHJvdmlkZWQgYnkgdGhlIHJ1bGVzIGNvbmZpZyBhcmUg ZWFzaWVyIHRvIHdvcmsgd2l0aCAoZm9yIGV4YW1wbGUsCit0cmFuc2Zvcm1pbmcgcnVsZXMgaW50 byBlcXVpdmFsZW50IGZvcm1zKSBvciBtYWtlIHRoZSBydWxlIHNldCBtb3JlIGNvbXBsZXRlCiso ZS5nLiBleHBsaWNpdGx5IGNyZWF0ZSBzZW1hbnRpY2FsbHkgaW1wbGljaXQgcnVsZXMpLgorCitD PEw8PCBSZWdpc3RlcmluZyB0cmFuc2Zvcm1zfC8kY2xhc3MtPnJlZ2lzdGVyX3RyYW5zZm9ybSgu Li4pID4+PiBpcyB0aGUgc2FtZQorYXMgZm9yIHJlZ2lzdGVyaW5nIGNoZWNrcy4gRm9sbG93aW5n IHVwIG9uIHRoZSBleGFtcGxlIGZyb20gdGhhdCBzZWN0aW9uLCB0aGUKK2ZvbGxvd2luZyBleGFt cGxlIHNob3dzIGEgcG9zc2libGUgcnVsZSBwbHVnaW4ncyB0cmFuc2Zvcm0sIHdoaWNoIHJlbW92 ZXMgdGhlCitJPGNvbW1lbnQ+IHByb3BlcnR5IGZyb20gZWFjaCBydWxlOgorCisgICAgX19QQUNL QUdFX18tPnJlZ2lzdGVyX3RyYW5zZm9ybWVyKAorICAgICAgICBzdWIgeworICAgICAgICAgICAg bXkgKCRydWxlcywgJGFyZ3MpID0gQF87CisKKyAgICAgICAgICAgIGZvciBteSAkcnVsZWlkIChr ZXlzICRhcmdzLT57Y3VzdG9tX3J1bGVzfS0+JSopIHsKKyAgICAgICAgICAgICAgICBkZWxldGUg JHJ1bGVzLT57aWRzfS0+eyRydWxlaWR9LT57Y29tbWVudH07CisgICAgICAgICAgICB9CisgICAg ICAgIH0KKyAgICApOworCiA9aGVhZDEgTUVUSE9EUwogCiA9Y3V0CkBAIC0yNDYsMTAgKzI3NCwx MSBAQCBzdWIgc2V0X3J1bGVfZGVmYXVsdHMgOiBwcm90b3R5cGUoJCQpIHsKICAgICB9CiB9CiAK LSMgUnVsZSBjaGVja3MgZGVmaW5pdGlvbiBhbmQgbWV0aG9kcworIyBSdWxlIGNoZWNrcyBhbmQg dHJhbnNmb3JtcyBkZWZpbml0aW9uIGFuZCBtZXRob2RzCiAKIG15ICR0eXBlcyA9IFtdOwogbXkg JGNoZWNrZGVmOworbXkgJHRyYW5zZm9ybWRlZjsKIAogc3ViIHJlZ2lzdGVyIHsKICAgICBteSAo JGNsYXNzKSA9IEBfOwpAQCAtMjc5LDYgKzMwOCwyMyBAQCBzdWIgcmVnaXN0ZXJfY2hlY2sgOiBw cm90b3R5cGUoJCQkKSB7CiAgICAgXTsKIH0KIAorPWhlYWQzICRjbGFzcy0+cmVnaXN0ZXJfdHJh bnNmb3JtKC4uLikKKworPWhlYWQzICRjbGFzcy0+cmVnaXN0ZXJfdHJhbnNmb3JtKCR0cmFuc2Zv cm1fZnVuYykKKworVXNlZCB0byByZWdpc3RlciBydWxlIHRyYW5zZm9ybWVycyBmb3IgYSBydWxl IHBsdWdpbi4KKworPWN1dAorCitzdWIgcmVnaXN0ZXJfdHJhbnNmb3JtIDogcHJvdG90eXBlKCQk KSB7CisgICAgbXkgKCRjbGFzcywgJHRyYW5zZm9ybV9mdW5jKSA9IEBfOworCisgICAgbXkgJHR5 cGUgPSBldmFsIHsgJGNsYXNzLT50eXBlKCkgfTsKKyAgICAkdHlwZSA9ICdnbG9iYWwnIGlmICRA OworCisgICAgcHVzaCAkdHJhbnNmb3JtZGVmLT57JHR5cGV9LT5AKiwgJHRyYW5zZm9ybV9mdW5j OworfQorCiA9aGVhZDMgJGNsYXNzLT5nZXRfcGx1Z2luX2NoZWNrX2FyZ3VtZW50cyguLi4pCiAK ID1oZWFkMyAkY2xhc3MtPmdldF9wbHVnaW5fY2hlY2tfYXJndW1lbnRzKCRydWxlcykKQEAgLTI4 Nyw2ICszMzMsNyBAQCBCPE9QVElPTkFMOj4gQ2FuIGJlIGltcGxlbWVudGVkIGluIHRoZSBJPHJ1 bGUgcGx1Z2luPi4KIAogUmV0dXJucyBhIGhhc2gsIHVzdWFsbHkgc3Vic2V0cyBvZiBydWxlcyBy ZWxldmFudCB0byB0aGUgcGx1Z2luLCB3aGljaCBhcmUKIHBhc3NlZCB0byB0aGUgcGx1Z2luJ3Mg QzxMPDwgcmVnaXN0ZXJlZCBjaGVja3N8LyRjbGFzcy0+cmVnaXN0ZXJfY2hlY2soLi4uKSA+Pj4K K2FuZCBDPEw8PCByZWdpc3RlcmVkIHRyYW5zZm9ybXN8LyRjbGFzcy0+cmVnaXN0ZXJfdHJhbnNm b3JtKC4uLikgPj4+CiBzbyB0aGF0IHRoZSBjcmVhdGlvbiBvZiB0aGVzZSBjYW4gYmUgc2hhcmVk IGluYmV0d2VlbiBydWxlIGNoZWNrCiBpbXBsZW1lbnRhdGlvbnMuCiAKQEAgLTM2MCwxOCArNDA3 LDYgQEAgc3ViIGNoZWNrX2ZlYXNpYmlsaXR5IDogcHJvdG90eXBlKCQkJCkgewogICAgIHJldHVy biAkZ2xvYmFsX2Vycm9yczsKIH0KIAotPWhlYWQzICRjbGFzcy0+cGx1Z2luX3RyYW5zZm9ybSgk cnVsZXMpCi0KLUI8T1BUSU9OQUw6PiBDYW4gYmUgaW1wbGVtZW50ZWQgaW4gdGhlIEk8cnVsZSBw bHVnaW4+LgotCi1Nb2RpZmllcyB0aGUgQzwkcnVsZXM+IHRvIGEgcGx1Z2luLXNwZWNpZmljIGNh bm9uaWNhbCBmb3JtLgotCi09Y3V0Ci0KLXN1YiBwbHVnaW5fdHJhbnNmb3JtIDogcHJvdG90eXBl KCQkKSB7Ci0gICAgbXkgKCRjbGFzcywgJHJ1bGVzKSA9IEBfOwotfQotCiA9aGVhZDMgJGNsYXNz LT50cmFuc2Zvcm0oJHJ1bGVzLCAkbm9kZXMpCiAKIE1vZGlmaWVzIEM8JHJ1bGVzPiB0byBjb250 YWluIG9ubHkgZmVhc2libGUgcnVsZXMuCkBAIC0zODAsNyArNDE1LDkgQEAgQzwkbm9kZXM+IGlz IGEgbGlzdCBvZiB0aGUgY29uZmlndXJlZCBjbHVzdGVyIG5vZGVzLgogCiBUaGlzIGlzIGRvbmUg YnkgcnVubmluZyBhbGwgY2hlY2tzLCB3aGljaCB3ZXJlIHJlZ2lzdGVyZWQgd2l0aAogQzxMPDwg cmVnaXN0ZXJfY2hlY2soKXwvJGNsYXNzLT5yZWdpc3Rlcl9jaGVjayguLi4pID4+PiBhbmQgcmVt b3ZpbmcgYW55Ci1ydWxlLCB3aGljaCBtYWtlcyB0aGUgcnVsZSBzZXQgaW5mZWFzaWJsZS4KK3J1 bGUsIHdoaWNoIG1ha2VzIHRoZSBydWxlIHNldCBpbmZlYXNpYmxlLCBhbmQgYWZ0ZXJ3YXJkcyBy dW5uaW5nIGFsbAordHJhbnNmb3JtcyBvbiB0aGUgZmVhc2libGUgcnVsZSBzZXQsIHdoaWNoIHdl cmUgcmVnaXN0ZXJlZCB3aXRoCitDPEw8PCByZWdpc3Rlcl90cmFuc2Zvcm0oKXwvJGNsYXNzLT5y ZWdpc3Rlcl90cmFuc2Zvcm0oLi4uKSA+Pj4uCiAKIFJldHVybnMgYSBsaXN0IG9mIG1lc3NhZ2Vz IHdpdGggdGhlIHJlYXNvbnMgd2h5IHJ1bGVzIHdlcmUgcmVtb3ZlZC4KIApAQCAtNDA1LDEzICs0 NDIsMTMgQEAgc3ViIHRyYW5zZm9ybSA6IHByb3RvdHlwZSgkJCQpIHsKICAgICAgICAgfQogICAg IH0KIAotICAgIGZvciBteSAkdHlwZSAoQCR0eXBlcykgewotICAgICAgICBteSAkcGx1Z2luID0g JGNsYXNzLT5sb29rdXAoJHR5cGUpOwotICAgICAgICBldmFsIHsgJHBsdWdpbi0+cGx1Z2luX3Ry YW5zZm9ybSgkcnVsZXMpIH07Ci0gICAgICAgIG5leHQgaWYgJEA7ICMgcGx1Z2luIGRvZXNuJ3Qg aW1wbGVtZW50IHBsdWdpbl90cmFuc2Zvcm0oLi4uKQotICAgIH0KKyAgICBmb3IgbXkgJHR5cGUg KEAkdHlwZXMsICdnbG9iYWwnKSB7CisgICAgICAgIGZvciBteSAkdHJhbnNmb3JtICgkdHJhbnNm b3JtZGVmLT57JHR5cGV9LT5AKikgeworICAgICAgICAgICAgbXkgJGdsb2JhbF9hcmdzID0gJGNs YXNzLT5nZXRfY2hlY2tfYXJndW1lbnRzKCRydWxlcyk7CiAKLSAgICAkY2xhc3MtPmdsb2JhbF90 cmFuc2Zvcm0oJHJ1bGVzKTsKKyAgICAgICAgICAgICR0cmFuc2Zvcm0tPigkcnVsZXMsICRnbG9i YWxfYXJncyk7CisgICAgICAgIH0KKyAgICB9CiAKICAgICByZXR1cm4gJG1lc3NhZ2VzOwogfQpA QCAtNzUwLDE2ICs3ODcsMTQgQEAgc3ViIGNyZWF0ZV9pbXBsaWNpdF9wb3NpdGl2ZV9yZXNvdXJj ZV9hZmZpbml0eV9ub2RlX2FmZmluaXR5X3J1bGVzIHsKICAgICB9CiB9CiAKLXN1YiBnbG9iYWxf dHJhbnNmb3JtIHsKLSAgICBteSAoJGNsYXNzLCAkcnVsZXMpID0gQF87Ci0KLSAgICBteSAkYXJn cyA9ICRjbGFzcy0+Z2V0X2NoZWNrX2FyZ3VtZW50cygkcnVsZXMpOworX19QQUNLQUdFX18tPnJl Z2lzdGVyX3RyYW5zZm9ybShzdWIgeworICAgIG15ICgkcnVsZXMsICRhcmdzKSA9IEBfOwogCiAg ICAgY3JlYXRlX2ltcGxpY2l0X3Bvc2l0aXZlX3Jlc291cmNlX2FmZmluaXR5X25vZGVfYWZmaW5p dHlfcnVsZXMoCiAgICAgICAgICRydWxlcywKICAgICAgICAgJGFyZ3MtPntwb3NpdGl2ZV9ydWxl c30sCiAgICAgICAgICRhcmdzLT57bm9kZV9hZmZpbml0eV9ydWxlc30sCiAgICAgKTsKLX0KK30p OwogCiAxOwpkaWZmIC0tZ2l0IGEvc3JjL1BWRS9IQS9SdWxlcy9SZXNvdXJjZUFmZmluaXR5LnBt IGIvc3JjL1BWRS9IQS9SdWxlcy9SZXNvdXJjZUFmZmluaXR5LnBtCmluZGV4IDUyZTNjNDdiLi40 YTZlODYyNyAxMDA2NDQKLS0tIGEvc3JjL1BWRS9IQS9SdWxlcy9SZXNvdXJjZUFmZmluaXR5LnBt CisrKyBiL3NyYy9QVkUvSEEvUnVsZXMvUmVzb3VyY2VBZmZpbml0eS5wbQpAQCAtMjk5LDYgKzI5 OSwxMiBAQCBzdWIgbWVyZ2VfY29ubmVjdGVkX3Bvc2l0aXZlX3Jlc291cmNlX2FmZmluaXR5X3J1 bGVzIHsKICAgICB9CiB9CiAKK19fUEFDS0FHRV9fLT5yZWdpc3Rlcl90cmFuc2Zvcm0oc3ViIHsK KyAgICBteSAoJHJ1bGVzLCAkYXJncykgPSBAXzsKKworICAgIG1lcmdlX2Nvbm5lY3RlZF9wb3Np dGl2ZV9yZXNvdXJjZV9hZmZpbml0eV9ydWxlcygkcnVsZXMsICRhcmdzLT57cG9zaXRpdmVfcnVs ZXN9KTsKK30pOworCiAjIHJldHJpZXZlIHRoZSBleGlzdGluZyBuZWdhdGl2ZSByZXNvdXJjZSBh ZmZpbml0eSByZWxhdGlvbnNoaXBzIGZvciBhbnkgb2YgdGhlCiAjICRyZXNvdXJjZXMgaW4gdGhl ICRuZWdhdGl2ZV9ydWxlczsgcmV0dXJucyBhIGhhc2ggbWFwLCB3aGVyZSB0aGUga2V5cyBhcmUg dGhlCiAjIHJlc291cmNlcyB0byBiZSBzZXBhcmF0ZWQgZnJvbSBhbmQgdGhlIHZhbHVlcyBhcmUg c3Vic2V0cyBvZiB0aGUgJHJlc291cmNlcwpAQCAtMzgyLDIzICszODgsMTcgQEAgc3ViIGNyZWF0 ZV9pbXBsaWNpdF9uZWdhdGl2ZV9yZXNvdXJjZV9hZmZpbml0eV9ydWxlcyB7CiAgICAgfQogfQog Ci1zdWIgcGx1Z2luX3RyYW5zZm9ybSB7Ci0gICAgbXkgKCRjbGFzcywgJHJ1bGVzKSA9IEBfOwor IyBtdXN0IGNvbWUgYWZ0ZXIgbWVyZ2luZyBjb25uZWN0ZWQgcG9zaXRpdmUgcnVsZXMsIGJlY2F1 c2Ugb2YgdGhpcyBoZWxwZXJzCisjIGFzc3VtcHRpb25zIGFib3V0IHJlc291cmNlIHNldHMgYW5k IGludGVyLXJlc291cmNlIGFmZmluaXR5IGNvbnNpc3RlbmN5CitfX1BBQ0tBR0VfXy0+cmVnaXN0 ZXJfdHJhbnNmb3JtKHN1YiB7CisgICAgbXkgKCRydWxlcywgJGFyZ3MpID0gQF87CiAKLSAgICBt eSAkYXJncyA9ICRjbGFzcy0+Z2V0X3BsdWdpbl9jaGVja19hcmd1bWVudHMoJHJ1bGVzKTsKLQot ICAgIG1lcmdlX2Nvbm5lY3RlZF9wb3NpdGl2ZV9yZXNvdXJjZV9hZmZpbml0eV9ydWxlcygkcnVs ZXMsICRhcmdzLT57cG9zaXRpdmVfcnVsZXN9KTsKLQotICAgICRhcmdzID0gJGNsYXNzLT5nZXRf cGx1Z2luX2NoZWNrX2FyZ3VtZW50cygkcnVsZXMpOwotCi0gICAgIyBtdXN0IGNvbWUgYWZ0ZXIg bWVyZ2luZyBjb25uZWN0ZWQgcG9zaXRpdmUgcnVsZXMsIGJlY2F1c2Ugb2YgdGhpcyBoZWxwZXJz Ci0gICAgIyBhc3N1bXB0aW9ucyBhYm91dCByZXNvdXJjZSBzZXRzIGFuZCBpbnRlci1yZXNvdXJj ZSBhZmZpbml0eSBjb25zaXN0ZW5jeQogICAgIGNyZWF0ZV9pbXBsaWNpdF9uZWdhdGl2ZV9yZXNv dXJjZV9hZmZpbml0eV9ydWxlcygKICAgICAgICAgJHJ1bGVzLAogICAgICAgICAkYXJncy0+e3Bv c2l0aXZlX3J1bGVzfSwKICAgICAgICAgJGFyZ3MtPntuZWdhdGl2ZV9ydWxlc30sCiAgICAgKTsK LX0KK30pOwogCiA9aGVhZDEgUkVTT1VSQ0UgQUZGSU5JVFkgUlVMRSBIRUxQRVJTCiAKLS0gCjIu NDcuMwoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpw dmUtZGV2ZWwgbWFpbGluZyBsaXN0CnB2ZS1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQpodHRwczov L2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wdmUtZGV2ZWwK