Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nwjiQ-0004oV-90 for pgsql-hackers@arkaria.postgresql.org; Thu, 02 Jun 2022 12:14:15 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nwjiP-0003V3-2y for pgsql-hackers@arkaria.postgresql.org; Thu, 02 Jun 2022 12:14:13 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nwjiO-0003Uu-5b for pgsql-hackers@lists.postgresql.org; Thu, 02 Jun 2022 12:14:12 +0000 Received: from esa13.fujitsucc.c3s2.iphmx.com ([68.232.156.96]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nwjiK-0007Vi-2M for pgsql-hackers@lists.postgresql.org; Thu, 02 Jun 2022 12:14:11 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1654172049; x=1685708049; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=suByxKwm84K1dANezSWbgJu8NM3AK0/jHpoId48V6Qc=; b=mm+SoyW0xpl0YChQcWOc/RL0joT2jkDhttjcPv6hh2+e23PDcahBhHnh b65Dlp8JmEXzJC2c9R3rO2Vtz94zL5dAMHt/djUhVV9q8nR6VfI+O8JuQ Ov780aDt30Ce2I9Dld4ebWjFmFNtq7Qyn5Wc0yFxJ2CSlfp2Dcx2nEfOp a4rwCup05SgyVyR59f7WpgwVjSHccF517/lacGT8+70w7LlzWexy1FIDv czyqwzeFOsu7WiA92kjr17ssWyAWCRqE3GX0TL7HbbE2/oDL6lUdCiq3y TF4Ru50RMeZZ6ZpQ25AAjMmZ1A8acOIJJSuH9qrC+CUj0x8IycYJdOrST Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10365"; a="56987276" X-IronPort-AV: E=Sophos;i="5.91,271,1647270000"; d="scan'208,223";a="56987276" Received: from mail-tycjpn01lp2176.outbound.protection.outlook.com (HELO JPN01-TYC-obe.outbound.protection.outlook.com) ([104.47.23.176]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Jun 2022 21:14:05 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZLnNdtbTS0BdYoRpi/Q//2wQ4NQW5zRmDmJsWWk67w8zStcZeFP/KcWFus4lMIwn6Jz7m+4jOB3slTjKUfnfHKpx5p6GK8rfsCkodj2cnOteVp2DZRWf37JIf2I1sT81rs51XxR2SbyVxMDElaDSpuXJlOp0umJ4ttdikPopPmJ1UNDjhle4OVbwbdX0ql2WPK78IhE/oM081ITh2sE8yV9c9wuoVEJIQ1akxosf+PrNUnHOwoZfaYy473cYWGdKJ/LDXlJXf3ZeZEupX6PWirpuFL7437L7mLZjKHdUOAHzSDxVaoUvfivmpvCnpGPMhavZETVsI8S3+kjaEJglXg== 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=AkdzlNorTKo0obc7NoYzMyoJm2G/XYGRnXIQo8PyCn8=; b=MJqEBL+TlNp/96bRtHU8aHk2rEJsGGd2yMZmWPbHeDGRWmZyUN9mOLt9AquYqy9jwQL2nI1HMcc1UWIl4NhrxC5X6PVbPxXswyr70ujLxku8SS0/0jxW5R4vb1nf40Qgm+HPd5S9k35ifItPchwJG9YS4uIFz9urGP/T2KvqkHihnYp7GSMU23asx75q/P/t9a8pOD9Tl4khF1O0sEYLRV3jGzyqZb19gCAmB0blOyHBUtj2Jkl0NAo2XDCs+XYudryRTZcxnHhLLDPETZe+oJsibgpg+ZWD2aBtcXGSKKADwqOI7cTATy8hTRLiI0ClPs5DW/eP62wf6+JYneLqAQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fujitsu.onmicrosoft.com; s=selector2-fujitsu-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=AkdzlNorTKo0obc7NoYzMyoJm2G/XYGRnXIQo8PyCn8=; b=LgSAP90K2/ofUydnnLPwK9NCy3UceHJXxa9snbClSowL7IzA/Jg9US7+/1m5I1XK3BYFt8wrxwegulmG67Jn5kkugUZ1tasWzcrRxDDnY29nJIrWsXQjMo2U+Z5eYMhJaMYcv6DtbTSnBqCEgVQIJMG3gwiLNWQRu2UQMAaUKV0= Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com (2603:1096:604:bb::12) by TYAPR01MB4000.jpnprd01.prod.outlook.com (2603:1096:404:c9::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5314.12; Thu, 2 Jun 2022 12:14:00 +0000 Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::fcd7:9667:ec81:d1d5]) by OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::fcd7:9667:ec81:d1d5%6]) with mapi id 15.20.5314.013; Thu, 2 Jun 2022 12:14:00 +0000 From: "houzj.fnst@fujitsu.com" To: Masahiko Sawada , Amit Kapila CC: Zheng Li , Japin Li , Alvaro Herrera , Dilip Kumar , rajesh singarapu , PostgreSQL Hackers Subject: RE: Support logical replication of DDLs Thread-Topic: Support logical replication of DDLs Thread-Index: AQHYJz33Pggarn88u0G0lS13R7uLfKy9TlgAgAVZmgCAAA2xAIABMlkAgACE3QCAAKgDAIAAduOAgABm6oCABIs+AIACG98AgBfo2QCABsLLgIAyhVqAgBOd9QCAAOYWgIAAPoOAgAUH2oCABQvawA== Date: Thu, 2 Jun 2022 12:14:00 +0000 Message-ID: References: <202203162206.7spggyktx63e@alvherre.pgsql> In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: yes X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: e36e253f-e0e0-4a5a-5b09-08da44916050 x-ms-traffictypediagnostic: TYAPR01MB4000:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: edDO3fTBjcerASU7HIdf+n8YpjTWBwTc/McguefzVN6EV7YC2xQizFcuoHA+GkCmZF8dAoG8XQlCsnvSSU3k/ERNFz3h707jPHFg+IjMyg28dfUSx95sANpCSb0G+jTlR2ewsfDLrUbZPwn10f4ToqZygz3kqNQtoS/dMiNKIh3OGCXZ2tHc2PnoeobT+FEHW5Jq0wAJ+S8SzcTO0F0LKbdIfwCMzQOJ8+UqPBaty7GvSgkYc0xJV+tpTBve3aqlMO9V3GOoBSZTDB0rkWHOGdG8e5zHlCnWIBbNfSwWJMsYn7EhGbYgvgJdzZFu2mH3CjpT5eCf989c4RXWSKDUNMKU8y6FgNi97FkSSwY5pvfFCB/EjCq3tWsaLSSWh7R32NWtk90d+9n53MtCL6yG4a6gzBLcrizhHEe+f4k+LbTiBhYCc62+3k23WO3doKbkSQd6mVI36yRkqjyuxOPsZWzfea4uUpj37IMt0lqYC4cG8UAXfzlzfWYi8nHysAdctuUjfhBMOKD5L7Pd9dUZr8SqdiJNxnon4SbzHyBoAQUnpeumcDQpF6kBfqlKVVSWaNb/zssIHS+N+1MPzZ+IXvLQvzrGuh7B4Vfh9RAtU3HUk08e5Lrg9tAvMdca/I13BXNv+ouxeMkRKl3YbWSNTOrQbA2xPeIQtnDxVGdMbD+CzDRNsUkUad91FRUAONZybWaay5LF44SC+fiSqt+GCg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS0PR01MB5716.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(4636009)(366004)(83380400001)(186003)(99936003)(86362001)(82960400001)(55016003)(38070700005)(122000001)(76116006)(66574015)(38100700002)(6506007)(7696005)(316002)(110136005)(66446008)(66556008)(66946007)(508600001)(64756008)(53546011)(71200400001)(2906002)(8676002)(66476007)(4326008)(52536014)(8936002)(5660300002)(26005)(54906003)(9686003)(33656002)(85182001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?c29QWVVzV2RmaGZWRnlLWG9XKzFKMVc1OE5wU0Z6Tlo3WkNGTWdROTUybmZK?= =?utf-8?B?Q3lqdGNvbFVpRU56bmpQYXRBZUZyN1JjaGt0MlJiUXhmTEgrN2NmdERJSk9k?= =?utf-8?B?dndiY1d5RnFJTExqczdjcGRsR3R1NzdmVGh6VXp2UHdYVGt2TVJMNUVBSmhC?= =?utf-8?B?ZWFFcnVCMnNzYU1GZHhWVjhaaC9QaTAwVENxYmxLeERRR0l3ZWIwM0ZWai9t?= =?utf-8?B?Y3R1cWdHVGNidnQ1UDNvWjBJRnFhUWJDaW4vMGpUWWQvcHp2L3lVYWZZa2gx?= =?utf-8?B?U1JURjBnVmZkT1RUby9iUVNSbndFZ1FjR2FNMVg5dTFnSFpyT3VxSDBTaWFF?= =?utf-8?B?QkJCTkNsaW9wb3F0SThXekVqN1ZmcnZrOWdNWW5VdEdVOW5kam1qZVVKV1Rv?= =?utf-8?B?YjgyOFVjamJsZGEvUkhVQWJ6U0p3RHpnckYrSGJOZzhZQm9SVFcxV201dnlC?= =?utf-8?B?Y0xWcjdVREIraXFZR3Rjb21nWThTWndiNFZmbnJPRWpsVzZMcVlrVXNvWEFv?= =?utf-8?B?QWVhbnk2RFRSTjRORWVoRGlCRHVhcnZCanNYQmszWW5reUszZG93d3Rtc2dy?= =?utf-8?B?KzZJelFnMEdyNTY2MnZsZDNCa2o0SzhkWEFmYUFwQWFhMTVzTzVZb0xzS1pB?= =?utf-8?B?c1AyV3RBU3k4bGluUWJOb0tOcXJUdkcycHUvM2VSb2VyMkZpZEVIN1JIdEk1?= =?utf-8?B?MHBKMnFXN2JmY0xQaktUazRnY2Z3TU5tVm1tc3hKRjVpWnJjNFpCRVFpZ2lZ?= =?utf-8?B?SEFRUnBzYnRkT2cyMGMzclowTHljbWRTc3VWbjZwMXFqV21kQTNXT3p1NWJ0?= =?utf-8?B?L0RSZ1hBU1lMdXZYeTdIM2ZUNy8wNUxhUmtPUmduMHpYaGlXQnpGQTlZZzZt?= =?utf-8?B?eElWTUNrNXZOdWVmckhVVXorUjRVK1pHMXQzcFJrZGN0VWxtenp4Nk5CTit6?= =?utf-8?B?R0o0djBuK2pWNVUxZ0U5M283UVp4OFlmQmNkeHhkejQ5MWdZKzlidlA5b2dZ?= =?utf-8?B?N212clgzVldKdU5Fa3dZRHRubDU0TGJwUHlacnBuWFIrMm9icVhtOWRaK3dp?= =?utf-8?B?MStRaktXamJrcHRHRis2Wnh1c2RlWjJDMmkrS2ZNTzErMi92aEtMejdqcC8x?= =?utf-8?B?Y25KelFudG9vaUZMUmpleFNJbkMrVTh4d3dxQThraXdudjR3djBTZnArUE13?= =?utf-8?B?K29TVk9WWENLYnA4RXF0Vm5lTVJzUVU3SzlzNEVwaTc0ditwOW5vNC8yQ1gy?= =?utf-8?B?VzE4TWczNVlwOFM0TEMwUUFraWVXNzVPaTB1NTdjb0xwVWs5TDFEZmhoRFd0?= =?utf-8?B?MFMyUmhhZDVKTFdYY0pWcGo3dnNZQmdWTzVHR0h0L1d4QjBTSU5lK3Y0VUNm?= =?utf-8?B?YUQyNm9LeDVtcERCQUZOUHJVSS9XYlJNQ0grQU5TQUpOajdrYXYzSUdoRXlq?= =?utf-8?B?M1JrWVpHWTJVWVduY3RNeitVSktGWnMrWSsyV2orZXZkNDdyc1FqZ3R4LzRT?= =?utf-8?B?SDFxZ2RZZWtvRytZSWlFS1QzU0ttYU1CTHpFMHVwdXk0NzZEN2gzNlJrT0Vv?= =?utf-8?B?YitPVmV3L2RkTDZnQ1lkeThIMHBtYXg0STBoci92dzRrb3Q4L0grVFVLWncv?= =?utf-8?B?TUgyN0xsVjlnbzlqQkwxVVd2dk1aeDNsSEVwcFArNUw5N1FuT0c1emN5RU94?= =?utf-8?B?RVhpQ2lTZlhOeit1WW54UUNwZ1R1UTBKTEtueHdnS3ZnWVV5eUx6dkVKeGRN?= =?utf-8?B?VkpPa3VQM0pvbDRaK1Mza3V0aDUxeUgzcEdTa3k3cWk4Nk9SUkFUYlFjem5w?= =?utf-8?B?bk5weW96OHd5M29YQkdBeDhReThOTVZHaHdhSVZjYU9YVGJGdFZUSnVUVjhX?= =?utf-8?B?bmxrckVhWk1xeG1mVjdGQkV6TW4rbHFSdk40anpPQVhKbmo5NUZQRHBha3U3?= =?utf-8?B?NWNUZjZtWTVQY0wxbVpsRG92T2RUYjlrSWx5TnBBZUI1YjF6dXlJUElEL0Fu?= =?utf-8?B?dFJwaW9ycXhNVXEzZVJxNStJd2VFaHhlWG1UQnpQT2Y2bEV3Zms3NXZQZGI4?= =?utf-8?B?SVpkYVZ5RFNFVXhyY1psa3dNMFVKaEhJNGNSWUUrU2xveERCQzErdlowS3E3?= =?utf-8?B?SmFDSmZwK3p6VERLN0RCOW5nU1JpcDhLWnJrZ2VHdHhaaE0vZXlERzFpdW1p?= =?utf-8?B?MCsrVmQwbGhMOTZISjZpeFRMc2hvVFN5dHU2VXNWbU9sblhYSXNBNEIrWGNr?= =?utf-8?B?dndzUjJKb2FoMzg0ckp6NTk3UEdZZTBnZ0NwZUZPSDYvQW1KaVVNZE1yUys0?= =?utf-8?B?MzRObExpbDN2a04xMkJRbzNCckJmNTcwZGRTQnVhVFBSNmR6c0l0QT09?= Content-Type: multipart/mixed; boundary="_004_OS0PR01MB571695EDF9EAB2422FBF2C1094DE9OS0PR01MB5716jpnp_" MIME-Version: 1.0 X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OS0PR01MB5716.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e36e253f-e0e0-4a5a-5b09-08da44916050 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Jun 2022 12:14:00.2547 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a19f121d-81e1-4858-a9d8-736e267fd4c7 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: wnZeiuxexLccO4gbNjMmdIgOU+OSYX1LJnQKQ8feKW8WjMaxujBq6AbUPkfyZyBZetX+700eGsEflxhlddAsAg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYAPR01MB4000 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_004_OS0PR01MB571695EDF9EAB2422FBF2C1094DE9OS0PR01MB5716jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gTW9uZGF5LCBNYXkgMzAsIDIwMjIgMjo1MiBQTSBNYXNhaGlrbyBTYXdhZGEgPHNhd2FkYS5t c2hrQGdtYWlsLmNvbT4gd3JvdGU6DQo+IA0KPiBPbiBGcmksIE1heSAyNywgMjAyMiBhdCAxMTow MyBBTSBBbWl0IEthcGlsYSA8YW1pdC5rYXBpbGExNkBnbWFpbC5jb20+IHdyb3RlOg0KPiA+DQo+ ID4gT24gRnJpLCBNYXkgMjcsIDIwMjIgYXQgMzo0OSBBTSBaaGVuZyBMaSA8emhlbmdsaTEwQGdt YWlsLmNvbT4gd3JvdGU6DQo+ID4gPg0KPiA+ID4gSGkgTWFzYWhpa28sDQo+ID4gPg0KPiA+ID4g PiBUaGFuayB5b3UgZm9yIHVwZGF0aW5nIHRoZSBwYXRjaGVzIQ0KPiA+ID4gPg0KPiA+ID4gPiBJ J3ZlIG5vdCBsb29rZWQgYXQgdGhlc2UgcGF0Y2hlcyBpbi1kZXB0aCB5ZXQgYnV0IHdpdGggdGhp cyBhcHByb2FjaCwNCj4gPiA+ID4gd2hhdCBkbyB5b3UgdGhpbmsgd2UgY2FuIGhhbmRsZSB0aGUg RERMIHN5bnRheCBkaWZmZXJlbmNlcyBiZXR3ZWVuDQo+ID4gPiA+IG1ham9yIHZlcnNpb25zPyBE REwgc3ludGF4IG9yIGJlaGF2aW9yIGNvdWxkIGJlIGNoYW5nZWQgYnkgZnV0dXJlDQo+ID4gPiA+ IGNoYW5nZXMgYW5kIEkgdGhpbmsgd2UgbmVlZCB0byBzb21laG93IGRlYWwgd2l0aCB0aGUgZGlm ZmVyZW5jZXMuIEZvcg0KPiA+ID4NCj4gPiA+ID4gZXhhbXBsZSwgaWYgdGhlIHVzZXIgdXNlcyBs b2dpY2FsIHJlcGxpY2F0aW9uIGZvciBtYWpvciB2ZXJzaW9uDQo+ID4gPiA+IHVwZ3JhZGUsIHRo ZSBwdWJsaXNoZXIgaXMgb2xkZXIgdGhhbiB0aGUgc3Vic2NyaWJlci4gV2UgbWlnaHQgaGF2ZSB0 bw0KPiA+ID4gPiByZXdyaXRlIHRoZSBEREwgYmVmb3JlIGFwcGx5aW5nIHRvIHRoZSBzdWJzY3Jp YmVyIGJlY2F1c2UgdGhlIERETA0KPiA+ID4gPiBleGVjdXRlZCBvbiB0aGUgcHVibGlzaGVyIG5v IGxvbmdlciB3b3JrIG9uIGEgbmV3IFBvc3RncmVTUUwgdmVyc2lvbg0KPiA+ID4NCj4gPiA+IEkg ZG9uJ3QgdGhpbmsgd2Ugd2lsbCBhbGxvdyB0aGlzIGtpbmQgb2Ygc2l0dWF0aW9uIHRvIGhhcHBl biBpbiB0aGUNCj4gPiA+IGZpcnN0IHBsYWNlIGZvcg0KPiA+ID4gYmFja3dhcmQgY29tcGF0aWJp bGl0eS4gSWYgYSBEREwgbm8gbG9uZ2VyIHdvcmtzIG9uIGEgbmV3IHZlcnNpb24gb2YNCj4gPiA+ IFBvc3RncmVTUUwsIHRoZSB1c2VyIHdpbGwgaGF2ZSB0byBjaGFuZ2UgdGhlIGFwcGxpY2F0aW9u IGNvZGUgYXMgd2VsbC4NCj4gPiA+IFNvIGV2ZW4gaWYgaXQgaGFwcGVucyBmb3INCj4gPiA+IHdo YXRldmVyIHJlYXNvbiwgd2UgY291bGQgZWl0aGVyDQo+ID4gPiAxLiBmYWlsIHRoZSBhcHBseSB3 b3JrZXIgYW5kIGxldCB0aGUgdXNlciBmaXggc3VjaCBEREwgYmVjYXVzZSB0aGV5J2xsDQo+ID4g PiBoYXZlIHRvIGZpeCB0aGUgYXBwbGljYXRpb24gY29kZSBhbnl3YXkgd2hlbiB0aGlzIGhhcHBl bnMuDQo+ID4gPiAyLiBhZGQgZ3VhcmQgcmFpbCBsb2dpYyBpbiB0aGUgYXBwbHkgd29ya2VyIHRv IGF1dG9tYXRpY2FsbHkgZml4IHN1Y2gNCj4gPiA+IERETCBpZiBwb3NzaWJsZSwga25vd2luZyB0 aGUgdmVyc2lvbiBvZiB0aGUgc291cmNlIGFuZCB0YXJnZXQuIFNpbWlsYXINCj4gPiA+IGxvZ2lj IG11c3QgaGF2ZSBiZWVuIGltcGxlbWVudGVkIGZvciBwZ19kdW1wL3Jlc3RvcmUvdXBncmFkZS4N Cj4gPiA+DQo+ID4gPiA+IG9yIHdlIG1pZ2h0IGhhdmUgdG8gYWRkIHNvbWUgb3B0aW9ucyB0byB0 aGUgRERMIGJlZm9yZSB0aGUgYXBwbGljYXRpb24NCj4gPiA+ID4gaW4gb3JkZXIgdG8ga2VlcCB0 aGUgc2FtZSBiZWhhdmlvci4gVGhpcyBzZWVtcyB0byByZXF1aXJlIGEgZGlmZmVyZW50DQo+ID4g PiA+IHNvbHV0aW9uIGZyb20gd2hhdCB0aGUgcGF0Y2ggZG9lcyBmb3IgdGhlIHByb2JsZW0geW91 IG1lbnRpb25lZCBzdWNoDQo+ID4gPg0KPiA+ID4gPiBhcyAiRERMIGludm9sdmluZyBtdWx0aXBs ZSB0YWJsZXMgd2hlcmUgb25seSBzb21lIHRhYmxlcyBhcmUNCj4gPiA+ID4gcmVwbGljYXRlZOKA nS4NCj4gPiA+DQo+ID4gPiBGaXJzdCBvZiBhbGwsIHRoaXMgY2FzZSBjYW4gb25seSBoYXBwZW4g d2hlbiB0aGUgY3VzdG9tZXIgY2hvb3NlcyB0bw0KPiA+ID4gb25seSByZXBsaWNhdGUgYSBzdWJz ZXQgb2YgdGhlIHRhYmxlcyBpbiBhIGRhdGFiYXNlIGluIHdoaWNoIGNhc2UNCj4gPiA+IHRhYmxl IGxldmVsIERETCByZXBsaWNhdGlvbiBpcyBjaG9zZW4gaW5zdGVhZCBvZiBkYXRhYmFzZSBsZXZl bCBEREwNCj4gPiA+IHJlcGxpY2F0aW9uICh3aGVyZSBhbGwgdGFibGVzDQo+ID4gPiBhbmQgRERM cyBhcmUgcmVwbGljYXRlZCkuIEkgdGhpbmsgdGhlIHNvbHV0aW9uIHdvdWxkIGJlOg0KPiA+ID4g MS4gbWFrZSBiZXN0IGVmZm9ydCB0byBkZXRlY3Qgc3VjaCBERExzIG9uIHRoZSBwdWJsaXNoZXIg YW5kIGF2b2lkDQo+ID4gPiBsb2dnaW5nIG9mIHN1Y2ggRERMcyBpbiB0YWJsZSBsZXZlbCBEREwg cmVwbGljYXRpb24uDQo+ID4gPiAyLiBhcHBseSB3b3JrZXIgd2lsbCBmYWlsIHRvIHJlcGxheSBz dWNoIGNvbW1hbmQgZHVlIHRvIG1pc3NpbmcNCj4gPiA+IG9iamVjdHMgaWYgc3VjaCBERExzIGRp ZG4ndCBnZXQgZmlsdGVyZWQgb24gdGhlIHB1Ymxpc2hlciBmb3Igc29tZQ0KPiA+ID4gcmVhc29u LiBUaGlzIHNob3VsZCBiZSByYXJlIGFuZCBJIHRoaW5rIGl0J3MgT0sgZXZlbiBpZiBpdCBoYXBw ZW5zLA0KPiA+ID4gd2UnbGwgZmluZCBvdXQNCj4gPiA+IHdoeSBhbmQgZml4IGl0Lg0KPiA+ID4N Cj4gPg0KPiA+IEZXSVcsIGJvdGggdGhlc2UgY2FzZXMgY291bGQgYmUgaGFuZGxlZCB3aXRoIHRo ZSBkZXBhcnNpbmcgYXBwcm9hY2gsDQo+ID4gYW5kIHRoZSBoYW5kbGluZyByZWxhdGVkIHRvIHRo ZSBkcm9wIG9mIG11bHRpcGxlIHRhYmxlcyB3aGVyZSBvbmx5IGENCj4gPiBmZXcgYXJlIHB1Ymxp c2hlZCBpcyBhbHJlYWR5IGRvbmUgaW4gdGhlIGxhc3QgUE9DIHBhdGNoIHNoYXJlZCBieSBBamlu DQo+ID4gWzFdLg0KPiA+DQo+IA0KPiBSaWdodC4gU28gSSdtIGluY2xpbmVkIHRvIHRoaW5rIHRo YXQgZGVwYXJzaW5nIGFwcHJvYWNoIGlzIGJldHRlciBmcm9tDQo+IHRoaXMgcG9pbnQgYXMgd2Vs bCBhcyB0aGUgcG9pbnQgbWVudGlvbmVkIGJ5IMOBbHZhcm8gYmVmb3JlWzFdLg0KDQpJIGFncmVl LiBPbmUgbW9yZSBwb2ludCBhYm91dCBkZXBhcnNpbmcgYXBwcm9hY2ggaXMgdGhhdCBpdCBjYW4g YWxzbw0KaGVscCB0byByZXBsaWNhdGUgQ1JFQVRFIFRBQkxFIEFTL1NFTEVDVCBJTlRPIGluIGEg YmV0dGVyIHdheS4NCg0KVGhlIG1haW4gaWRlYSBvZiByZXBsaWNhdGluZyB0aGUgQ1JFQVRFIFRB QkxFIEFTIGlzIHRoYXQgd2UgZGVwcmFzZSB0aGUgQ1JFQVRFDQpUQUJMRSBBUyBpbnRvIGEgc2lt cGxlIENSRUFURSBUQUJMRSh3aXRob3V0IHN1YnF1ZXJ5KSBjb21tYW5kIGFuZCBXQUwgbG9nIGl0 DQphZnRlciBjcmVhdGluZyB0aGUgdGFibGUgYW5kIGJlZm9yZSB3cml0aW5nIGRhdGEgaW50byB0 aGUgdGFibGUgYW5kIHJlcGxpY2F0ZQ0KdGhlIGluY29taW5nIHdyaXRlcyBsYXRlciBhcyBub3Jt YWwgSU5TRVJUcy4gSW4gdGhpcyBhcHBvcmFjaCwgd2UgZG9uJ3QgZXhlY3V0ZQ0KdGhlIHN1YnF1 ZXJ5IG9uIHN1YnNjcmliZXIgc28gdGhhdCBkb24ndCBuZWVkIHRvIG1ha2Ugc3VyZSBhbGwgdGhl IG9iamVjdHMNCnJlZmVyZW5jZWQgaW4gdGhlIHN1YnF1ZXJ5IGFsc28gZXhpc3RzIGluIHN1YnNj cmliZXIuIEFuZCBUaGlzIGFwcHJvYWNoIHdvcmtzDQpmb3IgYWxsIGtpbmQgb2YgY29tbWFuZHMo ZS5nLiBDUkFFVEUgVEFCTEUgQVMgW1NFTEVDVF1bRVhFQ1VURV1bVkFMVUVTXSkNCg0KT25lIHBy b2JsZW0gb2YgdGhpcyBhcHByb2FjaCBpcyB0aGF0IHdlIGNhbm5vdCB1c2UgdGhlIGN1cnJlbnQg dHJpZ2dlciB0bw0KZGVwYXJzZSBvciBXQUwgbG9nIHRoZSBDUkVBVEUgVEFCTEUuIEJlY2F1c2Ug bm9uZSBvZiB0aGUgZXZlbiB0cmlnZ2VyIGlzIGZpcmVkDQphZnRlciBjcmVhdGluZyB0aGUgdGFi bGUgYW5kIGJlZm9yZSBpbnNlcnRpbmcgdGhlIGRhdGEuIFRvIHNvbHZlIHRoaXMsIG9uZSBpZGVh DQppcyB0aGF0IHdlIGNvdWxkIGRpcmVjdGx5IGFkZCBzb21lIGNvZGUgYXQgdGhlIGVuZCBvZiBj cmVhdGVfY3Rhc19pbnRlcm5hbCgpIHRvDQpkZXBhcnNlIGFuZCBXQUwgbG9nIGl0LiBNb3Jlb3Zl ciwgd2UgY291bGQgZXZlbiBpbnRyb2R1Y2UgYSBuZXcgdHlwZSBvZiBldmVudA0KdHJpZ2dlcih0 YWJsZV9jcmVhdGUpIHdoaWNoIHdvdWxkIGJlIGZpcmVkIGF0IHRoZSBleHBlY3RlZCB0aW1pbmcg c28gdGhhdCB3ZQ0KY2FuIHVzZSB0aGUgdHJpZ2dlciBmdW5jdGlvbiB0byBkZXBhcnNlIGFuZCBX QUwgbG9nLiBJIGFtIG5vdCBzdXJlIHdoaWNoIHdheSBpcw0KYmV0dGVyLiBJIHRlbXBvcmFyaWx5 IHVzZSB0aGUgc2Vjb25kIGlkZWEgd2hpY2ggaW50cm9kdWNlIGEgbmV3IHR5cGUgZXZlbnQNCnRy aWdnZXIgaW4gdGhlIDAwMDMgUE9DIHBhdGNoLg0KDQpJbiB0aGUgUE9DIHBhdGNoLCB3ZSBkZXBh cnNlIHRoZSBjb21tYW5kIGluIHRoZSB0YWJsZV9jcmVhdGUgZXZlbnQgdHJpZ2dlciBhbmQNCldB TCBsb2cgdGhlIGRlcGFyc2VkIGpzb24gc3RyaW5nLiBUaGUgd2Fsc2VuZGVyIHdpbGwgc2VuZCB0 aGUgc3RyaW5nIHRvDQpzdWJzY3JpYmVyLiBBbmQgaW5jb21pbmcgSU5TRVJUcyB3aWxsIGFsc28g YmUgcmVwbGljYXRlZC4NCg0KQmVzdCByZWdhcmRzLA0KSG91IHpqDQoNCg0KDQo= --_004_OS0PR01MB571695EDF9EAB2422FBF2C1094DE9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v6-0001-Functions-to-deparse-DDL-commands.patch" Content-Description: v6-0001-Functions-to-deparse-DDL-commands.patch Content-Disposition: attachment; filename="v6-0001-Functions-to-deparse-DDL-commands.patch"; size=87814; creation-date="Thu, 02 Jun 2022 12:12:00 GMT"; modification-date="Thu, 02 Jun 2022 12:13:57 GMT" Content-Transfer-Encoding: base64 RnJvbSAyNzU1NDRiMWE3ZjdlNWQ2OGYyMmM2NmZmZDIxYjBjM2UyZGNjYzA3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IEZyaSwgMjcgTWF5IDIwMjIgMTM6NDc6MDUgKzA4MDAKU3ViamVjdDogW1BBVENI XSBGdW5jdGlvbnMgdG8gZGVwYXJzZSBEREwgY29tbWFuZHMuCgpUaGlzIHBhdGNoIHByb3ZpZGVz IEpTT04gYmxvYnMgcmVwcmVzZW50aW5nIERETCBjb21tYW5kcywgd2hpY2ggY2FuCmxhdGVyIGJl IHJlLXByb2Nlc3NlZCBpbnRvIHBsYWluIHN0cmluZ3MgYnkgd2VsbC1kZWZpbmVkIHNwcmludGYt bGlrZQpleHBhbnNpb24uIFRoZXNlIEpTT04gb2JqZWN0cyBhcmUgaW50ZW5kZWQgdG8gYWxsb3cg Zm9yIG1hY2hpbmUtZWRpdGluZyBvZgp0aGUgY29tbWFuZHMsIGJ5IHJlcGxhY2luZyBjZXJ0YWlu IG5vZGVzIHdpdGhpbiB0aGUgb2JqZWN0cy4KCk11Y2ggb2YgdGhlIGluZm9ybWF0aW9uIGluIHRo ZSBvdXRwdXQgYmxvYiBhY3R1YWxseSBjb21lcyBmcm9tIHN5c3RlbQpjYXRhbG9ncywgbm90IGZy b20gdGhlIGNvbW1hbmQgcGFyc2Ugbm9kZSwgYXMgaXQgaXMgaW1wb3NzaWJsZSB0byByZWxpYWJs eQpjb25zdHJ1Y3QgYSBmdWxseS1zcGVjaWZpZWQgY29tbWFuZCAoaS5lLiBvbmUgbm90IGRlcGVu ZGVudCBvbiBzZWFyY2hfcGF0aApldGMpIGxvb2tpbmcgb25seSBhdCB0aGUgcGFyc2Ugbm9kZS4K ClRoaXMgcHJvdmlkZXMgYmFzZSBmb3IgbG9naWNhbCByZXBsaWNhdGlvbiBvZiBEREwgc3RhdGVt ZW50cy4gQ3VycmVudGx5LAp0aGlzIHByb3ZpZGVzIHN1cHBvcnQgZm9yIENSRUFURSBUQUJMRS9B TFRFUiBUQUJMRS9EUk9QIFRBQkxFIHNwZWNpZmljCmZ1bmN0aW9ucy4gTm90ZSB0aGF0IHNvbWUg cmVjZW50bHkgaW50cm9kdWNlZCBERExzKGUuZy4gRERMcyByZWxhdGVkIHRvClBBUlRJVElPTkVE IFRBQkxFKSBhcmUgdW5zdXBwb3J0ZWQuIFdlIGNhbiBleHRlbmQgaXQgYXMgd2UgbmVlZCBtb3Jl CmZ1bmN0aW9uYWxpdHkgZm9yIERETCByZXBsaWNhdGlvbi4KLS0tCiBzcmMvYmFja2VuZC9jb21t YW5kcy9NYWtlZmlsZSAgICAgIHwgICAgMiArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9kZGxfZGVw YXJzZS5jIHwgMjE4MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy9i YWNrZW5kL2NvbW1hbmRzL2RkbF9qc29uLmMgICAgfCAgNzQ5ICsrKysrKysrKysrKysKIHNyYy9i YWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyAgfCAgICA5ICsKIHNyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHJvYy5kYXQgICAgfCAgICA3ICstCiBzcmMvaW5jbHVkZS90Y29wL2RkbF9kZXBhcnNl LmggICAgIHwgICAxMCArCiBzcmMvaW5jbHVkZS91dGlscy9ydWxldXRpbHMuaCAgICAgIHwgICAg MSArCiA3IGZpbGVzIGNoYW5nZWQsIDI5NTcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbF9kZXBhcnNlLmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9jb21tYW5kcy9kZGxfanNvbi5jCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvdGNvcC9kZGxfZGVwYXJzZS5oCgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtl ZmlsZQppbmRleCA0OGY3MzQ4Li4xNzFkZmIyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZQpAQCAtMjks NiArMjksOCBAQCBPQkpTID0gXAogCWNvcHl0by5vIFwKIAljcmVhdGVhcy5vIFwKIAlkYmNvbW1h bmRzLm8gXAorCWRkbF9kZXBhcnNlLm8gXAorCWRkbF9qc29uLm8gXAogCWRlZmluZS5vIFwKIAlk aXNjYXJkLm8gXAogCWRyb3BjbWRzLm8gXApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZGRsX2RlcGFyc2UuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbF9kZXBhcnNlLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjBjMDc3ZgotLS0gL2Rldi9udWxsCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbF9kZXBhcnNlLmMKQEAgLTAsMCArMSwyMTgwIEBA CisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBkZGxfZGVwYXJzZS5jCisgKgkgIEZ1bmN0aW9u cyB0byBjb252ZXJ0IHV0aWxpdHkgY29tbWFuZHMgdG8gbWFjaGluZS1wYXJzZWFibGUKKyAqCSAg cmVwcmVzZW50YXRpb24KKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyMiwg UG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdo dCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgor ICogTk9URVMKKyAqCisgKiBUaGlzIGlzIGludGVuZGVkIHRvIHByb3ZpZGUgSlNPTiBibG9icyBy ZXByZXNlbnRpbmcgRERMIGNvbW1hbmRzLCB3aGljaCBjYW4KKyAqIGxhdGVyIGJlIHJlLXByb2Nl c3NlZCBpbnRvIHBsYWluIHN0cmluZ3MgYnkgd2VsbC1kZWZpbmVkIHNwcmludGYtbGlrZQorICog ZXhwYW5zaW9uLiAgVGhlc2UgSlNPTiBvYmplY3RzIGFyZSBpbnRlbmRlZCB0byBhbGxvdyBmb3Ig bWFjaGluZS1lZGl0aW5nIG9mCisgKiB0aGUgY29tbWFuZHMsIGJ5IHJlcGxhY2luZyBjZXJ0YWlu IG5vZGVzIHdpdGhpbiB0aGUgb2JqZWN0cy4KKyAqCisgKiBNdWNoIG9mIHRoZSBpbmZvcm1hdGlv biBpbiB0aGUgb3V0cHV0IGJsb2IgYWN0dWFsbHkgY29tZXMgZnJvbSBzeXN0ZW0KKyAqIGNhdGFs b2dzLCBub3QgZnJvbSB0aGUgY29tbWFuZCBwYXJzZSBub2RlLCBhcyBpdCBpcyBpbXBvc3NpYmxl IHRvIHJlbGlhYmx5CisgKiBjb25zdHJ1Y3QgYSBmdWxseS1zcGVjaWZpZWQgY29tbWFuZCAoaS5l LiBvbmUgbm90IGRlcGVuZGVudCBvbiBzZWFyY2hfcGF0aAorICogZXRjKSBsb29raW5nIG9ubHkg YXQgdGhlIHBhcnNlIG5vZGUuCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tl bmQvY29tbWFuZHMvZGRsX2RlcGFyc2UuYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisj aW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgInRjb3AvZGRsX2RlcGFyc2UuaCIKKwor I2luY2x1ZGUgImFjY2Vzcy9hbWFwaS5oIgorI2luY2x1ZGUgImFjY2Vzcy90YWJsZS5oIgorI2lu Y2x1ZGUgImFjY2Vzcy9yZWxhdGlvbi5oIgorI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNlLmgi CisjaW5jbHVkZSAiY2F0YWxvZy9wZ19hdHRyaWJ1dGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3Bn X2NsYXNzLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb2xsYXRpb24uaCIKKyNpbmNsdWRlICJj YXRhbG9nL3BnX2NvbnN0cmFpbnQuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2luaGVyaXRzLmgi CisjaW5jbHVkZSAiY2F0YWxvZy9wZ19uYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3Bn X3R5cGUuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9kZWZyZW0uaCIKKyNpbmNsdWRlICJsaWIvaWxp c3QuaCIKKyNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmgiCisjaW5jbHVkZSAidXRp bHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9mbWdyb2lkcy5oIgorI2luY2x1ZGUgInV0 aWxzL2pzb25iLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRp bHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9yZWwuaCIKKyNpbmNsdWRlICJ1dGlscy9y dWxldXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgorCisKKy8qCisgKiBCZWZv cmUgdGhleSBhcmUgdHVybmVkIGludG8gSlNPTkIgcmVwcmVzZW50YXRpb24sIGVhY2ggY29tbWFu ZCBpcworICogcmVwcmVzZW50ZWQgYXMgYW4gb2JqZWN0IHRyZWUsIHVzaW5nIHRoZSBzdHJ1Y3Rz IGJlbG93LgorICovCit0eXBlZGVmIGVudW0KK3sKKwlPYmpUeXBlTnVsbCwKKwlPYmpUeXBlQm9v bCwKKwlPYmpUeXBlU3RyaW5nLAorCU9ialR5cGVBcnJheSwKKwlPYmpUeXBlSW50ZWdlciwKKwlP YmpUeXBlRmxvYXQsCisJT2JqVHlwZU9iamVjdAorfSBPYmpUeXBlOworCit0eXBlZGVmIHN0cnVj dCBPYmpUcmVlCit7CisJc2xpc3RfaGVhZAlwYXJhbXM7CisJaW50CQkJbnVtUGFyYW1zOworfSBP YmpUcmVlOworCit0eXBlZGVmIHN0cnVjdCBPYmpFbGVtCit7CisJY2hhcgkgICAqbmFtZTsKKwlP YmpUeXBlCQlvYmp0eXBlOworCisJdW5pb24KKwl7CisJCWJvb2wJCWJvb2xlYW47CisJCWNoYXIJ ICAgKnN0cmluZzsKKwkJaW50NjQJCWludGVnZXI7CisJCWZsb2F0OAkJZmx0OworCQlPYmpUcmVl CSAgICpvYmplY3Q7CisJCUxpc3QJICAgKmFycmF5OworCX0gdmFsdWU7CisJc2xpc3Rfbm9kZQlu b2RlOworfSBPYmpFbGVtOworCitzdGF0aWMgT2JqRWxlbSAqbmV3X251bGxfb2JqZWN0KHZvaWQp Oworc3RhdGljIE9iakVsZW0gKm5ld19ib29sX29iamVjdChib29sIHZhbHVlKTsKK3N0YXRpYyBP YmpFbGVtICpuZXdfc3RyaW5nX29iamVjdChjaGFyICp2YWx1ZSk7CitzdGF0aWMgT2JqRWxlbSAq bmV3X29iamVjdF9vYmplY3QoT2JqVHJlZSAqdmFsdWUpOworc3RhdGljIE9iakVsZW0gKm5ld19h cnJheV9vYmplY3QoTGlzdCAqYXJyYXkpOworc3RhdGljIE9iakVsZW0gKm5ld19pbnRlZ2VyX29i amVjdChpbnQ2NCB2YWx1ZSk7CitzdGF0aWMgT2JqRWxlbSAqbmV3X2Zsb2F0X29iamVjdChmbG9h dDggdmFsdWUpOworc3RhdGljIHZvaWQgYXBwZW5kX251bGxfb2JqZWN0KE9ialRyZWUgKnRyZWUs IGNoYXIgKm5hbWUpOworc3RhdGljIHZvaWQgYXBwZW5kX2Jvb2xfb2JqZWN0KE9ialRyZWUgKnRy ZWUsIGNoYXIgKm5hbWUsIGJvb2wgdmFsdWUpOworc3RhdGljIHZvaWQgYXBwZW5kX3N0cmluZ19v YmplY3QoT2JqVHJlZSAqdHJlZSwgY2hhciAqbmFtZSwgY2hhciAqdmFsdWUpOworc3RhdGljIHZv aWQgYXBwZW5kX29iamVjdF9vYmplY3QoT2JqVHJlZSAqdHJlZSwgY2hhciAqbmFtZSwgT2JqVHJl ZSAqdmFsdWUpOworc3RhdGljIHZvaWQgYXBwZW5kX2FycmF5X29iamVjdChPYmpUcmVlICp0cmVl LCBjaGFyICpuYW1lLCBMaXN0ICphcnJheSk7CitzdGF0aWMgaW5saW5lIHZvaWQgYXBwZW5kX3By ZW1hZGVfb2JqZWN0KE9ialRyZWUgKnRyZWUsIE9iakVsZW0gKmVsZW0pOworc3RhdGljIEpzb25i VmFsdWUgKm9ianRyZWVfdG9fanNvbmJfcmVjKE9ialRyZWUgKnRyZWUsIEpzb25iUGFyc2VTdGF0 ZSAqc3RhdGUpOworc3RhdGljIHZvaWQgZm9ybWF0X3R5cGVfZGV0YWlsZWQoT2lkIHR5cGVfb2lk LCBpbnQzMiB0eXBlbW9kLAorCQkJCQkgT2lkICpuc3BpZCwgY2hhciAqKnR5cG5hbWUsIGNoYXIg Kip0eXBlbW9kc3RyLAorCQkJCQkgYm9vbCAqdHlwYXJyYXkpOworc3RhdGljIGNoYXIgKnByaW50 VHlwbW9kKGNvbnN0IGNoYXIgKnR5cG5hbWUsIGludDMyIHR5cG1vZCwgT2lkIHR5cG1vZG91dCk7 CisKK3N0YXRpYyBjaGFyICpSZWxhdGlvbkdldENvbHVtbkRlZmF1bHQoUmVsYXRpb24gcmVsLCBB dHRyTnVtYmVyIGF0dG5vLCBMaXN0ICpkcGNvbnRleHQpOworCisvKgorICogU2ltaWxhciB0byBm b3JtYXRfdHlwZV9pbnRlcm5hbCwgZXhjZXB0IHdlIHJldHVybiBlYWNoIGJpdCBvZiBpbmZvcm1h dGlvbgorICogc2VwYXJhdGVseToKKyAqCisgKiAtIG5zcGlkIGlzIHRoZSBzY2hlbWEgT0lELiAg Rm9yIGNlcnRhaW4gU1FMLXN0YW5kYXJkIHR5cGVzIHdoaWNoIGhhdmUgd2VpcmQKKyAqICAgdHlw bW9kIHJ1bGVzLCB3ZSByZXR1cm4gSW52YWxpZE9pZDsgY2FsbGVyIGlzIGV4cGVjdGVkIHRvIG5v dCBzY2hlbWEtCisgKiAgIHF1YWxpZnkgdGhlIG5hbWUgbm9yIGFkZCBxdW90ZXMgdG8gdGhlIHR5 cGUgbmFtZSBpbiB0aGlzIGNhc2UuCisgKgorICogLSB0eXBlbmFtZSBpcyBzZXQgdG8gdGhlIHR5 cGUgbmFtZSwgd2l0aG91dCBxdW90ZXMKKyAqCisgKiAtIHR5cG1vZCBpcyBzZXQgdG8gdGhlIHR5 cGVtb2QsIGlmIGFueSwgYXMgYSBzdHJpbmcgd2l0aCBwYXJlbnMKKyAqCisgKiAtIHR5cGFycmF5 IGluZGljYXRlcyB3aGV0aGVyIFtdcyBtdXN0IGJlIGFkZGVkCisgKgorICogV2UgZG9uJ3QgdHJ5 IHRvIGRlY29kZSB0eXBlIG5hbWVzIHRvIHRoZWlyIHN0YW5kYXJkLW1hbmRhdGVkIG5hbWVzLCBl eGNlcHQKKyAqIGluIHRoZSBjYXNlcyBvZiB0eXBlcyB3aXRoIHVudXN1YWwgdHlwbW9kIHJ1bGVz LgorICovCitzdGF0aWMgdm9pZAorZm9ybWF0X3R5cGVfZGV0YWlsZWQoT2lkIHR5cGVfb2lkLCBp bnQzMiB0eXBlbW9kLAorCQkJCQkgT2lkICpuc3BpZCwgY2hhciAqKnR5cG5hbWUsIGNoYXIgKip0 eXBlbW9kc3RyLAorCQkJCQkgYm9vbCAqdHlwYXJyYXkpCit7CisJSGVhcFR1cGxlCXR1cGxlOwor CUZvcm1fcGdfdHlwZSB0eXBlZm9ybTsKKwlPaWQJCQlhcnJheV9iYXNlX3R5cGU7CisKKwl0dXBs ZSA9IFNlYXJjaFN5c0NhY2hlMShUWVBFT0lELCBPYmplY3RJZEdldERhdHVtKHR5cGVfb2lkKSk7 CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxv b2t1cCBmYWlsZWQgZm9yIHR5cGUgJXUiLCB0eXBlX29pZCk7CisKKwl0eXBlZm9ybSA9IChGb3Jt X3BnX3R5cGUpIEdFVFNUUlVDVCh0dXBsZSk7CisKKwkvKgorCSAqIFNwZWNpYWwtY2FzZSBjcm9j ayBmb3IgdHlwZXMgd2l0aCBzdHJhbmdlIHR5cG1vZCBydWxlcy4KKwkgKi8KKwlpZiAodHlwZV9v aWQgPT0gSU5URVJWQUxPSUQgfHwKKwkJdHlwZV9vaWQgPT0gVElNRVNUQU1QT0lEIHx8CisJCXR5 cGVfb2lkID09IFRJTUVTVEFNUFRaT0lEIHx8CisJCXR5cGVfb2lkID09IFRJTUVPSUQgfHwKKwkJ dHlwZV9vaWQgPT0gVElNRVRaT0lEKQorCXsKKwkJKnR5cGFycmF5ID0gZmFsc2U7CisKK3BlY3Vs aWFyX3R5cG1vZDoKKwkJc3dpdGNoICh0eXBlX29pZCkKKwkJeworCQkJY2FzZSBJTlRFUlZBTE9J RDoKKwkJCQkqdHlwbmFtZSA9IHBzdHJkdXAoIklOVEVSVkFMIik7CisJCQkJYnJlYWs7CisJCQlj YXNlIFRJTUVTVEFNUFRaT0lEOgorCQkJCWlmICh0eXBlbW9kIDwgMCkKKwkJCQkJKnR5cG5hbWUg PSBwc3RyZHVwKCJUSU1FU1RBTVAgV0lUSCBUSU1FIFpPTkUiKTsKKwkJCQllbHNlCisJCQkJCSp0 eXBuYW1lID0gcHN0cmR1cCgiVElNRVNUQU1QIik7CisJCQkJYnJlYWs7CisJCQkJLyogb3RoZXJ3 aXNlLCBXSVRIIFRaIGlzIGFkZGVkIGJ5IHR5cG1vZCwgc28gZmFsbCB0aHJvdWdoICovCisJCQlj YXNlIFRJTUVTVEFNUE9JRDoKKwkJCQkqdHlwbmFtZSA9IHBzdHJkdXAoIlRJTUVTVEFNUCIpOwor CQkJCWJyZWFrOworCQkJY2FzZSBUSU1FVFpPSUQ6CisJCQkJaWYgKHR5cGVtb2QgPCAwKQorCQkJ CQkqdHlwbmFtZSA9IHBzdHJkdXAoIlRJTUUgV0lUSCBUSU1FIFpPTkUiKTsKKwkJCQllbHNlCisJ CQkJCSp0eXBuYW1lID0gcHN0cmR1cCgiVElNRSIpOworCQkJCWJyZWFrOworCQkJCS8qIG90aGVy d2lzZSwgV0lUSCBUWiBpcyBhZGRlZCBieSB0eXBtb2RlLCBzbyBmYWxsIHRocm91Z2ggKi8KKwkJ CWNhc2UgVElNRU9JRDoKKwkJCQkqdHlwbmFtZSA9IHBzdHJkdXAoIlRJTUUiKTsKKwkJCQlicmVh azsKKwkJfQorCQkqbnNwaWQgPSBJbnZhbGlkT2lkOworCisJCWlmICh0eXBlbW9kID49IDApCisJ CQkqdHlwZW1vZHN0ciA9IHByaW50VHlwbW9kKCIiLCB0eXBlbW9kLCB0eXBlZm9ybS0+dHlwbW9k b3V0KTsKKwkJZWxzZQorCQkJKnR5cGVtb2RzdHIgPSBwc3RyZHVwKCIiKTsKKworCQlSZWxlYXNl U3lzQ2FjaGUodHVwbGUpOworCQlyZXR1cm47CisJfQorCisJLyoKKwkgKiBDaGVjayBpZiBpdCdz IGEgcmVndWxhciAodmFyaWFibGUgbGVuZ3RoKSBhcnJheSB0eXBlLiAgQXMgYWJvdmUsCisJICog Zml4ZWQtbGVuZ3RoIGFycmF5IHR5cGVzIHN1Y2ggYXMgIm5hbWUiIHNob3VsZG4ndCBnZXQgZGVj b25zdHJ1Y3RlZC4KKwkgKi8KKwlhcnJheV9iYXNlX3R5cGUgPSB0eXBlZm9ybS0+dHlwZWxlbTsK KworCWlmIChhcnJheV9iYXNlX3R5cGUgIT0gSW52YWxpZE9pZCAmJgorCQl0eXBlZm9ybS0+dHlw c3RvcmFnZSAhPSAncCcpCisJeworCQkvKiBTd2l0Y2ggb3VyIGF0dGVudGlvbiB0byB0aGUgYXJy YXkgZWxlbWVudCB0eXBlICovCisJCVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7CisJCXR1cGxlID0g U2VhcmNoU3lzQ2FjaGUxKFRZUEVPSUQsIE9iamVjdElkR2V0RGF0dW0oYXJyYXlfYmFzZV90eXBl KSk7CisJCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCisJCQllbG9nKEVSUk9SLCAiY2Fj aGUgbG9va3VwIGZhaWxlZCBmb3IgdHlwZSAldSIsIHR5cGVfb2lkKTsKKworCQl0eXBlZm9ybSA9 IChGb3JtX3BnX3R5cGUpIEdFVFNUUlVDVCh0dXBsZSk7CisJCXR5cGVfb2lkID0gYXJyYXlfYmFz ZV90eXBlOworCQkqdHlwYXJyYXkgPSB0cnVlOworCisJCS8qCisJCSAqIElmIGl0J3MgYW4gYXJy YXkgb2Ygb25lIG9mIHRoZSB0eXBlcyB3aXRoIHNwZWNpYWwgdHlwbW9kIHJ1bGVzLAorCQkgKiBo YXZlIHRoZSBlbGVtZW50IHR5cGUgYmUgcHJvY2Vzc2VkIGFzIGFib3ZlLCBidXQgbm93IHdpdGgg dHlwYXJyYXkKKwkJICogc2V0IHRvIHRydWUuCisJCSAqLworCQlpZiAodHlwZV9vaWQgPT0gSU5U RVJWQUxPSUQgfHwKKwkJCXR5cGVfb2lkID09IFRJTUVTVEFNUFRaT0lEIHx8CisJCQl0eXBlX29p ZCA9PSBUSU1FU1RBTVBPSUQgfHwKKwkJCXR5cGVfb2lkID09IFRJTUVUWk9JRCB8fAorCQkJdHlw ZV9vaWQgPT0gVElNRU9JRCkKKwkJCWdvdG8gcGVjdWxpYXJfdHlwbW9kOworCX0KKwllbHNlCisJ CSp0eXBhcnJheSA9IGZhbHNlOworCisJKm5zcGlkID0gdHlwZWZvcm0tPnR5cG5hbWVzcGFjZTsK KwkqdHlwbmFtZSA9IHBzdHJkdXAoTmFtZVN0cih0eXBlZm9ybS0+dHlwbmFtZSkpOworCisJaWYg KHR5cGVtb2QgPj0gMCkKKwkJKnR5cGVtb2RzdHIgPSBwcmludFR5cG1vZCgiIiwgdHlwZW1vZCwg dHlwZWZvcm0tPnR5cG1vZG91dCk7CisJZWxzZQorCQkqdHlwZW1vZHN0ciA9IHBzdHJkdXAoIiIp OworCisJUmVsZWFzZVN5c0NhY2hlKHR1cGxlKTsKK30KKworLyoKKyAqIEFkZCB0eXBtb2QgZGVj b3JhdGlvbiB0byB0aGUgYmFzaWMgdHlwZSBuYW1lCisgKi8KK3N0YXRpYyBjaGFyICoKK3ByaW50 VHlwbW9kKGNvbnN0IGNoYXIgKnR5cG5hbWUsIGludDMyIHR5cG1vZCwgT2lkIHR5cG1vZG91dCkK K3sKKwljaGFyCSAgICpyZXM7CisKKwkvKiBTaG91bGRuJ3QgYmUgY2FsbGVkIGlmIHR5cG1vZCBp cyAtMSAqLworCUFzc2VydCh0eXBtb2QgPj0gMCk7CisKKwlpZiAodHlwbW9kb3V0ID09IEludmFs aWRPaWQpCisJeworCQkvKiBEZWZhdWx0IGJlaGF2aW9yOiBqdXN0IHByaW50IHRoZSBpbnRlZ2Vy IHR5cG1vZCB3aXRoIHBhcmVucyAqLworCQlyZXMgPSBwc3ByaW50ZigiJXMoJWQpIiwgdHlwbmFt ZSwgKGludCkgdHlwbW9kKTsKKwl9CisJZWxzZQorCXsKKwkJLyogVXNlIHRoZSB0eXBlLXNwZWNp ZmljIHR5cG1vZG91dCBwcm9jZWR1cmUgKi8KKwkJY2hhcgkgICAqdG1zdHI7CisKKwkJdG1zdHIg PSBEYXR1bUdldENTdHJpbmcoT2lkRnVuY3Rpb25DYWxsMSh0eXBtb2RvdXQsCisJCQkJCQkJCQkJ CQkgSW50MzJHZXREYXR1bSh0eXBtb2QpKSk7CisJCXJlcyA9IHBzcHJpbnRmKCIlcyVzIiwgdHlw bmFtZSwgdG1zdHIpOworCX0KKworCXJldHVybiByZXM7Cit9CisKKy8qCisgKiBPYnRhaW4gdGhl IGRlcGFyc2VkIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBnaXZlbiBjb2x1bW4gb2YgdGhlIGdpdmVu IHRhYmxlLgorICoKKyAqIENhbGxlciBtdXN0IGhhdmUgc2V0IGEgY29ycmVjdCBkZXBhcnNlIGNv bnRleHQuCisgKi8KK3N0YXRpYyBjaGFyICoKK1JlbGF0aW9uR2V0Q29sdW1uRGVmYXVsdChSZWxh dGlvbiByZWwsIEF0dHJOdW1iZXIgYXR0bm8sIExpc3QgKmRwY29udGV4dCkKK3sKKwlOb2RlICpk ZWZ2YWw7CisJY2hhciAqZGVmc3RyOworCisJZGVmdmFsID0gYnVpbGRfY29sdW1uX2RlZmF1bHQo cmVsLCBhdHRubyk7CisJZGVmc3RyID0gZGVwYXJzZV9leHByZXNzaW9uKGRlZnZhbCwgZHBjb250 ZXh0LCBmYWxzZSwgZmFsc2UpOworCisJcmV0dXJuIGRlZnN0cjsKK30KKworLyoKKyAqIEFsbG9j YXRlIGEgbmV3IG9iamVjdCB0cmVlIHRvIHN0b3JlIHBhcmFtZXRlciB2YWx1ZXMuCisgKi8KK3N0 YXRpYyBPYmpUcmVlICoKK25ld19vYmp0cmVlKHZvaWQpCit7CisJT2JqVHJlZSAgICAqcGFyYW1z OworCisJcGFyYW1zID0gcGFsbG9jKHNpemVvZihPYmpUcmVlKSk7CisJcGFyYW1zLT5udW1QYXJh bXMgPSAwOworCXNsaXN0X2luaXQoJnBhcmFtcy0+cGFyYW1zKTsKKworCXJldHVybiBwYXJhbXM7 Cit9CisKKy8qCisgKiBBbGxvY2F0ZSBhIG5ldyBvYmplY3QgdHJlZSB0byBzdG9yZSBwYXJhbWV0 ZXIgdmFsdWVzIC0tIHZhcmFyZ3MgdmVyc2lvbi4KKyAqCisgKiBUaGUgImZtdCIgYXJndW1lbnQg aXMgdXNlZCB0byBhcHBlbmQgYXMgYSAiZm10IiBlbGVtZW50IGluIHRoZSBvdXRwdXQgYmxvYi4K KyAqIG51bW9ianMgaW5kaWNhdGVzIHRoZSBudW1iZXIgb2YgZXh0cmEgZWxlbWVudHMgdG8gYXBw ZW5kOyBmb3IgZWFjaCBvbmUsIGEKKyAqIG5hbWUgKHN0cmluZyksIHR5cGUgKGZyb20gdGhlIE9i alR5cGUgZW51bSkgYW5kIHZhbHVlIG11c3QgYmUgc3VwcGxpZWQuICBUaGUKKyAqIHZhbHVlIG11 c3QgbWF0Y2ggdGhlIHR5cGUgZ2l2ZW47IGZvciBpbnN0YW5jZSwgT2JqVHlwZUludGVnZXIgcmVx dWlyZXMgYW4KKyAqIGludDY0LCBPYmpUeXBlU3RyaW5nIHJlcXVpcmVzIGEgY2hhciAqLCBPYmpU eXBlQXJyYXkgcmVxdWlyZXMgYSBsaXN0IChvZgorICogT2JqRWxlbSksIE9ialR5cGVPYmplY3Qg cmVxdWlyZXMgYW4gT2JqVHJlZSwgYW5kIHNvIG9uLiAgRWFjaCBlbGVtZW50IHR5cGUgKgorICog bXVzdCBtYXRjaCB0aGUgY29udmVyc2lvbiBzcGVjaWZpZXIgZ2l2ZW4gaW4gdGhlIGZvcm1hdCBz dHJpbmcsIGFzIGRlc2NyaWJlZAorICogaW4gZGRsX2RlcGFyc2VfZXhwYW5kX2NvbW1hbmQsIHEu di4KKyAqCisgKiBOb3RlIHdlIGRvbid0IGhhdmUgdGhlIGx1eHVyeSBvZiBzcHJpbnRmLWxpa2Ug Y29tcGlsZXIgd2FybmluZ3MgZm9yCisgKiBtYWxmb3JtZWQgYXJndW1lbnQgbGlzdHMuCisgKi8K K3N0YXRpYyBPYmpUcmVlICoKK25ld19vYmp0cmVlX1ZBKGNoYXIgKmZtdCwgaW50IG51bW9ianMs Li4uKQoreworCU9ialRyZWUgICAgKnRyZWU7CisJdmFfbGlzdAkJYXJnczsKKwlpbnQJCQlpOwor CisJLyogU2V0IHVwIHRoZSB0b3BsZXZlbCBvYmplY3QgYW5kIGl0cyAiZm10IiAqLworCXRyZWUg PSBuZXdfb2JqdHJlZSgpOworCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHRyZWUsICJmbXQiLCBmbXQp OworCisJLyogQW5kIHByb2Nlc3MgdGhlIGdpdmVuIHZhcmFyZ3MgKi8KKwl2YV9zdGFydChhcmdz LCBudW1vYmpzKTsKKwlmb3IgKGkgPSAwOyBpIDwgbnVtb2JqczsgaSsrKQorCXsKKwkJY2hhcgkg ICAqbmFtZTsKKwkJT2JqVHlwZQkJdHlwZTsKKwkJT2JqRWxlbQkgICAqZWxlbTsKKworCQluYW1l ID0gdmFfYXJnKGFyZ3MsIGNoYXIgKik7CisJCXR5cGUgPSB2YV9hcmcoYXJncywgT2JqVHlwZSk7 CisKKwkJLyoKKwkJICogRm9yIGFsbCBvdGhlciBwYXJhbSB0eXBlcyB0aGVyZSBtdXN0IGJlIGEg dmFsdWUgaW4gdGhlIHZhcmFyZ3MuCisJCSAqIEZldGNoIGl0IGFuZCBhZGQgdGhlIGZ1bGx5IGZv cm1lZCBzdWJvYmplY3QgaW50byB0aGUgbWFpbiBvYmplY3QuCisJCSAqLworCQlzd2l0Y2ggKHR5 cGUpCisJCXsKKwkJCWNhc2UgT2JqVHlwZUJvb2w6CisJCQkJZWxlbSA9IG5ld19ib29sX29iamVj dCh2YV9hcmcoYXJncywgaW50KSk7CisJCQkJYnJlYWs7CisJCQljYXNlIE9ialR5cGVTdHJpbmc6 CisJCQkJZWxlbSA9IG5ld19zdHJpbmdfb2JqZWN0KHZhX2FyZyhhcmdzLCBjaGFyICopKTsKKwkJ CQlicmVhazsKKwkJCWNhc2UgT2JqVHlwZU9iamVjdDoKKwkJCQllbGVtID0gbmV3X29iamVjdF9v YmplY3QodmFfYXJnKGFyZ3MsIE9ialRyZWUgKikpOworCQkJCWJyZWFrOworCQkJY2FzZSBPYmpU eXBlQXJyYXk6CisJCQkJZWxlbSA9IG5ld19hcnJheV9vYmplY3QodmFfYXJnKGFyZ3MsIExpc3Qg KikpOworCQkJCWJyZWFrOworCQkJY2FzZSBPYmpUeXBlSW50ZWdlcjoKKwkJCQllbGVtID0gbmV3 X2ludGVnZXJfb2JqZWN0KHZhX2FyZyhhcmdzLCBpbnQ2NCkpOworCQkJCWJyZWFrOworCQkJY2Fz ZSBPYmpUeXBlRmxvYXQ6CisJCQkJZWxlbSA9IG5ld19mbG9hdF9vYmplY3QodmFfYXJnKGFyZ3Ms IGRvdWJsZSkpOworCQkJCWJyZWFrOworCQkJY2FzZSBPYmpUeXBlTnVsbDoKKwkJCQkvKiBOdWxs IHBhcmFtcyBkb24ndCBoYXZlIGEgdmFsdWUgKG9idmlvdXNseSkgKi8KKwkJCQllbGVtID0gbmV3 X251bGxfb2JqZWN0KCk7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJST1Is ICJpbnZhbGlkIE9ialRyZWUgZWxlbWVudCB0eXBlICVkIiwgdHlwZSk7CisJCX0KKworCQllbGVt LT5uYW1lID0gbmFtZTsKKwkJYXBwZW5kX3ByZW1hZGVfb2JqZWN0KHRyZWUsIGVsZW0pOworCX0K KworCXZhX2VuZChhcmdzKTsKKwlyZXR1cm4gdHJlZTsKK30KKworLyogQWxsb2NhdGUgYSBuZXcg cGFyYW1ldGVyIHdpdGggYSBOVUxMIHZhbHVlICovCitzdGF0aWMgT2JqRWxlbSAqCituZXdfbnVs bF9vYmplY3Qodm9pZCkKK3sKKwlPYmpFbGVtICAgICpwYXJhbTsKKworCXBhcmFtID0gcGFsbG9j MChzaXplb2YoT2JqRWxlbSkpOworCisJcGFyYW0tPm5hbWUgPSBOVUxMOworCXBhcmFtLT5vYmp0 eXBlID0gT2JqVHlwZU51bGw7CisKKwlyZXR1cm4gcGFyYW07Cit9CisKKy8qIEFwcGVuZCBhIE5V TEwgb2JqZWN0IHRvIGEgdHJlZSAqLworc3RhdGljIHZvaWQKK2FwcGVuZF9udWxsX29iamVjdChP YmpUcmVlICp0cmVlLCBjaGFyICpuYW1lKQoreworCU9iakVsZW0gICAgKnBhcmFtOworCisJcGFy YW0gPSBuZXdfbnVsbF9vYmplY3QoKTsKKwlwYXJhbS0+bmFtZSA9IG5hbWU7CisJYXBwZW5kX3By ZW1hZGVfb2JqZWN0KHRyZWUsIHBhcmFtKTsKK30KKworLyogQWxsb2NhdGUgYSBuZXcgYm9vbGVh biBwYXJhbWV0ZXIgKi8KK3N0YXRpYyBPYmpFbGVtICoKK25ld19ib29sX29iamVjdChib29sIHZh bHVlKQoreworCU9iakVsZW0gICAgKnBhcmFtOworCisJcGFyYW0gPSBwYWxsb2MwKHNpemVvZihP YmpFbGVtKSk7CisJcGFyYW0tPm5hbWUgPSBOVUxMOworCXBhcmFtLT5vYmp0eXBlID0gT2JqVHlw ZUJvb2w7CisJcGFyYW0tPnZhbHVlLmJvb2xlYW4gPSB2YWx1ZTsKKworCXJldHVybiBwYXJhbTsK K30KKworLyogQXBwZW5kIGEgYm9vbGVhbiBwYXJhbWV0ZXIgdG8gYSB0cmVlICovCitzdGF0aWMg dm9pZAorYXBwZW5kX2Jvb2xfb2JqZWN0KE9ialRyZWUgKnRyZWUsIGNoYXIgKm5hbWUsIGJvb2wg dmFsdWUpCit7CisJT2JqRWxlbSAgICAqcGFyYW07CisKKwlwYXJhbSA9IG5ld19ib29sX29iamVj dCh2YWx1ZSk7CisJcGFyYW0tPm5hbWUgPSBuYW1lOworCWFwcGVuZF9wcmVtYWRlX29iamVjdCh0 cmVlLCBwYXJhbSk7Cit9CisKKy8qIEFsbG9jYXRlIGEgbmV3IHN0cmluZyBvYmplY3QgKi8KK3N0 YXRpYyBPYmpFbGVtICoKK25ld19zdHJpbmdfb2JqZWN0KGNoYXIgKnZhbHVlKQoreworCU9iakVs ZW0gICAgKnBhcmFtOworCisJQXNzZXJ0KHZhbHVlKTsKKworCXBhcmFtID0gcGFsbG9jMChzaXpl b2YoT2JqRWxlbSkpOworCXBhcmFtLT5uYW1lID0gTlVMTDsKKwlwYXJhbS0+b2JqdHlwZSA9IE9i alR5cGVTdHJpbmc7CisJcGFyYW0tPnZhbHVlLnN0cmluZyA9IHZhbHVlOworCisJcmV0dXJuIHBh cmFtOworfQorCisvKgorICogQXBwZW5kIGEgc3RyaW5nIHBhcmFtZXRlciB0byBhIHRyZWUuCisg Ki8KK3N0YXRpYyB2b2lkCithcHBlbmRfc3RyaW5nX29iamVjdChPYmpUcmVlICp0cmVlLCBjaGFy ICpuYW1lLCBjaGFyICp2YWx1ZSkKK3sKKwlPYmpFbGVtCSAgICpwYXJhbTsKKworCUFzc2VydChu YW1lKTsKKwlwYXJhbSA9IG5ld19zdHJpbmdfb2JqZWN0KHZhbHVlKTsKKwlwYXJhbS0+bmFtZSA9 IG5hbWU7CisJYXBwZW5kX3ByZW1hZGVfb2JqZWN0KHRyZWUsIHBhcmFtKTsKK30KKworc3RhdGlj IE9iakVsZW0gKgorbmV3X2ludGVnZXJfb2JqZWN0KGludDY0IHZhbHVlKQoreworCU9iakVsZW0J ICAgKnBhcmFtOworCisJcGFyYW0gPSBwYWxsb2MwKHNpemVvZihPYmpFbGVtKSk7CisJcGFyYW0t Pm5hbWUgPSBOVUxMOworCXBhcmFtLT5vYmp0eXBlID0gT2JqVHlwZUludGVnZXI7CisJcGFyYW0t PnZhbHVlLmludGVnZXIgPSB2YWx1ZTsKKworCXJldHVybiBwYXJhbTsKK30KKworc3RhdGljIE9i akVsZW0gKgorbmV3X2Zsb2F0X29iamVjdChmbG9hdDggdmFsdWUpCit7CisJT2JqRWxlbQkgICAq cGFyYW07CisKKwlwYXJhbSA9IHBhbGxvYzAoc2l6ZW9mKE9iakVsZW0pKTsKKwlwYXJhbS0+bmFt ZSA9IE5VTEw7CisJcGFyYW0tPm9ianR5cGUgPSBPYmpUeXBlRmxvYXQ7CisJcGFyYW0tPnZhbHVl LmZsdCA9IHZhbHVlOworCisJcmV0dXJuIHBhcmFtOworfQorCisvKiBBbGxvY2F0ZSBhIG5ldyBv YmplY3QgcGFyYW1ldGVyICovCitzdGF0aWMgT2JqRWxlbSAqCituZXdfb2JqZWN0X29iamVjdChP YmpUcmVlICp2YWx1ZSkKK3sKKwlPYmpFbGVtICAgICpwYXJhbTsKKworCXBhcmFtID0gcGFsbG9j MChzaXplb2YoT2JqRWxlbSkpOworCXBhcmFtLT5uYW1lID0gTlVMTDsKKwlwYXJhbS0+b2JqdHlw ZSA9IE9ialR5cGVPYmplY3Q7CisJcGFyYW0tPnZhbHVlLm9iamVjdCA9IHZhbHVlOworCisJcmV0 dXJuIHBhcmFtOworfQorCisvKiBBcHBlbmQgYW4gb2JqZWN0IHBhcmFtZXRlciB0byBhIHRyZWUg Ki8KK3N0YXRpYyB2b2lkCithcHBlbmRfb2JqZWN0X29iamVjdChPYmpUcmVlICp0cmVlLCBjaGFy ICpuYW1lLCBPYmpUcmVlICp2YWx1ZSkKK3sKKwlPYmpFbGVtICAgICpwYXJhbTsKKworCUFzc2Vy dChuYW1lKTsKKwlwYXJhbSA9IG5ld19vYmplY3Rfb2JqZWN0KHZhbHVlKTsKKwlwYXJhbS0+bmFt ZSA9IG5hbWU7CisJYXBwZW5kX3ByZW1hZGVfb2JqZWN0KHRyZWUsIHBhcmFtKTsKK30KKworLyog QWxsb2NhdGUgYSBuZXcgYXJyYXkgcGFyYW1ldGVyICovCitzdGF0aWMgT2JqRWxlbSAqCituZXdf YXJyYXlfb2JqZWN0KExpc3QgKmFycmF5KQoreworCU9iakVsZW0gICAgKnBhcmFtOworCisJcGFy YW0gPSBwYWxsb2MwKHNpemVvZihPYmpFbGVtKSk7CisJcGFyYW0tPm5hbWUgPSBOVUxMOworCXBh cmFtLT5vYmp0eXBlID0gT2JqVHlwZUFycmF5OworCXBhcmFtLT52YWx1ZS5hcnJheSA9IGFycmF5 OworCisJcmV0dXJuIHBhcmFtOworfQorCisvKiBBcHBlbmQgYW4gYXJyYXkgcGFyYW1ldGVyIHRv IGEgdHJlZSAqLworc3RhdGljIHZvaWQKK2FwcGVuZF9hcnJheV9vYmplY3QoT2JqVHJlZSAqdHJl ZSwgY2hhciAqbmFtZSwgTGlzdCAqYXJyYXkpCit7CisJT2JqRWxlbSAgICAqcGFyYW07CisKKwlw YXJhbSA9IG5ld19hcnJheV9vYmplY3QoYXJyYXkpOworCXBhcmFtLT5uYW1lID0gbmFtZTsKKwlh cHBlbmRfcHJlbWFkZV9vYmplY3QodHJlZSwgcGFyYW0pOworfQorCisvKiBBcHBlbmQgYSBwcmVh bGxvY2F0ZWQgcGFyYW1ldGVyIHRvIGEgdHJlZSAqLworc3RhdGljIGlubGluZSB2b2lkCithcHBl bmRfcHJlbWFkZV9vYmplY3QoT2JqVHJlZSAqdHJlZSwgT2JqRWxlbSAqZWxlbSkKK3sKKwlzbGlz dF9wdXNoX2hlYWQoJnRyZWUtPnBhcmFtcywgJmVsZW0tPm5vZGUpOworCXRyZWUtPm51bVBhcmFt cysrOworfQorCisvKgorICogSGVscGVyIGZvciBvYmp0cmVlX3RvX2pzb25iOiBwcm9jZXNzIGFu IGluZGl2aWR1YWwgZWxlbWVudCBmcm9tIGFuIG9iamVjdCBvcgorICogYW4gYXJyYXkgaW50byB0 aGUgb3V0cHV0IHBhcnNlIHN0YXRlLgorICovCitzdGF0aWMgdm9pZAorb2JqdHJlZV90b19qc29u Yl9lbGVtZW50KEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUsIE9iakVsZW0gKm9iamVjdCwKKwkJCQkJ CSBKc29uYkl0ZXJhdG9yVG9rZW4gZWxlbV90b2tlbikKK3sKKwlMaXN0Q2VsbCAgICpjZWxsOwor CUpzb25iVmFsdWUJdmFsOworCisJc3dpdGNoIChvYmplY3QtPm9ianR5cGUpCisJeworCQljYXNl IE9ialR5cGVOdWxsOgorCQkJdmFsLnR5cGUgPSBqYnZOdWxsOworCQkJcHVzaEpzb25iVmFsdWUo JnN0YXRlLCBlbGVtX3Rva2VuLCAmdmFsKTsKKwkJCWJyZWFrOworCisJCWNhc2UgT2JqVHlwZVN0 cmluZzoKKwkJCXZhbC50eXBlID0gamJ2U3RyaW5nOworCQkJdmFsLnZhbC5zdHJpbmcubGVuID0g c3RybGVuKG9iamVjdC0+dmFsdWUuc3RyaW5nKTsKKwkJCXZhbC52YWwuc3RyaW5nLnZhbCA9IG9i amVjdC0+dmFsdWUuc3RyaW5nOworCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBlbGVtX3Rva2Vu LCAmdmFsKTsKKwkJCWJyZWFrOworCisJCWNhc2UgT2JqVHlwZUludGVnZXI6CisJCQl2YWwudHlw ZSA9IGpidk51bWVyaWM7CisJCQl2YWwudmFsLm51bWVyaWMgPSAoTnVtZXJpYykKKwkJCQlEYXR1 bUdldE51bWVyaWMoRGlyZWN0RnVuY3Rpb25DYWxsMShpbnQ4X251bWVyaWMsCisJCQkJCQkJCQkJ CQkJb2JqZWN0LT52YWx1ZS5pbnRlZ2VyKSk7CisJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIGVs ZW1fdG9rZW4sICZ2YWwpOworCQkJYnJlYWs7CisKKwkJY2FzZSBPYmpUeXBlRmxvYXQ6CisJCQl2 YWwudHlwZSA9IGpidk51bWVyaWM7CisJCQl2YWwudmFsLm51bWVyaWMgPSAoTnVtZXJpYykKKwkJ CQlEYXR1bUdldE51bWVyaWMoRGlyZWN0RnVuY3Rpb25DYWxsMShmbG9hdDhfbnVtZXJpYywKKwkJ CQkJCQkJCQkJCQlvYmplY3QtPnZhbHVlLmludGVnZXIpKTsKKwkJCXB1c2hKc29uYlZhbHVlKCZz dGF0ZSwgZWxlbV90b2tlbiwgJnZhbCk7CisJCQlicmVhazsKKworCQljYXNlIE9ialR5cGVCb29s OgorCQkJdmFsLnR5cGUgPSBqYnZCb29sOworCQkJdmFsLnZhbC5ib29sZWFuID0gb2JqZWN0LT52 YWx1ZS5ib29sZWFuOworCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBlbGVtX3Rva2VuLCAmdmFs KTsKKwkJCWJyZWFrOworCisJCWNhc2UgT2JqVHlwZU9iamVjdDoKKwkJCS8qIHJlY3Vyc2l2ZWx5 IGFkZCB0aGUgb2JqZWN0IGludG8gdGhlIGV4aXN0aW5nIHBhcnNlIHN0YXRlICovCisJCQlvYmp0 cmVlX3RvX2pzb25iX3JlYyhvYmplY3QtPnZhbHVlLm9iamVjdCwgc3RhdGUpOworCQkJYnJlYWs7 CisKKwkJY2FzZSBPYmpUeXBlQXJyYXk6CisJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9C RUdJTl9BUlJBWSwgTlVMTCk7CisJCQlmb3JlYWNoKGNlbGwsIG9iamVjdC0+dmFsdWUuYXJyYXkp CisJCQl7CisJCQkJT2JqRWxlbSAgICplbGVtID0gbGZpcnN0KGNlbGwpOworCisJCQkJb2JqdHJl ZV90b19qc29uYl9lbGVtZW50KHN0YXRlLCBlbGVtLCBXSkJfRUxFTSk7CisJCQl9CisJCQlwdXNo SnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfQVJSQVksIE5VTEwpOworCQkJYnJlYWs7CisKKwkJ ZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgb2JqZWN0IHR5cGUgJWQiLCBv YmplY3QtPm9ianR5cGUpOworCQkJYnJlYWs7CisJfQorfQorCisvKgorICogUmVjdXJzaXZlIGhl bHBlciBmb3Igb2JqdHJlZV90b19qc29uYgorICovCitzdGF0aWMgSnNvbmJWYWx1ZSAqCitvYmp0 cmVlX3RvX2pzb25iX3JlYyhPYmpUcmVlICp0cmVlLCBKc29uYlBhcnNlU3RhdGUgKnN0YXRlKQor eworCXNsaXN0X2l0ZXIJaXRlcjsKKworCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lO X09CSkVDVCwgTlVMTCk7CisKKwlzbGlzdF9mb3JlYWNoKGl0ZXIsICZ0cmVlLT5wYXJhbXMpCisJ eworCQlPYmpFbGVtICAgICpvYmplY3QgPSBzbGlzdF9jb250YWluZXIoT2JqRWxlbSwgbm9kZSwg aXRlci5jdXIpOworCQlKc29uYlZhbHVlCWtleTsKKworCQkvKiBQdXNoIHRoZSBrZXkgZmlyc3Qg Ki8KKwkJa2V5LnR5cGUgPSBqYnZTdHJpbmc7CisJCWtleS52YWwuc3RyaW5nLmxlbiA9IHN0cmxl bihvYmplY3QtPm5hbWUpOworCQlrZXkudmFsLnN0cmluZy52YWwgPSBvYmplY3QtPm5hbWU7CisJ CXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0tFWSwgJmtleSk7CisKKwkJLyogVGhlbiBwcm9j ZXNzIHRoZSB2YWx1ZSBhY2NvcmRpbmcgdG8gaXRzIHR5cGUgKi8KKwkJb2JqdHJlZV90b19qc29u Yl9lbGVtZW50KHN0YXRlLCBvYmplY3QsIFdKQl9WQUxVRSk7CisJfQorCisJcmV0dXJuIHB1c2hK c29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworfQorCisvKgorICogQ3Jl YXRlIGEgSlNPTkIgcmVwcmVzZW50YXRpb24gZnJvbSBhbiBPYmpUcmVlLgorICovCitzdGF0aWMg SnNvbmIgKgorb2JqdHJlZV90b19qc29uYihPYmpUcmVlICp0cmVlKQoreworCUpzb25iVmFsdWUg KnZhbHVlOworCisJdmFsdWUgPSBvYmp0cmVlX3RvX2pzb25iX3JlYyh0cmVlLCBOVUxMKTsKKwly ZXR1cm4gSnNvbmJWYWx1ZVRvSnNvbmIodmFsdWUpOworfQorCisvKgorICogQSBoZWxwZXIgcm91 dGluZSB0byBzZXR1cCAle31UIGVsZW1lbnRzLgorICovCitzdGF0aWMgT2JqVHJlZSAqCituZXdf b2JqdHJlZV9mb3JfdHlwZShPaWQgdHlwZUlkLCBpbnQzMiB0eXBtb2QpCit7CisJT2JqVHJlZSAg ICAqdHlwZVBhcmFtOworCU9pZAkJCXR5cG5zcGlkOworCWNoYXIJICAgKnR5cG5zcDsKKwljaGFy CSAgICp0eXBlbmFtZSA9IE5VTEw7CisJY2hhcgkgICAqdHlwbW9kc3RyOworCWJvb2wJCXR5cGFy cmF5OworCisJZm9ybWF0X3R5cGVfZGV0YWlsZWQodHlwZUlkLCB0eXBtb2QsCisJCQkJCQkgJnR5 cG5zcGlkLCAmdHlwZW5hbWUsICZ0eXBtb2RzdHIsICZ0eXBhcnJheSk7CisKKwlpZiAoIU9pZElz VmFsaWQodHlwbnNwaWQpKQorCQl0eXBuc3AgPSBwc3RyZHVwKCIiKTsKKwllbHNlIGlmIChpc0Fu eVRlbXBOYW1lc3BhY2UodHlwbnNwaWQpKQorCQl0eXBuc3AgPSBwc3RyZHVwKCJwZ190ZW1wIik7 CisJZWxzZQorCQl0eXBuc3AgPSBnZXRfbmFtZXNwYWNlX25hbWUodHlwbnNwaWQpOworCisJLyog V2UgZG9uJ3QgdXNlIG5ld19vYmp0cmVlX1ZBIGhlcmUgYmVjYXVzZSB0eXBlcyBkb24ndCBoYXZl IGEgImZtdCIgKi8KKwl0eXBlUGFyYW0gPSBuZXdfb2JqdHJlZSgpOworCWFwcGVuZF9zdHJpbmdf b2JqZWN0KHR5cGVQYXJhbSwgInNjaGVtYW5hbWUiLCB0eXBuc3ApOworCWFwcGVuZF9zdHJpbmdf b2JqZWN0KHR5cGVQYXJhbSwgInR5cGVuYW1lIiwgdHlwZW5hbWUpOworCWFwcGVuZF9zdHJpbmdf b2JqZWN0KHR5cGVQYXJhbSwgInR5cG1vZCIsIHR5cG1vZHN0cik7CisJYXBwZW5kX2Jvb2xfb2Jq ZWN0KHR5cGVQYXJhbSwgInR5cGFycmF5IiwgdHlwYXJyYXkpOworCisJcmV0dXJuIHR5cGVQYXJh bTsKK30KKworLyoKKyAqIEEgaGVscGVyIHJvdXRpbmUgdG8gc2V0dXAgJXt9RCBhbmQgJXt9TyBl bGVtZW50cworICoKKyAqIEVsZW1lbnRzICJzY2hlbWFuYW1lIiBhbmQgIm9iam5hbWUiIGFyZSBz ZXQuICBJZiB0aGUgbmFtZXNwYWNlIE9JRAorICogY29ycmVzcG9uZHMgdG8gYSB0ZW1wIHNjaGVt YSwgdGhhdCdzIHNldCB0byAicGdfdGVtcCIuCisgKgorICogVGhlIGRpZmZlcmVuY2UgYmV0d2Vl biB0aG9zZSB0d28gZWxlbWVudCB0eXBlcyBpcyB3aGV0aGVyIHRoZSBvYmpuYW1lIHdpbGwKKyAq IGJlIHF1b3RlZCBhcyBhbiBpZGVudGlmaWVyIG9yIG5vdCwgd2hpY2ggaXMgbm90IHNvbWV0aGlu ZyB0aGF0IHRoaXMgcm91dGluZQorICogY29uY2VybnMgaXRzZWxmIHdpdGg7IHRoYXQgd2lsbCBi ZSB1cCB0byB0aGUgZXhwYW5kIGZ1bmN0aW9uLgorICovCitzdGF0aWMgT2JqVHJlZSAqCituZXdf b2JqdHJlZV9mb3JfcXVhbG5hbWUoT2lkIG5zcGlkLCBjaGFyICpuYW1lKQoreworCU9ialRyZWUg ICAgKnF1YWxpZmllZDsKKwljaGFyCSAgICpuYW1lc3BhY2U7CisKKwkvKgorCSAqIFdlIGRvbid0 IHVzZSBuZXdfb2JqdHJlZV9WQSBoZXJlIGJlY2F1c2UgdGhlc2UgbmFtZXMgZG9uJ3QgaGF2ZSBh ICJmbXQiCisJICovCisJcXVhbGlmaWVkID0gbmV3X29ianRyZWUoKTsKKwlpZiAoaXNBbnlUZW1w TmFtZXNwYWNlKG5zcGlkKSkKKwkJbmFtZXNwYWNlID0gcHN0cmR1cCgicGdfdGVtcCIpOworCWVs c2UKKwkJbmFtZXNwYWNlID0gZ2V0X25hbWVzcGFjZV9uYW1lKG5zcGlkKTsKKwlhcHBlbmRfc3Ry aW5nX29iamVjdChxdWFsaWZpZWQsICJzY2hlbWFuYW1lIiwgbmFtZXNwYWNlKTsKKwlhcHBlbmRf c3RyaW5nX29iamVjdChxdWFsaWZpZWQsICJvYmpuYW1lIiwgcHN0cmR1cChuYW1lKSk7CisKKwly ZXR1cm4gcXVhbGlmaWVkOworfQorCisvKgorICogQSBoZWxwZXIgcm91dGluZSB0byBzZXR1cCAl e31EIGFuZCAle31PIGVsZW1lbnRzLCB3aXRoIHRoZSBvYmplY3Qgc3BlY2lmaWVkCisgKiBieSBj bGFzc0lkL29iaklkCisgKgorICogRWxlbWVudHMgInNjaGVtYW5hbWUiIGFuZCAib2JqbmFtZSIg YXJlIHNldC4gIElmIHRoZSBvYmplY3QgaXMgYSB0ZW1wb3JhcnkKKyAqIG9iamVjdCwgdGhlIHNj aGVtYSBuYW1lIGlzIHNldCB0byAicGdfdGVtcCIuCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK25l d19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChPaWQgY2xhc3NJZCwgT2lkIG9iamVjdElkKQorewor CU9ialRyZWUgICAgKnF1YWxpZmllZDsKKwlSZWxhdGlvbgljYXRhbG9nOworCUhlYXBUdXBsZQlj YXRvYmo7CisJRGF0dW0JCW9iam5zcDsKKwlEYXR1bQkJb2JqbmFtZTsKKwlBdHRyTnVtYmVyCUFu dW1fbmFtZTsKKwlBdHRyTnVtYmVyCUFudW1fbmFtZXNwYWNlOworCUF0dHJOdW1iZXIJQW51bV9v aWQgPSBnZXRfb2JqZWN0X2F0dG51bV9vaWQoY2xhc3NJZCk7CisJYm9vbAkJaXNudWxsOworCisJ Y2F0YWxvZyA9IHRhYmxlX29wZW4oY2xhc3NJZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCWNhdG9i aiA9IGdldF9jYXRhbG9nX29iamVjdF9ieV9vaWQoY2F0YWxvZywgQW51bV9vaWQsIG9iamVjdElk KTsKKwlpZiAoIWNhdG9iaikKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9y IG9iamVjdCAldSBvZiBjYXRhbG9nIFwiJXNcIiIsCisJCQkgb2JqZWN0SWQsIFJlbGF0aW9uR2V0 UmVsYXRpb25OYW1lKGNhdGFsb2cpKTsKKwlBbnVtX25hbWUgPSBnZXRfb2JqZWN0X2F0dG51bV9u YW1lKGNsYXNzSWQpOworCUFudW1fbmFtZXNwYWNlID0gZ2V0X29iamVjdF9hdHRudW1fbmFtZXNw YWNlKGNsYXNzSWQpOworCisJb2JqbnNwID0gaGVhcF9nZXRhdHRyKGNhdG9iaiwgQW51bV9uYW1l c3BhY2UsIFJlbGF0aW9uR2V0RGVzY3IoY2F0YWxvZyksCisJCQkJCQkgICZpc251bGwpOworCWlm IChpc251bGwpCisJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIE5VTEwgbmFtZXNwYWNlIik7CisJ b2JqbmFtZSA9IGhlYXBfZ2V0YXR0cihjYXRvYmosIEFudW1fbmFtZSwgUmVsYXRpb25HZXREZXNj cihjYXRhbG9nKSwKKwkJCQkJCSAgICZpc251bGwpOworCWlmIChpc251bGwpCisJCWVsb2coRVJS T1IsICJ1bmV4cGVjdGVkIE5VTEwgbmFtZSIpOworCisJcXVhbGlmaWVkID0gbmV3X29ianRyZWVf Zm9yX3F1YWxuYW1lKERhdHVtR2V0T2JqZWN0SWQob2JqbnNwKSwKKwkJCQkJCQkJCQkgTmFtZVN0 cigqRGF0dW1HZXROYW1lKG9iam5hbWUpKSk7CisJdGFibGVfY2xvc2UoY2F0YWxvZywgQWNjZXNz U2hhcmVMb2NrKTsKKworCXJldHVybiBxdWFsaWZpZWQ7Cit9CisKKy8qCisgKiBSZXR1cm4gdGhl IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gUkVMUEVSU0lTVEVOQ0UgdmFsdWUK KyAqLworc3RhdGljIGNoYXIgKgorZ2V0X3BlcnNpc3RlbmNlX3N0cihjaGFyIHBlcnNpc3RlbmNl KQoreworCXN3aXRjaCAocGVyc2lzdGVuY2UpCisJeworCQljYXNlIFJFTFBFUlNJU1RFTkNFX1RF TVA6CisJCQlyZXR1cm4gIlRFTVBPUkFSWSI7CisJCWNhc2UgUkVMUEVSU0lTVEVOQ0VfVU5MT0dH RUQ6CisJCQlyZXR1cm4gIlVOTE9HR0VEIjsKKwkJY2FzZSBSRUxQRVJTSVNURU5DRV9QRVJNQU5F TlQ6CisJCQlyZXR1cm4gIiI7CisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5leHBlY3Rl ZCBwZXJzaXN0ZW5jZSBtYXJraW5nICVjIiwgcGVyc2lzdGVuY2UpOworCQkJcmV0dXJuICIiOwkJ LyogbWFrZSBjb21waWxlciBoYXBweSAqLworCX0KK30KKworLyoKKyAqIGRlcGFyc2VfQ29sdW1u RGVmCisgKgkJU3Vicm91dGluZSBmb3IgQ1JFQVRFIFRBQkxFIGRlcGFyc2luZworICoKKyAqIERl cGFyc2UgYSBDb2x1bW5EZWYgbm9kZSB3aXRoaW4gYSByZWd1bGFyIChub24gdHlwZWQpIHRhYmxl IGNyZWF0aW9uLgorICoKKyAqIE5PVCBOVUxMIGNvbnN0cmFpbnRzIGluIHRoZSBjb2x1bW4gZGVm aW5pdGlvbiBhcmUgZW1pdHRlZCBkaXJlY3RseSBpbiB0aGUKKyAqIGNvbHVtbiBkZWZpbml0aW9u IGJ5IHRoaXMgcm91dGluZTsgb3RoZXIgY29uc3RyYWludHMgbXVzdCBiZSBlbWl0dGVkCisgKiBl bHNld2hlcmUgKHRoZSBpbmZvIGluIHRoZSBwYXJzZSBub2RlIGlzIGluY29tcGxldGUgYW55d2F5 LikKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9Db2x1bW5EZWYoUmVsYXRpb24gcmVs YXRpb24sIExpc3QgKmRwY29udGV4dCwgYm9vbCBjb21wb3NpdGUsCisJCQkJICBDb2x1bW5EZWYg KmNvbGRlZiwgYm9vbCBpc19hbHRlcikKK3sKKwlPYmpUcmVlICAgICpjb2x1bW47CisJT2JqVHJl ZSAgICAqdG1wOworCU9pZAkJCXJlbGlkID0gUmVsYXRpb25HZXRSZWxpZChyZWxhdGlvbik7CisJ SGVhcFR1cGxlCWF0dHJUdXA7CisJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ckZvcm07CisJT2lkCQkJ dHlwaWQ7CisJaW50MzIJCXR5cG1vZDsKKwlPaWQJCQl0eXBjb2xsYXRpb247CisJYm9vbAkJc2F3 X25vdG51bGw7CisJTGlzdENlbGwgICAqY2VsbDsKKworCS8qCisJICogSW5oZXJpdGVkIGNvbHVt bnMgd2l0aG91dCBsb2NhbCBkZWZpbml0aW9ucyBtdXN0IG5vdCBiZSBlbWl0dGVkLiBYWFggLS0K KwkgKiBtYXliZSBpdCBpcyB1c2VmdWwgdG8gaGF2ZSB0aGVtIHdpdGggInByZXNlbnQgPSBmYWxz ZSIgb3Igc29tZSBzdWNoPworCSAqLworCWlmICghY29sZGVmLT5pc19sb2NhbCkKKwkJcmV0dXJu IE5VTEw7CisKKwlhdHRyVHVwID0gU2VhcmNoU3lzQ2FjaGVBdHROYW1lKHJlbGlkLCBjb2xkZWYt PmNvbG5hbWUpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZChhdHRyVHVwKSkKKwkJZWxvZyhFUlJP UiwgImNvdWxkIG5vdCBmaW5kIGNhY2hlIGVudHJ5IGZvciBjb2x1bW4gXCIlc1wiIG9mIHJlbGF0 aW9uICV1IiwKKwkJCSBjb2xkZWYtPmNvbG5hbWUsIHJlbGlkKTsKKwlhdHRyRm9ybSA9IChGb3Jt X3BnX2F0dHJpYnV0ZSkgR0VUU1RSVUNUKGF0dHJUdXApOworCisJZ2V0X2F0dHR5cGV0eXBtb2Rj b2xsKHJlbGlkLCBhdHRyRm9ybS0+YXR0bnVtLAorCQkJCQkJICAmdHlwaWQsICZ0eXBtb2QsICZ0 eXBjb2xsYXRpb24pOworCisJLyogQ29tcG9zaXRlIHR5cGVzIHVzZSBhIHNsaWdodGx5IHNpbXBs ZXIgZm9ybWF0IHN0cmluZyAqLworCWlmIChjb21wb3NpdGUpCisJCWNvbHVtbiA9IG5ld19vYmp0 cmVlX1ZBKCIle25hbWV9SSAle2NvbHR5cGV9VCAle2NvbGxhdGlvbn1zIiwKKwkJCQkJCQkJMywK KwkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAiY29sdW1uIiwKKwkJCQkJCQkJIm5hbWUi LCBPYmpUeXBlU3RyaW5nLCBjb2xkZWYtPmNvbG5hbWUsCisJCQkJCQkJCSJjb2x0eXBlIiwgT2Jq VHlwZU9iamVjdCwKKwkJCQkJCQkJbmV3X29ianRyZWVfZm9yX3R5cGUodHlwaWQsIHR5cG1vZCkp OworCWVsc2UKKwkJY29sdW1uID0gbmV3X29ianRyZWVfVkEoIiV7bmFtZX1JICV7Y29sdHlwZX1U ICV7ZGVmYXVsdH1zICV7bm90X251bGx9cyAle2NvbGxhdGlvbn1zIiwKKwkJCQkJCQkJMywKKwkJ CQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAiY29sdW1uIiwKKwkJCQkJCQkJIm5hbWUiLCBP YmpUeXBlU3RyaW5nLCBjb2xkZWYtPmNvbG5hbWUsCisJCQkJCQkJCSJjb2x0eXBlIiwgT2JqVHlw ZU9iamVjdCwKKwkJCQkJCQkJbmV3X29ianRyZWVfZm9yX3R5cGUodHlwaWQsIHR5cG1vZCkpOwor CisJdG1wID0gbmV3X29ianRyZWVfVkEoIkNPTExBVEUgJXtuYW1lfUQiLCAwKTsKKwlpZiAoT2lk SXNWYWxpZCh0eXBjb2xsYXRpb24pKQorCXsKKwkJT2JqVHJlZSAqY29sbG5hbWU7CisKKwkJY29s bG5hbWUgPSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoQ29sbGF0aW9uUmVsYXRpb25JZCwK KwkJCQkJCQkJCQkJICAgdHlwY29sbGF0aW9uKTsKKwkJYXBwZW5kX29iamVjdF9vYmplY3QodG1w LCAibmFtZSIsIGNvbGxuYW1lKTsKKwl9CisJZWxzZQorCQlhcHBlbmRfYm9vbF9vYmplY3QodG1w LCAicHJlc2VudCIsIGZhbHNlKTsKKwlhcHBlbmRfb2JqZWN0X29iamVjdChjb2x1bW4sICJjb2xs YXRpb24iLCB0bXApOworCisJaWYgKCFjb21wb3NpdGUpCisJeworCQkvKgorCQkgKiBFbWl0IGEg Tk9UIE5VTEwgZGVjbGFyYXRpb24gaWYgbmVjZXNzYXJ5LiAgTm90ZSB0aGF0IHdlIGNhbm5vdCB0 cnVzdAorCQkgKiBwZ19hdHRyaWJ1dGUuYXR0bm90bnVsbCBoZXJlLCBiZWNhdXNlIHRoYXQgYml0 IGlzIGFsc28gc2V0IHdoZW4KKwkJICogcHJpbWFyeSBrZXlzIGFyZSBzcGVjaWZpZWQ7IGFuZCB3 ZSBtdXN0IG5vdCBlbWl0IGEgTk9UIE5VTEwKKwkJICogY29uc3RyYWludCBpbiB0aGF0IGNhc2Us IHVubGVzcyBleHBsaWNpdGVseSBzcGVjaWZpZWQuICBUaGVyZWZvcmUsCisJCSAqIHdlIHNjYW4g dGhlIGxpc3Qgb2YgY29uc3RyYWludHMgYXR0YWNoZWQgdG8gdGhpcyBjb2x1bW4gdG8gZGV0ZXJt aW5lCisJCSAqIHdoZXRoZXIgd2UgbmVlZCB0byBlbWl0IGFueXRoaW5nLgorCQkgKiAoRm9ydHVu YXRlbHksIE5PVCBOVUxMIGNvbnN0cmFpbnRzIGNhbm5vdCBiZSB0YWJsZSBjb25zdHJhaW50cy4p CisJCSAqCisJCSAqIEluIHRoZSBBTFRFUiBUQUJMRSBjYXNlcywgd2UgYWxzbyBhZGQgYSBOT1Qg TlVMTCBpZiB0aGUgY29sRGVmIGlzCisJCSAqIG1hcmtlZCBpc19ub3RfbnVsbC4KKwkJICovCisJ CXNhd19ub3RudWxsID0gZmFsc2U7CisJCWZvcmVhY2goY2VsbCwgY29sZGVmLT5jb25zdHJhaW50 cykKKwkJeworCQkJQ29uc3RyYWludCAqY29uc3RyID0gKENvbnN0cmFpbnQgKikgbGZpcnN0KGNl bGwpOworCisJCQlpZiAoY29uc3RyLT5jb250eXBlID09IENPTlNUUl9OT1ROVUxMKQorCQkJCXNh d19ub3RudWxsID0gdHJ1ZTsKKwkJfQorCQlpZiAoaXNfYWx0ZXIgJiYgY29sZGVmLT5pc19ub3Rf bnVsbCkKKwkJCXNhd19ub3RudWxsID0gdHJ1ZTsKKworCQlpZiAoc2F3X25vdG51bGwpCisJCQlh cHBlbmRfc3RyaW5nX29iamVjdChjb2x1bW4sICJub3RfbnVsbCIsICJOT1QgTlVMTCIpOworCQll bHNlCisJCQlhcHBlbmRfc3RyaW5nX29iamVjdChjb2x1bW4sICJub3RfbnVsbCIsICIiKTsKKwor CQl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiREVGQVVMVCAle2RlZmF1bHR9cyIsIDApOworCQlpZiAo YXR0ckZvcm0tPmF0dGhhc2RlZikKKwkJeworCQkJY2hhciAqZGVmc3RyOworCisJCQlkZWZzdHIg PSBSZWxhdGlvbkdldENvbHVtbkRlZmF1bHQocmVsYXRpb24sIGF0dHJGb3JtLT5hdHRudW0sCisJ CQkJCQkJCQkJCSAgZHBjb250ZXh0KTsKKworCQkJYXBwZW5kX3N0cmluZ19vYmplY3QodG1wLCAi ZGVmYXVsdCIsIGRlZnN0cik7CisJCX0KKwkJZWxzZQorCQkJYXBwZW5kX2Jvb2xfb2JqZWN0KHRt cCwgInByZXNlbnQiLCBmYWxzZSk7CisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KGNvbHVtbiwgImRl ZmF1bHQiLCB0bXApOworCX0KKworCVJlbGVhc2VTeXNDYWNoZShhdHRyVHVwKTsKKworCXJldHVy biBjb2x1bW47Cit9CisKKy8qCisgKiBkZXBhcnNlX0NvbHVtbkRlZl9UeXBlZAorICoJCVN1YnJv dXRpbmUgZm9yIENSRUFURSBUQUJMRSBPRiBkZXBhcnNpbmcKKyAqCisgKiBEZXBhcnNlIGEgQ29s dW1uRGVmIG5vZGUgd2l0aGluIGEgdHlwZWQgdGFibGUgY3JlYXRpb24uCVRoaXMgaXMgc2ltcGxl cgorICogdGhhbiB0aGUgcmVndWxhciBjYXNlLCBiZWNhdXNlIHdlIGRvbid0IGhhdmUgdG8gZW1p dCB0aGUgdHlwZSBkZWNsYXJhdGlvbiwKKyAqIGNvbGxhdGlvbiwgb3IgZGVmYXVsdC4gIEhlcmUg d2Ugb25seSByZXR1cm4gc29tZXRoaW5nIGlmIHRoZSBjb2x1bW4gaXMgYmVpbmcKKyAqIGRlY2xh cmVkIE5PVCBOVUxMLgorICoKKyAqIEFzIGluIGRlcGFyc2VfQ29sdW1uRGVmLCBhbnkgb3RoZXIg Y29uc3RyYWludCBpcyBwcm9jZXNzZWQgZWxzZXdoZXJlLgorICoKKyAqIEZJWE1FIC0tLSBhY3R1 YWxseSwgd2hhdCBhYm91dCBkZWZhdWx0IHZhbHVlcz8KKyAqLworc3RhdGljIE9ialRyZWUgKgor ZGVwYXJzZV9Db2x1bW5EZWZfdHlwZWQoUmVsYXRpb24gcmVsYXRpb24sIExpc3QgKmRwY29udGV4 dCwgQ29sdW1uRGVmICpjb2xkZWYpCit7CisJT2JqVHJlZSAgICAqY29sdW1uID0gTlVMTDsKKwlP aWQJCQlyZWxpZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pOworCUhlYXBUdXBsZQlhdHRy VHVwOworCUZvcm1fcGdfYXR0cmlidXRlIGF0dHJGb3JtOworCU9pZAkJCXR5cGlkOworCWludDMy CQl0eXBtb2Q7CisJT2lkCQkJdHlwY29sbGF0aW9uOworCWJvb2wJCXNhd19ub3RudWxsOworCUxp c3RDZWxsICAgKmNlbGw7CisKKwlhdHRyVHVwID0gU2VhcmNoU3lzQ2FjaGVBdHROYW1lKHJlbGlk LCBjb2xkZWYtPmNvbG5hbWUpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZChhdHRyVHVwKSkKKwkJ ZWxvZyhFUlJPUiwgImNvdWxkIG5vdCBmaW5kIGNhY2hlIGVudHJ5IGZvciBjb2x1bW4gXCIlc1wi IG9mIHJlbGF0aW9uICV1IiwKKwkJCSBjb2xkZWYtPmNvbG5hbWUsIHJlbGlkKTsKKwlhdHRyRm9y bSA9IChGb3JtX3BnX2F0dHJpYnV0ZSkgR0VUU1RSVUNUKGF0dHJUdXApOworCisJZ2V0X2F0dHR5 cGV0eXBtb2Rjb2xsKHJlbGlkLCBhdHRyRm9ybS0+YXR0bnVtLAorCQkJCQkJICAmdHlwaWQsICZ0 eXBtb2QsICZ0eXBjb2xsYXRpb24pOworCisJLyoKKwkgKiBTZWFyY2ggZm9yIGEgTk9UIE5VTEwg ZGVjbGFyYXRpb24uICBBcyBpbiBkZXBhcnNlX0NvbHVtbkRlZiwgd2UgcmVseSBvbgorCSAqIGZp bmRpbmcgYSBjb25zdHJhaW50IG9uIHRoZSBjb2x1bW4gcmF0aGVyIHRoYW4gY29sZGVmLT5pc19u b3RfbnVsbC4KKwkgKiAoVGhpcyByb3V0aW5lIGlzIG5ldmVyIHVzZWQgZm9yIEFMVEVSIGNhc2Vz LikKKwkgKi8KKwlzYXdfbm90bnVsbCA9IGZhbHNlOworCWZvcmVhY2goY2VsbCwgY29sZGVmLT5j b25zdHJhaW50cykKKwl7CisJCUNvbnN0cmFpbnQgKmNvbnN0ciA9IChDb25zdHJhaW50ICopIGxm aXJzdChjZWxsKTsKKworCQlpZiAoY29uc3RyLT5jb250eXBlID09IENPTlNUUl9OT1ROVUxMKQor CQl7CisJCQlzYXdfbm90bnVsbCA9IHRydWU7CisJCQlicmVhazsKKwkJfQorCX0KKworCWlmIChz YXdfbm90bnVsbCkKKwkJY29sdW1uID0gbmV3X29ianRyZWVfVkEoIiV7bmFtZX1JIFdJVEggT1BU SU9OUyBOT1QgTlVMTCIsIDIsCisJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImNvbHVt bl9ub3RudWxsIiwKKwkJCQkJCQkJIm5hbWUiLCBPYmpUeXBlU3RyaW5nLCBjb2xkZWYtPmNvbG5h bWUpOworCisJUmVsZWFzZVN5c0NhY2hlKGF0dHJUdXApOworCisJcmV0dXJuIGNvbHVtbjsKK30K KworLyoKKyAqIGRlcGFyc2VUYWJsZUVsZW1lbnRzCisgKgkJU3Vicm91dGluZSBmb3IgQ1JFQVRF IFRBQkxFIGRlcGFyc2luZworICoKKyAqIERlYWwgd2l0aCBhbGwgdGhlIHRhYmxlIGVsZW1lbnRz IChjb2x1bW5zIGFuZCBjb25zdHJhaW50cykuCisgKgorICogTm90ZSB3ZSBpZ25vcmUgY29uc3Ry YWludHMgaW4gdGhlIHBhcnNlIG5vZGUgaGVyZTsgdGhleSBhcmUgZXh0cmFjdGVkIGZyb20KKyAq IHN5c3RlbSBjYXRhbG9ncyBpbnN0ZWFkLgorICovCitzdGF0aWMgTGlzdCAqCitkZXBhcnNlVGFi bGVFbGVtZW50cyhSZWxhdGlvbiByZWxhdGlvbiwgTGlzdCAqdGFibGVFbGVtZW50cywgTGlzdCAq ZHBjb250ZXh0LAorCQkJCQkgYm9vbCB0eXBlZCwgYm9vbCBjb21wb3NpdGUpCit7CisJTGlzdAkg ICAqZWxlbWVudHMgPSBOSUw7CisJTGlzdENlbGwgICAqbGM7CisKKwlmb3JlYWNoKGxjLCB0YWJs ZUVsZW1lbnRzKQorCXsKKwkJTm9kZQkgICAqZWx0ID0gKE5vZGUgKikgbGZpcnN0KGxjKTsKKwor CQlzd2l0Y2ggKG5vZGVUYWcoZWx0KSkKKwkJeworCQkJY2FzZSBUX0NvbHVtbkRlZjoKKwkJCQl7 CisJCQkJCU9ialRyZWUJICAgKnRyZWU7CisKKwkJCQkJdHJlZSA9IHR5cGVkID8KKwkJCQkJCWRl cGFyc2VfQ29sdW1uRGVmX3R5cGVkKHJlbGF0aW9uLCBkcGNvbnRleHQsCisJCQkJCQkJCQkJCQko Q29sdW1uRGVmICopIGVsdCkgOgorCQkJCQkJZGVwYXJzZV9Db2x1bW5EZWYocmVsYXRpb24sIGRw Y29udGV4dCwKKwkJCQkJCQkJCQkgIGNvbXBvc2l0ZSwgKENvbHVtbkRlZiAqKSBlbHQsCisJCQkJ CQkJCQkJICBmYWxzZSk7CisJCQkJCWlmICh0cmVlICE9IE5VTEwpCisJCQkJCXsKKwkJCQkJCU9i akVsZW0gICAgKmNvbHVtbjsKKworCQkJCQkJY29sdW1uID0gbmV3X29iamVjdF9vYmplY3QodHJl ZSk7CisJCQkJCQllbGVtZW50cyA9IGxhcHBlbmQoZWxlbWVudHMsIGNvbHVtbik7CisJCQkJCX0K KwkJCQl9CisJCQkJYnJlYWs7CisJCQljYXNlIFRfQ29uc3RyYWludDoKKwkJCQlicmVhazsKKwkJ CWRlZmF1bHQ6CisJCQkJZWxvZyhFUlJPUiwgImludmFsaWQgbm9kZSB0eXBlICVkIiwgbm9kZVRh ZyhlbHQpKTsKKwkJfQorCX0KKworCXJldHVybiBlbGVtZW50czsKK30KKworLyoKKyAqIG9idGFp bkNvbnN0cmFpbnRzCisgKgkJU3Vicm91dGluZSBmb3IgQ1JFQVRFIFRBQkxFL0NSRUFURSBET01B SU4gZGVwYXJzaW5nCisgKgorICogR2l2ZW4gYSB0YWJsZSBPSUQgb3IgZG9tYWluIE9JRCwgb2J0 YWluIGl0cyBjb25zdHJhaW50cyBhbmQgYXBwZW5kIHRoZW0gdG8KKyAqIHRoZSBnaXZlbiBlbGVt ZW50cyBsaXN0LiAgVGhlIHVwZGF0ZWQgbGlzdCBpcyByZXR1cm5lZC4KKyAqCisgKiBUaGlzIHdv cmtzIGZvciB0eXBlZCB0YWJsZXMsIHJlZ3VsYXIgdGFibGVzLCBhbmQgZG9tYWlucy4KKyAqCisg KiBOb3RlIHRoYXQgQ09OU1RSQUlOVF9GT1JFSUdOIGNvbnN0cmFpbnRzIGFyZSBhbHdheXMgaWdu b3JlZC4KKyAqLworc3RhdGljIExpc3QgKgorb2J0YWluQ29uc3RyYWludHMoTGlzdCAqZWxlbWVu dHMsIE9pZCByZWxhdGlvbklkLCBPaWQgZG9tYWluSWQpCit7CisJUmVsYXRpb24JY29uUmVsOwor CVNjYW5LZXlEYXRhIGtleTsKKwlTeXNTY2FuRGVzYyBzY2FuOworCUhlYXBUdXBsZQl0dXBsZTsK KwlPYmpUcmVlICAgICp0bXA7CisKKwkvKiBvbmx5IG9uZSBtYXkgYmUgdmFsaWQgKi8KKwlBc3Nl cnQoT2lkSXNWYWxpZChyZWxhdGlvbklkKSBeIE9pZElzVmFsaWQoZG9tYWluSWQpKTsKKworCS8q CisJICogc2NhbiBwZ19jb25zdHJhaW50IHRvIGZldGNoIGFsbCBjb25zdHJhaW50cyBsaW5rZWQg dG8gdGhlIGdpdmVuCisJICogcmVsYXRpb24uCisJICovCisJY29uUmVsID0gdGFibGVfb3BlbihD b25zdHJhaW50UmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwlpZiAoT2lkSXNWYWxpZChy ZWxhdGlvbklkKSkKKwl7CisJCVNjYW5LZXlJbml0KCZrZXksCisJCQkJCUFudW1fcGdfY29uc3Ry YWludF9jb25yZWxpZCwKKwkJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJ CQlPYmplY3RJZEdldERhdHVtKHJlbGF0aW9uSWQpKTsKKwkJc2NhbiA9IHN5c3RhYmxlX2JlZ2lu c2Nhbihjb25SZWwsIENvbnN0cmFpbnRSZWxpZFR5cGlkTmFtZUluZGV4SWQsCisJCQkJCQkJCSAg dHJ1ZSwgTlVMTCwgMSwgJmtleSk7CisJfQorCWVsc2UKKwl7CisJCUFzc2VydChPaWRJc1ZhbGlk KGRvbWFpbklkKSk7CisJCVNjYW5LZXlJbml0KCZrZXksCisJCQkJCUFudW1fcGdfY29uc3RyYWlu dF9jb250eXBpZCwKKwkJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJCQlP YmplY3RJZEdldERhdHVtKGRvbWFpbklkKSk7CisJCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4o Y29uUmVsLCBDb25zdHJhaW50VHlwaWRJbmRleElkLAorCQkJCQkJCQkgIHRydWUsIE5VTEwsIDEs ICZrZXkpOworCX0KKworCS8qCisJICogRm9yIGVhY2ggY29uc3RyYWludCwgYWRkIGEgbm9kZSB0 byB0aGUgbGlzdCBvZiB0YWJsZSBlbGVtZW50cy4gIEluCisJICogdGhlc2Ugbm9kZXMgd2UgaW5j bHVkZSBub3Qgb25seSB0aGUgcHJpbnRhYmxlIGluZm9ybWF0aW9uICgiZm10IiksIGJ1dAorCSAq IGFsc28gc2VwYXJhdGUgYXR0cmlidXRlcyB0byBpbmRpY2F0ZSB0aGUgdHlwZSBvZiBjb25zdHJh aW50LCBmb3IKKwkgKiBhdXRvbWF0aWMgcHJvY2Vzc2luZy4KKwkgKi8KKwl3aGlsZSAoSGVhcFR1 cGxlSXNWYWxpZCh0dXBsZSA9IHN5c3RhYmxlX2dldG5leHQoc2NhbikpKQorCXsKKwkJRm9ybV9w Z19jb25zdHJhaW50IGNvbnN0ckZvcm07CisJCWNoYXIJICAgKmNvbnR5cGU7CisKKwkJY29uc3Ry Rm9ybSA9IChGb3JtX3BnX2NvbnN0cmFpbnQpIEdFVFNUUlVDVCh0dXBsZSk7CisKKwkJc3dpdGNo IChjb25zdHJGb3JtLT5jb250eXBlKQorCQl7CisJCQljYXNlIENPTlNUUkFJTlRfQ0hFQ0s6CisJ CQkJY29udHlwZSA9ICJjaGVjayI7CisJCQkJYnJlYWs7CisJCQljYXNlIENPTlNUUkFJTlRfRk9S RUlHTjoKKwkJCQljb250aW51ZTsJLyogbm90IGhlcmUgKi8KKwkJCWNhc2UgQ09OU1RSQUlOVF9Q UklNQVJZOgorCQkJCWNvbnR5cGUgPSAicHJpbWFyeSBrZXkiOworCQkJCWJyZWFrOworCQkJY2Fz ZSBDT05TVFJBSU5UX1VOSVFVRToKKwkJCQljb250eXBlID0gInVuaXF1ZSI7CisJCQkJYnJlYWs7 CisJCQljYXNlIENPTlNUUkFJTlRfVFJJR0dFUjoKKwkJCQljb250eXBlID0gInRyaWdnZXIiOwor CQkJCWJyZWFrOworCQkJY2FzZSBDT05TVFJBSU5UX0VYQ0xVU0lPTjoKKwkJCQljb250eXBlID0g ImV4Y2x1c2lvbiI7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJST1IsICJ1 bnJlY29nbml6ZWQgY29uc3RyYWludCB0eXBlIik7CisJCX0KKworCQkvKgorCQkgKiAidHlwZSIg YW5kICJjb250eXBlIiBhcmUgbm90IHBhcnQgb2YgdGhlIHByaW50YWJsZSBvdXRwdXQsIGJ1dCBh cmUKKwkJICogdXNlZnVsIHRvIHByb2dyYW1tYXRpY2FsbHkgZGlzdGluZ3Vpc2ggdGhlc2UgZnJv bSBjb2x1bW5zIGFuZCBhbW9uZworCQkgKiBkaWZmZXJlbnQgY29uc3RyYWludCB0eXBlcy4KKwkJ ICoKKwkJICogWFhYIGl0IG1pZ2h0IGJlIHVzZWZ1bCB0byBhbHNvIGxpc3QgdGhlIGNvbHVtbiBu YW1lcyBpbiBhIFBLLCBldGMuCisJCSAqLworCQl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiQ09OU1RS QUlOVCAle25hbWV9SSAle2RlZmluaXRpb259cyIsCisJCQkJCQkJIDQsCisJCQkJCQkJICJ0eXBl IiwgT2JqVHlwZVN0cmluZywgImNvbnN0cmFpbnQiLAorCQkJCQkJCSAiY29udHlwZSIsIE9ialR5 cGVTdHJpbmcsIGNvbnR5cGUsCisJCQkJCQkgIm5hbWUiLCBPYmpUeXBlU3RyaW5nLCBOYW1lU3Ry KGNvbnN0ckZvcm0tPmNvbm5hbWUpLAorCQkJCQkJCSAiZGVmaW5pdGlvbiIsIE9ialR5cGVTdHJp bmcsCisJCQkJCQkgIHBnX2dldF9jb25zdHJhaW50ZGVmX2NvbW1hbmRfc2ltcGxlKGNvbnN0ckZv cm0tPm9pZCkpOworCQllbGVtZW50cyA9IGxhcHBlbmQoZWxlbWVudHMsIG5ld19vYmplY3Rfb2Jq ZWN0KHRtcCkpOworCX0KKworCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CisJdGFibGVfY2xvc2Uo Y29uUmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCisJcmV0dXJuIGVsZW1lbnRzOworfQorCisvKgor ICogZGVwYXJzZSB0aGUgT04gQ09NTU1JVCAuLi4gY2xhdXNlIGZvciBDUkVBVEUgLi4uIFRFTVBP UkFSWSAuLi4KKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9PbkNvbW1pdENsYXVzZShP bkNvbW1pdEFjdGlvbiBvcHRpb24pCit7CisJT2JqVHJlZQkgICAqdG1wOworCisJdG1wID0gbmV3 X29ianRyZWVfVkEoIk9OIENPTU1JVCAle29uX2NvbW1pdF92YWx1ZX1zIiwgMCk7CisJc3dpdGNo IChvcHRpb24pCisJeworCQljYXNlIE9OQ09NTUlUX0RST1A6CisJCQlhcHBlbmRfc3RyaW5nX29i amVjdCh0bXAsICJvbl9jb21taXRfdmFsdWUiLCAiRFJPUCIpOworCQkJYnJlYWs7CisKKwkJY2Fz ZSBPTkNPTU1JVF9ERUxFVEVfUk9XUzoKKwkJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHRtcCwgIm9u X2NvbW1pdF92YWx1ZSIsICJERUxFVEUgUk9XUyIpOworCQkJYnJlYWs7CisKKwkJY2FzZSBPTkNP TU1JVF9QUkVTRVJWRV9ST1dTOgorCQkJYXBwZW5kX3N0cmluZ19vYmplY3QodG1wLCAib25fY29t bWl0X3ZhbHVlIiwgIlBSRVNFUlZFIFJPV1MiKTsKKwkJCWJyZWFrOworCisJCWNhc2UgT05DT01N SVRfTk9PUDoKKwkJCWFwcGVuZF9udWxsX29iamVjdCh0bXAsICJvbl9jb21taXRfdmFsdWUiKTsK KwkJCWFwcGVuZF9ib29sX29iamVjdCh0bXAsICJwcmVzZW50IiwgZmFsc2UpOworCQkJYnJlYWs7 CisJfQorCisJcmV0dXJuIHRtcDsKK30KKworLyoKKyAqIERlcGFyc2UgRGVmRWxlbXMsIGFzIHVz ZWQgZS5nLiBieSBBTFRFUiBDT0xVTU4gLi4uIFNFVCwgaW50byBhIGxpc3Qgb2YgU0VUCisgKiAo Li4uKSAgb3IgUkVTRVQgKC4uLikgY29udGVudHMuCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2Rl cGFyc2VfRGVmRWxlbShEZWZFbGVtICplbGVtLCBib29sIGlzX3Jlc2V0KQoreworCU9ialRyZWUJ ICAgKnNldDsKKwlPYmpUcmVlCSAgICpvcHRuYW1lOworCisJaWYgKGVsZW0tPmRlZm5hbWVzcGFj ZSAhPSBOVUxMKQorCQlvcHRuYW1lID0gbmV3X29ianRyZWVfVkEoIiV7c2NoZW1hfUkuJXtsYWJl bH1JIiwgMSwKKwkJCQkJCQkJICJzY2hlbWEiLCBPYmpUeXBlU3RyaW5nLCBlbGVtLT5kZWZuYW1l c3BhY2UpOworCWVsc2UKKwkJb3B0bmFtZSA9IG5ld19vYmp0cmVlX1ZBKCIle2xhYmVsfUkiLCAw KTsKKworCWFwcGVuZF9zdHJpbmdfb2JqZWN0KG9wdG5hbWUsICJsYWJlbCIsIGVsZW0tPmRlZm5h bWUpOworCisJaWYgKGlzX3Jlc2V0KQorCQlzZXQgPSBuZXdfb2JqdHJlZV9WQSgiJXtsYWJlbH1z IiwgMCk7CisJZWxzZQorCQlzZXQgPSBuZXdfb2JqdHJlZV9WQSgiJXtsYWJlbH1zID0gJXt2YWx1 ZX1MIiwgMSwKKwkJCQkJCQkgInZhbHVlIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkgZWxlbS0+ YXJnID8gZGVmR2V0U3RyaW5nKGVsZW0pIDoKKwkJCQkJCQkgZGVmR2V0Qm9vbGVhbihlbGVtKSA/ ICJUUlVFIiA6ICJGQUxTRSIpOworCisJYXBwZW5kX29iamVjdF9vYmplY3Qoc2V0LCAibGFiZWwi LCBvcHRuYW1lKTsKKwlyZXR1cm4gc2V0OworfQorCisvKgorICogLi4uIEFMVEVSIENPTFVNTiAu Li4gU0VUL1JFU0VUICguLi4pCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQ29sdW1u U2V0T3B0aW9ucyhBbHRlclRhYmxlQ21kICpzdWJjbWQpCit7CisJTGlzdAkgICAqc2V0cyA9IE5J TDsKKwlMaXN0Q2VsbCAgICpjZWxsOworCU9ialRyZWUgICAgKnRtcDsKKwlib29sCQlpc19yZXNl dCA9IHN1YmNtZC0+c3VidHlwZSA9PSBBVF9SZXNldE9wdGlvbnM7CisKKwlpZiAoaXNfcmVzZXQp CisJCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiBDT0xVTU4gJXtjb2x1bW59SSBSRVNFVCAo JXtvcHRpb25zOiwgfXMpIiwgMCk7CisJZWxzZQorCQl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiQUxU RVIgQ09MVU1OICV7Y29sdW1ufUkgU0VUICgle29wdGlvbnM6LCB9cykiLCAwKTsKKworCWFwcGVu ZF9zdHJpbmdfb2JqZWN0KHRtcCwgImNvbHVtbiIsIHN1YmNtZC0+bmFtZSk7CisKKwlmb3JlYWNo KGNlbGwsIChMaXN0ICopIHN1YmNtZC0+ZGVmKQorCXsKKwkJRGVmRWxlbQkgICAqZWxlbTsKKwkJ T2JqVHJlZQkgICAqc2V0OworCisJCWVsZW0gPSAoRGVmRWxlbSAqKSBsZmlyc3QoY2VsbCk7CisJ CXNldCA9IGRlcGFyc2VfRGVmRWxlbShlbGVtLCBpc19yZXNldCk7CisJCXNldHMgPSBsYXBwZW5k KHNldHMsIG5ld19vYmplY3Rfb2JqZWN0KHNldCkpOworCX0KKworCWFwcGVuZF9hcnJheV9vYmpl Y3QodG1wLCAib3B0aW9ucyIsIHNldHMpOworCisJcmV0dXJuIHRtcDsKK30KKworLyoKKyAqIC4u LiBBTFRFUiBDT0xVTU4gLi4uIFNFVC9SRVNFVCAoLi4uKQorICovCitzdGF0aWMgT2JqVHJlZSAq CitkZXBhcnNlX1JlbFNldE9wdGlvbnMoQWx0ZXJUYWJsZUNtZCAqc3ViY21kKQoreworCUxpc3QJ ICAgKnNldHMgPSBOSUw7CisJTGlzdENlbGwgICAqY2VsbDsKKwlPYmpUcmVlICAgICp0bXA7CisJ Ym9vbAkJaXNfcmVzZXQgPSBzdWJjbWQtPnN1YnR5cGUgPT0gQVRfUmVzZXRSZWxPcHRpb25zOwor CisJaWYgKGlzX3Jlc2V0KQorCQl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiUkVTRVQgKCV7b3B0aW9u czosIH1zKSIsIDApOworCWVsc2UKKwkJdG1wID0gbmV3X29ianRyZWVfVkEoIlNFVCAoJXtvcHRp b25zOiwgfXMpIiwgMCk7CisKKwlmb3JlYWNoKGNlbGwsIChMaXN0ICopIHN1YmNtZC0+ZGVmKQor CXsKKwkJRGVmRWxlbQkgICAqZWxlbTsKKwkJT2JqVHJlZQkgICAqc2V0OworCisJCWVsZW0gPSAo RGVmRWxlbSAqKSBsZmlyc3QoY2VsbCk7CisJCXNldCA9IGRlcGFyc2VfRGVmRWxlbShlbGVtLCBp c19yZXNldCk7CisJCXNldHMgPSBsYXBwZW5kKHNldHMsIG5ld19vYmplY3Rfb2JqZWN0KHNldCkp OworCX0KKworCWFwcGVuZF9hcnJheV9vYmplY3QodG1wLCAib3B0aW9ucyIsIHNldHMpOworCisJ cmV0dXJuIHRtcDsKK30KKworLyoKKyAqIGRlcGFyc2VfQ3JlYXRlU3RtdAorICoJCURlcGFyc2Ug YSBDcmVhdGVTdG10IChDUkVBVEUgVEFCTEUpCisgKgorICogR2l2ZW4gYSB0YWJsZSBPSUQgYW5k IHRoZSBwYXJzZXRyZWUgdGhhdCBjcmVhdGVkIGl0LCByZXR1cm4gYW4gT2JqVHJlZQorICogcmVw cmVzZW50aW5nIHRoZSBjcmVhdGlvbiBjb21tYW5kLgorICovCitzdGF0aWMgT2JqVHJlZSAqCitk ZXBhcnNlX0NyZWF0ZVN0bXQoT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUpCit7CisJQ3Jl YXRlU3RtdCAqbm9kZSA9IChDcmVhdGVTdG10ICopIHBhcnNldHJlZTsKKwlSZWxhdGlvbglyZWxh dGlvbiA9IHJlbGF0aW9uX29wZW4ob2JqZWN0SWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJTGlzdAkg ICAqZHBjb250ZXh0OworCU9ialRyZWUgICAgKmNyZWF0ZVN0bXQ7CisJT2JqVHJlZSAgICAqdG1w OworCUxpc3QJICAgKmxpc3Q7CisJTGlzdENlbGwgICAqY2VsbDsKKwljaGFyCSAgICpmbXRzdHI7 CisKKwkvKgorCSAqIFR5cGVkIHRhYmxlcyB1c2UgYSBzbGlnaHRseSBkaWZmZXJlbnQgZm9ybWF0 IHN0cmluZzogd2UgbXVzdCBub3QgcHV0CisJICogdGFibGVfZWxlbWVudHMgd2l0aCBwYXJlbnRz IGRpcmVjdGx5IGluIHRoZSBmbXQgc3RyaW5nLCBiZWNhdXNlIGlmCisJICogdGhlcmUgYXJlIG5v IG9wdGlvbnMgdGhlIHBhcmVucyBtdXN0IG5vdCBiZSBlbWl0dGVkOyBhbmQgYWxzbywgdHlwZWQK KwkgKiB0YWJsZXMgZG8gbm90IGFsbG93IGZvciBpbmhlcml0YW5jZS4KKwkgKi8KKwlpZiAobm9k ZS0+b2ZUeXBlbmFtZSkKKwkJZm10c3RyID0gIkNSRUFURSAle3BlcnNpc3RlbmNlfXMgVEFCTEUg JXtpZl9ub3RfZXhpc3RzfXMgJXtpZGVudGl0eX1EICIKKwkJCSJPRiAle29mX3R5cGV9VCAle3Rh YmxlX2VsZW1lbnRzfXMgIgorCQkJIiV7d2l0aF9jbGF1c2V9cyAle29uX2NvbW1pdH1zICV7dGFi bGVzcGFjZX1zIjsKKwllbHNlCisJCWZtdHN0ciA9ICJDUkVBVEUgJXtwZXJzaXN0ZW5jZX1zIFRB QkxFICV7aWZfbm90X2V4aXN0c31zICV7aWRlbnRpdHl9RCAiCisJCQkiKCV7dGFibGVfZWxlbWVu dHM6LCB9cykgJXtpbmhlcml0c31zICIKKwkJCSIle3dpdGhfY2xhdXNlfXMgJXtvbl9jb21taXR9 cyAle3RhYmxlc3BhY2V9cyI7CisKKwljcmVhdGVTdG10ID0KKwkJbmV3X29ianRyZWVfVkEoZm10 c3RyLCAxLAorCQkJCQkgICAicGVyc2lzdGVuY2UiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkgICBn ZXRfcGVyc2lzdGVuY2Vfc3RyKHJlbGF0aW9uLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlKSk7CisK Kwl0bXAgPSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWUocmVsYXRpb24tPnJkX3JlbC0+cmVsbmFt ZXNwYWNlLAorCQkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlvbikpOwor CWFwcGVuZF9vYmplY3Rfb2JqZWN0KGNyZWF0ZVN0bXQsICJpZGVudGl0eSIsIHRtcCk7CisKKwlh cHBlbmRfc3RyaW5nX29iamVjdChjcmVhdGVTdG10LCAiaWZfbm90X2V4aXN0cyIsCisJCQkJCQkg bm9kZS0+aWZfbm90X2V4aXN0cyA/ICJJRiBOT1QgRVhJU1RTIiA6ICIiKTsKKworCWRwY29udGV4 dCA9IGRlcGFyc2VfY29udGV4dF9mb3IoUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24p LAorCQkJCQkJCQkJb2JqZWN0SWQpOworCisJaWYgKG5vZGUtPm9mVHlwZW5hbWUpCisJeworCQlM aXN0CSAgICp0YWJsZWVsdHMgPSBOSUw7CisKKwkJLyoKKwkJICogV2UgY2FuJ3QgcHV0IHRhYmxl IGVsZW1lbnRzIGRpcmVjdGx5IGluIHRoZSBmbXQgc3RyaW5nIGFzIGFuIGFycmF5CisJCSAqIHN1 cnJvdW5kZWQgYnkgcGFyZW5zIGhlcmUsIGJlY2F1c2UgYW4gZW1wdHkgY2xhdXNlIHdvdWxkIGNh dXNlIGEKKwkJICogc3ludGF4IGVycm9yLiAgVGhlcmVmb3JlLCB3ZSB1c2UgYW4gaW5kaXJlY3Rp b24gZWxlbWVudCBhbmQgc2V0CisJCSAqIHByZXNlbnQ9ZmFsc2Ugd2hlbiB0aGVyZSBhcmUgbm8g ZWxlbWVudHMuCisJCSAqLworCQlhcHBlbmRfc3RyaW5nX29iamVjdChjcmVhdGVTdG10LCAidGFi bGVfa2luZCIsICJ0eXBlZCIpOworCisJCXRtcCA9IG5ld19vYmp0cmVlX2Zvcl90eXBlKHJlbGF0 aW9uLT5yZF9yZWwtPnJlbG9mdHlwZSwgLTEpOworCQlhcHBlbmRfb2JqZWN0X29iamVjdChjcmVh dGVTdG10LCAib2ZfdHlwZSIsIHRtcCk7CisKKwkJdGFibGVlbHRzID0gZGVwYXJzZVRhYmxlRWxl bWVudHMocmVsYXRpb24sIG5vZGUtPnRhYmxlRWx0cywgZHBjb250ZXh0LAorCQkJCQkJCQkJCSB0 cnVlLAkJLyogdHlwZWQgdGFibGUgKi8KKwkJCQkJCQkJCQkgZmFsc2UpOwkvKiBub3QgY29tcG9z aXRlICovCisJCXRhYmxlZWx0cyA9IG9idGFpbkNvbnN0cmFpbnRzKHRhYmxlZWx0cywgb2JqZWN0 SWQsIEludmFsaWRPaWQpOworCQlpZiAodGFibGVlbHRzID09IE5JTCkKKwkJCXRtcCA9IG5ld19v Ymp0cmVlX1ZBKCIiLCAxLAorCQkJCQkJCQkgInByZXNlbnQiLCBPYmpUeXBlQm9vbCwgZmFsc2Up OworCQllbHNlCisJCQl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiKCV7ZWxlbWVudHM6LCB9cykiLCAx LAorCQkJCQkJCQkgImVsZW1lbnRzIiwgT2JqVHlwZUFycmF5LCB0YWJsZWVsdHMpOworCQlhcHBl bmRfb2JqZWN0X29iamVjdChjcmVhdGVTdG10LCAidGFibGVfZWxlbWVudHMiLCB0bXApOworCX0K KwllbHNlCisJeworCQlMaXN0CSAgICp0YWJsZWVsdHMgPSBOSUw7CisKKwkJLyoKKwkJICogVGhl cmUgaXMgbm8gbmVlZCB0byBwcm9jZXNzIExJS0UgY2xhdXNlcyBzZXBhcmF0ZWx5OyB0aGV5IGhh dmUKKwkJICogYWxyZWFkeSBiZWVuIHRyYW5zZm9ybWVkIGludG8gY29sdW1ucyBhbmQgY29uc3Ry YWludHMuCisJCSAqLworCQlhcHBlbmRfc3RyaW5nX29iamVjdChjcmVhdGVTdG10LCAidGFibGVf a2luZCIsICJwbGFpbiIpOworCisJCS8qCisJCSAqIFByb2Nlc3MgdGFibGUgZWxlbWVudHM6IGNv bHVtbiBkZWZpbml0aW9ucyBhbmQgY29uc3RyYWludHMuCU9ubHkKKwkJICogdGhlIGNvbHVtbiBk ZWZpbml0aW9ucyBhcmUgb2J0YWluZWQgZnJvbSB0aGUgcGFyc2Ugbm9kZSBpdHNlbGYuCVRvCisJ CSAqIGdldCBjb25zdHJhaW50cyB3ZSByZWx5IG9uIHBnX2NvbnN0cmFpbnQsIGJlY2F1c2UgdGhl IHBhcnNlIG5vZGUKKwkJICogbWlnaHQgYmUgbWlzc2luZyBzb21lIHRoaW5ncyBzdWNoIGFzIHRo ZSBuYW1lIG9mIHRoZSBjb25zdHJhaW50cy4KKwkJICovCisJCXRhYmxlZWx0cyA9IGRlcGFyc2VU YWJsZUVsZW1lbnRzKHJlbGF0aW9uLCBub2RlLT50YWJsZUVsdHMsIGRwY29udGV4dCwKKwkJCQkJ CQkJCQkgZmFsc2UsCQkvKiBub3QgdHlwZWQgdGFibGUgKi8KKwkJCQkJCQkJCQkgZmFsc2UpOwkv KiBub3QgY29tcG9zaXRlICovCisJCXRhYmxlZWx0cyA9IG9idGFpbkNvbnN0cmFpbnRzKHRhYmxl ZWx0cywgb2JqZWN0SWQsIEludmFsaWRPaWQpOworCisJCWFwcGVuZF9hcnJheV9vYmplY3QoY3Jl YXRlU3RtdCwgInRhYmxlX2VsZW1lbnRzIiwgdGFibGVlbHRzKTsKKworCQkvKgorCQkgKiBBZGQg aW5oZXJpdGFuY2Ugc3BlY2lmaWNhdGlvbi4gIFdlIGNhbm5vdCBzaW1wbHkgc2NhbiB0aGUgbGlz dCBvZgorCQkgKiBwYXJlbnRzIGZyb20gdGhlIHBhcnNlciBub2RlLCBiZWNhdXNlIHRoYXQgbWF5 IGxhY2sgdGhlIGFjdHVhbAorCQkgKiBxdWFsaWZpZWQgbmFtZXMgb2YgdGhlIHBhcmVudCByZWxh dGlvbnMuICBSYXRoZXIgdGhhbiB0cnlpbmcgdG8KKwkJICogcmUtcmVzb2x2ZSB0aGVtIGZyb20g dGhlIGluZm9ybWF0aW9uIGluIHRoZSBwYXJzZSBub2RlLCBpdCBzZWVtcworCQkgKiBtb3JlIGFj Y3VyYXRlIGFuZCBjb252ZW5pZW50IHRvIGdyYWIgaXQgZnJvbSBwZ19pbmhlcml0cy4KKwkJICov CisJCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJJTkhFUklUUyAoJXtwYXJlbnRzOiwgfUQpIiwgMCk7 CisJCWlmIChsaXN0X2xlbmd0aChub2RlLT5pbmhSZWxhdGlvbnMpID4gMCkKKwkJeworCQkJTGlz dAkgICAqcGFyZW50cyA9IE5JTDsKKwkJCVJlbGF0aW9uCWluaFJlbDsKKwkJCVN5c1NjYW5EZXNj IHNjYW47CisJCQlTY2FuS2V5RGF0YSBrZXk7CisJCQlIZWFwVHVwbGUJdHVwbGU7CisKKwkJCWlu aFJlbCA9IHRhYmxlX29wZW4oSW5oZXJpdHNSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsK KworCQkJU2NhbktleUluaXQoJmtleSwKKwkJCQkJCUFudW1fcGdfaW5oZXJpdHNfaW5ocmVsaWQs CisJCQkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJCQlPYmplY3RJZEdl dERhdHVtKG9iamVjdElkKSk7CisKKwkJCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4oaW5oUmVs LCBJbmhlcml0c1JlbGlkU2Vxbm9JbmRleElkLAorCQkJCQkJCQkJICB0cnVlLCBOVUxMLCAxLCAm a2V5KTsKKworCQkJd2hpbGUgKEhlYXBUdXBsZUlzVmFsaWQodHVwbGUgPSBzeXN0YWJsZV9nZXRu ZXh0KHNjYW4pKSkKKwkJCXsKKwkJCQlPYmpUcmVlICAgICpwYXJlbnQ7CisJCQkJRm9ybV9wZ19p bmhlcml0cyBmb3JtSW5oID0gKEZvcm1fcGdfaW5oZXJpdHMpIEdFVFNUUlVDVCh0dXBsZSk7CisK KwkJCQlwYXJlbnQgPSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUmVsYXRpb25SZWxhdGlv bklkLAorCQkJCQkJCQkJCQkJCSBmb3JtSW5oLT5pbmhwYXJlbnQpOworCQkJCXBhcmVudHMgPSBs YXBwZW5kKHBhcmVudHMsIG5ld19vYmplY3Rfb2JqZWN0KHBhcmVudCkpOworCQkJfQorCisJCQlz eXN0YWJsZV9lbmRzY2FuKHNjYW4pOworCQkJdGFibGVfY2xvc2UoaW5oUmVsLCBSb3dFeGNsdXNp dmVMb2NrKTsKKworCQkJYXBwZW5kX2FycmF5X29iamVjdCh0bXAsICJwYXJlbnRzIiwgcGFyZW50 cyk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlhcHBlbmRfbnVsbF9vYmplY3QodG1wLCAicGFyZW50 cyIpOworCQkJYXBwZW5kX2Jvb2xfb2JqZWN0KHRtcCwgInByZXNlbnQiLCBmYWxzZSk7CisJCX0K KwkJYXBwZW5kX29iamVjdF9vYmplY3QoY3JlYXRlU3RtdCwgImluaGVyaXRzIiwgdG1wKTsKKwl9 CisKKwl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiVEFCTEVTUEFDRSAle3RhYmxlc3BhY2V9SSIsIDAp OworCWlmIChub2RlLT50YWJsZXNwYWNlbmFtZSkKKwkJYXBwZW5kX3N0cmluZ19vYmplY3QodG1w LCAidGFibGVzcGFjZSIsIG5vZGUtPnRhYmxlc3BhY2VuYW1lKTsKKwllbHNlCisJeworCQlhcHBl bmRfbnVsbF9vYmplY3QodG1wLCAidGFibGVzcGFjZSIpOworCQlhcHBlbmRfYm9vbF9vYmplY3Qo dG1wLCAicHJlc2VudCIsIGZhbHNlKTsKKwl9CisJYXBwZW5kX29iamVjdF9vYmplY3QoY3JlYXRl U3RtdCwgInRhYmxlc3BhY2UiLCB0bXApOworCisJYXBwZW5kX29iamVjdF9vYmplY3QoY3JlYXRl U3RtdCwgIm9uX2NvbW1pdCIsCisJCQkJCQkgZGVwYXJzZV9PbkNvbW1pdENsYXVzZShub2RlLT5v bmNvbW1pdCkpOworCisJLyogV0lUSCBjbGF1c2UgKi8KKwl0bXAgPSBuZXdfb2JqdHJlZV9WQSgi V0lUSCAoJXt3aXRoOiwgfXMpIiwgMCk7CisJbGlzdCA9IE5JTDsKKworCWZvcmVhY2goY2VsbCwg bm9kZS0+b3B0aW9ucykKKwl7CisJCU9ialRyZWUJICAgKnRtcDI7CisJCURlZkVsZW0JKm9wdCA9 IChEZWZFbGVtICopIGxmaXJzdChjZWxsKTsKKworCQl0bXAyID0gZGVwYXJzZV9EZWZFbGVtKG9w dCwgZmFsc2UpOworCQlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXAy KSk7CisJfQorCisJaWYgKGxpc3QpCisJCWFwcGVuZF9hcnJheV9vYmplY3QodG1wLCAid2l0aCIs IGxpc3QpOworCWVsc2UKKwkJYXBwZW5kX2Jvb2xfb2JqZWN0KHRtcCwgInByZXNlbnQiLCBmYWxz ZSk7CisKKwlhcHBlbmRfb2JqZWN0X29iamVjdChjcmVhdGVTdG10LCAid2l0aF9jbGF1c2UiLCB0 bXApOworCisJcmVsYXRpb25fY2xvc2UocmVsYXRpb24sIEFjY2Vzc1NoYXJlTG9jayk7CisKKwly ZXR1cm4gY3JlYXRlU3RtdDsKK30KKworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9BbHRlclRh YmxlU3RtdChDb2xsZWN0ZWRDb21tYW5kICpjbWQpCit7CisJT2JqVHJlZQkgICAqYWx0ZXJUYWJs ZVN0bXQ7CisJT2JqVHJlZQkgICAqdG1wOworCU9ialRyZWUJICAgKnRtcDI7CisJTGlzdAkgICAq ZHBjb250ZXh0OworCVJlbGF0aW9uCXJlbDsKKwlMaXN0CSAgICpzdWJjbWRzID0gTklMOworCUxp c3RDZWxsICAgKmNlbGw7CisJY2hhcgkgICAqZm10c3RyOworCWNvbnN0IGNoYXIgKnJlbHR5cGU7 CisJYm9vbAkJaXN0eXBlID0gZmFsc2U7CisKKwlBc3NlcnQoY21kLT50eXBlID09IFNDVF9BbHRl clRhYmxlKTsKKworCXJlbCA9IHJlbGF0aW9uX29wZW4oY21kLT5kLmFsdGVyVGFibGUub2JqZWN0 SWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJZHBjb250ZXh0ID0gZGVwYXJzZV9jb250ZXh0X2ZvcihS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLAorCQkJCQkJCQkJY21kLT5kLmFsdGVyVGFibGUu b2JqZWN0SWQpOworCisJc3dpdGNoIChyZWwtPnJkX3JlbC0+cmVsa2luZCkKKwl7CisJCWNhc2Ug UkVMS0lORF9SRUxBVElPTjoKKwkJCXJlbHR5cGUgPSAiVEFCTEUiOworCQkJYnJlYWs7CisJCWNh c2UgUkVMS0lORF9JTkRFWDoKKwkJCXJlbHR5cGUgPSAiSU5ERVgiOworCQkJYnJlYWs7CisJCWNh c2UgUkVMS0lORF9WSUVXOgorCQkJcmVsdHlwZSA9ICJWSUVXIjsKKwkJCWJyZWFrOworCQljYXNl IFJFTEtJTkRfQ09NUE9TSVRFX1RZUEU6CisJCQlyZWx0eXBlID0gIlRZUEUiOworCQkJaXN0eXBl ID0gdHJ1ZTsKKwkJCWJyZWFrOworCQljYXNlIFJFTEtJTkRfRk9SRUlHTl9UQUJMRToKKwkJCXJl bHR5cGUgPSAiRk9SRUlHTiBUQUJMRSI7CisJCQlicmVhazsKKworCQkvKiBUT0RPIHN1cHBvcnQg Zm9yIHBhcnRpdGlvbmVkIHRhYmxlICovCisKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1 bmV4cGVjdGVkIHJlbGtpbmQgJWQiLCByZWwtPnJkX3JlbC0+cmVsa2luZCk7CisJCQlyZWx0eXBl ID0gTlVMTDs7CisJfQorCisJZm10c3RyID0gcHNwcmludGYoIkFMVEVSICVzICUle2lkZW50aXR5 fUQgJSV7c3ViY21kczosIH1zIiwgcmVsdHlwZSk7CisJYWx0ZXJUYWJsZVN0bXQgPSBuZXdfb2Jq dHJlZV9WQShmbXRzdHIsIDApOworCisJdG1wID0gbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lKHJl bC0+cmRfcmVsLT5yZWxuYW1lc3BhY2UsCisJCQkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25O YW1lKHJlbCkpOworCWFwcGVuZF9vYmplY3Rfb2JqZWN0KGFsdGVyVGFibGVTdG10LCAiaWRlbnRp dHkiLCB0bXApOworCisJZm9yZWFjaChjZWxsLCBjbWQtPmQuYWx0ZXJUYWJsZS5zdWJjbWRzKQor CXsKKwkJQ29sbGVjdGVkQVRTdWJjbWQgKnN1YiA9IChDb2xsZWN0ZWRBVFN1YmNtZCAqKSBsZmly c3QoY2VsbCk7CisJCUFsdGVyVGFibGVDbWQJKnN1YmNtZCA9IChBbHRlclRhYmxlQ21kICopIHN1 Yi0+cGFyc2V0cmVlOworCQlPYmpUcmVlCSAgICp0cmVlOworCisJCUFzc2VydChJc0Eoc3ViY21k LCBBbHRlclRhYmxlQ21kKSk7CisKKwkJc3dpdGNoIChzdWJjbWQtPnN1YnR5cGUpCisJCXsKKwkJ CWNhc2UgQVRfQWRkQ29sdW1uOgorCQkJY2FzZSBBVF9BZGRDb2x1bW5SZWN1cnNlOgorCQkJCS8q IFhYWCBuZWVkIHRvIHNldCB0aGUgInJlY3Vyc2UiIGJpdCBzb21ld2hlcmU/ICovCisJCQkJQXNz ZXJ0KElzQShzdWJjbWQtPmRlZiwgQ29sdW1uRGVmKSk7CisJCQkJdHJlZSA9IGRlcGFyc2VfQ29s dW1uRGVmKHJlbCwgZHBjb250ZXh0LCBmYWxzZSwKKwkJCQkJCQkJCQkgKENvbHVtbkRlZiAqKSBz dWJjbWQtPmRlZiwgdHJ1ZSk7CisJCQkJZm10c3RyID0gcHNwcmludGYoIkFERCAlcyAlJXtkZWZp bml0aW9ufXMiLAorCQkJCQkJCQkgIGlzdHlwZSA/ICJBVFRSSUJVVEUiIDogIkNPTFVNTiIpOwor CQkJCXRtcCA9IG5ld19vYmp0cmVlX1ZBKGZtdHN0ciwgMiwKKwkJCQkJCQkJCSAidHlwZSIsIE9i alR5cGVTdHJpbmcsICJhZGQgY29sdW1uIiwKKwkJCQkJCQkJCSAiZGVmaW5pdGlvbiIsIE9ialR5 cGVPYmplY3QsIHRyZWUpOworCQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmpl Y3Rfb2JqZWN0KHRtcCkpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0FkZEluZGV4Q29uc3Ry YWludDoKKwkJCQl7CisJCQkJCUluZGV4U3RtdCAgKmlzdG10OworCQkJCQlSZWxhdGlvbglpZHg7 CisJCQkJCWNvbnN0IGNoYXIgKmlkeG5hbWU7CisJCQkJCU9pZAkJCWNvbnN0ck9pZCA9IHN1Yi0+ YWRkcmVzcy5vYmplY3RJZDsKKworCQkJCQlBc3NlcnQoSXNBKHN1YmNtZC0+ZGVmLCBJbmRleFN0 bXQpKTsKKwkJCQkJaXN0bXQgPSAoSW5kZXhTdG10ICopIHN1YmNtZC0+ZGVmOworCisJCQkJCUFz c2VydChpc3RtdC0+aXNjb25zdHJhaW50ICYmIGlzdG10LT51bmlxdWUpOworCisJCQkJCWlkeCA9 IHJlbGF0aW9uX29wZW4oaXN0bXQtPmluZGV4T2lkLCBBY2Nlc3NTaGFyZUxvY2spOworCQkJCQlp ZHhuYW1lID0gUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaWR4KTsKKworCQkJCQl0bXAgPSBuZXdf b2JqdHJlZV9WQSgiQUREIENPTlNUUkFJTlQgJXtuYW1lfUkgJXtjb25zdHJhaW50X3R5cGV9cyBV U0lORyBJTkRFWCAlaW5kZXhfbmFtZX1JICV7ZGVmZXJyYWJsZX1zICV7aW5pdF9kZWZlcnJlZH1z IiwKKwkJCQkJCQkJCQkgNCwgInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAiYWRkIGNvbnN0cmFpbnQg dXNpbmcgaW5kZXgiLAorCQkJCQkJCQkJCSAibmFtZSIsIE9ialR5cGVTdHJpbmcsIGdldF9jb25z dHJhaW50X25hbWUoY29uc3RyT2lkKSwKKwkJCQkJCQkJCQkgImNvbnN0cmFpbnRfdHlwZSIsIE9i alR5cGVTdHJpbmcsCisJCQkJCQkJCQkJIGlzdG10LT5wcmltYXJ5ID8gIlBSSU1BUlkgS0VZIiA6 ICJVTklRVUUiLAorCQkJCQkJCQkJCSAiaW5kZXhfbmFtZSIsIE9ialR5cGVTdHJpbmcsIGlkeG5h bWUpOworCisJCQkJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHRtcCwgImRlZmVycmFibGUiLCBpc3Rt dC0+ZGVmZXJyYWJsZSA/CisJCQkJCQkJCQkJICJERUZFUlJBQkxFIiA6ICJOT1QgREVGRVJSQUJM RSIpOworCQkJCQlhcHBlbmRfc3RyaW5nX29iamVjdCh0bXAsICJpbml0X2RlZmVycmVkIiwgaXN0 bXQtPmluaXRkZWZlcnJlZCA/CisJCQkJCQkJCQkJICJJTklUSUFMTFkgREVGRVJSRUQiIDogIklO SVRJQUxMWSBJTU1FRElBVEUiKTsKKworCQkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJjbWRzLCBu ZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKworCQkJCQlyZWxhdGlvbl9jbG9zZShpZHgsIEFjY2Vz c1NoYXJlTG9jayk7CisJCQkJfQorCQkJCWJyZWFrOworCisJCQljYXNlIEFUX1JlQWRkSW5kZXg6 CisJCQljYXNlIEFUX1JlQWRkQ29uc3RyYWludDoKKwkJCWNhc2UgQVRfUmVBZGRDb21tZW50Ogor CQkJY2FzZSBBVF9SZXBsYWNlUmVsT3B0aW9uczoKKwkJCQkvKiBTdWJ0eXBlcyB1c2VkIGZvciBp bnRlcm5hbCBvcGVyYXRpb25zOyBub3RoaW5nIHRvIGRvIGhlcmUgKi8KKwkJCQlicmVhazsKKwor CQkJY2FzZSBBVF9BZGRDb2x1bW5Ub1ZpZXc6CisJCQkJLyogQ1JFQVRFIE9SIFJFUExBQ0UgVklF VyAtLSBub3RoaW5nIHRvIGRvIGhlcmUgKi8KKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9Db2x1 bW5EZWZhdWx0OgorCQkJCWlmIChzdWJjbWQtPmRlZiA9PSBOVUxMKQorCQkJCXsKKwkJCQkJdG1w ID0gbmV3X29ianRyZWVfVkEoIkFMVEVSIENPTFVNTiAle2NvbHVtbn1JIERST1AgREVGQVVMVCIs CisJCQkJCQkJCQkJIDEsICJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImRyb3AgZGVmYXVsdCIpOwor CQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQlMaXN0CSAgICpkcGNvbnRleHQ7CisJCQkJCUhl YXBUdXBsZQlhdHRydHVwOworCQkJCQlBdHRyTnVtYmVyCWF0dG5vOworCisJCQkJCXRtcCA9IG5l d19vYmp0cmVlX1ZBKCJBTFRFUiBDT0xVTU4gJXtjb2x1bW59SSBTRVQgREVGQVVMVCAle2RlZmlu aXRpb259cyIsCisJCQkJCQkJCQkJIDEsICJ0eXBlIiwgT2JqVHlwZVN0cmluZywgInNldCBkZWZh dWx0Iik7CisKKwkJCQkJZHBjb250ZXh0ID0gZGVwYXJzZV9jb250ZXh0X2ZvcihSZWxhdGlvbkdl dFJlbGF0aW9uTmFtZShyZWwpLAorCQkJCQkJCQkJCQkJCVJlbGF0aW9uR2V0UmVsaWQocmVsKSk7 CisJCQkJCWF0dHJ0dXAgPSBTZWFyY2hTeXNDYWNoZUF0dE5hbWUoUmVsYXRpb25HZXRSZWxpZChy ZWwpLCBzdWJjbWQtPm5hbWUpOworCQkJCQlhdHRubyA9ICgoRm9ybV9wZ19hdHRyaWJ1dGUpIEdF VFNUUlVDVChhdHRydHVwKSktPmF0dG51bTsKKwkJCQkJYXBwZW5kX3N0cmluZ19vYmplY3QodG1w LCAiZGVmaW5pdGlvbiIsCisJCQkJCQkJCQkJIFJlbGF0aW9uR2V0Q29sdW1uRGVmYXVsdChyZWws IGF0dG5vLCBkcGNvbnRleHQpKTsKKwkJCQkJUmVsZWFzZVN5c0NhY2hlKGF0dHJ0dXApOworCQkJ CX0KKwkJCQlhcHBlbmRfc3RyaW5nX29iamVjdCh0bXAsICJjb2x1bW4iLCBzdWJjbWQtPm5hbWUp OworCisJCQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1w KSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfRHJvcE5vdE51bGw6CisJCQkJdG1wID0gbmV3 X29ianRyZWVfVkEoIkFMVEVSIENPTFVNTiAle2NvbHVtbn1JIERST1AgTk9UIE5VTEwiLAorCQkJ CQkJCQkJIDEsICJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImRyb3Agbm90IG51bGwiKTsKKwkJCQlh cHBlbmRfc3RyaW5nX29iamVjdCh0bXAsICJjb2x1bW4iLCBzdWJjbWQtPm5hbWUpOworCQkJCXN1 YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCQkJCWJy ZWFrOworCisJCQljYXNlIEFUX1NldE5vdE51bGw6CisJCQkJdG1wID0gbmV3X29ianRyZWVfVkEo IkFMVEVSIENPTFVNTiAle2NvbHVtbn1JIFNFVCBOT1QgTlVMTCIsCisJCQkJCQkJCQkgMSwgInR5 cGUiLCBPYmpUeXBlU3RyaW5nLCAic2V0IG5vdCBudWxsIik7CisJCQkJYXBwZW5kX3N0cmluZ19v YmplY3QodG1wLCAiY29sdW1uIiwgc3ViY21kLT5uYW1lKTsKKwkJCQlzdWJjbWRzID0gbGFwcGVu ZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKwkJCQlicmVhazsKKworCQkJY2Fz ZSBBVF9TZXRTdGF0aXN0aWNzOgorCQkJCXsKKwkJCQkJQXNzZXJ0KElzQShzdWJjbWQtPmRlZiwg SW50ZWdlcikpOworCQkJCQl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiQUxURVIgQ09MVU1OICV7Y29s dW1ufUkgU0VUIFNUQVRJU1RJQ1MgJXtzdGF0aXN0aWNzfW4iLAorCQkJCQkJCQkJCSAzLCAidHlw ZSIsIE9ialR5cGVTdHJpbmcsICJzZXQgc3RhdGlzdGljcyIsCisJCQkJCQkJCQkJICJjb2x1bW4i LCBPYmpUeXBlU3RyaW5nLCBzdWJjbWQtPm5hbWUsCisJCQkJCQkJCQkJICJzdGF0aXN0aWNzIiwg T2JqVHlwZUludGVnZXIsCisJCQkJCQkJCQkJIGludFZhbCgoSW50ZWdlciAqKSBzdWJjbWQtPmRl ZikpOworCQkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0 bXApKTsKKwkJCQl9CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfU2V0T3B0aW9uczoKKwkJCWNh c2UgQVRfUmVzZXRPcHRpb25zOgorCQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19v YmplY3Rfb2JqZWN0KAorCQkJCQkJCQkJICBkZXBhcnNlX0NvbHVtblNldE9wdGlvbnMoc3ViY21k KSkpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX1NldFN0b3JhZ2U6CisJCQkJQXNzZXJ0KElz QShzdWJjbWQtPmRlZiwgU3RyaW5nKSk7CisJCQkJdG1wID0gbmV3X29ianRyZWVfVkEoIkFMVEVS IENPTFVNTiAle2NvbHVtbn1JIFNFVCBTVE9SQUdFICV7c3RvcmFnZX1zIiwKKwkJCQkJCQkJCSAz LCAidHlwZSIsIE9ialR5cGVTdHJpbmcsICJzZXQgc3RvcmFnZSIsCisJCQkJCQkJCQkgImNvbHVt biIsIE9ialR5cGVTdHJpbmcsIHN1YmNtZC0+bmFtZSwKKwkJCQkJCQkJCSAic3RvcmFnZSIsIE9i alR5cGVTdHJpbmcsCisJCQkJCQkJCQkgc3RyVmFsKChTdHJpbmcgKikgc3ViY21kLT5kZWYpKTsK KwkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsK KwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9Ecm9wQ29sdW1uUmVjdXJzZToKKwkJCWNhc2UgQVRf RHJvcENvbHVtbjoKKwkJCQlmbXRzdHIgPSBwc3ByaW50ZigiRFJPUCAlcyAlJXtjb2x1bW59SSAl JXtjYXNjYWRlfXMiLAorCQkJCQkJCQkgIGlzdHlwZSA/ICJBVFRSSUJVVEUiIDogIkNPTFVNTiIp OworCQkJCXRtcCA9IG5ld19vYmp0cmVlX1ZBKGZtdHN0ciwgMiwKKwkJCQkJCQkJCSAidHlwZSIs IE9ialR5cGVTdHJpbmcsICJkcm9wIGNvbHVtbiIsCisJCQkJCQkJCQkgImNvbHVtbiIsIE9ialR5 cGVTdHJpbmcsIHN1YmNtZC0+bmFtZSk7CisJCQkJdG1wMiA9IG5ld19vYmp0cmVlX1ZBKCJDQVND QURFIiwgMSwKKwkJCQkJCQkJCSAgInByZXNlbnQiLCBPYmpUeXBlQm9vbCwgc3ViY21kLT5iZWhh dmlvcik7CisJCQkJYXBwZW5kX29iamVjdF9vYmplY3QodG1wLCAiY2FzY2FkZSIsIHRtcDIpOwor CisJCQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1wKSk7 CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfQWRkSW5kZXg6CisJCQkJeworCQkJCQlPaWQJCQlp ZHhPaWQgPSBzdWItPmFkZHJlc3Mub2JqZWN0SWQ7CisJCQkJCUluZGV4U3RtdCAgKmlzdG10Owor CQkJCQlSZWxhdGlvbglpZHg7CisJCQkJCWNvbnN0IGNoYXIgKmlkeG5hbWU7CisJCQkJCU9pZAkJ CWNvbnN0ck9pZDsKKworCQkJCQlBc3NlcnQoSXNBKHN1YmNtZC0+ZGVmLCBJbmRleFN0bXQpKTsK KwkJCQkJaXN0bXQgPSAoSW5kZXhTdG10ICopIHN1YmNtZC0+ZGVmOworCisJCQkJCWlmICghaXN0 bXQtPmlzY29uc3RyYWludCkKKwkJCQkJCWJyZWFrOworCisJCQkJCWlkeCA9IHJlbGF0aW9uX29w ZW4oaWR4T2lkLCBBY2Nlc3NTaGFyZUxvY2spOworCQkJCQlpZHhuYW1lID0gUmVsYXRpb25HZXRS ZWxhdGlvbk5hbWUoaWR4KTsKKworCQkJCQljb25zdHJPaWQgPSBnZXRfcmVsYXRpb25fY29uc3Ry YWludF9vaWQoCisJCQkJCQljbWQtPmQuYWx0ZXJUYWJsZS5vYmplY3RJZCwgaWR4bmFtZSwgZmFs c2UpOworCisJCQkJCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJBREQgQ09OU1RSQUlOVCAle25hbWV9 SSAle2RlZmluaXRpb259cyIsCisJCQkJCQkJCQkJIDMsICJ0eXBlIiwgT2JqVHlwZVN0cmluZywg ImFkZCBjb25zdHJhaW50IiwKKwkJCQkJCQkJCQkgIm5hbWUiLCBPYmpUeXBlU3RyaW5nLCBpZHhu YW1lLAorCQkJCQkJCQkJCSAiZGVmaW5pdGlvbiIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkJCQkJ IHBnX2dldF9jb25zdHJhaW50ZGVmX2NvbW1hbmRfc2ltcGxlKGNvbnN0ck9pZCkpOworCQkJCQlz dWJjbWRzID0gbGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKworCQkJ CQlyZWxhdGlvbl9jbG9zZShpZHgsIEFjY2Vzc1NoYXJlTG9jayk7CisJCQkJfQorCQkJCWJyZWFr OworCisJCQljYXNlIEFUX0FkZENvbnN0cmFpbnQ6CisJCQljYXNlIEFUX0FkZENvbnN0cmFpbnRS ZWN1cnNlOgorCQkJCXsKKwkJCQkJLyogWFhYIG5lZWQgdG8gc2V0IHRoZSAicmVjdXJzZSIgYml0 IHNvbWV3aGVyZT8gKi8KKwkJCQkJT2lkCQkJY29uc3RyT2lkID0gc3ViLT5hZGRyZXNzLm9iamVj dElkOworCisJCQkJCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJBREQgQ09OU1RSQUlOVCAle25hbWV9 SSAle2RlZmluaXRpb259cyIsCisJCQkJCQkJCQkJIDMsICJ0eXBlIiwgT2JqVHlwZVN0cmluZywg ImFkZCBjb25zdHJhaW50IiwKKwkJCQkJCQkJCQkgIm5hbWUiLCBPYmpUeXBlU3RyaW5nLCBnZXRf Y29uc3RyYWludF9uYW1lKGNvbnN0ck9pZCksCisJCQkJCQkJCQkJICJkZWZpbml0aW9uIiwgT2Jq VHlwZVN0cmluZywKKwkJCQkJCQkJCQkgcGdfZ2V0X2NvbnN0cmFpbnRkZWZfY29tbWFuZF9zaW1w bGUoY29uc3RyT2lkKSk7CisJCQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmpl Y3Rfb2JqZWN0KHRtcCkpOworCQkJCX0KKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9BbHRlckNv bnN0cmFpbnQ6CisJCQkJeworCQkJCQlPaWQJCWNvbnN0ck9pZCA9IHN1Yi0+YWRkcmVzcy5vYmpl Y3RJZDsKKwkJCQkJQ29uc3RyYWludCAqYyA9IChDb25zdHJhaW50ICopIHN1YmNtZC0+ZGVmOwor CisJCQkJCS8qIGlmIG5vIGNvbnN0cmFpbnQgd2FzIGFsdGVyZWQsIHNpbGVudGx5IHNraXAgaXQg Ki8KKwkJCQkJaWYgKCFPaWRJc1ZhbGlkKGNvbnN0ck9pZCkpCisJCQkJCQlicmVhazsKKworCQkJ CQlBc3NlcnQoSXNBKGMsIENvbnN0cmFpbnQpKTsKKwkJCQkJdG1wID0gbmV3X29ianRyZWVfVkEo IkFMVEVSIENPTlNUUkFJTlQgJXtuYW1lfUkgJXtkZWZlcnJhYmxlfXMgJXtpbml0X2RlZmVycmVk fXMiLAorCQkJCQkJCQkJCSAyLCAidHlwZSIsIE9ialR5cGVTdHJpbmcsICJhbHRlciBjb25zdHJh aW50IiwKKwkJCQkJCQkJCQkgIm5hbWUiLCBPYmpUeXBlU3RyaW5nLCBnZXRfY29uc3RyYWludF9u YW1lKGNvbnN0ck9pZCkpOworCQkJCQlhcHBlbmRfc3RyaW5nX29iamVjdCh0bXAsICJkZWZlcnJh YmxlIiwgYy0+ZGVmZXJyYWJsZSA/CisJCQkJCQkJCQkJICJERUZFUlJBQkxFIiA6ICJOT1QgREVG RVJSQUJMRSIpOworCQkJCQlhcHBlbmRfc3RyaW5nX29iamVjdCh0bXAsICJpbml0X2RlZmVycmVk IiwgYy0+aW5pdGRlZmVycmVkID8KKwkJCQkJCQkJCQkgIklOSVRJQUxMWSBERUZFUlJFRCIgOiAi SU5JVElBTExZIElNTUVESUFURSIpOworCQkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJjbWRzLCBu ZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKwkJCQl9CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRf VmFsaWRhdGVDb25zdHJhaW50UmVjdXJzZToKKwkJCWNhc2UgQVRfVmFsaWRhdGVDb25zdHJhaW50 OgorCQkJCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJWQUxJREFURSBDT05TVFJBSU5UICV7Y29uc3Ry YWludH1JIiwgMiwKKwkJCQkJCQkJCSAidHlwZSIsIE9ialR5cGVTdHJpbmcsICJ2YWxpZGF0ZSBj b25zdHJhaW50IiwKKwkJCQkJCQkJCSAiY29uc3RyYWludCIsIE9ialR5cGVTdHJpbmcsIHN1YmNt ZC0+bmFtZSk7CisJCQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmpl Y3QodG1wKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfRHJvcENvbnN0cmFpbnRSZWN1cnNl OgorCQkJY2FzZSBBVF9Ecm9wQ29uc3RyYWludDoKKwkJCQl0bXAgPSBuZXdfb2JqdHJlZV9WQSgi RFJPUCBDT05TVFJBSU5UICV7Y29uc3RyYWludH1JIiwgMiwKKwkJCQkJCQkJCSAidHlwZSIsIE9i alR5cGVTdHJpbmcsICJkcm9wIGNvbnN0cmFpbnQiLAorCQkJCQkJCQkJICJjb25zdHJhaW50Iiwg T2JqVHlwZVN0cmluZywgc3ViY21kLT5uYW1lKTsKKwkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJj bWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9B bHRlckNvbHVtblR5cGU6CisJCQkJeworCQkJCQlUdXBsZURlc2MgdHVwZGVzYyA9IFJlbGF0aW9u R2V0RGVzY3IocmVsKTsKKwkJCQkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0OworCQkJCQlDb2x1bW5E ZWYJICAgKmRlZjsKKworCQkJCQlhdHQgPSAmKHR1cGRlc2MtPmF0dHJzW3N1Yi0+YWRkcmVzcy5v YmplY3RTdWJJZCAtIDFdKTsKKwkJCQkJZGVmID0gKENvbHVtbkRlZiAqKSBzdWJjbWQtPmRlZjsK KwkJCQkJQXNzZXJ0KElzQShkZWYsIENvbHVtbkRlZikpOworCisJCQkJCWZtdHN0ciA9IHBzcHJp bnRmKCJBTFRFUiAlcyAlJXtjb2x1bW59SSBTRVQgREFUQSBUWVBFICUle2RhdGF0eXBlfVQgJSV7 Y29sbGF0aW9ufXMgJXMiLAorCQkJCQkJCQkJICBpc3R5cGUgPyAiQVRUUklCVVRFIiA6ICJDT0xV TU4iLAorCQkJCQkJCQkJICBpc3R5cGUgPyAiJXtjYXNjYWRlfXMiIDogIiV7dXNpbmd9cyIpOwor CisJCQkJCXRtcCA9IG5ld19vYmp0cmVlX1ZBKGZtdHN0ciwgMiwKKwkJCQkJCQkJCQkgInR5cGUi LCBPYmpUeXBlU3RyaW5nLCAiYWx0ZXIgY29sdW1uIHR5cGUiLAorCQkJCQkJCQkJCSAiY29sdW1u IiwgT2JqVHlwZVN0cmluZywgc3ViY21kLT5uYW1lKTsKKwkJCQkJLyogYWRkIHRoZSBUWVBFIGNs YXVzZSAqLworCQkJCQlhcHBlbmRfb2JqZWN0X29iamVjdCh0bXAsICJkYXRhdHlwZSIsCisJCQkJ CQkJCQkJIG5ld19vYmp0cmVlX2Zvcl90eXBlKGF0dC0+YXR0dHlwaWQsCisJCQkJCQkJCQkJCQkJ CQkgIGF0dC0+YXR0dHlwbW9kKSk7CisKKwkJCQkJLyogYWRkIGEgQ09MTEFURSBjbGF1c2UsIGlm IG5lZWRlZCAqLworCQkJCQl0bXAyID0gbmV3X29ianRyZWVfVkEoIkNPTExBVEUgJXtuYW1lfUQi LCAwKTsKKwkJCQkJaWYgKE9pZElzVmFsaWQoYXR0LT5hdHRjb2xsYXRpb24pKQorCQkJCQl7CisJ CQkJCQlPYmpUcmVlICpjb2xsbmFtZTsKKworCQkJCQkJY29sbG5hbWUgPSBuZXdfb2JqdHJlZV9m b3JfcXVhbG5hbWVfaWQoQ29sbGF0aW9uUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJCQkJCSAgIGF0 dC0+YXR0Y29sbGF0aW9uKTsKKwkJCQkJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHRtcDIsICJuYW1l IiwgY29sbG5hbWUpOworCQkJCQl9CisJCQkJCWVsc2UKKwkJCQkJCWFwcGVuZF9ib29sX29iamVj dCh0bXAyLCAicHJlc2VudCIsIGZhbHNlKTsKKwkJCQkJYXBwZW5kX29iamVjdF9vYmplY3QodG1w LCAiY29sbGF0aW9uIiwgdG1wMik7CisKKwkJCQkJLyogaWYgbm90IGEgY29tcG9zaXRlIHR5cGUs IGFkZCB0aGUgVVNJTkcgY2xhdXNlICovCisJCQkJCWlmICghaXN0eXBlKQorCQkJCQl7CisJCQkJ CQkvKgorCQkJCQkJICogSWYgdGhlcmUncyBhIFVTSU5HIGNsYXVzZSwgdHJhbnNmb3JtQWx0ZXJU YWJsZVN0bXQKKwkJCQkJCSAqIHJhbiBpdCB0aHJvdWdoIHRyYW5zZm9ybUV4cHIgYW5kIHN0b3Jl ZCB0aGUKKwkJCQkJCSAqIHJlc3VsdGluZyBub2RlIGluIGNvb2tlZF9kZWZhdWx0LCB3aGljaCB3 ZSBjYW4gdXNlCisJCQkJCQkgKiBoZXJlLgorCQkJCQkJICovCisJCQkJCQl0bXAyID0gbmV3X29i anRyZWVfVkEoIlVTSU5HICV7ZXhwcmVzc2lvbn1zIiwgMCk7CisJCQkJCQlpZiAoZGVmLT5yYXdf ZGVmYXVsdCkKKwkJCQkJCXsKKwkJCQkJCQlEYXR1bQlkZXBhcnNlZDsKKwkJCQkJCQljaGFyICAg KmRlZmV4cHI7CisKKwkJCQkJCQlkZWZleHByID0gbm9kZVRvU3RyaW5nKGRlZi0+Y29va2VkX2Rl ZmF1bHQpOworCQkJCQkJCWRlcGFyc2VkID0gRGlyZWN0RnVuY3Rpb25DYWxsMihwZ19nZXRfZXhw ciwKKwkJCQkJCQkJCQkJCQkJICAgQ1N0cmluZ0dldFRleHREYXR1bShkZWZleHByKSwKKwkJCQkJ CQkJCQkJCQkJICAgUmVsYXRpb25HZXRSZWxpZChyZWwpKTsKKwkJCQkJCQlhcHBlbmRfc3RyaW5n X29iamVjdCh0bXAyLCAiZXhwcmVzc2lvbiIsCisJCQkJCQkJCQkJCQkgVGV4dERhdHVtR2V0Q1N0 cmluZyhkZXBhcnNlZCkpOworCQkJCQkJfQorCQkJCQkJZWxzZQorCQkJCQkJCWFwcGVuZF9ib29s X29iamVjdCh0bXAyLCAicHJlc2VudCIsIGZhbHNlKTsKKwkJCQkJCWFwcGVuZF9vYmplY3Rfb2Jq ZWN0KHRtcCwgInVzaW5nIiwgdG1wMik7CisJCQkJCX0KKworCQkJCQkvKiBpZiBpdCdzIGEgY29t cG9zaXRlIHR5cGUsIGFkZCB0aGUgQ0FTQ0FERSBjbGF1c2UgKi8KKwkJCQkJaWYgKGlzdHlwZSkK KwkJCQkJeworCQkJCQkJdG1wMiA9IG5ld19vYmp0cmVlX1ZBKCJDQVNDQURFIiwgMCk7CisJCQkJ CQlpZiAoc3ViY21kLT5iZWhhdmlvciAhPSBEUk9QX0NBU0NBREUpCisJCQkJCQkJYXBwZW5kX2Jv b2xfb2JqZWN0KHRtcDIsICJwcmVzZW50IiwgZmFsc2UpOworCQkJCQkJYXBwZW5kX29iamVjdF9v YmplY3QodG1wLCAiY2FzY2FkZSIsIHRtcDIpOworCQkJCQl9CisKKwkJCQkJc3ViY21kcyA9IGxh cHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisJCQkJfQorCQkJCWJyZWFr OworCisjaWZkZWYgVE9ET0xJU1QKKwkJCWNhc2UgQVRfQWx0ZXJDb2x1bW5HZW5lcmljT3B0aW9u czoKKwkJCQl0bXAgPSBkZXBhcnNlX0Zkd09wdGlvbnMoKExpc3QgKikgc3ViY21kLT5kZWYsCisJ CQkJCQkJCQkJIHN1YmNtZC0+bmFtZSk7CisJCQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21kcywg bmV3X29iamVjdF9vYmplY3QodG1wKSk7CisJCQkJYnJlYWs7CisjZW5kaWYKKwkJCWNhc2UgQVRf Q2hhbmdlT3duZXI6CisJCQkJdG1wID0gbmV3X29ianRyZWVfVkEoIk9XTkVSIFRPICV7b3duZXJ9 SSIsCisJCQkJCQkJCQkgMiwgInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAiY2hhbmdlIG93bmVyIiwK KwkJCQkJCQkJCSAib3duZXIiLCAgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkJCSBnZXRfcm9sZXNw ZWNfbmFtZShzdWJjbWQtPm5ld293bmVyKSk7CisJCQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21k cywgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfQ2x1 c3Rlck9uOgorCQkJCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJDTFVTVEVSIE9OICV7aW5kZXh9SSIs IDIsCisJCQkJCQkJCQkgInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAiY2x1c3RlciBvbiIsCisJCQkJ CQkJCQkgImluZGV4IiwgT2JqVHlwZVN0cmluZywgc3ViY21kLT5uYW1lKTsKKwkJCQlzdWJjbWRz ID0gbGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKwkJCQlicmVhazsK KworCQkJY2FzZSBBVF9Ecm9wQ2x1c3RlcjoKKwkJCQl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiU0VU IFdJVEhPVVQgQ0xVU1RFUiIsIDEsCisJCQkJCQkJCQkgInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAi c2V0IHdpdGhvdXQgY2x1c3RlciIpOworCQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5l d19vYmplY3Rfb2JqZWN0KHRtcCkpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX1NldExvZ2dl ZDoKKwkJCQl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiU0VUIExPR0dFRCIsIDEsCisJCQkJCQkJCQkg InR5cGUiLCBPYmpUeXBlU3RyaW5nLCAic2V0IGxvZ2dlZCIpOworCQkJCXN1YmNtZHMgPSBsYXBw ZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCQkJCWJyZWFrOworCisJCQlj YXNlIEFUX1NldFVuTG9nZ2VkOgorCQkJCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJTRVQgVU5MT0dH RUQiLCAxLAorCQkJCQkJCQkJICJ0eXBlIiwgT2JqVHlwZVN0cmluZywgInNldCB1bmxvZ2dlZCIp OworCQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkp OworCQkJCWJyZWFrOworCisvKgorcmVtb3ZlZCBmZWF0dXJlCisJCQljYXNlIEFUX0FkZE9pZHNS ZWN1cnNlOgorCQkJY2FzZSBBVF9BZGRPaWRzOgorCQkJCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJT RVQgV0lUSCBPSURTIiwgMSwKKwkJCQkJCQkJCSAidHlwZSIsIE9ialR5cGVTdHJpbmcsICJzZXQg d2l0aCBvaWRzIik7CisJCQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9v YmplY3QodG1wKSk7CisJCQkJYnJlYWs7CisqLworCQkJY2FzZSBBVF9Ecm9wT2lkczoKKwkJCQl0 bXAgPSBuZXdfb2JqdHJlZV9WQSgiU0VUIFdJVEhPVVQgT0lEUyIsIDEsCisJCQkJCQkJCQkgInR5 cGUiLCBPYmpUeXBlU3RyaW5nLCAic2V0IHdpdGhvdXQgb2lkcyIpOworCQkJCXN1YmNtZHMgPSBs YXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCQkJCWJyZWFrOworCQkJ Y2FzZSBBVF9TZXRBY2Nlc3NNZXRob2Q6CisJCQkJdG1wID0gbmV3X29ianRyZWVfVkEoIlNFVCBB Q0NFU1MgTUVUSE9EICV7YWNjZXNzX21ldGhvZH1JIiwgMiwKKwkJCQkJCQkJCSAidHlwZSIsIE9i alR5cGVTdHJpbmcsICJzZXQgYWNjZXNzIG1ldGhvZCIsCisJCQkJCQkJCQkgImFjY2Vzc19tZXRo b2QiLCBPYmpUeXBlU3RyaW5nLCBzdWJjbWQtPm5hbWUpOworCQkJCXN1YmNtZHMgPSBsYXBwZW5k KHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCQkJCWJyZWFrOworCQkJY2FzZSBB VF9TZXRUYWJsZVNwYWNlOgorCQkJCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJTRVQgVEFCTEVTUEFD RSAle3RhYmxlc3BhY2V9SSIsIDIsCisJCQkJCQkJCQkgInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAi c2V0IHRhYmxlc3BhY2UiLAorCQkJCQkJCQkJICJ0YWJsZXNwYWNlIiwgT2JqVHlwZVN0cmluZywg c3ViY21kLT5uYW1lKTsKKwkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0 X29iamVjdCh0bXApKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9TZXRSZWxPcHRpb25zOgor CQkJY2FzZSBBVF9SZXNldFJlbE9wdGlvbnM6CisJCQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21k cywgbmV3X29iamVjdF9vYmplY3QoCisJCQkJCQkJCQkgIGRlcGFyc2VfUmVsU2V0T3B0aW9ucyhz dWJjbWQpKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfRW5hYmxlVHJpZzoKKwkJCQl0bXAg PSBuZXdfb2JqdHJlZV9WQSgiRU5BQkxFIFRSSUdHRVIgJXt0cmlnZ2VyfUkiLCAyLAorCQkJCQkJ CQkJICJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImVuYWJsZSB0cmlnZ2VyIiwKKwkJCQkJCQkJCSAi dHJpZ2dlciIsIE9ialR5cGVTdHJpbmcsIHN1YmNtZC0+bmFtZSk7CisJCQkJc3ViY21kcyA9IGxh cHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisJCQkJYnJlYWs7CisKKwkJ CWNhc2UgQVRfRW5hYmxlQWx3YXlzVHJpZzoKKwkJCQl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiRU5B QkxFIEFMV0FZUyBUUklHR0VSICV7dHJpZ2dlcn1JIiwgMiwKKwkJCQkJCQkJCSAidHlwZSIsIE9i alR5cGVTdHJpbmcsICJlbmFibGUgYWx3YXlzIHRyaWdnZXIiLAorCQkJCQkJCQkJICJ0cmlnZ2Vy IiwgT2JqVHlwZVN0cmluZywgc3ViY21kLT5uYW1lKTsKKwkJCQlzdWJjbWRzID0gbGFwcGVuZChz dWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBB VF9FbmFibGVSZXBsaWNhVHJpZzoKKwkJCQl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiRU5BQkxFIFJF UExJQ0EgVFJJR0dFUiAle3RyaWdnZXJ9SSIsIDIsCisJCQkJCQkJCQkgInR5cGUiLCBPYmpUeXBl U3RyaW5nLCAiZW5hYmxlIHJlcGxpY2EgdHJpZ2dlciIsCisJCQkJCQkJCQkgInRyaWdnZXIiLCBP YmpUeXBlU3RyaW5nLCBzdWJjbWQtPm5hbWUpOworCQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1YmNt ZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0Rp c2FibGVUcmlnOgorCQkJCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJESVNBQkxFIFRSSUdHRVIgJXt0 cmlnZ2VyfUkiLCAyLAorCQkJCQkJCQkJICJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImRpc2FibGUg dHJpZ2dlciIsCisJCQkJCQkJCQkgInRyaWdnZXIiLCBPYmpUeXBlU3RyaW5nLCBzdWJjbWQtPm5h bWUpOworCQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRt cCkpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0VuYWJsZVRyaWdBbGw6CisJCQkJdG1wID0g bmV3X29ianRyZWVfVkEoIkVOQUJMRSBUUklHR0VSIEFMTCIsIDEsCisJCQkJCQkJCQkgInR5cGUi LCBPYmpUeXBlU3RyaW5nLCAiZW5hYmxlIHRyaWdnZXIgYWxsIik7CisJCQkJc3ViY21kcyA9IGxh cHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisJCQkJYnJlYWs7CisKKwkJ CWNhc2UgQVRfRGlzYWJsZVRyaWdBbGw6CisJCQkJdG1wID0gbmV3X29ianRyZWVfVkEoIkRJU0FC TEUgVFJJR0dFUiBBTEwiLCAxLAorCQkJCQkJCQkJICJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImRp c2FibGUgdHJpZ2dlciBhbGwiKTsKKwkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJjbWRzLCBuZXdf b2JqZWN0X29iamVjdCh0bXApKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9FbmFibGVUcmln VXNlcjoKKwkJCQl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiRU5BQkxFIFRSSUdHRVIgVVNFUiIsIDEs CisJCQkJCQkJCQkgInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAiZW5hYmxlIHRyaWdnZXIgdXNlciIp OworCQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkp OworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0Rpc2FibGVUcmlnVXNlcjoKKwkJCQl0bXAgPSBu ZXdfb2JqdHJlZV9WQSgiRElTQUJMRSBUUklHR0VSIFVTRVIiLCAxLAorCQkJCQkJCQkJICJ0eXBl IiwgT2JqVHlwZVN0cmluZywgImRpc2FibGUgdHJpZ2dlciB1c2VyIik7CisJCQkJc3ViY21kcyA9 IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisJCQkJYnJlYWs7CisK KwkJCWNhc2UgQVRfRW5hYmxlUnVsZToKKwkJCQl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiRU5BQkxF IFJVTEUgJXtydWxlfUkiLCAyLAorCQkJCQkJCQkJICJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImVu YWJsZSBydWxlIiwKKwkJCQkJCQkJCSAicnVsZSIsIE9ialR5cGVTdHJpbmcsIHN1YmNtZC0+bmFt ZSk7CisJCQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1w KSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfRW5hYmxlQWx3YXlzUnVsZToKKwkJCQl0bXAg PSBuZXdfb2JqdHJlZV9WQSgiRU5BQkxFIEFMV0FZUyBSVUxFICV7cnVsZX1JIiwgMiwKKwkJCQkJ CQkJCSAidHlwZSIsIE9ialR5cGVTdHJpbmcsICJlbmFibGUgYWx3YXlzIHJ1bGUiLAorCQkJCQkJ CQkJICJydWxlIiwgT2JqVHlwZVN0cmluZywgc3ViY21kLT5uYW1lKTsKKwkJCQlzdWJjbWRzID0g bGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKwkJCQlicmVhazsKKwor CQkJY2FzZSBBVF9FbmFibGVSZXBsaWNhUnVsZToKKwkJCQl0bXAgPSBuZXdfb2JqdHJlZV9WQSgi RU5BQkxFIFJFUExJQ0EgUlVMRSAle3J1bGV9SSIsIDIsCisJCQkJCQkJCQkgInR5cGUiLCBPYmpU eXBlU3RyaW5nLCAiZW5hYmxlIHJlcGxpY2EgcnVsZSIsCisJCQkJCQkJCQkgInJ1bGUiLCBPYmpU eXBlU3RyaW5nLCBzdWJjbWQtPm5hbWUpOworCQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMs IG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0Rpc2Fi bGVSdWxlOgorCQkJCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJESVNBQkxFIFJVTEUgJXtydWxlfUki LCAyLAorCQkJCQkJCQkJICJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImRpc2FibGUgcnVsZSIsCisJ CQkJCQkJCQkgInJ1bGUiLCBPYmpUeXBlU3RyaW5nLCBzdWJjbWQtPm5hbWUpOworCQkJCXN1YmNt ZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCQkJCWJyZWFr OworCisJCQljYXNlIEFUX0FkZEluaGVyaXQ6CisJCQkJdG1wID0gbmV3X29ianRyZWVfVkEoIklO SEVSSVQgJXtwYXJlbnR9RCIsCisJCQkJCQkJCQkgMiwgInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAi aW5oZXJpdCIsCisJCQkJCQkJCQkgInBhcmVudCIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkJCQkg bmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFJlbGF0aW9uUmVsYXRpb25JZCwKKwkJCQkJCQkJ CQkJCQkJCQkgc3ViLT5hZGRyZXNzLm9iamVjdElkKSk7CisJCQkJc3ViY21kcyA9IGxhcHBlbmQo c3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2Ug QVRfRHJvcEluaGVyaXQ6CisJCQkJdG1wID0gbmV3X29ianRyZWVfVkEoIk5PIElOSEVSSVQgJXtw YXJlbnR9RCIsCisJCQkJCQkJCQkgMiwgInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAiZHJvcCBpbmhl cml0IiwKKwkJCQkJCQkJCSAicGFyZW50IiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCQkJCSBuZXdf b2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUmVsYXRpb25SZWxhdGlvbklkLAorCQkJCQkJCQkJCQkJ CQkJCSBzdWItPmFkZHJlc3Mub2JqZWN0SWQpKTsKKwkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJj bWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9B ZGRPZjoKKwkJCQl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiT0YgJXt0eXBlX29mfVQiLAorCQkJCQkJ CQkJIDIsICJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImFkZCBvZiIsCisJCQkJCQkJCQkgInR5cGVf b2YiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl90eXBlKHN1Yi0+ YWRkcmVzcy5vYmplY3RJZCwgLTEpKTsKKwkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJjbWRzLCBu ZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9Ecm9wT2Y6 CisJCQkJdG1wID0gbmV3X29ianRyZWVfVkEoIk5PVCBPRiIsCisJCQkJCQkJCQkgMSwgInR5cGUi LCBPYmpUeXBlU3RyaW5nLCAibm90IG9mIik7CisJCQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21k cywgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfUmVw bGljYUlkZW50aXR5OgorCQkJCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJSRVBMSUNBIElERU5USVRZ ICV7aWRlbnR9cyIsIDEsCisJCQkJCQkJCQkgInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAicmVwbGlj YSBpZGVudGl0eSIpOworCQkJCXN3aXRjaCAoKChSZXBsaWNhSWRlbnRpdHlTdG10ICopIHN1YmNt ZC0+ZGVmKS0+aWRlbnRpdHlfdHlwZSkKKwkJCQl7CisJCQkJCWNhc2UgUkVQTElDQV9JREVOVElU WV9ERUZBVUxUOgorCQkJCQkJYXBwZW5kX3N0cmluZ19vYmplY3QodG1wLCAiaWRlbnQiLCAiREVG QVVMVCIpOworCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgUkVQTElDQV9JREVOVElUWV9GVUxMOgor CQkJCQkJYXBwZW5kX3N0cmluZ19vYmplY3QodG1wLCAiaWRlbnQiLCAiRlVMTCIpOworCQkJCQkJ YnJlYWs7CisJCQkJCWNhc2UgUkVQTElDQV9JREVOVElUWV9OT1RISU5HOgorCQkJCQkJYXBwZW5k X3N0cmluZ19vYmplY3QodG1wLCAiaWRlbnQiLCAiTk9USElORyIpOworCQkJCQkJYnJlYWs7CisJ CQkJCWNhc2UgUkVQTElDQV9JREVOVElUWV9JTkRFWDoKKwkJCQkJCXRtcDIgPSBuZXdfb2JqdHJl ZV9WQSgiVVNJTkcgSU5ERVggJXtpbmRleH1JIiwgMSwKKwkJCQkJCQkJCQkJICAiaW5kZXgiLCBP YmpUeXBlU3RyaW5nLAorCQkJCQkJCQkJCQkgICgoUmVwbGljYUlkZW50aXR5U3RtdCAqKSBzdWJj bWQtPmRlZiktPm5hbWUpOworCQkJCQkJYXBwZW5kX29iamVjdF9vYmplY3QodG1wLCAiaWRlbnQi LCB0bXAyKTsKKwkJCQkJCWJyZWFrOworCQkJCX0KKwkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJj bWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9F bmFibGVSb3dTZWN1cml0eToKKwkJCQl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiRU5BQkxFIFJPVyBM RVZFTCBTRUNVUklUWSIsIDEsCisJCQkJCQkJCQkgInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAiZW5h YmxlIHJvdyBzZWN1cml0eSIpOworCQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19v YmplY3Rfb2JqZWN0KHRtcCkpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0Rpc2FibGVSb3dT ZWN1cml0eToKKwkJCQl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiRElTQUJMRSBST1cgTEVWRUwgU0VD VVJJVFkiLCAxLAorCQkJCQkJCQkJICJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImRpc2FibGUgcm93 IHNlY3VyaXR5Iik7CisJCQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9v YmplY3QodG1wKSk7CisJCQkJYnJlYWs7CisjaWZkZWYgVE9ET0xJU1QKKwkJCWNhc2UgQVRfR2Vu ZXJpY09wdGlvbnM6CisJCQkJdG1wID0gZGVwYXJzZV9GZHdPcHRpb25zKChMaXN0ICopIHN1YmNt ZC0+ZGVmLCBOVUxMKTsKKwkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0 X29iamVjdCh0bXApKTsKKwkJCQlicmVhazsKKyNlbmRpZgorCQkJZGVmYXVsdDoKKwkJCQllbG9n KFdBUk5JTkcsICJ1bnN1cHBvcnRlZCBhbHRlciB0YWJsZSBzdWJ0eXBlICVkIiwKKwkJCQkJIHN1 YmNtZC0+c3VidHlwZSk7CisJCQkJYnJlYWs7CisJCX0KKwl9CisKKwl0YWJsZV9jbG9zZShyZWws IEFjY2Vzc1NoYXJlTG9jayk7CisKKwlpZiAobGlzdF9sZW5ndGgoc3ViY21kcykgPT0gMCkKKwkJ cmV0dXJuIE5VTEw7CisKKwlhcHBlbmRfYXJyYXlfb2JqZWN0KGFsdGVyVGFibGVTdG10LCAic3Vi Y21kcyIsIHN1YmNtZHMpOworCXJldHVybiBhbHRlclRhYmxlU3RtdDsKK30KKworLyoKKyAqIEhh bmRsZSBkZXBhcnNpbmcgb2Ygc2ltcGxlIGNvbW1hbmRzLgorICoKKyAqIFRoaXMgZnVuY3Rpb24g c2hvdWxkIGNvdmVyIGFsbCBjYXNlcyBoYW5kbGVkIGluIFByb2Nlc3NVdGlsaXR5U2xvdy4KKyAq Lworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9zaW1wbGVfY29tbWFuZChDb2xsZWN0ZWRDb21t YW5kICpjbWQpCit7CisJT2lkCQkJb2JqZWN0SWQ7CisJTm9kZQkgICAqcGFyc2V0cmVlOworCU9i alRyZWUJICAgKmNvbW1hbmQ7CisKKwlBc3NlcnQoY21kLT50eXBlID09IFNDVF9TaW1wbGUpOwor CisJcGFyc2V0cmVlID0gY21kLT5wYXJzZXRyZWU7CisJb2JqZWN0SWQgPSBjbWQtPmQuc2ltcGxl LmFkZHJlc3Mub2JqZWN0SWQ7CisKKwkvKiBUaGlzIHN3aXRjaCBuZWVkcyB0byBoYW5kbGUgZXZl cnl0aGluZyB0aGF0IFByb2Nlc3NVdGlsaXR5U2xvdyBkb2VzICovCisJc3dpdGNoIChub2RlVGFn KHBhcnNldHJlZSkpCisJeworCQljYXNlIFRfQ3JlYXRlU3RtdDoKKwkJCWNvbW1hbmQgPSBkZXBh cnNlX0NyZWF0ZVN0bXQob2JqZWN0SWQsIHBhcnNldHJlZSk7CisJCQlicmVhazsKKworCQlkZWZh dWx0OgorCQkJY29tbWFuZCA9IE5VTEw7CisJCQllbG9nKExPRywgInVucmVjb2duaXplZCBub2Rl IHR5cGU6ICVkIiwKKwkJCQkgKGludCkgbm9kZVRhZyhwYXJzZXRyZWUpKTsKKwl9CisKKwlyZXR1 cm4gY29tbWFuZDsKK30KKworY2hhciAqCitkZXBhcnNlX2Ryb3BfdGFibGUoY29uc3QgY2hhciAq b2JqaWRlbnRpdHkpCit7CisJU3RyaW5nSW5mb0RhdGEgIHN0cjsKKwljaGFyICAgICAgICAgICAq Y29tbWFuZDsKKwlPYmpUcmVlCQkgICAqc3RtdDsKKwljaGFyCQkgICAqZm10OworCUpzb25iCQkg ICAqanNvbmI7CisKKwlpbml0U3RyaW5nSW5mbygmc3RyKTsKKwlmbXQgPSBwc3ByaW50ZigiRFJP UCBUQUJMRSBJRiBFWElTVFMgJSV7b2JqaWRlbnRpdHl9cyIpOworCisJc3RtdCA9IG5ld19vYmp0 cmVlX1ZBKGZtdCwgMSwgIm9iamlkZW50aXR5IiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCSAgb2Jq aWRlbnRpdHkpOworCWpzb25iID0gb2JqdHJlZV90b19qc29uYihzdG10KTsKKwljb21tYW5kID0g SnNvbmJUb0NTdHJpbmcoJnN0ciwgJmpzb25iLT5yb290LCAxMjgpOworCisJcmV0dXJuIGNvbW1h bmQ7Cit9CisKK2NoYXIgKgorZGVwYXJzZV91dGlsaXR5X2NvbW1hbmQoQ29sbGVjdGVkQ29tbWFu ZCAqY21kKQoreworCU92ZXJyaWRlU2VhcmNoUGF0aCAqb3ZlcnJpZGVQYXRoOworCU1lbW9yeUNv bnRleHQJb2xkY3h0OworCU1lbW9yeUNvbnRleHQJdG1wY3h0OworCU9ialRyZWUJCSAgICp0cmVl OworCWNoYXIJCSAgICpjb21tYW5kOworCVN0cmluZ0luZm9EYXRhICBzdHI7CisKKwkvKgorCSAq IEFsbG9jYXRlIGV2ZXJ5dGhpbmcgZG9uZSBieSB0aGUgZGVwYXJzaW5nIHJvdXRpbmVzIGludG8g YSB0ZW1wIGNvbnRleHQsCisJICogdG8gYXZvaWQgaGF2aW5nIHRvIHNwcmlua2xlIHRoZW0gd2l0 aCBtZW1vcnkgaGFuZGxpbmcgY29kZTsgYnV0IGFsbG9jYXRlCisJICogdGhlIG91dHB1dCBTdHJp bmdJbmZvIGJlZm9yZSBzd2l0Y2hpbmcuCisJICovCisJaW5pdFN0cmluZ0luZm8oJnN0cik7CisJ dG1wY3h0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKEN1cnJlbnRNZW1vcnlDb250ZXh0LAorCQkJ CQkJCQkgICAiZGVwYXJzZSBjdHgiLAorCQkJCQkJCQkgICBBTExPQ1NFVF9ERUZBVUxUX01JTlNJ WkUsCisJCQkJCQkJCSAgIEFMTE9DU0VUX0RFRkFVTFRfSU5JVFNJWkUsCisJCQkJCQkJCSAgIEFM TE9DU0VUX0RFRkFVTFRfTUFYU0laRSk7CisJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRv KHRtcGN4dCk7CisKKwkvKgorCSAqIE1hbnkgcm91dGluZXMgdW5kZXJseWluZyB0aGlzIG9uZSB3 aWxsIGludm9rZSBydWxldXRpbHMuYyBmdW5jdGlvbmFsaXR5CisJICogaW4gb3JkZXIgdG8gb2J0 YWluIGRlcGFyc2VkIHZlcnNpb25zIG9mIGV4cHJlc3Npb25zLiAgSW4gc3VjaCByZXN1bHRzLAor CSAqIHdlIHdhbnQgYWxsIG9iamVjdCBuYW1lcyB0byBiZSBxdWFsaWZpZWQsIHNvIHRoYXQgcmVz dWx0cyBhcmUgInBvcnRhYmxlIgorCSAqIHRvIGVudmlyb25tZW50cyB3aXRoIGRpZmZlcmVudCBz ZWFyY2hfcGF0aCBzZXR0aW5ncy4gIFJhdGhlciB0aGFuIGluamVjdAorCSAqIHdoYXQgd291bGQg YmUgcmVwZXRpdGl2ZSBjYWxscyB0byBvdmVycmlkZSBzZWFyY2ggcGF0aCBhbGwgb3ZlciB0aGUK KwkgKiBwbGFjZSwgd2UgZG8gaXQgY2VudHJhbGx5IGhlcmUuCisJICovCisJb3ZlcnJpZGVQYXRo ID0gR2V0T3ZlcnJpZGVTZWFyY2hQYXRoKEN1cnJlbnRNZW1vcnlDb250ZXh0KTsKKwlvdmVycmlk ZVBhdGgtPnNjaGVtYXMgPSBOSUw7CisJb3ZlcnJpZGVQYXRoLT5hZGRDYXRhbG9nID0gZmFsc2U7 CisJb3ZlcnJpZGVQYXRoLT5hZGRUZW1wID0gdHJ1ZTsKKwlQdXNoT3ZlcnJpZGVTZWFyY2hQYXRo KG92ZXJyaWRlUGF0aCk7CisKKwlzd2l0Y2ggKGNtZC0+dHlwZSkKKwl7CisJCWNhc2UgU0NUX1Np bXBsZToKKwkJCXRyZWUgPSBkZXBhcnNlX3NpbXBsZV9jb21tYW5kKGNtZCk7CisJCQlicmVhazsK KwkJY2FzZSBTQ1RfQWx0ZXJUYWJsZToKKwkJCXRyZWUgPSBkZXBhcnNlX0FsdGVyVGFibGVTdG10 KGNtZCk7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVk IGRlcGFyc2Ugbm9kZSB0eXBlICVkIiwgY21kLT50eXBlKTsKKwl9CisKKwlQb3BPdmVycmlkZVNl YXJjaFBhdGgoKTsKKworCWlmICh0cmVlKQorCXsKKwkJSnNvbmIgKmpzb25iOworCisJCWpzb25i ID0gb2JqdHJlZV90b19qc29uYih0cmVlKTsKKwkJY29tbWFuZCA9IEpzb25iVG9DU3RyaW5nKCZz dHIsICZqc29uYi0+cm9vdCwgMTI4KTsKKwl9CisJZWxzZQorCQljb21tYW5kID0gTlVMTDsKKwor CS8qCisJICogQ2xlYW4gdXAuICBOb3RlIHRoYXQgc2luY2Ugd2UgY3JlYXRlZCB0aGUgU3RyaW5n SW5mbyBpbiB0aGUgY2FsbGVyJ3MKKwkgKiBjb250ZXh0LCB0aGUgb3V0cHV0IHN0cmluZyBpcyBu b3QgZGVsZXRlZCBoZXJlLgorCSAqLworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOwor CU1lbW9yeUNvbnRleHREZWxldGUodG1wY3h0KTsKKworCXJldHVybiBjb21tYW5kOworfQorCisv KgorICogR2l2ZW4gYSBDb2xsZWN0ZWRDb21tYW5kLCByZXR1cm4gYSBKU09OIHJlcHJlc2VudGF0 aW9uIG9mIGl0LgorICoKKyAqIFRoZSBjb21tYW5kIGlzIGV4cGFuZGVkIGZ1bGx5LCBzbyB0aGF0 IHRoZXJlIGFyZSBubyBhbWJpZ3VpdGllcyBldmVuIGluIHRoZQorICogZmFjZSBvZiBzZWFyY2hf cGF0aCBjaGFuZ2VzLgorICovCitEYXR1bQorZGRsX2RlcGFyc2VfdG9fanNvbihQR19GVU5DVElP Tl9BUkdTKQoreworCUNvbGxlY3RlZENvbW1hbmQgKmNtZCA9IChDb2xsZWN0ZWRDb21tYW5kICop IFBHX0dFVEFSR19QT0lOVEVSKDApOworCWNoYXIJCSAgICpjb21tYW5kOworCisJY29tbWFuZCA9 IGRlcGFyc2VfdXRpbGl0eV9jb21tYW5kKGNtZCk7CisKKwlpZiAoY29tbWFuZCkKKwkJUEdfUkVU VVJOX1RFWFRfUChDU3RyaW5nR2V0VGV4dERhdHVtKGNvbW1hbmQpKTsKKwllbHNlCisJCVBHX1JF VFVSTl9OVUxMKCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kZGxfanNv bi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGRsX2pzb24uYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi45NWVkMThmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZGRsX2pzb24uYwpAQCAtMCwwICsxLDc0OSBAQAorLyotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgKgorICogZGRsX2pzb24uYworICoJICBKU09OIGNvZGUgcmVsYXRlZCB0byBEREwgY29tbWFu ZCBkZXBhcnNpbmcKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyMiwgUG9z dGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAo YykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICog SURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvY29tbWFuZHMvZGRsX2pzb24uYworICoK KyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1 ZGUgImxpYi9zdHJpbmdpbmZvLmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNs dWRlICJ1dGlscy9qc29uYi5oIgorCisKK3R5cGVkZWYgZW51bQoreworCVNwZWNUeXBlbmFtZSwK KwlTcGVjT3BlcmF0b3JuYW1lLAorCVNwZWNEb3R0ZWROYW1lLAorCVNwZWNTdHJpbmcsCisJU3Bl Y051bWJlciwKKwlTcGVjU3RyaW5nTGl0ZXJhbCwKKwlTcGVjSWRlbnRpZmllciwKKwlTcGVjUm9s ZQorfSBjb252U3BlY2lmaWVyOworCit0eXBlZGVmIGVudW0KK3sKKwl0dl9hYnNlbnQsCisJdHZf dHJ1ZSwKKwl0dl9mYWxzZQorfSB0cml2YWx1ZTsKKworc3RhdGljIGJvb2wgZXhwYW5kX29uZV9q c29uYl9lbGVtZW50KFN0cmluZ0luZm8gb3V0LCBjaGFyICpwYXJhbSwKKwkJCQkJCSBKc29uYlZh bHVlICpqc29udmFsLCBjb252U3BlY2lmaWVyIHNwZWNpZmllciwKKwkJCQkJCSBjb25zdCBjaGFy ICpmbXQpOworc3RhdGljIHZvaWQgZXhwYW5kX2pzb25iX2FycmF5KFN0cmluZ0luZm8gb3V0LCBj aGFyICpwYXJhbSwKKwkJCQkgICBKc29uYlZhbHVlICpqc29uYXJyLCBjaGFyICphcnJheXNlcCwK KwkJCQkgICBjb252U3BlY2lmaWVyIHNwZWNpZmllciwgY29uc3QgY2hhciAqZm10KTsKK3N0YXRp YyB2b2lkIGZtdHN0cl9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcpOworY2hhciAqZGRsX2RlcGFy c2VfanNvbl90b19zdHJpbmcoY2hhciAqanNvbmIpOworCitzdGF0aWMgdHJpdmFsdWUKK2ZpbmRf Ym9vbF9pbl9qc29uYmNvbnRhaW5lcihKc29uYkNvbnRhaW5lciAqY29udGFpbmVyLCBjaGFyICpr ZXluYW1lKQoreworCUpzb25iVmFsdWUJa2V5OworCUpzb25iVmFsdWUgKnZhbHVlOworCXRyaXZh bHVlCXJlc3VsdDsKKworCWtleS50eXBlID0gamJ2U3RyaW5nOworCWtleS52YWwuc3RyaW5nLnZh bCA9IGtleW5hbWU7CisJa2V5LnZhbC5zdHJpbmcubGVuID0gc3RybGVuKGtleW5hbWUpOworCXZh bHVlID0gZmluZEpzb25iVmFsdWVGcm9tQ29udGFpbmVyKGNvbnRhaW5lciwKKwkJCQkJCQkJCQlK Ql9GT0JKRUNULCAma2V5KTsKKwlpZiAodmFsdWUgPT0gTlVMTCkKKwkJcmV0dXJuIHR2X2Fic2Vu dDsKKwlpZiAodmFsdWUtPnR5cGUgIT0gamJ2Qm9vbCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQko ZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkgZXJybXNnKCJl bGVtZW50IFwiJXNcIiBpcyBub3Qgb2YgdHlwZSBib29sZWFuIiwKKwkJCQkJCWtleW5hbWUpKSk7 CisJcmVzdWx0ID0gdmFsdWUtPnZhbC5ib29sZWFuID8gdHZfdHJ1ZSA6IHR2X2ZhbHNlOworCXBm cmVlKHZhbHVlKTsKKworCXJldHVybiByZXN1bHQ7Cit9CisKKy8qCisgKiBHaXZlbiBhIEpzb25i Q29udGFpbmVyLCBmaW5kIHRoZSBKc29uYlZhbHVlIHdpdGggdGhlIGdpdmVuIGtleSBuYW1lIGlu IGl0LgorICogSWYgaXQncyBvZiBhIHR5cGUgb3RoZXIgdGhhbiBqYnZTdHJpbmcsIGFuIGVycm9y IGlzIHJhaXNlZC4gIElmIGl0IGRvZXNuJ3QKKyAqIGV4aXN0LCBhbiBlcnJvciBpcyByYWlzZWQg aWYgbWlzc2luZ19vazsgb3RoZXJ3aXNlIHJldHVybiBOVUxMLgorICoKKyAqIElmIGl0IGV4aXN0 cyBhbmQgaXMgYSBzdHJpbmcsIGEgZnJlc2hseSBwYWxsb2MnZWQgY29weSBpcyByZXR1cm5lZC4K KyAqCisgKiBJZiAqbGVuZ3RoIGlzIG5vdCBOVUxMLCBpdCBpcyBzZXQgdG8gdGhlIGxlbmd0aCBv ZiB0aGUgc3RyaW5nLgorICovCitzdGF0aWMgY2hhciAqCitmaW5kX3N0cmluZ19pbl9qc29uYmNv bnRhaW5lcihKc29uYkNvbnRhaW5lciAqY29udGFpbmVyLCBjaGFyICprZXluYW1lLAorCQkJCQkJ CSAgYm9vbCBtaXNzaW5nX29rLCBpbnQgKmxlbmd0aCkKK3sKKwlKc29uYlZhbHVlCWtleTsKKwlK c29uYlZhbHVlICp2YWx1ZTsKKwljaGFyCSAgICpzdHI7CisKKwkvKiBYWFggdmVyaWZ5IHRoYXQg dGhpcyBpcyBhbiBvYmplY3QsIG5vdCBhbiBhcnJheSAqLworCisJa2V5LnR5cGUgPSBqYnZTdHJp bmc7CisJa2V5LnZhbC5zdHJpbmcudmFsID0ga2V5bmFtZTsKKwlrZXkudmFsLnN0cmluZy5sZW4g PSBzdHJsZW4oa2V5bmFtZSk7CisJdmFsdWUgPSBmaW5kSnNvbmJWYWx1ZUZyb21Db250YWluZXIo Y29udGFpbmVyLAorCQkJCQkJCQkJCUpCX0ZPQkpFQ1QsICZrZXkpOworCWlmICh2YWx1ZSA9PSBO VUxMKQorCXsKKwkJaWYgKG1pc3Npbmdfb2spCisJCQlyZXR1cm4gTlVMTDsKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJ CQkgZXJybXNnKCJtaXNzaW5nIGVsZW1lbnQgXCIlc1wiIGluIGpzb24gb2JqZWN0Iiwga2V5bmFt ZSkpKTsKKwl9CisKKwlzdHIgPSBwbnN0cmR1cCh2YWx1ZS0+dmFsLnN0cmluZy52YWwsIHZhbHVl LT52YWwuc3RyaW5nLmxlbik7CisJaWYgKGxlbmd0aCkKKwkJKmxlbmd0aCA9IHZhbHVlLT52YWwu c3RyaW5nLmxlbjsKKwlwZnJlZSh2YWx1ZSk7CisJcmV0dXJuIHN0cjsKK30KKworI2RlZmluZSBB RFZBTkNFX1BBUlNFX1BPSU5URVIocHRyLGVuZF9wdHIpIFwKKwlkbyB7IFwKKwkJaWYgKCsrKHB0 cikgPj0gKGVuZF9wdHIpKSBcCisJCQllcmVwb3J0KEVSUk9SLCBcCisJCQkJCShlcnJjb2RlKEVS UkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLCBcCisJCQkJCSBlcnJtc2coInVudGVybWlu YXRlZCBmb3JtYXQgc3BlY2lmaWVyIikpKTsgXAorCX0gd2hpbGUgKDApCisKKy8qCisgKiBSZWN1 cnNpdmUgaGVscGVyIGZvciBwZ19ldmVudF90cmlnZ2VyX2V4cGFuZF9jb21tYW5kCisgKgorICog RmluZCB0aGUgImZtdCIgZWxlbWVudCBpbiB0aGUgZ2l2ZW4gY29udGFpbmVyLCBhbmQgZXhwYW5k IGl0IGludG8gdGhlCisgKiBwcm92aWRlZCBTdHJpbmdJbmZvLgorICovCitzdGF0aWMgdm9pZAor ZXhwYW5kX2ZtdF9yZWN1cnNpdmUoSnNvbmJDb250YWluZXIgKmNvbnRhaW5lciwgU3RyaW5nSW5m byBvdXQpCit7CisJSnNvbmJWYWx1ZQlrZXk7CisJSnNvbmJWYWx1ZSAqdmFsdWU7CisJY29uc3Qg Y2hhciAqY3A7CisJY29uc3QgY2hhciAqc3RhcnRfcHRyOworCWNvbnN0IGNoYXIgKmVuZF9wdHI7 CisJaW50CQkJbGVuOworCisJc3RhcnRfcHRyID0gZmluZF9zdHJpbmdfaW5fanNvbmJjb250YWlu ZXIoY29udGFpbmVyLCAiZm10IiwgZmFsc2UsICZsZW4pOworCWVuZF9wdHIgPSBzdGFydF9wdHIg KyBsZW47CisKKwlmb3IgKGNwID0gc3RhcnRfcHRyOyBjcCA8IGVuZF9wdHI7IGNwKyspCisJewor CQljb252U3BlY2lmaWVyIHNwZWNpZmllcjsKKwkJYm9vbAkJaXNfYXJyYXk7CisJCWNoYXIJICAg KnBhcmFtID0gTlVMTDsKKwkJY2hhcgkgICAqYXJyYXlzZXAgPSBOVUxMOworCisJCWlmICgqY3Ag IT0gJyUnKQorCQl7CisJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhck1hY3JvKG91dCwgKmNwKTsKKwkJ CWNvbnRpbnVlOworCQl9CisKKwkJaXNfYXJyYXkgPSBmYWxzZTsKKworCQlBRFZBTkNFX1BBUlNF X1BPSU5URVIoY3AsIGVuZF9wdHIpOworCisJCS8qIEVhc3kgY2FzZTogJSUgb3V0cHV0cyBhIHNp bmdsZSAlICovCisJCWlmICgqY3AgPT0gJyUnKQorCQl7CisJCQlhcHBlbmRTdHJpbmdJbmZvQ2hh ck1hY3JvKG91dCwgKmNwKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJLyoKKwkJICogU2NhbiB0 aGUgbWFuZGF0b3J5IGVsZW1lbnQgbmFtZS4gIEFsbG93IGZvciBhbiBhcnJheSBzZXBhcmF0b3IK KwkJICogKHdoaWNoIG1heSBiZSB0aGUgZW1wdHkgc3RyaW5nKSB0byBiZSBzcGVjaWZpZWQgYWZ0 ZXIgY29sb24uCisJCSAqLworCQlpZiAoKmNwID09ICd7JykKKwkJeworCQkJU3RyaW5nSW5mb0Rh dGEgcGFyYnVmOworCQkJU3RyaW5nSW5mb0RhdGEgYXJyYXlzZXBidWY7CisJCQlTdHJpbmdJbmZv CWFwcGVuZFRvOworCisJCQlpbml0U3RyaW5nSW5mbygmcGFyYnVmKTsKKwkJCWFwcGVuZFRvID0g JnBhcmJ1ZjsKKworCQkJQURWQU5DRV9QQVJTRV9QT0lOVEVSKGNwLCBlbmRfcHRyKTsKKwkJCWZv ciAoOyBjcCA8IGVuZF9wdHI7KQorCQkJeworCQkJCWlmICgqY3AgPT0gJzonKQorCQkJCXsKKwkJ CQkJLyoKKwkJCQkJICogZm91bmQgYXJyYXkgc2VwYXJhdG9yIGRlbGltaXRlcjsgZWxlbWVudCBu YW1lIGlzIG5vdworCQkJCQkgKiBjb21wbGV0ZSwgc3RhcnQgZmlsbGluZyB0aGUgc2VwYXJhdG9y LgorCQkJCQkgKi8KKwkJCQkJaW5pdFN0cmluZ0luZm8oJmFycmF5c2VwYnVmKTsKKwkJCQkJYXBw ZW5kVG8gPSAmYXJyYXlzZXBidWY7CisJCQkJCWlzX2FycmF5ID0gdHJ1ZTsKKwkJCQkJQURWQU5D RV9QQVJTRV9QT0lOVEVSKGNwLCBlbmRfcHRyKTsKKwkJCQkJY29udGludWU7CisJCQkJfQorCisJ CQkJaWYgKCpjcCA9PSAnfScpCisJCQkJeworCQkJCQlBRFZBTkNFX1BBUlNFX1BPSU5URVIoY3As IGVuZF9wdHIpOworCQkJCQlicmVhazsKKwkJCQl9CisJCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXJN YWNybyhhcHBlbmRUbywgKmNwKTsKKwkJCQlBRFZBTkNFX1BBUlNFX1BPSU5URVIoY3AsIGVuZF9w dHIpOworCQkJfQorCQkJcGFyYW0gPSBwYXJidWYuZGF0YTsKKwkJCWlmIChpc19hcnJheSkKKwkJ CQlhcnJheXNlcCA9IGFycmF5c2VwYnVmLmRhdGE7CisJCX0KKwkJaWYgKHBhcmFtID09IE5VTEwp CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1F VEVSX1ZBTFVFKSwKKwkJCQkgZXJybXNnKCJtaXNzaW5nIGNvbnZlcnNpb24gbmFtZSBpbiBjb252 ZXJzaW9uIHNwZWNpZmllciIpKSk7CisKKwkJc3dpdGNoICgqY3ApCisJCXsKKwkJCWNhc2UgJ0kn OgorCQkJCXNwZWNpZmllciA9IFNwZWNJZGVudGlmaWVyOworCQkJCWJyZWFrOworCQkJY2FzZSAn RCc6CisJCQkJc3BlY2lmaWVyID0gU3BlY0RvdHRlZE5hbWU7CisJCQkJYnJlYWs7CisJCQljYXNl ICdzJzoKKwkJCQlzcGVjaWZpZXIgPSBTcGVjU3RyaW5nOworCQkJCWJyZWFrOworCQkJY2FzZSAn TCc6CisJCQkJc3BlY2lmaWVyID0gU3BlY1N0cmluZ0xpdGVyYWw7CisJCQkJYnJlYWs7CisJCQlj YXNlICdUJzoKKwkJCQlzcGVjaWZpZXIgPSBTcGVjVHlwZW5hbWU7CisJCQkJYnJlYWs7CisJCQlj YXNlICdPJzoKKwkJCQlzcGVjaWZpZXIgPSBTcGVjT3BlcmF0b3JuYW1lOworCQkJCWJyZWFrOwor CQkJY2FzZSAnbic6CisJCQkJc3BlY2lmaWVyID0gU3BlY051bWJlcjsKKwkJCQlicmVhazsKKwkJ CWNhc2UgJ1InOgorCQkJCXNwZWNpZmllciA9IFNwZWNSb2xlOworCQkJCWJyZWFrOworCQkJZGVm YXVsdDoKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElE X1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCQkgZXJybXNnKCJpbnZhbGlkIGNvbnZlcnNpb24gc3Bl Y2lmaWVyIFwiJWNcIiIsICpjcCkpKTsKKwkJfQorCisJCS8qCisJCSAqIE9idGFpbiB0aGUgZWxl bWVudCB0byBiZSBleHBhbmRlZC4KKwkJICovCisJCWtleS50eXBlID0gamJ2U3RyaW5nOworCQlr ZXkudmFsLnN0cmluZy52YWwgPSBwYXJhbTsKKwkJa2V5LnZhbC5zdHJpbmcubGVuID0gc3RybGVu KHBhcmFtKTsKKworCQl2YWx1ZSA9IGZpbmRKc29uYlZhbHVlRnJvbUNvbnRhaW5lcihjb250YWlu ZXIsIEpCX0ZPQkpFQ1QsICZrZXkpOworCisJCS8qIFZhbGlkYXRlIHRoYXQgd2UgZ290IGFuIGFy cmF5IGlmIHRoZSBmb3JtYXQgc3RyaW5nIHNwZWNpZmllZCBvbmUuICovCisKKwkJLyogQW5kIGZp bmFsbHkgcHJpbnQgb3V0IHRoZSBkYXRhICovCisJCWlmIChpc19hcnJheSkKKwkJCWV4cGFuZF9q c29uYl9hcnJheShvdXQsIHBhcmFtLCB2YWx1ZSwgYXJyYXlzZXAsIHNwZWNpZmllciwgc3RhcnRf cHRyKTsKKwkJZWxzZQorCQkJZXhwYW5kX29uZV9qc29uYl9lbGVtZW50KG91dCwgcGFyYW0sIHZh bHVlLCBzcGVjaWZpZXIsIHN0YXJ0X3B0cik7CisJfQorfQorCisvKgorICogRXhwYW5kIGEganNv biB2YWx1ZSBhcyBhbiBpZGVudGlmaWVyLiAgVGhlIHZhbHVlIG11c3QgYmUgb2YgdHlwZSBzdHJp bmcuCisgKi8KK3N0YXRpYyB2b2lkCitleHBhbmRfanNvbnZhbF9pZGVudGlmaWVyKFN0cmluZ0lu Zm8gYnVmLCBKc29uYlZhbHVlICpqc29udmFsKQoreworCWNoYXIJICAgKnN0cjsKKworCUFzc2Vy dChqc29udmFsLT50eXBlID09IGpidlN0cmluZyk7CisKKwlzdHIgPSBwbnN0cmR1cChqc29udmFs LT52YWwuc3RyaW5nLnZhbCwKKwkJCQkgICBqc29udmFsLT52YWwuc3RyaW5nLmxlbik7CisJYXBw ZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsIHF1b3RlX2lkZW50aWZpZXIoc3RyKSk7CisJcGZyZWUo c3RyKTsKK30KKworLyoKKyAqIEV4cGFuZCBhIGpzb24gdmFsdWUgYXMgYSBkb3Qtc2VwYXJhdGVk LW5hbWUuICBUaGUgdmFsdWUgbXVzdCBiZSBvZiB0eXBlCisgKiBvYmplY3QgYW5kIG11c3QgY29u dGFpbiBlbGVtZW50cyAic2NoZW1hbmFtZSIgKG9wdGlvbmFsKSwgIm9iam5hbWUiCisgKiAobWFu ZGF0b3J5KSwgImF0dHJuYW1lIiAob3B0aW9uYWwpLiAgRG91YmxlIHF1b3RlcyBhcmUgYWRkZWQg dG8gZWFjaCBlbGVtZW50CisgKiBhcyBuZWNlc3NhcnksIGFuZCBkb3Qgc2VwYXJhdG9ycyB3aGVy ZSBuZWVkZWQuCisgKgorICogT25lIGRheSB3ZSBtaWdodCBuZWVkIGEgImNhdGFsb2ciIGVsZW1l bnQgYXMgd2VsbCwgYnV0IG5vIGN1cnJlbnQgdXNlIGNhc2UKKyAqIG5lZWRzIHRoYXQuCisgKi8K K3N0YXRpYyB2b2lkCitleHBhbmRfanNvbnZhbF9kb3R0ZWRuYW1lKFN0cmluZ0luZm8gYnVmLCBK c29uYlZhbHVlICpqc29udmFsKQoreworCWNoYXIJICAgKnN0cjsKKworCXN0ciA9IGZpbmRfc3Ry aW5nX2luX2pzb25iY29udGFpbmVyKGpzb252YWwtPnZhbC5iaW5hcnkuZGF0YSwKKwkJCQkJCQkJ CQkic2NoZW1hbmFtZSIsIHRydWUsIE5VTEwpOworCWlmIChzdHIpCisJeworCQlhcHBlbmRTdHJp bmdJbmZvKGJ1ZiwgIiVzLiIsIHF1b3RlX2lkZW50aWZpZXIoc3RyKSk7CisJCXBmcmVlKHN0cik7 CisJfQorCisJc3RyID0gZmluZF9zdHJpbmdfaW5fanNvbmJjb250YWluZXIoanNvbnZhbC0+dmFs LmJpbmFyeS5kYXRhLAorCQkJCQkJCQkJCSJvYmpuYW1lIiwgZmFsc2UsIE5VTEwpOworCWFwcGVu ZFN0cmluZ0luZm8oYnVmLCAiJXMiLCBxdW90ZV9pZGVudGlmaWVyKHN0cikpOworCXBmcmVlKHN0 cik7CisKKwlzdHIgPSBmaW5kX3N0cmluZ19pbl9qc29uYmNvbnRhaW5lcihqc29udmFsLT52YWwu YmluYXJ5LmRhdGEsCisJCQkJCQkJCQkJImF0dHJuYW1lIiwgdHJ1ZSwgTlVMTCk7CisJaWYgKHN0 cikKKwl7CisJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiLiVzIiwgcXVvdGVfaWRlbnRpZmllcihz dHIpKTsKKwkJcGZyZWUoc3RyKTsKKwl9Cit9CisKKy8qCisgKiBleHBhbmQgYSBqc29uIHZhbHVl IGFzIGEgdHlwZSBuYW1lLgorICovCitzdGF0aWMgdm9pZAorZXhwYW5kX2pzb252YWxfdHlwZW5h bWUoU3RyaW5nSW5mbyBidWYsIEpzb25iVmFsdWUgKmpzb252YWwpCit7CisJY2hhcgkgICAqc2No ZW1hID0gTlVMTDsKKwljaGFyCSAgICp0eXBlbmFtZTsKKwljaGFyCSAgICp0eXBtb2RzdHI7CisJ dHJpdmFsdWUJaXNfYXJyYXk7CisJY2hhcgkgICAqYXJyYXlfZGVjb3I7CisKKwkvKgorCSAqIFdl IG9taXQgc2NoZW1hLXF1YWxpZnlpbmcgdGhlIG91dHB1dCBuYW1lIGlmIHRoZSBzY2hlbWEgZWxl bWVudCBpcworCSAqIGVpdGhlciB0aGUgZW1wdHkgc3RyaW5nIG9yIE5VTEw7IHRoZSBkaWZmZXJl bmNlIGJldHdlZW4gdGhvc2UgdHdvIGNhc2VzCisJICogaXMgdGhhdCBpbiB0aGUgbGF0dGVyIHdl IHF1b3RlIHRoZSB0eXBlIG5hbWUsIGluIHRoZSBmb3JtZXIgd2UgZG9uJ3QuCisJICogVGhpcyBh bGxvd3MgZm9yIHR5cGVzIHdpdGggc3BlY2lhbCB0eXBtb2QgbmVlZHMsIHN1Y2ggYXMgaW50ZXJ2 YWwgYW5kCisJICogdGltZXN0YW1wIChzZWUgZm9ybWF0X3R5cGVfZGV0YWlsZWQpLCB3aGlsZSBh dCB0aGUgc2FtZSB0aW1lIGFsbG93aW5nCisJICogZm9yIHRoZSBzY2hlbWEgbmFtZSB0byBiZSBv bWl0dGVkIGZyb20gdHlwZSBuYW1lcyB0aGF0IHJlcXVpcmUgcXVvdGVzCisJICogYnV0IGFyZSB0 byBiZSBvYnRhaW5lZCBmcm9tIGEgdXNlciBzY2hlbWEuCisJICovCisKKwlzY2hlbWEgPSBmaW5k X3N0cmluZ19pbl9qc29uYmNvbnRhaW5lcihqc29udmFsLT52YWwuYmluYXJ5LmRhdGEsCisJCQkJ CQkJCQkJICAgInNjaGVtYW5hbWUiLCB0cnVlLCBOVUxMKTsKKwl0eXBlbmFtZSA9IGZpbmRfc3Ry aW5nX2luX2pzb25iY29udGFpbmVyKGpzb252YWwtPnZhbC5iaW5hcnkuZGF0YSwKKwkJCQkJCQkJ CQkJICJ0eXBlbmFtZSIsIGZhbHNlLCBOVUxMKTsKKwl0eXBtb2RzdHIgPSBmaW5kX3N0cmluZ19p bl9qc29uYmNvbnRhaW5lcihqc29udmFsLT52YWwuYmluYXJ5LmRhdGEsCisJCQkJCQkJCQkJCSAg InR5cG1vZCIsIHRydWUsIE5VTEwpOworCWlzX2FycmF5ID0gZmluZF9ib29sX2luX2pzb25iY29u dGFpbmVyKGpzb252YWwtPnZhbC5iaW5hcnkuZGF0YSwKKwkJCQkJCQkJCQkgICAidHlwYXJyYXki KTsKKwlzd2l0Y2ggKGlzX2FycmF5KQorCXsKKwkJZGVmYXVsdDoKKwkJY2FzZSB0dl9hYnNlbnQ6 CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1F VEVSX1ZBTFVFKSwKKwkJCQkJIGVycm1zZygibWlzc2luZyB0eXBhcnJheSBlbGVtZW50IikpKTsK KwkJCWJyZWFrOworCQljYXNlIHR2X3RydWU6CisJCQlhcnJheV9kZWNvciA9ICJbXSI7CisJCQli cmVhazsKKwkJY2FzZSB0dl9mYWxzZToKKwkJCWFycmF5X2RlY29yID0gIiI7CisJCQlicmVhazsK Kwl9CisKKwlpZiAoc2NoZW1hID09IE5VTEwpCisJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiJXMl cyVzIiwKKwkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKHR5cGVuYW1lKSwKKwkJCQkJCSB0eXBtb2Rz dHIgPyB0eXBtb2RzdHIgOiAiIiwKKwkJCQkJCSBhcnJheV9kZWNvcik7CisJZWxzZSBpZiAoc2No ZW1hWzBdID09ICdcMCcpCisJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiJXMlcyVzIiwKKwkJCQkJ CSB0eXBlbmFtZSwKKwkJCQkJCSB0eXBtb2RzdHIgPyB0eXBtb2RzdHIgOiAiIiwKKwkJCQkJCSBh cnJheV9kZWNvcik7CisJZWxzZQorCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiVzLiVzJXMlcyIs CisJCQkJCQkgcXVvdGVfaWRlbnRpZmllcihzY2hlbWEpLAorCQkJCQkJIHF1b3RlX2lkZW50aWZp ZXIodHlwZW5hbWUpLAorCQkJCQkJIHR5cG1vZHN0ciA/IHR5cG1vZHN0ciA6ICIiLAorCQkJCQkJ IGFycmF5X2RlY29yKTsKK30KKworLyoKKyAqIEV4cGFuZCBhIGpzb24gdmFsdWUgYXMgYW4gb3Bl cmF0b3IgbmFtZQorICovCitzdGF0aWMgdm9pZAorZXhwYW5kX2pzb252YWxfb3BlcmF0b3IoU3Ry aW5nSW5mbyBidWYsIEpzb25iVmFsdWUgKmpzb252YWwpCit7CisJY2hhcgkgICAqc3RyOworCisJ c3RyID0gZmluZF9zdHJpbmdfaW5fanNvbmJjb250YWluZXIoanNvbnZhbC0+dmFsLmJpbmFyeS5k YXRhLAorCQkJCQkJCQkJCSJzY2hlbWFuYW1lIiwgdHJ1ZSwgTlVMTCk7CisJLyogc2NoZW1hIG1p Z2h0IGJlIE5VTEwgb3IgZW1wdHkgKi8KKwlpZiAoc3RyICE9IE5VTEwgJiYgc3RyWzBdICE9ICdc MCcpCisJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiJXMuIiwgcXVvdGVfaWRlbnRpZmllcihzdHIp KTsKKworCXN0ciA9IGZpbmRfc3RyaW5nX2luX2pzb25iY29udGFpbmVyKGpzb252YWwtPnZhbC5i aW5hcnkuZGF0YSwKKwkJCQkJCQkJCQkib2JqbmFtZSIsIGZhbHNlLCBOVUxMKTsKKwlhcHBlbmRT dHJpbmdJbmZvU3RyaW5nKGJ1Ziwgc3RyKTsKK30KKworLyoKKyAqIEV4cGFuZCBhIGpzb24gdmFs dWUgYXMgYSBzdHJpbmcuICBUaGUgdmFsdWUgbXVzdCBiZSBvZiB0eXBlIHN0cmluZyBvciBvZgor ICogdHlwZSBvYmplY3QuICBJbiB0aGUgbGF0dGVyIGNhc2UgaXQgbXVzdCBjb250YWluIGEgImZt dCIgZWxlbWVudCB3aGljaCB3aWxsCisgKiBiZSByZWN1cnNpdmVseSBleHBhbmRlZDsgYWxzbywg aWYgdGhlIG9iamVjdCBjb250YWlucyBhbiBlbGVtZW50ICJwcmVzZW50IgorICogYW5kIGl0IGlz IHNldCB0byBmYWxzZSwgdGhlIGV4cGFuc2lvbiBpcyB0aGUgZW1wdHkgc3RyaW5nLgorICoKKyAq IFJldHVybnMgZmFsc2UgaWYgbm8gYWN0dWFsIGV4cGFuc2lvbiB3YXMgbWFkZSBkdWUgdG8gdGhl ICJwcmVzZW50IiBmbGFnCisgKiBiZWluZyBzZXQgdG8gImZhbHNlIi4KKyAqLworc3RhdGljIGJv b2wKK2V4cGFuZF9qc29udmFsX3N0cmluZyhTdHJpbmdJbmZvIGJ1ZiwgSnNvbmJWYWx1ZSAqanNv bnZhbCkKK3sKKwlpZiAoanNvbnZhbC0+dHlwZSA9PSBqYnZTdHJpbmcpCisJeworCQlhcHBlbmRC aW5hcnlTdHJpbmdJbmZvKGJ1ZiwganNvbnZhbC0+dmFsLnN0cmluZy52YWwsCisJCQkJCQkJICAg anNvbnZhbC0+dmFsLnN0cmluZy5sZW4pOworCX0KKwllbHNlIGlmIChqc29udmFsLT50eXBlID09 IGpidkJpbmFyeSkKKwl7CisJCXRyaXZhbHVlCXByZXNlbnQ7CisKKwkJcHJlc2VudCA9IGZpbmRf Ym9vbF9pbl9qc29uYmNvbnRhaW5lcihqc29udmFsLT52YWwuYmluYXJ5LmRhdGEsCisJCQkJCQkJ CQkJCSAgInByZXNlbnQiKTsKKwkJLyoKKwkJICogSWYgInByZXNlbnQiIGlzIHNldCB0byBmYWxz ZSwgdGhpcyBlbGVtZW50IGV4cGFuZHMgdG8gZW1wdHk7CisJCSAqIG90aGVyd2lzZSAoZWl0aGVy IHRydWUgb3IgYWJzZW50KSwgZmFsbCB0aHJvdWdoIHRvIGV4cGFuZCAiZm10Ii4KKwkJICovCisJ CWlmIChwcmVzZW50ID09IHR2X2ZhbHNlKQorCQkJcmV0dXJuIGZhbHNlOworCisJCWV4cGFuZF9m bXRfcmVjdXJzaXZlKGpzb252YWwtPnZhbC5iaW5hcnkuZGF0YSwgYnVmKTsKKwl9CisJcmV0dXJu IHRydWU7Cit9CisKKy8qCisgKiBFeHBhbmQgYSBqc29uIHZhbHVlIGFzIGEgc3RyaW5nIGxpdGVy YWwKKyAqLworc3RhdGljIHZvaWQKK2V4cGFuZF9qc29udmFsX3N0cmxpdChTdHJpbmdJbmZvIGJ1 ZiwgSnNvbmJWYWx1ZSAqanNvbnZhbCkKK3sKKwljaGFyICAgKnN0cjsKKwlTdHJpbmdJbmZvRGF0 YSBkcWRlbGltOworCXN0YXRpYyBjb25zdCBjaGFyIGRxc3VmZml4ZXNbXSA9ICJfWFlaWllYXyI7 CisJaW50ICAgICAgICAgZHFuZXh0Y2hhciA9IDA7CisKKwlzdHIgPSBwbnN0cmR1cChqc29udmFs LT52YWwuc3RyaW5nLnZhbCwganNvbnZhbC0+dmFsLnN0cmluZy5sZW4pOworCisJLyogZWFzeSBj YXNlOiBpZiB0aGVyZSBhcmUgbm8gJyBhbmQgbm8gXCwganVzdCB1c2UgYSBzaW5nbGUgcXVvdGUg Ki8KKwlpZiAoc3RyY2hyKHN0ciwgJ1wnJykgPT0gTlVMTCAmJgorCQlzdHJjaHIoc3RyLCAnXFwn KSA9PSBOVUxMKQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICInJXMnIiwgc3RyKTsKKwkJ cGZyZWUoc3RyKTsKKwkJcmV0dXJuOworCX0KKworCS8qIE90aGVyd2lzZSBuZWVkIHRvIGZpbmQg YSB1c2VmdWwgZG9sbGFyLXF1b3RlIGRlbGltaXRlciAqLworCWluaXRTdHJpbmdJbmZvKCZkcWRl bGltKTsKKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZkcWRlbGltLCAiJCIpOworCXdoaWxlIChz dHJzdHIoc3RyLCBkcWRlbGltLmRhdGEpICE9IE5VTEwpCisJeworCQlhcHBlbmRTdHJpbmdJbmZv Q2hhcigmZHFkZWxpbSwgZHFzdWZmaXhlc1tkcW5leHRjaGFyKytdKTsKKwkJZHFuZXh0Y2hhciAl PSBzaXplb2YoZHFzdWZmaXhlcykgLSAxOworCX0KKwkvKiBhZGQgdHJhaWxpbmcgJCAqLworCWFw cGVuZFN0cmluZ0luZm9DaGFyKCZkcWRlbGltLCAnJCcpOworCisJLyogQW5kIGZpbmFsbHkgcHJv ZHVjZSB0aGUgcXVvdGVkIGxpdGVyYWwgaW50byB0aGUgb3V0cHV0IFN0cmluZ0luZm8gKi8KKwlh cHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiVzJXMlcyIsIGRxZGVsaW0uZGF0YSwgc3RyLCBkcWRlbGlt LmRhdGEpOworCXBmcmVlKGRxZGVsaW0uZGF0YSk7CisJcGZyZWUoc3RyKTsKK30KKworLyoKKyAq IEV4cGFuZCBhIGpzb24gdmFsdWUgYXMgYW4gaW50ZWdlciBxdWFudGl0eQorICovCitzdGF0aWMg dm9pZAorZXhwYW5kX2pzb252YWxfbnVtYmVyKFN0cmluZ0luZm8gYnVmLCBKc29uYlZhbHVlICpq c29udmFsKQoreworCWNoYXIgKnN0cmRhdHVtOworCisJc3RyZGF0dW0gPSBEYXR1bUdldENTdHJp bmcoRGlyZWN0RnVuY3Rpb25DYWxsMShudW1lcmljX291dCwKKwkJCQkJCQkJCQkJCSAgIE51bWVy aWNHZXREYXR1bShqc29udmFsLT52YWwubnVtZXJpYykpKTsKKwlhcHBlbmRTdHJpbmdJbmZvU3Ry aW5nKGJ1Ziwgc3RyZGF0dW0pOworfQorCisvKgorICogRXhwYW5kIGEganNvbiB2YWx1ZSBhcyBh IHJvbGUgbmFtZS4gIElmIHRoZSBpc19wdWJsaWMgZWxlbWVudCBpcyBzZXQgdG8KKyAqIHRydWUs IFBVQkxJQyBpcyBleHBhbmRlZCAobm8gcXVvdGVzKTsgb3RoZXJ3aXNlLCBleHBhbmQgdGhlIGdp dmVuIHJvbGUgbmFtZSwKKyAqIHF1b3RpbmcgYXMgYW4gaWRlbnRpZmllci4KKyAqLworc3RhdGlj IHZvaWQKK2V4cGFuZF9qc29udmFsX3JvbGUoU3RyaW5nSW5mbyBidWYsIEpzb25iVmFsdWUgKmpz b252YWwpCit7CisJdHJpdmFsdWUJaXNfcHVibGljOworCisJaXNfcHVibGljID0gZmluZF9ib29s X2luX2pzb25iY29udGFpbmVyKGpzb252YWwtPnZhbC5iaW5hcnkuZGF0YSwKKwkJCQkJCQkJCQkJ ImlzX3B1YmxpYyIpOworCWlmIChpc19wdWJsaWMgPT0gdHZfdHJ1ZSkKKwkJYXBwZW5kU3RyaW5n SW5mb1N0cmluZyhidWYsICJQVUJMSUMiKTsKKwllbHNlCisJeworCQljaGFyICpyb2xlbmFtZTsK KworCQlyb2xlbmFtZSA9IGZpbmRfc3RyaW5nX2luX2pzb25iY29udGFpbmVyKGpzb252YWwtPnZh bC5iaW5hcnkuZGF0YSwKKwkJCQkJCQkJCQkJCSAicm9sZW5hbWUiLCBmYWxzZSwgTlVMTCk7CisJ CWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCBxdW90ZV9pZGVudGlmaWVyKHJvbGVuYW1lKSk7 CisJfQorfQorCisvKgorICogRXhwYW5kIG9uZSBqc29uIGVsZW1lbnQgaW50byB0aGUgb3V0cHV0 IFN0cmluZ0luZm8gYWNjb3JkaW5nIHRvIHRoZQorICogY29udmVyc2lvbiBzcGVjaWZpZXIuICBU aGUgZWxlbWVudCB0eXBlIGlzIHZhbGlkYXRlZCwgYW5kIGFuIGVycm9yIGlzIHJhaXNlZAorICog aWYgaXQgZG9lc24ndCBtYXRjaCB3aGF0IHdlIGV4cGVjdCBmb3IgdGhlIGNvbnZlcnNpb24gc3Bl Y2lmaWVyLgorICoKKyAqIFJldHVybnMgZmFsc2UgaWYgbm8gYWN0dWFsIGV4cGFuc2lvbiB3YXMg bWFkZSAoZHVlIHRvIHRoZSAicHJlc2VudCIgZmxhZworICogYmVpbmcgc2V0IHRvICJmYWxzZSIg aW4gZm9ybWF0dGVkIHN0cmluZyBleHBhbnNpb24pLgorICovCitzdGF0aWMgYm9vbAorZXhwYW5k X29uZV9qc29uYl9lbGVtZW50KFN0cmluZ0luZm8gb3V0LCBjaGFyICpwYXJhbSwgSnNvbmJWYWx1 ZSAqanNvbnZhbCwKKwkJCQkJCSBjb252U3BlY2lmaWVyIHNwZWNpZmllciwgY29uc3QgY2hhciAq Zm10KQoreworCWJvb2wgcmVzdWx0ID0gdHJ1ZTsKKwlFcnJvckNvbnRleHRDYWxsYmFjayBzcWxl cnJjb250ZXh0OworCisJLyogSWYgd2Ugd2VyZSBnaXZlbiBhIGZvcm1hdCBzdHJpbmcsIHNldHVw IGFuIGVyZXBvcnQoKSBjb250ZXh0IGNhbGxiYWNrICovCisJaWYgKGZtdCkKKwl7CisJCXNxbGVy cmNvbnRleHQuY2FsbGJhY2sgPSBmbXRzdHJfZXJyb3JfY2FsbGJhY2s7CisJCXNxbGVycmNvbnRl eHQuYXJnID0gKHZvaWQgKikgZm10OworCQlzcWxlcnJjb250ZXh0LnByZXZpb3VzID0gZXJyb3Jf Y29udGV4dF9zdGFjazsKKwkJZXJyb3JfY29udGV4dF9zdGFjayA9ICZzcWxlcnJjb250ZXh0Owor CX0KKworCWlmICghanNvbnZhbCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJD T0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkgZXJybXNnKCJlbGVtZW50IFwiJXNc IiBub3QgZm91bmQiLCBwYXJhbSkpKTsKKworCXN3aXRjaCAoc3BlY2lmaWVyKQorCXsKKwkJY2Fz ZSBTcGVjSWRlbnRpZmllcjoKKwkJCWlmIChqc29udmFsLT50eXBlICE9IGpidlN0cmluZykKKwkJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRF Ul9WQUxVRSksCisJCQkJCQkgZXJybXNnKCJleHBlY3RlZCBKU09OIHN0cmluZyBmb3IgJSVJIGVs ZW1lbnQgXCIlc1wiLCBnb3QgJWQiLAorCQkJCQkJCQlwYXJhbSwganNvbnZhbC0+dHlwZSkpKTsK KwkJCWV4cGFuZF9qc29udmFsX2lkZW50aWZpZXIob3V0LCBqc29udmFsKTsKKwkJCWJyZWFrOwor CisJCWNhc2UgU3BlY0RvdHRlZE5hbWU6CisJCQlpZiAoanNvbnZhbC0+dHlwZSAhPSBqYnZCaW5h cnkpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9Q QVJBTUVURVJfVkFMVUUpLAorCQkJCQkJIGVycm1zZygiZXhwZWN0ZWQgSlNPTiBvYmplY3QgZm9y ICUlRCBlbGVtZW50IFwiJXNcIiwgZ290ICVkIiwKKwkJCQkJCQkJcGFyYW0sIGpzb252YWwtPnR5 cGUpKSk7CisJCQlleHBhbmRfanNvbnZhbF9kb3R0ZWRuYW1lKG91dCwganNvbnZhbCk7CisJCQli cmVhazsKKworCQljYXNlIFNwZWNTdHJpbmc6CisJCQlpZiAoanNvbnZhbC0+dHlwZSAhPSBqYnZT dHJpbmcgJiYKKwkJCQlqc29udmFsLT50eXBlICE9IGpidkJpbmFyeSkKKwkJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJ CQkJCQkgZXJybXNnKCJleHBlY3RlZCBKU09OIHN0cmluZyBvciBvYmplY3QgZm9yICUlcyBlbGVt ZW50IFwiJXNcIiwgZ290ICVkIiwKKwkJCQkJCQkJcGFyYW0sIGpzb252YWwtPnR5cGUpKSk7CisJ CQlyZXN1bHQgPSBleHBhbmRfanNvbnZhbF9zdHJpbmcob3V0LCBqc29udmFsKTsKKwkJCWJyZWFr OworCisJCWNhc2UgU3BlY1N0cmluZ0xpdGVyYWw6CisJCQlpZiAoanNvbnZhbC0+dHlwZSAhPSBq YnZTdHJpbmcpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5W QUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkJIGVycm1zZygiZXhwZWN0ZWQgSlNPTiBzdHJp bmcgZm9yICUlTCBlbGVtZW50IFwiJXNcIiwgZ290ICVkIiwKKwkJCQkJCQkJcGFyYW0sIGpzb252 YWwtPnR5cGUpKSk7CisJCQlleHBhbmRfanNvbnZhbF9zdHJsaXQob3V0LCBqc29udmFsKTsKKwkJ CWJyZWFrOworCisJCWNhc2UgU3BlY1R5cGVuYW1lOgorCQkJaWYgKGpzb252YWwtPnR5cGUgIT0g amJ2QmluYXJ5KQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lO VkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJCSBlcnJtc2coImV4cGVjdGVkIEpTT04gb2Jq ZWN0IGZvciAlJVQgZWxlbWVudCBcIiVzXCIsIGdvdCAlZCIsCisJCQkJCQkJCXBhcmFtLCBqc29u dmFsLT50eXBlKSkpOworCQkJZXhwYW5kX2pzb252YWxfdHlwZW5hbWUob3V0LCBqc29udmFsKTsK KwkJCWJyZWFrOworCisJCWNhc2UgU3BlY09wZXJhdG9ybmFtZToKKwkJCWlmIChqc29udmFsLT50 eXBlICE9IGpidkJpbmFyeSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJS Q09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCQkgZXJybXNnKCJleHBlY3RlZCBK U09OIG9iamVjdCBmb3IgJSVPIGVsZW1lbnQgXCIlc1wiLCBnb3QgJWQiLAorCQkJCQkJCQlwYXJh bSwganNvbnZhbC0+dHlwZSkpKTsKKwkJCWV4cGFuZF9qc29udmFsX29wZXJhdG9yKG91dCwganNv bnZhbCk7CisJCQlicmVhazsKKworCQljYXNlIFNwZWNOdW1iZXI6CisJCQlpZiAoanNvbnZhbC0+ dHlwZSAhPSBqYnZOdW1lcmljKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShF UlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJCSBlcnJtc2coImV4cGVjdGVk IEpTT04gbnVtZXJpYyBmb3IgJSVuIGVsZW1lbnQgXCIlc1wiLCBnb3QgJWQiLAorCQkJCQkJCQlw YXJhbSwganNvbnZhbC0+dHlwZSkpKTsKKwkJCWV4cGFuZF9qc29udmFsX251bWJlcihvdXQsIGpz b252YWwpOworCQkJYnJlYWs7CisKKwkJY2FzZSBTcGVjUm9sZToKKwkJCWlmIChqc29udmFsLT50 eXBlICE9IGpidkJpbmFyeSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJS Q09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCQkgZXJybXNnKCJleHBlY3RlZCBK U09OIG9iamVjdCBmb3IgJSVSIGVsZW1lbnQgXCIlc1wiLCBnb3QgJWQiLAorCQkJCQkJCQlwYXJh bSwganNvbnZhbC0+dHlwZSkpKTsKKwkJCWV4cGFuZF9qc29udmFsX3JvbGUob3V0LCBqc29udmFs KTsKKwkJCWJyZWFrOworCX0KKworCWlmIChmbXQpCisJCWVycm9yX2NvbnRleHRfc3RhY2sgPSBz cWxlcnJjb250ZXh0LnByZXZpb3VzOworCisJcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIEl0 ZXJhdGUgb24gdGhlIGVsZW1lbnRzIG9mIGEgSlNPTiBhcnJheSwgZXhwYW5kaW5nIGVhY2ggb25l IGludG8gdGhlIG91dHB1dAorICogU3RyaW5nSW5mbyBwZXIgdGhlIGdpdmVuIGNvbnZlcnNpb24g c3BlY2lmaWVyLCBzZXBhcmF0ZWQgYnkgdGhlIGdpdmVuCisgKiBzZXBhcmF0b3IuCisgKi8KK3N0 YXRpYyB2b2lkCitleHBhbmRfanNvbmJfYXJyYXkoU3RyaW5nSW5mbyBvdXQsIGNoYXIgKnBhcmFt LAorCQkJCSAgIEpzb25iVmFsdWUgKmpzb25hcnIsIGNoYXIgKmFycmF5c2VwLCBjb252U3BlY2lm aWVyIHNwZWNpZmllciwKKwkJCQkgICBjb25zdCBjaGFyICpmbXQpCit7CisJRXJyb3JDb250ZXh0 Q2FsbGJhY2sgc3FsZXJyY29udGV4dDsKKwlKc29uYkNvbnRhaW5lciAqY29udGFpbmVyOworCUpz b25iSXRlcmF0b3IgICppdDsKKwlKc29uYlZhbHVlCXY7CisJaW50CQkJdHlwZTsKKwlzaXplX3QJ CWFycmF5c2VwbGVuOworCWJvb2wJCWZpcnN0ID0gdHJ1ZTsKKworCS8qIElmIHdlIHdlcmUgZ2l2 ZW4gYSBmb3JtYXQgc3RyaW5nLCBzZXR1cCBhbiBlcmVwb3J0KCkgY29udGV4dCBjYWxsYmFjayAq LworCWlmIChmbXQpCisJeworCQlzcWxlcnJjb250ZXh0LmNhbGxiYWNrID0gZm10c3RyX2Vycm9y X2NhbGxiYWNrOworCQlzcWxlcnJjb250ZXh0LmFyZyA9ICh2b2lkICopIGZtdDsKKwkJc3FsZXJy Y29udGV4dC5wcmV2aW91cyA9IGVycm9yX2NvbnRleHRfc3RhY2s7CisJCWVycm9yX2NvbnRleHRf c3RhY2sgPSAmc3FsZXJyY29udGV4dDsKKwl9CisKKwlpZiAoanNvbmFyci0+dHlwZSAhPSBqYnZC aW5hcnkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BB UkFNRVRFUl9WQUxVRSksCisJCQkJIGVycm1zZygiZWxlbWVudCBcIiVzXCIgaXMgbm90IGEgSlNP TiBhcnJheSIsIHBhcmFtKSkpOworCisJY29udGFpbmVyID0ganNvbmFyci0+dmFsLmJpbmFyeS5k YXRhOworCWlmICgoY29udGFpbmVyLT5oZWFkZXIgJiBKQl9GQVJSQVkpID09IDApCisJCWVyZXBv cnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSks CisJCQkJIGVycm1zZygiZWxlbWVudCBcIiVzXCIgaXMgbm90IGEgSlNPTiBhcnJheSIsIHBhcmFt KSkpOworCisJYXJyYXlzZXBsZW4gPSBzdHJsZW4oYXJyYXlzZXApOworCisJaXQgPSBKc29uYkl0 ZXJhdG9ySW5pdChjb250YWluZXIpOworCXdoaWxlICgodHlwZSA9IEpzb25iSXRlcmF0b3JOZXh0 KCZpdCwgJnYsIHRydWUpKSAhPSBXSkJfRE9ORSkKKwl7CisJCXN3aXRjaCAodHlwZSkKKwkJewor CQkJY2FzZSBXSkJfRUxFTToKKwkJCQlpZiAoIWZpcnN0KQorCQkJCQlhcHBlbmRTdHJpbmdJbmZv U3RyaW5nKG91dCwgYXJyYXlzZXApOworCisJCQkJaWYgKGV4cGFuZF9vbmVfanNvbmJfZWxlbWVu dChvdXQsIHBhcmFtLCAmdiwgc3BlY2lmaWVyLCBOVUxMKSkKKwkJCQkJZmlyc3QgPSBmYWxzZTsK KwkJCQllbHNlCisJCQkJeworCQkJCQlpZiAoIWZpcnN0KQorCQkJCQl7CisJCQkJCQkvKiByZW1v dmUgdGhlIGFycmF5IHNlcGFyYXRvciAqLworCQkJCQkJb3V0LT5sZW4gLT0gYXJyYXlzZXBsZW47 CisJCQkJCQlvdXQtPmRhdGFbb3V0LT5sZW5dID0gJ1wwJzsKKwkJCQkJfQorCQkJCX0KKwkJCQli cmVhazsKKwkJfQorCX0KKworCWlmIChmbXQpCisJCWVycm9yX2NvbnRleHRfc3RhY2sgPSBzcWxl cnJjb250ZXh0LnByZXZpb3VzOworfQorCitjaGFyICoKK2RkbF9kZXBhcnNlX2pzb25fdG9fc3Ry aW5nKGNoYXIgKmpzb25fc3RyKQoreworCURhdHVtCQlkOworCUpzb25iCSAgICpqc29uYjsKKwlT dHJpbmdJbmZvIG91dCA9IChTdHJpbmdJbmZvKSBwYWxsb2MwKHNpemVvZihTdHJpbmdJbmZvRGF0 YSkpOworCisJaW5pdFN0cmluZ0luZm8ob3V0KTsKKworCWQgPSBEaXJlY3RGdW5jdGlvbkNhbGwx KGpzb25iX2luLAorCQkJCQkJCVBvaW50ZXJHZXREYXR1bShqc29uX3N0cikpOworCWpzb25iID0g KEpzb25iICopIERhdHVtR2V0UG9pbnRlcihkKTsKKworCWV4cGFuZF9mbXRfcmVjdXJzaXZlKCZq c29uYi0+cm9vdCwgb3V0KTsKKworCXJldHVybiBvdXQtPmRhdGE7Cit9CisKKy8qLS0tLS0tCisg KiBSZXR1cm5zIGEgZm9ybWF0dGVkIHN0cmluZyBmcm9tIGEgSlNPTiBvYmplY3QuCisgKgorICog VGhlIHN0YXJ0aW5nIHBvaW50IGlzIHRoZSBlbGVtZW50IG5hbWVkICJmbXQiICh3aGljaCBtdXN0 IGJlIGEgc3RyaW5nKS4KKyAqIFRoaXMgZm9ybWF0IHN0cmluZyBtYXkgY29udGFpbiB6ZXJvIG9y IG1vcmUgJS1lc2NhcGVzLCB3aGljaCBjb25zaXN0IG9mIGFuCisgKiBlbGVtZW50IG5hbWUgZW5j bG9zZWQgaW4geyB9LCBwb3NzaWJseSBmb2xsb3dlZCBieSBhIGNvbnZlcnNpb24gbW9kaWZpZXIs CisgKiBmb2xsb3dlZCBieSBhIGNvbnZlcnNpb24gc3BlY2lmaWVyLglQb3NzaWJsZSBjb252ZXJz aW9uIHNwZWNpZmllcnMgYXJlOgorICoKKyAqICUJCWV4cGFuZCB0byBhIGxpdGVyYWwgJS4KKyAq IEkJCWV4cGFuZCBhcyBhIHNpbmdsZSwgbm9uLXF1YWxpZmllZCBpZGVudGlmaWVyCisgKiBECQll eHBhbmQgYXMgYSBwb3NzaWJseS1xdWFsaWZpZWQgaWRlbnRpZmllcgorICogVAkJZXhwYW5kIGFz IGEgdHlwZSBuYW1lCisgKiBPCQlleHBhbmQgYXMgYW4gb3BlcmF0b3IgbmFtZQorICogTAkJZXhw YW5kIGFzIGEgc3RyaW5nIGxpdGVyYWwgKHF1b3RlIHVzaW5nIHNpbmdsZSBxdW90ZXMpCisgKiBz CQlleHBhbmQgYXMgYSBzaW1wbGUgc3RyaW5nIChubyBxdW90aW5nKQorICogbgkJZXhwYW5kIGFz IGEgc2ltcGxlIG51bWJlciAobm8gcXVvdGluZykKKyAqIFIJCWV4cGFuZCBhcyBhIHJvbGUgbmFt ZSAocG9zc2libHkgcXVvdGVkIG5hbWUsIG9yIFBVQkxJQykKKyAqCisgKiBUaGUgZWxlbWVudCBu YW1lIG1heSBoYXZlIGFuIG9wdGlvbmFsIHNlcGFyYXRvciBzcGVjaWZpY2F0aW9uIHByZWNlZGVk CisgKiBieSBhIGNvbG9uLglJdHMgcHJlc2VuY2UgaW5kaWNhdGVzIHRoYXQgdGhlIGVsZW1lbnQg aXMgZXhwZWN0ZWQgdG8gYmUKKyAqIGFuIGFycmF5OyB0aGUgc3BlY2lmaWVkIHNlcGFyYXRvciBp cyB1c2VkIHRvIGpvaW4gdGhlIGFycmF5IGVsZW1lbnRzLgorICotLS0tLS0KKyAqLworRGF0dW0K K2RkbF9kZXBhcnNlX2V4cGFuZF9jb21tYW5kKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJdGV4dAkg ICAqanNvbiA9IFBHX0dFVEFSR19URVhUX1AoMCk7CisJY2hhcgkgICAqanNvbl9zdHI7CisKKwlq c29uX3N0ciA9IFRleHREYXR1bUdldENTdHJpbmcoanNvbik7CisKKwlQR19SRVRVUk5fVEVYVF9Q KENTdHJpbmdHZXRUZXh0RGF0dW0oZGRsX2RlcGFyc2VfanNvbl90b19zdHJpbmcoanNvbl9zdHIp KSk7Cit9CisKKy8qCisgKiBFcnJvciBjb250ZXh0IGNhbGxiYWNrIGZvciBKU09OIGZvcm1hdCBz dHJpbmcgZXhwYW5zaW9uLgorICoKKyAqIFBvc3NpYmxlIGltcHJvdmVtZW50OiBpbmRpY2F0ZSB3 aGljaCBlbGVtZW50IHdlJ3JlIGV4cGFuZGluZywgaWYgYXBwbGljYWJsZQorICovCitzdGF0aWMg dm9pZAorZm10c3RyX2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZykKK3sKKwllcnJjb250ZXh0KCJ3 aGlsZSBleHBhbmRpbmcgZm9ybWF0IHN0cmluZyBcIiVzXCIiLCAoY2hhciAqKSBhcmcpOworCit9 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXggYzM5MzdhNi4uMmM0YmNkYyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtMjE0Myw2ICsyMTQzLDE1IEBAIHBnX2dldF9jb25z dHJhaW50ZGVmX2V4dChQR19GVU5DVElPTl9BUkdTKQogfQogCiAvKgorICogSW50ZXJuYWwgdmVy c2lvbiB0aGF0IHJldHVybnMgZGVmaW5pdGlvbiBvZiBhIENPTlNUUkFJTlQgY29tbWFuZAorICov CitjaGFyICoKK3BnX2dldF9jb25zdHJhaW50ZGVmX2NvbW1hbmRfc2ltcGxlKE9pZCBjb25zdHJh aW50SWQpCit7CisJcmV0dXJuIHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihjb25zdHJhaW50 SWQsIGZhbHNlLCAwLCBmYWxzZSk7Cit9CisKKy8qCiAgKiBJbnRlcm5hbCB2ZXJzaW9uIHRoYXQg cmV0dXJucyBhIGZ1bGwgQUxURVIgVEFCTEUgLi4uIEFERCBDT05TVFJBSU5UIGNvbW1hbmQKICAq LwogY2hhciAqCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCA4N2FhNTcxLi44YWE2MzZjIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTExODg0LDUgKzExODg0LDEwIEBACiAgIHByb25h bWUgPT4gJ2JyaW5fbWlubWF4X211bHRpX3N1bW1hcnlfc2VuZCcsIHByb3ZvbGF0aWxlID0+ICdz JywKICAgcHJvcmV0dHlwZSA9PiAnYnl0ZWEnLCBwcm9hcmd0eXBlcyA9PiAncGdfYnJpbl9taW5t YXhfbXVsdGlfc3VtbWFyeScsCiAgIHByb3NyYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfc3VtbWFy eV9zZW5kJyB9LAotCit7IG9pZCA9PiAnNDY0MicsIGRlc2NyID0+ICdkZGwgZGVwYXJzZScsCisg IHByb25hbWUgPT4gJ2RkbF9kZXBhcnNlX3RvX2pzb24nLCBwcm9yZXR0eXBlID0+ICd0ZXh0JywK KyAgcHJvYXJndHlwZXMgPT4gJ3BnX2RkbF9jb21tYW5kJywgcHJvc3JjID0+ICdkZGxfZGVwYXJz ZV90b19qc29uJyB9LAoreyBvaWQgPT4gJzQ2NDMnLCBkZXNjciA9PiAnanNvbiB0byBzdHJpbmcn LAorICBwcm9uYW1lID0+ICdkZGxfZGVwYXJzZV9leHBhbmRfY29tbWFuZCcsIHByb3JldHR5cGUg PT4gJ3RleHQnLAorICBwcm9hcmd0eXBlcyA9PiAndGV4dCcsIHByb3NyYyA9PiAnZGRsX2RlcGFy c2VfZXhwYW5kX2NvbW1hbmQnIH0sCiBdCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS90Y29wL2Rk bF9kZXBhcnNlLmggYi9zcmMvaW5jbHVkZS90Y29wL2RkbF9kZXBhcnNlLmgKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmIxNzRkMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9p bmNsdWRlL3Rjb3AvZGRsX2RlcGFyc2UuaApAQCAtMCwwICsxLDEwIEBACisjaWZuZGVmIERETF9E RVBBUlNFX0gKKyNkZWZpbmUgRERMX0RFUEFSU0VfSAorCisjaW5jbHVkZSAidGNvcC9kZXBhcnNl X3V0aWxpdHkuaCIKKworZXh0ZXJuIGNoYXIgKmRlcGFyc2VfdXRpbGl0eV9jb21tYW5kKENvbGxl Y3RlZENvbW1hbmQgKmNtZCk7CitleHRlcm4gY2hhciAqZGRsX2RlcGFyc2VfanNvbl90b19zdHJp bmcoY2hhciAqanNvbmIpOworZXh0ZXJuIGNoYXIgKmRlcGFyc2VfZHJvcF90YWJsZShjb25zdCBj aGFyICpvYmppZGVudGl0eSk7CisKKyNlbmRpZgkJLyogRERMX0RFUEFSU0VfSCAqLwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0aWxzLmggYi9zcmMvaW5jbHVkZS91dGlscy9y dWxldXRpbHMuaAppbmRleCA3ZDQ4OTcxLi40NjdkZTdjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS91dGlscy9ydWxldXRpbHMuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9ydWxldXRpbHMuaApA QCAtMjksNiArMjksNyBAQCBleHRlcm4gY2hhciAqcGdfZ2V0X3BhcnRrZXlkZWZfY29sdW1ucyhP aWQgcmVsaWQsIGJvb2wgcHJldHR5KTsKIGV4dGVybiBjaGFyICpwZ19nZXRfcGFydGNvbnN0cmRl Zl9zdHJpbmcoT2lkIHBhcnRpdGlvbklkLCBjaGFyICphbGlhc25hbWUpOwogCiBleHRlcm4gY2hh ciAqcGdfZ2V0X2NvbnN0cmFpbnRkZWZfY29tbWFuZChPaWQgY29uc3RyYWludElkKTsKK2V4dGVy biBjaGFyICpwZ19nZXRfY29uc3RyYWludGRlZl9jb21tYW5kX3NpbXBsZShPaWQgY29uc3RyYWlu dElkKTsKIGV4dGVybiBjaGFyICpkZXBhcnNlX2V4cHJlc3Npb24oTm9kZSAqZXhwciwgTGlzdCAq ZHBjb250ZXh0LAogCQkJCQkJCQlib29sIGZvcmNlcHJlZml4LCBib29sIHNob3dpbXBsaWNpdCk7 CiBleHRlcm4gTGlzdCAqZGVwYXJzZV9jb250ZXh0X2Zvcihjb25zdCBjaGFyICphbGlhc25hbWUs IE9pZCByZWxpZCk7Ci0tIAoyLjcuMi53aW5kb3dzLjEKCg== --_004_OS0PR01MB571695EDF9EAB2422FBF2C1094DE9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v6-0002-Support-DDL-replication.patch" Content-Description: v6-0002-Support-DDL-replication.patch Content-Disposition: attachment; filename="v6-0002-Support-DDL-replication.patch"; size=130573; creation-date="Thu, 02 Jun 2022 12:12:00 GMT"; modification-date="Thu, 02 Jun 2022 12:13:58 GMT" Content-Transfer-Encoding: base64 RnJvbSA1YTEwZmQzZTkyYzg2YjZjZDkyNmE2YmZhZmMxMGIzMWExYzU2MGUxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IEZyaSwgMjcgTWF5IDIwMjIgMTQ6MDA6MDcgKzA4MDAKU3ViamVjdDogW1BBVENI XSBTdXBwb3J0IERETCByZXBsaWNhdGlvbi4KClRvIHN1cHBvcnQgRERMIHJlcGxpY2F0aW9uLCB3 ZSB1c2UgZXZlbnQgdHJpZ2dlciBhbmQgRERMIGRlcGFyc2luZwpmYWNpbGl0aWVzLiBXaGlsZSBj cmVhdGluZyBhIHB1YmxpY2F0aW9uLCB3ZSByZWdpc3RlciBhIGNvbW1hbmQgZW5kCnRyaWdnZXIg dGhhdCBkZXBhcnNlcyB0aGUgRERMIGFzIGEgSlNPTiBibG9iLCBhbmQgV0FMIGxvZ3MgaXQuIFRo ZSBldmVudAp0cmlnZ2VyIGlzIGF1dG9tYXRpY2FsbHkgcmVtb3ZlZCBhdCB0aGUgdGltZSBvZiBk cm9wIHB1YmxpY2F0aW9uLiBUaGUKV0FMU2VuZGVyIGRlY29kZXMgdGhlIFdBTCBhbmQgc2VuZHMg aXQgZG93bnN0cmVhbSBzaW1pbGFyIHRvIG90aGVyIERNTApjb21tYW5kcy4gVGhlIHN1YnNjcmli ZXIgdGhlbiBjb252ZXJ0cyBKU09OIGJhY2sgdG8gdGhlIERETCBjb21tYW5kIHN0cmluZwphbmQg ZXhlY3V0ZXMgaXQuIEluIHRoZSBzdWJzY3JpYmVyLCB3ZSBhbHNvIGFkZCB0aGUgbmV3bHkgYWRk ZWQgcmVsIHRvCnBnX3N1YnNjcmlwdGlvbl9yZWwgc28gdGhhdCB0aGUgRE1MIGNoYW5nZXMgb24g dGhlIG5ldyB0YWJsZSBjYW4gYmUKcmVwbGljYXRlZCB3aXRob3V0IGhhdmluZyB0byBtYW51YWxs eSBydW4KIkFMVEVSIFNVQlNDUklQVElPTiAuLi4gUkVGUkVTSCBQVUJMSUNBVElPTiIuCgpUaGlz IGlzIGEgUE9DIHBhdGNoIHRvIHNob3cgaG93IHVzaW5nIGV2ZW50IHRyaWdnZXJzIGFuZCBEREwg ZGVwYXJzaW5nCmZhY2lsaXRpZXMgd2UgY2FuIGltcGxlbWVudCBEREwgcmVwbGljYXRpb24uIFNv LCB0aGUgaW1wbGVtZW50YXRpb24gaXMKcmVzdHJpY3RlZCB0byBDUkVBVEUgVEFCTEUvQUxURVIg VEFCTEUvRFJPUCBUQUJMRSBjb21tYW5kcy4KCi0gRm9yIG5vbi1yZXdyaXRlIEFMVEVSIFRBQkxF IGNvbW1hbmQgYW5kIENSRUFURSBUQUJMRToKd2UgZGVwYXJzZSB0aGUgY29tbWFuZCBhdCBkZGxf Y29tbWFuZF9lbmQgZXZlbnQgdHJpZ2dlciBhbmQgV0FMIGxvZyB0aGUKZGVwYXJzZWQganNvbiBz dHJpbmcuIFRoZSBXQUxTZW5kZXIgZGVjb2RlcyB0aGUgV0FMIGFuZCBzZW5kcyBpdCB0bwpzdWJz Y3JpYmVyIGlmIHRoZSBjcmVhdGVkL2FsdGVyZWQgdGFibGUgaXMgcHVibGlzaGVkLiBJdCBzdXBw b3J0cyBtb3N0IG9mCkFMVEVSIFRBQkxFIGNvbW1hbmQgZXhjZXB0IHNvbWUgY29tbWFuZHMoRERM IHJlbGF0ZWQgdG8gUEFSVElUSU9ORUQgVEFCTEUKLi4uKSB0aGF0IGludHJvZHVjZWQgcmVjZW50 bHkgd2hpY2ggaGF2ZW4ndCBiZWVuIHN1cHBvcnRlZCBieSB0aGUgY3VycmVudApkZGxfZGVwYXJz ZXIsIHdlIHdpbGwgc3VwcG9ydCB0aGF0IGxhdGVyLgoKLSBGb3IgRFJPUCBUQUJMRToKVGhlICdj b21tYW5kIHN0YXJ0JyBldmVudCBoYW5kbGVyIGxvZ3MgYSBkZGwgbWVzc2FnZSB3aXRoIHRoZSBy ZWxpZHMgb2YKdGhlIHRhYmxlcyB0aGF0IGFyZSBkcm9wcGVkIHdoaWNoIHRoZSBvdXRwdXQgcGx1 Z2luIChwZ291dHB1dCkgc3RvcmVzIGluCml0cyBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZSBhZnRl ciB2ZXJpZnlpbmcgdGhhdCBpdCBpcyBmb3IgYSB0YWJsZSB0aGF0IGlzCnBhcnQgb2YgdGhlIHB1 YmxpY2F0aW9uLiBMYXRlciB0aGUgJ2NvbW1hbmQgZW5kJyBldmVudCBoYW5kbGVyIHNlbmRzIHRo ZQphY3R1YWwgZHJvcCBtZXNzYWdlLiBQZ291dHB1dCBvbiByZWNlaXZpbmcgdGhlIGNvbW1hbmQg ZW5kLCBvbmx5IHNlbmRzIG91dAp0aGUgZHJvcCBjb21tYW5kIG9ubHkgaWYgaXQgaXMgZm9yIG9u ZSBvZiB0aGUgcmVsaWRzIG1hcmtlZCBmb3IgZGVsZXRpbmcuClRoZSByZWFzb24gd2UgaGF2ZSB0 byBkbyB0aGlzIGlzIGJlY2F1c2UsIG9uY2UgdGhlIGxvZ2ljYWwgZGVjb2RlcgpyZWNlaXZlcyB0 aGUgJ2NvbW1hbmQgZW5kJyBtZXNzYWdlLCAgdGhlIHJlbGlkIG9mIHRoZSB0YWJsZSBpcyBubyBs b25nZXIKdmFsaWQgYXMgaXQgaGFzIGJlZW4gZGVsZXRlZCBhcyBwYXJ0IG9mIGludmFsaWRhdGlv bnMgcmVjZWl2ZWQgZm9yIHRoZQpkcm9wIHRhYmxlIGNvbW1hbmQuIEl0IGlzIG5vIGxvbmdlciBw b3NzaWJsZSB0byB2ZXJpZnkgaWYgdGhlIHRhYmxlIGlzCnBhcnQgb2YgdGhlIHB1YmxpY2F0aW9u IGxpc3Qgb3Igbm90LiBUbyBtYWtlIHRoaXMgcG9zc2libGUsIEkgaGF2ZSBhZGRlZAp0d28gbW9y ZSBlbGVtZW50cyB0byB0aGUgZGRsIHhsb2cgYW5kIGRkbCBtZXNzYWdlLCAocmVsaWQgYW5kIGNt ZHR5cGUpLgoKV2UgY291bGQgaGF2ZSBhbHNvIGhhbmRsZWQgYWxsIHRoaXMgb24gdGhlIHN1YnNj cmliZXIgc2lkZSBhcyB3ZWxsLCBidXQKdGhhdCB3b3VsZCBtZWFuIHNlbmRpbmcgc3B1cmlvdXMg ZGRsIG1lc3NhZ2VzIGZvciB0YWJsZXMgdGhhdCBhcmUgbm90IHBhcnQKb2YgdGhlIHB1YmxpY2F0 aW9uLgoKLSBGb3IgdGFibGVfcmV3cml0ZSBBTFRFUiBUQUJMRSBjb21tYW5kOgooQUxURVIgQ09M VU1OIFRZUEUsIEFERCBDT0xVTU4gREVGQVVMVCwgU0VUIExPR0dFRCwgU0VUIEFDQ0VTUyBNRVRI T0QpCgp3ZSBkZXBhcnNlIHRoZSBjb21tYW5kIGFuZCBXQUwgbG9nIHRoZSBkZXBhcnNlZCBqc29u IHN0cmluZyBhdAp0YWJsZV9yZXdyaXRlIGV2ZW50IHRyaWdnZXIuIFRoZSBXQUxTZW5kZXIgZGVj b2RlcyB0aGUgV0FMIGFuZCBzZW5kcyBpdCB0bwpzdWJzY3JpYmVyIGlmIHRoZSBhbHRlcmVkIHRh YmxlIGlzIHB1Ymxpc2hlZC4gVGhlbiwgdGhlIFdBTFNlbmRlciB3aWxsCmNvbnZlcnQgdGhlIHVw Y29taW5nIHJld3JpdGUgSU5TRVJUcyB0byBVUERBVEVzIGFuZCBzZW5kIHRoZW0gdG8Kc3Vic2Ny aWJlciBzbyB0aGF0IHRoZSBkYXRhIGJldHdlZW4gcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyIGNh biBhbHdheXMgYmUKY29uc2lzdGVudC4gTm90ZSB0aGF0IHRoZSB0YWJsZXMgdGhhdCBwdWJsaXNo IHJld3JpdGUgZGRsIG11c3QgaGF2ZSBhCnJlcGxpY2EgaWRlbnRpdHkgY29uZmlndXJlZCBpbiBv cmRlciB0byBiZSBhYmxlIHRvIHJlcGxpY2F0ZSB0aGUgdXBjb21pbmcKcmV3cml0ZSBVUERBVEVz LgoKV2UgZG8gdGhpcyB3YXkgYmVjYXVzZSBvZiB0d28gcmVhc29uOgooMSkgVGhlIGRhdGEgYmVm b3JlIHRoZSByZXdyaXRlIGRkbCBjb3VsZCBhbHJlYWR5IGJlIGRpZmZlcmVudCBhbW9uZwpwdWJs aXNoZXIgYW5kIHN1YnNjcmliZXIuIFRvIG1ha2Ugc3VyZSB0aGUgZXh0cmEgZGF0YSBpbiBzdWJz Y3JpYmVyIHdoaWNoCmRvZXNuJ3QgZXhpc3QgaW4gcHVibGlzaGVyIGFsc28gZ2V0IHJld3JpdHRl biwgd2UgbmVlZCB0byBsZXQgdGhlCnN1YnNjcmliZXIgZXhlY3V0ZSB0aGUgb3JpZ2luYWwgcmV3 cml0ZSBkZGwgdG8gcmV3cml0ZSBhbGwgdGhlIGRhdGEgYXQKZmlyc3QuCgooMikgdGhlIGRhdGEg YWZ0ZXIgZXhlY3V0aW5nIHJld3JpdGUgZGRsIGNvdWxkIGJlIGRpZmZlcmVudCBhbW9uZwpwdWJs aXNoZXIgYW5kIHN1YnNjcmliZXIoZHVlIHRvIGRpZmZlcmVudCBmdW5jdGlvbnMvb3BlcmF0b3Jz IHVzZWQgZHVyaW5nCnJld3JpdGUpLCBzbyB3ZSBuZWVkIHRvIHJlcGxpY2F0ZSB0aGUgcmV3cml0 ZSBVUERBVEVzIHRvIGtlZXAgdGhlIGRhdGEKY29uc2lzdGVudC4KClRPIElNUFJPVkU6ClRoaXMg YXBwcm9hY2ggY291bGQgYmUgaW1wcm92ZWQgYnkgbGV0dGluZyB0aGUgc3Vic2NyaWJlciB0cnkg dG8gdXBkYXRlCnRoZSBleHRyYSBkYXRhIGl0c2VsZiBpbnN0ZWFkIG9mIGRvaW5nIGZ1bGx5IHJl d3JpdGUgZGRsIGFuZCB1c2UgdGhlCnVwY29taW5nIHJld3JpdGUgVVBEQVRFcyB0byByZXdyaXRl IHRoZSByZXN0IGRhdGEuIFRvIGFjaGlldmUgdGhpcywgd2UKY291bGQgbW9kaWZ5IHRoZSBkZXBh cnNlZCBqc29uIHN0cmluZyB0byB0ZW1wb3JhcmlseSByZW1vdmUgdGhlIHJld3JpdGUKcGFydCBh bmQgYWRkIHNvbWUgbG9naWMgaW4gc3Vic2NyaWJlciB0byB1cGRhdGUgdGhlIGV4dHJhIGRhdGEu CkJlc2lkZXMsIHdlIG1heSBub3QgbmVlZCB0byBzZW5kIHJld3JpdGUgY2hhbmdlcyBmb3IgYWxs IHR5cGUgb2YgcmV3cml0ZQpkZGwsIGZvciBleGFtcGxlLCBpdCBzZWVtcyBmaW5lIHRvIHNraXAg c2VuZGluZyByZXdyaXRlIGNoYW5nZXMgZm9yIEFMVEVSClRBQkxFIFNFVCBMT0dHRUQgYXMgdGhl IGRhdGEgaW4gdGhlIHRhYmxlIGRvZXNuJ3QgYWN0dWFsbHkgYmUgY2hhbmdlZC4gV2UKY291bGQg dXNlIHRoZSBkZXBhcnNlciBhbmQgZXZlbnQgdHJpZ2dlciB0byBmaWx0ZXIgdGhlc2UgZGRscyBh bmQgc2tpcApzZW5kaW5nIHJld3JpdGUgY2hhbmdlcyBmb3IgdGhlbS4KLS0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3Mvcm1ncmRlc2MvTWFrZWZpbGUgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2Vu ZC9hY2Nlc3Mvcm1ncmRlc2MvbG9naWNhbGRkbG1zZ2Rlc2MuYyB8ICA1MiArKysrCiBzcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS9ybWdyLmMgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFj a2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFj a2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMgICAgICAgICAgICB8IDE0NiArKysrKysrKy0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jICAgICAgICAgIHwgMTA0ICsr KysrKysKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgICAgIHwg ICAyICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlICAgICAgICB8 ICAgMSArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RkbG1lc3NhZ2UuYyAgICB8 ICA4NiArKysrKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgICAg ICAgIHwgIDQxICsrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMg ICAgICAgfCAgOTMgKysrKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3Rv LmMgICAgICAgICB8ICA1MiArKystCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jl b3JkZXJidWZmZXIuYyB8IDEzOSArKysrKysrKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvd29ya2VyLmMgICAgICAgIHwgMjMyICsrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jICAgICB8IDE2NCArKysrKysrKystCiBzcmMv YmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyAgICAgICAgICAgICB8ICAgMiArCiBzcmMv YmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jICAgICAgICAgICAgICB8ICAgMSArCiBzcmMv YmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAgICB8ICAyNyArLQogc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3Jj L2Jpbi9wZ193YWxkdW1wL3JtZ3JkZXNjLmMgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3Jj L2Jpbi9wc3FsL2Rlc2NyaWJlLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTcgKy0KIHNy Yy9pbmNsdWRlL2FjY2Vzcy9ybWdybGlzdC5oICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNy Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICAgICAgIHwgICA5ICsKIHNy Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaCAgICAgICAgICAgIHwgICA0ICsKIHNy Yy9pbmNsdWRlL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaCAgICAgICAgICAgIHwgICAzICstCiBz cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9kZGxtZXNzYWdlLmggICAgICAgICAgICB8ICA1NyArKysr CiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9kZWNvZGUuaCAgICAgICAgICAgICAgICB8ICAgMSAr CiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaCAgICAgICAgICB8ICAgNyAr LQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3V0cHV0X3BsdWdpbi5oICAgICAgICAgfCAgMjcg KysKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmggICAgICAgICAgICAgIHwgICAx ICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaCAgICAgICAgIHwgIDM5 ICsrKwogc3JjL2luY2x1ZGUvdGNvcC9kZXBhcnNlX3V0aWxpdHkuaCAgICAgICAgICAgICAgfCAg IDEgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dCAgICAgICAgICAgICAgfCAg IDYgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0ICAgICAgIHwg Mzg4ICsrKysrKysrKysrKy0tLS0tLS0tLS0tLQogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMy X2RkbF9yZXBsaWNhdGlvbi5wbCAgfCAgODYgKysrKysrCiAzNSBmaWxlcyBjaGFuZ2VkLCAxNTc3 IGluc2VydGlvbnMoKyksIDIxNyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv YmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvbG9naWNhbGRkbG1zZ2Rlc2MuYwogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGRsbWVzc2FnZS5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vZGRsbWVzc2FnZS5oCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX2RkbF9yZXBsaWNhdGlv bi5wbAoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9NYWtlZmlsZSBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9NYWtlZmlsZQppbmRleCBmODhkNzJmLi5iOGUy OWU4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvTWFrZWZpbGUKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL01ha2VmaWxlCkBAIC0xOSw2ICsxOSw3IEBA IE9CSlMgPSBcCiAJaGFzaGRlc2MubyBcCiAJaGVhcGRlc2MubyBcCiAJbG9naWNhbG1zZ2Rlc2Mu byBcCisJbG9naWNhbGRkbG1zZ2Rlc2MubyBcCiAJbXhhY3RkZXNjLm8gXAogCW5idGRlc2MubyBc CiAJcmVsbWFwZGVzYy5vIFwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVz Yy9sb2dpY2FsZGRsbXNnZGVzYy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2xvZ2lj YWxkZGxtc2dkZXNjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFkZWU1 MgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9sb2dpY2Fs ZGRsbXNnZGVzYy5jCkBAIC0wLDAgKzEsNTIgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAq IGxvZ2ljYWxkZGxtc2dkZXNjLmMKKyAqCSAgcm1nciBkZXNjcmlwdG9yIHJvdXRpbmVzIGZvciBy ZXBsaWNhdGlvbi9sb2dpY2FsL2RkbG1lc3NhZ2UuYworICoKKyAqIFBvcnRpb25zIENvcHlyaWdo dCAoYykgMjAxNS0yMDIyLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoK KyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2Mv bG9naWNhbGRkbG1zZ2Rlc2MuYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaW5jbHVk ZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgInJlcGxpY2F0aW9uL2RkbG1lc3NhZ2UuaCIKKwor dm9pZAorbG9naWNhbGRkbG1zZ19kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUg KnJlY29yZCkKK3sKKwljaGFyCSAgICpyZWMgPSBYTG9nUmVjR2V0RGF0YShyZWNvcmQpOworCXVp bnQ4CQlpbmZvID0gWExvZ1JlY0dldEluZm8ocmVjb3JkKSAmIH5YTFJfSU5GT19NQVNLOworCisJ aWYgKGluZm8gPT0gWExPR19MT0dJQ0FMX0RETF9NRVNTQUdFKQorCXsKKwkJeGxfbG9naWNhbF9k ZGxfbWVzc2FnZSAqeGxyZWMgPSAoeGxfbG9naWNhbF9kZGxfbWVzc2FnZSAqKSByZWM7CisJCWNo YXIJICAgKnByZWZpeCA9IHhscmVjLT5tZXNzYWdlOworCQljaGFyCSAgICptZXNzYWdlID0geGxy ZWMtPm1lc3NhZ2UgKyB4bHJlYy0+cHJlZml4X3NpemU7CisJCWNoYXIJICAgKnNlcCA9ICIiOwor CisJCUFzc2VydChwcmVmaXhbeGxyZWMtPnByZWZpeF9zaXplXSAhPSAnXDAnKTsKKworCQlhcHBl bmRTdHJpbmdJbmZvKGJ1ZiwgInByZWZpeCBcIiVzXCI7IHBheWxvYWQgKCV6dSBieXRlcyk6ICIs CisJCQkJCQkgcHJlZml4LCB4bHJlYy0+bWVzc2FnZV9zaXplKTsKKwkJYXBwZW5kU3RyaW5nSW5m byhidWYsICJyZWxpZCAldSBjbWR0eXBlICV1IiwgeGxyZWMtPnJlbGlkLCB4bHJlYy0+Y21kdHlw ZSk7CisJCS8qIFdyaXRlIG1lc3NhZ2UgcGF5bG9hZCBhcyBhIHNlcmllcyBvZiBoZXggYnl0ZXMg Ki8KKwkJZm9yIChpbnQgY250ID0gMDsgY250IDwgeGxyZWMtPm1lc3NhZ2Vfc2l6ZTsgY250Kysp CisJCXsKKwkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiJXMlMDJYIiwgc2VwLCAodW5zaWduZWQg Y2hhcikgbWVzc2FnZVtjbnRdKTsKKwkJCXNlcCA9ICIgIjsKKwkJfQorCX0KK30KKworY29uc3Qg Y2hhciAqCitsb2dpY2FsZGRsbXNnX2lkZW50aWZ5KHVpbnQ4IGluZm8pCit7CisJaWYgKChpbmZv ICYgflhMUl9JTkZPX01BU0spID09IFhMT0dfTE9HSUNBTF9ERExfTUVTU0FHRSkKKwkJcmV0dXJu ICJEREwgTUVTU0FHRSI7CisKKwlyZXR1cm4gTlVMTDsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3JtZ3IuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3Jt Z3IuYwppbmRleCA4ZWQ2OTI0Li4zMTJmMTE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS9ybWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcm1nci5j CkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiZm1nci5oIgogI2luY2x1ZGUgImZ1bmNhcGku aCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9kZGxtZXNz YWdlLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vZGVjb2RlLmgiCiAjaW5jbHVkZSAicmVwbGlj YXRpb24vbWVzc2FnZS5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL29yaWdpbi5oIgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCmluZGV4IDhjN2ZjYTYuLjIwYmY4YzEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYworKysgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKQEAgLTEwMDUsNiArMTAwNSw3IEBAIEdldFB1Ymxp Y2F0aW9uKE9pZCBwdWJpZCkKIAlwdWItPnB1YmFjdGlvbnMucHVidXBkYXRlID0gcHViZm9ybS0+ cHVidXBkYXRlOwogCXB1Yi0+cHViYWN0aW9ucy5wdWJkZWxldGUgPSBwdWJmb3JtLT5wdWJkZWxl dGU7CiAJcHViLT5wdWJhY3Rpb25zLnB1YnRydW5jYXRlID0gcHViZm9ybS0+cHVidHJ1bmNhdGU7 CisJcHViLT5wdWJhY3Rpb25zLnB1YmRkbCA9IHB1YmZvcm0tPnB1YmRkbDsKIAlwdWItPnB1YnZp YXJvb3QgPSBwdWJmb3JtLT5wdWJ2aWFyb290OwogCiAJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMKaW5kZXggNDY0MjUyNy4uOWJjMjE0NSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYwpAQCAtMzcsOCArMzcsMTEgQEAKICNpbmNs dWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfZnVuYy5oIgogI2luY2x1 ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2RkbG1lc3NhZ2UuaCIKKyNpbmNs dWRlICJyZXBsaWNhdGlvbi9tZXNzYWdlLmgiCiAjaW5jbHVkZSAidGNvcC9kZXBhcnNlX3V0aWxp dHkuaCIKICNpbmNsdWRlICJ0Y29wL3V0aWxpdHkuaCIKKyNpbmNsdWRlICJ0Y29wL2RkbF9kZXBh cnNlLmgiCiAjaW5jbHVkZSAidXRpbHMvYWNsLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMu aCIKICNpbmNsdWRlICJ1dGlscy9ldnRjYWNoZS5oIgpAQCAtMTU0MCw2ICsxNTQzLDcgQEAgRXZl bnRUcmlnZ2VyQWx0ZXJUYWJsZVN0YXJ0KE5vZGUgKnBhcnNldHJlZSkKIAogCWNvbW1hbmQtPmQu YWx0ZXJUYWJsZS5jbGFzc0lkID0gUmVsYXRpb25SZWxhdGlvbklkOwogCWNvbW1hbmQtPmQuYWx0 ZXJUYWJsZS5vYmplY3RJZCA9IEludmFsaWRPaWQ7CisJY29tbWFuZC0+ZC5hbHRlclRhYmxlLnJl d3JpdGUgPSBmYWxzZTsKIAljb21tYW5kLT5kLmFsdGVyVGFibGUuc3ViY21kcyA9IE5JTDsKIAlj b21tYW5kLT5wYXJzZXRyZWUgPSBjb3B5T2JqZWN0KHBhcnNldHJlZSk7CiAKQEAgLTE1NzMsNyAr MTU3Nyw3IEBAIEV2ZW50VHJpZ2dlckFsdGVyVGFibGVSZWxpZChPaWQgb2JqZWN0SWQpCiAgKiBp bnRlcm5hbGx5LCBzbyB0aGF0J3MgYWxsIHRoYXQgdGhpcyBjb2RlIG5lZWRzIHRvIGhhbmRsZSBh dCB0aGUgbW9tZW50LgogICovCiB2b2lkCi1FdmVudFRyaWdnZXJDb2xsZWN0QWx0ZXJUYWJsZVN1 YmNtZChOb2RlICpzdWJjbWQsIE9iamVjdEFkZHJlc3MgYWRkcmVzcykKK0V2ZW50VHJpZ2dlckNv bGxlY3RBbHRlclRhYmxlU3ViY21kKE5vZGUgKnN1YmNtZCwgT2JqZWN0QWRkcmVzcyBhZGRyZXNz LCBib29sIHJld3JpdGUpCiB7CiAJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CiAJQ29sbGVjdGVkQVRT dWJjbWQgKm5ld3N1YjsKQEAgLTE1OTMsNiArMTU5Nyw3IEBAIEV2ZW50VHJpZ2dlckNvbGxlY3RB bHRlclRhYmxlU3ViY21kKE5vZGUgKnN1YmNtZCwgT2JqZWN0QWRkcmVzcyBhZGRyZXNzKQogCW5l d3N1Yi0+YWRkcmVzcyA9IGFkZHJlc3M7CiAJbmV3c3ViLT5wYXJzZXRyZWUgPSBjb3B5T2JqZWN0 KHN1YmNtZCk7CiAKKwljdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmN1cnJlbnRDb21tYW5kLT5k LmFsdGVyVGFibGUucmV3cml0ZSB8PSByZXdyaXRlOwogCWN1cnJlbnRFdmVudFRyaWdnZXJTdGF0 ZS0+Y3VycmVudENvbW1hbmQtPmQuYWx0ZXJUYWJsZS5zdWJjbWRzID0KIAkJbGFwcGVuZChjdXJy ZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmN1cnJlbnRDb21tYW5kLT5kLmFsdGVyVGFibGUuc3ViY21k cywgbmV3c3ViKTsKIApAQCAtMjE4MCwzICsyMTg1LDE0MiBAQCBzdHJpbmdpZnlfYWRlZnByaXZz X29ianR5cGUoT2JqZWN0VHlwZSBvYmp0eXBlKQogCiAJcmV0dXJuICI/Pz8iOwkJCQkvKiBrZWVw IGNvbXBpbGVyIHF1aWV0ICovCiB9CisKKy8qCisgKiBwdWJsaWNhdGlvbl9kZGxfZGVwYXJzZQor ICoKKyAqIERlcGFyc2UgdGhlIGRkbCBjb21tYW5kIGFuZCBsb2cgaXQuCisgKi8KK0RhdHVtCitw dWJsaWNhdGlvbl9kZGxfZGVwYXJzZV9zdGFydChQR19GVU5DVElPTl9BUkdTKQoreworCUV2ZW50 VHJpZ2dlckRhdGEgKnRyaWdkYXRhOworCWNoYXIJCSpjb21tYW5kID0gcHNwcmludGYoIkRyb3Ag dGFibGUgY29tbWFuZCBzdGFydCIpOworCURyb3BTdG10CSpzdG10OworCUxpc3RDZWxsCSpjZWxs MTsKKworCWlmICghQ0FMTEVEX0FTX0VWRU5UX1RSSUdHRVIoZmNpbmZvKSkKKwkJZWxvZyhFUlJP UiwgIm5vdCBmaXJlZCBieSBldmVudCB0cmlnZ2VyIG1hbmFnZXIiKTsKKworCXRyaWdkYXRhID0g KEV2ZW50VHJpZ2dlckRhdGEgKikgZmNpbmZvLT5jb250ZXh0OworCXN0bXQJID0gKERyb3BTdG10 ICopIHRyaWdkYXRhLT5wYXJzZXRyZWU7CisKKwkvKiBleHRyYWN0IHRoZSByZWxpZCBmcm9tIHRo ZSBwYXJzZSB0cmVlICovCisJZm9yZWFjaChjZWxsMSwgc3RtdC0+b2JqZWN0cykKKwl7CisJCU5v ZGUJKm9iamVjdCA9IGxmaXJzdChjZWxsMSk7CisJCU9iamVjdEFkZHJlc3MgYWRkcmVzczsKKwkJ UmVsYXRpb24gcmVsYXRpb24gPSBOVUxMOworCisJCWFkZHJlc3MgPSBnZXRfb2JqZWN0X2FkZHJl c3Moc3RtdC0+cmVtb3ZlVHlwZSwKKwkJCQkJCQkJCSBvYmplY3QsCisJCQkJCQkJCQkgJnJlbGF0 aW9uLAorCQkJCQkJCQkJIEFjY2Vzc0V4Y2x1c2l2ZUxvY2ssCisJCQkJCQkJCQkgdHJ1ZSk7CisJ CUxvZ0xvZ2ljYWxERExNZXNzYWdlKCJkZXBhcnNlIiwgYWRkcmVzcy5vYmplY3RJZCwgRENUX0Ry b3BTdGFydCwKKwkJCQkJCQkgY29tbWFuZCwgc3RybGVuKGNvbW1hbmQpICsgMSk7CisKKwkJaWYg KHJlbGF0aW9uKQorCQkJdGFibGVfY2xvc2UocmVsYXRpb24sIE5vTG9jayk7CisJfQorCXJldHVy biBQb2ludGVyR2V0RGF0dW0oTlVMTCk7Cit9CisKKy8qCisgKiBwdWJsaWNhdGlvbl9kZGxfZGVw YXJzZV90YWJsZV9yZXdyaXRlCisgKgorICogRGVwYXJzZSB0aGUgZGRsIHRhYmxlIHJld3JpdGUg Y29tbWFuZCBhbmQgbG9nIGl0LgorICovCitEYXR1bQorcHVibGljYXRpb25fZGRsX2RlcGFyc2Vf dGFibGVfcmV3cml0ZShQR19GVU5DVElPTl9BUkdTKQoreworCUNvbGxlY3RlZENvbW1hbmQgKmNt ZDsKKwljaGFyICAgICAgICAqanNvbl9zdHJpbmc7CisKKwlpZiAoIUNBTExFRF9BU19FVkVOVF9U UklHR0VSKGZjaW5mbykpCisJCWVsb2coRVJST1IsICJub3QgZmlyZWQgYnkgZXZlbnQgdHJpZ2dl ciBtYW5hZ2VyIik7CisKKwljbWQgPSBjdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmN1cnJlbnRD b21tYW5kOworCisJQXNzZXJ0KGNtZCAmJiBjbWQtPmQuYWx0ZXJUYWJsZS5yZXdyaXRlKTsKKwor CS8qIERlcGFyc2UgdGhlIERETCBjb21tYW5kIGFuZCBXQUwgbG9nIGl0IHRvIGFsbG93IGRlY29k aW5nIG9mIHRoZSBzYW1lLiAqLworCWpzb25fc3RyaW5nID0gZGVwYXJzZV91dGlsaXR5X2NvbW1h bmQoY21kKTsKKworCWlmIChqc29uX3N0cmluZyAhPSBOVUxMKQorCQlMb2dMb2dpY2FsRERMTWVz c2FnZSgiZGVwYXJzZSIsIGNtZC0+ZC5hbHRlclRhYmxlLm9iamVjdElkLCBEQ1RfQWx0ZXIsCisJ CQkJCQkJIGpzb25fc3RyaW5nLCBzdHJsZW4oanNvbl9zdHJpbmcpICsgMSk7CisKKwlyZXR1cm4g UG9pbnRlckdldERhdHVtKE5VTEwpOworfQorCisvKgorICogcHVibGljYXRpb25fZGRsX2RlcGFy c2UKKyAqCisgKiBEZXBhcnNlIHRoZSBkZGwgY29tbWFuZCBhbmQgbG9nIGl0LgorICovCitEYXR1 bQorcHVibGljYXRpb25fZGRsX2RlcGFyc2UoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlMaXN0Q2Vs bCAgICpsYzsKKwlzbGlzdF9pdGVyICBpdGVyOworCURlcGFyc2VkQ29tbWFuZFR5cGUgdHlwZTsK KwlPaWQgcmVsaWQ7CisKKwlpZiAoIUNBTExFRF9BU19FVkVOVF9UUklHR0VSKGZjaW5mbykpCisJ CWVsb2coRVJST1IsICJub3QgZmlyZWQgYnkgZXZlbnQgdHJpZ2dlciBtYW5hZ2VyIik7CisKKwlm b3JlYWNoKGxjLCBjdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmNvbW1hbmRMaXN0KQorCXsKKwkJ Q29sbGVjdGVkQ29tbWFuZCAqY21kID0gbGZpcnN0KGxjKTsKKwkJY2hhciAgICAgICAgICAgICAq anNvbl9zdHJpbmc7CisKKwkJLyogUmV3cml0ZSBEREwgaGFzIGJlZW4gaGFuZGxlZCBpbiB0YWJs ZV9yZXdyaXRlIHRyaWdnZXIgKi8KKwkJaWYgKGNtZC0+ZC5hbHRlclRhYmxlLnJld3JpdGUpCisJ CQljb250aW51ZTsKKworCQlpZiAoY21kLT50eXBlID09IFNDVF9TaW1wbGUgJiYKKwkJCSFPaWRJ c1ZhbGlkKGNtZC0+ZC5zaW1wbGUuYWRkcmVzcy5vYmplY3RJZCkpCisJCQljb250aW51ZTsKKwor CQkvKiBEZXBhcnNlIHRoZSBEREwgY29tbWFuZCBhbmQgV0FMIGxvZyBpdCB0byBhbGxvdyBkZWNv ZGluZyBvZiB0aGUgc2FtZS4gKi8KKwkJanNvbl9zdHJpbmcgPSBkZXBhcnNlX3V0aWxpdHlfY29t bWFuZChjbWQpOworCisJCWlmIChqc29uX3N0cmluZyA9PSBOVUxMKQorCQkJY29udGludWU7CisK KwkJaWYgKGNtZC0+dHlwZSA9PSBTQ1RfQWx0ZXJUYWJsZSkKKwkJeworCQkJcmVsaWQgPSBjbWQt PmQuYWx0ZXJUYWJsZS5vYmplY3RJZDsKKwkJCXR5cGUgPSBEQ1RfQWx0ZXI7CisJCX0KKwkJZWxz ZQorCQl7CisJCQkvKiBPbmx5IFNDVF9TaW1wbGUgZm9yIG5vdyAqLworCQkJcmVsaWQgPSBjbWQt PmQuc2ltcGxlLmFkZHJlc3Mub2JqZWN0SWQ7CisJCQl0eXBlID0gRENUX0NyZWF0ZTsKKwkJfQor CisJCUxvZ0xvZ2ljYWxERExNZXNzYWdlKCJkZXBhcnNlIiwgcmVsaWQsIHR5cGUsIGpzb25fc3Ry aW5nLAorCQkJCQkJCSBzdHJsZW4oanNvbl9zdHJpbmcpICsgMSk7CisJfQorCisJc2xpc3RfZm9y ZWFjaChpdGVyLCAmKGN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+U1FMRHJvcExpc3QpKQorCXsK KwkJU1FMRHJvcE9iamVjdCAqb2JqOworCisJCW9iaiA9IHNsaXN0X2NvbnRhaW5lcihTUUxEcm9w T2JqZWN0LCBuZXh0LCBpdGVyLmN1cik7CisKKwkJaWYgKHN0cm5jbXAob2JqLT5vYmplY3R0eXBl LCAidGFibGUiLCA1KSA9PSAwKQorCQl7CisJCQljaGFyICAgICpjb21tYW5kOworCisJCQljb21t YW5kID0gZGVwYXJzZV9kcm9wX3RhYmxlKG9iai0+b2JqaWRlbnRpdHkpOworCisJCQlMb2dMb2dp Y2FsRERMTWVzc2FnZSgiZGVwYXJzZSIsIG9iai0+YWRkcmVzcy5vYmplY3RJZCwgRENUX0Ryb3BF bmQsCisJCQkJCQkJCSBjb21tYW5kLCBzdHJsZW4oY29tbWFuZCkgKyAxKTsKKwkJfQorCX0KKwor CXJldHVybiBQb2ludGVyR2V0RGF0dW0oTlVMTCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1Ymxp Y2F0aW9uY21kcy5jCmluZGV4IDhlNjQ1NzQuLjYzZmZjNjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3B1YmxpY2F0aW9uY21kcy5jCkBAIC0zNywxMCArMzcsMTIgQEAKICNpbmNsdWRlICJjb21tYW5k cy9wdWJsaWNhdGlvbmNtZHMuaCIKICNpbmNsdWRlICJmdW5jYXBpLmgiCiAjaW5jbHVkZSAibWlz Y2FkbWluLmgiCisjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAibm9kZXMv bm9kZUZ1bmNzLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2NsYXVzZS5oIgogI2luY2x1ZGUg InBhcnNlci9wYXJzZV9jb2xsYXRlLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3JlbGF0aW9u LmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5o IgogI2luY2x1ZGUgInV0aWxzL2FjbC5oIgogI2luY2x1ZGUgInV0aWxzL2FycmF5LmgiCkBAIC05 NSw2ICs5Nyw3IEBAIHBhcnNlX3B1YmxpY2F0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRl LAogCXB1YmFjdGlvbnMtPnB1YnVwZGF0ZSA9IHRydWU7CiAJcHViYWN0aW9ucy0+cHViZGVsZXRl ID0gdHJ1ZTsKIAlwdWJhY3Rpb25zLT5wdWJ0cnVuY2F0ZSA9IHRydWU7CisJcHViYWN0aW9ucy0+ cHViZGRsID0gZmFsc2U7CiAJKnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gZmFsc2U7CiAK IAkvKiBQYXJzZSBvcHRpb25zICovCkBAIC0xNDEsNiArMTQ0LDggQEAgcGFyc2VfcHVibGljYXRp b25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCXB1YmFjdGlvbnMtPnB1YmRlbGV0 ZSA9IHRydWU7CiAJCQkJZWxzZSBpZiAoc3RyY21wKHB1Ymxpc2hfb3B0LCAidHJ1bmNhdGUiKSA9 PSAwKQogCQkJCQlwdWJhY3Rpb25zLT5wdWJ0cnVuY2F0ZSA9IHRydWU7CisJCQkJZWxzZSBpZiAo c3RyY21wKHB1Ymxpc2hfb3B0LCAiZGRsIikgPT0gMCkKKwkJCQkJcHViYWN0aW9ucy0+cHViZGRs ID0gdHJ1ZTsKIAkJCQllbHNlCiAJCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkJKGVycmNvZGUo RVJSQ09ERV9TWU5UQVhfRVJST1IpLApAQCAtNzU2LDYgKzc2MSw4IEBAIENyZWF0ZVB1YmxpY2F0 aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQogewog CVJlbGF0aW9uCXJlbDsKIAlPYmplY3RBZGRyZXNzIG15c2VsZjsKKwlPYmplY3RBZGRyZXNzIHJl ZmVyZW5jZWRfc3RhcnQsIHJlZmVyZW5jZWRfZW5kLAorCQkJCSAgcmVmZXJlbmNlZF90YWJsZV9y ZXdyaXRlOwogCU9pZAkJCXB1Ym9pZDsKIAlib29sCQludWxsc1tOYXR0c19wZ19wdWJsaWNhdGlv bl07CiAJRGF0dW0JCXZhbHVlc1tOYXR0c19wZ19wdWJsaWNhdGlvbl07CkBAIC04MjAsNiArODI3 LDggQEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNh dGlvblN0bXQgKnN0bXQpCiAJCUJvb2xHZXREYXR1bShwdWJhY3Rpb25zLnB1YmRlbGV0ZSk7CiAJ dmFsdWVzW0FudW1fcGdfcHVibGljYXRpb25fcHVidHJ1bmNhdGUgLSAxXSA9CiAJCUJvb2xHZXRE YXR1bShwdWJhY3Rpb25zLnB1YnRydW5jYXRlKTsKKwl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlv bl9wdWJkZGwgLSAxXSA9CisJCUJvb2xHZXREYXR1bShwdWJhY3Rpb25zLnB1YmRkbCk7CiAJdmFs dWVzW0FudW1fcGdfcHVibGljYXRpb25fcHVidmlhcm9vdCAtIDFdID0KIAkJQm9vbEdldERhdHVt KHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKIApAQCAtODgyLDYgKzg5MSw5OCBAQCBDcmVh dGVQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAq c3RtdCkKIAkJfQogCX0KIAorCS8qCisJICogQ3JlYXRlIGFuIGV2ZW50IHRyaWdnZXIgdG8gYWxs b3cgbG9nZ2luZyBvZiBEREwgc3RhdGVtZW50cy4KKwkgKgorCSAqIFRPRE86IFdlIG5lZWQgdG8g ZmluZCBhIGJldHRlciBzeW50YXggdG8gYWxsb3cgcmVwbGljYXRpb24gb2YgRERMCisJICogc3Rh dGVtZW50cy4KKwkgKgorCSAqIFhYWDogVGhpcyBjb2RlIGlzIGp1c3QgdG8gc2hvdyB0aGUgcmVw bGljYXRpb24gb2YgQ1JFQVRFIFRBQkxFIHdvcmtzLgorCSAqIFdlIG5lZWQgdG8gZW5oYW5jZSB0 aGlzIG9uY2UgdGhlIGFwcHJvYWNoIGZvciBEREwgcmVwbGljYXRpb24gaXMKKwkgKiBmaW5hbGl6 ZWQuCisJICovCisJaWYgKHB1YmFjdGlvbnMucHViZGRsKQorCXsKKwkJQ3JlYXRlRXZlbnRUcmln U3RtdCAqZGRsX3RyaWdnX3N0YXJ0LCAqZGRsX3RyaWdnX2VuZCwKKwkJCQkJCQkqZGRsX3RyaWdn X3RhYmxlX3Jld3JpdGU7CisJCU5vZGUJCQkJKmVuZF9hcmcxID0gTlVMTDsKKwkJTm9kZQkJCQkq c3RhcnRfYXJnMSA9IE5VTEw7CisJCU5vZGUJCQkJKnRhYmxlX3Jld3JpdGVfYXJnMSA9IE5VTEw7 CisJCU5vZGUJCQkJKmFyZzIgPSBOVUxMOworCQlOb2RlCQkJCSphcmczID0gTlVMTDsKKwkJTGlz dAkJCQkqZW5kX3RhZ3MgPSBOSUw7CisJCUxpc3QJCQkJKnN0YXJ0X3RhZ3MgPSBOSUw7CisJCUxp c3QJCQkJKnRhYmxlX3Jld3JpdGVfdGFncyA9IE5JTDsKKwkJT2lkCQkJCQlldmVudF90cmlnX3N0 YXJ0X2lkLCBldmVudF90cmlnX2VuZF9pZCwKKwkJCQkJCQlldmVudF90cmlnX3RhYmxlX3Jld3Jp dGVfaWQ7CisJCWNoYXIJCQkJdHJpZ2dlcl9uYW1lX3N0YXJ0W05BTUVEQVRBTEVOXTsKKwkJY2hh cgkJCQl0cmlnZ2VyX25hbWVfZW5kW05BTUVEQVRBTEVOXTsKKwkJY2hhcgkJCQl0cmlnZ2VyX25h bWVfdGFibGVfcmV3cml0ZVtOQU1FREFUQUxFTl07CisKKwkJZGRsX3RyaWdnX2VuZCA9IG1ha2VO b2RlKENyZWF0ZUV2ZW50VHJpZ1N0bXQpOworCisJCXNucHJpbnRmKHRyaWdnZXJfbmFtZV9lbmQs IHNpemVvZih0cmlnZ2VyX25hbWVfZW5kKSwgInBnX2RlcGFyc2VfdHJpZ19lbmRfJXUiLAorCQkJ CSBwdWJvaWQpOworCQlkZGxfdHJpZ2dfZW5kLT50cmlnbmFtZSA9IHBzdHJkdXAodHJpZ2dlcl9u YW1lX2VuZCk7CisJCWRkbF90cmlnZ19lbmQtPmV2ZW50bmFtZSA9ICJkZGxfY29tbWFuZF9lbmQi OworCQlkZGxfdHJpZ2dfZW5kLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJwdWJsaWNhdGlv bl9kZGxfZGVwYXJzZSIpOworCisJCWVuZF9hcmcxID0gKE5vZGUgKikgbWFrZVN0cmluZyhwc3Ry ZHVwKEdldENvbW1hbmRUYWdOYW1lKENNRFRBR19EUk9QX1RBQkxFKSkpOworCQllbmRfdGFncyA9 IGxpc3RfbWFrZTEoZW5kX2FyZzEpOworCisJCS8qIHN1cHBvcnQgY3JlYXRlIHRhYmxlIG9ubHkg d2hlbiBwdWJsaWNhdGlvbiBpcyBmb3IgYWxsIHRhYmxlcyAqLworCQlpZiAoc3RtdC0+Zm9yX2Fs bF90YWJsZXMpCisJCXsKKwkJCWFyZzIgPSAoTm9kZSAqKSBtYWtlU3RyaW5nKHBzdHJkdXAoR2V0 Q29tbWFuZFRhZ05hbWUoQ01EVEFHX0NSRUFURV9UQUJMRSkpKTsKKwkJCWVuZF90YWdzID0gbGFw cGVuZChlbmRfdGFncywgYXJnMik7CisJCX0KKworCQlhcmczID0gKE5vZGUgKikgbWFrZVN0cmlu Zyhwc3RyZHVwKEdldENvbW1hbmRUYWdOYW1lKENNRFRBR19BTFRFUl9UQUJMRSkpKTsKKwkJZW5k X3RhZ3MgPSBsYXBwZW5kKGVuZF90YWdzLCBhcmczKTsKKworCQlkZGxfdHJpZ2dfZW5kLT53aGVu Y2xhdXNlID0gbGlzdF9tYWtlMShtYWtlRGVmRWxlbSgidGFnIiwgKE5vZGUgKikgZW5kX3RhZ3Ms IC0xKSk7CisJCWV2ZW50X3RyaWdfZW5kX2lkID0gQ3JlYXRlRXZlbnRUcmlnZ2VyKGRkbF90cmln Z19lbmQpOworCisJCWRkbF90cmlnZ19zdGFydCA9IG1ha2VOb2RlKENyZWF0ZUV2ZW50VHJpZ1N0 bXQpOworCisJCXNucHJpbnRmKHRyaWdnZXJfbmFtZV9zdGFydCwgc2l6ZW9mKHRyaWdnZXJfbmFt ZV9zdGFydCksICJwZ19kZXBhcnNlX3RyaWdfc3RhcnRfJXUiLAorCQkJCSBwdWJvaWQpOworCQlk ZGxfdHJpZ2dfc3RhcnQtPnRyaWduYW1lID0gcHN0cmR1cCh0cmlnZ2VyX25hbWVfc3RhcnQpOwor CQlkZGxfdHJpZ2dfc3RhcnQtPmV2ZW50bmFtZSA9ICJkZGxfY29tbWFuZF9zdGFydCI7CisJCWRk bF90cmlnZ19zdGFydC0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgicHVibGljYXRpb25fZGRs X2RlcGFyc2Vfc3RhcnQiKTsKKworCQlzdGFydF9hcmcxID0gKE5vZGUgKikgbWFrZVN0cmluZyhw c3RyZHVwKEdldENvbW1hbmRUYWdOYW1lKENNRFRBR19EUk9QX1RBQkxFKSkpOworCQlzdGFydF90 YWdzID0gbGlzdF9tYWtlMShzdGFydF9hcmcxKTsKKwkJZGRsX3RyaWdnX3N0YXJ0LT53aGVuY2xh dXNlID0gbGlzdF9tYWtlMShtYWtlRGVmRWxlbSgidGFnIiwgKE5vZGUgKikgc3RhcnRfdGFncywg LTEpKTsKKwkJZXZlbnRfdHJpZ19zdGFydF9pZCA9IENyZWF0ZUV2ZW50VHJpZ2dlcihkZGxfdHJp Z2dfc3RhcnQpOworCisJCWRkbF90cmlnZ190YWJsZV9yZXdyaXRlID0gbWFrZU5vZGUoQ3JlYXRl RXZlbnRUcmlnU3RtdCk7CisKKwkJc25wcmludGYodHJpZ2dlcl9uYW1lX3RhYmxlX3Jld3JpdGUs IHNpemVvZih0cmlnZ2VyX25hbWVfdGFibGVfcmV3cml0ZSksCisJCQkJICJwZ19kZXBhcnNlX3Ry aWdfdGFibGVfcmV3cml0ZV8ldSIsIHB1Ym9pZCk7CisJCWRkbF90cmlnZ190YWJsZV9yZXdyaXRl LT50cmlnbmFtZSA9IHBzdHJkdXAodHJpZ2dlcl9uYW1lX3RhYmxlX3Jld3JpdGUpOworCQlkZGxf dHJpZ2dfdGFibGVfcmV3cml0ZS0+ZXZlbnRuYW1lID0gInRhYmxlX3Jld3JpdGUiOworCQlkZGxf dHJpZ2dfdGFibGVfcmV3cml0ZS0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgicHVibGljYXRp b25fZGRsX2RlcGFyc2VfdGFibGVfcmV3cml0ZSIpOworCisJCXRhYmxlX3Jld3JpdGVfYXJnMSA9 IChOb2RlICopIG1ha2VTdHJpbmcocHN0cmR1cChHZXRDb21tYW5kVGFnTmFtZShDTURUQUdfQUxU RVJfVEFCTEUpKSk7CisJCXRhYmxlX3Jld3JpdGVfdGFncyA9IGxpc3RfbWFrZTEodGFibGVfcmV3 cml0ZV9hcmcxKTsKKwkJZGRsX3RyaWdnX3RhYmxlX3Jld3JpdGUtPndoZW5jbGF1c2UgPSBsaXN0 X21ha2UxKG1ha2VEZWZFbGVtKCJ0YWciLCAoTm9kZSAqKSB0YWJsZV9yZXdyaXRlX3RhZ3MsIC0x KSk7CisJCWV2ZW50X3RyaWdfdGFibGVfcmV3cml0ZV9pZCA9IENyZWF0ZUV2ZW50VHJpZ2dlcihk ZGxfdHJpZ2dfdGFibGVfcmV3cml0ZSk7CisKKwkJLyoKKwkJICogUmVnaXN0ZXIgdGhlIGV2ZW50 IHRyaWdnZXJzIGFzIGludGVybmFsbHkgZGVwZW5kZW50IG9uIHRoZQorCQkgKiBwdWJsaWNhdGlv bi4KKwkJICovCisJCU9iamVjdEFkZHJlc3NTZXQocmVmZXJlbmNlZF9lbmQsIEV2ZW50VHJpZ2dl clJlbGF0aW9uSWQsIGV2ZW50X3RyaWdfZW5kX2lkKTsKKwkJcmVjb3JkRGVwZW5kZW5jeU9uKCZy ZWZlcmVuY2VkX2VuZCwgJm15c2VsZiwgREVQRU5ERU5DWV9JTlRFUk5BTCk7CisKKwkJT2JqZWN0 QWRkcmVzc1NldChyZWZlcmVuY2VkX3N0YXJ0LCBFdmVudFRyaWdnZXJSZWxhdGlvbklkLCBldmVu dF90cmlnX3N0YXJ0X2lkKTsKKwkJcmVjb3JkRGVwZW5kZW5jeU9uKCZyZWZlcmVuY2VkX3N0YXJ0 LCAmbXlzZWxmLCBERVBFTkRFTkNZX0lOVEVSTkFMKTsKKworCQlPYmplY3RBZGRyZXNzU2V0KHJl ZmVyZW5jZWRfdGFibGVfcmV3cml0ZSwgRXZlbnRUcmlnZ2VyUmVsYXRpb25JZCwgZXZlbnRfdHJp Z190YWJsZV9yZXdyaXRlX2lkKTsKKwkJcmVjb3JkRGVwZW5kZW5jeU9uKCZyZWZlcmVuY2VkX3Rh YmxlX3Jld3JpdGUsICZteXNlbGYsIERFUEVOREVOQ1lfSU5URVJOQUwpOworCX0KKwogCXRhYmxl X2Nsb3NlKHJlbCwgUm93RXhjbHVzaXZlTG9jayk7CiAKIAlJbnZva2VPYmplY3RQb3N0Q3JlYXRl SG9vayhQdWJsaWNhdGlvblJlbGF0aW9uSWQsIHB1Ym9pZCwgMCk7CkBAIC0xMDIyLDYgKzExMjMs OSBAQCBBbHRlclB1YmxpY2F0aW9uT3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVi bGljYXRpb25TdG10ICpzdG10LAogCiAJCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YnRy dW5jYXRlIC0gMV0gPSBCb29sR2V0RGF0dW0ocHViYWN0aW9ucy5wdWJ0cnVuY2F0ZSk7CiAJCXJl cGxhY2VzW0FudW1fcGdfcHVibGljYXRpb25fcHVidHJ1bmNhdGUgLSAxXSA9IHRydWU7CisKKwkJ dmFsdWVzW0FudW1fcGdfcHVibGljYXRpb25fcHViZGRsIC0gMV0gPSBCb29sR2V0RGF0dW0ocHVi YWN0aW9ucy5wdWJkZGwpOworCQlyZXBsYWNlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YmRkbCAt IDFdID0gdHJ1ZTsKIAl9CiAKIAlpZiAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3RfZ2l2ZW4p CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IDJkZTBlYmEuLjc0MTA4YjkgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3RhYmxlY21kcy5jCkBAIC01MjE4LDcgKzUyMTgsNyBAQCBBVEV4ZWNDbWQoTGlzdCAq KndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLAogCSAqIFJlcG9ydCB0aGUgc3ViY29tbWFu ZCB0byBpbnRlcmVzdGVkIGV2ZW50IHRyaWdnZXJzLgogCSAqLwogCWlmIChjbWQpCi0JCUV2ZW50 VHJpZ2dlckNvbGxlY3RBbHRlclRhYmxlU3ViY21kKChOb2RlICopIGNtZCwgYWRkcmVzcyk7CisJ CUV2ZW50VHJpZ2dlckNvbGxlY3RBbHRlclRhYmxlU3ViY21kKChOb2RlICopIGNtZCwgYWRkcmVz cywgdGFiLT5yZXdyaXRlKTsKIAogCS8qCiAJICogQnVtcCB0aGUgY29tbWFuZCBjb3VudGVyIHRv IGVuc3VyZSB0aGUgbmV4dCBzdWJjb21tYW5kIGluIHRoZSBzZXF1ZW5jZQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUKaW5kZXggYzRlMmZkZS4uZjNlZWI2NyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZQorKysgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlCkBAIC0xNiw2ICsxNiw3IEBAIG92 ZXJyaWRlIENQUEZMQUdTIDo9IC1JJChzcmNkaXIpICQoQ1BQRkxBR1MpCiAKIE9CSlMgPSBcCiAJ ZGVjb2RlLm8gXAorCWRkbG1lc3NhZ2Uub1wKIAlsYXVuY2hlci5vIFwKIAlsb2dpY2FsLm8gXAog CWxvZ2ljYWxmdW5jcy5vIFwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvZGRsbWVzc2FnZS5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZGxt ZXNzYWdlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA5MzUyMwotLS0g L2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGRsbWVzc2Fn ZS5jCkBAIC0wLDAgKzEsODYgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGRkbG1lc3Nh Z2UuYworICoJICBMb2dpY2FsIERETCBtZXNzYWdlcy4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIw MjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogSURFTlRJRklD QVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZGxtZXNzYWdlLmMK KyAqCisgKiBOT1RFUworICoKKyAqIExvZ2ljYWwgRERMIG1lc3NhZ2VzIGFsbG93IFhMT0cgbG9n Z2luZyBvZiBEREwgY29tbWFuZCBzdHJpbmdzIHRoYXQKKyAqIGdldCBwYXNzZWQgdG8gdGhlIGxv Z2ljYWwgZGVjb2RpbmcgcGx1Z2luLiBJbiBub3JtYWwgWExPRyBwcm9jZXNzaW5nIHRoZXkKKyAq IGFyZSBzYW1lIGFzIE5PT1AuCisgKgorICogVW5saWtlIGdlbmVyaWMgbG9naWNhbCBtZXNzYWdl cywgdGhlc2UgRERMIG1lc3NhZ2VzIGhhdmUgb25seSB0cmFuc2FjdGlvbmFsCisgKiBtb2RlLk5v dGUgYnkgZGVmYXVsdCBERExzIGluIFBvc3RncmVTUUwgYXJlIHRyYW5zYWN0aW9uYWwuCisgKgor ICogVGhlc2UgbWVzc2FnZXMgYXJlIHBhcnQgb2YgY3VycmVudCB0cmFuc2FjdGlvbiBhbmQgd2ls bCBiZSBzZW50IHRvCisgKiBkZWNvZGluZyBwbHVnaW4gdXNpbmcgaW4gYSBzYW1lIHdheSBhcyBE TUwgb3BlcmF0aW9ucy4KKyAqCisgKiBFdmVyeSBtZXNzYWdlIGNhcnJpZXMgcHJlZml4IHRvIGF2 b2lkIGNvbmZsaWN0cyBiZXR3ZWVuIGRpZmZlcmVudCBkZWNvZGluZworICogcGx1Z2lucy4gVGhl IHBsdWdpbiBhdXRob3JzIG11c3QgdGFrZSBleHRyYSBjYXJlIHRvIHVzZSB1bmlxdWUgcHJlZml4 LAorICogZ29vZCBvcHRpb25zIHNlZW1zIHRvIGJlIGZvciBleGFtcGxlIHRvIHVzZSB0aGUgbmFt ZSBvZiB0aGUgZXh0ZW5zaW9uLgorICoKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNp bmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKKyNpbmNsdWRl ICJhY2Nlc3MveGxvZ2luc2VydC5oIgorI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNlLmgiCisj aW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgiCisjaW5j bHVkZSAicmVwbGljYXRpb24vbG9naWNhbC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2RkbG1l c3NhZ2UuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorCisvKgorICogV3JpdGUgbG9n aWNhbCBkZWNvZGluZyBEREwgbWVzc2FnZSBpbnRvIFhMb2cuCisgKi8KK1hMb2dSZWNQdHIKK0xv Z0xvZ2ljYWxERExNZXNzYWdlKGNvbnN0IGNoYXIgKnByZWZpeCwgT2lkIHJlbGlkLCBEZXBhcnNl ZENvbW1hbmRUeXBlIGNtZHR5cGUsCisJCQkJCSBjb25zdCBjaGFyICptZXNzYWdlLCBzaXplX3Qg c2l6ZSkKK3sKKwl4bF9sb2dpY2FsX2RkbF9tZXNzYWdlIHhscmVjOworCisJLyoKKwkgKiBFbnN1 cmUgd2UgaGF2ZSBhIHZhbGlkIHRyYW5zYWN0aW9uIGlkLgorCSAqLworCUFzc2VydChJc1RyYW5z YWN0aW9uU3RhdGUoKSk7CisJR2V0Q3VycmVudFRyYW5zYWN0aW9uSWQoKTsKKworCXhscmVjLmRi SWQgPSBNeURhdGFiYXNlSWQ7CisJLyogdHJhaWxpbmcgemVybyBpcyBjcml0aWNhbDsgc2VlIGxv Z2ljYWxkZGxtc2dfZGVzYyAqLworCXhscmVjLnByZWZpeF9zaXplID0gc3RybGVuKHByZWZpeCkg KyAxOworCXhscmVjLm1lc3NhZ2Vfc2l6ZSA9IHNpemU7CisJeGxyZWMucmVsaWQgPSByZWxpZDsK Kwl4bHJlYy5jbWR0eXBlID0gY21kdHlwZTsKKworCVhMb2dCZWdpbkluc2VydCgpOworCVhMb2dS ZWdpc3RlckRhdGEoKGNoYXIgKikgJnhscmVjLCBTaXplT2ZMb2dpY2FsRERMTWVzc2FnZSk7CisJ WExvZ1JlZ2lzdGVyRGF0YSh1bmNvbnN0aWZ5KGNoYXIgKiwgcHJlZml4KSwgeGxyZWMucHJlZml4 X3NpemUpOworCVhMb2dSZWdpc3RlckRhdGEodW5jb25zdGlmeShjaGFyICosIG1lc3NhZ2UpLCBz aXplKTsKKworCS8qIGFsbG93IG9yaWdpbiBmaWx0ZXJpbmcgKi8KKwlYTG9nU2V0UmVjb3JkRmxh Z3MoWExPR19JTkNMVURFX09SSUdJTik7CisKKwlyZXR1cm4gWExvZ0luc2VydChSTV9MT0dJQ0FM RERMTVNHX0lELCBYTE9HX0xPR0lDQUxfRERMX01FU1NBR0UpOworfQorCisvKgorICogUmVkbyBp cyBiYXNpY2FsbHkganVzdCBub29wIGZvciBsb2dpY2FsIGRlY29kaW5nIGRkbCBtZXNzYWdlcy4K KyAqLwordm9pZAorbG9naWNhbGRkbG1zZ19yZWRvKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQor eworCXVpbnQ4CQlpbmZvID0gWExvZ1JlY0dldEluZm8ocmVjb3JkKSAmIH5YTFJfSU5GT19NQVNL OworCisJaWYgKGluZm8gIT0gWExPR19MT0dJQ0FMX0RETF9NRVNTQUdFKQorCQllbG9nKFBBTklD LCAibG9naWNhbGRkbG1zZ19yZWRvOiB1bmtub3duIG9wIGNvZGUgJXUiLCBpbmZvKTsKKworCS8q IFRoaXMgaXMgb25seSBpbnRlcmVzdGluZyBmb3IgbG9naWNhbCBkZWNvZGluZywgc2VlIGRlY29k ZS5jLiAqLworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9k ZWNvZGUuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKaW5kZXgg YWEyNDI3Yi4uMjU1YjBlYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9kZWNvZGUuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29k ZS5jCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3hsb2d1dGlscy5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfY29udHJvbC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2RlY29k ZS5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2RkbG1lc3NhZ2UuaCIKICNpbmNsdWRlICJyZXBs aWNhdGlvbi9sb2dpY2FsLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbWVzc2FnZS5oIgogI2lu Y2x1ZGUgInJlcGxpY2F0aW9uL29yaWdpbi5oIgpAQCAtNjA0LDYgKzYwNSw0NiBAQCBsb2dpY2Fs bXNnX2RlY29kZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIg KmJ1ZikKIH0KIAogLyoKKyAqIEhhbmRsZSBybWdyIExPR0lDQUxERExNU0dfSUQgcmVjb3JkcyBm b3IgRGVjb2RlUmVjb3JkSW50b1Jlb3JkZXJCdWZmZXIoKS4KKyAqLwordm9pZAorbG9naWNhbGRk bG1zZ19kZWNvZGUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVy ICpidWYpCit7CisJU25hcEJ1aWxkICAqYnVpbGRlciA9IGN0eC0+c25hcHNob3RfYnVpbGRlcjsK KwlYTG9nUmVhZGVyU3RhdGUgKnIgPSBidWYtPnJlY29yZDsKKwlUcmFuc2FjdGlvbklkIHhpZCA9 IFhMb2dSZWNHZXRYaWQocik7CisJdWludDgJCWluZm8gPSBYTG9nUmVjR2V0SW5mbyhyKSAmIH5Y TFJfSU5GT19NQVNLOworCVJlcE9yaWdpbklkIG9yaWdpbl9pZCA9IFhMb2dSZWNHZXRPcmlnaW4o cik7CisJeGxfbG9naWNhbF9kZGxfbWVzc2FnZSAqbWVzc2FnZTsKKworCWlmIChpbmZvICE9IFhM T0dfTE9HSUNBTF9ERExfTUVTU0FHRSkKKwkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgUk1fTE9H SUNBTERETE1TR19JRCByZWNvcmQgdHlwZTogJXUiLCBpbmZvKTsKKworCVJlb3JkZXJCdWZmZXJQ cm9jZXNzWGlkKGN0eC0+cmVvcmRlciwgWExvZ1JlY0dldFhpZChyKSwgYnVmLT5vcmlncHRyKTsK KworCS8qCisJICogSWYgd2UgZG9uJ3QgaGF2ZSBzbmFwc2hvdCBvciB3ZSBhcmUganVzdCBmYXN0 LWZvcndhcmRpbmcsIHRoZXJlIGlzIG5vCisJICogcG9pbnQgaW4gZGVjb2RpbmcgZGRsIG1lc3Nh Z2VzLgorCSAqLworCWlmIChTbmFwQnVpbGRDdXJyZW50U3RhdGUoYnVpbGRlcikgPCBTTkFQQlVJ TERfRlVMTF9TTkFQU0hPVCB8fAorCQljdHgtPmZhc3RfZm9yd2FyZCkKKwkJcmV0dXJuOworCisJ bWVzc2FnZSA9ICh4bF9sb2dpY2FsX2RkbF9tZXNzYWdlICopIFhMb2dSZWNHZXREYXRhKHIpOwor CisJaWYgKG1lc3NhZ2UtPmRiSWQgIT0gY3R4LT5zbG90LT5kYXRhLmRhdGFiYXNlIHx8CisJCUZp bHRlckJ5T3JpZ2luKGN0eCwgb3JpZ2luX2lkKSkKKwkJcmV0dXJuOworCisJaWYgKFNuYXBCdWls ZFByb2Nlc3NDaGFuZ2UoYnVpbGRlciwgeGlkLCBidWYtPm9yaWdwdHIpKQorCQlSZW9yZGVyQnVm ZmVyUXVldWVERExNZXNzYWdlKGN0eC0+cmVvcmRlciwgeGlkLCBidWYtPmVuZHB0ciwKKwkJCQkJ CQkJCSBtZXNzYWdlLT5tZXNzYWdlLCAvKiBmaXJzdCBwYXJ0IG9mIG1lc3NhZ2UgaXMgcHJlZml4 ICovCisJCQkJCQkJCQkgbWVzc2FnZS0+bWVzc2FnZV9zaXplLAorCQkJCQkJCQkJIG1lc3NhZ2Ut Pm1lc3NhZ2UgKyBtZXNzYWdlLT5wcmVmaXhfc2l6ZSwKKwkJCQkJCQkJCSBtZXNzYWdlLT5yZWxp ZCwgbWVzc2FnZS0+Y21kdHlwZSk7Cit9CisKKy8qCiAgKiBDb25zb2xpZGF0ZWQgY29tbWl0IHJl Y29yZCBoYW5kbGluZyBiZXR3ZWVuIHRoZSBkaWZmZXJlbnQgZm9ybSBvZiBjb21taXQKICAqIHJl Y29yZHMuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9s b2dpY2FsLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYwppbmRl eCA2MjVhN2Y0Li45ODk2OWM3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2xvZ2ljYWwuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xv Z2ljYWwuYwpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgImZtZ3IuaCIKICNpbmNsdWRlICJt aXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9k ZGxtZXNzYWdlLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vZGVjb2RlLmgiCiAjaW5jbHVkZSAi cmVwbGljYXRpb24vbG9naWNhbC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL29yaWdpbi5oIgpA QCAtNzMsNiArNzQsMTAgQEAgc3RhdGljIHZvaWQgdHJ1bmNhdGVfY2Jfd3JhcHBlcihSZW9yZGVy QnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogc3RhdGljIHZvaWQgbWVzc2Fn ZV9jYl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4s CiAJCQkJCQkJICAgWExvZ1JlY1B0ciBtZXNzYWdlX2xzbiwgYm9vbCB0cmFuc2FjdGlvbmFsLAog CQkJCQkJCSAgIGNvbnN0IGNoYXIgKnByZWZpeCwgU2l6ZSBtZXNzYWdlX3NpemUsIGNvbnN0IGNo YXIgKm1lc3NhZ2UpOworc3RhdGljIHZvaWQgZGRsbWVzc2FnZV9jYl93cmFwcGVyKFJlb3JkZXJC dWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJCQkJCSAgWExvZ1JlY1B0 ciBtZXNzYWdlX2xzbiwgY29uc3QgY2hhciAqcHJlZml4LAorCQkJCQkJCQkgIE9pZCByZWxpZCwg RGVwYXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlLAorCQkJCQkJCQkgIFNpemUgbWVzc2FnZV9zaXpl LCBjb25zdCBjaGFyICptZXNzYWdlKTsKIAogLyogc3RyZWFtaW5nIGNhbGxiYWNrcyAqLwogc3Rh dGljIHZvaWQgc3RyZWFtX3N0YXJ0X2NiX3dyYXBwZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUsIFJl b3JkZXJCdWZmZXJUWE4gKnR4biwKQEAgLTkwLDYgKzk1LDExIEBAIHN0YXRpYyB2b2lkIHN0cmVh bV9jaGFuZ2VfY2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRY TiAqdHhuCiBzdGF0aWMgdm9pZCBzdHJlYW1fbWVzc2FnZV9jYl93cmFwcGVyKFJlb3JkZXJCdWZm ZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJCQkJCQkJCQkgIFhMb2dSZWNQdHIg bWVzc2FnZV9sc24sIGJvb2wgdHJhbnNhY3Rpb25hbCwKIAkJCQkJCQkJCSAgY29uc3QgY2hhciAq cHJlZml4LCBTaXplIG1lc3NhZ2Vfc2l6ZSwgY29uc3QgY2hhciAqbWVzc2FnZSk7CitzdGF0aWMg dm9pZCBzdHJlYW1fZGRsbWVzc2FnZV9jYl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBS ZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJCQkJCQkJIFhMb2dSZWNQdHIgbWVzc2FnZV9sc24s CisJCQkJCQkJCQkJIGNvbnN0IGNoYXIgKnByZWZpeCwKKwkJCQkJCQkJCQkgT2lkIHJlbGlkLCBE ZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5cGUsCisJCQkJCQkJCQkJIFNpemUgbWVzc2FnZV9zaXpl LCBjb25zdCBjaGFyICptZXNzYWdlKTsKIHN0YXRpYyB2b2lkIHN0cmVhbV90cnVuY2F0ZV9jYl93 cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJCQkJ CQkJCQkgICBpbnQgbnJlbGF0aW9ucywgUmVsYXRpb24gcmVsYXRpb25zW10sIFJlb3JkZXJCdWZm ZXJDaGFuZ2UgKmNoYW5nZSk7CiAKQEAgLTIxOCw2ICsyMjgsNyBAQCBTdGFydHVwRGVjb2RpbmdD b250ZXh0KExpc3QgKm91dHB1dF9wbHVnaW5fb3B0aW9ucywKIAljdHgtPnJlb3JkZXItPmFwcGx5 X3RydW5jYXRlID0gdHJ1bmNhdGVfY2Jfd3JhcHBlcjsKIAljdHgtPnJlb3JkZXItPmNvbW1pdCA9 IGNvbW1pdF9jYl93cmFwcGVyOwogCWN0eC0+cmVvcmRlci0+bWVzc2FnZSA9IG1lc3NhZ2VfY2Jf d3JhcHBlcjsKKwljdHgtPnJlb3JkZXItPmRkbG1lc3NhZ2UgPSBkZGxtZXNzYWdlX2NiX3dyYXBw ZXI7CiAKIAkvKgogCSAqIFRvIHN1cHBvcnQgc3RyZWFtaW5nLCB3ZSByZXF1aXJlIHN0YXJ0L3N0 b3AvYWJvcnQvY29tbWl0L2NoYW5nZQpAQCAtMjM0LDYgKzI0NSw3IEBAIFN0YXJ0dXBEZWNvZGlu Z0NvbnRleHQoTGlzdCAqb3V0cHV0X3BsdWdpbl9vcHRpb25zLAogCQkoY3R4LT5jYWxsYmFja3Mu c3RyZWFtX2NvbW1pdF9jYiAhPSBOVUxMKSB8fAogCQkoY3R4LT5jYWxsYmFja3Muc3RyZWFtX2No YW5nZV9jYiAhPSBOVUxMKSB8fAogCQkoY3R4LT5jYWxsYmFja3Muc3RyZWFtX21lc3NhZ2VfY2Ig IT0gTlVMTCkgfHwKKwkJKGN0eC0+Y2FsbGJhY2tzLnN0cmVhbV9kZGxtZXNzYWdlX2NiICE9IE5V TEwpIHx8CiAJCShjdHgtPmNhbGxiYWNrcy5zdHJlYW1fdHJ1bmNhdGVfY2IgIT0gTlVMTCk7CiAK IAkvKgpAQCAtMjUxLDYgKzI2Myw3IEBAIFN0YXJ0dXBEZWNvZGluZ0NvbnRleHQoTGlzdCAqb3V0 cHV0X3BsdWdpbl9vcHRpb25zLAogCWN0eC0+cmVvcmRlci0+c3RyZWFtX2NvbW1pdCA9IHN0cmVh bV9jb21taXRfY2Jfd3JhcHBlcjsKIAljdHgtPnJlb3JkZXItPnN0cmVhbV9jaGFuZ2UgPSBzdHJl YW1fY2hhbmdlX2NiX3dyYXBwZXI7CiAJY3R4LT5yZW9yZGVyLT5zdHJlYW1fbWVzc2FnZSA9IHN0 cmVhbV9tZXNzYWdlX2NiX3dyYXBwZXI7CisJY3R4LT5yZW9yZGVyLT5zdHJlYW1fZGRsbWVzc2Fn ZSA9IHN0cmVhbV9kZGxtZXNzYWdlX2NiX3dyYXBwZXI7CiAJY3R4LT5yZW9yZGVyLT5zdHJlYW1f dHJ1bmNhdGUgPSBzdHJlYW1fdHJ1bmNhdGVfY2Jfd3JhcHBlcjsKIAogCkBAIC0xMjIxLDYgKzEy MzQsNDQgQEAgbWVzc2FnZV9jYl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVy QnVmZmVyVFhOICp0eG4sCiB9CiAKIHN0YXRpYyB2b2lkCitkZGxtZXNzYWdlX2NiX3dyYXBwZXIo UmVvcmRlckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKKwkJCQkJICBYTG9n UmVjUHRyIG1lc3NhZ2VfbHNuLAorCQkJCQkgIGNvbnN0IGNoYXIgKnByZWZpeCwgT2lkIHJlbGlk LCBEZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5cGUsCisJCQkJCSAgU2l6ZSBtZXNzYWdlX3NpemUs CisJCQkJCSAgY29uc3QgY2hhciAqbWVzc2FnZSkKK3sKKwlMb2dpY2FsRGVjb2RpbmdDb250ZXh0 ICpjdHggPSBjYWNoZS0+cHJpdmF0ZV9kYXRhOworCUxvZ2ljYWxFcnJvckNhbGxiYWNrU3RhdGUg c3RhdGU7CisJRXJyb3JDb250ZXh0Q2FsbGJhY2sgZXJyY2FsbGJhY2s7CisKKwlBc3NlcnQoIWN0 eC0+ZmFzdF9mb3J3YXJkKTsKKworCWlmIChjdHgtPmNhbGxiYWNrcy5kZGxtZXNzYWdlX2NiID09 IE5VTEwpCisJCXJldHVybjsKKworCS8qIFB1c2ggY2FsbGJhY2sgKyBpbmZvIG9uIHRoZSBlcnJv ciBjb250ZXh0IHN0YWNrICovCisJc3RhdGUuY3R4ID0gY3R4OworCXN0YXRlLmNhbGxiYWNrX25h bWUgPSAiZGRsbWVzc2FnZSI7CisJc3RhdGUucmVwb3J0X2xvY2F0aW9uID0gbWVzc2FnZV9sc247 CisJZXJyY2FsbGJhY2suY2FsbGJhY2sgPSBvdXRwdXRfcGx1Z2luX2Vycm9yX2NhbGxiYWNrOwor CWVycmNhbGxiYWNrLmFyZyA9ICh2b2lkICopICZzdGF0ZTsKKwllcnJjYWxsYmFjay5wcmV2aW91 cyA9IGVycm9yX2NvbnRleHRfc3RhY2s7CisJZXJyb3JfY29udGV4dF9zdGFjayA9ICZlcnJjYWxs YmFjazsKKworCS8qIHNldCBvdXRwdXQgc3RhdGUgKi8KKwljdHgtPmFjY2VwdF93cml0ZXMgPSB0 cnVlOworCWN0eC0+d3JpdGVfeGlkID0gdHhuICE9IE5VTEwgPyB0eG4tPnhpZCA6IEludmFsaWRU cmFuc2FjdGlvbklkOworCWN0eC0+d3JpdGVfbG9jYXRpb24gPSBtZXNzYWdlX2xzbjsKKworCS8q IGRvIHRoZSBhY3R1YWwgd29yazogY2FsbCBjYWxsYmFjayAqLworCWN0eC0+Y2FsbGJhY2tzLmRk bG1lc3NhZ2VfY2IoY3R4LCB0eG4sIG1lc3NhZ2VfbHNuLCBwcmVmaXgsIHJlbGlkLCBjbWR0eXBl LAorCQkJCQkJCQkgbWVzc2FnZV9zaXplLCBtZXNzYWdlKTsKKworCS8qIFBvcCB0aGUgZXJyb3Ig Y29udGV4dCBzdGFjayAqLworCWVycm9yX2NvbnRleHRfc3RhY2sgPSBlcnJjYWxsYmFjay5wcmV2 aW91czsKK30KKworc3RhdGljIHZvaWQKIHN0cmVhbV9zdGFydF9jYl93cmFwcGVyKFJlb3JkZXJC dWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJCQkJCQlYTG9nUmVjUHRyIGZp cnN0X2xzbikKIHsKQEAgLTE1MzYsNiArMTU4Nyw0OCBAQCBzdHJlYW1fbWVzc2FnZV9jYl93cmFw cGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiB9CiAKIHN0 YXRpYyB2b2lkCitzdHJlYW1fZGRsbWVzc2FnZV9jYl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNh Y2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJCQkJIFhMb2dSZWNQdHIgbWVzc2FnZV9s c24sCisJCQkJCQkJIGNvbnN0IGNoYXIgKnByZWZpeCwgT2lkIHJlbGlkLCBEZXBhcnNlZENvbW1h bmRUeXBlIGNtZHR5cGUsCisJCQkJCQkJIFNpemUgbWVzc2FnZV9zaXplLAorCQkJCQkJCSBjb25z dCBjaGFyICptZXNzYWdlKQoreworCUxvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCA9IGNhY2hl LT5wcml2YXRlX2RhdGE7CisJTG9naWNhbEVycm9yQ2FsbGJhY2tTdGF0ZSBzdGF0ZTsKKwlFcnJv ckNvbnRleHRDYWxsYmFjayBlcnJjYWxsYmFjazsKKworCUFzc2VydCghY3R4LT5mYXN0X2Zvcndh cmQpOworCisJLyogV2UncmUgb25seSBzdXBwb3NlZCB0byBjYWxsIHRoaXMgd2hlbiBzdHJlYW1p bmcgaXMgc3VwcG9ydGVkLiAqLworCUFzc2VydChjdHgtPnN0cmVhbWluZyk7CisKKwkvKiB0aGlz IGNhbGxiYWNrIGlzIG9wdGlvbmFsICovCisJaWYgKGN0eC0+Y2FsbGJhY2tzLnN0cmVhbV9kZGxt ZXNzYWdlX2NiID09IE5VTEwpCisJCXJldHVybjsKKworCS8qIFB1c2ggY2FsbGJhY2sgKyBpbmZv IG9uIHRoZSBlcnJvciBjb250ZXh0IHN0YWNrICovCisJc3RhdGUuY3R4ID0gY3R4OworCXN0YXRl LmNhbGxiYWNrX25hbWUgPSAic3RyZWFtX2RkbG1lc3NhZ2UiOworCXN0YXRlLnJlcG9ydF9sb2Nh dGlvbiA9IG1lc3NhZ2VfbHNuOworCWVycmNhbGxiYWNrLmNhbGxiYWNrID0gb3V0cHV0X3BsdWdp bl9lcnJvcl9jYWxsYmFjazsKKwllcnJjYWxsYmFjay5hcmcgPSAodm9pZCAqKSAmc3RhdGU7CisJ ZXJyY2FsbGJhY2sucHJldmlvdXMgPSBlcnJvcl9jb250ZXh0X3N0YWNrOworCWVycm9yX2NvbnRl eHRfc3RhY2sgPSAmZXJyY2FsbGJhY2s7CisKKwkvKiBzZXQgb3V0cHV0IHN0YXRlICovCisJY3R4 LT5hY2NlcHRfd3JpdGVzID0gdHJ1ZTsKKwljdHgtPndyaXRlX3hpZCA9IHR4biAhPSBOVUxMID8g dHhuLT54aWQgOiBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwljdHgtPndyaXRlX2xvY2F0aW9uID0g bWVzc2FnZV9sc247CisKKwkvKiBkbyB0aGUgYWN0dWFsIHdvcms6IGNhbGwgY2FsbGJhY2sgKi8K KwljdHgtPmNhbGxiYWNrcy5zdHJlYW1fZGRsbWVzc2FnZV9jYihjdHgsIHR4biwgbWVzc2FnZV9s c24sIHByZWZpeCwgcmVsaWQsCisJCQkJCQkJCQkJY21kdHlwZSwgbWVzc2FnZV9zaXplLCBtZXNz YWdlKTsKKworCS8qIFBvcCB0aGUgZXJyb3IgY29udGV4dCBzdGFjayAqLworCWVycm9yX2NvbnRl eHRfc3RhY2sgPSBlcnJjYWxsYmFjay5wcmV2aW91czsKK30KKworc3RhdGljIHZvaWQKIHN0cmVh bV90cnVuY2F0ZV9jYl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVy VFhOICp0eG4sCiAJCQkJCQkgICBpbnQgbnJlbGF0aW9ucywgUmVsYXRpb24gcmVsYXRpb25zW10s CiAJCQkJCQkgICBSZW9yZGVyQnVmZmVyQ2hhbmdlICpjaGFuZ2UpCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3Byb3RvLmMKaW5kZXggZmY4NTEzZS4uZWFlYzAzMSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jCisrKyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwpAQCAtNjQwLDggKzY0MCw4IEBAIGxvZ2ljYWxy ZXBfcmVhZF90cnVuY2F0ZShTdHJpbmdJbmZvIGluLAogICovCiB2b2lkCiBsb2dpY2FscmVwX3dy aXRlX21lc3NhZ2UoU3RyaW5nSW5mbyBvdXQsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRy IGxzbiwKLQkJCQkJCSBib29sIHRyYW5zYWN0aW9uYWwsIGNvbnN0IGNoYXIgKnByZWZpeCwgU2l6 ZSBzeiwKLQkJCQkJCSBjb25zdCBjaGFyICptZXNzYWdlKQorCQkJCQkJIGJvb2wgdHJhbnNhY3Rp b25hbCwgY29uc3QgY2hhciAqcHJlZml4LAorCQkJCQkJIFNpemUgc3osIGNvbnN0IGNoYXIgKm1l c3NhZ2UpCiB7CiAJdWludDgJCWZsYWdzID0gMDsKIApAQCAtNjYzLDYgKzY2Myw1MiBAQCBsb2dp Y2FscmVwX3dyaXRlX21lc3NhZ2UoU3RyaW5nSW5mbyBvdXQsIFRyYW5zYWN0aW9uSWQgeGlkLCBY TG9nUmVjUHRyIGxzbiwKIH0KIAogLyoKKyAqIFJlYWQgRERMIE1FU1NBR0UgZnJvbSBzdHJlYW0K KyAqLworY2hhciAqCitsb2dpY2FscmVwX3JlYWRfZGRsbWVzc2FnZShTdHJpbmdJbmZvIGluLCBY TG9nUmVjUHRyICpsc24sCisJCQkJCQkgICBjb25zdCBjaGFyICoqcHJlZml4LAorCQkJCQkJICAg U2l6ZSAqc3opCit7CisJdWludDggZmxhZ3M7CisJY2hhciAqbXNnOworCisJLy9UT0RPIGRvdWJs ZSBjaGVjayB3aGVuIGRvIHdlIG5lZWQgdG8gZ2V0IFRyYW5zYWN0aW9uSWQuCisKKwlmbGFncyA9 IHBxX2dldG1zZ2ludChpbiwgMSk7CisJaWYgKGZsYWdzICE9IDApCisJCWVsb2coRVJST1IsICJ1 bnJlY29nbml6ZWQgZmxhZ3MgJXUgaW4gZGRsIG1lc3NhZ2UiLCBmbGFncyk7CisJKmxzbiA9IHBx X2dldG1zZ2ludDY0KGluKTsKKwkqcHJlZml4ID0gcHFfZ2V0bXNnc3RyaW5nKGluKTsKKwkqc3og PSBwcV9nZXRtc2dpbnQoaW4sIDQpOworCW1zZyA9IChjaGFyICopIHBxX2dldG1zZ2J5dGVzKGlu LCAqc3opOworCisJcmV0dXJuIG1zZzsKK30KKworLyoKKyAqIFdyaXRlIERETCBNRVNTQUdFIHRv IHN0cmVhbQorICovCit2b2lkCitsb2dpY2FscmVwX3dyaXRlX2RkbG1lc3NhZ2UoU3RyaW5nSW5m byBvdXQsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbiwKKwkJCQkJCQljb25zdCBj aGFyICpwcmVmaXgsIFNpemUgc3osIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCit7CisJdWludDgJCWZs YWdzID0gMDsKKworCXBxX3NlbmRieXRlKG91dCwgTE9HSUNBTF9SRVBfTVNHX0RETE1FU1NBR0Up OworCisJLyogdHJhbnNhY3Rpb24gSUQgKGlmIG5vdCB2YWxpZCwgd2UncmUgbm90IHN0cmVhbWlu ZykgKi8KKwlpZiAoVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSkKKwkJcHFfc2VuZGludDMyKG91 dCwgeGlkKTsKKworCXBxX3NlbmRpbnQ4KG91dCwgZmxhZ3MpOworCXBxX3NlbmRpbnQ2NChvdXQs IGxzbik7CisJcHFfc2VuZHN0cmluZyhvdXQsIHByZWZpeCk7CisJcHFfc2VuZGludDMyKG91dCwg c3opOworCXBxX3NlbmRieXRlcyhvdXQsIG1lc3NhZ2UsIHN6KTsKK30KKworLyoKICAqIFdyaXRl IHJlbGF0aW9uIGRlc2NyaXB0aW9uIHRvIHRoZSBvdXRwdXQgc3RyZWFtLgogICovCiB2b2lkCkBA IC0xMjE4LDYgKzEyNjQsOCBAQCBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShMb2dpY2FsUmVwTXNn VHlwZSBhY3Rpb24pCiAJCQlyZXR1cm4gIlRZUEUiOwogCQljYXNlIExPR0lDQUxfUkVQX01TR19N RVNTQUdFOgogCQkJcmV0dXJuICJNRVNTQUdFIjsKKwkJY2FzZSBMT0dJQ0FMX1JFUF9NU0dfRERM TUVTU0FHRToKKwkJCXJldHVybiAiRERMIjsKIAkJY2FzZSBMT0dJQ0FMX1JFUF9NU0dfQkVHSU5f UFJFUEFSRToKIAkJCXJldHVybiAiQkVHSU4gUFJFUEFSRSI7CiAJCWNhc2UgTE9HSUNBTF9SRVBf TVNHX1BSRVBBUkU6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3Jlb3JkZXJidWZmZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRl cmJ1ZmZlci5jCmluZGV4IDhkYTVmOTAuLjM0NmUxOWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCkBAIC05NCw2ICs5NCw3IEBACiAjaW5j bHVkZSAibGliL2JpbmFyeWhlYXAuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRl ICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9kZGxtZXNzYWdlLmgiCiAjaW5jbHVk ZSAicmVwbGljYXRpb24vbG9naWNhbC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Jlb3JkZXJi dWZmZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zbG90LmgiCkBAIC01MTIsNiArNTEzLDE0 IEBAIFJlb3JkZXJCdWZmZXJSZXR1cm5DaGFuZ2UoUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJC dWZmZXJDaGFuZ2UgKmNoYW5nZSwKIAkJCQlwZnJlZShjaGFuZ2UtPmRhdGEubXNnLm1lc3NhZ2Up OwogCQkJY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlID0gTlVMTDsKIAkJCWJyZWFrOworCQljYXNl IFJFT1JERVJfQlVGRkVSX0NIQU5HRV9ERExNRVNTQUdFOgorCQkJaWYgKGNoYW5nZS0+ZGF0YS5k ZGxtc2cucHJlZml4ICE9IE5VTEwpCisJCQkJcGZyZWUoY2hhbmdlLT5kYXRhLmRkbG1zZy5wcmVm aXgpOworCQkJY2hhbmdlLT5kYXRhLmRkbG1zZy5wcmVmaXggPSBOVUxMOworCQkJaWYgKGNoYW5n ZS0+ZGF0YS5kZGxtc2cubWVzc2FnZSAhPSBOVUxMKQorCQkJCXBmcmVlKGNoYW5nZS0+ZGF0YS5k ZGxtc2cubWVzc2FnZSk7CisJCQljaGFuZ2UtPmRhdGEuZGRsbXNnLm1lc3NhZ2UgPSBOVUxMOwor CQkJYnJlYWs7CiAJCWNhc2UgUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX0lOVkFMSURBVElPTjoKIAkJ CWlmIChjaGFuZ2UtPmRhdGEuaW52YWwuaW52YWxpZGF0aW9ucykKIAkJCQlwZnJlZShjaGFuZ2Ut PmRhdGEuaW52YWwuaW52YWxpZGF0aW9ucyk7CkBAIC04NjcsNiArODc2LDM2IEBAIFJlb3JkZXJC dWZmZXJRdWV1ZU1lc3NhZ2UoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLAog fQogCiAvKgorICogQSB0cmFuc2FjdGlvbmFsIERETCBtZXNzYWdlIGlzIHF1ZXVlZCB0byBiZSBw cm9jZXNzZWQgdXBvbiBjb21taXQuCisgKi8KK3ZvaWQKK1Jlb3JkZXJCdWZmZXJRdWV1ZURETE1l c3NhZ2UoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLAorCQkJCQkJCSBYTG9n UmVjUHRyIGxzbiwgY29uc3QgY2hhciAqcHJlZml4LAorCQkJCQkJCSBTaXplIG1lc3NhZ2Vfc2l6 ZSwgY29uc3QgY2hhciAqbWVzc2FnZSwKKwkJCQkJCQkgT2lkIHJlbGlkLCBEZXBhcnNlZENvbW1h bmRUeXBlIGNtZHR5cGUpCit7CisJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OworCVJlb3JkZXJC dWZmZXJDaGFuZ2UgKmNoYW5nZTsKKworCUFzc2VydCh4aWQgIT0gSW52YWxpZFRyYW5zYWN0aW9u SWQpOworCisJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhyYi0+Y29udGV4dCk7 CisKKwljaGFuZ2UgPSBSZW9yZGVyQnVmZmVyR2V0Q2hhbmdlKHJiKTsKKwljaGFuZ2UtPmFjdGlv biA9IFJFT1JERVJfQlVGRkVSX0NIQU5HRV9ERExNRVNTQUdFOworCWNoYW5nZS0+ZGF0YS5kZGxt c2cucHJlZml4ID0gcHN0cmR1cChwcmVmaXgpOworCWNoYW5nZS0+ZGF0YS5kZGxtc2cucmVsaWQg PSByZWxpZDsKKwljaGFuZ2UtPmRhdGEuZGRsbXNnLmNtZHR5cGUgPSBjbWR0eXBlOworCWNoYW5n ZS0+ZGF0YS5kZGxtc2cubWVzc2FnZV9zaXplID0gbWVzc2FnZV9zaXplOworCWNoYW5nZS0+ZGF0 YS5kZGxtc2cubWVzc2FnZSA9IHBhbGxvYyhtZXNzYWdlX3NpemUpOworCW1lbWNweShjaGFuZ2Ut PmRhdGEuZGRsbXNnLm1lc3NhZ2UsIG1lc3NhZ2UsIG1lc3NhZ2Vfc2l6ZSk7CisKKwlSZW9yZGVy QnVmZmVyUXVldWVDaGFuZ2UocmIsIHhpZCwgbHNuLCBjaGFuZ2UsIGZhbHNlKTsKKworCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKK30KKworLyoKICAqIEFzc2VydFRYTkxzbk9y ZGVyCiAgKgkJVmVyaWZ5IExTTiBvcmRlcmluZyBvZiB0cmFuc2FjdGlvbiBsaXN0cyBpbiB0aGUg cmVvcmRlcmJ1ZmZlcgogICoKQEAgLTE5NTgsNiArMTk5NywyOSBAQCBSZW9yZGVyQnVmZmVyQXBw bHlNZXNzYWdlKFJlb3JkZXJCdWZmZXIgKnJiLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiB9CiAK IC8qCisgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIFJlb3JkZXJCdWZmZXJQcm9jZXNzVFhOIGZvciBh cHBseWluZyB0aGUgRERMIG1lc3NhZ2UuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorUmVvcmRl ckJ1ZmZlckFwcGx5RERMTWVzc2FnZShSZW9yZGVyQnVmZmVyICpyYiwgUmVvcmRlckJ1ZmZlclRY TiAqdHhuLAorCQkJCQkJCSBSZW9yZGVyQnVmZmVyQ2hhbmdlICpjaGFuZ2UsIGJvb2wgc3RyZWFt aW5nKQoreworCWlmIChzdHJlYW1pbmcpCisJCXJiLT5zdHJlYW1fZGRsbWVzc2FnZShyYiwgdHhu LCBjaGFuZ2UtPmxzbiwKKwkJCQkJCQkgIGNoYW5nZS0+ZGF0YS5kZGxtc2cucHJlZml4LAorCQkJ CQkJCSAgY2hhbmdlLT5kYXRhLmRkbG1zZy5yZWxpZCwKKwkJCQkJCQkgIGNoYW5nZS0+ZGF0YS5k ZGxtc2cuY21kdHlwZSwKKwkJCQkJCQkgIGNoYW5nZS0+ZGF0YS5kZGxtc2cubWVzc2FnZV9zaXpl LAorCQkJCQkJCSAgY2hhbmdlLT5kYXRhLmRkbG1zZy5tZXNzYWdlKTsKKwllbHNlCisJCXJiLT5k ZGxtZXNzYWdlKHJiLCB0eG4sIGNoYW5nZS0+bHNuLAorCQkJCQkgICBjaGFuZ2UtPmRhdGEuZGRs bXNnLnByZWZpeCwKKwkJCQkJICAgY2hhbmdlLT5kYXRhLmRkbG1zZy5yZWxpZCwKKwkJCQkJICAg Y2hhbmdlLT5kYXRhLmRkbG1zZy5jbWR0eXBlLAorCQkJCQkgICBjaGFuZ2UtPmRhdGEuZGRsbXNn Lm1lc3NhZ2Vfc2l6ZSwKKwkJCQkJICAgY2hhbmdlLT5kYXRhLmRkbG1zZy5tZXNzYWdlKTsKK30K KworLyoKICAqIEZ1bmN0aW9uIHRvIHN0b3JlIHRoZSBjb21tYW5kIGlkIGFuZCBzbmFwc2hvdCBh dCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50CiAgKiBzdHJlYW0gc28gdGhhdCB3ZSBjYW4gcmV1c2Ug dGhlIHNhbWUgd2hpbGUgc2VuZGluZyB0aGUgbmV4dCBzdHJlYW0uCiAgKi8KQEAgLTIzMzUsNiAr MjM5NywxMCBAQCBSZW9yZGVyQnVmZmVyUHJvY2Vzc1RYTihSZW9yZGVyQnVmZmVyICpyYiwgUmVv cmRlckJ1ZmZlclRYTiAqdHhuLAogCQkJCQlSZW9yZGVyQnVmZmVyQXBwbHlNZXNzYWdlKHJiLCB0 eG4sIGNoYW5nZSwgc3RyZWFtaW5nKTsKIAkJCQkJYnJlYWs7CiAKKwkJCQljYXNlIFJFT1JERVJf QlVGRkVSX0NIQU5HRV9ERExNRVNTQUdFOgorCQkJCQlSZW9yZGVyQnVmZmVyQXBwbHlERExNZXNz YWdlKHJiLCB0eG4sIGNoYW5nZSwgc3RyZWFtaW5nKTsKKwkJCQkJYnJlYWs7CisKIAkJCQljYXNl IFJFT1JERVJfQlVGRkVSX0NIQU5HRV9JTlZBTElEQVRJT046CiAJCQkJCS8qIEV4ZWN1dGUgdGhl IGludmFsaWRhdGlvbiBtZXNzYWdlcyBsb2NhbGx5ICovCiAJCQkJCVJlb3JkZXJCdWZmZXJFeGVj dXRlSW52YWxpZGF0aW9ucyhjaGFuZ2UtPmRhdGEuaW52YWwubmludmFsaWRhdGlvbnMsCkBAIC0z NzEwLDYgKzM3NzYsNDAgQEAgUmVvcmRlckJ1ZmZlclNlcmlhbGl6ZUNoYW5nZShSZW9yZGVyQnVm ZmVyICpyYiwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCiAJCQkJYnJlYWs7CiAJCQl9CisJCWNh c2UgUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX0RETE1FU1NBR0U6CisJCQl7CisJCQkJY2hhcgkgICAq ZGF0YTsKKwkJCQlTaXplCQlwcmVmaXhfc2l6ZSA9IHN0cmxlbihjaGFuZ2UtPmRhdGEuZGRsbXNn LnByZWZpeCkgKyAxOworCisJCQkJc3ogKz0gcHJlZml4X3NpemUgKyBjaGFuZ2UtPmRhdGEuZGRs bXNnLm1lc3NhZ2Vfc2l6ZSArCisJCQkJCXNpemVvZihTaXplKSArIHNpemVvZihPaWQpICsgc2l6 ZW9mKGludCkgKyBzaXplb2YoU2l6ZSk7CisJCQkJUmVvcmRlckJ1ZmZlclNlcmlhbGl6ZVJlc2Vy dmUocmIsIHN6KTsKKworCQkJCWRhdGEgPSAoKGNoYXIgKikgcmItPm91dGJ1ZikgKyBzaXplb2Yo UmVvcmRlckJ1ZmZlckRpc2tDaGFuZ2UpOworCisJCQkJLyogbWlnaHQgaGF2ZSBiZWVuIHJlYWxs b2NhdGVkIGFib3ZlICovCisJCQkJb25kaXNrID0gKFJlb3JkZXJCdWZmZXJEaXNrQ2hhbmdlICop IHJiLT5vdXRidWY7CisKKwkJCQkvKiB3cml0ZSB0aGUgcHJlZml4LCByZWxpZCBhbmQgY21kdHlw ZSBpbmNsdWRpbmcgdGhlIHNpemUgKi8KKwkJCQltZW1jcHkoZGF0YSwgJnByZWZpeF9zaXplLCBz aXplb2YoU2l6ZSkpOworCQkJCWRhdGEgKz0gc2l6ZW9mKFNpemUpOworCQkJCW1lbWNweShkYXRh LCAmY2hhbmdlLT5kYXRhLmRkbG1zZy5yZWxpZCwgc2l6ZW9mKE9pZCkpOworCQkJCWRhdGEgKz0g c2l6ZW9mKE9pZCk7CisJCQkJbWVtY3B5KGRhdGEsICZjaGFuZ2UtPmRhdGEuZGRsbXNnLmNtZHR5 cGUsIHNpemVvZihpbnQpKTsKKwkJCQlkYXRhICs9IHNpemVvZihpbnQpOworCQkJCW1lbWNweShk YXRhLCBjaGFuZ2UtPmRhdGEuZGRsbXNnLnByZWZpeCwKKwkJCQkJICAgcHJlZml4X3NpemUpOwor CQkJCWRhdGEgKz0gcHJlZml4X3NpemU7CisKKwkJCQkvKiB3cml0ZSB0aGUgbWVzc2FnZSBpbmNs dWRpbmcgdGhlIHNpemUgKi8KKwkJCQltZW1jcHkoZGF0YSwgJmNoYW5nZS0+ZGF0YS5kZGxtc2cu bWVzc2FnZV9zaXplLCBzaXplb2YoU2l6ZSkpOworCQkJCWRhdGEgKz0gc2l6ZW9mKFNpemUpOwor CQkJCW1lbWNweShkYXRhLCBjaGFuZ2UtPmRhdGEuZGRsbXNnLm1lc3NhZ2UsCisJCQkJCSAgIGNo YW5nZS0+ZGF0YS5kZGxtc2cubWVzc2FnZV9zaXplKTsKKwkJCQlkYXRhICs9IGNoYW5nZS0+ZGF0 YS5kZGxtc2cubWVzc2FnZV9zaXplOworCisJCQkJYnJlYWs7CisJCQl9CiAJCWNhc2UgUkVPUkRF Ul9CVUZGRVJfQ0hBTkdFX0lOVkFMSURBVElPTjoKIAkJCXsKIAkJCQljaGFyCSAgICpkYXRhOwpA QCAtNDAyNCw2ICs0MTI0LDE1IEBAIFJlb3JkZXJCdWZmZXJDaGFuZ2VTaXplKFJlb3JkZXJCdWZm ZXJDaGFuZ2UgKmNoYW5nZSkKIAogCQkJCWJyZWFrOwogCQkJfQorCQljYXNlIFJFT1JERVJfQlVG RkVSX0NIQU5HRV9ERExNRVNTQUdFOgorCQkJeworCQkJCVNpemUJCXByZWZpeF9zaXplID0gc3Ry bGVuKGNoYW5nZS0+ZGF0YS5kZGxtc2cucHJlZml4KSArIDE7CisKKwkJCQlzeiArPSBwcmVmaXhf c2l6ZSArIGNoYW5nZS0+ZGF0YS5kZGxtc2cubWVzc2FnZV9zaXplICsKKwkJCQkJc2l6ZW9mKFNp emUpICsgc2l6ZW9mKFNpemUpICsgc2l6ZW9mKE9pZCkgKyBzaXplb2YoaW50KTsKKworCQkJCWJy ZWFrOworCQkJfQogCQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5HRV9JTlZBTElEQVRJT046CiAJ CQl7CiAJCQkJc3ogKz0gc2l6ZW9mKFNoYXJlZEludmFsaWRhdGlvbk1lc3NhZ2UpICoKQEAgLTQy ODIsOCArNDM5MSw3IEBAIFJlb3JkZXJCdWZmZXJSZXN0b3JlQ2hhbmdlKFJlb3JkZXJCdWZmZXIg KnJiLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJCQkJLyogcmVhZCBwcmVmaXggKi8KIAkJCQlt ZW1jcHkoJnByZWZpeF9zaXplLCBkYXRhLCBzaXplb2YoU2l6ZSkpOwogCQkJCWRhdGEgKz0gc2l6 ZW9mKFNpemUpOwotCQkJCWNoYW5nZS0+ZGF0YS5tc2cucHJlZml4ID0gTWVtb3J5Q29udGV4dEFs bG9jKHJiLT5jb250ZXh0LAotCQkJCQkJCQkJCQkJCQkJIHByZWZpeF9zaXplKTsKKwkJCQljaGFu Z2UtPmRhdGEubXNnLnByZWZpeCA9IE1lbW9yeUNvbnRleHRBbGxvYyhyYi0+Y29udGV4dCwgcHJl Zml4X3NpemUpOwogCQkJCW1lbWNweShjaGFuZ2UtPmRhdGEubXNnLnByZWZpeCwgZGF0YSwgcHJl Zml4X3NpemUpOwogCQkJCUFzc2VydChjaGFuZ2UtPmRhdGEubXNnLnByZWZpeFtwcmVmaXhfc2l6 ZSAtIDFdID09ICdcMCcpOwogCQkJCWRhdGEgKz0gcHJlZml4X3NpemU7CkBAIC00Mjk5LDYgKzQ0 MDcsMzMgQEAgUmVvcmRlckJ1ZmZlclJlc3RvcmVDaGFuZ2UoUmVvcmRlckJ1ZmZlciAqcmIsIFJl b3JkZXJCdWZmZXJUWE4gKnR4biwKIAogCQkJCWJyZWFrOwogCQkJfQorCQljYXNlIFJFT1JERVJf QlVGRkVSX0NIQU5HRV9ERExNRVNTQUdFOgorCQkJeworCQkJCVNpemUJCXByZWZpeF9zaXplOwor CisJCQkJLyogcmVhZCBwcmVmaXggKi8KKwkJCQltZW1jcHkoJnByZWZpeF9zaXplLCBkYXRhLCBz aXplb2YoU2l6ZSkpOworCQkJCWRhdGEgKz0gc2l6ZW9mKFNpemUpOworCQkJCW1lbWNweSgmY2hh bmdlLT5kYXRhLmRkbG1zZy5yZWxpZCwgZGF0YSwgc2l6ZW9mKE9pZCkpOworCQkJCWRhdGEgKz0g c2l6ZW9mKE9pZCk7CisJCQkJbWVtY3B5KCZjaGFuZ2UtPmRhdGEuZGRsbXNnLmNtZHR5cGUsIGRh dGEsIHNpemVvZihpbnQpKTsKKwkJCQlkYXRhICs9IHNpemVvZihpbnQpOworCQkJCWNoYW5nZS0+ ZGF0YS5kZGxtc2cucHJlZml4ID0gTWVtb3J5Q29udGV4dEFsbG9jKHJiLT5jb250ZXh0LCBwcmVm aXhfc2l6ZSk7CisJCQkJbWVtY3B5KGNoYW5nZS0+ZGF0YS5kZGxtc2cucHJlZml4LCBkYXRhLCBw cmVmaXhfc2l6ZSk7CisJCQkJQXNzZXJ0KGNoYW5nZS0+ZGF0YS5kZGxtc2cucHJlZml4W3ByZWZp eF9zaXplIC0gMV0gPT0gJ1wwJyk7CisJCQkJZGF0YSArPSBwcmVmaXhfc2l6ZTsKKworCQkJCS8q IHJlYWQgdGhlIG1lc3NhZ2UgKi8KKwkJCQltZW1jcHkoJmNoYW5nZS0+ZGF0YS5tc2cubWVzc2Fn ZV9zaXplLCBkYXRhLCBzaXplb2YoU2l6ZSkpOworCQkJCWRhdGEgKz0gc2l6ZW9mKFNpemUpOwor CQkJCWNoYW5nZS0+ZGF0YS5tc2cubWVzc2FnZSA9IE1lbW9yeUNvbnRleHRBbGxvYyhyYi0+Y29u dGV4dCwKKwkJCQkJCQkJCQkJCQkJCSAgY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlX3NpemUpOwor CQkJCW1lbWNweShjaGFuZ2UtPmRhdGEubXNnLm1lc3NhZ2UsIGRhdGEsCisJCQkJCSAgIGNoYW5n ZS0+ZGF0YS5tc2cubWVzc2FnZV9zaXplKTsKKwkJCQlkYXRhICs9IGNoYW5nZS0+ZGF0YS5tc2cu bWVzc2FnZV9zaXplOworCisJCQkJYnJlYWs7CisJCQl9CiAJCWNhc2UgUkVPUkRFUl9CVUZGRVJf Q0hBTkdFX0lOVkFMSURBVElPTjoKIAkJCXsKIAkJCQlTaXplCQlpbnZhbF9zaXplID0gc2l6ZW9m KFNoYXJlZEludmFsaWRhdGlvbk1lc3NhZ2UpICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3dvcmtlci5jCmluZGV4IGZjMjEwYTkuLjIzM2FiY2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMTU2LDYgKzE1Niw3IEBACiAjaW5jbHVkZSAibWlz Y2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAib3B0aW1p emVyL29wdGltaXplci5oIgorI2luY2x1ZGUgInBhcnNlci9hbmFseXplLmgiCiAjaW5jbHVkZSAi cGdzdGF0LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9iZ3dvcmtlci5oIgogI2luY2x1ZGUgInBv c3RtYXN0ZXIvaW50ZXJydXB0LmgiCkBAIC0xNzksNyArMTgwLDEwIEBACiAjaW5jbHVkZSAic3Rv cmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9wcm9jYXJyYXkuaCIKKyNpbmNsdWRlICJ0Y29wL2RkbF9kZXBhcnNlLmgiCisjaW5jbHVkZSAi dGNvcC9wcXVlcnkuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCisjaW5jbHVkZSAidGNv cC91dGlsaXR5LmgiCiAjaW5jbHVkZSAidXRpbHMvYWNsLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVp bHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9jYXRjYWNoZS5oIgpAQCAtMjQ0NSw2ICsyNDQ5LDIz MCBAQCBhcHBseV9oYW5kbGVfdHJ1bmNhdGUoU3RyaW5nSW5mbyBzKQogCWVuZF9yZXBsaWNhdGlv bl9zdGVwKCk7CiB9CiAKKy8qIFJlbW92ZSB0aGUgZGF0YSBwb3B1bGF0aW9uIGZyb20gdGhlIGNv bW1hbmQgKi8KK3N0YXRpYyB2b2lkCitwcmVwcm9jZXNzX2NyZWF0ZV90YWJsZShSYXdTdG10ICpj b21tYW5kKQoreworCUNvbW1hbmRUYWcJY29tbWFuZFRhZzsKKworCWNvbW1hbmRUYWcgPSBDcmVh dGVDb21tYW5kVGFnKChOb2RlICopY29tbWFuZCk7CisKKwlzd2l0Y2ggKGNvbW1hbmRUYWcpCisJ eworCQljYXNlIENNRFRBR19DUkVBVEVfVEFCTEVfQVM6CisJCWNhc2UgQ01EVEFHX1NFTEVDVF9J TlRPOgorCQkJeworCQkJCUNyZWF0ZVRhYmxlQXNTdG10ICpjYXN0bXQgPSAoQ3JlYXRlVGFibGVB c1N0bXQgKikgY29tbWFuZC0+c3RtdDsKKwkJCQlpZiAoY2FzdG10LT5vYmp0eXBlID09IE9CSkVD VF9UQUJMRSkKKwkJCQl7CisJCQkJCS8qCisJCQkJCSAqIEZvcmNlIHNraXBwaW5nIGRhdGEgcG9w dWxhdGlvbiB0byBhdm9pZCBkYXRhCisJCQkJCSAqIGluY29uc2lzdGVuY3kuIERhdGEgc2hvdWxk IGJlIHJlcGxpY2F0ZWQgZnJvbSB0aGUKKwkJCQkJICogcHVibGlzaGVyIGluc3RlYWQuCisJCQkJ CSAqLworCQkJCQljYXN0bXQtPmludG8tPnNraXBEYXRhID0gdHJ1ZTsKKwkJCQl9CisJCQl9CisJ CQlicmVhazsKKwkJY2FzZSBDTURUQUdfU0VMRUNUOgorCQkJeworCQkJCVNlbGVjdFN0bXQgKnNz dG10ID0gKFNlbGVjdFN0bXQgKikgY29tbWFuZC0+c3RtdDsKKworCQkJCWlmIChzc3RtdC0+aW50 b0NsYXVzZSAhPSBOVUxMKQorCQkJCXsKKwkJCQkJLyoKKwkJCQkJICogRm9yY2Ugc2tpcHBpbmcg ZGF0YSBwb3B1bGF0aW9uIHRvIGF2b2lkIGRhdGEKKwkJCQkJICogaW5jb25zaXN0ZW5jeS4gRGF0 YSBzaG91bGQgYmUgcmVwbGljYXRlZCBmcm9tIHRoZQorCQkJCQkgKiBwdWJsaXNoZXIgaW5zdGVh ZC4KKwkJCQkJICovCisJCQkJCXNzdG10LT5pbnRvQ2xhdXNlLT5za2lwRGF0YSA9IHRydWU7CisJ CQkJfQorCQkJfQorCQkJYnJlYWs7CisJZGVmYXVsdDoKKwkJYnJlYWs7CisJfQorfQorCisvKgor ICogSGFuZGxlIENSRUFURSBUQUJMRSBjb21tYW5kCisgKgorICogQ2FsbCBBZGRTdWJzY3JpcHRp b25SZWxTdGF0ZSBmb3IgQ1JFQVRFIFRBQkVMIGNvbW1hbmQgdG8gc2V0IHRoZSByZWxzdGF0ZSB0 bworICogU1VCUkVMX1NUQVRFX1JFQURZIHNvIERNTCBjaGFuZ2VzIG9uIHRoaXMgbmV3IHRhYmxl IGNhbiBiZSByZXBsaWNhdGVkIHdpdGhvdXQKKyAqIGhhdmluZyB0byBtYW51YWxseSBydW4gImFs dGVyIHN1YnNjcmlwdGlvbiAuLi4gcmVmcmVzaCBwdWJsaWNhdGlvbiIKKyAqLworc3RhdGljIHZv aWQKK2hhbmRsZV9jcmVhdGVfdGFibGUoUmF3U3RtdCAqY29tbWFuZCkKK3sKKwlDb21tYW5kVGFn CWNvbW1hbmRUYWc7CisJUmFuZ2VWYXIJICpydiA9IE5VTEw7CisJT2lkCQkJcmVsaWQ7CisJT2lk CQkJcmVsbmFtZXNwYWNlID0gSW52YWxpZE9pZDsKKwljaGFyIAkJICpzY2hlbWFuYW1lID0gTlVM TDsKKwljaGFyCQkgKnJlbG5hbWUgPSBOVUxMOworCisJY29tbWFuZFRhZyA9IENyZWF0ZUNvbW1h bmRUYWcoKE5vZGUgKikgY29tbWFuZCk7CisKKwlzd2l0Y2ggKGNvbW1hbmRUYWcpCisJeworCQlj YXNlIENNRFRBR19DUkVBVEVfVEFCTEU6CisJCQl7CisJCQkJQ3JlYXRlU3RtdCAqY3N0bXQgPSAo Q3JlYXRlU3RtdCAqKSBjb21tYW5kLT5zdG10OworCQkJCXJ2ID0gY3N0bXQtPnJlbGF0aW9uOwor CQkJfQorCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlicmVhazsKKwl9CisKKwlpZiAoIXJ2KQor CQlyZXR1cm47CisKKwlzY2hlbWFuYW1lID0gcnYtPnNjaGVtYW5hbWU7CisJcmVsbmFtZSA9IHJ2 LT5yZWxuYW1lOworCisJaWYgKHNjaGVtYW5hbWUgIT0gTlVMTCkKKwkJcmVsbmFtZXNwYWNlID0g Z2V0X25hbWVzcGFjZV9vaWQoc2NoZW1hbmFtZSwgZmFsc2UpOworCisJaWYgKHJlbG5hbWVzcGFj ZSAhPSBJbnZhbGlkT2lkKQorCQlyZWxpZCA9IGdldF9yZWxuYW1lX3JlbGlkKHJlbG5hbWUsIHJl bG5hbWVzcGFjZSk7CisJZWxzZQorCQlyZWxpZCA9IFJlbG5hbWVHZXRSZWxpZChyZWxuYW1lKTsK KworCWlmIChyZWxpZCAhPSBJbnZhbGlkT2lkKQorCXsKKwkJQWRkU3Vic2NyaXB0aW9uUmVsU3Rh dGUoTXlTdWJzY3JpcHRpb24tPm9pZCwgcmVsaWQsCisJCQkJCQkJCVNVQlJFTF9TVEFURV9SRUFE WSwKKwkJCQkJCQkJSW52YWxpZFhMb2dSZWNQdHIpOworCQllcmVwb3J0KERFQlVHMSwKKwkJCQko ZXJybXNnX2ludGVybmFsKCJ0YWJsZSBcIiVzXCIgYWRkZWQgdG8gc3Vic2NyaXB0aW9uIFwiJXNc IiIsCisJCQkJCQkJCSByZWxuYW1lLCBNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKKwl9Cit9CisK K3N0YXRpYyB2b2lkCithcHBseV9oYW5kbGVfZGRsKFN0cmluZ0luZm8gcykKK3sKKwlYTG9nUmVj UHRyIGxzbjsKKwljb25zdCBjaGFyICpwcmVmaXggPSBOVUxMOworCWNoYXIgKm1lc3NhZ2UgPSBO VUxMOworCWNoYXIJICAgKmRkbF9jb21tYW5kOworCVNpemUJCXN6OworCUxpc3QJICAgKnBhcnNl dHJlZV9saXN0OworCUxpc3RDZWxsICAgKnBhcnNldHJlZV9pdGVtOworCURlc3RSZWNlaXZlciAq cmVjZWl2ZXI7CisJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OworCWNvbnN0IGNoYXIgKnNhdmVf ZGVidWdfcXVlcnlfc3RyaW5nID0gZGVidWdfcXVlcnlfc3RyaW5nOworCisJbWVzc2FnZSA9IGxv Z2ljYWxyZXBfcmVhZF9kZGxtZXNzYWdlKHMsICZsc24sICZwcmVmaXgsICZzeik7CisKKwkvKiBN YWtlIHN1cmUgd2UgYXJlIGluIGEgdHJhbnNhY3Rpb24gY29tbWFuZCAqLworCWJlZ2luX3JlcGxp Y2F0aW9uX3N0ZXAoKTsKKworCWRkbF9jb21tYW5kID0gZGRsX2RlcGFyc2VfanNvbl90b19zdHJp bmcobWVzc2FnZSk7CisJZGVidWdfcXVlcnlfc3RyaW5nID0gZGRsX2NvbW1hbmQ7CisKKwkvKiBE ZXN0Tm9uZSBmb3IgbG9naWNhbCByZXBsaWNhdGlvbiAqLworCXJlY2VpdmVyID0gQ3JlYXRlRGVz dFJlY2VpdmVyKERlc3ROb25lKTsKKwlwYXJzZXRyZWVfbGlzdCA9IHBnX3BhcnNlX3F1ZXJ5KGRk bF9jb21tYW5kKTsKKworCWZvcmVhY2gocGFyc2V0cmVlX2l0ZW0sIHBhcnNldHJlZV9saXN0KQor CXsKKwkJTGlzdAkgICAqcGxhbnRyZWVfbGlzdDsKKwkJTGlzdAkgICAqcXVlcnl0cmVlX2xpc3Q7 CisJCVJhd1N0bXQJICAgKmNvbW1hbmQgPSAoUmF3U3RtdCAqKSBsZmlyc3QocGFyc2V0cmVlX2l0 ZW0pOworCQlDb21tYW5kVGFnCWNvbW1hbmRUYWc7CisJCU1lbW9yeUNvbnRleHQgcGVyX3BhcnNl dHJlZV9jb250ZXh0ID0gTlVMTDsKKwkJUG9ydGFsCQlwb3J0YWw7CisJCWJvb2wJCSBzbmFwc2hv dF9zZXQgPSBmYWxzZTsKKworCQljb21tYW5kVGFnID0gQ3JlYXRlQ29tbWFuZFRhZygoTm9kZSAq KSBjb21tYW5kKTsKKworCQkvKiBJZiB3ZSBnb3QgYSBjYW5jZWwgc2lnbmFsIGluIHBhcnNpbmcg b3IgcHJpb3IgY29tbWFuZCwgcXVpdCAqLworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJ CS8qIFJlbW92ZSBkYXRhIHBvcHVsYXRpb24gZnJvbSB0aGUgY29tbWFuZCAqLworCQlwcmVwcm9j ZXNzX2NyZWF0ZV90YWJsZShjb21tYW5kKTsKKworCQkvKgorCQkgKiBTZXQgdXAgYSBzbmFwc2hv dCBpZiBwYXJzZSBhbmFseXNpcy9wbGFubmluZyB3aWxsIG5lZWQgb25lLgorCQkgKi8KKwkJaWYg KGFuYWx5emVfcmVxdWlyZXNfc25hcHNob3QoY29tbWFuZCkpCisJCXsKKwkJCVB1c2hBY3RpdmVT bmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQkJc25hcHNob3Rfc2V0ID0gdHJ1 ZTsKKwkJfQorCisJCS8qCisJCSAqIFdlIGRvIHRoZSB3b3JrIGZvciBlYWNoIHBhcnNldHJlZSBp biBhIHNob3J0LWxpdmVkIGNvbnRleHQsIHRvCisJCSAqIGxpbWl0IHRoZSBtZW1vcnkgdXNlZCB3 aGVuIHRoZXJlIGFyZSBtYW55IGNvbW1hbmRzIGluIHRoZSBzdHJpbmcuCisJCSAqLworCQlwZXJf cGFyc2V0cmVlX2NvbnRleHQgPQorCQkJQWxsb2NTZXRDb250ZXh0Q3JlYXRlKEN1cnJlbnRNZW1v cnlDb250ZXh0LAorCQkJCQkJCQkgICJleGVjdXRlX3NxbF9zdHJpbmcgcGVyLXN0YXRlbWVudCBj b250ZXh0IiwKKwkJCQkJCQkJICBBTExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKKwkJb2xkY29udGV4 dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhwZXJfcGFyc2V0cmVlX2NvbnRleHQpOworCisJCXF1 ZXJ5dHJlZV9saXN0ID0gcGdfYW5hbHl6ZV9hbmRfcmV3cml0ZV9maXhlZHBhcmFtcyhjb21tYW5k LAorCQkJCQkJCQkJCQkJCQkJZGRsX2NvbW1hbmQsCisJCQkJCQkJCQkJCQkJCQlOVUxMLCAwLCBO VUxMKTsKKworCQlwbGFudHJlZV9saXN0ID0gcGdfcGxhbl9xdWVyaWVzKHF1ZXJ5dHJlZV9saXN0 LCBkZGxfY29tbWFuZCwgMCwgTlVMTCk7CisKKwkJLyogRG9uZSB3aXRoIHRoZSBzbmFwc2hvdCB1 c2VkIGZvciBwYXJzaW5nL3BsYW5uaW5nICovCisJCWlmIChzbmFwc2hvdF9zZXQpCisJCQlQb3BB Y3RpdmVTbmFwc2hvdCgpOworCisJCXBvcnRhbCA9IENyZWF0ZVBvcnRhbCgibG9naWNhbCByZXBs aWNhdGlvbiIsIHRydWUsIHRydWUpOworCisJCS8qCisJCSAqIFdlIGRvbid0IGhhdmUgdG8gY29w eSBhbnl0aGluZyBpbnRvIHRoZSBwb3J0YWwsIGJlY2F1c2UgZXZlcnl0aGluZworCQkgKiB3ZSBh cmUgcGFzc2luZyBoZXJlIGlzIGluIEFwcGx5TWVzc2FnZUNvbnRleHQgb3IgdGhlCisJCSAqIHBl cl9wYXJzZXRyZWVfY29udGV4dCwgYW5kIHNvIHdpbGwgb3V0bGl2ZSB0aGUgcG9ydGFsIGFueXdh eS4KKwkJICovCisJCVBvcnRhbERlZmluZVF1ZXJ5KHBvcnRhbCwKKwkJCQkJCSAgTlVMTCwKKwkJ CQkJCSAgZGRsX2NvbW1hbmQsCisJCQkJCQkgIGNvbW1hbmRUYWcsCisJCQkJCQkgIHBsYW50cmVl X2xpc3QsCisJCQkJCQkgIE5VTEwpOworCisJCS8qCisJCSAqIFN0YXJ0IHRoZSBwb3J0YWwuICBO byBwYXJhbWV0ZXJzIGhlcmUuCisJCSAqLworCQlQb3J0YWxTdGFydChwb3J0YWwsIE5VTEwsIDAs IEludmFsaWRTbmFwc2hvdCk7CisKKwkJLyoKKwkJICogU3dpdGNoIGJhY2sgdG8gdHJhbnNhY3Rp b24gY29udGV4dCBmb3IgZXhlY3V0aW9uLgorCQkgKi8KKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRv KG9sZGNvbnRleHQpOworCisJCSh2b2lkKSBQb3J0YWxSdW4ocG9ydGFsLAorCQkJCQkJIEZFVENI X0FMTCwKKwkJCQkJCSB0cnVlLAorCQkJCQkJIHRydWUsCisJCQkJCQkgcmVjZWl2ZXIsCisJCQkJ CQkgcmVjZWl2ZXIsCisJCQkJCQkgTlVMTCk7CisKKwkJUG9ydGFsRHJvcChwb3J0YWwsIGZhbHNl KTsKKworCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOworCisJCS8qCisJCSAqIFRhYmxlIGNy ZWF0ZWQgYnkgRERMIHJlcGxpY2F0aW9uIChkYXRhYmFzZSBsZXZlbCkgaXMgYXV0b21hdGljYWxs eQorCQkgKiBhZGRlZCB0byB0aGUgc3Vic2NyaXB0aW9uIGhlcmUuCisJCSAqLworCQloYW5kbGVf Y3JlYXRlX3RhYmxlKGNvbW1hbmQpOworCisJCS8qIE5vdyB3ZSBtYXkgZHJvcCB0aGUgcGVyLXBh cnNldHJlZSBjb250ZXh0LCBpZiBvbmUgd2FzIGNyZWF0ZWQuICovCisJCU1lbW9yeUNvbnRleHRE ZWxldGUocGVyX3BhcnNldHJlZV9jb250ZXh0KTsKKwl9CisKKwlkZWJ1Z19xdWVyeV9zdHJpbmcg PSBzYXZlX2RlYnVnX3F1ZXJ5X3N0cmluZzsKKwllbmRfcmVwbGljYXRpb25fc3RlcCgpOworfQor CiAKIC8qCiAgKiBMb2dpY2FsIHJlcGxpY2F0aW9uIHByb3RvY29sIG1lc3NhZ2UgZGlzcGF0Y2hl ci4KQEAgLTI1MTAsNiArMjczOCwxMCBAQCBhcHBseV9kaXNwYXRjaChTdHJpbmdJbmZvIHMpCiAJ CQkgKi8KIAkJCWJyZWFrOwogCisJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX0RETE1FU1NBR0U6CisJ CQlhcHBseV9oYW5kbGVfZGRsKHMpOworCQkJYnJlYWs7CisKIAkJY2FzZSBMT0dJQ0FMX1JFUF9N U0dfU1RSRUFNX1NUQVJUOgogCQkJYXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFydChzKTsKIAkJCWJy ZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRw dXQuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXgg NDJjMDZhZi4uOGIyNjQ4YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdv dXRwdXQvcGdvdXRwdXQuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9w Z291dHB1dC5jCkBAIC01NCw2ICs1NCwxMCBAQCBzdGF0aWMgdm9pZCBwZ291dHB1dF9tZXNzYWdl KExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKIAkJCQkJCQkgUmVvcmRlckJ1ZmZlclRYTiAq dHhuLCBYTG9nUmVjUHRyIG1lc3NhZ2VfbHNuLAogCQkJCQkJCSBib29sIHRyYW5zYWN0aW9uYWws IGNvbnN0IGNoYXIgKnByZWZpeCwKIAkJCQkJCQkgU2l6ZSBzeiwgY29uc3QgY2hhciAqbWVzc2Fn ZSk7CitzdGF0aWMgdm9pZCBwZ291dHB1dF9kZGxtZXNzYWdlKExvZ2ljYWxEZWNvZGluZ0NvbnRl eHQgKmN0eCwKKwkJCQkJCQkJUmVvcmRlckJ1ZmZlclRYTiAqdHhuLCBYTG9nUmVjUHRyIG1lc3Nh Z2VfbHNuLAorCQkJCQkJCQljb25zdCBjaGFyICpwcmVmaXgsIE9pZCByZWxpZCwgRGVwYXJzZWRD b21tYW5kVHlwZSBjbWR0eXBlLAorCQkJCQkJCQlTaXplIHN6LCBjb25zdCBjaGFyICptZXNzYWdl KTsKIHN0YXRpYyBib29sIHBnb3V0cHV0X29yaWdpbl9maWx0ZXIoTG9naWNhbERlY29kaW5nQ29u dGV4dCAqY3R4LAogCQkJCQkJCQkgICBSZXBPcmlnaW5JZCBvcmlnaW5faWQpOwogc3RhdGljIHZv aWQgcGdvdXRwdXRfYmVnaW5fcHJlcGFyZV90eG4oTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4 LApAQCAtMjU2LDYgKzI2MCw3IEBAIF9QR19vdXRwdXRfcGx1Z2luX2luaXQoT3V0cHV0UGx1Z2lu Q2FsbGJhY2tzICpjYikKIAljYi0+Y2hhbmdlX2NiID0gcGdvdXRwdXRfY2hhbmdlOwogCWNiLT50 cnVuY2F0ZV9jYiA9IHBnb3V0cHV0X3RydW5jYXRlOwogCWNiLT5tZXNzYWdlX2NiID0gcGdvdXRw dXRfbWVzc2FnZTsKKwljYi0+ZGRsbWVzc2FnZV9jYiA9IHBnb3V0cHV0X2RkbG1lc3NhZ2U7CiAJ Y2ItPmNvbW1pdF9jYiA9IHBnb3V0cHV0X2NvbW1pdF90eG47CiAKIAljYi0+YmVnaW5fcHJlcGFy ZV9jYiA9IHBnb3V0cHV0X2JlZ2luX3ByZXBhcmVfdHhuOwpAQCAtMjcyLDYgKzI3Nyw3IEBAIF9Q R19vdXRwdXRfcGx1Z2luX2luaXQoT3V0cHV0UGx1Z2luQ2FsbGJhY2tzICpjYikKIAljYi0+c3Ry ZWFtX2NvbW1pdF9jYiA9IHBnb3V0cHV0X3N0cmVhbV9jb21taXQ7CiAJY2ItPnN0cmVhbV9jaGFu Z2VfY2IgPSBwZ291dHB1dF9jaGFuZ2U7CiAJY2ItPnN0cmVhbV9tZXNzYWdlX2NiID0gcGdvdXRw dXRfbWVzc2FnZTsKKwljYi0+c3RyZWFtX2RkbG1lc3NhZ2VfY2IgPSBwZ291dHB1dF9kZGxtZXNz YWdlOwogCWNiLT5zdHJlYW1fdHJ1bmNhdGVfY2IgPSBwZ291dHB1dF90cnVuY2F0ZTsKIAkvKiB0 cmFuc2FjdGlvbiBzdHJlYW1pbmcgLSB0d28tcGhhc2UgY29tbWl0ICovCiAJY2ItPnN0cmVhbV9w cmVwYXJlX2NiID0gcGdvdXRwdXRfc3RyZWFtX3ByZXBhcmVfdHhuOwpAQCAtNDA3LDYgKzQxMyw3 IEBAIHBnb3V0cHV0X3N0YXJ0dXAoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBPdXRwdXRQ bHVnaW5PcHRpb25zICpvcHQsCiAKIAkvKiBUaGlzIHBsdWdpbiB1c2VzIGJpbmFyeSBwcm90b2Nv bC4gKi8KIAlvcHQtPm91dHB1dF90eXBlID0gT1VUUFVUX1BMVUdJTl9CSU5BUllfT1VUUFVUOwor CW9wdC0+cmVjZWl2ZV9yZXdyaXRlcyA9IHRydWU7CiAKIAkvKgogCSAqIFRoaXMgaXMgcmVwbGlj YXRpb24gc3RhcnQgYW5kIG5vdCBzbG90IGluaXRpYWxpemF0aW9uLgpAQCAtNDgwLDYgKzQ4Nyw3 IEBAIHBnb3V0cHV0X3N0YXJ0dXAoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBPdXRwdXRQ bHVnaW5PcHRpb25zICpvcHQsCiAKIAkJLyogSW5pdCBwdWJsaWNhdGlvbiBzdGF0ZS4gKi8KIAkJ ZGF0YS0+cHVibGljYXRpb25zID0gTklMOworCQlkYXRhLT5kZWxldGVkX3JlbGlkcyA9IE5JTDsK IAkJcHVibGljYXRpb25zX3ZhbGlkID0gZmFsc2U7CiAJCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNh bGxiYWNrKFBVQkxJQ0FUSU9OT0lELAogCQkJCQkJCQkJICBwdWJsaWNhdGlvbl9pbnZhbGlkYXRp b25fY2IsCkBAIC0xMzYyLDkgKzEzNzAsMjIgQEAgcGdvdXRwdXRfY2hhbmdlKExvZ2ljYWxEZWNv ZGluZ0NvbnRleHQgKmN0eCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCVJlb3JkZXJCdWZmZXJD aGFuZ2VUeXBlIGFjdGlvbiA9IGNoYW5nZS0+YWN0aW9uOwogCVR1cGxlVGFibGVTbG90ICpvbGRf c2xvdCA9IE5VTEw7CiAJVHVwbGVUYWJsZVNsb3QgKm5ld19zbG90ID0gTlVMTDsKKwlib29sCQkJ dGFibGVfcmV3cml0ZSA9IGZhbHNlOwogCiAJdXBkYXRlX3JlcGxpY2F0aW9uX3Byb2dyZXNzKGN0 eCwgZmFsc2UpOwogCisJLyoKKwkgKiBGb3IgaGVhcCByZXdyaXRlcywgd2UgbWlnaHQgbmVlZCB0 byByZXBsaWNhdGUgdGhlbSBpZiB0aGUgcmV3cml0dGVuCisJICogdGFibGUgcHVibGlzaGVzIHJl d3JpdGUgZGRsIG1lc3NhZ2UuIFNvIGdldCB0aGUgYWN0dWFsIHJlbGF0aW9uIGhlcmUgYW5kCisJ ICogY2hlY2sgdGhlIHB1YmFjdGlvbiBsYXRlci4KKwkgKi8KKwlpZiAocmVsYXRpb24tPnJkX3Jl bC0+cmVscmV3cml0ZSkKKwl7CisJCXRhYmxlX3Jld3JpdGUgPSB0cnVlOworCQlyZWxhdGlvbiA9 IFJlbGF0aW9uSWRHZXRSZWxhdGlvbihyZWxhdGlvbi0+cmRfcmVsLT5yZWxyZXdyaXRlKTsKKwkJ dGFyZ2V0cmVsID0gcmVsYXRpb247CisJfQorCiAJaWYgKCFpc19wdWJsaXNoYWJsZV9yZWxhdGlv bihyZWxhdGlvbikpCiAJCXJldHVybjsKIApAQCAtMTM5OCw2ICsxNDE5LDEzIEBAIHBnb3V0cHV0 X2NoYW5nZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJlb3JkZXJCdWZmZXJUWE4gKnR4 biwKIAkJCUFzc2VydChmYWxzZSk7CiAJfQogCisJLyoKKwkgKiBXZSBkb24ndCBwdWJsaXNoIHRh YmxlIHJld3JpdGUgY2hhbmdlIHVubGVzcyB3ZSBwdWJsaXNoIHRoZSByZXdyaXRlIGRkbAorCSAq IG1lc3NhZ2UuCisJICovCisJaWYgKHRhYmxlX3Jld3JpdGUgJiYgIXJlbGVudHJ5LT5wdWJhY3Rp b25zLnB1YmRkbCkKKwkJcmV0dXJuOworCiAJLyogQXZvaWQgbGVha2luZyBtZW1vcnkgYnkgdXNp bmcgYW5kIHJlc2V0dGluZyBvdXIgb3duIGNvbnRleHQgKi8KIAlvbGQgPSBNZW1vcnlDb250ZXh0 U3dpdGNoVG8oZGF0YS0+Y29udGV4dCk7CiAKQEAgLTE0MjcsOCArMTQ1NSw4IEBAIHBnb3V0cHV0 X2NoYW5nZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJlb3JkZXJCdWZmZXJUWE4gKnR4 biwKIAkJCX0KIAogCQkJLyogQ2hlY2sgcm93IGZpbHRlciAqLwotCQkJaWYgKCFwZ291dHB1dF9y b3dfZmlsdGVyKHRhcmdldHJlbCwgTlVMTCwgJm5ld19zbG90LCByZWxlbnRyeSwKLQkJCQkJCQkJ CSAmYWN0aW9uKSkKKwkJCWlmICghdGFibGVfcmV3cml0ZSAmJgorCQkJCSFwZ291dHB1dF9yb3df ZmlsdGVyKHRhcmdldHJlbCwgTlVMTCwgJm5ld19zbG90LCByZWxlbnRyeSwgJmFjdGlvbikpCiAJ CQkJYnJlYWs7CiAKIAkJCS8qCkBAIC0xNDQ4LDggKzE0NzYsMTkgQEAgcGdvdXRwdXRfY2hhbmdl KExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQkJ bWF5YmVfc2VuZF9zY2hlbWEoY3R4LCBjaGFuZ2UsIHJlbGF0aW9uLCByZWxlbnRyeSk7CiAKIAkJ CU91dHB1dFBsdWdpblByZXBhcmVXcml0ZShjdHgsIHRydWUpOwotCQkJbG9naWNhbHJlcF93cml0 ZV9pbnNlcnQoY3R4LT5vdXQsIHhpZCwgdGFyZ2V0cmVsLCBuZXdfc2xvdCwKLQkJCQkJCQkJCWRh dGEtPmJpbmFyeSwgcmVsZW50cnktPmNvbHVtbnMpOworCisJCQkvKgorCQkJICogQ29udmVydCB0 aGUgcmV3cml0ZSBpbnNlcnRzIHRvIHVwZGF0ZXMgc28gdGhhdCB0aGUgc3Vic2NyaWJlcgorCQkJ ICogY2FuIHJlcGxheSBpdC4gVGhpcyBpcyBuZWVkZWQgdG8gbWFrZSBzdXJlIHRoZSBkYXRhIGJl dHdlZW4KKwkJCSAqIHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJlciBpcyBjb25zaXN0ZW50LgorCQkJ ICovCisJCQlpZiAodGFibGVfcmV3cml0ZSkKKwkJCQlsb2dpY2FscmVwX3dyaXRlX3VwZGF0ZShj dHgtPm91dCwgeGlkLCB0YXJnZXRyZWwsCisJCQkJCQkJCQkJTlVMTCwgbmV3X3Nsb3QsIGRhdGEt PmJpbmFyeSwKKwkJCQkJCQkJCQlyZWxlbnRyeS0+Y29sdW1ucyk7CisJCQllbHNlCisJCQkJbG9n aWNhbHJlcF93cml0ZV9pbnNlcnQoY3R4LT5vdXQsIHhpZCwgdGFyZ2V0cmVsLCBuZXdfc2xvdCwK KwkJCQkJCQkJCQlkYXRhLT5iaW5hcnksIHJlbGVudHJ5LT5jb2x1bW5zKTsKIAkJCU91dHB1dFBs dWdpbldyaXRlKGN0eCwgdHJ1ZSk7CiAJCQlicmVhazsKIAkJY2FzZSBSRU9SREVSX0JVRkZFUl9D SEFOR0VfVVBEQVRFOgpAQCAtMTU3OSw2ICsxNjE4LDkgQEAgcGdvdXRwdXRfY2hhbmdlKExvZ2lj YWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQlhbmNlc3Rv ciA9IE5VTEw7CiAJfQogCisJaWYgKHRhYmxlX3Jld3JpdGUpCisJCVJlbGF0aW9uQ2xvc2UocmVs YXRpb24pOworCiAJLyogQ2xlYW51cCAqLwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGQpOwog CU1lbW9yeUNvbnRleHRSZXNldChkYXRhLT5jb250ZXh0KTsKQEAgLTE2NTYsOCArMTY5OCw4IEBA IHBnb3V0cHV0X3RydW5jYXRlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgUmVvcmRlckJ1 ZmZlclRYTiAqdHhuLAogCiBzdGF0aWMgdm9pZAogcGdvdXRwdXRfbWVzc2FnZShMb2dpY2FsRGVj b2RpbmdDb250ZXh0ICpjdHgsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKLQkJCQkgWExvZ1JlY1B0 ciBtZXNzYWdlX2xzbiwgYm9vbCB0cmFuc2FjdGlvbmFsLCBjb25zdCBjaGFyICpwcmVmaXgsIFNp emUgc3osCi0JCQkJIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCisJCQkJIFhMb2dSZWNQdHIgbWVzc2Fn ZV9sc24sIGJvb2wgdHJhbnNhY3Rpb25hbCwKKwkJCQkgY29uc3QgY2hhciAqcHJlZml4LCBTaXpl IHN6LCBjb25zdCBjaGFyICptZXNzYWdlKQogewogCVBHT3V0cHV0RGF0YSAqZGF0YSA9IChQR091 dHB1dERhdGEgKikgY3R4LT5vdXRwdXRfcGx1Z2luX3ByaXZhdGU7CiAJVHJhbnNhY3Rpb25JZCB4 aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKQEAgLTE2OTcsNiArMTczOSwxMTAgQEAgcGdvdXRw dXRfbWVzc2FnZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJlb3JkZXJCdWZmZXJUWE4g KnR4biwKIAlPdXRwdXRQbHVnaW5Xcml0ZShjdHgsIHRydWUpOwogfQogCitzdGF0aWMgdm9pZAor cGdvdXRwdXRfZGRsbWVzc2FnZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJlb3JkZXJC dWZmZXJUWE4gKnR4biwKKwkJCQkJWExvZ1JlY1B0ciBtZXNzYWdlX2xzbiwKKwkJCQkJY29uc3Qg Y2hhciAqcHJlZml4LCBPaWQgcmVsaWQsIERlcGFyc2VkQ29tbWFuZFR5cGUgY21kdHlwZSwKKwkJ CQkJU2l6ZSBzeiwgY29uc3QgY2hhciAqbWVzc2FnZSkKK3sKKwlQR091dHB1dERhdGEgKmRhdGEg PSAoUEdPdXRwdXREYXRhICopIGN0eC0+b3V0cHV0X3BsdWdpbl9wcml2YXRlOworCVBHT3V0cHV0 VHhuRGF0YSAqdHhuZGF0YSA9IChQR091dHB1dFR4bkRhdGEgKikgdHhuLT5vdXRwdXRfcGx1Z2lu X3ByaXZhdGU7CisJUmVsYXRpb24JcmVsYXRpb24gPSBOVUxMOworCVRyYW5zYWN0aW9uSWQgeGlk ID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJUmVsYXRpb25TeW5jRW50cnkgKnJlbGVudHJ5Owor CisJLyoKKwkgKiBSZW1lbWJlciB0aGUgeGlkIGZvciB0aGUgbWVzc2FnZSBpbiBzdHJlYW1pbmcg bW9kZS4gU2VlCisJICogcGdvdXRwdXRfY2hhbmdlLgorCSAqLworCWlmIChpbl9zdHJlYW1pbmcp CisJCXhpZCA9IHR4bi0+eGlkOworCisJLyoKKwkgKiBPbiBEUk9QIHN0YXJ0LCBhZGQgdGhlIHJl bGlkIHRvIGEgZGVsZXRlZF9yZWxpZCBsaXN0IGlmIHRoZSByZWxpZAorCSAqIGlzIHBhcnQgb2Yg YSBwdWJsaWNhdGlvbiB0aGF0IHN1cHBvcnRzIGRkbCBwdWJsaWNhdGlvbi4gV2UgbmVlZCB0aGlz IGJlY2F1c2UKKwkgKiBvbiBEUk9QIGVuZCwgdGhlIHJlbGlkIHdpbGwgbm8gbG9uZ2VyIGJlIHZh bGlkLiBMYXRlciBvbiBEcm9wIGVuZCwgdmVyaWZ5IHRoYXQKKwkgKiB0aGUgZHJvcCBpcyBmb3Ig YSByZWxpZCB0aGF0IGlzIG9uIHRoZSBkZWxldGVkX3JpZCBsaXN0LCBhbmQgb25seSB0aGVuIHNl bmQKKwkgKiB0aGUgZGRsIG1lc3NhZ2UuCisJICovCisKKwlpZiAoKGNtZHR5cGUgPT0gRENUX0Ry b3BTdGFydCkpCisJeworCQlyZWxhdGlvbiA9IFJlbGF0aW9uSWRHZXRSZWxhdGlvbihyZWxpZCk7 CisJCUFzc2VydChyZWxhdGlvbik7CisJCXJlbGVudHJ5ID0gZ2V0X3JlbF9zeW5jX2VudHJ5KGRh dGEsIHJlbGF0aW9uKTsKKwkJaWYgKHJlbGVudHJ5LT5wdWJhY3Rpb25zLnB1YmRkbCkKKwkJewor CQkJZGF0YS0+ZGVsZXRlZF9yZWxpZHMgPSBsYXBwZW5kX29pZChkYXRhLT5kZWxldGVkX3JlbGlk cywgcmVsaWQpOworCQl9CisJCXJldHVybjsKKwl9CisJZWxzZSBpZiAoKGNtZHR5cGUgPT0gRENU X0Ryb3BFbmQpKQorCXsKKwkJaWYoIWxpc3RfbWVtYmVyX29pZChkYXRhLT5kZWxldGVkX3JlbGlk cywgcmVsaWQpKQorCQkJcmV0dXJuOworCQllbHNlCisJCXsKKwkJCWRhdGEtPmRlbGV0ZWRfcmVs aWRzID0gbGlzdF9kZWxldGVfb2lkKGRhdGEtPmRlbGV0ZWRfcmVsaWRzLCByZWxpZCk7CisJCX0K Kwl9CisJZWxzZSBpZiAoY21kdHlwZSA9PSBEQ1RfQWx0ZXIpCisJeworCQkvKgorCQkgKiBGb3Ig dGFibGUgcmV3cml0ZSBkZGwsIHdlIGZpcnN0IHNlbmQgdGhlIG9yaWdpbmFsIGRkbCBtZXNzYWdl IHRvCisJCSAqIHN1YnNjcmliZXIsIHRoZW4gY29udmVydCB0aGUgdXBjb21pbmcgcmV3cml0ZSBJ TlNFUlQgdG8gVVBEQVRFIGFuZAorCQkgKiBzZW5kIHRoZW0gdG8gc3Vic2NyaWJlciBzbyB0aGF0 IHRoZSBkYXRhIGJldHdlZW4gcHVibGlzaGVyIGFuZAorCQkgKiBzdWJzY3JpYmVyIGNhbiBhbHdh eXMgYmUgY29uc2lzdGVudC4KKwkJICoKKwkJICogV2UgZG8gdGhpcyB3YXkgYmVjYXVzZSBvZiB0 d28gcmVhc29uOgorCQkgKgorCQkgKiAoMSkgVGhlIGRhdGEgYmVmb3JlIHRoZSByZXdyaXRlIGRk bCBjb3VsZCBhbHJlYWR5IGJlIGRpZmZlcmVudCBhbW9uZworCQkgKiBwdWJsaXNoZXIgYW5kIHN1 YnNjcmliZXIuIFRvIG1ha2Ugc3VyZSB0aGUgZXh0cmEgZGF0YSBpbiBzdWJzY3JpYmVyCisJCSAq IHdoaWNoIGRvZXNuJ3QgZXhpc3QgaW4gcHVibGlzaGVyIGFsc28gZ2V0IHJld3JpdHRlbiwgd2Ug bmVlZCB0byBsZXQKKwkJICogdGhlIHN1YnNjcmliZXIgZXhlY3V0ZSB0aGUgb3JpZ2luYWwgcmV3 cml0ZSBkZGwgdG8gcmV3cml0ZSBhbGwgdGhlCisJCSAqIGRhdGEgYXQgZmlyc3QuCisJCSAqCisJ CSAqICgyKSB0aGUgZGF0YSBhZnRlciBleGVjdXRpbmcgcmV3cml0ZSBkZGwgY291bGQgYmUgZGlm ZmVyZW50IGFtb25nCisJCSAqIHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJlcihkdWUgdG8gZGlmZmVy ZW50IGZ1bmN0aW9ucy9vcGVyYXRvcnMgdXNlZAorCQkgKiBkdXJpbmcgcmV3cml0ZSksIHNvIHdl IG5lZWQgdG8gcmVwbGljYXRlIHRoZSByZXdyaXRlIFVQREFURXMgdG8ga2VlcAorCQkgKiB0aGUg ZGF0YSBjb25zaXN0ZW50LgorCQkgKgorCQkgKiBUTyBJTVBST1ZFOiBXZSBjb3VsZCBpbXByb3Zl IHRoaXMgYnkgbGV0dGluZyB0aGUgc3Vic2NyaWJlciBvbmx5CisJCSAqIHJld3JpdGUgdGhlIGV4 dHJhIGRhdGEgaW5zdGVhZCBvZiBkb2luZyBmdWxseSByZXdyaXRlIGFuZCB1c2UgdGhlCisJCSAq IHVwY29taW5nIHJld3JpdGUgVVBEQVRFcyB0byByZXdyaXRlIHRoZSByZXN0IGRhdGEuIEJlc2lk ZXMsIHdlIG1heQorCQkgKiBub3QgbmVlZCB0byBzZW5kIHJld3JpdGUgY2hhbmdlcyBmb3IgYWxs IHR5cGUgb2YgcmV3cml0ZSBkZGwsIGZvcgorCQkgKiBleGFtcGxlLCBpdCBzZWVtcyBmaW5lIHRv IHNraXAgc2VuZGluZyByZXdyaXRlIGNoYW5nZXMgZm9yIEFMVEVSCisJCSAqIFRBQkxFIFNFVCBM T0dHRUQgYXMgdGhlIGRhdGEgaW4gdGhlIHRhYmxlIGRvZXNuJ3QgYWN0dWFsbHkgYmUKKwkJICog Y2hhbmdlZC4KKwkJICovCisJCXJlbGF0aW9uID0gUmVsYXRpb25JZEdldFJlbGF0aW9uKHJlbGlk KTsKKwkJQXNzZXJ0KHJlbGF0aW9uKTsKKworCQlyZWxlbnRyeSA9IGdldF9yZWxfc3luY19lbnRy eShkYXRhLCByZWxhdGlvbik7CisKKwkJLyoKKwkJICogU2tpcCBzZW5kaW5nIHRoaXMgZGRsIGlm IHdlIGRvbid0IHB1Ymxpc2ggZGRsIG1lc3NhZ2Ugb3IgdGhlIGRkbAorCQkgKiBuZWVkIHRvIGJl IHB1Ymxpc2hlZCB2aWEgaXRzIHJvb3QgcmVsYXRpb24uCisJCSAqLworCQlpZiAoIXJlbGVudHJ5 LT5wdWJhY3Rpb25zLnB1YmRkbCB8fAorCQkJcmVsZW50cnktPnB1Ymxpc2hfYXNfcmVsaWQgIT0g cmVsaWQpCisJCQlyZXR1cm47CisJfQorCisJLyogU2VuZCBCRUdJTiBpZiB3ZSBoYXZlbid0IHll dCAqLworCWlmICh0eG5kYXRhICYmICF0eG5kYXRhLT5zZW50X2JlZ2luX3R4bikKKwkJcGdvdXRw dXRfc2VuZF9iZWdpbihjdHgsIHR4bik7CisKKwlPdXRwdXRQbHVnaW5QcmVwYXJlV3JpdGUoY3R4 LCB0cnVlKTsKKwlsb2dpY2FscmVwX3dyaXRlX2RkbG1lc3NhZ2UoY3R4LT5vdXQsCisJCQkJCQkJ CXhpZCwKKwkJCQkJCQkJbWVzc2FnZV9sc24sCisJCQkJCQkJCXByZWZpeCwKKwkJCQkJCQkJc3os CisJCQkJCQkJCW1lc3NhZ2UpOworCU91dHB1dFBsdWdpbldyaXRlKGN0eCwgdHJ1ZSk7Cit9CisK IC8qCiAgKiBDdXJyZW50bHkgd2UgYWx3YXlzIGZvcndhcmQuCiAgKi8KQEAgLTE5ODIsNyArMjEy OCw4IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJl bGF0aW9uKQogCQllbnRyeS0+c2NoZW1hX3NlbnQgPSBmYWxzZTsKIAkJZW50cnktPnN0cmVhbWVk X3R4bnMgPSBOSUw7CiAJCWVudHJ5LT5wdWJhY3Rpb25zLnB1Ymluc2VydCA9IGVudHJ5LT5wdWJh Y3Rpb25zLnB1YnVwZGF0ZSA9Ci0JCQllbnRyeS0+cHViYWN0aW9ucy5wdWJkZWxldGUgPSBlbnRy eS0+cHViYWN0aW9ucy5wdWJ0cnVuY2F0ZSA9IGZhbHNlOworCQkJZW50cnktPnB1YmFjdGlvbnMu cHViZGVsZXRlID0gZW50cnktPnB1YmFjdGlvbnMucHVidHJ1bmNhdGUgPQorCQkJZW50cnktPnB1 YmFjdGlvbnMucHViZGRsID0gZmFsc2U7CiAJCWVudHJ5LT5uZXdfc2xvdCA9IE5VTEw7CiAJCWVu dHJ5LT5vbGRfc2xvdCA9IE5VTEw7CiAJCW1lbXNldChlbnRyeS0+ZXhwcnN0YXRlLCAwLCBzaXpl b2YoZW50cnktPmV4cHJzdGF0ZSkpOwpAQCAtMjA0MCw2ICsyMTg3LDcgQEAgZ2V0X3JlbF9zeW5j X2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJCWVudHJ5LT5w dWJhY3Rpb25zLnB1YnVwZGF0ZSA9IGZhbHNlOwogCQllbnRyeS0+cHViYWN0aW9ucy5wdWJkZWxl dGUgPSBmYWxzZTsKIAkJZW50cnktPnB1YmFjdGlvbnMucHVidHJ1bmNhdGUgPSBmYWxzZTsKKwkJ ZW50cnktPnB1YmFjdGlvbnMucHViZGRsID0gZmFsc2U7CiAKIAkJLyoKIAkJICogVHVwbGUgc2xv dHMgY2xlYW51cHMuIChXaWxsIGJlIHJlYnVpbHQgbGF0ZXIgaWYgbmVlZGVkKS4KQEAgLTIxNTMs NiArMjMwMSw3IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0 aW9uIHJlbGF0aW9uKQogCQkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YnVwZGF0ZSB8PSBwdWItPnB1 YmFjdGlvbnMucHVidXBkYXRlOwogCQkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YmRlbGV0ZSB8PSBw dWItPnB1YmFjdGlvbnMucHViZGVsZXRlOwogCQkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YnRydW5j YXRlIHw9IHB1Yi0+cHViYWN0aW9ucy5wdWJ0cnVuY2F0ZTsKKwkJCQllbnRyeS0+cHViYWN0aW9u cy5wdWJkZGwgICAgfD0gcHViLT5wdWJhY3Rpb25zLnB1YmRkbDsKIAogCQkJCS8qCiAJCQkJICog V2Ugd2FudCB0byBwdWJsaXNoIHRoZSBjaGFuZ2VzIGFzIHRoZSB0b3AtbW9zdCBhbmNlc3RvcgpA QCAtMjMzOCw2ICsyNDg3LDcgQEAgcmVsX3N5bmNfY2FjaGVfcHVibGljYXRpb25fY2IoRGF0dW0g YXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKIAl7CiAJCWVudHJ5LT5yZXBsaWNh dGVfdmFsaWQgPSBmYWxzZTsKIAl9CisKIH0KIAogLyogU2VuZCBSZXBsaWNhdGlvbiBvcmlnaW4g Ki8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMKaW5kZXggNTFiM2ZkYy4uN2Q2MGFhYyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNs dWRlICJjYXRhbG9nL3BnX29wZXJhdG9yLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgi CiAjaW5jbHVkZSAiY29tbWFuZHMvdHJpZ2dlci5oIgorI2luY2x1ZGUgImNvbW1hbmRzL2V2ZW50 X3RyaWdnZXIuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUgImV4 ZWN1dG9yL3NwaS5oIgogI2luY2x1ZGUgImxpYi9pbGlzdC5oIgpAQCAtNDAsNiArNDEsNyBAQAog I2luY2x1ZGUgInBhcnNlci9wYXJzZV9jb2VyY2UuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2Vf cmVsYXRpb24uaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgorI2luY2x1ZGUgInRjb3Av ZGRsX2RlcGFyc2UuaCIKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKICNpbmNsdWRlICJ1dGlscy9i dWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVs Y2FjaGUuYwppbmRleCA2MGU3MmY5Li43YjUxZmI0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9jYWNoZS9yZWxjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNh Y2hlLmMKQEAgLTU2MzMsNiArNTYzMyw3IEBAIFJlbGF0aW9uQnVpbGRQdWJsaWNhdGlvbkRlc2Mo UmVsYXRpb24gcmVsYXRpb24sIFB1YmxpY2F0aW9uRGVzYyAqcHViZGVzYykKIAkJcHViZGVzYy0+ cHViYWN0aW9ucy5wdWJ1cGRhdGUgfD0gcHViZm9ybS0+cHVidXBkYXRlOwogCQlwdWJkZXNjLT5w dWJhY3Rpb25zLnB1YmRlbGV0ZSB8PSBwdWJmb3JtLT5wdWJkZWxldGU7CiAJCXB1YmRlc2MtPnB1 YmFjdGlvbnMucHVidHJ1bmNhdGUgfD0gcHViZm9ybS0+cHVidHJ1bmNhdGU7CisJCXB1YmRlc2Mt PnB1YmFjdGlvbnMucHViZGRsIHw9IHB1YmZvcm0tPnB1YmRkbDsKIAogCQkvKgogCQkgKiBDaGVj ayBpZiBhbGwgY29sdW1ucyByZWZlcmVuY2VkIGluIHRoZSBmaWx0ZXIgZXhwcmVzc2lvbiBhcmUg cGFydApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wLmMKaW5kZXggN2NjOWM3Mi4uMDMwZDQ5MSAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC0z ODY3LDYgKzM4NjcsNyBAQCBnZXRQdWJsaWNhdGlvbnMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1Q dWJsaWNhdGlvbnMpCiAJaW50CQkJaV9wdWJ1cGRhdGU7CiAJaW50CQkJaV9wdWJkZWxldGU7CiAJ aW50CQkJaV9wdWJ0cnVuY2F0ZTsKKwlpbnQJCQlpX3B1YmRkbDsKIAlpbnQJCQlpX3B1YnZpYXJv b3Q7CiAJaW50CQkJaSwKIAkJCQludHVwczsKQEAgLTM4ODIsMjMgKzM4ODMsMjkgQEAgZ2V0UHVi bGljYXRpb25zKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtUHVibGljYXRpb25zKQogCXJlc2V0UFFF eHBCdWZmZXIocXVlcnkpOwogCiAJLyogR2V0IHRoZSBwdWJsaWNhdGlvbnMuICovCi0JaWYgKGZv dXQtPnJlbW90ZVZlcnNpb24gPj0gMTMwMDAwKQorCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49 IDE1MDAwMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksCiAJCQkJCQkgICJTRUxFQ1QgcC50 YWJsZW9pZCwgcC5vaWQsIHAucHVibmFtZSwgIgogCQkJCQkJICAicC5wdWJvd25lciwgIgotCQkJ CQkJICAicC5wdWJhbGx0YWJsZXMsIHAucHViaW5zZXJ0LCBwLnB1YnVwZGF0ZSwgcC5wdWJkZWxl dGUsIHAucHVidHJ1bmNhdGUsIHAucHVidmlhcm9vdCAiCisJCQkJCQkgICJwLnB1YmFsbHRhYmxl cywgcC5wdWJpbnNlcnQsIHAucHVidXBkYXRlLCBwLnB1YmRlbGV0ZSwgcC5wdWJ0cnVuY2F0ZSwg cC5wdWJkZGwsIHAucHVidmlhcm9vdCAiCisJCQkJCQkgICJGUk9NIHBnX3B1YmxpY2F0aW9uIHAi KTsKKwllbHNlIGlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDEzMDAwMCkKKwkJYXBwZW5kUFFF eHBCdWZmZXIocXVlcnksCisJCQkJCQkgICJTRUxFQ1QgcC50YWJsZW9pZCwgcC5vaWQsIHAucHVi bmFtZSwgIgorCQkJCQkJICAicC5wdWJvd25lciwgIgorCQkJCQkJICAicC5wdWJhbGx0YWJsZXMs IHAucHViaW5zZXJ0LCBwLnB1YnVwZGF0ZSwgcC5wdWJkZWxldGUsIHAucHVidHJ1bmNhdGUsIGZh bHNlIGFzIHAucHViZGRsLCBwLnB1YnZpYXJvb3QgIgogCQkJCQkJICAiRlJPTSBwZ19wdWJsaWNh dGlvbiBwIik7CiAJZWxzZSBpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxMTAwMDApCiAJCWFw cGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LAogCQkJCQkJICAiU0VMRUNUIHAudGFibGVvaWQsIHAub2lk LCBwLnB1Ym5hbWUsICIKIAkJCQkJCSAgInAucHVib3duZXIsICIKLQkJCQkJCSAgInAucHViYWxs dGFibGVzLCBwLnB1Ymluc2VydCwgcC5wdWJ1cGRhdGUsIHAucHViZGVsZXRlLCBwLnB1YnRydW5j YXRlLCBmYWxzZSBBUyBwdWJ2aWFyb290ICIKKwkJCQkJCSAgInAucHViYWxsdGFibGVzLCBwLnB1 Ymluc2VydCwgcC5wdWJ1cGRhdGUsIHAucHViZGVsZXRlLCBwLnB1YnRydW5jYXRlLCBmYWxzZSBh cyBwLnB1YmRkbCwgZmFsc2UgQVMgcHVidmlhcm9vdCAiCiAJCQkJCQkgICJGUk9NIHBnX3B1Ymxp Y2F0aW9uIHAiKTsKIAllbHNlCiAJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LAogCQkJCQkJICAi U0VMRUNUIHAudGFibGVvaWQsIHAub2lkLCBwLnB1Ym5hbWUsICIKIAkJCQkJCSAgInAucHVib3du ZXIsICIKLQkJCQkJCSAgInAucHViYWxsdGFibGVzLCBwLnB1Ymluc2VydCwgcC5wdWJ1cGRhdGUs IHAucHViZGVsZXRlLCBmYWxzZSBBUyBwdWJ0cnVuY2F0ZSwgZmFsc2UgQVMgcHVidmlhcm9vdCAi CisJCQkJCQkgICJwLnB1YmFsbHRhYmxlcywgcC5wdWJpbnNlcnQsIHAucHVidXBkYXRlLCBwLnB1 YmRlbGV0ZSwgZmFsc2UgQVMgcHVidHJ1bmNhdGUsIGZhbHNlIGFzIHAucHViZGRsLCBmYWxzZSBB UyBwdWJ2aWFyb290ICIKIAkJCQkJCSAgIkZST00gcGdfcHVibGljYXRpb24gcCIpOwogCiAJcmVz ID0gRXhlY3V0ZVNxbFF1ZXJ5KGZvdXQsIHF1ZXJ5LT5kYXRhLCBQR1JFU19UVVBMRVNfT0spOwpA QCAtMzkxNCw2ICszOTIxLDcgQEAgZ2V0UHVibGljYXRpb25zKEFyY2hpdmUgKmZvdXQsIGludCAq bnVtUHVibGljYXRpb25zKQogCWlfcHVidXBkYXRlID0gUFFmbnVtYmVyKHJlcywgInB1YnVwZGF0 ZSIpOwogCWlfcHViZGVsZXRlID0gUFFmbnVtYmVyKHJlcywgInB1YmRlbGV0ZSIpOwogCWlfcHVi dHJ1bmNhdGUgPSBQUWZudW1iZXIocmVzLCAicHVidHJ1bmNhdGUiKTsKKwlpX3B1YmRkbCA9IFBR Zm51bWJlcihyZXMsICJwdWJkZGwiKTsKIAlpX3B1YnZpYXJvb3QgPSBQUWZudW1iZXIocmVzLCAi cHVidmlhcm9vdCIpOwogCiAJcHViaW5mbyA9IHBnX21hbGxvYyhudHVwcyAqIHNpemVvZihQdWJs aWNhdGlvbkluZm8pKTsKQEAgLTM5MzcsNiArMzk0NSw4IEBAIGdldFB1YmxpY2F0aW9ucyhBcmNo aXZlICpmb3V0LCBpbnQgKm51bVB1YmxpY2F0aW9ucykKIAkJCShzdHJjbXAoUFFnZXR2YWx1ZShy ZXMsIGksIGlfcHViZGVsZXRlKSwgInQiKSA9PSAwKTsKIAkJcHViaW5mb1tpXS5wdWJ0cnVuY2F0 ZSA9CiAJCQkoc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3B1YnRydW5jYXRlKSwgInQiKSA9 PSAwKTsKKwkJcHViaW5mb1tpXS5wdWJkZGwgPQorCQkJKHN0cmNtcChQUWdldHZhbHVlKHJlcywg aSwgaV9wdWJkZGwpLCAidCIpID09IDApOwogCQlwdWJpbmZvW2ldLnB1YnZpYXJvb3QgPQogCQkJ KHN0cmNtcChQUWdldHZhbHVlKHJlcywgaSwgaV9wdWJ2aWFyb290KSwgInQiKSA9PSAwKTsKIApA QCAtNDAxNiw2ICs0MDI2LDE1IEBAIGR1bXBQdWJsaWNhdGlvbihBcmNoaXZlICpmb3V0LCBjb25z dCBQdWJsaWNhdGlvbkluZm8gKnB1YmluZm8pCiAJCWZpcnN0ID0gZmFsc2U7CiAJfQogCisJaWYg KHB1YmluZm8tPnB1YmRkbCkKKwl7CisJCWlmICghZmlyc3QpCisJCQlhcHBlbmRQUUV4cEJ1ZmZl clN0cihxdWVyeSwgIiwgIik7CisKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICJkZGwi KTsKKwkJZmlyc3QgPSBmYWxzZTsKKwl9CisKIAlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwg IiciKTsKIAogCWlmIChwdWJpbmZvLT5wdWJ2aWFyb290KQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuaCBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKaW5kZXggMWQyMWMy OS4uNjliOTRhZSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAorKysgYi9z cmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCkBAIC02MjAsNiArNjIwLDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgX1B1YmxpY2F0aW9uSW5mbwogCWJvb2wJCXB1YmRlbGV0ZTsKIAlib29sCQlwdWJ0cnVuY2F0 ZTsKIAlib29sCQlwdWJ2aWFyb290OworCWJvb2wJCXB1YmRkbDsKIH0gUHVibGljYXRpb25JbmZv OwogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wL3JtZ3JkZXNjLmMgYi9zcmMv YmluL3BnX3dhbGR1bXAvcm1ncmRlc2MuYwppbmRleCA2YjhjMTdiLi43OTJmNDM4IDEwMDY0NAot LS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvcm1ncmRlc2MuYworKysgYi9zcmMvYmluL3BnX3dhbGR1 bXAvcm1ncmRlc2MuYwpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL3NlcXVl bmNlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdGFibGVzcGFjZS5oIgogI2luY2x1ZGUgInJlcGxp Y2F0aW9uL21lc3NhZ2UuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9kZGxtZXNzYWdlLmgiCiAj aW5jbHVkZSAicmVwbGljYXRpb24vb3JpZ2luLmgiCiAjaW5jbHVkZSAicm1ncmRlc2MuaCIKICNp bmNsdWRlICJzdG9yYWdlL3N0YW5kYnlkZWZzLmgiCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwv ZGVzY3JpYmUuYyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCmluZGV4IDFhNWQ5MjQuLmZlMjhh YmIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3NyYy9iaW4vcHNx bC9kZXNjcmliZS5jCkBAIC02MDUwLDcgKzYwNTAsNyBAQCBsaXN0UHVibGljYXRpb25zKGNvbnN0 IGNoYXIgKnBhdHRlcm4pCiAJUFFFeHBCdWZmZXJEYXRhIGJ1ZjsKIAlQR3Jlc3VsdCAgICpyZXM7 CiAJcHJpbnRRdWVyeU9wdCBteW9wdCA9IHBzZXQucG9wdDsKLQlzdGF0aWMgY29uc3QgYm9vbCB0 cmFuc2xhdGVfY29sdW1uc1tdID0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg ZmFsc2UsIGZhbHNlLCBmYWxzZX07CisJc3RhdGljIGNvbnN0IGJvb2wgdHJhbnNsYXRlX2NvbHVt bnNbXSA9IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg ZmFsc2UsIGZhbHNlfTsKIAogCWlmIChwc2V0LnN2ZXJzaW9uIDwgMTAwMDAwKQogCXsKQEAgLTYw ODUsNiArNjA4NSwxMCBAQCBsaXN0UHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJ CWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCQkgICIsXG4gIHB1YnZpYXJvb3QgQVMgXCIl c1wiIiwKIAkJCQkJCSAgZ2V0dGV4dF9ub29wKCJWaWEgcm9vdCIpKTsKKwlpZiAocHNldC5zdmVy c2lvbiA+PSAxNDAwMDApCisJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkgICIsXG4g IHB1YmRkbCBBUyBcIiVzXCIiLAorCQkJCQkJICBnZXR0ZXh0X25vb3AoIkRETHMiKSk7CiAKIAlh cHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLAogCQkJCQkJICJcbkZST00gcGdfY2F0YWxvZy5wZ19w dWJsaWNhdGlvblxuIik7CkBAIC02MTcyLDYgKzYxNzYsNyBAQCBkZXNjcmliZVB1YmxpY2F0aW9u cyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCVBHcmVzdWx0ICAgKnJlczsKIAlib29sCQloYXNfcHVi dHJ1bmNhdGU7CiAJYm9vbAkJaGFzX3B1YnZpYXJvb3Q7CisJYm9vbAkJaGFzX3B1YmRkbDsKIAog CVBRRXhwQnVmZmVyRGF0YSB0aXRsZTsKIAlwcmludFRhYmxlQ29udGVudCBjb250OwpAQCAtNjE4 OCw2ICs2MTkzLDcgQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikK IAogCWhhc19wdWJ0cnVuY2F0ZSA9IChwc2V0LnN2ZXJzaW9uID49IDExMDAwMCk7CiAJaGFzX3B1 YnZpYXJvb3QgPSAocHNldC5zdmVyc2lvbiA+PSAxMzAwMDApOworCWhhc19wdWJkZGwgPSAgKHBz ZXQuc3ZlcnNpb24gPj0gMTUwMDAwKTsKIAogCWluaXRQUUV4cEJ1ZmZlcigmYnVmKTsKIApAQCAt NjIwMSw2ICs2MjA3LDkgQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVy bikKIAlpZiAoaGFzX3B1YnZpYXJvb3QpCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsCiAJ CQkJCQkJICIsIHB1YnZpYXJvb3QiKTsKKwlpZiAoaGFzX3B1YmRkbCkKKwkJYXBwZW5kUFFFeHBC dWZmZXJTdHIoJmJ1ZiwKKwkJCQkJCQkgIiwgcHViZGRsIik7CiAJYXBwZW5kUFFFeHBCdWZmZXJT dHIoJmJ1ZiwKIAkJCQkJCSAiXG5GUk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25cbiIpOwog CkBAIC02MjQ5LDYgKzYyNTgsOCBAQCBkZXNjcmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpw YXR0ZXJuKQogCQkJbmNvbHMrKzsKIAkJaWYgKGhhc19wdWJ2aWFyb290KQogCQkJbmNvbHMrKzsK KwkJaWYgKGhhc19wdWJkZGwpCisJCQluY29scysrOwogCiAJCWluaXRQUUV4cEJ1ZmZlcigmdGl0 bGUpOwogCQlwcmludGZQUUV4cEJ1ZmZlcigmdGl0bGUsIF8oIlB1YmxpY2F0aW9uICVzIiksIHB1 Ym5hbWUpOwpAQCAtNjI2Myw2ICs2Mjc0LDggQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3Qg Y2hhciAqcGF0dGVybikKIAkJCXByaW50VGFibGVBZGRIZWFkZXIoJmNvbnQsIGdldHRleHRfbm9v cCgiVHJ1bmNhdGVzIiksIHRydWUsIGFsaWduKTsKIAkJaWYgKGhhc19wdWJ2aWFyb290KQogCQkJ cHJpbnRUYWJsZUFkZEhlYWRlcigmY29udCwgZ2V0dGV4dF9ub29wKCJWaWEgcm9vdCIpLCB0cnVl LCBhbGlnbik7CisJCWlmIChoYXNfcHViZGRsKQorCQkJcHJpbnRUYWJsZUFkZEhlYWRlcigmY29u dCwgZ2V0dGV4dF9ub29wKCJERExzIiksIHRydWUsIGFsaWduKTsKIAogCQlwcmludFRhYmxlQWRk Q2VsbCgmY29udCwgUFFnZXR2YWx1ZShyZXMsIGksIDIpLCBmYWxzZSwgZmFsc2UpOwogCQlwcmlu dFRhYmxlQWRkQ2VsbCgmY29udCwgUFFnZXR2YWx1ZShyZXMsIGksIDMpLCBmYWxzZSwgZmFsc2Up OwpAQCAtNjI3Myw2ICs2Mjg2LDggQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAq cGF0dGVybikKIAkJCXByaW50VGFibGVBZGRDZWxsKCZjb250LCBQUWdldHZhbHVlKHJlcywgaSwg NyksIGZhbHNlLCBmYWxzZSk7CiAJCWlmIChoYXNfcHVidmlhcm9vdCkKIAkJCXByaW50VGFibGVB ZGRDZWxsKCZjb250LCBQUWdldHZhbHVlKHJlcywgaSwgOCksIGZhbHNlLCBmYWxzZSk7CisJCWlm IChoYXNfcHViZGRsKQorCQkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVz LCBpLCA5KSwgZmFsc2UsIGZhbHNlKTsKIAogCQlpZiAoIXB1YmFsbHRhYmxlcykKIAkJewpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3JtZ3JsaXN0LmggYi9zcmMvaW5jbHVkZS9hY2Nl c3Mvcm1ncmxpc3QuaAppbmRleCA5YTc0NzIxLi45ZGUzYjhmIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9hY2Nlc3Mvcm1ncmxpc3QuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvcm1ncmxpc3Qu aApAQCAtNDcsMyArNDcsNCBAQCBQR19STUdSKFJNX0NPTU1JVF9UU19JRCwgIkNvbW1pdFRzIiwg Y29tbWl0X3RzX3JlZG8sIGNvbW1pdF90c19kZXNjLCBjb21taXRfdHNfaQogUEdfUk1HUihSTV9S RVBMT1JJR0lOX0lELCAiUmVwbGljYXRpb25PcmlnaW4iLCByZXBsb3JpZ2luX3JlZG8sIHJlcGxv cmlnaW5fZGVzYywgcmVwbG9yaWdpbl9pZGVudGlmeSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCkK IFBHX1JNR1IoUk1fR0VORVJJQ19JRCwgIkdlbmVyaWMiLCBnZW5lcmljX3JlZG8sIGdlbmVyaWNf ZGVzYywgZ2VuZXJpY19pZGVudGlmeSwgTlVMTCwgTlVMTCwgZ2VuZXJpY19tYXNrLCBOVUxMKQog UEdfUk1HUihSTV9MT0dJQ0FMTVNHX0lELCAiTG9naWNhbE1lc3NhZ2UiLCBsb2dpY2FsbXNnX3Jl ZG8sIGxvZ2ljYWxtc2dfZGVzYywgbG9naWNhbG1zZ19pZGVudGlmeSwgTlVMTCwgTlVMTCwgTlVM TCwgbG9naWNhbG1zZ19kZWNvZGUpCitQR19STUdSKFJNX0xPR0lDQUxERExNU0dfSUQsICJMb2dp Y2FsRERMTWVzc2FnZSIsIGxvZ2ljYWxkZGxtc2dfcmVkbywgbG9naWNhbGRkbG1zZ19kZXNjLCBs b2dpY2FsZGRsbXNnX2lkZW50aWZ5LCBOVUxMLCBOVUxMLCBOVUxMLCBsb2dpY2FsZGRsbXNnX2Rl Y29kZSkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDhhYTYzNmMuLjYzOTY1NjYgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtMTE4OTAsNCArMTE4OTAsMTMgQEAKIHsgb2lkID0+ICc0 NjQzJywgZGVzY3IgPT4gJ2pzb24gdG8gc3RyaW5nJywKICAgcHJvbmFtZSA9PiAnZGRsX2RlcGFy c2VfZXhwYW5kX2NvbW1hbmQnLCBwcm9yZXR0eXBlID0+ICd0ZXh0JywKICAgcHJvYXJndHlwZXMg PT4gJ3RleHQnLCBwcm9zcmMgPT4gJ2RkbF9kZXBhcnNlX2V4cGFuZF9jb21tYW5kJyB9LAoreyBv aWQgPT4gJzQ2NDQnLCBkZXNjciA9PiAndHJpZ2dlciBmb3IgZGRsIGNvbW1hbmQgZGVwYXJzZScs CisgIHByb25hbWUgPT4gJ3B1YmxpY2F0aW9uX2RkbF9kZXBhcnNlJywgcHJvcmV0dHlwZSA9PiAn ZXZlbnRfdHJpZ2dlcicsCisgIHByb2FyZ3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ3B1YmxpY2F0 aW9uX2RkbF9kZXBhcnNlJyB9LAoreyBvaWQgPT4gJzQ2NDUnLCBkZXNjciA9PiAndHJpZ2dlciBm b3IgZGRsIGNvbW1hbmQgZGVwYXJzZSBzdGFydCcsCisgIHByb25hbWUgPT4gJ3B1YmxpY2F0aW9u X2RkbF9kZXBhcnNlX3N0YXJ0JywgcHJvcmV0dHlwZSA9PiAnZXZlbnRfdHJpZ2dlcicsCisgIHBy b2FyZ3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ3B1YmxpY2F0aW9uX2RkbF9kZXBhcnNlX3N0YXJ0 JyB9LAoreyBvaWQgPT4gJzQ2NDYnLCBkZXNjciA9PiAndHJpZ2dlciBmb3IgZGRsIGNvbW1hbmQg ZGVwYXJzZSB0YWJsZSByZXdyaXRlJywKKyAgcHJvbmFtZSA9PiAncHVibGljYXRpb25fZGRsX2Rl cGFyc2VfdGFibGVfcmV3cml0ZScsIHByb3JldHR5cGUgPT4gJ2V2ZW50X3RyaWdnZXInLAorICBw cm9hcmd0eXBlcyA9PiAnJywgcHJvc3JjID0+ICdwdWJsaWNhdGlvbl9kZGxfZGVwYXJzZV90YWJs ZV9yZXdyaXRlJyB9LAogXQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJs aWNhdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCmluZGV4IDQ4 MjA1YmEuLjYwNmMwMDkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGlj YXRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKQEAgLTU0 LDYgKzU0LDkgQEAgQ0FUQUxPRyhwZ19wdWJsaWNhdGlvbiw2MTA0LFB1YmxpY2F0aW9uUmVsYXRp b25JZCkKIAogCS8qIHRydWUgaWYgcGFydGl0aW9uIGNoYW5nZXMgYXJlIHB1Ymxpc2hlZCB1c2lu ZyByb290IHNjaGVtYSAqLwogCWJvb2wJCXB1YnZpYXJvb3Q7CisKKwkvKiB0cnVlIGlmIHRhYmxl IGNyZWF0aW9ucyBhcmUgcHVibGlzaGVkICovCisJYm9vbAkJcHViZGRsOwogfSBGb3JtRGF0YV9w Z19wdWJsaWNhdGlvbjsKIAogLyogLS0tLS0tLS0tLS0tLS0tLQpAQCAtNzIsNiArNzUsNyBAQCB0 eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvbkFjdGlvbnMKIAlib29sCQlwdWJ1cGRhdGU7CiAJYm9v bAkJcHViZGVsZXRlOwogCWJvb2wJCXB1YnRydW5jYXRlOworCWJvb2wJCXB1YmRkbDsKIH0gUHVi bGljYXRpb25BY3Rpb25zOwogCiB0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvbkRlc2MKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaCBiL3NyYy9pbmNsdWRl L2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaAppbmRleCAxMDA5MWMzLi5mZDJlZTdmIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmgKKysrIGIvc3JjL2luY2x1 ZGUvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5oCkBAIC03MSw3ICs3MSw4IEBAIGV4dGVybiB2b2lk IEV2ZW50VHJpZ2dlckNvbGxlY3RTaW1wbGVDb21tYW5kKE9iamVjdEFkZHJlc3MgYWRkcmVzcywK IGV4dGVybiB2b2lkIEV2ZW50VHJpZ2dlckFsdGVyVGFibGVTdGFydChOb2RlICpwYXJzZXRyZWUp OwogZXh0ZXJuIHZvaWQgRXZlbnRUcmlnZ2VyQWx0ZXJUYWJsZVJlbGlkKE9pZCBvYmplY3RJZCk7 CiBleHRlcm4gdm9pZCBFdmVudFRyaWdnZXJDb2xsZWN0QWx0ZXJUYWJsZVN1YmNtZChOb2RlICpz dWJjbWQsCi0JCQkJCQkJCQkJCQlPYmplY3RBZGRyZXNzIGFkZHJlc3MpOworCQkJCQkJCQkJCQkJ T2JqZWN0QWRkcmVzcyBhZGRyZXNzLAorCQkJCQkJCQkJCQkJYm9vbCByZXdyaXRlKTsKIGV4dGVy biB2b2lkIEV2ZW50VHJpZ2dlckFsdGVyVGFibGVFbmQodm9pZCk7CiAKIGV4dGVybiB2b2lkIEV2 ZW50VHJpZ2dlckNvbGxlY3RHcmFudChJbnRlcm5hbEdyYW50ICppc3RtdCk7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9kZGxtZXNzYWdlLmggYi9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi9kZGxtZXNzYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u MTcyZDA5MQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2RkbG1l c3NhZ2UuaApAQCAtMCwwICsxLDU3IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGRkbG1lc3Nh Z2UuaAorICoJICAgRXhwb3J0cyBmcm9tIHJlcGxpY2F0aW9uL2xvZ2ljYWwvZGRsbWVzc2FnZS5j CisgKgorICogQ29weXJpZ2h0IChjKSAyMDIyLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVu dCBHcm91cAorICoKKyAqIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2RkbG1lc3NhZ2UuaAorICot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpZm5kZWYgUEdfTE9HSUNBTF9ERExfTUVTU0FHRV9ICisj ZGVmaW5lIFBHX0xPR0lDQUxfRERMX01FU1NBR0VfSAorCisjaW5jbHVkZSAiYWNjZXNzL3hsb2cu aCIKKyNpbmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMuaCIKKyNpbmNsdWRlICJhY2Nlc3MveGxvZ3Jl YWRlci5oIgorI2luY2x1ZGUgIm5vZGVzL25vZGVzLmgiCisKKworLyoKKyAqIFN1cHBvcnQgZm9y IGtlZXBpbmcgdHJhY2sgb2YgZGVwYXJzZWQgY29tbWFuZHMuCisgKi8KK3R5cGVkZWYgZW51bSBE ZXBhcnNlZENvbW1hbmRUeXBlCit7CisJRENUX0NyZWF0ZSwKKwlEQ1RfRHJvcFN0YXJ0LAorCURD VF9Ecm9wRW5kLAorCURDVF9BbHRlcgorfSBEZXBhcnNlZENvbW1hbmRUeXBlOworCisvKgorICog R2VuZXJpYyBsb2dpY2FsIGRlY29kaW5nIERETCBtZXNzYWdlIHdhbCByZWNvcmQuCisgKi8KK3R5 cGVkZWYgc3RydWN0IHhsX2xvZ2ljYWxfZGRsX21lc3NhZ2UKK3sKKwlPaWQJCQlkYklkOwkJCS8q IGRhdGFiYXNlIE9pZCBlbWl0dGVkIGZyb20gKi8KKwlTaXplCQlwcmVmaXhfc2l6ZTsJLyogbGVu Z3RoIG9mIHByZWZpeCAqLworCU9pZAkJCXJlbGlkOwkJCS8qIGlkIG9mIHRoZSB0YWJsZSAqLwor CU5vZGVUYWcJCWNtZHR5cGU7LyogdHlwZSBvZiBzcWwgY29tbWFuZCAqLworCVNpemUJCW1lc3Nh Z2Vfc2l6ZTsJICAvKiBzaXplIG9mIHRoZSBtZXNzYWdlICovCisJLyoKKwkgKiBwYXlsb2FkLCBp bmNsdWRpbmcgbnVsbC10ZXJtaW5hdGVkIHByZWZpeCBvZiBsZW5ndGggcHJlZml4X3NpemUKKwkg Ki8KKwljaGFyCQltZXNzYWdlW0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07Cit9IHhsX2xvZ2ljYWxf ZGRsX21lc3NhZ2U7CisKKyNkZWZpbmUgU2l6ZU9mTG9naWNhbERETE1lc3NhZ2UJKG9mZnNldG9m KHhsX2xvZ2ljYWxfZGRsX21lc3NhZ2UsIG1lc3NhZ2UpKQorCitleHRlcm4gWExvZ1JlY1B0ciBM b2dMb2dpY2FsRERMTWVzc2FnZShjb25zdCBjaGFyICpwcmVmaXgsIE9pZCByZWxpZCwgRGVwYXJz ZWRDb21tYW5kVHlwZSBjbWR0eXBlLAorCQkJCQkJCQkJICAgY29uc3QgY2hhciAqZGRsX21lc3Nh Z2UsIHNpemVfdCBzaXplKTsKKworLyogUk1HUiBBUEkqLworI2RlZmluZSBYTE9HX0xPR0lDQUxf RERMX01FU1NBR0UJMHgwMAordm9pZAkJbG9naWNhbGRkbG1zZ19yZWRvKFhMb2dSZWFkZXJTdGF0 ZSAqcmVjb3JkKTsKK3ZvaWQJCWxvZ2ljYWxkZGxtc2dfZGVzYyhTdHJpbmdJbmZvIGJ1ZiwgWExv Z1JlYWRlclN0YXRlICpyZWNvcmQpOworY29uc3QgY2hhciAqbG9naWNhbGRkbG1zZ19pZGVudGlm eSh1aW50OCBpbmZvKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi9kZWNvZGUuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2RlY29kZS5oCmluZGV4IDc0 MWJmNjUuLjQyN2E3YjkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2RlY29k ZS5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2RlY29kZS5oCkBAIC0yNyw2ICsyNyw3 IEBAIGV4dGVybiB2b2lkIGhlYXAyX2RlY29kZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgs IFhMb2dSZWNvcmRCdWZmZXIgKmJ1Zik7CiBleHRlcm4gdm9pZCB4YWN0X2RlY29kZShMb2dpY2Fs RGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1Zik7CiBleHRlcm4gdm9p ZCBzdGFuZGJ5X2RlY29kZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRC dWZmZXIgKmJ1Zik7CiBleHRlcm4gdm9pZCBsb2dpY2FsbXNnX2RlY29kZShMb2dpY2FsRGVjb2Rp bmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1Zik7CitleHRlcm4gdm9pZCBsb2dp Y2FsZGRsbXNnX2RlY29kZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRC dWZmZXIgKmJ1Zik7CiAKIGV4dGVybiB2b2lkIExvZ2ljYWxEZWNvZGluZ1Byb2Nlc3NSZWNvcmQo TG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCQkJCQkJCQkJCSBYTG9nUmVhZGVyU3RhdGUg KnJlY29yZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJv dG8uaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oCmluZGV4IGE3NzFh YjguLjJhYmNjYjggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxw cm90by5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oCkBAIC02 MSw2ICs2MSw3IEBAIHR5cGVkZWYgZW51bSBMb2dpY2FsUmVwTXNnVHlwZQogCUxPR0lDQUxfUkVQ X01TR19SRUxBVElPTiA9ICdSJywKIAlMT0dJQ0FMX1JFUF9NU0dfVFlQRSA9ICdZJywKIAlMT0dJ Q0FMX1JFUF9NU0dfTUVTU0FHRSA9ICdNJywKKwlMT0dJQ0FMX1JFUF9NU0dfRERMTUVTU0FHRSA9 ICdMJywKIAlMT0dJQ0FMX1JFUF9NU0dfQkVHSU5fUFJFUEFSRSA9ICdiJywKIAlMT0dJQ0FMX1JF UF9NU0dfUFJFUEFSRSA9ICdQJywKIAlMT0dJQ0FMX1JFUF9NU0dfQ09NTUlUX1BSRVBBUkVEID0g J0snLApAQCAtMjI5LDcgKzIzMCwxMSBAQCBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX3Ry dW5jYXRlKFN0cmluZ0luZm8gb3V0LCBUcmFuc2FjdGlvbklkIHhpZCwKIGV4dGVybiBMaXN0ICps b2dpY2FscmVwX3JlYWRfdHJ1bmNhdGUoU3RyaW5nSW5mbyBpbiwKIAkJCQkJCQkJCSAgYm9vbCAq Y2FzY2FkZSwgYm9vbCAqcmVzdGFydF9zZXFzKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd3Jp dGVfbWVzc2FnZShTdHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIg bHNuLAotCQkJCQkJCQkJIGJvb2wgdHJhbnNhY3Rpb25hbCwgY29uc3QgY2hhciAqcHJlZml4LCBT aXplIHN6LCBjb25zdCBjaGFyICptZXNzYWdlKTsKKwkJCQkJCQkJCSBib29sIHRyYW5zYWN0aW9u YWwsIGNvbnN0IGNoYXIgKnByZWZpeCwKKwkJCQkJCQkJCSBTaXplIHN6LCBjb25zdCBjaGFyICpt ZXNzYWdlKTsKK2V4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd3JpdGVfZGRsbWVzc2FnZShTdHJpbmdJ bmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuLAorCQkJCQkJCQkJCWNv bnN0IGNoYXIgKnByZWZpeCwgU2l6ZSBzeiwgY29uc3QgY2hhciAqbWVzc2FnZSk7CitleHRlcm4g Y2hhciAqbG9naWNhbHJlcF9yZWFkX2RkbG1lc3NhZ2UoU3RyaW5nSW5mbyBpbiwgWExvZ1JlY1B0 ciAqbHNuLCBjb25zdCBjaGFyICoqcHJlZml4LCBTaXplICpzeik7CiBleHRlcm4gdm9pZCBsb2dp Y2FscmVwX3dyaXRlX3JlbChTdHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsCiAJCQkJ CQkJCSBSZWxhdGlvbiByZWwsIEJpdG1hcHNldCAqY29sdW1ucyk7CiBleHRlcm4gTG9naWNhbFJl cFJlbGF0aW9uICpsb2dpY2FscmVwX3JlYWRfcmVsKFN0cmluZ0luZm8gaW4pOwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3V0cHV0X3BsdWdpbi5oIGIvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vb3V0cHV0X3BsdWdpbi5oCmluZGV4IDUzOWRjOGUuLjkzM2QyOTcgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL291dHB1dF9wbHVnaW4uaAorKysgYi9zcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi9vdXRwdXRfcGx1Z2luLmgKQEAgLTg5LDYgKzg5LDE4IEBAIHR5 cGVkZWYgdm9pZCAoKkxvZ2ljYWxEZWNvZGVNZXNzYWdlQ0IpIChzdHJ1Y3QgTG9naWNhbERlY29k aW5nQ29udGV4dCAqY3R4LAogCQkJCQkJCQkJCWNvbnN0IGNoYXIgKm1lc3NhZ2UpOwogCiAvKgor ICogQ2FsbGVkIGZvciB0aGUgbG9naWNhbCBkZWNvZGluZyBEREwgbWVzc2FnZXMuCisgKi8KK3R5 cGVkZWYgdm9pZCAoKkxvZ2ljYWxEZWNvZGVERExNZXNzYWdlQ0IpIChzdHJ1Y3QgTG9naWNhbERl Y29kaW5nQ29udGV4dCAqY3R4LAorCQkJCQkJCQkJCSAgIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwK KwkJCQkJCQkJCQkgICBYTG9nUmVjUHRyIG1lc3NhZ2VfbHNuLAorCQkJCQkJCQkJCSAgIGNvbnN0 IGNoYXIgKnByZWZpeCwKKwkJCQkJCQkJCQkgICBPaWQgcmVsaWQsCisJCQkJCQkJCQkJICAgRGVw YXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlLAorCQkJCQkJCQkJCSAgIFNpemUgbWVzc2FnZV9zaXpl LAorCQkJCQkJCQkJCSAgIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOworCisvKgogICogRmlsdGVyIGNo YW5nZXMgYnkgb3JpZ2luLgogICovCiB0eXBlZGVmIGJvb2wgKCpMb2dpY2FsRGVjb2RlRmlsdGVy QnlPcmlnaW5DQikgKHN0cnVjdCBMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCkBAIC0yMDAs NiArMjEyLDE5IEBAIHR5cGVkZWYgdm9pZCAoKkxvZ2ljYWxEZWNvZGVTdHJlYW1NZXNzYWdlQ0Ip IChzdHJ1Y3QgTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4CiAJCQkJCQkJCQkJCSAgY29uc3Qg Y2hhciAqbWVzc2FnZSk7CiAKIC8qCisgKiBDYWxsYmFjayBmb3Igc3RyZWFtaW5nIGxvZ2ljYWwg ZGVjb2RpbmcgRERMIG1lc3NhZ2VzIGZyb20gaW4tcHJvZ3Jlc3MKKyAqIHRyYW5zYWN0aW9ucy4K KyAqLwordHlwZWRlZiB2b2lkICgqTG9naWNhbERlY29kZVN0cmVhbURETE1lc3NhZ2VDQikgKHN0 cnVjdCBMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCisJCQkJCQkJCQkJCQkgUmVvcmRlckJ1 ZmZlclRYTiAqdHhuLAorCQkJCQkJCQkJCQkJIFhMb2dSZWNQdHIgbWVzc2FnZV9sc24sCisJCQkJ CQkJCQkJCQkgY29uc3QgY2hhciAqcHJlZml4LAorCQkJCQkJCQkJCQkJIE9pZCByZWxpZCwKKwkJ CQkJCQkJCQkJCSBEZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5cGUsCisJCQkJCQkJCQkJCQkgU2l6 ZSBtZXNzYWdlX3NpemUsCisJCQkJCQkJCQkJCQkgY29uc3QgY2hhciAqbWVzc2FnZSk7CisKKy8q CiAgKiBDYWxsYmFjayBmb3Igc3RyZWFtaW5nIHRydW5jYXRlcyBmcm9tIGluLXByb2dyZXNzIHRy YW5zYWN0aW9ucy4KICAqLwogdHlwZWRlZiB2b2lkICgqTG9naWNhbERlY29kZVN0cmVhbVRydW5j YXRlQ0IpIChzdHJ1Y3QgTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LApAQCAtMjE5LDYgKzI0 NCw3IEBAIHR5cGVkZWYgc3RydWN0IE91dHB1dFBsdWdpbkNhbGxiYWNrcwogCUxvZ2ljYWxEZWNv ZGVUcnVuY2F0ZUNCIHRydW5jYXRlX2NiOwogCUxvZ2ljYWxEZWNvZGVDb21taXRDQiBjb21taXRf Y2I7CiAJTG9naWNhbERlY29kZU1lc3NhZ2VDQiBtZXNzYWdlX2NiOworCUxvZ2ljYWxEZWNvZGVE RExNZXNzYWdlQ0IgZGRsbWVzc2FnZV9jYjsKIAlMb2dpY2FsRGVjb2RlRmlsdGVyQnlPcmlnaW5D QiBmaWx0ZXJfYnlfb3JpZ2luX2NiOwogCUxvZ2ljYWxEZWNvZGVTaHV0ZG93bkNCIHNodXRkb3du X2NiOwogCkBAIC0yMzcsNiArMjYzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgT3V0cHV0UGx1Z2luQ2Fs bGJhY2tzCiAJTG9naWNhbERlY29kZVN0cmVhbUNvbW1pdENCIHN0cmVhbV9jb21taXRfY2I7CiAJ TG9naWNhbERlY29kZVN0cmVhbUNoYW5nZUNCIHN0cmVhbV9jaGFuZ2VfY2I7CiAJTG9naWNhbERl Y29kZVN0cmVhbU1lc3NhZ2VDQiBzdHJlYW1fbWVzc2FnZV9jYjsKKwlMb2dpY2FsRGVjb2RlU3Ry ZWFtRERMTWVzc2FnZUNCIHN0cmVhbV9kZGxtZXNzYWdlX2NiOwogCUxvZ2ljYWxEZWNvZGVTdHJl YW1UcnVuY2F0ZUNCIHN0cmVhbV90cnVuY2F0ZV9jYjsKIH0gT3V0cHV0UGx1Z2luQ2FsbGJhY2tz OwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9wZ291dHB1dC5oIGIvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vcGdvdXRwdXQuaAppbmRleCBlYWZlZGQ2Li44ZWJjYzEyIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9wZ291dHB1dC5oCisrKyBiL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmgKQEAgLTI1LDYgKzI1LDcgQEAgdHlwZWRlZiBz dHJ1Y3QgUEdPdXRwdXREYXRhCiAJdWludDMyCQlwcm90b2NvbF92ZXJzaW9uOwogCUxpc3QJICAg KnB1YmxpY2F0aW9uX25hbWVzOwogCUxpc3QJICAgKnB1YmxpY2F0aW9uczsKKwlMaXN0CSAgICpk ZWxldGVkX3JlbGlkczsKIAlib29sCQliaW5hcnk7CiAJYm9vbAkJc3RyZWFtaW5nOwogCWJvb2wJ CW1lc3NhZ2VzOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1 ZmZlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oCmluZGV4IDRh MDFmODcuLjM2NjQ4NzMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3Jk ZXJidWZmZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgK QEAgLTExLDYgKzExLDggQEAKIAogI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKICNp bmNsdWRlICJsaWIvaWxpc3QuaCIKKyNpbmNsdWRlICJub2Rlcy9ub2Rlcy5oIgorI2luY2x1ZGUg InJlcGxpY2F0aW9uL2RkbG1lc3NhZ2UuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NpbnZhbC5oIgog I2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIKICNpbmNsdWRlICJ1dGlscy9yZWxjYWNoZS5oIgpA QCAtNTYsNiArNTgsNyBAQCB0eXBlZGVmIGVudW0gUmVvcmRlckJ1ZmZlckNoYW5nZVR5cGUKIAlS RU9SREVSX0JVRkZFUl9DSEFOR0VfSU5TRVJULAogCVJFT1JERVJfQlVGRkVSX0NIQU5HRV9VUERB VEUsCiAJUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX0RFTEVURSwKKwlSRU9SREVSX0JVRkZFUl9DSEFO R0VfRERMTUVTU0FHRSwKIAlSRU9SREVSX0JVRkZFUl9DSEFOR0VfTUVTU0FHRSwKIAlSRU9SREVS X0JVRkZFUl9DSEFOR0VfSU5WQUxJREFUSU9OLAogCVJFT1JERVJfQlVGRkVSX0NIQU5HRV9JTlRF Uk5BTF9TTkFQU0hPVCwKQEAgLTEzMCw2ICsxMzMsMTYgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVvcmRl ckJ1ZmZlckNoYW5nZQogCQkJY2hhcgkgICAqbWVzc2FnZTsKIAkJfQkJCW1zZzsKIAorCQkvKiBE REwgTWVzc2FnZS4gKi8KKwkJc3RydWN0CisJCXsKKwkJCWNoYXIJICAgKnByZWZpeDsKKwkJCVNp emUJCW1lc3NhZ2Vfc2l6ZTsKKwkJCWNoYXIJICAgKm1lc3NhZ2U7CisJCQlPaWQJCQlyZWxpZDsK KwkJCU5vZGVUYWcJCWNtZHR5cGU7CisJCX0JCQlkZGxtc2c7CisKIAkJLyogTmV3IHNuYXBzaG90 LCBzZXQgd2hlbiBhY3Rpb24gPT0gKl9JTlRFUk5BTF9TTkFQU0hPVCAqLwogCQlTbmFwc2hvdAlz bmFwc2hvdDsKIApAQCAtNDMwLDYgKzQ0MywxNiBAQCB0eXBlZGVmIHZvaWQgKCpSZW9yZGVyQnVm ZmVyTWVzc2FnZUNCKSAoUmVvcmRlckJ1ZmZlciAqcmIsCiAJCQkJCQkJCQkJY29uc3QgY2hhciAq cHJlZml4LCBTaXplIHN6LAogCQkJCQkJCQkJCWNvbnN0IGNoYXIgKm1lc3NhZ2UpOwogCisvKiBE REwgbWVzc2FnZSBjYWxsYmFjayBzaWduYXR1cmUgKi8KK3R5cGVkZWYgdm9pZCAoKlJlb3JkZXJC dWZmZXJERExNZXNzYWdlQ0IpIChSZW9yZGVyQnVmZmVyICpyYiwKKwkJCQkJCQkJCQkgICBSZW9y ZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJCQkJCQkJICAgWExvZ1JlY1B0ciBtZXNzYWdlX2xzbiwK KwkJCQkJCQkJCQkgICBjb25zdCBjaGFyICpwcmVmaXgsCisJCQkJCQkJCQkJICAgT2lkIHJlbGlk LAorCQkJCQkJCQkJCSAgIERlcGFyc2VkQ29tbWFuZFR5cGUgY21kdHlwZSwKKwkJCQkJCQkJCQkg ICBTaXplIHN6LAorCQkJCQkJCQkJCSAgIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOworCiAvKiBiZWdp biBwcmVwYXJlIGNhbGxiYWNrIHNpZ25hdHVyZSAqLwogdHlwZWRlZiB2b2lkICgqUmVvcmRlckJ1 ZmZlckJlZ2luUHJlcGFyZUNCKSAoUmVvcmRlckJ1ZmZlciAqcmIsCiAJCQkJCQkJCQkJCSBSZW9y ZGVyQnVmZmVyVFhOICp0eG4pOwpAQCAtNDk2LDYgKzUxOSwxNyBAQCB0eXBlZGVmIHZvaWQgKCpS ZW9yZGVyQnVmZmVyU3RyZWFtTWVzc2FnZUNCKSAoCiAJCQkJCQkJCQkJCSAgY29uc3QgY2hhciAq cHJlZml4LCBTaXplIHN6LAogCQkJCQkJCQkJCQkgIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOwogCisv KiBzdHJlYW0gRERMIG1lc3NhZ2UgY2FsbGJhY2sgc2lnbmF0dXJlICovCit0eXBlZGVmIHZvaWQg KCpSZW9yZGVyQnVmZmVyU3RyZWFtRERMTWVzc2FnZUNCKSAoCisJCQkJCQkJCQkJCQkgUmVvcmRl ckJ1ZmZlciAqcmIsCisJCQkJCQkJCQkJCQkgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAorCQkJCQkJ CQkJCQkJIFhMb2dSZWNQdHIgbWVzc2FnZV9sc24sCisJCQkJCQkJCQkJCQkgY29uc3QgY2hhciAq cHJlZml4LAorCQkJCQkJCQkJCQkJIE9pZCByZWxpZCwKKwkJCQkJCQkJCQkJCSBEZXBhcnNlZENv bW1hbmRUeXBlIGNtZHR5cGUsCisJCQkJCQkJCQkJCQkgU2l6ZSBzeiwKKwkJCQkJCQkJCQkJCSBj b25zdCBjaGFyICptZXNzYWdlKTsKKwogLyogc3RyZWFtIHRydW5jYXRlIGNhbGxiYWNrIHNpZ25h dHVyZSAqLwogdHlwZWRlZiB2b2lkICgqUmVvcmRlckJ1ZmZlclN0cmVhbVRydW5jYXRlQ0IpICgK IAkJCQkJCQkJCQkJICAgUmVvcmRlckJ1ZmZlciAqcmIsCkBAIC01NDEsNiArNTc1LDcgQEAgc3Ry dWN0IFJlb3JkZXJCdWZmZXIKIAlSZW9yZGVyQnVmZmVyQXBwbHlUcnVuY2F0ZUNCIGFwcGx5X3Ry dW5jYXRlOwogCVJlb3JkZXJCdWZmZXJDb21taXRDQiBjb21taXQ7CiAJUmVvcmRlckJ1ZmZlck1l c3NhZ2VDQiBtZXNzYWdlOworCVJlb3JkZXJCdWZmZXJERExNZXNzYWdlQ0IgZGRsbWVzc2FnZTsK IAogCS8qCiAJICogQ2FsbGJhY2tzIHRvIGJlIGNhbGxlZCB3aGVuIHN0cmVhbWluZyBhIHRyYW5z YWN0aW9uIGF0IHByZXBhcmUgdGltZS4KQEAgLTU2MCw2ICs1OTUsNyBAQCBzdHJ1Y3QgUmVvcmRl ckJ1ZmZlcgogCVJlb3JkZXJCdWZmZXJTdHJlYW1Db21taXRDQiBzdHJlYW1fY29tbWl0OwogCVJl b3JkZXJCdWZmZXJTdHJlYW1DaGFuZ2VDQiBzdHJlYW1fY2hhbmdlOwogCVJlb3JkZXJCdWZmZXJT dHJlYW1NZXNzYWdlQ0Igc3RyZWFtX21lc3NhZ2U7CisJUmVvcmRlckJ1ZmZlclN0cmVhbURETE1l c3NhZ2VDQiBzdHJlYW1fZGRsbWVzc2FnZTsKIAlSZW9yZGVyQnVmZmVyU3RyZWFtVHJ1bmNhdGVD QiBzdHJlYW1fdHJ1bmNhdGU7CiAKIAkvKgpAQCAtNjM1LDYgKzY3MSw5IEBAIGV4dGVybiB2b2lk IFJlb3JkZXJCdWZmZXJRdWV1ZUNoYW5nZShSZW9yZGVyQnVmZmVyICosIFRyYW5zYWN0aW9uSWQs CiBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyUXVldWVNZXNzYWdlKFJlb3JkZXJCdWZmZXIgKiwg VHJhbnNhY3Rpb25JZCwgU25hcHNob3Qgc25hcHNob3QsIFhMb2dSZWNQdHIgbHNuLAogCQkJCQkJ CQkJICBib29sIHRyYW5zYWN0aW9uYWwsIGNvbnN0IGNoYXIgKnByZWZpeCwKIAkJCQkJCQkJCSAg U2l6ZSBtZXNzYWdlX3NpemUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOworZXh0ZXJuIHZvaWQgUmVv cmRlckJ1ZmZlclF1ZXVlRERMTWVzc2FnZShSZW9yZGVyQnVmZmVyICosIFRyYW5zYWN0aW9uSWQs IFhMb2dSZWNQdHIgbHNuLAorCQkJCQkJCQkJCSBjb25zdCBjaGFyICpwcmVmaXgsIFNpemUgbWVz c2FnZV9zaXplLAorCQkJCQkJCQkJCSBjb25zdCBjaGFyICptZXNzYWdlLCBPaWQgcmVsaWQsIERl cGFyc2VkQ29tbWFuZFR5cGUgY21kdHlwZSk7CiBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQ29t bWl0KFJlb3JkZXJCdWZmZXIgKiwgVHJhbnNhY3Rpb25JZCwKIAkJCQkJCQkJWExvZ1JlY1B0ciBj b21taXRfbHNuLCBYTG9nUmVjUHRyIGVuZF9sc24sCiAJCQkJCQkJCVRpbWVzdGFtcFR6IGNvbW1p dF90aW1lLCBSZXBPcmlnaW5JZCBvcmlnaW5faWQsIFhMb2dSZWNQdHIgb3JpZ2luX2xzbik7CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS90Y29wL2RlcGFyc2VfdXRpbGl0eS5oIGIvc3JjL2luY2x1 ZGUvdGNvcC9kZXBhcnNlX3V0aWxpdHkuaAppbmRleCA5NGRlMTNkLi5iNTMyOTRiIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS90Y29wL2RlcGFyc2VfdXRpbGl0eS5oCisrKyBiL3NyYy9pbmNsdWRl L3Rjb3AvZGVwYXJzZV91dGlsaXR5LmgKQEAgLTYyLDYgKzYyLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg Q29sbGVjdGVkQ29tbWFuZAogCQl7CiAJCQlPaWQJCQlvYmplY3RJZDsKIAkJCU9pZAkJCWNsYXNz SWQ7CisJCQlib29sCQlyZXdyaXRlOwogCQkJTGlzdAkgICAqc3ViY21kczsKIAkJfQkJCWFsdGVy VGFibGU7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNxbC5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0CmluZGV4IDJhMzhhOTMuLmIxOTIx Y2MgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNxbC5vdXQKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dApAQCAtNTk2OSw5ICs1OTY5LDkgQEAg TGlzdCBvZiBzY2hlbWFzCiAoMCByb3dzKQogCiBcZFJwICJuby5zdWNoLnB1YmxpY2F0aW9uIgot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBwdWJsaWNhdGlvbnMKLSBOYW1l IHwgT3duZXIgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBwdWJsaWNhdGlvbnMKKyBOYW1lIHwgT3duZXIg fCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg VmlhIHJvb3QgfCBERExzIAorLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tCiAoMCByb3dz KQogCiBcZFJzICJuby5zdWNoLnN1YnNjcmlwdGlvbiIKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9wdWJsaWNhdGlvbi5vdXQKaW5kZXggMjc0YjM3ZC4uMDliMTRlMCAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKQEAgLTMwLDIwICszMCwyMCBAQCBFUlJPUjog IGNvbmZsaWN0aW5nIG9yIHJlZHVuZGFudCBvcHRpb25zCiBMSU5FIDE6IC4uLnViX3h4eCBXSVRI IChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9ICd0cnVlJywgcHVibGlzaF92aS4uLgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF4KIFxkUnAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM aXN0IG9mIHB1YmxpY2F0aW9ucwotICAgICAgICBOYW1lICAgICAgICB8ICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBU cnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gdGVzdHBpYl9pbnNfdHJ1bmN0IHwgcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8 IGYgICAgICAgICB8IGYKLSB0ZXN0cHViX2RlZmF1bHQgICAgfCByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAg ICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMaXN0IG9mIHB1YmxpY2F0aW9ucworICAgICAgICBOYW1lICAgICAgICB8ICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMg fCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCB8IERETHMgCistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0KKyB0ZXN0cGliX2luc190cnVu Y3QgfCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IGYg ICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZiAgICAgICAgfCBmCisgdGVzdHB1Yl9kZWZh dWx0ICAgIHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAg fCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYgICAgICAgIHwgZgogKDIgcm93cykK IAogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9kZWZhdWx0IFNFVCAocHVibGlzaCA9ICdpbnNl cnQsIHVwZGF0ZSwgZGVsZXRlJyk7CiBcZFJwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTGlzdCBvZiBwdWJsaWNhdGlvbnMKLSAgICAgICAgTmFtZSAgICAg ICAgfCAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHRlc3RwaWJfaW5zX3Ry dW5jdCB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwg ZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCi0gdGVzdHB1Yl9kZWZhdWx0ICAgIHwg cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IGYgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBwdWJsaWNhdGlvbnMKKyAgICAgICAgTmFtZSAg ICAgICAgfCAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgfCBERExzIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0t CisgdGVzdHBpYl9pbnNfdHJ1bmN0IHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYgICAgICAg IHwgZgorIHRlc3RwdWJfZGVmYXVsdCAgICB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYg ICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgfCBmICAg ICAgICB8IGYKICgyIHJvd3MpCiAKIC0tLSBhZGRpbmcgdGFibGVzCkBAIC04NywxMCArODcsMTAg QEAgUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIC0tIHNob3VsZCBiZSBhYmxlIHRvIGFkZCBz Y2hlbWEgdG8gJ0ZPUiBUQUJMRScgcHVibGljYXRpb24KIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfZm9ydGFibGUgQUREIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OwogXGRScCsgdGVz dHB1Yl9mb3J0YWJsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlv biB0ZXN0cHViX2ZvcnRhYmxlCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViX2ZvcnRhYmxlCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IHwgRERM cyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLQorIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgICAgfCBmICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3Rw dWJfdGJsMSIKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CkBAIC05OSwyMCArOTksMjAgQEAgVGFibGVz IGZyb20gc2NoZW1hczoKIC0tIHNob3VsZCBiZSBhYmxlIHRvIGRyb3Agc2NoZW1hIGZyb20gJ0ZP UiBUQUJMRScgcHVibGljYXRpb24KIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGUg RFJPUCBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKIFxkUnArIHRlc3RwdWJfZm9ydGFi bGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9m b3J0YWJsZQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRz IHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAg ICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0 YWJsZQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwg VXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCB8IERETHMgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICAgIHwgZiAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3RibDEiCiAK IC0tIHNob3VsZCBiZSBhYmxlIHRvIHNldCBzY2hlbWEgdG8gJ0ZPUiBUQUJMRScgcHVibGljYXRp b24KIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGUgU0VUIEFMTCBUQUJMRVMgSU4g U0NIRU1BIHB1Yl90ZXN0OwogXGRScCsgdGVzdHB1Yl9mb3J0YWJsZQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxlCi0gICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxlCisgICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8 IFRydW5jYXRlcyB8IFZpYSByb290IHwgRERMcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tKy0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmICAgICAgICB8IGYK IFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0IgogCkBAIC0xMzQsMTAgKzEzNCwx MCBAQCBFUlJPUjogIHJlbGF0aW9uICJ0ZXN0cHViX25vcGsiIGlzIG5vdCBwYXJ0IG9mIHRoZSBw dWJsaWNhdGlvbgogLS0gc2hvdWxkIGJlIGFibGUgdG8gc2V0IHRhYmxlIHRvIHNjaGVtYSBwdWJs aWNhdGlvbgogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEgU0VUIFRBQkxFIHB1 Yl90ZXN0LnRlc3RwdWJfbm9wazsKIFxkUnArIHRlc3RwdWJfZm9yc2NoZW1hCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JzY2hlbWEKLSAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yc2NoZW1hCisgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IHwgRERMcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmICAgICAg ICB8IGYKIFRhYmxlczoKICAgICAicHViX3Rlc3QudGVzdHB1Yl9ub3BrIgogCkBAIC0xNTksMTAg KzE1OSwxMCBAQCBQdWJsaWNhdGlvbnM6CiAgICAgInRlc3RwdWJfZm9yYWxsdGFibGVzIgogCiBc ZFJwKyB0ZXN0cHViX2ZvcmFsbHRhYmxlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UHVibGljYXRpb24gdGVzdHB1Yl9mb3JhbGx0YWJsZXMKLSAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IHQgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYg ICAgICAgfCBmICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ dWJsaWNhdGlvbiB0ZXN0cHViX2ZvcmFsbHRhYmxlcworICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMg fCBWaWEgcm9vdCB8IERETHMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSst LS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZiAgICAgICAgfCBmCiAoMSByb3cpCiAK IERST1AgVEFCTEUgdGVzdHB1Yl90YmwyOwpAQCAtMTc0LDE5ICsxNzQsMTkgQEAgQ1JFQVRFIFBV QkxJQ0FUSU9OIHRlc3RwdWIzIEZPUiBUQUJMRSB0ZXN0cHViX3RibDM7CiBDUkVBVEUgUFVCTElD QVRJT04gdGVzdHB1YjQgRk9SIFRBQkxFIE9OTFkgdGVzdHB1Yl90YmwzOwogUkVTRVQgY2xpZW50 X21pbl9tZXNzYWdlczsKIFxkUnArIHRlc3RwdWIzCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMwotICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMg fCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIzCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSBy b290IHwgRERMcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLQor IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVi bGljLnRlc3RwdWJfdGJsMyIKICAgICAicHVibGljLnRlc3RwdWJfdGJsM2EiCiAKIFxkUnArIHRl c3RwdWI0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViNAotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRz IHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAg ICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI0 CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRh dGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IHwgRERMcyAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAg fCBmICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfdGJsMyIKIApAQCAt MjA3LDEwICsyMDcsMTAgQEAgVVBEQVRFIHRlc3RwdWJfcGFydGVkMSBTRVQgYSA9IDE7CiAtLSBv bmx5IHBhcmVudCBpcyBsaXN0ZWQgYXMgYmVpbmcgaW4gcHVibGljYXRpb24sIG5vdCB0aGUgcGFy dGl0aW9uCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnBhcnRlZCBBREQgVEFCTEUgdGVz dHB1Yl9wYXJ0ZWQ7CiBcZFJwKyB0ZXN0cHViX2ZvcnBhcnRlZAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ycGFydGVkCi0gICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8 IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnBhcnRlZAorICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBU cnVuY2F0ZXMgfCBWaWEgcm9vdCB8IERETHMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLSstLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZiAgICAgICAgfCBmCiBU YWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3BhcnRlZCIKIApAQCAtMjIzLDEwICsyMjMsMTAg QEAgQUxURVIgVEFCTEUgdGVzdHB1Yl9wYXJ0ZWQgREVUQUNIIFBBUlRJVElPTiB0ZXN0cHViX3Bh cnRlZDE7CiBVUERBVEUgdGVzdHB1Yl9wYXJ0ZWQxIFNFVCBhID0gMTsKIEFMVEVSIFBVQkxJQ0FU SU9OIHRlc3RwdWJfZm9ycGFydGVkIFNFVCAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSB0 cnVlKTsKIFxkUnArIHRlc3RwdWJfZm9ycGFydGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JwYXJ0ZWQKLSAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNh dGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgICAgfCB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ycGFydGVkCisgICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRl cyB8IFZpYSByb290IHwgRERMcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICB8IGYKIFRhYmxlczoK ICAgICAicHVibGljLnRlc3RwdWJfcGFydGVkIgogCkBAIC0yNTUsMTAgKzI1NSwxMCBAQCBTRVQg Y2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1 YjUgRk9SIFRBQkxFIHRlc3RwdWJfcmZfdGJsMSwgdGVzdHB1Yl9yZl90YmwyIFdIRVJFIChjIDw+ ICd0ZXN0JyBBTkQgZCA8IDUpIFdJVEggKHB1Ymxpc2ggPSAnaW5zZXJ0Jyk7CiBSRVNFVCBjbGll bnRfbWluX21lc3NhZ2VzOwogXGRScCsgdGVzdHB1YjUKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI1Ci0gICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRl cyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBm ICAgICAgIHwgZiAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHVibGljYXRpb24gdGVzdHB1YjUKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlh IHJvb3QgfCBERExzIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0t CisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCBmICAg ICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYgICAgICAgIHwgZgogVGFibGVzOgogICAgICJw dWJsaWMudGVzdHB1Yl9yZl90YmwxIgogICAgICJwdWJsaWMudGVzdHB1Yl9yZl90YmwyIiBXSEVS RSAoKGMgPD4gJ3Rlc3QnOjp0ZXh0KSBBTkQgKGQgPCA1KSkKQEAgLTI3MSwxMCArMjcxLDEwIEBA IFRhYmxlczoKIAogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjUgQUREIFRBQkxFIHRlc3RwdWJf cmZfdGJsMyBXSEVSRSAoZSA+IDEwMDAgQU5EIGUgPCAyMDAwKTsKIFxkUnArIHRlc3RwdWI1Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNQot ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRl cyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8 IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI1CisgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IHwgRERMcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAg ICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmICAgICAg ICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfcmZfdGJsMSIKICAgICAicHVibGlj LnRlc3RwdWJfcmZfdGJsMiIgV0hFUkUgKChjIDw+ICd0ZXN0Jzo6dGV4dCkgQU5EIChkIDwgNSkp CkBAIC0yOTAsMTAgKzI5MCwxMCBAQCBQdWJsaWNhdGlvbnM6CiAKIEFMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWI1IERST1AgVEFCTEUgdGVzdHB1Yl9yZl90YmwyOwogXGRScCsgdGVzdHB1YjUKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI1Ci0g ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwg dCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjUKKyAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgfCBERExzIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0rLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYgICAgICAg IHwgZgogVGFibGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl9yZl90YmwxIgogICAgICJwdWJsaWMu dGVzdHB1Yl9yZl90YmwzIiBXSEVSRSAoKGUgPiAxMDAwKSBBTkQgKGUgPCAyMDAwKSkKQEAgLTMw MSwxMCArMzAxLDEwIEBAIFRhYmxlczoKIC0tIHJlbW92ZSB0ZXN0cHViX3JmX3RibDEgYW5kIGFk ZCB0ZXN0cHViX3JmX3RibDMgYWdhaW4gKGFub3RoZXIgV0hFUkUgZXhwcmVzc2lvbikKIEFMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWI1IFNFVCBUQUJMRSB0ZXN0cHViX3JmX3RibDMgV0hFUkUgKGUg PiAzMDAgQU5EIGUgPCA1MDApOwogXGRScCsgdGVzdHB1YjUKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI1Ci0gICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAg fCBmICAgICAgIHwgZiAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjUKKyAgICAgICAgICBPd25lciAgICAgICAgICAg fCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg VmlhIHJvb3QgfCBERExzIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0t LS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCBm ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYgICAgICAgIHwgZgogVGFibGVzOgogICAg ICJwdWJsaWMudGVzdHB1Yl9yZl90YmwzIiBXSEVSRSAoKGUgPiAzMDApIEFORCAoZSA8IDUwMCkp CiAKQEAgLTMzNywxMCArMzM3LDEwIEBAIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9S JzsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX3N5bnRheDEgRk9SIFRBQkxFIHRlc3RwdWJf cmZfdGJsMSwgT05MWSB0ZXN0cHViX3JmX3RibDMgV0hFUkUgKGUgPCA5OTkpIFdJVEggKHB1Ymxp c2ggPSAnaW5zZXJ0Jyk7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogXGRScCsgdGVzdHB1 Yl9zeW50YXgxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRl c3RwdWJfc3ludGF4MQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJ bnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8 IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3Rw dWJfc3ludGF4MQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCB8IERETHMgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0KKyByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwg ZiAgICAgICAgIHwgZiAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3Jm X3RibDEiCiAgICAgInB1YmxpYy50ZXN0cHViX3JmX3RibDMiIFdIRVJFIChlIDwgOTk5KQpAQCAt MzUwLDEwICszNTAsMTAgQEAgU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JF QVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc3ludGF4MiBGT1IgVEFCTEUgdGVzdHB1Yl9yZl90Ymwx LCB0ZXN0cHViX3JmX3NjaGVtYTEudGVzdHB1Yl9yZl90Ymw1IFdIRVJFIChoIDwgOTk5KSBXSVRI IChwdWJsaXNoID0gJ2luc2VydCcpOwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIFxkUnAr IHRlc3RwdWJfc3ludGF4MgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViX3N5bnRheDIKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAg ICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlv biB0ZXN0cHViX3N5bnRheDIKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgfCBE RExzIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tCisgcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAg ICAgICB8IGYgICAgICAgICB8IGYgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJsaWMudGVz dHB1Yl9yZl90YmwxIgogICAgICJ0ZXN0cHViX3JmX3NjaGVtYTEudGVzdHB1Yl9yZl90Ymw1IiBX SEVSRSAoaCA8IDk5OSkKQEAgLTY3NiwxMCArNjc2LDEwIEBAIENSRUFURSBQVUJMSUNBVElPTiB0 ZXN0cHViX3RhYmxlX2lucyBXSVRIIChwdWJsaXNoID0gJ2luc2VydCwgdHJ1bmNhdGUnKTsKIFJF U0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3RhYmxl X2lucyBBREQgVEFCTEUgdGVzdHB1Yl90Ymw1IChhKTsJCS0tIG9rCiBcZFJwKyB0ZXN0cHViX3Rh YmxlX2lucwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3Rw dWJfdGFibGVfaW5zCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIg fCBmICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgdCAgICAgICAgIHwg ZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHVi X3RhYmxlX2lucworICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCB8IERETHMgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0KKyByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwg dCAgICAgICAgIHwgZiAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3Ri bDUiIChhKQogCkBAIC04MjEsMTAgKzgyMSwxMCBAQCBDUkVBVEUgVEFCTEUgdGVzdHB1Yl90Ymxf Ym90aF9maWx0ZXJzIChhIGludCwgYiBpbnQsIGMgaW50LCBQUklNQVJZIEtFWSAoYSxjKSk7CiBB TFRFUiBUQUJMRSB0ZXN0cHViX3RibF9ib3RoX2ZpbHRlcnMgUkVQTElDQSBJREVOVElUWSBVU0lO RyBJTkRFWCB0ZXN0cHViX3RibF9ib3RoX2ZpbHRlcnNfcGtleTsKIEFMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWJfYm90aF9maWx0ZXJzIEFERCBUQUJMRSB0ZXN0cHViX3RibF9ib3RoX2ZpbHRlcnMg KGEsYykgV0hFUkUgKGMgIT0gMSk7CiBcZFJwKyB0ZXN0cHViX2JvdGhfZmlsdGVycwotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9ib3RoX2ZpbHRlcnMK LSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0 ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2JvdGhfZmlsdGVycwor ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRl cyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCB8IERETHMgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIg fCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwg ZiAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3RibF9ib3RoX2ZpbHRl cnMiIChhLCBjKSBXSEVSRSAoYyA8PiAxKQogCkBAIC0xMDI5LDEwICsxMDI5LDEwIEBAIEVSUk9S OiAgcmVsYXRpb24gInRlc3RwdWJfdGJsMSIgaXMgYWxyZWFkeSBtZW1iZXIgb2YgcHVibGljYXRp b24gInRlc3RwdWJfZm9ydGJsCiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YmwgRk9S IFRBQkxFIHRlc3RwdWJfdGJsMTsKIEVSUk9SOiAgcHVibGljYXRpb24gInRlc3RwdWJfZm9ydGJs IiBhbHJlYWR5IGV4aXN0cwogXGRScCsgdGVzdHB1Yl9mb3J0YmwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ydGJsCi0gICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8 IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YmwKKyAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgfCBERExzIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYgICAgICAgIHwgZgogVGFi bGVzOgogICAgICJwdWJfdGVzdC50ZXN0cHViX25vcGsiCiAgICAgInB1YmxpYy50ZXN0cHViX3Ri bDEiCkBAIC0xMDcwLDEwICsxMDcwLDEwIEBAIFB1YmxpY2F0aW9uczoKICAgICAidGVzdHB1Yl9m b3J0YmwiCiAKIFxkUnArIHRlc3RwdWJfZGVmYXVsdAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2RlZmF1bHQKLSAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNh dGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCBmICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2RlZmF1bHQKKyAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgVmlhIHJvb3QgfCBERExzIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0r LS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICB8IGYgICAgICAgIHwgZgogVGFibGVzOgog ICAgICJwdWJfdGVzdC50ZXN0cHViX25vcGsiCiAgICAgInB1YmxpYy50ZXN0cHViX3RibDEiCkBA IC0xMTUxLDEwICsxMTUxLDEwIEBAIFJFVk9LRSBDUkVBVEUgT04gREFUQUJBU0UgcmVncmVzc2lv biBGUk9NIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlcjI7CiBEUk9QIFRBQkxFIHRlc3RwdWJfcGFy dGVkOwogRFJPUCBUQUJMRSB0ZXN0cHViX3RibDE7CiBcZFJwKyB0ZXN0cHViX2RlZmF1bHQKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9kZWZhdWx0 Ci0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRh dGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgIHwgZgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9kZWZhdWx0Cisg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IHwgRERMcyAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgfCBm ICAgICAgICB8IGYKICgxIHJvdykKIAogLS0gZmFpbCAtIG11c3QgYmUgb3duZXIgb2YgcHVibGlj YXRpb24KQEAgLTExNjQsMjAgKzExNjQsMjAgQEAgRVJST1I6ICBtdXN0IGJlIG93bmVyIG9mIHB1 YmxpY2F0aW9uIHRlc3RwdWJfZGVmYXVsdAogUkVTRVQgUk9MRTsKIEFMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWJfZGVmYXVsdCBSRU5BTUUgVE8gdGVzdHB1Yl9mb287CiBcZFJwIHRlc3RwdWJfZm9v Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBwdWJs aWNhdGlvbnMKLSAgICBOYW1lICAgICB8ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0 YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9v dCAKLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSB0 ZXN0cHViX2ZvbyB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBwdWJsaWNhdGlvbnMKKyAgICBO YW1lICAgICB8ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRz IHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCB8IERETHMgCistLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLQorIHRl c3RwdWJfZm9vIHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICB8IGYgICAgICAgIHwgZgogKDEgcm93 KQogCiAtLSByZW5hbWUgYmFjayB0byBrZWVwIHRoZSByZXN0IHNpbXBsZQogQUxURVIgUFVCTElD QVRJT04gdGVzdHB1Yl9mb28gUkVOQU1FIFRPIHRlc3RwdWJfZGVmYXVsdDsKIEFMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfZGVmYXVsdCBPV05FUiBUTyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIy OwogXGRScCB0ZXN0cHViX2RlZmF1bHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8 IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHRlc3RwdWJfZGVmYXVsdCB8IHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlcjIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgZiAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCisgICAgICBOYW1lICAgICAgIHwg ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRl cyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCB8IERETHMgCistLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tCisgdGVzdHB1 Yl9kZWZhdWx0IHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyMiB8IGYgICAgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgfCBmICAgICAgICB8IGYKICgxIHJv dykKIAogLS0gYWRkaW5nIHNjaGVtYXMgYW5kIHRhYmxlcwpAQCAtMTE5MywxOSArMTE5MywxOSBA QCBDUkVBVEUgVEFCTEUgIkNVUlJFTlRfU0NIRU1BIi4iQ1VSUkVOVF9TQ0hFTUEiKGlkIGludCk7 CiBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CiBDUkVBVEUgUFVCTElDQVRJT04g dGVzdHB1YjFfZm9yc2NoZW1hIEZPUiBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDE7CiBc ZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ dWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAg fCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg VmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZp YSByb290IHwgRERMcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0t LQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNj aGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKIAogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWIyX2Zv cnNjaGVtYSBGT1IgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxLCBwdWJfdGVzdDIsIHB1 Yl90ZXN0MzsKIFxkUnArIHRlc3RwdWIyX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIyX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBU cnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ci0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMl9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgfCBERExzIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYgICAgICAgIHwgZgogVGFi bGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogICAgICJwdWJfdGVzdDIiCkBAIC0x MjE5LDQ0ICsxMjE5LDQ0IEBAIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNl9mb3JzY2hlbWEg Rk9SIEFMTCBUQUJMRVMgSU4gU0NIRU1BICJDVVJSRU5UX1NDSEVNQSIsCiBDUkVBVEUgUFVCTElD QVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBGT1IgVEFCTEUgIkNVUlJFTlRfU0NIRU1BIi4iQ1VSUkVO VF9TQ0hFTUEiOwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIFxkUnArIHRlc3RwdWIzX2Zv cnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3Rw dWIzX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJ bnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8 IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHVi M19mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5z ZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgfCBERExzIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tCisgcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgICB8IGYgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHVi bGljIgogCiBcZFJwKyB0ZXN0cHViNF9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNF9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQot IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHVibGljYXRpb24gdGVzdHB1YjRfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IFZpYSByb290IHwgRERMcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tKy0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmICAgICAgICB8IGYKIFRhYmxl cyBmcm9tIHNjaGVtYXM6CiAgICAgIkNVUlJFTlRfU0NIRU1BIgogCiBcZFJwKyB0ZXN0cHViNV9m b3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0 cHViNV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwg SW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAg fCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 YjVfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IHwgRERMcyAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLQorIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgICAgfCBmICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgIkNV UlJFTlRfU0NIRU1BIgogICAgICJwdWJsaWMiCiAKIFxkUnArIHRlc3RwdWI2X2ZvcnNjaGVtYQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI2X2ZvcnNj aGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwg VXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNl9mb3JzY2hl bWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgfCBERExzIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg ICB8IGYgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAiQ1VSUkVOVF9TQ0hF TUEiCiAgICAgInB1YmxpYyIKIAogXGRScCsgdGVzdHB1Yl9mb3J0YWJsZQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxlCi0gICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxlCisgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IFZpYSByb290IHwgRERMcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tKy0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmICAgICAgICB8 IGYKIFRhYmxlczoKICAgICAiQ1VSUkVOVF9TQ0hFTUEuQ1VSUkVOVF9TQ0hFTUEiCiAKQEAgLTEy OTAsMTAgKzEyOTAsMTAgQEAgRVJST1I6ICBzY2hlbWEgInRlc3RwdWJfdmlldyIgZG9lcyBub3Qg ZXhpc3QKIC0tIGRyb3BwaW5nIHRoZSBzY2hlbWEgc2hvdWxkIHJlZmxlY3QgdGhlIGNoYW5nZSBp biBwdWJsaWNhdGlvbgogRFJPUCBTQ0hFTUEgcHViX3Rlc3QzOwogXGRScCsgdGVzdHB1YjJfZm9y c2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 YjJfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIg fCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwg ZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIy X2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCB8IERETHMgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0KKyByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICAgIHwgZiAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJf dGVzdDEiCiAgICAgInB1Yl90ZXN0MiIKQEAgLTEzMDEsMjAgKzEzMDEsMjAgQEAgVGFibGVzIGZy b20gc2NoZW1hczoKIC0tIHJlbmFtaW5nIHRoZSBzY2hlbWEgc2hvdWxkIHJlZmxlY3QgdGhlIGNo YW5nZSBpbiBwdWJsaWNhdGlvbgogQUxURVIgU0NIRU1BIHB1Yl90ZXN0MSBSRU5BTUUgdG8gcHVi X3Rlc3QxX3JlbmFtZWQ7CiBcZFJwKyB0ZXN0cHViMl9mb3JzY2hlbWEKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMl9mb3JzY2hlbWEKLSAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjJfZm9yc2NoZW1hCisgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IFZpYSByb290IHwgRERMcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tKy0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmICAgICAgICB8 IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MV9yZW5hbWVkIgogICAgICJw dWJfdGVzdDIiCiAKIEFMVEVSIFNDSEVNQSBwdWJfdGVzdDFfcmVuYW1lZCBSRU5BTUUgdG8gcHVi X3Rlc3QxOwogXGRScCsgdGVzdHB1YjJfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjJfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRy dW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0K LSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIyX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVu Y2F0ZXMgfCBWaWEgcm9vdCB8IERETHMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLSstLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZiAgICAgICAgfCBmCiBUYWJs ZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAgICAgInB1Yl90ZXN0MiIKQEAgLTEz MjIsMTAgKzEzMjIsMTAgQEAgVGFibGVzIGZyb20gc2NoZW1hczoKIC0tIGFsdGVyIHB1YmxpY2F0 aW9uIGFkZCBzY2hlbWEKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVtYSBBREQg QUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QyOwogXGRScCsgdGVzdHB1YjFfZm9yc2NoZW1h Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9y c2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAg ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNj aGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwg VXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCB8IERETHMgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICAgIHwgZiAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEi CiAgICAgInB1Yl90ZXN0MiIKQEAgLTEzMzQsMTAgKzEzMzQsMTAgQEAgVGFibGVzIGZyb20gc2No ZW1hczoKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVtYSBBREQgQUxMIFRBQkxF UyBJTiBTQ0hFTUEgbm9uX2V4aXN0ZW50X3NjaGVtYTsKIEVSUk9SOiAgc2NoZW1hICJub25fZXhp c3RlbnRfc2NoZW1hIiBkb2VzIG5vdCBleGlzdAogXGRScCsgdGVzdHB1YjFfZm9yc2NoZW1hCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2No ZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBV cGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVt YQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBk YXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCB8IERETHMgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAg IHwgZiAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAg ICAgInB1Yl90ZXN0MiIKQEAgLTEzNDYsMTAgKzEzNDYsMTAgQEAgVGFibGVzIGZyb20gc2NoZW1h czoKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVtYSBBREQgQUxMIFRBQkxFUyBJ TiBTQ0hFTUEgcHViX3Rlc3QxOwogRVJST1I6ICBzY2hlbWEgInB1Yl90ZXN0MSIgaXMgYWxyZWFk eSBtZW1iZXIgb2YgcHVibGljYXRpb24gInRlc3RwdWIxX2ZvcnNjaGVtYSIKIFxkUnArIHRlc3Rw dWIxX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9u IHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJs ZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAK LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViMV9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgfCBE RExzIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tCisgcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgICB8IGYgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAg ICAicHViX3Rlc3QxIgogICAgICJwdWJfdGVzdDIiCkBAIC0xMzU3LDEwICsxMzU3LDEwIEBAIFRh YmxlcyBmcm9tIHNjaGVtYXM6CiAtLSBhbHRlciBwdWJsaWNhdGlvbiBkcm9wIHNjaGVtYQogQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIERST1AgQUxMIFRBQkxFUyBJTiBTQ0hF TUEgcHViX3Rlc3QyOwogXGRScCsgdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMg fCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCB8IERETHMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZiAgICAgICAgfCBm CiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAKQEAgLTEzNjgsMTAgKzEz NjgsMTAgQEAgVGFibGVzIGZyb20gc2NoZW1hczoKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIx X2ZvcnNjaGVtYSBEUk9QIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MjsKIEVSUk9SOiAg dGFibGVzIGZyb20gc2NoZW1hICJwdWJfdGVzdDIiIGFyZSBub3QgcGFydCBvZiB0aGUgcHVibGlj YXRpb24KIFxkUnArIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVu Y2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0g cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNh dGVzIHwgVmlhIHJvb3QgfCBERExzIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYgICAgICAgIHwgZgogVGFibGVz IGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogCkBAIC0xMzc5LDI5ICsxMzc5LDI5IEBA IFRhYmxlcyBmcm9tIHNjaGVtYXM6CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hl bWEgRFJPUCBBTEwgVEFCTEVTIElOIFNDSEVNQSBub25fZXhpc3RlbnRfc2NoZW1hOwogRVJST1I6 ICBzY2hlbWEgIm5vbl9leGlzdGVudF9zY2hlbWEiIGRvZXMgbm90IGV4aXN0CiBcZFJwKyB0ZXN0 cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlv biB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1YjFfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IHwg RERMcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLQorIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgICAgfCBmICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAg ICAgInB1Yl90ZXN0MSIKIAogLS0gZHJvcCBhbGwgc2NoZW1hcwogQUxURVIgUFVCTElDQVRJT04g dGVzdHB1YjFfZm9yc2NoZW1hIERST1AgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxOwog XGRScCsgdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAg IHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8 IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBW aWEgcm9vdCB8IERETHMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0t LS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZiAgICAgICAgfCBmCiAoMSByb3cpCiAKIC0t IGFsdGVyIHB1YmxpY2F0aW9uIHNldCBtdWx0aXBsZSBzY2hlbWEKIEFMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWIxX2ZvcnNjaGVtYSBTRVQgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxLCBw dWJfdGVzdDI7CiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRy dW5jYXRlcyB8IFZpYSByb290IHwgRERMcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmICAgICAgICB8IGYKIFRh YmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKICAgICAicHViX3Rlc3QyIgpAQCAt MTQxMCwxMCArMTQxMCwxMCBAQCBUYWJsZXMgZnJvbSBzY2hlbWFzOgogQUxURVIgUFVCTElDQVRJ T04gdGVzdHB1YjFfZm9yc2NoZW1hIFNFVCBBTEwgVEFCTEVTIElOIFNDSEVNQSBub25fZXhpc3Rl bnRfc2NoZW1hOwogRVJST1I6ICBzY2hlbWEgIm5vbl9leGlzdGVudF9zY2hlbWEiIGRvZXMgbm90 IGV4aXN0CiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQot IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IFZpYSByb290IHwgRERMcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tKy0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmICAgICAgICB8IGYKIFRhYmxl cyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKICAgICAicHViX3Rlc3QyIgpAQCAtMTQy MiwxMCArMTQyMiwxMCBAQCBUYWJsZXMgZnJvbSBzY2hlbWFzOgogLS0gcmVtb3ZpbmcgdGhlIGR1 cGxpY2F0ZSBzY2hlbWFzCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgU0VU IEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MSwgcHViX3Rlc3QxOwogXGRScCsgdGVzdHB1 YjFfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRl c3RwdWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCB8IERE THMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0KKyByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICAgIHwgZiAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAg ICJwdWJfdGVzdDEiCiAKQEAgLTE1MDQsMTggKzE1MDQsMTggQEAgU0VUIGNsaWVudF9taW5fbWVz c2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWIzX2ZvcnNjaGVtYTsK IFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBcZFJwKyB0ZXN0cHViM19mb3JzY2hlbWEKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViM19mb3JzY2hl bWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjNfZm9yc2NoZW1h CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRh dGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IHwgRERMcyAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAg fCBmICAgICAgICB8IGYKICgxIHJvdykKIAogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjNfZm9y c2NoZW1hIFNFVCBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDE7CiBcZFJwKyB0ZXN0cHVi M19mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViM19mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25f dXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg ICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1YjNfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IHwgRERM cyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLQorIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgICAgfCBmICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAg InB1Yl90ZXN0MSIKIApAQCAtMTUyNSwyMCArMTUyNSwyMCBAQCBDUkVBVEUgUFVCTElDQVRJT04g dGVzdHB1Yl9mb3JzY2hlbWFfZm9ydGFibGUgRk9SIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90 ZXN0MQogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGVfZm9yc2NoZW1hIEZPUiBU QUJMRSBwdWJfdGVzdDIudGJsMSwgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxOwogUkVT RVQgY2xpZW50X21pbl9tZXNzYWdlczsKIFxkUnArIHRlc3RwdWJfZm9yc2NoZW1hX2ZvcnRhYmxl Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnNjaGVt YV9mb3J0YWJsZQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yc2No ZW1hX2ZvcnRhYmxlCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IHwgRERMcyAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLQorIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgICAgfCBmICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHViX3Rlc3QyLnRibDEi CiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAKIFxkUnArIHRlc3RwdWJf Zm9ydGFibGVfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlv biB0ZXN0cHViX2ZvcnRhYmxlX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBW aWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0 aW9uIHRlc3RwdWJfZm9ydGFibGVfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAg IHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8 IFZpYSByb290IHwgRERMcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0t LS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmICAgICAgICB8IGYKIFRhYmxlczoKICAg ICAicHViX3Rlc3QyLnRibDEiCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX2RkbF9yZXBsaWNhdGlvbi5wbCBiL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAzMl9kZGxfcmVwbGljYXRpb24ucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uYzM2YTdjMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAzMl9kZGxfcmVwbGljYXRpb24ucGwKQEAgLTAsMCArMSw4NiBAQAorIyBDb3B5 cmlnaHQgKGMpIDIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisjIFJl Z3Jlc3Npb24gdGVzdHMgZm9yIGxvZ2ljYWwgcmVwbGljYXRpb24gb2YgRERMcwordXNlIHN0cmlj dDsKK3VzZSB3YXJuaW5nczsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBv c3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKK215ICRub2RlX3B1Ymxp c2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7Ciskbm9k ZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOworJG5vZGVf cHVibGlzaGVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgJ2F1dG92YWN1dW0gPSBv ZmYnKTsKKyRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CisKK215ICRub2RlX3N1YnNjcmliZXIgPSBQ b3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXInKTsKKyRub2RlX3N1YnNj cmliZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOworJG5vZGVfc3Vic2Ny aWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICdhdXRvdmFjdXVtID0gb2ZmJyk7 Ciskbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKKworbXkgJGRkbCA9ICJDUkVBVEUgVEFCTEUgdGVz dF9yZXAoaWQgaW50IHByaW1hcnkga2V5LCBuYW1lIHZhcmNoYXIpOyI7Ciskbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAkZGRsKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0ZXN0X3JlcCBWQUxVRVMgKDEsICdkYXRhMScp OyIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICRkZGwpOworCitt eSAkcHVibGlzaGVyX2Nvbm5zdHIgPSAkbm9kZV9wdWJsaXNoZXItPmNvbm5zdHIgLiAnIGRibmFt ZT1wb3N0Z3Jlcyc7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJD UkVBVEUgUFVCTElDQVRJT04gbXlwdWIgRk9SIEFMTCBUQUJMRVMgd2l0aCAocHVibGlzaCA9ICdp bnNlcnQsIHVwZGF0ZSwgZGVsZXRlLCBkZGwnKTsiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIG15c3ViIENPTk5FQ1RJT04g JyRwdWJsaXNoZXJfY29ubnN0cicgUFVCTElDQVRJT04gbXlwdWI7IgorKTsKKworJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdteXN1YicpOworCisjIFRlc3Qgc2ltcGxlIENSRUFU RSBUQUJMRSBjb21tYW5kIGlzIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlcgorIyBUZXN0IEFMVEVS IFRBQkxFIGNvbW1hbmQgaXMgcmVwbGljYXRlZCBvbiB0YWJsZSB0ZXN0X3JlcAorJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0MSAoYSBpbnQsIGIg dmFyY2hhcik7Iik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQUxU RVIgVEFCTEUgdGVzdF9yZXAgQUREIGMzIGludDsiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0ZXN0X3JlcCBWQUxVRVMgKDIsICdkYXRhMics IDIpOyIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ215c3ViJyk7CisK K215ICRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNF TEVDVCBjb3VudCgqKSBmcm9tIHQxIik7CitpcygkcmVzdWx0LCBxcSgwKSwgJ0NSRUFURSBvZiB0 MSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXInKTsKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfcmVwIFdI RVJFIGMzID0yOyIpOworaXMoJHJlc3VsdCwgcXEoMSksICdBTFRFUiB0ZXN0X3JlcCBBREQgcmVw bGljYXRlZCcpOworCisjIFRlc3QgQUxURVIgVEFCTEUgRFJPUAorJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIkFMVEVSIFRBQkxFIHRlc3RfcmVwIERST1AgYzM7Iik7Cisk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF9y ZXAgd2hlcmUgaWQgPSAyOyIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo J215c3ViJyk7CisKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIlNFTEVDVCBjb3VudCgqKSBmcm9tIHRlc3RfcmVwOyIpOworaXMoJHJlc3VsdCwgcXEo MSksICdBTFRFUiB0ZXN0X3JlcCBEUk9QIHJlcGxpY2F0ZWQnKTsKKyRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgnbXlzdWInKTsKKworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHQ0IChhIGludCwgYiB2YXJjaGFyKTsiKTsKKwor JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdteXN1YicpOworCiskcmVzdWx0ID0g JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikg ZnJvbSBwZ190YWJsZXMgd2hlcmUgdGFibGVuYW1lID0gJ3Q0JzsiKTsKK2lzKCRyZXN1bHQsIHFx KDEpLCAnQ1JFQVRFIHQ0IGlzIHJlcGxpY2F0ZWQnKTsKKworIyBUZXN0IERNTCBjaGFuZ2VzIG9u IHRoZSBuZXcgdGFibGUgdDQgYXJlIHJlcGxpY2F0ZWQKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0NCB2YWx1ZXMgKDEsICdhJykiKTsKKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0NCB2YWx1ZXMg KDIsICdiJykiKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdteXN1Yicp OworCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJT RUxFQ1QgY291bnQoKikgZnJvbSB0NDsiKTsKK2lzKCRyZXN1bHQsIHFxKDIpLCAnRE1MIENoYW5n ZXMgdG8gdDQgYXJlIHJlcGxpY2F0ZWQnKTsKKworIyBUZXN0IERST1AgVEFCTEUKKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFRBQkxFIHQ0OyIpOworCiskbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ215c3ViJyk7CisKKyRyZXN1bHQgPSAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBmcm9t IHBnX3RhYmxlcyB3aGVyZSB0YWJsZW5hbWUgPSAndDQnOyIpOworaXMoJHJlc3VsdCwgcXEoMCks ICdUQUJMRSB0NCBpcyBkcm9wcGVkJyk7CisKK3Bhc3MgIkRETCByZXBsaWNhdGlvbiB0ZXN0cyBw YXNzZWQ6IjsKKworJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKKyRub2RlX3B1Ymxpc2hlci0+c3Rv cDsKKworZG9uZV90ZXN0aW5nKCk7Ci0tIAoyLjcuMi53aW5kb3dzLjEKCg== --_004_OS0PR01MB571695EDF9EAB2422FBF2C1094DE9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v6-0003-support-CREATE-TABLE-AS-SELECT-INTO.patch" Content-Description: v6-0003-support-CREATE-TABLE-AS-SELECT-INTO.patch Content-Disposition: attachment; filename="v6-0003-support-CREATE-TABLE-AS-SELECT-INTO.patch"; size=15285; creation-date="Thu, 02 Jun 2022 12:12:00 GMT"; modification-date="Thu, 02 Jun 2022 12:13:59 GMT" Content-Transfer-Encoding: base64 RnJvbSBjZGQwOWYxYWM2ODFiM2QwZDViZjg4YzBiZmE5MjA4OTZkZDRiM2JlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFRodSwgMiBKdW4gMjAyMiAxMzozMjozOSArMDgwMApTdWJqZWN0OiBbUEFUQ0hd IHN1cHBvcnQgQ1JFQVRFIFRBQkxFIEFTL1NFTEVDVCBJTlRPCgpUaGUgbWFpbiBpZGVhIG9mIHJl cGxpY2F0aW5nIHRoZSBDUkVBVEUgVEFCTEUgQVMgaXMgdGhhdCB3ZSBkZXByYXNlIHRoZSBDUkVB VEUKVEFCTEUgQVMgaW50byBhIHNpbXBsZSBDUkVBVEUgVEFCTEUod2l0aG91dCBzdWJxdWVyeSkg Y29tbWFuZCBhbmQgV0FMIGxvZyBpdAphZnRlciBjcmVhdGluZyB0aGUgdGFibGUgYW5kIGJlZm9y ZSB3cml0aW5nIGRhdGEgaW50byB0aGUgdGFibGUgYW5kIHJlcGxpY2F0ZQp0aGUgaW5jb21pbmcg d3JpdGVzIGxhdGVyIGFzIG5vcm1hbCBJTlNFUlRzLiBJbiB0aGlzIGFwcG9yYWNoLCB3ZSBkb24n dCBleGVjdXRlCnRoZSBzdWJxdWVyeSBvbiBzdWJzY3JpYmVyIHNvIHRoYXQgZG9uJ3QgbmVlZCB0 byBtYWtlIHN1cmUgYWxsIHRoZSBvYmplY3RzCnJlZmVyZW5jZWQgaW4gdGhlIHN1YnF1ZXJ5IGFs c28gZXhpc3RzIGluIHN1YnNjcmliZXIuIEFuZCBUaGlzIGFwcHJvYWNoIHdvcmtzCmZvciBhbGwg a2luZCBvZiBjb21tYW5kcyhlLmcuIENSQUVURSBUQUJMRSBBUyBbU0VMRUNUXVtFWEVDVVRFXVtW QUxVRVNdKQoKSW50cm9kdWNpbmcgYSBuZXcgdHlwZSBvZiBldmVudCB0cmlnZ2VyICJ0YWJsZV9j cmVhdGUiLiB3aGljaCB3b3VsZCBiZSBmaXJlZApmb3IgQ1JFQVRFIFRBQkxFL0NSRUFURSBUQUJM RSBBUy9TRUxFQ1QgSU5UTyBhZnRlciBjcmVhdGluZyB0aGUgdGFibGUgYW5kCmJlZm9yZSBhbnkg b3RoZXIgbW9kaWZpY2F0aW9uLiB3ZSBkZXBhcnNlIHRoZSBjb21tYW5kIGluIHRoZSB0YWJsZV9j cmVhdGUgZXZlbnQKdHJpZ2dlciBhbmQgV0FMIGxvZyB0aGUgZGVwYXJzZWQganNvbiBzdHJpbmcu IFRoZSB3YWxzZW5kZXIgd2lsbCBzZW5kIHRoZQpzdHJpbmcgdG8gc3Vic2NyaWJlci4gQW5kIGlu Y29taW5nIElOU0VSVHMgd2lsbCBhbHNvIGJlIHJlcGxpY2F0ZWQuCgotLS0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL2NyZWF0ZWFzLmMgICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRz L2V2ZW50X3RyaWdnZXIuYyAgIHwgMTYxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMgfCAgMzMgKysrKysrLQog c3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgICAgICAgICAgICAgfCAgIDcgKysKIHNyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL2V2dGNhY2hlLmMgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHJvYy5kYXQgICAgICAgIHwgICAzICsKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2V2ZW50 X3RyaWdnZXIuaCAgIHwgICA0ICsKIHNyYy9pbmNsdWRlL3V0aWxzL2V2dGNhY2hlLmggICAgICAg ICAgIHwgICAzICstCiA4IGZpbGVzIGNoYW5nZWQsIDIwOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jCmluZGV4IDlhYmJiNmIuLmFlMjVkMmEgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvY3JlYXRlYXMuYwpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgImNhdGFs b2cvbmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy90b2FzdGluZy5oIgogI2luY2x1ZGUg ImNvbW1hbmRzL2NyZWF0ZWFzLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5o IgogI2luY2x1ZGUgImNvbW1hbmRzL21hdHZpZXcuaCIKICNpbmNsdWRlICJjb21tYW5kcy9wcmVw YXJlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdGFibGVjbWRzLmgiCkBAIC0xNDMsNiArMTQ0LDgg QEAgY3JlYXRlX2N0YXNfaW50ZXJuYWwoTGlzdCAqYXR0ckxpc3QsIEludG9DbGF1c2UgKmludG8p CiAJCVN0b3JlVmlld1F1ZXJ5KGludG9SZWxhdGlvbkFkZHIub2JqZWN0SWQsIHF1ZXJ5LCBmYWxz ZSk7CiAJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CiAJfQorCWVsc2UKKwkJRXZlbnRUcmln Z2VyVGFibGVDcmVhdGUoKE5vZGUgKikgY3JlYXRlLCBpbnRvUmVsYXRpb25BZGRyKTsKIAogCXJl dHVybiBpbnRvUmVsYXRpb25BZGRyOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXZlbnRfdHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5j CmluZGV4IDliYzIxNDUuLmU3N2YwMWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2V2ZW50X3RyaWdnZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2Vy LmMKQEAgLTEzMyw3ICsxMzMsOCBAQCBDcmVhdGVFdmVudFRyaWdnZXIoQ3JlYXRlRXZlbnRUcmln U3RtdCAqc3RtdCkKIAlpZiAoc3RyY21wKHN0bXQtPmV2ZW50bmFtZSwgImRkbF9jb21tYW5kX3N0 YXJ0IikgIT0gMCAmJgogCQlzdHJjbXAoc3RtdC0+ZXZlbnRuYW1lLCAiZGRsX2NvbW1hbmRfZW5k IikgIT0gMCAmJgogCQlzdHJjbXAoc3RtdC0+ZXZlbnRuYW1lLCAic3FsX2Ryb3AiKSAhPSAwICYm Ci0JCXN0cmNtcChzdG10LT5ldmVudG5hbWUsICJ0YWJsZV9yZXdyaXRlIikgIT0gMCkKKwkJc3Ry Y21wKHN0bXQtPmV2ZW50bmFtZSwgInRhYmxlX3Jld3JpdGUiKSAhPSAwICYmCisJCXN0cmNtcChz dG10LT5ldmVudG5hbWUsICJ0YWJsZV9jcmVhdGUiKSAhPSAwKQogCQllcmVwb3J0KEVSUk9SLAog CQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKIAkJCQkgZXJybXNnKCJ1bnJlY29n bml6ZWQgZXZlbnQgbmFtZSBcIiVzXCIiLApAQCAtMTU5LDcgKzE2MCw4IEBAIENyZWF0ZUV2ZW50 VHJpZ2dlcihDcmVhdGVFdmVudFRyaWdTdG10ICpzdG10KQogCS8qIFZhbGlkYXRlIHRhZyBsaXN0 LCBpZiBhbnkuICovCiAJaWYgKChzdHJjbXAoc3RtdC0+ZXZlbnRuYW1lLCAiZGRsX2NvbW1hbmRf c3RhcnQiKSA9PSAwIHx8CiAJCSBzdHJjbXAoc3RtdC0+ZXZlbnRuYW1lLCAiZGRsX2NvbW1hbmRf ZW5kIikgPT0gMCB8fAotCQkgc3RyY21wKHN0bXQtPmV2ZW50bmFtZSwgInNxbF9kcm9wIikgPT0g MCkKKwkJIHN0cmNtcChzdG10LT5ldmVudG5hbWUsICJzcWxfZHJvcCIpID09IDAgfHwKKwkJIHN0 cmNtcChzdG10LT5ldmVudG5hbWUsICJ0YWJsZV9jcmVhdGUiKSA9PSAwKQogCQkmJiB0YWdzICE9 IE5VTEwpCiAJCXZhbGlkYXRlX2RkbF90YWdzKCJ0YWciLCB0YWdzKTsKIAllbHNlIGlmIChzdHJj bXAoc3RtdC0+ZXZlbnRuYW1lLCAidGFibGVfcmV3cml0ZSIpID09IDAKQEAgLTU4Niw3ICs1ODgs OCBAQCBFdmVudFRyaWdnZXJDb21tb25TZXR1cChOb2RlICpwYXJzZXRyZWUsCiAJCWRiZ3RhZyA9 IENyZWF0ZUNvbW1hbmRUYWcocGFyc2V0cmVlKTsKIAkJaWYgKGV2ZW50ID09IEVWVF9ERExDb21t YW5kU3RhcnQgfHwKIAkJCWV2ZW50ID09IEVWVF9ERExDb21tYW5kRW5kIHx8Ci0JCQlldmVudCA9 PSBFVlRfU1FMRHJvcCkKKwkJCWV2ZW50ID09IEVWVF9TUUxEcm9wIHx8CisJCQlldmVudCA9PSBF VlRfVGFibGVDcmVhdGUpCiAJCXsKIAkJCWlmICghY29tbWFuZF90YWdfZXZlbnRfdHJpZ2dlcl9v ayhkYmd0YWcpKQogCQkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIGNvbW1hbmQgdGFnIFwiJXNc IiIsIEdldENvbW1hbmRUYWdOYW1lKGRiZ3RhZykpOwpAQCAtODY5LDYgKzg3MiwxNTUgQEAgRXZl bnRUcmlnZ2VyVGFibGVSZXdyaXRlKE5vZGUgKnBhcnNldHJlZSwgT2lkIHRhYmxlT2lkLCBpbnQg cmVhc29uKQogCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CiB9CiAKKworLyoKKyAqIEV2ZW50 VHJpZ2dlckNyZWF0ZVRhYmxlU3RhcnQKKyAqCQlQcmVwYXJlIHRvIHJlY2VpdmUgZGF0YSBvbiBh biBDUkVBVEUgVEFCTEUgW0FTXSBjb21tYW5kIGFib3V0IHRvIGJlCisgKiAJCWV4ZWN1dGVkLgor ICovCit2b2lkCitFdmVudFRyaWdnZXJDcmVhdGVUYWJsZVN0YXJ0KE5vZGUgKnBhcnNldHJlZSkK K3sKKwlNZW1vcnlDb250ZXh0IG9sZGN4dDsKKwlDb2xsZWN0ZWRDb21tYW5kICpjb21tYW5kOwor CisJLyogaWdub3JlIGlmIGV2ZW50IHRyaWdnZXIgY29udGV4dCBub3Qgc2V0LCBvciBjb2xsZWN0 aW9uIGRpc2FibGVkICovCisJaWYgKCFjdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUgfHwKKwkJY3Vy cmVudEV2ZW50VHJpZ2dlclN0YXRlLT5jb21tYW5kQ29sbGVjdGlvbkluaGliaXRlZCkKKwkJcmV0 dXJuOworCisJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGN1cnJlbnRFdmVudFRyaWdn ZXJTdGF0ZS0+Y3h0KTsKKworCWNvbW1hbmQgPSBwYWxsb2Moc2l6ZW9mKENvbGxlY3RlZENvbW1h bmQpKTsKKworCWNvbW1hbmQtPnR5cGUgPSBTQ1RfU2ltcGxlOworCWNvbW1hbmQtPmluX2V4dGVu c2lvbiA9IGNyZWF0aW5nX2V4dGVuc2lvbjsKKwljb21tYW5kLT5kLnNpbXBsZS5hZGRyZXNzID0g SW52YWxpZE9iamVjdEFkZHJlc3M7CisJY29tbWFuZC0+ZC5zaW1wbGUuc2Vjb25kYXJ5T2JqZWN0 ID0gSW52YWxpZE9iamVjdEFkZHJlc3M7CisJY29tbWFuZC0+cGFyc2V0cmVlID0gY29weU9iamVj dChwYXJzZXRyZWUpOworCisJY29tbWFuZC0+cGFyZW50ID0gY3VycmVudEV2ZW50VHJpZ2dlclN0 YXRlLT5jdXJyZW50Q29tbWFuZDsKKwljdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmN1cnJlbnRD b21tYW5kID0gY29tbWFuZDsKKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOworfQor CisvKgorICogRXZlbnRUcmlnZ2VyQ3JlYXRlVGFibGVFbmQKKyAqCQlGaW5pc2ggdXAgc2F2aW5n IGFuIENSRUFURSBUQUJMRSBbQVNdIGNvbW1hbmQuCisgKgorICogRklYTUUgdGhpcyBBUEkgaXNu J3QgY29uc2lkZXJpbmcgdGhlIHBvc3NpYmlsaXR5IHRoYXQgYW4geGFjdC9zdWJ4YWN0IGlzCisg KiBhYm9ydGVkIHBhcnR3YXkgdGhyb3VnaC4gIFByb2JhYmx5IGl0J3MgYmVzdCB0byBhZGQgYW4K KyAqIEF0RU9TdWJYYWN0X0V2ZW50VHJpZ2dlcnMoKSB0byBmaXggdGhpcy4KKyAqLwordm9pZAor RXZlbnRUcmlnZ2VyQ3JlYXRlVGFibGVFbmQodm9pZCkKK3sKKwlDb2xsZWN0ZWRDb21tYW5kICpw YXJlbnQ7CisKKwkvKiBpZ25vcmUgaWYgZXZlbnQgdHJpZ2dlciBjb250ZXh0IG5vdCBzZXQsIG9y IGNvbGxlY3Rpb24gZGlzYWJsZWQgKi8KKwlpZiAoIWN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZSB8 fAorCQljdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmNvbW1hbmRDb2xsZWN0aW9uSW5oaWJpdGVk KQorCQlyZXR1cm47CisKKwlwYXJlbnQgPSBjdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmN1cnJl bnRDb21tYW5kLT5wYXJlbnQ7CisKKwlwZnJlZShjdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmN1 cnJlbnRDb21tYW5kKTsKKworCWN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y3VycmVudENvbW1h bmQgPSBwYXJlbnQ7Cit9CisKKy8qCisgKiBwdWJsaWNhdGlvbl9kZGxfZGVwYXJzZV90YWJsZV9j cmVhdGUKKyAqCisgKiBEZXBhcnNlIHRoZSBkZGwgdGFibGUgY3JlYXRlIGNvbW1hbmQgYW5kIGxv ZyBpdC4KKyAqLworRGF0dW0KK3B1YmxpY2F0aW9uX2RkbF9kZXBhcnNlX3RhYmxlX2NyZWF0ZShQ R19GVU5DVElPTl9BUkdTKQoreworCUNvbGxlY3RlZENvbW1hbmQgKmNtZDsKKwljaGFyICAgICAg ICAqanNvbl9zdHJpbmc7CisKKwlpZiAoIUNBTExFRF9BU19FVkVOVF9UUklHR0VSKGZjaW5mbykp CisJCWVsb2coRVJST1IsICJub3QgZmlyZWQgYnkgZXZlbnQgdHJpZ2dlciBtYW5hZ2VyIik7CisK KwljbWQgPSBjdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmN1cnJlbnRDb21tYW5kOworCUFzc2Vy dChjbWQpOworCisJLyogRGVwYXJzZSB0aGUgRERMIGNvbW1hbmQgYW5kIFdBTCBsb2cgaXQgdG8g YWxsb3cgZGVjb2Rpbmcgb2YgdGhlIHNhbWUuICovCisJanNvbl9zdHJpbmcgPSBkZXBhcnNlX3V0 aWxpdHlfY29tbWFuZChjbWQpOworCisJaWYgKGpzb25fc3RyaW5nICE9IE5VTEwpCisJCUxvZ0xv Z2ljYWxERExNZXNzYWdlKCJkZXBhcnNlIiwgY21kLT5kLnNpbXBsZS5hZGRyZXNzLm9iamVjdElk LCBEQ1RfQ3JlYXRlLAorCQkJCQkJCSBqc29uX3N0cmluZywgc3RybGVuKGpzb25fc3RyaW5nKSAr IDEpOworCisJcmV0dXJuIFBvaW50ZXJHZXREYXR1bShOVUxMKTsKK30KKworLyoKKyAqIEZpcmUg dGFibGVfcmV3cml0ZSB0cmlnZ2Vycy4KKyAqLwordm9pZAorRXZlbnRUcmlnZ2VyVGFibGVDcmVh dGUoTm9kZSAqcGFyc2V0cmVlLCBPYmplY3RBZGRyZXNzIGFkZHJlc3MpCit7CisJTGlzdAkgICAq cnVubGlzdDsKKwlOb2RlCSAgICpvbGRfcGFyc2V0cmVlOworCUV2ZW50VHJpZ2dlckRhdGEgdHJp Z2RhdGE7CisKKwkvKgorCSAqIFNlZSBFdmVudFRyaWdnZXJERExDb21tYW5kU3RhcnQgZm9yIGEg ZGlzY3Vzc2lvbiBhYm91dCB3aHkgZXZlbnQKKwkgKiB0cmlnZ2VycyBhcmUgZGlzYWJsZWQgaW4g c2luZ2xlIHVzZXIgbW9kZS4KKwkgKi8KKwlpZiAoIUlzVW5kZXJQb3N0bWFzdGVyKQorCQlyZXR1 cm47CisKKwkvKgorCSAqIEFsc28gZG8gbm90aGluZyBpZiBvdXIgc3RhdGUgaXNuJ3Qgc2V0IHVw LCB3aGljaCBpdCB3b24ndCBiZSBpZiB0aGVyZQorCSAqIHdlcmVuJ3QgYW55IHJlbGV2YW50IGV2 ZW50IHRyaWdnZXJzIGF0IHRoZSBzdGFydCBvZiB0aGUgY3VycmVudCBEREwKKwkgKiBjb21tYW5k LiAgVGhpcyB0ZXN0IG1pZ2h0IHRoZXJlZm9yZSBzZWVtIG9wdGlvbmFsLCBidXQgaXQncworCSAq ICpuZWNlc3NhcnkqLCBiZWNhdXNlIEV2ZW50VHJpZ2dlckNvbW1vblNldHVwIG1pZ2h0IGZpbmQg dHJpZ2dlcnMgdGhhdAorCSAqIGRpZG4ndCBleGlzdCBhdCB0aGUgdGltZSB0aGUgY29tbWFuZCBz dGFydGVkLgorCSAqLworCWlmICghY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlKQorCQlyZXR1cm47 CisKKwlydW5saXN0ID0gRXZlbnRUcmlnZ2VyQ29tbW9uU2V0dXAoY3VycmVudEV2ZW50VHJpZ2dl clN0YXRlLT5jdXJyZW50Q29tbWFuZC0+cGFyc2V0cmVlLAorCQkJCQkJCQkJICBFVlRfVGFibGVD cmVhdGUsCisJCQkJCQkJCQkgICJ0YWJsZV9jcmVhdGUiLAorCQkJCQkJCQkJICAmdHJpZ2RhdGEp OworCWlmIChydW5saXN0ID09IE5JTCkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBVc2UgUEdfVFJZ IHRvIGVuc3VyZSBwYXJzZXRyZWUgaXMgcmVzZXQgZXZlbiB3aGVuIG9uZSB0cmlnZ2VyCisJICog ZmFpbHMuIChUaGlzIGlzIHBlcmhhcHMgbm90IG5lY2Vzc2FyeSwgYXMgdGhlIGN1cnJlbnRTdGF0 ZSB2YXJpYWJsZSB3aWxsCisJICogYmUgcmVtb3ZlZCBzaG9ydGx5IGJ5IG91ciBjYWxsZXIsIGJ1 dCBpdCBzZWVtcyBiZXR0ZXIgdG8gcGxheSBzYWZlLikKKwkgKi8KKwlvbGRfcGFyc2V0cmVlID0g Y3VycmVudEV2ZW50VHJpZ2dlclN0YXRlLT5jdXJyZW50Q29tbWFuZC0+cGFyc2V0cmVlOworCWN1 cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y3VycmVudENvbW1hbmQtPmQuc2ltcGxlLmFkZHJlc3Mg PSBhZGRyZXNzOworCWN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y3VycmVudENvbW1hbmQtPnBh cnNldHJlZSA9IHBhcnNldHJlZTsKKworCS8qIFJ1biB0aGUgdHJpZ2dlcnMuICovCisJUEdfVFJZ KCk7CisJeworCQlFdmVudFRyaWdnZXJJbnZva2UocnVubGlzdCwgJnRyaWdkYXRhKTsKKwl9CisJ UEdfRklOQUxMWSgpOworCXsKKwkJY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlLT5jdXJyZW50Q29t bWFuZC0+cGFyc2V0cmVlID0gb2xkX3BhcnNldHJlZTsKKwl9CisJUEdfRU5EX1RSWSgpOworCisJ LyogQ2xlYW51cC4gKi8KKwlsaXN0X2ZyZWUocnVubGlzdCk7CisKKwkvKgorCSAqIE1ha2Ugc3Vy ZSBhbnl0aGluZyB0aGUgZXZlbnQgdHJpZ2dlcnMgZGlkIHdpbGwgYmUgdmlzaWJsZSB0byB0aGUg bWFpbgorCSAqIGNvbW1hbmQuCisJICovCisJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKK30K KwogLyoKICAqIEludm9rZSBlYWNoIGV2ZW50IHRyaWdnZXIgaW4gYSBsaXN0IG9mIGV2ZW50IHRy aWdnZXJzLgogICovCkBAIC0xMTQ5LDcgKzEzMDEsOCBAQCB0cmFja0Ryb3BwZWRPYmplY3RzTmVl ZGVkKHZvaWQpCiAJICovCiAJcmV0dXJuIGxpc3RfbGVuZ3RoKEV2ZW50Q2FjaGVMb29rdXAoRVZU X1NRTERyb3ApKSA+IDAgfHwKIAkJbGlzdF9sZW5ndGgoRXZlbnRDYWNoZUxvb2t1cChFVlRfVGFi bGVSZXdyaXRlKSkgPiAwIHx8Ci0JCWxpc3RfbGVuZ3RoKEV2ZW50Q2FjaGVMb29rdXAoRVZUX0RE TENvbW1hbmRFbmQpKSA+IDA7CisJCWxpc3RfbGVuZ3RoKEV2ZW50Q2FjaGVMb29rdXAoRVZUX0RE TENvbW1hbmRFbmQpKSA+IDAgfHwKKwkJbGlzdF9sZW5ndGgoRXZlbnRDYWNoZUxvb2t1cChFVlRf VGFibGVDcmVhdGUpKSA+IDA7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy9wdWJsaWNhdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9u Y21kcy5jCmluZGV4IDYzZmZjNjIuLjE4N2UzMjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1Ymxp Y2F0aW9uY21kcy5jCkBAIC03NjIsNyArNzYyLDggQEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VT dGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJUmVsYXRpb24JcmVs OwogCU9iamVjdEFkZHJlc3MgbXlzZWxmOwogCU9iamVjdEFkZHJlc3MgcmVmZXJlbmNlZF9zdGFy dCwgcmVmZXJlbmNlZF9lbmQsCi0JCQkJICByZWZlcmVuY2VkX3RhYmxlX3Jld3JpdGU7CisJCQkJ ICByZWZlcmVuY2VkX3RhYmxlX3Jld3JpdGUsCisJCQkJICByZWZlcmVuY2VkX3RhYmxlX2NyZWF0 ZTsKIAlPaWQJCQlwdWJvaWQ7CiAJYm9vbAkJbnVsbHNbTmF0dHNfcGdfcHVibGljYXRpb25dOwog CURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdfcHVibGljYXRpb25dOwpAQCAtOTA0LDIwICs5MDUsMjUg QEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlv blN0bXQgKnN0bXQpCiAJaWYgKHB1YmFjdGlvbnMucHViZGRsKQogCXsKIAkJQ3JlYXRlRXZlbnRU cmlnU3RtdCAqZGRsX3RyaWdnX3N0YXJ0LCAqZGRsX3RyaWdnX2VuZCwKLQkJCQkJCQkqZGRsX3Ry aWdnX3RhYmxlX3Jld3JpdGU7CisJCQkJCQkJKmRkbF90cmlnZ190YWJsZV9yZXdyaXRlLAorCQkJ CQkJCSpkZGxfdHJpZ2dfdGFibGVfY3JlYXRlOwogCQlOb2RlCQkJCSplbmRfYXJnMSA9IE5VTEw7 CiAJCU5vZGUJCQkJKnN0YXJ0X2FyZzEgPSBOVUxMOwogCQlOb2RlCQkJCSp0YWJsZV9yZXdyaXRl X2FyZzEgPSBOVUxMOworCQlOb2RlCQkJCSp0YWJsZV9jcmVhdGVfYXJnMSA9IE5VTEw7CiAJCU5v ZGUJCQkJKmFyZzIgPSBOVUxMOwogCQlOb2RlCQkJCSphcmczID0gTlVMTDsKIAkJTGlzdAkJCQkq ZW5kX3RhZ3MgPSBOSUw7CiAJCUxpc3QJCQkJKnN0YXJ0X3RhZ3MgPSBOSUw7CiAJCUxpc3QJCQkJ KnRhYmxlX3Jld3JpdGVfdGFncyA9IE5JTDsKKwkJTGlzdAkJCQkqdGFibGVfY3JlYXRlX3RhZ3Mg PSBOSUw7CiAJCU9pZAkJCQkJZXZlbnRfdHJpZ19zdGFydF9pZCwgZXZlbnRfdHJpZ19lbmRfaWQs Ci0JCQkJCQkJZXZlbnRfdHJpZ190YWJsZV9yZXdyaXRlX2lkOworCQkJCQkJCWV2ZW50X3RyaWdf dGFibGVfcmV3cml0ZV9pZCwKKwkJCQkJCQlldmVudF90cmlnX3RhYmxlX2NyZWF0ZV9pZDsKIAkJ Y2hhcgkJCQl0cmlnZ2VyX25hbWVfc3RhcnRbTkFNRURBVEFMRU5dOwogCQljaGFyCQkJCXRyaWdn ZXJfbmFtZV9lbmRbTkFNRURBVEFMRU5dOwogCQljaGFyCQkJCXRyaWdnZXJfbmFtZV90YWJsZV9y ZXdyaXRlW05BTUVEQVRBTEVOXTsKKwkJY2hhcgkJCQl0cmlnZ2VyX25hbWVfdGFibGVfY3JlYXRl W05BTUVEQVRBTEVOXTsKIAogCQlkZGxfdHJpZ2dfZW5kID0gbWFrZU5vZGUoQ3JlYXRlRXZlbnRU cmlnU3RtdCk7CiAKQEAgLTk2OSw2ICs5NzUsMjQgQEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VT dGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJCWRkbF90cmlnZ190 YWJsZV9yZXdyaXRlLT53aGVuY2xhdXNlID0gbGlzdF9tYWtlMShtYWtlRGVmRWxlbSgidGFnIiwg KE5vZGUgKikgdGFibGVfcmV3cml0ZV90YWdzLCAtMSkpOwogCQlldmVudF90cmlnX3RhYmxlX3Jl d3JpdGVfaWQgPSBDcmVhdGVFdmVudFRyaWdnZXIoZGRsX3RyaWdnX3RhYmxlX3Jld3JpdGUpOwog CisJCS8qIFRyaWdnZXIgZm9yIHRhYmxlX2NyZWF0ZSAqLworCQlkZGxfdHJpZ2dfdGFibGVfY3Jl YXRlID0gbWFrZU5vZGUoQ3JlYXRlRXZlbnRUcmlnU3RtdCk7CisKKwkJc25wcmludGYodHJpZ2dl cl9uYW1lX3RhYmxlX2NyZWF0ZSwgc2l6ZW9mKHRyaWdnZXJfbmFtZV90YWJsZV9jcmVhdGUpLAor CQkJCSAicGdfZGVwYXJzZV90cmlnX3RhYmxlX2NyZWF0ZV8ldSIsIHB1Ym9pZCk7CisJCWRkbF90 cmlnZ190YWJsZV9jcmVhdGUtPnRyaWduYW1lID0gcHN0cmR1cCh0cmlnZ2VyX25hbWVfdGFibGVf Y3JlYXRlKTsKKwkJZGRsX3RyaWdnX3RhYmxlX2NyZWF0ZS0+ZXZlbnRuYW1lID0gInRhYmxlX2Ny ZWF0ZSI7CisJCWRkbF90cmlnZ190YWJsZV9jcmVhdGUtPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05h bWUoInB1YmxpY2F0aW9uX2RkbF9kZXBhcnNlX3RhYmxlX2NyZWF0ZSIpOworCisJCXRhYmxlX2Ny ZWF0ZV9hcmcxID0gKE5vZGUgKikgbWFrZVN0cmluZyhwc3RyZHVwKEdldENvbW1hbmRUYWdOYW1l KENNRFRBR19DUkVBVEVfVEFCTEVfQVMpKSk7CisJCXRhYmxlX2NyZWF0ZV90YWdzID0gbGlzdF9t YWtlMSh0YWJsZV9jcmVhdGVfYXJnMSk7CisJCXRhYmxlX2NyZWF0ZV9hcmcxID0gKE5vZGUgKikg bWFrZVN0cmluZyhwc3RyZHVwKEdldENvbW1hbmRUYWdOYW1lKENNRFRBR19TRUxFQ1RfSU5UTykp KTsKKwkJdGFibGVfY3JlYXRlX3RhZ3MgPSBsYXBwZW5kKHRhYmxlX2NyZWF0ZV90YWdzLCB0YWJs ZV9jcmVhdGVfYXJnMSk7CisKKwkJZGRsX3RyaWdnX3RhYmxlX2NyZWF0ZS0+d2hlbmNsYXVzZSA9 IGxpc3RfbWFrZTEobWFrZURlZkVsZW0oInRhZyIsIChOb2RlICopIHRhYmxlX2NyZWF0ZV90YWdz LCAtMSkpOworCQlldmVudF90cmlnX3RhYmxlX2NyZWF0ZV9pZCA9IENyZWF0ZUV2ZW50VHJpZ2dl cihkZGxfdHJpZ2dfdGFibGVfY3JlYXRlKTsKKworCiAJCS8qCiAJCSAqIFJlZ2lzdGVyIHRoZSBl dmVudCB0cmlnZ2VycyBhcyBpbnRlcm5hbGx5IGRlcGVuZGVudCBvbiB0aGUKIAkJICogcHVibGlj YXRpb24uCkBAIC05ODEsNiArMTAwNSw5IEBAIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUg KnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCiAJCU9iamVjdEFkZHJlc3NT ZXQocmVmZXJlbmNlZF90YWJsZV9yZXdyaXRlLCBFdmVudFRyaWdnZXJSZWxhdGlvbklkLCBldmVu dF90cmlnX3RhYmxlX3Jld3JpdGVfaWQpOwogCQlyZWNvcmREZXBlbmRlbmN5T24oJnJlZmVyZW5j ZWRfdGFibGVfcmV3cml0ZSwgJm15c2VsZiwgREVQRU5ERU5DWV9JTlRFUk5BTCk7CisKKwkJT2Jq ZWN0QWRkcmVzc1NldChyZWZlcmVuY2VkX3RhYmxlX2NyZWF0ZSwgRXZlbnRUcmlnZ2VyUmVsYXRp b25JZCwgZXZlbnRfdHJpZ190YWJsZV9jcmVhdGVfaWQpOworCQlyZWNvcmREZXBlbmRlbmN5T24o JnJlZmVyZW5jZWRfdGFibGVfY3JlYXRlLCAmbXlzZWxmLCBERVBFTkRFTkNZX0lOVEVSTkFMKTsK IAl9CiAKIAl0YWJsZV9jbG9zZShyZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgYi9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYwpp bmRleCA2YTViY2RlLi5jMTZmODA0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3V0aWxp dHkuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYwpAQCAtMTE2NCw2ICsxMTY0LDgg QEAgUHJvY2Vzc1V0aWxpdHlTbG93KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQlEYXR1bQkJ dG9hc3Rfb3B0aW9uczsKIAkJCQkJCQlzdGF0aWMgY2hhciAqdmFsaWRuc3BzW10gPSBIRUFQX1JF TE9QVF9OQU1FU1BBQ0VTOwogCisJCQkJCQkJRXZlbnRUcmlnZ2VyQ3JlYXRlVGFibGVTdGFydChw YXJzZXRyZWUpOworCiAJCQkJCQkJLyogUmVtZW1iZXIgdHJhbnNmb3JtZWQgUmFuZ2VWYXIgZm9y IExJS0UgKi8KIAkJCQkJCQl0YWJsZV9ydiA9IGNzdG10LT5yZWxhdGlvbjsKIApAQCAtMTE5OCw2 ICsxMjAwLDkgQEAgUHJvY2Vzc1V0aWxpdHlTbG93KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAogCQkJ CQkJCU5ld1JlbGF0aW9uQ3JlYXRlVG9hc3RUYWJsZShhZGRyZXNzLm9iamVjdElkLAogCQkJCQkJ CQkJCQkJCQl0b2FzdF9vcHRpb25zKTsKKworCQkJCQkJCUV2ZW50VHJpZ2dlclRhYmxlQ3JlYXRl KChOb2RlICopIGNzdG10LCBhZGRyZXNzKTsKKwkJCQkJCQlFdmVudFRyaWdnZXJDcmVhdGVUYWJs ZUVuZCgpOwogCQkJCQkJfQogCQkJCQkJZWxzZSBpZiAoSXNBKHN0bXQsIENyZWF0ZUZvcmVpZ25U YWJsZVN0bXQpKQogCQkJCQkJewpAQCAtMTY2NSw4ICsxNjcwLDEwIEBAIFByb2Nlc3NVdGlsaXR5 U2xvdyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJYnJlYWs7CiAKIAkJCWNhc2UgVF9DcmVhdGVU YWJsZUFzU3RtdDoKKwkJCQlFdmVudFRyaWdnZXJDcmVhdGVUYWJsZVN0YXJ0KHBhcnNldHJlZSk7 CiAJCQkJYWRkcmVzcyA9IEV4ZWNDcmVhdGVUYWJsZUFzKHBzdGF0ZSwgKENyZWF0ZVRhYmxlQXNT dG10ICopIHBhcnNldHJlZSwKIAkJCQkJCQkJCQkJcGFyYW1zLCBxdWVyeUVudiwgcWMpOworCQkJ CUV2ZW50VHJpZ2dlckNyZWF0ZVRhYmxlRW5kKCk7CiAJCQkJYnJlYWs7CiAKIAkJCWNhc2UgVF9S ZWZyZXNoTWF0Vmlld1N0bXQ6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9l dnRjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvZXZ0Y2FjaGUuYwppbmRleCAzYTlj OWYwLi5mNGM4YjczIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9ldnRjYWNo ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2V2dGNhY2hlLmMKQEAgLTE2Nyw2ICsx NjcsOCBAQCBCdWlsZEV2ZW50VHJpZ2dlckNhY2hlKHZvaWQpCiAJCQlldmVudCA9IEVWVF9TUUxE cm9wOwogCQllbHNlIGlmIChzdHJjbXAoZXZ0ZXZlbnQsICJ0YWJsZV9yZXdyaXRlIikgPT0gMCkK IAkJCWV2ZW50ID0gRVZUX1RhYmxlUmV3cml0ZTsKKwkJZWxzZSBpZiAoc3RyY21wKGV2dGV2ZW50 LCAidGFibGVfY3JlYXRlIikgPT0gMCkKKwkJCWV2ZW50ID0gRVZUX1RhYmxlQ3JlYXRlOwogCQll bHNlCiAJCQljb250aW51ZTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w cm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggNjM5NjU2Ni4u ZjU1ZjQ1NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysg Yi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC0xMTg5OSw0ICsxMTg5OSw3IEBA CiB7IG9pZCA9PiAnNDY0NicsIGRlc2NyID0+ICd0cmlnZ2VyIGZvciBkZGwgY29tbWFuZCBkZXBh cnNlIHRhYmxlIHJld3JpdGUnLAogICBwcm9uYW1lID0+ICdwdWJsaWNhdGlvbl9kZGxfZGVwYXJz ZV90YWJsZV9yZXdyaXRlJywgcHJvcmV0dHlwZSA9PiAnZXZlbnRfdHJpZ2dlcicsCiAgIHByb2Fy Z3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ3B1YmxpY2F0aW9uX2RkbF9kZXBhcnNlX3RhYmxlX3Jl d3JpdGUnIH0sCit7IG9pZCA9PiAnNDY0NycsIGRlc2NyID0+ICd0cmlnZ2VyIGZvciBkZGwgY29t bWFuZCBkZXBhcnNlIHRhYmxlIHJld3JpdGUnLAorICBwcm9uYW1lID0+ICdwdWJsaWNhdGlvbl9k ZGxfZGVwYXJzZV90YWJsZV9jcmVhdGUnLCBwcm9yZXR0eXBlID0+ICdldmVudF90cmlnZ2VyJywK KyAgcHJvYXJndHlwZXMgPT4gJycsIHByb3NyYyA9PiAncHVibGljYXRpb25fZGRsX2RlcGFyc2Vf dGFibGVfY3JlYXRlJyB9LAogXQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXZl bnRfdHJpZ2dlci5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5oCmluZGV4 IGZkMmVlN2YuLmQ2MTdlOTQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V2ZW50 X3RyaWdnZXIuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmgKQEAg LTU1LDYgKzU1LDEwIEBAIGV4dGVybiB2b2lkIEV2ZW50VHJpZ2dlckRETENvbW1hbmRFbmQoTm9k ZSAqcGFyc2V0cmVlKTsKIGV4dGVybiB2b2lkIEV2ZW50VHJpZ2dlclNRTERyb3AoTm9kZSAqcGFy c2V0cmVlKTsKIGV4dGVybiB2b2lkIEV2ZW50VHJpZ2dlclRhYmxlUmV3cml0ZShOb2RlICpwYXJz ZXRyZWUsIE9pZCB0YWJsZU9pZCwgaW50IHJlYXNvbik7CiAKK2V4dGVybiB2b2lkIEV2ZW50VHJp Z2dlckNyZWF0ZVRhYmxlU3RhcnQoTm9kZSAqcGFyc2V0cmVlKTsKK2V4dGVybiB2b2lkIEV2ZW50 VHJpZ2dlclRhYmxlQ3JlYXRlKE5vZGUgKnBhcnNldHJlZSwgT2JqZWN0QWRkcmVzcyBhZGRyZXNz KTsKK2V4dGVybiB2b2lkIEV2ZW50VHJpZ2dlckNyZWF0ZVRhYmxlRW5kKHZvaWQpOworCiBleHRl cm4gYm9vbCBFdmVudFRyaWdnZXJCZWdpbkNvbXBsZXRlUXVlcnkodm9pZCk7CiBleHRlcm4gdm9p ZCBFdmVudFRyaWdnZXJFbmRDb21wbGV0ZVF1ZXJ5KHZvaWQpOwogZXh0ZXJuIGJvb2wgdHJhY2tE cm9wcGVkT2JqZWN0c05lZWRlZCh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxz L2V2dGNhY2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9ldnRjYWNoZS5oCmluZGV4IGRkYjY3YTYu LjA3MGM2YjkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2V2dGNhY2hlLmgKKysrIGIv c3JjL2luY2x1ZGUvdXRpbHMvZXZ0Y2FjaGUuaApAQCAtMjIsNyArMjIsOCBAQCB0eXBlZGVmIGVu dW0KIAlFVlRfRERMQ29tbWFuZFN0YXJ0LAogCUVWVF9ERExDb21tYW5kRW5kLAogCUVWVF9TUUxE cm9wLAotCUVWVF9UYWJsZVJld3JpdGUKKwlFVlRfVGFibGVSZXdyaXRlLAorCUVWVF9UYWJsZUNy ZWF0ZQogfSBFdmVudFRyaWdnZXJFdmVudDsKIAogdHlwZWRlZiBzdHJ1Y3QKLS0gCjIuNy4yLndp bmRvd3MuMQoK --_004_OS0PR01MB571695EDF9EAB2422FBF2C1094DE9OS0PR01MB5716jpnp_--