From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-11.3 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id BDB24C433DF for ; Mon, 12 Oct 2020 03:59:51 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id B782C20790 for ; Mon, 12 Oct 2020 03:59:50 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="Erb9ms8I" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B782C20790 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=huawei.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-nvme-bounces+linux-nvme=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Type: Content-Transfer-Encoding:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=AD21nUpb8zx7t4dn2OfyWXUX8Nrnh6QaFr16T+3Br/c=; b=Erb9ms8I7NkxN8nIhEfZZn3qW 9oM6jvx2Yn8lcLj+9k1L21JN5LycJEzg9bDzXNbwzB+/sauQjdsfCfRsILEwf7LD8MTl00wJl/qC5 a0RbOdAP/1Q/FVZ+MMeos9Q3RqLzlFxRC4kgQdDbm/XfXrTJ0kMmaRt/aImgKbU3Q6uLbQy9/nIfT lnNZ1wkm/kEi9awNGczz8PjRXJyrYdNcNSE8m1HHoLYWbfhHfc8V1SUl4cgOs4NItjyJwLMTHZp9m ceMZ3vQJOprlv999SefcOsX9V5UTnM4Fyn4YxVcVNTlWkdPUVgD4Ba+tdZVf8Qi1g0Z9iXrb11csv TvoLo1xig==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kRozu-0002Vj-Ib; Mon, 12 Oct 2020 03:59:42 +0000 Received: from szxga02-in.huawei.com ([45.249.212.188] helo=huawei.com) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kRozr-0002Ui-DA for linux-nvme@lists.infradead.org; Mon, 12 Oct 2020 03:59:41 +0000 Received: from DGGEMM403-HUB.china.huawei.com (unknown [172.30.72.55]) by Forcepoint Email with ESMTP id A9E7EC788E9E3ADCD1C9; Mon, 12 Oct 2020 11:59:24 +0800 (CST) Received: from dggema772-chm.china.huawei.com (10.1.198.214) by DGGEMM403-HUB.china.huawei.com (10.3.20.211) with Microsoft SMTP Server (TLS) id 14.3.487.0; Mon, 12 Oct 2020 11:59:22 +0800 Received: from [10.169.42.93] (10.169.42.93) by dggema772-chm.china.huawei.com (10.1.198.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1913.5; Mon, 12 Oct 2020 11:59:22 +0800 Subject: Re: [PATCH] block: re-introduce blk_mq_complete_request_sync To: Yi Zhang , Sagi Grimberg , Ming Lei References: <20201008213750.899462-1-sagi@grimberg.me> <20201009043938.GC27356@T590> <1711488120.3435389.1602219830518.JavaMail.zimbra@redhat.com> <23f19725-f46b-7de7-915d-b97fd6d69cdc@redhat.com> <7a7aca6e-30f5-0754-fb7f-599699b97108@redhat.com> From: Chao Leng Message-ID: <6f2a5ae2-2e6a-0386-691c-baefeecb5478@huawei.com> Date: Mon, 12 Oct 2020 11:59:21 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Thunderbird/68.9.0 MIME-Version: 1.0 In-Reply-To: <7a7aca6e-30f5-0754-fb7f-599699b97108@redhat.com> Content-Language: en-US X-Originating-IP: [10.169.42.93] X-ClientProxiedBy: dggeme705-chm.china.huawei.com (10.1.199.101) To dggema772-chm.china.huawei.com (10.1.198.214) X-CFilter-Loop: Reflected X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201011_235939_935126_F55FF5B5 X-CRM114-Status: GOOD ( 24.18 ) X-BeenThere: linux-nvme@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jens Axboe , linux-block@vger.kernel.org, linux-nvme@lists.infradead.org, Keith Busch , Christoph Hellwig Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "Linux-nvme" Errors-To: linux-nvme-bounces+linux-nvme=archiver.kernel.org@lists.infradead.org CgpPbiAyMDIwLzEwLzEwIDE0OjA4LCBZaSBaaGFuZyB3cm90ZToKPiAKPiAKPiBPbiAxMC8xMC8y MCAyOjI5IEFNLCBTYWdpIEdyaW1iZXJnIHdyb3RlOgo+Pgo+Pgo+PiBPbiAxMC85LzIwIDY6NTUg QU0sIFlpIFpoYW5nIHdyb3RlOgo+Pj4gSGkgU2FnaQo+Pj4KPj4+IE9uIDEwLzkvMjAgNDowOSBQ TSwgU2FnaSBHcmltYmVyZyB3cm90ZToKPj4+Pj4gSGkgU2FnaQo+Pj4+Pgo+Pj4+PiBJIGFwcGxp ZWQgdGhpcyBwYXRjaCBvbiBibG9jayBvcmlnaW4vZm9yLW5leHQgYW5kIHN0aWxsIGNhbiByZXBy b2R1Y2UgaXQuCj4+Pj4KPj4+PiBUaGF0J3MgdW5leHBlY3RlZCwgY2FuIHlvdSB0cnkgdGhpcyBw YXRjaD8KPj4+PiAtLSAKPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9udm1lL2hvc3QvdGNwLmMg Yi9kcml2ZXJzL252bWUvaG9zdC90Y3AuYwo+Pj4+IGluZGV4IDYyOWIwMjU2ODVkMS4uNDY0Mjhm ZjBiMGZjIDEwMDY0NAo+Pj4+IC0tLSBhL2RyaXZlcnMvbnZtZS9ob3N0L3RjcC5jCj4+Pj4gKysr IGIvZHJpdmVycy9udm1lL2hvc3QvdGNwLmMKPj4+PiBAQCAtMjE3NSw3ICsyMTc1LDcgQEAgc3Rh dGljIHZvaWQgbnZtZV90Y3BfY29tcGxldGVfdGltZWRfb3V0KHN0cnVjdCByZXF1ZXN0ICpycSkK Pj4+PiDCoMKgwqDCoMKgwqDCoCAvKiBmZW5jZSBvdGhlciBjb250ZXh0cyB0aGF0IG1heSBjb21w bGV0ZSB0aGUgY29tbWFuZCAqLwo+Pj4+IMKgwqDCoMKgwqDCoMKgIG11dGV4X2xvY2soJnRvX3Rj cF9jdHJsKGN0cmwpLT50ZWFyZG93bl9sb2NrKTsKPj4+PiDCoMKgwqDCoMKgwqDCoCBudm1lX3Rj cF9zdG9wX3F1ZXVlKGN0cmwsIG52bWVfdGNwX3F1ZXVlX2lkKHJlcS0+cXVldWUpKTsKPj4+PiAt wqDCoMKgwqDCoMKgIGlmICghYmxrX21xX3JlcXVlc3RfY29tcGxldGVkKHJxKSkgewo+Pj4+ICvC oMKgwqDCoMKgwqAgaWYgKGJsa19tcV9yZXF1ZXN0X3N0YXJ0ZWQocnEpICYmICFibGtfbXFfcmVx dWVzdF9jb21wbGV0ZWQocnEpKSB7Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IG52bWVfcmVxKHJxKS0+c3RhdHVzID0gTlZNRV9TQ19IT1NUX0FCT1JURURfQ01EOwo+Pj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBibGtfbXFfY29tcGxldGVfcmVxdWVzdF9zeW5j KHJxKTsKPj4+PiDCoMKgwqDCoMKgwqDCoCB9ClRoaXMgbWF5IGp1c3QgcmVkdWNlIHRoZSBwcm9i YWJpbGl0eS4gVGhlIGNvbmN1cnJlbmN5IG9mIHRpbWVvdXQgYW5kIHRlYXJkb3duIHdpbGwgY2F1 c2UgdGhlIHNhbWUgcmVxdWVzdApiZSB0cmVhdGVkIHJlcGVhdGx5LCB0aGlzIGlzIG5vdCB3ZSBl eHBlY3RlZC4KSW4gdGhlIHRlYXJkb3duIHByb2Nlc3MsIGFmdGVyIHF1aWVzY2VkIHF1ZXVlcyBk ZWxldGUgdGhlIHRpbWVyIGFuZCBjYW5jZWwgdGhlIHRpbWVvdXQgd29yayBtYXliZSBhIGJldHRl ciBvcHRpb24uClRlYXJkb3duIHByb2Nlc3Mgd2lsbCBjYW5jZWwgYWxsIGRvaW5nIElPLCB0aW1l ciBhbmQgdGltZW91dCB3b3JrIHNob3VsZCBiZSBjYW5jZWxlZC4KQWZ0ZXIgdW5xdWllc2NlIHF1 ZXVlLCB0aGUgdGltZXIgb2YgcXVldWUgd2lsbCBiZSBhZGQgd2hlbiBzdGFydCByZXF1ZXN0Lgo+ Pj4gTm8gV0FSTklORyB3aXRoIHRoaXMgcGF0Y2gsIGJ1dCB0aGUgdGVzdCBzdGlsbCB3aWxsIGJl IGhhbmcgYW5kIG5ldmVyIGZpbmlzaGVkLCBoZXJlIGlzIHRoZSBrZXJuZWwgbG9nOgo+Pgo+PiBU aGFua3MgWWksCj4+Cj4+IEdvb2QgdG8ga25vdyBubyB3YXJuaW5nLCB0aGF0IGNvbmZpcm1zIHRo ZSBpc3N1ZSBhbmFseXNpcy4KPj4KPiBDb29sLCBmZWVsIGZlZSB0byBhZGQgVGVzdGVkLWJ5OiBZ aSBaaGFuZyA8eWkuemhhbmdAcmVkaGF0LmNvbT4KPiAKPj4gQXMgZm9yIHRoZSB0ZXN0LCBJJ20g YWJsZSB0byBzdWNjZXNzZnVseSBwYXNzIHRoaXMgb24gbXkgVk0sIGFuZAo+PiB0aGlzIHRlc3Qg aXMgbm90IGRlc2lnbmVkIHRvIGdlbmVyYXRlIGVycm9ycywganVzdCBmaW8gdG8KPj4gYSBmaWxl IGJhY2tlZCBuYW1lc3BhY2UuIEknbSB3YW5kZXJpbmcgd2hhdCBpcyBjYXVzaW5nIHRoZXNlCj4+ IGRlbGF5cyBpbiBJL08gdGhhdCBjYXVzZSB0aW1lb3V0cy4uLgo+Pgo+IEkganVzdCBmb3VuZCBh bGwgdGhlIGZhaWx1cmUgb2NjdXJyZWQgb24gQU1EIHdpdGggNEcgbWVtb3J5LCBub3Qgc3VyZSB3 aGV0aGVyIGl0J3MgcmVsYXRlZCB0byB0aGUgbG93IG1lbW9yeS4KPiBMZXQgbWUga25vdyBpZiB5 b3UgbmVlZCBhbnkgdGVzdCBmb3IgZnVydGhlciBpbnZlc3RpZ2F0aW9uIC4gOikKPj4+Cj4+PiBb IDMzMjcuMDExMDY3XSBydW4gYmxrdGVzdHMgbnZtZS8wMTIgYXQgMjAyMC0xMC0wOSAwNjoyMTo1 OQo+Pj4gWyAzMzI3LjI3ODE2OV0gbG9vcDogbW9kdWxlIGxvYWRlZAo+Pj4gWyAzMzI3LjMxNDI4 N10gbnZtZXQ6IGFkZGluZyBuc2lkIDEgdG8gc3Vic3lzdGVtIGJsa3Rlc3RzLXN1YnN5c3RlbS0x Cj4+PiBbIDMzMjcuMzQ2Mjc2XSBudm1ldF90Y3A6IGVuYWJsaW5nIHBvcnQgMCAoMTI3LjAuMC4x OjQ0MjApCj4+PiBbIDMzMjcuMzk2NzQ2XSBudm1ldDogY3JlYXRpbmcgY29udHJvbGxlciAxIGZv ciBzdWJzeXN0ZW0gYmxrdGVzdHMtc3Vic3lzdGVtLTEgZm9yIE5RTiBucW4uMjAxNC0wOC5vcmcu bnZtZXhwcmVzczp1dWlkOmU1NDQxNDkxMjZhMjQxNDVhYmVlYjYxMjliMGVjNTJjLgo+Pj4gWyAz MzI3LjQxMTAwMF0gbnZtZSBudm1lMDogY3JlYXRpbmcgMTIgSS9PIHF1ZXVlcy4KPj4+IFsgMzMy Ny40MTY5NjNdIG52bWUgbnZtZTA6IG1hcHBlZCAxMi8wLzAgZGVmYXVsdC9yZWFkL3BvbGwgcXVl dWVzLgo+Pj4gWyAzMzI3LjQyODgzNl0gbnZtZSBudm1lMDogbmV3IGN0cmw6IE5RTiAiYmxrdGVz dHMtc3Vic3lzdGVtLTEiLCBhZGRyIDEyNy4wLjAuMTo0NDIwCj4+PiBbIDMzMjkuNDAzNjU4XSBY RlMgKG52bWUwbjEpOiBNb3VudGluZyBWNSBGaWxlc3lzdGVtCj4+PiBbIDMzMjkuNDE3MjEzXSBY RlMgKG52bWUwbjEpOiBFbmRpbmcgY2xlYW4gbW91bnQKPj4+IFsgMzMyOS40MjMwNDRdIHhmcyBm aWxlc3lzdGVtIGJlaW5nIG1vdW50ZWQgYXQgL21udC9ibGt0ZXN0cyBzdXBwb3J0cyB0aW1lc3Rh bXBzIHVudGlsIDIwMzggKDB4N2ZmZmZmZmYpCj4+PiBbIDMzOTAuMDY5MTI2XSBudm1lIG52bWUw OiBxdWV1ZSA2OiB0aW1lb3V0IHJlcXVlc3QgMHgyMSB0eXBlIDQKPj4+IFsgMzM5MC4wNzQ3OTdd IG52bWUgbnZtZTA6IHN0YXJ0aW5nIGVycm9yIHJlY292ZXJ5Cj4+PiBbIDMzOTAuMDc5MzYyXSBu dm1lIG52bWUwOiBxdWV1ZSA2OiB0aW1lb3V0IHJlcXVlc3QgMHgyMiB0eXBlIDQKPj4+IFsgMzM5 MC4wNzk5MzJdIGJsb2NrIG52bWUwbjE6IG5vIHVzYWJsZSBwYXRoIC0gcmVxdWV1aW5nIEkvTwo+ Pj4gWyAzMzkwLjA4MTk5OV0gbnZtZSBudm1lMDogUmVjb25uZWN0aW5nIGluIDEwIHNlY29uZHMu Li4KPj4+IFsgMzM5MC4wOTU0NjddIGJsb2NrIG52bWUwbjE6IG5vIHVzYWJsZSBwYXRoIC0gcmVx dWV1aW5nIEkvTwo+Pj4gWyAzMzkwLjEwMDg3OV0gYmxvY2sgbnZtZTBuMTogbm8gdXNhYmxlIHBh dGggLSByZXF1ZXVpbmcgSS9PCj4+PiBbIDMzOTAuMTA2Mjc5XSBibG9jayBudm1lMG4xOiBubyB1 c2FibGUgcGF0aCAtIHJlcXVldWluZyBJL08KPj4+IFsgMzM5MC4xMTE2OTFdIGJsb2NrIG52bWUw bjE6IG5vIHVzYWJsZSBwYXRoIC0gcmVxdWV1aW5nIEkvTwo+Pj4gWyAzMzkwLjExNzA5OF0gYmxv Y2sgbnZtZTBuMTogbm8gdXNhYmxlIHBhdGggLSByZXF1ZXVpbmcgSS9PCj4+PiBbIDMzOTAuMTIy NTA3XSBibG9jayBudm1lMG4xOiBubyB1c2FibGUgcGF0aCAtIHJlcXVldWluZyBJL08KPj4+IFsg MzM5MC4xMjc5MjBdIGJsb2NrIG52bWUwbjE6IG5vIHVzYWJsZSBwYXRoIC0gcmVxdWV1aW5nIEkv Two+Pj4gWyAzMzkwLjEzMzMzM10gYmxvY2sgbnZtZTBuMTogbm8gdXNhYmxlIHBhdGggLSByZXF1 ZXVpbmcgSS9PCj4+PiBbIDMzOTAuMTM4NzM0XSBibG9jayBudm1lMG4xOiBubyB1c2FibGUgcGF0 aCAtIHJlcXVldWluZyBJL08KPj4+IFsgMzQxNS42Njk2NTldIG52bWV0OiBjdHJsIDIga2VlcC1h bGl2ZSB0aW1lciAoMTUgc2Vjb25kcykgZXhwaXJlZCEKPj4+IFsgMzQxNS42NzU2ODJdIG52bWV0 OiBjdHJsIDIgZmF0YWwgZXJyb3Igb2NjdXJyZWQhCj4+PiBbIDM0MTkuNzY1NzM4XSBudm1ldDog Y3RybCAxIGtlZXAtYWxpdmUgdGltZXIgKDE1IHNlY29uZHMpIGV4cGlyZWQhCj4+PiBbIDM0MTku NzcxNzYyXSBudm1ldDogY3RybCAxIGZhdGFsIGVycm9yIG9jY3VycmVkIQo+Pj4gWyAzNDQwLjAw MDM1Ml0gbnZtZXQ6IGNyZWF0aW5nIGNvbnRyb2xsZXIgMiBmb3Igc3Vic3lzdGVtIGJsa3Rlc3Rz LXN1YnN5c3RlbS0xIGZvciBOUU4gbnFuLjIwMTQtMDgub3JnLm52bWV4cHJlc3M6dXVpZDplNTQ0 MTQ5MTI2YTI0MTQ1YWJlZWI2MTI5YjBlYzUyYy4KPj4+IFsgMzQ2My4yODY3MDBdIG52bWUgbnZt ZTA6IHF1ZXVlIDA6IHRpbWVvdXQgcmVxdWVzdCAweDAgdHlwZSA0Cj4+PiBbIDM0NjMuMjkyMzU3 XSBudm1lIG52bWUwOiBDb25uZWN0IGNvbW1hbmQgZmFpbGVkLCBlcnJvciB3by9ETlIgYml0OiA4 ODEKPj4+IFsgMzQ2My4yOTg4MzBdIG52bWUgbnZtZTA6IGZhaWxlZCB0byBjb25uZWN0IHF1ZXVl OiAwIHJldD04ODEKPj4+IFsgMzQ2My4zMDQzNTJdIG52bWUgbnZtZTA6IEZhaWxlZCByZWNvbm5l Y3QgYXR0ZW1wdCAxCj4+PiBbIDM0NjMuMzA5MTU2XSBudm1lIG52bWUwOiBSZWNvbm5lY3Rpbmcg aW4gMTAgc2Vjb25kcy4uLgo+Pj4gWyAzNDczLjUyNzU3NF0gbnZtZXQ6IGNyZWF0aW5nIGNvbnRy b2xsZXIgMSBmb3Igc3Vic3lzdGVtIGJsa3Rlc3RzLXN1YnN5c3RlbS0xIGZvciBOUU4gbnFuLjIw MTQtMDgub3JnLm52bWV4cHJlc3M6dXVpZDplNTQ0MTQ5MTI2YTI0MTQ1YWJlZWI2MTI5YjBlYzUy Yy4KPj4+IFsgMzQ3My41NDE0MzhdIG52bWVfbnNfaGVhZF9zdWJtaXRfYmlvOiA0NyBjYWxsYmFj a3Mgc3VwcHJlc3NlZAo+Pj4gWyAzNDczLjU0MTQ0NV0gYmxvY2sgbnZtZTBuMTogbm8gdXNhYmxl IHBhdGggLSByZXF1ZXVpbmcgSS9PCj4+PiBbIDM0NzMuNTUyNTIxXSBibG9jayBudm1lMG4xOiBu byB1c2FibGUgcGF0aCAtIHJlcXVldWluZyBJL08KPj4+IFsgMzQ3My41NTc5MjNdIGJsb2NrIG52 bWUwbjE6IG5vIHVzYWJsZSBwYXRoIC0gcmVxdWV1aW5nIEkvTwo+Pj4gWyAzNDczLjU2MzMxOV0g YmxvY2sgbnZtZTBuMTogbm8gdXNhYmxlIHBhdGggLSByZXF1ZXVpbmcgSS9PCj4+PiBbIDM0NzMu NTY4NzM5XSBibG9jayBudm1lMG4xOiBubyB1c2FibGUgcGF0aCAtIHJlcXVldWluZyBJL08KPj4+ IFsgMzQ3My41NzQ2NzhdIGJsb2NrIG52bWUwbjE6IG5vIHVzYWJsZSBwYXRoIC0gcmVxdWV1aW5n IEkvTwo+Pj4gWyAzNDczLjU4MDA2OF0gYmxvY2sgbnZtZTBuMTogbm8gdXNhYmxlIHBhdGggLSBy ZXF1ZXVpbmcgSS9PCj4+PiBbIDM0NzMuNTg1NDYxXSBibG9jayBudm1lMG4xOiBubyB1c2FibGUg cGF0aCAtIHJlcXVldWluZyBJL08KPj4+IFsgMzQ3My41OTA4NjFdIGJsb2NrIG52bWUwbjE6IG5v IHVzYWJsZSBwYXRoIC0gcmVxdWV1aW5nIEkvTwo+Pj4gWyAzNDczLjU5NjI0OV0gYmxvY2sgbnZt ZTBuMTogbm8gdXNhYmxlIHBhdGggLSByZXF1ZXVpbmcgSS9PCj4+PiBbIDM0NzMuNjAxODgwXSBu dm1lIG52bWUwOiBjcmVhdGluZyAxMiBJL08gcXVldWVzLgo+Pj4gWyAzNDczLjYxMzk1NV0gbnZt ZSBudm1lMDogbWFwcGVkIDEyLzAvMCBkZWZhdWx0L3JlYWQvcG9sbCBxdWV1ZXMuCj4+PiBbIDM0 NzMuNjIyMTA2XSBudm1lIG52bWUwOiBTdWNjZXNzZnVsbHkgcmVjb25uZWN0ZWQgKDIgYXR0ZW1w dCkKPj4+IFsgMzUzMS4zODQxNzBdIG52bWUgbnZtZTA6IHF1ZXVlIDE6IHRpbWVvdXQgcmVxdWVz dCAweDYyIHR5cGUgNAo+Pj4gWyAzNTMxLjM4OTgzN10gbnZtZSBudm1lMDogc3RhcnRpbmcgZXJy b3IgcmVjb3ZlcnkKPj4+IFsgMzUzMS4zOTQzOTZdIG52bWUgbnZtZTA6IHF1ZXVlIDc6IHRpbWVv dXQgcmVxdWVzdCAweDYxIHR5cGUgNAo+Pj4gWyAzNTMxLjM5NDk1NF0gbnZtZV9uc19oZWFkX3N1 Ym1pdF9iaW86IDE0IGNhbGxiYWNrcyBzdXBwcmVzc2VkCj4+PiBbIDM1MzEuMzk0OTY0XSBibG9j ayBudm1lMG4xOiBubyB1c2FibGUgcGF0aCAtIHJlcXVldWluZyBJL08KPj4+IFsgMzUzMS40MTEx NDddIGJsb2NrIG52bWUwbjE6IG5vIHVzYWJsZSBwYXRoIC0gcmVxdWV1aW5nIEkvTwo+Pj4gWyAz NTMxLjQxNjU0OF0gYmxvY2sgbnZtZTBuMTogbm8gdXNhYmxlIHBhdGggLSByZXF1ZXVpbmcgSS9P Cj4+PiBbIDM1MzEuNDIxOTU0XSBibG9jayBudm1lMG4xOiBubyB1c2FibGUgcGF0aCAtIHJlcXVl dWluZyBJL08KPj4+IFsgMzUzMS40MjczNjFdIGJsb2NrIG52bWUwbjE6IG5vIHVzYWJsZSBwYXRo IC0gcmVxdWV1aW5nIEkvTwo+Pj4gWyAzNTMxLjQzMjc2M10gYmxvY2sgbnZtZTBuMTogbm8gdXNh YmxlIHBhdGggLSByZXF1ZXVpbmcgSS9PCj4+PiBbIDM1MzEuNDM4Mjg3XSBibG9jayBudm1lMG4x OiBubyB1c2FibGUgcGF0aCAtIHJlcXVldWluZyBJL08KPj4+IFsgMzUzMS40NDM3MDFdIGJsb2Nr IG52bWUwbjE6IG5vIHVzYWJsZSBwYXRoIC0gcmVxdWV1aW5nIEkvTwo+Pj4gWyAzNTMxLjQ0OTEw M10gYmxvY2sgbnZtZTBuMTogbm8gdXNhYmxlIHBhdGggLSByZXF1ZXVpbmcgSS9PCj4+PiBbIDM1 MzEuNDU0NDk3XSBibG9jayBudm1lMG4xOiBubyB1c2FibGUgcGF0aCAtIHJlcXVldWluZyBJL08K Pj4+IFsgMzU2MC41Njg4MzJdIG52bWV0OiBjdHJsIDEga2VlcC1hbGl2ZSB0aW1lciAoMTUgc2Vj b25kcykgZXhwaXJlZCEKPj4+IFsgMzU2MC41NzQ4MzldIG52bWV0OiBjdHJsIDEgZmF0YWwgZXJy b3Igb2NjdXJyZWQhCj4+Pgo+Pj4KPj4+PiAtLSAKPj4+Pgo+Pj4+Pgo+Pj4+PiBbwqAgNzI0LjI2 Nzg2NV0gcnVuIGJsa3Rlc3RzIG52bWUvMDEyIGF0IDIwMjAtMTAtMDkgMDA6NDg6NTIKPj4+Pj4g W8KgIDcyNC41MTg0OThdIGxvb3A6IG1vZHVsZSBsb2FkZWQKPj4+Pj4gW8KgIDcyNC41NTI4ODBd IG52bWV0OiBhZGRpbmcgbnNpZCAxIHRvIHN1YnN5c3RlbSBibGt0ZXN0cy1zdWJzeXN0ZW0tMQo+ Pj4+PiBbwqAgNzI0LjU4NjYwOV0gbnZtZXRfdGNwOiBlbmFibGluZyBwb3J0IDAgKDEyNy4wLjAu MTo0NDIwKQo+Pj4+PiBbwqAgNzI0LjY0ODg5OF0gbnZtZXQ6IGNyZWF0aW5nIGNvbnRyb2xsZXIg MSBmb3Igc3Vic3lzdGVtIGJsa3Rlc3RzLXN1YnN5c3RlbS0xIGZvciBOUU4gbnFuLjIwMTQtMDgu b3JnLm52bWV4cHJlc3M6dXVpZDplNTQ0MTQ5MTI2YTI0MTQ1YWJlZWI2MTI5YjBlYzUyYy4KPj4+ Pj4gW8KgIDcyNC42NjMzMDBdIG52bWUgbnZtZTA6IGNyZWF0aW5nIDEyIEkvTyBxdWV1ZXMuCj4+ Pj4+IFvCoCA3MjQuNjY5ODI2XSBudm1lIG52bWUwOiBtYXBwZWQgMTIvMC8wIGRlZmF1bHQvcmVh ZC9wb2xsIHF1ZXVlcy4KPj4+Pj4gW8KgIDcyNC42ODEzNTBdIG52bWUgbnZtZTA6IG5ldyBjdHJs OiBOUU4gImJsa3Rlc3RzLXN1YnN5c3RlbS0xIiwgYWRkciAxMjcuMC4wLjE6NDQyMAo+Pj4+PiBb wqAgNzI2LjY0MTYwNV0gWEZTIChudm1lMG4xKTogTW91bnRpbmcgVjUgRmlsZXN5c3RlbQo+Pj4+ PiBbwqAgNzI2LjY1NDYzN10gWEZTIChudm1lMG4xKTogRW5kaW5nIGNsZWFuIG1vdW50Cj4+Pj4+ IFvCoCA3MjYuNjYwMzAyXSB4ZnMgZmlsZXN5c3RlbSBiZWluZyBtb3VudGVkIGF0IC9tbnQvYmxr dGVzdHMgc3VwcG9ydHMgdGltZXN0YW1wcyB1bnRpbCAyMDM4ICgweDdmZmZmZmZmKQo+Pj4+PiBb wqAgNzg3LjA0MjA2Nl0gbnZtZSBudm1lMDogcXVldWUgMjogdGltZW91dCByZXF1ZXN0IDB4ZSB0 eXBlIDQKPj4+Pj4gW8KgIDc4Ny4wNDc2NDldIG52bWUgbnZtZTA6IHN0YXJ0aW5nIGVycm9yIHJl Y292ZXJ5Cj4+Pj4+IFvCoCA3ODcuMDUyMjExXSBudm1lIG52bWUwOiBxdWV1ZSA0OiB0aW1lb3V0 IHJlcXVlc3QgMHg2MSB0eXBlIDQKPj4+Pj4gW8KgIDc4Ny4wNTM0MDddIGJsb2NrIG52bWUwbjE6 IG5vIHVzYWJsZSBwYXRoIC0gcmVxdWV1aW5nIEkvTwo+Pj4+PiBbwqAgNzg3LjA1NDU0M10gbnZt ZSBudm1lMDogUmVjb25uZWN0aW5nIGluIDEwIHNlY29uZHMuLi4KPj4+Pj4gW8KgIDc4Ny4wNTc4 NzddIC0tLS0tLS0tLS0tLVsgY3V0IGhlcmUgXS0tLS0tLS0tLS0tLQo+Pj4+PiBbwqAgNzg3LjA2 MzI3NF0gYmxvY2sgbnZtZTBuMTogbm8gdXNhYmxlIHBhdGggLSByZXF1ZXVpbmcgSS9PCj4+Pj4+ IFvCoCA3ODcuMDY4MzEzXSByZWZjb3VudF90OiB1bmRlcmZsb3c7IHVzZS1hZnRlci1mcmVlLgo+ Pj4+PiBbwqAgNzg3LjA2ODM3MF0gV0FSTklORzogQ1BVOiAzIFBJRDogMzAgYXQgbGliL3JlZmNv dW50LmM6MjggcmVmY291bnRfd2Fybl9zYXR1cmF0ZSsweGE2LzB4ZjAKPj4+Pj4gW8KgIDc4Ny4w NzI5NDFdIGJsb2NrIG52bWUwbjE6IG5vIHVzYWJsZSBwYXRoIC0gcmVxdWV1aW5nIEkvTwo+Pj4+ PiBbwqAgNzg3LjA3Mjk0NV0gYmxvY2sgbnZtZTBuMTogbm8gdXNhYmxlIHBhdGggLSByZXF1ZXVp bmcgSS9PCj4+Pj4+IFvCoCA3ODcuMDc4MzMzXSBNb2R1bGVzIGxpbmtlZCBpbjogbG9vcCBudm1l X3RjcCBudm1lX2ZhYnJpY3MgbnZtZV9jb3JlIG52bWV0X3RjcCBudm1ldCBycGNzZWNfZ3NzX2ty YjUgYXV0aF9ycGNnc3MgbmZzdjQgZG5zX3Jlc29sdmVyIG5mcyBsb2NrZCBncmFjZSBmc2NhY2hl IHN1bnJwYyBzbmRfaGRhX2NvZGVjX3JlYWx0ZWsgc25kX2hkYV9jb2RlY19nZW5lcmljIGxlZHRy aWdfYXVkaW8gc25kX2hkYV9pbnRlbCBzbmRfaW50ZWxfZHNwY2ZnIHNuZF9oZGFfY29kZWMgc25k X2hkYV9jb3JlIHNuZF9od2RlcCBzbmRfcGNtIHNuZF90aW1lciBhbWQ2NF9lZGFjX21vZCBzbmQg ZWRhY19tY2VfYW1kIHNvdW5kY29yZSBrdm1fYW1kIGNjcCBrdm0gcGNzcGtyIGlycWJ5cGFzcyBo cF93bWkgc3BhcnNlX2tleW1hcCByZmtpbGwgazEwdGVtcCB3bWlfYm1vZiBudl90Y28gaTJjX25m b3JjZTIgYWNwaV9jcHVmcmVxIGlwX3RhYmxlcyB4ZnMgbm91dmVhdSB2aWRlbyBteG1fd21pIGky Y19hbGdvX2JpdCBkcm1fa21zX2hlbHBlciBtcHRzYXMgY2VjIHNjc2lfdHJhbnNwb3J0X3NhcyB0 dG0gbXB0c2NzaWggYXRhX2dlbmVyaWMgZmlyZXdpcmVfb2hjaSBwYXRhX2FjcGkgZmlyZXdpcmVf Y29yZSBkcm0gc2VyaW9fcmF3IG1wdGJhc2UgZm9yY2VkZXRoIGNyY19pdHVfdCBzYXRhX252IHBh dGFfYW1kIHdtaSBmbG9wcHkKPj4+Pj4gW8KgIDc4Ny4wODMxNDJdIGJsb2NrIG52bWUwbjE6IG5v IHVzYWJsZSBwYXRoIC0gcmVxdWV1aW5nIEkvTwo+Pj4+PiBbwqAgNzg3LjA5MTMwNF0gQ1BVOiAz IFBJRDogMzAgQ29tbToga3dvcmtlci8zOjBIIE5vdCB0YWludGVkIDUuOS4wLXJjOC51cGRhdGUr ICMzCj4+Pj4+IFvCoCA3ODcuMDk2NjczXSBibG9jayBudm1lMG4xOiBubyB1c2FibGUgcGF0aCAt IHJlcXVldWluZyBJL08KPj4+Pj4gW8KgIDc4Ny4wOTY2NzRdIGJsb2NrIG52bWUwbjE6IG5vIHVz YWJsZSBwYXRoIC0gcmVxdWV1aW5nIEkvTwo+Pj4+PiBbwqAgNzg3LjA5NjY4MF0gYmxvY2sgbnZt ZTBuMTogbm8gdXNhYmxlIHBhdGggLSByZXF1ZXVpbmcgSS9PCj4+Pj4+IFvCoCA3ODcuMDk2Njgx XSBibG9jayBudm1lMG4xOiBubyB1c2FibGUgcGF0aCAtIHJlcXVldWluZyBJL08KPj4+Pj4gW8Kg IDc4Ny4wOTY2ODNdIGJsb2NrIG52bWUwbjE6IG5vIHVzYWJsZSBwYXRoIC0gcmVxdWV1aW5nIEkv Two+Pj4+PiBbwqAgNzg3LjIwMTI0Ml0gSGFyZHdhcmUgbmFtZTogSGV3bGV0dC1QYWNrYXJkIEhQ IHh3OTQwMCBXb3Jrc3RhdGlvbi8wQTFDaCwgQklPUyA3ODZENiB2MDQuMDIgMDQvMjEvMjAwOQo+ Pj4+PiBbwqAgNzg3LjIxMDM2Nl0gV29ya3F1ZXVlOiBrYmxvY2tkIGJsa19tcV90aW1lb3V0X3dv cmsKPj4+Pj4gW8KgIDc4Ny4yMTUxNjFdIFJJUDogMDAxMDpyZWZjb3VudF93YXJuX3NhdHVyYXRl KzB4YTYvMHhmMAo+Pj4+PiBbwqAgNzg3LjIyMDI5NV0gQ29kZTogMDUgYWEgOTggMjIgMDEgMDEg ZTggOWYgY2YgYWQgZmYgMGYgMGIgYzMgODAgM2QgOTggOTggMjIgMDEgMDAgNzUgOTUgNDggYzcg YzcgNDggNTQgM2UgYTIgYzYgMDUgODggOTggMjIgMDEgMDEgZTggODAgY2YgYWQgZmYgPDBmPiAw YiBjMyA4MCAzZCA3NyA5OCAyMiAwMSAwMCAwZiA4NSA3MiBmZiBmZiBmZiA0OCBjNyBjNyBhMCA1 NCAzZQo+Pj4+PiBbwqAgNzg3LjIzOTAyMV0gUlNQOiAwMDE4OmZmZmZiODYwNDA3YjNkYzggRUZM QUdTOiAwMDAxMDI5Mgo+Pj4+PiBbwqAgNzg3LjI0NDI0MF0gUkFYOiAwMDAwMDAwMDAwMDAwMDI2 IFJCWDogMDAwMDAwMDAwMDAwMDAwMCBSQ1g6IGZmZmY5ZDkzZGRjNThkMDgKPj4+Pj4gW8KgIDc4 Ny4yNTEzNjFdIFJEWDogMDAwMDAwMDBmZmZmZmZkOCBSU0k6IDAwMDAwMDAwMDAwMDAwMjcgUkRJ OiBmZmZmOWQ5M2RkYzU4ZDAwCj4+Pj4+IFvCoCA3ODcuMjU4NDgwXSBSQlA6IGZmZmY5ZDkzZGJk NmMyMDAgUjA4OiAwMDAwMDBiNzQwZWQ2MGU4IFIwOTogZmZmZmZmZmZhMmZmZmJjNAo+Pj4+PiBb wqAgNzg3LjI2NTYxMl0gUjEwOiAwMDAwMDAwMDAwMDAwNDc3IFIxMTogMDAwMDAwMDAwMDAyODMy MCBSMTI6IGZmZmY5ZDkzZGJkNmMyZTgKPj4+Pj4gW8KgIDc4Ny4yNzI3NDFdIFIxMzogZmZmZjlk OTNkYmVhMDAwMCBSMTQ6IGZmZmZiODYwNDA3YjNlNzAgUjE1OiBmZmZmOWQ5M2RiZWEwMDAwCj4+ Pj4+IFvCoCA3ODcuMjc5ODY0XSBGUzrCoCAwMDAwMDAwMDAwMDAwMDAwKDAwMDApIEdTOmZmZmY5 ZDkzZGRjNDAwMDAoMDAwMCkga25sR1M6MDAwMDAwMDAwMDAwMDAwMAo+Pj4+PiBbwqAgNzg3LjI4 Nzk0OF0gQ1M6wqAgMDAxMCBEUzogMDAwMCBFUzogMDAwMCBDUjA6IDAwMDAwMDAwODAwNTAwMzMK Pj4+Pj4gW8KgIDc4Ny4yOTM2OTVdIENSMjogMDAwMDdmNDVmZDhmYTAyNCBDUjM6IDAwMDAwMDAw NzkyZGMwMDAgQ1I0OiAwMDAwMDAwMDAwMDAwNmUwCj4+Pj4+IFvCoCA3ODcuMzAwODIwXSBDYWxs IFRyYWNlOgo+Pj4+PiBbwqAgNzg3LjMwMzI3N13CoCBibGtfbXFfY2hlY2tfZXhwaXJlZCsweDEw OS8weDFiMAo+Pj4+PiBbwqAgNzg3LjMwNzYzOF3CoCBibGtfbXFfcXVldWVfdGFnX2J1c3lfaXRl cisweDFiOC8weDMzMAo+Pj4+PiBbwqAgNzg3LjMxMjUyNF3CoCA/IGJsa19wb2xsKzB4MzAwLzB4 MzAwCj4+Pj4+IFvCoCA3ODcuMzE2MDIyXcKgIGJsa19tcV90aW1lb3V0X3dvcmsrMHg0NC8weGUw Cj4+Pj4+IFvCoCA3ODcuMzIwMTI4XcKgIHByb2Nlc3Nfb25lX3dvcmsrMHgxYjQvMHgzNzAKPj4+ Pj4gW8KgIDc4Ny4zMjQxMzddwqAgd29ya2VyX3RocmVhZCsweDUzLzB4M2UwCj4+Pj4+IFvCoCA3 ODcuMzI3ODA5XcKgID8gcHJvY2Vzc19vbmVfd29yaysweDM3MC8weDM3MAo+Pj4+PiBbwqAgNzg3 LjMzMjAxNV3CoCBrdGhyZWFkKzB4MTFiLzB4MTQwCj4+Pj4+IFvCoCA3ODcuMzM1MjQ1XcKgID8g X19rdGhyZWFkX2JpbmRfbWFzaysweDYwLzB4NjAKPj4+Pj4gW8KgIDc4Ny4zMzk1MTVdwqAgcmV0 X2Zyb21fZm9yaysweDIyLzB4MzAKPj4+Pj4gW8KgIDc4Ny4zNDMwOTRdIC0tLVsgZW5kIHRyYWNl IDYwNmNmOTE4OTM3OWZjZmMgXS0tLQo+Pj4+Pgo+Pj4+Pgo+Pj4+PiBCZXN0IFJlZ2FyZHMsCj4+ Pj4+IMKgwqAgWWkgWmhhbmcKPj4+Pj4KPj4+Pj4KPj4+Pj4gLS0tLS0gT3JpZ2luYWwgTWVzc2Fn ZSAtLS0tLQo+Pj4+PiBGcm9tOiAiTWluZyBMZWkiIDxtaW5nLmxlaUByZWRoYXQuY29tPgo+Pj4+ PiBUbzogIlNhZ2kgR3JpbWJlcmciIDxzYWdpQGdyaW1iZXJnLm1lPgo+Pj4+PiBDYzogIkplbnMg QXhib2UiIDxheGJvZUBrZXJuZWwuZGs+LCAiWWkgWmhhbmciIDx5aS56aGFuZ0ByZWRoYXQuY29t PiwgbGludXgtbnZtZUBsaXN0cy5pbmZyYWRlYWQub3JnLCBsaW51eC1ibG9ja0B2Z2VyLmtlcm5l bC5vcmcsICJLZWl0aCBCdXNjaCIgPGtidXNjaEBrZXJuZWwub3JnPiwgIkNocmlzdG9waCBIZWxs d2lnIiA8aGNoQGxzdC5kZT4KPj4+Pj4gU2VudDogRnJpZGF5LCBPY3RvYmVyIDksIDIwMjAgMTI6 Mzk6MzggUE0KPj4+Pj4gU3ViamVjdDogUmU6IFtQQVRDSF0gYmxvY2s6IHJlLWludHJvZHVjZSBi bGtfbXFfY29tcGxldGVfcmVxdWVzdF9zeW5jCj4+Pj4+Cj4+Pj4+IE9uIFRodSwgT2N0IDA4LCAy MDIwIGF0IDAyOjM3OjUwUE0gLTA3MDAsIFNhZ2kgR3JpbWJlcmcgd3JvdGU6Cj4+Pj4+PiBJbiBu dm1lLXRjcCBhbmQgbnZtZS1yZG1hLCB0aGUgdGltZW91dCBoYW5kbGVyIGluIGNlcnRhaW4gY29u ZGl0aW9ucwo+Pj4+Pj4gbmVlZHMgdG8gY29tcGxldGUgYW4gYWJvcnRlZCByZXF1ZXN0LiBUaGUg dGltZW91dCBoYW5kbGVyIHNlcmlhbGl6ZXMKPj4+Pj4+IGFnYWluc3QgYW4gZXJyb3IgcmVjb3Zl cnkgc2VxdWVuY2UgdGhhdCBpdGVyYXRlcyBvdmVyIHRoZSBpbmZsaWdodAo+Pj4+Pj4gcmVxdWVz dHMgYW5kIGNhbmNlbHMgdGhlbS4KPj4+Pj4+Cj4+Pj4+PiBIb3dldmVyLCB0aGUgZmFjdCB0aGF0 IGJsa19tcV9jb21wbGV0ZV9yZXF1ZXN0IG1heSBkZWZlciB0byBhIGRpZmZlcmVudAo+Pj4+Pj4g Y29yZSB0aGF0IHNlcmlhbGl6YXRpb24gYnJlYWtzLgo+Pj4+Pj4KPj4+Pj4+IEhlbmNlIHJlLWlu dHJvZHVjZSBibGtfbXFfY29tcGxldGVfcmVxdWVzdF9zeW5jIGFuZCB1c2UgdGhhdCBpbiB0aGUK Pj4+Pj4+IHRpbWVvdXQgaGFuZGxlciB0byBtYWtlIHN1cmUgdGhhdCB3ZSBkb24ndCBnZXQgYSB1 c2UtYWZ0ZXItZnJlZQo+Pj4+Pj4gY29uZGl0aW9uLgo+Pj4+Pj4KPj4+Pj4+IFRoaXMgd2FzIHVu Y292ZXJlZCBieSB0aGUgYmxrdGVzdHM6Cj4+Pj4+PiAtLSAKPj4+Pj4+ICQgbnZtZV90cnR5cGU9 dGNwIC4vY2hlY2sgbnZtZS8wMTIKPj4+Pj4+Cj4+Pj4+PiBbIDIxNTIuNTQ2MzQzXSBydW4gYmxr dGVzdHMgbnZtZS8wMTIgYXQgMjAyMC0xMC0wOCAwNTo1OTowMwo+Pj4+Pj4gWyAyMTUyLjc5OTY0 MF0gbG9vcDogbW9kdWxlIGxvYWRlZAo+Pj4+Pj4gWyAyMTUyLjgzNTIyMl0gbnZtZXQ6IGFkZGlu ZyBuc2lkIDEgdG8gc3Vic3lzdGVtIGJsa3Rlc3RzLXN1YnN5c3RlbS0xCj4+Pj4+PiBbIDIxNTIu ODYwNjk3XSBudm1ldF90Y3A6IGVuYWJsaW5nIHBvcnQgMCAoMTI3LjAuMC4xOjQ0MjApCj4+Pj4+ PiBbIDIxNTIuOTM3ODg5XSBudm1ldDogY3JlYXRpbmcgY29udHJvbGxlciAxIGZvciBzdWJzeXN0 ZW0gYmxrdGVzdHMtc3Vic3lzdGVtLTEgZm9yIE5RTiBucW4uMjAxNC0wOC5vcmcubnZtZXhwcmVz czp1dWlkOmU1NDQxNDkxMjZhMjQxNDVhYmVlYjYxMjliMGVjNTJjLgo+Pj4+Pj4gWyAyMTUyLjk1 MjA4NV0gbnZtZSBudm1lMDogY3JlYXRpbmcgMTIgSS9PIHF1ZXVlcy4KPj4+Pj4+IFsgMjE1Mi45 NTgwNDJdIG52bWUgbnZtZTA6IG1hcHBlZCAxMi8wLzAgZGVmYXVsdC9yZWFkL3BvbGwgcXVldWVz Lgo+Pj4+Pj4gWyAyMTUyLjk2OTk0OF0gbnZtZSBudm1lMDogbmV3IGN0cmw6IE5RTiAiYmxrdGVz dHMtc3Vic3lzdGVtLTEiLCBhZGRyIDEyNy4wLjAuMTo0NDIwCj4+Pj4+PiBbIDIxNTQuOTI3OTUz XSBYRlMgKG52bWUwbjEpOiBNb3VudGluZyBWNSBGaWxlc3lzdGVtCj4+Pj4+PiBbIDIxNTQuOTQy NDMyXSBYRlMgKG52bWUwbjEpOiBFbmRpbmcgY2xlYW4gbW91bnQKPj4+Pj4+IFsgMjE1NC45NDgx ODNdIHhmcyBmaWxlc3lzdGVtIGJlaW5nIG1vdW50ZWQgYXQgL21udC9ibGt0ZXN0cyBzdXBwb3J0 cyB0aW1lc3RhbXBzIHVudGlsIDIwMzggKDB4N2ZmZmZmZmYpCj4+Pj4+PiBbIDIyMTUuMTkzNjQ1 XSBudm1lIG52bWUwOiBxdWV1ZSA3OiB0aW1lb3V0IHJlcXVlc3QgMHgxMSB0eXBlIDQKPj4+Pj4+ IFsgMjIxNS4xOTkzMzFdIG52bWUgbnZtZTA6IHN0YXJ0aW5nIGVycm9yIHJlY292ZXJ5Cj4+Pj4+ PiBbIDIyMTUuMjAzODkwXSBudm1lIG52bWUwOiBxdWV1ZSA3OiB0aW1lb3V0IHJlcXVlc3QgMHgx MiB0eXBlIDQKPj4+Pj4+IFsgMjIxNS4yMDQ0ODNdIGJsb2NrIG52bWUwbjE6IG5vIHVzYWJsZSBw YXRoIC0gcmVxdWV1aW5nIEkvTwo+Pj4+Pj4gWyAyMjE1LjIxNDk3Nl0gYmxvY2sgbnZtZTBuMTog bm8gdXNhYmxlIHBhdGggLSByZXF1ZXVpbmcgSS9PCj4+Pj4+PiBbIDIyMTUuMjE1NDk1XSBudm1l IG52bWUwOiBSZWNvbm5lY3RpbmcgaW4gMTAgc2Vjb25kcy4uLgo+Pj4+Pj4gWyAyMjE1LjIxNTUw Ml0gLS0tLS0tLS0tLS0tWyBjdXQgaGVyZSBdLS0tLS0tLS0tLS0tCj4+Pj4+PiBbIDIyMTUuMjE1 NTA1XSByZWZjb3VudF90OiB1bmRlcmZsb3c7IHVzZS1hZnRlci1mcmVlLgo+Pj4+Pj4gWyAyMjE1 LjIxNTYxN10gV0FSTklORzogQ1BVOiA2IFBJRDogNDUgYXQgbGliL3JlZmNvdW50LmM6MjggcmVm Y291bnRfd2Fybl9zYXR1cmF0ZSsweGE2LzB4ZjAKPj4+Pj4+IFsgMjIxNS4yMTU3NDVdIFJTUDog MDAxODpmZmZmYjcxYjgwODM3ZGM4IEVGTEFHUzogMDAwMTAyOTIKPj4+Pj4+IFsgMjIxNS4yMTU3 NTBdIFJBWDogMDAwMDAwMDAwMDAwMDAyNiBSQlg6IDAwMDAwMDAwMDAwMDAwMDAgUkNYOiBmZmZm OTNmMzdkY2Q4ZDA4Cj4+Pj4+PiBbIDIyMTUuMjE1NzUzXSBSRFg6IDAwMDAwMDAwZmZmZmZmZDgg UlNJOiAwMDAwMDAwMDAwMDAwMDI3IFJESTogZmZmZjkzZjM3ZGNkOGQwMAo+Pj4+Pj4gWyAyMjE1 LjIxNTc1NV0gUkJQOiBmZmZmOTNmMzdhODEyNDAwIFIwODogMDAwMDAyMDNjNTIyMWZjZSBSMDk6 IGZmZmZmZmZmYTdmZmZiYzQKPj4+Pj4+IFsgMjIxNS4yMTU3NThdIFIxMDogMDAwMDAwMDAwMDAw MDQ3NyBSMTE6IDAwMDAwMDAwMDAwMjgzNWMgUjEyOiBmZmZmOTNmMzdhODEyNGU4Cj4+Pj4+PiBb IDIyMTUuMjE1NzYxXSBSMTM6IGZmZmY5M2YzN2EyYjAwMDAgUjE0OiBmZmZmYjcxYjgwODM3ZTcw IFIxNTogZmZmZjkzZjM3YTJiMDAwMAo+Pj4+Pj4gWyAyMjE1LjIxNTc2NV0gRlM6wqAgMDAwMDAw MDAwMDAwMDAwMCgwMDAwKSBHUzpmZmZmOTNmMzdkY2MwMDAwKDAwMDApIGtubEdTOjAwMDAwMDAw MDAwMDAwMDAKPj4+Pj4+IFsgMjIxNS4yMTU3NjhdIENTOsKgIDAwMTAgRFM6IDAwMDAgRVM6IDAw MDAgQ1IwOiAwMDAwMDAwMDgwMDUwMDMzCj4+Pj4+PiBbIDIyMTUuMjE1NzcxXSBDUjI6IDAwMDA1 NjM3YjQxMzcwMjggQ1IzOiAwMDAwMDAwMDdjMWJlMDAwIENSNDogMDAwMDAwMDAwMDAwMDZlMAo+ Pj4+Pj4gWyAyMjE1LjIxNTc3M10gQ2FsbCBUcmFjZToKPj4+Pj4+IFsgMjIxNS4yMTU3ODRdwqAg YmxrX21xX2NoZWNrX2V4cGlyZWQrMHgxMDkvMHgxYjAKPj4+Pj4+IFsgMjIxNS4yMTU3OTddwqAg YmxrX21xX3F1ZXVlX3RhZ19idXN5X2l0ZXIrMHgxYjgvMHgzMzAKPj4+Pj4+IFsgMjIxNS4yMTU4 MDFdwqAgPyBibGtfcG9sbCsweDMwMC8weDMwMAo+Pj4+Pj4gWyAyMjE1LjIxNTgwNl3CoCBibGtf bXFfdGltZW91dF93b3JrKzB4NDQvMHhlMAo+Pj4+Pj4gWyAyMjE1LjIxNTgxNF3CoCBwcm9jZXNz X29uZV93b3JrKzB4MWI0LzB4MzcwCj4+Pj4+PiBbIDIyMTUuMjE1ODIwXcKgIHdvcmtlcl90aHJl YWQrMHg1My8weDNlMAo+Pj4+Pj4gWyAyMjE1LjIxNTgyNV3CoCA/IHByb2Nlc3Nfb25lX3dvcmsr MHgzNzAvMHgzNzAKPj4+Pj4+IFsgMjIxNS4yMTU4MjldwqAga3RocmVhZCsweDExYi8weDE0MAo+ Pj4+Pj4gWyAyMjE1LjIxNTgzNF3CoCA/IF9fa3RocmVhZF9iaW5kX21hc2srMHg2MC8weDYwCj4+ Pj4+PiBbIDIyMTUuMjE1ODQxXcKgIHJldF9mcm9tX2ZvcmsrMHgyMi8weDMwCj4+Pj4+PiBbIDIy MTUuMjE1ODQ3XSAtLS1bIGVuZCB0cmFjZSA3ZDEzN2UzNmUyM2MwZDE5IF0tLS0KPj4+Pj4+IC0t IAo+Pj4+Pj4KPj4+Pj4+IFJlcG9ydGVkLWJ5OiBZaSBaaGFuZyA8eWkuemhhbmdAcmVkaGF0LmNv bT4KPj4+Pj4+IEZpeGVzOiAyMzYxODdjNGVkMTkgKCJudm1lLXRjcDogZml4IHRpbWVvdXQgaGFu ZGxlciIpCj4+Pj4+PiBGaXhlczogMDQ3NWE4ZGNiY2VlICgibnZtZS1yZG1hOiBmaXggdGltZW91 dCBoYW5kbGVyIikKPj4+Pj4+IFNpZ25lZC1vZmYtYnk6IFNhZ2kgR3JpbWJlcmcgPHNhZ2lAZ3Jp bWJlcmcubWU+Cj4+Pj4+PiAtLS0KPj4+Pj4+IFlpLCB3b3VsZCBhcHByZWNpYXRlIHlvdXIgVGVz dGVkLWJ5IHRhZwo+Pj4+Pj4KPj4+Pj4+IMKgIGJsb2NrL2Jsay1tcS5jwqDCoMKgwqDCoMKgwqDC oMKgwqAgfCA3ICsrKysrKysKPj4+Pj4+IMKgIGRyaXZlcnMvbnZtZS9ob3N0L3JkbWEuYyB8IDIg Ky0KPj4+Pj4+IMKgIGRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jwqAgfCAyICstCj4+Pj4+PiDCoCBp bmNsdWRlL2xpbnV4L2Jsay1tcS5owqDCoCB8IDEgKwo+Pj4+Pj4gwqAgNCBmaWxlcyBjaGFuZ2Vk LCAxMCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQo+Pj4+Pj4KPj4+Pj4+IGRpZmYgLS1n aXQgYS9ibG9jay9ibGstbXEuYyBiL2Jsb2NrL2Jsay1tcS5jCj4+Pj4+PiBpbmRleCBmOGUxZTc1 OWM5MDUuLjJkMTU0NzIyZWYzOSAxMDA2NDQKPj4+Pj4+IC0tLSBhL2Jsb2NrL2Jsay1tcS5jCj4+ Pj4+PiArKysgYi9ibG9jay9ibGstbXEuYwo+Pj4+Pj4gQEAgLTcyOSw2ICs3MjksMTMgQEAgYm9v bCBibGtfbXFfY29tcGxldGVfcmVxdWVzdF9yZW1vdGUoc3RydWN0IHJlcXVlc3QgKnJxKQo+Pj4+ Pj4gwqAgfQo+Pj4+Pj4gwqAgRVhQT1JUX1NZTUJPTF9HUEwoYmxrX21xX2NvbXBsZXRlX3JlcXVl c3RfcmVtb3RlKTsKPj4+Pj4+IMKgICt2b2lkIGJsa19tcV9jb21wbGV0ZV9yZXF1ZXN0X3N5bmMo c3RydWN0IHJlcXVlc3QgKnJxKQo+Pj4+Pj4gK3sKPj4+Pj4+ICvCoMKgwqAgV1JJVEVfT05DRShy cS0+c3RhdGUsIE1RX1JRX0NPTVBMRVRFKTsKPj4+Pj4+ICvCoMKgwqAgcnEtPnEtPm1xX29wcy0+ Y29tcGxldGUocnEpOwo+Pj4+Pj4gK30KPj4+Pj4+ICtFWFBPUlRfU1lNQk9MX0dQTChibGtfbXFf Y29tcGxldGVfcmVxdWVzdF9zeW5jKTsKPj4+Pj4+ICsKPj4+Pj4+IMKgIC8qKgo+Pj4+Pj4gwqDC oCAqIGJsa19tcV9jb21wbGV0ZV9yZXF1ZXN0IC0gZW5kIEkvTyBvbiBhIHJlcXVlc3QKPj4+Pj4+ IMKgwqAgKiBAcnE6wqDCoMKgwqDCoMKgwqAgdGhlIHJlcXVlc3QgYmVpbmcgcHJvY2Vzc2VkCj4+ Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9udm1lL2hvc3QvcmRtYS5jIGIvZHJpdmVycy9udm1l L2hvc3QvcmRtYS5jCj4+Pj4+PiBpbmRleCA5ZTM3OGQwYTBjMDEuLjQ1ZmM2MDUzNDlkYSAxMDA2 NDQKPj4+Pj4+IC0tLSBhL2RyaXZlcnMvbnZtZS9ob3N0L3JkbWEuYwo+Pj4+Pj4gKysrIGIvZHJp dmVycy9udm1lL2hvc3QvcmRtYS5jCj4+Pj4+PiBAQCAtMTk3NSw3ICsxOTc1LDcgQEAgc3RhdGlj IHZvaWQgbnZtZV9yZG1hX2NvbXBsZXRlX3RpbWVkX291dChzdHJ1Y3QgcmVxdWVzdCAqcnEpCj4+ Pj4+PiDCoMKgwqDCoMKgIG52bWVfcmRtYV9zdG9wX3F1ZXVlKHF1ZXVlKTsKPj4+Pj4+IMKgwqDC oMKgwqAgaWYgKCFibGtfbXFfcmVxdWVzdF9jb21wbGV0ZWQocnEpKSB7Cj4+Pj4+PiDCoMKgwqDC oMKgwqDCoMKgwqAgbnZtZV9yZXEocnEpLT5zdGF0dXMgPSBOVk1FX1NDX0hPU1RfQUJPUlRFRF9D TUQ7Cj4+Pj4+PiAtwqDCoMKgwqDCoMKgwqAgYmxrX21xX2NvbXBsZXRlX3JlcXVlc3QocnEpOwo+ Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGJsa19tcV9jb21wbGV0ZV9yZXF1ZXN0X3N5bmMocnEpOwo+ Pj4+Pj4gwqDCoMKgwqDCoCB9Cj4+Pj4+PiDCoMKgwqDCoMKgIG11dGV4X3VubG9jaygmY3RybC0+ dGVhcmRvd25fbG9jayk7Cj4+Pj4+PiDCoCB9Cj4+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9u dm1lL2hvc3QvdGNwLmMgYi9kcml2ZXJzL252bWUvaG9zdC90Y3AuYwo+Pj4+Pj4gaW5kZXggOGY0 ZjI5ZjE4YjhjLi42MjliMDI1Njg1ZDEgMTAwNjQ0Cj4+Pj4+PiAtLS0gYS9kcml2ZXJzL252bWUv aG9zdC90Y3AuYwo+Pj4+Pj4gKysrIGIvZHJpdmVycy9udm1lL2hvc3QvdGNwLmMKPj4+Pj4+IEBA IC0yMTc3LDcgKzIxNzcsNyBAQCBzdGF0aWMgdm9pZCBudm1lX3RjcF9jb21wbGV0ZV90aW1lZF9v dXQoc3RydWN0IHJlcXVlc3QgKnJxKQo+Pj4+Pj4gwqDCoMKgwqDCoCBudm1lX3RjcF9zdG9wX3F1 ZXVlKGN0cmwsIG52bWVfdGNwX3F1ZXVlX2lkKHJlcS0+cXVldWUpKTsKPj4+Pj4+IMKgwqDCoMKg wqAgaWYgKCFibGtfbXFfcmVxdWVzdF9jb21wbGV0ZWQocnEpKSB7Cj4+Pj4+PiDCoMKgwqDCoMKg wqDCoMKgwqAgbnZtZV9yZXEocnEpLT5zdGF0dXMgPSBOVk1FX1NDX0hPU1RfQUJPUlRFRF9DTUQ7 Cj4+Pj4+PiAtwqDCoMKgwqDCoMKgwqAgYmxrX21xX2NvbXBsZXRlX3JlcXVlc3QocnEpOwo+Pj4+ Pj4gK8KgwqDCoMKgwqDCoMKgIGJsa19tcV9jb21wbGV0ZV9yZXF1ZXN0X3N5bmMocnEpOwo+Pj4+ Pgo+Pj4+PiBPciBjb21wbGV0ZSB0aGUgcmVxdWVzdCBpbiB0aGUgZm9sbG93aW5nIHdheT8gVGhl biBvbmUgYmxvY2sgbGF5ZXIgQVBJCj4+Pj4+IGNhbiBiZSBzYXZlZDoKPj4+Pj4KPj4+Pj4gwqDC oMKgwqBibGtfbXFfY29tcGxldGVfcmVxdWVzdF9yZW1vdGUocnEpOwo+Pj4+PiDCoMKgwqDCoG52 bWVfY29tcGxldGVfcnEocnEpOwo+Pj4+Pgo+Pj4+Pgo+Pj4+PiB0aGFua3MsCj4+Pj4+IE1pbmcK Pj4+Pj4KPj4+Pj4KPj4+Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KPj4+Pj4gTGludXgtbnZtZSBtYWlsaW5nIGxpc3QKPj4+Pj4gTGludXgtbnZtZUBs aXN0cy5pbmZyYWRlYWQub3JnCj4+Pj4+IGh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxt YW4vbGlzdGluZm8vbGludXgtbnZtZQo+Pj4+Pgo+Pj4+Pgo+Pj4+PiBfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+Pj4+PiBMaW51eC1udm1lIG1haWxpbmcg bGlzdAo+Pj4+PiBMaW51eC1udm1lQGxpc3RzLmluZnJhZGVhZC5vcmcKPj4+Pj4gaHR0cDovL2xp c3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1udm1lCj4+Pj4+Cj4+Pj4K Pj4+Cj4+Cj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Cj4+IExpbnV4LW52bWUgbWFpbGluZyBsaXN0Cj4+IExpbnV4LW52bWVAbGlzdHMuaW5mcmFkZWFk Lm9yZwo+PiBodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4 LW52bWUKPiAKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwo+IExpbnV4LW52bWUgbWFpbGluZyBsaXN0Cj4gTGludXgtbnZtZUBsaXN0cy5pbmZyYWRl YWQub3JnCj4gaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51 eC1udm1lCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpM aW51eC1udm1lIG1haWxpbmcgbGlzdApMaW51eC1udm1lQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0 cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1udm1lCg==