Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp82033pxv; Wed, 30 Jun 2021 00:07:21 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxjilq/UTHmkBAxETgVR15qTZMSN0IgQCBnUxw2wjSbPCOVGpvLoKUOqlWVBBCkQA1u+pU8 X-Received: by 2002:a05:6e02:2144:: with SMTP id d4mr15616113ilv.136.1625036841353; Wed, 30 Jun 2021 00:07:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1625036841; cv=none; d=google.com; s=arc-20160816; b=VBmM8Au3oH/I7nl4wIICNps3cV6GLeG58ZaMR8Q54jqYWp1yzqY3X2ayk9NiFOqQ6k dmUSetTKm5YkV5uOkCDPilhgn/dxWCnaFP+9R/x37KGkFH4zROsoBNyMDyVfIKFu+rZE IHfP+vsuxX4DSbqsJeBai7HWWsliILtBIUEy4slu7aFXS9wh072qw58G6EPUy2O7ENXM Bm2sTBa6SSCQXMlr4TxtK/UOD4aPYzSrUvBRokB7iCFqfLa3Mpj/hBYswyqnnQeGnKmC A1oeeEagBBlHjYW4ub8oyklFNRP96dU79ZHTo8o6YwkHE1oG+zloKW678QODDyG+zBuU eefQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from; bh=oseufsz+a5iJiiztrj0GDP9lJ2BeqDkd944HGOwTW2M=; b=RaFYeAJnAvS5M6IcJE0OvRjTr1Y+eu+jvPXV+lix6H3OMSFqt58cH7CSuuzNuy0kx8 d93yir0GE/7we4F6ZE8GksU/b8W7JClHk/yYtDAX9HteCfONUoqkOf1qnNSxCDQNQqwu y3h5Y4O/+lvGoq80oIT8IVI3exHloW9t6BdaNMowLcSPid9rja6HO9eR4T3P8oEK/Tjo nNCGBzvc7Q9s7fGPTn5wGlbrewuWGcFthTRPhEqyoCxK+cTtqLT35llH/ZWEjklkIzV/ QAenlycHocBm+/+A1tyLBBT8xBjc2j6oxq2MNVaBe9YzDS/Ty9iZH0WDFUNg5KLA9eR2 nqqQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=hisilicon.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id i197si22108083ioa.101.2021.06.30.00.07.08; Wed, 30 Jun 2021 00:07:21 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=hisilicon.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232607AbhF3HIh (ORCPT + 99 others); Wed, 30 Jun 2021 03:08:37 -0400 Received: from szxga03-in.huawei.com ([45.249.212.189]:9322 "EHLO szxga03-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232598AbhF3HIg (ORCPT ); Wed, 30 Jun 2021 03:08:36 -0400 Received: from dggemv703-chm.china.huawei.com (unknown [172.30.72.55]) by szxga03-in.huawei.com (SkyGuard) with ESMTP id 4GFC271zqDz74HF; Wed, 30 Jun 2021 15:01:51 +0800 (CST) Received: from dggema756-chm.china.huawei.com (10.1.198.198) by dggemv703-chm.china.huawei.com (10.3.19.46) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.2176.2; Wed, 30 Jun 2021 15:05:57 +0800 Received: from dggemi761-chm.china.huawei.com (10.1.198.147) by dggema756-chm.china.huawei.com (10.1.198.198) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2176.2; Wed, 30 Jun 2021 15:05:57 +0800 Received: from dggemi761-chm.china.huawei.com ([10.9.49.202]) by dggemi761-chm.china.huawei.com ([10.9.49.202]) with mapi id 15.01.2176.012; Wed, 30 Jun 2021 15:05:56 +0800 From: "Song Bao Hua (Barry Song)" To: "liuqi (BA)" , Linuxarm , "catalin.marinas@arm.com" , "will@kernel.org" , "linux-arm-kernel@lists.infradead.org" , "robin.murphy@arm.com" , Jean-Philippe Brucker CC: "Zengtao (B)" , "linux-kernel@vger.kernel.org" Subject: RE: [RFC PATCH] arm64: kprobes: Enable OPTPROBE for arm64 Thread-Topic: [RFC PATCH] arm64: kprobes: Enable OPTPROBE for arm64 Thread-Index: AQHXZ9drYAnuphKk8UCXZ/VwrybKvqssJrDg Date: Wed, 30 Jun 2021 07:05:56 +0000 Message-ID: References: <1622803839-27354-1-git-send-email-liuqi115@huawei.com> <2409bcc3-fc5c-1e41-d7be-c81e59042c4d@huawei.com> In-Reply-To: <2409bcc3-fc5c-1e41-d7be-c81e59042c4d@huawei.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.126.203.127] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org PiANCj4gT24gMjAyMS82LzQgMTg6NTAsIFFpIExpdSB3cm90ZToNCj4gPiBUaGlzIHBhdGNoIGlu dHJvZHVjZSBvcHRwcm9iZSBmb3IgQVJNNjQuIEluIG9wdHByb2JlLCBwcm9iZWQNCj4gPiBpbnN0 cnVjdGlvbiBpcyByZXBsYWNlZCBieSBhIGJyYW5jaCBpbnN0cnVjdGlvbiB0byBkZXRvdXINCj4g PiBidWZmZXIuIERldG91ciBidWZmZXIgY29udGFpbnMgdHJhbXBvbGluZSBjb2RlIGFuZCBhIGNh bGwgdG8NCj4gPiBvcHRpbWl6ZWRfY2FsbGJhY2soKS4gb3B0aW1pemVkX2NhbGxiYWNrKCkgY2Fs bHMgb3B0X3ByZV9oYW5kbGVyKCkNCj4gPiB0byBleGVjdXRlIGtwcm9iZSBoYW5kbGVyLg0KPiA+ DQo+ID4gTGltaXRhdGlvbnM6DQo+ID4gLSBXZSBvbmx5IHN1cHBvcnQgIUNPTkZJR19SQU5ET01J WkVfTU9EVUxFX1JFR0lPTl9GVUxMIGNhc2UgdG8NCj4gPiBndWFyYW50ZWUgdGhlIG9mZnNldCBi ZXR3ZWVuIHByb2JlIHBvaW50IGFuZCBrcHJvYmUgcHJlX2hhbmRsZXINCj4gPiBpcyBub3QgbGFy Z2VyIHRoYW4gMTI4TWlCLg0KPiA+DQo+ID4gUGVyZm9ybWFuY2Ugb2Ygb3B0cHJvYmUgb24gSGlw MDggcGxhdGZvcm0gaXMgdGVzdCB1c2luZyBrcHJvYmUNCj4gPiBleGFtcGxlIG1vZHVsZVsxXSB0 byBhbmFseXplIHRoZSBsYXRlbmN5IG9mIGEga2VybmVsIGZ1bmN0aW9uLA0KPiA+IGFuZCBoZXJl IGlzIHRoZSByZXN1bHQ6DQoNCisgSmVhbi1QaGlsaXBwZSBCcnVja2VyIGFzIHdlbGwuDQoNCkkg YXNzdW1lIGJvdGggSmVhbiBhbmQgUm9iaW4gZXhwcmVzc2VkIGludGVyZXN0IG9uIGhhdmluZw0K YW4gb3B0cHJvYmUgc29sdXRpb24gb24gQVJNNjQgaW4gYSBwcmV2aW91cyBkaXNjdXNzaW9uDQp3 aGVuIEkgdHJpZWQgdG8gYWRkIHNvbWUgdHJhY2Vwb2ludHMgZm9yIGRlYnVnZ2luZzoNCiJbUEFU Q0hdIGlvbW11L2FybS1zbW11LXYzOiBhZGQgdHJhY2Vwb2ludHMgZm9yIGNtZHFfaXNzdWVfY21k bGlzdCINCg0KaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGludXgtYXJtLWtlcm5lbC8yMDIwMDgy ODA4MzMyNS5HQzM4MjU0ODVAbXlyaWNhLw0KaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGludXgt YXJtLWtlcm5lbC85YWNmMWFjZi0xOWZiLTI2ZGItZTkwOC1lYjRkNGM2NjZiYWVAYXJtLmNvbS8N Cg0KPiA+DQo+ID4gWzFdDQo+IGh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9r ZXJuZWwvZ2l0L3RvcnZhbGRzL2xpbnV4LmdpdC90cmVlL3NhDQo+IG1wbGVzL2twcm9iZXMva3Jl dHByb2JlX2V4YW1wbGUuYw0KPiA+DQo+ID4ga3Byb2JlIGJlZm9yZSBvcHRpbWl6ZWQ6DQo+ID4g WzI4MDcwOS44NDYzODBdIGRvX2VtcHR5IHJldHVybmVkIDAgYW5kIHRvb2sgMTUzMCBucyB0byBl eGVjdXRlDQo+ID4gWzI4MDcwOS44NTIwNTddIGRvX2VtcHR5IHJldHVybmVkIDAgYW5kIHRvb2sg NTUwIG5zIHRvIGV4ZWN1dGUNCj4gPiBbMjgwNzA5Ljg1NzYzMV0gZG9fZW1wdHkgcmV0dXJuZWQg MCBhbmQgdG9vayA0NDAgbnMgdG8gZXhlY3V0ZQ0KPiA+IFsyODA3MDkuODYzMjE1XSBkb19lbXB0 eSByZXR1cm5lZCAwIGFuZCB0b29rIDM4MCBucyB0byBleGVjdXRlDQo+ID4gWzI4MDcwOS44Njg3 ODddIGRvX2VtcHR5IHJldHVybmVkIDAgYW5kIHRvb2sgMzYwIG5zIHRvIGV4ZWN1dGUNCj4gPiBb MjgwNzA5Ljg3NDM2Ml0gZG9fZW1wdHkgcmV0dXJuZWQgMCBhbmQgdG9vayAzNDAgbnMgdG8gZXhl Y3V0ZQ0KPiA+IFsyODA3MDkuODc5OTM2XSBkb19lbXB0eSByZXR1cm5lZCAwIGFuZCB0b29rIDMy MCBucyB0byBleGVjdXRlDQo+ID4gWzI4MDcwOS44ODU1MDVdIGRvX2VtcHR5IHJldHVybmVkIDAg YW5kIHRvb2sgMzAwIG5zIHRvIGV4ZWN1dGUNCj4gPiBbMjgwNzA5Ljg5MTA3NV0gZG9fZW1wdHkg cmV0dXJuZWQgMCBhbmQgdG9vayAyODAgbnMgdG8gZXhlY3V0ZQ0KPiA+IFsyODA3MDkuODk2NjQ2 XSBkb19lbXB0eSByZXR1cm5lZCAwIGFuZCB0b29rIDI5MCBucyB0byBleGVjdXRlDQo+ID4gWzI4 MDcwOS45MDIyMjBdIGRvX2VtcHR5IHJldHVybmVkIDAgYW5kIHRvb2sgMjkwIG5zIHRvIGV4ZWN1 dGUNCj4gPiBbMjgwNzA5LjkwNzgwN10gZG9fZW1wdHkgcmV0dXJuZWQgMCBhbmQgdG9vayAyOTAg bnMgdG8gZXhlY3V0ZQ0KDQpJIHVzZWQgdG8gc2VlIHRoZSBzYW1lIHBoZW5vbWVub24gd2hlbiBJ IHVzZWQga3Byb2JlIHRvIGRlYnVnDQphcm02NCBzbW11IGRyaXZlci4gV2hlbiBhIGtwcm9iZSB3 YXMgZXhlY3V0ZWQgZm9yIHRoZSBmaXJzdA0KdGltZSwgaXQgd2FzIGNyYXppbHkgc2xvdy4gQnV0 IHNlY29uZCB0aW1lIGl0IGJlY2FtZSBtdWNoIGZhc3Rlcg0KdGhvdWdoIGl0IHdhcyBzdGlsbCBz bG93IGFuZCBhZmZlY3RlZCB0aGUgcGVyZm9ybWFuY2UgcmVsYXRlZA0KZGVidWdnaW5nIG5lZ2F0 aXZlbHkuDQpOb3Qgc3VyZSBpZiBpdCB3YXMgZHVlIHRvIGhvdCBjYWNoZSBvciBzb21ldGhpbmcu IEkgZGlkbid0IGRpZw0KaW50byBpdC4NCg0KaWYgeW91IHJ1biBhIGtwcm9iZSwgdGhlbiBydW4g c29tZSBkaWZmZXJlbnQgYmlnIGFwcGxpY2F0aW9uIHRvIGNsZWFuDQp0aGUgaG90IGNhY2hlIG9m IHRoZSBwYXJ0aWN1bGFyIGtwcm9iZSBhbmQgbWFrZSB0aGUga3Byb2JlICJjb2xkIi4NCkFmdGVy IGEgd2hpbGUsIHlvdSBydW4gdGhlIGtwcm9iZSBhZ2Fpbiwgd2lsbCBpdCBiZSBxdWl0ZSBzbG93 IGFnYWluPw0KDQo+ID4NCj4gPiBvcHRwcm9iZToNCj4gPiBbIDI5NjUuOTY0NTcyXSBkb19lbXB0 eSByZXR1cm5lZCAwIGFuZCB0b29rIDkwIG5zIHRvIGV4ZWN1dGUNCj4gPiBbIDI5NjUuOTY5OTUy XSBkb19lbXB0eSByZXR1cm5lZCAwIGFuZCB0b29rIDgwIG5zIHRvIGV4ZWN1dGUNCj4gPiBbIDI5 NjUuOTc1MzMyXSBkb19lbXB0eSByZXR1cm5lZCAwIGFuZCB0b29rIDcwIG5zIHRvIGV4ZWN1dGUN Cj4gPiBbIDI5NjUuOTgwNzE0XSBkb19lbXB0eSByZXR1cm5lZCAwIGFuZCB0b29rIDYwIG5zIHRv IGV4ZWN1dGUNCj4gPiBbIDI5NjUuOTg2MTI4XSBkb19lbXB0eSByZXR1cm5lZCAwIGFuZCB0b29r IDgwIG5zIHRvIGV4ZWN1dGUNCj4gPiBbIDI5NjUuOTkxNTA3XSBkb19lbXB0eSByZXR1cm5lZCAw IGFuZCB0b29rIDcwIG5zIHRvIGV4ZWN1dGUNCg0KSXQgc2VlbXMgdGhhdCB0aGlzIG5vdCBvbmx5 IGdyZWF0bHkgcmVkdWNlcyB0aGUgbGF0ZW5jeSBvZiBrcHJvYmUsDQpidXQgYWxzbyBncmVhdGx5 IHJlZHVjZXMgdGhlIHN0YW5kYXJkIGRldmlhdGlvbi4gSWYgc28sIGl0IHNob3VsZA0KbWFrZSB0 aGUgc3RhdGlzdGljYWwgZGF0YSBtb3JlIHZhbHVhYmxlIHdoaWxlIGRldmVsb3BlcnMgdXNlIHRv b2xzDQpsaWtlIGVicGYvYmNjIGFuZCBvdGhlciB1c2Vyc3BhY2Ugc2NyaXB0cyB0byBwcm9iZSBh IGtlcm5lbCBmdW5jdGlvbg0KYW5kIGNvdW50IGl0cyB0aW1lLg0KDQo+ID4gWyAyOTY1Ljk5Njg4 NF0gZG9fZW1wdHkgcmV0dXJuZWQgMCBhbmQgdG9vayA3MCBucyB0byBleGVjdXRlDQo+ID4gWyAy OTY2LjAwMjI2Ml0gZG9fZW1wdHkgcmV0dXJuZWQgMCBhbmQgdG9vayA4MCBucyB0byBleGVjdXRl DQo+ID4gWyAyOTY2LjAwNzY0Ml0gZG9fZW1wdHkgcmV0dXJuZWQgMCBhbmQgdG9vayA3MCBucyB0 byBleGVjdXRlDQo+ID4gWyAyOTY2LjAxMzAyMF0gZG9fZW1wdHkgcmV0dXJuZWQgMCBhbmQgdG9v ayA3MCBucyB0byBleGVjdXRlDQo+ID4gWyAyOTY2LjAxODQwMF0gZG9fZW1wdHkgcmV0dXJuZWQg MCBhbmQgdG9vayA3MCBucyB0byBleGVjdXRlDQo+ID4gWyAyOTY2LjAyMzc3OV0gZG9fZW1wdHkg cmV0dXJuZWQgMCBhbmQgdG9vayA3MCBucyB0byBleGVjdXRlDQo+ID4gWyAyOTY2LjAyOTE1OF0g ZG9fZW1wdHkgcmV0dXJuZWQgMCBhbmQgdG9vayA3MCBucyB0byBleGVjdXRlDQo+ID4NCj4gPiBT aWduZWQtb2ZmLWJ5OiBRaSBMaXUgPGxpdXFpMTE1QGh1YXdlaS5jb20+DQo+ID4gLS0tDQo+ID4g VE9ETzoNCj4gPiAtIFZlbmVlciB3aWxsIGJlIHVzZWQgbGF0dGVyIHRvIGV4dGVuZCB0aGUgcmFu Z2Ugb2YgYnJhbmNoIGFuZA0KPiA+IHN1cHBvcnQgbG9uZyBqdW1wLg0KPiA+DQo+ID4gICBhcmNo L2FybTY0L0tjb25maWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsNCj4gPiAg IGFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3Byb2Jlcy5oICAgICAgICAgICAgICAgfCAgMjMgKysr DQo+ID4gICBhcmNoL2FybTY0L2tlcm5lbC9wcm9iZXMvTWFrZWZpbGUgICAgICAgICAgICAgIHwg ICAyICsNCj4gPiAgIGFyY2gvYXJtNjQva2VybmVsL3Byb2Jlcy9rcHJvYmVzLmMgICAgICAgICAg ICAgfCAgMTkgKystDQo+ID4gICBhcmNoL2FybTY0L2tlcm5lbC9wcm9iZXMvb3B0LWFybTY0LmMg ICAgICAgICAgIHwgMjE4DQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysNCj4gPiAgIGFyY2gv YXJtNjQva2VybmVsL3Byb2Jlcy9vcHRwcm9iZV90cmFtcG9saW5lLlMgfCAgODEgKysrKysrKysr DQo+ID4gICA2IGZpbGVzIGNoYW5nZWQsIDM0MSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygt KQ0KPiA+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQva2VybmVsL3Byb2Jlcy9vcHQt YXJtNjQuYw0KPiA+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQva2VybmVsL3Byb2Jl cy9vcHRwcm9iZV90cmFtcG9saW5lLlMNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9hcmNoL2FybTY0 L0tjb25maWcgYi9hcmNoL2FybTY0L0tjb25maWcNCj4gPiBpbmRleCAyZTI0MmRiYi4uYWIxYTc5 NSAxMDA2NDQNCj4gPiAtLS0gYS9hcmNoL2FybTY0L0tjb25maWcNCj4gPiArKysgYi9hcmNoL2Fy bTY0L0tjb25maWcNCj4gPiBAQCAtMTg5LDYgKzE4OSw3IEBAIGNvbmZpZyBBUk02NA0KPiA+ICAg CXNlbGVjdCBIQVZFX1NUQUNLUFJPVEVDVE9SDQo+ID4gICAJc2VsZWN0IEhBVkVfU1lTQ0FMTF9U UkFDRVBPSU5UUw0KPiA+ICAgCXNlbGVjdCBIQVZFX0tQUk9CRVMNCj4gPiArCXNlbGVjdCBIQVZF X09QVFBST0JFUyBpZiAhUkFORE9NSVpFX01PRFVMRV9SRUdJT05fRlVMTA0KPiA+ICAgCXNlbGVj dCBIQVZFX0tSRVRQUk9CRVMNCj4gPiAgIAlzZWxlY3QgSEFWRV9HRU5FUklDX1ZEU08NCj4gPiAg IAlzZWxlY3QgSU9NTVVfRE1BIGlmIElPTU1VX1NVUFBPUlQNCj4gPiBkaWZmIC0tZ2l0IGEvYXJj aC9hcm02NC9pbmNsdWRlL2FzbS9rcHJvYmVzLmgNCj4gYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNt L2twcm9iZXMuaA0KPiA+IGluZGV4IDVkMzhmZjQuLjllMWM0OTIgMTAwNjQ0DQo+ID4gLS0tIGEv YXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rcHJvYmVzLmgNCj4gPiArKysgYi9hcmNoL2FybTY0L2lu Y2x1ZGUvYXNtL2twcm9iZXMuaA0KPiA+IEBAIC0zOSw2ICszOSwyOSBAQCB2b2lkIGFyY2hfcmVt b3ZlX2twcm9iZShzdHJ1Y3Qga3Byb2JlICopOw0KPiA+ICAgaW50IGtwcm9iZV9mYXVsdF9oYW5k bGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1bnNpZ25lZCBpbnQgZnNyKTsNCj4gPiAgIGludCBr cHJvYmVfZXhjZXB0aW9uc19ub3RpZnkoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpzZWxmLA0KPiA+ ICAgCQkJICAgICB1bnNpZ25lZCBsb25nIHZhbCwgdm9pZCAqZGF0YSk7DQo+ID4gKw0KPiA+ICsj ZGVmaW5lIFJFTEFUSVZFSlVNUF9TSVpFICg0KQ0KPiA+ICsjZGVmaW5lIE1BWF9DT1BJRURfSU5T TglESVZfUk9VTkRfVVAoUkVMQVRJVkVKVU1QX1NJWkUsDQo+IHNpemVvZihrcHJvYmVfb3Bjb2Rl X3QpKQ0KPiA+ICtzdHJ1Y3QgYXJjaF9vcHRpbWl6ZWRfaW5zbiB7DQo+ID4gKwlrcHJvYmVfb3Bj b2RlX3QgY29waWVkX2luc25bTUFYX0NPUElFRF9JTlNOXTsNCj4gPiArCS8qIGRldG91ciBjb2Rl IGJ1ZmZlciAqLw0KPiA+ICsJa3Byb2JlX29wY29kZV90ICppbnNuOw0KPiA+ICt9Ow0KPiA+ICsN Cj4gPiArLyogb3B0aW5zbiB0ZW1wbGF0ZSBhZGRyZXNzZXMgKi8NCj4gPiArZXh0ZXJuIF9fdmlz aWJsZSBrcHJvYmVfb3Bjb2RlX3Qgb3B0cHJvYmVfdGVtcGxhdGVfZW50cnlbXTsNCj4gPiArZXh0 ZXJuIF9fdmlzaWJsZSBrcHJvYmVfb3Bjb2RlX3Qgb3B0cHJvYmVfdGVtcGxhdGVfdmFsW107DQo+ ID4gK2V4dGVybiBfX3Zpc2libGUga3Byb2JlX29wY29kZV90IG9wdHByb2JlX3RlbXBsYXRlX2Nh bGxbXTsNCj4gPiArZXh0ZXJuIF9fdmlzaWJsZSBrcHJvYmVfb3Bjb2RlX3Qgb3B0cHJvYmVfdGVt cGxhdGVfZW5kW107DQo+ID4gK2V4dGVybiBfX3Zpc2libGUga3Byb2JlX29wY29kZV90IG9wdHBy b2JlX3RlbXBsYXRlX3Jlc3RvcmVfYmVnaW5bXTsNCj4gPiArZXh0ZXJuIF9fdmlzaWJsZSBrcHJv YmVfb3Bjb2RlX3Qgb3B0cHJvYmVfdGVtcGxhdGVfcmVzdG9yZV9vcmlnX2luc25bXTsNCj4gPiAr ZXh0ZXJuIF9fdmlzaWJsZSBrcHJvYmVfb3Bjb2RlX3Qgb3B0cHJvYmVfdGVtcGxhdGVfcmVzdG9y ZV9lbmRbXTsNCj4gPiArDQo+ID4gKyNkZWZpbmUgTUFYX09QVElNSVpFRF9MRU5HVEgJNA0KPiA+ ICsjZGVmaW5lIE1BWF9PUFRJTlNOX1NJWkUJCQkJXA0KPiA+ICsJKCh1bnNpZ25lZCBsb25nKW9w dHByb2JlX3RlbXBsYXRlX2VuZCAtCVwNCj4gPiArCSAodW5zaWduZWQgbG9uZylvcHRwcm9iZV90 ZW1wbGF0ZV9lbnRyeSkNCj4gPiArDQo+ID4gICB2b2lkIGtyZXRwcm9iZV90cmFtcG9saW5lKHZv aWQpOw0KPiA+ICAgdm9pZCBfX2twcm9iZXMgKnRyYW1wb2xpbmVfcHJvYmVfaGFuZGxlcihzdHJ1 Y3QgcHRfcmVncyAqcmVncyk7DQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJu ZWwvcHJvYmVzL01ha2VmaWxlDQo+IGIvYXJjaC9hcm02NC9rZXJuZWwvcHJvYmVzL01ha2VmaWxl DQo+ID4gaW5kZXggOGU0YmU5Mi4uNTJjZjVkNCAxMDA2NDQNCj4gPiAtLS0gYS9hcmNoL2FybTY0 L2tlcm5lbC9wcm9iZXMvTWFrZWZpbGUNCj4gPiArKysgYi9hcmNoL2FybTY0L2tlcm5lbC9wcm9i ZXMvTWFrZWZpbGUNCj4gPiBAQCAtNCwzICs0LDUgQEAgb2JqLSQoQ09ORklHX0tQUk9CRVMpCQkr PSBrcHJvYmVzLm8gZGVjb2RlLWluc24ubwlcDQo+ID4gICAJCQkJICAgc2ltdWxhdGUtaW5zbi5v DQo+ID4gICBvYmotJChDT05GSUdfVVBST0JFUykJCSs9IHVwcm9iZXMubyBkZWNvZGUtaW5zbi5v CVwNCj4gPiAgIAkJCQkgICBzaW11bGF0ZS1pbnNuLm8NCj4gPiArb2JqLSQoQ09ORklHX09QVFBS T0JFUykJCSs9IG9wdC1hcm02NC5vCQkJXA0KPiA+ICsJCQkJICAgb3B0cHJvYmVfdHJhbXBvbGlu ZS5vDQo+ID4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva2VybmVsL3Byb2Jlcy9rcHJvYmVzLmMN Cj4gYi9hcmNoL2FybTY0L2tlcm5lbC9wcm9iZXMva3Byb2Jlcy5jDQo+ID4gaW5kZXggNjZhYWMy OC4uYmFhY2VlZCAxMDA2NDQNCj4gPiAtLS0gYS9hcmNoL2FybTY0L2tlcm5lbC9wcm9iZXMva3By b2Jlcy5jDQo+ID4gKysrIGIvYXJjaC9hcm02NC9rZXJuZWwvcHJvYmVzL2twcm9iZXMuYw0KPiA+ IEBAIC0xMSw2ICsxMSw3IEBADQo+ID4gICAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+DQo+ID4g ICAjaW5jbHVkZSA8bGludXgva3Byb2Jlcy5oPg0KPiA+ICAgI2luY2x1ZGUgPGxpbnV4L2V4dGFi bGUuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZWxvYWRlci5oPg0KPiA+ICAgI2luY2x1 ZGUgPGxpbnV4L3NsYWIuaD4NCj4gPiAgICNpbmNsdWRlIDxsaW51eC9zdG9wX21hY2hpbmUuaD4N Cj4gPiAgICNpbmNsdWRlIDxsaW51eC9zY2hlZC9kZWJ1Zy5oPg0KPiA+IEBAIC0xMTEsOSArMTEy LDIxIEBAIGludCBfX2twcm9iZXMgYXJjaF9wcmVwYXJlX2twcm9iZShzdHJ1Y3Qga3Byb2JlICpw KQ0KPiA+DQo+ID4gICB2b2lkICphbGxvY19pbnNuX3BhZ2Uodm9pZCkNCj4gPiAgIHsNCj4gPiAt CXJldHVybiBfX3ZtYWxsb2Nfbm9kZV9yYW5nZShQQUdFX1NJWkUsIDEsIFZNQUxMT0NfU1RBUlQs IFZNQUxMT0NfRU5ELA0KPiA+IC0JCQlHRlBfS0VSTkVMLCBQQUdFX0tFUk5FTF9ST1gsIFZNX0ZM VVNIX1JFU0VUX1BFUk1TLA0KPiA+IC0JCQlOVU1BX05PX05PREUsIF9fYnVpbHRpbl9yZXR1cm5f YWRkcmVzcygwKSk7DQo+ID4gKwl2b2lkICpwYWdlOw0KPiA+ICsNCj4gPiArCXBhZ2UgPSBtb2R1 bGVfYWxsb2MoUEFHRV9TSVpFKTsNCj4gPiArCWlmICghcGFnZSkNCj4gPiArCQlyZXR1cm4gTlVM TDsNCj4gPiArDQo+ID4gKwlzZXRfdm1fZmx1c2hfcmVzZXRfcGVybXMocGFnZSk7DQo+ID4gKwkv Kg0KPiA+ICsJICogRmlyc3QgbWFrZSB0aGUgcGFnZSByZWFkLW9ubHksIGFuZCBvbmx5IHRoZW4g bWFrZSBpdCBleGVjdXRhYmxlIHRvDQo+ID4gKwkgKiBwcmV2ZW50IGl0IGZyb20gYmVpbmcgVytY IGluIGJldHdlZW4uDQo+ID4gKwkgKi8NCj4gPiArCXNldF9tZW1vcnlfcm8oKHVuc2lnbmVkIGxv bmcpcGFnZSwgMSk7DQo+ID4gKwlzZXRfbWVtb3J5X3goKHVuc2lnbmVkIGxvbmcpcGFnZSwgMSk7 DQo+ID4gKw0KPiA+ICsJcmV0dXJuIHBhZ2U7DQo+ID4gICB9DQo+ID4NCj4gPiAgIC8qIGFybSBr cHJvYmU6IGluc3RhbGwgYnJlYWtwb2ludCBpbiB0ZXh0ICovDQo+ID4gZGlmZiAtLWdpdCBhL2Fy Y2gvYXJtNjQva2VybmVsL3Byb2Jlcy9vcHQtYXJtNjQuYw0KPiBiL2FyY2gvYXJtNjQva2VybmVs L3Byb2Jlcy9vcHQtYXJtNjQuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXgg MDAwMDAwMC4uMDlmZmE3NQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9hcmNoL2FybTY0 L2tlcm5lbC9wcm9iZXMvb3B0LWFybTY0LmMNCj4gPiBAQCAtMCwwICsxLDIxOCBAQA0KPiA+ICsv LyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5DQo+ID4gKy8qDQo+ID4gKyAq IENvZGUgZm9yIEtlcm5lbCBwcm9iZXMgSnVtcCBvcHRpbWl6YXRpb24uDQo+ID4gKyAqDQo+ID4g KyAqIENvcHlyaWdodCAoQykgMjAyMSBIaXNpbGljb24gTGltaXRlZA0KPiA+ICsgKi8NCj4gPiAr DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9qdW1wX2xhYmVsLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51 eC9rcHJvYmVzLmg+DQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8YXNtL2NhY2hlZmx1c2guaD4NCj4g PiArI2luY2x1ZGUgPGFzbS9rcHJvYmVzLmg+DQo+ID4gKy8qIGZvciBhYXJjaDY0X2luc25fZ2Vu X2JyYW5jaF9pbW0gKi8NCj4gPiArI2luY2x1ZGUgPGFzbS9pbnNuLmg+DQo+ID4gKw0KPiA+ICsj ZGVmaW5lIFRNUExfVkFMX0lEWCBcDQo+ID4gKwkob3B0cHJvYmVfdGVtcGxhdGVfdmFsIC0gb3B0 cHJvYmVfdGVtcGxhdGVfZW50cnkpDQo+ID4gKyNkZWZpbmUgVE1QTF9DQUxMX0JBQ0sgXA0KPiA+ ICsJKG9wdHByb2JlX3RlbXBsYXRlX2NhbGwgLSBvcHRwcm9iZV90ZW1wbGF0ZV9lbnRyeSkNCj4g PiArI2RlZmluZSBUTVBMX0VORF9JRFggXA0KPiA+ICsJKG9wdHByb2JlX3RlbXBsYXRlX2VuZCAt IG9wdHByb2JlX3RlbXBsYXRlX2VudHJ5KQ0KPiA+ICsjZGVmaW5lIFRNUExfUkVTVE9SRV9PUklH Tl9JTlNOIFwNCj4gPiArCShvcHRwcm9iZV90ZW1wbGF0ZV9yZXN0b3JlX29yaWdfaW5zbiAtIG9w dHByb2JlX3RlbXBsYXRlX2VudHJ5KQ0KPiA+ICsjZGVmaW5lIFRNUExfUkVTVE9SRV9FTkQgXA0K PiA+ICsJKG9wdHByb2JlX3RlbXBsYXRlX3Jlc3RvcmVfZW5kIC0gb3B0cHJvYmVfdGVtcGxhdGVf ZW50cnkpDQo+ID4gKw0KPiA+ICtpbnQgYXJjaF9jaGVja19vcHRpbWl6ZWRfa3Byb2JlKHN0cnVj dCBvcHRpbWl6ZWRfa3Byb2JlICpvcCkNCj4gPiArew0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30N Cj4gPiArDQo+ID4gK2ludCBhcmNoX3ByZXBhcmVkX29wdGluc24oc3RydWN0IGFyY2hfb3B0aW1p emVkX2luc24gKm9wdGluc24pDQo+ID4gK3sNCj4gPiArCXJldHVybiBvcHRpbnNuLT5pbnNuICE9 IE5VTEw7DQo+ID4gK30NCj4gPiArDQo+ID4gK2ludCBhcmNoX3dpdGhpbl9vcHRpbWl6ZWRfa3By b2JlKHN0cnVjdCBvcHRpbWl6ZWRfa3Byb2JlICpvcCwNCj4gPiArCQkJCXVuc2lnbmVkIGxvbmcg YWRkcikNCj4gPiArew0KPiA+ICsJcmV0dXJuICgodW5zaWduZWQgbG9uZylvcC0+a3AuYWRkciA8 PSBhZGRyICYmDQo+ID4gKwkJKHVuc2lnbmVkIGxvbmcpb3AtPmtwLmFkZHIgKyBSRUxBVElWRUpV TVBfU0laRSA+IGFkZHIpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZA0KPiA+ICtv cHRpbWl6ZWRfY2FsbGJhY2soc3RydWN0IG9wdGltaXplZF9rcHJvYmUgKm9wLCBzdHJ1Y3QgcHRf cmVncyAqcmVncykNCj4gPiArew0KPiA+ICsJLyogVGhpcyBpcyBwb3NzaWJsZSBpZiBvcCBpcyB1 bmRlciBkZWxheWVkIHVub3B0aW1pemluZyAqLw0KPiA+ICsJaWYgKGtwcm9iZV9kaXNhYmxlZCgm b3AtPmtwKSkNCj4gPiArCQlyZXR1cm47DQo+ID4gKw0KPiA+ICsJcHJlZW1wdF9kaXNhYmxlKCk7 DQo+ID4gKw0KPiA+ICsJaWYgKGtwcm9iZV9ydW5uaW5nKCkpIHsNCj4gPiArCQlrcHJvYmVzX2lu Y19ubWlzc2VkX2NvdW50KCZvcC0+a3ApOw0KPiA+ICsJfSBlbHNlIHsNCj4gPiArCQlfX3RoaXNf Y3B1X3dyaXRlKGN1cnJlbnRfa3Byb2JlLCAmb3AtPmtwKTsNCj4gPiArCQlyZWdzLT5wYyA9ICh1 bnNpZ25lZCBsb25nKW9wLT5rcC5hZGRyOw0KPiA+ICsJCWdldF9rcHJvYmVfY3RsYmxrKCktPmtw cm9iZV9zdGF0dXMgPSBLUFJPQkVfSElUX0FDVElWRTsNCj4gPiArCQlvcHRfcHJlX2hhbmRsZXIo Jm9wLT5rcCwgcmVncyk7DQo+ID4gKwkJX190aGlzX2NwdV93cml0ZShjdXJyZW50X2twcm9iZSwg TlVMTCk7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcHJlZW1wdF9lbmFibGVfbm9fcmVzY2hlZCgp Ow0KPiA+ICt9DQo+ID4gK05PS1BST0JFX1NZTUJPTChvcHRpbWl6ZWRfY2FsbGJhY2spDQo+ID4g Kw0KPiA+ICtib29sIGlzX29mZnNldF9pbl9icmFuY2hfcmFuZ2UobG9uZyBvZmZzZXQpDQo+ID4g K3sNCj4gPiArCXJldHVybiAob2Zmc2V0ID49IC0weDA4MDAwMDAwICYmIG9mZnNldCA8PSAweDA3 ZmZmZmZjICYmICEob2Zmc2V0ICYgMHgzKSk7DQo+ID4gK30NCg0KVGhpcyBvbmUgc2hvdWxkIGJl IHN0YXRpYz8gT3IgaXQgY2FuIGJlIG1vdmVkLiBBbnl3YXksIGRvIHdlDQpzdGlsbCBuZWVkIHRo aXMgYWZ0ZXIgeW91IHN1cHBvcnQgbG9uZyBqdW1wIGJ5IFZlbmVlcj8NCg0KPiA+ICsNCj4gPiAr aW50IGFyY2hfcHJlcGFyZV9vcHRpbWl6ZWRfa3Byb2JlKHN0cnVjdCBvcHRpbWl6ZWRfa3Byb2Jl ICpvcCwgc3RydWN0DQo+IGtwcm9iZSAqb3JpZykNCj4gPiArew0KPiA+ICsJa3Byb2JlX29wY29k ZV90ICpjb2RlOw0KPiA+ICsJbG9uZyByZWxfY2hrOw0KPiA+ICsJdTMyIGluc24sIHNpemU7DQo+ ID4gKwlpbnQgcmV0LCBpOw0KPiA+ICsJdm9pZCAqYWRkcjsNCj4gPiArDQo+ID4gKwljb2RlID0g Z2V0X29wdGluc25fc2xvdCgpOw0KPiA+ICsJaWYgKCFjb2RlKQ0KPiA+ICsJCXJldHVybiAtRU5P TUVNOw0KPiA+ICsNCj4gPiArCS8qDQo+ID4gKwkgKiBWZXJpZnkgaWYgdGhlIGFkZHJlc3MgZ2Fw IGlzIGluIDEyOE1pQiByYW5nZSwgYmVjYXVzZSB0aGlzIHVzZXMNCj4gPiArCSAqIGEgcmVsYXRp dmUganVtcC4NCj4gPiArCSAqDQo+ID4gKwkgKiBrcHJvYmUgb3B0IHVzZSBhICdiJyBpbnN0cnVj dGlvbiB0byBicmFuY2ggdG8gb3B0aW5zbi5pbnNuLg0KPiA+ICsJICogQWNjb3JkaW5nIHRvIEFS TSBtYW51YWwsIGJyYW5jaCBpbnN0cnVjdGlvbiBpczoNCj4gPiArCSAqDQo+ID4gKwkgKiAgIDMx ICAzMCAgICAgICAgICAgICAgICAgIDI1ICAgICAgICAgICAgICAwDQo+ID4gKwkgKiAgKy0tLS0r LS0tKy0tLSstLS0rLS0tKy0tLSstLS0tLS0tLS0tLS0tLS0rDQo+ID4gKwkgKiAgfGNvbmR8IDAg fCAwIHwgMSB8IDAgfCAxIHwgICAgIGltbTI2ICAgICB8DQo+ID4gKwkgKiAgKy0tLS0rLS0tKy0t LSstLS0rLS0tKy0tLSstLS0tLS0tLS0tLS0tLS0rDQo+ID4gKwkgKg0KPiA+ICsJICogaW1tMjYg aXMgYSBzaWduZWQgMjYgYml0cyBpbnRlZ2VyLiBUaGUgcmVhbCBicmFuY2ggb2Zmc2V0IGlzIGNv bXB1dGVkDQo+ID4gKwkgKiBieTogaW1tNjQgPSBTaWduRXh0ZW5kKGltbTI2OicwMCcsIDY0KTsN Cj4gPiArCSAqDQo+ID4gKwkgKiBTbyB0aGUgbWF4aW11bSBmb3J3YXJkIGJyYW5jaCBzaG91bGQg YmU6DQo+ID4gKwkgKiAgICgweDAxZmZmZmZmIDw8IDIpID0gMTcyMHgwN2ZmZmZmYyA9ICAweDA3 ZmZmZmZjDQo+ID4gKwkgKiBUaGUgbWF4aW11bSBiYWNrd2FyZCBicmFuY2ggc2hvdWxkIGJlOg0K PiA+ICsJICogICAoMHhmZTAwMDAwMCA8PCAyKSA9IDB4RkZGRkZGRkZGODAwMDAwMCA9IC0weDA4 MDAwMDAwDQo+ID4gKwkgKg0KPiA+ICsJICogV2UgY2FuIHNpbXBseSBjaGVjayAocmVsICYgMHhm ODAwMDAwMyk6DQo+ID4gKwkgKiAgaWYgcmVsIGlzIHBvc2l0aXZlLCAocmVsICYgMHhmODAwMDAw Mykgc2hvdWxkIGJlIDANCj4gPiArCSAqICBpZiByZWwgaXMgbmVnaXRpdmUsIChyZWwgJiAweGY4 MDAwMDAzKSBzaG91bGQgYmUgMHhmODAwMDAwMA0KPiA+ICsJICogIHRoZSBsYXN0ICczJyBpcyB1 c2VkIGZvciBhbGlnbm1lbnQgY2hlY2tpbmcuDQo+ID4gKwkgKi8NCj4gPiArCXJlbF9jaGsgPSAo dW5zaWduZWQgbG9uZyljb2RlIC0NCj4gPiArCQkJKHVuc2lnbmVkIGxvbmcpb3JpZy0+YWRkciAr IDg7DQo+ID4gKwlpZiAoIWlzX29mZnNldF9pbl9icmFuY2hfcmFuZ2UocmVsX2NoaykpIHsNCj4g PiArCQlwcl9lcnIoIiVzIGlzIG91dCBvZiBicmFuY2ggcmFuZ2UuXG4iLCBvcmlnLT5zeW1ib2xf bmFtZSk7DQo+ID4gKwkJZnJlZV9vcHRpbnNuX3Nsb3QoY29kZSwgMCk7DQo+ID4gKwkJcmV0dXJu IC1FUkFOR0U7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJLyogU2V0dXAgdGVtcGxhdGUgKi8NCj4g PiArCXNpemUgPSAoVE1QTF9FTkRfSURYICogc2l6ZW9mKGtwcm9iZV9vcGNvZGVfdCkpIC8gc2l6 ZW9mKGludCk7DQo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7DQo+ID4gKwkJYWRk ciA9IGNvZGUgKyBpOw0KPiA+ICsJCWluc24gPSAqKG9wdHByb2JlX3RlbXBsYXRlX2VudHJ5ICsg aSk7DQo+ID4gKwkJcmV0ID0gYWFyY2g2NF9pbnNuX3BhdGNoX3RleHQoJmFkZHIsICZpbnNuLCAx KTsNCj4gPiArCQlpZiAocmV0IDwgMCkgew0KPiA+ICsJCQlmcmVlX29wdGluc25fc2xvdChjb2Rl LCAwKTsNCj4gPiArCQkJcmV0dXJuIC1FUkFOR0U7DQo+ID4gKwkJfQ0KPiA+ICsJfQ0KPiA+ICsN Cj4gPiArCS8qIFNldCBwcm9iZSBpbmZvcm1hdGlvbiAqLw0KPiA+ICsJYWRkciA9IGNvZGUgKyBU TVBMX1ZBTF9JRFg7DQo+ID4gKwlpbnNuID0gICh1bnNpZ25lZCBsb25nIGxvbmcpb3AgJiAweGZm ZmZmZmZmOw0KPiA+ICsJYWFyY2g2NF9pbnNuX3BhdGNoX3RleHQoJmFkZHIsICZpbnNuLCAxKTsN Cj4gPiArDQo+ID4gKwlhZGRyID0gYWRkciArIDQ7DQo+ID4gKwlpbnNuID0gKCh1bnNpZ25lZCBs b25nIGxvbmcpb3AgJiBHRU5NQVNLX1VMTCg2MywgMzIpKSA+PiAzMjsNCj4gPiArCWFhcmNoNjRf aW5zbl9wYXRjaF90ZXh0KCZhZGRyLCAmaW5zbiwgMSk7DQo+ID4gKw0KPiA+ICsJYWRkciA9IGNv ZGUgKyBUTVBMX0NBTExfQkFDSzsNCj4gPiArCWluc24gPSAgYWFyY2g2NF9pbnNuX2dlbl9icmFu Y2hfaW1tKCh1bnNpZ25lZCBsb25nKWFkZHIsDQo+ID4gKwkJCQkodW5zaWduZWQgbG9uZylvcHRp bWl6ZWRfY2FsbGJhY2ssDQo+ID4gKwkJCQlBQVJDSDY0X0lOU05fQlJBTkNIX0xJTkspOw0KPiA+ ICsJYWFyY2g2NF9pbnNuX3BhdGNoX3RleHQoJmFkZHIsICZpbnNuLCAxKTsNCj4gPiArDQo+ID4g KwkvKiBUaGUgb3JpZ2luYWwgcHJvYmVkIGluc3RydWN0aW9uICovDQo+ID4gKwlhZGRyID0gY29k ZSArIFRNUExfUkVTVE9SRV9PUklHTl9JTlNOOw0KPiA+ICsJaW5zbiA9ICBvcmlnLT5vcGNvZGU7 DQo+ID4gKwlhYXJjaDY0X2luc25fcGF0Y2hfdGV4dCgmYWRkciwgJmluc24sIDEpOw0KPiA+ICsN Cj4gPiArCS8qIEp1bXAgYmFjayB0byBuZXh0IGluc3RydWN0aW9uICovDQo+ID4gKwlhZGRyID0g Y29kZSArIFRNUExfUkVTVE9SRV9FTkQ7DQo+ID4gKwlpbnNuID0gYWFyY2g2NF9pbnNuX2dlbl9i cmFuY2hfaW1tKA0KPiA+ICsJCQkJKHVuc2lnbmVkIGxvbmcpKCZjb2RlW1RNUExfUkVTVE9SRV9F TkRdKSwNCj4gPiArCQkJCSh1bnNpZ25lZCBsb25nKShvcC0+a3AuYWRkcikgKyA0LA0KPiA+ICsJ CQkJQUFSQ0g2NF9JTlNOX0JSQU5DSF9OT0xJTkspOw0KPiA+ICsJYWFyY2g2NF9pbnNuX3BhdGNo X3RleHQoJmFkZHIsICZpbnNuLCAxKTsNCj4gPiArDQo+ID4gKwlmbHVzaF9pY2FjaGVfcmFuZ2Uo KHVuc2lnbmVkIGxvbmcpY29kZSwNCj4gPiArCQkJICAgKHVuc2lnbmVkIGxvbmcpKCZjb2RlW1RN UExfRU5EX0lEWF0pKTsNCj4gPiArCS8qIFNldCBvcC0+b3B0aW5zbi5pbnNuIG1lYW5zIHByZXBh cmVkLiAqLw0KPiA+ICsJb3AtPm9wdGluc24uaW5zbiA9IGNvZGU7DQo+ID4gKwlyZXR1cm4gMDsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArdm9pZCBhcmNoX29wdGltaXplX2twcm9iZXMoc3RydWN0IGxp c3RfaGVhZCAqb3BsaXN0KQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3Qgb3B0aW1pemVkX2twcm9iZSAq b3AsICp0bXA7DQo+ID4gKw0KPiA+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG9wLCB0bXAs IG9wbGlzdCwgbGlzdCkgew0KPiA+ICsJCXUzMiBpbnNuOw0KPiA+ICsNCj4gPiArCQlXQVJOX09O KGtwcm9iZV9kaXNhYmxlZCgmb3AtPmtwKSk7DQo+ID4gKw0KPiA+ICsJCS8qDQo+ID4gKwkJICog QmFja3VwIGluc3RydWN0aW9ucyB3aGljaCB3aWxsIGJlIHJlcGxhY2VkDQo+ID4gKwkJICogYnkg anVtcCBhZGRyZXNzDQo+ID4gKwkJICovDQo+ID4gKwkJbWVtY3B5KG9wLT5vcHRpbnNuLmNvcGll ZF9pbnNuLCBvcC0+a3AuYWRkciwNCj4gPiArCQkJUkVMQVRJVkVKVU1QX1NJWkUpOw0KPiA+ICsJ CWluc24gPSBhYXJjaDY0X2luc25fZ2VuX2JyYW5jaF9pbW0oKHVuc2lnbmVkIGxvbmcpb3AtPmtw LmFkZHIsDQo+ID4gKwkJCQkodW5zaWduZWQgbG9uZylvcC0+b3B0aW5zbi5pbnNuLA0KPiA+ICsJ CQkJQUFSQ0g2NF9JTlNOX0JSQU5DSF9OT0xJTkspOw0KPiA+ICsNCj4gPiArCQlXQVJOX09OKGlu c24gPT0gMCk7DQo+ID4gKw0KPiA+ICsJCWFhcmNoNjRfaW5zbl9wYXRjaF90ZXh0KCh2b2lkICop JihvcC0+a3AuYWRkciksICZpbnNuLCAxKTsNCj4gPiArDQo+ID4gKwkJbGlzdF9kZWxfaW5pdCgm b3AtPmxpc3QpOw0KPiA+ICsJfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICt2b2lkIGFyY2hfdW5vcHRp bWl6ZV9rcHJvYmUoc3RydWN0IG9wdGltaXplZF9rcHJvYmUgKm9wKQ0KPiA+ICt7DQo+ID4gKwlh cmNoX2FybV9rcHJvYmUoJm9wLT5rcCk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qDQo+ID4gKyAq IFJlY292ZXIgb3JpZ2luYWwgaW5zdHJ1Y3Rpb25zIGFuZCBicmVha3BvaW50cyBmcm9tIHJlbGF0 aXZlIGp1bXBzLg0KPiA+ICsgKiBDYWxsZXIgbXVzdCBjYWxsIHdpdGggbG9ja2luZyBrcHJvYmVf bXV0ZXguDQo+ID4gKyAqLw0KPiA+ICt2b2lkIGFyY2hfdW5vcHRpbWl6ZV9rcHJvYmVzKHN0cnVj dCBsaXN0X2hlYWQgKm9wbGlzdCwNCj4gPiArCQkJICAgIHN0cnVjdCBsaXN0X2hlYWQgKmRvbmVf bGlzdCkNCj4gPiArew0KPiA+ICsJc3RydWN0IG9wdGltaXplZF9rcHJvYmUgKm9wLCAqdG1wOw0K PiA+ICsNCj4gPiArCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShvcCwgdG1wLCBvcGxpc3QsIGxp c3QpIHsNCj4gPiArCQlhcmNoX3Vub3B0aW1pemVfa3Byb2JlKG9wKTsNCj4gPiArCQlsaXN0X21v dmUoJm9wLT5saXN0LCBkb25lX2xpc3QpOw0KPiA+ICsJfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICt2 b2lkIGFyY2hfcmVtb3ZlX29wdGltaXplZF9rcHJvYmUoc3RydWN0IG9wdGltaXplZF9rcHJvYmUg Km9wKQ0KPiA+ICt7DQo+ID4gKwlpZiAob3AtPm9wdGluc24uaW5zbikgew0KPiA+ICsJCWZyZWVf b3B0aW5zbl9zbG90KG9wLT5vcHRpbnNuLmluc24sIDEpOw0KPiA+ICsJCW9wLT5vcHRpbnNuLmlu c24gPSBOVUxMOw0KPiA+ICsJfQ0KPiA+ICt9DQo+ID4gKw0KPiA+IGRpZmYgLS1naXQgYS9hcmNo L2FybTY0L2tlcm5lbC9wcm9iZXMvb3B0cHJvYmVfdHJhbXBvbGluZS5TDQo+IGIvYXJjaC9hcm02 NC9rZXJuZWwvcHJvYmVzL29wdHByb2JlX3RyYW1wb2xpbmUuUw0KPiA+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMC4uOTVkMTUyOQ0KPiA+IC0tLSAvZGV2L251bGwNCj4g PiArKysgYi9hcmNoL2FybTY0L2tlcm5lbC9wcm9iZXMvb3B0cHJvYmVfdHJhbXBvbGluZS5TDQo+ ID4gQEAgLTAsMCArMSw4MSBAQA0KPiA+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BM LTIuMCAqLw0KPiA+ICsvKg0KPiA+ICsgKiB0cmFtcG9saW5lIGVudHJ5IGFuZCByZXR1cm4gY29k ZSBmb3Igb3B0cHJvYmVzLg0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxsaW51eC9s aW5rYWdlLmg+DQo+ID4gKyNpbmNsdWRlIDxhc20vYXNtLW9mZnNldHMuaD4NCj4gPiArI2luY2x1 ZGUgPGFzbS9hc3NlbWJsZXIuaD4NCj4gPiArDQo+ID4gKwkuZ2xvYmFsIG9wdHByb2JlX3RlbXBs YXRlX2VudHJ5DQo+ID4gK29wdHByb2JlX3RlbXBsYXRlX2VudHJ5Og0KPiA+ICsJc3ViIHNwLCBz cCwgI1BUX1JFR1NfU0laRQ0KPiA+ICsJc3RwIHgwLCB4MSwgW3NwLCAjU19YMF0NCj4gPiArCXN0 cCB4MiwgeDMsIFtzcCwgI1NfWDJdDQo+ID4gKwlzdHAgeDQsIHg1LCBbc3AsICNTX1g0XQ0KPiA+ ICsJc3RwIHg2LCB4NywgW3NwLCAjU19YNl0NCj4gPiArCXN0cCB4OCwgeDksIFtzcCwgI1NfWDhd DQo+ID4gKwlzdHAgeDEwLCB4MTEsIFtzcCwgI1NfWDEwXQ0KPiA+ICsJc3RwIHgxMiwgeDEzLCBb c3AsICNTX1gxMl0NCj4gPiArCXN0cCB4MTQsIHgxNSwgW3NwLCAjU19YMTRdDQo+ID4gKwlzdHAg eDE2LCB4MTcsIFtzcCwgI1NfWDE2XQ0KPiA+ICsJc3RwIHgxOCwgeDE5LCBbc3AsICNTX1gxOF0N Cj4gPiArCXN0cCB4MjAsIHgyMSwgW3NwLCAjU19YMjBdDQo+ID4gKwlzdHAgeDIyLCB4MjMsIFtz cCwgI1NfWDIyXQ0KPiA+ICsJc3RwIHgyNCwgeDI1LCBbc3AsICNTX1gyNF0NCj4gPiArCXN0cCB4 MjYsIHgyNywgW3NwLCAjU19YMjZdDQo+ID4gKwlzdHAgeDI4LCB4MjksIFtzcCwgI1NfWDI4XQ0K PiA+ICsJYWRkIHgwLCBzcCwgI1BUX1JFR1NfU0laRQ0KPiA+ICsJc3RwIGxyLCB4MCwgW3NwLCAj U19MUl0NCj4gPiArCS8qDQo+ID4gKwkgKiBDb25zdHJ1Y3QgYSB1c2VmdWwgc2F2ZWQgUFNUQVRF DQo+ID4gKwkgKi8NCj4gPiArCW1ycyB4MCwgbnpjdg0KPiA+ICsJbXJzIHgxLCBkYWlmDQo+ID4g KwlvcnIgeDAsIHgwLCB4MQ0KPiA+ICsJbXJzIHgxLCBDdXJyZW50RUwNCj4gPiArCW9yciB4MCwg eDAsIHgxDQo+ID4gKwltcnMgeDEsIFNQU2VsDQo+ID4gKwlvcnIgeDAsIHgwLCB4MQ0KPiA+ICsJ c3RwIHh6ciwgeDAsIFtzcCwgI1NfUENdDQo+ID4gKwkvKiBHZXQgcGFyYW1ldGVycyB0byBvcHRp bWl6ZWRfY2FsbGJhY2soKSAqLw0KPiA+ICsJbGRyCXgwLCAxZg0KPiA+ICsJbW92CXgxLCBzcA0K PiA+ICsJLyogQnJhbmNoIHRvIG9wdGltaXplZF9jYWxsYmFjaygpICovDQo+ID4gKwkuZ2xvYmFs IG9wdHByb2JlX3RlbXBsYXRlX2NhbGwNCj4gPiArb3B0cHJvYmVfdGVtcGxhdGVfY2FsbDoNCj4g PiArCW5vcA0KPiA+ICsgICAgICAgIC8qIFJlc3RvcmUgcmVnaXN0ZXJzICovDQo+ID4gKwlsZHIg eDAsIFtzcCwgI1NfUFNUQVRFXQ0KPiA+ICsJYW5kIHgwLCB4MCwgIyhQU1JfTl9CSVQgfCBQU1Jf Wl9CSVQgfCBQU1JfQ19CSVQgfCBQU1JfVl9CSVQpDQo+ID4gKwltc3IgbnpjdiwgeDANCj4gPiAr CWxkcCB4MCwgeDEsIFtzcCwgI1NfWDBdDQo+ID4gKwlsZHAgeDIsIHgzLCBbc3AsICNTX1gyXQ0K PiA+ICsJbGRwIHg0LCB4NSwgW3NwLCAjU19YNF0NCj4gPiArCWxkcCB4NiwgeDcsIFtzcCwgI1Nf WDZdDQo+ID4gKwlsZHAgeDgsIHg5LCBbc3AsICNTX1g4XQ0KPiA+ICsJbGRwIHgxMCwgeDExLCBb c3AsICNTX1gxMF0NCj4gPiArCWxkcCB4MTIsIHgxMywgW3NwLCAjU19YMTJdDQo+ID4gKwlsZHAg eDE0LCB4MTUsIFtzcCwgI1NfWDE0XQ0KPiA+ICsJbGRwIHgxNiwgeDE3LCBbc3AsICNTX1gxNl0N Cj4gPiArCWxkcCB4MTgsIHgxOSwgW3NwLCAjU19YMThdDQo+ID4gKwlsZHAgeDIwLCB4MjEsIFtz cCwgI1NfWDIwXQ0KPiA+ICsJbGRwIHgyMiwgeDIzLCBbc3AsICNTX1gyMl0NCj4gPiArCWxkcCB4 MjQsIHgyNSwgW3NwLCAjU19YMjRdDQo+ID4gKwlsZHAgeDI2LCB4MjcsIFtzcCwgI1NfWDI2XQ0K PiA+ICsJbGRwIHgyOCwgeDI5LCBbc3AsICNTX1gyOF0NCj4gPiArCWxkciBsciwgW3NwLCAjU19M Ul0NCj4gPiArICAgICAgICBhZGQgc3AsIHNwLCAjUFRfUkVHU19TSVpFDQo+ID4gKwkuZ2xvYmFs IG9wdHByb2JlX3RlbXBsYXRlX3Jlc3RvcmVfb3JpZ19pbnNuDQo+ID4gK29wdHByb2JlX3RlbXBs YXRlX3Jlc3RvcmVfb3JpZ19pbnNuOg0KPiA+ICsJbm9wDQo+ID4gKwkuZ2xvYmFsIG9wdHByb2Jl X3RlbXBsYXRlX3Jlc3RvcmVfZW5kDQo+ID4gK29wdHByb2JlX3RlbXBsYXRlX3Jlc3RvcmVfZW5k Og0KPiA+ICsJbm9wDQo+ID4gKwkuZ2xvYmFsIG9wdHByb2JlX3RlbXBsYXRlX2VuZA0KPiA+ICtv cHRwcm9iZV90ZW1wbGF0ZV9lbmQ6DQo+ID4gKwkuZ2xvYmFsIG9wdHByb2JlX3RlbXBsYXRlX3Zh bA0KPiA+ICtvcHRwcm9iZV90ZW1wbGF0ZV92YWw6DQo+ID4gKwkxOgkubG9uZyAwDQo+ID4gKwkJ LmxvbmcgMA0KPiA+ICsNCj4gPg0KDQpUaGFua3MNCkJhcnJ5DQoNCg0K