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 7A4D21FF164 for <inbox@lore.proxmox.com>; Fri, 9 May 2025 14:59:32 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 4C2373DF10; Fri, 9 May 2025 14:59:51 +0200 (CEST) Message-ID: <39b85c49-8a09-4702-8a76-2d7bdbc500e5@proxmox.com> Date: Fri, 9 May 2025 14:59:16 +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: <20250508130555.494782-1-c.ebner@proxmox.com> <20250508130555.494782-19-c.ebner@proxmox.com> <1746793013.k8qdvp27bh.astroid@yuna.none> Content-Language: en-US, de-DE From: Christian Ebner <c.ebner@proxmox.com> In-Reply-To: <1746793013.k8qdvp27bh.astroid@yuna.none> X-SPAM-LEVEL: Spam detection results: 0 AWL -0.522 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 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 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. [datastore.rs, proxmox.com] Subject: Re: [pbs-devel] [RFC v2 proxmox-backup 18/21] api: admin: implement endpoints to restore trashed contents 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> VGhhbmtzIGZvciBmZWVkYmFjaywgd2lsbCBoYXZlIGEgY2xvc2VyIGxvb2sgbmV4dCB3ZWVrLgoK QWxsb3cgbWUgdHdvIHF1aWNrIHF1ZXN0aW9ucyBpbmxpbmUgdGhvdWdoLi4uCgpPbiA1LzkvMjUg MTQ6MjcsIEZhYmlhbiBHcsO8bmJpY2hsZXIgd3JvdGU6Cj4gT24gTWF5IDgsIDIwMjUgMzowNSBw bSwgQ2hyaXN0aWFuIEVibmVyIHdyb3RlOgo+PiBJbXBsZW1lbnRzIHRoZSBhcGkgZW5kcG9pbnRz IHRvIHJlc3RvcmUgdHJhc2hlZCBjb250ZW50cyBjb250YWluZWQKPj4gd2l0aGluIG5hbWVzcGFj ZXMsIGJhY2t1cCBncm91cHMgb3IgaW5kaXZpZHVhbCBzbmFwc2hvdHMuCj4+Cj4+IFNpZ25lZC1v ZmYtYnk6IENocmlzdGlhbiBFYm5lciA8Yy5lYm5lckBwcm94bW94LmNvbT4KPj4gLS0tCj4+ICAg c3JjL2FwaTIvYWRtaW4vZGF0YXN0b3JlLnJzIHwgMTczICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrLQo+PiAgIDEgZmlsZSBjaGFuZ2VkLCAxNzIgaW5zZXJ0aW9ucygrKSwgMSBk ZWxldGlvbigtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvc3JjL2FwaTIvYWRtaW4vZGF0YXN0b3JlLnJz IGIvc3JjL2FwaTIvYWRtaW4vZGF0YXN0b3JlLnJzCj4+IGluZGV4IGNiZDI0YzcyOS4uZWIwMzNj M2ZjIDEwMDY0NAo+PiAtLS0gYS9zcmMvYXBpMi9hZG1pbi9kYXRhc3RvcmUucnMKPj4gKysrIGIv c3JjL2FwaTIvYWRtaW4vZGF0YXN0b3JlLnJzCj4+IEBAIC01MSw3ICs1MSw3IEBAIHVzZSBwYnNf YXBpX3R5cGVzOjp7Cj4+ICAgfTsKPj4gICB1c2UgcGJzX2NsaWVudDo6cHhhcjo6e2NyZWF0ZV90 YXIsIGNyZWF0ZV96aXB9Owo+PiAgIHVzZSBwYnNfY29uZmlnOjpDYWNoZWRVc2VySW5mbzsKPj4g LXVzZSBwYnNfZGF0YXN0b3JlOjpiYWNrdXBfaW5mbzo6e0JhY2t1cEluZm8sIExpc3RCYWNrdXBG aWx0ZXJ9Owo+PiArdXNlIHBic19kYXRhc3RvcmU6OmJhY2t1cF9pbmZvOjp7QmFja3VwSW5mbywg TGlzdEJhY2t1cEZpbHRlciwgVFJBU0hfTUFSS0VSX0ZJTEVOQU1FfTsKPj4gICB1c2UgcGJzX2Rh dGFzdG9yZTo6Y2FjaGVkX2NodW5rX3JlYWRlcjo6Q2FjaGVkQ2h1bmtSZWFkZXI7Cj4+ICAgdXNl IHBic19kYXRhc3RvcmU6OmNhdGFsb2c6OntBcmNoaXZlRW50cnksIENhdGFsb2dSZWFkZXJ9Owo+ PiAgIHVzZSBwYnNfZGF0YXN0b3JlOjpkYXRhX2Jsb2I6OkRhdGFCbG9iOwo+PiBAQCAtMjcyNyw2 ICsyNzI3LDE2NSBAQCBwdWIgYXN5bmMgZm4gdW5tb3VudChzdG9yZTogU3RyaW5nLCBycGNlbnY6 ICZtdXQgZHluIFJwY0Vudmlyb25tZW50KSAtPiBSZXN1bHQ8Vgo+PiAgICAgICBPayhqc29uISh1 cGlkKSkKPj4gICB9Cj4+ICAgCj4+ICsjW2FwaSgKPj4gKyAgICBpbnB1dDogewo+PiArICAgICAg ICBwcm9wZXJ0aWVzOiB7Cj4+ICsgICAgICAgICAgICBzdG9yZTogeyBzY2hlbWE6IERBVEFTVE9S RV9TQ0hFTUEgfSwKPj4gKyAgICAgICAgICAgIG5zOiB7IHR5cGU6IEJhY2t1cE5hbWVzcGFjZSwg fSwKPj4gKyAgICAgICAgfSwKPj4gKyAgICB9LAo+PiArICAgIGFjY2Vzczogewo+PiArICAgICAg ICBwZXJtaXNzaW9uOiAmUGVybWlzc2lvbjo6QW55Ym9keSwKPj4gKyAgICAgICAgZGVzY3JpcHRp b246ICJSZXF1aXJlcyBvbiAvZGF0YXN0b3JlL3tzdG9yZX1bL3tuYW1lc3BhY2V9XSBlaXRoZXIg REFUQVNUT1JFX01PRElGWSBmb3IgYW55IFwKPj4gKyAgICAgICAgICAgIG9yIERBVEFTVE9SRV9C QUNLVVAgYW5kIGJlaW5nIHRoZSBvd25lciBvZiB0aGUgZ3JvdXAiLAo+PiArICAgIH0sCj4+ICsp XQo+PiArLy8vIFJlY292ZXIgdHJhc2hlZCBjb250ZW50cyBvZiBhIG5hbWVzcGFjZS4KPj4gK3B1 YiBmbiByZWNvdmVyX25hbWVzcGFjZSgKPj4gKyAgICBzdG9yZTogU3RyaW5nLAo+PiArICAgIG5z OiBCYWNrdXBOYW1lc3BhY2UsCj4+ICsgICAgcnBjZW52OiAmbXV0IGR5biBScGNFbnZpcm9ubWVu dCwKPj4gKykgLT4gUmVzdWx0PCgpLCBFcnJvcj4gewo+PiArICAgIGxldCBhdXRoX2lkOiBBdXRo aWQgPSBycGNlbnYuZ2V0X2F1dGhfaWQoKS51bndyYXAoKS5wYXJzZSgpPzsKPj4gKyAgICBsZXQg bGltaXRlZCA9IGNoZWNrX25zX3ByaXZzX2Z1bGwoCj4+ICsgICAgICAgICZzdG9yZSwKPj4gKyAg ICAgICAgJm5zLAo+PiArICAgICAgICAmYXV0aF9pZCwKPj4gKyAgICAgICAgUFJJVl9EQVRBU1RP UkVfTU9ESUZZLAo+PiArICAgICAgICBQUklWX0RBVEFTVE9SRV9CQUNLVVAsCj4+ICsgICAgKT87 Cj4+ICsKPj4gKyAgICBsZXQgZGF0YXN0b3JlID0gRGF0YVN0b3JlOjpsb29rdXBfZGF0YXN0b3Jl KCZzdG9yZSwgU29tZShPcGVyYXRpb246OldyaXRlKSk/Owo+PiArCj4+ICsgICAgZm9yIGJhY2t1 cF9ncm91cCBpbiBkYXRhc3RvcmUuaXRlcl9iYWNrdXBfZ3JvdXBzKG5zLmNsb25lKCkpPyB7Cj4+ ICsgICAgICAgIGxldCBiYWNrdXBfZ3JvdXAgPSBiYWNrdXBfZ3JvdXA/Owo+PiArICAgICAgICBp ZiBsaW1pdGVkIHsKPj4gKyAgICAgICAgICAgIGxldCBvd25lciA9IGRhdGFzdG9yZS5nZXRfb3du ZXIoJm5zLCBiYWNrdXBfZ3JvdXAuZ3JvdXAoKSk/Owo+PiArICAgICAgICAgICAgaWYgY2hlY2tf YmFja3VwX293bmVyKCZvd25lciwgJmF1dGhfaWQpLmlzX2VycigpIHsKPj4gKyAgICAgICAgICAg ICAgICBjb250aW51ZTsKPj4gKyAgICAgICAgICAgIH0KPj4gKyAgICAgICAgfQo+PiArICAgICAg ICBkb19yZWNvdmVyX2dyb3VwKCZiYWNrdXBfZ3JvdXApPzsKPj4gKyAgICB9Cj4+ICsKPj4gKyAg ICBPaygoKSkKPj4gK30KPj4gKwo+PiArI1thcGkoCj4+ICsgICAgaW5wdXQ6IHsKPj4gKyAgICAg ICAgcHJvcGVydGllczogewo+PiArICAgICAgICAgICAgc3RvcmU6IHsgc2NoZW1hOiBEQVRBU1RP UkVfU0NIRU1BIH0sCj4+ICsgICAgICAgICAgICBncm91cDogewo+PiArICAgICAgICAgICAgICAg IHR5cGU6IHBic19hcGlfdHlwZXM6OkJhY2t1cEdyb3VwLAo+PiArICAgICAgICAgICAgICAgIGZs YXR0ZW46IHRydWUsCj4+ICsgICAgICAgICAgICB9LAo+PiArICAgICAgICAgICAgbnM6IHsKPj4g KyAgICAgICAgICAgICAgICB0eXBlOiBCYWNrdXBOYW1lc3BhY2UsCj4+ICsgICAgICAgICAgICAg ICAgb3B0aW9uYWw6IHRydWUsCj4+ICsgICAgICAgICAgICB9LAo+PiArICAgICAgICB9LAo+PiAr ICAgIH0sCj4+ICsgICAgYWNjZXNzOiB7Cj4+ICsgICAgICAgIHBlcm1pc3Npb246ICZQZXJtaXNz aW9uOjpBbnlib2R5LAo+PiArICAgICAgICBkZXNjcmlwdGlvbjogIlJlcXVpcmVzIG9uIC9kYXRh c3RvcmUve3N0b3JlfVsve25hbWVzcGFjZX1dIGVpdGhlciBEQVRBU1RPUkVfTU9ESUZZIGZvciBh bnkgXAo+PiArICAgICAgICAgICAgb3IgREFUQVNUT1JFX0JBQ0tVUCBhbmQgYmVpbmcgdGhlIG93 bmVyIG9mIHRoZSBncm91cCIsCj4+ICsgICAgfSwKPj4gKyldCj4+ICsvLy8gUmVjb3ZlciB0cmFz aGVkIGNvbnRlbnRzIG9mIGEgYmFja3VwIGdyb3VwLgo+PiArcHViIGZuIHJlY292ZXJfZ3JvdXAo Cj4+ICsgICAgc3RvcmU6IFN0cmluZywKPj4gKyAgICBncm91cDogcGJzX2FwaV90eXBlczo6QmFj a3VwR3JvdXAsCj4+ICsgICAgbnM6IE9wdGlvbjxCYWNrdXBOYW1lc3BhY2U+LAo+PiArICAgIHJw Y2VudjogJm11dCBkeW4gUnBjRW52aXJvbm1lbnQsCj4+ICspIC0+IFJlc3VsdDwoKSwgRXJyb3I+ IHsKPj4gKyAgICBsZXQgYXV0aF9pZDogQXV0aGlkID0gcnBjZW52LmdldF9hdXRoX2lkKCkudW53 cmFwKCkucGFyc2UoKT87Cj4+ICsgICAgbGV0IG5zID0gbnMudW53cmFwX29yX2RlZmF1bHQoKTsK Pj4gKyAgICBsZXQgZGF0YXN0b3JlID0gY2hlY2tfcHJpdnNfYW5kX2xvYWRfc3RvcmUoCj4+ICsg ICAgICAgICZzdG9yZSwKPj4gKyAgICAgICAgJm5zLAo+PiArICAgICAgICAmYXV0aF9pZCwKPj4g KyAgICAgICAgUFJJVl9EQVRBU1RPUkVfTU9ESUZZLAo+PiArICAgICAgICBQUklWX0RBVEFTVE9S RV9CQUNLVVAsCj4+ICsgICAgICAgIFNvbWUoT3BlcmF0aW9uOjpXcml0ZSksCj4+ICsgICAgICAg ICZncm91cCwKPj4gKyAgICApPzsKPj4gKwo+PiArICAgIGxldCBiYWNrdXBfZ3JvdXAgPSBkYXRh c3RvcmUuYmFja3VwX2dyb3VwKG5zLCBncm91cCk7Cj4+ICsgICAgZG9fcmVjb3Zlcl9ncm91cCgm YmFja3VwX2dyb3VwKT87Cj4+ICsKPj4gKyAgICBPaygoKSkKPj4gK30KPj4gKwo+PiArZm4gZG9f cmVjb3Zlcl9ncm91cChiYWNrdXBfZ3JvdXA6ICZCYWNrdXBHcm91cCkgLT4gUmVzdWx0PCgpLCBF cnJvcj4gewo+IAo+IG1pc3NpbmcgbG9ja2luZyBmb3IgdGhlIGdyb3VwPwoKTm90IHN1cmUgYWJv dXQgdGhhdCBvbmUuIEFmdGVyIGFsbCB0aGUgZ3JvdXAgaXMgdHJhc2hlZCBhdCBsZWFzdCBhcyBs b25nIAphcyBhbGwgdGhlIHNuYXBzaG90cyBhcmUgdHJhc2hlZC4gQW5kIEdDIHdpbGwgb25seSBl dmVyIGNsZWFuIHVwIHRoZSAKZ3JvdXAgZm9sZGVyIGlmIHRoZSB0cmFzaCBtYXJrZXIgaXMgbm90 IHNldC4gU28gSSBkbyBub3Qgc2VlIGEgcmVhc29uIAp3aHkgdGhpcyBzaG91bGQgYmUgbG9ja2Vk LgoKPiAKPj4gKyAgICBsZXQgdHJhc2hlZF9zbmFwc2hvdHMgPSBiYWNrdXBfZ3JvdXAubGlzdF9i YWNrdXBzKExpc3RCYWNrdXBGaWx0ZXI6OlRyYXNoZWQpPzsKPj4gKyAgICBmb3Igc25hcHNob3Qg aW4gdHJhc2hlZF9zbmFwc2hvdHMgewo+PiArICAgICAgICBkb19yZWNvdmVyX3NuYXBzaG90KCZz bmFwc2hvdC5iYWNrdXBfZGlyKT87Cj4+ICsgICAgfQo+PiArCj4+ICsgICAgbGV0IGdyb3VwX3Ry YXNoX3BhdGggPSBiYWNrdXBfZ3JvdXAuZnVsbF9ncm91cF9wYXRoKCkuam9pbihUUkFTSF9NQVJL RVJfRklMRU5BTUUpOwo+PiArICAgIGlmIGxldCBFcnIoZXJyKSA9IHN0ZDo6ZnM6OnJlbW92ZV9m aWxlKCZncm91cF90cmFzaF9wYXRoKSB7Cj4+ICsgICAgICAgIGlmIGVyci5raW5kKCkgIT0gc3Rk Ojppbzo6RXJyb3JLaW5kOjpOb3RGb3VuZCB7Cj4+ICsgICAgICAgICAgICBiYWlsISgiZmFpbGVk IHRvIHJlbW92ZSBncm91cCB0cmFzaCBmaWxlIHtncm91cF90cmFzaF9wYXRoOj99IC0ge2Vycn0i KTsKPj4gKyAgICAgICAgfQo+PiArICAgIH0KPj4gKyAgICBPaygoKSkKPj4gK30KPj4gKwo+PiAr I1thcGkoCj4+ICsgICAgaW5wdXQ6IHsKPj4gKyAgICAgICAgcHJvcGVydGllczogewo+PiArICAg ICAgICAgICAgc3RvcmU6IHsgc2NoZW1hOiBEQVRBU1RPUkVfU0NIRU1BIH0sCj4+ICsgICAgICAg ICAgICBiYWNrdXBfZGlyOiB7Cj4+ICsgICAgICAgICAgICAgICAgdHlwZTogcGJzX2FwaV90eXBl czo6QmFja3VwRGlyLAo+PiArICAgICAgICAgICAgICAgIGZsYXR0ZW46IHRydWUsCj4+ICsgICAg ICAgICAgICB9LAo+PiArICAgICAgICAgICAgbnM6IHsKPj4gKyAgICAgICAgICAgICAgICB0eXBl OiBCYWNrdXBOYW1lc3BhY2UsCj4+ICsgICAgICAgICAgICAgICAgb3B0aW9uYWw6IHRydWUsCj4+ ICsgICAgICAgICAgICB9LAo+PiArICAgICAgICB9LAo+PiArICAgIH0sCj4+ICsgICAgYWNjZXNz OiB7Cj4+ICsgICAgICAgIHBlcm1pc3Npb246ICZQZXJtaXNzaW9uOjpBbnlib2R5LAo+PiArICAg ICAgICBkZXNjcmlwdGlvbjogIlJlcXVpcmVzIG9uIC9kYXRhc3RvcmUve3N0b3JlfVsve25hbWVz cGFjZX1dIGVpdGhlciBEQVRBU1RPUkVfTU9ESUZZIGZvciBhbnkgXAo+PiArICAgICAgICAgICAg b3IgREFUQVNUT1JFX0JBQ0tVUCBhbmQgYmVpbmcgdGhlIG93bmVyIG9mIHRoZSBncm91cCIsCj4+ ICsgICAgfSwKPj4gKyldCj4+ICsvLy8gUmVjb3ZlciB0cmFzaGVkIGNvbnRlbnRzIG9mIGEgYmFj a3VwIHNuYXBzaG90Lgo+PiArcHViIGZuIHJlY292ZXJfc25hcHNob3QoCj4+ICsgICAgc3RvcmU6 IFN0cmluZywKPj4gKyAgICBiYWNrdXBfZGlyOiBwYnNfYXBpX3R5cGVzOjpCYWNrdXBEaXIsCj4+ ICsgICAgbnM6IE9wdGlvbjxCYWNrdXBOYW1lc3BhY2U+LAo+PiArICAgIHJwY2VudjogJm11dCBk eW4gUnBjRW52aXJvbm1lbnQsCj4+ICspIC0+IFJlc3VsdDwoKSwgRXJyb3I+IHsKPj4gKyAgICBs ZXQgYXV0aF9pZDogQXV0aGlkID0gcnBjZW52LmdldF9hdXRoX2lkKCkudW53cmFwKCkucGFyc2Uo KT87Cj4+ICsgICAgbGV0IG5zID0gbnMudW53cmFwX29yX2RlZmF1bHQoKTsKPj4gKyAgICBsZXQg ZGF0YXN0b3JlID0gY2hlY2tfcHJpdnNfYW5kX2xvYWRfc3RvcmUoCj4+ICsgICAgICAgICZzdG9y ZSwKPj4gKyAgICAgICAgJm5zLAo+PiArICAgICAgICAmYXV0aF9pZCwKPj4gKyAgICAgICAgUFJJ Vl9EQVRBU1RPUkVfTU9ESUZZLAo+PiArICAgICAgICBQUklWX0RBVEFTVE9SRV9CQUNLVVAsCj4+ ICsgICAgICAgIFNvbWUoT3BlcmF0aW9uOjpXcml0ZSksCj4+ICsgICAgICAgICZiYWNrdXBfZGly Lmdyb3VwLAo+PiArICAgICk/Owo+PiArCj4+ICsgICAgbGV0IHNuYXBzaG90ID0gZGF0YXN0b3Jl LmJhY2t1cF9kaXIobnMsIGJhY2t1cF9kaXIpPzsKPj4gKyAgICBkb19yZWNvdmVyX3NuYXBzaG90 KCZzbmFwc2hvdCk/Owo+PiArCj4+ICsgICAgT2soKCkpCj4+ICt9Cj4+ICsKPj4gK2ZuIGRvX3Jl Y292ZXJfc25hcHNob3Qoc25hcHNob3RfZGlyOiAmQmFja3VwRGlyKSAtPiBSZXN1bHQ8KCksIEVy cm9yPiB7Cj4gCj4gbWlzc2luZyBsb2NraW5nIGZvciB0aGUgc25hcHNob3Q/CgpXaHk/IHJlbW92 ZV9maWxlKCkgc2hvdWxkIGJlIGF0b21pYz8KCj4gCj4+ICsgICAgbGV0IHRyYXNoX3BhdGggPSBz bmFwc2hvdF9kaXIuZnVsbF9wYXRoKCkuam9pbihUUkFTSF9NQVJLRVJfRklMRU5BTUUpOwo+PiAr ICAgIGlmIGxldCBFcnIoZXJyKSA9IHN0ZDo6ZnM6OnJlbW92ZV9maWxlKCZ0cmFzaF9wYXRoKSB7 Cj4+ICsgICAgICAgIGlmIGVyci5raW5kKCkgIT0gc3RkOjppbzo6RXJyb3JLaW5kOjpOb3RGb3Vu ZCB7Cj4+ICsgICAgICAgICAgICBiYWlsISgiZmFpbGVkIHRvIHJlbW92ZSB0cmFzaCBmaWxlIHt0 cmFzaF9wYXRoOj99IC0ge2Vycn0iKTsKPj4gKyAgICAgICAgfQo+PiArICAgIH0KPj4gKyAgICBP aygoKSkKPj4gK30KPj4gKwo+PiAgICNbc29ydGFibGVdCj4+ICAgY29uc3QgREFUQVNUT1JFX0lO Rk9fU1VCRElSUzogU3ViZGlyTWFwID0gJlsKPj4gICAgICAgKAo+PiBAQCAtMjc5Miw2ICsyOTUx LDE4IEBAIGNvbnN0IERBVEFTVE9SRV9JTkZPX1NVQkRJUlM6IFN1YmRpck1hcCA9ICZbCj4+ICAg ICAgICAgICAicHhhci1maWxlLWRvd25sb2FkIiwKPj4gICAgICAgICAgICZSb3V0ZXI6Om5ldygp LmRvd25sb2FkKCZBUElfTUVUSE9EX1BYQVJfRklMRV9ET1dOTE9BRCksCj4+ICAgICAgICksCj4+ ICsgICAgKAo+PiArICAgICAgICAicmVjb3Zlci1ncm91cCIsCj4+ICsgICAgICAgICZSb3V0ZXI6 Om5ldygpLnBvc3QoJkFQSV9NRVRIT0RfUkVDT1ZFUl9HUk9VUCksCj4gCj4gSSBhbSBub3Qgc3Vy ZSB3aGV0aGVyIHRob3NlIHNob3VsZCBiZSBQT1NUIG9yIFBVVCwgdGhleSBhcmUgbW9kaWZ5aW5n IGFuCj4gZXhpc3RpbmcgKHRyYXNoZWQpIGdyb3VwL3NuYXBzaG90Ly4uIGFmdGVyIGFsbD8KPiAK Pj4gKyAgICApLAo+PiArICAgICgKPj4gKyAgICAgICAgInJlY292ZXItbmFtZXNwYWNlIiwKPj4g KyAgICAgICAgJlJvdXRlcjo6bmV3KCkucG9zdCgmQVBJX01FVEhPRF9SRUNPVkVSX05BTUVTUEFD RSksCj4+ICsgICAgKSwKPj4gKyAgICAoCj4+ICsgICAgICAgICJyZWNvdmVyLXNuYXBzaG90IiwK Pj4gKyAgICAgICAgJlJvdXRlcjo6bmV3KCkucG9zdCgmQVBJX01FVEhPRF9SRUNPVkVSX1NOQVBT SE9UKSwKPj4gKyAgICApLAo+PiAgICAgICAoInJyZCIsICZSb3V0ZXI6Om5ldygpLmdldCgmQVBJ X01FVEhPRF9HRVRfUlJEX1NUQVRTKSksCj4+ICAgICAgICgKPj4gICAgICAgICAgICJzbmFwc2hv dHMiLAo+PiAtLSAKPj4gMi4zOS41Cj4+Cj4+Cj4+Cj4+IF9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCj4+IHBicy1kZXZlbCBtYWlsaW5nIGxpc3QKPj4gcGJz LWRldmVsQGxpc3RzLnByb3htb3guY29tCj4+IGh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dp LWJpbi9tYWlsbWFuL2xpc3RpbmZvL3Bicy1kZXZlbAo+Pgo+Pgo+Pgo+IAo+IAo+IF9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gcGJzLWRldmVsIG1haWxp bmcgbGlzdAo+IHBicy1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQo+IGh0dHBzOi8vbGlzdHMucHJv eG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3Bicy1kZXZlbAo+IAo+IAoKCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpwYnMtZGV2ZWwgbWFp bGluZyBsaXN0CnBicy1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQpodHRwczovL2xpc3RzLnByb3ht b3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wYnMtZGV2ZWwK