Received: by 2002:a05:7412:d8a:b0:e2:908c:2ebd with SMTP id b10csp594582rdg; Tue, 10 Oct 2023 22:37:16 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGLycTx4eSYtEbmkw8PUHvc1o7hZc1TrwiNz8g5HpRxO8iJajItveI2K+4rb7J4+rCLI9Fk X-Received: by 2002:a05:6a00:3981:b0:68f:c078:b0c9 with SMTP id fi1-20020a056a00398100b0068fc078b0c9mr26827014pfb.11.1697002636338; Tue, 10 Oct 2023 22:37:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697002636; cv=none; d=google.com; s=arc-20160816; b=cGLASakEol1Kt6W9+mUWEK/1Ei8EiNJLYyPzKZdjlkgOBA/adQb5t25SKc8T9lyBw1 2VLtdIA4hhYg4tWFwZfjWcZkY2gy5L51WvA0FfP88s2t7vF4eIi+gC9002tbGhF243qK iLe+VY03eYuQfDIoa2b7sZhPF3wcbn0MYD6eJ6BphU2Z1jLRMQrxO3U/OCWGetvK3QYf aGWDe59jyYAj5QNjyKvE0P8GeJux5OE0tPEzAWbvZsuWtD3QWT3L2fZ8GfHxVUn5u+k/ in14ea31h+LaPV0Nwc3ep/kxPKPg5v/fc6GJoc64ELJaDfHqrGrzMuE4c4pVgMZq1AZW 1GTA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from; bh=CoqYbsPs4uciOUS3cuGgi3MCgPO74QStkOnf8+b25bA=; fh=ibI7WI+BuE2oJeh73mgbnhcAWjO4vEtmf10aqoF8s+Y=; b=ChwR9KTgQDxdJvfCChS7IKUDmMsROWaRdAu89dvtdIkTtWHFBnkcbHcVD45N4WnfWo HhGUxjBS3hGGBmIIDdbfDz2lCuKznWFvp6Yb8Y3Xjxd7V8lhnyVPGQ/D2XA4T9wjJJSZ z6bprHk49T6j083gQjZkBk8kwUVbAF0f1EjAgYdEHxQoZoa+4xgR0UjTH8KWMLBo0iey 27lqJgj5CZ/z2hr+npLcTy+20wwTW39oBs/heJdD6tpUhNs9zuTrwzhVDvnBu2rV+X/p LXzGpPT0OjurWig5vQ6bS8PHyAqDrOV2V4kdodSKqkFXWbi4ATzlAxtKFenBupZ30285 nW4g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id z10-20020a056a00240a00b0068a6f6d9f7dsi11920444pfh.57.2023.10.10.22.37.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Oct 2023 22:37:16 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id E36C981393E2; Tue, 10 Oct 2023 22:37:13 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229713AbjJKFg5 (ORCPT + 99 others); Wed, 11 Oct 2023 01:36:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51080 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229471AbjJKFg4 (ORCPT ); Wed, 11 Oct 2023 01:36:56 -0400 Received: from rtits2.realtek.com.tw (rtits2.realtek.com [211.75.126.72]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 05CF68E; Tue, 10 Oct 2023 22:36:53 -0700 (PDT) X-SpamFilter-By: ArmorX SpamTrap 5.78 with qID 39B5alcwF3590138, This message is accepted by code: ctloc85258 Received: from mail.realtek.com (rtexh36506.realtek.com.tw[172.21.6.27]) by rtits2.realtek.com.tw (8.15.2/2.92/5.92) with ESMTPS id 39B5alcwF3590138 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 11 Oct 2023 13:36:47 +0800 Received: from RTEXDAG01.realtek.com.tw (172.21.6.100) by RTEXH36506.realtek.com.tw (172.21.6.27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.17; Wed, 11 Oct 2023 13:36:47 +0800 Received: from RTEXMBS01.realtek.com.tw (172.21.6.94) by RTEXDAG01.realtek.com.tw (172.21.6.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.7; Wed, 11 Oct 2023 13:36:47 +0800 Received: from RTEXMBS01.realtek.com.tw ([fe80::9cb8:8d5:b6b3:213b]) by RTEXMBS01.realtek.com.tw ([fe80::9cb8:8d5:b6b3:213b%5]) with mapi id 15.01.2375.007; Wed, 11 Oct 2023 13:36:47 +0800 From: Ricky WU To: Ulf Hansson CC: "tommyhebb@gmail.com" , "linux-mmc@vger.kernel.org" , "linux-kernel@vger.kernel.org" Subject: RE: [PATCH v3] mmc: rtsx: improve performance for multi block rw Thread-Topic: [PATCH v3] mmc: rtsx: improve performance for multi block rw Thread-Index: AQHX9mTncx2NNhc4Hk2xCW7FootmX6w8X/iAgAN+/CD//4BBAIAB2EewgAY9WACAAfsEAIA+RCiAgATnqGCAAA5YAIO7cd/g Date: Wed, 11 Oct 2023 05:36:46 +0000 Message-ID: References: <8e61aed5f64e434abc1d7b6f81859c8a@realtek.com> In-Reply-To: Accept-Language: zh-TW, en-US Content-Language: zh-TW x-originating-ip: [172.22.81.100] x-kse-serverinfo: RTEXDAG01.realtek.com.tw, 9 x-kse-antispam-interceptor-info: fallback x-kse-antivirus-interceptor-info: fallback Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-KSE-AntiSpam-Interceptor-Info: fallback X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Tue, 10 Oct 2023 22:37:14 -0700 (PDT) SGkgVWxmIEhhbnNzb24sDQoNCkNhbiBJIGtub3cgd2hhdCBpcyB0aGlzIHBhdGNoIHN0YXR1cyBv ciBoYXMgc29tZSBjb25jZXJuIG9uIHRoaXMgcGF0Y2g/DQoNClJpY2t5DQo+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFVsZiBIYW5zc29uIDx1bGYuaGFuc3NvbkBsaW5hcm8u b3JnPg0KPiBTZW50OiBUaHVyc2RheSwgRmVicnVhcnkgMTAsIDIwMjIgMTA6NTcgUE0NCj4gVG86 IFJpY2t5IFdVIDxyaWNreV93dUByZWFsdGVrLmNvbT4NCj4gQ2M6IHRvbW15aGViYkBnbWFpbC5j b207IGxpbnV4LW1tY0B2Z2VyLmtlcm5lbC5vcmc7DQo+IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5l bC5vcmcNCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2M10gbW1jOiBydHN4OiBpbXByb3ZlIHBlcmZv cm1hbmNlIGZvciBtdWx0aSBibG9jayBydw0KPiANCj4gT24gVGh1LCAxMCBGZWIgMjAyMiBhdCAw Nzo0MywgUmlja3kgV1UgPHJpY2t5X3d1QHJlYWx0ZWsuY29tPiB3cm90ZToNCj4gPg0KPiA+DQo+ ID4NCj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBVbGYgSGFu c3NvbiA8dWxmLmhhbnNzb25AbGluYXJvLm9yZz4NCj4gPiA+IFNlbnQ6IE1vbmRheSwgRmVicnVh cnkgNywgMjAyMiA3OjExIFBNDQo+ID4gPiBUbzogUmlja3kgV1UgPHJpY2t5X3d1QHJlYWx0ZWsu Y29tPg0KPiA+ID4gQ2M6IHRvbW15aGViYkBnbWFpbC5jb207IGxpbnV4LW1tY0B2Z2VyLmtlcm5l bC5vcmc7DQo+ID4gPiBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnDQo+ID4gPiBTdWJqZWN0 OiBSZTogW1BBVENIIHYzXSBtbWM6IHJ0c3g6IGltcHJvdmUgcGVyZm9ybWFuY2UgZm9yIG11bHRp DQo+ID4gPiBibG9jayBydw0KPiA+ID4NCj4gPiA+IFsuLi5dDQo+ID4gPg0KPiA+ID4gPiA+ID4g PiA+DQo+ID4gPiA+ID4gPiA+ID4gRG8geW91IGhhdmUgYW55IHN1Z2dlc3Rpb24gZm9yIHRlc3Rp bmcgcmFuZG9tIEkvTyBCdXQgd2UNCj4gPiA+ID4gPiA+ID4gPiB0aGluayByYW5kb20gSS9PIHdp bGwgbm90IGNoYW5nZSBtdWNoDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IEkgd291bGQg cHJvYmFibHkgbG9vayBpbnRvIHVzaW5nIGZpbywNCj4gPiA+ID4gPiA+ID4gaHR0cHM6Ly9maW8u cmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0Lw0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4NCj4g PiA+ID4gPiA+IEZpbGxlZCByYW5kb20gSS9PIGRhdGENCj4gPiA+ID4gPiA+IEJlZm9yZSB0aGUg cGF0Y2g6DQo+ID4gPiA+ID4gPiBDTUQgKFJhbmRyZWFkKToNCj4gPiA+ID4gPiA+IHN1ZG8gZmlv IC1maWxlbmFtZT0vZGV2L21tY2JsazAgLWRpcmVjdD0xIC1udW1qb2JzPTEgLXRocmVhZA0KPiA+ ID4gPiA+ID4gLWdyb3VwX3JlcG9ydGluZyAtaW9lbmdpbmU9cHN5bmMgLWlvZGVwdGg9MSAtc2l6 ZT0xRw0KPiA+ID4gPiA+ID4gLW5hbWU9bXl0ZXN0IC1icz0xTSAtcnc9cmFuZHJlYWQNCj4gPiA+ ID4gPg0KPiA+ID4gPiA+IFRoYW5rcyBmb3IgcnVubmluZyB0aGUgdGVzdHMhIE92ZXJhbGwsIEkg d291bGQgbm90IGV4cGVjdCBhbg0KPiA+ID4gPiA+IGltcGFjdCBvbiB0aGUgdGhyb3VnaHB1dCB3 aGVuIHVzaW5nIGEgYmlnIGJsb2Nrc2l6ZSBsaWtlIDFNLg0KPiA+ID4gPiA+IFRoaXMgaXMgYWxz byBwcmV0dHkgY2xlYXIgZnJvbSB0aGUgcmVzdWx0IHlvdSBoYXZlIHByb3ZpZGVkLg0KPiA+ID4g PiA+DQo+ID4gPiA+ID4gSG93ZXZlciwgZXNwZWNpYWxseSBmb3IgcmFuZG9tIHdyaXRlcyBhbmQg cmVhZHMsIHdlIHdhbnQgdG8gdHJ5DQo+ID4gPiA+ID4gd2l0aCBzbWFsbGVyIGJsb2Nrc2l6ZXMu IExpa2UgOGsgb3IgMTZrLCB3b3VsZCB5b3UgbWluZCBydW5uaW5nDQo+ID4gPiA+ID4gYW5vdGhl ciByb3VuZCBvZiB0ZXN0cyB0byBzZWUgaG93IHRoYXQgd29ya3Mgb3V0Pw0KPiA+ID4gPiA+DQo+ ID4gPiA+DQo+ID4gPiA+IEZpbGxlZCByYW5kb20gSS9PIGRhdGEoOGsvMTZrKQ0KPiA+ID4NCj4g PiA+IEhpIFJpY2t5LA0KPiA+ID4NCj4gPiA+IEFwb2xvZ2l6ZSBmb3IgdGhlIGRlbGF5ISBUaGFu a3MgZm9yIHJ1bm5pbmcgdGhlIHRlc3RzLiBMZXQgbWUNCj4gPiA+IGNvbW1lbnQgb24gdGhlbSBi ZWxvdy4NCj4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+IEJlZm9yZShyYW5kcmVhZCkNCj4gPiA+ID4g OGs6DQo+ID4gPiA+IENtZDogc3VkbyBmaW8gLWZpbGVuYW1lPS9kZXYvbW1jYmxrMCAtZGlyZWN0 PTEgLW51bWpvYnM9MSAtdGhyZWFkDQo+ID4gPiA+IC1ncm91cF9yZXBvcnRpbmcgLWlvZW5naW5l PXBzeW5jIC1pb2RlcHRoPTEgLXNpemU9MUcgLW5hbWU9bXl0ZXN0DQo+ID4gPiA+IC1icz04ayAt cnc9cmFuZHJlYWQNCj4gPiA+ID4gbXl0ZXN0OiAoZz0wKTogcnc9cmFuZHJlYWQsIGJzPShSKSA4 MTkyQi04MTkyQiwgKFcpIDgxOTJCLTgxOTJCLA0KPiA+ID4gPiAoVCkgODE5MkItODE5MkIsIGlv ZW5naW5lPXBzeW5jLCBpb2RlcHRoPTENCj4gPiA+ID4gcmVzdWx0Og0KPiA+ID4gPiBSdW4gc3Rh dHVzIGdyb3VwIDAgKGFsbCBqb2JzKToNCj4gPiA+ID4gICAgUkVBRDogYnc9MTYuNU1pQi9zICgx Ny4zTUIvcyksIDE2LjVNaUIvcy0xNi41TWlCL3MNCj4gPiA+ID4gKDE3LjNNQi9zLTE3LjNNQi9z KSwgaW89MTAyNE1pQiAoMTA3NE1CKSwgcnVuPTYyMDE5LTYyMDE5bXNlYw0KPiBEaXNrDQo+ID4g PiBzdGF0cyAocmVhZC93cml0ZSk6DQo+ID4gPiA+ICAgbW1jYmxrMDogaW9zPTEzMDc1Ny8wLCBt ZXJnZT0wLzAsIHRpY2tzPTU3NzUxLzAsIGluX3F1ZXVlPTU3NzUxLA0KPiA+ID4gPiB1dGlsPTk5 Ljg5JQ0KPiA+ID4gPg0KPiA+ID4gPiAxNms6DQo+ID4gPiA+IENtZDogc3VkbyBmaW8gLWZpbGVu YW1lPS9kZXYvbW1jYmxrMCAtZGlyZWN0PTEgLW51bWpvYnM9MSAtdGhyZWFkDQo+ID4gPiA+IC1n cm91cF9yZXBvcnRpbmcgLWlvZW5naW5lPXBzeW5jIC1pb2RlcHRoPTEgLXNpemU9MUcgLW5hbWU9 bXl0ZXN0DQo+ID4gPiA+IC1icz0xNmsgLXJ3PXJhbmRyZWFkDQo+ID4gPiA+IG15dGVzdDogKGc9 MCk6IHJ3PXJhbmRyZWFkLCBicz0oUikgMTYuMEtpQi0xNi4wS2lCLCAoVykNCj4gPiA+ID4gMTYu MEtpQi0xNi4wS2lCLCAoVCkgMTYuMEtpQi0xNi4wS2lCLCBpb2VuZ2luZT1wc3luYywgaW9kZXB0 aD0xDQo+ID4gPiA+IHJlc3VsdDoNCj4gPiA+ID4gUnVuIHN0YXR1cyBncm91cCAwIChhbGwgam9i cyk6DQo+ID4gPiA+ICAgIFJFQUQ6IGJ3PTIzLjNNaUIvcyAoMjQuNE1CL3MpLCAyMy4zTWlCL3Mt MjMuM01pQi9zDQo+ID4gPiA+ICgyNC40TUIvcy0yNC40TUIvcyksIGlvPTEwMjRNaUIgKDEwNzRN QiksIHJ1bj00NDAzNC00NDAzNG1zZWMNCj4gRGlzaw0KPiA+ID4gc3RhdHMgKHJlYWQvd3JpdGUp Og0KPiA+ID4gPiAgIG1tY2JsazA6IGlvcz02NTMzMy8wLCBtZXJnZT0wLzAsIHRpY2tzPTM5NDIw LzAsIGluX3F1ZXVlPTM5NDIwLA0KPiA+ID4gPiB1dGlsPTk5Ljg0JQ0KPiA+ID4gPg0KPiA+ID4g PiBCZWZvcmUocmFuZHJ3cml0ZSkNCj4gPiA+ID4gOGs6DQo+ID4gPiA+IENtZDogc3VkbyBmaW8g LWZpbGVuYW1lPS9kZXYvbW1jYmxrMCAtZGlyZWN0PTEgLW51bWpvYnM9MSAtdGhyZWFkDQo+ID4g PiA+IC1ncm91cF9yZXBvcnRpbmcgLWlvZW5naW5lPXBzeW5jIC1pb2RlcHRoPTEgLXNpemU9MTAw TQ0KPiA+ID4gPiAtbmFtZT1teXRlc3QgLWJzPThrIC1ydz1yYW5kd3JpdGUNCj4gPiA+ID4gbXl0 ZXN0OiAoZz0wKTogcnc9cmFuZHdyaXRlLCBicz0oUikgODE5MkItODE5MkIsIChXKSA4MTkyQi04 MTkyQiwNCj4gPiA+ID4gKFQpIDgxOTJCLTgxOTJCLCBpb2VuZ2luZT1wc3luYywgaW9kZXB0aD0x DQo+ID4gPiA+IHJlc3VsdDoNCj4gPiA+ID4gUnVuIHN0YXR1cyBncm91cCAwIChhbGwgam9icyk6 DQo+ID4gPiA+ICAgV1JJVEU6IGJ3PTQwNjBLaUIvcyAoNDE1OGtCL3MpLCA0MDYwS2lCL3MtNDA2 MEtpQi9zDQo+ID4gPiA+ICg0MTU4a0Ivcy00MTU4a0IvcyksIGlvPTEwME1pQiAoMTA1TUIpLCBy dW49MjUyMjAtMjUyMjBtc2VjIERpc2sNCj4gPiA+ID4gc3RhdHMNCj4gPiA+IChyZWFkL3dyaXRl KToNCj4gPiA+ID4gICBtbWNibGswOiBpb3M9NTEvMTI3NTksIG1lcmdlPTAvMCwgdGlja3M9ODAv MjQxNTQsDQo+ID4gPiA+IGluX3F1ZXVlPTI0MjM0LCB1dGlsPTk5LjkwJQ0KPiA+ID4gPg0KPiA+ ID4gPiAxNms6DQo+ID4gPiA+IENtZDogc3VkbyBmaW8gLWZpbGVuYW1lPS9kZXYvbW1jYmxrMCAt ZGlyZWN0PTEgLW51bWpvYnM9MSAtdGhyZWFkDQo+ID4gPiA+IC1ncm91cF9yZXBvcnRpbmcgLWlv ZW5naW5lPXBzeW5jIC1pb2RlcHRoPTEgLXNpemU9MTAwTQ0KPiA+ID4gPiAtbmFtZT1teXRlc3Qg LWJzPTE2ayAtcnc9cmFuZHdyaXRlDQo+ID4gPiA+IG15dGVzdDogKGc9MCk6IHJ3PXJhbmR3cml0 ZSwgYnM9KFIpIDE2LjBLaUItMTYuMEtpQiwgKFcpDQo+ID4gPiA+IDE2LjBLaUItMTYuMEtpQiwg KFQpIDE2LjBLaUItMTYuMEtpQiwgaW9lbmdpbmU9cHN5bmMsIGlvZGVwdGg9MQ0KPiA+ID4gPiBy ZXN1bHQ6DQo+ID4gPiA+IFJ1biBzdGF0dXMgZ3JvdXAgMCAoYWxsIGpvYnMpOg0KPiA+ID4gPiAg IFdSSVRFOiBidz03MjAxS2lCL3MgKDczNzNrQi9zKSwgNzIwMUtpQi9zLTcyMDFLaUIvcw0KPiA+ ID4gPiAoNzM3M2tCL3MtNzM3M2tCL3MpLCBpbz0xMDBNaUIgKDEwNU1CKSwgcnVuPTE0MjIxLTE0 MjIxbXNlYyBEaXNrDQo+ID4gPiA+IHN0YXRzDQo+ID4gPiAocmVhZC93cml0ZSk6DQo+ID4gPiA+ ICAgbW1jYmxrMDogaW9zPTUxLzYzNjcsIG1lcmdlPTAvMCwgdGlja3M9ODIvMTM2NDcsIGluX3F1 ZXVlPTEzNzI4LA0KPiA+ID4gPiB1dGlsPTk5LjgxJQ0KPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4g PiBBZnRlcihyYW5kcmVhZCkNCj4gPiA+ID4gOGs6DQo+ID4gPiA+IENtZDogc3VkbyBmaW8gLWZp bGVuYW1lPS9kZXYvbW1jYmxrMCAtZGlyZWN0PTEgLW51bWpvYnM9MSAtdGhyZWFkDQo+ID4gPiA+ IC1ncm91cF9yZXBvcnRpbmcgLWlvZW5naW5lPXBzeW5jIC1pb2RlcHRoPTEgLXNpemU9MUcgLW5h bWU9bXl0ZXN0DQo+ID4gPiA+IC1icz04ayAtcnc9cmFuZHJlYWQNCj4gPiA+ID4gbXl0ZXN0OiAo Zz0wKTogcnc9cmFuZHJlYWQsIGJzPShSKSA4MTkyQi04MTkyQiwgKFcpIDgxOTJCLTgxOTJCLA0K PiA+ID4gPiAoVCkgODE5MkItODE5MkIsIGlvZW5naW5lPXBzeW5jLCBpb2RlcHRoPTENCj4gPiA+ ID4gcmVzdWx0Og0KPiA+ID4gPiBSdW4gc3RhdHVzIGdyb3VwIDAgKGFsbCBqb2JzKToNCj4gPiA+ ID4gICAgUkVBRDogYnc9MTIuNE1pQi9zICgxMy4wTUIvcyksIDEyLjRNaUIvcy0xMi40TWlCL3MN Cj4gPiA+ID4gKDEzLjBNQi9zLTEzLjBNQi9zKSwgaW89MTAyNE1pQiAoMTA3NE1CKSwgcnVuPTgy Mzk3LTgyMzk3bXNlYw0KPiBEaXNrDQo+ID4gPiBzdGF0cyAocmVhZC93cml0ZSk6DQo+ID4gPiA+ ICAgbW1jYmxrMDogaW9zPTEzMDY0MC8wLCBtZXJnZT0wLzAsIHRpY2tzPTc0MTI1LzAsIGluX3F1 ZXVlPTc0MTI1LA0KPiA+ID4gPiB1dGlsPTk5Ljk0JQ0KPiA+ID4gPg0KPiA+ID4gPiAxNms6DQo+ ID4gPiA+IENtZDogc3VkbyBmaW8gLWZpbGVuYW1lPS9kZXYvbW1jYmxrMCAtZGlyZWN0PTEgLW51 bWpvYnM9MSAtdGhyZWFkDQo+ID4gPiA+IC1ncm91cF9yZXBvcnRpbmcgLWlvZW5naW5lPXBzeW5j IC1pb2RlcHRoPTEgLXNpemU9MUcgLW5hbWU9bXl0ZXN0DQo+ID4gPiA+IC1icz0xNmsgLXJ3PXJh bmRyZWFkDQo+ID4gPiA+IG15dGVzdDogKGc9MCk6IHJ3PXJhbmRyZWFkLCBicz0oUikgMTYuMEtp Qi0xNi4wS2lCLCAoVykNCj4gPiA+ID4gMTYuMEtpQi0xNi4wS2lCLCAoVCkgMTYuMEtpQi0xNi4w S2lCLCBpb2VuZ2luZT1wc3luYywgaW9kZXB0aD0xDQo+ID4gPiA+IHJlc3VsdDoNCj4gPiA+ID4g UnVuIHN0YXR1cyBncm91cCAwIChhbGwgam9icyk6DQo+ID4gPiA+ICAgIFJFQUQ6IGJ3PTIwLjBN aUIvcyAoMjEuME1CL3MpLCAyMC4wTWlCL3MtMjAuME1pQi9zDQo+ID4gPiA+ICgyMS4wTUIvcy0y MS4wTUIvcyksIGlvPTEwMjRNaUIgKDEwNzRNQiksIHJ1bj01MTA3Ni01MTA3Nm1zZWMNCj4gRGlz aw0KPiA+ID4gc3RhdHMgKHJlYWQvd3JpdGUpOg0KPiA+ID4gPiAgIG1tY2JsazA6IGlvcz02NTI4 Mi8wLCBtZXJnZT0wLzAsIHRpY2tzPTQ2MjU1LzAsIGluX3F1ZXVlPTQ2MjU0LA0KPiA+ID4gPiB1 dGlsPTk5Ljg3JQ0KPiA+ID4gPg0KPiA+ID4gPiBBZnRlcihyYW5kd3JpdGUpDQo+ID4gPiA+IDhr Og0KPiA+ID4gPiBDbWQ6IHN1ZG8gZmlvIC1maWxlbmFtZT0vZGV2L21tY2JsazAgLWRpcmVjdD0x IC1udW1qb2JzPTEgLXRocmVhZA0KPiA+ID4gPiAtZ3JvdXBfcmVwb3J0aW5nIC1pb2VuZ2luZT1w c3luYyAtaW9kZXB0aD0xIC1zaXplPTEwME0NCj4gPiA+ID4gLW5hbWU9bXl0ZXN0IC1icz04ayAt cnc9cmFuZHdyaXRlDQo+ID4gPiA+IG15dGVzdDogKGc9MCk6IHJ3PXJhbmR3cml0ZSwgYnM9KFIp IDgxOTJCLTgxOTJCLCAoVykgODE5MkItODE5MkIsDQo+ID4gPiA+IChUKSA4MTkyQi04MTkyQiwg aW9lbmdpbmU9cHN5bmMsIGlvZGVwdGg9MQ0KPiA+ID4gPiByZXN1bHQ6DQo+ID4gPiA+IFJ1biBz dGF0dXMgZ3JvdXAgMCAoYWxsIGpvYnMpOg0KPiA+ID4gPiAgIFdSSVRFOiBidz00MjE1S2lCL3Mg KDQzMTdrQi9zKSwgNDIxNUtpQi9zLTQyMTVLaUIvcw0KPiA+ID4gPiAoNDMxN2tCL3MtNDMxN2tC L3MpLCBpbz0xMDBNaUIgKDEwNU1CKSwgcnVuPTI0MjkyLTI0MjkybXNlYyBEaXNrDQo+ID4gPiA+ IHN0YXRzDQo+ID4gPiAocmVhZC93cml0ZSk6DQo+ID4gPiA+ICAgbW1jYmxrMDogaW9zPTUyLzEy NzE3LCBtZXJnZT0wLzAsIHRpY2tzPTg2LzIzMTgyLA0KPiA+ID4gPiBpbl9xdWV1ZT0yMzI2Nywg dXRpbD05OS45MiUNCj4gPiA+ID4NCj4gPiA+ID4gMTZrOg0KPiA+ID4gPiBDbWQ6IHN1ZG8gZmlv IC1maWxlbmFtZT0vZGV2L21tY2JsazAgLWRpcmVjdD0xIC1udW1qb2JzPTEgLXRocmVhZA0KPiA+ ID4gPiAtZ3JvdXBfcmVwb3J0aW5nIC1pb2VuZ2luZT1wc3luYyAtaW9kZXB0aD0xIC1zaXplPTEw ME0NCj4gPiA+ID4gLW5hbWU9bXl0ZXN0IC1icz0xNmsgLXJ3PXJhbmR3cml0ZQ0KPiA+ID4gPiBt eXRlc3Q6IChnPTApOiBydz1yYW5kd3JpdGUsIGJzPShSKSAxNi4wS2lCLTE2LjBLaUIsIChXKQ0K PiA+ID4gPiAxNi4wS2lCLTE2LjBLaUIsIChUKSAxNi4wS2lCLTE2LjBLaUIsIGlvZW5naW5lPXBz eW5jLCBpb2RlcHRoPTENCj4gPiA+ID4gcmVzdWx0Og0KPiA+ID4gPiBSdW4gc3RhdHVzIGdyb3Vw IDAgKGFsbCBqb2JzKToNCj4gPiA+ID4gICBXUklURTogYnc9NjQ5OUtpQi9zICg2NjU1a0Ivcyks IDY0OTlLaUIvcy02NDk5S2lCL3MNCj4gPiA+ID4gKDY2NTVrQi9zLTY2NTVrQi9zKSwgaW89MTAw TWlCICgxMDVNQiksIHJ1bj0xNTc1Ni0xNTc1Nm1zZWMgRGlzaw0KPiA+ID4gPiBzdGF0cw0KPiA+ ID4gKHJlYWQvd3JpdGUpOg0KPiA+ID4gPiAgIG1tY2JsazA6IGlvcz01MS82MzQ3LCBtZXJnZT0w LzAsIHRpY2tzPTg0LzE1MTIwLCBpbl9xdWV1ZT0xNTIwNCwNCj4gPiA+ID4gdXRpbD05OS44MCUN Cj4gPiA+DQo+ID4gPiBJdCBsb29rcyBsaWtlIHRoZSByYW5kLXJlYWQgdGVzdHMgYWJvdmUgYXJl IGRlZ3JhZGluZyB3aXRoIHRoZSBuZXcNCj4gPiA+IGNoYW5nZXMsIHdoaWxlIHJhbmQtd3JpdGVz IGFyZSBib3RoIGltcHJvdmluZyBhbmQgZGVncmFkaW5nLg0KPiA+ID4NCj4gPiA+IFRvIHN1bW1h cml6ZSBteSB2aWV3IGZyb20gYWxsIHRoZSB0ZXN0cyB5b3UgaGF2ZSBkb25lIGF0IHRoaXMgcG9p bnQNCj4gPiA+ICh0aGFua3MgYSBsb3QpOyBpdCBsb29rcyBsaWtlIHRoZSBibG9jayBJL08gbWVy Z2luZyBpc24ndCByZWFsbHkNCj4gPiA+IGhhcHBlbmluZyBhdCBjb21tb24gYmxvY2tsYXllciwg YXQgbGVhc3QgdG8gdGhhdCBleHRlbnQgdGhhdCB3b3VsZA0KPiA+ID4gYmVuZWZpdCB1cy4gQ2xl YXJseSB5b3UgaGF2ZSBzaG93biB0aGF0IGJ5IHRoZSBzdWdnZXN0ZWQgY2hhbmdlIGluDQo+ID4g PiB0aGUgbW1jIGhvc3QgZHJpdmVyLCBieSBkZXRlY3Rpbmcgd2hldGhlciB0aGUgIm5leHQiIHJl cXVlc3QgaXMNCj4gPiA+IHNlcXVlbnRpYWwgdG8gdGhlIHByZXZpb3VzIG9uZSwgd2hpY2ggYWxs b3dzIHVzIHRvIHNraXAgYQ0KPiA+ID4gQ01EMTIgYW5kIG1pbmltaXplIHNvbWUgY29tbWFuZCBv dmVyaGVhZC4NCj4gPiA+DQo+ID4gPiBIb3dldmVyLCBhY2NvcmRpbmcgdG8gdGhlIGxhdGVzdCB0 ZXN0cyBhYm92ZSwgeW91IGhhdmUgYWxzbyBwcm92ZWQNCj4gPiA+IHRoYXQgdGhlIGNoYW5nZXMg aW4gdGhlIG1tYyBob3N0IGRyaXZlciBkb2Vzbid0IGNvbWUgd2l0aG91dCBhIGNvc3QuDQo+ID4g PiBJbiBwYXJ0aWN1bGFyLCBzbWFsbCByYW5kb20tcmVhZHMgd291bGQgZGVncmFkZSBpbiBwZXJm b3JtYW5jZSBmcm9tDQo+ID4gPiB0aGVzZSBjaGFuZ2VzLg0KPiA+ID4NCj4gPiA+IFRoYXQgc2Fp ZCwgaXQgbG9va3MgdG8gbWUgdGhhdCByYXRoZXIgdGhhbiB0cnlpbmcgdG8gaW1wcm92ZSB0aGlu Z3MNCj4gPiA+IGZvciBvbmUgc3BlY2lmaWMgbW1jIGhvc3QgZHJpdmVyLCBpdCB3b3VsZCBiZSBi ZXR0ZXIgdG8gbG9vayBhdCB0aGlzDQo+ID4gPiBmcm9tIHRoZSBnZW5lcmljIGJsb2NrIGxheWVy IHBvaW50IG9mIHZpZXcgLSBhbmQgaW52ZXN0aWdhdGUgd2h5DQo+ID4gPiBzZXF1ZW50aWFsIHJl YWRzL3dyaXRlcyBhcmVuJ3QgZ2V0dGluZyBtZXJnZWQgb2Z0ZW4gZW5vdWdoIGZvciB0aGUNCj4g PiA+IE1NQy9TRCBjYXNlLiBJZiB3ZSBjYW4gZml4IHRoZSBwcm9ibGVtIHRoZXJlLCBhbGwgbW1j IGhvc3QgZHJpdmVycyB3b3VsZA0KPiBiZW5lZml0IEkgYXNzdW1lLg0KPiA+ID4NCj4gPg0KPiA+ IFNvIHlvdSBhcmUgdGhpbmtpbmcgYWJvdXQgaG93IHRvIHBhdGNoIHRoaXMgaW4gTU1DL1NEPw0K PiA+IEkgZG9uJ3Qga25vdyBpZiB0aGlzIG1ldGhvZCBpcyBjb21wYXRpYmxlIHdpdGggb3RoZXIg TU1DIEhvc3RzPyBPcg0KPiA+IHRoZXkgbmVlZCB0byBwYXRjaCBvdGhlciBjb2RlIG9uIHRoZWly IGhvc3QgZHJpdmVyDQo+IA0KPiBJIHdvdWxkIG5vdCBsaW1pdCB0aGlzIHRvIHRoZSBjb3JlIGxh eWVyIG9mIE1NQy9TRC4gVGhlIHBvaW50IEkgd2FzIHRyeWluZyB0bw0KPiBtYWtlIHdhcyB0aGF0 IGl0IGRvZXNuJ3QgbG9vayBsaWtlIHRoZSBnZW5lcmljIGJsb2NrIGxheWVyIGlzIG1lcmdpbmcg dGhlDQo+IHNlcXVlbnRpYWwgSS9PIHJlcXVlc3RzIGluIHRoZSBtb3N0IGVmZmljaWVudCB3YXks IGF0IGxlYXN0IGZvciB0aGUgZU1NQy9TRA0KPiBkZXZpY2VzLiBXaHkgdGhpcyBpcyB0aGUgY2Fz ZSwgSSBjYW4ndCB0ZWxsLiBJdCBsb29rcyBsaWtlIHdlIG5lZWQgdG8gZG8gc29tZSBtb3JlDQo+ IGluLWRlcHRoIGFuYWx5c2lzIHRvIHVuZGVyc3RhbmQgd2h5IG1lcmdpbmcgaXNuJ3QgZWZmaWNp ZW50IGZvciB1cy4NCj4gDQo+ID4NCj4gPiA+IEJUVywgaGF2ZSB5b3UgdHJpZWQgd2l0aCBkaWZm ZXJlbnQgSS9PIHNjaGVkdWxlcnM/IElmIHlvdSBoYXZlbid0DQo+ID4gPiB0cmllZCBCRlEsIEkg c3VnZ2VzdCB5b3UgZG8gYXMgaXQncyBhIGdvb2QgZml0IGZvciBNTUMvU0QuDQo+ID4gPg0KPiA+ DQo+ID4gSSBkb27igJl0IGtub3cgd2hhdCBpcyBkaWZmZXJlbnQgSS9PIHNjaGVkdWxlcnMgbWVh bnM/DQo+IA0KPiBXaGF0IEkvTyBzY2hlZHVsZXIgZGlkIHlvdSB1c2Ugd2hlbiBydW5uaW5nIHRo ZSB0ZXN0Pw0KPiANCj4gRm9yIE1NQy9TRCB0aGUgb25seSBvbmUgdGhhdCBtYWtlcyBzZW5zZSB0 byB1c2UgaXMgQkZRLCBob3dldmVyIHRoYXQgbmVlZHMNCj4gdG8gYmUgY29uZmlndXJlZCB2aWEg c3lzZnMgYWZ0ZXIgYm9vdC4gVGhlcmUgaXMgbm8gd2F5LCBjdXJyZW50bHksIHRvIG1ha2UgaXQg dGhlDQo+IGRlZmF1bHQsIEkgdGhpbmsuIFlvdSBtYXkgbG9vayBhdCBEb2N1bWVudGF0aW9uL2Js b2NrL2JmcS1pb3NjaGVkLnJzdCwgaWYgeW91DQo+IGFyZSBtb3JlIGludGVyZXN0ZWQuDQo+IA0K PiBLaW5kIHJlZ2FyZHMNCj4gVWZmZQ0KPiAtLS0tLS1QbGVhc2UgY29uc2lkZXIgdGhlIGVudmly b25tZW50IGJlZm9yZSBwcmludGluZyB0aGlzIGUtbWFpbC4NCg0K