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 [IPv6:2a01:7e0:0:424::9])
	by lore.proxmox.com (Postfix) with ESMTPS id 7F2E11FF172
	for <inbox@lore.proxmox.com>; Wed, 16 Apr 2025 12:50:52 +0200 (CEST)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id D461C33BA1;
	Wed, 16 Apr 2025 12:50:50 +0200 (CEST)
From: Christian Ebner <c.ebner@proxmox.com>
To: pbs-devel@lists.proxmox.com
Date: Wed, 16 Apr 2025 12:50:00 +0200
Message-Id: <20250416105000.270166-3-c.ebner@proxmox.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20250416105000.270166-1-c.ebner@proxmox.com>
References: <20250416105000.270166-1-c.ebner@proxmox.com>
MIME-Version: 1.0
X-SPAM-LEVEL: Spam detection results:  0
 AWL 0.029 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
 URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See
 http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more
 information. [datastore.rs]
Subject: [pbs-devel] [PATCH v5 proxmox-backup 2/2] garbage collection: fix
 rare race in chunk marking phase
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>
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>

RHVyaW5nIHBoYXNlIDEgb2YgZ2FyYmFnZSBjb2xsZWN0aW9uIHJlZmVyZW5jZWQgY2h1bmtzIGFy
ZSBtYXJrZWQgYXMKaW4gdXNlIGJ5IGl0ZXJhdGluZyBvdmVyIGFsbCBpbmRleCBmaWxlcyBhbmQg
dXBkYXRpbmcgdGhlIGF0aW1lIG9uCnRoZSBjaHVua3MgcmVmZXJlbmNlZCBieSB0aGVzZS4KCklu
IGFuIGVkZ2UgY2FzZSBmb3IgbG9uZyBydW5uaW5nIGdhcmJhZ2UgY29sbGVjdGlvbiBqb2JzLCB3
aGVyZSBhCm5ld2x5IGFkZGVkIHNuYXBzaG90IChjcmVhdGVkIGFmdGVyIHRoZSBzdGFydCBvZiBH
QykgcmV1c2VkIGtub3duCmNodW5rcyBmcm9tIGEgcHJldmlvdXMgc25hcHNob3QsIGJ1dCB0aGUg
cHJldmlvdXMgc25hcHNob3QgaW5kZXgKcmVmZXJlbmNpbmcgdGhlbSBkaXNhcHBlYXJlZCBiZWZv
cmUgdGhlIG1hcmtpbmcgcGhhc2UgY291bGQgcmVhY2gKdGhhdCBpbmRleCAoZS5nLiBwcnVuZWQg
YmVjYXVzZSBvbmx5IDEgc25hcHNob3QgdG8gYmUga2VwdCBieQpyZXRlbnRpb24gc2V0dGluZyks
IGtub3duIGNodW5rcyBmcm9tIHRoYXQgcHJldmlvdXMgaW5kZXggZmlsZSBtaWdodApub3QgYmUg
bWFya2VkIChnaXZlbiB0aGF0IGJ5IG5vbmUgb2YgdGhlIG90aGVyIGluZGV4IGZpbGVzIGl0IHdh
cwptYXJrZWQpLgoKU2luY2UgY29tbWl0IDc0MzYxZGE4ICgiZ2FyYmFnZSBjb2xsZWN0aW9uOiBn
ZW5lcmF0ZSBpbmRleCBmaWxlIGxpc3QKdmlhIGRhdGFzdG9yZSBpdGVyYXRvcnMiKSB0aGlzIGlz
IGV2ZW4gbGVzcyBsaWtlbHkgYXMgbm93IHRoZQppdGVyYXRpb24gcmVhZHMgYWxzbyBpbmRleCBm
aWxlcyBhZGRlZCBkdXJpbmcgcGhhc2UgMSwgYW5kCnRoZXJlZm9yZSBlaXRoZXIgdGhlIG5ldyBv
ciB0aGUgcHJldmlvdXMgaW5kZXggZmlsZSB3aWxsIGFjY291bnQgZm9yCnRoZXNlIGNodW5rcyAo
dGhlIHByZXZpb3VzIGJhY2t1cCBzbmFwc2hvdCBjYW4gb25seSBiZSBwcnVuZWQgYWZ0ZXIKdGhl
IG5ldyBvbmUgZmluaXNoZWQsIHNpbmNlIGxvY2tlZCkuIFRoZXJlIHJlbWFpbnMgaG93ZXZlciBh
IHNtYWxsCnJhY2Ugd2luZG93IGJldHdlZW4gdGhlIHJlYWRpbmcgb2YgdGhlIHNuYXBzaG90cyBp
biB0aGUgYmFja3VwIGdyb3VwCmFuZCB0aGUgcmVhZGluZyBvZiB0aGUgYWN0dWFsIGluZGV4IGZp
bGVzIGZvciBtYXJraW5nLgoKRml4IHRoaXMgcmFjZSBieToKMS4gQ2hlY2tpbmcgaWYgdGhlIGxh
c3Qgc25hcHNob3Qgb2YgYSBncm91cCBkaXNhcHBlYXJlZCBhbmQgaWYgc28KMi4gZ2VuZXJhdGUg
dGhlIGxpc3QgYWdhaW4sIGxvb2tpbmcgZm9yIG5ldyBpbmRleCBmaWxlcyBwcmV2aW91c2x5CiAg
IG5vdCBhY2NvdW50ZWQgZm9yCjMuIFRvIGF2b2lkIHBvc3NpYmxlIGVuZGxlc3MgbG9vcGluZywg
bG9jayB0aGUgZ3JvdXAgaWYgdGhlIHNuYXBzaG90CiAgIGxpc3QgY2hhbmdlZCBldmVuIGFmdGVy
IHRoZSAxMHRoIHRpbWUgKHdoaWNoIHdpbGwgbGVhZCB0bwogICBjb25jdXJyZW50IG9wZXJhdGlv
bnMgdG8gdGhpcyBncm91cCBmYWlsaW5nKS4KClNpZ25lZC1vZmYtYnk6IENocmlzdGlhbiBFYm5l
ciA8Yy5lYm5lckBwcm94bW94LmNvbT4KQWNrZWQtYnk6IEZhYmlhbiBHcsO8bmJpY2hsZXIgPGYu
Z3J1ZW5iaWNobGVyQHByb3htb3guY29tPgotLS0KQ2hhbmdlcyBzaW5jZSB2ZXJzaW9uIDQ6Ci0g
QWRhcHQgb3Blbl9pbmRleF9yZWFkZXIgY2FsbCBzaXRlcwotIEZpeCB0eXBvcyBpbiBjb21taXQg
bWVzc2FnZSBhbmQgYmFpbCBtZXNzYWdlCgogcGJzLWRhdGFzdG9yZS9zcmMvZGF0YXN0b3JlLnJz
IHwgMTE2ICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQs
IDc2IGluc2VydGlvbnMoKyksIDQwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Bicy1kYXRh
c3RvcmUvc3JjL2RhdGFzdG9yZS5ycyBiL3Bicy1kYXRhc3RvcmUvc3JjL2RhdGFzdG9yZS5ycwpp
bmRleCAzMzNmNWY4ZDIuLjMwOTEzN2UwMCAxMDA2NDQKLS0tIGEvcGJzLWRhdGFzdG9yZS9zcmMv
ZGF0YXN0b3JlLnJzCisrKyBiL3Bicy1kYXRhc3RvcmUvc3JjL2RhdGFzdG9yZS5ycwpAQCAtMTE0
NSw1MiArMTE0NSw4OCBAQCBpbXBsIERhdGFTdG9yZSB7CiAgICAgICAgICAgICBsZXQgbmFtZXNw
YWNlID0gbmFtZXNwYWNlLmNvbnRleHQoIml0ZXJhdGluZyBuYW1lc3BhY2VzIGZhaWxlZCIpPzsK
ICAgICAgICAgICAgIGZvciBncm91cCBpbiBhcmNfc2VsZi5pdGVyX2JhY2t1cF9ncm91cHMobmFt
ZXNwYWNlKT8gewogICAgICAgICAgICAgICAgIGxldCBncm91cCA9IGdyb3VwLmNvbnRleHQoIml0
ZXJhdGluZyBiYWNrdXAgZ3JvdXBzIGZhaWxlZCIpPzsKLSAgICAgICAgICAgICAgICBsZXQgbXV0
IHNuYXBzaG90cyA9IGdyb3VwLmxpc3RfYmFja3VwcygpLmNvbnRleHQoImxpc3Rpbmcgc25hcHNo
b3RzIGZhaWxlZCIpPzsKLSAgICAgICAgICAgICAgICAvLyBTb3J0IGJ5IHNuYXBzaG90IHRpbWVz
dGFtcCB0byBpdGVyYXRlIG92ZXIgY29uc2VjdXRpdmUgc25hcHNob3RzIGZvciBlYWNoIGltYWdl
LgotICAgICAgICAgICAgICAgIEJhY2t1cEluZm86OnNvcnRfbGlzdCgmbXV0IHNuYXBzaG90cywg
dHJ1ZSk7Ci0gICAgICAgICAgICAgICAgZm9yIHNuYXBzaG90IGluIHNuYXBzaG90cyB7Ci0gICAg
ICAgICAgICAgICAgICAgIGZvciBmaWxlIGluIHNuYXBzaG90LmZpbGVzIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHdvcmtlci5jaGVja19hYm9ydCgpPzsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHdvcmtlci5mYWlsX29uX3NodXRkb3duKCk/OwotCi0gICAgICAgICAgICAgICAgICAgICAg
ICBtYXRjaCBBcmNoaXZlVHlwZTo6ZnJvbV9wYXRoKCZmaWxlKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgT2soQXJjaGl2ZVR5cGU6OkZpeGVkSW5kZXgpIHwgT2soQXJjaGl2ZVR5cGU6
OkR5bmFtaWNJbmRleCkgPT4gKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgT2soQXJj
aGl2ZVR5cGU6OkJsb2IpIHwgRXJyKF8pID0+IGNvbnRpbnVlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbXV0IHBhdGggPSBzbmFwc2hv
dC5iYWNrdXBfZGlyLmZ1bGxfcGF0aCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5w
dXNoKGZpbGUpOwogCi0gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5kZXggPSBtYXRjaCBz
ZWxmLm9wZW5faW5kZXhfcmVhZGVyKCZwYXRoKT8gewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNvbWUoaW5kZXgpID0+IGluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5v
bmUgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnByb2Nlc3NlZF9pbmRl
eF9saXN0LnJlbW92ZSgmcGF0aCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgICAgIC8vIEF2b2lkIHJhY2UgYmV0d2VlbiBsaXN0aW5nL21h
cmtpbmcgb2Ygc25hcHNob3RzIGJ5IEdDIGFuZCBwcnVuaW5nIHRoZSBsYXN0CisgICAgICAgICAg
ICAgICAgLy8gc25hcHNob3QgaW4gdGhlIGdyb3VwLCBmb2xsb3dpbmcgYSBuZXcgc25hcHNob3Qg
Y3JlYXRpb24uIE90aGVyd2lzZSBrbm93biBjaHVua3MKKyAgICAgICAgICAgICAgICAvLyBtaWdo
dCBvbmx5IGJlIHJlZmVyZW5jZWQgYnkgdGhlIG5ldyBzbmFwc2hvdCwgc28gaXQgbXVzdCBiZSBy
ZWFkIGFzIHdlbGwuCisgICAgICAgICAgICAgICAgbGV0IG11dCByZXRyeV9jb3VudGVyID0gMDsK
KyAgICAgICAgICAgICAgICAncmV0cnk6IGxvb3AgeworICAgICAgICAgICAgICAgICAgICBsZXQg
X2xvY2sgPSBtYXRjaCByZXRyeV9jb3VudGVyIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIDAu
Lj05ID0+IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAxMCA9PiBTb21lKAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdyb3VwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC5sb2NrKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNvbnRleHQoImV4
aGF1c3RlZCByZXRyaWVzIGFuZCBmYWlsZWQgdG8gbG9jayBncm91cCIpPywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgICAgICBfID0+IGJhaWwhKCJleGhh
dXN0ZWQgcmV0cmllcyBhbmQgdW5leHBlY3RlZCBjb3VudGVyIG92ZXJydW4iKSwKKyAgICAgICAg
ICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgICAgICBsZXQgbXV0IHNuYXBzaG90cyA9
IG1hdGNoIGdyb3VwLmxpc3RfYmFja3VwcygpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIE9r
KHNuYXBzaG90cykgPT4gc25hcHNob3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgRXJyKGVy
cikgPT4geworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGdyb3VwLmV4aXN0cygpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVycihlcnIpLmNvbnRleHQo
Imxpc3Rpbmcgc25hcHNob3RzIGZhaWxlZCIpPzsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZi5pbmRleF9tYXJrX3VzZWRfY2h1bmtzKAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwYXRoLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZtdXQgY2h1bmtfbHJ1X2NhY2hlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXR1cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JrZXIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICApPzsKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
IXVucHJvY2Vzc2VkX2luZGV4X2xpc3QucmVtb3ZlKCZwYXRoKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW5mbyEoIkVuY291bnRlcmVkIG5ldyBpbmRleCBmaWxlICd7cGF0aDo/fScs
IGluY3JlbWVudCB0b3RhbCBpbmRleCBmaWxlIGNvdW50Iik7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW5kZXhfY291bnQgKz0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhayAncmV0cnk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIH07CisKKyAgICAgICAgICAgICAgICAgICAgLy8gQWx3YXlzIHN0YXJ0IGl0ZXJhdGlvbiB3
aXRoIHRoZSBsYXN0IHNuYXBzaG90IG9mIHRoZSBncm91cCB0byByZWR1Y2UgcmFjZQorICAgICAg
ICAgICAgICAgICAgICAvLyB3aW5kb3cgd2l0aCBjb25jdXJyZW50IGJhY2t1cCtwcnVuZSBwcmV2
aW91cyBsYXN0IHNuYXBzaG90LiBBbGxvd3MgdG8gcmV0cnkKKyAgICAgICAgICAgICAgICAgICAg
Ly8gd2l0aG91dCB0aGUgbmVlZCB0byBrZWVwIHRyYWNrIG9mIGFscmVhZHkgcHJvY2Vzc2VkIGlu
ZGV4IGZpbGVzIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgLy8gY3VycmVudCBncm91cC4K
KyAgICAgICAgICAgICAgICAgICAgQmFja3VwSW5mbzo6c29ydF9saXN0KCZtdXQgc25hcHNob3Rz
LCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChjb3VudCwgc25hcHNob3QpIGluIHNu
YXBzaG90cy5pbnRvX2l0ZXIoKS5yZXYoKS5lbnVtZXJhdGUoKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBmb3IgZmlsZSBpbiBzbmFwc2hvdC5maWxlcyB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgd29ya2VyLmNoZWNrX2Fib3J0KCk/OworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdvcmtlci5mYWlsX29uX3NodXRkb3duKCk/OworCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWF0Y2ggQXJjaGl2ZVR5cGU6OmZyb21fcGF0aCgmZmlsZSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBPayhBcmNoaXZlVHlwZTo6Rml4ZWRJbmRleCkgfCBPayhBcmNo
aXZlVHlwZTo6RHluYW1pY0luZGV4KSA9PiAoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgT2soQXJjaGl2ZVR5cGU6OkJsb2IpIHwgRXJyKF8pID0+IGNvbnRpbnVlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBl
cmNlbnRhZ2UgPSAocHJvY2Vzc2VkX2luZGV4X2ZpbGVzICsgMSkgKiAxMDAgLyBpbmRleF9jb3Vu
dDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBlcmNlbnRhZ2UgPiBsYXN0X3BlcmNlbnRh
Z2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8hKAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAibWFya2VkIHtwZXJjZW50YWdlfSUgKHt9IG9mIHtpbmRleF9jb3Vu
dH0gaW5kZXggZmlsZXMpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vz
c2VkX2luZGV4X2ZpbGVzICsgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RfcGVyY2VudGFnZSA9IHBlcmNlbnRhZ2U7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG11dCBwYXRoID0gc25hcHNob3QuYmFja3Vw
X2Rpci5mdWxsX3BhdGgoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLnB1c2go
ZmlsZSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5kZXggPSBtYXRjaCBz
ZWxmLm9wZW5faW5kZXhfcmVhZGVyKCZwYXRoKT8geworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTb21lKGluZGV4KSA9PiBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTm9uZSA9PiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnBy
b2Nlc3NlZF9pbmRleF9saXN0LnJlbW92ZSgmcGF0aCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiBjb3VudCA9PSAwIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXRyeV9jb3VudGVyICs9IDE7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGludWUgJ3JldHJ5OworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pbmRl
eF9tYXJrX3VzZWRfY2h1bmtzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRl
eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBhdGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZtdXQgY2h1bmtfbHJ1X2NhY2hlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0dXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdvcmtlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApPzsKKworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICF1bnByb2Nlc3NlZF9pbmRleF9saXN0LnJlbW92ZSgmcGF0aCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvISgiRW5jb3VudGVyZWQgbmV3
IGluZGV4IGZpbGUgJ3twYXRoOj99JywgaW5jcmVtZW50IHRvdGFsIGluZGV4IGZpbGUgY291bnQi
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhfY291bnQgKz0gMTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsZXQgcGVyY2VudGFnZSA9IChwcm9jZXNzZWRfaW5kZXhfZmlsZXMgKyAxKSAqIDEwMCAvIGlu
ZGV4X2NvdW50OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBlcmNlbnRhZ2UgPiBs
YXN0X3BlcmNlbnRhZ2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvISgK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtYXJrZWQge3BlcmNlbnRhZ2V9
JSAoe30gb2Yge2luZGV4X2NvdW50fSBpbmRleCBmaWxlcykiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkX2luZGV4X2ZpbGVzICsgMSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bGFzdF9wZXJjZW50YWdlID0gcGVyY2VudGFnZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkX2luZGV4X2ZpbGVzICs9
IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBw
cm9jZXNzZWRfaW5kZXhfZmlsZXMgKz0gMTsKICAgICAgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
ICAgICAgICAgfQotLSAKMi4zOS41CgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCnBicy1kZXZlbCBtYWlsaW5nIGxpc3QKcGJzLWRldmVsQGxpc3RzLnBy
b3htb3guY29tCmh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3Rp
bmZvL3Bicy1kZXZlbAo=