From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 3DD961FF15C for ; Wed, 13 Nov 2024 14:55:54 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id E2C3316710; Wed, 13 Nov 2024 14:55:54 +0100 (CET) Date: Wed, 13 Nov 2024 14:55:46 +0100 From: Fabian =?iso-8859-1?q?Gr=FCnbichler?= To: Christian Ebner , Proxmox Backup Server development discussion References: <20241105140153.282980-1-c.ebner@proxmox.com> <20241105140153.282980-5-c.ebner@proxmox.com> <1731330267.220wgkqhtc.astroid@yuna.none> <39def709-3df0-4182-8179-8be4022f0f9e@proxmox.com> In-Reply-To: <39def709-3df0-4182-8179-8be4022f0f9e@proxmox.com> MIME-Version: 1.0 User-Agent: astroid/0.16.0 (https://github.com/astroidmail/astroid) Message-Id: <1731506079.pge8n3f5vc.astroid@yuna.none> X-SPAM-LEVEL: Spam detection results: 0 AWL -0.354 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 Subject: Re: [pbs-devel] [PATCH proxmox-backup 4/4] fix #5853: client: pxar: exclude stale files on metadata read 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" T24gTm92ZW1iZXIgMTMsIDIwMjQgMjo0NSBwbSwgQ2hyaXN0aWFuIEVibmVyIHdyb3RlOgo+IE9u IDExLzExLzI0IDE0OjM3LCBGYWJpYW4gR3LDvG5iaWNobGVyIHdyb3RlOgo+PiBiZWhhdmlvdXIg d2lzZSB0aGlzIHNlZW1zIG9rYXkgdG8gbWUsIGJ1dCBpZiBwb3NzaWJsZSwgSSdkIGF2b2lkIGFs bCB0aGUKPj4gcmV0dXJuIHZhbHVlIHR1cGxlcywgc2VlIGRldGFpbGVkIGNvbW1lbnRzIGJlbG93 Li4KPiAKPiBBZ3JlZWQsIEkgYW0gbm90IGEgZmFuIG9mIHBhc3NpbmcgdGhlIHN0YWxlIGZpbGUg aGFuZGxlIGVycm9yIGluZm8gYWxvbmcgCj4gYSB0aGUgYm9vbGVhbiBpbiB0aGUgcmV0dXJuIHZh bHVlIGFzIHdlbGwuCj4gCj4gQnV0IHVuZm9ydHVuYXRlbHkgcGFzc2luZyBhbG9uZyB0aGUgZXJy b3Igd2l0aG91dCBsb29zaW5nIHByZS1leGlzdGluZyAKPiBlcnJvciBjb250ZXh0IGFuZCBzd2l0 Y2hpbmcgYWxsIHRoZSBgZ2V0X21ldGFkYXRhYCByZWxhdGVkIGZ1bmN0aW9ucyB0byAKPiByZXR1 cm4gYW4gYEVycm5vYCBpcyBub3QgcG9zc2libGUgYXMgaXMuCj4gCj4gRS5nLiBgcHJvY2Vzc19h Y2xgIHJldHVybnMgYW4gYGFueWhvdzo6RXJyb3JgIChjb3VsZCBiZSBkZWZpbmVkIHRvIAo+IHJl dHVybiBhbiBlLmcuIGBFcnJubzo6RUlOVkFMSURgIGluc3RlYWQ/KSwgc3BlY2lhbCBoYW5kbGlu ZyBvZiAKPiBgRXJybm86OkUyQklHYCBmb3IgdGhlIHhhdHRyIGNhc2Ugb25seSwgLi4uCj4gCj4g VGhlIGN1cnJlbnQgYXBwcm9hY2ggd2FzIGNob29zZW4gdG8ga2VlcCB0aGUgY3VycmVudCBhbnlo b3cgZXJyb3IgCj4gY29udGV4dCBjbG9zZSB0byB0aGUgYWN0dWFsIGVycm9ycyB3aGVuIHRoZXkg b2NjdXIuCgpJIHRoaW5rIHRoYXQgc2hvdWxkIGJlIHNvbHZhYmxlIHdpdGggc29tZSByZWZhY3Rv cmluZy9kZWZpbmluZyBvZiBhCnByb3BlciBlcnJvciB0eXBlLi4KCmJ1dCB5b3UgY2FuIGFsc28g YXR0ZW1wdCB0byBkb3duY2FzdCB0aGUgYW55aG93IGVycm9yIHRvIGdldCB0aGUgRVNUQUxFPwoK PiAgID4gT24gTm92ZW1iZXIgNSwgMjAyNCAzOjAxIHBtLCBDaHJpc3RpYW4gRWJuZXIgd3JvdGU6 Cj4+PiBTa2lwIGFuZCB3YXJuIHRoZSB1c2VyIGZvciBmaWxlcyB3aGljaCByZXR1cm5lZCBhIHN0 YWxlIGZpbGUgaGFuZGxlCj4+PiBlcnJvciB3aGlsZSByZWFkaW5nIHRoZSBtZXRhZGF0YSBhc3Nv Y2lhdGVkIHRvIHRoYXQgZmlsZS4KPj4+Cj4+PiBJbnN0ZWFkIG9mIHJldHVybmluZyB3aXRoIGFu IGVycm9yIHdoZW4gZ2V0dGluZyB0aGUgbWV0YWRhdGEsIHJldHVybgo+Pj4gYSBib29sZWFuIGZs YWcgc2lnbmFsaW5nIGlmIGEgc3RhbGUgZmlsZSBoYW5kbGUgaGFzIGJlZW4gZW5jb3VudGVyZWQu Cj4+Pgo+Pj4gTGluayB0byBpc3N1ZSBpbiBidWd0cmFja2VyOgo+Pj4gaHR0cHM6Ly9idWd6aWxs YS5wcm94bW94LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NTg1Mwo+Pj4KPj4+IExpbmsgdG8gdGhyZWFk IGluIGNvbW11bml0eSBmb3J1bToKPj4+IGh0dHBzOi8vZm9ydW0ucHJveG1veC5jb20vdGhyZWFk cy8xNTY4MjIvCj4+Pgo+Pj4gU2lnbmVkLW9mZi1ieTogQ2hyaXN0aWFuIEVibmVyIDxjLmVibmVy QHByb3htb3guY29tPgo+Pj4gLS0tCj4+PiAgIHBicy1jbGllbnQvc3JjL3B4YXIvY3JlYXRlLnJz IHwgMTAwICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KPj4+ICAgMSBmaWxlIGNo YW5nZWQsIDY2IGluc2VydGlvbnMoKyksIDM0IGRlbGV0aW9ucygtKQo+Pj4KPj4+IGRpZmYgLS1n aXQgYS9wYnMtY2xpZW50L3NyYy9weGFyL2NyZWF0ZS5ycyBiL3Bicy1jbGllbnQvc3JjL3B4YXIv Y3JlYXRlLnJzCj4+PiBpbmRleCAyYTg0NDkyMmMuLjg1YmUwMGRiNCAxMDA2NDQKPj4+IC0tLSBh L3Bicy1jbGllbnQvc3JjL3B4YXIvY3JlYXRlLnJzCj4+PiArKysgYi9wYnMtY2xpZW50L3NyYy9w eGFyL2NyZWF0ZS5ycwo+Pj4gQEAgLTIyOCw3ICsyMjgsNyBAQCB3aGVyZQo+Pj4gICAgICAgbGV0 IG11dCBmc19mZWF0dXJlX2ZsYWdzID0gRmxhZ3M6OmZyb21fbWFnaWMoZnNfbWFnaWMpOwo+Pj4g ICAKPj4+ICAgICAgIGxldCBzdGF0ID0gbml4OjpzeXM6OnN0YXQ6OmZzdGF0KHNvdXJjZV9kaXIu YXNfcmF3X2ZkKCkpPzsKPj4+IC0gICAgbGV0IG1ldGFkYXRhID0gZ2V0X21ldGFkYXRhKAo+Pj4g KyAgICBsZXQgKG1ldGFkYXRhLCBzdGFsZV9mZCkgPSBnZXRfbWV0YWRhdGEoCj4+IAo+PiBzdGFs ZV9mZCBoZXJlIGlzIG5vdCB1c2VkIGF0IGFsbC4uCj4gCj4gWWVzLCB0aGF0IG9uZSBzaG91bGQg bGVhZCB0byBhIGhhcmQgZXJyb3IgYXMgeW91IG1lbnRpb25lZCwgc28gc2hvdWxkIGJlIAo+IGhh bmRsZWQgYWNjb3JkaW5nbHkuIEkgd2lsbCBhZGFwdCB0aGlzIHRvIGJlIGEgaGFyZCBlcnJvci4K PiAKPj4gCj4+PiAgICAgICAgICAgc291cmNlX2Rpci5hc19yYXdfZmQoKSwKPj4+ICAgICAgICAg ICAmc3RhdCwKPj4+ICAgICAgICAgICBmZWF0dXJlX2ZsYWdzICYgZnNfZmVhdHVyZV9mbGFncywK Pj4+IEBAIC03NDQsNyArNzQ0LDcgQEAgaW1wbCBBcmNoaXZlciB7Cj4+PiAgICAgICAgICAgICAg IHJldHVybiBPaygoKSk7Cj4+PiAgICAgICAgICAgfQo+Pj4gICAKPj4+IC0gICAgICAgIGxldCBt ZXRhZGF0YSA9IGdldF9tZXRhZGF0YSgKPj4+ICsgICAgICAgIGxldCAobWV0YWRhdGEsIHN0YWxl X2ZkKSA9IGdldF9tZXRhZGF0YSgKPj4gCj4+IHRoaXMgb25lIGlzIHVzZWQKPj4gCj4+PiAgICAg ICAgICAgICAgIGZkLmFzX3Jhd19mZCgpLAo+Pj4gICAgICAgICAgICAgICBzdGF0LAo+Pj4gICAg ICAgICAgICAgICBzZWxmLmZsYWdzKCksCj4+PiBAQCAtNzUzLDYgKzc1MywxMSBAQCBpbXBsIEFy Y2hpdmVyIHsKPj4+ICAgICAgICAgICAgICAgc2VsZi5za2lwX2UyYmlnX3hhdHRyLAo+Pj4gICAg ICAgICAgICk/Owo+Pj4gICAKPj4+ICsgICAgICAgIGlmIHN0YWxlX2ZkIHsKPj4+ICsgICAgICAg ICAgICBsb2c6Ondhcm4hKCJTdGFsZSBmaWxlaGFuZGxlIGVuY291bnRlcmVkLCBza2lwIHs6P30i LCBzZWxmLnBhdGgpOwo+Pj4gKyAgICAgICAgICAgIHJldHVybiBPaygoKSk7Cj4+PiArICAgICAg ICB9Cj4+IAo+PiBmb3IgdGhpcyB3YXJuaW5nLi4gYnV0IGdldF9tZXRhZGF0YSBhbHJlYWR5IGxv Z3MgKHBvdGVudGlhbGx5IG11bHRpcGxlCj4+IHRpbWVzIDspKSB0aGF0IHRoaW5ncyBhcmUgaW5j b21wbGV0ZSBjYXVzZSBvZiB0aGUgc3RhbGUgZmlsZWhhbmRsZSwgdGhpcwo+PiBvbmx5IGFkZHMg dGhlIHBhdGggY29udGV4dC4uCj4gCj4gYnV0IGhlcmUgdGhlcmUgaXMgYWxzbyBhbiBlYXJseSBy ZXR1cm4sIG5vdCBqdXN0IHRoZSBsb2cuLi4gdGhpcyBza2lwcyAKPiBvdmVyIGFkZGluZyB0aGlz IGVudHJ5LCBhbmQgYW55IHN1YiBlbnRyaWVzIGlmIHRoZSBlbnRyeSBpcyBhIGRpcmVjdG9yeS4K PiAKPiBUaGUgbG9nZ2luZyBjb3VsZCBob3dldmVyIGJlIG1vdmVkIHRvIHRoZSBnZXRfbWV0YWRh dGEgY2FsbCBhbmQgb25seSBiZSAKPiBsb2dnZWQgb25jZSwgYWdyZWVkLgo+IAo+PiAKPj4+ICsK Pj4+ICAgICAgICAgICBpZiBzZWxmLnByZXZpb3VzX3BheWxvYWRfaW5kZXguaXNfbm9uZSgpIHsK Pj4+ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKPj4+ICAgICAgICAgICAgICAgICAgIC5hZGRf ZW50cnlfdG9fYXJjaGl2ZShlbmNvZGVyLCAmbXV0IE5vbmUsIGNfZmlsZV9uYW1lLCBzdGF0LCBm ZCwgJm1ldGFkYXRhLCBOb25lKQo+Pj4gQEAgLTEzMDEsNyArMTMwNiwxNCBAQCBpbXBsIEFyY2hp dmVyIHsKPj4+ICAgICAgICAgICBmaWxlX25hbWU6ICZQYXRoLAo+Pj4gICAgICAgICAgIG1ldGFk YXRhOiAmTWV0YWRhdGEsCj4+PiAgICAgICApIC0+IFJlc3VsdDwoKSwgRXJyb3I+IHsKPj4+IC0g ICAgICAgIGxldCBkZXN0ID0gbml4OjpmY250bDo6cmVhZGxpbmthdChmZC5hc19yYXdfZmQoKSwg JmIiIlsuLl0pPzsKPj4+ICsgICAgICAgIGxldCBkZXN0ID0gbWF0Y2ggbml4OjpmY250bDo6cmVh ZGxpbmthdChmZC5hc19yYXdfZmQoKSwgJmIiIlsuLl0pIHsKPj4+ICsgICAgICAgICAgICBPayhk ZXN0KSA9PiBkZXN0LAo+Pj4gKyAgICAgICAgICAgIEVycihFcnJubzo6RVNUQUxFKSA9PiB7Cj4+ PiArICAgICAgICAgICAgICAgIGxvZzo6d2FybiEoIlN0YWxlIGZpbGUgaGFuZGxlIGVuY291bnRl cmVkLCBza2lwIHtmaWxlX25hbWU6P30iKTsKPj4+ICsgICAgICAgICAgICAgICAgcmV0dXJuIE9r KCgpKTsKPj4+ICsgICAgICAgICAgICB9Cj4+PiArICAgICAgICAgICAgRXJyKGVycikgPT4gcmV0 dXJuIEVycihlcnIuaW50bygpKSwKPj4+ICsgICAgICAgIH07Cj4+PiAgICAgICAgICAgZW5jb2Rl ci5hZGRfc3ltbGluayhtZXRhZGF0YSwgZmlsZV9uYW1lLCBkZXN0KS5hd2FpdD87Cj4+PiAgICAg ICAgICAgT2soKCkpCj4+PiAgICAgICB9Cj4+PiBAQCAtMTM5Nyw5ICsxNDA5LDEwIEBAIGZuIGdl dF9tZXRhZGF0YSgKPj4+ICAgICAgIGZzX21hZ2ljOiBpNjQsCj4+PiAgICAgICBmc19mZWF0dXJl X2ZsYWdzOiAmbXV0IEZsYWdzLAo+Pj4gICAgICAgc2tpcF9lMmJpZ194YXR0cjogYm9vbCwKPj4+ IC0pIC0+IFJlc3VsdDxNZXRhZGF0YSwgRXJyb3I+IHsKPj4+ICspIC0+IFJlc3VsdDwoTWV0YWRh dGEsIGJvb2wpLCBFcnJvcj4gewo+Pj4gICAgICAgLy8gcmVxdWlyZWQgZm9yIHNvbWUgb2YgdGhl c2UKPj4+ICAgICAgIGxldCBwcm9jX3BhdGggPSBQYXRoOjpuZXcoIi9wcm9jL3NlbGYvZmQvIiku am9pbihmZC50b19zdHJpbmcoKSk7Cj4+PiArICAgIGxldCBtdXQgc3RhbGVfZmQgPSBmYWxzZTsK Pj4+ICAgCj4+PiAgICAgICBsZXQgbXV0IG1ldGEgPSBNZXRhZGF0YSB7Cj4+PiAgICAgICAgICAg c3RhdDogcHhhcjo6U3RhdCB7Cj4+PiBAQCAtMTQxMiwxOCArMTQyNSwyNyBAQCBmbiBnZXRfbWV0 YWRhdGEoCj4+PiAgICAgICAgICAgLi5EZWZhdWx0OjpkZWZhdWx0KCkKPj4+ICAgICAgIH07Cj4+ PiAgIAo+Pj4gLSAgICBnZXRfeGF0dHJfZmNhcHNfYWNsKAo+Pj4gKyAgICBpZiBnZXRfeGF0dHJf ZmNhcHNfYWNsKAo+PiAKPj4gb25seSBjYWxsIHNpdGUsIGNvdWxkIGp1c3QgYnViYmxlIHVwIEVT VEFMRQo+IAo+IEFzIG1lbnRpb25lZCwgdGhpcyBoYXMgMiBpc3N1ZXM6IExvc3Mgb2YgYW55aG93 IGVycm9yIGNvbnRleHQgZm9yIHdoaWNoIAo+IHN1Yi1mdW5jdGlvbiB0aGUgRXJybm8gb2NjdXJy ZWQgYW5kIHN1Yi1mdW5jdGlvbnMgbGlrZSBgcHJvY2Vzc19hY2xgIAo+IHdoaWNoIGRvIG5vdCBy ZWx5IG9uIGZmaSBjYWxscyBhdCBhbGwsIHJldHVybmluZyBwbGFpbiBgYW55aG93OjpFcnJvcmAs IAo+IHdoaWNoIGdyYW50ZWQgY291bGQgYmUgcmVkZWZpbmVkIHRvIHJldHVybiBhbiBFcnJuby4K PiAKPj4gCj4+PiAgICAgICAgICAgJm11dCBtZXRhLAo+Pj4gICAgICAgICAgIGZkLAo+Pj4gICAg ICAgICAgICZwcm9jX3BhdGgsCj4+PiAgICAgICAgICAgZmxhZ3MsCj4+PiAgICAgICAgICAgZnNf ZmVhdHVyZV9mbGFncywKPj4+ICAgICAgICAgICBza2lwX2UyYmlnX3hhdHRyLAo+Pj4gLSAgICAp PzsKPj4+IC0gICAgZ2V0X2NoYXR0cigmbXV0IG1ldGEsIGZkKT87Cj4+PiArICAgICk/IHsKPj4+ ICsgICAgICAgIHN0YWxlX2ZkID0gdHJ1ZTsKPj4+ICsgICAgICAgIGxvZzo6d2FybiEoIlN0YWxl IGZpbGVoYW5kbGUsIHhhdHRycyBpbmNvbXBsZXRlIik7Cj4+PiArICAgIH0KPj4+ICsgICAgaWYg Z2V0X2NoYXR0cigmbXV0IG1ldGEsIGZkKT8gewo+PiAKPj4gc2FtZQo+PiAKPj4+ICsgICAgICAg IHN0YWxlX2ZkID0gdHJ1ZTsKPj4+ICsgICAgICAgIGxvZzo6d2FybiEoIlN0YWxlIGZpbGVoYW5k bGUsIGNoYXR0ciBpbmNvbXBsZXRlIik7Cj4+PiArICAgIH0KPj4+ICAgICAgIGdldF9mYXRfYXR0 cigmbXV0IG1ldGEsIGZkLCBmc19tYWdpYyk/Owo+Pj4gLSAgICBnZXRfcXVvdGFfcHJvamVjdF9p ZCgmbXV0IG1ldGEsIGZkLCBmbGFncywgZnNfbWFnaWMpPzsKPj4+IC0gICAgT2sobWV0YSkKPj4+ ICsgICAgaWYgZ2V0X3F1b3RhX3Byb2plY3RfaWQoJm11dCBtZXRhLCBmZCwgZmxhZ3MsIGZzX21h Z2ljKT8gewo+PiAKPj4gc2FtZQo+PiAKPj4+ICsgICAgICAgIHN0YWxlX2ZkID0gdHJ1ZTsKPj4+ ICsgICAgICAgIGxvZzo6d2FybiEoIlN0YWxlIGZpbGVoYW5kbGUsIHF1b3RhICBwcm9qZWN0IGlk IGluY29tcGxldGUiKTsKPj4+ICsgICAgfQo+PiAKPj4gc2VlIGFib3ZlIGFuZCB3YXkgZG93biBi ZWxvdywgSU1ITyBhbGwgb2YgdGhlc2UgY291bGQganVzdCBidWJibGUgdXAgdGhlIGVycm9yLi4K Pj4gCj4+PiArICAgIE9rKChtZXRhLCBzdGFsZV9mZCkpCj4+PiAgIH0KPj4+ICAgCj4+PiAgIGZu IGdldF9mY2FwcygKPj4+IEBAIC0xNDMxLDIyICsxNDUzLDIzIEBAIGZuIGdldF9mY2FwcygKPj4+ ICAgICAgIGZkOiBSYXdGZCwKPj4+ICAgICAgIGZsYWdzOiBGbGFncywKPj4+ICAgICAgIGZzX2Zl YXR1cmVfZmxhZ3M6ICZtdXQgRmxhZ3MsCj4+PiAtKSAtPiBSZXN1bHQ8KCksIEVycm9yPiB7Cj4+ PiArKSAtPiBSZXN1bHQ8Ym9vbCwgRXJyb3I+IHsKPj4gCj4+IHRoaXMgaXMgb25seSBjYWxsZWQg YnkgZ2V0X3hhdHRyX2ZjYXBzX2FjbCwgc28gY291bGQganVzdCBidWJibGUgdXAKPj4gRVNUQUxF IGFzIHdlbGwuLgo+PiAKPj4+ICAgICAgIGlmICFmbGFncy5jb250YWlucyhGbGFnczo6V0lUSF9G Q0FQUykgewo+Pj4gLSAgICAgICAgcmV0dXJuIE9rKCgpKTsKPj4+ICsgICAgICAgIHJldHVybiBP ayhmYWxzZSk7Cj4+PiAgICAgICB9Cj4+PiAgIAo+Pj4gICAgICAgbWF0Y2ggeGF0dHI6OmZnZXR4 YXR0cihmZCwgeGF0dHI6OlhBVFRSX05BTUVfRkNBUFMpIHsKPj4+ICAgICAgICAgICBPayhkYXRh KSA9PiB7Cj4+PiAgICAgICAgICAgICAgIG1ldGEuZmNhcHMgPSBTb21lKHB4YXI6OmZvcm1hdDo6 RkNhcHMgeyBkYXRhIH0pOwo+Pj4gLSAgICAgICAgICAgIE9rKCgpKQo+Pj4gKyAgICAgICAgICAg IE9rKGZhbHNlKQo+Pj4gICAgICAgICAgIH0KPj4+IC0gICAgICAgIEVycihFcnJubzo6RU5PREFU QSkgPT4gT2soKCkpLAo+Pj4gKyAgICAgICAgRXJyKEVycm5vOjpFTk9EQVRBKSA9PiBPayhmYWxz ZSksCj4+PiAgICAgICAgICAgRXJyKEVycm5vOjpFT1BOT1RTVVBQKSA9PiB7Cj4+PiAgICAgICAg ICAgICAgIGZzX2ZlYXR1cmVfZmxhZ3MucmVtb3ZlKEZsYWdzOjpXSVRIX0ZDQVBTKTsKPj4+IC0g ICAgICAgICAgICBPaygoKSkKPj4+ICsgICAgICAgICAgICBPayhmYWxzZSkKPj4+ICAgICAgICAg ICB9Cj4+PiAtICAgICAgICBFcnIoRXJybm86OkVCQURGKSA9PiBPaygoKSksIC8vIHN5bWxpbmtz Cj4+PiArICAgICAgICBFcnIoRXJybm86OkVCQURGKSA9PiBPayhmYWxzZSksIC8vIHN5bWxpbmtz Cj4+PiArICAgICAgICBFcnIoRXJybm86OkVTVEFMRSkgPT4gT2sodHJ1ZSksCj4+PiAgICAgICAg ICAgRXJyKGVycikgPT4gRXJyKGVycikuY29udGV4dCgiZmFpbGVkIHRvIHJlYWQgZmlsZSBjYXBh YmlsaXRpZXMiKSwKPj4+ICAgICAgIH0KPj4+ICAgfQo+Pj4gQEAgLTE0NTgsMzIgKzE0ODEsMzUg QEAgZm4gZ2V0X3hhdHRyX2ZjYXBzX2FjbCgKPj4+ICAgICAgIGZsYWdzOiBGbGFncywKPj4+ICAg ICAgIGZzX2ZlYXR1cmVfZmxhZ3M6ICZtdXQgRmxhZ3MsCj4+PiAgICAgICBza2lwX2UyYmlnX3hh dHRyOiBib29sLAo+Pj4gLSkgLT4gUmVzdWx0PCgpLCBFcnJvcj4gewo+Pj4gKykgLT4gUmVzdWx0 PGJvb2wsIEVycm9yPiB7Cj4+PiAgICAgICBpZiAhZmxhZ3MuY29udGFpbnMoRmxhZ3M6OldJVEhf WEFUVFJTKSB7Cj4+PiAtICAgICAgICByZXR1cm4gT2soKCkpOwo+Pj4gKyAgICAgICAgcmV0dXJu IE9rKGZhbHNlKTsKPj4+ICAgICAgIH0KPj4+ICAgCj4+PiAgICAgICBsZXQgeGF0dHJzID0gbWF0 Y2ggeGF0dHI6OmZsaXN0eGF0dHIoZmQpIHsKPj4+ICAgICAgICAgICBPayhuYW1lcykgPT4gbmFt ZXMsCj4+PiAgICAgICAgICAgRXJyKEVycm5vOjpFT1BOT1RTVVBQKSA9PiB7Cj4+PiAgICAgICAg ICAgICAgIGZzX2ZlYXR1cmVfZmxhZ3MucmVtb3ZlKEZsYWdzOjpXSVRIX1hBVFRSUyk7Cj4+PiAt ICAgICAgICAgICAgcmV0dXJuIE9rKCgpKTsKPj4+ICsgICAgICAgICAgICByZXR1cm4gT2soZmFs c2UpOwo+Pj4gICAgICAgICAgIH0KPj4+ICAgICAgICAgICBFcnIoRXJybm86OkUyQklHKSA9PiB7 Cj4+PiAgICAgICAgICAgICAgIG1hdGNoIHNraXBfZTJiaWdfeGF0dHIgewo+Pj4gLSAgICAgICAg ICAgICAgICB0cnVlID0+IHJldHVybiBPaygoKSksCj4+PiArICAgICAgICAgICAgICAgIHRydWUg PT4gcmV0dXJuIE9rKGZhbHNlKSwKPj4+ICAgICAgICAgICAgICAgICAgIGZhbHNlID0+IHsKPj4+ ICAgICAgICAgICAgICAgICAgICAgICBiYWlsISgie30gKHRyeSAtLXNraXAtZTJiaWcteGF0dHIp IiwgRXJybm86OkUyQklHLnRvX3N0cmluZygpKTsKPj4+ICAgICAgICAgICAgICAgICAgIH0KPj4+ ICAgICAgICAgICAgICAgfTsKPj4+ICAgICAgICAgICB9Cj4+PiAtICAgICAgICBFcnIoRXJybm86 OkVCQURGKSA9PiByZXR1cm4gT2soKCkpLCAvLyBzeW1saW5rcwo+Pj4gKyAgICAgICAgRXJyKEVy cm5vOjpFQkFERikgPT4gcmV0dXJuIE9rKGZhbHNlKSwgLy8gc3ltbGlua3MKPj4+ICsgICAgICAg IEVycihFcnJubzo6RVNUQUxFKSA9PiByZXR1cm4gT2sodHJ1ZSksCj4+IAo+PiBzZWUgYWJvdmUK Pj4gCj4+PiAgICAgICAgICAgRXJyKGVycikgPT4gcmV0dXJuIEVycihlcnIpLmNvbnRleHQoImZh aWxlZCB0byByZWFkIHhhdHRycyIpLAo+Pj4gICAgICAgfTsKPj4+ICAgCj4+PiAgICAgICBmb3Ig YXR0ciBpbiAmeGF0dHJzIHsKPj4+ICAgICAgICAgICBpZiB4YXR0cjo6aXNfc2VjdXJpdHlfY2Fw YWJpbGl0eShhdHRyKSB7Cj4+PiAtICAgICAgICAgICAgZ2V0X2ZjYXBzKG1ldGEsIGZkLCBmbGFn cywgZnNfZmVhdHVyZV9mbGFncyk/Owo+Pj4gKyAgICAgICAgICAgIGlmIGdldF9mY2FwcyhtZXRh LCBmZCwgZmxhZ3MsIGZzX2ZlYXR1cmVfZmxhZ3MpPyB7Cj4+PiArICAgICAgICAgICAgICAgIHJl dHVybiBPayh0cnVlKTsKPj4gCj4+IHNlZSBhYm92ZQo+PiAKPj4+ICsgICAgICAgICAgICB9Cj4+ PiAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+Pj4gICAgICAgICAgIH0KPj4+ICAgCj4+PiBAQCAt MTUwNSwzNSArMTUzMSwzNyBAQCBmbiBnZXRfeGF0dHJfZmNhcHNfYWNsKAo+Pj4gICAgICAgICAg ICAgICBFcnIoRXJybm86OkVCQURGKSA9PiAoKSwgICAvLyBzeW1saW5rcywgc2hvdWxkbid0IGJl IGFibGUgdG8gcmVhY2ggdGhpcyBlaXRoZXIKPj4+ICAgICAgICAgICAgICAgRXJyKEVycm5vOjpF MkJJRykgPT4gewo+Pj4gICAgICAgICAgICAgICAgICAgbWF0Y2ggc2tpcF9lMmJpZ194YXR0ciB7 Cj4+PiAtICAgICAgICAgICAgICAgICAgICB0cnVlID0+IHJldHVybiBPaygoKSksCj4+PiArICAg ICAgICAgICAgICAgICAgICB0cnVlID0+IHJldHVybiBPayhmYWxzZSksCj4+PiAgICAgICAgICAg ICAgICAgICAgICAgZmFsc2UgPT4gewo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICBiYWls ISgie30gKHRyeSAtLXNraXAtZTJiaWcteGF0dHIpIiwgRXJybm86OkUyQklHLnRvX3N0cmluZygp KTsKPj4+ICAgICAgICAgICAgICAgICAgICAgICB9Cj4+PiAgICAgICAgICAgICAgICAgICB9Owo+ Pj4gICAgICAgICAgICAgICB9Cj4+PiArICAgICAgICAgICAgRXJyKEVycm5vOjpFU1RBTEUpID0+ IHJldHVybiBPayh0cnVlKSwgLy8gc3ltbGlua3MKPj4gCj4+IHNhbWUgaGVyZSAoYW5kIHN0cmF5 IGNvcHktcGFzdGUgY29tbWVudCBJIGd1ZXNzPykKPj4gCj4+PiAgICAgICAgICAgICAgIEVycihl cnIpID0+IHsKPj4+ICAgICAgICAgICAgICAgICAgIHJldHVybiBFcnIoZXJyKS5jb250ZXh0KGZv cm1hdCEoImVycm9yIHJlYWRpbmcgZXh0ZW5kZWQgYXR0cmlidXRlIHthdHRyOj99IikpCj4+PiAg ICAgICAgICAgICAgIH0KPj4+ICAgICAgICAgICB9Cj4+PiAgICAgICB9Cj4+PiAgIAo+Pj4gLSAg ICBPaygoKSkKPj4+ICsgICAgT2soZmFsc2UpCj4+PiAgIH0KPj4+ICAgCj4+PiAtZm4gZ2V0X2No YXR0cihtZXRhZGF0YTogJm11dCBNZXRhZGF0YSwgZmQ6IFJhd0ZkKSAtPiBSZXN1bHQ8KCksIEVy cm9yPiB7Cj4+PiArZm4gZ2V0X2NoYXR0cihtZXRhZGF0YTogJm11dCBNZXRhZGF0YSwgZmQ6IFJh d0ZkKSAtPiBSZXN1bHQ8Ym9vbCwgRXJyb3I+IHsKPj4+ICAgICAgIGxldCBtdXQgYXR0cjogbGli Yzo6Y19sb25nID0gMDsKPj4+ICAgCj4+PiAgICAgICBtYXRjaCB1bnNhZmUgeyBmczo6cmVhZF9h dHRyX2ZkKGZkLCAmbXV0IGF0dHIpIH0gewo+Pj4gICAgICAgICAgIE9rKF8pID0+ICgpLAo+Pj4g KyAgICAgICAgRXJyKEVycm5vOjpFU1RBTEUpID0+IHJldHVybiBPayh0cnVlKSwKPj4+ICAgICAg ICAgICBFcnIoZXJybm8pIGlmIGVycm5vX2lzX3Vuc3VwcG9ydGVkKGVycm5vKSA9PiB7Cj4+PiAt ICAgICAgICAgICAgcmV0dXJuIE9rKCgpKTsKPj4+ICsgICAgICAgICAgICByZXR1cm4gT2soZmFs c2UpOwo+Pj4gICAgICAgICAgIH0KPj4+ICAgICAgICAgICBFcnIoZXJyKSA9PiByZXR1cm4gRXJy KGVycikuY29udGV4dCgiZmFpbGVkIHRvIHJlYWQgZmlsZSBhdHRyaWJ1dGVzIiksCj4+PiAgICAg ICB9Cj4+PiAgIAo+Pj4gICAgICAgbWV0YWRhdGEuc3RhdC5mbGFncyB8PSBGbGFnczo6ZnJvbV9j aGF0dHIoYXR0cikuYml0cygpOwo+Pj4gICAKPj4+IC0gICAgT2soKCkpCj4+PiArICAgIE9rKGZh bHNlKQo+Pj4gICB9Cj4+PiAgIAo+Pj4gICBmbiBnZXRfZmF0X2F0dHIobWV0YWRhdGE6ICZtdXQg TWV0YWRhdGEsIGZkOiBSYXdGZCwgZnNfbWFnaWM6IGk2NCkgLT4gUmVzdWx0PCgpLCBFcnJvcj4g ewo+Pj4gQEAgLTE1NjQsMzAgKzE1OTIsMzQgQEAgZm4gZ2V0X3F1b3RhX3Byb2plY3RfaWQoCj4+ PiAgICAgICBmZDogUmF3RmQsCj4+PiAgICAgICBmbGFnczogRmxhZ3MsCj4+PiAgICAgICBtYWdp YzogaTY0LAo+Pj4gLSkgLT4gUmVzdWx0PCgpLCBFcnJvcj4gewo+Pj4gKykgLT4gUmVzdWx0PGJv b2wsIEVycm9yPiB7Cj4+IAo+PiBzZWUgYWJvdmUKPj4gCj4+PiAgICAgICBpZiAhKG1ldGFkYXRh LmlzX2RpcigpIHx8IG1ldGFkYXRhLmlzX3JlZ3VsYXJfZmlsZSgpKSB7Cj4+PiAtICAgICAgICBy ZXR1cm4gT2soKCkpOwo+Pj4gKyAgICAgICAgcmV0dXJuIE9rKGZhbHNlKTsKPj4+ICAgICAgIH0K Pj4+ICAgCj4+PiAgICAgICBpZiAhZmxhZ3MuY29udGFpbnMoRmxhZ3M6OldJVEhfUVVPVEFfUFJP SklEKSB7Cj4+PiAtICAgICAgICByZXR1cm4gT2soKCkpOwo+Pj4gKyAgICAgICAgcmV0dXJuIE9r KGZhbHNlKTsKPj4+ICAgICAgIH0KPj4+ICAgCj4+PiAgICAgICB1c2UgcHJveG1veF9zeXM6Omxp bnV4OjptYWdpYzo6KjsKPj4+ICAgCj4+PiAgICAgICBtYXRjaCBtYWdpYyB7Cj4+PiAgICAgICAg ICAgRVhUNF9TVVBFUl9NQUdJQyB8IFhGU19TVVBFUl9NQUdJQyB8IEZVU0VfU1VQRVJfTUFHSUMg fCBaRlNfU1VQRVJfTUFHSUMgPT4gKCksCj4+PiAtICAgICAgICBfID0+IHJldHVybiBPaygoKSks Cj4+PiArICAgICAgICBfID0+IHJldHVybiBPayhmYWxzZSksCj4+PiAgICAgICB9Cj4+PiAgIAo+ Pj4gICAgICAgbGV0IG11dCBmc3hhdHRyID0gZnM6OkZTWEF0dHI6OmRlZmF1bHQoKTsKPj4+ICAg ICAgIGxldCByZXMgPSB1bnNhZmUgeyBmczo6ZnNfaW9jX2ZzZ2V0eGF0dHIoZmQsICZtdXQgZnN4 YXR0cikgfTsKPj4+ICAgCj4+PiArICAgIGlmIGxldCBFcnIoRXJybm86OkVTVEFMRSkgPSByZXMg ewo+Pj4gKyAgICAgICAgcmV0dXJuIE9rKHRydWUpOwo+Pj4gKyAgICB9Cj4+PiArCj4+PiAgICAg ICAvLyBPbiBzb21lIEZVU0UgZmlsZXN5c3RlbXMgaXQgY2FuIGhhcHBlbiB0aGF0IGlvY3RsIGlz IG5vdCBzdXBwb3J0ZWQuCj4+PiAgICAgICAvLyBGb3IgdGhlc2UgY2FzZXMgcHJvamlkIGlzIHNl dCB0byAwIHdoaWxlIHRoZSBlcnJvciBpcyBpZ25vcmVkLgo+Pj4gICAgICAgaWYgbGV0IEVycihl cnJubykgPSByZXMgewo+Pj4gICAgICAgICAgIGlmIGVycm5vX2lzX3Vuc3VwcG9ydGVkKGVycm5v KSB7Cj4+PiAtICAgICAgICAgICAgcmV0dXJuIE9rKCgpKTsKPj4+ICsgICAgICAgICAgICByZXR1 cm4gT2soZmFsc2UpOwo+Pj4gICAgICAgICAgIH0gZWxzZSB7Cj4+PiAgICAgICAgICAgICAgIHJl dHVybiBFcnIoZXJybm8pLmNvbnRleHQoImVycm9yIHdoaWxlIHJlYWRpbmcgcXVvdGEgcHJvamVj dCBpZCIpOwo+Pj4gICAgICAgICAgIH0KPj4+IEBAIC0xNTk3LDcgKzE2MjksNyBAQCBmbiBnZXRf cXVvdGFfcHJvamVjdF9pZCgKPj4+ICAgICAgIGlmIHByb2ppZCAhPSAwIHsKPj4+ICAgICAgICAg ICBtZXRhZGF0YS5xdW90YV9wcm9qZWN0X2lkID0gU29tZShweGFyOjpmb3JtYXQ6OlF1b3RhUHJv amVjdElkIHsgcHJvamlkIH0pOwo+Pj4gICAgICAgfQo+Pj4gLSAgICBPaygoKSkKPj4+ICsgICAg T2soZmFsc2UpCj4+PiAgIH0KPj4+ICAgCj4+PiAgIGZuIGdldF9hY2woCj4+PiBAQCAtMTg0MCw3 ICsxODcyLDcgQEAgbW9kIHRlc3RzIHsKPj4+ICAgICAgICAgICBsZXQgZnNfbWFnaWMgPSBkZXRl Y3RfZnNfdHlwZShkaXIuYXNfcmF3X2ZkKCkpLnVud3JhcCgpOwo+Pj4gICAgICAgICAgIGxldCBz dGF0ID0gbml4OjpzeXM6OnN0YXQ6OmZzdGF0KGRpci5hc19yYXdfZmQoKSkudW53cmFwKCk7Cj4+ PiAgICAgICAgICAgbGV0IG11dCBmc19mZWF0dXJlX2ZsYWdzID0gRmxhZ3M6OmZyb21fbWFnaWMo ZnNfbWFnaWMpOwo+Pj4gLSAgICAgICAgbGV0IG1ldGFkYXRhID0gZ2V0X21ldGFkYXRhKAo+Pj4g KyAgICAgICAgbGV0IChtZXRhZGF0YSwgXykgPSBnZXRfbWV0YWRhdGEoCj4+IAo+PiBubyB1c2Ug b2YgdGhlIG5ldyByZXR1cm4gdmFsdWUKPj4gCj4+PiAgICAgICAgICAgICAgIGRpci5hc19yYXdf ZmQoKSwKPj4+ICAgICAgICAgICAgICAgJnN0YXQsCj4+PiAgICAgICAgICAgICAgIGZzX2ZlYXR1 cmVfZmxhZ3MsCj4+PiBAQCAtMTkzNyw3ICsxOTY5LDcgQEAgbW9kIHRlc3RzIHsKPj4+ICAgICAg ICAgICAgICAgbGV0IHN0YXQgPSBuaXg6OnN5czo6c3RhdDo6ZnN0YXQoc291cmNlX2Rpci5hc19y YXdfZmQoKSkudW53cmFwKCk7Cj4+PiAgICAgICAgICAgICAgIGxldCBtdXQgZnNfZmVhdHVyZV9m bGFncyA9IEZsYWdzOjpmcm9tX21hZ2ljKGZzX21hZ2ljKTsKPj4+ICAgCj4+PiAtICAgICAgICAg ICAgbGV0IG1ldGFkYXRhID0gZ2V0X21ldGFkYXRhKAo+Pj4gKyAgICAgICAgICAgIGxldCAobWV0 YWRhdGEsIF8pID0gZ2V0X21ldGFkYXRhKAo+PiAKPj4gbm8gdXNlIGVpdGhlci4uIHNvIHdvdWxk bid0IGl0IG1ha2UgbW9yZSBzZW5zZSB0byBwYXNzIGluIGEgcGF0aCBhbmQgbG9nCj4+IHRoZSBj b250ZXh0IHJpZ2h0IGluIGdldF9tZXRhZGF0YT8gb3IgdHJlYXQgdGhlIHN0YWxlIEZEIGFzIGFu IGVycm9yLAo+PiBhbmQgYWRkIHRoZSBjb250ZXh0L3BhdGggYXMgcGFydCBvZiBlcnJvciBoYW5k bGluZz8KPiAKPiBUaGUgZmlyc3QgYXBwcm9hY2ggc2VlbXMgYmV0dGVyLCB3aWxsIGhvd2V2ZXIg bm90IGhlbHAgdG8gZGlmZmVyZW50aWF0ZSAKPiB0aGUgKGhhcmQpIGVycm9ycyBmcm9tIHRoZSBz b2Z0IGVycm9yIEVTVEFMRSwgd2hpY2ggcmVxdWlyZXMgdG8gc2tpcCAKPiBvdmVyIGVudHJpZXMg YXQgdGhlIGBnZXRfbWV0YWRhdGFgIGNhbGwgc2lkZSBjb25kaXRpb25hbGx5Lgo+IAo+IFJldHVy bmluZyB0aGUgc3RhbGUgZmlsZSBoYW5kbGUgZXJyb3IgYXMgYEFueWhvdzo6RXJyb3JgIGFsc28g ZG9lcyBub3QgCj4gYWxsb3cgdG8gZGlzdGluZ3Vpc2ggZnJvbSBvdGhlciAoaGFyZCkgZXJyb3Jz LCBzbyBhZ2FpbiBpdCBjYW5ub3QgYmUgCj4gaGFuZGxlZCBhcyBzb2Z0IGVycm9yIGF0IHRoZSBj YWxsIHNpdGUuCj4gCj4gQW5kIHJldHVybmluZyBhbGwgZXJyb3JzIGFzIGBFcnJub2AgaGFzIHRo ZSBsb3NzIG9mIGVycm9yIGNvbnRleHQgaXNzdWUgCj4gYXMgZGVzY3JpYmVkIGFib3ZlLgo+IAo+ IEkgd2lsbCBzZWUgaWYgSSBjYW4gY292ZXIgdGhpcyBiZXR0ZXIgYnkgcmVmYWN0b3JpbmcgdGhl IGNvZGUsIGFzIG1vc3QgCj4gb2YgdGhlIGhlbHBlcnMgaGF2ZSBhIHNpbmdsZSBjYWxsIHNpZGUs IHNvIGl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byAKPiByZW9yZ2FuaXplIHdpdGhvdXQgbXVjaCBz aWRlIGVmZmVjdHMuCj4gCj4+IAo+PiB0aGUgZm91ciBjYWxsIHNpdGVzIGFyZToKPj4gLSB0d28g cmVsYXRlZCB0byB0ZXN0cywgd2UgY2FuIHByb2JhYmx5IHRyZWF0IEVTVEFMRSBhcyBoYXJkIGVy cm9yIHRoZXJlCj4+IC0gdGhlIG9uZSBmb3Igb2J0YWluaW5nIHRoZSBtZXRhZGF0YSBvZiB0aGUg c291cmNlIGRpciBvZiB0aGUgYXJjaGl2ZSwKPj4gICAgaWYgdGhhdCBpcyBzdGFsZSB3ZSBjYW4n dCBjcmVhdGUgYW4gYXJjaGl2ZSAtPiBoYXJkIGVycm9yIGFzIHdlbGwKPj4gLSBhZGRpbmcgYW4g ZW50cnk6IGZvciB0aGUgc3RhbGUgY2FzZSwgd2UgYWxyZWFkeSBsb2cgYSB3YXJuaW5nIGFuZAo+ PiAgICBwcm9jZWVkIHdpdGggdGhlIG5leHQgZW50cnksIHNvIHdlIGRvbid0IGJlbmVmaXQgZnJv bSB0aGUgZmFjdCB0aGF0Cj4+ICAgIChpbmNvbXBsZXRlKSBtZXRhZGF0YSBhbmQgdGhlIHN0YWxl bmVzcyBpcyByZXR1cm5lZCwgYXMgb3Bwb3NlZCB0bwo+PiAgICBqdXN0IHRyZWF0aW5nIEVTVEFM RSBhcyBhbiBlcnJvciB0aGF0IHdlIGNhbiAiY2F0Y2giIGFuZCBoYW5kbGUuLgo+PiAKPj4+ICAg ICAgICAgICAgICAgICAgIHNvdXJjZV9kaXIuYXNfcmF3X2ZkKCksCj4+PiAgICAgICAgICAgICAg ICAgICAmc3RhdCwKPj4+ICAgICAgICAgICAgICAgICAgIGZzX2ZlYXR1cmVfZmxhZ3MsCj4+PiAt LSAKPj4+IDIuMzkuNQo+Pj4KPj4+Cj4+Pgo+Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KPj4+IHBicy1kZXZlbCBtYWlsaW5nIGxpc3QKPj4+IHBicy1k ZXZlbEBsaXN0cy5wcm94bW94LmNvbQo+Pj4gaHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9jZ2kt YmluL21haWxtYW4vbGlzdGluZm8vcGJzLWRldmVsCj4+Pgo+Pj4KPj4+Cj4+IAo+PiAKPj4gX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4gcGJzLWRldmVs IG1haWxpbmcgbGlzdAo+PiBwYnMtZGV2ZWxAbGlzdHMucHJveG1veC5jb20KPj4gaHR0cHM6Ly9s aXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vcGJzLWRldmVsCj4+IAo+ PiAKPiAKPiAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpwYnMtZGV2ZWwgbWFpbGluZyBsaXN0CnBicy1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQpodHRw czovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wYnMtZGV2ZWwK