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 C043E1FF15E for ; Mon, 24 Nov 2025 16:33:28 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id D7B43512; Mon, 24 Nov 2025 16:33:38 +0100 (CET) From: Samuel Rufinatscha To: pbs-devel@lists.proxmox.com Date: Mon, 24 Nov 2025 16:33:19 +0100 Message-ID: <20251124153328.239666-3-s.rufinatscha@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251124153328.239666-1-s.rufinatscha@proxmox.com> References: <20251124153328.239666-1-s.rufinatscha@proxmox.com> MIME-Version: 1.0 X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1763998378353 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.135 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 POISEN_SPAM_PILL 0.1 Meta: its spam POISEN_SPAM_PILL_1 0.1 random spam to be learned in bayes POISEN_SPAM_PILL_3 0.1 random spam to be learned in bayes 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-backup v4 2/4] partial fix #6049: datastore: impl ConfigVersionCache fast path for lookups X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox Backup Server development discussion Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" UmVwZWF0ZWQgL3N0YXR1cyByZXF1ZXN0cyBjYXVzZWQgbG9va3VwX2RhdGFzdG9yZSgpIHRvIHJl LXJlYWQgYW5kCnBhcnNlIGRhdGFzdG9yZS5jZmcgb24gZXZlcnkgY2FsbC4gVGhlIGlzc3VlIHdh cyBtZW50aW9uZWQgaW4gcmVwb3J0CiM2MDQ5IFsxXS4gY2FyZ28tZmxhbWVncmFwaCBbMl0gY29u ZmlybWVkIHRoYXQgdGhlIGhvdCBwYXRoIGlzCmRvbWluYXRlZCBieSBwYnNfY29uZmlnOjpkYXRh c3RvcmU6OmNvbmZpZygpIChjb25maWcgcGFyc2luZykuCgpUaGlzIHBhdGNoIGltcGxlbWVudHMg Y2FjaGluZyBvZiB0aGUgZ2xvYmFsIGRhdGFzdG9yZS5jZmcgdXNpbmcgdGhlCmdlbmVyYXRpb24g bnVtYmVycyBmcm9tIHRoZSBzaGFyZWQgY29uZmlnIHZlcnNpb24gY2FjaGUuIEl0IGNhY2hlcyB0 aGUKZGF0YXN0b3JlLmNmZyBhbG9uZyB3aXRoIHRoZSBnZW5lcmF0aW9uIG51bWJlciBhbmQsIHdo ZW4gYSBzdWJzZXF1ZW50Cmxvb2t1cCBzZWVzIHRoZSBzYW1lIGdlbmVyYXRpb24sIGl0IHJldXNl cyB0aGUgY2FjaGVkIGNvbmZpZyB3aXRob3V0CnJlLXJlYWRpbmcgaXQgZnJvbSBkaXNrLiBJZiB0 aGUgZ2VuZXJhdGlvbiBkaWZmZXJzCihvciB0aGUgY2FjaGUgaXMgdW5hdmFpbGFibGUpLCB0aGUg Y29uZmlnIGlzIHJlLXJlYWQgZnJvbSBkaXNrLgpJZiBgdXBkYXRlX2NhY2hlID0gdHJ1ZWAsIHRo ZSBuZXcgY29uZmlnIGFuZCBjdXJyZW50IGdlbmVyYXRpb24gYXJlCnBlcnNpc3RlZCBpbiB0aGUg Y2FjaGUuIEluIHRoaXMgY2FzZSwgY2FsbGVycyBtdXN0IGhvbGQgdGhlIGRhdGFzdG9yZQpjb25m aWcgbG9jayB0byBhdm9pZCByYWNpbmcgd2l0aCBjb25jdXJyZW50IGNvbmZpZyBjaGFuZ2VzLgpJ ZiBgdXBkYXRlX2NhY2hlYCBpcyBgZmFsc2VgIGFuZCBnZW5lcmF0aW9uIGRpZCBub3QgbWF0Y2gs IHRoZSBmcmVzaGx5CnJlYWQgY29uZmlnIGlzIHJldHVybmVkIGJ1dCB0aGUgY2FjaGUgaXMgbGVm dCB1bmNoYW5nZWQuIElmCmBDb25maWdWZXJzaW9uQ2FjaGVgIGlzIG5vdCBhdmFpbGFibGUsIHRo ZSBjb25maWcgaXMgYWx3YXlzIHJlYWQgZnJvbQpkaXNrIGFuZCBgTm9uZWAgaXMgcmV0dXJuZWQg YXMgZ2VuZXJhdGlvbi4KCkJlaGF2aW9yYWwgbm90ZXMKCi0gVGhlIGdlbmVyYXRpb24gaXMgYnVt cGVkIHZpYSB0aGUgZXhpc3Rpbmcgc2F2ZV9jb25maWcoKSBwYXRoLCBzbwogIEFQSS1kcml2ZW4g Y29uZmlnIGNoYW5nZXMgYXJlIGRldGVjdGVkIGltbWVkaWF0ZWx5LgotIE1hbnVhbCBlZGl0cyB0 byBkYXRhc3RvcmUuY2ZnIGFyZSBub3QgZGV0ZWN0ZWQ7IHRoaXMgaXMgY292ZXJlZCBpbiBhCiAg ZGVkaWNhdGVkIHBhdGNoIGluIHRoaXMgc2VyaWVzLgotIERhdGFTdG9yZTo6ZHJvcCBzdGlsbCBw ZXJmb3JtcyBhIGNvbmZpZyByZWFkIG9uIHRoZSBjb21tb24gcGF0aDsKICBhbHNvIGNvdmVyZWQg aW4gYSBkZWRpY2F0ZWQgcGF0Y2ggaW4gdGhpcyBzZXJpZXMuCgpMaW5rcwoKWzFdIEJ1Z3ppbGxh OiBodHRwczovL2J1Z3ppbGxhLnByb3htb3guY29tL3Nob3dfYnVnLmNnaT9pZD02MDQ5ClsyXSBj YXJnby1mbGFtZWdyYXBoOiBodHRwczovL2dpdGh1Yi5jb20vZmxhbWVncmFwaC1ycy9mbGFtZWdy YXBoCgpGaXhlczogIzYwNDkKU2lnbmVkLW9mZi1ieTogU2FtdWVsIFJ1ZmluYXRzY2hhIDxzLnJ1 ZmluYXRzY2hhQHByb3htb3guY29tPgotLS0KQ2hhbmdlczoKCkZyb20gdjEg4oaSIHYyLCB0aGFu a3MgQEZhYmlhbgotIE1vdmVkIHRoZSBDb25maWdWZXJzaW9uQ2FjaGUgY2hhbmdlcyBpbnRvIGl0 cyBvd24gcGF0Y2guCi0gSW50cm9kdWNlZCB0aGUgZ2xvYmFsIHN0YXRpYyBEQVRBU1RPUkVfQ09O RklHX0NBQ0hFIHRvIHN0b3JlIHRoZQpmdWxseSBwYXJzZWQgZGF0YXN0b3JlLmNmZyBpbnN0ZWFk LCBhbG9uZyB3aXRoIGl0cyBnZW5lcmF0aW9uIG51bWJlci4KICBJbnRyb2R1Y2VkIERhdGFzdG9y ZUNvbmZpZ0NhY2hlIHN0cnVjdCB0byBob2xkIGJvdGguCi0gUmVtb3ZlZCBhbmQgcmVwbGFjZWQg dGhlIENhY2hlZERhdGFzdG9yZUNvbmZpZ1RhZyBmaWVsZCBvZgogIERhdGFTdG9yZUltcGwgd2l0 aCBhIGdlbmVyYXRpb24gbnVtYmVyIGZpZWxkIG9ubHkgKE9wdGlvbjx1c2l6ZT4pCiAgdG8gdmFs aWRhdGUgRGF0YVN0b3JlSW1wbCByZXVzZS4KLSBBZGRlZCBEYXRhU3RvcmU6OmRhdGFzdG9yZV9z ZWN0aW9uX2NvbmZpZ19jYWNoZWQoKSBoZWxwZXIgZnVuY3Rpb24KICB0byBlbmNhcHN1bGF0ZSB0 aGUgY2FjaGluZyBsb2dpYyBhbmQgc2ltcGxpZnkgcmV1c2UuCi0gTW9kaWZpZWQgRGF0YVN0b3Jl Ojpsb29rdXBfZGF0YXN0b3JlKCkgdG8gdXNlIHRoZSBuZXcgaGVscGVyLgoKRnJvbSB2MiDihpIg djMKTm8gY2hhbmdlcwoKRnJvbSB2MyDihpIgdjQsIHRoYW5rcyBARmFiaWFuCi0gUmVzdHJ1Y3R1 cmVkIHRoZSB2ZXJzaW9uIGNhY2hlIGNoZWNrcyBpbgogIGRhdGFzdG9yZV9zZWN0aW9uX2NvbmZp Z19jYWNoZWQoKSwgdG8gc2ltcGxpZnkgdGhlIGxvZ2ljLgotIEFkZGVkIHVwZGF0ZV9jYWNoZSBw YXJhbWV0ZXIgdG8gZGF0YXN0b3JlX3NlY3Rpb25fY29uZmlnX2NhY2hlZCgpIHRvCiAgY29udHJv bCBjYWNoZSB1cGRhdGVzLgoKIHBicy1kYXRhc3RvcmUvQ2FyZ28udG9tbCAgICAgICB8ICAgMSAr CiBwYnMtZGF0YXN0b3JlL3NyYy9kYXRhc3RvcmUucnMgfCAxMzggKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDEwNSBpbnNlcnRpb25zKCspLCAzNCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9wYnMtZGF0YXN0b3JlL0NhcmdvLnRvbWwgYi9wYnMt ZGF0YXN0b3JlL0NhcmdvLnRvbWwKaW5kZXggOGNlOTMwYTkuLjQyZjQ5YTdiIDEwMDY0NAotLS0g YS9wYnMtZGF0YXN0b3JlL0NhcmdvLnRvbWwKKysrIGIvcGJzLWRhdGFzdG9yZS9DYXJnby50b21s CkBAIC00MCw2ICs0MCw3IEBAIHByb3htb3gtaW8ud29ya3NwYWNlID0gdHJ1ZQogcHJveG1veC1s YW5nLndvcmtzcGFjZT10cnVlCiBwcm94bW94LXMzLWNsaWVudCA9IHsgd29ya3NwYWNlID0gdHJ1 ZSwgZmVhdHVyZXMgPSBbICJpbXBsIiBdIH0KIHByb3htb3gtc2NoZW1hID0geyB3b3Jrc3BhY2Ug PSB0cnVlLCBmZWF0dXJlcyA9IFsgImFwaS1tYWNybyIgXSB9Citwcm94bW94LXNlY3Rpb24tY29u ZmlnLndvcmtzcGFjZSA9IHRydWUKIHByb3htb3gtc2VyZGUgPSB7IHdvcmtzcGFjZSA9IHRydWUs IGZlYXR1cmVzID0gWyAic2VyZGVfanNvbiIgXSB9CiBwcm94bW94LXN5cy53b3Jrc3BhY2UgPSB0 cnVlCiBwcm94bW94LXN5c3RlbWQud29ya3NwYWNlID0gdHJ1ZQpkaWZmIC0tZ2l0IGEvcGJzLWRh dGFzdG9yZS9zcmMvZGF0YXN0b3JlLnJzIGIvcGJzLWRhdGFzdG9yZS9zcmMvZGF0YXN0b3JlLnJz CmluZGV4IDBhNTE3OTIzLi4xMWUxNmVhZiAxMDA2NDQKLS0tIGEvcGJzLWRhdGFzdG9yZS9zcmMv ZGF0YXN0b3JlLnJzCisrKyBiL3Bicy1kYXRhc3RvcmUvc3JjL2RhdGFzdG9yZS5ycwpAQCAtMzIs NyArMzIsOCBAQCB1c2UgcGJzX2FwaV90eXBlczo6ewogICAgIE1haW50ZW5hbmNlVHlwZSwgT3Bl cmF0aW9uLCBVUElELAogfTsKIHVzZSBwYnNfY29uZmlnOjpzMzo6UzNfQ0ZHX1RZUEVfSUQ7Ci11 c2UgcGJzX2NvbmZpZzo6QmFja3VwTG9ja0d1YXJkOwordXNlIHBic19jb25maWc6OntCYWNrdXBM b2NrR3VhcmQsIENvbmZpZ1ZlcnNpb25DYWNoZX07Cit1c2UgcHJveG1veF9zZWN0aW9uX2NvbmZp Zzo6U2VjdGlvbkNvbmZpZ0RhdGE7CiAKIHVzZSBjcmF0ZTo6YmFja3VwX2luZm86OnsKICAgICBC YWNrdXBEaXIsIEJhY2t1cEdyb3VwLCBCYWNrdXBJbmZvLCBPTERfTE9DS0lORywgUFJPVEVDVEVE X01BUktFUl9GSUxFTkFNRSwKQEAgLTQ2LDYgKzQ3LDE3IEBAIHVzZSBjcmF0ZTo6czM6OlMzX0NP TlRFTlRfUFJFRklYOwogdXNlIGNyYXRlOjp0YXNrX3RyYWNraW5nOjp7c2VsZiwgdXBkYXRlX2Fj dGl2ZV9vcGVyYXRpb25zfTsKIHVzZSBjcmF0ZTo6e0RhdGFCbG9iLCBMb2NhbERhdGFzdG9yZUxy dUNhY2hlfTsKIAorLy8gQ2FjaGUgZm9yIGZ1bGx5IHBhcnNlZCBkYXRhc3RvcmUuY2ZnCitzdHJ1 Y3QgRGF0YXN0b3JlQ29uZmlnQ2FjaGUgeworICAgIC8vIFBhcnNlZCBkYXRhc3RvcmUuY2ZnIGZp bGUKKyAgICBjb25maWc6IEFyYzxTZWN0aW9uQ29uZmlnRGF0YT4sCisgICAgLy8gR2VuZXJhdGlv biBudW1iZXIgZnJvbSBDb25maWdWZXJzaW9uQ2FjaGUKKyAgICBsYXN0X2dlbmVyYXRpb246IHVz aXplLAorfQorCitzdGF0aWMgREFUQVNUT1JFX0NPTkZJR19DQUNIRTogTGF6eUxvY2s8TXV0ZXg8 T3B0aW9uPERhdGFzdG9yZUNvbmZpZ0NhY2hlPj4+ID0KKyAgICBMYXp5TG9jazo6bmV3KHx8IE11 dGV4OjpuZXcoTm9uZSkpOworCiBzdGF0aWMgREFUQVNUT1JFX01BUDogTGF6eUxvY2s8TXV0ZXg8 SGFzaE1hcDxTdHJpbmcsIEFyYzxEYXRhU3RvcmVJbXBsPj4+PiA9CiAgICAgTGF6eUxvY2s6Om5l dyh8fCBNdXRleDo6bmV3KEhhc2hNYXA6Om5ldygpKSk7CiAKQEAgLTE0MiwxMCArMTU0LDEyIEBA IHB1YiBzdHJ1Y3QgRGF0YVN0b3JlSW1wbCB7CiAgICAgbGFzdF9nY19zdGF0dXM6IE11dGV4PEdh cmJhZ2VDb2xsZWN0aW9uU3RhdHVzPiwKICAgICB2ZXJpZnlfbmV3OiBib29sLAogICAgIGNodW5r X29yZGVyOiBDaHVua09yZGVyLAotICAgIGxhc3RfZGlnZXN0OiBPcHRpb248W3U4OyAzMl0+LAog ICAgIHN5bmNfbGV2ZWw6IERhdGFzdG9yZUZTeW5jTGV2ZWwsCiAgICAgYmFja2VuZF9jb25maWc6 IERhdGFzdG9yZUJhY2tlbmRDb25maWcsCiAgICAgbHJ1X3N0b3JlX2NhY2hpbmc6IE9wdGlvbjxM b2NhbERhdGFzdG9yZUxydUNhY2hlPiwKKyAgICAvLy8gRGF0YXN0b3JlIGdlbmVyYXRpb24gbnVt YmVyIGZyb20gYENvbmZpZ1ZlcnNpb25DYWNoZWAgYXQgY3JlYXRpb24gdGltZSwgdXNlZCB0bwor ICAgIC8vLyB2YWxpZGF0ZSByZXVzZSBvZiB0aGlzIGNhY2hlZCBgRGF0YVN0b3JlSW1wbGAuCisg ICAgY29uZmlnX2dlbmVyYXRpb246IE9wdGlvbjx1c2l6ZT4sCiB9CiAKIGltcGwgRGF0YVN0b3Jl SW1wbCB7CkBAIC0xNTgsMTAgKzE3MiwxMCBAQCBpbXBsIERhdGFTdG9yZUltcGwgewogICAgICAg ICAgICAgbGFzdF9nY19zdGF0dXM6IE11dGV4OjpuZXcoR2FyYmFnZUNvbGxlY3Rpb25TdGF0dXM6 OmRlZmF1bHQoKSksCiAgICAgICAgICAgICB2ZXJpZnlfbmV3OiBmYWxzZSwKICAgICAgICAgICAg IGNodW5rX29yZGVyOiBEZWZhdWx0OjpkZWZhdWx0KCksCi0gICAgICAgICAgICBsYXN0X2RpZ2Vz dDogTm9uZSwKICAgICAgICAgICAgIHN5bmNfbGV2ZWw6IERlZmF1bHQ6OmRlZmF1bHQoKSwKICAg ICAgICAgICAgIGJhY2tlbmRfY29uZmlnOiBEZWZhdWx0OjpkZWZhdWx0KCksCiAgICAgICAgICAg ICBscnVfc3RvcmVfY2FjaGluZzogTm9uZSwKKyAgICAgICAgICAgIGNvbmZpZ19nZW5lcmF0aW9u OiBOb25lLAogICAgICAgICB9KQogICAgIH0KIH0KQEAgLTI1Niw2ICsyNzAsNTUgQEAgaW1wbCBE YXRhc3RvcmVCYWNrZW5kIHsKICAgICB9CiB9CiAKKy8vLyBSZXR1cm5zIHRoZSBwYXJzZWQgZGF0 YXN0b3JlIGNvbmZpZyAoYGRhdGFzdG9yZS5jZmdgKSBhbmQgaXRzCisvLy8gZ2VuZXJhdGlvbi4K Ky8vLworLy8vIFVzZXMgYENvbmZpZ1ZlcnNpb25DYWNoZWAgdG8gZGV0ZWN0IHN0YWxlIGVudHJp ZXM6CisvLy8gLSBJZiB0aGUgY2FjaGVkIGdlbmVyYXRpb24gbWF0Y2hlcyB0aGUgY3VycmVudCBn ZW5lcmF0aW9uLCB0aGUKKy8vLyAgIGNhY2hlZCBjb25maWcgaXMgcmV0dXJuZWQuCisvLy8gLSBP dGhlcndpc2UgdGhlIGNvbmZpZyBpcyByZS1yZWFkIGZyb20gZGlzay4gSWYgYHVwZGF0ZV9jYWNo ZWAgaXMKKy8vLyAgIGB0cnVlYCwgdGhlIG5ldyBjb25maWcgYW5kIGN1cnJlbnQgZ2VuZXJhdGlv biBhcmUgc3RvcmVkIGluIHRoZQorLy8vICAgY2FjaGUuIENhbGxlcnMgdGhhdCBzZXQgYHVwZGF0 ZV9jYWNoZSA9IHRydWVgIG11c3QgaG9sZCB0aGUKKy8vLyAgIGRhdGFzdG9yZSBjb25maWcgbG9j ayB0byBhdm9pZCByYWNpbmcgd2l0aCBjb25jdXJyZW50IGNvbmZpZworLy8vICAgY2hhbmdlcy4K Ky8vLyAtIElmIGB1cGRhdGVfY2FjaGVgIGlzIGBmYWxzZWAsIHRoZSBmcmVzaGx5IHJlYWQgY29u ZmlnIGlzIHJldHVybmVkCisvLy8gICBidXQgdGhlIGNhY2hlIGlzIGxlZnQgdW5jaGFuZ2VkLgor Ly8vCisvLy8gSWYgYENvbmZpZ1ZlcnNpb25DYWNoZWAgaXMgbm90IGF2YWlsYWJsZSwgdGhlIGNv bmZpZyBpcyBhbHdheXMgcmVhZAorLy8vIGZyb20gZGlzayBhbmQgYE5vbmVgIGlzIHJldHVybmVk IGFzIHRoZSBnZW5lcmF0aW9uLgorZm4gZGF0YXN0b3JlX3NlY3Rpb25fY29uZmlnX2NhY2hlZCgK KyAgICB1cGRhdGVfY2FjaGU6IGJvb2wsCispIC0+IFJlc3VsdDwoQXJjPFNlY3Rpb25Db25maWdE YXRhPiwgT3B0aW9uPHVzaXplPiksIEVycm9yPiB7CisgICAgbGV0IG11dCBjb25maWdfY2FjaGUg PSBEQVRBU1RPUkVfQ09ORklHX0NBQ0hFLmxvY2soKS51bndyYXAoKTsKKworICAgIGlmIGxldCBP ayh2ZXJzaW9uX2NhY2hlKSA9IENvbmZpZ1ZlcnNpb25DYWNoZTo6bmV3KCkgeworICAgICAgICBs ZXQgY3VycmVudF9nZW4gPSB2ZXJzaW9uX2NhY2hlLmRhdGFzdG9yZV9nZW5lcmF0aW9uKCk7Cisg ICAgICAgIGlmIGxldCBTb21lKGNhY2hlZCkgPSBjb25maWdfY2FjaGUuYXNfcmVmKCkgeworICAg ICAgICAgICAgLy8gRmFzdCBwYXRoOiByZS11c2UgY2FjaGVkIGRhdGFzdG9yZS5jZmcKKyAgICAg ICAgICAgIGlmIGNhY2hlZC5sYXN0X2dlbmVyYXRpb24gPT0gY3VycmVudF9nZW4geworICAgICAg ICAgICAgICAgIHJldHVybiBPaygoY2FjaGVkLmNvbmZpZy5jbG9uZSgpLCBTb21lKGNhY2hlZC5s YXN0X2dlbmVyYXRpb24pKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLy8g U2xvdyBwYXRoOiByZS1yZWFkIGRhdGFzdG9yZS5jZmcKKyAgICAgICAgbGV0IChjb25maWdfcmF3 LCBfZGlnZXN0KSA9IHBic19jb25maWc6OmRhdGFzdG9yZTo6Y29uZmlnKCk/OworICAgICAgICBs ZXQgY29uZmlnID0gQXJjOjpuZXcoY29uZmlnX3Jhdyk7CisKKyAgICAgICAgaWYgdXBkYXRlX2Nh Y2hlIHsKKyAgICAgICAgICAgICpjb25maWdfY2FjaGUgPSBTb21lKERhdGFzdG9yZUNvbmZpZ0Nh Y2hlIHsKKyAgICAgICAgICAgICAgICBjb25maWc6IGNvbmZpZy5jbG9uZSgpLAorICAgICAgICAg ICAgICAgIGxhc3RfZ2VuZXJhdGlvbjogY3VycmVudF9nZW4sCisgICAgICAgICAgICB9KTsKKyAg ICAgICAgfQorCisgICAgICAgIE9rKChjb25maWcsIFNvbWUoY3VycmVudF9nZW4pKSkKKyAgICB9 IGVsc2UgeworICAgICAgICAvLyBGYWxsYmFjayBwYXRoLCBubyBjb25maWcgdmVyc2lvbiBjYWNo ZTogcmVhZCBkYXRhc3RvcmUuY2ZnIGFuZCByZXR1cm4gTm9uZSBhcyBnZW5lcmF0aW9uCisgICAg ICAgICpjb25maWdfY2FjaGUgPSBOb25lOworICAgICAgICBsZXQgKGNvbmZpZ19yYXcsIF9kaWdl c3QpID0gcGJzX2NvbmZpZzo6ZGF0YXN0b3JlOjpjb25maWcoKT87CisgICAgICAgIE9rKChBcmM6 Om5ldyhjb25maWdfcmF3KSwgTm9uZSkpCisgICAgfQorfQorCiBpbXBsIERhdGFTdG9yZSB7CiAg ICAgLy8gVGhpcyBvbmUganVzdCBwYW5pY3Mgb24gZXZlcnl0aGluZwogICAgICNbZG9jKGhpZGRl bildCkBAIC0zMjcsNTYgKzM5MCw2MyBAQCBpbXBsIERhdGFTdG9yZSB7CiAgICAgICAgIG5hbWU6 ICZzdHIsCiAgICAgICAgIG9wZXJhdGlvbjogT3B0aW9uPE9wZXJhdGlvbj4sCiAgICAgKSAtPiBS ZXN1bHQ8QXJjPERhdGFTdG9yZT4sIEVycm9yPiB7Ci0gICAgICAgIC8vIEF2b2lkIFRPQ1RPVSBi ZXR3ZWVuIGNoZWNraW5nIG1haW50ZW5hbmNlIG1vZGUgYW5kIHVwZGF0aW5nIGFjdGl2ZSBvcGVy YXRpb24gY291bnRlciwgYXMKLSAgICAgICAgLy8gd2UgdXNlIGl0IHRvIGRlY2lkZSB3aGV0aGVy IGl0IGlzIG9rYXkgdG8gZGVsZXRlIHRoZSBkYXRhc3RvcmUuCisgICAgICAgIC8vIEF2b2lkIFRP Q1RPVSBiZXR3ZWVuIGNoZWNraW5nIG1haW50ZW5hbmNlIG1vZGUgYW5kIHVwZGF0aW5nIGFjdGl2 ZSBvcGVyYXRpb25zLgogICAgICAgICBsZXQgX2NvbmZpZ19sb2NrID0gcGJzX2NvbmZpZzo6ZGF0 YXN0b3JlOjpsb2NrX2NvbmZpZygpPzsKIAotICAgICAgICAvLyB3ZSBjb3VsZCB1c2UgdGhlIENv bmZpZ1ZlcnNpb25DYWNoZSdzIGdlbmVyYXRpb24gZm9yIHN0YWxlbmVzcyBkZXRlY3Rpb24sIGJ1 dCAgd2UgbG9hZAotICAgICAgICAvLyB0aGUgY29uZmlnIGFueXdheSAtPiBqdXN0IHVzZSBkaWdl c3QsIGFkZGl0aW9uYWwgYmVuZWZpdDogbWFudWFsIGNoYW5nZXMgZ2V0IGRldGVjdGVkCi0gICAg ICAgIGxldCAoY29uZmlnLCBkaWdlc3QpID0gcGJzX2NvbmZpZzo6ZGF0YXN0b3JlOjpjb25maWco KT87Ci0gICAgICAgIGxldCBjb25maWc6IERhdGFTdG9yZUNvbmZpZyA9IGNvbmZpZy5sb29rdXAo ImRhdGFzdG9yZSIsIG5hbWUpPzsKKyAgICAgICAgLy8gR2V0IHRoZSBjdXJyZW50IGRhdGFzdG9y ZS5jZmcgZ2VuZXJhdGlvbiBudW1iZXIgYW5kIGNhY2hlZCBjb25maWcKKyAgICAgICAgbGV0IChz ZWN0aW9uX2NvbmZpZywgZ2VuX251bSkgPSBkYXRhc3RvcmVfc2VjdGlvbl9jb25maWdfY2FjaGVk KHRydWUpPzsKKworICAgICAgICBsZXQgZGF0YXN0b3JlX2NmZzogRGF0YVN0b3JlQ29uZmlnID0g c2VjdGlvbl9jb25maWcubG9va3VwKCJkYXRhc3RvcmUiLCBuYW1lKT87CisgICAgICAgIGxldCBt YWludGVuYW5jZV9tb2RlID0gZGF0YXN0b3JlX2NmZy5nZXRfbWFpbnRlbmFuY2VfbW9kZSgpOwor ICAgICAgICBsZXQgbW91bnRfc3RhdHVzID0gZ2V0X2RhdGFzdG9yZV9tb3VudF9zdGF0dXMoJmRh dGFzdG9yZV9jZmcpOwogCi0gICAgICAgIGlmIGxldCBTb21lKG1haW50ZW5hbmNlX21vZGUpID0g Y29uZmlnLmdldF9tYWludGVuYW5jZV9tb2RlKCkgewotICAgICAgICAgICAgaWYgbGV0IEVycihl cnJvcikgPSBtYWludGVuYW5jZV9tb2RlLmNoZWNrKG9wZXJhdGlvbikgeworICAgICAgICBpZiBs ZXQgU29tZShtbSkgPSAmbWFpbnRlbmFuY2VfbW9kZSB7CisgICAgICAgICAgICBpZiBsZXQgRXJy KGVycm9yKSA9IG1tLmNoZWNrKG9wZXJhdGlvbi5jbG9uZSgpKSB7CiAgICAgICAgICAgICAgICAg YmFpbCEoImRhdGFzdG9yZSAne25hbWV9JyBpcyB1bmF2YWlsYWJsZToge2Vycm9yfSIpOwogICAg ICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgZ2V0X2RhdGFzdG9yZV9tb3VudF9z dGF0dXMoJmNvbmZpZykgPT0gU29tZShmYWxzZSkgewotICAgICAgICAgICAgbGV0IG11dCBkYXRh c3RvcmVfY2FjaGUgPSBEQVRBU1RPUkVfTUFQLmxvY2soKS51bndyYXAoKTsKLSAgICAgICAgICAg IGRhdGFzdG9yZV9jYWNoZS5yZW1vdmUoJmNvbmZpZy5uYW1lKTsKLSAgICAgICAgICAgIGJhaWwh KCJkYXRhc3RvcmUgJ3t9JyBpcyBub3QgbW91bnRlZCIsIGNvbmZpZy5uYW1lKTsKKyAgICAgICAg bGV0IG11dCBkYXRhc3RvcmVfY2FjaGUgPSBEQVRBU1RPUkVfTUFQLmxvY2soKS51bndyYXAoKTsK KworICAgICAgICBpZiBtb3VudF9zdGF0dXMgPT0gU29tZShmYWxzZSkgeworICAgICAgICAgICAg ZGF0YXN0b3JlX2NhY2hlLnJlbW92ZSgmZGF0YXN0b3JlX2NmZy5uYW1lKTsKKyAgICAgICAgICAg IGJhaWwhKCJkYXRhc3RvcmUgJ3t9JyBpcyBub3QgbW91bnRlZCIsIGRhdGFzdG9yZV9jZmcubmFt ZSk7CiAgICAgICAgIH0KIAotICAgICAgICBsZXQgbXV0IGRhdGFzdG9yZV9jYWNoZSA9IERBVEFT VE9SRV9NQVAubG9jaygpLnVud3JhcCgpOwotICAgICAgICBsZXQgZW50cnkgPSBkYXRhc3RvcmVf Y2FjaGUuZ2V0KG5hbWUpOwotCi0gICAgICAgIC8vIHJldXNlIGNodW5rIHN0b3JlIHNvIHRoYXQg d2Uga2VlcCB1c2luZyB0aGUgc2FtZSBwcm9jZXNzIGxvY2tlciBpbnN0YW5jZSEKLSAgICAgICAg bGV0IGNodW5rX3N0b3JlID0gaWYgbGV0IFNvbWUoZGF0YXN0b3JlKSA9ICZlbnRyeSB7Ci0gICAg ICAgICAgICBsZXQgbGFzdF9kaWdlc3QgPSBkYXRhc3RvcmUubGFzdF9kaWdlc3QuYXNfcmVmKCk7 Ci0gICAgICAgICAgICBpZiBsZXQgU29tZSh0cnVlKSA9IGxhc3RfZGlnZXN0Lm1hcCh8bGFzdF9k aWdlc3R8IGxhc3RfZGlnZXN0ID09ICZkaWdlc3QpIHsKLSAgICAgICAgICAgICAgICBpZiBsZXQg U29tZShvcGVyYXRpb24pID0gb3BlcmF0aW9uIHsKLSAgICAgICAgICAgICAgICAgICAgdXBkYXRl X2FjdGl2ZV9vcGVyYXRpb25zKG5hbWUsIG9wZXJhdGlvbiwgMSk/OworICAgICAgICAvLyBSZS11 c2UgRGF0YVN0b3JlSW1wbAorICAgICAgICBpZiBsZXQgU29tZShleGlzdGluZykgPSBkYXRhc3Rv cmVfY2FjaGUuZ2V0KG5hbWUpLmNsb25lZCgpIHsKKyAgICAgICAgICAgIGlmIGxldCAoU29tZShs YXN0X2dlbmVyYXRpb24pLCBTb21lKGdlbl9udW0pKSA9IChleGlzdGluZy5jb25maWdfZ2VuZXJh dGlvbiwgZ2VuX251bSkgeworICAgICAgICAgICAgICAgIGlmIGxhc3RfZ2VuZXJhdGlvbiA9PSBn ZW5fbnVtIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgbGV0IFNvbWUob3ApID0gb3BlcmF0aW9u IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9hY3RpdmVfb3BlcmF0aW9ucyhuYW1l LCBvcCwgMSk/OworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAg cmV0dXJuIE9rKEFyYzo6bmV3KFNlbGYgeworICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXI6 IGV4aXN0aW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uLAorICAgICAgICAg ICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVy biBPayhBcmM6Om5ldyhTZWxmIHsKLSAgICAgICAgICAgICAgICAgICAgaW5uZXI6IEFyYzo6Y2xv bmUoZGF0YXN0b3JlKSwKLSAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uLAotICAgICAgICAg ICAgICAgIH0pKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFyYzo6Y2xvbmUoJmRhdGFz dG9yZS5jaHVua19zdG9yZSkKKyAgICAgICAgfQorCisgICAgICAgIC8vIChSZSlidWlsZCBEYXRh U3RvcmVJbXBsCisKKyAgICAgICAgLy8gUmV1c2UgY2h1bmsgc3RvcmUgc28gdGhhdCB3ZSBrZWVw IHVzaW5nIHRoZSBzYW1lIHByb2Nlc3MgbG9ja2VyIGluc3RhbmNlIQorICAgICAgICBsZXQgY2h1 bmtfc3RvcmUgPSBpZiBsZXQgU29tZShleGlzdGluZykgPSBkYXRhc3RvcmVfY2FjaGUuZ2V0KG5h bWUpIHsKKyAgICAgICAgICAgIEFyYzo6Y2xvbmUoJmV4aXN0aW5nLmNodW5rX3N0b3JlKQogICAg ICAgICB9IGVsc2UgewogICAgICAgICAgICAgbGV0IHR1bmluZzogRGF0YXN0b3JlVHVuaW5nID0g c2VyZGVfanNvbjo6ZnJvbV92YWx1ZSgKICAgICAgICAgICAgICAgICBEYXRhc3RvcmVUdW5pbmc6 OkFQSV9TQ0hFTUEKLSAgICAgICAgICAgICAgICAgICAgLnBhcnNlX3Byb3BlcnR5X3N0cmluZyhj b25maWcudHVuaW5nLmFzX2RlcmVmKCkudW53cmFwX29yKCIiKSk/LAorICAgICAgICAgICAgICAg ICAgICAucGFyc2VfcHJvcGVydHlfc3RyaW5nKGRhdGFzdG9yZV9jZmcudHVuaW5nLmFzX2RlcmVm KCkudW53cmFwX29yKCIiKSk/LAogICAgICAgICAgICAgKT87CiAgICAgICAgICAgICBBcmM6Om5l dyhDaHVua1N0b3JlOjpvcGVuKAogICAgICAgICAgICAgICAgIG5hbWUsCi0gICAgICAgICAgICAg ICAgY29uZmlnLmFic29sdXRlX3BhdGgoKSwKKyAgICAgICAgICAgICAgICBkYXRhc3RvcmVfY2Zn LmFic29sdXRlX3BhdGgoKSwKICAgICAgICAgICAgICAgICB0dW5pbmcuc3luY19sZXZlbC51bndy YXBfb3JfZGVmYXVsdCgpLAogICAgICAgICAgICAgKT8pCiAgICAgICAgIH07CiAKLSAgICAgICAg bGV0IGRhdGFzdG9yZSA9IERhdGFTdG9yZTo6d2l0aF9zdG9yZV9hbmRfY29uZmlnKGNodW5rX3N0 b3JlLCBjb25maWcsIFNvbWUoZGlnZXN0KSk/OworICAgICAgICBsZXQgZGF0YXN0b3JlID0gRGF0 YVN0b3JlOjp3aXRoX3N0b3JlX2FuZF9jb25maWcoY2h1bmtfc3RvcmUsIGRhdGFzdG9yZV9jZmcs IGdlbl9udW0pPzsKIAogICAgICAgICBsZXQgZGF0YXN0b3JlID0gQXJjOjpuZXcoZGF0YXN0b3Jl KTsKICAgICAgICAgZGF0YXN0b3JlX2NhY2hlLmluc2VydChuYW1lLnRvX3N0cmluZygpLCBkYXRh c3RvcmUuY2xvbmUoKSk7CkBAIC00NzgsNyArNTQ4LDcgQEAgaW1wbCBEYXRhU3RvcmUgewogICAg IGZuIHdpdGhfc3RvcmVfYW5kX2NvbmZpZygKICAgICAgICAgY2h1bmtfc3RvcmU6IEFyYzxDaHVu a1N0b3JlPiwKICAgICAgICAgY29uZmlnOiBEYXRhU3RvcmVDb25maWcsCi0gICAgICAgIGxhc3Rf ZGlnZXN0OiBPcHRpb248W3U4OyAzMl0+LAorICAgICAgICBnZW5lcmF0aW9uOiBPcHRpb248dXNp emU+LAogICAgICkgLT4gUmVzdWx0PERhdGFTdG9yZUltcGwsIEVycm9yPiB7CiAgICAgICAgIGxl dCBtdXQgZ2Nfc3RhdHVzX3BhdGggPSBjaHVua19zdG9yZS5iYXNlX3BhdGgoKTsKICAgICAgICAg Z2Nfc3RhdHVzX3BhdGgucHVzaCgiLmdjLXN0YXR1cyIpOwpAQCAtNTM4LDEwICs2MDgsMTAgQEAg aW1wbCBEYXRhU3RvcmUgewogICAgICAgICAgICAgbGFzdF9nY19zdGF0dXM6IE11dGV4OjpuZXco Z2Nfc3RhdHVzKSwKICAgICAgICAgICAgIHZlcmlmeV9uZXc6IGNvbmZpZy52ZXJpZnlfbmV3LnVu d3JhcF9vcihmYWxzZSksCiAgICAgICAgICAgICBjaHVua19vcmRlcjogdHVuaW5nLmNodW5rX29y ZGVyLnVud3JhcF9vcl9kZWZhdWx0KCksCi0gICAgICAgICAgICBsYXN0X2RpZ2VzdCwKICAgICAg ICAgICAgIHN5bmNfbGV2ZWw6IHR1bmluZy5zeW5jX2xldmVsLnVud3JhcF9vcl9kZWZhdWx0KCks CiAgICAgICAgICAgICBiYWNrZW5kX2NvbmZpZywKICAgICAgICAgICAgIGxydV9zdG9yZV9jYWNo aW5nLAorICAgICAgICAgICAgY29uZmlnX2dlbmVyYXRpb246IGdlbmVyYXRpb24sCiAgICAgICAg IH0pCiAgICAgfQogCi0tIAoyLjQ3LjMKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KcGJzLWRldmVsIG1haWxpbmcgbGlzdApwYnMtZGV2ZWxAbGlzdHMu cHJveG1veC5jb20KaHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxtYW4vbGlz dGluZm8vcGJzLWRldmVsCg==