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 1p8eDw-0007t5-9z for pgsql-hackers@arkaria.postgresql.org; Fri, 23 Dec 2022 09:20:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1p8eDv-0002Vo-5T for pgsql-hackers@arkaria.postgresql.org; Fri, 23 Dec 2022 09:20:15 +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 1p8eDu-0002Vb-FW for pgsql-hackers@lists.postgresql.org; Fri, 23 Dec 2022 09:20:14 +0000 Received: from esa7.fujitsucc.c3s2.iphmx.com ([68.232.159.87]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p8eDr-0006eg-N7 for pgsql-hackers@lists.postgresql.org; Fri, 23 Dec 2022 09:20:14 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1671787211; x=1703323211; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=8C14i5lJ7zvpN0z2rDN3oJhD4UeYQeDVxl0GVBgERgo=; b=hE77n+emS8dm5fCicNTv/co92pPHD8Jz2h1MtSUo6+DK1cNewE0vDqcf ToRiboS7hexB7o6uQ8ON0UWvMGsgmGEJWjPIl++oaoict8xrgXXRo/ie5 XFmhR33BVtD6eUliZBWMI+Pot2/RppcD5oUqTL9QErgSyU8i+G735Fu23 V5TSgSTXQiq3fVASa2zTLMs828lVPmf9+ssDX0+nvxwU9xUQxDPw2AiJk mE3BWA0WW6P8Kvvojqm+NWEfCKPlRoJhblxhacCH5iC15qm4r18o+9BIo WUqhoY6ALJrB9j9QJNqO2h1ip6NkK7dy+/uNtHxUxFVnRvftUnFYNa2Q4 w==; X-IronPort-AV: E=McAfee;i="6500,9779,10569"; a="73282667" X-IronPort-AV: E=Sophos;i="5.96,268,1665414000"; d="scan'208,223";a="73282667" Received: from mail-os0jpn01lp2108.outbound.protection.outlook.com (HELO JPN01-OS0-obe.outbound.protection.outlook.com) ([104.47.23.108]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Dec 2022 18:20:07 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=A4J17DVg7NuiqIijjIgi06hhmTsMIuKvtFJSqW3lTK7PWicbVJvcHFwJbhuQW8Ub37zQ1gzH3Kk66br24AGNVnGyIGZEZ9fuMhfZBHbzBy/uQwc4eFHRK6qvnzSRVvHEGb+YRNv9UgiYBnBI4KqzcXGdWt6TlOhTJpgX4r5FW9AvyQgZZv1zm9cgkBtzLkNH2Vd5an24ldpX9RWixpf5OixHyWxpY3XXeFnKJfUCtGDMPydOF5M1Beh+vHUshHVsjKXZog9hqMVG/jBR4a8suRNOVJqxkADLip3gWIVznBxYZfimooqS5mLSEgVNDWZlPuxgXgPiae5uQ29a/F83mQ== 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=ZDVqXvMlIYvsj9RBtSHBn9BEaCiDS3KVFPUIdIaeIZQ=; b=SkkwjVslDPvb4Zxix6zQfmyt1kvlvlZsLW2uQi8vT/YUyX5gA18xzgbhomLhIFPCc8nKQSjXtAigt4CZti3qTT6tjdejYcb5evypKhHLFBMFqPGWaXreV5Rg8ZjWpPXWR0VNHkvm1pkG7qJseDspN4G47I/yBXxtazJ+o3qpNs29N5qTzezKAhMBlqcxuoGQiRpfzfKnW4QmWJZhy4wIE0dgtI5Ns3VBCr3k5dDI+9VgCTAgwIqL4jApuonR5a9vjIHrNWCEO6a0gKxA2jMUHuJrfNx1VszlSwP4spHnG5RdhZSXw1fkRK7PfSrCpZhBh/eFEfN7Ikh0OdfWhTFRgg== 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 Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com (2603:1096:604:bb::12) by TYCPR01MB10020.jpnprd01.prod.outlook.com (2603:1096:400:1e8::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5924.16; Fri, 23 Dec 2022 09:20:03 +0000 Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::db62:a054:b1fa:4cb3]) by OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::db62:a054:b1fa:4cb3%5]) with mapi id 15.20.5944.013; Fri, 23 Dec 2022 09:20:01 +0000 From: "houzj.fnst@fujitsu.com" To: Amit Kapila CC: Peter Smith , Masahiko Sawada , "wangw.fnst@fujitsu.com" , Dilip Kumar , "shiy.fnst@fujitsu.com" , PostgreSQL Hackers Subject: RE: Perform streaming logical transactions by background workers and parallel apply Thread-Topic: Perform streaming logical transactions by background workers and parallel apply Thread-Index: AQHZD4gmc8Gf0xrGM0OFaEbpojAcOq5uQq1wgAHYoYCAAB++4IAAIlOAgAGmKgCAABa30IADFsaAgAFWGwCAABBJYIAA+pYAgABJqTCAAgB9AIAA8s2ggABurUA= Date: Fri, 23 Dec 2022 09:20:01 +0000 Message-ID: References: In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: =?utf-8?B?TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2Uw?= =?utf-8?B?NTBfQWN0aW9uSWQ9NmU4ZTY4NjctMDJjZS00NTI4LWI0MmUtZjA1YjAyMzZh?= =?utf-8?B?MjEzO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX0NvbnRlbnRCaXRzPTA7TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5?= =?utf-8?B?LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfRW5hYmxlZD10cnVlO01TSVBfTGFi?= =?utf-8?B?ZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRmZWNlMDUwX01ldGhv?= =?utf-8?B?ZD1TdGFuZGFyZDtNU0lQX0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRk?= =?utf-8?B?LTNiMGY0ZmVjZTA1MF9OYW1lPUZVSklUU1UtUkVTVFJJQ1RFRO+/ou++gA==?= =?utf-8?B?776LO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX1NldERhdGU9MjAyMi0xMi0yM1QwMjozMzo1N1o7TVNJUF9MYWJl?= =?utf-8?B?bF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfU2l0ZUlk?= =?utf-8?Q?=3Da19f121d-81e1-4858-a9d8-736e267fd4c7;?= authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: OS0PR01MB5716:EE_|TYCPR01MB10020:EE_ x-ms-office365-filtering-correlation-id: 5f1d5ea8-8584-496f-0a9a-08dae4c6dea9 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 078aADPaNAJyFr8RGsBQDCCK0Y6gM/+6o0GcHkEJyZNjJSPYn2iQcdjfs9g23MCk3PfefvACMz5sARXBDnvnHm0ZVoFVBkuU+vSUDt5OM4zY8lqoh4b+ga1xLUlqA5TrwlWST4TJpANnN3nto+jW2VwpITtKAuaXKAqUtmsMUaI7oxf94gMN4TY0PLRaVnsrb2PUfHSILBe9oyn0gOFNAfc/JAoRQLsOaI8WULVr2D7pZnC0rQ6YBRqu/oCB3/B9wz/GL2/SSpCUFt8ZvAoxZOm/wwscaWie18AgJtrTBGPZzZb9qNuGFqQg4SHS/b9Up/alsmRU6gwCa0hugf4q0gl4fWWe04AvKiKDXTyFz7wCs3PSbgzc1ONW/mYiQZtIRkgs/vLy+XEhm85U0K2EbrfZ/+WwGHFko9bQeC5V6ES+/QablmrWK9kYHm075FLJjw9WXtdkCDZtm5Dp5PUS0tVv7+Q+jzNao61NJIQVVh0lSAwWQjKdhVyOolQ1pxLmyYjHJnThk/FOQNnao0YO1nId6yrsLL5xW1813ApdVLuwfmJXw/TJqq1DBArRFlWKG7V9kf9QxhU6kd5o7WayObsquXPXvBsgdVM9i6sjyrbgh4mQELcIgb6NNCiANOyJIzer8bcjXGoXZ9pCydcGSbyzAES+Bmn1bBKgO7hz4d5jR8dcuWkwEkvoJ/9hrpYGu8dZBtxoHEhX660fXshQMMkBixuSiblEyDNeFKBJg7s= 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:(13230022)(4636009)(346002)(376002)(136003)(366004)(396003)(39860400002)(451199015)(1590799012)(38100700002)(99936003)(122000001)(4326008)(83380400001)(41300700001)(8936002)(66946007)(52536014)(66556008)(64756008)(66446008)(1580799009)(5660300002)(66476007)(8676002)(76116006)(53546011)(2940100002)(186003)(26005)(9686003)(82960400001)(38070700005)(478600001)(6506007)(71200400001)(33656002)(86362001)(2906002)(54906003)(6916009)(316002)(7696005)(55016003)(85182001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?QzkvNzNrbDVpRXllUDRKa3J3NEd2Z29lbUhJbmpodVE3SE9SZkRuUjlUZkUr?= =?utf-8?B?NFhpdmdTNmRKMG1uL1lmZHZDNmdzOFZoVE5tcEZaQmpESVdTOVlDNWJjZVd2?= =?utf-8?B?T3ZObFRabFphdWk3MW9VSHRHWmFWc1JxSGVpZE41cGoyVUlmRURNOEs1cXFF?= =?utf-8?B?U1k3elB5d1Y2Y3ZyYVBWMDN4RC85RFRyVkJaSWgwQ0xnV21SVG9uMXBXZ09G?= =?utf-8?B?MFg5ZUpnMXpOTGlWb0dNWjdVT0tBK3VoZ3hyeFk2TVhoK1lwUi9VY3kxajVK?= =?utf-8?B?dFZsMW8wM2dYN1QyM2U3alRRbm92ZjkvYlRPZU5hVFFSbFBhY3V2TkRwN2hY?= =?utf-8?B?ZGloUVE4dndZUURUaGFNTzN2Q2htdTRZN0NMNnROSFBWRE5hQW5adjFRcXF5?= =?utf-8?B?SXB6KzJuT3pLQ1g5NlpnTk95bVZRM2pCbkczVnJMdElUeDR4SlUwK3Uyc245?= =?utf-8?B?NkpwOUdJdStwYzFxZnRwbHgzZHdLeFhvalpxY2JhdTg2S0g5R0tHV1N3RWE2?= =?utf-8?B?aExJMUY4aDZPMGtJYWZNS3FubEZxbC9CZHBYU0JSWEc2RkZYenlVSks2ZS9Q?= =?utf-8?B?dTd3dlVsKzRtSW01RWlna0F2VXg1WTVWdFM3eUhDcTBtWm9FajYxbG5hUDVT?= =?utf-8?B?Rk8xMlp0MXVUenNqclY0c0lzV2dCSi9CRFNwSWVRQTVUc3dDa3FURVdBU3o3?= =?utf-8?B?NjJmOU1EQWVOdjkwdXB5bzh1MFQ0eGJheFlNTDI0Nnl2dFd4VGxmTkd3dnVH?= =?utf-8?B?czBMZ0NhY21BdFg1d2xGbVh5VnNTVGZ5ZUFYd0p6MXFoRy9qNldJVFFhU3ZK?= =?utf-8?B?UlNUL2VUanl5THRkM3ZWSjNGVVRsY3Z1dlBUeUVIZllzekx5M2tLdzRPdVRa?= =?utf-8?B?ZWozNVQrSUU0MDVvSEhmQkdZRzdZZm5CeE83SnZvWnlmOXRqb2R1ejJGcEt0?= =?utf-8?B?RkI1V21iUytkQVpaejZ6OWZmOTNqTEZITk4zbERGTXZyNjlyNks1Z005RHFH?= =?utf-8?B?WHFFRXJCU3crWnFueU5abFVCcjcvb1cvSlRRVmgxNE5RYTU4aDRhcyszc2Qz?= =?utf-8?B?TlR3YnJKU3EyNkplMlorWDZDUkpsLzl0ZllUb1FuNzV2S1MyUmVzUENKNnBO?= =?utf-8?B?b0lUcW5SdlkwSFRtTzZ0eFN2c1djeTh1aFZsT00wRUV3aGRGMU1sSWQwam9X?= =?utf-8?B?VU9oekFRQXFpNVdGZS9WbEkxdlIvMnQvVEtXdTRkWlRIOW1IdDNhbkxndzVw?= =?utf-8?B?dDduS0tubTFzRVpveXNXTkhHcjEyTzNXWS9YV01HQUhxNGhvUGxJOFcya1lz?= =?utf-8?B?blUvVHhzdU8zTDdGZ25uRCs5UjVTQldUc0QwRmRORGRBeDIwQWdob3hiajd3?= =?utf-8?B?ZkVQRTUyRXJwaThhWTExT2xQOXg5cndVMTBhMVRHdVVscUVkY3hiUkFMSmRT?= =?utf-8?B?WWd3Um1PZXBlaERTajNzL01xNG1tY25sd3l5a1VDMW1JaVpJdDZ1b3I4NUZq?= =?utf-8?B?NHZrWEtwM1doYXFob1RUTCtVNXRKOFc3UlRyL0MzUjVhMVdONnhMRTB2YjdO?= =?utf-8?B?RjhQdGtpSVp3UVRJV0ZaK0ZVZVQ5dnYvOHpvZlFqSHUvN2JLcGtvSmpNV2JN?= =?utf-8?B?Ukp4OGtSbXRRblVFNVhHTU9Gamd0T1RKUVNmN2JJcUtnZFV0WGo2Y0l2T1hQ?= =?utf-8?B?UEhtSGZyZ1h4UlNMOStrb3FNbnp2VlBVaWdrc2VHUnN6ODBnZmFJUnBLWFBi?= =?utf-8?B?SnBtM3ZEQjBqVXhXeTZ1QnBmdWtHQWdDSm0wMGVBczkwL05xOWRXWk0xVTI0?= =?utf-8?B?V05TT2F6YXlCekdxNUNNYTRXUlBYUEZOaFBVRXh5alNsRlVQb3hHeGNRNFNY?= =?utf-8?B?Q244dGJ6RWdyd213V3Awclhpa0QyMWNIaGY5NmhlY2EyTXp4Tk1XNmsvNloy?= =?utf-8?B?S2F3N1ZORHdDQTA0Z01XbkRCL1dzK3NRVjBva2NtU2JRUnNmN21QRzlsUGl5?= =?utf-8?B?NUZnc0l3MDVUcWU3YUIxY3VONFFlVWRzUE9aZGsvUEpSUWd2aUtoeUdqaDZq?= =?utf-8?B?U3RvaXRUdllWU0pNdFhMVUhreS82Wmdvc2EvOHF1QmxVTWUrV2ZJTFlxS1pO?= =?utf-8?Q?uWYi+Z9l7l/ZAuGKrR6fE9H3p?= Content-Type: multipart/mixed; boundary="_008_OS0PR01MB571623EFD8903C93424EFADC94E99OS0PR01MB5716jpnp_" 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: 5f1d5ea8-8584-496f-0a9a-08dae4c6dea9 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Dec 2022 09:20:01.6311 (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: fh7bOG5CC8zTGqv+C2KXQSpdYmtCBE5BYAA6MHPLqcxZb68tZqfWyF7WX6dW/uvBe6bTddcF4LL6Q4uCdQ+hvw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYCPR01MB10020 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_008_OS0PR01MB571623EFD8903C93424EFADC94E99OS0PR01MB5716jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gRnJpZGF5LCBEZWNlbWJlciAyMywgMjAyMiAxOjUyIFBNIGhvdXpqLmZuc3RAZnVqaXRzdS5j b20gPGhvdXpqLmZuc3RAZnVqaXRzdS5jb20+IHdyb3RlOg0KPiANCj4gT24gVGh1cnNkYXksIERl Y2VtYmVyIDIyLCAyMDIyIDg6MDUgUE0gQW1pdCBLYXBpbGENCj4gPGFtaXQua2FwaWxhMTZAZ21h aWwuY29tPiB3cm90ZToNCj4gPg0KPiA+IE9uIFdlZCwgRGVjIDIxLCAyMDIyIGF0IDExOjAyIEFN IGhvdXpqLmZuc3RAZnVqaXRzdS5jb20NCj4gPiA8aG91emouZm5zdEBmdWppdHN1LmNvbT4gd3Jv dGU6DQo+ID4gPg0KPiA+ID4gQXR0YWNoIHRoZSBuZXcgcGF0Y2ggc2V0IHdoaWNoIGFsc28gaW5j bHVkZXMgc29tZSBjb3NtZXRpYyBjb21tZW50DQo+ID4gPiBjaGFuZ2VzLg0KPiA+ID4NCj4gPg0K PiA+IEZldyBtaW5vciBjb21tZW50czoNCj4gPiA9PT09PT09PT09PT09PT09PQ0KPiA+IDEuDQo+ ID4gKyAgICAgICA8bGl0ZXJhbD50PC9saXRlcmFsPiA9IHNwaWxsIHRoZSBjaGFuZ2VzIG9mIGlu LXByb2dyZXNzDQo+ID4gdHJhbnNhY3Rpb25zIHRvKyAgICAgICBkaXNrIGFuZCBhcHBseSBhdCBv bmNlIGFmdGVyIHRoZSB0cmFuc2FjdGlvbiBpcw0KPiA+IGNvbW1pdHRlZCBvbiB0aGUrICAgICAg IHB1Ymxpc2hlciwNCj4gPg0KPiA+IENhbiB3ZSBjaGFuZ2UgdGhpcyBkZXNjcmlwdGlvbiB0bzog InNwaWxsIHRoZSBjaGFuZ2VzIG9mIGluLXByb2dyZXNzDQo+ID4gdHJhbnNhY3Rpb25zIHRvIGRp c2sgYW5kIGFwcGx5IGF0IG9uY2UgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGlzDQo+ID4gY29tbWl0 dGVkIG9uIHRoZSBwdWJsaXNoZXIgYW5kIHJlY2VpdmVkIGJ5IHRoZSBzdWJzY3JpYmVyLCINCj4g DQo+IENoYW5nZWQuDQo+IA0KPiA+IDIuDQo+ID4gICAgIHRhYmxlIGlzIGluIHByb2dyZXNzLCB0 aGVyZSB3aWxsIGJlIGFkZGl0aW9uYWwgd29ya2VycyBmb3IgdGhlIHRhYmxlcw0KPiA+IC0gICBi ZWluZyBzeW5jaHJvbml6ZWQuDQo+ID4gKyAgIGJlaW5nIHN5bmNocm9uaXplZC4gTW9yZW92ZXIs IGlmIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gaXMgYXBwbGllZCBpbg0KPiA+ICsgICBwYXJh bGxlbCwgdGhlcmUgd2lsbCBiZSBhZGRpdGlvbmFsIHdvcmtlcnMuDQo+ID4NCj4gPiBEbyB3ZSBu ZWVkIHRoaXMgY2hhbmdlIGluIHRoZSBmaXJzdCBwYXRjaD8gV2Ugc2tpcCBwYXJhbGxlbCBhcHBs eQ0KPiA+IHdvcmtlcnMgZnJvbSB2aWV3IGZvciB0aGUgZmlyc3QgcGF0Y2guIEFtLCBJIG1pc3Np bmcgc29tZXRoaW5nPw0KPiANCj4gTm8sIEkgbW92ZWQgdGhpcyB0byAwMDA3IHdoaWNoIGluY2x1 ZGUgcGFyYWxsZWwgYXBwbHkgd29ya2VycyBpbiB0aGUgdmlldy4NCj4gDQo+ID4gMy4NCj4gPiBJ IHRoaW5rIHdlIHdvdWxkIG5lZWQgYSBjYXR2ZXJzaW9uIGJ1bXAgZm9yIHBhcmFsbGVsIGFwcGx5 IGZlYXR1cmUNCj4gPiBiZWNhdXNlIG9mIGJlbG93IGNoYW5nZToNCj4gPiBAQCAtNzkxMywxMSAr NzkxMywxNiBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9uDQo+ID4g Y291bnQmZ3Q7PC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPiZsDQo+ID4NCj4gPiAgICAgICA8 cm93Pg0KPiA+ICAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEg cm9sZT0iY29sdW1uX2RlZmluaXRpb24iPg0KPiA+IC0gICAgICAgPHN0cnVjdGZpZWxkPnN1YnN0 cmVhbTwvc3RydWN0ZmllbGQ+IDx0eXBlPmJvb2w8L3R5cGU+DQo+ID4gKyAgICAgICA8c3RydWN0 ZmllbGQ+c3Vic3RyZWFtPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Y2hhcjwvdHlwZT4NCj4gPiAgICAg ICAgPC9wYXJhPg0KPiA+DQo+ID4gQW0sIEkgbWlzc2luZyBzb21ldGhpbmc/IElmIG5vdCwgdGhl biBJIHRoaW5rIHdlIGNhbiBub3RlIHRoYXQgaW4gdGhlDQo+ID4gY29tbWl0IG1lc3NhZ2UgdG8g YXZvaWQgZm9yZ2V0dGluZyBpdCBiZWZvcmUgY29tbWl0Lg0KPiANCj4gQWRkZWQuDQo+IA0KPiA+ DQo+ID4gNC4gS2luZGx5IGNoYW5nZSB0aGUgYmVsb3cgY29tbWVudHM6DQo+ID4gZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5j DQo+ID4gYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3Jr ZXIuYw0KPiA+IGluZGV4IDk3ZjRhMzAzN2MuLjAyYmI2MDgxODggMTAwNjQ0DQo+ID4gLS0tIGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMNCj4g PiArKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3Jr ZXIuYw0KPiA+IEBAIC05LDExICs5LDEwIEBADQo+ID4gICAqDQo+ID4gICAqIFRoaXMgZmlsZSBj b250YWlucyB0aGUgY29kZSB0byBsYXVuY2gsIHNldCB1cCwgYW5kIHRlYXJkb3duIGEgcGFyYWxs ZWwgYXBwbHkNCj4gPiAgICogd29ya2VyIHdoaWNoIHJlY2VpdmVzIHRoZSBjaGFuZ2VzIGZyb20g dGhlIGxlYWRlciB3b3JrZXIgYW5kDQo+ID4gaW52b2tlcyByb3V0aW5lcw0KPiA+IC0gKiB0byBh cHBseSB0aG9zZSBvbiB0aGUgc3Vic2NyaWJlciBkYXRhYmFzZS4NCj4gPiAtICoNCj4gPiAtICog VGhpcyBmaWxlIGNvbnRhaW5zIHJvdXRpbmVzIHRoYXQgYXJlIGludGVuZGVkIHRvIHN1cHBvcnQg c2V0dGluZw0KPiA+IHVwLCB1c2luZw0KPiA+IC0gKiBhbmQgdGVhcmluZyBkb3duIGEgUGFyYWxs ZWxBcHBseVdvcmtlckluZm8gd2hpY2ggaXMgcmVxdWlyZWQgc28NCj4gPiB0aGUgbGVhZGVyDQo+ ID4gLSAqIHdvcmtlciBhbmQgcGFyYWxsZWwgYXBwbHkgd29ya2VycyBjYW4gY29tbXVuaWNhdGUg d2l0aCBlYWNoIG90aGVyLg0KPiA+ICsgKiB0byBhcHBseSB0aG9zZSBvbiB0aGUgc3Vic2NyaWJl ciBkYXRhYmFzZS4gQWRkaXRpb25hbGx5LCB0aGlzIGZpbGUNCj4gPiArIGNvbnRhaW5zDQo+ID4g KyAqIHJvdXRpbmVzIHRoYXQgYXJlIGludGVuZGVkIHRvIHN1cHBvcnQgc2V0dGluZyB1cCwgdXNp bmcsIGFuZA0KPiA+ICsgdGVhcmluZyBkb3duIGENCj4gPiArICogUGFyYWxsZWxBcHBseVdvcmtl ckluZm8gd2hpY2ggaXMgcmVxdWlyZWQgc28gdGhlIGxlYWRlciB3b3JrZXIgYW5kDQo+ID4gKyBw YXJhbGxlbA0KPiA+ICsgKiBhcHBseSB3b3JrZXJzIGNhbiBjb21tdW5pY2F0ZSB3aXRoIGVhY2gg b3RoZXIuDQo+ID4gICAqDQo+ID4gICAqIFRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGFyZSBh c3NpZ25lZCAoaWYgYXZhaWxhYmxlKSBhcyBzb29uIGFzIHhhY3Qncw0KPiA+ICAgKiBmaXJzdCBz dHJlYW0gaXMgcmVjZWl2ZWQgZm9yIHN1YnNjcmlwdGlvbnMgdGhhdCBoYXZlIHNldCB0aGVpciAn c3RyZWFtaW5nJw0KPiANCj4gTWVyZ2VkLg0KPiANCj4gQmVzaWRlcywgSSBhbHNvIGRpZCB0aGUg Zm9sbG93aW5nIGNoYW5nZXM6DQo+IDEuIEFkZGVkIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb25f aW5mbyBpbiBsZWFkZXIgYmVmb3JlIGFzc2lnbmluZyB0aGUNCj4gICAgdHJhbnNhY3Rpb24gdG8g cGFyYWxsZWwgYXBwbHkgd29ya2VyIChTYXdhZGEtc2FuJ3MgY29tbWVudHNbMV0pIDIuIFJlbW92 ZWQNCj4gdGhlICJvdXQgb2YgcGFyYWxsZWwgYXBwbHkgd29ya2VycyIgTE9HICggU2F3YWRhLXNh bidzIGNvbW1lbnRzWzFdKSAzLg0KPiBJbXByb3ZlZCBhIGVsb2cgbWVzc2FnZSAoU2F3YWRhLXNh bidzIGNvbW1lbnRzWzFdKS4NCj4gNC4gTW92ZWQgdGhlIHRlc3RjYXNlcyBmcm9tIDAzMl94eCBp bnRvIGV4aXN0aW5nIDAxNV9zdHJlYW0ucGwgd2hpY2ggY2FuIHNhdmUNCj4gdGhlIGluaXRpYWxp emF0aW9uIHRpbWUuIFNpbmNlIHdlIGludHJvZHVjZWQgcXVpdGUgYSBmZXcgdGVzdGNhc2VzIGlu IHRoaXMgcGF0Y2ggc2V0LA0KPiBzbyBJIGRpZCB0aGlzIHRvIHRyeSB0byByZWR1Y2UgdGhlIHRl c3RpbmcgdGltZSB0aGF0IGluY3JlYXNlZCBhZnRlciBhcHBseWluZyB0aGVzZQ0KPiBwYXRjaGVz Lg0KDQpJIG5vdGljZWQgYSBDRmJvdCBmYWlsdXJlIGluIG9uZSBvZiB0aGUgbmV3IHRlc3RjYXNl cyBpbiAwMTVfc3RyZWFtLnBsIHdoaWNoDQpjb21lcyBmcm9tIG9sZCAwMzJfeHgucGwuIEl0J3Mg YmVjYXVzZSBJIHNsaWdodGx5IGFkanVzdGVkIHRoZSBjaGFuZ2Ugc2l6ZSBpbiBhDQp0cmFuc2Fj dGlvbiBpbiBsYXN0IHZlcnNpb24gd2hpY2ggY2F1c2UgdGhlIHRyYW5zYWN0aW9uJ3Mgc2l6ZSBu b3QgdG8gZXhjZWVkIHRoZQ0KZGVjb2Rpbmcgd29yayBtZW0sIHNvIHRoZSB0cmFuc2FjdGlvbiBp cyBub3QgYmVpbmcgYXBwbGllZCBhcyBleHBlY3RlZCBhcw0Kc3RyZWFtaW5nIHRyYW5zYWN0aW9u cyhpdCBpcyBhcHBsaWVkIGFzIGEgbm9uLXN0cmVtYWluZyB0cmFuc2FjdGlvbikgd2hpY2gNCmNh dXNlIHRoZSBmYWlsdXJlLiBBdHRhY2ggdGhlIG5ldyB2ZXJzaW9uIHBhdGNoIHdoaWNoIGZpeGVk IHRoaXMgbWlzcy4NCg0KQmVzdCByZWdhcmRzLA0KSG91IHpqDQo= --_008_OS0PR01MB571623EFD8903C93424EFADC94E99OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v66-0007-Add-a-main_worker_pid-to-pg_stat_subscription.patch" Content-Description: v66-0007-Add-a-main_worker_pid-to-pg_stat_subscription.patch Content-Disposition: attachment; filename="v66-0007-Add-a-main_worker_pid-to-pg_stat_subscription.patch"; size=9720; creation-date="Fri, 23 Dec 2022 09:19:04 GMT"; modification-date="Fri, 23 Dec 2022 09:19:56 GMT" Content-Transfer-Encoding: base64 RnJvbSA5MTk4YTAzOGRmNzQ2OWNhNjM0M2I2YTIyMmM4NTEwNWUzNTkxNjUzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFRodSwgNiBPY3QgMjAyMiAxNDo0MjoyNCArMDgwMApTdWJqZWN0OiBbUEFUQ0gg djY2IDcvN10gQWRkIGEgbWFpbl93b3JrZXJfcGlkIHRvIHBnX3N0YXRfc3Vic2NyaXB0aW9uCgpt YWluX3dvcmtlcl9waWQgaXMgUHJvY2VzcyBJRCBvZiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciwg aWYgdGhpcyBwcm9jZXNzIGlzIGEKYXBwbHkgcGFyYWxsZWwgd29ya2VyLiBOVUxMIGlmIHRoaXMg cHJvY2VzcyBpcyBhIGxlYWRlciBhcHBseSB3b3JrZXIgb3IgYQpzeW5jaHJvbml6YXRpb24gd29y a2VyLgoKVGhlIG5ldyBjb2x1bW4gY2FuIG1ha2UgaXQgZWFzaWVyIHRvIGRpc3Rpbmd1aXNoIGxl YWRlciBhcHBseSB3b3JrZXIgYW5kIGFwcGx5CnBhcmFsbGVsIHdvcmtlciB3aGljaCBpcyBhbHNv IHNpbWlsYXIgdG8gdGhlICdsZWFkZXJfcGlkJyBjb2x1bW4gaW4KcGdfc3RhdF9hY3Rpdml0eS4K LS0tCiBkb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sICAgICAgfCAgMyArLQog ZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAgICAgICAgICAgICAgIHwgMjYgKysrKysrKysr KysrKystLS0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgICAgICAgfCAg MSArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMgfCAzMiArKysr KysrKysrKystLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAg ICAgICAgfCAgNiArKy0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCAgICAg ICAgfCAgMyArLQogNiBmaWxlcyBjaGFuZ2VkLCA0NSBpbnNlcnRpb25zKCspLCAyNiBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21s IGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAppbmRleCAwZDI4OWFjYTI1 Li5hNjNmYTE1NDlhIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlv bi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKQEAgLTE2 ODcsNyArMTY4Nyw4IEBAIENPTlRFWFQ6ICBwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBs aWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBkdXJpbmcgIklOU0VSCiAgICBzdWJzY3JpcHRpb24u ICBBIGRpc2FibGVkIHN1YnNjcmlwdGlvbiBvciBhIGNyYXNoZWQgc3Vic2NyaXB0aW9uIHdpbGwg aGF2ZQogICAgemVybyByb3dzIGluIHRoaXMgdmlldy4gIElmIHRoZSBpbml0aWFsIGRhdGEgc3lu Y2hyb25pemF0aW9uIG9mIGFueQogICAgdGFibGUgaXMgaW4gcHJvZ3Jlc3MsIHRoZXJlIHdpbGwg YmUgYWRkaXRpb25hbCB3b3JrZXJzIGZvciB0aGUgdGFibGVzCi0gICBiZWluZyBzeW5jaHJvbml6 ZWQuCisgICBiZWluZyBzeW5jaHJvbml6ZWQuIE1vcmVvdmVyLCBpZiB0aGUgc3RyZWFtaW5nIHRy YW5zYWN0aW9uIGlzIGFwcGxpZWQgaW4KKyAgIHBhcmFsbGVsLCB0aGVyZSB3aWxsIGJlIGFkZGl0 aW9uYWwgd29ya2Vycy4KICAgPC9wYXJhPgogIDwvc2VjdDE+CiAKZGlmZiAtLWdpdCBhL2RvYy9z cmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCmlu ZGV4IGVhZmVlYWRmNDcuLjJhNTE4MWY0OGEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9tb25p dG9yaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbApAQCAtMzE4OSwx MyArMzE4OSwyNCBAQCBTRUxFQ1QgcGlkLCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQgRlJP TSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIHdhaXRfZXZlbnQgaQogICAgICAgPC9wYXJhPjwvZW50 cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxv Z190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxz dHJ1Y3RmaWVsZD5hcHBseV9sZWFkZXJfcGlkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50ZWdlcjwv dHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFByb2Nlc3MgSUQgb2Yg dGhlIGxlYWRlciBhcHBseSB3b3JrZXIsIGlmIHRoaXMgcHJvY2VzcyBpcyBhIGFwcGx5CisgICAg ICAgcGFyYWxsZWwgd29ya2VyLiBOVUxMIGlmIHRoaXMgcHJvY2VzcyBpcyBhIGxlYWRlciBhcHBs eSB3b3JrZXIgb3IgYQorICAgICAgIHN5bmNocm9uaXphdGlvbiB3b3JrZXIuCisgICAgICA8L3Bh cmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeSByb2xl PSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CiAg ICAgICAgPHN0cnVjdGZpZWxkPnJlbGlkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgog ICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CiAgICAgICAgT0lEIG9mIHRoZSByZWxhdGlvbiB0 aGF0IHRoZSB3b3JrZXIgaXMgc3luY2hyb25pemluZzsgbnVsbCBmb3IgdGhlCi0gICAgICAgbWFp biBhcHBseSB3b3JrZXIKKyAgICAgICBtYWluIGFwcGx5IHdvcmtlciBhbmQgdGhlIHBhcmFsbGVs IGFwcGx5IHdvcmtlcgogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCkBAIC0z MjA1LDcgKzMyMTYsNyBAQCBTRUxFQ1QgcGlkLCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQg RlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIHdhaXRfZXZlbnQgaQogICAgICAgPC9wYXJhPgog ICAgICAgPHBhcmE+CiAgICAgICAgTGFzdCB3cml0ZS1haGVhZCBsb2cgbG9jYXRpb24gcmVjZWl2 ZWQsIHRoZSBpbml0aWFsIHZhbHVlIG9mCi0gICAgICAgdGhpcyBmaWVsZCBiZWluZyAwCisgICAg ICAgdGhpcyBmaWVsZCBiZWluZyAwOyBudWxsIGZvciB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vy CiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKQEAgLTMyMTQsNyArMzIyNSw4 IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRf YWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICAgPHN0cnVjdGZpZWxkPmxhc3RfbXNn X3NlbmRfdGltZTwvc3RydWN0ZmllbGQ+IDx0eXBlPnRpbWVzdGFtcCB3aXRoIHRpbWUgem9uZTwv dHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgotICAgICAgIFNlbmQgdGltZSBvZiBs YXN0IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBvcmlnaW4gV0FMIHNlbmRlcgorICAgICAgIFNlbmQg dGltZSBvZiBsYXN0IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBvcmlnaW4gV0FMIHNlbmRlcjsgbnVs bCBmb3IgdGhlCisgICAgICAgcGFyYWxsZWwgYXBwbHkgd29ya2VyCiAgICAgICA8L3BhcmE+PC9l bnRyeT4KICAgICAgPC9yb3c+CiAKQEAgLTMyMjMsNyArMzIzNSw4IEBAIFNFTEVDVCBwaWQsIHdh aXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2Fp dF9ldmVudCBpCiAgICAgICAgPHN0cnVjdGZpZWxkPmxhc3RfbXNnX3JlY2VpcHRfdGltZTwvc3Ry dWN0ZmllbGQ+IDx0eXBlPnRpbWVzdGFtcCB3aXRoIHRpbWUgem9uZTwvdHlwZT4KICAgICAgIDwv cGFyYT4KICAgICAgIDxwYXJhPgotICAgICAgIFJlY2VpcHQgdGltZSBvZiBsYXN0IG1lc3NhZ2Ug cmVjZWl2ZWQgZnJvbSBvcmlnaW4gV0FMIHNlbmRlcgorICAgICAgIFJlY2VpcHQgdGltZSBvZiBs YXN0IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBvcmlnaW4gV0FMIHNlbmRlcjsgbnVsbCBmb3IKKyAg ICAgICB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAg ICAgPC9yb3c+CiAKQEAgLTMyMzIsNyArMzI0NSw4IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRf dHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBp CiAgICAgICAgPHN0cnVjdGZpZWxkPmxhdGVzdF9lbmRfbHNuPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+ cGdfbHNuPC90eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+Ci0gICAgICAgTGFzdCB3 cml0ZS1haGVhZCBsb2cgbG9jYXRpb24gcmVwb3J0ZWQgdG8gb3JpZ2luIFdBTCBzZW5kZXIKKyAg ICAgICBMYXN0IHdyaXRlLWFoZWFkIGxvZyBsb2NhdGlvbiByZXBvcnRlZCB0byBvcmlnaW4gV0FM IHNlbmRlcjsgbnVsbCBmb3IKKyAgICAgICB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyCiAgICAg ICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKQEAgLTMyNDIsNyArMzI1Niw3IEBAIFNF TEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZp dHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAg ICBUaW1lIG9mIGxhc3Qgd3JpdGUtYWhlYWQgbG9nIGxvY2F0aW9uIHJlcG9ydGVkIHRvIG9yaWdp biBXQUwKLSAgICAgICBzZW5kZXIKKyAgICAgICBzZW5kZXI7IG51bGwgZm9yIHRoZSBwYXJhbGxl bCBhcHBseSB3b3JrZXIKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KICAgICA8 L3Rib2R5PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3Fs IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IGMyYzdkOGE4Yjcu LmYyODI1NzA1ZjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdz LnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTk0OSw2 ICs5NDksNyBAQCBDUkVBVEUgVklFVyBwZ19zdGF0X3N1YnNjcmlwdGlvbiBBUwogICAgICAgICAg ICAgc3Uub2lkIEFTIHN1YmlkLAogICAgICAgICAgICAgc3Uuc3VibmFtZSwKICAgICAgICAgICAg IHN0LnBpZCwKKyAgICAgICAgICAgIHN0LmFwcGx5X2xlYWRlcl9waWQsCiAgICAgICAgICAgICBz dC5yZWxpZCwKICAgICAgICAgICAgIHN0LnJlY2VpdmVkX2xzbiwKICAgICAgICAgICAgIHN0Lmxh c3RfbXNnX3NlbmRfdGltZSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvbGF1bmNoZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNo ZXIuYwppbmRleCA3NTlmOTY0ZmJkLi5hZWRhNWNkMTIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9sYXVuY2hlci5jCkBAIC0xMDcyLDcgKzEwNzIsNyBAQCBJc0xvZ2ljYWxM YXVuY2hlcih2b2lkKQogRGF0dW0KIHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbihQR19GVU5DVElP Tl9BUkdTKQogewotI2RlZmluZSBQR19TVEFUX0dFVF9TVUJTQ1JJUFRJT05fQ09MUwk4CisjZGVm aW5lIFBHX1NUQVRfR0VUX1NVQlNDUklQVElPTl9DT0xTCTkKIAlPaWQJCQlzdWJpZCA9IFBHX0FS R0lTTlVMTCgwKSA/IEludmFsaWRPaWQgOiBQR19HRVRBUkdfT0lEKDApOwogCWludAkJCWk7CiAJ UmV0dXJuU2V0SW5mbyAqcnNpbmZvID0gKFJldHVyblNldEluZm8gKikgZmNpbmZvLT5yZXN1bHRp bmZvOwpAQCAtMTA5OCwxMCArMTA5OCw2IEBAIHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbihQR19G VU5DVElPTl9BUkdTKQogCQlpZiAoT2lkSXNWYWxpZChzdWJpZCkgJiYgd29ya2VyLnN1YmlkICE9 IHN1YmlkKQogCQkJY29udGludWU7CiAKLQkJLyogU2tpcCBpZiB0aGlzIGlzIGEgcGFyYWxsZWwg YXBwbHkgd29ya2VyICovCi0JCWlmIChpc1BhcmFsbGVsQXBwbHlXb3JrZXIoJndvcmtlcikpCi0J CQljb250aW51ZTsKLQogCQl3b3JrZXJfcGlkID0gd29ya2VyLnByb2MtPnBpZDsKIAogCQl2YWx1 ZXNbMF0gPSBPYmplY3RJZEdldERhdHVtKHdvcmtlci5zdWJpZCk7CkBAIC0xMTEwLDI2ICsxMTA2 LDMyIEBAIHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbihQR19GVU5DVElPTl9BUkdTKQogCQllbHNl CiAJCQludWxsc1sxXSA9IHRydWU7CiAJCXZhbHVlc1syXSA9IEludDMyR2V0RGF0dW0od29ya2Vy X3BpZCk7Ci0JCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKHdvcmtlci5sYXN0X2xzbikpCisKKwkJ aWYgKHdvcmtlci5hcHBseV9sZWFkZXJfcGlkID09IEludmFsaWRQaWQpCiAJCQludWxsc1szXSA9 IHRydWU7CiAJCWVsc2UKLQkJCXZhbHVlc1szXSA9IExTTkdldERhdHVtKHdvcmtlci5sYXN0X2xz bik7Ci0JCWlmICh3b3JrZXIubGFzdF9zZW5kX3RpbWUgPT0gMCkKKwkJCXZhbHVlc1szXSA9IElu dDMyR2V0RGF0dW0od29ya2VyLmFwcGx5X2xlYWRlcl9waWQpOworCisJCWlmIChYTG9nUmVjUHRy SXNJbnZhbGlkKHdvcmtlci5sYXN0X2xzbikpCiAJCQludWxsc1s0XSA9IHRydWU7CiAJCWVsc2UK LQkJCXZhbHVlc1s0XSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0od29ya2VyLmxhc3Rfc2VuZF90aW1l KTsKLQkJaWYgKHdvcmtlci5sYXN0X3JlY3ZfdGltZSA9PSAwKQorCQkJdmFsdWVzWzRdID0gTFNO R2V0RGF0dW0od29ya2VyLmxhc3RfbHNuKTsKKwkJaWYgKHdvcmtlci5sYXN0X3NlbmRfdGltZSA9 PSAwKQogCQkJbnVsbHNbNV0gPSB0cnVlOwogCQllbHNlCi0JCQl2YWx1ZXNbNV0gPSBUaW1lc3Rh bXBUekdldERhdHVtKHdvcmtlci5sYXN0X3JlY3ZfdGltZSk7Ci0JCWlmIChYTG9nUmVjUHRySXNJ bnZhbGlkKHdvcmtlci5yZXBseV9sc24pKQorCQkJdmFsdWVzWzVdID0gVGltZXN0YW1wVHpHZXRE YXR1bSh3b3JrZXIubGFzdF9zZW5kX3RpbWUpOworCQlpZiAod29ya2VyLmxhc3RfcmVjdl90aW1l ID09IDApCiAJCQludWxsc1s2XSA9IHRydWU7CiAJCWVsc2UKLQkJCXZhbHVlc1s2XSA9IExTTkdl dERhdHVtKHdvcmtlci5yZXBseV9sc24pOwotCQlpZiAod29ya2VyLnJlcGx5X3RpbWUgPT0gMCkK KwkJCXZhbHVlc1s2XSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0od29ya2VyLmxhc3RfcmVjdl90aW1l KTsKKwkJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQod29ya2VyLnJlcGx5X2xzbikpCiAJCQludWxs c1s3XSA9IHRydWU7CiAJCWVsc2UKLQkJCXZhbHVlc1s3XSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0o d29ya2VyLnJlcGx5X3RpbWUpOworCQkJdmFsdWVzWzddID0gTFNOR2V0RGF0dW0od29ya2VyLnJl cGx5X2xzbik7CisJCWlmICh3b3JrZXIucmVwbHlfdGltZSA9PSAwKQorCQkJbnVsbHNbOF0gPSB0 cnVlOworCQllbHNlCisJCQl2YWx1ZXNbOF0gPSBUaW1lc3RhbXBUekdldERhdHVtKHdvcmtlci5y ZXBseV90aW1lKTsKIAogCQl0dXBsZXN0b3JlX3B1dHZhbHVlcyhyc2luZm8tPnNldFJlc3VsdCwg cnNpbmZvLT5zZXREZXNjLAogCQkJCQkJCSB2YWx1ZXMsIG51bGxzKTsKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3By b2MuZGF0CmluZGV4IDg4YmQ0NzJlY2QuLjJiNTYwYjIwZWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9j LmRhdApAQCAtNTQyNiw5ICs1NDI2LDkgQEAKICAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfc3Vi c2NyaXB0aW9uJywgcHJvcm93cyA9PiAnMTAnLCBwcm9pc3N0cmljdCA9PiAnZicsCiAgIHByb3Jl dHNldCA9PiAndCcsIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcGFyYWxsZWwgPT4gJ3InLAogICBw cm9yZXR0eXBlID0+ICdyZWNvcmQnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKLSAgcHJvYWxsYXJn dHlwZXMgPT4gJ3tvaWQsb2lkLG9pZCxpbnQ0LHBnX2xzbix0aW1lc3RhbXB0eix0aW1lc3RhbXB0 eixwZ19sc24sdGltZXN0YW1wdHp9JywKLSAgcHJvYXJnbW9kZXMgPT4gJ3tpLG8sbyxvLG8sbyxv LG8sb30nLAotICBwcm9hcmduYW1lcyA9PiAne3N1YmlkLHN1YmlkLHJlbGlkLHBpZCxyZWNlaXZl ZF9sc24sbGFzdF9tc2dfc2VuZF90aW1lLGxhc3RfbXNnX3JlY2VpcHRfdGltZSxsYXRlc3RfZW5k X2xzbixsYXRlc3RfZW5kX3RpbWV9JywKKyAgcHJvYWxsYXJndHlwZXMgPT4gJ3tvaWQsb2lkLG9p ZCxpbnQ0LGludDQscGdfbHNuLHRpbWVzdGFtcHR6LHRpbWVzdGFtcHR6LHBnX2xzbix0aW1lc3Rh bXB0en0nLAorICBwcm9hcmdtb2RlcyA9PiAne2ksbyxvLG8sbyxvLG8sbyxvLG99JywKKyAgcHJv YXJnbmFtZXMgPT4gJ3tzdWJpZCxzdWJpZCxyZWxpZCxwaWQsYXBwbHlfbGVhZGVyX3BpZCxyZWNl aXZlZF9sc24sbGFzdF9tc2dfc2VuZF90aW1lLGxhc3RfbXNnX3JlY2VpcHRfdGltZSxsYXRlc3Rf ZW5kX2xzbixsYXRlc3RfZW5kX3RpbWV9JywKICAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF9zdWJz Y3JpcHRpb24nIH0sCiB7IG9pZCA9PiAnMjAyNicsIGRlc2NyID0+ICdzdGF0aXN0aWNzOiBjdXJy ZW50IGJhY2tlbmQgUElEJywKICAgcHJvbmFtZSA9PiAncGdfYmFja2VuZF9waWQnLCBwcm92b2xh dGlsZSA9PiAncycsIHByb3BhcmFsbGVsID0+ICdyJywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxl cy5vdXQKaW5kZXggZmI5ZjkzNmQ0My4uN2U2ZWE2MGY5ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9ydWxlcy5vdXQKQEAgLTIwOTQsNiArMjA5NCw3IEBAIHBnX3N0YXRfc3NsfCBTRUxFQ1Qgcy5w aWQsCiBwZ19zdGF0X3N1YnNjcmlwdGlvbnwgU0VMRUNUIHN1Lm9pZCBBUyBzdWJpZCwKICAgICBz dS5zdWJuYW1lLAogICAgIHN0LnBpZCwKKyAgICBzdC5hcHBseV9sZWFkZXJfcGlkLAogICAgIHN0 LnJlbGlkLAogICAgIHN0LnJlY2VpdmVkX2xzbiwKICAgICBzdC5sYXN0X21zZ19zZW5kX3RpbWUs CkBAIC0yMTAxLDcgKzIxMDIsNyBAQCBwZ19zdGF0X3N1YnNjcmlwdGlvbnwgU0VMRUNUIHN1Lm9p ZCBBUyBzdWJpZCwKICAgICBzdC5sYXRlc3RfZW5kX2xzbiwKICAgICBzdC5sYXRlc3RfZW5kX3Rp bWUKICAgIEZST00gKHBnX3N1YnNjcmlwdGlvbiBzdQotICAgICBMRUZUIEpPSU4gcGdfc3RhdF9n ZXRfc3Vic2NyaXB0aW9uKE5VTEw6Om9pZCkgc3Qoc3ViaWQsIHJlbGlkLCBwaWQsIHJlY2VpdmVk X2xzbiwgbGFzdF9tc2dfc2VuZF90aW1lLCBsYXN0X21zZ19yZWNlaXB0X3RpbWUsIGxhdGVzdF9l bmRfbHNuLCBsYXRlc3RfZW5kX3RpbWUpIE9OICgoc3Quc3ViaWQgPSBzdS5vaWQpKSk7CisgICAg IExFRlQgSk9JTiBwZ19zdGF0X2dldF9zdWJzY3JpcHRpb24oTlVMTDo6b2lkKSBzdChzdWJpZCwg cmVsaWQsIHBpZCwgYXBwbHlfbGVhZGVyX3BpZCwgcmVjZWl2ZWRfbHNuLCBsYXN0X21zZ19zZW5k X3RpbWUsIGxhc3RfbXNnX3JlY2VpcHRfdGltZSwgbGF0ZXN0X2VuZF9sc24sIGxhdGVzdF9lbmRf dGltZSkgT04gKChzdC5zdWJpZCA9IHN1Lm9pZCkpKTsKIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3N0 YXRzfCBTRUxFQ1Qgc3Muc3ViaWQsCiAgICAgcy5zdWJuYW1lLAogICAgIHNzLmFwcGx5X2Vycm9y X2NvdW50LAotLSAKMi4yMy4wLndpbmRvd3MuMQoK --_008_OS0PR01MB571623EFD8903C93424EFADC94E99OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v66-0001-Perform-streaming-logical-transactions-by-parall.patch" Content-Description: v66-0001-Perform-streaming-logical-transactions-by-parall.patch Content-Disposition: attachment; filename="v66-0001-Perform-streaming-logical-transactions-by-parall.patch"; size=219817; creation-date="Fri, 23 Dec 2022 09:19:04 GMT"; modification-date="Fri, 23 Dec 2022 09:19:57 GMT" Content-Transfer-Encoding: base64 RnJvbSA1YmVmNTE4MjlhZDcyZGY2NWUwYmZiYTlkMzhjOGEyYWE3YTVjMTVkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjAgQXByIDIwMjIgMTY6NDU6MDcgKzA4MDAKU3ViamVjdDogW1BBVENI IHY2NiAxLzddIFBlcmZvcm0gc3RyZWFtaW5nIGxvZ2ljYWwgdHJhbnNhY3Rpb25zIGJ5IHBhcmFs bGVsCiB3b3JrZXJzCgpDdXJyZW50bHksIGZvciBsYXJnZSB0cmFuc2FjdGlvbnMsIHRoZSBwdWJs aXNoZXIgc2VuZHMgdGhlIGRhdGEgaW4gbXVsdGlwbGUKc3RyZWFtcyAoY2hhbmdlcyBkaXZpZGVk IGludG8gY2h1bmtzIGRlcGVuZGluZyB1cG9uIGxvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW0pLAph bmQgdGhlbiBvbiB0aGUgc3Vic2NyaWJlci1zaWRlLCB0aGUgYXBwbHkgd29ya2VyIHdyaXRlcyB0 aGUgY2hhbmdlcyBpbnRvCnRlbXBvcmFyeSBmaWxlcyBhbmQgb25jZSBpdCByZWNlaXZlcyB0aGUg Y29tbWl0LCBpdCByZWFkcyBmcm9tIHRob3NlIGZpbGVzIGFuZAphcHBsaWVzIHRoZSBlbnRpcmUg dHJhbnNhY3Rpb24uIFRvIGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIG9mIHN1Y2gKdHJhbnNhY3Rp b25zLCB3ZSBjYW4gaW5zdGVhZCBhbGxvdyB0aGVtIHRvIGJlIGFwcGxpZWQgdmlhIHBhcmFsbGVs IHdvcmtlcnMuCgpJbiB0aGlzIGFwcHJvYWNoLCB3ZSBhc3NpZ24gYSBuZXcgcGFyYWxsZWwgYXBw bHkgd29ya2VyIChpZiBhdmFpbGFibGUpIGFzIHNvb24KYXMgdGhlIHhhY3QncyBmaXJzdCBzdHJl YW0gaXMgcmVjZWl2ZWQgYW5kIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHdpbGwgc2VuZApjaGFu Z2VzIHRvIHRoaXMgbmV3IHdvcmtlciB2aWEgc2hhcmVkIG1lbW9yeS4gVGhlIHBhcmFsbGVsIGFw cGx5IHdvcmtlciB3aWxsCmRpcmVjdGx5IGFwcGx5IHRoZSBjaGFuZ2UgaW5zdGVhZCBvZiB3cml0 aW5nIGl0IHRvIHRlbXBvcmFyeSBmaWxlcy4gSG93ZXZlciwgaWYKdGhlIGxlYWRlciBhcHBseSB3 b3JrZXIgdGltZXMgb3V0IHdoaWxlIGF0dGVtcHRpbmcgdG8gc2VuZCBhIG1lc3NhZ2UgdG8gdGhl CnBhcmFsbGVsIGFwcGx5IHdvcmtlciwgaXQgd2lsbCBzd2l0Y2ggdG8gInBhcnRpYWwgc2VyaWFs aXplIiBtb2RlIC0gIGluIHRoaXMKbW9kZSB0aGUgbGVhZGVyIHNlcmlhbGl6ZXMgYWxsIHJlbWFp bmluZyBjaGFuZ2VzIHRvIGEgZmlsZSBhbmQgbm90aWZpZXMgdGhlCnBhcmFsbGVsIGFwcGx5IHdv cmtlcnMgdG8gcmVhZCBhbmQgYXBwbHkgdGhlbSBhdCB0aGUgZW5kIG9mIHRoZSB0cmFuc2FjdGlv bi4gV2UKa2VlcCB0aGlzIHBhcmFsbGVsIGFwcGx5IGFzc2lnbmVkIHRpbGwgdGhlIHRyYW5zYWN0 aW9uIGNvbW1pdCBpcyByZWNlaXZlZCBhbmQKYWxzbyB3YWl0IGZvciB0aGUgd29ya2VyIHRvIGZp bmlzaCBhdCBjb21taXQuIFRoaXMgcHJlc2VydmVzIGNvbW1pdCBvcmRlcmluZwphbmQgYXZvaWRz IHdyaXRpbmcgdG8gYW5kIHJlYWRpbmcgZnJvbSBmaWxlcyBpbiBtb3N0IGNhc2VzLiBXZSBzdGls bCBuZWVkIHRvCnNwaWxsIGlmIHRoZXJlIGlzIG5vIHdvcmtlciBhdmFpbGFibGUuCgpUaGlzIHBh dGNoIGFsc28gZXh0ZW5kcyB0aGUgU1VCU0NSSVBUSU9OICdzdHJlYW1pbmcnIHBhcmFtZXRlciBz byB0aGF0IHRoZSB1c2VyCmNhbiBjb250cm9sIHdoZXRoZXIgdG8gYXBwbHkgdGhlIHN0cmVhbWlu ZyB0cmFuc2FjdGlvbiBpbiBhIHBhcmFsbGVsIGFwcGx5CndvcmtlciBvciBzcGlsbCB0aGUgY2hh bmdlIHRvIGRpc2suIFRoZSB1c2VyIGNhbiBzZXQgdGhlIHN0cmVhbWluZyBwYXJhbWV0ZXIgdG8K J29uL29mZicsICdwYXJhbGxlbCcuIFRoZSBwYXJhbWV0ZXIgdmFsdWUgJ3BhcmFsbGVsJyBtZWFu cyB0aGUgc3RyZWFtaW5nIHdpbGwKYmUgYXBwbGllZCB2aWEgYSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIsIGlmIGF2YWlsYWJsZS4gVGhlIHBhcmFtZXRlciB2YWx1ZQonb24nIG1lYW5zIHRoZSBzdHJl YW1pbmcgdHJhbnNhY3Rpb24gd2lsbCBiZSBzcGlsbGVkIHRvIGRpc2suIFRoZSBkZWZhdWx0IHZh bHVlCmlzICdvZmYnIChzYW1lIGFzIGN1cnJlbnQgYmVoYXZpb3VyKS4KCkluIGFkZGl0aW9uLCB0 aGUgcGF0Y2ggZXh0ZW5kcyB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiBTVFJFQU1fQUJPUlQgbWVz c2FnZSBzbwp0aGF0IGFib3J0X3RpbWUgYW5kIGFib3J0X2xzbiBjYW4gYWxzbyBiZSBzZW50IHdo aWNoIGNhbiBiZSB1c2VkIHRvIHVwZGF0ZSB0aGUKcmVwbGljYXRpb24gb3JpZ2luIGluIHBhcmFs bGVsIGFwcGx5IHdvcmtlciB3aGVuIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gaXMKYWJvcnRl ZC4gQmVjYXVzZSB0aGlzIG1lc3NhZ2UgZXh0ZW5zaW9uIGlzIG5lZWRlZCB0byBzdXBwb3J0IHBh cmFsbGVsCnN0cmVhbWluZywgcGFyYWxsZWwgc3RyZWFtaW5nIGlzIG5vdCBzdXBwb3J0ZWQgZm9y IHB1YmxpY2F0aW9ucyBvbiBzZXJ2ZXJzIDwKUEcxNi4KCk5vdGU6IFNpbmNlIHRoZSBmaWVsZCAn c3Vic3RyZWFtJyBvZiBjYXRhbG9nICdwZ19zdWJzY3JpcHRpb24nIGhhcyBiZWVuCmV4cGFuZGVk LCB3ZSBuZWVkIGJ1bXAgY2F0YWxvZyB2ZXJzaW9uLgotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9n cy5zZ21sICAgICAgICAgICAgICAgICAgICB8ICAgMTEgKy0KIGRvYy9zcmMvc2dtbC9jb25maWcu c2dtbCAgICAgICAgICAgICAgICAgICAgICB8ICAgMjggKy0KIGRvYy9zcmMvc2dtbC9sb2dpY2Fs LXJlcGxpY2F0aW9uLnNnbWwgICAgICAgICB8ICAgMjIgKy0KIGRvYy9zcmMvc2dtbC9tb25pdG9y aW5nLnNnbWwgICAgICAgICAgICAgICAgICB8ICAgIDUgKwogZG9jL3NyYy9zZ21sL3Byb3RvY29s LnNnbWwgICAgICAgICAgICAgICAgICAgIHwgICAyOSArLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfc3Vic2NyaXB0aW9uLnNnbWwgICAgIHwgICAyNCArLQogZG9jL3NyYy9zZ21sL3N5c3RlbS12 aWV3cy5zZ21sICAgICAgICAgICAgICAgIHwgICAgNSArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0veGFjdC5jICAgICAgICAgICAgIHwgICAyNCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMv c3Vic2NyaXB0aW9uY21kcy5jICAgICAgIHwgICA2NyArLQogc3JjL2JhY2tlbmQvbGlicHEvcHFt cS5jICAgICAgICAgICAgICAgICAgICAgIHwgICAxOCArLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9iZ3dvcmtlci5jICAgICAgICAgICAgIHwgICAgMyArCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVy L2ludGVycnVwdC5jICAgICAgICAgICAgfCAgICA1ICstCiAuLi4vbGlicHF3YWxyZWNlaXZlci9s aWJwcXdhbHJlY2VpdmVyLmMgICAgICAgfCAgICA2ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL01ha2VmaWxlICAgICAgfCAgICAxICsKIC4uLi9yZXBsaWNhdGlvbi9sb2dpY2Fs L2FwcGx5cGFyYWxsZWx3b3JrZXIuYyB8IDE2MjcgKysrKysrKysrKysrKysrKysKIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgICAgICB8ICAgIDUgKy0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyAgICB8ICAyMjAgKystCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL21lc29uLmJ1aWxkICAgfCAgICAxICsKIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMgICAgICB8ICAgMjYgKy0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYyAgICAgICB8ICAgMzcgKy0KIC4uLi9yZXBs aWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYyAgICAgICB8ICAgIDUgKy0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgICB8ICAgMjUgKy0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICB8IDEzNTkgKysrKysrKysrKyst LS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgICB8ICAgMjIg Ky0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYyAgICAgICAgICB8ICAgIDQg Kwogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xtZ3IuYyAgICAgICAgICAgICAgIHwgICA0NiAr CiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgICAgICAgfCAgICAzICsK IHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYyAgICAgICB8ICAgIDYgKwog c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2xvY2tmdW5jcy5jICAgICAgICAgICAgIHwgICAgNSArLQog c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgICAgICAgICAgIHwgICAxMiArCiBz cmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgfCAgICAxICsKIHNy Yy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAgICB8ICAgIDYgKy0KIHNy Yy9iaW4vcHNxbC9kZXNjcmliZS5jICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjEgKy0KIHNy Yy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggICAgICAgICB8ICAgMjEgKy0KIHNy Yy9pbmNsdWRlL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuaCAgICAgICB8ICAgIDIgKwogc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmggICAgIHwgICAgMSArCiBzcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaCAgICAgICAgfCAgIDI4ICstCiBzcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmggICAgICAgfCAgICA4ICsKIHNyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL29yaWdpbi5oICAgICAgICAgICAgICB8ICAgIDIgKy0KIHNyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmggICAgICAgICAgICB8ICAgIDIgKy0KIHNyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaCAgICAgICB8ICAgIDQgKy0KIHNyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmggICAgICAgICB8ICAgIDIgKy0KIHNyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oICAgICB8ICAyMjMgKystCiBzcmMv aW5jbHVkZS9zdG9yYWdlL2xtZ3IuaCAgICAgICAgICAgICAgICAgICAgfCAgICA1ICsKIHNyYy9p bmNsdWRlL3N0b3JhZ2UvbG9jay5oICAgICAgICAgICAgICAgICAgICB8ICAgMTcgKy0KIHNyYy9p bmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oICAgICAgICAgICAgICB8ICAgIDEgKwogc3JjL2lu Y2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oICAgICAgICAgICAgICAgIHwgICAgMiArCiBzcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQgICAgfCAgIDQ2ICstCiBzcmMvdGVz dC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsICAgICAgICAgfCAgICA2ICstCiBzcmMvdG9v bHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgICA3ICsKIDUwIGZpbGVz IGNoYW5nZWQsIDM2NjUgaW5zZXJ0aW9ucygrKSwgMzkxIGRlbGV0aW9ucygtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdv cmtlci5jCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvY2F0YWxvZ3Muc2dtbAppbmRleCA5MzE2YjgxMWFjLi5jMWU0MDQ4MDU0IDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxv Z3Muc2dtbApAQCAtNzkxMywxMSArNzkxMywxNiBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJs ZT4mbHQ7aXRlcmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAog CiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBh cmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgotICAgICAgIDxzdHJ1Y3RmaWVsZD5zdWJzdHJl YW08L3N0cnVjdGZpZWxkPiA8dHlwZT5ib29sPC90eXBlPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5z dWJzdHJlYW08L3N0cnVjdGZpZWxkPiA8dHlwZT5jaGFyPC90eXBlPgogICAgICAgPC9wYXJhPgog ICAgICAgPHBhcmE+Ci0gICAgICAgSWYgdHJ1ZSwgdGhlIHN1YnNjcmlwdGlvbiB3aWxsIGFsbG93 IHN0cmVhbWluZyBvZiBpbi1wcm9ncmVzcwotICAgICAgIHRyYW5zYWN0aW9ucworICAgICAgIENv bnRyb2xzIGhvdyB0byBoYW5kbGUgdGhlIHN0cmVhbWluZyBvZiBpbi1wcm9ncmVzcyB0cmFuc2Fj dGlvbnM6CisgICAgICAgPGxpdGVyYWw+ZjwvbGl0ZXJhbD4gPSBkaXNhbGxvdyBzdHJlYW1pbmcg b2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLAorICAgICAgIDxsaXRlcmFsPnQ8L2xpdGVyYWw+ ID0gc3BpbGwgdGhlIGNoYW5nZXMgb2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIHRvCisgICAg ICAgZGlzayBhbmQgYXBwbHkgYXQgb25jZSBhZnRlciB0aGUgdHJhbnNhY3Rpb24gaXMgY29tbWl0 dGVkIG9uIHRoZQorICAgICAgIHB1Ymxpc2hlciBhbmQgcmVjZWl2ZWQgYnkgdGhlIHN1YnNjcmli ZXIsCisgICAgICAgPGxpdGVyYWw+cDwvbGl0ZXJhbD4gPSBhcHBseSBjaGFuZ2VzIGRpcmVjdGx5 IHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkKKyAgICAgICB3b3JrZXIgaWYgYXZhaWxhYmxlIChzYW1l IGFzICd0JyBpZiBubyB3b3JrZXIgaXMgYXZhaWxhYmxlKQogICAgICAgPC9wYXJhPjwvZW50cnk+ CiAgICAgIDwvcm93PgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgYi9k b2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggOWVlZGFiNjUyZC4uMTA0Y2NlNzFmMCAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jb25m aWcuc2dtbApAQCAtNDk2OCw3ICs0OTY4LDggQEAgQU5ZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+ICggPHJlcGxhY2VhYmxlIGNsYXNzPSIKICAg ICAgIDxsaXN0aXRlbT4KICAgICAgICA8cGFyYT4KICAgICAgICAgU3BlY2lmaWVzIG1heGltdW0g bnVtYmVyIG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2Vycy4gVGhpcyBpbmNsdWRlcwotICAg ICAgICBib3RoIGFwcGx5IHdvcmtlcnMgYW5kIHRhYmxlIHN5bmNocm9uaXphdGlvbiB3b3JrZXJz LgorICAgICAgICBsZWFkZXIgYXBwbHkgd29ya2VycywgcGFyYWxsZWwgYXBwbHkgd29ya2Vycywg YW5kIHRhYmxlIHN5bmNocm9uaXphdGlvbgorICAgICAgICB3b3JrZXJzLgogICAgICAgIDwvcGFy YT4KICAgICAgICA8cGFyYT4KICAgICAgICAgTG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXJzIGFy ZSB0YWtlbiBmcm9tIHRoZSBwb29sIGRlZmluZWQgYnkKQEAgLTUwMDgsNiArNTAwOSwzMSBAQCBB TlkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4g KCA8cmVwbGFjZWFibGUgY2xhc3M9IgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0 ZW50cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLW1heC1wYXJhbGxlbC1hcHBseS13 b3JrZXJzLXBlci1zdWJzY3JpcHRpb24iIHhyZWZsYWJlbD0ibWF4X3BhcmFsbGVsX2FwcGx5X3dv cmtlcnNfcGVyX3N1YnNjcmlwdGlvbiI+CisgICAgICA8dGVybT48dmFybmFtZT5tYXhfcGFyYWxs ZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uPC92YXJuYW1lPiAoPHR5cGU+aW50ZWdl cjwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJtPgorICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPm1h eF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb248L3Zhcm5hbWU+IGNvbmZp Z3VyYXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRlcm0+CisgICAgICA8 L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIE1heGltdW0g bnVtYmVyIG9mIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgcGVyIHN1YnNjcmlwdGlvbi4gVGhpcwor ICAgICAgICBwYXJhbWV0ZXIgY29udHJvbHMgdGhlIGFtb3VudCBvZiBwYXJhbGxlbGlzbSBmb3Ig c3RyZWFtaW5nIG9mCisgICAgICAgIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyB3aXRoIHN1YnNj cmlwdGlvbiBwYXJhbWV0ZXIKKyAgICAgICAgPGxpdGVyYWw+c3RyZWFtaW5nID0gcGFyYWxsZWw8 L2xpdGVyYWw+LgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIHBh cmFsbGVsIGFwcGx5IHdvcmtlcnMgYXJlIHRha2VuIGZyb20gdGhlIHBvb2wgZGVmaW5lZCBieQor ICAgICAgICA8dmFybmFtZT5tYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzPC92YXJuYW1l Pi4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBkZWZhdWx0IHZh bHVlIGlzIDIuIFRoaXMgcGFyYW1ldGVyIGNhbiBvbmx5IGJlIHNldCBpbiB0aGUKKyAgICAgICAg PGZpbGVuYW1lPnBvc3RncmVzcWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgb3Igb24gdGhlIHNlcnZl ciBjb21tYW5kCisgICAgICAgIGxpbmUuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRl bT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPC92YXJpYWJsZWxpc3Q+CiAgICAgPC9z ZWN0Mj4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dt bCBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKaW5kZXggN2ZkZjA4YjU5 ZC4uNjQ5NjIzZTgzZiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRp b24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCkBAIC0x NDk3LDYgKzE0OTcsMTYgQEAgQ09OVEVYVDogIHByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJl cGxpY2F0aW9uIG9yaWdpbiAicGdfMTYzOTUiIGR1cmluZyAiSU5TRVIKICAgIG1pZ2h0IG5vdCB2 aW9sYXRlIGFueSBjb25zdHJhaW50LiAgVGhpcyBjYW4gZWFzaWx5IG1ha2UgdGhlIHN1YnNjcmli ZXIKICAgIGluY29uc2lzdGVudC4KICAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgV2hlbiB0aGUg c3RyZWFtaW5nIG1vZGUgaXMgPGxpdGVyYWw+cGFyYWxsZWw8L2xpdGVyYWw+LCB0aGUgZmluaXNo IExTTiBvZgorICAgZmFpbGVkIHRyYW5zYWN0aW9ucyBtYXkgbm90IGJlIGxvZ2dlZC4gSW4gdGhh dCBjYXNlLCBpdCBtYXkgYmUgbmVjZXNzYXJ5IHRvCisgICBjaGFuZ2UgdGhlIHN0cmVhbWluZyBt b2RlIHRvIDxsaXRlcmFsPm9uPC9saXRlcmFsPiBvciA8bGl0ZXJhbD5vZmY8L2xpdGVyYWw+IGFu ZAorICAgY2F1c2UgdGhlIHNhbWUgY29uZmxpY3RzIGFnYWluIHNvIHRoZSBmaW5pc2ggTFNOIG9m IHRoZSBmYWlsZWQgdHJhbnNhY3Rpb24gd2lsbAorICAgYmUgd3JpdHRlbiB0byB0aGUgc2VydmVy IGxvZy4gRm9yIHRoZSB1c2FnZSBvZiBmaW5pc2ggTFNOLCBwbGVhc2UgcmVmZXIgdG8gPGxpbmsK KyAgIGxpbmtlbmQ9InNxbC1hbHRlcnN1YnNjcmlwdGlvbiI+PGNvbW1hbmQ+QUxURVIgU1VCU0NS SVBUSU9OIC4uLgorICAgU0tJUDwvY29tbWFuZD48L2xpbms+LgorICA8L3BhcmE+CiAgPC9zZWN0 MT4KIAogIDxzZWN0MSBpZD0ibG9naWNhbC1yZXBsaWNhdGlvbi1yZXN0cmljdGlvbnMiPgpAQCAt MTgwNSw4ICsxODE1LDkgQEAgQ09OVEVYVDogIHByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJl cGxpY2F0aW9uIG9yaWdpbiAicGdfMTYzOTUiIGR1cmluZyAiSU5TRVIKIAogICAgPHBhcmE+CiAg ICAgPGxpbmsgbGlua2VuZD0iZ3VjLW1heC1sb2dpY2FsLXJlcGxpY2F0aW9uLXdvcmtlcnMiPjx2 YXJuYW1lPm1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM8L3Zhcm5hbWU+PC9saW5rPgot ICAgIG11c3QgYmUgc2V0IHRvIGF0IGxlYXN0IHRoZSBudW1iZXIgb2Ygc3Vic2NyaXB0aW9ucyAo Zm9yIGFwcGx5IHdvcmtlcnMpLCBwbHVzCi0gICAgc29tZSByZXNlcnZlIGZvciB0aGUgdGFibGUg c3luY2hyb25pemF0aW9uIHdvcmtlcnMuCisgICAgbXVzdCBiZSBzZXQgdG8gYXQgbGVhc3QgdGhl IG51bWJlciBvZiBzdWJzY3JpcHRpb25zIChmb3IgbGVhZGVyIGFwcGx5CisgICAgd29ya2Vycyks IHBsdXMgc29tZSByZXNlcnZlIGZvciB0aGUgdGFibGUgc3luY2hyb25pemF0aW9uIHdvcmtlcnMg YW5kCisgICAgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4KICAgIDwvcGFyYT4KIAogICAgPHBhcmE+ CkBAIC0xODIzLDYgKzE4MzQsMTMgQEAgQ09OVEVYVDogIHByb2Nlc3NpbmcgcmVtb3RlIGRhdGEg Zm9yIHJlcGxpY2F0aW9uIG9yaWdpbiAicGdfMTYzOTUiIGR1cmluZyAiSU5TRVIKICAgICAgc3Vi c2NyaXB0aW9uIGluaXRpYWxpemF0aW9uIG9yIHdoZW4gbmV3IHRhYmxlcyBhcmUgYWRkZWQuCiAg ICA8L3BhcmE+CiAKKyAgIDxwYXJhPgorICAgIDxsaW5rIGxpbmtlbmQ9Imd1Yy1tYXgtcGFyYWxs ZWwtYXBwbHktd29ya2Vycy1wZXItc3Vic2NyaXB0aW9uIj48dmFybmFtZT5tYXhfcGFyYWxsZWxf YXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uPC92YXJuYW1lPjwvbGluaz4KKyAgICAgY29u dHJvbHMgdGhlIGFtb3VudCBvZiBwYXJhbGxlbGlzbSBmb3Igc3RyZWFtaW5nIG9mIGluLXByb2dy ZXNzCisgICAgIHRyYW5zYWN0aW9ucyB3aXRoIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIKKyAgICAg PGxpdGVyYWw+c3RyZWFtaW5nID0gcGFyYWxsZWw8L2xpdGVyYWw+LgorICAgPC9wYXJhPgorCiAg ICA8cGFyYT4KICAgICBMb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlcnMgYXJlIGFsc28gYWZmZWN0 ZWQgYnkKICAgICA8bGluayBsaW5rZW5kPSJndWMtd2FsLXJlY2VpdmVyLXRpbWVvdXQiPjx2YXJu YW1lPndhbF9yZWNlaXZlcl90aW1lb3V0PC92YXJuYW1lPjwvbGluaz4sCmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dt bAppbmRleCAzNjNiMTgzZTVmLi5lYWZlZWFkZjQ3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv bW9uaXRvcmluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKQEAgLTE4 NTEsNiArMTg1MSwxMSBAQCBwb3N0Z3JlcyAgIDI3MDkzICAwLjAgIDAuMCAgMzAwOTYgIDI3NTIg PyAgICAgICAgU3MgICAxMTozNCAgIDA6MDAgcG9zdGdyZXM6IHNlcgogICAgICAgPGVudHJ5Pjxs aXRlcmFsPmFkdmlzb3J5PC9saXRlcmFsPjwvZW50cnk+CiAgICAgICA8ZW50cnk+V2FpdGluZyB0 byBhY3F1aXJlIGFuIGFkdmlzb3J5IHVzZXIgbG9jay48L2VudHJ5PgogICAgICA8L3Jvdz4KKyAg ICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD5hcHBseXRyYW5zYWN0aW9uPC9saXRlcmFs PjwvZW50cnk+CisgICAgICA8ZW50cnk+V2FpdGluZyB0byBhY3F1aXJlIGEgbG9jayBvbiBhIHJl bW90ZSB0cmFuc2FjdGlvbiBiZWluZyBhcHBsaWVkCisgICAgICBieSBhIGxvZ2ljYWwgcmVwbGlj YXRpb24gc3Vic2NyaWJlci48L2VudHJ5PgorICAgICA8L3Jvdz4KICAgICAgPHJvdz4KICAgICAg IDxlbnRyeT48bGl0ZXJhbD5leHRlbmQ8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgIDxlbnRyeT5X YWl0aW5nIHRvIGV4dGVuZCBhIHJlbGF0aW9uLjwvZW50cnk+CmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvcHJvdG9jb2wuc2dtbCBiL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sCmluZGV4IDAz MzEyZTA3ZTIuLjQzOWVmNjc1ZjMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sCkBAIC0zMTAzLDcgKzMxMDMsNyBA QCBwc3FsICJkYm5hbWU9cG9zdGdyZXMgcmVwbGljYXRpb249ZGF0YWJhc2UiIC1jICJJREVOVElG WV9TWVNURU07IgogICAgICA8bGlzdGl0ZW0+CiAgICAgICA8cGFyYT4KICAgICAgICBQcm90b2Nv bCB2ZXJzaW9uLiBDdXJyZW50bHkgdmVyc2lvbnMgPGxpdGVyYWw+MTwvbGl0ZXJhbD4sIDxsaXRl cmFsPjI8L2xpdGVyYWw+LAotICAgICAgIGFuZCA8bGl0ZXJhbD4zPC9saXRlcmFsPiBhcmUgc3Vw cG9ydGVkLgorICAgICAgIDxsaXRlcmFsPjM8L2xpdGVyYWw+LCBhbmQgPGxpdGVyYWw+NDwvbGl0 ZXJhbD4gYXJlIHN1cHBvcnRlZC4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgogICAgICAg IFZlcnNpb24gPGxpdGVyYWw+MjwvbGl0ZXJhbD4gaXMgc3VwcG9ydGVkIG9ubHkgZm9yIHNlcnZl ciB2ZXJzaW9uIDE0CkBAIC0zMTEzLDYgKzMxMTMsMTEgQEAgcHNxbCAiZGJuYW1lPXBvc3RncmVz IHJlcGxpY2F0aW9uPWRhdGFiYXNlIiAtYyAiSURFTlRJRllfU1lTVEVNOyIKICAgICAgICBWZXJz aW9uIDxsaXRlcmFsPjM8L2xpdGVyYWw+IGlzIHN1cHBvcnRlZCBvbmx5IGZvciBzZXJ2ZXIgdmVy c2lvbiAxNQogICAgICAgIGFuZCBhYm92ZSwgYW5kIGl0IGFsbG93cyBzdHJlYW1pbmcgb2YgdHdv LXBoYXNlIGNvbW1pdHMuCiAgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBWZXJz aW9uIDxsaXRlcmFsPjQ8L2xpdGVyYWw+IGlzIHN1cHBvcnRlZCBvbmx5IGZvciBzZXJ2ZXIgdmVy c2lvbiAxNgorICAgICAgIGFuZCBhYm92ZSwgYW5kIGl0IGFsbG93cyBzdHJlYW1zIG9mIGxhcmdl IGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyB0bworICAgICAgIGJlIGFwcGxpZWQgaW4gcGFyYWxs ZWwuCisgICAgICA8L3BhcmE+CiAgICAgIDwvbGlzdGl0ZW0+CiAgICAgPC92YXJsaXN0ZW50cnk+ CiAKQEAgLTY4ODMsNiArNjg4OCwyOCBAQCBwc3FsICJkYm5hbWU9cG9zdGdyZXMgcmVwbGljYXRp b249ZGF0YWJhc2UiIC1jICJJREVOVElGWV9TWVNURU07IgogICAgICAgICA8L3BhcmE+CiAgICAg ICAgPC9saXN0aXRlbT4KICAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICA8dmFybGlzdGVu dHJ5PgorICAgICAgIDx0ZXJtPkludDY0IChYTG9nUmVjUHRyKTwvdGVybT4KKyAgICAgICA8bGlz dGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgVGhlIExTTiBvZiB0aGUgYWJvcnQuIFRo aXMgZmllbGQgaXMgYXZhaWxhYmxlIHNpbmNlIHByb3RvY29sIHZlcnNpb24KKyAgICAgICAgIDQu CisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50 cnk+CisKKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgPHRlcm0+SW50NjQgKFRpbWVzdGFt cFR6KTwvdGVybT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAg QWJvcnQgdGltZXN0YW1wIG9mIHRoZSB0cmFuc2FjdGlvbi4gVGhlIHZhbHVlIGlzIGluIG51bWJl cgorICAgICAgICAgb2YgbWljcm9zZWNvbmRzIHNpbmNlIFBvc3RncmVTUUwgZXBvY2ggKDIwMDAt MDEtMDEpLiBUaGlzIGZpZWxkIGlzCisgICAgICAgICBhdmFpbGFibGUgc2luY2UgcHJvdG9jb2wg dmVyc2lvbiA0LgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwv dmFybGlzdGVudHJ5PgorCiAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgIDwvbGlzdGl0ZW0+CiAg ICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1 YnNjcmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNn bWwKaW5kZXggZjlhMTc3NjM4MC4uZjE3M2EwOTAzNyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfc3Vic2NyaXB0aW9uLnNnbWwKQEAgLTIyOCwxMyArMjI4LDI5IEBAIENSRUFURSBTVUJTQ1JJ UFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN1YnNjcmlwdGlvbl9uYW1lPC9y ZXBsYWNlYWJsCiAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAKICAgICAgICA8dmFybGlzdGVudHJ5 PgotICAgICAgICA8dGVybT48bGl0ZXJhbD5zdHJlYW1pbmc8L2xpdGVyYWw+ICg8dHlwZT5ib29s ZWFuPC90eXBlPik8L3Rlcm0+CisgICAgICAgIDx0ZXJtPjxsaXRlcmFsPnN0cmVhbWluZzwvbGl0 ZXJhbD4gKDx0eXBlPmVudW08L3R5cGU+KTwvdGVybT4KICAgICAgICAgPGxpc3RpdGVtPgogICAg ICAgICAgPHBhcmE+CiAgICAgICAgICAgU3BlY2lmaWVzIHdoZXRoZXIgdG8gZW5hYmxlIHN0cmVh bWluZyBvZiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMKLSAgICAgICAgICBmb3IgdGhpcyBzdWJz Y3JpcHRpb24uICBCeSBkZWZhdWx0LCBhbGwgdHJhbnNhY3Rpb25zCi0gICAgICAgICAgYXJlIGZ1 bGx5IGRlY29kZWQgb24gdGhlIHB1Ymxpc2hlciBhbmQgb25seSB0aGVuIHNlbnQgdG8gdGhlCi0g ICAgICAgICAgc3Vic2NyaWJlciBhcyBhIHdob2xlLgorICAgICAgICAgIGZvciB0aGlzIHN1YnNj cmlwdGlvbi4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDxsaXRlcmFsPm9mZjwvbGl0ZXJhbD4sCisg ICAgICAgICAgbWVhbmluZyBhbGwgdHJhbnNhY3Rpb25zIGFyZSBmdWxseSBkZWNvZGVkIG9uIHRo ZSBwdWJsaXNoZXIgYW5kIG9ubHkKKyAgICAgICAgICB0aGVuIHNlbnQgdG8gdGhlIHN1YnNjcmli ZXIgYXMgYSB3aG9sZS4KKyAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgPHBhcmE+CisgICAg ICAgICAgSWYgc2V0IHRvIDxsaXRlcmFsPm9uPC9saXRlcmFsPiwgdGhlIGluY29taW5nIGNoYW5n ZXMgYXJlIHdyaXR0ZW4gdG8KKyAgICAgICAgICB0ZW1wb3JhcnkgZmlsZXMgYW5kIHRoZW4gYXBw bGllZCBvbmx5IGFmdGVyIHRoZSB0cmFuc2FjdGlvbiBpcworICAgICAgICAgIGNvbW1pdHRlZCBv biB0aGUgcHVibGlzaGVyIGFuZCByZWNlaXZlZCBieSB0aGUgc3Vic2NyaWJlci4KKyAgICAgICAg IDwvcGFyYT4KKworICAgICAgICAgPHBhcmE+CisgICAgICAgICAgSWYgc2V0IHRvIDxsaXRlcmFs PnBhcmFsbGVsPC9saXRlcmFsPiwgaW5jb21pbmcgY2hhbmdlcyBhcmUgZGlyZWN0bHkKKyAgICAg ICAgICBhcHBsaWVkIHZpYSBvbmUgb2YgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMsIGlmIGF2 YWlsYWJsZS4gSWYgbm8KKyAgICAgICAgICBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaXMgZnJlZSB0 byBoYW5kbGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyB0aGVuCisgICAgICAgICAgdGhlIGNoYW5n ZXMgYXJlIHdyaXR0ZW4gdG8gdGVtcG9yYXJ5IGZpbGVzIGFuZCBhcHBsaWVkIGFmdGVyIHRoZQor ICAgICAgICAgIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4gTm90ZSB0aGF0IGlmIGFuIGVycm9y IGhhcHBlbnMgaW4gYQorICAgICAgICAgIHBhcmFsbGVsIGFwcGx5IHdvcmtlciwgdGhlIGZpbmlz aCBMU04gb2YgdGhlIHJlbW90ZSB0cmFuc2FjdGlvbgorICAgICAgICAgIG1pZ2h0IG5vdCBiZSBy ZXBvcnRlZCBpbiB0aGUgc2VydmVyIGxvZy4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9s aXN0aXRlbT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9zeXN0ZW0tdmlld3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbAppbmRl eCAxNDNhZTViN2JiLi44NDI4ZWU3ODY3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvc3lzdGVt LXZpZXdzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sCkBAIC0xMzc5 LDggKzEzNzksOSBAQAogICAgICAgIDxsaXRlcmFsPnZpcnR1YWx4aWQ8L2xpdGVyYWw+LAogICAg ICAgIDxsaXRlcmFsPnNwZWN0b2tlbjwvbGl0ZXJhbD4sCiAgICAgICAgPGxpdGVyYWw+b2JqZWN0 PC9saXRlcmFsPiwKLSAgICAgICA8bGl0ZXJhbD51c2VybG9jazwvbGl0ZXJhbD4sIG9yCi0gICAg ICAgPGxpdGVyYWw+YWR2aXNvcnk8L2xpdGVyYWw+LgorICAgICAgIDxsaXRlcmFsPnVzZXJsb2Nr PC9saXRlcmFsPiwKKyAgICAgICA8bGl0ZXJhbD5hZHZpc29yeTwvbGl0ZXJhbD4sIG9yCisgICAg ICAgPGxpdGVyYWw+YXBwbHl0cmFuc2FjdGlvbjwvbGl0ZXJhbD4uCiAgICAgICAgKFNlZSBhbHNv IDx4cmVmIGxpbmtlbmQ9IndhaXQtZXZlbnQtbG9jay10YWJsZSIvPi4pCiAgICAgICA8L3BhcmE+ PC9lbnRyeT4KICAgICAgPC9yb3c+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS94YWN0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKaW5kZXggYjdj N2ZkOWYwMC4uZDBkOWM4NjQ0OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0veGFjdC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYwpAQCAtMTcx Miw2ICsxNzEyLDcgQEAgUmVjb3JkVHJhbnNhY3Rpb25BYm9ydChib29sIGlzU3ViWGFjdCkKIAlp bnQJCQluY2hpbGRyZW47CiAJVHJhbnNhY3Rpb25JZCAqY2hpbGRyZW47CiAJVGltZXN0YW1wVHog eGFjdF90aW1lOworCWJvb2wJCXJlcGxvcmlnaW47CiAKIAkvKgogCSAqIElmIHdlIGhhdmVuJ3Qg YmVlbiBhc3NpZ25lZCBhbiBYSUQsIG5vYm9keSB3aWxsIGNhcmUgd2hldGhlciB3ZSBhYm9ydGVk CkBAIC0xNzQyLDYgKzE3NDMsMTMgQEAgUmVjb3JkVHJhbnNhY3Rpb25BYm9ydChib29sIGlzU3Vi WGFjdCkKIAkJZWxvZyhQQU5JQywgImNhbm5vdCBhYm9ydCB0cmFuc2FjdGlvbiAldSwgaXQgd2Fz IGFscmVhZHkgY29tbWl0dGVkIiwKIAkJCSB4aWQpOwogCisJLyoKKwkgKiBBcmUgd2UgdXNpbmcg dGhlIHJlcGxpY2F0aW9uIG9yaWdpbnMgZmVhdHVyZT8gIE9yLCBpbiBvdGhlciB3b3JkcywgYXJl CisJICogd2UgcmVwbGF5aW5nIHJlbW90ZSBhY3Rpb25zPworCSAqLworCXJlcGxvcmlnaW4gPSAo cmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiAhPSBJbnZhbGlkUmVwT3JpZ2luSWQgJiYKKwkJCQkg IHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gIT0gRG9Ob3RSZXBsaWNhdGVJZCk7CisKIAkvKiBG ZXRjaCB0aGUgZGF0YSB3ZSBuZWVkIGZvciB0aGUgYWJvcnQgcmVjb3JkICovCiAJbnJlbHMgPSBz bWdyR2V0UGVuZGluZ0RlbGV0ZXMoZmFsc2UsICZyZWxzKTsKIAluY2hpbGRyZW4gPSB4YWN0R2V0 Q29tbWl0dGVkQ2hpbGRyZW4oJmNoaWxkcmVuKTsKQEAgLTE3NjUsNiArMTc3MywxMSBAQCBSZWNv cmRUcmFuc2FjdGlvbkFib3J0KGJvb2wgaXNTdWJYYWN0KQogCQkJCQkgICBNeVhhY3RGbGFncywg SW52YWxpZFRyYW5zYWN0aW9uSWQsCiAJCQkJCSAgIE5VTEwpOwogCisJaWYgKHJlcGxvcmlnaW4p CisJCS8qIE1vdmUgTFNOcyBmb3J3YXJkIGZvciB0aGlzIHJlcGxpY2F0aW9uIG9yaWdpbiAqLwor CQlyZXBsb3JpZ2luX3Nlc3Npb25fYWR2YW5jZShyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX2xz biwKKwkJCQkJCQkJICAgWGFjdExhc3RSZWNFbmQpOworCiAJLyoKIAkgKiBSZXBvcnQgdGhlIGxh dGVzdCBhc3luYyBhYm9ydCBMU04sIHNvIHRoYXQgdGhlIFdBTCB3cml0ZXIga25vd3MgdG8KIAkg KiBmbHVzaCB0aGlzIGFib3J0LiBUaGVyZSdzIG5vdGhpbmcgdG8gYmUgZ2FpbmVkIGJ5IGRlbGF5 aW5nIHRoaXMsIHNpbmNlCkBAIC01ODY3LDExICs1ODgwLDEwIEBAIFhhY3RMb2dBYm9ydFJlY29y ZChUaW1lc3RhbXBUeiBhYm9ydF90aW1lLAogCX0KIAogCS8qCi0JICogRHVtcCB0cmFuc2FjdGlv biBvcmlnaW4gaW5mb3JtYXRpb24gb25seSBmb3IgYWJvcnQgcHJlcGFyZWQuIFdlIG5lZWQKLQkg KiB0aGlzIGR1cmluZyByZWNvdmVyeSB0byB1cGRhdGUgdGhlIHJlcGxpY2F0aW9uIG9yaWdpbiBw cm9ncmVzcy4KKwkgKiBEdW1wIHRyYW5zYWN0aW9uIG9yaWdpbiBpbmZvcm1hdGlvbi4gV2UgbmVl ZCB0aGlzIGR1cmluZyByZWNvdmVyeSB0bworCSAqIHVwZGF0ZSB0aGUgcmVwbGljYXRpb24gb3Jp Z2luIHByb2dyZXNzLgogCSAqLwotCWlmICgocmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiAhPSBJ bnZhbGlkUmVwT3JpZ2luSWQpICYmCi0JCVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHR3b3BoYXNlX3hp ZCkpCisJaWYgKHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gIT0gSW52YWxpZFJlcE9yaWdpbklk KQogCXsKIAkJeGxfeGluZm8ueGluZm8gfD0gWEFDVF9YSU5GT19IQVNfT1JJR0lOOwogCkBAIC01 OTI4LDggKzU5NDAsOCBAQCBYYWN0TG9nQWJvcnRSZWNvcmQoVGltZXN0YW1wVHogYWJvcnRfdGlt ZSwKIAlpZiAoeGxfeGluZm8ueGluZm8gJiBYQUNUX1hJTkZPX0hBU19PUklHSU4pCiAJCVhMb2dS ZWdpc3RlckRhdGEoKGNoYXIgKikgKCZ4bF9vcmlnaW4pLCBzaXplb2YoeGxfeGFjdF9vcmlnaW4p KTsKIAotCWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZCh0d29waGFzZV94aWQpKQotCQlYTG9nU2V0 UmVjb3JkRmxhZ3MoWExPR19JTkNMVURFX09SSUdJTik7CisJLyogSW5jbHVkZSB0aGUgcmVwbGlj YXRpb24gb3JpZ2luICovCisJWExvZ1NldFJlY29yZEZsYWdzKFhMT0dfSU5DTFVERV9PUklHSU4p OwogCiAJcmV0dXJuIFhMb2dJbnNlcnQoUk1fWEFDVF9JRCwgaW5mbyk7CiB9CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKaW5kZXggZDY3MzU1N2VhNC4uOTM4MmU2MTllOSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtODQsNyArODQsNyBA QCB0eXBlZGVmIHN0cnVjdCBTdWJPcHRzCiAJYm9vbAkJY29weV9kYXRhOwogCWJvb2wJCXJlZnJl c2g7CiAJYm9vbAkJYmluYXJ5OwotCWJvb2wJCXN0cmVhbWluZzsKKwljaGFyCQlzdHJlYW1pbmc7 CiAJYm9vbAkJdHdvcGhhc2U7CiAJYm9vbAkJZGlzYWJsZW9uZXJyOwogCWNoYXIJICAgKm9yaWdp bjsKQEAgLTEzOCw3ICsxMzgsNyBAQCBwYXJzZV9zdWJzY3JpcHRpb25fb3B0aW9ucyhQYXJzZVN0 YXRlICpwc3RhdGUsIExpc3QgKnN0bXRfb3B0aW9ucywKIAlpZiAoSXNTZXQoc3VwcG9ydGVkX29w dHMsIFNVQk9QVF9CSU5BUlkpKQogCQlvcHRzLT5iaW5hcnkgPSBmYWxzZTsKIAlpZiAoSXNTZXQo c3VwcG9ydGVkX29wdHMsIFNVQk9QVF9TVFJFQU1JTkcpKQotCQlvcHRzLT5zdHJlYW1pbmcgPSBm YWxzZTsKKwkJb3B0cy0+c3RyZWFtaW5nID0gTE9HSUNBTFJFUF9TVFJFQU1fT0ZGOwogCWlmIChJ c1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX1RXT1BIQVNFX0NPTU1JVCkpCiAJCW9wdHMtPnR3 b3BoYXNlID0gZmFsc2U7CiAJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJPUFRfRElTQUJM RV9PTl9FUlIpKQpAQCAtMjQxLDcgKzI0MSw3IEBAIHBhcnNlX3N1YnNjcmlwdGlvbl9vcHRpb25z KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqc3RtdF9vcHRpb25zLAogCQkJCWVycm9yQ29uZmxp Y3RpbmdEZWZFbGVtKGRlZmVsLCBwc3RhdGUpOwogCiAJCQlvcHRzLT5zcGVjaWZpZWRfb3B0cyB8 PSBTVUJPUFRfU1RSRUFNSU5HOwotCQkJb3B0cy0+c3RyZWFtaW5nID0gZGVmR2V0Qm9vbGVhbihk ZWZlbCk7CisJCQlvcHRzLT5zdHJlYW1pbmcgPSBkZWZHZXRTdHJlYW1pbmdNb2RlKGRlZmVsKTsK IAkJfQogCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJ0d29fcGhhc2UiKSA9PSAw KQogCQl7CkBAIC02MjksNyArNjI5LDcgQEAgQ3JlYXRlU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUg KnBzdGF0ZSwgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAl2YWx1ZXNbQW51bV9wZ19z dWJzY3JpcHRpb25fc3Vib3duZXIgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0ob3duZXIpOwogCXZh bHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJlbmFibGVkIC0gMV0gPSBCb29sR2V0RGF0dW0o b3B0cy5lbmFibGVkKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViYmluYXJ5IC0g MV0gPSBCb29sR2V0RGF0dW0ob3B0cy5iaW5hcnkpOwotCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlw dGlvbl9zdWJzdHJlYW0gLSAxXSA9IEJvb2xHZXREYXR1bShvcHRzLnN0cmVhbWluZyk7CisJdmFs dWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnN0cmVhbSAtIDFdID0gQ2hhckdldERhdHVtKG9w dHMuc3RyZWFtaW5nKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3VidHdvcGhhc2Vz dGF0ZSAtIDFdID0KIAkJQ2hhckdldERhdHVtKG9wdHMudHdvcGhhc2UgPwogCQkJCQkgTE9HSUNB TFJFUF9UV09QSEFTRV9TVEFURV9QRU5ESU5HIDoKQEAgLTEwOTgsNyArMTA5OCw3IEBAIEFsdGVy U3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJTdWJzY3JpcHRpb25TdG10ICpz dG10LAogCQkJCWlmIChJc1NldChvcHRzLnNwZWNpZmllZF9vcHRzLCBTVUJPUFRfU1RSRUFNSU5H KSkKIAkJCQl7CiAJCQkJCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJzdHJlYW0gLSAx XSA9Ci0JCQkJCQlCb29sR2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcpOworCQkJCQkJQ2hhckdldERh dHVtKG9wdHMuc3RyZWFtaW5nKTsKIAkJCQkJcmVwbGFjZXNbQW51bV9wZ19zdWJzY3JpcHRpb25f c3Vic3RyZWFtIC0gMV0gPSB0cnVlOwogCQkJCX0KIApAQCAtMjEyMiwzICsyMTIyLDYwIEBAIG1l cmdlX3B1YmxpY2F0aW9ucyhMaXN0ICpvbGRwdWJsaXN0LCBMaXN0ICpuZXdwdWJsaXN0LCBib29s IGFkZHB1YiwgY29uc3QgY2hhciAqCiAKIAlyZXR1cm4gb2xkcHVibGlzdDsKIH0KKworLyoKKyAq IEV4dHJhY3QgdGhlIHN0cmVhbWluZyBtb2RlIHZhbHVlIGZyb20gYSBEZWZFbGVtLiAgVGhpcyBp cyBsaWtlCisgKiBkZWZHZXRCb29sZWFuKCkgYnV0IGFsc28gYWNjZXB0cyB0aGUgc3BlY2lhbCB2 YWx1ZSBvZiAicGFyYWxsZWwiLgorICovCitjaGFyCitkZWZHZXRTdHJlYW1pbmdNb2RlKERlZkVs ZW0gKmRlZikKK3sKKwkvKgorCSAqIElmIG5vIHBhcmFtZXRlciB2YWx1ZSBnaXZlbiwgYXNzdW1l ICJ0cnVlIiBpcyBtZWFudC4KKwkgKi8KKwlpZiAoIWRlZi0+YXJnKQorCQlyZXR1cm4gTE9HSUNB TFJFUF9TVFJFQU1fT047CisKKwkvKgorCSAqIEFsbG93IDAsIDEsICJmYWxzZSIsICJ0cnVlIiwg Im9mZiIsICJvbiIgb3IgInBhcmFsbGVsIi4KKwkgKi8KKwlzd2l0Y2ggKG5vZGVUYWcoZGVmLT5h cmcpKQorCXsKKwkJY2FzZSBUX0ludGVnZXI6CisJCQlzd2l0Y2ggKGludFZhbChkZWYtPmFyZykp CisJCQl7CisJCQkJY2FzZSAwOgorCQkJCQlyZXR1cm4gTE9HSUNBTFJFUF9TVFJFQU1fT0ZGOwor CQkJCWNhc2UgMToKKwkJCQkJcmV0dXJuIExPR0lDQUxSRVBfU1RSRUFNX09OOworCQkJCWRlZmF1 bHQ6CisJCQkJCS8qIG90aGVyd2lzZSwgZXJyb3Igb3V0IGJlbG93ICovCisJCQkJCWJyZWFrOwor CQkJfQorCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQl7CisJCQkJY2hhcgkgICAqc3ZhbCA9IGRl ZkdldFN0cmluZyhkZWYpOworCisJCQkJLyoKKwkJCQkgKiBUaGUgc2V0IG9mIHN0cmluZ3MgYWNj ZXB0ZWQgaGVyZSBzaG91bGQgbWF0Y2ggdXAgd2l0aCB0aGUKKwkJCQkgKiBncmFtbWFyJ3Mgb3B0 X2Jvb2xlYW5fb3Jfc3RyaW5nIHByb2R1Y3Rpb24uCisJCQkJICovCisJCQkJaWYgKHBnX3N0cmNh c2VjbXAoc3ZhbCwgImZhbHNlIikgPT0gMCB8fAorCQkJCQlwZ19zdHJjYXNlY21wKHN2YWwsICJv ZmYiKSA9PSAwKQorCQkJCQlyZXR1cm4gTE9HSUNBTFJFUF9TVFJFQU1fT0ZGOworCQkJCWlmIChw Z19zdHJjYXNlY21wKHN2YWwsICJ0cnVlIikgPT0gMCB8fAorCQkJCQlwZ19zdHJjYXNlY21wKHN2 YWwsICJvbiIpID09IDApCisJCQkJCXJldHVybiBMT0dJQ0FMUkVQX1NUUkVBTV9PTjsKKwkJCQlp ZiAocGdfc3RyY2FzZWNtcChzdmFsLCAicGFyYWxsZWwiKSA9PSAwKQorCQkJCQlyZXR1cm4gTE9H SUNBTFJFUF9TVFJFQU1fUEFSQUxMRUw7CisJCQl9CisJCQlicmVhazsKKwl9CisKKwllcmVwb3J0 KEVSUk9SLAorCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJIGVycm1zZygi JXMgcmVxdWlyZXMgYSBCb29sZWFuIHZhbHVlIG9yIFwicGFyYWxsZWxcIiIsCisJCQkJCWRlZi0+ ZGVmbmFtZSkpKTsKKwlyZXR1cm4gTE9HSUNBTFJFUF9TVFJFQU1fT0ZGOwkvKiBrZWVwIGNvbXBp bGVyIHF1aWV0ICovCit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWJwcS9wcW1xLmMgYi9z cmMvYmFja2VuZC9saWJwcS9wcW1xLmMKaW5kZXggNGQwNDE1ZTM3OS4uNjM5ODQ1ZmQ4MCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvbGlicHEvcHFtcS5jCisrKyBiL3NyYy9iYWNrZW5kL2xpYnBx L3BxbXEuYwpAQCAtMTMsMTEgKzEzLDEzIEBACiAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCisj aW5jbHVkZSAiYWNjZXNzL3BhcmFsbGVsLmgiCiAjaW5jbHVkZSAibGlicHEvbGlicHEuaCIKICNp bmNsdWRlICJsaWJwcS9wcWZvcm1hdC5oIgogI2luY2x1ZGUgImxpYnBxL3BxbXEuaCIKICNpbmNs dWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJyZXBsaWNh dGlvbi9sb2dpY2Fsd29ya2VyLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgogI2luY2x1 ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAKQEAgLTE2Miw5ICsxNjQsMTkgQEAgbXFfcHV0bWVzc2Fn ZShjaGFyIG1zZ3R5cGUsIGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4pCiAJCXJlc3VsdCA9IHNo bV9tcV9zZW5kdihwcV9tcV9oYW5kbGUsIGlvdiwgMiwgdHJ1ZSwgdHJ1ZSk7CiAKIAkJaWYgKHBx X21xX3BhcmFsbGVsX2xlYWRlcl9waWQgIT0gMCkKLQkJCVNlbmRQcm9jU2lnbmFsKHBxX21xX3Bh cmFsbGVsX2xlYWRlcl9waWQsCi0JCQkJCQkgICBQUk9DU0lHX1BBUkFMTEVMX01FU1NBR0UsCi0J CQkJCQkgICBwcV9tcV9wYXJhbGxlbF9sZWFkZXJfYmFja2VuZF9pZCk7CisJCXsKKwkJCWlmIChJ c0xvZ2ljYWxQYXJhbGxlbEFwcGx5V29ya2VyKCkpCisJCQkJU2VuZFByb2NTaWduYWwocHFfbXFf cGFyYWxsZWxfbGVhZGVyX3BpZCwKKwkJCQkJCQkgICBQUk9DU0lHX1BBUkFMTEVMX0FQUExZX01F U1NBR0UsCisJCQkJCQkJICAgcHFfbXFfcGFyYWxsZWxfbGVhZGVyX2JhY2tlbmRfaWQpOworCQkJ ZWxzZQorCQkJeworCQkJCUFzc2VydChJc1BhcmFsbGVsV29ya2VyKCkpOworCQkJCVNlbmRQcm9j U2lnbmFsKHBxX21xX3BhcmFsbGVsX2xlYWRlcl9waWQsCisJCQkJCQkJICAgUFJPQ1NJR19QQVJB TExFTF9NRVNTQUdFLAorCQkJCQkJCSAgIHBxX21xX3BhcmFsbGVsX2xlYWRlcl9iYWNrZW5kX2lk KTsKKwkJCX0KKwkJfQogCiAJCWlmIChyZXN1bHQgIT0gU0hNX01RX1dPVUxEX0JMT0NLKQogCQkJ YnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMgYi9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKaW5kZXggMGQ3MmRlMjRiMC4uMmRmYTlh YjUyMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCisrKyBi L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYwpAQCAtMTI4LDYgKzEyOCw5IEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QKIAl9LAogCXsKIAkJIkFwcGx5V29ya2VyTWFpbiIsIEFwcGx5V29y a2VyTWFpbgorCX0sCisJeworCQkiUGFyYWxsZWxBcHBseVdvcmtlck1haW4iLCBQYXJhbGxlbEFw cGx5V29ya2VyTWFpbgogCX0KIH07CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvaW50ZXJydXB0LmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2ludGVycnVwdC5jCmluZGV4 IDFhZWQyZTJlOTkuLmU2NDAyOWZhYzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvaW50ZXJydXB0LmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9pbnRlcnJ1cHQuYwpA QCAtOTgsOCArOTgsOSBAQCBTaWduYWxIYW5kbGVyRm9yQ3Jhc2hFeGl0KFNJR05BTF9BUkdTKQog ICogc2h1dCBkb3duIGFuZCBleGl0LgogICoKICAqIFR5cGljYWxseSwgdGhpcyBoYW5kbGVyIHdv dWxkIGJlIHVzZWQgZm9yIFNJR1RFUk0sIGJ1dCBzb21lIHByb2Nlc3NlcyB1c2UKLSAqIG90aGVy IHNpZ25hbHMuIEluIHBhcnRpY3VsYXIsIHRoZSBjaGVja3BvaW50ZXIgZXhpdHMgb24gU0lHVVNS MiwgYW5kIHRoZQotICogV0FMIHdyaXRlciBleGl0cyBvbiBlaXRoZXIgU0lHSU5UIG9yIFNJR1RF Uk0uCisgKiBvdGhlciBzaWduYWxzLiBJbiBwYXJ0aWN1bGFyLCB0aGUgY2hlY2twb2ludGVyIGV4 aXRzIG9uIFNJR1VTUjIsIGFuZCB0aGUgV0FMCisgKiB3cml0ZXIgYW5kIHRoZSBsb2dpY2FsIHJl cGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBleGl0cyBvbiBlaXRoZXIKKyAqIFNJR0lO VCBvciBTSUdURVJNLgogICoKICAqIFNodXRkb3duUmVxdWVzdFBlbmRpbmcgc2hvdWxkIGJlIGNo ZWNrZWQgYXQgYSBjb252ZW5pZW50IHBsYWNlIHdpdGhpbiB0aGUKICAqIG1haW4gbG9vcCwgb3Ig ZWxzZSB0aGUgbWFpbiBsb29wIHNob3VsZCBjYWxsIEhhbmRsZU1haW5Mb29wSW50ZXJydXB0cy4K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGli cHF3YWxyZWNlaXZlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZl ci9saWJwcXdhbHJlY2VpdmVyLmMKaW5kZXggN2Y2OTdiMGYyOS4uMjI1ZGE4MWYyZSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJl Y2VpdmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9s aWJwcXdhbHJlY2VpdmVyLmMKQEAgLTQ0Myw5ICs0NDMsOSBAQCBsaWJwcXJjdl9zdGFydHN0cmVh bWluZyhXYWxSZWNlaXZlckNvbm4gKmNvbm4sCiAJCWFwcGVuZFN0cmluZ0luZm8oJmNtZCwgInBy b3RvX3ZlcnNpb24gJyV1JyIsCiAJCQkJCQkgb3B0aW9ucy0+cHJvdG8ubG9naWNhbC5wcm90b192 ZXJzaW9uKTsKIAotCQlpZiAob3B0aW9ucy0+cHJvdG8ubG9naWNhbC5zdHJlYW1pbmcgJiYKLQkJ CVBRc2VydmVyVmVyc2lvbihjb25uLT5zdHJlYW1Db25uKSA+PSAxNDAwMDApCi0JCQlhcHBlbmRT dHJpbmdJbmZvU3RyaW5nKCZjbWQsICIsIHN0cmVhbWluZyAnb24nIik7CisJCWlmIChvcHRpb25z LT5wcm90by5sb2dpY2FsLnN0cmVhbWluZ19zdHIpCisJCQlhcHBlbmRTdHJpbmdJbmZvKCZjbWQs ICIsIHN0cmVhbWluZyAnJXMnIiwKKwkJCQkJCQkgb3B0aW9ucy0+cHJvdG8ubG9naWNhbC5zdHJl YW1pbmdfc3RyKTsKIAogCQlpZiAob3B0aW9ucy0+cHJvdG8ubG9naWNhbC50d29waGFzZSAmJgog CQkJUFFzZXJ2ZXJWZXJzaW9uKGNvbm4tPnN0cmVhbUNvbm4pID49IDE1MDAwMCkKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlCmluZGV4IGM0ZTJmZGViNzEuLjJkYzI1ZTM3 YmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZQpAQCAtMTUsNiAr MTUsNyBAQCBpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCiBvdmVy cmlkZSBDUFBGTEFHUyA6PSAtSSQoc3JjZGlyKSAkKENQUEZMQUdTKQogCiBPQkpTID0gXAorCWFw cGx5cGFyYWxsZWx3b3JrZXIubyBcCiAJZGVjb2RlLm8gXAogCWxhdW5jaGVyLm8gXAogCWxvZ2lj YWwubyBcCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5 cGFyYWxsZWx3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlw YXJhbGxlbHdvcmtlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmY4 YTBiYjQ2MmEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwpAQCAtMCwwICsxLDE2MjcgQEAKKy8qLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICogYXBwbHlwYXJhbGxlbHdvcmtlci5jCisgKgkgICBTdXBwb3J0IHJvdXRpbmVz IGZvciBhcHBseWluZyB4YWN0IGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlcgorICoKKyAqIENvcHly aWdodCAoYykgMjAyMiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisg KiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2Fw cGx5cGFyYWxsZWx3b3JrZXIuYworICoKKyAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgY29kZSB0 byBsYXVuY2gsIHNldCB1cCwgYW5kIHRlYXJkb3duIGEgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtl ciB3aGljaCByZWNlaXZlcyB0aGUgY2hhbmdlcyBmcm9tIHRoZSBsZWFkZXIgd29ya2VyIGFuZCBp bnZva2VzIHJvdXRpbmVzCisgKiB0byBhcHBseSB0aG9zZSBvbiB0aGUgc3Vic2NyaWJlciBkYXRh YmFzZS4gQWRkaXRpb25hbGx5LCB0aGlzIGZpbGUgY29udGFpbnMKKyAqIHJvdXRpbmVzIHRoYXQg YXJlIGludGVuZGVkIHRvIHN1cHBvcnQgc2V0dGluZyB1cCwgdXNpbmcsIGFuZCB0ZWFyaW5nIGRv d24gYQorICogUGFyYWxsZWxBcHBseVdvcmtlckluZm8gd2hpY2ggaXMgcmVxdWlyZWQgc28gdGhl IGxlYWRlciB3b3JrZXIgYW5kIHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXJzIGNhbiBjb21tdW5p Y2F0ZSB3aXRoIGVhY2ggb3RoZXIuCisgKgorICogVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMg YXJlIGFzc2lnbmVkIChpZiBhdmFpbGFibGUpIGFzIHNvb24gYXMgeGFjdCdzCisgKiBmaXJzdCBz dHJlYW0gaXMgcmVjZWl2ZWQgZm9yIHN1YnNjcmlwdGlvbnMgdGhhdCBoYXZlIHNldCB0aGVpciAn c3RyZWFtaW5nJworICogb3B0aW9uIGFzIHBhcmFsbGVsLiBUaGUgbGVhZGVyIGFwcGx5IHdvcmtl ciB3aWxsIHNlbmQgY2hhbmdlcyB0byB0aGlzIG5ldworICogd29ya2VyIHZpYSBzaGFyZWQgbWVt b3J5LiBXZSBrZWVwIHRoaXMgd29ya2VyIGFzc2lnbmVkIHRpbGwgdGhlIHRyYW5zYWN0aW9uCisg KiBjb21taXQgaXMgcmVjZWl2ZWQgYW5kIGFsc28gd2FpdCBmb3IgdGhlIHdvcmtlciB0byBmaW5p c2ggYXQgY29tbWl0LiBUaGlzCisgKiBwcmVzZXJ2ZXMgY29tbWl0IG9yZGVyaW5nIGFuZCBhdm9p ZCBmaWxlIEkvTyBpbiBtb3N0IGNhc2VzLCBhbHRob3VnaCB3ZQorICogc3RpbGwgbmVlZCB0byBz cGlsbCB0byBhIGZpbGUgaWYgdGhlcmUgaXMgbm8gd29ya2VyIGF2YWlsYWJsZS4gU2VlIGNvbW1l bnRzCisgKiBhdG9wIGxvZ2ljYWwvd29ya2VyIHRvIGtub3cgbW9yZSBhYm91dCBzdHJlYW1lZCB4 YWN0cyB3aG9zZSBjaGFuZ2VzIGFyZQorICogc3BpbGxlZCB0byBkaXNrLiBJdCBpcyBpbXBvcnRh bnQgdG8gbWFpbnRhaW4gY29tbWl0IG9yZGVyIHRvIGF2b2lkIGZhaWx1cmVzCisgKiBkdWUgdG86 IChhKSB0cmFuc2FjdGlvbiBkZXBlbmRlbmNpZXMgLSBzYXkgaWYgd2UgaW5zZXJ0IGEgcm93IGlu IHRoZSBmaXJzdAorICogdHJhbnNhY3Rpb24gYW5kIHVwZGF0ZSBpdCBpbiB0aGUgc2Vjb25kIHRy YW5zYWN0aW9uIG9uIHB1Ymxpc2hlciB0aGVuCisgKiBhbGxvd2luZyB0aGUgc3Vic2NyaWJlciB0 byBhcHBseSBib3RoIGluIHBhcmFsbGVsIGNhbiBsZWFkIHRvIGZhaWx1cmUgaW4gdGhlCisgKiB1 cGRhdGU7IChiKSBkZWFkbG9ja3MgLSBhbGxvd2luZyB0cmFuc2FjdGlvbnMgdGhhdCB1cGRhdGUg dGhlIHNhbWUgc2V0IG9mCisgKiByb3dzL3RhYmxlcyBpbiB0aGUgb3Bwb3NpdGUgb3JkZXIgdG8g YmUgYXBwbGllZCBpbiBwYXJhbGxlbCBjYW4gbGVhZCB0bworICogZGVhZGxvY2tzLgorICoKKyAq IEEgd29ya2VyIHBvb2wgaXMgdXNlZCB0byBhdm9pZCByZXN0YXJ0aW5nIHdvcmtlcnMgZm9yIGVh Y2ggc3RyZWFtaW5nCisgKiB0cmFuc2FjdGlvbi4gV2UgbWFpbnRhaW4gZWFjaCB3b3JrZXIncyBp bmZvcm1hdGlvbiAoUGFyYWxsZWxBcHBseVdvcmtlckluZm8pCisgKiBpbiB0aGUgUGFyYWxsZWxB cHBseVdvcmtlclBvb2wuIEFmdGVyIHN1Y2Nlc3NmdWxseSBsYXVuY2hpbmcgYSBuZXcgd29ya2Vy LAorICogaXRzIGluZm9ybWF0aW9uIGlzIGFkZGVkIHRvIHRoZSBQYXJhbGxlbEFwcGx5V29ya2Vy UG9vbC4gT25jZSB0aGUgd29ya2VyCisgKiBmaW5pc2hlcyBhcHBseWluZyB0aGUgdHJhbnNhY3Rp b24sIGl0IGlzIG1hcmtlZCBhcyBhdmFpbGFibGUgZm9yIHJlLXVzZS4KKyAqIE5vdywgYmVmb3Jl IHN0YXJ0aW5nIGEgbmV3IHdvcmtlciB0byBhcHBseSB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9u LCB3ZQorICogY2hlY2sgdGhlIGxpc3QgZm9yIGFueSBhdmFpbGFibGUgd29ya2VyLiBOb3RlIHRo YXQgd2UgcmV0YWluIGEgbWF4aW11bSBvZgorICogaGFsZiB0aGUgbWF4X3BhcmFsbGVsX2FwcGx5 X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiB3b3JrZXJzIGluIHRoZSBwb29sIGFuZAorICogYWZ0 ZXIgdGhhdCwgd2Ugc2ltcGx5IGV4aXQgdGhlIHdvcmtlciBhZnRlciBhcHBseWluZyB0aGUgdHJh bnNhY3Rpb24uCisgKgorICogWFhYIFRoaXMgd29ya2VyIHBvb2wgdGhyZXNob2xkIGlzIGFyYml0 cmFyeSBhbmQgd2UgY2FuIHByb3ZpZGUgYSBHVUMKKyAqIHZhcmlhYmxlIGZvciB0aGlzIGluIHRo ZSBmdXR1cmUgaWYgcmVxdWlyZWQuCisgKgorICogVGhlIGxlYWRlciBhcHBseSB3b3JrZXIgd2ls bCBjcmVhdGUgYSBzZXBhcmF0ZSBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudAorICogd2hl biBlYWNoIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBzdGFydHMuIFRoZSByZWFzb24gZm9yIHRoaXMg ZGVzaWduIGlzIHRoYXQKKyAqIHdlIGNhbm5vdCBwcmVkaWN0IGhvdyBtYW55IHdvcmtlcnMgd2ls bCBiZSBuZWVkZWQuIEl0IG1heSBiZSBwb3NzaWJsZSB0bworICogYWxsb2NhdGUgZW5vdWdoIHNo YXJlZCBtZW1vcnkgaW4gb25lIHNlZ21lbnQgYmFzZWQgb24gdGhlIG1heGltdW0gbnVtYmVyIG9m CisgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIChtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19w ZXJfc3Vic2NyaXB0aW9uKSwgYnV0CisgKiB0aGlzIHdvdWxkIHdhc3RlIG1lbW9yeSBpZiBubyBw cm9jZXNzIGlzIGFjdHVhbGx5IHN0YXJ0ZWQuCisgKgorICogVGhlIGR5bmFtaWMgc2hhcmVkIG1l bW9yeSBzZWdtZW50IGNvbnRhaW5zOiAoYSkgYSBzaG1fbXEgdGhhdCBpcyB1c2VkIHRvCisgKiBz ZW5kIGNoYW5nZXMgaW4gdGhlIHRyYW5zYWN0aW9uIGZyb20gbGVhZGVyIGFwcGx5IHdvcmtlciB0 byBwYXJhbGxlbCBhcHBseQorICogd29ya2VyOyAoYikgYW5vdGhlciBzaG1fbXEgdGhhdCBpcyB1 c2VkIHRvIHNlbmQgZXJyb3JzIChhbmQgb3RoZXIgbWVzc2FnZXMKKyAqIHJlcG9ydGVkIHZpYSBl bG9nL2VyZXBvcnQpIGZyb20gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB0byBsZWFkZXIgYXBw bHkKKyAqIHdvcmtlcjsgKGMpIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiB0byBiZSBzaGFyZWQgYW1v bmcgcGFyYWxsZWwgYXBwbHkgd29ya2VycworICogYW5kIHRoZSBsZWFkZXIgYXBwbHkgd29ya2Vy IChpLmUuIG1lbWJlcnMgb2YgUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCkuCisgKgorICogTG9j a2luZyBDb25zaWRlcmF0aW9ucworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogU2luY2Ug dGhlIGRhdGFiYXNlIHN0cnVjdHVyZSAoc2NoZW1hIG9mIHN1YnNjcmlwdGlvbiB0YWJsZXMsIGNv bnN0cmFpbnRzLAorICogZXRjLikgb2YgdGhlIHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJlciBjb3Vs ZCBiZSBkaWZmZXJlbnQsIGFwcGx5aW5nCisgKiB0cmFuc2FjdGlvbnMgaW4gcGFyYWxsZWwgbW9k ZSBvbiB0aGUgc3Vic2NyaWJlciBzaWRlIGNhbiBjYXVzZSBzb21lCisgKiBkZWFkbG9ja3MgdGhh dCBkbyBub3Qgb2NjdXIgb24gdGhlIHB1Ymxpc2hlciBzaWRlLiBUaGlzIGNhbiBoYXBwZW4gZXZl bgorICogd2l0aG91dCBwYXJhbGxlbCBtb2RlIHdoZW4gdGhlcmUgYXJlIGNvbmN1cnJlbnQgb3Bl cmF0aW9ucyBvbiB0aGUKKyAqIHN1YnNjcmliZXIuIEluIG9yZGVyIHRvIGRldGVjdCB0aGUgZGVh ZGxvY2tzIGFtb25nIGxlYWRlciBhbmQgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlcnMsIHdlIG5l ZWQgdG8gZW5zdXJlIHRoYXQgd2Ugd2FpdCB1c2luZyBsbWdyIGxvY2tzLiBBbiBhbHRlcm5hdGl2 ZQorICogYXBwcm9hY2ggY291bGQgYmUgdG8gbm90IGFsbG93IHBhcmFsbGVsaXNtIHdoZW4gdGhl IHNjaGVtYSBvZiB0YWJsZXMgaXMKKyAqIGRpZmZlcmVudCBiZXR3ZWVuIHRoZSBwdWJsaXNoZXIg YW5kIHN1YnNjcmliZXIgYnV0IHRoYXQgd291bGQgYmUgdG9vCisgKiByZXN0cmljdGl2ZSBhbmQg d291bGQgcmVxdWlyZSB0aGUgcHVibGlzaGVyIHRvIHNlbmQgbXVjaCBtb3JlIGluZm9ybWF0aW9u CisgKiB0aGFuIGl0IGlzIGN1cnJlbnRseSBzZW5kaW5nLgorICoKKyAqIENvbnNpZGVyIGEgY2Fz ZSB3aGVyZSB0aGUgc3Vic2NyaWJlZCB0YWJsZSBkb2VzIG5vdCBoYXZlIGEgdW5pcXVlIGtleSBv biB0aGUKKyAqIHB1Ymxpc2hlciBhbmQgaGFzIGEgdW5pcXVlIGtleSBvbiB0aGUgc3Vic2NyaWJl ci4KKyAqCisgKiAxKSBEZWFkbG9jayBiZXR3ZWVuIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGFu ZCBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlcgorICoKKyAqIFRoZSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgKFBBKSBpcyBleGVjdXRpbmcgVFgtMSBhbmQgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIKKyAq IChMQSkgaXMgZXhlY3V0aW5nIFRYLTIgY29uY3VycmVudGx5IG9uIHRoZSBzdWJzY3JpYmVyLiBO b3csIExBIGlzIHdhaXRpbmcKKyAqIGZvciBQQSBiZWNhdXNlIG9mIHRoZSB1bmlxdWUga2V5IG9m IHRoZSBzdWJzY3JpYmVkIHRhYmxlIHdoaWxlIFBBIGlzIHdhaXRpbmcKKyAqIGZvciBMQSB0byBz ZW5kIHRoZSBuZXh0IHN0cmVhbSBvZiBjaGFuZ2VzIG9yIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21t YW5kCisgKiBtZXNzYWdlLgorICoKKyAqIEluIG9yZGVyIGZvciBsbWdyIHRvIGRldGVjdCB0aGlz LCB3ZSBoYXZlIExBIGFjcXVpcmUgYSBzZXNzaW9uIGxvY2sgb24gdGhlCisgKiByZW1vdGUgdHJh bnNhY3Rpb24gKGJ5IHBhX2xvY2tfc3RyZWFtKCkpIGFuZCBoYXZlIFBBIHdhaXQgb24gdGhlIGxv Y2sgYmVmb3JlCisgKiB0cnlpbmcgdG8gcmVjZWl2ZSB0aGUgbmV4dCBzdHJlYW0gb2YgY2hhbmdl cy4gU3BlY2lmaWNhbGx5LCBMQSB3aWxsIGFjcXVpcmUKKyAqIHRoZSBsb2NrIGJlZm9yZSBzZW5k aW5nIHRoZSBTVFJFQU1fU1RPUCBhbmQgd2lsbCByZWxlYXNlIGl0IGlmIGFscmVhZHkKKyAqIGFj cXVpcmVkIGJlZm9yZSBzZW5kaW5nIHRoZSBTVFJFQU1fU1RBUlQsIFNUUkVBTV9BQk9SVCAoZm9y IHRvcGxldmVsCisgKiB0cmFuc2FjdGlvbiksIFNUUkVBTV9QUkVQQVJFLCBhbmQgU1RSRUFNX0NP TU1JVC4gVGhlIFBBIHdpbGwgYWNxdWlyZSB0aGUKKyAqIGxvY2sgYWZ0ZXIgcHJvY2Vzc2luZyBT VFJFQU1fU1RPUCBhbmQgU1RSRUFNX0FCT1JUIChmb3Igc3VidHJhbnNhY3Rpb24pIGFuZAorICog dGhlbiByZWxlYXNlIHRoZSBsb2NrIGltbWVkaWF0ZWx5IGFmdGVyIGFjcXVpcmluZyBpdC4KKyAq CisgKiBUaGUgbG9jayBncmFwaCBmb3IgdGhlIGFib3ZlIGV4YW1wbGUgd2lsbCBsb29rIGFzIGZv bGxvd3M6CisgKiBMQSAod2FpdGluZyB0byBhY3F1aXJlIHRoZSBsb2NrIG9uIHRoZSB1bmlxdWUg aW5kZXgpIC0+IFBBICh3YWl0aW5nIHRvCisgKiBhY3F1aXJlIHRoZSBzdHJlYW0gbG9jaykgLT4g TEEKKyAqCisgKiBUaGlzIHdheSwgd2hlbiBQQSBpcyB3YWl0aW5nIGZvciBMQSBmb3IgdGhlIG5l eHQgc3RyZWFtIG9mIGNoYW5nZXMsIHdlIGNhbgorICogaGF2ZSBhIHdhaXQtZWRnZSBmcm9tIFBB IHRvIExBIGluIGxtZ3IsIHdoaWNoIHdpbGwgbWFrZSB1cyBkZXRlY3QgdGhlCisgKiBkZWFkbG9j ayBiZXR3ZWVuIExBIGFuZCBQQS4KKyAqCisgKiAyKSBEZWFkbG9jayBiZXR3ZWVuIHRoZSBsZWFk ZXIgYXBwbHkgd29ya2VyIGFuZCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzCisgKgorICogVGhpcyBz Y2VuYXJpbyBpcyBzaW1pbGFyIHRvIHRoZSBmaXJzdCBjYXNlIGJ1dCBUWC0xIGFuZCBUWC0yIGFy ZSBleGVjdXRlZCBieQorICogdHdvIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgKFBBLTEgYW5kIFBB LTIgcmVzcGVjdGl2ZWx5KS4gSW4gdGhpcyBzY2VuYXJpbywKKyAqIFBBLTIgaXMgd2FpdGluZyBm b3IgUEEtMSB0byBjb21wbGV0ZSBpdHMgdHJhbnNhY3Rpb24gd2hpbGUgUEEtMSBpcyB3YWl0aW5n CisgKiBmb3Igc3Vic2VxdWVudCBpbnB1dCBmcm9tIExBLiBBbHNvLCBMQSBpcyB3YWl0aW5nIGZv ciBQQS0yIHRvIGNvbXBsZXRlIGl0cworICogdHJhbnNhY3Rpb24gaW4gb3JkZXIgdG8gcHJlc2Vy dmUgdGhlIGNvbW1pdCBvcmRlci4gVGhlcmUgaXMgYSBkZWFkbG9jayBhbW9uZworICogdGhlIHRo cmVlIHByb2Nlc3Nlcy4KKyAqCisgKiBJbiBvcmRlciBmb3IgbG1nciB0byBkZXRlY3QgdGhpcywg d2UgaGF2ZSBQQSBhY3F1aXJlIGEgc2Vzc2lvbiBsb2NrICh0aGlzIGlzCisgKiBhIGRpZmZlcmVu dCBsb2NrIHRoYW4gcmVmZXJyZWQgaW4gcHJldmlvdXMgY2FzZSwgc2VlCisgKiBwYV9sb2NrX3Ry YW5zYWN0aW9uKCkpIG9uIHRoZSB0cmFuc2FjdGlvbiBiZWluZyBhcHBsaWVkIGFuZCBoYXZlIExB IHdhaXQgb24KKyAqIHRoZSBsb2NrIGJlZm9yZSBwcm9jZWVkaW5nIGluIHRoZSB0cmFuc2FjdGlv biBmaW5pc2ggY29tbWFuZHMuIFNwZWNpZmljYWxseSwKKyAqIFBBIHdpbGwgYWNxdWlyZSB0aGlz IGxvY2sgaW4gU2hhcmUgbW9kZSBiZWZvcmUgZXhlY3V0aW5nIHRoZSBmaXJzdCBtZXNzYWdlCisg KiBvZiB0aGUgdHJhbnNhY3Rpb24gYW5kIHJlbGVhc2UgaXQgYXQgdGhlIHhhY3QgZW5kLiBMQSB3 aWxsIGFjcXVpcmUgdGhpcyBsb2NrCisgKiBpbiBBY2Nlc3NFeGNsdXNpdmUgbW9kZSBhdCB0cmFu c2FjdGlvbiBmaW5pc2ggY29tbWFuZHMgKFNUUkVBTV9DT01NSVQgYW5kCisgKiBTVFJFQU1fUFJF UEFSRSkgYW5kIHJlbGVhc2UgaXQgaW1tZWRpYXRlbHkuCisgKgorICogVGhlIGxvY2sgZ3JhcGgg Zm9yIHRoZSBhYm92ZSBleGFtcGxlIHdpbGwgbG9vayBhcyBmb2xsb3dzOgorICogTEEgKHdhaXRp bmcgdG8gYWNxdWlyZSB0aGUgdHJhbnNhY3Rpb24gbG9jaykgLT4gUEEtMiAod2FpdGluZyB0byBh Y3F1aXJlIHRoZQorICogbG9jayBkdWUgdG8gdW5pcXVlIGluZGV4IGNvbnN0cmFpbnQpIC0+IFBB LTEgKHdhaXRpbmcgdG8gYWNxdWlyZSB0aGUgc3RyZWFtCisgKiBsb2NrKSAtPiBMQQorICoKKyAq IFRoaXMgd2F5IHdoZW4gTEEgaXMgd2FpdGluZyB0byBmaW5pc2ggdGhlIHRyYW5zYWN0aW9uIGVu ZCBjb21tYW5kIHRvIHByZXNlcnZlCisgKiB0aGUgY29tbWl0IG9yZGVyLCB3ZSB3aWxsIGJlIGFi bGUgdG8gZGV0ZWN0IGRlYWRsb2NrLCBpZiBhbnkuCisgKgorICogT25lIG1pZ2h0IHRoaW5rIHdl IGNhbiB1c2UgWGFjdExvY2tUYWJsZVdhaXQoKSwgYnV0IFhhY3RMb2NrVGFibGVXYWl0KCkKKyAq IGNvbnNpZGVycyBQUkVQQVJFRCBUUkFOU0FDVElPTiBhcyBzdGlsbCBpbiBwcm9ncmVzcyB3aGlj aCBtZWFucyB0aGUgbG9jaworICogd29uJ3QgYmUgcmVsZWFzZWQgZXZlbiBhZnRlciB0aGUgcGFy YWxsZWwgYXBwbHkgd29ya2VyIGhhcyBwcmVwYXJlZCB0aGUKKyAqIHRyYW5zYWN0aW9uLgorICoK KyAqIDMpIERlYWRsb2NrIHdoZW4gdGhlIHNobV9tcSBidWZmZXIgaXMgZnVsbAorICoKKyAqIElu IHRoZSBwcmV2aW91cyBzY2VuYXJpbyAoaWUuIFBBLTEgYW5kIFBBLTIgYXJlIGV4ZWN1dGluZyB0 cmFuc2FjdGlvbnMKKyAqIGNvbmN1cnJlbnRseSksIGlmIHRoZSBzaG1fbXEgYnVmZmVyIGJldHdl ZW4gTEEgYW5kIFBBLTIgaXMgZnVsbCwgTEEgaGFzIHRvCisgKiB3YWl0IHRvIHNlbmQgbWVzc2Fn ZXMsIGFuZCB0aGlzIHdhaXQgZG9lc24ndCBhcHBlYXIgaW4gbG1nci4KKyAqCisgKiBUbyBhdm9p ZCB0aGlzIHdhaXQsIHdlIHVzZSBhIG5vbi1ibG9ja2luZyB3cml0ZSBhbmQgd2FpdCB3aXRoIGEg dGltZW91dC4gSWYKKyAqIHRoZSB0aW1lb3V0IGlzIGV4Y2VlZGVkLCB0aGUgTEEgd2lsbCBzZXJp YWxpemUgYWxsIHRoZSBwZW5kaW5nIG1lc3NhZ2VzIHRvCisgKiBhIGZpbGUgYW5kIGluZGljYXRl IFBBLTIgdGhhdCBpdCBuZWVkcyB0byByZWFkIHRoYXQgZmlsZSBmb3IgdGhlIHJlbWFpbmluZwor ICogbWVzc2FnZXMuIFRoZW4gTEEgd2lsbCBzdGFydCB3YWl0aW5nIGZvciBjb21taXQgYXMgaW4g dGhlIHByZXZpb3VzIGNhc2UKKyAqIHdoaWNoIHdpbGwgZGV0ZWN0IGRlYWRsb2NrIGlmIGFueS4g U2VlIHBhX3NlbmRfZGF0YSgpIGFuZAorICogZW51bSBUcmFuc0FwcGx5QWN0aW9uLgorICoKKyAq IDQpIExvY2sgdHlwZXMKKyAqCisgKiBCb3RoIHRoZSBzdHJlYW0gbG9jayBhbmQgdGhlIHRyYW5z YWN0aW9uIGxvY2sgbWVudGlvbmVkIGFib3ZlIGFyZQorICogc2Vzc2lvbi1sZXZlbCBsb2NrcyBi ZWNhdXNlIGJvdGggbG9ja3MgY291bGQgYmUgYWNxdWlyZWQgb3V0c2lkZSB0aGUKKyAqIHRyYW5z YWN0aW9uLCBhbmQgdGhlIHN0cmVhbSBsb2NrIGluIHRoZSBsZWFkZXIgbmVlZHMgdG8gcGVyc2lz dCBhY3Jvc3MKKyAqIHRyYW5zYWN0aW9uIGJvdW5kYXJpZXMgaS5lLiB1bnRpbCB0aGUgZW5kIG9m IHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisj aW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0LmgiCisjaW5j bHVkZSAibGlicHEvcHFtcS5oIgorI2luY2x1ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgInBvc3Rt YXN0ZXIvaW50ZXJydXB0LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVy LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIgorI2luY2x1ZGUgInJl cGxpY2F0aW9uL29yaWdpbi5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5h bC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCisjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgi CisjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgorI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCisj aW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgor CisjZGVmaW5lIFBHX0xPR0lDQUxfQVBQTFlfU0hNX01BR0lDIDB4Nzg3Y2EwNjcKKworLyoKKyAq IERTTSBrZXlzIGZvciBwYXJhbGxlbCBhcHBseSB3b3JrZXIuICBVbmxpa2Ugb3RoZXIgcGFyYWxs ZWwgZXhlY3V0aW9uIGNvZGUsCisgKiBzaW5jZSB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0 IERTTSBrZXlzIGNvbmZsaWN0aW5nIHdpdGggcGxhbl9ub2RlX2lkIHdlCisgKiBjYW4gdXNlIHNt YWxsIGludGVnZXJzLgorICovCisjZGVmaW5lIFBBUkFMTEVMX0FQUExZX0tFWV9TSEFSRUQJCTEK KyNkZWZpbmUgUEFSQUxMRUxfQVBQTFlfS0VZX01RCQkJMgorI2RlZmluZSBQQVJBTExFTF9BUFBM WV9LRVlfRVJST1JfUVVFVUUJMworCisvKiBRdWV1ZSBzaXplIG9mIERTTSwgMTYgTUIgZm9yIG5v dy4gKi8KKyNkZWZpbmUgRFNNX1FVRVVFX1NJWkUJKDE2ICogMTAyNCAqIDEwMjQpCisKKy8qCisg KiBFcnJvciBxdWV1ZSBzaXplIG9mIERTTS4gSXQgaXMgZGVzaXJhYmxlIHRvIG1ha2UgaXQgbGFy Z2UgZW5vdWdoIHRoYXQgYQorICogdHlwaWNhbCBFcnJvclJlc3BvbnNlIGNhbiBiZSBzZW50IHdp dGhvdXQgYmxvY2tpbmcuICBUaGF0IHdheSwgYSB3b3JrZXIgdGhhdAorICogZXJyb3JzIG91dCBj YW4gd3JpdGUgdGhlIHdob2xlIG1lc3NhZ2UgaW50byB0aGUgcXVldWUgYW5kIHRlcm1pbmF0ZSB3 aXRob3V0CisgKiB3YWl0aW5nIGZvciB0aGUgdXNlciBiYWNrZW5kLgorICovCisjZGVmaW5lIERT TV9FUlJPUl9RVUVVRV9TSVpFCQkJKDE2ICogMTAyNCkKKworLyoKKyAqIFRoZXJlIGFyZSB0aHJl ZSBmaWVsZHMgaW4gZWFjaCBtZXNzYWdlIHJlY2VpdmVkIGJ5IHRoZSBwYXJhbGxlbCBhcHBseQor ICogd29ya2VyOiBzdGFydF9sc24sIGVuZF9sc24gYW5kIHNlbmRfdGltZS4gQmVjYXVzZSB3ZSBo YXZlIHVwZGF0ZWQgdGhlc2UKKyAqIHN0YXRpc3RpY3MgaW4gdGhlIGxlYWRlciBhcHBseSB3b3Jr ZXIsIHdlIGNhbiBpZ25vcmUgdGhlc2UgZmllbGRzIGluIHRoZQorICogcGFyYWxsZWwgYXBwbHkg d29ya2VyIChzZWUgZnVuY3Rpb24gTG9naWNhbFJlcEFwcGx5TG9vcCkuCisgKi8KKyNkZWZpbmUg U0laRV9TVEFUU19NRVNTQUdFICgyICogc2l6ZW9mKFhMb2dSZWNQdHIpICsgc2l6ZW9mKFRpbWVz dGFtcFR6KSkKKworLyoKKyAqIFRoZSB0eXBlIG9mIHNlc3Npb24tbGV2ZWwgbG9jayBvbiBhIHRy YW5zYWN0aW9uIGJlaW5nIGFwcGxpZWQgb24gYSBsb2dpY2FsCisgKiByZXBsaWNhdGlvbiBzdWJz Y3JpYmVyLgorICovCisjZGVmaW5lIFBBUkFMTEVMX0FQUExZX0xPQ0tfU1RSRUFNCTAKKyNkZWZp bmUgUEFSQUxMRUxfQVBQTFlfTE9DS19YQUNUCTEKKworLyoKKyAqIEhhc2ggdGFibGUgZW50cnkg dG8gbWFwIHhpZCB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHN0YXRlLgorICovCit0eXBl ZGVmIHN0cnVjdCBQYXJhbGxlbEFwcGx5V29ya2VyRW50cnkKK3sKKwlUcmFuc2FjdGlvbklkIHhp ZDsJCQkvKiBIYXNoIGtleSAtLSBtdXN0IGJlIGZpcnN0ICovCisJUGFyYWxsZWxBcHBseVdvcmtl ckluZm8gKndpbmZvOworfSBQYXJhbGxlbEFwcGx5V29ya2VyRW50cnk7CisKKy8qCisgKiBBIGhh c2ggdGFibGUgdXNlZCB0byBjYWNoZSB0aGUgc3RhdGUgb2Ygc3RyZWFtaW5nIHRyYW5zYWN0aW9u cyBiZWluZyBhcHBsaWVkCisgKiBieSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4KKyAqLwor c3RhdGljIEhUQUIgKlBhcmFsbGVsQXBwbHlUeG5IYXNoID0gTlVMTDsKKworLyoKKyogQSBsaXN0 IChwb29sKSBvZiBhY3RpdmUgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4gVGhlIGluZm9ybWF0aW9u IGZvcgorKiB0aGUgbmV3IHdvcmtlciBpcyBhZGRlZCB0byB0aGUgbGlzdCBhZnRlciBzdWNjZXNz ZnVsbHkgbGF1bmNoaW5nIGl0LiBUaGUKKyogbGlzdCBlbnRyeSBpcyByZW1vdmVkIGlmIHRoZXJl IGFyZSBhbHJlYWR5IGVub3VnaCB3b3JrZXJzIGluIHRoZSB3b3JrZXIKKyogcG9vbCBlaXRoZXIg YXQgdGhlIGVuZCBvZiB0aGUgdHJhbnNhY3Rpb24gb3Igd2hpbGUgdHJ5aW5nIHRvIGZpbmQgYSBm cmVlCisqIHdvcmtlciBmb3IgYXBwbHlpbmcgdGhlIHRyYW5zYWN0aW9uLiBGb3IgbW9yZSBpbmZv cm1hdGlvbiBhYm91dCB0aGUgd29ya2VyCisqIHBvb2wsIHNlZSBjb21tZW50cyBhdG9wIHRoaXMg ZmlsZS4KKyAqLworc3RhdGljIExpc3QgKlBhcmFsbGVsQXBwbHlXb3JrZXJQb29sID0gTklMOwor CisvKgorICogSW5mb3JtYXRpb24gc2hhcmVkIGJldHdlZW4gbGVhZGVyIGFwcGx5IHdvcmtlciBh bmQgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICovCitQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVk ICpNeVBhcmFsbGVsU2hhcmVkID0gTlVMTDsKKworLyoKKyAqIElzIHRoZXJlIGEgbWVzc2FnZSBz ZW50IGJ5IGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHRoYXQgdGhlIGxlYWRlciBhcHBseQorICog d29ya2VyIG5lZWRzIHRvIHJlY2VpdmU/CisgKi8KK3ZvbGF0aWxlIHNpZ19hdG9taWNfdCBQYXJh bGxlbEFwcGx5TWVzc2FnZVBlbmRpbmcgPSBmYWxzZTsKKworLyoKKyAqIENhY2hlIHRoZSBwYXJh bGxlbCBhcHBseSB3b3JrZXIgaW5mb3JtYXRpb24gcmVxdWlyZWQgZm9yIGFwcGx5aW5nIHRoZQor ICogY3VycmVudCBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uIEl0IGlzIHVzZWQgdG8gc2F2ZSB0aGUg Y29zdCBvZiBzZWFyY2hpbmcgdGhlCisgKiBoYXNoIHRhYmxlIHdoZW4gYXBwbHlpbmcgdGhlIGNo YW5nZXMgYmV0d2VlbiBTVFJFQU1fU1RBUlQgYW5kIFNUUkVBTV9TVE9QLgorICovCitzdGF0aWMg UGFyYWxsZWxBcHBseVdvcmtlckluZm8gKnN0cmVhbV9hcHBseV93b3JrZXIgPSBOVUxMOworCisv KiBBIGxpc3QgdG8gbWFpbnRhaW4gc3VidHJhbnNhY3Rpb25zLCBpZiBhbnkuICovCitzdGF0aWMg TGlzdCAqc3VieGFjdGxpc3QgPSBOSUw7CisKK3N0YXRpYyB2b2lkIHBhX2ZyZWVfd29ya2VyX2lu Zm8oUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKTsKK3N0YXRpYyBQYXJhbGxlbFRyYW5z U3RhdGUgcGFfZ2V0X3hhY3Rfc3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqd3NoYXJl ZCk7CitzdGF0aWMgUGFydGlhbEZpbGVTZXRTdGF0ZSBwYV9nZXRfZmlsZXNldF9zdGF0ZSh2b2lk KTsKKworLyoKKyAqIFJldHVybnMgdHJ1ZSBpZiBpdCBpcyBPSyB0byBzdGFydCBhIHBhcmFsbGVs IGFwcGx5IHdvcmtlciwgZmFsc2Ugb3RoZXJ3aXNlLgorICovCitzdGF0aWMgYm9vbAorcGFfY2Fu X3N0YXJ0KFRyYW5zYWN0aW9uSWQgeGlkKQoreworCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxp ZCh4aWQpKTsKKworCS8qCisJICogRG9uJ3Qgc3RhcnQgYSBuZXcgcGFyYWxsZWwgYXBwbHkgd29y a2VyIGlmIHRoZSBzdWJzY3JpcHRpb24gaXMgbm90CisJICogdXNpbmcgcGFyYWxsZWwgc3RyZWFt aW5nIG1vZGUsIG9yIGlmIHRoZSBwdWJsaXNoZXIgZG9lcyBub3Qgc3VwcG9ydAorCSAqIHBhcmFs bGVsIGFwcGx5LgorCSAqLworCWlmICghTXlMb2dpY2FsUmVwV29ya2VyLT5wYXJhbGxlbF9hcHBs eSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyogT25seSBsZWFkZXIgYXBwbHkgd29ya2VycyBjYW4g c3RhcnQgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4gKi8KKwlpZiAoIWFtX2xlYWRlcl9hcHBseV93 b3JrZXIoKSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyoKKwkgKiBEb24ndCBzdGFydCBhIG5ldyBw YXJhbGxlbCB3b3JrZXIgaWYgdXNlciBoYXMgc2V0IHNraXBsc24gYXMgaXQncworCSAqIHBvc3Np YmxlIHRoYXQgdGhleSB3YW50IHRvIHNraXAgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4gRm9y CisJICogc3RyZWFtaW5nIHRyYW5zYWN0aW9ucywgd2UgbmVlZCB0byBzZXJpYWxpemUgdGhlIHRy YW5zYWN0aW9uIHRvIGEgZmlsZQorCSAqIHNvIHRoYXQgd2UgY2FuIGdldCB0aGUgbGFzdCBMU04g b2YgdGhlIHRyYW5zYWN0aW9uIHRvIGp1ZGdlIHdoZXRoZXIgdG8KKwkgKiBza2lwIGJlZm9yZSBz dGFydGluZyB0byBhcHBseSB0aGUgY2hhbmdlLgorCSAqLworCWlmICghWExvZ1JlY1B0cklzSW52 YWxpZChNeVN1YnNjcmlwdGlvbi0+c2tpcGxzbikpCisJCXJldHVybiBmYWxzZTsKKworCS8qCisJ ICogRm9yIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMgdGhhdCBhcmUgYmVpbmcgYXBwbGllZCB1c2lu ZyBhIHBhcmFsbGVsCisJICogYXBwbHkgd29ya2VyLCB3ZSBjYW5ub3QgZGVjaWRlIHdoZXRoZXIg dG8gYXBwbHkgdGhlIGNoYW5nZSBmb3IgYQorCSAqIHJlbGF0aW9uIHRoYXQgaXMgbm90IGluIHRo ZSBSRUFEWSBzdGF0ZSAoc2VlCisJICogc2hvdWxkX2FwcGx5X2NoYW5nZXNfZm9yX3JlbCkgYXMg d2Ugd29uJ3Qga25vdyByZW1vdGVfZmluYWxfbHNuIGJ5IHRoYXQKKwkgKiB0aW1lLiBTbywgd2Ug ZG9uJ3Qgc3RhcnQgdGhlIG5ldyBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaW4gdGhpcyBjYXNlLgor CSAqLworCWlmICghQWxsVGFibGVzeW5jc1JlYWR5KCkpCisJCXJldHVybiBmYWxzZTsKKworCXJl dHVybiB0cnVlOworfQorCisvKgorICogU2V0IHVwIGEgZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNl Z21lbnQuCisgKgorICogV2Ugc2V0IHVwIGEgY29udHJvbCByZWdpb24gdGhhdCBjb250YWlucyBh IGZpeGVkLXNpemUgd29ya2VyIGluZm8KKyAqIChQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkKSwg YSBtZXNzYWdlIHF1ZXVlLCBhbmQgYW4gZXJyb3IgcXVldWUuCisgKgorICogUmV0dXJucyB0cnVl IG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGZhaWx1cmUuCisgKi8KK3N0YXRpYyBib29sCitwYV9zZXR1 cF9kc20oUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKQoreworCXNobV90b2NfZXN0aW1h dG9yIGU7CisJU2l6ZQkJc2Vnc2l6ZTsKKwlkc21fc2VnbWVudCAqc2VnOworCXNobV90b2MgICAg KnRvYzsKKwlQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICpzaGFyZWQ7CisJc2htX21xCSAgICpt cTsKKwlTaXplCQlxdWV1ZV9zaXplID0gRFNNX1FVRVVFX1NJWkU7CisJU2l6ZQkJZXJyb3JfcXVl dWVfc2l6ZSA9IERTTV9FUlJPUl9RVUVVRV9TSVpFOworCisJLyoKKwkgKiBFc3RpbWF0ZSBob3cg bXVjaCBzaGFyZWQgbWVtb3J5IHdlIG5lZWQuCisJICoKKwkgKiBCZWNhdXNlIHRoZSBUT0MgbWFj aGluZXJ5IG1heSBjaG9vc2UgdG8gaW5zZXJ0IHBhZGRpbmcgb2Ygb2RkbHktc2l6ZWQKKwkgKiBy ZXF1ZXN0cywgd2UgbXVzdCBlc3RpbWF0ZSBlYWNoIGNodW5rIHNlcGFyYXRlbHkuCisJICoKKwkg KiBXZSBuZWVkIG9uZSBrZXkgdG8gcmVnaXN0ZXIgdGhlIGxvY2F0aW9uIG9mIHRoZSBoZWFkZXIs IGFuZCB0d28gb3RoZXIKKwkgKiBrZXlzIHRvIHRyYWNrIHRoZSBsb2NhdGlvbnMgb2YgdGhlIG1l c3NhZ2UgcXVldWUgYW5kIHRoZSBlcnJvciBtZXNzYWdlCisJICogcXVldWUuCisJICovCisJc2ht X3RvY19pbml0aWFsaXplX2VzdGltYXRvcigmZSk7CisJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygm ZSwgc2l6ZW9mKFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQpKTsKKwlzaG1fdG9jX2VzdGltYXRl X2NodW5rKCZlLCBxdWV1ZV9zaXplKTsKKwlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZlLCBlcnJv cl9xdWV1ZV9zaXplKTsKKworCXNobV90b2NfZXN0aW1hdGVfa2V5cygmZSwgMyk7CisJc2Vnc2l6 ZSA9IHNobV90b2NfZXN0aW1hdGUoJmUpOworCisJLyogQ3JlYXRlIHRoZSBzaGFyZWQgbWVtb3J5 IHNlZ21lbnQgYW5kIGVzdGFibGlzaCBhIHRhYmxlIG9mIGNvbnRlbnRzLiAqLworCXNlZyA9IGRz bV9jcmVhdGUoc2htX3RvY19lc3RpbWF0ZSgmZSksIDApOworCWlmICghc2VnKQorCQlyZXR1cm4g ZmFsc2U7CisKKwl0b2MgPSBzaG1fdG9jX2NyZWF0ZShQR19MT0dJQ0FMX0FQUExZX1NITV9NQUdJ QywgZHNtX3NlZ21lbnRfYWRkcmVzcyhzZWcpLAorCQkJCQkJIHNlZ3NpemUpOworCisJLyogU2V0 IHVwIHRoZSBoZWFkZXIgcmVnaW9uLiAqLworCXNoYXJlZCA9IHNobV90b2NfYWxsb2NhdGUodG9j LCBzaXplb2YoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCkpOworCVNwaW5Mb2NrSW5pdCgmc2hh cmVkLT5tdXRleCk7CisKKwlzaGFyZWQtPnhhY3Rfc3RhdGUgPSBQQVJBTExFTF9UUkFOU19VTktO T1dOOworCXBnX2F0b21pY19pbml0X3UzMigmKHNoYXJlZC0+cGVuZGluZ19zdHJlYW1fY291bnQp LCAwKTsKKwlzaGFyZWQtPmxhc3RfY29tbWl0X2VuZCA9IEludmFsaWRYTG9nUmVjUHRyOworCXNo YXJlZC0+ZmlsZXNldF9zdGF0ZSA9IEZTX0VNUFRZOworCisJc2htX3RvY19pbnNlcnQodG9jLCBQ QVJBTExFTF9BUFBMWV9LRVlfU0hBUkVELCBzaGFyZWQpOworCisJLyogU2V0IHVwIG1lc3NhZ2Ug cXVldWUgZm9yIHRoZSB3b3JrZXIuICovCisJbXEgPSBzaG1fbXFfY3JlYXRlKHNobV90b2NfYWxs b2NhdGUodG9jLCBxdWV1ZV9zaXplKSwgcXVldWVfc2l6ZSk7CisJc2htX3RvY19pbnNlcnQodG9j LCBQQVJBTExFTF9BUFBMWV9LRVlfTVEsIG1xKTsKKwlzaG1fbXFfc2V0X3NlbmRlcihtcSwgTXlQ cm9jKTsKKworCS8qIEF0dGFjaCB0aGUgcXVldWUuICovCisJd2luZm8tPm1xX2hhbmRsZSA9IHNo bV9tcV9hdHRhY2gobXEsIHNlZywgTlVMTCk7CisKKwkvKiBTZXQgdXAgZXJyb3IgcXVldWUgZm9y IHRoZSB3b3JrZXIuICovCisJbXEgPSBzaG1fbXFfY3JlYXRlKHNobV90b2NfYWxsb2NhdGUodG9j LCBlcnJvcl9xdWV1ZV9zaXplKSwKKwkJCQkJICAgZXJyb3JfcXVldWVfc2l6ZSk7CisJc2htX3Rv Y19pbnNlcnQodG9jLCBQQVJBTExFTF9BUFBMWV9LRVlfRVJST1JfUVVFVUUsIG1xKTsKKwlzaG1f bXFfc2V0X3JlY2VpdmVyKG1xLCBNeVByb2MpOworCisJLyogQXR0YWNoIHRoZSBxdWV1ZS4gKi8K Kwl3aW5mby0+ZXJyb3JfbXFfaGFuZGxlID0gc2htX21xX2F0dGFjaChtcSwgc2VnLCBOVUxMKTsK KworCS8qIFJldHVybiByZXN1bHRzIHRvIGNhbGxlci4gKi8KKwl3aW5mby0+ZHNtX3NlZyA9IHNl ZzsKKwl3aW5mby0+c2hhcmVkID0gc2hhcmVkOworCisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisg KiBUcnkgdG8gZ2V0IGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZyb20gdGhlIHBvb2wuIElmIG5v bmUgaXMgYXZhaWxhYmxlIHRoZW4KKyAqIHN0YXJ0IGEgbmV3IG9uZS4KKyAqLworc3RhdGljIFBh cmFsbGVsQXBwbHlXb3JrZXJJbmZvICoKK3BhX2xhdW5jaF9wYXJhbGxlbF93b3JrZXIodm9pZCkK K3sKKwlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CisJYm9vbAkJbGF1bmNoZWQ7CisJUGFyYWxs ZWxBcHBseVdvcmtlckluZm8gKndpbmZvOworCUxpc3QJICAgKmFjdGl2ZV93b3JrZXJzID0gbGlz dF9jb3B5KFBhcmFsbGVsQXBwbHlXb3JrZXJQb29sKTsKKwlMaXN0Q2VsbCAgICpsYzsKKworCS8q IFRyeSB0byBnZXQgYW4gYXZhaWxhYmxlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBmcm9tIHRoZSB3 b3JrZXIgcG9vbC4gKi8KKwlmb3JlYWNoKGxjLCBhY3RpdmVfd29ya2VycykKKwl7CisJCXdpbmZv ID0gKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICopIGxmaXJzdChsYyk7CisKKwkJLyoKKwkJICog V2UgZmlyc3QgdHJ5IHRvIGZyZWUgdGhlIHdvcmtlciB0byBpbXByb3ZlIG91ciBjaGFuY2VzIG9m IGZpbmRpbmcKKwkJICogb25lIHRoYXQgaXMgbm90IGluIHVzZS4gTm9ybWFsbHksIHdlIGZyZWUg dGhlIHdvcmtlciBhZnRlciBlbnN1cmluZworCQkgKiB0aGF0IHRoZSB0cmFuc2FjdGlvbiBpcyBj b21taXR0ZWQgYnkgdGhlIHBhcmFsbGVsIHdvcmtlciBidXQgZm9yCisJCSAqIHJvbGxiYWNrcywg d2UgZG9uJ3Qgd2FpdCBmb3IgdGhlIHRyYW5zYWN0aW9uIHRvIGZpbmlzaCBzbyBjYW4ndAorCQkg KiBmcmVlIHRoZSB3b3JrZXIgaW5mb3JtYXRpb24gaW1tZWRpYXRlbHkuCisJCSAqLworCQlpZiAo cGFfZnJlZV93b3JrZXIod2luZm8pKQorCQkJY29udGludWU7CisKKwkJaWYgKCF3aW5mby0+aW5f dXNlKQorCQkJcmV0dXJuIHdpbmZvOworCX0KKworCS8qCisJICogU3RhcnQgYSBuZXcgcGFyYWxs ZWwgYXBwbHkgd29ya2VyLgorCSAqCisJICogVGhlIHdvcmtlciBpbmZvIGNhbiBiZSB1c2VkIGZv ciB0aGUgbGlmZXRpbWUgb2YgdGhlIHdvcmtlciBwcm9jZXNzLCBzbworCSAqIGNyZWF0ZSBpdCBp biBhIHBlcm1hbmVudCBjb250ZXh0LgorCSAqLworCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0 U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKKworCXdpbmZvID0gKFBhcmFsbGVsQXBwbHlXb3JrZXJJ bmZvICopIHBhbGxvYzAoc2l6ZW9mKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvKSk7CisKKwkvKiBT ZXR1cCBzaGFyZWQgbWVtb3J5LiAqLworCWlmICghcGFfc2V0dXBfZHNtKHdpbmZvKSkKKwl7CisJ CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKwkJcGZyZWUod2luZm8pOworCQly ZXR1cm4gTlVMTDsKKwl9CisKKwlsYXVuY2hlZCA9IGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChN eUxvZ2ljYWxSZXBXb3JrZXItPmRiaWQsCisJCQkJCQkJCQkJTXlTdWJzY3JpcHRpb24tPm9pZCwK KwkJCQkJCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSwKKwkJCQkJCQkJCQlNeUxvZ2ljYWxSZXBX b3JrZXItPnVzZXJpZCwKKwkJCQkJCQkJCQlJbnZhbGlkT2lkLAorCQkJCQkJCQkJCWRzbV9zZWdt ZW50X2hhbmRsZSh3aW5mby0+ZHNtX3NlZykpOworCisJaWYgKGxhdW5jaGVkKQorCXsKKwkJUGFy YWxsZWxBcHBseVdvcmtlclBvb2wgPSBsYXBwZW5kKFBhcmFsbGVsQXBwbHlXb3JrZXJQb29sLCB3 aW5mbyk7CisJfQorCWVsc2UKKwl7CisJCXBhX2ZyZWVfd29ya2VyX2luZm8od2luZm8pOworCQl3 aW5mbyA9IE5VTEw7CisJfQorCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwor CisJcmV0dXJuIHdpbmZvOworfQorCisvKgorICogQWxsb2NhdGUgYSBwYXJhbGxlbCBhcHBseSB3 b3JrZXIgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIHRoZSBzcGVjaWZpZWQgeGlkLgorICoKKyAqIFdl IGZpcnN0IHRyeSB0byBnZXQgYW4gYXZhaWxhYmxlIHdvcmtlciBmcm9tIHRoZSBwb29sLCBpZiBh bnkgYW5kIHRoZW4gdHJ5CisgKiB0byBsYXVuY2ggYSBuZXcgd29ya2VyLiBPbiBzdWNjZXNzZnVs IGFsbG9jYXRpb24sIHJlbWVtYmVyIHRoZSB3b3JrZXIKKyAqIGluZm9ybWF0aW9uIGluIHRoZSBo YXNoIHRhYmxlIHNvIHRoYXQgd2UgY2FuIGdldCBpdCBsYXRlciBmb3IgcHJvY2Vzc2luZyB0aGUK KyAqIHN0cmVhbWluZyBjaGFuZ2VzLgorICovCit2b2lkCitwYV9hbGxvY2F0ZV93b3JrZXIoVHJh bnNhY3Rpb25JZCB4aWQpCit7CisJYm9vbAkJZm91bmQ7CisJUGFyYWxsZWxBcHBseVdvcmtlcklu Zm8gKndpbmZvID0gTlVMTDsKKwlQYXJhbGxlbEFwcGx5V29ya2VyRW50cnkgKmVudHJ5OworCisJ aWYgKCFwYV9jYW5fc3RhcnQoeGlkKSkKKwkJcmV0dXJuOworCisJLyogRmlyc3QgdGltZSB0aHJv dWdoLCBpbml0aWFsaXplIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBzdGF0ZSBoYXNodGFibGUuICov CisJaWYgKCFQYXJhbGxlbEFwcGx5VHhuSGFzaCkKKwl7CisJCUhBU0hDVEwJCWN0bDsKKworCQlN ZW1TZXQoJmN0bCwgMCwgc2l6ZW9mKGN0bCkpOworCQljdGwua2V5c2l6ZSA9IHNpemVvZihUcmFu c2FjdGlvbklkKTsKKwkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihQYXJhbGxlbEFwcGx5V29ya2Vy RW50cnkpOworCQljdGwuaGN4dCA9IEFwcGx5Q29udGV4dDsKKworCQlQYXJhbGxlbEFwcGx5VHhu SGFzaCA9IGhhc2hfY3JlYXRlKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdv cmtlcnMgaGFzaCIsCisJCQkJCQkJCQkJICAgMTYsICZjdGwsCisJCQkJCQkJCQkJICAgSEFTSF9F TEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJfQorCisJLyoKKwkgKiBJdCdzIG5l Y2Vzc2FyeSB0byByZXJlYWQgdGhlIHN1YnNjcmlwdGlvbiBpbmZvcm1hdGlvbiBiZWZvcmUgYXNz aWduaW5nCisJICogdGhlIHRyYW5zYWN0aW9uIHRvIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBP dGhlcndpc2UsIHRoZSBsZWFkZXIgbWF5CisJICogbm90IGJlIGFibGUgdG8gcmVyZWFkIHRoZSBz dWJzY3JpcHRpb24gaW5mb3JtYXRpb24gaWYgc3RyZWFtaW5nCisJICogdHJhbnNhY3Rpb25zIGtl ZXAgY29taW5nIGFuZCBhcmUgaGFuZGxlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLgorCSAq LworCW1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24oKTsKKworCXdpbmZvID0gcGFfbGF1bmNoX3Bh cmFsbGVsX3dvcmtlcigpOworCWlmICghd2luZm8pCisJCXJldHVybjsKKworCS8qIENyZWF0ZSBh biBlbnRyeSBmb3IgdGhlIHJlcXVlc3RlZCB0cmFuc2FjdGlvbi4gKi8KKwllbnRyeSA9IGhhc2hf c2VhcmNoKFBhcmFsbGVsQXBwbHlUeG5IYXNoLCAmeGlkLCBIQVNIX0VOVEVSLCAmZm91bmQpOwor CWlmIChmb3VuZCkKKwkJZWxvZyhFUlJPUiwgImhhc2ggdGFibGUgY29ycnVwdGVkIik7CisKKwkv KiBVcGRhdGUgdGhlIHRyYW5zYWN0aW9uIGluZm9ybWF0aW9uIGluIHNoYXJlZCBtZW1vcnkuICov CisJU3BpbkxvY2tBY3F1aXJlKCZ3aW5mby0+c2hhcmVkLT5tdXRleCk7CisJd2luZm8tPnNoYXJl ZC0+eGFjdF9zdGF0ZSA9IFBBUkFMTEVMX1RSQU5TX1VOS05PV047CisJd2luZm8tPnNoYXJlZC0+ eGlkID0geGlkOworCVNwaW5Mb2NrUmVsZWFzZSgmd2luZm8tPnNoYXJlZC0+bXV0ZXgpOworCisJ d2luZm8tPmluX3VzZSA9IHRydWU7CisJd2luZm8tPnNlcmlhbGl6ZV9jaGFuZ2VzID0gZmFsc2U7 CisJZW50cnktPndpbmZvID0gd2luZm87CisJZW50cnktPnhpZCA9IHhpZDsKK30KKworLyoKKyAq IEZpbmQgdGhlIGFzc2lnbmVkIHdvcmtlciBmb3IgdGhlIGdpdmVuIHRyYW5zYWN0aW9uLCBpZiBh bnkuCisgKi8KK1BhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICoKK3BhX2ZpbmRfd29ya2VyKFRyYW5z YWN0aW9uSWQgeGlkKQoreworCWJvb2wJCWZvdW5kOworCVBhcmFsbGVsQXBwbHlXb3JrZXJFbnRy eSAqZW50cnk7CisKKwlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkpCisJCXJldHVybiBO VUxMOworCisJaWYgKCFQYXJhbGxlbEFwcGx5VHhuSGFzaCkKKwkJcmV0dXJuIE5VTEw7CisKKwkv KiBSZXR1cm4gdGhlIGNhY2hlZCBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaWYgdmFsaWQuICovCisJ aWYgKHN0cmVhbV9hcHBseV93b3JrZXIpCisJCXJldHVybiBzdHJlYW1fYXBwbHlfd29ya2VyOwor CisJLyogRmluZCBhbiBlbnRyeSBmb3IgdGhlIHJlcXVlc3RlZCB0cmFuc2FjdGlvbi4gKi8KKwll bnRyeSA9IGhhc2hfc2VhcmNoKFBhcmFsbGVsQXBwbHlUeG5IYXNoLCAmeGlkLCBIQVNIX0ZJTkQs ICZmb3VuZCk7CisJaWYgKGZvdW5kKQorCXsKKwkJLyogVGhlIHdvcmtlciBtdXN0IG5vdCBoYXZl IGV4aXRlZC4gICovCisJCUFzc2VydChlbnRyeS0+d2luZm8tPmluX3VzZSk7CisJCXJldHVybiBl bnRyeS0+d2luZm87CisJfQorCisJcmV0dXJuIE5VTEw7Cit9CisKKy8qCisgKiBNYWtlcyB0aGUg d29ya2VyIGF2YWlsYWJsZSBmb3IgcmV1c2UuCisgKgorICogVGhpcyByZW1vdmVzIHRoZSBwYXJh bGxlbCBhcHBseSB3b3JrZXIgZW50cnkgZnJvbSB0aGUgaGFzaCB0YWJsZSBzbyB0aGF0IGl0Cisg KiBjYW4ndCBiZSB1c2VkLiBJZiB0aGVyZSBhcmUgZW5vdWdoIHdvcmtlcnMgaW4gdGhlIHBvb2ws IGl0IHN0b3BzIHRoZSB3b3JrZXIKKyAqIGFuZCBmcmVlcyB0aGUgY29ycmVzcG9uZGluZyBpbmZv LiBPdGhlcndpc2UgaXQganVzdCBtYXJrcyB0aGUgd29ya2VyIGFzCisgKiBhdmFpbGFibGUgZm9y IHJldXNlLgorICoKKyAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSB3b3JrZXIgcG9v bCwgc2VlIGNvbW1lbnRzIGF0b3AgdGhpcyBmaWxlLgorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiB0 aGUgd29ya2VyIGlzIHN0b3BwZWQsIGZhbHNlIG90aGVyd2lzZS4KKyAqLworYm9vbAorcGFfZnJl ZV93b3JrZXIoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKQoreworCUFzc2VydCghYW1f cGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpOworCisJLyogV29ya2VyIGlzIGFscmVhZHkgYXZhaWxh YmxlIGZvciByZXVzZS4gKi8KKwlpZiAoIXdpbmZvLT5pbl91c2UpCisJCXJldHVybiBmYWxzZTsK KworCS8qCisJICogRG9uJ3QgZnJlZSB0aGUgd29ya2VyIGlmIHRoZSB0cmFuc2FjdGlvbiBpbiB0 aGUgd29ya2VyIGlzIHN0aWxsIGluCisJICogcHJvZ3Jlc3MuIFRoaXMgY291bGQgaGFwcGVuIGFz IHdlIGRvbid0IHdhaXQgZm9yIHRoZSBhcHBseSBvZiByb2xsYmFjaworCSAqIHRvIGZpbmlzaC4K KwkgKi8KKwlpZiAocGFfZ2V0X3hhY3Rfc3RhdGUod2luZm8tPnNoYXJlZCkgIT0gUEFSQUxMRUxf VFJBTlNfRklOSVNIRUQpCisJCXJldHVybiBmYWxzZTsKKworCWlmICghaGFzaF9zZWFyY2goUGFy YWxsZWxBcHBseVR4bkhhc2gsICZ3aW5mby0+c2hhcmVkLT54aWQsIEhBU0hfUkVNT1ZFLCBOVUxM KSkKKwkJZWxvZyhFUlJPUiwgImhhc2ggdGFibGUgY29ycnVwdGVkIik7CisKKwkvKgorCSAqIFN0 b3AgdGhlIHdvcmtlciBpZiB0aGVyZSBhcmUgZW5vdWdoIHdvcmtlcnMgaW4gdGhlIHBvb2wuCisJ ICoKKwkgKiBYWFggQWRkaXRpb25hbGx5LCB3ZSBhbHNvIHN0b3AgdGhlIHdvcmtlciBpZiB0aGUg bGVhZGVyIGFwcGx5IHdvcmtlcgorCSAqIHNlcmlhbGl6ZSBwYXJ0IG9mIHRoZSB0cmFuc2FjdGlv biBkYXRhIGR1ZSB0byBhIHNlbmQgdGltZW91dC4gVGhpcyBpcworCSAqIGJlY2F1c2UgdGhlIG1l c3NhZ2UgY291bGQgYmUgcGFydGlhbGx5IHdyaXR0ZW4gdG8gdGhlIHF1ZXVlIGFuZCB0aGVyZQor CSAqIGlzIG5vIHdheSB0byBjbGVhbiB0aGUgcXVldWUgb3RoZXIgdGhhbiByZXNlbmRpbmcgdGhl IG1lc3NhZ2UgdW50aWwgaXQKKwkgKiBzdWNjZWVkcy4gSW5zdGVhZCBvZiB0cnlpbmcgdG8gc2Vu ZCB0aGUgZGF0YSB3aGljaCBhbnl3YXkgd291bGQgaGF2ZQorCSAqIGJlZW4gc2VyaWFsaXplZCBh bmQgdGhlbiBsZXR0aW5nIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZGVhbCB3aXRoCisJICog dGhlIHNwdXJpb3VzIG1lc3NhZ2UsIHdlIHN0b3AgdGhlIHdvcmtlci4KKwkgKi8KKwlpZiAod2lu Zm8tPnNlcmlhbGl6ZV9jaGFuZ2VzIHx8CisJCWxpc3RfbGVuZ3RoKFBhcmFsbGVsQXBwbHlXb3Jr ZXJQb29sKSA+CisJCShtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9u IC8gMikpCisJeworCQlpbnQJCQlzbG90X25vOworCQl1aW50MTYJCWdlbmVyYXRpb247CisKKwkJ U3BpbkxvY2tBY3F1aXJlKCZ3aW5mby0+c2hhcmVkLT5tdXRleCk7CisJCWdlbmVyYXRpb24gPSB3 aW5mby0+c2hhcmVkLT5sb2dpY2FscmVwX3dvcmtlcl9nZW5lcmF0aW9uOworCQlzbG90X25vID0g d2luZm8tPnNoYXJlZC0+bG9naWNhbHJlcF93b3JrZXJfc2xvdF9ubzsKKwkJU3BpbkxvY2tSZWxl YXNlKCZ3aW5mby0+c2hhcmVkLT5tdXRleCk7CisKKwkJbG9naWNhbHJlcF9wYV93b3JrZXJfc3Rv cChzbG90X25vLCBnZW5lcmF0aW9uKTsKKworCQlwYV9mcmVlX3dvcmtlcl9pbmZvKHdpbmZvKTsK KworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwl3aW5mby0+aW5fdXNlID0gZmFsc2U7CisJd2luZm8t PnNlcmlhbGl6ZV9jaGFuZ2VzID0gZmFsc2U7CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKKy8qCisg KiBGcmVlIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaW5mb3JtYXRpb24gYW5kIHVubGluayB0 aGUgZmlsZXMgd2l0aAorICogc2VyaWFsaXplZCBjaGFuZ2VzIGlmIGFueS4KKyAqLworc3RhdGlj IHZvaWQKK3BhX2ZyZWVfd29ya2VyX2luZm8oUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZv KQoreworCUFzc2VydCh3aW5mbyk7CisKKwlpZiAod2luZm8tPm1xX2hhbmRsZSkKKwkJc2htX21x X2RldGFjaCh3aW5mby0+bXFfaGFuZGxlKTsKKworCWlmICh3aW5mby0+ZXJyb3JfbXFfaGFuZGxl KQorCQlzaG1fbXFfZGV0YWNoKHdpbmZvLT5lcnJvcl9tcV9oYW5kbGUpOworCisJLyogVW5saW5r IHRoZSBmaWxlcyB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcy4gKi8KKwlpZiAod2luZm8tPnNlcmlh bGl6ZV9jaGFuZ2VzKQorCQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXIt PnN1YmlkLCB3aW5mby0+c2hhcmVkLT54aWQpOworCisJaWYgKHdpbmZvLT5kc21fc2VnKQorCQlk c21fZGV0YWNoKHdpbmZvLT5kc21fc2VnKTsKKworCS8qIFJlbW92ZSBmcm9tIHRoZSB3b3JrZXIg cG9vbC4gKi8KKwlQYXJhbGxlbEFwcGx5V29ya2VyUG9vbCA9IGxpc3RfZGVsZXRlX3B0cihQYXJh bGxlbEFwcGx5V29ya2VyUG9vbCwgd2luZm8pOworCisJcGZyZWUod2luZm8pOworfQorCisvKgor ICogRGV0YWNoIGZyb20gdGhlIGVycm9yX21xX2hhbmRsZSBmb3IgZWFjaCBwYXJhbGxlbCBhcHBs eSB3b3JrZXIuCisgKi8KK3ZvaWQKK3BhX2RldGFjaF9hbGxfZXJyb3JfbXEodm9pZCkKK3sKKwlM aXN0Q2VsbCAgICpsYzsKKworCWZvcmVhY2gobGMsIFBhcmFsbGVsQXBwbHlXb3JrZXJQb29sKQor CXsKKwkJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvID0gKFBhcmFsbGVsQXBwbHlXb3Jr ZXJJbmZvICopIGxmaXJzdChsYyk7CisKKwkJc2htX21xX2RldGFjaCh3aW5mby0+ZXJyb3JfbXFf aGFuZGxlKTsKKwkJd2luZm8tPmVycm9yX21xX2hhbmRsZSA9IE5VTEw7CisJfQorfQorCisvKgor ICogQ2hlY2sgaWYgdGhlcmUgYXJlIGFueSBwZW5kaW5nIHNwb29sZWQgbWVzc2FnZXMuCisgKi8K K3N0YXRpYyBib29sCitwYV9oYXNfc3Bvb2xlZF9tZXNzYWdlX3BlbmRpbmcoKQoreworCVBhcnRp YWxGaWxlU2V0U3RhdGUgZmlsZXNldF9zdGF0ZTsKKworCWZpbGVzZXRfc3RhdGUgPSBwYV9nZXRf ZmlsZXNldF9zdGF0ZSgpOworCisJcmV0dXJuIChmaWxlc2V0X3N0YXRlICE9IEZTX0VNUFRZKTsK K30KKworLyoKKyAqIFJlcGxheSB0aGUgc3Bvb2xlZCBtZXNzYWdlcyBvbmNlIHRoZSBsZWFkZXIg YXBwbHkgd29ya2VyIGhhcyBmaW5pc2hlZAorICogc2VyaWFsaXppbmcgY2hhbmdlcyB0byB0aGUg ZmlsZS4KKyAqLworc3RhdGljIHZvaWQKK3BhX3Nwb29sZWRfbWVzc2FnZXModm9pZCkKK3sKKwlQ YXJ0aWFsRmlsZVNldFN0YXRlIGZpbGVzZXRfc3RhdGU7CisKKwlmaWxlc2V0X3N0YXRlID0gcGFf Z2V0X2ZpbGVzZXRfc3RhdGUoKTsKKworCS8qCisJICogSWYgdGhlIGxlYWRlciBhcHBseSB3b3Jr ZXIgaXMgYnVzeSBzZXJpYWxpemluZyB0aGUgcGFydGlhbCBjaGFuZ2VzIHRoZW4KKwkgKiBhY3F1 aXJlIHRoZSBzdHJlYW0gbG9jayBub3cgYW5kIHdhaXQgZm9yIHRoZSBsZWFkZXIgd29ya2VyIHRv IGZpbmlzaAorCSAqIHNlcmlhbGl6aW5nIHRoZSBjaGFuZ2VzLiBPdGhlcndpc2UsIHRoZSBwYXJh bGxlbCBhcHBseSB3b3JrZXIgd29uJ3QgZ2V0CisJICogYSBjaGFuY2UgdG8gcmVjZWl2ZSBhIFNU UkVBTV9TVE9QIChhbmQgYWNxdWlyZSB0aGUgc3RyZWFtIGxvY2spIHVudGlsCisJICogdGhlIGxl YWRlciBoYWQgc2VyaWFsaXplZCBhbGwgY2hhbmdlcyB3aGljaCBjYW4gbGVhZCB0byB1bmRldGVj dGVkCisJICogZGVhZGxvY2suCisJICoKKwkgKiBOb3RlIHRoYXQgdGhlIGZpbGVzZXQgc3RhdGUg Y2FuIGJlIEZTX1NFUklBTElaRV9ET05FIG9uY2UgdGhlIGxlYWRlcgorCSAqIHdvcmtlciBoYXMg ZmluaXNoZWQgc2VyaWFsaXppbmcgdGhlIGNoYW5nZXMuCisJICovCisJaWYgKGZpbGVzZXRfc3Rh dGUgPT0gRlNfU0VSSUFMSVpFX0lOX1BST0dSRVNTKQorCXsKKwkJcGFfbG9ja19zdHJlYW0oTXlQ YXJhbGxlbFNoYXJlZC0+eGlkLCBBY2Nlc3NTaGFyZUxvY2spOworCQlwYV91bmxvY2tfc3RyZWFt KE15UGFyYWxsZWxTaGFyZWQtPnhpZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCQlmaWxlc2V0X3N0 YXRlID0gcGFfZ2V0X2ZpbGVzZXRfc3RhdGUoKTsKKwl9CisKKwkvKgorCSAqIFdlIGNhbm5vdCBy ZWFkIHRoZSBmaWxlIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBsZWFkZXIgaGFzIHNlcmlhbGl6ZWQg YWxsCisJICogY2hhbmdlcyB0byB0aGUgZmlsZSBiZWNhdXNlIHRoZXJlIG1heSBzdGlsbCBiZSBt ZXNzYWdlcyBpbiB0aGUgbWVtb3J5CisJICogcXVldWUuIFdlIHdpbGwgYXBwbHkgYWxsIHNwb29s ZWQgbWVzc2FnZXMgdGhlIG5leHQgdGltZSB3ZSBjYWxsIHRoaXMKKwkgKiBmdW5jdGlvbiBhbmQg dGhhdCB3aWxsIGVuc3VyZSB0aGVyZSBhcmUgbm8gbWVzc2FnZXMgbGVmdCBpbiB0aGUgbWVtb3J5 CisJICogcXVldWUuCisJICovCisJaWYgKGZpbGVzZXRfc3RhdGUgPT0gRlNfU0VSSUFMSVpFX0RP TkUpCisJeworCQlwYV9zZXRfZmlsZXNldF9zdGF0ZShNeVBhcmFsbGVsU2hhcmVkLCBGU19SRUFE WSk7CisJfQorCWVsc2UgaWYgKGZpbGVzZXRfc3RhdGUgPT0gRlNfUkVBRFkpCisJeworCQlhcHBs eV9zcG9vbGVkX21lc3NhZ2VzKCZNeVBhcmFsbGVsU2hhcmVkLT5maWxlc2V0LAorCQkJCQkJCSAg IE15UGFyYWxsZWxTaGFyZWQtPnhpZCwKKwkJCQkJCQkgICBJbnZhbGlkWExvZ1JlY1B0cik7CisJ CXBhX3NldF9maWxlc2V0X3N0YXRlKE15UGFyYWxsZWxTaGFyZWQsIEZTX0VNUFRZKTsKKwl9Cit9 CisKKy8qCisgKiBJbnRlcnJ1cHQgaGFuZGxlciBmb3IgbWFpbiBsb29wIG9mIHBhcmFsbGVsIGFw cGx5IHdvcmtlci4KKyAqLworc3RhdGljIHZvaWQKK1Byb2Nlc3NQYXJhbGxlbEFwcGx5SW50ZXJy dXB0cyh2b2lkKQoreworCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwlpZiAoU2h1dGRvd25S ZXF1ZXN0UGVuZGluZykKKwl7CisJCWVyZXBvcnQoTE9HLAorCQkJCShlcnJtc2coImxvZ2ljYWwg cmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wi IGhhcyBmaW5pc2hlZCIsCisJCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKKworCQlwcm9j X2V4aXQoMCk7CisJfQorCisJaWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcpCisJeworCQlDb25maWdS ZWxvYWRQZW5kaW5nID0gZmFsc2U7CisJCVByb2Nlc3NDb25maWdGaWxlKFBHQ19TSUdIVVApOwor CX0KK30KKworLyogUGFyYWxsZWwgYXBwbHkgd29ya2VyIG1haW4gbG9vcC4gKi8KK3N0YXRpYyB2 b2lkCitMb2dpY2FsUGFyYWxsZWxBcHBseUxvb3Aoc2htX21xX2hhbmRsZSAqbXFoKQoreworCXNo bV9tcV9yZXN1bHQgc2htcV9yZXM7CisJRXJyb3JDb250ZXh0Q2FsbGJhY2sgZXJyY2FsbGJhY2s7 CisJTWVtb3J5Q29udGV4dCBvbGRjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKKworCS8qCisJ ICogSW5pdCB0aGUgQXBwbHlNZXNzYWdlQ29udGV4dCB3aGljaCB3ZSBjbGVhbiB1cCBhZnRlciBl YWNoIHJlcGxpY2F0aW9uCisJICogcHJvdG9jb2wgbWVzc2FnZS4KKwkgKi8KKwlBcHBseU1lc3Nh Z2VDb250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKEFwcGx5Q29udGV4dCwKKwkJCQkJCQkJ CQkJCSJBcHBseU1lc3NhZ2VDb250ZXh0IiwKKwkJCQkJCQkJCQkJCUFMTE9DU0VUX0RFRkFVTFRf U0laRVMpOworCisJLyoKKwkgKiBQdXNoIGFwcGx5IGVycm9yIGNvbnRleHQgY2FsbGJhY2suIEZp ZWxkcyB3aWxsIGJlIGZpbGxlZCB3aGlsZSBhcHBseWluZworCSAqIGEgY2hhbmdlLgorCSAqLwor CWVycmNhbGxiYWNrLmNhbGxiYWNrID0gYXBwbHlfZXJyb3JfY2FsbGJhY2s7CisJZXJyY2FsbGJh Y2sucHJldmlvdXMgPSBlcnJvcl9jb250ZXh0X3N0YWNrOworCWVycm9yX2NvbnRleHRfc3RhY2sg PSAmZXJyY2FsbGJhY2s7CisKKwlmb3IgKDs7KQorCXsKKwkJdm9pZAkgICAqZGF0YTsKKwkJU2l6 ZQkJbGVuOworCisJCVByb2Nlc3NQYXJhbGxlbEFwcGx5SW50ZXJydXB0cygpOworCisJCS8qIEVu c3VyZSB3ZSBhcmUgcmVhZGluZyB0aGUgZGF0YSBpbnRvIG91ciBtZW1vcnkgY29udGV4dC4gKi8K KwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5TWVzc2FnZUNvbnRleHQpOworCisJCXNobXFf cmVzID0gc2htX21xX3JlY2VpdmUobXFoLCAmbGVuLCAmZGF0YSwgdHJ1ZSk7CisKKwkJaWYgKHNo bXFfcmVzID09IFNITV9NUV9TVUNDRVNTKQorCQl7CisJCQlTdHJpbmdJbmZvRGF0YSBzOworCQkJ aW50CQkJYzsKKworCQkJaWYgKGxlbiA9PSAwKQorCQkJCWVsb2coRVJST1IsICJpbnZhbGlkIG1l c3NhZ2UgbGVuZ3RoIik7CisKKwkJCXMuY3Vyc29yID0gMDsKKwkJCXMubWF4bGVuID0gLTE7CisJ CQlzLmRhdGEgPSAoY2hhciAqKSBkYXRhOworCQkJcy5sZW4gPSBsZW47CisKKwkJCS8qCisJCQkg KiBUaGUgZmlyc3QgYnl0ZSBvZiBtZXNzYWdlcyBzZW50IGZyb20gbGVhZGVyIGFwcGx5IHdvcmtl ciB0bworCQkJICogcGFyYWxsZWwgYXBwbHkgd29ya2VycyBjYW4gb25seSBiZSAndycuCisJCQkg Ki8KKwkJCWMgPSBwcV9nZXRtc2dieXRlKCZzKTsKKwkJCWlmIChjICE9ICd3JykKKwkJCQllbG9n KEVSUk9SLCAidW5leHBlY3RlZCBtZXNzYWdlIFwiJWNcIiIsIGMpOworCisJCQkvKgorCQkJICog SWdub3JlIHN0YXRpc3RpY3MgZmllbGRzIHRoYXQgaGF2ZSBiZWVuIHVwZGF0ZWQgYnkgdGhlIGxl YWRlcgorCQkJICogYXBwbHkgd29ya2VyLgorCQkJICoKKwkJCSAqIFhYWCBXZSBjYW4gYXZvaWQg c2VuZGluZyB0aGUgc3RhdGlzdGljcyBmaWVsZHMgZnJvbSB0aGUgbGVhZGVyCisJCQkgKiBhcHBs eSB3b3JrZXIgYnV0IGZvciB0aGF0LCBpdCBuZWVkcyB0byByZWJ1aWxkIHRoZSBlbnRpcmUKKwkJ CSAqIG1lc3NhZ2UgYnkgcmVtb3ZpbmcgdGhlc2UgZmllbGRzIHdoaWNoIGNvdWxkIGJlIG1vcmUg d29yayB0aGFuCisJCQkgKiBzaW1wbHkgaWdub3JpbmcgdGhlc2UgZmllbGRzIGluIHRoZSBwYXJh bGxlbCBhcHBseSB3b3JrZXIuCisJCQkgKi8KKwkJCXMuY3Vyc29yICs9IFNJWkVfU1RBVFNfTUVT U0FHRTsKKworCQkJYXBwbHlfZGlzcGF0Y2goJnMpOworCQl9CisJCWVsc2UgaWYgKHNobXFfcmVz ID09IFNITV9NUV9XT1VMRF9CTE9DSykKKwkJeworCQkJLyogUmVwbGF5IHRoZSBjaGFuZ2VzIGZy b20gdGhlIGZpbGUsIGlmIGFueS4gKi8KKwkJCWlmIChwYV9oYXNfc3Bvb2xlZF9tZXNzYWdlX3Bl bmRpbmcoKSkKKwkJCXsKKwkJCQlwYV9zcG9vbGVkX21lc3NhZ2VzKCk7CisJCQl9CisJCQllbHNl CisJCQl7CisJCQkJaW50CQkJcmM7CisKKwkJCQkvKiBXYWl0IGZvciBtb3JlIHdvcmsuICovCisJ CQkJcmMgPSBXYWl0TGF0Y2goTXlMYXRjaCwKKwkJCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBXTF9U SU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkgICAxMDAwTCwKKwkJCQkJCQkg ICBXQUlUX0VWRU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQTFlfTUFJTik7CisKKwkJCQlpZiAocmMg JiBXTF9MQVRDSF9TRVQpCisJCQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQl9CisJCX0KKwkJ ZWxzZQorCQl7CisJCQlBc3NlcnQoc2htcV9yZXMgPT0gU0hNX01RX0RFVEFDSEVEKTsKKworCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJF UVVJU0lURV9TVEFURSksCisJCQkJCSBlcnJtc2coImxvc3QgY29ubmVjdGlvbiB0byB0aGUgbG9n aWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIiKSkpOworCQl9CisKKwkJTWVtb3J5Q29udGV4 dFJlc2V0KEFwcGx5TWVzc2FnZUNvbnRleHQpOworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xk Y3h0KTsKKwl9CisKKwkvKiBQb3AgdGhlIGVycm9yIGNvbnRleHQgc3RhY2suICovCisJZXJyb3Jf Y29udGV4dF9zdGFjayA9IGVycmNhbGxiYWNrLnByZXZpb3VzOworCisJTWVtb3J5Q29udGV4dFN3 aXRjaFRvKG9sZGN4dCk7Cit9CisKKy8qCisgKiBNYWtlIHN1cmUgdGhlIGxlYWRlciBhcHBseSB3 b3JrZXIgdHJpZXMgdG8gcmVhZCBmcm9tIG91ciBlcnJvciBxdWV1ZSBvbmUgbW9yZQorICogdGlt ZS4gVGhpcyBndWFyZHMgYWdhaW5zdCB0aGUgY2FzZSB3aGVyZSB3ZSBleGl0IHVuY2xlYW5seSB3 aXRob3V0IHNlbmRpbmcKKyAqIGFuIEVycm9yUmVzcG9uc2UsIGZvciBleGFtcGxlIGJlY2F1c2Ug c29tZSBjb2RlIGNhbGxzIHByb2NfZXhpdCBkaXJlY3RseS4KKyAqLworc3RhdGljIHZvaWQKK3Bh X3NodXRkb3duKGludCBjb2RlLCBEYXR1bSBhcmcpCit7CisJU2VuZFByb2NTaWduYWwoTXlMb2dp Y2FsUmVwV29ya2VyLT5hcHBseV9sZWFkZXJfcGlkLAorCQkJCSAgIFBST0NTSUdfUEFSQUxMRUxf QVBQTFlfTUVTU0FHRSwKKwkJCQkgICBJbnZhbGlkQmFja2VuZElkKTsKKworCWRzbV9kZXRhY2go KGRzbV9zZWdtZW50ICopIERhdHVtR2V0UG9pbnRlcihhcmcpKTsKK30KKworLyoKKyAqIFBhcmFs bGVsIGFwcGx5IHdvcmtlciBlbnRyeSBwb2ludC4KKyAqLwordm9pZAorUGFyYWxsZWxBcHBseVdv cmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCit7CisJUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAq c2hhcmVkOworCWRzbV9oYW5kbGUJaGFuZGxlOworCWRzbV9zZWdtZW50ICpzZWc7CisJc2htX3Rv YyAgICAqdG9jOworCXNobV9tcQkgICAqbXE7CisJc2htX21xX2hhbmRsZSAqbXFoOworCXNobV9t cV9oYW5kbGUgKmVycm9yX21xaDsKKwlSZXBPcmlnaW5JZCBvcmlnaW5pZDsKKwlpbnQJCQl3b3Jr ZXJfc2xvdCA9IERhdHVtR2V0SW50MzIobWFpbl9hcmcpOworCWNoYXIJCW9yaWdpbm5hbWVbTkFN RURBVEFMRU5dOworCisJLyogU2V0dXAgc2lnbmFsIGhhbmRsaW5nLiAqLworCXBxc2lnbmFsKFNJ R0hVUCwgU2lnbmFsSGFuZGxlckZvckNvbmZpZ1JlbG9hZCk7CisJcHFzaWduYWwoU0lHSU5ULCBT aWduYWxIYW5kbGVyRm9yU2h1dGRvd25SZXF1ZXN0KTsKKwlwcXNpZ25hbChTSUdURVJNLCBkaWUp OworCUJhY2tncm91bmRXb3JrZXJVbmJsb2NrU2lnbmFscygpOworCisJLyoKKwkgKiBBdHRhY2gg dG8gdGhlIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdtZW50IGZvciB0aGUgcGFyYWxsZWwgYXBw bHksIGFuZAorCSAqIGZpbmQgaXRzIHRhYmxlIG9mIGNvbnRlbnRzLgorCSAqCisJICogTGlrZSBw YXJhbGxlbCBxdWVyeSwgd2UgZG9uJ3QgbmVlZCByZXNvdXJjZSBvd25lciBieSB0aGlzIHRpbWUu IFNlZQorCSAqIFBhcmFsbGVsV29ya2VyTWFpbi4KKwkgKi8KKwltZW1jcHkoJmhhbmRsZSwgTXlC Z3dvcmtlckVudHJ5LT5iZ3dfZXh0cmEsIHNpemVvZihkc21faGFuZGxlKSk7CisJc2VnID0gZHNt X2F0dGFjaChoYW5kbGUpOworCWlmICghc2VnKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJj b2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJt c2coInVuYWJsZSB0byBtYXAgZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNlZ21lbnQiKSkpOworCisJ dG9jID0gc2htX3RvY19hdHRhY2goUEdfTE9HSUNBTF9BUFBMWV9TSE1fTUFHSUMsIGRzbV9zZWdt ZW50X2FkZHJlc3Moc2VnKSk7CisJaWYgKCF0b2MpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVy cmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVy cm1zZygiYmFkIG1hZ2ljIG51bWJlciBpbiBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudCIp KSk7CisKKwliZWZvcmVfc2htZW1fZXhpdChwYV9zaHV0ZG93biwgUG9pbnRlckdldERhdHVtKHNl ZykpOworCisJLyogTG9vayB1cCB0aGUgc2hhcmVkIGluZm9ybWF0aW9uLiAqLworCXNoYXJlZCA9 IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfQVBQTFlfS0VZX1NIQVJFRCwgZmFsc2UpOwor CU15UGFyYWxsZWxTaGFyZWQgPSBzaGFyZWQ7CisKKwkvKgorCSAqIEF0dGFjaCB0byB0aGUgbWVz c2FnZSBxdWV1ZS4KKwkgKi8KKwltcSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfQVBQ TFlfS0VZX01RLCBmYWxzZSk7CisJc2htX21xX3NldF9yZWNlaXZlcihtcSwgTXlQcm9jKTsKKwlt cWggPSBzaG1fbXFfYXR0YWNoKG1xLCBzZWcsIE5VTEwpOworCisJLyoKKwkgKiBQcmltYXJ5IGlu aXRpYWxpemF0aW9uIGlzIGNvbXBsZXRlLiBOb3csIHdlIGNhbiBhdHRhY2ggdG8gb3VyIHNsb3Qu CisJICogVGhpcyBpcyB0byBlbnN1cmUgdGhhdCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBkb2Vz IG5vdCB3cml0ZSBkYXRhIHRvCisJICogdGhlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHF1ZXVlLgor CSAqLworCWxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaCh3b3JrZXJfc2xvdCk7CisKKwlTcGluTG9j a0FjcXVpcmUoJk15UGFyYWxsZWxTaGFyZWQtPm11dGV4KTsKKwlNeVBhcmFsbGVsU2hhcmVkLT5s b2dpY2FscmVwX3dvcmtlcl9nZW5lcmF0aW9uID0gTXlMb2dpY2FsUmVwV29ya2VyLT5nZW5lcmF0 aW9uOworCU15UGFyYWxsZWxTaGFyZWQtPmxvZ2ljYWxyZXBfd29ya2VyX3Nsb3Rfbm8gPSB3b3Jr ZXJfc2xvdDsKKwlTcGluTG9ja1JlbGVhc2UoJk15UGFyYWxsZWxTaGFyZWQtPm11dGV4KTsKKwor CS8qCisJICogQXR0YWNoIHRvIHRoZSBlcnJvciBxdWV1ZS4KKwkgKi8KKwltcSA9IHNobV90b2Nf bG9va3VwKHRvYywgUEFSQUxMRUxfQVBQTFlfS0VZX0VSUk9SX1FVRVVFLCBmYWxzZSk7CisJc2ht X21xX3NldF9zZW5kZXIobXEsIE15UHJvYyk7CisJZXJyb3JfbXFoID0gc2htX21xX2F0dGFjaCht cSwgc2VnLCBOVUxMKTsKKworCXBxX3JlZGlyZWN0X3RvX3NobV9tcShzZWcsIGVycm9yX21xaCk7 CisJcHFfc2V0X3BhcmFsbGVsX2xlYWRlcihNeUxvZ2ljYWxSZXBXb3JrZXItPmFwcGx5X2xlYWRl cl9waWQsCisJCQkJCQkgICBJbnZhbGlkQmFja2VuZElkKTsKKworCU15TG9naWNhbFJlcFdvcmtl ci0+bGFzdF9zZW5kX3RpbWUgPSBNeUxvZ2ljYWxSZXBXb3JrZXItPmxhc3RfcmVjdl90aW1lID0K KwkJTXlMb2dpY2FsUmVwV29ya2VyLT5yZXBseV90aW1lID0gMDsKKworCUluaXRpYWxpemVBcHBs eVdvcmtlcigpOworCisJLyogU2V0dXAgcmVwbGljYXRpb24gb3JpZ2luIHRyYWNraW5nLiAqLwor CVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJUmVwbGljYXRpb25PcmlnaW5OYW1lRm9yTG9n aWNhbFJlcChNeVN1YnNjcmlwdGlvbi0+b2lkLCBJbnZhbGlkT2lkLAorCQkJCQkJCQkJICAgb3Jp Z2lubmFtZSwgc2l6ZW9mKG9yaWdpbm5hbWUpKTsKKwlvcmlnaW5pZCA9IHJlcGxvcmlnaW5fYnlf bmFtZShvcmlnaW5uYW1lLCBmYWxzZSk7CisKKwkvKgorCSAqIFRoZSBwYXJhbGxlbCBhcHBseSB3 b3JrZXIgZG9lc24ndCBuZWVkIHRvIG1vbm9wb2xpemUgdGhpcyByZXBsaWNhdGlvbgorCSAqIG9y aWdpbiB3aGljaCB3YXMgYWxyZWFkeSBhY3F1aXJlZCBieSBpdHMgbGVhZGVyIHByb2Nlc3MuCisJ ICovCisJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbmlkLCBNeUxvZ2ljYWxSZXBXb3Jr ZXItPmFwcGx5X2xlYWRlcl9waWQpOworCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmln aW5pZDsKKwlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCS8qCisJICogU2V0dXAgY2Fs bGJhY2sgZm9yIHN5c2NhY2hlIHNvIHRoYXQgd2Uga25vdyB3aGVuIHNvbWV0aGluZyBjaGFuZ2Vz IGluCisJICogdGhlIHN1YnNjcmlwdGlvbiByZWxhdGlvbiBzdGF0ZS4KKwkgKi8KKwlDYWNoZVJl Z2lzdGVyU3lzY2FjaGVDYWxsYmFjayhTVUJTQ1JJUFRJT05SRUxNQVAsCisJCQkJCQkJCSAgaW52 YWxpZGF0ZV9zeW5jaW5nX3RhYmxlX3N0YXRlcywKKwkJCQkJCQkJICAoRGF0dW0pIDApOworCisJ c2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfb3JpZ2luKG9yaWdpbm5hbWUpOworCisJTG9naWNhbFBh cmFsbGVsQXBwbHlMb29wKG1xaCk7CisKKwkvKgorCSAqIFRoZSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgbXVzdCBub3QgZ2V0IGhlcmUgYmVjYXVzZSB0aGUgcGFyYWxsZWwgYXBwbHkKKwkgKiB3b3Jr ZXIgd2lsbCBvbmx5IHN0b3Agd2hlbiBpdCByZWNlaXZlcyBhIFNJR1RFUk0gb3IgU0lHSU5UIGZy b20gdGhlCisJICogbGVhZGVyLCBkZXRlY3RzIGEgY2hhbmdlIGluIHN1YnNjcmlwdGlvbiBpbmZv cm1hdGlvbiwgb3Igd2hlbiB0aGVyZQorCSAqIHRoZXJlIGlzIGFuIGVycm9yLiBOb25lIG9mIHRo ZXNlIGNhc2VzIHdpbGwgYWxsb3cgdGhlIGNvZGUgdG8gcmVhY2gKKwkgKiBoZXJlLgorCSAqLwor CUFzc2VydChmYWxzZSk7Cit9CisKKy8qCisgKiBIYW5kbGUgcmVjZWlwdCBvZiBhbiBpbnRlcnJ1 cHQgaW5kaWNhdGluZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBtZXNzYWdlLgorICoKKyAqIE5v dGU6IHRoaXMgaXMgY2FsbGVkIHdpdGhpbiBhIHNpZ25hbCBoYW5kbGVyISBBbGwgd2UgY2FuIGRv IGlzIHNldCBhIGZsYWcKKyAqIHRoYXQgd2lsbCBjYXVzZSB0aGUgbmV4dCBDSEVDS19GT1JfSU5U RVJSVVBUUygpIHRvIGludm9rZQorICogSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VzKCkuCisg Ki8KK3ZvaWQKK0hhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlSW50ZXJydXB0KHZvaWQpCit7CisJ SW50ZXJydXB0UGVuZGluZyA9IHRydWU7CisJUGFyYWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nID0g dHJ1ZTsKKwlTZXRMYXRjaChNeUxhdGNoKTsKK30KKworLyoKKyAqIEhhbmRsZSBhIHNpbmdsZSBw cm90b2NvbCBtZXNzYWdlIHJlY2VpdmVkIGZyb20gYSBzaW5nbGUgcGFyYWxsZWwgYXBwbHkKKyAq IHdvcmtlci4KKyAqLworc3RhdGljIHZvaWQKK0hhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlKFBh cmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgU3RyaW5nSW5mbyBtc2cpCit7CisJY2hhcgkJ bXNndHlwZTsKKworCW1zZ3R5cGUgPSBwcV9nZXRtc2dieXRlKG1zZyk7CisKKwlzd2l0Y2ggKG1z Z3R5cGUpCisJeworCQljYXNlICdFJzoJCQkJLyogRXJyb3JSZXNwb25zZSAqLworCQkJeworCQkJ CUVycm9yRGF0YQllZGF0YTsKKworCQkJCS8qIFBhcnNlIEVycm9yUmVzcG9uc2UuICovCisJCQkJ cHFfcGFyc2VfZXJyb3Jub3RpY2UobXNnLCAmZWRhdGEpOworCisJCQkJLyoKKwkJCQkgKiBJZiBk ZXNpcmVkLCBhZGQgYSBjb250ZXh0IGxpbmUgdG8gc2hvdyB0aGF0IHRoaXMgaXMgYQorCQkJCSAq IG1lc3NhZ2UgcHJvcGFnYXRlZCBmcm9tIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBPdGhlcndp c2UsCisJCQkJICogaXQgY2FuIHNvbWV0aW1lcyBiZSBjb25mdXNpbmcgdG8gdW5kZXJzdGFuZCB3 aGF0IGFjdHVhbGx5CisJCQkJICogaGFwcGVuZWQuCisJCQkJICovCisJCQkJaWYgKGVkYXRhLmNv bnRleHQpCisJCQkJCWVkYXRhLmNvbnRleHQgPSBwc3ByaW50ZigiJXNcbiVzIiwgZWRhdGEuY29u dGV4dCwKKwkJCQkJCQkJCQkJIF8oImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkg d29ya2VyIikpOworCQkJCWVsc2UKKwkJCQkJZWRhdGEuY29udGV4dCA9IHBzdHJkdXAoXygibG9n aWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIiKSk7CisKKwkJCQkvKgorCQkJ CSAqIENvbnRleHQgYmV5b25kIHRoYXQgc2hvdWxkIHVzZSB0aGUgZXJyb3IgY29udGV4dCBjYWxs YmFja3MKKwkJCQkgKiB0aGF0IHdlcmUgaW4gZWZmZWN0IGluIExvZ2ljYWxSZXBBcHBseUxvb3Ao KS4KKwkJCQkgKi8KKwkJCQllcnJvcl9jb250ZXh0X3N0YWNrID0gYXBwbHlfZXJyb3JfY29udGV4 dF9zdGFjazsKKworCQkJCS8qCisJCQkJICogVGhlIGFjdHVhbCBlcnJvciBtdXN0IGhhdmUgYmVl biByZXBvcnRlZCBieSB0aGUgcGFyYWxsZWwKKwkJCQkgKiBhcHBseSB3b3JrZXIuCisJCQkJICov CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9J Tl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkJIGVycm1zZygibG9naWNhbCByZXBsaWNhdGlv biBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZXhpdGVkIGR1ZSB0byBlcnJvciIpLAorCQkJCQkJIGVy cmNvbnRleHQoIiVzIiwgZWRhdGEuY29udGV4dCkpKTsKKwkJCX0KKworCQkJLyoKKwkJCSAqIERv bid0IG5lZWQgdG8gZG8gYW55dGhpbmcgYWJvdXQgTm90aWNlUmVzcG9uc2UgYW5kCisJCQkgKiBO b3RpZnlSZXNwb25zZSBhcyB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgZG9lc24ndCBu ZWVkCisJCQkgKiB0byBzZW5kIG1lc3NhZ2VzIHRvIHRoZSBjbGllbnQuCisJCQkgKi8KKwkJY2Fz ZSAnTic6CisJCWNhc2UgJ0EnOgorCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJS T1IsICJ1bnJlY29nbml6ZWQgbWVzc2FnZSB0eXBlIHJlY2VpdmVkIGZyb20gbG9naWNhbCByZXBs aWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXI6ICVjIChtZXNzYWdlIGxlbmd0aCAlZCBieXRl cykiLAorCQkJCSBtc2d0eXBlLCBtc2ctPmxlbik7CisJfQorfQorCisvKgorICogSGFuZGxlIGFu eSBxdWV1ZWQgcHJvdG9jb2wgbWVzc2FnZXMgcmVjZWl2ZWQgZnJvbSBwYXJhbGxlbCBhcHBseSB3 b3JrZXJzLgorICovCit2b2lkCitIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZXModm9pZCkKK3sK KwlMaXN0Q2VsbCAgICpsYzsKKwlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CisKKwlzdGF0aWMg TWVtb3J5Q29udGV4dCBocGFtX2NvbnRleHQgPSBOVUxMOworCisJLyoKKwkgKiBUaGlzIGlzIGlu dm9rZWQgZnJvbSBQcm9jZXNzSW50ZXJydXB0cygpLCBhbmQgc2luY2Ugc29tZSBvZiB0aGUKKwkg KiBmdW5jdGlvbnMgaXQgY2FsbHMgY29udGFpbiBDSEVDS19GT1JfSU5URVJSVVBUUygpLCB0aGVy ZSBpcyBhIHBvdGVudGlhbAorCSAqIGZvciByZWN1cnNpdmUgY2FsbHMgaWYgbW9yZSBzaWduYWxz IGFyZSByZWNlaXZlZCB3aGlsZSB0aGlzIHJ1bnMuIEl0J3MKKwkgKiB1bmNsZWFyIHRoYXQgcmVj dXJzaXZlIGVudHJ5IHdvdWxkIGJlIHNhZmUsIGFuZCBpdCBkb2Vzbid0IHNlZW0gdXNlZnVsCisJ ICogZXZlbiBpZiBpdCBpcyBzYWZlLCBzbyBsZXQncyBibG9jayBpbnRlcnJ1cHRzIHVudGlsIGRv bmUuCisJICovCisJSE9MRF9JTlRFUlJVUFRTKCk7CisKKwkvKgorCSAqIE1vcmVvdmVyLCBDdXJy ZW50TWVtb3J5Q29udGV4dCBtaWdodCBiZSBwb2ludGluZyBhbG1vc3QgYW55d2hlcmUuIFdlCisJ ICogZG9uJ3Qgd2FudCB0byByaXNrIGxlYWtpbmcgZGF0YSBpbnRvIGxvbmctbGl2ZWQgY29udGV4 dHMsIHNvIGxldCdzIGRvCisJICogb3VyIHdvcmsgaGVyZSBpbiBhIHByaXZhdGUgY29udGV4dCB0 aGF0IHdlIGNhbiByZXNldCBvbiBlYWNoIHVzZS4KKwkgKi8KKwlpZiAoIWhwYW1fY29udGV4dCkJ CQkvKiBmaXJzdCB0aW1lIHRocm91Z2g/ICovCisJCWhwYW1fY29udGV4dCA9IEFsbG9jU2V0Q29u dGV4dENyZWF0ZShUb3BNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkJCQkgIkhhbmRsZVBhcmFsbGVs QXBwbHlNZXNzYWdlcyIsCisJCQkJCQkJCQkJCSBBTExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKKwll bHNlCisJCU1lbW9yeUNvbnRleHRSZXNldChocGFtX2NvbnRleHQpOworCisJb2xkY29udGV4dCA9 IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhocGFtX2NvbnRleHQpOworCisJUGFyYWxsZWxBcHBseU1l c3NhZ2VQZW5kaW5nID0gZmFsc2U7CisKKwlmb3JlYWNoKGxjLCBQYXJhbGxlbEFwcGx5V29ya2Vy UG9vbCkKKwl7CisJCXNobV9tcV9yZXN1bHQgcmVzOworCQlTaXplCQluYnl0ZXM7CisJCXZvaWQJ ICAgKmRhdGE7CisJCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyA9IChQYXJhbGxlbEFw cGx5V29ya2VySW5mbyAqKSBsZmlyc3QobGMpOworCisJCS8qCisJCSAqIFRoZSBsZWFkZXIgd2ls bCBkZXRhY2ggZnJvbSB0aGUgZXJyb3IgcXVldWUgYW5kIHNldCBpdCB0byBOVUxMCisJCSAqIGJl Zm9yZSBwcmVwYXJpbmcgdG8gc3RvcCBhbGwgcGFyYWxsZWwgYXBwbHkgd29ya2Vycywgc28gd2Ug ZG9uJ3QKKwkJICogbmVlZCB0byBoYW5kbGUgZXJyb3IgbWVzc2FnZXMgYW55bW9yZS4gU2VlCisJ CSAqIGxvZ2ljYWxyZXBfd29ya2VyX2RldGFjaC4KKwkJICovCisJCWlmICghd2luZm8tPmVycm9y X21xX2hhbmRsZSkKKwkJCWNvbnRpbnVlOworCisJCXJlcyA9IHNobV9tcV9yZWNlaXZlKHdpbmZv LT5lcnJvcl9tcV9oYW5kbGUsICZuYnl0ZXMsICZkYXRhLCB0cnVlKTsKKworCQlpZiAocmVzID09 IFNITV9NUV9XT1VMRF9CTE9DSykKKwkJCWNvbnRpbnVlOworCQllbHNlIGlmIChyZXMgPT0gU0hN X01RX1NVQ0NFU1MpCisJCXsKKwkJCVN0cmluZ0luZm9EYXRhIG1zZzsKKworCQkJaW5pdFN0cmlu Z0luZm8oJm1zZyk7CisJCQlhcHBlbmRCaW5hcnlTdHJpbmdJbmZvKCZtc2csIGRhdGEsIG5ieXRl cyk7CisJCQlIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZSh3aW5mbywgJm1zZyk7CisJCQlwZnJl ZShtc2cuZGF0YSk7CisJCX0KKwkJZWxzZQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNv ZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCSBlcnJt c2coImxvc3QgY29ubmVjdGlvbiB0byB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBh cHBseSB3b3JrZXIiKSkpOworCX0KKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0 KTsKKworCS8qIE1pZ2h0IGFzIHdlbGwgY2xlYXIgdGhlIGNvbnRleHQgb24gb3VyIHdheSBvdXQg Ki8KKwlNZW1vcnlDb250ZXh0UmVzZXQoaHBhbV9jb250ZXh0KTsKKworCVJFU1VNRV9JTlRFUlJV UFRTKCk7Cit9CisKKy8qCisgKiBTZW5kIHRoZSBkYXRhIHRvIHRoZSBzcGVjaWZpZWQgcGFyYWxs ZWwgYXBwbHkgd29ya2VyIHZpYSBzaGFyZWQtbWVtb3J5CisgKiBxdWV1ZS4KKyAqCisgKiBSZXR1 cm4gZmFsc2UgaWYgdGhlIGF0dGVtcHQgdG8gc2VuZCBkYXRhIHZpYSBzaGFyZWQgbWVtb3J5IHRp bWVzIG91dCwgdHJ1ZQorICogb3RoZXJ3aXNlLgorICovCitib29sCitwYV9zZW5kX2RhdGEoUGFy YWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBTaXplIG5ieXRlcywgY29uc3Qgdm9pZCAqZGF0 YSkKK3sKKwlpbnQJCQlyYzsKKwlzaG1fbXFfcmVzdWx0IHJlc3VsdDsKKwlUaW1lc3RhbXBUeiBz dGFydFRpbWUgPSAwOworCisJQXNzZXJ0KCFJc1RyYW5zYWN0aW9uU3RhdGUoKSk7CisJQXNzZXJ0 KCF3aW5mby0+c2VyaWFsaXplX2NoYW5nZXMpOworCisjZGVmaW5lIFNITV9TRU5EX1JFVFJZX0lO VEVSVkFMX01TIDEwMDAKKyNkZWZpbmUgU0hNX1NFTkRfVElNRU9VVF9NUwkJKDEwMDAwIC0gU0hN X1NFTkRfUkVUUllfSU5URVJWQUxfTVMpCisKKwlmb3IgKDs7KQorCXsKKwkJcmVzdWx0ID0gc2ht X21xX3NlbmQod2luZm8tPm1xX2hhbmRsZSwgbmJ5dGVzLCBkYXRhLCB0cnVlLCB0cnVlKTsKKwor CQlpZiAocmVzdWx0ID09IFNITV9NUV9TVUNDRVNTKQorCQkJcmV0dXJuIHRydWU7CisJCWVsc2Ug aWYgKHJlc3VsdCA9PSBTSE1fTVFfREVUQUNIRUQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQko ZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJ IGVycm1zZygiY291bGQgbm90IHNlbmQgZGF0YSB0byBzaGFyZWQtbWVtb3J5IHF1ZXVlIikpKTsK KworCQlBc3NlcnQocmVzdWx0ID09IFNITV9NUV9XT1VMRF9CTE9DSyk7CisKKwkJLyogV2FpdCBi ZWZvcmUgcmV0cnlpbmcuICovCisJCXJjID0gV2FpdExhdGNoKE15TGF0Y2gsCisJCQkJCSAgIFdM X0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkgICBT SE1fU0VORF9SRVRSWV9JTlRFUlZBTF9NUywKKwkJCQkJICAgV0FJVF9FVkVOVF9MT0dJQ0FMX1BB UkFMTEVMX0FQUExZX1NUQVRFX0NIQU5HRSk7CisKKwkJaWYgKHJjICYgV0xfTEFUQ0hfU0VUKQor CQl7CisJCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsK KwkJfQorCisJCWlmIChzdGFydFRpbWUgPT0gMCkKKwkJCXN0YXJ0VGltZSA9IEdldEN1cnJlbnRU aW1lc3RhbXAoKTsKKwkJZWxzZSBpZiAoVGltZXN0YW1wRGlmZmVyZW5jZUV4Y2VlZHMoc3RhcnRU aW1lLCBHZXRDdXJyZW50VGltZXN0YW1wKCksCisJCQkJCQkJCQkJCVNITV9TRU5EX1RJTUVPVVRf TVMpKQorCQkJcmV0dXJuIGZhbHNlOworCX0KK30KKworLyoKKyAqIFN3aXRjaCB0byBQQVJUSUFM X1NFUklBTElaRSBtb2RlIGZvciB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiAtLSB0aGlzIG1lYW5z CisgKiB0aGF0IHRoZSBjdXJyZW50IGRhdGEgYW5kIGFueSBzdWJzZXF1ZW50IGRhdGEgZm9yIHRo aXMgdHJhbnNhY3Rpb24gd2lsbCBiZQorICogc2VyaWFsaXplZCB0byBhIGZpbGUuIFRoaXMgaXMg ZG9uZSB0byBwcmV2ZW50IHBvc3NpYmxlIGRlYWRsb2NrcyB3aXRoCisgKiBhbm90aGVyIHBhcmFs bGVsIGFwcGx5IHdvcmtlciAocmVmZXIgdG8gdGhlIGNvbW1lbnRzIGF0b3AgdGhpcyBmaWxlKS4K KyAqLwordm9pZAorcGFfc3dpdGNoX3RvX3BhcnRpYWxfc2VyaWFsaXplKFBhcmFsbGVsQXBwbHlX b3JrZXJJbmZvICp3aW5mbywKKwkJCQkJCQkgICBib29sIHN0cmVhbV9sb2NrZWQpCit7CisJLyoK KwkgKiBUaGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGNvdWxkIGJlIHN0dWNrIGZvciBzb21lIHJl YXNvbiAoc2F5IHdhaXRpbmcKKwkgKiBvbiBzb21lIGxvY2sgYnkgb3RoZXIgYmFja2VuZCksIHNv IHN0b3AgdHJ5aW5nIHRvIHNlbmQgZGF0YSBkaXJlY3RseSB0bworCSAqIGl0IGFuZCBzdGFydCBz ZXJpYWxpemluZyBkYXRhIHRvIHRoZSBmaWxlIGluc3RlYWQuCisJICovCisJd2luZm8tPnNlcmlh bGl6ZV9jaGFuZ2VzID0gdHJ1ZTsKKworCS8qIEluaXRpYWxpemUgdGhlIHN0cmVhbSBmaWxlc2V0 LiAqLworCXN0cmVhbV9zdGFydF9pbnRlcm5hbCh3aW5mby0+c2hhcmVkLT54aWQsIHRydWUpOwor CisJLyoKKwkgKiBBY3F1aXJlcyB0aGUgc3RyZWFtIGxvY2sgaWYgbm90IGFscmVhZHkgdG8gbWFr ZSBzdXJlIHRoYXQgdGhlIHBhcmFsbGVsCisJICogYXBwbHkgd29ya2VyIHdpbGwgd2FpdCBmb3Ig dGhlIGxlYWRlciB0byByZWxlYXNlIHRoZSBzdHJlYW0gbG9jayB1bnRpbAorCSAqIHRoZSBlbmQg b2YgdGhlIHRyYW5zYWN0aW9uLgorCSAqLworCWlmICghc3RyZWFtX2xvY2tlZCkKKwkJcGFfbG9j a19zdHJlYW0od2luZm8tPnNoYXJlZC0+eGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKworCXBh X3NldF9maWxlc2V0X3N0YXRlKHdpbmZvLT5zaGFyZWQsIEZTX1NFUklBTElaRV9JTl9QUk9HUkVT Uyk7Cit9CisKKy8qCisgKiBXYWl0IHVudGlsIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIncyB0 cmFuc2FjdGlvbiBzdGF0ZSBoYXMgcmVhY2hlZCBvcgorICogZXhjZWVkZWQgdGhlIGdpdmVuIHhh Y3Rfc3RhdGUuCisgKi8KK3N0YXRpYyB2b2lkCitwYV93YWl0X2Zvcl94YWN0X3N0YXRlKFBhcmFs bGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywKKwkJCQkJICAgUGFyYWxsZWxUcmFuc1N0YXRlIHhh Y3Rfc3RhdGUpCit7CisJZm9yICg7OykKKwl7CisJCS8qCisJCSAqIFN0b3AgaWYgdGhlIHRyYW5z YWN0aW9uIHN0YXRlIGhhcyByZWFjaGVkIG9yIGV4Y2VlZGVkIHRoZSBnaXZlbgorCQkgKiB4YWN0 X3N0YXRlLgorCQkgKi8KKwkJaWYgKHBhX2dldF94YWN0X3N0YXRlKHdpbmZvLT5zaGFyZWQpID49 IHhhY3Rfc3RhdGUpCisJCQlicmVhazsKKworCQkvKiBXYWl0IHRvIGJlIHNpZ25hbGxlZC4gKi8K KwkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNoLAorCQkJCQkJIFdMX0xBVENIX1NFVCB8IFdMX1RJ TUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJIDEwTCwKKwkJCQkJCSBXQUlUX0VW RU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQTFlfU1RBVEVfQ0hBTkdFKTsKKworCQkvKiBSZXNldCB0 aGUgbGF0Y2ggc28gd2UgZG9uJ3Qgc3Bpbi4gKi8KKwkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwor CQkvKiBBbiBpbnRlcnJ1cHQgbWF5IGhhdmUgb2NjdXJyZWQgd2hpbGUgd2Ugd2VyZSB3YWl0aW5n LiAqLworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCX0KK30KKworLyoKKyAqIFdhaXQgdW50 aWwgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcidzIHRyYW5zYWN0aW9uIGZpbmlzaGVzLgorICov CitzdGF0aWMgdm9pZAorcGFfd2FpdF9mb3JfeGFjdF9maW5pc2goUGFyYWxsZWxBcHBseVdvcmtl ckluZm8gKndpbmZvKQoreworCS8qCisJICogV2FpdCB1bnRpbCB0aGUgcGFyYWxsZWwgYXBwbHkg d29ya2VyIHNldCB0aGUgc3RhdGUgdG8KKwkgKiBQQVJBTExFTF9UUkFOU19TVEFSVEVEIHdoaWNo IG1lYW5zIGl0IGhhcyBhY3F1aXJlZCB0aGUgdHJhbnNhY3Rpb24KKwkgKiBsb2NrLiBUaGlzIGlz IHRvIHByZXZlbnQgbGVhZGVyIGFwcGx5IHdvcmtlciBmcm9tIGFjcXVpcmluZyB0aGUKKwkgKiB0 cmFuc2FjdGlvbiBsb2NrIGVhcmxpZXIgdGhhbiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgor CSAqLworCXBhX3dhaXRfZm9yX3hhY3Rfc3RhdGUod2luZm8sIFBBUkFMTEVMX1RSQU5TX1NUQVJU RUQpOworCisJLyoKKwkgKiBXYWl0IGZvciB0aGUgdHJhbnNhY3Rpb24gbG9jayB0byBiZSByZWxl YXNlZC4gVGhpcyBpcyByZXF1aXJlZCB0bworCSAqIGRldGVjdCBkZWFkbG9jayBhbW9uZyBsZWFk ZXIgYW5kIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuIFJlZmVyIHRvIHRoZQorCSAqIGNvbW1lbnRz IGF0b3AgdGhpcyBmaWxlLgorCSAqLworCXBhX2xvY2tfdHJhbnNhY3Rpb24od2luZm8tPnNoYXJl ZC0+eGlkLCBBY2Nlc3NTaGFyZUxvY2spOworCXBhX3VubG9ja190cmFuc2FjdGlvbih3aW5mby0+ c2hhcmVkLT54aWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkvKgorCSAqIENoZWNrIGlmIHRoZSBz dGF0ZSBiZWNvbWVzIFBBUkFMTEVMX1RSQU5TX0ZJTklTSEVEIGluIGNhc2UgdGhlIHBhcmFsbGVs CisJICogYXBwbHkgd29ya2VyIGZhaWxlZCB3aGlsZSBhcHBseWluZyBjaGFuZ2VzIGNhdXNpbmcg dGhlIGxvY2sgdG8gYmUKKwkgKiByZWxlYXNlZC4KKwkgKi8KKwlpZiAocGFfZ2V0X3hhY3Rfc3Rh dGUod2luZm8tPnNoYXJlZCkgIT0gUEFSQUxMRUxfVFJBTlNfRklOSVNIRUQpCisJCWVyZXBvcnQo RVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9T VEFURSksCisJCQkJIGVycm1zZygibG9zdCBjb25uZWN0aW9uIHRvIHRoZSBsb2dpY2FsIHJlcGxp Y2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciIpKSk7Cit9CisKKy8qCisgKiBTZXQgdGhlIHRy YW5zYWN0aW9uIHN0YXRlIGZvciBhIGdpdmVuIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAqLwor dm9pZAorcGFfc2V0X3hhY3Rfc3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqd3NoYXJl ZCwKKwkJCQkgIFBhcmFsbGVsVHJhbnNTdGF0ZSB4YWN0X3N0YXRlKQoreworCVNwaW5Mb2NrQWNx dWlyZSgmd3NoYXJlZC0+bXV0ZXgpOworCXdzaGFyZWQtPnhhY3Rfc3RhdGUgPSB4YWN0X3N0YXRl OworCVNwaW5Mb2NrUmVsZWFzZSgmd3NoYXJlZC0+bXV0ZXgpOworfQorCisvKgorICogR2V0IHRo ZSB0cmFuc2FjdGlvbiBzdGF0ZSBmb3IgYSBnaXZlbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisg Ki8KK3N0YXRpYyBQYXJhbGxlbFRyYW5zU3RhdGUKK3BhX2dldF94YWN0X3N0YXRlKFBhcmFsbGVs QXBwbHlXb3JrZXJTaGFyZWQgKndzaGFyZWQpCit7CisJUGFyYWxsZWxUcmFuc1N0YXRlIHhhY3Rf c3RhdGU7CisKKwlTcGluTG9ja0FjcXVpcmUoJndzaGFyZWQtPm11dGV4KTsKKwl4YWN0X3N0YXRl ID0gd3NoYXJlZC0+eGFjdF9zdGF0ZTsKKwlTcGluTG9ja1JlbGVhc2UoJndzaGFyZWQtPm11dGV4 KTsKKworCXJldHVybiB4YWN0X3N0YXRlOworfQorCisvKgorICogQ2FjaGUgdGhlIHBhcmFsbGVs IGFwcGx5IHdvcmtlciBpbmZvcm1hdGlvbi4KKyAqLwordm9pZAorcGFfc2V0X3N0cmVhbV9hcHBs eV93b3JrZXIoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKQoreworCXN0cmVhbV9hcHBs eV93b3JrZXIgPSB3aW5mbzsKK30KKworLyoKKyAqIEZvcm0gYSB1bmlxdWUgc2F2ZXBvaW50IG5h bWUgZm9yIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uCisgKgorICogTm90ZSB0aGF0IGRpZmZl cmVudCBzdWJzY3JpcHRpb25zIGZvciBwdWJsaWNhdGlvbnMgb24gZGlmZmVyZW50IG5vZGVzIGNh bgorICogcmVjZWl2ZSBzYW1lIHJlbW90ZSB4aWQsIHNvIHdlIG5lZWQgdG8gdXNlIHN1YnNjcmlw dGlvbiBpZCBhbG9uZyB3aXRoIGl0LgorICoKKyAqIFJldHVybiB0aGUgbmFtZSBpbiB0aGUgc3Vw cGxpZWQgYnVmZmVyLgorICovCitzdGF0aWMgdm9pZAorcGFfc2F2ZXBvaW50X25hbWUoT2lkIHN1 Ym9pZCwgVHJhbnNhY3Rpb25JZCB4aWQsIGNoYXIgKnNwbmFtZSwgU2l6ZSBzenNwKQoreworCXNu cHJpbnRmKHNwbmFtZSwgc3pzcCwgInBnX3NwXyV1XyV1Iiwgc3Vib2lkLCB4aWQpOworfQorCisv KgorICogRGVmaW5lIGEgc2F2ZXBvaW50IGZvciBhIHN1YnhhY3QgaW4gcGFyYWxsZWwgYXBwbHkg d29ya2VyIGlmIG5lZWRlZC4KKyAqCisgKiBUaGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGNhbiBm aWd1cmUgb3V0IGlmIGEgbmV3IHN1YnRyYW5zYWN0aW9uIHdhcworICogc3RhcnRlZCBieSBjaGVj a2luZyBpZiB0aGUgbmV3IGNoYW5nZSBhcnJpdmVkIHdpdGggYSBkaWZmZXJlbnQgeGlkLiBJbiB0 aGF0CisgKiBjYXNlIGRlZmluZSBhIG5hbWVkIHNhdmVwb2ludCwgc28gdGhhdCB3ZSBhcmUgYWJs ZSB0byByb2xsYmFjayB0byBpdAorICogaWYgcmVxdWlyZWQuCisgKi8KK3ZvaWQKK3BhX3N0YXJ0 X3N1YnRyYW5zKFRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQsIFRyYW5zYWN0aW9uSWQgdG9wX3hp ZCkKK3sKKwlpZiAoY3VycmVudF94aWQgIT0gdG9wX3hpZCAmJgorCQkhbGlzdF9tZW1iZXJfeGlk KHN1YnhhY3RsaXN0LCBjdXJyZW50X3hpZCkpCisJeworCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsK KwkJY2hhcgkJc3BuYW1lW05BTUVEQVRBTEVOXTsKKworCQlwYV9zYXZlcG9pbnRfbmFtZShNeVN1 YnNjcmlwdGlvbi0+b2lkLCBjdXJyZW50X3hpZCwKKwkJCQkJCSAgc3BuYW1lLCBzaXplb2Yoc3Bu YW1lKSk7CisKKwkJZWxvZyhERUJVRzEsICJkZWZpbmluZyBzYXZlcG9pbnQgJXMgaW4gbG9naWNh bCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIiLCBzcG5hbWUpOworCisJCS8qIFdl IG11c3QgYmUgaW4gdHJhbnNhY3Rpb24gYmxvY2sgdG8gZGVmaW5lIHRoZSBTQVZFUE9JTlQuICov CisJCWlmICghSXNUcmFuc2FjdGlvbkJsb2NrKCkpCisJCXsKKwkJCWlmICghSXNUcmFuc2FjdGlv blN0YXRlKCkpCisJCQkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQkJQmVnaW5UcmFu c2FjdGlvbkJsb2NrKCk7CisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJfQorCisJ CURlZmluZVNhdmVwb2ludChzcG5hbWUpOworCisJCS8qCisJCSAqIENvbW1pdFRyYW5zYWN0aW9u Q29tbWFuZCBpcyBuZWVkZWQgdG8gc3RhcnQgYSBzdWJ0cmFuc2FjdGlvbiBhZnRlcgorCQkgKiBp c3N1aW5nIGEgU0FWRVBPSU5UIGluc2lkZSBhIHRyYW5zYWN0aW9uIGJsb2NrIChzZWUKKwkJICog U3RhcnRTdWJUcmFuc2FjdGlvbigpKS4KKwkJICovCisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFu ZCgpOworCisJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhUb3BUcmFuc2FjdGlvbkNv bnRleHQpOworCQlzdWJ4YWN0bGlzdCA9IGxhcHBlbmRfeGlkKHN1YnhhY3RsaXN0LCBjdXJyZW50 X3hpZCk7CisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCX0KK30KKworLyogUmVz ZXQgdGhlIGxpc3QgdGhhdCBtYWludGFpbnMgc3VidHJhbnNhY3Rpb25zLiAqLwordm9pZAorcGFf cmVzZXRfc3VidHJhbnModm9pZCkKK3sKKwkvKgorCSAqIFdlIGRvbid0IG5lZWQgdG8gZnJlZSB0 aGlzIGV4cGxpY2l0bHkgYXMgdGhlIGFsbG9jYXRlZCBtZW1vcnkgd2lsbCBiZQorCSAqIGZyZWVk IGF0IHRoZSB0cmFuc2FjdGlvbiBlbmQuCisJICovCisJc3VieGFjdGxpc3QgPSBOSUw7Cit9CisK Ky8qCisgKiBIYW5kbGUgU1RSRUFNIEFCT1JUIG1lc3NhZ2Ugd2hlbiB0aGUgdHJhbnNhY3Rpb24g d2FzIGFwcGxpZWQgaW4gYSBwYXJhbGxlbAorICogYXBwbHkgd29ya2VyLgorICovCit2b2lkCitw YV9zdHJlYW1fYWJvcnQoTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YSAqYWJvcnRfZGF0YSkKK3sK KwlUcmFuc2FjdGlvbklkIHhpZCA9IGFib3J0X2RhdGEtPnhpZDsKKwlUcmFuc2FjdGlvbklkIHN1 YnhpZCA9IGFib3J0X2RhdGEtPnN1YnhpZDsKKworCS8qCisJICogVXBkYXRlIG9yaWdpbiBzdGF0 ZSBzbyB3ZSBjYW4gcmVzdGFydCBzdHJlYW1pbmcgZnJvbSBjb3JyZWN0IHBvc2l0aW9uCisJICog aW4gY2FzZSBvZiBjcmFzaC4KKwkgKi8KKwlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX2xzbiA9 IGFib3J0X2RhdGEtPmFib3J0X2xzbjsKKwlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX3RpbWVz dGFtcCA9IGFib3J0X2RhdGEtPmFib3J0X3RpbWU7CisKKwkvKgorCSAqIElmIHRoZSB0d28gWElE cyBhcmUgdGhlIHNhbWUsIGl0J3MgaW4gZmFjdCBhYm9ydCBvZiB0b3BsZXZlbCB4YWN0LCBzbwor CSAqIGp1c3QgZnJlZSB0aGUgc3VieGFjdGxpc3QuCisJICovCisJaWYgKHN1YnhpZCA9PSB4aWQp CisJeworCQkvKgorCQkgKiBSZWxlYXNlIHRoZSBsb2NrIGFzIHdlIG1pZ2h0IGJlIHByb2Nlc3Np bmcgYW4gZW1wdHkgc3RyZWFtaW5nCisJCSAqIHRyYW5zYWN0aW9uIGluIHdoaWNoIGNhc2UgdGhl IGxvY2sgd29uJ3QgYmUgcmVsZWFzZWQgZHVyaW5nCisJCSAqIHRyYW5zYWN0aW9uIHJvbGxiYWNr LgorCQkgKi8KKwkJcGFfdW5sb2NrX3RyYW5zYWN0aW9uKHhpZCwgQWNjZXNzRXhjbHVzaXZlTG9j ayk7CisKKwkJQWJvcnRDdXJyZW50VHJhbnNhY3Rpb24oKTsKKworCQlpZiAoSXNUcmFuc2FjdGlv bkJsb2NrKCkpCisJCXsKKwkJCUVuZFRyYW5zYWN0aW9uQmxvY2soZmFsc2UpOworCQkJQ29tbWl0 VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCX0KKworCQlwYV9yZXNldF9zdWJ0cmFucygpOworCisJ CXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRSwgTlVMTCk7CisKKwkJcGFfc2V0X3hh Y3Rfc3RhdGUoTXlQYXJhbGxlbFNoYXJlZCwgUEFSQUxMRUxfVFJBTlNfRklOSVNIRUQpOworCX0K KwllbHNlCisJeworCQkvKiBPSywgc28gaXQncyBhIHN1YnhhY3QuIFJvbGxiYWNrIHRvIHRoZSBz YXZlcG9pbnQuICovCisJCWludAkJCWk7CisJCWNoYXIJCXNwbmFtZVtOQU1FREFUQUxFTl07CisK KwkJcGFfc2F2ZXBvaW50X25hbWUoTXlTdWJzY3JpcHRpb24tPm9pZCwgc3VieGlkLCBzcG5hbWUs IHNpemVvZihzcG5hbWUpKTsKKworCQllbG9nKERFQlVHMSwgInJvbGxpbmcgYmFjayB0byBzYXZl cG9pbnQgJXMgaW4gbG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIiLCBz cG5hbWUpOworCisJCS8qCisJCSAqIFNlYXJjaCB0aGUgc3VieGFjdGxpc3QsIGRldGVybWluZSB0 aGUgb2Zmc2V0IHRyYWNrZWQgZm9yIHRoZQorCQkgKiBzdWJ4YWN0LCBhbmQgdHJ1bmNhdGUgdGhl IGxpc3QuCisJCSAqCisJCSAqIE5vdGUgdGhhdCBmb3IgYW4gZW1wdHkgc3ViLXRyYW5zYWN0aW9u IHdlIHdvbid0IGZpbmQgdGhlIHN1YnhpZAorCQkgKiBoZXJlLgorCQkgKi8KKwkJZm9yIChpID0g bGlzdF9sZW5ndGgoc3VieGFjdGxpc3QpIC0gMTsgaSA+PSAwOyBpLS0pCisJCXsKKwkJCVRyYW5z YWN0aW9uSWQgeGlkX3RtcCA9IGxmaXJzdF94aWQobGlzdF9udGhfY2VsbChzdWJ4YWN0bGlzdCwg aSkpOworCisJCQlpZiAoeGlkX3RtcCA9PSBzdWJ4aWQpCisJCQl7CisJCQkJUm9sbGJhY2tUb1Nh dmVwb2ludChzcG5hbWUpOworCQkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQkJCXN1 YnhhY3RsaXN0ID0gbGlzdF90cnVuY2F0ZShzdWJ4YWN0bGlzdCwgaSk7CisJCQkJYnJlYWs7CisJ CQl9CisJCX0KKwl9Cit9CisKKy8qCisgKiBTZXQgdGhlIGZpbGVzZXQgc3RhdGUgZm9yIGEgcGFy dGljdWxhciBwYXJhbGxlbCBhcHBseSB3b3JrZXIuIFRoZSBmaWxlc2V0CisgKiB3aWxsIGJlIHNl dCBvbmNlIHRoZSBsZWFkZXIgd29ya2VyIHNlcmlhbGl6ZWQgYWxsIGNoYW5nZXMgdG8gdGhlIGZp bGUKKyAqIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgor ICovCit2b2lkCitwYV9zZXRfZmlsZXNldF9zdGF0ZShQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVk ICp3c2hhcmVkLAorCQkJCQkgUGFydGlhbEZpbGVTZXRTdGF0ZSBmaWxlc2V0X3N0YXRlKQorewor CVNwaW5Mb2NrQWNxdWlyZSgmd3NoYXJlZC0+bXV0ZXgpOworCXdzaGFyZWQtPmZpbGVzZXRfc3Rh dGUgPSBmaWxlc2V0X3N0YXRlOworCisJaWYgKGZpbGVzZXRfc3RhdGUgPT0gRlNfU0VSSUFMSVpF X0RPTkUpCisJeworCQlBc3NlcnQoYW1fbGVhZGVyX2FwcGx5X3dvcmtlcigpKTsKKwkJQXNzZXJ0 KE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQpOworCQl3c2hhcmVkLT5maWxlc2V0 ID0gKk15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQ7CisJfQorCisJU3BpbkxvY2tS ZWxlYXNlKCZ3c2hhcmVkLT5tdXRleCk7Cit9CisKKy8qCisgKiBHZXQgdGhlIGZpbGVzZXQgc3Rh dGUgZm9yIHRoZSBjdXJyZW50IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAqLworc3RhdGljIFBh cnRpYWxGaWxlU2V0U3RhdGUKK3BhX2dldF9maWxlc2V0X3N0YXRlKHZvaWQpCit7CisJUGFydGlh bEZpbGVTZXRTdGF0ZSBmaWxlc2V0X3N0YXRlOworCisJQXNzZXJ0KGFtX3BhcmFsbGVsX2FwcGx5 X3dvcmtlcigpKTsKKworCVNwaW5Mb2NrQWNxdWlyZSgmTXlQYXJhbGxlbFNoYXJlZC0+bXV0ZXgp OworCWZpbGVzZXRfc3RhdGUgPSBNeVBhcmFsbGVsU2hhcmVkLT5maWxlc2V0X3N0YXRlOworCVNw aW5Mb2NrUmVsZWFzZSgmTXlQYXJhbGxlbFNoYXJlZC0+bXV0ZXgpOworCisJcmV0dXJuIGZpbGVz ZXRfc3RhdGU7Cit9CisKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb25zIHRvIGFjcXVpcmUgYW5kIHJl bGVhc2UgYSBsb2NrIGZvciBlYWNoIHN0cmVhbSBibG9jay4KKyAqCisgKiBTZXQgbG9ja3RhZ19m aWVsZDQgdG8gUEFSQUxMRUxfQVBQTFlfTE9DS19TVFJFQU0gdG8gaW5kaWNhdGUgdGhhdCBpdCdz IGEKKyAqIHN0cmVhbSBsb2NrLgorICoKKyAqIFJlZmVyIHRvIHRoZSBjb21tZW50cyBhdG9wIHRo aXMgZmlsZSB0byBzZWUgaG93IHRoZSBzdHJlYW0gbG9jayBpcyB1c2VkLgorICovCit2b2lkCitw YV9sb2NrX3N0cmVhbShUcmFuc2FjdGlvbklkIHhpZCwgTE9DS01PREUgbG9ja21vZGUpCit7CisJ TG9ja0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNzaW9uKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQs IHhpZCwKKwkJCQkJCQkJICAgUEFSQUxMRUxfQVBQTFlfTE9DS19TVFJFQU0sIGxvY2ttb2RlKTsK K30KKwordm9pZAorcGFfdW5sb2NrX3N0cmVhbShUcmFuc2FjdGlvbklkIHhpZCwgTE9DS01PREUg bG9ja21vZGUpCit7CisJVW5sb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNlc3Npb24oTXlMb2dpY2Fs UmVwV29ya2VyLT5zdWJpZCwgeGlkLAorCQkJCQkJCQkJIFBBUkFMTEVMX0FQUExZX0xPQ0tfU1RS RUFNLCBsb2NrbW9kZSk7Cit9CisKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb25zIHRvIGFjcXVpcmUg YW5kIHJlbGVhc2UgYSBsb2NrIGZvciBlYWNoIGxvY2FsIHRyYW5zYWN0aW9uCisgKiBhcHBseS4K KyAqCisgKiBTZXQgbG9ja3RhZ19maWVsZDQgdG8gUEFSQUxMRUxfQVBQTFlfTE9DS19YQUNUIHRv IGluZGljYXRlIHRoYXQgaXQncyBhCisgKiB0cmFuc2FjdGlvbiBsb2NrLgorICoKKyAqIE5vdGUg dGhhdCBhbGwgdGhlIGNhbGxlcnMgbXVzdCBwYXNzIGEgcmVtb3RlIHRyYW5zYWN0aW9uIElEIGlu c3RlYWQgb2YgYQorICogbG9jYWwgdHJhbnNhY3Rpb24gSUQgYXMgeGlkLiBUaGlzIGlzIGJlY2F1 c2UgdGhlIGxvY2FsIHRyYW5zYWN0aW9uIElEIHdpbGwKKyAqIG9ubHkgYmUgYXNzaWduZWQgd2hp bGUgYXBwbHlpbmcgdGhlIGZpcnN0IGNoYW5nZSBpbiB0aGUgcGFyYWxsZWwgYXBwbHkgYnV0Cisg KiBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGZpcnN0IGNoYW5nZSBpbiB0aGUgcGFyYWxsZWwgYXBw bHkgd29ya2VyIGlzIGJsb2NrZWQKKyAqIGJ5IGEgY29uY3VycmVudGx5IGV4ZWN1dGluZyB0cmFu c2FjdGlvbiBpbiBhbm90aGVyIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gV2UKKyAqIGNhbiBvbmx5 IGNvbW11bmljYXRlIHRoZSBsb2NhbCB0cmFuc2FjdGlvbiBpZCB0byB0aGUgbGVhZGVyIGFmdGVy IGFwcGx5aW5nCisgKiB0aGUgZmlyc3QgY2hhbmdlIHNvIGl0IHdvbid0IGJlIGFibGUgdG8gd2Fp dCBhZnRlciBzZW5kaW5nIHRoZSB4YWN0IGZpbmlzaAorICogY29tbWFuZCB1c2luZyB0aGlzIGxv Y2suCisgKgorICogUmVmZXIgdG8gdGhlIGNvbW1lbnRzIGF0b3AgdGhpcyBmaWxlIHRvIHNlZSBo b3cgdGhlIHRyYW5zYWN0aW9uIGxvY2sgaXMKKyAqIHVzZWQuCisgKi8KK3ZvaWQKK3BhX2xvY2tf dHJhbnNhY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQsIExPQ0tNT0RFIGxvY2ttb2RlKQoreworCUxv Y2tBcHBseVRyYW5zYWN0aW9uRm9yU2Vzc2lvbihNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4 aWQsCisJCQkJCQkJCSAgIFBBUkFMTEVMX0FQUExZX0xPQ0tfWEFDVCwgbG9ja21vZGUpOworfQor Cit2b2lkCitwYV91bmxvY2tfdHJhbnNhY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQsIExPQ0tNT0RF IGxvY2ttb2RlKQoreworCVVubG9ja0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNzaW9uKE15TG9naWNh bFJlcFdvcmtlci0+c3ViaWQsIHhpZCwKKwkJCQkJCQkJCSBQQVJBTExFTF9BUFBMWV9MT0NLX1hB Q1QsIGxvY2ttb2RlKTsKK30KKworLyoKKyAqIERlY3JlbWVudCB0aGUgbnVtYmVyIG9mIHBlbmRp bmcgc3RyZWFtaW5nIGJsb2NrcyBhbmQgd2FpdCBvbiB0aGUgc3RyZWFtIGxvY2sKKyAqIGlmIHRo ZXJlIGlzIG5vIHBlbmRpbmcgYmxvY2sgYXZhaWxhYmxlLgorICovCit2b2lkCitwYV9kZWNyX2Fu ZF93YWl0X3N0cmVhbV9ibG9jayh2b2lkKQoreworCUFzc2VydChhbV9wYXJhbGxlbF9hcHBseV93 b3JrZXIoKSk7CisKKwkvKgorCSAqIEl0IGlzIG9ubHkgcG9zc2libGUgdG8gbm90IGhhdmUgYW55 IHBlbmRpbmcgc3RyZWFtIGNodW5rcyB3aGVuIHdlIGFyZQorCSAqIGFwcGx5aW5nIHNwb29sZWQg bWVzc2FnZXMuCisJICovCisJaWYgKHBnX2F0b21pY19yZWFkX3UzMigmTXlQYXJhbGxlbFNoYXJl ZC0+cGVuZGluZ19zdHJlYW1fY291bnQpID09IDApCisJeworCQlpZiAocGFfaGFzX3Nwb29sZWRf bWVzc2FnZV9wZW5kaW5nKCkpCisJCQlyZXR1cm47CisKKwkJZWxvZyhFUlJPUiwgImludmFsaWQg cGVuZGluZyBzdHJlYW1pbmcgY2h1bmsgMCIpOworCX0KKworCWlmIChwZ19hdG9taWNfc3ViX2Zl dGNoX3UzMigmTXlQYXJhbGxlbFNoYXJlZC0+cGVuZGluZ19zdHJlYW1fY291bnQsIDEpID09IDAp CisJeworCQlwYV9sb2NrX3N0cmVhbShNeVBhcmFsbGVsU2hhcmVkLT54aWQsIEFjY2Vzc1NoYXJl TG9jayk7CisJCXBhX3VubG9ja19zdHJlYW0oTXlQYXJhbGxlbFNoYXJlZC0+eGlkLCBBY2Nlc3NT aGFyZUxvY2spOworCX0KK30KKworLyoKKyAqIEZpbmlzaCBwcm9jZXNzaW5nIHRoZSBzdHJlYW1p bmcgdHJhbnNhY3Rpb24gaW4gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIuCisgKi8KK3ZvaWQKK3Bh X3hhY3RfZmluaXNoKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgWExvZ1JlY1B0ciBy ZW1vdGVfbHNuKQoreworCUFzc2VydChhbV9sZWFkZXJfYXBwbHlfd29ya2VyKCkpOworCisJLyoK KwkgKiBVbmxvY2sgdGhlIHNoYXJlZCBvYmplY3QgbG9jayBzbyB0aGF0IHBhcmFsbGVsIGFwcGx5 IHdvcmtlciBjYW4KKwkgKiBjb250aW51ZSB0byByZWNlaXZlIGFuZCBhcHBseSBjaGFuZ2VzLgor CSAqLworCXBhX3VubG9ja19zdHJlYW0od2luZm8tPnNoYXJlZC0+eGlkLCBBY2Nlc3NFeGNsdXNp dmVMb2NrKTsKKworCS8qCisJICogV2FpdCBmb3IgdGhhdCB3b3JrZXIgdG8gZmluaXNoLiBUaGlz IGlzIG5lY2Vzc2FyeSB0byBtYWludGFpbiBjb21taXQKKwkgKiBvcmRlciB3aGljaCBhdm9pZHMg ZmFpbHVyZXMgZHVlIHRvIHRyYW5zYWN0aW9uIGRlcGVuZGVuY2llcyBhbmQKKwkgKiBkZWFkbG9j a3MuCisJICovCisJcGFfd2FpdF9mb3JfeGFjdF9maW5pc2god2luZm8pOworCisJc3RvcmVfZmx1 c2hfcG9zaXRpb24ocmVtb3RlX2xzbiwgd2luZm8tPnNoYXJlZC0+bGFzdF9jb21taXRfZW5kKTsK Kwkodm9pZCkgcGFfZnJlZV93b3JrZXIod2luZm8pOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvZGVjb2RlLmMKaW5kZXggMmNjMGFjOWViMC4uMzNmZGJkYzY3MyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYworKysgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCkBAIC04MjIsMTAgKzgyMiwxMSBAQCBE ZWNvZGVBYm9ydChMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIg KmJ1ZiwKIAkJZm9yIChpID0gMDsgaSA8IHBhcnNlZC0+bnN1YnhhY3RzOyBpKyspCiAJCXsKIAkJ CVJlb3JkZXJCdWZmZXJBYm9ydChjdHgtPnJlb3JkZXIsIHBhcnNlZC0+c3VieGFjdHNbaV0sCi0J CQkJCQkJICAgYnVmLT5yZWNvcmQtPkVuZFJlY1B0cik7CisJCQkJCQkJICAgYnVmLT5yZWNvcmQt PkVuZFJlY1B0ciwgYWJvcnRfdGltZSk7CiAJCX0KIAotCQlSZW9yZGVyQnVmZmVyQWJvcnQoY3R4 LT5yZW9yZGVyLCB4aWQsIGJ1Zi0+cmVjb3JkLT5FbmRSZWNQdHIpOworCQlSZW9yZGVyQnVmZmVy QWJvcnQoY3R4LT5yZW9yZGVyLCB4aWQsIGJ1Zi0+cmVjb3JkLT5FbmRSZWNQdHIsCisJCQkJCQkg ICBhYm9ydF90aW1lKTsKIAl9CiAKIAkvKiB1cGRhdGUgdGhlIGRlY29kaW5nIHN0YXRzICovCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKaW5kZXggNzM1OTRjNjk4 YS4uNzU5Zjk2NGZiZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9sYXVuY2hlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNo ZXIuYwpAQCAtNTUsNiArNTUsNyBAQAogLyogR1VDIHZhcmlhYmxlcyAqLwogaW50CQkJbWF4X2xv Z2ljYWxfcmVwbGljYXRpb25fd29ya2VycyA9IDQ7CiBpbnQJCQltYXhfc3luY193b3JrZXJzX3Bl cl9zdWJzY3JpcHRpb24gPSAyOworaW50CQkJbWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVy X3N1YnNjcmlwdGlvbiA9IDI7CiAKIExvZ2ljYWxSZXBXb3JrZXIgKk15TG9naWNhbFJlcFdvcmtl ciA9IE5VTEw7CiAKQEAgLTc0LDYgKzc1LDcgQEAgc3RhdGljIHZvaWQgbG9naWNhbHJlcF9sYXVu Y2hlcl9vbmV4aXQoaW50IGNvZGUsIERhdHVtIGFyZyk7CiBzdGF0aWMgdm9pZCBsb2dpY2FscmVw X3dvcmtlcl9vbmV4aXQoaW50IGNvZGUsIERhdHVtIGFyZyk7CiBzdGF0aWMgdm9pZCBsb2dpY2Fs cmVwX3dvcmtlcl9kZXRhY2godm9pZCk7CiBzdGF0aWMgdm9pZCBsb2dpY2FscmVwX3dvcmtlcl9j bGVhbnVwKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcik7CitzdGF0aWMgaW50CWxvZ2ljYWxyZXBf cGFfd29ya2VyX2NvdW50KE9pZCBzdWJpZCk7CiAKIHN0YXRpYyBib29sIG9uX2NvbW1pdF9sYXVu Y2hlcl93YWtldXAgPSBmYWxzZTsKIApAQCAtMTUyLDggKzE1NCwxMCBAQCBnZXRfc3Vic2NyaXB0 aW9uX2xpc3Qodm9pZCkKICAqCiAgKiBUaGlzIGlzIG9ubHkgbmVlZGVkIGZvciBjbGVhbmluZyB1 cCB0aGUgc2hhcmVkIG1lbW9yeSBpbiBjYXNlIHRoZSB3b3JrZXIKICAqIGZhaWxzIHRvIGF0dGFj aC4KKyAqCisgKiBSZXR1cm4gd2hldGhlciB0aGUgYXR0YWNoIHdhcyBzdWNjZXNzZnVsLgogICov Ci1zdGF0aWMgdm9pZAorc3RhdGljIGJvb2wKIFdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFj aChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIsCiAJCQkJCQkJICAgdWludDE2IGdlbmVyYXRpb24s CiAJCQkJCQkJICAgQmFja2dyb3VuZFdvcmtlckhhbmRsZSAqaGFuZGxlKQpAQCAtMTY5LDExICsx NzMsMTEgQEAgV2FpdEZvclJlcGxpY2F0aW9uV29ya2VyQXR0YWNoKExvZ2ljYWxSZXBXb3JrZXIg KndvcmtlciwKIAogCQlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFS RUQpOwogCi0JCS8qIFdvcmtlciBlaXRoZXIgZGllZCBvciBoYXMgc3RhcnRlZDsgbm8gbmVlZCB0 byBkbyBhbnl0aGluZy4gKi8KKwkJLyogV29ya2VyIGVpdGhlciBkaWVkIG9yIGhhcyBzdGFydGVk LiBSZXR1cm4gZmFsc2UgaWYgZGllZC4gKi8KIAkJaWYgKCF3b3JrZXItPmluX3VzZSB8fCB3b3Jr ZXItPnByb2MpCiAJCXsKIAkJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwot CQkJcmV0dXJuOworCQkJcmV0dXJuIHdvcmtlci0+aW5fdXNlOwogCQl9CiAKIAkJTFdMb2NrUmVs ZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CkBAIC0xODgsNyArMTkyLDcgQEAgV2FpdEZvclJl cGxpY2F0aW9uV29ya2VyQXR0YWNoKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciwKIAkJCWlmIChn ZW5lcmF0aW9uID09IHdvcmtlci0+Z2VuZXJhdGlvbikKIAkJCQlsb2dpY2FscmVwX3dvcmtlcl9j bGVhbnVwKHdvcmtlcik7CiAJCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsK LQkJCXJldHVybjsKKwkJCXJldHVybiBmYWxzZTsKIAkJfQogCiAJCS8qCkBAIC0yMTAsNiArMjE0 LDggQEAgV2FpdEZvclJlcGxpY2F0aW9uV29ya2VyQXR0YWNoKExvZ2ljYWxSZXBXb3JrZXIgKndv cmtlciwKIC8qCiAgKiBXYWxrcyB0aGUgd29ya2VycyBhcnJheSBhbmQgc2VhcmNoZXMgZm9yIG9u ZSB0aGF0IG1hdGNoZXMgZ2l2ZW4KICAqIHN1YnNjcmlwdGlvbiBpZCBhbmQgcmVsaWQuCisgKgor ICogV2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBvciB0 YWJsZSBzeW5jIHdvcmtlci4KICAqLwogTG9naWNhbFJlcFdvcmtlciAqCiBsb2dpY2FscmVwX3dv cmtlcl9maW5kKE9pZCBzdWJpZCwgT2lkIHJlbGlkLCBib29sIG9ubHlfcnVubmluZykKQEAgLTIy NCw2ICsyMzAsMTAgQEAgbG9naWNhbHJlcF93b3JrZXJfZmluZChPaWQgc3ViaWQsIE9pZCByZWxp ZCwgYm9vbCBvbmx5X3J1bm5pbmcpCiAJewogCQlMb2dpY2FsUmVwV29ya2VyICp3ID0gJkxvZ2lj YWxSZXBDdHgtPndvcmtlcnNbaV07CiAKKwkJLyogU2tpcCBwYXJhbGxlbCBhcHBseSB3b3JrZXJz LiAqLworCQlpZiAoaXNQYXJhbGxlbEFwcGx5V29ya2VyKHcpKQorCQkJY29udGludWU7CisKIAkJ aWYgKHctPmluX3VzZSAmJiB3LT5zdWJpZCA9PSBzdWJpZCAmJiB3LT5yZWxpZCA9PSByZWxpZCAm JgogCQkJKCFvbmx5X3J1bm5pbmcgfHwgdy0+cHJvYykpCiAJCXsKQEAgLTI2MCwxMSArMjcwLDEz IEBAIGxvZ2ljYWxyZXBfd29ya2Vyc19maW5kKE9pZCBzdWJpZCwgYm9vbCBvbmx5X3J1bm5pbmcp CiB9CiAKIC8qCi0gKiBTdGFydCBuZXcgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIsIGlmIHBvc3Np YmxlLgorICogU3RhcnQgbmV3IGxvZ2ljYWwgcmVwbGljYXRpb24gYmFja2dyb3VuZCB3b3JrZXIs IGlmIHBvc3NpYmxlLgorICoKKyAqIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBm YWlsdXJlLgogICovCi12b2lkCitib29sCiBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2goT2lkIGRi aWQsIE9pZCBzdWJpZCwgY29uc3QgY2hhciAqc3VibmFtZSwgT2lkIHVzZXJpZCwKLQkJCQkJCSBP aWQgcmVsaWQpCisJCQkJCQkgT2lkIHJlbGlkLCBkc21faGFuZGxlIHN1Yndvcmtlcl9kc20pCiB7 CiAJQmFja2dyb3VuZFdvcmtlciBiZ3c7CiAJQmFja2dyb3VuZFdvcmtlckhhbmRsZSAqYmd3X2hh bmRsZTsKQEAgLTI3Myw3ICsyODUsMTIgQEAgbG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKE9pZCBk YmlkLCBPaWQgc3ViaWQsIGNvbnN0IGNoYXIgKnN1Ym5hbWUsIE9pZCB1c2VyaWQsCiAJaW50CQkJ c2xvdCA9IDA7CiAJTG9naWNhbFJlcFdvcmtlciAqd29ya2VyID0gTlVMTDsKIAlpbnQJCQluc3lu Y3dvcmtlcnM7CisJaW50CQkJbnBhcmFsbGVsYXBwbHl3b3JrZXJzOwogCVRpbWVzdGFtcFR6IG5v dzsKKwlib29sCQlpc19wYXJhbGxlbF9hcHBseV93b3JrZXIgPSAoc3Vid29ya2VyX2RzbSAhPSBE U01fSEFORExFX0lOVkFMSUQpOworCisJLyogU2FuaXR5IGNoZWNrIC0gdGFibGVzeW5jIHdvcmtl ciBjYW5ub3QgYmUgYSBzdWJ3b3JrZXIgKi8KKwlBc3NlcnQoIShpc19wYXJhbGxlbF9hcHBseV93 b3JrZXIgJiYgT2lkSXNWYWxpZChyZWxpZCkpKTsKIAogCWVyZXBvcnQoREVCVUcxLAogCQkJKGVy cm1zZ19pbnRlcm5hbCgic3RhcnRpbmcgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgZm9yIHN1 YnNjcmlwdGlvbiBcIiVzXCIiLApAQCAtMzUxLDcgKzM2OCwyMCBAQCByZXRyeToKIAlpZiAoT2lk SXNWYWxpZChyZWxpZCkgJiYgbnN5bmN3b3JrZXJzID49IG1heF9zeW5jX3dvcmtlcnNfcGVyX3N1 YnNjcmlwdGlvbikKIAl7CiAJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwot CQlyZXR1cm47CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlucGFyYWxsZWxhcHBseXdvcmtlcnMg PSBsb2dpY2FscmVwX3BhX3dvcmtlcl9jb3VudChzdWJpZCk7CisKKwkvKgorCSAqIFJldHVybiBm YWxzZSBpZiB0aGUgbnVtYmVyIG9mIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgcmVhY2hlZCB0aGUg bGltaXQKKwkgKiBwZXIgc3Vic2NyaXB0aW9uLgorCSAqLworCWlmIChpc19wYXJhbGxlbF9hcHBs eV93b3JrZXIgJiYKKwkJbnBhcmFsbGVsYXBwbHl3b3JrZXJzID49IG1heF9wYXJhbGxlbF9hcHBs eV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24pCisJeworCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxS ZXBXb3JrZXJMb2NrKTsKKwkJcmV0dXJuIGZhbHNlOwogCX0KIAogCS8qCkBAIC0zNjUsNyArMzk1 LDcgQEAgcmV0cnk6CiAJCQkJKGVycmNvZGUoRVJSQ09ERV9DT05GSUdVUkFUSU9OX0xJTUlUX0VY Q0VFREVEKSwKIAkJCQkgZXJybXNnKCJvdXQgb2YgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIg c2xvdHMiKSwKIAkJCQkgZXJyaGludCgiWW91IG1pZ2h0IG5lZWQgdG8gaW5jcmVhc2UgbWF4X2xv Z2ljYWxfcmVwbGljYXRpb25fd29ya2Vycy4iKSkpOwotCQlyZXR1cm47CisJCXJldHVybiBmYWxz ZTsKIAl9CiAKIAkvKiBQcmVwYXJlIHRoZSB3b3JrZXIgc2xvdC4gKi8KQEAgLTM4MCw2ICs0MTAs OCBAQCByZXRyeToKIAl3b3JrZXItPnJlbHN0YXRlID0gU1VCUkVMX1NUQVRFX1VOS05PV047CiAJ d29ya2VyLT5yZWxzdGF0ZV9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAl3b3JrZXItPnN0cmVh bV9maWxlc2V0ID0gTlVMTDsKKwl3b3JrZXItPmFwcGx5X2xlYWRlcl9waWQgPSBpc19wYXJhbGxl bF9hcHBseV93b3JrZXIgPyBNeVByb2NQaWQgOiBJbnZhbGlkUGlkOworCXdvcmtlci0+cGFyYWxs ZWxfYXBwbHkgPSBpc19wYXJhbGxlbF9hcHBseV93b3JrZXI7CiAJd29ya2VyLT5sYXN0X2xzbiA9 IEludmFsaWRYTG9nUmVjUHRyOwogCVRJTUVTVEFNUF9OT0JFR0lOKHdvcmtlci0+bGFzdF9zZW5k X3RpbWUpOwogCVRJTUVTVEFNUF9OT0JFR0lOKHdvcmtlci0+bGFzdF9yZWN2X3RpbWUpOwpAQCAt Mzk3LDE5ICs0MjksMzQgQEAgcmV0cnk6CiAJCUJHV09SS0VSX0JBQ0tFTkRfREFUQUJBU0VfQ09O TkVDVElPTjsKIAliZ3cuYmd3X3N0YXJ0X3RpbWUgPSBCZ1dvcmtlclN0YXJ0X1JlY292ZXJ5Rmlu aXNoZWQ7CiAJc25wcmludGYoYmd3LmJnd19saWJyYXJ5X25hbWUsIEJHV19NQVhMRU4sICJwb3N0 Z3JlcyIpOwotCXNucHJpbnRmKGJndy5iZ3dfZnVuY3Rpb25fbmFtZSwgQkdXX01BWExFTiwgIkFw cGx5V29ya2VyTWFpbiIpOworCisJaWYgKGlzX3BhcmFsbGVsX2FwcGx5X3dvcmtlcikKKwkJc25w cmludGYoYmd3LmJnd19mdW5jdGlvbl9uYW1lLCBCR1dfTUFYTEVOLCAiUGFyYWxsZWxBcHBseVdv cmtlck1haW4iKTsKKwllbHNlCisJCXNucHJpbnRmKGJndy5iZ3dfZnVuY3Rpb25fbmFtZSwgQkdX X01BWExFTiwgIkFwcGx5V29ya2VyTWFpbiIpOworCiAJaWYgKE9pZElzVmFsaWQocmVsaWQpKQog CQlzbnByaW50ZihiZ3cuYmd3X25hbWUsIEJHV19NQVhMRU4sCiAJCQkJICJsb2dpY2FsIHJlcGxp Y2F0aW9uIHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uICV1IHN5bmMgJXUiLCBzdWJpZCwgcmVsaWQp OworCWVsc2UgaWYgKGlzX3BhcmFsbGVsX2FwcGx5X3dvcmtlcikKKwkJc25wcmludGYoYmd3LmJn d19uYW1lLCBCR1dfTUFYTEVOLAorCQkJCSAibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBh cHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiAldSIsIHN1YmlkKTsKIAllbHNlCiAJCXNucHJp bnRmKGJndy5iZ3dfbmFtZSwgQkdXX01BWExFTiwKLQkJCQkgImxvZ2ljYWwgcmVwbGljYXRpb24g d29ya2VyIGZvciBzdWJzY3JpcHRpb24gJXUiLCBzdWJpZCk7Ci0Jc25wcmludGYoYmd3LmJnd190 eXBlLCBCR1dfTUFYTEVOLCAibG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIiKTsKKwkJCQkgImxv Z2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gJXUiLCBzdWJp ZCk7CisKKwlpZiAoaXNfcGFyYWxsZWxfYXBwbHlfd29ya2VyKQorCQlzbnByaW50ZihiZ3cuYmd3 X3R5cGUsIEJHV19NQVhMRU4sICJsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIHdvcmtlciIp OworCWVsc2UKKwkJc25wcmludGYoYmd3LmJnd190eXBlLCBCR1dfTUFYTEVOLCAibG9naWNhbCBy ZXBsaWNhdGlvbiB3b3JrZXIiKTsKIAogCWJndy5iZ3dfcmVzdGFydF90aW1lID0gQkdXX05FVkVS X1JFU1RBUlQ7CiAJYmd3LmJnd19ub3RpZnlfcGlkID0gTXlQcm9jUGlkOwogCWJndy5iZ3dfbWFp bl9hcmcgPSBJbnQzMkdldERhdHVtKHNsb3QpOwogCisJaWYgKGlzX3BhcmFsbGVsX2FwcGx5X3dv cmtlcikKKwkJbWVtY3B5KGJndy5iZ3dfZXh0cmEsICZzdWJ3b3JrZXJfZHNtLCBzaXplb2YoZHNt X2hhbmRsZSkpOworCiAJaWYgKCFSZWdpc3RlckR5bmFtaWNCYWNrZ3JvdW5kV29ya2VyKCZiZ3cs ICZiZ3dfaGFuZGxlKSkKIAl7CiAJCS8qIEZhaWxlZCB0byBzdGFydCB3b3JrZXIsIHNvIGNsZWFu IHVwIHRoZSB3b3JrZXIgc2xvdC4gKi8KQEAgLTQyMiwzMyArNDY5LDIzIEBAIHJldHJ5OgogCQkJ CShlcnJjb2RlKEVSUkNPREVfQ09ORklHVVJBVElPTl9MSU1JVF9FWENFRURFRCksCiAJCQkJIGVy cm1zZygib3V0IG9mIGJhY2tncm91bmQgd29ya2VyIHNsb3RzIiksCiAJCQkJIGVycmhpbnQoIllv dSBtaWdodCBuZWVkIHRvIGluY3JlYXNlIG1heF93b3JrZXJfcHJvY2Vzc2VzLiIpKSk7Ci0JCXJl dHVybjsKKwkJcmV0dXJuIGZhbHNlOwogCX0KIAogCS8qIE5vdyB3YWl0IHVudGlsIGl0IGF0dGFj aGVzLiAqLwotCVdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaCh3b3JrZXIsIGdlbmVyYXRp b24sIGJnd19oYW5kbGUpOworCXJldHVybiBXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2go d29ya2VyLCBnZW5lcmF0aW9uLCBiZ3dfaGFuZGxlKTsKIH0KIAogLyoKLSAqIFN0b3AgdGhlIGxv Z2ljYWwgcmVwbGljYXRpb24gd29ya2VyIGZvciBzdWJpZC9yZWxpZCwgaWYgYW55LCBhbmQgd2Fp dCB1bnRpbAotICogaXQgZGV0YWNoZXMgZnJvbSB0aGUgc2xvdC4KKyAqIEludGVybmFsIGZ1bmN0 aW9uIHRvIHN0b3AgdGhlIHdvcmtlciBhbmQgd2FpdCB1bnRpbCBpdCBkZXRhY2hlcyBmcm9tIHRo ZQorICogc2xvdC4KICAqLwotdm9pZAotbG9naWNhbHJlcF93b3JrZXJfc3RvcChPaWQgc3ViaWQs IE9pZCByZWxpZCkKK3N0YXRpYyB2b2lkCitsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFs KExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciwgaW50IHNpZ25vKQogewotCUxvZ2ljYWxSZXBXb3Jr ZXIgKndvcmtlcjsKIAl1aW50MTYJCWdlbmVyYXRpb247CiAKLQlMV0xvY2tBY3F1aXJlKExvZ2lj YWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOwotCi0Jd29ya2VyID0gbG9naWNhbHJlcF93b3Jr ZXJfZmluZChzdWJpZCwgcmVsaWQsIGZhbHNlKTsKLQotCS8qIE5vIHdvcmtlciwgbm90aGluZyB0 byBkby4gKi8KLQlpZiAoIXdvcmtlcikKLQl7Ci0JCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdv cmtlckxvY2spOwotCQlyZXR1cm47Ci0JfQorCUFzc2VydChMV0xvY2tIZWxkQnlNZUluTW9kZShM b2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKSk7CiAKIAkvKgogCSAqIFJlbWVtYmVyIHdo aWNoIGdlbmVyYXRpb24gd2FzIG91ciB3b3JrZXIgc28gd2UgY2FuIGNoZWNrIGlmIHdoYXQgd2Ug c2VlCkBAIC00ODYsMTAgKzUyMyw3IEBAIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1Ymlk LCBPaWQgcmVsaWQpCiAJCSAqIGRpZmZlcmVudCwgbWVhbmluZyB0aGF0IGEgZGlmZmVyZW50IHdv cmtlciBoYXMgdGFrZW4gdGhlIHNsb3QuCiAJCSAqLwogCQlpZiAoIXdvcmtlci0+aW5fdXNlIHx8 IHdvcmtlci0+Z2VuZXJhdGlvbiAhPSBnZW5lcmF0aW9uKQotCQl7Ci0JCQlMV0xvY2tSZWxlYXNl KExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKIAkJCXJldHVybjsKLQkJfQogCiAJCS8qIFdvcmtlciBo YXMgYXNzaWduZWQgcHJvYywgc28gaXQgaGFzIHN0YXJ0ZWQuICovCiAJCWlmICh3b3JrZXItPnBy b2MpCkBAIC00OTcsNyArNTMxLDcgQEAgbG9naWNhbHJlcF93b3JrZXJfc3RvcChPaWQgc3ViaWQs IE9pZCByZWxpZCkKIAl9CiAKIAkvKiBOb3cgdGVybWluYXRlIHRoZSB3b3JrZXIgLi4uICovCi0J a2lsbCh3b3JrZXItPnByb2MtPnBpZCwgU0lHVEVSTSk7CisJa2lsbCh3b3JrZXItPnByb2MtPnBp ZCwgc2lnbm8pOwogCiAJLyogLi4uIGFuZCB3YWl0IGZvciBpdCB0byBkaWUuICovCiAJZm9yICg7 OykKQEAgLTUyMyw2ICs1NTcsNTMgQEAgbG9naWNhbHJlcF93b3JrZXJfc3RvcChPaWQgc3ViaWQs IE9pZCByZWxpZCkKIAogCQlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19T SEFSRUQpOwogCX0KK30KKworLyoKKyAqIFN0b3AgdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gd29y a2VyIGZvciBzdWJpZC9yZWxpZCwgaWYgYW55LgorICovCit2b2lkCitsb2dpY2FscmVwX3dvcmtl cl9zdG9wKE9pZCBzdWJpZCwgT2lkIHJlbGlkKQoreworCUxvZ2ljYWxSZXBXb3JrZXIgKndvcmtl cjsKKworCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CisK Kwl3b3JrZXIgPSBsb2dpY2FscmVwX3dvcmtlcl9maW5kKHN1YmlkLCByZWxpZCwgZmFsc2UpOwor CisJaWYgKHdvcmtlcikKKwl7CisJCUFzc2VydCghaXNQYXJhbGxlbEFwcGx5V29ya2VyKHdvcmtl cikpOworCQlsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKHdvcmtlciwgU0lHVEVSTSk7 CisJfQorCisJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7Cit9CisKKy8qCisg KiBTdG9wIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBjb3Jy ZXNwb25kaW5nIHRvIHRoZQorICogaW5wdXQgc2xvdCBudW1iZXIuCisgKgorICogTm9kZSB0aGF0 IHRoZSBmdW5jdGlvbiBzZW5kcyBTSUdJTlQgaW5zdGVhZCBvZiBTSUdURVJNIHRvIHRoZSBwYXJh bGxlbCBhcHBseQorICogd29ya2VyIHNvIHRoYXQgdGhlIHdvcmtlciBleGl0cyBjbGVhbmx5Lgor ICovCit2b2lkCitsb2dpY2FscmVwX3BhX3dvcmtlcl9zdG9wKGludCBzbG90X25vLCB1aW50MTYg Z2VuZXJhdGlvbikKK3sKKwlMb2dpY2FsUmVwV29ya2VyICp3b3JrZXI7CisKKwlBc3NlcnQoc2xv dF9ubyA+PSAwICYmIHNsb3Rfbm8gPCBtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzKTsK KworCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CisKKwl3 b3JrZXIgPSAmTG9naWNhbFJlcEN0eC0+d29ya2Vyc1tzbG90X25vXTsKKwlBc3NlcnQoaXNQYXJh bGxlbEFwcGx5V29ya2VyKHdvcmtlcikpOworCisJLyoKKwkgKiBPbmx5IHN0b3AgdGhlIHdvcmtl ciBpZiB0aGUgZ2VuZXJhdGlvbiBtYXRjaGVzIGFuZCB0aGUgd29ya2VyIGlzIGFsaXZlLgorCSAq LworCWlmICh3b3JrZXItPmdlbmVyYXRpb24gPT0gZ2VuZXJhdGlvbiAmJiB3b3JrZXItPnByb2Mp CisJCWxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwod29ya2VyLCBTSUdJTlQpOwogCiAJ TFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CiB9CkBAIC01OTUsMTEgKzY3Niw0 MCBAQCBsb2dpY2FscmVwX3dvcmtlcl9hdHRhY2goaW50IHNsb3QpCiB9CiAKIC8qCi0gKiBEZXRh Y2ggdGhlIHdvcmtlciAoY2xlYW5zIHVwIHRoZSB3b3JrZXIgaW5mbykuCisgKiBTdG9wIHRoZSBw YXJhbGxlbCBhcHBseSB3b3JrZXJzIGlmIGFueSwgYW5kIGRldGFjaCB0aGUgbGVhZGVyIGFwcGx5 IHdvcmtlcgorICogKGNsZWFucyB1cCB0aGUgd29ya2VyIGluZm8pLgogICovCiBzdGF0aWMgdm9p ZAogbG9naWNhbHJlcF93b3JrZXJfZGV0YWNoKHZvaWQpCiB7CisJLyogU3RvcCB0aGUgcGFyYWxs ZWwgYXBwbHkgd29ya2Vycy4gKi8KKwlpZiAoYW1fbGVhZGVyX2FwcGx5X3dvcmtlcigpKQorCXsK KwkJTGlzdAkgICAqd29ya2VyczsKKwkJTGlzdENlbGwgICAqbGM7CisKKwkJLyoKKwkJICogRGV0 YWNoIGZyb20gdGhlIGVycm9yX21xX2hhbmRsZSBmb3IgYWxsIHBhcmFsbGVsIGFwcGx5IHdvcmtl cnMKKwkJICogYmVmb3JlIHRlcm1pbmF0aW5nIHRoZW0uIFRoaXMgcHJldmVudHMgdGhlIGxlYWRl ciBhcHBseSB3b3JrZXIgZnJvbQorCQkgKiByZWNlaXZpbmcgdGhlIHdvcmtlciB0ZXJtaW5hdGlv biBtZXNzYWdlIGFuZCBzZW5kaW5nIGl0IHRvIGxvZ3MKKwkJICogd2hlbiB0aGUgc2FtZSBpcyBh bHJlYWR5IGRvbmUgYnkgdGhlIHBhcmFsbGVsIHdvcmtlci4KKwkJICovCisJCXBhX2RldGFjaF9h bGxfZXJyb3JfbXEoKTsKKworCQlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBM V19TSEFSRUQpOworCisJCXdvcmtlcnMgPSBsb2dpY2FscmVwX3dvcmtlcnNfZmluZChNeUxvZ2lj YWxSZXBXb3JrZXItPnN1YmlkLCB0cnVlKTsKKwkJZm9yZWFjaChsYywgd29ya2VycykKKwkJewor CQkJTG9naWNhbFJlcFdvcmtlciAqdyA9IChMb2dpY2FsUmVwV29ya2VyICopIGxmaXJzdChsYyk7 CisKKwkJCWlmIChpc1BhcmFsbGVsQXBwbHlXb3JrZXIodykpCisJCQkJbG9naWNhbHJlcF93b3Jr ZXJfc3RvcF9pbnRlcm5hbCh3LCBTSUdURVJNKTsKKwkJfQorCisJCUxXTG9ja1JlbGVhc2UoTG9n aWNhbFJlcFdvcmtlckxvY2spOworCX0KKwogCS8qIEJsb2NrIGNvbmN1cnJlbnQgYWNjZXNzLiAq LwogCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX0VYQ0xVU0lWRSk7CiAK QEAgLTYyMiw2ICs3MzIsOCBAQCBsb2dpY2FscmVwX3dvcmtlcl9jbGVhbnVwKExvZ2ljYWxSZXBX b3JrZXIgKndvcmtlcikKIAl3b3JrZXItPnVzZXJpZCA9IEludmFsaWRPaWQ7CiAJd29ya2VyLT5z dWJpZCA9IEludmFsaWRPaWQ7CiAJd29ya2VyLT5yZWxpZCA9IEludmFsaWRPaWQ7CisJd29ya2Vy LT5hcHBseV9sZWFkZXJfcGlkID0gSW52YWxpZFBpZDsKKwl3b3JrZXItPnBhcmFsbGVsX2FwcGx5 ID0gZmFsc2U7CiB9CiAKIC8qCkBAIC02NTMsNiArNzY1LDEzIEBAIGxvZ2ljYWxyZXBfd29ya2Vy X29uZXhpdChpbnQgY29kZSwgRGF0dW0gYXJnKQogCWlmIChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0 cmVhbV9maWxlc2V0ICE9IE5VTEwpCiAJCUZpbGVTZXREZWxldGVBbGwoTXlMb2dpY2FsUmVwV29y a2VyLT5zdHJlYW1fZmlsZXNldCk7CiAKKwkvKgorCSAqIFNlc3Npb24gbGV2ZWwgbG9ja3MgbWF5 IGJlIGFjcXVpcmVkIG91dHNpZGUgb2YgYSB0cmFuc2FjdGlvbiBpbgorCSAqIHBhcmFsbGVsIGFw cGx5IG1vZGUgYW5kIHdpbGwgbm90IGJlIHJlbGVhc2VkIHdoZW4gdGhlIHdvcmtlcgorCSAqIHRl cm1pbmF0ZXMsIHNvIG1hbnVhbGx5IHJlbGVhc2UgYWxsIGxvY2tzIGJlZm9yZSB0aGUgd29ya2Vy IGV4aXRzLgorCSAqLworCUxvY2tSZWxlYXNlQWxsKERFRkFVTFRfTE9DS01FVEhPRCwgdHJ1ZSk7 CisKIAlBcHBseUxhdW5jaGVyV2FrZXVwKCk7CiB9CiAKQEAgLTY4MCw2ICs3OTksMzMgQEAgbG9n aWNhbHJlcF9zeW5jX3dvcmtlcl9jb3VudChPaWQgc3ViaWQpCiAJcmV0dXJuIHJlczsKIH0KIAor LyoKKyAqIENvdW50IHRoZSBudW1iZXIgb2YgcmVnaXN0ZXJlZCAoYnV0IG5vdCBuZWNlc3Nhcmls eSBydW5uaW5nKSBwYXJhbGxlbCBhcHBseQorICogd29ya2VycyBmb3IgYSBzdWJzY3JpcHRpb24u CisgKi8KK3N0YXRpYyBpbnQKK2xvZ2ljYWxyZXBfcGFfd29ya2VyX2NvdW50KE9pZCBzdWJpZCkK K3sKKwlpbnQJCQlpOworCWludAkJCXJlcyA9IDA7CisKKwlBc3NlcnQoTFdMb2NrSGVsZEJ5TWUo TG9naWNhbFJlcFdvcmtlckxvY2spKTsKKworCS8qCisJICogU2NhbiBhbGwgYXR0YWNoZWQgcGFy YWxsZWwgYXBwbHkgd29ya2Vycywgb25seSBjb3VudGluZyB0aG9zZSB3aGljaAorCSAqIGhhdmUg dGhlIGdpdmVuIHN1YnNjcmlwdGlvbiBpZC4KKwkgKi8KKwlmb3IgKGkgPSAwOyBpIDwgbWF4X2xv Z2ljYWxfcmVwbGljYXRpb25fd29ya2VyczsgaSsrKQorCXsKKwkJTG9naWNhbFJlcFdvcmtlciAq dyA9ICZMb2dpY2FsUmVwQ3R4LT53b3JrZXJzW2ldOworCisJCWlmICh3LT5zdWJpZCA9PSBzdWJp ZCAmJiBpc1BhcmFsbGVsQXBwbHlXb3JrZXIodykpCisJCQlyZXMrKzsKKwl9CisKKwlyZXR1cm4g cmVzOworfQorCiAvKgogICogQXBwbHlMYXVuY2hlclNobWVtU2l6ZQogICoJCUNvbXB1dGUgc3Bh Y2UgbmVlZGVkIGZvciByZXBsaWNhdGlvbiBsYXVuY2hlciBzaGFyZWQgbWVtb3J5CkBAIC04Njks NyArMTAxNSw3IEBAIEFwcGx5TGF1bmNoZXJNYWluKERhdHVtIG1haW5fYXJnKQogCQkJCQl3YWl0 X3RpbWUgPSB3YWxfcmV0cmlldmVfcmV0cnlfaW50ZXJ2YWw7CiAKIAkJCQkJbG9naWNhbHJlcF93 b3JrZXJfbGF1bmNoKHN1Yi0+ZGJpZCwgc3ViLT5vaWQsIHN1Yi0+bmFtZSwKLQkJCQkJCQkJCQkJ IHN1Yi0+b3duZXIsIEludmFsaWRPaWQpOworCQkJCQkJCQkJCQkgc3ViLT5vd25lciwgSW52YWxp ZE9pZCwgRFNNX0hBTkRMRV9JTlZBTElEKTsKIAkJCQl9CiAJCQl9CiAKQEAgLTk1Miw2ICsxMDk4 LDEwIEBAIHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbihQR19GVU5DVElPTl9BUkdTKQogCQlpZiAo T2lkSXNWYWxpZChzdWJpZCkgJiYgd29ya2VyLnN1YmlkICE9IHN1YmlkKQogCQkJY29udGludWU7 CiAKKwkJLyogU2tpcCBpZiB0aGlzIGlzIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyICovCisJCWlm IChpc1BhcmFsbGVsQXBwbHlXb3JrZXIoJndvcmtlcikpCisJCQljb250aW51ZTsKKwogCQl3b3Jr ZXJfcGlkID0gd29ya2VyLnByb2MtPnBpZDsKIAogCQl2YWx1ZXNbMF0gPSBPYmplY3RJZEdldERh dHVtKHdvcmtlci5zdWJpZCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL21lc29uLmJ1aWxkIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9tZXNv bi5idWlsZAppbmRleCAxYjlmMDcyZWRjLi5iNzhiZmJhMTBjIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvbWVzb24uYnVpbGQKQEAgLTEsNiArMSw3IEBACiAjIENvcHlyaWdo dCAoYykgMjAyMiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKIAogYmFja2Vu ZF9zb3VyY2VzICs9IGZpbGVzKAorICAnYXBwbHlwYXJhbGxlbHdvcmtlci5jJywKICAgJ2RlY29k ZS5jJywKICAgJ2xhdW5jaGVyLmMnLAogICAnbG9naWNhbC5jJywKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL29yaWdpbi5jCmluZGV4IGYxMzRlNDQ4NzguLjhiMDgzNzg2NjUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYwpAQCAtMTA3NSwxMiArMTA3NSwy MCBAQCBSZXBsaWNhdGlvbk9yaWdpbkV4aXRDbGVhbnVwKGludCBjb2RlLCBEYXR1bSBhcmcpCiAg KiBhcnJheSBkb2Vzbid0IGhhdmUgdG8gYmUgc2VhcmNoZWQgd2hlbiBjYWxsaW5nCiAgKiByZXBs b3JpZ2luX3Nlc3Npb25fYWR2YW5jZSgpLgogICoKLSAqIE9idmlvdXNseSBvbmx5IG9uZSBzdWNo IGNhY2hlZCBvcmlnaW4gY2FuIGV4aXN0IHBlciBwcm9jZXNzIGFuZCB0aGUgY3VycmVudAotICog Y2FjaGVkIHZhbHVlIGNhbiBvbmx5IGJlIHNldCBhZ2FpbiBhZnRlciB0aGUgcHJldmlvdXMgdmFs dWUgaXMgdG9ybiBkb3duCi0gKiB3aXRoIHJlcGxvcmlnaW5fc2Vzc2lvbl9yZXNldCgpLgorICog Tm9ybWFsbHkgb25seSBvbmUgc3VjaCBjYWNoZWQgb3JpZ2luIGNhbiBleGlzdCBwZXIgcHJvY2Vz cyBzbyB0aGUgY2FjaGVkCisgKiB2YWx1ZSBjYW4gb25seSBiZSBzZXQgYWdhaW4gYWZ0ZXIgdGhl IHByZXZpb3VzIHZhbHVlIGlzIHRvcm4gZG93biB3aXRoCisgKiByZXBsb3JpZ2luX3Nlc3Npb25f cmVzZXQoKS4gRm9yIHRoaXMgbm9ybWFsIGNhc2UgcGFzcyBhY3F1aXJlZF9ieSA9IDAKKyAqICht ZWFuaW5nIHRoZSBzbG90IGlzIG5vdCBhbGxvd2VkIHRvIGJlIGFscmVhZHkgYWNxdWlyZWQgYnkg YW5vdGhlciBwcm9jZXNzKS4KKyAqCisgKiBIb3dldmVyLCBzb21ldGltZXMgbXVsdGlwbGUgcHJv Y2Vzc2VzIGNhbiBzYWZlbHkgcmUtdXNlIHRoZSBzYW1lIG9yaWdpbiBzbG90CisgKiAoZm9yIGV4 YW1wbGUsIG11bHRpcGxlIHBhcmFsbGVsIGFwcGx5IHByb2Nlc3NlcyBjYW4gc2FmZWx5IHVzZSB0 aGUgc2FtZQorICogb3JpZ2luLCBwcm92aWRlZCB0aGV5IG1haW50YWluIGNvbW1pdCBvcmRlciBi eSBhbGxvd2luZyBvbmx5IG9uZSBwcm9jZXNzIHRvCisgKiBjb21taXQgYXQgYSB0aW1lKS4gRm9y IHRoaXMgY2FzZSB0aGUgZmlyc3QgcHJvY2VzcyBtdXN0IHBhc3MgYWNxdWlyZWRfYnkgPQorICog MCwgYW5kIHRoZW4gdGhlIG90aGVyIHByb2Nlc3NlcyBzaGFyaW5nIHRoYXQgc2FtZSBvcmlnaW4g Y2FuIHBhc3MKKyAqIGFjcXVpcmVkX2J5ID0gUElEIG9mIHRoZSBmaXJzdCBwcm9jZXNzLgogICov CiB2b2lkCi1yZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVwT3JpZ2luSWQgbm9kZSkKK3JlcGxv cmlnaW5fc2Vzc2lvbl9zZXR1cChSZXBPcmlnaW5JZCBub2RlLCBpbnQgYWNxdWlyZWRfYnkpCiB7 CiAJc3RhdGljIGJvb2wgcmVnaXN0ZXJlZF9jbGVhbnVwOwogCWludAkJCWk7CkBAIC0xMTIyLDcg KzExMzAsNyBAQCByZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVwT3JpZ2luSWQgbm9kZSkKIAkJ aWYgKGN1cnN0YXRlLT5yb2lkZW50ICE9IG5vZGUpCiAJCQljb250aW51ZTsKIAotCQllbHNlIGlm IChjdXJzdGF0ZS0+YWNxdWlyZWRfYnkgIT0gMCkKKwkJZWxzZSBpZiAoY3Vyc3RhdGUtPmFjcXVp cmVkX2J5ICE9IDAgJiYgYWNxdWlyZWRfYnkgPT0gMCkKIAkJewogCQkJZXJlcG9ydChFUlJPUiwK IAkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfSU5fVVNFKSwKQEAgLTExNTMsNyArMTE2MSwx MSBAQCByZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVwT3JpZ2luSWQgbm9kZSkKIAogCUFzc2Vy dChzZXNzaW9uX3JlcGxpY2F0aW9uX3N0YXRlLT5yb2lkZW50ICE9IEludmFsaWRSZXBPcmlnaW5J ZCk7CiAKLQlzZXNzaW9uX3JlcGxpY2F0aW9uX3N0YXRlLT5hY3F1aXJlZF9ieSA9IE15UHJvY1Bp ZDsKKwlpZiAoYWNxdWlyZWRfYnkgPT0gMCkKKwkJc2Vzc2lvbl9yZXBsaWNhdGlvbl9zdGF0ZS0+ YWNxdWlyZWRfYnkgPSBNeVByb2NQaWQ7CisJZWxzZSBpZiAoc2Vzc2lvbl9yZXBsaWNhdGlvbl9z dGF0ZS0+YWNxdWlyZWRfYnkgIT0gYWNxdWlyZWRfYnkpCisJCWVsb2coRVJST1IsICJjb3VsZCBu b3QgZmluZCByZXBsaWNhdGlvbiBzdGF0ZSBzbG90IGZvciByZXBsaWNhdGlvbiBvcmlnaW4gd2l0 aCBPSUQgJXUgd2hpY2ggd2FzIGFjcXVpcmVkIGJ5ICVkIiwKKwkJCSBub2RlLCBhY3F1aXJlZF9i eSk7CiAKIAlMV0xvY2tSZWxlYXNlKFJlcGxpY2F0aW9uT3JpZ2luTG9jayk7CiAKQEAgLTEzMzcs NyArMTM0OSw3IEBAIHBnX3JlcGxpY2F0aW9uX29yaWdpbl9zZXNzaW9uX3NldHVwKFBHX0ZVTkNU SU9OX0FSR1MpCiAKIAluYW1lID0gdGV4dF90b19jc3RyaW5nKCh0ZXh0ICopIERhdHVtR2V0UG9p bnRlcihQR19HRVRBUkdfREFUVU0oMCkpKTsKIAlvcmlnaW4gPSByZXBsb3JpZ2luX2J5X25hbWUo bmFtZSwgZmFsc2UpOwotCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW4pOworCXJlcGxv cmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW4sIDApOwogCiAJcmVwbG9yaWdpbl9zZXNzaW9uX29y aWdpbiA9IG9yaWdpbjsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9wcm90by5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jCmlu ZGV4IGY1ZjJiYzI0ZDguLjcyM2JhNDY2OWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvcHJvdG8uYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3Byb3RvLmMKQEAgLTExNjQsMTAgKzExNjQsMTQgQEAgbG9naWNhbHJlcF9yZWFkX3N0cmVh bV9jb21taXQoU3RyaW5nSW5mbyBpbiwgTG9naWNhbFJlcENvbW1pdERhdGEgKmNvbW1pdF9kYXRh KQogLyoKICAqIFdyaXRlIFNUUkVBTSBBQk9SVCB0byB0aGUgb3V0cHV0IHN0cmVhbS4gTm90ZSB0 aGF0IHhpZCBhbmQgc3VieGlkIHdpbGwgYmUKICAqIHNhbWUgZm9yIHRoZSB0b3AtbGV2ZWwgdHJh bnNhY3Rpb24gYWJvcnQuCisgKgorICogSWYgd3JpdGVfYWJvcnRfaW5mbyBpcyB0cnVlLCBzZW5k IHRoZSBhYm9ydF9sc24gYW5kIGFib3J0X3RpbWUgZmllbGRzLAorICogb3RoZXJ3aXNlIGRvbid0 LgogICovCiB2b2lkCiBsb2dpY2FscmVwX3dyaXRlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIG91 dCwgVHJhbnNhY3Rpb25JZCB4aWQsCi0JCQkJCQkJICBUcmFuc2FjdGlvbklkIHN1YnhpZCkKKwkJ CQkJCQkgIFRyYW5zYWN0aW9uSWQgc3VieGlkLCBYTG9nUmVjUHRyIGFib3J0X2xzbiwKKwkJCQkJ CQkgIFRpbWVzdGFtcFR6IGFib3J0X3RpbWUsIGJvb2wgd3JpdGVfYWJvcnRfaW5mbykKIHsKIAlw cV9zZW5kYnl0ZShvdXQsIExPR0lDQUxfUkVQX01TR19TVFJFQU1fQUJPUlQpOwogCkBAIC0xMTc2 LDE5ICsxMTgwLDQwIEBAIGxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8g b3V0LCBUcmFuc2FjdGlvbklkIHhpZCwKIAkvKiB0cmFuc2FjdGlvbiBJRCAqLwogCXBxX3NlbmRp bnQzMihvdXQsIHhpZCk7CiAJcHFfc2VuZGludDMyKG91dCwgc3VieGlkKTsKKworCWlmICh3cml0 ZV9hYm9ydF9pbmZvKQorCXsKKwkJcHFfc2VuZGludDY0KG91dCwgYWJvcnRfbHNuKTsKKwkJcHFf c2VuZGludDY0KG91dCwgYWJvcnRfdGltZSk7CisJfQogfQogCiAvKgogICogUmVhZCBTVFJFQU0g QUJPUlQgZnJvbSB0aGUgb3V0cHV0IHN0cmVhbS4KKyAqCisgKiBJZiByZWFkX2Fib3J0X2luZm8g aXMgdHJ1ZSwgcmVhZCB0aGUgYWJvcnRfbHNuIGFuZCBhYm9ydF90aW1lIGZpZWxkcywKKyAqIG90 aGVyd2lzZSBkb24ndC4KICAqLwogdm9pZAotbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChT dHJpbmdJbmZvIGluLCBUcmFuc2FjdGlvbklkICp4aWQsCi0JCQkJCQkJIFRyYW5zYWN0aW9uSWQg KnN1YnhpZCkKK2xvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBpbiwKKwkJ CQkJCQkgTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YSAqYWJvcnRfZGF0YSwKKwkJCQkJCQkgYm9v bCByZWFkX2Fib3J0X2luZm8pCiB7Ci0JQXNzZXJ0KHhpZCAmJiBzdWJ4aWQpOworCUFzc2VydChh Ym9ydF9kYXRhKTsKKworCWFib3J0X2RhdGEtPnhpZCA9IHBxX2dldG1zZ2ludChpbiwgNCk7CisJ YWJvcnRfZGF0YS0+c3VieGlkID0gcHFfZ2V0bXNnaW50KGluLCA0KTsKIAotCSp4aWQgPSBwcV9n ZXRtc2dpbnQoaW4sIDQpOwotCSpzdWJ4aWQgPSBwcV9nZXRtc2dpbnQoaW4sIDQpOworCWlmIChy ZWFkX2Fib3J0X2luZm8pCisJeworCQlhYm9ydF9kYXRhLT5hYm9ydF9sc24gPSBwcV9nZXRtc2dp bnQ2NChpbik7CisJCWFib3J0X2RhdGEtPmFib3J0X3RpbWUgPSBwcV9nZXRtc2dpbnQ2NChpbik7 CisJfQorCWVsc2UKKwl7CisJCWFib3J0X2RhdGEtPmFib3J0X2xzbiA9IEludmFsaWRYTG9nUmVj UHRyOworCQlhYm9ydF9kYXRhLT5hYm9ydF90aW1lID0gMDsKKwl9CiB9CiAKIC8qCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCmluZGV4IGI1Njdi OGI1OWUuLjhkNWJiYWFkYjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvcmVvcmRlcmJ1ZmZlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvcmVvcmRlcmJ1ZmZlci5jCkBAIC0yODcwLDcgKzI4NzAsOCBAQCBSZW9yZGVyQnVmZmVyRmlu aXNoUHJlcGFyZWQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLAogICogZGlz ay4KICAqLwogdm9pZAotUmVvcmRlckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFu c2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCitSZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRl ckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbiwKKwkJCQkgICBU aW1lc3RhbXBUeiBhYm9ydF90aW1lKQogewogCVJlb3JkZXJCdWZmZXJUWE4gKnR4bjsKIApAQCAt Mjg4MSw2ICsyODgyLDggQEAgUmVvcmRlckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIgKnJiLCBU cmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCiAJaWYgKHR4biA9PSBOVUxMKQogCQly ZXR1cm47CiAKKwl0eG4tPnhhY3RfdGltZS5hYm9ydF90aW1lID0gYWJvcnRfdGltZTsKKwogCS8q IEZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbnMgbm90aWZ5IHRoZSByZW1vdGUgbm9kZSBhYm91dCB0 aGUgYWJvcnQuICovCiAJaWYgKHJidHhuX2lzX3N0cmVhbWVkKHR4bikpCiAJewpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKaW5kZXggOTRlODEzYWM1My4uZWYw ZmUxM2MxNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJs ZXN5bmMuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5j CkBAIC0xNCw3ICsxNCw3IEBACiAgKgkgIFRoZSBpbml0aWFsIGRhdGEgc3luY2hyb25pemF0aW9u IGlzIGRvbmUgc2VwYXJhdGVseSBmb3IgZWFjaCB0YWJsZSwKICAqCSAgaW4gYSBzZXBhcmF0ZSBh cHBseSB3b3JrZXIgdGhhdCBvbmx5IGZldGNoZXMgdGhlIGluaXRpYWwgc25hcHNob3QgZGF0YQog ICoJICBmcm9tIHRoZSBwdWJsaXNoZXIgYW5kIHRoZW4gc3luY2hyb25pemVzIHRoZSBwb3NpdGlv biBpbiB0aGUgc3RyZWFtIHdpdGgKLSAqCSAgdGhlIG1haW4gYXBwbHkgd29ya2VyLgorICoJICB0 aGUgbGVhZGVyIGFwcGx5IHdvcmtlci4KICAqCiAgKgkgIFRoZXJlIGFyZSBzZXZlcmFsIHJlYXNv bnMgZm9yIGRvaW5nIHRoZSBzeW5jaHJvbml6YXRpb24gdGhpcyB3YXk6CiAgKgkgICAtIEl0IGFs bG93cyB1cyB0byBwYXJhbGxlbGl6ZSB0aGUgaW5pdGlhbCBkYXRhIHN5bmNocm9uaXphdGlvbgpA QCAtMTUzLDcgKzE1Myw3IEBAIGZpbmlzaF9zeW5jX3dvcmtlcih2b2lkKQogCQkJCQlnZXRfcmVs X25hbWUoTXlMb2dpY2FsUmVwV29ya2VyLT5yZWxpZCkpKSk7CiAJQ29tbWl0VHJhbnNhY3Rpb25D b21tYW5kKCk7CiAKLQkvKiBGaW5kIHRoZSBtYWluIGFwcGx5IHdvcmtlciBhbmQgc2lnbmFsIGl0 LiAqLworCS8qIEZpbmQgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIHNpZ25hbCBpdC4gKi8K IAlsb2dpY2FscmVwX3dvcmtlcl93YWtldXAoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgSW52 YWxpZE9pZCk7CiAKIAkvKiBTdG9wIGdyYWNlZnVsbHkgKi8KQEAgLTYwOSw3ICs2MDksOCBAQCBw cm9jZXNzX3N5bmNpbmdfdGFibGVzX2Zvcl9hcHBseShYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKQog CQkJCQkJCQkJCQkJIE15U3Vic2NyaXB0aW9uLT5vaWQsCiAJCQkJCQkJCQkJCQkgTXlTdWJzY3Jp cHRpb24tPm5hbWUsCiAJCQkJCQkJCQkJCQkgTXlMb2dpY2FsUmVwV29ya2VyLT51c2VyaWQsCi0J CQkJCQkJCQkJCQkgcnN0YXRlLT5yZWxpZCk7CisJCQkJCQkJCQkJCQkgcnN0YXRlLT5yZWxpZCwK KwkJCQkJCQkJCQkJCSBEU01fSEFORExFX0lOVkFMSUQpOwogCQkJCQkJaGVudHJ5LT5sYXN0X3N0 YXJ0X3RpbWUgPSBub3c7CiAJCQkJCX0KIAkJCQl9CkBAIC02MzAsNiArNjMxLDE0IEBAIHByb2Nl c3Nfc3luY2luZ190YWJsZXNfZm9yX2FwcGx5KFhMb2dSZWNQdHIgY3VycmVudF9sc24pCiB2b2lk CiBwcm9jZXNzX3N5bmNpbmdfdGFibGVzKFhMb2dSZWNQdHIgY3VycmVudF9sc24pCiB7CisJLyoK KwkgKiBTa2lwIGZvciBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGJlY2F1c2UgdGhleSBvbmx5IG9w ZXJhdGUgb24gdGFibGVzCisJICogdGhhdCBhcmUgaW4gYSBSRUFEWSBzdGF0ZS4gU2VlIHBhX2Nh bl9zdGFydCgpIGFuZAorCSAqIHNob3VsZF9hcHBseV9jaGFuZ2VzX2Zvcl9yZWwoKS4KKwkgKi8K KwlpZiAoYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCisJCXJldHVybjsKKwogCWlmIChhbV90 YWJsZXN5bmNfd29ya2VyKCkpCiAJCXByb2Nlc3Nfc3luY2luZ190YWJsZXNfZm9yX3N5bmMoY3Vy cmVudF9sc24pOwogCWVsc2UKQEAgLTEyNDcsNyArMTI1Niw3IEBAIExvZ2ljYWxSZXBTeW5jVGFi bGVTdGFydChYTG9nUmVjUHRyICpvcmlnaW5fc3RhcnRwb3MpCiAKIAkvKgogCSAqIEhlcmUgd2Ug dXNlIHRoZSBzbG90IG5hbWUgaW5zdGVhZCBvZiB0aGUgc3Vic2NyaXB0aW9uIG5hbWUgYXMgdGhl Ci0JICogYXBwbGljYXRpb25fbmFtZSwgc28gdGhhdCBpdCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUg bWFpbiBhcHBseSB3b3JrZXIsCisJICogYXBwbGljYXRpb25fbmFtZSwgc28gdGhhdCBpdCBpcyBk aWZmZXJlbnQgZnJvbSB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciwKIAkgKiBzbyB0aGF0IHN5bmNo cm9ub3VzIHJlcGxpY2F0aW9uIGNhbiBkaXN0aW5ndWlzaCB0aGVtLgogCSAqLwogCUxvZ1JlcFdv cmtlcldhbFJjdkNvbm4gPQpAQCAtMTI5NSw3ICsxMzA0LDcgQEAgTG9naWNhbFJlcFN5bmNUYWJs ZVN0YXJ0KFhMb2dSZWNQdHIgKm9yaWdpbl9zdGFydHBvcykKIAkJICogdGltZSB0aGlzIHRhYmxl c3luYyB3YXMgbGF1bmNoZWQuCiAJCSAqLwogCQlvcmlnaW5pZCA9IHJlcGxvcmlnaW5fYnlfbmFt ZShvcmlnaW5uYW1lLCBmYWxzZSk7Ci0JCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5p ZCk7CisJCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCwgMCk7CiAJCXJlcGxvcmln aW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmlnaW5pZDsKIAkJKm9yaWdpbl9zdGFydHBvcyA9IHJlcGxv cmlnaW5fc2Vzc2lvbl9nZXRfcHJvZ3Jlc3MoZmFsc2UpOwogCkBAIC0xNDA2LDcgKzE0MTUsNyBA QCBMb2dpY2FsUmVwU3luY1RhYmxlU3RhcnQoWExvZ1JlY1B0ciAqb3JpZ2luX3N0YXJ0cG9zKQog CQkJCQkJICAgdHJ1ZSAvKiBnbyBiYWNrd2FyZCAqLyAsIHRydWUgLyogV0FMIGxvZyAqLyApOwog CQlVbmxvY2tSZWxhdGlvbk9pZChSZXBsaWNhdGlvbk9yaWdpblJlbGF0aW9uSWQsIFJvd0V4Y2x1 c2l2ZUxvY2spOwogCi0JCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCk7CisJCXJl cGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCwgMCk7CiAJCXJlcGxvcmlnaW5fc2Vzc2lv bl9vcmlnaW4gPSBvcmlnaW5pZDsKIAl9CiAJZWxzZQpAQCAtMTQ2MSw4ICsxNDcwLDggQEAgY29w eV90YWJsZV9kb25lOgogCVNwaW5Mb2NrUmVsZWFzZSgmTXlMb2dpY2FsUmVwV29ya2VyLT5yZWxt dXRleCk7CiAKIAkvKgotCSAqIEZpbmFsbHksIHdhaXQgdW50aWwgdGhlIG1haW4gYXBwbHkgd29y a2VyIHRlbGxzIHVzIHRvIGNhdGNoIHVwIGFuZCB0aGVuCi0JICogcmV0dXJuIHRvIGxldCBMb2dp Y2FsUmVwQXBwbHlMb29wIGRvIGl0LgorCSAqIEZpbmFsbHksIHdhaXQgdW50aWwgdGhlIGxlYWRl ciBhcHBseSB3b3JrZXIgdGVsbHMgdXMgdG8gY2F0Y2ggdXAgYW5kCisJICogdGhlbiByZXR1cm4g dG8gbGV0IExvZ2ljYWxSZXBBcHBseUxvb3AgZG8gaXQuCiAJICovCiAJd2FpdF9mb3Jfd29ya2Vy X3N0YXRlX2NoYW5nZShTVUJSRUxfU1RBVEVfQ0FUQ0hVUCk7CiAJcmV0dXJuIHNsb3RuYW1lOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggOTY3NzJlNGQ3My4u ZjllZmMxOGVmNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93 b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBA IC0yMiw4ICsyMiwxMiBAQAogICogU1RSRUFNRUQgVFJBTlNBQ1RJT05TCiAgKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0KICAqIFN0cmVhbWVkIHRyYW5zYWN0aW9ucyAobGFyZ2UgdHJhbnNhY3Rpb25z IGV4Y2VlZGluZyBhIG1lbW9yeSBsaW1pdCBvbiB0aGUKLSAqIHVwc3RyZWFtKSBhcmUgbm90IGFw cGxpZWQgaW1tZWRpYXRlbHksIGJ1dCBpbnN0ZWFkLCB0aGUgZGF0YSBpcyB3cml0dGVuCi0gKiB0 byB0ZW1wb3JhcnkgZmlsZXMgYW5kIHRoZW4gYXBwbGllZCBhdCBvbmNlIHdoZW4gdGhlIGZpbmFs IGNvbW1pdCBhcnJpdmVzLgorICogdXBzdHJlYW0pIGFyZSBhcHBsaWVkIHVzaW5nIG9uZSBvZiB0 d28gYXBwcm9hY2hlczoKKyAqCisgKiAxKSBXcml0ZSB0byB0ZW1wb3JhcnkgZmlsZXMgYW5kIGFw cGx5IHdoZW4gdGhlIGZpbmFsIGNvbW1pdCBhcnJpdmVzCisgKgorICogVGhpcyBhcHByb2FjaCBp cyB1c2VkIHdoZW4gdGhlIHVzZXIgaGFzIHNldCB0aGUgc3Vic2NyaXB0aW9uJ3Mgc3RyZWFtaW5n CisgKiBvcHRpb24gYXMgb24uCiAgKgogICogVW5saWtlIHRoZSByZWd1bGFyIChub24tc3RyZWFt ZWQpIGNhc2UsIGhhbmRsaW5nIHN0cmVhbWVkIHRyYW5zYWN0aW9ucyBoYXMKICAqIHRvIGhhbmRs ZSBhYm9ydHMgb2YgYm90aCB0aGUgdG9wbGV2ZWwgdHJhbnNhY3Rpb24gYW5kIHN1YnRyYW5zYWN0 aW9ucy4gVGhpcwpAQCAtNTAsNiArNTQsMTIgQEAKICAqIHRoZSBmaWxlIHdlIGRlc2lyZWQgYWNy b3NzIG11bHRpcGxlIHN0cmVhbS1vcGVuIGNhbGxzIGZvciB0aGUgc2FtZQogICogdHJhbnNhY3Rp b24uCiAgKgorICogMikgUGFyYWxsZWwgYXBwbHkgd29ya2Vycy4KKyAqCisgKiBUaGlzIGFwcHJv YWNoIGlzIHVzZWQgd2hlbiB0aGUgdXNlciBoYXMgc2V0IHRoZSBzdWJzY3JpcHRpb24ncyBzdHJl YW1pbmcKKyAqIG9wdGlvbiBhcyBwYXJhbGxlbC4gU2VlIGxvZ2ljYWwvYXBwbHlwYXJhbGxlbHdv cmtlci5jIGZvciBpbmZvcm1hdGlvbiBhYm91dAorICogdGhpcyBhcHByb2FjaC4KKyAqCiAgKiBU V09fUEhBU0UgVFJBTlNBQ1RJT05TCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBUd28g cGhhc2UgdHJhbnNhY3Rpb25zIGFyZSByZXBsYXllZCBhdCBwcmVwYXJlIGFuZCB0aGVuIGNvbW1p dHRlZCBvcgpAQCAtMTUwLDYgKzE2MCw3IEBACiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY1BhcnRp dGlvbi5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5oIgogI2luY2x1ZGUg ImZ1bmNhcGkuaCIKKyNpbmNsdWRlICJsaWJwcS9saWJwcS5oIgogI2luY2x1ZGUgImxpYnBxL3Bx Zm9ybWF0LmgiCiAjaW5jbHVkZSAibGlicHEvcHFzaWduYWwuaCIKICNpbmNsdWRlICJtYi9wZ193 Y2hhci5oIgpAQCAtMjMzLDcgKzI0NCw1MiBAQCB0eXBlZGVmIHN0cnVjdCBBcHBseUVycm9yQ2Fs bGJhY2tBcmcKIAljaGFyCSAgICpvcmlnaW5fbmFtZTsKIH0gQXBwbHlFcnJvckNhbGxiYWNrQXJn OwogCi1zdGF0aWMgQXBwbHlFcnJvckNhbGxiYWNrQXJnIGFwcGx5X2Vycm9yX2NhbGxiYWNrX2Fy ZyA9CisvKgorICogV2hhdCBhY3Rpb24gdG8gdGFrZSBmb3IgdGhlIHRyYW5zYWN0aW9uLgorICoK KyAqIFRSQU5TX0xFQURFUl9BUFBMWToKKyAqIFRoaXMgYWN0aW9uIG1lYW5zIHRoYXQgd2UgYXJl IGluIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBjaGFuZ2VzIG9mIHRoZQorICogdHJhbnNh Y3Rpb24gYXJlIGFwcGxpZWQgZGlyZWN0bHkgYnkgdGhlIHdvcmtlci4KKyAqCisgKiBUUkFOU19M RUFERVJfU0VSSUFMSVpFOgorICogVGhpcyBhY3Rpb24gbWVhbnMgdGhhdCB3ZSBhcmUgaW4gdGhl IGxlYWRlciBhcHBseSB3b3JrZXIgb3IgdGFibGUgc3luYworICogd29ya2VyLiBDaGFuZ2VzIGFy ZSB3cml0dGVuIHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQgdGhlbiBhcHBsaWVkIHdoZW4gdGhlCisg KiBmaW5hbCBjb21taXQgYXJyaXZlcy4KKyAqCisgKiBUUkFOU19MRUFERVJfU0VORF9UT19QQVJB TExFTDoKKyAqIFRoaXMgYWN0aW9uIG1lYW5zIHRoYXQgd2UgYXJlIGluIHRoZSBsZWFkZXIgYXBw bHkgd29ya2VyIGFuZCBuZWVkIHRvIHNlbmQKKyAqIHRoZSBjaGFuZ2VzIHRvIHRoZSBwYXJhbGxl bCBhcHBseSB3b3JrZXIuCisgKgorICogVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VSSUFMSVpFOgor ICogVGhpcyBhY3Rpb24gbWVhbnMgdGhhdCB3ZSBhcmUgaW4gdGhlIGxlYWRlciBhcHBseSB3b3Jr ZXIgYW5kIGhhdmUgc2VudCBzb21lCisgKiBjaGFuZ2VzIGRpcmVjdGx5IHRvIHRoZSBwYXJhbGxl bCBhcHBseSB3b3JrZXIgYW5kIHRoZSByZW1haW5pbmcgY2hhbmdlcyBhcmUKKyAqIHNlcmlhbGl6 ZWQgdG8gYSBmaWxlLCBkdWUgdG8gdGltZW91dCB3aGlsZSBzZW5kaW5nIGRhdGEuIFRoZSBwYXJh bGxlbCBhcHBseQorICogd29ya2VyIHdpbGwgYXBwbHkgdGhlc2Ugc2VyaWFsaXplZCBjaGFuZ2Vz IHdoZW4gdGhlIGZpbmFsIGNvbW1pdCBhcnJpdmVzLgorICoKKyAqIFdlIGNhbid0IHVzZSBUUkFO U19MRUFERVJfU0VSSUFMSVpFIGZvciB0aGlzIGNhc2UgYmVjYXVzZSwgaW4gYWRkaXRpb24gdG8K KyAqIHNlcmlhbGl6aW5nIGNoYW5nZXMsIHRoZSBsZWFkZXIgd29ya2VyIGFsc28gbmVlZHMgdG8g c2VyaWFsaXplIHRoZQorICogU1RSRUFNX1hYWCBtZXNzYWdlIHRvIGEgZmlsZSwgYW5kIHdhaXQg Zm9yIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdG8KKyAqIGZpbmlzaCB0aGUgdHJhbnNhY3Rp b24gd2hlbiBwcm9jZXNzaW5nIHRoZSB0cmFuc2FjdGlvbiBmaW5pc2ggY29tbWFuZC4gU28KKyAq IHRoaXMgbmV3IGFjdGlvbiB3YXMgaW50cm9kdWNlZCB0byBrZWVwIHRoZSBjb2RlIGFuZCBsb2dp YyBjbGVhci4KKyAqCisgKiBUUkFOU19QQVJBTExFTF9BUFBMWToKKyAqIFRoaXMgYWN0aW9uIG1l YW5zIHRoYXQgd2UgYXJlIGluIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgYW5kIGNoYW5nZXMg b2YKKyAqIHRoZSB0cmFuc2FjdGlvbiBhcmUgYXBwbGllZCBkaXJlY3RseSBieSB0aGUgd29ya2Vy LgorICovCit0eXBlZGVmIGVudW0KK3sKKwkvKiBUaGUgYWN0aW9uIGZvciBub24tc3RyZWFtaW5n IHRyYW5zYWN0aW9ucy4gKi8KKwlUUkFOU19MRUFERVJfQVBQTFksCisKKwkvKiBBY3Rpb25zIGZv ciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zLiAqLworCVRSQU5TX0xFQURFUl9TRVJJQUxJWkUsCisJ VFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUwsCisJVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VS SUFMSVpFLAorCVRSQU5TX1BBUkFMTEVMX0FQUExZCit9IFRyYW5zQXBwbHlBY3Rpb247CisKKy8q IGVycmNvbnRleHQgdHJhY2tlciAqLworQXBwbHlFcnJvckNhbGxiYWNrQXJnIGFwcGx5X2Vycm9y X2NhbGxiYWNrX2FyZyA9CiB7CiAJLmNvbW1hbmQgPSAwLAogCS5yZWwgPSBOVUxMLApAQCAtMjQz LDcgKzI5OSw5IEBAIHN0YXRpYyBBcHBseUVycm9yQ2FsbGJhY2tBcmcgYXBwbHlfZXJyb3JfY2Fs bGJhY2tfYXJnID0KIAkub3JpZ2luX25hbWUgPSBOVUxMLAogfTsKIAotc3RhdGljIE1lbW9yeUNv bnRleHQgQXBwbHlNZXNzYWdlQ29udGV4dCA9IE5VTEw7CitFcnJvckNvbnRleHRDYWxsYmFjayAq YXBwbHlfZXJyb3JfY29udGV4dF9zdGFjayA9IE5VTEw7CisKK01lbW9yeUNvbnRleHQgQXBwbHlN ZXNzYWdlQ29udGV4dCA9IE5VTEw7CiBNZW1vcnlDb250ZXh0IEFwcGx5Q29udGV4dCA9IE5VTEw7 CiAKIC8qIHBlciBzdHJlYW0gY29udGV4dCBmb3Igc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyAqLwpA QCAtMjYyLDE3ICszMjAsMjYgQEAgc3RhdGljIGJvb2wgaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24g PSBmYWxzZTsKIAogc3RhdGljIFRyYW5zYWN0aW9uSWQgc3RyZWFtX3hpZCA9IEludmFsaWRUcmFu c2FjdGlvbklkOwogCisvKgorICogVGhlIG51bWJlciBvZiBjaGFuZ2VzIGFwcGxpZWQgYnkgcGFy YWxsZWwgYXBwbHkgd29ya2VyIGR1cmluZyBvbmUgc3RyZWFtaW5nCisgKiBibG9jay4KKyAqLwor c3RhdGljIHVpbnQzMiBwYXJhbGxlbF9zdHJlYW1fbmNoYW5nZXMgPSAwOworCiAvKgogICogV2Ug ZW5hYmxlIHNraXBwaW5nIGFsbCBkYXRhIG1vZGlmaWNhdGlvbiBjaGFuZ2VzIChJTlNFUlQsIFVQ REFURSwgZXRjLikgZm9yCiAgKiB0aGUgc3Vic2NyaXB0aW9uIGlmIHRoZSByZW1vdGUgdHJhbnNh Y3Rpb24ncyBmaW5pc2ggTFNOIG1hdGNoZXMgdGhlIHN1YnNraXBsc24uCiAgKiBPbmNlIHdlIHN0 YXJ0IHNraXBwaW5nIGNoYW5nZXMsIHdlIGRvbid0IHN0b3AgaXQgdW50aWwgd2Ugc2tpcCBhbGwg Y2hhbmdlcyBvZgogICogdGhlIHRyYW5zYWN0aW9uIGV2ZW4gaWYgcGdfc3Vic2NyaXB0aW9uIGlz IHVwZGF0ZWQgYW5kIE15U3Vic2NyaXB0aW9uLT5za2lwbHNuCi0gKiBnZXRzIGNoYW5nZWQgb3Ig cmVzZXQgZHVyaW5nIHRoYXQuIEFsc28sIGluIHN0cmVhbWluZyB0cmFuc2FjdGlvbiBjYXNlcywg d2UKLSAqIGRvbid0IHNraXAgcmVjZWl2aW5nIGFuZCBzcG9vbGluZyB0aGUgY2hhbmdlcyBzaW5j ZSB3ZSBkZWNpZGUgd2hldGhlciBvciBub3QKKyAqIGdldHMgY2hhbmdlZCBvciByZXNldCBkdXJp bmcgdGhhdC4gQWxzbywgaW4gc3RyZWFtaW5nIHRyYW5zYWN0aW9uIGNhc2VzIChzdHJlYW1pbmcg PSBvbiksCisgKiB3ZSBkb24ndCBza2lwIHJlY2VpdmluZyBhbmQgc3Bvb2xpbmcgdGhlIGNoYW5n ZXMgc2luY2Ugd2UgZGVjaWRlIHdoZXRoZXIgb3Igbm90CiAgKiB0byBza2lwIGFwcGx5aW5nIHRo ZSBjaGFuZ2VzIHdoZW4gc3RhcnRpbmcgdG8gYXBwbHkgY2hhbmdlcy4gVGhlIHN1YnNraXBsc24g aXMKICAqIGNsZWFyZWQgYWZ0ZXIgc3VjY2Vzc2Z1bGx5IHNraXBwaW5nIHRoZSB0cmFuc2FjdGlv biBvciBhcHBseWluZyBub24tZW1wdHkKICAqIHRyYW5zYWN0aW9uLiBUaGUgbGF0dGVyIHByZXZl bnRzIHRoZSBtaXN0YWtlbmx5IHNwZWNpZmllZCBzdWJza2lwbHNuIGZyb20KLSAqIGJlaW5nIGxl ZnQuCisgKiBiZWluZyBsZWZ0LiBOb3RlIHRoYXQgd2UgY2Fubm90IHNraXAgdGhlIHN0cmVhbWlu ZyB0cmFuc2FjdGlvbnMgd2hlbiB1c2luZworICogcGFyYWxsZWwgYXBwbHkgd29ya2VycyBiZWNh dXNlIHdlIGNhbm5vdCBnZXQgdGhlIGZpbmlzaCBMU04gYmVmb3JlIGFwcGx5aW5nCisgKiB0aGUg Y2hhbmdlcy4gU28sIHdlIGRvbid0IHN0YXJ0IHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aGVuIGZp bmlzaCBMU04gaXMgc2V0CisgKiBieSB0aGUgdXNlci4KICAqLwogc3RhdGljIFhMb2dSZWNQdHIg c2tpcF94YWN0X2ZpbmlzaF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKICNkZWZpbmUgaXNfc2tp cHBpbmdfY2hhbmdlcygpICh1bmxpa2VseSghWExvZ1JlY1B0cklzSW52YWxpZChza2lwX3hhY3Rf ZmluaXNoX2xzbikpKQpAQCAtMzEyLDIzICszNzksMTYgQEAgc3RhdGljIGlubGluZSB2b2lkIGNs ZWFudXBfc3VieGFjdF9pbmZvKHZvaWQpOwogLyoKICAqIFNlcmlhbGl6ZSBhbmQgZGVzZXJpYWxp emUgY2hhbmdlcyBmb3IgYSB0b3BsZXZlbCB0cmFuc2FjdGlvbi4KICAqLwotc3RhdGljIHZvaWQg c3RyZWFtX2NsZWFudXBfZmlsZXMoT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCk7CiBzdGF0 aWMgdm9pZCBzdHJlYW1fb3Blbl9maWxlKE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQsCiAJ CQkJCQkJIGJvb2wgZmlyc3Rfc2VnbWVudCk7CiBzdGF0aWMgdm9pZCBzdHJlYW1fd3JpdGVfY2hh bmdlKGNoYXIgYWN0aW9uLCBTdHJpbmdJbmZvIHMpOworc3RhdGljIHZvaWQgc3RyZWFtX29wZW5f YW5kX3dyaXRlX2NoYW5nZShUcmFuc2FjdGlvbklkIHhpZCwgY2hhciBhY3Rpb24sIFN0cmluZ0lu Zm8gcyk7CiBzdGF0aWMgdm9pZCBzdHJlYW1fY2xvc2VfZmlsZSh2b2lkKTsKIAogc3RhdGljIHZv aWQgc2VuZF9mZWVkYmFjayhYTG9nUmVjUHRyIHJlY3Zwb3MsIGJvb2wgZm9yY2UsIGJvb2wgcmVx dWVzdFJlcGx5KTsKIAotc3RhdGljIHZvaWQgc3RvcmVfZmx1c2hfcG9zaXRpb24oWExvZ1JlY1B0 ciByZW1vdGVfbHNuKTsKLQotc3RhdGljIHZvaWQgbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2 b2lkKTsKLQogc3RhdGljIHZvaWQgRGlzYWJsZVN1YnNjcmlwdGlvbkFuZEV4aXQodm9pZCk7CiAK LS8qIHByb3RvdHlwZSBuZWVkZWQgYmVjYXVzZSBvZiBzdHJlYW1fY29tbWl0ICovCi1zdGF0aWMg dm9pZCBhcHBseV9kaXNwYXRjaChTdHJpbmdJbmZvIHMpOwotCiBzdGF0aWMgdm9pZCBhcHBseV9o YW5kbGVfY29tbWl0X2ludGVybmFsKExvZ2ljYWxSZXBDb21taXREYXRhICpjb21taXRfZGF0YSk7 CiBzdGF0aWMgdm9pZCBhcHBseV9oYW5kbGVfaW5zZXJ0X2ludGVybmFsKEFwcGx5RXhlY3V0aW9u RGF0YSAqZWRhdGEsCiAJCQkJCQkJCQkJIFJlc3VsdFJlbEluZm8gKnJlbGluZm8sCkBAIC0zNTIs MTkgKzQxMiwzMiBAQCBzdGF0aWMgdm9pZCBhcHBseV9oYW5kbGVfdHVwbGVfcm91dGluZyhBcHBs eUV4ZWN1dGlvbkRhdGEgKmVkYXRhLAogLyogQ29tcHV0ZSBHSUQgZm9yIHR3b19waGFzZSB0cmFu c2FjdGlvbnMgKi8KIHN0YXRpYyB2b2lkIFR3b1BoYXNlVHJhbnNhY3Rpb25HaWQoT2lkIHN1Ymlk LCBUcmFuc2FjdGlvbklkIHhpZCwgY2hhciAqZ2lkLCBpbnQgc3pnaWQpOwogCi0vKiBDb21tb24g c3RyZWFtaW5nIGZ1bmN0aW9uIHRvIGFwcGx5IGFsbCB0aGUgc3Bvb2xlZCBtZXNzYWdlcyAqLwot c3RhdGljIHZvaWQgYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhUcmFuc2FjdGlvbklkIHhpZCwgWExv Z1JlY1B0ciBsc24pOwotCiAvKiBGdW5jdGlvbnMgZm9yIHNraXBwaW5nIGNoYW5nZXMgKi8KIHN0 YXRpYyB2b2lkIG1heWJlX3N0YXJ0X3NraXBwaW5nX2NoYW5nZXMoWExvZ1JlY1B0ciBmaW5pc2hf bHNuKTsKIHN0YXRpYyB2b2lkIHN0b3Bfc2tpcHBpbmdfY2hhbmdlcyh2b2lkKTsKIHN0YXRpYyB2 b2lkIGNsZWFyX3N1YnNjcmlwdGlvbl9za2lwX2xzbihYTG9nUmVjUHRyIGZpbmlzaF9sc24pOwog CiAvKiBGdW5jdGlvbnMgZm9yIGFwcGx5IGVycm9yIGNhbGxiYWNrICovCi1zdGF0aWMgdm9pZCBh cHBseV9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcpOwogc3RhdGljIGlubGluZSB2b2lkIHNldF9h cHBseV9lcnJvcl9jb250ZXh0X3hhY3QoVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNu KTsKIHN0YXRpYyBpbmxpbmUgdm9pZCByZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8odm9p ZCk7CiAKK3N0YXRpYyBUcmFuc0FwcGx5QWN0aW9uIGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rp b24oVHJhbnNhY3Rpb25JZCB4aWQsCisJCQkJCQkJCQkJCQkJIFBhcmFsbGVsQXBwbHlXb3JrZXJJ bmZvICoqd2luZm8pOworCisvKgorICogUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBsb2dpY2FsIHJl cGxpY2F0aW9uIHdvcmtlci4KKyAqLworc3RhdGljIGNvbnN0IGNoYXIgKgorZ2V0X3dvcmtlcl9u YW1lKHZvaWQpCit7CisJaWYgKGFtX3RhYmxlc3luY193b3JrZXIoKSkKKwkJcmV0dXJuIF8oImxv Z2ljYWwgcmVwbGljYXRpb24gdGFibGUgc3luY2hyb25pemF0aW9uIHdvcmtlciIpOworCWVsc2Ug aWYgKGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCQlyZXR1cm4gXygibG9naWNhbCByZXBs aWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIiKTsKKwllbHNlCisJCXJldHVybiBfKCJsb2dp Y2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdvcmtlciIpOworfQorCiAvKgogICogRm9ybSB0aGUgb3Jp Z2luIG5hbWUgZm9yIHRoZSBzdWJzY3JpcHRpb24uCiAgKgpAQCAtMzk0LDE5ICs0NjcsNDMgQEAg UmVwbGljYXRpb25PcmlnaW5OYW1lRm9yTG9naWNhbFJlcChPaWQgc3Vib2lkLCBPaWQgcmVsaWQs CiAgKgogICogVGhpcyBpcyBtYWlubHkgbmVlZGVkIGZvciBpbml0aWFsIHJlbGF0aW9uIGRhdGEg c3luYyBhcyB0aGF0IHJ1bnMgaW4KICAqIHNlcGFyYXRlIHdvcmtlciBwcm9jZXNzIHJ1bm5pbmcg aW4gcGFyYWxsZWwgYW5kIHdlIG5lZWQgc29tZSB3YXkgdG8gc2tpcAotICogY2hhbmdlcyBjb21p bmcgdG8gdGhlIG1haW4gYXBwbHkgd29ya2VyIGR1cmluZyB0aGUgc3luYyBvZiBhIHRhYmxlLgor ICogY2hhbmdlcyBjb21pbmcgdG8gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgZHVyaW5nIHRoZSBz eW5jIG9mIGEgdGFibGUuCiAgKgogICogTm90ZSB3ZSBuZWVkIHRvIGRvIHNtYWxsZXIgb3IgZXF1 YWxzIGNvbXBhcmlzb24gZm9yIFNZTkNET05FIHN0YXRlIGJlY2F1c2UKICAqIGl0IG1pZ2h0IGhv bGQgcG9zaXRpb24gb2YgZW5kIG9mIGluaXRpYWwgc2xvdCBjb25zaXN0ZW50IHBvaW50IFdBTAog ICogcmVjb3JkICsgMSAoaWUgc3RhcnQgb2YgbmV4dCByZWNvcmQpIGFuZCBuZXh0IHJlY29yZCBj YW4gYmUgQ09NTUlUIG9mCiAgKiB0cmFuc2FjdGlvbiB3ZSBhcmUgbm93IHByb2Nlc3NpbmcgKHdo aWNoIGlzIHdoYXQgd2Ugc2V0IHJlbW90ZV9maW5hbF9sc24KICAqIHRvIGluIGFwcGx5X2hhbmRs ZV9iZWdpbikuCisgKgorICogTm90ZSB0aGF0IGZvciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIHRo YXQgYXJlIGJlaW5nIGFwcGxpZWQgaW4gdGhlIHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXIsIHdl IGRpc2FsbG93IGFwcGx5aW5nIGNoYW5nZXMgaWYgdGhlIHRhcmdldCB0YWJsZSBpbiB0aGUKKyAq IHN1YnNjcmlwdGlvbiBpcyBub3QgaW4gdGhlIFJFQURZIHN0YXRlLCBiZWNhdXNlIHdlIGNhbm5v dCBkZWNpZGUgd2hldGhlciB0bworICogYXBwbHkgdGhlIGNoYW5nZSBhcyB3ZSB3b24ndCBrbm93 IHJlbW90ZV9maW5hbF9sc24gYnkgdGhhdCB0aW1lLgorICoKKyAqIFdlIGFscmVhZHkgY2hlY2tl ZCB0aGlzIGluIHBhX2Nhbl9zdGFydCgpIGJlZm9yZSBhc3NpZ25pbmcgdGhlCisgKiBzdHJlYW1p bmcgdHJhbnNhY3Rpb24gdG8gdGhlIHBhcmFsbGVsIHdvcmtlciwgYnV0IGl0IGFsc28gbmVlZHMg dG8gYmUKKyAqIGNoZWNrZWQgaGVyZSBiZWNhdXNlIGlmIHRoZSB1c2VyIGV4ZWN1dGVzIEFMVEVS IFNVQlNDUklQVElPTiAuLi4gUkVGUkVTSAorICogUFVCTElDQVRJT04gaW4gcGFyYWxsZWwsIHRo ZSBuZXcgdGFibGUgY2FuIGJlIGFkZGVkIHRvIHBnX3N1YnNjcmlwdGlvbl9yZWwKKyAqIHdoaWxl IGFwcGx5aW5nIHRoaXMgdHJhbnNhY3Rpb24uCiAgKi8KIHN0YXRpYyBib29sCiBzaG91bGRfYXBw bHlfY2hhbmdlc19mb3JfcmVsKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsKQogewogCWlmIChh bV90YWJsZXN5bmNfd29ya2VyKCkpCiAJCXJldHVybiBNeUxvZ2ljYWxSZXBXb3JrZXItPnJlbGlk ID09IHJlbC0+bG9jYWxyZWxvaWQ7CisJZWxzZSBpZiAoYW1fcGFyYWxsZWxfYXBwbHlfd29ya2Vy KCkpCisJeworCQkvKiBXZSBkb24ndCBzeW5jaHJvbml6ZSByZWwncyB0aGF0IGFyZSBpbiB1bmtu b3duIHN0YXRlLiAqLworCQlpZiAocmVsLT5zdGF0ZSAhPSBTVUJSRUxfU1RBVEVfUkVBRFkgJiYK KwkJCXJlbC0+c3RhdGUgIT0gU1VCUkVMX1NUQVRFX1VOS05PV04pCisJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRF KSwKKwkJCQkJIGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCBzdG9wIiwKKwkJCQkJCQlNeVN1YnNjcmlw dGlvbi0+bmFtZSksCisJCQkJCSBlcnJkZXRhaWwoIkNhbm5vdCBoYW5kbGUgc3RyZWFtZWQgcmVw bGljYXRpb24gdHJhbnNhY3Rpb25zIHVzaW5nIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgdW50aWwg YWxsIHRhYmxlcyBoYXZlIGJlZW4gc3luY2hyb25pemVkLiIpKSk7CisKKwkJcmV0dXJuIHJlbC0+ c3RhdGUgPT0gU1VCUkVMX1NUQVRFX1JFQURZOworCX0KIAllbHNlCiAJCXJldHVybiAocmVsLT5z dGF0ZSA9PSBTVUJSRUxfU1RBVEVfUkVBRFkgfHwKIAkJCQkocmVsLT5zdGF0ZSA9PSBTVUJSRUxf U1RBVEVfU1lOQ0RPTkUgJiYKQEAgLTQ1Miw0MyArNTQ5LDExMCBAQCBlbmRfcmVwbGljYXRpb25f c3RlcCh2b2lkKQogfQogCiAvKgotICogSGFuZGxlIHN0cmVhbWVkIHRyYW5zYWN0aW9ucy4KKyAq IEhhbmRsZSBzdHJlYW1lZCB0cmFuc2FjdGlvbnMgZm9yIGJvdGggdGhlIGxlYWRlciBhcHBseSB3 b3JrZXIgYW5kIHRoZQorICogcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4KICAqCi0gKiBJZiBpbiBz dHJlYW1pbmcgbW9kZSAocmVjZWl2aW5nIGEgYmxvY2sgb2Ygc3RyZWFtZWQgdHJhbnNhY3Rpb24p LCB3ZQotICogc2ltcGx5IHJlZGlyZWN0IGl0IHRvIGEgZmlsZSBmb3IgdGhlIHByb3BlciB0b3Bs ZXZlbCB0cmFuc2FjdGlvbi4KKyAqIEluIHRoZSBzdHJlYW1pbmcgY2FzZSAocmVjZWl2aW5nIGEg YmxvY2sgb2YgdGhlIHN0cmVhbWVkIHRyYW5zYWN0aW9uKSwgZm9yCisgKiBzZXJpYWxpemUgbW9k ZSwgc2ltcGx5IHJlZGlyZWN0IGl0IHRvIGEgZmlsZSBmb3IgdGhlIHByb3BlciB0b3BsZXZlbAor ICogdHJhbnNhY3Rpb24sIGFuZCBmb3IgcGFyYWxsZWwgbW9kZSwgdGhlIGxlYWRlciBhcHBseSB3 b3JrZXIgd2lsbCBzZW5kIHRoZQorICogY2hhbmdlcyB0byBwYXJhbGxlbCBhcHBseSB3b3JrZXJz IGFuZCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHdpbGwgZGVmaW5lCisgKiBzYXZlcG9pbnRz IGlmIG5lZWRlZC4gKExPR0lDQUxfUkVQX01TR19SRUxBVElPTiBvciBMT0dJQ0FMX1JFUF9NU0df VFlQRQorICogbWVzc2FnZXMgd2lsbCBiZSBhcHBsaWVkIGJ5IGJvdGggbGVhZGVyIGFwcGx5IHdv cmtlciBhbmQgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlcnMpLgogICoKLSAqIFJldHVybnMgdHJ1 ZSBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb25zLCBmYWxzZSBvdGhlcndpc2UgKHJlZ3VsYXIgbW9k ZSkuCisgKiBSZXR1cm5zIHRydWUgZm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9ucyAod2hlbiB0aGUg Y2hhbmdlIGlzIGVpdGhlciBzZXJpYWxpemVkCisgKiB0byBmaWxlIG9yIHNlbnQgdG8gcGFyYWxs ZWwgYXBwbHkgd29ya2VyKSwgZmFsc2Ugb3RoZXJ3aXNlIChyZWd1bGFyIG1vZGUgb3IKKyAqIG5l ZWRzIHRvIGJlIHByb2Nlc3NlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIpLgorICoKKyAqIEV4 Y2VwdGlvbjogSWYgdGhlIG1lc3NhZ2UgYmVpbmcgcHJvY2Vzc2VkIGlzIExPR0lDQUxfUkVQX01T R19SRUxBVElPTgorICogb3IgTE9HSUNBTF9SRVBfTVNHX1RZUEUsIHJldHVybiBmYWxzZSBldmVu IGlmIHRoZSBtZXNzYWdlIG5lZWRzIHRvIGJlIHNlbnQKKyAqIHRvIGEgcGFyYWxsZWwgYXBwbHkg d29ya2VyLgogICovCiBzdGF0aWMgYm9vbAogaGFuZGxlX3N0cmVhbWVkX3RyYW5zYWN0aW9uKExv Z2ljYWxSZXBNc2dUeXBlIGFjdGlvbiwgU3RyaW5nSW5mbyBzKQogewotCVRyYW5zYWN0aW9uSWQg eGlkOworCVRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQ7CisJUGFyYWxsZWxBcHBseVdvcmtlcklu Zm8gKndpbmZvOworCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOworCVN0cmluZ0luZm9E YXRhIG9yaWdpbmFsX21zZzsKKworCWFwcGx5X2FjdGlvbiA9IGdldF90cmFuc2FjdGlvbl9hcHBs eV9hY3Rpb24oc3RyZWFtX3hpZCwgJndpbmZvKTsKIAogCS8qIG5vdCBpbiBzdHJlYW1pbmcgbW9k ZSAqLwotCWlmICghaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCisJaWYgKGFwcGx5X2FjdGlvbiA9 PSBUUkFOU19MRUFERVJfQVBQTFkpCiAJCXJldHVybiBmYWxzZTsKIAotCUFzc2VydChzdHJlYW1f ZmQgIT0gTlVMTCk7CiAJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHN0cmVhbV94aWQpKTsK IAorCS8qCisJICogVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBuZWVkcyB0aGUgeGlkIGluIHRo aXMgbWVzc2FnZSB0byBkZWNpZGUKKwkgKiB3aGV0aGVyIHRvIGRlZmluZSBhIHNhdmVwb2ludCwg c28gc2F2ZSB0aGUgb3JpZ2luYWwgbWVzc2FnZSB0aGF0IGhhcworCSAqIG5vdCBtb3ZlZCB0aGUg Y3Vyc29yIGFmdGVyIHRoZSB4aWQuIFdlIHdpbGwgc2VyaWFsaXplIHRoaXMgbWVzc2FnZSB0byBh CisJICogZmlsZSBpbiBQQVJUSUFMX1NFUklBTElaRSBtb2RlLgorCSAqLworCW9yaWdpbmFsX21z ZyA9ICpzOworCiAJLyoKIAkgKiBXZSBzaG91bGQgaGF2ZSByZWNlaXZlZCBYSUQgb2YgdGhlIHN1 YnhhY3QgYXMgdGhlIGZpcnN0IHBhcnQgb2YgdGhlCiAJICogbWVzc2FnZSwgc28gZXh0cmFjdCBp dC4KIAkgKi8KLQl4aWQgPSBwcV9nZXRtc2dpbnQocywgNCk7CisJY3VycmVudF94aWQgPSBwcV9n ZXRtc2dpbnQocywgNCk7CiAKLQlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkpCisJaWYg KCFUcmFuc2FjdGlvbklkSXNWYWxpZChjdXJyZW50X3hpZCkpCiAJCWVyZXBvcnQoRVJST1IsCiAJ CQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAogCQkJCSBlcnJtc2dfaW50 ZXJuYWwoImludmFsaWQgdHJhbnNhY3Rpb24gSUQgaW4gc3RyZWFtZWQgcmVwbGljYXRpb24gdHJh bnNhY3Rpb24iKSkpOwogCi0JLyogQWRkIHRoZSBuZXcgc3VieGFjdCB0byB0aGUgYXJyYXkgKHVu bGVzcyBhbHJlYWR5IHRoZXJlKS4gKi8KLQlzdWJ4YWN0X2luZm9fYWRkKHhpZCk7CisJc3dpdGNo IChhcHBseV9hY3Rpb24pCisJeworCQljYXNlIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6CisJCQlB c3NlcnQoc3RyZWFtX2ZkKTsKIAotCS8qIHdyaXRlIHRoZSBjaGFuZ2UgdG8gdGhlIGN1cnJlbnQg ZmlsZSAqLwotCXN0cmVhbV93cml0ZV9jaGFuZ2UoYWN0aW9uLCBzKTsKKwkJCS8qIEFkZCB0aGUg bmV3IHN1YnhhY3QgdG8gdGhlIGFycmF5ICh1bmxlc3MgYWxyZWFkeSB0aGVyZSkuICovCisJCQlz dWJ4YWN0X2luZm9fYWRkKGN1cnJlbnRfeGlkKTsKKworCQkJLyogV3JpdGUgdGhlIGNoYW5nZSB0 byB0aGUgY3VycmVudCBmaWxlICovCisJCQlzdHJlYW1fd3JpdGVfY2hhbmdlKGFjdGlvbiwgcyk7 CisJCQlyZXR1cm4gdHJ1ZTsKKworCQljYXNlIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVM OgorCQkJQXNzZXJ0KHdpbmZvKTsKKworCQkJLyoKKwkJCSAqIFhYWCBUaGUgcHVibGlzaGVyIHNp ZGUgZG9lc24ndCBhbHdheXMgc2VuZCByZWxhdGlvbi90eXBlIHVwZGF0ZQorCQkJICogbWVzc2Fn ZXMgYWZ0ZXIgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiwgc28gYWxzbyB1cGRhdGUgdGhlCisJ CQkgKiByZWxhdGlvbi90eXBlIGluIGxlYWRlciBhcHBseSB3b3JrZXIuIFNlZSBmdW5jdGlvbgor CQkJICogY2xlYW51cF9yZWxfc3luY19jYWNoZS4KKwkJCSAqLworCQkJaWYgKHBhX3NlbmRfZGF0 YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKSkKKwkJCQlyZXR1cm4gKGFjdGlvbiAhPSBMT0dJQ0FM X1JFUF9NU0dfUkVMQVRJT04gJiYKKwkJCQkJCWFjdGlvbiAhPSBMT0dJQ0FMX1JFUF9NU0dfVFlQ RSk7CisKKwkJCS8qCisJCQkgKiBJdCBpcyBwb3NzaWJsZSB0aGF0IHdoaWxlIHNlbmRpbmcgdGhp cyBjaGFuZ2UgdG8gcGFyYWxsZWwgYXBwbHkKKwkJCSAqIHdvcmtlciB3ZSBuZWVkIHRvIHN3aXRj aCB0byBzZXJpYWxpemUgbW9kZS4KKwkJCSAqLworCQkJcGFfc3dpdGNoX3RvX3BhcnRpYWxfc2Vy aWFsaXplKHdpbmZvLCBmYWxzZSk7CiAKLQlyZXR1cm4gdHJ1ZTsKKwkJCS8qIGZhbGwgdGhyb3Vn aCAqLworCQljYXNlIFRSQU5TX0xFQURFUl9QQVJUSUFMX1NFUklBTElaRToKKwkJCXN0cmVhbV93 cml0ZV9jaGFuZ2UoYWN0aW9uLCAmb3JpZ2luYWxfbXNnKTsKKworCQkJLyogU2FtZSByZWFzb24g YXMgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUwgY2FzZS4gKi8KKwkJCXJldHVybiAoYWN0 aW9uICE9IExPR0lDQUxfUkVQX01TR19SRUxBVElPTiAmJgorCQkJCQlhY3Rpb24gIT0gTE9HSUNB TF9SRVBfTVNHX1RZUEUpOworCisJCWNhc2UgVFJBTlNfUEFSQUxMRUxfQVBQTFk6CisJCQlwYXJh bGxlbF9zdHJlYW1fbmNoYW5nZXMgKz0gMTsKKworCQkJLyogRGVmaW5lIGEgc2F2ZXBvaW50IGZv ciBhIHN1YnhhY3QgaWYgbmVlZGVkLiAqLworCQkJcGFfc3RhcnRfc3VidHJhbnMoY3VycmVudF94 aWQsIHN0cmVhbV94aWQpOworCQkJcmV0dXJuIGZhbHNlOworCisJCWRlZmF1bHQ6CisJCQlBc3Nl cnQoZmFsc2UpOworCQkJcmV0dXJuIGZhbHNlOwkJLyogc2lsZW5jZSBjb21waWxlciB3YXJuaW5n ICovCisJfQogfQogCiAvKgpAQCAtOTI2LDggKzEwOTAsMTEgQEAgYXBwbHlfaGFuZGxlX3ByZXBh cmVfaW50ZXJuYWwoTG9naWNhbFJlcFByZXBhcmVkVHhuRGF0YSAqcHJlcGFyZV9kYXRhKQogCSAq IEJlZ2luVHJhbnNhY3Rpb25CbG9jayBpcyBuZWNlc3NhcnkgdG8gYmFsYW5jZSB0aGUgRW5kVHJh bnNhY3Rpb25CbG9jawogCSAqIGNhbGxlZCB3aXRoaW4gdGhlIFByZXBhcmVUcmFuc2FjdGlvbkJs b2NrIGJlbG93LgogCSAqLwotCUJlZ2luVHJhbnNhY3Rpb25CbG9jaygpOwotCUNvbW1pdFRyYW5z YWN0aW9uQ29tbWFuZCgpOyAvKiBDb21wbGV0ZXMgdGhlIHByZWNlZGluZyBCZWdpbiBjb21tYW5k LiAqLworCWlmICghSXNUcmFuc2FjdGlvbkJsb2NrKCkpCisJeworCQlCZWdpblRyYW5zYWN0aW9u QmxvY2soKTsKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7IC8qIENvbXBsZXRlcyB0aGUg cHJlY2VkaW5nIEJlZ2luIGNvbW1hbmQuICovCisJfQogCiAJLyoKIAkgKiBVcGRhdGUgb3JpZ2lu IHN0YXRlIHNvIHdlIGNhbiByZXN0YXJ0IHN0cmVhbWluZyBmcm9tIGNvcnJlY3QgcG9zaXRpb24K QEAgLTk3NCw3ICsxMTQxLDcgQEAgYXBwbHlfaGFuZGxlX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQog CUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxzZSk7 CiAKLQlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5kX2xzbik7CisJc3RvcmVf Zmx1c2hfcG9zaXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24sIFhhY3RMYXN0Q29tbWl0RW5kKTsK IAogCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogCkBAIC05OTYsNiArMTE2MywxMiBA QCBhcHBseV9oYW5kbGVfcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAKIC8qCiAgKiBIYW5kbGUgYSBD T01NSVQgUFJFUEFSRUQgb2YgYSBwcmV2aW91c2x5IFBSRVBBUkVEIHRyYW5zYWN0aW9uLgorICoK KyAqIE5vdGUgdGhhdCB3ZSBkb24ndCBuZWVkIHRvIHdhaXQgaGVyZSBpZiB0aGUgdHJhbnNhY3Rp b24gd2FzIHByZXBhcmVkIGluIGEKKyAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gSW4gdGhhdCBj YXNlLCB3ZSBoYXZlIGFscmVhZHkgd2FpdGVkIGZvciB0aGUgcHJlcGFyZQorICogdG8gZmluaXNo IGluIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZSgpIHdoaWNoIHdpbGwgZW5zdXJlIGFsbCB0 aGUKKyAqIG9wZXJhdGlvbnMgaW4gdGhhdCB0cmFuc2FjdGlvbiBoYXZlIGhhcHBlbmVkIGluIHRo ZSBzdWJzY3JpYmVyLCBzbyBubworICogY29uY3VycmVudCB0cmFuc2FjdGlvbiBjYW4gY2F1c2Ug ZGVhZGxvY2sgb3IgdHJhbnNhY3Rpb24gZGVwZW5kZW5jeSBpc3N1ZXMuCiAgKi8KIHN0YXRpYyB2 b2lkCiBhcHBseV9oYW5kbGVfY29tbWl0X3ByZXBhcmVkKFN0cmluZ0luZm8gcykKQEAgLTEwMjUs NyArMTE5OCw3IEBAIGFwcGx5X2hhbmRsZV9jb21taXRfcHJlcGFyZWQoU3RyaW5nSW5mbyBzKQog CUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxzZSk7 CiAKLQlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5kX2xzbik7CisJc3RvcmVf Zmx1c2hfcG9zaXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24sIFhhY3RMYXN0Q29tbWl0RW5kKTsK IAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIAogCS8qIFByb2Nlc3MgYW55IHRhYmxl cyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCkBAIC0xMDM5LDYg KzEyMTIsMTIgQEAgYXBwbHlfaGFuZGxlX2NvbW1pdF9wcmVwYXJlZChTdHJpbmdJbmZvIHMpCiAK IC8qCiAgKiBIYW5kbGUgYSBST0xMQkFDSyBQUkVQQVJFRCBvZiBhIHByZXZpb3VzbHkgUFJFUEFS RUQgVFJBTlNBQ1RJT04uCisgKgorICogTm90ZSB0aGF0IHdlIGRvbid0IG5lZWQgdG8gd2FpdCBo ZXJlIGlmIHRoZSB0cmFuc2FjdGlvbiB3YXMgcHJlcGFyZWQgaW4gYQorICogcGFyYWxsZWwgYXBw bHkgd29ya2VyLiBJbiB0aGF0IGNhc2UsIHdlIGhhdmUgYWxyZWFkeSB3YWl0ZWQgZm9yIHRoZSBw cmVwYXJlCisgKiB0byBmaW5pc2ggaW4gYXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVwYXJlKCkgd2hp Y2ggd2lsbCBlbnN1cmUgYWxsIHRoZQorICogb3BlcmF0aW9ucyBpbiB0aGF0IHRyYW5zYWN0aW9u IGhhdmUgaGFwcGVuZWQgaW4gdGhlIHN1YnNjcmliZXIsIHNvIG5vCisgKiBjb25jdXJyZW50IHRy YW5zYWN0aW9uIGNhbiBjYXVzZSBkZWFkbG9jayBvciB0cmFuc2FjdGlvbiBkZXBlbmRlbmN5IGlz c3Vlcy4KICAqLwogc3RhdGljIHZvaWQKIGFwcGx5X2hhbmRsZV9yb2xsYmFja19wcmVwYXJlZChT dHJpbmdJbmZvIHMpCkBAIC0xMDgwLDcgKzEyNTksNyBAQCBhcHBseV9oYW5kbGVfcm9sbGJhY2tf cHJlcGFyZWQoU3RyaW5nSW5mbyBzKQogCiAJcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKIAot CXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHJvbGxiYWNrX2RhdGEucm9sbGJhY2tfZW5kX2xzbik7CisJ c3RvcmVfZmx1c2hfcG9zaXRpb24ocm9sbGJhY2tfZGF0YS5yb2xsYmFja19lbmRfbHNuLCBYYWN0 TGFzdENvbW1pdEVuZCk7CiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKIAkvKiBQ cm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVs LiAqLwpAQCAtMTA5MiwxNSArMTI3MSwxNiBAQCBhcHBseV9oYW5kbGVfcm9sbGJhY2tfcHJlcGFy ZWQoU3RyaW5nSW5mbyBzKQogCiAvKgogICogSGFuZGxlIFNUUkVBTSBQUkVQQVJFLgotICoKLSAq IExvZ2ljIGlzIGluIHR3byBwYXJ0czoKLSAqIDEuIFJlcGxheSBhbGwgdGhlIHNwb29sZWQgb3Bl cmF0aW9ucwotICogMi4gTWFyayB0aGUgdHJhbnNhY3Rpb24gYXMgcHJlcGFyZWQKICAqLwogc3Rh dGljIHZvaWQKIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShTdHJpbmdJbmZvIHMpCiB7CiAJ TG9naWNhbFJlcFByZXBhcmVkVHhuRGF0YSBwcmVwYXJlX2RhdGE7CisJUGFyYWxsZWxBcHBseVdv cmtlckluZm8gKndpbmZvOworCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOworCisJLyog U2F2ZSB0aGUgbWVzc2FnZSBiZWZvcmUgaXQgaXMgY29uc3VtZWQuICovCisJU3RyaW5nSW5mb0Rh dGEgb3JpZ2luYWxfbXNnID0gKnM7CiAKIAlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCiAJ CWVyZXBvcnQoRVJST1IsCkBAIC0xMTE2LDI0ICsxMjk2LDk2IEBAIGFwcGx5X2hhbmRsZV9zdHJl YW1fcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAJbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9wcmVwYXJl KHMsICZwcmVwYXJlX2RhdGEpOwogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QocHJlcGFy ZV9kYXRhLnhpZCwgcHJlcGFyZV9kYXRhLnByZXBhcmVfbHNuKTsKIAotCWVsb2coREVCVUcxLCAi cmVjZWl2ZWQgcHJlcGFyZSBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb24gJXUiLCBwcmVwYXJlX2Rh dGEueGlkKTsKKwlhcHBseV9hY3Rpb24gPSBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKHBy ZXBhcmVfZGF0YS54aWQsICZ3aW5mbyk7CiAKLQkvKiBSZXBsYXkgYWxsIHRoZSBzcG9vbGVkIG9w ZXJhdGlvbnMuICovCi0JYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhwcmVwYXJlX2RhdGEueGlkLCBw cmVwYXJlX2RhdGEucHJlcGFyZV9sc24pOworCXN3aXRjaCAoYXBwbHlfYWN0aW9uKQorCXsKKwkJ Y2FzZSBUUkFOU19MRUFERVJfU0VSSUFMSVpFOgogCi0JLyogTWFyayB0aGUgdHJhbnNhY3Rpb24g YXMgcHJlcGFyZWQuICovCi0JYXBwbHlfaGFuZGxlX3ByZXBhcmVfaW50ZXJuYWwoJnByZXBhcmVf ZGF0YSk7CisJCQkvKgorCQkJICogVGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVuIHNlcmlhbGl6ZWQg dG8gZmlsZSwgc28gcmVwbGF5IGFsbCB0aGUKKwkJCSAqIHNwb29sZWQgb3BlcmF0aW9ucy4KKwkJ CSAqLworCQkJYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVh bV9maWxlc2V0LAorCQkJCQkJCQkgICBwcmVwYXJlX2RhdGEueGlkLCBwcmVwYXJlX2RhdGEucHJl cGFyZV9sc24pOwogCi0JQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCQkvKiBNYXJrIHRo ZSB0cmFuc2FjdGlvbiBhcyBwcmVwYXJlZC4gKi8KKwkJCWFwcGx5X2hhbmRsZV9wcmVwYXJlX2lu dGVybmFsKCZwcmVwYXJlX2RhdGEpOwogCi0JcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKKwkJ CUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0Jc3RvcmVfZmx1c2hfcG9zaXRpb24ocHJl cGFyZV9kYXRhLmVuZF9sc24pOworCQkJc3RvcmVfZmx1c2hfcG9zaXRpb24ocHJlcGFyZV9kYXRh LmVuZF9sc24sIFhhY3RMYXN0Q29tbWl0RW5kKTsKIAotCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9 IGZhbHNlOworCQkJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CisKKwkJCS8qIFVubGlu ayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5mby4gKi8K KwkJCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHByZXBh cmVfZGF0YS54aWQpOworCQkJYnJlYWs7CiAKLQkvKiB1bmxpbmsgdGhlIGZpbGVzIHdpdGggc2Vy aWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCi0Jc3RyZWFtX2NsZWFudXBfZmls ZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgcHJlcGFyZV9kYXRhLnhpZCk7CisJCWNhc2Ug VFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CisJCQlBc3NlcnQod2luZm8pOworCisJCQlp ZiAocGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpKQorCQkJeworCQkJCS8qIEZp bmlzaCBwcm9jZXNzaW5nIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uICovCisJCQkJcGFfeGFj dF9maW5pc2god2luZm8sIHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKKwkJCQlicmVhazsKKwkJCX0K KworCQkJLyoKKwkJCSAqIEl0IGlzIHBvc3NpYmxlIHRoYXQgd2hpbGUgc2VuZGluZyB0aGlzIGNo YW5nZSB0byBwYXJhbGxlbCBhcHBseQorCQkJICogd29ya2VyIHdlIG5lZWQgdG8gc3dpdGNoIHRv IHNlcmlhbGl6ZSBtb2RlLgorCQkJICovCisJCQlwYV9zd2l0Y2hfdG9fcGFydGlhbF9zZXJpYWxp emUod2luZm8sIHRydWUpOworCisJCQkvKiBmYWxsIHRocm91Z2ggKi8KKwkJY2FzZSBUUkFOU19M RUFERVJfUEFSVElBTF9TRVJJQUxJWkU6CisJCQlBc3NlcnQod2luZm8pOworCisJCQlzdHJlYW1f b3Blbl9hbmRfd3JpdGVfY2hhbmdlKHByZXBhcmVfZGF0YS54aWQsCisJCQkJCQkJCQkJIExPR0lD QUxfUkVQX01TR19TVFJFQU1fUFJFUEFSRSwKKwkJCQkJCQkJCQkgJm9yaWdpbmFsX21zZyk7CisK KwkJCXBhX3NldF9maWxlc2V0X3N0YXRlKHdpbmZvLT5zaGFyZWQsIEZTX1NFUklBTElaRV9ET05F KTsKKworCQkJLyogRmluaXNoIHByb2Nlc3NpbmcgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4g Ki8KKwkJCXBhX3hhY3RfZmluaXNoKHdpbmZvLCBwcmVwYXJlX2RhdGEuZW5kX2xzbik7CisJCQli cmVhazsKKworCQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZOgorCisJCQkvKgorCQkJICogSWYg dGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpcyBhcHBseWluZyBzcG9vbGVkIG1lc3NhZ2VzIHRo ZW4KKwkJCSAqIGNsb3NlIHRoZSBmaWxlIGJlZm9yZSBwcmVwYXJpbmcuCisJCQkgKi8KKwkJCWlm IChzdHJlYW1fZmQpCisJCQkJc3RyZWFtX2Nsb3NlX2ZpbGUoKTsKKworCQkJYmVnaW5fcmVwbGlj YXRpb25fc3RlcCgpOworCisJCQkvKiBNYXJrIHRoZSB0cmFuc2FjdGlvbiBhcyBwcmVwYXJlZC4g Ki8KKwkJCWFwcGx5X2hhbmRsZV9wcmVwYXJlX2ludGVybmFsKCZwcmVwYXJlX2RhdGEpOworCisJ CQllbmRfcmVwbGljYXRpb25fc3RlcCgpOworCisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQo KTsKKworCQkJTXlQYXJhbGxlbFNoYXJlZC0+bGFzdF9jb21taXRfZW5kID0gWGFjdExhc3RDb21t aXRFbmQ7CisKKwkJCXBhX3NldF94YWN0X3N0YXRlKE15UGFyYWxsZWxTaGFyZWQsIFBBUkFMTEVM X1RSQU5TX0ZJTklTSEVEKTsKKwkJCXBhX3VubG9ja190cmFuc2FjdGlvbihNeVBhcmFsbGVsU2hh cmVkLT54aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCisJCQlwYV9yZXNldF9zdWJ0cmFucygp OworCisJCQllbG9nKERFQlVHMSwgImZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIFNUUkVBTSBQUkVQ QVJFIGNvbW1hbmQiKTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlBc3NlcnQoZmFsc2Up OworCQkJYnJlYWs7CisJfQorCisJcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKIAogCS8qIFBy b2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwu ICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhwcmVwYXJlX2RhdGEuZW5kX2xzbik7CkBAIC0x MTcwLDYgKzE0MjIsNDcgQEAgYXBwbHlfaGFuZGxlX29yaWdpbihTdHJpbmdJbmZvIHMpCiAJCQkJ IGVycm1zZ19pbnRlcm5hbCgiT1JJR0lOIG1lc3NhZ2Ugc2VudCBvdXQgb2Ygb3JkZXIiKSkpOwog fQogCisvKgorICogSW5pdGlhbGl6ZSBmaWxlc2V0IChpZiBub3QgYWxyZWFkeSBkb25lKS4KKyAq CisgKiBDcmVhdGUgYSBuZXcgZmlsZSB3aGVuIGZpcnN0X3NlZ21lbnQgaXMgdHJ1ZSwgb3RoZXJ3 aXNlIG9wZW4gdGhlIGV4aXN0aW5nCisgKiBmaWxlLgorICovCit2b2lkCitzdHJlYW1fc3RhcnRf aW50ZXJuYWwoVHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wgZmlyc3Rfc2VnbWVudCkKK3sKKwliZWdp bl9yZXBsaWNhdGlvbl9zdGVwKCk7CisKKwkvKgorCSAqIEluaXRpYWxpemUgdGhlIHdvcmtlcidz IHN0cmVhbV9maWxlc2V0IGlmIHdlIGhhdmVuJ3QgeWV0LiBUaGlzIHdpbGwgYmUKKwkgKiB1c2Vk IGZvciB0aGUgZW50aXJlIGR1cmF0aW9uIG9mIHRoZSB3b3JrZXIgc28gY3JlYXRlIGl0IGluIGEg cGVybWFuZW50CisJICogY29udGV4dC4gV2UgY3JlYXRlIHRoaXMgb24gdGhlIHZlcnkgZmlyc3Qg c3RyZWFtaW5nIG1lc3NhZ2UgZnJvbSBhbnkKKwkgKiB0cmFuc2FjdGlvbiBhbmQgdGhlbiB1c2Ug aXQgZm9yIHRoaXMgYW5kIG90aGVyIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMuCisJICogTm93LCB3 ZSBjb3VsZCBjcmVhdGUgYSBmaWxlc2V0IGF0IHRoZSBzdGFydCBvZiB0aGUgd29ya2VyIGFzIHdl bGwgYnV0CisJICogdGhlbiB3ZSB3b24ndCBiZSBzdXJlIHRoYXQgaXQgd2lsbCBldmVyIGJlIHVz ZWQuCisJICovCisJaWYgKCFNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0KQorCXsK KwkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CisKKwkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRj aFRvKEFwcGx5Q29udGV4dCk7CisKKwkJTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNl dCA9IHBhbGxvYyhzaXplb2YoRmlsZVNldCkpOworCQlGaWxlU2V0SW5pdChNeUxvZ2ljYWxSZXBX b3JrZXItPnN0cmVhbV9maWxlc2V0KTsKKworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4 KTsKKwl9CisKKwkvKiBPcGVuIHRoZSBzcG9vbCBmaWxlIGZvciB0aGlzIHRyYW5zYWN0aW9uLiAq LworCXN0cmVhbV9vcGVuX2ZpbGUoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkLCBmaXJz dF9zZWdtZW50KTsKKworCS8qIElmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBzZWdtZW50LCBvcGVu IGV4aXN0aW5nIHN1YnhhY3QgZmlsZS4gKi8KKwlpZiAoIWZpcnN0X3NlZ21lbnQpCisJCXN1Ynhh Y3RfaW5mb19yZWFkKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7CisKKwllbmRfcmVw bGljYXRpb25fc3RlcCgpOworfQorCiAvKgogICogSGFuZGxlIFNUUkVBTSBTVEFSVCBtZXNzYWdl LgogICovCkBAIC0xMTc3LDIxICsxNDcwLDE3IEBAIHN0YXRpYyB2b2lkCiBhcHBseV9oYW5kbGVf c3RyZWFtX3N0YXJ0KFN0cmluZ0luZm8gcykKIHsKIAlib29sCQlmaXJzdF9zZWdtZW50OworCVBh cmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKKwlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5X2Fj dGlvbjsKKworCS8qIFNhdmUgdGhlIG1lc3NhZ2UgYmVmb3JlIGl0IGlzIGNvbnN1bWVkLiAqLwor CVN0cmluZ0luZm9EYXRhIG9yaWdpbmFsX21zZyA9ICpzOwogCiAJaWYgKGluX3N0cmVhbWVkX3Ry YW5zYWN0aW9uKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9D T0xfVklPTEFUSU9OKSwKIAkJCQkgZXJybXNnX2ludGVybmFsKCJkdXBsaWNhdGUgU1RSRUFNIFNU QVJUIG1lc3NhZ2UiKSkpOwogCi0JLyoKLQkgKiBTdGFydCBhIHRyYW5zYWN0aW9uIG9uIHN0cmVh bSBzdGFydCwgdGhpcyB0cmFuc2FjdGlvbiB3aWxsIGJlIGNvbW1pdHRlZAotCSAqIG9uIHRoZSBz dHJlYW0gc3RvcCB1bmxlc3MgaXQgaXMgYSB0YWJsZXN5bmMgd29ya2VyIGluIHdoaWNoIGNhc2Ug aXQKLQkgKiB3aWxsIGJlIGNvbW1pdHRlZCBhZnRlciBwcm9jZXNzaW5nIGFsbCB0aGUgbWVzc2Fn ZXMuIFdlIG5lZWQgdGhlCi0JICogdHJhbnNhY3Rpb24gZm9yIGhhbmRsaW5nIHRoZSBidWZmaWxl LCB1c2VkIGZvciBzZXJpYWxpemluZyB0aGUKLQkgKiBzdHJlYW1pbmcgZGF0YSBhbmQgc3VieGFj dCBpbmZvLgotCSAqLwotCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAoKTsKLQogCS8qIG5vdGlmeSBo YW5kbGUgbWV0aG9kcyB3ZSdyZSBwcm9jZXNzaW5nIGEgcmVtb3RlIHRyYW5zYWN0aW9uICovCiAJ aW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gPSB0cnVlOwogCkBAIC0xMjA1LDk2ICsxNDk0LDIzNyBA QCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0YXJ0KFN0cmluZ0luZm8gcykKIAogCXNldF9hcHBseV9l cnJvcl9jb250ZXh0X3hhY3Qoc3RyZWFtX3hpZCwgSW52YWxpZFhMb2dSZWNQdHIpOwogCi0JLyoK LQkgKiBJbml0aWFsaXplIHRoZSB3b3JrZXIncyBzdHJlYW1fZmlsZXNldCBpZiB3ZSBoYXZlbid0 IHlldC4gVGhpcyB3aWxsIGJlCi0JICogdXNlZCBmb3IgdGhlIGVudGlyZSBkdXJhdGlvbiBvZiB0 aGUgd29ya2VyIHNvIGNyZWF0ZSBpdCBpbiBhIHBlcm1hbmVudAotCSAqIGNvbnRleHQuIFdlIGNy ZWF0ZSB0aGlzIG9uIHRoZSB2ZXJ5IGZpcnN0IHN0cmVhbWluZyBtZXNzYWdlIGZyb20gYW55Ci0J ICogdHJhbnNhY3Rpb24gYW5kIHRoZW4gdXNlIGl0IGZvciB0aGlzIGFuZCBvdGhlciBzdHJlYW1p bmcgdHJhbnNhY3Rpb25zLgotCSAqIE5vdywgd2UgY291bGQgY3JlYXRlIGEgZmlsZXNldCBhdCB0 aGUgc3RhcnQgb2YgdGhlIHdvcmtlciBhcyB3ZWxsIGJ1dAotCSAqIHRoZW4gd2Ugd29uJ3QgYmUg c3VyZSB0aGF0IGl0IHdpbGwgZXZlciBiZSB1c2VkLgotCSAqLwotCWlmIChNeUxvZ2ljYWxSZXBX b3JrZXItPnN0cmVhbV9maWxlc2V0ID09IE5VTEwpCisJLyogVHJ5IHRvIGFsbG9jYXRlIGEgd29y a2VyIGZvciB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLiAqLworCWlmIChmaXJzdF9zZWdtZW50 KQorCQlwYV9hbGxvY2F0ZV93b3JrZXIoc3RyZWFtX3hpZCk7CisKKwlhcHBseV9hY3Rpb24gPSBn ZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKHN0cmVhbV94aWQsICZ3aW5mbyk7CisKKwlzd2l0 Y2ggKGFwcGx5X2FjdGlvbikKIAl7Ci0JCU1lbW9yeUNvbnRleHQgb2xkY3R4OworCQljYXNlIFRS QU5TX0xFQURFUl9TRVJJQUxJWkU6CiAKLQkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRv KEFwcGx5Q29udGV4dCk7CisJCQkvKgorCQkJICogRnVuY3Rpb24gc3RyZWFtX3N0YXJ0X2ludGVy bmFsIHN0YXJ0cyBhIHRyYW5zYWN0aW9uLiBUaGlzCisJCQkgKiB0cmFuc2FjdGlvbiB3aWxsIGJl IGNvbW1pdHRlZCBvbiB0aGUgc3RyZWFtIHN0b3AgdW5sZXNzIGl0IGlzIGEKKwkJCSAqIHRhYmxl c3luYyB3b3JrZXIgaW4gd2hpY2ggY2FzZSBpdCB3aWxsIGJlIGNvbW1pdHRlZCBhZnRlcgorCQkJ ICogcHJvY2Vzc2luZyBhbGwgdGhlIG1lc3NhZ2VzLiBXZSBuZWVkIHRoaXMgdHJhbnNhY3Rpb24g Zm9yCisJCQkgKiBoYW5kbGluZyB0aGUgQnVmRmlsZSwgdXNlZCBmb3Igc2VyaWFsaXppbmcgdGhl IHN0cmVhbWluZyBkYXRhCisJCQkgKiBhbmQgc3VieGFjdCBpbmZvLgorCQkJICovCisJCQlzdHJl YW1fc3RhcnRfaW50ZXJuYWwoc3RyZWFtX3hpZCwgZmlyc3Rfc2VnbWVudCk7CisJCQlicmVhazsK IAotCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0ID0gcGFsbG9jKHNpemVvZihG aWxlU2V0KSk7Ci0JCUZpbGVTZXRJbml0KE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVz ZXQpOworCQljYXNlIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgorCQkJQXNzZXJ0KHdp bmZvKTsKIAotCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKLQl9CisJCQkvKgorCQkJ ICogT25jZSB3ZSBzdGFydCBzZXJpYWxpemluZyB0aGUgY2hhbmdlcywgdGhlIHBhcmFsbGVsIGFw cGx5CisJCQkgKiB3b3JrZXIgd2lsbCB3YWl0IGZvciB0aGUgbGVhZGVyIHRvIHJlbGVhc2UgdGhl IHN0cmVhbSBsb2NrCisJCQkgKiB1bnRpbCB0aGUgZW5kIG9mIHRoZSB0cmFuc2FjdGlvbi4gU28s IHdlIGRvbid0IG5lZWQgdG8gcmVsZWFzZQorCQkJICogdGhlIGxvY2sgb3IgaW5jcmVtZW50IHRo ZSBzdHJlYW0gY291bnQgaW4gdGhhdCBjYXNlLgorCQkJICovCisJCQlpZiAocGFfc2VuZF9kYXRh KHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpKQorCQkJeworCQkJCS8qCisJCQkJICogVW5sb2NrIHRo ZSBzaGFyZWQgb2JqZWN0IGxvY2sgc28gdGhhdCB0aGUgcGFyYWxsZWwgYXBwbHkKKwkJCQkgKiB3 b3JrZXIgY2FuIGNvbnRpbnVlIHRvIHJlY2VpdmUgY2hhbmdlcy4KKwkJCQkgKi8KKwkJCQlpZiAo IWZpcnN0X3NlZ21lbnQpCisJCQkJCXBhX3VubG9ja19zdHJlYW0od2luZm8tPnNoYXJlZC0+eGlk LCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKworCQkJCS8qCisJCQkJICogSW5jcmVtZW50IHRoZSBu dW1iZXIgb2Ygc3RyZWFtaW5nIGJsb2NrcyB3YWl0aW5nIHRvIGJlCisJCQkJICogcHJvY2Vzc2Vk IGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkJCQkgKi8KKwkJCQlwZ19hdG9taWNfYWRkX2Zl dGNoX3UzMigmd2luZm8tPnNoYXJlZC0+cGVuZGluZ19zdHJlYW1fY291bnQsIDEpOwogCi0JLyog b3BlbiB0aGUgc3Bvb2wgZmlsZSBmb3IgdGhpcyB0cmFuc2FjdGlvbiAqLwotCXN0cmVhbV9vcGVu X2ZpbGUoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCwgZmlyc3Rfc2VnbWVu dCk7CisJCQkJLyogQ2FjaGUgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBmb3IgdGhpcyB0cmFu c2FjdGlvbi4gKi8KKwkJCQlwYV9zZXRfc3RyZWFtX2FwcGx5X3dvcmtlcih3aW5mbyk7CisJCQkJ YnJlYWs7CisJCQl9CiAKLQkvKiBpZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3Qgc2VnbWVudCwgb3Bl biBleGlzdGluZyBzdWJ4YWN0IGZpbGUgKi8KLQlpZiAoIWZpcnN0X3NlZ21lbnQpCi0JCXN1Ynhh Y3RfaW5mb19yZWFkKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOworCQkJ LyoKKwkJCSAqIEl0IGlzIHBvc3NpYmxlIHRoYXQgd2hpbGUgc2VuZGluZyB0aGlzIGNoYW5nZSB0 byBwYXJhbGxlbCBhcHBseQorCQkJICogd29ya2VyIHdlIG5lZWQgdG8gc3dpdGNoIHRvIHNlcmlh bGl6ZSBtb2RlLgorCQkJICovCisJCQlwYV9zd2l0Y2hfdG9fcGFydGlhbF9zZXJpYWxpemUod2lu Zm8sICFmaXJzdF9zZWdtZW50KTsKIAotCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfUlVO TklORywgTlVMTCk7CisJCQkvKiBmYWxsIHRocm91Z2ggKi8KKwkJY2FzZSBUUkFOU19MRUFERVJf UEFSVElBTF9TRVJJQUxJWkU6CisJCQlBc3NlcnQod2luZm8pOwogCi0JZW5kX3JlcGxpY2F0aW9u X3N0ZXAoKTsKKwkJCS8qCisJCQkgKiBPcGVuIHRoZSBzcG9vbCBmaWxlIHVubGVzcyBpdCB3YXMg YWxyZWFkeSBvcGVuZWQgd2hlbiBzd2l0Y2hpbmcKKwkJCSAqIHRvIHNlcmlhbGl6ZSBtb2RlLiBU aGUgdHJhbnNhY3Rpb24gc3RhcnRlZCBpbgorCQkJICogc3RyZWFtX3N0YXJ0X2ludGVybmFsIHdp bGwgYmUgY29tbWl0dGVkIG9uIHRoZSBzdHJlYW0gc3RvcC4KKwkJCSAqLworCQkJaWYgKGFwcGx5 X2FjdGlvbiAhPSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTCkKKwkJCQlzdHJlYW1fc3Rh cnRfaW50ZXJuYWwoc3RyZWFtX3hpZCwgZmlyc3Rfc2VnbWVudCk7CisKKwkJCXN0cmVhbV93cml0 ZV9jaGFuZ2UoTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9TVEFSVCwgJm9yaWdpbmFsX21zZyk7CisK KwkJCS8qIENhY2hlIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZm9yIHRoaXMgdHJhbnNhY3Rp b24uICovCisJCQlwYV9zZXRfc3RyZWFtX2FwcGx5X3dvcmtlcih3aW5mbyk7CisJCQlicmVhazsK KworCQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZOgorCQkJaWYgKGZpcnN0X3NlZ21lbnQpCisJ CQl7CisJCQkJLyogSG9sZCB0aGUgbG9jayB1bnRpbCB0aGUgZW5kIG9mIHRoZSB0cmFuc2FjdGlv bi4gKi8KKwkJCQlwYV9sb2NrX3RyYW5zYWN0aW9uKE15UGFyYWxsZWxTaGFyZWQtPnhpZCwgQWNj ZXNzRXhjbHVzaXZlTG9jayk7CisJCQkJcGFfc2V0X3hhY3Rfc3RhdGUoTXlQYXJhbGxlbFNoYXJl ZCwgUEFSQUxMRUxfVFJBTlNfU1RBUlRFRCk7CisJCQl9CisKKwkJCXBhcmFsbGVsX3N0cmVhbV9u Y2hhbmdlcyA9IDA7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJQXNzZXJ0KGZhbHNlKTsK KwkJCWJyZWFrOworCX0KKworCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfUlVOTklORywg TlVMTCk7CiB9CiAKIC8qCi0gKiBIYW5kbGUgU1RSRUFNIFNUT1AgbWVzc2FnZS4KKyAqIFVwZGF0 ZSB0aGUgaW5mb3JtYXRpb24gYWJvdXQgc3VieGFjdHMgYW5kIGNsb3NlIHRoZSBmaWxlLgorICoK KyAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCB3aGVuIHRoZSBzdHJlYW1fc3RhcnRf aW50ZXJuYWwgZnVuY3Rpb24gaGFzCisgKiBiZWVuIGNhbGxlZC4KICAqLwotc3RhdGljIHZvaWQK LWFwcGx5X2hhbmRsZV9zdHJlYW1fc3RvcChTdHJpbmdJbmZvIHMpCit2b2lkCitzdHJlYW1fc3Rv cF9pbnRlcm5hbChUcmFuc2FjdGlvbklkIHhpZCkKIHsKLQlpZiAoIWluX3N0cmVhbWVkX3RyYW5z YWN0aW9uKQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xf VklPTEFUSU9OKSwKLQkJCQkgZXJybXNnX2ludGVybmFsKCJTVFJFQU0gU1RPUCBtZXNzYWdlIHdp dGhvdXQgU1RSRUFNIFNUQVJUIikpKTsKLQogCS8qCi0JICogQ2xvc2UgdGhlIGZpbGUgd2l0aCBz ZXJpYWxpemVkIGNoYW5nZXMsIGFuZCBzZXJpYWxpemUgaW5mb3JtYXRpb24gYWJvdXQKLQkgKiBz dWJ4YWN0cyBmb3IgdGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uLgorCSAqIFNlcmlhbGl6ZSBpbmZv cm1hdGlvbiBhYm91dCBzdWJ4YWN0cyBmb3IgdGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uLCB0aGVu CisJICogY2xvc2UgdGhlIHN0cmVhbSBtZXNzYWdlcyBzcG9vbCBmaWxlLgogCSAqLwotCXN1Ynhh Y3RfaW5mb193cml0ZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkKTsKKwlz dWJ4YWN0X2luZm9fd3JpdGUoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkKTsKIAlzdHJl YW1fY2xvc2VfZmlsZSgpOwogCi0JLyogV2UgbXVzdCBiZSBpbiBhIHZhbGlkIHRyYW5zYWN0aW9u IHN0YXRlICovCiAJQXNzZXJ0KElzVHJhbnNhY3Rpb25TdGF0ZSgpKTsKIAogCS8qIENvbW1pdCB0 aGUgcGVyLXN0cmVhbSB0cmFuc2FjdGlvbiAqLwogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgp OwogCi0JaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gPSBmYWxzZTsKLQogCS8qIFJlc2V0IHBlci1z dHJlYW0gY29udGV4dCAqLwogCU1lbW9yeUNvbnRleHRSZXNldChMb2dpY2FsU3RyZWFtaW5nQ29u dGV4dCk7Ci0KLQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5VTEwpOwotCXJl c2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOwogfQogCiAvKgotICogSGFuZGxlIFNUUkVB TSBhYm9ydCBtZXNzYWdlLgorICogSGFuZGxlIFNUUkVBTSBTVE9QIG1lc3NhZ2UuCiAgKi8KIHN0 YXRpYyB2b2lkCi1hcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKK2FwcGx5 X2hhbmRsZV9zdHJlYW1fc3RvcChTdHJpbmdJbmZvIHMpCiB7Ci0JVHJhbnNhY3Rpb25JZCB4aWQ7 Ci0JVHJhbnNhY3Rpb25JZCBzdWJ4aWQ7CisJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZv OworCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOwogCi0JaWYgKGluX3N0cmVhbWVkX3Ry YW5zYWN0aW9uKQorCWlmICghaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCiAJCWVyZXBvcnQoRVJS T1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAotCQkJCSBlcnJt c2dfaW50ZXJuYWwoIlNUUkVBTSBBQk9SVCBtZXNzYWdlIHdpdGhvdXQgU1RSRUFNIFNUT1AiKSkp OworCQkJCSBlcnJtc2dfaW50ZXJuYWwoIlNUUkVBTSBTVE9QIG1lc3NhZ2Ugd2l0aG91dCBTVFJF QU0gU1RBUlQiKSkpOworCisJYXBwbHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2Fj dGlvbihzdHJlYW1feGlkLCAmd2luZm8pOworCisJc3dpdGNoIChhcHBseV9hY3Rpb24pCisJewor CQljYXNlIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6CisJCQlzdHJlYW1fc3RvcF9pbnRlcm5hbChz dHJlYW1feGlkKTsKKwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFS QUxMRUw6CisJCQlBc3NlcnQod2luZm8pOworCisJCQkvKgorCQkJICogTG9jayBiZWZvcmUgc2Vu ZGluZyB0aGUgU1RSRUFNX1NUT1AgbWVzc2FnZSBzbyB0aGF0IHRoZSBsZWFkZXIKKwkJCSAqIGNh biBob2xkIHRoZSBsb2NrIGZpcnN0IGFuZCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHdpbGwg d2FpdAorCQkJICogZm9yIGxlYWRlciB0byByZWxlYXNlIHRoZSBsb2NrLiBTZWUgTG9ja2luZyBD b25zaWRlcmF0aW9ucyBhdG9wCisJCQkgKiBhcHBseXBhcmFsbGVsd29ya2VyLmMuCisJCQkgKi8K KwkJCXBhX2xvY2tfc3RyZWFtKHdpbmZvLT5zaGFyZWQtPnhpZCwgQWNjZXNzRXhjbHVzaXZlTG9j ayk7CisKKwkJCWlmIChwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSkpCisJCQl7 CisJCQkJcGFfc2V0X3N0cmVhbV9hcHBseV93b3JrZXIoTlVMTCk7CisJCQkJYnJlYWs7CisJCQl9 CisKKwkJCS8qCisJCQkgKiBJdCBpcyBwb3NzaWJsZSB0aGF0IHdoaWxlIHNlbmRpbmcgdGhpcyBj aGFuZ2UgdG8gcGFyYWxsZWwgYXBwbHkKKwkJCSAqIHdvcmtlciB3ZSBuZWVkIHRvIHN3aXRjaCB0 byBzZXJpYWxpemUgbW9kZS4KKwkJCSAqLworCQkJcGFfc3dpdGNoX3RvX3BhcnRpYWxfc2VyaWFs aXplKHdpbmZvLCB0cnVlKTsKKworCQkJLyogZmFsbCB0aHJvdWdoICovCisJCWNhc2UgVFJBTlNf TEVBREVSX1BBUlRJQUxfU0VSSUFMSVpFOgorCQkJc3RyZWFtX3dyaXRlX2NoYW5nZShMT0dJQ0FM X1JFUF9NU0dfU1RSRUFNX1NUT1AsIHMpOworCQkJc3RyZWFtX3N0b3BfaW50ZXJuYWwoc3RyZWFt X3hpZCk7CisJCQlwYV9zZXRfc3RyZWFtX2FwcGx5X3dvcmtlcihOVUxMKTsKKwkJCWJyZWFrOwor CisJCWNhc2UgVFJBTlNfUEFSQUxMRUxfQVBQTFk6CisJCQllbG9nKERFQlVHMSwgImFwcGxpZWQg JXUgY2hhbmdlcyBpbiB0aGUgc3RyZWFtaW5nIGNodW5rIiwKKwkJCQkgcGFyYWxsZWxfc3RyZWFt X25jaGFuZ2VzKTsKIAotCWxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQocywgJnhpZCwgJnN1 YnhpZCk7CisJCQkvKgorCQkJICogQnkgdGhlIHRpbWUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlz IHByb2Nlc3NpbmcgdGhlIGNoYW5nZXMgaW4KKwkJCSAqIHRoZSBjdXJyZW50IHN0cmVhbWluZyBi bG9jaywgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgbWF5IGhhdmUKKwkJCSAqIHNlbnQgbXVsdGlw bGUgc3RyZWFtaW5nIGJsb2Nrcy4gVGhpcyBjYW4gbGVhZCB0byBwYXJhbGxlbCBhcHBseQorCQkJ ICogd29ya2VyIHN0YXJ0IHdhaXRpbmcgZXZlbiB3aGVuIHRoZXJlIGFyZSBtb3JlIGNodW5rIG9m IHN0cmVhbXMKKwkJCSAqIGluIHRoZSBxdWV1ZS4gU28sIHRyeSB0byBsb2NrIG9ubHkgaWYgdGhl cmUgaXMgbm8gbWVzc2FnZSBsZWZ0CisJCQkgKiBpbiB0aGUgcXVldWUuIFNlZSBMb2NraW5nIENv bnNpZGVyYXRpb25zIGF0b3AKKwkJCSAqIGFwcGx5cGFyYWxsZWx3b3JrZXIuYy4KKwkJCSAqCisJ CQkgKiBOb3RlIHRoYXQgaGVyZSB3ZSBoYXZlIGEgcmFjZSBjb25kaXRpb24gd2hlcmUgd2UgY2Fu IHN0YXJ0CisJCQkgKiB3YWl0aW5nIGV2ZW4gd2hlbiB0aGVyZSBhcmUgcGVuZGluZyBzdHJlYW1p bmcgY2h1bmtzLiBUaGlzIGNhbgorCQkJICogaGFwcGVuIGlmIHRoZSBsZWFkZXIgc2VuZHMgYW5v dGhlciBzdHJlYW1pbmcgYmxvY2sgYW5kIGFjcXVpcmVzCisJCQkgKiB0aGUgc3RyZWFtIGxvY2sg YWdhaW4gYWZ0ZXIgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBjaGVja3MKKwkJCSAqIHRoYXQg dGhlcmUgaXMgbm8gcGVuZGluZyBzdHJlYW1pbmcgYmxvY2sgYW5kIGJlZm9yZSBpdCBhY3R1YWxs eQorCQkJICogc3RhcnRzIHdhaXRpbmcgb24gYSBsb2NrLiBXZSBjYW4gaGFuZGxlIHRoaXMgY2Fz ZSBieSBub3QKKwkJCSAqIGFsbG93aW5nIHRoZSBsZWFkZXIgdG8gaW5jcmVtZW50IHRoZSBzdHJl YW0gYmxvY2sgY291bnQgZHVyaW5nCisJCQkgKiB0aGUgdGltZSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgYWNxdWlyZXMgdGhlIGxvY2sgYnV0IGl0IGlzIG5vdAorCQkJICogY2xlYXIgd2hldGhlciB0 aGF0IGlzIHdvcnRoIHRoZSBjb21wbGV4aXR5LgorCQkJICoKKwkJCSAqIE5vdywgaWYgdGhpcyBt aXNzZWQgY2h1bmsgY29udGFpbnMgcm9sbGJhY2sgdG8gc2F2ZXBvaW50LCB0aGVuCisJCQkgKiB0 aGVyZSBpcyBhIHJpc2sgb2YgZGVhZGxvY2sgd2hpY2ggcHJvYmFibHkgc2hvdWxkbid0IGhhcHBl bgorCQkJICogYWZ0ZXIgcmVzdGFydC4KKwkJCSAqLworCQkJcGFfZGVjcl9hbmRfd2FpdF9zdHJl YW1fYmxvY2soKTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlBc3NlcnQoZmFsc2UpOwor CQkJYnJlYWs7CisJfQorCisJaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gPSBmYWxzZTsKKworCS8q CisJICogVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBjb3VsZCBiZSBpbiBhIHRyYW5zYWN0aW9u IGluIHdoaWNoIGNhc2Ugd2UKKwkgKiBuZWVkIHRvIHJlcG9ydCB0aGUgc3RhdGUgYXMgU1RBVEVf SURMRUlOVFJBTlNBQ1RJT04uCisJICovCisJaWYgKElzVHJhbnNhY3Rpb25PclRyYW5zYWN0aW9u QmxvY2soKSkKKwkJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFSU5UUkFOU0FDVElP TiwgTlVMTCk7CisJZWxzZQorCQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5V TEwpOworCisJcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKCk7Cit9CiAKKy8qCisgKiBI YW5kbGUgU1RSRUFNIEFCT1JUIG1lc3NhZ2Ugd2hlbiB0aGUgdHJhbnNhY3Rpb24gd2FzIHNlcmlh bGl6ZWQgdG8gZmlsZS4KKyAqLworc3RhdGljIHZvaWQKK3N0cmVhbV9hYm9ydF9pbnRlcm5hbChU cmFuc2FjdGlvbklkIHhpZCwgVHJhbnNhY3Rpb25JZCBzdWJ4aWQpCit7CiAJLyoKIAkgKiBJZiB0 aGUgdHdvIFhJRHMgYXJlIHRoZSBzYW1lLCBpdCdzIGluIGZhY3QgYWJvcnQgb2YgdG9wbGV2ZWwg eGFjdCwgc28KIAkgKiBqdXN0IGRlbGV0ZSB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGluZm8u CiAJICovCiAJaWYgKHhpZCA9PSBzdWJ4aWQpCi0JewotCQlzZXRfYXBwbHlfZXJyb3JfY29udGV4 dF94YWN0KHhpZCwgSW52YWxpZFhMb2dSZWNQdHIpOwogCQlzdHJlYW1fY2xlYW51cF9maWxlcyhN eUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOwotCX0KIAllbHNlCiAJewogCQkvKgpAQCAt MTMxOCw4ICsxNzQ4LDYgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMp CiAJCWJvb2wJCWZvdW5kID0gZmFsc2U7CiAJCWNoYXIJCXBhdGhbTUFYUEdQQVRIXTsKIAotCQlz ZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHN1YnhpZCwgSW52YWxpZFhMb2dSZWNQdHIpOwot CiAJCXN1YmlkeCA9IC0xOwogCQliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CiAJCXN1YnhhY3Rf aW5mb19yZWFkKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7CkBAIC0xMzQ0LDQ3ICsx NzcyLDIyNCBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIAkJCWNs ZWFudXBfc3VieGFjdF9pbmZvKCk7CiAJCQllbmRfcmVwbGljYXRpb25fc3RlcCgpOwogCQkJQ29t bWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7Ci0JCQlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2lu Zm8oKTsKIAkJCXJldHVybjsKIAkJfQogCi0JCS8qIG9wZW4gdGhlIGNoYW5nZXMgZmlsZSAqLwot CQljaGFuZ2VzX2ZpbGVuYW1lKHBhdGgsIE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7 Ci0JCWZkID0gQnVmRmlsZU9wZW5GaWxlU2V0KE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2Zp bGVzZXQsIHBhdGgsCi0JCQkJCQkJCU9fUkRXUiwgZmFsc2UpOworCQkvKiBvcGVuIHRoZSBjaGFu Z2VzIGZpbGUgKi8KKwkJY2hhbmdlc19maWxlbmFtZShwYXRoLCBNeUxvZ2ljYWxSZXBXb3JrZXIt PnN1YmlkLCB4aWQpOworCQlmZCA9IEJ1ZkZpbGVPcGVuRmlsZVNldChNeUxvZ2ljYWxSZXBXb3Jr ZXItPnN0cmVhbV9maWxlc2V0LCBwYXRoLAorCQkJCQkJCQlPX1JEV1IsIGZhbHNlKTsKKworCQkv KiBPSywgdHJ1bmNhdGUgdGhlIGZpbGUgYXQgdGhlIHJpZ2h0IG9mZnNldCAqLworCQlCdWZGaWxl VHJ1bmNhdGVGaWxlU2V0KGZkLCBzdWJ4YWN0X2RhdGEuc3VieGFjdHNbc3ViaWR4XS5maWxlbm8s CisJCQkJCQkJICAgc3VieGFjdF9kYXRhLnN1YnhhY3RzW3N1YmlkeF0ub2Zmc2V0KTsKKwkJQnVm RmlsZUNsb3NlKGZkKTsKKworCQkvKiBkaXNjYXJkIHRoZSBzdWJ4YWN0cyBhZGRlZCBsYXRlciAq LworCQlzdWJ4YWN0X2RhdGEubnN1YnhhY3RzID0gc3ViaWR4OworCisJCS8qIHdyaXRlIHRoZSB1 cGRhdGVkIHN1YnhhY3QgbGlzdCAqLworCQlzdWJ4YWN0X2luZm9fd3JpdGUoTXlMb2dpY2FsUmVw V29ya2VyLT5zdWJpZCwgeGlkKTsKKworCQllbmRfcmVwbGljYXRpb25fc3RlcCgpOworCQlDb21t aXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwl9Cit9CisKKy8qCisgKiBIYW5kbGUgU1RSRUFNIEFC T1JUIG1lc3NhZ2UuCisgKi8KK3N0YXRpYyB2b2lkCithcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0 KFN0cmluZ0luZm8gcykKK3sKKwlUcmFuc2FjdGlvbklkIHhpZDsKKwlUcmFuc2FjdGlvbklkIHN1 YnhpZDsKKwlMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhIGFib3J0X2RhdGE7CisJUGFyYWxsZWxB cHBseVdvcmtlckluZm8gKndpbmZvOworCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOwor CisJLyogU2F2ZSB0aGUgbWVzc2FnZSBiZWZvcmUgaXQgaXMgY29uc3VtZWQuICovCisJU3RyaW5n SW5mb0RhdGEgb3JpZ2luYWxfbXNnID0gKnM7CisJYm9vbAkJdG9wbGV2ZWxfeGFjdDsKKworCWlm IChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29k ZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCisJCQkJIGVycm1zZ19pbnRlcm5hbCgiU1RS RUFNIEFCT1JUIG1lc3NhZ2Ugd2l0aG91dCBTVFJFQU0gU1RPUCIpKSk7CisKKwkvKiBXZSByZWNl aXZlIGFib3J0IGluZm9ybWF0aW9uIG9ubHkgd2hlbiB3ZSBjYW4gYXBwbHkgaW4gcGFyYWxsZWwu ICovCisJbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChzLCAmYWJvcnRfZGF0YSwKKwkJCQkJ CQkJIE15TG9naWNhbFJlcFdvcmtlci0+cGFyYWxsZWxfYXBwbHkpOworCisJeGlkID0gYWJvcnRf ZGF0YS54aWQ7CisJc3VieGlkID0gYWJvcnRfZGF0YS5zdWJ4aWQ7CisJdG9wbGV2ZWxfeGFjdCA9 ICh4aWQgPT0gc3VieGlkKTsKKworCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3Qoc3VieGlk LCBhYm9ydF9kYXRhLmFib3J0X2xzbik7CisKKwlhcHBseV9hY3Rpb24gPSBnZXRfdHJhbnNhY3Rp b25fYXBwbHlfYWN0aW9uKHhpZCwgJndpbmZvKTsKKworCXN3aXRjaCAoYXBwbHlfYWN0aW9uKQor CXsKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VSSUFMSVpFOgorCisJCQkvKgorCQkJICogV2UgYXJl IGluIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCB0aGUgdHJhbnNhY3Rpb24gaGFzIGJlZW4K KwkJCSAqIHNlcmlhbGl6ZWQgdG8gZmlsZS4KKwkJCSAqLworCQkJc3RyZWFtX2Fib3J0X2ludGVy bmFsKHhpZCwgc3VieGlkKTsKKwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNfTEVBREVSX1NFTkRf VE9fUEFSQUxMRUw6CisJCQlBc3NlcnQod2luZm8pOworCisJCQkvKgorCQkJICogRm9yIHRoZSBj YXNlIG9mIGFib3J0aW5nIHRoZSBzdWJ0cmFuc2FjdGlvbiwgd2UgaW5jcmVtZW50IHRoZQorCQkJ ICogbnVtYmVyIG9mIHN0cmVhbWluZyBibG9ja3MgYW5kIHRha2UgdGhlIGxvY2sgYWdhaW4gYmVm b3JlCisJCQkgKiBzZW5kaW5nIHRoZSBTVFJFQU1fQUJPUlQgdG8gZW5zdXJlIHRoYXQgdGhlIHBh cmFsbGVsIGFwcGx5CisJCQkgKiB3b3JrZXIgd2lsbCB3YWl0IG9uIHRoZSBsb2NrIGZvciB0aGUg bmV4dCBzZXQgb2YgY2hhbmdlcyBhZnRlcgorCQkJICogcHJvY2Vzc2luZyB0aGUgU1RSRUFNX0FC T1JUIG1lc3NhZ2UgaWYgaXQgaXMgbm90IGFscmVhZHkKKwkJCSAqIHdhaXRpbmcgZm9yIFNUUkVB TV9TVE9QIG1lc3NhZ2UuCisJCQkgKgorCQkJICogSXQgaXMgaW1wb3J0YW50IHRvIHBlcmZvcm0g dGhpcyBsb2NraW5nIGJlZm9yZSBzZW5kaW5nIHRoZQorCQkJICogU1RSRUFNX0FCT1JUIG1lc3Nh Z2Ugc28gdGhhdCB0aGUgbGVhZGVyIGNhbiBob2xkIHRoZSBsb2NrIGZpcnN0CisJCQkgKiBhbmQg dGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aWxsIHdhaXQgZm9yIHRoZSBsZWFkZXIgdG8KKwkJ CSAqIHJlbGVhc2UgdGhlIGxvY2suIFRoaXMgaXMgdGhlIHNhbWUgYXMgd2hhdCB3ZSBkbyBpbgor CQkJICogYXBwbHlfaGFuZGxlX3N0cmVhbV9zdG9wLiBTZWUgTG9ja2luZyBDb25zaWRlcmF0aW9u cyBhdG9wCisJCQkgKiBhcHBseXBhcmFsbGVsd29ya2VyLmMuCisJCQkgKi8KKwkJCWlmICghdG9w bGV2ZWxfeGFjdCkKKwkJCXsKKwkJCQlwYV91bmxvY2tfc3RyZWFtKHhpZCwgQWNjZXNzRXhjbHVz aXZlTG9jayk7CisJCQkJcGdfYXRvbWljX2FkZF9mZXRjaF91MzIoJndpbmZvLT5zaGFyZWQtPnBl bmRpbmdfc3RyZWFtX2NvdW50LCAxKTsKKwkJCQlwYV9sb2NrX3N0cmVhbSh4aWQsIEFjY2Vzc0V4 Y2x1c2l2ZUxvY2spOworCQkJfQorCisJCQkvKgorCQkJICogVW5saWtlIFNUUkVBTV9DT01NSVQg YW5kIFNUUkVBTV9QUkVQQVJFLCB3ZSBkb24ndCB3YWl0IGZvciB0aGUKKwkJCSAqIHBhcmFsbGVs IGFwcGx5IHdvcmtlciB0byBmaW5pc2ggYXMgdGhhdCBpcyBub3QgcmVxdWlyZWQgdG8KKwkJCSAq IG1haW50YWluIHRoZSBjb21taXQgb3JkZXIgYW5kIHdvbid0IGhhdmUgdGhlIHJpc2sgb2YgZmFp bHVyZXMKKwkJCSAqIGR1ZSB0byB0cmFuc2FjdGlvbiBkZXBlbmRlbmNpZXMgYW5kIGRlYWRsb2Nr cy4KKwkJCSAqLworCQkJaWYgKHBhX3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKSkK KwkJCXsKKwkJCQlpZiAodG9wbGV2ZWxfeGFjdCkKKwkJCQl7CisJCQkJCXBhX3VubG9ja19zdHJl YW0oeGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKwkJCQkJKHZvaWQpIHBhX2ZyZWVfd29ya2Vy KHdpbmZvKTsKKwkJCQl9CisJCQkJYnJlYWs7CisJCQl9CisKKwkJCS8qCisJCQkgKiBJdCBpcyBw b3NzaWJsZSB0aGF0IHdoaWxlIHNlbmRpbmcgdGhpcyBjaGFuZ2UgdG8gcGFyYWxsZWwgYXBwbHkK KwkJCSAqIHdvcmtlciB3ZSBuZWVkIHRvIHN3aXRjaCB0byBzZXJpYWxpemUgbW9kZS4KKwkJCSAq LworCQkJcGFfc3dpdGNoX3RvX3BhcnRpYWxfc2VyaWFsaXplKHdpbmZvLCB0cnVlKTsKKworCQkJ LyogZmFsbCB0aHJvdWdoICovCisJCWNhc2UgVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VSSUFMSVpF OgorCQkJQXNzZXJ0KHdpbmZvKTsKKworCQkJLyoKKwkJCSAqIFBhcmFsbGVsIGFwcGx5IHdvcmtl ciBtaWdodCBoYXZlIGFwcGxpZWQgc29tZSBjaGFuZ2VzLCBzbyB3cml0ZQorCQkJICogdGhlIFNU UkVBTV9BQk9SVCBtZXNzYWdlIHNvIHRoYXQgaXQgY2FuIHJvbGxiYWNrIHRoZQorCQkJICogc3Vi dHJhbnNhY3Rpb24gaWYgbmVlZGVkLgorCQkJICovCisJCQlzdHJlYW1fb3Blbl9hbmRfd3JpdGVf Y2hhbmdlKHhpZCwgTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9BQk9SVCwKKwkJCQkJCQkJCQkgJm9y aWdpbmFsX21zZyk7CisKKwkJCWlmICh0b3BsZXZlbF94YWN0KQorCQkJeworCQkJCXBhX3NldF9m aWxlc2V0X3N0YXRlKHdpbmZvLT5zaGFyZWQsIEZTX1NFUklBTElaRV9ET05FKTsKKwkJCQlwYV91 bmxvY2tfc3RyZWFtKHhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisJCQkJKHZvaWQpIHBhX2Zy ZWVfd29ya2VyKHdpbmZvKTsKKwkJCX0KKwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNfUEFSQUxM RUxfQVBQTFk6CisKKwkJCS8qCisJCQkgKiBJZiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlz IGFwcGx5aW5nIHNwb29sZWQgbWVzc2FnZXMgdGhlbgorCQkJICogY2xvc2UgdGhlIGZpbGUgYmVm b3JlIGFib3J0aW5nLgorCQkJICovCisJCQlpZiAodG9wbGV2ZWxfeGFjdCAmJiBzdHJlYW1fZmQp CisJCQkJc3RyZWFtX2Nsb3NlX2ZpbGUoKTsKKworCQkJcGFfc3RyZWFtX2Fib3J0KCZhYm9ydF9k YXRhKTsKKworCQkJLyoKKwkJCSAqIFdlIG5lZWQgdG8gd2FpdCBhZnRlciBwcm9jZXNzaW5nIHJv bGxiYWNrIHRvIHNhdmVwb2ludCBmb3IgdGhlCisJCQkgKiBuZXh0IHNldCBvZiBjaGFuZ2VzLgor CQkJICoKKwkJCSAqIFdlIGhhdmUgYSByYWNlIGNvbmRpdGlvbiBoZXJlIGR1ZSB0byB3aGljaCB3 ZSBjYW4gc3RhcnQgd2FpdGluZworCQkJICogaGVyZSB3aGVuIHRoZXJlIGFyZSBtb3JlIGNodW5r IG9mIHN0cmVhbXMgaW4gdGhlIHF1ZXVlLiBTZWUKKwkJCSAqIGFwcGx5X2hhbmRsZV9zdHJlYW1f c3RvcC4KKwkJCSAqLworCQkJaWYgKCF0b3BsZXZlbF94YWN0KQorCQkJCXBhX2RlY3JfYW5kX3dh aXRfc3RyZWFtX2Jsb2NrKCk7CisKKwkJCWVsb2coREVCVUcxLCAiZmluaXNoZWQgcHJvY2Vzc2lu ZyB0aGUgU1RSRUFNIEFCT1JUIGNvbW1hbmQiKTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJ CQlBc3NlcnQoZmFsc2UpOworCQkJYnJlYWs7CisJfQorCisJcmVzZXRfYXBwbHlfZXJyb3JfY29u dGV4dF9pbmZvKCk7Cit9CisKKy8qCisgKiBFbnN1cmUgdGhhdCB0aGUgcGFzc2VkIGxvY2F0aW9u IGlzIGZpbGVzZXQncyBlbmQuCisgKi8KK3N0YXRpYyB2b2lkCitlbnN1cmVfbGFzdF9tZXNzYWdl KEZpbGVTZXQgKnN0cmVhbV9maWxlc2V0LCBUcmFuc2FjdGlvbklkIHhpZCwgaW50IGZpbGVubywK KwkJCQkJb2ZmX3Qgb2Zmc2V0KQoreworCWNoYXIJCXBhdGhbTUFYUEdQQVRIXTsKKwlCdWZGaWxl ICAgICpmZDsKKwlpbnQJCQlsYXN0X2ZpbGVubzsKKwlvZmZfdAkJbGFzdF9vZmZzZXQ7CiAKLQkJ LyogT0ssIHRydW5jYXRlIHRoZSBmaWxlIGF0IHRoZSByaWdodCBvZmZzZXQgKi8KLQkJQnVmRmls ZVRydW5jYXRlRmlsZVNldChmZCwgc3VieGFjdF9kYXRhLnN1YnhhY3RzW3N1YmlkeF0uZmlsZW5v LAotCQkJCQkJCSAgIHN1YnhhY3RfZGF0YS5zdWJ4YWN0c1tzdWJpZHhdLm9mZnNldCk7Ci0JCUJ1 ZkZpbGVDbG9zZShmZCk7CisJQXNzZXJ0KCFJc1RyYW5zYWN0aW9uU3RhdGUoKSk7CiAKLQkJLyog ZGlzY2FyZCB0aGUgc3VieGFjdHMgYWRkZWQgbGF0ZXIgKi8KLQkJc3VieGFjdF9kYXRhLm5zdWJ4 YWN0cyA9IHN1YmlkeDsKKwliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CiAKLQkJLyogd3JpdGUg dGhlIHVwZGF0ZWQgc3VieGFjdCBsaXN0ICovCi0JCXN1YnhhY3RfaW5mb193cml0ZShNeUxvZ2lj YWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOworCWNoYW5nZXNfZmlsZW5hbWUocGF0aCwgTXlMb2dp Y2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkKTsKIAotCQllbmRfcmVwbGljYXRpb25fc3RlcCgpOwot CQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKLQl9CisJZmQgPSBCdWZGaWxlT3BlbkZpbGVT ZXQoc3RyZWFtX2ZpbGVzZXQsIHBhdGgsIE9fUkRPTkxZLCBmYWxzZSk7CiAKLQlyZXNldF9hcHBs eV9lcnJvcl9jb250ZXh0X2luZm8oKTsKKwlCdWZGaWxlU2VlayhmZCwgMCwgMCwgU0VFS19FTkQp OworCUJ1ZkZpbGVUZWxsKGZkLCAmbGFzdF9maWxlbm8sICZsYXN0X29mZnNldCk7CisKKwlCdWZG aWxlQ2xvc2UoZmQpOworCisJZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKKworCWlmIChsYXN0X2Zp bGVubyAhPSBmaWxlbm8gfHwgbGFzdF9vZmZzZXQgIT0gb2Zmc2V0KQorCQllbG9nKEVSUk9SLCAi dW5leHBlY3RlZCBtZXNzYWdlIGxlZnQgaW4gc3RyZWFtaW5nIHRyYW5zYWN0aW9uJ3MgY2hhbmdl cyBmaWxlIFwiJXNcIiIsCisJCQkgcGF0aCk7CiB9CiAKIC8qCiAgKiBDb21tb24gc3Bvb2xmaWxl IHByb2Nlc3NpbmcuCiAgKi8KLXN0YXRpYyB2b2lkCi1hcHBseV9zcG9vbGVkX21lc3NhZ2VzKFRy YW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKK3ZvaWQKK2FwcGx5X3Nwb29sZWRfbWVz c2FnZXMoRmlsZVNldCAqc3RyZWFtX2ZpbGVzZXQsIFRyYW5zYWN0aW9uSWQgeGlkLAorCQkJCQkg ICBYTG9nUmVjUHRyIGxzbikKIHsKIAlTdHJpbmdJbmZvRGF0YSBzMjsKIAlpbnQJCQluY2hhbmdl czsKIAljaGFyCQlwYXRoW01BWFBHUEFUSF07CiAJY2hhcgkgICAqYnVmZmVyID0gTlVMTDsKIAlN ZW1vcnlDb250ZXh0IG9sZGN4dDsKLQlCdWZGaWxlICAgICpmZDsKKwlSZXNvdXJjZU93bmVyIG9s ZG93bmVyOworCWludAkJCWZpbGVubzsKKwlvZmZfdAkJb2Zmc2V0OwogCi0JbWF5YmVfc3RhcnRf c2tpcHBpbmdfY2hhbmdlcyhsc24pOworCWlmICghYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkp CisJCW1heWJlX3N0YXJ0X3NraXBwaW5nX2NoYW5nZXMobHNuKTsKIAogCS8qIE1ha2Ugc3VyZSB3 ZSBoYXZlIGFuIG9wZW4gdHJhbnNhY3Rpb24gKi8KIAliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7 CkBAIC0xNDAwLDggKzIwMDUsMTYgQEAgYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhUcmFuc2FjdGlv bklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCiAJY2hhbmdlc19maWxlbmFtZShwYXRoLCBNeUxvZ2lj YWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOwogCWVsb2coREVCVUcxLCAicmVwbGF5aW5nIGNoYW5n ZXMgZnJvbSBmaWxlIFwiJXNcIiIsIHBhdGgpOwogCi0JZmQgPSBCdWZGaWxlT3BlbkZpbGVTZXQo TXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCwgcGF0aCwgT19SRE9OTFksCi0JCQkJ CQkJZmFsc2UpOworCS8qCisJICogTWFrZSBzdXJlIHRoZSBmaWxlIGlzIG93bmVkIGJ5IHRoZSB0 b3BsZXZlbCB0cmFuc2FjdGlvbiBzbyB0aGF0IHRoZQorCSAqIGZpbGUgd2lsbCBub3QgYmUgYWNj aWRlbnRhbGx5IGNsb3NlZCB3aGVuIGFib3J0aW5nIGEgc3VidHJhbnNhY3Rpb24uCisJICovCisJ b2xkb3duZXIgPSBDdXJyZW50UmVzb3VyY2VPd25lcjsKKwlDdXJyZW50UmVzb3VyY2VPd25lciA9 IFRvcFRyYW5zYWN0aW9uUmVzb3VyY2VPd25lcjsKKworCXN0cmVhbV9mZCA9IEJ1ZkZpbGVPcGVu RmlsZVNldChzdHJlYW1fZmlsZXNldCwgcGF0aCwgT19SRE9OTFksIGZhbHNlKTsKKworCUN1cnJl bnRSZXNvdXJjZU93bmVyID0gb2xkb3duZXI7CiAKIAlidWZmZXIgPSBwYWxsb2MoQkxDS1NaKTsK IAlpbml0U3RyaW5nSW5mbygmczIpOwpAQCAtMTQzMiw3ICsyMDQ1LDcgQEAgYXBwbHlfc3Bvb2xl ZF9tZXNzYWdlcyhUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCiAJCUNIRUNLX0ZP Ul9JTlRFUlJVUFRTKCk7CiAKIAkJLyogcmVhZCBsZW5ndGggb2YgdGhlIG9uLWRpc2sgcmVjb3Jk ICovCi0JCW5ieXRlcyA9IEJ1ZkZpbGVSZWFkKGZkLCAmbGVuLCBzaXplb2YobGVuKSk7CisJCW5i eXRlcyA9IEJ1ZkZpbGVSZWFkKHN0cmVhbV9mZCwgJmxlbiwgc2l6ZW9mKGxlbikpOwogCiAJCS8q IGhhdmUgd2UgcmVhY2hlZCBlbmQgb2YgdGhlIGZpbGU/ICovCiAJCWlmIChuYnl0ZXMgPT0gMCkK QEAgLTE0NTMsMTIgKzIwNjYsMTQgQEAgYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhUcmFuc2FjdGlv bklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCiAJCWJ1ZmZlciA9IHJlcGFsbG9jKGJ1ZmZlciwgbGVu KTsKIAogCQkvKiBhbmQgZmluYWxseSByZWFkIHRoZSBkYXRhIGludG8gdGhlIGJ1ZmZlciAqLwot CQlpZiAoQnVmRmlsZVJlYWQoZmQsIGJ1ZmZlciwgbGVuKSAhPSBsZW4pCisJCWlmIChCdWZGaWxl UmVhZChzdHJlYW1fZmQsIGJ1ZmZlciwgbGVuKSAhPSBsZW4pCiAJCQllcmVwb3J0KEVSUk9SLAog CQkJCQkoZXJyY29kZV9mb3JfZmlsZV9hY2Nlc3MoKSwKIAkJCQkJIGVycm1zZygiY291bGQgbm90 IHJlYWQgZnJvbSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24ncyBjaGFuZ2VzIGZpbGUgXCIlc1wiOiAl bSIsCiAJCQkJCQkJcGF0aCkpKTsKIAorCQlCdWZGaWxlVGVsbChzdHJlYW1fZmQsICZmaWxlbm8s ICZvZmZzZXQpOworCiAJCS8qIGNvcHkgdGhlIGJ1ZmZlciB0byB0aGUgc3RyaW5naW5mbyBhbmQg Y2FsbCBhcHBseV9kaXNwYXRjaCAqLwogCQlyZXNldFN0cmluZ0luZm8oJnMyKTsKIAkJYXBwZW5k QmluYXJ5U3RyaW5nSW5mbygmczIsIGJ1ZmZlciwgbGVuKTsKQEAgLTE0NzQsMTUgKzIwODksMjQg QEAgYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBs c24pCiAKIAkJbmNoYW5nZXMrKzsKIAorCQkvKgorCQkgKiBJdCBpcyBwb3NzaWJsZSB0aGUgZmls ZSBoYXMgYmVlbiBjbG9zZWQgYmVjYXVzZSB3ZSBoYXZlIHByb2Nlc3NlZAorCQkgKiB0aGUgdHJh bnNhY3Rpb24gZW5kIG1lc3NhZ2UgbGlrZSBzdHJlYW1fY29tbWl0IGluIHdoaWNoIGNhc2UgdGhh dAorCQkgKiBtdXN0IGJlIHRoZSBsYXN0IG1lc3NhZ2UuCisJCSAqLworCQlpZiAoIXN0cmVhbV9m ZCkKKwkJeworCQkJZW5zdXJlX2xhc3RfbWVzc2FnZShzdHJlYW1fZmlsZXNldCwgeGlkLCBmaWxl bm8sIG9mZnNldCk7CisJCQlicmVhazsKKwkJfQorCiAJCWlmIChuY2hhbmdlcyAlIDEwMDAgPT0g MCkKIAkJCWVsb2coREVCVUcxLCAicmVwbGF5ZWQgJWQgY2hhbmdlcyBmcm9tIGZpbGUgXCIlc1wi IiwKIAkJCQkgbmNoYW5nZXMsIHBhdGgpOwogCX0KIAotCUJ1ZkZpbGVDbG9zZShmZCk7Ci0KLQlw ZnJlZShidWZmZXIpOwotCXBmcmVlKHMyLmRhdGEpOworCWlmIChzdHJlYW1fZmQpCisJCXN0cmVh bV9jbG9zZV9maWxlKCk7CiAKIAllbG9nKERFQlVHMSwgInJlcGxheWVkICVkIChhbGwpIGNoYW5n ZXMgZnJvbSBmaWxlIFwiJXNcIiIsCiAJCSBuY2hhbmdlcywgcGF0aCk7CkBAIC0xNDk4LDYgKzIx MjIsMTEgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBzKQogewogCVRy YW5zYWN0aW9uSWQgeGlkOwogCUxvZ2ljYWxSZXBDb21taXREYXRhIGNvbW1pdF9kYXRhOworCVBh cmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKKwlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5X2Fj dGlvbjsKKworCS8qIFNhdmUgdGhlIG1lc3NhZ2UgYmVmb3JlIGl0IGlzIGNvbnN1bWVkLiAqLwor CVN0cmluZ0luZm9EYXRhIG9yaWdpbmFsX21zZyA9ICpzOwogCiAJaWYgKGluX3N0cmVhbWVkX3Ry YW5zYWN0aW9uKQogCQllcmVwb3J0KEVSUk9SLApAQCAtMTUwNywxNCArMjEzNiw3OSBAQCBhcHBs eV9oYW5kbGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIHMpCiAJeGlkID0gbG9naWNhbHJlcF9y ZWFkX3N0cmVhbV9jb21taXQocywgJmNvbW1pdF9kYXRhKTsKIAlzZXRfYXBwbHlfZXJyb3JfY29u dGV4dF94YWN0KHhpZCwgY29tbWl0X2RhdGEuY29tbWl0X2xzbik7CiAKLQllbG9nKERFQlVHMSwg InJlY2VpdmVkIGNvbW1pdCBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb24gJXUiLCB4aWQpOworCWFw cGx5X2FjdGlvbiA9IGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oeGlkLCAmd2luZm8pOwog Ci0JYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyh4aWQsIGNvbW1pdF9kYXRhLmNvbW1pdF9sc24pOwor CXN3aXRjaCAoYXBwbHlfYWN0aW9uKQorCXsKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VSSUFMSVpF OgogCi0JYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0X2RhdGEpOworCQkJLyoK KwkJCSAqIFRoZSB0cmFuc2FjdGlvbiBoYXMgYmVlbiBzZXJpYWxpemVkIHRvIGZpbGUsIHNvIHJl cGxheSBhbGwgdGhlCisJCQkgKiBzcG9vbGVkIG9wZXJhdGlvbnMuCisJCQkgKi8KKwkJCWFwcGx5 X3Nwb29sZWRfbWVzc2FnZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCwgeGlk LAorCQkJCQkJCQkgICBjb21taXRfZGF0YS5jb21taXRfbHNuKTsKKworCQkJYXBwbHlfaGFuZGxl X2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0X2RhdGEpOworCisJCQkvKiBVbmxpbmsgdGhlIGZpbGVz IHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCisJCQlzdHJlYW1f Y2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOworCQkJYnJlYWs7 CisKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKKwkJCUFzc2VydCh3aW5m byk7CisKKwkJCWlmIChwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSkpCisJCQl7 CisJCQkJLyogRmluaXNoIHByb2Nlc3NpbmcgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4gKi8K KwkJCQlwYV94YWN0X2ZpbmlzaCh3aW5mbywgY29tbWl0X2RhdGEuZW5kX2xzbik7CisJCQkJYnJl YWs7CisJCQl9CisKKwkJCS8qCisJCQkgKiBJdCBpcyBwb3NzaWJsZSB0aGF0IHdoaWxlIHNlbmRp bmcgdGhpcyBjaGFuZ2UgdG8gcGFyYWxsZWwgYXBwbHkKKwkJCSAqIHdvcmtlciB3ZSBuZWVkIHRv IHN3aXRjaCB0byBzZXJpYWxpemUgbW9kZS4KKwkJCSAqLworCQkJcGFfc3dpdGNoX3RvX3BhcnRp YWxfc2VyaWFsaXplKHdpbmZvLCB0cnVlKTsKKworCQkJLyogZmFsbCB0aHJvdWdoICovCisJCWNh c2UgVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VSSUFMSVpFOgorCQkJQXNzZXJ0KHdpbmZvKTsKIAot CS8qIHVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3Qg aW5mbyAqLwotCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQs IHhpZCk7CisJCQlzdHJlYW1fb3Blbl9hbmRfd3JpdGVfY2hhbmdlKHhpZCwgTE9HSUNBTF9SRVBf TVNHX1NUUkVBTV9DT01NSVQsCisJCQkJCQkJCQkJICZvcmlnaW5hbF9tc2cpOworCisJCQlwYV9z ZXRfZmlsZXNldF9zdGF0ZSh3aW5mby0+c2hhcmVkLCBGU19TRVJJQUxJWkVfRE9ORSk7CisKKwkJ CS8qIEZpbmlzaCBwcm9jZXNzaW5nIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uICovCisJCQlw YV94YWN0X2ZpbmlzaCh3aW5mbywgY29tbWl0X2RhdGEuZW5kX2xzbik7CisJCQlicmVhazsKKwor CQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZOgorCisJCQkvKgorCQkJICogSWYgdGhlIHBhcmFs bGVsIGFwcGx5IHdvcmtlciBpcyBhcHBseWluZyBzcG9vbGVkIG1lc3NhZ2VzIHRoZW4KKwkJCSAq IGNsb3NlIHRoZSBmaWxlIGJlZm9yZSBjb21taXR0aW5nLgorCQkJICovCisJCQlpZiAoc3RyZWFt X2ZkKQorCQkJCXN0cmVhbV9jbG9zZV9maWxlKCk7CisKKwkJCWFwcGx5X2hhbmRsZV9jb21taXRf aW50ZXJuYWwoJmNvbW1pdF9kYXRhKTsKKworCQkJTXlQYXJhbGxlbFNoYXJlZC0+bGFzdF9jb21t aXRfZW5kID0gWGFjdExhc3RDb21taXRFbmQ7CisKKwkJCXBhX3NldF94YWN0X3N0YXRlKE15UGFy YWxsZWxTaGFyZWQsIFBBUkFMTEVMX1RSQU5TX0ZJTklTSEVEKTsKKwkJCXBhX3VubG9ja190cmFu c2FjdGlvbih4aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCisJCQlwYV9yZXNldF9zdWJ0cmFu cygpOworCisJCQllbG9nKERFQlVHMSwgImZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIFNUUkVBTSBD T01NSVQgY29tbWFuZCIpOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCUFzc2VydChmYWxz ZSk7CisJCQlicmVhazsKKwl9CiAKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVp bmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMo Y29tbWl0X2RhdGEuZW5kX2xzbik7CkBAIC0xNTU4LDkgKzIyNTIsMTYgQEAgYXBwbHlfaGFuZGxl X2NvbW1pdF9pbnRlcm5hbChMb2dpY2FsUmVwQ29tbWl0RGF0YSAqY29tbWl0X2RhdGEpCiAJCXJl cGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fdGltZXN0YW1wID0gY29tbWl0X2RhdGEtPmNvbW1pdHRp bWU7CiAKIAkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkJaWYgKElzVHJhbnNhY3Rp b25CbG9jaygpKQorCQl7CisJCQlFbmRUcmFuc2FjdGlvbkJsb2NrKGZhbHNlKTsKKwkJCUNvbW1p dFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQl9CisKIAkJcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNl KTsKIAotCQlzdG9yZV9mbHVzaF9wb3NpdGlvbihjb21taXRfZGF0YS0+ZW5kX2xzbik7CisJCXN0 b3JlX2ZsdXNoX3Bvc2l0aW9uKGNvbW1pdF9kYXRhLT5lbmRfbHNuLCBYYWN0TGFzdENvbW1pdEVu ZCk7CiAJfQogCWVsc2UKIAl7CkBAIC0yNTExLDcgKzMyMTIsNyBAQCBhcHBseV9oYW5kbGVfdHJ1 bmNhdGUoU3RyaW5nSW5mbyBzKQogLyoKICAqIExvZ2ljYWwgcmVwbGljYXRpb24gcHJvdG9jb2wg bWVzc2FnZSBkaXNwYXRjaGVyLgogICovCi1zdGF0aWMgdm9pZAordm9pZAogYXBwbHlfZGlzcGF0 Y2goU3RyaW5nSW5mbyBzKQogewogCUxvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbiA9IHBxX2dldG1z Z2J5dGUocyk7CkBAIC0yNjc1LDE3ICszMzc2LDI0IEBAIGdldF9mbHVzaF9wb3NpdGlvbihYTG9n UmVjUHRyICp3cml0ZSwgWExvZ1JlY1B0ciAqZmx1c2gsCiAvKgogICogU3RvcmUgY3VycmVudCBy ZW1vdGUvbG9jYWwgbHNuIHBhaXIgaW4gdGhlIHRyYWNraW5nIGxpc3QuCiAgKi8KLXN0YXRpYyB2 b2lkCi1zdG9yZV9mbHVzaF9wb3NpdGlvbihYTG9nUmVjUHRyIHJlbW90ZV9sc24pCit2b2lkCitz dG9yZV9mbHVzaF9wb3NpdGlvbihYTG9nUmVjUHRyIHJlbW90ZV9sc24sIFhMb2dSZWNQdHIgbG9j YWxfbHNuKQogewogCUZsdXNoUG9zaXRpb24gKmZsdXNocG9zOwogCisJLyoKKwkgKiBTa2lwIGZv ciBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLCBiZWNhdXNlIHRoZSBsc25fbWFwcGluZyBpcyBtYWlu dGFpbmVkCisJICogYnkgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIuCisJICovCisJaWYgKGFtX3Bh cmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCQlyZXR1cm47CisKIAkvKiBOZWVkIHRvIGRvIHRoaXMg aW4gcGVybWFuZW50IGNvbnRleHQgKi8KIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250 ZXh0KTsKIAogCS8qIFRyYWNrIGNvbW1pdCBsc24gICovCiAJZmx1c2hwb3MgPSAoRmx1c2hQb3Np dGlvbiAqKSBwYWxsb2Moc2l6ZW9mKEZsdXNoUG9zaXRpb24pKTsKLQlmbHVzaHBvcy0+bG9jYWxf ZW5kID0gWGFjdExhc3RDb21taXRFbmQ7CisJZmx1c2hwb3MtPmxvY2FsX2VuZCA9IGxvY2FsX2xz bjsKIAlmbHVzaHBvcy0+cmVtb3RlX2VuZCA9IHJlbW90ZV9sc247CiAKIAlkbGlzdF9wdXNoX3Rh aWwoJmxzbl9tYXBwaW5nLCAmZmx1c2hwb3MtPm5vZGUpOwpAQCAtMjc0NCw2ICszNDUyLDcgQEAg TG9naWNhbFJlcEFwcGx5TG9vcChYTG9nUmVjUHRyIGxhc3RfcmVjZWl2ZWQpCiAJZXJyY2FsbGJh Y2suY2FsbGJhY2sgPSBhcHBseV9lcnJvcl9jYWxsYmFjazsKIAllcnJjYWxsYmFjay5wcmV2aW91 cyA9IGVycm9yX2NvbnRleHRfc3RhY2s7CiAJZXJyb3JfY29udGV4dF9zdGFjayA9ICZlcnJjYWxs YmFjazsKKwlhcHBseV9lcnJvcl9jb250ZXh0X3N0YWNrID0gZXJyb3JfY29udGV4dF9zdGFjazsK IAogCS8qIFRoaXMgb3V0ZXIgbG9vcCBpdGVyYXRlcyBvbmNlIHBlciB3YWl0LiAqLwogCWZvciAo OzspCkBAIC0yOTU4LDYgKzM2NjcsNyBAQCBMb2dpY2FsUmVwQXBwbHlMb29wKFhMb2dSZWNQdHIg bGFzdF9yZWNlaXZlZCkKIAogCS8qIFBvcCB0aGUgZXJyb3IgY29udGV4dCBzdGFjayAqLwogCWVy cm9yX2NvbnRleHRfc3RhY2sgPSBlcnJjYWxsYmFjay5wcmV2aW91czsKKwlhcHBseV9lcnJvcl9j b250ZXh0X3N0YWNrID0gZXJyb3JfY29udGV4dF9zdGFjazsKIAogCS8qIEFsbCBkb25lICovCiAJ d2FscmN2X2VuZHN0cmVhbWluZyhMb2dSZXBXb3JrZXJXYWxSY3ZDb25uLCAmdGxpKTsKQEAgLTMw NTYsOSArMzc2NiwzMSBAQCBzZW5kX2ZlZWRiYWNrKFhMb2dSZWNQdHIgcmVjdnBvcywgYm9vbCBm b3JjZSwgYm9vbCByZXF1ZXN0UmVwbHkpCiB9CiAKIC8qCi0gKiBSZXJlYWQgc3Vic2NyaXB0aW9u IGluZm8gaWYgbmVlZGVkLiBNb3N0IGNoYW5nZXMgd2lsbCBiZSBleGl0LgorICogRXhpdCByb3V0 aW5lIGZvciBhcHBseSB3b3JrZXJzIGR1ZSB0byBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIGNoYW5n ZXMuCiAgKi8KIHN0YXRpYyB2b2lkCithcHBseV93b3JrZXJfZXhpdCh2b2lkKQoreworCWlmIChh bV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSkKKwl7CisJCS8qCisJCSAqIERvbid0IHN0b3AgdGhl IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBhcyB0aGUgbGVhZGVyIHdpbGwgZGV0ZWN0IHRoZQorCQkg KiBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIGNoYW5nZSBhbmQgcmVzdGFydCBsb2dpY2FsIHJlcGxp Y2F0aW9uIGxhdGVyCisJCSAqIGFueXdheS4gVGhpcyBhbHNvIHByZXZlbnRzIHRoZSBsZWFkZXIg ZnJvbSByZXBvcnRpbmcgZXJyb3JzIHdoZW4KKwkJICogdHJ5aW5nIHRvIGNvbW11bmljYXRlIHdp dGggYSBzdG9wcGVkIHBhcmFsbGVsIGFwcGx5IHdvcmtlciwgd2hpY2gKKwkJICogd291bGQgYWNj aWRlbnRhbGx5IGRpc2FibGUgc3Vic2NyaXB0aW9ucyBpZiBkaXNhYmxlX29uX2Vycm9yIHdhcwor CQkgKiBzZXQuCisJCSAqLworCQlyZXR1cm47CisJfQorCisJcHJvY19leGl0KDApOworfQorCisv KgorICogUmVyZWFkIHN1YnNjcmlwdGlvbiBpbmZvIGlmIG5lZWRlZC4gTW9zdCBjaGFuZ2VzIHdp bGwgYmUgZXhpdC4KKyAqLwordm9pZAogbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKQog ewogCU1lbW9yeUNvbnRleHQgb2xkY3R4OwpAQCAtMzA4OCw5ICszODIwLDkgQEAgbWF5YmVfcmVy ZWFkX3N1YnNjcmlwdGlvbih2b2lkKQogCWlmICghbmV3c3ViKQogCXsKIAkJZXJlcG9ydChMT0cs Ci0JCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIgZm9yIHN1YnNj cmlwdGlvbiBcIiVzXCIgd2lsbCAiCi0JCQkJCQkic3RvcCBiZWNhdXNlIHRoZSBzdWJzY3JpcHRp b24gd2FzIHJlbW92ZWQiLAotCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CisJCS8qIHRy YW5zbGF0b3I6IGZpcnN0ICVzIGlzIHRoZSBuYW1lIG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29y a2VyICovCisJCQkJKGVycm1zZygiJXMgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCBzdG9w IGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlvbiB3YXMgcmVtb3ZlZCIsCisJCQkJCQlnZXRfd29ya2Vy X25hbWUoKSwgTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CiAKIAkJcHJvY19leGl0KDApOwogCX0K QEAgLTMwOTksMTEgKzM4MzEsMTEgQEAgbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKQog CWlmICghbmV3c3ViLT5lbmFibGVkKQogCXsKIAkJZXJlcG9ydChMT0csCi0JCQkJKGVycm1zZygi bG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIg d2lsbCAiCi0JCQkJCQkic3RvcCBiZWNhdXNlIHRoZSBzdWJzY3JpcHRpb24gd2FzIGRpc2FibGVk IiwKLQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOworCQkvKiB0cmFuc2xhdG9yOiBmaXJz dCAlcyBpcyB0aGUgbmFtZSBvZiBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciAqLworCQkJCShl cnJtc2coIiVzIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgc3RvcCBiZWNhdXNlIHRoZSBz dWJzY3JpcHRpb24gd2FzIGRpc2FibGVkIiwKKwkJCQkJCWdldF93b3JrZXJfbmFtZSgpLCBNeVN1 YnNjcmlwdGlvbi0+bmFtZSkpKTsKIAotCQlwcm9jX2V4aXQoMCk7CisJCWFwcGx5X3dvcmtlcl9l eGl0KCk7CiAJfQogCiAJLyogIXNsb3RuYW1lIHNob3VsZCBuZXZlciBoYXBwZW4gd2hlbiBlbmFi bGVkIGlzIHRydWUuICovCkBAIC0zMTE0LDcgKzM4NDYsMTAgQEAgbWF5YmVfcmVyZWFkX3N1YnNj cmlwdGlvbih2b2lkKQogCiAJLyoKIAkgKiBFeGl0IGlmIGFueSBwYXJhbWV0ZXIgdGhhdCBhZmZl Y3RzIHRoZSByZW1vdGUgY29ubmVjdGlvbiB3YXMgY2hhbmdlZC4KLQkgKiBUaGUgbGF1bmNoZXIg d2lsbCBzdGFydCBhIG5ldyB3b3JrZXIuCisJICogVGhlIGxhdW5jaGVyIHdpbGwgc3RhcnQgYSBu ZXcgd29ya2VyIGJ1dCBub3RlIHRoYXQgdGhlIHBhcmFsbGVsIGFwcGx5CisJICogd29ya2VyIHdv bid0IHJlc3RhcnQgaWYgdGhlIHN0cmVhbWluZyBvcHRpb24ncyB2YWx1ZSBpcyBjaGFuZ2VkIGZy b20KKwkgKiAncGFyYWxsZWwnIHRvIGFueSBvdGhlciB2YWx1ZSBvciB0aGUgc2VydmVyIGRlY2lk ZXMgbm90IHRvIHN0cmVhbSB0aGUKKwkgKiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbi4KIAkgKi8K IAlpZiAoc3RyY21wKG5ld3N1Yi0+Y29ubmluZm8sIE15U3Vic2NyaXB0aW9uLT5jb25uaW5mbykg IT0gMCB8fAogCQlzdHJjbXAobmV3c3ViLT5uYW1lLCBNeVN1YnNjcmlwdGlvbi0+bmFtZSkgIT0g MCB8fApAQCAtMzEyNSwxMSArMzg2MCwxNyBAQCBtYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKHZv aWQpCiAJCW5ld3N1Yi0+b3duZXIgIT0gTXlTdWJzY3JpcHRpb24tPm93bmVyIHx8CiAJCSFlcXVh bChuZXdzdWItPnB1YmxpY2F0aW9ucywgTXlTdWJzY3JpcHRpb24tPnB1YmxpY2F0aW9ucykpCiAJ ewotCQllcmVwb3J0KExPRywKLQkJCQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5 IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsIHJlc3RhcnQgYmVjYXVzZSBvZiBh IHBhcmFtZXRlciBjaGFuZ2UiLAotCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CisJCWlm IChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSkKKwkJCWVyZXBvcnQoTE9HLAorCQkJCQkoZXJy bXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBmb3Igc3Vic2Ny aXB0aW9uIFwiJXNcIiB3aWxsIHN0b3AgYmVjYXVzZSBvZiBhIHBhcmFtZXRlciBjaGFuZ2UiLAor CQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOworCQllbHNlCisJCQllcmVwb3J0KExPRywK KwkJCS8qIHRyYW5zbGF0b3I6IGZpcnN0ICVzIGlzIHRoZSBuYW1lIG9mIGxvZ2ljYWwgcmVwbGlj YXRpb24gd29ya2VyICovCisJCQkJCShlcnJtc2coIiVzIGZvciBzdWJzY3JpcHRpb24gXCIlc1wi IHdpbGwgcmVzdGFydCBiZWNhdXNlIG9mIGEgcGFyYW1ldGVyIGNoYW5nZSIsCisJCQkJCQkJZ2V0 X3dvcmtlcl9uYW1lKCksIE15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOwogCi0JCXByb2NfZXhpdCgw KTsKKwkJYXBwbHlfd29ya2VyX2V4aXQoKTsKIAl9CiAKIAkvKiBDaGVjayBmb3Igb3RoZXIgY2hh bmdlcyB0aGF0IHNob3VsZCBuZXZlciBoYXBwZW4gdG9vLiAqLwpAQCAtMzM4MSw3ICs0MTIyLDcg QEAgY2hhbmdlc19maWxlbmFtZShjaGFyICpwYXRoLCBPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQg eGlkKQogICogdG9wbGV2ZWwgdHJhbnNhY3Rpb24uIEVhY2ggc3Vic2NyaXB0aW9uIGhhcyBhIHNl cGFyYXRlIHNldCBvZiBmaWxlcwogICogZm9yIGFueSB0b3BsZXZlbCB0cmFuc2FjdGlvbi4KICAq Lwotc3RhdGljIHZvaWQKK3ZvaWQKIHN0cmVhbV9jbGVhbnVwX2ZpbGVzKE9pZCBzdWJpZCwgVHJh bnNhY3Rpb25JZCB4aWQpCiB7CiAJY2hhcgkJcGF0aFtNQVhQR1BBVEhdOwpAQCAtMzQwNCw5ICs0 MTQ1LDYgQEAgc3RyZWFtX2NsZWFudXBfZmlsZXMoT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhp ZCkKICAqIGJ5IHN0cmVhbV94aWQgKGdsb2JhbCB2YXJpYWJsZSkuIElmIGl0J3MgdGhlIGZpcnN0 IGNodW5rIG9mIHN0cmVhbWVkCiAgKiBjaGFuZ2VzIGZvciB0aGlzIHRyYW5zYWN0aW9uLCBjcmVh dGUgdGhlIGJ1ZmZpbGUsIG90aGVyd2lzZSBvcGVuIHRoZQogICogcHJldmlvdXNseSBjcmVhdGVk IGZpbGUuCi0gKgotICogVGhpcyBjYW4gb25seSBiZSBjYWxsZWQgYXQgdGhlIGJlZ2lubmluZyBv ZiBhICJzdHJlYW1pbmciIGJsb2NrLCBpLmUuCi0gKiBiZXR3ZWVuIHN0cmVhbV9zdGFydC9zdHJl YW1fc3RvcCBtZXNzYWdlcyBmcm9tIHRoZSB1cHN0cmVhbS4KICAqLwogc3RhdGljIHZvaWQKIHN0 cmVhbV9vcGVuX2ZpbGUoT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCwgYm9vbCBmaXJzdF9z ZWdtZW50KQpAQCAtMzQxNCw3ICs0MTUyLDYgQEAgc3RyZWFtX29wZW5fZmlsZShPaWQgc3ViaWQs IFRyYW5zYWN0aW9uSWQgeGlkLCBib29sIGZpcnN0X3NlZ21lbnQpCiAJY2hhcgkJcGF0aFtNQVhQ R1BBVEhdOwogCU1lbW9yeUNvbnRleHQgb2xkY3h0OwogCi0JQXNzZXJ0KGluX3N0cmVhbWVkX3Ry YW5zYWN0aW9uKTsKIAlBc3NlcnQoT2lkSXNWYWxpZChzdWJpZCkpOwogCUFzc2VydChUcmFuc2Fj dGlvbklkSXNWYWxpZCh4aWQpKTsKIAlBc3NlcnQoc3RyZWFtX2ZkID09IE5VTEwpOwpAQCAtMzQ1 MywxNSArNDE5MCwxMCBAQCBzdHJlYW1fb3Blbl9maWxlKE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25J ZCB4aWQsIGJvb2wgZmlyc3Rfc2VnbWVudCkKIC8qCiAgKiBzdHJlYW1fY2xvc2VfZmlsZQogICoJ ICBDbG9zZSB0aGUgY3VycmVudGx5IG9wZW4gZmlsZSB3aXRoIHN0cmVhbWVkIGNoYW5nZXMuCi0g KgotICogVGhpcyBjYW4gb25seSBiZSBjYWxsZWQgYXQgdGhlIGVuZCBvZiBhIHN0cmVhbWluZyBi bG9jaywgaS5lLiBhdCBzdHJlYW1fc3RvcAotICogbWVzc2FnZSBmcm9tIHRoZSB1cHN0cmVhbS4K ICAqLwogc3RhdGljIHZvaWQKIHN0cmVhbV9jbG9zZV9maWxlKHZvaWQpCiB7Ci0JQXNzZXJ0KGlu X3N0cmVhbWVkX3RyYW5zYWN0aW9uKTsKLQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoc3Ry ZWFtX3hpZCkpOwogCUFzc2VydChzdHJlYW1fZmQgIT0gTlVMTCk7CiAKIAlCdWZGaWxlQ2xvc2Uo c3RyZWFtX2ZkKTsKQEAgLTM0ODMsOCArNDIxNSw2IEBAIHN0cmVhbV93cml0ZV9jaGFuZ2UoY2hh ciBhY3Rpb24sIFN0cmluZ0luZm8gcykKIHsKIAlpbnQJCQlsZW47CiAKLQlBc3NlcnQoaW5fc3Ry ZWFtZWRfdHJhbnNhY3Rpb24pOwotCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZChzdHJlYW1f eGlkKSk7CiAJQXNzZXJ0KHN0cmVhbV9mZCAhPSBOVUxMKTsKIAogCS8qIHRvdGFsIG9uLWRpc2sg c2l6ZSwgaW5jbHVkaW5nIHRoZSBhY3Rpb24gdHlwZSBjaGFyYWN0ZXIgKi8KQEAgLTM1MDIsNiAr NDIzMiwyNiBAQCBzdHJlYW1fd3JpdGVfY2hhbmdlKGNoYXIgYWN0aW9uLCBTdHJpbmdJbmZvIHMp CiAJQnVmRmlsZVdyaXRlKHN0cmVhbV9mZCwgJnMtPmRhdGFbcy0+Y3Vyc29yXSwgbGVuKTsKIH0K IAorLyoKKyAqIHN0cmVhbV9vcGVuX2FuZF93cml0ZV9jaGFuZ2UKKyAqCSAgU2VyaWFsaXplIGEg bWVzc2FnZSB0byBhIGZpbGUgZm9yIHRoZSBnaXZlbiB0cmFuc2FjdGlvbi4KKyAqCisgKiBUaGlz IGZ1bmN0aW9uIGlzIHNpbWlsYXIgdG8gc3RyZWFtX3dyaXRlX2NoYW5nZSBleGNlcHQgdGhhdCBp dCB3aWxsIG9wZW4gdGhlCisgKiB0YXJnZXQgZmlsZSBpZiBub3QgYWxyZWFkeSBiZWZvcmUgd3Jp dGluZyB0aGUgbWVzc2FnZSBhbmQgY2xvc2UgdGhlIGZpbGUgYXQKKyAqIHRoZSBlbmQuCisgKi8K K3N0YXRpYyB2b2lkCitzdHJlYW1fb3Blbl9hbmRfd3JpdGVfY2hhbmdlKFRyYW5zYWN0aW9uSWQg eGlkLCBjaGFyIGFjdGlvbiwgU3RyaW5nSW5mbyBzKQoreworCUFzc2VydCghaW5fc3RyZWFtZWRf dHJhbnNhY3Rpb24pOworCisJaWYgKCFzdHJlYW1fZmQpCisJCXN0cmVhbV9zdGFydF9pbnRlcm5h bCh4aWQsIGZhbHNlKTsKKworCXN0cmVhbV93cml0ZV9jaGFuZ2UoYWN0aW9uLCBzKTsKKwlzdHJl YW1fc3RvcF9pbnRlcm5hbCh4aWQpOworfQorCiAvKgogICogQ2xlYW51cCB0aGUgbWVtb3J5IGZv ciBzdWJ4YWN0cyBhbmQgcmVzZXQgdGhlIHJlbGF0ZWQgdmFyaWFibGVzLgogICovCkBAIC0zNjEz LDM3ICs0MzYzLDE2IEBAIHN0YXJ0X2FwcGx5KFhMb2dSZWNQdHIgb3JpZ2luX3N0YXJ0cG9zKQog CVBHX0VORF9UUlkoKTsKIH0KIAotLyogTG9naWNhbCBSZXBsaWNhdGlvbiBBcHBseSB3b3JrZXIg ZW50cnkgcG9pbnQgKi8KKy8qCisgKiBDb21tb24gaW5pdGlhbGl6YXRpb24gZm9yIGxlYWRlciBh cHBseSB3b3JrZXIgYW5kIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAqCisgKiBJbml0aWFsaXpl IHRoZSBkYXRhYmFzZSBjb25uZWN0aW9uLCBpbi1tZW1vcnkgc3Vic2NyaXB0aW9uIGFuZCBuZWNl c3NhcnkKKyAqIGNvbmZpZyBvcHRpb25zLgorICovCiB2b2lkCi1BcHBseVdvcmtlck1haW4oRGF0 dW0gbWFpbl9hcmcpCitJbml0aWFsaXplQXBwbHlXb3JrZXIodm9pZCkKIHsKLQlpbnQJCQl3b3Jr ZXJfc2xvdCA9IERhdHVtR2V0SW50MzIobWFpbl9hcmcpOwogCU1lbW9yeUNvbnRleHQgb2xkY3R4 OwotCWNoYXIJCW9yaWdpbm5hbWVbTkFNRURBVEFMRU5dOwotCVhMb2dSZWNQdHIJb3JpZ2luX3N0 YXJ0cG9zID0gSW52YWxpZFhMb2dSZWNQdHI7Ci0JY2hhcgkgICAqbXlzbG90bmFtZSA9IE5VTEw7 Ci0JV2FsUmN2U3RyZWFtT3B0aW9ucyBvcHRpb25zOwotCWludAkJCXNlcnZlcl92ZXJzaW9uOwot Ci0JLyogQXR0YWNoIHRvIHNsb3QgKi8KLQlsb2dpY2FscmVwX3dvcmtlcl9hdHRhY2god29ya2Vy X3Nsb3QpOwotCi0JLyogU2V0dXAgc2lnbmFsIGhhbmRsaW5nICovCi0JcHFzaWduYWwoU0lHSFVQ LCBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVsb2FkKTsKLQlwcXNpZ25hbChTSUdURVJNLCBkaWUp OwotCUJhY2tncm91bmRXb3JrZXJVbmJsb2NrU2lnbmFscygpOwotCi0JLyoKLQkgKiBXZSBkb24n dCBjdXJyZW50bHkgbmVlZCBhbnkgUmVzb3VyY2VPd25lciBpbiBhIHdhbHJlY2VpdmVyIHByb2Nl c3MsIGJ1dAotCSAqIGlmIHdlIGRpZCwgd2UgY291bGQgY2FsbCBDcmVhdGVBdXhQcm9jZXNzUmVz b3VyY2VPd25lciBoZXJlLgotCSAqLwotCi0JLyogSW5pdGlhbGlzZSBzdGF0cyB0byBhIHNhbmlz aCB2YWx1ZSAqLwotCU15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9zZW5kX3RpbWUgPSBNeUxvZ2lj YWxSZXBXb3JrZXItPmxhc3RfcmVjdl90aW1lID0KLQkJTXlMb2dpY2FsUmVwV29ya2VyLT5yZXBs eV90aW1lID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOwotCi0JLyogTG9hZCB0aGUgbGlicHEtc3Bl Y2lmaWMgZnVuY3Rpb25zICovCi0JbG9hZF9maWxlKCJsaWJwcXdhbHJlY2VpdmVyIiwgZmFsc2Up OwogCiAJLyogUnVuIGFzIHJlcGxpY2Egc2Vzc2lvbiByZXBsaWNhdGlvbiByb2xlLiAqLwogCVNl dENvbmZpZ09wdGlvbigic2Vzc2lvbl9yZXBsaWNhdGlvbl9yb2xlIiwgInJlcGxpY2EiLApAQCAt MzY3MSw5ICs0NDAwLDEwIEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAlpZiAo IU15U3Vic2NyaXB0aW9uKQogCXsKIAkJZXJlcG9ydChMT0csCi0JCQkJKGVycm1zZygibG9naWNh bCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiAldSB3aWxsIG5vdCAi Ci0JCQkJCQkic3RhcnQgYmVjYXVzZSB0aGUgc3Vic2NyaXB0aW9uIHdhcyByZW1vdmVkIGR1cmlu ZyBzdGFydHVwIiwKLQkJCQkJCU15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQpKSk7CisJCS8qIHRy YW5zbGF0b3I6ICVzIGlzIHRoZSBuYW1lIG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyICov CisJCQkJKGVycm1zZygiJXMgZm9yIHN1YnNjcmlwdGlvbiAldSB3aWxsIG5vdCBzdGFydCBiZWNh dXNlIHRoZSBzdWJzY3JpcHRpb24gd2FzIHJlbW92ZWQgZHVyaW5nIHN0YXJ0dXAiLAorCQkJCQkJ Z2V0X3dvcmtlcl9uYW1lKCksIE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQpKSk7CisKIAkJcHJv Y19leGl0KDApOwogCX0KIApAQCAtMzY4MywxMSArNDQxMywxMSBAQCBBcHBseVdvcmtlck1haW4o RGF0dW0gbWFpbl9hcmcpCiAJaWYgKCFNeVN1YnNjcmlwdGlvbi0+ZW5hYmxlZCkKIAl7CiAJCWVy ZXBvcnQoTE9HLAotCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2Vy IGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgbm90ICIKLQkJCQkJCSJzdGFydCBiZWNhdXNl IHRoZSBzdWJzY3JpcHRpb24gd2FzIGRpc2FibGVkIGR1cmluZyBzdGFydHVwIiwKLQkJCQkJCU15 U3Vic2NyaXB0aW9uLT5uYW1lKSkpOworCQkvKiB0cmFuc2xhdG9yOiBmaXJzdCAlcyBpcyB0aGUg bmFtZSBvZiBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciAqLworCQkJCShlcnJtc2coIiVzIGZv ciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgbm90IHN0YXJ0IGJlY2F1c2UgdGhlIHN1YnNjcmlw dGlvbiB3YXMgZGlzYWJsZWQgZHVyaW5nIHN0YXJ0dXAiLAorCQkJCQkJZ2V0X3dvcmtlcl9uYW1l KCksIE15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOwogCi0JCXByb2NfZXhpdCgwKTsKKwkJYXBwbHlf d29ya2VyX2V4aXQoKTsKIAl9CiAKIAkvKiBTZXR1cCBzeW5jaHJvbm91cyBjb21taXQgYWNjb3Jk aW5nIHRvIHRoZSB1c2VyJ3Mgd2lzaGVzICovCkBAIC0zNzAyLDEzICs0NDMyLDQ5IEBAIEFwcGx5 V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAlpZiAoYW1fdGFibGVzeW5jX3dvcmtlcigpKQog CQllcmVwb3J0KExPRywKIAkJCQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHRhYmxlIHN5 bmNocm9uaXphdGlvbiB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIsIHRhYmxlIFwiJXNc IiBoYXMgc3RhcnRlZCIsCi0JCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSwgZ2V0X3JlbF9uYW1l KE15TG9naWNhbFJlcFdvcmtlci0+cmVsaWQpKSkpOworCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5h bWUsCisJCQkJCQlnZXRfcmVsX25hbWUoTXlMb2dpY2FsUmVwV29ya2VyLT5yZWxpZCkpKSk7CiAJ ZWxzZQogCQllcmVwb3J0KExPRywKLQkJCQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIGFw cGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiBoYXMgc3RhcnRlZCIsCi0JCQkJCQlN eVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKKwkJLyogdHJhbnNsYXRvcjogZmlyc3QgJXMgaXMgdGhl IG5hbWUgb2YgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgKi8KKwkJCQkoZXJybXNnKCIlcyBm b3Igc3Vic2NyaXB0aW9uIFwiJXNcIiBoYXMgc3RhcnRlZCIsCisJCQkJCQlnZXRfd29ya2VyX25h bWUoKSwgTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CiAKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1h bmQoKTsKK30KKworLyogTG9naWNhbCBSZXBsaWNhdGlvbiBBcHBseSB3b3JrZXIgZW50cnkgcG9p bnQgKi8KK3ZvaWQKK0FwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKK3sKKwlpbnQJCQl3 b3JrZXJfc2xvdCA9IERhdHVtR2V0SW50MzIobWFpbl9hcmcpOworCWNoYXIJCW9yaWdpbm5hbWVb TkFNRURBVEFMRU5dOworCVhMb2dSZWNQdHIJb3JpZ2luX3N0YXJ0cG9zID0gSW52YWxpZFhMb2dS ZWNQdHI7CisJY2hhcgkgICAqbXlzbG90bmFtZSA9IE5VTEw7CisJV2FsUmN2U3RyZWFtT3B0aW9u cyBvcHRpb25zOworCWludAkJCXNlcnZlcl92ZXJzaW9uOworCisJLyogQXR0YWNoIHRvIHNsb3Qg Ki8KKwlsb2dpY2FscmVwX3dvcmtlcl9hdHRhY2god29ya2VyX3Nsb3QpOworCisJLyogU2V0dXAg c2lnbmFsIGhhbmRsaW5nICovCisJcHFzaWduYWwoU0lHSFVQLCBTaWduYWxIYW5kbGVyRm9yQ29u ZmlnUmVsb2FkKTsKKwlwcXNpZ25hbChTSUdURVJNLCBkaWUpOworCUJhY2tncm91bmRXb3JrZXJV bmJsb2NrU2lnbmFscygpOworCisJLyoKKwkgKiBXZSBkb24ndCBjdXJyZW50bHkgbmVlZCBhbnkg UmVzb3VyY2VPd25lciBpbiBhIHdhbHJlY2VpdmVyIHByb2Nlc3MsIGJ1dAorCSAqIGlmIHdlIGRp ZCwgd2UgY291bGQgY2FsbCBDcmVhdGVBdXhQcm9jZXNzUmVzb3VyY2VPd25lciBoZXJlLgorCSAq LworCisJLyogSW5pdGlhbGlzZSBzdGF0cyB0byBhIHNhbmlzaCB2YWx1ZSAqLworCU15TG9naWNh bFJlcFdvcmtlci0+bGFzdF9zZW5kX3RpbWUgPSBNeUxvZ2ljYWxSZXBXb3JrZXItPmxhc3RfcmVj dl90aW1lID0KKwkJTXlMb2dpY2FsUmVwV29ya2VyLT5yZXBseV90aW1lID0gR2V0Q3VycmVudFRp bWVzdGFtcCgpOworCisJLyogTG9hZCB0aGUgbGlicHEtc3BlY2lmaWMgZnVuY3Rpb25zICovCisJ bG9hZF9maWxlKCJsaWJwcXdhbHJlY2VpdmVyIiwgZmFsc2UpOworCisJSW5pdGlhbGl6ZUFwcGx5 V29ya2VyKCk7CiAKIAkvKiBDb25uZWN0IHRvIHRoZSBvcmlnaW4gYW5kIHN0YXJ0IHRoZSByZXBs aWNhdGlvbi4gKi8KIAllbG9nKERFQlVHMSwgImNvbm5lY3RpbmcgdG8gcHVibGlzaGVyIHVzaW5n IGNvbm5lY3Rpb24gc3RyaW5nIFwiJXNcIiIsCkBAIC0zNzE4LDIwICs0NDg0LDE1IEBAIEFwcGx5 V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAl7CiAJCXN0YXJ0X3RhYmxlX3N5bmMoJm9yaWdp bl9zdGFydHBvcywgJm15c2xvdG5hbWUpOwogCi0JCS8qCi0JCSAqIEFsbG9jYXRlIHRoZSBvcmln aW4gbmFtZSBpbiBsb25nLWxpdmVkIGNvbnRleHQgZm9yIGVycm9yIGNvbnRleHQKLQkJICogbWVz c2FnZS4KLQkJICovCiAJCVJlcGxpY2F0aW9uT3JpZ2luTmFtZUZvckxvZ2ljYWxSZXAoTXlTdWJz Y3JpcHRpb24tPm9pZCwKIAkJCQkJCQkJCQkgICBNeUxvZ2ljYWxSZXBXb3JrZXItPnJlbGlkLAog CQkJCQkJCQkJCSAgIG9yaWdpbm5hbWUsCiAJCQkJCQkJCQkJICAgc2l6ZW9mKG9yaWdpbm5hbWUp KTsKLQkJYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnLm9yaWdpbl9uYW1lID0gTWVtb3J5Q29udGV4 dFN0cmR1cChBcHBseUNvbnRleHQsCi0JCQkJCQkJCQkJCQkJCQkJICAgb3JpZ2lubmFtZSk7CisJ CXNldF9hcHBseV9lcnJvcl9jb250ZXh0X29yaWdpbihvcmlnaW5uYW1lKTsKIAl9CiAJZWxzZQog CXsKLQkJLyogVGhpcyBpcyBtYWluIGFwcGx5IHdvcmtlciAqLworCQkvKiBUaGlzIGlzIHRoZSBs ZWFkZXIgYXBwbHkgd29ya2VyICovCiAJCVJlcE9yaWdpbklkIG9yaWdpbmlkOwogCQlUaW1lTGlu ZUlECXN0YXJ0cG9pbnRUTEk7CiAJCWNoYXIJICAgKmVycjsKQEAgLTM3NTUsNyArNDUxNiw3IEBA IEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAkJb3JpZ2luaWQgPSByZXBsb3JpZ2lu X2J5X25hbWUob3JpZ2lubmFtZSwgdHJ1ZSk7CiAJCWlmICghT2lkSXNWYWxpZChvcmlnaW5pZCkp CiAJCQlvcmlnaW5pZCA9IHJlcGxvcmlnaW5fY3JlYXRlKG9yaWdpbm5hbWUpOwotCQlyZXBsb3Jp Z2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQpOworCQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAo b3JpZ2luaWQsIDApOwogCQlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luID0gb3JpZ2luaWQ7CiAJ CW9yaWdpbl9zdGFydHBvcyA9IHJlcGxvcmlnaW5fc2Vzc2lvbl9nZXRfcHJvZ3Jlc3MoZmFsc2Up OwogCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKQEAgLTM3NzMsMTIgKzQ1MzQsNyBAQCBB cHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJCSAqLwogCQkodm9pZCkgd2FscmN2X2lk ZW50aWZ5X3N5c3RlbShMb2dSZXBXb3JrZXJXYWxSY3ZDb25uLCAmc3RhcnRwb2ludFRMSSk7CiAK LQkJLyoKLQkJICogQWxsb2NhdGUgdGhlIG9yaWdpbiBuYW1lIGluIGxvbmctbGl2ZWQgY29udGV4 dCBmb3IgZXJyb3IgY29udGV4dAotCQkgKiBtZXNzYWdlLgotCQkgKi8KLQkJYXBwbHlfZXJyb3Jf Y2FsbGJhY2tfYXJnLm9yaWdpbl9uYW1lID0gTWVtb3J5Q29udGV4dFN0cmR1cChBcHBseUNvbnRl eHQsCi0JCQkJCQkJCQkJCQkJCQkJICAgb3JpZ2lubmFtZSk7CisJCXNldF9hcHBseV9lcnJvcl9j b250ZXh0X29yaWdpbihvcmlnaW5uYW1lKTsKIAl9CiAKIAkvKgpAQCAtMzc5NiwxMyArNDU1Miwz NiBAQCBBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAKIAlzZXJ2ZXJfdmVyc2lvbiA9 IHdhbHJjdl9zZXJ2ZXJfdmVyc2lvbihMb2dSZXBXb3JrZXJXYWxSY3ZDb25uKTsKIAlvcHRpb25z LnByb3RvLmxvZ2ljYWwucHJvdG9fdmVyc2lvbiA9CisJCXNlcnZlcl92ZXJzaW9uID49IDE2MDAw MCA/IExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVNIDoKIAkJc2Vy dmVyX3ZlcnNpb24gPj0gMTUwMDAwID8gTE9HSUNBTFJFUF9QUk9UT19UV09QSEFTRV9WRVJTSU9O X05VTSA6CiAJCXNlcnZlcl92ZXJzaW9uID49IDE0MDAwMCA/IExPR0lDQUxSRVBfUFJPVE9fU1RS RUFNX1ZFUlNJT05fTlVNIDoKIAkJTE9HSUNBTFJFUF9QUk9UT19WRVJTSU9OX05VTTsKIAogCW9w dGlvbnMucHJvdG8ubG9naWNhbC5wdWJsaWNhdGlvbl9uYW1lcyA9IE15U3Vic2NyaXB0aW9uLT5w dWJsaWNhdGlvbnM7CiAJb3B0aW9ucy5wcm90by5sb2dpY2FsLmJpbmFyeSA9IE15U3Vic2NyaXB0 aW9uLT5iaW5hcnk7Ci0Jb3B0aW9ucy5wcm90by5sb2dpY2FsLnN0cmVhbWluZyA9IE15U3Vic2Ny aXB0aW9uLT5zdHJlYW07CisKKwkvKgorCSAqIEFzc2lnbiB0aGUgYXBwcm9wcmlhdGUgb3B0aW9u IHZhbHVlIGZvciBzdHJlYW1pbmcgb3B0aW9uIGFjY29yZGluZyB0bworCSAqIHRoZSAnc3RyZWFt aW5nJyBtb2RlIGFuZCB0aGUgcHVibGlzaGVyJ3MgYWJpbGl0eSB0byBzdXBwb3J0IHRoYXQgbW9k ZS4KKwkgKi8KKwlpZiAoc2VydmVyX3ZlcnNpb24gPj0gMTYwMDAwICYmCisJCU15U3Vic2NyaXB0 aW9uLT5zdHJlYW0gPT0gTE9HSUNBTFJFUF9TVFJFQU1fUEFSQUxMRUwpCisJeworCQlvcHRpb25z LnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nX3N0ciA9ICJwYXJhbGxlbCI7CisJCU15TG9naWNhbFJl cFdvcmtlci0+cGFyYWxsZWxfYXBwbHkgPSB0cnVlOworCX0KKwllbHNlIGlmIChzZXJ2ZXJfdmVy c2lvbiA+PSAxNDAwMDAgJiYKKwkJCSBNeVN1YnNjcmlwdGlvbi0+c3RyZWFtICE9IExPR0lDQUxS RVBfU1RSRUFNX09GRikKKwl7CisJCW9wdGlvbnMucHJvdG8ubG9naWNhbC5zdHJlYW1pbmdfc3Ry ID0gIm9uIjsKKwkJTXlMb2dpY2FsUmVwV29ya2VyLT5wYXJhbGxlbF9hcHBseSA9IGZhbHNlOwor CX0KKwllbHNlCisJeworCQlvcHRpb25zLnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nX3N0ciA9IE5V TEw7CisJCU15TG9naWNhbFJlcFdvcmtlci0+cGFyYWxsZWxfYXBwbHkgPSBmYWxzZTsKKwl9CisK IAlvcHRpb25zLnByb3RvLmxvZ2ljYWwudHdvcGhhc2UgPSBmYWxzZTsKIAlvcHRpb25zLnByb3Rv LmxvZ2ljYWwub3JpZ2luID0gcHN0cmR1cChNeVN1YnNjcmlwdGlvbi0+b3JpZ2luKTsKIApAQCAt Mzg5OSw2ICs0Njc4LDE1IEBAIElzTG9naWNhbFdvcmtlcih2b2lkKQogCXJldHVybiBNeUxvZ2lj YWxSZXBXb3JrZXIgIT0gTlVMTDsKIH0KIAorLyoKKyAqIElzIGN1cnJlbnQgcHJvY2VzcyBhIGxv Z2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyPworICovCitib29sCitJc0xv Z2ljYWxQYXJhbGxlbEFwcGx5V29ya2VyKHZvaWQpCit7CisJcmV0dXJuIElzTG9naWNhbFdvcmtl cigpICYmIGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpOworfQorCiAvKgogICogU3RhcnQgc2tp cHBpbmcgY2hhbmdlcyBvZiB0aGUgdHJhbnNhY3Rpb24gaWYgdGhlIGdpdmVuIExTTiBtYXRjaGVz IHRoZQogICogTFNOIHNwZWNpZmllZCBieSBzdWJzY3JpcHRpb24ncyBza2lwbHNuLgpAQCAtMzk2 MSw3ICs0NzQ5LDcgQEAgY2xlYXJfc3Vic2NyaXB0aW9uX3NraXBfbHNuKFhMb2dSZWNQdHIgZmlu aXNoX2xzbikKIAlYTG9nUmVjUHRyCW15c2tpcGxzbiA9IE15U3Vic2NyaXB0aW9uLT5za2lwbHNu OwogCWJvb2wJCXN0YXJ0ZWRfdHggPSBmYWxzZTsKIAotCWlmIChsaWtlbHkoWExvZ1JlY1B0cklz SW52YWxpZChteXNraXBsc24pKSkKKwlpZiAobGlrZWx5KFhMb2dSZWNQdHJJc0ludmFsaWQobXlz a2lwbHNuKSkgfHwgYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCiAJCXJldHVybjsKIAogCWlm ICghSXNUcmFuc2FjdGlvblN0YXRlKCkpCkBAIC00MDMzLDcgKzQ4MjEsNyBAQCBjbGVhcl9zdWJz Y3JpcHRpb25fc2tpcF9sc24oWExvZ1JlY1B0ciBmaW5pc2hfbHNuKQogfQogCiAvKiBFcnJvciBj YWxsYmFjayB0byBnaXZlIG1vcmUgY29udGV4dCBpbmZvIGFib3V0IHRoZSBjaGFuZ2UgYmVpbmcg YXBwbGllZCAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQg KmFyZykKIHsKIAlBcHBseUVycm9yQ2FsbGJhY2tBcmcgKmVycmFyZyA9ICZhcHBseV9lcnJvcl9j YWxsYmFja19hcmc7CkBAIC00MDYxLDIzICs0ODQ5LDQ3IEBAIGFwcGx5X2Vycm9yX2NhbGxiYWNr KHZvaWQgKmFyZykKIAkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkLAogCQkJCQkgICBMU05fRk9S TUFUX0FSR1MoZXJyYXJnLT5maW5pc2hfbHNuKSk7CiAJfQotCWVsc2UgaWYgKGVycmFyZy0+cmVt b3RlX2F0dG51bSA8IDApCi0JCWVycmNvbnRleHQoInByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9y IHJlcGxpY2F0aW9uIG9yaWdpbiBcIiVzXCIgZHVyaW5nIG1lc3NhZ2UgdHlwZSBcIiVzXCIgZm9y IHJlcGxpY2F0aW9uIHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUs IGZpbmlzaGVkIGF0ICVYLyVYIiwKLQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1lLAotCQkJCSAg IGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKGVycmFyZy0+Y29tbWFuZCksCi0JCQkJICAgZXJyYXJn LT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAotCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwu cmVsbmFtZSwKLQkJCQkgICBlcnJhcmctPnJlbW90ZV94aWQsCi0JCQkJICAgTFNOX0ZPUk1BVF9B UkdTKGVycmFyZy0+ZmluaXNoX2xzbikpOwogCWVsc2UKLQkJZXJyY29udGV4dCgicHJvY2Vzc2lu ZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgbWVzc2Fn ZSB0eXBlIFwiJXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiBj b2x1bW4gXCIlc1wiIGluIHRyYW5zYWN0aW9uICV1LCBmaW5pc2hlZCBhdCAlWC8lWCIsCi0JCQkJ ICAgZXJyYXJnLT5vcmlnaW5fbmFtZSwKLQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShl cnJhcmctPmNvbW1hbmQpLAotCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwK LQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsCi0JCQkJICAgZXJyYXJnLT5y ZWwtPnJlbW90ZXJlbC5hdHRuYW1lc1tlcnJhcmctPnJlbW90ZV9hdHRudW1dLAotCQkJCSAgIGVy cmFyZy0+cmVtb3RlX3hpZCwKLQkJCQkgICBMU05fRk9STUFUX0FSR1MoZXJyYXJnLT5maW5pc2hf bHNuKSk7CisJeworCQlpZiAoZXJyYXJnLT5yZW1vdGVfYXR0bnVtIDwgMCkKKwkJeworCQkJaWYg KFhMb2dSZWNQdHJJc0ludmFsaWQoZXJyYXJnLT5maW5pc2hfbHNuKSkKKwkJCQllcnJjb250ZXh0 KCJwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1 cmluZyBtZXNzYWdlIHR5cGUgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24g XCIlcy4lc1wiIGluIHRyYW5zYWN0aW9uICV1IiwKKwkJCQkJCSAgIGVycmFyZy0+b3JpZ2luX25h bWUsCisJCQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLAor CQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAorCQkJCQkJICAgZXJyYXJn LT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkKTsK KwkJCWVsc2UKKwkJCQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBs aWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBtZXNzYWdlIHR5cGUgXCIlc1wiIGZvciByZXBs aWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGluIHRyYW5zYWN0aW9uICV1LCBmaW5p c2hlZCBhdCAlWC8lWCIsCisJCQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1lLAorCQkJCQkJICAg bG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoZXJyYXJnLT5jb21tYW5kKSwKKwkJCQkJCSAgIGVycmFy Zy0+cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVy ZWwucmVsbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCwKKwkJCQkJCSAgIExTTl9G T1JNQVRfQVJHUyhlcnJhcmctPmZpbmlzaF9sc24pKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWlm IChYTG9nUmVjUHRySXNJbnZhbGlkKGVycmFyZy0+ZmluaXNoX2xzbikpCisJCQkJZXJyY29udGV4 dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIiBk dXJpbmcgbWVzc2FnZSB0eXBlIFwiJXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0aW9u IFwiJXMuJXNcIiBjb2x1bW4gXCIlc1wiIGluIHRyYW5zYWN0aW9uICV1IiwKKwkJCQkJCSAgIGVy cmFyZy0+b3JpZ2luX25hbWUsCisJCQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJh cmctPmNvbW1hbmQpLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAor CQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAorCQkJCQkJICAgZXJyYXJn LT5yZWwtPnJlbW90ZXJlbC5hdHRuYW1lc1tlcnJhcmctPnJlbW90ZV9hdHRudW1dLAorCQkJCQkJ ICAgZXJyYXJnLT5yZW1vdGVfeGlkKTsKKwkJCWVsc2UKKwkJCQllcnJjb250ZXh0KCJwcm9jZXNz aW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBtZXNz YWdlIHR5cGUgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wi IGNvbHVtbiBcIiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUsIGZpbmlzaGVkIGF0ICVYLyVYIiwKKwkJ CQkJCSAgIGVycmFyZy0+b3JpZ2luX25hbWUsCisJCQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2Vf dHlwZShlcnJhcmctPmNvbW1hbmQpLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5u c3BuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAorCQkJCQkJ ICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5hdHRuYW1lc1tlcnJhcmctPnJlbW90ZV9hdHRudW1d LAorCQkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkLAorCQkJCQkJICAgTFNOX0ZPUk1BVF9BUkdT KGVycmFyZy0+ZmluaXNoX2xzbikpOworCQl9CisJfQogfQogCiAvKiBTZXQgdHJhbnNhY3Rpb24g aW5mb3JtYXRpb24gb2YgYXBwbHkgZXJyb3IgY2FsbGJhY2sgKi8KQEAgLTQwOTcsMyArNDkwOSw1 MiBAQCByZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8odm9pZCkKIAlhcHBseV9lcnJvcl9j YWxsYmFja19hcmcucmVtb3RlX2F0dG51bSA9IC0xOwogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0 X3hhY3QoSW52YWxpZFRyYW5zYWN0aW9uSWQsIEludmFsaWRYTG9nUmVjUHRyKTsKIH0KKworLyoK KyAqIEFsbG9jYXRlIHRoZSBvcmlnaW4gbmFtZSBpbiBsb25nLWxpdmVkIGNvbnRleHQgZm9yIGVy cm9yIGNvbnRleHQgbWVzc2FnZS4KKyAqLwordm9pZAorc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRf b3JpZ2luKGNoYXIgKm9yaWdpbm5hbWUpCit7CisJYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnLm9y aWdpbl9uYW1lID0gTWVtb3J5Q29udGV4dFN0cmR1cChBcHBseUNvbnRleHQsCisJCQkJCQkJCQkJ CQkJCQkgICBvcmlnaW5uYW1lKTsKK30KKworLyoKKyAqIFJldHVybiB0aGUgYWN0aW9uIHRvIGJl IHRha2VuIGZvciB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb24uICp3aW5mbyBpcworICogYXNzaWduZWQg dG8gdGhlIGRlc3RpbmF0aW9uIHBhcmFsbGVsIHdvcmtlciBpbmZvIHdoZW4gdGhlIGdpdmVuCisg KiB0cmFuc2FjdGlvbiBpcyBiZWluZyBwcm9jZXNzZWQgdXNpbmcgYSBwYXJhbGxlbCBhcHBseSB3 b3JrZXIuCisgKi8KK3N0YXRpYyBUcmFuc0FwcGx5QWN0aW9uCitnZXRfdHJhbnNhY3Rpb25fYXBw bHlfYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLCBQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKndp bmZvKQoreworCSp3aW5mbyA9IE5VTEw7CisKKwlpZiAoYW1fcGFyYWxsZWxfYXBwbHlfd29ya2Vy KCkpCisJeworCQlyZXR1cm4gVFJBTlNfUEFSQUxMRUxfQVBQTFk7CisJfQorCWVsc2UgaWYgKGlu X3JlbW90ZV90cmFuc2FjdGlvbikKKwl7CisJCXJldHVybiBUUkFOU19MRUFERVJfQVBQTFk7CisJ fQorCisJLyoKKwkgKiBDaGVjayBpZiB3ZSBhcmUgcHJvY2Vzc2luZyB0aGlzIHRyYW5zYWN0aW9u IHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkKKwkgKiB3b3JrZXIuCisJICovCisJKndpbmZvID0gcGFf ZmluZF93b3JrZXIoeGlkKTsKKworCWlmICghKndpbmZvKQorCXsKKwkJcmV0dXJuIFRSQU5TX0xF QURFUl9TRVJJQUxJWkU7CisJfQorCWVsc2UgaWYgKCgqd2luZm8pLT5zZXJpYWxpemVfY2hhbmdl cykKKwl7CisJCXJldHVybiBUUkFOU19MRUFERVJfUEFSVElBTF9TRVJJQUxJWkU7CisJfQorCWVs c2UKKwl7CisJCXJldHVybiBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDsKKwl9Cit9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwppbmRleCBjYTQ2ZmJh M2FmLi40MGM0NGJiN2U5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291 dHB1dC9wZ291dHB1dC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bn b3V0cHV0LmMKQEAgLTE4LDYgKzE4LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3B1YmxpY2F0 aW9uX3JlbC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgiCiAjaW5jbHVk ZSAiY29tbWFuZHMvZGVmcmVtLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc3Vic2NyaXB0aW9uY21k cy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAiZm1nci5oIgog I2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgpAQCAtMjkwLDcgKzI5MSw3IEBAIHBhcnNlX291 dHB1dF9wYXJhbWV0ZXJzKExpc3QgKm9wdGlvbnMsIFBHT3V0cHV0RGF0YSAqZGF0YSkKIAlib29s CQlvcmlnaW5fb3B0aW9uX2dpdmVuID0gZmFsc2U7CiAKIAlkYXRhLT5iaW5hcnkgPSBmYWxzZTsK LQlkYXRhLT5zdHJlYW1pbmcgPSBmYWxzZTsKKwlkYXRhLT5zdHJlYW1pbmcgPSBMT0dJQ0FMUkVQ X1NUUkVBTV9PRkY7CiAJZGF0YS0+bWVzc2FnZXMgPSBmYWxzZTsKIAlkYXRhLT50d29fcGhhc2Ug PSBmYWxzZTsKIApAQCAtMzY5LDcgKzM3MCw3IEBAIHBhcnNlX291dHB1dF9wYXJhbWV0ZXJzKExp c3QgKm9wdGlvbnMsIFBHT3V0cHV0RGF0YSAqZGF0YSkKIAkJCQkJCSBlcnJtc2coImNvbmZsaWN0 aW5nIG9yIHJlZHVuZGFudCBvcHRpb25zIikpKTsKIAkJCXN0cmVhbWluZ19naXZlbiA9IHRydWU7 CiAKLQkJCWRhdGEtPnN0cmVhbWluZyA9IGRlZkdldEJvb2xlYW4oZGVmZWwpOworCQkJZGF0YS0+ c3RyZWFtaW5nID0gZGVmR2V0U3RyZWFtaW5nTW9kZShkZWZlbCk7CiAJCX0KIAkJZWxzZSBpZiAo c3RyY21wKGRlZmVsLT5kZWZuYW1lLCAidHdvX3BoYXNlIikgPT0gMCkKIAkJewpAQCAtNDYxLDEz ICs0NjIsMjAgQEAgcGdvdXRwdXRfc3RhcnR1cChMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgs IE91dHB1dFBsdWdpbk9wdGlvbnMgKm9wdCwKIAkJICogd2Ugb25seSBhbGxvdyBpdCB3aXRoIHN1 ZmZpY2llbnQgdmVyc2lvbiBvZiB0aGUgcHJvdG9jb2wsIGFuZCB3aGVuCiAJCSAqIHRoZSBvdXRw dXQgcGx1Z2luIHN1cHBvcnRzIGl0LgogCQkgKi8KLQkJaWYgKCFkYXRhLT5zdHJlYW1pbmcpCisJ CWlmIChkYXRhLT5zdHJlYW1pbmcgPT0gTE9HSUNBTFJFUF9TVFJFQU1fT0ZGKQogCQkJY3R4LT5z dHJlYW1pbmcgPSBmYWxzZTsKLQkJZWxzZSBpZiAoZGF0YS0+cHJvdG9jb2xfdmVyc2lvbiA8IExP R0lDQUxSRVBfUFJPVE9fU1RSRUFNX1ZFUlNJT05fTlVNKQorCQllbHNlIGlmIChkYXRhLT5zdHJl YW1pbmcgPT0gTE9HSUNBTFJFUF9TVFJFQU1fT04gJiYKKwkJCQkgZGF0YS0+cHJvdG9jb2xfdmVy c2lvbiA8IExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1ZFUlNJT05fTlVNKQogCQkJZXJlcG9ydChF UlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCiAJ CQkJCSBlcnJtc2coInJlcXVlc3RlZCBwcm90b192ZXJzaW9uPSVkIGRvZXMgbm90IHN1cHBvcnQg c3RyZWFtaW5nLCBuZWVkICVkIG9yIGhpZ2hlciIsCiAJCQkJCQkJZGF0YS0+cHJvdG9jb2xfdmVy c2lvbiwgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fVkVSU0lPTl9OVU0pKSk7CisJCWVsc2UgaWYg KGRhdGEtPnN0cmVhbWluZyA9PSBMT0dJQ0FMUkVQX1NUUkVBTV9QQVJBTExFTCAmJgorCQkJCSBk YXRhLT5wcm90b2NvbF92ZXJzaW9uIDwgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxf VkVSU0lPTl9OVU0pCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lO VkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJIGVycm1zZygicmVxdWVzdGVkIHByb3RvX3Zl cnNpb249JWQgZG9lcyBub3Qgc3VwcG9ydCBwYXJhbGxlbCBzdHJlYW1pbmcsIG5lZWQgJWQgb3Ig aGlnaGVyIiwKKwkJCQkJCQlkYXRhLT5wcm90b2NvbF92ZXJzaW9uLCBMT0dJQ0FMUkVQX1BST1RP X1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05VTSkpKTsKIAkJZWxzZSBpZiAoIWN0eC0+c3RyZWFt aW5nKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BB UkFNRVRFUl9WQUxVRSksCkBAIC0xODQxLDYgKzE4NDksOCBAQCBwZ291dHB1dF9zdHJlYW1fYWJv cnQoc3RydWN0IExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKIAkJCQkJICBYTG9nUmVjUHRy IGFib3J0X2xzbikKIHsKIAlSZW9yZGVyQnVmZmVyVFhOICp0b3B0eG47CisJUEdPdXRwdXREYXRh ICpkYXRhID0gKFBHT3V0cHV0RGF0YSAqKSBjdHgtPm91dHB1dF9wbHVnaW5fcHJpdmF0ZTsKKwli b29sCQl3cml0ZV9hYm9ydF9pbmZvID0gKGRhdGEtPnN0cmVhbWluZyA9PSBMT0dJQ0FMUkVQX1NU UkVBTV9QQVJBTExFTCk7CiAKIAkvKgogCSAqIFRoZSBhYm9ydCBzaG91bGQgaGFwcGVuIG91dHNp ZGUgc3RyZWFtaW5nIGJsb2NrLCBldmVuIGZvciBzdHJlYW1lZApAQCAtMTg1NCw3ICsxODY0LDkg QEAgcGdvdXRwdXRfc3RyZWFtX2Fib3J0KHN0cnVjdCBMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpj dHgsCiAJQXNzZXJ0KHJidHhuX2lzX3N0cmVhbWVkKHRvcHR4bikpOwogCiAJT3V0cHV0UGx1Z2lu UHJlcGFyZVdyaXRlKGN0eCwgdHJ1ZSk7Ci0JbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQo Y3R4LT5vdXQsIHRvcHR4bi0+eGlkLCB0eG4tPnhpZCk7CisJbG9naWNhbHJlcF93cml0ZV9zdHJl YW1fYWJvcnQoY3R4LT5vdXQsIHRvcHR4bi0+eGlkLCB0eG4tPnhpZCwgYWJvcnRfbHNuLAorCQkJ CQkJCQkgIHR4bi0+eGFjdF90aW1lLmFib3J0X3RpbWUsIHdyaXRlX2Fib3J0X2luZm8pOworCiAJ T3V0cHV0UGx1Z2luV3JpdGUoY3R4LCB0cnVlKTsKIAogCWNsZWFudXBfcmVsX3N5bmNfY2FjaGUo dG9wdHhuLT54aWQsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3Byb2NzaWduYWwuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwppbmRl eCA3NzY3NjU3ZjI3Li43YzAwOWQ1MjVhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9wcm9jc2lnbmFsLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25h bC5jCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiY29tbWFuZHMvYXN5bmMuaCIKICNpbmNs dWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJyZXBsaWNh dGlvbi9sb2dpY2Fsd29ya2VyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2Fsc2VuZGVyLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9jb25kaXRpb25fdmFyaWFibGUuaCIKICNpbmNsdWRlICJzdG9y YWdlL2lwYy5oIgpAQCAtNjU3LDYgKzY1OCw5IEBAIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVy KFNJR05BTF9BUkdTKQogCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19MT0dfTUVNT1JZX0NP TlRFWFQpKQogCQlIYW5kbGVMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KCk7CiAKKwlpZiAoQ2hl Y2tQcm9jU2lnbmFsKFBST0NTSUdfUEFSQUxMRUxfQVBQTFlfTUVTU0FHRSkpCisJCUhhbmRsZVBh cmFsbGVsQXBwbHlNZXNzYWdlSW50ZXJydXB0KCk7CisKIAlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBS T0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfREFUQUJBU0UpKQogCQlSZWNvdmVyeUNvbmZsaWN0SW50 ZXJydXB0KFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfREFUQUJBU0UpOwogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9s bWdyL2xtZ3IuYwppbmRleCAxMDQzMDY4YmFjLi4yZjE3MWY1NTI4IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1n ci9sbWdyLmMKQEAgLTExMTcsNiArMTExNyw0NSBAQCBVbmxvY2tTaGFyZWRPYmplY3RGb3JTZXNz aW9uKE9pZCBjbGFzc2lkLCBPaWQgb2JqaWQsIHVpbnQxNiBvYmpzdWJpZCwKIAlMb2NrUmVsZWFz ZSgmdGFnLCBsb2NrbW9kZSwgdHJ1ZSk7CiB9CiAKKy8qCisgKgkJTG9ja0FwcGx5VHJhbnNhY3Rp b25Gb3JTZXNzaW9uCisgKgorICogT2J0YWluIGEgc2Vzc2lvbi1sZXZlbCBsb2NrIG9uIGEgdHJh bnNhY3Rpb24gYmVpbmcgYXBwbGllZCBvbiBhIGxvZ2ljYWwKKyAqIHJlcGxpY2F0aW9uIHN1YnNj cmliZXIuIFNlZSBMb2NrUmVsYXRpb25JZEZvclNlc3Npb24gZm9yIG5vdGVzIGFib3V0CisgKiBz ZXNzaW9uLWxldmVsIGxvY2tzLgorICovCit2b2lkCitMb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNl c3Npb24oT2lkIHN1Ym9pZCwgVHJhbnNhY3Rpb25JZCB4aWQsIHVpbnQxNiBvYmppZCwKKwkJCQkJ CQkgICBMT0NLTU9ERSBsb2NrbW9kZSkKK3sKKwlMT0NLVEFHCQl0YWc7CisKKwlTRVRfTE9DS1RB R19BUFBMWV9UUkFOU0FDVElPTih0YWcsCisJCQkJCQkJCSAgTXlEYXRhYmFzZUlkLAorCQkJCQkJ CQkgIHN1Ym9pZCwKKwkJCQkJCQkJICB4aWQsCisJCQkJCQkJCSAgb2JqaWQpOworCisJKHZvaWQp IExvY2tBY3F1aXJlKCZ0YWcsIGxvY2ttb2RlLCB0cnVlLCBmYWxzZSk7Cit9CisKKy8qCisgKgkJ VW5sb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNlc3Npb24KKyAqLwordm9pZAorVW5sb2NrQXBwbHlU cmFuc2FjdGlvbkZvclNlc3Npb24oT2lkIHN1Ym9pZCwgVHJhbnNhY3Rpb25JZCB4aWQsIHVpbnQx NiBvYmppZCwKKwkJCQkJCQkJIExPQ0tNT0RFIGxvY2ttb2RlKQoreworCUxPQ0tUQUcJCXRhZzsK KworCVNFVF9MT0NLVEFHX0FQUExZX1RSQU5TQUNUSU9OKHRhZywKKwkJCQkJCQkJICBNeURhdGFi YXNlSWQsCisJCQkJCQkJCSAgc3Vib2lkLAorCQkJCQkJCQkgIHhpZCwKKwkJCQkJCQkJICBvYmpp ZCk7CisKKwlMb2NrUmVsZWFzZSgmdGFnLCBsb2NrbW9kZSwgdHJ1ZSk7Cit9CiAKIC8qCiAgKiBB cHBlbmQgYSBkZXNjcmlwdGlvbiBvZiBhIGxvY2thYmxlIG9iamVjdCB0byBidWYuCkBAIC0xMjAy LDYgKzEyNDEsMTMgQEAgRGVzY3JpYmVMb2NrVGFnKFN0cmluZ0luZm8gYnVmLCBjb25zdCBMT0NL VEFHICp0YWcpCiAJCQkJCQkJIHRhZy0+bG9ja3RhZ19maWVsZDMsCiAJCQkJCQkJIHRhZy0+bG9j a3RhZ19maWVsZDQpOwogCQkJYnJlYWs7CisJCWNhc2UgTE9DS1RBR19BUFBMWV9UUkFOU0FDVElP TjoKKwkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLAorCQkJCQkJCSBfKCJyZW1vdGUgdHJhbnNhY3Rp b24gJXUgb2Ygc3Vic2NyaXB0aW9uICV1IG9mIGRhdGFiYXNlICV1IiksCisJCQkJCQkJIHRhZy0+ bG9ja3RhZ19maWVsZDMsCisJCQkJCQkJIHRhZy0+bG9ja3RhZ19maWVsZDIsCisJCQkJCQkJIHRh Zy0+bG9ja3RhZ19maWVsZDEpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQlhcHBlbmRTdHJp bmdJbmZvKGJ1ZiwKIAkJCQkJCQkgXygidW5yZWNvZ25pemVkIGxvY2t0YWcgdHlwZSAlZCIpLApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNv cC9wb3N0Z3Jlcy5jCmluZGV4IDAxZDI2NGI1YWIuLmQ1Mjk1YzQ1ZmEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVz LmMKQEAgLTMzOTEsNiArMzM5MSw5IEBAIFByb2Nlc3NJbnRlcnJ1cHRzKHZvaWQpCiAKIAlpZiAo TG9nTWVtb3J5Q29udGV4dFBlbmRpbmcpCiAJCVByb2Nlc3NMb2dNZW1vcnlDb250ZXh0SW50ZXJy dXB0KCk7CisKKwlpZiAoUGFyYWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nKQorCQlIYW5kbGVQYXJh bGxlbEFwcGx5TWVzc2FnZXMoKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dh aXRfZXZlbnQuYwppbmRleCBiMmFiZDc1ZGRiLi4xZmFiNDVlNzQwIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCkBAIC0yMzAsNiArMjMwLDkgQEAgcGdzdGF0X2dldF93 YWl0X2FjdGl2aXR5KFdhaXRFdmVudEFjdGl2aXR5IHcpCiAJCWNhc2UgV0FJVF9FVkVOVF9MT0dJ Q0FMX0xBVU5DSEVSX01BSU46CiAJCQlldmVudF9uYW1lID0gIkxvZ2ljYWxMYXVuY2hlck1haW4i OwogCQkJYnJlYWs7CisJCWNhc2UgV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX01B SU46CisJCQlldmVudF9uYW1lID0gIkxvZ2ljYWxQYXJhbGxlbEFwcGx5TWFpbiI7CisJCQlicmVh azsKIAkJY2FzZSBXQUlUX0VWRU5UX1JFQ09WRVJZX1dBTF9TVFJFQU06CiAJCQlldmVudF9uYW1l ID0gIlJlY292ZXJ5V2FsU3RyZWFtIjsKIAkJCWJyZWFrOwpAQCAtMzg4LDYgKzM5MSw5IEBAIHBn c3RhdF9nZXRfd2FpdF9pcGMoV2FpdEV2ZW50SVBDIHcpCiAJCWNhc2UgV0FJVF9FVkVOVF9IQVNI X0dST1dfQlVDS0VUU19SRUlOU0VSVDoKIAkJCWV2ZW50X25hbWUgPSAiSGFzaEdyb3dCdWNrZXRz UmVpbnNlcnQiOwogCQkJYnJlYWs7CisJCWNhc2UgV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVM X0FQUExZX1NUQVRFX0NIQU5HRToKKwkJCWV2ZW50X25hbWUgPSAiTG9naWNhbFBhcmFsbGVsQXBw bHlTdGF0ZUNoYW5nZSI7CisJCQlicmVhazsKIAkJY2FzZSBXQUlUX0VWRU5UX0xPR0lDQUxfU1lO Q19EQVRBOgogCQkJZXZlbnRfbmFtZSA9ICJMb2dpY2FsU3luY0RhdGEiOwogCQkJYnJlYWs7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbG9ja2Z1bmNzLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvbG9ja2Z1bmNzLmMKaW5kZXggZjliMzI0ZWZlYy4uM2JmMDQ4MzFmMyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2xvY2tmdW5jcy5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9sb2NrZnVuY3MuYwpAQCAtMzcsMTAgKzM3LDExIEBAIGNvbnN0IGNoYXIg KmNvbnN0IExvY2tUYWdUeXBlTmFtZXNbXSA9IHsKIAkic3BlY3Rva2VuIiwKIAkib2JqZWN0IiwK IAkidXNlcmxvY2siLAotCSJhZHZpc29yeSIKKwkiYWR2aXNvcnkiLAorCSJhcHBseXRyYW5zYWN0 aW9uIgogfTsKIAotU3RhdGljQXNzZXJ0RGVjbChsZW5ndGhvZihMb2NrVGFnVHlwZU5hbWVzKSA9 PSAoTE9DS1RBR19BRFZJU09SWSArIDEpLAorU3RhdGljQXNzZXJ0RGVjbChsZW5ndGhvZihMb2Nr VGFnVHlwZU5hbWVzKSA9PSAoTE9DS1RBR19MQVNUX1RZUEUgKyAxKSwKIAkJCQkgImFycmF5IGxl bmd0aCBtaXNtYXRjaCIpOwogCiAvKiBUaGlzIG11c3QgbWF0Y2ggZW51bSBQcmVkaWNhdGVMb2Nr VGFyZ2V0VHlwZSAocHJlZGljYXRlX2ludGVybmFscy5oKSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1 Y190YWJsZXMuYwppbmRleCA0MzZhZmUxZDIxLi5iYzU2YzMyMzczIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9t aXNjL2d1Y190YWJsZXMuYwpAQCAtMjk5Niw2ICsyOTk2LDE4IEBAIHN0cnVjdCBjb25maWdfaW50 IENvbmZpZ3VyZU5hbWVzSW50W10gPQogCQlOVUxMLCBOVUxMLCBOVUxMCiAJfSwKIAorCXsKKwkJ eyJtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uIiwKKwkJCVBHQ19T SUdIVVAsCisJCQlSRVBMSUNBVElPTl9TVUJTQ1JJQkVSUywKKwkJCWdldHRleHRfbm9vcCgiTWF4 aW11bSBudW1iZXIgb2YgcGFyYWxsZWwgYXBwbHkgd29ya2VycyBwZXIgc3Vic2NyaXB0aW9uLiIp LAorCQkJTlVMTCwKKwkJfSwKKwkJJm1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJz Y3JpcHRpb24sCisJCTIsIDAsIE1BWF9QQVJBTExFTF9XT1JLRVJfTElNSVQsCisJCU5VTEwsIE5V TEwsIE5VTEwKKwl9LAorCiAJewogCQl7ImxvZ19yb3RhdGlvbl9hZ2UiLCBQR0NfU0lHSFVQLCBM T0dHSU5HX1dIRVJFLAogCQkJZ2V0dGV4dF9ub29wKCJTZXRzIHRoZSBhbW91bnQgb2YgdGltZSB0 byB3YWl0IGJlZm9yZSBmb3JjaW5nICIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21p c2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdy ZXNxbC5jb25mLnNhbXBsZQppbmRleCA1YWZkZWIwNGRlLi5jMmFkYTkyMDU0IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCkBAIC0zNTksNiArMzU5 LDcgQEAKICNtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzID0gNAkjIHRha2VuIGZyb20g bWF4X3dvcmtlcl9wcm9jZXNzZXMKIAkJCQkJIyAoY2hhbmdlIHJlcXVpcmVzIHJlc3RhcnQpCiAj bWF4X3N5bmNfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uID0gMgkjIHRha2VuIGZyb20gbWF4X2xv Z2ljYWxfcmVwbGljYXRpb25fd29ya2VycworI21heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Bl cl9zdWJzY3JpcHRpb24gPSAyCSMgdGFrZW4gZnJvbSBtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93 b3JrZXJzCiAKIAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggNDRkOTU3 YzAzOC4uZjQ1NGIzMWM1OCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwor KysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC00NTMzLDcgKzQ1MzMsNyBAQCBnZXRT dWJzY3JpcHRpb25zKEFyY2hpdmUgKmZvdXQpCiAJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0g MTQwMDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBzLnN1YnN0cmVhbSxcbiIp OwogCWVsc2UKLQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgZmFsc2UgQVMgc3Vic3Ry ZWFtLFxuIik7CisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiICdmJyBBUyBzdWJzdHJl YW0sXG4iKTsKIAogCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE1MDAwMCkKIAkJYXBwZW5k UFFFeHBCdWZmZXJTdHIocXVlcnksCkBAIC00NjcwLDggKzQ2NzAsMTAgQEAgZHVtcFN1YnNjcmlw dGlvbihBcmNoaXZlICpmb3V0LCBjb25zdCBTdWJzY3JpcHRpb25JbmZvICpzdWJpbmZvKQogCWlm IChzdHJjbXAoc3ViaW5mby0+c3ViYmluYXJ5LCAidCIpID09IDApCiAJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKHF1ZXJ5LCAiLCBiaW5hcnkgPSB0cnVlIik7CiAKLQlpZiAoc3RyY21wKHN1YmluZm8t PnN1YnN0cmVhbSwgImYiKSAhPSAwKQorCWlmIChzdHJjbXAoc3ViaW5mby0+c3Vic3RyZWFtLCAi dCIpID09IDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCBzdHJlYW1pbmcgPSBv biIpOworCWVsc2UgaWYgKHN0cmNtcChzdWJpbmZvLT5zdWJzdHJlYW0sICJwIikgPT0gMCkKKwkJ YXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIsIHN0cmVhbWluZyA9IHBhcmFsbGVsIik7CiAK IAlpZiAoc3RyY21wKHN1YmluZm8tPnN1YnR3b3BoYXNlc3RhdGUsIHR3b19waGFzZV9kaXNhYmxl ZCkgIT0gMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIsIHR3b19waGFzZSA9IG9u Iik7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBiL3NyYy9iaW4vcHNxbC9k ZXNjcmliZS5jCmluZGV4IGRmMTY2MzY1ZTguLjI2NWIyOGQ5MGMgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCkBAIC02NTAy LDExICs2NTAyLDI0IEBAIGRlc2NyaWJlU3Vic2NyaXB0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJu LCBib29sIHZlcmJvc2UpCiAJewogCQkvKiBCaW5hcnkgbW9kZSBhbmQgc3RyZWFtaW5nIGFyZSBv bmx5IHN1cHBvcnRlZCBpbiB2MTQgYW5kIGhpZ2hlciAqLwogCQlpZiAocHNldC5zdmVyc2lvbiA+ PSAxNDAwMDApCisJCXsKIAkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCi0JCQkJCQkJICAiLCBz dWJiaW5hcnkgQVMgXCIlc1wiXG4iCi0JCQkJCQkJICAiLCBzdWJzdHJlYW0gQVMgXCIlc1wiXG4i LAotCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJCaW5hcnkiKSwKLQkJCQkJCQkgIGdldHRleHRfbm9v cCgiU3RyZWFtaW5nIikpOworCQkJCQkJCSAgIiwgc3ViYmluYXJ5IEFTIFwiJXNcIlxuIiwKKwkJ CQkJCQkgIGdldHRleHRfbm9vcCgiQmluYXJ5IikpOworCisJCQlpZiAocHNldC5zdmVyc2lvbiA+ PSAxNjAwMDApCisJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkJICAiLCAoQ0FT RSBzdWJzdHJlYW1cbiIKKwkJCQkJCQkJICAiICAgIFdIRU4gJ2YnIFRIRU4gJ29mZidcbiIKKwkJ CQkJCQkJICAiICAgIFdIRU4gJ3QnIFRIRU4gJ29uJ1xuIgorCQkJCQkJCQkgICIgICAgV0hFTiAn cCcgVEhFTiAncGFyYWxsZWwnXG4iCisJCQkJCQkJCSAgIiAgIEVORCkgQVMgXCIlc1wiXG4iLAor CQkJCQkJCQkgIGdldHRleHRfbm9vcCgiU3RyZWFtaW5nIikpOworCQkJZWxzZQorCQkJCWFwcGVu ZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkJCSAgIiwgc3Vic3RyZWFtIEFTIFwiJXNcIlxuIiwK KwkJCQkJCQkJICBnZXR0ZXh0X25vb3AoIlN0cmVhbWluZyIpKTsKKwkJfQogCiAJCS8qIFR3b19w aGFzZSBhbmQgZGlzYWJsZV9vbl9lcnJvciBhcmUgb25seSBzdXBwb3J0ZWQgaW4gdjE1IGFuZCBo aWdoZXIgKi8KIAkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTUwMDAwKQpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfc3Vic2NyaXB0aW9uLmgKaW5kZXggN2I5ODcxNGYzMC4uNWI5ZTVhMzk5YSAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaAorKysgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCkBAIC04MCw3ICs4MCw4IEBAIENBVEFMT0cocGdf c3Vic2NyaXB0aW9uLDYxMDAsU3Vic2NyaXB0aW9uUmVsYXRpb25JZCkgQktJX1NIQVJFRF9SRUxB VElPTiBCS0lfUk9XCiAJYm9vbAkJc3ViYmluYXJ5OwkJLyogVHJ1ZSBpZiB0aGUgc3Vic2NyaXB0 aW9uIHdhbnRzIHRoZQogCQkJCQkJCQkgKiBwdWJsaXNoZXIgdG8gc2VuZCBkYXRhIGluIGJpbmFy eSAqLwogCi0JYm9vbAkJc3Vic3RyZWFtOwkJLyogU3RyZWFtIGluLXByb2dyZXNzIHRyYW5zYWN0 aW9ucy4gKi8KKwljaGFyCQlzdWJzdHJlYW07CQkvKiBTdHJlYW0gaW4tcHJvZ3Jlc3MgdHJhbnNh Y3Rpb25zLiBTZWUKKwkJCQkJCQkJICogU1VCU1RSRUFNX3h4eCBjb25zdGFudHMuICovCiAKIAlj aGFyCQlzdWJ0d29waGFzZXN0YXRlOwkvKiBTdHJlYW0gdHdvLXBoYXNlIHRyYW5zYWN0aW9ucyAq LwogCkBAIC0xMjQsNyArMTI1LDggQEAgdHlwZWRlZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAJYm9v bAkJZW5hYmxlZDsJCS8qIEluZGljYXRlcyBpZiB0aGUgc3Vic2NyaXB0aW9uIGlzIGVuYWJsZWQg Ki8KIAlib29sCQliaW5hcnk7CQkJLyogSW5kaWNhdGVzIGlmIHRoZSBzdWJzY3JpcHRpb24gd2Fu dHMgZGF0YSBpbgogCQkJCQkJCQkgKiBiaW5hcnkgZm9ybWF0ICovCi0JYm9vbAkJc3RyZWFtOwkJ CS8qIEFsbG93IHN0cmVhbWluZyBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuICovCisJY2hhcgkJ c3RyZWFtOwkJCS8qIEFsbG93IHN0cmVhbWluZyBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuCisJ CQkJCQkJCSAqIFNlZSBTVUJTVFJFQU1feHh4IGNvbnN0YW50cy4gKi8KIAljaGFyCQl0d29waGFz ZXN0YXRlOwkvKiBBbGxvdyBzdHJlYW1pbmcgdHdvLXBoYXNlIHRyYW5zYWN0aW9ucyAqLwogCWJv b2wJCWRpc2FibGVvbmVycjsJLyogSW5kaWNhdGVzIGlmIHRoZSBzdWJzY3JpcHRpb24gc2hvdWxk IGJlCiAJCQkJCQkJCSAqIGF1dG9tYXRpY2FsbHkgZGlzYWJsZWQgaWYgYSB3b3JrZXIgZXJyb3IK QEAgLTEzNyw2ICsxMzksMjEgQEAgdHlwZWRlZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAJCQkJCQkJ CSAqIHNwZWNpZmllZCBvcmlnaW4gKi8KIH0gU3Vic2NyaXB0aW9uOwogCisvKiBEaXNhbGxvdyBz dHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLiAqLworI2RlZmluZSBMT0dJQ0FMUkVQ X1NUUkVBTV9PRkYgJ2YnCisKKy8qCisgKiBTdHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rp b25zIGFyZSB3cml0dGVuIHRvIGEgdGVtcG9yYXJ5IGZpbGUgYW5kCisgKiBhcHBsaWVkIG9ubHkg YWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiB1cHN0cmVhbS4KKyAqLworI2Rl ZmluZSBMT0dJQ0FMUkVQX1NUUkVBTV9PTiAndCcKKworLyoKKyAqIFN0cmVhbWluZyBpbi1wcm9n cmVzcyB0cmFuc2FjdGlvbnMgYXJlIGFwcGxpZWQgaW1tZWRpYXRlbHkgdmlhIGEgcGFyYWxsZWwK KyAqIGFwcGx5IHdvcmtlci4KKyAqLworI2RlZmluZSBMT0dJQ0FMUkVQX1NUUkVBTV9QQVJBTExF TCAncCcKKwogZXh0ZXJuIFN1YnNjcmlwdGlvbiAqR2V0U3Vic2NyaXB0aW9uKE9pZCBzdWJpZCwg Ym9vbCBtaXNzaW5nX29rKTsKIGV4dGVybiB2b2lkIEZyZWVTdWJzY3JpcHRpb24oU3Vic2NyaXB0 aW9uICpzdWIpOwogZXh0ZXJuIHZvaWQgRGlzYWJsZVN1YnNjcmlwdGlvbihPaWQgc3ViaWQpOwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5oIGIvc3Jj L2luY2x1ZGUvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5oCmluZGV4IDJjYmU3ZDdiNjUuLjc3 OTQ3NGY1NjUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNt ZHMuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmgKQEAgLTI2 LDQgKzI2LDYgQEAgZXh0ZXJuIHZvaWQgRHJvcFN1YnNjcmlwdGlvbihEcm9wU3Vic2NyaXB0aW9u U3RtdCAqc3RtdCwgYm9vbCBpc1RvcExldmVsKTsKIGV4dGVybiBPYmplY3RBZGRyZXNzIEFsdGVy U3Vic2NyaXB0aW9uT3duZXIoY29uc3QgY2hhciAqbmFtZSwgT2lkIG5ld093bmVySWQpOwogZXh0 ZXJuIHZvaWQgQWx0ZXJTdWJzY3JpcHRpb25Pd25lcl9vaWQoT2lkIHN1YmlkLCBPaWQgbmV3T3du ZXJJZCk7CiAKK2V4dGVybiBjaGFyIGRlZkdldFN0cmVhbWluZ01vZGUoRGVmRWxlbSAqZGVmKTsK KwogI2VuZGlmCQkJCQkJCS8qIFNVQlNDUklQVElPTkNNRFNfSCAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmggYi9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaAppbmRleCBmMWUyODIxZTI1Li5kNTEzZWY1MzNhIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaAorKysg Yi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaApAQCAtMTQsNiArMTQs NyBAQAogCiBleHRlcm4gUEdETExJTVBPUlQgaW50IG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dv cmtlcnM7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IG1heF9zeW5jX3dvcmtlcnNfcGVyX3N1YnNj cmlwdGlvbjsKK2V4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtl cnNfcGVyX3N1YnNjcmlwdGlvbjsKIAogZXh0ZXJuIHZvaWQgQXBwbHlMYXVuY2hlclJlZ2lzdGVy KHZvaWQpOwogZXh0ZXJuIHZvaWQgQXBwbHlMYXVuY2hlck1haW4oRGF0dW0gbWFpbl9hcmcpOwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmggYi9zcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaAppbmRleCAxZWI3ZGRhNTI5Li40ZmEy YmQzN2RlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8u aAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaApAQCAtMzIsMTIg KzMyLDE3IEBACiAgKgogICogTE9HSUNBTFJFUF9QUk9UT19UV09QSEFTRV9WRVJTSU9OX05VTSBp cyB0aGUgbWluaW11bSBwcm90b2NvbCB2ZXJzaW9uIHdpdGgKICAqIHN1cHBvcnQgZm9yIHR3by1w aGFzZSBjb21taXQgZGVjb2RpbmcgKGF0IHByZXBhcmUgdGltZSkuIEludHJvZHVjZWQgaW4gUEcx NS4KKyAqCisgKiBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05VTSBp cyB0aGUgbWluaW11bSBwcm90b2NvbCB2ZXJzaW9uCisgKiB3aGVyZSB3ZSBzdXBwb3J0IGFwcGx5 aW5nIGxhcmdlIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMgaW4gcGFyYWxsZWwuCisgKiBJbnRyb2R1 Y2VkIGluIFBHMTYuCiAgKi8KICNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19NSU5fVkVSU0lPTl9O VU0gMQogI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX1ZFUlNJT05fTlVNIDEKICNkZWZpbmUgTE9H SUNBTFJFUF9QUk9UT19TVFJFQU1fVkVSU0lPTl9OVU0gMgogI2RlZmluZSBMT0dJQ0FMUkVQX1BS T1RPX1RXT1BIQVNFX1ZFUlNJT05fTlVNIDMKLSNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19NQVhf VkVSU0lPTl9OVU0gTE9HSUNBTFJFUF9QUk9UT19UV09QSEFTRV9WRVJTSU9OX05VTQorI2RlZmlu ZSBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05VTSA0CisjZGVmaW5l IExPR0lDQUxSRVBfUFJPVE9fTUFYX1ZFUlNJT05fTlVNIExPR0lDQUxSRVBfUFJPVE9fU1RSRUFN X1BBUkFMTEVMX1ZFUlNJT05fTlVNCiAKIC8qCiAgKiBMb2dpY2FsIG1lc3NhZ2UgdHlwZXMKQEAg LTE3NSw2ICsxODAsMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFJvbGxiYWNrUHJlcGFy ZWRUeG5EYXRhCiAJY2hhcgkJZ2lkW0dJRFNJWkVdOwogfSBMb2dpY2FsUmVwUm9sbGJhY2tQcmVw YXJlZFR4bkRhdGE7CiAKKy8qCisgKiBUcmFuc2FjdGlvbiBwcm90b2NvbCBpbmZvcm1hdGlvbiBm b3Igc3RyZWFtIGFib3J0LgorICovCit0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwU3RyZWFtQWJv cnREYXRhCit7CisJVHJhbnNhY3Rpb25JZCB4aWQ7CisJVHJhbnNhY3Rpb25JZCBzdWJ4aWQ7CisJ WExvZ1JlY1B0cglhYm9ydF9sc247CisJVGltZXN0YW1wVHogYWJvcnRfdGltZTsKK30gTG9naWNh bFJlcFN0cmVhbUFib3J0RGF0YTsKKwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93cml0ZV9iZWdp bihTdHJpbmdJbmZvIG91dCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuKTsKIGV4dGVybiB2b2lkIGxv Z2ljYWxyZXBfcmVhZF9iZWdpbihTdHJpbmdJbmZvIGluLAogCQkJCQkJCQkgIExvZ2ljYWxSZXBC ZWdpbkRhdGEgKmJlZ2luX2RhdGEpOwpAQCAtMjQ2LDkgKzI2MiwxMyBAQCBleHRlcm4gdm9pZCBs b2dpY2FscmVwX3dyaXRlX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBvdXQsIFJlb3JkZXJCdWZm ZXJUWE4gKnR4bgogZXh0ZXJuIFRyYW5zYWN0aW9uSWQgbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9j b21taXQoU3RyaW5nSW5mbyBpbiwKIAkJCQkJCQkJCQkJCSAgIExvZ2ljYWxSZXBDb21taXREYXRh ICpjb21taXRfZGF0YSk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX3N0cmVhbV9hYm9y dChTdHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsCi0JCQkJCQkJCQkJICBUcmFuc2Fj dGlvbklkIHN1YnhpZCk7Ci1leHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0 KFN0cmluZ0luZm8gaW4sIFRyYW5zYWN0aW9uSWQgKnhpZCwKLQkJCQkJCQkJCQkgVHJhbnNhY3Rp b25JZCAqc3VieGlkKTsKKwkJCQkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgc3VieGlkLAorCQkJCQkJ CQkJCSAgWExvZ1JlY1B0ciBhYm9ydF9sc24sCisJCQkJCQkJCQkJICBUaW1lc3RhbXBUeiBhYm9y dF90aW1lLAorCQkJCQkJCQkJCSAgYm9vbCB3cml0ZV9hYm9ydF9pbmZvKTsKK2V4dGVybiB2b2lk IGxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBpbiwKKwkJCQkJCQkJCQkg TG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YSAqYWJvcnRfZGF0YSwKKwkJCQkJCQkJCQkgYm9vbCBy ZWFkX2Fib3J0X2luZm8pOwogZXh0ZXJuIGNoYXIgKmxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKExv Z2ljYWxSZXBNc2dUeXBlIGFjdGlvbik7CiAKICNlbmRpZgkJCQkJCQkvKiBMT0dJQ0FMX1BST1RP X0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIu aCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaAppbmRleCBjZDFiNmU4 YWZjLi5kYzY4Y2Q4OWM4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dp Y2Fsd29ya2VyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5o CkBAIC0xMiw4ICsxMiwxNiBAQAogI2lmbmRlZiBMT0dJQ0FMV09SS0VSX0gKICNkZWZpbmUgTE9H SUNBTFdPUktFUl9ICiAKKyNpbmNsdWRlIDxzaWduYWwuaD4KKworZXh0ZXJuIFBHRExMSU1QT1JU IHZvbGF0aWxlIHNpZ19hdG9taWNfdCBQYXJhbGxlbEFwcGx5TWVzc2FnZVBlbmRpbmc7CisKIGV4 dGVybiB2b2lkIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZyk7CitleHRlcm4gdm9pZCBQ YXJhbGxlbEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZyk7CiAKIGV4dGVybiBib29sIElz TG9naWNhbFdvcmtlcih2b2lkKTsKK2V4dGVybiBib29sIElzTG9naWNhbFBhcmFsbGVsQXBwbHlX b3JrZXIodm9pZCk7CitleHRlcm4gdm9pZCBIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZUludGVy cnVwdCh2b2lkKTsKK2V4dGVybiB2b2lkIEhhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlcyh2b2lk KTsKIAogI2VuZGlmCQkJCQkJCS8qIExPR0lDQUxXT1JLRVJfSCAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9v cmlnaW4uaAppbmRleCAyYTUwZDEwYjUyLi5jN2IxYWRmZmY1IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9vcmlnaW4uaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9v cmlnaW4uaApAQCAtNTMsNyArNTMsNyBAQCBleHRlcm4gWExvZ1JlY1B0ciByZXBsb3JpZ2luX2dl dF9wcm9ncmVzcyhSZXBPcmlnaW5JZCBub2RlLCBib29sIGZsdXNoKTsKIAogZXh0ZXJuIHZvaWQg cmVwbG9yaWdpbl9zZXNzaW9uX2FkdmFuY2UoWExvZ1JlY1B0ciByZW1vdGVfY29tbWl0LAogCQkJ CQkJCQkJICAgWExvZ1JlY1B0ciBsb2NhbF9jb21taXQpOwotZXh0ZXJuIHZvaWQgcmVwbG9yaWdp bl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUpOworZXh0ZXJuIHZvaWQgcmVwbG9yaWdp bl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUsIGludCBhY3F1aXJlZF9ieSk7CiBleHRl cm4gdm9pZCByZXBsb3JpZ2luX3Nlc3Npb25fcmVzZXQodm9pZCk7CiBleHRlcm4gWExvZ1JlY1B0 ciByZXBsb3JpZ2luX3Nlc3Npb25fZ2V0X3Byb2dyZXNzKGJvb2wgZmx1c2gpOwogCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9wZ291dHB1dC5oIGIvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vcGdvdXRwdXQuaAppbmRleCAwMjAyNzU1MGUyLi4zYzMwZGE4MjA1IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9wZ291dHB1dC5oCisrKyBiL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmgKQEAgLTI2LDcgKzI2LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg UEdPdXRwdXREYXRhCiAJTGlzdAkgICAqcHVibGljYXRpb25fbmFtZXM7CiAJTGlzdAkgICAqcHVi bGljYXRpb25zOwogCWJvb2wJCWJpbmFyeTsKLQlib29sCQlzdHJlYW1pbmc7CisJY2hhcgkJc3Ry ZWFtaW5nOwogCWJvb2wJCW1lc3NhZ2VzOwogCWJvb2wJCXR3b19waGFzZTsKIAljaGFyCSAgICpv cmlnaW47CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVy LmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKaW5kZXggYzcwMGI1 NWIxYy4uZjBlYjZjNGY3NCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVv cmRlcmJ1ZmZlci5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIu aApAQCAtMzA4LDYgKzMwOCw3IEBAIHR5cGVkZWYgc3RydWN0IFJlb3JkZXJCdWZmZXJUWE4KIAl7 CiAJCVRpbWVzdGFtcFR6IGNvbW1pdF90aW1lOwogCQlUaW1lc3RhbXBUeiBwcmVwYXJlX3RpbWU7 CisJCVRpbWVzdGFtcFR6IGFib3J0X3RpbWU7CiAJfQkJCXhhY3RfdGltZTsKIAogCS8qCkBAIC02 NzAsNyArNjcxLDggQEAgZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckFzc2lnbkNoaWxkKFJlb3Jk ZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwKIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZm ZXJDb21taXRDaGlsZChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsCiAJCQkJ CQkJCQkgVHJhbnNhY3Rpb25JZCBzdWJ4aWQsIFhMb2dSZWNQdHIgY29tbWl0X2xzbiwKIAkJCQkJ CQkJCSBYTG9nUmVjUHRyIGVuZF9sc24pOwotZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckFib3J0 KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pOwor ZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2Fj dGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24sCisJCQkJCQkJICAgVGltZXN0YW1wVHogYWJvcnRf dGltZSk7CiBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQWJvcnRPbGQoUmVvcmRlckJ1ZmZlciAq cmIsIFRyYW5zYWN0aW9uSWQgb2xkZXN0UnVubmluZ1hpZCk7CiBleHRlcm4gdm9pZCBSZW9yZGVy QnVmZmVyRm9yZ2V0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1Jl Y1B0ciBsc24pOwogZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckludmFsaWRhdGUoUmVvcmRlckJ1 ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbik7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIGIvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vd2FscmVjZWl2ZXIuaAppbmRleCA5MzM5ZjI5MzAzLi4wYzhiYmRkYWJlIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oCisrKyBiL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgKQEAgLTE4Miw3ICsxODIsNyBAQCB0eXBl ZGVmIHN0cnVjdAogCQkJdWludDMyCQlwcm90b192ZXJzaW9uOwkvKiBMb2dpY2FsIHByb3RvY29s IHZlcnNpb24gKi8KIAkJCUxpc3QJICAgKnB1YmxpY2F0aW9uX25hbWVzOwkvKiBTdHJpbmcgbGlz dCBvZiBwdWJsaWNhdGlvbnMgKi8KIAkJCWJvb2wJCWJpbmFyeTsgLyogQXNrIHB1Ymxpc2hlciB0 byB1c2UgYmluYXJ5ICovCi0JCQlib29sCQlzdHJlYW1pbmc7CS8qIFN0cmVhbWluZyBvZiBsYXJn ZSB0cmFuc2FjdGlvbnMgKi8KKwkJCWNoYXIJICAgKnN0cmVhbWluZ19zdHI7CS8qIFN0cmVhbWlu ZyBvZiBsYXJnZSB0cmFuc2FjdGlvbnMgKi8KIAkJCWJvb2wJCXR3b3BoYXNlOwkvKiBTdHJlYW1p bmcgb2YgdHdvLXBoYXNlIHRyYW5zYWN0aW9ucyBhdAogCQkJCQkJCQkJICogcHJlcGFyZSB0aW1l ICovCiAJCQljaGFyCSAgICpvcmlnaW47IC8qIE9ubHkgcHVibGlzaCBkYXRhIG9yaWdpbmF0aW5n IGZyb20gdGhlCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50 ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCmluZGV4 IDJiNzExNGZmNmQuLjBiYTIwYTFlYTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL3dvcmtlcl9pbnRlcm5hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtl cl9pbnRlcm5hbC5oCkBAIC0xNyw4ICsxNywxMyBAQAogI2luY2x1ZGUgImFjY2Vzcy94bG9nZGVm cy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiZGF0 YXR5cGUvdGltZXN0YW1wLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAicmVw bGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmgiCisjaW5jbHVkZSAic3RvcmFnZS9idWZmaWxlLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9maWxlc2V0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sb2NrLmgi CisjaW5jbHVkZSAic3RvcmFnZS9zaG1fbXEuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NobV90b2Mu aCIKICNpbmNsdWRlICJzdG9yYWdlL3NwaW4uaCIKIAogCkBAIC01MywxMyArNTgsMjQgQEAgdHlw ZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFdvcmtlcgogCiAJLyoKIAkgKiBVc2VkIHRvIGNyZWF0ZSB0 aGUgY2hhbmdlcyBhbmQgc3VieGFjdCBmaWxlcyBmb3IgdGhlIHN0cmVhbWluZwotCSAqIHRyYW5z YWN0aW9ucy4gIFVwb24gdGhlIGFycml2YWwgb2YgdGhlIGZpcnN0IHN0cmVhbWluZyB0cmFuc2Fj dGlvbiwgdGhlCi0JICogZmlsZXNldCB3aWxsIGJlIGluaXRpYWxpemVkLCBhbmQgaXQgd2lsbCBi ZSBkZWxldGVkIHdoZW4gdGhlIHdvcmtlcgotCSAqIGV4aXRzLiAgVW5kZXIgdGhpcywgc2VwYXJh dGUgYnVmZmlsZXMgd291bGQgYmUgY3JlYXRlZCBmb3IgZWFjaAotCSAqIHRyYW5zYWN0aW9uIHdo aWNoIHdpbGwgYmUgZGVsZXRlZCBhZnRlciB0aGUgdHJhbnNhY3Rpb24gaXMgZmluaXNoZWQuCisJ ICogdHJhbnNhY3Rpb25zLiAgVXBvbiB0aGUgYXJyaXZhbCBvZiB0aGUgZmlyc3Qgc3RyZWFtaW5n IHRyYW5zYWN0aW9uIG9yCisJICogd2hlbiB0aGUgZmlyc3QtdGltZSBsZWFkZXIgYXBwbHkgd29y a2VyIHRpbWVzIG91dCB3aGlsZSBzZW5kaW5nIGNoYW5nZXMKKwkgKiB0byB0aGUgcGFyYWxsZWwg YXBwbHkgd29ya2VyLCB0aGUgZmlsZXNldCB3aWxsIGJlIGluaXRpYWxpemVkLCBhbmQgaXQKKwkg KiB3aWxsIGJlIGRlbGV0ZWQgd2hlbiB0aGUgd29ya2VyIGV4aXRzLiAgVW5kZXIgdGhpcywgc2Vw YXJhdGUgYnVmZmlsZXMKKwkgKiB3b3VsZCBiZSBjcmVhdGVkIGZvciBlYWNoIHRyYW5zYWN0aW9u IHdoaWNoIHdpbGwgYmUgZGVsZXRlZCBhZnRlciB0aGUKKwkgKiB0cmFuc2FjdGlvbiBpcyBmaW5p c2hlZC4KIAkgKi8KIAlGaWxlU2V0ICAgICpzdHJlYW1fZmlsZXNldDsKIAorCS8qCisJICogUElE IG9mIGxlYWRlciBhcHBseSB3b3JrZXIgaWYgdGhpcyBzbG90IGlzIHVzZWQgZm9yIGEgcGFyYWxs ZWwgYXBwbHkKKwkgKiB3b3JrZXIsIEludmFsaWRQaWQgb3RoZXJ3aXNlLgorCSAqLworCXBpZF90 CQlhcHBseV9sZWFkZXJfcGlkOworCisJLyogSW5kaWNhdGVzIHdoZXRoZXIgYXBwbHkgY2FuIGJl IHBlcmZvcm1lZCBpbiBwYXJhbGxlbC4gKi8KKwlib29sCQlwYXJhbGxlbF9hcHBseTsKKwogCS8q IFN0YXRzLiAqLwogCVhMb2dSZWNQdHIJbGFzdF9sc247CiAJVGltZXN0YW1wVHogbGFzdF9zZW5k X3RpbWU7CkBAIC02OCw5ICs4NCwxMzMgQEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFdvcmtl cgogCVRpbWVzdGFtcFR6IHJlcGx5X3RpbWU7CiB9IExvZ2ljYWxSZXBXb3JrZXI7CiAKKy8qCisg KiBTdGF0ZSBvZiB0aGUgdHJhbnNhY3Rpb24gaW4gcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICoK KyAqIFRoZSBlbnVtIHZhbHVlcyBtdXN0IGhhdmUgdGhlIHNhbWUgb3JkZXIgYXMgdGhlIHRyYW5z YWN0aW9uIHN0YXRlCisgKiB0cmFuc2l0aW9ucy4KKyAqLwordHlwZWRlZiBlbnVtIFBhcmFsbGVs VHJhbnNTdGF0ZQoreworCVBBUkFMTEVMX1RSQU5TX1VOS05PV04sCisJUEFSQUxMRUxfVFJBTlNf U1RBUlRFRCwKKwlQQVJBTExFTF9UUkFOU19GSU5JU0hFRAorfSBQYXJhbGxlbFRyYW5zU3RhdGU7 CisKKy8qCisgKiBTdGF0ZSBvZiBmaWxlc2V0IHVzZWQgdG8gY29tbXVuaWNhdGUgY2hhbmdlcyBm cm9tIGxlYWRlciB0byBwYXJhbGxlbAorICogYXBwbHkgd29ya2VyLgorICoKKyAqIEZTX0VNUFRZ IGluZGljYXRlcyBhbiBpbml0aWFsIHN0YXRlIHdoZXJlIHRoZSBsZWFkZXIgZG9lc24ndCBuZWVk IHRvIHVzZQorICogdGhlIGZpbGUgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgcGFyYWxsZWwgYXBw bHkgd29ya2VyLgorICoKKyAqIEZTX1NFUklBTElaRV9JTl9QUk9HUkVTUyBpbmRpY2F0ZXMgdGhh dCB0aGUgbGVhZGVyIGlzIHNlcmlhbGl6aW5nIGNoYW5nZXMKKyAqIHRvIHRoZSBmaWxlLgorICoK KyAqIEZTX1NFUklBTElaRV9ET05FIGluZGljYXRlcyB0aGF0IHRoZSBsZWFkZXIgaGFzIHNlcmlh bGl6ZWQgYWxsIGNoYW5nZXMgdG8KKyAqIHRoZSBmaWxlLgorICoKKyAqIEZTX1JFQURZIGluZGlj YXRlcyB0aGF0IGl0IGlzIG5vdyBvayBmb3IgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdG8KKyAq IHJlYWQgdGhlIGZpbGUuCisgKi8KK3R5cGVkZWYgZW51bSBQYXJ0aWFsRmlsZVNldFN0YXRlCit7 CisJRlNfRU1QVFksCisJRlNfU0VSSUFMSVpFX0lOX1BST0dSRVNTLAorCUZTX1NFUklBTElaRV9E T05FLAorCUZTX1JFQURZCit9IFBhcnRpYWxGaWxlU2V0U3RhdGU7CisKKy8qCisgKiBTdHJ1Y3Qg Zm9yIHNoYXJpbmcgaW5mb3JtYXRpb24gYmV0d2VlbiBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBw YXJhbGxlbAorICogYXBwbHkgd29ya2Vycy4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxB cHBseVdvcmtlclNoYXJlZAoreworCXNsb2NrX3QJCW11dGV4OworCisJVHJhbnNhY3Rpb25JZCB4 aWQ7CisKKwkvKgorCSAqIFN0YXRlIHVzZWQgdG8gZW5zdXJlIGNvbW1pdCBvcmRlcmluZy4KKwkg KgorCSAqIFRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2lsbCBzZXQgaXQgdG8gUEFSQUxMRUxf VFJBTlNfRklOSVNIRUQgYWZ0ZXIKKwkgKiBoYW5kbGluZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNo IGNvbW1hbmRzIHdoaWxlIHRoZSBhcHBseSBsZWFkZXIgd2lsbAorCSAqIHdhaXQgZm9yIGl0IHRv IGJlY29tZSBQQVJBTExFTF9UUkFOU19GSU5JU0hFRCBiZWZvcmUgcHJvY2VlZGluZyBpbgorCSAq IHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kcyAoZS5nLiBTVFJFQU1fQ09NTUlUL1NUUkVBTV9Q UkVQQVJFKS4KKwkgKi8KKwlQYXJhbGxlbFRyYW5zU3RhdGUgeGFjdF9zdGF0ZTsKKworCS8qIElu Zm9ybWF0aW9uIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgTG9naWNhbFJlcFdvcmtlciBzbG90LiAq LworCXVpbnQxNgkJbG9naWNhbHJlcF93b3JrZXJfZ2VuZXJhdGlvbjsKKwlpbnQJCQlsb2dpY2Fs cmVwX3dvcmtlcl9zbG90X25vOworCisJLyoKKwkgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGVyZSBh cmUgcGVuZGluZyBzdHJlYW1pbmcgYmxvY2tzIGluIHRoZSBxdWV1ZS4gVGhlCisJICogcGFyYWxs ZWwgYXBwbHkgd29ya2VyIHdpbGwgY2hlY2sgaXQgYmVmb3JlIHN0YXJ0aW5nIHRvIHdhaXQuCisJ ICovCisJcGdfYXRvbWljX3VpbnQzMglwZW5kaW5nX3N0cmVhbV9jb3VudDsKKworCS8qCisJICog WGFjdExhc3RDb21taXRFbmQgZnJvbSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBUaGlzIGlz IHJlcXVpcmVkIGJ5CisJICogdGhlIGxlYWRlciB3b3JrZXIgc28gaXQgY2FuIHVwZGF0ZSB0aGUg bHNuX21hcHBpbmdzLgorCSAqLworCVhMb2dSZWNQdHIJbGFzdF9jb21taXRfZW5kOworCisJLyoK KwkgKiBBZnRlciBlbnRlcmluZyBQQVJUSUFMX1NFUklBTElaRSBtb2RlLCB0aGUgbGVhZGVyIGFw cGx5IHdvcmtlciB3aWxsCisJICogc2VyaWFsaXplIGNoYW5nZXMgdG8gdGhlIGZpbGUsIGFuZCBz aGFyZSB0aGUgZmlsZXNldCB3aXRoIHRoZSBwYXJhbGxlbAorCSAqIGFwcGx5IHdvcmtlciB3aGVu IHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kLiBUaGVuIHRoZQorCSAq IHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aWxsIGFwcGx5IGFsbCB0aGUgc3Bvb2xlZCBtZXNzYWdl cy4KKwkgKgorCSAqIEZpbGVTZXQgaXMgdXNlZCBoZXJlIGluc3RlYWQgb2YgU2hhcmVkRmlsZVNl dCBiZWNhdXNlIHdlIG5lZWQgaXQgdG8KKwkgKiBzdXJ2aXZlIGFmdGVyIHJlbGVhc2luZyB0aGUg c2hhcmVkIG1lbW9yeSBzbyB0aGF0IHRoZSBsZWFkZXIgYXBwbHkKKwkgKiB3b3JrZXIgY2FuIHJl LXVzZSB0aGUgc2FtZSBmaWxlc2V0IGZvciB0aGUgbmV4dCBzdHJlYW1pbmcgdHJhbnNhY3Rpb24u CisJICovCisJUGFydGlhbEZpbGVTZXRTdGF0ZSBmaWxlc2V0X3N0YXRlOworCUZpbGVTZXQJCWZp bGVzZXQ7Cit9IFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQ7CisKKy8qCisgKiBJbmZvcm1hdGlv biB3aGljaCBpcyB1c2VkIHRvIG1hbmFnZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICov Cit0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbEFwcGx5V29ya2VySW5mbworeworCXNobV9tcV9oYW5k bGUgKm1xX2hhbmRsZTsKKworCS8qCisJICogVGhlIHF1ZXVlIHVzZWQgdG8gdHJhbnNmZXIgZXJy b3IgbWVzc2FnZXMgZnJvbSB0aGUgcGFyYWxsZWwgYXBwbHkKKwkgKiB3b3JrZXIgdG8gdGhlIGxl YWRlciBhcHBseSB3b3JrZXIuCisJICovCisJc2htX21xX2hhbmRsZSAqZXJyb3JfbXFfaGFuZGxl OworCisJZHNtX3NlZ21lbnQgKmRzbV9zZWc7CisKKwkvKgorCSAqIEluZGljYXRlcyB3aGV0aGVy IHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIG5lZWRzIHRvIHNlcmlhbGl6ZSB0aGUKKwkgKiByZW1h aW5pbmcgY2hhbmdlcyB0byBhIGZpbGUgZHVlIHRvIHRpbWVvdXQgd2hlbiBhdHRlbXB0aW5nIHRv IHNlbmQgZGF0YQorCSAqIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdmlhIHNoYXJlZCBt ZW1vcnkuCisJICovCisJYm9vbAkJc2VyaWFsaXplX2NoYW5nZXM7CisKKwkvKgorCSAqIFRydWUg aWYgdGhlIHdvcmtlciBpcyBiZWluZyB1c2VkIHRvIHByb2Nlc3MgYSBwYXJhbGxlbCBhcHBseQor CSAqIHRyYW5zYWN0aW9uLiBGYWxzZSBpbmRpY2F0ZXMgdGhpcyB3b3JrZXIgaXMgYXZhaWxhYmxl IGZvciByZS11c2UuCisJICovCisJYm9vbAkJaW5fdXNlOworCisJUGFyYWxsZWxBcHBseVdvcmtl clNoYXJlZCAqc2hhcmVkOworfSBQYXJhbGxlbEFwcGx5V29ya2VySW5mbzsKKwogLyogTWFpbiBt ZW1vcnkgY29udGV4dCBmb3IgYXBwbHkgd29ya2VyLiBQZXJtYW5lbnQgZHVyaW5nIHdvcmtlciBs aWZldGltZS4gKi8KIGV4dGVybiBQR0RMTElNUE9SVCBNZW1vcnlDb250ZXh0IEFwcGx5Q29udGV4 dDsKIAorZXh0ZXJuIFBHRExMSU1QT1JUIE1lbW9yeUNvbnRleHQgQXBwbHlNZXNzYWdlQ29udGV4 dDsKKworZXh0ZXJuIFBHRExMSU1QT1JUIEVycm9yQ29udGV4dENhbGxiYWNrICphcHBseV9lcnJv cl9jb250ZXh0X3N0YWNrOworCitleHRlcm4gUEdETExJTVBPUlQgUGFyYWxsZWxBcHBseVdvcmtl clNoYXJlZCAqTXlQYXJhbGxlbFNoYXJlZDsKKwogLyogbGlicHFyZWNlaXZlciBjb25uZWN0aW9u ICovCiBleHRlcm4gUEdETExJTVBPUlQgc3RydWN0IFdhbFJlY2VpdmVyQ29ubiAqTG9nUmVwV29y a2VyV2FsUmN2Q29ubjsKIApAQCAtODQsOSArMjI0LDExIEBAIGV4dGVybiB2b2lkIGxvZ2ljYWxy ZXBfd29ya2VyX2F0dGFjaChpbnQgc2xvdCk7CiBleHRlcm4gTG9naWNhbFJlcFdvcmtlciAqbG9n aWNhbHJlcF93b3JrZXJfZmluZChPaWQgc3ViaWQsIE9pZCByZWxpZCwKIAkJCQkJCQkJCQkJCWJv b2wgb25seV9ydW5uaW5nKTsKIGV4dGVybiBMaXN0ICpsb2dpY2FscmVwX3dvcmtlcnNfZmluZChP aWQgc3ViaWQsIGJvb2wgb25seV9ydW5uaW5nKTsKLWV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29y a2VyX2xhdW5jaChPaWQgZGJpZCwgT2lkIHN1YmlkLCBjb25zdCBjaGFyICpzdWJuYW1lLAotCQkJ CQkJCQkJIE9pZCB1c2VyaWQsIE9pZCByZWxpZCk7CitleHRlcm4gYm9vbCBsb2dpY2FscmVwX3dv cmtlcl9sYXVuY2goT2lkIGRiaWQsIE9pZCBzdWJpZCwgY29uc3QgY2hhciAqc3VibmFtZSwKKwkJ CQkJCQkJCSBPaWQgdXNlcmlkLCBPaWQgcmVsaWQsCisJCQkJCQkJCQkgZHNtX2hhbmRsZSBzdWJ3 b3JrZXJfZHNtKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1Ymlk LCBPaWQgcmVsaWQpOworZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF9wYV93b3JrZXJfc3RvcChpbnQg c2xvdF9ubywgdWludDE2IGdlbmVyYXRpb24pOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3Jr ZXJfd2FrZXVwKE9pZCBzdWJpZCwgT2lkIHJlbGlkKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBf d29ya2VyX3dha2V1cF9wdHIoTG9naWNhbFJlcFdvcmtlciAqd29ya2VyKTsKIApAQCAtMTAzLDEw ICsyNDUsNzkgQEAgZXh0ZXJuIHZvaWQgcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhYTG9nUmVjUHRy IGN1cnJlbnRfbHNuKTsKIGV4dGVybiB2b2lkIGludmFsaWRhdGVfc3luY2luZ190YWJsZV9zdGF0 ZXMoRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwKIAkJCQkJCQkJCQkJdWludDMyIGhhc2h2YWx1ZSk7 CiAKK2V4dGVybiB2b2lkIHN0cmVhbV9zdGFydF9pbnRlcm5hbChUcmFuc2FjdGlvbklkIHhpZCwg Ym9vbCBmaXJzdF9zZWdtZW50KTsKK2V4dGVybiB2b2lkIHN0cmVhbV9zdG9wX2ludGVybmFsKFRy YW5zYWN0aW9uSWQgeGlkKTsKKworLyogQ29tbW9uIHN0cmVhbWluZyBmdW5jdGlvbiB0byBhcHBs eSBhbGwgdGhlIHNwb29sZWQgbWVzc2FnZXMgKi8KK2V4dGVybiB2b2lkIGFwcGx5X3Nwb29sZWRf bWVzc2FnZXMoRmlsZVNldCAqc3RyZWFtX2ZpbGVzZXQsIFRyYW5zYWN0aW9uSWQgeGlkLAorCQkJ CQkJCQkgICBYTG9nUmVjUHRyIGxzbik7CisKK2V4dGVybiB2b2lkIGFwcGx5X2Rpc3BhdGNoKFN0 cmluZ0luZm8gcyk7CisKK2V4dGVybiB2b2lkIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9p ZCk7CisKK2V4dGVybiB2b2lkIHN0cmVhbV9jbGVhbnVwX2ZpbGVzKE9pZCBzdWJpZCwgVHJhbnNh Y3Rpb25JZCB4aWQpOworCitleHRlcm4gdm9pZCBJbml0aWFsaXplQXBwbHlXb3JrZXIodm9pZCk7 CisKK2V4dGVybiB2b2lkIHN0b3JlX2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIgcmVtb3RlX2xz biwgWExvZ1JlY1B0ciBsb2NhbF9sc24pOworCisvKiBGdW5jdGlvbiBmb3IgYXBwbHkgZXJyb3Ig Y2FsbGJhY2sgKi8KK2V4dGVybiB2b2lkIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZyk7 CitleHRlcm4gdm9pZCBzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9vcmlnaW4oY2hhciAqb3JpZ2lu bmFtZSk7CisKKy8qIFBhcmFsbGVsIGFwcGx5IHdvcmtlciBzZXR1cCBhbmQgaW50ZXJhY3Rpb25z ICovCitleHRlcm4gdm9pZCBwYV9hbGxvY2F0ZV93b3JrZXIoVHJhbnNhY3Rpb25JZCB4aWQpOwor ZXh0ZXJuIFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICpwYV9maW5kX3dvcmtlcihUcmFuc2FjdGlv bklkIHhpZCk7CitleHRlcm4gYm9vbCBwYV9mcmVlX3dvcmtlcihQYXJhbGxlbEFwcGx5V29ya2Vy SW5mbyAqd2luZm8pOworZXh0ZXJuIHZvaWQgcGFfZGV0YWNoX2FsbF9lcnJvcl9tcSh2b2lkKTsK KworZXh0ZXJuIGJvb2wgcGFfc2VuZF9kYXRhKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5m bywgU2l6ZSBuYnl0ZXMsCisJCQkJCQkgY29uc3Qgdm9pZCAqZGF0YSk7CitleHRlcm4gdm9pZCBw YV9zd2l0Y2hfdG9fcGFydGlhbF9zZXJpYWxpemUoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndp bmZvLAorCQkJCQkJCQkJCSAgIGJvb2wgc3RyZWFtX2xvY2tlZCk7CisKK2V4dGVybiB2b2lkIHBh X3NldF94YWN0X3N0YXRlKFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKndzaGFyZWQsCisJCQkJ CQkJICBQYXJhbGxlbFRyYW5zU3RhdGUgaW5feGFjdCk7CitleHRlcm4gdm9pZCBwYV9zZXRfc3Ry ZWFtX2FwcGx5X3dvcmtlcihQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pOworCitleHRl cm4gdm9pZCBwYV9zdGFydF9zdWJ0cmFucyhUcmFuc2FjdGlvbklkIGN1cnJlbnRfeGlkLAorCQkJ CQkJCSAgVHJhbnNhY3Rpb25JZCB0b3BfeGlkKTsKK2V4dGVybiB2b2lkIHBhX3Jlc2V0X3N1YnRy YW5zKHZvaWQpOworZXh0ZXJuIHZvaWQgcGFfc3RyZWFtX2Fib3J0KExvZ2ljYWxSZXBTdHJlYW1B Ym9ydERhdGEgKmFib3J0X2RhdGEpOworZXh0ZXJuIHZvaWQgcGFfc2V0X2ZpbGVzZXRfc3RhdGUo UGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqd3NoYXJlZCwKKwkJCQkJCQkJIFBhcnRpYWxGaWxl U2V0U3RhdGUgZmlsZXNldF9zdGF0ZSk7CisKK2V4dGVybiB2b2lkIHBhX2xvY2tfc3RyZWFtKFRy YW5zYWN0aW9uSWQgeGlkLCBMT0NLTU9ERSBsb2NrbW9kZSk7CitleHRlcm4gdm9pZCBwYV91bmxv Y2tfc3RyZWFtKFRyYW5zYWN0aW9uSWQgeGlkLCBMT0NLTU9ERSBsb2NrbW9kZSk7CisKK2V4dGVy biB2b2lkIHBhX2xvY2tfdHJhbnNhY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQsIExPQ0tNT0RFIGxv Y2ttb2RlKTsKK2V4dGVybiB2b2lkIHBhX3VubG9ja190cmFuc2FjdGlvbihUcmFuc2FjdGlvbklk IHhpZCwgTE9DS01PREUgbG9ja21vZGUpOworCitleHRlcm4gdm9pZCBwYV9kZWNyX2FuZF93YWl0 X3N0cmVhbV9ibG9jayh2b2lkKTsKKworZXh0ZXJuIHZvaWQgcGFfeGFjdF9maW5pc2goUGFyYWxs ZWxBcHBseVdvcmtlckluZm8gKndpbmZvLAorCQkJCQkJICAgWExvZ1JlY1B0ciByZW1vdGVfbHNu KTsKKworI2RlZmluZSBpc1BhcmFsbGVsQXBwbHlXb3JrZXIod29ya2VyKSAoKHdvcmtlciktPmFw cGx5X2xlYWRlcl9waWQgIT0gSW52YWxpZFBpZCkKKwogc3RhdGljIGlubGluZSBib29sCiBhbV90 YWJsZXN5bmNfd29ya2VyKHZvaWQpCiB7CiAJcmV0dXJuIE9pZElzVmFsaWQoTXlMb2dpY2FsUmVw V29ya2VyLT5yZWxpZCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbAorYW1fbGVhZGVyX2FwcGx5 X3dvcmtlcih2b2lkKQoreworCXJldHVybiAoIU9pZElzVmFsaWQoTXlMb2dpY2FsUmVwV29ya2Vy LT5yZWxpZCkgJiYKKwkJCSFpc1BhcmFsbGVsQXBwbHlXb3JrZXIoTXlMb2dpY2FsUmVwV29ya2Vy KSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbAorYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKHZv aWQpCit7CisJcmV0dXJuIGlzUGFyYWxsZWxBcHBseVdvcmtlcihNeUxvZ2ljYWxSZXBXb3JrZXIp OworfQorCiAjZW5kaWYJCQkJCQkJLyogV09SS0VSX0lOVEVSTkFMX0ggKi8KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdyLmgK aW5kZXggYmUxZDJjOTlhOS4uNWEzYmQwM2JhNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3Rv cmFnZS9sbWdyLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdyLmgKQEAgLTEwNyw2ICsx MDcsMTEgQEAgZXh0ZXJuIHZvaWQgTG9ja1NoYXJlZE9iamVjdEZvclNlc3Npb24oT2lkIGNsYXNz aWQsIE9pZCBvYmppZCwgdWludDE2IG9ianN1YmlkLAogZXh0ZXJuIHZvaWQgVW5sb2NrU2hhcmVk T2JqZWN0Rm9yU2Vzc2lvbihPaWQgY2xhc3NpZCwgT2lkIG9iamlkLCB1aW50MTYgb2Jqc3ViaWQs CiAJCQkJCQkJCQkJIExPQ0tNT0RFIGxvY2ttb2RlKTsKIAorZXh0ZXJuIHZvaWQgTG9ja0FwcGx5 VHJhbnNhY3Rpb25Gb3JTZXNzaW9uKE9pZCBzdWJvaWQsIFRyYW5zYWN0aW9uSWQgeGlkLCB1aW50 MTYgb2JqaWQsCisJCQkJCQkJCQkJICAgTE9DS01PREUgbG9ja21vZGUpOworZXh0ZXJuIHZvaWQg VW5sb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNlc3Npb24oT2lkIHN1Ym9pZCwgVHJhbnNhY3Rpb25J ZCB4aWQsIHVpbnQxNiBvYmppZCwKKwkJCQkJCQkJCQkJIExPQ0tNT0RFIGxvY2ttb2RlKTsKKwog LyogRGVzY3JpYmUgYSBsb2NrdGFnIGZvciBlcnJvciBtZXNzYWdlcyAqLwogZXh0ZXJuIHZvaWQg RGVzY3JpYmVMb2NrVGFnKFN0cmluZ0luZm8gYnVmLCBjb25zdCBMT0NLVEFHICp0YWcpOwogCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2suaCBiL3NyYy9pbmNsdWRlL3N0b3Jh Z2UvbG9jay5oCmluZGV4IGU0ZTE0OTViMjQuLjc3NjYxMjNhN2IgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3N0b3JhZ2UvbG9jay5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG9jay5oCkBA IC0xNDksMTAgKzE0OSwxMiBAQCB0eXBlZGVmIGVudW0gTG9ja1RhZ1R5cGUKIAlMT0NLVEFHX1NQ RUNVTEFUSVZFX1RPS0VOLAkvKiBzcGVjdWxhdGl2ZSBpbnNlcnRpb24gWGlkIGFuZCB0b2tlbiAq LwogCUxPQ0tUQUdfT0JKRUNULAkJCQkvKiBub24tcmVsYXRpb24gZGF0YWJhc2Ugb2JqZWN0ICov CiAJTE9DS1RBR19VU0VSTE9DSywJCQkvKiByZXNlcnZlZCBmb3Igb2xkIGNvbnRyaWIvdXNlcmxv Y2sgY29kZSAqLwotCUxPQ0tUQUdfQURWSVNPUlkJCQkvKiBhZHZpc29yeSB1c2VyIGxvY2tzICov CisJTE9DS1RBR19BRFZJU09SWSwJCQkvKiBhZHZpc29yeSB1c2VyIGxvY2tzICovCisJTE9DS1RB R19BUFBMWV9UUkFOU0FDVElPTgkvKiB0cmFuc2FjdGlvbiBiZWluZyBhcHBsaWVkIG9uIGEgbG9n aWNhbAorCQkJCQkJCQkgKiByZXBsaWNhdGlvbiBzdWJzY3JpYmVyICovCiB9IExvY2tUYWdUeXBl OwogCi0jZGVmaW5lIExPQ0tUQUdfTEFTVF9UWVBFCUxPQ0tUQUdfQURWSVNPUlkKKyNkZWZpbmUg TE9DS1RBR19MQVNUX1RZUEUJTE9DS1RBR19BUFBMWV9UUkFOU0FDVElPTgogCiBleHRlcm4gUEdE TExJTVBPUlQgY29uc3QgY2hhciAqY29uc3QgTG9ja1RhZ1R5cGVOYW1lc1tdOwogCkBAIC0yNzgs NiArMjgwLDE3IEBAIHR5cGVkZWYgc3RydWN0IExPQ0tUQUcKIAkgKGxvY2t0YWcpLmxvY2t0YWdf dHlwZSA9IExPQ0tUQUdfQURWSVNPUlksIFwKIAkgKGxvY2t0YWcpLmxvY2t0YWdfbG9ja21ldGhv ZGlkID0gVVNFUl9MT0NLTUVUSE9EKQogCisvKgorICogSUQgaW5mbyBmb3IgYSByZW1vdGUgdHJh bnNhY3Rpb24gb24gYSBsb2dpY2FsIHJlcGxpY2F0aW9uIHN1YnNjcmliZXIgaXM6IERCCisgKiBP SUQgKyBTVUJTQ1JJUFRJT04gT0lEICsgVFJBTlNBQ1RJT04gSUQgKyBPQkpJRAorICovCisjZGVm aW5lIFNFVF9MT0NLVEFHX0FQUExZX1RSQU5TQUNUSU9OKGxvY2t0YWcsZGJvaWQsc3Vib2lkLHhp ZCxvYmppZCkgXAorCSgobG9ja3RhZykubG9ja3RhZ19maWVsZDEgPSAoZGJvaWQpLCBcCisJIChs b2NrdGFnKS5sb2NrdGFnX2ZpZWxkMiA9IChzdWJvaWQpLCBcCisJIChsb2NrdGFnKS5sb2NrdGFn X2ZpZWxkMyA9ICh4aWQpLCBcCisJIChsb2NrdGFnKS5sb2NrdGFnX2ZpZWxkNCA9IChvYmppZCks IFwKKwkgKGxvY2t0YWcpLmxvY2t0YWdfdHlwZSA9IExPQ0tUQUdfQVBQTFlfVFJBTlNBQ1RJT04s IFwKKwkgKGxvY2t0YWcpLmxvY2t0YWdfbG9ja21ldGhvZGlkID0gREVGQVVMVF9MT0NLTUVUSE9E KQogCiAvKgogICogUGVyLWxvY2tlZC1vYmplY3QgbG9jayBpbmZvcm1hdGlvbjoKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oIGIvc3JjL2luY2x1ZGUvc3RvcmFn ZS9wcm9jc2lnbmFsLmgKaW5kZXggZWU2MzY5MDBmMy4uOTNhNTFmNDI1NCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFn ZS9wcm9jc2lnbmFsLmgKQEAgLTM1LDYgKzM1LDcgQEAgdHlwZWRlZiBlbnVtCiAJUFJPQ1NJR19X QUxTTkRfSU5JVF9TVE9QUElORywJLyogYXNrIHdhbHNlbmRlcnMgdG8gcHJlcGFyZSBmb3Igc2h1 dGRvd24gICovCiAJUFJPQ1NJR19CQVJSSUVSLAkJCS8qIGdsb2JhbCBiYXJyaWVyIGludGVycnVw dCAgKi8KIAlQUk9DU0lHX0xPR19NRU1PUllfQ09OVEVYVCwgLyogYXNrIGJhY2tlbmQgdG8gbG9n IHRoZSBtZW1vcnkgY29udGV4dHMgKi8KKwlQUk9DU0lHX1BBUkFMTEVMX0FQUExZX01FU1NBR0Us IC8qIE1lc3NhZ2UgZnJvbSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzICovCiAKIAkvKiBSZWNvdmVy eSBjb25mbGljdCByZWFzb25zICovCiAJUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9EQVRBQkFT RSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCBiL3NyYy9pbmNs dWRlL3V0aWxzL3dhaXRfZXZlbnQuaAppbmRleCAwYjIxMDBiZTRhLi43NjNmYmVhZGZiIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKKysrIGIvc3JjL2luY2x1ZGUv dXRpbHMvd2FpdF9ldmVudC5oCkBAIC00Miw2ICs0Miw3IEBAIHR5cGVkZWYgZW51bQogCVdBSVRf RVZFTlRfQ0hFQ0tQT0lOVEVSX01BSU4sCiAJV0FJVF9FVkVOVF9MT0dJQ0FMX0FQUExZX01BSU4s CiAJV0FJVF9FVkVOVF9MT0dJQ0FMX0xBVU5DSEVSX01BSU4sCisJV0FJVF9FVkVOVF9MT0dJQ0FM X1BBUkFMTEVMX0FQUExZX01BSU4sCiAJV0FJVF9FVkVOVF9SRUNPVkVSWV9XQUxfU1RSRUFNLAog CVdBSVRfRVZFTlRfU1lTTE9HR0VSX01BSU4sCiAJV0FJVF9FVkVOVF9XQUxfUkVDRUlWRVJfTUFJ TiwKQEAgLTEwNSw2ICsxMDYsNyBAQCB0eXBlZGVmIGVudW0KIAlXQUlUX0VWRU5UX0hBU0hfR1JP V19CVUNLRVRTX0FMTE9DQVRFLAogCVdBSVRfRVZFTlRfSEFTSF9HUk9XX0JVQ0tFVFNfRUxFQ1Qs CiAJV0FJVF9FVkVOVF9IQVNIX0dST1dfQlVDS0VUU19SRUlOU0VSVCwKKwlXQUlUX0VWRU5UX0xP R0lDQUxfUEFSQUxMRUxfQVBQTFlfU1RBVEVfQ0hBTkdFLAogCVdBSVRfRVZFTlRfTE9HSUNBTF9T WU5DX0RBVEEsCiAJV0FJVF9FVkVOVF9MT0dJQ0FMX1NZTkNfU1RBVEVfQ0hBTkdFLAogCVdBSVRf RVZFTlRfTVFfSU5URVJOQUwsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3N1YnNjcmlwdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlv bi5vdXQKaW5kZXggYzEzZDIxOGRjZi4uMWVkNmY0YzM5YyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dApAQCAtMTE3LDcgKzExNyw3IEBAIEhJTlQ6ICBUbyBp bml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRlIHRoZSByZXBsaWNh dGlvbiBzbG90LCBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vi c2NyaXB0aW9ucwogICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAg IHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNl IGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQg fCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViNCB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9u X3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBmICAgICAgICAgfCBkICAg ICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG5vbmUgICB8IG9mZiAgICAgICAgICAg ICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1 YjQgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwg ZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAg fCBub25lICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhp c3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjQg U0VUIChvcmlnaW4gPSBhbnkpOwpAQCAtMTI1LDcgKzEyNSw3IEBAIEFMVEVSIFNVQlNDUklQVElP TiByZWdyZXNzX3Rlc3RzdWI0IFNFVCAob3JpZ2luID0gYW55KTsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICAgTmFtZSAgICAgICB8 ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5h cnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9y aWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8 IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3Rz dWI0IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8 IGYgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAg IHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4 aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViNCB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIg fCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAg ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8 IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBEUk9QIFNVQlND UklQVElPTiByZWdyZXNzX3Rlc3RzdWIzOwpAQCAtMTM4LDcgKzEzOCw3IEBAIEVSUk9SOiAgaW52 YWxpZCBjb25uZWN0aW9uIHN0cmluZyBzeW50YXg6IG1pc3NpbmcgIj0iIGFmdGVyICJmb29iYXIi IGluIGNvbm5lY3RpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vi c2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAg fCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2Ug Y29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8 ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3Vz ZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBmICAgICAgICAgfCBkICAgICAg ICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAg ICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8 IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAg ICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFu eSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8 IDAvMAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCBQ VUJMSUNBVElPTiB0ZXN0cHViMiwgdGVzdHB1YjMgV0lUSCAocmVmcmVzaCA9IGZhbHNlKTsKQEAg LTE1OCw3ICsxNTgsNyBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNLSVAg KGxzbiA9ICcwLzEyMzQ1Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM aXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgRW5hYmxlZCB8ICAgICBQdWJsaWNhdGlvbiAgICAgfCBCaW5hcnkgfCBTdHJl YW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5 bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExT TiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3Rz dWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViMix0ZXN0 cHViM30gfCBmICAgICAgfCBmICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2Rv ZXNub3RleGlzdDIgfCAwLzEyMzQ1CisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3Jp cHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgb2Zm ICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBv ZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgMC8xMjM0 NQogKDEgcm93KQogCiAtLSBvayAtIHdpdGggbHNuID0gTk9ORQpAQCAtMTcwLDcgKzE3MCw3IEBA IEVSUk9SOiAgaW52YWxpZCBXQUwgbG9jYXRpb24gKExTTik6IDAvMAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAg ICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgUHVibGljYXRp b24gICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUg b24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICAgQ29ubmlu Zm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYg ICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAg ICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAg ICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgMC8wCisgcmVncmVzc190ZXN0c3Vi IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1 YjN9IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vz bm90ZXhpc3QyIHwgMC8wCiAoMSByb3cpCiAKIEJFR0lOOwpAQCAtMjA1LDcgKzIwNSw3IEBAIEhJ TlQ6ICBBdmFpbGFibGUgdmFsdWVzOiBsb2NhbCwgcmVtb3RlX3dyaXRlLCByZW1vdGVfYXBwbHks IG9uLCBvZmYuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Yg c3Vic2NyaXB0aW9ucwogICAgICAgICBOYW1lICAgICAgICAgfCAgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgRW5hYmxlZCB8ICAgICBQdWJsaWNhdGlvbiAgICAgfCBCaW5hcnkgfCBTdHJlYW1p bmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNo cm9ub3VzIGNvbW1pdCB8ICAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAK IC0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0 c3ViX2ZvbyB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIy LHRlc3RwdWIzfSB8IGYgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAg ICAgICAgICAgICAgIHwgYW55ICAgIHwgbG9jYWwgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jl c3NfZG9lc25vdGV4aXN0MiB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1Yl9mb28gfCByZWdyZXNzX3N1 YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAg fCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAg ICB8IGxvY2FsICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdDIgfCAw LzAKICgxIHJvdykKIAogLS0gcmVuYW1lIGJhY2sgdG8ga2VlcCB0aGUgcmVzdCBzaW1wbGUKQEAg LTI0Miw3ICsyNDIsNyBAQCBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0 IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAg fCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmlu YXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBP cmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAg fCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3Rz dWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwg dCAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAg fCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhp c3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgdCAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBk Ym5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NS SVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKGJpbmFyeSA9IGZhbHNlKTsKQEAgLTI1MSwxMyAr MjUxLDEzIEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25h bWUgPSBOT05FKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJz Y3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBj b21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwg ICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNl ciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IGYgICAgICAgICB8IGQgICAgICAg ICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAg IHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwg cmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAg ICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55 ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwg MC8wCiAoMSByb3cpCiAKIERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjsKLS0tIGZh aWwgLSBzdHJlYW1pbmcgbXVzdCBiZSBib29sZWFuCistLSBmYWlsIC0gc3RyZWFtaW5nIG11c3Qg YmUgYm9vbGVhbiBvciAncGFyYWxsZWwnCiBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVz dHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9O IHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBzdHJlYW1pbmcgPSBmb28pOwotRVJST1I6 ICBzdHJlYW1pbmcgcmVxdWlyZXMgYSBCb29sZWFuIHZhbHVlCitFUlJPUjogIHN0cmVhbWluZyBy ZXF1aXJlcyBhIEJvb2xlYW4gdmFsdWUgb3IgInBhcmFsbGVsIgogLS0gbm93IGl0IHdvcmtzCiBD UkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVn cmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZh bHNlLCBzdHJlYW1pbmcgPSB0cnVlKTsKIFdBUk5JTkc6ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0 ZWQsIGJ1dCBpcyBub3QgY29ubmVjdGVkCkBAIC0yNjYsNyArMjY2LDE1IEBAIEhJTlQ6ICBUbyBp bml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRlIHRoZSByZXBsaWNh dGlvbiBzbG90LCBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vi c2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAg fCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2Ug Y29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8 ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3Vz ZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCB0ICAgICAgICAgfCBkICAgICAg ICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAg ICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8 IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAg ICAgfCBvbiAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFu eSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8 IDAvMAorKDEgcm93KQorCitBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAo c3RyZWFtaW5nID0gcGFyYWxsZWwpOworXGRScysKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVh bWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3lu Y2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04g CistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVz c19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHBh cmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwg b2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAo MSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzdHJlYW1p bmcgPSBmYWxzZSk7CkBAIC0yNzUsNyArMjgzLDcgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jl c3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAgICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwg U3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4g fCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lw IExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCBy ZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAg IHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkg ICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAw LzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAg ICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9 cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogLS0gZmFpbCAtIHB1YmxpY2F0 aW9uIGFscmVhZHkgZXhpc3RzCkBAIC0yOTMsNyArMzAxLDcgQEAgRVJST1I6ICBwdWJsaWNhdGlv biAidGVzdHB1YjEiIGlzIGFscmVhZHkgaW4gc3Vic2NyaXB0aW9uICJyZWdyZXNzX3Rlc3RzdWIi CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3Jp cHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVu YWJsZWQgfCAgICAgICAgIFB1YmxpY2F0aW9uICAgICAgICAgfCBCaW5hcnkgfCBTdHJlYW1pbmcg fCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9u b3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3Rz dWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViLHRlc3Rw dWIxLHRlc3RwdWIyfSB8IGYgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJl Z3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJz Y3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yix0ZXN0cHViMSx0ZXN0cHViMn0gfCBm ICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8 IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlz dCB8IDAvMAogKDEgcm93KQogCiAtLSBmYWlsIC0gcHVibGljYXRpb24gdXNlZCBtb3JlIHRoZW4g b25jZQpAQCAtMzExLDcgKzMxOSw3IEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3Rz dWIgRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViMSwgdGVzdHB1YjIgV0lUSCAocmVmCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFt ZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRp b24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBl cnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAg ICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jl c3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3Rw dWJ9ICAgfCBmICAgICAgfCBmICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2Rv ZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9u X3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAg ICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAg ICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBEUk9Q IFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI7CkBAIC0zNTAsNyArMzU4LDcgQEAgSElOVDog IFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhlIHJl cGxpY2F0aW9uIHNsb3QsIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBv ZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1w aGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29t bWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRp b25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IGYgICAgICAgICB8IHAg ICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAg ICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0 c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8 IGYgICAgICB8IG9mZiAgICAgICB8IHAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAg IHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4 aXN0IHwgMC8wCiAoMSByb3cpCiAKIC0tZmFpbCAtIGFsdGVyIG9mIHR3b19waGFzZSBvcHRpb24g bm90IHN1cHBvcnRlZC4KQEAgLTM2Miw3ICszNzAsNyBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVn cmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkg fCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdp biB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNr aXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8 IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAg ICAgfCB0ICAgICAgICAgfCBwICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFu eSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8 IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAg ICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvbiAgICAgICAgfCBwICAgICAgICAgICAgICAg IHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFt ZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJ T04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CkBAIC0zNzUsNyArMzgz LDcgQEAgSElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBj cmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVh bWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3lu Y2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04g CiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVz c19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHQg ICAgICAgICB8IHAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwg b2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisg cmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7 dGVzdHB1Yn0gICB8IGYgICAgICB8IG9uICAgICAgICB8IHAgICAgICAgICAgICAgICAgfCBmICAg ICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jl c3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdy ZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKQEAgLTM5MSw3ICszOTksNyBAQCBI SU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0 aGUgcmVwbGljYXRpb24gc2xvdCwgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM aXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwg VHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91 cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNj cmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgZiAgICAgICAg IHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAg ICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNz X3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVi fSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vz bm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVz dHN1YiBTRVQgKGRpc2FibGVfb25fZXJyb3IgPSB0cnVlKTsKQEAgLTM5OSw3ICs0MDcsNyBAQCBB TFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoZGlzYWJsZV9vbl9lcnJvciA9 IHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlw dGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5h YmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1p dCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAg ICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAg ICAgICB8IHQgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBk Ym5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdy ZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwg b2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgICAgfCBhbnkgICAg fCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAK ICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3Rf bmFtZSA9IE5PTkUpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0 aW9uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNjcmlwdGlvbi5zcWwKaW5kZXggZWFl YWRlOGNjZS4uNzk5MWFiZmU4ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vi c2NyaXB0aW9uLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3Fs CkBAIC0xNjcsNyArMTY3LDcgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBT RVQgKHNsb3RfbmFtZSA9IE5PTkUpOwogCiBEUk9QIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3Rz dWI7CiAKLS0tIGZhaWwgLSBzdHJlYW1pbmcgbXVzdCBiZSBib29sZWFuCistLSBmYWlsIC0gc3Ry ZWFtaW5nIG11c3QgYmUgYm9vbGVhbiBvciAncGFyYWxsZWwnCiBDUkVBVEUgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3Qn IFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBzdHJlYW1pbmcgPSBm b28pOwogCiAtLSBub3cgaXQgd29ya3MKQEAgLTE3NSw2ICsxNzUsMTAgQEAgQ1JFQVRFIFNVQlND UklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25v dGV4aXN0JyBQVUIKIAogXGRScysKIAorQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1 YiBTRVQgKHN0cmVhbWluZyA9IHBhcmFsbGVsKTsKKworXGRScysKKwogQUxURVIgU1VCU0NSSVBU SU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHN0cmVhbWluZyA9IGZhbHNlKTsKIEFMVEVSIFNVQlND UklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKIApkaWZmIC0t Z2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdAppbmRleCA2MGM3MWQwNWZlLi5hYjNmMWIyMDgyIDEwMDY0NAotLS0g YS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdApAQCAtMTQ3Miw2ICsxNDcyLDcgQEAgTG9naWNhbFJlcFJlbElkCiBM b2dpY2FsUmVwUmVsTWFwRW50cnkKIExvZ2ljYWxSZXBSZWxhdGlvbgogTG9naWNhbFJlcFJvbGxi YWNrUHJlcGFyZWRUeG5EYXRhCitMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhCiBMb2dpY2FsUmVw VHVwbGVEYXRhCiBMb2dpY2FsUmVwVHlwCiBMb2dpY2FsUmVwV29ya2VyCkBAIC0xODc1LDYgKzE4 NzYsOSBAQCBQYWdlWExvZ1JlY1B0cgogUGFnZXRhYmxlRW50cnkKIFBhaXJzCiBQYXJhbGxlbEFw cGVuZFN0YXRlCitQYXJhbGxlbEFwcGx5V29ya2VyRW50cnkKK1BhcmFsbGVsQXBwbHlXb3JrZXJJ bmZvCitQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkCiBQYXJhbGxlbEJpdG1hcEhlYXBTdGF0ZQog UGFyYWxsZWxCbG9ja1RhYmxlU2NhbkRlc2MKIFBhcmFsbGVsQmxvY2tUYWJsZVNjYW5Xb3JrZXIK QEAgLTE4OTQsNiArMTg5OCw3IEBAIFBhcmFsbGVsU2xvdFJlc3VsdEhhbmRsZXIKIFBhcmFsbGVs U3RhdGUKIFBhcmFsbGVsVGFibGVTY2FuRGVzYwogUGFyYWxsZWxUYWJsZVNjYW5EZXNjRGF0YQor UGFyYWxsZWxUcmFuc1N0YXRlCiBQYXJhbGxlbFZhY3V1bVN0YXRlCiBQYXJhbGxlbFdvcmtlckNv bnRleHQKIFBhcmFsbGVsV29ya2VySW5mbwpAQCAtMTkyMyw2ICsxOTI4LDcgQEAgUGFyc2VyU3Rh dGUKIFBhcnRDbGF1c2VJbmZvCiBQYXJ0Q2xhdXNlTWF0Y2hTdGF0dXMKIFBhcnRDbGF1c2VUYXJn ZXQKK1BhcnRpYWxGaWxlU2V0U3RhdGUKIFBhcnRpdGlvbkJvdW5kSW5mbwogUGFydGl0aW9uQm91 bmRJbmZvRGF0YQogUGFydGl0aW9uQm91bmRTcGVjCkBAIC0yNzczLDYgKzI3NzksNyBAQCBUb2NF bnRyeQogVG9rZW5BdXhEYXRhCiBUb2tlbml6ZWRBdXRoTGluZQogVHJhY2tJdGVtCitUcmFuc0Fw cGx5QWN0aW9uCiBUcmFuc0ludmFsaWRhdGlvbkluZm8KIFRyYW5zU3RhdGUKIFRyYW5zYWN0aW9u SWQKLS0gCjIuMjMuMC53aW5kb3dzLjEKCg== --_008_OS0PR01MB571623EFD8903C93424EFADC94E99OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v66-0002-Test-streaming-parallel-option-in-tap-test.patch" Content-Description: v66-0002-Test-streaming-parallel-option-in-tap-test.patch Content-Disposition: attachment; filename="v66-0002-Test-streaming-parallel-option-in-tap-test.patch"; size=79522; creation-date="Fri, 23 Dec 2022 09:19:04 GMT"; modification-date="Fri, 23 Dec 2022 09:19:57 GMT" Content-Transfer-Encoding: base64 RnJvbSA3N2Q1NmUyZjczN2NmNjRmODMwNDk1MmQ2ZGFiNTkzNGUyYjRkNmNlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAic2hpeS5mbnN0IiA8c2hpeS5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBGcmksIDEzIE1heSAyMDIyIDE0OjUwOjMwICswODAwClN1YmplY3Q6IFtQQVRDSCB2NjYg Mi83XSBUZXN0IHN0cmVhbWluZyBwYXJhbGxlbCBvcHRpb24gaW4gdGFwIHRlc3QKCkNoYW5nZSBh bGwgVEFQIHRlc3RzIHVzaW5nIHRoZSBTVUJTQ1JJUFRJT04gInN0cmVhbWluZyIgcGFyYW1ldGVy LCBzbyB0aGV5Cm5vdyB0ZXN0IGJvdGggJ29uJyBhbmQgJ3BhcmFsbGVsJyB2YWx1ZXMuCi0tLQog c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgIHwgMjgwICsrKysr KystLQogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsIHwgMTQz ICsrKy0tCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTdfc3RyZWFtX2RkbC5wbCAgICAgfCAy MjEgKysrKy0tLQogLi4uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsICAgICAgICAgICAg IHwgMjMzICsrKysrLS0tCiAuLi4vdC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsICAg ICAgICAgfCAxMzQgKysrKy0KIC4uLi9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2Fk ZS5wbCAgICB8IDM5MyArKysrKysrKy0tLS0tCiAuLi4vc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3Bo YXNlX3N0cmVhbS5wbCAgICAgfCA1NDAgKysrKysrKysrKystLS0tLS0tCiA3IGZpbGVzIGNoYW5n ZWQsIDEzMjYgaW5zZXJ0aW9ucygrKSwgNjE4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMTVfc3RyZWFtLnBsCmluZGV4IGNiYWEzMjdlNDQuLjdiYzM0MmQyMTEgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKKysrIGIvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbApAQCAtOCw2ICs4LDE0OSBAQCB1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBU ZXN0OjpNb3JlOwogCisjIENoZWNrIHRoZSBsb2cgdGhhdCB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rp b24gd2FzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkKKyMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgYXBw bHkgd29ya2VyLgorc3ViIGNoZWNrX3BhcmFsbGVsX2xvZworeworCW15ICgkbm9kZV9zdWJzY3Jp YmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICR0eXBlKSA9IEBfOworCisJaWYgKCRpc19wYXJh bGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwkJCXFyL0RFQlVH OiAoIFtBLVowLTldKzopPyBmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSBTVFJFQU0gJHR5cGUgY29t bWFuZC8sCisJCQkkb2Zmc2V0KTsKKwl9Cit9CisKKyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21t b24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgorIyBwYXJhbWV0 ZXIgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24g YW5kCisjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworewor CW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFy YWxsZWwpID0gQF87CisKKwkjIEludGVybGVhdmUgYSBwYWlyIG9mIHRyYW5zYWN0aW9ucywgZWFj aCBleGNlZWRpbmcgdGhlIDY0a0IgbGltaXQuCisJbXkgJGluICA9ICcnOworCW15ICRvdXQgPSAn JzsKKworCW15ICRvZmZzZXQgPSAwOworCisJbXkgJHRpbWVyID0gSVBDOjpSdW46OnRpbWVvdXQo JFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQpOworCisJbXkgJGggPSAk bm9kZV9wdWJsaXNoZXItPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBcJGluLCBcJG91dCwg JHRpbWVyLAorCQlvbl9lcnJvcl9zdG9wID0+IDApOworCisJIyBJZiAic3RyZWFtaW5nIiBwYXJh bWV0ZXIgaXMgc3BlY2lmaWVkIGFzICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8gY2hlY2sKKwkjIHRo YXQgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGFwcGxpZWQgdXNpbmcgYSBwYXJhbGxlbCBhcHBs eSB3b3JrZXIuCisJIyBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2Vz IGFib3V0IHRoYXQsIHNvIGJ1bXAgdXAgdGhlCisJIyBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNf cGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNx bC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRub2RlX3N1YnNj cmliZXItPnJlbG9hZDsKKwl9CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5v dyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSRpbiAu PSBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIg U0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFi IFdIRVJFIG1vZChhLDMpID0gMDsKKwl9OworCSRoLT5wdW1wX25iOworCisJJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAx LCA5OTk5KSBzKGkpOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiA1MDAwOworCUNP TU1JVDsKKwl9KTsKKworCSRpbiAuPSBxeworCUNPTU1JVDsKKwlccQorCX07CisJJGgtPmZpbmlz aDsgICAgIyBlcnJvcnMgbWFrZSB0aGUgbmV4dCB0ZXN0IGZhaWwsIHNvIGlnbm9yZSB0aGVtIGhl cmUKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwlj aGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVs LCAnQ09NTUlUJyk7CisKKwlteSAkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9 IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwK KwkJJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycpOworCisJIyBU ZXN0IHRoZSBzdHJlYW1pbmcgaW4gYmluYXJ5IG1vZGUKKwkkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVCAoYmlu YXJ5ID0gb24pIik7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4K Kwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgSW5zZXJ0LCB1 cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJ JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJ SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRl X3Nlcmllcyg1MDAxLCAxMDAwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUo YikgV0hFUkUgbW9kKGEsMikgPSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChh LDMpID0gMDsKKwlDT01NSVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIs ICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJ0NPTU1JVCcpOworCisJJHJlc3VsdCA9CisJICAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwg Y291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBx cSg2NjY3fDY2Njd8NjY2NyksCisJCSdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwg ZGVmYXVsdHMnKTsKKworCSMgQ2hhbmdlIHRoZSBsb2NhbCB2YWx1ZXMgb2YgdGhlIGV4dHJhIGNv bHVtbnMgb24gdGhlIHN1YnNjcmliZXIsCisJIyB1cGRhdGUgcHVibGlzaGVyLCBhbmQgY2hlY2sg dGhhdCBzdWJzY3JpYmVyIHJldGFpbnMgdGhlIGV4cGVjdGVkCisJIyB2YWx1ZXMuIFRoaXMgaXMg dG8gZW5zdXJlIHRoYXQgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMgYmVoYXZlCisJIyBwcm9w ZXJseSBhZnRlciBhIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4KKwkkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlVQREFURSB0ZXN0X3RhYiBTRVQgYyA9ICdlcG9jaCc6 OnRpbWVzdGFtcHR6ICsgOTg3NjU0MzIxICogaW50ZXJ2YWwgJzFzJyIKKwkpOworCisJIyBDaGVj ayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1 YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQkiVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGE6OnRleHQpIik7CisKKwkkbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxs ZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJ0NPTU1JVCcp OworCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChleHRyYWN0KGVwb2NoIGZyb20gYykgPSA5ODc2NTQz MjEpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIgorCSk7CisJaXMoJHJlc3VsdCwgcXEo NjY2N3w2NjY3fDY2NjcpLAorCQknY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsbHkg Y2hhbmdlZCBkYXRhJyk7CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVS RSAoYSA+IDIpIik7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l KTsKKworCSMgUmVzZXQgdGhlIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7 CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJ ImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9h ZDsKKwl9Cit9CisKICMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJsaXNoZXIg PSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVfcHVi bGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAgLTI2LDE3ICsx NjksMjcgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKICRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZB TFVFUyAoMSwgJ2ZvbycpLCAoMiwgJ2JhcicpIik7CiAKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgdGVzdF90YWJfMiAoYSBpbnQpIik7CisKICMg U2V0dXAgc3RydWN0dXJlIG9uIHN1YnNjcmliZXIKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAogCSJDUkVBVEUgVEFCTEUgdGVzdF90YWIgKGEgaW50IHByaW1hcnkga2V5 LCBiIHRleHQsIGMgdGltZXN0YW1wdHogREVGQVVMVCBub3coKSwgZCBiaWdpbnQgREVGQVVMVCA5 OTkpIgogKTsKIAorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVB VEUgVEFCTEUgdGVzdF90YWJfMiAoYSBpbnQpIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFVOSVFVRSBJTkRFWCBpZHhfdGFiIG9uIHRlc3RfdGFi XzIoYSkiKTsKKwogIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uCiBteSAkcHVibGlzaGVyX2Nv bm5zdHIgPSAkbm9kZV9wdWJsaXNoZXItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7CiAk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJDUkVBVEUgUFVCTElDQVRJ T04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKKwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRh cF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiLCB0ZXN0X3RhYl8yIik7CiAKIG15ICRhcHBuYW1lID0g J3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVz aW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNVQlND UklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlv bl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9IG9u KSIKICk7CkBAIC00OSw2ICsyMDIsMzAgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgq KSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQs IHFxKDJ8MnwyKSwgJ2NoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIn KTsKIAordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAk YXBwbmFtZSwgMCk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj IFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJworIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBX SEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5n JzsiCispOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxU RVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsLCBiaW5hcnkg PSBvZmYpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMn LAorCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJF IGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIK KyAgKQorICBvciBkaWUKKyAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byBy ZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQVElPTiI7CisKK3Rlc3Rfc3RyZWFtaW5nKCRu b2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOworCiskbm9kZV9z dWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2Fn ZXMgPSBkZWJ1ZzEiKTsKKyRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3Fs LmNvbmYnLCAiZGVhZGxvY2tfdGltZW91dCA9IDFtcyIpOworJG5vZGVfc3Vic2NyaWJlci0+cmVs b2FkOworCiAjIEludGVybGVhdmUgYSBwYWlyIG9mIHRyYW5zYWN0aW9ucywgZWFjaCBleGNlZWRp bmcgdGhlIDY0a0IgbGltaXQuCiBteSAkaW4gID0gJyc7CiBteSAkb3V0ID0gJyc7CkBAIC01OCw3 MyArMjM1LDg4IEBAIG15ICR0aW1lciA9IElQQzo6UnVuOjp0aW1lb3V0KCRQb3N0Z3JlU1FMOjpU ZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0KTsKIG15ICRoID0gJG5vZGVfcHVibGlzaGVyLT5i YWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgXCRpbiwgXCRvdXQsICR0aW1lciwKIAlvbl9lcnJv cl9zdG9wID0+IDApOwogCisjIENvbmZpcm0gaWYgYSBkZWFkbG9jayBiZXR3ZWVuIHRoZSBsZWFk ZXIgYXBwbHkgd29ya2VyIGFuZCB0aGUgcGFyYWxsZWwgYXBwbHkKKyMgd29ya2VyIGNhbiBiZSBk ZXRlY3RlZC4KKworbXkgJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisK ICRpbiAuPSBxewogQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7Ci1VUERBVEUgdGVzdF90 YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90 YWIgV0hFUkUgbW9kKGEsMykgPSAwOworSU5TRVJUIElOVE8gdGVzdF90YWJfMiBTRUxFQ1QgaSBG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpOwogfTsKICRoLT5wdW1wX25iOwogCi0k bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDUwMDEsIDk5OTkpIHMoaSk7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gNTAw MDsKLUNPTU1JVDsKLX0pOworIyBFbnN1cmUgdGhhdCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vy IGV4ZWN1dGVzIHRoZSBpbnNlcnQgY29tbWFuZCBiZWZvcmUgdGhlCisjIGxlYWRlciB3b3JrZXIu Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvREVCVUc6ICggW0EtWjAtOV0r Oik/IGFwcGxpZWQgWzAtOV0rIGNoYW5nZXMgaW4gdGhlIHN0cmVhbWluZyBjaHVuay8sCisJJG9m ZnNldCk7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQg SU5UTyB0ZXN0X3RhYl8yIHZhbHVlcygxKSIpOwogCiAkaW4gLj0gcXsKIENPTU1JVDsKIFxxCiB9 OwotJGgtPmZpbmlzaDsgICAgIyBlcnJvcnMgbWFrZSB0aGUgbmV4dCB0ZXN0IGZhaWwsIHNvIGln bm9yZSB0aGVtIGhlcmUKKyRoLT5maW5pc2g7CiAKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9y X2xvZyhxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gZGVhZGxvY2sgZGV0ZWN0ZWQvLAorCSRvZmZz ZXQpOworCisjIERyb3AgdGhlIHVuaXF1ZSBpbmRleCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0 IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIElO REVYIGlkeF90YWIiKTsKKworIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0 byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCiAkcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50 KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0 KSwgJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycpOworICAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9N IHRlc3RfdGFiXzIiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDEpLCAnZGF0YSByZXBsaWNhdGVkIHRv IHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgaW5kZXgnKTsKIAotIyBUZXN0IHRoZSBzdHJlYW1p bmcgaW4gYmluYXJ5IG1vZGUKKyMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25t ZW50LgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIFRB QkxFIHRlc3RfdGFiXzIiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7CiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIg U1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUIChiaW5hcnkgPSBvbikiKTsKKwkiQ1JFQVRFIFVOSVFV RSBJTkRFWCBpZHhfdGFiIG9uIHRlc3RfdGFiXzIoYSkiKTsKIAotIyBJbnNlcnQsIHVwZGF0ZSBh bmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAw MSwgMTAwMDApIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9k KGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotQ09N TUlUOwotfSk7CisjIENvbmZpcm0gaWYgYSBkZWFkbG9jayBiZXR3ZWVuIHR3byBwYXJhbGxlbCBh cHBseSB3b3JrZXJzIGNhbiBiZSBkZXRlY3RlZC4KIAotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lKTsKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93 IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CiAKLSRyZXN1bHQg PQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNv dW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJl c3VsdCwgcXEoNjY2N3w2NjY3fDY2NjcpLCAnY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxv Y2FsIGRlZmF1bHRzJyk7CiskaW4gLj0gcXsKK0JFR0lOOworSU5TRVJUIElOVE8gdGVzdF90YWJf MiBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpOworfTsKKyRoLT5w dW1wX25iOworCisjIEVuc3VyZSB0aGF0IHRoZSBmaXJzdCBwYXJhbGxlbCBhcHBseSB3b3JrZXIg ZXhlY3V0ZXMgdGhlIGluc2VydCBjb21tYW5kCisjIGJlZm9yZSB0aGUgc2Vjb25kIG9uZS4KKyRu b2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9ERUJVRzogKCBbQS1aMC05XSs6KT8g YXBwbGllZCBbMC05XSsgY2hhbmdlcyBpbiB0aGUgc3RyZWFtaW5nIGNodW5rLywKKwkkb2Zmc2V0 KTsKIAotIyBDaGFuZ2UgdGhlIGxvY2FsIHZhbHVlcyBvZiB0aGUgZXh0cmEgY29sdW1ucyBvbiB0 aGUgc3Vic2NyaWJlciwKLSMgdXBkYXRlIHB1Ymxpc2hlciwgYW5kIGNoZWNrIHRoYXQgc3Vic2Ny aWJlciByZXRhaW5zIHRoZSBleHBlY3RlZAotIyB2YWx1ZXMuIFRoaXMgaXMgdG8gZW5zdXJlIHRo YXQgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMgYmVoYXZlCi0jIHByb3Blcmx5IGFmdGVyIGEg c3RyZWFtaW5nIHRyYW5zYWN0aW9uLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCi0JIlVQREFURSB0ZXN0X3RhYiBTRVQgYyA9ICdlcG9jaCc6OnRpbWVzdGFtcHR6ICsg OTg3NjU0MzIxICogaW50ZXJ2YWwgJzFzJyIKLSk7CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAotCSJVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYTo6dGV4dCkiKTsK KwkiSU5TRVJUIElOVE8gdGVzdF90YWJfMiBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3Nlcmllcygx LCA1MDAwKSBzKGkpIik7CiAKKyRpbiAuPSBxeworQ09NTUlUOworXHEKK307CiskaC0+ZmluaXNo OworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvRVJST1I6ICggW0EtWjAtOV0r Oik/IGRlYWRsb2NrIGRldGVjdGVkLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIHRoZSB1bmlxdWUg aW5kZXggb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBJTkRFWCBpZHhfdGFiIik7CisKKyMgV2FpdCBm b3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkg d29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAot JHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxF Q1QgY291bnQoKiksIGNvdW50KGV4dHJhY3QoZXBvY2ggZnJvbSBjKSA9IDk4NzY1NDMyMSksIGNv dW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiCi0pOwotaXMoJHJlc3VsdCwgcXEoNjY2N3w2NjY3 fDY2NjcpLAotCSdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWxseSBjaGFuZ2VkIGRh dGEnKTsKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiXzIiKTsKK2lzKCRyZXN1bHQsIHFxKDEw MDAwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGluZGV4 Jyk7CiAKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwg Yi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwKaW5kZXggYmMw YTljZDA1My4uMzZhMTgwMzAyYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3Qv MDE2X3N0cmVhbV9zdWJ4YWN0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9z dHJlYW1fc3VieGFjdC5wbApAQCAtOCw2ICs4LDk0IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpD bHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAK KyMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxl dGVkIHN1Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCitz dWIgY2hlY2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQs ICRpc19wYXJhbGxlbCwgJHR5cGUpID0gQF87CisKKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJ JG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCQkJcXIvREVCVUc6ICggW0EtWjAtOV0r Oik/IGZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIFNUUkVBTSAkdHlwZSBjb21tYW5kLywKKwkJCSRv ZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBz IHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCisjIHBhcmFtZXRlciBzbyB0aGUgc2Ft ZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQKKyMgc3RyZWFt aW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1 Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJhbGxlbCkgPSBAXzsK KworCW15ICRvZmZzZXQgPSAwOworCisJIyBJZiAic3RyZWFtaW5nIiBwYXJhbWV0ZXIgaXMgc3Bl Y2lmaWVkIGFzICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8gY2hlY2sKKwkjIHRoYXQgc3RyZWFtZWQg dHJhbnNhY3Rpb24gd2FzIGFwcGxpZWQgdXNpbmcgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJ IyBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0IHRoYXQs IHNvIGJ1bXAgdXAgdGhlCisJIyBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJ eworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJ CSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9h ZDsKKwl9CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zm c2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgSW5zZXJ0LCB1cGRhdGUg YW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgNjRrQiBsaW1pdC4KKwkkbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMs IDUwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEs MikgPSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlTQVZF UE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsIDEwMDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNF VCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBX SEVSRSBtb2QoYSwzKSA9IDA7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwgMTUwMCkg cyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAw OworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlTQVZFUE9JTlQg czM7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3NlcmllcygxNTAxLCAyMDAwKSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9 IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUg bW9kKGEsMykgPSAwOworCVNBVkVQT0lOVCBzNDsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDEsIDI1MDApIHMoaSk7 CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlE RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJQ09NTUlUOworCX0pOwor CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNr X3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdD T01NSVQnKTsKKworCW15ICRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5 KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMTY2N3wxNjY3fDE2NjcpLAorCQkn Y2hlY2sgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIgaW4gc3RyZWFtaW5nIG1vZGUgYW5k IGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJIyBDbGVhbnVw IHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgKGEgPiAyKSIpOworCSRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIFJlc2V0IHRoZSBsb2cgdmVyYm9z aXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRf Y29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIp OworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorfQorCiAjIENyZWF0ZSBwdWJsaXNo ZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+ bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5n ID0+ICdsb2dpY2FsJyk7CkBAIC0zNyw2ICsxMjUsMTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxF IHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04g JyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElP TiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9IG9uKSIKICk7CkBAIC00OSw0MSArMTQxLDI2IEBA IG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5 KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8MiksICdjaGVjayBpbml0aWFs IGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMgSW5zZXJ0LCB1cGRhdGUgYW5k IGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoICAgIDMsICA1 MDApIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikg PSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotU0FWRVBPSU5U IHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3Nlcmllcyg1MDEsICAxMDAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0g bWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1v ZChhLDMpID0gMDsKLVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwgIDE1MDApIHMoaSk7Ci1V UERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRF IEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotU0FWRVBPSU5UIHMzOwotSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cygxNTAxLCAgMjAwMCkgcyhpKTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVS RSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7 Ci1TQVZFUE9JTlQgczQ7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDEsIDI1MDApIHMoaSk7Ci1VUERBVEUgdGVzdF90 YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90 YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotQ09NTUlUOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwg Y291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMTY2N3wxNjY3 fDE2NjcpLAotCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1p bmcgbW9kZSBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwordGVzdF9z dHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7 CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcg c3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNh dGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwogCisk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VCU0NSSVBU SU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIpOworCiskbm9kZV9wdWJsaXNo ZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlk IEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBu YW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJUaW1lZCBv dXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJT Q1JJUFRJT04iOworCit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNj cmliZXIsICRhcHBuYW1lLCAxKTsKKwogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1 Ymxpc2hlci0+c3RvcDsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3 X3N0cmVhbV9kZGwucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTdfc3RyZWFtX2RkbC5w bAppbmRleCA4NjZmMTUxMmU0Li41ZTcxNjgyOGNlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMTdfc3RyZWFtX2RkbC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMTdfc3RyZWFtX2RkbC5wbApAQCAtOCw2ICs4LDEzOCBAQCB1c2UgUG9zdGdyZVNRTDo6VGVz dDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3Jl OwogCisjIENoZWNrIHRoZSBsb2cgdGhhdCB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGNv bXBsZXRlZCBzdWNjZXNzZnVsbHkKKyMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2Vy Lgorc3ViIGNoZWNrX3BhcmFsbGVsX2xvZworeworCW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zm c2V0LCAkaXNfcGFyYWxsZWwsICR0eXBlKSA9IEBfOworCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7 CisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwkJCXFyL0RFQlVHOiAoIFtBLVow LTldKzopPyBmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSBTVFJFQU0gJHR5cGUgY29tbWFuZC8sCisJ CQkkb2Zmc2V0KTsKKwl9Cit9CisKKyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBz dGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgorIyBwYXJhbWV0ZXIgc28gdGhl IHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kCisjIHN0 cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9k ZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0g QF87CisKKwlteSAkb2Zmc2V0ID0gMDsKKworCSMgYSBzbWFsbCAobm9uLXN0cmVhbWVkKSB0cmFu c2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJ CSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgz LCBtZDUoMzo6dGV4dCkpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gYyBJTlQ7 CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoNCwgbWQ1KDQ6 OnRleHQpLCAtNCk7CisJQ09NTUlUOworCX0pOworCisJIyBJZiAic3RyZWFtaW5nIiBwYXJhbWV0 ZXIgaXMgc3BlY2lmaWVkIGFzICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8gY2hlY2sKKwkjIHRoYXQg c3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGFwcGxpZWQgdXNpbmcgYSBwYXJhbGxlbCBhcHBseSB3 b3JrZXIuCisJIyBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFi b3V0IHRoYXQsIHNvIGJ1bXAgdXAgdGhlCisJIyBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFy YWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5j b25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRub2RlX3N1YnNjcmli ZXItPnJlbG9hZDsKKwl9CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBv bi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgbGFyZ2Ug KHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCisJJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNSwg MTAwMCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGQgSU5UOworCVNB VkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQp LCAtaSwgMippIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEsIDIwMDApIHMoaSk7CisJQ09NTUlU OworCX0pOworCisJIyBhIHNtYWxsIChub24tc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERM IGFuZCBETUwKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsK KwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDIwMDEsIG1kNSgyMDAxOjp0 ZXh0KSwgLTIwMDEsIDIqMjAwMSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBl IElOVDsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgyMDAy LCBtZDUoMjAwMjo6dGV4dCksIC0yMDAyLCAyKjIwMDIsIC0zKjIwMDIpOworCUNPTU1JVDsKKwl9 KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwlj aGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVs LCAnQ09NTUlUJyk7CisKKwlteSAkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCks IGNvdW50KGUpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgyMDAyfDE5OTl8MTAw MnwxKSwKKwkJJ2NoZWNrIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyIGluIHN0cmVhbWlu ZyBtb2RlIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJKTsKKwor CSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAk bm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBBIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNh Y3Rpb24gd2l0aCBEREwgYW5kIERNTC4gT25lIG9mIHRoZSBEREwgaXMgcGVyZm9ybWVkCisJIyBh ZnRlciBETUwgdG8gZW5zdXJlIHRoYXQgd2UgaW52YWxpZGF0ZSB0aGUgc2NoZW1hIHNlbnQgZm9y IHRlc3RfdGFiIHNvIHRoYXQKKwkjIHRoZSBuZXh0IHRyYW5zYWN0aW9uIGhhcyB0byBzZW5kIHRo ZSBzY2hlbWEgYWdhaW4uCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jl cycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0 ZXh0KSwgLWksIDIqaSwgLTMqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAzLDUwMDApIHMoaSk7 CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBmIElOVDsKKwlDT01NSVQ7CisJfSk7 CisKKwkjIEEgc21hbGwgdHJhbnNhY3Rpb24gdGhhdCB3b24ndCBnZXQgc3RyZWFtZWQuIFRoaXMg aXMganVzdCB0byBlbnN1cmUgdGhhdCB3ZQorCSMgc2VuZCB0aGUgc2NoZW1hIGFnYWluIHRvIHJl ZmxlY3QgdGhlIGxhc3QgY29sdW1uIGFkZGVkIGluIHRoZSBwcmV2aW91cyB0ZXN0LgorCSRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmksIC0zKmksIDQq aSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLDUwMDUpIHMoaSk7CisJQ09NTUlUOworCX0pOwor CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNr X3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdD T01NSVQnKTsKKworCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQpLCBjb3VudChlKSwg Y291bnQoZikgRlJPTSB0ZXN0X3RhYiIKKwkpOworCWlzKCRyZXN1bHQsIHFxKDUwMDV8NTAwMnw0 MDA1fDMwMDR8NSksCisJCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBmb3Ig Ym90aCBzdHJlYW1pbmcgYW5kIG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rpb25zJworCSk7CisKKwkj IENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkn cG9zdGdyZXMnLCBxeworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMik7CisJQUxU RVIgVEFCTEUgdGVzdF90YWIgRFJPUCBDT0xVTU4gYywgRFJPUCBDT0xVTU4gZCwgRFJPUCBDT0xV TU4gZSwgRFJPUCBDT0xVTU4gZjsKKwl9KTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOworCisJIyBSZXNldCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlz X3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVz cWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vi c2NyaWJlci0+cmVsb2FkOworCX0KK30KKwogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRu b2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVy Jyk7CiAkbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcp OwpAQCAtMzcsNiArMTY5LDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCiAJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwog CiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CiAJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nv bm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRI IChzdHJlYW1pbmcgPSBvbikiCiApOwpAQCAtNDksNzcgKzE4NSwyNiBAQCBteSAkcmVzdWx0ID0K IAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3Rh YiIpOwogaXMoJHJlc3VsdCwgcXEoMnwwfDApLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3Bp ZWQgdG8gc3Vic2NyaWJlcicpOwogCi0jIGEgc21hbGwgKG5vbi1zdHJlYW1lZCkgdHJhbnNhY3Rp b24gd2l0aCBEREwgYW5kIERNTAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3Rn cmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgzLCBtZDUoMzo6 dGV4dCkpOwotQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBjIElOVDsKLVNBVkVQT0lO VCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoNCwgbWQ1KDQ6OnRleHQpLCAtNCk7 Ci1DT01NSVQ7Ci19KTsKLQotIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERM IGFuZCBETUwKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1C RUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDUsIDEwMDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBB REQgQ09MVU1OIGQgSU5UOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLCAy MDAwKSBzKGkpOwotQ09NTUlUOwotfSk7Ci0KLSMgYSBzbWFsbCAobm9uLXN0cmVhbWVkKSB0cmFu c2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkn cG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDIwMDEs IG1kNSgyMDAxOjp0ZXh0KSwgLTIwMDEsIDIqMjAwMSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBB REQgQ09MVU1OIGUgSU5UOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFM VUVTICgyMDAyLCBtZDUoMjAwMjo6dGV4dCksIC0yMDAyLCAyKjIwMDIsIC0zKjIwMDIpOwotQ09N TUlUOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7 Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK LQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCksIGNvdW50KGUpIEZST00gdGVz dF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDIwMDJ8MTk5OXwxMDAyfDEpLAotCSdjaGVjayBkYXRh IHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEgY29s dW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwotKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1 Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwogCi0jIEEgbGFyZ2UgKHN0 cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MLiBPbmUgb2YgdGhlIERETCBpcyBw ZXJmb3JtZWQKLSMgYWZ0ZXIgRE1MIHRvIGVuc3VyZSB0aGF0IHdlIGludmFsaWRhdGUgdGhlIHNj aGVtYSBzZW50IGZvciB0ZXN0X3RhYiBzbyB0aGF0Ci0jIHRoZSBuZXh0IHRyYW5zYWN0aW9uIGhh cyB0byBzZW5kIHRoZSBzY2hlbWEgYWdhaW4uCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgK LQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwg bWQ1KGk6OnRleHQpLCAtaSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDMsNTAw MCkgcyhpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZiBJTlQ7Ci1DT01NSVQ7 Ci19KTsKLQotIyBBIHNtYWxsIHRyYW5zYWN0aW9uIHRoYXQgd29uJ3QgZ2V0IHN0cmVhbWVkLiBU aGlzIGlzIGp1c3QgdG8gZW5zdXJlIHRoYXQgd2UKLSMgc2VuZCB0aGUgc2NoZW1hIGFnYWluIHRv IHJlZmxlY3QgdGhlIGxhc3QgY29sdW1uIGFkZGVkIGluIHRoZSBwcmV2aW91cyB0ZXN0LgotJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSwgLTMqaSwgNCpp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsNTAwNSkgcyhpKTsKLUNPTU1JVDsKLX0pOwotCi0k bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0K LSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3Vu dCgqKSwgY291bnQoYyksIGNvdW50KGQpLCBjb3VudChlKSwgY291bnQoZikgRlJPTSB0ZXN0X3Rh YiIpOwotaXMoJHJlc3VsdCwgcXEoNTAwNXw1MDAyfDQwMDV8MzAwNHw1KSwKLQknY2hlY2sgZGF0 YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIgZm9yIGJvdGggc3RyZWFtaW5nIGFuZCBub24tc3Ry ZWFtaW5nIHRyYW5zYWN0aW9ucycKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJworIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNh dGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3Ry ZWFtaW5nJzsiCiApOwogCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIp OworCiskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VM RUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNh dGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAg b3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBh ZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOworCit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJs aXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsKKwogJG5vZGVfc3Vic2NyaWJl ci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3RvcDsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsIGIvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsCmluZGV4IDU1MWYxNmRmNmQu LmI0MDRmZWQ0YjkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOF9zdHJl YW1fc3VieGFjdF9hYm9ydC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMThfc3Ry ZWFtX3N1YnhhY3RfYWJvcnQucGwKQEAgLTgsNiArOCwxNDUgQEAgdXNlIFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9y ZTsKIAorIyBDaGVjayB0aGUgbG9nIHRoYXQgdGhlIHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBj b21wbGV0ZWQgc3VjY2Vzc2Z1bGx5CisjIHJlcG9ydGVkIGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtl ci4KK3N1YiBjaGVja19wYXJhbGxlbF9sb2cKK3sKKwlteSAoJG5vZGVfc3Vic2NyaWJlciwgJG9m ZnNldCwgJGlzX3BhcmFsbGVsLCAkdHlwZSkgPSBAXzsKKworCWlmICgkaXNfcGFyYWxsZWwpCisJ eworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJCQlxci9ERUJVRzogKCBbQS1a MC05XSs6KT8gZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgU1RSRUFNICR0eXBlIGNvbW1hbmQvLAor CQkJJG9mZnNldCk7CisJfQorfQorCisjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qg c3RlcHMgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIKKyMgcGFyYW1ldGVyIHNvIHRo ZSBzYW1lIGNvZGUgY2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZAorIyBz dHJlYW1pbmc9cGFyYWxsZWwgY2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5v ZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFsbGVsKSA9 IEBfOworCisJbXkgJG9mZnNldCA9IDA7CisKKwkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBp cyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjaworCSMgdGhhdCBzdHJl YW1lZCB0cmFuc2FjdGlvbiB3YXMgYXBwbGllZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtl ci4KKwkjIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQg dGhhdCwgc28gYnVtcCB1cCB0aGUKKwkjIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxl bCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYn LAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+ cmVsb2FkOworCX0KKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgor CSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBsYXJnZSAoc3Ry ZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNLcworCSRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo Myw1MDApIHMoaSk7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7CisJ U0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwxNTAwKSBzKGkpOworCVNBVkVQT0lOVCBzMzsK KwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDE1MDEsMjAwMCkgcyhpKTsKKwlST0xMQkFDSyBUTyBzMjsKKwlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIw MDEsMjUwMCkgcyhpKTsKKwlST0xMQkFDSyBUTyBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBT RUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDI1MDEsMzAwMCkgcyhp KTsKKwlTQVZFUE9JTlQgczQ7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzMDAxLDM1MDApIHMoaSk7CisJU0FWRVBPSU5U IHM1OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMzUwMSw0MDAwKSBzKGkpOworCUNPTU1JVDsKKwl9KTsKKworCSRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxl bF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnQ09NTUlUJyk7 CisKKwlteSAkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7CisJaXMo JHJlc3VsdCwgcXEoMjAwMHwwKSwKKwkJJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3YXMg cmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBk ZWZhdWx0cycKKwkpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24u CisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIGxhcmdlIChz dHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyBvdXQgb2Ygb3Jk ZXIKKwkjIHN1YnRyYW5zYWN0aW9uIFJPTExCQUNLcworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNDAwMSw0NTAwKSBzKGkp OworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsNTUwMCkgcyhpKTsKKwlTQVZFUE9JTlQg czI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3Nlcmllcyg2MDAxLDY1MDApIHMoaSk7CisJU0FWRVBPSU5UIHMzOworCUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo NzAwMSw3NTAwKSBzKGkpOworCVJFTEVBU0UgczI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg4MDAxLDg1MDApIHMoaSk7 CisJUk9MTEJBQ0sgVE8gczE7CisJQ09NTUlUOworCX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9z dWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdDT01NSVQnKTsKKworCSRyZXN1bHQg PQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1Qg Y291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgyNTAw fDApLAorCQknY2hlY2sgcm9sbGJhY2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vi c2NyaWJlcicpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJ JG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIGxhcmdlIChzdHJl YW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyByb2xsYmFjaworCSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlO U0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoODUwMSw5MDAwKSBzKGkpOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDkwMDEsOTUw MCkgcyhpKTsKKwlTQVZFUE9JTlQgczI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg5NTAxLDEwMDAwKSBzKGkpOworCVJP TExCQUNLOworCX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAk aXNfcGFyYWxsZWwsICdBQk9SVCcpOworCisJJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJP TSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDI1MDB8MCksICdjaGVjayByb2xsYmFjayB3 YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRh CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9N IHRlc3RfdGFiIFdIRVJFIChhID4gMikiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOworCisJIyBSZXNldCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlz X3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVz cWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vi c2NyaWJlci0+cmVsb2FkOworCX0KK30KKwogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRu b2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVy Jyk7CiAkbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcp OwpAQCAtMzYsNiArMTc1LDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCiAJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwog CiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CiAJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nv bm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRI IChzdHJlYW1pbmcgPSBvbikiCiApOwpAQCAtNDgsODEgKzE5MSwyNSBAQCBteSAkcmVzdWx0ID0K IAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0 LCBxcSgyfDApLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicp OwogCi0jIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwsIERNTCBhbmQgUk9M TEJBQ0tzCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVH SU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDMsNTAwKSBzKGkpOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAw MCkgcyhpKTsKLVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwxNTAwKSBzKGkpOwotU0FWRVBP SU5UIHMzOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3NlcmllcygxNTAxLDIwMDApIHMoaSk7Ci1ST0xMQkFDSyBUTyBzMjsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMjAwMSwyNTAwKSBzKGkpOwotUk9MTEJBQ0sgVE8gczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3Rh YiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDI1MDEsMzAwMCkg cyhpKTsKLVNBVkVQT0lOVCBzNDsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMzAwMSwzNTAwKSBzKGkpOwotU0FWRVBPSU5U IHM1OwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3NlcmllcygzNTAxLDQwMDApIHMoaSk7Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNv dW50KGMpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDIwMDB8MCksCi0JJ2NoZWNr IHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5kIGV4 dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKK3Rlc3Rfc3RyZWFtaW5nKCRub2Rl X3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOworCisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2Rl ICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAk b2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNU IHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICck YXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAotIyBsYXJnZSAoc3RyZWFt ZWQpIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciByZWNlaXZpbmcgb3V0IG9mIG9yZGVyCi0j IHN1YnRyYW5zYWN0aW9uIFJPTExCQUNLcwotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0J J3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg0MDAxLDQ1MDApIHMoaSk7Ci1TQVZFUE9J TlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDUwMDEsNTUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo NjAwMSw2NTAwKSBzKGkpOwotU0FWRVBPSU5UIHMzOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg3MDAxLDc1MDApIHMoaSk7 Ci1SRUxFQVNFIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0 KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg4MDAxLDg1MDApIHMoaSk7Ci1ST0xMQkFDSyBUTyBzMTsK LUNPTU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJl c3VsdCwgcXEoMjUwMHwwKSwKLQknY2hlY2sgcm9sbGJhY2sgdG8gc2F2ZXBvaW50IHdhcyByZWZs ZWN0ZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24g d2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyByb2xsYmFjawotJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg4NTAxLDkwMDApIHMoaSk7 Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDkwMDEsOTUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMjsK LUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoOTUwMSwxMDAwMCkgcyhpKTsKLVJPTExCQUNLOwotfSk7Ci0KLSRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3Vu dChjKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgyNTAwfDApLCAnY2hlY2sgcm9s bGJhY2sgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0 cmVhbWluZyA9IHBhcmFsbGVsKSIpOworCiskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50 aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBs aWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAn c3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBm b3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOworCit0ZXN0 X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAx KTsKIAogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3RvcDsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxf YWJvcnQucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRs X2Fib3J0LnBsCmluZGV4IDRkN2RhODJiN2EuLmMwNWQ4ODIwNTIgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxfYWJvcnQucGwKKysrIGIv c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbApA QCAtOSw2ICs5LDkxIEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgQ2hlY2sgdGhlIGxvZyB0 aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQor IyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCitzdWIgY2hlY2tfcGFyYWxsZWxf bG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJHR5 cGUpID0gQF87CisKKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+ d2FpdF9mb3JfbG9nKAorCQkJcXIvREVCVUc6ICggW0EtWjAtOV0rOik/IGZpbmlzaGVkIHByb2Nl c3NpbmcgdGhlIFNUUkVBTSAkdHlwZSBjb21tYW5kLywKKwkJCSRvZmZzZXQpOworCX0KK30KKwor IyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVk IHRvICJzdHJlYW1pbmciCisjIHBhcmFtZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4g Ym90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQKKyMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2Vz Lgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vi c2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJhbGxlbCkgPSBAXzsKKworCW15ICRvZmZzZXQgPSAw OworCisJIyBJZiAic3RyZWFtaW5nIiBwYXJhbWV0ZXIgaXMgc3BlY2lmaWVkIGFzICJwYXJhbGxl bCIsIHdlIG5lZWQgdG8gY2hlY2sKKwkjIHRoYXQgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGFw cGxpZWQgdXNpbmcgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJIyBXZSBoYXZlIHRvIGxvb2sg Zm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNvIGJ1bXAgdXAgdGhlCisJ IyBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3Jp YmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2Vz ID0gZGVidWcxIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkjIENoZWNr IHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vi c2NyaWJlci0+bG9nZmlsZTsKKworCSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRo IERETCwgRE1MIGFuZCBST0xMQkFDS3MKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJ J3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwg bWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsNTAwKSBzKGkpOworCUFMVEVSIFRB QkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gYyBJTlQ7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDUwMSwxMDAwKSBzKGkpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZCBJ TlQ7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCksIC1pLCAyKmkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwxNTAwKSBzKGkpOwor CUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZSBJTlQ7CisJU0FWRVBPSU5UIHMzOwor CUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmksIC0z KmkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUwMSwyMDAwKSBzKGkpOworCUFMVEVSIFRBQkxFIHRl c3RfdGFiIERST1AgQ09MVU1OIGM7CisJUk9MTEJBQ0sgVE8gczE7CisJSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEs MTAwMCkgcyhpKTsKKwlDT01NSVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmli ZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJ0NPTU1JVCcpOworCisJbXkgJHJlc3VsdCA9CisJ ICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3Vu dCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDEwMDB8NTAw KSwKKwkJJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNj cmliZXIgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJ IyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJ J3Bvc3RncmVzJywgcXsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpOworCUFM VEVSIFRBQkxFIHRlc3RfdGFiIERST1AgQ09MVU1OIGM7CisJfSk7CisJJG5vZGVfcHVibGlzaGVy LT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgUmVzZXQgdGhlIGxvZyB2ZXJib3Np dHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9j b25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7 CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9Cit9CisKICMgQ3JlYXRlIHB1Ymxpc2hl ciBub2RlCiBteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5u ZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcg PT4gJ2xvZ2ljYWwnKTsKQEAgLTM3LDYgKzEyMiwxMCBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUg dGVzdF90YWIiKTsKIAogbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7CisKKyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAogCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVDVElPTiAn JHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJQ0FUSU9O IHRhcF9wdWIgV0lUSCAoc3RyZWFtaW5nID0gb24pIgogKTsKQEAgLTQ5LDM1ICsxMzgsMjYgQEAg bXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIp OwogaXMoJHJlc3VsdCwgcXEoMnwwKSwgJ2NoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRv IHN1YnNjcmliZXInKTsKIAotIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERM LCBETUwgYW5kIFJPTExCQUNLcwotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3Rn cmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0 ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLDUwMCkgcyhpKTsKLUFMVEVSIFRBQkxFIHRlc3Rf dGFiIEFERCBDT0xVTU4gYyBJTlQ7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3Rh YiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAw MCkgcyhpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZCBJTlQ7Ci1TQVZFUE9J TlQgczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwg MippIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEsMTUwMCkgcyhpKTsKLUFMVEVSIFRBQkxFIHRl c3RfdGFiIEFERCBDT0xVTU4gZSBJTlQ7Ci1TQVZFUE9JTlQgczM7Ci1JTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVf c2VyaWVzKDE1MDEsMjAwMCkgcyhpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIERST1AgQ09MVU1O IGM7Ci1ST0xMQkFDSyBUTyBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCksIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7Ci1DT01NSVQ7 Ci19KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQot JHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJT RUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFx KDEwMDB8NTAwKSwKLQknY2hlY2sgcm9sbGJhY2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQg b24gc3Vic2NyaWJlciBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwor dGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFt ZSwgMCk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3Qg dXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBh cHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiAp OwogCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VC U0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIpOworCiskbm9kZV9w dWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAk b2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0g JyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJU aW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2lu ZyBTVUJTQ1JJUFRJT04iOworCit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2Rl X3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsKKwogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRu b2RlX3B1Ymxpc2hlci0+c3RvcDsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJf dHdvcGhhc2VfY2FzY2FkZS5wbAppbmRleCA3YTc5N2YzN2JhLi40OTAyMjYzZDY3IDEwMDY0NAot LS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbAorKysg Yi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbApAQCAtMTEs NiArMTEsMjM4IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVT UUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgQ2hlY2sgdGhlIGxvZyB0aGF0 IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQorIyBy ZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCitzdWIgY2hlY2tfcGFyYWxsZWxfbG9n Cit7CisJbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRzdHJlYW1pbmdfbW9kZSwgJHR5 cGUpID0gQF87CisKKwlpZiAoJHN0cmVhbWluZ19tb2RlIGVxICdwYXJhbGxlbCcpCisJeworCQkk bm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJCQlxci9ERUJVRzogKCBbQS1aMC05XSs6 KT8gZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgU1RSRUFNICR0eXBlIGNvbW1hbmQvLAorCQkJJG9m ZnNldCk7CisJfQorfQorCisjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMg d2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIgcGFyYW1ldGVyCisjIHNvIHRoZSBzYW1l IGNvZGUgY2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZCBzdHJlYW1pbmc9 cGFyYWxsZWwKKyMgY2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVfQSwg JG5vZGVfQiwgJG5vZGVfQywgJGFwcG5hbWVfQiwgJGFwcG5hbWVfQywgJHN0cmVhbWluZ19tb2Rl KSA9CisJICBAXzsKKworCW15ICRvZmZzZXRfQiA9IDA7CisJbXkgJG9mZnNldF9DID0gMDsKKwor CW15ICRvbGRwaWRfQiA9ICRub2RlX0EtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlT RUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbgorCQlXSEVSRSBhcHBsaWNhdGlvbl9u YW1lID0gJyRhcHBuYW1lX0InIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIpOworCW15ICRvbGRw aWRfQyA9ICRub2RlX0ItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlTRUxFQ1QgcGlk IEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbgorCQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRh cHBuYW1lX0MnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIpOworCisJIyBTZXR1cCBsb2dpY2Fs IHJlcGxpY2F0aW9uIHN0cmVhbWluZyBtb2RlCisKKwkkbm9kZV9CLT5zYWZlX3BzcWwoCisJCSdw b3N0Z3JlcycsICIKKwkJQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWJfQgorCQlTRVQgKHN0cmVh bWluZyA9ICRzdHJlYW1pbmdfbW9kZSk7Iik7CisJJG5vZGVfQy0+c2FmZV9wc3FsKAorCQkncG9z dGdyZXMnLCAiCisJCUFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViX0MKKwkJU0VUIChzdHJlYW1p bmcgPSAkc3RyZWFtaW5nX21vZGUpIik7CisKKwkjIFdhaXQgZm9yIHN1YnNjcmliZXJzIHRvIGZp bmlzaCBpbml0aWFsaXphdGlvbgorCisJJG5vZGVfQS0+cG9sbF9xdWVyeV91bnRpbCgKKwkJJ3Bv c3RncmVzJywgIgorCQlTRUxFQ1QgcGlkICE9ICRvbGRwaWRfQiBGUk9NIHBnX3N0YXRfcmVwbGlj YXRpb24KKwkJV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9CJyBBTkQgc3RhdGUg PSAnc3RyZWFtaW5nJzsiCisJKSBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBh cHBseSB0byByZXN0YXJ0IjsKKwkkbm9kZV9CLT5wb2xsX3F1ZXJ5X3VudGlsKAorCQkncG9zdGdy ZXMnLCAiCisJCVNFTEVDVCBwaWQgIT0gJG9sZHBpZF9DIEZST00gcGdfc3RhdF9yZXBsaWNhdGlv bgorCQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lX0MnIEFORCBzdGF0ZSA9ICdz dHJlYW1pbmcnOyIKKwkpIG9yIGRpZSAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5 IHRvIHJlc3RhcnQiOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgVGVz dCAyUEMgUFJFUEFSRSAvIENPTU1JVCBQUkVQQVJFRC4KKwkjIDEuIERhdGEgaXMgc3RyZWFtZWQg YXMgYSAyUEMgdHJhbnNhY3Rpb24uCisJIyAyLiBUaGVuIGRvIGNvbW1pdCBwcmVwYXJlZC4KKwkj CisJIyBFeHBlY3QgYWxsIGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyKHMpIGFmdGVy IHRoZSBjb21taXQuCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBJZiAi c3RyZWFtaW5nIiBwYXJhbWV0ZXIgaXMgc3BlY2lmaWVkIGFzICJwYXJhbGxlbCIsIHdlIG5lZWQg dG8gY2hlY2sKKwkjIHRoYXQgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIHByZXBhcmVkIHVzaW5n IGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorCSMgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVC VUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0aGF0LCBzbyBidW1wIHVwIHRoZQorCSMgbG9nIHZlcmJv c2l0eS4KKwlpZiAoJHN0cmVhbWluZ19tb2RlIGVxICdwYXJhbGxlbCcpCisJeworCQkkbm9kZV9C LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1 ZzEiKTsKKwkJJG5vZGVfQi0+cmVsb2FkOworCisJCSRub2RlX0MtPmFwcGVuZF9jb25mKCdwb3N0 Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9DLT5y ZWxvYWQ7CisJfQorCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJ JG9mZnNldF9CID0gLXMgJG5vZGVfQi0+bG9nZmlsZTsKKwkkb2Zmc2V0X0MgPSAtcyAkbm9kZV9D LT5sb2dmaWxlOworCisJIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRv IGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KKwkjIFRoZW4gMlBDIFBSRVBBUkUKKwkkbm9kZV9BLT5z YWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDAp IHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9 IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFS RSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJJG5vZGVfQS0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKKwkkbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lX0MpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX0IsICRvZmZzZXRfQiwgJHN0cmVh bWluZ19tb2RlLCAnUFJFUEFSRScpOworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9DLCAkb2Zm c2V0X0MsICRzdHJlYW1pbmdfbW9kZSwgJ1BSRVBBUkUnKTsKKworCSMgY2hlY2sgdGhlIHRyYW5z YWN0aW9uIHN0YXRlIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIocykKKwlteSAkcmVzdWx0ID0K KwkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZS T00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlv biBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEInKTsKKwkkcmVzdWx0ID0KKwkgICRub2RlX0Mt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFy ZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJl ZCBvbiBzdWJzY3JpYmVyIEMnKTsKKworCSMgMlBDIENPTU1JVAorCSRub2RlX0EtPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisK Kwkkbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOworCSRub2RlX0ItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gd2Fz IGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyKHMpCisJJHJlc3VsdCA9ICRub2RlX0ItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5 OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKKwkJ J1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQiwgYW5k IGV4dHJhIGNvbHVtbnMgaGF2ZSBsb2NhbCBkZWZhdWx0cycKKwkpOworCSRyZXN1bHQgPSAkbm9k ZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyks IGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMz MzR8MzMzNCksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJz Y3JpYmVyIEMsIGFuZCBleHRyYSBjb2x1bW5zIGhhdmUgbG9jYWwgZGVmYXVsdHMnCisJKTsKKwor CSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIocykK KwkkcmVzdWx0ID0KKwkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNU IGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCks ICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9 CisJICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBG Uk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rp b24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQycpOworCisJIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworCSMgVGVzdCAyUEMgUFJFUEFSRSB3aXRoIGEgbmVzdGVkIFJPTExCQUNL IFRPIFNBVkVQT0lOVC4KKwkjIDAuIENsZWFudXAgZnJvbSBwcmV2aW91cyB0ZXN0IGxlYXZpbmcg b25seSAyIHJvd3MuCisJIyAxLiBJbnNlcnQgb25lIG1vcmUgcm93LgorCSMgMi4gUmVjb3JkIGEg U0FWRVBPSU5ULgorCSMgMy4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCisJIyA0LiBEbyBy b2xsYmFjayB0byBTQVZFUE9JTlQgcHJpb3IgdG8gdGhlIHN0cmVhbWVkIGluc2VydHMuCisJIyA1 LiBUaGVuIENPTU1JVCBQUkVQQVJFRC4KKwkjCisJIyBFeHBlY3QgZGF0YSBhZnRlciB0aGUgU0FW RVBPSU5UIGlzIGFib3J0ZWQgbGVhdmluZyBvbmx5IDMgcm93cyAoPSAyIG9yaWdpbmFsICsgMSBm cm9tIHN0ZXAgMSkuCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBGaXJz dCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzIChkZWxldGUgd2lsbCBiZSByZXBs aWNhdGVkKQorCSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVz dF90YWIgV0hFUkUgYSA+IDI7Iik7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9t IG5vdyBvbi4KKwkkb2Zmc2V0X0IgPSAtcyAkbm9kZV9CLT5sb2dmaWxlOworCSRvZmZzZXRfQyA9 IC1zICRub2RlX0MtPmxvZ2ZpbGU7CisKKwkjIDJQQyBQUkVQQVJFIHdpdGggYSBuZXN0ZWQgUk9M TEJBQ0sgVE8gU0FWRVBPSU5UCisJJG5vZGVfQS0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCAi CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTksICdmb29iYXIn KTsKKwkJU0FWRVBPSU5UIHNwX2lubmVyOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1Qg aSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQ REFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVU RSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUk9MTEJBQ0sgVE8gU0FWRVBP SU5UIHNwX2lubmVyOworCQlQUkVQQVJFIFRSQU5TQUNUSU9OICdvdXRlcic7CisJCSIpOworCisJ JG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKKwkkbm9kZV9CLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lX0MpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX0IsICRv ZmZzZXRfQiwgJHN0cmVhbWluZ19tb2RlLCAnUFJFUEFSRScpOworCisJIyBjaGVjayB0aGUgdHJh bnNhY3Rpb24gc3RhdGUgcHJlcGFyZWQgb24gc3Vic2NyaWJlcihzKQorCSRyZXN1bHQgPQorCSAg JG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBw Z19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlz IHByZXBhcmVkIG9uIHN1YnNjcmliZXIgQicpOworCSRyZXN1bHQgPQorCSAgJG5vZGVfQy0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94 YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9u IHN1YnNjcmliZXIgQycpOworCisJIyAyUEMgQ09NTUlUCisJJG5vZGVfQS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJDT01NSVQgUFJFUEFSRUQgJ291dGVyJzsiKTsKKworCSRub2RlX0EtPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWVfQik7CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZV9DKTsKKworCSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVkIG9uIHN1 YnNjcmliZXIKKwkkcmVzdWx0ID0KKwkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3Vs dCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyIEInKTsKKwkkcmVz dWx0ID0KKwkgICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50 KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFu c2FjdGlvbiBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyIEMnKTsKKworCSMgY2hlY2sgaW5zZXJ0cyBh cmUgdmlzaWJsZSBhdCBzdWJzY3JpYmVyKHMpLgorCSMgQWxsIHRoZSBzdHJlYW1lZCBkYXRhIChw cmlvciB0byB0aGUgU0FWRVBPSU5UKSBzaG91bGQgYmUgcm9sbGVkIGJhY2suCisJIyAoOTk5OSwg J2Zvb2JhcicpIHNob3VsZCBiZSBjb21taXR0ZWQuCisJJHJlc3VsdCA9ICRub2RlX0ItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIgd2hlcmUg YiA9ICdmb29iYXInOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAnUm93cyBjb21taXR0ZWQgYXJl IHByZXNlbnQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9CisJICAkbm9kZV9CLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiOyIpOworCWlz KCRyZXN1bHQsIHFxKDMpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJl ciBCJyk7CisJJHJlc3VsdCA9ICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VM RUNUIGNvdW50KCopIEZST00gdGVzdF90YWIgd2hlcmUgYiA9ICdmb29iYXInOyIpOworCWlzKCRy ZXN1bHQsIHFxKDEpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBD Jyk7CisJJHJlc3VsdCA9CisJICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVD VCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiOyIpOworCWlzKCRyZXN1bHQsIHFxKDMpLCAnUm93cyBj b21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBDJyk7CisKKwkjIENsZWFudXAgdGhl IHRlc3QgZGF0YQorCSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00g dGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7CisJJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZV9CKTsKKwkkbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOworCisJIyBS ZXNldCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJHN0cmVhbWluZ19tb2RlIGVxICdwYXJhbGxl bCcpCisJeworCQkkbm9kZV9CLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19t aW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX0ItPnJlbG9hZDsKKworCQkkbm9kZV9D LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSB3YXJu aW5nIik7CisJCSRub2RlX0MtPnJlbG9hZDsKKwl9Cit9CisKICMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKICMgU2V0dXAgYSBjYXNjYWRlIG9mIHB1Yi9zdWIgbm9kZXMuCiAjIG5vZGVf QSAtPiBub2RlX0IgLT4gbm9kZV9DCkBAIC0yNjAsMTYwICs0OTIsMTUgQEAgaXMoJHJlc3VsdCwg cXEoMjEpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBDJyk7CiAj IDJQQyArIFNUUkVBTUlORyBURVNUUwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotbXkgJG9s ZHBpZF9CID0gJG5vZGVfQS0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlTRUxFQ1QgcGlk IEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbgotCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFw cG5hbWVfQicgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7Iik7Ci1teSAkb2xkcGlkX0MgPSAkbm9k ZV9CLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgIgotCVNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0 X3JlcGxpY2F0aW9uCi0JV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9DJyBBTkQg c3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsKLQotIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uIChz dHJlYW1pbmcgPSBvbikKLQotJG5vZGVfQi0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlB TFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9CCi0JU0VUIChzdHJlYW1pbmcgPSBvbik7Iik7Ci0k bm9kZV9DLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgIgotCUFMVEVSIFNVQlNDUklQVElPTiB0 YXBfc3ViX0MKLQlTRVQgKHN0cmVhbWluZyA9IG9uKSIpOwotCi0jIFdhaXQgZm9yIHN1YnNjcmli ZXJzIHRvIGZpbmlzaCBpbml0aWFsaXphdGlvbgotCi0kbm9kZV9BLT5wb2xsX3F1ZXJ5X3VudGls KAotCSdwb3N0Z3JlcycsICIKLQlTRUxFQ1QgcGlkICE9ICRvbGRwaWRfQiBGUk9NIHBnX3N0YXRf cmVwbGljYXRpb24KLQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lX0InIEFORCBz dGF0ZSA9ICdzdHJlYW1pbmcnOyIKLSkgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBm b3IgYXBwbHkgdG8gcmVzdGFydCI7Ci0kbm9kZV9CLT5wb2xsX3F1ZXJ5X3VudGlsKAotCSdwb3N0 Z3JlcycsICIKLQlTRUxFQ1QgcGlkICE9ICRvbGRwaWRfQyBGUk9NIHBnX3N0YXRfcmVwbGljYXRp b24KLQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lX0MnIEFORCBzdGF0ZSA9ICdz dHJlYW1pbmcnOyIKLSkgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkg dG8gcmVzdGFydCI7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgVGVzdCAy UEMgUFJFUEFSRSAvIENPTU1JVCBQUkVQQVJFRC4KLSMgMS4gRGF0YSBpcyBzdHJlYW1lZCBhcyBh IDJQQyB0cmFuc2FjdGlvbi4KLSMgMi4gVGhlbiBkbyBjb21taXQgcHJlcGFyZWQuCi0jCi0jIEV4 cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIocykgYWZ0ZXIgdGhlIGNv bW1pdC4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBJbnNlcnQsIHVwZGF0 ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSMgVGhl biAyUEMgUFJFUEFSRQotJG5vZGVfQS0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVH SU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1k NShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9k KGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsK LQotJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKLSRub2RlX0ItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCit0ZXN0X3N0cmVhbWluZygkbm9kZV9BLCAkbm9kZV9CLCAkbm9kZV9DLCAk YXBwbmFtZV9CLCAkYXBwbmFtZV9DLCAnb24nKTsKIAotIyBjaGVjayB0aGUgdHJhbnNhY3Rpb24g c3RhdGUgaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcihzKQotJHJlc3VsdCA9Ci0gICRub2RlX0It PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRf eGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9u IHN1YnNjcmliZXIgQicpOwotJHJlc3VsdCA9Ci0gICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVz dWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIgQycpOwot Ci0jIDJQQyBDT01NSVQKLSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ09NTUlUIFBS RVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRub2RlX0EtPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWVfQik7Ci0kbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOwot Ci0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gd2FzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyKHMp Ci0kcmVzdWx0ID0gJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3Vu dCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1 bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBjb21t aXR0ZWQgb24gc3Vic2NyaWJlciBCLCBhbmQgZXh0cmEgY29sdW1ucyBoYXZlIGxvY2FsIGRlZmF1 bHRzJwotKTsKLSRyZXN1bHQgPSAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VM RUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwot aXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBo YXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyIEMsIGFuZCBleHRyYSBjb2x1bW5zIGhhdmUgbG9j YWwgZGVmYXVsdHMnCi0pOwotCi0jIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBlbmRl ZCBvbiBzdWJzY3JpYmVyKHMpCi0kcmVzdWx0ID0KLSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRy ZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQicp OwotJHJlc3VsdCA9Ci0gICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNv dW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3Ry YW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyIEMnKTsKLQotIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIwotIyBUZXN0IDJQQyBQUkVQQVJFIHdpdGggYSBuZXN0ZWQgUk9M TEJBQ0sgVE8gU0FWRVBPSU5ULgotIyAwLiBDbGVhbnVwIGZyb20gcHJldmlvdXMgdGVzdCBsZWF2 aW5nIG9ubHkgMiByb3dzLgotIyAxLiBJbnNlcnQgb25lIG1vcmUgcm93LgotIyAyLiBSZWNvcmQg YSBTQVZFUE9JTlQuCi0jIDMuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyA0LiBEbyBy b2xsYmFjayB0byBTQVZFUE9JTlQgcHJpb3IgdG8gdGhlIHN0cmVhbWVkIGluc2VydHMuCi0jIDUu IFRoZW4gQ09NTUlUIFBSRVBBUkVELgotIwotIyBFeHBlY3QgZGF0YSBhZnRlciB0aGUgU0FWRVBP SU5UIGlzIGFib3J0ZWQgbGVhdmluZyBvbmx5IDMgcm93cyAoPSAyIG9yaWdpbmFsICsgMSBmcm9t IHN0ZXAgMSkuCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgRmlyc3QsIGRl bGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAoZGVsZXRlIHdpbGwgYmUgcmVwbGljYXRl ZCkKLSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIg V0hFUkUgYSA+IDI7Iik7Ci0KLSMgMlBDIFBSRVBBUkUgd2l0aCBhIG5lc3RlZCBST0xMQkFDSyBU TyBTQVZFUE9JTlQKLSRub2RlX0EtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAiCi0JQkVHSU47 Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg5OTk5LCAnZm9vYmFyJyk7Ci0JU0FWRVBP SU5UIHNwX2lubmVyOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVzdF90YWIg U0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3RfdGFi IFdIRVJFIG1vZChhLDMpID0gMDsKLQlST0xMQkFDSyBUTyBTQVZFUE9JTlQgc3BfaW5uZXI7Ci0J UFJFUEFSRSBUUkFOU0FDVElPTiAnb3V0ZXInOwotCSIpOwotCi0kbm9kZV9BLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lX0IpOwotJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9D KTsKLQotIyBjaGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgcHJlcGFyZWQgb24gc3Vic2NyaWJl cihzKQotJHJlc3VsdCA9Ci0gICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNU IGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwg J3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIgQicpOwotJHJlc3VsdCA9Ci0g ICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdf cHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHBy ZXBhcmVkIG9uIHN1YnNjcmliZXIgQycpOwotCi0jIDJQQyBDT01NSVQKLSRub2RlX0EtPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiQ09NTUlUIFBSRVBBUkVEICdvdXRlcic7Iik7Ci0KLSRub2RlX0Et PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7Ci0kbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lX0MpOwotCi0jIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBlbmRlZCBv biBzdWJzY3JpYmVyCi0kcmVzdWx0ID0KLSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQs IHFxKDApLCAndHJhbnNhY3Rpb24gaXMgZW5kZWQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0 ID0KLSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJP TSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24g aXMgZW5kZWQgb24gc3Vic2NyaWJlciBDJyk7Ci0KLSMgY2hlY2sgaW5zZXJ0cyBhcmUgdmlzaWJs ZSBhdCBzdWJzY3JpYmVyKHMpLgotIyBBbGwgdGhlIHN0cmVhbWVkIGRhdGEgKHByaW9yIHRvIHRo ZSBTQVZFUE9JTlQpIHNob3VsZCBiZSByb2xsZWQgYmFjay4KLSMgKDk5OTksICdmb29iYXInKSBz aG91bGQgYmUgY29tbWl0dGVkLgotJHJlc3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYiB3aGVyZSBiID0gJ2Zvb2Jhcic7 Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1 YnNjcmliZXIgQicpOwotJHJlc3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWI7Iik7Ci1pcygkcmVzdWx0LCBxcSgzKSwgJ1Jv d3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQicpOwotJHJlc3VsdCA9ICRu b2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0 X3RhYiB3aGVyZSBiID0gJ2Zvb2Jhcic7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ1Jvd3MgY29t bWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQycpOwotJHJlc3VsdCA9ICRub2RlX0Mt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWI7Iik7 Ci1pcygkcmVzdWx0LCBxcSgzKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNj cmliZXIgQycpOworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVz dCB1c2luZyBzdHJlYW1pbmcgbW9kZSAncGFyYWxsZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwordGVzdF9zdHJlYW1pbmcoJG5vZGVfQSwgJG5vZGVfQiwgJG5vZGVf QywgJGFwcG5hbWVfQiwgJGFwcG5hbWVfQywgJ3BhcmFsbGVsJyk7CiAKICMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKICMgY2hlY2sgYWxsIHRoZSBjbGVhbnVwCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsIGIvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbAppbmRleCA5YjQ1NDEwNmJkLi5j OTY2YWM5NGRiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhh c2Vfc3RyZWFtLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9z dHJlYW0ucGwKQEAgLTgsNiArOCwzMDggQEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7 CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBDaGVj ayB0aGUgbG9nIHRoYXQgdGhlIHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBjb21wbGV0ZWQgc3Vj Y2Vzc2Z1bGx5CisjIHJlcG9ydGVkIGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KK3N1YiBjaGVj a19wYXJhbGxlbF9sb2cKK3sKKwlteSAoJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3Bh cmFsbGVsLCAkdHlwZSkgPSBAXzsKKworCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9z dWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJCQlxci9ERUJVRzogKCBbQS1aMC05XSs6KT8gZmlu aXNoZWQgcHJvY2Vzc2luZyB0aGUgU1RSRUFNICR0eXBlIGNvbW1hbmQvLAorCQkJJG9mZnNldCk7 CisJfQorfQorCisjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2gg YXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIKKyMgcGFyYW1ldGVyIHNvIHRoZSBzYW1lIGNvZGUg Y2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZAorIyBzdHJlYW1pbmc9cGFy YWxsZWwgY2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVfcHVibGlzaGVy LCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFsbGVsKSA9IEBfOworCisJbXkg JG9mZnNldCA9IDA7CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBUZXN0 IDJQQyBQUkVQQVJFIC8gQ09NTUlUIFBSRVBBUkVELgorCSMgMS4gRGF0YSBpcyBzdHJlYW1lZCBh cyBhIDJQQyB0cmFuc2FjdGlvbi4KKwkjIDIuIFRoZW4gZG8gY29tbWl0IHByZXBhcmVkLgorCSMK KwkjIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIgc2lkZSBhZnRl ciB0aGUgY29tbWl0LgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgSWYg InN0cmVhbWluZyIgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLCB3ZSBuZWVk IHRvIGNoZWNrCisJIyB0aGF0IHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBwcmVwYXJlZCB1c2lu ZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkjIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERF QlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwgc28gYnVtcCB1cCB0aGUKKwkjIGxvZyB2ZXJi b3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVu ZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEi KTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSMgQ2hlY2sgdGhlIHN1YnNj cmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5s b2dmaWxlOworCisJIyBjaGVjayB0aGF0IDJQQyBnZXRzIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJl cgorCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhl IDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jlcycs IHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3Rh YiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3Rf dGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVw YXJlZF90YWInO30pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAk aXNfcGFyYWxsZWwsICdQUkVQQVJFJyk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMg aW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgorCW15ICRyZXN1bHQgPSAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBn X3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMg cHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBjb21t aXR0ZWQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiQ09NTUlU IFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlz IGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQo ZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0 KSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIs IGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJKTsKKwkkcmVzdWx0 ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291 bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3Ry YW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisJIyBUZXN0IDJQQyBQUkVQQVJFIC8gUk9MTEJBQ0sgUFJFUEFS RUQuCisJIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBs aWNhdGVkIG9uIHN1YnNjcmliZXIuCisJIyAyLiBEYXRhIGlzIHN0cmVhbWVkIHVzaW5nIDJQQy4K KwkjIDMuIERvIHJvbGxiYWNrIHByZXBhcmVkLgorCSMKKwkjIEV4cGVjdCBkYXRhIHJvbGxzIGJh Y2sgbGVhdmluZyBvbmx5IHRoZSBvcmlnaW5hbCAyIHJvd3MuCisJIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiBy b3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCisJIyBD aGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2Rl X3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0 ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0 ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUw MDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwy KSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJF UEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygk bm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdQUkVQQVJFJyk7CisKKwkj IGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJl cgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJ IlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQs IHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOworCisJIyAy UEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkJIlJPTExCQUNLIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7 CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBj aGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQg PSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3Vu dCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVz dWx0LCBxcSgyfDJ8MiksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBhcmUgcm9sbGVkIGJhY2ss IGxlYXZpbmcgb25seSB0aGUgb3JpZ2luYWwgMiByb3dzJworCSk7CisKKwkkcmVzdWx0ID0gJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikg RlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0 aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworCSMgQ2hlY2sgdGhhdCAyUEMgQ09NTUlUIFBSRVBBUkVEIGlzIGRlY29kZWQg cHJvcGVybHkgb24gY3Jhc2ggcmVzdGFydC4KKwkjIDEuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxl dGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSMgMi4gVGhlbiBzZXJ2 ZXIgY3Jhc2hlcyBiZWZvcmUgdGhlIDJQQyB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuCisJIyAz LiBBZnRlciBzZXJ2ZXJzIGFyZSByZXN0YXJ0ZWQgdGhlIHBlbmRpbmcgdHJhbnNhY3Rpb24gaXMg Y29tbWl0dGVkLgorCSMKKwkjIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNj cmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0LgorCSMgTm90ZTogYm90aCBwdWJsaXNoZXIgYW5k IHN1YnNjcmliZXIgZG8gY3Jhc2gvcmVzdGFydC4KKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zm c2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAw KSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikg PSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBB UkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3N1YnNjcmli ZXItPnN0b3AoJ2ltbWVkaWF0ZScpOworCSRub2RlX3B1Ymxpc2hlci0+c3RvcCgnaW1tZWRpYXRl Jyk7CisKKwkkbm9kZV9wdWJsaXNoZXItPnN0YXJ0OworCSRub2RlX3N1YnNjcmliZXItPnN0YXJ0 OworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19w YXJhbGxlbCwgJ1BSRVBBUkUnKTsKKworCSMgY29tbWl0IHBvc3QgdGhlIHJlc3RhcnQKKwkkbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiQ09NTUlUIFBSRVBBUkVEICd0 ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKKworCSMgY2hlY2sgaW5zZXJ0cyBhcmUgdmlzaWJsZQorCSRyZXN1bHQgPSAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgq KSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0 LCBxcSgzMzM0fDMzMzR8MzMzNCksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1p dHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1 bHRzJworCSk7CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBEbyBJTlNF UlQgYWZ0ZXIgdGhlIFBSRVBBUkUgYnV0IGJlZm9yZSBST0xMQkFDSyBQUkVQQVJFRC4KKwkjIDEu IFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxpY2F0ZWQgb24g c3Vic2NyaWJlci4KKwkjIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgorCSMgMy4gQSBz aW5nbGUgcm93IElOU0VSVCBpcyBkb25lIHdoaWNoIGlzIGFmdGVyIHRoZSBQUkVQQVJFLgorCSMg NC4gVGhlbiBkbyBhIFJPTExCQUNLIFBSRVBBUkVELgorCSMKKwkjIEV4cGVjdCB0aGUgMlBDIGRh dGEgcm9sbHMgYmFjayBsZWF2aW5nIG9ubHkgMyByb3dzIG9uIHRoZSBzdWJzY3JpYmVyCisJIyAo dGhlIG9yaWdpbmFsIDIgKyBpbnNlcnRlZCAxKS4KKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisKKwkjIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKHdp bGwgYmUgcmVwbGljYXRlZCkKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7CisKKwkjIENoZWNrIHRo ZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2Ny aWJlci0+bG9nZmlsZTsKKworCSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3Vn aCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhp KTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsK KwkJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCQlQUkVQQVJFIFRS QU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1 YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJ1BSRVBBUkUnKTsKKworCSMgY2hlY2sg dGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCisJJHJl c3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNU IGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSks ICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIEluc2VydCBh IGRpZmZlcmVudCByZWNvcmQgKG5vdyB3ZSBhcmUgb3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5zYWN0 aW9uKQorCSMgTm90ZTogdGhlIDJQQyB0cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mg c28gbWFrZSBzdXJlIHRoaXMgaW5zZXJ0IGlzIGZvciBhIHNlcGFyYXRlIHByaW1hcnkga2V5CisJ JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIklOU0VSVCBJTlRPIHRl c3RfdGFiIFZBTFVFUyAoOTk5OTksICdmb29iYXInKSIpOworCisJIyAyUEMgdHJhbnNhY3Rpb24g Z2V0cyBhYm9ydGVkCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJ IlJPTExCQUNLIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9wdWJs aXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5z YWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlciwKKwkjIGJ1dCB0aGUgZXh0cmEgSU5TRVJU IG91dHNpZGUgb2YgdGhlIDJQQyBzdGlsbCB3YXMgcmVwbGljYXRlZAorCSRyZXN1bHQgPSAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwg Y291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBx cSgzfDN8MyksCisJCSdjaGVjayB0aGUgb3V0c2lkZSBpbnNlcnQgd2FzIGNvcGllZCB0byBzdWJz Y3JpYmVyJyk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlp cygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcicp OworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgRG8gSU5TRVJUIGFmdGVy IHRoZSBQUkVQQVJFIGJ1dCBiZWZvcmUgQ09NTUlUIFBSRVBBUkVELgorCSMgMS4gVGFibGUgaXMg ZGVsZXRlZCBiYWNrIHRvIDIgcm93cyB3aGljaCBhcmUgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVy LgorCSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCisJIyAzLiBBIHNpbmdsZSByb3cg SU5TRVJUIGlzIGRvbmUgd2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCisJIyA0LiBUaGVuIGRv IGEgQ09NTUlUIFBSRVBBUkVELgorCSMKKwkjIEV4cGVjdCAyUEMgZGF0YSArIHRoZSBleHRyYSBy b3cgYXJlIG9uIHRoZSBzdWJzY3JpYmVyCisJIyAodGhlIDMzMzQgKyBpbnNlcnRlZCAxID0gMzMz NSkuCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRl IHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFi IFdIRVJFIGEgPiAyOyIpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cg b24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIFRoZW4g aW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0Ig bGltaXQuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJ CUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQg YiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdI RVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90 YWInO30pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsK KworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFy YWxsZWwsICdQUkVQQVJFJyk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJl cGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVk X3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQg b24gc3Vic2NyaWJlcicpOworCisJIyBJbnNlcnQgYSBkaWZmZXJlbnQgcmVjb3JkIChub3cgd2Ug YXJlIG91dHNpZGUgb2YgdGhlIDJQQyB0cmFuc2FjdGlvbikKKwkjIE5vdGU6IHRoZSAyUEMgdHJh bnNhY3Rpb24gc3RpbGwgaG9sZHMgcm93IGxvY2tzIHNvIG1ha2Ugc3VyZSB0aGlzIGluc2VydCBp cyBmb3IgYSBzZXBhcmFyZSBwcmltYXJ5IGtleQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5LCAnZm9v YmFyJykiKTsKKworCSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgY29tbWl0dGVkCisJJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9w cmVwYXJlZF90YWInOyIpOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vi c2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVz dF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM1fDMzMzV8MzMzNSksCisJCSdSb3dzIGluc2Vy dGVkIGJ5IDJQQyAoYXMgd2VsbCBhcyBvdXRzaWRlIGluc2VydCkgaGF2ZSBjb21taXR0ZWQgb24g c3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkp OworCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3Vs dCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcicpOworCisJ IyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7CisJJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgUmVzZXQgdGhlIGxv ZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXIt PmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3 YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9Cit9CisKICMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgU2V0dXAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKQEAgLTQ4LDYgKzM1MCwxMCBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAogCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90 YWIiKTsKIAogbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKIAkn cG9zdGdyZXMnLCAiCiAJQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViCkBAIC02NCwyMzYgKzM3 MCwzMCBAQCBteSAkdHdvcGhhc2VfcXVlcnkgPQogJG5vZGVfc3Vic2NyaWJlci0+cG9sbF9xdWVy eV91bnRpbCgncG9zdGdyZXMnLCAkdHdvcGhhc2VfcXVlcnkpCiAgIG9yIGRpZSAiVGltZWQgb3V0 IHdoaWxlIHdhaXRpbmcgZm9yIHN1YnNjcmliZXIgdG8gZW5hYmxlIHR3b3BoYXNlIjsKIAotIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBDaGVjayBpbml0aWFsIGRhdGEgd2FzIGNv cGllZCB0byBzdWJzY3JpYmVyCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiBteSAk cmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIlNFTEVD VCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKIGlz KCRyZXN1bHQsIHFxKDJ8MnwyKSwgJ2NoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1 YnNjcmliZXInKTsKIAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBUZXN0IDJQ QyBQUkVQQVJFIC8gQ09NTUlUIFBSRVBBUkVELgotIyAxLiBEYXRhIGlzIHN0cmVhbWVkIGFzIGEg MlBDIHRyYW5zYWN0aW9uLgotIyAyLiBUaGVuIGRvIGNvbW1pdCBwcmVwYXJlZC4KLSMKLSMgRXhw ZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlciBzaWRlIGFmdGVyIHRoZSBj b21taXQuCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCit0ZXN0X3N0cmVhbWluZygk bm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKIAotIyBjaGVj ayB0aGF0IDJQQyBnZXRzIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlcgotIyBJbnNlcnQsIHVwZGF0 ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBt b2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwot CVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5z YWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZS T00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9u IGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKLQotIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBj b21taXR0ZWQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkNPTU1J VCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotCi0kbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMg Y29tbWl0dGVkIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9 IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLAot CSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQg ZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAncGFyYWxs ZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworbXkgJG9sZHBpZCA9 ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgRlJP TSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUn IEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKICk7Ci0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBh cmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0 ZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0j IFRlc3QgMlBDIFBSRVBBUkUgLyBST0xMQkFDSyBQUkVQQVJFRC4KLSMgMS4gVGFibGUgaXMgZGVs ZXRlZCBiYWNrIHRvIDIgcm93cyB3aGljaCBhcmUgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgot IyAyLiBEYXRhIGlzIHN0cmVhbWVkIHVzaW5nIDJQQy4KLSMgMy4gRG8gcm9sbGJhY2sgcHJlcGFy ZWQuCi0jCi0jIEV4cGVjdCBkYXRhIHJvbGxzIGJhY2sgbGVhdmluZyBvbmx5IHRoZSBvcmlnaW5h bCAyIHJvd3MuCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgRmlyc3QsIGRl bGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSByZXBsaWNhdGVkKQotJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFi IFdIRVJFIGEgPiAyOyIpOwotCi0jIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91 Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKLQkncG9zdGdyZXMnLCBxewotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsK LQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURF TEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNU SU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7CiAKLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVw YXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hh Y3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBz dWJzY3JpYmVyJyk7Ci0KLSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgYWJvcnRlZAotJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiUk9MTEJBQ0sgUFJFUEFSRUQgJ3Rlc3Rf cHJlcGFyZWRfdGFiJzsiKTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2Ny aWJlcgotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAot CSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFi Iik7Ci1pcygkcmVzdWx0LCBxcSgyfDJ8MiksCi0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGFyZSBy b2xsZWQgYmFjaywgbGVhdmluZyBvbmx5IHRoZSBvcmlnaW5hbCAyIHJvd3MnKTsKLQotJHJlc3Vs dCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291 bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJh bnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKLSMgQ2hlY2sgdGhhdCAyUEMgQ09NTUlUIFBSRVBBUkVEIGlzIGRlY29k ZWQgcHJvcGVybHkgb24gY3Jhc2ggcmVzdGFydC4KLSMgMS4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRl bGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCi0jIDIuIFRoZW4gc2Vy dmVyIGNyYXNoZXMgYmVmb3JlIHRoZSAyUEMgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkLgotIyAz LiBBZnRlciBzZXJ2ZXJzIGFyZSByZXN0YXJ0ZWQgdGhlIHBlbmRpbmcgdHJhbnNhY3Rpb24gaXMg Y29tbWl0dGVkLgotIwotIyBFeHBlY3QgYWxsIGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3Jp YmVyIHNpZGUgYWZ0ZXIgdGhlIGNvbW1pdC4KLSMgTm90ZTogYm90aCBwdWJsaXNoZXIgYW5kIHN1 YnNjcmliZXIgZG8gY3Jhc2gvcmVzdGFydC4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKLQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJ TjsKLQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1 KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2Qo YSwzKSA9IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwot Ci0kbm9kZV9zdWJzY3JpYmVyLT5zdG9wKCdpbW1lZGlhdGUnKTsKLSRub2RlX3B1Ymxpc2hlci0+ c3RvcCgnaW1tZWRpYXRlJyk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7Ci0kbm9kZV9zdWJz Y3JpYmVyLT5zdGFydDsKLQotIyBjb21taXQgcG9zdCB0aGUgcmVzdGFydAotJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBh cmVkX3RhYic7Iik7Ci0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OwotCi0jIGNoZWNrIGluc2VydHMgYXJlIHZpc2libGUKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwg Y291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0 fDMzMzQpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3Jp YmVyLCBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwotKTsKLQotIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBEbyBJTlNFUlQgYWZ0ZXIgdGhlIFBSRVBB UkUgYnV0IGJlZm9yZSBST0xMQkFDSyBQUkVQQVJFRC4KLSMgMS4gVGFibGUgaXMgZGVsZXRlZCBi YWNrIHRvIDIgcm93cyB3aGljaCBhcmUgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgotIyAyLiBE YXRhIGlzIHN0cmVhbWVkIHVzaW5nIDJQQy4KLSMgMy4gQSBzaW5nbGUgcm93IElOU0VSVCBpcyBk b25lIHdoaWNoIGlzIGFmdGVyIHRoZSBQUkVQQVJFLgotIyA0LiBUaGVuIGRvIGEgUk9MTEJBQ0sg UFJFUEFSRUQuCi0jCi0jIEV4cGVjdCB0aGUgMlBDIGRhdGEgcm9sbHMgYmFjayBsZWF2aW5nIG9u bHkgMyByb3dzIG9uIHRoZSBzdWJzY3JpYmVyCi0jICh0aGUgb3JpZ2luYWwgMiArIGluc2VydGVk IDEpLgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIEZpcnN0LCBkZWxldGUg dGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwgYmUgcmVwbGljYXRlZCkKLSRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVS RSBhID4gMjsiKTsKLQotIyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJv d3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo Ci0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1Qg aSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBE QVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUg RlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAn dGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQg c3RhdGUgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsi KTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2Ny aWJlcicpOwotCi0jIEluc2VydCBhIGRpZmZlcmVudCByZWNvcmQgKG5vdyB3ZSBhcmUgb3V0c2lk ZSBvZiB0aGUgMlBDIHRyYW5zYWN0aW9uKQotIyBOb3RlOiB0aGUgMlBDIHRyYW5zYWN0aW9uIHN0 aWxsIGhvbGRzIHJvdyBsb2NrcyBzbyBtYWtlIHN1cmUgdGhpcyBpbnNlcnQgaXMgZm9yIGEgc2Vw YXJhdGUgcHJpbWFyeSBrZXkKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs Ci0JIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOTk5OTksICdmb29iYXInKSIpOwotCi0j IDJQQyB0cmFuc2FjdGlvbiBnZXRzIGFib3J0ZWQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIlJPTExCQUNLIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7 Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hl Y2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXIsCi0jIGJ1dCB0aGUg ZXh0cmEgSU5TRVJUIG91dHNpZGUgb2YgdGhlIDJQQyBzdGlsbCB3YXMgcmVwbGljYXRlZAotJHJl c3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1Qg Y291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygk cmVzdWx0LCBxcSgzfDN8MyksICdjaGVjayB0aGUgb3V0c2lkZSBpbnNlcnQgd2FzIGNvcGllZCB0 byBzdWJzY3JpYmVyJyk7Ci0KLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7 Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJl cicpOwotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIERvIElOU0VSVCBhZnRl ciB0aGUgUFJFUEFSRSBidXQgYmVmb3JlIENPTU1JVCBQUkVQQVJFRC4KLSMgMS4gVGFibGUgaXMg ZGVsZXRlZCBiYWNrIHRvIDIgcm93cyB3aGljaCBhcmUgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVy LgotIyAyLiBEYXRhIGlzIHN0cmVhbWVkIHVzaW5nIDJQQy4KLSMgMy4gQSBzaW5nbGUgcm93IElO U0VSVCBpcyBkb25lIHdoaWNoIGlzIGFmdGVyIHRoZSBQUkVQQVJFLgotIyA0LiBUaGVuIGRvIGEg Q09NTUlUIFBSRVBBUkVELgotIwotIyBFeHBlY3QgMlBDIGRhdGEgKyB0aGUgZXh0cmEgcm93IGFy ZSBvbiB0aGUgc3Vic2NyaWJlcgotIyAodGhlIDMzMzQgKyBpbnNlcnRlZCAxID0gMzMzNSkuCi0j IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0 YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSByZXBsaWNhdGVkKQotJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAy OyIpOwotCi0jIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBl eGNlZWQgdGhlIDY0a0IgbGltaXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9z dGdyZXMnLCBxewotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVz dF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRl c3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3By ZXBhcmVkX3RhYic7fSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBv biBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMo JHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7 Ci0KLSMgSW5zZXJ0IGEgZGlmZmVyZW50IHJlY29yZCAobm93IHdlIGFyZSBvdXRzaWRlIG9mIHRo ZSAyUEMgdHJhbnNhY3Rpb24pCi0jIE5vdGU6IHRoZSAyUEMgdHJhbnNhY3Rpb24gc3RpbGwgaG9s ZHMgcm93IGxvY2tzIHNvIG1ha2Ugc3VyZSB0aGlzIGluc2VydCBpcyBmb3IgYSBzZXBhcmFyZSBw cmltYXJ5IGtleQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiSU5T RVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg5OTk5OSwgJ2Zvb2JhcicpIik7Ci0KLSMgMlBDIHRy YW5zYWN0aW9uIGdldHMgY29tbWl0dGVkCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAotCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKLQotJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKyRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBT RVQoc3RyZWFtaW5nID0gcGFyYWxsZWwpIik7CiAKLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBp cyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChk ID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzMzM1fDMzMzV8MzMzNSks Ci0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIChhcyB3ZWxsIGFzIG91dHNpZGUgaW5zZXJ0KSBoYXZl IGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2Fs IGRlZmF1bHRzJwotKTsKKyRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdy ZXMnLAorCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdI RVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcn OyIKKyAgKQorICBvciBkaWUKKyAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0 byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQVElPTiI7CiAKLSRyZXN1bHQgPSAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZS T00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9u IGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyJyk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJs aXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsKIAogIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwogIyBjaGVjayBhbGwgdGhlIGNsZWFudXAKLS0gCjIuMjMuMC53aW5k b3dzLjEKCg== --_008_OS0PR01MB571623EFD8903C93424EFADC94E99OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v66-0003-Allow-streaming-every-change-without-waiting-til.patch" Content-Description: v66-0003-Allow-streaming-every-change-without-waiting-til.patch Content-Disposition: attachment; filename="v66-0003-Allow-streaming-every-change-without-waiting-til.patch"; size=9640; creation-date="Fri, 23 Dec 2022 09:19:04 GMT"; modification-date="Fri, 23 Dec 2022 09:19:58 GMT" Content-Transfer-Encoding: base64 RnJvbSA4ZWRmYmFhNjgwNTQwYmNmNWZmOTliYTQzMmU3NTg1ZGZkYzBkODFlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGkgWXUgPHNoaXkuZm5zdEBmdWppdHN1LmNvbT4KRGF0ZTog TW9uLCAyNCBPY3QgMjAyMiAxNTo1MjoxNCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjY2IDMvN10g QWxsb3cgc3RyZWFtaW5nIGV2ZXJ5IGNoYW5nZSB3aXRob3V0IHdhaXRpbmcgdGlsbAogbG9naWNh bF9kZWNvZGluZ193b3JrX21lbS4KCkFkZCBhIG5ldyBHVUMgZm9yY2Vfc3RyZWFtX21vZGUsIHdo ZW4gaXQgaXMgc2V0IG9uLCBzZW5kIHRoZSBjaGFuZ2UgdG8Kb3V0cHV0IHBsdWdpbiBpbW1lZGlh dGVseSBpbiBzdHJlYW1pbmcgbW9kZS4gT3RoZXJ3aXNlLCBzZW5kIHVudGlsCmxvZ2ljYWxfZGVj b2Rpbmdfd29ya19tZW0gaXMgZXhjZWVkZWQuCi0tLQogY29udHJpYi90ZXN0X2RlY29kaW5nL2V4 cGVjdGVkL3N0cmVhbS5vdXQgICAgIHwgMTMgKysrCiBjb250cmliL3Rlc3RfZGVjb2Rpbmcvc3Fs L3N0cmVhbS5zcWwgICAgICAgICAgfCAgOCArKwogZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sICAg ICAgICAgICAgICAgICAgICAgIHwgMTYgKysrKwogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVv cmRlcmJ1ZmZlci5jICAgICAgIHwgODIgKysrKysrKysrKysrLS0tLS0tLQogc3JjL2JhY2tlbmQv dXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgICAgICAgICAgIHwgMTAgKysrCiBzcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmggICAgICAgfCAgMSArCiA2IGZpbGVzIGNoYW5nZWQs IDEwMCBpbnNlcnRpb25zKCspLCAzMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmli L3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQvc3RyZWFtLm91dCBiL2NvbnRyaWIvdGVzdF9kZWNvZGlu Zy9leHBlY3RlZC9zdHJlYW0ub3V0CmluZGV4IDBmMjFkY2I4ZTAuLmIwYmI0NjdiMmIgMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3RlZC9zdHJlYW0ub3V0CisrKyBiL2Nv bnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3RlZC9zdHJlYW0ub3V0CkBAIC0xMDYsNiArMTA2LDE5 IEBAIFNFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdyZWdyZXNz aW9uX3Nsb3QnLCBOVUxMLE5VTEwsICdpbmNsCiAgY29tbWl0dGluZyBzdHJlYW1lZCB0cmFuc2Fj dGlvbgogKDE3IHJvd3MpCiAKKy0tIHN0cmVhbWluZyB0ZXN0IHdpdGggZm9yY2Vfc3RyZWFtX21v ZGUKK1NFVCBmb3JjZV9zdHJlYW1fbW9kZT1vbjsKK1RSVU5DQVRFIHRhYmxlIHN0cmVhbV90ZXN0 OworU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Np b25fc2xvdCcsIE5VTEwsTlVMTCwgJ2luY2x1ZGUteGlkcycsICcwJywgJ3NraXAtZW1wdHkteGFj dHMnLCAnMScsICdzdHJlYW0tY2hhbmdlcycsICcxJyk7CisgICAgICAgICAgICAgICAgICAgZGF0 YSAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIG9wZW5pbmcgYSBzdHJlYW1lZCBibG9jayBmb3IgdHJhbnNhY3Rpb24KKyBzdHJl YW1pbmcgdHJ1bmNhdGUgZm9yIHRyYW5zYWN0aW9uCisgY2xvc2luZyBhIHN0cmVhbWVkIGJsb2Nr IGZvciB0cmFuc2FjdGlvbgorIGNvbW1pdHRpbmcgc3RyZWFtZWQgdHJhbnNhY3Rpb24KKyg0IHJv d3MpCisKK1JFU0VUIGZvcmNlX3N0cmVhbV9tb2RlOwogRFJPUCBUQUJMRSBzdHJlYW1fdGVzdDsK IFNFTEVDVCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Nsb3QoJ3JlZ3Jlc3Npb25fc2xvdCcpOwogIHBn X2Ryb3BfcmVwbGljYXRpb25fc2xvdCAKZGlmZiAtLWdpdCBhL2NvbnRyaWIvdGVzdF9kZWNvZGlu Zy9zcWwvc3RyZWFtLnNxbCBiL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9zcWwvc3RyZWFtLnNxbApp bmRleCA0ZmVlYzYyOTcyLi5hNWE2M2U3MWZhIDEwMDY0NAotLS0gYS9jb250cmliL3Rlc3RfZGVj b2Rpbmcvc3FsL3N0cmVhbS5zcWwKKysrIGIvY29udHJpYi90ZXN0X2RlY29kaW5nL3NxbC9zdHJl YW0uc3FsCkBAIC00NCw1ICs0NCwxMyBAQCB0b2FzdGVkLTEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMgogCiBTRUxF Q1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90 JywgTlVMTCxOVUxMLCAnaW5jbHVkZS14aWRzJywgJzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcx JywgJ3N0cmVhbS1jaGFuZ2VzJywgJzEnKTsKIAorLS0gc3RyZWFtaW5nIHRlc3Qgd2l0aCBmb3Jj ZV9zdHJlYW1fbW9kZQorU0VUIGZvcmNlX3N0cmVhbV9tb2RlPW9uOworCitUUlVOQ0FURSB0YWJs ZSBzdHJlYW1fdGVzdDsKK1NFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9jaGFu Z2VzKCdyZWdyZXNzaW9uX3Nsb3QnLCBOVUxMLE5VTEwsICdpbmNsdWRlLXhpZHMnLCAnMCcsICdz a2lwLWVtcHR5LXhhY3RzJywgJzEnLCAnc3RyZWFtLWNoYW5nZXMnLCAnMScpOworCitSRVNFVCBm b3JjZV9zdHJlYW1fbW9kZTsKKwogRFJPUCBUQUJMRSBzdHJlYW1fdGVzdDsKIFNFTEVDVCBwZ19k cm9wX3JlcGxpY2F0aW9uX3Nsb3QoJ3JlZ3Jlc3Npb25fc2xvdCcpOwpkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4IDEw NGNjZTcxZjAuLjk0NmVmYzUxNWQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKQEAgLTExNjIzLDYgKzExNjIzLDIyIEBA IExPRzogIENsZWFuVXBMb2NrOiBkZWxldGluZzogbG9jaygweGI3YWNkODQ0KSBpZCgyNDY4OCwy NDY5NiwwLDAsMCwxKQogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAK KyAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLWZvcmNlLXN0cmVhbS1tb2RlIiB4cmVmbGFiZWw9 ImZvcmNlX3N0cmVhbV9tb2RlIj4KKyAgICAgIDx0ZXJtPjx2YXJuYW1lPmZvcmNlX3N0cmVhbV9t b2RlPC92YXJuYW1lPiAoPHR5cGU+Ym9vbGVhbjwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJtPgor ICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPmZvcmNlX3N0cmVhbV9tb2RlPC92YXJuYW1lPiBjb25m aWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAg PC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBTcGVjaWZp ZXMgd2hldGhlciB0byBmb3JjZSBzZW5kaW5nIHRoZSBjaGFuZ2VzIHRvIG91dHB1dCBwbHVnaW4K KyAgICAgICAgaW1tZWRpYXRlbHkgaW4gc3RyZWFtaW5nIG1vZGUuIElmIHNldCB0byA8bGl0ZXJh bD5vZmY8L2xpdGVyYWw+ICh0aGUKKyAgICAgICAgZGVmYXVsdCksIHNlbmQgdW50aWwgPHZhcm5h bWU+bG9naWNhbF9kZWNvZGluZ193b3JrX21lbTwvdmFybmFtZT4gaXMKKyAgICAgICAgZXhjZWVk ZWQuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50 cnk+CisKICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgPC9zZWN0MT4KICAgPHNlY3QxIGlkPSJydW50 aW1lLWNvbmZpZy1zaG9ydCI+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3Jlb3JkZXJidWZmZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv cmVvcmRlcmJ1ZmZlci5jCmluZGV4IDhkNWJiYWFkYjEuLjUwZTgwMGI2ZTcgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCisrKyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCkBAIC0yMDksNiAr MjA5LDEyIEBAIHR5cGVkZWYgc3RydWN0IFJlb3JkZXJCdWZmZXJEaXNrQ2hhbmdlCiBpbnQJCQls b2dpY2FsX2RlY29kaW5nX3dvcmtfbWVtOwogc3RhdGljIGNvbnN0IFNpemUgbWF4X2NoYW5nZXNf aW5fbWVtb3J5ID0gNDA5NjsgLyogWFhYIGZvciByZXN0b3JlIG9ubHkgKi8KIAorLyoKKyAqIFdo ZXRoZXIgdG8gc2VuZCB0aGUgY2hhbmdlIHRvIG91dHB1dCBwbHVnaW4gaW1tZWRpYXRlbHkgaW4g c3RyZWFtaW5nIG1vZGUuCisgKiBXaGVuIGl0IGlzIG9mZiwgd2FpdCB1bnRpbCBsb2dpY2FsX2Rl Y29kaW5nX3dvcmtfbWVtIGlzIGV4Y2VlZGVkLgorICovCitib29sCQlmb3JjZV9zdHJlYW1fbW9k ZTsKKwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBwcmlt YXJ5IHJlb3JkZXJidWZmZXIgc3VwcG9ydCByb3V0aW5lcwogICogLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zNTQzLDcgKzM1NDksOSBAQCBSZW9yZGVyQnVmZmVy TGFyZ2VzdFN0cmVhbWFibGVUb3BUWE4oUmVvcmRlckJ1ZmZlciAqcmIpCiAvKgogICogQ2hlY2sg d2hldGhlciB0aGUgbG9naWNhbF9kZWNvZGluZ193b3JrX21lbSBsaW1pdCB3YXMgcmVhY2hlZCwg YW5kIGlmIHllcwogICogcGljayB0aGUgbGFyZ2VzdCAoc3ViKXRyYW5zYWN0aW9uIGF0LWEtdGlt ZSB0byBldmljdCBhbmQgc3BpbGwgaXRzIGNoYW5nZXMgdG8KLSAqIGRpc2sgdW50aWwgd2UgcmVh Y2ggdW5kZXIgdGhlIG1lbW9yeSBsaW1pdC4KKyAqIGRpc2sgb3Igc2VuZCB0byBvdXRwdXQgcGx1 Z2luIHVudGlsIHdlIHJlYWNoIHVuZGVyIHRoZSBtZW1vcnkgbGltaXQuCisgKgorICogSWYgZm9y Y2Vfc3RyZWFtX21vZGUgaXMgZW5hYmxlZCwgc2VuZCBhbGwgc3RyZWFtYWJsZSBjaGFuZ2VzLgog ICoKICAqIFhYWCBBdCB0aGlzIHBvaW50IHdlIHNlbGVjdCB0aGUgdHJhbnNhY3Rpb25zIHVudGls IHdlIHJlYWNoIHVuZGVyIHRoZSBtZW1vcnkKICAqIGxpbWl0LCBidXQgd2UgbWlnaHQgYWxzbyBh ZGFwdCBhIG1vcmUgZWxhYm9yYXRlIGV2aWN0aW9uIHN0cmF0ZWd5IC0gZm9yIGV4YW1wbGUKQEAg LTM1NTUsNTAgKzM1NjMsNjQgQEAgUmVvcmRlckJ1ZmZlckNoZWNrTWVtb3J5TGltaXQoUmVvcmRl ckJ1ZmZlciAqcmIpCiB7CiAJUmVvcmRlckJ1ZmZlclRYTiAqdHhuOwogCi0JLyogYmFpbCBvdXQg aWYgd2UgaGF2ZW4ndCBleGNlZWRlZCB0aGUgbWVtb3J5IGxpbWl0ICovCi0JaWYgKHJiLT5zaXpl IDwgbG9naWNhbF9kZWNvZGluZ193b3JrX21lbSAqIDEwMjRMKQotCQlyZXR1cm47Ci0KIAkvKgot CSAqIExvb3AgdW50aWwgd2UgcmVhY2ggdW5kZXIgdGhlIG1lbW9yeSBsaW1pdC4gIE9uZSBtaWdo dCB0aGluayB0aGF0IGp1c3QKLQkgKiBieSBldmljdGluZyB0aGUgbGFyZ2VzdCAoc3ViKXRyYW5z YWN0aW9uIHdlIHdpbGwgY29tZSB1bmRlciB0aGUgbWVtb3J5Ci0JICogbGltaXQgYmFzZWQgb24g YXNzdW1wdGlvbiB0aGF0IHRoZSBzZWxlY3RlZCB0cmFuc2FjdGlvbiBpcyBhdCBsZWFzdCBhcwot CSAqIGxhcmdlIGFzIHRoZSBtb3N0IHJlY2VudCBjaGFuZ2UgKHdoaWNoIGNhdXNlZCB1cyB0byBn byBvdmVyIHRoZSBtZW1vcnkKLQkgKiBsaW1pdCkuIEhvd2V2ZXIsIHRoYXQgaXMgbm90IHRydWUg YmVjYXVzZSBhIHVzZXIgY2FuIHJlZHVjZSB0aGUKLQkgKiBsb2dpY2FsX2RlY29kaW5nX3dvcmtf bWVtIHRvIGEgc21hbGxlciB2YWx1ZSBiZWZvcmUgdGhlIG1vc3QgcmVjZW50Ci0JICogY2hhbmdl LgorCSAqIElmIHBvc3NpYmxlLCBldmljdCBzdHJlYW1hYmxlIHRyYW5zYWN0aW9ucyBmcm9tIG1l bW9yeSBieSBzdHJlYW1pbmcuCiAJICovCi0Jd2hpbGUgKHJiLT5zaXplID49IGxvZ2ljYWxfZGVj b2Rpbmdfd29ya19tZW0gKiAxMDI0TCkKKwlpZiAoUmVvcmRlckJ1ZmZlckNhblN0YXJ0U3RyZWFt aW5nKHJiKSkKIAl7CiAJCS8qCi0JCSAqIFBpY2sgdGhlIGxhcmdlc3QgdHJhbnNhY3Rpb24gKG9y IHN1YnRyYW5zYWN0aW9uKSBhbmQgZXZpY3QgaXQgZnJvbQotCQkgKiBtZW1vcnkgYnkgc3RyZWFt aW5nLCBpZiBwb3NzaWJsZS4gIE90aGVyd2lzZSwgc3BpbGwgdG8gZGlzay4KKwkJICogSWYgZm9y Y2Vfc3RyZWFtX21vZGUgaXMgb2ZmLCBsb29wIHVudGlsIHdlIHJlYWNoIHVuZGVyIHRoZSBtZW1v cnkKKwkJICogbGltaXQuIE90aGVyd2lzZSBsb29wIHVudGlsIHRoZXJlJ3Mgbm8gc3RyZWFtYWJs ZSB0b3AgdHJhbnNhY3Rpb24uCisJCSAqIE9uZSBtaWdodCB0aGluayB0aGF0IGp1c3QgYnkgZXZp Y3RpbmcgdGhlIGxhcmdlc3QgdHJhbnNhY3Rpb24gd2UKKwkJICogd2lsbCBjb21lIHVuZGVyIHRo ZSBtZW1vcnkgbGltaXQgYmFzZWQgb24gYXNzdW1wdGlvbiB0aGF0IHRoZQorCQkgKiBzZWxlY3Rl ZCB0cmFuc2FjdGlvbiBpcyBhdCBsZWFzdCBhcyBsYXJnZSBhcyB0aGUgbW9zdCByZWNlbnQgY2hh bmdlCisJCSAqICh3aGljaCBjYXVzZWQgdXMgdG8gZ28gb3ZlciB0aGUgbWVtb3J5IGxpbWl0KS4g SG93ZXZlciwgdGhhdCBpcyBub3QKKwkJICogdHJ1ZSBiZWNhdXNlIGEgdXNlciBjYW4gcmVkdWNl IHRoZSBsb2dpY2FsX2RlY29kaW5nX3dvcmtfbWVtIHRvIGEKKwkJICogc21hbGxlciB2YWx1ZSBv ciBlbmFibGUgZm9yY2Vfc3RyZWFtX21vZGUgYmVmb3JlIHRoZSBtb3N0IHJlY2VudAorCQkgKiBj aGFuZ2UuCiAJCSAqLwotCQlpZiAoUmVvcmRlckJ1ZmZlckNhblN0YXJ0U3RyZWFtaW5nKHJiKSAm JgotCQkJKHR4biA9IFJlb3JkZXJCdWZmZXJMYXJnZXN0U3RyZWFtYWJsZVRvcFRYTihyYikpICE9 IE5VTEwpCisJCXdoaWxlIChyYi0+c2l6ZSA+PSBsb2dpY2FsX2RlY29kaW5nX3dvcmtfbWVtICog MTAyNEwgfHwKKwkJCSAgIChmb3JjZV9zdHJlYW1fbW9kZSAmJiByYi0+c2l6ZSA+IDApKQogCQl7 Ci0JCQkvKiB3ZSBrbm93IHRoZXJlIGhhcyB0byBiZSBvbmUsIGJlY2F1c2UgdGhlIHNpemUgaXMg bm90IHplcm8gKi8KKwkJCXR4biA9IFJlb3JkZXJCdWZmZXJMYXJnZXN0U3RyZWFtYWJsZVRvcFRY TihyYik7CisJCQlpZiAodHhuID09IE5VTEwpCisJCQkJYnJlYWs7CisKIAkJCUFzc2VydCh0eG4g JiYgIXR4bi0+dG9wdHhuKTsKIAkJCUFzc2VydCh0eG4tPnRvdGFsX3NpemUgPiAwKTsKIAkJCUFz c2VydChyYi0+c2l6ZSA+PSB0eG4tPnRvdGFsX3NpemUpOwogCiAJCQlSZW9yZGVyQnVmZmVyU3Ry ZWFtVFhOKHJiLCB0eG4pOwotCQl9Ci0JCWVsc2UKLQkJeworCiAJCQkvKgotCQkJICogUGljayB0 aGUgbGFyZ2VzdCB0cmFuc2FjdGlvbiAob3Igc3VidHJhbnNhY3Rpb24pIGFuZCBldmljdCBpdAot CQkJICogZnJvbSBtZW1vcnkgYnkgc2VyaWFsaXppbmcgaXQgdG8gZGlzay4KKwkJCSAqIEFmdGVy IGV2aWN0aW9uLCB0aGUgdHJhbnNhY3Rpb24gc2hvdWxkIGhhdmUgbm8gZW50cmllcyBpbgorCQkJ ICogbWVtb3J5LCBhbmQgc2hvdWxkIHVzZSAwIGJ5dGVzIGZvciBjaGFuZ2VzLgogCQkJICovCi0J CQl0eG4gPSBSZW9yZGVyQnVmZmVyTGFyZ2VzdFRYTihyYik7CisJCQlBc3NlcnQodHhuLT5zaXpl ID09IDApOworCQkJQXNzZXJ0KHR4bi0+bmVudHJpZXNfbWVtID09IDApOworCQl9CisJfQogCi0J CQkvKiB3ZSBrbm93IHRoZXJlIGhhcyB0byBiZSBvbmUsIGJlY2F1c2UgdGhlIHNpemUgaXMgbm90 IHplcm8gKi8KLQkJCUFzc2VydCh0eG4pOwotCQkJQXNzZXJ0KHR4bi0+c2l6ZSA+IDApOwotCQkJ QXNzZXJ0KHJiLT5zaXplID49IHR4bi0+c2l6ZSk7CisJLyoKKwkgKiBFdmljdCB0cmFuc2FjdGlv bnMgZnJvbSBtZW1vcnkgYnkgc2VyaWFsaXppbmcgdG8gZGlzay4gTG9vcCB1bnRpbCB3ZQorCSAq IHJlYWNoIHVuZGVyIHRoZSBtZW1vcnkgbGltaXQuIE9uZSBtaWdodCB0aGluayB0aGF0IGp1c3Qg YnkgZXZpY3RpbmcgdGhlCisJICogbGFyZ2VzdCAoc3ViKXRyYW5zYWN0aW9uIHdlIHdpbGwgY29t ZSB1bmRlciB0aGUgbWVtb3J5IGxpbWl0LCBidXQgdGhpcworCSAqIGlzIG5vdCBzdWZmaWNpZW50 LiBTZWUgY29tbWVudHMgYWJvdmUuCisJICovCisJd2hpbGUgKHJiLT5zaXplID49IGxvZ2ljYWxf ZGVjb2Rpbmdfd29ya19tZW0gKiAxMDI0TCkKKwl7CisJCS8qCisJCSAqIFBpY2sgdGhlIGxhcmdl c3QgdHJhbnNhY3Rpb24gKG9yIHN1YnRyYW5zYWN0aW9uKSBhbmQgZXZpY3QgaXQgZnJvbQorCQkg KiBtZW1vcnkgYnkgc2VyaWFsaXppbmcgaXQgdG8gZGlzay4KKwkJICovCisJCXR4biA9IFJlb3Jk ZXJCdWZmZXJMYXJnZXN0VFhOKHJiKTsKIAotCQkJUmVvcmRlckJ1ZmZlclNlcmlhbGl6ZVRYTihy YiwgdHhuKTsKLQkJfQorCQkvKiB3ZSBrbm93IHRoZXJlIGhhcyB0byBiZSBvbmUsIGJlY2F1c2Ug dGhlIHNpemUgaXMgbm90IHplcm8gKi8KKwkJQXNzZXJ0KHR4bik7CisJCUFzc2VydCh0eG4tPnNp emUgPiAwKTsKKwkJQXNzZXJ0KHJiLT5zaXplID49IHR4bi0+c2l6ZSk7CisKKwkJUmVvcmRlckJ1 ZmZlclNlcmlhbGl6ZVRYTihyYiwgdHhuKTsKIAogCQkvKgogCQkgKiBBZnRlciBldmljdGlvbiwg dGhlIHRyYW5zYWN0aW9uIHNob3VsZCBoYXZlIG5vIGVudHJpZXMgaW4gbWVtb3J5LApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgYi9zcmMvYmFja2VuZC91 dGlscy9taXNjL2d1Y190YWJsZXMuYwppbmRleCBiYzU2YzMyMzczLi43NzUxOWE1NmZlIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwpAQCAtMTI2Miw2ICsxMjYyLDE2IEBAIHN0cnVj dCBjb25maWdfYm9vbCBDb25maWd1cmVOYW1lc0Jvb2xbXSA9CiAJCWZhbHNlLAogCQlOVUxMLCBO VUxMLCBOVUxMCiAJfSwKKwl7CisJCXsiZm9yY2Vfc3RyZWFtX21vZGUiLCBQR0NfVVNFUlNFVCwg REVWRUxPUEVSX09QVElPTlMsCisJCQlnZXR0ZXh0X25vb3AoIkZvcmNlIHNlbmRpbmcgdGhlIGNo YW5nZXMgdG8gb3V0cHV0IHBsdWdpbiBpbW1lZGlhdGVseSBpZiBzdHJlYW1pbmcgaXMgc3VwcG9y dGVkLCB3aXRob3V0IHdhaXRpbmcgdGlsbCBsb2dpY2FsX2RlY29kaW5nX3dvcmtfbWVtLiIpLAor CQkJTlVMTCwKKwkJCUdVQ19OT1RfSU5fU0FNUExFCisJCX0sCisJCSZmb3JjZV9zdHJlYW1fbW9k ZSwKKwkJZmFsc2UsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9LAogCiAJewogCQl7ImxvZ19kdXJh dGlvbiIsIFBHQ19TVVNFVCwgTE9HR0lOR19XSEFULApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVv cmRlcmJ1ZmZlci5oCmluZGV4IGYwZWI2YzRmNzQuLmYyNGM4ODZlMWIgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaAorKysgYi9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKQEAgLTE4LDYgKzE4LDcgQEAKICNpbmNsdWRlICJ1 dGlscy90aW1lc3RhbXAuaCIKIAogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBsb2dpY2FsX2RlY29k aW5nX3dvcmtfbWVtOworZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgZm9yY2Vfc3RyZWFtX21vZGU7 CiAKIC8qIGFuIGluZGl2aWR1YWwgdHVwbGUsIHN0b3JlZCBpbiBvbmUgY2h1bmsgb2YgbWVtb3J5 ICovCiB0eXBlZGVmIHN0cnVjdCBSZW9yZGVyQnVmZmVyVHVwbGVCdWYKLS0gCjIuMjMuMC53aW5k b3dzLjEKCg== --_008_OS0PR01MB571623EFD8903C93424EFADC94E99OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v66-0004-Add-GUC-stream_serialize_threshold-and-test-seri.patch" Content-Description: v66-0004-Add-GUC-stream_serialize_threshold-and-test-seri.patch Content-Disposition: attachment; filename="v66-0004-Add-GUC-stream_serialize_threshold-and-test-seri.patch"; size=12541; creation-date="Fri, 23 Dec 2022 09:19:04 GMT"; modification-date="Fri, 23 Dec 2022 09:19:59 GMT" Content-Transfer-Encoding: base64 RnJvbSAyMzQyZjA4ZWUwMGUwNjQ1NjE3MmExOWQwY2YxNjI2MmE5NDVlZGU1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBXZWQsIDE0IERlYyAyMDIyIDIwOjM4OjUwICswODAwClN1YmplY3Q6IFtQQVRDSCB2 NjYgNC83XSBBZGQgR1VDIHN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkIGFuZCB0ZXN0CiBzZXJp YWxpemluZyBtZXNzYWdlcyB0byBkaXNrCgotLS0KIGRvYy9zcmMvc2dtbC9jb25maWcuc2dtbCAg ICAgICAgICAgICAgICAgICAgICB8ICAzMiArKysrCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9h cHBseXBhcmFsbGVsd29ya2VyLmMgfCAgMTIgKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvd29ya2VyLmMgICAgICB8ICAgOSArKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNf dGFibGVzLmMgICAgICAgICAgIHwgIDE0ICsrCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3Jr ZXJfaW50ZXJuYWwuaCAgICAgfCAgIDQgKwogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0 cmVhbS5wbCAgICAgICAgIHwgMTM3ICsrKysrKysrKysrKysrKysrLQogNiBmaWxlcyBjaGFuZ2Vk LCAyMDUgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggOTQ2ZWZj NTE1ZC4uYzA4YTc2ODQzMyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtMTE2MzksNiArMTE2MzksMzggQEAgTE9H OiAgQ2xlYW5VcExvY2s6IGRlbGV0aW5nOiBsb2NrKDB4YjdhY2Q4NDQpIGlkKDI0Njg4LDI0Njk2 LDAsMCwwLDEpCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAg ICA8dmFybGlzdGVudHJ5IGlkPSJndWMtc3RyZWFtLXNlcmlhbGl6ZS10aHJlc2hvbGQiIHhyZWZs YWJlbD0ic3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQiPgorICAgICAgPHRlcm0+PHZhcm5hbWU+ c3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQ8L3Zhcm5hbWU+ICg8dHlwZT5pbnRlZ2VyPC90eXBl PikKKyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+c3RyZWFtX3Nl cmlhbGl6ZV90aHJlc2hvbGQ8L3Zhcm5hbWU+IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmlt YXJ5PgorICAgICAgPC9pbmRleHRlcm0+CisgICAgICA8L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+ CisgICAgICAgPHBhcmE+CisgICAgICAgIEZvcmNlcyB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciB0 byBzZXJpYWxpemUgbWVzc2FnZXMgdG8gZmlsZXMgYWZ0ZXIKKyAgICAgICAgc2VuZGluZyBzcGVj aWZpZWQgYW1vdW50IG9mIHN0cmVhbWluZyBjaHVua3MgdG8gdGhlIHBhcmFsbGVsIGFwcGx5Cisg ICAgICAgIHdvcmtlci4gU2V0dGluZyB0aGlzIHRvIHplcm8gc2VyaWFsaXplIGFsbCBtZXNzYWdl cy4gQSB2YWx1ZSBvZgorICAgICAgICA8bGl0ZXJhbD4tMTwvbGl0ZXJhbD4gKHRoZSBkZWZhdWx0 KSBkaXNhYmxlcyB0aGlzIGZlYXR1cmUuIFRoaXMgaXMKKyAgICAgICAgaW50ZW5kZWQgdG8gdGVz dCBzZXJpYWxpemF0aW9uIHRvIGZpbGVzIHdpdGgKKyAgICAgICAgPGxpdGVyYWw+c3RyZWFtaW5n ID0gcGFyYWxsZWw8L2xpdGVyYWw+LgorICAgICAgIDwvcGFyYT4KKworICAgICAgIDxwYXJhPgor ICAgICAgICBXaGVuIGxvZ2ljYWwgcmVwbGljYXRpb24gc3Vic2NyaXB0aW9uIDxsaXRlcmFsPnN0 cmVhbWluZzwvbGl0ZXJhbD4KKyAgICAgICAgcGFyYW1ldGVyIGlzIHNldCB0byA8bGl0ZXJhbD5w YXJhbGxlbDwvbGl0ZXJhbD4sIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyCisgICAgICAgIHNlbmRz IG1lc3NhZ2VzIHRvIHBhcmFsbGVsIHdvcmtlcnMgd2l0aCBhIHRpbWVvdXQuIEJ5IGRlZmF1bHQs IHRoZQorICAgICAgICBsZWFkZXIgYXBwbHkgd29ya2VyIHdpbGwgc2VyaWFsaXplIHRoZSByZW1h aW5pbmcgbWVzc2FnZXMgdG8gZmlsZXMgaWYKKyAgICAgICAgdGhlIHRpbWVvdXQgaXMgZXhjZWVk ZWQuIElmIHRoaXMgb3B0aW9uIGlzIHNldCB0byBhbnkgdmFsdWUgb3RoZXIgdGhhbgorICAgICAg ICA8bGl0ZXJhbD4tMTwvbGl0ZXJhbD4sIHNlcmlhbGl6ZSB0byBmaWxlcyBldmVuIHdpdGhvdXQg dGltZW91dC4KKyAgICAgICA8L3BhcmE+CisKKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBw YXJhbWV0ZXIgY2FuIG9ubHkgYmUgc2V0IGluIHRoZSA8ZmlsZW5hbWU+cG9zdGdyZXNxbC5jb25m PC9maWxlbmFtZT4KKyAgICAgICAgZmlsZSBvciBvbiB0aGUgc2VydmVyIGNvbW1hbmQgbGluZS4K KyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4K KwogICAgIDwvdmFyaWFibGVsaXN0PgogICA8L3NlY3QxPgogICA8c2VjdDEgaWQ9InJ1bnRpbWUt Y29uZmlnLXNob3J0Ij4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9hcHBseXBhcmFsbGVsd29ya2VyLmMKaW5kZXggZjhhMGJiNDYyYS4uMjViOGYyYmNmMSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29y a2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVs d29ya2VyLmMKQEAgLTI1Miw2ICsyNTIsOSBAQCBzdGF0aWMgUGFyYWxsZWxBcHBseVdvcmtlcklu Zm8gKnN0cmVhbV9hcHBseV93b3JrZXIgPSBOVUxMOwogLyogQSBsaXN0IHRvIG1haW50YWluIHN1 YnRyYW5zYWN0aW9ucywgaWYgYW55LiAqLwogc3RhdGljIExpc3QgKnN1YnhhY3RsaXN0ID0gTklM OwogCisvKiBHVUMgdmFyaWFibGUgKi8KK2ludAkJCXN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xk ID0gLTE7CisKIHN0YXRpYyB2b2lkIHBhX2ZyZWVfd29ya2VyX2luZm8oUGFyYWxsZWxBcHBseVdv cmtlckluZm8gKndpbmZvKTsKIHN0YXRpYyBQYXJhbGxlbFRyYW5zU3RhdGUgcGFfZ2V0X3hhY3Rf c3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqd3NoYXJlZCk7CiBzdGF0aWMgUGFydGlh bEZpbGVTZXRTdGF0ZSBwYV9nZXRfZmlsZXNldF9zdGF0ZSh2b2lkKTsKQEAgLTExNjQsNiArMTE2 NywxNSBAQCBwYV9zZW5kX2RhdGEoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBTaXpl IG5ieXRlcywgY29uc3Qgdm9pZCAqZGF0YSkKIAlBc3NlcnQoIUlzVHJhbnNhY3Rpb25TdGF0ZSgp KTsKIAlBc3NlcnQoIXdpbmZvLT5zZXJpYWxpemVfY2hhbmdlcyk7CiAKKwkvKiBGb3JjZSB0byBz ZXJpYWxpemUgbWVzc2FnZXMgaWYgc3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQgaXMgcmVhY2hl ZC4gKi8KKwlpZiAoc3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQgIT0gLTEgJiYKKwkJKHN0cmVh bV9zZXJpYWxpemVfdGhyZXNob2xkID09IDAgfHwKKwkJIHN0cmVhbV9zZXJpYWxpemVfdGhyZXNo b2xkIDwgcGFyYWxsZWxfc3RyZWFtX25jaHVua3MpKQorCXsKKwkJcGFyYWxsZWxfc3RyZWFtX25j aHVua3MgPSAwOworCQlyZXR1cm4gZmFsc2U7CisJfQorCiAjZGVmaW5lIFNITV9TRU5EX1JFVFJZ X0lOVEVSVkFMX01TIDEwMDAKICNkZWZpbmUgU0hNX1NFTkRfVElNRU9VVF9NUwkJKDEwMDAwIC0g U0hNX1NFTkRfUkVUUllfSU5URVJWQUxfTVMpCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3dvcmtlci5jCmluZGV4IGY5ZWZjMThlZjcuLjQzMjBiYmU4MTEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMzI2LDYgKzMyNiwxMiBAQCBzdGF0aWMg VHJhbnNhY3Rpb25JZCBzdHJlYW1feGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAgKi8KIHN0 YXRpYyB1aW50MzIgcGFyYWxsZWxfc3RyZWFtX25jaGFuZ2VzID0gMDsKIAorLyoKKyAqIFRoZSBu dW1iZXIgb2Ygc3RyZWFtaW5nIGNodW5rcyBzZW50IGJ5IGxlYWRlciBhcHBseSB3b3JrZXIgZHVy aW5nIG9uZQorICogc3RyZWFtZWQgdHJhbnNhY3Rpb24uIFRoaXMgaXMgb25seSB1c2VkIHdoZW4g c3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQgPiAwLgorICovCit1aW50MzIJCXBhcmFsbGVsX3N0 cmVhbV9uY2h1bmtzID0gMDsKKwogLyoKICAqIFdlIGVuYWJsZSBza2lwcGluZyBhbGwgZGF0YSBt b2RpZmljYXRpb24gY2hhbmdlcyAoSU5TRVJULCBVUERBVEUsIGV0Yy4pIGZvcgogICogdGhlIHN1 YnNjcmlwdGlvbiBpZiB0aGUgcmVtb3RlIHRyYW5zYWN0aW9uJ3MgZmluaXNoIExTTiBtYXRjaGVz IHRoZSBzdWJza2lwbHNuLgpAQCAtMTUxOCw2ICsxNTI0LDkgQEAgYXBwbHlfaGFuZGxlX3N0cmVh bV9zdGFydChTdHJpbmdJbmZvIHMpCiAJCWNhc2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxM RUw6CiAJCQlBc3NlcnQod2luZm8pOwogCisJCQlpZiAoc3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hv bGQgPiAwKQorCQkJCXBhcmFsbGVsX3N0cmVhbV9uY2h1bmtzKys7CisKIAkJCS8qCiAJCQkgKiBP bmNlIHdlIHN0YXJ0IHNlcmlhbGl6aW5nIHRoZSBjaGFuZ2VzLCB0aGUgcGFyYWxsZWwgYXBwbHkK IAkJCSAqIHdvcmtlciB3aWxsIHdhaXQgZm9yIHRoZSBsZWFkZXIgdG8gcmVsZWFzZSB0aGUgc3Ry ZWFtIGxvY2sKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKaW5kZXggNzc1MTlhNTZmZS4u YWM4ODVmMTNhNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVz LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKQEAgLTYxLDYgKzYx LDcgQEAKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaCIKICNpbmNsdWRl ICJyZXBsaWNhdGlvbi9zbG90LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vc3luY3JlcC5oIgor I2luY2x1ZGUgInJlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sYXJnZV9vYmplY3QuaCIKICNpbmNsdWRl ICJzdG9yYWdlL3BnX3NobWVtLmgiCkBAIC0zMDE4LDYgKzMwMTksMTkgQEAgc3RydWN0IGNvbmZp Z19pbnQgQ29uZmlndXJlTmFtZXNJbnRbXSA9CiAJCU5VTEwsIE5VTEwsIE5VTEwKIAl9LAogCisJ eworCQl7InN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkIiwgUEdDX1NJR0hVUCwgREVWRUxPUEVS X09QVElPTlMsCisJCQlnZXR0ZXh0X25vb3AoIkZvcmNlcyB0aGUgbGVhZGVyIGFwcGx5IHdvcmtl ciB0byBzZXJpYWxpemUgbWVzc2FnZXMgIgorCQkJCQkJICJ0byBmaWxlcyBhZnRlciBzZW5kaW5n IHNwZWNpZmllZCBhbW91bnQgb2Ygc3RyZWFtaW5nICIKKwkJCQkJCSAiY2h1bmtzIGluIHN0cmVh bWluZyBwYXJhbGxlbCBtb2RlLiIpLAorCQkJZ2V0dGV4dF9ub29wKCJBIHZhbHVlIG9mIC0xIGRp c2FibGVzIHRoaXMgZmVhdHVyZS4iKSwKKwkJCUdVQ19OT1RfSU5fU0FNUExFCisJCX0sCisJCSZz dHJlYW1fc2VyaWFsaXplX3RocmVzaG9sZCwKKwkJLTEsIC0xLCBJTlRfTUFYLAorCQlOVUxMLCBO VUxMLCBOVUxMCisJfSwKKwogCXsKIAkJeyJsb2dfcm90YXRpb25fYWdlIiwgUEdDX1NJR0hVUCwg TE9HR0lOR19XSEVSRSwKIAkJCWdldHRleHRfbm9vcCgiU2V0cyB0aGUgYW1vdW50IG9mIHRpbWUg dG8gd2FpdCBiZWZvcmUgZm9yY2luZyAiCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi93b3JrZXJfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9p bnRlcm5hbC5oCmluZGV4IDBiYTIwYTFlYTcuLjkwMTQxNTJlNmMgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCkBAIC0yMjAsNiArMjIwLDEwIEBAIGV4dGVybiBQ R0RMTElNUE9SVCBMb2dpY2FsUmVwV29ya2VyICpNeUxvZ2ljYWxSZXBXb3JrZXI7CiAKIGV4dGVy biBQR0RMTElNUE9SVCBib29sIGluX3JlbW90ZV90cmFuc2FjdGlvbjsKIAorZXh0ZXJuIFBHRExM SU1QT1JUIGludCBzdHJlYW1fc2VyaWFsaXplX3RocmVzaG9sZDsKKworZXh0ZXJuIFBHRExMSU1Q T1JUIHVpbnQzMiBwYXJhbGxlbF9zdHJlYW1fbmNodW5rczsKKwogZXh0ZXJuIHZvaWQgbG9naWNh bHJlcF93b3JrZXJfYXR0YWNoKGludCBzbG90KTsKIGV4dGVybiBMb2dpY2FsUmVwV29ya2VyICps b2dpY2FscmVwX3dvcmtlcl9maW5kKE9pZCBzdWJpZCwgT2lkIHJlbGlkLAogCQkJCQkJCQkJCQkJ Ym9vbCBvbmx5X3J1bm5pbmcpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3Qv MDE1X3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKaW5k ZXggN2JjMzQyZDIxMS4uMzcyNWI0ODVmZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE1X3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3Ry ZWFtLnBsCkBAIC0xNTQsMTMgKzE1NCwyMCBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKICMgQ3JlYXRl IHB1Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpD bHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19z dHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKLSRub2RlX3B1Ymxpc2hlci0+YXBwZW5kX2NvbmYoJ3Bv c3RncmVzcWwuY29uZicsCi0JJ2xvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW0gPSA2NGtCJyk7Cisk bm9kZV9wdWJsaXNoZXItPmFwcGVuZF9jb25mKAorCSdwb3N0Z3Jlc3FsLmNvbmYnLCBxcSgKK21h eF9wcmVwYXJlZF90cmFuc2FjdGlvbnMgPSAxMAorbG9naWNhbF9kZWNvZGluZ193b3JrX21lbSA9 IDY0a0IKKykpOwogJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKIAogIyBDcmVhdGUgc3Vic2NyaWJl ciBub2RlCiBteSAkbm9kZV9zdWJzY3JpYmVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+ bmV3KCdzdWJzY3JpYmVyJyk7CiAkbm9kZV9zdWJzY3JpYmVyLT5pbml0KGFsbG93c19zdHJlYW1p bmcgPT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKAorCSdwb3N0 Z3Jlc3FsLmNvbmYnLCBxcSgKK21heF9wcmVwYXJlZF90cmFuc2FjdGlvbnMgPSAxMAorKSk7CiAk bm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKIAogIyBDcmVhdGUgc29tZSBwcmVleGlzdGluZyBjb250 ZW50IG9uIHB1Ymxpc2hlcgpAQCAtMTkxLDcgKzE5OCw3IEBAIG15ICRhcHBuYW1lID0gJ3RhcF9z dWInOwogIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKICMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK LQkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29u bnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEgg KHN0cmVhbWluZyA9IG9uKSIKKwkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJ T04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNB VElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9IG9uLCB0d29fcGhhc2UgPSBvbikiCiApOwog CiAjIFdhaXQgZm9yIGluaXRpYWwgdGFibGUgc3luYyB0byBmaW5pc2gKQEAgLTMxOCw2ICszMjUs MTMwIEBAICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiXzIiKTsKIGlzKCRyZXN1bHQsIHFxKDEw MDAwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGluZGV4 Jyk7CiAKKyMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgorJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIFRBQkxFIHRlc3RfdGFi XzIiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMg VGVzdCBzZXJpYWxpemluZyBtZXNzYWdlcyB0byBkaXNrCisKKyMgU2V0IHN0cmVhbV9zZXJpYWxp emVfdGhyZXNob2xkIHRvIHplcm8sIHNvIHRoZSBtZXNzYWdlcyB3aWxsIGJlIHNlcmlhbGl6ZWQg dG8gZGlzay4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSdBTFRF UiBTWVNURU0gU0VUIHN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkID0gMDsnKTsKKyRub2RlX3N1 YnNjcmliZXItPnJlbG9hZDsKKworIyBTZXJpYWxpemUgdGhlIENPTU1JVCB0cmFuc2FjdGlvbi4K KyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRu b2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0ZXN0X3RhYl8yIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDUwMDApIHMoaSkiKTsKKworIyBFbnN1cmUgdGhhdCB0aGUgbWVzc2FnZXMgYXJl IHNlcmlhbGl6ZWQuCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvREVCVUc6 ICggW0EtWjAtOV0rOik/IG9wZW5pbmcgZmlsZSAiLipcLmNoYW5nZXMiIGZvciBzdHJlYW1lZCBj aGFuZ2VzLywKKwkkb2Zmc2V0KTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKKworIyBDaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBz dWJzY3JpYmVyCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYl8yIik7CitpcygkcmVzdWx0LCBx cSg1MDAwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGJ5IHNlcmlhbGl6aW5nIG1l c3NhZ2VzIHRvIGRpc2snKTsKKworIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJv bm1lbnQuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUg VEFCTEUgdGVzdF90YWJfMiIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKKworIyBTZXJpYWxpemUgdGhlIFBSRVBBUkUgdHJhbnNhY3Rpb24uCisjIENoZWNr IHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJz Y3JpYmVyLT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdy ZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiXzIgU0VMRUNUIGkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKTsKKwlQUkVQQVJFIFRSQU5TQUNUSU9OICd4YWN0 JzsKKwl9KTsKKworIyBFbnN1cmUgdGhhdCB0aGUgbWVzc2FnZXMgYXJlIHNlcmlhbGl6ZWQuCisk bm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvREVCVUc6ICggW0EtWjAtOV0rOik/ IG9wZW5pbmcgZmlsZSAiLipcLmNoYW5nZXMiIGZvciBzdHJlYW1lZCBjaGFuZ2VzLywKKwkkb2Zm c2V0KTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKwor IyBDaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmli ZXIKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki U0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CitpcygkcmVzdWx0LCBx cSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKKworIyBDaGVj ayB0aGF0IDJQQyBnZXRzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCiskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDT01NSVQgUFJFUEFSRUQgJ3hhY3QnOyIpOworCisk bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjIENoZWNrIHRo YXQgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKKyRyZXN1bHQgPQorICAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBG Uk9NIHRlc3RfdGFiXzIiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDApLCAnZGF0YSByZXBsaWNhdGVk IHRvIHN1YnNjcmliZXIgYnkgc2VyaWFsaXppbmcgbWVzc2FnZXMgdG8gZGlzaycpOworCisjIENs ZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYl8yIik7Ciskbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjIFNlcmlhbGl6ZSB0 aGUgQUJPUlQgdG9wLXRyYW5zYWN0aW9uLgorIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJv bSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNF UlQgSU5UTyB0ZXN0X3RhYl8yIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDAp IHMoaSk7CisJUk9MTEJBQ0s7CisJfSk7CisKKyMgRW5zdXJlIHRoYXQgdGhlIG1lc3NhZ2VzIGFy ZSBzZXJpYWxpemVkLgorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0RFQlVH OiAoIFtBLVowLTldKzopPyBvcGVuaW5nIGZpbGUgIi4qXC5jaGFuZ2VzIiBmb3Igc3RyZWFtZWQg Y2hhbmdlcy8sCisJJG9mZnNldCk7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7CisKKyMgQ2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1 YnNjcmliZXIKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiXzIiKTsKK2lzKCRyZXN1bHQsIHFx KDApLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYnkgc2VyaWFsaXppbmcgbWVzc2Fn ZXMgdG8gZGlzaycpOworCisjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVu dC4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJUUlVOQ0FURSBUQUJM RSB0ZXN0X3RhYl8yIik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOworCisjIFNlcmlhbGl6ZSB0aGUgQUJPUlQgc3ViLXRyYW5zYWN0aW9uLgorIyBDaGVjayB0 aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2Ny aWJlci0+bG9nZmlsZTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVz JywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYl8yIFNFTEVDVCBpIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7CisJU0FWRVBPSU5UIHNwOworCUlOU0VSVCBJTlRP IHRlc3RfdGFiXzIgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSwgMTAwMDApIHMo aSk7CisJUk9MTEJBQ0sgVE8gc3A7CisJQ09NTUlUOworCX0pOworCisjIEVuc3VyZSB0aGF0IHRo ZSBtZXNzYWdlcyBhcmUgc2VyaWFsaXplZC4KKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xv ZygKKwlxci9ERUJVRzogKCBbQS1aMC05XSs6KT8gb3BlbmluZyBmaWxlICIuKlwuY2hhbmdlcyIg Zm9yIHN0cmVhbWVkIGNoYW5nZXMvLAorCSRvZmZzZXQpOworCiskbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjIENoZWNrIHRoYXQgb25seSBzdWItdHJhbnNh Y3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyLgorJHJlc3VsdCA9CisgICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90 YWJfMiIpOworaXMoJHJlc3VsdCwgcXEoNTAwMCksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2Ny aWJlciBieSBzZXJpYWxpemluZyBtZXNzYWdlcyB0byBkaXNrJyk7CisKICRub2RlX3N1YnNjcmli ZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CiAKLS0gCjIuMjMuMC53aW5kb3dzLjEK Cg== --_008_OS0PR01MB571623EFD8903C93424EFADC94E99OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v66-0005-Stop-extra-worker-if-GUC-was-changed.patch" Content-Description: v66-0005-Stop-extra-worker-if-GUC-was-changed.patch Content-Disposition: attachment; filename="v66-0005-Stop-extra-worker-if-GUC-was-changed.patch"; size=4728; creation-date="Fri, 23 Dec 2022 09:19:04 GMT"; modification-date="Fri, 23 Dec 2022 09:19:59 GMT" Content-Transfer-Encoding: base64 RnJvbSAxZjA2Y2QxYWEyODczNDliZGE0MjdlOGRlNThjMzI4YjAzYjZjZDUwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBzaGVybG9ja2NwcCA8c2hlcmxvY2tjcHBAZm94bWFpbC5jb20+ CkRhdGU6IFNhdCwgMTcgRGVjIDIwMjIgMjA6NDM6MjEgKzA4MDAKU3ViamVjdDogW1BBVENIIHY2 NiA1LzddIFN0b3AgZXh0cmEgd29ya2VyIGlmIEdVQyB3YXMgY2hhbmdlZAoKSWYgdGhlIG1heF9w YXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gaXMgY2hhbmdlZCB0byBhCmxv d2VyIHZhbHVlLCB0cnkgdG8gc3RvcCBmcmVlIHdvcmtlcnMgaW4gdGhlIHBvb2wgdG8ga2VlcCB0 aGUgbnVtYmVyIG9mCndvcmtlcnMgbG93ZXIgdGhhbiBoYWxmIG9mIHRoZSBtYXhfcGFyYWxsZWxf YXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uCi0tLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2lj YWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIHwgNzQgKysrKysrKysrKysrKysrKy0tLQogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwgIDcgKysKIHNyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oICAgICB8ICAxICsKIDMgZmlsZXMgY2hh bmdlZCwgNzAgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwppbmRleCAy NWI4ZjJiY2YxLi5jYjI2OTVlYzc0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwpAQCAtNTQ4LDYgKzU0OCwyNSBAQCBw YV9maW5kX3dvcmtlcihUcmFuc2FjdGlvbklkIHhpZCkKIAlyZXR1cm4gTlVMTDsKIH0KIAorLyoK KyAqIFN0b3AgdGhlIGdpdmVuIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBhbmQgZnJlZSB0aGUgY29y cmVzcG9uZGluZyBpbmZvLgorICovCitzdGF0aWMgdm9pZAorcGFfc3RvcF93b3JrZXIoUGFyYWxs ZWxBcHBseVdvcmtlckluZm8gKndpbmZvKQoreworCWludAkJCXNsb3Rfbm87CisJdWludDE2CQln ZW5lcmF0aW9uOworCisJU3BpbkxvY2tBY3F1aXJlKCZ3aW5mby0+c2hhcmVkLT5tdXRleCk7CisJ Z2VuZXJhdGlvbiA9IHdpbmZvLT5zaGFyZWQtPmxvZ2ljYWxyZXBfd29ya2VyX2dlbmVyYXRpb247 CisJc2xvdF9ubyA9IHdpbmZvLT5zaGFyZWQtPmxvZ2ljYWxyZXBfd29ya2VyX3Nsb3Rfbm87CisJ U3BpbkxvY2tSZWxlYXNlKCZ3aW5mby0+c2hhcmVkLT5tdXRleCk7CisKKwlsb2dpY2FscmVwX3Bh X3dvcmtlcl9zdG9wKHNsb3Rfbm8sIGdlbmVyYXRpb24pOworCisJcGFfZnJlZV93b3JrZXJfaW5m byh3aW5mbyk7Cit9CisKIC8qCiAgKiBNYWtlcyB0aGUgd29ya2VyIGF2YWlsYWJsZSBmb3IgcmV1 c2UuCiAgKgpAQCAtNTk1LDE4ICs2MTQsNyBAQCBwYV9mcmVlX3dvcmtlcihQYXJhbGxlbEFwcGx5 V29ya2VySW5mbyAqd2luZm8pCiAJCWxpc3RfbGVuZ3RoKFBhcmFsbGVsQXBwbHlXb3JrZXJQb29s KSA+CiAJCShtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uIC8gMikp CiAJewotCQlpbnQJCQlzbG90X25vOwotCQl1aW50MTYJCWdlbmVyYXRpb247Ci0KLQkJU3Bpbkxv Y2tBY3F1aXJlKCZ3aW5mby0+c2hhcmVkLT5tdXRleCk7Ci0JCWdlbmVyYXRpb24gPSB3aW5mby0+ c2hhcmVkLT5sb2dpY2FscmVwX3dvcmtlcl9nZW5lcmF0aW9uOwotCQlzbG90X25vID0gd2luZm8t PnNoYXJlZC0+bG9naWNhbHJlcF93b3JrZXJfc2xvdF9ubzsKLQkJU3BpbkxvY2tSZWxlYXNlKCZ3 aW5mby0+c2hhcmVkLT5tdXRleCk7Ci0KLQkJbG9naWNhbHJlcF9wYV93b3JrZXJfc3RvcChzbG90 X25vLCBnZW5lcmF0aW9uKTsKLQotCQlwYV9mcmVlX3dvcmtlcl9pbmZvKHdpbmZvKTsKLQorCQlw YV9zdG9wX3dvcmtlcih3aW5mbyk7CiAJCXJldHVybiB0cnVlOwogCX0KIApAQCAtNjE2LDYgKzYy NCw0OCBAQCBwYV9mcmVlX3dvcmtlcihQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pCiAJ cmV0dXJuIGZhbHNlOwogfQogCisvKgorICogVHJ5IHRvIHN0b3AgcGFyYWxsZWwgYXBwbHkgd29y a2VycyB0aGF0IGFyZSBub3QgaW4gdXNlIHRvIGtlZXAgdGhlIG51bWJlciBvZgorICogd29ya2Vy cyBsb3dlciB0aGFuIGhhbGYgb2YgdGhlIG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9z dWJzY3JpcHRpb24uCisgKi8KK3ZvaWQKK3BhX3N0b3BfaWRsZV93b3JrZXJzKHZvaWQpCit7CisJ TGlzdAkgICAqYWN0aXZlX3dvcmtlcnM7CisJTGlzdENlbGwgICAqbGM7CisJaW50CQkJbWF4X2Fw cGx5d29ya2VycyA9IG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24g LyAyOworCisJaWYgKGxpc3RfbGVuZ3RoKFBhcmFsbGVsQXBwbHlXb3JrZXJQb29sKSA8PSBtYXhf YXBwbHl3b3JrZXJzKQorCQlyZXR1cm47CisKKwlhY3RpdmVfd29ya2VycyA9IGxpc3RfY29weShQ YXJhbGxlbEFwcGx5V29ya2VyUG9vbCk7CisKKwlmb3JlYWNoKGxjLCBhY3RpdmVfd29ya2VycykK Kwl7CisJCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyA9IChQYXJhbGxlbEFwcGx5V29y a2VySW5mbyAqKSBsZmlyc3QobGMpOworCisJCS8qCisJCSAqIFRyeSB0byBmcmVlIGFuZCBzdG9w IHRoZSB3b3JrZXIgdGhhdCBpcyBpbiB1c2UuIE5vcm1hbGx5LCB3ZSBmcmVlCisJCSAqIHRoZSB3 b3JrZXIgYWZ0ZXIgZW5zdXJpbmcgdGhhdCB0aGUgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIGJ5 IHRoZQorCQkgKiBwYXJhbGxlbCB3b3JrZXIgYnV0IGZvciByb2xsYmFja3MsIHdlIGRvbid0IHdh aXQgZm9yIHRoZQorCQkgKiB0cmFuc2FjdGlvbiB0byBmaW5pc2ggc28gY2FuJ3QgZnJlZSB0aGUg d29ya2VyIGluZm9ybWF0aW9uCisJCSAqIGltbWVkaWF0ZWx5LgorCQkgKi8KKwkJaWYgKHdpbmZv LT5pbl91c2UpCisJCQlwYV9mcmVlX3dvcmtlcih3aW5mbyk7CisKKwkJLyogRGlyZWN0bHkgc3Rv cCB0aGUgd29ya2VyIGlmIG5vdCBpbiB1c2UuICovCisJCWVsc2UKKwkJCXBhX3N0b3Bfd29ya2Vy KHdpbmZvKTsKKworCQkvKiBSZWNoZWNrIHRoZSBudW1iZXIgb2Ygd29ya2Vycy4gKi8KKwkJaWYg KGxpc3RfbGVuZ3RoKFBhcmFsbGVsQXBwbHlXb3JrZXJQb29sKSA8PSBtYXhfYXBwbHl3b3JrZXJz KQorCQkJYnJlYWs7CisJfQorCisJbGlzdF9mcmVlKGFjdGl2ZV93b3JrZXJzKTsKK30KKwogLyoK ICAqIEZyZWUgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpbmZvcm1hdGlvbiBhbmQgdW5saW5r IHRoZSBmaWxlcyB3aXRoCiAgKiBzZXJpYWxpemVkIGNoYW5nZXMgaWYgYW55LgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggNDMyMGJiZTgxMS4uZWYzMmZhMGQ3 MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwor KysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0zNjE0LDYg KzM2MTQsMTMgQEAgTG9naWNhbFJlcEFwcGx5TG9vcChYTG9nUmVjUHRyIGxhc3RfcmVjZWl2ZWQp CiAJCXsKIAkJCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsKIAkJCVByb2Nlc3NDb25maWdG aWxlKFBHQ19TSUdIVVApOworCisJCQkvKgorCQkJICogVHJ5IHRvIHN0b3AgZnJlZSB3b3JrZXJz IGluIHRoZSBwb29sIGluIGNhc2UgdGhlCisJCQkgKiBtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vy c19wZXJfc3Vic2NyaXB0aW9uIGlzIGNoYW5nZWQgdG8gYQorCQkJICogbG93ZXIgdmFsdWUuCisJ CQkgKi8KKwkJCXBhX3N0b3BfaWRsZV93b3JrZXJzKCk7CiAJCX0KIAogCQlpZiAocmMgJiBXTF9U SU1FT1VUKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVy bmFsLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAppbmRleCA5 MDE0MTUyZTZjLi5iOGE5ZDUyYzhlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi93b3JrZXJfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJf aW50ZXJuYWwuaApAQCAtMjc0LDYgKzI3NCw3IEBAIGV4dGVybiB2b2lkIHNldF9hcHBseV9lcnJv cl9jb250ZXh0X29yaWdpbihjaGFyICpvcmlnaW5uYW1lKTsKIGV4dGVybiB2b2lkIHBhX2FsbG9j YXRlX3dvcmtlcihUcmFuc2FjdGlvbklkIHhpZCk7CiBleHRlcm4gUGFyYWxsZWxBcHBseVdvcmtl ckluZm8gKnBhX2ZpbmRfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlkKTsKIGV4dGVybiBib29sIHBh X2ZyZWVfd29ya2VyKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyk7CitleHRlcm4gdm9p ZCBwYV9zdG9wX2lkbGVfd29ya2Vycyh2b2lkKTsKIGV4dGVybiB2b2lkIHBhX2RldGFjaF9hbGxf ZXJyb3JfbXEodm9pZCk7CiAKIGV4dGVybiBib29sIHBhX3NlbmRfZGF0YShQYXJhbGxlbEFwcGx5 V29ya2VySW5mbyAqd2luZm8sIFNpemUgbmJ5dGVzLAotLSAKMi4yMy4wLndpbmRvd3MuMQoK --_008_OS0PR01MB571623EFD8903C93424EFADC94E99OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v66-0006-Retry-to-apply-streaming-xact-only-in-apply-work.patch" Content-Description: v66-0006-Retry-to-apply-streaming-xact-only-in-apply-work.patch Content-Disposition: attachment; filename="v66-0006-Retry-to-apply-streaming-xact-only-in-apply-work.patch"; size=21716; creation-date="Fri, 23 Dec 2022 09:19:04 GMT"; modification-date="Fri, 23 Dec 2022 09:20:00 GMT" Content-Transfer-Encoding: base64 RnJvbSAxMjA5ZWZlNjNmMGUzMDQ2MmUzNzA2Y2MxYmQyNzYzZGY2YzY5ODNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBTdW4sIDExIERlYyAyMDIyIDE5OjE2OjM0ICswODAwClN1YmplY3Q6IFtQQVRDSCB2 NjYgNi83XSBSZXRyeSB0byBhcHBseSBzdHJlYW1pbmcgeGFjdCBvbmx5IGluIGFwcGx5IHdvcmtl cgoKV2hlbiB0aGUgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBpcyBzZXQgc3RyZWFtaW5nPXBhcmFs bGVsLCB0aGUgbG9naWMgdHJpZXMgdG8KYXBwbHkgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB1 c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gSWYgdGhpcwpmYWlscyB0aGUgcGFyYWxsZWwg d29ya2VyIGV4aXRzIHdpdGggYW4gZXJyb3IuCgpJbiB0aGlzIGNhc2UsIHJldHJ5IGFwcGx5aW5n IHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdXNpbmcgdGhlIG5vcm1hbApzdHJlYW1pbmc9b24g bW9kZS4gVGhpcyBpcyBkb25lIHRvIGF2b2lkIGdldHRpbmcgY2F1Z2h0IGluIGEgbG9vcCBvZiB0 aGUgc2FtZQpyZXRyeSBlcnJvcnMuCgpBIG5ldyBmbGFnIGZpZWxkICJzdWJyZXRyeSIgaGFzIGJl ZW4gaW50cm9kdWNlZCB0byBjYXRhbG9nICJwZ19zdWJzY3JpcHRpb24iLgpJZiB0aGVyZSBhcmUg YW55IGFjdGl2ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGFuZCB0aGUgc3Vic2NyaWJlciBleGl0 cyB3aXRoIGFuCmVycm9yLCB0aGlzIGZsYWcgd2lsbCBiZSBzZXQgdHJ1ZSwgYW5kIHdoZW5ldmVy IHRoZSB0cmFuc2FjdGlvbiBpcyBhcHBsaWVkCnN1Y2Nlc3NmdWxseSwgdGhpcyBmbGFnIGlzIHJl c2V0IGZhbHNlLgpOb3csIHdoZW4gZGVjaWRpbmcgaG93IHRvIGFwcGx5IGEgc3RyZWFtaW5nIHRy YW5zYWN0aW9uLCB0aGUgbG9naWMgY2FuIGtub3cgaWYKdGhpcyB0cmFuc2FjdGlvbiBoYXMgcHJl dmlvdXNseSBmYWlsZWQgb3Igbm90IChieSBjaGVja2luZyB0aGUgInN1YnJldHJ5IgpmaWVsZCku CgpOb3RlOiBTaW5jZSB3ZSBhZGQgYSBuZXcgZmllbGQgJ3N1YnJldHJ5JyB0byBjYXRhbG9nICdw Z19zdWJzY3JpcHRpb24nIGhhcyBiZWVuCmV4cGFuZGVkLCB3ZSBuZWVkIGJ1bXAgY2F0YWxvZyB2 ZXJzaW9uLgotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICAg ICB8ICAxMCArCiBkb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sICAgICAgICAg fCAgMTEgKy0KIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sICAgICB8 ICAgNSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jICAgICAgICAgfCAg IDEgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAgICAgICAgIHwgICAy ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgICAgICAgfCAgIDEg KwogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIHwgIDMwICsr Kwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwgMTgyICsr KysrKysrKysrKystLS0tLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAg ICAgICAgIHwgICA1ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oICAg ICAgICAgfCAgIDcgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgg ICAgIHwgICAyICsKIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwgICAgICAg ICB8ICA1NyArKysrKysKIDEyIGZpbGVzIGNoYW5nZWQsIDI1NyBpbnNlcnRpb25zKCspLCA1NiBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2Rv Yy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IGMxZTQwNDgwNTQuLmQ5MTgzMjdlYzIgMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9j YXRhbG9ncy5zZ21sCkBAIC03OTQ4LDYgKzc5NDgsMTYgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFj ZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+ JmwKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIAorICAgICA8cm93PgorICAg ICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9k ZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+c3VicmV0cnk8L3N0cnVjdGZpZWxkPiA8 dHlwZT5ib29sPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVHJ1 ZSBpZiBwcmV2aW91cyBjaGFuZ2UgZmFpbGVkIHRvIGJlIGFwcGxpZWQgd2hpbGUgdGhlcmUgd2Vy ZSBhbnkKKyAgICAgICBhY3RpdmUgcGFyYWxsZWwgYXBwbHkgd29ya2VycywgbmVjZXNzaXRhdGlu ZyBhIHJldHJ5LgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCiAgICAgIDxy b3c+CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i Y29sdW1uX2RlZmluaXRpb24iPgogICAgICAgIDxzdHJ1Y3RmaWVsZD5zdWJjb25uaW5mbzwvc3Ry dWN0ZmllbGQ+IDx0eXBlPnRleHQ8L3R5cGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbG9n aWNhbC1yZXBsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24u c2dtbAppbmRleCA2NDk2MjNlODNmLi4wZDI4OWFjYTI1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJl cGxpY2F0aW9uLnNnbWwKQEAgLTE1MDAsMTIgKzE1MDAsMTEgQEAgQ09OVEVYVDogIHByb2Nlc3Np bmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiAicGdfMTYzOTUiIGR1cmluZyAi SU5TRVIKIAogICA8cGFyYT4KICAgIFdoZW4gdGhlIHN0cmVhbWluZyBtb2RlIGlzIDxsaXRlcmFs PnBhcmFsbGVsPC9saXRlcmFsPiwgdGhlIGZpbmlzaCBMU04gb2YKLSAgIGZhaWxlZCB0cmFuc2Fj dGlvbnMgbWF5IG5vdCBiZSBsb2dnZWQuIEluIHRoYXQgY2FzZSwgaXQgbWF5IGJlIG5lY2Vzc2Fy eSB0bwotICAgY2hhbmdlIHRoZSBzdHJlYW1pbmcgbW9kZSB0byA8bGl0ZXJhbD5vbjwvbGl0ZXJh bD4gb3IgPGxpdGVyYWw+b2ZmPC9saXRlcmFsPiBhbmQKLSAgIGNhdXNlIHRoZSBzYW1lIGNvbmZs aWN0cyBhZ2FpbiBzbyB0aGUgZmluaXNoIExTTiBvZiB0aGUgZmFpbGVkIHRyYW5zYWN0aW9uIHdp bGwKLSAgIGJlIHdyaXR0ZW4gdG8gdGhlIHNlcnZlciBsb2cuIEZvciB0aGUgdXNhZ2Ugb2YgZmlu aXNoIExTTiwgcGxlYXNlIHJlZmVyIHRvIDxsaW5rCi0gICBsaW5rZW5kPSJzcWwtYWx0ZXJzdWJz Y3JpcHRpb24iPjxjb21tYW5kPkFMVEVSIFNVQlNDUklQVElPTiAuLi4KLSAgIFNLSVA8L2NvbW1h bmQ+PC9saW5rPi4KKyAgIGZhaWxlZCB0cmFuc2FjdGlvbnMgbWF5IG5vdCBiZSBsb2dnZWQuIElu IHRoYXQgY2FzZSwgdGhlIGZhaWxlZCB0cmFuc2FjdGlvbgorICAgd2lsbCBiZSByZXRyaWVkIGlu IDxsaXRlcmFsPnN0cmVhbWluZyA9IG9uPC9saXRlcmFsPiBtb2RlLiBJZiBpdCBmYWlscworICAg YWdhaW4sIHRoZSBmaW5pc2ggTFNOIG9mIHRoZSBmYWlsZWQgdHJhbnNhY3Rpb24gd2lsbCBiZSB3 cml0dGVuIHRvIHRoZQorICAgc2VydmVyIGxvZy4gRm9yIHRoZSB1c2FnZSBvZiBmaW5pc2ggTFNO LCBwbGVhc2UgcmVmZXIgdG8KKyAgIDxsaW5rIGxpbmtlbmQ9InNxbC1hbHRlcnN1YnNjcmlwdGlv biI+PGNvbW1hbmQ+QUxURVIgU1VCU0NSSVBUSU9OIC4uLiBTS0lQPC9jb21tYW5kPjwvbGluaz4u CiAgIDwvcGFyYT4KICA8L3NlY3QxPgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2Ny ZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlw dGlvbi5zZ21sCmluZGV4IGYxNzNhMDkwMzcuLjY0ZDU4MDJhZGQgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCkBAIC0yNTEsNiArMjUxLDExIEBAIENSRUFURSBT VUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN1YnNjcmlwdGlvbl9u YW1lPC9yZXBsYWNlYWJsCiAgICAgICAgICAgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkLiBOb3Rl IHRoYXQgaWYgYW4gZXJyb3IgaGFwcGVucyBpbiBhCiAgICAgICAgICAgcGFyYWxsZWwgYXBwbHkg d29ya2VyLCB0aGUgZmluaXNoIExTTiBvZiB0aGUgcmVtb3RlIHRyYW5zYWN0aW9uCiAgICAgICAg ICAgbWlnaHQgbm90IGJlIHJlcG9ydGVkIGluIHRoZSBzZXJ2ZXIgbG9nLgorICAgICAgICAgIFdo ZW4gYXBwbHlpbmcgc3RyZWFtaW5nIHRyYW5zYWN0aW9ucywgaWYgYSBkZWFkbG9jayBpcyBkZXRl Y3RlZCwgdGhlCisgICAgICAgICAgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHdpbGwgZXhpdCB3aXRo IGFuIGVycm9yLiBUaGUKKyAgICAgICAgICA8bGl0ZXJhbD5wYXJhbGxlbDwvbGl0ZXJhbD4gbW9k ZSBpcyBkaXNyZWdhcmRlZCB3aGVuIHJldHJ5aW5nOworICAgICAgICAgIGluc3RlYWQgdGhlIHRy YW5zYWN0aW9uIHdpbGwgYmUgYXBwbGllZCB1c2luZyA8bGl0ZXJhbD5vbjwvbGl0ZXJhbD4KKyAg ICAgICAgICBtb2RlLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAg ICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19z dWJzY3JpcHRpb24uYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMKaW5k ZXggYTUwNmZjM2VjOC4uNzIzYjE0MWM3NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19zdWJzY3JpcHRpb24uYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlw dGlvbi5jCkBAIC03MSw2ICs3MSw3IEBAIEdldFN1YnNjcmlwdGlvbihPaWQgc3ViaWQsIGJvb2wg bWlzc2luZ19vaykKIAlzdWItPnN0cmVhbSA9IHN1YmZvcm0tPnN1YnN0cmVhbTsKIAlzdWItPnR3 b3BoYXNlc3RhdGUgPSBzdWJmb3JtLT5zdWJ0d29waGFzZXN0YXRlOwogCXN1Yi0+ZGlzYWJsZW9u ZXJyID0gc3ViZm9ybS0+c3ViZGlzYWJsZW9uZXJyOworCXN1Yi0+cmV0cnkgPSBzdWJmb3JtLT5z dWJyZXRyeTsKIAogCS8qIEdldCBjb25uaW5mbyAqLwogCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRy KFNVQlNDUklQVElPTk9JRCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVt X3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAppbmRleCAy ZDgxMDRiMDkwLi5jMmM3ZDhhOGI3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5 c3RlbV92aWV3cy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3Fs CkBAIC0xMzAxLDcgKzEzMDEsNyBAQCBSRVZPS0UgQUxMIE9OIHBnX3JlcGxpY2F0aW9uX29yaWdp bl9zdGF0dXMgRlJPTSBwdWJsaWM7CiBSRVZPS0UgQUxMIE9OIHBnX3N1YnNjcmlwdGlvbiBGUk9N IHB1YmxpYzsKIEdSQU5UIFNFTEVDVCAob2lkLCBzdWJkYmlkLCBzdWJza2lwbHNuLCBzdWJuYW1l LCBzdWJvd25lciwgc3ViZW5hYmxlZCwKICAgICAgICAgICAgICAgc3ViYmluYXJ5LCBzdWJzdHJl YW0sIHN1YnR3b3BoYXNlc3RhdGUsIHN1YmRpc2FibGVvbmVyciwKLSAgICAgICAgICAgICAgc3Vi c2xvdG5hbWUsIHN1YnN5bmNjb21taXQsIHN1YnB1YmxpY2F0aW9ucywgc3Vib3JpZ2luKQorICAg ICAgICAgICAgICBzdWJyZXRyeSwgc3Vic2xvdG5hbWUsIHN1YnN5bmNjb21taXQsIHN1YnB1Ymxp Y2F0aW9ucywgc3Vib3JpZ2luKQogICAgIE9OIHBnX3N1YnNjcmlwdGlvbiBUTyBwdWJsaWM7CiAK IENSRUFURSBWSUVXIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3N0YXRzIEFTCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKaW5kZXggOTM4MmU2MTllOS4uMmJhMjY1ODYyOCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtNjM1LDYgKzYzNSw3IEBA IENyZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlv blN0bXQgKnN0bXQsCiAJCQkJCSBMT0dJQ0FMUkVQX1RXT1BIQVNFX1NUQVRFX1BFTkRJTkcgOgog CQkJCQkgTE9HSUNBTFJFUF9UV09QSEFTRV9TVEFURV9ESVNBQkxFRCk7CiAJdmFsdWVzW0FudW1f cGdfc3Vic2NyaXB0aW9uX3N1YmRpc2FibGVvbmVyciAtIDFdID0gQm9vbEdldERhdHVtKG9wdHMu ZGlzYWJsZW9uZXJyKTsKKwl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3VicmV0cnkgLSAx XSA9IEJvb2xHZXREYXR1bShmYWxzZSk7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1 YmNvbm5pbmZvIC0gMV0gPQogCQlDU3RyaW5nR2V0VGV4dERhdHVtKGNvbm5pbmZvKTsKIAlpZiAo b3B0cy5zbG90X25hbWUpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCmluZGV4IGNiMjY5NWVjNzQuLmY4NTVjZDJjOWYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdv cmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxl bHdvcmtlci5jCkBAIC0yOTksNiArMjk5LDE3IEBAIHBhX2Nhbl9zdGFydChUcmFuc2FjdGlvbklk IHhpZCkKIAlpZiAoIUFsbFRhYmxlc3luY3NSZWFkeSgpKQogCQlyZXR1cm4gZmFsc2U7CiAKKwkv KgorCSAqIERvbid0IHVzZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGZvciByZXRyaWVzLCBiZWNh dXNlIGl0IGlzIHBvc3NpYmxlCisJICogdGhhdCBhIGRlYWRsb2NrIHdhcyBkZXRlY3RlZCB0aGUg bGFzdCB0aW1lIHdlIHRyaWVkIHRvIGFwcGx5IGEKKwkgKiB0cmFuc2FjdGlvbiB1c2luZyBhIHBh cmFsbGVsIGFwcGx5IHdvcmtlci4KKwkgKi8KKwlpZiAoTXlTdWJzY3JpcHRpb24tPnJldHJ5KQor CXsKKwkJZWxvZyhERUJVRzEsICJwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGFyZSBub3QgdXNlZCBm b3IgcmV0cmllcyIpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCiAJcmV0dXJuIHRydWU7CiB9CiAK QEAgLTE2ODcsMyArMTY5OCwyMiBAQCBwYV94YWN0X2ZpbmlzaChQYXJhbGxlbEFwcGx5V29ya2Vy SW5mbyAqd2luZm8sIFhMb2dSZWNQdHIgcmVtb3RlX2xzbikKIAlzdG9yZV9mbHVzaF9wb3NpdGlv bihyZW1vdGVfbHNuLCB3aW5mby0+c2hhcmVkLT5sYXN0X2NvbW1pdF9lbmQpOwogCSh2b2lkKSBw YV9mcmVlX3dvcmtlcih3aW5mbyk7CiB9CisKKy8qIENoZWNrIGlmIGFueSBhY3RpdmUgcGFyYWxs ZWwgYXBwbHkgd29ya2Vycy4gKi8KK2Jvb2wKK3BhX2hhdmVfYWN0aXZlX3dvcmtlcih2b2lkKQor eworCUxpc3RDZWxsICAgKmxjOworCisJZm9yZWFjaChsYywgUGFyYWxsZWxBcHBseVdvcmtlclBv b2wpCisJeworCQlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqdG1wX3dpbmZvOworCisJCXRtcF93 aW5mbyA9IChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKSBsZmlyc3QobGMpOworCisJCWlmICh0 bXBfd2luZm8tPmluX3VzZSkKKwkJCXJldHVybiB0cnVlOworCX0KKworCXJldHVybiBmYWxzZTsK K30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IGVmMzJmYTBk NzAuLjY3YjM2MWNjZTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIu YwpAQCAtMzkzLDcgKzM5Myw3IEBAIHN0YXRpYyB2b2lkIHN0cmVhbV9jbG9zZV9maWxlKHZvaWQp OwogCiBzdGF0aWMgdm9pZCBzZW5kX2ZlZWRiYWNrKFhMb2dSZWNQdHIgcmVjdnBvcywgYm9vbCBm b3JjZSwgYm9vbCByZXF1ZXN0UmVwbHkpOwogCi1zdGF0aWMgdm9pZCBEaXNhYmxlU3Vic2NyaXB0 aW9uQW5kRXhpdCh2b2lkKTsKK3N0YXRpYyB2b2lkIERpc2FibGVTdWJzY3JpcHRpb25PbkVycm9y KHZvaWQpOwogCiBzdGF0aWMgdm9pZCBhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKExvZ2lj YWxSZXBDb21taXREYXRhICpjb21taXRfZGF0YSk7CiBzdGF0aWMgdm9pZCBhcHBseV9oYW5kbGVf aW5zZXJ0X2ludGVybmFsKEFwcGx5RXhlY3V0aW9uRGF0YSAqZWRhdGEsCkBAIC00MzAsNiArNDMw LDggQEAgc3RhdGljIGlubGluZSB2b2lkIHJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbyh2 b2lkKTsKIHN0YXRpYyBUcmFuc0FwcGx5QWN0aW9uIGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rp b24oVHJhbnNhY3Rpb25JZCB4aWQsCiAJCQkJCQkJCQkJCQkJIFBhcmFsbGVsQXBwbHlXb3JrZXJJ bmZvICoqd2luZm8pOwogCitzdGF0aWMgdm9pZCBzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGJvb2wg cmV0cnkpOworCiAvKgogICogUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBsb2dpY2FsIHJlcGxpY2F0 aW9uIHdvcmtlci4KICAqLwpAQCAtMTA0NSw2ICsxMDQ3LDkgQEAgYXBwbHlfaGFuZGxlX2NvbW1p dChTdHJpbmdJbmZvIHMpCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5 bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKGNvbW1p dF9kYXRhLmVuZF9sc24pOwogCisJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJc2V0X3N1 YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CisKIAlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRF X0lETEUsIE5VTEwpOwogCXJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOwogfQpAQCAt MTE1MSw2ICsxMTU2LDkgQEAgYXBwbHlfaGFuZGxlX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCiAJ aW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKKwkvKiBSZXNldCB0aGUgcmV0cnkgZmxh Zy4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKKwogCS8qIFByb2Nlc3MgYW55 IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJv Y2Vzc19zeW5jaW5nX3RhYmxlcyhwcmVwYXJlX2RhdGEuZW5kX2xzbik7CiAKQEAgLTEyMDcsNiAr MTIxNSw5IEBAIGFwcGx5X2hhbmRsZV9jb21taXRfcHJlcGFyZWQoU3RyaW5nSW5mbyBzKQogCXN0 b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuLCBYYWN0TGFzdENvbW1pdEVu ZCk7CiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKKwkvKiBSZXNldCB0aGUgcmV0 cnkgZmxhZy4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKKwogCS8qIFByb2Nl c3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICov CiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhwcmVwYXJlX2RhdGEuZW5kX2xzbik7CiAKQEAgLTEy NjgsNiArMTI3OSw5IEBAIGFwcGx5X2hhbmRsZV9yb2xsYmFja19wcmVwYXJlZChTdHJpbmdJbmZv IHMpCiAJc3RvcmVfZmx1c2hfcG9zaXRpb24ocm9sbGJhY2tfZGF0YS5yb2xsYmFja19lbmRfbHNu LCBYYWN0TGFzdENvbW1pdEVuZCk7CiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAK KwkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZh bHNlKTsKKwogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6 ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhyb2xsYmFja19kYXRh LnJvbGxiYWNrX2VuZF9sc24pOwogCkBAIC0xMzkxLDYgKzE0MDUsOSBAQCBhcHBseV9oYW5kbGVf c3RyZWFtX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCQkJYnJlYWs7CiAJfQogCisJLyogUmVzZXQg dGhlIHJldHJ5IGZsYWcuICovCisJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CisKIAlw Z3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOwogCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQg YXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KQEAgLTE5NDYsNiArMTk2Mywx MCBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIAkJCWJyZWFrOwog CX0KIAorCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCWlmICh0b3BsZXZlbF94YWN0KQor CQlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKKwogCXJlc2V0X2FwcGx5X2Vycm9yX2Nv bnRleHRfaW5mbygpOwogfQogCkBAIC0yMjIyLDYgKzIyNDMsOSBAQCBhcHBseV9oYW5kbGVfc3Ry ZWFtX2NvbW1pdChTdHJpbmdJbmZvIHMpCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJl IGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFi bGVzKGNvbW1pdF9kYXRhLmVuZF9sc24pOwogCisJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICov CisJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CisKIAlwZ3N0YXRfcmVwb3J0X2FjdGl2 aXR5KFNUQVRFX0lETEUsIE5VTEwpOwogCiAJcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZv KCk7CkBAIC00MzIzLDIwICs0MzQ3LDI4IEBAIHN0YXJ0X3RhYmxlX3N5bmMoWExvZ1JlY1B0ciAq b3JpZ2luX3N0YXJ0cG9zLCBjaGFyICoqbXlzbG90bmFtZSkKIAl9CiAJUEdfQ0FUQ0goKTsKIAl7 CisJCS8qCisJCSAqIEVtaXQgdGhlIGVycm9yIG1lc3NhZ2UsIGFuZCByZWNvdmVyIGZyb20gdGhl IGVycm9yIHN0YXRlIHRvIGFuIGlkbGUKKwkJICogc3RhdGUKKwkJICovCisJCUhPTERfSU5URVJS VVBUUygpOworCisJCUVtaXRFcnJvclJlcG9ydCgpOworCQlBYm9ydE91dE9mQW55VHJhbnNhY3Rp b24oKTsKKwkJRmx1c2hFcnJvclN0YXRlKCk7CisKKwkJUkVTVU1FX0lOVEVSUlVQVFMoKTsKKwor CQkvKiBSZXBvcnQgdGhlIHdvcmtlciBmYWlsZWQgZHVyaW5nIHRhYmxlIHN5bmNocm9uaXphdGlv biAqLworCQlwZ3N0YXRfcmVwb3J0X3N1YnNjcmlwdGlvbl9lcnJvcihNeVN1YnNjcmlwdGlvbi0+ b2lkLCBmYWxzZSk7CisKIAkJaWYgKE15U3Vic2NyaXB0aW9uLT5kaXNhYmxlb25lcnIpCi0JCQlE aXNhYmxlU3Vic2NyaXB0aW9uQW5kRXhpdCgpOwotCQllbHNlCi0JCXsKLQkJCS8qCi0JCQkgKiBS ZXBvcnQgdGhlIHdvcmtlciBmYWlsZWQgZHVyaW5nIHRhYmxlIHN5bmNocm9uaXphdGlvbi4gQWJv cnQKLQkJCSAqIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uIHNvIHRoYXQgdGhlIHN0YXRzIG1lc3Nh Z2UgaXMgc2VudCBpbiBhbgotCQkJICogaWRsZSBzdGF0ZS4KLQkJCSAqLwotCQkJQWJvcnRPdXRP ZkFueVRyYW5zYWN0aW9uKCk7Ci0JCQlwZ3N0YXRfcmVwb3J0X3N1YnNjcmlwdGlvbl9lcnJvcihN eVN1YnNjcmlwdGlvbi0+b2lkLCBmYWxzZSk7CisJCQlEaXNhYmxlU3Vic2NyaXB0aW9uT25FcnJv cigpOwogCi0JCQlQR19SRV9USFJPVygpOwotCQl9CisJCS8qIFNldCB0aGUgcmV0cnkgZmxhZy4g Ki8KKwkJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeSh0cnVlKTsKKworCQlwcm9jX2V4aXQoMCk7CiAJ fQogCVBHX0VORF9UUlkoKTsKIApAQCAtNDM2MSwyMCArNDM5MywyNyBAQCBzdGFydF9hcHBseShY TG9nUmVjUHRyIG9yaWdpbl9zdGFydHBvcykKIAl9CiAJUEdfQ0FUQ0goKTsKIAl7CisJCS8qCisJ CSAqIEVtaXQgdGhlIGVycm9yIG1lc3NhZ2UsIGFuZCByZWNvdmVyIGZyb20gdGhlIGVycm9yIHN0 YXRlIHRvIGFuIGlkbGUKKwkJICogc3RhdGUKKwkJICovCisJCUhPTERfSU5URVJSVVBUUygpOwor CisJCUVtaXRFcnJvclJlcG9ydCgpOworCQlBYm9ydE91dE9mQW55VHJhbnNhY3Rpb24oKTsKKwkJ Rmx1c2hFcnJvclN0YXRlKCk7CisKKwkJUkVTVU1FX0lOVEVSUlVQVFMoKTsKKworCQkvKiBSZXBv cnQgdGhlIHdvcmtlciBmYWlsZWQgd2hpbGUgYXBwbHlpbmcgY2hhbmdlcyAqLworCQlwZ3N0YXRf cmVwb3J0X3N1YnNjcmlwdGlvbl9lcnJvcihNeVN1YnNjcmlwdGlvbi0+b2lkLAorCQkJCQkJCQkJ CSAhYW1fdGFibGVzeW5jX3dvcmtlcigpKTsKKwogCQlpZiAoTXlTdWJzY3JpcHRpb24tPmRpc2Fi bGVvbmVycikKLQkJCURpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KCk7Ci0JCWVsc2UKLQkJewot CQkJLyoKLQkJCSAqIFJlcG9ydCB0aGUgd29ya2VyIGZhaWxlZCB3aGlsZSBhcHBseWluZyBjaGFu Z2VzLiBBYm9ydCB0aGUKLQkJCSAqIGN1cnJlbnQgdHJhbnNhY3Rpb24gc28gdGhhdCB0aGUgc3Rh dHMgbWVzc2FnZSBpcyBzZW50IGluIGFuCi0JCQkgKiBpZGxlIHN0YXRlLgotCQkJICovCi0JCQlB Ym9ydE91dE9mQW55VHJhbnNhY3Rpb24oKTsKLQkJCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9u X2Vycm9yKE15U3Vic2NyaXB0aW9uLT5vaWQsICFhbV90YWJsZXN5bmNfd29ya2VyKCkpOworCQkJ RGlzYWJsZVN1YnNjcmlwdGlvbk9uRXJyb3IoKTsKIAotCQkJUEdfUkVfVEhST1coKTsKLQkJfQor CQkvKiBTZXQgdGhlIHJldHJ5IGZsYWcuICovCisJCXNldF9zdWJzY3JpcHRpb25fcmV0cnkodHJ1 ZSk7CiAJfQogCVBHX0VORF9UUlkoKTsKIH0KQEAgLTQ2NTAsMzkgKzQ2ODksMjAgQEAgQXBwbHlX b3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogfQogCiAvKgotICogQWZ0ZXIgZXJyb3IgcmVjb3Zl cnksIGRpc2FibGUgdGhlIHN1YnNjcmlwdGlvbiBpbiBhIG5ldyB0cmFuc2FjdGlvbgotICogYW5k IGV4aXQgY2xlYW5seS4KKyAqIERpc2FibGUgdGhlIHN1YnNjcmlwdGlvbiBpbiBhIG5ldyB0cmFu c2FjdGlvbi4KICAqLwogc3RhdGljIHZvaWQKLURpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KHZv aWQpCitEaXNhYmxlU3Vic2NyaXB0aW9uT25FcnJvcih2b2lkKQogewotCS8qCi0JICogRW1pdCB0 aGUgZXJyb3IgbWVzc2FnZSwgYW5kIHJlY292ZXIgZnJvbSB0aGUgZXJyb3Igc3RhdGUgdG8gYW4g aWRsZQotCSAqIHN0YXRlCi0JICovCi0JSE9MRF9JTlRFUlJVUFRTKCk7Ci0KLQlFbWl0RXJyb3JS ZXBvcnQoKTsKLQlBYm9ydE91dE9mQW55VHJhbnNhY3Rpb24oKTsKLQlGbHVzaEVycm9yU3RhdGUo KTsKLQotCVJFU1VNRV9JTlRFUlJVUFRTKCk7Ci0KLQkvKiBSZXBvcnQgdGhlIHdvcmtlciBmYWls ZWQgZHVyaW5nIGVpdGhlciB0YWJsZSBzeW5jaHJvbml6YXRpb24gb3IgYXBwbHkgKi8KLQlwZ3N0 YXRfcmVwb3J0X3N1YnNjcmlwdGlvbl9lcnJvcihNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLAot CQkJCQkJCQkJICFhbV90YWJsZXN5bmNfd29ya2VyKCkpOwotCiAJLyogRGlzYWJsZSB0aGUgc3Vi c2NyaXB0aW9uICovCiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlEaXNhYmxlU3Vic2Ny aXB0aW9uKE15U3Vic2NyaXB0aW9uLT5vaWQpOwogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgp OwogCi0JLyogTm90aWZ5IHRoZSBzdWJzY3JpcHRpb24gaGFzIGJlZW4gZGlzYWJsZWQgYW5kIGV4 aXQgKi8KKwkvKiBOb3RpZnkgdGhlIHN1YnNjcmlwdGlvbiBoYXMgYmVlbiBkaXNhYmxlZCAqLwog CWVyZXBvcnQoTE9HLAogCQkJZXJybXNnKCJzdWJzY3JpcHRpb24gXCIlc1wiIGhhcyBiZWVuIGRp c2FibGVkIGJlY2F1c2Ugb2YgYW4gZXJyb3IiLAogCQkJCSAgIE15U3Vic2NyaXB0aW9uLT5uYW1l KSk7Ci0KLQlwcm9jX2V4aXQoMCk7CiB9CiAKIC8qCkBAIC00OTc0LDMgKzQ5OTQsNzEgQEAgZ2V0 X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihUcmFuc2FjdGlvbklkIHhpZCwgUGFyYWxsZWxBcHBs eVdvcmtlckluZm8gKip3aW5mbykKIAkJcmV0dXJuIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFM TEVMOwogCX0KIH0KKworLyoKKyAqIFNldCBzdWJyZXRyeSBvZiBwZ19zdWJzY3JpcHRpb24gY2F0 YWxvZy4KKyAqCisgKiBJZiByZXRyeSBpcyB0cnVlLCBzdWJzY3JpYmVyIGlzIGFib3V0IHRvIGV4 aXQgd2l0aCBhbiBlcnJvci4gT3RoZXJ3aXNlLCBpdAorICogbWVhbnMgdGhhdCB0aGUgdHJhbnNh Y3Rpb24gd2FzIGFwcGxpZWQgc3VjY2Vzc2Z1bGx5LgorICovCitzdGF0aWMgdm9pZAorc2V0X3N1 YnNjcmlwdGlvbl9yZXRyeShib29sIHJldHJ5KQoreworCVJlbGF0aW9uCXJlbDsKKwlIZWFwVHVw bGUJdHVwOworCWJvb2wJCXN0YXJ0ZWRfdHggPSBmYWxzZTsKKwlib29sCQludWxsc1tOYXR0c19w Z19zdWJzY3JpcHRpb25dOworCWJvb2wJCXJlcGxhY2VzW05hdHRzX3BnX3N1YnNjcmlwdGlvbl07 CisJRGF0dW0JCXZhbHVlc1tOYXR0c19wZ19zdWJzY3JpcHRpb25dOworCisJLyogRmFzdCBwYXRo IC0gaWYgbm8gc3RhdGUgY2hhbmdlIHRoZW4gbm90aGluZyB0byBkbyAqLworCWlmIChNeVN1YnNj cmlwdGlvbi0+cmV0cnkgPT0gcmV0cnkpCisJCXJldHVybjsKKworCS8qIEZhc3QgcGF0aCAtIHNr aXAgZm9yIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgKi8KKwlpZiAoYW1fcGFyYWxsZWxfYXBwbHlf d29ya2VyKCkpCisJCXJldHVybjsKKworCS8qIEZhc3QgcGF0aCAtIHNraXAgc2V0IHJldHJ5IGlm IG5vIGFjdGl2ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzICovCisJaWYgKHJldHJ5ICYmICFwYV9o YXZlX2FjdGl2ZV93b3JrZXIoKSkKKwkJcmV0dXJuOworCisJaWYgKCFJc1RyYW5zYWN0aW9uU3Rh dGUoKSkKKwl7CisJCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCXN0YXJ0ZWRfdHggPSB0 cnVlOworCX0KKworCS8qIExvb2sgdXAgdGhlIHN1YnNjcmlwdGlvbiBpbiB0aGUgY2F0YWxvZyAq LworCXJlbCA9IHRhYmxlX29wZW4oU3Vic2NyaXB0aW9uUmVsYXRpb25JZCwgUm93RXhjbHVzaXZl TG9jayk7CisJdHVwID0gU2VhcmNoU3lzQ2FjaGVDb3B5MShTVUJTQ1JJUFRJT05PSUQsCisJCQkJ CQkJICBPYmplY3RJZEdldERhdHVtKE15U3Vic2NyaXB0aW9uLT5vaWQpKTsKKworCWlmICghSGVh cFR1cGxlSXNWYWxpZCh0dXApKQorCQllbG9nKEVSUk9SLCAic3Vic2NyaXB0aW9uIFwiJXNcIiBk b2VzIG5vdCBleGlzdCIsIE15U3Vic2NyaXB0aW9uLT5uYW1lKTsKKworCUxvY2tTaGFyZWRPYmpl Y3QoU3Vic2NyaXB0aW9uUmVsYXRpb25JZCwgTXlTdWJzY3JpcHRpb24tPm9pZCwgMCwKKwkJCQkJ IEFjY2Vzc1NoYXJlTG9jayk7CisKKwkvKiBGb3JtIGEgbmV3IHR1cGxlLiAqLworCW1lbXNldCh2 YWx1ZXMsIDAsIHNpemVvZih2YWx1ZXMpKTsKKwltZW1zZXQobnVsbHMsIGZhbHNlLCBzaXplb2Yo bnVsbHMpKTsKKwltZW1zZXQocmVwbGFjZXMsIGZhbHNlLCBzaXplb2YocmVwbGFjZXMpKTsKKwor CS8qIFNldCBzdWJyZXRyeSAqLworCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJyZXRy eSAtIDFdID0gQm9vbEdldERhdHVtKHJldHJ5KTsKKwlyZXBsYWNlc1tBbnVtX3BnX3N1YnNjcmlw dGlvbl9zdWJyZXRyeSAtIDFdID0gdHJ1ZTsKKworCXR1cCA9IGhlYXBfbW9kaWZ5X3R1cGxlKHR1 cCwgUmVsYXRpb25HZXREZXNjcihyZWwpLCB2YWx1ZXMsIG51bGxzLAorCQkJCQkJCXJlcGxhY2Vz KTsKKworCS8qIFVwZGF0ZSB0aGUgY2F0YWxvZy4gKi8KKwlDYXRhbG9nVHVwbGVVcGRhdGUocmVs LCAmdHVwLT50X3NlbGYsIHR1cCk7CisKKwkvKiBDbGVhbnVwLiAqLworCWhlYXBfZnJlZXR1cGxl KHR1cCk7CisJdGFibGVfY2xvc2UocmVsLCBOb0xvY2spOworCisJaWYgKHN0YXJ0ZWRfdHgpCisJ CUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggZjQ1NGIzMWM1 OC4uNDlmODM1ZWVkYyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysg Yi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC00NTYwLDggKzQ1NjAsOSBAQCBnZXRTdWJz Y3JpcHRpb25zKEFyY2hpdmUgKmZvdXQpCiAJbnR1cHMgPSBQUW50dXBsZXMocmVzKTsKIAogCS8q Ci0JICogR2V0IHN1YnNjcmlwdGlvbiBmaWVsZHMuIFdlIGRvbid0IGluY2x1ZGUgc3Vic2tpcGxz biBpbiB0aGUgZHVtcCBhcwotCSAqIGFmdGVyIHJlc3RvcmluZyB0aGUgZHVtcCB0aGlzIHZhbHVl IG1heSBubyBsb25nZXIgYmUgcmVsZXZhbnQuCisJICogR2V0IHN1YnNjcmlwdGlvbiBmaWVsZHMu IFdlIGRvbid0IGluY2x1ZGUgc3Vic2tpcGxzbiBhbmQgc3VicmV0cnkgaW4KKwkgKiB0aGUgZHVt cCBhcyBhZnRlciByZXN0b3JpbmcgdGhlIGR1bXAgdGhpcyB2YWx1ZSBtYXkgbm8gbG9uZ2VyIGJl CisJICogcmVsZXZhbnQuCiAJICovCiAJaV90YWJsZW9pZCA9IFBRZm51bWJlcihyZXMsICJ0YWJs ZW9pZCIpOwogCWlfb2lkID0gUFFmbnVtYmVyKHJlcywgIm9pZCIpOwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfc3Vic2NyaXB0aW9uLmgKaW5kZXggNWI5ZTVhMzk5YS4uZDNiMTU4ZjBjMCAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaAorKysgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCkBAIC04OCw2ICs4OCwxMSBAQCBDQVRBTE9HKHBn X3N1YnNjcmlwdGlvbiw2MTAwLFN1YnNjcmlwdGlvblJlbGF0aW9uSWQpIEJLSV9TSEFSRURfUkVM QVRJT04gQktJX1JPVwogCWJvb2wJCXN1YmRpc2FibGVvbmVycjsJLyogVHJ1ZSBpZiBhIHdvcmtl ciBlcnJvciBzaG91bGQgY2F1c2UgdGhlCiAJCQkJCQkJCQkgKiBzdWJzY3JpcHRpb24gdG8gYmUg ZGlzYWJsZWQgKi8KIAorCWJvb2wJCXN1YnJldHJ5IEJLSV9ERUZBVUxUKGYpOwkvKiBUcnVlIGlm IHByZXZpb3VzIGNoYW5nZSBmYWlsZWQKKwkJCQkJCQkJCQkJICogdG8gYmUgYXBwbGllZCB3aGls ZSB0aGVyZSB3ZXJlCisJCQkJCQkJCQkJCSAqIGFueSBhY3RpdmUgcGFyYWxsZWwgYXBwbHkKKwkJ CQkJCQkJCQkJICogd29ya2VycyAqLworCiAjaWZkZWYgQ0FUQUxPR19WQVJMRU4JCQkvKiB2YXJp YWJsZS1sZW5ndGggZmllbGRzIHN0YXJ0IGhlcmUgKi8KIAkvKiBDb25uZWN0aW9uIHN0cmluZyB0 byB0aGUgcHVibGlzaGVyICovCiAJdGV4dAkJc3ViY29ubmluZm8gQktJX0ZPUkNFX05PVF9OVUxM OwpAQCAtMTMxLDYgKzEzNiw4IEBAIHR5cGVkZWYgc3RydWN0IFN1YnNjcmlwdGlvbgogCWJvb2wJ CWRpc2FibGVvbmVycjsJLyogSW5kaWNhdGVzIGlmIHRoZSBzdWJzY3JpcHRpb24gc2hvdWxkIGJl CiAJCQkJCQkJCSAqIGF1dG9tYXRpY2FsbHkgZGlzYWJsZWQgaWYgYSB3b3JrZXIgZXJyb3IKIAkJ CQkJCQkJICogb2NjdXJzICovCisJYm9vbAkJcmV0cnk7CQkJLyogSW5kaWNhdGVzIGlmIHByZXZp b3VzIGNoYW5nZSBmYWlsZWQgdG8gYmUKKwkJCQkJCQkJICogYXBwbGllZCB1c2luZyBhIHBhcmFs bGVsIGFwcGx5IHdvcmtlciAqLwogCWNoYXIJICAgKmNvbm5pbmZvOwkJLyogQ29ubmVjdGlvbiBz dHJpbmcgdG8gdGhlIHB1Ymxpc2hlciAqLwogCWNoYXIJICAgKnNsb3RuYW1lOwkJLyogTmFtZSBv ZiB0aGUgcmVwbGljYXRpb24gc2xvdCAqLwogCWNoYXIJICAgKnN5bmNjb21taXQ7CQkvKiBTeW5j aHJvbm91cyBjb21taXQgc2V0dGluZyBmb3Igd29ya2VyICovCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL3dvcmtlcl9pbnRlcm5hbC5oCmluZGV4IGI4YTlkNTJjOGUuLmVjZjE4YzU4NzIgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCisrKyBiL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCkBAIC0zMDQsNiArMzA0LDgg QEAgZXh0ZXJuIHZvaWQgcGFfZGVjcl9hbmRfd2FpdF9zdHJlYW1fYmxvY2sodm9pZCk7CiBleHRl cm4gdm9pZCBwYV94YWN0X2ZpbmlzaChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sCiAJ CQkJCQkgICBYTG9nUmVjUHRyIHJlbW90ZV9sc24pOwogCitleHRlcm4gYm9vbCBwYV9oYXZlX2Fj dGl2ZV93b3JrZXIodm9pZCk7CisKICNkZWZpbmUgaXNQYXJhbGxlbEFwcGx5V29ya2VyKHdvcmtl cikgKCh3b3JrZXIpLT5hcHBseV9sZWFkZXJfcGlkICE9IEludmFsaWRQaWQpCiAKIHN0YXRpYyBp bmxpbmUgYm9vbApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVh bS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKaW5kZXggMzcyNWI0 ODVmZi4uNjEyZjJhZTg4MSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1 X3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCkBA IC04Nyw4ICs4NywxNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAkJJ2NoZWNrIGV4dHJhIGNvbHVt bnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycpOwogCiAJIyBUZXN0IHRoZSBzdHJlYW1pbmcgaW4g YmluYXJ5IG1vZGUKKwlteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFw cGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKwkp OwogCSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCQkiQUxURVIgU1VC U0NSSVBUSU9OIHRhcF9zdWIgU0VUIChiaW5hcnkgPSBvbikiKTsKKwkkbm9kZV9wdWJsaXNoZXIt PnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBG Uk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFt ZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorCSAgKQorCSAgb3IgZGllCisJICAiVGltZWQg b3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VC U0NSSVBUSU9OIjsKIAogCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgog CSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwpAQCAtNDQ5LDYgKzQ1Nyw1 NSBAQCAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYl8yIik7CiBpcygkcmVzdWx0LCBxcSg1MDAw KSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGJ5IHNlcmlhbGl6aW5nIG1lc3NhZ2Vz IHRvIGRpc2snKTsKIAorIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQu Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUgVEFCTEUg dGVzdF90YWJfMiIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l KTsKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIFRlc3QgcmUtYXBwbHkgYSBmYWlsZWQgc3Ry ZWFtaW5nIHRyYW5zYWN0aW9uIHVzaW5nIHRoZSBsZWFkZXIgYXBwbHkKKyMgd29ya2VyIGFuZCBh cHBseSBzdWJzZXF1ZW50IHN0cmVhbWluZyB0cmFuc2FjdGlvbiB1c2luZyB0aGUgcGFyYWxsZWwg YXBwbHkKKyMgd29ya2VyIGFmdGVyIHRoaXMgcmV0cnkgc3VjY2VlZHMuCisjID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNS RUFURSBVTklRVUUgSU5ERVggaWR4X3RhYiBvbiB0ZXN0X3RhYl8yKGEpIik7CisKKyMgQ2hlY2sg dGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNj cmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jl cycsIHFxeworQkVHSU47CitJTlNFUlQgSU5UTyB0ZXN0X3RhYl8yIFNFTEVDVCBpIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYl8yIHZhbHVl cygxKTsKK0NPTU1JVDt9KTsKKworIyBDaGVjayBpZiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vy IGlzIG5vdCBzdGFydGVkIGJlY2F1c2UgdGhlIGFib3ZlCisjIHRyYW5zYWN0aW9uIGZhaWxlZCB0 byBiZSBhcHBsaWVkLgorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0RFQlVH OiAoIFtBLVowLTldKzopPyBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGFyZSBub3QgdXNlZCBmb3Ig cmV0cmllcy8sCisJJG9mZnNldCk7CisKKyMgRHJvcCB0aGUgdW5pcXVlIGluZGV4IG9uIHRoZSBz dWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIkRST1AgSU5ERVggaWR4X3RhYiIpOworCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFt aW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KKyRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBG Uk9NIHRlc3RfdGFiXzIiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDEpLCAnZGF0YSByZXBsaWNhdGVk IHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgaW5kZXgnKTsKKworIyBBZnRlciBzdWNjZXNz ZnVsbHkgcmV0cnlpbmcgdG8gYXBwbHkgYSBmYWlsZWQgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLCBh cHBseQorIyB0aGUgZm9sbG93aW5nIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB1c2luZyB0aGUgcGFy YWxsZWwgYXBwbHkgd29ya2VyLgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIklOU0VSVCBJTlRPIHRlc3RfdGFiXzIgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo NTAwMSwgMTAwMDApIHMoaSkiKTsKKworY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmli ZXIsICRvZmZzZXQsIDEsICdDT01NSVQnKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJf MiIpOworaXMoJHJlc3VsdCwgcXEoMTAwMDEpLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmli ZXIgdXNpbmcgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcicpOworCiAkbm9kZV9zdWJzY3JpYmVy LT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwogCi0tIAoyLjIzLjAud2luZG93cy4xCgo= --_008_OS0PR01MB571623EFD8903C93424EFADC94E99OS0PR01MB5716jpnp_--