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 1CDB2CD6E45 for ; Fri, 29 May 2026 09:26:10 +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:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=feIMl6uOtjpclwzsaOiSFub1C8Waqaoi+o+RoyT0sMM=; b=VE0oQpQAJBmMJw D3Gh44/ZLiySf0a6T+5vgD/YiZC3YysQGvrtv3kFXioaorAtge7dz9jnkwjg0VolU/5YJoHIFFwio 75xmq9oHLYEZNI9BbvhZ3ieZZqY9vO/+3mtkxoRh1twX4oacHgVP64rw9qbotircrfm2rYiI3Asy0 vWovjK3jOjEvbi8NGHP6syKhQNKMrzstrD+pAgGyHkCPySGBW4EqNYLkKGzHeVx2az4SGqLSKd6cG 61a/XuuTZqaPnenY8sFcw7/v56eErKYnNafkWdbO5m/0did9rvDE6h+jgtqm4SEH41qUAi7Nu5bu2 ytvjcaqMm9CSRv/FrYSA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wStTh-000000073uv-0tBC; Fri, 29 May 2026 09:26:05 +0000 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wStTf-000000073uH-0VC8 for opensbi@lists.infradead.org; Fri, 29 May 2026 09:26:04 +0000 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2ba3e3c4f87so142710995ad.3 for ; Fri, 29 May 2026 02:26:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780046762; x=1780651562; darn=lists.infradead.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=wpDzRRAKp97GydX367wy7HLw1sw4piuQAKpfjuVSJTk=; b=Cktd0UgUeCsMf1/4BVx8T5BuoKjHgFK2cqAN35dXwSGTiiD1A4zVXkEla5dF8a6SNq KUT/8U/rOxpK0UnZEiS1oJ/vWb4L+LsnLbEU+mgSzznQBMdWleVDOfij22zEjgajIc4k rM9SEFY7d5lTvxJvX7FWinMQM7iG2LQYHqehgEcgSzgS7t4VCcHpEVH9wTZ0pXquwUpf kbTZ2sDW8vwFTgg6OTG6ssbo2OIHwkWn3CPTMjMhXhBnrt12qOjwS/ABwD5w8L8G2LNe mGH9FsEsQote+qcao2HXIAk/9lhEBXs/p43Z2pIgKAt1d7Ck7qDB6xxj4e4/E/WsrH5C YGPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780046762; x=1780651562; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=wpDzRRAKp97GydX367wy7HLw1sw4piuQAKpfjuVSJTk=; b=TW6JxfwNXPLKAGP193DAXdH1ktdN5N586S5bDImRdWsYFk3JAZQ5/kPPpo57irE2LE PrPSbKdKgRmYW0ser1udb+5ynb3iD9bei+8p9pDVxHG6YauYWyv1+Ja//EzamhmNC5kI UglVKkc/MW3yRnWujY0Z65ayNu6V28KmTSqV2wOx7pC+h84zgePOsyUz+UpY3XHfam0t FfoTc7u7IOxhPgbB8eVUA3MzyaGCxzWnJjx4kPh0lovFNUYZVUkHNI2X/aIk+e8Y4dFq nUhY39N4/X7rrKhlWO0yBSEkTrC7S7P+XUIE083/jrsBnJcMcCCwhYnx/pHjM8FbNM/i FM8A== X-Forwarded-Encrypted: i=1; AFNElJ+VmJckBoTidGgf59FpZ4FDWhkYFz4uKyz4Gh5I6npF4/YACp4ausCE0iJ0UiYyElmYkI0Lg0Ae@lists.infradead.org X-Gm-Message-State: AOJu0YwZNtzk0sZGlo31Zx2Tumqex7jn217owPDq6BXasBJl312fTY1X +Q/ObsfGDLfe6l6Sy1yphaveUVLfSQpHrnrDEfx4be5b3Kyt6WwGkgBb8GEaHiUd X-Gm-Gg: Acq92OGX23wTfsNf7CtOD8to7W0et6DQqF+wLeZrhMq7OjgQX24nWBPgsndZn5mGXxu 03XO4+couqWvQQ5joTlxH5e1U5NY1a3XJGAOTwiD7jINGJo/osJDP3m2Iq9lOWgf9fgaaOY0F9S HikEQYhXjQRqbQBcLTjgTnhJMsT7ZDLr2ydpBqVJT0hQAWl8UBTpuHSap2dW+UcoGgzZNNcR2QB TGss3M3YzkcesgmykmWxcjjKfYHpmAmcps4eLpneMKOBS5tPIPQW78sUDZ+Z4REyZHRvGKsRf/4 pQCeXX7SgRYviKX3dITErgwBcQbNJyOvcP/ZJen9xZwbNLD3yzOmVupaB0DcAVSOT28O9XEVVe1 0PRB9AO2QDLh3FfSGYdY1SDB1125Y/M+vlmp03/hJGsOT1Q1EkxpR4xcL3X8VhzMjTVE0pQ+RNm AmFf134it4lmAQ4F4/zwh3QEOo1kwnv9oNXg== X-Received: by 2002:a17:903:8c3:b0:2bf:2ce7:221c with SMTP id d9443c01a7336-2bf2ce724f5mr5545685ad.8.1780046762035; Fri, 29 May 2026 02:26:02 -0700 (PDT) Received: from localhost ([2001:19f0:8001:1b2d:5400:5ff:fefa:a95d]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2bf23b001a8sm13836885ad.40.2026.05.29.02.26.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 May 2026 02:26:01 -0700 (PDT) Date: Fri, 29 May 2026 17:25:49 +0800 From: Inochi Amaoto To: Xiang W , Inochi Amaoto , opensbi@lists.infradead.org Cc: anup@brainfault.org, Han Gao Subject: Re: [PATCH] platform: Allow platforms to customize TLB operations Message-ID: References: <20260529073510.97299-1-wangxiang@iscas.ac.cn> <3518a37ebaaf7c8f4eb3afdcbf8c888bbae09047.camel@iscas.ac.cn> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <3518a37ebaaf7c8f4eb3afdcbf8c888bbae09047.camel@iscas.ac.cn> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260529_022603_191590_BDDD8504 X-CRM114-Status: GOOD ( 25.90 ) X-BeenThere: opensbi@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: "opensbi" Errors-To: opensbi-bounces+opensbi=archiver.kernel.org@lists.infradead.org T24gRnJpLCBNYXkgMjksIDIwMjYgYXQgMDU6MjQ6MTdQTSArMDgwMCwgWGlhbmcgVyB3cm90ZToK PiDlnKggMjAyNi0wNS0yOeS6lOeahCAxNjo1NiArMDgwMO+8jElub2NoaSBBbWFvdG/lhpnpgZPv vJoKPiA+IE9uIEZyaSwgTWF5IDI5LCAyMDI2IGF0IDAzOjM1OjEwUE0gKzA4MDAsIFhpYW5nIFcg d3JvdGU6Cj4gPiA+IFNvbWUgVC1IZWFkIGJhc2VkIHByb2Nlc3NvcnMsIGZvciBleGFtcGxlIHRo ZSBTb3BoZ28gU0cyMDQ0LCBoYXZlIGEKPiA+ID4gSlRMQiBlcnJhdGEgdGhhdCByZXF1aXJlcyBz cGVjaWFsIGhhbmRsaW5nIG9mIGNlcnRhaW4gVExCIG1haW50ZW5hbmNlCj4gPiA+IGluc3RydWN0 aW9ucyAoc2ZlbmNlLnZtYSkuCj4gPiA+IAo+ID4gPiBFbmFibGUgdGhlIEpUTEIgd29ya2Fyb3Vu ZCBmb3IgYWZmZWN0ZWQgYm9hcmRzLgo+ID4gPiAKPiA+ID4gU2lnbmVkLW9mZi1ieTogWGlhbmcg VyA8d2FuZ3hpYW5nQGlzY2FzLmFjLmNuPgo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBIYW4gR2FvIDxn YW9oYW5AaXNjYXMuYWMuY24+Cj4gPiA+IC0tLQo+ID4gPiDCoGluY2x1ZGUvc2JpL3NiaV9wbGF0 Zm9ybS5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMTYyICsrKysrKysr KysrKysrKysrKysKPiA+ID4gwqBsaWIvc2JpL3NiaV90bGIuY8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMjggKysrKwo+ID4gPiDCoHBs YXRmb3JtL2dlbmVyaWMvaW5jbHVkZS90aGVhZC9jOXh4X2VycmF0YS5oIHzCoMKgIDEgKwo+ID4g PiDCoHBsYXRmb3JtL2dlbmVyaWMvdGhlYWQvdGhlYWQtZ2VuZXJpYy5jwqDCoMKgwqDCoMKgIHzC oCAyNiArKy0KPiA+ID4gwqA0IGZpbGVzIGNoYW5nZWQsIDIxNiBpbnNlcnRpb25zKCspLCAxIGRl bGV0aW9uKC0pCj4gPiA+IAo+ID4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zYmkvc2JpX3BsYXRm b3JtLmggYi9pbmNsdWRlL3NiaS9zYmlfcGxhdGZvcm0uaAo+ID4gPiBpbmRleCBmZTM4MmI1Ni4u OTExYjM3YmYgMTAwNjQ0Cj4gPiA+IC0tLSBhL2luY2x1ZGUvc2JpL3NiaV9wbGF0Zm9ybS5oCj4g PiA+ICsrKyBiL2luY2x1ZGUvc2JpL3NiaV9wbGF0Zm9ybS5oCj4gPiA+IEBAIC01Niw2ICs1Niw3 IEBAIHN0cnVjdCBzYmlfZG9tYWluX21lbXJlZ2lvbjsKPiA+ID4gwqBzdHJ1Y3Qgc2JpX2VjYWxs X3JldHVybjsKPiA+ID4gwqBzdHJ1Y3Qgc2JpX3RyYXBfcmVnczsKPiA+ID4gwqBzdHJ1Y3Qgc2Jp X2hhcnRfZmVhdHVyZXM7Cj4gPiA+ICtzdHJ1Y3Qgc2JpX3RsYl9pbmZvOwo+ID4gPiDCoHVuaW9u IHNiaV9sZHN0X2RhdGE7Cj4gPiA+IMKgCj4gPiA+IMKgLyoqIFBvc3NpYmxlIGZlYXR1cmUgZmxh Z3Mgb2YgYSBwbGF0Zm9ybSAqLwo+ID4gPiBAQCAtMTI1LDYgKzEyNiwyNyBAQCBzdHJ1Y3Qgc2Jp X3BsYXRmb3JtX29wZXJhdGlvbnMgewo+ID4gPiDCoAkvKiogR2V0IHRsYiBmaWZvIG51bSBlbnRy aWVzKi8KPiA+ID4gwqAJdTMyICgqZ2V0X3RsYl9udW1fZW50cmllcykodm9pZCk7Cj4gPiA+IMKg Cj4gPiA+ICsJLyoqIFBsYXRmb3JtIGhvb2sgZm9yIGN1c3RvbSBmZW5jZS5pICovCj4gPiA+ICsJ dm9pZCAoKmxvY2FsX2ZlbmNlX2kpKHN0cnVjdCBzYmlfdGxiX2luZm8gKnRpbmZvKTsKPiA+ID4g Kwo+ID4gPiArCS8qKiBQbGF0Zm9ybSBob29rIGZvciBjdXN0b20gc3VwZXJ2aXNvci1tb2RlIFRM QiBmbHVzaCAqLwo+ID4gPiArCXZvaWQgKCpsb2NhbF9zZmVuY2Vfdm1hKShzdHJ1Y3Qgc2JpX3Rs Yl9pbmZvICp0aW5mbyk7Cj4gPiA+ICsKPiA+ID4gKwkvKiogUGxhdGZvcm0gaG9vayBmb3IgY3Vz dG9tIHN1cGVydmlzb3ItbW9kZSBUTEIgZmx1c2ggd2l0aCBBU0lEICovCj4gPiA+ICsJdm9pZCAo KmxvY2FsX3NmZW5jZV92bWFfYXNpZCkoc3RydWN0IHNiaV90bGJfaW5mbyAqdGluZm8pOwo+ID4g PiArCj4gPiA+ICsJLyoqIFBsYXRmb3JtIGhvb2sgZm9yIGN1c3RvbSBHLXN0YWdlIFRMQiBmbHVz aCBmb3IgYSBzcGVjaWZpYyBWTUlEICovCj4gPiA+ICsJdm9pZCAoKmxvY2FsX2hmZW5jZV9ndm1h X3ZtaWQpKHN0cnVjdCBzYmlfdGxiX2luZm8gKnRpbmZvKTsKPiA+ID4gKwo+ID4gPiArCS8qKiBQ bGF0Zm9ybSBob29rIGZvciBjdXN0b20gRy1zdGFnZSBUTEIgZmx1c2ggKi8KPiA+ID4gKwl2b2lk ICgqbG9jYWxfaGZlbmNlX2d2bWEpKHN0cnVjdCBzYmlfdGxiX2luZm8gKnRpbmZvKTsKPiA+ID4g Kwo+ID4gPiArCS8qKiBQbGF0Zm9ybSBob29rIGZvciBjdXN0b20gVlMtc3RhZ2UgVExCIGZsdXNo IHdpdGggQVNJRCAqLwo+ID4gPiArCXZvaWQgKCpsb2NhbF9oZmVuY2VfdnZtYV9hc2lkKShzdHJ1 Y3Qgc2JpX3RsYl9pbmZvICp0aW5mbyk7Cj4gPiA+ICsKPiA+ID4gKwkvKiogUGxhdGZvcm0gaG9v ayBmb3IgY3VzdG9tIFZTLXN0YWdlIFRMQiBmbHVzaCAqLwo+ID4gPiArCXZvaWQgKCpsb2NhbF9o ZmVuY2VfdnZtYSkoc3RydWN0IHNiaV90bGJfaW5mbyAqdGluZm8pOwo+ID4gPiArCj4gPiA+IMKg CS8qKiBJbml0aWFsaXplIHBsYXRmb3JtIHRpbWVyIGR1cmluZyBjb2xkIGJvb3QgKi8KPiA+ID4g wqAJaW50ICgqdGltZXJfaW5pdCkodm9pZCk7Cj4gPiA+IMKgCj4gPiA+IEBAIC0zMTMsNiArMzM1 LDE0NiBAQCBzdGF0aWMgaW5saW5lIHUzMiBzYmlfcGxhdGZvcm1fdGxiX2ZpZm9fbnVtX2VudHJp ZXMoY29uc3Qgc3RydWN0IHNiaV9wbGF0Zm9ybSAqcAo+ID4gPiDCoAlyZXR1cm4gc2JpX2hhcnRf Y291bnQoKTsKPiA+ID4gwqB9Cj4gPiA+IMKgCj4gPiA+ICsvKioKPiA+ID4gKyAqIFBsYXRmb3Jt IGhvb2sgZm9yIGN1c3RvbSBmZW5jZS5pCj4gPiA+ICsgKgo+ID4gPiArICogQHBhcmFtIHBsYXQg cG9pbnRlciB0byBzdHJ1Y3Qgc2JpX3BsYXRmb3JtCj4gPiA+ICsgKiBAcGFlYW0gdGluZm8gcG9p bnRlciB0byBzdHJ1Y3Qgc2JpX3RsYl9pbmZvCj4gPiA+ICsgKgo+ID4gPiArICogQHJldHVybiAw IGluZGljYXRlcyB0aGF0IHRoZSBwbGF0Zm9ybSBzdXBwb3J0cyB0aGUgb3BlcmF0aW9uIGFuZCB0 aGUKPiA+ID4gKyAqIG9wZXJhdGlvbiB3YXMgc3VjY2Vzc2Z1bDsgb3RoZXJ3aXNlLCBhIG5vcm1h bCBvcGVyYXRpb24gbmVlZHMgdG8gYmUgcGVyZm9ybWVkLgo+ID4gPiArICovCj4gPiA+ICtzdGF0 aWMgaW5saW5lIHUzMiBzYmlfcGxhdGZvcm1fbG9jYWxfZmVuY2VfaSgKPiA+ID4gKwkJCQkJY29u c3Qgc3RydWN0IHNiaV9wbGF0Zm9ybSAqcGxhdCwKPiA+ID4gKwkJCQkJc3RydWN0IHNiaV90bGJf aW5mbyAqdGluZm8pCj4gPiA+ICt7Cj4gPiA+ICsJaWYgKHBsYXQgJiYgc2JpX3BsYXRmb3JtX29w cyhwbGF0KS0+bG9jYWxfZmVuY2VfaSkgewo+ID4gPiArCQlzYmlfcGxhdGZvcm1fb3BzKHBsYXQp LT5sb2NhbF9mZW5jZV9pKHRpbmZvKTsKPiA+ID4gKwkJcmV0dXJuIDA7Cj4gPiA+ICsJfQo+ID4g PiArCXJldHVybiBTQklfRU5PVFNVUFA7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gKy8qKgo+ID4g PiArICogUGxhdGZvcm0gaG9vayBmb3IgY3VzdG9tIHN1cGVydmlzb3ItbW9kZSBUTEIgZmx1c2gK PiA+ID4gKyAqCj4gPiA+ICsgKiBAcGFyYW0gcGxhdCBwb2ludGVyIHRvIHN0cnVjdCBzYmlfcGxh dGZvcm0KPiA+ID4gKyAqIEBwYWVhbSB0aW5mbyBwb2ludGVyIHRvIHN0cnVjdCBzYmlfdGxiX2lu Zm8KPiA+ID4gKyAqCj4gPiA+ICsgKiBAcmV0dXJuIDAgaW5kaWNhdGVzIHRoYXQgdGhlIHBsYXRm b3JtIHN1cHBvcnRzIHRoZSBvcGVyYXRpb24gYW5kIHRoZQo+ID4gPiArICogb3BlcmF0aW9uIHdh cyBzdWNjZXNzZnVsOyBvdGhlcndpc2UsIGEgbm9ybWFsIG9wZXJhdGlvbiBuZWVkcyB0byBiZSBw ZXJmb3JtZWQuCj4gPiA+ICsgKi8KPiA+ID4gK3N0YXRpYyBpbmxpbmUgdTMyIHNiaV9wbGF0Zm9y bV9sb2NhbF9zZmVuY2Vfdm1hKAo+ID4gPiArCQkJCQljb25zdCBzdHJ1Y3Qgc2JpX3BsYXRmb3Jt ICpwbGF0LAo+ID4gPiArCQkJCQlzdHJ1Y3Qgc2JpX3RsYl9pbmZvICp0aW5mbykKPiA+ID4gK3sK PiA+ID4gKwlpZiAocGxhdCAmJiBzYmlfcGxhdGZvcm1fb3BzKHBsYXQpLT5sb2NhbF9zZmVuY2Vf dm1hKSB7Cj4gPiA+ICsJCXNiaV9wbGF0Zm9ybV9vcHMocGxhdCktPmxvY2FsX3NmZW5jZV92bWEo dGluZm8pOwo+ID4gPiArCQlyZXR1cm4gMDsKPiA+ID4gKwl9Cj4gPiA+ICsJcmV0dXJuIFNCSV9F Tk9UU1VQUDsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArLyoqCj4gPiA+ICsgKiBQbGF0Zm9ybSBo b29rIGZvciBjdXN0b20gc3VwZXJ2aXNvci1tb2RlIFRMQiBmbHVzaCB3aXRoIEFTSUQKPiA+ID4g KyAqCj4gPiA+ICsgKiBAcGFyYW0gcGxhdCBwb2ludGVyIHRvIHN0cnVjdCBzYmlfcGxhdGZvcm0K PiA+ID4gKyAqIEBwYWVhbSB0aW5mbyBwb2ludGVyIHRvIHN0cnVjdCBzYmlfdGxiX2luZm8KPiA+ ID4gKyAqCj4gPiA+ICsgKiBAcmV0dXJuIDAgaW5kaWNhdGVzIHRoYXQgdGhlIHBsYXRmb3JtIHN1 cHBvcnRzIHRoZSBvcGVyYXRpb24gYW5kIHRoZQo+ID4gPiArICogb3BlcmF0aW9uIHdhcyBzdWNj ZXNzZnVsOyBvdGhlcndpc2UsIGEgbm9ybWFsIG9wZXJhdGlvbiBuZWVkcyB0byBiZSBwZXJmb3Jt ZWQuCj4gPiA+ICsgKi8KPiA+ID4gK3N0YXRpYyBpbmxpbmUgdTMyIHNiaV9wbGF0Zm9ybV9sb2Nh bF9zZmVuY2Vfdm1hX2FzaWQoCj4gPiA+ICsJCQkJCWNvbnN0IHN0cnVjdCBzYmlfcGxhdGZvcm0g KnBsYXQsCj4gPiA+ICsJCQkJCXN0cnVjdCBzYmlfdGxiX2luZm8gKnRpbmZvKQo+ID4gPiArewo+ ID4gPiArCWlmIChwbGF0ICYmIHNiaV9wbGF0Zm9ybV9vcHMocGxhdCktPmxvY2FsX3NmZW5jZV92 bWFfYXNpZCkgewo+ID4gPiArCQlzYmlfcGxhdGZvcm1fb3BzKHBsYXQpLT5sb2NhbF9zZmVuY2Vf dm1hX2FzaWQodGluZm8pOwo+ID4gPiArCQlyZXR1cm4gMDsKPiA+ID4gKwl9Cj4gPiA+ICsJcmV0 dXJuIFNCSV9FTk9UU1VQUDsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArLyoqCj4gPiA+ICsgKiBQ bGF0Zm9ybSBob29rIGZvciBjdXN0b20gRy1zdGFnZSBUTEIgZmx1c2ggZm9yIGEgc3BlY2lmaWMg Vk1JRAo+ID4gPiArICoKPiA+ID4gKyAqIEBwYXJhbSBwbGF0IHBvaW50ZXIgdG8gc3RydWN0IHNi aV9wbGF0Zm9ybQo+ID4gPiArICogQHBhZWFtIHRpbmZvIHBvaW50ZXIgdG8gc3RydWN0IHNiaV90 bGJfaW5mbwo+ID4gPiArICoKPiA+ID4gKyAqIEByZXR1cm4gMCBpbmRpY2F0ZXMgdGhhdCB0aGUg cGxhdGZvcm0gc3VwcG9ydHMgdGhlIG9wZXJhdGlvbiBhbmQgdGhlCj4gPiA+ICsgKiBvcGVyYXRp b24gd2FzIHN1Y2Nlc3NmdWw7IG90aGVyd2lzZSwgYSBub3JtYWwgb3BlcmF0aW9uIG5lZWRzIHRv IGJlIHBlcmZvcm1lZC4KPiA+ID4gKyAqLwo+ID4gPiArc3RhdGljIGlubGluZSB1MzIgc2JpX3Bs YXRmb3JtX2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWQoCj4gPiA+ICsJCQkJCWNvbnN0IHN0cnVjdCBz YmlfcGxhdGZvcm0gKnBsYXQsCj4gPiA+ICsJCQkJCXN0cnVjdCBzYmlfdGxiX2luZm8gKnRpbmZv KQo+ID4gPiArewo+ID4gPiArCWlmIChwbGF0ICYmIHNiaV9wbGF0Zm9ybV9vcHMocGxhdCktPmxv Y2FsX2hmZW5jZV9ndm1hX3ZtaWQpIHsKPiA+ID4gKwkJc2JpX3BsYXRmb3JtX29wcyhwbGF0KS0+ bG9jYWxfaGZlbmNlX2d2bWFfdm1pZCh0aW5mbyk7Cj4gPiA+ICsJCXJldHVybiAwOwo+ID4gPiAr CX0KPiA+ID4gKwlyZXR1cm4gU0JJX0VOT1RTVVBQOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICsv KioKPiA+ID4gKyAqIFBsYXRmb3JtIGhvb2sgZm9yIGN1c3RvbSBHLXN0YWdlIFRMQiBmbHVzaAo+ ID4gPiArICoKPiA+ID4gKyAqIEBwYXJhbSBwbGF0IHBvaW50ZXIgdG8gc3RydWN0IHNiaV9wbGF0 Zm9ybQo+ID4gPiArICogQHBhZWFtIHRpbmZvIHBvaW50ZXIgdG8gc3RydWN0IHNiaV90bGJfaW5m bwo+ID4gPiArICoKPiA+ID4gKyAqIEByZXR1cm4gMCBpbmRpY2F0ZXMgdGhhdCB0aGUgcGxhdGZv cm0gc3VwcG9ydHMgdGhlIG9wZXJhdGlvbiBhbmQgdGhlCj4gPiA+ICsgKiBvcGVyYXRpb24gd2Fz IHN1Y2Nlc3NmdWw7IG90aGVyd2lzZSwgYSBub3JtYWwgb3BlcmF0aW9uIG5lZWRzIHRvIGJlIHBl cmZvcm1lZC4KPiA+ID4gKyAqLwo+ID4gPiArc3RhdGljIGlubGluZSB1MzIgc2JpX3BsYXRmb3Jt X2xvY2FsX2hmZW5jZV9ndm1hKAo+ID4gPiArCQkJCQljb25zdCBzdHJ1Y3Qgc2JpX3BsYXRmb3Jt ICpwbGF0LAo+ID4gPiArCQkJCQlzdHJ1Y3Qgc2JpX3RsYl9pbmZvICp0aW5mbykKPiA+ID4gK3sK PiA+ID4gKwlpZiAocGxhdCAmJiBzYmlfcGxhdGZvcm1fb3BzKHBsYXQpLT5sb2NhbF9oZmVuY2Vf Z3ZtYSkgewo+ID4gPiArCQlzYmlfcGxhdGZvcm1fb3BzKHBsYXQpLT5sb2NhbF9oZmVuY2VfZ3Zt YSh0aW5mbyk7Cj4gPiA+ICsJCXJldHVybiAwOwo+ID4gPiArCX0KPiA+ID4gKwlyZXR1cm4gU0JJ X0VOT1RTVVBQOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICsvKioKPiA+ID4gKyAqIFBsYXRmb3Jt IGhvb2sgZm9yIGN1c3RvbSBWUy1zdGFnZSBUTEIgZmx1c2ggd2l0aCBBU0lECj4gPiA+ICsgKgo+ ID4gPiArICogQHBhcmFtIHBsYXQgcG9pbnRlciB0byBzdHJ1Y3Qgc2JpX3BsYXRmb3JtCj4gPiA+ ICsgKiBAcGFlYW0gdGluZm8gcG9pbnRlciB0byBzdHJ1Y3Qgc2JpX3RsYl9pbmZvCj4gPiA+ICsg Kgo+ID4gPiArICogQHJldHVybiAwIGluZGljYXRlcyB0aGF0IHRoZSBwbGF0Zm9ybSBzdXBwb3J0 cyB0aGUgb3BlcmF0aW9uIGFuZCB0aGUKPiA+ID4gKyAqIG9wZXJhdGlvbiB3YXMgc3VjY2Vzc2Z1 bDsgb3RoZXJ3aXNlLCBhIG5vcm1hbCBvcGVyYXRpb24gbmVlZHMgdG8gYmUgcGVyZm9ybWVkLgo+ ID4gPiArICovCj4gPiA+ICtzdGF0aWMgaW5saW5lIHUzMiBzYmlfcGxhdGZvcm1fbG9jYWxfaGZl bmNlX3Z2bWFfYXNpZCgKPiA+ID4gKwkJCQkJY29uc3Qgc3RydWN0IHNiaV9wbGF0Zm9ybSAqcGxh dCwKPiA+ID4gKwkJCQkJc3RydWN0IHNiaV90bGJfaW5mbyAqdGluZm8pCj4gPiA+ICt7Cj4gPiA+ ICsJaWYgKHBsYXQgJiYgc2JpX3BsYXRmb3JtX29wcyhwbGF0KS0+bG9jYWxfaGZlbmNlX3Z2bWFf YXNpZCkgewo+ID4gPiArCQlzYmlfcGxhdGZvcm1fb3BzKHBsYXQpLT5sb2NhbF9oZmVuY2VfdnZt YV9hc2lkKHRpbmZvKTsKPiA+ID4gKwkJcmV0dXJuIDA7Cj4gPiA+ICsJfQo+ID4gPiArCXJldHVy biBTQklfRU5PVFNVUFA7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gKy8qKgo+ID4gPiArICogUGxh dGZvcm0gaG9vayBmb3IgY3VzdG9tIFZTLXN0YWdlIFRMQiBmbHVzaAo+ID4gPiArICoKPiA+ID4g KyAqIEBwYXJhbSBwbGF0IHBvaW50ZXIgdG8gc3RydWN0IHNiaV9wbGF0Zm9ybQo+ID4gPiArICog QHBhZWFtIHRpbmZvIHBvaW50ZXIgdG8gc3RydWN0IHNiaV90bGJfaW5mbwo+ID4gPiArICoKPiA+ ID4gKyAqIEByZXR1cm4gMCBpbmRpY2F0ZXMgdGhhdCB0aGUgcGxhdGZvcm0gc3VwcG9ydHMgdGhl IG9wZXJhdGlvbiBhbmQgdGhlCj4gPiA+ICsgKiBvcGVyYXRpb24gd2FzIHN1Y2Nlc3NmdWw7IG90 aGVyd2lzZSwgYSBub3JtYWwgb3BlcmF0aW9uIG5lZWRzIHRvIGJlIHBlcmZvcm1lZC4KPiA+ID4g KyAqLwo+ID4gPiArc3RhdGljIGlubGluZSB1MzIgc2JpX3BsYXRmb3JtX2xvY2FsX2hmZW5jZV92 dm1hKAo+ID4gPiArCQkJCQljb25zdCBzdHJ1Y3Qgc2JpX3BsYXRmb3JtICpwbGF0LAo+ID4gPiAr CQkJCQlzdHJ1Y3Qgc2JpX3RsYl9pbmZvICp0aW5mbykKPiA+ID4gK3sKPiA+ID4gKwlpZiAocGxh dCAmJiBzYmlfcGxhdGZvcm1fb3BzKHBsYXQpLT5sb2NhbF9oZmVuY2VfdnZtYSkgewo+ID4gPiAr CQlzYmlfcGxhdGZvcm1fb3BzKHBsYXQpLT5sb2NhbF9oZmVuY2VfdnZtYSh0aW5mbyk7Cj4gPiA+ ICsJCXJldHVybiAwOwo+ID4gPiArCX0KPiA+ID4gKwlyZXR1cm4gU0JJX0VOT1RTVVBQOwo+ID4g PiArfQo+ID4gPiArCj4gPiA+IMKgLyoqCj4gPiA+IMKgICogR2V0IHRvdGFsIG51bWJlciBvZiBI QVJUcyBzdXBwb3J0ZWQgYnkgdGhlIHBsYXRmb3JtCj4gPiA+IMKgICoKPiA+ID4gZGlmZiAtLWdp dCBhL2xpYi9zYmkvc2JpX3RsYi5jIGIvbGliL3NiaS9zYmlfdGxiLmMKPiA+ID4gaW5kZXggYWRh NjBjMzIuLjY5YjhmYjQ4IDEwMDY0NAo+ID4gPiAtLS0gYS9saWIvc2JpL3NiaV90bGIuYwo+ID4g PiArKysgYi9saWIvc2JpL3NiaV90bGIuYwo+ID4gPiBAQCAtNDYsNiArNDYsMTAgQEAgc3RhdGlj IHZvaWQgc2JpX3RsYl9sb2NhbF9oZmVuY2VfdnZtYShzdHJ1Y3Qgc2JpX3RsYl9pbmZvICp0aW5m bykKPiA+ID4gwqAJaGdhdHAgPSBjc3Jfc3dhcChDU1JfSEdBVFAsCj4gPiA+IMKgCQkJICh2bWlk IDw8IEhHQVRQX1ZNSURfU0hJRlQpICYgSEdBVFBfVk1JRF9NQVNLKTsKPiA+ID4gwqAKPiA+ID4g KwlpZiAoc2JpX3BsYXRmb3JtX2xvY2FsX2hmZW5jZV9ndm1hKAo+ID4gPiArCQkJc2JpX3BsYXRm b3JtX3RoaXNoYXJ0X3B0cigpLCB0aW5mbykgPT0gU0JJX09LKQo+ID4gPiArCQlnaXRvIGRvbmU7 Cj4gPiA+ICsKPiA+ID4gwqAJaWYgKChzdGFydCA9PSAwICYmIHNpemUgPT0gMCkgfHwgKHNpemUg PT0gU0JJX1RMQl9GTFVTSF9BTEwpKSB7Cj4gPiA+IMKgCQlfX3NiaV9oZmVuY2VfdnZtYV9hbGwo KTsKPiA+ID4gwqAJCWdvdG8gZG9uZTsKPiA+ID4gQEAgLTY3LDYgKzcxLDEwIEBAIHN0YXRpYyB2 b2lkIHNiaV90bGJfbG9jYWxfaGZlbmNlX2d2bWEoc3RydWN0IHNiaV90bGJfaW5mbyAqdGluZm8p Cj4gPiA+IMKgCj4gPiA+IMKgCXNiaV9wbXVfY3RyX2luY3JfZncoU0JJX1BNVV9GV19IRkVOQ0Vf R1ZNQV9SQ1ZEKTsKPiA+ID4gwqAKPiA+ID4gKwlpZiAoc2JpX3BsYXRmb3JtX2xvY2FsX2hmZW5j ZV9ndm1hKAo+ID4gPiArCQkJc2JpX3BsYXRmb3JtX3RoaXNoYXJ0X3B0cigpLCB0aW5mbykgPT0g U0JJX09LKQo+ID4gPiArCQlyZXR1cm47Cj4gPiA+ICsKPiA+ID4gwqAJaWYgKChzdGFydCA9PSAw ICYmIHNpemUgPT0gMCkgfHwgKHNpemUgPT0gU0JJX1RMQl9GTFVTSF9BTEwpKSB7Cj4gPiA+IMKg CQlfX3NiaV9oZmVuY2VfZ3ZtYV9hbGwoKTsKPiA+ID4gwqAJCXJldHVybjsKPiA+ID4gQEAgLTg1 LDYgKzkzLDEwIEBAIHN0YXRpYyB2b2lkIHNiaV90bGJfbG9jYWxfc2ZlbmNlX3ZtYShzdHJ1Y3Qg c2JpX3RsYl9pbmZvICp0aW5mbykKPiA+ID4gwqAKPiA+ID4gwqAJc2JpX3BtdV9jdHJfaW5jcl9m dyhTQklfUE1VX0ZXX1NGRU5DRV9WTUFfUkNWRCk7Cj4gPiA+IMKgCj4gPiA+ICsJaWYgKHNiaV9w bGF0Zm9ybV9sb2NhbF9zZmVuY2Vfdm1hKAo+ID4gPiArCQkJc2JpX3BsYXRmb3JtX3RoaXNoYXJ0 X3B0cigpLCB0aW5mbykgPT0gU0JJX09LKQo+ID4gPiArCQlyZXR1cm47Cj4gPiA+ICsKPiA+ID4g wqAJaWYgKChzdGFydCA9PSAwICYmIHNpemUgPT0gMCkgfHwgKHNpemUgPT0gU0JJX1RMQl9GTFVT SF9BTEwpKSB7Cj4gPiA+IMKgCQlfX3NiaV9zZmVuY2Vfdm1hX2FsbCgpOwo+ID4gPiDCoAkJcmV0 dXJuOwo+ID4gPiBAQCAtMTExLDYgKzEyMywxMCBAQCBzdGF0aWMgdm9pZCBzYmlfdGxiX2xvY2Fs X2hmZW5jZV92dm1hX2FzaWQoc3RydWN0IHNiaV90bGJfaW5mbyAqdGluZm8pCj4gPiA+IMKgCWhn YXRwID0gY3NyX3N3YXAoQ1NSX0hHQVRQLAo+ID4gPiDCoAkJCSAodm1pZCA8PCBIR0FUUF9WTUlE X1NISUZUKSAmIEhHQVRQX1ZNSURfTUFTSyk7Cj4gPiA+IMKgCj4gPiA+ICsJaWYgKHNiaV9wbGF0 Zm9ybV9sb2NhbF9oZmVuY2VfdnZtYV9hc2lkKAo+ID4gPiArCQkJc2JpX3BsYXRmb3JtX3RoaXNo YXJ0X3B0cigpLCB0aW5mbykgPT0gU0JJX09LKQo+ID4gPiArCQlnb3RvIGRvbmU7Cj4gPiA+ICsK PiA+ID4gwqAJaWYgKChzdGFydCA9PSAwICYmIHNpemUgPT0gMCkgfHwgKHNpemUgPT0gU0JJX1RM Ql9GTFVTSF9BTEwpKSB7Cj4gPiA+IMKgCQlfX3NiaV9oZmVuY2VfdnZtYV9hc2lkKGFzaWQpOwo+ ID4gPiDCoAkJZ290byBkb25lOwo+ID4gPiBAQCAtMTMzLDYgKzE0OSwxMCBAQCBzdGF0aWMgdm9p ZCBzYmlfdGxiX2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWQoc3RydWN0IHNiaV90bGJfaW5mbyAqdGlu Zm8pCj4gPiA+IMKgCj4gPiA+IMKgCXNiaV9wbXVfY3RyX2luY3JfZncoU0JJX1BNVV9GV19IRkVO Q0VfR1ZNQV9WTUlEX1JDVkQpOwo+ID4gPiDCoAo+ID4gPiArCWlmIChzYmlfcGxhdGZvcm1fbG9j YWxfaGZlbmNlX2d2bWFfdm1pZCgKPiA+ID4gKwkJCXNiaV9wbGF0Zm9ybV90aGlzaGFydF9wdHIo KSwgdGluZm8pID09IFNCSV9PSykKPiA+ID4gKwkJcmV0dXJuOwo+ID4gPiArCj4gPiA+IMKgCWlm ICgoc3RhcnQgPT0gMCAmJiBzaXplID09IDApIHx8IChzaXplID09IFNCSV9UTEJfRkxVU0hfQUxM KSkgewo+ID4gPiDCoAkJX19zYmlfaGZlbmNlX2d2bWFfdm1pZCh2bWlkKTsKPiA+ID4gwqAJCXJl dHVybjsKPiA+ID4gQEAgLTE1Miw2ICsxNzIsMTAgQEAgc3RhdGljIHZvaWQgc2JpX3RsYl9sb2Nh bF9zZmVuY2Vfdm1hX2FzaWQoc3RydWN0IHNiaV90bGJfaW5mbyAqdGluZm8pCj4gPiA+IMKgCj4g PiA+IMKgCXNiaV9wbXVfY3RyX2luY3JfZncoU0JJX1BNVV9GV19TRkVOQ0VfVk1BX0FTSURfUkNW RCk7Cj4gPiA+IMKgCj4gPiA+ICsJaWYgKHNiaV9wbGF0Zm9ybV9sb2NhbF9zZmVuY2Vfdm1hX2Fz aWQoCj4gPiA+ICsJCQlzYmlfcGxhdGZvcm1fdGhpc2hhcnRfcHRyKCksIHRpbmZvKSA9PSBTQklf T0spCj4gPiA+ICsJCXJldHVybjsKPiA+ID4gKwo+ID4gPiDCoAkvKiBGbHVzaCBlbnRpcmUgTU0g Y29udGV4dCBmb3IgYSBnaXZlbiBBU0lEICovCj4gPiA+IMKgCWlmICgoc3RhcnQgPT0gMCAmJiBz aXplID09IDApIHx8IChzaXplID09IFNCSV9UTEJfRkxVU0hfQUxMKSkgewo+ID4gPiDCoAkJX19h c21fXyBfX3ZvbGF0aWxlX18oInNmZW5jZS52bWEgeDAsICUwIgo+ID4gPiBAQCAtMTczLDYgKzE5 NywxMCBAQCBzdGF0aWMgdm9pZCBzYmlfdGxiX2xvY2FsX2ZlbmNlX2koc3RydWN0IHNiaV90bGJf aW5mbyAqdGluZm8pCj4gPiA+IMKgewo+ID4gPiDCoAlzYmlfcG11X2N0cl9pbmNyX2Z3KFNCSV9Q TVVfRldfRkVOQ0VfSV9SRUNWRCk7Cj4gPiA+IMKgCj4gPiA+ICsJaWYgKHNiaV9wbGF0Zm9ybV9s b2NhbF9mZW5jZV9pKAo+ID4gPiArCQkJc2JpX3BsYXRmb3JtX3RoaXNoYXJ0X3B0cigpLCB0aW5m bykgPT0gU0JJX09LKQo+ID4gPiArCQlyZXR1cm47Cj4gPiA+ICsKPiA+ID4gwqAJX19hc21fXyBf X3ZvbGF0aWxlKCJmZW5jZS5pIik7Cj4gPiA+IMKgfQo+ID4gPiDCoAo+ID4gCj4gPiBJIHN1Z2dl c3Qgc3BsaXQgdGhlIGZvbGxvd2luZyBhcyBhIHNlcGFyYXRlIHBhdGNoLgo+ID4gCj4gPiA+IGRp ZmYgLS1naXQgYS9wbGF0Zm9ybS9nZW5lcmljL2luY2x1ZGUvdGhlYWQvYzl4eF9lcnJhdGEuaCBi L3BsYXRmb3JtL2dlbmVyaWMvaW5jbHVkZS90aGVhZC9jOXh4X2VycmF0YS5oCj4gPiA+IGluZGV4 IDQwYzE1ODdiLi43YTQxOWU0MSAxMDA2NDQKPiA+ID4gLS0tIGEvcGxhdGZvcm0vZ2VuZXJpYy9p bmNsdWRlL3RoZWFkL2M5eHhfZXJyYXRhLmgKPiA+ID4gKysrIGIvcGxhdGZvcm0vZ2VuZXJpYy9p bmNsdWRlL3RoZWFkL2M5eHhfZXJyYXRhLmgKPiA+ID4gQEAgLTgsNiArOCw3IEBACj4gPiA+IMKg ICovCj4gPiA+IMKgI2RlZmluZSBUSEVBRF9RVUlSS19FUlJBVEFfVExCX0ZMVVNICQlCSVQoMCkK PiA+ID4gwqAjZGVmaW5lIFRIRUFEX1FVSVJLX0VSUkFUQV9USEVBRF9QTVUJCUJJVCgxKQo+ID4g PiArI2RlZmluZSBUSEVBRF9RVUlSS19FUlJBVEFfSlRMQgkJCUJJVCgyKQo+ID4gPiDCoAo+ID4g PiDCoHZvaWQgdGhlYWRfcmVnaXN0ZXJfdGxiX2ZsdXNoX3RyYXBfaGFuZGxlcih2b2lkKTsKPiA+ ID4gwqAKPiA+ID4gZGlmZiAtLWdpdCBhL3BsYXRmb3JtL2dlbmVyaWMvdGhlYWQvdGhlYWQtZ2Vu ZXJpYy5jIGIvcGxhdGZvcm0vZ2VuZXJpYy90aGVhZC90aGVhZC1nZW5lcmljLmMKPiA+ID4gaW5k ZXggZGRiNGYwYmYuLjg2NzkzYWIxIDEwMDY0NAo+ID4gPiAtLS0gYS9wbGF0Zm9ybS9nZW5lcmlj L3RoZWFkL3RoZWFkLWdlbmVyaWMuYwo+ID4gPiArKysgYi9wbGF0Zm9ybS9nZW5lcmljL3RoZWFk L3RoZWFkLWdlbmVyaWMuYwo+ID4gPiBAQCAtMTMsNiArMTMsNyBAQAo+ID4gPiDCoCNpbmNsdWRl IDxzYmkvc2JpX3BsYXRmb3JtLmg+Cj4gPiA+IMKgI2luY2x1ZGUgPHNiaS9zYmlfc2NyYXRjaC5o Pgo+ID4gPiDCoCNpbmNsdWRlIDxzYmkvc2JpX3N0cmluZy5oPgo+ID4gPiArI2luY2x1ZGUgPHNi aS9zYmlfdGxiLmg+Cj4gPiA+IMKgI2luY2x1ZGUgPHNiaV91dGlscy9mZHQvZmR0X2hlbHBlci5o Pgo+ID4gPiDCoAo+ID4gPiDCoHN0cnVjdCB0aGVhZF9nZW5lcmljX3F1aXJrcyB7Cj4gPiA+IEBA IC0zOSw2ICs0MCwyMCBAQCBzdGF0aWMgaW50IHRoZWFkX3BtdV9leHRlbnNpb25zX2luaXQoc3Ry dWN0IHNiaV9oYXJ0X2ZlYXR1cmVzICpoZmVhdHVyZXMpCj4gPiA+IMKgCXJldHVybiAwOwo+ID4g PiDCoH0KPiA+ID4gwqAKPiA+ID4gK3N0YXRpYyB2b2lkIHRoZWFkX2p0bGJfbG9jYWxfc2ZlbmNl X3ZtYShzdHJ1Y3Qgc2JpX3RsYl9pbmZvICp0aW5mbykKPiA+ID4gK3sKPiA+ID4gKwlfX2FzbV9f IF9fdm9sYXRpbGVfXygic2ZlbmNlLnZtYSIpOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0 aWMgdm9pZCB0aGVhZF9qdGxiX2xvY2FsX3NmZW5jZV92dm1hX2FzaWQoc3RydWN0IHNiaV90bGJf aW5mbyAqdGluZm8pCj4gPiA+ICt7Cj4gPiA+ICsJLyogRmx1c2ggZW50aXJlIE1NIGNvbnRleHQg Zm9yIGEgZ2l2ZW4gQVNJRCAqLwo+ID4gPiArCV9fYXNtX18gX192b2xhdGlsZV9fKCJzZmVuY2Uu dm1hIHgwLCAlMCIKPiA+ID4gKwkJCcKgwqDCoMKgIDoKPiA+ID4gKwkJCcKgwqDCoMKgIDogInIi KHRpbmZvLT5hc2lkKQo+ID4gPiArCQkJwqDCoMKgwqAgOiAibWVtb3J5Iik7Cj4gPiA+ICt9Cj4g PiA+ICsKPiA+ID4gwqBzdGF0aWMgaW50IHRoZWFkX2dlbmVyaWNfcGxhdGZvcm1faW5pdChjb25z dCB2b2lkICpmZHQsIGludCBub2Rlb2ZmLAo+ID4gPiDCoAkJCQnCoMKgwqDCoMKgwqAgY29uc3Qg c3RydWN0IGZkdF9tYXRjaCAqbWF0Y2gpCj4gPiA+IMKgewo+ID4gPiBAQCAtNDksNiArNjQsMTEg QEAgc3RhdGljIGludCB0aGVhZF9nZW5lcmljX3BsYXRmb3JtX2luaXQoY29uc3Qgdm9pZCAqZmR0 LCBpbnQgbm9kZW9mZiwKPiA+ID4gwqAJaWYgKHF1aXJrcy0+ZXJyYXRhICYgVEhFQURfUVVJUktf RVJSQVRBX1RIRUFEX1BNVSkKPiA+ID4gwqAJCWdlbmVyaWNfcGxhdGZvcm1fb3BzLmV4dGVuc2lv bnNfaW5pdCA9IHRoZWFkX3BtdV9leHRlbnNpb25zX2luaXQ7Cj4gPiA+IMKgCj4gPiA+ICsJaWYg KHF1aXJrcy0+ZXJyYXRhICZUSEVBRF9RVUlSS19FUlJBVEFfSlRMQikgewo+ID4gPiArCQlnZW5l cmljX3BsYXRmb3JtX29wcy5sb2NhbF9zZmVuY2Vfdm1hID0gdGhlYWRfanRsYl9sb2NhbF9zZmVu Y2Vfdm1hOwo+ID4gPiArCQlnZW5lcmljX3BsYXRmb3JtX29wcy5sb2NhbF9zZmVuY2Vfdm1hX2Fz aWQgPSB0aGVhZF9qdGxiX2xvY2FsX3NmZW5jZV92dm1hX2FzaWQ7Cj4gPiA+ICsJfQo+ID4gPiAr Cj4gPiA+IMKgCXJldHVybiAwOwo+ID4gPiDCoH0KPiA+ID4gwqAKPiA+ID4gQEAgLTYwLDEzICs4 MCwxNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHRoZWFkX2dlbmVyaWNfcXVpcmtzIHRoZWFkX3Bt dV9xdWlya3MgPSB7Cj4gPiA+IMKgCS5lcnJhdGEgPSBUSEVBRF9RVUlSS19FUlJBVEFfVEhFQURf UE1VLAo+ID4gPiDCoH07Cj4gPiA+IMKgCj4gPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHRoZWFk X2dlbmVyaWNfcXVpcmtzIHRoZWFkX3BtdV9qdGxiX3F1aXJrcyA9IHsKPiA+ID4gKwkuZXJyYXRh ID0gVEhFQURfUVVJUktfRVJSQVRBX1RIRUFEX1BNVSB8IFRIRUFEX1FVSVJLX0VSUkFUQV9KVExC LAo+ID4gPiArfTsKPiA+ID4gKwo+ID4gCj4gPiBJSVJDLCBpdCBpcyBiZXR0ZXIgdG8gbm90IHNl dHRpbmcgVEhFQURfUVVJUktfRVJSQVRBX1RIRUFEX1BNVSBhbnltb3JlCj4gPiBmb3Igc2cyMDQ0 LiBUaGUgVC1IRUFEIHNwZWNpZmljIFBNVSBmZWF0dXJlIGlzIGJhZCBmb3IgdGhlIGNwdSB2ZXJz aW9uIG9mCj4gPiB0aGUgc2cyMDQ0Lgo+IFRoYW5rcyBmb3IgdGhlIGZlZWRiYWNrLgo+IAo+IElJ UkMsIHlvdSdyZSByaWdodCB0aGF0IHRoZSBULUhFQUQgc3BlY2lmaWMgUE1VIGZlYXR1cmUgbWF5 IG5vdCBiZSBzdWl0YWJsZcKgCj4gZm9yIHRoZSBjdXJyZW50IFNHMjA0NCBDUFUgdmVyc2lvbi4K PiAKPiBIb3dldmVyLCBzaW5jZSB0aGlzIHBhdGNoIGlzIGZvY3VzZWQgb24gVExCIGN1c3RvbWl6 YXRpb24gZm9yIHRoZSBKVExCIGVycmF0YSzCoAo+IEkgdGhpbmsgaXQncyBiZXR0ZXIgdG8ga2Vl cCBpdCBpbmRlcGVuZGVudC4gQ291bGQgeW91IHBsZWFzZSBzZW5kIHRoZSBQTVUgcXVpcmvCoAo+ IGNoYW5nZSBhcyBhIHNlcGFyYXRlIHBhdGNoPyBUaGF0IHdvdWxkIG1ha2UgYm90aCBjaGFuZ2Vz IGNsZWFuZXIgYW5kIGVhc2llciB0b8KgCj4gcmV2aWV3Lgo+IAo+IEJlc3QgcmVnYXJkcywKPiBY aWFuZyBXCgpJdCBpcyBmaW5lIGZvciBtZSB0byBmaXggaXQuCgpJIHdpbGwgc2VuZCB0aGUgZml4 IHBhdGNoIGFmdGVyIHRoaXMgaXMgbWVyZ2VkLgoKUmVnYXJkcywKSW5vY2hpCgoKPiA+IAo+ID4g PiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmR0X21hdGNoIHRoZWFkX2dlbmVyaWNfbWF0Y2hbXSA9 IHsKPiA+ID4gwqAJeyAuY29tcGF0aWJsZSA9ICJjYW5hYW4sa2VuZHJ5dGUtazIzMCIsIC5kYXRh ID0gJnRoZWFkX3BtdV9xdWlya3MgfSwKPiA+ID4gwqAJeyAuY29tcGF0aWJsZSA9ICJzb3BoZ28s Y3YxODAwYiIsIC5kYXRhID0gJnRoZWFkX3BtdV9xdWlya3MgfSwKPiA+ID4gwqAJeyAuY29tcGF0 aWJsZSA9ICJzb3BoZ28sY3YxODEyaCIsIC5kYXRhID0gJnRoZWFkX3BtdV9xdWlya3MgfSwKPiA+ ID4gwqAJeyAuY29tcGF0aWJsZSA9ICJzb3BoZ28sc2cyMDAwIiwgLmRhdGEgPSAmdGhlYWRfcG11 X3F1aXJrcyB9LAo+ID4gPiDCoAl7IC5jb21wYXRpYmxlID0gInNvcGhnbyxzZzIwMDIiLCAuZGF0 YSA9ICZ0aGVhZF9wbXVfcXVpcmtzIH0sCj4gPiA+IC0JeyAuY29tcGF0aWJsZSA9ICJzb3BoZ28s c2cyMDQ0IiwgLmRhdGEgPSAmdGhlYWRfcG11X3F1aXJrcyB9LAo+ID4gPiArCXsgLmNvbXBhdGli bGUgPSAic29waGdvLHNnMjA0NCIsIC5kYXRhID0gJnRoZWFkX3BtdV9qdGxiX3F1aXJrcyB9LAo+ ID4gPiDCoAl7IC5jb21wYXRpYmxlID0gInRoZWFkLHRoMTUyMCIsIC5kYXRhID0gJnRoZWFkX3Ro MTUyMF9xdWlya3MgfSwKPiA+ID4gwqAJeyB9LAo+ID4gPiDCoH07Cj4gPiA+IC0tIAo+ID4gPiAy LjQ3LjMKPiA+ID4gCj4gPiA+IAo+ID4gPiAtLSAKPiA+ID4gb3BlbnNiaSBtYWlsaW5nIGxpc3QK PiA+ID4gb3BlbnNiaUBsaXN0cy5pbmZyYWRlYWQub3JnCj4gPiA+IGh0dHA6Ly9saXN0cy5pbmZy YWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vb3BlbnNiaQo+IAo+IAo+IC0tIAo+IG9wZW5zYmkg bWFpbGluZyBsaXN0Cj4gb3BlbnNiaUBsaXN0cy5pbmZyYWRlYWQub3JnCj4gaHR0cDovL2xpc3Rz LmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9vcGVuc2JpCgotLSAKb3BlbnNiaSBtYWls aW5nIGxpc3QKb3BlbnNiaUBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRl YWQub3JnL21haWxtYW4vbGlzdGluZm8vb3BlbnNiaQo=