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 2C68C1FF16F
	for <inbox@lore.proxmox.com>; Tue, 15 Apr 2025 14:51:23 +0200 (CEST)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id AD4907F4E;
	Tue, 15 Apr 2025 14:51:21 +0200 (CEST)
Message-ID: <574477eb-b29a-44d3-91de-e69b69c20607@proxmox.com>
Date: Tue, 15 Apr 2025 14:50:46 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
To: Proxmox Backup Server development discussion <pbs-devel@lists.proxmox.com>,
 =?UTF-8?Q?Fabian_Gr=C3=BCnbichler?= <f.gruenbichler@proxmox.com>
References: <20250415105416.215805-1-c.ebner@proxmox.com>
 <1744715646.ixpklno696.astroid@yuna.none>
Content-Language: en-US, de-DE
From: Christian Ebner <c.ebner@proxmox.com>
In-Reply-To: <1744715646.ixpklno696.astroid@yuna.none>
X-SPAM-LEVEL: Spam detection results:  0
 AWL -0.372 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_ASCII_DIVIDERS 0.8 Email that uses ascii formatting dividers and possible
 spam tricks
 KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment
 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.
 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. [proxmox.com, datastore.rs]
Subject: Re: [pbs-devel] [PATCH v2 proxmox-backup] 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-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: pbs-devel-bounces@lists.proxmox.com
Sender: "pbs-devel" <pbs-devel-bounces@lists.proxmox.com>

T24gNC8xNS8yNSAxMzo0MiwgRmFiaWFuIEdyw7xuYmljaGxlciB3cm90ZToKPiBPbiBBcHJpbCAx
NSwgMjAyNSAxMjo1NCBwbSwgQ2hyaXN0aWFuIEVibmVyIHdyb3RlOgo+PiBEdXJpbmcgcGhhc2Ug
MSBvZiBnYXJiYWdlIGNvbGxlY3Rpb24gcmVmZXJlbmNlZCBjaHVua3MgYXJlIG1hcmtlZCBhcwo+
PiBpbiB1c2UgYnkgaXRlcmF0aW5nIG92ZXIgYWxsIGluZGV4IGZpbGVzIGFuZCB1cGRhdGluZyB0
aGUgYXRpbWUgb24KPj4gdGhlIGNodW5rcyByZWZlcmVuY2VkIGJ5IHRoZXNlLgo+Pgo+PiBJbiBh
biBlZGdlIGNhc2UgZm9yIGxvbmcgcnVubmluZyBnYXJiYWdlIGNvbGxlY3Rpb24gam9icywgd2hl
cmUgYQo+PiBuZXdseSBhZGRlZCBzbmFwc2hvdCAoY3JlYXRlZCBhZnRlciB0aGUgc3RhcnQgb2Yg
R0MpIHJldXNlZCBrbm93bgo+PiBjaHVua3MgZnJvbSBhIHByZXZpb3VzIHNuYXBzaG90LCBidXQg
dGhlIHByZXZpb3VzIHNuYXBzaG90IGluZGV4Cj4+IHJlZmVyZW5jaW5nIHRoZW0gZGlzYXBwZWFy
ZWQgYmVmb3JlIHRoZSBtYXJraW5nIHBoYXNlIGNvdWxkIHJlYWNoCj4+IHRoYXQgaW5kZXggKGUu
Zy4gcHJ1bmVkIGJlY2F1c2Ugb25seSAxIHNuYXBzaG90IHRvIGJlIGtlcHQgYnkKPj4gcmV0ZW50
aW9uIHNldHRpbmcpLCBrbm93biBjaHVua3MgZnJvbSB0aGF0IHByZXZpb3VzIGluZGV4IGZpbGUg
bWlnaHQKPj4gbm90IGJlIG1hcmtlZCAoZ2l2ZW4gdGhhdCBieSBub25lIG9mIHRoZSBvdGhlciBp
bmRleCBmaWxlcyBpdCB3YXMKPj4gbWFya2VkKS4KPj4KPj4gU2luY2UgY29tbWl0IDc0MzYxZGE4
ICgiZ2FyYmFnZSBjb2xsZWN0aW9uOiBnZW5lcmF0ZSBpbmRleCBmaWxlIGxpc3QKPj4gdmlhIGRh
dGFzdG9yZSBpdGVyYXRvcnMiKSB0aGlzIGlzIGV2ZW4gbGVzcyBsaWtlbHkgYXMgbm93IHRoZQo+
PiBpdGVyYXRpb24gcmVhZHMgYWxzbyBpbmRleCBmaWxlcyBhZGRlZCBkdXJpbmcgcGhhc2UgMSwg
YW5kCj4+IHRoZXJlZm9yZSBlaXRoZXIgdGhlIG5ldyBvciB0aGUgcHJldmlvdXMgaW5kZXggZmls
ZSB3aWxsIGFjY291bnQgZm9yCj4+IHRoZXNlIGNodW5rcyAodGhlIHByZXZpb3VzIGJhY2t1cCBz
bmFwc2hvdCBjYW4gb25seSBiZSBwcnVuZGVkIGFmdGVyCj4+IHRoZSBuZXcgb25lIGZpbmlzaGVk
LCBzaW5jZSBsb2NrZWQpLiBUaGVyZSByZW1haW5zIGhvd2V2ZXIgYSBzbWFsbAo+PiByYWNlIHdp
bmRvdyBiZXR3ZWVuIHRoZSByZWFkaW5nIG9mIHRoZSBzbmFwc2hvdHMgaW4gdGhlIGJhY2t1cCBn
cm91cAo+PiBhbmQgdGhlIHJlYWRpbmcgb2YgdGhlIGFjdHVhbCBpbmRleCBmaWxlcyBmb3IgbWFy
a2luZy4KPj4KPj4gRml4IHRoaXMgcmFjZSBieToKPj4gMS4gQ2hlY2tpbmcgaWYgdGhlIGxhc3Qg
c25hcHNob3Qgb2YgYSBncm91cCBkaXNhcHBlYXJlZCBhbmQgaWYgc28KPj4gMi4gZ2VuZXJhdGUg
dGhlIGxpc3QgYWdhaW4sIGxvb2tpbmcgZm9yIG5ldyBpbmRleCBmaWxlcyBwcmV2aW91c2x5Cj4+
ICAgICBub3QgYWNjb3VudGVkIGZvcgo+PiAzLiBUbyBhdm9pZCBwb3NzaWJsZSBlbmRsZXNzIGxv
b3BpbmcsIGxvY2sgdGhlIGdyb3VwIGlmIHRoZSBzbmFwc2hvdAo+PiAgICAgbGlzdCBjaGFuZ2Vk
IGV2ZW4gYWZ0ZXIgdGhlIDEwdGggdGltZSAod2hpY2ggd2lsbCBsZWFkIHRvCj4+ICAgICBjb25j
dXJyZW50IG9wZXJhdGlvbnMgdG8gdGhpcyBncm91cCBmYWlsaW5nKS4KPj4KPj4gU2lnbmVkLW9m
Zi1ieTogQ2hyaXN0aWFuIEVibmVyIDxjLmVibmVyQHByb3htb3guY29tPgo+PiAtLS0KPj4gY2hh
bmdlcyBzaW5jZSB2ZXJzaW9uIDE6Cj4+IC0gcmViYXNlZCBvbnRvIGN1cnJlbnQgbWFzdGVyCj4+
Cj4+ICAgcGJzLWRhdGFzdG9yZS9zcmMvZGF0YXN0b3JlLnJzIHwgMTEwICsrKysrKysrKysrKysr
KysrKysrKystLS0tLS0tLS0tLQo+PiAgIDEgZmlsZSBjaGFuZ2VkLCA3NCBpbnNlcnRpb25zKCsp
LCAzNiBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL3Bicy1kYXRhc3RvcmUvc3JjL2Rh
dGFzdG9yZS5ycyBiL3Bicy1kYXRhc3RvcmUvc3JjL2RhdGFzdG9yZS5ycwo+PiBpbmRleCBhYTM4
ZTJhYzEuLjc4OGRiZjIxMiAxMDA2NDQKPj4gLS0tIGEvcGJzLWRhdGFzdG9yZS9zcmMvZGF0YXN0
b3JlLnJzCj4+ICsrKyBiL3Bicy1kYXRhc3RvcmUvc3JjL2RhdGFzdG9yZS5ycwo+PiBAQCAtMTE0
Myw0NyArMTE0Myw4NSBAQCBpbXBsIERhdGFTdG9yZSB7Cj4+ICAgICAgICAgICAgICAgbGV0IG5h
bWVzcGFjZSA9IG5hbWVzcGFjZS5jb250ZXh0KCJpdGVyYXRpbmcgbmFtZXNwYWNlcyBmYWlsZWQi
KT87Cj4+ICAgICAgICAgICAgICAgZm9yIGdyb3VwIGluIGFyY19zZWxmLml0ZXJfYmFja3VwX2dy
b3VwcyhuYW1lc3BhY2UpPyB7Cj4+ICAgICAgICAgICAgICAgICAgIGxldCBncm91cCA9IGdyb3Vw
LmNvbnRleHQoIml0ZXJhdGluZyBiYWNrdXAgZ3JvdXBzIGZhaWxlZCIpPzsKPiAKPiBwcmUtZXhp
c3RpbmcvdW5yZWxhdGVkIC0gd2hhdCBpZiB0aGUgZ3JvdXAgZ290IHBydW5lZCBhdCB0aGUgcmln
aHQKPiBtb21lbnQgaGVyZT8gc2hvdWxkIHdlIG1heWJlIHJlY2hlY2sgdGhhdCBpdCBleGlzdHMg
YW5kIGlnbm9yZSB0aGUgZXJyb3IKPiBpbiB0aGF0IGNhc2U/CgpIbW0sIHRoYXQncyByaWdodC4u
LiBTYW1lIHByb2JhYmx5IGFwcGxpZXMgdG8gdGhlIG5hbWVzcGFjZSBpdGVyYXRpb24gCmFib3Zl
IGFzIHdlbGwuLi4KQnV0IEknbSBub3Qgc3VyZSB3ZSBzaG91bGQgY2hlY2sgaWYgdGhlIGdyb3Vw
IGV4aXN0cyBhbmQgaWdub3JlPyBXaGF0J3MgCnlvdXIgcmVhc29uaW5nIGhlcmU/IEFzIGZhciBh
cyBJIHNlZSB0aGUgd2hvbGUgc3RhdGUgb2YgdGhlIGl0ZXJhdG9yIApib2lscyBkb3duIHRvIHRo
ZSByZWFkZGlyX3IoKSBjYWxscyBpbiBuaXg6OmRpcjo6SXRlcjo6bmV4dCgpLCBidXQgbm90IApz
dXJlIHdoYXQgc3RhdGUgb25lIGlzIGxvb2tpbmcgYXQgYXQgdGhhdCBtb21lbnQuCgo+IAo+PiAt
ICAgICAgICAgICAgICAgIGxldCBtdXQgc25hcHNob3RzID0gZ3JvdXAubGlzdF9iYWNrdXBzKCku
Y29udGV4dCgibGlzdGluZyBzbmFwc2hvdHMgZmFpbGVkIik/Owo+PiAtICAgICAgICAgICAgICAg
IC8vIFNvcnQgYnkgc25hcHNob3QgdGltZXN0YW1wIHRvIGl0ZXJhdGUgb3ZlciBjb25zZWN1dGl2
ZSBzbmFwc2hvdHMgZm9yIGVhY2ggaW1hZ2UuCj4+IC0gICAgICAgICAgICAgICAgQmFja3VwSW5m
bzo6c29ydF9saXN0KCZtdXQgc25hcHNob3RzLCB0cnVlKTsKPj4gLSAgICAgICAgICAgICAgICBm
b3Igc25hcHNob3QgaW4gc25hcHNob3RzIHsKPj4gLSAgICAgICAgICAgICAgICAgICAgZm9yIGZp
bGUgaW4gc25hcHNob3QuZmlsZXMgewo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgd29ya2Vy
LmNoZWNrX2Fib3J0KCk/Owo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgd29ya2VyLmZhaWxf
b25fc2h1dGRvd24oKT87Cj4+IC0KPj4gLSAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtdXQg
cGF0aCA9IHNuYXBzaG90LmJhY2t1cF9kaXIuZnVsbF9wYXRoKCk7Cj4+IC0gICAgICAgICAgICAg
ICAgICAgICAgICBwYXRoLnB1c2goZmlsZSk7Cj4+IC0KPj4gLSAgICAgICAgICAgICAgICAgICAg
ICAgIGxldCBpbmRleCA9IG1hdGNoIHNlbGYub3Blbl9pbmRleF9yZWFkZXIoJnBhdGgpPyB7Cj4+
IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZShpbmRleCkgPT4gaW5kZXgsCj4+IC0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSA9PiB7Cj4+IC0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVucHJvY2Vzc2VkX2luZGV4X2xpc3QucmVtb3ZlKCZwYXRoKTsKPj4g
Kwo+PiArICAgICAgICAgICAgICAgIC8vIEF2b2lkIHJhY2UgYmV0d2VlbiBsaXN0aW5nL21hcmtp
bmcgb2Ygc25hcHNob3RzIGJ5IEdDIGFuZCBwcnVuaW5nIHRoZSBsYXN0Cj4+ICsgICAgICAgICAg
ICAgICAgLy8gc25hcHNob3QgaW4gdGhlIGdyb3VwLCBmb2xsb3dpbmcgYSBuZXcgc25hcHNob3Qg
Y3JlYXRpb24uIE90aGVyd2lzZSBrbm93biBjaHVua3MKPj4gKyAgICAgICAgICAgICAgICAvLyBt
aWdodCBvbmx5IGJlIHJlZmVyZW5jZWQgYnkgdGhlIG5ldyBzbmFwc2hvdCwgc28gaXQgbXVzdCBi
ZSByZWFkIGFzIHdlbGwuCj4+ICsgICAgICAgICAgICAgICAgbGV0IG11dCByZXRyeV9jb3VudGVy
ID0gMDsKPj4gKyAgICAgICAgICAgICAgICBsZXQgbXV0IHByb2Nlc3NlZF9ncm91cF9pbmRpY2Vz
ID0gSGFzaFNldDo6bmV3KCk7Cj4+ICsgICAgICAgICAgICAgICAgbGV0IG11dCBuZWVkc19yZXRy
eTsKPiAKPiBJIGRvbid0IHRoaW5rIHdlIG5lZWQgdGhpcyB2YXJpYWJsZSAoc2VlIGJlbG93KQoK
QWNrZWQKCj4gCj4+ICsgICAgICAgICAgICAgICAgbG9vcCB7Cj4+ICsgICAgICAgICAgICAgICAg
ICAgIG5lZWRzX3JldHJ5ID0gZmFsc2U7Cj4+ICsgICAgICAgICAgICAgICAgICAgIGxldCBfbG9j
ayA9IGlmIHJldHJ5X2NvdW50ZXIgPT0gMTAgewo+PiArICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gTGFzdCByZXNvcnQsIGV4Y2x1c2l2ZWx5IGxvY2sgdGhlIGJhY2t1cCBncm91cCB0byBtYWtl
IHN1cmUgbm8gbmV3Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAvLyBiYWNrdXBzIGNhbiBi
ZSB3cml0dGVuLiBUaGlzIHdpbGwgb25seSB0cmlnZ2VyIGlmIG5vbmUgb2YgdGhlIHByZXZpb3Vz
Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXRyaWVzIGNvbnZlcmdlZCBzdWNjZXNz
ZnVsbHksIHdoaWNoIGlzIHZlcnkgdW5saWtlbHkuCj4+ICsgICAgICAgICAgICAgICAgICAgICAg
ICBTb21lKGdyb3VwLmxvY2soKSkKPiAKPiB0aGlzIHNob3VsZCBjaGVjayB0aGUgcmVzdWx0PyB0
aGlzIHdvdWxkIGFsc28gZmFpbCBpZiBhIGJhY2t1cCBpcwo+IGN1cnJlbnRseSBnb2luZyBvbiAo
dmVyeSBsaWtlbHkgaWYgd2UgZW5kIHVwIGhlcmU/KSBhbmQgYWJvcnQgdGhlIEdDCj4gdGhlbiwg
YnV0IHdlIGRvbid0IGhhdmUgYSB3YXkgdG8gbG9jayBhIGdyb3VwIHdpdGggYSB0aW1lb3V0IGF0
IHRoZQo+IG1vbWVudC4uIGJ1dCBtYXliZSB3ZSBjYW4gd2FpdCBhbmQgc2VlIGlmIHVzZXJzIGFj
dHVhbGx5IHJ1biBpbnRvIHRoYXQsCj4gd2UgY2FuIGFsd2F5cyBleHRlbmQgdGhlIGxvY2tpbmcg
aW50ZXJmYWNlIHRoZW4uLgoKVHJ1ZSwgYnV0IHNpbmNlIHRoaXMgaXMgdmVyeSB1bmxpa2VseSB0
byBoYXBwZW4sIEkgd291bGQgb3B0IHRvIGZhaWwgYW5kIAphZGQgYW4gZXJyb3IgY29udGV4dCBo
ZXJlIHNvIHRoaXMgY2FuIGVhc2lseSBiZSB0cmFjZWQgYmFjayB0byB0aGlzIGNvZGUgCnBhdGgu
Cgo+IAo+IHdlIHNob3VsZCBwcm9iYWJseSBhbHNvIGFib3J0IGlmIHdlIGV2ZXIgaGl0IGEgcmV0
cnlfY291bnRlciA+IDEwLCBzaW5jZQo+IHRoYXQgd291bGQgbWVhbiB3ZSBtaXNzZWQgc29tZSBi
dWcgYW5kIHRoaXMgY291bGQgbG9vcCBmb3JldmVyLi4KCkFoIHllcywgZ29vZCBwb2ludCEgV2ls
bCBhZGQgYSBiYWlsIGZvciB0aGF0IGNhc2UuCgo+IAo+PiArICAgICAgICAgICAgICAgICAgICB9
IGVsc2Ugewo+PiArICAgICAgICAgICAgICAgICAgICAgICAgTm9uZQo+PiArICAgICAgICAgICAg
ICAgICAgICB9Owo+PiArCj4+ICsgICAgICAgICAgICAgICAgICAgIGxldCBtdXQgc25hcHNob3Rz
ID0gZ3JvdXAubGlzdF9iYWNrdXBzKCkuY29udGV4dCgibGlzdGluZyBzbmFwc2hvdHMgZmFpbGVk
Iik/Owo+IAo+IHNhbWUgcXVlc3Rpb24gYXMgYWJvdmUgYXBwbGllcyBoZXJlIGFzIHdlbGwgLSB3
aGF0IGlmIHRoZSB3aG9sZSBncm91cCB2YW5pc2hlZD8KCkFja2VkLCBtdXN0IGNoZWNrCgo+IAo+
PiArICAgICAgICAgICAgICAgICAgICBsZXQgc25hcHNob3RfY291bnQgPSBzbmFwc2hvdHMubGVu
KCk7Cj4+ICsgICAgICAgICAgICAgICAgICAgIC8vIFNvcnQgYnkgc25hcHNob3QgdGltZXN0YW1w
IHRvIGl0ZXJhdGUgb3ZlciBjb25zZWN1dGl2ZSBzbmFwc2hvdHMgZm9yIGVhY2ggc25hcHNob3Qu
Cj4gCj4gdGhpcyBjb21tZW50IG1ha2VzIG5vIHNlbnNlIDspCj4gCj4gLy8gaXRlcmF0ZSBvdmVy
IHNvcnRlZCBzbmFwc2hvdHMgdG8gYmVuZWZpdCBmcm9tIGNodW5rIGNhY2hpbmcKPiAKPiBvciBz
b21ldGhpbmcgbGlrZSB0aGlzPyBpZiB3ZSB3YW50IHRvIGtlZXAgdGhlIGNvbW1lbnQgYXQgYWxs
Li4KCnllYWgsIGluY29ycmVjdGx5IGFkYXB0ZWQgdGhlIHByZS1leGlzdGluZyBvbmUgaGVyZSwg
YnV0IHRoaXMgZG9lcyBub3QgCmdpdmUgbXVjaCBpbnNpZ2h0LCBzbyBsZXRzIGRyb3AgaXQuCgo+
IAo+PiArICAgICAgICAgICAgICAgICAgICBCYWNrdXBJbmZvOjpzb3J0X2xpc3QoJm11dCBzbmFw
c2hvdHMsIHRydWUpOwo+PiArICAgICAgICAgICAgICAgICAgICBmb3IgKGNvdW50LCBzbmFwc2hv
dCkgaW4gc25hcHNob3RzLmludG9faXRlcigpLmVudW1lcmF0ZSgpIHsKPj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZvciBmaWxlIGluIHNuYXBzaG90LmZpbGVzIHsKPiAKPiBzbmFwc2hvdC5m
aWxlcyBhbHNvIGluY2x1ZGVzIGJsb2JzLCBzaG91bGQgd2UgZmlsdGVyIHRoZW0gaGVyZSB0byBh
dm9pZAo+IHByb2JsZW1zIGlmIHdlIGFkYXB0IGJlbG93IHRvIGhhbmRsZSBwYXJ0aWFsL29uZ29p
bmcgcHJ1bmluZz8KClllcywgbWlnaHQgYmUgYmV0dGVyIHRvIGV4Y2x1ZGUgdGhlc2UgYXQgdGhp
cyBwb2ludCBhbHJlYWR5LgoKPiAKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3Jr
ZXIuY2hlY2tfYWJvcnQoKT87Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya2Vy
LmZhaWxfb25fc2h1dGRvd24oKT87Cj4+ICsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsZXQgbXV0IHBhdGggPSBzbmFwc2hvdC5iYWNrdXBfZGlyLmZ1bGxfcGF0aCgpOwo+PiArICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGgucHVzaChmaWxlKTsKPj4gKwo+PiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIEF2b2lkIHJlcHJvY2Vzc2luZyBvZiBhbHJlYWR5IHNl
ZW4gaW5kZXggZmlsZXMgb24gcmV0cnkKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiByZXRyeV9jb3VudGVyID4gMCAmJiBwcm9jZXNzZWRfZ3JvdXBfaW5kaWNlcy5jb250YWlucygm
cGF0aCkgewo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4+
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KPj4gLSAgICAgICAgICAgICAgICAgICAg
ICAgIH07Cj4+IC0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmluZGV4X21hcmtfdXNlZF9j
aHVua3MoCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgsCj4+IC0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJnBhdGgsCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJm11dCBjaHVua19scnVfY2FjaGUsCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RhdHVzLAo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtlciwKPj4gLSAgICAg
ICAgICAgICAgICAgICAgICAgICk/Owo+PiAtCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiAhdW5wcm9jZXNzZWRfaW5kZXhfbGlzdC5yZW1vdmUoJnBhdGgpIHsKPj4gLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbmZvISgiRW5jb3VudGVyZWQgbmV3IGluZGV4IGZpbGUgJ3twYXRo
Oj99JywgaW5jcmVtZW50IHRvdGFsIGluZGV4IGZpbGUgY291bnQiKTsKPj4gLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbmRleF9jb3VudCArPSAxOwo+PiAtICAgICAgICAgICAgICAgICAg
ICAgICAgfQo+PiAgIAo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBlcmNlbnRhZ2Ug
PSAocHJvY2Vzc2VkX2luZGV4X2ZpbGVzICsgMSkgKiAxMDAgLyBpbmRleF9jb3VudDsKPj4gLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIHBlcmNlbnRhZ2UgPiBsYXN0X3BlcmNlbnRhZ2Ugewo+
PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8hKAo+PiAtICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAibWFya2VkIHtwZXJjZW50YWdlfSUgKHt9IG9mIHtpbmRleF9jb3Vu
dH0gaW5kZXggZmlsZXMpIiwKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJv
Y2Vzc2VkX2luZGV4X2ZpbGVzICsgMSwKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAp
Owo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RfcGVyY2VudGFnZSA9IHBlcmNl
bnRhZ2U7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gbWF0Y2gg
c2VsZi5vcGVuX2luZGV4X3JlYWRlcigmcGF0aCk/IHsKPj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU29tZShpbmRleCkgPT4gaW5kZXgsCj4+ICsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5vbmUgPT4gewo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgY291bnQgKyAxID09IHNuYXBzaG90X2NvdW50Cj4+ICsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJiYgIXNuYXBzaG90LmJhY2t1cF9kaXIuZnVsbF9wYXRo
KCkuZXhpc3RzKCkKPiAKPiB3aGF0IGlmIHRoZSBzbmFwc2hvdCBkaXIgc3RpbGwgZXhpc3RzLCBi
dXQgdGhlIGluZGV4IGRvZXNuJ3Q/IHdvdWxkbid0Cj4gdGhhdCBhbHNvIGJlIHByb2JsZW1hdGlj
PyBJIHRoaW5rIHdlIHNob3VsZCBwcm9iYWJseSBzdGFydCB0aGUgbG9vcCBvdmVyCj4gYXMgc29v
biBhcyBzb21ldGhpbmcgdW5leHBlY3RlZCBpcyBnb2luZyBvbiB3aXRoIHRoZSBsYXN0IHNuYXBz
aG90IG9mCj4gdGhlIGdyb3VwLi4KCkFncmVlZCwgcHJ1bmluZyBzaG91bGQgcmVtb3ZlIHRoZSBk
aXJlY3RvcnkgYXMgYSB3aG9sZSBidXQgbGV0J3MgYmUgCmNvbnNlcnZhdGl2ZSBoZXJlIHRvIGNv
dmVyIGluY29uc2lzdGVudCBzdGF0ZXMgYXMgd2VsbC4KCj4gCj4+ICsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbmVlZHNfcmV0cnkgPSB0cnVlOwo+IAo+IHNpbmNlIHRoaXMgaXMgdGhlIG9ubHkg
dGltZSB3ZSBzZXQgaXQgdG8gdHJ1ZSwgYW5kIGF0IHRoaXMgcG9pbnQgd2UKPiBjb3VsZCBqdXN0
IHN0YXJ0IGFub3RoZXIgaXRlcmF0aW9uIG9mIHRoZSBvdXRlciBsb29wIHZpYSBsYWJlbGVkCj4g
Y29udGludWU/CgpBaCwgeWVzIHRoYXQncyBpbmRlZWQgYmV0dGVyLCB0aHghCgo+IAo+PiArICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQo+PiArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5wcm9jZXNzZWRfaW5kZXhfbGlzdC5yZW1vdmUoJnBhdGgpOwo+
IAo+IHRoaXMgY291bGQgbW92ZSBhYm92ZSB0aGUgaWYgdGhlbgoKQWNrZWQKCj4gCj4+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07
Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pbmRleF9tYXJrX3VzZWRfY2h1
bmtzKAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCwKPj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBhdGgsCj4+ICsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZtdXQgY2h1bmtfbHJ1X2NhY2hlLAo+PiArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0dXMsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdvcmtlciwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApPzsKPj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWRfZ3JvdXBfaW5kaWNlcy5pbnNlcnQocGF0aC5j
bG9uZSgpKTsKPj4gKwo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICF1bnByb2Nl
c3NlZF9pbmRleF9saXN0LnJlbW92ZSgmcGF0aCkgewo+PiArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbmZvISgiRW5jb3VudGVyZWQgbmV3IGluZGV4IGZpbGUgJ3twYXRoOj99Jywg
aW5jcmVtZW50IHRvdGFsIGluZGV4IGZpbGUgY291bnQiKTsKPj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW5kZXhfY291bnQgKz0gMTsKPj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9Cj4+ICsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcGVyY2Vu
dGFnZSA9IChwcm9jZXNzZWRfaW5kZXhfZmlsZXMgKyAxKSAqIDEwMCAvIGluZGV4X2NvdW50Owo+
PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBlcmNlbnRhZ2UgPiBsYXN0X3BlcmNl
bnRhZ2Ugewo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvISgKPj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtYXJrZWQge3BlcmNlbnRhZ2V9JSAo
e30gb2Yge2luZGV4X2NvdW50fSBpbmRleCBmaWxlcykiLAo+PiArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkX2luZGV4X2ZpbGVzICsgMSwKPj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKTsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbGFzdF9wZXJjZW50YWdlID0gcGVyY2VudGFnZTsKPj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkX2lu
ZGV4X2ZpbGVzICs9IDE7Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQo+PiAtICAgICAg
ICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkX2luZGV4X2ZpbGVzICs9IDE7Cj4+ICAgICAgICAg
ICAgICAgICAgICAgICB9Cj4+ICsKPj4gKyAgICAgICAgICAgICAgICAgICAgaWYgbmVlZHNfcmV0
cnkgewo+PiArICAgICAgICAgICAgICAgICAgICAgICAgcmV0cnlfY291bnRlciArPSAxOwo+PiAr
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4+ICsgICAgICAgICAgICAgICAgICAg
IH0KPiAKPiB0aGlzIHdob2xlIHRoaW5nIGhlcmUgY2FuIGdvIGF3YXkgdGhlbi4uCgpBY2tlZAoK
PiAKPj4gKwo+PiArICAgICAgICAgICAgICAgICAgICBicmVhazsKPj4gICAgICAgICAgICAgICAg
ICAgfQo+PiAgICAgICAgICAgICAgIH0KPj4gICAgICAgICAgIH0KPj4gLS0gCj4+IDIuMzkuNQo+
Pgo+Pgo+Pgo+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Xwo+PiBwYnMtZGV2ZWwgbWFpbGluZyBsaXN0Cj4+IHBicy1kZXZlbEBsaXN0cy5wcm94bW94LmNv
bQo+PiBodHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9w
YnMtZGV2ZWwKPj4KPj4KPj4KPiAKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwo+IHBicy1kZXZlbCBtYWlsaW5nIGxpc3QKPiBwYnMtZGV2ZWxAbGlz
dHMucHJveG1veC5jb20KPiBodHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1h
bi9saXN0aW5mby9wYnMtZGV2ZWwKPiAKPiAKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KcGJzLWRldmVsIG1haWxpbmcgbGlzdApwYnMtZGV2ZWxAbGlz
dHMucHJveG1veC5jb20KaHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxtYW4v
bGlzdGluZm8vcGJzLWRldmVsCg==