From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.9]) by sourceware.org (Postfix) with ESMTPS id D9FFE3858C2B for ; Tue, 5 Dec 2023 13:31:25 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D9FFE3858C2B Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org D9FFE3858C2B Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=192.198.163.9 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1701783089; cv=pass; b=PNkGyd8Y85H+Jc3UZWfMDJcIi0A8T01Wnbh52Ablw2FlMl+bXjreNchIGV8kpVvHgsjeFCU2qMu3r1IfkkkWZRLh0kx7GRQeAd5g1MJwGf2diA7y58fr74YAwfXTNxMPiL8gSTnbehvWK2v8jFX3oy/zZN0uyPTFjXM4BQD8I9E= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1701783089; c=relaxed/simple; bh=C7gEjetTPNi4l/yGUM4MlQds0isvvUYK7+SkJYq2dgY=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=lSmdJ+35ANGA8nElVCmNDb8quRV9hHNK4UO0xW/m6/F7v46kyaMu0+oDnEMjuBrPXnCQ/zGqx5gWGDb5ZMjm0q44kwReRxqmIHMr82xp42Iyf3jFU3vctLWmXVFkMsYhqQwH01a4fxNLBv4NJ2eN0QDbawIoCdsSOPDywx7AdYc= ARC-Authentication-Results: i=2; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1701783086; x=1733319086; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=C7gEjetTPNi4l/yGUM4MlQds0isvvUYK7+SkJYq2dgY=; b=IuTBdkT8gxdDlwoaMF4DUpDc1aHAJhbNgoCO5jutVlGNKvQs6SLhhJuV B6GEdMgOQm+2PAhQu4DcRL1m4ZvNUltzGYNjZd4xF+zO+NZqyz7CmBJne Yem/Vty1rZJABOUVhKRB5LxsALJcxEnPzuTF9EvjkDaZGRIX3O2psb27+ 4fICEqpzrgkI8L77pCaY4xlrFp2sVNn6lUVfV1K2uxDMHTxb+Fng5SaMK B5ac7fHjI9B2zl3dVsalBKn4kVCVy5rBv3Q0V8L97gWkJrbrhIUrfHPxC br3paf8sofsKP3YKx/ScarGCQo1PdVvcot1z2Uw4kvqViioPsJAVvb3Ij g==; X-IronPort-AV: E=McAfee;i="6600,9927,10914"; a="787175" X-IronPort-AV: E=Sophos;i="6.04,252,1695711600"; d="scan'208";a="787175" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmvoesa103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Dec 2023 05:31:25 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10914"; a="836968943" X-IronPort-AV: E=Sophos;i="6.04,252,1695711600"; d="scan'208";a="836968943" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by fmsmga008.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 05 Dec 2023 05:31:24 -0800 Received: from fmsmsx601.amr.corp.intel.com (10.18.126.81) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Tue, 5 Dec 2023 05:31:24 -0800 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend Transport; Tue, 5 Dec 2023 05:31:24 -0800 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.168) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.34; Tue, 5 Dec 2023 05:31:24 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HXMBEBp9rUWb0yTqmF7dc/Sf59KE83Wr0GRJ44u31fAJVz20GfYZgFswYUaUUa04KKTTD/SiEVgEZCnOxL4VjLfvBCrT7hSFKNnZ8qad8sellB7cJQvXdWecpIr6XCTbLELigkUp42YuyAnmHS4PZoZCo5wcb+Q06n6jiGgacrQ/lyCEKMJ1OhLMm58RJ9CI/8Fw+zh++//BVDEftfxdJ+2SQeb3CqP+L9jkEJI1cM1Fp+SK0ezDnBRX+F+DXuOnGwdLi0T4W90us5lb8xz+HOQ/FYO1J+ntCpNpPVWsMNJgEGrjGkmlbFIqRoIeLtCD1YcOg/Ly8hRvSUtYeqQmHA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=C7gEjetTPNi4l/yGUM4MlQds0isvvUYK7+SkJYq2dgY=; b=k8sFmAx5gQHgZm2jQZMNYdbsP+winPvAWI0z4LiaTeKFWA5MZGo7mHo9YCNwuutwBR8OkxR5sIm2ijdMAIwEkYsPdzMstP5nBb0iuFwnR0K2huBVzVQFK5ELRn8zZP+5M1K3CWwOGehayep6tqAXSVF/5d8Ku3/cHbI6sWhx2HM2Yw9uf4Q+7sottQoFlITj8ga4FzrvIJkx4ZO0AbFEkQKjGVrw0OIFNPh219p8lwOa8MOPoypa+3Nhx9CVqQJ9vPYstaAqMnyCm+q8+2OI4Pu+GxGATNl+Q29UrxYnuMWxs6BLoRtXPA/reMgq4wqRysXg24FDXHAcSYiHMRrWYg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from SJ0PR11MB5600.namprd11.prod.outlook.com (2603:10b6:a03:3ab::16) by SJ0PR11MB5647.namprd11.prod.outlook.com (2603:10b6:a03:3af::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7046.34; Tue, 5 Dec 2023 13:31:21 +0000 Received: from SJ0PR11MB5600.namprd11.prod.outlook.com ([fe80::f925:7c4b:8747:4549]) by SJ0PR11MB5600.namprd11.prod.outlook.com ([fe80::f925:7c4b:8747:4549%3]) with mapi id 15.20.7046.034; Tue, 5 Dec 2023 13:31:21 +0000 From: "Cui, Lili" To: "Beulich, Jan" CC: "Lu, Hongjiu" , "binutils@sourceware.org" Subject: RE: [PATCH v3 2/9] Support APX GPR32 with rex2 prefix Thread-Topic: [PATCH v3 2/9] Support APX GPR32 with rex2 prefix Thread-Index: AQHaHqRUF5ALSrWeqk28dFlpHKRXyrCZYRWAgACUl5A= Date: Tue, 5 Dec 2023 13:31:21 +0000 Message-ID: References: <20231124070213.3886483-1-lili.cui@intel.com> <20231124070213.3886483-2-lili.cui@intel.com> <14e62b44-2c5b-4a3b-a66a-cffa8f33578c@suse.com> In-Reply-To: <14e62b44-2c5b-4a3b-a66a-cffa8f33578c@suse.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SJ0PR11MB5600:EE_|SJ0PR11MB5647:EE_ x-ms-office365-filtering-correlation-id: cde8ee9b-41b6-4321-c287-08dbf596781d x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: SeU0zIV2myJ7LIrWWTJh35NMXgbckPeGoZr5h18VvRzRp+N6YAGDaUXLdD1G/9VqtSXfwx5IqhbRGgvBxem6Z+qI4iGmt8FOZpXJSeA8hmO/AUg13roflh0f0OznALCq06ixriArSe5N71NroPEUbSuBizoaRV7n9xjem5IgTs6i8A4TmppSN5orl2Bh5x3NQ6iSykmfzQB1TW75xRStY22DZGxBjkInN0F7FHz1oAfy0KiPD3/8l1SZ3hCNzQbQL8FnxUOG8YMgFhk+WyeZ7r02vi2SyCHiwCztuVIirDdYpovtDpbYvgOcqKhbvD8uSj067n8aOasAFuoG22htYYWWza6qILbt/5Ed49O2APDFSEzfHCqqKOVAWGbfeePI8twuXlFJ6vv1s8N7VNgYcKjf4L3w/0stchjpSxlibbQUti6SddFRlSeLM2SOMHwSOXDDqslEZhJDsFt7V7n/4DSF0TZKooWHwmLj4uYmKBZ9A9Jdq3fJL6wy4n2xpxUh4U8pSpoZpzLQTvHxCEsnUoQfguU9d7apmwjpLiChMuQd7u1l2ZgmmP9SeD7qIV6sIHRtK3DWg4BTBHOHLWeVmj/odHo80SDGv7j+rYP9Eb05MZc2nMfSzHmwCa+iOFNO x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR11MB5600.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(39860400002)(136003)(376002)(366004)(396003)(346002)(230922051799003)(451199024)(186009)(64100799003)(1800799012)(53546011)(52536014)(41300700001)(9686003)(86362001)(83380400001)(38070700009)(316002)(76116006)(6916009)(66556008)(54906003)(64756008)(66446008)(66476007)(66946007)(8676002)(4326008)(71200400001)(8936002)(7696005)(6506007)(478600001)(82960400001)(38100700002)(33656002)(122000001)(2906002)(30864003)(55016003)(5660300002)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?K3ZNbkFRcXIwbTBWQ0lqTGE2ZjdOSlBkTFJ3NExKTC9FUkZVYXoyQmQwWTJI?= =?utf-8?B?RXkwbFlvQTIrUDB3eDU1dXRjSlFNbkZuUVRIMGRiWlI1bTcwelN4NUtrQnVh?= =?utf-8?B?SG5YSlZSMEVlY0hGQTcyODBXWUU1Y0lkRDZHaDRtTVhLY2Z5a3ZjeU9ZUkVI?= =?utf-8?B?cUNuL1prNk5QMElOT1UvcVNtZEljSHcwUE5nMC8zVEZtTjBaVU5NL05VMFp0?= =?utf-8?B?SDB4RXhyQWhsdm9rMFlVbXZYai80N0Nsd1l2RytCN1UybTFGY20zK1JXaTVi?= =?utf-8?B?bXl4MWNyUnFObVZyaDg0U2VhSW5neTkzQWZtaGpXcmlSZW9zYlUxRUNzNGZ2?= =?utf-8?B?akhhYkVwZnN5Tm04ZUh3dyt2ZHhUaGhody9GcThzYlVVWFpiV0lqSWtTY2Va?= =?utf-8?B?SkZDd3BVSWZiSklmc0Erc2F1azVVRzF3cDBZblh6bGNFUVNBMTd4NVdPZmRH?= =?utf-8?B?aXZHN09mRVlaT2VCbThtRXQ0Ry83NEZKVE5CTjh5NFAxN2JRM0xZdkM0dEVl?= =?utf-8?B?bmkyT3E0VytLQTZJNmRwK3VJcDZHcWpBV0JZd3p3ZmZVV2ZhM3NEd0kyT20v?= =?utf-8?B?dmdsUnNhR01iVVJuLy9GOUF0dFFKSU5qVkU2VWNxMlM3N0pMeElQMW9oYXBa?= =?utf-8?B?YTduU0pOTms5NWo1Z0FWVWI4Ym4vanF1cjBMVDhmTG9adjBGRmg1Z3lKRUJT?= =?utf-8?B?M1IwdWljTEVGbU9CbURyR2ZpWGJqdkZsU1pSZW1IMXZnWDdnK2EyYUVIRFFG?= =?utf-8?B?RWhLMzZEL0d6N1hBREU1SG5lY1Q0RVMrTkhZOEl3dnV3MjRERTBIV1BlWUxC?= =?utf-8?B?K1hBS0Vkbm04QnJMNHlnaDZhdXI0R3JEakdkc2xtRFFFL0VKTmEwcUNnRzVC?= =?utf-8?B?MEVoTnVmNHdxeXQ1OHAzcW9oRXZXb2lGMUZXZW5mSG5MS3RzV21saWRUd1ZM?= =?utf-8?B?ZGJkanhsMlZ5SzNFdHc1ODVlbWhHaytNVUQ2MnlvWFpmbi9kcUZ5YXNqVHVJ?= =?utf-8?B?L2hueTNYUnkwQ1MxVE9SYThuNWdBZDNVaEsrRE1lUUtpS09mOTRJWTEySlRl?= =?utf-8?B?OVZuSmNqaWZrNnBwZ0lVK241TVFiL0R0bVgwZVF5TU5OdVZNT3dkKzk2TFJP?= =?utf-8?B?ZnVvM2NLbnE5VjhWY3huV2ExZEwxdFp1ZWZqVFk5UjVqZEVWazE0ZXRHZDJ1?= =?utf-8?B?eXFJWWgvUnpFZ2c4Mk83OHpuWnVzYlYzUGFHR3FlZUc3SDZTVzNla1dOd0lv?= =?utf-8?B?czFmZHNHZVNlRlVuUUhMSnRrVThrNXorUW1KbHJ3OGJtNlpaUHNjbk9xWGoy?= =?utf-8?B?UmhCRys0aDVpWkp5NmdkbUZoVDlHekJwYXhhZEl6RUtZV3cvOWZ4Zm1zb0F1?= =?utf-8?B?dnB5R21yaW9OSkNJQmtqNW5USUxpZ0cxZUUrd0N5Qlo2WklmZWRIUWx2N1VF?= =?utf-8?B?RzcvL0ZlZjZpSkhkQnhkRmFZZks0WWV5bDJSOTQ4SStpYjFrY1o3c2F5S0Jh?= =?utf-8?B?d0d5ZzJDUnIyQTYvQjREdXlZdmhYSVh2QUVwV3NWbHlrNm0rbVZqVmQ2Tnp0?= =?utf-8?B?ZkxBYjNhRGJIb3J6QmZhNVdWNEd2ay8xTmh5a2dXQ0txTU5EQVFpK0ViZThZ?= =?utf-8?B?T3BHVWpNZ0FGTjdoRUhHTGwvZW0rNjArOVhMTnZJd2Exc2hEMkVMWlovbmZY?= =?utf-8?B?WFBwNmNDS2lDYnFRS04rM09QaVlWc0FkY2tpMGFjOFpLSCswNjd3Z3dNd0Nk?= =?utf-8?B?TGJsdHNRWmViOTdnNzFtSU8rNm5HTjBhaVl1OFFISzY0cVNTdUR5VUFDaisr?= =?utf-8?B?aktBbm5ENjVhMHRTTC8rQlloUjZkak1OMEUvK0hLWDFLcm5GR2ErRUZ0T0FI?= =?utf-8?B?MHYwMEVXMFQ2WStTR0h4a0g1QzhVY3ZuUG5VUDVJTkNlTHlmZjFLTHorekU5?= =?utf-8?B?M2pMSHNkZmZXMUJ4QmZ0VHNFdUc2L0dLUmVVSnQzbmhRWldyMVhCUnJndUtt?= =?utf-8?B?bnptSnpUbXBYZkh2RkJNYmdaZFh4K3ZCUnAvZlVHaE5yRlN0TjJ2ZkhlYzJD?= =?utf-8?B?RVJIbjJwMVNwRnBaSEY0Mk83ODNGSmkrVEdqcmZZNHVaUGZ3WVluZmp3WFlZ?= =?utf-8?B?NkRWN1FpMG1OWm1SQXYvTVduKzkrb1hUZ3lERTdsTXVqbTlycjlxUldNTFl6?= =?utf-8?Q?yj4uDhoGCixs8EPN4N73yCg=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SJ0PR11MB5600.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: cde8ee9b-41b6-4321-c287-08dbf596781d X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Dec 2023 13:31:21.2102 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: BfJIYzBF1xurOwzjvKOS5goP0TxJ0LcQE/AOvzzKfQfAtPa4fccMW6ophy9G6hzfxLkAqk5Q0V4DkSa9nB903w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR11MB5647 X-OriginatorOrg: intel.com X-Spam-Status: No, score=-4.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: PiBPbiAyNC4xMS4yMDIzIDA4OjAyLCBDdWksIExpbGkgd3JvdGU6DQo+ID4gQEAgLTM4NjUsNiAr Mzg3MywxMiBAQCBpc19hbnlfdmV4X2VuY29kaW5nIChjb25zdCBpbnNuX3RlbXBsYXRlICp0KQ0K PiA+ICAgIHJldHVybiB0LT5vcGNvZGVfbW9kaWZpZXIudmV4IHx8IHQtPm9wY29kZV9tb2RpZmll ci5ldmV4OyAgfQ0KPiA+DQo+ID4gK3N0YXRpYyBJTkxJTkUgYm9vbA0KPiA+ICtpc19hcHhfcmV4 Ml9lbmNvZGluZyAodm9pZCkNCj4gPiArew0KPiA+ICsgIHJldHVybiBpLnJleDIgfHwgaS5yZXgy X2VuY29kaW5nOw0KPiA+ICt9DQo+IA0KPiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQganVzdCBvbmNl LiBEbyB3ZSByZWFsbHkgbmVlZCBpdD8gT3IgZWxzZSB3aHkgZG9uJ3QgeW91DQo+IHVzZSBpdCBu ZWFyIHRoZSBlbmQgb2YgbWRfYXNzZW1ibGUoKT8NCj4gDQoNClllcywgSSBhbHNvIGZvdW5kIHRo aXMgaXNzdWUgYW5kIHVzZWQgdGhpcyBmdW5jdGlvbiBpbnN0ZWFkIG9mICIgKGkucmV4MiAhPSAw IHx8IGkucmV4Ml9lbmNvZGluZykiIGF0IHRoZSBlbmQgb2YgbWRfYXNzZW1ibGUoKS4NCg0KPiA+ IEBAIC00MTIwLDYgKzQxMzQsMjEgQEAgYnVpbGRfZXZleF9wcmVmaXggKHZvaWQpDQo+ID4gICAg ICBpLnZleC5ieXRlc1szXSB8PSBpLm1hc2sucmVnLT5yZWdfbnVtOyAgfQ0KPiA+DQo+ID4gKy8q IEJ1aWxkICgyIGJ5dGVzKSByZXgyIHByZWZpeC4NCj4gPiArICAgfCBENWggfA0KPiA+ICsgICB8 IG0gfCBSNCBYNCBCNCB8IFcgUiBYIEIgfA0KPiA+ICsqLw0KPiA+ICtzdGF0aWMgdm9pZA0KPiA+ ICtidWlsZF9yZXgyX3ByZWZpeCAodm9pZCkNCj4gPiArew0KPiA+ICsgIC8qIFJleDIgcmV1c2Vz IGkudmV4IGJlY2F1c2UgdGhleSBoYW5kbGUgaS50bS5vcGNvZGVfc3BhY2UgdGhlDQo+ID4gK3Nh bWUuICAqLw0KPiANCj4gSG93IGRvIHRoZXkgaGFuZGxlIGl0IHRoZSBzYW1lPyAoQWxzbyBJIGRv bid0IHRoaW5rIHRoaXMgaXMgdXNlZnVsIGFzIGEgY29kZQ0KPiBjb21tZW50OyBpdCBpbnN0ZWFk IGJlbG9uZ3MgaW4gdGhlIGRlc2NyaXB0aW9uIGltby4pDQo+IA0KDQpNb3ZlZCB0aGUgY29tbWVu dCB0byB0aGUgZnVuY3Rpb25zIGRlc2NyaXB0aW9uLg0KDQovKiBCdWlsZCAoMiBieXRlcykgcmV4 MiBwcmVmaXguDQogICB8IEQ1aCB8DQogICB8IG0gfCBSNCBYNCBCNCB8IFcgUiBYIEIgfA0KDQog ICBSZXgyIHJldXNlcyBpLnZleCBhcyB0aGV5IGhhbmRsZSBpLnRtLm9wY29kZV9zcGFjZSB0aGUg c2FtZSB3YXkuICAqLw0Kc3RhdGljIHZvaWQNCmJ1aWxkX3JleDJfcHJlZml4ICh2b2lkKQ0KDQoN CkluIGZ1bmN0aW9uICJvdXRwdXRfaW5zbiIsICBzb21lIGhhbmRsZSBsaWtlIHRoaXMuDQoNCiAg ICAgIGlmICghaS52ZXgubGVuZ3RoKQ0KICAgICAgICBzd2l0Y2ggKGkudG0ub3Bjb2RlX3NwYWNl KQ0KICAgICAgICAgIHsNCiAgICAgICAgICBjYXNlIFNQQUNFX0JBU0U6DQogICAgICAgICAgICBi cmVhazsNCiAgICAgICAgICBjYXNlIFNQQUNFXzBGOg0KICAgICAgICAgICAgKytqOw0KICAgICAg ICAgICAgYnJlYWs7DQogICAgICAgICAgY2FzZSBTUEFDRV8wRjM4Og0KICAgICAgICAgIGNhc2Ug U1BBQ0VfMEYzQToNCiAgICAgICAgICAgIGogKz0gMjsNCiAgICAgICAgICAgIGJyZWFrOw0KICAg ICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgICBhYm9ydCAoKTsNCiAgICAgICAgICB9DQouLi4u Lg0KICAgICAgICAgaWYgKCFpLnZleC5sZW5ndGgNCiAgICAgICAgICAgICAgJiYgaS50bS5vcGNv ZGVfc3BhY2UgIT0gU1BBQ0VfQkFTRSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgKnAr KyA9IDB4MGY7DQogICAgICAgICAgICAgIGlmIChpLnRtLm9wY29kZV9zcGFjZSAhPSBTUEFDRV8w RikNCiAgICAgICAgICAgICAgICAqcCsrID0gaS50bS5vcGNvZGVfc3BhY2UgPT0gU1BBQ0VfMEYz OA0KICAgICAgICAgICAgICAgICAgICAgICA/IDB4MzggOiAweDNhOw0KICAgICAgICAgICAgfQ0K DQo+ID4gKyAgaS52ZXgubGVuZ3RoID0gMjsNCj4gPiArICBpLnZleC5ieXRlc1swXSA9IDB4ZDU7 DQo+ID4gKyAgLyogRm9yIHRoZSBXIFIgWCBCIGJpdHMsIHRoZSB2YXJpYWJsZXMgb2YgcmV4IHBy ZWZpeCB3aWxsIGJlDQo+ID4gK3JldXNlZC4gICovDQo+ID4gKyAgaS52ZXguYnl0ZXNbMV0gPSAo KGkudG0ub3Bjb2RlX3NwYWNlIDw8IDcpDQo+ID4gKwkJICAgIHwgKGkucmV4MiA8PCA0KSB8IGku cmV4KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiAgc3RhdGljIHZvaWQNCj4gPiAgcHJvY2Vzc19pbW1l eHQgKHZvaWQpDQo+ID4gIHsNCj4gPiBAQCAtNDM4NSwxMiArNDQxNCwxNiBAQCBvcHRpbWl6ZV9l bmNvZGluZyAodm9pZCkNCj4gPiAgCSAgaS5zdWZmaXggPSAwOw0KPiA+ICAJICAvKiBDb252ZXJ0 IHRvIGJ5dGUgcmVnaXN0ZXJzLiAgKi8NCj4gPiAgCSAgaWYgKGkudHlwZXNbMV0uYml0ZmllbGQu d29yZCkNCj4gPiAtCSAgICBqID0gMTY7DQo+ID4gLQkgIGVsc2UgaWYgKGkudHlwZXNbMV0uYml0 ZmllbGQuZHdvcmQpDQo+ID4gKwkgICAgLyogVGhlcmUgYXJlIDQwIDgtYml0IHJlZ2lzdGVycy4g ICovDQo+ID4gIAkgICAgaiA9IDMyOw0KPiA+ICsJICBlbHNlIGlmIChpLnR5cGVzWzFdLmJpdGZp ZWxkLmR3b3JkKQ0KPiA+ICsJICAgIC8qIDMyIDgtYml0IHJlZ2lzdGVycyArIDMyIDE2LWJpdCBy ZWdpc3RlcnMuICAqLw0KPiA+ICsJICAgIGogPSA2NDsNCj4gPiAgCSAgZWxzZQ0KPiA+IC0JICAg IGogPSA0ODsNCj4gPiAtCSAgaWYgKCEoaS5vcFsxXS5yZWdzLT5yZWdfZmxhZ3MgJiBSZWdSZXgp ICYmIGJhc2VfcmVnbnVtIDwgNCkNCj4gPiArCSAgICAvKiAzMiA4LWJpdCByZWdpc3RlcnMgKyAz MiAxNi1iaXQgcmVnaXN0ZXJzDQo+ID4gKwkgICAgICAgKyAzMiAzMi1iaXQgcmVnaXN0ZXJzLiAg Ki8NCj4gPiArCSAgICBqID0gOTY7DQo+ID4gKwkgIGlmICghKGkub3BbMV0ucmVncy0+cmVnX2Zs YWdzICYgKFJlZ1JleCB8IFJlZ1JleDIpKSAmJiBiYXNlX3JlZ251bQ0KPiA+ICs8IDQpDQo+ID4g IAkgICAgaiArPSA4Ow0KPiA+ICAJICBpLm9wWzFdLnJlZ3MgLT0gajsNCj4gPiAgCX0NCj4gDQo+ IEkgZGlkIGNvbW1lbnQgb24sIGluIHBhcnRpY3VsYXIsIHRoZSA4LWJpdCByZWdpc3RlciBjb3Vu dHMgYmVmb3JlLg0KPiBBZmFpY3QgdGhlIGNvbW1lbnRzIGFib3ZlIGFyZSBuZXZlcnRoZWxlc3Mg dW5jaGFuZ2VkIGFuZCBoZW5jZSBzdGlsbCBub3QNCj4gcmVhbGx5IGNvcnJlY3QuDQo+IA0KDQpD aGFuZ2VkIHRvIDoNCg0KICAgICAgaWYgKGZsYWdfY29kZSA9PSBDT0RFXzY0QklUIHx8IGJhc2Vf cmVnbnVtIDwgNCkNCiAgICAgICAgew0KICAgICAgICAgIGkudHlwZXNbMV0uYml0ZmllbGQuYnl0 ZSA9IDE7DQogICAgICAgICAgLyogSWdub3JlIHRoZSBzdWZmaXguICAqLw0KICAgICAgICAgIGku c3VmZml4ID0gMDsNCiAgICAgICAgICAvKiBDb252ZXJ0IHRvIGJ5dGUgcmVnaXN0ZXJzLiA4LWJp dCByZWdpc3RlcnMgYXJlIHNwZWNpYWwsDQogICAgICAgICAgICAgUmVnUmV4NjQgYW5kIG5vbi1S ZWdSZXg2NCBlYWNoIGhhdmUgOCByZWdpc3RlcnMuICAqLw0KICAgICAgICAgIGlmIChpLnR5cGVz WzFdLmJpdGZpZWxkLndvcmQpDQogICAgICAgICAgICAvKiAzMiAob3IgNDApIDgtYml0IHJlZ2lz dGVycy4gICovDQogICAgICAgICAgICBqID0gMzI7DQogICAgICAgICAgZWxzZSBpZiAoaS50eXBl c1sxXS5iaXRmaWVsZC5kd29yZCkNCiAgICAgICAgICAgIC8qIDMyIChvciA0MCk4LWJpdCByZWdp c3RlcnMgKyAzMiAxNi1iaXQgcmVnaXN0ZXJzLiAgKi8NCiAgICAgICAgICAgIGogPSA2NDsNCiAg ICAgICAgICBlbHNlDQogICAgICAgICAgICAvKiAzMiAob3IgNDApIDgtYml0IHJlZ2lzdGVycyAr IDMyIDE2LWJpdCByZWdpc3RlcnMNCiAgICAgICAgICAgICAgICsgMzIgMzItYml0IHJlZ2lzdGVy cy4gICovDQogICAgICAgICAgICBqID0gOTY7DQoNCiAgICAgICAgICBpZiAoIShpLm9wWzFdLnJl Z3MtPnJlZ19mbGFncyAmIChSZWdSZXggfCBSZWdSZXgyKSkgJiYgYmFzZV9yZWdudW0gPCA0KQ0K ICAgICAgICAgICAgaiArPSA4Ow0KICAgICAgICAgIGkub3BbMV0ucmVncyAtPSBqOw0KICAgICAg ICB9DQoNCj4gPiBAQCAtNTU3Niw2ICs1NjE1LDEzIEBAIG1kX2Fzc2VtYmxlIChjaGFyICpsaW5l KQ0KPiA+ICAJICByZXR1cm47DQo+ID4gIAl9DQo+ID4NCj4gPiArICAgICAgLyogQ2hlY2sgZm9y IGV4cGxpY2l0IFJFWDIgcHJlZml4LiAgKi8NCj4gPiArICAgICAgaWYgKGkucmV4Ml9lbmNvZGlu ZykNCj4gPiArCXsNCj4gPiArCSAgYXNfYmFkIChfKCJSRVgyIHByZWZpeCBpbnZhbGlkIHdpdGgg YCVzJyIpLCBpbnNuX25hbWUgKCZpLnRtKSk7DQo+ID4gKwkgIHJldHVybjsNCj4gPiArCX0NCj4g DQo+IEFnYWluIEknbSBwcmV0dHkgc3VyZSBJIHBvaW50ZWQgb3V0IGJlZm9yZSB0aGF0IGkucmV4 Ml9lbmNvZGluZyByZWZsZWN0cyB1c2Ugb2YNCj4ge3JleDJ9LiBXaGljaCB0aGVuIHRoZSBlcnJv ciBtZXNzYWdlIHNob3VsZCBjb3JyZWN0bHkgcmVmZXIgdG8uDQo+IA0KDQpDaGFuZ2VkIHRvIA0K DQogICAgICAvKiBDaGVjayBmb3IgZXhwbGljaXQgUkVYMiBwcmVmaXguICAqLw0KICAgICAgaWYg KGkucmV4Ml9lbmNvZGluZykNCiAgICAgICAgew0KICAgICAgICAgIGFzX2JhZCAoXygie3JleDJ9 IHByZWZpeCBpbnZhbGlkIHdpdGggYCVzJyIpLCBpbnNuX25hbWUgKCZpLnRtKSk7DQogICAgICAg ICAgcmV0dXJuOw0KICAgICAgICB9DQoNCj4gPiBAQCAtNTYxNSwxMSArNTY2MSwxMiBAQCBtZF9h c3NlbWJsZSAoY2hhciAqbGluZSkNCj4gPiAgCSAgJiYgKGkub3BbMV0ucmVncy0+cmVnX2ZsYWdz ICYgUmVnUmV4NjQpICE9IDApDQo+ID4gICAgICAgIHx8ICgoKGkudHlwZXNbMF0uYml0ZmllbGQu Y2xhc3MgPT0gUmVnICYmIGkudHlwZXNbMF0uYml0ZmllbGQuYnl0ZSkNCj4gPiAgCSAgIHx8IChp LnR5cGVzWzFdLmJpdGZpZWxkLmNsYXNzID09IFJlZyAmJiBpLnR5cGVzWzFdLmJpdGZpZWxkLmJ5 dGUpKQ0KPiA+IC0JICAmJiBpLnJleCAhPSAwKSkNCj4gPiArCSAgJiYgKGkucmV4ICE9IDAgfHwg aS5yZXgyICE9IDApKSkNCj4gPiAgICAgIHsNCj4gPiAgICAgICAgaW50IHg7DQo+ID4NCj4gPiAt ICAgICAgaS5yZXggfD0gUkVYX09QQ09ERTsNCj4gPiArICAgICAgaWYgKCFpLnJleDIpDQo+ID4g KwlpLnJleCB8PSBSRVhfT1BDT0RFOw0KPiA+ICAgICAgICBmb3IgKHggPSAwOyB4IDwgMjsgeCsr KQ0KPiA+ICAJew0KPiA+ICAJICAvKiBMb29rIGZvciA4IGJpdCBvcGVyYW5kIHRoYXQgdXNlcyBv bGQgcmVnaXN0ZXJzLiAgKi8gQEAgLTU2MzAsNw0KPiA+ICs1Njc3LDcgQEAgbWRfYXNzZW1ibGUg KGNoYXIgKmxpbmUpDQo+ID4gIAkgICAgICAvKiBJbiBjYXNlIGl0IGlzICJoaSIgcmVnaXN0ZXIs IGdpdmUgdXAuICAqLw0KPiA+ICAJICAgICAgaWYgKGkub3BbeF0ucmVncy0+cmVnX251bSA+IDMp DQo+ID4gIAkJYXNfYmFkIChfKCJjYW4ndCBlbmNvZGUgcmVnaXN0ZXIgJyVzJXMnIGluIGFuICIN Cj4gPiAtCQkJICAiaW5zdHJ1Y3Rpb24gcmVxdWlyaW5nIFJFWCBwcmVmaXguIiksDQo+ID4gKwkJ CSAgImluc3RydWN0aW9uIHJlcXVpcmluZyBSRVgvUkVYMiBwcmVmaXguIiksDQo+ID4gIAkJCXJl Z2lzdGVyX3ByZWZpeCwgaS5vcFt4XS5yZWdzLT5yZWdfbmFtZSk7DQo+ID4NCj4gPiAgCSAgICAg IC8qIE90aGVyd2lzZSBpdCBpcyBlcXVpdmFsZW50IHRvIHRoZSBleHRlbmRlZCByZWdpc3Rlci4N Cj4gPiBAQCAtNTY0MiwxMSArNTY4OSwxMSBAQCBtZF9hc3NlbWJsZSAoY2hhciAqbGluZSkNCj4g PiAgCX0NCj4gPiAgICAgIH0NCj4gPg0KPiA+IC0gIGlmIChpLnJleCA9PSAwICYmIGkucmV4X2Vu Y29kaW5nKQ0KPiA+ICsgIGlmICgoaS5yZXggPT0gMCAmJiBpLnJleF9lbmNvZGluZykgfHwgKGku cmV4MiA9PSAwICYmDQo+ID4gKyBpLnJleDJfZW5jb2RpbmcpKQ0KPiANCj4gRG9lc24ndCB0aGlz IHdhbnQgdG8gYmUNCj4gDQo+ICAgaWYgKGkucmV4ID09IDAgJiYgaS5yZXgyID09IDAgJiYgKGku cmV4X2VuY29kaW5nIHx8IGkucmV4Ml9lbmNvZGluZykpDQo+IA0KPiA/DQoNCkRvbmUuDQoNCj4g DQo+ID4gICAgICB7DQo+ID4gICAgICAgIC8qIENoZWNrIGlmIHdlIGNhbiBhZGQgYSBSRVhfT1BD T0RFIGJ5dGUuICBMb29rIGZvciA4IGJpdCBvcGVyYW5kDQo+ID4gIAkgdGhhdCB1c2VzIGxlZ2Fj eSByZWdpc3Rlci4gIElmIGl0IGlzICJoaSIgcmVnaXN0ZXIsIGRvbid0IGFkZA0KPiA+IC0JIHRo ZSBSRVhfT1BDT0RFIGJ5dGUuICAqLw0KPiA+ICsJIHJleCBhbmQgcmV4MiBwcmVmaXguICAqLw0K PiA+ICAgICAgICBpbnQgeDsNCj4gPiAgICAgICAgZm9yICh4ID0gMDsgeCA8IDI7IHgrKykNCj4g PiAgCWlmIChpLnR5cGVzW3hdLmJpdGZpZWxkLmNsYXNzID09IFJlZyBAQCAtNTY1Niw2ICs1NzAz LDcgQEANCj4gPiBtZF9hc3NlbWJsZSAoY2hhciAqbGluZSkNCj4gPiAgCSAgew0KPiA+ICAJICAg IGdhc19hc3NlcnQgKCEoaS5vcFt4XS5yZWdzLT5yZWdfZmxhZ3MgJiBSZWdSZXgpKTsNCj4gPiAg CSAgICBpLnJleF9lbmNvZGluZyA9IGZhbHNlOw0KPiA+ICsJICAgIGkucmV4Ml9lbmNvZGluZyA9 IGZhbHNlOw0KPiA+ICAJICAgIGJyZWFrOw0KPiA+ICAJICB9DQo+ID4NCj4gPiBAQCAtNTY2Myw3 ICs1NzExLDEzIEBAIG1kX2Fzc2VtYmxlIChjaGFyICpsaW5lKQ0KPiA+ICAJaS5yZXggPSBSRVhf T1BDT0RFOw0KPiA+ICAgICAgfQ0KPiA+DQo+ID4gLSAgaWYgKGkucmV4ICE9IDApDQo+ID4gKyAg aWYgKGkucmV4MiAhPSAwIHx8IGkucmV4Ml9lbmNvZGluZykNCj4gPiArICAgIHsNCj4gPiArICAg ICAgYnVpbGRfcmV4Ml9wcmVmaXggKCk7DQo+ID4gKyAgICAgIC8qIFRoZSBpbmRpdmlkdWFsIFJF WC5SWEJXIGJpdHMgZ290IGNvbnN1bWVkLiAgKi8NCj4gPiArICAgICAgaS5yZXggJj0gUkVYX09Q Q09ERTsNCj4gPiArICAgIH0NCj4gPiArICBlbHNlIGlmIChpLnJleCAhPSAwKQ0KPiA+ICAgICAg YWRkX3ByZWZpeCAoUkVYX09QQ09ERSB8IGkucmV4KTsNCj4gPg0KPiA+ICAgIGluc2VydF9sZmVu Y2VfYmVmb3JlICgpOw0KPiA+IEBAIC01ODM0LDYgKzU4ODgsMTAgQEAgcGFyc2VfaW5zbiAoY29u c3QgY2hhciAqbGluZSwgY2hhciAqbW5lbW9uaWMsDQo+IGJvb2wgcHJlZml4X29ubHkpDQo+ID4g IAkJICAvKiB7cmV4fSAqLw0KPiA+ICAJCSAgaS5yZXhfZW5jb2RpbmcgPSB0cnVlOw0KPiA+ICAJ CSAgYnJlYWs7DQo+ID4gKwkJY2FzZSBQcmVmaXhfUkVYMjoNCj4gPiArCQkgIC8qIHtyZXgyfSAq Lw0KPiA+ICsJCSAgaS5yZXgyX2VuY29kaW5nID0gdHJ1ZTsNCj4gPiArCQkgIGJyZWFrOw0KPiA+ ICAJCWNhc2UgUHJlZml4X05vT3B0aW1pemU6DQo+ID4gIAkJICAvKiB7bm9vcHRpbWl6ZX0gKi8N Cj4gPiAgCQkgIGkubm9fb3B0aW1pemUgPSB0cnVlOw0KPiA+IEBAIC02OTcxLDYgKzcwMjksNDUg QEAgVkVYX2NoZWNrX2VuY29kaW5nIChjb25zdCBpbnNuX3RlbXBsYXRlICp0KQ0KPiA+ICAgIHJl dHVybiAwOw0KPiA+ICB9DQo+ID4NCj4gPiArLyogQ2hlY2sgaWYgRWdwcnMgb3BlcmFuZHMgYXJl IHZhbGlkIGZvciB0aGUgaW5zdHJ1Y3Rpb24uICAqLw0KPiA+ICsNCj4gPiArc3RhdGljIGludA0K PiA+ICtjaGVja19FZ3ByT3BlcmFuZHMgKGNvbnN0IGluc25fdGVtcGxhdGUgKnQpIHsNCj4gPiAr ICBpZiAoIXQtPm9wY29kZV9tb2RpZmllci5ub2VncHIpDQo+ID4gKyAgICByZXR1cm4gMDsNCj4g PiArDQo+ID4gKyAgZm9yICh1bnNpZ25lZCBpbnQgb3AgPSAwOyBvcCA8IGkub3BlcmFuZHM7IG9w KyspDQo+ID4gKyAgICB7DQo+ID4gKyAgICAgIGlmIChpLnR5cGVzW29wXS5iaXRmaWVsZC5jbGFz cyAhPSBSZWcNCj4gPiArCSAgLyogU3BlY2lhbCBjYXNlIGZvciAoJWR4KSB3aGlsZSBkb2luZyBp bnB1dC9vdXRwdXQgb3AgKi8NCj4gPiArCSAgfHwgaS5pbnB1dF9vdXRwdXRfb3BlcmFuZCkNCj4g DQo+IERpZG4ndCB3ZSBhZ3JlZSB0aGF0IHRoaXMgZXh0cmEgY29uZGl0aW9uIGlzbid0IG5lY2Vz c2FyeSwgb25jZSB0aGUgcHJvZHVjZXINCj4gc2l0ZSBjb3JyZWN0bHkgdXBkYXRlcyBhbGwgc3Rh dGUgKHdoaWNoIHdhcyBzdXBwb3NlZCB0byBiZSBkb25lIGluIGEgc21hbGwNCj4gcHJlcmVxIHBh dGNoKT8NCj4gDQoNCkkgdHJpZWQgYWRkaW5nICJVbnNwZWNpZmllZCB8IEJhc2VJbmRleCIgdG8g dGhlIEluT3V0UG9ydFJlZywgdGhlbiBzb21lIHJlbGF0ZWQgaW5zdHJ1Y3Rpb25zIGhhZCB0d28g bWVtb3J5IG9wZXJhbmRzLCBzbyBpdCByYWlzZWQgYSBsb3Qgb2YgaW52YWxpZCB0ZXN0IGNhc2Ug ZmFpbCwgYW5kIG1vcmUgdWdseSBjb2RlIG5lZWRlZCB0byBiZSBhZGRlZC4gSW4gdGhlIGVuZCwg SSBmZWx0IHRoYXQgdGhpcyBzaW1wbGUgbW9kaWZpY2F0aW9uIG1pZ2h0IGJlIGJldHRlci4NCg0K QEAgLTEzMTM3LDYgKzEzMTM3LDcgQEAgaTM4Nl9hdHRfb3BlcmFuZCAoY2hhciAqb3BlcmFuZF9z dHJpbmcpDQogICAgICAgICAgJiYgIW9wZXJhbmRfdHlwZV9jaGVjayAoaS50eXBlc1t0aGlzX29w ZXJhbmRdLCBkaXNwKSkNCiAgICAgICAgew0KICAgICAgICAgIGkudHlwZXNbdGhpc19vcGVyYW5k XSA9IGkuYmFzZV9yZWctPnJlZ190eXBlOw0KKyAgICAgICAgIGkudHlwZXNbdGhpc19vcGVyYW5k XS5iaXRmaWVsZC5jbGFzcyA9IDA7DQogICAgICAgICAgaS5pbnB1dF9vdXRwdXRfb3BlcmFuZCA9 IHRydWU7DQogICAgICAgICAgcmV0dXJuIDE7DQoNCj4gPiBAQCAtNzEwNyw3ICs3MjA0LDkgQEAg bWF0Y2hfdGVtcGxhdGUgKGNoYXIgbW5lbV9zdWZmaXgpDQo+ID4gICAgICAgIC8qIERvIG5vdCB2 ZXJpZnkgb3BlcmFuZHMgd2hlbiB0aGVyZSBhcmUgbm9uZS4gICovDQo+ID4gICAgICAgIGlmICgh dC0+b3BlcmFuZHMpDQo+ID4gIAl7DQo+ID4gLQkgIGlmIChWRVhfY2hlY2tfZW5jb2RpbmcgKHQp KQ0KPiA+ICsJICAvKiBXaGVuIHRoZXJlIGFyZSBubyBvcGVyYW5kcywgd2Ugc3RpbGwgbmVlZCB0 byB1c2UgdGhlDQo+ID4gKwkgICAgIGNoZWNrX0VncHJPcGVyYW5kcyBmdW5jdGlvbiB0byBjaGVj ayB3aGV0aGVyIHtyZXgyfSBpcyB2YWxpZC4gICovDQo+ID4gKwkgIGlmIChWRVhfY2hlY2tfZW5j b2RpbmcgKHQpIHx8IGNoZWNrX0VncHJPcGVyYW5kcyAodCkpDQo+IA0KPiBBcyBiZWZvcmUgaW1v IGVpdGhlciB0aGUgZnVuY3Rpb24gbmFtZSB3YW50cyBjaGFuZ2luZyAoc28gaXQgYmVjb21lcw0K PiByZWFzb25hYmxlIHRvIHVzZSBoZXJlLCB3aXRob3V0IHRoZSBuZWVkIGZvciBhIGNvbW1lbnQg ZXhwbGFpbmluZyB0aGUNCj4gb2RkaXR5KSwgb3IgeW91IHNpbXBseSBvcGVuLWNvZGUgdGhlIHNv bGUgY2hlY2sgdGhhdCBpcyBuZWVkZWQgaGVyZQ0KPiAoYWZhaWN0OiB0LT5vcGNvZGVfbW9kaWZp ZXIubm9lZ3ByICYmIGkucmV4Ml9lbmNvZGluZykuDQo+IA0KDQpDaGFuZ2VkIHRvIA0KDQogICAg ICAgICAgaWYgKFZFWF9jaGVja19lbmNvZGluZyAodCkpDQogICAgICAgICAgICB7DQogICAgICAg ICAgICAgIHNwZWNpZmljX2Vycm9yID0gcHJvZ3Jlc3MgKGkuZXJyb3IpOw0KICAgICAgICAgICAg ICBjb250aW51ZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgIC8qIENoZWNrIGlmIHBzZXVk byBwcmVmaXgge3JleDJ9IGlzIHZhbGlkLiAgKi8NCiAgICAgICAgICBpZiAodC0+b3Bjb2RlX21v ZGlmaWVyLm5vZWdwciAmJiBpLnJleDJfZW5jb2RpbmcpDQogICAgICAgICAgICB7DQogICAgICAg ICAgICAgIGkuZXJyb3IgPSBpbnZhbGlkX3BzZXVkb19wcmVmaXg7DQogICAgICAgICAgICAgIHNw ZWNpZmljX2Vycm9yID0gcHJvZ3Jlc3MgKGkuZXJyb3IpOw0KICAgICAgICAgICAgICBjb250aW51 ZTsNCiAgICAgICAgICAgIH0NCg0KPiA+IEBAIC03NDQzLDYgKzc1NDIsMTMgQEAgbWF0Y2hfdGVt cGxhdGUgKGNoYXIgbW5lbV9zdWZmaXgpDQo+ID4gIAkgIGNvbnRpbnVlOw0KPiA+ICAJfQ0KPiA+ DQo+ID4gKyAgICAgIC8qIENoZWNrIGlmIEVHUlBTIG9wZXJhbmRzKHIxNi1yMzEpIGFyZSB2YWxp ZC4gICovDQo+IA0KPiBFR1BSPw0KPiANCg0KRG9uZS4NCg0KPiA+IC0tLSBhL2dhcy9kb2MvYy1p Mzg2LnRleGkNCj4gPiArKysgYi9nYXMvZG9jL2MtaTM4Ni50ZXhpDQo+ID4gQEAgLTIxNyw2ICsy MTcsNyBAQCBhY2NlcHQgdmFyaW91cyBleHRlbnNpb24gbW5lbW9uaWNzLiAgRm9yIGV4YW1wbGUs DQo+ID4gQGNvZGV7YXZ4MTAuMS8yNTZ9LCAgQGNvZGV7YXZ4MTAuMS8xMjh9LCAgQGNvZGV7dXNl cl9tc3J9LA0KPiA+ICtAY29kZXthcHhfZn0sDQo+ID4gIEBjb2Rle2FteF9pbnQ4fSwNCj4gPiAg QGNvZGV7YW14X2JmMTZ9LA0KPiA+ICBAY29kZXthbXhfZnAxNn0sDQo+ID4gQEAgLTk4Myw2ICs5 ODQsOSBAQCBEaWZmZXJlbnQgZW5jb2Rpbmcgb3B0aW9ucyBjYW4gYmUgc3BlY2lmaWVkIHZpYQ0K PiBwc2V1ZG8gcHJlZml4ZXM6DQo+ID4gIGluc3RydWN0aW9ucyAoeDg2LTY0IG9ubHkpLiAgTm90 ZSB0aGF0IHRoaXMgZGlmZmVycyBmcm9tIHRoZQ0KPiA+IEBzYW1we3JleH0gIHByZWZpeCB3aGlj aCBnZW5lcmF0ZXMgUkVYIHByZWZpeCB1bmNvbmRpdGlvbmFsbHkuDQo+ID4NCj4gPiArQGl0ZW0N Cj4gPiArQHNhbXB7QHtyZXgyQH19IC0tIGVuY29kZSB3aXRoIFJFWDIgcHJlZml4DQo+IA0KPiBU aGlzIGlzbid0IGluIGxpbmUgd2l0aCB3aGF0J3Mgc2FpZCBmb3Ige3JleH0uIElpcmMgd2Ugd2Vy ZSBpbiBhZ3JlZW1lbnQgdGhhdCB3ZQ0KPiB3YW50IGJvdGggdG8gYmVoYXZlIGNvbnNpc3RlbnRs eS4gSW4gd2hpY2ggY2FzZSBkb2N1bWVudGF0aW9uIGFsc28gbmVlZHMgdG8NCj4gZGVzY3JpYmUg dGhlbSBjb25zaXN0ZW50bHkuDQo+IA0KDQpDaGFuZ2VkIHRvIA0KDQpAaXRlbQ0KQHNhbXB7QHty ZXgyQH19IC0tIHByZWZlciBSRVgyIHByZWZpeCBmb3IgaW50ZWdlciBhbmQgbGVnYWN5IHZlY3Rv cg0KaW5zdHJ1Y3Rpb25zIChBUFhfRiBvbmx5KS4gIE5vdGUgdGhhdCB0aGlzIGRpZmZlcnMgZnJv bSB0aGUgQHNhbXB7cmV4Mn0NCnByZWZpeCB3aGljaCBnZW5lcmF0ZXMgUkVYMiBwcmVmaXggdW5j b25kaXRpb25hbGx5Lg0KDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2dhcy90ZXN0c3Vp dGUvZ2FzL2kzODYveDg2LTY0LWFweC1yZXgyLnMNCj4gPiBAQCAtMCwwICsxLDg2IEBADQo+ID4g KyMgQ2hlY2sgNjRiaXQgaW5zdHJ1Y3Rpb25zIHdpdGggcmV4MiBwcmVmaXggZW5jb2RpbmcNCj4g PiArICAgICAgICAgbGVhbAkoLCVyMTYpLCAlZWF4DQo+ID4gKyAgICAgICAgIGxlYWwJKCwlcjE3 KSwgJWVheA0KPiA+ICsgICAgICAgICBsZWFsCSgsJXIxOCksICVlYXgNCj4gPiArICAgICAgICAg bGVhbAkoLCVyMTkpLCAlZWF4DQo+ID4gKyAgICAgICAgIGxlYWwJKCwlcjIwKSwgJWVheA0KPiA+ ICsgICAgICAgICBsZWFsCSgsJXIyMSksICVlYXgNCj4gPiArICAgICAgICAgbGVhbAkoLCVyMjIp LCAlZWF4DQo+ID4gKyAgICAgICAgIGxlYWwJKCwlcjIzKSwgJWVheA0KPiA+ICsgICAgICAgICBs ZWFsCSgsJXIyNCksICVlYXgNCj4gPiArICAgICAgICAgbGVhbAkoLCVyMjUpLCAlZWF4DQo+ID4g KyAgICAgICAgIGxlYWwJKCwlcjI2KSwgJWVheA0KPiA+ICsgICAgICAgICBsZWFsCSgsJXIyNyks ICVlYXgNCj4gPiArICAgICAgICAgbGVhbAkoLCVyMjgpLCAlZWF4DQo+ID4gKyAgICAgICAgIGxl YWwJKCwlcjI5KSwgJWVheA0KPiA+ICsgICAgICAgICBsZWFsCSgsJXIzMCksICVlYXgNCj4gPiAr ICAgICAgICAgbGVhbAkoLCVyMzEpLCAlZWF4DQo+ID4gKyMjIFJFWC5CNCBiaXQNCj4gDQo+IEZ1 cnRoZXIgdXAgeW91IHByb3Blcmx5IHNheSBSRVgyLiBIZXJlIGFuZCBiZWxvdyBpdCdzIG9ubHkg UkVYPw0KPiANCg0KRG9uZS4NCg0KPiA+IC0tLSBhL2dhcy90ZXN0c3VpdGUvZ2FzL2kzODYveDg2 LTY0LXBzZXVkb3MtYmFkLnMNCj4gPiArKysgYi9nYXMvdGVzdHN1aXRlL2dhcy9pMzg2L3g4Ni02 NC1wc2V1ZG9zLWJhZC5zDQo+ID4gQEAgLTUsMyArNSw2MSBAQCBwc2V1ZG9zOg0KPiA+ICAJe3Jl eH0gdm1vdmFwcyAleG1tNywleG1tMg0KPiA+ICAJe3JleH0gdm1vdmFwcyAleG1tMTcsJXhtbTIN Cj4gPiAgCXtyZXh9IHJvcnggJDcsJWVheCwlZWJ4DQo+ID4gKwl7cmV4Mn0gdm1vdmFwcyAleG1t NywleG1tMg0KPiA+ICsJe3JleDJ9IHhzYXZlICglcmF4KQ0KPiA+ICsJe3JleDJ9IHhzYXZlcyAo JWVjeCkNCj4gPiArCXtyZXgyfSB4c2F2ZXM2NCAoJWVjeCkNCj4gPiArCXtyZXgyfSB4c2F2ZWMg KCVlY3gpDQo+ID4gKwl7cmV4Mn0geHJzdG9ycyAoJWVjeCkNCj4gPiArCXtyZXgyfSB4cnN0b3Jz NjQgKCVlY3gpDQo+ID4gKw0KPiA+ICsJI0FsbCBvcGNvZGVzIGluIHRoZSByb3cgMHhhKiBwcmVm aXhlZCBSRVgyIGFyZSBpbGxlZ2FsLg0KPiA+ICsJI3tyZXgyfSB0ZXN0ICgweGE4KSBpcyBhIHNw ZWNpYWwgY2FzZSwgaXQgd2lsbCByZW1hcCB0byB0ZXN0ICgweGY2KQ0KPiA+ICsJe3JleDJ9IG1v diAgICAweDkwOTA5MDkwLCVhbA0KPiA+ICsJe3JleDJ9IG1vdmFicyAweDEsJWFsDQo+ID4gKwl7 cmV4Mn0gY21wc2IgICVlczooJWVkaSksJWRzOiglZXNpKQ0KPiA+ICsJe3JleDJ9IGxvZHNiDQo+ ID4gKwl7cmV4Mn0gbG9kcyAgICVkczooJWVzaSksJWFsDQo+ID4gKwl7cmV4Mn0gbG9kc2IgICAo JWVzaSkNCj4gPiArCXtyZXgyfSBtb3ZzDQo+ID4gKwl7cmV4Mn0gbW92cyAgICglZXNpKSwgKCVl ZGkpDQo+ID4gKwl7cmV4Mn0gc2Nhc2wNCj4gPiArCXtyZXgyfSBzY2FzICAgJWVzOiglZWRpKSwl ZWF4DQo+ID4gKwl7cmV4Mn0gc2Nhc2IgICAoJWVkaSkNCj4gPiArCXtyZXgyfSBzdG9zYg0KPiA+ ICsJe3JleDJ9IHN0b3NiICAgKCVlZGkpDQo+ID4gKwl7cmV4Mn0gc3RvcyAgICVlYXgsJWVzOigl ZWRpKQ0KPiA+ICsNCj4gPiArCSNBbGwgb3Bjb2RlcyBpbiB0aGUgcm93IDB4NyogcHJlZml4ZWQg UkVYMiBhcmUgaWxsZWdhbC4NCj4gDQo+IFRoaXMgYWxzbyBjb3ZlcnMgbWFwIDEgcm93IDgsIGRv ZXNuJ3QgaXQ/DQo+IA0KDQpObywgSSBkaWRuJ3QgZmluZCAweGY4KiBpbiBvcGNvZGUgdGFibGUu DQoNCj4gPiArCXtyZXgyfSBqbyAgICAgLisyLTB4NzANCj4gPiArCXtyZXgyfSBqbm8gICAgLisy LTB4NzANCj4gPiArCXtyZXgyfSBqYiAgICAgLisyLTB4NzANCj4gPiArCXtyZXgyfSBqYWUgICAg LisyLTB4NzANCj4gPiArCXtyZXgyfSBqZSAgICAgLisyLTB4NzANCj4gPiArCXtyZXgyfSBqbmUg ICAgLisyLTB4NzANCj4gPiArCXtyZXgyfSBqYmUgICAgLisyLTB4NzANCj4gPiArCXtyZXgyfSBq YSAgICAgLisyLTB4NzANCj4gPiArCXtyZXgyfSBqcyAgICAgLisyLTB4NzANCj4gPiArCXtyZXgy fSBqbnMgICAgLisyLTB4NzANCj4gPiArCXtyZXgyfSBqcCAgICAgLisyLTB4NzANCj4gPiArCXty ZXgyfSBqbnAgICAgLisyLTB4NzANCj4gPiArCXtyZXgyfSBqbCAgICAgLisyLTB4NzANCj4gPiAr CXtyZXgyfSBqZ2UgICAgLisyLTB4NzANCj4gPiArCXtyZXgyfSBqbGUgICAgLisyLTB4NzANCj4g PiArCXtyZXgyfSBqZyAgICAgLisyLTB4NzANCj4gPiArDQo+ID4gKwkjQWxsIG9wY29kZXMgaW4g dGhlIHJvdyAweDcqIHByZWZpeGVkIFJFWDIgYXJlIGlsbGVnYWwuDQo+ID4gKwl7cmV4Mn0gaW4g JDB4OTAsJWFsDQo+ID4gKwl7cmV4Mn0gaW4gJDB4OTANCj4gPiArCXtyZXgyfSBvdXQgJDB4OTAs JWFsDQo+ID4gKwl7cmV4Mn0gb3V0ICQweDkwDQo+ID4gKwl7cmV4Mn0gam1wICAqJWVheA0KPiA+ ICsJe3JleDJ9IGxvb3AgZm9vDQo+ID4gKwkjQWxsIG9wY29kZXMgaW4gdGhlIHJvdyAweGYzKiBw cmVmaXhlZCBSRVgyIGFyZSBpbGxlZ2FsLg0KPiANCj4gVGhpcyBjb21tZW50IGNvbnRpbnVlcyB0 byBiZSBjb25mdXNpbmc6IDB4ZjMgaXMgYSBSRVAgcHJlZml4LiBQZXJoYXBzIGJlc3QgdG8NCj4g ZWl0aGVyIHNheSAibWFwIDEiIGFuZCBvbWl0IHRoZSAiZiIgb3IgYXQgbGVhc3Qgd3JpdGUgMHgw ZjMqIG9yIHNsaWdodGx5IGJldHRlcg0KPiAweDBmIDB4MyouDQo+IA0KDQpEb25lLg0KDQo+ID4g LS0tIGEvZ2FzL3Rlc3RzdWl0ZS9nYXMvaTM4Ni94ODYtNjQtcHNldWRvcy5zDQo+ID4gKysrIGIv Z2FzL3Rlc3RzdWl0ZS9nYXMvaTM4Ni94ODYtNjQtcHNldWRvcy5zDQo+ID4gQEAgLTM2MCw2ICsz NjAsMTkgQEAgX3N0YXJ0Og0KPiA+ICAJe3JleH0gbW92YXBzICglcjgpLCV4bW0yDQo+ID4gIAl7 cmV4fSBwaGFkZHcgKCVyY3gpLCVtbTANCj4gPiAgCXtyZXh9IHBoYWRkdyAoJXI4KSwlbW0wDQo+ ID4gKwl7cmV4Mn0gbW92ICVhbCwlYWgNCj4gPiArCXtyZXgyfSBzaGwgJWNsLCAlZWF4DQo+ID4g Kwl7cmV4Mn0gY21wICVjbCwgJWRsDQo+ID4gKwl7cmV4Mn0gbW92ICQxLCAlYmwNCj4gPiArCXty ZXgyfSBtb3ZsICVlYXgsJWVieA0KPiA+ICsJe3JleDJ9IG1vdmwgJWVheCwlcjE0ZA0KPiA+ICsJ e3JleDJ9IG1vdmwgJWVheCwoJXI4KQ0KPiA+ICsJe3JleDJ9IG1vdmFwcyAleG1tNywleG1tMg0K PiA+ICsJe3JleDJ9IG1vdmFwcyAleG1tNywleG1tMTINCj4gPiArCXtyZXgyfSBtb3ZhcHMgKCVy Y3gpLCV4bW0yDQo+ID4gKwl7cmV4Mn0gbW92YXBzICglcjgpLCV4bW0yDQo+ID4gKwl7cmV4Mn0g cG11bGx3ICVtbTAsJW1tNg0KPiA+ICsNCj4gPg0KPiA+ICAJbW92YiAoJXJicCksJWFsDQo+ID4g IAl7ZGlzcDh9IG1vdmIgKCVyYnApLCVhbA0KPiANCj4gTm8gZG91YmxlIGJsYW5rIGxpbmVzIHBs ZWFzZS4NCj4gDQoNCkRvbmUuDQoNCj4gPiAtLS0gYS9vcGNvZGVzL2kzODYtZGlzLmMNCj4gPiAr KysgYi9vcGNvZGVzL2kzODYtZGlzLmMNCj4gDQo+IERpc2Fzc2VtYmxlciBjb21tZW50cyAoaWYg YW55KSBpbiBhIHNlcGFyYXRlIChsYXRlcikgbWFpbCBhZ2Fpbi4NCj4gDQoNCk9LLg0KDQo+ID4g LS0tIGEvb3Bjb2Rlcy9pMzg2LWdlbi5jDQo+ID4gKysrIGIvb3Bjb2Rlcy9pMzg2LWdlbi5jDQo+ ID4gQEAgLTI3NSw2ICsyNzUsOCBAQCBzdGF0aWMgY29uc3QgZGVwZW5kZW5jeSBpc2FfZGVwZW5k ZW5jaWVzW10gPQ0KPiA+ICAgICAgIjY0IiB9LA0KPiA+ICAgIHsgIlVTRVJfTVNSIiwNCj4gPiAg ICAgICI2NCIgfSwNCj4gPiArICB7ICJBUFhfRiIsDQo+ID4gKyAgICAiWFNBVkV8NjQiIH0sDQo+ ID4gIH07DQo+ID4NCj4gPiAgLyogVGhpcyBhcnJheSBpcyBwb3B1bGF0ZWQgYXMgcHJvY2Vzc19p Mzg2X2luaXRpYWxpemVycygpIHdhbGtzDQo+ID4gY3B1X2ZsYWdzW10uICAqLyBAQCAtMzk3LDYg KzM5OSw3IEBAIHN0YXRpYyBiaXRmaWVsZCBjcHVfZmxhZ3NbXSA9DQo+ID4gICAgQklURklFTEQg KEZSRUQpLA0KPiA+ICAgIEJJVEZJRUxEIChMS0dTKSwNCj4gPiAgICBCSVRGSUVMRCAoVVNFUl9N U1IpLA0KPiA+ICsgIEJJVEZJRUxEIChBUFhfRiksDQo+ID4gICAgQklURklFTEQgKE1XQUlUWCks DQo+ID4gICAgQklURklFTEQgKENMWkVSTyksDQo+ID4gICAgQklURklFTEQgKE9TUEtFKSwNCj4g PiBAQCAtNDg2LDYgKzQ4OSw3IEBAIHN0YXRpYyBiaXRmaWVsZCBvcGNvZGVfbW9kaWZpZXJzW10g PQ0KPiA+ICAgIEJJVEZJRUxEIChBVFRTeW50YXgpLA0KPiA+ICAgIEJJVEZJRUxEIChJbnRlbFN5 bnRheCksDQo+ID4gICAgQklURklFTEQgKElTQTY0KSwNCj4gPiArICBCSVRGSUVMRCAoTm9FZ3By KSwNCj4gPiAgfTsNCj4gPg0KPiA+ICAjZGVmaW5lIENMQVNTKG4pICNuLCBuDQo+ID4gQEAgLTEw NzIsMTAgKzEwNzYsNDggQEAgZ2V0X2VsZW1lbnRfc2l6ZSAoY2hhciAqKm9wbmQsIGludCBsaW5l bm8pDQo+ID4gICAgcmV0dXJuIGVsZW1fc2l6ZTsNCj4gPiAgfQ0KPiA+DQo+ID4gK3N0YXRpYyBi b29sDQo+ID4gK3JleDJfZGlzYWxsb3dlZCAoY29uc3QgdW5zaWduZWQgbG9uZyBsb25nIG9wY29k ZSwgdW5zaWduZWQgaW50IHNwYWNlLA0KPiA+ICsJCQkgICAgICAgY29uc3QgY2hhciAqY3B1X2Zs YWdzKQ0KPiA+ICt7DQo+ID4gKyAgLyogUHJlZml4aW5nIFhTQVZFKiBhbmQgWFJTVE9SKiBpbnN0 cnVjdGlvbnMgd2l0aCBSRVgyIHRyaWdnZXJzDQo+ID4gKyNVRC4gICovDQo+ID4gKyAgaWYgKHN0 cmNtcCAoY3B1X2ZsYWdzLCAiWFNBVkVTIikgPj0gMA0KPiA+ICsgICAgICB8fCBzdHJjbXAgKGNw dV9mbGFncywgIlhTQVZFQyIpID49IDANCj4gPiArICAgICAgfHwgc3RyY21wIChjcHVfZmxhZ3Ms ICJYc2F2ZSIpID49IDANCj4gPiArICAgICAgfHwgc3RyY21wIChjcHVfZmxhZ3MsICJYc2F2ZW9w dCIpID49IDApDQo+ID4gKyAgICByZXR1cm4gdHJ1ZTsNCj4gDQo+IFdhc24ndCB0aGlzIGludGVu ZGVkIHRvIGJlIGRyb3BwZWQsIGJlaW5nIHJlZHVuZGFudCB3aXRoIHRoZSBvcGNvZGUgdGFibGUN Cj4gYXR0cmlidXRlcz8NCj4NCg0KWWVzLCBkcm9wcGVkLg0KIA0KPiA+ICsgIC8qIEFsbCBvcGNv ZGVzIGxpc3RlZCBtYXAwIDB4NCosIDB4NyosIDB4YSosIDB4ZSogYW5kIG1hcDEgMHgzKiwgMHg4 Kg0KPiA+ICsgICAgIGFyZSByZXNlcnZlZCB1bmRlciBSRVgyIGFuZCB0cmlnZ2VycyAjVUQgd2hl biBwcmVmaXhlZCB3aXRoIFJFWDINCj4gPiArICovICBpZiAoc3BhY2UgPT0gMCkNCj4gPiArICAg IHN3aXRjaCAob3Bjb2RlID4+IDQpDQo+IA0KPiBCb3RoIGhlcmUgYW5kIC4uLg0KPg0KPiA+ICsg ICAgICB7DQo+ID4gKyAgICAgIGNhc2UgMHg0Og0KPiA+ICsgICAgICBjYXNlIDB4NzoNCj4gPiAr ICAgICAgY2FzZSAweEE6DQo+ID4gKyAgICAgIGNhc2UgMHhFOg0KPiA+ICsJcmV0dXJuIHRydWU7 DQo+ID4gKyAgICAgIGRlZmF1bHQ6DQo+ID4gKwlyZXR1cm4gZmFsc2U7DQo+ID4gKyAgICB9DQo+ ID4gKw0KPiA+ICsgIGlmIChzcGFjZSA9PSBTUEFDRV8wRikNCj4gPiArICAgIHN3aXRjaCAob3Bj b2RlID4+IDQpDQo+IA0KPiAuLi4gaGVyZSwgZG9uJ3QgeW91IGFsc28gbmVlZCB0byBtYXNrIG9m ZiBmdXJ0aGVyIGJpdHM/IFRoZXJlIGFyZSBxdWl0ZSBhIGZldw0KPiBvcGNvZGVzIHdoaWNoIGhh dmUgYSBraW5kLW9mIE1vZFIvTSBieXRlIGVuY29kZWQgZGlyZWN0bHkgaW4gdGhlIG9wY29kZSwN Cj4gZm9yIGV4YW1wbGUuDQo+IA0KDQpUaGFua3MgZm9yIHJlbWluZGluZy4gQWRkZWQgdGhlIGNv ZGUgbGlrZSB0aGlzLg0KDQovKiBTb21lIG9wY29kZXMgZW5jb2RlIGEgTW9kUi9NIGJ5dGUgZGly ZWN0bHkgaW4gdGhlIG9wY29kZS4gICovDQogIHVuc2lnbmVkIGxvbmcgbG9uZw0KICBiYXNlX29w Y29kZSA9IChsZW5ndGggPiAxKSA/IG9wY29kZSA+PiAoOCAqIGxlbmd0aCAtIDgpIDogb3Bjb2Rl Ow0KDQovKiBBbGwgb3Bjb2RlcyBsaXN0ZWQgbWFwMCAweDQqLCAweDcqLCAweGEqLCAweGUqIGFu ZCBtYXAxIDB4MyosIDB4OCoNCiAgICAgYXJlIHJlc2VydmVkIHVuZGVyIFJFWDIgYW5kIHRyaWdn ZXJzICNVRCB3aGVuIHByZWZpeGVkIHdpdGggUkVYMiAqLw0KICBpZiAoc3BhY2UgPT0gMCkNCiAg ICBzd2l0Y2ggKGJhc2Vfb3Bjb2RlID4+IDQpDQogICAgICB7DQogICAgICBjYXNlIDB4NDoNCiAg ICAgIGNhc2UgMHg3Og0KICAgICAgY2FzZSAweEE6DQogICAgICBjYXNlIDB4RToNCiAgICAgICAg cmV0dXJuIHRydWU7DQogICAgICBkZWZhdWx0Og0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAg fQ0KDQogIGlmIChzcGFjZSA9PSBTUEFDRV8wRikNCiAgICBzd2l0Y2ggKGJhc2Vfb3Bjb2RlID4+ IDQpDQoNCj4gPiArICAgICAgew0KPiA+ICsgICAgICBjYXNlIDB4MzoNCj4gPiArICAgICAgY2Fz ZSAweDg6DQo+ID4gKwlyZXR1cm4gdHJ1ZTsNCj4gPiArICAgICAgZGVmYXVsdDoNCj4gPiArCXJl dHVybiBmYWxzZTsNCj4gPiArICAgICAgfQ0KPiA+ICsNCj4gPiArICByZXR1cm4gZmFsc2U7DQo+ ID4gK30NCj4gPiArDQo+ID4gIHN0YXRpYyB2b2lkDQo+ID4gIHByb2Nlc3NfaTM4Nl9vcGNvZGVf bW9kaWZpZXIgKEZJTEUgKnRhYmxlLCBjaGFyICptb2QsIHVuc2lnbmVkIGludA0KPiBzcGFjZSwN Cj4gPiAgCQkJICAgICAgdW5zaWduZWQgaW50IHByZWZpeCwgY29uc3QgY2hhcg0KPiAqZXh0ZW5z aW9uX29wY29kZSwNCj4gPiAtCQkJICAgICAgY2hhciAqKm9wbmQsIGludCBsaW5lbm8pDQo+ID4g KwkJCSAgICAgIGNoYXIgKipvcG5kLCBpbnQgbGluZW5vLCBib29sIHJleDJfZGlzYWxsb3dlZCkN Cj4gPiAgew0KPiA+ICAgIGNoYXIgKnN0ciwgKm5leHQsICpsYXN0Ow0KPiA+ICAgIGJpdGZpZWxk IG1vZGlmaWVycyBbQVJSQVlfU0laRSAob3Bjb2RlX21vZGlmaWVycyldOyBAQCAtMTIwMiw2DQo+ ID4gKzEyNDQsMTIgQEAgcHJvY2Vzc19pMzg2X29wY29kZV9tb2RpZmllciAoRklMRSAqdGFibGUs IGNoYXIgKm1vZCwNCj4gdW5zaWduZWQgaW50IHNwYWNlLA0KPiA+ICAJICB8fCBtb2RpZmllcnNb U0FFXS52YWx1ZSkpDQo+ID4gICAgICBtb2RpZmllcnNbRVZleF0udmFsdWUgPSBFVkVYRFlOOw0K PiA+DQo+ID4gKyAgLyogVmV4LCBsZWdhY3kgbWFwMiBhbmQgbWFwMyBhbmQgcmV4Ml9kaXNhbGxv d2VkIGRvIG5vdCBzdXBwb3J0DQo+IEVHUFIuDQo+ID4gKyAgICAgRm9yIHRlbXBsYXRlIHN1cHBv cnRzIGJvdGggVmV4IGFuZCBFVmV4IGFsbG93aW5nIEVHUFIuICAqLw0KPiANCj4gIlRlbXBsYXRl cyBzdXBwb3J0aW5nIGJvdGggVmV4IGFuZCBFVmV4IGFsbG93IEVHUFIuIg0KPiANCg0KRG9uZS4N Cg0KPiA+ICsgIGlmICgobW9kaWZpZXJzW1ZleF0udmFsdWUgfHwgc3BhY2UgPiBTUEFDRV8wRiB8 fCByZXgyX2Rpc2FsbG93ZWQpDQo+ID4gKyAgICAgICYmICFtb2RpZmllcnNbRVZleF0udmFsdWUp DQo+ID4gKyAgICBtb2RpZmllcnNbTm9FZ3ByXS52YWx1ZSA9IDE7DQo+ID4gKw0KPiA+ICAgIG91 dHB1dF9vcGNvZGVfbW9kaWZpZXIgKHRhYmxlLCBtb2RpZmllcnMsIEFSUkFZX1NJWkUgKG1vZGlm aWVycykpOw0KPiA+IH0NCj4gPg0KPiA+IEBAIC0xNDI1LDggKzE0NzMsMTEgQEAgb3V0cHV0X2kz ODZfb3Bjb2RlIChGSUxFICp0YWJsZSwgY29uc3QgY2hhcg0KPiAqbmFtZSwgY2hhciAqc3RyLA0K PiA+ICAJICAgaWRlbnQsIDIgKiAoaW50KWxlbmd0aCwgb3Bjb2RlLCBlbmQsIGkpOw0KPiA+ICAg IGZyZWUgKGlkZW50KTsNCj4gPg0KPiA+ICsgIC8qIEFkZCBzb21lIHNwZWNpbGFsIGhhbmRsZSBm b3IgY3VycmVudCBlbnRyeS4gICovICBib29sDQo+ID4gKyBoYXNfc3BlY2lhbF9oYW5kbGUgPSBy ZXgyX2Rpc2FsbG93ZWQgKG9wY29kZSwgc3BhY2UsIGNwdV9mbGFncyk7DQo+IA0KPiBUaGUgbG9j YWwgdmFyaWFibGUgKGlmIG9uZSBpcyBuZWVkZWQgaW4gdGhlIGZpcnN0IHBsYWNlKSB3YW50cyBu YW1pbmcgYXMgdXNlZnVsbHkNCj4gYXMgdGhlIGZ1bmN0aW9uIG5vdyBpcyBuYW1lZC4gU2ltaWxh cmx5IHRoZSBjb21tZW50IHdvdWxkIHdhbnQgaW1wcm92aW5nDQo+IGFsb25tZyB0aG9zZSBsaW5l cy4NCj4gDQoNCkRyb3BwZWQgdGhlIGxvY2FsIHZhcmlhYmxlLiBDaGFuZ2VkIHRvDQoNCiAgcHJv Y2Vzc19pMzg2X29wY29kZV9tb2RpZmllciAodGFibGUsIG9wY29kZV9tb2RpZmllciwgc3BhY2Us IHByZWZpeCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uX29wY29k ZSwgb3BlcmFuZF90eXBlcywgbGluZW5vLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZXgyX2Rpc2FsbG93ZWQgKG9wY29kZSwgbGVuZ3RoLCBzcGFjZSwNCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfZmxhZ3MpKTsNCg0KPiA+ICAg IHByb2Nlc3NfaTM4Nl9vcGNvZGVfbW9kaWZpZXIgKHRhYmxlLCBvcGNvZGVfbW9kaWZpZXIsIHNw YWNlLCBwcmVmaXgsDQo+ID4gLQkJCQlleHRlbnNpb25fb3Bjb2RlLCBvcGVyYW5kX3R5cGVzLCBs aW5lbm8pOw0KPiA+ICsJCQkJZXh0ZW5zaW9uX29wY29kZSwgb3BlcmFuZF90eXBlcywgbGluZW5v LA0KPiA+ICsJCQkJaGFzX3NwZWNpYWxfaGFuZGxlKTsNCj4gPg0KPiA+ICAgIHByb2Nlc3NfaTM4 Nl9jcHVfZmxhZyAodGFibGUsIGNwdV9mbGFncywgTlVMTCwgIiwiLCAiICAgICIsIGxpbmVubywg Q3B1TWF4KTsNCj4gPg0KPiA+IC0tLSBhL29wY29kZXMvaTM4Ni1vcGMudGJsDQo+ID4gKysrIGIv b3Bjb2Rlcy9pMzg2LW9wYy50YmwNCj4gPiBAQCAtMTM4LDYgKzEzOCw3IEBADQo+ID4gICNkZWZp bmUgVnN6MjU2IFZzej1WU1oyNTYNCj4gPiAgI2RlZmluZSBWc3o1MTIgVnN6PVZTWjUxMg0KPiA+ DQo+ID4gKw0KPiA+ICAvLyBUaGUgRVZFWCBwdXJwb3NlIG9mIFN0YXRpY1JvdW5kaW5nIGFwcGVh cnMgb25seSB0b2dldGhlciB3aXRoIFNBRS4NCj4gPiBSZS11c2UgIC8vIHRoZSBiaXQgdG8gbWFy ayBjb21tdXRhdGl2ZSBWRVggZW5jb2RpbmdzIHdoZXJlIHN3YXBwaW5nDQo+ID4gdGhlIHNvdXJj ZSAgLy8gb3BlcmFuZHMgbWF5IGFsbG93IHRvIHN3aXRjaCBmcm9tIDMtYnl0ZSB0byAyLWJ5dGUg VkVYDQo+IGVuY29kaW5nLg0KPiANCj4gU3RyYXkgY2hhbmdlIChpbiBnZW5lcmFsIHBsZWFzZSBh dm9pZCBpbnRyb2R1Y2luZyBkb3VibGUgYmxhbmsgbGluZXMsIGFzIHRob3NlDQo+IG1ha2UgcGF0 Y2ggY29udGV4dCBsZXNzIHVzZWZ1bCkuDQo+IA0KRG9uZS4NCg0KVGhhbmtzLA0KTGlsaS4NCg0K DQo=