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.5 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, USER_AGENT_SANE_1 autolearn=unavailable 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 B0986C433E0 for ; Tue, 21 Jul 2020 18:36:36 +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 6E5ED20717 for ; Tue, 21 Jul 2020 18:36:36 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="SHoI3sBO" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6E5ED20717 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ghiti.fr Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-riscv-bounces+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=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:References: To:From:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=2xzWPD25ymlwi6CIsaZbp4KCshzgtF5MOAs4GPDyPRw=; b=SHoI3sBOCrhf9QZLits0vaEKE 7o1IwrIN/OdWdBUSZRndDmTKVcQB88xqPmJjYtxm366z8oI4fgr92SVHe45OxR/vBwyNsqf2QTnx8 1T4bfQTyTPC3asC0Hezt2a4fTrnYwlOR6m4ZcDGLpt4GjLZ+GXoL0bKlzlAvADYp0N52I6veWRAm7 cNmBN0YzGaLxDlt41xaybhz7g0NCZPev6R9sydQuMtHOkq8bRqbTPnIVMPmaTmNIK7LZtsDXftRFV dbdPozghmjtF6uthIdq6ccjlUob3zYSsjwjba1PfTG8YMru1ydqsct7QDBtNfB89V99n/0jP3PPCU 0mI8gzZXg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jxx7o-0001vO-Hw; Tue, 21 Jul 2020 18:36:24 +0000 Received: from relay12.mail.gandi.net ([217.70.178.232]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jxx7l-0001uI-CH for linux-riscv@lists.infradead.org; Tue, 21 Jul 2020 18:36:22 +0000 Received: from [192.168.1.14] (lfbn-gre-1-325-105.w90-112.abo.wanadoo.fr [90.112.45.105]) (Authenticated sender: alex@ghiti.fr) by relay12.mail.gandi.net (Postfix) with ESMTPSA id 94342200009; Tue, 21 Jul 2020 18:36:12 +0000 (UTC) Subject: Re: [PATCH v5 1/4] riscv: Move kernel mapping to vmalloc zone From: Alex Ghiti To: Palmer Dabbelt References: Message-ID: <7cb2285e-68ba-6827-5e61-e33a4b65ac03@ghiti.fr> Date: Tue, 21 Jul 2020 14:36:10 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: Content-Language: fr X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200721_143621_644346_AC045B71 X-CRM114-Status: GOOD ( 34.61 ) 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: aou@eecs.berkeley.edu, benh@kernel.crashing.org, linux-mm@kvack.org, mpe@ellerman.id.au, Anup Patel , linux-kernel@vger.kernel.org, Atish Patra , paulus@samba.org, zong.li@sifive.com, Paul Walmsley , linux-riscv@lists.infradead.org, linuxppc-dev@lists.ozlabs.org Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org TGV0J3MgdHJ5IHRvIG1ha2UgcHJvZ3Jlc3MgaGVyZTogSSBhZGQgbGludXgtbW0gaW4gQ0MgdG8g Z2V0IGZlZWRiYWNrIG9uIAp0aGlzIHBhdGNoIGFzIGl0IGJsb2NrcyBzdjQ4IHN1cHBvcnQgdG9v LgoKQWxleAoKTGUgNy85LzIwIMOgIDc6MTEgQU0sIEFsZXggR2hpdGkgYSDDqWNyaXTCoDoKPiBI aSBQYWxtZXIsCj4gCj4gTGUgNy85LzIwIMOgIDE6MDUgQU0sIFBhbG1lciBEYWJiZWx0IGEgw6lj cml0wqA6Cj4+IE9uIFN1biwgMDcgSnVuIDIwMjAgMDA6NTk6NDYgUERUICgtMDcwMCksIGFsZXhA Z2hpdGkuZnIgd3JvdGU6Cj4+PiBUaGlzIGlzIGEgcHJlcGFyYXRvcnkgcGF0Y2ggZm9yIHJlbG9j YXRhYmxlIGtlcm5lbC4KPj4+Cj4+PiBUaGUga2VybmVsIHVzZWQgdG8gYmUgbGlua2VkIGF0IFBB R0VfT0ZGU0VUIGFkZHJlc3MgYW5kIHVzZWQgdG8gYmUgCj4+PiBsb2FkZWQKPj4+IHBoeXNpY2Fs bHkgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbWFpbiBtZW1vcnkuIFRoZXJlZm9yZSwgd2UgY291 bGQgdXNlCj4+PiB0aGUgbGluZWFyIG1hcHBpbmcgZm9yIHRoZSBrZXJuZWwgbWFwcGluZy4KPj4+ Cj4+PiBCdXQgdGhlIHJlbG9jYXRlZCBrZXJuZWwgYmFzZSBhZGRyZXNzIHdpbGwgYmUgZGlmZmVy ZW50IGZyb20gUEFHRV9PRkZTRVQKPj4+IGFuZCBzaW5jZSBpbiB0aGUgbGluZWFyIG1hcHBpbmcs IHR3byBkaWZmZXJlbnQgdmlydHVhbCBhZGRyZXNzZXMgY2Fubm90Cj4+PiBwb2ludCB0byB0aGUg c2FtZSBwaHlzaWNhbCBhZGRyZXNzLCB0aGUga2VybmVsIG1hcHBpbmcgbmVlZHMgdG8gbGllIAo+ Pj4gb3V0c2lkZQo+Pj4gdGhlIGxpbmVhciBtYXBwaW5nLgo+Pgo+PiBJIGtub3cgaXQncyBiZWVu IGEgd2hpbGUsIGJ1dCBJIGtlZXAgb3BlbmluZyB0aGlzIHVwIHRvIHJldmlldyBpdCBhbmQgCj4+ IGp1c3QKPj4gY2FuJ3QgZ2V0IG92ZXIgaG93IHVnbHkgaXQgaXMgdG8gcHV0IHRoZSBrZXJuZWwn cyBsaW5lYXIgbWFwIGluIHRoZSAKPj4gdm1hbGxvYwo+PiByZWdpb24uCj4+Cj4+IEkgZ3Vlc3Mg SSBkb24ndCB1bmRlcnN0YW5kIHdoeSB0aGlzIGlzIG5lY2Vzc2FyeSBhdCBhbGwuICAKPj4gU3Bl Y2lmaWNhbGx5OiB3aHkKPj4gY2FuJ3Qgd2UganVzdCByZWxvY2F0ZSB0aGUga2VybmVsIHdpdGhp biB0aGUgbGluZWFyIG1hcD/CoCBUaGF0IHdvdWxkIAo+PiBsZXQgdGhlCj4+IGJvb3Rsb2FkZXIg cHV0IHRoZSBrZXJuZWwgd2hlcmV2ZXIgaXQgd2FudHMsIG1vZHVsbyB0aGUgcGh5c2ljYWwgCj4+ IG1lbW9yeSBzaXplIHdlCj4+IHN1cHBvcnQuwqAgV2UnZCBuZWVkIHRvIGhhbmRsZSB0aGUgcmVn aW9ucyB0aGF0IGFyZSBjb3VwbGVkIHRvIHRoZSAKPj4ga2VybmVsJ3MKPj4gZXhlY3V0aW9uIGFk ZHJlc3MsIGJ1dCB3ZSBjb3VsZCBqdXN0IHB1dCB0aGVtIGluIGFuIGV4cGxpY2l0IG1lbW9yeSAK Pj4gcmVnaW9uCj4+IHdoaWNoIGlzIHdoYXQgd2Ugc2hvdWxkIHByb2JhYmx5IGJlIGRvaW5nIGFu eXdheS4KPiAKPiBWaXJ0dWFsIHJlbG9jYXRpb24gaW4gdGhlIGxpbmVhciBtYXBwaW5nIHJlcXVp cmVzIHRvIG1vdmUgdGhlIGtlcm5lbCAKPiBwaHlzaWNhbGx5IHRvby4gWm9uZyBpbXBsZW1lbnRl ZCB0aGlzIHBoeXNpY2FsIG1vdmUgaW4gaXRzIEtBU0xSIFJGQyAKPiBwYXRjaHNldCwgd2hpY2gg aXMgY3VtYmVyc29tZSBzaW5jZSBmaW5kaW5nIGFuIGF2YWlsYWJsZSBwaHlzaWNhbCBzcG90IAo+ IGlzIGhhcmRlciB0aGFuIGp1c3Qgc2VsZWN0aW5nIGEgdmlydHVhbCByYW5nZSBpbiB0aGUgdm1h bGxvYyByYW5nZS4KPiAKPiBJbiBhZGRpdGlvbiwgaGF2aW5nIHRoZSBrZXJuZWwgbWFwcGluZyBp biB0aGUgbGluZWFyIG1hcHBpbmcgcHJldmVudHMgCj4gdGhlIHVzZSBvZiBodWdlcGFnZSBmb3Ig dGhlIGxpbmVhciBtYXBwaW5nIHJlc3VsdGluZyBpbiBwZXJmb3JtYW5jZSBsb3NzIAo+IChhdCBs ZWFzdCBmb3IgdGhlIEdCIHRoYXQgZW5jb21wYXNzZXMgdGhlIGtlcm5lbCkuCj4gCj4gV2h5IGRv IHlvdSBmaW5kIHRoaXMgInVnbHkiID8gVGhlIHZtYWxsb2MgcmVnaW9uIGlzIGp1c3QgYSBidW5j aCBvZiAKPiBhdmFpbGFibGUgdmlydHVhbCBhZGRyZXNzZXMgdG8gd2hhdGV2ZXIgcHVycG9zZSB3 ZSB3YW50LCBhbmQgYXMgbm90ZWQgYnkgCj4gWm9uZywgYXJtNjQgdXNlcyB0aGUgc2FtZSBzY2hl bWUuCj4gCj4+Cj4+PiBJbiBhZGRpdGlvbiwgYmVjYXVzZSBtb2R1bGVzIGFuZCBCUEYgbXVzdCBi ZSBjbG9zZSB0byB0aGUga2VybmVsIChpbnNpZGUKPj4+ICstMkdCIHdpbmRvdyksIHRoZSBrZXJu ZWwgaXMgcGxhY2VkIGF0IHRoZSBlbmQgb2YgdGhlIHZtYWxsb2Mgem9uZSBtaW51cwo+Pj4gMkdC LCB3aGljaCBsZWF2ZXMgcm9vbSBmb3IgbW9kdWxlcyBhbmQgQlBGLiBUaGUga2VybmVsIGNvdWxk IG5vdCBiZQo+Pj4gcGxhY2VkIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHZtYWxsb2Mgem9uZSBz aW5jZSBvdGhlciB2bWFsbG9jCj4+PiBhbGxvY2F0aW9ucyBmcm9tIHRoZSBrZXJuZWwgY291bGQg Z2V0IGFsbCB0aGUgKy0yR0Igd2luZG93IGFyb3VuZCB0aGUKPj4+IGtlcm5lbCB3aGljaCB3b3Vs ZCBwcmV2ZW50IG5ldyBtb2R1bGVzIGFuZCBCUEYgcHJvZ3JhbXMgdG8gYmUgbG9hZGVkLgo+Pgo+ PiBXZWxsLCB0aGF0J3Mgbm90IGVub3VnaCB0byBtYWtlIHN1cmUgdGhpcyBkb2Vzbid0IGhhcHBl biAtLSBpdCdzIGp1c3QgCj4+IGVub3VnaCB0bwo+PiBtYWtlIHN1cmUgaXQgZG9lc24ndCBoYXBw ZW4gdmVyeSBxdWlja2lseS7CoCBUaGF0J3MgdGhlIHNhbWUgYm9hdCB3ZSdyZSAKPj4gYWxyZWFk eQo+PiBpbiwgdGhvdWdoLCBzbyBpdCdzIG5vdCBsaWtlIGl0J3Mgd29yc2UuCj4gCj4gSW5kZWVk LCB0aGF0J3Mgbm90IHdvcnNlLCBJIGhhdmVuJ3QgZm91bmQgYSB3YXkgdG8gcmVzZXJ2ZSB2bWFs bG9jIGFyZWEgCj4gd2l0aG91dCBhY3R1YWxseSBhbGxvY2F0aW5nIGl0Lgo+IAo+Pgo+Pj4gU2ln bmVkLW9mZi1ieTogQWxleGFuZHJlIEdoaXRpIDxhbGV4QGdoaXRpLmZyPgo+Pj4gUmV2aWV3ZWQt Ynk6IFpvbmcgTGkgPHpvbmcubGlAc2lmaXZlLmNvbT4KPj4+IC0tLQo+Pj4gwqBhcmNoL3Jpc2N2 L2Jvb3QvbG9hZGVyLmxkcy5TwqDCoMKgwqAgfMKgIDMgKy0KPj4+IMKgYXJjaC9yaXNjdi9pbmNs dWRlL2FzbS9wYWdlLmjCoMKgwqAgfCAxMCArKysrKy0KPj4+IMKgYXJjaC9yaXNjdi9pbmNsdWRl L2FzbS9wZ3RhYmxlLmggfCAzOCArKysrKysrKysrKysrKy0tLS0tLS0KPj4+IMKgYXJjaC9yaXNj di9rZXJuZWwvaGVhZC5TwqDCoMKgwqDCoMKgwqDCoCB8wqAgMyArLQo+Pj4gwqBhcmNoL3Jpc2N2 L2tlcm5lbC9tb2R1bGUuY8KgwqDCoMKgwqDCoCB8wqAgNCArLS0KPj4+IMKgYXJjaC9yaXNjdi9r ZXJuZWwvdm1saW51eC5sZHMuU8KgIHzCoCAzICstCj4+PiDCoGFyY2gvcmlzY3YvbW0vaW5pdC5j wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNTggKysrKysrKysrKysrKysrKysrKysrKysrKy0t LS0tLS0KPj4+IMKgYXJjaC9yaXNjdi9tbS9waHlzYWRkci5jwqDCoMKgwqDCoMKgwqDCoCB8wqAg MiArLQo+Pj4gwqA4IGZpbGVzIGNoYW5nZWQsIDg4IGluc2VydGlvbnMoKyksIDMzIGRlbGV0aW9u cygtKQo+Pj4KPj4+IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2Jvb3QvbG9hZGVyLmxkcy5TIGIv YXJjaC9yaXNjdi9ib290L2xvYWRlci5sZHMuUwo+Pj4gaW5kZXggNDdhNTAwM2MyZTI4Li42MmQ5 NDY5NmExOWMgMTAwNjQ0Cj4+PiAtLS0gYS9hcmNoL3Jpc2N2L2Jvb3QvbG9hZGVyLmxkcy5TCj4+ PiArKysgYi9hcmNoL3Jpc2N2L2Jvb3QvbG9hZGVyLmxkcy5TCj4+PiBAQCAtMSwxMyArMSwxNCBA QAo+Pj4gwqAvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLwo+Pj4KPj4+IMKg I2luY2x1ZGUgPGFzbS9wYWdlLmg+Cj4+PiArI2luY2x1ZGUgPGFzbS9wZ3RhYmxlLmg+Cj4+Pgo+ Pj4gwqBPVVRQVVRfQVJDSChyaXNjdikKPj4+IMKgRU5UUlkoX3N0YXJ0KQo+Pj4KPj4+IMKgU0VD VElPTlMKPj4+IMKgewo+Pj4gLcKgwqDCoCAuID0gUEFHRV9PRkZTRVQ7Cj4+PiArwqDCoMKgIC4g PSBLRVJORUxfTElOS19BRERSOwo+Pj4KPj4+IMKgwqDCoMKgIC5wYXlsb2FkIDogewo+Pj4gwqDC oMKgwqDCoMKgwqDCoCAqKC5wYXlsb2FkKQo+Pj4gZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5j bHVkZS9hc20vcGFnZS5oIAo+Pj4gYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BhZ2UuaAo+Pj4g aW5kZXggMmQ1MGY3NmVmZTQ4Li40OGJiMDliNmE5YjcgMTAwNjQ0Cj4+PiAtLS0gYS9hcmNoL3Jp c2N2L2luY2x1ZGUvYXNtL3BhZ2UuaAo+Pj4gKysrIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9w YWdlLmgKPj4+IEBAIC05MCwxOCArOTAsMjYgQEAgdHlwZWRlZiBzdHJ1Y3QgcGFnZSAqcGd0YWJs ZV90Owo+Pj4KPj4+IMKgI2lmZGVmIENPTkZJR19NTVUKPj4+IMKgZXh0ZXJuIHVuc2lnbmVkIGxv bmcgdmFfcGFfb2Zmc2V0Owo+Pj4gK2V4dGVybiB1bnNpZ25lZCBsb25nIHZhX2tlcm5lbF9wYV9v ZmZzZXQ7Cj4+PiDCoGV4dGVybiB1bnNpZ25lZCBsb25nIHBmbl9iYXNlOwo+Pj4gwqAjZGVmaW5l IEFSQ0hfUEZOX09GRlNFVMKgwqDCoMKgwqDCoMKgIChwZm5fYmFzZSkKPj4+IMKgI2Vsc2UKPj4+ IMKgI2RlZmluZSB2YV9wYV9vZmZzZXTCoMKgwqDCoMKgwqDCoCAwCj4+PiArI2RlZmluZSB2YV9r ZXJuZWxfcGFfb2Zmc2V0wqDCoMKgIDAKPj4+IMKgI2RlZmluZSBBUkNIX1BGTl9PRkZTRVTCoMKg wqDCoMKgwqDCoCAoUEFHRV9PRkZTRVQgPj4gUEFHRV9TSElGVCkKPj4+IMKgI2VuZGlmIC8qIENP TkZJR19NTVUgKi8KPj4+Cj4+PiDCoGV4dGVybiB1bnNpZ25lZCBsb25nIG1heF9sb3dfcGZuOwo+ Pj4gwqBleHRlcm4gdW5zaWduZWQgbG9uZyBtaW5fbG93X3BmbjsKPj4+ICtleHRlcm4gdW5zaWdu ZWQgbG9uZyBrZXJuZWxfdmlydF9hZGRyOwo+Pj4KPj4+IMKgI2RlZmluZSBfX3BhX3RvX3ZhX25v ZGVidWcoeCnCoMKgwqAgKCh2b2lkICopKCh1bnNpZ25lZCBsb25nKSAoeCkgKyAKPj4+IHZhX3Bh X29mZnNldCkpCj4+PiAtI2RlZmluZSBfX3ZhX3RvX3BhX25vZGVidWcoeCnCoMKgwqAgKCh1bnNp Z25lZCBsb25nKSh4KSAtIHZhX3BhX29mZnNldCkKPj4+ICsjZGVmaW5lIGxpbmVhcl9tYXBwaW5n X3ZhX3RvX3BhKHgpwqDCoMKgICgodW5zaWduZWQgbG9uZykoeCkgLSAKPj4+IHZhX3BhX29mZnNl dCkKPj4+ICsjZGVmaW5lIGtlcm5lbF9tYXBwaW5nX3ZhX3RvX3BhKHgpwqDCoMKgIFwKPj4+ICvC oMKgwqAgKCh1bnNpZ25lZCBsb25nKSh4KSAtIHZhX2tlcm5lbF9wYV9vZmZzZXQpCj4+PiArI2Rl ZmluZSBfX3ZhX3RvX3BhX25vZGVidWcoeCnCoMKgwqDCoMKgwqDCoCBcCj4+PiArwqDCoMKgICgo KHgpID49IFBBR0VfT0ZGU0VUKSA/wqDCoMKgwqDCoMKgwqAgXAo+Pj4gK8KgwqDCoMKgwqDCoMKg IGxpbmVhcl9tYXBwaW5nX3ZhX3RvX3BhKHgpIDoga2VybmVsX21hcHBpbmdfdmFfdG9fcGEoeCkp Cj4+Pgo+Pj4gwqAjaWZkZWYgQ09ORklHX0RFQlVHX1ZJUlRVQUwKPj4+IMKgZXh0ZXJuIHBoeXNf YWRkcl90IF9fdmlydF90b19waHlzKHVuc2lnbmVkIGxvbmcgeCk7Cj4+PiBkaWZmIC0tZ2l0IGEv YXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZ3RhYmxlLmggCj4+PiBiL2FyY2gvcmlzY3YvaW5jbHVk ZS9hc20vcGd0YWJsZS5oCj4+PiBpbmRleCAzNWI2MDAzNWI2YjAuLjk0ZWYzYjQ5ZGZiNiAxMDA2 NDQKPj4+IC0tLSBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oCj4+PiArKysgYi9h cmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUuaAo+Pj4gQEAgLTExLDIzICsxMSwyOSBAQAo+ Pj4KPj4+IMKgI2luY2x1ZGUgPGFzbS9wZ3RhYmxlLWJpdHMuaD4KPj4+Cj4+PiAtI2lmbmRlZiBf X0FTU0VNQkxZX18KPj4+IC0KPj4+IC0vKiBQYWdlIFVwcGVyIERpcmVjdG9yeSBub3QgdXNlZCBp biBSSVNDLVYgKi8KPj4+IC0jaW5jbHVkZSA8YXNtLWdlbmVyaWMvcGd0YWJsZS1ub3B1ZC5oPgo+ Pj4gLSNpbmNsdWRlIDxhc20vcGFnZS5oPgo+Pj4gLSNpbmNsdWRlIDxhc20vdGxiZmx1c2guaD4K Pj4+IC0jaW5jbHVkZSA8bGludXgvbW1fdHlwZXMuaD4KPj4+IC0KPj4+IC0jaWZkZWYgQ09ORklH X01NVQo+Pj4gKyNpZm5kZWYgQ09ORklHX01NVQo+Pj4gKyNkZWZpbmUgS0VSTkVMX1ZJUlRfQURE UsKgwqDCoCBQQUdFX09GRlNFVAo+Pj4gKyNkZWZpbmUgS0VSTkVMX0xJTktfQUREUsKgwqDCoCBQ QUdFX09GRlNFVAo+Pj4gKyNlbHNlCj4+PiArLyoKPj4+ICsgKiBMZWF2ZSAyR0IgZm9yIG1vZHVs ZXMgYW5kIEJQRiB0aGF0IG11c3QgbGllIHdpdGhpbiBhIDJHQiByYW5nZSAKPj4+IGFyb3VuZAo+ Pj4gKyAqIHRoZSBrZXJuZWwuCj4+PiArICovCj4+PiArI2RlZmluZSBLRVJORUxfVklSVF9BRERS wqDCoMKgIChWTUFMTE9DX0VORCAtIFNaXzJHICsgMSkKPj4+ICsjZGVmaW5lIEtFUk5FTF9MSU5L X0FERFLCoMKgwqAgS0VSTkVMX1ZJUlRfQUREUgo+Pgo+PiBBdCBhIGJhcmUgbWluaW11bSB0aGlz IGlzIGdvaW5nIHRvIG1ha2UgYSBtZXNzIG9mIHRoZSAzMi1iaXQgcG9ydCwgYXMKPj4gbm9uLXJl bG9jYXRhYmxlIGtlcm5lbHMgYXJlIG5vdyBnb2luZyB0byBnZXQgbGlua2VkIGF0IDFHaUIgd2hp Y2ggaXMgCj4+IHdoZXJlIHVzZXIKPj4gY29kZSBpcyBzdXBwb3NlZCB0byBsaXZlLsKgIFRoYXQn cyBhbiBlYXN5IGZpeCwgdGhvdWdoLCBhcyB0aGUgMzItYml0IAo+PiBzdHVmZgo+PiBkb2Vzbid0 IG5lZWQgYW55IG1vZHVsZSBhZGRyZXNzIHJlc3RyaWN0aW9ucy4KPiAKPiBJbmRlZWQsIEkgd2ls bCB0YWtlIGEgbG9vayBhdCB0aGF0Lgo+IAo+Pgo+Pj4gwqAjZGVmaW5lIFZNQUxMT0NfU0laRcKg wqDCoMKgIChLRVJOX1ZJUlRfU0laRSA+PiAxKQo+Pj4gwqAjZGVmaW5lIFZNQUxMT0NfRU5EwqDC oMKgwqDCoCAoUEFHRV9PRkZTRVQgLSAxKQo+Pj4gwqAjZGVmaW5lIFZNQUxMT0NfU1RBUlTCoMKg wqAgKFBBR0VfT0ZGU0VUIC0gVk1BTExPQ19TSVpFKQo+Pj4KPj4+IMKgI2RlZmluZSBCUEZfSklU X1JFR0lPTl9TSVpFwqDCoMKgIChTWl8xMjhNKQo+Pj4gLSNkZWZpbmUgQlBGX0pJVF9SRUdJT05f U1RBUlTCoMKgwqAgKFBBR0VfT0ZGU0VUIC0gQlBGX0pJVF9SRUdJT05fU0laRSkKPj4+IC0jZGVm aW5lIEJQRl9KSVRfUkVHSU9OX0VORMKgwqDCoCAoVk1BTExPQ19FTkQpCj4+PiArI2RlZmluZSBC UEZfSklUX1JFR0lPTl9TVEFSVMKgwqDCoCBQRk5fQUxJR04oKHVuc2lnbmVkIGxvbmcpJl9lbmQp Cj4+PiArI2RlZmluZSBCUEZfSklUX1JFR0lPTl9FTkTCoMKgwqAgKEJQRl9KSVRfUkVHSU9OX1NU QVJUICsgCj4+PiBCUEZfSklUX1JFR0lPTl9TSVpFKQo+Pj4gKwo+Pj4gKyNpZmRlZiBDT05GSUdf NjRCSVQKPj4+ICsjZGVmaW5lIFZNQUxMT0NfTU9EVUxFX1NUQVJUwqDCoMKgIEJQRl9KSVRfUkVH SU9OX0VORAo+Pj4gKyNkZWZpbmUgVk1BTExPQ19NT0RVTEVfRU5EwqDCoMKgICgoKHVuc2lnbmVk IGxvbmcpJl9zdGFydCAmIFBBR0VfTUFTSykgCj4+PiArIFNaXzJHKQo+Pj4gKyNlbmRpZgo+Pj4K Pj4+IMKgLyoKPj4+IMKgICogUm91Z2hseSBzaXplIHRoZSB2bWVtbWFwIHNwYWNlIHRvIGJlIGxh cmdlIGVub3VnaCB0byBmaXQgZW5vdWdoCj4+PiBAQCAtNTcsOSArNjMsMTYgQEAKPj4+IMKgI2Rl ZmluZSBGSVhBRERSX1NJWkXCoMKgwqDCoCBQR0RJUl9TSVpFCj4+PiDCoCNlbmRpZgo+Pj4gwqAj ZGVmaW5lIEZJWEFERFJfU1RBUlTCoMKgwqAgKEZJWEFERFJfVE9QIC0gRklYQUREUl9TSVpFKQo+ Pj4gLQo+Pj4gwqAjZW5kaWYKPj4+Cj4+PiArI2lmbmRlZiBfX0FTU0VNQkxZX18KPj4+ICsKPj4+ ICsvKiBQYWdlIFVwcGVyIERpcmVjdG9yeSBub3QgdXNlZCBpbiBSSVNDLVYgKi8KPj4+ICsjaW5j bHVkZSA8YXNtLWdlbmVyaWMvcGd0YWJsZS1ub3B1ZC5oPgo+Pj4gKyNpbmNsdWRlIDxhc20vcGFn ZS5oPgo+Pj4gKyNpbmNsdWRlIDxhc20vdGxiZmx1c2guaD4KPj4+ICsjaW5jbHVkZSA8bGludXgv bW1fdHlwZXMuaD4KPj4+ICsKPj4+IMKgI2lmZGVmIENPTkZJR182NEJJVAo+Pj4gwqAjaW5jbHVk ZSA8YXNtL3BndGFibGUtNjQuaD4KPj4+IMKgI2Vsc2UKPj4+IEBAIC00ODMsNiArNDk2LDcgQEAg c3RhdGljIGlubGluZSB2b2lkIF9fa2VybmVsX21hcF9wYWdlcyhzdHJ1Y3QgcGFnZSAKPj4+ICpw YWdlLCBpbnQgbnVtcGFnZXMsIGludCBlbmFibAo+Pj4KPj4+IMKgI2RlZmluZSBrZXJuX2FkZHJf dmFsaWQoYWRkcinCoMKgICgxKSAvKiBGSVhNRSAqLwo+Pj4KPj4+ICtleHRlcm4gY2hhciBfc3Rh cnRbXTsKPj4+IMKgZXh0ZXJuIHZvaWQgKmR0Yl9lYXJseV92YTsKPj4+IMKgdm9pZCBzZXR1cF9i b290bWVtKHZvaWQpOwo+Pj4gwqB2b2lkIHBhZ2luZ19pbml0KHZvaWQpOwo+Pj4gZGlmZiAtLWdp dCBhL2FyY2gvcmlzY3Yva2VybmVsL2hlYWQuUyBiL2FyY2gvcmlzY3Yva2VybmVsL2hlYWQuUwo+ Pj4gaW5kZXggOThhNDA2NDc0ZTdkLi44ZjViYjc3MzEzMjcgMTAwNjQ0Cj4+PiAtLS0gYS9hcmNo L3Jpc2N2L2tlcm5lbC9oZWFkLlMKPj4+ICsrKyBiL2FyY2gvcmlzY3Yva2VybmVsL2hlYWQuUwo+ Pj4gQEAgLTQ5LDcgKzQ5LDggQEAgRU5UUlkoX3N0YXJ0KQo+Pj4gwqAjaWZkZWYgQ09ORklHX01N VQo+Pj4gwqByZWxvY2F0ZToKPj4+IMKgwqDCoMKgIC8qIFJlbG9jYXRlIHJldHVybiBhZGRyZXNz ICovCj4+PiAtwqDCoMKgIGxpIGExLCBQQUdFX09GRlNFVAo+Pj4gK8KgwqDCoCBsYSBhMSwga2Vy bmVsX3ZpcnRfYWRkcgo+Pj4gK8KgwqDCoCBSRUdfTCBhMSwgMChhMSkKPj4+IMKgwqDCoMKgIGxh IGEyLCBfc3RhcnQKPj4+IMKgwqDCoMKgIHN1YiBhMSwgYTEsIGEyCj4+PiDCoMKgwqDCoCBhZGQg cmEsIHJhLCBhMQo+Pj4gZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva2VybmVsL21vZHVsZS5jIGIv YXJjaC9yaXNjdi9rZXJuZWwvbW9kdWxlLmMKPj4+IGluZGV4IDhiYmU1ZGJlMTM0MS4uMWE4ZmJl MDVhY2NmIDEwMDY0NAo+Pj4gLS0tIGEvYXJjaC9yaXNjdi9rZXJuZWwvbW9kdWxlLmMKPj4+ICsr KyBiL2FyY2gvcmlzY3Yva2VybmVsL21vZHVsZS5jCj4+PiBAQCAtMzkyLDEyICszOTIsMTAgQEAg aW50IGFwcGx5X3JlbG9jYXRlX2FkZChFbGZfU2hkciAqc2VjaGRycywgY29uc3QgCj4+PiBjaGFy ICpzdHJ0YWIsCj4+PiDCoH0KPj4+Cj4+PiDCoCNpZiBkZWZpbmVkKENPTkZJR19NTVUpICYmIGRl ZmluZWQoQ09ORklHXzY0QklUKQo+Pj4gLSNkZWZpbmUgVk1BTExPQ19NT0RVTEVfU1RBUlQgXAo+ Pj4gLcKgwqDCoMKgIG1heChQRk5fQUxJR04oKHVuc2lnbmVkIGxvbmcpJl9lbmQgLSBTWl8yRyks IFZNQUxMT0NfU1RBUlQpCj4+PiDCoHZvaWQgKm1vZHVsZV9hbGxvYyh1bnNpZ25lZCBsb25nIHNp emUpCj4+PiDCoHsKPj4+IMKgwqDCoMKgIHJldHVybiBfX3ZtYWxsb2Nfbm9kZV9yYW5nZShzaXpl LCAxLCBWTUFMTE9DX01PRFVMRV9TVEFSVCwKPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBWTUFMTE9DX0VORCwgR0ZQX0tFUk5FTCwKPj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBWTUFMTE9DX01PRFVMRV9FTkQsIEdGUF9LRVJORUws Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFBBR0VfS0VSTkVM X0VYRUMsIDAsIE5VTUFfTk9fTk9ERSwKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgX19idWlsdGluX3JldHVybl9hZGRyZXNzKDApKTsKPj4+IMKgfQo+Pj4gZGlm ZiAtLWdpdCBhL2FyY2gvcmlzY3Yva2VybmVsL3ZtbGludXgubGRzLlMgCj4+PiBiL2FyY2gvcmlz Y3Yva2VybmVsL3ZtbGludXgubGRzLlMKPj4+IGluZGV4IDAzMzliNmJiZTExYS4uYTlhYmRlNjI5 MDlmIDEwMDY0NAo+Pj4gLS0tIGEvYXJjaC9yaXNjdi9rZXJuZWwvdm1saW51eC5sZHMuUwo+Pj4g KysrIGIvYXJjaC9yaXNjdi9rZXJuZWwvdm1saW51eC5sZHMuUwo+Pj4gQEAgLTQsNyArNCw4IEBA Cj4+PiDCoCAqIENvcHlyaWdodCAoQykgMjAxNyBTaUZpdmUKPj4+IMKgICovCj4+Pgo+Pj4gLSNk ZWZpbmUgTE9BRF9PRkZTRVQgUEFHRV9PRkZTRVQKPj4+ICsjaW5jbHVkZSA8YXNtL3BndGFibGUu aD4KPj4+ICsjZGVmaW5lIExPQURfT0ZGU0VUIEtFUk5FTF9MSU5LX0FERFIKPj4+IMKgI2luY2x1 ZGUgPGFzbS92bWxpbnV4Lmxkcy5oPgo+Pj4gwqAjaW5jbHVkZSA8YXNtL3BhZ2UuaD4KPj4+IMKg I2luY2x1ZGUgPGFzbS9jYWNoZS5oPgo+Pj4gZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbW0vaW5p dC5jIGIvYXJjaC9yaXNjdi9tbS9pbml0LmMKPj4+IGluZGV4IDczNmRlNmM4NzM5Zi4uNzFkYTc4 OTE0NjQ1IDEwMDY0NAo+Pj4gLS0tIGEvYXJjaC9yaXNjdi9tbS9pbml0LmMKPj4+ICsrKyBiL2Fy Y2gvcmlzY3YvbW0vaW5pdC5jCj4+PiBAQCAtMjIsNiArMjIsOSBAQAo+Pj4KPj4+IMKgI2luY2x1 ZGUgIi4uL2tlcm5lbC9oZWFkLmgiCj4+Pgo+Pj4gK3Vuc2lnbmVkIGxvbmcga2VybmVsX3ZpcnRf YWRkciA9IEtFUk5FTF9WSVJUX0FERFI7Cj4+PiArRVhQT1JUX1NZTUJPTChrZXJuZWxfdmlydF9h ZGRyKTsKPj4+ICsKPj4+IMKgdW5zaWduZWQgbG9uZyBlbXB0eV96ZXJvX3BhZ2VbUEFHRV9TSVpF IC8gc2l6ZW9mKHVuc2lnbmVkIGxvbmcpXQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgX19wYWdlX2FsaWduZWRfYnNzOwo+Pj4gwqBF WFBPUlRfU1lNQk9MKGVtcHR5X3plcm9fcGFnZSk7Cj4+PiBAQCAtMTc4LDggKzE4MSwxMiBAQCB2 b2lkIF9faW5pdCBzZXR1cF9ib290bWVtKHZvaWQpCj4+PiDCoH0KPj4+Cj4+PiDCoCNpZmRlZiBD T05GSUdfTU1VCj4+PiArLyogT2Zmc2V0IGJldHdlZW4gbGluZWFyIG1hcHBpbmcgdmlydHVhbCBh ZGRyZXNzIGFuZCBrZXJuZWwgbG9hZCAKPj4+IGFkZHJlc3MgKi8KPj4+IMKgdW5zaWduZWQgbG9u ZyB2YV9wYV9vZmZzZXQ7Cj4+PiDCoEVYUE9SVF9TWU1CT0wodmFfcGFfb2Zmc2V0KTsKPj4+ICsv KiBPZmZzZXQgYmV0d2VlbiBrZXJuZWwgbWFwcGluZyB2aXJ0dWFsIGFkZHJlc3MgYW5kIGtlcm5l bCBsb2FkIAo+Pj4gYWRkcmVzcyAqLwo+Pj4gK3Vuc2lnbmVkIGxvbmcgdmFfa2VybmVsX3BhX29m ZnNldDsKPj4+ICtFWFBPUlRfU1lNQk9MKHZhX2tlcm5lbF9wYV9vZmZzZXQpOwo+Pj4gwqB1bnNp Z25lZCBsb25nIHBmbl9iYXNlOwo+Pj4gwqBFWFBPUlRfU1lNQk9MKHBmbl9iYXNlKTsKPj4+Cj4+ PiBAQCAtMjcxLDcgKzI3OCw3IEBAIHN0YXRpYyBwaHlzX2FkZHJfdCBfX2luaXQgYWxsb2NfcG1k KHVpbnRwdHJfdCB2YSkKPj4+IMKgwqDCoMKgIGlmIChtbXVfZW5hYmxlZCkKPj4+IMKgwqDCoMKg wqDCoMKgwqAgcmV0dXJuIG1lbWJsb2NrX3BoeXNfYWxsb2MoUEFHRV9TSVpFLCBQQUdFX1NJWkUp Owo+Pj4KPj4+IC3CoMKgwqAgcG1kX251bSA9ICh2YSAtIFBBR0VfT0ZGU0VUKSA+PiBQR0RJUl9T SElGVDsKPj4+ICvCoMKgwqAgcG1kX251bSA9ICh2YSAtIGtlcm5lbF92aXJ0X2FkZHIpID4+IFBH RElSX1NISUZUOwo+Pj4gwqDCoMKgwqAgQlVHX09OKHBtZF9udW0gPj0gTlVNX0VBUkxZX1BNRFMp Owo+Pj4gwqDCoMKgwqAgcmV0dXJuICh1aW50cHRyX3QpJmVhcmx5X3BtZFtwbWRfbnVtICogUFRS U19QRVJfUE1EXTsKPj4+IMKgfQo+Pj4gQEAgLTM3MiwxNCArMzc5LDMwIEBAIHN0YXRpYyB1aW50 cHRyX3QgX19pbml0IAo+Pj4gYmVzdF9tYXBfc2l6ZShwaHlzX2FkZHJfdCBiYXNlLCBwaHlzX2Fk ZHJfdCBzaXplKQo+Pj4gwqAjZXJyb3IgInNldHVwX3ZtKCkgaXMgY2FsbGVkIGZyb20gaGVhZC5T IGJlZm9yZSByZWxvY2F0ZSBzbyBpdCAKPj4+IHNob3VsZCBub3QgdXNlIGFic29sdXRlIGFkZHJl c3NpbmcuIgo+Pj4gwqAjZW5kaWYKPj4+Cj4+PiArc3RhdGljIHVpbnRwdHJfdCBsb2FkX3BhLCBs b2FkX3N6Owo+Pj4gKwo+Pj4gK3N0YXRpYyB2b2lkIF9faW5pdCBjcmVhdGVfa2VybmVsX3BhZ2Vf dGFibGUocGdkX3QgKnBnZGlyLCB1aW50cHRyX3QgCj4+PiBtYXBfc2l6ZSkKPj4+ICt7Cj4+PiAr wqDCoMKgIHVpbnRwdHJfdCB2YSwgZW5kX3ZhOwo+Pj4gKwo+Pj4gK8KgwqDCoCBlbmRfdmEgPSBr ZXJuZWxfdmlydF9hZGRyICsgbG9hZF9zejsKPj4+ICvCoMKgwqAgZm9yICh2YSA9IGtlcm5lbF92 aXJ0X2FkZHI7IHZhIDwgZW5kX3ZhOyB2YSArPSBtYXBfc2l6ZSkKPj4+ICvCoMKgwqDCoMKgwqDC oCBjcmVhdGVfcGdkX21hcHBpbmcocGdkaXIsIHZhLAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBsb2FkX3BhICsgKHZhIC0ga2VybmVsX3ZpcnRfYWRkciksCj4+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1hcF9zaXplLCBQQUdFX0tFUk5F TF9FWEVDKTsKPj4+ICt9Cj4+PiArCj4+PiDCoGFzbWxpbmthZ2Ugdm9pZCBfX2luaXQgc2V0dXBf dm0odWludHB0cl90IGR0Yl9wYSkKPj4+IMKgewo+Pj4gwqDCoMKgwqAgdWludHB0cl90IHZhLCBl bmRfdmE7Cj4+PiAtwqDCoMKgIHVpbnRwdHJfdCBsb2FkX3BhID0gKHVpbnRwdHJfdCkoJl9zdGFy dCk7Cj4+PiAtwqDCoMKgIHVpbnRwdHJfdCBsb2FkX3N6ID0gKHVpbnRwdHJfdCkoJl9lbmQpIC0g bG9hZF9wYTsKPj4+IMKgwqDCoMKgIHVpbnRwdHJfdCBtYXBfc2l6ZSA9IGJlc3RfbWFwX3NpemUo bG9hZF9wYSwgCj4+PiBNQVhfRUFSTFlfTUFQUElOR19TSVpFKTsKPj4+Cj4+PiArwqDCoMKgIGxv YWRfcGEgPSAodWludHB0cl90KSgmX3N0YXJ0KTsKPj4+ICvCoMKgwqAgbG9hZF9zeiA9ICh1aW50 cHRyX3QpKCZfZW5kKSAtIGxvYWRfcGE7Cj4+PiArCj4+PiDCoMKgwqDCoCB2YV9wYV9vZmZzZXQg PSBQQUdFX09GRlNFVCAtIGxvYWRfcGE7Cj4+PiArwqDCoMKgIHZhX2tlcm5lbF9wYV9vZmZzZXQg PSBrZXJuZWxfdmlydF9hZGRyIC0gbG9hZF9wYTsKPj4+ICsKPj4+IMKgwqDCoMKgIHBmbl9iYXNl ID0gUEZOX0RPV04obG9hZF9wYSk7Cj4+Pgo+Pj4gwqDCoMKgwqAgLyoKPj4+IEBAIC00MDIsMjYg KzQyNSwyMiBAQCBhc21saW5rYWdlIHZvaWQgX19pbml0IHNldHVwX3ZtKHVpbnRwdHJfdCBkdGJf cGEpCj4+PiDCoMKgwqDCoCBjcmVhdGVfcG1kX21hcHBpbmcoZml4bWFwX3BtZCwgRklYQUREUl9T VEFSVCwKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAodWludHB0cl90KWZpeG1h cF9wdGUsIFBNRF9TSVpFLCBQQUdFX1RBQkxFKTsKPj4+IMKgwqDCoMKgIC8qIFNldHVwIHRyYW1w b2xpbmUgUEdEIGFuZCBQTUQgKi8KPj4+IC3CoMKgwqAgY3JlYXRlX3BnZF9tYXBwaW5nKHRyYW1w b2xpbmVfcGdfZGlyLCBQQUdFX09GRlNFVCwKPj4+ICvCoMKgwqAgY3JlYXRlX3BnZF9tYXBwaW5n KHRyYW1wb2xpbmVfcGdfZGlyLCBrZXJuZWxfdmlydF9hZGRyLAo+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgICh1aW50cHRyX3QpdHJhbXBvbGluZV9wbWQsIFBHRElSX1NJWkUsIFBB R0VfVEFCTEUpOwo+Pj4gLcKgwqDCoCBjcmVhdGVfcG1kX21hcHBpbmcodHJhbXBvbGluZV9wbWQs IFBBR0VfT0ZGU0VULAo+Pj4gK8KgwqDCoCBjcmVhdGVfcG1kX21hcHBpbmcodHJhbXBvbGluZV9w bWQsIGtlcm5lbF92aXJ0X2FkZHIsCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg bG9hZF9wYSwgUE1EX1NJWkUsIFBBR0VfS0VSTkVMX0VYRUMpOwo+Pj4gwqAjZWxzZQo+Pj4gwqDC oMKgwqAgLyogU2V0dXAgdHJhbXBvbGluZSBQR0QgKi8KPj4+IC3CoMKgwqAgY3JlYXRlX3BnZF9t YXBwaW5nKHRyYW1wb2xpbmVfcGdfZGlyLCBQQUdFX09GRlNFVCwKPj4+ICvCoMKgwqAgY3JlYXRl X3BnZF9tYXBwaW5nKHRyYW1wb2xpbmVfcGdfZGlyLCBrZXJuZWxfdmlydF9hZGRyLAo+Pj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxvYWRfcGEsIFBHRElSX1NJWkUsIFBBR0VfS0VS TkVMX0VYRUMpOwo+Pj4gwqAjZW5kaWYKPj4+Cj4+PiDCoMKgwqDCoCAvKgo+Pj4gLcKgwqDCoMKg ICogU2V0dXAgZWFybHkgUEdEIGNvdmVyaW5nIGVudGlyZSBrZXJuZWwgd2hpY2ggd2lsbCBhbGxv d3MKPj4+ICvCoMKgwqDCoCAqIFNldHVwIGVhcmx5IFBHRCBjb3ZlcmluZyBlbnRpcmUga2VybmVs IHdoaWNoIHdpbGwgYWxsb3cKPj4+IMKgwqDCoMKgwqAgKiB1cyB0byByZWFjaCBwYWdpbmdfaW5p dCgpLiBXZSBtYXAgYWxsIG1lbW9yeSBiYW5rcyBsYXRlcgo+Pj4gwqDCoMKgwqDCoCAqIGluIHNl dHVwX3ZtX2ZpbmFsKCkgYmVsb3cuCj4+PiDCoMKgwqDCoMKgICovCj4+PiAtwqDCoMKgIGVuZF92 YSA9IFBBR0VfT0ZGU0VUICsgbG9hZF9zejsKPj4+IC3CoMKgwqAgZm9yICh2YSA9IFBBR0VfT0ZG U0VUOyB2YSA8IGVuZF92YTsgdmEgKz0gbWFwX3NpemUpCj4+PiAtwqDCoMKgwqDCoMKgwqAgY3Jl YXRlX3BnZF9tYXBwaW5nKGVhcmx5X3BnX2RpciwgdmEsCj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGxvYWRfcGEgKyAodmEgLSBQQUdFX09GRlNFVCksCj4+PiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1hcF9zaXplLCBQQUdFX0tFUk5FTF9F WEVDKTsKPj4+ICvCoMKgwqAgY3JlYXRlX2tlcm5lbF9wYWdlX3RhYmxlKGVhcmx5X3BnX2Rpciwg bWFwX3NpemUpOwo+Pj4KPj4+IMKgwqDCoMKgIC8qIENyZWF0ZSBmaXhlZCBtYXBwaW5nIGZvciBl YXJseSBGRFQgcGFyc2luZyAqLwo+Pj4gwqDCoMKgwqAgZW5kX3ZhID0gX19maXhfdG9fdmlydChG SVhfRkRUKSArIEZJWF9GRFRfU0laRTsKPj4+IEBAIC00NDEsNiArNDYwLDcgQEAgc3RhdGljIHZv aWQgX19pbml0IHNldHVwX3ZtX2ZpbmFsKHZvaWQpCj4+PiDCoMKgwqDCoCB1aW50cHRyX3QgdmEs IG1hcF9zaXplOwo+Pj4gwqDCoMKgwqAgcGh5c19hZGRyX3QgcGEsIHN0YXJ0LCBlbmQ7Cj4+PiDC oMKgwqDCoCBzdHJ1Y3QgbWVtYmxvY2tfcmVnaW9uICpyZWc7Cj4+PiArwqDCoMKgIHN0YXRpYyBz dHJ1Y3Qgdm1fc3RydWN0IHZtX2tlcm5lbCA9IHsgMCB9Owo+Pj4KPj4+IMKgwqDCoMKgIC8qIFNl dCBtbXVfZW5hYmxlZCBmbGFnICovCj4+PiDCoMKgwqDCoCBtbXVfZW5hYmxlZCA9IHRydWU7Cj4+ PiBAQCAtNDY3LDEwICs0ODcsMjIgQEAgc3RhdGljIHZvaWQgX19pbml0IHNldHVwX3ZtX2ZpbmFs KHZvaWQpCj4+PiDCoMKgwqDCoMKgwqDCoMKgIGZvciAocGEgPSBzdGFydDsgcGEgPCBlbmQ7IHBh ICs9IG1hcF9zaXplKSB7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdmEgPSAodWludHB0 cl90KV9fdmEocGEpOwo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNyZWF0ZV9wZ2RfbWFw cGluZyhzd2FwcGVyX3BnX2RpciwgdmEsIHBhLAo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1hcF9zaXplLCBQQUdFX0tFUk5FTF9FWEVDKTsKPj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtYXBfc2l6ZSwgUEFH RV9LRVJORUwpOwo+Pj4gwqDCoMKgwqDCoMKgwqDCoCB9Cj4+PiDCoMKgwqDCoCB9Cj4+Pgo+Pj4g K8KgwqDCoCAvKiBNYXAgdGhlIGtlcm5lbCAqLwo+Pj4gK8KgwqDCoCBjcmVhdGVfa2VybmVsX3Bh Z2VfdGFibGUoc3dhcHBlcl9wZ19kaXIsIFBNRF9TSVpFKTsKPj4+ICsKPj4+ICvCoMKgwqAgLyog UmVzZXJ2ZSB0aGUgdm1hbGxvYyBhcmVhIG9jY3VwaWVkIGJ5IHRoZSBrZXJuZWwgKi8KPj4+ICvC oMKgwqAgdm1fa2VybmVsLmFkZHIgPSAodm9pZCAqKWtlcm5lbF92aXJ0X2FkZHI7Cj4+PiArwqDC oMKgIHZtX2tlcm5lbC5waHlzX2FkZHIgPSBsb2FkX3BhOwo+Pj4gK8KgwqDCoCB2bV9rZXJuZWwu c2l6ZSA9IChsb2FkX3N6ICsgUE1EX1NJWkUgLSAxKSAmIH4oUE1EX1NJWkUgLSAxKTsKPj4+ICvC oMKgwqAgdm1fa2VybmVsLmZsYWdzID0gVk1fTUFQIHwgVk1fTk9fR1VBUkQ7Cj4+PiArwqDCoMKg IHZtX2tlcm5lbC5jYWxsZXIgPSBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCk7Cj4+PiArCj4+ PiArwqDCoMKgIHZtX2FyZWFfYWRkX2Vhcmx5KCZ2bV9rZXJuZWwpOwo+Pj4gKwo+Pj4gwqDCoMKg wqAgLyogQ2xlYXIgZml4bWFwIFBURSBhbmQgUE1EIG1hcHBpbmdzICovCj4+PiDCoMKgwqDCoCBj bGVhcl9maXhtYXAoRklYX1BURSk7Cj4+PiDCoMKgwqDCoCBjbGVhcl9maXhtYXAoRklYX1BNRCk7 Cj4+PiBkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9tbS9waHlzYWRkci5jIGIvYXJjaC9yaXNjdi9t bS9waHlzYWRkci5jCj4+PiBpbmRleCBlOGU0ZGNkMzlmZWQuLjM1NzAzZDVlZjVmZCAxMDA2NDQK Pj4+IC0tLSBhL2FyY2gvcmlzY3YvbW0vcGh5c2FkZHIuYwo+Pj4gKysrIGIvYXJjaC9yaXNjdi9t bS9waHlzYWRkci5jCj4+PiBAQCAtMjMsNyArMjMsNyBAQCBFWFBPUlRfU1lNQk9MKF9fdmlydF90 b19waHlzKTsKPj4+Cj4+PiDCoHBoeXNfYWRkcl90IF9fcGh5c19hZGRyX3N5bWJvbCh1bnNpZ25l ZCBsb25nIHgpCj4+PiDCoHsKPj4+IC3CoMKgwqAgdW5zaWduZWQgbG9uZyBrZXJuZWxfc3RhcnQg PSAodW5zaWduZWQgbG9uZylQQUdFX09GRlNFVDsKPj4+ICvCoMKgwqAgdW5zaWduZWQgbG9uZyBr ZXJuZWxfc3RhcnQgPSAodW5zaWduZWQgbG9uZylrZXJuZWxfdmlydF9hZGRyOwo+Pj4gwqDCoMKg wqAgdW5zaWduZWQgbG9uZyBrZXJuZWxfZW5kID0gKHVuc2lnbmVkIGxvbmcpX2VuZDsKPj4+Cj4+ PiDCoMKgwqDCoCAvKgo+IAo+IEFsZXgKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmxpbnV4LXJpc2N2IG1haWxpbmcgbGlzdApsaW51eC1yaXNjdkBsaXN0 cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGlu Zm8vbGludXgtcmlzY3YK