From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from canpmsgout03.his.huawei.com (canpmsgout03.his.huawei.com [113.46.200.218]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6581121D5B0 for ; Mon, 9 Feb 2026 11:47:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=113.46.200.218 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770637660; cv=none; b=ttkeK0ElSj1OhF9MAU5SZU6jyrO+mQmjgSXt7+ltMqtzLg6ftwur+pSYd3aWhp/zRpYoxG0diZt7hj3Lj2bYl3IGbT2vRgdGEkWnwpfuGOOr9XdvY5J1n+4vnm+vC4e3bIU5F+wNT2db4XwGVfKQ34FIZnXFh1QYpJWLjQ95ozI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770637660; c=relaxed/simple; bh=IelMc/uIw/l9YzoezDSmMffoUOJYzEm9p74b+grYLYg=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=GieW2cQ7p/ga3gK8Iuix+mR7d/qgIubakEjGsBpSAYFokLl3VojQ67IaKRitBL/Y6idHIBP81flfEfqLQsgJcwyYq4OcbQ3qsf8u5rffKFrIxPj2fvaG91vtMlGVu3k8FCo2KbyWbFLr3VfZ/h1TO+x36D6a8Jd/p0A38TSNtWw= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=h-partners.com; spf=pass smtp.mailfrom=h-partners.com; dkim=pass (1024-bit key) header.d=h-partners.com header.i=@h-partners.com header.b=Lbr0U0Rr; arc=none smtp.client-ip=113.46.200.218 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=h-partners.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=h-partners.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=h-partners.com header.i=@h-partners.com header.b="Lbr0U0Rr" dkim-signature: v=1; a=rsa-sha256; d=h-partners.com; s=dkim; c=relaxed/relaxed; q=dns/txt; h=From; bh=IelMc/uIw/l9YzoezDSmMffoUOJYzEm9p74b+grYLYg=; b=Lbr0U0RrPHsDgSYS6T8LVXZQJltbNiOHv/BHdDtG7fqekqxQj7NuJsFGL6cWtqP5YO9kyAo7/ pmQh0tV0+7bk/rtCml+p56Er4xcA+dv165UNQHkUmJXJI2oezkmtFXcEAm+1WaBrJGCXWXUNOFj Lp5LHabuJvVEPvyubSdMYHM= Received: from mail.maildlp.com (unknown [172.19.162.223]) by canpmsgout03.his.huawei.com (SkyGuard) with ESMTPS id 4f8jW861BCzpStM; Mon, 9 Feb 2026 19:43:16 +0800 (CST) Received: from kwepemf500012.china.huawei.com (unknown [7.202.181.250]) by mail.maildlp.com (Postfix) with ESMTPS id 6EC2F40569; Mon, 9 Feb 2026 19:47:36 +0800 (CST) Received: from kwepemf200011.china.huawei.com (7.202.181.237) by kwepemf500012.china.huawei.com (7.202.181.250) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Mon, 9 Feb 2026 19:47:36 +0800 Received: from kwepemf200011.china.huawei.com ([7.202.181.237]) by kwepemf200011.china.huawei.com ([7.202.181.237]) with mapi id 15.02.1544.011; Mon, 9 Feb 2026 19:47:36 +0800 From: "hanwei (K)" To: Andrew Pinski , Kees Cook CC: Indu Bhagat , Claudiu Zissulescu , Qing Zhao , "gcc-patches@gcc.gnu.org" , "linux-hardening@vger.kernel.org" Subject: =?utf-8?B?562U5aSNOiBbUEFUQ0ggdjRdIEZpeCBzYW5pdGl6ZXIgYXR0cmlidXRlIGlu?= =?utf-8?B?ZnJhc3RydWN0dXJlIHRvIHVzZSBzdGFuZGFyZCBUUkVFX0xJU1QgZm9ybWF0?= =?utf-8?Q?_[PR113264]?= Thread-Topic: [PATCH v4] Fix sanitizer attribute infrastructure to use standard TREE_LIST format [PR113264] Thread-Index: AQHcmZ4BG/o5OHbUQkyJCzHfFvOvE7V6PHVQ Date: Mon, 9 Feb 2026 11:47:35 +0000 Message-ID: <92b90f7443304a189f861ffe8a387267@h-partners.com> References: <20250904174325.it.487-kees@kernel.org> In-Reply-To: Accept-Language: en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Precedence: bulk X-Mailing-List: linux-hardening@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 U29tZSBjb2RlIHN0eWxlIGFkdmljZSBiZWxvdyBjYW4gYmUgZml4Og0KDQpMaW5lcyBzaG91bGQg bm90IGV4Y2VlZCA4MCBjaGFyYWN0ZXJzLg0KMTQ6KyAgICAgICAgICBzYW5pdGl6ZV9jb2RlX3R5 cGUgbm9fc2FuaXRpemVfZmxhZ3MgPSB0cmVlX3RvX3Nhbml0aXplX2NvZGVfdHlwZSAoVFJFRV9W QUxVRSAoYXR0cl9hcmdzKSk7DQozMzorICAgICAgc2FuaXRpemVfY29kZV90eXBlIG9sZF92YWx1 ZSA9IHRyZWVfdG9fc2FuaXRpemVfY29kZV90eXBlIChUUkVFX1ZBTFVFIChhdHRyX2FyZ3MpKTsN CjQyOisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRfaW50X2Nz dCAodWludDY0X3R5cGVfbm9kZSwgZmxhZ3MpKTsNCjUyOisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGJ1aWxkX2ludF9jc3QgKHVpbnQ2NF90eXBlX25vZGUsIGZsYWdz KSk7DQo1MzorICAgICAgREVDTF9BVFRSSUJVVEVTIChub2RlKSA9IHRyZWVfY29ucyAoZ2V0X2lk ZW50aWZpZXIgKCJub19zYW5pdGl6ZSIpLCBhdHRyX3ZhbHVlLA0KMTEwOisgICAgICBzYW5pdGl6 ZV9jb2RlX3R5cGUgb2xkX3ZhbHVlID0gdHJlZV90b19zYW5pdGl6ZV9jb2RlX3R5cGUgKFRSRUVf VkFMVUUgKGF0dHJfYXJncykpOw0KMTE4OisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBidWlsZF9pbnRfY3N0IChkX3Vsb25nX3R5cGUsIGZsYWdzKSk7DQoNCklm IHRoaXMgaXMgdHJpdmlhbCwgcGxlYXNlIGlnbm9yZSBpdC4gSSdtIG5vdCBmYW1pbGlhciB3aXRo IGdjYyA6KQ0KDQotLS0tLemCruS7tuWOn+S7ti0tLS0tDQrlj5Hku7bkuro6IEFuZHJldyBQaW5z a2kgPGFuZHJldy5waW5za2lAb3NzLnF1YWxjb21tLmNvbT4gDQrlj5HpgIHml7bpl7Q6IDIwMjbl ubQy5pyIOeaXpSAxNjoyOA0K5pS25Lu25Lq6OiBLZWVzIENvb2sgPGtlZXNAa2VybmVsLm9yZz4N CuaKhOmAgTogSW5kdSBCaGFnYXQgPGluZHUuYmhhZ2F0QG9yYWNsZS5jb20+OyBDbGF1ZGl1IFpp c3N1bGVzY3UgPGNsYXVkaXUuemlzc3VsZXNjdS1pYW5jdWxlc2N1QG9yYWNsZS5jb20+OyBRaW5n IFpoYW8gPHFpbmcuemhhb0BvcmFjbGUuY29tPjsgZ2NjLXBhdGNoZXNAZ2NjLmdudS5vcmc7IGxp bnV4LWhhcmRlbmluZ0B2Z2VyLmtlcm5lbC5vcmcNCuS4u+mimDogUmU6IFtQQVRDSCB2NF0gRml4 IHNhbml0aXplciBhdHRyaWJ1dGUgaW5mcmFzdHJ1Y3R1cmUgdG8gdXNlIHN0YW5kYXJkIFRSRUVf TElTVCBmb3JtYXQgW1BSMTEzMjY0XQ0KDQpPbiBUaHUsIFNlcCA0LCAyMDI1IGF0IDEwOjQz4oCv QU0gS2VlcyBDb29rIDxrZWVzQGtlcm5lbC5vcmc+IHdyb3RlOg0KPg0KPiBUaGUgX19hdHRyaWJ1 dGVfXygoX19jb3B5X18pKSBmdW5jdGlvbmFsaXR5IHdhcyBjcmFzaGluZyB3aGVuIGNvcHlpbmcg DQo+IHNhbml0aXplci1yZWxhdGVkIGF0dHJpYnV0ZXMgYmVjYXVzZSB0aGVzZSBhdHRyaWJ1dGVz IHZpb2xhdGVkIHRoZSANCj4gc3RhbmRhcmQgR0NDIGF0dHJpYnV0ZSBpbmZyYXN0cnVjdHVyZSBi eSBzdG9yaW5nIElOVEVHRVJfQ1NUIHZhbHVlcyANCj4gZGlyZWN0bHkgaW5zdGVhZCBvZiB3cmFw cGluZyB0aGVtIGluIFRSRUVfTElTVCBsaWtlIGFsbCBvdGhlciBhdHRyaWJ1dGVzLg0KPg0KPiBX cmFwIHNhbml0aXplciBhdHRyaWJ1dGVzIElOVEVHRVJfQ1NUIHZhbHVlcyBpbiBUUkVFX0xJU1Qg c3RydWN0dXJlcyANCj4gdG8gZm9sbG93IHRoZSBzYW1lIHBhdHRlcm4gYXMgb3RoZXIgYXR0cmli dXRlcy4gVGhpcyBlbGltaW5hdGVzIHRoZQ0KPiBjb3B5X2xpc3QoKSBjcmFzaGVzIHdoZW4gY29w eWluZyBzYW5pdGl6ZXIgYXR0cmlidXRlczoNCj4NCj4gdGVzdC5jOjQ6MTogaW50ZXJuYWwgY29t cGlsZXIgZXJyb3I6IHRyZWUgY2hlY2s6IGV4cGVjdGVkIHRyZWUgdGhhdCBjb250YWlucyDigJhj b21tb27igJkgc3RydWN0dXJlLCBoYXZlIOKAmGludGVnZXJfY3N04oCZIGluIGNvcHlfbGlzdCwg YXQgdHJlZS5jYzoxNDI3DQo+ICAgICA0IHwgX19hdHRyaWJ1dGVfXygoX19jb3B5X18oX190YW5o KSkpOw0KPiAgICAgICB8IF5+fn5+fn5+fn5+fn4NCj4gMHg4NTlkMDYgdHJlZV9jb250YWluc19z dHJ1Y3RfY2hlY2tfZmFpbGVkKHRyZWVfbm9kZSBjb25zdCosIHRyZWVfbm9kZV9zdHJ1Y3R1cmVf ZW51bSwgY2hhciBjb25zdCosIGludCwgY2hhciBjb25zdCopDQo+ICAgICAgICAgLi4vLi4vZ2Nj L2djYy90cmVlLmNjOjkxMjYNCj4gMHg4NjBmNzggY29udGFpbnNfc3RydWN0X2NoZWNrKHRyZWVf bm9kZSosIHRyZWVfbm9kZV9zdHJ1Y3R1cmVfZW51bSwgY2hhciBjb25zdCosIGludCwgY2hhciBj b25zdCopDQo+ICAgICAgICAgLi4vLi4vZ2NjL2djYy90cmVlLmg6Mzc0OA0KPiAweDg2MGY3OCBj b3B5X2xpc3QodHJlZV9ub2RlKikNCj4gICAgICAgICAuLi8uLi9nY2MvZ2NjL3RyZWUuY2M6MTQy Nw0KPiAweGE3NTVhNSBoYW5kbGVfY29weV9hdHRyaWJ1dGUNCj4gICAgICAgICAuLi8uLi9nY2Mv Z2NjL2MtZmFtaWx5L2MtYXR0cmlicy5jYzozMDc3DQoNCg0KSSBhbSBub3QgYSBmYW4gb2YgdGhl IHdyYXBwaW5nIGJlY2F1c2UgaXQgaW5jcmVhc2VzIHRoZSBtZW1vcnkgdXNhZ2Ugc2xpZ2h0bHkg YnV0IGl0IGlzIHJlcXVpcmVkIHNpbmNlIHRoZSByZXN0IG9mIHRoZSBhdHRyaWJ1dGVzIGNvZGUg cmVxdWlyZXMgVFJFRV9MSVNUIGhlcmUuDQoNClNvIE9rLiAgSSB3aWxsIGRvIGZpbmFsIHRlc3Rp bmcgZWl0aGVyIE1vbmRheSBvciBUdWVzZGF5IGFuZCBwdXNoIGl0IGFmdGVyIHRoYXQuDQoNClRo YW5rcywNCkFuZHJldw0KDQo+DQo+IGdjYy9jLWZhbWlseS9DaGFuZ2VMb2c6DQo+DQo+ICAgICAg ICAgUFIgYy8xMTMyNjQNCj4gICAgICAgICAqIGMtYXR0cmlicy5jYyAoYWRkX25vX3Nhbml0aXpl X3ZhbHVlKTogU3RvcmUgSU5URUdFUl9DU1QgdmFsdWVzDQo+ICAgICAgICAgd3JhcHBlZCBpbiBU UkVFX0xJU1QgZm9sbG93aW5nIHN0YW5kYXJkIGF0dHJpYnV0ZSBjb252ZW50aW9ucy4NCj4gICAg ICAgICAoaGFuZGxlX25vX3Nhbml0aXplX2F0dHJpYnV0ZSk6IEhhbmRsZSBib3RoIG9yaWdpbmFs IHN0cmluZw0KPiAgICAgICAgIGFyZ3VtZW50cyBhbmQgY29waWVkIElOVEVHRVJfQ1NUIHZhbHVl cyBmcm9tIFRSRUVfTElTVCBmb3JtYXQuDQo+DQo+IGdjYy9DaGFuZ2VMb2c6DQo+DQo+ICAgICAg ICAgUFIgYy8xMTMyNjQNCj4gICAgICAgICAqIGFzYW4uaCAoc2FuaXRpemVfZmxhZ3NfcCk6IEV4 dHJhY3Qgc2FuaXRpemVyIGZsYWdzIGZyb20NCj4gICAgICAgICBUUkVFX0xJU1Qgd3JhcHBlciBp bnN0ZWFkIG9mIGRpcmVjdGx5IGZyb20gSU5URUdFUl9DU1QuDQo+DQo+IGdjYy9kL0NoYW5nZUxv ZzoNCj4NCj4gICAgICAgICBQUiBjLzExMzI2NA0KPiAgICAgICAgICogZC1hdHRyaWJzLmNjIChk X2hhbmRsZV9ub19zYW5pdGl6ZV9hdHRyaWJ1dGUpOiBTdG9yZSBJTlRFR0VSX0NTVA0KPiAgICAg ICAgIHZhbHVlcyB3cmFwcGVkIGluIFRSRUVfTElTVCBmb2xsb3dpbmcgc3RhbmRhcmQgY29udmVu dGlvbnMuDQo+DQo+IGdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nOg0KPg0KPiAgICAgICAgIFBSIGMv MTEzMjY0DQo+ICAgICAgICAgKiBnY2MuZGcvcHIxMTMyNjQuYzogTmV3IHRlc3QuDQo+ICAgICAg ICAgKiBnY2MuZGcvcHIxMTMyNjQtYXNhbi1uby1pbnN0cnVtZW50YXRpb24uYzogTmV3IHRlc3Qg dmFsaWRhdGluZw0KPiAgICAgICAgIHRoYXQgY29waWVkIHNhbml0aXplciBhdHRyaWJ1dGVzIHBy ZXZlbnQgQVNBTiBpbnN0cnVtZW50YXRpb24uDQo+DQo+IFNpZ25lZC1vZmYtYnk6IEtlZXMgQ29v ayA8a2Vlc0BrZXJuZWwub3JnPg0KPiAtLS0NCj4gQ2M6IEluZHUgQmhhZ2F0IDxpbmR1LmJoYWdh dEBvcmFjbGUuY29tPg0KPiBDYzogQ2xhdWRpdSBaaXNzdWxlc2N1IDxjbGF1ZGl1Lnppc3N1bGVz Y3UtaWFuY3VsZXNjdUBvcmFjbGUuY29tPg0KPiBDYzogUWluZyBaaGFvIDxxaW5nLnpoYW9Ab3Jh Y2xlLmNvbT4NCj4gQ2M6IEFuZHJldyBQaW5za2kgPGFuZHJldy5waW5za2lAb3NzLnF1YWxjb21t LmNvbT4NCj4gLS0tDQo+ICBnY2MvYXNhbi5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgIDggKy0NCj4gIC4uLi9nY2MuZGcvcHIxMTMyNjQtYXNhbi1uby1pbnN0cnVtZW50 YXRpb24uYyB8ICA2MCArKysrKysrKysrDQo+ICBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjExMzI2 NC5jICAgICAgICAgICAgICAgfCAxMDcgKysrKysrKysrKysrKysrKysrDQo+ICBnY2MvYy1mYW1p bHkvYy1hdHRyaWJzLmNjICAgICAgICAgICAgICAgICAgICAgfCAgNDkgKysrKystLS0NCj4gIGdj Yy9kL2QtYXR0cmlicy5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNyArKy0NCj4g IDUgZmlsZXMgY2hhbmdlZCwgMjIxIGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKSAgY3Jl YXRlIG1vZGUgDQo+IDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjExMzI2NC1hc2FuLW5v LWluc3RydW1lbnRhdGlvbi5jDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvcHIxMTMyNjQuYw0KPg0KPiBkaWZmIC0tZ2l0IGEvZ2NjL2FzYW4uaCBiL2djYy9hc2Fu LmgNCj4gaW5kZXggYTI0NTYyZjY3YTI5Li5mNWRjM2Q3Y2ViOGQgMTAwNjQ0DQo+IC0tLSBhL2dj Yy9hc2FuLmgNCj4gKysrIGIvZ2NjL2FzYW4uaA0KPiBAQCAtMjUzLDcgKzI1MywxMyBAQCBzYW5p dGl6ZV9mbGFnc19wIChzYW5pdGl6ZV9jb2RlX3R5cGUgZmxhZywNCj4gICAgICB7DQo+ICAgICAg ICB0cmVlIHZhbHVlID0gbG9va3VwX2F0dHJpYnV0ZSAoIm5vX3Nhbml0aXplIiwgREVDTF9BVFRS SUJVVEVTIChmbikpOw0KPiAgICAgICAgaWYgKHZhbHVlKQ0KPiAtICAgICAgIHJlc3VsdF9mbGFn cyAmPSB+dHJlZV90b191aHdpIChUUkVFX1ZBTFVFICh2YWx1ZSkpOw0KPiArICAgICAgIHsNCj4g KyAgICAgICAgIC8qIEV4dHJhY3QgdGhlIElOVEVHRVJfQ1NUIGZyb20gdGhlIFRSRUVfTElTVCB3 cmFwcGVyLiAgKi8NCj4gKyAgICAgICAgIHRyZWUgYXR0cl9hcmdzID0gVFJFRV9WQUxVRSAodmFs dWUpOw0KPiArICAgICAgICAgZ2NjX2Fzc2VydCAoYXR0cl9hcmdzICYmIFRSRUVfQ09ERSAoYXR0 cl9hcmdzKSA9PSBUUkVFX0xJU1QpOw0KPiArICAgICAgICAgc2FuaXRpemVfY29kZV90eXBlIG5v X3Nhbml0aXplX2ZsYWdzID0gdHJlZV90b19zYW5pdGl6ZV9jb2RlX3R5cGUgKFRSRUVfVkFMVUUg KGF0dHJfYXJncykpOw0KPiArICAgICAgICAgcmVzdWx0X2ZsYWdzICY9IH5ub19zYW5pdGl6ZV9m bGFnczsNCj4gKyAgICAgICB9DQo+ICAgICAgfQ0KPg0KPiAgICByZXR1cm4gcmVzdWx0X2ZsYWdz Ow0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHIxMTMyNjQtYXNhbi1uby1p bnN0cnVtZW50YXRpb24uYyANCj4gYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjExMzI2NC1hc2Fu LW5vLWluc3RydW1lbnRhdGlvbi5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAw MDAwMDAwMDAwMC4uODEyYzY3YzMzMDg2DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvcHIxMTMyNjQtYXNhbi1uby1pbnN0cnVtZW50YXRpb24uYw0KPiBAQCAt MCwwICsxLDYwIEBADQo+ICsvKiBQUiBjLzExMzI2NCAtIF9fYXR0cmlidXRlX18oKGNvcHkpKSBj cmFzaGVzIHdpdGggc2FuaXRpemVyIGF0dHJpYnV0ZXMNCj4gKyAgIFRlc3QgdGhhdCBjb3BpZWQg bm9fc2FuaXRpemVfYWRkcmVzcyBhdHRyaWJ1dGVzIHByZXZlbnQgQUxMIEFTQU4gaW5zdHJ1bWVu dGF0aW9uLg0KPiArICAgVGhpcyBmaWxlIHNob3VsZCBoYXZlIE5PIEFTQU4gY2FsbHMgc2luY2Ug YWxsIGZ1bmN0aW9ucyBoYXZlIHRoZSBhdHRyaWJ1dGUuDQo+ICsgICB7IGRnLWRvIGNvbXBpbGUg fQ0KPiArICAgeyBkZy1vcHRpb25zICItZnNhbml0aXplPWFkZHJlc3MiIH0NCj4gKyAgIHsgZGct c2tpcC1pZiAibm8gYWRkcmVzcyBzYW5pdGl6ZXIiIHsgbm9fZnNhbml0aXplX2FkZHJlc3MgfSB9 ICovDQo+ICsNCj4gKy8qIE9yaWdpbmFsIGZ1bmN0aW9uIHdpdGggbm9fc2FuaXRpemVfYWRkcmVz cyAqLw0KPiArX19hdHRyaWJ1dGVfXygobm9fc2FuaXRpemVfYWRkcmVzcykpDQo+ICtpbnQgb3Jp Z2luYWwgKGludCAqcCwgaW50ICpxKQ0KPiArew0KPiArICAqcCA9IDQyOw0KPiArICByZXR1cm4g KnE7DQo+ICt9DQo+ICsNCj4gKy8qIENvcHkgdGhlIGF0dHJpYnV0ZSAtIHNob3VsZCBhbHNvIGhh dmUgbm9fc2FuaXRpemVfYWRkcmVzcyAqLw0KPiArX190eXBlb2Yob3JpZ2luYWwpIGNvcHkxIF9f YXR0cmlidXRlX18oKF9fY29weV9fKG9yaWdpbmFsKSkpOw0KPiAraW50IGNvcHkxIChpbnQgKnAs IGludCAqcSkNCj4gK3sNCj4gKyAgKnAgPSA0MzsNCj4gKyAgcmV0dXJuICpxOw0KPiArfQ0KPiAr DQo+ICsvKiBBbm90aGVyIGNvcHkgLSBzaG91bGQgYWxzbyBoYXZlIG5vX3Nhbml0aXplX2FkZHJl c3MgKi8NCj4gK19fdHlwZW9mKG9yaWdpbmFsKSBjb3B5MiBfX2F0dHJpYnV0ZV9fKChfX2NvcHlf XyhvcmlnaW5hbCkpKTsNCj4gK2ludCBjb3B5MiAoaW50ICpwLCBpbnQgKnEpDQo+ICt7DQo+ICsg ICpwID0gNDQ7DQo+ICsgIHJldHVybiAqcTsNCj4gK30NCj4gKw0KPiArLyogQ29weSBmcm9tIGEg Y29weSAtIHNob3VsZCBzdGlsbCBoYXZlIG5vX3Nhbml0aXplX2FkZHJlc3MgKi8NCj4gK19fdHlw ZW9mKGNvcHkxKSBjb3B5X29mX2NvcHkgX19hdHRyaWJ1dGVfXygoX19jb3B5X18oY29weTEpKSk7 IGludCANCj4gK2NvcHlfb2ZfY29weSAoaW50ICpwLCBpbnQgKnEpIHsNCj4gKyAgKnAgPSA0NTsN Cj4gKyAgcmV0dXJuICpxOw0KPiArfQ0KPiArDQo+ICtpbnQgc2VwYXJhdGVfZGVjbCAodm9pZCk7 DQo+ICtfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpIGludCBzZXBhcmF0ZV9kZWNsICh2b2lkKTsN Cj4gKw0KPiArX19hdHRyaWJ1dGVfXygoX19jb3B5X18oc2VwYXJhdGVfZGVjbCksIG5vX3Nhbml0 aXplX2FkZHJlc3MpKSBpbnQgDQo+ICtjb3B5X2FuZF9hbm5vdGF0ZWRfYWxpYXMgKGludCAqcCwg aW50ICpxKSB7DQo+ICsgICpwID0gNDI7DQo+ICsgIHJldHVybiAqcTsNCj4gK30NCj4gKw0KPiAr X19hdHRyaWJ1dGVfXygoX19jb3B5X18oc2VwYXJhdGVfZGVjbCksIG5vX3Nhbml0aXplKCJhZGRy ZXNzIikpKSBpbnQgDQo+ICtjb3B5X2FuZF9hbm5vdGF0ZWRfc3RyaW5nIChpbnQgKnAsIGludCAq cSkgew0KPiArICAqcCA9IDQyOw0KPiArICByZXR1cm4gKnE7DQo+ICt9DQo+ICsNCj4gKy8qIFNp bmNlIEFMTCBmdW5jdGlvbnMgaGF2ZSBub19zYW5pdGl6ZV9hZGRyZXNzIChlaXRoZXIgZGlyZWN0 bHkgb3IgY29waWVkKSwNCj4gKyAgIHRoZXJlIHNob3VsZCBiZSBOTyBBU0FOIGluc3RydW1lbnRh dGlvbiBjYWxscyBpbiB0aGUgZW50aXJlIGZpbGUuIA0KPiArKi8NCj4gKy8qIHsgZGctZmluYWwg eyBzY2FuLWFzc2VtYmxlci1ub3QgIl9fYXNhbl9yZXBvcnRfc3RvcmUiIH0gfSAqLw0KPiArLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiX19hc2FuX3JlcG9ydF9sb2FkIiB9IH0g Ki8NCj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByMTEzMjY0LmMgDQo+IGIv Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHIxMTMyNjQuYyBuZXcgZmlsZSBtb2RlIDEwMDY0NCBpbmRl eCANCj4gMDAwMDAwMDAwMDAwLi4yYTQ5OTY1ZTI2ZmQNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysg Yi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjExMzI2NC5jDQo+IEBAIC0wLDAgKzEsMTA3IEBADQo+ ICsvKiBQUiBjLzExMzI2NCAtIF9fYXR0cmlidXRlX18oKGNvcHkpKSBjcmFzaGVzIHdpdGggc2Fu aXRpemVyIGF0dHJpYnV0ZXMNCj4gKyAgIFRlc3QgdGhhdCB0aGUgY29weSBhdHRyaWJ1dGUgY29y cmVjdGx5IGhhbmRsZXMgc2FuaXRpemVyIGF0dHJpYnV0ZXMNCj4gKyAgIHdoaWNoIHN0b3JlIHRo ZWlyIGFyZ3VtZW50cyBhcyBJTlRFR0VSX0NTVCB2YWx1ZXMgcmF0aGVyIHRoYW4gVFJFRV9MSVNU Lg0KPiArICAgeyBkZy1kbyBjb21waWxlIH0NCj4gKyAgIHsgZGctb3B0aW9ucyAiLU8yIiB9ICov DQo+ICsNCj4gKy8qIFRlc3QgY29weWluZyBub19zYW5pdGl6ZV9hZGRyZXNzIGF0dHJpYnV0ZS4g ICovDQo+ICtfX2F0dHJpYnV0ZV9fKChub19zYW5pdGl6ZV9hZGRyZXNzKSkgdm9pZCBmMSAodm9p ZCk7DQo+ICtfX3R5cGVvZihmMSkgZjFfY29weSBfX2F0dHJpYnV0ZV9fKChfX2NvcHlfXyhmMSkp KTsNCj4gKw0KPiArLyogVGVzdCBjb3B5aW5nIG5vX3Nhbml0aXplX3RocmVhZCBhdHRyaWJ1dGUu ICAqLw0KPiArX19hdHRyaWJ1dGVfXygobm9fc2FuaXRpemVfdGhyZWFkKSkgdm9pZCBmMiAodm9p ZCk7DQo+ICtfX3R5cGVvZihmMikgZjJfY29weSBfX2F0dHJpYnV0ZV9fKChfX2NvcHlfXyhmMikp KTsNCj4gKw0KPiArLyogVGVzdCBjb3B5aW5nIG5vX3Nhbml0aXplX3VuZGVmaW5lZCBhdHRyaWJ1 dGUuICAqLw0KPiArX19hdHRyaWJ1dGVfXygobm9fc2FuaXRpemVfdW5kZWZpbmVkKSkgdm9pZCBm MyAodm9pZCk7DQo+ICtfX3R5cGVvZihmMykgZjNfY29weSBfX2F0dHJpYnV0ZV9fKChfX2NvcHlf XyhmMykpKTsNCj4gKw0KPiArLyogVGVzdCBjb3B5aW5nIG5vX3Nhbml0aXplX2NvdmVyYWdlIGF0 dHJpYnV0ZS4gICovDQo+ICtfX2F0dHJpYnV0ZV9fKChub19zYW5pdGl6ZV9jb3ZlcmFnZSkpIHZv aWQgZjQgKHZvaWQpOw0KPiArX190eXBlb2YoZjQpIGY0X2NvcHkgX19hdHRyaWJ1dGVfXygoX19j b3B5X18oZjQpKSk7DQo+ICsNCj4gKy8qIFRlc3QgY29weWluZyBub19zYW5pdGl6ZSBhdHRyaWJ1 dGUgd2l0aCBzdHJpbmcgYXJndW1lbnRzLiAgKi8NCj4gK19fYXR0cmlidXRlX18oKG5vX3Nhbml0 aXplKCJhZGRyZXNzIikpKSB2b2lkIGY1ICh2b2lkKTsNCj4gK19fdHlwZW9mKGY1KSBmNV9jb3B5 IF9fYXR0cmlidXRlX18oKF9fY29weV9fKGY1KSkpOw0KPiArDQo+ICtfX2F0dHJpYnV0ZV9fKChu b19zYW5pdGl6ZSgidGhyZWFkIikpKSB2b2lkIGY2ICh2b2lkKTsNCj4gK19fdHlwZW9mKGY2KSBm Nl9jb3B5IF9fYXR0cmlidXRlX18oKF9fY29weV9fKGY2KSkpOw0KPiArDQo+ICtfX2F0dHJpYnV0 ZV9fKChub19zYW5pdGl6ZSgidW5kZWZpbmVkIikpKSB2b2lkIGY3ICh2b2lkKTsNCj4gK19fdHlw ZW9mKGY3KSBmN19jb3B5IF9fYXR0cmlidXRlX18oKF9fY29weV9fKGY3KSkpOw0KPiArDQo+ICsv KiBUZXN0IGNvcHlpbmcgbXVsdGlwbGUgc2FuaXRpemVyIGZsYWdzLiAgKi8gDQo+ICtfX2F0dHJp YnV0ZV9fKChub19zYW5pdGl6ZSgiYWRkcmVzcyIsICJ0aHJlYWQiKSkpIHZvaWQgZjggKHZvaWQp Ow0KPiArX190eXBlb2YoZjgpIGY4X2NvcHkgX19hdHRyaWJ1dGVfXygoX19jb3B5X18oZjgpKSk7 DQo+ICsNCj4gKy8qIFRlc3QgdGhlIG9yaWdpbmFsIGJ1ZyByZXBvcnQgY2FzZS4gIFRoaXMgbWF5 IHRyaWdnZXIgYSB3YXJuaW5nDQo+ICsgICBhYm91dCBjb25mbGljdGluZyB3aXRoIGEgYnVpbHQt aW4gZnVuY3Rpb24gbmFtZS4gICovDQo+ICtfX2F0dHJpYnV0ZV9fKChub19zYW5pdGl6ZV9hZGRy ZXNzKSkgdm9pZCBoICh2b2lkKTsNCj4gK19fdHlwZW9mKGgpIHRhbmhmNjQgX19hdHRyaWJ1dGVf XygoX19jb3B5X18oaCkpKTsNCj4gKy8qIHsgZGctd2FybmluZyAiY29uZmxpY3RpbmcgdHlwZXMg Zm9yIGJ1aWx0LWluIGZ1bmN0aW9uIiAiIiB7IHRhcmdldCANCj4gKyotKi0qIH0gLi0xIH0gKi8N Cj4gKw0KPiArLyogVGVzdCBjb3B5aW5nIGZyb20gYSBmdW5jdGlvbiBwb2ludGVyIHZhcmlhYmxl IC0gdGhpcyBzaG91bGQgDQo+ICt0cmlnZ2VyIGEgd2FybmluZy4gICovDQo+ICtfX2F0dHJpYnV0 ZV9fKChub19zYW5pdGl6ZV9hZGRyZXNzKSkgdm9pZCBmOSAodm9pZCk7IHZvaWQgDQo+ICsoKmY5 X3B0cikodm9pZCkgPSBmOTsgLyogeyBkZy1tZXNzYWdlICJzeW1ib2wgJ2Y5X3B0cicgcmVmZXJl bmNlZCIgfSANCj4gKyovDQo+ICtfX3R5cGVvZihmOSkgZjlfcHRyX2NvcHkgX19hdHRyaWJ1dGVf XygoX19jb3B5X18oKmY5X3B0cikpKTsgLyogeyANCj4gK2RnLXdhcm5pbmcgIidjb3B5JyBhdHRy aWJ1dGUgaWdub3JlZCIgfSAqLw0KPiArDQo+ICsvKiBUZXN0IHdpdGggYWN0dWFsIGZ1bmN0aW9u IGRlZmluaXRpb25zIHRvIGVuc3VyZSBhdHRyaWJ1dGVzIGFyZSANCj4gK3Byb3Blcmx5IGFwcGxp ZWQuICAqLw0KPiArX19hdHRyaWJ1dGVfXygobm9fc2FuaXRpemVfYWRkcmVzcykpDQo+ICt2b2lk IGFjdHVhbF9mdW5jIChpbnQgKnApDQo+ICt7DQo+ICsgICpwID0gMTAwOw0KPiArfQ0KPiArDQo+ ICtfX3R5cGVvZihhY3R1YWxfZnVuYykgYWN0dWFsX2Z1bmNfY29weSANCj4gK19fYXR0cmlidXRl X18oKF9fY29weV9fKGFjdHVhbF9mdW5jKSkpOw0KPiArDQo+ICt2b2lkIGFjdHVhbF9mdW5jX2Nv cHkgKGludCAqcCkNCj4gK3sNCj4gKyAgKnAgPSAyMDA7DQo+ICt9DQo+ICsNCj4gKy8qIFRlc3Qg Y29weWluZyBzYW5pdGl6ZXIgYXR0cmlidXRlcyBhbG9uZyB3aXRoIG90aGVyIGF0dHJpYnV0ZXMu ICAqLyANCj4gK19fYXR0cmlidXRlX18oKG5vX3Nhbml0aXplX2FkZHJlc3MsIG5vaW5saW5lLCBj b2xkKSkgdm9pZCBtdWx0aV9hdHRyIA0KPiArKHZvaWQpOw0KPiArDQo+ICtfX3R5cGVvZihtdWx0 aV9hdHRyKSBtdWx0aV9hdHRyX2NvcHkgDQo+ICtfX2F0dHJpYnV0ZV9fKChfX2NvcHlfXyhtdWx0 aV9hdHRyKSkpOw0KPiArDQo+ICsvKiBWZXJpZnkgdGhhdCB0aGUgY29weSBhdHRyaWJ1dGUgd29y a3Mgd2l0aCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgdGhhdA0KPiArICAgaGF2ZSBzYW5pdGl6ZXIg YXR0cmlidXRlcyBhcHBsaWVkIHZpYSBzZXBhcmF0ZSBkZWNsYXJhdGlvbnMuICAqLyANCj4gK3Zv aWQgc2VwYXJhdGVfZGVjbCAodm9pZCk7DQo+ICtfX2F0dHJpYnV0ZV9fKChub19zYW5pdGl6ZV9h ZGRyZXNzKSkgdm9pZCBzZXBhcmF0ZV9kZWNsICh2b2lkKTsNCj4gK19fdHlwZW9mKHNlcGFyYXRl X2RlY2wpIHNlcGFyYXRlX2RlY2xfY29weSANCj4gK19fYXR0cmlidXRlX18oKF9fY29weV9fKHNl cGFyYXRlX2RlY2wpKSk7DQo+ICsNCj4gKy8qIFRlc3QgY29tYmluaW5nIGNvcHkgYXR0cmlidXRl IHdpdGggYWRkaXRpb25hbCBub19zYW5pdGl6ZSBhdHRyaWJ1dGVzLg0KPiArICAgVGhlIGNvcGll ZCBmdW5jdGlvbiBzaG91bGQgaGF2ZSBib3RoIHRoZSBvcmlnaW5hbCBub19zYW5pdGl6ZV9hZGRy ZXNzDQo+ICsgICBhbmQgdGhlIG5ldyBub19zYW5pdGl6ZSBmbGFncy4gICovDQo+ICtfX2F0dHJp YnV0ZV9fKChub19zYW5pdGl6ZV9hZGRyZXNzKSkNCj4gK2ludCBjb21iaW5lZF9vcmlnaW5hbCAo aW50ICpwLCBpbnQgKnEpIHsNCj4gKyAgKnAgPSA0MjsNCj4gKyAgcmV0dXJuICpxOw0KPiArfQ0K PiArDQo+ICsvKiBDb3B5IHRoZSBub19zYW5pdGl6ZV9hZGRyZXNzIGF0dHJpYnV0ZSBhbmQgYWRk IG5vX3Nhbml0aXplIGZvciANCj4gK2FsaWdubWVudC4gICovDQo+ICtfX3R5cGVvZihjb21iaW5l ZF9vcmlnaW5hbCkgY29tYmluZWRfY29weTEgDQo+ICtfX2F0dHJpYnV0ZV9fKChfX2NvcHlfXyhj b21iaW5lZF9vcmlnaW5hbCksIA0KPiArbm9fc2FuaXRpemUoImFsaWdubWVudCIpKSk7DQo+ICsN Cj4gKy8qIFRlc3Qgd2l0aCBtdWx0aXBsZSBub19zYW5pdGl6ZSBhdHRyaWJ1dGVzIG9uIG9yaWdp bmFsLiAgKi8gDQo+ICtfX2F0dHJpYnV0ZV9fKChub19zYW5pdGl6ZSgiYWRkcmVzcyIsICJ1bmRl ZmluZWQiKSkpIGludCANCj4gK2NvbWJpbmVkX29yaWdpbmFsMiAoaW50ICpwLCBpbnQgKnEpIHsN Cj4gKyAgKnAgPSA0NDsNCj4gKyAgcmV0dXJuICpxOw0KPiArfQ0KPiArDQo+ICsvKiBDb3B5IGV4 aXN0aW5nIHNhbml0aXplciBhdHRyaWJ1dGVzIGFuZCBhZGQgbW9yZS4gICovDQo+ICtfX3R5cGVv Zihjb21iaW5lZF9vcmlnaW5hbDIpIGNvbWJpbmVkX2NvcHkyIA0KPiArX19hdHRyaWJ1dGVfXygo X19jb3B5X18oY29tYmluZWRfb3JpZ2luYWwyKSwgDQo+ICtub19zYW5pdGl6ZSgiYWxpZ25tZW50 IikpKTsNCj4gKw0KPiArLyogVGVzdCB3aXRoIG5vX3Nhbml0aXplX3VuZGVmaW5lZCBvbiBvcmln aW5hbC4gICovDQo+ICtfX2F0dHJpYnV0ZV9fKChub19zYW5pdGl6ZV91bmRlZmluZWQpKQ0KPiAr aW50IGNvbWJpbmVkX29yaWdpbmFsMyAoaW50ICpwLCBpbnQgKnEpIHsNCj4gKyAgKnAgPSA0NjsN Cj4gKyAgcmV0dXJuICpxOw0KPiArfQ0KPiArDQo+ICsvKiBDb3B5IGFuZCBhZGQgbm9fc2FuaXRp emVfYWRkcmVzcyAtIGNvbWJpbmluZyBkaWZmZXJlbnQgc2FuaXRpemVyIA0KPiArYXR0cmlidXRl cy4gICovDQo+ICtfX3R5cGVvZihjb21iaW5lZF9vcmlnaW5hbDMpIGNvbWJpbmVkX2NvcHkzIA0K PiArX19hdHRyaWJ1dGVfXygoX19jb3B5X18oY29tYmluZWRfb3JpZ2luYWwzKSwgbm9fc2FuaXRp emVfYWRkcmVzcykpOw0KPiBkaWZmIC0tZ2l0IGEvZ2NjL2MtZmFtaWx5L2MtYXR0cmlicy5jYyBi L2djYy9jLWZhbWlseS9jLWF0dHJpYnMuY2MgDQo+IGluZGV4IDFlM2E5NGVkOTQ5My4uZTYyOTYw MTU3OWVmIDEwMDY0NA0KPiAtLS0gYS9nY2MvYy1mYW1pbHkvYy1hdHRyaWJzLmNjDQo+ICsrKyBi L2djYy9jLWZhbWlseS9jLWF0dHJpYnMuY2MNCj4gQEAgLTE0MjUsMjAgKzE0MjUsMjcgQEAgYWRk X25vX3Nhbml0aXplX3ZhbHVlICh0cmVlIG5vZGUsIHNhbml0aXplX2NvZGVfdHlwZSBmbGFncykN Cj4gICAgdHJlZSBhdHRyID0gbG9va3VwX2F0dHJpYnV0ZSAoIm5vX3Nhbml0aXplIiwgREVDTF9B VFRSSUJVVEVTIChub2RlKSk7DQo+ICAgIGlmIChhdHRyKQ0KPiAgICAgIHsNCj4gLSAgICAgIHNh bml0aXplX2NvZGVfdHlwZSBvbGRfdmFsdWUgPQ0KPiAtICAgICAgIHRyZWVfdG9fc2FuaXRpemVf Y29kZV90eXBlIChUUkVFX1ZBTFVFIChhdHRyKSk7DQo+ICsgICAgICAvKiBFeHRyYWN0IHRoZSBJ TlRFR0VSX0NTVCBmcm9tIHRoZSBUUkVFX0xJU1Qgd3JhcHBlci4gICovDQo+ICsgICAgICB0cmVl IGF0dHJfYXJncyA9IFRSRUVfVkFMVUUgKGF0dHIpOw0KPiArICAgICAgZ2NjX2Fzc2VydCAoYXR0 cl9hcmdzICYmIFRSRUVfQ09ERSAoYXR0cl9hcmdzKSA9PSBUUkVFX0xJU1QpOw0KPiArICAgICAg c2FuaXRpemVfY29kZV90eXBlIG9sZF92YWx1ZSA9IHRyZWVfdG9fc2FuaXRpemVfY29kZV90eXBl IA0KPiArIChUUkVFX1ZBTFVFIChhdHRyX2FyZ3MpKTsNCj4gKw0KPiAgICAgICAgZmxhZ3MgfD0g b2xkX3ZhbHVlOw0KPg0KPiAgICAgICAgaWYgKGZsYWdzID09IG9sZF92YWx1ZSkNCj4gICAgICAg ICByZXR1cm47DQo+DQo+IC0gICAgICBUUkVFX1ZBTFVFIChhdHRyKSA9IGJ1aWxkX2ludF9jc3Qg KHVpbnQ2NF90eXBlX25vZGUsIGZsYWdzKTsNCj4gKyAgICAgIHRyZWUgbmV3X3ZhbHVlID0gYnVp bGRfdHJlZV9saXN0IChOVUxMX1RSRUUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBidWlsZF9pbnRfY3N0ICh1aW50NjRfdHlwZV9ub2RlLCBmbGFncykpOw0KPiAr ICAgICAgVFJFRV9WQUxVRSAoYXR0cikgPSBuZXdfdmFsdWU7DQo+ICAgICAgfQ0KPiAgICBlbHNl DQo+IC0gICAgREVDTF9BVFRSSUJVVEVTIChub2RlKQ0KPiAtICAgICAgPSB0cmVlX2NvbnMgKGdl dF9pZGVudGlmaWVyICgibm9fc2FuaXRpemUiKSwNCj4gLSAgICAgICAgICAgICAgICAgIGJ1aWxk X2ludF9jc3QgKHVpbnQ2NF90eXBlX25vZGUsIGZsYWdzKSwNCj4gLSAgICAgICAgICAgICAgICAg IERFQ0xfQVRUUklCVVRFUyAobm9kZSkpOw0KPiArICAgIHsNCj4gKyAgICAgIHRyZWUgYXR0cl92 YWx1ZSA9IGJ1aWxkX3RyZWVfbGlzdCAoTlVMTF9UUkVFLA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkX2ludF9jc3QgKHVpbnQ2NF90eXBlX25vZGUsIGZs YWdzKSk7DQo+ICsgICAgICBERUNMX0FUVFJJQlVURVMgKG5vZGUpID0gdHJlZV9jb25zIChnZXRf aWRlbnRpZmllciAoIm5vX3Nhbml0aXplIiksIGF0dHJfdmFsdWUsDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFQ0xfQVRUUklCVVRFUyAobm9kZSkpOw0KPiAr ICAgIH0NCj4gIH0NCj4NCj4gIC8qIEhhbmRsZSBhICJub19zYW5pdGl6ZSIgYXR0cmlidXRlOyBh cmd1bWVudHMgYXMgaW4gQEAgLTE0NTYsMTcgDQo+ICsxNDYzLDI5IEBAIGhhbmRsZV9ub19zYW5p dGl6ZV9hdHRyaWJ1dGUgKHRyZWUgKm5vZGUsIHRyZWUgbmFtZSwgdHJlZSBhcmdzLCBpbnQsDQo+ ICAgICAgICByZXR1cm4gTlVMTF9UUkVFOw0KPiAgICAgIH0NCj4NCj4gLSAgZm9yICg7IGFyZ3M7 IGFyZ3MgPSBUUkVFX0NIQUlOIChhcmdzKSkNCj4gKyAgLyogSGFuZGxlIGJvdGggb3JpZ2luYWwg c3RyaW5nIGFyZ3VtZW50cyBhbmQgY29waWVkIGF0dHJpYnV0ZXMgdGhhdA0KPiArICAgICBoYXZl IGFscmVhZHkgYmVlbiBwcm9jZXNzZWQgaW50byBJTlRFR0VSX0NTVCB3cmFwcGVkIGluIA0KPiAr IFRSRUVfTElTVC4gICovICBpZiAoYXJncyAmJiBUUkVFX0NPREUgKGFyZ3MpID09IFRSRUVfTElT VA0KPiArICAgICAgJiYgVFJFRV9WQUxVRSAoYXJncykgJiYgVFJFRV9DT0RFIChUUkVFX1ZBTFVF IChhcmdzKSkgPT0gDQo+ICsgSU5URUdFUl9DU1QpDQo+ICAgICAgew0KPiAtICAgICAgdHJlZSBp ZCA9IFRSRUVfVkFMVUUgKGFyZ3MpOw0KPiAtICAgICAgaWYgKFRSRUVfQ09ERSAoaWQpICE9IFNU UklOR19DU1QpDQo+ICsgICAgICAvKiBUaGlzIGlzIGEgY29waWVkIGF0dHJpYnV0ZSB3aXRoIHRo ZSBmbGFncyBhbHJlYWR5IHByb2Nlc3NlZC4gICovDQo+ICsgICAgICBmbGFncyA9IHRyZWVfdG9f c2FuaXRpemVfY29kZV90eXBlIChUUkVFX1ZBTFVFIChhcmdzKSk7DQo+ICsgICAgfQ0KPiArICBl bHNlDQo+ICsgICAgew0KPiArICAgICAgLyogUHJvY2VzcyBvcmlnaW5hbCBzdHJpbmcgYXJndW1l bnRzLiAgKi8NCj4gKyAgICAgIGZvciAoOyBhcmdzOyBhcmdzID0gVFJFRV9DSEFJTiAoYXJncykp DQo+ICAgICAgICAgew0KPiAtICAgICAgICAgZXJyb3IgKCIlcUUgYXJndW1lbnQgbm90IGEgc3Ry aW5nIiwgbmFtZSk7DQo+IC0gICAgICAgICByZXR1cm4gTlVMTF9UUkVFOw0KPiAtICAgICAgIH0N Cj4gKyAgICAgICAgIHRyZWUgaWQgPSBUUkVFX1ZBTFVFIChhcmdzKTsNCj4gKyAgICAgICAgIGlm IChUUkVFX0NPREUgKGlkKSAhPSBTVFJJTkdfQ1NUKQ0KPiArICAgICAgICAgICB7DQo+ICsgICAg ICAgICAgICAgZXJyb3IgKCIlcUUgYXJndW1lbnQgbm90IGEgc3RyaW5nIiwgbmFtZSk7DQo+ICsg ICAgICAgICAgICAgcmV0dXJuIE5VTExfVFJFRTsNCj4gKyAgICAgICAgICAgfQ0KPg0KPiAtICAg ICAgY2hhciAqc3RyaW5nID0gQVNUUkRVUCAoVFJFRV9TVFJJTkdfUE9JTlRFUiAoaWQpKTsNCj4g LSAgICAgIGZsYWdzIHw9IHBhcnNlX25vX3Nhbml0aXplX2F0dHJpYnV0ZSAoc3RyaW5nKTsNCj4g KyAgICAgICAgIGNoYXIgKnN0cmluZyA9IEFTVFJEVVAgKFRSRUVfU1RSSU5HX1BPSU5URVIgKGlk KSk7DQo+ICsgICAgICAgICBmbGFncyB8PSBwYXJzZV9ub19zYW5pdGl6ZV9hdHRyaWJ1dGUgKHN0 cmluZyk7DQo+ICsgICAgICAgfQ0KPiAgICAgIH0NCj4NCj4gICAgYWRkX25vX3Nhbml0aXplX3Zh bHVlICgqbm9kZSwgZmxhZ3MpOyBkaWZmIC0tZ2l0IA0KPiBhL2djYy9kL2QtYXR0cmlicy5jYyBi L2djYy9kL2QtYXR0cmlicy5jYyBpbmRleCANCj4gNTNhZWE1ZTJlOTA0Li4zNDI3MDJiMDVhY2Ig MTAwNjQ0DQo+IC0tLSBhL2djYy9kL2QtYXR0cmlicy5jYw0KPiArKysgYi9nY2MvZC9kLWF0dHJp YnMuY2MNCj4gQEAgLTE0MjQsMTcgKzE0MjQsMjYgQEAgZF9oYW5kbGVfbm9fc2FuaXRpemVfYXR0 cmlidXRlICh0cmVlICpub2RlLCB0cmVlIG5hbWUsIHRyZWUgYXJncywgaW50LA0KPiAgICAgICBt ZXJnZSBleGlzdGluZyBmbGFncyBpZiBub19zYW5pdGl6ZSB3YXMgcHJldmlvdXNseSBoYW5kbGVk LiAgKi8NCj4gICAgaWYgKHRyZWUgYXR0ciA9IGxvb2t1cF9hdHRyaWJ1dGUgKCJub19zYW5pdGl6 ZSIsIERFQ0xfQVRUUklCVVRFUyAoKm5vZGUpKSkNCj4gICAgICB7DQo+IC0gICAgICBzYW5pdGl6 ZV9jb2RlX3R5cGUgb2xkX3ZhbHVlID0NCj4gLSAgICAgICB0cmVlX3RvX3Nhbml0aXplX2NvZGVf dHlwZSAoVFJFRV9WQUxVRSAoYXR0cikpOw0KPiArICAgICAgLyogRXh0cmFjdCB0aGUgSU5URUdF Ul9DU1QgZnJvbSB0aGUgVFJFRV9MSVNUIHdyYXBwZXIuICAqLw0KPiArICAgICAgdHJlZSBhdHRy X2FyZ3MgPSBUUkVFX1ZBTFVFIChhdHRyKTsNCj4gKyAgICAgIGdjY19hc3NlcnQgKGF0dHJfYXJn cyAmJiBUUkVFX0NPREUgKGF0dHJfYXJncykgPT0gVFJFRV9MSVNUKTsNCj4gKyAgICAgIHNhbml0 aXplX2NvZGVfdHlwZSBvbGRfdmFsdWUgPSB0cmVlX3RvX3Nhbml0aXplX2NvZGVfdHlwZSANCj4g KyAoVFJFRV9WQUxVRSAoYXR0cl9hcmdzKSk7DQo+ICsNCj4gICAgICAgIGZsYWdzIHw9IG9sZF92 YWx1ZTsNCj4NCj4gICAgICAgIGlmIChmbGFncyAhPSBvbGRfdmFsdWUpDQo+IC0gICAgICAgVFJF RV9WQUxVRSAoYXR0cikgPSBidWlsZF9pbnRfY3N0IChkX3Vsb25nX3R5cGUsIGZsYWdzKTsNCj4g KyAgICAgICB7DQo+ICsgICAgICAgICB0cmVlIG5ld192YWx1ZSA9IGJ1aWxkX3RyZWVfbGlzdCAo TlVMTF9UUkVFLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBidWlsZF9pbnRfY3N0IChkX3Vsb25nX3R5cGUsIGZsYWdzKSk7DQo+ICsgICAgICAgICBUUkVF X1ZBTFVFIChhdHRyKSA9IG5ld192YWx1ZTsNCj4gKyAgICAgICB9DQo+ICAgICAgfQ0KPiAgICBl bHNlDQo+ICAgICAgew0KPiArICAgICAgdHJlZSBhdHRyX3ZhbHVlID0gYnVpbGRfdHJlZV9saXN0 IChOVUxMX1RSRUUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGJ1aWxkX2ludF9jc3QgKGRfdWxvbmdfdHlwZSwgDQo+ICsgZmxhZ3MpKTsNCj4gICAgICAgIERF Q0xfQVRUUklCVVRFUyAoKm5vZGUpID0gdHJlZV9jb25zIChnZXRfaWRlbnRpZmllciAoIm5vX3Nh bml0aXplIiksDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi dWlsZF9pbnRfY3N0IChkX3Vsb25nX3R5cGUsIGZsYWdzKSwNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJfdmFsdWUsDQo+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBERUNMX0FUVFJJQlVURVMgKCpub2RlKSk7DQo+ICAg ICAgfQ0KPg0KPiAtLQ0KPiAyLjM0LjENCj4NCg==