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=-13.2 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=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 83AAFC433E0 for ; Thu, 23 Jul 2020 05:33:12 +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 47BD520768 for ; Thu, 23 Jul 2020 05:33:12 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="g3hlhTa3" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 47BD520768 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: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=CdBcuhhV6/Bt1elbQzQZ9xv0dUHtzf4B6kYZ0Olkbxo=; b=g3hlhTa3hj0SYGVuef6AanxVf ktKaoFc/cxfHw7TBIeI8mqkAHoICdHJMcgNjUHuDVgrdNSpzK+p6TRiQoAKEZcdm44jW1lgDf4B4E eG+VX7PeeEBAKVZKJiKkVLI5I0J7lPf7qDMQx7ofhiYwgtM2NwozuRhF9jc972uhmT4tQSm24Y//L LlWyHR3S/lzuQOJQ2dqDJagrxyI3twXcpR2bQl0CzRClgknPrkr5mo1owTH9K2nlb653n/WaV2iz/ 2f8EEUyqEzVHpbpASgpLXIGnJOE8AHOv4Ew0Ypn8P9nVFmbRSw2mq6NM59Qtn0RcCXY4lmAtRXTSn jwY+6gEbQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jyTql-0001Av-HX; Thu, 23 Jul 2020 05:32:59 +0000 Received: from relay11.mail.gandi.net ([217.70.178.231]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jyTqh-00019z-Rs for linux-riscv@lists.infradead.org; Thu, 23 Jul 2020 05:32:57 +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 relay11.mail.gandi.net (Postfix) with ESMTPSA id 022C0100003; Thu, 23 Jul 2020 05:32:46 +0000 (UTC) Subject: Re: [PATCH v5 1/4] riscv: Move kernel mapping to vmalloc zone To: Palmer Dabbelt References: From: Alex Ghiti Message-ID: Date: Thu, 23 Jul 2020 01:32:46 -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-20200723_013256_103445_A7586755 X-CRM114-Status: GOOD ( 49.14 ) 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 SGkgUGFsbWVyLAoKTGUgNy8yMS8yMCDDoCAzOjA1IFBNLCBQYWxtZXIgRGFiYmVsdCBhIMOpY3Jp dMKgOgo+IE9uIFR1ZSwgMjEgSnVsIDIwMjAgMTE6MzY6MTAgUERUICgtMDcwMCksIGFsZXhAZ2hp dGkuZnIgd3JvdGU6Cj4+IExldCdzIHRyeSB0byBtYWtlIHByb2dyZXNzIGhlcmU6IEkgYWRkIGxp bnV4LW1tIGluIENDIHRvIGdldCBmZWVkYmFjayBvbgo+PiB0aGlzIHBhdGNoIGFzIGl0IGJsb2Nr cyBzdjQ4IHN1cHBvcnQgdG9vLgo+IAo+IFNvcnJ5IGZvciBiZWluZyBzbG93IGhlcmUuwqAgSSBo YXZlbid0IHJlcGxpZWQgYmVjYXVzZSBJIGhhZG4ndCByZWFsbHkgCj4gZmxlc2hlZAoKTm8gcHJv YmxlbSA6KQoKPiBvdXQgdGhlIGRlc2lnbiB5ZXQsIGJ1dCBqdXN0IHNvIGV2ZXJ5b25lJ3Mgb24g dGhlIHNhbWUgcGFnZSBteSBwcm9ibGVtcyAKPiB3aXRoCj4gdGhpcyBhcmU6Cj4gCj4gKiBXZSB3 YXN0ZSB2bWFsbG9jIHNwYWNlIG9uIDMyLWJpdCBzeXN0ZW1zLCB3aGVyZSB0aGVyZSBpc24ndCBh IGxvdCBvZiBpdC4KPiAqIE9uIDY0LWJpdCBzeXN0ZW1zIHRoZSBWQSBzcGFjZSBhcm91bmQgdGhl IGtlcm5lbCBpcyBwcmVjaW91cyBiZWNhdXNlIAo+IGl0J3MgdGhlCj4gIMKgb25seSBwbGFjZSB3 ZSBjYW4gcGxhY2UgdGV4dCAobW9kdWxlcywgQlBGLCB3aGF0ZXZlcikuwqAgSWYgd2Ugc3RhcnQg Cj4gcHV0dGluZwo+ICDCoHRoZSBrZXJuZWwgaW4gdGhlIHZtYWxsb2Mgc3BhY2UgdGhlbiB3ZSBl aXRoZXIgaGF2ZSB0byBwcmUtYWxsb2NhdGUgYSAKPiBidW5jaAo+ICDCoG9mIHNwYWNlIGFyb3Vu ZCBpdCAoZXNzZW50aWFsbHkgbWFraW5nIGl0IGEgZml4ZWQgbWFwcGluZyBhbnl3YXkpIG9yIGl0 Cj4gIMKgYmVjb21lcyBsaWtlbHkgdGhhdCB3ZSB3b24ndCBiZSBhYmxlIHRvIGZpbmQgc3BhY2Ug Zm9yIG1vZHVsZXMgYXMgdGhleSdyZQo+ICDCoGxvYWRlZCBpbnRvIHJ1bm5pbmcgc3lzdGVtcy4K CkxldCdzIG5vdGUgdGhhdCB3ZSBhbHJlYWR5IGhhdmUgdGhpcyBpc3N1ZSBmb3IgQlBGIGFuZCBt b2R1bGVzIHJpZ2h0IG5vdy4KQnV0IGJ5IGtlZXBpbmcgdGhlIGtlcm5lbCAnaW4gdGhlIGVuZCcg b2YgdGhlIHZtYWxsb2MgcmVnaW9uLCB0aGF0J3MgCnF1aXRlIG1pdGlnYXRlIHRoaXMgcHJvYmxl bTogaWYgd2UgZXhoYXVzdCB0aGUgdm1hbGxvYyByZWdpb24gaW4gNjRiaXQgCmFuZCB0aGVuIHN0 YXJ0IGFsbG9jYXRpbmcgaGVyZSwgSSB0aGluayB0aGUgd2hvbGUgc3lzdGVtIHdpbGwgaGF2ZSBv dGhlciAKcHJvYmxlbS4KCj4gKiBSZWx5aW5nIG9uIGEgcmVsb2NhdGFibGUga2VybmVsIGZvciBz djQ4IHN1cHBvcnQgaW50cm9kdWNlcyBhIGZhaXJseSAKPiBsYXJnZQo+ICDCoHBlcmZvcm1hbmNl IGhpdC4KCkkgdW5kZXJzdGFuZCB0aGUgcGVyZm9ybWFuY2UgcGVuYWx0eSBidXQgSSBzdHJ1Z2ds ZSB0byBpdCAiZmFpcmx5IApsYXJnZSI6IGNhbiB3ZSBiZW5jaG1hcmsgdGhpcyBzb21laG93ID8K Cj4gCj4gUm91Z2hseSwgbXkgcHJvcG9zYWwgd291bGQgYmUgdG86Cj4gCj4gKiBMZWF2ZSB0aGUg MzItYml0IG1lbW9yeSBtYXAgYWxvbmUuwqAgT24gMzItYml0IHN5c3RlbXMgd2UgY2FuIGxvYWQg bW9kdWxlcwo+ICDCoGFueXdoZXJlIGFuZCB3ZSBvbmx5IGhhdmUgb25lIFZBIHdpZHRoLCBzbyB3 ZSdyZSBub3QgcmVhbGx5IHNvbHZpbmcgYW55Cj4gIMKgcHJvYmxlbXMgd2l0aCB0aGVzZSBjaGFu Z2VzLgoKT2sgdGhhdCdzIHBvc3NpYmxlIGFsdGhvdWdoIGEgbG90IG9mIGlmZGVmIHdpbGwgZ2V0 IGludm9sdmVkIDopCgo+ICogU3RhdGljbHkgYWxsb2NhdGUgYSAyR2lCIHBvcnRpb24gb2YgdGhl IFZBIHNwYWNlIGZvciBhbGwgb3VyIHRleHQsIGFzIAo+IGl0cyBvd24KPiAgwqByZWdpb24uwqAg V2UnZCBsaW5rL3JlbG9jYXRlIHRoZSBrZXJuZWwgaGVyZSBpbnN0ZWFkIG9mIGFyb3VuZCAKPiBQ QUdFX09GRlNFVCwKPiAgwqB3aGljaCB3b3VsZCBkZWNvdXBsZSB0aGUga2VybmVsIGZyb20gdGhl IHBoeXNpY2FsIG1lbW9yeSBsYXlvdXQgb2YgdGhlIAo+IHN5c3RlbS4KPiAgwqBUaGlzIHdvdWxk IGhhdmUgdGhlIHNpZGUgZWZmZWN0IG9mIHNvcnRpbmcgb3V0IGEgYnVuY2ggb2YgYm9vdGxvYWRl ciAKPiBoZWFkYWNoZXMKPiAgwqB0aGF0IHdlIGN1cnJlbnRseSBoYXZlLgoKVGhpcyBhbW91bnRz IHRvIGRvaW5nIHRoZSBzYW1lIGFzIHRoaXMgcGF0Y2ggYnV0IGluc3RlYWQgb2YgdXNpbmcgdGhl IAp2bWFsbG9jIHJlZ2lvbiwgd2UnZCB1c2Ugb3VyIG93biByaWdodCA/IEkgYmVsaWV2ZSB3ZSdk IHRoZW4gbG9zZSB0aGUgCnZtYWxsb2MgZmFjaWxpdGllcyB0byBhbGxvY2F0ZSBtb2R1bGVzIGFy b3VuZCB0aGlzIHpvbmUuCgo+ICogU29ydCBvdXQgaG93IHRvIG1haW50YWluIGEgbGluZWFyIG1h cCBhcyB0aGUgY2Fub25pY2FsIGhvbGUgbW92ZXMgYXJvdW5kCj4gIMKgYmV0d2VlbiB0aGUgVkEg d2lkdGhzIHdpdGhvdXQgYWRkaW5nIGEgYnVuY2ggb2Ygb3ZlcmhlYWQgdG8gdGhlIAo+IHZpcnQy cGh5cyBhbmQKPiAgwqBmcmllbmRzLsKgIFRoaXMgaXMgcHJvYmFibHkgZ29pbmcgdG8gYmUgdGhl IHRyaWNraWVzdCBwYXJ0LCBidXQgSSB0aGluayAKPiBpZiB3ZQo+ICDCoGp1c3QgY2hhbmdlIHRo ZSBwYWdlIHRhYmxlIGNvZGUgdG8gZXNzZW50aWFsbHkgbGllIGFib3V0IFZBcyB3aGVuIGFuIHN2 MzkKPiAgwqBzeXN0ZW0gcnVucyBhbiBzdjQ4K3N2Mzkga2VybmVsIHdlIGNvdWxkIG1ha2UgaXQg d29yayAtLSB0aGVyZSdkIGJlIHNvbWUKPiAgwqBsb2dpY2FsIGNvbXBsZXhpdHkgaW52b2x2ZWQs IGJ1dCBpdCB3b3VsZCByZW1haW4gZmFzdC4KCkkgaGF2ZSB0byB0aGluayBhYm91dCB0aGF0LgoK PiAKPiBUaGlzIGRvZXNuJ3Qgc29sdmUgdGhlIHByb2JsZW0gb2YgdmlydHVhbGx5IHJlbG9jYXRh YmxlIGtlcm5lbHMsIGJ1dCBpdCAKPiBkb2VzCj4gbGV0IHVzIGRlY291cGxlIHRoYXQgZnJvbSB0 aGUgc3Y0OCBzdHVmZi7CoCBJdCBhbHNvIGxldHMgdXMgc3RvcCByZWx5aW5nIAo+IG9uIGEKPiBm aXhlZCBwaHlzaWNhbCBhZGRyZXNzIHRoZSBrZXJuZWwgaXMgbG9hZGVkIGludG8sIHdoaWNoIGlz IGFub3RoZXIgdGhpbmcgSQo+IGRvbid0IGxpa2UuCj4gCgpBZ3JlZWQgb24gdGhpcyBvbmUuCgo+ IEkga25vdyB0aGlzIG1heSBiZSBhIG1vcmUgY29tcGxpY2F0ZWQgYXBwcm9hY2gsIGJ1dCB0aGVy ZSBhcmVuJ3QgYW55IHN2NDgKPiBzeXN0ZW1zIGFyb3VuZCByaWdodCBub3cgc28gSSBqdXN0IGRv bid0IHNlZSB0aGUgcnVzaCB0byBzdXBwb3J0IHRoZW0sCj4gcGFydGljdWxhcmx5IHdoZW4gdGhl cmUncyBhIGNvc3QgdG8gd2hhdCBhbHJlYWR5IGV4aXN0cyAoZm9yIHRob3NlIHdobyAKPiBoYXZl bid0Cj4gYmVlbiB3YXRjaGluZywgc28gZmFyIGFsbCB0aGUgc3Y0OCBwYXRjaCBzZXRzIGhhdmUg aW1wb3NlZCBhIHNpZ25pZmljYW50Cj4gcGVyZm9ybWFuY2UgcGVuYWx0eSBvbiBhbGwgc3lzdGVt cykuCj4gCgpBbGV4Cgo+Pgo+PiBBbGV4Cj4+Cj4+IExlIDcvOS8yMCDDoCA3OjExIEFNLCBBbGV4 IEdoaXRpIGEgw6ljcml0wqA6Cj4+PiBIaSBQYWxtZXIsCj4+Pgo+Pj4gTGUgNy85LzIwIMOgIDE6 MDUgQU0sIFBhbG1lciBEYWJiZWx0IGEgw6ljcml0wqA6Cj4+Pj4gT24gU3VuLCAwNyBKdW4gMjAy MCAwMDo1OTo0NiBQRFQgKC0wNzAwKSwgYWxleEBnaGl0aS5mciB3cm90ZToKPj4+Pj4gVGhpcyBp cyBhIHByZXBhcmF0b3J5IHBhdGNoIGZvciByZWxvY2F0YWJsZSBrZXJuZWwuCj4+Pj4+Cj4+Pj4+ IFRoZSBrZXJuZWwgdXNlZCB0byBiZSBsaW5rZWQgYXQgUEFHRV9PRkZTRVQgYWRkcmVzcyBhbmQg dXNlZCB0byBiZQo+Pj4+PiBsb2FkZWQKPj4+Pj4gcGh5c2ljYWxseSBhdCB0aGUgYmVnaW5uaW5n IG9mIHRoZSBtYWluIG1lbW9yeS4gVGhlcmVmb3JlLCB3ZSBjb3VsZCAKPj4+Pj4gdXNlCj4+Pj4+ IHRoZSBsaW5lYXIgbWFwcGluZyBmb3IgdGhlIGtlcm5lbCBtYXBwaW5nLgo+Pj4+Pgo+Pj4+PiBC dXQgdGhlIHJlbG9jYXRlZCBrZXJuZWwgYmFzZSBhZGRyZXNzIHdpbGwgYmUgZGlmZmVyZW50IGZy b20gCj4+Pj4+IFBBR0VfT0ZGU0VUCj4+Pj4+IGFuZCBzaW5jZSBpbiB0aGUgbGluZWFyIG1hcHBp bmcsIHR3byBkaWZmZXJlbnQgdmlydHVhbCBhZGRyZXNzZXMgCj4+Pj4+IGNhbm5vdAo+Pj4+PiBw b2ludCB0byB0aGUgc2FtZSBwaHlzaWNhbCBhZGRyZXNzLCB0aGUga2VybmVsIG1hcHBpbmcgbmVl ZHMgdG8gbGllCj4+Pj4+IG91dHNpZGUKPj4+Pj4gdGhlIGxpbmVhciBtYXBwaW5nLgo+Pj4+Cj4+ Pj4gSSBrbm93IGl0J3MgYmVlbiBhIHdoaWxlLCBidXQgSSBrZWVwIG9wZW5pbmcgdGhpcyB1cCB0 byByZXZpZXcgaXQgYW5kCj4+Pj4ganVzdAo+Pj4+IGNhbid0IGdldCBvdmVyIGhvdyB1Z2x5IGl0 IGlzIHRvIHB1dCB0aGUga2VybmVsJ3MgbGluZWFyIG1hcCBpbiB0aGUKPj4+PiB2bWFsbG9jCj4+ Pj4gcmVnaW9uLgo+Pj4+Cj4+Pj4gSSBndWVzcyBJIGRvbid0IHVuZGVyc3RhbmQgd2h5IHRoaXMg aXMgbmVjZXNzYXJ5IGF0IGFsbC4KPj4+PiBTcGVjaWZpY2FsbHk6IHdoeQo+Pj4+IGNhbid0IHdl IGp1c3QgcmVsb2NhdGUgdGhlIGtlcm5lbCB3aXRoaW4gdGhlIGxpbmVhciBtYXA/wqAgVGhhdCB3 b3VsZAo+Pj4+IGxldCB0aGUKPj4+PiBib290bG9hZGVyIHB1dCB0aGUga2VybmVsIHdoZXJldmVy IGl0IHdhbnRzLCBtb2R1bG8gdGhlIHBoeXNpY2FsCj4+Pj4gbWVtb3J5IHNpemUgd2UKPj4+PiBz dXBwb3J0LsKgIFdlJ2QgbmVlZCB0byBoYW5kbGUgdGhlIHJlZ2lvbnMgdGhhdCBhcmUgY291cGxl ZCB0byB0aGUKPj4+PiBrZXJuZWwncwo+Pj4+IGV4ZWN1dGlvbiBhZGRyZXNzLCBidXQgd2UgY291 bGQganVzdCBwdXQgdGhlbSBpbiBhbiBleHBsaWNpdCBtZW1vcnkKPj4+PiByZWdpb24KPj4+PiB3 aGljaCBpcyB3aGF0IHdlIHNob3VsZCBwcm9iYWJseSBiZSBkb2luZyBhbnl3YXkuCj4+Pgo+Pj4g VmlydHVhbCByZWxvY2F0aW9uIGluIHRoZSBsaW5lYXIgbWFwcGluZyByZXF1aXJlcyB0byBtb3Zl IHRoZSBrZXJuZWwKPj4+IHBoeXNpY2FsbHkgdG9vLiBab25nIGltcGxlbWVudGVkIHRoaXMgcGh5 c2ljYWwgbW92ZSBpbiBpdHMgS0FTTFIgUkZDCj4+PiBwYXRjaHNldCwgd2hpY2ggaXMgY3VtYmVy c29tZSBzaW5jZSBmaW5kaW5nIGFuIGF2YWlsYWJsZSBwaHlzaWNhbCBzcG90Cj4+PiBpcyBoYXJk ZXIgdGhhbiBqdXN0IHNlbGVjdGluZyBhIHZpcnR1YWwgcmFuZ2UgaW4gdGhlIHZtYWxsb2MgcmFu Z2UuCj4+Pgo+Pj4gSW4gYWRkaXRpb24sIGhhdmluZyB0aGUga2VybmVsIG1hcHBpbmcgaW4gdGhl IGxpbmVhciBtYXBwaW5nIHByZXZlbnRzCj4+PiB0aGUgdXNlIG9mIGh1Z2VwYWdlIGZvciB0aGUg bGluZWFyIG1hcHBpbmcgcmVzdWx0aW5nIGluIHBlcmZvcm1hbmNlIGxvc3MKPj4+IChhdCBsZWFz dCBmb3IgdGhlIEdCIHRoYXQgZW5jb21wYXNzZXMgdGhlIGtlcm5lbCkuCj4+Pgo+Pj4gV2h5IGRv IHlvdSBmaW5kIHRoaXMgInVnbHkiID8gVGhlIHZtYWxsb2MgcmVnaW9uIGlzIGp1c3QgYSBidW5j aCBvZgo+Pj4gYXZhaWxhYmxlIHZpcnR1YWwgYWRkcmVzc2VzIHRvIHdoYXRldmVyIHB1cnBvc2Ug d2Ugd2FudCwgYW5kIGFzIG5vdGVkIGJ5Cj4+PiBab25nLCBhcm02NCB1c2VzIHRoZSBzYW1lIHNj aGVtZS4KPj4+Cj4+Pj4KPj4+Pj4gSW4gYWRkaXRpb24sIGJlY2F1c2UgbW9kdWxlcyBhbmQgQlBG IG11c3QgYmUgY2xvc2UgdG8gdGhlIGtlcm5lbCAKPj4+Pj4gKGluc2lkZQo+Pj4+PiArLTJHQiB3 aW5kb3cpLCB0aGUga2VybmVsIGlzIHBsYWNlZCBhdCB0aGUgZW5kIG9mIHRoZSB2bWFsbG9jIHpv bmUgCj4+Pj4+IG1pbnVzCj4+Pj4+IDJHQiwgd2hpY2ggbGVhdmVzIHJvb20gZm9yIG1vZHVsZXMg YW5kIEJQRi4gVGhlIGtlcm5lbCBjb3VsZCBub3QgYmUKPj4+Pj4gcGxhY2VkIGF0IHRoZSBiZWdp bm5pbmcgb2YgdGhlIHZtYWxsb2Mgem9uZSBzaW5jZSBvdGhlciB2bWFsbG9jCj4+Pj4+IGFsbG9j YXRpb25zIGZyb20gdGhlIGtlcm5lbCBjb3VsZCBnZXQgYWxsIHRoZSArLTJHQiB3aW5kb3cgYXJv dW5kIHRoZQo+Pj4+PiBrZXJuZWwgd2hpY2ggd291bGQgcHJldmVudCBuZXcgbW9kdWxlcyBhbmQg QlBGIHByb2dyYW1zIHRvIGJlIGxvYWRlZC4KPj4+Pgo+Pj4+IFdlbGwsIHRoYXQncyBub3QgZW5v dWdoIHRvIG1ha2Ugc3VyZSB0aGlzIGRvZXNuJ3QgaGFwcGVuIC0tIGl0J3MganVzdAo+Pj4+IGVu b3VnaCB0bwo+Pj4+IG1ha2Ugc3VyZSBpdCBkb2Vzbid0IGhhcHBlbiB2ZXJ5IHF1aWNraWx5LsKg IFRoYXQncyB0aGUgc2FtZSBib2F0IHdlJ3JlCj4+Pj4gYWxyZWFkeQo+Pj4+IGluLCB0aG91Z2gs IHNvIGl0J3Mgbm90IGxpa2UgaXQncyB3b3JzZS4KPj4+Cj4+PiBJbmRlZWQsIHRoYXQncyBub3Qg d29yc2UsIEkgaGF2ZW4ndCBmb3VuZCBhIHdheSB0byByZXNlcnZlIHZtYWxsb2MgYXJlYQo+Pj4g d2l0aG91dCBhY3R1YWxseSBhbGxvY2F0aW5nIGl0Lgo+Pj4KPj4+Pgo+Pj4+PiBTaWduZWQtb2Zm LWJ5OiBBbGV4YW5kcmUgR2hpdGkgPGFsZXhAZ2hpdGkuZnI+Cj4+Pj4+IFJldmlld2VkLWJ5OiBa b25nIExpIDx6b25nLmxpQHNpZml2ZS5jb20+Cj4+Pj4+IC0tLQo+Pj4+PiDCoGFyY2gvcmlzY3Yv Ym9vdC9sb2FkZXIubGRzLlPCoMKgwqDCoCB8wqAgMyArLQo+Pj4+PiDCoGFyY2gvcmlzY3YvaW5j bHVkZS9hc20vcGFnZS5owqDCoMKgIHwgMTAgKysrKystCj4+Pj4+IMKgYXJjaC9yaXNjdi9pbmNs dWRlL2FzbS9wZ3RhYmxlLmggfCAzOCArKysrKysrKysrKysrKy0tLS0tLS0KPj4+Pj4gwqBhcmNo L3Jpc2N2L2tlcm5lbC9oZWFkLlPCoMKgwqDCoMKgwqDCoMKgIHzCoCAzICstCj4+Pj4+IMKgYXJj aC9yaXNjdi9rZXJuZWwvbW9kdWxlLmPCoMKgwqDCoMKgwqAgfMKgIDQgKy0tCj4+Pj4+IMKgYXJj aC9yaXNjdi9rZXJuZWwvdm1saW51eC5sZHMuU8KgIHzCoCAzICstCj4+Pj4+IMKgYXJjaC9yaXNj di9tbS9pbml0LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA1OCAKPj4+Pj4gKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0tLS0KPj4+Pj4gwqBhcmNoL3Jpc2N2L21tL3BoeXNhZGRyLmPC oMKgwqDCoMKgwqDCoMKgIHzCoCAyICstCj4+Pj4+IMKgOCBmaWxlcyBjaGFuZ2VkLCA4OCBpbnNl cnRpb25zKCspLCAzMyBkZWxldGlvbnMoLSkKPj4+Pj4KPj4+Pj4gZGlmZiAtLWdpdCBhL2FyY2gv cmlzY3YvYm9vdC9sb2FkZXIubGRzLlMgCj4+Pj4+IGIvYXJjaC9yaXNjdi9ib290L2xvYWRlci5s ZHMuUwo+Pj4+PiBpbmRleCA0N2E1MDAzYzJlMjguLjYyZDk0Njk2YTE5YyAxMDA2NDQKPj4+Pj4g LS0tIGEvYXJjaC9yaXNjdi9ib290L2xvYWRlci5sZHMuUwo+Pj4+PiArKysgYi9hcmNoL3Jpc2N2 L2Jvb3QvbG9hZGVyLmxkcy5TCj4+Pj4+IEBAIC0xLDEzICsxLDE0IEBACj4+Pj4+IMKgLyogU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KPj4+Pj4KPj4+Pj4gwqAjaW5jbHVkZSA8 YXNtL3BhZ2UuaD4KPj4+Pj4gKyNpbmNsdWRlIDxhc20vcGd0YWJsZS5oPgo+Pj4+Pgo+Pj4+PiDC oE9VVFBVVF9BUkNIKHJpc2N2KQo+Pj4+PiDCoEVOVFJZKF9zdGFydCkKPj4+Pj4KPj4+Pj4gwqBT RUNUSU9OUwo+Pj4+PiDCoHsKPj4+Pj4gLcKgwqDCoCAuID0gUEFHRV9PRkZTRVQ7Cj4+Pj4+ICvC oMKgwqAgLiA9IEtFUk5FTF9MSU5LX0FERFI7Cj4+Pj4+Cj4+Pj4+IMKgwqDCoMKgIC5wYXlsb2Fk IDogewo+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgICooLnBheWxvYWQpCj4+Pj4+IGRpZmYgLS1naXQg YS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BhZ2UuaAo+Pj4+PiBiL2FyY2gvcmlzY3YvaW5jbHVk ZS9hc20vcGFnZS5oCj4+Pj4+IGluZGV4IDJkNTBmNzZlZmU0OC4uNDhiYjA5YjZhOWI3IDEwMDY0 NAo+Pj4+PiAtLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BhZ2UuaAo+Pj4+PiArKysgYi9h cmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BhZ2UuaAo+Pj4+PiBAQCAtOTAsMTggKzkwLDI2IEBAIHR5 cGVkZWYgc3RydWN0IHBhZ2UgKnBndGFibGVfdDsKPj4+Pj4KPj4+Pj4gwqAjaWZkZWYgQ09ORklH X01NVQo+Pj4+PiDCoGV4dGVybiB1bnNpZ25lZCBsb25nIHZhX3BhX29mZnNldDsKPj4+Pj4gK2V4 dGVybiB1bnNpZ25lZCBsb25nIHZhX2tlcm5lbF9wYV9vZmZzZXQ7Cj4+Pj4+IMKgZXh0ZXJuIHVu c2lnbmVkIGxvbmcgcGZuX2Jhc2U7Cj4+Pj4+IMKgI2RlZmluZSBBUkNIX1BGTl9PRkZTRVTCoMKg wqDCoMKgwqDCoCAocGZuX2Jhc2UpCj4+Pj4+IMKgI2Vsc2UKPj4+Pj4gwqAjZGVmaW5lIHZhX3Bh X29mZnNldMKgwqDCoMKgwqDCoMKgIDAKPj4+Pj4gKyNkZWZpbmUgdmFfa2VybmVsX3BhX29mZnNl dMKgwqDCoCAwCj4+Pj4+IMKgI2RlZmluZSBBUkNIX1BGTl9PRkZTRVTCoMKgwqDCoMKgwqDCoCAo UEFHRV9PRkZTRVQgPj4gUEFHRV9TSElGVCkKPj4+Pj4gwqAjZW5kaWYgLyogQ09ORklHX01NVSAq Lwo+Pj4+Pgo+Pj4+PiDCoGV4dGVybiB1bnNpZ25lZCBsb25nIG1heF9sb3dfcGZuOwo+Pj4+PiDC oGV4dGVybiB1bnNpZ25lZCBsb25nIG1pbl9sb3dfcGZuOwo+Pj4+PiArZXh0ZXJuIHVuc2lnbmVk IGxvbmcga2VybmVsX3ZpcnRfYWRkcjsKPj4+Pj4KPj4+Pj4gwqAjZGVmaW5lIF9fcGFfdG9fdmFf bm9kZWJ1Zyh4KcKgwqDCoCAoKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpICh4KSArCj4+Pj4+IHZh X3BhX29mZnNldCkpCj4+Pj4+IC0jZGVmaW5lIF9fdmFfdG9fcGFfbm9kZWJ1Zyh4KcKgwqDCoCAo KHVuc2lnbmVkIGxvbmcpKHgpIC0gdmFfcGFfb2Zmc2V0KQo+Pj4+PiArI2RlZmluZSBsaW5lYXJf bWFwcGluZ192YV90b19wYSh4KcKgwqDCoCAoKHVuc2lnbmVkIGxvbmcpKHgpIC0KPj4+Pj4gdmFf cGFfb2Zmc2V0KQo+Pj4+PiArI2RlZmluZSBrZXJuZWxfbWFwcGluZ192YV90b19wYSh4KcKgwqDC oCBcCj4+Pj4+ICvCoMKgwqAgKCh1bnNpZ25lZCBsb25nKSh4KSAtIHZhX2tlcm5lbF9wYV9vZmZz ZXQpCj4+Pj4+ICsjZGVmaW5lIF9fdmFfdG9fcGFfbm9kZWJ1Zyh4KcKgwqDCoMKgwqDCoMKgIFwK Pj4+Pj4gK8KgwqDCoCAoKCh4KSA+PSBQQUdFX09GRlNFVCkgP8KgwqDCoMKgwqDCoMKgIFwKPj4+ Pj4gK8KgwqDCoMKgwqDCoMKgIGxpbmVhcl9tYXBwaW5nX3ZhX3RvX3BhKHgpIDoga2VybmVsX21h cHBpbmdfdmFfdG9fcGEoeCkpCj4+Pj4+Cj4+Pj4+IMKgI2lmZGVmIENPTkZJR19ERUJVR19WSVJU VUFMCj4+Pj4+IMKgZXh0ZXJuIHBoeXNfYWRkcl90IF9fdmlydF90b19waHlzKHVuc2lnbmVkIGxv bmcgeCk7Cj4+Pj4+IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BndGFibGUu aAo+Pj4+PiBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGd0YWJsZS5oCj4+Pj4+IGluZGV4IDM1 YjYwMDM1YjZiMC4uOTRlZjNiNDlkZmI2IDEwMDY0NAo+Pj4+PiAtLS0gYS9hcmNoL3Jpc2N2L2lu Y2x1ZGUvYXNtL3BndGFibGUuaAo+Pj4+PiArKysgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Bn dGFibGUuaAo+Pj4+PiBAQCAtMTEsMjMgKzExLDI5IEBACj4+Pj4+Cj4+Pj4+IMKgI2luY2x1ZGUg PGFzbS9wZ3RhYmxlLWJpdHMuaD4KPj4+Pj4KPj4+Pj4gLSNpZm5kZWYgX19BU1NFTUJMWV9fCj4+ Pj4+IC0KPj4+Pj4gLS8qIFBhZ2UgVXBwZXIgRGlyZWN0b3J5IG5vdCB1c2VkIGluIFJJU0MtViAq Lwo+Pj4+PiAtI2luY2x1ZGUgPGFzbS1nZW5lcmljL3BndGFibGUtbm9wdWQuaD4KPj4+Pj4gLSNp bmNsdWRlIDxhc20vcGFnZS5oPgo+Pj4+PiAtI2luY2x1ZGUgPGFzbS90bGJmbHVzaC5oPgo+Pj4+ PiAtI2luY2x1ZGUgPGxpbnV4L21tX3R5cGVzLmg+Cj4+Pj4+IC0KPj4+Pj4gLSNpZmRlZiBDT05G SUdfTU1VCj4+Pj4+ICsjaWZuZGVmIENPTkZJR19NTVUKPj4+Pj4gKyNkZWZpbmUgS0VSTkVMX1ZJ UlRfQUREUsKgwqDCoCBQQUdFX09GRlNFVAo+Pj4+PiArI2RlZmluZSBLRVJORUxfTElOS19BRERS wqDCoMKgIFBBR0VfT0ZGU0VUCj4+Pj4+ICsjZWxzZQo+Pj4+PiArLyoKPj4+Pj4gKyAqIExlYXZl IDJHQiBmb3IgbW9kdWxlcyBhbmQgQlBGIHRoYXQgbXVzdCBsaWUgd2l0aGluIGEgMkdCIHJhbmdl Cj4+Pj4+IGFyb3VuZAo+Pj4+PiArICogdGhlIGtlcm5lbC4KPj4+Pj4gKyAqLwo+Pj4+PiArI2Rl ZmluZSBLRVJORUxfVklSVF9BRERSwqDCoMKgIChWTUFMTE9DX0VORCAtIFNaXzJHICsgMSkKPj4+ Pj4gKyNkZWZpbmUgS0VSTkVMX0xJTktfQUREUsKgwqDCoCBLRVJORUxfVklSVF9BRERSCj4+Pj4K Pj4+PiBBdCBhIGJhcmUgbWluaW11bSB0aGlzIGlzIGdvaW5nIHRvIG1ha2UgYSBtZXNzIG9mIHRo ZSAzMi1iaXQgcG9ydCwgYXMKPj4+PiBub24tcmVsb2NhdGFibGUga2VybmVscyBhcmUgbm93IGdv aW5nIHRvIGdldCBsaW5rZWQgYXQgMUdpQiB3aGljaCBpcwo+Pj4+IHdoZXJlIHVzZXIKPj4+PiBj b2RlIGlzIHN1cHBvc2VkIHRvIGxpdmUuwqAgVGhhdCdzIGFuIGVhc3kgZml4LCB0aG91Z2gsIGFz IHRoZSAzMi1iaXQKPj4+PiBzdHVmZgo+Pj4+IGRvZXNuJ3QgbmVlZCBhbnkgbW9kdWxlIGFkZHJl c3MgcmVzdHJpY3Rpb25zLgo+Pj4KPj4+IEluZGVlZCwgSSB3aWxsIHRha2UgYSBsb29rIGF0IHRo YXQuCj4+Pgo+Pj4+Cj4+Pj4+IMKgI2RlZmluZSBWTUFMTE9DX1NJWkXCoMKgwqDCoCAoS0VSTl9W SVJUX1NJWkUgPj4gMSkKPj4+Pj4gwqAjZGVmaW5lIFZNQUxMT0NfRU5EwqDCoMKgwqDCoCAoUEFH RV9PRkZTRVQgLSAxKQo+Pj4+PiDCoCNkZWZpbmUgVk1BTExPQ19TVEFSVMKgwqDCoCAoUEFHRV9P RkZTRVQgLSBWTUFMTE9DX1NJWkUpCj4+Pj4+Cj4+Pj4+IMKgI2RlZmluZSBCUEZfSklUX1JFR0lP Tl9TSVpFwqDCoMKgIChTWl8xMjhNKQo+Pj4+PiAtI2RlZmluZSBCUEZfSklUX1JFR0lPTl9TVEFS VMKgwqDCoCAoUEFHRV9PRkZTRVQgLSBCUEZfSklUX1JFR0lPTl9TSVpFKQo+Pj4+PiAtI2RlZmlu ZSBCUEZfSklUX1JFR0lPTl9FTkTCoMKgwqAgKFZNQUxMT0NfRU5EKQo+Pj4+PiArI2RlZmluZSBC UEZfSklUX1JFR0lPTl9TVEFSVMKgwqDCoCBQRk5fQUxJR04oKHVuc2lnbmVkIGxvbmcpJl9lbmQp Cj4+Pj4+ICsjZGVmaW5lIEJQRl9KSVRfUkVHSU9OX0VORMKgwqDCoCAoQlBGX0pJVF9SRUdJT05f U1RBUlQgKwo+Pj4+PiBCUEZfSklUX1JFR0lPTl9TSVpFKQo+Pj4+PiArCj4+Pj4+ICsjaWZkZWYg Q09ORklHXzY0QklUCj4+Pj4+ICsjZGVmaW5lIFZNQUxMT0NfTU9EVUxFX1NUQVJUwqDCoMKgIEJQ Rl9KSVRfUkVHSU9OX0VORAo+Pj4+PiArI2RlZmluZSBWTUFMTE9DX01PRFVMRV9FTkTCoMKgwqAg KCgodW5zaWduZWQgbG9uZykmX3N0YXJ0ICYgUEFHRV9NQVNLKQo+Pj4+PiArIFNaXzJHKQo+Pj4+ PiArI2VuZGlmCj4+Pj4+Cj4+Pj4+IMKgLyoKPj4+Pj4gwqAgKiBSb3VnaGx5IHNpemUgdGhlIHZt ZW1tYXAgc3BhY2UgdG8gYmUgbGFyZ2UgZW5vdWdoIHRvIGZpdCBlbm91Z2gKPj4+Pj4gQEAgLTU3 LDkgKzYzLDE2IEBACj4+Pj4+IMKgI2RlZmluZSBGSVhBRERSX1NJWkXCoMKgwqDCoCBQR0RJUl9T SVpFCj4+Pj4+IMKgI2VuZGlmCj4+Pj4+IMKgI2RlZmluZSBGSVhBRERSX1NUQVJUwqDCoMKgIChG SVhBRERSX1RPUCAtIEZJWEFERFJfU0laRSkKPj4+Pj4gLQo+Pj4+PiDCoCNlbmRpZgo+Pj4+Pgo+ Pj4+PiArI2lmbmRlZiBfX0FTU0VNQkxZX18KPj4+Pj4gKwo+Pj4+PiArLyogUGFnZSBVcHBlciBE aXJlY3Rvcnkgbm90IHVzZWQgaW4gUklTQy1WICovCj4+Pj4+ICsjaW5jbHVkZSA8YXNtLWdlbmVy aWMvcGd0YWJsZS1ub3B1ZC5oPgo+Pj4+PiArI2luY2x1ZGUgPGFzbS9wYWdlLmg+Cj4+Pj4+ICsj aW5jbHVkZSA8YXNtL3RsYmZsdXNoLmg+Cj4+Pj4+ICsjaW5jbHVkZSA8bGludXgvbW1fdHlwZXMu aD4KPj4+Pj4gKwo+Pj4+PiDCoCNpZmRlZiBDT05GSUdfNjRCSVQKPj4+Pj4gwqAjaW5jbHVkZSA8 YXNtL3BndGFibGUtNjQuaD4KPj4+Pj4gwqAjZWxzZQo+Pj4+PiBAQCAtNDgzLDYgKzQ5Niw3IEBA IHN0YXRpYyBpbmxpbmUgdm9pZCBfX2tlcm5lbF9tYXBfcGFnZXMoc3RydWN0IHBhZ2UKPj4+Pj4g KnBhZ2UsIGludCBudW1wYWdlcywgaW50IGVuYWJsCj4+Pj4+Cj4+Pj4+IMKgI2RlZmluZSBrZXJu X2FkZHJfdmFsaWQoYWRkcinCoMKgICgxKSAvKiBGSVhNRSAqLwo+Pj4+Pgo+Pj4+PiArZXh0ZXJu IGNoYXIgX3N0YXJ0W107Cj4+Pj4+IMKgZXh0ZXJuIHZvaWQgKmR0Yl9lYXJseV92YTsKPj4+Pj4g wqB2b2lkIHNldHVwX2Jvb3RtZW0odm9pZCk7Cj4+Pj4+IMKgdm9pZCBwYWdpbmdfaW5pdCh2b2lk KTsKPj4+Pj4gZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva2VybmVsL2hlYWQuUyBiL2FyY2gvcmlz Y3Yva2VybmVsL2hlYWQuUwo+Pj4+PiBpbmRleCA5OGE0MDY0NzRlN2QuLjhmNWJiNzczMTMyNyAx MDA2NDQKPj4+Pj4gLS0tIGEvYXJjaC9yaXNjdi9rZXJuZWwvaGVhZC5TCj4+Pj4+ICsrKyBiL2Fy Y2gvcmlzY3Yva2VybmVsL2hlYWQuUwo+Pj4+PiBAQCAtNDksNyArNDksOCBAQCBFTlRSWShfc3Rh cnQpCj4+Pj4+IMKgI2lmZGVmIENPTkZJR19NTVUKPj4+Pj4gwqByZWxvY2F0ZToKPj4+Pj4gwqDC oMKgwqAgLyogUmVsb2NhdGUgcmV0dXJuIGFkZHJlc3MgKi8KPj4+Pj4gLcKgwqDCoCBsaSBhMSwg UEFHRV9PRkZTRVQKPj4+Pj4gK8KgwqDCoCBsYSBhMSwga2VybmVsX3ZpcnRfYWRkcgo+Pj4+PiAr wqDCoMKgIFJFR19MIGExLCAwKGExKQo+Pj4+PiDCoMKgwqDCoCBsYSBhMiwgX3N0YXJ0Cj4+Pj4+ IMKgwqDCoMKgIHN1YiBhMSwgYTEsIGEyCj4+Pj4+IMKgwqDCoMKgIGFkZCByYSwgcmEsIGExCj4+ Pj4+IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2tlcm5lbC9tb2R1bGUuYyBiL2FyY2gvcmlzY3Yv a2VybmVsL21vZHVsZS5jCj4+Pj4+IGluZGV4IDhiYmU1ZGJlMTM0MS4uMWE4ZmJlMDVhY2NmIDEw MDY0NAo+Pj4+PiAtLS0gYS9hcmNoL3Jpc2N2L2tlcm5lbC9tb2R1bGUuYwo+Pj4+PiArKysgYi9h cmNoL3Jpc2N2L2tlcm5lbC9tb2R1bGUuYwo+Pj4+PiBAQCAtMzkyLDEyICszOTIsMTAgQEAgaW50 IGFwcGx5X3JlbG9jYXRlX2FkZChFbGZfU2hkciAqc2VjaGRycywgY29uc3QKPj4+Pj4gY2hhciAq c3RydGFiLAo+Pj4+PiDCoH0KPj4+Pj4KPj4+Pj4gwqAjaWYgZGVmaW5lZChDT05GSUdfTU1VKSAm JiBkZWZpbmVkKENPTkZJR182NEJJVCkKPj4+Pj4gLSNkZWZpbmUgVk1BTExPQ19NT0RVTEVfU1RB UlQgXAo+Pj4+PiAtwqDCoMKgwqAgbWF4KFBGTl9BTElHTigodW5zaWduZWQgbG9uZykmX2VuZCAt IFNaXzJHKSwgVk1BTExPQ19TVEFSVCkKPj4+Pj4gwqB2b2lkICptb2R1bGVfYWxsb2ModW5zaWdu ZWQgbG9uZyBzaXplKQo+Pj4+PiDCoHsKPj4+Pj4gwqDCoMKgwqAgcmV0dXJuIF9fdm1hbGxvY19u b2RlX3JhbmdlKHNpemUsIDEsIFZNQUxMT0NfTU9EVUxFX1NUQVJULAo+Pj4+PiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVk1BTExPQ19FTkQsIEdGUF9LRVJORUwsCj4+ Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBWTUFMTE9DX01PRFVM RV9FTkQsIEdGUF9LRVJORUwsCj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgUEFHRV9LRVJORUxfRVhFQywgMCwgTlVNQV9OT19OT0RFLAo+Pj4+PiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVz cygwKSk7Cj4+Pj4+IMKgfQo+Pj4+PiBkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rZXJuZWwvdm1s aW51eC5sZHMuUwo+Pj4+PiBiL2FyY2gvcmlzY3Yva2VybmVsL3ZtbGludXgubGRzLlMKPj4+Pj4g aW5kZXggMDMzOWI2YmJlMTFhLi5hOWFiZGU2MjkwOWYgMTAwNjQ0Cj4+Pj4+IC0tLSBhL2FyY2gv cmlzY3Yva2VybmVsL3ZtbGludXgubGRzLlMKPj4+Pj4gKysrIGIvYXJjaC9yaXNjdi9rZXJuZWwv dm1saW51eC5sZHMuUwo+Pj4+PiBAQCAtNCw3ICs0LDggQEAKPj4+Pj4gwqAgKiBDb3B5cmlnaHQg KEMpIDIwMTcgU2lGaXZlCj4+Pj4+IMKgICovCj4+Pj4+Cj4+Pj4+IC0jZGVmaW5lIExPQURfT0ZG U0VUIFBBR0VfT0ZGU0VUCj4+Pj4+ICsjaW5jbHVkZSA8YXNtL3BndGFibGUuaD4KPj4+Pj4gKyNk ZWZpbmUgTE9BRF9PRkZTRVQgS0VSTkVMX0xJTktfQUREUgo+Pj4+PiDCoCNpbmNsdWRlIDxhc20v dm1saW51eC5sZHMuaD4KPj4+Pj4gwqAjaW5jbHVkZSA8YXNtL3BhZ2UuaD4KPj4+Pj4gwqAjaW5j bHVkZSA8YXNtL2NhY2hlLmg+Cj4+Pj4+IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L21tL2luaXQu YyBiL2FyY2gvcmlzY3YvbW0vaW5pdC5jCj4+Pj4+IGluZGV4IDczNmRlNmM4NzM5Zi4uNzFkYTc4 OTE0NjQ1IDEwMDY0NAo+Pj4+PiAtLS0gYS9hcmNoL3Jpc2N2L21tL2luaXQuYwo+Pj4+PiArKysg Yi9hcmNoL3Jpc2N2L21tL2luaXQuYwo+Pj4+PiBAQCAtMjIsNiArMjIsOSBAQAo+Pj4+Pgo+Pj4+ PiDCoCNpbmNsdWRlICIuLi9rZXJuZWwvaGVhZC5oIgo+Pj4+Pgo+Pj4+PiArdW5zaWduZWQgbG9u ZyBrZXJuZWxfdmlydF9hZGRyID0gS0VSTkVMX1ZJUlRfQUREUjsKPj4+Pj4gK0VYUE9SVF9TWU1C T0woa2VybmVsX3ZpcnRfYWRkcik7Cj4+Pj4+ICsKPj4+Pj4gwqB1bnNpZ25lZCBsb25nIGVtcHR5 X3plcm9fcGFnZVtQQUdFX1NJWkUgLyBzaXplb2YodW5zaWduZWQgbG9uZyldCj4+Pj4+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9fcGFn ZV9hbGlnbmVkX2JzczsKPj4+Pj4gwqBFWFBPUlRfU1lNQk9MKGVtcHR5X3plcm9fcGFnZSk7Cj4+ Pj4+IEBAIC0xNzgsOCArMTgxLDEyIEBAIHZvaWQgX19pbml0IHNldHVwX2Jvb3RtZW0odm9pZCkK Pj4+Pj4gwqB9Cj4+Pj4+Cj4+Pj4+IMKgI2lmZGVmIENPTkZJR19NTVUKPj4+Pj4gKy8qIE9mZnNl dCBiZXR3ZWVuIGxpbmVhciBtYXBwaW5nIHZpcnR1YWwgYWRkcmVzcyBhbmQga2VybmVsIGxvYWQK Pj4+Pj4gYWRkcmVzcyAqLwo+Pj4+PiDCoHVuc2lnbmVkIGxvbmcgdmFfcGFfb2Zmc2V0Owo+Pj4+ PiDCoEVYUE9SVF9TWU1CT0wodmFfcGFfb2Zmc2V0KTsKPj4+Pj4gKy8qIE9mZnNldCBiZXR3ZWVu IGtlcm5lbCBtYXBwaW5nIHZpcnR1YWwgYWRkcmVzcyBhbmQga2VybmVsIGxvYWQKPj4+Pj4gYWRk cmVzcyAqLwo+Pj4+PiArdW5zaWduZWQgbG9uZyB2YV9rZXJuZWxfcGFfb2Zmc2V0Owo+Pj4+PiAr RVhQT1JUX1NZTUJPTCh2YV9rZXJuZWxfcGFfb2Zmc2V0KTsKPj4+Pj4gwqB1bnNpZ25lZCBsb25n IHBmbl9iYXNlOwo+Pj4+PiDCoEVYUE9SVF9TWU1CT0wocGZuX2Jhc2UpOwo+Pj4+Pgo+Pj4+PiBA QCAtMjcxLDcgKzI3OCw3IEBAIHN0YXRpYyBwaHlzX2FkZHJfdCBfX2luaXQgYWxsb2NfcG1kKHVp bnRwdHJfdCB2YSkKPj4+Pj4gwqDCoMKgwqAgaWYgKG1tdV9lbmFibGVkKQo+Pj4+PiDCoMKgwqDC oMKgwqDCoMKgIHJldHVybiBtZW1ibG9ja19waHlzX2FsbG9jKFBBR0VfU0laRSwgUEFHRV9TSVpF KTsKPj4+Pj4KPj4+Pj4gLcKgwqDCoCBwbWRfbnVtID0gKHZhIC0gUEFHRV9PRkZTRVQpID4+IFBH RElSX1NISUZUOwo+Pj4+PiArwqDCoMKgIHBtZF9udW0gPSAodmEgLSBrZXJuZWxfdmlydF9hZGRy KSA+PiBQR0RJUl9TSElGVDsKPj4+Pj4gwqDCoMKgwqAgQlVHX09OKHBtZF9udW0gPj0gTlVNX0VB UkxZX1BNRFMpOwo+Pj4+PiDCoMKgwqDCoCByZXR1cm4gKHVpbnRwdHJfdCkmZWFybHlfcG1kW3Bt ZF9udW0gKiBQVFJTX1BFUl9QTURdOwo+Pj4+PiDCoH0KPj4+Pj4gQEAgLTM3MiwxNCArMzc5LDMw IEBAIHN0YXRpYyB1aW50cHRyX3QgX19pbml0Cj4+Pj4+IGJlc3RfbWFwX3NpemUocGh5c19hZGRy X3QgYmFzZSwgcGh5c19hZGRyX3Qgc2l6ZSkKPj4+Pj4gwqAjZXJyb3IgInNldHVwX3ZtKCkgaXMg Y2FsbGVkIGZyb20gaGVhZC5TIGJlZm9yZSByZWxvY2F0ZSBzbyBpdAo+Pj4+PiBzaG91bGQgbm90 IHVzZSBhYnNvbHV0ZSBhZGRyZXNzaW5nLiIKPj4+Pj4gwqAjZW5kaWYKPj4+Pj4KPj4+Pj4gK3N0 YXRpYyB1aW50cHRyX3QgbG9hZF9wYSwgbG9hZF9zejsKPj4+Pj4gKwo+Pj4+PiArc3RhdGljIHZv aWQgX19pbml0IGNyZWF0ZV9rZXJuZWxfcGFnZV90YWJsZShwZ2RfdCAqcGdkaXIsIHVpbnRwdHJf dAo+Pj4+PiBtYXBfc2l6ZSkKPj4+Pj4gK3sKPj4+Pj4gK8KgwqDCoCB1aW50cHRyX3QgdmEsIGVu ZF92YTsKPj4+Pj4gKwo+Pj4+PiArwqDCoMKgIGVuZF92YSA9IGtlcm5lbF92aXJ0X2FkZHIgKyBs b2FkX3N6Owo+Pj4+PiArwqDCoMKgIGZvciAodmEgPSBrZXJuZWxfdmlydF9hZGRyOyB2YSA8IGVu ZF92YTsgdmEgKz0gbWFwX3NpemUpCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBjcmVhdGVfcGdkX21h cHBpbmcocGdkaXIsIHZhLAo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGxvYWRfcGEgKyAodmEgLSBrZXJuZWxfdmlydF9hZGRyKSwKPj4+Pj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtYXBfc2l6ZSwgUEFHRV9LRVJORUxfRVhFQyk7Cj4+ Pj4+ICt9Cj4+Pj4+ICsKPj4+Pj4gwqBhc21saW5rYWdlIHZvaWQgX19pbml0IHNldHVwX3ZtKHVp bnRwdHJfdCBkdGJfcGEpCj4+Pj4+IMKgewo+Pj4+PiDCoMKgwqDCoCB1aW50cHRyX3QgdmEsIGVu ZF92YTsKPj4+Pj4gLcKgwqDCoCB1aW50cHRyX3QgbG9hZF9wYSA9ICh1aW50cHRyX3QpKCZfc3Rh cnQpOwo+Pj4+PiAtwqDCoMKgIHVpbnRwdHJfdCBsb2FkX3N6ID0gKHVpbnRwdHJfdCkoJl9lbmQp IC0gbG9hZF9wYTsKPj4+Pj4gwqDCoMKgwqAgdWludHB0cl90IG1hcF9zaXplID0gYmVzdF9tYXBf c2l6ZShsb2FkX3BhLAo+Pj4+PiBNQVhfRUFSTFlfTUFQUElOR19TSVpFKTsKPj4+Pj4KPj4+Pj4g K8KgwqDCoCBsb2FkX3BhID0gKHVpbnRwdHJfdCkoJl9zdGFydCk7Cj4+Pj4+ICvCoMKgwqAgbG9h ZF9zeiA9ICh1aW50cHRyX3QpKCZfZW5kKSAtIGxvYWRfcGE7Cj4+Pj4+ICsKPj4+Pj4gwqDCoMKg wqAgdmFfcGFfb2Zmc2V0ID0gUEFHRV9PRkZTRVQgLSBsb2FkX3BhOwo+Pj4+PiArwqDCoMKgIHZh X2tlcm5lbF9wYV9vZmZzZXQgPSBrZXJuZWxfdmlydF9hZGRyIC0gbG9hZF9wYTsKPj4+Pj4gKwo+ Pj4+PiDCoMKgwqDCoCBwZm5fYmFzZSA9IFBGTl9ET1dOKGxvYWRfcGEpOwo+Pj4+Pgo+Pj4+PiDC oMKgwqDCoCAvKgo+Pj4+PiBAQCAtNDAyLDI2ICs0MjUsMjIgQEAgYXNtbGlua2FnZSB2b2lkIF9f aW5pdCBzZXR1cF92bSh1aW50cHRyX3QgCj4+Pj4+IGR0Yl9wYSkKPj4+Pj4gwqDCoMKgwqAgY3Jl YXRlX3BtZF9tYXBwaW5nKGZpeG1hcF9wbWQsIEZJWEFERFJfU1RBUlQsCj4+Pj4+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAodWludHB0cl90KWZpeG1hcF9wdGUsIFBNRF9TSVpFLCBQ QUdFX1RBQkxFKTsKPj4+Pj4gwqDCoMKgwqAgLyogU2V0dXAgdHJhbXBvbGluZSBQR0QgYW5kIFBN RCAqLwo+Pj4+PiAtwqDCoMKgIGNyZWF0ZV9wZ2RfbWFwcGluZyh0cmFtcG9saW5lX3BnX2Rpciwg UEFHRV9PRkZTRVQsCj4+Pj4+ICvCoMKgwqAgY3JlYXRlX3BnZF9tYXBwaW5nKHRyYW1wb2xpbmVf cGdfZGlyLCBrZXJuZWxfdmlydF9hZGRyLAo+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgKHVpbnRwdHJfdCl0cmFtcG9saW5lX3BtZCwgUEdESVJfU0laRSwgUEFHRV9UQUJMRSk7 Cj4+Pj4+IC3CoMKgwqAgY3JlYXRlX3BtZF9tYXBwaW5nKHRyYW1wb2xpbmVfcG1kLCBQQUdFX09G RlNFVCwKPj4+Pj4gK8KgwqDCoCBjcmVhdGVfcG1kX21hcHBpbmcodHJhbXBvbGluZV9wbWQsIGtl cm5lbF92aXJ0X2FkZHIsCj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsb2Fk X3BhLCBQTURfU0laRSwgUEFHRV9LRVJORUxfRVhFQyk7Cj4+Pj4+IMKgI2Vsc2UKPj4+Pj4gwqDC oMKgwqAgLyogU2V0dXAgdHJhbXBvbGluZSBQR0QgKi8KPj4+Pj4gLcKgwqDCoCBjcmVhdGVfcGdk X21hcHBpbmcodHJhbXBvbGluZV9wZ19kaXIsIFBBR0VfT0ZGU0VULAo+Pj4+PiArwqDCoMKgIGNy ZWF0ZV9wZ2RfbWFwcGluZyh0cmFtcG9saW5lX3BnX2Rpciwga2VybmVsX3ZpcnRfYWRkciwKPj4+ Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxvYWRfcGEsIFBHRElSX1NJWkUsIFBB R0VfS0VSTkVMX0VYRUMpOwo+Pj4+PiDCoCNlbmRpZgo+Pj4+Pgo+Pj4+PiDCoMKgwqDCoCAvKgo+ Pj4+PiAtwqDCoMKgwqAgKiBTZXR1cCBlYXJseSBQR0QgY292ZXJpbmcgZW50aXJlIGtlcm5lbCB3 aGljaCB3aWxsIGFsbG93cwo+Pj4+PiArwqDCoMKgwqAgKiBTZXR1cCBlYXJseSBQR0QgY292ZXJp bmcgZW50aXJlIGtlcm5lbCB3aGljaCB3aWxsIGFsbG93Cj4+Pj4+IMKgwqDCoMKgwqAgKiB1cyB0 byByZWFjaCBwYWdpbmdfaW5pdCgpLiBXZSBtYXAgYWxsIG1lbW9yeSBiYW5rcyBsYXRlcgo+Pj4+ PiDCoMKgwqDCoMKgICogaW4gc2V0dXBfdm1fZmluYWwoKSBiZWxvdy4KPj4+Pj4gwqDCoMKgwqDC oCAqLwo+Pj4+PiAtwqDCoMKgIGVuZF92YSA9IFBBR0VfT0ZGU0VUICsgbG9hZF9zejsKPj4+Pj4g LcKgwqDCoCBmb3IgKHZhID0gUEFHRV9PRkZTRVQ7IHZhIDwgZW5kX3ZhOyB2YSArPSBtYXBfc2l6 ZSkKPj4+Pj4gLcKgwqDCoMKgwqDCoMKgIGNyZWF0ZV9wZ2RfbWFwcGluZyhlYXJseV9wZ19kaXIs IHZhLAo+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxvYWRfcGEg KyAodmEgLSBQQUdFX09GRlNFVCksCj4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgbWFwX3NpemUsIFBBR0VfS0VSTkVMX0VYRUMpOwo+Pj4+PiArwqDCoMKgIGNyZWF0 ZV9rZXJuZWxfcGFnZV90YWJsZShlYXJseV9wZ19kaXIsIG1hcF9zaXplKTsKPj4+Pj4KPj4+Pj4g wqDCoMKgwqAgLyogQ3JlYXRlIGZpeGVkIG1hcHBpbmcgZm9yIGVhcmx5IEZEVCBwYXJzaW5nICov Cj4+Pj4+IMKgwqDCoMKgIGVuZF92YSA9IF9fZml4X3RvX3ZpcnQoRklYX0ZEVCkgKyBGSVhfRkRU X1NJWkU7Cj4+Pj4+IEBAIC00NDEsNiArNDYwLDcgQEAgc3RhdGljIHZvaWQgX19pbml0IHNldHVw X3ZtX2ZpbmFsKHZvaWQpCj4+Pj4+IMKgwqDCoMKgIHVpbnRwdHJfdCB2YSwgbWFwX3NpemU7Cj4+ Pj4+IMKgwqDCoMKgIHBoeXNfYWRkcl90IHBhLCBzdGFydCwgZW5kOwo+Pj4+PiDCoMKgwqDCoCBz dHJ1Y3QgbWVtYmxvY2tfcmVnaW9uICpyZWc7Cj4+Pj4+ICvCoMKgwqAgc3RhdGljIHN0cnVjdCB2 bV9zdHJ1Y3Qgdm1fa2VybmVsID0geyAwIH07Cj4+Pj4+Cj4+Pj4+IMKgwqDCoMKgIC8qIFNldCBt bXVfZW5hYmxlZCBmbGFnICovCj4+Pj4+IMKgwqDCoMKgIG1tdV9lbmFibGVkID0gdHJ1ZTsKPj4+ Pj4gQEAgLTQ2NywxMCArNDg3LDIyIEBAIHN0YXRpYyB2b2lkIF9faW5pdCBzZXR1cF92bV9maW5h bCh2b2lkKQo+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgIGZvciAocGEgPSBzdGFydDsgcGEgPCBlbmQ7 IHBhICs9IG1hcF9zaXplKSB7Cj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2YSA9ICh1 aW50cHRyX3QpX192YShwYSk7Cj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjcmVhdGVf cGdkX21hcHBpbmcoc3dhcHBlcl9wZ19kaXIsIHZhLCBwYSwKPj4+Pj4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1hcF9zaXplLCBQQUdFX0tFUk5FTF9FWEVD KTsKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1h cF9zaXplLCBQQUdFX0tFUk5FTCk7Cj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqAgfQo+Pj4+PiDCoMKg wqDCoCB9Cj4+Pj4+Cj4+Pj4+ICvCoMKgwqAgLyogTWFwIHRoZSBrZXJuZWwgKi8KPj4+Pj4gK8Kg wqDCoCBjcmVhdGVfa2VybmVsX3BhZ2VfdGFibGUoc3dhcHBlcl9wZ19kaXIsIFBNRF9TSVpFKTsK Pj4+Pj4gKwo+Pj4+PiArwqDCoMKgIC8qIFJlc2VydmUgdGhlIHZtYWxsb2MgYXJlYSBvY2N1cGll ZCBieSB0aGUga2VybmVsICovCj4+Pj4+ICvCoMKgwqAgdm1fa2VybmVsLmFkZHIgPSAodm9pZCAq KWtlcm5lbF92aXJ0X2FkZHI7Cj4+Pj4+ICvCoMKgwqAgdm1fa2VybmVsLnBoeXNfYWRkciA9IGxv YWRfcGE7Cj4+Pj4+ICvCoMKgwqAgdm1fa2VybmVsLnNpemUgPSAobG9hZF9zeiArIFBNRF9TSVpF IC0gMSkgJiB+KFBNRF9TSVpFIC0gMSk7Cj4+Pj4+ICvCoMKgwqAgdm1fa2VybmVsLmZsYWdzID0g Vk1fTUFQIHwgVk1fTk9fR1VBUkQ7Cj4+Pj4+ICvCoMKgwqAgdm1fa2VybmVsLmNhbGxlciA9IF9f YnVpbHRpbl9yZXR1cm5fYWRkcmVzcygwKTsKPj4+Pj4gKwo+Pj4+PiArwqDCoMKgIHZtX2FyZWFf YWRkX2Vhcmx5KCZ2bV9rZXJuZWwpOwo+Pj4+PiArCj4+Pj4+IMKgwqDCoMKgIC8qIENsZWFyIGZp eG1hcCBQVEUgYW5kIFBNRCBtYXBwaW5ncyAqLwo+Pj4+PiDCoMKgwqDCoCBjbGVhcl9maXhtYXAo RklYX1BURSk7Cj4+Pj4+IMKgwqDCoMKgIGNsZWFyX2ZpeG1hcChGSVhfUE1EKTsKPj4+Pj4gZGlm ZiAtLWdpdCBhL2FyY2gvcmlzY3YvbW0vcGh5c2FkZHIuYyBiL2FyY2gvcmlzY3YvbW0vcGh5c2Fk ZHIuYwo+Pj4+PiBpbmRleCBlOGU0ZGNkMzlmZWQuLjM1NzAzZDVlZjVmZCAxMDA2NDQKPj4+Pj4g LS0tIGEvYXJjaC9yaXNjdi9tbS9waHlzYWRkci5jCj4+Pj4+ICsrKyBiL2FyY2gvcmlzY3YvbW0v cGh5c2FkZHIuYwo+Pj4+PiBAQCAtMjMsNyArMjMsNyBAQCBFWFBPUlRfU1lNQk9MKF9fdmlydF90 b19waHlzKTsKPj4+Pj4KPj4+Pj4gwqBwaHlzX2FkZHJfdCBfX3BoeXNfYWRkcl9zeW1ib2wodW5z aWduZWQgbG9uZyB4KQo+Pj4+PiDCoHsKPj4+Pj4gLcKgwqDCoCB1bnNpZ25lZCBsb25nIGtlcm5l bF9zdGFydCA9ICh1bnNpZ25lZCBsb25nKVBBR0VfT0ZGU0VUOwo+Pj4+PiArwqDCoMKgIHVuc2ln bmVkIGxvbmcga2VybmVsX3N0YXJ0ID0gKHVuc2lnbmVkIGxvbmcpa2VybmVsX3ZpcnRfYWRkcjsK Pj4+Pj4gwqDCoMKgwqAgdW5zaWduZWQgbG9uZyBrZXJuZWxfZW5kID0gKHVuc2lnbmVkIGxvbmcp X2VuZDsKPj4+Pj4KPj4+Pj4gwqDCoMKgwqAgLyoKPj4+Cj4+PiBBbGV4CgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1yaXNjdiBtYWlsaW5nIGxp c3QKbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFk Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJpc2N2Cg==