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=-10.8 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,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=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 8059CC4363C for ; Wed, 7 Oct 2020 09:07:39 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 E3C7920789 for ; Wed, 7 Oct 2020 09:07:38 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ukVJSeJ5" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E3C7920789 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 115216E250; Wed, 7 Oct 2020 09:07:38 +0000 (UTC) Received: from mail-qv1-xf41.google.com (mail-qv1-xf41.google.com [IPv6:2607:f8b0:4864:20::f41]) by gabe.freedesktop.org (Postfix) with ESMTPS id B18A46E249 for ; Wed, 7 Oct 2020 09:07:36 +0000 (UTC) Received: by mail-qv1-xf41.google.com with SMTP id q10so725761qvs.1 for ; Wed, 07 Oct 2020 02:07:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=reply-to:subject:to:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding:content-language; bh=P8xtJXUvCitzRo5DBcd3uQ1hVJ7OLu4HgDLmLQSp/sA=; b=ukVJSeJ5pbSpbxndWTbf5BSbEwHYkendKy8JZxZFnHjac1i8e1cNJT+BtouSBImHtS Fz075iPl58IVZamObWrdwX61MeFESLARhTViOcpb4EvOsPUyjeRaZjXwNsGkSvrn4mSv V+YFbNOvzM9nuoByitOODc4rup5Gk/oUXtzaC2Kvb6hUKZN0ITdlUT18sqgip/OKq3fF /kVooU10+UtspLMDoYM6XB1ZuO7UrfNasYUJUj33yCJbYr0fL8/t1vKJz4Bkc8AiJHjx f9t1feaDcHBEDifCPQ706ufeANnwQuBifUw5qzTIPzVHa4AY7r8II4uPT7PXl/GM7HQR dq7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:reply-to:subject:to:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=P8xtJXUvCitzRo5DBcd3uQ1hVJ7OLu4HgDLmLQSp/sA=; b=HN0Cn8NeEO9Ec1IDuMKW6oE7vif8QUX6B2hVZxVhvsu2wnS3AgI6P24dfWs2ocqttr rrwXczw5P6oEDie8tTbdE4cieZoVzqFSWqFCxJ1MxnwABlEselTtJjpY+tuF94sKTwbh gPp+lMgGWvhZCCSZAF58BX/Z5FzWmLK4PQkJRYppazNg9mwEhj/ea/v0bGCr/pV98ixL WKcqVJs3FNX+Gk9RsQkkho/EivGCbCDJTMoRcx0mRnwfbj5yqcLMaQdXjgHJQ0cUPmYw 39Z9glIK3TWD8vFVMUTp/yn3loPumS5r5eeapRdzKxt+yqnKn/FUkkIgyULPq6I08xWK BNhg== X-Gm-Message-State: AOAM5305KgPTs3SeSW0To07uNXHDRqX8cVxYxoaQvRgqmiV3Qd81rt3x gJv4Fmd6dl489z83Aa9kC3gEqx9CSVI= X-Google-Smtp-Source: ABdhPJyF3/wuHz4bExTJKhG942x8lvfDrcSFpdVnZjhPlskZaxKJCt60ahARr+YwpJ+l2W4u3atxag== X-Received: by 2002:ad4:51c6:: with SMTP id p6mr2285995qvq.18.1602061655642; Wed, 07 Oct 2020 02:07:35 -0700 (PDT) Received: from ?IPv6:2a02:908:1252:fb60:be8a:bd56:1f94:86e7? ([2a02:908:1252:fb60:be8a:bd56:1f94:86e7]) by smtp.gmail.com with ESMTPSA id h68sm967160qkf.30.2020.10.07.02.07.33 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 07 Oct 2020 02:07:35 -0700 (PDT) Subject: Re: [PATCH 8/8] drm/ttm: nuke caching placement flags To: "Ruhl, Michael J" , "dri-devel@lists.freedesktop.org" , "ray.huang@amd.com" , "airlied@gmail.com" , "daniel@ffwll.ch" References: <20201001112817.20967-1-christian.koenig@amd.com> <20201001112817.20967-8-christian.koenig@amd.com> <1146906eb78744b2a67ac7f72d707051@intel.com> From: =?UTF-8?Q?Christian_K=c3=b6nig?= Message-ID: <0f9b911a-c1f5-be11-7f49-376e672b9bac@gmail.com> Date: Wed, 7 Oct 2020 11:07:32 +0200 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: <1146906eb78744b2a67ac7f72d707051@intel.com> Content-Language: en-US X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: christian.koenig@amd.com Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" QW0gMDUuMTAuMjAgdW0gMTg6MTcgc2NocmllYiBSdWhsLCBNaWNoYWVsIEo6Cj4+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tCj4+IEZyb206IGRyaS1kZXZlbCA8ZHJpLWRldmVsLWJvdW5jZXNA bGlzdHMuZnJlZWRlc2t0b3Aub3JnPiBPbiBCZWhhbGYgT2YKPj4gQ2hyaXN0aWFuIEvDtm5pZwo+ PiBTZW50OiBUaHVyc2RheSwgT2N0b2JlciAxLCAyMDIwIDc6MjggQU0KPj4gVG86IGRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7IHJheS5odWFuZ0BhbWQuY29tOwo+PiBhaXJsaWVkQGdt YWlsLmNvbTsgZGFuaWVsQGZmd2xsLmNoCj4+IFN1YmplY3Q6IFtQQVRDSCA4LzhdIGRybS90dG06 IG51a2UgY2FjaGluZyBwbGFjZW1lbnQgZmxhZ3MKPj4KPj4gQ2hhbmdpbmcgdGhlIGNhY2hpbmcg b24gdGhlIGZseSBuZXZlciByZWFsbHkgd29ya2VkCj4+IGZsYXdsZXNzbHkuCj4+Cj4+IFNvIHN0 b3AgdGhpcyBjb21wbGV0ZWx5IGFuZCBqdXN0IGxldCBkcml2ZXJzIHNwZWNpZmljIHRoZQo+PiBk ZXNpcmVkIGNhY2hpbmcgaW4gdGhlIHR0IG9yIGJ1cyBvYmplY3QuCj4+Cj4+IFNpZ25lZC1vZmYt Ynk6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KPj4gLS0tCj4+ IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuYyB8IDIwICsrKy0tLS0t LS0KPj4gZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3R0bS5jICAgIHwgMTIgKyst LS0tCj4+IGRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3ZyYW1faGVscGVyLmMgICAgICB8ICA3ICst LS0KPj4gZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9iby5jICAgICAgIHwgMzYgKysr KystLS0tLS0tLS0tLS0KPj4gZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfb2JqZWN0LmMgICAgICAg ICAgIHwgMTAgKystLS0KPj4gZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfdHRtLmMgICAgICAgICAg ICAgIHwgIDIgKy0KPj4gZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fb2JqZWN0LmMgICAg IHwgNDYgKysrKystLS0tLS0tLS0tLS0tLS0tLQo+PiBkcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3Jh ZGVvbl90dG0uYyAgICAgICAgfCAxOCArKy0tLS0tLS0KPj4gZHJpdmVycy9ncHUvZHJtL3R0bS90 dG1fYWdwX2JhY2tlbmQuYyAgICAgIHwgIDIgKy0KPj4gZHJpdmVycy9ncHUvZHJtL3R0bS90dG1f Ym8uYyAgICAgICAgICAgICAgIHwgNDQgKystLS0tLS0tLS0tLS0tLS0tLS0tCj4+IGRyaXZlcnMv Z3B1L2RybS90dG0vdHRtX2JvX3V0aWwuYyAgICAgICAgICB8IDEwICsrLS0tCj4+IGRyaXZlcnMv Z3B1L2RybS90dG0vdHRtX3R0LmMgICAgICAgICAgICAgICB8IDI5IC0tLS0tLS0tLS0tLS0tCj4+ IGRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3R0bV9idWZmZXIuYyB8IDMwICsrKysrKyst LS0tLS0tCj4+IGluY2x1ZGUvZHJtL3R0bS90dG1fcGxhY2VtZW50LmggICAgICAgICAgICB8IDE0 IC0tLS0tLS0KPj4gaW5jbHVkZS9kcm0vdHRtL3R0bV90dC5oICAgICAgICAgICAgICAgICAgIHwg MTUgLS0tLS0tLQo+PiAxNSBmaWxlcyBjaGFuZ2VkLCA2MSBpbnNlcnRpb25zKCspLCAyMzQgZGVs ZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfb2JqZWN0LmMKPj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2Jq ZWN0LmMKPj4gaW5kZXggODBiYzcxNzdjZDQ1Li45NjRmOTUxMmRkNmUgMTAwNjQ0Cj4+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuYwo+PiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMKPj4gQEAgLTEzNyw3ICsxMzcs NyBAQCB2b2lkIGFtZGdwdV9ib19wbGFjZW1lbnRfZnJvbV9kb21haW4oc3RydWN0Cj4+IGFtZGdw dV9ibyAqYWJvLCB1MzIgZG9tYWluKQo+PiAJCXBsYWNlc1tjXS5mcGZuID0gMDsKPj4gCQlwbGFj ZXNbY10ubHBmbiA9IDA7Cj4+IAkJcGxhY2VzW2NdLm1lbV90eXBlID0gVFRNX1BMX1ZSQU07Cj4+ IC0JCXBsYWNlc1tjXS5mbGFncyA9IFRUTV9QTF9GTEFHX1dDIHwKPj4gVFRNX1BMX0ZMQUdfVU5D QUNIRUQ7Cj4+ICsJCXBsYWNlc1tjXS5mbGFncyA9IDA7Cj4+Cj4+IAkJaWYgKGZsYWdzICYgQU1E R1BVX0dFTV9DUkVBVEVfQ1BVX0FDQ0VTU19SRVFVSVJFRCkKPj4gCQkJcGxhY2VzW2NdLmxwZm4g PSB2aXNpYmxlX3BmbjsKPj4gQEAgLTE1NCwxMSArMTU0LDYgQEAgdm9pZCBhbWRncHVfYm9fcGxh Y2VtZW50X2Zyb21fZG9tYWluKHN0cnVjdAo+PiBhbWRncHVfYm8gKmFibywgdTMyIGRvbWFpbikK Pj4gCQlwbGFjZXNbY10ubHBmbiA9IDA7Cj4+IAkJcGxhY2VzW2NdLm1lbV90eXBlID0gVFRNX1BM X1RUOwo+PiAJCXBsYWNlc1tjXS5mbGFncyA9IDA7Cj4+IC0JCWlmIChmbGFncyAmIEFNREdQVV9H RU1fQ1JFQVRFX0NQVV9HVFRfVVNXQykKPj4gLQkJCXBsYWNlc1tjXS5mbGFncyB8PSBUVE1fUExf RkxBR19XQyB8Cj4+IC0JCQkJVFRNX1BMX0ZMQUdfVU5DQUNIRUQ7Cj4+IC0JCWVsc2UKPj4gLQkJ CXBsYWNlc1tjXS5mbGFncyB8PSBUVE1fUExfRkxBR19DQUNIRUQ7Cj4+IAkJYysrOwo+PiAJfQo+ Pgo+PiBAQCAtMTY3LDExICsxNjIsNiBAQCB2b2lkIGFtZGdwdV9ib19wbGFjZW1lbnRfZnJvbV9k b21haW4oc3RydWN0Cj4+IGFtZGdwdV9ibyAqYWJvLCB1MzIgZG9tYWluKQo+PiAJCXBsYWNlc1tj XS5scGZuID0gMDsKPj4gCQlwbGFjZXNbY10ubWVtX3R5cGUgPSBUVE1fUExfU1lTVEVNOwo+PiAJ CXBsYWNlc1tjXS5mbGFncyA9IDA7Cj4+IC0JCWlmIChmbGFncyAmIEFNREdQVV9HRU1fQ1JFQVRF X0NQVV9HVFRfVVNXQykKPj4gLQkJCXBsYWNlc1tjXS5mbGFncyB8PSBUVE1fUExfRkxBR19XQyB8 Cj4+IC0JCQkJVFRNX1BMX0ZMQUdfVU5DQUNIRUQ7Cj4+IC0JCWVsc2UKPj4gLQkJCXBsYWNlc1tj XS5mbGFncyB8PSBUVE1fUExfRkxBR19DQUNIRUQ7Cj4+IAkJYysrOwo+PiAJfQo+Pgo+PiBAQCAt MTc5LDcgKzE2OSw3IEBAIHZvaWQgYW1kZ3B1X2JvX3BsYWNlbWVudF9mcm9tX2RvbWFpbihzdHJ1 Y3QKPj4gYW1kZ3B1X2JvICphYm8sIHUzMiBkb21haW4pCj4+IAkJcGxhY2VzW2NdLmZwZm4gPSAw Owo+PiAJCXBsYWNlc1tjXS5scGZuID0gMDsKPj4gCQlwbGFjZXNbY10ubWVtX3R5cGUgPSBBTURH UFVfUExfR0RTOwo+PiAtCQlwbGFjZXNbY10uZmxhZ3MgPSBUVE1fUExfRkxBR19VTkNBQ0hFRDsK Pj4gKwkJcGxhY2VzW2NdLmZsYWdzID0gMDsKPj4gCQljKys7Cj4+IAl9Cj4+Cj4+IEBAIC0xODcs NyArMTc3LDcgQEAgdm9pZCBhbWRncHVfYm9fcGxhY2VtZW50X2Zyb21fZG9tYWluKHN0cnVjdAo+ PiBhbWRncHVfYm8gKmFibywgdTMyIGRvbWFpbikKPj4gCQlwbGFjZXNbY10uZnBmbiA9IDA7Cj4+ IAkJcGxhY2VzW2NdLmxwZm4gPSAwOwo+PiAJCXBsYWNlc1tjXS5tZW1fdHlwZSA9IEFNREdQVV9Q TF9HV1M7Cj4+IC0JCXBsYWNlc1tjXS5mbGFncyA9IFRUTV9QTF9GTEFHX1VOQ0FDSEVEOwo+PiAr CQlwbGFjZXNbY10uZmxhZ3MgPSAwOwo+PiAJCWMrKzsKPj4gCX0KPj4KPj4gQEAgLTE5NSw3ICsx ODUsNyBAQCB2b2lkIGFtZGdwdV9ib19wbGFjZW1lbnRfZnJvbV9kb21haW4oc3RydWN0Cj4+IGFt ZGdwdV9ibyAqYWJvLCB1MzIgZG9tYWluKQo+PiAJCXBsYWNlc1tjXS5mcGZuID0gMDsKPj4gCQlw bGFjZXNbY10ubHBmbiA9IDA7Cj4+IAkJcGxhY2VzW2NdLm1lbV90eXBlID0gQU1ER1BVX1BMX09B Owo+PiAtCQlwbGFjZXNbY10uZmxhZ3MgPSBUVE1fUExfRkxBR19VTkNBQ0hFRDsKPj4gKwkJcGxh Y2VzW2NdLmZsYWdzID0gMDsKPj4gCQljKys7Cj4+IAl9Cj4+Cj4+IEBAIC0yMDMsNyArMTkzLDcg QEAgdm9pZCBhbWRncHVfYm9fcGxhY2VtZW50X2Zyb21fZG9tYWluKHN0cnVjdAo+PiBhbWRncHVf Ym8gKmFibywgdTMyIGRvbWFpbikKPj4gCQlwbGFjZXNbY10uZnBmbiA9IDA7Cj4+IAkJcGxhY2Vz W2NdLmxwZm4gPSAwOwo+PiAJCXBsYWNlc1tjXS5tZW1fdHlwZSA9IFRUTV9QTF9TWVNURU07Cj4+ IC0JCXBsYWNlc1tjXS5mbGFncyA9IFRUTV9QTF9NQVNLX0NBQ0hJTkc7Cj4+ICsJCXBsYWNlc1tj XS5mbGFncyA9IDA7Cj4+IAkJYysrOwo+PiAJfQo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3R0bS5jCj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X3R0bS5jCj4+IGluZGV4IDViNTZhNjYwNjNmZC4uOGNkZWM1OGI5MTA2IDEw MDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdHRtLmMKPj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3R0bS5jCj4+IEBAIC05Miw3 ICs5Miw3IEBAIHN0YXRpYyB2b2lkIGFtZGdwdV9ldmljdF9mbGFncyhzdHJ1Y3QgdHRtX2J1ZmZl cl9vYmplY3QKPj4gKmJvLAo+PiAJCS5mcGZuID0gMCwKPj4gCQkubHBmbiA9IDAsCj4+IAkJLm1l bV90eXBlID0gVFRNX1BMX1NZU1RFTSwKPj4gLQkJLmZsYWdzID0gVFRNX1BMX01BU0tfQ0FDSElO Rwo+PiArCQkuZmxhZ3MgPSAwCj4+IAl9Owo+Pgo+PiAJLyogRG9uJ3QgaGFuZGxlIHNjYXR0ZXIg Z2F0aGVyIEJPcyAqLwo+PiBAQCAtNTM4LDE5ICs1MzgsMTMgQEAgc3RhdGljIGludCBhbWRncHVf bW92ZV92cmFtX3JhbShzdHJ1Y3QKPj4gdHRtX2J1ZmZlcl9vYmplY3QgKmJvLCBib29sIGV2aWN0 LAo+PiAJcGxhY2VtZW50cy5mcGZuID0gMDsKPj4gCXBsYWNlbWVudHMubHBmbiA9IDA7Cj4+IAlw bGFjZW1lbnRzLm1lbV90eXBlID0gVFRNX1BMX1RUOwo+PiAtCXBsYWNlbWVudHMuZmxhZ3MgPSBU VE1fUExfTUFTS19DQUNISU5HOwo+PiArCXBsYWNlbWVudHMuZmxhZ3MgPSAwOwo+PiAJciA9IHR0 bV9ib19tZW1fc3BhY2UoYm8sICZwbGFjZW1lbnQsICZ0bXBfbWVtLCBjdHgpOwo+PiAJaWYgKHVu bGlrZWx5KHIpKSB7Cj4+IAkJcHJfZXJyKCJGYWlsZWQgdG8gZmluZCBHVFQgc3BhY2UgZm9yIGJs aXQgZnJvbSBWUkFNXG4iKTsKPj4gCQlyZXR1cm4gcjsKPj4gCX0KPj4KPj4gLQkvKiBzZXQgY2Fj aGluZyBmbGFncyAqLwo+PiAtCXIgPSB0dG1fdHRfc2V0X3BsYWNlbWVudF9jYWNoaW5nKGJvLT50 dG0sIHRtcF9tZW0ucGxhY2VtZW50KTsKPj4gLQlpZiAodW5saWtlbHkocikpIHsKPj4gLQkJZ290 byBvdXRfY2xlYW51cDsKPj4gLQl9Cj4+IC0KPj4gCXIgPSB0dG1fdHRfcG9wdWxhdGUoYm8tPmJk ZXYsIGJvLT50dG0sIGN0eCk7Cj4+IAlpZiAodW5saWtlbHkocikpCj4+IAkJZ290byBvdXRfY2xl YW51cDsKPj4gQEAgLTU5OSw3ICs1OTMsNyBAQCBzdGF0aWMgaW50IGFtZGdwdV9tb3ZlX3JhbV92 cmFtKHN0cnVjdAo+PiB0dG1fYnVmZmVyX29iamVjdCAqYm8sIGJvb2wgZXZpY3QsCj4+IAlwbGFj ZW1lbnRzLmZwZm4gPSAwOwo+PiAJcGxhY2VtZW50cy5scGZuID0gMDsKPj4gCXBsYWNlbWVudHMu bWVtX3R5cGUgPSBUVE1fUExfVFQ7Cj4+IC0JcGxhY2VtZW50cy5mbGFncyA9IFRUTV9QTF9NQVNL X0NBQ0hJTkc7Cj4+ICsJcGxhY2VtZW50cy5mbGFncyA9IDA7Cj4+IAlyID0gdHRtX2JvX21lbV9z cGFjZShibywgJnBsYWNlbWVudCwgJnRtcF9tZW0sIGN0eCk7Cj4+IAlpZiAodW5saWtlbHkocikp IHsKPj4gCQlwcl9lcnIoIkZhaWxlZCB0byBmaW5kIEdUVCBzcGFjZSBmb3IgYmxpdCB0byBWUkFN XG4iKTsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3ZyYW1faGVscGVy LmMKPj4gYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV92cmFtX2hlbHBlci5jCj4+IGluZGV4IDc5 MTUxYjFjMTU3Yy4uYjljMGVhNzIwZWZkIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v ZHJtX2dlbV92cmFtX2hlbHBlci5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3Zy YW1faGVscGVyLmMKPj4gQEAgLTE0NywxNSArMTQ3LDEyIEBAIHN0YXRpYyB2b2lkIGRybV9nZW1f dnJhbV9wbGFjZW1lbnQoc3RydWN0Cj4+IGRybV9nZW1fdnJhbV9vYmplY3QgKmdibywKPj4KPj4g CWlmIChwbF9mbGFnICYgRFJNX0dFTV9WUkFNX1BMX0ZMQUdfVlJBTSkgewo+PiAJCWdiby0+cGxh Y2VtZW50c1tjXS5tZW1fdHlwZSA9IFRUTV9QTF9WUkFNOwo+PiAtCQlnYm8tPnBsYWNlbWVudHNb YysrXS5mbGFncyA9IFRUTV9QTF9GTEFHX1dDIHwKPj4gLQkJCQkJICAgICBUVE1fUExfRkxBR19V TkNBQ0hFRCB8Cj4+IC0JCQkJCSAgICAgaW52YXJpYW50X2ZsYWdzOwo+PiArCQlnYm8tPnBsYWNl bWVudHNbYysrXS5mbGFncyA9IGludmFyaWFudF9mbGFnczsKPj4gCX0KPj4KPj4gCWlmIChwbF9m bGFnICYgRFJNX0dFTV9WUkFNX1BMX0ZMQUdfU1lTVEVNIHx8ICFjKSB7Cj4+IAkJZ2JvLT5wbGFj ZW1lbnRzW2NdLm1lbV90eXBlID0gVFRNX1BMX1NZU1RFTTsKPj4gLQkJZ2JvLT5wbGFjZW1lbnRz W2MrK10uZmxhZ3MgPSBUVE1fUExfTUFTS19DQUNISU5HIHwKPj4gLQkJCQkJICAgICBpbnZhcmlh bnRfZmxhZ3M7Cj4+ICsJCWdiby0+cGxhY2VtZW50c1tjKytdLmZsYWdzID0gaW52YXJpYW50X2Zs YWdzOwo+PiAJfQo+Pgo+PiAJZ2JvLT5wbGFjZW1lbnQubnVtX3BsYWNlbWVudCA9IGM7Cj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2JvLmMKPj4gYi9kcml2 ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2JvLmMKPj4gaW5kZXggOGVkMzBmNDcxZWM3Li5i MzdkZmQxMmM3YjkgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZl YXVfYm8uYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2JvLmMKPj4g QEAgLTM0MywzNyArMzQzLDIzIEBAIG5vdXZlYXVfYm9fbmV3KHN0cnVjdCBub3V2ZWF1X2NsaSAq Y2xpLCB1NjQgc2l6ZSwKPj4gaW50IGFsaWduLAo+PiB9Cj4+Cj4+IHN0YXRpYyB2b2lkCj4+IC1z ZXRfcGxhY2VtZW50X2xpc3Qoc3RydWN0IG5vdXZlYXVfZHJtICpkcm0sIHN0cnVjdCB0dG1fcGxh Y2UgKnBsLAo+PiB1bnNpZ25lZCAqbiwKPj4gLQkJICAgdWludDMyX3QgZG9tYWluLCB1aW50MzJf dCBmbGFncykKPj4gK3NldF9wbGFjZW1lbnRfbGlzdChzdHJ1Y3QgdHRtX3BsYWNlICpwbCwgdW5z aWduZWQgKm4sIHVpbnQzMl90IGRvbWFpbikKPj4gewo+PiAJKm4gPSAwOwo+Pgo+PiAJaWYgKGRv bWFpbiAmIE5PVVZFQVVfR0VNX0RPTUFJTl9WUkFNKSB7Cj4+IC0JCXN0cnVjdCBudmlmX21tdSAq bW11ID0gJmRybS0+Y2xpZW50Lm1tdTsKPj4gLQkJY29uc3QgdTggdHlwZSA9IG1tdS0+dHlwZVtk cm0tPnR0bS50eXBlX3ZyYW1dLnR5cGU7Cj4+IC0KPj4gCQlwbFsqbl0ubWVtX3R5cGUgPSBUVE1f UExfVlJBTTsKPj4gLQkJcGxbKm5dLmZsYWdzID0gZmxhZ3MgJiB+VFRNX1BMX0ZMQUdfQ0FDSEVE Owo+PiAtCj4+IC0JCS8qIFNvbWUgQkFScyBkbyBub3Qgc3VwcG9ydCBiZWluZyBpb3JlbWFwcGVk IFdDICovCj4+IC0JCWlmIChkcm0tPmNsaWVudC5kZXZpY2UuaW5mby5mYW1pbHkgPj0KPj4gTlZf REVWSUNFX0lORk9fVjBfVEVTTEEgJiYKPj4gLQkJICAgIHR5cGUgJiBOVklGX01FTV9VTkNBQ0hF RCkKPj4gLQkJCXBsWypuXS5mbGFncyAmPSB+VFRNX1BMX0ZMQUdfV0M7Cj4+IC0KPj4gKwkJcGxb Km5dLmZsYWdzID0gMDsKPj4gCQkoKm4pKys7Cj4+IAl9Cj4+IAlpZiAoZG9tYWluICYgTk9VVkVB VV9HRU1fRE9NQUlOX0dBUlQpIHsKPj4gCQlwbFsqbl0ubWVtX3R5cGUgPSBUVE1fUExfVFQ7Cj4+ IC0JCXBsWypuXS5mbGFncyA9IGZsYWdzOwo+PiAtCj4+IC0JCWlmIChkcm0tPmFncC5icmlkZ2Up Cj4+IC0JCQlwbFsqbl0uZmxhZ3MgJj0gflRUTV9QTF9GTEFHX0NBQ0hFRDsKPj4gLQo+PiArCQlw bFsqbl0uZmxhZ3MgPSAwOwo+PiAJCSgqbikrKzsKPj4gCX0KPj4gCWlmIChkb21haW4gJiBOT1VW RUFVX0dFTV9ET01BSU5fQ1BVKSB7Cj4+IAkJcGxbKm5dLm1lbV90eXBlID0gVFRNX1BMX1NZU1RF TTsKPj4gLQkJcGxbKCpuKSsrXS5mbGFncyA9IGZsYWdzOwo+PiArCQlwbFsoKm4pKytdLmZsYWdz ID0gMDsKPj4gCX0KPj4gfQo+Pgo+PiBAQCAtNDE1LDE4ICs0MDEsMTQgQEAgdm9pZAo+PiBub3V2 ZWF1X2JvX3BsYWNlbWVudF9zZXQoc3RydWN0IG5vdXZlYXVfYm8gKm52Ym8sIHVpbnQzMl90IGRv bWFpbiwKPj4gCQkJIHVpbnQzMl90IGJ1c3kpCj4+IHsKPj4gLQlzdHJ1Y3Qgbm91dmVhdV9kcm0g KmRybSA9IG5vdXZlYXVfYmRldihudmJvLT5iby5iZGV2KTsKPj4gCXN0cnVjdCB0dG1fcGxhY2Vt ZW50ICpwbCA9ICZudmJvLT5wbGFjZW1lbnQ7Cj4+IC0JdWludDMyX3QgZmxhZ3MgPSBudmJvLT5m b3JjZV9jb2hlcmVudCA/IFRUTV9QTF9GTEFHX1VOQ0FDSEVEIDoKPj4gLQkJCQkJCVRUTV9QTF9N QVNLX0NBQ0hJTkc7Cj4+Cj4+IAlwbC0+cGxhY2VtZW50ID0gbnZiby0+cGxhY2VtZW50czsKPj4g LQlzZXRfcGxhY2VtZW50X2xpc3QoZHJtLCBudmJvLT5wbGFjZW1lbnRzLCAmcGwtPm51bV9wbGFj ZW1lbnQsCj4+IC0JCQkgICBkb21haW4sIGZsYWdzKTsKPj4gKwlzZXRfcGxhY2VtZW50X2xpc3Qo bnZiby0+cGxhY2VtZW50cywgJnBsLT5udW1fcGxhY2VtZW50LAo+PiBkb21haW4pOwo+Pgo+PiAJ cGwtPmJ1c3lfcGxhY2VtZW50ID0gbnZiby0+YnVzeV9wbGFjZW1lbnRzOwo+PiAtCXNldF9wbGFj ZW1lbnRfbGlzdChkcm0sIG52Ym8tPmJ1c3lfcGxhY2VtZW50cywgJnBsLQo+Pj4gbnVtX2J1c3lf cGxhY2VtZW50LAo+PiAtCQkJICAgZG9tYWluIHwgYnVzeSwgZmxhZ3MpOwo+PiArCXNldF9wbGFj ZW1lbnRfbGlzdChudmJvLT5idXN5X3BsYWNlbWVudHMsICZwbC0KPj4+IG51bV9idXN5X3BsYWNl bWVudCwKPj4gKwkJCSAgIGRvbWFpbiB8IGJ1c3kpOwo+Pgo+PiAJc2V0X3BsYWNlbWVudF9yYW5n ZShudmJvLCBkb21haW4pOwo+PiB9Cj4+IEBAIC04ODgsNyArODcwLDcgQEAgbm91dmVhdV9ib19t b3ZlX2ZsaXBkKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdAo+PiAqYm8sIGJvb2wgZXZpY3QsCj4+ IAkJLmZwZm4gPSAwLAo+PiAJCS5scGZuID0gMCwKPj4gCQkubWVtX3R5cGUgPSBUVE1fUExfVFQs Cj4+IC0JCS5mbGFncyA9IFRUTV9QTF9NQVNLX0NBQ0hJTkcKPj4gKwkJLmZsYWdzID0gMAo+PiAJ fTsKPj4gCXN0cnVjdCB0dG1fcGxhY2VtZW50IHBsYWNlbWVudDsKPj4gCXN0cnVjdCB0dG1fcmVz b3VyY2UgdG1wX3JlZzsKPj4gQEAgLTkzMCw3ICs5MTIsNyBAQCBub3V2ZWF1X2JvX21vdmVfZmxp cHMoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0Cj4+ICpibywgYm9vbCBldmljdCwKPj4gCQkuZnBm biA9IDAsCj4+IAkJLmxwZm4gPSAwLAo+PiAJCS5tZW1fdHlwZSA9IFRUTV9QTF9UVCwKPj4gLQkJ LmZsYWdzID0gVFRNX1BMX01BU0tfQ0FDSElORwo+PiArCQkuZmxhZ3MgPSAwCj4+IAl9Owo+PiAJ c3RydWN0IHR0bV9wbGFjZW1lbnQgcGxhY2VtZW50Owo+PiAJc3RydWN0IHR0bV9yZXNvdXJjZSB0 bXBfcmVnOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfb2JqZWN0LmMK Pj4gYi9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9vYmplY3QuYwo+PiBpbmRleCBjOGI2N2U3YTNm MDIuLjViYThhYWMwMGY1YyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxf b2JqZWN0LmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfb2JqZWN0LmMKPj4gQEAg LTY0LDIxICs2NCwyMSBAQCB2b2lkIHF4bF90dG1fcGxhY2VtZW50X2Zyb21fZG9tYWluKHN0cnVj dCBxeGxfYm8KPj4gKnFibywgdTMyIGRvbWFpbikKPj4gCXFiby0+cGxhY2VtZW50LmJ1c3lfcGxh Y2VtZW50ID0gcWJvLT5wbGFjZW1lbnRzOwo+PiAJaWYgKGRvbWFpbiA9PSBRWExfR0VNX0RPTUFJ Tl9WUkFNKSB7Cj4+IAkJcWJvLT5wbGFjZW1lbnRzW2NdLm1lbV90eXBlID0gVFRNX1BMX1ZSQU07 Cj4+IC0JCXFiby0+cGxhY2VtZW50c1tjKytdLmZsYWdzID0gVFRNX1BMX0ZMQUdfQ0FDSEVEIHwg cGZsYWc7Cj4+ICsJCXFiby0+cGxhY2VtZW50c1tjKytdLmZsYWdzID0gcGZsYWc7Cj4+IAl9Cj4+ IAlpZiAoZG9tYWluID09IFFYTF9HRU1fRE9NQUlOX1NVUkZBQ0UpIHsKPj4gCQlxYm8tPnBsYWNl bWVudHNbY10ubWVtX3R5cGUgPSBUVE1fUExfUFJJVjsKPj4gLQkJcWJvLT5wbGFjZW1lbnRzW2Mr K10uZmxhZ3MgPSBUVE1fUExfRkxBR19DQUNIRUQgfCBwZmxhZzsKPj4gKwkJcWJvLT5wbGFjZW1l bnRzW2MrK10uZmxhZ3MgPSBwZmxhZzsKPj4gCQlxYm8tPnBsYWNlbWVudHNbY10ubWVtX3R5cGUg PSBUVE1fUExfVlJBTTsKPj4gLQkJcWJvLT5wbGFjZW1lbnRzW2MrK10uZmxhZ3MgPSBUVE1fUExf RkxBR19DQUNIRUQgfCBwZmxhZzsKPj4gKwkJcWJvLT5wbGFjZW1lbnRzW2MrK10uZmxhZ3MgPSBw ZmxhZzsKPj4gCX0KPj4gCWlmIChkb21haW4gPT0gUVhMX0dFTV9ET01BSU5fQ1BVKSB7Cj4+IAkJ cWJvLT5wbGFjZW1lbnRzW2NdLm1lbV90eXBlID0gVFRNX1BMX1NZU1RFTTsKPj4gLQkJcWJvLT5w bGFjZW1lbnRzW2MrK10uZmxhZ3MgPSBUVE1fUExfTUFTS19DQUNISU5HIHwKPj4gcGZsYWc7Cj4+ ICsJCXFiby0+cGxhY2VtZW50c1tjKytdLmZsYWdzID0gcGZsYWc7Cj4+IAl9Cj4+IAlpZiAoIWMp IHsKPj4gCQlxYm8tPnBsYWNlbWVudHNbY10ubWVtX3R5cGUgPSBUVE1fUExfU1lTVEVNOwo+PiAt CQlxYm8tPnBsYWNlbWVudHNbYysrXS5mbGFncyA9IFRUTV9QTF9NQVNLX0NBQ0hJTkc7Cj4+ICsJ CXFiby0+cGxhY2VtZW50c1tjKytdLmZsYWdzID0gMDsKPj4gCX0KPj4gCXFiby0+cGxhY2VtZW50 Lm51bV9wbGFjZW1lbnQgPSBjOwo+PiAJcWJvLT5wbGFjZW1lbnQubnVtX2J1c3lfcGxhY2VtZW50 ID0gYzsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX3R0bS5jIGIvZHJp dmVycy9ncHUvZHJtL3F4bC9xeGxfdHRtLmMKPj4gaW5kZXggZTc5ZDRkZjk5NzkwLi5kNTM1ZTgz NmJlNzIgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX3R0bS5jCj4+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX3R0bS5jCj4+IEBAIC01Niw3ICs1Niw3IEBAIHN0 YXRpYyB2b2lkIHF4bF9ldmljdF9mbGFncyhzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLAo+ PiAJCS5mcGZuID0gMCwKPj4gCQkubHBmbiA9IDAsCj4+IAkJLm1lbV90eXBlID0gVFRNX1BMX1NZ U1RFTSwKPj4gLQkJLmZsYWdzID0gVFRNX1BMX01BU0tfQ0FDSElORwo+PiArCQkuZmxhZ3MgPSAw Cj4+IAl9Owo+Pgo+PiAJaWYgKCFxeGxfdHRtX2JvX2lzX3F4bF9ibyhibykpIHsKPj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX29iamVjdC5jCj4+IGIvZHJpdmVy cy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fb2JqZWN0LmMKPj4gaW5kZXggOGMyODVlYjExOGY5Li5h MGIyYzQ1NDFhMmEgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9u X29iamVjdC5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX29iamVjdC5j Cj4+IEBAIC0xMTMsNTcgKzExMywyOSBAQCB2b2lkIHJhZGVvbl90dG1fcGxhY2VtZW50X2Zyb21f ZG9tYWluKHN0cnVjdAo+PiByYWRlb25fYm8gKnJibywgdTMyIGRvbWFpbikKPj4gCQkJcmJvLT5w bGFjZW1lbnRzW2NdLmZwZm4gPQo+PiAJCQkJcmJvLT5yZGV2LT5tYy52aXNpYmxlX3ZyYW1fc2l6 ZSA+Pgo+PiBQQUdFX1NISUZUOwo+PiAJCQlyYm8tPnBsYWNlbWVudHNbY10ubWVtX3R5cGUgPSBU VE1fUExfVlJBTTsKPj4gLQkJCXJiby0+cGxhY2VtZW50c1tjKytdLmZsYWdzID0gVFRNX1BMX0ZM QUdfV0MgfAo+PiAtCQkJCQkJICAgICBUVE1fUExfRkxBR19VTkNBQ0hFRDsKPj4gKwkJCXJiby0+ cGxhY2VtZW50c1tjKytdLmZsYWdzID0gMDsKPj4gCQl9Cj4+Cj4+IAkJcmJvLT5wbGFjZW1lbnRz W2NdLmZwZm4gPSAwOwo+PiAJCXJiby0+cGxhY2VtZW50c1tjXS5tZW1fdHlwZSA9IFRUTV9QTF9W UkFNOwo+PiAtCQlyYm8tPnBsYWNlbWVudHNbYysrXS5mbGFncyA9IFRUTV9QTF9GTEFHX1dDIHwK Pj4gLQkJCQkJICAgICBUVE1fUExfRkxBR19VTkNBQ0hFRDsKPj4gKwkJcmJvLT5wbGFjZW1lbnRz W2MrK10uZmxhZ3MgPSAwOwo+PiAJfQo+Pgo+PiAJaWYgKGRvbWFpbiAmIFJBREVPTl9HRU1fRE9N QUlOX0dUVCkgewo+PiAtCQlpZiAocmJvLT5mbGFncyAmIFJBREVPTl9HRU1fR1RUX1VDKSB7Cj4+ IC0JCQlyYm8tPnBsYWNlbWVudHNbY10uZnBmbiA9IDA7Cj4+IC0JCQlyYm8tPnBsYWNlbWVudHNb Y10ubWVtX3R5cGUgPSBUVE1fUExfVFQ7Cj4+IC0JCQlyYm8tPnBsYWNlbWVudHNbYysrXS5mbGFn cyA9Cj4+IFRUTV9QTF9GTEFHX1VOQ0FDSEVEOwo+PiAtCj4+IC0JCX0gZWxzZSBpZiAoKHJiby0+ ZmxhZ3MgJiBSQURFT05fR0VNX0dUVF9XQykgfHwKPj4gLQkJCSAgIChyYm8tPnJkZXYtPmZsYWdz ICYgUkFERU9OX0lTX0FHUCkpIHsKPj4gLQkJCXJiby0+cGxhY2VtZW50c1tjXS5mcGZuID0gMDsK Pj4gLQkJCXJiby0+cGxhY2VtZW50c1tjXS5tZW1fdHlwZSA9IFRUTV9QTF9UVDsKPj4gLQkJCXJi by0+cGxhY2VtZW50c1tjKytdLmZsYWdzID0gVFRNX1BMX0ZMQUdfV0MgfAo+PiAtCQkJCVRUTV9Q TF9GTEFHX1VOQ0FDSEVEOwo+PiAtCQl9IGVsc2Ugewo+PiAtCQkJcmJvLT5wbGFjZW1lbnRzW2Nd LmZwZm4gPSAwOwo+PiAtCQkJcmJvLT5wbGFjZW1lbnRzW2NdLm1lbV90eXBlID0gVFRNX1BMX1RU Owo+PiAtCQkJcmJvLT5wbGFjZW1lbnRzW2MrK10uZmxhZ3MgPQo+PiBUVE1fUExfRkxBR19DQUNI RUQ7Cj4+IC0JCX0KPj4gKwkJcmJvLT5wbGFjZW1lbnRzW2NdLmZwZm4gPSAwOwo+PiArCQlyYm8t PnBsYWNlbWVudHNbY10ubWVtX3R5cGUgPSBUVE1fUExfVFQ7Cj4+ICsJCXJiby0+cGxhY2VtZW50 c1tjKytdLmZsYWdzID0gMDsKPj4gCX0KPj4KPj4gCWlmIChkb21haW4gJiBSQURFT05fR0VNX0RP TUFJTl9DUFUpIHsKPj4gLQkJaWYgKHJiby0+ZmxhZ3MgJiBSQURFT05fR0VNX0dUVF9VQykgewo+ PiAtCQkJcmJvLT5wbGFjZW1lbnRzW2NdLmZwZm4gPSAwOwo+PiAtCQkJcmJvLT5wbGFjZW1lbnRz W2NdLm1lbV90eXBlID0gVFRNX1BMX1NZU1RFTTsKPj4gLQkJCXJiby0+cGxhY2VtZW50c1tjKytd LmZsYWdzID0KPj4gVFRNX1BMX0ZMQUdfVU5DQUNIRUQ7Cj4+IC0KPj4gLQkJfSBlbHNlIGlmICgo cmJvLT5mbGFncyAmIFJBREVPTl9HRU1fR1RUX1dDKSB8fAo+PiAtCQkgICAgcmJvLT5yZGV2LT5m bGFncyAmIFJBREVPTl9JU19BR1ApIHsKPj4gLQkJCXJiby0+cGxhY2VtZW50c1tjXS5mcGZuID0g MDsKPj4gLQkJCXJiby0+cGxhY2VtZW50c1tjXS5tZW1fdHlwZSA9IFRUTV9QTF9TWVNURU07Cj4+ IC0JCQlyYm8tPnBsYWNlbWVudHNbYysrXS5mbGFncyA9IFRUTV9QTF9GTEFHX1dDIHwKPj4gLQkJ CQlUVE1fUExfRkxBR19VTkNBQ0hFRDsKPj4gLQkJfSBlbHNlIHsKPj4gLQkJCXJiby0+cGxhY2Vt ZW50c1tjXS5mcGZuID0gMDsKPj4gLQkJCXJiby0+cGxhY2VtZW50c1tjXS5tZW1fdHlwZSA9IFRU TV9QTF9TWVNURU07Cj4+IC0JCQlyYm8tPnBsYWNlbWVudHNbYysrXS5mbGFncyA9Cj4+IFRUTV9Q TF9GTEFHX0NBQ0hFRDsKPj4gLQkJfQo+PiArCQlyYm8tPnBsYWNlbWVudHNbY10uZnBmbiA9IDA7 Cj4+ICsJCXJiby0+cGxhY2VtZW50c1tjXS5tZW1fdHlwZSA9IFRUTV9QTF9TWVNURU07Cj4+ICsJ CXJiby0+cGxhY2VtZW50c1tjKytdLmZsYWdzID0gMDsKPj4gCX0KPj4gCWlmICghYykgewo+PiAJ CXJiby0+cGxhY2VtZW50c1tjXS5mcGZuID0gMDsKPj4gCQlyYm8tPnBsYWNlbWVudHNbY10ubWVt X3R5cGUgPSBUVE1fUExfU1lTVEVNOwo+PiAtCQlyYm8tPnBsYWNlbWVudHNbYysrXS5mbGFncyA9 IFRUTV9QTF9NQVNLX0NBQ0hJTkc7Cj4+ICsJCXJiby0+cGxhY2VtZW50c1tjKytdLmZsYWdzID0g MDsKPj4gCX0KPj4KPj4gCXJiby0+cGxhY2VtZW50Lm51bV9wbGFjZW1lbnQgPSBjOwo+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fdHRtLmMKPj4gYi9kcml2ZXJz L2dwdS9kcm0vcmFkZW9uL3JhZGVvbl90dG0uYwo+PiBpbmRleCA5YjUzYTFkODA2MzIuLmQ2ZjQy ZmJjODFmNCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fdHRt LmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fdHRtLmMKPj4gQEAgLTg5 LDcgKzg5LDcgQEAgc3RhdGljIHZvaWQgcmFkZW9uX2V2aWN0X2ZsYWdzKHN0cnVjdCB0dG1fYnVm ZmVyX29iamVjdAo+PiAqYm8sCj4+IAkJLmZwZm4gPSAwLAo+PiAJCS5scGZuID0gMCwKPj4gCQku bWVtX3R5cGUgPSBUVE1fUExfU1lTVEVNLAo+PiAtCQkuZmxhZ3MgPSBUVE1fUExfTUFTS19DQUNI SU5HCj4+ICsJCS5mbGFncyA9IDAKPj4gCX07Cj4+Cj4+IAlzdHJ1Y3QgcmFkZW9uX2JvICpyYm87 Cj4+IEBAIC0yMjUsMTcgKzIyNSwxMiBAQCBzdGF0aWMgaW50IHJhZGVvbl9tb3ZlX3ZyYW1fcmFt KHN0cnVjdAo+PiB0dG1fYnVmZmVyX29iamVjdCAqYm8sCj4+IAlwbGFjZW1lbnRzLmZwZm4gPSAw Owo+PiAJcGxhY2VtZW50cy5scGZuID0gMDsKPj4gCXBsYWNlbWVudHMubWVtX3R5cGUgPSBUVE1f UExfVFQ7Cj4+IC0JcGxhY2VtZW50cy5mbGFncyA9IFRUTV9QTF9NQVNLX0NBQ0hJTkc7Cj4+ICsJ cGxhY2VtZW50cy5mbGFncyA9IDA7Cj4+IAlyID0gdHRtX2JvX21lbV9zcGFjZShibywgJnBsYWNl bWVudCwgJnRtcF9tZW0sIGN0eCk7Cj4+IAlpZiAodW5saWtlbHkocikpIHsKPj4gCQlyZXR1cm4g cjsKPj4gCX0KPj4KPj4gLQlyID0gdHRtX3R0X3NldF9wbGFjZW1lbnRfY2FjaGluZyhiby0+dHRt LCB0bXBfbWVtLnBsYWNlbWVudCk7Cj4+IC0JaWYgKHVubGlrZWx5KHIpKSB7Cj4+IC0JCWdvdG8g b3V0X2NsZWFudXA7Cj4+IC0JfQo+PiAtCj4+IAlyID0gdHRtX3R0X3BvcHVsYXRlKGJvLT5iZGV2 LCBiby0+dHRtLCBjdHgpOwo+PiAJaWYgKHVubGlrZWx5KHIpKSB7Cj4+IAkJZ290byBvdXRfY2xl YW51cDsKPj4gQEAgLTI3NSw3ICsyNzAsNyBAQCBzdGF0aWMgaW50IHJhZGVvbl9tb3ZlX3JhbV92 cmFtKHN0cnVjdAo+PiB0dG1fYnVmZmVyX29iamVjdCAqYm8sCj4+IAlwbGFjZW1lbnRzLmZwZm4g PSAwOwo+PiAJcGxhY2VtZW50cy5scGZuID0gMDsKPj4gCXBsYWNlbWVudHMubWVtX3R5cGUgPSBU VE1fUExfVFQ7Cj4+IC0JcGxhY2VtZW50cy5mbGFncyA9IFRUTV9QTF9NQVNLX0NBQ0hJTkc7Cj4+ ICsJcGxhY2VtZW50cy5mbGFncyA9IDA7Cj4+IAlyID0gdHRtX2JvX21lbV9zcGFjZShibywgJnBs YWNlbWVudCwgJnRtcF9tZW0sIGN0eCk7Cj4+IAlpZiAodW5saWtlbHkocikpIHsKPj4gCQlyZXR1 cm4gcjsKPj4gQEAgLTM4OSwxMiArMzg0LDcgQEAgc3RhdGljIGludCByYWRlb25fdHRtX2lvX21l bV9yZXNlcnZlKHN0cnVjdAo+PiB0dG1fYm9fZGV2aWNlICpiZGV2LCBzdHJ1Y3QgdHRtX3Jlc28K Pj4gCQkgKiBBbHBoYTogdXNlIGJ1cy5hZGRyIHRvIGhvbGQgdGhlIGlvcmVtYXAoKSByZXR1cm4s Cj4+IAkJICogc28gd2UgY2FuIG1vZGlmeSBidXMuYmFzZSBiZWxvdy4KPj4gCQkgKi8KPj4gLQkJ aWYgKG1lbS0+cGxhY2VtZW50ICYgVFRNX1BMX0ZMQUdfV0MpCj4+IC0JCQltZW0tPmJ1cy5hZGRy ID0KPj4gLQkJCQlpb3JlbWFwX3djKG1lbS0+YnVzLm9mZnNldCwgYnVzX3NpemUpOwo+PiAtCQll bHNlCj4+IC0JCQltZW0tPmJ1cy5hZGRyID0KPj4gLQkJCQlpb3JlbWFwKG1lbS0+YnVzLm9mZnNl dCwgYnVzX3NpemUpOwo+PiArCQltZW0tPmJ1cy5hZGRyID0gaW9yZW1hcF93YyhtZW0tPmJ1cy5v ZmZzZXQsIGJ1c19zaXplKTsKPiBXaHkgY2FuIHlvdSBlbGltaW5hdGUgdGhlIGlvcmVtYXAoKSBo ZXJlPwo+Cj4gZG9lcyB0aGlzIG5lZWQgdG8gYmU6Cj4KPiBpZiBtZW0tPmJ1cy5jYWNoaW5nIGlu c3RlYWQ/CgpSYWRlb24gYWx3YXlzIHVzZXMgV0MgZm9yIFZSQU0uIFNvIHRoZSB1bmNhY2hlZCBp b3JlbWFwKCkgcGF0aCBzaG91bGQgCmhhdmUgbmV2ZXIgYmVlbiB1c2VkLgoKQnV0IG9uIHRoZSBv dGhlciBoYW5kIEFscGhhIHN5c3RlbXMgYXJlIG91dCBvZiBwcm9kdWN0aW9uIGZvciBxdWl0ZSBz b21lIAp0aW1lIG5vdyAoMjAgeWVhcnMgb3Igc28/KS4KClNvIEkgd291bGQgYmUgbW9yZSB0aGFu IGhhcHB5IHRvIGp1c3QgZHJvcCBzdXBwb3J0IGZvciB0aGlzIDopCgo+Cj4KPj4gCQlpZiAoIW1l bS0+YnVzLmFkZHIpCj4+IAkJCXJldHVybiAtRU5PTUVNOwo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL3R0bS90dG1fYWdwX2JhY2tlbmQuYwo+PiBiL2RyaXZlcnMvZ3B1L2RybS90 dG0vdHRtX2FncF9iYWNrZW5kLmMKPj4gaW5kZXggYTcyMzA2MmQzN2U3Li40Zjc2YzkyODcxNTkg MTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2FncF9iYWNrZW5kLmMKPj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYWdwX2JhY2tlbmQuYwo+PiBAQCAtNTQsNyAr NTQsNyBAQCBpbnQgdHRtX2FncF9iaW5kKHN0cnVjdCB0dG1fdHQgKnR0bSwgc3RydWN0Cj4+IHR0 bV9yZXNvdXJjZSAqYm9fbWVtKQo+PiAJc3RydWN0IHBhZ2UgKmR1bW15X3JlYWRfcGFnZSA9IHR0 bV9ib19nbG9iLmR1bW15X3JlYWRfcGFnZTsKPj4gCXN0cnVjdCBkcm1fbW1fbm9kZSAqbm9kZSA9 IGJvX21lbS0+bW1fbm9kZTsKPj4gCXN0cnVjdCBhZ3BfbWVtb3J5ICptZW07Cj4+IC0JaW50IHJl dCwgY2FjaGVkID0gKGJvX21lbS0+cGxhY2VtZW50ICYgVFRNX1BMX0ZMQUdfQ0FDSEVEKTsKPj4g KwlpbnQgcmV0LCBjYWNoZWQgPSB0dG0tPmNhY2hpbmcgPT0gdHRtX2NhY2hlZDsKPj4gCXVuc2ln bmVkIGk7Cj4+Cj4+IAlpZiAoYWdwX2JlLT5tZW0pCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vdHRtL3R0bV9iby5jIGIvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm8uYwo+PiBpbmRl eCBlMTFlOGVhYTY2MDIuLjJmZTRjYmVmZGUyOCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL3R0bS90dG1fYm8uYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9iby5jCj4+ IEBAIC0yNTIsMTAgKzI1Miw2IEBAIHN0YXRpYyBpbnQgdHRtX2JvX2hhbmRsZV9tb3ZlX21lbShz dHJ1Y3QKPj4gdHRtX2J1ZmZlcl9vYmplY3QgKmJvLAo+PiAJCWlmIChyZXQpCj4+IAkJCWdvdG8g b3V0X2VycjsKPj4KPj4gLQkJcmV0ID0gdHRtX3R0X3NldF9wbGFjZW1lbnRfY2FjaGluZyhiby0+ dHRtLCBtZW0tCj4+PiBwbGFjZW1lbnQpOwo+PiAtCQlpZiAocmV0KQo+PiAtCQkJZ290byBvdXRf ZXJyOwo+PiAtCj4+IAkJaWYgKG1lbS0+bWVtX3R5cGUgIT0gVFRNX1BMX1NZU1RFTSkgewo+PiAJ CQlyZXQgPSB0dG1fdHRfcG9wdWxhdGUoYmRldiwgYm8tPnR0bSwgY3R4KTsKPj4gCQkJaWYgKHJl dCkKPj4gQEAgLTg1NCwyOSArODUwLDYgQEAgc3RhdGljIGludCB0dG1fYm9fbWVtX2ZvcmNlX3Nw YWNlKHN0cnVjdAo+PiB0dG1fYnVmZmVyX29iamVjdCAqYm8sCj4+IAlyZXR1cm4gdHRtX2JvX2Fk ZF9tb3ZlX2ZlbmNlKGJvLCBtYW4sIG1lbSwgY3R4LT5ub193YWl0X2dwdSk7Cj4+IH0KPj4KPj4g LXN0YXRpYyB1aW50MzJfdCB0dG1fYm9fc2VsZWN0X2NhY2hpbmcoc3RydWN0IHR0bV9yZXNvdXJj ZV9tYW5hZ2VyICptYW4sCj4+IC0JCQkJICAgICAgdWludDMyX3QgY3VyX3BsYWNlbWVudCwKPj4g LQkJCQkgICAgICB1aW50MzJfdCBwcm9wb3NlZF9wbGFjZW1lbnQpCj4+IC17Cj4+IC0JdWludDMy X3QgY2FjaGluZyA9IHByb3Bvc2VkX3BsYWNlbWVudCAmIFRUTV9QTF9NQVNLX0NBQ0hJTkc7Cj4+ IC0JdWludDMyX3QgcmVzdWx0ID0gcHJvcG9zZWRfcGxhY2VtZW50ICYgflRUTV9QTF9NQVNLX0NB Q0hJTkc7Cj4+IC0KPj4gLQkvKioKPj4gLQkgKiBLZWVwIGN1cnJlbnQgY2FjaGluZyBpZiBwb3Nz aWJsZS4KPj4gLQkgKi8KPj4gLQo+PiAtCWlmICgoY3VyX3BsYWNlbWVudCAmIGNhY2hpbmcpICE9 IDApCj4+IC0JCXJlc3VsdCB8PSAoY3VyX3BsYWNlbWVudCAmIGNhY2hpbmcpOwo+PiAtCWVsc2Ug aWYgKChUVE1fUExfRkxBR19DQUNIRUQgJiBjYWNoaW5nKSAhPSAwKQo+PiAtCQlyZXN1bHQgfD0g VFRNX1BMX0ZMQUdfQ0FDSEVEOwo+PiAtCWVsc2UgaWYgKChUVE1fUExfRkxBR19XQyAmIGNhY2hp bmcpICE9IDApCj4+IC0JCXJlc3VsdCB8PSBUVE1fUExfRkxBR19XQzsKPj4gLQllbHNlIGlmICgo VFRNX1BMX0ZMQUdfVU5DQUNIRUQgJiBjYWNoaW5nKSAhPSAwKQo+PiAtCQlyZXN1bHQgfD0gVFRN X1BMX0ZMQUdfVU5DQUNIRUQ7Cj4+IC0KPj4gLQlyZXR1cm4gcmVzdWx0Owo+PiAtfQo+PiAtCj4+ IC8qKgo+PiAgICogdHRtX2JvX21lbV9wbGFjZW1lbnQgLSBjaGVjayBpZiBwbGFjZW1lbnQgaXMg Y29tcGF0aWJsZQo+PiAgICogQGJvOiBCTyB0byBmaW5kIG1lbW9yeSBmb3IKPj4gQEAgLTg5NSwx OCArODY4LDEzIEBAIHN0YXRpYyBpbnQgdHRtX2JvX21lbV9wbGFjZW1lbnQoc3RydWN0Cj4+IHR0 bV9idWZmZXJfb2JqZWN0ICpibywKPj4gewo+PiAJc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYg PSBiby0+YmRldjsKPj4gCXN0cnVjdCB0dG1fcmVzb3VyY2VfbWFuYWdlciAqbWFuOwo+PiAtCXVp bnQzMl90IGN1cl9mbGFncyA9IDA7Cj4+Cj4+IAltYW4gPSB0dG1fbWFuYWdlcl90eXBlKGJkZXYs IHBsYWNlLT5tZW1fdHlwZSk7Cj4+IAlpZiAoIW1hbiB8fCAhdHRtX3Jlc291cmNlX21hbmFnZXJf dXNlZChtYW4pKQo+PiAJCXJldHVybiAtRUJVU1k7Cj4+Cj4+IC0JY3VyX2ZsYWdzID0gdHRtX2Jv X3NlbGVjdF9jYWNoaW5nKG1hbiwgYm8tPm1lbS5wbGFjZW1lbnQsCj4+IC0JCQkJCSAgcGxhY2Ut PmZsYWdzKTsKPj4gLQljdXJfZmxhZ3MgfD0gcGxhY2UtPmZsYWdzICYgflRUTV9QTF9NQVNLX0NB Q0hJTkc7Cj4+IC0KPj4gCW1lbS0+bWVtX3R5cGUgPSBwbGFjZS0+bWVtX3R5cGU7Cj4+IC0JbWVt LT5wbGFjZW1lbnQgPSBjdXJfZmxhZ3M7Cj4+ICsJbWVtLT5wbGFjZW1lbnQgPSBwbGFjZS0+Zmxh Z3M7Cj4+Cj4+IAlzcGluX2xvY2soJnR0bV9ib19nbG9iLmxydV9sb2NrKTsKPj4gCXR0bV9ib19k ZWxfZnJvbV9scnUoYm8pOwo+PiBAQCAtMTAzOSw4ICsxMDA3LDcgQEAgc3RhdGljIGJvb2wgdHRt X2JvX3BsYWNlc19jb21wYXQoY29uc3Qgc3RydWN0Cj4+IHR0bV9wbGFjZSAqcGxhY2VzLAo+PiAJ CQljb250aW51ZTsKPj4KPj4gCQkqbmV3X2ZsYWdzID0gaGVhcC0+ZmxhZ3M7Cj4+IC0JCWlmICgo Km5ld19mbGFncyAmIG1lbS0+cGxhY2VtZW50ICYKPj4gVFRNX1BMX01BU0tfQ0FDSElORykgJiYK Pj4gLQkJICAgIChtZW0tPm1lbV90eXBlID09IGhlYXAtPm1lbV90eXBlKSAmJgo+PiArCQlpZiAo KG1lbS0+bWVtX3R5cGUgPT0gaGVhcC0+bWVtX3R5cGUpICYmCj4+IAkJICAgICghKCpuZXdfZmxh Z3MgJiBUVE1fUExfRkxBR19DT05USUdVT1VTKSB8fAo+PiAJCSAgICAgKG1lbS0+cGxhY2VtZW50 ICYgVFRNX1BMX0ZMQUdfQ09OVElHVU9VUykpKQo+PiAJCQlyZXR1cm4gdHJ1ZTsKPj4gQEAgLTEw OTQsOSArMTA2MSw2IEBAIGludCB0dG1fYm9fdmFsaWRhdGUoc3RydWN0IHR0bV9idWZmZXJfb2Jq ZWN0ICpibywKPj4gCQlyZXQgPSB0dG1fYm9fbW92ZV9idWZmZXIoYm8sIHBsYWNlbWVudCwgY3R4 KTsKPj4gCQlpZiAocmV0KQo+PiAJCQlyZXR1cm4gcmV0Owo+PiAtCX0gZWxzZSB7Cj4+IC0JCWJv LT5tZW0ucGxhY2VtZW50ICY9IFRUTV9QTF9NQVNLX0NBQ0hJTkc7Cj4+IC0JCWJvLT5tZW0ucGxh Y2VtZW50IHw9IG5ld19mbGFncyAmCj4+IH5UVE1fUExfTUFTS19DQUNISU5HOwo+PiAJfQo+PiAJ LyoKPj4gCSAqIFdlIG1pZ2h0IG5lZWQgdG8gYWRkIGEgVFRNLgo+PiBAQCAtMTE2NCw3ICsxMTI4 LDcgQEAgaW50IHR0bV9ib19pbml0X3Jlc2VydmVkKHN0cnVjdCB0dG1fYm9fZGV2aWNlCj4+ICpi ZGV2LAo+PiAJYm8tPm1lbS5idXMub2Zmc2V0ID0gMDsKPj4gCWJvLT5tZW0uYnVzLmFkZHIgPSBO VUxMOwo+PiAJYm8tPm1vdmluZyA9IE5VTEw7Cj4+IC0JYm8tPm1lbS5wbGFjZW1lbnQgPSBUVE1f UExfRkxBR19DQUNIRUQ7Cj4+ICsJYm8tPm1lbS5wbGFjZW1lbnQgPSAwOwo+PiAJYm8tPmFjY19z aXplID0gYWNjX3NpemU7Cj4+IAliby0+cGluX2NvdW50ID0gMDsKPj4gCWJvLT5zZyA9IHNnOwo+ PiBAQCAtMTUxMiw3ICsxNDc2LDcgQEAgaW50IHR0bV9ib19zd2Fwb3V0KHN0cnVjdCB0dG1fYm9f Z2xvYmFsICpnbG9iLAo+PiBzdHJ1Y3QgdHRtX29wZXJhdGlvbl9jdHggKmN0eCkKPj4KPj4gCQll dmljdF9tZW0gPSBiby0+bWVtOwo+PiAJCWV2aWN0X21lbS5tbV9ub2RlID0gTlVMTDsKPj4gLQkJ ZXZpY3RfbWVtLnBsYWNlbWVudCA9IFRUTV9QTF9NQVNLX0NBQ0hJTkc7Cj4+ICsJCWV2aWN0X21l bS5wbGFjZW1lbnQgPSAwOwo+PiAJCWV2aWN0X21lbS5tZW1fdHlwZSA9IFRUTV9QTF9TWVNURU07 Cj4+Cj4+IAkJcmV0ID0gdHRtX2JvX2hhbmRsZV9tb3ZlX21lbShibywgJmV2aWN0X21lbSwgdHJ1 ZSwKPj4gJmN0eCk7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib191 dGlsLmMKPj4gYi9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib191dGlsLmMKPj4gaW5kZXggMDU0 MjA5N2RjNDE5Li5iYTdhYjVlZDg1ZDAgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS90 dG0vdHRtX2JvX3V0aWwuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib191dGls LmMKPj4gQEAgLTcyLDEwICs3Miw2IEBAIGludCB0dG1fYm9fbW92ZV90dG0oc3RydWN0IHR0bV9i dWZmZXJfb2JqZWN0ICpibywKPj4gCQlvbGRfbWVtLT5tZW1fdHlwZSA9IFRUTV9QTF9TWVNURU07 Cj4+IAl9Cj4+Cj4+IC0JcmV0ID0gdHRtX3R0X3NldF9wbGFjZW1lbnRfY2FjaGluZyh0dG0sIG5l d19tZW0tPnBsYWNlbWVudCk7Cj4+IC0JaWYgKHVubGlrZWx5KHJldCAhPSAwKSkKPj4gLQkJcmV0 dXJuIHJldDsKPj4gLQo+PiAJaWYgKG5ld19tZW0tPm1lbV90eXBlICE9IFRUTV9QTF9TWVNURU0p IHsKPj4KPj4gCQlyZXQgPSB0dG1fdHRfcG9wdWxhdGUoYm8tPmJkZXYsIHR0bSwgY3R4KTsKPj4g QEAgLTEzNSw3ICsxMzEsNyBAQCBzdGF0aWMgaW50IHR0bV9yZXNvdXJjZV9pb3JlbWFwKHN0cnVj dCB0dG1fYm9fZGV2aWNlCj4+ICpiZGV2LAo+PiAJfSBlbHNlIHsKPj4gCQlzaXplX3QgYnVzX3Np emUgPSAoc2l6ZV90KW1lbS0+bnVtX3BhZ2VzIDw8IFBBR0VfU0hJRlQ7Cj4+Cj4+IC0JCWlmICht ZW0tPnBsYWNlbWVudCAmIFRUTV9QTF9GTEFHX1dDKQo+PiArCQlpZiAobWVtLT5idXMuY2FjaGlu ZyA9PSB0dG1fd3JpdGVfY29tYmluZWQpCj4+IAkJCWFkZHIgPSBpb3JlbWFwX3djKG1lbS0+YnVz Lm9mZnNldCwgYnVzX3NpemUpOwo+PiAJCWVsc2UKPj4gCQkJYWRkciA9IGlvcmVtYXAobWVtLT5i dXMub2Zmc2V0LCBidXNfc2l6ZSk7Cj4+IEBAIC00MjcsNyArNDIzLDcgQEAgc3RhdGljIGludCB0 dG1fYm9faW9yZW1hcChzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QKPj4gKmJvLAo+PiAJCW1hcC0+ dmlydHVhbCA9ICh2b2lkICopKCgodTggKiliby0+bWVtLmJ1cy5hZGRyKSArIG9mZnNldCk7Cj4+ IAl9IGVsc2Ugewo+PiAJCW1hcC0+Ym9fa21hcF90eXBlID0gdHRtX2JvX21hcF9pb21hcDsKPj4g LQkJaWYgKG1lbS0+cGxhY2VtZW50ICYgVFRNX1BMX0ZMQUdfV0MpCj4+ICsJCWlmIChtZW0tPmJ1 cy5jYWNoaW5nID09IHR0bV93cml0ZV9jb21iaW5lZCkKPj4gCQkJbWFwLT52aXJ0dWFsID0gaW9y ZW1hcF93Yyhiby0+bWVtLmJ1cy5vZmZzZXQgKwo+PiBvZmZzZXQsCj4+IAkJCQkJCSAgc2l6ZSk7 Cj4+IAkJZWxzZQo+PiBAQCAtNDU3LDcgKzQ1Myw3IEBAIHN0YXRpYyBpbnQgdHRtX2JvX2ttYXBf dHRtKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdAo+PiAqYm8sCj4+IAlpZiAocmV0KQo+PiAJCXJl dHVybiByZXQ7Cj4+Cj4+IC0JaWYgKG51bV9wYWdlcyA9PSAxICYmIChtZW0tPnBsYWNlbWVudCAm Cj4+IFRUTV9QTF9GTEFHX0NBQ0hFRCkpIHsKPj4gKwlpZiAobnVtX3BhZ2VzID09IDEgJiYgdHRt LT5jYWNoaW5nID09IHR0bV9jYWNoZWQpIHsKPj4gCQkvKgo+PiAJCSAqIFdlJ3JlIG1hcHBpbmcg YSBzaW5nbGUgcGFnZSwgYW5kIHRoZSBkZXNpcmVkCj4+IAkJICogcGFnZSBwcm90ZWN0aW9uIGlz IGNvbnNpc3RlbnQgd2l0aCB0aGUgYm8uCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v dHRtL3R0bV90dC5jIGIvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fdHQuYwo+PiBpbmRleCBhNDY1 ZjUxZGYwMjcuLjNlNWRkNjI3MWQ0YyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3R0 bS90dG1fdHQuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV90dC5jCj4+IEBAIC0x MTQsMzUgKzExNCw2IEBAIHN0YXRpYyBpbnQgdHRtX3NnX3R0X2FsbG9jX3BhZ2VfZGlyZWN0b3J5 KHN0cnVjdAo+PiB0dG1fZG1hX3R0ICp0dG0pCj4+IAlyZXR1cm4gMDsKPj4gfQo+Pgo+PiAtc3Rh dGljIGludCB0dG1fdHRfc2V0X2NhY2hpbmcoc3RydWN0IHR0bV90dCAqdHRtLCBlbnVtIHR0bV9j YWNoaW5nIGNhY2hpbmcpCj4+IC17Cj4+IC0JaWYgKHR0bS0+Y2FjaGluZyA9PSBjYWNoaW5nKQo+ PiAtCQlyZXR1cm4gMDsKPj4gLQo+PiAtCS8qIENhbid0IGNoYW5nZSB0aGUgY2FjaGluZyBzdGF0 ZSBhZnRlciBUVCBpcyBwb3B1bGF0ZWQgKi8KPj4gLQlpZiAoV0FSTl9PTl9PTkNFKHR0bV90dF9p c19wb3B1bGF0ZWQodHRtKSkpCj4+IC0JCXJldHVybiAtRUlOVkFMOwo+PiAtCj4+IC0JdHRtLT5j YWNoaW5nID0gY2FjaGluZzsKPj4gLQo+PiAtCXJldHVybiAwOwo+PiAtfQo+PiAtCj4+IC1pbnQg dHRtX3R0X3NldF9wbGFjZW1lbnRfY2FjaGluZyhzdHJ1Y3QgdHRtX3R0ICp0dG0sIHVpbnQzMl90 IHBsYWNlbWVudCkKPj4gLXsKPj4gLQllbnVtIHR0bV9jYWNoaW5nIHN0YXRlOwo+PiAtCj4+IC0J aWYgKHBsYWNlbWVudCAmIFRUTV9QTF9GTEFHX1dDKQo+PiAtCQlzdGF0ZSA9IHR0bV93cml0ZV9j b21iaW5lZDsKPj4gLQllbHNlIGlmIChwbGFjZW1lbnQgJiBUVE1fUExfRkxBR19VTkNBQ0hFRCkK Pj4gLQkJc3RhdGUgPSB0dG1fdW5jYWNoZWQ7Cj4+IC0JZWxzZQo+PiAtCQlzdGF0ZSA9IHR0bV9j YWNoZWQ7Cj4+IC0KPj4gLQlyZXR1cm4gdHRtX3R0X3NldF9jYWNoaW5nKHR0bSwgc3RhdGUpOwo+ PiAtfQo+PiAtRVhQT1JUX1NZTUJPTCh0dG1fdHRfc2V0X3BsYWNlbWVudF9jYWNoaW5nKTsKPj4g LQo+PiB2b2lkIHR0bV90dF9kZXN0cm95X2NvbW1vbihzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRl diwgc3RydWN0IHR0bV90dAo+PiAqdHRtKQo+PiB7Cj4+IAl0dG1fdHRfdW5wb3B1bGF0ZShiZGV2 LCB0dG0pOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfdHRt X2J1ZmZlci5jCj4+IGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfdHRtX2J1ZmZlci5j Cj4+IGluZGV4IDJhN2I1Zjk2NDc3Ni4uOTc1ZDA2YzJlMzVlIDEwMDY0NAo+PiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF90dG1fYnVmZmVyLmMKPj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL3Ztd2dmeC92bXdnZnhfdHRtX2J1ZmZlci5jCj4+IEBAIC0zNCwyOCArMzQsMjggQEAg c3RhdGljIGNvbnN0IHN0cnVjdCB0dG1fcGxhY2UgdnJhbV9wbGFjZW1lbnRfZmxhZ3MgPSB7Cj4+ IAkuZnBmbiA9IDAsCj4+IAkubHBmbiA9IDAsCj4+IAkubWVtX3R5cGUgPSBUVE1fUExfVlJBTSwK Pj4gLQkuZmxhZ3MgPSBUVE1fUExfRkxBR19DQUNIRUQKPj4gKwkuZmxhZ3MgPSAwCj4+IH07Cj4+ Cj4+IHN0YXRpYyBjb25zdCBzdHJ1Y3QgdHRtX3BsYWNlIHN5c19wbGFjZW1lbnRfZmxhZ3MgPSB7 Cj4+IAkuZnBmbiA9IDAsCj4+IAkubHBmbiA9IDAsCj4+IAkubWVtX3R5cGUgPSBUVE1fUExfU1lT VEVNLAo+PiAtCS5mbGFncyA9IFRUTV9QTF9GTEFHX0NBQ0hFRAo+PiArCS5mbGFncyA9IDAKPj4g fTsKPj4KPj4gc3RhdGljIGNvbnN0IHN0cnVjdCB0dG1fcGxhY2UgZ21yX3BsYWNlbWVudF9mbGFn cyA9IHsKPj4gCS5mcGZuID0gMCwKPj4gCS5scGZuID0gMCwKPj4gCS5tZW1fdHlwZSA9IFZNV19Q TF9HTVIsCj4+IC0JLmZsYWdzID0gVFRNX1BMX0ZMQUdfQ0FDSEVECj4+ICsJLmZsYWdzID0gMAo+ PiB9Owo+Pgo+PiBzdGF0aWMgY29uc3Qgc3RydWN0IHR0bV9wbGFjZSBtb2JfcGxhY2VtZW50X2Zs YWdzID0gewo+PiAJLmZwZm4gPSAwLAo+PiAJLmxwZm4gPSAwLAo+PiAJLm1lbV90eXBlID0gVk1X X1BMX01PQiwKPj4gLQkuZmxhZ3MgPSBUVE1fUExfRkxBR19DQUNIRUQKPj4gKwkuZmxhZ3MgPSAw Cj4+IH07Cj4+Cj4+IHN0cnVjdCB0dG1fcGxhY2VtZW50IHZtd192cmFtX3BsYWNlbWVudCA9IHsK Pj4gQEAgLTcwLDEyICs3MCwxMiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHR0bV9wbGFjZQo+PiB2 cmFtX2dtcl9wbGFjZW1lbnRfZmxhZ3NbXSA9IHsKPj4gCQkuZnBmbiA9IDAsCj4+IAkJLmxwZm4g PSAwLAo+PiAJCS5tZW1fdHlwZSA9IFRUTV9QTF9WUkFNLAo+PiAtCQkuZmxhZ3MgPSBUVE1fUExf RkxBR19DQUNIRUQKPj4gKwkJLmZsYWdzID0gMAo+PiAJfSwgewo+PiAJCS5mcGZuID0gMCwKPj4g CQkubHBmbiA9IDAsCj4+IAkJLm1lbV90eXBlID0gVk1XX1BMX0dNUiwKPj4gLQkJLmZsYWdzID0g VFRNX1BMX0ZMQUdfQ0FDSEVECj4+ICsJCS5mbGFncyA9IDAKPj4gCX0KPj4gfTsKPj4KPj4gQEAg LTg0LDEyICs4NCwxMiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHR0bV9wbGFjZQo+PiBnbXJfdnJh bV9wbGFjZW1lbnRfZmxhZ3NbXSA9IHsKPj4gCQkuZnBmbiA9IDAsCj4+IAkJLmxwZm4gPSAwLAo+ PiAJCS5tZW1fdHlwZSA9IFZNV19QTF9HTVIsCj4+IC0JCS5mbGFncyA9IFRUTV9QTF9GTEFHX0NB Q0hFRAo+PiArCQkuZmxhZ3MgPSAwCj4+IAl9LCB7Cj4+IAkJLmZwZm4gPSAwLAo+PiAJCS5scGZu ID0gMCwKPj4gCQkubWVtX3R5cGUgPSBUVE1fUExfVlJBTSwKPj4gLQkJLmZsYWdzID0gVFRNX1BM X0ZMQUdfQ0FDSEVECj4+ICsJCS5mbGFncyA9IDAKPj4gCX0KPj4gfTsKPj4KPj4gQEAgLTExOSwy MiArMTE5LDIyIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdHRtX3BsYWNlCj4+IGV2aWN0YWJsZV9w bGFjZW1lbnRfZmxhZ3NbXSA9IHsKPj4gCQkuZnBmbiA9IDAsCj4+IAkJLmxwZm4gPSAwLAo+PiAJ CS5tZW1fdHlwZSA9IFRUTV9QTF9TWVNURU0sCj4+IC0JCS5mbGFncyA9IFRUTV9QTF9GTEFHX0NB Q0hFRAo+PiArCQkuZmxhZ3MgPSAwCj4+IAl9LCB7Cj4+IAkJLmZwZm4gPSAwLAo+PiAJCS5scGZu ID0gMCwKPj4gCQkubWVtX3R5cGUgPSBUVE1fUExfVlJBTSwKPj4gLQkJLmZsYWdzID0gVFRNX1BM X0ZMQUdfQ0FDSEVECj4+ICsJCS5mbGFncyA9IDAKPj4gCX0sIHsKPj4gCQkuZnBmbiA9IDAsCj4+ IAkJLmxwZm4gPSAwLAo+PiAJCS5tZW1fdHlwZSA9IFZNV19QTF9HTVIsCj4+IC0JCS5mbGFncyA9 IFRUTV9QTF9GTEFHX0NBQ0hFRAo+PiArCQkuZmxhZ3MgPSAwCj4+IAl9LCB7Cj4+IAkJLmZwZm4g PSAwLAo+PiAJCS5scGZuID0gMCwKPj4gCQkubWVtX3R5cGUgPSBWTVdfUExfTU9CLAo+PiAtCQku ZmxhZ3MgPSBUVE1fUExfRkxBR19DQUNIRUQKPj4gKwkJLmZsYWdzID0gMAo+PiAJfQo+PiB9Owo+ Pgo+PiBAQCAtMTQzLDE3ICsxNDMsMTcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB0dG1fcGxhY2UK Pj4gbm9uZml4ZWRfcGxhY2VtZW50X2ZsYWdzW10gPSB7Cj4+IAkJLmZwZm4gPSAwLAo+PiAJCS5s cGZuID0gMCwKPj4gCQkubWVtX3R5cGUgPSBUVE1fUExfU1lTVEVNLAo+PiAtCQkuZmxhZ3MgPSBU VE1fUExfRkxBR19DQUNIRUQKPj4gKwkJLmZsYWdzID0gMAo+PiAJfSwgewo+PiAJCS5mcGZuID0g MCwKPj4gCQkubHBmbiA9IDAsCj4+IAkJLm1lbV90eXBlID0gVk1XX1BMX0dNUiwKPj4gLQkJLmZs YWdzID0gVFRNX1BMX0ZMQUdfQ0FDSEVECj4+ICsJCS5mbGFncyA9IDAKPj4gCX0sIHsKPj4gCQku ZnBmbiA9IDAsCj4+IAkJLmxwZm4gPSAwLAo+PiAJCS5tZW1fdHlwZSA9IFZNV19QTF9NT0IsCj4+ IC0JCS5mbGFncyA9IFRUTV9QTF9GTEFHX0NBQ0hFRAo+PiArCQkuZmxhZ3MgPSAwCj4+IAl9Cj4+ IH07Cj4+Cj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS90dG0vdHRtX3BsYWNlbWVudC5oCj4+ IGIvaW5jbHVkZS9kcm0vdHRtL3R0bV9wbGFjZW1lbnQuaAo+PiBpbmRleCA1MGU3MmRmNDhiOGQu LmFhNmJhNGQwY2Y3OCAxMDA2NDQKPj4gLS0tIGEvaW5jbHVkZS9kcm0vdHRtL3R0bV9wbGFjZW1l bnQuaAo+PiArKysgYi9pbmNsdWRlL2RybS90dG0vdHRtX3BsYWNlbWVudC5oCj4+IEBAIC00Mywy NyArNDMsMTMgQEAKPj4gI2RlZmluZSBUVE1fUExfUFJJViAgICAgICAgICAgICAzCj4+Cj4+IC8q Cj4+IC0gKiBPdGhlciBmbGFncyB0aGF0IGFmZmVjdHMgZGF0YSBwbGFjZW1lbnQuCj4+IC0gKiBU VE1fUExfRkxBR19DQUNIRUQgaW5kaWNhdGVzIGNhY2hlLWNvaGVyZW50IG1hcHBpbmdzCj4+IC0g KiBpZiBhdmFpbGFibGUuCj4+IC0gKiBUVE1fUExfRkxBR19TSEFSRUQgbWVhbnMgdGhhdCBhbm90 aGVyIGFwcGxpY2F0aW9uIG1heQo+PiAtICogcmVmZXJlbmNlIHRoZSBidWZmZXIuCj4+IC0gKiBU VE1fUExfRkxBR19OT19FVklDVCBtZWFucyB0aGF0IHRoZSBidWZmZXIgbWF5IG5ldmVyCj4+IC0g KiBiZSBldmljdGVkIHRvIG1ha2Ugcm9vbSBmb3Igb3RoZXIgYnVmZmVycy4KPj4gICAqIFRUTV9Q TF9GTEFHX1RPUERPV04gcmVxdWVzdHMgdG8gYmUgcGxhY2VkIGZyb20gdGhlCj4+ICAgKiB0b3Ag b2YgdGhlIG1lbW9yeSBhcmVhLCBpbnN0ZWFkIG9mIHRoZSBib3R0b20uCj4+ICAgKi8KPj4KPj4g LSNkZWZpbmUgVFRNX1BMX0ZMQUdfQ0FDSEVEICAgICAgKDEgPDwgMTYpCj4+IC0jZGVmaW5lIFRU TV9QTF9GTEFHX1VOQ0FDSEVEICAgICgxIDw8IDE3KQo+PiAtI2RlZmluZSBUVE1fUExfRkxBR19X QyAgICAgICAgICAoMSA8PCAxOCkKPj4gI2RlZmluZSBUVE1fUExfRkxBR19DT05USUdVT1VTICAo MSA8PCAxOSkKPj4gI2RlZmluZSBUVE1fUExfRkxBR19UT1BET1dOICAgICAoMSA8PCAyMikKPiBE byB0aGVzZSBiaXQgc2hpZnRzIG1lYW4gYW55dGhpbmcgYW55bW9yZT8KCk5vcGUsIHdhbnQgdG8g dHVybiB0aGVtIGludG8gZmllbGRzIGluIHRoZSBwbGFjZW1lbnQgb3IgZW5jb2RlIHRoZW0gCnNv bWVob3cgZWxzZS4KClNvIEkgZGlkbid0IGJvdGhlciByZW51bWJlcmluZyB0aGVtIGhlcmUuCgo+ Cj4gVGhpcyBzZXJpZXMgaXMgYSBuaWNlIGNsZWFudXAuICBGb3IgbWUgaXQgbWFrZXMgdGhlIGNh Y2hpbmcgbWVjaGFuaXNtIGEgbG90IG1vcmUgY2xlYXIuCj4KPiBJZiB0aGUgcmVtb3ZhbCBvZiB0 aGUgaW9yZW1hcCgpIChjb21tZW50IGFib3ZlKSBpcyBvayw6Cj4KPiBSZXZpZXdlZC1ieTogTWlj aGFlbCBKLiBSdWhsIDxtaWNoYWVsLmoucnVobEBpbnRlbC5jb20+CgpUaGFua3MsCkNocmlzdGlh bi4KCj4KPiBtCj4KPj4gLSNkZWZpbmUgVFRNX1BMX01BU0tfQ0FDSElORyAgICAgKFRUTV9QTF9G TEFHX0NBQ0hFRCB8IFwKPj4gLQkJCQkgVFRNX1BMX0ZMQUdfVU5DQUNIRUQgfCBcCj4+IC0JCQkJ IFRUTV9QTF9GTEFHX1dDKQo+PiAtCj4+IC8qKgo+PiAgICogc3RydWN0IHR0bV9wbGFjZQo+PiAg ICoKPj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL3R0bS90dG1fdHQuaCBiL2luY2x1ZGUvZHJt L3R0bS90dG1fdHQuaAo+PiBpbmRleCBjMzljNzIyZDUxODQuLmUwNDJkZWM1ZTZjMSAxMDA2NDQK Pj4gLS0tIGEvaW5jbHVkZS9kcm0vdHRtL3R0bV90dC5oCj4+ICsrKyBiL2luY2x1ZGUvZHJtL3R0 bS90dG1fdHQuaAo+PiBAQCAtMTY0LDIxICsxNjQsNiBAQCB2b2lkIHR0bV90dF9kZXN0cm95X2Nv bW1vbihzdHJ1Y3QgdHRtX2JvX2RldmljZQo+PiAqYmRldiwgc3RydWN0IHR0bV90dCAqdHRtKTsK Pj4gICAqIFN3YXAgaW4gYSBwcmV2aW91c2x5IHN3YXAgb3V0IHR0bV90dC4KPj4gICAqLwo+PiBp bnQgdHRtX3R0X3N3YXBpbihzdHJ1Y3QgdHRtX3R0ICp0dG0pOwo+PiAtCj4+IC0vKioKPj4gLSAq IHR0bV90dF9zZXRfcGxhY2VtZW50X2NhY2hpbmc6Cj4+IC0gKgo+PiAtICogQHR0bSBBIHN0cnVj dCB0dG1fdHQgdGhlIGJhY2tpbmcgcGFnZXMgb2Ygd2hpY2ggd2lsbCBjaGFuZ2UgY2FjaGluZyBw b2xpY3kuCj4+IC0gKiBAcGxhY2VtZW50OiBGbGFnIGluZGljYXRpbmcgdGhlIGRlc2lyZWQgY2Fj aGluZyBwb2xpY3kuCj4+IC0gKgo+PiAtICogVGhpcyBmdW5jdGlvbiB3aWxsIGNoYW5nZSBjYWNo aW5nIHBvbGljeSBvZiBhbnkgZGVmYXVsdCBrZXJuZWwgbWFwcGluZ3Mgb2YKPj4gLSAqIHRoZSBw YWdlcyBiYWNraW5nIEB0dG0uIElmIGNoYW5naW5nIGZyb20gY2FjaGVkIHRvIHVuY2FjaGVkIG9y Cj4+IC0gKiB3cml0ZS1jb21iaW5lZCwKPj4gLSAqIGFsbCBDUFUgY2FjaGVzIHdpbGwgZmlyc3Qg YmUgZmx1c2hlZCB0byBtYWtlIHN1cmUgdGhlIGRhdGEgb2YgdGhlIHBhZ2VzCj4+IC0gKiBoaXQg UkFNLiBUaGlzIGZ1bmN0aW9uIG1heSBiZSB2ZXJ5IGNvc3RseSBhcyBpdCBpbnZvbHZlcyBnbG9i YWwgVExCCj4+IC0gKiBhbmQgY2FjaGUgZmx1c2hlcyBhbmQgcG90ZW50aWFsIHBhZ2Ugc3BsaXR0 aW5nIC8gY29tYmluaW5nLgo+PiAtICovCj4+IC1pbnQgdHRtX3R0X3NldF9wbGFjZW1lbnRfY2Fj aGluZyhzdHJ1Y3QgdHRtX3R0ICp0dG0sIHVpbnQzMl90IHBsYWNlbWVudCk7Cj4+IGludCB0dG1f dHRfc3dhcG91dChzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwgc3RydWN0IHR0bV90dCAqdHRt KTsKPj4KPj4gLyoqCj4+IC0tCj4+IDIuMTcuMQo+Pgo+PiBfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwo+PiBkcmktZGV2ZWwgbWFpbGluZyBsaXN0Cj4+IGRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVs QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=