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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 5EC02ECAAD3 for ; Fri, 9 Sep 2022 16:45:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc: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=eDTWaO2Dqc9bbvXex6o4uemp5bPKK4mmeF+IohbZDS8=; b=YgKSVRRGdGOXpq 2peRwrB7IIlll+kvccdrMKgjiAuqnVog1INv9RqbdtM2bxZiVIAOc/kPY84S6vUQbJHnOGKT3ylPb hMpSVCsyjG8KWvB0FCb+IwOhba6Be18CN/zdqMDsLHtRcFcBAMMC9lWgFzeBEemUoLybQ3Tqs2GFm AWx7s2F+MYoypIH7nRmiKpMgUvDStdceYQJX7tf7YSd6rmW6bIatMtM2ojRyOJ5HFzcFqWqI5jmGy XSKTgdZIoxNPKWCMvQ68GTiti2fFTNQDjzLu4Tf9vDuTys840iD4r8R8+8NaQiff8cw7HeZwDmQWf Xl8EPvD01E6YkiJFZ2Aw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oWh6d-000QvK-Kh; Fri, 09 Sep 2022 16:43:51 +0000 Received: from mail-yb1-xb29.google.com ([2607:f8b0:4864:20::b29]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oWh6W-000Qrc-Ps for linux-arm-kernel@lists.infradead.org; Fri, 09 Sep 2022 16:43:49 +0000 Received: by mail-yb1-xb29.google.com with SMTP id b136so3535330yba.2 for ; Fri, 09 Sep 2022 09:43:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date; bh=zVo1N+OZnFVfIJwv+ipJHgwVNWm7KzUfzI45rGYLygU=; b=c67hYDuq5m4Qp+tVTZPRjetoFVWgzJ0WIEDHxLCTqCZTHrC8mxvCnHBn6STi0dsMZI 96Hl+qc/ASrPMenhd3AwqU1xJjZGt0xQBbJo5sf+lImH7e2GrkHQiyfjART8rkzJoli4 KvwghLvJAfA5ltuMBynJuWRARUTd97IoY4SHI38ZenZzcnWQwQkrq3lT9OHAFMc+Hp0a 6oH5dUoKtz2OXk2nQnXRgioEbo4wS1OOSCIO4H0KEtxFxnwda/JBUxORLvfXSD8ahP6b t+b96r21QzKVe7mncMY/f75LIjrJZ4sgpJhqD8bsyFPD/UQncGd2NN+elMsH9jsropS6 kG4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date; bh=zVo1N+OZnFVfIJwv+ipJHgwVNWm7KzUfzI45rGYLygU=; b=AWiX9GRjn+EoZPwoasdXllIsmBzM4aMnldKpLYJoAdzF4ECQb7LOQqKge0bkekpXwm Q6Wxv6UeB2hymuPjzhp9xM80ITodt8cGub/6NqfYddQXikwQTVQiXty4OBX4eJNLRO1K RZP7nlxJ2Fz9TpDwjPcjjzmtPoAboJd1u34lr68wPv5coz8hDPL9C1YVrBPIwoj+qNqK Jcp6w+6nyFJ07mmYXolBfRlEgLV3YwgXHV6ByvksOTUSZR36hG5echjOXHAuova6TBde UBPuI207MjeMHPZOTgPUdWXVnAoQ55AbcDvQrjAH49Buhl/M08yQUuV0QI9ZwCTDlxRR sIAw== X-Gm-Message-State: ACgBeo0YgIoSouwcWx6E+xjfdRzu9JQKfmd8g4h19EvTqq3KRTW1lmQu n31ROM4K1J4AF+EkbjS9KIXG5Nh31HlsUG0eaMOhug== X-Google-Smtp-Source: AA6agR7nTf8A5/zXGRgH1lekU9FxJDnZpPQlgXDMhKy17CEDV6S1HsU/0EZV+xk8pFn3q0OBSF97u29G8Q8QzuDTRfY= X-Received: by 2002:a25:424a:0:b0:6a9:2954:87fd with SMTP id p71-20020a25424a000000b006a9295487fdmr12200222yba.340.1662741823433; Fri, 09 Sep 2022 09:43:43 -0700 (PDT) MIME-Version: 1.0 References: <20220901173516.702122-1-surenb@google.com> <20220901173516.702122-14-surenb@google.com> <667ad41f-21af-ccc8-be7b-7e6c49930195@linux.ibm.com> In-Reply-To: <667ad41f-21af-ccc8-be7b-7e6c49930195@linux.ibm.com> From: Suren Baghdasaryan Date: Fri, 9 Sep 2022 09:43:32 -0700 Message-ID: Subject: Re: [RFC PATCH RESEND 13/28] mm: conditionally mark VMA as locked in free_pgtables and unmap_page_range To: Laurent Dufour Cc: akpm@linux-foundation.org, michel@lespinasse.org, jglisse@google.com, mhocko@suse.com, vbabka@suse.cz, hannes@cmpxchg.org, mgorman@suse.de, dave@stgolabs.net, willy@infradead.org, liam.howlett@oracle.com, peterz@infradead.org, laurent.dufour@fr.ibm.com, paulmck@kernel.org, luto@kernel.org, songliubraving@fb.com, peterx@redhat.com, david@redhat.com, dhowells@redhat.com, hughd@google.com, bigeasy@linutronix.de, kent.overstreet@linux.dev, rientjes@google.com, axelrasmussen@google.com, joelaf@google.com, minchan@google.com, kernel-team@android.com, linux-mm@kvack.org, linux-arm-kernel@lists.infradead.org, linuxppc-dev@lists.ozlabs.org, x86@kernel.org, linux-kernel@vger.kernel.org X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220909_094344_879546_AA612648 X-CRM114-Status: GOOD ( 31.87 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gRnJpLCBTZXAgOSwgMjAyMiBhdCAzOjMzIEFNIExhdXJlbnQgRHVmb3VyIDxsZHVmb3VyQGxp bnV4LmlibS5jb20+IHdyb3RlOgo+Cj4gTGUgMDEvMDkvMjAyMiDDoCAxOTozNSwgU3VyZW4gQmFn aGRhc2FyeWFuIGEgw6ljcml0IDoKPiA+IGZyZWVfcGd0YWJsZXMgYW5kIHVubWFwX3BhZ2VfcmFu Z2UgZnVuY3Rpb25zIGNhbiBiZSBjYWxsZWQgd2l0aCBtbWFwX2xvY2sKPiA+IGhlbGQgZm9yIHdy aXRlIChlLmcuIGluIG1tYXBfcmVnaW9uKSwgaGVsZCBmb3IgcmVhZCAoZS5nIGluCj4gPiBtYWR2 aXNlX3BhZ2VvdXQpIG9yIG5vdCBoZWxkIGF0IGFsbCAoZS5nIGluIG1hZHZpc2VfcmVtb3ZlIG1p Z2h0Cj4gPiBkcm9wIG1tYXBfbG9jayBiZWZvcmUgY2FsbGluZyB2ZnNfZmFsbG9jYXRlLCB3aGlj aCBlbmRzIHVwIGNhbGxpbmcKPiA+IHVubWFwX3BhZ2VfcmFuZ2UpLgo+ID4gUHJvdmlkZSBmcmVl X3BndGFibGVzIGFuZCB1bm1hcF9wYWdlX3JhbmdlIHdpdGggYWRkaXRpb25hbCBhcmd1bWVudAo+ ID4gaW5kaWNhdGluZyB3aGV0aGVyIHRvIG1hcmsgdGhlIFZNQSBhcyBsb2NrZWQgb3Igbm90IGJh c2VkIG9uIHRoZSB1c2FnZS4KPiA+IFRoZSBwYXJhbWV0ZXIgaXMgc2V0IGJhc2VkIG9uIHdoZXRo ZXIgbW1hcF9sb2NrIGlzIGhlbGQgaW4gd3JpdGUgbW9kZQo+ID4gZHVyaW5nIHRoZSBjYWxsLiBU aGlzIGVuc3VyZXMgbm8gY2hhbmdlIGluIGJlaGF2aW9yIGJldHdlZW4gbW1hcF9sb2NrCj4gPiBh bmQgcGVyLXZtYSBsb2Nrcy4KPiA+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBTdXJlbiBCYWdoZGFzYXJ5 YW4gPHN1cmVuYkBnb29nbGUuY29tPgo+ID4gLS0tCj4gPiAgaW5jbHVkZS9saW51eC9tbS5oIHwg IDIgKy0KPiA+ICBtbS9pbnRlcm5hbC5oICAgICAgfCAgNCArKy0tCj4gPiAgbW0vbWVtb3J5LmMg ICAgICAgIHwgMzIgKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KPiA+ICBtbS9tbWFw LmMgICAgICAgICAgfCAxNyArKysrKysrKystLS0tLS0tLQo+ID4gIG1tL29vbV9raWxsLmMgICAg ICB8ICAzICsrLQo+ID4gIDUgZmlsZXMgY2hhbmdlZCwgMzUgaW5zZXJ0aW9ucygrKSwgMjMgZGVs ZXRpb25zKC0pCj4gPgo+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW0uaCBiL2luY2x1 ZGUvbGludXgvbW0uaAo+ID4gaW5kZXggNDc2YmY5MzZjNWYwLi5kYzcyYmU5MjNlNWIgMTAwNjQ0 Cj4gPiAtLS0gYS9pbmNsdWRlL2xpbnV4L21tLmgKPiA+ICsrKyBiL2luY2x1ZGUvbGludXgvbW0u aAo+ID4gQEAgLTE4NzQsNyArMTg3NCw3IEBAIHZvaWQgemFwX3ZtYV9wdGVzKHN0cnVjdCB2bV9h cmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsCj4gPiAgdm9pZCB6YXBfcGFn ZV9yYW5nZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyZXNz LAo+ID4gICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzaXplKTsKPiA+ICB2b2lkIHVu bWFwX3ZtYXMoc3RydWN0IG1tdV9nYXRoZXIgKnRsYiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICpz dGFydF92bWEsCj4gPiAtICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVk IGxvbmcgZW5kKTsKPiA+ICsgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWdu ZWQgbG9uZyBlbmQsIGJvb2wgbG9ja192bWEpOwo+ID4KPiA+ICBzdHJ1Y3QgbW11X25vdGlmaWVy X3JhbmdlOwo+ID4KPiA+IGRpZmYgLS1naXQgYS9tbS9pbnRlcm5hbC5oIGIvbW0vaW50ZXJuYWwu aAo+ID4gaW5kZXggNzg1NDA5ODA1ZWQ3Li5lNmMwZjk5OWUwY2IgMTAwNjQ0Cj4gPiAtLS0gYS9t bS9pbnRlcm5hbC5oCj4gPiArKysgYi9tbS9pbnRlcm5hbC5oCj4gPiBAQCAtODUsMTQgKzg1LDE0 IEBAIGJvb2wgX19mb2xpb19lbmRfd3JpdGViYWNrKHN0cnVjdCBmb2xpbyAqZm9saW8pOwo+ID4g IHZvaWQgZGVhY3RpdmF0ZV9maWxlX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pOwo+ID4KPiA+ ICB2b2lkIGZyZWVfcGd0YWJsZXMoc3RydWN0IG1tdV9nYXRoZXIgKnRsYiwgc3RydWN0IHZtX2Fy ZWFfc3RydWN0ICpzdGFydF92bWEsCj4gPiAtICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxv b3IsIHVuc2lnbmVkIGxvbmcgY2VpbGluZyk7Cj4gPiArICAgICAgICAgICAgIHVuc2lnbmVkIGxv bmcgZmxvb3IsIHVuc2lnbmVkIGxvbmcgY2VpbGluZywgYm9vbCBsb2NrX3ZtYSk7Cj4gPiAgdm9p ZCBwbWRfaW5zdGFsbChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcG1kX3QgKnBtZCwgcGd0YWJsZV90 ICpwdGUpOwo+ID4KPiA+ICBzdHJ1Y3QgemFwX2RldGFpbHM7Cj4gPiAgdm9pZCB1bm1hcF9wYWdl X3JhbmdlKHN0cnVjdCBtbXVfZ2F0aGVyICp0bGIsCj4gPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKPiA+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBlbmQsCj4gPiAtICAgICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgemFwX2RldGFpbHMgKmRldGFpbHMpOwo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHphcF9kZXRhaWxzICpkZXRhaWxzLCBib29s IGxvY2tfdm1hKTsKPiA+Cj4gPiAgdm9pZCBwYWdlX2NhY2hlX3JhX29yZGVyKHN0cnVjdCByZWFk YWhlYWRfY29udHJvbCAqLCBzdHJ1Y3QgZmlsZV9yYV9zdGF0ZSAqLAo+ID4gICAgICAgICAgICAg ICB1bnNpZ25lZCBpbnQgb3JkZXIpOwo+ID4gZGlmZiAtLWdpdCBhL21tL21lbW9yeS5jIGIvbW0v bWVtb3J5LmMKPiA+IGluZGV4IDRiYTczZjVhYThiYi4uOWFjOTk0NGU4YzYyIDEwMDY0NAo+ID4g LS0tIGEvbW0vbWVtb3J5LmMKPiA+ICsrKyBiL21tL21lbW9yeS5jCj4gPiBAQCAtNDAzLDcgKzQw Myw3IEBAIHZvaWQgZnJlZV9wZ2RfcmFuZ2Uoc3RydWN0IG1tdV9nYXRoZXIgKnRsYiwKPiA+ICB9 Cj4gPgo+ID4gIHZvaWQgZnJlZV9wZ3RhYmxlcyhzdHJ1Y3QgbW11X2dhdGhlciAqdGxiLCBzdHJ1 Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKPiA+IC0gICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBm bG9vciwgdW5zaWduZWQgbG9uZyBjZWlsaW5nKQo+ID4gKyAgICAgICAgICAgICB1bnNpZ25lZCBs b25nIGZsb29yLCB1bnNpZ25lZCBsb25nIGNlaWxpbmcsIGJvb2wgbG9ja192bWEpCj4gPiAgewo+ ID4gICAgICAgd2hpbGUgKHZtYSkgewo+ID4gICAgICAgICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9z dHJ1Y3QgKm5leHQgPSB2bWEtPnZtX25leHQ7Cj4gPiBAQCAtNDEzLDYgKzQxMyw4IEBAIHZvaWQg ZnJlZV9wZ3RhYmxlcyhzdHJ1Y3QgbW11X2dhdGhlciAqdGxiLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1 Y3QgKnZtYSwKPiA+ICAgICAgICAgICAgICAgICogSGlkZSB2bWEgZnJvbSBybWFwIGFuZCB0cnVu Y2F0ZV9wYWdlY2FjaGUgYmVmb3JlIGZyZWVpbmcKPiA+ICAgICAgICAgICAgICAgICogcGd0YWJs ZXMKPiA+ICAgICAgICAgICAgICAgICovCj4gPiArICAgICAgICAgICAgIGlmIChsb2NrX3ZtYSkK PiA+ICsgICAgICAgICAgICAgICAgICAgICB2bWFfbWFya19sb2NrZWQodm1hKTsKPiA+ICAgICAg ICAgICAgICAgdW5saW5rX2Fub25fdm1hcyh2bWEpOwo+ID4gICAgICAgICAgICAgICB1bmxpbmtf ZmlsZV92bWEodm1hKTsKPiA+Cj4gPiBAQCAtNDI3LDYgKzQyOSw4IEBAIHZvaWQgZnJlZV9wZ3Rh YmxlcyhzdHJ1Y3QgbW11X2dhdGhlciAqdGxiLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwK PiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgIWlzX3ZtX2h1Z2V0bGJfcGFnZShu ZXh0KSkgewo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm1hID0gbmV4dDsKPiA+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgPSB2bWEtPnZtX25leHQ7Cj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobG9ja192bWEpCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZtYV9tYXJrX2xvY2tlZCh2bWEpOwo+ID4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5saW5rX2Fub25fdm1hcyh2bWEpOwo+ID4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5saW5rX2ZpbGVfdm1hKHZtYSk7Cj4gPiAgICAg ICAgICAgICAgICAgICAgICAgfQo+ID4gQEAgLTE2MzEsMTIgKzE2MzUsMTYgQEAgc3RhdGljIGlu bGluZSB1bnNpZ25lZCBsb25nIHphcF9wNGRfcmFuZ2Uoc3RydWN0IG1tdV9nYXRoZXIgKnRsYiwK PiA+ICB2b2lkIHVubWFwX3BhZ2VfcmFuZ2Uoc3RydWN0IG1tdV9nYXRoZXIgKnRsYiwKPiA+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAo+ID4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBs b25nIGVuZCwKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB6YXBfZGV0YWls cyAqZGV0YWlscykKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB6YXBfZGV0 YWlscyAqZGV0YWlscywKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbG9ja192 bWEpCj4gPiAgewo+ID4gICAgICAgcGdkX3QgKnBnZDsKPiA+ICAgICAgIHVuc2lnbmVkIGxvbmcg bmV4dDsKPiA+Cj4gPiAgICAgICBCVUdfT04oYWRkciA+PSBlbmQpOwo+ID4gKyAgICAgaWYgKGxv Y2tfdm1hKQo+ID4gKyAgICAgICAgICAgICB2bWFfbWFya19sb2NrZWQodm1hKTsKPgo+IEknbSB3 b25kZXJpbmcgaWYgdGhhdCBpcyByZWFsbHkgbmVlZGVkIGhlcmUuCj4gVGhlIGZvbGxvd2luZyBw cm9jZXNzaW5nIGlzIG9ubHkgZGVhbGluZyB3aXRoIHRoZSBwYWdlIHRhYmxlIGVudHJpZXMuCj4g VG9kYXksIGlmIHRoYXQgY291bGQgYmUgY2FsbGVkIHdpdGhvdXQgaG9sZGluZyB0aGUgbW1hcF9s b2NrLCB0aGF0IHNob3VsZAo+IGJlIHNhZmUgdG8gbm90IG1hcmsgdGhlIFZNQSBsb2NrZWQgKGlu ZGVlZCB0aGUgVk1BIGl0c2VsZiBpcyBub3QgaW1wYWN0ZWQpLgo+Cj4gVGh1cyB1bm1hcF9zaW5n bGVfdm1hKCkgYmVsb3cgbm8gbmVlZCB0byBiZSB0b3VjaGVkLCBhbmQgaXRzIGNhbGxlcnMuCj4K PiBJbiB0aGUgY2FzZSBhIGxvY2tpbmcgaXMgcmVxdWlyZWQsIEkgdGhpbmsgdGhlcmUgaXMgYSBy ZWFsIHBvdGVudGlhbCBpc3N1ZQo+IGluIHRoZSBjdXJyZW50IGtlcm5lbC4KCklJVUMgeW91IGFy ZSBzdWdnZXN0aW5nIHRvIGRvIHRoZSBsb2NraW5nIGF0IHRoZSBjYWxsZXJzIHdobyBuZWVkIGl0 PwpJZiBzbywgSSdsbCBuZWVkIHRvIGNhcmVmdWxseSByZXZpZXcgdGhlIGNhbGxlcnMgYmVmb3Jl IGNoYW5naW5nIHRoaXMKYmVjYXVzZSB0aGUgdGltaW5nIHdoZW4gd2UgbG9jayBtaWdodCBtYWtl IGEgZGlmZmVyZW5jZSBoZXJlLgoKPgo+ID4gKwo+ID4gICAgICAgdGxiX3N0YXJ0X3ZtYSh0bGIs IHZtYSk7Cj4gPiAgICAgICBwZ2QgPSBwZ2Rfb2Zmc2V0KHZtYS0+dm1fbW0sIGFkZHIpOwo+ID4g ICAgICAgZG8gewo+ID4gQEAgLTE2NTIsNyArMTY2MCw3IEBAIHZvaWQgdW5tYXBfcGFnZV9yYW5n ZShzdHJ1Y3QgbW11X2dhdGhlciAqdGxiLAo+ID4gIHN0YXRpYyB2b2lkIHVubWFwX3NpbmdsZV92 bWEoc3RydWN0IG1tdV9nYXRoZXIgKnRsYiwKPiA+ICAgICAgICAgICAgICAgc3RydWN0IHZtX2Fy ZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgc3RhcnRfYWRkciwKPiA+ICAgICAgICAgICAg ICAgdW5zaWduZWQgbG9uZyBlbmRfYWRkciwKPiA+IC0gICAgICAgICAgICAgc3RydWN0IHphcF9k ZXRhaWxzICpkZXRhaWxzKQo+ID4gKyAgICAgICAgICAgICBzdHJ1Y3QgemFwX2RldGFpbHMgKmRl dGFpbHMsIGJvb2wgbG9ja192bWEpCj4gPiAgewo+ID4gICAgICAgdW5zaWduZWQgbG9uZyBzdGFy dCA9IG1heCh2bWEtPnZtX3N0YXJ0LCBzdGFydF9hZGRyKTsKPiA+ICAgICAgIHVuc2lnbmVkIGxv bmcgZW5kOwo+ID4gQEAgLTE2OTEsNyArMTY5OSw3IEBAIHN0YXRpYyB2b2lkIHVubWFwX3Npbmds ZV92bWEoc3RydWN0IG1tdV9nYXRoZXIgKnRsYiwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlfbW1hcF91bmxvY2tfd3JpdGUodm1hLT52bV9maWxlLT5mX21hcHBpbmcpOwo+ID4g ICAgICAgICAgICAgICAgICAgICAgIH0KPiA+ICAgICAgICAgICAgICAgfSBlbHNlCj4gPiAtICAg ICAgICAgICAgICAgICAgICAgdW5tYXBfcGFnZV9yYW5nZSh0bGIsIHZtYSwgc3RhcnQsIGVuZCwg ZGV0YWlscyk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgdW5tYXBfcGFnZV9yYW5nZSh0bGIs IHZtYSwgc3RhcnQsIGVuZCwgZGV0YWlscywgbG9ja192bWEpOwo+ID4gICAgICAgfQo+ID4gIH0K PiA+Cj4gPiBAQCAtMTcxNSw3ICsxNzIzLDcgQEAgc3RhdGljIHZvaWQgdW5tYXBfc2luZ2xlX3Zt YShzdHJ1Y3QgbW11X2dhdGhlciAqdGxiLAo+ID4gICAqLwo+ID4gIHZvaWQgdW5tYXBfdm1hcyhz dHJ1Y3QgbW11X2dhdGhlciAqdGxiLAo+ID4gICAgICAgICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9z dHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBzdGFydF9hZGRyLAo+ID4gLSAgICAgICAgICAgICB1 bnNpZ25lZCBsb25nIGVuZF9hZGRyKQo+ID4gKyAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGVu ZF9hZGRyLCBib29sIGxvY2tfdm1hKQo+ID4gIHsKPiA+ICAgICAgIHN0cnVjdCBtbXVfbm90aWZp ZXJfcmFuZ2UgcmFuZ2U7Cj4gPiAgICAgICBzdHJ1Y3QgemFwX2RldGFpbHMgZGV0YWlscyA9IHsK PiA+IEBAIC0xNzI4LDcgKzE3MzYsOCBAQCB2b2lkIHVubWFwX3ZtYXMoc3RydWN0IG1tdV9nYXRo ZXIgKnRsYiwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2FkZHIsIGVu ZF9hZGRyKTsKPiA+ICAgICAgIG1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KCZy YW5nZSk7Cj4gPiAgICAgICBmb3IgKCA7IHZtYSAmJiB2bWEtPnZtX3N0YXJ0IDwgZW5kX2FkZHI7 IHZtYSA9IHZtYS0+dm1fbmV4dCkKPiA+IC0gICAgICAgICAgICAgdW5tYXBfc2luZ2xlX3ZtYSh0 bGIsIHZtYSwgc3RhcnRfYWRkciwgZW5kX2FkZHIsICZkZXRhaWxzKTsKPiA+ICsgICAgICAgICAg ICAgdW5tYXBfc2luZ2xlX3ZtYSh0bGIsIHZtYSwgc3RhcnRfYWRkciwgZW5kX2FkZHIsICZkZXRh aWxzLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2tfdm1hKTsKPiA+ICAg ICAgIG1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX2VuZCgmcmFuZ2UpOwo+ID4gIH0KPiA+ Cj4gPiBAQCAtMTc1Myw3ICsxNzYyLDcgQEAgdm9pZCB6YXBfcGFnZV9yYW5nZShzdHJ1Y3Qgdm1f YXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBzdGFydCwKPiA+ICAgICAgIHVwZGF0ZV9o aXdhdGVyX3Jzcyh2bWEtPnZtX21tKTsKPiA+ICAgICAgIG1tdV9ub3RpZmllcl9pbnZhbGlkYXRl X3JhbmdlX3N0YXJ0KCZyYW5nZSk7Cj4gPiAgICAgICBmb3IgKCA7IHZtYSAmJiB2bWEtPnZtX3N0 YXJ0IDwgcmFuZ2UuZW5kOyB2bWEgPSB2bWEtPnZtX25leHQpCj4gPiAtICAgICAgICAgICAgIHVu bWFwX3NpbmdsZV92bWEoJnRsYiwgdm1hLCBzdGFydCwgcmFuZ2UuZW5kLCBOVUxMKTsKPiA+ICsg ICAgICAgICAgICAgdW5tYXBfc2luZ2xlX3ZtYSgmdGxiLCB2bWEsIHN0YXJ0LCByYW5nZS5lbmQs IE5VTEwsIGZhbHNlKTsKPiA+ICAgICAgIG1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3JhbmdlX2Vu ZCgmcmFuZ2UpOwo+ID4gICAgICAgdGxiX2ZpbmlzaF9tbXUoJnRsYik7Cj4gPiAgfQo+ID4gQEAg LTE3NjgsNyArMTc3Nyw3IEBAIHZvaWQgemFwX3BhZ2VfcmFuZ2Uoc3RydWN0IHZtX2FyZWFfc3Ry dWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgc3RhcnQsCj4gPiAgICogVGhlIHJhbmdlIG11c3QgZml0 IGludG8gb25lIFZNQS4KPiA+ICAgKi8KPiA+ICBzdGF0aWMgdm9pZCB6YXBfcGFnZV9yYW5nZV9z aW5nbGUoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywK PiA+IC0gICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzaXplLCBzdHJ1Y3QgemFwX2RldGFpbHMg KmRldGFpbHMpCj4gPiArICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSwgc3RydWN0IHph cF9kZXRhaWxzICpkZXRhaWxzLCBib29sIGxvY2tfdm1hKQo+ID4gIHsKPiA+ICAgICAgIHN0cnVj dCBtbXVfbm90aWZpZXJfcmFuZ2UgcmFuZ2U7Cj4gPiAgICAgICBzdHJ1Y3QgbW11X2dhdGhlciB0 bGI7Cj4gPiBAQCAtMTc3OSw3ICsxNzg4LDcgQEAgc3RhdGljIHZvaWQgemFwX3BhZ2VfcmFuZ2Vf c2luZ2xlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIKPiA+ ICAgICAgIHRsYl9nYXRoZXJfbW11KCZ0bGIsIHZtYS0+dm1fbW0pOwo+ID4gICAgICAgdXBkYXRl X2hpd2F0ZXJfcnNzKHZtYS0+dm1fbW0pOwo+ID4gICAgICAgbW11X25vdGlmaWVyX2ludmFsaWRh dGVfcmFuZ2Vfc3RhcnQoJnJhbmdlKTsKPiA+IC0gICAgIHVubWFwX3NpbmdsZV92bWEoJnRsYiwg dm1hLCBhZGRyZXNzLCByYW5nZS5lbmQsIGRldGFpbHMpOwo+ID4gKyAgICAgdW5tYXBfc2luZ2xl X3ZtYSgmdGxiLCB2bWEsIGFkZHJlc3MsIHJhbmdlLmVuZCwgZGV0YWlscywgbG9ja192bWEpOwo+ ID4gICAgICAgbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKCZyYW5nZSk7Cj4gPiAg ICAgICB0bGJfZmluaXNoX21tdSgmdGxiKTsKPiA+ICB9Cj4gPiBAQCAtMTgwMiw3ICsxODExLDcg QEAgdm9pZCB6YXBfdm1hX3B0ZXMoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVk IGxvbmcgYWRkcmVzcywKPiA+ICAgICAgICAgICAgICAgICAgICAgICAhKHZtYS0+dm1fZmxhZ3Mg JiBWTV9QRk5NQVApKQo+ID4gICAgICAgICAgICAgICByZXR1cm47Cj4gPgo+ID4gLSAgICAgemFw X3BhZ2VfcmFuZ2Vfc2luZ2xlKHZtYSwgYWRkcmVzcywgc2l6ZSwgTlVMTCk7Cj4gPiArICAgICB6 YXBfcGFnZV9yYW5nZV9zaW5nbGUodm1hLCBhZGRyZXNzLCBzaXplLCBOVUxMLCB0cnVlKTsKPiA+ ICB9Cj4gPiAgRVhQT1JUX1NZTUJPTF9HUEwoemFwX3ZtYV9wdGVzKTsKPiA+Cj4gPiBAQCAtMzQ4 Myw3ICszNDkyLDggQEAgc3RhdGljIHZvaWQgdW5tYXBfbWFwcGluZ19yYW5nZV92bWEoc3RydWN0 IHZtX2FyZWFfc3RydWN0ICp2bWEsCj4gPiAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3Rh cnRfYWRkciwgdW5zaWduZWQgbG9uZyBlbmRfYWRkciwKPiA+ICAgICAgICAgICAgICAgc3RydWN0 IHphcF9kZXRhaWxzICpkZXRhaWxzKQo+ID4gIHsKPiA+IC0gICAgIHphcF9wYWdlX3JhbmdlX3Np bmdsZSh2bWEsIHN0YXJ0X2FkZHIsIGVuZF9hZGRyIC0gc3RhcnRfYWRkciwgZGV0YWlscyk7Cj4g PiArICAgICB6YXBfcGFnZV9yYW5nZV9zaW5nbGUodm1hLCBzdGFydF9hZGRyLCBlbmRfYWRkciAt IHN0YXJ0X2FkZHIsIGRldGFpbHMsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFs c2UpOwo+ID4gIH0KPiA+Cj4gPiAgc3RhdGljIGlubGluZSB2b2lkIHVubWFwX21hcHBpbmdfcmFu Z2VfdHJlZShzdHJ1Y3QgcmJfcm9vdF9jYWNoZWQgKnJvb3QsCj4gPiBkaWZmIC0tZ2l0IGEvbW0v bW1hcC5jIGIvbW0vbW1hcC5jCj4gPiBpbmRleCAxMjE1NDRmZDkwZGUuLjA5NDY3OGI0NDM0YiAx MDA2NDQKPiA+IC0tLSBhL21tL21tYXAuYwo+ID4gKysrIGIvbW0vbW1hcC5jCj4gPiBAQCAtNzks NyArNzksNyBAQCBjb3JlX3BhcmFtKGlnbm9yZV9ybGltaXRfZGF0YSwgaWdub3JlX3JsaW1pdF9k YXRhLCBib29sLCAwNjQ0KTsKPiA+Cj4gPiAgc3RhdGljIHZvaWQgdW5tYXBfcmVnaW9uKHN0cnVj dCBtbV9zdHJ1Y3QgKm1tLAo+ID4gICAgICAgICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Qg KnZtYSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICpwcmV2LAo+ID4gLSAgICAgICAgICAgICB1bnNp Z25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCk7Cj4gPiArICAgICAgICAgICAgIHVu c2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLCBib29sIGxvY2tfdm1hKTsKPiA+ Cj4gPiAgc3RhdGljIHBncHJvdF90IHZtX3BncHJvdF9tb2RpZnkocGdwcm90X3Qgb2xkcHJvdCwg dW5zaWduZWQgbG9uZyB2bV9mbGFncykKPiA+ICB7Cj4gPiBAQCAtMTg2Niw3ICsxODY2LDcgQEAg dW5zaWduZWQgbG9uZyBtbWFwX3JlZ2lvbihzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgbG9u ZyBhZGRyLAo+ID4gICAgICAgdm1hLT52bV9maWxlID0gTlVMTDsKPiA+Cj4gPiAgICAgICAvKiBV bmRvIGFueSBwYXJ0aWFsIG1hcHBpbmcgZG9uZSBieSBhIGRldmljZSBkcml2ZXIuICovCj4gPiAt ICAgICB1bm1hcF9yZWdpb24obW0sIHZtYSwgcHJldiwgdm1hLT52bV9zdGFydCwgdm1hLT52bV9l bmQpOwo+ID4gKyAgICAgdW5tYXBfcmVnaW9uKG1tLCB2bWEsIHByZXYsIHZtYS0+dm1fc3RhcnQs IHZtYS0+dm1fZW5kLCB0cnVlKTsKPiA+ICAgICAgIGlmICh2bV9mbGFncyAmIFZNX1NIQVJFRCkK PiA+ICAgICAgICAgICAgICAgbWFwcGluZ191bm1hcF93cml0YWJsZShmaWxlLT5mX21hcHBpbmcp Owo+ID4gIGZyZWVfdm1hOgo+ID4gQEAgLTI2MjYsNyArMjYyNiw3IEBAIHN0YXRpYyB2b2lkIHJl bW92ZV92bWFfbGlzdChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgc3RydWN0IHZtX2FyZWFfc3RydWN0 ICp2bWEpCj4gPiAgICovCj4gPiAgc3RhdGljIHZvaWQgdW5tYXBfcmVnaW9uKHN0cnVjdCBtbV9z dHJ1Y3QgKm1tLAo+ID4gICAgICAgICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwg c3RydWN0IHZtX2FyZWFfc3RydWN0ICpwcmV2LAo+ID4gLSAgICAgICAgICAgICB1bnNpZ25lZCBs b25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCkKPiA+ICsgICAgICAgICAgICAgdW5zaWduZWQg bG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIGJvb2wgbG9ja192bWEpCj4gPiAgewo+ID4g ICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICpuZXh0ID0gdm1hX25leHQobW0sIHByZXYpOwo+ ID4gICAgICAgc3RydWN0IG1tdV9nYXRoZXIgdGxiOwo+ID4gQEAgLTI2MzQsOSArMjYzNCwxMCBA QCBzdGF0aWMgdm9pZCB1bm1hcF9yZWdpb24oc3RydWN0IG1tX3N0cnVjdCAqbW0sCj4gPiAgICAg ICBscnVfYWRkX2RyYWluKCk7Cj4gPiAgICAgICB0bGJfZ2F0aGVyX21tdSgmdGxiLCBtbSk7Cj4g PiAgICAgICB1cGRhdGVfaGl3YXRlcl9yc3MobW0pOwo+ID4gLSAgICAgdW5tYXBfdm1hcygmdGxi LCB2bWEsIHN0YXJ0LCBlbmQpOwo+ID4gKyAgICAgdW5tYXBfdm1hcygmdGxiLCB2bWEsIHN0YXJ0 LCBlbmQsIGxvY2tfdm1hKTsKPiA+ICAgICAgIGZyZWVfcGd0YWJsZXMoJnRsYiwgdm1hLCBwcmV2 ID8gcHJldi0+dm1fZW5kIDogRklSU1RfVVNFUl9BRERSRVNTLAo+ID4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG5leHQgPyBuZXh0LT52bV9zdGFydCA6IFVTRVJfUEdUQUJMRVNfQ0VJ TElORyk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCA/IG5leHQtPnZt X3N0YXJ0IDogVVNFUl9QR1RBQkxFU19DRUlMSU5HLAo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxvY2tfdm1hKTsKPiA+ICAgICAgIHRsYl9maW5pc2hfbW11KCZ0bGIpOwo+ID4g IH0KPiA+Cj4gPiBAQCAtMjg0OSw3ICsyODUwLDcgQEAgaW50IF9fZG9fbXVubWFwKHN0cnVjdCBt bV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0LCBzaXplX3QgbGVuLAo+ID4gICAgICAg aWYgKGRvd25ncmFkZSkKPiA+ICAgICAgICAgICAgICAgbW1hcF93cml0ZV9kb3duZ3JhZGUobW0p Owo+ID4KPiA+IC0gICAgIHVubWFwX3JlZ2lvbihtbSwgdm1hLCBwcmV2LCBzdGFydCwgZW5kKTsK PiA+ICsgICAgIHVubWFwX3JlZ2lvbihtbSwgdm1hLCBwcmV2LCBzdGFydCwgZW5kLCAhZG93bmdy YWRlKTsKPiA+Cj4gPiAgICAgICAvKiBGaXggdXAgYWxsIG90aGVyIFZNIGluZm9ybWF0aW9uICov Cj4gPiAgICAgICByZW1vdmVfdm1hX2xpc3QobW0sIHZtYSk7Cj4gPiBAQCAtMzEyOSw4ICszMTMw LDggQEAgdm9pZCBleGl0X21tYXAoc3RydWN0IG1tX3N0cnVjdCAqbW0pCj4gPiAgICAgICB0bGJf Z2F0aGVyX21tdV9mdWxsbW0oJnRsYiwgbW0pOwo+ID4gICAgICAgLyogdXBkYXRlX2hpd2F0ZXJf cnNzKG1tKSBoZXJlPyBidXQgbm9ib2R5IHNob3VsZCBiZSBsb29raW5nICovCj4gPiAgICAgICAv KiBVc2UgLTEgaGVyZSB0byBlbnN1cmUgYWxsIFZNQXMgaW4gdGhlIG1tIGFyZSB1bm1hcHBlZCAq Lwo+ID4gLSAgICAgdW5tYXBfdm1hcygmdGxiLCB2bWEsIDAsIC0xKTsKPiA+IC0gICAgIGZyZWVf cGd0YWJsZXMoJnRsYiwgdm1hLCBGSVJTVF9VU0VSX0FERFJFU1MsIFVTRVJfUEdUQUJMRVNfQ0VJ TElORyk7Cj4gPiArICAgICB1bm1hcF92bWFzKCZ0bGIsIHZtYSwgMCwgLTEsIHRydWUpOwo+ID4g KyAgICAgZnJlZV9wZ3RhYmxlcygmdGxiLCB2bWEsIEZJUlNUX1VTRVJfQUREUkVTUywgVVNFUl9Q R1RBQkxFU19DRUlMSU5HLCB0cnVlKTsKPiA+ICAgICAgIHRsYl9maW5pc2hfbW11KCZ0bGIpOwo+ ID4KPiA+ICAgICAgIC8qIFdhbGsgdGhlIGxpc3QgYWdhaW4sIGFjdHVhbGx5IGNsb3NpbmcgYW5k IGZyZWVpbmcgaXQuICovCj4gPiBkaWZmIC0tZ2l0IGEvbW0vb29tX2tpbGwuYyBiL21tL29vbV9r aWxsLmMKPiA+IGluZGV4IDNjNmNmOWUzY2Q2Ni4uNmZmYTdjNTExYWEzIDEwMDY0NAo+ID4gLS0t IGEvbW0vb29tX2tpbGwuYwo+ID4gKysrIGIvbW0vb29tX2tpbGwuYwo+ID4gQEAgLTU0OSw3ICs1 NDksOCBAQCBib29sIF9fb29tX3JlYXBfdGFza19tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSkKPiA+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IGZhbHNlOwo+ID4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAg fQo+ID4gLSAgICAgICAgICAgICAgICAgICAgIHVubWFwX3BhZ2VfcmFuZ2UoJnRsYiwgdm1hLCBy YW5nZS5zdGFydCwgcmFuZ2UuZW5kLCBOVUxMKTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICB1 bm1hcF9wYWdlX3JhbmdlKCZ0bGIsIHZtYSwgcmFuZ2Uuc3RhcnQsIHJhbmdlLmVuZCwKPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIGZhbHNlKTsKPiA+ICAg ICAgICAgICAgICAgICAgICAgICBtbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9lbmQoJnJh bmdlKTsKPiA+ICAgICAgICAgICAgICAgICAgICAgICB0bGJfZmluaXNoX21tdSgmdGxiKTsKPiA+ ICAgICAgICAgICAgICAgfQo+Cj4gSSdtIHdvbmRlcmluZyBpZiB0aGUgVk1BIGxvY2tpbmcgc2hv dWxkIGJlIGRvbmUgaGVyZSBpbnN0ZWFkIG9mIGluc2lkZQo+IHVubWFwX3BhZ2VfcmFuZ2UoKSB3 aGljaCBpcyBub3QgcmVhbGx5IHRvdWNoaW5nIHRoZSBWTUEncyBmaWVsZHMuCj4KPiBIZXJlIHRo aXMgd291bGQgYmUgbmVlZGVkIGJlY2F1c2UgdGhlIHBhZ2UgZmF1bHQgaGFuZGxlciBtYXkgY2hl Y2sgdGhlCj4gTU1GX1VOU1RBQkxFIGZsYWcgYW5kIHRoZSBWTUEncyBsb2NraW5nIGJlZm9yZSB0 aGlzIGxvb3AgaXMgZW50ZXJlZCBieQo+IGFub3RoZXIgdGhyZWFkLgoKSG1tLiBJJ2xsIGRvdWJs ZS1jaGVjay4gQmVmb3JlIG15IHBhdGNoc2V0IF9fb29tX3JlYXBfdGFza19tbSBpcwpjYWxsZWQg d2l0aCBtbWFwX2xvY2sgaGVsZCBmb3IgcmVhZCwgdGhlcmVmb3JlIHRlY2huaWNhbGx5IGl0IGNh biByYWNlCndpdGggcGFnZSBmYXVsdCBoYW5kbGVycy4gVGhlcmUgbXVzdCBiZSBzb21ldGhpbmcg dGhhdCBtYWtlcyBpdCBzYWZlLgpXaWxsIHRyeSB0byBmaW5kIG91dCB3aGF0IGlzIHRoYXQgc29t ZXRoaW5nLi4uCgo+Cj4gLS0KPiBUbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMgZ3JvdXAgYW5kIHN0 b3AgcmVjZWl2aW5nIGVtYWlscyBmcm9tIGl0LCBzZW5kIGFuIGVtYWlsIHRvIGtlcm5lbC10ZWFt K3Vuc3Vic2NyaWJlQGFuZHJvaWQuY29tLgo+CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1h cm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcv bWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==