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=-6.7 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 97B32C433FF for ; Wed, 31 Jul 2019 06:31:20 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 686AF206A3 for ; Wed, 31 Jul 2019 06:31:20 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="MZczHY4/"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="FvsmJSY7" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 686AF206A3 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-riscv-bounces+infradead-linux-riscv=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:To:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=n33Ier8GpZ6x+ym21iueTzso2wY2pBNaLDzb+g5IdC4=; b=MZczHY4/r3RywS oJUxubCxSdtdzVM0CLORILNohXZMGOBG2e8/c+zU+BX6E2oTe9EjAG1CTaodiijO7ReggPRl6kIGF kxa7FISM9kgIzTgdQWHlMR7yQWHf4e6j6pfVjoVxN7EHu6Syy0RAgKz59Yx1zVCUZIZpM/Equ/tyU Wl3U55Ztl3FRuwozsQbpVyet2RlkYv2ouTsmt5l3xUh+GD9u5Udtr2rCtzwANWacoKjcOpNpx/G3I rF/45Wy/bTZqMKVqfn4RRVEq6yhrbjYgPP7WqNmH5OPDpq7Xhqz/jMWTYayb2A8XQ+1pgYLn38Rl2 1AWwUPFWfXwqiXJ1bXsA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92 #3 (Red Hat Linux)) id 1hsi8h-0005sJ-8y; Wed, 31 Jul 2019 06:31:07 +0000 Received: from mail-qt1-x842.google.com ([2607:f8b0:4864:20::842]) by bombadil.infradead.org with esmtps (Exim 4.92 #3 (Red Hat Linux)) id 1hsi8Z-0005re-DX for linux-riscv@lists.infradead.org; Wed, 31 Jul 2019 06:31:04 +0000 Received: by mail-qt1-x842.google.com with SMTP id r6so61234670qtt.0 for ; Tue, 30 Jul 2019 23:30:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=g8nItbMM/u3EZmck6TSNg6UVm0fJwxDLYDMDa7Zz324=; b=FvsmJSY7dAxlvRpffF12qeOoNVbiPRYAtPSJI8O61y8XN0fX3BpGPf3KCwJCQQjOTa /A6M1qqQKlqsdVUApUKgVgBKFawv5IvWbFQBMoX3bmmLAG3SDIVjgGiyHBNsR/vwjnNC wNyTLEXeB715LxE9/cxqtl0/0hA1KUUTpMFeOZuxF2h2FcwXVQFb2bKtikYmwhj9YWMq CToXCOxel+3tMooDBoxkilLn2A9HXfJ+yX54yKE3GJX07HgxxfroWKsRQ2dhvmLc0Kbe R8avhGBHXwlyQ2R8j40tOnTvMGbFVQ3qKRhEKov62p0SOYjSSifJLocTgsEx1vLHxgjw Z0xA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=g8nItbMM/u3EZmck6TSNg6UVm0fJwxDLYDMDa7Zz324=; b=YurDPIjlsWPgFc4v0/tteDaGMlmPhzMXyyYqUFLlb3SIu25NkMGmgi102o+6LKxXPD 2+PI/WpwFob899dM2D78ZMT64SFNsj6WDH6QEfsVN6n72P3OdPNIIp0+MuyOR7LTEl+J I5z5M//L5pgG6/ACLljiwAB4faj+ZusTV6YjaLMhOnJgI0J+83SoH5JP2Sj85JYwBpTP 3yg6/PpiajtlzBI0LkCOBnb7UAdje33kNsko26nn/4l1ml4+7R0Z4osQg6VbJSIFrVLL axminMa64PFnlCpL6Zczrqr7I+qTsmlFUGBX1QlplHg3cEj39a0GH5bsgkV76XzUXa28 2wYQ== X-Gm-Message-State: APjAAAVRl8VEZo9oHFHDBc4/uXFHnFA3ejh4PivYYG2Cp4QZTk644fN3 fI91uAPnW1iruj9GCwJDOIZsC8B/x2uw/wevoYs= X-Google-Smtp-Source: APXvYqzhKs1RXGLfufF8Chihr4VcG9vF870gLMrR+3UH/rdIoTDvdAyHdH4erUbGIhEiU6XLGYCV7AsFm3VOV9MAwHU= X-Received: by 2002:ac8:32a1:: with SMTP id z30mr85187344qta.117.1564554657287; Tue, 30 Jul 2019 23:30:57 -0700 (PDT) MIME-Version: 1.0 References: <20190109203911.7887-1-logang@deltatee.com> <20190109203911.7887-3-logang@deltatee.com> In-Reply-To: <20190109203911.7887-3-logang@deltatee.com> From: Greentime Hu Date: Wed, 31 Jul 2019 14:30:22 +0800 Message-ID: Subject: Re: [PATCH v4 2/2] RISC-V: Implement sparsemem To: Logan Gunthorpe , greentime.hu@sifive.com, paul.walmsley@sifive.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190730_233100_147779_DE3F58FE X-CRM114-Status: GOOD ( 24.99 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Rob Herring , Albert Ou , Andrew Waterman , Palmer Dabbelt , Linux Kernel Mailing List , Stephen Bates , Zong Li , Olof Johansson , linux-riscv@lists.infradead.org, Michael Clark , Christoph Hellwig Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+infradead-linux-riscv=archiver.kernel.org@lists.infradead.org SGkgTG9nYW4sCgpMb2dhbiBHdW50aG9ycGUgPGxvZ2FuZ0BkZWx0YXRlZS5jb20+IOaWvCAyMDE5 5bm0MeaciDEw5pelIOmAseWbmyDkuIrljYg1OjA35a+r6YGT77yaCj4KPiBUaGlzIHBhdGNoIGlt cGxlbWVudHMgc3BhcnNlbWVtIHN1cHBvcnQgZm9yIHJpc2MtdiB3aGljaCBoZWxwcyBwYXZlIHRo ZQo+IHdheSBmb3IgbWVtb3J5IGhvdHBsdWcgYW5kIGV2ZW50dWFsbHkgUDJQIHN1cHBvcnQuCj4K PiBXZSBpbnRyb2R1Y2UgS2NvbmZpZyBvcHRpb25zIGZvciB2aXJ0dWFsIGFuZCBwaHlzaWNhbCBh ZGRyZXNzIGJpdHMgd2hpY2gKPiBhcmUgdXNlZCB0byBjYWxjdWxhdGUgdGhlIHNpemUgb2YgdGhl IHZtZW1tYXAgYW5kIHNldCB0aGUKPiBNQVhfUEhZU01FTV9CSVRTLgo+Cj4gVGhlIHZtZW1tYXAg aXMgbG9jYXRlZCBkaXJlY3RseSBiZWZvcmUgdGhlIFZNQUxMT0MgcmVnaW9uIGFuZCBzaXplZAo+ IHN1Y2ggdGhhdCB3ZSBjYW4gYWxsb2NhdGUgZW5vdWdoIHBhZ2VzIHRvIHBvcHVsYXRlIGFsbCB0 aGUgdmlydHVhbAo+IGFkZHJlc3Mgc3BhY2UgaW4gdGhlIHN5c3RlbSAoc2ltaWxhciB0byB0aGUg d2F5IGl0J3MgZG9uZSBpbiBhcm02NCkuCj4KPiBEdXJpbmcgaW5pdGlhbGl6YXRpb24sIGNhbGwg bWVtYmxvY2tzX3ByZXNlbnQoKSBhbmQgc3BhcnNlX2luaXQoKSwKPiBhbmQgcHJvdmlkZSBhIHN0 dWIgZm9yIHZtZW1tYXBfcG9wdWxhdGUoKSAoYWxsIG9mIHdoaWNoIGlzIHNpbWlsYXIgdG8KPiBh cm02NCkuCj4KPiBTaWduZWQtb2ZmLWJ5OiBMb2dhbiBHdW50aG9ycGUgPGxvZ2FuZ0BkZWx0YXRl ZS5jb20+Cj4gUmV2aWV3ZWQtYnk6IFBhbG1lciBEYWJiZWx0IDxwYWxtZXJAc2lmaXZlLmNvbT4K PiBDYzogQWxiZXJ0IE91IDxhb3VAZWVjcy5iZXJrZWxleS5lZHU+Cj4gQ2M6IEFuZHJldyBXYXRl cm1hbiA8YW5kcmV3QHNpZml2ZS5jb20+Cj4gQ2M6IE9sb2YgSm9oYW5zc29uIDxvbG9mQGxpeG9t Lm5ldD4KPiBDYzogTWljaGFlbCBDbGFyayA8bWljaGFlbGpjbGFya0BtYWMuY29tPgo+IENjOiBS b2IgSGVycmluZyA8cm9iaEBrZXJuZWwub3JnPgo+IENjOiBab25nIExpIDx6b25nQGFuZGVzdGVj aC5jb20+Cj4gLS0tCj4gIGFyY2gvcmlzY3YvS2NvbmZpZyAgICAgICAgICAgICAgICAgfCAyMyAr KysrKysrKysrKysrKysrKysrKysrKwo+ICBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUu aCAgIHwgMjEgKysrKysrKysrKysrKysrKystLS0tCj4gIGFyY2gvcmlzY3YvaW5jbHVkZS9hc20v c3BhcnNlbWVtLmggfCAxMSArKysrKysrKysrKwo+ICBhcmNoL3Jpc2N2L2tlcm5lbC9zZXR1cC5j ICAgICAgICAgIHwgIDQgKysrLQo+ICBhcmNoL3Jpc2N2L21tL2luaXQuYyAgICAgICAgICAgICAg IHwgIDggKysrKysrKysKPiAgNSBmaWxlcyBjaGFuZ2VkLCA2MiBpbnNlcnRpb25zKCspLCA1IGRl bGV0aW9ucygtKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9z cGFyc2VtZW0uaAo+Cj4gZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvS2NvbmZpZyBiL2FyY2gvcmlz Y3YvS2NvbmZpZwo+IGluZGV4IGUwZDdkNjE3NzlhNi4uYmQ2NTkzMjdiYzZiIDEwMDY0NAo+IC0t LSBhL2FyY2gvcmlzY3YvS2NvbmZpZwo+ICsrKyBiL2FyY2gvcmlzY3YvS2NvbmZpZwo+IEBAIC01 NCwxMiArNTQsMzIgQEAgY29uZmlnIFpPTkVfRE1BMzIKPiAgICAgICAgIGJvb2wKPiAgICAgICAg IGRlZmF1bHQgeSBpZiA2NEJJVAo+Cj4gK2NvbmZpZyBWQV9CSVRTCj4gKyAgICAgICBpbnQKPiAr ICAgICAgIGRlZmF1bHQgMzIgaWYgMzJCSVQKPiArICAgICAgIGRlZmF1bHQgMzkgaWYgNjRCSVQK PiArCj4gK2NvbmZpZyBQQV9CSVRTCj4gKyAgICAgICBpbnQKPiArICAgICAgIGRlZmF1bHQgMzQg aWYgMzJCSVQKPiArICAgICAgIGRlZmF1bHQgNTYgaWYgNjRCSVQKPiArCj4gIGNvbmZpZyBQQUdF X09GRlNFVAo+ICAgICAgICAgaGV4Cj4gICAgICAgICBkZWZhdWx0IDB4QzAwMDAwMDAgaWYgMzJC SVQgJiYgTUFYUEhZU01FTV8yR0IKPiAgICAgICAgIGRlZmF1bHQgMHhmZmZmZmZmZjgwMDAwMDAw IGlmIDY0QklUICYmIE1BWFBIWVNNRU1fMkdCCj4gICAgICAgICBkZWZhdWx0IDB4ZmZmZmZmZTAw MDAwMDAwMCBpZiA2NEJJVCAmJiBNQVhQSFlTTUVNXzEyOEdCCj4KPiArY29uZmlnIEFSQ0hfRkxB VE1FTV9FTkFCTEUKPiArICAgICAgIGRlZl9ib29sIHkKPiArCj4gK2NvbmZpZyBBUkNIX1NQQVJT RU1FTV9FTkFCTEUKPiArICAgICAgIGRlZl9ib29sIHkKPiArICAgICAgIHNlbGVjdCBTUEFSU0VN RU1fVk1FTU1BUF9FTkFCTEUKPiArCj4gK2NvbmZpZyBBUkNIX1NFTEVDVF9NRU1PUllfTU9ERUwK PiArICAgICAgIGRlZl9ib29sIEFSQ0hfU1BBUlNFTUVNX0VOQUJMRQo+ICsKPiAgY29uZmlnIFNU QUNLVFJBQ0VfU1VQUE9SVAo+ICAgICAgICAgZGVmX2Jvb2wgeQo+Cj4gQEAgLTk0LDYgKzExNCw5 IEBAIGNvbmZpZyBQR1RBQkxFX0xFVkVMUwo+ICBjb25maWcgSEFWRV9LUFJPQkVTCj4gICAgICAg ICBkZWZfYm9vbCBuCj4KPiArY29uZmlnIEhBVkVfQVJDSF9QRk5fVkFMSUQKPiArICAgICAgIGRl Zl9ib29sIHkKPiArCj4gIG1lbnUgIlBsYXRmb3JtIHR5cGUiCj4KPiAgY2hvaWNlCj4gZGlmZiAt LWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oIGIvYXJjaC9yaXNjdi9pbmNs dWRlL2FzbS9wZ3RhYmxlLmgKPiBpbmRleCAxNjMwMTk2NmQ2NWIuLmUxMTYyMzM2ZjVlYSAxMDA2 NDQKPiAtLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUuaAo+ICsrKyBiL2FyY2gv cmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oCj4gQEAgLTg5LDYgKzg5LDIzIEBAIGV4dGVybiBw Z2RfdCBzd2FwcGVyX3BnX2RpcltdOwo+ICAjZGVmaW5lIF9fUzExMCBQQUdFX1NIQVJFRF9FWEVD Cj4gICNkZWZpbmUgX19TMTExIFBBR0VfU0hBUkVEX0VYRUMKPgo+ICsjZGVmaW5lIFZNQUxMT0Nf U0laRSAgICAgKEtFUk5fVklSVF9TSVpFID4+IDEpCj4gKyNkZWZpbmUgVk1BTExPQ19FTkQgICAg ICAoUEFHRV9PRkZTRVQgLSAxKQo+ICsjZGVmaW5lIFZNQUxMT0NfU1RBUlQgICAgKFBBR0VfT0ZG U0VUIC0gVk1BTExPQ19TSVpFKQo+ICsKPiArLyoKPiArICogUm91Z2hseSBzaXplIHRoZSB2bWVt bWFwIHNwYWNlIHRvIGJlIGxhcmdlIGVub3VnaCB0byBmaXQgZW5vdWdoCj4gKyAqIHN0cnVjdCBw YWdlcyB0byBtYXAgaGFsZiB0aGUgdmlydHVhbCBhZGRyZXNzIHNwYWNlLiBUaGVuCj4gKyAqIHBv c2l0aW9uIHZtZW1tYXAgZGlyZWN0bHkgYmVsb3cgdGhlIFZNQUxMT0MgcmVnaW9uLgo+ICsgKi8K PiArI2RlZmluZSBWTUVNTUFQX1NISUZUIFwKPiArICAgICAgIChDT05GSUdfVkFfQklUUyAtIFBB R0VfU0hJRlQgLSAxICsgU1RSVUNUX1BBR0VfTUFYX1NISUZUKQo+ICsjZGVmaW5lIFZNRU1NQVBf U0laRSAgICgxVUwgPDwgVk1FTU1BUF9TSElGVCkKPiArI2RlZmluZSBWTUVNTUFQX0VORCAgICAo Vk1BTExPQ19TVEFSVCAtIDEpCj4gKyNkZWZpbmUgVk1FTU1BUF9TVEFSVCAgKFZNQUxMT0NfU1RB UlQgLSBWTUVNTUFQX1NJWkUpCj4gKwo+ICsjZGVmaW5lIHZtZW1tYXAgICAgICAgICAgICAgICAg KChzdHJ1Y3QgcGFnZSAqKVZNRU1NQVBfU1RBUlQpCj4gKwo+ICAvKgo+ICAgKiBaRVJPX1BBR0Ug aXMgYSBnbG9iYWwgc2hhcmVkIHBhZ2UgdGhhdCBpcyBhbHdheXMgemVybywKPiAgICogdXNlZCBm b3IgemVyby1tYXBwZWQgbWVtb3J5IGFyZWFzLCBldGMuCj4gQEAgLTQxMSwxMCArNDI4LDYgQEAg c3RhdGljIGlubGluZSB2b2lkIHBndGFibGVfY2FjaGVfaW5pdCh2b2lkKQo+ICAgICAgICAgLyog Tm8gcGFnZSB0YWJsZSBjYWNoZXMgdG8gaW5pdGlhbGl6ZSAqLwo+ICB9Cj4KPiAtI2RlZmluZSBW TUFMTE9DX1NJWkUgICAgIChLRVJOX1ZJUlRfU0laRSA+PiAxKQo+IC0jZGVmaW5lIFZNQUxMT0Nf RU5EICAgICAgKFBBR0VfT0ZGU0VUIC0gMSkKPiAtI2RlZmluZSBWTUFMTE9DX1NUQVJUICAgIChQ QUdFX09GRlNFVCAtIFZNQUxMT0NfU0laRSkKPiAtCj4gIC8qCj4gICAqIFRhc2sgc2l6ZSBpcyAw eDQwMDAwMDAwMDAwIGZvciBSVjY0IG9yIDB4YjgwMDAwMCBmb3IgUlYzMi4KPiAgICogTm90ZSB0 aGF0IFBHRElSX1NJWkUgbXVzdCBldmVubHkgZGl2aWRlIFRBU0tfU0laRS4KPiBkaWZmIC0tZ2l0 IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9zcGFyc2VtZW0uaCBiL2FyY2gvcmlzY3YvaW5jbHVk ZS9hc20vc3BhcnNlbWVtLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAw MDAwMC4uYjU4YmEyZDllZDZlCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2FyY2gvcmlzY3YvaW5j bHVkZS9hc20vc3BhcnNlbWVtLmgKPiBAQCAtMCwwICsxLDExIEBACj4gKy8qIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBHUEwtMi4wICovCj4gKwo+ICsjaWZuZGVmIF9fQVNNX1NQQVJTRU1FTV9I Cj4gKyNkZWZpbmUgX19BU01fU1BBUlNFTUVNX0gKPiArCj4gKyNpZmRlZiBDT05GSUdfU1BBUlNF TUVNCj4gKyNkZWZpbmUgTUFYX1BIWVNNRU1fQklUUyAgICAgICBDT05GSUdfUEFfQklUUwo+ICsj ZGVmaW5lIFNFQ1RJT05fU0laRV9CSVRTICAgICAgMjcKPiArI2VuZGlmIC8qIENPTkZJR19TUEFS U0VNRU0gKi8KPiArCj4gKyNlbmRpZiAvKiBfX0FTTV9TUEFSU0VNRU1fSCAqLwo+IGRpZmYgLS1n aXQgYS9hcmNoL3Jpc2N2L2tlcm5lbC9zZXR1cC5jIGIvYXJjaC9yaXNjdi9rZXJuZWwvc2V0dXAu Ywo+IGluZGV4IGZjODAwNmEwNDJlYi4uOThmMzlhZGVmYjFhIDEwMDY0NAo+IC0tLSBhL2FyY2gv cmlzY3Yva2VybmVsL3NldHVwLmMKPiArKysgYi9hcmNoL3Jpc2N2L2tlcm5lbC9zZXR1cC5jCj4g QEAgLTE5Myw2ICsxOTMsOSBAQCBzdGF0aWMgdm9pZCBfX2luaXQgc2V0dXBfYm9vdG1lbSh2b2lk KQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQRk5fUEhZUyhlbmRfcGZuIC0g c3RhcnRfcGZuKSwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1lbWJsb2Nr Lm1lbW9yeSwgMCk7Cj4gICAgICAgICB9Cj4gKwo+ICsgICAgICAgbWVtYmxvY2tzX3ByZXNlbnQo KTsKPiArICAgICAgIHNwYXJzZV9pbml0KCk7Cj4gIH0KCkkganVzdCBhcHBsaWVkIHRoaXMgcGF0 Y2ggdG8gTGludXgga2VybmVsIDUuMi4KSSB1c2VkIGEgZHRzIHdpdGggMiBtZW1vcnkgbm9kZXMg d2l0aCBob2xlIGludCBpdC4KCm1lbW9yeUA4MDAwMDAwMCB7CiAgICBkZXZpY2VfdHlwZSA9ICJt ZW1vcnkiOwogICAgcmVnID0gPDB4MCAweDgwMDAwMDAwIDB4MCAweDQwMDAwMDAwPjsKfTsKbWVt b3J5QDE4MDAwMDAwMCB7CiAgICBkZXZpY2VfdHlwZSA9ICJtZW1vcnkiOwogICAgcmVnID0gPDB4 MSAweDgwMDAwMDAwIDB4MCAweDQwMDAwMDAwPjsKfTsKCkkgZm91bmQgaXQgd2lsbCBib290IGZh aWx1cmUuIERpZCBJIG1pc3MgYW55dGhpbmc/CgpbIDAuMDAwMDAwXSBTb3J0aW5nIF9fZXhfdGFi bGUuLi4KWyAwLjAwMDAwMF0gQlVHOiBCYWQgcGFnZSBzdGF0ZSBpbiBwcm9jZXNzIHN3YXBwZXIg cGZuOjE4MDAwMQpbIDAuMDAwMDAwXSBwYWdlOmZmZmZmZmNmMDU0MDAwMzggcmVmY291bnQ6MCBt YXBjb3VudDo5NDM3MTkzNwptYXBwaW5nOjAwMDAwMDAwZmZmZmZmZmYgaW5kZXg6MHg0MDAwMDAw MDAwMDAwMDAwClsgMC4wMDAwMDBdIGFub24KWyAwLjAwMDAwMF0gZmxhZ3M6IDB4MCgpClsgMC4w MDAwMDBdIHJhdzogMDAwMDAwMDAwMDAwMDAwMCAwMDAwMDAwMDAwMDAwMDAwIDAwMDAwMDAwMDAw MDAwMDAKMDAwMDAwMDBmZmZmZmZmZgpbIDAuMDAwMDAwXSByYXc6IDQwMDAwMDAwMDAwMDAwMDAg ZmZmZmZmY2YwNWEwMDA2MCAwMDAwMDAwMDA1YTAwMDYwClsgMC4wMDAwMDBdIHBhZ2UgZHVtcGVk IGJlY2F1c2U6IG5vbi1OVUxMIG1hcHBpbmcKWyAwLjAwMDAwMF0gTW9kdWxlcyBsaW5rZWQgaW46 ClsgMC4wMDAwMDBdIENQVTogMCBQSUQ6IDAgQ29tbTogc3dhcHBlciBOb3QgdGFpbnRlZCA1LjIu MC0wMDAwMS1nNzM3ZDgyMTRkOWE5ICMzClsgMC4wMDAwMDBdIENhbGwgVHJhY2U6ClsgMC4wMDAw MDBdIFs8ZmZmZmZmZTAwMDE3NzU5Yz5dIHdhbGtfc3RhY2tmcmFtZSsweDAvMHhhMApbIDAuMDAw MDAwXSBbPGZmZmZmZmUwMDAxNzc2OWM+XSBzaG93X3N0YWNrKzB4MmEvMHgzNApbIDAuMDAwMDAw XSBbPGZmZmZmZmUwMDA3MGM1M2U+XSBkdW1wX3N0YWNrKzB4NjIvMHg3YwpbIDAuMDAwMDAwXSBb PGZmZmZmZmUwMDAyMzMwYWU+XSBiYWRfcGFnZSsweGNhLzB4MTIwClsgMC4wMDAwMDBdIFs8ZmZm ZmZmZTAwMDIzMzEzYz5dIGZyZWVfcGFnZXNfY2hlY2tfYmFkKzB4MzgvMHg3YQpbIDAuMDAwMDAw XSBbPGZmZmZmZmUwMDAyMzM2OGE+XSBfX2ZyZWVfcGFnZXNfb2srMHg0OTYvMHg0YmEKWyAwLjAw MDAwMF0gWzxmZmZmZmZlMDAwMjM0YTgyPl0gX19mcmVlX3BhZ2VzLnBhcnQuNCsweGUvMHgyMgpb IDAuMDAwMDAwXSBbPGZmZmZmZmUwMDAyMzRjOWU+XSBfX2ZyZWVfcGFnZXNfY29yZSsweDlhLzB4 YTYKWyAwLjAwMDAwMF0gWzxmZmZmZmZlMDAwMDA5YjBhPl0gbWVtYmxvY2tfZnJlZV9wYWdlcysw eDEyLzB4MWEKWyAwLjAwMDAwMF0gWzxmZmZmZmZlMDAwMDBiNDk2Pl0gbWVtYmxvY2tfZnJlZV9h bGwrMHgxNDQvMHgxYTgKWyAwLjAwMDAwMF0gWzxmZmZmZmZlMDAwMDAyNzRhPl0gbWVtX2luaXQr MHgyOC8weDM2ClsgMC4wMDAwMDBdIFs8ZmZmZmZmZTAwMDAwMDhhMD5dIHN0YXJ0X2tlcm5lbCsw eDFiYy8weDM2MApbIDAuMDAwMDAwXSBbPGZmZmZmZmUwMDAwMDAwNzQ+XSBjbGVhcl9ic3NfZG9u ZSsweDM0LzB4MzgKWyAwLjAwMDAwMF0gRGlzYWJsaW5nIGxvY2sgZGVidWdnaW5nIGR1ZSB0byBr ZXJuZWwgdGFpbnQKWyAwLjAwMDAwMF0gQlVHOiBCYWQgcGFnZSBzdGF0ZSBpbiBwcm9jZXNzIHN3 YXBwZXIgcGZuOjE4MDAwMgpbIDAuMDAwMDAwXSBwYWdlOmZmZmZmZmNmMDU0MDAwNzAgcmVmY291 bnQ6MCBtYXBjb3VudDo5NDM3MTk5MwptYXBwaW5nOjAwMDAwMDAwZmZmZmZmZmYgaW5kZXg6MHg0 MDAwMDAwMDAwMDAwMDAwClsgMC4wMDAwMDBdIGFub24KWyAwLjAwMDAwMF0gZmxhZ3M6IDB4MCgp ClsgMC4wMDAwMDBdIHJhdzogMDAwMDAwMDAwMDAwMDAwMCAwMDAwMDAwMDAwMDAwMDAwIDAwMDAw MDAwMDAwMDAwMDAKMDAwMDAwMDBmZmZmZmZmZgpbIDAuMDAwMDAwXSByYXc6IDQwMDAwMDAwMDAw MDAwMDAgZmZmZmZmY2YwNWEwMDA5OCAwMDAwMDAwMDA1YTAwMDk4ClsgMC4wMDAwMDBdIHBhZ2Ug ZHVtcGVkIGJlY2F1c2U6IG5vbi1OVUxMIG1hcHBpbmcKWyAwLjAwMDAwMF0gTW9kdWxlcyBsaW5r ZWQgaW46ClsgMC4wMDAwMDBdIENQVTogMCBQSUQ6IDAgQ29tbTogc3dhcHBlciBUYWludGVkOiBH IEIKNS4yLjAtMDAwMDEtZzczN2Q4MjE0ZDlhOSAjMwpbIDAuMDAwMDAwXSBDYWxsIFRyYWNlOgpb IDAuMDAwMDAwXSBbPGZmZmZmZmUwMDAxNzc1OWM+XSB3YWxrX3N0YWNrZnJhbWUrMHgwLzB4YTAK WyAwLjAwMDAwMF0gWzxmZmZmZmZlMDAwMTc3NjljPl0gc2hvd19zdGFjaysweDJhLzB4MzQKWyAw LjAwMDAwMF0gWzxmZmZmZmZlMDAwNzBjNTNlPl0gZHVtcF9zdGFjaysweDYyLzB4N2MKWyAwLjAw MDAwMF0gWzxmZmZmZmZlMDAwMjMzMGFlPl0gYmFkX3BhZ2UrMHhjYS8weDEyMApbIDAuMDAwMDAw XSBbPGZmZmZmZmUwMDAyMzMxM2M+XSBmcmVlX3BhZ2VzX2NoZWNrX2JhZCsweDM4LzB4N2EKWyAw LjAwMDAwMF0gWzxmZmZmZmZlMDAwMjMzNjhhPl0gX19mcmVlX3BhZ2VzX29rKzB4NDk2LzB4NGJh ClsgMC4wMDAwMDBdIFs8ZmZmZmZmZTAwMDIzNGE4Mj5dIF9fZnJlZV9wYWdlcy5wYXJ0LjQrMHhl LzB4MjIKWyAwLjAwMDAwMF0gWzxmZmZmZmZlMDAwMjM0YzllPl0gX19mcmVlX3BhZ2VzX2NvcmUr MHg5YS8weGE2ClsgMC4wMDAwMDBdIFs8ZmZmZmZmZTAwMDAwOWIwYT5dIG1lbWJsb2NrX2ZyZWVf cGFnZXMrMHgxMi8weDFhClsgMC4wMDAwMDBdIFs8ZmZmZmZmZTAwMDAwYjQ5Nj5dIG1lbWJsb2Nr X2ZyZWVfYWxsKzB4MTQ0LzB4MWE4ClsgMC4wMDAwMDBdIFs8ZmZmZmZmZTAwMDAwMjc0YT5dIG1l bV9pbml0KzB4MjgvMHgzNgpbIDAuMDAwMDAwXSBbPGZmZmZmZmUwMDAwMDA4YTA+XSBzdGFydF9r ZXJuZWwrMHgxYmMvMHgzNjAKWyAwLjAwMDAwMF0gWzxmZmZmZmZlMDAwMDAwMDc0Pl0gY2xlYXJf YnNzX2RvbmUrMHgzNC8weDM4ClsgMC4wMDAwMDBdIEJVRzogQmFkIHBhZ2Ugc3RhdGUgaW4gcHJv Y2VzcyBzd2FwcGVyIHBmbjoxODAwMDMKWyAwLjAwMDAwMF0gcGFnZTpmZmZmZmZjZjA1NDAwMGE4 IHJlZmNvdW50OjAgbWFwY291bnQ6OTQzNzIwNDkKbWFwcGluZzowMDAwMDAwMGZmZmZmZmZmIGlu ZGV4OjB4NDAwMDAwMDAwMDAwMDAwMApbIDAuMDAwMDAwXSBhbm9uClsgMC4wMDAwMDBdIGZsYWdz OiAweDAoKQpbIDAuMDAwMDAwXSByYXc6IDAwMDAwMDAwMDAwMDAwMDAgMDAwMDAwMDAwMDAwMDAw MCAwMDAwMDAwMDAwMDAwMDAwCjAwMDAwMDAwZmZmZmZmZmYKWyAwLjAwMDAwMF0gcmF3OiA0MDAw MDAwMDAwMDAwMDAwIGZmZmZmZmNmMDVhMDAwZDAgMDAwMDAwMDAwNWEwMDBkMApbIDAuMDAwMDAw XSBwYWdlIGR1bXBlZCBiZWNhdXNlOiBub24tTlVMTCBtYXBwaW5nCgpJIGxvb2sgdGhpcyBpc3N1 ZSBtb3JlIGNsb3NlbHkuCkkgZm91bmQgaXQgYWx3YXlzIHNldHMgZWFjaCBtZW1ibG9jayByZWdp b24gdG8gbm9kZSAwLiBEb2VzIHRoaXMgbWFrZSBzZW5zZT8KSSBhbSBub3Qgc3VyZSBpZiBJIHVu ZGVyc3RhbmQgdGhpcyBjb3JyZWN0bHkuIERvIHlvdSBoYXZlIGFueSBpZGVhIGZvcgp0aGlzPyBU aGFuayB5b3UuIDopCgpmb3JfZWFjaF9tZW1ibG9jayhtZW1vcnksIHJlZykgewogICAgdW5zaWdu ZWQgbG9uZyBzdGFydF9wZm4gPSBtZW1ibG9ja19yZWdpb25fbWVtb3J5X2Jhc2VfcGZuKHJlZyk7 CiAgICB1bnNpZ25lZCBsb25nIGVuZF9wZm4gPSBtZW1ibG9ja19yZWdpb25fbWVtb3J5X2VuZF9w Zm4ocmVnKTsKICAgIG1lbWJsb2NrX3NldF9ub2RlKFBGTl9QSFlTKHN0YXJ0X3BmbiksIFBGTl9Q SFlTKGVuZF9wZm4gLQpzdGFydF9wZm4pLCAmbWVtYmxvY2subWVtb3J5LCAwKTsKCgogICAgICAg ICAgICAgICAgICAgICBeXl4KfQoKWyAwLjAwMDAwMF0gRWFybHkgbWVtb3J5IG5vZGUgcmFuZ2Vz ClsgMC4wMDAwMDBdIG5vZGUgMDogW21lbSAweDAwMDAwMDAwODAyMDAwMDAtMHgwMDAwMDAwMGJm ZmZmZmZmXQpbIDAuMDAwMDAwXSBub2RlIDA6IFttZW0gMHgwMDAwMDAwMTgwMDAwMDAwLTB4MDAw MDAwMDFiZmZmZmZmZl0KWyAwLjAwMDAwMF0gSW5pdG1lbSBzZXR1cCBub2RlIDAgW21lbSAweDAw MDAwMDAwODAyMDAwMDAtMHgwMDAwMDAwMWJmZmZmZmZmXQoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtcmlzY3YgbWFpbGluZyBsaXN0CmxpbnV4 LXJpc2N2QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFp bG1hbi9saXN0aW5mby9saW51eC1yaXNjdgo=