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 1p4Kmf-0007l0-Eo for pgsql-hackers@arkaria.postgresql.org; Sun, 11 Dec 2022 11:46:18 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1p4Kle-0005ER-IT for pgsql-hackers@arkaria.postgresql.org; Sun, 11 Dec 2022 11:45:14 +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 1p4Kld-0005EF-OG for pgsql-hackers@lists.postgresql.org; Sun, 11 Dec 2022 11:45:14 +0000 Received: from esa14.fujitsucc.c3s2.iphmx.com ([68.232.156.101]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p4KlV-0001U1-GT for pgsql-hackers@lists.postgresql.org; Sun, 11 Dec 2022 11:45:12 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1670759105; x=1702295105; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=jSOLuSorSD3s9BUy2+ipeHb3mbAiBkR8aU1jDBYb/IM=; b=HE1cjXbLHJ55vBNsrZM4cbrM48Mz1CDPWH9kUmpOaCOYUliYGV3tSaMD b8E5HfzyC0P9O69D5CpEdIJzGeAAi184AN1EOW7Icl2vFDbKfSN6qa3f6 yA0mb7ZbRjKcg3KGfld8NUf5GtZuXo15O8h73mah/bPNJSK+YkYWQlRby 3IMsDGieOxghXwOiqDhadcAch7EKelDboKi3D1tH0Dm+DoYbj/lOcbcB7 VFiLUO/4ZM0EMSak7C6N1FbnQPxrTPDJsVPCz6anzoXAJR0Bp5cAkoTUG 0PVxHvNk5e3epOmfPTs6DU2HZBdDk6uyw/v4zMAvGjFbTHEREFAl9TywK g==; X-IronPort-AV: E=McAfee;i="6500,9779,10557"; a="71873237" X-IronPort-AV: E=Sophos;i="5.96,236,1665414000"; d="scan'208,223";a="71873237" Received: from mail-os0jpn01lp2110.outbound.protection.outlook.com (HELO JPN01-OS0-obe.outbound.protection.outlook.com) ([104.47.23.110]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Dec 2022 20:45:00 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QHYXQ83IJgCTGl+ajkXpQaEJI4o+0GpRPbIl+39uRrNDdL4U2yKTbj88OR3opnpHNPpiPKaVNm/L9tdr7+imvq7v7gk4CB4rb+a2/6PKNmOm0ScP2PRI6xOcn+Qia2gtpgj5GfFsJC54XvSOOZQD0rmAQ6+Gf0UJ30ZjXdSmWbma9e8JkRxemSLEc87KN0jWATYPd60bdA/7bFoqlaM8lG3oYo73ukxPu20vmLFBOU9dcEb9EAli+ob0/yPPKOf4ontLPczisb6ilm1Eh6b79NQNrRwh65KCqb9H00Ka+gKkHXi0YTglrAFs8lOZzjlE79eFeKZquwLz2z9shHuBEA== 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=fASGbiKes52NxlibFBsWilmpnBukZDxh72hduCpKSKI=; b=dyAYxdBxtUySmpW/vO6F/3dgk/78pBOeXJSYxL9zkr/qeSanKIa1zlkzCijA59cYldptYinUxn16xnB51r02ZvMbuu9qQgRhJROBME6J5XGnKyU7CfsXc29/oapKprLMA3mEnLXvwn6BqbKW8QyxxI1R+7bVFzLSuJCH1a52qf6dSxBA029la0hkZCLyvv6Fso9HVc8iXnqYCWgi5XJurJIhBVbtazLuvBBpArggi97CEl5O75xQntuuTdw7cfwNbt4w3Dm/c33Pt4Si766VySr2vr8nN9sP2snWzDzx+rMrIA22RvkubK7wXg4urSQpMLbq7LsDOKBCwcjpbMUs/Q== 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 OS0PR01MB5683.jpnprd01.prod.outlook.com (2603:1096:604:b9::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5880.19; Sun, 11 Dec 2022 11:44:56 +0000 Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::6bd0:acc4:7596:b8b1]) by OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::6bd0:acc4:7596:b8b1%8]) with mapi id 15.20.5880.019; Sun, 11 Dec 2022 11:44:55 +0000 From: "houzj.fnst@fujitsu.com" To: Amit Kapila CC: Masahiko Sawada , "wangw.fnst@fujitsu.com" , Peter Smith , 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: AQHYSXX5UDTvhwo1UESW8vqRoeLCJazlu9SQgAkSooCACBQ0gIABsTcwgAA1vECAAqHFgIAE/jVwgAXct9CAADkRgIALO/aAgAsRZICAB606AIAS+CyAgAAufICAAWQLgIABHxKAgAA3o4CAAeE3gIAJPr0AgAkxzACAAiJoAIAC0hUAgARvDICABQA2gIAAFvcAgAeBmICABO9ggIAJO+YAgABu1YCACQzpAIAJSy6AgAS+zICABq7mgIABSJUAgAAOtoCAACghoIAB8TqAgAqL+oCADJWRgIAGVm0AgAGAQICAAerMgIABYRWAgAgnZ+CAAXRdgIAGBUSQgAGFeoCAAFYagIABb5aggAGsWiCAATu3gIAEyyEAgABeLHCABFBngIAK5WIAgABrY4CABb89gIADiS0AgAEu2oCAAHBpgIADPWcAgAS/1gCADeB2AIAAPUnQgAEERACAABzggIAF+30AgAHyDYCAEzpGgIANkEmAgAI7xKCABhztAIAFv4zggABYqoCAABRMQIABvKAAgAS+5UCAAVlmEIACxK+AgAIepYCAAy1b4IAA8x6ggAJYuYCABaCt0IACJjmAgAED94CAAgbzAIABr/gAgASdinCAASDJ4IABzHIAgAE3bTCAAIzFAIABQexwgAGmu4CAA2tf4A== Date: Sun, 11 Dec 2022 11:44:55 +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?NTBfQWN0aW9uSWQ9ZGRkMGQ1OGUtMTdkZC00YmYxLWFhMDUtYjZhOWU5OTc4?= =?utf-8?B?YTViO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?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?ZWNlMDUwX1NldERhdGU9MjAyMi0xMi0xMVQxMToyNzowOVo7TVNJUF9MYWJl?= =?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_|OS0PR01MB5683:EE_ x-ms-office365-filtering-correlation-id: b33ae1e1-3f8c-48f4-592c-08dadb6d1fd6 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: GHbUN9tp0aARyc5VeJNdAsVY89waQu02x1Z/C07yZ2v5OTMcXhDf8vor/sDZJCnOV+Q62FB5w9kZsB7DyJZaCHIGFi5nXVbquwq/d3M3SH6B9pZZ15KJR9v1MPK1VtQHUxYnACaJQI8XpBcTRrbQn9MJqpVE5e6NdEHdF9GiW72bWe6hxDax4ka8TFarnp/w/HzHgSVbYtE7Cs9zjkX3yG8zgO7YB0ifW16UxEpzFI4Uqzl7QrDGuuBQ+4q9HjHwj1ZmQ5NxdPNDb7As4MyqzEYvypOxDUvsSESs4wl544nJRBEdTJLGB0vp36BYG6x5mk5lXoCrfbE2A0EHRUyAQH7hj4+Nn2IUb+UCQpHguqEDZodJ8MWFReI4ix3e2MerQNo56fjAY0Hcw4wEcTq7X/kd02ybEQbpi6p+783eAVOO1i+fq/OQhm+W8DgTYRvVA8UbT3aPDiM8+MHzlogF6Myxi8w0Rdn5JdnpXlC7UKVpTPwbQNCajAm9e37hTf9ziecceOOWjkpYBDhzOjpn8i57R3zVlV9b9R+r3lJTVShnS0hTr8U2iikX4QkD49xYQScs5VYIL7lvoq4qFoIjTH10n7+dyDdOzwBHDSmGidoEdsecbGK21pw+O4uf8NZCrYuNm97BD7lx6YHiOsgkGtknSO6Ig20PkH5apeLqkkvRV8wuDX+teyz/oy8fuSYgTH+OBea6PeQCJuJIiHOs1Uq0jHdEB5hROCbT51YkzNA= 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)(396003)(366004)(136003)(346002)(376002)(39860400002)(1590799012)(451199015)(85182001)(86362001)(33656002)(2906002)(186003)(83380400001)(6916009)(54906003)(9686003)(26005)(478600001)(71200400001)(6506007)(53546011)(7696005)(82960400001)(99936003)(41300700001)(122000001)(38100700002)(5660300002)(38070700005)(55016003)(52536014)(8936002)(64756008)(66446008)(8676002)(66556008)(76116006)(66476007)(66946007)(4326008)(316002)(1580799009);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?VWNPZUY1cVBLcnBtejJPcnBrN3huYkozNkFMSVN4S2ZaTDZOaVcwczBGcWNM?= =?utf-8?B?ODluWkkybTJpSk5BbUxRK25Wc0o3YTVQc25pTE5tN1dwS0tDaXVnNVdtTHJG?= =?utf-8?B?U0s4dGxPZGxGOEI5UklMVnROZHh4cUNnRkNINXpCSGZvbDVoMi95YVFZYmt6?= =?utf-8?B?V2NwMldHMHk4aXVPOU4wNFRMNjlKa2NkZlRwNkFIaDdkeTcxRmxoZC80Sng0?= =?utf-8?B?WkZ0Rmw5T2RWQkk5dkRNSllXUDgrY0p6MUxtVnRkcFJ3TGViSVFJOFJvcmsz?= =?utf-8?B?MUVML1hFckVOTXlTdkVOS0tNWTFyS29SMlVOMmRzK1hGdlI3ZWU1c2ZtaHBj?= =?utf-8?B?Y0ViQ2VENGdFbmxCNHpPK3o2NVBNK3dncVU0SlU1b0lBUWxnL3oxR082OGpM?= =?utf-8?B?YllxdVR5Qm54bkR6em1xRjJBQk1LVUxzM3VPTlJRRjhIbGcxZlppdWxGaGY4?= =?utf-8?B?d0JrOStuTWZjMS91T1dDUDdrMkFDeENyUUZpK09sWjMxQWpXYUQ1OERJQ0hm?= =?utf-8?B?VTVHTEVSWGZ5L2E1OU1ia2NhbUJVK3lFNFpNTWR0Y0pKM3lGeC9PWE8zUFNr?= =?utf-8?B?c094SGlNV1BzNVV6RXNHd2VOZTRyUjAwK0VIWG5XekFiWlRmTkgyVEpMc0Jo?= =?utf-8?B?L0NMRWUrS0o3SzhkaVJlSElPOENaTUphZDViRjIxNEU4TnMyNTlGTTA4VHlI?= =?utf-8?B?MjhPbjB0ajlDMTFzRDBMb1hWaFN2cGFtSFFHRTVySkdibXVnKy9UdVJzVjZq?= =?utf-8?B?N3Rmc0ltN0JINGltQ1lvZjMxYlV5L3JsY2RsZ21iVXZ6NjNvTlJwYmpzTGVJ?= =?utf-8?B?WlhTcUdrNDA3cTRWMkRuWVFDNUpUNFg1WEE2bjU2UTU3aWtRVGliVXNnZFlB?= =?utf-8?B?VkJZSWYzcURjRWFMeVR2ZlFIcDF6cHhBMmFRTTlBU3hEYjJXME9sUnpjeW5D?= =?utf-8?B?SllFUk5hck8vVDJqVmVITFR0R3FXK0ZBSjJPUk4zRlAzVnozSUc5azl3YUZL?= =?utf-8?B?eGZlUlljcTUwcXBBTXRENDBPR0lTbTB3ODFWTUNzRVF4bmQyZkQ5UlB1S3BV?= =?utf-8?B?by84ZGNBZjBreGQxc3lxUDJIdk90V3NkK2F6ZjRZOVBuYzBRZUNPbWRmNG4z?= =?utf-8?B?TTYzd1NGSldFRFBuUU9CNDg0eXlaOVVHTkdveUx6TjFQdHFUVHJkU3hCcHZn?= =?utf-8?B?OHNCVFNvRXB5UTlEVFQvOEpJVWF4RGxOdjFwVU53dWJ2bCsydmh1UnhJT1B2?= =?utf-8?B?eisyejV1cjFVV2lTRkhSVUkyeHBsNkw0VFRSNXFEK3FTN1FRL2xjUU5Eajdj?= =?utf-8?B?VnJRbGk2UFZhTC9EUHB0R0hBZUdscEoweDRKYWRYMVpzYVF4bE5rcWZMcSsy?= =?utf-8?B?Q2pnbWxVeG9XcUdYdzZaR0o1azBlN0UrMC9NWm4ya0FKb09mMFRWbFRlaDYv?= =?utf-8?B?bUdjcjZGRmlOQnpHa3pENFlES25xQlVjT01OaExsKy9Wa2cxd2lmM1lPbFBF?= =?utf-8?B?dndKREQrWHN4cmllMWxxczVHeFpSazJwTWowR0xFbzRDQVVqaG5zZXVSQzlt?= =?utf-8?B?Q1R6ZGtBWllDZ3BoT3p1YWRJS2xIcjdDSmQyemZmRHNUTHN3N2dpVmNhWlpJ?= =?utf-8?B?VVB5MnFpWXRWU1l5OTN2NndWZTVCZ1NvT2JNSk9PcHZGeEhNQWJkcmM2N2R6?= =?utf-8?B?dVFzNU1xS3hKcC9OSnFudVc1ODVJL3dBbmMzcVVOVHFSQ3hjTkpjcVFkV0J2?= =?utf-8?B?M21BMWFMa1JYR0VsZEpIVXZkSHM0TWYyTDMrNCtTNmI5cG5ZRGhzSFBkL2NK?= =?utf-8?B?Sm85ZWh1clZtajVhcldIeno4TWp4OWd2Z0xnSjI0VDBNQ3dyVTRaSVpBT0dx?= =?utf-8?B?VEFzcmRWSjlzNi9DWit6OGVIYkRiUzhYaitjNXhkbDRrSmtqVDA5ZWFSVXdV?= =?utf-8?B?OHdERUI1Uko5ZHFpOWprVEE1TXVoTTlBRkhialVNeFNFR1V3VVdaNWJySi92?= =?utf-8?B?SndNeUtqZG5nRDErMEpNUEg0Ull6N0hEc2Y5SUhPN3krMnJKRkg1aUpTN0ZN?= =?utf-8?B?V3hUZ2hPNC80UmpCb2U2TVFtTkJQSUdPckFWZXY4UktJY2lRSkN1STlKc1JP?= =?utf-8?Q?xYeeKdzRgoI24aZ7p3J36+Fnc?= Content-Type: multipart/mixed; boundary="_008_OS0PR01MB571663B4EC5D8BE749AACD98941E9OS0PR01MB5716jpnp_" 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: b33ae1e1-3f8c-48f4-592c-08dadb6d1fd6 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Dec 2022 11:44:55.7937 (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: vdXSQxOabC7Au7f7nXbtQE0ItnXTTftVrkg6dK9+dfeyoZUNgkqLdCQWsfoGFxxWNU4BR/JJwVlcL52Na/b7FQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS0PR01MB5683 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_008_OS0PR01MB571663B4EC5D8BE749AACD98941E9OS0PR01MB5716jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gRnJpZGF5LCBEZWNlbWJlciA5LCAyMDIyIDM6MTQgUE0gQW1pdCBLYXBpbGEgPGFtaXQua2Fw aWxhMTZAZ21haWwuY29tPiB3cm90ZToNCj4gDQo+IE9uIFRodSwgRGVjIDgsIDIwMjIgYXQgMTI6 MzcgUE0gaG91emouZm5zdEBmdWppdHN1LmNvbQ0KPiA8aG91emouZm5zdEBmdWppdHN1LmNvbT4g d3JvdGU6DQo+ID4NCj4gDQo+IFJldmlldyBjb21tZW50cw0KDQpUaGFua3MgZm9yIHRoZSBjb21t ZW50cyENCg0KPiA9PT09PT09PT09PT09PQ0KPiAxLiBDdXJyZW50bHksIHdlIGRvbid0IHJlbGVh c2UgdGhlIHN0cmVhbSBsb2NrIGluIExBIChsZWFkZSBhcHBseQ0KPiB3b3JrZXIpIGZvciAicm9s bGJhY2sgdG8gc2F2ZXBvaW50IiBhbmQgdGhlIHJlYXNvbiBpcyBtZW50aW9uZWQgaW4gY29tbWVu dHMgb2YNCj4gYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydCgpIGluIHRoZSBwYXRjaC4gQnV0LCB0 b2RheSwgd2hpbGUgdGVzdGluZywgSSBmb3VuZCB0aGF0DQo+IGNhbiBsZWFkIHRvIGRlYWRsb2Nr IHdoaWNoIG90aGVyd2lzZSwgd29uJ3QgaGFwcGVuIG9uIHRoZSBwdWJsaXNoZXIuIFRoZSBrZXkN Cj4gcG9pbnQgaXMgcm9sbGJhY2sgdG8gc2F2ZXBvaW50IHJlbGVhc2VzIHRoZSBsb2NrcyBhY3F1 aXJlZCBieSB0aGUgcGFydGljdWxhcg0KPiBzdWJ0cmFuc2FjdGlvbiwgc28gcGFyYWxsZWwgYXBw bHkgd29ya2VyIHNob3VsZCBhbHNvIGRvIHRoZSBzYW1lLiBDb25zaWRlciB0aGUNCj4gZm9sbG93 aW5nIGV4YW1wbGUgd2hlcmUgdGhlIHRyYW5zYWN0aW9uIGluIHNlc3Npb24tMSBpcyBiZWluZyBw ZXJmb3JtZWQgYnkgdGhlDQo+IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBhbmQgdGhlIHRyYW5zYWN0 aW9uIGluIHNlc3Npb24tMiBpcyBiZWluZyBwZXJmb3JtZWQgYnkgdGhlDQo+IGxlYWRlciBhcHBs eSB3b3JrZXIuIEkgaGF2ZSBzaW11bGF0ZWQgaXQgYnkgdXNpbmcgR1VDIGZvcmNlX3N0cmVhbV9t b2RlLg0KPiBQdWJsaXNoZXINCj4gPT09PT09PT09PQ0KPiBTZXNzaW9uLTENCj4gcG9zdGdyZXM9 IyBiZWdpbjsNCj4gQkVHSU4NCj4gcG9zdGdyZXM9KiMgc2F2ZXBvaW50IHMxOw0KPiBTQVZFUE9J TlQNCj4gcG9zdGdyZXM9KiMgdHJ1bmNhdGUgdDE7DQo+IFRSVU5DQVRFIFRBQkxFDQo+IA0KPiBT ZXNzaW9uLTINCj4gcG9zdGdyZXM9IyBiZWdpbjsNCj4gQkVHSU4NCj4gcG9zdGdyZXM9KiMgaW5z ZXJ0IGludG8gdDEgdmFsdWVzKDQpOw0KPiANCj4gU2Vzc2lvbi0xDQo+IHBvc3RncmVzPSojIHJv bGxiYWNrIHRvIHNhdmVwb2ludCBzMTsNCj4gUk9MTEJBQ0sNCj4gDQo+IFNlc3Npb24tMg0KPiBD b21taXQ7DQo+IA0KPiBXaXRoIG9yIHdpdGhvdXQgY29tbWl0IG9mIFNlc3Npb24tMiwgdGhpcyBz Y2VuYXJpbyB3aWxsIGxlYWQgdG8gZGVhZGxvY2sgb24gdGhlDQo+IHN1YnNjcmliZXIgYmVjYXVz ZSBQQSAocGFyYWxsZWwgYXBwbHkgd29ya2VyKSBpcyB3YWl0aW5nIGZvciBMQSB0byBzZW5kIHRo ZSBuZXh0DQo+IGNvbW1hbmQsIGFuZCBMQSBpcyBibG9ja2VkIGJ5IEV4Y2x1c2l2ZSBvZiBQQS4g VGhlcmUgaXMgbm8gZGVhZGxvY2sgb24gdGhlDQo+IHB1Ymxpc2hlciBiZWNhdXNlIHJvbGxiYWNr IHRvIHNhdmVwb2ludCB3aWxsIHJlbGVhc2UgdGhlIGxvY2sgYWNxdWlyZWQgYnkNCj4gdHJ1bmNh dGUuDQo+IA0KPiBUbyBzb2x2ZSB0aGlzLCBIb3cgYWJvdXQgaWYgd2UgZG8gdGhyZWUgdGhpbmdz IGJlZm9yZSBzZW5kaW5nIGFib3J0IG9mDQo+IHN1Yi10cmFuc2FjdGlvbiAoYSkgdW5sb2NrIHRo ZSBzdHJlYW0gbG9jaywgKGIpIGluY3JlbWVudCBwZW5kaW5nX3N0cmVhbV9jb3VudCwNCj4gKGMp IHRha2UgdGhlIHN0cmVhbSBsb2NrIGFnYWluPw0KPiANCj4gTm93LCBpZiB0aGUgUEEgaXMgbm90 IGFscmVhZHkgd2FpdGluZyBvbiB0aGUgc3RvcCwgaXQgd2lsbCBub3Qgd2FpdCBhdCBzdHJlYW1f c3RvcA0KPiBidXQgd2lsbCB3YWl0IGFmdGVyIGFwcGx5aW5nIGFib3J0IG9mIHN1Yi10cmFuc2Fj dGlvbiBhbmQgaWYgaXQgaXMgYWxyZWFkeSB3YWl0aW5nIGF0DQo+IHN0cmVhbV9zdG9wLCB0aGUg d2FpdCB3aWxsIGJlIHJlbGVhc2VkLiBJZiB0aGlzIHdvcmtzIHRoZW4gcHJvYmFibHkgd2Ugc2hv dWxkIHRyeQ0KPiB0byBkbyAoYikgYmVmb3JlIChhKSB0byBtYXRjaCB0aGUgc3RlcHMgd2l0aCBz dHJlYW1fc3RhcnQuDQoNClRoZSBzb2x1dGlvbiB3b3JrcyBmb3IgbWUsIEkgaGF2ZSBjaGFuZ2Vk IHRoZSBjb2RlIGFzIHN1Z2dlc3RlZC4NCg0KDQo+IDIuIFRoZXJlIHNlZW1zIHRvIGJlIGFub3Ro ZXIgZ2VuZXJhbCBwcm9ibGVtIGluIHRoZSB3YXkgdGhlIHBhdGNoIHdhaXRzIGZvcg0KPiBzdHJl YW1fc3RvcCBpbiBQQSAocGFyYWxsZWwgYXBwbHkgd29ya2VyKS4gQ3VycmVudGx5LCBQQSBjaGVj a3MsIGlmIHRoZXJlIGFyZSBubw0KPiBtb3JlIHBlbmRpbmcgc3RyZWFtcyB0aGVuIGl0IHRyaWVz IHRvIHdhaXQgZm9yIHRoZSBuZXh0IHN0cmVhbSBieSB3YWl0aW5nIG9uIGENCj4gc3RyZWFtIGxv Y2suIEhvd2V2ZXIsIGl0IGlzIHBvc3NpYmxlIGFmdGVyIFBBIGNoZWNrcyB0aGVyZSBpcyBubyBw ZW5kaW5nIHN0cmVhbQ0KPiBhbmQgYmVmb3JlIGl0IGFjdHVhbGx5IHN0YXJ0cyB3YWl0aW5nIG9u IGEgbG9jaywgdGhlIExBIHNlbmRzIGFub3RoZXIgc3RyZWFtIGZvcg0KPiB3aGljaCBldmVuIHN0 cmVhbV9zdG9wIGlzIHNlbnQsIGluIHRoaXMgY2FzZSwgUEEgd2lsbCBzdGFydCB3YWl0aW5nIGZv ciB0aGUgbmV4dA0KPiBzdHJlYW0gd2hlcmVhcyB0aGVyZSBpcyBhY3R1YWxseSBhIHBlbmRpbmcg c3RyZWFtIGF2YWlsYWJsZS4gSW4gdGhpcyBjYXNlLCBpdCB3b24ndA0KPiBsZWFkIHRvIGFueSBw cm9ibGVtIGFwYXJ0IGZyb20gZGVsYXkgaW4gYXBwbHlpbmcgdGhlIGNoYW5nZXMgaW4gc3VjaCBj YXNlcyBidXQNCj4gZm9yIHRoZSBjYXNlIG1lbnRpb25lZCBpbiB0aGUgcHJldmlvdXMgcG9pbnQg KFBvbnQgMSksIGl0IGNhbiBsZWFkIHRvIGRlYWRsb2NrDQo+IGV2ZW4gYWZ0ZXIgd2UgaW1wbGVt ZW50IHRoZSBzb2x1dGlvbiBwcm9wb3NlZCB0byBzb2x2ZSBpdC4NCg0KVGhhbmtzIGZvciByZXBv cnRpbmcsIEkgaGF2ZSBpbnRyb2R1Y2VkIGFub3RoZXIgZmxhZyBpbiBzaGFyZWQgbWVtb3J5IGFu ZCB1c2UgaXQgdG8NCnByZXZlbnQgdGhlIGxlYWRlciBmcm9tIGluY3JlbWVudGluZyB0aGUgcGVu ZGluZ19zdHJlYW1fY291bnQgaWYgdGhlIHBhcmFsbGVsDQphcHBseSB3b3JrZXIgaXMgdHJ5aW5n IHRvIGxvY2sgdGhlIHN0cmVhbSBsb2NrLg0KDQoNCj4gMy4gVGhlIG90aGVyIHBvaW50IHRvIGNv bnNpZGVyIGlzIHRoYXQgZm9yIHN0cmVhbV9jb21taXQvcHJlcGFyZS9hYm9ydCwgaW4gTEEsIHdl DQo+IHJlbGVhc2UgdGhlIHN0cmVhbSBsb2NrIGFmdGVyIHNlbmRpbmcgdGhlIG1lc3NhZ2Ugd2hl cmVhcyBmb3Igc3RyZWFtX3N0YXJ0IHdlDQo+IHJlbGVhc2UgaXQgYmVmb3JlIHNlbmRpbmcgdGhl IG1lc3NhZ2UuIEkgdGhpbmsgZm9yIHRoZSBlYXJsaWVyIGNhc2VzDQo+IChzdHJlYW1fY29tbWl0 L3ByZXBhcmUvYWJvcnQpLCB0aGUgcGF0Y2ggaGFzIGRvbmUgbGlrZSB0aGlzIGJlY2F1c2UNCj4g cGFfc2VuZF9kYXRhKCkgbWF5IG5lZWQgdG8gcmVxdWlyZSB0aGUgbG9jayBhZ2FpbiB3aGVuIGl0 IHRpbWVzIG91dCBhbmQgc3RhcnQNCj4gc2VyaWFsaXppbmcsIHNvIHRoZXJlIHdpbGwgYmUgbm8g c2Vuc2UgaW4gZmlyc3QgcmVsZWFzaW5nIGl0LCB0aGVuIHJlLWFjcXVpcmluZyBpdCwgYW5kDQo+ IHRoZW4gYWdhaW4gcmVsZWFzaW5nIGl0LiBDYW4ndCB3ZSBhbHNvIHJlbGVhc2UgdGhlIGxvY2sg Zm9yIHN0cmVhbV9zdGFydCBhZnRlcg0KPiBwYV9zZW5kX2RhdGEoKSBvbmx5IGlmIGl0IGlzIG5v dCBzd2l0Y2hlZCB0byBzZXJpYWxpemUgbW9kZT8NCg0KQ2hhbmdlZC4NCg0KQXR0YWNoIHRoZSBu ZXcgdmVyc2lvbiBwYXRjaCBzZXQgd2hpY2ggYWRkcmVzc2VkIGFib3ZlIGNvbW1lbnRzLg0KQmVz aWRlcywgdGhlIG5ldyB2ZXJzaW9uIHBhdGNoIHdpbGwgdHJ5IHRvIHN0b3AgZXh0cmEgcGFyYWxs ZWwgd29ya2VycyBpZiB1c2VyDQpzZXRzIHRoZSBtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19w ZXJfc3Vic2NyaXB0aW9uIHRvIGEgbG93ZXIgbnVtYmVyLg0KDQpCZXN0IHJlZ2FyZHMsDQpIb3Ug emoNCg== --_008_OS0PR01MB571663B4EC5D8BE749AACD98941E9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v59-0003-Test-streaming-parallel-option-in-tap-test.patch" Content-Description: v59-0003-Test-streaming-parallel-option-in-tap-test.patch Content-Disposition: attachment; filename="v59-0003-Test-streaming-parallel-option-in-tap-test.patch"; size=81989; creation-date="Sun, 11 Dec 2022 11:36:25 GMT"; modification-date="Sun, 11 Dec 2022 11:44:47 GMT" Content-Transfer-Encoding: base64 RnJvbSBiY2M5MTU1ZTBlMmU1Nzk5ZDFkOWVlNTFhODUzNWM1NTJlZTQwYTczIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAic2hpeS5mbnN0IiA8c2hpeS5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBGcmksIDEzIE1heSAyMDIyIDE0OjUwOjMwICswODAwClN1YmplY3Q6IFtQQVRDSCB2NTkg My83XSBUZXN0IHN0cmVhbWluZyBwYXJhbGxlbCBvcHRpb24gaW4gdGFwIHRlc3QKCkNoYW5nZSBh bGwgVEFQIHRlc3RzIHVzaW5nIHRoZSBTVUJTQ1JJUFRJT04gInN0cmVhbWluZyIgcGFyYW1ldGVy LCBzbyB0aGV5Cm5vdyB0ZXN0IGJvdGggJ29uJyBhbmQgJ3BhcmFsbGVsJyB2YWx1ZXMuCi0tLQog c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgfCAgIDEg Kwogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgICAgICAgfCAy MzIgKysrKysrLS0tCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3Qu cGwgICAgICB8IDE0MyArKysrLS0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1f ZGRsLnBsICAgICAgICAgIHwgMjIxICsrKysrKy0tLQogLi4uL3N1YnNjcmlwdGlvbi90LzAxOF9z dHJlYW1fc3VieGFjdF9hYm9ydC5wbCAgICAgfCAyMzMgKysrKysrLS0tCiAuLi4vc3Vic2NyaXB0 aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbCB8IDEzNCArKystLQogc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwgICAgfCAzOTMgKysrKysr KysrLS0tLS0tCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBs ICAgICB8IDU0MCArKysrKysrKysrKystLS0tLS0tLS0KIC4uLi9zdWJzY3JpcHRpb24vdC8wMzJf c3RyZWFtX3BhcmFsbGVsX2NvbmZsaWN0LnBsIHwgMTUyICsrKysrKwogOSBmaWxlcyBjaGFuZ2Vk LCAxNDA0IGluc2VydGlvbnMoKyksIDY0NSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtX3BhcmFsbGVsX2NvbmZsaWN0LnBs CgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkIGIvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkCmluZGV4IDg1ZDFkZDkuLmI5NTFkOTcgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vbWVzb24uYnVpbGQKQEAgLTM2LDYgKzM2LDcgQEAgdGVzdHMgKz0gewogICAg ICAgJ3QvMDI5X29uX2Vycm9yLnBsJywKICAgICAgICd0LzAzMF9vcmlnaW4ucGwnLAogICAgICAg J3QvMDMxX2NvbHVtbl9saXN0LnBsJywKKyAgICAgICd0LzAzMl9zdHJlYW1fcGFyYWxsZWxfY29u ZmxpY3QucGwnLAogICAgICAgJ3QvMTAwX2J1Z3MucGwnLAogICAgIF0sCiAgIH0sCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsIGIvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbAppbmRleCBjYmFhMzI3Li4zODk0MWZmIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCisrKyBiL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKQEAgLTgsNiArOCwxNDkgQEAgdXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2Ug VGVzdDo6TW9yZTsKIAorIyBDaGVjayB0aGUgbG9nIHRoYXQgdGhlIHN0cmVhbWVkIHRyYW5zYWN0 aW9uIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5CisjIHJlcG9ydGVkIGJ5IHBhcmFsbGVsIGFw cGx5IHdvcmtlci4KK3N1YiBjaGVja19wYXJhbGxlbF9sb2cKK3sKKwlteSAoJG5vZGVfc3Vic2Ny aWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAkdHlwZSkgPSBAXzsKKworCWlmICgkaXNfcGFy YWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJCQlxci9ERUJV RzogKCBbQS1aMC05XSs6KT8gZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgU1RSRUFNICR0eXBlIGNv bW1hbmQvLAorCQkJJG9mZnNldCk7CisJfQorfQorCisjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29t bW9uIHRlc3Qgc3RlcHMgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIKKyMgcGFyYW1l dGVyIHNvIHRoZSBzYW1lIGNvZGUgY2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9u IGFuZAorIyBzdHJlYW1pbmc9cGFyYWxsZWwgY2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sK KwlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3Bh cmFsbGVsKSA9IEBfOworCisJIyBJbnRlcmxlYXZlIGEgcGFpciBvZiB0cmFuc2FjdGlvbnMsIGVh Y2ggZXhjZWVkaW5nIHRoZSA2NGtCIGxpbWl0LgorCW15ICRpbiAgPSAnJzsKKwlteSAkb3V0ID0g Jyc7CisKKwlteSAkb2Zmc2V0ID0gMDsKKworCW15ICR0aW1lciA9IElQQzo6UnVuOjp0aW1lb3V0 KCRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0KTsKKworCW15ICRoID0g JG5vZGVfcHVibGlzaGVyLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgXCRpbiwgXCRvdXQs ICR0aW1lciwKKwkJb25fZXJyb3Jfc3RvcCA9PiAwKTsKKworCSMgSWYgInN0cmVhbWluZyIgcGFy YW1ldGVyIGlzIHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLCB3ZSBuZWVkIHRvIGNoZWNrCisJIyB0 aGF0IHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBhcHBsaWVkIHVzaW5nIGEgcGFyYWxsZWwgYXBw bHkgd29ya2VyLgorCSMgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdl cyBhYm91dCB0aGF0LCBzbyBidW1wIHVwIHRoZQorCSMgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlz X3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVz cWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9zdWJz Y3JpYmVyLT5yZWxvYWQ7CisJfQorCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBu b3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkkaW4g Lj0gcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFi IFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3Rh YiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJfTsKKwkkaC0+cHVtcF9uYjsKKworCSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAw MSwgOTk5OSkgcyhpKTsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gNTAwMDsKKwlD T01NSVQ7CisJfSk7CisKKwkkaW4gLj0gcXsKKwlDT01NSVQ7CisJXHEKKwl9OworCSRoLT5maW5p c2g7ICAgICMgZXJyb3JzIG1ha2UgdGhlIG5leHQgdGVzdCBmYWlsLCBzbyBpZ25vcmUgdGhlbSBo ZXJlCisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJ Y2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxl bCwgJ0NPTU1JVCcpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQg PSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCks CisJCSdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsKKworCSMg VGVzdCB0aGUgc3RyZWFtaW5nIGluIGJpbmFyeSBtb2RlCisJJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQgKGJp bmFyeSA9IG9uKSIpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24u CisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIEluc2VydCwg dXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0Lgor CSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOwor CUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoNTAwMSwgMTAwMDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1 KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2Qo YSwzKSA9IDA7CisJQ09NTUlUOworCX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVy LCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdDT01NSVQnKTsKKworCSRyZXN1bHQgPQorCSAgJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiks IGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwg cXEoNjY2N3w2NjY3fDY2NjcpLAorCQknY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2Fs IGRlZmF1bHRzJyk7CisKKwkjIENoYW5nZSB0aGUgbG9jYWwgdmFsdWVzIG9mIHRoZSBleHRyYSBj b2x1bW5zIG9uIHRoZSBzdWJzY3JpYmVyLAorCSMgdXBkYXRlIHB1Ymxpc2hlciwgYW5kIGNoZWNr IHRoYXQgc3Vic2NyaWJlciByZXRhaW5zIHRoZSBleHBlY3RlZAorCSMgdmFsdWVzLiBUaGlzIGlz IHRvIGVuc3VyZSB0aGF0IG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rpb25zIGJlaGF2ZQorCSMgcHJv cGVybHkgYWZ0ZXIgYSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uCisJJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJVUERBVEUgdGVzdF90YWIgU0VUIGMgPSAnZXBvY2gn Ojp0aW1lc3RhbXB0eiArIDk4NzY1NDMyMSAqIGludGVydmFsICcxcyciCisJKTsKKworCSMgQ2hl Y2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9z dWJzY3JpYmVyLT5sb2dmaWxlOworCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIlVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShhOjp0ZXh0KSIpOworCisJJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFs bGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdDT01NSVQn KTsKKworCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoZXh0cmFjdChlcG9jaCBmcm9tIGMpID0gOTg3NjU0 MzIxKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIKKwkpOworCWlzKCRyZXN1bHQsIHFx KDY2Njd8NjY2N3w2NjY3KSwKKwkJJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbGx5 IGNoYW5nZWQgZGF0YScpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hF UkUgKGEgPiAyKSIpOworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7CisKKwkjIFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJ eworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJ CSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxv YWQ7CisJfQorfQorCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVy ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1 Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CkBAIC0zNyw2ICsx ODAsMTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRF IFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1l ID0gJ3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0 IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNV QlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNh dGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9 IG9uKSIKICk7CkBAIC00OSw4MiArMTk2LDI1IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291 bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVz dWx0LCBxcSgyfDJ8MiksICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3Jp YmVyJyk7CiAKLSMgSW50ZXJsZWF2ZSBhIHBhaXIgb2YgdHJhbnNhY3Rpb25zLCBlYWNoIGV4Y2Vl ZGluZyB0aGUgNjRrQiBsaW1pdC4KLW15ICRpbiAgPSAnJzsKLW15ICRvdXQgPSAnJzsKLQotbXkg JHRpbWVyID0gSVBDOjpSdW46OnRpbWVvdXQoJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1l b3V0X2RlZmF1bHQpOwotCi1teSAkaCA9ICRub2RlX3B1Ymxpc2hlci0+YmFja2dyb3VuZF9wc3Fs KCdwb3N0Z3JlcycsIFwkaW4sIFwkb3V0LCAkdGltZXIsCi0Jb25fZXJyb3Jfc3RvcCA9PiAwKTsK LQotJGluIC49IHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLVVQREFURSB0ZXN0 X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0 X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci19OwotJGgtPnB1bXBfbmI7Ci0KLSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSwg OTk5OSkgcyhpKTsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiA1MDAwOwotQ09NTUlU OwotfSk7Ci0KLSRpbiAuPSBxewotQ09NTUlUOwotXHEKLX07Ci0kaC0+ZmluaXNoOyAgICAjIGVy cm9ycyBtYWtlIHRoZSBuZXh0IHRlc3QgZmFpbCwgc28gaWdub3JlIHRoZW0gaGVyZQotCi0kbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAg JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgq KSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQs IHFxKDMzMzR8MzMzNHwzMzM0KSwgJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBk ZWZhdWx0cycpOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3Jp YmVyLCAkYXBwbmFtZSwgMCk7CiAKLSMgVGVzdCB0aGUgc3RyZWFtaW5nIGluIGJpbmFyeSBtb2Rl Ci0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgU1VCU0NS SVBUSU9OIHRhcF9zdWIgU0VUIChiaW5hcnkgPSBvbikiKTsKLQotIyBJbnNlcnQsIHVwZGF0ZSBh bmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAw MSwgMTAwMDApIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9k KGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotQ09N TUlUOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7 Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK LQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3Rh YiIpOwotaXMoJHJlc3VsdCwgcXEoNjY2N3w2NjY3fDY2NjcpLCAnY2hlY2sgZXh0cmEgY29sdW1u cyBjb250YWluIGxvY2FsIGRlZmF1bHRzJyk7CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRf cmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRl ID0gJ3N0cmVhbWluZyc7IgorKTsKIAotIyBDaGFuZ2UgdGhlIGxvY2FsIHZhbHVlcyBvZiB0aGUg ZXh0cmEgY29sdW1ucyBvbiB0aGUgc3Vic2NyaWJlciwKLSMgdXBkYXRlIHB1Ymxpc2hlciwgYW5k IGNoZWNrIHRoYXQgc3Vic2NyaWJlciByZXRhaW5zIHRoZSBleHBlY3RlZAotIyB2YWx1ZXMuIFRo aXMgaXMgdG8gZW5zdXJlIHRoYXQgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMgYmVoYXZlCi0j IHByb3Blcmx5IGFmdGVyIGEgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLgogJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlVQREFURSB0ZXN0X3RhYiBTRVQgYyA9ICdlcG9j aCc6OnRpbWVzdGFtcHR6ICsgOTg3NjU0MzIxICogaW50ZXJ2YWwgJzFzJyIKLSk7Ci0kbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJVUERBVEUgdGVzdF90YWIgU0VUIGIg PSBtZDUoYTo6dGV4dCkiKTsKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVh bWluZyA9IHBhcmFsbGVsLCBiaW5hcnkgPSBvZmYpIik7CiAKLSRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ciskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50 aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBs aWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAn c3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBm b3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOwogCi0kcmVz dWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBj b3VudCgqKSwgY291bnQoZXh0cmFjdChlcG9jaCBmcm9tIGMpID0gOTg3NjU0MzIxKSwgY291bnQo ZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIKLSk7Ci1pcygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2 NyksCi0JJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbGx5IGNoYW5nZWQgZGF0YScp OwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBw bmFtZSwgMSk7CiAKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0 b3A7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1Ynhh Y3QucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwKaW5k ZXggYmMwYTljZC4uMzZhMTgwMyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3Qv 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 bAppbmRleCA4NjZmMTUxLi41ZTcxNjgyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMTdfc3RyZWFtX2RkbC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTdf c3RyZWFtX2RkbC5wbApAQCAtOCw2ICs4LDEzOCBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1 c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCisj IENoZWNrIHRoZSBsb2cgdGhhdCB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGNvbXBsZXRl ZCBzdWNjZXNzZnVsbHkKKyMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorc3Vi IGNoZWNrX3BhcmFsbGVsX2xvZworeworCW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAk aXNfcGFyYWxsZWwsICR0eXBlKSA9IEBfOworCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRu b2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwkJCXFyL0RFQlVHOiAoIFtBLVowLTldKzop PyBmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSBTVFJFQU0gJHR5cGUgY29tbWFuZC8sCisJCQkkb2Zm c2V0KTsKKwl9Cit9CisKKyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3 aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgorIyBwYXJhbWV0ZXIgc28gdGhlIHNhbWUg Y29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kCisjIHN0cmVhbWlu Zz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9kZV9wdWJs aXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87CisK KwlteSAkb2Zmc2V0ID0gMDsKKworCSMgYSBzbWFsbCAobm9uLXN0cmVhbWVkKSB0cmFuc2FjdGlv biB3aXRoIERETCBhbmQgRE1MCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0 Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgzLCBtZDUo Mzo6dGV4dCkpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gYyBJTlQ7CisJU0FW RVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoNCwgbWQ1KDQ6OnRleHQp LCAtNCk7CisJQ09NTUlUOworCX0pOworCisJIyBJZiAic3RyZWFtaW5nIiBwYXJhbWV0ZXIgaXMg c3BlY2lmaWVkIGFzICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8gY2hlY2sKKwkjIHRoYXQgc3RyZWFt ZWQgdHJhbnNhY3Rpb24gd2FzIGFwcGxpZWQgdXNpbmcgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIu CisJIyBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0IHRo YXQsIHNvIGJ1bXAgdXAgdGhlCisJIyBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwp CisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywK KwkJCSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJl bG9hZDsKKwl9CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkk b2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgbGFyZ2UgKHN0cmVh bWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCisJJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNSwgMTAwMCkg cyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGQgSU5UOworCVNBVkVQT0lO VCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwg MippIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEsIDIwMDApIHMoaSk7CisJQ09NTUlUOworCX0p OworCisJIyBhIHNtYWxsIChub24tc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBE TUwKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJ TjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDIwMDEsIG1kNSgyMDAxOjp0ZXh0KSwg LTIwMDEsIDIqMjAwMSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBlIElOVDsK KwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgyMDAyLCBtZDUo MjAwMjo6dGV4dCksIC0yMDAyLCAyKjIwMDIsIC0zKjIwMDIpOworCUNPTU1JVDsKKwl9KTsKKwor CSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19w YXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnQ09N TUlUJyk7CisKKwlteSAkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCksIGNvdW50 KGUpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgyMDAyfDE5OTl8MTAwMnwxKSwK KwkJJ2NoZWNrIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyIGluIHN0cmVhbWluZyBtb2Rl IGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSMgQ2hl Y2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9z dWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBBIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24g d2l0aCBEREwgYW5kIERNTC4gT25lIG9mIHRoZSBEREwgaXMgcGVyZm9ybWVkCisJIyBhZnRlciBE TUwgdG8gZW5zdXJlIHRoYXQgd2UgaW52YWxpZGF0ZSB0aGUgc2NoZW1hIHNlbnQgZm9yIHRlc3Rf dGFiIHNvIHRoYXQKKwkjIHRoZSBuZXh0IHRyYW5zYWN0aW9uIGhhcyB0byBzZW5kIHRoZSBzY2hl bWEgYWdhaW4uCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7 CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwg LWksIDIqaSwgLTMqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAzLDUwMDApIHMoaSk7CisJQUxU RVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBmIElOVDsKKwlDT01NSVQ7CisJfSk7CisKKwkj IEEgc21hbGwgdHJhbnNhY3Rpb24gdGhhdCB3b24ndCBnZXQgc3RyZWFtZWQuIFRoaXMgaXMganVz dCB0byBlbnN1cmUgdGhhdCB3ZQorCSMgc2VuZCB0aGUgc2NoZW1hIGFnYWluIHRvIHJlZmxlY3Qg dGhlIGxhc3QgY29sdW1uIGFkZGVkIGluIHRoZSBwcmV2aW91cyB0ZXN0LgorCSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmksIC0zKmksIDQqaSBGUk9N IGdlbmVyYXRlX3Nlcmllcyg1MDAxLDUwMDUpIHMoaSk7CisJQ09NTUlUOworCX0pOworCisJJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFs bGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdDT01NSVQn KTsKKworCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQpLCBjb3VudChlKSwgY291bnQo ZikgRlJPTSB0ZXN0X3RhYiIKKwkpOworCWlzKCRyZXN1bHQsIHFxKDUwMDV8NTAwMnw0MDA1fDMw MDR8NSksCisJCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBmb3IgYm90aCBz dHJlYW1pbmcgYW5kIG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rpb25zJworCSk7CisKKwkjIENsZWFu dXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdy ZXMnLCBxeworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMik7CisJQUxURVIgVEFC TEUgdGVzdF90YWIgRFJPUCBDT0xVTU4gYywgRFJPUCBDT0xVTU4gZCwgRFJPUCBDT0xVTU4gZSwg RFJPUCBDT0xVTU4gZjsKKwl9KTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOworCisJIyBSZXNldCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFs bGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29u ZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vic2NyaWJl ci0+cmVsb2FkOworCX0KK30KKwogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRub2RlX3B1 Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiAk bm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwpAQCAt MzcsNiArMTY5LDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJ IkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAk YXBwbmFtZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNS RUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIg YXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChzdHJl YW1pbmcgPSBvbikiCiApOwpAQCAtNDksNzcgKzE4NSwyNiBAQCBteSAkcmVzdWx0ID0KIAkiU0VM RUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwog aXMoJHJlc3VsdCwgcXEoMnwwfDApLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8g c3Vic2NyaWJlcicpOwogCi0jIGEgc21hbGwgKG5vbi1zdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0 aCBEREwgYW5kIERNTAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywg cXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgzLCBtZDUoMzo6dGV4dCkp OwotQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBjIElOVDsKLVNBVkVQT0lOVCBzMTsK LUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoNCwgbWQ1KDQ6OnRleHQpLCAtNCk7Ci1DT01N SVQ7Ci19KTsKLQotIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBE TUwKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsK LUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDUsIDEwMDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09M VU1OIGQgSU5UOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSwgLWksIDIqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLCAyMDAwKSBz KGkpOwotQ09NTUlUOwotfSk7Ci0KLSMgYSBzbWFsbCAobm9uLXN0cmVhbWVkKSB0cmFuc2FjdGlv biB3aXRoIERETCBhbmQgRE1MCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdy ZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDIwMDEsIG1kNSgy MDAxOjp0ZXh0KSwgLTIwMDEsIDIqMjAwMSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09M VU1OIGUgSU5UOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgy MDAyLCBtZDUoMjAwMjo6dGV4dCksIC0yMDAyLCAyKjIwMDIsIC0zKjIwMDIpOwotQ09NTUlUOwot fSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRy ZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VM RUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCksIGNvdW50KGUpIEZST00gdGVzdF90YWIi KTsKLWlzKCRyZXN1bHQsIHFxKDIwMDJ8MTk5OXwxMDAyfDEpLAotCSdjaGVjayBkYXRhIHdhcyBj b3BpZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEgY29sdW1ucyBj b250YWluIGxvY2FsIGRlZmF1bHRzJwotKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hl ciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwogCi0jIEEgbGFyZ2UgKHN0cmVhbWVk KSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MLiBPbmUgb2YgdGhlIERETCBpcyBwZXJmb3Jt ZWQKLSMgYWZ0ZXIgRE1MIHRvIGVuc3VyZSB0aGF0IHdlIGludmFsaWRhdGUgdGhlIHNjaGVtYSBz ZW50IGZvciB0ZXN0X3RhYiBzbyB0aGF0Ci0jIHRoZSBuZXh0IHRyYW5zYWN0aW9uIGhhcyB0byBz ZW5kIHRoZSBzY2hlbWEgYWdhaW4uCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9z dGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpLCAtaSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDMsNTAwMCkgcyhp KTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZiBJTlQ7Ci1DT01NSVQ7Ci19KTsK LQotIyBBIHNtYWxsIHRyYW5zYWN0aW9uIHRoYXQgd29uJ3QgZ2V0IHN0cmVhbWVkLiBUaGlzIGlz IGp1c3QgdG8gZW5zdXJlIHRoYXQgd2UKLSMgc2VuZCB0aGUgc2NoZW1hIGFnYWluIHRvIHJlZmxl Y3QgdGhlIGxhc3QgY29sdW1uIGFkZGVkIGluIHRoZSBwcmV2aW91cyB0ZXN0LgotJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSwgLTMqaSwgNCppIEZST00g Z2VuZXJhdGVfc2VyaWVzKDUwMDEsNTAwNSkgcyhpKTsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwg Y291bnQoYyksIGNvdW50KGQpLCBjb3VudChlKSwgY291bnQoZikgRlJPTSB0ZXN0X3RhYiIpOwot aXMoJHJlc3VsdCwgcXEoNTAwNXw1MDAyfDQwMDV8MzAwNHw1KSwKLQknY2hlY2sgZGF0YSB3YXMg Y29waWVkIHRvIHN1YnNjcmliZXIgZm9yIGJvdGggc3RyZWFtaW5nIGFuZCBub24tc3RyZWFtaW5n IHRyYW5zYWN0aW9ucycKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj IFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJworIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBX SEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5n JzsiCiApOwogCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxU RVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIpOworCisk bm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBp ZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9u YW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGll CisgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBj aGFuZ2luZyBTVUJTQ1JJUFRJT04iOworCit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIs ICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsKKwogJG5vZGVfc3Vic2NyaWJlci0+c3Rv cDsKICRub2RlX3B1Ymxpc2hlci0+c3RvcDsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsCmluZGV4IDU1MWYxNmQuLmI0MDRmZWQg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9h Ym9ydC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMThfc3RyZWFtX3N1YnhhY3Rf YWJvcnQucGwKQEAgLTgsNiArOCwxNDUgQEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7 CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBDaGVj ayB0aGUgbG9nIHRoYXQgdGhlIHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBjb21wbGV0ZWQgc3Vj Y2Vzc2Z1bGx5CisjIHJlcG9ydGVkIGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KK3N1YiBjaGVj a19wYXJhbGxlbF9sb2cKK3sKKwlteSAoJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3Bh cmFsbGVsLCAkdHlwZSkgPSBAXzsKKworCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9z dWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJCQlxci9ERUJVRzogKCBbQS1aMC05XSs6KT8gZmlu aXNoZWQgcHJvY2Vzc2luZyB0aGUgU1RSRUFNICR0eXBlIGNvbW1hbmQvLAorCQkJJG9mZnNldCk7 CisJfQorfQorCisjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2gg YXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIKKyMgcGFyYW1ldGVyIHNvIHRoZSBzYW1lIGNvZGUg Y2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZAorIyBzdHJlYW1pbmc9cGFy YWxsZWwgY2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVfcHVibGlzaGVy LCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFsbGVsKSA9IEBfOworCisJbXkg JG9mZnNldCA9IDA7CisKKwkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcyBzcGVjaWZpZWQg YXMgInBhcmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjaworCSMgdGhhdCBzdHJlYW1lZCB0cmFuc2Fj dGlvbiB3YXMgYXBwbGllZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkjIFdlIGhh dmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwgc28gYnVt cCB1cCB0aGUKKwkjIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRu b2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19t aW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0K KworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAt cyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5z YWN0aW9uIHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNLcworCSRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMyw1MDApIHMoaSk7 CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6 dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7CisJU0FWRVBPSU5UIHMy OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMTAwMSwxNTAwKSBzKGkpOworCVNBVkVQT0lOVCBzMzsKKwlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDE1 MDEsMjAwMCkgcyhpKTsKKwlST0xMQkFDSyBUTyBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBT RUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDEsMjUwMCkgcyhp KTsKKwlST0xMQkFDSyBUTyBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDI1MDEsMzAwMCkgcyhpKTsKKwlTQVZFUE9J TlQgczQ7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3NlcmllcygzMDAxLDM1MDApIHMoaSk7CisJU0FWRVBPSU5UIHM1OworCUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMzUwMSw0MDAwKSBzKGkpOworCUNPTU1JVDsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVf c3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnQ09NTUlUJyk7CisKKwlteSAkcmVz dWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VM RUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEo MjAwMHwwKSwKKwkJJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9u IHN1YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkp OworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9 IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIGxhcmdlIChzdHJlYW1lZCkgdHJh bnNhY3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyBvdXQgb2Ygb3JkZXIKKwkjIHN1YnRy YW5zYWN0aW9uIFJPTExCQUNLcworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9z dGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNDAwMSw0NTAwKSBzKGkpOworCVNBVkVQT0lO VCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDUwMDEsNTUwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczI7CisJSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cyg2MDAxLDY1MDApIHMoaSk7CisJU0FWRVBPSU5UIHMzOworCUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNzAwMSw3NTAwKSBz KGkpOworCVJFTEVBU0UgczI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg4MDAxLDg1MDApIHMoaSk7CisJUk9MTEJBQ0sg VE8gczE7CisJQ09NTUlUOworCX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAk b2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdDT01NSVQnKTsKKworCSRyZXN1bHQgPQorCSAgJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNv dW50KGMpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgyNTAwfDApLAorCQknY2hl Y2sgcm9sbGJhY2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlcicpOwor CisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1z ICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNh Y3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyByb2xsYmFjaworCSRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoODUwMSw5 MDAwKSBzKGkpOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1Qg aSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDkwMDEsOTUwMCkgcyhpKTsKKwlT QVZFUE9JTlQgczI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0 KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg5NTAxLDEwMDAwKSBzKGkpOworCVJPTExCQUNLOworCX0p OworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNo ZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWws ICdBQk9SVCcpOworCisJJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIp OworCWlzKCRyZXN1bHQsIHFxKDI1MDB8MCksICdjaGVjayByb2xsYmFjayB3YXMgcmVmbGVjdGVk IG9uIHN1YnNjcmliZXInKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdI RVJFIChhID4gMikiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOworCisJIyBSZXNldCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQor CXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJ CQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVs b2FkOworCX0KK30KKwogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRub2RlX3B1Ymxpc2hl ciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiAkbm9kZV9w dWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwpAQCAtMzYsNiAr MTc1LDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFU RSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFt ZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVz dCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBT VUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGlj YXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcg PSBvbikiCiApOwpAQCAtNDgsODEgKzE5MSwyNSBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNv dW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDApLCAn Y2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi0jIGxhcmdl IChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwsIERNTCBhbmQgUk9MTEJBQ0tzCi0kbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDMsNTAwKSBzKGkpOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKLVNB VkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwxNTAwKSBzKGkpOwotU0FWRVBPSU5UIHMzOwotSU5T RVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nl cmllcygxNTAxLDIwMDApIHMoaSk7Ci1ST0xMQkFDSyBUTyBzMjsKLUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjAwMSwyNTAw KSBzKGkpOwotUk9MTEJBQ0sgVE8gczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwg bWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDI1MDEsMzAwMCkgcyhpKTsKLVNBVkVQ T0lOVCBzNDsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMzAwMSwzNTAwKSBzKGkpOwotU0FWRVBPSU5UIHM1OwotSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cygzNTAxLDQwMDApIHMoaSk7Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00g dGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDIwMDB8MCksCi0JJ2NoZWNrIHJvbGxiYWNrIHRv IHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMg Y29udGFpbiBsb2NhbCBkZWZhdWx0cycKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwg JG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBn X3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5E IHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAotIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0 aW9uIHdpdGggc3Vic2NyaWJlciByZWNlaXZpbmcgb3V0IG9mIG9yZGVyCi0jIHN1YnRyYW5zYWN0 aW9uIFJPTExCQUNLcwotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywg cXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3Nlcmllcyg0MDAxLDQ1MDApIHMoaSk7Ci1TQVZFUE9JTlQgczE7Ci1JTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDUwMDEsNTUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNjAwMSw2NTAwKSBz KGkpOwotU0FWRVBPSU5UIHMzOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg3MDAxLDc1MDApIHMoaSk7Ci1SRUxFQVNFIHMy OwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVy YXRlX3Nlcmllcyg4MDAxLDg1MDApIHMoaSk7Ci1ST0xMQkFDSyBUTyBzMTsKLUNPTU1JVDsKLX0p OwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVz dWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVD VCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMjUw MHwwKSwKLQknY2hlY2sgcm9sbGJhY2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vi c2NyaWJlcicpOwotCi0jIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBzdWJzY3Jp YmVyIHJlY2VpdmluZyByb2xsYmFjawotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bv c3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg4NTAxLDkwMDApIHMoaSk7Ci1TQVZFUE9JTlQg czE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDkwMDEsOTUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoOTUw MSwxMDAwMCkgcyhpKTsKLVJPTExCQUNLOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRl c3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgyNTAwfDApLCAnY2hlY2sgcm9sbGJhY2sgd2FzIHJl ZmxlY3RlZCBvbiBzdWJzY3JpYmVyJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBh cmFsbGVsKSIpOworCiskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVz JywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVS RSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsi CisgICkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8g cmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOworCit0ZXN0X3N0cmVhbWluZygk bm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsKIAogJG5vZGVf c3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3RvcDsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxfYWJvcnQucGwgYi9z cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsCmlu ZGV4IDRkN2RhODIuLmMwNWQ4ODIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxfYWJvcnQucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbApAQCAtOSw2ICs5LDkxIEBAIHVz ZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxz OwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0 cmFuc2FjdGlvbiB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBieSBwYXJh bGxlbCBhcHBseSB3b3JrZXIuCitzdWIgY2hlY2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2Rl X3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJHR5cGUpID0gQF87CisKKwlpZiAo JGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCQkJ cXIvREVCVUc6ICggW0EtWjAtOV0rOik/IGZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIFNUUkVBTSAk dHlwZSBjb21tYW5kLywKKwkJCSRvZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1bGF0ZSBhbGwg dGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCisj IHBhcmFtZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVh bWluZz1vbiBhbmQKKyMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFt aW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUs ICRpc19wYXJhbGxlbCkgPSBAXzsKKworCW15ICRvZmZzZXQgPSAwOworCisJIyBJZiAic3RyZWFt aW5nIiBwYXJhbWV0ZXIgaXMgc3BlY2lmaWVkIGFzICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8gY2hl Y2sKKwkjIHRoYXQgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGFwcGxpZWQgdXNpbmcgYSBwYXJh bGxlbCBhcHBseSB3b3JrZXIuCisJIyBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9n IG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNvIGJ1bXAgdXAgdGhlCisJIyBsb2cgdmVyYm9zaXR5Lgor CWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZign cG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRu b2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxv ZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsK KworCSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBST0xM QkFDS3MKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlC RUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDMsNTAwKSBzKGkpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBD T0xVTU4gYyBJTlQ7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCksIC1pIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMSwxMDAwKSBzKGkp OworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZCBJTlQ7CisJU0FWRVBPSU5UIHMy OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwxNTAwKSBzKGkpOworCUFMVEVSIFRBQkxFIHRlc3Rf dGFiIEFERCBDT0xVTU4gZSBJTlQ7CisJU0FWRVBPSU5UIHMzOworCUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmksIC0zKmkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMTUwMSwyMDAwKSBzKGkpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIERST1AgQ09MVU1O IGM7CisJUk9MTEJBQ0sgVE8gczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSwgaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKKwlDT01N SVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19w YXJhbGxlbCwgJ0NPTU1JVCcpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJP TSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDEwMDB8NTAwKSwKKwkJJ2NoZWNrIHJvbGxi YWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5kIGV4dHJhIGNv bHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0 IGRhdGEKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlE RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFi IERST1AgQ09MVU1OIGM7CisJfSk7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKKworCSMgUmVzZXQgdGhlIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJh bGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNv bmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmli ZXItPnJlbG9hZDsKKwl9Cit9CisKICMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCiBteSAkbm9kZV9w dWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwog JG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAg LTM3LDYgKzEyMiwxMCBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAog CSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKIAogbXkg JGFwcG5hbWUgPSAndGFwX3N1Yic7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJD UkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3Ry IGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJQ0FUSU9OIHRhcF9wdWIgV0lUSCAoc3Ry ZWFtaW5nID0gb24pIgogKTsKQEAgLTQ5LDM1ICsxMzgsMjYgQEAgbXkgJHJlc3VsdCA9CiAJIlNF TEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEo MnwwKSwgJ2NoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAot IyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNL cwotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwot SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRl X3NlcmllcygzLDUwMCkgcyhpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gYyBJ TlQ7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpLCAtaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKLUFMVEVSIFRB QkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZCBJTlQ7Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEwMDEsMTUwMCkgcyhpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4g ZSBJTlQ7Ci1TQVZFUE9JTlQgczM7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpLCAtaSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDE1MDEsMjAwMCkg cyhpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIERST1AgQ09MVU1OIGM7Ci1ST0xMQkFDSyBUTyBz MTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIGkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNv dW50KGMpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDEwMDB8NTAwKSwKLQknY2hl Y2sgcm9sbGJhY2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlciBhbmQg ZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwordGVzdF9zdHJlYW1pbmcoJG5v ZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7CisKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1v ZGUgJ3BhcmFsbGVsJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK215 ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxF Q1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0g JyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwogCiskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIg U0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIpOworCiskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVl cnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3Rh dF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3Rh dGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2Fp dGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOwor Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBu YW1lLCAxKTsKKwogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3Rv cDsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nh c2NhZGUucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5w bAppbmRleCA3YTc5N2YzLi40OTAyMjYzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbApAQCAtMTEsNiArMTEsMjM4IEBAIHVzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRl c3Q6Ok1vcmU7CiAKKyMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlv biB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBs eSB3b3JrZXIuCitzdWIgY2hlY2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmli ZXIsICRvZmZzZXQsICRzdHJlYW1pbmdfbW9kZSwgJHR5cGUpID0gQF87CisKKwlpZiAoJHN0cmVh bWluZ19tb2RlIGVxICdwYXJhbGxlbCcpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zv cl9sb2coCisJCQlxci9ERUJVRzogKCBbQS1aMC05XSs6KT8gZmluaXNoZWQgcHJvY2Vzc2luZyB0 aGUgU1RSRUFNICR0eXBlIGNvbW1hbmQvLAorCQkJJG9mZnNldCk7CisJfQorfQorCisjIEVuY2Fw c3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0 cmVhbWluZyIgcGFyYW1ldGVyCisjIHNvIHRoZSBzYW1lIGNvZGUgY2FuIGJlIHJ1biBib3RoIGZv ciB0aGUgc3RyZWFtaW5nPW9uIGFuZCBzdHJlYW1pbmc9cGFyYWxsZWwKKyMgY2FzZXMuCitzdWIg dGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVfQSwgJG5vZGVfQiwgJG5vZGVfQywgJGFwcG5h bWVfQiwgJGFwcG5hbWVfQywgJHN0cmVhbWluZ19tb2RlKSA9CisJICBAXzsKKworCW15ICRvZmZz ZXRfQiA9IDA7CisJbXkgJG9mZnNldF9DID0gMDsKKworCW15ICRvbGRwaWRfQiA9ICRub2RlX0Et PnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9y ZXBsaWNhdGlvbgorCQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lX0InIEFORCBz dGF0ZSA9ICdzdHJlYW1pbmcnOyIpOworCW15ICRvbGRwaWRfQyA9ICRub2RlX0ItPnNhZmVfcHNx bCgKKwkJJ3Bvc3RncmVzJywgIgorCQlTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlv bgorCQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lX0MnIEFORCBzdGF0ZSA9ICdz dHJlYW1pbmcnOyIpOworCisJIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uIHN0cmVhbWluZyBt b2RlCisKKwkkbm9kZV9CLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsICIKKwkJQUxURVIgU1VC U0NSSVBUSU9OIHRhcF9zdWJfQgorCQlTRVQgKHN0cmVhbWluZyA9ICRzdHJlYW1pbmdfbW9kZSk7 Iik7CisJJG5vZGVfQy0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCAiCisJCUFMVEVSIFNVQlND UklQVElPTiB0YXBfc3ViX0MKKwkJU0VUIChzdHJlYW1pbmcgPSAkc3RyZWFtaW5nX21vZGUpIik7 CisKKwkjIFdhaXQgZm9yIHN1YnNjcmliZXJzIHRvIGZpbmlzaCBpbml0aWFsaXphdGlvbgorCisJ JG5vZGVfQS0+cG9sbF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlTRUxFQ1QgcGlk ICE9ICRvbGRwaWRfQiBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUgYXBwbGljYXRp b25fbmFtZSA9ICckYXBwbmFtZV9CJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisJKSBvciBk aWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IjsKKwkkbm9k ZV9CLT5wb2xsX3F1ZXJ5X3VudGlsKAorCQkncG9zdGdyZXMnLCAiCisJCVNFTEVDVCBwaWQgIT0g JG9sZHBpZF9DIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbgorCQlXSEVSRSBhcHBsaWNhdGlvbl9u YW1lID0gJyRhcHBuYW1lX0MnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKwkpIG9yIGRpZSAi VGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQiOworCisJIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgVGVzdCAyUEMgUFJFUEFSRSAvIENPTU1JVCBQ UkVQQVJFRC4KKwkjIDEuIERhdGEgaXMgc3RyZWFtZWQgYXMgYSAyUEMgdHJhbnNhY3Rpb24uCisJ IyAyLiBUaGVuIGRvIGNvbW1pdCBwcmVwYXJlZC4KKwkjCisJIyBFeHBlY3QgYWxsIGRhdGEgaXMg cmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyKHMpIGFmdGVyIHRoZSBjb21taXQuCisJIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBJZiAic3RyZWFtaW5nIiBwYXJhbWV0ZXIgaXMg c3BlY2lmaWVkIGFzICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8gY2hlY2sKKwkjIHRoYXQgc3RyZWFt ZWQgdHJhbnNhY3Rpb24gd2FzIHByZXBhcmVkIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2Vy LgorCSMgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0 aGF0LCBzbyBidW1wIHVwIHRoZQorCSMgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJHN0cmVhbWluZ19t b2RlIGVxICdwYXJhbGxlbCcpCisJeworCQkkbm9kZV9CLT5hcHBlbmRfY29uZigncG9zdGdyZXNx bC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKwkJJG5vZGVfQi0+cmVsb2Fk OworCisJCSRub2RlX0MtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9t ZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9DLT5yZWxvYWQ7CisJfQorCisJIyBDaGVjayB0 aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldF9CID0gLXMgJG5vZGVfQi0+ bG9nZmlsZTsKKwkkb2Zmc2V0X0MgPSAtcyAkbm9kZV9DLT5sb2dmaWxlOworCisJIyBJbnNlcnQs IHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4K KwkjIFRoZW4gMlBDIFBSRVBBUkUKKwkkbm9kZV9BLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jlcycs IHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3Rh YiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3Rf dGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVw YXJlZF90YWInO30pOworCisJJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsK Kwkkbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOworCisJY2hlY2tfcGFyYWxs ZWxfbG9nKCRub2RlX0IsICRvZmZzZXRfQiwgJHN0cmVhbWluZ19tb2RlLCAnUFJFUEFSRScpOwor CWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9DLCAkb2Zmc2V0X0MsICRzdHJlYW1pbmdfbW9kZSwg J1BSRVBBUkUnKTsKKworCSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIHByZXBhcmVk IG9uIHN1YnNjcmliZXIocykKKwlteSAkcmVzdWx0ID0KKwkgICRub2RlX0ItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7 CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3Jp YmVyIEInKTsKKwkkcmVzdWx0ID0KKwkgICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3Vs dCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEMnKTsKKwor CSMgMlBDIENPTU1JVAorCSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ09NTUlUIFBS RVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9BLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lX0IpOworCSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7 CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gd2FzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVy KHMpCisJJHJlc3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNU IGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlz KCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhh dmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQiwgYW5kIGV4dHJhIGNvbHVtbnMgaGF2ZSBsb2Nh bCBkZWZhdWx0cycKKwkpOworCSRyZXN1bHQgPSAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVz dF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCisJCSdSb3dzIGluc2Vy dGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyIEMsIGFuZCBleHRyYSBjb2x1 bW5zIGhhdmUgbG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9u IHN0YXRlIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIocykKKwkkcmVzdWx0ID0KKwkgICRub2RlX0It PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFy ZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0 ZWQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9CisJICAkbm9kZV9DLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIp OworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNj cmliZXIgQycpOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgVGVzdCAy UEMgUFJFUEFSRSB3aXRoIGEgbmVzdGVkIFJPTExCQUNLIFRPIFNBVkVQT0lOVC4KKwkjIDAuIENs ZWFudXAgZnJvbSBwcmV2aW91cyB0ZXN0IGxlYXZpbmcgb25seSAyIHJvd3MuCisJIyAxLiBJbnNl cnQgb25lIG1vcmUgcm93LgorCSMgMi4gUmVjb3JkIGEgU0FWRVBPSU5ULgorCSMgMy4gRGF0YSBp cyBzdHJlYW1lZCB1c2luZyAyUEMuCisJIyA0LiBEbyByb2xsYmFjayB0byBTQVZFUE9JTlQgcHJp b3IgdG8gdGhlIHN0cmVhbWVkIGluc2VydHMuCisJIyA1LiBUaGVuIENPTU1JVCBQUkVQQVJFRC4K KwkjCisJIyBFeHBlY3QgZGF0YSBhZnRlciB0aGUgU0FWRVBPSU5UIGlzIGFib3J0ZWQgbGVhdmlu ZyBvbmx5IDMgcm93cyAoPSAyIG9yaWdpbmFsICsgMSBmcm9tIHN0ZXAgMSkuCisJIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2Vw dCBmb3IgMiByb3dzIChkZWxldGUgd2lsbCBiZSByZXBsaWNhdGVkKQorCSRub2RlX0EtPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7CisK KwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0X0IgPSAt cyAkbm9kZV9CLT5sb2dmaWxlOworCSRvZmZzZXRfQyA9IC1zICRub2RlX0MtPmxvZ2ZpbGU7CisK KwkjIDJQQyBQUkVQQVJFIHdpdGggYSBuZXN0ZWQgUk9MTEJBQ0sgVE8gU0FWRVBPSU5UCisJJG5v ZGVfQS0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCAiCisJCUJFR0lOOworCQlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTksICdmb29iYXInKTsKKwkJU0FWRVBPSU5UIHNwX2lubmVy OworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1k NShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1v ZChhLDMpID0gMDsKKwkJUk9MTEJBQ0sgVE8gU0FWRVBPSU5UIHNwX2lubmVyOworCQlQUkVQQVJF IFRSQU5TQUNUSU9OICdvdXRlcic7CisJCSIpOworCisJJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZV9CKTsKKwkkbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOwor CisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX0IsICRvZmZzZXRfQiwgJHN0cmVhbWluZ19tb2Rl LCAnUFJFUEFSRScpOworCisJIyBjaGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgcHJlcGFyZWQg b24gc3Vic2NyaWJlcihzKQorCSRyZXN1bHQgPQorCSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlp cygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIg QicpOworCSRyZXN1bHQgPQorCSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJT RUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBx cSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIgQycpOworCisJIyAy UEMgQ09NTUlUCisJJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDT01NSVQgUFJFUEFS RUQgJ291dGVyJzsiKTsKKworCSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7 CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKKworCSMgY2hlY2sgdGhl IHRyYW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0KKwkg ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00g cGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBp cyBlbmRlZCBvbiBzdWJzY3JpYmVyIEInKTsKKwkkcmVzdWx0ID0KKwkgICRub2RlX0MtPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFj dHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBlbmRlZCBvbiBzdWJz Y3JpYmVyIEMnKTsKKworCSMgY2hlY2sgaW5zZXJ0cyBhcmUgdmlzaWJsZSBhdCBzdWJzY3JpYmVy KHMpLgorCSMgQWxsIHRoZSBzdHJlYW1lZCBkYXRhIChwcmlvciB0byB0aGUgU0FWRVBPSU5UKSBz aG91bGQgYmUgcm9sbGVkIGJhY2suCisJIyAoOTk5OSwgJ2Zvb2JhcicpIHNob3VsZCBiZSBjb21t aXR0ZWQuCisJJHJlc3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VM RUNUIGNvdW50KCopIEZST00gdGVzdF90YWIgd2hlcmUgYiA9ICdmb29iYXInOyIpOworCWlzKCRy ZXN1bHQsIHFxKDEpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBC Jyk7CisJJHJlc3VsdCA9CisJICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVD VCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiOyIpOworCWlzKCRyZXN1bHQsIHFxKDMpLCAnUm93cyBj b21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9ICRub2Rl X0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90 YWIgd2hlcmUgYiA9ICdmb29iYXInOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAnUm93cyBjb21t aXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBDJyk7CisJJHJlc3VsdCA9CisJICAkbm9k ZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFi OyIpOworCWlzKCRyZXN1bHQsIHFxKDMpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24g c3Vic2NyaWJlciBDJyk7CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX0EtPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7 CisJJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKKwkkbm9kZV9CLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOworCisJIyBSZXNldCB0aGUgbG9nIHZlcmJvc2l0eS4K KwlpZiAoJHN0cmVhbWluZ19tb2RlIGVxICdwYXJhbGxlbCcpCisJeworCQkkbm9kZV9CLT5hcHBl bmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7 CisJCSRub2RlX0ItPnJlbG9hZDsKKworCQkkbm9kZV9DLT5hcHBlbmRfY29uZigncG9zdGdyZXNx bC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX0MtPnJlbG9h ZDsKKwl9Cit9CisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgU2V0dXAgYSBj YXNjYWRlIG9mIHB1Yi9zdWIgbm9kZXMuCiAjIG5vZGVfQSAtPiBub2RlX0IgLT4gbm9kZV9DCkBA IC0yNjAsMTYwICs0OTIsMTUgQEAgaXMoJHJlc3VsdCwgcXEoMjEpLCAnUm93cyBjb21taXR0ZWQg YXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBDJyk7CiAjIDJQQyArIFNUUkVBTUlORyBURVNUUwog IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotbXkgJG9sZHBpZF9CID0gJG5vZGVfQS0+c2FmZV9w c3FsKAotCSdwb3N0Z3JlcycsICIKLQlTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlv bgotCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQicgQU5EIHN0YXRlID0gJ3N0 cmVhbWluZyc7Iik7Ci1teSAkb2xkcGlkX0MgPSAkbm9kZV9CLT5zYWZlX3BzcWwoCi0JJ3Bvc3Rn cmVzJywgIgotCVNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uCi0JV0hFUkUgYXBw bGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9DJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsK LQotIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uIChzdHJlYW1pbmcgPSBvbikKLQotJG5vZGVf Qi0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1 Yl9CCi0JU0VUIChzdHJlYW1pbmcgPSBvbik7Iik7Ci0kbm9kZV9DLT5zYWZlX3BzcWwoCi0JJ3Bv c3RncmVzJywgIgotCUFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViX0MKLQlTRVQgKHN0cmVhbWlu ZyA9IG9uKSIpOwotCi0jIFdhaXQgZm9yIHN1YnNjcmliZXJzIHRvIGZpbmlzaCBpbml0aWFsaXph dGlvbgotCi0kbm9kZV9BLT5wb2xsX3F1ZXJ5X3VudGlsKAotCSdwb3N0Z3JlcycsICIKLQlTRUxF Q1QgcGlkICE9ICRvbGRwaWRfQiBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KLQlXSEVSRSBhcHBs aWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lX0InIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKLSkg b3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCI7Ci0k bm9kZV9CLT5wb2xsX3F1ZXJ5X3VudGlsKAotCSdwb3N0Z3JlcycsICIKLQlTRUxFQ1QgcGlkICE9 ICRvbGRwaWRfQyBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KLQlXSEVSRSBhcHBsaWNhdGlvbl9u YW1lID0gJyRhcHBuYW1lX0MnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKLSkgb3IgZGllICJU aW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCI7Ci0KLSMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgVGVzdCAyUEMgUFJFUEFSRSAvIENPTU1JVCBQUkVQ QVJFRC4KLSMgMS4gRGF0YSBpcyBzdHJlYW1lZCBhcyBhIDJQQyB0cmFuc2FjdGlvbi4KLSMgMi4g VGhlbiBkbyBjb21taXQgcHJlcGFyZWQuCi0jCi0jIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNh dGVkIG9uIHN1YnNjcmliZXIocykgYWZ0ZXIgdGhlIGNvbW1pdC4KLSMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKLQotIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dz IHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSMgVGhlbiAyUEMgUFJFUEFSRQotJG5vZGVfQS0+ c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBz KGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7 Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJB TlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVfQS0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZV9CKTsKLSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7 CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWlu ZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCit0ZXN0X3N0cmVh bWluZygkbm9kZV9BLCAkbm9kZV9CLCAkbm9kZV9DLCAkYXBwbmFtZV9CLCAkYXBwbmFtZV9DLCAn b24nKTsKIAotIyBjaGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgaXMgcHJlcGFyZWQgb24gc3Vi c2NyaWJlcihzKQotJHJlc3VsdCA9Ci0gICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBx cSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIgQicpOwotJHJlc3Vs dCA9Ci0gICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZS T00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9u IGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIgQycpOwotCi0jIDJQQyBDT01NSVQKLSRub2RlX0Et PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3Rh Yic7Iik7Ci0KLSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7Ci0kbm9kZV9C LT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rp b24gd2FzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyKHMpCi0kcmVzdWx0ID0gJG5vZGVfQi0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQg PSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwK LQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBCLCBh bmQgZXh0cmEgY29sdW1ucyBoYXZlIGxvY2FsIGRlZmF1bHRzJwotKTsKLSRyZXN1bHQgPSAkbm9k ZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwg Y291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0 fDMzMzQpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3Jp YmVyIEMsIGFuZCBleHRyYSBjb2x1bW5zIGhhdmUgbG9jYWwgZGVmYXVsdHMnCi0pOwotCi0jIGNo ZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyKHMpCi0kcmVz dWx0ID0KLSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikg RlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rp b24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQicpOwotJHJlc3VsdCA9Ci0gICRub2RlX0Mt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRf eGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBv biBzdWJzY3JpYmVyIEMnKTsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBU ZXN0IDJQQyBQUkVQQVJFIHdpdGggYSBuZXN0ZWQgUk9MTEJBQ0sgVE8gU0FWRVBPSU5ULgotIyAw LiBDbGVhbnVwIGZyb20gcHJldmlvdXMgdGVzdCBsZWF2aW5nIG9ubHkgMiByb3dzLgotIyAxLiBJ bnNlcnQgb25lIG1vcmUgcm93LgotIyAyLiBSZWNvcmQgYSBTQVZFUE9JTlQuCi0jIDMuIERhdGEg aXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyA0LiBEbyByb2xsYmFjayB0byBTQVZFUE9JTlQgcHJp b3IgdG8gdGhlIHN0cmVhbWVkIGluc2VydHMuCi0jIDUuIFRoZW4gQ09NTUlUIFBSRVBBUkVELgot IwotIyBFeHBlY3QgZGF0YSBhZnRlciB0aGUgU0FWRVBPSU5UIGlzIGFib3J0ZWQgbGVhdmluZyBv bmx5IDMgcm93cyAoPSAyIG9yaWdpbmFsICsgMSBmcm9tIHN0ZXAgMSkuCi0jIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9y IDIgcm93cyAoZGVsZXRlIHdpbGwgYmUgcmVwbGljYXRlZCkKLSRub2RlX0EtPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7Ci0KLSMgMlBD IFBSRVBBUkUgd2l0aCBhIG5lc3RlZCBST0xMQkFDSyBUTyBTQVZFUE9JTlQKLSRub2RlX0EtPnNh ZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAiCi0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIg VkFMVUVTICg5OTk5LCAnZm9vYmFyJyk7Ci0JU0FWRVBPSU5UIHNwX2lubmVyOwotCUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9k KGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlS T0xMQkFDSyBUTyBTQVZFUE9JTlQgc3BfaW5uZXI7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAnb3V0 ZXInOwotCSIpOwotCi0kbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOwotJG5v ZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKLQotIyBjaGVjayB0aGUgdHJhbnNh Y3Rpb24gc3RhdGUgcHJlcGFyZWQgb24gc3Vic2NyaWJlcihzKQotJHJlc3VsdCA9Ci0gICRub2Rl X0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFy ZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVk IG9uIHN1YnNjcmliZXIgQicpOwotJHJlc3VsdCA9Ci0gICRub2RlX0MtPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygk cmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIgQycp OwotCi0jIDJQQyBDT01NSVQKLSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ09NTUlU IFBSRVBBUkVEICdvdXRlcic7Iik7Ci0KLSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWVfQik7Ci0kbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOwotCi0jIGNoZWNr IHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0K LSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBw Z19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMg ZW5kZWQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0KLSAgJG5vZGVfQy0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsK LWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgZW5kZWQgb24gc3Vic2NyaWJlciBD Jyk7Ci0KLSMgY2hlY2sgaW5zZXJ0cyBhcmUgdmlzaWJsZSBhdCBzdWJzY3JpYmVyKHMpLgotIyBB bGwgdGhlIHN0cmVhbWVkIGRhdGEgKHByaW9yIHRvIHRoZSBTQVZFUE9JTlQpIHNob3VsZCBiZSBy b2xsZWQgYmFjay4KLSMgKDk5OTksICdmb29iYXInKSBzaG91bGQgYmUgY29tbWl0dGVkLgotJHJl c3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikg RlJPTSB0ZXN0X3RhYiB3aGVyZSBiID0gJ2Zvb2Jhcic7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwg J1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQicpOwotJHJlc3VsdCA9 ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVz dF90YWI7Iik7Ci1pcygkcmVzdWx0LCBxcSgzKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50 IG9uIHN1YnNjcmliZXIgQicpOwotJHJlc3VsdCA9ICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYiB3aGVyZSBiID0gJ2Zvb2Jhcic7 Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1 YnNjcmliZXIgQycpOwotJHJlc3VsdCA9ICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWI7Iik7Ci1pcygkcmVzdWx0LCBxcSgzKSwgJ1Jv d3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQycpOworIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAn cGFyYWxsZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwordGVzdF9z dHJlYW1pbmcoJG5vZGVfQSwgJG5vZGVfQiwgJG5vZGVfQywgJGFwcG5hbWVfQiwgJGFwcG5hbWVf QywgJ3BhcmFsbGVsJyk7CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgY2hl Y2sgYWxsIHRoZSBjbGVhbnVwCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MjNfdHdvcGhhc2Vfc3RyZWFtLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3Bo YXNlX3N0cmVhbS5wbAppbmRleCA5YjQ1NDEwLi5jOTY2YWM5IDEwMDY0NAotLS0gYS9zcmMvdGVz dC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsCisrKyBiL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwKQEAgLTgsNiArOCwzMDggQEAgdXNl IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7 CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBDaGVjayB0aGUgbG9nIHRoYXQgdGhlIHN0cmVhbWVkIHRy YW5zYWN0aW9uIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5CisjIHJlcG9ydGVkIGJ5IHBhcmFs bGVsIGFwcGx5IHdvcmtlci4KK3N1YiBjaGVja19wYXJhbGxlbF9sb2cKK3sKKwlteSAoJG5vZGVf c3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAkdHlwZSkgPSBAXzsKKworCWlmICgk aXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJCQlx ci9ERUJVRzogKCBbQS1aMC05XSs6KT8gZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgU1RSRUFNICR0 eXBlIGNvbW1hbmQvLAorCQkJJG9mZnNldCk7CisJfQorfQorCisjIEVuY2Fwc3VsYXRlIGFsbCB0 aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIKKyMg cGFyYW1ldGVyIHNvIHRoZSBzYW1lIGNvZGUgY2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFt aW5nPW9uIGFuZAorIyBzdHJlYW1pbmc9cGFyYWxsZWwgY2FzZXMuCitzdWIgdGVzdF9zdHJlYW1p bmcKK3sKKwlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwg JGlzX3BhcmFsbGVsKSA9IEBfOworCisJbXkgJG9mZnNldCA9IDA7CisKKwkjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisJIyBUZXN0IDJQQyBQUkVQQVJFIC8gQ09NTUlUIFBSRVBBUkVE LgorCSMgMS4gRGF0YSBpcyBzdHJlYW1lZCBhcyBhIDJQQyB0cmFuc2FjdGlvbi4KKwkjIDIuIFRo ZW4gZG8gY29tbWl0IHByZXBhcmVkLgorCSMKKwkjIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNh dGVkIG9uIHN1YnNjcmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0LgorCSMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKKworCSMgSWYgInN0cmVhbWluZyIgcGFyYW1ldGVyIGlzIHNwZWNp ZmllZCBhcyAicGFyYWxsZWwiLCB3ZSBuZWVkIHRvIGNoZWNrCisJIyB0aGF0IHN0cmVhbWVkIHRy YW5zYWN0aW9uIHdhcyBwcmVwYXJlZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkj IFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwg c28gYnVtcCB1cCB0aGUKKwkjIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7 CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJ ImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2Fk OworCX0KKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZz ZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBjaGVjayB0aGF0IDJQQyBn ZXRzIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlcgorCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0 ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0 ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUw MDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwy KSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJF UEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygk bm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdQUkVQQVJFJyk7CisKKwkj IGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJl cgorCW15ICRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1 bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOworCisJ IyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBjb21taXR0ZWQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7 Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJ IyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCisJJHJl c3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNU IGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlz KCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhh dmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9j YWwgZGVmYXVsdHMnCisJKTsKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsi KTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJz Y3JpYmVyJyk7CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBUZXN0IDJQ QyBQUkVQQVJFIC8gUk9MTEJBQ0sgUFJFUEFSRUQuCisJIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJh Y2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCisJIyAyLiBE YXRhIGlzIHN0cmVhbWVkIHVzaW5nIDJQQy4KKwkjIDMuIERvIHJvbGxiYWNrIHByZXBhcmVkLgor CSMKKwkjIEV4cGVjdCBkYXRhIHJvbGxzIGJhY2sgbGVhdmluZyBvbmx5IHRoZSBvcmlnaW5hbCAy IHJvd3MuCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVs ZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3Rf dGFiIFdIRVJFIGEgPiAyOyIpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBu b3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIFRo ZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0 a0IgbGltaXQuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7 CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBT RVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFi IFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJl ZF90YWInO30pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l KTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNf cGFyYWxsZWwsICdQUkVQQVJFJyk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4g cHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBh cmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFy ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCisJ JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlJPTExCQUNLIFBSRVBB UkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0 ZWQgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkp IEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgyfDJ8MiksCisJCSdSb3dzIGluc2Vy dGVkIGJ5IDJQQyBhcmUgcm9sbGVkIGJhY2ssIGxlYXZpbmcgb25seSB0aGUgb3JpZ2luYWwgMiBy b3dzJworCSk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlp cygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcicp OworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgQ2hlY2sgdGhhdCAyUEMg Q09NTUlUIFBSRVBBUkVEIGlzIGRlY29kZWQgcHJvcGVybHkgb24gY3Jhc2ggcmVzdGFydC4KKwkj IDEuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2 NGtCIGxpbWl0LgorCSMgMi4gVGhlbiBzZXJ2ZXIgY3Jhc2hlcyBiZWZvcmUgdGhlIDJQQyB0cmFu c2FjdGlvbiBpcyBjb21taXR0ZWQuCisJIyAzLiBBZnRlciBzZXJ2ZXJzIGFyZSByZXN0YXJ0ZWQg dGhlIHBlbmRpbmcgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkLgorCSMKKwkjIEV4cGVjdCBhbGwg ZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0Lgor CSMgTm90ZTogYm90aCBwdWJsaXNoZXIgYW5kIHN1YnNjcmliZXIgZG8gY3Jhc2gvcmVzdGFydC4K KwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkjIENoZWNrIHRoZSBzdWJzY3Jp YmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9n ZmlsZTsKKworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxewor CQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VU IGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBX SEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRf dGFiJzt9KTsKKworCSRub2RlX3N1YnNjcmliZXItPnN0b3AoJ2ltbWVkaWF0ZScpOworCSRub2Rl X3B1Ymxpc2hlci0+c3RvcCgnaW1tZWRpYXRlJyk7CisKKwkkbm9kZV9wdWJsaXNoZXItPnN0YXJ0 OworCSRub2RlX3N1YnNjcmliZXItPnN0YXJ0OworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2Rl X3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJ1BSRVBBUkUnKTsKKworCSMgY29t bWl0IHBvc3QgdGhlIHJlc3RhcnQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisJJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sgaW5zZXJ0 cyBhcmUgdmlzaWJsZQorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZS T00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCisJCSdSb3dz IGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEg Y29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisJIyBEbyBJTlNFUlQgYWZ0ZXIgdGhlIFBSRVBBUkUgYnV0IGJlZm9y ZSBST0xMQkFDSyBQUkVQQVJFRC4KKwkjIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJv d3Mgd2hpY2ggYXJlIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KKwkjIDIuIERhdGEgaXMgc3Ry ZWFtZWQgdXNpbmcgMlBDLgorCSMgMy4gQSBzaW5nbGUgcm93IElOU0VSVCBpcyBkb25lIHdoaWNo IGlzIGFmdGVyIHRoZSBQUkVQQVJFLgorCSMgNC4gVGhlbiBkbyBhIFJPTExCQUNLIFBSRVBBUkVE LgorCSMKKwkjIEV4cGVjdCB0aGUgMlBDIGRhdGEgcm9sbHMgYmFjayBsZWF2aW5nIG9ubHkgMyBy b3dzIG9uIHRoZSBzdWJzY3JpYmVyCisJIyAodGhlIG9yaWdpbmFsIDIgKyBpbnNlcnRlZCAxKS4K KwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkjIEZpcnN0LCBkZWxldGUgdGhl IGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwgYmUgcmVwbGljYXRlZCkKKwkkbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hF UkUgYSA+IDI7Iik7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4K Kwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgVGhlbiBpbnNl cnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1p dC4KKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwkJQkVH SU47CisJCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0g bWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUg bW9kKGEsMykgPSAwOworCQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7 fSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJ Y2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxl bCwgJ1BSRVBBUkUnKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJl ZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFj dHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBz dWJzY3JpYmVyJyk7CisKKwkjIEluc2VydCBhIGRpZmZlcmVudCByZWNvcmQgKG5vdyB3ZSBhcmUg b3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5zYWN0aW9uKQorCSMgTm90ZTogdGhlIDJQQyB0cmFuc2Fj dGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMgaW5zZXJ0IGlzIGZv ciBhIHNlcGFyYXRlIHByaW1hcnkga2V5CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOTk5OTksICdmb29iYXIn KSIpOworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCisJJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlJPTExCQUNLIFBSRVBBUkVEICd0ZXN0X3ByZXBh cmVkX3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJl ciwKKwkjIGJ1dCB0aGUgZXh0cmEgSU5TRVJUIG91dHNpZGUgb2YgdGhlIDJQQyBzdGlsbCB3YXMg cmVwbGljYXRlZAorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00g dGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzfDN8MyksCisJCSdjaGVjayB0aGUgb3V0c2lk ZSBpbnNlcnQgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CisKKwkkcmVzdWx0ID0gJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJP TSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9u IGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworCSMgRG8gSU5TRVJUIGFmdGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZvcmUgQ09NTUlU IFBSRVBBUkVELgorCSMgMS4gVGFibGUgaXMgZGVsZXRlZCBiYWNrIHRvIDIgcm93cyB3aGljaCBh cmUgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgorCSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2lu ZyAyUEMuCisJIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlzIGRvbmUgd2hpY2ggaXMgYWZ0ZXIg dGhlIFBSRVBBUkUuCisJIyA0LiBUaGVuIGRvIGEgQ09NTUlUIFBSRVBBUkVELgorCSMKKwkjIEV4 cGVjdCAyUEMgZGF0YSArIHRoZSBleHRyYSByb3cgYXJlIG9uIHRoZSBzdWJzY3JpYmVyCisJIyAo dGhlIDMzMzQgKyBpbnNlcnRlZCAxID0gMzMzNSkuCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3 aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCisJIyBDaGVjayB0 aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNj cmliZXItPmxvZ2ZpbGU7CisKKwkjIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91 Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3Rh YiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMo aSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7 CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBU UkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9z dWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdQUkVQQVJFJyk7CisKKwkjIGNoZWNr IHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgorCSRy ZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVD VCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEp LCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOworCisJIyBJbnNlcnQg YSBkaWZmZXJlbnQgcmVjb3JkIChub3cgd2UgYXJlIG91dHNpZGUgb2YgdGhlIDJQQyB0cmFuc2Fj dGlvbikKKwkjIE5vdGU6IHRoZSAyUEMgdHJhbnNhY3Rpb24gc3RpbGwgaG9sZHMgcm93IGxvY2tz IHNvIG1ha2Ugc3VyZSB0aGlzIGluc2VydCBpcyBmb3IgYSBzZXBhcmFyZSBwcmltYXJ5IGtleQor CSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJJTlNFUlQgSU5UTyB0 ZXN0X3RhYiBWQUxVRVMgKDk5OTk5LCAnZm9vYmFyJykiKTsKKworCSMgMlBDIHRyYW5zYWN0aW9u IGdldHMgY29tbWl0dGVkCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkJIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOworCisJJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sgdGhhdCB0cmFu c2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQo YyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM1 fDMzMzV8MzMzNSksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyAoYXMgd2VsbCBhcyBvdXRzaWRl IGluc2VydCkgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMg Y29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJl cGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21t aXR0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90 YWIgV0hFUkUgYSA+IDI7Iik7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKKworCSMgUmVzZXQgdGhlIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxl bCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYn LAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmliZXIt PnJlbG9hZDsKKwl9Cit9CisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgU2V0 dXAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTQ4LDYgKzM1MCwxMCBAQCAk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgUFVCTElDQVRJ T04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKIAogbXkgJGFwcG5hbWUgPSAndGFwX3N1 Yic7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3Ry ZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgKIAkncG9zdGdyZXMnLCAiCiAJQ1JFQVRFIFNVQlNDUklQ VElPTiB0YXBfc3ViCkBAIC02NCwyMzYgKzM3MCwzMCBAQCBteSAkdHdvcGhhc2VfcXVlcnkgPQog JG5vZGVfc3Vic2NyaWJlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLCAkdHdvcGhhc2Vf cXVlcnkpCiAgIG9yIGRpZSAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIHN1YnNjcmliZXIg dG8gZW5hYmxlIHR3b3BoYXNlIjsKIAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwog IyBDaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyCi0jIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCiBteSAkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCiAJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQg PSA5OTkpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8MnwyKSwgJ2NoZWNrIGlu aXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAotIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwotIyBUZXN0IDJQQyBQUkVQQVJFIC8gQ09NTUlUIFBSRVBBUkVELgot IyAxLiBEYXRhIGlzIHN0cmVhbWVkIGFzIGEgMlBDIHRyYW5zYWN0aW9uLgotIyAyLiBUaGVuIGRv IGNvbW1pdCBwcmVwYXJlZC4KLSMKLSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24g c3Vic2NyaWJlciBzaWRlIGFmdGVyIHRoZSBjb21taXQuCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmli ZXIsICRhcHBuYW1lLCAwKTsKIAotIyBjaGVjayB0aGF0IDJQQyBnZXRzIHJlcGxpY2F0ZWQgdG8g c3Vic2NyaWJlcgotIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4 Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0 Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0 X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVz dF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJl cGFyZWRfdGFiJzt9KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9u IHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygk cmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsK LQotIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBjb21taXR0ZWQKLSRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWIn OyIpOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0j IGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKLSRyZXN1 bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNv dW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJl c3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNv bW1pdHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRl ZmF1bHRzJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1 c2luZyBzdHJlYW1pbmcgbW9kZSAncGFyYWxsZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFw cGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKICk7 Ci0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNF TEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEo MCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIFRlc3QgMlBDIFBSRVBBUkUgLyBST0xMQkFDSyBQ UkVQQVJFRC4KLSMgMS4gVGFibGUgaXMgZGVsZXRlZCBiYWNrIHRvIDIgcm93cyB3aGljaCBhcmUg cmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgotIyAyLiBEYXRhIGlzIHN0cmVhbWVkIHVzaW5nIDJQ Qy4KLSMgMy4gRG8gcm9sbGJhY2sgcHJlcGFyZWQuCi0jCi0jIEV4cGVjdCBkYXRhIHJvbGxzIGJh Y2sgbGVhdmluZyBvbmx5IHRoZSBvcmlnaW5hbCAyIHJvd3MuCi0jIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCi0KLSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93 cyAod2lsbCBiZSByZXBsaWNhdGVkKQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOwotCi0jIFRoZW4gaW5z ZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGlt aXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotCUJFR0lO OwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUo YikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChh LDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7CiAK LSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sg dGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCi0kcmVz dWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBj b3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICd0 cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMgMlBDIHRyYW5zYWN0 aW9uIGdldHMgYWJvcnRlZAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK LQkiUk9MTEJBQ0sgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKLQotJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5z YWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBj b3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgyfDJ8MiksCi0J J1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGFyZSByb2xsZWQgYmFjaywgbGVhdmluZyBvbmx5IHRoZSBv cmlnaW5hbCAyIHJvd3MnKTsKLQotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsi KTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3Jp YmVyJyk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ2hlY2sgdGhhdCAy UEMgQ09NTUlUIFBSRVBBUkVEIGlzIGRlY29kZWQgcHJvcGVybHkgb24gY3Jhc2ggcmVzdGFydC4K LSMgMS4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhl IDY0a0IgbGltaXQuCi0jIDIuIFRoZW4gc2VydmVyIGNyYXNoZXMgYmVmb3JlIHRoZSAyUEMgdHJh bnNhY3Rpb24gaXMgY29tbWl0dGVkLgotIyAzLiBBZnRlciBzZXJ2ZXJzIGFyZSByZXN0YXJ0ZWQg dGhlIHBlbmRpbmcgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkLgotIwotIyBFeHBlY3QgYWxsIGRh dGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhlIGNvbW1pdC4KLSMg Tm90ZTogYm90aCBwdWJsaXNoZXIgYW5kIHN1YnNjcmliZXIgZG8gY3Jhc2gvcmVzdGFydC4KLSMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7Ci0J VVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxF VEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElP TiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9kZV9zdWJzY3JpYmVyLT5zdG9wKCdpbW1l ZGlhdGUnKTsKLSRub2RlX3B1Ymxpc2hlci0+c3RvcCgnaW1tZWRpYXRlJyk7Ci0KLSRub2RlX3B1 Ymxpc2hlci0+c3RhcnQ7Ci0kbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKLQotIyBjb21taXQgcG9z dCB0aGUgcmVzdGFydAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQki Q09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0kbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIGluc2VydHMgYXJlIHZpc2li bGUKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQki U0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIp OwotaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQ QyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29sdW1ucyBjb250YWlu IGxvY2FsIGRlZmF1bHRzJwotKTsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwot IyBEbyBJTlNFUlQgYWZ0ZXIgdGhlIFBSRVBBUkUgYnV0IGJlZm9yZSBST0xMQkFDSyBQUkVQQVJF RC4KLSMgMS4gVGFibGUgaXMgZGVsZXRlZCBiYWNrIHRvIDIgcm93cyB3aGljaCBhcmUgcmVwbGlj YXRlZCBvbiBzdWJzY3JpYmVyLgotIyAyLiBEYXRhIGlzIHN0cmVhbWVkIHVzaW5nIDJQQy4KLSMg My4gQSBzaW5nbGUgcm93IElOU0VSVCBpcyBkb25lIHdoaWNoIGlzIGFmdGVyIHRoZSBQUkVQQVJF LgotIyA0LiBUaGVuIGRvIGEgUk9MTEJBQ0sgUFJFUEFSRUQuCi0jCi0jIEV4cGVjdCB0aGUgMlBD IGRhdGEgcm9sbHMgYmFjayBsZWF2aW5nIG9ubHkgMyByb3dzIG9uIHRoZSBzdWJzY3JpYmVyCi0j ICh0aGUgb3JpZ2luYWwgMiArIGluc2VydGVkIDEpLgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIwotCi0jIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKHdp bGwgYmUgcmVwbGljYXRlZCkKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKLQotIyBUaGVuIGluc2VydCwg dXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0Lgot JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJ TlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdI RVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9 IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQg dHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9 ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQo KikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNh Y3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIEluc2VydCBhIGRpZmZlcmVu dCByZWNvcmQgKG5vdyB3ZSBhcmUgb3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5zYWN0aW9uKQotIyBO b3RlOiB0aGUgMlBDIHRyYW5zYWN0aW9uIHN0aWxsIGhvbGRzIHJvdyBsb2NrcyBzbyBtYWtlIHN1 cmUgdGhpcyBpbnNlcnQgaXMgZm9yIGEgc2VwYXJhdGUgcHJpbWFyeSBrZXkKLSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVF UyAoOTk5OTksICdmb29iYXInKSIpOwotCi0jIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGFib3J0ZWQK LSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlJPTExCQUNLIFBSRVBB UkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBhYm9ydGVk IG9uIHN1YnNjcmliZXIsCi0jIGJ1dCB0aGUgZXh0cmEgSU5TRVJUIG91dHNpZGUgb2YgdGhlIDJQ QyBzdGlsbCB3YXMgcmVwbGljYXRlZAotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0g OTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzfDN8MyksICdjaGVjayB0aGUg b3V0c2lkZSBpbnNlcnQgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7Ci0KLSRyZXN1bHQgPSAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCop IEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0 aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCi0jIERvIElOU0VSVCBhZnRlciB0aGUgUFJFUEFSRSBidXQgYmVmb3JlIENPTU1J VCBQUkVQQVJFRC4KLSMgMS4gVGFibGUgaXMgZGVsZXRlZCBiYWNrIHRvIDIgcm93cyB3aGljaCBh cmUgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgotIyAyLiBEYXRhIGlzIHN0cmVhbWVkIHVzaW5n IDJQQy4KLSMgMy4gQSBzaW5nbGUgcm93IElOU0VSVCBpcyBkb25lIHdoaWNoIGlzIGFmdGVyIHRo ZSBQUkVQQVJFLgotIyA0LiBUaGVuIGRvIGEgQ09NTUlUIFBSRVBBUkVELgotIwotIyBFeHBlY3Qg MlBDIGRhdGEgKyB0aGUgZXh0cmEgcm93IGFyZSBvbiB0aGUgc3Vic2NyaWJlcgotIyAodGhlIDMz MzQgKyBpbnNlcnRlZCAxID0gMzMzNSkuCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj Ci0KLSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSBy ZXBsaWNhdGVkKQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVU RSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOwotCi0jIFRoZW4gaW5zZXJ0LCB1cGRhdGUg YW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCi0kbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotCUJFR0lOOwotCUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9k KGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlQ UkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7Ci0KLSRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2Fj dGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9N IHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBp cyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMgSW5zZXJ0IGEgZGlmZmVyZW50IHJlY29y ZCAobm93IHdlIGFyZSBvdXRzaWRlIG9mIHRoZSAyUEMgdHJhbnNhY3Rpb24pCi0jIE5vdGU6IHRo ZSAyUEMgdHJhbnNhY3Rpb24gc3RpbGwgaG9sZHMgcm93IGxvY2tzIHNvIG1ha2Ugc3VyZSB0aGlz IGluc2VydCBpcyBmb3IgYSBzZXBhcmFyZSBwcmltYXJ5IGtleQotJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg5OTk5 OSwgJ2Zvb2JhcicpIik7Ci0KLSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgY29tbWl0dGVkCi0kbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJDT01NSVQgUFJFUEFSRUQgJ3Rl c3RfcHJlcGFyZWRfdGFiJzsiKTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJB TFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQoc3RyZWFtaW5nID0gcGFyYWxsZWwpIik7CiAK LSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcgotJHJl c3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1Qg Y291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygk cmVzdWx0LCBxcSgzMzM1fDMzMzV8MzMzNSksCi0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIChhcyB3 ZWxsIGFzIG91dHNpZGUgaW5zZXJ0KSBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQg ZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwotKTsKKyRub2RlX3B1Ymxpc2hl ci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQg RlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5h bWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyAgKQorICBvciBkaWUKKyAgIlRpbWVkIG91 dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlND UklQVElPTiI7CiAKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygk cmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyJyk7 Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBu YW1lLCAxKTsKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBjaGVjayBhbGwg dGhlIGNsZWFudXAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJl YW1fcGFyYWxsZWxfY29uZmxpY3QucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3Ry ZWFtX3BhcmFsbGVsX2NvbmZsaWN0LnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjEwZWZkMmQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MzJfc3RyZWFtX3BhcmFsbGVsX2NvbmZsaWN0LnBsCkBAIC0wLDAgKzEsMTUyIEBACisjIENvcHly aWdodCAoYykgMjAyMiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBU ZXN0IGZvciBkZWFkbG9jayBpbiBzdHJlYW1pbmcgbW9kZSAicGFyYWxsZWwiIGluIGxvZ2ljYWwg cmVwbGljYXRpb24uCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0 OjpNb3JlOworCitteSAkb2Zmc2V0ID0gMDsKKworIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKK215 ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlz aGVyJyk7Ciskbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNh bCcpOworJG5vZGVfcHVibGlzaGVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkn bG9naWNhbF9kZWNvZGluZ193b3JrX21lbSA9IDY0a0InKTsKKyRub2RlX3B1Ymxpc2hlci0+c3Rh cnQ7CisKKyMgQ3JlYXRlIHN1YnNjcmliZXIgbm9kZQorbXkgJG5vZGVfc3Vic2NyaWJlciA9IFBv c3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicpOworJG5vZGVfc3Vic2Ny aWJlci0+aW5pdDsKKworIyBDaGVjayBpZiBhbnkgc3RyZWFtaW5nIGNodW5rcyBhcmUgYXBwbGll ZCB1c2luZyB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBXZQorIyBoYXZlIHRvIGxvb2sgZm9y IHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNvIGJ1bXAgdXAgdGhlIGxvZwor IyB2ZXJib3NpdHkuCiskbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5j b25mJywgImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKworJG5vZGVfc3Vic2NyaWJlci0+ c3RhcnQ7CisKKyMgU2V0dXAgc3RydWN0dXJlIG9uIHB1Ymxpc2hlcgorJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0ZXN0X3RhYiAoYSBpbnQpIik7 CisKKyMgU2V0dXAgc3RydWN0dXJlIG9uIHN1YnNjcmliZXIKKyRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiIChhIGludCkiKTsKKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVU5JUVVFIElO REVYIGlkeF90YWIgb24gdGVzdF90YWIoYSkiKTsKKworIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0 aW9uCitteSAkcHVibGlzaGVyX2Nvbm5zdHIgPSAkbm9kZV9wdWJsaXNoZXItPmNvbm5zdHIgLiAn IGRibmFtZT1wb3N0Z3Jlcyc7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKKwor bXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJ J3Bvc3RncmVzJywgIgorCUNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YgorCUNPTk5FQ1RJT04g JyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJworCVBVQkxJQ0FU SU9OIHRhcF9wdWIKKwlXSVRIIChzdHJlYW1pbmcgPSBwYXJhbGxlbCwgY29weV9kYXRhID0gZmFs c2UpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisK KyMgSW50ZXJsZWF2ZSBhIHBhaXIgb2YgdHJhbnNhY3Rpb25zLCBlYWNoIGV4Y2VlZGluZyB0aGUg NjRrQiBsaW1pdC4KK215ICRpbiAgPSAnJzsKK215ICRvdXQgPSAnJzsKKworbXkgJHRpbWVyID0g SVBDOjpSdW46OnRpbWVvdXQoJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1 bHQpOworCitteSAkaCA9ICRub2RlX3B1Ymxpc2hlci0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jl cycsIFwkaW4sIFwkb3V0LCAkdGltZXIsCisJb25fZXJyb3Jfc3RvcCA9PiAwKTsKKworIyA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CisjIENvbmZpcm0gaWYgYSBkZWFkbG9jayBiZXR3ZWVuIHRoZSBsZWFk ZXIgYXBwbHkgd29ya2VyIGFuZCB0aGUgcGFyYWxsZWwgYXBwbHkKKyMgd29ya2VyIGNhbiBiZSBk ZXRlY3RlZC4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCiskaW4gLj0gcXsKK0JFR0lOOworSU5T RVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkg cyhpKTsKK307CiskaC0+cHVtcF9uYjsKKworIyBFbnN1cmUgdGhhdCB0aGUgcGFyYWxsZWwgYXBw bHkgd29ya2VyIGV4ZWN1dGVzIHRoZSBpbnNlcnQgY29tbWFuZCBiZWZvcmUgdGhlCisjIGxlYWRl ciB3b3JrZXIuCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvREVCVUc6ICgg W0EtWjAtOV0rOik/IGFwcGxpZWQgWzAtOV0rIGNoYW5nZXMgaW4gdGhlIHN0cmVhbWluZyBjaHVu ay8sCisJJG9mZnNldCk7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJJTlNFUlQgSU5UTyB0ZXN0X3RhYiB2YWx1ZXMoMSkiKTsKKworJGluIC49IHF7CitDT01NSVQ7 CitccQorfTsKKyRoLT5maW5pc2g7CisKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygK Kwlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gZGVhZGxvY2sgZGV0ZWN0ZWQvLAorCSRvZmZzZXQp OworCisjIERyb3AgdGhlIHVuaXF1ZSBpbmRleCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdv cmtzLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIElOREVY IGlkeF90YWIiKTsKKworIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBi ZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOworCitteSAkcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYiIpOwor aXMoJHJlc3VsdCwgcXEoNTAwMSksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRl ciBkcm9wcGluZyBpbmRleCcpOworCisjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZp cm9ubWVudC4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJUUlVOQ0FU RSBUQUJMRSB0ZXN0X3RhYiIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVB VEUgVU5JUVVFIElOREVYIGlkeF90YWIgb24gdGVzdF90YWIoYSkiKTsKKworIyA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CisjIENvbmZpcm0gaWYgYSBkZWFkbG9jayBiZXR3ZWVuIHR3byBwYXJhbGxlbCBh cHBseSB3b3JrZXJzIGNhbiBiZSBkZXRlY3RlZC4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisj IENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9k ZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskaW4gLj0gcXsKK0JFR0lOOworSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKTsKK307 CiskaC0+cHVtcF9uYjsKKworIyBFbnN1cmUgdGhhdCB0aGUgZmlyc3QgcGFyYWxsZWwgYXBwbHkg d29ya2VyIGV4ZWN1dGVzIHRoZSBpbnNlcnQgY29tbWFuZAorIyBiZWZvcmUgdGhlIHNlY29uZCBv bmUuCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvREVCVUc6ICggW0EtWjAt OV0rOik/IGFwcGxpZWQgWzAtOV0rIGNoYW5nZXMgaW4gdGhlIHN0cmVhbWluZyBjaHVuay8sCisJ JG9mZnNldCk7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBz KGkpIik7CisKKyRpbiAuPSBxeworQ09NTUlUOworXHEKK307CiskaC0+ZmluaXNoOworCiskbm9k ZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGRl YWRsb2NrIGRldGVjdGVkLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIHRoZSB1bmlxdWUgaW5kZXgg b24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiRFJPUCBJTkRFWCBpZHhfdGFiIik7CisKKyMgV2FpdCBmb3IgdGhp cyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2Vy LgorJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJlc3Vs dCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNv dW50KCopIEZST00gdGVzdF90YWIiKTsKK2lzKCRyZXN1bHQsIHFxKDEwMDAwKSwgJ2RhdGEgcmVw bGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGluZGV4Jyk7CisKKyRub2RlX3N1 YnNjcmliZXItPnN0b3A7Ciskbm9kZV9wdWJsaXNoZXItPnN0b3A7CisKK2RvbmVfdGVzdGluZygp OwotLSAKMi43LjIud2luZG93cy4xCgo= --_008_OS0PR01MB571663B4EC5D8BE749AACD98941E9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v59-0006-Retry-to-apply-streaming-xact-only-in-apply-work.patch" Content-Description: v59-0006-Retry-to-apply-streaming-xact-only-in-apply-work.patch Content-Disposition: attachment; filename="v59-0006-Retry-to-apply-streaming-xact-only-in-apply-work.patch"; size=23187; creation-date="Sun, 11 Dec 2022 11:36:25 GMT"; modification-date="Sun, 11 Dec 2022 11:44:48 GMT" Content-Transfer-Encoding: base64 RnJvbSAxNzVjY2I2ZDM4ODAzYTg3MDIyZmMyMjk5MDViMDg2YjM3YmZhYTk4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBTdW4sIDExIERlYyAyMDIyIDE5OjE2OjM0ICswODAwClN1YmplY3Q6IFtQQVRDSCB2 NTkgNi83XSBSZXRyeSB0byBhcHBseSBzdHJlYW1pbmcgeGFjdCBvbmx5IGluIGFwcGx5IHdvcmtl cgoKV2hlbiB0aGUgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBpcyBzZXQgc3RyZWFtaW5nPXBhcmFs bGVsLCB0aGUgbG9naWMgdHJpZXMgdG8KYXBwbHkgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB1 c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gSWYgdGhpcwpmYWlscyB0aGUgcGFyYWxsZWwg d29ya2VyIGV4aXRzIHdpdGggYW4gZXJyb3IuCgpJbiB0aGlzIGNhc2UsIHJldHJ5IGFwcGx5aW5n IHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdXNpbmcgdGhlIG5vcm1hbApzdHJlYW1pbmc9b24g bW9kZS4gVGhpcyBpcyBkb25lIHRvIGF2b2lkIGdldHRpbmcgY2F1Z2h0IGluIGEgbG9vcCBvZiB0 aGUgc2FtZQpyZXRyeSBlcnJvcnMuCgpBIG5ldyBmbGFnIGZpZWxkICJzdWJyZXRyeSIgaGFzIGJl ZW4gaW50cm9kdWNlZCB0byBjYXRhbG9nICJwZ19zdWJzY3JpcHRpb24iLgpJZiB0aGVyZSBhcmUg YW55IGFjdGl2ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGFuZCB0aGUgc3Vic2NyaWJlciBleGl0 cyB3aXRoIGFuCmVycm9yLCB0aGlzIGZsYWcgd2lsbCBiZSBzZXQgdHJ1ZSwgYW5kIHdoZW5ldmVy IHRoZSB0cmFuc2FjdGlvbiBpcyBhcHBsaWVkCnN1Y2Nlc3NmdWxseSwgdGhpcyBmbGFnIGlzIHJl c2V0IGZhbHNlLgpOb3csIHdoZW4gZGVjaWRpbmcgaG93IHRvIGFwcGx5IGEgc3RyZWFtaW5nIHRy YW5zYWN0aW9uLCB0aGUgbG9naWMgY2FuIGtub3cgaWYKdGhpcyB0cmFuc2FjdGlvbiBoYXMgcHJl dmlvdXNseSBmYWlsZWQgb3Igbm90IChieSBjaGVja2luZyB0aGUgInN1YnJldHJ5IgpmaWVsZCku Ci0tLQogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAg fCAgMTAgKysKIGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgICAgICAgICAg ICAgIHwgIDExICstCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCAg ICAgICAgICB8ICAgNSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jICAg ICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwg ICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9u Y21kcy5jICAgICAgICAgICAgfCAgIDEgKwogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlw YXJhbGxlbHdvcmtlci5jICAgICAgfCAgMzAgKysrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC93b3JrZXIuYyAgICAgICAgICAgfCAxODIgKysrKysrKysrKysrKysrLS0tLS0tCiBz cmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNSAr LQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCAgICAgICAgICAgICAgfCAg IDcgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggICAgICAgICAg fCAgIDIgKwogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgICAg ICAgfCAgIDggKwogLi4uL3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1fcGFyYWxsZWxfY29uZmxp Y3QucGwgfCAgNjkgKysrKysrKy0KIDEzIGZpbGVzIGNoYW5nZWQsIDI3NCBpbnNlcnRpb25zKCsp LCA1OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dt bCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IDEzMDM2MWYuLjY5MTI1NzEgMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9j YXRhbG9ncy5zZ21sCkBAIC03OTQwLDYgKzc5NDAsMTYgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFj ZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+ JmwKIAogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnki PjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+c3Vi cmV0cnk8L3N0cnVjdGZpZWxkPiA8dHlwZT5ib29sPC90eXBlPgorICAgICAgPC9wYXJhPgorICAg ICAgPHBhcmE+CisgICAgICAgVHJ1ZSBpZiBwcmV2aW91cyBjaGFuZ2UgZmFpbGVkIHRvIGJlIGFw cGxpZWQgd2hpbGUgdGhlcmUgd2VyZSBhbnkKKyAgICAgICBhY3RpdmUgcGFyYWxsZWwgYXBwbHkg d29ya2VycywgbmVjZXNzaXRhdGluZyBhIHJldHJ5LgorICAgICAgPC9wYXJhPjwvZW50cnk+Cisg ICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJs ZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgogICAgICAgIDxzdHJ1Y3Rm aWVsZD5zdWJjb25uaW5mbzwvc3RydWN0ZmllbGQ+IDx0eXBlPnRleHQ8L3R5cGU+CiAgICAgICA8 L3BhcmE+CiAgICAgICA8cGFyYT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJl cGxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCmlu ZGV4IGYzNjY3MTAuLjEzMTFmMzMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJl cGxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dt bApAQCAtMTUwMCwxMiArMTUwMCwxMSBAQCBDT05URVhUOiAgcHJvY2Vzc2luZyByZW1vdGUgZGF0 YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luICJwZ18xNjM5NSIgZHVyaW5nICJJTlNFUgogCiAgIDxw YXJhPgogICAgV2hlbiB0aGUgc3RyZWFtaW5nIG1vZGUgaXMgPGxpdGVyYWw+cGFyYWxsZWw8L2xp dGVyYWw+LCB0aGUgZmluaXNoIExTTiBvZgotICAgZmFpbGVkIHRyYW5zYWN0aW9ucyBtYXkgbm90 IGJlIGxvZ2dlZC4gSW4gdGhhdCBjYXNlLCBpdCBtYXkgYmUgbmVjZXNzYXJ5IHRvCi0gICBjaGFu Z2UgdGhlIHN0cmVhbWluZyBtb2RlIHRvIDxsaXRlcmFsPm9uPC9saXRlcmFsPiBvciA8bGl0ZXJh bD5vZmY8L2xpdGVyYWw+IGFuZAotICAgY2F1c2UgdGhlIHNhbWUgY29uZmxpY3RzIGFnYWluIHNv IHRoZSBmaW5pc2ggTFNOIG9mIHRoZSBmYWlsZWQgdHJhbnNhY3Rpb24gd2lsbAotICAgYmUgd3Jp dHRlbiB0byB0aGUgc2VydmVyIGxvZy4gRm9yIHRoZSB1c2FnZSBvZiBmaW5pc2ggTFNOLCBwbGVh c2UgcmVmZXIgdG8gPGxpbmsKLSAgIGxpbmtlbmQ9InNxbC1hbHRlcnN1YnNjcmlwdGlvbiI+PGNv bW1hbmQ+QUxURVIgU1VCU0NSSVBUSU9OIC4uLgotICAgU0tJUDwvY29tbWFuZD48L2xpbms+Lgor ICAgZmFpbGVkIHRyYW5zYWN0aW9ucyBtYXkgbm90IGJlIGxvZ2dlZC4gSW4gdGhhdCBjYXNlLCB0 aGUgZmFpbGVkIHRyYW5zYWN0aW9uCisgICB3aWxsIGJlIHJldHJpZWQgaW4gPGxpdGVyYWw+c3Ry ZWFtaW5nID0gb248L2xpdGVyYWw+IG1vZGUuIElmIGl0IGZhaWxzCisgICBhZ2FpbiwgdGhlIGZp bmlzaCBMU04gb2YgdGhlIGZhaWxlZCB0cmFuc2FjdGlvbiB3aWxsIGJlIHdyaXR0ZW4gdG8gdGhl CisgICBzZXJ2ZXIgbG9nLiBGb3IgdGhlIHVzYWdlIG9mIGZpbmlzaCBMU04sIHBsZWFzZSByZWZl ciB0bworICAgPGxpbmsgbGlua2VuZD0ic3FsLWFsdGVyc3Vic2NyaXB0aW9uIj48Y29tbWFuZD5B TFRFUiBTVUJTQ1JJUFRJT04gLi4uIFNLSVA8L2NvbW1hbmQ+PC9saW5rPi4KICAgPC9wYXJhPgog IDwvc2VjdDE+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlw dGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKaW5k ZXggZjE3M2EwOS4uNjRkNTgwMiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf c3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0 aW9uLnNnbWwKQEAgLTI1MSw2ICsyNTEsMTEgQEAgQ1JFQVRFIFNVQlNDUklQVElPTiA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3Vic2NyaXB0aW9uX25hbWU8L3JlcGxhY2VhYmwKICAg ICAgICAgICB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuIE5vdGUgdGhhdCBpZiBhbiBlcnJvciBo YXBwZW5zIGluIGEKICAgICAgICAgICBwYXJhbGxlbCBhcHBseSB3b3JrZXIsIHRoZSBmaW5pc2gg TFNOIG9mIHRoZSByZW1vdGUgdHJhbnNhY3Rpb24KICAgICAgICAgICBtaWdodCBub3QgYmUgcmVw b3J0ZWQgaW4gdGhlIHNlcnZlciBsb2cuCisgICAgICAgICAgV2hlbiBhcHBseWluZyBzdHJlYW1p bmcgdHJhbnNhY3Rpb25zLCBpZiBhIGRlYWRsb2NrIGlzIGRldGVjdGVkLCB0aGUKKyAgICAgICAg ICBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2lsbCBleGl0IHdpdGggYW4gZXJyb3IuIFRoZQorICAg ICAgICAgIDxsaXRlcmFsPnBhcmFsbGVsPC9saXRlcmFsPiBtb2RlIGlzIGRpc3JlZ2FyZGVkIHdo ZW4gcmV0cnlpbmc7CisgICAgICAgICAgaW5zdGVhZCB0aGUgdHJhbnNhY3Rpb24gd2lsbCBiZSBh cHBsaWVkIHVzaW5nIDxsaXRlcmFsPm9uPC9saXRlcmFsPgorICAgICAgICAgIG1vZGUuCiAgICAg ICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92YXJsaXN0ZW50cnk+ CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jIGIvc3Jj L2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYwppbmRleCBhNTA2ZmMzLi43MjNiMTQx IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCisrKyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMKQEAgLTcxLDYgKzcxLDcgQEAg R2V0U3Vic2NyaXB0aW9uKE9pZCBzdWJpZCwgYm9vbCBtaXNzaW5nX29rKQogCXN1Yi0+c3RyZWFt ID0gc3ViZm9ybS0+c3Vic3RyZWFtOwogCXN1Yi0+dHdvcGhhc2VzdGF0ZSA9IHN1YmZvcm0tPnN1 YnR3b3BoYXNlc3RhdGU7CiAJc3ViLT5kaXNhYmxlb25lcnIgPSBzdWJmb3JtLT5zdWJkaXNhYmxl b25lcnI7CisJc3ViLT5yZXRyeSA9IHN1YmZvcm0tPnN1YnJldHJ5OwogCiAJLyogR2V0IGNvbm5p bmZvICovCiAJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoU1VCU0NSSVBUSU9OT0lELApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IDJkODEwNGIuLmMyYzdkOGEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTEzMDEsNyArMTMwMSw3IEBAIFJFVk9LRSBB TEwgT04gcGdfcmVwbGljYXRpb25fb3JpZ2luX3N0YXR1cyBGUk9NIHB1YmxpYzsKIFJFVk9LRSBB TEwgT04gcGdfc3Vic2NyaXB0aW9uIEZST00gcHVibGljOwogR1JBTlQgU0VMRUNUIChvaWQsIHN1 YmRiaWQsIHN1YnNraXBsc24sIHN1Ym5hbWUsIHN1Ym93bmVyLCBzdWJlbmFibGVkLAogICAgICAg ICAgICAgICBzdWJiaW5hcnksIHN1YnN0cmVhbSwgc3VidHdvcGhhc2VzdGF0ZSwgc3ViZGlzYWJs ZW9uZXJyLAotICAgICAgICAgICAgICBzdWJzbG90bmFtZSwgc3Vic3luY2NvbW1pdCwgc3VicHVi bGljYXRpb25zLCBzdWJvcmlnaW4pCisgICAgICAgICAgICAgIHN1YnJldHJ5LCBzdWJzbG90bmFt ZSwgc3Vic3luY2NvbW1pdCwgc3VicHVibGljYXRpb25zLCBzdWJvcmlnaW4pCiAgICAgT04gcGdf c3Vic2NyaXB0aW9uIFRPIHB1YmxpYzsKIAogQ1JFQVRFIFZJRVcgcGdfc3RhdF9zdWJzY3JpcHRp b25fc3RhdHMgQVMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlv bmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwppbmRleCAw Y2VjYmM3Li5mNzIyN2FhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3Jp cHRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5j CkBAIC02MzQsNiArNjM0LDcgQEAgQ3JlYXRlU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJCQkJIExPR0lDQUxSRVBfVFdPUEhB U0VfU1RBVEVfUEVORElORyA6CiAJCQkJCSBMT0dJQ0FMUkVQX1RXT1BIQVNFX1NUQVRFX0RJU0FC TEVEKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViZGlzYWJsZW9uZXJyIC0gMV0g PSBCb29sR2V0RGF0dW0ob3B0cy5kaXNhYmxlb25lcnIpOworCXZhbHVlc1tBbnVtX3BnX3N1YnNj cmlwdGlvbl9zdWJyZXRyeSAtIDFdID0gQm9vbEdldERhdHVtKGZhbHNlKTsKIAl2YWx1ZXNbQW51 bV9wZ19zdWJzY3JpcHRpb25fc3ViY29ubmluZm8gLSAxXSA9CiAJCUNTdHJpbmdHZXRUZXh0RGF0 dW0oY29ubmluZm8pOwogCWlmIChvcHRzLnNsb3RfbmFtZSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKaW5kZXggZjkzODZi MC4uZjU4NGZkZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9h cHBseXBhcmFsbGVsd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9hcHBseXBhcmFsbGVsd29ya2VyLmMKQEAgLTI5OCw2ICsyOTgsMTcgQEAgcGFfY2FuX3N0YXJ0 KFRyYW5zYWN0aW9uSWQgeGlkKQogCWlmICghQWxsVGFibGVzeW5jc1JlYWR5KCkpCiAJCXJldHVy biBmYWxzZTsKIAorCS8qCisJICogRG9uJ3QgdXNlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgZm9y IHJldHJpZXMsIGJlY2F1c2UgaXQgaXMgcG9zc2libGUKKwkgKiB0aGF0IGEgZGVhZGxvY2sgd2Fz IGRldGVjdGVkIHRoZSBsYXN0IHRpbWUgd2UgdHJpZWQgdG8gYXBwbHkgYQorCSAqIHRyYW5zYWN0 aW9uIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorCSAqLworCWlmIChNeVN1YnNjcmlw dGlvbi0+cmV0cnkpCisJeworCQllbG9nKERFQlVHMSwgInBhcmFsbGVsIGFwcGx5IHdvcmtlcnMg YXJlIG5vdCB1c2VkIGZvciByZXRyaWVzIik7CisJCXJldHVybiBmYWxzZTsKKwl9CisKIAlyZXR1 cm4gdHJ1ZTsKIH0KIApAQCAtMTY4NSwzICsxNjk2LDIyIEBAIHBhX2RlY3JfYW5kX3dhaXRfc3Ry ZWFtX2Jsb2NrKFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKndzaGFyZWQpCiAJd3NoYXJlZC0+ cGFfd2FpdF9mb3Jfc3RyZWFtID0gZmFsc2U7CiAJU3BpbkxvY2tSZWxlYXNlKCZ3c2hhcmVkLT5t dXRleCk7CiB9CisKKy8qIENoZWNrIGlmIGFueSBhY3RpdmUgcGFyYWxsZWwgYXBwbHkgd29ya2Vy cy4gKi8KK2Jvb2wKK3BhX2hhdmVfYWN0aXZlX3dvcmtlcih2b2lkKQoreworCUxpc3RDZWxsICAg KmxjOworCisJZm9yZWFjaChsYywgUGFyYWxsZWxBcHBseVdvcmtlclBvb2wpCisJeworCQlQYXJh bGxlbEFwcGx5V29ya2VySW5mbyAqdG1wX3dpbmZvOworCisJCXRtcF93aW5mbyA9IChQYXJhbGxl bEFwcGx5V29ya2VySW5mbyAqKSBsZmlyc3QobGMpOworCisJCWlmICh0bXBfd2luZm8tPmluX3Vz ZSkKKwkJCXJldHVybiB0cnVlOworCX0KKworCXJldHVybiBmYWxzZTsKK30KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IGFhNzNkMjkuLmQwNTUzNjUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMzkzLDcgKzM5Myw3IEBA IHN0YXRpYyB2b2lkIHNlbmRfZmVlZGJhY2soWExvZ1JlY1B0ciByZWN2cG9zLCBib29sIGZvcmNl LCBib29sIHJlcXVlc3RSZXBseSk7CiAKIHN0YXRpYyB2b2lkIHN0b3JlX2ZsdXNoX3Bvc2l0aW9u KFhMb2dSZWNQdHIgcmVtb3RlX2xzbiwgWExvZ1JlY1B0ciBsb2NhbF9sc24pOwogCi1zdGF0aWMg dm9pZCBEaXNhYmxlU3Vic2NyaXB0aW9uQW5kRXhpdCh2b2lkKTsKK3N0YXRpYyB2b2lkIERpc2Fi bGVTdWJzY3JpcHRpb25PbkVycm9yKHZvaWQpOwogCiBzdGF0aWMgdm9pZCBhcHBseV9oYW5kbGVf Y29tbWl0X2ludGVybmFsKExvZ2ljYWxSZXBDb21taXREYXRhICpjb21taXRfZGF0YSk7CiBzdGF0 aWMgdm9pZCBhcHBseV9oYW5kbGVfaW5zZXJ0X2ludGVybmFsKEFwcGx5RXhlY3V0aW9uRGF0YSAq ZWRhdGEsCkBAIC00MzAsNiArNDMwLDggQEAgc3RhdGljIGlubGluZSB2b2lkIHJlc2V0X2FwcGx5 X2Vycm9yX2NvbnRleHRfaW5mbyh2b2lkKTsKIHN0YXRpYyBUcmFuc0FwcGx5QWN0aW9uIGdldF90 cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQsCiAJCQkJCQkJCQkJCQkJ IFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICoqd2luZm8pOwogCitzdGF0aWMgdm9pZCBzZXRfc3Vi c2NyaXB0aW9uX3JldHJ5KGJvb2wgcmV0cnkpOworCiAvKgogICogUmV0dXJuIHRoZSBuYW1lIG9m IHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlci4KICAqLwpAQCAtMTAzNiw2ICsxMDM4LDkg QEAgYXBwbHlfaGFuZGxlX2NvbW1pdChTdHJpbmdJbmZvIHMpCiAJLyogUHJvY2VzcyBhbnkgdGFi bGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNz X3N5bmNpbmdfdGFibGVzKGNvbW1pdF9kYXRhLmVuZF9sc24pOwogCisJLyogUmVzZXQgdGhlIHJl dHJ5IGZsYWcuICovCisJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CisKIAlwZ3N0YXRf cmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5VTEwpOwogCXJlc2V0X2FwcGx5X2Vycm9yX2Nv bnRleHRfaW5mbygpOwogfQpAQCAtMTE0Miw2ICsxMTQ3LDkgQEAgYXBwbHlfaGFuZGxlX3ByZXBh cmUoU3RyaW5nSW5mbyBzKQogCiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKKwkv KiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNl KTsKKwogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQg aW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhwcmVwYXJlX2RhdGEuZW5k X2xzbik7CiAKQEAgLTExOTgsNiArMTIwNiw5IEBAIGFwcGx5X2hhbmRsZV9jb21taXRfcHJlcGFy ZWQoU3RyaW5nSW5mbyBzKQogCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRf bHNuLCBYYWN0TGFzdENvbW1pdEVuZCk7CiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7 CiAKKwkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5 KGZhbHNlKTsKKwogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJv bml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhwcmVwYXJlX2Rh dGEuZW5kX2xzbik7CiAKQEAgLTEyNTksNiArMTI3MCw5IEBAIGFwcGx5X2hhbmRsZV9yb2xsYmFj a19wcmVwYXJlZChTdHJpbmdJbmZvIHMpCiAJc3RvcmVfZmx1c2hfcG9zaXRpb24ocm9sbGJhY2tf ZGF0YS5yb2xsYmFja19lbmRfbHNuLCBYYWN0TGFzdENvbW1pdEVuZCk7CiAJaW5fcmVtb3RlX3Ry YW5zYWN0aW9uID0gZmFsc2U7CiAKKwkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwlzZXRf c3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKKwogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0 IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5n X3RhYmxlcyhyb2xsYmFja19kYXRhLnJvbGxiYWNrX2VuZF9sc24pOwogCkBAIC0xNDE4LDYgKzE0 MzIsOSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCQkJYnJl YWs7CiAJfQogCisJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJc2V0X3N1YnNjcmlwdGlv bl9yZXRyeShmYWxzZSk7CisKIAlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOwogCiAJLyogUHJv Y2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4g Ki8KQEAgLTE5MzAsNiArMTk0NywxMCBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmlu Z0luZm8gcykKIAkJCWJyZWFrOwogCX0KIAorCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLwor CWlmICh0b3BsZXZlbF94YWN0KQorCQlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKKwog CXJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOwogfQogCkBAIC0yMjM5LDYgKzIyNjAs OSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIHMpCiAJLyogUHJvY2Vz cyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8K IAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKGNvbW1pdF9kYXRhLmVuZF9sc24pOwogCisJLyogUmVz ZXQgdGhlIHJldHJ5IGZsYWcuICovCisJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CisK IAlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5VTEwpOwogCiAJcmVzZXRfYXBw bHlfZXJyb3JfY29udGV4dF9pbmZvKCk7CkBAIC00MzM3LDIwICs0MzYxLDI4IEBAIHN0YXJ0X3Rh YmxlX3N5bmMoWExvZ1JlY1B0ciAqb3JpZ2luX3N0YXJ0cG9zLCBjaGFyICoqbXlzbG90bmFtZSkK IAl9CiAJUEdfQ0FUQ0goKTsKIAl7CisJCS8qCisJCSAqIEVtaXQgdGhlIGVycm9yIG1lc3NhZ2Us IGFuZCByZWNvdmVyIGZyb20gdGhlIGVycm9yIHN0YXRlIHRvIGFuIGlkbGUKKwkJICogc3RhdGUK KwkJICovCisJCUhPTERfSU5URVJSVVBUUygpOworCisJCUVtaXRFcnJvclJlcG9ydCgpOworCQlB Ym9ydE91dE9mQW55VHJhbnNhY3Rpb24oKTsKKwkJRmx1c2hFcnJvclN0YXRlKCk7CisKKwkJUkVT VU1FX0lOVEVSUlVQVFMoKTsKKworCQkvKiBSZXBvcnQgdGhlIHdvcmtlciBmYWlsZWQgZHVyaW5n IHRhYmxlIHN5bmNocm9uaXphdGlvbiAqLworCQlwZ3N0YXRfcmVwb3J0X3N1YnNjcmlwdGlvbl9l cnJvcihNeVN1YnNjcmlwdGlvbi0+b2lkLCBmYWxzZSk7CisKIAkJaWYgKE15U3Vic2NyaXB0aW9u LT5kaXNhYmxlb25lcnIpCi0JCQlEaXNhYmxlU3Vic2NyaXB0aW9uQW5kRXhpdCgpOwotCQllbHNl Ci0JCXsKLQkJCS8qCi0JCQkgKiBSZXBvcnQgdGhlIHdvcmtlciBmYWlsZWQgZHVyaW5nIHRhYmxl IHN5bmNocm9uaXphdGlvbi4gQWJvcnQKLQkJCSAqIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uIHNv IHRoYXQgdGhlIHN0YXRzIG1lc3NhZ2UgaXMgc2VudCBpbiBhbgotCQkJICogaWRsZSBzdGF0ZS4K LQkJCSAqLwotCQkJQWJvcnRPdXRPZkFueVRyYW5zYWN0aW9uKCk7Ci0JCQlwZ3N0YXRfcmVwb3J0 X3N1YnNjcmlwdGlvbl9lcnJvcihNeVN1YnNjcmlwdGlvbi0+b2lkLCBmYWxzZSk7CisJCQlEaXNh YmxlU3Vic2NyaXB0aW9uT25FcnJvcigpOwogCi0JCQlQR19SRV9USFJPVygpOwotCQl9CisJCS8q IFNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwkJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeSh0cnVlKTsK KworCQlwcm9jX2V4aXQoMCk7CiAJfQogCVBHX0VORF9UUlkoKTsKIApAQCAtNDM3NSwyMCArNDQw NywyNyBAQCBzdGFydF9hcHBseShYTG9nUmVjUHRyIG9yaWdpbl9zdGFydHBvcykKIAl9CiAJUEdf Q0FUQ0goKTsKIAl7CisJCS8qCisJCSAqIEVtaXQgdGhlIGVycm9yIG1lc3NhZ2UsIGFuZCByZWNv dmVyIGZyb20gdGhlIGVycm9yIHN0YXRlIHRvIGFuIGlkbGUKKwkJICogc3RhdGUKKwkJICovCisJ CUhPTERfSU5URVJSVVBUUygpOworCisJCUVtaXRFcnJvclJlcG9ydCgpOworCQlBYm9ydE91dE9m QW55VHJhbnNhY3Rpb24oKTsKKwkJRmx1c2hFcnJvclN0YXRlKCk7CisKKwkJUkVTVU1FX0lOVEVS UlVQVFMoKTsKKworCQkvKiBSZXBvcnQgdGhlIHdvcmtlciBmYWlsZWQgd2hpbGUgYXBwbHlpbmcg Y2hhbmdlcyAqLworCQlwZ3N0YXRfcmVwb3J0X3N1YnNjcmlwdGlvbl9lcnJvcihNeVN1YnNjcmlw dGlvbi0+b2lkLAorCQkJCQkJCQkJCSAhYW1fdGFibGVzeW5jX3dvcmtlcigpKTsKKwogCQlpZiAo TXlTdWJzY3JpcHRpb24tPmRpc2FibGVvbmVycikKLQkJCURpc2FibGVTdWJzY3JpcHRpb25BbmRF eGl0KCk7Ci0JCWVsc2UKLQkJewotCQkJLyoKLQkJCSAqIFJlcG9ydCB0aGUgd29ya2VyIGZhaWxl ZCB3aGlsZSBhcHBseWluZyBjaGFuZ2VzLiBBYm9ydCB0aGUKLQkJCSAqIGN1cnJlbnQgdHJhbnNh Y3Rpb24gc28gdGhhdCB0aGUgc3RhdHMgbWVzc2FnZSBpcyBzZW50IGluIGFuCi0JCQkgKiBpZGxl IHN0YXRlLgotCQkJICovCi0JCQlBYm9ydE91dE9mQW55VHJhbnNhY3Rpb24oKTsKLQkJCXBnc3Rh dF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15U3Vic2NyaXB0aW9uLT5vaWQsICFhbV90YWJs ZXN5bmNfd29ya2VyKCkpOworCQkJRGlzYWJsZVN1YnNjcmlwdGlvbk9uRXJyb3IoKTsKIAotCQkJ UEdfUkVfVEhST1coKTsKLQkJfQorCQkvKiBTZXQgdGhlIHJldHJ5IGZsYWcuICovCisJCXNldF9z dWJzY3JpcHRpb25fcmV0cnkodHJ1ZSk7CiAJfQogCVBHX0VORF9UUlkoKTsKIH0KQEAgLTQ2NjQs MzkgKzQ3MDMsMjAgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogfQogCiAvKgot ICogQWZ0ZXIgZXJyb3IgcmVjb3ZlcnksIGRpc2FibGUgdGhlIHN1YnNjcmlwdGlvbiBpbiBhIG5l dyB0cmFuc2FjdGlvbgotICogYW5kIGV4aXQgY2xlYW5seS4KKyAqIERpc2FibGUgdGhlIHN1YnNj cmlwdGlvbiBpbiBhIG5ldyB0cmFuc2FjdGlvbi4KICAqLwogc3RhdGljIHZvaWQKLURpc2FibGVT dWJzY3JpcHRpb25BbmRFeGl0KHZvaWQpCitEaXNhYmxlU3Vic2NyaXB0aW9uT25FcnJvcih2b2lk KQogewotCS8qCi0JICogRW1pdCB0aGUgZXJyb3IgbWVzc2FnZSwgYW5kIHJlY292ZXIgZnJvbSB0 aGUgZXJyb3Igc3RhdGUgdG8gYW4gaWRsZQotCSAqIHN0YXRlCi0JICovCi0JSE9MRF9JTlRFUlJV UFRTKCk7Ci0KLQlFbWl0RXJyb3JSZXBvcnQoKTsKLQlBYm9ydE91dE9mQW55VHJhbnNhY3Rpb24o KTsKLQlGbHVzaEVycm9yU3RhdGUoKTsKLQotCVJFU1VNRV9JTlRFUlJVUFRTKCk7Ci0KLQkvKiBS ZXBvcnQgdGhlIHdvcmtlciBmYWlsZWQgZHVyaW5nIGVpdGhlciB0YWJsZSBzeW5jaHJvbml6YXRp b24gb3IgYXBwbHkgKi8KLQlwZ3N0YXRfcmVwb3J0X3N1YnNjcmlwdGlvbl9lcnJvcihNeUxvZ2lj YWxSZXBXb3JrZXItPnN1YmlkLAotCQkJCQkJCQkJICFhbV90YWJsZXN5bmNfd29ya2VyKCkpOwot CiAJLyogRGlzYWJsZSB0aGUgc3Vic2NyaXB0aW9uICovCiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1h bmQoKTsKIAlEaXNhYmxlU3Vic2NyaXB0aW9uKE15U3Vic2NyaXB0aW9uLT5vaWQpOwogCUNvbW1p dFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JLyogTm90aWZ5IHRoZSBzdWJzY3JpcHRpb24gaGFz IGJlZW4gZGlzYWJsZWQgYW5kIGV4aXQgKi8KKwkvKiBOb3RpZnkgdGhlIHN1YnNjcmlwdGlvbiBo YXMgYmVlbiBkaXNhYmxlZCAqLwogCWVyZXBvcnQoTE9HLAogCQkJZXJybXNnKCJzdWJzY3JpcHRp b24gXCIlc1wiIGhhcyBiZWVuIGRpc2FibGVkIGJlY2F1c2Ugb2YgYW4gZXJyb3IiLAogCQkJCSAg IE15U3Vic2NyaXB0aW9uLT5uYW1lKSk7Ci0KLQlwcm9jX2V4aXQoMCk7CiB9CiAKIC8qCkBAIC00 OTg5LDMgKzUwMDksNzEgQEAgZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihUcmFuc2FjdGlv bklkIHhpZCwgUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKip3aW5mbykKIAkJcmV0dXJuIFRSQU5T X0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOwogCX0KIH0KKworLyoKKyAqIFNldCBzdWJyZXRyeSBv ZiBwZ19zdWJzY3JpcHRpb24gY2F0YWxvZy4KKyAqCisgKiBJZiByZXRyeSBpcyB0cnVlLCBzdWJz Y3JpYmVyIGlzIGFib3V0IHRvIGV4aXQgd2l0aCBhbiBlcnJvci4gT3RoZXJ3aXNlLCBpdAorICog bWVhbnMgdGhhdCB0aGUgdHJhbnNhY3Rpb24gd2FzIGFwcGxpZWQgc3VjY2Vzc2Z1bGx5LgorICov CitzdGF0aWMgdm9pZAorc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShib29sIHJldHJ5KQoreworCVJl bGF0aW9uCXJlbDsKKwlIZWFwVHVwbGUJdHVwOworCWJvb2wJCXN0YXJ0ZWRfdHggPSBmYWxzZTsK Kwlib29sCQludWxsc1tOYXR0c19wZ19zdWJzY3JpcHRpb25dOworCWJvb2wJCXJlcGxhY2VzW05h dHRzX3BnX3N1YnNjcmlwdGlvbl07CisJRGF0dW0JCXZhbHVlc1tOYXR0c19wZ19zdWJzY3JpcHRp b25dOworCisJLyogRmFzdCBwYXRoIC0gaWYgbm8gc3RhdGUgY2hhbmdlIHRoZW4gbm90aGluZyB0 byBkbyAqLworCWlmIChNeVN1YnNjcmlwdGlvbi0+cmV0cnkgPT0gcmV0cnkpCisJCXJldHVybjsK KworCS8qIEZhc3QgcGF0aCAtIHNraXAgZm9yIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgKi8KKwlp ZiAoYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCisJCXJldHVybjsKKworCS8qIEZhc3QgcGF0 aCAtIHNraXAgc2V0IHJldHJ5IGlmIG5vIGFjdGl2ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzICov CisJaWYgKHJldHJ5ICYmICFwYV9oYXZlX2FjdGl2ZV93b3JrZXIoKSkKKwkJcmV0dXJuOworCisJ aWYgKCFJc1RyYW5zYWN0aW9uU3RhdGUoKSkKKwl7CisJCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5k KCk7CisJCXN0YXJ0ZWRfdHggPSB0cnVlOworCX0KKworCS8qIExvb2sgdXAgdGhlIHN1YnNjcmlw dGlvbiBpbiB0aGUgY2F0YWxvZyAqLworCXJlbCA9IHRhYmxlX29wZW4oU3Vic2NyaXB0aW9uUmVs YXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CisJdHVwID0gU2VhcmNoU3lzQ2FjaGVDb3B5MShT VUJTQ1JJUFRJT05PSUQsCisJCQkJCQkJICBPYmplY3RJZEdldERhdHVtKE15U3Vic2NyaXB0aW9u LT5vaWQpKTsKKworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXApKQorCQllbG9nKEVSUk9SLCAi c3Vic2NyaXB0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsIE15U3Vic2NyaXB0aW9uLT5uYW1l KTsKKworCUxvY2tTaGFyZWRPYmplY3QoU3Vic2NyaXB0aW9uUmVsYXRpb25JZCwgTXlTdWJzY3Jp cHRpb24tPm9pZCwgMCwKKwkJCQkJIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkvKiBGb3JtIGEgbmV3 IHR1cGxlLiAqLworCW1lbXNldCh2YWx1ZXMsIDAsIHNpemVvZih2YWx1ZXMpKTsKKwltZW1zZXQo bnVsbHMsIGZhbHNlLCBzaXplb2YobnVsbHMpKTsKKwltZW1zZXQocmVwbGFjZXMsIGZhbHNlLCBz aXplb2YocmVwbGFjZXMpKTsKKworCS8qIFNldCBzdWJyZXRyeSAqLworCXZhbHVlc1tBbnVtX3Bn X3N1YnNjcmlwdGlvbl9zdWJyZXRyeSAtIDFdID0gQm9vbEdldERhdHVtKHJldHJ5KTsKKwlyZXBs YWNlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJyZXRyeSAtIDFdID0gdHJ1ZTsKKworCXR1cCA9 IGhlYXBfbW9kaWZ5X3R1cGxlKHR1cCwgUmVsYXRpb25HZXREZXNjcihyZWwpLCB2YWx1ZXMsIG51 bGxzLAorCQkJCQkJCXJlcGxhY2VzKTsKKworCS8qIFVwZGF0ZSB0aGUgY2F0YWxvZy4gKi8KKwlD YXRhbG9nVHVwbGVVcGRhdGUocmVsLCAmdHVwLT50X3NlbGYsIHR1cCk7CisKKwkvKiBDbGVhbnVw LiAqLworCWhlYXBfZnJlZXR1cGxlKHR1cCk7CisJdGFibGVfY2xvc2UocmVsLCBOb0xvY2spOwor CisJaWYgKHN0YXJ0ZWRfdHgpCisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworfQpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19k dW1wLmMKaW5kZXggZmVjNmQyMS4uOGMyY2M3OCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1w L3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC00NTQzLDggKzQ1 NDMsOSBAQCBnZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUgKmZvdXQpCiAJbnR1cHMgPSBQUW50dXBs ZXMocmVzKTsKIAogCS8qCi0JICogR2V0IHN1YnNjcmlwdGlvbiBmaWVsZHMuIFdlIGRvbid0IGlu Y2x1ZGUgc3Vic2tpcGxzbiBpbiB0aGUgZHVtcCBhcwotCSAqIGFmdGVyIHJlc3RvcmluZyB0aGUg ZHVtcCB0aGlzIHZhbHVlIG1heSBubyBsb25nZXIgYmUgcmVsZXZhbnQuCisJICogR2V0IHN1YnNj cmlwdGlvbiBmaWVsZHMuIFdlIGRvbid0IGluY2x1ZGUgc3Vic2tpcGxzbiBhbmQgc3VicmV0cnkg aW4KKwkgKiB0aGUgZHVtcCBhcyBhZnRlciByZXN0b3JpbmcgdGhlIGR1bXAgdGhpcyB2YWx1ZSBt YXkgbm8gbG9uZ2VyIGJlCisJICogcmVsZXZhbnQuCiAJICovCiAJaV90YWJsZW9pZCA9IFBRZm51 bWJlcihyZXMsICJ0YWJsZW9pZCIpOwogCWlfb2lkID0gUFFmbnVtYmVyKHJlcywgIm9pZCIpOwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKaW5kZXggNWI5ZTVhMy4uZDNiMTU4ZiAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaAorKysgYi9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCkBAIC04OCw2ICs4OCwxMSBAQCBD QVRBTE9HKHBnX3N1YnNjcmlwdGlvbiw2MTAwLFN1YnNjcmlwdGlvblJlbGF0aW9uSWQpIEJLSV9T SEFSRURfUkVMQVRJT04gQktJX1JPVwogCWJvb2wJCXN1YmRpc2FibGVvbmVycjsJLyogVHJ1ZSBp ZiBhIHdvcmtlciBlcnJvciBzaG91bGQgY2F1c2UgdGhlCiAJCQkJCQkJCQkgKiBzdWJzY3JpcHRp b24gdG8gYmUgZGlzYWJsZWQgKi8KIAorCWJvb2wJCXN1YnJldHJ5IEJLSV9ERUZBVUxUKGYpOwkv KiBUcnVlIGlmIHByZXZpb3VzIGNoYW5nZSBmYWlsZWQKKwkJCQkJCQkJCQkJICogdG8gYmUgYXBw bGllZCB3aGlsZSB0aGVyZSB3ZXJlCisJCQkJCQkJCQkJCSAqIGFueSBhY3RpdmUgcGFyYWxsZWwg YXBwbHkKKwkJCQkJCQkJCQkJICogd29ya2VycyAqLworCiAjaWZkZWYgQ0FUQUxPR19WQVJMRU4J CQkvKiB2YXJpYWJsZS1sZW5ndGggZmllbGRzIHN0YXJ0IGhlcmUgKi8KIAkvKiBDb25uZWN0aW9u IHN0cmluZyB0byB0aGUgcHVibGlzaGVyICovCiAJdGV4dAkJc3ViY29ubmluZm8gQktJX0ZPUkNF X05PVF9OVUxMOwpAQCAtMTMxLDYgKzEzNiw4IEBAIHR5cGVkZWYgc3RydWN0IFN1YnNjcmlwdGlv bgogCWJvb2wJCWRpc2FibGVvbmVycjsJLyogSW5kaWNhdGVzIGlmIHRoZSBzdWJzY3JpcHRpb24g c2hvdWxkIGJlCiAJCQkJCQkJCSAqIGF1dG9tYXRpY2FsbHkgZGlzYWJsZWQgaWYgYSB3b3JrZXIg ZXJyb3IKIAkJCQkJCQkJICogb2NjdXJzICovCisJYm9vbAkJcmV0cnk7CQkJLyogSW5kaWNhdGVz IGlmIHByZXZpb3VzIGNoYW5nZSBmYWlsZWQgdG8gYmUKKwkJCQkJCQkJICogYXBwbGllZCB1c2lu ZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlciAqLwogCWNoYXIJICAgKmNvbm5pbmZvOwkJLyogQ29u bmVjdGlvbiBzdHJpbmcgdG8gdGhlIHB1Ymxpc2hlciAqLwogCWNoYXIJICAgKnNsb3RuYW1lOwkJ LyogTmFtZSBvZiB0aGUgcmVwbGljYXRpb24gc2xvdCAqLwogCWNoYXIJICAgKnN5bmNjb21taXQ7 CQkvKiBTeW5jaHJvbm91cyBjb21taXQgc2V0dGluZyBmb3Igd29ya2VyICovCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCmluZGV4IDBiN2E0M2UuLjJmYmI3ZTAgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCisrKyBi L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCkBAIC0yOTcsNiArMjk3 LDggQEAgZXh0ZXJuIHZvaWQgcGFfdW5sb2NrX3RyYW5zYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlk LCBMT0NLTU9ERSBsb2NrbW9kZSk7CiBleHRlcm4gdm9pZCBwYV9pbmNyZW1lbnRfc3RyZWFtX2Js b2NrKFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKndzaGFyZWQpOwogZXh0ZXJuIHZvaWQgcGFf ZGVjcl9hbmRfd2FpdF9zdHJlYW1fYmxvY2soUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqd3No YXJlZCk7CiAKK2V4dGVybiBib29sIHBhX2hhdmVfYWN0aXZlX3dvcmtlcih2b2lkKTsKKwogI2Rl ZmluZSBpc1BhcmFsbGVsQXBwbHlXb3JrZXIod29ya2VyKSAoKHdvcmtlciktPmFwcGx5X2xlYWRl cl9waWQgIT0gSW52YWxpZFBpZCkKIAogc3RhdGljIGlubGluZSBib29sCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE1X3N0cmVhbS5wbAppbmRleCAzODk0MWZmLi44OTBmYTg4IDEwMDY0NAotLS0gYS9z cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKQEAgLTg3LDggKzg3LDE2IEBAIHN1YiB0ZXN0X3N0cmVh bWluZwogCQknY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJyk7CiAK IAkjIFRlc3QgdGhlIHN0cmVhbWluZyBpbiBiaW5hcnkgbW9kZQorCW15ICRvbGRwaWQgPSAkbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIHBpZCBGUk9NIHBn X3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5E IHN0YXRlID0gJ3N0cmVhbWluZyc7IgorCSk7CiAJJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCiAJCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQgKGJpbmFyeSA9 IG9uKSIpOworCSRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAor CQkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBh cHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisJ ICApCisJICBvciBkaWUKKwkgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8g cmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOwogCiAJIyBDaGVjayB0aGUgc3Vi c2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiAJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXIt PmxvZ2ZpbGU7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFt X3BhcmFsbGVsX2NvbmZsaWN0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVh bV9wYXJhbGxlbF9jb25mbGljdC5wbAppbmRleCA1OWU3ZTc1Li5iMGU3YjY3IDEwMDY0NAotLS0g YS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtX3BhcmFsbGVsX2NvbmZsaWN0LnBs CisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1fcGFyYWxsZWxfY29uZmxp Y3QucGwKQEAgLTEwLDYgKzEwLDIwIEBAIHVzZSBUZXN0OjpNb3JlOwogCiBteSAkb2Zmc2V0ID0g MDsKIAorIyBDaGVjayB0aGUgbG9nIHRoYXQgdGhlIHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBj b21wbGV0ZWQgc3VjY2Vzc2Z1bGx5CisjIHJlcG9ydGVkIGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtl ci4KK3N1YiBjaGVja19wYXJhbGxlbF9sb2cKK3sKKwlteSAoJG5vZGVfc3Vic2NyaWJlciwgJG9m ZnNldCwgJGlzX3BhcmFsbGVsLCAkdHlwZSkgPSBAXzsKKworCWlmICgkaXNfcGFyYWxsZWwpCisJ eworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJCQlxci9ERUJVRzogKCBbQS1a MC05XSs6KT8gZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgU1RSRUFNICR0eXBlIGNvbW1hbmQvLAor CQkJJG9mZnNldCk7CisJfQorfQorCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVf cHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsK ICRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CkBA IC0yNCw5ICszOCw5IEBAICRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CiBteSAkbm9kZV9zdWJzY3Jp YmVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdWJzY3JpYmVyJyk7CiAkbm9k ZV9zdWJzY3JpYmVyLT5pbml0OwogCi0jIENoZWNrIGlmIGFueSBzdHJlYW1pbmcgY2h1bmtzIGFy ZSBhcHBsaWVkIHVzaW5nIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuIFdlCi0jIGhhdmUgdG8g bG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwgc28gYnVtcCB1cCB0 aGUgbG9nCi0jIHZlcmJvc2l0eS4KKyMgQ2hlY2sgaWYgYW55IHN0cmVhbWluZyBjaHVua3MgYXJl IGFwcGxpZWQgdXNpbmcgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyMgQW5kIGNoZWNrIGlm IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZmFpbGVkIHRvIHN0YXJ0LiBXZSBoYXZlIHRvIGxv b2sgZm9yCisjIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNvIGJ1bXAgdXAg dGhlIGxvZyB2ZXJib3NpdHkuCiAkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigKIAkncG9z dGdyZXNxbC5jb25mJywgcXEoCiAJbG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMQpAQCAtMjc5LDYg KzI5Myw1NSBAQCAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEo NTAwMCksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBieSBzZXJpYWxpemluZyBtZXNz YWdlcyB0byBkaXNrJyk7CiAKKyMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25t ZW50LgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIFRB QkxFIHRlc3RfdGFiIik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgVGVzdCByZS1hcHBseSBhIGZhaWxlZCBz dHJlYW1pbmcgdHJhbnNhY3Rpb24gdXNpbmcgdGhlIGxlYWRlciBhcHBseQorIyB3b3JrZXIgYW5k IGFwcGx5IHN1YnNlcXVlbnQgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHVzaW5nIHRoZSBwYXJhbGxl bCBhcHBseQorIyB3b3JrZXIgYWZ0ZXIgdGhpcyByZXRyeSBzdWNjZWVkcy4KKyMgPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki Q1JFQVRFIFVOSVFVRSBJTkRFWCBpZHhfdGFiIG9uIHRlc3RfdGFiKGEpIik7CisKKyMgQ2hlY2sg dGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNj cmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jl cycsIHFxeworQkVHSU47CitJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSBGUk9NIGdlbmVy YXRlX3NlcmllcygxLCA1MDAwKSBzKGkpOworSU5TRVJUIElOVE8gdGVzdF90YWIgdmFsdWVzKDEp OworQ09NTUlUO30pOworCisjIENoZWNrIGlmIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaXMg bm90IHN0YXJ0ZWQgYmVjYXVzZSB0aGUgYWJvdmUKKyMgdHJhbnNhY3Rpb24gZmFpbGVkIHRvIGJl IGFwcGxpZWQuCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvREVCVUc6ICgg W0EtWjAtOV0rOik/IHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgYXJlIG5vdCB1c2VkIGZvciByZXRy aWVzLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIHRoZSB1bmlxdWUgaW5kZXggb24gdGhlIHN1YnNj cmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiRFJPUCBJTkRFWCBpZHhfdGFiIik7CisKKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcg dHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgorJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJlc3VsdCA9CisgICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00g dGVzdF90YWIiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDEpLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1 YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgaW5kZXgnKTsKKworIyBBZnRlciBzdWNjZXNzZnVsbHkg cmV0cnlpbmcgdG8gYXBwbHkgYSBmYWlsZWQgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLCBhcHBseQor IyB0aGUgZm9sbG93aW5nIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB1c2luZyB0aGUgcGFyYWxsZWwg YXBwbHkgd29ya2VyLgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklO U0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsIDEw MDAwKSBzKGkpIik7CisKK2NoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zm c2V0LCAxLCAnQ09NTUlUJyk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIik7Citpcygk cmVzdWx0LCBxcSgxMDAwMSksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciB1c2luZyB0 aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyJyk7CisKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAk bm9kZV9wdWJsaXNoZXItPnN0b3A7CiAKLS0gCjIuNy4yLndpbmRvd3MuMQoK --_008_OS0PR01MB571663B4EC5D8BE749AACD98941E9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v59-0002-Serialize-partial-changes-to-a-file-when-the-att.patch" Content-Description: v59-0002-Serialize-partial-changes-to-a-file-when-the-att.patch Content-Disposition: attachment; filename="v59-0002-Serialize-partial-changes-to-a-file-when-the-att.patch"; size=43312; creation-date="Sun, 11 Dec 2022 11:36:25 GMT"; modification-date="Sun, 11 Dec 2022 11:44:49 GMT" Content-Transfer-Encoding: base64 RnJvbSA1YTg2MjI0MzBhMGNiNDZjYzhjNjBiYjA0MzYzNzk4MjkwZTE2ZTc0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBTdW4sIDExIERlYyAyMDIyIDE5OjA4OjE3ICswODAwClN1YmplY3Q6IFtQQVRDSCB2 NTkgMi83XSBTZXJpYWxpemUgcGFydGlhbCBjaGFuZ2VzIHRvIGEgZmlsZSB3aGVuIHRoZSBhdHRl bXB0CiB0byBzZW5kIGRhdGEgdGltZXMgb3V0LgoKSW4gcGF0Y2ggMDAwMSBpZiB0aGUgbGVhZGVy IGFwcGx5IHdvcmtlciB0aW1lcyBvdXQgd2hpbGUgYXR0ZW1wdGluZyB0bwpzZW5kIGEgbWVzc2Fn ZSB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGl0IHJlc3VsdHMgaW4gYW4gRVJST1IuCgpU aGlzIHBhdGNoICgwMDAyKSBtb2RpZmllcyB0aGF0IGJlaGF2aW91ciwgc28gaW5zdGVhZCBvZiBl cnJvcmluZyBpdAp3aWxsIHN3aXRjaCB0byAicGFydGlhbCBzZXJpYWxpemUiIG1vZGUgLSAgaW4g dGhpcyBtb2RlIHRoZSBsZWFkZXIKc2VyaWFsaXplcyBhbGwgcmVtYWluaW5nIGNoYW5nZXMgdG8g YSBmaWxlIGFuZCBub3RpZmllcyB0aGUgcGFyYWxsZWwKYXBwbHkgd29ya2VycyB0byByZWFkIGFu ZCBhcHBseSB0aGVtIGF0IHRoZSBlbmQgb2YgdGhlIHRyYW5zYWN0aW9uLgotLS0KIC4uLi9yZXBs aWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyAgICAgIHwgMTc2ICsrKysrKy0K IHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICAgICAgIHwgNTEz ICsrKysrKysrKysrKysrKystLS0tLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2lu dGVybmFsLmggICAgICAgICAgfCAgNTIgKystCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMu bGlzdCAgICAgICAgICAgICAgICAgICB8ICAgMSArCiA0IGZpbGVzIGNoYW5nZWQsIDYwNSBpbnNl cnRpb25zKCspLCAxMzcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwppbmRleCAyMjRkMGVlLi5jOGYw ZjI3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFy YWxsZWx3b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5 cGFyYWxsZWx3b3JrZXIuYwpAQCAtMTM3LDkgKzEzNywxMSBAQAogICogY29uY3VycmVudGx5KSwg aWYgdGhlIHNobV9tcSBidWZmZXIgYmV0d2VlbiBMQSBhbmQgUEEtMiBpcyBmdWxsLCBMQSBoYXMg dG8KICAqIHdhaXQgdG8gc2VuZCBtZXNzYWdlcywgYW5kIHRoaXMgd2FpdCBkb2Vzbid0IGFwcGVh ciBpbiBsbWdyLgogICoKLSAqIFRvIHJlc29sdmUgdGhpcyBpc3N1ZSwgd2UgdXNlIG5vbi1ibG9j a2luZyB3cml0ZSBhbmQgd2FpdCB3aXRoIGEgdGltZW91dC4gSWYKLSAqIHRoZSB0aW1lb3V0IGlz IGV4Y2VlZGVkLCB0aGUgTEEgcmVwb3J0cyBhbiBlcnJvciBhbmQgcmVzdGFydHMgbG9naWNhbAot ICogcmVwbGljYXRpb24uCisgKiBUbyBhdm9pZCB0aGlzIHdhaXQsIHdlIHVzZSBhIG5vbi1ibG9j a2luZyB3cml0ZSBhbmQgd2FpdCB3aXRoIGEgdGltZW91dC4gSWYKKyAqIHRoZSB0aW1lb3V0IGlz IGV4Y2VlZGVkLCB0aGUgTEEgd2lsbCBzZXJpYWxpemUgdGhlIG1lc3NhZ2UgdG8gYSBmaWxlIGFu ZAorICogaW5kaWNhdGUgUEEtMiB0aGF0IGl0IG5lZWRzIHRvIHJlYWQgdGhhdCBmaWxlIGZvciB0 aGUgcmVtYWluaW5nIG1lc3NhZ2VzLgorICogVGhlbiBMQSB3aWxsIHN0YXJ0IHdhaXRpbmcgZm9y IGNvbW1pdCB3aGljaCB3aWxsIGRldGVjdCBkZWFkbG9jayBpZiBhbnkuCisgKiBTZWUgcGFfc2Vu ZF9kYXRhKCkgYW5kIGVudW0gVHJhbnNBcHBseUFjdGlvbi4KICAqCiAgKiA0KSBMb2NrIHR5cGVz CiAgKgpAQCAtNDk1LDkgKzQ5NywxMSBAQCBwYV9hbGxvY2F0ZV93b3JrZXIoVHJhbnNhY3Rpb25J ZCB4aWQpCiAJU3BpbkxvY2tBY3F1aXJlKCZ3aW5mby0+c2hhcmVkLT5tdXRleCk7CiAJd2luZm8t PnNoYXJlZC0+eGFjdF9zdGF0ZSA9IFBBUkFMTEVMX1RSQU5TX1VOS05PV047CiAJd2luZm8tPnNo YXJlZC0+eGlkID0geGlkOworCXdpbmZvLT5zaGFyZWQtPmZpbGVzZXRfc3RhdGUgPSBGU19VTktO T1dOOwogCVNwaW5Mb2NrUmVsZWFzZSgmd2luZm8tPnNoYXJlZC0+bXV0ZXgpOwogCiAJd2luZm8t PmluX3VzZSA9IHRydWU7CisJd2luZm8tPnNlcmlhbGl6ZV9jaGFuZ2VzID0gZmFsc2U7CiAJZW50 cnktPndpbmZvID0gd2luZm87CiAJZW50cnktPnhpZCA9IHhpZDsKIH0KQEAgLTU3MSw4ICs1NzUs MTcgQEAgcGFfZnJlZV93b3JrZXIoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBUcmFu c2FjdGlvbklkIHhpZCkKIAluYXBwbHl3b3JrZXJzID0gbG9naWNhbHJlcF9wYV93b3JrZXJfY291 bnQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCk7CiAJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVw V29ya2VyTG9jayk7CiAKLQkvKiBTdG9wIHRoZSB3b3JrZXIgaWYgdGhlcmUgYXJlIGVub3VnaCB3 b3JrZXJzIGluIHRoZSBwb29sLiAqLwotCWlmIChuYXBwbHl3b3JrZXJzID4gKG1heF9wYXJhbGxl bF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gLyAyKSkKKwkvKgorCSAqIFN0b3AgdGhl IHdvcmtlciBpZiB0aGVyZSBhcmUgZW5vdWdoIHdvcmtlcnMgaW4gdGhlIHBvb2wuCisJICoKKwkg KiBYWFggVGhlIHdvcmtlciBpcyBhbHNvIHN0b3BwZWQgaWYgdGhlIGxlYWRlciBhcHBseSB3b3Jr ZXIgbmVlZGVkIHRvCisJICogc2VyaWFsaXplIHBhcnQgb2YgdGhlIHRyYW5zYWN0aW9uIGRhdGEg ZHVlIHRvIGEgc2VuZCB0aW1lb3V0LiBUaGlzIGlzCisJICogYmVjYXVzZSB0aGUgbWVzc2FnZSBj b3VsZCBiZSBwYXJ0aWFsbHkgd3JpdHRlbiB0byB0aGUgcXVldWUgYnV0IHRoZXJlIGlzCisJICog bm8gd2F5IHRvIGNsZWFuIHRoZSBxdWV1ZSBvdGhlciB0aGFuIHJlc2VuZGluZyB0aGUgbWVzc2Fn ZSB1bnRpbCBpdAorCSAqIHN1Y2NlZWRzLiBEaXJlY3RseSBzdG9wcGluZyB0aGUgd29ya2VyIGF2 b2lkcyBuZWVkaW5nIHRoaXMgY29tcGxleGl0eS4KKwkgKi8KKwlpZiAod2luZm8tPnNlcmlhbGl6 ZV9jaGFuZ2VzIHx8CisJCW5hcHBseXdvcmtlcnMgPiAobWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtl cnNfcGVyX3N1YnNjcmlwdGlvbiAvIDIpKQogCXsKIAkJaW50CQkJc2xvdF9ubzsKIAkJdWludDE2 CQlnZW5lcmF0aW9uOwpAQCAtNTkwLDExICs2MDMsMTUgQEAgcGFfZnJlZV93b3JrZXIoUGFyYWxs ZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBUcmFuc2FjdGlvbklkIHhpZCkKIAl9CiAKIAl3aW5m by0+aW5fdXNlID0gZmFsc2U7CisJd2luZm8tPnNlcmlhbGl6ZV9jaGFuZ2VzID0gZmFsc2U7CiAK IAlyZXR1cm4gZmFsc2U7CiB9CiAKLS8qIEZyZWUgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBp bmZvcm1hdGlvbi4gKi8KKy8qCisgKiBGcmVlIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaW5m b3JtYXRpb24gYW5kIHVubGluayB0aGUgZmlsZXMgd2l0aAorICogc2VyaWFsaXplZCBjaGFuZ2Vz IGlmIGFueS4KKyAqLwogc3RhdGljIHZvaWQKIHBhX2ZyZWVfd29ya2VyX2luZm8oUGFyYWxsZWxB cHBseVdvcmtlckluZm8gKndpbmZvKQogewpAQCAtNjA2LDYgKzYyMywxMCBAQCBwYV9mcmVlX3dv cmtlcl9pbmZvKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbykKIAlpZiAod2luZm8tPmVy cm9yX21xX2hhbmRsZSkKIAkJc2htX21xX2RldGFjaCh3aW5mby0+ZXJyb3JfbXFfaGFuZGxlKTsK IAorCS8qIFVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMuICovCisJaWYg KHdpbmZvLT5zZXJpYWxpemVfY2hhbmdlcykKKwkJc3RyZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dp Y2FsUmVwV29ya2VyLT5zdWJpZCwgd2luZm8tPnNoYXJlZC0+eGlkKTsKKwogCWlmICh3aW5mby0+ ZHNtX3NlZykKIAkJZHNtX2RldGFjaCh3aW5mby0+ZHNtX3NlZyk7CiAKQEAgLTY5MSw2ICs3MTIs NjMgQEAgcGFfc3RvcF9pZGxlX3dvcmtlcnModm9pZCkKIH0KIAogLyoKKyAqIFJlcGxheSB0aGUg c3Bvb2xlZCBtZXNzYWdlcyBpbiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlmIHRoZSBsZWFk ZXIgYXBwbHkKKyAqIHdvcmtlciBoYXMgZmluaXNoZWQgc2VyaWFsaXppbmcgY2hhbmdlcyB0byB0 aGUgZmlsZS4KKyAqLworc3RhdGljIHZvaWQKK3BhX3Nwb29sZWRfbWVzc2FnZXModm9pZCkKK3sK KwlQYXJ0aWFsRmlsZVNldFN0YXRlIGZpbGVzZXRfc3RhdGU7CisKKwkvKgorCSAqIENoZWNrIGlm IGNoYW5nZXMgaGF2ZSBiZWVuIHNlcmlhbGl6ZWQgdG8gYSBmaWxlLiBJZiBzbywgcmVhZCBhbmQg YXBwbHkKKwkgKiB0aGVtLgorCSAqLworCVNwaW5Mb2NrQWNxdWlyZSgmTXlQYXJhbGxlbFNoYXJl ZC0+bXV0ZXgpOworCWZpbGVzZXRfc3RhdGUgPSBNeVBhcmFsbGVsU2hhcmVkLT5maWxlc2V0X3N0 YXRlOworCVNwaW5Mb2NrUmVsZWFzZSgmTXlQYXJhbGxlbFNoYXJlZC0+bXV0ZXgpOworCisJLyoK KwkgKiBJZiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBpcyBidXN5IHNlcmlhbGl6aW5nIHRoZSBw YXJ0aWFsIGNoYW5nZXMgdGhlbgorCSAqIGFjcXVpcmUgdGhlIHN0cmVhbSBsb2NrIG5vdyBhbmQg d2FpdCBmb3IgdGhlIGxlYWRlciB3b3JrZXIgdG8gZmluaXNoCisJICogc2VyaWFsaXppbmcgdGhl IGNoYW5nZXMuIE90aGVyd2lzZSwgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3b24ndCBnZXQK KwkgKiBhIGNoYW5jZSB0byByZWNlaXZlIGEgU1RSRUFNX1NUT1AgKGFuZCBhY3F1aXJlIHRoZSBz dHJlYW0gbG9jaykgdW50aWwKKwkgKiB0aGUgbGVhZGVyIGhhZCBzZXJpYWxpemVkIGFsbCBjaGFu Z2VzIHdoaWNoIGNhbiBsZWFkIHRvIHVuZGV0ZWN0ZWQKKwkgKiBkZWFkbG9jay4KKwkgKgorCSAq IFhYWCBJdCBpcyBwb3NzaWJsZSB0aGF0IGltbWVkaWF0ZWx5IGFmdGVyIHdlIGhhdmUgd2FpdGVk IGZvciBhIGxvY2sgaW4KKwkgKiB0aGUgRlNfU0VSSUFMSVpFX0lOX1BST0dSRVNTIHN0YXRlLCB0 aGUgZmlsZXNldCBzdGF0ZSBiZWNvbWVzCisJICogRlNfU0VSSUFMSVpFX0RPTkUgYnV0IHJlLWNo ZWNraW5nIGl0IGFnYWluIGRvZXNuJ3Qgc2VlbSB3b3J0aCBpdC4KKwkgKiBBbnl3YXksIG5leHQg dGltZSB3aGVuIHRoaXMgZnVuY3Rpb24gaXMgaW52b2tlZCwgd2Ugd2lsbCBzZXQgdGhlIHN0YXRl CisJICogdG8gRlNfUkVBRFkuCisJICovCisJaWYgKGZpbGVzZXRfc3RhdGUgPT0gRlNfU0VSSUFM SVpFX0lOX1BST0dSRVNTKQorCXsKKwkJcGFfbG9ja19zdHJlYW0oTXlQYXJhbGxlbFNoYXJlZC0+ eGlkLCBBY2Nlc3NTaGFyZUxvY2spOworCQlwYV91bmxvY2tfc3RyZWFtKE15UGFyYWxsZWxTaGFy ZWQtPnhpZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwl9CisKKwkvKgorCSAqIFdlIGNhbm5vdCByZWFk IHRoZSBmaWxlIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBsZWFkZXIgaGFzIHNlcmlhbGl6ZWQgYWxs CisJICogY2hhbmdlcyB0byB0aGUgZmlsZSBiZWNhdXNlIHRoZXJlIG1heSBzdGlsbCBiZSBtZXNz YWdlcyBpbiB0aGUgbWVtb3J5CisJICogcXVldWUuIFdlIHdpbGwgYXBwbHkgYWxsIHNwb29sZWQg bWVzc2FnZXMgdGhlIG5leHQgdGltZSB3ZSBjYWxsIHRoaXMKKwkgKiBmdW5jdGlvbiwgd2hpY2gg c2hvdWxkIGVuc3VyZSB0aGF0IHRoZXJlIGFyZSBubyBtZXNzYWdlcyBsZWZ0IGluIHRoZQorCSAq IG1lbW9yeSBxdWV1ZS4KKwkgKi8KKwllbHNlIGlmIChmaWxlc2V0X3N0YXRlID09IEZTX1NFUklB TElaRV9ET05FKQorCXsKKwkJcGFfc2V0X2ZpbGVzZXRfc3RhdGUoTXlQYXJhbGxlbFNoYXJlZCwg RlNfUkVBRFkpOworCX0KKwllbHNlIGlmIChmaWxlc2V0X3N0YXRlID09IEZTX1JFQURZKQorCXsK KwkJYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcygmTXlQYXJhbGxlbFNoYXJlZC0+ZmlsZXNldCwKKwkJ CQkJCQkgICBNeVBhcmFsbGVsU2hhcmVkLT54aWQsCisJCQkJCQkJICAgSW52YWxpZFhMb2dSZWNQ dHIpOworCQlwYV9zZXRfZmlsZXNldF9zdGF0ZShNeVBhcmFsbGVsU2hhcmVkLCBGU19VTktOT1dO KTsKKwl9Cit9CisKKy8qCiAgKiBJbnRlcnJ1cHQgaGFuZGxlciBmb3IgbWFpbiBsb29wIG9mIHBh cmFsbGVsIGFwcGx5IHdvcmtlci4KICAqLwogc3RhdGljIHZvaWQKQEAgLTc3NCw2ICs4NTIsMTEg QEAgTG9naWNhbFBhcmFsbGVsQXBwbHlMb29wKHNobV9tcV9oYW5kbGUgKm1xaCkKIAkJCS8qCiAJ CQkgKiBJZ25vcmUgc3RhdGlzdGljcyBmaWVsZHMgdGhhdCBoYXZlIGJlZW4gdXBkYXRlZCBieSB0 aGUgbGVhZGVyCiAJCQkgKiBhcHBseSB3b3JrZXIuCisJCQkgKgorCQkJICogWFhYIFdlIGNhbiBh dm9pZCBzZW5kaW5nIHRoZSBzdGF0aXN0aWNzIGZpZWxkcyBmcm9tIHRoZSBsZWFkZXIKKwkJCSAq IGFwcGx5IHdvcmtlciBidXQgZm9yIHRoYXQsIGl0IG5lZWRzIHRvIHJlYnVpbGQgdGhlIGVudGly ZQorCQkJICogbWVzc2FnZSBieSByZW1vdmluZyB0aGVzZSBmaWVsZHMgd2hpY2ggY291bGQgYmUg bW9yZSB3b3JrIHRoYW4KKwkJCSAqIHNpbXBseSBpZ25vcmluZyB0aGVzZSBmaWVsZHMgaW4gdGhl IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KIAkJCSAqLwogCQkJcy5jdXJzb3IgKz0gU0laRV9TVEFU U19NRVNTQUdFOwogCkBAIC03ODUsNiArODY4LDkgQEAgTG9naWNhbFBhcmFsbGVsQXBwbHlMb29w KHNobV9tcV9oYW5kbGUgKm1xaCkKIAkJewogCQkJaW50CQkJcmM7CiAKKwkJCS8qIENoZWNrIGlm IGNoYW5nZXMgaGF2ZSBiZWVuIHNlcmlhbGl6ZWQgdG8gYSBmaWxlLiAqLworCQkJcGFfc3Bvb2xl ZF9tZXNzYWdlcygpOworCiAJCQlNZW1vcnlDb250ZXh0UmVzZXQoQXBwbHlNZXNzYWdlQ29udGV4 dCk7CiAJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKIApAQCAtMTEwOCwxNSArMTE5 NCwyNCBAQCBIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZXModm9pZCkKIC8qCiAgKiBTZW5kIHRo ZSBkYXRhIHRvIHRoZSBzcGVjaWZpZWQgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHZpYSBzaGFyZWQt bWVtb3J5CiAgKiBxdWV1ZS4KKyAqCisgKiBJZiB0aGUgYXR0ZW1wdCB0byBzZW5kIGRhdGEgdmlh IHNoYXJlZCBtZW1vcnkgdGltZXMgb3V0LCB0aGVuIHdlIHdpbGwgc3dpdGNoCisgKiB0byAiUEFS VElBTF9TRVJJQUxJWkUgbW9kZSIgZm9yIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uIC0tIHRoaXMg bWVhbnMgdGhhdAorICogdGhlIGN1cnJlbnQgZGF0YSBhbmQgYW55IHN1YnNlcXVlbnQgZGF0YSBm b3IgdGhpcyB0cmFuc2FjdGlvbiB3aWxsIGJlCisgKiBzZXJpYWxpemVkIHRvIGEgZmlsZS4gVGhp cyBpcyBkb25lIHRvIHByZXZlbnQgcG9zc2libGUgZGVhZGxvY2tzIHdpdGgKKyAqIGFub3RoZXIg cGFyYWxsZWwgYXBwbHkgd29ya2VyIChyZWZlciB0byB0aGUgY29tbWVudHMgYXRvcAorICogYXBw bHlwYXJhbGxlbHdvcmtlci5jIGZvciBkZXRhaWxzKS4KICAqLwogdm9pZAotcGFfc2VuZF9kYXRh KFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgU2l6ZSBuYnl0ZXMsIGNvbnN0IHZvaWQg KmRhdGEpCitwYV9zZW5kX2RhdGEoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBTaXpl IG5ieXRlcywgY29uc3Qgdm9pZCAqZGF0YSwKKwkJCSBib29sIHN0cmVhbV9sb2NrZWQpCiB7CiAJ aW50CQkJcmM7CiAJc2htX21xX3Jlc3VsdCByZXN1bHQ7CiAJVGltZXN0YW1wVHogc3RhcnRUaW1l ID0gMDsKIAogCUFzc2VydCghSXNUcmFuc2FjdGlvblN0YXRlKCkpOworCUFzc2VydCghd2luZm8t PnNlcmlhbGl6ZV9jaGFuZ2VzKTsKIAogI2RlZmluZSBTSE1fU0VORF9SRVRSWV9JTlRFUlZBTF9N UyAxMDAwCiAjZGVmaW5lIFNITV9TRU5EX1RJTUVPVVRfTVMJCSgxMDAwMCAtIFNITV9TRU5EX1JF VFJZX0lOVEVSVkFMX01TKQpAQCAtMTE0NiwxOSArMTI0MSw0NiBAQCBwYV9zZW5kX2RhdGEoUGFy YWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBTaXplIG5ieXRlcywgY29uc3Qgdm9pZCAqZGF0 YSkKIAkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJCX0KIAotCQkvKgotCQkgKiBJZiB0aGUg YXR0ZW1wdCB0byBzZW5kIGRhdGEgdmlhIHNoYXJlZCBtZW1vcnkgdGltZXMgb3V0LCB3ZSByZXN0 YXJ0Ci0JCSAqIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHRvIHByZXZlbnQgcG9zc2libGUgZGVh ZGxvY2tzIHdpdGggYW5vdGhlcgotCQkgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXIuIFJlZmVyIHRv IHRoZSBjb21tZW50cyBhdG9wIHRoaXMgZmlsZSBmb3IKLQkJICogZGV0YWlscy4KLQkJICovCiAJ CWlmIChzdGFydFRpbWUgPT0gMCkKIAkJCXN0YXJ0VGltZSA9IEdldEN1cnJlbnRUaW1lc3RhbXAo KTsKIAkJZWxzZSBpZiAoVGltZXN0YW1wRGlmZmVyZW5jZUV4Y2VlZHMoc3RhcnRUaW1lLCBHZXRD dXJyZW50VGltZXN0YW1wKCksCiAJCQkJCQkJCQkJCVNITV9TRU5EX1RJTUVPVVRfTVMpKQotCQkJ ZXJlcG9ydChFUlJPUiwKLQkJCQkJKGVycmNvZGUoRVJSQ09ERV9DT05ORUNUSU9OX0ZBSUxVUkUp LAotCQkJCQkgZXJybXNnKCJ0ZXJtaW5hdGluZyBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVs IGFwcGx5IHdvcmtlciBkdWUgdG8gdGltZW91dCIpKSk7CisJCXsKKwkJCVN0cmluZ0luZm9EYXRh IG1zZzsKKwkJCUxvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbjsKKworCQkJLyoKKwkJCSAqIFRoZSBw YXJhbGxlbCBhcHBseSB3b3JrZXIgY291bGQgYmUgc3R1Y2sgZm9yIHNvbWUgcmVhc29uIChzYXkK KwkJCSAqIHdhaXRpbmcgb24gc29tZSBsb2NrIGJ5IG90aGVyIGJhY2tlbmQpLCBzbyBzdG9wIHRy eWluZyB0byBzZW5kCisJCQkgKiBkYXRhIGRpcmVjdGx5IHRvIGl0IGFuZCBpbnN0ZWFkIHN0YXJ0 IHRvIHNlcmlhbGl6ZSBkYXRhIHRvCisJCQkgKiBmaWxlIGluc3RlYWQuCisJCQkgKi8KKwkJCXdp bmZvLT5zZXJpYWxpemVfY2hhbmdlcyA9IHRydWU7CisKKwkJCWluaXRTdHJpbmdJbmZvKCZtc2cp OworCQkJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbygmbXNnLCBkYXRhLCBuYnl0ZXMpOworCisJCQkv KiBTa2lwIGZpcnN0IGJ5dGUgYW5kIHN0YXRpc3RpY3MgZmllbGRzLiAqLworCQkJbXNnLmN1cnNv ciArPSAxICsgU0laRV9TVEFUU19NRVNTQUdFOworCisJCQkvKiBJbml0aWFsaXplIHRoZSBzdHJl YW0gZmlsZXNldC4gKi8KKwkJCXN0cmVhbV9zdGFydF9pbnRlcm5hbCh3aW5mby0+c2hhcmVkLT54 aWQsIHRydWUpOworCisJCQkvKiBXcml0ZSB0aGlzIG1lc3NhZ2UgdG8gYSBmaWxlLiAqLworCQkJ YWN0aW9uID0gcHFfZ2V0bXNnYnl0ZSgmbXNnKTsKKwkJCXN0cmVhbV93cml0ZV9jaGFuZ2UoYWN0 aW9uLCAmbXNnKTsKKworCQkJLyoKKwkJCSAqIEFjcXVpcmVzIHRoZSBzdHJlYW0gbG9jayBpZiBu b3QgYWxyZWFkeSB0byBtYWtlIHN1cmUgdGhhdCB0aGUKKwkJCSAqIHBhcmFsbGVsIGFwcGx5IHdv cmtlciB3aWxsIHdhaXQgZm9yIHRoZSBsZWFkZXIgdG8gcmVsZWFzZSB0aGUKKwkJCSAqIHN0cmVh bSBsb2NrIHVudGlsIHRoZSBlbmQgb2YgdGhlIHRyYW5zYWN0aW9uLgorCQkJICovCisJCQlpZiAo IXN0cmVhbV9sb2NrZWQpCisJCQkJcGFfbG9ja19zdHJlYW0od2luZm8tPnNoYXJlZC0+eGlkLCBB Y2Nlc3NFeGNsdXNpdmVMb2NrKTsKKworCQkJcGFfc2V0X2ZpbGVzZXRfc3RhdGUod2luZm8tPnNo YXJlZCwgRlNfU0VSSUFMSVpFX0lOX1BST0dSRVNTKTsKKwkJCWJyZWFrOworCQl9CiAJfQogfQog CkBAIC0xNDE1LDYgKzE1MzcsMjggQEAgcGFfc3RyZWFtX2Fib3J0KExvZ2ljYWxSZXBTdHJlYW1B Ym9ydERhdGEgKmFib3J0X2RhdGEpCiB9CiAKIC8qCisgKiBTZXQgdGhlIGZpbGVzZXQgc3RhdGUg Zm9yIHRoZSBnaXZlbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIuIFRoZSBmaWxlc2V0CisgKiB3aWxs IGJlIHNldCBvbmNlIHRoZSBsZWFkZXIgd29ya2VyIHNlcmlhbGl6ZWQgYWxsIGNoYW5nZXMgdG8g dGhlIGZpbGUKKyAqIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29y a2VyLgorICovCit2b2lkCitwYV9zZXRfZmlsZXNldF9zdGF0ZShQYXJhbGxlbEFwcGx5V29ya2Vy U2hhcmVkICp3c2hhcmVkLAorCQkJCQkgUGFydGlhbEZpbGVTZXRTdGF0ZSBmaWxlc2V0X3N0YXRl KQoreworCVNwaW5Mb2NrQWNxdWlyZSgmd3NoYXJlZC0+bXV0ZXgpOworCXdzaGFyZWQtPmZpbGVz ZXRfc3RhdGUgPSBmaWxlc2V0X3N0YXRlOworCisJaWYgKGZpbGVzZXRfc3RhdGUgPT0gRlNfU0VS SUFMSVpFX0RPTkUpCisJeworCQlBc3NlcnQoYW1fbGVhZGVyX2FwcGx5X3dvcmtlcigpKTsKKwkJ QXNzZXJ0KE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQpOworCQl3c2hhcmVkLT5m aWxlc2V0ID0gKk15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQ7CisJfQorCisJU3Bp bkxvY2tSZWxlYXNlKCZ3c2hhcmVkLT5tdXRleCk7Cit9CisKKy8qCiAgKiBIZWxwZXIgZnVuY3Rp b25zIHRvIGFjcXVpcmUgYW5kIHJlbGVhc2UgYSBsb2NrIGZvciBlYWNoIHN0cmVhbSBibG9jay4K ICAqCiAgKiBTZXQgbG9ja3RhZ19maWVsZDQgdG8gUEFSQUxMRUxfQVBQTFlfTE9DS19TVFJFQU0g dG8gaW5kaWNhdGUgdGhhdCBpdCdzIGEKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dv cmtlci5jCmluZGV4IDNiNGQ1NjUuLjA3ZTUyMjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC93b3JrZXIuYwpAQCAtMjU2LDYgKzI1NiwxOCBAQCB0eXBlZGVmIHN0cnVjdCBBcHBs eUVycm9yQ2FsbGJhY2tBcmcKICAqIHdvcmtlci4gQ2hhbmdlcyBhcmUgd3JpdHRlbiB0byB0ZW1w b3JhcnkgZmlsZXMgYW5kIHRoZW4gYXBwbGllZCB3aGVuIHRoZQogICogZmluYWwgY29tbWl0IGFy cml2ZXMuCiAgKgorICogVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VSSUFMSVpFOgorICogVGhpcyBh Y3Rpb24gbWVhbnMgdGhhdCB3ZSBhcmUgaW4gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIGhh dmUgc2VudCBzb21lCisgKiBjaGFuZ2VzIGRpcmVjdGx5IHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3 b3JrZXIgYW5kIHRoZSByZW1haW5pbmcgY2hhbmdlcyBhcmUKKyAqIHNlcmlhbGl6ZWQgdG8gYSBm aWxlLCBkdWUgdG8gdGltZW91dCB3aGlsZSBzZW5kaW5nIGRhdGEuIFRoZSBwYXJhbGxlbCBhcHBs eQorICogd29ya2VyIHdpbGwgYXBwbHkgdGhlc2Ugc2VyaWFsaXplZCBjaGFuZ2VzIHdoZW4gdGhl IGZpbmFsIGNvbW1pdCBhcnJpdmVzLgorICoKKyAqIFdlIGNhbid0IHVzZSBUUkFOU19MRUFERVJf U0VSSUFMSVpFIGZvciB0aGlzIGNhc2UgYmVjYXVzZSwgaW4gYWRkaXRpb24gdG8KKyAqIHNlcmlh bGl6aW5nIGNoYW5nZXMsIHRoZSBsZWFkZXIgd29ya2VyIGFsc28gbmVlZHMgdG8gc2VyaWFsaXpl IHRoZQorICogU1RSRUFNX1hYWCBtZXNzYWdlIHRvIGEgZmlsZSwgYW5kIHdhaXQgZm9yIHRoZSBw YXJhbGxlbCBhcHBseSB3b3JrZXIgdG8KKyAqIGZpbmlzaCB0aGUgdHJhbnNhY3Rpb24gd2hlbiBw cm9jZXNzaW5nIHRoZSB0cmFuc2FjdGlvbiBmaW5pc2ggY29tbWFuZC4gU28KKyAqIHRoaXMgbmV3 IGFjdGlvbiB3YXMgaW50cm9kdWNlZCB0byBrZWVwIHRoZSBjb2RlIGFuZCBsb2dpYyBjbGVhci4K KyAqCiAgKiBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKICAqIFRoaXMgYWN0aW9uIG1l YW5zIHRoYXQgd2UgYXJlIGluIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBuZWVkIHRvIHNl bmQKICAqIHRoZSBjaGFuZ2VzIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCkBAIC0yNzEs NiArMjgzLDcgQEAgdHlwZWRlZiBlbnVtCiAKIAkvKiBBY3Rpb25zIGZvciBzdHJlYW1pbmcgdHJh bnNhY3Rpb25zLiAqLwogCVRSQU5TX0xFQURFUl9TRVJJQUxJWkUsCisJVFJBTlNfTEVBREVSX1BB UlRJQUxfU0VSSUFMSVpFLAogCVRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMLAogCVRSQU5T X1BBUkFMTEVMX0FQUExZCiB9IFRyYW5zQXBwbHlBY3Rpb247CkBAIC0zNTMsNyArMzY2LDYgQEAg dHlwZWRlZiBzdHJ1Y3QgQXBwbHlTdWJYYWN0RGF0YQogc3RhdGljIEFwcGx5U3ViWGFjdERhdGEg c3VieGFjdF9kYXRhID0gezAsIDAsIEludmFsaWRUcmFuc2FjdGlvbklkLCBOVUxMfTsKIAogc3Rh dGljIGlubGluZSB2b2lkIHN1YnhhY3RfZmlsZW5hbWUoY2hhciAqcGF0aCwgT2lkIHN1YmlkLCBU cmFuc2FjdGlvbklkIHhpZCk7Ci1zdGF0aWMgaW5saW5lIHZvaWQgY2hhbmdlc19maWxlbmFtZShj aGFyICpwYXRoLCBPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlkKTsKIAogLyoKICAqIEluZm9y bWF0aW9uIGFib3V0IHN1YnRyYW5zYWN0aW9ucyBvZiBhIGdpdmVuIHRvcGxldmVsIHRyYW5zYWN0 aW9uLgpAQCAtMzY2LDEwICszNzgsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY2xlYW51cF9zdWJ4 YWN0X2luZm8odm9pZCk7CiAvKgogICogU2VyaWFsaXplIGFuZCBkZXNlcmlhbGl6ZSBjaGFuZ2Vz IGZvciBhIHRvcGxldmVsIHRyYW5zYWN0aW9uLgogICovCi1zdGF0aWMgdm9pZCBzdHJlYW1fY2xl YW51cF9maWxlcyhPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlkKTsKIHN0YXRpYyB2b2lkIHN0 cmVhbV9vcGVuX2ZpbGUoT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCwKIAkJCQkJCQkgYm9v bCBmaXJzdF9zZWdtZW50KTsKLXN0YXRpYyB2b2lkIHN0cmVhbV93cml0ZV9jaGFuZ2UoY2hhciBh Y3Rpb24sIFN0cmluZ0luZm8gcyk7CitzdGF0aWMgdm9pZCBzdHJlYW1fb3Blbl9hbmRfd3JpdGVf Y2hhbmdlKFRyYW5zYWN0aW9uSWQgeGlkLCBjaGFyIGFjdGlvbiwgU3RyaW5nSW5mbyBzKTsKIHN0 YXRpYyB2b2lkIHN0cmVhbV9jbG9zZV9maWxlKHZvaWQpOwogCiBzdGF0aWMgdm9pZCBzZW5kX2Zl ZWRiYWNrKFhMb2dSZWNQdHIgcmVjdnBvcywgYm9vbCBmb3JjZSwgYm9vbCByZXF1ZXN0UmVwbHkp OwpAQCAtNDAxLDkgKzQxMiw2IEBAIHN0YXRpYyB2b2lkIGFwcGx5X2hhbmRsZV90dXBsZV9yb3V0 aW5nKEFwcGx5RXhlY3V0aW9uRGF0YSAqZWRhdGEsCiAvKiBDb21wdXRlIEdJRCBmb3IgdHdvX3Bo YXNlIHRyYW5zYWN0aW9ucyAqLwogc3RhdGljIHZvaWQgVHdvUGhhc2VUcmFuc2FjdGlvbkdpZChP aWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlkLCBjaGFyICpnaWQsIGludCBzemdpZCk7CiAKLS8q IENvbW1vbiBzdHJlYW1pbmcgZnVuY3Rpb24gdG8gYXBwbHkgYWxsIHRoZSBzcG9vbGVkIG1lc3Nh Z2VzICovCi1zdGF0aWMgdm9pZCBhcHBseV9zcG9vbGVkX21lc3NhZ2VzKFRyYW5zYWN0aW9uSWQg eGlkLCBYTG9nUmVjUHRyIGxzbik7Ci0KIC8qIEZ1bmN0aW9ucyBmb3Igc2tpcHBpbmcgY2hhbmdl cyAqLwogc3RhdGljIHZvaWQgbWF5YmVfc3RhcnRfc2tpcHBpbmdfY2hhbmdlcyhYTG9nUmVjUHRy IGZpbmlzaF9sc24pOwogc3RhdGljIHZvaWQgc3RvcF9za2lwcGluZ19jaGFuZ2VzKHZvaWQpOwpA QCAtNTY2LDYgKzU3NCw3IEBAIGhhbmRsZV9zdHJlYW1lZF90cmFuc2FjdGlvbihMb2dpY2FsUmVw TXNnVHlwZSBhY3Rpb24sIFN0cmluZ0luZm8gcykKIAlUcmFuc2FjdGlvbklkIGN1cnJlbnRfeGlk OwogCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKIAlUcmFuc0FwcGx5QWN0aW9uIGFw cGx5X2FjdGlvbjsKKwlTdHJpbmdJbmZvRGF0YSBvcmlnaW5hbF9tc2c7CiAKIAlhcHBseV9hY3Rp b24gPSBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKHN0cmVhbV94aWQsICZ3aW5mbyk7CiAK QEAgLTU3Niw2ICs1ODUsMTQgQEAgaGFuZGxlX3N0cmVhbWVkX3RyYW5zYWN0aW9uKExvZ2ljYWxS ZXBNc2dUeXBlIGFjdGlvbiwgU3RyaW5nSW5mbyBzKQogCUFzc2VydChUcmFuc2FjdGlvbklkSXNW YWxpZChzdHJlYW1feGlkKSk7CiAKIAkvKgorCSAqIFRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIg bmVlZHMgdGhlIHhpZCBpbiB0aGlzIG1lc3NhZ2UgdG8gZGVjaWRlCisJICogd2hldGhlciB0byBk ZWZpbmUgYSBzYXZlcG9pbnQsIHNvIHNhdmUgdGhlIG9yaWdpbmFsIG1lc3NhZ2UgdGhhdCBoYXMg bm90CisJICogbW92ZWQgdGhlIGN1cnNvciBhZnRlciB0aGUgeGlkLiBXZSB3aWxsIHNlcmlhbGl6 ZSB0aGlzIG1lc3NhZ2UgdG8gYSBmaWxlCisJICogaW4gUEFSVElBTF9TRVJJQUxJWkUgbW9kZS4K KwkgKi8KKwlvcmlnaW5hbF9tc2cgPSAqczsKKworCS8qCiAJICogV2Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgWElEIG9mIHRoZSBzdWJ4YWN0IGFzIHRoZSBmaXJzdCBwYXJ0IG9mIHRoZQogCSAqIG1l c3NhZ2UsIHNvIGV4dHJhY3QgaXQuCiAJICovCkBAIC01OTgsMTAgKzYxNSwxNCBAQCBoYW5kbGVf c3RyZWFtZWRfdHJhbnNhY3Rpb24oTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9uLCBTdHJpbmdJbmZv IHMpCiAJCQlzdHJlYW1fd3JpdGVfY2hhbmdlKGFjdGlvbiwgcyk7CiAJCQlyZXR1cm4gdHJ1ZTsK IAorCQljYXNlIFRSQU5TX0xFQURFUl9QQVJUSUFMX1NFUklBTElaRToKIAkJY2FzZSBUUkFOU19M RUFERVJfU0VORF9UT19QQVJBTExFTDoKIAkJCUFzc2VydCh3aW5mbyk7CiAKLQkJCXBhX3NlbmRf ZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKTsKKwkJCWlmIChhcHBseV9hY3Rpb24gPT0gVFJB TlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUwpCisJCQkJcGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5s ZW4sIHMtPmRhdGEsIGZhbHNlKTsKKwkJCWVsc2UKKwkJCQlzdHJlYW1fd3JpdGVfY2hhbmdlKGFj dGlvbiwgJm9yaWdpbmFsX21zZyk7CiAKIAkJCS8qCiAJCQkgKiBYWFggVGhlIHB1Ymxpc2hlciBz aWRlIGRvZXNuJ3QgYWx3YXlzIHNlbmQgcmVsYXRpb24vdHlwZSB1cGRhdGUKQEAgLTEyNDksNiAr MTI3MCw5IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAJUGFy YWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvOwogCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0 aW9uOwogCisJLyogU2F2ZSB0aGUgbWVzc2FnZSBiZWZvcmUgaXQgaXMgY29uc3VtZWQuICovCisJ U3RyaW5nSW5mb0RhdGEgb3JpZ2luYWxfbXNnID0gKnM7CisKIAlpZiAoaW5fc3RyZWFtZWRfdHJh bnNhY3Rpb24pCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NP TF9WSU9MQVRJT04pLApAQCAtMTI3Myw3ICsxMjk3LDggQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9w cmVwYXJlKFN0cmluZ0luZm8gcykKIAkJCSAqIFRoZSB0cmFuc2FjdGlvbiBoYXMgYmVlbiBzZXJp YWxpemVkIHRvIGZpbGUsIHNvIHJlcGxheSBhbGwgdGhlCiAJCQkgKiBzcG9vbGVkIG9wZXJhdGlv bnMuCiAJCQkgKi8KLQkJCWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMocHJlcGFyZV9kYXRhLnhpZCwg cHJlcGFyZV9kYXRhLnByZXBhcmVfbHNuKTsKKwkJCWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoTXlM b2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCwKKwkJCQkJCQkJICAgcHJlcGFyZV9kYXRh LnhpZCwgcHJlcGFyZV9kYXRhLnByZXBhcmVfbHNuKTsKIAogCQkJLyogTWFyayB0aGUgdHJhbnNh Y3Rpb24gYXMgcHJlcGFyZWQuICovCiAJCQlhcHBseV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5hbCgm cHJlcGFyZV9kYXRhKTsKQEAgLTEyODgsMjAgKzEzMTMsMjMgQEAgYXBwbHlfaGFuZGxlX3N0cmVh bV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAkJCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNh bFJlcFdvcmtlci0+c3ViaWQsIHByZXBhcmVfZGF0YS54aWQpOwogCQkJYnJlYWs7CiAKLQkJY2Fz ZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKKwkJY2FzZSBUUkFOU19MRUFERVJfUEFS VElBTF9TRVJJQUxJWkU6CiAJCQlBc3NlcnQod2luZm8pOwogCisJCQlzdHJlYW1fb3Blbl9hbmRf d3JpdGVfY2hhbmdlKHByZXBhcmVfZGF0YS54aWQsCisJCQkJCQkJCQkJIExPR0lDQUxfUkVQX01T R19TVFJFQU1fUFJFUEFSRSwKKwkJCQkJCQkJCQkgJm9yaWdpbmFsX21zZyk7CisKKwkJCXBhX3Nl dF9maWxlc2V0X3N0YXRlKHdpbmZvLT5zaGFyZWQsIEZTX1NFUklBTElaRV9ET05FKTsKKwogCQkJ LyoKIAkJCSAqIFVubG9jayB0aGUgc2hhcmVkIG9iamVjdCBsb2NrIHNvIHRoYXQgcGFyYWxsZWwg YXBwbHkgd29ya2VyIGNhbgotCQkJICogY29udGludWUgdG8gcmVjZWl2ZSBhbmQgYXBwbHkgY2hh bmdlcy4KKwkJCSAqIGFwcGx5IHNwb29sZWQgY2hhbmdlcy4KIAkJCSAqLwogCQkJcGFfdW5sb2Nr X3N0cmVhbSh3aW5mby0+c2hhcmVkLT54aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOwogCi0JCQkv KiBTZW5kIFNUUkVBTSBQUkVQQVJFIG1lc3NhZ2UgdG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtl ci4gKi8KLQkJCXBhX3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKTsKLQogCQkJLyoK LQkJCSAqIEFmdGVyIHNlbmRpbmcgdGhlIGRhdGEgdG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtl ciwgd2FpdCBmb3IKKwkJCSAqIEFmdGVyIHNlcmlhbGl6aW5nIHRoZSBTVFJFQU0gUFJFUEFSRSBt ZXNzYWdlIHRvIGEgZmlsZSwgd2FpdCBmb3IKIAkJCSAqIHRoYXQgd29ya2VyIHRvIGZpbmlzaC4g VGhpcyBpcyBuZWNlc3NhcnkgdG8gbWFpbnRhaW4gY29tbWl0CiAJCQkgKiBvcmRlciB3aGljaCBh dm9pZHMgZmFpbHVyZXMgZHVlIHRvIHRyYW5zYWN0aW9uIGRlcGVuZGVuY2llcyBhbmQKIAkJCSAq IGRlYWRsb2Nrcy4KQEAgLTEzMTUsNyArMTM0Myw1MSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3By ZXBhcmUoU3RyaW5nSW5mbyBzKQogCQkJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAJ CQlicmVhazsKIAorCQljYXNlIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgorCQkJQXNz ZXJ0KHdpbmZvKTsKKworCQkJcGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEsIHRy dWUpOworCisJCQkvKgorCQkJICogSXQgaXMgcG9zc2libGUgdGhhdCB3aGlsZSBzZW5kaW5nIHRo aXMgY2hhbmdlIHRvIHBhcmFsbGVsIGFwcGx5CisJCQkgKiB3b3JrZXIgd2UgbmVlZCB0byBzd2l0 Y2ggdG8gc2VyaWFsaXplIG1vZGUuCisJCQkgKi8KKwkJCWlmICh3aW5mby0+c2VyaWFsaXplX2No YW5nZXMpCisJCQl7CisJCQkJc3RyZWFtX3N0b3BfaW50ZXJuYWwod2luZm8tPnNoYXJlZC0+eGlk KTsKKwkJCQlwYV9zZXRfZmlsZXNldF9zdGF0ZSh3aW5mby0+c2hhcmVkLCBGU19TRVJJQUxJWkVf RE9ORSk7CisJCQl9CisKKwkJCS8qCisJCQkgKiBVbmxvY2sgdGhlIHNoYXJlZCBvYmplY3QgbG9j ayBzbyB0aGF0IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBjYW4KKwkJCSAqIGNvbnRpbnVlIHRvIHJl Y2VpdmUgYW5kIGFwcGx5IGNoYW5nZXMuCisJCQkgKi8KKwkJCXBhX3VubG9ja19zdHJlYW0od2lu Zm8tPnNoYXJlZC0+eGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKworCQkJLyoKKwkJCSAqIEFm dGVyIHNlbmRpbmcgdGhlIFNUUkVBTSBQUkVQQVJFIG1lc3NhZ2UgdG8gdGhlIHBhcmFsbGVsIGFw cGx5CisJCQkgKiB3b3JrZXIsIHdhaXQgZm9yIHRoYXQgd29ya2VyIHRvIGZpbmlzaC4gVGhpcyBp cyBuZWNlc3NhcnkgdG8KKwkJCSAqIG1haW50YWluIGNvbW1pdCBvcmRlciB3aGljaCBhdm9pZHMg ZmFpbHVyZXMgZHVlIHRvIHRyYW5zYWN0aW9uCisJCQkgKiBkZXBlbmRlbmNpZXMgYW5kIGRlYWRs b2Nrcy4KKwkJCSAqLworCQkJcGFfd2FpdF9mb3JfeGFjdF9maW5pc2god2luZm8pOworCisJCQlz dG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5kX2xzbiwgd2luZm8tPnNoYXJlZC0+ bGFzdF9jb21taXRfZW5kKTsKKworCQkJKHZvaWQpIHBhX2ZyZWVfd29ya2VyKHdpbmZvLCBwcmVw YXJlX2RhdGEueGlkKTsKKworCQkJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CisJCQli cmVhazsKKwogCQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZOgorCisJCQkvKgorCQkJICogSWYg dGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpcyBhcHBseWluZyBzcG9vbGVkIG1lc3NhZ2VzIHRo ZW4KKwkJCSAqIGNsb3NlIHRoZSBmaWxlIGJlZm9yZSBwcmVwYXJpbmcuCisJCQkgKi8KKwkJCWlm IChzdHJlYW1fZmQpCisJCQkJc3RyZWFtX2Nsb3NlX2ZpbGUoKTsKKwogCQkJYmVnaW5fcmVwbGlj YXRpb25fc3RlcCgpOwogCiAJCQkvKiBNYXJrIHRoZSB0cmFuc2FjdGlvbiBhcyBwcmVwYXJlZC4g Ki8KQEAgLTEzNzgsNiArMTQ1MCw0NyBAQCBhcHBseV9oYW5kbGVfb3JpZ2luKFN0cmluZ0luZm8g cykKIH0KIAogLyoKKyAqIEluaXRpYWxpemUgZmlsZXNldCAoaWYgbm90IGFscmVhZHkgZG9uZSku CisgKgorICogQ3JlYXRlIGEgbmV3IGZpbGUgd2hlbiBmaXJzdF9zZWdtZW50IGlzIHRydWUsIG90 aGVyd2lzZSBvcGVuIHRoZSBleGlzdGluZworICogZmlsZS4KKyAqLwordm9pZAorc3RyZWFtX3N0 YXJ0X2ludGVybmFsKFRyYW5zYWN0aW9uSWQgeGlkLCBib29sIGZpcnN0X3NlZ21lbnQpCit7CisJ YmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOworCisJLyoKKwkgKiBJbml0aWFsaXplIHRoZSB3b3Jr ZXIncyBzdHJlYW1fZmlsZXNldCBpZiB3ZSBoYXZlbid0IHlldC4gVGhpcyB3aWxsIGJlCisJICog dXNlZCBmb3IgdGhlIGVudGlyZSBkdXJhdGlvbiBvZiB0aGUgd29ya2VyIHNvIGNyZWF0ZSBpdCBp biBhIHBlcm1hbmVudAorCSAqIGNvbnRleHQuIFdlIGNyZWF0ZSB0aGlzIG9uIHRoZSB2ZXJ5IGZp cnN0IHN0cmVhbWluZyBtZXNzYWdlIGZyb20gYW55CisJICogdHJhbnNhY3Rpb24gYW5kIHRoZW4g dXNlIGl0IGZvciB0aGlzIGFuZCBvdGhlciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zLgorCSAqIE5v dywgd2UgY291bGQgY3JlYXRlIGEgZmlsZXNldCBhdCB0aGUgc3RhcnQgb2YgdGhlIHdvcmtlciBh cyB3ZWxsIGJ1dAorCSAqIHRoZW4gd2Ugd29uJ3QgYmUgc3VyZSB0aGF0IGl0IHdpbGwgZXZlciBi ZSB1c2VkLgorCSAqLworCWlmICghTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCkK Kwl7CisJCU1lbW9yeUNvbnRleHQgb2xkY3R4OworCisJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRT d2l0Y2hUbyhBcHBseUNvbnRleHQpOworCisJCU15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2Zp bGVzZXQgPSBwYWxsb2Moc2l6ZW9mKEZpbGVTZXQpKTsKKwkJRmlsZVNldEluaXQoTXlMb2dpY2Fs UmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCk7CisKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9s ZGN0eCk7CisJfQorCisJLyogT3BlbiB0aGUgc3Bvb2wgZmlsZSBmb3IgdGhpcyB0cmFuc2FjdGlv bi4gKi8KKwlzdHJlYW1fb3Blbl9maWxlKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCwg Zmlyc3Rfc2VnbWVudCk7CisKKwkvKiBJZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3Qgc2VnbWVudCwg b3BlbiBleGlzdGluZyBzdWJ4YWN0IGZpbGUuICovCisJaWYgKCFmaXJzdF9zZWdtZW50KQorCQlz dWJ4YWN0X2luZm9fcmVhZChNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOworCisJZW5k X3JlcGxpY2F0aW9uX3N0ZXAoKTsKK30KKworLyoKICAqIEhhbmRsZSBTVFJFQU0gU1RBUlQgbWVz c2FnZS4KICAqLwogc3RhdGljIHZvaWQKQEAgLTEzODcsNiArMTUwMCw5IEBAIGFwcGx5X2hhbmRs ZV9zdHJlYW1fc3RhcnQoU3RyaW5nSW5mbyBzKQogCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3 aW5mbzsKIAlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKIAorCS8qIFNhdmUgdGhlIG1l c3NhZ2UgYmVmb3JlIGl0IGlzIGNvbnN1bWVkLiAqLworCVN0cmluZ0luZm9EYXRhIG9yaWdpbmFs X21zZyA9ICpzOworCiAJaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQogCQllcmVwb3J0KEVS Uk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKQEAgLTE0MTYs NjIgKzE1MzIsNDMgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFydChTdHJpbmdJbmZvIHMpCiAJ CWNhc2UgVFJBTlNfTEVBREVSX1NFUklBTElaRToKIAogCQkJLyoKLQkJCSAqIFN0YXJ0IGEgdHJh bnNhY3Rpb24gb24gc3RyZWFtIHN0YXJ0LCB0aGlzIHRyYW5zYWN0aW9uIHdpbGwgYmUKLQkJCSAq IGNvbW1pdHRlZCBvbiB0aGUgc3RyZWFtIHN0b3AgdW5sZXNzIGl0IGlzIGEgdGFibGVzeW5jIHdv cmtlciBpbgotCQkJICogd2hpY2ggY2FzZSBpdCB3aWxsIGJlIGNvbW1pdHRlZCBhZnRlciBwcm9j ZXNzaW5nIGFsbCB0aGUKLQkJCSAqIG1lc3NhZ2VzLiBXZSBuZWVkIHRoZSB0cmFuc2FjdGlvbiBm b3IgaGFuZGxpbmcgdGhlIGJ1ZmZpbGUsCi0JCQkgKiB1c2VkIGZvciBzZXJpYWxpemluZyB0aGUg c3RyZWFtaW5nIGRhdGEgYW5kIHN1YnhhY3QgaW5mby4KKwkJCSAqIEZ1bmN0aW9uIHN0cmVhbV9z dGFydF9pbnRlcm5hbCBzdGFydHMgYSB0cmFuc2FjdGlvbi4gVGhpcworCQkJICogdHJhbnNhY3Rp b24gd2lsbCBiZSBjb21taXR0ZWQgb24gdGhlIHN0cmVhbSBzdG9wIHVubGVzcyBpdCBpcyBhCisJ CQkgKiB0YWJsZXN5bmMgd29ya2VyIGluIHdoaWNoIGNhc2UgaXQgd2lsbCBiZSBjb21taXR0ZWQg YWZ0ZXIKKwkJCSAqIHByb2Nlc3NpbmcgYWxsIHRoZSBtZXNzYWdlcy4gV2UgbmVlZCB0aGlzIHRy YW5zYWN0aW9uIGZvcgorCQkJICogaGFuZGxpbmcgdGhlIEJ1ZkZpbGUsIHVzZWQgZm9yIHNlcmlh bGl6aW5nIHRoZSBzdHJlYW1pbmcgZGF0YQorCQkJICogYW5kIHN1YnhhY3QgaW5mby4KIAkJCSAq LwotCQkJYmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOworCQkJc3RyZWFtX3N0YXJ0X2ludGVybmFs KHN0cmVhbV94aWQsIGZpcnN0X3NlZ21lbnQpOworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19M RUFERVJfUEFSVElBTF9TRVJJQUxJWkU6CiAKIAkJCS8qCi0JCQkgKiBJbml0aWFsaXplIHRoZSB3 b3JrZXIncyBzdHJlYW1fZmlsZXNldCBpZiB3ZSBoYXZlbid0IHlldC4gVGhpcwotCQkJICogd2ls bCBiZSB1c2VkIGZvciB0aGUgZW50aXJlIGR1cmF0aW9uIG9mIHRoZSB3b3JrZXIgc28gY3JlYXRl IGl0Ci0JCQkgKiBpbiBhIHBlcm1hbmVudCBjb250ZXh0LiBXZSBjcmVhdGUgdGhpcyBvbiB0aGUg dmVyeSBmaXJzdAotCQkJICogc3RyZWFtaW5nIG1lc3NhZ2UgZnJvbSBhbnkgdHJhbnNhY3Rpb24g YW5kIHRoZW4gdXNlIGl0IGZvciB0aGlzCi0JCQkgKiBhbmQgb3RoZXIgc3RyZWFtaW5nIHRyYW5z YWN0aW9ucy4gTm93LCB3ZSBjb3VsZCBjcmVhdGUgYQotCQkJICogZmlsZXNldCBhdCB0aGUgc3Rh cnQgb2YgdGhlIHdvcmtlciBhcyB3ZWxsIGJ1dCB0aGVuIHdlIHdvbid0IGJlCi0JCQkgKiBzdXJl IHRoYXQgaXQgd2lsbCBldmVyIGJlIHVzZWQuCisJCQkgKiBUaGUgbWVzc2FnZSBzcG9vbCBmaWxl IHdhcyBhbHJlYWR5IGNyZWF0ZWQgd2hlbiBlbnRlcmluZworCQkJICogUEFSVElBTF9TRVJJQUxJ WkUgbW9kZS4gVGhlIHRyYW5zYWN0aW9uIHN0YXJ0ZWQgaW4KKwkJCSAqIHN0cmVhbV9zdGFydF9p bnRlcm5hbCB3aWxsIGJlIGNvbW1pdHRlZCBvbiB0aGUgc3RyZWFtIHN0b3AuCiAJCQkgKi8KLQkJ CWlmICghTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCkKLQkJCXsKLQkJCQlNZW1v cnlDb250ZXh0IG9sZGN0eDsKLQotCQkJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhB cHBseUNvbnRleHQpOwotCi0JCQkJTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCA9 IHBhbGxvYyhzaXplb2YoRmlsZVNldCkpOwotCQkJCUZpbGVTZXRJbml0KE15TG9naWNhbFJlcFdv cmtlci0+c3RyZWFtX2ZpbGVzZXQpOwotCi0JCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0 eCk7Ci0JCQl9Ci0KLQkJCS8qIE9wZW4gdGhlIHNwb29sIGZpbGUgZm9yIHRoaXMgdHJhbnNhY3Rp b24uICovCi0JCQlzdHJlYW1fb3Blbl9maWxlKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0 cmVhbV94aWQsIGZpcnN0X3NlZ21lbnQpOwotCi0JCQkvKiBJZiB0aGlzIGlzIG5vdCB0aGUgZmly c3Qgc2VnbWVudCwgb3BlbiBleGlzdGluZyBzdWJ4YWN0IGZpbGUuICovCi0JCQlpZiAoIWZpcnN0 X3NlZ21lbnQpCi0JCQkJc3VieGFjdF9pbmZvX3JlYWQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJp ZCwgc3RyZWFtX3hpZCk7Ci0KLQkJCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7CisJCQlzdHJlYW1f c3RhcnRfaW50ZXJuYWwoc3RyZWFtX3hpZCwgZmFsc2UpOworCQkJc3RyZWFtX3dyaXRlX2NoYW5n ZShMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX1NUQVJULCAmb3JpZ2luYWxfbXNnKTsKIAkJCWJyZWFr OwogCiAJCWNhc2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CiAJCQlBc3NlcnQod2lu Zm8pOwogCi0JCQkvKgotCQkJICogVW5sb2NrIHRoZSBzaGFyZWQgb2JqZWN0IGxvY2sgc28gdGhh dCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyCi0JCQkgKiBjYW4gY29udGludWUgdG8gcmVjZWl2 ZSBjaGFuZ2VzLgotCQkJICovCi0JCQlpZiAoIWZpcnN0X3NlZ21lbnQpCi0JCQkJcGFfdW5sb2Nr X3N0cmVhbSh3aW5mby0+c2hhcmVkLT54aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCQkJcGFf c2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEsICFmaXJzdF9zZWdtZW50KTsKIAotCQkJ LyoKLQkJCSAqIEluY3JlbWVudCB0aGUgbnVtYmVyIG9mIHN0cmVhbWluZyBibG9ja3Mgd2FpdGlu ZyB0byBiZQotCQkJICogcHJvY2Vzc2VkIGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KLQkJCSAq LwotCQkJcGFfaW5jcmVtZW50X3N0cmVhbV9ibG9jayh3aW5mby0+c2hhcmVkKTsKKwkJCWlmICgh d2luZm8tPnNlcmlhbGl6ZV9jaGFuZ2VzKQorCQkJeworCQkJCWlmICghZmlyc3Rfc2VnbWVudCkK KwkJCQkJcGFfdW5sb2NrX3N0cmVhbSh3aW5mby0+c2hhcmVkLT54aWQsIEFjY2Vzc0V4Y2x1c2l2 ZUxvY2spOwogCi0JCQlwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSk7CisJCQkJ LyoKKwkJCQkgKiBJbmNyZW1lbnQgdGhlIG51bWJlciBvZiBzdHJlYW1pbmcgYmxvY2tzIHdhaXRp bmcgdG8gYmUKKwkJCQkgKiBwcm9jZXNzZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorCQkJ CSAqLworCQkJCXBhX2luY3JlbWVudF9zdHJlYW1fYmxvY2sod2luZm8tPnNoYXJlZCk7CisJCQl9 CiAKIAkJCS8qIENhY2hlIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZm9yIHRoaXMgdHJhbnNh Y3Rpb24uICovCiAJCQlwYV9zZXRfc3RyZWFtX2FwcGx5X3dvcmtlcih3aW5mbyk7CkBAIC0xNDk3 LDYgKzE1OTQsMzMgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFydChTdHJpbmdJbmZvIHMpCiB9 CiAKIC8qCisgKiBVcGRhdGUgdGhlIGluZm9ybWF0aW9uIGFib3V0IHN1YnhhY3RzIGFuZCBjbG9z ZSB0aGUgZmlsZS4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgd2hlbiB0 aGUgc3RyZWFtX3N0YXJ0X2ludGVybmFsIGZ1bmN0aW9uIGhhcworICogYmVlbiBjYWxsZWQuCisg Ki8KK3ZvaWQKK3N0cmVhbV9zdG9wX2ludGVybmFsKFRyYW5zYWN0aW9uSWQgeGlkKQoreworCS8q CisJICogU2VyaWFsaXplIGluZm9ybWF0aW9uIGFib3V0IHN1YnhhY3RzIGZvciB0aGUgdG9wbGV2 ZWwgdHJhbnNhY3Rpb24sIHRoZW4KKwkgKiBjbG9zZSB0aGUgc3RyZWFtIG1lc3NhZ2VzIHNwb29s IGZpbGUuCisJICovCisJc3VieGFjdF9pbmZvX3dyaXRlKE15TG9naWNhbFJlcFdvcmtlci0+c3Vi aWQsIHhpZCk7CisJc3RyZWFtX2Nsb3NlX2ZpbGUoKTsKKworCUFzc2VydChJc1RyYW5zYWN0aW9u U3RhdGUoKSk7CisKKwkvKiBDb21taXQgdGhlIHBlci1zdHJlYW0gdHJhbnNhY3Rpb24gKi8KKwlD b21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCS8qIFJlc2V0IHBlci1zdHJlYW0gY29udGV4 dCAqLworCU1lbW9yeUNvbnRleHRSZXNldChMb2dpY2FsU3RyZWFtaW5nQ29udGV4dCk7CisKKwlw Z3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5VTEwpOworfQorCisvKgogICogSGFu ZGxlIFNUUkVBTSBTVE9QIG1lc3NhZ2UuCiAgKi8KIHN0YXRpYyB2b2lkCkBAIC0xNTE1LDI0ICsx NjM5LDEzIEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RvcChTdHJpbmdJbmZvIHMpCiAJc3dpdGNo IChhcHBseV9hY3Rpb24pCiAJewogCQljYXNlIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6CisJCQlz dHJlYW1fc3RvcF9pbnRlcm5hbChzdHJlYW1feGlkKTsKKwkJCWJyZWFrOwogCi0JCQkvKgotCQkJ ICogQ2xvc2UgdGhlIGZpbGUgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMsIGFuZCBzZXJpYWxpemUK LQkJCSAqIGluZm9ybWF0aW9uIGFib3V0IHN1YnhhY3RzIGZvciB0aGUgdG9wbGV2ZWwgdHJhbnNh Y3Rpb24uCi0JCQkgKi8KLQkJCXN1YnhhY3RfaW5mb193cml0ZShNeUxvZ2ljYWxSZXBXb3JrZXIt PnN1YmlkLCBzdHJlYW1feGlkKTsKLQkJCXN0cmVhbV9jbG9zZV9maWxlKCk7Ci0KLQkJCS8qIFdl IG11c3QgYmUgaW4gYSB2YWxpZCB0cmFuc2FjdGlvbiBzdGF0ZSAqLwotCQkJQXNzZXJ0KElzVHJh bnNhY3Rpb25TdGF0ZSgpKTsKLQotCQkJLyogQ29tbWl0IHRoZSBwZXItc3RyZWFtIHRyYW5zYWN0 aW9uICovCi0JCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKLQotCQkJLyogUmVzZXQgcGVy LXN0cmVhbSBjb250ZXh0ICovCi0JCQlNZW1vcnlDb250ZXh0UmVzZXQoTG9naWNhbFN0cmVhbWlu Z0NvbnRleHQpOwotCi0JCQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5VTEwp OworCQljYXNlIFRSQU5TX0xFQURFUl9QQVJUSUFMX1NFUklBTElaRToKKwkJCXN0cmVhbV93cml0 ZV9jaGFuZ2UoTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9TVE9QLCBzKTsKKwkJCXN0cmVhbV9zdG9w X2ludGVybmFsKHN0cmVhbV94aWQpOworCQkJcGFfc2V0X3N0cmVhbV9hcHBseV93b3JrZXIoTlVM TCk7CiAJCQlicmVhazsKIAogCQljYXNlIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgpA QCAtMTU0Niw3ICsxNjU5LDE0IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RvcChTdHJpbmdJbmZv IHMpCiAJCQkgKi8KIAkJCXBhX2xvY2tfc3RyZWFtKHdpbmZvLT5zaGFyZWQtPnhpZCwgQWNjZXNz RXhjbHVzaXZlTG9jayk7CiAKLQkJCXBhX3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRh KTsKKwkJCXBhX3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhLCB0cnVlKTsKKworCQkJ LyoKKwkJCSAqIEl0IGlzIHBvc3NpYmxlIHRoYXQgd2hpbGUgc2VuZGluZyB0aGlzIGNoYW5nZSB0 byBwYXJhbGxlbCBhcHBseQorCQkJICogd29ya2VyIHdlIG5lZWQgdG8gc3dpdGNoIHRvIHNlcmlh bGl6ZSBtb2RlLgorCQkJICovCisJCQlpZiAod2luZm8tPnNlcmlhbGl6ZV9jaGFuZ2VzKQorCQkJ CXN0cmVhbV9zdG9wX2ludGVybmFsKHdpbmZvLT5zaGFyZWQtPnhpZCk7CiAKIAkJCXBhX3NldF9z dHJlYW1fYXBwbHlfd29ya2VyKE5VTEwpOwogCkBAIC0xNjc1LDYgKzE3OTUsOSBAQCBhcHBseV9o YW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIAlMb2dpY2FsUmVwU3RyZWFtQWJvcnRE YXRhIGFib3J0X2RhdGE7CiAJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvOwogCVRyYW5z QXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOworCisJLyogU2F2ZSB0aGUgbWVzc2FnZSBiZWZvcmUg aXQgaXMgY29uc3VtZWQuICovCisJU3RyaW5nSW5mb0RhdGEgb3JpZ2luYWxfbXNnID0gKnM7CiAJ Ym9vbAkJdG9wbGV2ZWxfeGFjdDsKIAogCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKQEAg LTE3MDUsMTQgKzE4MjgsMjggQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZv IHMpCiAJCQlzdHJlYW1fYWJvcnRfaW50ZXJuYWwoeGlkLCBzdWJ4aWQpOwogCQkJYnJlYWs7CiAK LQkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKKwkJY2FzZSBUUkFOU19MRUFE RVJfUEFSVElBTF9TRVJJQUxJWkU6CiAJCQlBc3NlcnQod2luZm8pOwogCiAJCQkvKgotCQkJICog VW5sb2NrIHRoZSBzaGFyZWQgb2JqZWN0IGxvY2sgc28gdGhhdCBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgY2FuCi0JCQkgKiBjb250aW51ZSB0byByZWNlaXZlIGFuZCBhcHBseSBjaGFuZ2VzLgorCQkJ ICogUGFyYWxsZWwgYXBwbHkgd29ya2VyIG1pZ2h0IGhhdmUgYXBwbGllZCBzb21lIGNoYW5nZXMs IHNvIHdyaXRlCisJCQkgKiB0aGUgU1RSRUFNX0FCT1JUIG1lc3NhZ2Ugc28gdGhhdCBpdCBjYW4g cm9sbGJhY2sgdGhlCisJCQkgKiBzdWJ0cmFuc2FjdGlvbiBpZiBuZWVkZWQuCiAJCQkgKi8KLQkJ CXBhX3VubG9ja19zdHJlYW0oeGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKwkJCXN0cmVhbV9v cGVuX2FuZF93cml0ZV9jaGFuZ2UoeGlkLCBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX0FCT1JULAor CQkJCQkJCQkJCSAmb3JpZ2luYWxfbXNnKTsKKworCQkJaWYgKHRvcGxldmVsX3hhY3QpCisJCQl7 CisJCQkJcGFfdW5sb2NrX3N0cmVhbSh4aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCQkJCXBh X3NldF9maWxlc2V0X3N0YXRlKHdpbmZvLT5zaGFyZWQsIEZTX1NFUklBTElaRV9ET05FKTsKKwkJ CQkodm9pZCkgcGFfZnJlZV93b3JrZXIod2luZm8sIHhpZCk7CisJCQl9CisKKwkJCWJyZWFrOwor CisJCWNhc2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CisJCQlBc3NlcnQod2luZm8p OwogCiAJCQkvKgogCQkJICogRm9yIHRoZSBjYXNlIG9mIGFib3J0aW5nIHRoZSBzdWJ0cmFuc2Fj dGlvbiwgd2UgaW5jcmVtZW50IHRoZQpAQCAtMTcyNCwxOSArMTg2MSw0MSBAQCBhcHBseV9oYW5k bGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIAkJCSAqLwogCQkJaWYgKCF0b3BsZXZlbF94 YWN0KQogCQkJeworCQkJCXBhX3VubG9ja19zdHJlYW0oeGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2Nr KTsKIAkJCQlwYV9pbmNyZW1lbnRfc3RyZWFtX2Jsb2NrKHdpbmZvLT5zaGFyZWQpOwogCQkJCXBh X2xvY2tfc3RyZWFtKHhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CiAJCQl9CiAKIAkJCS8qIFNl bmQgU1RSRUFNIEFCT1JUIG1lc3NhZ2UgdG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gKi8K LQkJCXBhX3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKTsKKwkJCXBhX3NlbmRfZGF0 YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhLCB0cnVlKTsKKworCQkJLyoKKwkJCSAqIEl0IGlzIHBv c3NpYmxlIHRoYXQgd2hpbGUgc2VuZGluZyB0aGlzIGNoYW5nZSB0byBwYXJhbGxlbCBhcHBseQor CQkJICogd29ya2VyIHdlIG5lZWQgdG8gc3dpdGNoIHRvIHNlcmlhbGl6ZSBtb2RlLgorCQkJICov CisJCQlpZiAod2luZm8tPnNlcmlhbGl6ZV9jaGFuZ2VzKQorCQkJCXN0cmVhbV9zdG9wX2ludGVy bmFsKHdpbmZvLT5zaGFyZWQtPnhpZCk7CiAKIAkJCWlmICh0b3BsZXZlbF94YWN0KQorCQkJewor CQkJCWlmICh3aW5mby0+c2VyaWFsaXplX2NoYW5nZXMpCisJCQkJCXBhX3NldF9maWxlc2V0X3N0 YXRlKHdpbmZvLT5zaGFyZWQsIEZTX1NFUklBTElaRV9ET05FKTsKKworCQkJCXBhX3VubG9ja19z dHJlYW0oeGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKIAkJCQkodm9pZCkgcGFfZnJlZV93b3Jr ZXIod2luZm8sIHhpZCk7CisJCQl9CiAKIAkJCWJyZWFrOwogCiAJCWNhc2UgVFJBTlNfUEFSQUxM RUxfQVBQTFk6CisKKwkJCS8qCisJCQkgKiBJZiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlz IGFwcGx5aW5nIHNwb29sZWQgbWVzc2FnZXMgdGhlbgorCQkJICogY2xvc2UgdGhlIGZpbGUgYmVm b3JlIGFib3J0aW5nLgorCQkJICovCisJCQlpZiAodG9wbGV2ZWxfeGFjdCAmJiBzdHJlYW1fZmQp CisJCQkJc3RyZWFtX2Nsb3NlX2ZpbGUoKTsKKwogCQkJcGFfc3RyZWFtX2Fib3J0KCZhYm9ydF9k YXRhKTsKIAogCQkJLyoKQEAgLTE3NjYsMTkgKzE5MjUsNTUgQEAgYXBwbHlfaGFuZGxlX3N0cmVh bV9hYm9ydChTdHJpbmdJbmZvIHMpCiB9CiAKIC8qCi0gKiBDb21tb24gc3Bvb2xmaWxlIHByb2Nl c3NpbmcuCisgKiBFbnN1cmUgdGhhdCB0aGUgcGFzc2VkIGxvY2F0aW9uIGlzIGZpbGVzZXQncyBl bmQuCiAgKi8KIHN0YXRpYyB2b2lkCi1hcHBseV9zcG9vbGVkX21lc3NhZ2VzKFRyYW5zYWN0aW9u SWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKK2Vuc3VyZV9sYXN0X21lc3NhZ2UoRmlsZVNldCAqc3Ry ZWFtX2ZpbGVzZXQsIFRyYW5zYWN0aW9uSWQgeGlkLCBpbnQgZmlsZW5vLAorCQkJCQlvZmZfdCBv ZmZzZXQpCit7CisJY2hhcgkJcGF0aFtNQVhQR1BBVEhdOworCUJ1ZkZpbGUJICAgKmZkOworCWlu dAkJCWxhc3RfZmlsZW5vOworCW9mZl90CQlsYXN0X29mZnNldDsKKworCUFzc2VydCghSXNUcmFu c2FjdGlvblN0YXRlKCkpOworCisJYmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOworCisJY2hhbmdl c19maWxlbmFtZShwYXRoLCBNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOworCisJZmQg PSBCdWZGaWxlT3BlbkZpbGVTZXQoc3RyZWFtX2ZpbGVzZXQsIHBhdGgsIE9fUkRPTkxZLCBmYWxz ZSk7CisKKwlCdWZGaWxlU2VlayhmZCwgMCwgMCwgU0VFS19FTkQpOworCUJ1ZkZpbGVUZWxsKGZk LCAmbGFzdF9maWxlbm8sICZsYXN0X29mZnNldCk7CisKKwlCdWZGaWxlQ2xvc2UoZmQpOworCisJ ZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKKworCWlmIChsYXN0X2ZpbGVubyAhPSBmaWxlbm8gfHwg bGFzdF9vZmZzZXQgIT0gb2Zmc2V0KQorCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBtZXNzYWdl IGxlZnQgaW4gc3RyZWFtaW5nIHRyYW5zYWN0aW9uJ3MgY2hhbmdlcyBmaWxlIFwiJXNcIiIsCisJ CQkgcGF0aCk7Cit9CisKKy8qCisgKiBDb21tb24gc3Bvb2xmaWxlIHByb2Nlc3NpbmcuCisgKi8K K3ZvaWQKK2FwcGx5X3Nwb29sZWRfbWVzc2FnZXMoRmlsZVNldCAqc3RyZWFtX2ZpbGVzZXQsIFRy YW5zYWN0aW9uSWQgeGlkLAorCQkJCQkgICBYTG9nUmVjUHRyIGxzbikKIHsKIAlTdHJpbmdJbmZv RGF0YSBzMjsKIAlpbnQJCQluY2hhbmdlczsKIAljaGFyCQlwYXRoW01BWFBHUEFUSF07CiAJY2hh cgkgICAqYnVmZmVyID0gTlVMTDsKIAlNZW1vcnlDb250ZXh0IG9sZGN4dDsKLQlCdWZGaWxlICAg ICpmZDsKKwlSZXNvdXJjZU93bmVyIG9sZG93bmVyOworCWludAkJCWZpbGVubzsKKwlvZmZfdAkJ b2Zmc2V0OwogCi0JbWF5YmVfc3RhcnRfc2tpcHBpbmdfY2hhbmdlcyhsc24pOworCWlmICghYW1f cGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCisJCW1heWJlX3N0YXJ0X3NraXBwaW5nX2NoYW5nZXMo bHNuKTsKIAogCS8qIE1ha2Ugc3VyZSB3ZSBoYXZlIGFuIG9wZW4gdHJhbnNhY3Rpb24gKi8KIAli ZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CkBAIC0xNzk0LDggKzE5ODksMTYgQEAgYXBwbHlfc3Bv b2xlZF9tZXNzYWdlcyhUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCiAJY2hhbmdl c19maWxlbmFtZShwYXRoLCBNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOwogCWVsb2co REVCVUcxLCAicmVwbGF5aW5nIGNoYW5nZXMgZnJvbSBmaWxlIFwiJXNcIiIsIHBhdGgpOwogCi0J ZmQgPSBCdWZGaWxlT3BlbkZpbGVTZXQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNl dCwgcGF0aCwgT19SRE9OTFksCi0JCQkJCQkJZmFsc2UpOworCS8qCisJICogTWFrZSBzdXJlIHRo ZSBmaWxlIGlzIG93bmVkIGJ5IHRoZSB0b3BsZXZlbCB0cmFuc2FjdGlvbiBzbyB0aGF0IHRoZSBm aWxlCisJICogd2lsbCBub3QgYmUgYWNjaWRlbnRhbGx5IGNsb3NlZCB3aGVuIGFib3J0aW5nIGEg c3VidHJhbnNhY3Rpb24uCisJICovCisJb2xkb3duZXIgPSBDdXJyZW50UmVzb3VyY2VPd25lcjsK KwlDdXJyZW50UmVzb3VyY2VPd25lciA9IFRvcFRyYW5zYWN0aW9uUmVzb3VyY2VPd25lcjsKKwor CXN0cmVhbV9mZCA9IEJ1ZkZpbGVPcGVuRmlsZVNldChzdHJlYW1fZmlsZXNldCwgcGF0aCwgT19S RE9OTFksIGZhbHNlKTsKKworCUN1cnJlbnRSZXNvdXJjZU93bmVyID0gb2xkb3duZXI7CiAKIAli dWZmZXIgPSBwYWxsb2MoQkxDS1NaKTsKIAlpbml0U3RyaW5nSW5mbygmczIpOwpAQCAtMTgyNiw3 ICsyMDI5LDcgQEAgYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhUcmFuc2FjdGlvbklkIHhpZCwgWExv Z1JlY1B0ciBsc24pCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKIAkJLyogcmVhZCBsZW5n dGggb2YgdGhlIG9uLWRpc2sgcmVjb3JkICovCi0JCW5ieXRlcyA9IEJ1ZkZpbGVSZWFkKGZkLCAm bGVuLCBzaXplb2YobGVuKSk7CisJCW5ieXRlcyA9IEJ1ZkZpbGVSZWFkKHN0cmVhbV9mZCwgJmxl biwgc2l6ZW9mKGxlbikpOwogCiAJCS8qIGhhdmUgd2UgcmVhY2hlZCBlbmQgb2YgdGhlIGZpbGU/ ICovCiAJCWlmIChuYnl0ZXMgPT0gMCkKQEAgLTE4NDcsMTIgKzIwNTAsMTQgQEAgYXBwbHlfc3Bv b2xlZF9tZXNzYWdlcyhUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCiAJCWJ1ZmZl ciA9IHJlcGFsbG9jKGJ1ZmZlciwgbGVuKTsKIAogCQkvKiBhbmQgZmluYWxseSByZWFkIHRoZSBk YXRhIGludG8gdGhlIGJ1ZmZlciAqLwotCQlpZiAoQnVmRmlsZVJlYWQoZmQsIGJ1ZmZlciwgbGVu KSAhPSBsZW4pCisJCWlmIChCdWZGaWxlUmVhZChzdHJlYW1fZmQsIGJ1ZmZlciwgbGVuKSAhPSBs ZW4pCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZV9mb3JfZmlsZV9hY2Nlc3MoKSwK IAkJCQkJIGVycm1zZygiY291bGQgbm90IHJlYWQgZnJvbSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24n cyBjaGFuZ2VzIGZpbGUgXCIlc1wiOiAlbSIsCiAJCQkJCQkJcGF0aCkpKTsKIAorCQlCdWZGaWxl VGVsbChzdHJlYW1fZmQsICZmaWxlbm8sICZvZmZzZXQpOworCiAJCS8qIGNvcHkgdGhlIGJ1ZmZl ciB0byB0aGUgc3RyaW5naW5mbyBhbmQgY2FsbCBhcHBseV9kaXNwYXRjaCAqLwogCQlyZXNldFN0 cmluZ0luZm8oJnMyKTsKIAkJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbygmczIsIGJ1ZmZlciwgbGVu KTsKQEAgLTE4NjgsMTUgKzIwNzMsMjQgQEAgYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhUcmFuc2Fj dGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCiAKIAkJbmNoYW5nZXMrKzsKIAorCQkvKgorCQkg KiBJdCBpcyBwb3NzaWJsZSB0aGUgZmlsZSBoYXMgYmVlbiBjbG9zZWQgYmVjYXVzZSB3ZSBoYXZl IHByb2Nlc3NlZAorCQkgKiB0aGUgdHJhbnNhY3Rpb24gZW5kIG1lc3NhZ2UgbGlrZSBzdHJlYW1f Y29tbWl0IGluIHdoaWNoIGNhc2UgdGhhdAorCQkgKiBtdXN0IGJlIHRoZSBsYXN0IG1lc3NhZ2Uu CisJCSAqLworCQlpZiAoIXN0cmVhbV9mZCkKKwkJeworCQkJZW5zdXJlX2xhc3RfbWVzc2FnZShz dHJlYW1fZmlsZXNldCwgeGlkLCBmaWxlbm8sIG9mZnNldCk7CisJCQlicmVhazsKKwkJfQorCiAJ CWlmIChuY2hhbmdlcyAlIDEwMDAgPT0gMCkKIAkJCWVsb2coREVCVUcxLCAicmVwbGF5ZWQgJWQg Y2hhbmdlcyBmcm9tIGZpbGUgXCIlc1wiIiwKIAkJCQkgbmNoYW5nZXMsIHBhdGgpOwogCX0KIAot CUJ1ZkZpbGVDbG9zZShmZCk7Ci0KLQlwZnJlZShidWZmZXIpOwotCXBmcmVlKHMyLmRhdGEpOwor CWlmIChzdHJlYW1fZmQpCisJCXN0cmVhbV9jbG9zZV9maWxlKCk7CiAKIAllbG9nKERFQlVHMSwg InJlcGxheWVkICVkIChhbGwpIGNoYW5nZXMgZnJvbSBmaWxlIFwiJXNcIiIsCiAJCSBuY2hhbmdl cywgcGF0aCk7CkBAIC0xODk1LDYgKzIxMDksOSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1p dChTdHJpbmdJbmZvIHMpCiAJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvOwogCVRyYW5z QXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOwogCisJLyogU2F2ZSB0aGUgbWVzc2FnZSBiZWZvcmUg aXQgaXMgY29uc3VtZWQuICovCisJU3RyaW5nSW5mb0RhdGEgb3JpZ2luYWxfbXNnID0gKnM7CisK IAlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVy cmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLApAQCAtMTkxMyw3ICsyMTMwLDggQEAg YXBwbHlfaGFuZGxlX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBzKQogCQkJICogVGhlIHRyYW5z YWN0aW9uIGhhcyBiZWVuIHNlcmlhbGl6ZWQgdG8gZmlsZSwgc28gcmVwbGF5IGFsbCB0aGUKIAkJ CSAqIHNwb29sZWQgb3BlcmF0aW9ucy4KIAkJCSAqLwotCQkJYXBwbHlfc3Bvb2xlZF9tZXNzYWdl cyh4aWQsIGNvbW1pdF9kYXRhLmNvbW1pdF9sc24pOworCQkJYXBwbHlfc3Bvb2xlZF9tZXNzYWdl cyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0LCB4aWQsCisJCQkJCQkJCSAgIGNv bW1pdF9kYXRhLmNvbW1pdF9sc24pOwogCiAJCQlhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFs KCZjb21taXRfZGF0YSk7CiAKQEAgLTE5MjEsMjAgKzIxMzksMjIgQEAgYXBwbHlfaGFuZGxlX3N0 cmVhbV9jb21taXQoU3RyaW5nSW5mbyBzKQogCQkJc3RyZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dp Y2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkKTsKIAkJCWJyZWFrOwogCi0JCWNhc2UgVFJBTlNfTEVB REVSX1NFTkRfVE9fUEFSQUxMRUw6CisJCWNhc2UgVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VSSUFM SVpFOgogCQkJQXNzZXJ0KHdpbmZvKTsKIAorCQkJc3RyZWFtX29wZW5fYW5kX3dyaXRlX2NoYW5n ZSh4aWQsIExPR0lDQUxfUkVQX01TR19TVFJFQU1fQ09NTUlULAorCQkJCQkJCQkJCSAmb3JpZ2lu YWxfbXNnKTsKKworCQkJcGFfc2V0X2ZpbGVzZXRfc3RhdGUod2luZm8tPnNoYXJlZCwgRlNfU0VS SUFMSVpFX0RPTkUpOworCiAJCQkvKgogCQkJICogVW5sb2NrIHRoZSBzaGFyZWQgb2JqZWN0IGxv Y2sgc28gdGhhdCBwYXJhbGxlbCBhcHBseSB3b3JrZXIgY2FuCi0JCQkgKiBjb250aW51ZSB0byBy ZWNlaXZlIGFuZCBhcHBseSBjaGFuZ2VzLgorCQkJICogYXBwbHkgc3Bvb2xlZCBjaGFuZ2VzLgog CQkJICovCiAJCQlwYV91bmxvY2tfc3RyZWFtKHhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CiAK LQkJCS8qIFNlbmQgU1RSRUFNIENPTU1JVCBtZXNzYWdlIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3 b3JrZXIuICovCi0JCQlwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSk7Ci0KIAkJ CS8qCi0JCQkgKiBBZnRlciBzZW5kaW5nIHRoZSBkYXRhIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3 b3JrZXIsIHdhaXQgZm9yCisJCQkgKiBBZnRlciBzZXJpYWxpemluZyB0aGUgU1RSRUFNIENPTU1J VCBtZXNzYWdlIHRvIGEgZmlsZSwgd2FpdCBmb3IKIAkJCSAqIHRoYXQgd29ya2VyIHRvIGZpbmlz aC4gVGhpcyBpcyBuZWNlc3NhcnkgdG8gbWFpbnRhaW4gY29tbWl0CiAJCQkgKiBvcmRlciB3aGlj aCBhdm9pZHMgZmFpbHVyZXMgZHVlIHRvIHRyYW5zYWN0aW9uIGRlcGVuZGVuY2llcyBhbmQKIAkJ CSAqIGRlYWRsb2Nrcy4KQEAgLTE5NDIsMTIgKzIxNjIsNTQgQEAgYXBwbHlfaGFuZGxlX3N0cmVh bV9jb21taXQoU3RyaW5nSW5mbyBzKQogCQkJcGFfd2FpdF9mb3JfeGFjdF9maW5pc2god2luZm8p OwogCiAJCQlzdG9yZV9mbHVzaF9wb3NpdGlvbihjb21taXRfZGF0YS5lbmRfbHNuLCB3aW5mby0+ c2hhcmVkLT5sYXN0X2NvbW1pdF9lbmQpOworCQkJKHZvaWQpIHBhX2ZyZWVfd29ya2VyKHdpbmZv LCB4aWQpOworCisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFM TEVMOgorCQkJQXNzZXJ0KHdpbmZvKTsKKworCQkJcGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4s IHMtPmRhdGEsIHRydWUpOworCisJCQkvKgorCQkJICogSXQgaXMgcG9zc2libGUgdGhhdCB3aGls ZSBzZW5kaW5nIHRoaXMgY2hhbmdlIHRvIHBhcmFsbGVsIGFwcGx5CisJCQkgKiB3b3JrZXIgd2Ug bmVlZCB0byBzd2l0Y2ggdG8gc2VyaWFsaXplIG1vZGUuCisJCQkgKi8KKwkJCWlmICh3aW5mby0+ c2VyaWFsaXplX2NoYW5nZXMpCisJCQl7CisJCQkJc3RyZWFtX3N0b3BfaW50ZXJuYWwod2luZm8t PnNoYXJlZC0+eGlkKTsKKwkJCQlwYV9zZXRfZmlsZXNldF9zdGF0ZSh3aW5mby0+c2hhcmVkLCBG U19TRVJJQUxJWkVfRE9ORSk7CisJCQl9CisKKwkJCS8qCisJCQkgKiBVbmxvY2sgdGhlIHNoYXJl ZCBvYmplY3QgbG9jayBzbyB0aGF0IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBjYW4KKwkJCSAqIGNv bnRpbnVlIHRvIHJlY2VpdmUgYW5kIGFwcGx5IGNoYW5nZXMuCisJCQkgKi8KKwkJCXBhX3VubG9j a19zdHJlYW0oeGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKworCQkJLyoKKwkJCSAqIEFmdGVy IHNlbmRpbmcgdGhlIFNUUkVBTSBDT01NSVQgbWVzc2FnZSB0byB0aGUgcGFyYWxsZWwgYXBwbHkK KwkJCSAqIHdvcmtlciwgd2FpdCBmb3IgdGhhdCB3b3JrZXIgdG8gZmluaXNoLiBUaGlzIGlzIG5l Y2Vzc2FyeSB0bworCQkJICogbWFpbnRhaW4gY29tbWl0IG9yZGVyIHdoaWNoIGF2b2lkcyBmYWls dXJlcyBkdWUgdG8gdHJhbnNhY3Rpb24KKwkJCSAqIGRlcGVuZGVuY2llcyBhbmQgZGVhZGxvY2tz LgorCQkJICovCisJCQlwYV93YWl0X2Zvcl94YWN0X2ZpbmlzaCh3aW5mbyk7CisKKwkJCXN0b3Jl X2ZsdXNoX3Bvc2l0aW9uKGNvbW1pdF9kYXRhLmVuZF9sc24sIHdpbmZvLT5zaGFyZWQtPmxhc3Rf Y29tbWl0X2VuZCk7CiAKIAkJCSh2b2lkKSBwYV9mcmVlX3dvcmtlcih3aW5mbywgeGlkKTsKIAog CQkJYnJlYWs7CiAKIAkJY2FzZSBUUkFOU19QQVJBTExFTF9BUFBMWToKKworCQkJLyoKKwkJCSAq IElmIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaXMgYXBwbHlpbmcgc3Bvb2xlZCBtZXNzYWdl cyB0aGVuCisJCQkgKiBjbG9zZSB0aGUgZmlsZSBiZWZvcmUgY29tbWl0dGluZy4KKwkJCSAqLwor CQkJaWYgKHN0cmVhbV9mZCkKKwkJCQlzdHJlYW1fY2xvc2VfZmlsZSgpOworCiAJCQlhcHBseV9o YW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7CiAKIAkJCU15UGFyYWxsZWxTaGFy ZWQtPmxhc3RfY29tbWl0X2VuZCA9IFhhY3RMYXN0Q29tbWl0RW5kOwpAQCAtMzg3MCw3ICs0MTMy LDcgQEAgc3VieGFjdF9maWxlbmFtZShjaGFyICpwYXRoLCBPaWQgc3ViaWQsIFRyYW5zYWN0aW9u SWQgeGlkKQogfQogCiAvKiBmb3JtYXQgZmlsZW5hbWUgZm9yIGZpbGUgY29udGFpbmluZyBzZXJp YWxpemVkIGNoYW5nZXMgKi8KLXN0YXRpYyBpbmxpbmUgdm9pZAordm9pZAogY2hhbmdlc19maWxl bmFtZShjaGFyICpwYXRoLCBPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlkKQogewogCXNucHJp bnRmKHBhdGgsIE1BWFBHUEFUSCwgIiV1LSV1LmNoYW5nZXMiLCBzdWJpZCwgeGlkKTsKQEAgLTM4 ODQsNyArNDE0Niw3IEBAIGNoYW5nZXNfZmlsZW5hbWUoY2hhciAqcGF0aCwgT2lkIHN1YmlkLCBU cmFuc2FjdGlvbklkIHhpZCkKICAqIHRvcGxldmVsIHRyYW5zYWN0aW9uLiBFYWNoIHN1YnNjcmlw dGlvbiBoYXMgYSBzZXBhcmF0ZSBzZXQgb2YgZmlsZXMKICAqIGZvciBhbnkgdG9wbGV2ZWwgdHJh bnNhY3Rpb24uCiAgKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBzdHJlYW1fY2xlYW51cF9maWxlcyhP aWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlkKQogewogCWNoYXIJCXBhdGhbTUFYUEdQQVRIXTsK QEAgLTM5MDcsOSArNDE2OSw2IEBAIHN0cmVhbV9jbGVhbnVwX2ZpbGVzKE9pZCBzdWJpZCwgVHJh bnNhY3Rpb25JZCB4aWQpCiAgKiBieSBzdHJlYW1feGlkIChnbG9iYWwgdmFyaWFibGUpLiBJZiBp dCdzIHRoZSBmaXJzdCBjaHVuayBvZiBzdHJlYW1lZAogICogY2hhbmdlcyBmb3IgdGhpcyB0cmFu c2FjdGlvbiwgY3JlYXRlIHRoZSBidWZmaWxlLCBvdGhlcndpc2Ugb3BlbiB0aGUKICAqIHByZXZp b3VzbHkgY3JlYXRlZCBmaWxlLgotICoKLSAqIFRoaXMgY2FuIG9ubHkgYmUgY2FsbGVkIGF0IHRo ZSBiZWdpbm5pbmcgb2YgYSAic3RyZWFtaW5nIiBibG9jaywgaS5lLgotICogYmV0d2VlbiBzdHJl YW1fc3RhcnQvc3RyZWFtX3N0b3AgbWVzc2FnZXMgZnJvbSB0aGUgdXBzdHJlYW0uCiAgKi8KIHN0 YXRpYyB2b2lkCiBzdHJlYW1fb3Blbl9maWxlKE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQs IGJvb2wgZmlyc3Rfc2VnbWVudCkKQEAgLTM5MTcsNyArNDE3Niw2IEBAIHN0cmVhbV9vcGVuX2Zp bGUoT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCwgYm9vbCBmaXJzdF9zZWdtZW50KQogCWNo YXIJCXBhdGhbTUFYUEdQQVRIXTsKIAlNZW1vcnlDb250ZXh0IG9sZGN4dDsKIAotCUFzc2VydChp bl9zdHJlYW1lZF90cmFuc2FjdGlvbik7CiAJQXNzZXJ0KE9pZElzVmFsaWQoc3ViaWQpKTsKIAlB c3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSk7CiAJQXNzZXJ0KHN0cmVhbV9mZCA9PSBO VUxMKTsKQEAgLTM5NTYsMTUgKzQyMTQsMTAgQEAgc3RyZWFtX29wZW5fZmlsZShPaWQgc3ViaWQs IFRyYW5zYWN0aW9uSWQgeGlkLCBib29sIGZpcnN0X3NlZ21lbnQpCiAvKgogICogc3RyZWFtX2Ns b3NlX2ZpbGUKICAqCSAgQ2xvc2UgdGhlIGN1cnJlbnRseSBvcGVuIGZpbGUgd2l0aCBzdHJlYW1l ZCBjaGFuZ2VzLgotICoKLSAqIFRoaXMgY2FuIG9ubHkgYmUgY2FsbGVkIGF0IHRoZSBlbmQgb2Yg YSBzdHJlYW1pbmcgYmxvY2ssIGkuZS4gYXQgc3RyZWFtX3N0b3AKLSAqIG1lc3NhZ2UgZnJvbSB0 aGUgdXBzdHJlYW0uCiAgKi8KIHN0YXRpYyB2b2lkCiBzdHJlYW1fY2xvc2VfZmlsZSh2b2lkKQog ewotCUFzc2VydChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbik7Ci0JQXNzZXJ0KFRyYW5zYWN0aW9u SWRJc1ZhbGlkKHN0cmVhbV94aWQpKTsKIAlBc3NlcnQoc3RyZWFtX2ZkICE9IE5VTEwpOwogCiAJ QnVmRmlsZUNsb3NlKHN0cmVhbV9mZCk7CkBAIC0zOTgxLDEzICs0MjM0LDExIEBAIHN0cmVhbV9j bG9zZV9maWxlKHZvaWQpCiAgKiB0aGUgbGVuZ3RoKSwgYWN0aW9uIGNvZGUgKGlkZW50aWZ5aW5n IHRoZSBtZXNzYWdlIHR5cGUpIGFuZCBtZXNzYWdlCiAgKiBjb250ZW50cyAod2l0aG91dCB0aGUg c3VieGFjdCBUcmFuc2FjdGlvbklkIHZhbHVlKS4KICAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIHN0 cmVhbV93cml0ZV9jaGFuZ2UoY2hhciBhY3Rpb24sIFN0cmluZ0luZm8gcykKIHsKIAlpbnQJCQls ZW47CiAKLQlBc3NlcnQoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pOwotCUFzc2VydChUcmFuc2Fj dGlvbklkSXNWYWxpZChzdHJlYW1feGlkKSk7CiAJQXNzZXJ0KHN0cmVhbV9mZCAhPSBOVUxMKTsK IAogCS8qIHRvdGFsIG9uLWRpc2sgc2l6ZSwgaW5jbHVkaW5nIHRoZSBhY3Rpb24gdHlwZSBjaGFy YWN0ZXIgKi8KQEAgLTQwMDYsNiArNDI1NywyMyBAQCBzdHJlYW1fd3JpdGVfY2hhbmdlKGNoYXIg YWN0aW9uLCBTdHJpbmdJbmZvIHMpCiB9CiAKIC8qCisgKiBzdHJlYW1fb3Blbl9hbmRfd3JpdGVf Y2hhbmdlCisgKgkgIFNlcmlhbGl6ZSBhIG1lc3NhZ2UgdG8gYSBmaWxlIGZvciB0aGUgZ2l2ZW4g dHJhbnNhY3Rpb24uCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBzaW1pbGFyIHRvIHN0cmVhbV93 cml0ZV9jaGFuZ2UgZXhjZXB0IHRoYXQgaXQgd2lsbCBvcGVuIHRoZQorICogdGFyZ2V0IGZpbGUg YmVmb3JlIHdyaXRpbmcgdGhlIG1lc3NhZ2UgYW5kIGNsb3NlIGZpbGUgYXQgdGhlIGVuZC4KKyAq Lworc3RhdGljIHZvaWQKK3N0cmVhbV9vcGVuX2FuZF93cml0ZV9jaGFuZ2UoVHJhbnNhY3Rpb25J ZCB4aWQsIGNoYXIgYWN0aW9uLCBTdHJpbmdJbmZvIHMpCit7CisJQXNzZXJ0KCFpbl9zdHJlYW1l ZF90cmFuc2FjdGlvbik7CisKKwlzdHJlYW1fc3RhcnRfaW50ZXJuYWwoeGlkLCBmYWxzZSk7CisJ c3RyZWFtX3dyaXRlX2NoYW5nZShhY3Rpb24sIHMpOworCXN0cmVhbV9zdG9wX2ludGVybmFsKHhp ZCk7Cit9CisKKy8qCiAgKiBDbGVhbnVwIHRoZSBtZW1vcnkgZm9yIHN1YnhhY3RzIGFuZCByZXNl dCB0aGUgcmVsYXRlZCB2YXJpYWJsZXMuCiAgKi8KIHN0YXRpYyBpbmxpbmUgdm9pZApAQCAtNDY3 Niw3ICs0OTQ0LDggQEAgc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfb3JpZ2luKGNoYXIgKm9yaWdp bm5hbWUpCiAvKgogICogUmV0dXJuIHRoZSBhY3Rpb24gdG8gdGFrZSBmb3IgdGhlIGdpdmVuIHRy YW5zYWN0aW9uLiAqd2luZm8gaXMgYXNzaWduZWQgdG8KICAqIHRoZSBkZXN0aW5hdGlvbiBwYXJh bGxlbCB3b3JrZXIgaW5mbyAoaWYgdGhlIGFjdGlvbiBpcwotICogVFJBTlNfTEVBREVSX1NFTkRf VE9fUEFSQUxMRUwpLCBvdGhlcndpc2UgKndpbmZvIGlzIGFzc2lnbmVkIE5VTEwuCisgKiBUUkFO U19MRUFERVJfU0VORF9UT19QQVJBTExFTCBvciBUUkFOU19MRUFERVJfUEFSVElBTF9TRVJJQUxJ WkUpLCBvdGhlcndpc2UKKyAqICp3aW5mbyBpcyBhc3NpZ25lZCBOVUxMLgogICovCiBzdGF0aWMg VHJhbnNBcHBseUFjdGlvbgogZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihUcmFuc2FjdGlv bklkIHhpZCwgUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKip3aW5mbykKQEAgLTQ2OTgsMTIgKzQ5 NjcsMTYgQEAgZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihUcmFuc2FjdGlvbklkIHhpZCwg UGFyYWxsZWxBcHBseVdvcmtlckluZm8gKip3aW5mbykKIAkgKi8KIAkqd2luZm8gPSBwYV9maW5k X3dvcmtlcih4aWQpOwogCi0JaWYgKCp3aW5mbykKKwlpZiAoISp3aW5mbykKIAl7Ci0JCXJldHVy biBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDsKKwkJcmV0dXJuIFRSQU5TX0xFQURFUl9T RVJJQUxJWkU7CiAJfQotCWVsc2UKKwllbHNlIGlmICgoKndpbmZvKS0+c2VyaWFsaXplX2NoYW5n ZXMpCiAJewotCQlyZXR1cm4gVFJBTlNfTEVBREVSX1NFUklBTElaRTsKKwkJcmV0dXJuIFRSQU5T X0xFQURFUl9QQVJUSUFMX1NFUklBTElaRTsKIAl9CisJZWxzZQorCXsKKwkJcmV0dXJuIFRSQU5T X0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOworCX0KIH0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v d29ya2VyX2ludGVybmFsLmgKaW5kZXggNTZjNWNjOC4uZjljODczNCAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKQEAgLTE5LDYgKzE5LDcgQEAKICNpbmNsdWRl ICJkYXRhdHlwZS90aW1lc3RhbXAuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRl ICJyZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaCIKKyNpbmNsdWRlICJzdG9yYWdlL2J1ZmZp bGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZpbGVzZXQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xv Y2suaCIKICNpbmNsdWRlICJzdG9yYWdlL3NobV9tcS5oIgpAQCAtOTUsNiArOTYsMjIgQEAgdHlw ZWRlZiBlbnVtIFBhcmFsbGVsVHJhbnNTdGF0ZQogfSBQYXJhbGxlbFRyYW5zU3RhdGU7CiAKIC8q CisgKiBTdGF0ZSBvZiBmaWxlc2V0IGluIGxlYWRlciBhcHBseSB3b3JrZXIuCisgKgorICogRlNf U0VSSUFMSVpFX0lOX1BST0dSRVNTIG1lYW5zIHRoYXQgdGhlIGxlYWRlciBpcyBzZXJpYWxpemlu ZyBjaGFuZ2VzIHRvIHRoZQorICogZmlsZS4gRlNfU0VSSUFMSVpFX0RPTkUgbWVhbnMgdGhhdCB0 aGUgbGVhZGVyIGhhcyBzZXJpYWxpemVkIGFsbCBjaGFuZ2VzIHRvCisgKiB0aGUgZmlsZS4gRlNf UkVBRFkgbWVhbnMgdGhhdCBpdCBpcyBub3cgb2sgZm9yIGEgcGFyYWxsZWwgYXBwbHkgd29ya2Vy IHJlYWQKKyAqIHRoZSBmaWxlLgorICovCit0eXBlZGVmIGVudW0gUGFydGlhbEZpbGVTZXRTdGF0 ZQoreworCUZTX1VOS05PV04sCisJRlNfU0VSSUFMSVpFX0lOX1BST0dSRVNTLAorCUZTX1NFUklB TElaRV9ET05FLAorCUZTX1JFQURZCit9IFBhcnRpYWxGaWxlU2V0U3RhdGU7CisKKy8qCiAgKiBT dHJ1Y3QgZm9yIHNoYXJpbmcgaW5mb3JtYXRpb24gYmV0d2VlbiBsZWFkZXIgYXBwbHkgd29ya2Vy IGFuZCBwYXJhbGxlbAogICogYXBwbHkgd29ya2Vycy4KICAqLwpAQCAtMTM1LDYgKzE1MiwxOSBA QCB0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkCiAJICogdXBkYXRlIHRo ZSBsc25fbWFwcGluZ3MgYnkgbGVhZGVyIHdvcmtlci4KIAkgKi8KIAlYTG9nUmVjUHRyCWxhc3Rf Y29tbWl0X2VuZDsKKworCS8qCisJICogQWZ0ZXIgZW50ZXJpbmcgUEFSVElBTF9TRVJJQUxJWkUg bW9kZSwgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgd2lsbAorCSAqIHNlcmlhbGl6ZSBjaGFuZ2Vz IHRvIHRoZSBmaWxlLCBhbmQgc2hhcmUgdGhlIGZpbGVzZXQgd2l0aCB0aGUgcGFyYWxsZWwKKwkg KiBhcHBseSB3b3JrZXIgd2hlbiBwcm9jZXNzaW5nIHRoZSB0cmFuc2FjdGlvbiBmaW5pc2ggY29t bWFuZC4gVGhlbiB0aGUKKwkgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2lsbCBhcHBseSBhbGwg dGhlIHNwb29sZWQgbWVzc2FnZXMuCisJICoKKwkgKiBGaWxlU2V0IGlzIHVzZWQgaGVyZSBpbnN0 ZWFkIG9mIFNoYXJlZEZpbGVTZXQgYmVjYXVzZSB3ZSBuZWVkIGl0IHRvCisJICogc3Vydml2ZSBh ZnRlciByZWxlYXNpbmcgdGhlIHNoYXJlZCBtZW1vcnkgc28gdGhhdCB0aGUgbGVhZGVyIGFwcGx5 CisJICogd29ya2VyIGNhbiByZS11c2UgdGhlIHNhbWUgZmlsZXNldCBmb3IgdGhlIG5leHQgc3Ry ZWFtaW5nIHRyYW5zYWN0aW9uLgorCSAqLworCVBhcnRpYWxGaWxlU2V0U3RhdGUgZmlsZXNldF9z dGF0ZTsKKwlGaWxlU2V0CQlmaWxlc2V0OwogfSBQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkOwog CiAvKgpAQCAtMTUzLDYgKzE4MywxMyBAQCB0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbEFwcGx5V29y a2VySW5mbwogCWRzbV9zZWdtZW50ICpkc21fc2VnOwogCiAJLyoKKwkgKiBJbmRpY2F0ZXMgd2hl dGhlciB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBuZWVkcyB0byBzZXJpYWxpemUgdGhlCisJICog cmVtYWluaW5nIGNoYW5nZXMgdG8gYSBmaWxlIGR1ZSB0byB0aW1lb3V0IHdoZW4gYXR0ZW1wdGlu ZyB0byBzZW5kIGRhdGEKKwkgKiB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHZpYSBzaGFy ZWQgbWVtb3J5LgorCSAqLworCWJvb2wJCXNlcmlhbGl6ZV9jaGFuZ2VzOworCisJLyoKIAkgKiBU cnVlIGlmIHRoZSB3b3JrZXIgaXMgYmVpbmcgdXNlZCB0byBwcm9jZXNzIGEgcGFyYWxsZWwgYXBw bHkKIAkgKiB0cmFuc2FjdGlvbi4gRmFsc2UgaW5kaWNhdGVzIHRoaXMgd29ya2VyIGlzIGF2YWls YWJsZSBmb3IgcmUtdXNlLgogCSAqLwpAQCAtMjA1LDEwICsyNDIsMjEgQEAgZXh0ZXJuIHZvaWQg cHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKTsKIGV4dGVybiB2 b2lkIGludmFsaWRhdGVfc3luY2luZ190YWJsZV9zdGF0ZXMoRGF0dW0gYXJnLCBpbnQgY2FjaGVp ZCwKIAkJCQkJCQkJCQkJdWludDMyIGhhc2h2YWx1ZSk7CiAKK2V4dGVybiB2b2lkIHN0cmVhbV9z dGFydF9pbnRlcm5hbChUcmFuc2FjdGlvbklkIHhpZCwgYm9vbCBmaXJzdF9zZWdtZW50KTsKK2V4 dGVybiB2b2lkIHN0cmVhbV9zdG9wX2ludGVybmFsKFRyYW5zYWN0aW9uSWQgeGlkKTsKKworLyog Q29tbW9uIHN0cmVhbWluZyBmdW5jdGlvbiB0byBhcHBseSBhbGwgdGhlIHNwb29sZWQgbWVzc2Fn ZXMgKi8KK2V4dGVybiB2b2lkIGFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoRmlsZVNldCAqc3RyZWFt X2ZpbGVzZXQsIFRyYW5zYWN0aW9uSWQgeGlkLAorCQkJCQkJCQkgICBYTG9nUmVjUHRyIGxzbik7 CisKIGV4dGVybiB2b2lkIGFwcGx5X2Rpc3BhdGNoKFN0cmluZ0luZm8gcyk7CiAKIGV4dGVybiB2 b2lkIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCk7CiAKK2V4dGVybiB2b2lkIGNoYW5n ZXNfZmlsZW5hbWUoY2hhciAqcGF0aCwgT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCk7Citl eHRlcm4gdm9pZCBzdHJlYW1fd3JpdGVfY2hhbmdlKGNoYXIgYWN0aW9uLCBTdHJpbmdJbmZvIHMp OworZXh0ZXJuIHZvaWQgc3RyZWFtX2NsZWFudXBfZmlsZXMoT2lkIHN1YmlkLCBUcmFuc2FjdGlv bklkIHhpZCk7CisKIGV4dGVybiB2b2lkIEluaXRpYWxpemVBcHBseVdvcmtlcih2b2lkKTsKIAog LyogRnVuY3Rpb24gZm9yIGFwcGx5IGVycm9yIGNhbGxiYWNrICovCkBAIC0yMjMsNyArMjcxLDcg QEAgZXh0ZXJuIHZvaWQgcGFfZGV0YWNoX2FsbF9lcnJvcl9tcSh2b2lkKTsKIGV4dGVybiB2b2lk IHBhX3N0b3BfaWRsZV93b3JrZXJzKHZvaWQpOwogCiBleHRlcm4gdm9pZCBwYV9zZW5kX2RhdGEo UGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBTaXplIG5ieXRlcywKLQkJCQkJCSBjb25z dCB2b2lkICpkYXRhKTsKKwkJCQkJCSBjb25zdCB2b2lkICpkYXRhLCBib29sIHN0cmVhbV9sb2Nr ZWQpOwogZXh0ZXJuIHZvaWQgcGFfd2FpdF9mb3JfeGFjdF9maW5pc2goUGFyYWxsZWxBcHBseVdv cmtlckluZm8gKndzaGFyZWQpOwogCiBleHRlcm4gdm9pZCBwYV9zZXRfeGFjdF9zdGF0ZShQYXJh bGxlbEFwcGx5V29ya2VyU2hhcmVkICp3c2hhcmVkLApAQCAtMjMzLDYgKzI4MSw4IEBAIGV4dGVy biB2b2lkIHBhX3NldF9zdHJlYW1fYXBwbHlfd29ya2VyKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZv ICp3aW5mbyk7CiBleHRlcm4gdm9pZCBwYV9zdGFydF9zdWJ0cmFucyhUcmFuc2FjdGlvbklkIGN1 cnJlbnRfeGlkLCBUcmFuc2FjdGlvbklkIHRvcF94aWQpOwogZXh0ZXJuIHZvaWQgcGFfcmVzZXRf c3VidHJhbnModm9pZCk7CiBleHRlcm4gdm9pZCBwYV9zdHJlYW1fYWJvcnQoTG9naWNhbFJlcFN0 cmVhbUFib3J0RGF0YSAqYWJvcnRfZGF0YSk7CitleHRlcm4gdm9pZCBwYV9zZXRfZmlsZXNldF9z dGF0ZShQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICp3c2hhcmVkLAorCQkJCQkJCQkgUGFydGlh bEZpbGVTZXRTdGF0ZSBmaWxlc2V0X3N0YXRlKTsKIAogZXh0ZXJuIHZvaWQgcGFfbG9ja19zdHJl YW0oVHJhbnNhY3Rpb25JZCB4aWQsIExPQ0tNT0RFIGxvY2ttb2RlKTsKIGV4dGVybiB2b2lkIHBh X3VubG9ja19zdHJlYW0oVHJhbnNhY3Rpb25JZCB4aWQsIExPQ0tNT0RFIGxvY2ttb2RlKTsKZGlm ZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggYTYxMTUyMC4uN2Y3YTcwMiAxMDA2NDQKLS0tIGEv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QKQEAgLTEzODgsNiArMTM4OCw3IEBAIExhZ1RyYWNrZXIKIExhcmdlT2Jq ZWN0RGVzYwogTGFzdEF0dG51bUluZm8KIExhdGNoCitQYXJ0aWFsRmlsZVNldFN0YXRlCiBMZXJw RnVuYwogTGV4RGVzY3IKIExleGVtZUVudHJ5Ci0tIAoyLjcuMi53aW5kb3dzLjEKCg== --_008_OS0PR01MB571663B4EC5D8BE749AACD98941E9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v59-0004-Allow-streaming-every-change-without-waiting-til.patch" Content-Description: v59-0004-Allow-streaming-every-change-without-waiting-til.patch Content-Disposition: attachment; filename="v59-0004-Allow-streaming-every-change-without-waiting-til.patch"; size=5435; creation-date="Sun, 11 Dec 2022 11:36:25 GMT"; modification-date="Sun, 11 Dec 2022 11:44:50 GMT" Content-Transfer-Encoding: base64 RnJvbSAyNzk4MjY5ZTk2OGVhN2E2MDE2ODBlNzIzMDAzNWFlYjkwY2NhOThlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGkgWXUgPHNoaXkuZm5zdEBmdWppdHN1LmNvbT4KRGF0ZTog TW9uLCAyNCBPY3QgMjAyMiAxNTo1MjoxNCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjU5IDQvN10g QWxsb3cgc3RyZWFtaW5nIGV2ZXJ5IGNoYW5nZSB3aXRob3V0IHdhaXRpbmcgdGlsbAogbG9naWNh bF9kZWNvZGluZ193b3JrX21lbS4KCkFkZCBhIG5ldyBHVUMgZm9yY2Vfc3RyZWFtX21vZGUsIHdo ZW4gaXQgaXMgc2V0IG9uLCBzZW5kIHRoZSBjaGFuZ2UgdG8Kb3V0cHV0IHBsdWdpbiBpbW1lZGlh dGVseSBpbiBzdHJlYW1pbmcgbW9kZS4gT3RoZXJ3aXNlLCBzZW5kIHVudGlsCmxvZ2ljYWxfZGVj b2Rpbmdfd29ya19tZW0gaXMgZXhjZWVkZWQuCi0tLQogZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21s ICAgICAgICAgICAgICAgICAgICAgICAgfCAxNiArKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYyB8IDMxICsrKysrKysrKysrKysrKysr Ky0tLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jICAgICAgICAgICAg IHwgMTAgKysrKysrKysKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaCAg ICAgICAgIHwgIDEgKwogNCBmaWxlcyBjaGFuZ2VkLCA1MCBpbnNlcnRpb25zKCspLCA4IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9zcmMv c2dtbC9jb25maWcuc2dtbAppbmRleCBkNjViNjdmLi5iN2M4NGQxIDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvY29uZmlnLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC0x MTU2Niw2ICsxMTU2NiwyMiBAQCBMT0c6ICBDbGVhblVwTG9jazogZGVsZXRpbmc6IGxvY2soMHhi N2FjZDg0NCkgaWQoMjQ2ODgsMjQ2OTYsMCwwLDAsMSkKICAgICAgIDwvbGlzdGl0ZW0+CiAgICAg IDwvdmFybGlzdGVudHJ5PgogCisgICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1mb3JjZS1zdHJl YW0tbW9kZSIgeHJlZmxhYmVsPSJmb3JjZV9zdHJlYW1fbW9kZSI+CisgICAgICA8dGVybT48dmFy bmFtZT5mb3JjZV9zdHJlYW1fbW9kZTwvdmFybmFtZT4gKDx0eXBlPmJvb2xlYW48L3R5cGU+KQor ICAgICAgPGluZGV4dGVybT4KKyAgICAgICA8cHJpbWFyeT48dmFybmFtZT5mb3JjZV9zdHJlYW1f bW9kZTwvdmFybmFtZT4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgICA8 L2luZGV4dGVybT4KKyAgICAgIDwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFy YT4KKyAgICAgICAgU3BlY2lmaWVzIHdoZWF0aGVyIHRvIGZvcmNlIHNlbmRpbmcgdGhlIGNoYW5n ZXMgdG8gb3V0cHV0IHBsdWdpbgorICAgICAgICBpbW1lZGlhdGVseSBpbiBzdHJlYW1pbmcgbW9k ZS4gSWYgc2V0IHRvIDxsaXRlcmFsPm9mZjwvbGl0ZXJhbD4gKHRoZQorICAgICAgICBkZWZhdWx0 KSwgc2VuZCB1bnRpbCA8dmFybmFtZT5sb2dpY2FsX2RlY29kaW5nX3dvcmtfbWVtPC92YXJuYW1l PiBpcworICAgICAgICBleGNlZWRlZC4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVt PgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgIDwvdmFyaWFibGVsaXN0PgogICA8L3NlY3Qx PgogICA8c2VjdDEgaWQ9InJ1bnRpbWUtY29uZmlnLXNob3J0Ij4KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKaW5kZXggOGQ1YmJhYS4uNDgxYTAz MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVm ZmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVy LmMKQEAgLTIwOSw2ICsyMDksMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVvcmRlckJ1ZmZlckRpc2tD aGFuZ2UKIGludAkJCWxvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW07CiBzdGF0aWMgY29uc3QgU2l6 ZSBtYXhfY2hhbmdlc19pbl9tZW1vcnkgPSA0MDk2OyAvKiBYWFggZm9yIHJlc3RvcmUgb25seSAq LwogCisvKgorICogV2hlYXRoZXIgdG8gc2VuZCB0aGUgY2hhbmdlIHRvIG91dHB1dCBwbHVnaW4g aW1tZWRpYXRlbHkgaW4gc3RyZWFtaW5nIG1vZGUuCisgKiBXaGVuIGl0IGlzIG9mZiwgd2FpdCB1 bnRpbCBsb2dpY2FsX2RlY29kaW5nX3dvcmtfbWVtIGlzIGV4Y2VlZGVkLgorICovCitib29sCQlm b3JjZV9zdHJlYW1fbW9kZTsKKwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiAgKiBwcmltYXJ5IHJlb3JkZXJidWZmZXIgc3VwcG9ydCByb3V0aW5lcwogICogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zNTU1LDIwICszNTYxLDI5 IEBAIFJlb3JkZXJCdWZmZXJDaGVja01lbW9yeUxpbWl0KFJlb3JkZXJCdWZmZXIgKnJiKQogewog CVJlb3JkZXJCdWZmZXJUWE4gKnR4bjsKIAotCS8qIGJhaWwgb3V0IGlmIHdlIGhhdmVuJ3QgZXhj ZWVkZWQgdGhlIG1lbW9yeSBsaW1pdCAqLwotCWlmIChyYi0+c2l6ZSA8IGxvZ2ljYWxfZGVjb2Rp bmdfd29ya19tZW0gKiAxMDI0TCkKKwkvKgorCSAqIFN0cmVhbSB0aGUgY2hhbmdlcyBpbW1lZGlh dGVseSBpZiBmb3JjZV9zdHJlYW1fbW9kZSBpcyBvbiBhbmQgdGhlIG91dHB1dAorCSAqIHBsdWdp biBzdXBwb3J0cyBzdHJlYW1pbmcuIE90aGVyd2lzZSB3YWl0IHVudGlsIHNpemUgZXhjZWVkcwor CSAqIGxvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW0uCisJICovCisJYm9vbCBmb3JjZV9zdHJlYW0g PSAoZm9yY2Vfc3RyZWFtX21vZGUgJiYgUmVvcmRlckJ1ZmZlckNhblN0cmVhbShyYikpOworCisJ LyogYmFpbCBvdXQgaWYgZm9yY2Vfc3RyZWFtIGlzIGZhbHNlIGFuZCB3ZSBoYXZlbid0IGV4Y2Vl ZGVkIHRoZSBtZW1vcnkgbGltaXQgKi8KKwlpZiAoIWZvcmNlX3N0cmVhbSAmJiByYi0+c2l6ZSA8 IGxvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW0gKiAxMDI0TCkKIAkJcmV0dXJuOwogCiAJLyoKLQkg KiBMb29wIHVudGlsIHdlIHJlYWNoIHVuZGVyIHRoZSBtZW1vcnkgbGltaXQuICBPbmUgbWlnaHQg dGhpbmsgdGhhdCBqdXN0Ci0JICogYnkgZXZpY3RpbmcgdGhlIGxhcmdlc3QgKHN1Yil0cmFuc2Fj dGlvbiB3ZSB3aWxsIGNvbWUgdW5kZXIgdGhlIG1lbW9yeQotCSAqIGxpbWl0IGJhc2VkIG9uIGFz c3VtcHRpb24gdGhhdCB0aGUgc2VsZWN0ZWQgdHJhbnNhY3Rpb24gaXMgYXQgbGVhc3QgYXMKLQkg KiBsYXJnZSBhcyB0aGUgbW9zdCByZWNlbnQgY2hhbmdlICh3aGljaCBjYXVzZWQgdXMgdG8gZ28g b3ZlciB0aGUgbWVtb3J5Ci0JICogbGltaXQpLiBIb3dldmVyLCB0aGF0IGlzIG5vdCB0cnVlIGJl Y2F1c2UgYSB1c2VyIGNhbiByZWR1Y2UgdGhlCisJICogSWYgZm9yY2Vfc3RyZWFtIGlzIHRydWUs IGxvb3AgdW50aWwgdGhlcmUncyBubyBjaGFuZ2UuIE90aGVyd2lzZSwgbG9vcAorCSAqIHVudGls IHdlIHJlYWNoIHVuZGVyIHRoZSBtZW1vcnkgbGltaXQuIE9uZSBtaWdodCB0aGluayB0aGF0IGp1 c3QgYnkKKwkgKiBldmljdGluZyB0aGUgbGFyZ2VzdCAoc3ViKXRyYW5zYWN0aW9uIHdlIHdpbGwg Y29tZSB1bmRlciB0aGUgbWVtb3J5IGxpbWl0CisJICogYmFzZWQgb24gYXNzdW1wdGlvbiB0aGF0 IHRoZSBzZWxlY3RlZCB0cmFuc2FjdGlvbiBpcyBhdCBsZWFzdCBhcyBsYXJnZSBhcworCSAqIHRo ZSBtb3N0IHJlY2VudCBjaGFuZ2UgKHdoaWNoIGNhdXNlZCB1cyB0byBnbyBvdmVyIHRoZSBtZW1v cnkgbGltaXQpLgorCSAqIEhvd2V2ZXIsIHRoYXQgaXMgbm90IHRydWUgYmVjYXVzZSBhIHVzZXIg Y2FuIHJlZHVjZSB0aGUKIAkgKiBsb2dpY2FsX2RlY29kaW5nX3dvcmtfbWVtIHRvIGEgc21hbGxl ciB2YWx1ZSBiZWZvcmUgdGhlIG1vc3QgcmVjZW50CiAJICogY2hhbmdlLgogCSAqLwotCXdoaWxl IChyYi0+c2l6ZSA+PSBsb2dpY2FsX2RlY29kaW5nX3dvcmtfbWVtICogMTAyNEwpCisJd2hpbGUg KCghZm9yY2Vfc3RyZWFtICYmIHJiLT5zaXplID49IGxvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW0g KiAxMDI0TCkgfHwKKwkJICAgKGZvcmNlX3N0cmVhbSAmJiByYi0+c2l6ZSA+IDApKQogCXsKIAkJ LyoKIAkJICogUGljayB0aGUgbGFyZ2VzdCB0cmFuc2FjdGlvbiAob3Igc3VidHJhbnNhY3Rpb24p IGFuZCBldmljdCBpdCBmcm9tCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1 Y190YWJsZXMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCmluZGV4IDkx ZjA0NzkuLjIxYjEyNWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3Rh Ymxlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCkBAIC0xMjQ3 LDYgKzEyNDcsMTYgQEAgc3RydWN0IGNvbmZpZ19ib29sIENvbmZpZ3VyZU5hbWVzQm9vbFtdID0K IAkJZmFsc2UsCiAJCU5VTEwsIE5VTEwsIE5VTEwKIAl9LAorCXsKKwkJeyJmb3JjZV9zdHJlYW1f bW9kZSIsIFBHQ19VU0VSU0VULCBERVZFTE9QRVJfT1BUSU9OUywKKwkJCWdldHRleHRfbm9vcCgi Rm9yY2Ugc2VuZGluZyB0aGUgY2hhbmdlcyB0byBvdXRwdXQgcGx1Z2luIGltbWVkaWF0ZWx5IGlm IHN0cmVhbWluZyBpcyBzdXBwb3J0ZWQsIHdpdGhvdXQgd2FpdGluZyB0aWxsIGxvZ2ljYWxfZGVj b2Rpbmdfd29ya19tZW0uIiksCisJCQlOVUxMLAorCQkJR1VDX05PVF9JTl9TQU1QTEUKKwkJfSwK KwkJJmZvcmNlX3N0cmVhbV9tb2RlLAorCQlmYWxzZSwKKwkJTlVMTCwgTlVMTCwgTlVMTAorCX0s CiAKIAl7CiAJCXsibG9nX2R1cmF0aW9uIiwgUEdDX1NVU0VULCBMT0dHSU5HX1dIQVQsCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmggYi9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKaW5kZXggZjBlYjZjNC4uZjI0Yzg4NiAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oCisrKyBi L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaApAQCAtMTgsNiArMTgsNyBA QAogI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgogCiBleHRlcm4gUEdETExJTVBPUlQgaW50 IGxvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW07CitleHRlcm4gUEdETExJTVBPUlQgYm9vbCBmb3Jj ZV9zdHJlYW1fbW9kZTsKIAogLyogYW4gaW5kaXZpZHVhbCB0dXBsZSwgc3RvcmVkIGluIG9uZSBj aHVuayBvZiBtZW1vcnkgKi8KIHR5cGVkZWYgc3RydWN0IFJlb3JkZXJCdWZmZXJUdXBsZUJ1Zgot LSAKMi43LjIud2luZG93cy4xCgo= --_008_OS0PR01MB571663B4EC5D8BE749AACD98941E9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v59-0005-Add-GUC-stream_serialize_threshold-and-test-seri.patch" Content-Description: v59-0005-Add-GUC-stream_serialize_threshold-and-test-seri.patch Content-Disposition: attachment; filename="v59-0005-Add-GUC-stream_serialize_threshold-and-test-seri.patch"; size=14228; creation-date="Sun, 11 Dec 2022 11:36:25 GMT"; modification-date="Sun, 11 Dec 2022 11:44:51 GMT" Content-Transfer-Encoding: base64 RnJvbSBmZmJkMDFhNGNlNzdjODM5MDY5MmUwM2E2OGI4ZTcwNTEzZTlmNmQ0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBTdW4sIDExIERlYyAyMDIyIDE5OjExOjUzICswODAwClN1YmplY3Q6IFtQQVRDSCB2 NTkgNS83XSBBZGQgR1VDIHN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkIGFuZCB0ZXN0CiBzZXJp YWxpemluZyBtZXNzYWdlcyB0byBkaXNrCgotLS0KIGRvYy9zcmMvc2dtbC9jb25maWcuc2dtbCAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMyICsrKysrCiAuLi4vcmVwbGljYXRpb24vbG9n aWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgICAgICB8ICA1NCArKysrKy0tLQogc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgICAgICAgfCAgIDkgKysKIHNyYy9i YWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jICAgICAgICAgICAgICAgIHwgIDE0ICsrCiBz cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCAgICAgICAgICB8ICAgNCAr CiAuLi4vc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbV9wYXJhbGxlbF9jb25mbGljdC5wbCB8IDE0 MSArKysrKysrKysrKysrKysrKysrKy0KIDYgZmlsZXMgY2hhbmdlZCwgMjMwIGluc2VydGlvbnMo KyksIDI0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dt bCBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAppbmRleCBiN2M4NGQxLi5hOWIwYzZjIDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbmZp Zy5zZ21sCkBAIC0xMTU4Miw2ICsxMTU4MiwzOCBAQCBMT0c6ICBDbGVhblVwTG9jazogZGVsZXRp bmc6IGxvY2soMHhiN2FjZDg0NCkgaWQoMjQ2ODgsMjQ2OTYsMCwwLDAsMSkKICAgICAgIDwvbGlz dGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1 Yy1zdHJlYW0tc2VyaWFsaXplLXRocmVzaG9sZCIgeHJlZmxhYmVsPSJzdHJlYW1fc2VyaWFsaXpl X3RocmVzaG9sZCI+CisgICAgICA8dGVybT48dmFybmFtZT5zdHJlYW1fc2VyaWFsaXplX3RocmVz aG9sZDwvdmFybmFtZT4gKDx0eXBlPmludGVnZXI8L3R5cGU+KQorICAgICAgPGluZGV4dGVybT4K KyAgICAgICA8cHJpbWFyeT48dmFybmFtZT5zdHJlYW1fc2VyaWFsaXplX3RocmVzaG9sZDwvdmFy bmFtZT4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgICA8L2luZGV4dGVy bT4KKyAgICAgIDwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAg ICAgRm9yY2VzIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHRvIHNlcmlhbGl6ZSBtZXNzYWdlcyB0 byBmaWxlcyBhZnRlcgorICAgICAgICBzZW5kaW5nIHNwZWNpZmllZCBhbW91bnQgb2Ygc3RyZWFt aW5nIGNodW5rcyB0byB0aGUgcGFyYWxsZWwgYXBwbHkKKyAgICAgICAgd29ya2VyLiBTZXR0aW5n IHRoaXMgdG8gemVybyBzZXJpYWxpemUgYWxsIG1lc3NhZ2VzLiBBIHZhbHVlIG9mCisgICAgICAg IDxsaXRlcmFsPi0xPC9saXRlcmFsPiAodGhlIGRlZmF1bHQpIGRpc2FibGVzIHRoaXMgZmVhdHVy ZS4gVGhpcyBpcworICAgICAgICBpbnRlbmRlZCB0byB0ZXN0IHNlcmlhbGl6YXRpb24gdG8gZmls ZXMgd2l0aAorICAgICAgICA8bGl0ZXJhbD5zdHJlYW1pbmcgPSBwYXJhbGxlbDwvbGl0ZXJhbD4u CisgICAgICAgPC9wYXJhPgorCisgICAgICAgPHBhcmE+CisgICAgICAgIFdoZW4gbG9naWNhbCBy ZXBsaWNhdGlvbiBzdWJzY3JpcHRpb24gPGxpdGVyYWw+c3RyZWFtaW5nPC9saXRlcmFsPgorICAg ICAgICBwYXJhbWV0ZXIgaXMgc2V0IHRvIDxsaXRlcmFsPnBhcmFsbGVsPC9saXRlcmFsPiwgdGhl IGxlYWRlciBhcHBseSB3b3JrZXIKKyAgICAgICAgc2VuZHMgbWVzc2FnZXMgdG8gcGFyYWxsZWwg d29ya2VycyB3aXRoIGEgdGltZW91dC4gQnkgZGVmYXVsdCwgdGhlCisgICAgICAgIGxlYWRlciBh cHBseSB3b3JrZXIgd2lsbCBzZXJpYWxpemUgdGhlIHJlbWFpbmluZyBtZXNzYWdlcyB0byBmaWxl cyBpZgorICAgICAgICB0aGUgdGltZW91dCBpcyBleGNlZWRlZC4gSWYgdGhpcyBvcHRpb24gaXMg c2V0IHRvIGFueSB2YWx1ZSBvdGhlciB0aGFuCisgICAgICAgIDxsaXRlcmFsPi0xPC9saXRlcmFs Piwgc2VyaWFsaXplIHRvIGZpbGVzIGV2ZW4gd2l0aG91dCB0aW1lb3V0LgorICAgICAgIDwvcGFy YT4KKworICAgICAgIDxwYXJhPgorICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gb25seSBiZSBz ZXQgaW4gdGhlIDxmaWxlbmFtZT5wb3N0Z3Jlc3FsLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICBm aWxlIG9yIG9uIHRoZSBzZXJ2ZXIgY29tbWFuZCBsaW5lLgorICAgICAgIDwvcGFyYT4KKyAgICAg IDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgPC92YXJpYWJsZWxpc3Q+ CiAgIDwvc2VjdDE+CiAgIDxzZWN0MSBpZD0icnVudGltZS1jb25maWctc2hvcnQiPgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2Vy LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIu YwppbmRleCBjOGYwZjI3Li5mOTM4NmIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwpAQCAtMjUyLDYgKzI1Miw5IEBA IHN0YXRpYyBQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqc3RyZWFtX2FwcGx5X3dvcmtlciA9IE5V TEw7CiAvKiBBIGxpc3QgdG8gbWFpbnRhaW4gc3VidHJhbnNhY3Rpb25zLCBpZiBhbnkuICovCiBz dGF0aWMgTGlzdAkgICAqc3VieGFjdGxpc3QgPSBOSUw7CiAKKy8qIEdVQyB2YXJpYWJsZSAqLwor aW50CQlzdHJlYW1fc2VyaWFsaXplX3RocmVzaG9sZCA9IC0xOworCiBzdGF0aWMgdm9pZCBwYV9m cmVlX3dvcmtlcl9pbmZvKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyk7CiBzdGF0aWMg UGFyYWxsZWxUcmFuc1N0YXRlIHBhX2dldF94YWN0X3N0YXRlKFBhcmFsbGVsQXBwbHlXb3JrZXJT aGFyZWQgKndzaGFyZWQpOwogCkBAIC0xMjE4LDMyICsxMjIxLDQzIEBAIHBhX3NlbmRfZGF0YShQ YXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sIFNpemUgbmJ5dGVzLCBjb25zdCB2b2lkICpk YXRhLAogCiAJZm9yICg7OykKIAl7Ci0JCXJlc3VsdCA9IHNobV9tcV9zZW5kKHdpbmZvLT5tcV9o YW5kbGUsIG5ieXRlcywgZGF0YSwgdHJ1ZSwgdHJ1ZSk7CisJCWJvb2wgZm9yY2Vfc2VyaWFsaXpl ID0gKHN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkICE9IC0xICYmCisJCQkJCQkJCShzdHJlYW1f c2VyaWFsaXplX3RocmVzaG9sZCA9PSAwIHx8CisJCQkJCQkJCSBzdHJlYW1fc2VyaWFsaXplX3Ro cmVzaG9sZCA8IHBhcmFsbGVsX3N0cmVhbV9uY2h1bmtzKSk7CiAKLQkJaWYgKHJlc3VsdCA9PSBT SE1fTVFfU1VDQ0VTUykKLQkJCWJyZWFrOwotCQllbHNlIGlmIChyZXN1bHQgPT0gU0hNX01RX0RF VEFDSEVEKQotCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1Rf Tk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCi0JCQkJCSBlcnJtc2coImNvdWxkIG5vdCBzZW5k IGRhdGEgdG8gc2hhcmVkLW1lbW9yeSBxdWV1ZSIpKSk7CisJCWlmICghZm9yY2Vfc2VyaWFsaXpl KQorCQl7CisJCQlyZXN1bHQgPSBzaG1fbXFfc2VuZCh3aW5mby0+bXFfaGFuZGxlLCBuYnl0ZXMs IGRhdGEsIHRydWUsIHRydWUpOwogCi0JCUFzc2VydChyZXN1bHQgPT0gU0hNX01RX1dPVUxEX0JM T0NLKTsKKwkJCWlmIChyZXN1bHQgPT0gU0hNX01RX1NVQ0NFU1MpCisJCQkJYnJlYWs7CisJCQll bHNlIGlmIChyZXN1bHQgPT0gU0hNX01RX0RFVEFDSEVEKQorCQkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwK KwkJCQkJCSBlcnJtc2coImNvdWxkIG5vdCBzZW5kIGRhdGEgdG8gc2hhcmVkLW1lbW9yeSBxdWV1 ZSIpKSk7CiAKLQkJLyogV2FpdCBiZWZvcmUgcmV0cnlpbmcuICovCi0JCXJjID0gV2FpdExhdGNo KE15TGF0Y2gsCi0JCQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09O X1BNX0RFQVRILAotCQkJCQkgICBTSE1fU0VORF9SRVRSWV9JTlRFUlZBTF9NUywKLQkJCQkJICAg V0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX1NUQVRFX0NIQU5HRSk7CisJCQlBc3Nl cnQocmVzdWx0ID09IFNITV9NUV9XT1VMRF9CTE9DSyk7CiAKLQkJaWYgKHJjICYgV0xfTEFUQ0hf U0VUKQotCQl7Ci0JCQlSZXNldExhdGNoKE15TGF0Y2gpOwotCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQ VFMoKTsKKwkJCS8qIFdhaXQgYmVmb3JlIHJldHJ5aW5nLiAqLworCQkJcmMgPSBXYWl0TGF0Y2go TXlMYXRjaCwKKwkJCQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09O X1BNX0RFQVRILAorCQkJCQkJICAgU0hNX1NFTkRfUkVUUllfSU5URVJWQUxfTVMsCisJCQkJCQkg ICBXQUlUX0VWRU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQTFlfU1RBVEVfQ0hBTkdFKTsKKworCQkJ aWYgKHJjICYgV0xfTEFUQ0hfU0VUKQorCQkJeworCQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJ CQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwkJCX0KKworCQkJaWYgKHN0YXJ0VGltZSA9PSAw KQorCQkJCXN0YXJ0VGltZSA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKIAkJfQorCQllbHNlIGlm IChzdHJlYW1fc2VyaWFsaXplX3RocmVzaG9sZCAhPSAwKQorCQkJcGFyYWxsZWxfc3RyZWFtX25j aHVua3MgPSAwOwogCi0JCWlmIChzdGFydFRpbWUgPT0gMCkKLQkJCXN0YXJ0VGltZSA9IEdldEN1 cnJlbnRUaW1lc3RhbXAoKTsKLQkJZWxzZSBpZiAoVGltZXN0YW1wRGlmZmVyZW5jZUV4Y2VlZHMo c3RhcnRUaW1lLCBHZXRDdXJyZW50VGltZXN0YW1wKCksCisJCWlmIChmb3JjZV9zZXJpYWxpemUg fHwKKwkJCVRpbWVzdGFtcERpZmZlcmVuY2VFeGNlZWRzKHN0YXJ0VGltZSwgR2V0Q3VycmVudFRp bWVzdGFtcCgpLAogCQkJCQkJCQkJCQlTSE1fU0VORF9USU1FT1VUX01TKSkKIAkJewogCQkJU3Ry aW5nSW5mb0RhdGEgbXNnOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMK aW5kZXggMDdlNTIyOC4uYWE3M2QyOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3dvcmtlci5jCkBAIC0zMjcsNiArMzI3LDEyIEBAIHN0YXRpYyBUcmFuc2FjdGlvbklkIHN0cmVh bV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIHN0YXRpYyB1aW50MzIgcGFyYWxsZWxfc3Ry ZWFtX25jaGFuZ2VzID0gMDsKIAogLyoKKyAqIFRoZSBudW1iZXIgb2Ygc3RyZWFtaW5nIGNodW5r cyBzZW50IGJ5IGxlYWRlciBhcHBseSB3b3JrZXIgZHVyaW5nIG9uZQorICogc3RyZWFtZWQgdHJh bnNhY3Rpb24uIFRoaXMgaXMgb25seSB1c2VkIHdoZW4gc3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hv bGQgPiAwLgorICovCit1aW50MzIgcGFyYWxsZWxfc3RyZWFtX25jaHVua3MgPSAwOworCisvKgog ICogV2UgZW5hYmxlIHNraXBwaW5nIGFsbCBkYXRhIG1vZGlmaWNhdGlvbiBjaGFuZ2VzIChJTlNF UlQsIFVQREFURSwgZXRjLikgZm9yCiAgKiB0aGUgc3Vic2NyaXB0aW9uIGlmIHRoZSByZW1vdGUg dHJhbnNhY3Rpb24ncyBmaW5pc2ggTFNOIG1hdGNoZXMgdGhlIHN1YnNraXBsc24uCiAgKiBPbmNl IHdlIHN0YXJ0IHNraXBwaW5nIGNoYW5nZXMsIHdlIGRvbid0IHN0b3AgaXQgdW50aWwgd2Ugc2tp cCBhbGwgY2hhbmdlcyBvZgpAQCAtMTU1Niw2ICsxNTYyLDkgQEAgYXBwbHlfaGFuZGxlX3N0cmVh bV9zdGFydChTdHJpbmdJbmZvIHMpCiAJCWNhc2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxM RUw6CiAJCQlBc3NlcnQod2luZm8pOwogCisJCQlpZiAoc3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hv bGQgPiAwKQorCQkJCXBhcmFsbGVsX3N0cmVhbV9uY2h1bmtzKys7CisKIAkJCXBhX3NlbmRfZGF0 YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhLCAhZmlyc3Rfc2VnbWVudCk7CiAKIAkJCWlmICghd2lu Zm8tPnNlcmlhbGl6ZV9jaGFuZ2VzKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlz Yy9ndWNfdGFibGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwppbmRl eCAyMWIxMjVmLi5kZjBlMzBiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1 Y190YWJsZXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwpAQCAt NjEsNiArNjEsNyBAQAogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oIgog I2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3QuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zeW5j cmVwLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xhcmdlX29iamVjdC5oIgog I2luY2x1ZGUgInN0b3JhZ2UvcGdfc2htZW0uaCIKQEAgLTMwMDQsNiArMzAwNSwxOSBAQCBzdHJ1 Y3QgY29uZmlnX2ludCBDb25maWd1cmVOYW1lc0ludFtdID0KIAl9LAogCiAJeworCQl7InN0cmVh bV9zZXJpYWxpemVfdGhyZXNob2xkIiwgUEdDX1NJR0hVUCwgREVWRUxPUEVSX09QVElPTlMsCisJ CQlnZXR0ZXh0X25vb3AoIkZvcmNlcyB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciB0byBzZXJpYWxp emUgbWVzc2FnZXMgIgorCQkJCQkJICJ0byBmaWxlcyBhZnRlciBzZW5kaW5nIHNwZWNpZmllZCBh bW91bnQgb2Ygc3RyZWFtaW5nICIKKwkJCQkJCSAiY2h1bmtzIGluIHN0cmVhbWluZyBwYXJhbGxl bCBtb2RlLiIpLAorCQkJZ2V0dGV4dF9ub29wKCJBIHZhbHVlIG9mIC0xIGRpc2FibGVzIHRoaXMg ZmVhdHVyZS4iKSwKKwkJCUdVQ19OT1RfSU5fU0FNUExFCisJCX0sCisJCSZzdHJlYW1fc2VyaWFs aXplX3RocmVzaG9sZCwKKwkJLTEsIC0xLCBJTlRfTUFYLAorCQlOVUxMLCBOVUxMLCBOVUxMCisJ fSwKKworCXsKIAkJeyJsb2dfcm90YXRpb25fYWdlIiwgUEdDX1NJR0hVUCwgTE9HR0lOR19XSEVS RSwKIAkJCWdldHRleHRfbm9vcCgiU2V0cyB0aGUgYW1vdW50IG9mIHRpbWUgdG8gd2FpdCBiZWZv cmUgZm9yY2luZyAiCiAJCQkJCQkgImxvZyBmaWxlIHJvdGF0aW9uLiIpLApkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggYi9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAppbmRleCBmOWM4NzM0Li4wYjdhNDNlIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAorKysgYi9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaApAQCAtMjE2LDYgKzIxNiwx MCBAQCBleHRlcm4gUEdETExJTVBPUlQgTG9naWNhbFJlcFdvcmtlciAqTXlMb2dpY2FsUmVwV29y a2VyOwogCiBleHRlcm4gUEdETExJTVBPUlQgYm9vbCBpbl9yZW1vdGVfdHJhbnNhY3Rpb247CiAK K2V4dGVybiBQR0RMTElNUE9SVCBpbnQgc3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQ7CisKK2V4 dGVybiBQR0RMTElNUE9SVCB1aW50MzIgcGFyYWxsZWxfc3RyZWFtX25jaHVua3M7CisKIGV4dGVy biB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaChpbnQgc2xvdCk7CiBleHRlcm4gTG9naWNh bFJlcFdvcmtlciAqbG9naWNhbHJlcF93b3JrZXJfZmluZChPaWQgc3ViaWQsIE9pZCByZWxpZCwK IAkJCQkJCQkJCQkJCWJvb2wgb25seV9ydW5uaW5nKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1fcGFyYWxsZWxfY29uZmxpY3QucGwgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtX3BhcmFsbGVsX2NvbmZsaWN0LnBsCmluZGV4IDEwZWZk MmQuLjU5ZTdlNzUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJl YW1fcGFyYWxsZWxfY29uZmxpY3QucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMy X3N0cmVhbV9wYXJhbGxlbF9jb25mbGljdC5wbApAQCAtMTMsOCArMTMsMTEgQEAgbXkgJG9mZnNl dCA9IDA7CiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0gUG9z dGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxpc2hl ci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7Ci0kbm9kZV9wdWJsaXNoZXIt PmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAotCSdsb2dpY2FsX2RlY29kaW5nX3dvcmtf bWVtID0gNjRrQicpOworJG5vZGVfcHVibGlzaGVyLT5hcHBlbmRfY29uZigKKwkncG9zdGdyZXNx bC5jb25mJywgcXEoCisJbG9naWNhbF9kZWNvZGluZ193b3JrX21lbSA9IDY0a0IKKwltYXhfcHJl cGFyZWRfdHJhbnNhY3Rpb25zID0gMTAKKykpOwogJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKIAog IyBDcmVhdGUgc3Vic2NyaWJlciBub2RlCkBAIC0yNCw3ICsyNywxMSBAQCAkbm9kZV9zdWJzY3Jp YmVyLT5pbml0OwogIyBDaGVjayBpZiBhbnkgc3RyZWFtaW5nIGNodW5rcyBhcmUgYXBwbGllZCB1 c2luZyB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBXZQogIyBoYXZlIHRvIGxvb2sgZm9yIHRo ZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNvIGJ1bXAgdXAgdGhlIGxvZwogIyB2 ZXJib3NpdHkuCi0kbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25m JywgImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKyRub2RlX3N1YnNjcmliZXItPmFwcGVu ZF9jb25mKAorCSdwb3N0Z3Jlc3FsLmNvbmYnLCBxcSgKKwlsb2dfbWluX21lc3NhZ2VzID0gZGVi dWcxCisJbWF4X3ByZXBhcmVkX3RyYW5zYWN0aW9ucyA9IDEwCispKTsKIAogJG5vZGVfc3Vic2Ny aWJlci0+c3RhcnQ7CiAKQEAgLTQ3LDcgKzU0LDcgQEAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKAogCUNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YgogCUNPTk5FQ1RJT04gJyRwdWJsaXNo ZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJwogCVBVQkxJQ0FUSU9OIHRhcF9w dWIKLQlXSVRIIChzdHJlYW1pbmcgPSBwYXJhbGxlbCwgY29weV9kYXRhID0gZmFsc2UpIik7CisJ V0lUSCAoc3RyZWFtaW5nID0gcGFyYWxsZWwsIHR3b19waGFzZSA9IG9uLCBjb3B5X2RhdGEgPSBm YWxzZSkiKTsKIAogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsK IApAQCAtMTQ2LDYgKzE1MywxMzIgQEAgJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIiKTsKIGlz KCRyZXN1bHQsIHFxKDEwMDAwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVy IGRyb3BwaW5nIGluZGV4Jyk7CiAKKyMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmly b25tZW50LgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRF IFRBQkxFIHRlc3RfdGFiIik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFw cG5hbWUpOworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgVGVzdCBzZXJpYWxpemluZyBtZXNz YWdlcyB0byBkaXNrCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBTZXQgc3RyZWFtX3Nlcmlh bGl6ZV90aHJlc2hvbGQgdG8gemVybywgc28gdGhlIG1lc3NhZ2VzIHdpbGwgYmUgc2VyaWFsaXpl ZCB0byBkaXNrLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJJ0FM VEVSIFNZU1RFTSBTRVQgc3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQgPSAwOycpOworJG5vZGVf c3Vic2NyaWJlci0+cmVsb2FkOworCisjIFNlcmlhbGl6ZSB0aGUgQ09NTUlUIHRyYW5zYWN0aW9u LgorIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMg JG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDUwMDApIHMoaSkiKTsKKworIyBFbnN1cmUgdGhhdCB0aGUgbWVzc2FnZXMgYXJl IHNlcmlhbGl6ZWQuCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvREVCVUc6 ICggW0EtWjAtOV0rOik/IG9wZW5pbmcgZmlsZSAiLipcLmNoYW5nZXMiIGZvciBzdHJlYW1lZCBj aGFuZ2VzLywKKwkkb2Zmc2V0KTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKKworIyBDaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBz dWJzY3JpYmVyCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYiIpOworaXMoJHJlc3VsdCwgcXEo NTAwMCksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBieSBzZXJpYWxpemluZyBtZXNz YWdlcyB0byBkaXNrJyk7CisKKyMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25t ZW50LgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIFRB QkxFIHRlc3RfdGFiIik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOworCisjIFNlcmlhbGl6ZSB0aGUgUFJFUEFSRSB0cmFuc2FjdGlvbi4KKyMgQ2hlY2sgdGhl IHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmli ZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jlcycs IHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKTsKKwlQUkVQQVJFIFRSQU5TQUNUSU9OICd4YWN0JzsKKwl9 KTsKKworIyBFbnN1cmUgdGhhdCB0aGUgbWVzc2FnZXMgYXJlIHNlcmlhbGl6ZWQuCiskbm9kZV9z dWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvREVCVUc6ICggW0EtWjAtOV0rOik/IG9wZW5p bmcgZmlsZSAiLipcLmNoYW5nZXMiIGZvciBzdHJlYW1lZCBjaGFuZ2VzLywKKwkkb2Zmc2V0KTsK KworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworIyBDaGVj ayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKKyRy ZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNU IGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CitpcygkcmVzdWx0LCBxcSgxKSwg J3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKKworIyBDaGVjayB0aGF0 IDJQQyBnZXRzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCiskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJDT01NSVQgUFJFUEFSRUQgJ3hhY3QnOyIpOworCiskbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjIENoZWNrIHRoYXQgdHJh bnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKKyRyZXN1bHQgPQorICAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRl c3RfdGFiIik7CitpcygkcmVzdWx0LCBxcSg1MDAwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJz Y3JpYmVyIGJ5IHNlcmlhbGl6aW5nIG1lc3NhZ2VzIHRvIGRpc2snKTsKKworIyBDbGVhbiB1cCB0 ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIiKTsKKyRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgU2VyaWFsaXplIHRoZSBBQk9SVCB0 b3AtdHJhbnNhY3Rpb24uCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4K KyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7CisJUk9M TEJBQ0s7CisJfSk7CisKKyMgRW5zdXJlIHRoYXQgdGhlIG1lc3NhZ2VzIGFyZSBzZXJpYWxpemVk LgorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0RFQlVHOiAoIFtBLVowLTld KzopPyBvcGVuaW5nIGZpbGUgIi4qXC5jaGFuZ2VzIiBmb3Igc3RyZWFtZWQgY2hhbmdlcy8sCisJ JG9mZnNldCk7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7 CisKKyMgQ2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXIKKyRy ZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVD VCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIik7CitpcygkcmVzdWx0LCBxcSgwKSwgJ2RhdGEgcmVw bGljYXRlZCB0byBzdWJzY3JpYmVyIGJ5IHNlcmlhbGl6aW5nIG1lc3NhZ2VzIHRvIGRpc2snKTsK KworIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQuCiskbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIiKTsK KyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgU2VyaWFs aXplIHRoZSBBQk9SVCBzdWItdHJhbnNhY3Rpb24uCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxv ZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwor Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxeworCUJFR0lOOwor CUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUw MDApIHMoaSk7CisJU0FWRVBPSU5UIHNwOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsIDEwMDAwKSBzKGkpOworCVJPTExCQUNLIFRPIHNw OworCUNPTU1JVDsKKwl9KTsKKworIyBFbnN1cmUgdGhhdCB0aGUgbWVzc2FnZXMgYXJlIHNlcmlh bGl6ZWQuCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvREVCVUc6ICggW0Et WjAtOV0rOik/IG9wZW5pbmcgZmlsZSAiLipcLmNoYW5nZXMiIGZvciBzdHJlYW1lZCBjaGFuZ2Vz LywKKwkkb2Zmc2V0KTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKKworIyBDaGVjayB0aGF0IG9ubHkgc3ViLXRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24g c3Vic2NyaWJlci4KKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIik7CitpcygkcmVzdWx0LCBx cSg1MDAwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGJ5IHNlcmlhbGl6aW5nIG1l c3NhZ2VzIHRvIGRpc2snKTsKKwogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxp c2hlci0+c3RvcDsKIAotLSAKMi43LjIud2luZG93cy4xCgo= --_008_OS0PR01MB571663B4EC5D8BE749AACD98941E9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v59-0007-Add-a-main_worker_pid-to-pg_stat_subscription.patch" Content-Description: v59-0007-Add-a-main_worker_pid-to-pg_stat_subscription.patch Content-Disposition: attachment; filename="v59-0007-Add-a-main_worker_pid-to-pg_stat_subscription.patch"; size=8902; creation-date="Sun, 11 Dec 2022 11:36:25 GMT"; modification-date="Sun, 11 Dec 2022 11:44:52 GMT" Content-Transfer-Encoding: base64 RnJvbSAzZDJhZTk4ODBlYjJlODlhMzEyMDlmNzUzMWNkYjI4MTczYmJiZjhmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFRodSwgNiBPY3QgMjAyMiAxNDo0MjoyNCArMDgwMApTdWJqZWN0OiBbUEFUQ0gg djU5IDcvN10gQWRkIGEgbWFpbl93b3JrZXJfcGlkIHRvIHBnX3N0YXRfc3Vic2NyaXB0aW9uCgpt YWluX3dvcmtlcl9waWQgaXMgUHJvY2VzcyBJRCBvZiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciwg aWYgdGhpcyBwcm9jZXNzIGlzIGEKYXBwbHkgcGFyYWxsZWwgd29ya2VyLiBOVUxMIGlmIHRoaXMg cHJvY2VzcyBpcyBhIGxlYWRlciBhcHBseSB3b3JrZXIgb3IgYQpzeW5jaHJvbml6YXRpb24gd29y a2VyLgoKVGhlIG5ldyBjb2x1bW4gY2FuIG1ha2UgaXQgZWFzaWVyIHRvIGRpc3Rpbmd1aXNoIGxl YWRlciBhcHBseSB3b3JrZXIgYW5kIGFwcGx5CnBhcmFsbGVsIHdvcmtlciB3aGljaCBpcyBhbHNv IHNpbWlsYXIgdG8gdGhlICdsZWFkZXJfcGlkJyBjb2x1bW4gaW4KcGdfc3RhdF9hY3Rpdml0eS4K LS0tCiBkb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sICAgICAgICAgICAgICAgfCAyNiArKysr KysrKysrKysrKysrKystLS0tLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNx bCAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIu YyB8IDMyICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdCAgICAgICAgICAgIHwgIDYgKysrLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3J1bGVzLm91dCAgICAgICAgfCAgMyArKy0KIDUgZmlsZXMgY2hhbmdlZCwgNDMgaW5z ZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL21v bml0b3Jpbmcuc2dtbCBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKaW5kZXggMmM3NmVi NS4uNDZiNzE0YiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAorKysg Yi9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCkBAIC0zMTkxLDExICszMTkxLDIyIEBAIFNF TEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZp dHkgV0hFUkUgd2FpdF9ldmVudCBpCiAKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeSByb2xlPSJj YXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAg ICAgPHN0cnVjdGZpZWxkPmFwcGx5X2xlYWRlcl9waWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnRl Z2VyPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgUHJvY2VzcyBJ RCBvZiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciwgaWYgdGhpcyBwcm9jZXNzIGlzIGEgYXBwbHkK KyAgICAgICBwYXJhbGxlbCB3b3JrZXIuIE5VTEwgaWYgdGhpcyBwcm9jZXNzIGlzIGEgbGVhZGVy IGFwcGx5IHdvcmtlciBvciBhCisgICAgICAgc3luY2hyb25pemF0aW9uIHdvcmtlci4KKyAgICAg IDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5 IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9u Ij4KICAgICAgICA8c3RydWN0ZmllbGQ+cmVsaWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5 cGU+CiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAgICBPSUQgb2YgdGhlIHJlbGF0 aW9uIHRoYXQgdGhlIHdvcmtlciBpcyBzeW5jaHJvbml6aW5nOyBudWxsIGZvciB0aGUKLSAgICAg ICBtYWluIGFwcGx5IHdvcmtlcgorICAgICAgIG1haW4gYXBwbHkgd29ya2VyIGFuZCB0aGUgcGFy YWxsZWwgYXBwbHkgd29ya2VyCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAK QEAgLTMyMDUsNyArMzIxNiw3IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9l dmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICA8L3Bh cmE+CiAgICAgICA8cGFyYT4KICAgICAgICBMYXN0IHdyaXRlLWFoZWFkIGxvZyBsb2NhdGlvbiBy ZWNlaXZlZCwgdGhlIGluaXRpYWwgdmFsdWUgb2YKLSAgICAgICB0aGlzIGZpZWxkIGJlaW5nIDAK KyAgICAgICB0aGlzIGZpZWxkIGJlaW5nIDA7IG51bGwgZm9yIHRoZSBwYXJhbGxlbCBhcHBseSB3 b3JrZXIKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApAQCAtMzIxNCw3ICsz MjI1LDggQEAgU0VMRUNUIHBpZCwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50IEZST00gcGdf c3RhdF9hY3Rpdml0eSBXSEVSRSB3YWl0X2V2ZW50IGkKICAgICAgICA8c3RydWN0ZmllbGQ+bGFz dF9tc2dfc2VuZF90aW1lPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGltZXN0YW1wIHdpdGggdGltZSB6 b25lPC90eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+Ci0gICAgICAgU2VuZCB0aW1l IG9mIGxhc3QgbWVzc2FnZSByZWNlaXZlZCBmcm9tIG9yaWdpbiBXQUwgc2VuZGVyCisgICAgICAg U2VuZCB0aW1lIG9mIGxhc3QgbWVzc2FnZSByZWNlaXZlZCBmcm9tIG9yaWdpbiBXQUwgc2VuZGVy OyBudWxsIGZvciB0aGUKKyAgICAgICBwYXJhbGxlbCBhcHBseSB3b3JrZXIKICAgICAgIDwvcGFy YT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApAQCAtMzIyMyw3ICszMjM1LDggQEAgU0VMRUNUIHBp ZCwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50IEZST00gcGdfc3RhdF9hY3Rpdml0eSBXSEVS RSB3YWl0X2V2ZW50IGkKICAgICAgICA8c3RydWN0ZmllbGQ+bGFzdF9tc2dfcmVjZWlwdF90aW1l PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGltZXN0YW1wIHdpdGggdGltZSB6b25lPC90eXBlPgogICAg ICAgPC9wYXJhPgogICAgICAgPHBhcmE+Ci0gICAgICAgUmVjZWlwdCB0aW1lIG9mIGxhc3QgbWVz c2FnZSByZWNlaXZlZCBmcm9tIG9yaWdpbiBXQUwgc2VuZGVyCisgICAgICAgUmVjZWlwdCB0aW1l IG9mIGxhc3QgbWVzc2FnZSByZWNlaXZlZCBmcm9tIG9yaWdpbiBXQUwgc2VuZGVyOyBudWxsIGZv cgorICAgICAgIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIKICAgICAgIDwvcGFyYT48L2VudHJ5 PgogICAgICA8L3Jvdz4KIApAQCAtMzIzMiw3ICszMjQ1LDggQEAgU0VMRUNUIHBpZCwgd2FpdF9l dmVudF90eXBlLCB3YWl0X2V2ZW50IEZST00gcGdfc3RhdF9hY3Rpdml0eSBXSEVSRSB3YWl0X2V2 ZW50IGkKICAgICAgICA8c3RydWN0ZmllbGQ+bGF0ZXN0X2VuZF9sc248L3N0cnVjdGZpZWxkPiA8 dHlwZT5wZ19sc248L3R5cGU+CiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KLSAgICAgICBM YXN0IHdyaXRlLWFoZWFkIGxvZyBsb2NhdGlvbiByZXBvcnRlZCB0byBvcmlnaW4gV0FMIHNlbmRl cgorICAgICAgIExhc3Qgd3JpdGUtYWhlYWQgbG9nIGxvY2F0aW9uIHJlcG9ydGVkIHRvIG9yaWdp biBXQUwgc2VuZGVyOyBudWxsIGZvcgorICAgICAgIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIK ICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApAQCAtMzI0Miw3ICszMjU2LDcg QEAgU0VMRUNUIHBpZCwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50IEZST00gcGdfc3RhdF9h Y3Rpdml0eSBXSEVSRSB3YWl0X2V2ZW50IGkKICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgog ICAgICAgIFRpbWUgb2YgbGFzdCB3cml0ZS1haGVhZCBsb2cgbG9jYXRpb24gcmVwb3J0ZWQgdG8g b3JpZ2luIFdBTAotICAgICAgIHNlbmRlcgorICAgICAgIHNlbmRlcjsgbnVsbCBmb3IgdGhlIHBh cmFsbGVsIGFwcGx5IHdvcmtlcgogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93Pgog ICAgIDwvdGJvZHk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3 cy5zcWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKaW5kZXggYzJjN2Q4 YS4uZjI4MjU3MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Mu c3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAtOTQ5LDYg Kzk0OSw3IEBAIENSRUFURSBWSUVXIHBnX3N0YXRfc3Vic2NyaXB0aW9uIEFTCiAgICAgICAgICAg ICBzdS5vaWQgQVMgc3ViaWQsCiAgICAgICAgICAgICBzdS5zdWJuYW1lLAogICAgICAgICAgICAg c3QucGlkLAorICAgICAgICAgICAgc3QuYXBwbHlfbGVhZGVyX3BpZCwKICAgICAgICAgICAgIHN0 LnJlbGlkLAogICAgICAgICAgICAgc3QucmVjZWl2ZWRfbHNuLAogICAgICAgICAgICAgc3QubGFz dF9tc2dfc2VuZF90aW1lLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9sYXVuY2hlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hl ci5jCmluZGV4IDBmODJkZDQuLjgzOTJlNjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2xhdW5jaGVyLmMKQEAgLTEwNzcsNyArMTA3Nyw3IEBAIElzTG9naWNhbExhdW5jaGVy KHZvaWQpCiBEYXR1bQogcGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9uKFBHX0ZVTkNUSU9OX0FSR1Mp CiB7Ci0jZGVmaW5lIFBHX1NUQVRfR0VUX1NVQlNDUklQVElPTl9DT0xTCTgKKyNkZWZpbmUgUEdf U1RBVF9HRVRfU1VCU0NSSVBUSU9OX0NPTFMJOQogCU9pZAkJCXN1YmlkID0gUEdfQVJHSVNOVUxM KDApID8gSW52YWxpZE9pZCA6IFBHX0dFVEFSR19PSUQoMCk7CiAJaW50CQkJaTsKIAlSZXR1cm5T ZXRJbmZvICpyc2luZm8gPSAoUmV0dXJuU2V0SW5mbyAqKSBmY2luZm8tPnJlc3VsdGluZm87CkBA IC0xMTAzLDEwICsxMTAzLDYgQEAgcGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9uKFBHX0ZVTkNUSU9O X0FSR1MpCiAJCWlmIChPaWRJc1ZhbGlkKHN1YmlkKSAmJiB3b3JrZXIuc3ViaWQgIT0gc3ViaWQp CiAJCQljb250aW51ZTsKIAotCQkvKiBTa2lwIGlmIHRoaXMgaXMgYSBwYXJhbGxlbCBhcHBseSB3 b3JrZXIgKi8KLQkJaWYgKGlzUGFyYWxsZWxBcHBseVdvcmtlcigmd29ya2VyKSkKLQkJCWNvbnRp bnVlOwotCiAJCXdvcmtlcl9waWQgPSB3b3JrZXIucHJvYy0+cGlkOwogCiAJCXZhbHVlc1swXSA9 IE9iamVjdElkR2V0RGF0dW0od29ya2VyLnN1YmlkKTsKQEAgLTExMTUsMjYgKzExMTEsMzIgQEAg cGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9uKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWVsc2UKIAkJCW51 bGxzWzFdID0gdHJ1ZTsKIAkJdmFsdWVzWzJdID0gSW50MzJHZXREYXR1bSh3b3JrZXJfcGlkKTsK LQkJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQod29ya2VyLmxhc3RfbHNuKSkKKworCQlpZiAod29y a2VyLmFwcGx5X2xlYWRlcl9waWQgPT0gSW52YWxpZFBpZCkKIAkJCW51bGxzWzNdID0gdHJ1ZTsK IAkJZWxzZQotCQkJdmFsdWVzWzNdID0gTFNOR2V0RGF0dW0od29ya2VyLmxhc3RfbHNuKTsKLQkJ aWYgKHdvcmtlci5sYXN0X3NlbmRfdGltZSA9PSAwKQorCQkJdmFsdWVzWzNdID0gSW50MzJHZXRE YXR1bSh3b3JrZXIuYXBwbHlfbGVhZGVyX3BpZCk7CisKKwkJaWYgKFhMb2dSZWNQdHJJc0ludmFs aWQod29ya2VyLmxhc3RfbHNuKSkKIAkJCW51bGxzWzRdID0gdHJ1ZTsKIAkJZWxzZQotCQkJdmFs dWVzWzRdID0gVGltZXN0YW1wVHpHZXREYXR1bSh3b3JrZXIubGFzdF9zZW5kX3RpbWUpOwotCQlp ZiAod29ya2VyLmxhc3RfcmVjdl90aW1lID09IDApCisJCQl2YWx1ZXNbNF0gPSBMU05HZXREYXR1 bSh3b3JrZXIubGFzdF9sc24pOworCQlpZiAod29ya2VyLmxhc3Rfc2VuZF90aW1lID09IDApCiAJ CQludWxsc1s1XSA9IHRydWU7CiAJCWVsc2UKLQkJCXZhbHVlc1s1XSA9IFRpbWVzdGFtcFR6R2V0 RGF0dW0od29ya2VyLmxhc3RfcmVjdl90aW1lKTsKLQkJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQo d29ya2VyLnJlcGx5X2xzbikpCisJCQl2YWx1ZXNbNV0gPSBUaW1lc3RhbXBUekdldERhdHVtKHdv cmtlci5sYXN0X3NlbmRfdGltZSk7CisJCWlmICh3b3JrZXIubGFzdF9yZWN2X3RpbWUgPT0gMCkK IAkJCW51bGxzWzZdID0gdHJ1ZTsKIAkJZWxzZQotCQkJdmFsdWVzWzZdID0gTFNOR2V0RGF0dW0o d29ya2VyLnJlcGx5X2xzbik7Ci0JCWlmICh3b3JrZXIucmVwbHlfdGltZSA9PSAwKQorCQkJdmFs dWVzWzZdID0gVGltZXN0YW1wVHpHZXREYXR1bSh3b3JrZXIubGFzdF9yZWN2X3RpbWUpOworCQlp ZiAoWExvZ1JlY1B0cklzSW52YWxpZCh3b3JrZXIucmVwbHlfbHNuKSkKIAkJCW51bGxzWzddID0g dHJ1ZTsKIAkJZWxzZQotCQkJdmFsdWVzWzddID0gVGltZXN0YW1wVHpHZXREYXR1bSh3b3JrZXIu cmVwbHlfdGltZSk7CisJCQl2YWx1ZXNbN10gPSBMU05HZXREYXR1bSh3b3JrZXIucmVwbHlfbHNu KTsKKwkJaWYgKHdvcmtlci5yZXBseV90aW1lID09IDApCisJCQludWxsc1s4XSA9IHRydWU7CisJ CWVsc2UKKwkJCXZhbHVlc1s4XSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0od29ya2VyLnJlcGx5X3Rp bWUpOwogCiAJCXR1cGxlc3RvcmVfcHV0dmFsdWVzKHJzaW5mby0+c2V0UmVzdWx0LCByc2luZm8t PnNldERlc2MsCiAJCQkJCQkJIHZhbHVlcywgbnVsbHMpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQK aW5kZXggZjkzMDFiMi4uNmQxNzA1MCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC01NDI2 LDkgKzU0MjYsOSBAQAogICBwcm9uYW1lID0+ICdwZ19zdGF0X2dldF9zdWJzY3JpcHRpb24nLCBw cm9yb3dzID0+ICcxMCcsIHByb2lzc3RyaWN0ID0+ICdmJywKICAgcHJvcmV0c2V0ID0+ICd0Jywg cHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9wYXJhbGxlbCA9PiAncicsCiAgIHByb3JldHR5cGUgPT4g J3JlY29yZCcsIHByb2FyZ3R5cGVzID0+ICdvaWQnLAotICBwcm9hbGxhcmd0eXBlcyA9PiAne29p ZCxvaWQsb2lkLGludDQscGdfbHNuLHRpbWVzdGFtcHR6LHRpbWVzdGFtcHR6LHBnX2xzbix0aW1l c3RhbXB0en0nLAotICBwcm9hcmdtb2RlcyA9PiAne2ksbyxvLG8sbyxvLG8sbyxvfScsCi0gIHBy b2FyZ25hbWVzID0+ICd7c3ViaWQsc3ViaWQscmVsaWQscGlkLHJlY2VpdmVkX2xzbixsYXN0X21z Z19zZW5kX3RpbWUsbGFzdF9tc2dfcmVjZWlwdF90aW1lLGxhdGVzdF9lbmRfbHNuLGxhdGVzdF9l bmRfdGltZX0nLAorICBwcm9hbGxhcmd0eXBlcyA9PiAne29pZCxvaWQsb2lkLGludDQsaW50NCxw Z19sc24sdGltZXN0YW1wdHosdGltZXN0YW1wdHoscGdfbHNuLHRpbWVzdGFtcHR6fScsCisgIHBy b2FyZ21vZGVzID0+ICd7aSxvLG8sbyxvLG8sbyxvLG8sb30nLAorICBwcm9hcmduYW1lcyA9PiAn e3N1YmlkLHN1YmlkLHJlbGlkLHBpZCxhcHBseV9sZWFkZXJfcGlkLHJlY2VpdmVkX2xzbixsYXN0 X21zZ19zZW5kX3RpbWUsbGFzdF9tc2dfcmVjZWlwdF90aW1lLGxhdGVzdF9lbmRfbHNuLGxhdGVz dF9lbmRfdGltZX0nLAogICBwcm9zcmMgPT4gJ3BnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbicgfSwK IHsgb2lkID0+ICcyMDI2JywgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IGN1cnJlbnQgYmFja2VuZCBQ SUQnLAogICBwcm9uYW1lID0+ICdwZ19iYWNrZW5kX3BpZCcsIHByb3ZvbGF0aWxlID0+ICdzJywg cHJvcGFyYWxsZWwgPT4gJ3InLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9ydWxlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAppbmRleCBm YjlmOTM2Li43ZTZlYTYwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1 bGVzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApAQCAtMjA5 NCw2ICsyMDk0LDcgQEAgcGdfc3RhdF9zc2x8IFNFTEVDVCBzLnBpZCwKIHBnX3N0YXRfc3Vic2Ny aXB0aW9ufCBTRUxFQ1Qgc3Uub2lkIEFTIHN1YmlkLAogICAgIHN1LnN1Ym5hbWUsCiAgICAgc3Qu cGlkLAorICAgIHN0LmFwcGx5X2xlYWRlcl9waWQsCiAgICAgc3QucmVsaWQsCiAgICAgc3QucmVj ZWl2ZWRfbHNuLAogICAgIHN0Lmxhc3RfbXNnX3NlbmRfdGltZSwKQEAgLTIxMDEsNyArMjEwMiw3 IEBAIHBnX3N0YXRfc3Vic2NyaXB0aW9ufCBTRUxFQ1Qgc3Uub2lkIEFTIHN1YmlkLAogICAgIHN0 LmxhdGVzdF9lbmRfbHNuLAogICAgIHN0LmxhdGVzdF9lbmRfdGltZQogICAgRlJPTSAocGdfc3Vi c2NyaXB0aW9uIHN1Ci0gICAgIExFRlQgSk9JTiBwZ19zdGF0X2dldF9zdWJzY3JpcHRpb24oTlVM TDo6b2lkKSBzdChzdWJpZCwgcmVsaWQsIHBpZCwgcmVjZWl2ZWRfbHNuLCBsYXN0X21zZ19zZW5k X3RpbWUsIGxhc3RfbXNnX3JlY2VpcHRfdGltZSwgbGF0ZXN0X2VuZF9sc24sIGxhdGVzdF9lbmRf dGltZSkgT04gKChzdC5zdWJpZCA9IHN1Lm9pZCkpKTsKKyAgICAgTEVGVCBKT0lOIHBnX3N0YXRf Z2V0X3N1YnNjcmlwdGlvbihOVUxMOjpvaWQpIHN0KHN1YmlkLCByZWxpZCwgcGlkLCBhcHBseV9s ZWFkZXJfcGlkLCByZWNlaXZlZF9sc24sIGxhc3RfbXNnX3NlbmRfdGltZSwgbGFzdF9tc2dfcmVj ZWlwdF90aW1lLCBsYXRlc3RfZW5kX2xzbiwgbGF0ZXN0X2VuZF90aW1lKSBPTiAoKHN0LnN1Ymlk ID0gc3Uub2lkKSkpOwogcGdfc3RhdF9zdWJzY3JpcHRpb25fc3RhdHN8IFNFTEVDVCBzcy5zdWJp ZCwKICAgICBzLnN1Ym5hbWUsCiAgICAgc3MuYXBwbHlfZXJyb3JfY291bnQsCi0tIAoyLjcuMi53 aW5kb3dzLjEKCg== --_008_OS0PR01MB571663B4EC5D8BE749AACD98941E9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v59-0001-Perform-streaming-logical-transactions-by-parall.patch" Content-Description: v59-0001-Perform-streaming-logical-transactions-by-parall.patch Content-Disposition: attachment; filename="v59-0001-Perform-streaming-logical-transactions-by-parall.patch"; size=198288; creation-date="Sun, 11 Dec 2022 11:36:25 GMT"; modification-date="Sun, 11 Dec 2022 11:44:54 GMT" Content-Transfer-Encoding: base64 RnJvbSA1MGY3Zjk3MTk4OTkxNzhhMmI2ZGQ1Y2IwOTFjYWNjMDMyNDM0YzUyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjAgQXByIDIwMjIgMTY6NDU6MDcgKzA4MDAKU3ViamVjdDogW1BBVENI IHY1OSAxLzddIFBlcmZvcm0gc3RyZWFtaW5nIGxvZ2ljYWwgdHJhbnNhY3Rpb25zIGJ5IHBhcmFs bGVsCiB3b3JrZXJzCgpDdXJyZW50bHksIGZvciBsYXJnZSB0cmFuc2FjdGlvbnMsIHRoZSBwdWJs aXNoZXIgc2VuZHMgdGhlIGRhdGEgaW4gbXVsdGlwbGUKc3RyZWFtcyAoY2hhbmdlcyBkaXZpZGVk IGludG8gY2h1bmtzIGRlcGVuZGluZyB1cG9uIGxvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW0pLAph bmQgdGhlbiBvbiB0aGUgc3Vic2NyaWJlci1zaWRlLCB0aGUgYXBwbHkgd29ya2VyIHdyaXRlcyB0 aGUgY2hhbmdlcyBpbnRvCnRlbXBvcmFyeSBmaWxlcyBhbmQgb25jZSBpdCByZWNlaXZlcyB0aGUg Y29tbWl0LCBpdCByZWFkcyBmcm9tIHRob3NlIGZpbGVzIGFuZAphcHBsaWVzIHRoZSBlbnRpcmUg dHJhbnNhY3Rpb24uIFRvIGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIG9mIHN1Y2gKdHJhbnNhY3Rp b25zLCB3ZSBjYW4gaW5zdGVhZCBhbGxvdyB0aGVtIHRvIGJlIGFwcGxpZWQgdmlhIHBhcmFsbGVs IHdvcmtlcnMuCgpJbiB0aGlzIGFwcHJvYWNoLCB3ZSBhc3NpZ24gYSBuZXcgcGFyYWxsZWwgYXBw bHkgd29ya2VyIChpZiBhdmFpbGFibGUpIGFzCnNvb24gYXMgdGhlIHhhY3QncyBmaXJzdCBzdHJl YW0gaXMgcmVjZWl2ZWQgYW5kIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHdpbGwKc2VuZCBjaGFu Z2VzIHRvIHRoaXMgbmV3IHdvcmtlciB2aWEgc2hhcmVkIG1lbW9yeS4gVGhlIHBhcmFsbGVsIGFw cGx5IHdvcmtlcgp3aWxsIGRpcmVjdGx5IGFwcGx5IHRoZSBjaGFuZ2UgaW5zdGVhZCBvZiB3cml0 aW5nIGl0IHRvIHRlbXBvcmFyeSBmaWxlcy4gV2UKa2VlcCB0aGlzIHdvcmtlciBhc3NpZ25lZCB0 aWxsIHRoZSB0cmFuc2FjdGlvbiBjb21taXQgaXMgcmVjZWl2ZWQgYW5kIGFsc28gd2FpdApmb3Ig dGhlIHdvcmtlciB0byBmaW5pc2ggYXQgY29tbWl0LiBUaGlzIHByZXNlcnZlcyBjb21taXQgb3Jk ZXJpbmcgYW5kIGF2b2lkcwp3cml0aW5nIHRvIGFuZCByZWFkaW5nIGZyb20gZmlsZXMgaW4gbW9z dCBjYXNlcy4gV2Ugc3RpbGwgbmVlZCB0byBzcGlsbCBpZgp0aGVyZSBpcyBubyB3b3JrZXIgYXZh aWxhYmxlLgoKVGhpcyBwYXRjaCBhbHNvIGV4dGVuZHMgdGhlIFNVQlNDUklQVElPTiAnc3RyZWFt aW5nJyBwYXJhbWV0ZXIgc28gdGhhdCB0aGUgdXNlcgpjYW4gY29udHJvbCB3aGV0aGVyIHRvIGFw cGx5IHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gaW4gYSBwYXJhbGxlbCBhcHBseQp3b3JrZXIg b3Igc3BpbGwgdGhlIGNoYW5nZSB0byBkaXNrLiBUaGUgdXNlciBjYW4gc2V0IHRoZSBzdHJlYW1p bmcgcGFyYW1ldGVyIHRvCidvbi9vZmYnLCAncGFyYWxsZWwnLiBUaGUgcGFyYW1ldGVyIHZhbHVl ICdwYXJhbGxlbCcgbWVhbnMgdGhlIHN0cmVhbWluZyB3aWxsCmJlIGFwcGxpZWQgdmlhIGEgcGFy YWxsZWwgYXBwbHkgd29ya2VyLCBpZiBhdmFpbGFibGUuIFRoZSBwYXJhbWV0ZXIgdmFsdWUKJ29u JyBtZWFucyB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHdpbGwgYmUgc3BpbGxlZCB0byBkaXNr LiBUaGUgZGVmYXVsdCB2YWx1ZQppcyAnb2ZmJyAoc2FtZSBhcyBjdXJyZW50IGJlaGF2aW91ciku CgpJbiBhZGRpdGlvbiwgdGhlIHBhdGNoIGV4dGVuZHMgdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24g U1RSRUFNX0FCT1JUIG1lc3NhZ2Ugc28KdGhhdCBhYm9ydF90aW1lIGFuZCBhYm9ydF9sc24gY2Fu IGFsc28gYmUgc2VudCB3aGljaCBjYW4gYmUgdXNlZCB0byB1cGRhdGUgdGhlCnJlcGxpY2F0aW9u IG9yaWdpbiBpbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2hlbiB0aGUgc3RyZWFtaW5nIHRyYW5z YWN0aW9uIGlzCmFib3J0ZWQuIEJlY2F1c2UgdGhpcyBtZXNzYWdlIGV4dGVuc2lvbiBpcyBuZWVk ZWQgdG8gc3VwcG9ydCBwYXJhbGxlbApzdHJlYW1pbmcsIHBhcmFsbGVsIHN0cmVhbWluZyBpcyBu b3Qgc3VwcG9ydGVkIGZvciBwdWJsaWNhdGlvbnMgb24gc2VydmVycyA8ClBHMTYuCi0tLQogZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDExICst CiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg MjggKy0KIGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgICAgICAgICAgICAg IHwgICAyMSArLQogZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAgICAgICAgICAgICAgICAg ICAgICAgfCAgICA1ICsKIGRvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAyOSArLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9u LnNnbWwgICAgICAgICAgfCAgIDI0ICstCiBkb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwg ICAgICAgICAgICAgICAgICAgICB8ICAgIDUgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3hhY3QuYyAgICAgICAgICAgICAgICAgIHwgICAxMyArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9z dWJzY3JpcHRpb25jbWRzLmMgICAgICAgICAgICB8ICAgNjggKy0KIHNyYy9iYWNrZW5kL2xpYnBx L3BxbXEuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxOCArLQogc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9iZ3dvcmtlci5jICAgICAgICAgICAgICAgICAgfCAgICAzICsKIHNyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvaW50ZXJydXB0LmMgICAgICAgICAgICAgICAgIHwgICAgNSArLQogLi4u L2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jICAgICAgICAgICAgfCAgICA2ICst CiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlICAgICAgICAgICB8ICAg IDEgKwogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jICAgICAg fCAxNTI5ICsrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2RlY29kZS5jICAgICAgICAgICB8ICAgIDUgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvbGF1bmNoZXIuYyAgICAgICAgIHwgIDIyNSArKy0KIHNyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvbWVzb24uYnVpbGQgICAgICAgIHwgICAgMSArCiBzcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jICAgICAgICAgICB8ICAgMjYgKy0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYyAgICAgICAgICAgIHwgICAzNyArLQogc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMgICAgfCAgICA1ICst CiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jICAgICAgICB8ICAg MjUgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICAgICAg IHwgMTAyMCArKysrKysrKysrLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9w Z291dHB1dC5jICAgICAgICB8ICAgMjIgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2Nz aWduYWwuYyAgICAgICAgICAgICAgIHwgICAgNCArCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3Iv bG1nci5jICAgICAgICAgICAgICAgICAgICB8ICAgNDYgKwogc3JjL2JhY2tlbmQvdGNvcC9wb3N0 Z3Jlcy5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAzICsKIHNyYy9iYWNrZW5kL3V0aWxz L2FjdGl2aXR5L3dhaXRfZXZlbnQuYyAgICAgICAgICAgIHwgICAgNiArCiBzcmMvYmFja2VuZC91 dGlscy9hZHQvbG9ja2Z1bmNzLmMgICAgICAgICAgICAgICAgICB8ICAgIDUgKy0KIHNyYy9iYWNr ZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jICAgICAgICAgICAgICAgIHwgICAxMiArCiBzcmMv YmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgICAgICB8ICAgIDEgKwog c3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA2 ICstCiBzcmMvYmluL3BzcWwvZGVzY3JpYmUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgMjEgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggICAgICAgICAg ICAgIHwgICAyMSArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5oICAg ICAgICAgICAgfCAgICAyICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hl ci5oICAgICAgICAgIHwgICAgMSArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJv dG8uaCAgICAgICAgICAgICB8ICAgMjggKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2lj YWx3b3JrZXIuaCAgICAgICAgICAgIHwgICAgOCArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9v cmlnaW4uaCAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL3Bnb3V0cHV0LmggICAgICAgICAgICAgICAgIHwgICAgMiArLQogc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oICAgICAgICAgICAgfCAgICA0ICstCiBzcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oICAgICAgICAgICAgICB8ICAgIDIgKy0KIHNyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oICAgICAgICAgIHwgIDE1OSArLQog c3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdyLmggICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA1 ICsKIHNyYy9pbmNsdWRlL3N0b3JhZ2UvbG9jay5oICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAxNyArLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmggICAgICAgICAgICAgICAg ICAgfCAgICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCAgICAgICAgICAgICAg ICAgICAgIHwgICAgMiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5v dXQgICAgICAgICB8ICAgNDYgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNjcmlwdGlvbi5z cWwgICAgICAgICAgICAgIHwgICAgNiArLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QgICAgICAgICAgICAgICAgICAgfCAgICA2ICsKIDUwIGZpbGVzIGNoYW5nZWQsIDMyMDkgaW5z ZXJ0aW9ucygrKSwgMzM5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCgpkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dt bAppbmRleCA5ZWQyYjAyLi4xMzAzNjFmIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0YWxv Z3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtNzkwMywxMSArNzkw MywxNiBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9uIGNvdW50Jmd0 OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogCiAgICAgIDxyb3c+CiAgICAgICA8ZW50 cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRp b24iPgotICAgICAgIDxzdHJ1Y3RmaWVsZD5zdWJzdHJlYW08L3N0cnVjdGZpZWxkPiA8dHlwZT5i b29sPC90eXBlPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5zdWJzdHJlYW08L3N0cnVjdGZpZWxkPiA8 dHlwZT5jaGFyPC90eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+Ci0gICAgICAgSWYg dHJ1ZSwgdGhlIHN1YnNjcmlwdGlvbiB3aWxsIGFsbG93IHN0cmVhbWluZyBvZiBpbi1wcm9ncmVz cwotICAgICAgIHRyYW5zYWN0aW9ucworICAgICAgIENvbnRyb2xzIGhvdyB0byBoYW5kbGUgdGhl IHN0cmVhbWluZyBvZiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnM6CisgICAgICAgPGxpdGVyYWw+ ZjwvbGl0ZXJhbD4gPSBkaXNhbGxvdyBzdHJlYW1pbmcgb2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rp b25zLAorICAgICAgIDxsaXRlcmFsPnQ8L2xpdGVyYWw+ID0gc3BpbGwgdGhlIGNoYW5nZXMgb2Yg aW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIHRvCisgICAgICAgZGlzayBhbmQgYXBwbHkgYXQgb25j ZSBhZnRlciB0aGUgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHRoZQorICAgICAgIHB1Ymxp c2hlciwKKyAgICAgICA8bGl0ZXJhbD5wPC9saXRlcmFsPiA9IGFwcGx5IGNoYW5nZXMgZGlyZWN0 bHkgdXNpbmcgYSBwYXJhbGxlbCBhcHBseQorICAgICAgIHdvcmtlciBpZiBhdmFpbGFibGUgKHNh bWUgYXMgJ3QnIGlmIG5vIHdvcmtlciBpcyBhdmFpbGFibGUpCiAgICAgICA8L3BhcmE+PC9lbnRy eT4KICAgICAgPC9yb3c+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbCBi L2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAppbmRleCBmZjZmY2Q5Li5kNjViNjdmIDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5z Z21sCkBAIC00OTM0LDcgKzQ5MzQsOCBAQCBBTlkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4gKCA8cmVwbGFjZWFibGUgY2xhc3M9IgogICAgICAg PGxpc3RpdGVtPgogICAgICAgIDxwYXJhPgogICAgICAgICBTcGVjaWZpZXMgbWF4aW11bSBudW1i ZXIgb2YgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXJzLiBUaGlzIGluY2x1ZGVzCi0gICAgICAg IGJvdGggYXBwbHkgd29ya2VycyBhbmQgdGFibGUgc3luY2hyb25pemF0aW9uIHdvcmtlcnMuCisg ICAgICAgIGxlYWRlciBhcHBseSB3b3JrZXJzLCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLCBhbmQg dGFibGUgc3luY2hyb25pemF0aW9uCisgICAgICAgIHdvcmtlcnMuCiAgICAgICAgPC9wYXJhPgog ICAgICAgIDxwYXJhPgogICAgICAgICBMb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlcnMgYXJlIHRh a2VuIGZyb20gdGhlIHBvb2wgZGVmaW5lZCBieQpAQCAtNDk3NCw2ICs0OTc1LDMxIEBAIEFOWSA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtX3N5bmM8L3JlcGxhY2VhYmxlPiAoIDxy ZXBsYWNlYWJsZSBjbGFzcz0iCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRy eT4KIAorICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtbWF4LXBhcmFsbGVsLWFwcGx5LXdvcmtl cnMtcGVyLXN1YnNjcmlwdGlvbiIgeHJlZmxhYmVsPSJtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vy c19wZXJfc3Vic2NyaXB0aW9uIj4KKyAgICAgIDx0ZXJtPjx2YXJuYW1lPm1heF9wYXJhbGxlbF9h cHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb248L3Zhcm5hbWU+ICg8dHlwZT5pbnRlZ2VyPC90 eXBlPikKKyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+bWF4X3Bh cmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbjwvdmFybmFtZT4gY29uZmlndXJh dGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgICA8L2luZGV4dGVybT4KKyAgICAgIDwvdGVy bT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgTWF4aW11bSBudW1i ZXIgb2YgcGFyYWxsZWwgYXBwbHkgd29ya2VycyBwZXIgc3Vic2NyaXB0aW9uLiBUaGlzCisgICAg ICAgIHBhcmFtZXRlciBjb250cm9scyB0aGUgYW1vdW50IG9mIHBhcmFsbGVsaXNtIGZvciBzdHJl YW1pbmcgb2YKKyAgICAgICAgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIHdpdGggc3Vic2NyaXB0 aW9uIHBhcmFtZXRlcgorICAgICAgICA8bGl0ZXJhbD5zdHJlYW1pbmcgPSBwYXJhbGxlbDwvbGl0 ZXJhbD4uCisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBUaGUgcGFyYWxs ZWwgYXBwbHkgd29ya2VycyBhcmUgdGFrZW4gZnJvbSB0aGUgcG9vbCBkZWZpbmVkIGJ5CisgICAg ICAgIDx2YXJuYW1lPm1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM8L3Zhcm5hbWU+Lgor ICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUg aXMgMi4gVGhpcyBwYXJhbWV0ZXIgY2FuIG9ubHkgYmUgc2V0IGluIHRoZQorICAgICAgICA8Zmls ZW5hbWU+cG9zdGdyZXNxbC5jb25mPC9maWxlbmFtZT4gZmlsZSBvciBvbiB0aGUgc2VydmVyIGNv bW1hbmQKKyAgICAgICAgbGluZS4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgor ICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgICA8L3NlY3Qy PgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sIGIv ZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAppbmRleCBmODc1NjM4Li5mMzY2 NzEwIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKQEAgLTE0OTcsNiArMTQ5 NywxNiBAQCBDT05URVhUOiAgcHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24g b3JpZ2luICJwZ18xNjM5NSIgZHVyaW5nICJJTlNFUgogICAgbWlnaHQgbm90IHZpb2xhdGUgYW55 IGNvbnN0cmFpbnQuICBUaGlzIGNhbiBlYXNpbHkgbWFrZSB0aGUgc3Vic2NyaWJlcgogICAgaW5j b25zaXN0ZW50LgogICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBXaGVuIHRoZSBzdHJlYW1pbmcg bW9kZSBpcyA8bGl0ZXJhbD5wYXJhbGxlbDwvbGl0ZXJhbD4sIHRoZSBmaW5pc2ggTFNOIG9mCisg ICBmYWlsZWQgdHJhbnNhY3Rpb25zIG1heSBub3QgYmUgbG9nZ2VkLiBJbiB0aGF0IGNhc2UsIGl0 IG1heSBiZSBuZWNlc3NhcnkgdG8KKyAgIGNoYW5nZSB0aGUgc3RyZWFtaW5nIG1vZGUgdG8gPGxp dGVyYWw+b248L2xpdGVyYWw+IG9yIDxsaXRlcmFsPm9mZjwvbGl0ZXJhbD4gYW5kCisgICBjYXVz ZSB0aGUgc2FtZSBjb25mbGljdHMgYWdhaW4gc28gdGhlIGZpbmlzaCBMU04gb2YgdGhlIGZhaWxl ZCB0cmFuc2FjdGlvbiB3aWxsCisgICBiZSB3cml0dGVuIHRvIHRoZSBzZXJ2ZXIgbG9nLiBGb3Ig dGhlIHVzYWdlIG9mIGZpbmlzaCBMU04sIHBsZWFzZSByZWZlciB0byA8bGluaworICAgbGlua2Vu ZD0ic3FsLWFsdGVyc3Vic2NyaXB0aW9uIj48Y29tbWFuZD5BTFRFUiBTVUJTQ1JJUFRJT04gLi4u CisgICBTS0lQPC9jb21tYW5kPjwvbGluaz4uCisgIDwvcGFyYT4KICA8L3NlY3QxPgogCiAgPHNl Y3QxIGlkPSJsb2dpY2FsLXJlcGxpY2F0aW9uLXJlc3RyaWN0aW9ucyI+CkBAIC0xNjc4LDcgKzE2 ODgsOCBAQCBDT05URVhUOiAgcHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24g b3JpZ2luICJwZ18xNjM5NSIgZHVyaW5nICJJTlNFUgogICAgc3Vic2NyaXB0aW9uLiAgQSBkaXNh YmxlZCBzdWJzY3JpcHRpb24gb3IgYSBjcmFzaGVkIHN1YnNjcmlwdGlvbiB3aWxsIGhhdmUKICAg IHplcm8gcm93cyBpbiB0aGlzIHZpZXcuICBJZiB0aGUgaW5pdGlhbCBkYXRhIHN5bmNocm9uaXph dGlvbiBvZiBhbnkKICAgIHRhYmxlIGlzIGluIHByb2dyZXNzLCB0aGVyZSB3aWxsIGJlIGFkZGl0 aW9uYWwgd29ya2VycyBmb3IgdGhlIHRhYmxlcwotICAgYmVpbmcgc3luY2hyb25pemVkLgorICAg YmVpbmcgc3luY2hyb25pemVkLiBNb3Jlb3ZlciwgaWYgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlv biBpcyBhcHBsaWVkIGluCisgICBwYXJhbGxlbCwgdGhlcmUgd2lsbCBiZSBhZGRpdGlvbmFsIHdv cmtlcnMuCiAgIDwvcGFyYT4KICA8L3NlY3QxPgogCkBAIC0xNzg0LDggKzE3OTUsMTIgQEAgQ09O VEVYVDogIHByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiAicGdf MTYzOTUiIGR1cmluZyAiSU5TRVIKICAgIHRvIHRoZSBzdWJzY3JpYmVyLCBwbHVzIHNvbWUgcmVz ZXJ2ZSBmb3IgdGFibGUgc3luY2hyb25pemF0aW9uLgogICAgPHZhcm5hbWU+bWF4X2xvZ2ljYWxf cmVwbGljYXRpb25fd29ya2VyczwvdmFybmFtZT4gbXVzdCBiZSBzZXQgdG8gYXQgbGVhc3QKICAg IHRoZSBudW1iZXIgb2Ygc3Vic2NyaXB0aW9ucywgYWdhaW4gcGx1cyBzb21lIHJlc2VydmUgZm9y IHRoZSB0YWJsZQotICAgc3luY2hyb25pemF0aW9uLiAgQWRkaXRpb25hbGx5IHRoZSA8dmFybmFt ZT5tYXhfd29ya2VyX3Byb2Nlc3NlczwvdmFybmFtZT4KLSAgIG1heSBuZWVkIHRvIGJlIGFkanVz dGVkIHRvIGFjY29tbW9kYXRlIGZvciByZXBsaWNhdGlvbiB3b3JrZXJzLCBhdCBsZWFzdAorICAg c3luY2hyb25pemF0aW9uLiBJZiB0aGUgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciA8bGl0ZXJhbD5z dHJlYW1pbmc8L2xpdGVyYWw+CisgICBpcyBzZXQgdG8gPGxpdGVyYWw+cGFyYWxsZWw8L2xpdGVy YWw+LAorICAgPGxpdGVyYWw+bWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VyczwvbGl0ZXJh bD4gc2hvdWxkIGJlIGluY3JlYXNlZAorICAgYWNjb3JkaW5nIHRvIHRoZSBkZXNpcmVkIG51bWJl ciBvZiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLiAgQWRkaXRpb25hbGx5IHRoZQorICAgPHZhcm5h bWU+bWF4X3dvcmtlcl9wcm9jZXNzZXM8L3Zhcm5hbWU+IG1heSBuZWVkIHRvIGJlIGFkanVzdGVk IHRvCisgICBhY2NvbW1vZGF0ZSBmb3IgcmVwbGljYXRpb24gd29ya2VycywgYXQgbGVhc3QKICAg ICg8dmFybmFtZT5tYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzPC92YXJuYW1lPgogICAg KyA8bGl0ZXJhbD4xPC9saXRlcmFsPikuICBOb3RlIHRoYXQgc29tZSBleHRlbnNpb25zIGFuZCBw YXJhbGxlbCBxdWVyaWVzCiAgICBhbHNvIHRha2Ugd29ya2VyIHNsb3RzIGZyb20gPHZhcm5hbWU+ bWF4X3dvcmtlcl9wcm9jZXNzZXM8L3Zhcm5hbWU+LgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L21vbml0b3Jpbmcuc2dtbCBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKaW5kZXggMTFh OGViZS4uMmM3NmViNSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAor KysgYi9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCkBAIC0xODUyLDYgKzE4NTIsMTEgQEAg cG9zdGdyZXMgICAyNzA5MyAgMC4wICAwLjAgIDMwMDk2ICAyNzUyID8gICAgICAgIFNzICAgMTE6 MzQgICAwOjAwIHBvc3RncmVzOiBzZXIKICAgICAgIDxlbnRyeT5XYWl0aW5nIHRvIGFjcXVpcmUg YW4gYWR2aXNvcnkgdXNlciBsb2NrLjwvZW50cnk+CiAgICAgIDwvcm93PgogICAgICA8cm93Pgor ICAgICAgPGVudHJ5PjxsaXRlcmFsPmFwcGx5dHJhbnNhY3Rpb248L2xpdGVyYWw+PC9lbnRyeT4K KyAgICAgIDxlbnRyeT5XYWl0aW5nIHRvIGFjcXVpcmUgYSBsb2NrIG9uIGEgcmVtb3RlIHRyYW5z YWN0aW9uIGJlaW5nIGFwcGxpZWQKKyAgICAgIGJ5IGEgbG9naWNhbCByZXBsaWNhdGlvbiBzdWJz Y3JpYmVyLjwvZW50cnk+CisgICAgIDwvcm93PgorICAgICA8cm93PgogICAgICAgPGVudHJ5Pjxs aXRlcmFsPmV4dGVuZDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgPGVudHJ5PldhaXRpbmcgdG8g ZXh0ZW5kIGEgcmVsYXRpb24uPC9lbnRyeT4KICAgICAgPC9yb3c+CmRpZmYgLS1naXQgYS9kb2Mv c3JjL3NnbWwvcHJvdG9jb2wuc2dtbCBiL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sCmluZGV4 IDVmZGQ0MjkuLmM2YTBlODAgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sCkBAIC0zMTAyLDcgKzMxMDIsNyBAQCBw c3FsICJkYm5hbWU9cG9zdGdyZXMgcmVwbGljYXRpb249ZGF0YWJhc2UiIC1jICJJREVOVElGWV9T WVNURU07IgogICAgICA8bGlzdGl0ZW0+CiAgICAgICA8cGFyYT4KICAgICAgICBQcm90b2NvbCB2 ZXJzaW9uLiBDdXJyZW50bHkgdmVyc2lvbnMgPGxpdGVyYWw+MTwvbGl0ZXJhbD4sIDxsaXRlcmFs PjI8L2xpdGVyYWw+LAotICAgICAgIGFuZCA8bGl0ZXJhbD4zPC9saXRlcmFsPiBhcmUgc3VwcG9y dGVkLgorICAgICAgIDxsaXRlcmFsPjM8L2xpdGVyYWw+LCBhbmQgPGxpdGVyYWw+NDwvbGl0ZXJh bD4gYXJlIHN1cHBvcnRlZC4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgogICAgICAgIFZl cnNpb24gPGxpdGVyYWw+MjwvbGl0ZXJhbD4gaXMgc3VwcG9ydGVkIG9ubHkgZm9yIHNlcnZlciB2 ZXJzaW9uIDE0CkBAIC0zMTEyLDYgKzMxMTIsMTEgQEAgcHNxbCAiZGJuYW1lPXBvc3RncmVzIHJl cGxpY2F0aW9uPWRhdGFiYXNlIiAtYyAiSURFTlRJRllfU1lTVEVNOyIKICAgICAgICBWZXJzaW9u IDxsaXRlcmFsPjM8L2xpdGVyYWw+IGlzIHN1cHBvcnRlZCBvbmx5IGZvciBzZXJ2ZXIgdmVyc2lv biAxNQogICAgICAgIGFuZCBhYm92ZSwgYW5kIGl0IGFsbG93cyBzdHJlYW1pbmcgb2YgdHdvLXBo YXNlIGNvbW1pdHMuCiAgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBWZXJzaW9u IDxsaXRlcmFsPjQ8L2xpdGVyYWw+IGlzIHN1cHBvcnRlZCBvbmx5IGZvciBzZXJ2ZXIgdmVyc2lv biAxNgorICAgICAgIGFuZCBhYm92ZSwgYW5kIGl0IGFsbG93cyBzdHJlYW1zIG9mIGxhcmdlIGlu LXByb2dyZXNzIHRyYW5zYWN0aW9ucyB0bworICAgICAgIGJlIGFwcGxpZWQgaW4gcGFyYWxsZWwu CisgICAgICA8L3BhcmE+CiAgICAgIDwvbGlzdGl0ZW0+CiAgICAgPC92YXJsaXN0ZW50cnk+CiAK QEAgLTY4ODIsNiArNjg4NywyOCBAQCBwc3FsICJkYm5hbWU9cG9zdGdyZXMgcmVwbGljYXRpb249 ZGF0YWJhc2UiIC1jICJJREVOVElGWV9TWVNURU07IgogICAgICAgICA8L3BhcmE+CiAgICAgICAg PC9saXN0aXRlbT4KICAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICA8dmFybGlzdGVudHJ5 PgorICAgICAgIDx0ZXJtPkludDY0IChYTG9nUmVjUHRyKTwvdGVybT4KKyAgICAgICA8bGlzdGl0 ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgVGhlIExTTiBvZiB0aGUgYWJvcnQuIFRoaXMg ZmllbGQgaXMgYXZhaWxhYmxlIHNpbmNlIHByb3RvY29sIHZlcnNpb24KKyAgICAgICAgIDQuCisg ICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+ CisKKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgPHRlcm0+SW50NjQgKFRpbWVzdGFtcFR6 KTwvdGVybT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgQWJv cnQgdGltZXN0YW1wIG9mIHRoZSB0cmFuc2FjdGlvbi4gVGhlIHZhbHVlIGlzIGluIG51bWJlcgor ICAgICAgICAgb2YgbWljcm9zZWNvbmRzIHNpbmNlIFBvc3RncmVTUUwgZXBvY2ggKDIwMDAtMDEt MDEpLiBUaGlzIGZpZWxkIGlzCisgICAgICAgICBhdmFpbGFibGUgc2luY2UgcHJvdG9jb2wgdmVy c2lvbiA0LgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFy bGlzdGVudHJ5PgorCiAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgIDwvbGlzdGl0ZW0+CiAgICA8 L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNj cmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwK aW5kZXggZjlhMTc3Ni4uZjE3M2EwOSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2Ny aXB0aW9uLnNnbWwKQEAgLTIyOCwxMyArMjI4LDI5IEBAIENSRUFURSBTVUJTQ1JJUFRJT04gPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN1YnNjcmlwdGlvbl9uYW1lPC9yZXBsYWNlYWJs CiAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAKICAgICAgICA8dmFybGlzdGVudHJ5PgotICAgICAg ICA8dGVybT48bGl0ZXJhbD5zdHJlYW1pbmc8L2xpdGVyYWw+ICg8dHlwZT5ib29sZWFuPC90eXBl Pik8L3Rlcm0+CisgICAgICAgIDx0ZXJtPjxsaXRlcmFsPnN0cmVhbWluZzwvbGl0ZXJhbD4gKDx0 eXBlPmVudW08L3R5cGU+KTwvdGVybT4KICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBh cmE+CiAgICAgICAgICAgU3BlY2lmaWVzIHdoZXRoZXIgdG8gZW5hYmxlIHN0cmVhbWluZyBvZiBp bi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMKLSAgICAgICAgICBmb3IgdGhpcyBzdWJzY3JpcHRpb24u ICBCeSBkZWZhdWx0LCBhbGwgdHJhbnNhY3Rpb25zCi0gICAgICAgICAgYXJlIGZ1bGx5IGRlY29k ZWQgb24gdGhlIHB1Ymxpc2hlciBhbmQgb25seSB0aGVuIHNlbnQgdG8gdGhlCi0gICAgICAgICAg c3Vic2NyaWJlciBhcyBhIHdob2xlLgorICAgICAgICAgIGZvciB0aGlzIHN1YnNjcmlwdGlvbi4g IFRoZSBkZWZhdWx0IHZhbHVlIGlzIDxsaXRlcmFsPm9mZjwvbGl0ZXJhbD4sCisgICAgICAgICAg bWVhbmluZyBhbGwgdHJhbnNhY3Rpb25zIGFyZSBmdWxseSBkZWNvZGVkIG9uIHRoZSBwdWJsaXNo ZXIgYW5kIG9ubHkKKyAgICAgICAgICB0aGVuIHNlbnQgdG8gdGhlIHN1YnNjcmliZXIgYXMgYSB3 aG9sZS4KKyAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgPHBhcmE+CisgICAgICAgICAgSWYg c2V0IHRvIDxsaXRlcmFsPm9uPC9saXRlcmFsPiwgdGhlIGluY29taW5nIGNoYW5nZXMgYXJlIHdy aXR0ZW4gdG8KKyAgICAgICAgICB0ZW1wb3JhcnkgZmlsZXMgYW5kIHRoZW4gYXBwbGllZCBvbmx5 IGFmdGVyIHRoZSB0cmFuc2FjdGlvbiBpcworICAgICAgICAgIGNvbW1pdHRlZCBvbiB0aGUgcHVi bGlzaGVyIGFuZCByZWNlaXZlZCBieSB0aGUgc3Vic2NyaWJlci4KKyAgICAgICAgIDwvcGFyYT4K KworICAgICAgICAgPHBhcmE+CisgICAgICAgICAgSWYgc2V0IHRvIDxsaXRlcmFsPnBhcmFsbGVs PC9saXRlcmFsPiwgaW5jb21pbmcgY2hhbmdlcyBhcmUgZGlyZWN0bHkKKyAgICAgICAgICBhcHBs aWVkIHZpYSBvbmUgb2YgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMsIGlmIGF2YWlsYWJsZS4g SWYgbm8KKyAgICAgICAgICBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaXMgZnJlZSB0byBoYW5kbGUg c3RyZWFtaW5nIHRyYW5zYWN0aW9ucyB0aGVuCisgICAgICAgICAgdGhlIGNoYW5nZXMgYXJlIHdy aXR0ZW4gdG8gdGVtcG9yYXJ5IGZpbGVzIGFuZCBhcHBsaWVkIGFmdGVyIHRoZQorICAgICAgICAg IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4gTm90ZSB0aGF0IGlmIGFuIGVycm9yIGhhcHBlbnMg aW4gYQorICAgICAgICAgIHBhcmFsbGVsIGFwcGx5IHdvcmtlciwgdGhlIGZpbmlzaCBMU04gb2Yg dGhlIHJlbW90ZSB0cmFuc2FjdGlvbgorICAgICAgICAgIG1pZ2h0IG5vdCBiZSByZXBvcnRlZCBp biB0aGUgc2VydmVyIGxvZy4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4K ICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9zeXN0ZW0t dmlld3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbAppbmRleCAxNDNhZTVi Li44NDI4ZWU3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sCkBAIC0xMzc5LDggKzEzNzksOSBAQAog ICAgICAgIDxsaXRlcmFsPnZpcnR1YWx4aWQ8L2xpdGVyYWw+LAogICAgICAgIDxsaXRlcmFsPnNw ZWN0b2tlbjwvbGl0ZXJhbD4sCiAgICAgICAgPGxpdGVyYWw+b2JqZWN0PC9saXRlcmFsPiwKLSAg ICAgICA8bGl0ZXJhbD51c2VybG9jazwvbGl0ZXJhbD4sIG9yCi0gICAgICAgPGxpdGVyYWw+YWR2 aXNvcnk8L2xpdGVyYWw+LgorICAgICAgIDxsaXRlcmFsPnVzZXJsb2NrPC9saXRlcmFsPiwKKyAg ICAgICA8bGl0ZXJhbD5hZHZpc29yeTwvbGl0ZXJhbD4sIG9yCisgICAgICAgPGxpdGVyYWw+YXBw bHl0cmFuc2FjdGlvbjwvbGl0ZXJhbD4uCiAgICAgICAgKFNlZSBhbHNvIDx4cmVmIGxpbmtlbmQ9 IndhaXQtZXZlbnQtbG9jay10YWJsZSIvPi4pCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAg PC9yb3c+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKaW5kZXggODA4NmI4NS4uMDMwYzYzYSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYwpAQCAtMTcxMiw2ICsxNzEyLDcgQEAgUmVjb3Jk VHJhbnNhY3Rpb25BYm9ydChib29sIGlzU3ViWGFjdCkKIAlpbnQJCQluY2hpbGRyZW47CiAJVHJh bnNhY3Rpb25JZCAqY2hpbGRyZW47CiAJVGltZXN0YW1wVHogeGFjdF90aW1lOworCWJvb2wJCXJl cGxvcmlnaW47CiAKIAkvKgogCSAqIElmIHdlIGhhdmVuJ3QgYmVlbiBhc3NpZ25lZCBhbiBYSUQs IG5vYm9keSB3aWxsIGNhcmUgd2hldGhlciB3ZSBhYm9ydGVkCkBAIC0xNzQyLDYgKzE3NDMsMTMg QEAgUmVjb3JkVHJhbnNhY3Rpb25BYm9ydChib29sIGlzU3ViWGFjdCkKIAkJZWxvZyhQQU5JQywg ImNhbm5vdCBhYm9ydCB0cmFuc2FjdGlvbiAldSwgaXQgd2FzIGFscmVhZHkgY29tbWl0dGVkIiwK IAkJCSB4aWQpOwogCisJLyoKKwkgKiBBcmUgd2UgdXNpbmcgdGhlIHJlcGxpY2F0aW9uIG9yaWdp bnMgZmVhdHVyZT8gIE9yLCBpbiBvdGhlciB3b3JkcywgYXJlCisJICogd2UgcmVwbGF5aW5nIHJl bW90ZSBhY3Rpb25zPworCSAqLworCXJlcGxvcmlnaW4gPSAocmVwbG9yaWdpbl9zZXNzaW9uX29y aWdpbiAhPSBJbnZhbGlkUmVwT3JpZ2luSWQgJiYKKwkJCQkgIHJlcGxvcmlnaW5fc2Vzc2lvbl9v cmlnaW4gIT0gRG9Ob3RSZXBsaWNhdGVJZCk7CisKIAkvKiBGZXRjaCB0aGUgZGF0YSB3ZSBuZWVk IGZvciB0aGUgYWJvcnQgcmVjb3JkICovCiAJbnJlbHMgPSBzbWdyR2V0UGVuZGluZ0RlbGV0ZXMo ZmFsc2UsICZyZWxzKTsKIAluY2hpbGRyZW4gPSB4YWN0R2V0Q29tbWl0dGVkQ2hpbGRyZW4oJmNo aWxkcmVuKTsKQEAgLTE3NjUsNiArMTc3MywxMSBAQCBSZWNvcmRUcmFuc2FjdGlvbkFib3J0KGJv b2wgaXNTdWJYYWN0KQogCQkJCQkgICBNeVhhY3RGbGFncywgSW52YWxpZFRyYW5zYWN0aW9uSWQs CiAJCQkJCSAgIE5VTEwpOwogCisJaWYgKHJlcGxvcmlnaW4pCisJCS8qIE1vdmUgTFNOcyBmb3J3 YXJkIGZvciB0aGlzIHJlcGxpY2F0aW9uIG9yaWdpbiAqLworCQlyZXBsb3JpZ2luX3Nlc3Npb25f YWR2YW5jZShyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX2xzbiwKKwkJCQkJCQkJICAgWGFjdExh c3RSZWNFbmQpOworCiAJLyoKIAkgKiBSZXBvcnQgdGhlIGxhdGVzdCBhc3luYyBhYm9ydCBMU04s IHNvIHRoYXQgdGhlIFdBTCB3cml0ZXIga25vd3MgdG8KIAkgKiBmbHVzaCB0aGlzIGFib3J0LiBU aGVyZSdzIG5vdGhpbmcgdG8gYmUgZ2FpbmVkIGJ5IGRlbGF5aW5nIHRoaXMsIHNpbmNlCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKaW5kZXggZDY3MzU1Ny4uMGNlY2JjNyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtODQsNyArODQsNyBA QCB0eXBlZGVmIHN0cnVjdCBTdWJPcHRzCiAJYm9vbAkJY29weV9kYXRhOwogCWJvb2wJCXJlZnJl c2g7CiAJYm9vbAkJYmluYXJ5OwotCWJvb2wJCXN0cmVhbWluZzsKKwljaGFyCQlzdHJlYW1pbmc7 CiAJYm9vbAkJdHdvcGhhc2U7CiAJYm9vbAkJZGlzYWJsZW9uZXJyOwogCWNoYXIJICAgKm9yaWdp bjsKQEAgLTEwMCw3ICsxMDAsNiBAQCBzdGF0aWMgdm9pZCBjaGVja19kdXBsaWNhdGVzX2luX3B1 Ymxpc3QoTGlzdCAqcHVibGlzdCwgRGF0dW0gKmRhdHVtcyk7CiBzdGF0aWMgTGlzdCAqbWVyZ2Vf cHVibGljYXRpb25zKExpc3QgKm9sZHB1Ymxpc3QsIExpc3QgKm5ld3B1Ymxpc3QsIGJvb2wgYWRk cHViLCBjb25zdCBjaGFyICpzdWJuYW1lKTsKIHN0YXRpYyB2b2lkIFJlcG9ydFNsb3RDb25uZWN0 aW9uRXJyb3IoTGlzdCAqcnN0YXRlcywgT2lkIHN1YmlkLCBjaGFyICpzbG90bmFtZSwgY2hhciAq ZXJyKTsKIAotCiAvKgogICogQ29tbW9uIG9wdGlvbiBwYXJzaW5nIGZ1bmN0aW9uIGZvciBDUkVB VEUgYW5kIEFMVEVSIFNVQlNDUklQVElPTiBjb21tYW5kcy4KICAqCkBAIC0xMzgsNyArMTM3LDcg QEAgcGFyc2Vfc3Vic2NyaXB0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpz dG10X29wdGlvbnMsCiAJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJPUFRfQklOQVJZKSkK IAkJb3B0cy0+YmluYXJ5ID0gZmFsc2U7CiAJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJP UFRfU1RSRUFNSU5HKSkKLQkJb3B0cy0+c3RyZWFtaW5nID0gZmFsc2U7CisJCW9wdHMtPnN0cmVh bWluZyA9IExPR0lDQUxSRVBfU1RSRUFNX09GRjsKIAlpZiAoSXNTZXQoc3VwcG9ydGVkX29wdHMs IFNVQk9QVF9UV09QSEFTRV9DT01NSVQpKQogCQlvcHRzLT50d29waGFzZSA9IGZhbHNlOwogCWlm IChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX0RJU0FCTEVfT05fRVJSKSkKQEAgLTI0MSw3 ICsyNDAsNyBAQCBwYXJzZV9zdWJzY3JpcHRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUs IExpc3QgKnN0bXRfb3B0aW9ucywKIAkJCQllcnJvckNvbmZsaWN0aW5nRGVmRWxlbShkZWZlbCwg cHN0YXRlKTsKIAogCQkJb3B0cy0+c3BlY2lmaWVkX29wdHMgfD0gU1VCT1BUX1NUUkVBTUlORzsK LQkJCW9wdHMtPnN0cmVhbWluZyA9IGRlZkdldEJvb2xlYW4oZGVmZWwpOworCQkJb3B0cy0+c3Ry ZWFtaW5nID0gZGVmR2V0U3RyZWFtaW5nTW9kZShkZWZlbCk7CiAJCX0KIAkJZWxzZSBpZiAoc3Ry Y21wKGRlZmVsLT5kZWZuYW1lLCAidHdvX3BoYXNlIikgPT0gMCkKIAkJewpAQCAtNjI5LDcgKzYy OCw3IEBAIENyZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNj cmlwdGlvblN0bXQgKnN0bXQsCiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1Ym93bmVy IC0gMV0gPSBPYmplY3RJZEdldERhdHVtKG93bmVyKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3Jp cHRpb25fc3ViZW5hYmxlZCAtIDFdID0gQm9vbEdldERhdHVtKG9wdHMuZW5hYmxlZCk7CiAJdmFs dWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmJpbmFyeSAtIDFdID0gQm9vbEdldERhdHVtKG9w dHMuYmluYXJ5KTsKLQl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vic3RyZWFtIC0gMV0g PSBCb29sR2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcpOworCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlw dGlvbl9zdWJzdHJlYW0gLSAxXSA9IENoYXJHZXREYXR1bShvcHRzLnN0cmVhbWluZyk7CiAJdmFs dWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnR3b3BoYXNlc3RhdGUgLSAxXSA9CiAJCUNoYXJH ZXREYXR1bShvcHRzLnR3b3BoYXNlID8KIAkJCQkJIExPR0lDQUxSRVBfVFdPUEhBU0VfU1RBVEVf UEVORElORyA6CkBAIC0xMDk4LDcgKzEwOTcsNyBAQCBBbHRlclN1YnNjcmlwdGlvbihQYXJzZVN0 YXRlICpwc3RhdGUsIEFsdGVyU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJCQlpZiAoSXNTZXQo b3B0cy5zcGVjaWZpZWRfb3B0cywgU1VCT1BUX1NUUkVBTUlORykpCiAJCQkJewogCQkJCQl2YWx1 ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vic3RyZWFtIC0gMV0gPQotCQkJCQkJQm9vbEdldERh dHVtKG9wdHMuc3RyZWFtaW5nKTsKKwkJCQkJCUNoYXJHZXREYXR1bShvcHRzLnN0cmVhbWluZyk7 CiAJCQkJCXJlcGxhY2VzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnN0cmVhbSAtIDFdID0gdHJ1 ZTsKIAkJCQl9CiAKQEAgLTIxMjIsMyArMjEyMSw2MCBAQCBtZXJnZV9wdWJsaWNhdGlvbnMoTGlz dCAqb2xkcHVibGlzdCwgTGlzdCAqbmV3cHVibGlzdCwgYm9vbCBhZGRwdWIsIGNvbnN0IGNoYXIg KgogCiAJcmV0dXJuIG9sZHB1Ymxpc3Q7CiB9CisKKy8qCisgKiBFeHRyYWN0IHRoZSBzdHJlYW1p bmcgbW9kZSB2YWx1ZSBmcm9tIGEgRGVmRWxlbS4gIFRoaXMgaXMgbGlrZQorICogZGVmR2V0Qm9v bGVhbigpIGJ1dCBhbHNvIGFjY2VwdHMgdGhlIHNwZWNpYWwgdmFsdWUgb2YgInBhcmFsbGVsIi4K KyAqLworY2hhcgorZGVmR2V0U3RyZWFtaW5nTW9kZShEZWZFbGVtICpkZWYpCit7CisJLyoKKwkg KiBJZiBubyBwYXJhbWV0ZXIgdmFsdWUgZ2l2ZW4sIGFzc3VtZSAidHJ1ZSIgaXMgbWVhbnQuCisJ ICovCisJaWYgKCFkZWYtPmFyZykKKwkJcmV0dXJuIExPR0lDQUxSRVBfU1RSRUFNX09OOworCisJ LyoKKwkgKiBBbGxvdyAwLCAxLCAiZmFsc2UiLCAidHJ1ZSIsICJvZmYiLCAib24iIG9yICJwYXJh bGxlbCIuCisJICovCisJc3dpdGNoIChub2RlVGFnKGRlZi0+YXJnKSkKKwl7CisJCWNhc2UgVF9J bnRlZ2VyOgorCQkJc3dpdGNoIChpbnRWYWwoZGVmLT5hcmcpKQorCQkJeworCQkJCWNhc2UgMDoK KwkJCQkJcmV0dXJuIExPR0lDQUxSRVBfU1RSRUFNX09GRjsKKwkJCQljYXNlIDE6CisJCQkJCXJl dHVybiBMT0dJQ0FMUkVQX1NUUkVBTV9PTjsKKwkJCQlkZWZhdWx0OgorCQkJCQkvKiBvdGhlcndp c2UsIGVycm9yIG91dCBiZWxvdyAqLworCQkJCQlicmVhazsKKwkJCX0KKwkJCWJyZWFrOworCQlk ZWZhdWx0OgorCQkJeworCQkJCWNoYXIJICAgKnN2YWwgPSBkZWZHZXRTdHJpbmcoZGVmKTsKKwor CQkJCS8qCisJCQkJICogVGhlIHNldCBvZiBzdHJpbmdzIGFjY2VwdGVkIGhlcmUgc2hvdWxkIG1h dGNoIHVwIHdpdGggdGhlCisJCQkJICogZ3JhbW1hcidzIG9wdF9ib29sZWFuX29yX3N0cmluZyBw cm9kdWN0aW9uLgorCQkJCSAqLworCQkJCWlmIChwZ19zdHJjYXNlY21wKHN2YWwsICJmYWxzZSIp ID09IDAgfHwKKwkJCQkJcGdfc3RyY2FzZWNtcChzdmFsLCAib2ZmIikgPT0gMCkKKwkJCQkJcmV0 dXJuIExPR0lDQUxSRVBfU1RSRUFNX09GRjsKKwkJCQlpZiAocGdfc3RyY2FzZWNtcChzdmFsLCAi dHJ1ZSIpID09IDAgfHwKKwkJCQkJcGdfc3RyY2FzZWNtcChzdmFsLCAib24iKSA9PSAwKQorCQkJ CQlyZXR1cm4gTE9HSUNBTFJFUF9TVFJFQU1fT047CisJCQkJaWYgKHBnX3N0cmNhc2VjbXAoc3Zh bCwgInBhcmFsbGVsIikgPT0gMCkKKwkJCQkJcmV0dXJuIExPR0lDQUxSRVBfU1RSRUFNX1BBUkFM TEVMOworCQkJfQorCQkJYnJlYWs7CisJfQorCisJZXJlcG9ydChFUlJPUiwKKwkJCShlcnJjb2Rl KEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCSBlcnJtc2coIiVzIHJlcXVpcmVzIGEgQm9vbGVh biB2YWx1ZSBvciBcInBhcmFsbGVsXCIiLAorCQkJCQlkZWYtPmRlZm5hbWUpKSk7CisJcmV0dXJu IExPR0lDQUxSRVBfU1RSRUFNX09GRjsJCS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KK30KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xpYnBxL3BxbXEuYyBiL3NyYy9iYWNrZW5kL2xpYnBxL3Bx bXEuYwppbmRleCA0ZDA0MTVlLi42Mzk4NDVmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9saWJw cS9wcW1xLmMKKysrIGIvc3JjL2JhY2tlbmQvbGlicHEvcHFtcS5jCkBAIC0xMywxMSArMTMsMTMg QEAKIAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKKyNpbmNsdWRlICJhY2Nlc3MvcGFyYWxsZWwu aCIKICNpbmNsdWRlICJsaWJwcS9saWJwcS5oIgogI2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0Lmgi CiAjaW5jbHVkZSAibGlicHEvcHFtcS5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1 ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIKICNp bmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKIApA QCAtMTYyLDkgKzE2NCwxOSBAQCBtcV9wdXRtZXNzYWdlKGNoYXIgbXNndHlwZSwgY29uc3QgY2hh ciAqcywgc2l6ZV90IGxlbikKIAkJcmVzdWx0ID0gc2htX21xX3NlbmR2KHBxX21xX2hhbmRsZSwg aW92LCAyLCB0cnVlLCB0cnVlKTsKIAogCQlpZiAocHFfbXFfcGFyYWxsZWxfbGVhZGVyX3BpZCAh PSAwKQotCQkJU2VuZFByb2NTaWduYWwocHFfbXFfcGFyYWxsZWxfbGVhZGVyX3BpZCwKLQkJCQkJ CSAgIFBST0NTSUdfUEFSQUxMRUxfTUVTU0FHRSwKLQkJCQkJCSAgIHBxX21xX3BhcmFsbGVsX2xl YWRlcl9iYWNrZW5kX2lkKTsKKwkJeworCQkJaWYgKElzTG9naWNhbFBhcmFsbGVsQXBwbHlXb3Jr ZXIoKSkKKwkJCQlTZW5kUHJvY1NpZ25hbChwcV9tcV9wYXJhbGxlbF9sZWFkZXJfcGlkLAorCQkJ CQkJCSAgIFBST0NTSUdfUEFSQUxMRUxfQVBQTFlfTUVTU0FHRSwKKwkJCQkJCQkgICBwcV9tcV9w YXJhbGxlbF9sZWFkZXJfYmFja2VuZF9pZCk7CisJCQllbHNlCisJCQl7CisJCQkJQXNzZXJ0KElz UGFyYWxsZWxXb3JrZXIoKSk7CisJCQkJU2VuZFByb2NTaWduYWwocHFfbXFfcGFyYWxsZWxfbGVh ZGVyX3BpZCwKKwkJCQkJCQkgICBQUk9DU0lHX1BBUkFMTEVMX01FU1NBR0UsCisJCQkJCQkJICAg cHFfbXFfcGFyYWxsZWxfbGVhZGVyX2JhY2tlbmRfaWQpOworCQkJfQorCQl9CiAKIAkJaWYgKHJl c3VsdCAhPSBTSE1fTVFfV09VTERfQkxPQ0spCiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3 b3JrZXIuYwppbmRleCAwZDcyZGUyLi4yZGZhOWFiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9w b3N0bWFzdGVyL2Jnd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtl ci5jCkBAIC0xMjgsNiArMTI4LDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdAogCX0sCiAJewogCQki QXBwbHlXb3JrZXJNYWluIiwgQXBwbHlXb3JrZXJNYWluCisJfSwKKwl7CisJCSJQYXJhbGxlbEFw cGx5V29ya2VyTWFpbiIsIFBhcmFsbGVsQXBwbHlXb3JrZXJNYWluCiAJfQogfTsKIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9pbnRlcnJ1cHQuYyBiL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvaW50ZXJydXB0LmMKaW5kZXggMWFlZDJlMi4uZTY0MDI5ZiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9pbnRlcnJ1cHQuYworKysgYi9zcmMvYmFja2VuZC9wb3N0 bWFzdGVyL2ludGVycnVwdC5jCkBAIC05OCw4ICs5OCw5IEBAIFNpZ25hbEhhbmRsZXJGb3JDcmFz aEV4aXQoU0lHTkFMX0FSR1MpCiAgKiBzaHV0IGRvd24gYW5kIGV4aXQuCiAgKgogICogVHlwaWNh bGx5LCB0aGlzIGhhbmRsZXIgd291bGQgYmUgdXNlZCBmb3IgU0lHVEVSTSwgYnV0IHNvbWUgcHJv Y2Vzc2VzIHVzZQotICogb3RoZXIgc2lnbmFscy4gSW4gcGFydGljdWxhciwgdGhlIGNoZWNrcG9p bnRlciBleGl0cyBvbiBTSUdVU1IyLCBhbmQgdGhlCi0gKiBXQUwgd3JpdGVyIGV4aXRzIG9uIGVp dGhlciBTSUdJTlQgb3IgU0lHVEVSTS4KKyAqIG90aGVyIHNpZ25hbHMuIEluIHBhcnRpY3VsYXIs IHRoZSBjaGVja3BvaW50ZXIgZXhpdHMgb24gU0lHVVNSMiwgYW5kIHRoZSBXQUwKKyAqIHdyaXRl ciBhbmQgdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGV4aXRz IG9uIGVpdGhlcgorICogU0lHSU5UIG9yIFNJR1RFUk0uCiAgKgogICogU2h1dGRvd25SZXF1ZXN0 UGVuZGluZyBzaG91bGQgYmUgY2hlY2tlZCBhdCBhIGNvbnZlbmllbnQgcGxhY2Ugd2l0aGluIHRo ZQogICogbWFpbiBsb29wLCBvciBlbHNlIHRoZSBtYWluIGxvb3Agc2hvdWxkIGNhbGwgSGFuZGxl TWFpbkxvb3BJbnRlcnJ1cHRzLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYwppbmRleCA3ZjY5N2IwLi4y MjVkYTgxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2Vp dmVyL2xpYnBxd2FscmVjZWl2ZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJw cXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYwpAQCAtNDQzLDkgKzQ0Myw5IEBAIGxpYnBx cmN2X3N0YXJ0c3RyZWFtaW5nKFdhbFJlY2VpdmVyQ29ubiAqY29ubiwKIAkJYXBwZW5kU3RyaW5n SW5mbygmY21kLCAicHJvdG9fdmVyc2lvbiAnJXUnIiwKIAkJCQkJCSBvcHRpb25zLT5wcm90by5s b2dpY2FsLnByb3RvX3ZlcnNpb24pOwogCi0JCWlmIChvcHRpb25zLT5wcm90by5sb2dpY2FsLnN0 cmVhbWluZyAmJgotCQkJUFFzZXJ2ZXJWZXJzaW9uKGNvbm4tPnN0cmVhbUNvbm4pID49IDE0MDAw MCkKLQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmNtZCwgIiwgc3RyZWFtaW5nICdvbiciKTsK KwkJaWYgKG9wdGlvbnMtPnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nX3N0cikKKwkJCWFwcGVuZFN0 cmluZ0luZm8oJmNtZCwgIiwgc3RyZWFtaW5nICclcyciLAorCQkJCQkJCSBvcHRpb25zLT5wcm90 by5sb2dpY2FsLnN0cmVhbWluZ19zdHIpOwogCiAJCWlmIChvcHRpb25zLT5wcm90by5sb2dpY2Fs LnR3b3BoYXNlICYmCiAJCQlQUXNlcnZlclZlcnNpb24oY29ubi0+c3RyZWFtQ29ubikgPj0gMTUw MDAwKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmls ZSBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUKaW5kZXggYzRlMmZk ZS4uMmRjMjVlMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9N YWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlCkBA IC0xNSw2ICsxNSw3IEBAIGluY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9i YWwKIG92ZXJyaWRlIENQUEZMQUdTIDo9IC1JJChzcmNkaXIpICQoQ1BQRkxBR1MpCiAKIE9CSlMg PSBcCisJYXBwbHlwYXJhbGxlbHdvcmtlci5vIFwKIAlkZWNvZGUubyBcCiAJbGF1bmNoZXIubyBc CiAJbG9naWNhbC5vIFwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9hcHBseXBhcmFsbGVsd29ya2VyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uMjI0ZDBlZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCkBAIC0wLDAgKzEsMTUyOSBAQAorLyotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKiBhcHBseXBhcmFsbGVsd29ya2VyLmMKKyAqCSAgIFN1cHBvcnQgcm91dGlu ZXMgZm9yIGFwcGx5aW5nIHhhY3QgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyCisgKgorICogQ29w eXJpZ2h0IChjKSAyMDIyLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoK KyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv YXBwbHlwYXJhbGxlbHdvcmtlci5jCisgKgorICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBjb2Rl IHRvIGxhdW5jaCwgc2V0IHVwLCBhbmQgdGVhcmRvd24gYSBwYXJhbGxlbCBhcHBseQorICogd29y a2VyIHdoaWNoIHJlY2VpdmVzIHRoZSBjaGFuZ2VzIGZyb20gdGhlIGxlYWRlciB3b3JrZXIgYW5k IGludm9rZXMgcm91dGluZXMKKyAqIHRvIGFwcGx5IHRob3NlIG9uIHRoZSBzdWJzY3JpYmVyIGRh dGFiYXNlLgorICoKKyAqIFRoaXMgZmlsZSBjb250YWlucyByb3V0aW5lcyB0aGF0IGFyZSBpbnRl bmRlZCB0byBzdXBwb3J0IHNldHRpbmcgdXAsIHVzaW5nCisgKiBhbmQgdGVhcmluZyBkb3duIGEg UGFyYWxsZWxBcHBseVdvcmtlckluZm8gd2hpY2ggaXMgcmVxdWlyZWQgc28gdGhlIGxlYWRlcgor ICogd29ya2VyIGFuZCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGNhbiBjb21tdW5pY2F0ZSB3aXRo IGVhY2ggb3RoZXIuCisgKgorICogVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgYXJlIGFzc2ln bmVkIChpZiBhdmFpbGFibGUpIGFzIHNvb24gYXMgeGFjdCdzCisgKiBmaXJzdCBzdHJlYW0gaXMg cmVjZWl2ZWQgZm9yIHN1YnNjcmlwdGlvbnMgdGhhdCBoYXZlIHNldCB0aGVpciAnc3RyZWFtaW5n JworICogb3B0aW9uIGFzIHBhcmFsbGVsLiBUaGUgbGVhZGVyIGFwcGx5IHdvcmtlciB3aWxsIHNl bmQgY2hhbmdlcyB0byB0aGlzIG5ldworICogd29ya2VyIHZpYSBzaGFyZWQgbWVtb3J5LiBXZSBr ZWVwIHRoaXMgd29ya2VyIGFzc2lnbmVkIHRpbGwgdGhlIHRyYW5zYWN0aW9uCisgKiBjb21taXQg aXMgcmVjZWl2ZWQgYW5kIGFsc28gd2FpdCBmb3IgdGhlIHdvcmtlciB0byBmaW5pc2ggYXQgY29t bWl0LiBUaGlzCisgKiBwcmVzZXJ2ZXMgY29tbWl0IG9yZGVyaW5nIGFuZCBhdm9pZCBmaWxlIEkv TyBpbiBtb3N0IGNhc2VzLCBhbHRob3VnaCB3ZQorICogc3RpbGwgbmVlZCB0byBzcGlsbCB0byBh IGZpbGUgaWYgdGhlcmUgaXMgbm8gd29ya2VyIGF2YWlsYWJsZS4gU2VlIGNvbW1lbnRzCisgKiBh dG9wIGxvZ2ljYWwvd29ya2VyIHRvIGtub3cgbW9yZSBhYm91dCBzdHJlYW1lZCB4YWN0cyB3aG9z ZSBjaGFuZ2VzIGFyZQorICogc3BpbGxlZCB0byBkaXNrLiBJdCBpcyBpbXBvcnRhbnQgdG8gbWFp bnRhaW4gY29tbWl0IG9yZGVyIHRvIGF2b2lkIGZhaWx1cmVzCisgKiBkdWUgdG86IChhKSB0cmFu c2FjdGlvbiBkZXBlbmRlbmNpZXMgLSBzYXkgaWYgd2UgaW5zZXJ0IGEgcm93IGluIHRoZSBmaXJz dAorICogdHJhbnNhY3Rpb24gYW5kIHVwZGF0ZSBpdCBpbiB0aGUgc2Vjb25kIHRyYW5zYWN0aW9u IG9uIHB1Ymxpc2hlciB0aGVuCisgKiBhbGxvd2luZyB0aGUgc3Vic2NyaWJlciB0byBhcHBseSBi b3RoIGluIHBhcmFsbGVsIGNhbiBsZWFkIHRvIGZhaWx1cmUgaW4gdGhlCisgKiB1cGRhdGU7IChi KSBkZWFkbG9ja3MgLSBhbGxvd2luZyB0cmFuc2FjdGlvbnMgdGhhdCB1cGRhdGUgdGhlIHNhbWUg c2V0IG9mCisgKiByb3dzL3RhYmxlcyBpbiB0aGUgb3Bwb3NpdGUgb3JkZXIgdG8gYmUgYXBwbGll ZCBpbiBwYXJhbGxlbCBjYW4gbGVhZCB0bworICogZGVhZGxvY2tzLgorICoKKyAqIEEgd29ya2Vy IHBvb2wgaXMgdXNlZCB0byBhdm9pZCByZXN0YXJ0aW5nIHdvcmtlcnMgZm9yIGVhY2ggc3RyZWFt aW5nCisgKiB0cmFuc2FjdGlvbi4gV2UgbWFpbnRhaW4gZWFjaCB3b3JrZXIncyBpbmZvcm1hdGlv biAoUGFyYWxsZWxBcHBseVdvcmtlckluZm8pCisgKiBpbiB0aGUgUGFyYWxsZWxBcHBseVdvcmtl clBvb2wuIEFmdGVyIHN1Y2Nlc3NmdWxseSBsYXVuY2hpbmcgYSBuZXcgd29ya2VyLAorICogaXRz IGluZm9ybWF0aW9uIGlzIGFkZGVkIHRvIHRoZSBQYXJhbGxlbEFwcGx5V29ya2VyUG9vbC4gT25j ZSB0aGUgd29ya2VyCisgKiBmaW5pc2hlcyBhcHBseWluZyB0aGUgdHJhbnNhY3Rpb24sIGl0IGlz IG1hcmtlZCBhcyBhdmFpbGFibGUgZm9yIHJlLXVzZS4KKyAqIE5vdywgYmVmb3JlIHN0YXJ0aW5n IGEgbmV3IHdvcmtlciB0byBhcHBseSB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLCB3ZQorICog Y2hlY2sgdGhlIGxpc3QgZm9yIGFueSBhdmFpbGFibGUgd29ya2VyLiBOb3RlIHRoYXQgd2UgcmV0 YWluIGEgbWF4aW11bSBvZgorICogaGFsZiB0aGUgbWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNf cGVyX3N1YnNjcmlwdGlvbiB3b3JrZXJzIGluIHRoZSBwb29sIGFuZAorICogYWZ0ZXIgdGhhdCwg d2Ugc2ltcGx5IGV4aXQgdGhlIHdvcmtlciBhZnRlciBhcHBseWluZyB0aGUgdHJhbnNhY3Rpb24u CisgKgorICogWFhYIFRoaXMgd29ya2VyIHBvb2wgdGhyZXNob2xkIGlzIGFyYml0cmFyeSBhbmQg d2UgY2FuIHByb3ZpZGUgYSBHVUMKKyAqIHZhcmlhYmxlIGZvciB0aGlzIGluIHRoZSBmdXR1cmUg aWYgcmVxdWlyZWQuCisgKgorICogVGhlIGxlYWRlciBhcHBseSB3b3JrZXIgd2lsbCBjcmVhdGUg YSBzZXBhcmF0ZSBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudAorICogd2hlbiBlYWNoIHBh cmFsbGVsIGFwcGx5IHdvcmtlciBzdGFydHMuIFRoZSByZWFzb24gZm9yIHRoaXMgZGVzaWduIGlz IHRoYXQKKyAqIHdlIGNhbm5vdCBwcmVkaWN0IGhvdyBtYW55IHdvcmtlcnMgd2lsbCBiZSBuZWVk ZWQuIEl0IG1heSBiZSBwb3NzaWJsZSB0bworICogYWxsb2NhdGUgZW5vdWdoIHNoYXJlZCBtZW1v cnkgaW4gb25lIHNlZ21lbnQgYmFzZWQgb24gdGhlIG1heGltdW0gbnVtYmVyIG9mCisgKiBwYXJh bGxlbCBhcHBseSB3b3JrZXJzIChtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2Ny aXB0aW9uKSwgYnV0CisgKiB0aGlzIHdvdWxkIHdhc3RlIG1lbW9yeSBpZiBubyBwcm9jZXNzIGlz IGFjdHVhbGx5IHN0YXJ0ZWQuCisgKgorICogVGhlIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdt ZW50IGNvbnRhaW5zOiAoYSkgYSBzaG1fbXEgdGhhdCBpcyB1c2VkIHRvCisgKiBzZW5kIGNoYW5n ZXMgaW4gdGhlIHRyYW5zYWN0aW9uIGZyb20gbGVhZGVyIGFwcGx5IHdvcmtlciB0byBwYXJhbGxl bCBhcHBseQorICogd29ya2VyOyAoYikgYW5vdGhlciBzaG1fbXEgdGhhdCBpcyB1c2VkIHRvIHNl bmQgZXJyb3JzIChhbmQgb3RoZXIgbWVzc2FnZXMKKyAqIHJlcG9ydGVkIHZpYSBlbG9nL2VyZXBv cnQpIGZyb20gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB0byBsZWFkZXIgYXBwbHkKKyAqIHdv cmtlcjsgKGMpIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiB0byBiZSBzaGFyZWQgYW1vbmcgcGFyYWxs ZWwgYXBwbHkgd29ya2VycworICogYW5kIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIChpLmUuIG1l bWJlcnMgb2YgUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCkuCisgKgorICogTG9ja2luZyBDb25z aWRlcmF0aW9ucworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogU2luY2UgdGhlIGRhdGFi YXNlIHN0cnVjdHVyZSAoc2NoZW1hIG9mIHN1YnNjcmlwdGlvbiB0YWJsZXMsIGNvbnN0cmFpbnRz LAorICogZXRjLikgb2YgdGhlIHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJlciBjb3VsZCBiZSBkaWZm ZXJlbnQsIGFwcGx5aW5nCisgKiB0cmFuc2FjdGlvbnMgaW4gcGFyYWxsZWwgbW9kZSBvbiB0aGUg c3Vic2NyaWJlciBzaWRlIGNhbiBjYXVzZSBzb21lCisgKiBkZWFkbG9ja3MgdGhhdCBkbyBub3Qg b2NjdXIgb24gdGhlIHB1Ymxpc2hlciBzaWRlLiBUaGlzIGNhbiBoYXBwZW4gZXZlbgorICogd2l0 aG91dCBwYXJhbGxlbCBtb2RlIHdoZW4gdGhlcmUgYXJlIGNvbmN1cnJlbnQgb3BlcmF0aW9ucyBv biB0aGUKKyAqIHN1YnNjcmliZXIuIEluIG9yZGVyIHRvIGRldGVjdCB0aGUgZGVhZGxvY2tzIGFt b25nIGxlYWRlciBhbmQgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlcnMsIHdlIG5lZWQgdG8gZW5z dXJlIHRoYXQgd2Ugd2FpdCB1c2luZyBsbWdyIGxvY2tzLiBBbiBhbHRlcm5hdGl2ZQorICogYXBw cm9hY2ggY291bGQgYmUgdG8gbm90IGFsbG93IHBhcmFsbGVsaXNtIHdoZW4gdGhlIHNjaGVtYSBv ZiB0YWJsZXMgaXMKKyAqIGRpZmZlcmVudCBiZXR3ZWVuIHRoZSBwdWJsaXNoZXIgYW5kIHN1YnNj cmliZXIgYnV0IHRoYXQgd291bGQgYmUgdG9vCisgKiByZXN0cmljdGl2ZSBhbmQgd291bGQgcmVx dWlyZSB0aGUgcHVibGlzaGVyIHRvIHNlbmQgbXVjaCBtb3JlIGluZm9ybWF0aW9uCisgKiB0aGFu IGl0IGlzIGN1cnJlbnRseSBzZW5kaW5nLgorICoKKyAqIENvbnNpZGVyIGEgY2FzZSB3aGVyZSB0 aGUgc3Vic2NyaWJlZCB0YWJsZSBkb2VzIG5vdCBoYXZlIGEgdW5pcXVlIGtleSBvbiB0aGUKKyAq IHB1Ymxpc2hlciBhbmQgaGFzIGEgdW5pcXVlIGtleSBvbiB0aGUgc3Vic2NyaWJlci4KKyAqCisg KiAxKSBEZWFkbG9jayBiZXR3ZWVuIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBhIHBhcmFs bGVsIGFwcGx5IHdvcmtlcgorICoKKyAqIFRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgKFBBKSBp cyBleGVjdXRpbmcgVFgtMSBhbmQgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIKKyAqIChMQSkgaXMg ZXhlY3V0aW5nIFRYLTIgY29uY3VycmVudGx5IG9uIHRoZSBzdWJzY3JpYmVyLiBOb3csIExBIGlz IHdhaXRpbmcKKyAqIGZvciBQQSBiZWNhdXNlIG9mIHRoZSB1bmlxdWUga2V5IG9mIHRoZSBzdWJz Y3JpYmVkIHRhYmxlIHdoaWxlIFBBIGlzIHdhaXRpbmcKKyAqIGZvciBMQSB0byBzZW5kIHRoZSBu ZXh0IHN0cmVhbSBvZiBjaGFuZ2VzIG9yIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kCisgKiBt ZXNzYWdlLgorICoKKyAqIEluIG9yZGVyIGZvciBsbWdyIHRvIGRldGVjdCB0aGlzLCB3ZSBoYXZl IExBIGFjcXVpcmUgYSBzZXNzaW9uIGxvY2sgb24gdGhlCisgKiByZW1vdGUgdHJhbnNhY3Rpb24g KGJ5IHBhX2xvY2tfc3RyZWFtKCkpIGFuZCBoYXZlIFBBIHdhaXQgb24gdGhlIGxvY2sgYmVmb3Jl CisgKiB0cnlpbmcgdG8gcmVjZWl2ZSB0aGUgbmV4dCBzdHJlYW0gb2YgY2hhbmdlcy4gU3BlY2lm aWNhbGx5LCBMQSB3aWxsIGFjcXVpcmUKKyAqIHRoZSBsb2NrIGJlZm9yZSBzZW5kaW5nIHRoZSBT VFJFQU1fU1RPUCBhbmQgd2lsbCByZWxlYXNlIGl0IGlmIGFscmVhZHkKKyAqIGFjcXVpcmVkIGJl Zm9yZSBzZW5kaW5nIHRoZSBTVFJFQU1fU1RBUlQsIFNUUkVBTV9BQk9SVCAoZm9yIHRvcGxldmVs CisgKiB0cmFuc2FjdGlvbiksIFNUUkVBTV9QUkVQQVJFLCBhbmQgU1RSRUFNX0NPTU1JVC4gVGhl IFBBIHdpbGwgYWNxdWlyZSB0aGUKKyAqIGxvY2sgYWZ0ZXIgcHJvY2Vzc2luZyBTVFJFQU1fU1RP UCBhbmQgU1RSRUFNX0FCT1JUIChmb3Igc3VidHJhbnNhY3Rpb24pIGFuZAorICogdGhlbiByZWxl YXNlIHRoZSBsb2NrIGltbWVkaWF0ZWx5IGFmdGVyIGFjcXVpcmluZyBpdC4KKyAqCisgKiBUaGUg bG9jayBncmFwaCBmb3IgdGhlIGFib3ZlIGV4YW1wbGUgd2lsbCBsb29rIGFzIGZvbGxvd3M6Cisg KiBMQSAod2FpdGluZyB0byBhY3F1aXJlIHRoZSBsb2NrIG9uIHRoZSB1bmlxdWUgaW5kZXgpIC0+ IFBBICh3YWl0aW5nIHRvCisgKiBhY3F1aXJlIHRoZSBzdHJlYW0gbG9jaykgLT4gTEEKKyAqCisg KiBUaGlzIHdheSwgd2hlbiBQQSBpcyB3YWl0aW5nIGZvciBMQSBmb3IgdGhlIG5leHQgc3RyZWFt IG9mIGNoYW5nZXMsIHdlIGNhbgorICogaGF2ZSBhIHdhaXQtZWRnZSBmcm9tIFBBIHRvIExBIGlu IGxtZ3IsIHdoaWNoIHdpbGwgbWFrZSB1cyBkZXRlY3QgdGhlCisgKiBkZWFkbG9jayBiZXR3ZWVu IExBIGFuZCBQQS4KKyAqCisgKiAyKSBEZWFkbG9jayBiZXR3ZWVuIHRoZSBsZWFkZXIgYXBwbHkg d29ya2VyIGFuZCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzCisgKgorICogVGhpcyBzY2VuYXJpbyBp cyBzaW1pbGFyIHRvIHRoZSBmaXJzdCBjYXNlIGJ1dCBUWC0xIGFuZCBUWC0yIGFyZSBleGVjdXRl ZCBieQorICogdHdvIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgKFBBLTEgYW5kIFBBLTIgcmVzcGVj dGl2ZWx5KS4gSW4gdGhpcyBzY2VuYXJpbywKKyAqIFBBLTIgaXMgd2FpdGluZyBmb3IgUEEtMSB0 byBjb21wbGV0ZSBpdHMgdHJhbnNhY3Rpb24gd2hpbGUgUEEtMSBpcyB3YWl0aW5nCisgKiBmb3Ig c3Vic2VxdWVudCBpbnB1dCBmcm9tIExBLiBBbHNvLCBMQSBpcyB3YWl0aW5nIGZvciBQQS0yIHRv IGNvbXBsZXRlIGl0cworICogdHJhbnNhY3Rpb24gaW4gb3JkZXIgdG8gcHJlc2VydmUgdGhlIGNv bW1pdCBvcmRlci4gVGhlcmUgaXMgYSBkZWFkbG9jayBhbW9uZworICogdGhlIHRocmVlIHByb2Nl c3Nlcy4KKyAqCisgKiBJbiBvcmRlciBmb3IgbG1nciB0byBkZXRlY3QgdGhpcywgd2UgaGF2ZSBQ QSBhY3F1aXJlIGEgc2Vzc2lvbiBsb2NrICh0aGlzIGlzCisgKiBhIGRpZmZlcmVudCBsb2NrIHRo YW4gcmVmZXJyZWQgaW4gcHJldmlvdXMgY2FzZSwgc2VlCisgKiBwYV9sb2NrX3RyYW5zYWN0aW9u KCkpIG9uIHRoZSB0cmFuc2FjdGlvbiBiZWluZyBhcHBsaWVkIGFuZCBoYXZlIExBIHdhaXQgb24K KyAqIHRoZSBsb2NrIGJlZm9yZSBwcm9jZWVkaW5nIGluIHRoZSB0cmFuc2FjdGlvbiBmaW5pc2gg Y29tbWFuZHMuIFNwZWNpZmljYWxseSwKKyAqIFBBIHdpbGwgYWNxdWlyZSB0aGlzIGxvY2sgaW4g U2hhcmUgbW9kZSBiZWZvcmUgZXhlY3V0aW5nIHRoZSBmaXJzdCBtZXNzYWdlCisgKiBvZiB0aGUg dHJhbnNhY3Rpb24gYW5kIHJlbGVhc2UgaXQgYXQgdGhlIHhhY3QgZW5kLiBMQSB3aWxsIGFjcXVp cmUgdGhpcyBsb2NrCisgKiBpbiBBY2Nlc3NFeGNsdXNpdmUgbW9kZSBhdCB0cmFuc2FjdGlvbiBm aW5pc2ggY29tbWFuZHMgKFNUUkVBTV9DT01NSVQgYW5kCisgKiBTVFJFQU1fUFJFUEFSRSkgYW5k IHJlbGVhc2UgaXQgaW1tZWRpYXRlbHkuCisgKgorICogVGhlIGxvY2sgZ3JhcGggZm9yIHRoZSBh Ym92ZSBleGFtcGxlIHdpbGwgbG9vayBhcyBmb2xsb3dzOgorICogTEEgKHdhaXRpbmcgdG8gYWNx dWlyZSB0aGUgdHJhbnNhY3Rpb24gbG9jaykgLT4gUEEtMiAod2FpdGluZyB0byBhY3F1aXJlIHRo ZQorICogbG9jayBkdWUgdG8gdW5pcXVlIGluZGV4IGNvbnN0cmFpbnQpIC0+IFBBLTEgKHdhaXRp bmcgdG8gYWNxdWlyZSB0aGUgc3RyZWFtCisgKiBsb2NrKSAtPiBMQQorICoKKyAqIFRoaXMgd2F5 IHdoZW4gTEEgaXMgd2FpdGluZyB0byBmaW5pc2ggdGhlIHRyYW5zYWN0aW9uIGVuZCBjb21tYW5k IHRvIHByZXNlcnZlCisgKiB0aGUgY29tbWl0IG9yZGVyLCB3ZSB3aWxsIGJlIGFibGUgdG8gZGV0 ZWN0IGRlYWRsb2NrLCBpZiBhbnkuCisgKgorICogT25lIG1pZ2h0IHRoaW5rIHdlIGNhbiB1c2Ug WGFjdExvY2tUYWJsZVdhaXQoKSwgYnV0IFhhY3RMb2NrVGFibGVXYWl0KCkKKyAqIGNvbnNpZGVy cyBQUkVQQVJFRCBUUkFOU0FDVElPTiBhcyBzdGlsbCBpbiBwcm9ncmVzcyB3aGljaCBtZWFucyB0 aGUgbG9jaworICogd29uJ3QgYmUgcmVsZWFzZWQgZXZlbiBhZnRlciB0aGUgcGFyYWxsZWwgYXBw bHkgd29ya2VyIGhhcyBwcmVwYXJlZCB0aGUKKyAqIHRyYW5zYWN0aW9uLgorICoKKyAqIDMpIERl YWRsb2NrIHdoZW4gdGhlIHNobV9tcSBidWZmZXIgaXMgZnVsbAorICoKKyAqIEluIHRoZSBwcmV2 aW91cyBzY2VuYXJpbyAoaWUuIFBBLTEgYW5kIFBBLTIgYXJlIGV4ZWN1dGluZyB0cmFuc2FjdGlv bnMKKyAqIGNvbmN1cnJlbnRseSksIGlmIHRoZSBzaG1fbXEgYnVmZmVyIGJldHdlZW4gTEEgYW5k IFBBLTIgaXMgZnVsbCwgTEEgaGFzIHRvCisgKiB3YWl0IHRvIHNlbmQgbWVzc2FnZXMsIGFuZCB0 aGlzIHdhaXQgZG9lc24ndCBhcHBlYXIgaW4gbG1nci4KKyAqCisgKiBUbyByZXNvbHZlIHRoaXMg aXNzdWUsIHdlIHVzZSBub24tYmxvY2tpbmcgd3JpdGUgYW5kIHdhaXQgd2l0aCBhIHRpbWVvdXQu IElmCisgKiB0aGUgdGltZW91dCBpcyBleGNlZWRlZCwgdGhlIExBIHJlcG9ydHMgYW4gZXJyb3Ig YW5kIHJlc3RhcnRzIGxvZ2ljYWwKKyAqIHJlcGxpY2F0aW9uLgorICoKKyAqIDQpIExvY2sgdHlw ZXMKKyAqCisgKiBCb3RoIHRoZSBzdHJlYW0gbG9jayBhbmQgdGhlIHRyYW5zYWN0aW9uIGxvY2sg bWVudGlvbmVkIGFib3ZlIGFyZQorICogc2Vzc2lvbi1sZXZlbCBsb2NrcyBiZWNhdXNlIGJvdGgg bG9ja3MgY291bGQgYmUgYWNxdWlyZWQgb3V0c2lkZSB0aGUKKyAqIHRyYW5zYWN0aW9uLCBhbmQg dGhlIHN0cmVhbSBsb2NrIGluIHRoZSBsZWFkZXIgbmVlZHMgdG8gcGVyc2lzdCBhY3Jvc3MKKyAq IHRyYW5zYWN0aW9uIGJvdW5kYXJpZXMgaS5lLiB1bnRpbCB0aGUgZW5kIG9mIHRoZSBzdHJlYW1p bmcgdHJhbnNhY3Rpb24uCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSAicG9z dGdyZXMuaCIKKworI2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0LmgiCisjaW5jbHVkZSAibGlicHEv cHFtcS5oIgorI2luY2x1ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJy dXB0LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmgiCisjaW5jbHVk ZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL29y aWdpbi5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIgorI2luY2x1 ZGUgInN0b3JhZ2UvaXBjLmgiCisjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCisjaW5jbHVkZSAi dGNvcC90Y29wcHJvdC5oIgorI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCisjaW5jbHVkZSAidXRp bHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgorCisjZGVmaW5lIFBH X0xPR0lDQUxfQVBQTFlfU0hNX01BR0lDIDB4Nzg3Y2EwNjcKKworLyoKKyAqIERTTSBrZXlzIGZv ciBwYXJhbGxlbCBhcHBseSB3b3JrZXIuICBVbmxpa2Ugb3RoZXIgcGFyYWxsZWwgZXhlY3V0aW9u IGNvZGUsCisgKiBzaW5jZSB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IERTTSBrZXlzIGNv bmZsaWN0aW5nIHdpdGggcGxhbl9ub2RlX2lkIHdlCisgKiBjYW4gdXNlIHNtYWxsIGludGVnZXJz LgorICovCisjZGVmaW5lIFBBUkFMTEVMX0FQUExZX0tFWV9TSEFSRUQJCTEKKyNkZWZpbmUgUEFS QUxMRUxfQVBQTFlfS0VZX01RCQkJMgorI2RlZmluZSBQQVJBTExFTF9BUFBMWV9LRVlfRVJST1Jf UVVFVUUJMworCisvKiBRdWV1ZSBzaXplIG9mIERTTSwgMTYgTUIgZm9yIG5vdy4gKi8KKyNkZWZp bmUgRFNNX1FVRVVFX1NJWkUJKDE2ICogMTAyNCAqIDEwMjQpCisKKy8qCisgKiBFcnJvciBxdWV1 ZSBzaXplIG9mIERTTS4gSXQgaXMgZGVzaXJhYmxlIHRvIG1ha2UgaXQgbGFyZ2UgZW5vdWdoIHRo YXQgYQorICogdHlwaWNhbCBFcnJvclJlc3BvbnNlIGNhbiBiZSBzZW50IHdpdGhvdXQgYmxvY2tp bmcuICBUaGF0IHdheSwgYSB3b3JrZXIgdGhhdAorICogZXJyb3JzIG91dCBjYW4gd3JpdGUgdGhl IHdob2xlIG1lc3NhZ2UgaW50byB0aGUgcXVldWUgYW5kIHRlcm1pbmF0ZSB3aXRob3V0CisgKiB3 YWl0aW5nIGZvciB0aGUgdXNlciBiYWNrZW5kLgorICovCisjZGVmaW5lIERTTV9FUlJPUl9RVUVV RV9TSVpFCQkJKDE2ICogMTAyNCkKKworLyoKKyAqIFRoZXJlIGFyZSB0aHJlZSBmaWVsZHMgaW4g ZWFjaCBtZXNzYWdlIHJlY2VpdmVkIGJ5IHRoZSBwYXJhbGxlbCBhcHBseQorICogd29ya2VyOiBz dGFydF9sc24sIGVuZF9sc24gYW5kIHNlbmRfdGltZS4gQmVjYXVzZSB3ZSBoYXZlIHVwZGF0ZWQg dGhlc2UKKyAqIHN0YXRpc3RpY3MgaW4gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIsIHdlIGNhbiBp Z25vcmUgdGhlc2UgZmllbGRzIGluIHRoZQorICogcGFyYWxsZWwgYXBwbHkgd29ya2VyIChzZWUg ZnVuY3Rpb24gTG9naWNhbFJlcEFwcGx5TG9vcCkuCisgKi8KKyNkZWZpbmUgU0laRV9TVEFUU19N RVNTQUdFICgyICogc2l6ZW9mKFhMb2dSZWNQdHIpICsgc2l6ZW9mKFRpbWVzdGFtcFR6KSkKKwor LyoKKyAqIFRoZSB0eXBlIG9mIHNlc3Npb24tbGV2ZWwgbG9jayBvbiBhIHRyYW5zYWN0aW9uIGJl aW5nIGFwcGxpZWQgb24gYSBsb2dpY2FsCisgKiByZXBsaWNhdGlvbiBzdWJzY3JpYmVyLgorICov CisjZGVmaW5lIFBBUkFMTEVMX0FQUExZX0xPQ0tfU1RSRUFNCTAKKyNkZWZpbmUgUEFSQUxMRUxf QVBQTFlfTE9DS19YQUNUCTEKKworLyoKKyAqIEhhc2ggdGFibGUgZW50cnkgdG8gbWFwIHhpZCB0 byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHN0YXRlLgorICovCit0eXBlZGVmIHN0cnVjdCBQ YXJhbGxlbEFwcGx5V29ya2VyRW50cnkKK3sKKwlUcmFuc2FjdGlvbklkIHhpZDsJCQkvKiBIYXNo IGtleSAtLSBtdXN0IGJlIGZpcnN0ICovCisJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZv OworfSBQYXJhbGxlbEFwcGx5V29ya2VyRW50cnk7CisKKy8qCisgKiBBIGhhc2ggdGFibGUgdXNl ZCB0byBjYWNoZSB0aGUgc3RhdGUgb2Ygc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyBiZWluZyBhcHBs aWVkCisgKiBieSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4KKyAqLworc3RhdGljIEhUQUIg KlBhcmFsbGVsQXBwbHlUeG5IYXNoID0gTlVMTDsKKworLyoKKyogQSBsaXN0IChwb29sKSBvZiBh Y3RpdmUgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4gVGhlIGluZm9ybWF0aW9uIGZvcgorKiB0aGUg bmV3IHdvcmtlciBpcyBhZGRlZCB0byB0aGUgbGlzdCBhZnRlciBzdWNjZXNzZnVsbHkgbGF1bmNo aW5nIGl0LiBUaGUKKyogbGlzdCBlbnRyeSBpcyByZW1vdmVkIGlmIHRoZXJlIGFyZSBhbHJlYWR5 IGVub3VnaCB3b3JrZXJzIGluIHRoZSB3b3JrZXIKKyogcG9vbCBlaXRoZXIgYXQgdGhlIGVuZCBv ZiB0aGUgdHJhbnNhY3Rpb24gb3Igd2hpbGUgdHJ5aW5nIHRvIGZpbmQgYSBmcmVlCisqIHdvcmtl ciBmb3IgYXBwbHlpbmcgdGhlIHRyYW5zYWN0aW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91 dCB0aGUgd29ya2VyCisqIHBvb2wsIHNlZSBjb21tZW50cyBhdG9wIHRoaXMgZmlsZS4KKyAqLwor c3RhdGljIExpc3QgKlBhcmFsbGVsQXBwbHlXb3JrZXJQb29sID0gTklMOworCisvKgorICogSW5m b3JtYXRpb24gc2hhcmVkIGJldHdlZW4gbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgcGFyYWxsZWwg YXBwbHkgd29ya2VyLgorICovCitQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICpNeVBhcmFsbGVs U2hhcmVkID0gTlVMTDsKKworLyoKKyAqIElzIHRoZXJlIGEgbWVzc2FnZSBzZW50IGJ5IGEgcGFy YWxsZWwgYXBwbHkgd29ya2VyIHRoYXQgdGhlIGxlYWRlciBhcHBseQorICogd29ya2VyIG5lZWRz IHRvIHJlY2VpdmU/CisgKi8KK3ZvbGF0aWxlIHNpZ19hdG9taWNfdCBQYXJhbGxlbEFwcGx5TWVz c2FnZVBlbmRpbmcgPSBmYWxzZTsKKworLyoKKyAqIENhY2hlIHRoZSBwYXJhbGxlbCBhcHBseSB3 b3JrZXIgaW5mb3JtYXRpb24gcmVxdWlyZWQgZm9yIGFwcGx5aW5nIHRoZQorICogY3VycmVudCBz dHJlYW1pbmcgdHJhbnNhY3Rpb24uIEl0IGlzIHVzZWQgdG8gc2F2ZSB0aGUgY29zdCBvZiBzZWFy Y2hpbmcgdGhlCisgKiBoYXNoIHRhYmxlIHdoZW4gYXBwbHlpbmcgdGhlIGNoYW5nZXMgYmV0d2Vl biBTVFJFQU1fU1RBUlQgYW5kIFNUUkVBTV9TVE9QLgorICovCitzdGF0aWMgUGFyYWxsZWxBcHBs eVdvcmtlckluZm8gKnN0cmVhbV9hcHBseV93b3JrZXIgPSBOVUxMOworCisvKiBBIGxpc3QgdG8g bWFpbnRhaW4gc3VidHJhbnNhY3Rpb25zLCBpZiBhbnkuICovCitzdGF0aWMgTGlzdAkgICAqc3Vi eGFjdGxpc3QgPSBOSUw7CisKK3N0YXRpYyB2b2lkIHBhX2ZyZWVfd29ya2VyX2luZm8oUGFyYWxs ZWxBcHBseVdvcmtlckluZm8gKndpbmZvKTsKK3N0YXRpYyBQYXJhbGxlbFRyYW5zU3RhdGUgcGFf Z2V0X3hhY3Rfc3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqd3NoYXJlZCk7CisKKy8q CisgKiBSZXR1cm5zIHRydWUgaWYgaXQgaXMgT0sgdG8gc3RhcnQgYSBwYXJhbGxlbCBhcHBseSB3 b3JrZXIsIGZhbHNlIG90aGVyd2lzZS4KKyAqLworc3RhdGljIGJvb2wKK3BhX2Nhbl9zdGFydChU cmFuc2FjdGlvbklkIHhpZCkKK3sKKwlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSk7 CisKKwkvKgorCSAqIERvbid0IHN0YXJ0IGEgbmV3IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpZiB0 aGUgc3Vic2NyaXB0aW9uIGlzIG5vdAorCSAqIHVzaW5nIHBhcmFsbGVsIHN0cmVhbWluZyBtb2Rl LCBvciBpZiB0aGUgcHVibGlzaGVyIGRvZXMgbm90IHN1cHBvcnQKKwkgKiBwYXJhbGxlbCBhcHBs eS4KKwkgKi8KKwlpZiAoIU15TG9naWNhbFJlcFdvcmtlci0+cGFyYWxsZWxfYXBwbHkpCisJCXJl dHVybiBmYWxzZTsKKworCS8qIE9ubHkgbGVhZGVyIGFwcGx5IHdvcmtlcnMgY2FuIHN0YXJ0IHBh cmFsbGVsIGFwcGx5IHdvcmtlcnMuICovCisJaWYgKCFhbV9sZWFkZXJfYXBwbHlfd29ya2VyKCkp CisJCXJldHVybiBmYWxzZTsKKworCS8qCisJICogRG9uJ3Qgc3RhcnQgYSBuZXcgcGFyYWxsZWwg d29ya2VyIGlmIHVzZXIgaGFzIHNldCBza2lwbHNuIGFzIGl0J3MKKwkgKiBwb3NzaWJsZSB0aGF0 IHVzZXIgd2FudCB0byBza2lwIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uIEZvciBzdHJlYW1p bmcKKwkgKiB0cmFuc2FjdGlvbiwgd2UgbmVlZCB0byBzZXJpYWxpemUgdGhlIHRyYW5zYWN0aW9u IHRvIGEgZmlsZSBzbyB0aGF0IHdlCisJICogY2FuIGdldCB0aGUgbGFzdCBMU04gb2YgdGhlIHRy YW5zYWN0aW9uIHRvIGp1ZGdlIHdoZXRoZXIgdG8gc2tpcCBiZWZvcmUKKwkgKiBzdGFydGluZyB0 byBhcHBseSB0aGUgY2hhbmdlLgorCSAqLworCWlmICghWExvZ1JlY1B0cklzSW52YWxpZChNeVN1 YnNjcmlwdGlvbi0+c2tpcGxzbikpCisJCXJldHVybiBmYWxzZTsKKworCS8qCisJICogRm9yIHN0 cmVhbWluZyB0cmFuc2FjdGlvbnMgdGhhdCBhcmUgYmVpbmcgYXBwbGllZCB1c2luZyBhIHBhcmFs bGVsCisJICogYXBwbHkgd29ya2VyLCB3ZSBjYW5ub3QgZGVjaWRlIHdoZXRoZXIgdG8gYXBwbHkg dGhlIGNoYW5nZSBmb3IgYQorCSAqIHJlbGF0aW9uIHRoYXQgaXMgbm90IGluIHRoZSBSRUFEWSBz dGF0ZSAoc2VlCisJICogc2hvdWxkX2FwcGx5X2NoYW5nZXNfZm9yX3JlbCkgYXMgd2Ugd29uJ3Qg a25vdyByZW1vdGVfZmluYWxfbHNuIGJ5IHRoYXQKKwkgKiB0aW1lLiBTbywgd2UgZG9uJ3Qgc3Rh cnQgdGhlIG5ldyBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaW4gdGhpcyBjYXNlLgorCSAqLworCWlm ICghQWxsVGFibGVzeW5jc1JlYWR5KCkpCisJCXJldHVybiBmYWxzZTsKKworCXJldHVybiB0cnVl OworfQorCisvKgorICogU2V0IHVwIGEgZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNlZ21lbnQuCisg KgorICogV2Ugc2V0IHVwIGEgY29udHJvbCByZWdpb24gdGhhdCBjb250YWlucyBhIGZpeGVkLXNp emUgd29ya2VyIGluZm8KKyAqIChQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkKSwgYSBtZXNzYWdl IHF1ZXVlLCBhbmQgYW4gZXJyb3IgcXVldWUuCisgKgorICogUmV0dXJucyB0cnVlIG9uIHN1Y2Nl c3MsIGZhbHNlIG9uIGZhaWx1cmUuCisgKi8KK3N0YXRpYyBib29sCitwYV9zZXR1cF9kc20oUGFy YWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKQoreworCXNobV90b2NfZXN0aW1hdG9yIGU7CisJ U2l6ZQkJc2Vnc2l6ZTsKKwlkc21fc2VnbWVudCAqc2VnOworCXNobV90b2MgICAgKnRvYzsKKwlQ YXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICpzaGFyZWQ7CisJc2htX21xCSAgICptcTsKKwlTaXpl CQlxdWV1ZV9zaXplID0gRFNNX1FVRVVFX1NJWkU7CisJU2l6ZQkJZXJyb3JfcXVldWVfc2l6ZSA9 IERTTV9FUlJPUl9RVUVVRV9TSVpFOworCisJLyoKKwkgKiBFc3RpbWF0ZSBob3cgbXVjaCBzaGFy ZWQgbWVtb3J5IHdlIG5lZWQuCisJICoKKwkgKiBCZWNhdXNlIHRoZSBUT0MgbWFjaGluZXJ5IG1h eSBjaG9vc2UgdG8gaW5zZXJ0IHBhZGRpbmcgb2Ygb2RkbHktc2l6ZWQKKwkgKiByZXF1ZXN0cywg d2UgbXVzdCBlc3RpbWF0ZSBlYWNoIGNodW5rIHNlcGFyYXRlbHkuCisJICoKKwkgKiBXZSBuZWVk IG9uZSBrZXkgdG8gcmVnaXN0ZXIgdGhlIGxvY2F0aW9uIG9mIHRoZSBoZWFkZXIsIGFuZCB0d28g b3RoZXIKKwkgKiBrZXlzIHRvIHRyYWNrIHRoZSBsb2NhdGlvbnMgb2YgdGhlIG1lc3NhZ2UgcXVl dWUgYW5kIHRoZSBlcnJvciBtZXNzYWdlCisJICogcXVldWUuCisJICovCisJc2htX3RvY19pbml0 aWFsaXplX2VzdGltYXRvcigmZSk7CisJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmZSwgc2l6ZW9m KFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQpKTsKKwlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZl LCBxdWV1ZV9zaXplKTsKKwlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZlLCBlcnJvcl9xdWV1ZV9z aXplKTsKKworCXNobV90b2NfZXN0aW1hdGVfa2V5cygmZSwgMyk7CisJc2Vnc2l6ZSA9IHNobV90 b2NfZXN0aW1hdGUoJmUpOworCisJLyogQ3JlYXRlIHRoZSBzaGFyZWQgbWVtb3J5IHNlZ21lbnQg YW5kIGVzdGFibGlzaCBhIHRhYmxlIG9mIGNvbnRlbnRzLiAqLworCXNlZyA9IGRzbV9jcmVhdGUo c2htX3RvY19lc3RpbWF0ZSgmZSksIDApOworCWlmICghc2VnKQorCQlyZXR1cm4gZmFsc2U7CisK Kwl0b2MgPSBzaG1fdG9jX2NyZWF0ZShQR19MT0dJQ0FMX0FQUExZX1NITV9NQUdJQywgZHNtX3Nl Z21lbnRfYWRkcmVzcyhzZWcpLAorCQkJCQkJIHNlZ3NpemUpOworCisJLyogU2V0IHVwIHRoZSBo ZWFkZXIgcmVnaW9uLiAqLworCXNoYXJlZCA9IHNobV90b2NfYWxsb2NhdGUodG9jLCBzaXplb2Yo UGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCkpOworCVNwaW5Mb2NrSW5pdCgmc2hhcmVkLT5tdXRl eCk7CisKKwlzaGFyZWQtPnhhY3Rfc3RhdGUgPSBQQVJBTExFTF9UUkFOU19VTktOT1dOOworCXNo YXJlZC0+cGVuZGluZ19zdHJlYW1fY291bnQgPSAwOworCXNoYXJlZC0+cGFfd2FpdF9mb3Jfc3Ry ZWFtID0gZmFsc2U7CisJc2hhcmVkLT5sYXN0X2NvbW1pdF9lbmQgPSBJbnZhbGlkWExvZ1JlY1B0 cjsKKworCXNobV90b2NfaW5zZXJ0KHRvYywgUEFSQUxMRUxfQVBQTFlfS0VZX1NIQVJFRCwgc2hh cmVkKTsKKworCS8qIFNldCB1cCBtZXNzYWdlIHF1ZXVlIGZvciB0aGUgd29ya2VyLiAqLworCW1x ID0gc2htX21xX2NyZWF0ZShzaG1fdG9jX2FsbG9jYXRlKHRvYywgcXVldWVfc2l6ZSksIHF1ZXVl X3NpemUpOworCXNobV90b2NfaW5zZXJ0KHRvYywgUEFSQUxMRUxfQVBQTFlfS0VZX01RLCBtcSk7 CisJc2htX21xX3NldF9zZW5kZXIobXEsIE15UHJvYyk7CisKKwkvKiBBdHRhY2ggdGhlIHF1ZXVl LiAqLworCXdpbmZvLT5tcV9oYW5kbGUgPSBzaG1fbXFfYXR0YWNoKG1xLCBzZWcsIE5VTEwpOwor CisJLyogU2V0IHVwIGVycm9yIHF1ZXVlIGZvciB0aGUgd29ya2VyLiAqLworCW1xID0gc2htX21x X2NyZWF0ZShzaG1fdG9jX2FsbG9jYXRlKHRvYywgZXJyb3JfcXVldWVfc2l6ZSksCisJCQkJCSAg IGVycm9yX3F1ZXVlX3NpemUpOworCXNobV90b2NfaW5zZXJ0KHRvYywgUEFSQUxMRUxfQVBQTFlf S0VZX0VSUk9SX1FVRVVFLCBtcSk7CisJc2htX21xX3NldF9yZWNlaXZlcihtcSwgTXlQcm9jKTsK KworCS8qIEF0dGFjaCB0aGUgcXVldWUuICovCisJd2luZm8tPmVycm9yX21xX2hhbmRsZSA9IHNo bV9tcV9hdHRhY2gobXEsIHNlZywgTlVMTCk7CisKKwkvKiBSZXR1cm4gcmVzdWx0cyB0byBjYWxs ZXIuICovCisJd2luZm8tPmRzbV9zZWcgPSBzZWc7CisJd2luZm8tPnNoYXJlZCA9IHNoYXJlZDsK KworCXJldHVybiB0cnVlOworfQorCisvKgorICogVHJ5IHRvIGdldCBhIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciBmcm9tIHRoZSBwb29sLiBJZiBub25lIGlzIGF2YWlsYWJsZSB0aGVuCisgKiBzdGFy dCBhIG5ldyBvbmUuCisgKi8KK3N0YXRpYyBQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqCitwYV9s YXVuY2hfcGFyYWxsZWxfd29ya2VyKHZvaWQpCit7CisJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0 OworCWJvb2wJCWxhdW5jaGVkOworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKKwlM aXN0CSAgICphY3RpdmVfd29ya2VycyA9IGxpc3RfY29weShQYXJhbGxlbEFwcGx5V29ya2VyUG9v bCk7CisJTGlzdENlbGwgICAqbGM7CisKKwkvKiBUcnkgdG8gZ2V0IGFuIGF2YWlsYWJsZSBwYXJh bGxlbCBhcHBseSB3b3JrZXIgZnJvbSB0aGUgd29ya2VyIHBvb2wuICovCisJZm9yZWFjaChsYywg YWN0aXZlX3dvcmtlcnMpCisJeworCQl3aW5mbyA9IChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAq KSBsZmlyc3QobGMpOworCisJCS8qCisJCSAqIFdlIGZpcnN0IHRyeSB0byBmcmVlIHRoZSB3b3Jr ZXIgdG8gaW1wcm92ZSBvdXIgY2hhbmNlcyBvZiBmaW5kaW5nCisJCSAqIG9uZSB0aGF0IGlzIG5v dCBpbiB1c2UuIE5vcm1hbGx5LCB3ZSBmcmVlIHRoZSB3b3JrZXIgYWZ0ZXIgZW5zdXJpbmcKKwkJ ICogdGhhdCB0aGUgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIGJ5IHRoZSBwYXJhbGxlbCB3b3Jr ZXIgYnV0IGZvcgorCQkgKiByb2xsYmFja3MsIHdlIGRvbid0IHdhaXQgZm9yIHRoZSB0cmFuc2Fj dGlvbiB0byBmaW5pc2ggc28gY2FuJ3QKKwkJICogZnJlZSB0aGUgd29ya2VyIGluZm9ybWF0aW9u IGltbWVkaWF0ZWx5LgorCQkgKi8KKwkJaWYgKHBhX2ZyZWVfd29ya2VyKHdpbmZvLCB3aW5mby0+ c2hhcmVkLT54aWQpKQorCQkJY29udGludWU7CisKKwkJaWYgKCF3aW5mby0+aW5fdXNlKQorCQkJ cmV0dXJuIHdpbmZvOworCX0KKworCS8qCisJICogU3RhcnQgYSBuZXcgcGFyYWxsZWwgYXBwbHkg d29ya2VyLgorCSAqCisJICogVGhlIHdvcmtlciBpbmZvIGNhbiBiZSB1c2VkIGZvciB0aGUgbGlm ZXRpbWUgb2YgdGhlIHdvcmtlciBwcm9jZXNzLCBzbworCSAqIGNyZWF0ZSBpdCBpbiBhIHBlcm1h bmVudCBjb250ZXh0LgorCSAqLworCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8o QXBwbHlDb250ZXh0KTsKKworCXdpbmZvID0gKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICopIHBh bGxvYzAoc2l6ZW9mKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvKSk7CisKKwkvKiBTZXR1cCBzaGFy ZWQgbWVtb3J5LiAqLworCWlmICghcGFfc2V0dXBfZHNtKHdpbmZvKSkKKwl7CisJCU1lbW9yeUNv bnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKwkJcGZyZWUod2luZm8pOworCQlyZXR1cm4gTlVM TDsKKwl9CisKKwlsYXVuY2hlZCA9IGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChNeUxvZ2ljYWxS ZXBXb3JrZXItPmRiaWQsCisJCQkJCQkJCQkJTXlTdWJzY3JpcHRpb24tPm9pZCwKKwkJCQkJCQkJ CQlNeVN1YnNjcmlwdGlvbi0+bmFtZSwKKwkJCQkJCQkJCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnVz ZXJpZCwKKwkJCQkJCQkJCQlJbnZhbGlkT2lkLAorCQkJCQkJCQkJCWRzbV9zZWdtZW50X2hhbmRs ZSh3aW5mby0+ZHNtX3NlZykpOworCisJaWYgKGxhdW5jaGVkKQorCXsKKwkJUGFyYWxsZWxBcHBs eVdvcmtlclBvb2wgPSBsYXBwZW5kKFBhcmFsbGVsQXBwbHlXb3JrZXJQb29sLCB3aW5mbyk7CisJ fQorCWVsc2UKKwl7CisJCXBhX2ZyZWVfd29ya2VyX2luZm8od2luZm8pOworCQl3aW5mbyA9IE5V TEw7CisJfQorCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCisJcmV0dXJu IHdpbmZvOworfQorCisvKgorICogQWxsb2NhdGUgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdGhh dCB3aWxsIGJlIHVzZWQgZm9yIHRoZSBzcGVjaWZpZWQgeGlkLgorICoKKyAqIFdlIGZpcnN0IHRy eSB0byBnZXQgYW4gYXZhaWxhYmxlIHdvcmtlciBmcm9tIHRoZSBwb29sLCBpZiBhbnkgYW5kIHRo ZW4gdHJ5CisgKiB0byBsYXVuY2ggYSBuZXcgd29ya2VyLiBPbiBzdWNjZXNzZnVsIGFsbG9jYXRp b24sIHJlbWVtYmVyIHRoZSB3b3JrZXIKKyAqIGluZm9ybWF0aW9uIGluIHRoZSBoYXNoIHRhYmxl IHNvIHRoYXQgd2UgY2FuIGdldCBpdCBsYXRlciBmb3IgcHJvY2Vzc2luZyB0aGUKKyAqIHN0cmVh bWluZyBjaGFuZ2VzLgorICovCit2b2lkCitwYV9hbGxvY2F0ZV93b3JrZXIoVHJhbnNhY3Rpb25J ZCB4aWQpCit7CisJYm9vbAkJZm91bmQ7CisJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZv ID0gTlVMTDsKKwlQYXJhbGxlbEFwcGx5V29ya2VyRW50cnkgKmVudHJ5OworCisJaWYgKCFwYV9j YW5fc3RhcnQoeGlkKSkKKwkJcmV0dXJuOworCisJLyogRmlyc3QgdGltZSB0aHJvdWdoLCBpbml0 aWFsaXplIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBzdGF0ZSBoYXNodGFibGUuICovCisJaWYgKCFQ YXJhbGxlbEFwcGx5VHhuSGFzaCkKKwl7CisJCUhBU0hDVEwJCWN0bDsKKworCQlNZW1TZXQoJmN0 bCwgMCwgc2l6ZW9mKGN0bCkpOworCQljdGwua2V5c2l6ZSA9IHNpemVvZihUcmFuc2FjdGlvbklk KTsKKwkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihQYXJhbGxlbEFwcGx5V29ya2VyRW50cnkpOwor CQljdGwuaGN4dCA9IEFwcGx5Q29udGV4dDsKKworCQlQYXJhbGxlbEFwcGx5VHhuSGFzaCA9IGhh c2hfY3JlYXRlKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgaGFz aCIsCisJCQkJCQkJCQkJCSAgIDE2LCAmY3RsLAorCQkJCQkJCQkJCQkgICBIQVNIX0VMRU0gfCBI QVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwl9CisKKwl3aW5mbyA9IHBhX2xhdW5jaF9wYXJh bGxlbF93b3JrZXIoKTsKKwlpZiAoIXdpbmZvKQorCQlyZXR1cm47CisKKwkvKiBDcmVhdGUgYW4g ZW50cnkgZm9yIHRoZSByZXF1ZXN0ZWQgdHJhbnNhY3Rpb24uICovCisJZW50cnkgPSBoYXNoX3Nl YXJjaChQYXJhbGxlbEFwcGx5VHhuSGFzaCwgJnhpZCwgSEFTSF9FTlRFUiwgJmZvdW5kKTsKKwlp ZiAoZm91bmQpCisJCWVsb2coRVJST1IsICJoYXNoIHRhYmxlIGNvcnJ1cHRlZCIpOworCisJLyog SW5pdGlhbGl6ZSBzaGFyZWQgbWVtb3J5IGFyZWEuICovCisJU3BpbkxvY2tBY3F1aXJlKCZ3aW5m by0+c2hhcmVkLT5tdXRleCk7CisJd2luZm8tPnNoYXJlZC0+eGFjdF9zdGF0ZSA9IFBBUkFMTEVM X1RSQU5TX1VOS05PV047CisJd2luZm8tPnNoYXJlZC0+eGlkID0geGlkOworCVNwaW5Mb2NrUmVs ZWFzZSgmd2luZm8tPnNoYXJlZC0+bXV0ZXgpOworCisJd2luZm8tPmluX3VzZSA9IHRydWU7CisJ ZW50cnktPndpbmZvID0gd2luZm87CisJZW50cnktPnhpZCA9IHhpZDsKK30KKworLyoKKyAqIEZp bmQgdGhlIGFzc2lnbmVkIHdvcmtlciBmb3IgdGhlIGdpdmVuIHRyYW5zYWN0aW9uLCBpZiBhbnku CisgKi8KK1BhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICoKK3BhX2ZpbmRfd29ya2VyKFRyYW5zYWN0 aW9uSWQgeGlkKQoreworCWJvb2wJCWZvdW5kOworCVBhcmFsbGVsQXBwbHlXb3JrZXJFbnRyeSAq ZW50cnk7CisKKwlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkpCisJCXJldHVybiBOVUxM OworCisJaWYgKCFQYXJhbGxlbEFwcGx5VHhuSGFzaCkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKiBS ZXR1cm4gdGhlIGNhY2hlZCBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaWYgdmFsaWQuICovCisJaWYg KHN0cmVhbV9hcHBseV93b3JrZXIpCisJCXJldHVybiBzdHJlYW1fYXBwbHlfd29ya2VyOworCisJ LyogRmluZCBhbiBlbnRyeSBmb3IgdGhlIHJlcXVlc3RlZCB0cmFuc2FjdGlvbi4gKi8KKwllbnRy eSA9IGhhc2hfc2VhcmNoKFBhcmFsbGVsQXBwbHlUeG5IYXNoLCAmeGlkLCBIQVNIX0ZJTkQsICZm b3VuZCk7CisJaWYgKGZvdW5kKQorCXsKKwkJLyogVGhlIHdvcmtlciBtdXN0IG5vdCBoYXZlIGV4 aXRlZC4gICovCisJCUFzc2VydChlbnRyeS0+d2luZm8tPmluX3VzZSk7CisJCXJldHVybiBlbnRy eS0+d2luZm87CisJfQorCisJcmV0dXJuIE5VTEw7Cit9CisKKy8qCisgKiBNYWtlcyB0aGUgd29y a2VyIGF2YWlsYWJsZSBmb3IgcmV1c2UuCisgKgorICogVGhpcyByZW1vdmVzIHRoZSBwYXJhbGxl bCBhcHBseSB3b3JrZXIgZW50cnkgZnJvbSB0aGUgaGFzaCB0YWJsZSBzbyB0aGF0IGl0CisgKiBj YW4ndCBiZSB1c2VkLiBJZiB0aGVyZSBhcmUgZW5vdWdoIHdvcmtlcnMgaW4gdGhlIHBvb2wsIGl0 IHN0b3BzIHRoZSB3b3JrZXIKKyAqIGFuZCBmcmVlcyB0aGUgY29ycmVzcG9uZGluZyBpbmZvLiBP dGhlcndpc2UgaXQganVzdCBtYXJrcyB0aGUgd29ya2VyIGFzCisgKiBhdmFpbGFibGUgZm9yIHJl dXNlLgorICoKKyAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSB3b3JrZXIgcG9vbCwg c2VlIGNvbW1lbnRzIGF0b3AgdGhpcyBmaWxlLgorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiB0aGUg d29ya2VyIGlzIHN0b3BwZWQsIGZhbHNlIG90aGVyd2lzZS4KKyAqLworYm9vbAorcGFfZnJlZV93 b3JrZXIoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBUcmFuc2FjdGlvbklkIHhpZCkK K3sKKwlpbnQJCQluYXBwbHl3b3JrZXJzOworCisJQXNzZXJ0KCFhbV9wYXJhbGxlbF9hcHBseV93 b3JrZXIoKSk7CisKKwkvKiBXb3JrZXIgaXMgYWxyZWFkeSBhdmFpbGFibGUgZm9yIHJldXNlLiAq LworCWlmICghd2luZm8tPmluX3VzZSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyoKKwkgKiBEb24n dCBmcmVlIHRoZSB3b3JrZXIgaWYgdGhlIHRyYW5zYWN0aW9uIGluIHRoZSB3b3JrZXIgaXMgc3Rp bGwgaW4KKwkgKiBwcm9ncmVzcy4gVGhpcyBjb3VsZCBoYXBwZW4gYXMgd2UgZG9uJ3Qgd2FpdCBm b3IgdGhlIGFwcGx5IG9mIHJvbGxiYWNrCisJICogdG8gZmluaXNoLgorCSAqLworCWlmIChwYV9n ZXRfeGFjdF9zdGF0ZSh3aW5mby0+c2hhcmVkKSAhPSBQQVJBTExFTF9UUkFOU19GSU5JU0hFRCkK KwkJcmV0dXJuIGZhbHNlOworCisJaWYgKCFoYXNoX3NlYXJjaChQYXJhbGxlbEFwcGx5VHhuSGFz aCwgJnhpZCwgSEFTSF9SRU1PVkUsIE5VTEwpKQorCQllbG9nKEVSUk9SLCAiaGFzaCB0YWJsZSBj b3JydXB0ZWQiKTsKKworCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NI QVJFRCk7CisJbmFwcGx5d29ya2VycyA9IGxvZ2ljYWxyZXBfcGFfd29ya2VyX2NvdW50KE15TG9n aWNhbFJlcFdvcmtlci0+c3ViaWQpOworCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxv Y2spOworCisJLyogU3RvcCB0aGUgd29ya2VyIGlmIHRoZXJlIGFyZSBlbm91Z2ggd29ya2VycyBp biB0aGUgcG9vbC4gKi8KKwlpZiAobmFwcGx5d29ya2VycyA+IChtYXhfcGFyYWxsZWxfYXBwbHlf d29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uIC8gMikpCisJeworCQlpbnQJCQlzbG90X25vOworCQl1 aW50MTYJCWdlbmVyYXRpb247CisKKwkJU3BpbkxvY2tBY3F1aXJlKCZ3aW5mby0+c2hhcmVkLT5t dXRleCk7CisJCWdlbmVyYXRpb24gPSB3aW5mby0+c2hhcmVkLT5sb2dpY2FscmVwX3dvcmtlcl9n ZW5lcmF0aW9uOworCQlzbG90X25vID0gd2luZm8tPnNoYXJlZC0+bG9naWNhbHJlcF93b3JrZXJf c2xvdF9ubzsKKwkJU3BpbkxvY2tSZWxlYXNlKCZ3aW5mby0+c2hhcmVkLT5tdXRleCk7CisKKwkJ bG9naWNhbHJlcF9wYV93b3JrZXJfc3RvcChzbG90X25vLCBnZW5lcmF0aW9uKTsKKworCQlwYV9m cmVlX3dvcmtlcl9pbmZvKHdpbmZvKTsKKworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwl3aW5mby0+ aW5fdXNlID0gZmFsc2U7CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKKy8qIEZyZWUgdGhlIHBhcmFs bGVsIGFwcGx5IHdvcmtlciBpbmZvcm1hdGlvbi4gKi8KK3N0YXRpYyB2b2lkCitwYV9mcmVlX3dv cmtlcl9pbmZvKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbykKK3sKKwlBc3NlcnQod2lu Zm8pOworCisJaWYgKHdpbmZvLT5tcV9oYW5kbGUpCisJCXNobV9tcV9kZXRhY2god2luZm8tPm1x X2hhbmRsZSk7CisKKwlpZiAod2luZm8tPmVycm9yX21xX2hhbmRsZSkKKwkJc2htX21xX2RldGFj aCh3aW5mby0+ZXJyb3JfbXFfaGFuZGxlKTsKKworCWlmICh3aW5mby0+ZHNtX3NlZykKKwkJZHNt X2RldGFjaCh3aW5mby0+ZHNtX3NlZyk7CisKKwkvKiBSZW1vdmUgZnJvbSB0aGUgd29ya2VyIHBv b2wuICovCisJUGFyYWxsZWxBcHBseVdvcmtlclBvb2wgPSBsaXN0X2RlbGV0ZV9wdHIoUGFyYWxs ZWxBcHBseVdvcmtlclBvb2wsCisJCQkJCQkJCQkJCSAgIHdpbmZvKTsKKworCXBmcmVlKHdpbmZv KTsKK30KKworLyoKKyAqIERldGFjaCBmcm9tIHRoZSBlcnJvcl9tcV9oYW5kbGUgZm9yIGVhY2gg cGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICovCit2b2lkCitwYV9kZXRhY2hfYWxsX2Vycm9yX21x KHZvaWQpCit7CisJTGlzdENlbGwgICAqbGM7CisKKwlmb3JlYWNoKGxjLCBQYXJhbGxlbEFwcGx5 V29ya2VyUG9vbCkKKwl7CisJCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyA9IChQYXJh bGxlbEFwcGx5V29ya2VySW5mbyAqKSBsZmlyc3QobGMpOworCisJCXNobV9tcV9kZXRhY2god2lu Zm8tPmVycm9yX21xX2hhbmRsZSk7CisJCXdpbmZvLT5lcnJvcl9tcV9oYW5kbGUgPSBOVUxMOwor CX0KK30KKworLyoKKyAqIFRyeSB0byBzdG9wIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgdGhhdCBh cmUgbm90IGluIHVzZSB0byBrZWVwIHRoZSBudW1iZXIgb2YKKyAqIHdvcmtlcnMgbG93ZXIgdGhh biBoYWxmIG9mIHRoZSBtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9u LgorICovCit2b2lkCitwYV9zdG9wX2lkbGVfd29ya2Vycyh2b2lkKQoreworCUxpc3RDZWxsICAg KmxjOworCUxpc3QJICAgKmFjdGl2ZV93b3JrZXJzOworCWludAkJCW5hcHBseXdvcmtlcnM7CisK KwlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOworCW5hcHBs eXdvcmtlcnMgPSBsb2dpY2FscmVwX3BhX3dvcmtlcl9jb3VudChNeUxvZ2ljYWxSZXBXb3JrZXIt PnN1YmlkKTsKKwlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKKworCWlmIChu YXBwbHl3b3JrZXJzIDw9IG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRp b24gLyAyKQorCQlyZXR1cm47CisKKwlhY3RpdmVfd29ya2VycyA9IGxpc3RfY29weShQYXJhbGxl bEFwcGx5V29ya2VyUG9vbCk7CisKKwlmb3JlYWNoKGxjLCBhY3RpdmVfd29ya2VycykKKwl7CisJ CWludAkJCXNsb3Rfbm87CisJCXVpbnQxNgkJZ2VuZXJhdGlvbjsKKwkJUGFyYWxsZWxBcHBseVdv cmtlckluZm8gKndpbmZvID0gKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICopIGxmaXJzdChsYyk7 CisKKwkJLyoKKwkJICogV2UgZmlyc3QgdHJ5IHRvIGZyZWUgdGhlIHdvcmtlciB0aGF0IG1heSBi ZSBpbiB1c2UuIE5vcm1hbGx5LCB3ZQorCQkgKiBmcmVlIHRoZSB3b3JrZXIgYWZ0ZXIgZW5zdXJp bmcgdGhhdCB0aGUgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIGJ5CisJCSAqIHRoZSBwYXJhbGxl bCB3b3JrZXIgYnV0IGZvciByb2xsYmFja3MsIHdlIGRvbid0IHdhaXQgZm9yIHRoZQorCQkgKiB0 cmFuc2FjdGlvbiB0byBmaW5pc2ggc28gY2FuJ3QgZnJlZSB0aGUgd29ya2VyIGluZm9ybWF0aW9u CisJCSAqIGltbWVkaWF0ZWx5LgorCQkgKi8KKwkJaWYgKHBhX2ZyZWVfd29ya2VyKHdpbmZvLCB3 aW5mby0+c2hhcmVkLT54aWQpKQorCQkJY29udGludWU7CisKKwkJaWYgKHdpbmZvLT5pbl91c2Up CisJCQljb250aW51ZTsKKworCQlTcGluTG9ja0FjcXVpcmUoJndpbmZvLT5zaGFyZWQtPm11dGV4 KTsKKwkJZ2VuZXJhdGlvbiA9IHdpbmZvLT5zaGFyZWQtPmxvZ2ljYWxyZXBfd29ya2VyX2dlbmVy YXRpb247CisJCXNsb3Rfbm8gPSB3aW5mby0+c2hhcmVkLT5sb2dpY2FscmVwX3dvcmtlcl9zbG90 X25vOworCQlTcGluTG9ja1JlbGVhc2UoJndpbmZvLT5zaGFyZWQtPm11dGV4KTsKKworCQlsb2dp Y2FscmVwX3BhX3dvcmtlcl9zdG9wKHNsb3Rfbm8sIGdlbmVyYXRpb24pOworCisJCXBhX2ZyZWVf d29ya2VyX2luZm8od2luZm8pOworCisJCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxv Y2ssIExXX1NIQVJFRCk7CisJCW5hcHBseXdvcmtlcnMgPSBsb2dpY2FscmVwX3BhX3dvcmtlcl9j b3VudChNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkKTsKKwkJTFdMb2NrUmVsZWFzZShMb2dpY2Fs UmVwV29ya2VyTG9jayk7CisKKwkJaWYgKG5hcHBseXdvcmtlcnMgPD0gbWF4X3BhcmFsbGVsX2Fw cGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiAvIDIpCisJCQlicmVhazsKKwl9Cit9CisKKy8q CisgKiBJbnRlcnJ1cHQgaGFuZGxlciBmb3IgbWFpbiBsb29wIG9mIHBhcmFsbGVsIGFwcGx5IHdv cmtlci4KKyAqLworc3RhdGljIHZvaWQKK1Byb2Nlc3NQYXJhbGxlbEFwcGx5SW50ZXJydXB0cyh2 b2lkKQoreworCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwlpZiAoU2h1dGRvd25SZXF1ZXN0 UGVuZGluZykKKwl7CisJCWVyZXBvcnQoTE9HLAorCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGlj YXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIGhhcyBm aW5pc2hlZCIsCisJCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKKworCQlwcm9jX2V4aXQo MCk7CisJfQorCisJaWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcpCisJeworCQlDb25maWdSZWxvYWRQ ZW5kaW5nID0gZmFsc2U7CisJCVByb2Nlc3NDb25maWdGaWxlKFBHQ19TSUdIVVApOworCX0KK30K KworLyogUGFyYWxsZWwgYXBwbHkgd29ya2VyIG1haW4gbG9vcC4gKi8KK3N0YXRpYyB2b2lkCitM b2dpY2FsUGFyYWxsZWxBcHBseUxvb3Aoc2htX21xX2hhbmRsZSAqbXFoKQoreworCXNobV9tcV9y ZXN1bHQgc2htcV9yZXM7CisJRXJyb3JDb250ZXh0Q2FsbGJhY2sgZXJyY2FsbGJhY2s7CisJTWVt b3J5Q29udGV4dCBvbGRjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKKworCS8qCisJICogSW5p dCB0aGUgQXBwbHlNZXNzYWdlQ29udGV4dCB3aGljaCB3ZSBjbGVhbiB1cCBhZnRlciBlYWNoIHJl cGxpY2F0aW9uCisJICogcHJvdG9jb2wgbWVzc2FnZS4KKwkgKi8KKwlBcHBseU1lc3NhZ2VDb250 ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKEFwcGx5Q29udGV4dCwKKwkJCQkJCQkJCQkJCSJB cHBseU1lc3NhZ2VDb250ZXh0IiwKKwkJCQkJCQkJCQkJCUFMTE9DU0VUX0RFRkFVTFRfU0laRVMp OworCisJLyoKKwkgKiBQdXNoIGFwcGx5IGVycm9yIGNvbnRleHQgY2FsbGJhY2suIEZpZWxkcyB3 aWxsIGJlIGZpbGxlZCB3aGlsZSBhcHBseWluZworCSAqIGEgY2hhbmdlLgorCSAqLworCWVycmNh bGxiYWNrLmNhbGxiYWNrID0gYXBwbHlfZXJyb3JfY2FsbGJhY2s7CisJZXJyY2FsbGJhY2sucHJl dmlvdXMgPSBlcnJvcl9jb250ZXh0X3N0YWNrOworCWVycm9yX2NvbnRleHRfc3RhY2sgPSAmZXJy Y2FsbGJhY2s7CisKKwlmb3IgKDs7KQorCXsKKwkJdm9pZAkgICAqZGF0YTsKKwkJU2l6ZQkJbGVu OworCisJCVByb2Nlc3NQYXJhbGxlbEFwcGx5SW50ZXJydXB0cygpOworCisJCS8qIEVuc3VyZSB3 ZSBhcmUgcmVhZGluZyB0aGUgZGF0YSBpbnRvIG91ciBtZW1vcnkgY29udGV4dC4gKi8KKwkJTWVt b3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5TWVzc2FnZUNvbnRleHQpOworCisJCXNobXFfcmVzID0g c2htX21xX3JlY2VpdmUobXFoLCAmbGVuLCAmZGF0YSwgdHJ1ZSk7CisKKwkJaWYgKHNobXFfcmVz ID09IFNITV9NUV9TVUNDRVNTKQorCQl7CisJCQlTdHJpbmdJbmZvRGF0YSBzOworCQkJaW50CQkJ YzsKKworCQkJaWYgKGxlbiA9PSAwKQorCQkJCWVsb2coRVJST1IsICJpbnZhbGlkIG1lc3NhZ2Ug bGVuZ3RoIik7CisKKwkJCXMuY3Vyc29yID0gMDsKKwkJCXMubWF4bGVuID0gLTE7CisJCQlzLmRh dGEgPSAoY2hhciAqKSBkYXRhOworCQkJcy5sZW4gPSBsZW47CisKKwkJCS8qCisJCQkgKiBUaGUg Zmlyc3QgYnl0ZSBvZiBtZXNzYWdlcyBzZW50IGZyb20gbGVhZGVyIGFwcGx5IHdvcmtlciB0bwor CQkJICogcGFyYWxsZWwgYXBwbHkgd29ya2VycyBjYW4gb25seSBiZSAndycuCisJCQkgKi8KKwkJ CWMgPSBwcV9nZXRtc2dieXRlKCZzKTsKKwkJCWlmIChjICE9ICd3JykKKwkJCQllbG9nKEVSUk9S LCAidW5leHBlY3RlZCBtZXNzYWdlIFwiJWNcIiIsIGMpOworCisJCQkvKgorCQkJICogSWdub3Jl IHN0YXRpc3RpY3MgZmllbGRzIHRoYXQgaGF2ZSBiZWVuIHVwZGF0ZWQgYnkgdGhlIGxlYWRlcgor CQkJICogYXBwbHkgd29ya2VyLgorCQkJICovCisJCQlzLmN1cnNvciArPSBTSVpFX1NUQVRTX01F U1NBR0U7CisKKwkJCWFwcGx5X2Rpc3BhdGNoKCZzKTsKKworCQkJTWVtb3J5Q29udGV4dFJlc2V0 KEFwcGx5TWVzc2FnZUNvbnRleHQpOworCQl9CisJCWVsc2UgaWYgKHNobXFfcmVzID09IFNITV9N UV9XT1VMRF9CTE9DSykKKwkJeworCQkJaW50CQkJcmM7CisKKwkJCU1lbW9yeUNvbnRleHRSZXNl dChBcHBseU1lc3NhZ2VDb250ZXh0KTsKKwkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQp OworCisJCQkvKiBXYWl0IGZvciBtb3JlIHdvcmsuICovCisJCQlyYyA9IFdhaXRMYXRjaChNeUxh dGNoLAorCQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1f REVBVEgsCisJCQkJCQkgICAxMDAwTCwKKwkJCQkJCSAgIFdBSVRfRVZFTlRfTE9HSUNBTF9QQVJB TExFTF9BUFBMWV9NQUlOKTsKKworCQkJaWYgKHJjICYgV0xfTEFUQ0hfU0VUKQorCQkJCVJlc2V0 TGF0Y2goTXlMYXRjaCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlBc3NlcnQoc2htcV9yZXMgPT0g U0hNX01RX0RFVEFDSEVEKTsKKworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJS Q09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCSBlcnJtc2coImxv c3QgY29ubmVjdGlvbiB0byB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIiKSkp OworCQl9CisJfQorCisJLyogUG9wIHRoZSBlcnJvciBjb250ZXh0IHN0YWNrLiAqLworCWVycm9y X2NvbnRleHRfc3RhY2sgPSBlcnJjYWxsYmFjay5wcmV2aW91czsKKworCU1lbW9yeUNvbnRleHRT d2l0Y2hUbyhvbGRjeHQpOworfQorCisvKgorICogTWFrZSBzdXJlIHRoZSBsZWFkZXIgYXBwbHkg d29ya2VyIHRyaWVzIHRvIHJlYWQgZnJvbSBvdXIgZXJyb3IgcXVldWUgb25lIG1vcmUKKyAqIHRp bWUuIFRoaXMgZ3VhcmRzIGFnYWluc3QgdGhlIGNhc2Ugd2hlcmUgd2UgZXhpdCB1bmNsZWFubHkg d2l0aG91dCBzZW5kaW5nCisgKiBhbiBFcnJvclJlc3BvbnNlLCBmb3IgZXhhbXBsZSBiZWNhdXNl IHNvbWUgY29kZSBjYWxscyBwcm9jX2V4aXQgZGlyZWN0bHkuCisgKi8KK3N0YXRpYyB2b2lkCitw YV9zaHV0ZG93bihpbnQgY29kZSwgRGF0dW0gYXJnKQoreworCVNlbmRQcm9jU2lnbmFsKE15TG9n aWNhbFJlcFdvcmtlci0+YXBwbHlfbGVhZGVyX3BpZCwKKwkJCQkgICBQUk9DU0lHX1BBUkFMTEVM X0FQUExZX01FU1NBR0UsCisJCQkJICAgSW52YWxpZEJhY2tlbmRJZCk7CisKKwlkc21fZGV0YWNo KChkc21fc2VnbWVudCAqKSBEYXR1bUdldFBvaW50ZXIoYXJnKSk7Cit9CisKKy8qCisgKiBQYXJh bGxlbCBhcHBseSB3b3JrZXIgZW50cnkgcG9pbnQuCisgKi8KK3ZvaWQKK1BhcmFsbGVsQXBwbHlX b3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQoreworCVBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQg KnNoYXJlZDsKKwlkc21faGFuZGxlCWhhbmRsZTsKKwlkc21fc2VnbWVudCAqc2VnOworCXNobV90 b2MgICAgKnRvYzsKKwlzaG1fbXEJICAgKm1xOworCXNobV9tcV9oYW5kbGUgKm1xaDsKKwlzaG1f bXFfaGFuZGxlICplcnJvcl9tcWg7CisJUmVwT3JpZ2luSWQgb3JpZ2luaWQ7CisJaW50CQkJd29y a2VyX3Nsb3QgPSBEYXR1bUdldEludDMyKG1haW5fYXJnKTsKKwljaGFyCQlvcmlnaW5uYW1lW05B TUVEQVRBTEVOXTsKKworCS8qIFNldHVwIHNpZ25hbCBoYW5kbGluZy4gKi8KKwlwcXNpZ25hbChT SUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQpOworCXBxc2lnbmFsKFNJR0lOVCwg U2lnbmFsSGFuZGxlckZvclNodXRkb3duUmVxdWVzdCk7CisJcHFzaWduYWwoU0lHVEVSTSwgZGll KTsKKwlCYWNrZ3JvdW5kV29ya2VyVW5ibG9ja1NpZ25hbHMoKTsKKworCS8qCisJICogQXR0YWNo IHRvIHRoZSBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudCBmb3IgdGhlIHBhcmFsbGVsIGFw cGx5LCBhbmQKKwkgKiBmaW5kIGl0cyB0YWJsZSBvZiBjb250ZW50cy4KKwkgKgorCSAqIExpa2Ug cGFyYWxsZWwgcXVlcnksIHdlIGRvbid0IG5lZWQgcmVzb3VyY2Ugb3duZXIgYnkgdGhpcyB0aW1l LiBTZWUKKwkgKiBQYXJhbGxlbFdvcmtlck1haW4uCisJICovCisJbWVtY3B5KCZoYW5kbGUsIE15 Qmd3b3JrZXJFbnRyeS0+Ymd3X2V4dHJhLCBzaXplb2YoZHNtX2hhbmRsZSkpOworCXNlZyA9IGRz bV9hdHRhY2goaGFuZGxlKTsKKwlpZiAoIXNlZykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJy Y29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJy bXNnKCJ1bmFibGUgdG8gbWFwIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdtZW50IikpKTsKKwor CXRvYyA9IHNobV90b2NfYXR0YWNoKFBHX0xPR0lDQUxfQVBQTFlfU0hNX01BR0lDLCBkc21fc2Vn bWVudF9hZGRyZXNzKHNlZykpOworCWlmICghdG9jKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShl cnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBl cnJtc2coImJhZCBtYWdpYyBudW1iZXIgaW4gZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNlZ21lbnQi KSkpOworCisJYmVmb3JlX3NobWVtX2V4aXQocGFfc2h1dGRvd24sIFBvaW50ZXJHZXREYXR1bShz ZWcpKTsKKworCS8qIExvb2sgdXAgdGhlIHNoYXJlZCBpbmZvcm1hdGlvbi4gKi8KKwlzaGFyZWQg PSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0FQUExZX0tFWV9TSEFSRUQsIGZhbHNlKTsK KwlNeVBhcmFsbGVsU2hhcmVkID0gc2hhcmVkOworCisJLyoKKwkgKiBBdHRhY2ggdG8gdGhlIG1l c3NhZ2UgcXVldWUuCisJICovCisJbXEgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0FQ UExZX0tFWV9NUSwgZmFsc2UpOworCXNobV9tcV9zZXRfcmVjZWl2ZXIobXEsIE15UHJvYyk7CisJ bXFoID0gc2htX21xX2F0dGFjaChtcSwgc2VnLCBOVUxMKTsKKworCS8qCisJICogUHJpbWFyeSBp bml0aWFsaXphdGlvbiBpcyBjb21wbGV0ZS4gTm93LCB3ZSBjYW4gYXR0YWNoIHRvIG91ciBzbG90 LgorCSAqIFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgZG9l cyBub3Qgd3JpdGUgZGF0YSB0bworCSAqIHRoZSB1bmluaXRpYWxpemVkIG1lbW9yeSBxdWV1ZS4K KwkgKi8KKwlsb2dpY2FscmVwX3dvcmtlcl9hdHRhY2god29ya2VyX3Nsb3QpOworCisJU3Bpbkxv Y2tBY3F1aXJlKCZNeVBhcmFsbGVsU2hhcmVkLT5tdXRleCk7CisJTXlQYXJhbGxlbFNoYXJlZC0+ bG9naWNhbHJlcF93b3JrZXJfZ2VuZXJhdGlvbiA9IE15TG9naWNhbFJlcFdvcmtlci0+Z2VuZXJh dGlvbjsKKwlNeVBhcmFsbGVsU2hhcmVkLT5sb2dpY2FscmVwX3dvcmtlcl9zbG90X25vID0gd29y a2VyX3Nsb3Q7CisJU3BpbkxvY2tSZWxlYXNlKCZNeVBhcmFsbGVsU2hhcmVkLT5tdXRleCk7CisK KwkvKgorCSAqIEF0dGFjaCB0byB0aGUgZXJyb3IgcXVldWUuCisJICovCisJbXEgPSBzaG1fdG9j X2xvb2t1cCh0b2MsIFBBUkFMTEVMX0FQUExZX0tFWV9FUlJPUl9RVUVVRSwgZmFsc2UpOworCXNo bV9tcV9zZXRfc2VuZGVyKG1xLCBNeVByb2MpOworCWVycm9yX21xaCA9IHNobV9tcV9hdHRhY2go bXEsIHNlZywgTlVMTCk7CisKKwlwcV9yZWRpcmVjdF90b19zaG1fbXEoc2VnLCBlcnJvcl9tcWgp OworCXBxX3NldF9wYXJhbGxlbF9sZWFkZXIoTXlMb2dpY2FsUmVwV29ya2VyLT5hcHBseV9sZWFk ZXJfcGlkLAorCQkJCQkJICAgSW52YWxpZEJhY2tlbmRJZCk7CisKKwlNeUxvZ2ljYWxSZXBXb3Jr ZXItPmxhc3Rfc2VuZF90aW1lID0gTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X3JlY3ZfdGltZSA9 CisJCU15TG9naWNhbFJlcFdvcmtlci0+cmVwbHlfdGltZSA9IDA7CisKKwlJbml0aWFsaXplQXBw bHlXb3JrZXIoKTsKKworCS8qIFNldHVwIHJlcGxpY2F0aW9uIG9yaWdpbiB0cmFja2luZy4gKi8K KwlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCVJlcGxpY2F0aW9uT3JpZ2luTmFtZUZvckxv Z2ljYWxSZXAoTXlTdWJzY3JpcHRpb24tPm9pZCwgSW52YWxpZE9pZCwKKwkJCQkJCQkJCSAgIG9y aWdpbm5hbWUsIHNpemVvZihvcmlnaW5uYW1lKSk7CisJb3JpZ2luaWQgPSByZXBsb3JpZ2luX2J5 X25hbWUob3JpZ2lubmFtZSwgZmFsc2UpOworCisJLyoKKwkgKiBUaGUgcGFyYWxsZWwgYXBwbHkg d29ya2VyIGRvZXNuJ3QgbmVlZCB0byBtb25vcG9saXplIHRoaXMgcmVwbGljYXRpb24KKwkgKiBv cmlnaW4gd2hpY2ggd2FzIGFscmVhZHkgYWNxdWlyZWQgYnkgaXRzIGxlYWRlciBwcm9jZXNzLgor CSAqLworCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCwgTXlMb2dpY2FsUmVwV29y a2VyLT5hcHBseV9sZWFkZXJfcGlkKTsKKwlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luID0gb3Jp Z2luaWQ7CisJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkvKgorCSAqIFNldHVwIGNh bGxiYWNrIGZvciBzeXNjYWNoZSBzbyB0aGF0IHdlIGtub3cgd2hlbiBzb21ldGhpbmcgY2hhbmdl cyBpbgorCSAqIHRoZSBzdWJzY3JpcHRpb24gcmVsYXRpb24gc3RhdGUuCisJICovCisJQ2FjaGVS ZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2soU1VCU0NSSVBUSU9OUkVMTUFQLAorCQkJCQkJCQkgIGlu dmFsaWRhdGVfc3luY2luZ190YWJsZV9zdGF0ZXMsCisJCQkJCQkJCSAgKERhdHVtKSAwKTsKKwor CXNldF9hcHBseV9lcnJvcl9jb250ZXh0X29yaWdpbihvcmlnaW5uYW1lKTsKKworCUxvZ2ljYWxQ YXJhbGxlbEFwcGx5TG9vcChtcWgpOworCisJLyoKKwkgKiBUaGUgcGFyYWxsZWwgYXBwbHkgd29y a2VyIG11c3Qgbm90IGdldCBoZXJlIGJlY2F1c2UgdGhlIHBhcmFsbGVsIGFwcGx5CisJICogd29y a2VyIHdpbGwgb25seSBzdG9wIHdoZW4gaXQgcmVjZWl2ZXMgYSBTSUdURVJNIG9yIFNJR0lOVCBm cm9tIHRoZQorCSAqIGxlYWRlciwgZGV0ZWN0cyBhIGNoYW5nZSBpbiBzdWJzY3JpcHRpb24gaW5m b3JtYXRpb24sIG9yIHdoZW4gdGhlcmUKKwkgKiB0aGVyZSBpcyBhbiBlcnJvci4gTm9uZSBvZiB0 aGVzZSBjYXNlcyB3aWxsIGFsbG93IHRoZSBjb2RlIHRvIHJlYWNoCisJICogaGVyZS4KKwkgKi8K KwlBc3NlcnQoZmFsc2UpOworfQorCisvKgorICogSGFuZGxlIHJlY2VpcHQgb2YgYW4gaW50ZXJy dXB0IGluZGljYXRpbmcgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgbWVzc2FnZS4KKyAqCisgKiBO b3RlOiB0aGlzIGlzIGNhbGxlZCB3aXRoaW4gYSBzaWduYWwgaGFuZGxlciEgQWxsIHdlIGNhbiBk byBpcyBzZXQgYSBmbGFnCisgKiB0aGF0IHdpbGwgY2F1c2UgdGhlIG5leHQgQ0hFQ0tfRk9SX0lO VEVSUlVQVFMoKSB0byBpbnZva2UKKyAqIEhhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlcygpLgor ICovCit2b2lkCitIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZUludGVycnVwdCh2b2lkKQorewor CUludGVycnVwdFBlbmRpbmcgPSB0cnVlOworCVBhcmFsbGVsQXBwbHlNZXNzYWdlUGVuZGluZyA9 IHRydWU7CisJU2V0TGF0Y2goTXlMYXRjaCk7Cit9CisKKy8qCisgKiBIYW5kbGUgYSBzaW5nbGUg cHJvdG9jb2wgbWVzc2FnZSByZWNlaXZlZCBmcm9tIGEgc2luZ2xlIHBhcmFsbGVsIGFwcGx5Cisg KiB3b3JrZXIuCisgKi8KK3N0YXRpYyB2b2lkCitIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZShQ YXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sIFN0cmluZ0luZm8gbXNnKQoreworCWNoYXIJ CW1zZ3R5cGU7CisKKwltc2d0eXBlID0gcHFfZ2V0bXNnYnl0ZShtc2cpOworCisJc3dpdGNoICht c2d0eXBlKQorCXsKKwkJY2FzZSAnRSc6CQkJCS8qIEVycm9yUmVzcG9uc2UgKi8KKwkJCXsKKwkJ CQlFcnJvckRhdGEJZWRhdGE7CisKKwkJCQkvKiBQYXJzZSBFcnJvclJlc3BvbnNlLiAqLworCQkJ CXBxX3BhcnNlX2Vycm9ybm90aWNlKG1zZywgJmVkYXRhKTsKKworCQkJCS8qCisJCQkJICogSWYg ZGVzaXJlZCwgYWRkIGEgY29udGV4dCBsaW5lIHRvIHNob3cgdGhhdCB0aGlzIGlzIGEKKwkJCQkg KiBtZXNzYWdlIHByb3BhZ2F0ZWQgZnJvbSBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gT3RoZXJ3 aXNlLAorCQkJCSAqIGl0IGNhbiBzb21ldGltZXMgYmUgY29uZnVzaW5nIHRvIHVuZGVyc3RhbmQg d2hhdCBhY3R1YWxseQorCQkJCSAqIGhhcHBlbmVkLgorCQkJCSAqLworCQkJCWlmIChlZGF0YS5j b250ZXh0KQorCQkJCQllZGF0YS5jb250ZXh0ID0gcHNwcmludGYoIiVzXG4lcyIsIGVkYXRhLmNv bnRleHQsCisJCQkJCQkJCQkJCSBfKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciIpKTsKKwkJCQllbHNlCisJCQkJCWVkYXRhLmNvbnRleHQgPSBwc3RyZHVwKF8oImxv Z2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIikpOworCisJCQkJLyoKKwkJ CQkgKiBDb250ZXh0IGJleW9uZCB0aGF0IHNob3VsZCB1c2UgdGhlIGVycm9yIGNvbnRleHQgY2Fs bGJhY2tzCisJCQkJICogdGhhdCB3ZXJlIGluIGVmZmVjdCBpbiBMb2dpY2FsUmVwQXBwbHlMb29w KCkuCisJCQkJICovCisJCQkJZXJyb3JfY29udGV4dF9zdGFjayA9IGFwcGx5X2Vycm9yX2NvbnRl eHRfc3RhY2s7CisKKwkJCQkvKgorCQkJCSAqIFRoZSBhY3R1YWwgZXJyb3IgbXVzdCBoYXZlIGJl ZW4gcmVwb3J0ZWQgYnkgdGhlIHBhcmFsbGVsCisJCQkJICogYXBwbHkgd29ya2VyLgorCQkJCSAq LworCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1Rf SU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJCSBlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRp b24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGV4aXRlZCBkdWUgdG8gZXJyb3IiKSwKKwkJCQkJCSBl cnJjb250ZXh0KCIlcyIsIGVkYXRhLmNvbnRleHQpKSk7CisJCQl9CisKKwkJCS8qCisJCQkgKiBE b24ndCBuZWVkIHRvIGRvIGFueXRoaW5nIGFib3V0IE5vdGljZVJlc3BvbnNlIGFuZAorCQkJICog Tm90aWZ5UmVzcG9uc2UgYXMgdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIGRvZXNuJ3Qg bmVlZAorCQkJICogdG8gc2VuZCBtZXNzYWdlcyB0byB0aGUgY2xpZW50LgorCQkJICovCisJCWNh c2UgJ04nOgorCQljYXNlICdBJzoKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQllbG9nKEVS Uk9SLCAidW5yZWNvZ25pemVkIG1lc3NhZ2UgdHlwZSByZWNlaXZlZCBmcm9tIGxvZ2ljYWwgcmVw bGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyOiAlYyAobWVzc2FnZSBsZW5ndGggJWQgYnl0 ZXMpIiwKKwkJCQkgbXNndHlwZSwgbXNnLT5sZW4pOworCX0KK30KKworLyoKKyAqIEhhbmRsZSBh bnkgcXVldWVkIHByb3RvY29sIG1lc3NhZ2VzIHJlY2VpdmVkIGZyb20gcGFyYWxsZWwgYXBwbHkg d29ya2Vycy4KKyAqLwordm9pZAorSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VzKHZvaWQpCit7 CisJTGlzdENlbGwgICAqbGM7CisJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OworCisJc3RhdGlj IE1lbW9yeUNvbnRleHQgaHBhbV9jb250ZXh0ID0gTlVMTDsKKworCS8qCisJICogVGhpcyBpcyBp bnZva2VkIGZyb20gUHJvY2Vzc0ludGVycnVwdHMoKSwgYW5kIHNpbmNlIHNvbWUgb2YgdGhlCisJ ICogZnVuY3Rpb25zIGl0IGNhbGxzIGNvbnRhaW4gQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSwgdGhl cmUgaXMgYSBwb3RlbnRpYWwKKwkgKiBmb3IgcmVjdXJzaXZlIGNhbGxzIGlmIG1vcmUgc2lnbmFs cyBhcmUgcmVjZWl2ZWQgd2hpbGUgdGhpcyBydW5zLiBJdCdzCisJICogdW5jbGVhciB0aGF0IHJl Y3Vyc2l2ZSBlbnRyeSB3b3VsZCBiZSBzYWZlLCBhbmQgaXQgZG9lc24ndCBzZWVtIHVzZWZ1bAor CSAqIGV2ZW4gaWYgaXQgaXMgc2FmZSwgc28gbGV0J3MgYmxvY2sgaW50ZXJydXB0cyB1bnRpbCBk b25lLgorCSAqLworCUhPTERfSU5URVJSVVBUUygpOworCisJLyoKKwkgKiBNb3Jlb3ZlciwgQ3Vy cmVudE1lbW9yeUNvbnRleHQgbWlnaHQgYmUgcG9pbnRpbmcgYWxtb3N0IGFueXdoZXJlLiBXZQor CSAqIGRvbid0IHdhbnQgdG8gcmlzayBsZWFraW5nIGRhdGEgaW50byBsb25nLWxpdmVkIGNvbnRl eHRzLCBzbyBsZXQncyBkbworCSAqIG91ciB3b3JrIGhlcmUgaW4gYSBwcml2YXRlIGNvbnRleHQg dGhhdCB3ZSBjYW4gcmVzZXQgb24gZWFjaCB1c2UuCisJICovCisJaWYgKCFocGFtX2NvbnRleHQp CQkJLyogZmlyc3QgdGltZSB0aHJvdWdoPyAqLworCQlocGFtX2NvbnRleHQgPSBBbGxvY1NldENv bnRleHRDcmVhdGUoVG9wTWVtb3J5Q29udGV4dCwKKwkJCQkJCQkJCQkJICJIYW5kbGVQYXJhbGxl bEFwcGx5TWVzc2FnZXMiLAorCQkJCQkJCQkJCQkgQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CisJ ZWxzZQorCQlNZW1vcnlDb250ZXh0UmVzZXQoaHBhbV9jb250ZXh0KTsKKworCW9sZGNvbnRleHQg PSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oaHBhbV9jb250ZXh0KTsKKworCVBhcmFsbGVsQXBwbHlN ZXNzYWdlUGVuZGluZyA9IGZhbHNlOworCisJZm9yZWFjaChsYywgUGFyYWxsZWxBcHBseVdvcmtl clBvb2wpCisJeworCQlzaG1fbXFfcmVzdWx0IHJlczsKKwkJU2l6ZQkJbmJ5dGVzOworCQl2b2lk CSAgICpkYXRhOworCQlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8gPSAoUGFyYWxsZWxB cHBseVdvcmtlckluZm8gKikgbGZpcnN0KGxjKTsKKworCQkvKgorCQkgKiBUaGUgbGVhZGVyIHdp bGwgZGV0YWNoIGZyb20gdGhlIGVycm9yIHF1ZXVlIGFuZCBzZXQgaXQgdG8gTlVMTAorCQkgKiBi ZWZvcmUgcHJlcGFyaW5nIHRvIHN0b3AgYWxsIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMsIHNvIHdl IGRvbid0CisJCSAqIG5lZWQgdG8gaGFuZGxlIGVycm9yIG1lc3NhZ2VzIGFueW1vcmUuIFNlZQor CQkgKiBsb2dpY2FscmVwX3dvcmtlcl9kZXRhY2guCisJCSAqLworCQlpZiAoIXdpbmZvLT5lcnJv cl9tcV9oYW5kbGUpCisJCQljb250aW51ZTsKKworCQlyZXMgPSBzaG1fbXFfcmVjZWl2ZSh3aW5m by0+ZXJyb3JfbXFfaGFuZGxlLCAmbmJ5dGVzLCAmZGF0YSwgdHJ1ZSk7CisKKwkJaWYgKHJlcyA9 PSBTSE1fTVFfV09VTERfQkxPQ0spCisJCQljb250aW51ZTsKKwkJZWxzZSBpZiAocmVzID09IFNI TV9NUV9TVUNDRVNTKQorCQl7CisJCQlTdHJpbmdJbmZvRGF0YSBtc2c7CisKKwkJCWluaXRTdHJp bmdJbmZvKCZtc2cpOworCQkJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbygmbXNnLCBkYXRhLCBuYnl0 ZXMpOworCQkJSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2Uod2luZm8sICZtc2cpOworCQkJcGZy ZWUobXNnLmRhdGEpOworCQl9CisJCWVsc2UKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJj b2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJy bXNnKCJsb3N0IGNvbm5lY3Rpb24gdG8gdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwg YXBwbHkgd29ya2VyIikpKTsKKwl9CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4 dCk7CisKKwkvKiBNaWdodCBhcyB3ZWxsIGNsZWFyIHRoZSBjb250ZXh0IG9uIG91ciB3YXkgb3V0 ICovCisJTWVtb3J5Q29udGV4dFJlc2V0KGhwYW1fY29udGV4dCk7CisKKwlSRVNVTUVfSU5URVJS VVBUUygpOworfQorCisvKgorICogU2VuZCB0aGUgZGF0YSB0byB0aGUgc3BlY2lmaWVkIHBhcmFs bGVsIGFwcGx5IHdvcmtlciB2aWEgc2hhcmVkLW1lbW9yeQorICogcXVldWUuCisgKi8KK3ZvaWQK K3BhX3NlbmRfZGF0YShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sIFNpemUgbmJ5dGVz LCBjb25zdCB2b2lkICpkYXRhKQoreworCWludAkJCXJjOworCXNobV9tcV9yZXN1bHQgcmVzdWx0 OworCVRpbWVzdGFtcFR6IHN0YXJ0VGltZSA9IDA7CisKKwlBc3NlcnQoIUlzVHJhbnNhY3Rpb25T dGF0ZSgpKTsKKworI2RlZmluZSBTSE1fU0VORF9SRVRSWV9JTlRFUlZBTF9NUyAxMDAwCisjZGVm aW5lIFNITV9TRU5EX1RJTUVPVVRfTVMJCSgxMDAwMCAtIFNITV9TRU5EX1JFVFJZX0lOVEVSVkFM X01TKQorCisJZm9yICg7OykKKwl7CisJCXJlc3VsdCA9IHNobV9tcV9zZW5kKHdpbmZvLT5tcV9o YW5kbGUsIG5ieXRlcywgZGF0YSwgdHJ1ZSwgdHJ1ZSk7CisKKwkJaWYgKHJlc3VsdCA9PSBTSE1f TVFfU1VDQ0VTUykKKwkJCWJyZWFrOworCQllbHNlIGlmIChyZXN1bHQgPT0gU0hNX01RX0RFVEFD SEVEKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9U X0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCSBlcnJtc2coImNvdWxkIG5vdCBzZW5kIGRh dGEgdG8gc2hhcmVkLW1lbW9yeSBxdWV1ZSIpKSk7CisKKwkJQXNzZXJ0KHJlc3VsdCA9PSBTSE1f TVFfV09VTERfQkxPQ0spOworCisJCS8qIFdhaXQgYmVmb3JlIHJldHJ5aW5nLiAqLworCQlyYyA9 IFdhaXRMYXRjaChNeUxhdGNoLAorCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwg V0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJICAgU0hNX1NFTkRfUkVUUllfSU5URVJWQUxfTVMs CisJCQkJCSAgIFdBSVRfRVZFTlRfTE9HSUNBTF9QQVJBTExFTF9BUFBMWV9TVEFURV9DSEFOR0Up OworCisJCWlmIChyYyAmIFdMX0xBVENIX1NFVCkKKwkJeworCQkJUmVzZXRMYXRjaChNeUxhdGNo KTsKKwkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJCX0KKworCQkvKgorCQkgKiBJZiB0aGUg YXR0ZW1wdCB0byBzZW5kIGRhdGEgdmlhIHNoYXJlZCBtZW1vcnkgdGltZXMgb3V0LCB3ZSByZXN0 YXJ0CisJCSAqIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHRvIHByZXZlbnQgcG9zc2libGUgZGVh ZGxvY2tzIHdpdGggYW5vdGhlcgorCQkgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXIuIFJlZmVyIHRv IHRoZSBjb21tZW50cyBhdG9wIHRoaXMgZmlsZSBmb3IKKwkJICogZGV0YWlscy4KKwkJICovCisJ CWlmIChzdGFydFRpbWUgPT0gMCkKKwkJCXN0YXJ0VGltZSA9IEdldEN1cnJlbnRUaW1lc3RhbXAo KTsKKwkJZWxzZSBpZiAoVGltZXN0YW1wRGlmZmVyZW5jZUV4Y2VlZHMoc3RhcnRUaW1lLCBHZXRD dXJyZW50VGltZXN0YW1wKCksCisJCQkJCQkJCQkJCVNITV9TRU5EX1RJTUVPVVRfTVMpKQorCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9DT05ORUNUSU9OX0ZBSUxVUkUp LAorCQkJCQkgZXJybXNnKCJ0ZXJtaW5hdGluZyBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVs IGFwcGx5IHdvcmtlciBkdWUgdG8gdGltZW91dCIpKSk7CisJfQorfQorCisvKgorICogV2FpdCB1 bnRpbCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyJ3MgdHJhbnNhY3Rpb24gc3RhdGUgaGFzIHJl YWNoZWQgb3IKKyAqIGV4Y2VlZGVkIHRoZSBnaXZlbiB4YWN0X3N0YXRlLgorICovCitzdGF0aWMg dm9pZAorcGFfd2FpdF9mb3JfeGFjdF9zdGF0ZShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2lu Zm8sCisJCQkJCSAgIFBhcmFsbGVsVHJhbnNTdGF0ZSB4YWN0X3N0YXRlKQoreworCWZvciAoOzsp CisJeworCQkvKgorCQkgKiBTdG9wIGlmIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBoYXMgcmVhY2hl ZCBvciBleGNlZWRlZCB0aGUgZ2l2ZW4KKwkJICogeGFjdF9zdGF0ZS4KKwkJICovCisJCWlmIChw YV9nZXRfeGFjdF9zdGF0ZSh3aW5mby0+c2hhcmVkKSA+PSB4YWN0X3N0YXRlKQorCQkJYnJlYWs7 CisKKwkJLyogV2FpdCB0byBiZSBzaWduYWxsZWQuICovCisJCSh2b2lkKSBXYWl0TGF0Y2goTXlM YXRjaCwKKwkJCQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9E RUFUSCwKKwkJCQkJCSAxMEwsCisJCQkJCQkgV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQ UExZX1NUQVRFX0NIQU5HRSk7CisKKwkJLyogUmVzZXQgdGhlIGxhdGNoIHNvIHdlIGRvbid0IHNw aW4uICovCisJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisKKwkJLyogQW4gaW50ZXJydXB0IG1heSBo YXZlIG9jY3VycmVkIHdoaWxlIHdlIHdlcmUgd2FpdGluZy4gKi8KKwkJQ0hFQ0tfRk9SX0lOVEVS UlVQVFMoKTsKKwl9Cit9CisKKy8qCisgKiBXYWl0IHVudGlsIHRoZSBwYXJhbGxlbCBhcHBseSB3 b3JrZXIncyB0cmFuc2FjdGlvbiBmaW5pc2hlcy4KKyAqLwordm9pZAorcGFfd2FpdF9mb3JfeGFj dF9maW5pc2goUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKQoreworCS8qCisJICogV2Fp dCB1bnRpbCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHNldCB0aGUgc3RhdGUgdG8KKwkgKiBQ QVJBTExFTF9UUkFOU19TVEFSVEVEIHdoaWNoIG1lYW5zIGl0IGhhcyBhY3F1aXJlZCB0aGUgdHJh bnNhY3Rpb24KKwkgKiBsb2NrLiBUaGlzIGlzIHRvIHByZXZlbnQgbGVhZGVyIGFwcGx5IHdvcmtl ciBmcm9tIGFjcXVpcmluZyB0aGUKKwkgKiB0cmFuc2FjdGlvbiBsb2NrIGVhcmxpZXIgdGhhbiB0 aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorCSAqLworCXBhX3dhaXRfZm9yX3hhY3Rfc3RhdGUo d2luZm8sIFBBUkFMTEVMX1RSQU5TX1NUQVJURUQpOworCisJLyoKKwkgKiBXYWl0IGZvciB0aGUg dHJhbnNhY3Rpb24gbG9jayB0byBiZSByZWxlYXNlZC4gVGhpcyBpcyByZXF1aXJlZCB0byBkZXRl Y3QKKwkgKiBkZWFkbG9jayBhbW9uZyBsZWFkZXIgYW5kIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMu IFJlZmVyIHRvIHRoZSBjb21tZW50cworCSAqIGF0b3AgdGhpcyBmaWxlLgorCSAqLworCXBhX2xv Y2tfdHJhbnNhY3Rpb24od2luZm8tPnNoYXJlZC0+eGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsK KwlwYV91bmxvY2tfdHJhbnNhY3Rpb24od2luZm8tPnNoYXJlZC0+eGlkLCBBY2Nlc3NFeGNsdXNp dmVMb2NrKTsKKworCS8qCisJICogQ2hlY2sgaWYgdGhlIHN0YXRlIGJlY29tZXMgUEFSQUxMRUxf VFJBTlNfRklOSVNIRUQgaW4gY2FzZSB0aGUgcGFyYWxsZWwKKwkgKiBhcHBseSB3b3JrZXIgZmFp bGVkIHdoaWxlIGFwcGx5aW5nIGNoYW5nZXMgY2F1c2luZyB0aGUgbG9jayB0byBiZQorCSAqIHJl bGVhc2VkLgorCSAqLworCWlmIChwYV9nZXRfeGFjdF9zdGF0ZSh3aW5mby0+c2hhcmVkKSAhPSBQ QVJBTExFTF9UUkFOU19GSU5JU0hFRCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShF UlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJs b3N0IGNvbm5lY3Rpb24gdG8gdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkg d29ya2VyIikpKTsKK30KKworLyoKKyAqIFNldCBhbiBlbnVtIGluZGljYXRpbmcgdGhlIHRyYW5z YWN0aW9uIHN0YXRlIGZvciB0aGUgZ2l2ZW4gcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlci4KKyAq Lwordm9pZAorcGFfc2V0X3hhY3Rfc3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqd3No YXJlZCwKKwkJCQkgIFBhcmFsbGVsVHJhbnNTdGF0ZSB4YWN0X3N0YXRlKQoreworCVNwaW5Mb2Nr QWNxdWlyZSgmd3NoYXJlZC0+bXV0ZXgpOworCXdzaGFyZWQtPnhhY3Rfc3RhdGUgPSB4YWN0X3N0 YXRlOworCVNwaW5Mb2NrUmVsZWFzZSgmd3NoYXJlZC0+bXV0ZXgpOworfQorCisvKgorICogR2V0 IGFuIGVudW0gaW5kaWNhdGluZyB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgZm9yIHRoZSBnaXZlbiBw YXJhbGxlbCBhcHBseQorICogd29ya2VyLgorICovCitzdGF0aWMgUGFyYWxsZWxUcmFuc1N0YXRl CitwYV9nZXRfeGFjdF9zdGF0ZShQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICp3c2hhcmVkKQor eworCVBhcmFsbGVsVHJhbnNTdGF0ZSB4YWN0X3N0YXRlOworCisJU3BpbkxvY2tBY3F1aXJlKCZ3 c2hhcmVkLT5tdXRleCk7CisJeGFjdF9zdGF0ZSA9IHdzaGFyZWQtPnhhY3Rfc3RhdGU7CisJU3Bp bkxvY2tSZWxlYXNlKCZ3c2hhcmVkLT5tdXRleCk7CisKKwlyZXR1cm4geGFjdF9zdGF0ZTsKK30K KworLyoKKyAqIFNldCB0aGUgd29ya2VyIHRoYXQgcmVxdWlyZWQgdG8gYXBwbHkgdGhlIGN1cnJl bnQgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLgorICovCit2b2lkCitwYV9zZXRfc3RyZWFtX2FwcGx5 X3dvcmtlcihQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pCit7CisJc3RyZWFtX2FwcGx5 X3dvcmtlciA9IHdpbmZvOworfQorCisvKgorICogRm9ybSBhIHVuaXF1ZSBzYXZlcG9pbnQgbmFt ZSBmb3IgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4KKyAqCisgKiBOb3RlIHRoYXQgZGlmZmVy ZW50IHN1YnNjcmlwdGlvbnMgZm9yIHB1YmxpY2F0aW9ucyBvbiBkaWZmZXJlbnQgbm9kZXMgY2Fu CisgKiByZWNlaXZlIHNhbWUgcmVtb3RlIHhpZCwgc28gd2UgbmVlZCB0byB1c2Ugc3Vic2NyaXB0 aW9uIGlkIGFsb25nIHdpdGggaXQuCisgKgorICogUmV0dXJuIHRoZSBuYW1lIGluIHRoZSBzdXBw bGllZCBidWZmZXIuCisgKi8KK3N0YXRpYyB2b2lkCitwYV9zYXZlcG9pbnRfbmFtZShPaWQgc3Vi b2lkLCBUcmFuc2FjdGlvbklkIHhpZCwgY2hhciAqc3BuYW1lLCBTaXplIHN6c3ApCit7CisJc25w cmludGYoc3BuYW1lLCBzenNwLCAicGdfc3BfJXVfJXUiLCBzdWJvaWQsIHhpZCk7Cit9CisKKy8q CisgKiBEZWZpbmUgYSBzYXZlcG9pbnQgZm9yIGEgc3VieGFjdCBpbiBwYXJhbGxlbCBhcHBseSB3 b3JrZXIgaWYgbmVlZGVkLgorICoKKyAqIFRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgY2FuIGZp Z3VyZSBvdXQgaWYgYSBuZXcgc3VidHJhbnNhY3Rpb24gd2FzCisgKiBzdGFydGVkIGJ5IGNoZWNr aW5nIGlmIHRoZSBuZXcgY2hhbmdlIGFycml2ZWQgd2l0aCBhIGRpZmZlcmVudCB4aWQuIEluIHRo YXQKKyAqIGNhc2UgZGVmaW5lIGEgbmFtZWQgc2F2ZXBvaW50LCBzbyB0aGF0IHdlIGFyZSBhYmxl IHRvIHJvbGxiYWNrIHRvIGl0CisgKiBpZiByZXF1aXJlZC4KKyAqLwordm9pZAorcGFfc3RhcnRf c3VidHJhbnMoVHJhbnNhY3Rpb25JZCBjdXJyZW50X3hpZCwgVHJhbnNhY3Rpb25JZCB0b3BfeGlk KQoreworCWlmIChjdXJyZW50X3hpZCAhPSB0b3BfeGlkICYmCisJCSFsaXN0X21lbWJlcl94aWQo c3VieGFjdGxpc3QsIGN1cnJlbnRfeGlkKSkKKwl7CisJCU1lbW9yeUNvbnRleHQgb2xkY3R4Owor CQljaGFyCQlzcG5hbWVbTkFNRURBVEFMRU5dOworCisJCXBhX3NhdmVwb2ludF9uYW1lKE15U3Vi c2NyaXB0aW9uLT5vaWQsIGN1cnJlbnRfeGlkLAorCQkJCQkJICBzcG5hbWUsIHNpemVvZihzcG5h bWUpKTsKKworCQllbG9nKERFQlVHMSwgImRlZmluaW5nIHNhdmVwb2ludCAlcyBpbiBsb2dpY2Fs IHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciIsIHNwbmFtZSk7CisKKwkJLyogV2Ug bXVzdCBiZSBpbiB0cmFuc2FjdGlvbiBibG9jayB0byBkZWZpbmUgdGhlIFNBVkVQT0lOVC4gKi8K KwkJaWYgKCFJc1RyYW5zYWN0aW9uQmxvY2soKSkKKwkJeworCQkJaWYgKCFJc1RyYW5zYWN0aW9u U3RhdGUoKSkKKwkJCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCQlCZWdpblRyYW5z YWN0aW9uQmxvY2soKTsKKwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQl9CisKKwkJ RGVmaW5lU2F2ZXBvaW50KHNwbmFtZSk7CisKKwkJLyoKKwkJICogQ29tbWl0VHJhbnNhY3Rpb25D b21tYW5kIGlzIG5lZWRlZCB0byBzdGFydCBhIHN1YnRyYW5zYWN0aW9uIGFmdGVyCisJCSAqIGlz c3VpbmcgYSBTQVZFUE9JTlQgaW5zaWRlIGEgdHJhbnNhY3Rpb24gYmxvY2sgKHNlZQorCQkgKiBT dGFydFN1YlRyYW5zYWN0aW9uKCkpLgorCQkgKi8KKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5k KCk7CisKKwkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKFRvcFRyYW5zYWN0aW9uQ29u dGV4dCk7CisJCXN1YnhhY3RsaXN0ID0gbGFwcGVuZF94aWQoc3VieGFjdGxpc3QsIGN1cnJlbnRf eGlkKTsKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CisJfQorfQorCisvKiBSZXNl dCB0aGUgbGlzdCB0aGF0IG1haW50YWlucyBzdWJ0cmFuc2FjdGlvbnMuICovCit2b2lkCitwYV9y ZXNldF9zdWJ0cmFucyh2b2lkKQoreworCS8qCisJICogV2UgZG9uJ3QgbmVlZCB0byBmcmVlIHRo aXMgZXhwbGljaXRseSBhcyB0aGUgYWxsb2NhdGVkIG1lbW9yeSB3aWxsIGJlCisJICogZnJlZWQg YXQgdGhlIHRyYW5zYWN0aW9uIGVuZC4KKwkgKi8KKwlzdWJ4YWN0bGlzdCA9IE5JTDsKK30KKwor LyoKKyAqIEhhbmRsZSBTVFJFQU0gQUJPUlQgbWVzc2FnZSB3aGVuIHRoZSB0cmFuc2FjdGlvbiB3 YXMgYXBwbGllZCBpbiBhIHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXIuCisgKi8KK3ZvaWQKK3Bh X3N0cmVhbV9hYm9ydChMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhICphYm9ydF9kYXRhKQorewor CVRyYW5zYWN0aW9uSWQgeGlkID0gYWJvcnRfZGF0YS0+eGlkOworCVRyYW5zYWN0aW9uSWQgc3Vi eGlkID0gYWJvcnRfZGF0YS0+c3VieGlkOworCisJLyoKKwkgKiBVcGRhdGUgb3JpZ2luIHN0YXRl IHNvIHdlIGNhbiByZXN0YXJ0IHN0cmVhbWluZyBmcm9tIGNvcnJlY3QgcG9zaXRpb24KKwkgKiBp biBjYXNlIG9mIGNyYXNoLgorCSAqLworCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fbHNuID0g YWJvcnRfZGF0YS0+YWJvcnRfbHNuOworCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fdGltZXN0 YW1wID0gYWJvcnRfZGF0YS0+YWJvcnRfdGltZTsKKworCS8qCisJICogSWYgdGhlIHR3byBYSURz IGFyZSB0aGUgc2FtZSwgaXQncyBpbiBmYWN0IGFib3J0IG9mIHRvcGxldmVsIHhhY3QsIHNvCisJ ICoganVzdCBmcmVlIHRoZSBzdWJ4YWN0bGlzdC4KKwkgKi8KKwlpZiAoc3VieGlkID09IHhpZCkK Kwl7CisJCS8qCisJCSAqIFJlbGVhc2UgdGhlIGxvY2sgYXMgd2UgbWlnaHQgYmUgcHJvY2Vzc2lu ZyBhbiBlbXB0eSBzdHJlYW1pbmcKKwkJICogdHJhbnNhY3Rpb24gaW4gd2hpY2ggY2FzZSB0aGUg bG9jayB3b24ndCBiZSByZWxlYXNlZCBkdXJpbmcKKwkJICogdHJhbnNhY3Rpb24gcm9sbGJhY2su CisJCSAqLworCQlwYV91bmxvY2tfdHJhbnNhY3Rpb24oeGlkLCBBY2Nlc3NTaGFyZUxvY2spOwor CisJCUFib3J0Q3VycmVudFRyYW5zYWN0aW9uKCk7CisKKwkJaWYgKElzVHJhbnNhY3Rpb25CbG9j aygpKQorCQl7CisJCQlFbmRUcmFuc2FjdGlvbkJsb2NrKGZhbHNlKTsKKwkJCUNvbW1pdFRyYW5z YWN0aW9uQ29tbWFuZCgpOworCQl9CisKKwkJcGFfcmVzZXRfc3VidHJhbnMoKTsKKworCQlwZ3N0 YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5VTEwpOworCisJCXBhX3NldF94YWN0X3N0 YXRlKE15UGFyYWxsZWxTaGFyZWQsIFBBUkFMTEVMX1RSQU5TX0ZJTklTSEVEKTsKKwl9CisJZWxz ZQorCXsKKwkJLyogT0ssIHNvIGl0J3MgYSBzdWJ4YWN0LiBSb2xsYmFjayB0byB0aGUgc2F2ZXBv aW50LiAqLworCQlpbnQJCQlpOworCQljaGFyCQlzcG5hbWVbTkFNRURBVEFMRU5dOworCisJCXBh X3NhdmVwb2ludF9uYW1lKE15U3Vic2NyaXB0aW9uLT5vaWQsIHN1YnhpZCwgc3BuYW1lLCBzaXpl b2Yoc3BuYW1lKSk7CisKKwkJZWxvZyhERUJVRzEsICJyb2xsaW5nIGJhY2sgdG8gc2F2ZXBvaW50 ICVzIGluIGxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIiwgc3BuYW1l KTsKKworCQkvKgorCQkgKiBTZWFyY2ggdGhlIHN1YnhhY3RsaXN0LCBkZXRlcm1pbmUgdGhlIG9m ZnNldCB0cmFja2VkIGZvciB0aGUKKwkJICogc3VieGFjdCwgYW5kIHRydW5jYXRlIHRoZSBsaXN0 LgorCQkgKgorCQkgKiBOb3RlIHRoYXQgSWYgaXQncyBhbiBlbXB0eSBzdWItdHJhbnNhY3Rpb24g dGhlbiB3ZSB3aWxsIG5vdCBmaW5kCisJCSAqIHRoZSBzdWJ4aWQgaGVyZS4KKwkJICovCisJCWZv ciAoaSA9IGxpc3RfbGVuZ3RoKHN1YnhhY3RsaXN0KSAtIDE7IGkgPj0gMDsgaS0tKQorCQl7CisJ CQlUcmFuc2FjdGlvbklkIHhpZF90bXAgPSBsZmlyc3RfeGlkKGxpc3RfbnRoX2NlbGwoc3VieGFj dGxpc3QsIGkpKTsKKworCQkJaWYgKHhpZF90bXAgPT0gc3VieGlkKQorCQkJeworCQkJCVJvbGxi YWNrVG9TYXZlcG9pbnQoc3BuYW1lKTsKKwkJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsK KwkJCQlzdWJ4YWN0bGlzdCA9IGxpc3RfdHJ1bmNhdGUoc3VieGFjdGxpc3QsIGkgKyAxKTsKKwkJ CQlicmVhazsKKwkJCX0KKwkJfQorCisJCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURM RUlOVFJBTlNBQ1RJT04sIE5VTEwpOworCX0KK30KKworLyoKKyAqIEhlbHBlciBmdW5jdGlvbnMg dG8gYWNxdWlyZSBhbmQgcmVsZWFzZSBhIGxvY2sgZm9yIGVhY2ggc3RyZWFtIGJsb2NrLgorICoK KyAqIFNldCBsb2NrdGFnX2ZpZWxkNCB0byBQQVJBTExFTF9BUFBMWV9MT0NLX1NUUkVBTSB0byBp bmRpY2F0ZSB0aGF0IGl0J3MgYQorICogc3RyZWFtIGxvY2suCisgKgorICogUmVmZXIgdG8gdGhl IGNvbW1lbnRzIGF0b3AgdGhpcyBmaWxlIHRvIHNlZSBob3cgdGhlIHN0cmVhbSBsb2NrIGlzIHVz ZWQuCisgKi8KK3ZvaWQKK3BhX2xvY2tfc3RyZWFtKFRyYW5zYWN0aW9uSWQgeGlkLCBMT0NLTU9E RSBsb2NrbW9kZSkKK3sKKwlMb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNlc3Npb24oTXlMb2dpY2Fs UmVwV29ya2VyLT5zdWJpZCwgeGlkLAorCQkJCQkJCQkgICBQQVJBTExFTF9BUFBMWV9MT0NLX1NU UkVBTSwgbG9ja21vZGUpOworfQorCit2b2lkCitwYV91bmxvY2tfc3RyZWFtKFRyYW5zYWN0aW9u SWQgeGlkLCBMT0NLTU9ERSBsb2NrbW9kZSkKK3sKKwlVbmxvY2tBcHBseVRyYW5zYWN0aW9uRm9y U2Vzc2lvbihNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQsCisJCQkJCQkJCQkgUEFSQUxM RUxfQVBQTFlfTE9DS19TVFJFQU0sIGxvY2ttb2RlKTsKK30KKworLyoKKyAqIEhlbHBlciBmdW5j dGlvbnMgdG8gYWNxdWlyZSBhbmQgcmVsZWFzZSBhIGxvY2sgZm9yIGVhY2ggbG9jYWwgdHJhbnNh Y3Rpb24KKyAqIGFwcGx5LgorICoKKyAqIFNldCBsb2NrdGFnX2ZpZWxkNCB0byBQQVJBTExFTF9B UFBMWV9MT0NLX1hBQ1QgdG8gaW5kaWNhdGUgdGhhdCBpdCdzIGEKKyAqIHRyYW5zYWN0aW9uIGxv Y2suCisgKgorICogTm90ZSB0aGF0IGFsbCB0aGUgY2FsbGVycyBtdXN0IHBhc3MgYSByZW1vdGUg dHJhbnNhY3Rpb24gSUQgaW5zdGVhZCBvZiBhCisgKiBsb2NhbCB0cmFuc2FjdGlvbiBJRCBhcyB4 aWQuIFRoaXMgaXMgYmVjYXVzZSB0aGUgbG9jYWwgdHJhbnNhY3Rpb24gSUQgd2lsbAorICogb25s eSBiZSBhc3NpZ25lZCB3aGlsZSBhcHBseWluZyB0aGUgZmlyc3QgY2hhbmdlIGluIHRoZSBwYXJh bGxlbCBhcHBseSBidXQKKyAqIGl0J3MgcG9zc2libGUgdGhhdCB0aGUgZmlyc3QgY2hhbmdlIGlu IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaXMgYmxvY2tlZAorICogYnkgYSBjb25jdXJyZW50 bHkgZXhlY3V0aW5nIHRyYW5zYWN0aW9uIGluIGFub3RoZXIgcGFyYWxsZWwgYXBwbHkgd29ya2Vy LiBXZQorICogY2FuIG9ubHkgY29tbXVuaWNhdGUgdGhlIGxvY2FsIHRyYW5zYWN0aW9uIGlkIHRv IHRoZSBsZWFkZXIgYWZ0ZXIgYXBwbHlpbmcKKyAqIHRoZSBmaXJzdCBjaGFuZ2Ugc28gaXQgd29u J3QgYmUgYWJsZSB0byB3YWl0IGFmdGVyIHNlbmRpbmcgdGhlIHhhY3QgZmluaXNoCisgKiBjb21t YW5kIHVzaW5nIHRoaXMgbG9jay4KKyAqCisgKiBSZWZlciB0byB0aGUgY29tbWVudHMgYXRvcCB0 aGlzIGZpbGUgdG8gc2VlIGhvdyB0aGUgdHJhbnNhY3Rpb24gbG9jayBpcworICogdXNlZC4KKyAq Lwordm9pZAorcGFfbG9ja190cmFuc2FjdGlvbihUcmFuc2FjdGlvbklkIHhpZCwgTE9DS01PREUg bG9ja21vZGUpCit7CisJTG9ja0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNzaW9uKE15TG9naWNhbFJl cFdvcmtlci0+c3ViaWQsIHhpZCwKKwkJCQkJCQkJICAgUEFSQUxMRUxfQVBQTFlfTE9DS19YQUNU LCBsb2NrbW9kZSk7Cit9CisKK3ZvaWQKK3BhX3VubG9ja190cmFuc2FjdGlvbihUcmFuc2FjdGlv bklkIHhpZCwgTE9DS01PREUgbG9ja21vZGUpCit7CisJVW5sb2NrQXBwbHlUcmFuc2FjdGlvbkZv clNlc3Npb24oTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkLAorCQkJCQkJCQkJIFBBUkFM TEVMX0FQUExZX0xPQ0tfWEFDVCwgbG9ja21vZGUpOworfQorCisvKgorICogSW5jcmVtZW50IHRo ZSBudW1iZXIgb2YgcGVuZGluZyBzdHJlYW1pbmcgYmxvY2tzLgorICovCit2b2lkCitwYV9pbmNy ZW1lbnRfc3RyZWFtX2Jsb2NrKFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKndzaGFyZWQpCit7 CisJd2hpbGUgKDEpCisJeworCQlTcGluTG9ja0FjcXVpcmUoJndzaGFyZWQtPm11dGV4KTsKKwor CQkvKgorCQkgKiBEb24ndCB0cnkgdG8gaW5jcmVtZW50IHRoZSBjb3VudCBpZiB0aGUgcGFyYWxs ZWwgYXBwbHkgd29ya2VyIGlzCisJCSAqIHRha2luZyB0aGUgc3RyZWFtIGxvY2suIE90aGVyd2lz ZSwgdGhlcmUgd291bGQgYmUgYSByYWNlIGNvbmRpdGlvbgorCQkgKiB0aGF0IHRoZSBwYXJhbGxl bCBhcHBseSB3b3JrZXIgY2hlY2tzIHRoZXJlIGlzIG5vIHBlbmRpbmcgc3RyZWFtaW5nCisJCSAq IGJsb2NrIGFuZCBiZWZvcmUgaXQgYWN0dWFsbHkgc3RhcnRzIHdhaXRpbmcgb24gYSBsb2NrLCB0 aGUgbGVhZGVyCisJCSAqIHNlbmRzIGFub3RoZXIgc3RyZWFtaW5nIGJsb2NrIGFuZCB0YWtlIHRo ZSBzdHJlYW0gbG9jayBhZ2Fpbi4gSW4KKwkJICogdGhpcyBjYXNlLCB0aGUgcGFyYWxsZWwgYXBw bHkgd29ya2VyIHdpbGwgc3RhcnQgd2FpdGluZyBmb3IgdGhlIG5leHQKKwkJICogc3RyZWFtaW5n IGJsb2NrIHdoZXJlYXMgdGhlcmUgaXMgYWN0dWFsbHkgYSBwZW5kaW5nIHN0cmVhbWluZyBibG9j aworCQkgKiBhdmFpbGFibGUuCisJCSAqLworCQlpZiAoIXdzaGFyZWQtPnBhX3dhaXRfZm9yX3N0 cmVhbSkKKwkJeworCQkJd3NoYXJlZC0+cGVuZGluZ19zdHJlYW1fY291bnQrKzsKKwkJCVNwaW5M b2NrUmVsZWFzZSgmd3NoYXJlZC0+bXV0ZXgpOworCQkJYnJlYWs7CisJCX0KKworCQlTcGluTG9j a1JlbGVhc2UoJndzaGFyZWQtPm11dGV4KTsKKwl9Cit9CisKKy8qCisgKiBEZWNyZW1lbnQgdGhl IG51bWJlciBvZiBwZW5kaW5nIHN0cmVhbWluZyBibG9ja3MgYW5kIHdhaXQgb24gdGhlIHN0cmVh bSBsb2NrCisgKiBpZiB0aGVyZSBpcyBubyBwZW5kaW5nIGJsb2NrIGF2YWlsYWJsZS4KKyAqLwor dm9pZAorcGFfZGVjcl9hbmRfd2FpdF9zdHJlYW1fYmxvY2soUGFyYWxsZWxBcHBseVdvcmtlclNo YXJlZCAqd3NoYXJlZCkKK3sKKwlBc3NlcnQoYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpOwor CisJLyoKKwkgKiBTZXQgdGhlIGZsYWcgdG8gaW5kaWNhdGUgdGhhdCB3ZSBhcmUgZ29pbmcgdG8g dGFrZSB0aGUgc3RyZWFtIGxvY2suCisJICovCisJU3BpbkxvY2tBY3F1aXJlKCZ3c2hhcmVkLT5t dXRleCk7CisJQXNzZXJ0KCF3c2hhcmVkLT5wYV93YWl0X2Zvcl9zdHJlYW0pOworCXdzaGFyZWQt PnBhX3dhaXRfZm9yX3N0cmVhbSA9IHRydWU7CisJU3BpbkxvY2tSZWxlYXNlKCZ3c2hhcmVkLT5t dXRleCk7CisKKwlpZiAoLS13c2hhcmVkLT5wZW5kaW5nX3N0cmVhbV9jb3VudCA9PSAwKQorCXsK KwkJcGFfbG9ja19zdHJlYW0od3NoYXJlZC0+eGlkLCBBY2Nlc3NTaGFyZUxvY2spOworCQlwYV91 bmxvY2tfc3RyZWFtKHdzaGFyZWQtPnhpZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwl9CisKKwlTcGlu TG9ja0FjcXVpcmUoJndzaGFyZWQtPm11dGV4KTsKKwl3c2hhcmVkLT5wYV93YWl0X2Zvcl9zdHJl YW0gPSBmYWxzZTsKKwlTcGluTG9ja1JlbGVhc2UoJndzaGFyZWQtPm11dGV4KTsKK30KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCmluZGV4IDJjYzBhYzkuLjMzZmRiZGMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKKysr IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwpAQCAtODIyLDEwICs4 MjIsMTEgQEAgRGVjb2RlQWJvcnQoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVj b3JkQnVmZmVyICpidWYsCiAJCWZvciAoaSA9IDA7IGkgPCBwYXJzZWQtPm5zdWJ4YWN0czsgaSsr KQogCQl7CiAJCQlSZW9yZGVyQnVmZmVyQWJvcnQoY3R4LT5yZW9yZGVyLCBwYXJzZWQtPnN1Ynhh Y3RzW2ldLAotCQkJCQkJCSAgIGJ1Zi0+cmVjb3JkLT5FbmRSZWNQdHIpOworCQkJCQkJCSAgIGJ1 Zi0+cmVjb3JkLT5FbmRSZWNQdHIsIGFib3J0X3RpbWUpOwogCQl9CiAKLQkJUmVvcmRlckJ1ZmZl ckFib3J0KGN0eC0+cmVvcmRlciwgeGlkLCBidWYtPnJlY29yZC0+RW5kUmVjUHRyKTsKKwkJUmVv cmRlckJ1ZmZlckFib3J0KGN0eC0+cmVvcmRlciwgeGlkLCBidWYtPnJlY29yZC0+RW5kUmVjUHRy LAorCQkJCQkJICAgYWJvcnRfdGltZSk7CiAJfQogCiAJLyogdXBkYXRlIHRoZSBkZWNvZGluZyBz dGF0cyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVu Y2hlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCmluZGV4 IDczNTk0YzYuLjBmODJkZDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvbGF1bmNoZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xh dW5jaGVyLmMKQEAgLTU1LDYgKzU1LDcgQEAKIC8qIEdVQyB2YXJpYWJsZXMgKi8KIGludAkJCW1h eF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMgPSA0OwogaW50CQkJbWF4X3N5bmNfd29ya2Vy c19wZXJfc3Vic2NyaXB0aW9uID0gMjsKK2ludAkJCW1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJz X3Blcl9zdWJzY3JpcHRpb24gPSAyOwogCiBMb2dpY2FsUmVwV29ya2VyICpNeUxvZ2ljYWxSZXBX b3JrZXIgPSBOVUxMOwogCkBAIC0xNTIsOCArMTUzLDEwIEBAIGdldF9zdWJzY3JpcHRpb25fbGlz dCh2b2lkKQogICoKICAqIFRoaXMgaXMgb25seSBuZWVkZWQgZm9yIGNsZWFuaW5nIHVwIHRoZSBz aGFyZWQgbWVtb3J5IGluIGNhc2UgdGhlIHdvcmtlcgogICogZmFpbHMgdG8gYXR0YWNoLgorICoK KyAqIFJldHVybiB3aGV0aGVyIHRoZSBhdHRhY2ggd2FzIHN1Y2Nlc3NmdWwuCiAgKi8KLXN0YXRp YyB2b2lkCitzdGF0aWMgYm9vbAogV2FpdEZvclJlcGxpY2F0aW9uV29ya2VyQXR0YWNoKExvZ2lj YWxSZXBXb3JrZXIgKndvcmtlciwKIAkJCQkJCQkgICB1aW50MTYgZ2VuZXJhdGlvbiwKIAkJCQkJ CQkgICBCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpoYW5kbGUpCkBAIC0xNjksMTEgKzE3MiwxMSBA QCBXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2goTG9naWNhbFJlcFdvcmtlciAqd29ya2Vy LAogCiAJCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CiAK LQkJLyogV29ya2VyIGVpdGhlciBkaWVkIG9yIGhhcyBzdGFydGVkOyBubyBuZWVkIHRvIGRvIGFu eXRoaW5nLiAqLworCQkvKiBXb3JrZXIgZWl0aGVyIGRpZWQgb3IgaGFzIHN0YXJ0ZWQuIFJldHVy biBmYWxzZSBpZiBkaWVkLiAqLwogCQlpZiAoIXdvcmtlci0+aW5fdXNlIHx8IHdvcmtlci0+cHJv YykKIAkJewogCQkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7Ci0JCQlyZXR1 cm47CisJCQlyZXR1cm4gd29ya2VyLT5pbl91c2U7CiAJCX0KIAogCQlMV0xvY2tSZWxlYXNlKExv Z2ljYWxSZXBXb3JrZXJMb2NrKTsKQEAgLTE4OCw3ICsxOTEsNyBAQCBXYWl0Rm9yUmVwbGljYXRp b25Xb3JrZXJBdHRhY2goTG9naWNhbFJlcFdvcmtlciAqd29ya2VyLAogCQkJaWYgKGdlbmVyYXRp b24gPT0gd29ya2VyLT5nZW5lcmF0aW9uKQogCQkJCWxvZ2ljYWxyZXBfd29ya2VyX2NsZWFudXAo d29ya2VyKTsKIAkJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwotCQkJcmV0 dXJuOworCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAKIAkJLyoKQEAgLTIxMCw2ICsyMTMsOCBAQCBX YWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2goTG9naWNhbFJlcFdvcmtlciAqd29ya2VyLAog LyoKICAqIFdhbGtzIHRoZSB3b3JrZXJzIGFycmF5IGFuZCBzZWFyY2hlcyBmb3Igb25lIHRoYXQg bWF0Y2hlcyBnaXZlbgogICogc3Vic2NyaXB0aW9uIGlkIGFuZCByZWxpZC4KKyAqCisgKiBXZSBh cmUgb25seSBpbnRlcmVzdGVkIGluIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIG9yIHRhYmxlIHN5 bmMgd29ya2VyLgogICovCiBMb2dpY2FsUmVwV29ya2VyICoKIGxvZ2ljYWxyZXBfd29ya2VyX2Zp bmQoT2lkIHN1YmlkLCBPaWQgcmVsaWQsIGJvb2wgb25seV9ydW5uaW5nKQpAQCAtMjI0LDYgKzIy OSwxMCBAQCBsb2dpY2FscmVwX3dvcmtlcl9maW5kKE9pZCBzdWJpZCwgT2lkIHJlbGlkLCBib29s IG9ubHlfcnVubmluZykKIAl7CiAJCUxvZ2ljYWxSZXBXb3JrZXIgKncgPSAmTG9naWNhbFJlcEN0 eC0+d29ya2Vyc1tpXTsKIAorCQkvKiBTa2lwIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuICovCisJ CWlmIChpc1BhcmFsbGVsQXBwbHlXb3JrZXIodykpCisJCQljb250aW51ZTsKKwogCQlpZiAody0+ aW5fdXNlICYmIHctPnN1YmlkID09IHN1YmlkICYmIHctPnJlbGlkID09IHJlbGlkICYmCiAJCQko IW9ubHlfcnVubmluZyB8fCB3LT5wcm9jKSkKIAkJewpAQCAtMjYwLDExICsyNjksMTMgQEAgbG9n aWNhbHJlcF93b3JrZXJzX2ZpbmQoT2lkIHN1YmlkLCBib29sIG9ubHlfcnVubmluZykKIH0KIAog LyoKLSAqIFN0YXJ0IG5ldyBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciwgaWYgcG9zc2libGUuCisg KiBTdGFydCBuZXcgbG9naWNhbCByZXBsaWNhdGlvbiBiYWNrZ3JvdW5kIHdvcmtlciwgaWYgcG9z c2libGUuCisgKgorICogUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGZhaWx1cmUu CiAgKi8KLXZvaWQKK2Jvb2wKIGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChPaWQgZGJpZCwgT2lk IHN1YmlkLCBjb25zdCBjaGFyICpzdWJuYW1lLCBPaWQgdXNlcmlkLAotCQkJCQkJIE9pZCByZWxp ZCkKKwkJCQkJCSBPaWQgcmVsaWQsIGRzbV9oYW5kbGUgc3Vid29ya2VyX2RzbSkKIHsKIAlCYWNr Z3JvdW5kV29ya2VyIGJndzsKIAlCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpiZ3dfaGFuZGxlOwpA QCAtMjczLDcgKzI4NCwxMiBAQCBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2goT2lkIGRiaWQsIE9p ZCBzdWJpZCwgY29uc3QgY2hhciAqc3VibmFtZSwgT2lkIHVzZXJpZCwKIAlpbnQJCQlzbG90ID0g MDsKIAlMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIgPSBOVUxMOwogCWludAkJCW5zeW5jd29ya2Vy czsKKwlpbnQJCQlucGFyYWxsZWxhcHBseXdvcmtlcnM7CiAJVGltZXN0YW1wVHogbm93OworCWJv b2wJCWlzX3BhcmFsbGVsX2FwcGx5X3dvcmtlciA9IChzdWJ3b3JrZXJfZHNtICE9IERTTV9IQU5E TEVfSU5WQUxJRCk7CisKKwkvKiBTYW5pdHkgY2hlY2sgLSB0YWJsZXN5bmMgd29ya2VyIGNhbm5v dCBiZSBhIHN1YndvcmtlciAqLworCUFzc2VydCghKGlzX3BhcmFsbGVsX2FwcGx5X3dvcmtlciAm JiBPaWRJc1ZhbGlkKHJlbGlkKSkpOwogCiAJZXJlcG9ydChERUJVRzEsCiAJCQkoZXJybXNnX2lu dGVybmFsKCJzdGFydGluZyBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBmb3Igc3Vic2NyaXB0 aW9uIFwiJXNcIiIsCkBAIC0zNTEsNyArMzY3LDI2IEBAIHJldHJ5OgogCWlmIChPaWRJc1ZhbGlk KHJlbGlkKSAmJiBuc3luY3dvcmtlcnMgPj0gbWF4X3N5bmNfd29ya2Vyc19wZXJfc3Vic2NyaXB0 aW9uKQogCXsKIAkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7Ci0JCXJldHVy bjsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCW5wYXJhbGxlbGFwcGx5d29ya2VycyA9IGxvZ2lj YWxyZXBfcGFfd29ya2VyX2NvdW50KHN1YmlkKTsKKworCS8qCisJICogUmV0dXJuIGZhbHNlIGlm IHRoZSBudW1iZXIgb2YgcGFyYWxsZWwgYXBwbHkgd29ya2VycyByZWFjaGVkIHRoZSBsaW1pdAor CSAqIHBlciBzdWJzY3JpcHRpb24uCisJICovCisJaWYgKGlzX3BhcmFsbGVsX2FwcGx5X3dvcmtl ciAmJgorCQlucGFyYWxsZWxhcHBseXdvcmtlcnMgPj0gbWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtl cnNfcGVyX3N1YnNjcmlwdGlvbikKKwl7CisJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtl ckxvY2spOworCisJCWVyZXBvcnQoTE9HLAorCQkJCShlcnJjb2RlKEVSUkNPREVfQ09ORklHVVJB VElPTl9MSU1JVF9FWENFRURFRCksCisJCQkJIGVycm1zZygib3V0IG9mIHBhcmFsbGVsIGFwcGx5 IHdvcmtlcnMiKSwKKwkJCQkgZXJyaGludCgiWW91IG1pZ2h0IG5lZWQgdG8gaW5jcmVhc2UgbWF4 X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbi4iKSkpOworCisJCXJldHVy biBmYWxzZTsKIAl9CiAKIAkvKgpAQCAtMzY1LDcgKzQwMCw3IEBAIHJldHJ5OgogCQkJCShlcnJj b2RlKEVSUkNPREVfQ09ORklHVVJBVElPTl9MSU1JVF9FWENFRURFRCksCiAJCQkJIGVycm1zZygi b3V0IG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIHNsb3RzIiksCiAJCQkJIGVycmhpbnQo IllvdSBtaWdodCBuZWVkIHRvIGluY3JlYXNlIG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtl cnMuIikpKTsKLQkJcmV0dXJuOworCQlyZXR1cm4gZmFsc2U7CiAJfQogCiAJLyogUHJlcGFyZSB0 aGUgd29ya2VyIHNsb3QuICovCkBAIC0zODAsNiArNDE1LDggQEAgcmV0cnk6CiAJd29ya2VyLT5y ZWxzdGF0ZSA9IFNVQlJFTF9TVEFURV9VTktOT1dOOwogCXdvcmtlci0+cmVsc3RhdGVfbHNuID0g SW52YWxpZFhMb2dSZWNQdHI7CiAJd29ya2VyLT5zdHJlYW1fZmlsZXNldCA9IE5VTEw7CisJd29y a2VyLT5hcHBseV9sZWFkZXJfcGlkID0gaXNfcGFyYWxsZWxfYXBwbHlfd29ya2VyID8gTXlQcm9j UGlkIDogSW52YWxpZFBpZDsKKwl3b3JrZXItPnBhcmFsbGVsX2FwcGx5ID0gaXNfcGFyYWxsZWxf YXBwbHlfd29ya2VyOwogCXdvcmtlci0+bGFzdF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAlU SU1FU1RBTVBfTk9CRUdJTih3b3JrZXItPmxhc3Rfc2VuZF90aW1lKTsKIAlUSU1FU1RBTVBfTk9C RUdJTih3b3JrZXItPmxhc3RfcmVjdl90aW1lKTsKQEAgLTM5NywxOSArNDM0LDM0IEBAIHJldHJ5 OgogCQlCR1dPUktFUl9CQUNLRU5EX0RBVEFCQVNFX0NPTk5FQ1RJT047CiAJYmd3LmJnd19zdGFy dF90aW1lID0gQmdXb3JrZXJTdGFydF9SZWNvdmVyeUZpbmlzaGVkOwogCXNucHJpbnRmKGJndy5i Z3dfbGlicmFyeV9uYW1lLCBCR1dfTUFYTEVOLCAicG9zdGdyZXMiKTsKLQlzbnByaW50ZihiZ3cu Ymd3X2Z1bmN0aW9uX25hbWUsIEJHV19NQVhMRU4sICJBcHBseVdvcmtlck1haW4iKTsKKworCWlm IChpc19wYXJhbGxlbF9hcHBseV93b3JrZXIpCisJCXNucHJpbnRmKGJndy5iZ3dfZnVuY3Rpb25f bmFtZSwgQkdXX01BWExFTiwgIlBhcmFsbGVsQXBwbHlXb3JrZXJNYWluIik7CisJZWxzZQorCQlz bnByaW50ZihiZ3cuYmd3X2Z1bmN0aW9uX25hbWUsIEJHV19NQVhMRU4sICJBcHBseVdvcmtlck1h aW4iKTsKKwogCWlmIChPaWRJc1ZhbGlkKHJlbGlkKSkKIAkJc25wcmludGYoYmd3LmJnd19uYW1l LCBCR1dfTUFYTEVOLAogCQkJCSAibG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgZm9yIHN1YnNj cmlwdGlvbiAldSBzeW5jICV1Iiwgc3ViaWQsIHJlbGlkKTsKKwllbHNlIGlmIChpc19wYXJhbGxl bF9hcHBseV93b3JrZXIpCisJCXNucHJpbnRmKGJndy5iZ3dfbmFtZSwgQkdXX01BWExFTiwKKwkJ CQkgImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZvciBzdWJzY3Jp cHRpb24gJXUiLCBzdWJpZCk7CiAJZWxzZQogCQlzbnByaW50ZihiZ3cuYmd3X25hbWUsIEJHV19N QVhMRU4sCi0JCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBmb3Igc3Vic2NyaXB0aW9u ICV1Iiwgc3ViaWQpOwotCXNucHJpbnRmKGJndy5iZ3dfdHlwZSwgQkdXX01BWExFTiwgImxvZ2lj YWwgcmVwbGljYXRpb24gd29ya2VyIik7CisJCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5 IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uICV1Iiwgc3ViaWQpOworCisJaWYgKGlzX3BhcmFsbGVs X2FwcGx5X3dvcmtlcikKKwkJc25wcmludGYoYmd3LmJnd190eXBlLCBCR1dfTUFYTEVOLCAibG9n aWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCB3b3JrZXIiKTsKKwllbHNlCisJCXNucHJpbnRmKGJn dy5iZ3dfdHlwZSwgQkdXX01BWExFTiwgImxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIik7CiAK IAliZ3cuYmd3X3Jlc3RhcnRfdGltZSA9IEJHV19ORVZFUl9SRVNUQVJUOwogCWJndy5iZ3dfbm90 aWZ5X3BpZCA9IE15UHJvY1BpZDsKIAliZ3cuYmd3X21haW5fYXJnID0gSW50MzJHZXREYXR1bShz bG90KTsKIAorCWlmIChpc19wYXJhbGxlbF9hcHBseV93b3JrZXIpCisJCW1lbWNweShiZ3cuYmd3 X2V4dHJhLCAmc3Vid29ya2VyX2RzbSwgc2l6ZW9mKGRzbV9oYW5kbGUpKTsKKwogCWlmICghUmVn aXN0ZXJEeW5hbWljQmFja2dyb3VuZFdvcmtlcigmYmd3LCAmYmd3X2hhbmRsZSkpCiAJewogCQkv KiBGYWlsZWQgdG8gc3RhcnQgd29ya2VyLCBzbyBjbGVhbiB1cCB0aGUgd29ya2VyIHNsb3QuICov CkBAIC00MjIsMzMgKzQ3NCwyMyBAQCByZXRyeToKIAkJCQkoZXJyY29kZShFUlJDT0RFX0NPTkZJ R1VSQVRJT05fTElNSVRfRVhDRUVERUQpLAogCQkJCSBlcnJtc2coIm91dCBvZiBiYWNrZ3JvdW5k IHdvcmtlciBzbG90cyIpLAogCQkJCSBlcnJoaW50KCJZb3UgbWlnaHQgbmVlZCB0byBpbmNyZWFz ZSBtYXhfd29ya2VyX3Byb2Nlc3Nlcy4iKSkpOwotCQlyZXR1cm47CisJCXJldHVybiBmYWxzZTsK IAl9CiAKIAkvKiBOb3cgd2FpdCB1bnRpbCBpdCBhdHRhY2hlcy4gKi8KLQlXYWl0Rm9yUmVwbGlj YXRpb25Xb3JrZXJBdHRhY2god29ya2VyLCBnZW5lcmF0aW9uLCBiZ3dfaGFuZGxlKTsKKwlyZXR1 cm4gV2FpdEZvclJlcGxpY2F0aW9uV29ya2VyQXR0YWNoKHdvcmtlciwgZ2VuZXJhdGlvbiwgYmd3 X2hhbmRsZSk7CiB9CiAKIC8qCi0gKiBTdG9wIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtl ciBmb3Igc3ViaWQvcmVsaWQsIGlmIGFueSwgYW5kIHdhaXQgdW50aWwKLSAqIGl0IGRldGFjaGVz IGZyb20gdGhlIHNsb3QuCisgKiBJbnRlcm5hbCBmdW5jdGlvbiB0byBzdG9wIHRoZSB3b3JrZXIg YW5kIHdhaXQgdW50aWwgaXQgZGV0YWNoZXMgZnJvbSB0aGUKKyAqIHNsb3QuCiAgKi8KLXZvaWQK LWxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpCitzdGF0aWMgdm9p ZAorbG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbChMb2dpY2FsUmVwV29ya2VyICp3b3Jr ZXIsIGludCBzaWdubykKIHsKLQlMb2dpY2FsUmVwV29ya2VyICp3b3JrZXI7CiAJdWludDE2CQln ZW5lcmF0aW9uOwogCi0JTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hB UkVEKTsKLQotCXdvcmtlciA9IGxvZ2ljYWxyZXBfd29ya2VyX2ZpbmQoc3ViaWQsIHJlbGlkLCBm YWxzZSk7Ci0KLQkvKiBObyB3b3JrZXIsIG5vdGhpbmcgdG8gZG8uICovCi0JaWYgKCF3b3JrZXIp Ci0JewotCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKLQkJcmV0dXJuOwot CX0KKwlBc3NlcnQoTFdMb2NrSGVsZEJ5TWVJbk1vZGUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExX X1NIQVJFRCkpOwogCiAJLyoKIAkgKiBSZW1lbWJlciB3aGljaCBnZW5lcmF0aW9uIHdhcyBvdXIg d29ya2VyIHNvIHdlIGNhbiBjaGVjayBpZiB3aGF0IHdlIHNlZQpAQCAtNDg2LDEwICs1MjgsNyBA QCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wKE9pZCBzdWJpZCwgT2lkIHJlbGlkKQogCQkgKiBkaWZm ZXJlbnQsIG1lYW5pbmcgdGhhdCBhIGRpZmZlcmVudCB3b3JrZXIgaGFzIHRha2VuIHRoZSBzbG90 LgogCQkgKi8KIAkJaWYgKCF3b3JrZXItPmluX3VzZSB8fCB3b3JrZXItPmdlbmVyYXRpb24gIT0g Z2VuZXJhdGlvbikKLQkJewotCQkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7 CiAJCQlyZXR1cm47Ci0JCX0KIAogCQkvKiBXb3JrZXIgaGFzIGFzc2lnbmVkIHByb2MsIHNvIGl0 IGhhcyBzdGFydGVkLiAqLwogCQlpZiAod29ya2VyLT5wcm9jKQpAQCAtNDk3LDcgKzUzNiw3IEBA IGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpCiAJfQogCiAJLyog Tm93IHRlcm1pbmF0ZSB0aGUgd29ya2VyIC4uLiAqLwotCWtpbGwod29ya2VyLT5wcm9jLT5waWQs IFNJR1RFUk0pOworCWtpbGwod29ya2VyLT5wcm9jLT5waWQsIHNpZ25vKTsKIAogCS8qIC4uLiBh bmQgd2FpdCBmb3IgaXQgdG8gZGllLiAqLwogCWZvciAoOzspCkBAIC01MjMsNiArNTYyLDUzIEBA IGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpCiAKIAkJTFdMb2Nr QWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKIAl9Cit9CisKKy8qCisg KiBTdG9wIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBmb3Igc3ViaWQvcmVsaWQsIGlm IGFueS4KKyAqLwordm9pZAorbG9naWNhbHJlcF93b3JrZXJfc3RvcChPaWQgc3ViaWQsIE9pZCBy ZWxpZCkKK3sKKwlMb2dpY2FsUmVwV29ya2VyICp3b3JrZXI7CisKKwlMV0xvY2tBY3F1aXJlKExv Z2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOworCisJd29ya2VyID0gbG9naWNhbHJlcF93 b3JrZXJfZmluZChzdWJpZCwgcmVsaWQsIGZhbHNlKTsKKworCWlmICh3b3JrZXIpCisJeworCQlB c3NlcnQoIWlzUGFyYWxsZWxBcHBseVdvcmtlcih3b3JrZXIpKTsKKwkJbG9naWNhbHJlcF93b3Jr ZXJfc3RvcF9pbnRlcm5hbCh3b3JrZXIsIFNJR1RFUk0pOworCX0KKworCUxXTG9ja1JlbGVhc2Uo TG9naWNhbFJlcFdvcmtlckxvY2spOworfQorCisvKgorICogU3RvcCB0aGUgbG9naWNhbCByZXBs aWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgY29ycmVzcG9uZGluZyB0byB0aGUKKyAqIGlu cHV0IHNsb3QgbnVtYmVyLgorICoKKyAqIE5vZGUgdGhhdCB0aGUgZnVuY3Rpb24gc2VuZHMgU0lH SU5UIGluc3RlYWQgb2YgU0lHVEVSTSB0byB0aGUgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlciBz byB0aGF0IHRoZSB3b3JrZXIgZXhpdHMgY2xlYW5seS4KKyAqLwordm9pZAorbG9naWNhbHJlcF9w YV93b3JrZXJfc3RvcChpbnQgc2xvdF9ubywgdWludDE2IGdlbmVyYXRpb24pCit7CisJTG9naWNh bFJlcFdvcmtlciAqd29ya2VyOworCisJQXNzZXJ0KHNsb3Rfbm8gPj0gMCAmJiBzbG90X25vIDwg bWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2Vycyk7CisKKwlMV0xvY2tBY3F1aXJlKExvZ2lj YWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOworCisJd29ya2VyID0gJkxvZ2ljYWxSZXBDdHgt PndvcmtlcnNbc2xvdF9ub107CisJQXNzZXJ0KGlzUGFyYWxsZWxBcHBseVdvcmtlcih3b3JrZXIp KTsKKworCS8qCisJICogT25seSBzdG9wIHRoZSB3b3JrZXIgaWYgdGhlIGdlbmVyYXRpb24gbWF0 Y2hlcyBhbmQgdGhlIHdvcmtlciBpcyBhbGl2ZS4KKwkgKi8KKwlpZiAod29ya2VyLT5nZW5lcmF0 aW9uID09IGdlbmVyYXRpb24gJiYgd29ya2VyLT5wcm9jKQorCQlsb2dpY2FscmVwX3dvcmtlcl9z dG9wX2ludGVybmFsKHdvcmtlciwgU0lHSU5UKTsKIAogCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJl cFdvcmtlckxvY2spOwogfQpAQCAtNTk1LDExICs2ODEsNDAgQEAgbG9naWNhbHJlcF93b3JrZXJf YXR0YWNoKGludCBzbG90KQogfQogCiAvKgotICogRGV0YWNoIHRoZSB3b3JrZXIgKGNsZWFucyB1 cCB0aGUgd29ya2VyIGluZm8pLgorICogU3RvcCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VycyBp ZiBhbnksIGFuZCBkZXRhY2ggdGhlIGxlYWRlciBhcHBseSB3b3JrZXIKKyAqIChjbGVhbnMgdXAg dGhlIHdvcmtlciBpbmZvKS4KICAqLwogc3RhdGljIHZvaWQKIGxvZ2ljYWxyZXBfd29ya2VyX2Rl dGFjaCh2b2lkKQogeworCS8qIFN0b3AgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuICovCisJ aWYgKGFtX2xlYWRlcl9hcHBseV93b3JrZXIoKSkKKwl7CisJCUxpc3QJICAgKndvcmtlcnM7CisJ CUxpc3RDZWxsICAgKmxjOworCisJCS8qCisJCSAqIERldGFjaCBmcm9tIHRoZSBlcnJvcl9tcV9o YW5kbGUgZm9yIGFsbCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzCisJCSAqIGJlZm9yZSB0ZXJtaW5h dGluZyB0aGVtLiBUaGlzIHByZXZlbnRzIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGZyb20KKwkJ ICogcmVjZWl2aW5nIHRoZSB3b3JrZXIgdGVybWluYXRpb24gbWVzc2FnZSBhbmQgc2VuZGluZyBp dCB0byBsb2dzIHdoZW4KKwkJICogdGhlIHNhbWUgaXMgYWxyZWFkeSBkb25lIGJ5IHRoZSBwYXJh bGxlbCB3b3JrZXIuCisJCSAqLworCQlwYV9kZXRhY2hfYWxsX2Vycm9yX21xKCk7CisKKwkJTFdM b2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKKworCQl3b3JrZXJz ID0gbG9naWNhbHJlcF93b3JrZXJzX2ZpbmQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgdHJ1 ZSk7CisJCWZvcmVhY2gobGMsIHdvcmtlcnMpCisJCXsKKwkJCUxvZ2ljYWxSZXBXb3JrZXIgKncg PSAoTG9naWNhbFJlcFdvcmtlciAqKSBsZmlyc3QobGMpOworCisJCQlpZiAoaXNQYXJhbGxlbEFw cGx5V29ya2VyKHcpKQorCQkJCWxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwodywgU0lH VEVSTSk7CisJCX0KKworCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKKwl9 CisKIAkvKiBCbG9jayBjb25jdXJyZW50IGFjY2Vzcy4gKi8KIAlMV0xvY2tBY3F1aXJlKExvZ2lj YWxSZXBXb3JrZXJMb2NrLCBMV19FWENMVVNJVkUpOwogCkBAIC02MjIsNiArNzM3LDggQEAgbG9n aWNhbHJlcF93b3JrZXJfY2xlYW51cChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpCiAJd29ya2Vy LT51c2VyaWQgPSBJbnZhbGlkT2lkOwogCXdvcmtlci0+c3ViaWQgPSBJbnZhbGlkT2lkOwogCXdv cmtlci0+cmVsaWQgPSBJbnZhbGlkT2lkOworCXdvcmtlci0+YXBwbHlfbGVhZGVyX3BpZCA9IElu dmFsaWRQaWQ7CisJd29ya2VyLT5wYXJhbGxlbF9hcHBseSA9IGZhbHNlOwogfQogCiAvKgpAQCAt NjUzLDYgKzc3MCwxMyBAQCBsb2dpY2FscmVwX3dvcmtlcl9vbmV4aXQoaW50IGNvZGUsIERhdHVt IGFyZykKIAlpZiAoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCAhPSBOVUxMKQog CQlGaWxlU2V0RGVsZXRlQWxsKE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQpOwog CisJLyoKKwkgKiBTZXNzaW9uIGxldmVsIGxvY2tzIG1heSBiZSBhY3F1aXJlZCBvdXRzaWRlIG9m IGEgdHJhbnNhY3Rpb24gaW4gcGFyYWxsZWwKKwkgKiBhcHBseSBtb2RlIGFuZCB3aWxsIG5vdCBi ZSByZWxlYXNlZCB3aGVuIHRoZSB3b3JrZXIgdGVybWluYXRlcywgc28KKwkgKiBtYW51YWxseSBy ZWxlYXNlIGFsbCBsb2NrcyBiZWZvcmUgdGhlIHdvcmtlciBleGl0cy4KKwkgKi8KKwlMb2NrUmVs ZWFzZUFsbChERUZBVUxUX0xPQ0tNRVRIT0QsIHRydWUpOworCiAJQXBwbHlMYXVuY2hlcldha2V1 cCgpOwogfQogCkBAIC02ODEsNiArODA1LDMzIEBAIGxvZ2ljYWxyZXBfc3luY193b3JrZXJfY291 bnQoT2lkIHN1YmlkKQogfQogCiAvKgorICogQ291bnQgdGhlIG51bWJlciBvZiByZWdpc3RlcmVk IChidXQgbm90IG5lY2Vzc2FyaWx5IHJ1bm5pbmcpIHBhcmFsbGVsIGFwcGx5CisgKiB3b3JrZXJz IGZvciBhIHN1YnNjcmlwdGlvbi4KKyAqLworaW50Citsb2dpY2FscmVwX3BhX3dvcmtlcl9jb3Vu dChPaWQgc3ViaWQpCit7CisJaW50CQkJaTsKKwlpbnQJCQlyZXMgPSAwOworCisJQXNzZXJ0KExX TG9ja0hlbGRCeU1lKExvZ2ljYWxSZXBXb3JrZXJMb2NrKSk7CisKKwkvKgorCSAqIFNjYW4gYWxs IGF0dGFjaGVkIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMsIG9ubHkgY291bnRpbmcgdGhvc2Ugd2hp Y2gKKwkgKiBoYXZlIHRoZSBnaXZlbiBzdWJzY3JpcHRpb24gaWQuCisJICovCisJZm9yIChpID0g MDsgaSA8IG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM7IGkrKykKKwl7CisJCUxvZ2lj YWxSZXBXb3JrZXIgKncgPSAmTG9naWNhbFJlcEN0eC0+d29ya2Vyc1tpXTsKKworCQlpZiAody0+ c3ViaWQgPT0gc3ViaWQgJiYgaXNQYXJhbGxlbEFwcGx5V29ya2VyKHcpKQorCQkJcmVzKys7CisJ fQorCisJcmV0dXJuIHJlczsKK30KKworLyoKICAqIEFwcGx5TGF1bmNoZXJTaG1lbVNpemUKICAq CQlDb21wdXRlIHNwYWNlIG5lZWRlZCBmb3IgcmVwbGljYXRpb24gbGF1bmNoZXIgc2hhcmVkIG1l bW9yeQogICovCkBAIC04NjksNyArMTAyMCw3IEBAIEFwcGx5TGF1bmNoZXJNYWluKERhdHVtIG1h aW5fYXJnKQogCQkJCQl3YWl0X3RpbWUgPSB3YWxfcmV0cmlldmVfcmV0cnlfaW50ZXJ2YWw7CiAK IAkJCQkJbG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKHN1Yi0+ZGJpZCwgc3ViLT5vaWQsIHN1Yi0+ bmFtZSwKLQkJCQkJCQkJCQkJIHN1Yi0+b3duZXIsIEludmFsaWRPaWQpOworCQkJCQkJCQkJCQkg c3ViLT5vd25lciwgSW52YWxpZE9pZCwgRFNNX0hBTkRMRV9JTlZBTElEKTsKIAkJCQl9CiAJCQl9 CiAKQEAgLTk1Miw2ICsxMTAzLDEwIEBAIHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbihQR19GVU5D VElPTl9BUkdTKQogCQlpZiAoT2lkSXNWYWxpZChzdWJpZCkgJiYgd29ya2VyLnN1YmlkICE9IHN1 YmlkKQogCQkJY29udGludWU7CiAKKwkJLyogU2tpcCBpZiB0aGlzIGlzIGEgcGFyYWxsZWwgYXBw bHkgd29ya2VyICovCisJCWlmIChpc1BhcmFsbGVsQXBwbHlXb3JrZXIoJndvcmtlcikpCisJCQlj b250aW51ZTsKKwogCQl3b3JrZXJfcGlkID0gd29ya2VyLnByb2MtPnBpZDsKIAogCQl2YWx1ZXNb MF0gPSBPYmplY3RJZEdldERhdHVtKHdvcmtlci5zdWJpZCk7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL21lc29uLmJ1aWxkIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9tZXNvbi5idWlsZAppbmRleCA3NzM1ODNhLi4yNmJmYzBlIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL21lc29uLmJ1aWxkCisrKyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbWVzb24uYnVpbGQKQEAgLTEsNCArMSw1IEBA CiBiYWNrZW5kX3NvdXJjZXMgKz0gZmlsZXMoCisgICdhcHBseXBhcmFsbGVsd29ya2VyLmMnLAog ICAnZGVjb2RlLmMnLAogICAnbGF1bmNoZXIuYycsCiAgICdsb2dpY2FsLmMnLApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMKaW5kZXggZjEzNGU0NC4uOGIwODM3OCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYworKysgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jCkBAIC0xMDc1LDEyICsxMDc1 LDIwIEBAIFJlcGxpY2F0aW9uT3JpZ2luRXhpdENsZWFudXAoaW50IGNvZGUsIERhdHVtIGFyZykK ICAqIGFycmF5IGRvZXNuJ3QgaGF2ZSB0byBiZSBzZWFyY2hlZCB3aGVuIGNhbGxpbmcKICAqIHJl cGxvcmlnaW5fc2Vzc2lvbl9hZHZhbmNlKCkuCiAgKgotICogT2J2aW91c2x5IG9ubHkgb25lIHN1 Y2ggY2FjaGVkIG9yaWdpbiBjYW4gZXhpc3QgcGVyIHByb2Nlc3MgYW5kIHRoZSBjdXJyZW50Ci0g KiBjYWNoZWQgdmFsdWUgY2FuIG9ubHkgYmUgc2V0IGFnYWluIGFmdGVyIHRoZSBwcmV2aW91cyB2 YWx1ZSBpcyB0b3JuIGRvd24KLSAqIHdpdGggcmVwbG9yaWdpbl9zZXNzaW9uX3Jlc2V0KCkuCisg KiBOb3JtYWxseSBvbmx5IG9uZSBzdWNoIGNhY2hlZCBvcmlnaW4gY2FuIGV4aXN0IHBlciBwcm9j ZXNzIHNvIHRoZSBjYWNoZWQKKyAqIHZhbHVlIGNhbiBvbmx5IGJlIHNldCBhZ2FpbiBhZnRlciB0 aGUgcHJldmlvdXMgdmFsdWUgaXMgdG9ybiBkb3duIHdpdGgKKyAqIHJlcGxvcmlnaW5fc2Vzc2lv bl9yZXNldCgpLiBGb3IgdGhpcyBub3JtYWwgY2FzZSBwYXNzIGFjcXVpcmVkX2J5ID0gMAorICog KG1lYW5pbmcgdGhlIHNsb3QgaXMgbm90IGFsbG93ZWQgdG8gYmUgYWxyZWFkeSBhY3F1aXJlZCBi eSBhbm90aGVyIHByb2Nlc3MpLgorICoKKyAqIEhvd2V2ZXIsIHNvbWV0aW1lcyBtdWx0aXBsZSBw cm9jZXNzZXMgY2FuIHNhZmVseSByZS11c2UgdGhlIHNhbWUgb3JpZ2luIHNsb3QKKyAqIChmb3Ig ZXhhbXBsZSwgbXVsdGlwbGUgcGFyYWxsZWwgYXBwbHkgcHJvY2Vzc2VzIGNhbiBzYWZlbHkgdXNl IHRoZSBzYW1lCisgKiBvcmlnaW4sIHByb3ZpZGVkIHRoZXkgbWFpbnRhaW4gY29tbWl0IG9yZGVy IGJ5IGFsbG93aW5nIG9ubHkgb25lIHByb2Nlc3MgdG8KKyAqIGNvbW1pdCBhdCBhIHRpbWUpLiBG b3IgdGhpcyBjYXNlIHRoZSBmaXJzdCBwcm9jZXNzIG11c3QgcGFzcyBhY3F1aXJlZF9ieSA9Cisg KiAwLCBhbmQgdGhlbiB0aGUgb3RoZXIgcHJvY2Vzc2VzIHNoYXJpbmcgdGhhdCBzYW1lIG9yaWdp biBjYW4gcGFzcworICogYWNxdWlyZWRfYnkgPSBQSUQgb2YgdGhlIGZpcnN0IHByb2Nlc3MuCiAg Ki8KIHZvaWQKLXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChSZXBPcmlnaW5JZCBub2RlKQorcmVw bG9yaWdpbl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUsIGludCBhY3F1aXJlZF9ieSkK IHsKIAlzdGF0aWMgYm9vbCByZWdpc3RlcmVkX2NsZWFudXA7CiAJaW50CQkJaTsKQEAgLTExMjIs NyArMTEzMCw3IEBAIHJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChSZXBPcmlnaW5JZCBub2RlKQog CQlpZiAoY3Vyc3RhdGUtPnJvaWRlbnQgIT0gbm9kZSkKIAkJCWNvbnRpbnVlOwogCi0JCWVsc2Ug aWYgKGN1cnN0YXRlLT5hY3F1aXJlZF9ieSAhPSAwKQorCQllbHNlIGlmIChjdXJzdGF0ZS0+YWNx dWlyZWRfYnkgIT0gMCAmJiBhY3F1aXJlZF9ieSA9PSAwKQogCQl7CiAJCQllcmVwb3J0KEVSUk9S LAogCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9JTl9VU0UpLApAQCAtMTE1Myw3ICsxMTYx LDExIEBAIHJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChSZXBPcmlnaW5JZCBub2RlKQogCiAJQXNz ZXJ0KHNlc3Npb25fcmVwbGljYXRpb25fc3RhdGUtPnJvaWRlbnQgIT0gSW52YWxpZFJlcE9yaWdp bklkKTsKIAotCXNlc3Npb25fcmVwbGljYXRpb25fc3RhdGUtPmFjcXVpcmVkX2J5ID0gTXlQcm9j UGlkOworCWlmIChhY3F1aXJlZF9ieSA9PSAwKQorCQlzZXNzaW9uX3JlcGxpY2F0aW9uX3N0YXRl LT5hY3F1aXJlZF9ieSA9IE15UHJvY1BpZDsKKwllbHNlIGlmIChzZXNzaW9uX3JlcGxpY2F0aW9u X3N0YXRlLT5hY3F1aXJlZF9ieSAhPSBhY3F1aXJlZF9ieSkKKwkJZWxvZyhFUlJPUiwgImNvdWxk IG5vdCBmaW5kIHJlcGxpY2F0aW9uIHN0YXRlIHNsb3QgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiB3 aXRoIE9JRCAldSB3aGljaCB3YXMgYWNxdWlyZWQgYnkgJWQiLAorCQkJIG5vZGUsIGFjcXVpcmVk X2J5KTsKIAogCUxXTG9ja1JlbGVhc2UoUmVwbGljYXRpb25PcmlnaW5Mb2NrKTsKIApAQCAtMTMz Nyw3ICsxMzQ5LDcgQEAgcGdfcmVwbGljYXRpb25fb3JpZ2luX3Nlc3Npb25fc2V0dXAoUEdfRlVO Q1RJT05fQVJHUykKIAogCW5hbWUgPSB0ZXh0X3RvX2NzdHJpbmcoKHRleHQgKikgRGF0dW1HZXRQ b2ludGVyKFBHX0dFVEFSR19EQVRVTSgwKSkpOwogCW9yaWdpbiA9IHJlcGxvcmlnaW5fYnlfbmFt ZShuYW1lLCBmYWxzZSk7Ci0JcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbik7CisJcmVw bG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbiwgMCk7CiAKIAlyZXBsb3JpZ2luX3Nlc3Npb25f b3JpZ2luID0gb3JpZ2luOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3Byb3RvLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMK aW5kZXggZjVmMmJjMi4uNzIzYmE0NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9wcm90by5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv cHJvdG8uYwpAQCAtMTE2NCwxMCArMTE2NCwxNCBAQCBsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Nv bW1pdChTdHJpbmdJbmZvIGluLCBMb2dpY2FsUmVwQ29tbWl0RGF0YSAqY29tbWl0X2RhdGEpCiAv KgogICogV3JpdGUgU1RSRUFNIEFCT1JUIHRvIHRoZSBvdXRwdXQgc3RyZWFtLiBOb3RlIHRoYXQg eGlkIGFuZCBzdWJ4aWQgd2lsbCBiZQogICogc2FtZSBmb3IgdGhlIHRvcC1sZXZlbCB0cmFuc2Fj dGlvbiBhYm9ydC4KKyAqCisgKiBJZiB3cml0ZV9hYm9ydF9pbmZvIGlzIHRydWUsIHNlbmQgdGhl IGFib3J0X2xzbiBhbmQgYWJvcnRfdGltZSBmaWVsZHMsCisgKiBvdGhlcndpc2UgZG9uJ3QuCiAg Ki8KIHZvaWQKIGxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gb3V0LCBU cmFuc2FjdGlvbklkIHhpZCwKLQkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgc3VieGlkKQorCQkJCQkJ CSAgVHJhbnNhY3Rpb25JZCBzdWJ4aWQsIFhMb2dSZWNQdHIgYWJvcnRfbHNuLAorCQkJCQkJCSAg VGltZXN0YW1wVHogYWJvcnRfdGltZSwgYm9vbCB3cml0ZV9hYm9ydF9pbmZvKQogewogCXBxX3Nl bmRieXRlKG91dCwgTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9BQk9SVCk7CiAKQEAgLTExNzYsMTkg KzExODAsNDAgQEAgbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBvdXQs IFRyYW5zYWN0aW9uSWQgeGlkLAogCS8qIHRyYW5zYWN0aW9uIElEICovCiAJcHFfc2VuZGludDMy KG91dCwgeGlkKTsKIAlwcV9zZW5kaW50MzIob3V0LCBzdWJ4aWQpOworCisJaWYgKHdyaXRlX2Fi b3J0X2luZm8pCisJeworCQlwcV9zZW5kaW50NjQob3V0LCBhYm9ydF9sc24pOworCQlwcV9zZW5k aW50NjQob3V0LCBhYm9ydF90aW1lKTsKKwl9CiB9CiAKIC8qCiAgKiBSZWFkIFNUUkVBTSBBQk9S VCBmcm9tIHRoZSBvdXRwdXQgc3RyZWFtLgorICoKKyAqIElmIHJlYWRfYWJvcnRfaW5mbyBpcyB0 cnVlLCByZWFkIHRoZSBhYm9ydF9sc24gYW5kIGFib3J0X3RpbWUgZmllbGRzLAorICogb3RoZXJ3 aXNlIGRvbid0LgogICovCiB2b2lkCi1sb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KFN0cmlu Z0luZm8gaW4sIFRyYW5zYWN0aW9uSWQgKnhpZCwKLQkJCQkJCQkgVHJhbnNhY3Rpb25JZCAqc3Vi eGlkKQorbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIGluLAorCQkJCQkJ CSBMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhICphYm9ydF9kYXRhLAorCQkJCQkJCSBib29sIHJl YWRfYWJvcnRfaW5mbykKIHsKLQlBc3NlcnQoeGlkICYmIHN1YnhpZCk7CisJQXNzZXJ0KGFib3J0 X2RhdGEpOworCisJYWJvcnRfZGF0YS0+eGlkID0gcHFfZ2V0bXNnaW50KGluLCA0KTsKKwlhYm9y dF9kYXRhLT5zdWJ4aWQgPSBwcV9nZXRtc2dpbnQoaW4sIDQpOwogCi0JKnhpZCA9IHBxX2dldG1z Z2ludChpbiwgNCk7Ci0JKnN1YnhpZCA9IHBxX2dldG1zZ2ludChpbiwgNCk7CisJaWYgKHJlYWRf YWJvcnRfaW5mbykKKwl7CisJCWFib3J0X2RhdGEtPmFib3J0X2xzbiA9IHBxX2dldG1zZ2ludDY0 KGluKTsKKwkJYWJvcnRfZGF0YS0+YWJvcnRfdGltZSA9IHBxX2dldG1zZ2ludDY0KGluKTsKKwl9 CisJZWxzZQorCXsKKwkJYWJvcnRfZGF0YS0+YWJvcnRfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7 CisJCWFib3J0X2RhdGEtPmFib3J0X3RpbWUgPSAwOworCX0KIH0KIAogLyoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKaW5kZXggYjU2N2I4Yi4u OGQ1YmJhYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9y ZGVyYnVmZmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVy YnVmZmVyLmMKQEAgLTI4NzAsNyArMjg3MCw4IEBAIFJlb3JkZXJCdWZmZXJGaW5pc2hQcmVwYXJl ZChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsCiAgKiBkaXNrLgogICovCiB2 b2lkCi1SZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQg eGlkLCBYTG9nUmVjUHRyIGxzbikKK1Jlb3JkZXJCdWZmZXJBYm9ydChSZW9yZGVyQnVmZmVyICpy YiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuLAorCQkJCSAgIFRpbWVzdGFtcFR6 IGFib3J0X3RpbWUpCiB7CiAJUmVvcmRlckJ1ZmZlclRYTiAqdHhuOwogCkBAIC0yODgxLDYgKzI4 ODIsOCBAQCBSZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9u SWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKIAlpZiAodHhuID09IE5VTEwpCiAJCXJldHVybjsKIAor CXR4bi0+eGFjdF90aW1lLmFib3J0X3RpbWUgPSBhYm9ydF90aW1lOworCiAJLyogRm9yIHN0cmVh bWVkIHRyYW5zYWN0aW9ucyBub3RpZnkgdGhlIHJlbW90ZSBub2RlIGFib3V0IHRoZSBhYm9ydC4g Ki8KIAlpZiAocmJ0eG5faXNfc3RyZWFtZWQodHhuKSkKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwppbmRleCA5NGU4MTNhLi5kYWVlYTZjIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCisrKyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKQEAgLTE0LDcgKzE0LDcg QEAKICAqCSAgVGhlIGluaXRpYWwgZGF0YSBzeW5jaHJvbml6YXRpb24gaXMgZG9uZSBzZXBhcmF0 ZWx5IGZvciBlYWNoIHRhYmxlLAogICoJICBpbiBhIHNlcGFyYXRlIGFwcGx5IHdvcmtlciB0aGF0 IG9ubHkgZmV0Y2hlcyB0aGUgaW5pdGlhbCBzbmFwc2hvdCBkYXRhCiAgKgkgIGZyb20gdGhlIHB1 Ymxpc2hlciBhbmQgdGhlbiBzeW5jaHJvbml6ZXMgdGhlIHBvc2l0aW9uIGluIHRoZSBzdHJlYW0g d2l0aAotICoJICB0aGUgbWFpbiBhcHBseSB3b3JrZXIuCisgKgkgIHRoZSBsZWFkZXIgYXBwbHkg d29ya2VyLgogICoKICAqCSAgVGhlcmUgYXJlIHNldmVyYWwgcmVhc29ucyBmb3IgZG9pbmcgdGhl IHN5bmNocm9uaXphdGlvbiB0aGlzIHdheToKICAqCSAgIC0gSXQgYWxsb3dzIHVzIHRvIHBhcmFs bGVsaXplIHRoZSBpbml0aWFsIGRhdGEgc3luY2hyb25pemF0aW9uCkBAIC0xNTMsNyArMTUzLDcg QEAgZmluaXNoX3N5bmNfd29ya2VyKHZvaWQpCiAJCQkJCWdldF9yZWxfbmFtZShNeUxvZ2ljYWxS ZXBXb3JrZXItPnJlbGlkKSkpKTsKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8q IEZpbmQgdGhlIG1haW4gYXBwbHkgd29ya2VyIGFuZCBzaWduYWwgaXQuICovCisJLyogRmluZCB0 aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgc2lnbmFsIGl0LiAqLwogCWxvZ2ljYWxyZXBfd29y a2VyX3dha2V1cChNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBJbnZhbGlkT2lkKTsKIAogCS8q IFN0b3AgZ3JhY2VmdWxseSAqLwpAQCAtNjA5LDcgKzYwOSw4IEBAIHByb2Nlc3Nfc3luY2luZ190 YWJsZXNfZm9yX2FwcGx5KFhMb2dSZWNQdHIgY3VycmVudF9sc24pCiAJCQkJCQkJCQkJCQkgTXlT dWJzY3JpcHRpb24tPm9pZCwKIAkJCQkJCQkJCQkJCSBNeVN1YnNjcmlwdGlvbi0+bmFtZSwKIAkJ CQkJCQkJCQkJCSBNeUxvZ2ljYWxSZXBXb3JrZXItPnVzZXJpZCwKLQkJCQkJCQkJCQkJCSByc3Rh dGUtPnJlbGlkKTsKKwkJCQkJCQkJCQkJCSByc3RhdGUtPnJlbGlkLAorCQkJCQkJCQkJCQkJIERT TV9IQU5ETEVfSU5WQUxJRCk7CiAJCQkJCQloZW50cnktPmxhc3Rfc3RhcnRfdGltZSA9IG5vdzsK IAkJCQkJfQogCQkJCX0KQEAgLTYzMCw2ICs2MzEsMTQgQEAgcHJvY2Vzc19zeW5jaW5nX3RhYmxl c19mb3JfYXBwbHkoWExvZ1JlY1B0ciBjdXJyZW50X2xzbikKIHZvaWQKIHByb2Nlc3Nfc3luY2lu Z190YWJsZXMoWExvZ1JlY1B0ciBjdXJyZW50X2xzbikKIHsKKwkvKgorCSAqIFNraXAgZm9yIHBh cmFsbGVsIGFwcGx5IHdvcmtlcnMgYmVjYXVzZSB0aGV5IG9ubHkgb3BlcmF0ZSBvbiB0YWJsZXMg dGhhdAorCSAqIGFyZSBpbiBhIFJFQURZIHN0YXRlLiBTZWUgcGFfY2FuX3N0YXJ0KCkgYW5kCisJ ICogc2hvdWxkX2FwcGx5X2NoYW5nZXNfZm9yX3JlbCgpLgorCSAqLworCWlmIChhbV9wYXJhbGxl bF9hcHBseV93b3JrZXIoKSkKKwkJcmV0dXJuOworCiAJaWYgKGFtX3RhYmxlc3luY193b3JrZXIo KSkKIAkJcHJvY2Vzc19zeW5jaW5nX3RhYmxlc19mb3Jfc3luYyhjdXJyZW50X2xzbik7CiAJZWxz ZQpAQCAtMTI0Nyw3ICsxMjU2LDcgQEAgTG9naWNhbFJlcFN5bmNUYWJsZVN0YXJ0KFhMb2dSZWNQ dHIgKm9yaWdpbl9zdGFydHBvcykKIAogCS8qCiAJICogSGVyZSB3ZSB1c2UgdGhlIHNsb3QgbmFt ZSBpbnN0ZWFkIG9mIHRoZSBzdWJzY3JpcHRpb24gbmFtZSBhcyB0aGUKLQkgKiBhcHBsaWNhdGlv bl9uYW1lLCBzbyB0aGF0IGl0IGlzIGRpZmZlcmVudCBmcm9tIHRoZSBtYWluIGFwcGx5IHdvcmtl ciwKKwkgKiBhcHBsaWNhdGlvbl9uYW1lLCBzbyB0aGF0IGl0IGlzIGRpZmZlcmVudCBmcm9tIHRo ZSBsZWFkZXIgYXBwbHkgd29ya2VyLAogCSAqIHNvIHRoYXQgc3luY2hyb25vdXMgcmVwbGljYXRp b24gY2FuIGRpc3Rpbmd1aXNoIHRoZW0uCiAJICovCiAJTG9nUmVwV29ya2VyV2FsUmN2Q29ubiA9 CkBAIC0xMjk1LDcgKzEzMDQsNyBAQCBMb2dpY2FsUmVwU3luY1RhYmxlU3RhcnQoWExvZ1JlY1B0 ciAqb3JpZ2luX3N0YXJ0cG9zKQogCQkgKiB0aW1lIHRoaXMgdGFibGVzeW5jIHdhcyBsYXVuY2hl ZC4KIAkJICovCiAJCW9yaWdpbmlkID0gcmVwbG9yaWdpbl9ieV9uYW1lKG9yaWdpbm5hbWUsIGZh bHNlKTsKLQkJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbmlkKTsKKwkJcmVwbG9yaWdp bl9zZXNzaW9uX3NldHVwKG9yaWdpbmlkLCAwKTsKIAkJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdp biA9IG9yaWdpbmlkOwogCQkqb3JpZ2luX3N0YXJ0cG9zID0gcmVwbG9yaWdpbl9zZXNzaW9uX2dl dF9wcm9ncmVzcyhmYWxzZSk7CiAKQEAgLTE0MDYsNyArMTQxNSw3IEBAIExvZ2ljYWxSZXBTeW5j VGFibGVTdGFydChYTG9nUmVjUHRyICpvcmlnaW5fc3RhcnRwb3MpCiAJCQkJCQkgICB0cnVlIC8q IGdvIGJhY2t3YXJkICovICwgdHJ1ZSAvKiBXQUwgbG9nICovICk7CiAJCVVubG9ja1JlbGF0aW9u T2lkKFJlcGxpY2F0aW9uT3JpZ2luUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CiAKLQkJ cmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbmlkKTsKKwkJcmVwbG9yaWdpbl9zZXNzaW9u X3NldHVwKG9yaWdpbmlkLCAwKTsKIAkJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiA9IG9yaWdp bmlkOwogCX0KIAllbHNlCkBAIC0xNDYxLDggKzE0NzAsOCBAQCBjb3B5X3RhYmxlX2RvbmU6CiAJ U3BpbkxvY2tSZWxlYXNlKCZNeUxvZ2ljYWxSZXBXb3JrZXItPnJlbG11dGV4KTsKIAogCS8qCi0J ICogRmluYWxseSwgd2FpdCB1bnRpbCB0aGUgbWFpbiBhcHBseSB3b3JrZXIgdGVsbHMgdXMgdG8g Y2F0Y2ggdXAgYW5kIHRoZW4KLQkgKiByZXR1cm4gdG8gbGV0IExvZ2ljYWxSZXBBcHBseUxvb3Ag ZG8gaXQuCisJICogRmluYWxseSwgd2FpdCB1bnRpbCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciB0 ZWxscyB1cyB0byBjYXRjaCB1cCBhbmQKKwkgKiB0aGVuIHJldHVybiB0byBsZXQgTG9naWNhbFJl cEFwcGx5TG9vcCBkbyBpdC4KIAkgKi8KIAl3YWl0X2Zvcl93b3JrZXJfc3RhdGVfY2hhbmdlKFNV QlJFTF9TVEFURV9DQVRDSFVQKTsKIAlyZXR1cm4gc2xvdG5hbWU7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC93b3JrZXIuYwppbmRleCA5Njc3MmU0Li4zYjRkNTY1IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTIyLDggKzIyLDEyIEBACiAgKiBT VFJFQU1FRCBUUkFOU0FDVElPTlMKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogU3RyZWFt ZWQgdHJhbnNhY3Rpb25zIChsYXJnZSB0cmFuc2FjdGlvbnMgZXhjZWVkaW5nIGEgbWVtb3J5IGxp bWl0IG9uIHRoZQotICogdXBzdHJlYW0pIGFyZSBub3QgYXBwbGllZCBpbW1lZGlhdGVseSwgYnV0 IGluc3RlYWQsIHRoZSBkYXRhIGlzIHdyaXR0ZW4KLSAqIHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQg dGhlbiBhcHBsaWVkIGF0IG9uY2Ugd2hlbiB0aGUgZmluYWwgY29tbWl0IGFycml2ZXMuCisgKiB1 cHN0cmVhbSkgYXJlIGFwcGxpZWQgdXNpbmcgb25lIG9mIHR3byBhcHByb2FjaGVzOgorICoKKyAq IDEpIFdyaXRlIHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQgYXBwbHkgd2hlbiB0aGUgZmluYWwgY29t bWl0IGFycml2ZXMKKyAqCisgKiBUaGlzIGFwcHJvYWNoIGlzIHVzZWQgd2hlbiB0aGUgdXNlciBo YXMgc2V0IHRoZSBzdWJzY3JpcHRpb24ncyBzdHJlYW1pbmcKKyAqIG9wdGlvbiBhcyBvbi4KICAq CiAgKiBVbmxpa2UgdGhlIHJlZ3VsYXIgKG5vbi1zdHJlYW1lZCkgY2FzZSwgaGFuZGxpbmcgc3Ry ZWFtZWQgdHJhbnNhY3Rpb25zIGhhcwogICogdG8gaGFuZGxlIGFib3J0cyBvZiBib3RoIHRoZSB0 b3BsZXZlbCB0cmFuc2FjdGlvbiBhbmQgc3VidHJhbnNhY3Rpb25zLiBUaGlzCkBAIC01MCw2ICs1 NCwxMiBAQAogICogdGhlIGZpbGUgd2UgZGVzaXJlZCBhY3Jvc3MgbXVsdGlwbGUgc3RyZWFtLW9w ZW4gY2FsbHMgZm9yIHRoZSBzYW1lCiAgKiB0cmFuc2FjdGlvbi4KICAqCisgKiAyKSBQYXJhbGxl bCBhcHBseSB3b3JrZXJzLgorICoKKyAqIFRoaXMgYXBwcm9hY2ggaXMgdXNlZCB3aGVuIHRoZSB1 c2VyIGhhcyBzZXQgdGhlIHN1YnNjcmlwdGlvbidzIHN0cmVhbWluZworICogb3B0aW9uIGFzIHBh cmFsbGVsLiBTZWUgbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgZm9yIGluZm9ybWF0aW9u IGFib3V0CisgKiB0aGlzIGFwcHJvYWNoLgorICoKICAqIFRXT19QSEFTRSBUUkFOU0FDVElPTlMK ICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIFR3byBwaGFzZSB0cmFuc2FjdGlvbnMgYXJl IHJlcGxheWVkIGF0IHByZXBhcmUgYW5kIHRoZW4gY29tbWl0dGVkIG9yCkBAIC0xNTAsNiArMTYw LDcgQEAKICNpbmNsdWRlICJleGVjdXRvci9leGVjUGFydGl0aW9uLmgiCiAjaW5jbHVkZSAiZXhl Y3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgorI2luY2x1ZGUg ImxpYnBxL2xpYnBxLmgiCiAjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIKICNpbmNsdWRlICJs aWJwcS9wcXNpZ25hbC5oIgogI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCkBAIC0yMzMsNyArMjQ0 LDM5IEBAIHR5cGVkZWYgc3RydWN0IEFwcGx5RXJyb3JDYWxsYmFja0FyZwogCWNoYXIJICAgKm9y aWdpbl9uYW1lOwogfSBBcHBseUVycm9yQ2FsbGJhY2tBcmc7CiAKLXN0YXRpYyBBcHBseUVycm9y Q2FsbGJhY2tBcmcgYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnID0KKy8qCisgKiBXaGF0IGFjdGlv biB0byB0YWtlIGZvciB0aGUgdHJhbnNhY3Rpb24uCisgKgorICogVFJBTlNfTEVBREVSX0FQUExZ OgorICogVGhpcyBhY3Rpb24gbWVhbnMgdGhhdCB3ZSBhcmUgaW4gdGhlIGxlYWRlciBhcHBseSB3 b3JrZXIgYW5kIGNoYW5nZXMgb2YgdGhlCisgKiB0cmFuc2FjdGlvbiBhcmUgYXBwbGllZCBkaXJl Y3RseSBieSB0aGUgd29ya2VyLgorICoKKyAqIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6CisgKiBU aGlzIGFjdGlvbiBtZWFucyB0aGF0IHdlIGFyZSBpbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBv ciB0YWJsZSBzeW5jCisgKiB3b3JrZXIuIENoYW5nZXMgYXJlIHdyaXR0ZW4gdG8gdGVtcG9yYXJ5 IGZpbGVzIGFuZCB0aGVuIGFwcGxpZWQgd2hlbiB0aGUKKyAqIGZpbmFsIGNvbW1pdCBhcnJpdmVz LgorICoKKyAqIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgorICogVGhpcyBhY3Rpb24g bWVhbnMgdGhhdCB3ZSBhcmUgaW4gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIG5lZWQgdG8g c2VuZAorICogdGhlIGNoYW5nZXMgdG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAqCisg KiBUUkFOU19QQVJBTExFTF9BUFBMWToKKyAqIFRoaXMgYWN0aW9uIG1lYW5zIHRoYXQgd2UgYXJl IGluIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgYW5kIGNoYW5nZXMgb2YKKyAqIHRoZSB0cmFu c2FjdGlvbiBhcmUgYXBwbGllZCBkaXJlY3RseSBieSB0aGUgd29ya2VyLgorICovCit0eXBlZGVm IGVudW0KK3sKKwkvKiBUaGUgYWN0aW9uIGZvciBub24tc3RyZWFtaW5nIHRyYW5zYWN0aW9ucy4g Ki8KKwlUUkFOU19MRUFERVJfQVBQTFksCisKKwkvKiBBY3Rpb25zIGZvciBzdHJlYW1pbmcgdHJh bnNhY3Rpb25zLiAqLworCVRSQU5TX0xFQURFUl9TRVJJQUxJWkUsCisJVFJBTlNfTEVBREVSX1NF TkRfVE9fUEFSQUxMRUwsCisJVFJBTlNfUEFSQUxMRUxfQVBQTFkKK30gVHJhbnNBcHBseUFjdGlv bjsKKworLyogZXJyY29udGV4dCB0cmFja2VyICovCitBcHBseUVycm9yQ2FsbGJhY2tBcmcgYXBw bHlfZXJyb3JfY2FsbGJhY2tfYXJnID0KIHsKIAkuY29tbWFuZCA9IDAsCiAJLnJlbCA9IE5VTEws CkBAIC0yNDMsNyArMjg2LDkgQEAgc3RhdGljIEFwcGx5RXJyb3JDYWxsYmFja0FyZyBhcHBseV9l cnJvcl9jYWxsYmFja19hcmcgPQogCS5vcmlnaW5fbmFtZSA9IE5VTEwsCiB9OwogCi1zdGF0aWMg TWVtb3J5Q29udGV4dCBBcHBseU1lc3NhZ2VDb250ZXh0ID0gTlVMTDsKK0Vycm9yQ29udGV4dENh bGxiYWNrICphcHBseV9lcnJvcl9jb250ZXh0X3N0YWNrID0gTlVMTDsKKworTWVtb3J5Q29udGV4 dCBBcHBseU1lc3NhZ2VDb250ZXh0ID0gTlVMTDsKIE1lbW9yeUNvbnRleHQgQXBwbHlDb250ZXh0 ID0gTlVMTDsKIAogLyogcGVyIHN0cmVhbSBjb250ZXh0IGZvciBzdHJlYW1pbmcgdHJhbnNhY3Rp b25zICovCkBAIC0yNjMsMTYgKzMwOCwyNSBAQCBzdGF0aWMgYm9vbCBpbl9zdHJlYW1lZF90cmFu c2FjdGlvbiA9IGZhbHNlOwogc3RhdGljIFRyYW5zYWN0aW9uSWQgc3RyZWFtX3hpZCA9IEludmFs aWRUcmFuc2FjdGlvbklkOwogCiAvKgorICogVGhlIG51bWJlciBvZiBjaGFuZ2VzIGFwcGxpZWQg YnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGR1cmluZyBvbmUgc3RyZWFtaW5nCisgKiBibG9jay4K KyAqLworc3RhdGljIHVpbnQzMiBwYXJhbGxlbF9zdHJlYW1fbmNoYW5nZXMgPSAwOworCisvKgog ICogV2UgZW5hYmxlIHNraXBwaW5nIGFsbCBkYXRhIG1vZGlmaWNhdGlvbiBjaGFuZ2VzIChJTlNF UlQsIFVQREFURSwgZXRjLikgZm9yCiAgKiB0aGUgc3Vic2NyaXB0aW9uIGlmIHRoZSByZW1vdGUg dHJhbnNhY3Rpb24ncyBmaW5pc2ggTFNOIG1hdGNoZXMgdGhlIHN1YnNraXBsc24uCiAgKiBPbmNl IHdlIHN0YXJ0IHNraXBwaW5nIGNoYW5nZXMsIHdlIGRvbid0IHN0b3AgaXQgdW50aWwgd2Ugc2tp cCBhbGwgY2hhbmdlcyBvZgogICogdGhlIHRyYW5zYWN0aW9uIGV2ZW4gaWYgcGdfc3Vic2NyaXB0 aW9uIGlzIHVwZGF0ZWQgYW5kIE15U3Vic2NyaXB0aW9uLT5za2lwbHNuCi0gKiBnZXRzIGNoYW5n ZWQgb3IgcmVzZXQgZHVyaW5nIHRoYXQuIEFsc28sIGluIHN0cmVhbWluZyB0cmFuc2FjdGlvbiBj YXNlcywgd2UKLSAqIGRvbid0IHNraXAgcmVjZWl2aW5nIGFuZCBzcG9vbGluZyB0aGUgY2hhbmdl cyBzaW5jZSB3ZSBkZWNpZGUgd2hldGhlciBvciBub3QKKyAqIGdldHMgY2hhbmdlZCBvciByZXNl dCBkdXJpbmcgdGhhdC4gQWxzbywgaW4gc3RyZWFtaW5nIHRyYW5zYWN0aW9uIGNhc2VzIChzdHJl YW1pbmcgPSBvbiksCisgKiB3ZSBkb24ndCBza2lwIHJlY2VpdmluZyBhbmQgc3Bvb2xpbmcgdGhl IGNoYW5nZXMgc2luY2Ugd2UgZGVjaWRlIHdoZXRoZXIgb3Igbm90CiAgKiB0byBza2lwIGFwcGx5 aW5nIHRoZSBjaGFuZ2VzIHdoZW4gc3RhcnRpbmcgdG8gYXBwbHkgY2hhbmdlcy4gVGhlIHN1YnNr aXBsc24gaXMKICAqIGNsZWFyZWQgYWZ0ZXIgc3VjY2Vzc2Z1bGx5IHNraXBwaW5nIHRoZSB0cmFu c2FjdGlvbiBvciBhcHBseWluZyBub24tZW1wdHkKICAqIHRyYW5zYWN0aW9uLiBUaGUgbGF0dGVy IHByZXZlbnRzIHRoZSBtaXN0YWtlbmx5IHNwZWNpZmllZCBzdWJza2lwbHNuIGZyb20KLSAqIGJl aW5nIGxlZnQuCisgKiBiZWluZyBsZWZ0LiBOb3RlIHRoYXQgd2UgY2Fubm90IHNraXAgdGhlIHN0 cmVhbWluZyB0cmFuc2FjdGlvbnMgd2hlbiB1c2luZworICogcGFyYWxsZWwgYXBwbHkgd29ya2Vy cyBiZWNhdXNlIHdlIGNhbm5vdCBnZXQgdGhlIGZpbmlzaCBMU04gYmVmb3JlIGFwcGx5aW5nCisg KiB0aGUgY2hhbmdlcy4gU28sIHdlIGRvbid0IHN0YXJ0IHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3 aGVuIGZpbmlzaCBMU04gaXMgc2V0CisgKiBieSB0aGUgdXNlci4KICAqLwogc3RhdGljIFhMb2dS ZWNQdHIgc2tpcF94YWN0X2ZpbmlzaF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKICNkZWZpbmUg aXNfc2tpcHBpbmdfY2hhbmdlcygpICh1bmxpa2VseSghWExvZ1JlY1B0cklzSW52YWxpZChza2lw X3hhY3RfZmluaXNoX2xzbikpKQpAQCAtMzIwLDE1ICszNzQsMTAgQEAgc3RhdGljIHZvaWQgc3Ry ZWFtX2Nsb3NlX2ZpbGUodm9pZCk7CiAKIHN0YXRpYyB2b2lkIHNlbmRfZmVlZGJhY2soWExvZ1Jl Y1B0ciByZWN2cG9zLCBib29sIGZvcmNlLCBib29sIHJlcXVlc3RSZXBseSk7CiAKLXN0YXRpYyB2 b2lkIHN0b3JlX2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIgcmVtb3RlX2xzbik7Ci0KLXN0YXRp YyB2b2lkIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCk7CitzdGF0aWMgdm9pZCBzdG9y ZV9mbHVzaF9wb3NpdGlvbihYTG9nUmVjUHRyIHJlbW90ZV9sc24sIFhMb2dSZWNQdHIgbG9jYWxf bHNuKTsKIAogc3RhdGljIHZvaWQgRGlzYWJsZVN1YnNjcmlwdGlvbkFuZEV4aXQodm9pZCk7CiAK LS8qIHByb3RvdHlwZSBuZWVkZWQgYmVjYXVzZSBvZiBzdHJlYW1fY29tbWl0ICovCi1zdGF0aWMg dm9pZCBhcHBseV9kaXNwYXRjaChTdHJpbmdJbmZvIHMpOwotCiBzdGF0aWMgdm9pZCBhcHBseV9o YW5kbGVfY29tbWl0X2ludGVybmFsKExvZ2ljYWxSZXBDb21taXREYXRhICpjb21taXRfZGF0YSk7 CiBzdGF0aWMgdm9pZCBhcHBseV9oYW5kbGVfaW5zZXJ0X2ludGVybmFsKEFwcGx5RXhlY3V0aW9u RGF0YSAqZWRhdGEsCiAJCQkJCQkJCQkJIFJlc3VsdFJlbEluZm8gKnJlbGluZm8sCkBAIC0zNjEs MTAgKzQxMCwyNiBAQCBzdGF0aWMgdm9pZCBzdG9wX3NraXBwaW5nX2NoYW5nZXModm9pZCk7CiBz dGF0aWMgdm9pZCBjbGVhcl9zdWJzY3JpcHRpb25fc2tpcF9sc24oWExvZ1JlY1B0ciBmaW5pc2hf bHNuKTsKIAogLyogRnVuY3Rpb25zIGZvciBhcHBseSBlcnJvciBjYWxsYmFjayAqLwotc3RhdGlj IHZvaWQgYXBwbHlfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKTsKIHN0YXRpYyBpbmxpbmUgdm9p ZCBzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVj UHRyIGxzbik7CiBzdGF0aWMgaW5saW5lIHZvaWQgcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9p bmZvKHZvaWQpOwogCitzdGF0aWMgVHJhbnNBcHBseUFjdGlvbiBnZXRfdHJhbnNhY3Rpb25fYXBw bHlfYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLAorCQkJCQkJCQkJCQkJCSBQYXJhbGxlbEFwcGx5 V29ya2VySW5mbyAqKndpbmZvKTsKKworLyoKKyAqIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgbG9n aWNhbCByZXBsaWNhdGlvbiB3b3JrZXIuCisgKi8KK3N0YXRpYyBjb25zdCBjaGFyICoKK2dldF93 b3JrZXJfbmFtZSh2b2lkKQoreworCWlmIChhbV90YWJsZXN5bmNfd29ya2VyKCkpCisJCXJldHVy biBfKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHRhYmxlIHN5bmNocm9uaXphdGlvbiB3b3JrZXIiKTsK KwllbHNlIGlmIChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSkKKwkJcmV0dXJuIF8oImxvZ2lj YWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIik7CisJZWxzZQorCQlyZXR1cm4g XygibG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIiKTsKK30KKwogLyoKICAqIEZvcm0g dGhlIG9yaWdpbiBuYW1lIGZvciB0aGUgc3Vic2NyaXB0aW9uLgogICoKQEAgLTM5NCwxOSArNDU5 LDQzIEBAIFJlcGxpY2F0aW9uT3JpZ2luTmFtZUZvckxvZ2ljYWxSZXAoT2lkIHN1Ym9pZCwgT2lk IHJlbGlkLAogICoKICAqIFRoaXMgaXMgbWFpbmx5IG5lZWRlZCBmb3IgaW5pdGlhbCByZWxhdGlv biBkYXRhIHN5bmMgYXMgdGhhdCBydW5zIGluCiAgKiBzZXBhcmF0ZSB3b3JrZXIgcHJvY2VzcyBy dW5uaW5nIGluIHBhcmFsbGVsIGFuZCB3ZSBuZWVkIHNvbWUgd2F5IHRvIHNraXAKLSAqIGNoYW5n ZXMgY29taW5nIHRvIHRoZSBtYWluIGFwcGx5IHdvcmtlciBkdXJpbmcgdGhlIHN5bmMgb2YgYSB0 YWJsZS4KKyAqIGNoYW5nZXMgY29taW5nIHRvIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGR1cmlu ZyB0aGUgc3luYyBvZiBhIHRhYmxlLgogICoKICAqIE5vdGUgd2UgbmVlZCB0byBkbyBzbWFsbGVy IG9yIGVxdWFscyBjb21wYXJpc29uIGZvciBTWU5DRE9ORSBzdGF0ZSBiZWNhdXNlCiAgKiBpdCBt aWdodCBob2xkIHBvc2l0aW9uIG9mIGVuZCBvZiBpbml0aWFsIHNsb3QgY29uc2lzdGVudCBwb2lu dCBXQUwKICAqIHJlY29yZCArIDEgKGllIHN0YXJ0IG9mIG5leHQgcmVjb3JkKSBhbmQgbmV4dCBy ZWNvcmQgY2FuIGJlIENPTU1JVCBvZgogICogdHJhbnNhY3Rpb24gd2UgYXJlIG5vdyBwcm9jZXNz aW5nICh3aGljaCBpcyB3aGF0IHdlIHNldCByZW1vdGVfZmluYWxfbHNuCiAgKiB0byBpbiBhcHBs eV9oYW5kbGVfYmVnaW4pLgorICoKKyAqIE5vdGUgdGhhdCBmb3Igc3RyZWFtaW5nIHRyYW5zYWN0 aW9ucyB0aGF0IGFyZSBiZWluZyBhcHBsaWVkIGluIHRoZSBwYXJhbGxlbAorICogYXBwbHkgd29y a2VyLCB3ZSBkaXNhbGxvdyBhcHBseWluZyBjaGFuZ2VzIGlmIHRoZSB0YXJnZXQgdGFibGUgaW4g dGhlCisgKiBzdWJzY3JpcHRpb24gaXMgbm90IGluIHRoZSBSRUFEWSBzdGF0ZSwgYmVjYXVzZSB3 ZSBjYW5ub3QgZGVjaWRlIHdoZXRoZXIgdG8KKyAqIGFwcGx5IHRoZSBjaGFuZ2UgYXMgd2Ugd29u J3Qga25vdyByZW1vdGVfZmluYWxfbHNuIGJ5IHRoYXQgdGltZS4KKyAqCisgKiBXZSBhbHJlYWR5 IGNoZWNrZWQgdGhpcyBpbiBwYV9jYW5fc3RhcnQoKSBiZWZvcmUgYXNzaWduaW5nIHRoZQorICog c3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIHRoZSBwYXJhbGxlbCB3b3JrZXIsIGJ1dCBpdCBhbHNv IG5lZWRzIHRvIGJlCisgKiBjaGVja2VkIGhlcmUgYmVjYXVzZSBpZiB0aGUgdXNlciBleGVjdXRl cyBBTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0gKKyAqIFBVQkxJQ0FUSU9OIGluIHBhcmFs bGVsLCB0aGUgbmV3IHRhYmxlIGNhbiBiZSBhZGRlZCB0byBwZ19zdWJzY3JpcHRpb25fcmVsCisg KiB3aGlsZSBhcHBseWluZyB0aGlzIHRyYW5zYWN0aW9uLgogICovCiBzdGF0aWMgYm9vbAogc2hv dWxkX2FwcGx5X2NoYW5nZXNfZm9yX3JlbChMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbCkKIHsK IAlpZiAoYW1fdGFibGVzeW5jX3dvcmtlcigpKQogCQlyZXR1cm4gTXlMb2dpY2FsUmVwV29ya2Vy LT5yZWxpZCA9PSByZWwtPmxvY2FscmVsb2lkOworCWVsc2UgaWYgKGFtX3BhcmFsbGVsX2FwcGx5 X3dvcmtlcigpKQorCXsKKwkJLyogV2UgZG9uJ3Qgc3luY2hyb25pemUgcmVsJ3MgdGhhdCBhcmUg aW4gdW5rbm93biBzdGF0ZS4gKi8KKwkJaWYgKHJlbC0+c3RhdGUgIT0gU1VCUkVMX1NUQVRFX1JF QURZICYmCisJCQlyZWwtPnN0YXRlICE9IFNVQlJFTF9TVEFURV9VTktOT1dOKQorCQkJZXJlcG9y dChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lU RV9TVEFURSksCisJCQkJCSBlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBw bHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgc3RvcCIsCisJCQkJCQkJTXlT dWJzY3JpcHRpb24tPm5hbWUpLAorCQkJCQkgZXJyZGV0YWlsKCJDYW5ub3QgaGFuZGxlIHN0cmVh bWVkIHJlcGxpY2F0aW9uIHRyYW5zYWN0aW9ucyB1c2luZyBwYXJhbGxlbCBhcHBseSB3b3JrZXJz IHVudGlsIGFsbCB0YWJsZXMgaGF2ZSBiZWVuIHN5bmNocm9uaXplZC4iKSkpOworCisJCXJldHVy biByZWwtPnN0YXRlID09IFNVQlJFTF9TVEFURV9SRUFEWTsKKwl9CiAJZWxzZQogCQlyZXR1cm4g KHJlbC0+c3RhdGUgPT0gU1VCUkVMX1NUQVRFX1JFQURZIHx8CiAJCQkJKHJlbC0+c3RhdGUgPT0g U1VCUkVMX1NUQVRFX1NZTkNET05FICYmCkBAIC00NTIsNDMgKzU0MSw4OCBAQCBlbmRfcmVwbGlj YXRpb25fc3RlcCh2b2lkKQogfQogCiAvKgotICogSGFuZGxlIHN0cmVhbWVkIHRyYW5zYWN0aW9u cy4KKyAqIEhhbmRsZSBzdHJlYW1lZCB0cmFuc2FjdGlvbnMgZm9yIGJvdGggdGhlIGxlYWRlciBh cHBseSB3b3JrZXIgYW5kIHRoZQorICogcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4KICAqCi0gKiBJ ZiBpbiBzdHJlYW1pbmcgbW9kZSAocmVjZWl2aW5nIGEgYmxvY2sgb2Ygc3RyZWFtZWQgdHJhbnNh Y3Rpb24pLCB3ZQotICogc2ltcGx5IHJlZGlyZWN0IGl0IHRvIGEgZmlsZSBmb3IgdGhlIHByb3Bl ciB0b3BsZXZlbCB0cmFuc2FjdGlvbi4KKyAqIEluIHRoZSBzdHJlYW1pbmcgY2FzZSAocmVjZWl2 aW5nIGEgYmxvY2sgb2YgdGhlIHN0cmVhbWVkIHRyYW5zYWN0aW9uKSwgZm9yCisgKiBzZXJpYWxp emUgbW9kZSwgc2ltcGx5IHJlZGlyZWN0IGl0IHRvIGEgZmlsZSBmb3IgdGhlIHByb3BlciB0b3Bs ZXZlbAorICogdHJhbnNhY3Rpb24sIGFuZCBmb3IgcGFyYWxsZWwgbW9kZSwgdGhlIGxlYWRlciBh cHBseSB3b3JrZXIgd2lsbCBzZW5kIHRoZQorICogY2hhbmdlcyB0byBwYXJhbGxlbCBhcHBseSB3 b3JrZXJzIGFuZCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHdpbGwgZGVmaW5lCisgKiBzYXZl cG9pbnRzIGlmIG5lZWRlZC4gKExPR0lDQUxfUkVQX01TR19SRUxBVElPTiBvciBMT0dJQ0FMX1JF UF9NU0dfVFlQRQorICogbWVzc2FnZXMgd2lsbCBiZSBhcHBsaWVkIGJ5IGJvdGggbGVhZGVyIGFw cGx5IHdvcmtlciBhbmQgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlcnMpLgogICoKLSAqIFJldHVy bnMgdHJ1ZSBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb25zLCBmYWxzZSBvdGhlcndpc2UgKHJlZ3Vs YXIgbW9kZSkuCisgKiBSZXR1cm5zIHRydWUgZm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9ucyAod2hl biB0aGUgY2hhbmdlIGlzIGVpdGhlciBzZXJpYWxpemVkCisgKiB0byBmaWxlIG9yIHNlbnQgdG8g cGFyYWxsZWwgYXBwbHkgd29ya2VyKSwgZmFsc2Ugb3RoZXJ3aXNlIChyZWd1bGFyIG1vZGUgb3IK KyAqIG5lZWRzIHRvIGJlIHByb2Nlc3NlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIpLgorICoK KyAqIEV4Y2VwdGlvbjogSWYgdGhlIG1lc3NhZ2UgYmVpbmcgcHJvY2Vzc2VkIGlzIExPR0lDQUxf UkVQX01TR19SRUxBVElPTgorICogb3IgTE9HSUNBTF9SRVBfTVNHX1RZUEUsIHJldHVybiBmYWxz ZSBldmVuIGlmIHRoZSBtZXNzYWdlIG5lZWRzIHRvIGJlIHNlbnQKKyAqIHRvIGEgcGFyYWxsZWwg YXBwbHkgd29ya2VyLgogICovCiBzdGF0aWMgYm9vbAogaGFuZGxlX3N0cmVhbWVkX3RyYW5zYWN0 aW9uKExvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbiwgU3RyaW5nSW5mbyBzKQogewotCVRyYW5zYWN0 aW9uSWQgeGlkOworCVRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQ7CisJUGFyYWxsZWxBcHBseVdv cmtlckluZm8gKndpbmZvOworCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOworCisJYXBw bHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihzdHJlYW1feGlkLCAmd2lu Zm8pOwogCiAJLyogbm90IGluIHN0cmVhbWluZyBtb2RlICovCi0JaWYgKCFpbl9zdHJlYW1lZF90 cmFuc2FjdGlvbikKKwlpZiAoYXBwbHlfYWN0aW9uID09IFRSQU5TX0xFQURFUl9BUFBMWSkKIAkJ cmV0dXJuIGZhbHNlOwogCi0JQXNzZXJ0KHN0cmVhbV9mZCAhPSBOVUxMKTsKIAlBc3NlcnQoVHJh bnNhY3Rpb25JZElzVmFsaWQoc3RyZWFtX3hpZCkpOwogCiAJLyoKIAkgKiBXZSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBYSUQgb2YgdGhlIHN1YnhhY3QgYXMgdGhlIGZpcnN0IHBhcnQgb2YgdGhlCiAJ ICogbWVzc2FnZSwgc28gZXh0cmFjdCBpdC4KIAkgKi8KLQl4aWQgPSBwcV9nZXRtc2dpbnQocywg NCk7CisJY3VycmVudF94aWQgPSBwcV9nZXRtc2dpbnQocywgNCk7CiAKLQlpZiAoIVRyYW5zYWN0 aW9uSWRJc1ZhbGlkKHhpZCkpCisJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChjdXJyZW50X3hp ZCkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9M QVRJT04pLAogCQkJCSBlcnJtc2dfaW50ZXJuYWwoImludmFsaWQgdHJhbnNhY3Rpb24gSUQgaW4g c3RyZWFtZWQgcmVwbGljYXRpb24gdHJhbnNhY3Rpb24iKSkpOwogCi0JLyogQWRkIHRoZSBuZXcg c3VieGFjdCB0byB0aGUgYXJyYXkgKHVubGVzcyBhbHJlYWR5IHRoZXJlKS4gKi8KLQlzdWJ4YWN0 X2luZm9fYWRkKHhpZCk7CisJc3dpdGNoIChhcHBseV9hY3Rpb24pCisJeworCQljYXNlIFRSQU5T X0xFQURFUl9TRVJJQUxJWkU6CisJCQlBc3NlcnQoc3RyZWFtX2ZkKTsKKworCQkJLyogQWRkIHRo ZSBuZXcgc3VieGFjdCB0byB0aGUgYXJyYXkgKHVubGVzcyBhbHJlYWR5IHRoZXJlKS4gKi8KKwkJ CXN1YnhhY3RfaW5mb19hZGQoY3VycmVudF94aWQpOworCisJCQkvKiBXcml0ZSB0aGUgY2hhbmdl IHRvIHRoZSBjdXJyZW50IGZpbGUgKi8KKwkJCXN0cmVhbV93cml0ZV9jaGFuZ2UoYWN0aW9uLCBz KTsKKwkJCXJldHVybiB0cnVlOworCisJCWNhc2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxM RUw6CisJCQlBc3NlcnQod2luZm8pOwogCi0JLyogd3JpdGUgdGhlIGNoYW5nZSB0byB0aGUgY3Vy cmVudCBmaWxlICovCi0Jc3RyZWFtX3dyaXRlX2NoYW5nZShhY3Rpb24sIHMpOworCQkJcGFfc2Vu ZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpOworCisJCQkvKgorCQkJICogWFhYIFRoZSBw dWJsaXNoZXIgc2lkZSBkb2Vzbid0IGFsd2F5cyBzZW5kIHJlbGF0aW9uL3R5cGUgdXBkYXRlCisJ CQkgKiBtZXNzYWdlcyBhZnRlciB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLCBzbyBhbHNvIHVw ZGF0ZSB0aGUKKwkJCSAqIHJlbGF0aW9uL3R5cGUgaW4gbGVhZGVyIGFwcGx5IHdvcmtlci4gU2Vl IGZ1bmN0aW9uCisJCQkgKiBjbGVhbnVwX3JlbF9zeW5jX2NhY2hlLgorCQkJICovCisJCQlyZXR1 cm4gKGFjdGlvbiAhPSBMT0dJQ0FMX1JFUF9NU0dfUkVMQVRJT04gJiYKKwkJCQkJYWN0aW9uICE9 IExPR0lDQUxfUkVQX01TR19UWVBFKTsKIAotCXJldHVybiB0cnVlOworCQljYXNlIFRSQU5TX1BB UkFMTEVMX0FQUExZOgorCQkJcGFyYWxsZWxfc3RyZWFtX25jaGFuZ2VzICs9IDE7CisKKwkJCS8q IERlZmluZSBhIHNhdmVwb2ludCBmb3IgYSBzdWJ4YWN0IGlmIG5lZWRlZC4gKi8KKwkJCXBhX3N0 YXJ0X3N1YnRyYW5zKGN1cnJlbnRfeGlkLCBzdHJlYW1feGlkKTsKKwkJCXJldHVybiBmYWxzZTsK KworCQlkZWZhdWx0OgorCQkJQXNzZXJ0KGZhbHNlKTsKKwkJCXJldHVybiBmYWxzZTsJCS8qIHNp bGVuY2UgY29tcGlsZXIgd2FybmluZyAqLworCX0KIH0KIAogLyoKQEAgLTkyNiw4ICsxMDYwLDEx IEBAIGFwcGx5X2hhbmRsZV9wcmVwYXJlX2ludGVybmFsKExvZ2ljYWxSZXBQcmVwYXJlZFR4bkRh dGEgKnByZXBhcmVfZGF0YSkKIAkgKiBCZWdpblRyYW5zYWN0aW9uQmxvY2sgaXMgbmVjZXNzYXJ5 IHRvIGJhbGFuY2UgdGhlIEVuZFRyYW5zYWN0aW9uQmxvY2sKIAkgKiBjYWxsZWQgd2l0aGluIHRo ZSBQcmVwYXJlVHJhbnNhY3Rpb25CbG9jayBiZWxvdy4KIAkgKi8KLQlCZWdpblRyYW5zYWN0aW9u QmxvY2soKTsKLQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsgLyogQ29tcGxldGVzIHRoZSBw cmVjZWRpbmcgQmVnaW4gY29tbWFuZC4gKi8KKwlpZiAoIUlzVHJhbnNhY3Rpb25CbG9jaygpKQor CXsKKwkJQmVnaW5UcmFuc2FjdGlvbkJsb2NrKCk7CisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFu ZCgpOyAvKiBDb21wbGV0ZXMgdGhlIHByZWNlZGluZyBCZWdpbiBjb21tYW5kLiAqLworCX0KIAog CS8qCiAJICogVXBkYXRlIG9yaWdpbiBzdGF0ZSBzbyB3ZSBjYW4gcmVzdGFydCBzdHJlYW1pbmcg ZnJvbSBjb3JyZWN0IHBvc2l0aW9uCkBAIC05NzQsNyArMTExMSw3IEBAIGFwcGx5X2hhbmRsZV9w cmVwYXJlKFN0cmluZ0luZm8gcykKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlwZ3N0 YXRfcmVwb3J0X3N0YXQoZmFsc2UpOwogCi0Jc3RvcmVfZmx1c2hfcG9zaXRpb24ocHJlcGFyZV9k YXRhLmVuZF9sc24pOworCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNu LCBYYWN0TGFzdENvbW1pdEVuZCk7CiAKIAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsK IApAQCAtOTk2LDYgKzExMzMsMTIgQEAgYXBwbHlfaGFuZGxlX3ByZXBhcmUoU3RyaW5nSW5mbyBz KQogCiAvKgogICogSGFuZGxlIGEgQ09NTUlUIFBSRVBBUkVEIG9mIGEgcHJldmlvdXNseSBQUkVQ QVJFRCB0cmFuc2FjdGlvbi4KKyAqCisgKiBOb3RlIHRoYXQgd2UgZG9uJ3QgbmVlZCB0byB3YWl0 IGhlcmUgaWYgdGhlIHRyYW5zYWN0aW9uIHdhcyBwcmVwYXJlZCBpbiBhCisgKiBwYXJhbGxlbCBh cHBseSB3b3JrZXIuIEluIHRoYXQgY2FzZSwgd2UgaGF2ZSBhbHJlYWR5IHdhaXRlZCBmb3IgdGhl IHByZXBhcmUKKyAqIHRvIGZpbmlzaCBpbiBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoKSB3 aGljaCB3aWxsIGVuc3VyZSBhbGwgdGhlCisgKiBvcGVyYXRpb25zIGluIHRoYXQgdHJhbnNhY3Rp b24gaGF2ZSBoYXBwZW5lZCBpbiB0aGUgc3Vic2NyaWJlciwgc28gbm8KKyAqIGNvbmN1cnJlbnQg dHJhbnNhY3Rpb24gY2FuIGNhdXNlIGRlYWRsb2NrIG9yIHRyYW5zYWN0aW9uIGRlcGVuZGVuY3kg aXNzdWVzLgogICovCiBzdGF0aWMgdm9pZAogYXBwbHlfaGFuZGxlX2NvbW1pdF9wcmVwYXJlZChT dHJpbmdJbmZvIHMpCkBAIC0xMDI1LDcgKzExNjgsNyBAQCBhcHBseV9oYW5kbGVfY29tbWl0X3By ZXBhcmVkKFN0cmluZ0luZm8gcykKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlwZ3N0 YXRfcmVwb3J0X3N0YXQoZmFsc2UpOwogCi0Jc3RvcmVfZmx1c2hfcG9zaXRpb24ocHJlcGFyZV9k YXRhLmVuZF9sc24pOworCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNu LCBYYWN0TGFzdENvbW1pdEVuZCk7CiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAK IAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBh cmFsbGVsLiAqLwpAQCAtMTAzOSw2ICsxMTgyLDEyIEBAIGFwcGx5X2hhbmRsZV9jb21taXRfcHJl cGFyZWQoU3RyaW5nSW5mbyBzKQogCiAvKgogICogSGFuZGxlIGEgUk9MTEJBQ0sgUFJFUEFSRUQg b2YgYSBwcmV2aW91c2x5IFBSRVBBUkVEIFRSQU5TQUNUSU9OLgorICoKKyAqIE5vdGUgdGhhdCB3 ZSBkb24ndCBuZWVkIHRvIHdhaXQgaGVyZSBpZiB0aGUgdHJhbnNhY3Rpb24gd2FzIHByZXBhcmVk IGluIGEKKyAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gSW4gdGhhdCBjYXNlLCB3ZSBoYXZlIGFs cmVhZHkgd2FpdGVkIGZvciB0aGUgcHJlcGFyZQorICogdG8gZmluaXNoIGluIGFwcGx5X2hhbmRs ZV9zdHJlYW1fcHJlcGFyZSgpIHdoaWNoIHdpbGwgZW5zdXJlIGFsbCB0aGUKKyAqIG9wZXJhdGlv bnMgaW4gdGhhdCB0cmFuc2FjdGlvbiBoYXZlIGhhcHBlbmVkIGluIHRoZSBzdWJzY3JpYmVyLCBz byBubworICogY29uY3VycmVudCB0cmFuc2FjdGlvbiBjYW4gY2F1c2UgZGVhZGxvY2sgb3IgdHJh bnNhY3Rpb24gZGVwZW5kZW5jeSBpc3N1ZXMuCiAgKi8KIHN0YXRpYyB2b2lkCiBhcHBseV9oYW5k bGVfcm9sbGJhY2tfcHJlcGFyZWQoU3RyaW5nSW5mbyBzKQpAQCAtMTA4MCw3ICsxMjI5LDcgQEAg YXBwbHlfaGFuZGxlX3JvbGxiYWNrX3ByZXBhcmVkKFN0cmluZ0luZm8gcykKIAogCXBnc3RhdF9y ZXBvcnRfc3RhdChmYWxzZSk7CiAKLQlzdG9yZV9mbHVzaF9wb3NpdGlvbihyb2xsYmFja19kYXRh LnJvbGxiYWNrX2VuZF9sc24pOworCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHJvbGxiYWNrX2RhdGEu cm9sbGJhY2tfZW5kX2xzbiwgWGFjdExhc3RDb21taXRFbmQpOwogCWluX3JlbW90ZV90cmFuc2Fj dGlvbiA9IGZhbHNlOwogCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5 bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KQEAgLTEwOTIsMTUgKzEyNDEsMTMgQEAgYXBwbHlf aGFuZGxlX3JvbGxiYWNrX3ByZXBhcmVkKFN0cmluZ0luZm8gcykKIAogLyoKICAqIEhhbmRsZSBT VFJFQU0gUFJFUEFSRS4KLSAqCi0gKiBMb2dpYyBpcyBpbiB0d28gcGFydHM6Ci0gKiAxLiBSZXBs YXkgYWxsIHRoZSBzcG9vbGVkIG9wZXJhdGlvbnMKLSAqIDIuIE1hcmsgdGhlIHRyYW5zYWN0aW9u IGFzIHByZXBhcmVkCiAgKi8KIHN0YXRpYyB2b2lkCiBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBh cmUoU3RyaW5nSW5mbyBzKQogewogCUxvZ2ljYWxSZXBQcmVwYXJlZFR4bkRhdGEgcHJlcGFyZV9k YXRhOworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKKwlUcmFuc0FwcGx5QWN0aW9u IGFwcGx5X2FjdGlvbjsKIAogCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKIAkJZXJlcG9y dChFUlJPUiwKQEAgLTExMTYsMjQgKzEyNjMsODQgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVw YXJlKFN0cmluZ0luZm8gcykKIAlsb2dpY2FscmVwX3JlYWRfc3RyZWFtX3ByZXBhcmUocywgJnBy ZXBhcmVfZGF0YSk7CiAJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChwcmVwYXJlX2RhdGEu eGlkLCBwcmVwYXJlX2RhdGEucHJlcGFyZV9sc24pOwogCi0JZWxvZyhERUJVRzEsICJyZWNlaXZl ZCBwcmVwYXJlIGZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbiAldSIsIHByZXBhcmVfZGF0YS54aWQp OworCWFwcGx5X2FjdGlvbiA9IGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24ocHJlcGFyZV9k YXRhLnhpZCwgJndpbmZvKTsKIAotCS8qIFJlcGxheSBhbGwgdGhlIHNwb29sZWQgb3BlcmF0aW9u cy4gKi8KLQlhcHBseV9zcG9vbGVkX21lc3NhZ2VzKHByZXBhcmVfZGF0YS54aWQsIHByZXBhcmVf ZGF0YS5wcmVwYXJlX2xzbik7CisJc3dpdGNoIChhcHBseV9hY3Rpb24pCisJeworCQljYXNlIFRS QU5TX0xFQURFUl9TRVJJQUxJWkU6CiAKLQkvKiBNYXJrIHRoZSB0cmFuc2FjdGlvbiBhcyBwcmVw YXJlZC4gKi8KLQlhcHBseV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5hbCgmcHJlcGFyZV9kYXRhKTsK KwkJCS8qCisJCQkgKiBUaGUgdHJhbnNhY3Rpb24gaGFzIGJlZW4gc2VyaWFsaXplZCB0byBmaWxl LCBzbyByZXBsYXkgYWxsIHRoZQorCQkJICogc3Bvb2xlZCBvcGVyYXRpb25zLgorCQkJICovCisJ CQlhcHBseV9zcG9vbGVkX21lc3NhZ2VzKHByZXBhcmVfZGF0YS54aWQsIHByZXBhcmVfZGF0YS5w cmVwYXJlX2xzbik7CiAKLQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJCS8qIE1hcmsg dGhlIHRyYW5zYWN0aW9uIGFzIHByZXBhcmVkLiAqLworCQkJYXBwbHlfaGFuZGxlX3ByZXBhcmVf aW50ZXJuYWwoJnByZXBhcmVfZGF0YSk7CiAKLQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOwor CQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQlzdG9yZV9mbHVzaF9wb3NpdGlvbihw cmVwYXJlX2RhdGEuZW5kX2xzbik7CisJCQlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2Rh dGEuZW5kX2xzbiwgWGFjdExhc3RDb21taXRFbmQpOwogCi0JaW5fcmVtb3RlX3RyYW5zYWN0aW9u ID0gZmFsc2U7CisJCQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKKworCQkJLyogVW5s aW5rIHRoZSBmaWxlcyB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcyBhbmQgc3VieGFjdCBpbmZvLiAq LworCQkJc3RyZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgcHJl cGFyZV9kYXRhLnhpZCk7CisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX0xFQURFUl9TRU5EX1RP X1BBUkFMTEVMOgorCQkJQXNzZXJ0KHdpbmZvKTsKKworCQkJLyoKKwkJCSAqIFVubG9jayB0aGUg c2hhcmVkIG9iamVjdCBsb2NrIHNvIHRoYXQgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGNhbgorCQkJ ICogY29udGludWUgdG8gcmVjZWl2ZSBhbmQgYXBwbHkgY2hhbmdlcy4KKwkJCSAqLworCQkJcGFf dW5sb2NrX3N0cmVhbSh3aW5mby0+c2hhcmVkLT54aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOwor CisJCQkvKiBTZW5kIFNUUkVBTSBQUkVQQVJFIG1lc3NhZ2UgdG8gdGhlIHBhcmFsbGVsIGFwcGx5 IHdvcmtlci4gKi8KKwkJCXBhX3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKTsKKwor CQkJLyoKKwkJCSAqIEFmdGVyIHNlbmRpbmcgdGhlIGRhdGEgdG8gdGhlIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciwgd2FpdCBmb3IKKwkJCSAqIHRoYXQgd29ya2VyIHRvIGZpbmlzaC4gVGhpcyBpcyBu ZWNlc3NhcnkgdG8gbWFpbnRhaW4gY29tbWl0CisJCQkgKiBvcmRlciB3aGljaCBhdm9pZHMgZmFp bHVyZXMgZHVlIHRvIHRyYW5zYWN0aW9uIGRlcGVuZGVuY2llcyBhbmQKKwkJCSAqIGRlYWRsb2Nr cy4KKwkJCSAqLworCQkJcGFfd2FpdF9mb3JfeGFjdF9maW5pc2god2luZm8pOworCisJCQlzdG9y ZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5kX2xzbiwgd2luZm8tPnNoYXJlZC0+bGFz dF9jb21taXRfZW5kKTsKKworCQkJKHZvaWQpIHBhX2ZyZWVfd29ya2VyKHdpbmZvLCBwcmVwYXJl X2RhdGEueGlkKTsKKworCQkJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CisJCQlicmVh azsKKworCQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZOgorCQkJYmVnaW5fcmVwbGljYXRpb25f c3RlcCgpOwogCi0JLyogdW5saW5rIHRoZSBmaWxlcyB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcyBh bmQgc3VieGFjdCBpbmZvLiAqLwotCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdv cmtlci0+c3ViaWQsIHByZXBhcmVfZGF0YS54aWQpOworCQkJLyogTWFyayB0aGUgdHJhbnNhY3Rp b24gYXMgcHJlcGFyZWQuICovCisJCQlhcHBseV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5hbCgmcHJl cGFyZV9kYXRhKTsKKworCQkJZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKKworCQkJQ29tbWl0VHJh bnNhY3Rpb25Db21tYW5kKCk7CisKKwkJCU15UGFyYWxsZWxTaGFyZWQtPmxhc3RfY29tbWl0X2Vu ZCA9IFhhY3RMYXN0Q29tbWl0RW5kOworCisJCQlwYV9zZXRfeGFjdF9zdGF0ZShNeVBhcmFsbGVs U2hhcmVkLCBQQVJBTExFTF9UUkFOU19GSU5JU0hFRCk7CisJCQlwYV91bmxvY2tfdHJhbnNhY3Rp b24oTXlQYXJhbGxlbFNoYXJlZC0+eGlkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJCQlwYV9yZXNl dF9zdWJ0cmFucygpOworCisJCQllbG9nKERFQlVHMSwgImZpbmlzaGVkIHByb2Nlc3NpbmcgdGhl IFNUUkVBTSBQUkVQQVJFIGNvbW1hbmQiKTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlB c3NlcnQoZmFsc2UpOworCQkJYnJlYWs7CisJfQorCisJcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNl KTsKIAogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQg aW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhwcmVwYXJlX2RhdGEuZW5k X2xzbik7CkBAIC0xMTc3LDIxICsxMzg0LDE0IEBAIHN0YXRpYyB2b2lkCiBhcHBseV9oYW5kbGVf c3RyZWFtX3N0YXJ0KFN0cmluZ0luZm8gcykKIHsKIAlib29sCQlmaXJzdF9zZWdtZW50OworCVBh cmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKKwlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5X2Fj dGlvbjsKIAogCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKIAkJZXJlcG9ydChFUlJPUiwK IAkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCiAJCQkJIGVycm1zZ19p bnRlcm5hbCgiZHVwbGljYXRlIFNUUkVBTSBTVEFSVCBtZXNzYWdlIikpKTsKIAotCS8qCi0JICog U3RhcnQgYSB0cmFuc2FjdGlvbiBvbiBzdHJlYW0gc3RhcnQsIHRoaXMgdHJhbnNhY3Rpb24gd2ls bCBiZSBjb21taXR0ZWQKLQkgKiBvbiB0aGUgc3RyZWFtIHN0b3AgdW5sZXNzIGl0IGlzIGEgdGFi bGVzeW5jIHdvcmtlciBpbiB3aGljaCBjYXNlIGl0Ci0JICogd2lsbCBiZSBjb21taXR0ZWQgYWZ0 ZXIgcHJvY2Vzc2luZyBhbGwgdGhlIG1lc3NhZ2VzLiBXZSBuZWVkIHRoZQotCSAqIHRyYW5zYWN0 aW9uIGZvciBoYW5kbGluZyB0aGUgYnVmZmlsZSwgdXNlZCBmb3Igc2VyaWFsaXppbmcgdGhlCi0J ICogc3RyZWFtaW5nIGRhdGEgYW5kIHN1YnhhY3QgaW5mby4KLQkgKi8KLQliZWdpbl9yZXBsaWNh dGlvbl9zdGVwKCk7Ci0KIAkvKiBub3RpZnkgaGFuZGxlIG1ldGhvZHMgd2UncmUgcHJvY2Vzc2lu ZyBhIHJlbW90ZSB0cmFuc2FjdGlvbiAqLwogCWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gdHJ1 ZTsKIApAQCAtMTIwNSwzNiArMTQwNSw5NSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0YXJ0KFN0 cmluZ0luZm8gcykKIAogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3Qoc3RyZWFtX3hpZCwg SW52YWxpZFhMb2dSZWNQdHIpOwogCi0JLyoKLQkgKiBJbml0aWFsaXplIHRoZSB3b3JrZXIncyBz dHJlYW1fZmlsZXNldCBpZiB3ZSBoYXZlbid0IHlldC4gVGhpcyB3aWxsIGJlCi0JICogdXNlZCBm b3IgdGhlIGVudGlyZSBkdXJhdGlvbiBvZiB0aGUgd29ya2VyIHNvIGNyZWF0ZSBpdCBpbiBhIHBl cm1hbmVudAotCSAqIGNvbnRleHQuIFdlIGNyZWF0ZSB0aGlzIG9uIHRoZSB2ZXJ5IGZpcnN0IHN0 cmVhbWluZyBtZXNzYWdlIGZyb20gYW55Ci0JICogdHJhbnNhY3Rpb24gYW5kIHRoZW4gdXNlIGl0 IGZvciB0aGlzIGFuZCBvdGhlciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zLgotCSAqIE5vdywgd2Ug Y291bGQgY3JlYXRlIGEgZmlsZXNldCBhdCB0aGUgc3RhcnQgb2YgdGhlIHdvcmtlciBhcyB3ZWxs IGJ1dAotCSAqIHRoZW4gd2Ugd29uJ3QgYmUgc3VyZSB0aGF0IGl0IHdpbGwgZXZlciBiZSB1c2Vk LgotCSAqLwotCWlmIChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0ID09IE5VTEwp CisJLyogVHJ5IHRvIGFsbG9jYXRlIGEgd29ya2VyIGZvciB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0 aW9uLiAqLworCWlmIChmaXJzdF9zZWdtZW50KQorCQlwYV9hbGxvY2F0ZV93b3JrZXIoc3RyZWFt X3hpZCk7CisKKwlhcHBseV9hY3Rpb24gPSBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKHN0 cmVhbV94aWQsICZ3aW5mbyk7CisKKwlzd2l0Y2ggKGFwcGx5X2FjdGlvbikKIAl7Ci0JCU1lbW9y eUNvbnRleHQgb2xkY3R4OworCQljYXNlIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6CiAKLQkJb2xk Y3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CisJCQkvKgorCQkJICog U3RhcnQgYSB0cmFuc2FjdGlvbiBvbiBzdHJlYW0gc3RhcnQsIHRoaXMgdHJhbnNhY3Rpb24gd2ls bCBiZQorCQkJICogY29tbWl0dGVkIG9uIHRoZSBzdHJlYW0gc3RvcCB1bmxlc3MgaXQgaXMgYSB0 YWJsZXN5bmMgd29ya2VyIGluCisJCQkgKiB3aGljaCBjYXNlIGl0IHdpbGwgYmUgY29tbWl0dGVk IGFmdGVyIHByb2Nlc3NpbmcgYWxsIHRoZQorCQkJICogbWVzc2FnZXMuIFdlIG5lZWQgdGhlIHRy YW5zYWN0aW9uIGZvciBoYW5kbGluZyB0aGUgYnVmZmlsZSwKKwkJCSAqIHVzZWQgZm9yIHNlcmlh bGl6aW5nIHRoZSBzdHJlYW1pbmcgZGF0YSBhbmQgc3VieGFjdCBpbmZvLgorCQkJICovCisJCQli ZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CiAKLQkJTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1f ZmlsZXNldCA9IHBhbGxvYyhzaXplb2YoRmlsZVNldCkpOwotCQlGaWxlU2V0SW5pdChNeUxvZ2lj YWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0KTsKKwkJCS8qCisJCQkgKiBJbml0aWFsaXplIHRo ZSB3b3JrZXIncyBzdHJlYW1fZmlsZXNldCBpZiB3ZSBoYXZlbid0IHlldC4gVGhpcworCQkJICog d2lsbCBiZSB1c2VkIGZvciB0aGUgZW50aXJlIGR1cmF0aW9uIG9mIHRoZSB3b3JrZXIgc28gY3Jl YXRlIGl0CisJCQkgKiBpbiBhIHBlcm1hbmVudCBjb250ZXh0LiBXZSBjcmVhdGUgdGhpcyBvbiB0 aGUgdmVyeSBmaXJzdAorCQkJICogc3RyZWFtaW5nIG1lc3NhZ2UgZnJvbSBhbnkgdHJhbnNhY3Rp b24gYW5kIHRoZW4gdXNlIGl0IGZvciB0aGlzCisJCQkgKiBhbmQgb3RoZXIgc3RyZWFtaW5nIHRy YW5zYWN0aW9ucy4gTm93LCB3ZSBjb3VsZCBjcmVhdGUgYQorCQkJICogZmlsZXNldCBhdCB0aGUg c3RhcnQgb2YgdGhlIHdvcmtlciBhcyB3ZWxsIGJ1dCB0aGVuIHdlIHdvbid0IGJlCisJCQkgKiBz dXJlIHRoYXQgaXQgd2lsbCBldmVyIGJlIHVzZWQuCisJCQkgKi8KKwkJCWlmICghTXlMb2dpY2Fs UmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCkKKwkJCXsKKwkJCQlNZW1vcnlDb250ZXh0IG9sZGN0 eDsKIAotCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKLQl9CisJCQkJb2xkY3R4ID0g TWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CiAKLQkvKiBvcGVuIHRoZSBzcG9v bCBmaWxlIGZvciB0aGlzIHRyYW5zYWN0aW9uICovCi0Jc3RyZWFtX29wZW5fZmlsZShNeUxvZ2lj YWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkLCBmaXJzdF9zZWdtZW50KTsKKwkJCQlNeUxv Z2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0ID0gcGFsbG9jKHNpemVvZihGaWxlU2V0KSk7 CisJCQkJRmlsZVNldEluaXQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCk7CiAK LQkvKiBpZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3Qgc2VnbWVudCwgb3BlbiBleGlzdGluZyBzdWJ4 YWN0IGZpbGUgKi8KLQlpZiAoIWZpcnN0X3NlZ21lbnQpCi0JCXN1YnhhY3RfaW5mb19yZWFkKE15 TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOworCQkJCU1lbW9yeUNvbnRleHRT d2l0Y2hUbyhvbGRjdHgpOworCQkJfQogCi0JcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9S VU5OSU5HLCBOVUxMKTsKKwkJCS8qIE9wZW4gdGhlIHNwb29sIGZpbGUgZm9yIHRoaXMgdHJhbnNh Y3Rpb24uICovCisJCQlzdHJlYW1fb3Blbl9maWxlKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQs IHN0cmVhbV94aWQsIGZpcnN0X3NlZ21lbnQpOwogCi0JZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsK KwkJCS8qIElmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBzZWdtZW50LCBvcGVuIGV4aXN0aW5nIHN1 YnhhY3QgZmlsZS4gKi8KKwkJCWlmICghZmlyc3Rfc2VnbWVudCkKKwkJCQlzdWJ4YWN0X2luZm9f cmVhZChNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkKTsKKworCQkJZW5kX3Jl cGxpY2F0aW9uX3N0ZXAoKTsKKwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNfTEVBREVSX1NFTkRf VE9fUEFSQUxMRUw6CisJCQlBc3NlcnQod2luZm8pOworCisJCQkvKgorCQkJICogVW5sb2NrIHRo ZSBzaGFyZWQgb2JqZWN0IGxvY2sgc28gdGhhdCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyCisJ CQkgKiBjYW4gY29udGludWUgdG8gcmVjZWl2ZSBjaGFuZ2VzLgorCQkJICovCisJCQlpZiAoIWZp cnN0X3NlZ21lbnQpCisJCQkJcGFfdW5sb2NrX3N0cmVhbSh3aW5mby0+c2hhcmVkLT54aWQsIEFj Y2Vzc0V4Y2x1c2l2ZUxvY2spOworCisJCQkvKgorCQkJICogSW5jcmVtZW50IHRoZSBudW1iZXIg b2Ygc3RyZWFtaW5nIGJsb2NrcyB3YWl0aW5nIHRvIGJlCisJCQkgKiBwcm9jZXNzZWQgYnkgcGFy YWxsZWwgYXBwbHkgd29ya2VyLgorCQkJICovCisJCQlwYV9pbmNyZW1lbnRfc3RyZWFtX2Jsb2Nr KHdpbmZvLT5zaGFyZWQpOworCisJCQlwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0 YSk7CisKKwkJCS8qIENhY2hlIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZm9yIHRoaXMgdHJh bnNhY3Rpb24uICovCisJCQlwYV9zZXRfc3RyZWFtX2FwcGx5X3dvcmtlcih3aW5mbyk7CisJCQli cmVhazsKKworCQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZOgorCQkJaWYgKGZpcnN0X3NlZ21l bnQpCisJCQl7CisJCQkJLyogSG9sZCB0aGUgbG9jayB1bnRpbCB0aGUgZW5kIG9mIHRoZSB0cmFu c2FjdGlvbi4gKi8KKwkJCQlwYV9sb2NrX3RyYW5zYWN0aW9uKE15UGFyYWxsZWxTaGFyZWQtPnhp ZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCQlwYV9zZXRfeGFjdF9zdGF0ZShNeVBhcmFsbGVsU2hh cmVkLCBQQVJBTExFTF9UUkFOU19TVEFSVEVEKTsKKwkJCX0KKworCQkJcGFyYWxsZWxfc3RyZWFt X25jaGFuZ2VzID0gMDsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlBc3NlcnQoZmFsc2Up OworCQkJYnJlYWs7CisJfQorCisJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9SVU5OSU5H LCBOVUxMKTsKIH0KIAogLyoKQEAgLTEyNDMsNTggKzE1MDIsOTcgQEAgYXBwbHlfaGFuZGxlX3N0 cmVhbV9zdGFydChTdHJpbmdJbmZvIHMpCiBzdGF0aWMgdm9pZAogYXBwbHlfaGFuZGxlX3N0cmVh bV9zdG9wKFN0cmluZ0luZm8gcykKIHsKKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87 CisJVHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CisKIAlpZiAoIWluX3N0cmVhbWVkX3Ry YW5zYWN0aW9uKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9D T0xfVklPTEFUSU9OKSwKIAkJCQkgZXJybXNnX2ludGVybmFsKCJTVFJFQU0gU1RPUCBtZXNzYWdl IHdpdGhvdXQgU1RSRUFNIFNUQVJUIikpKTsKIAotCS8qCi0JICogQ2xvc2UgdGhlIGZpbGUgd2l0 aCBzZXJpYWxpemVkIGNoYW5nZXMsIGFuZCBzZXJpYWxpemUgaW5mb3JtYXRpb24gYWJvdXQKLQkg KiBzdWJ4YWN0cyBmb3IgdGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uLgotCSAqLwotCXN1YnhhY3Rf aW5mb193cml0ZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkKTsKLQlzdHJl YW1fY2xvc2VfZmlsZSgpOworCWFwcGx5X2FjdGlvbiA9IGdldF90cmFuc2FjdGlvbl9hcHBseV9h Y3Rpb24oc3RyZWFtX3hpZCwgJndpbmZvKTsKIAotCS8qIFdlIG11c3QgYmUgaW4gYSB2YWxpZCB0 cmFuc2FjdGlvbiBzdGF0ZSAqLwotCUFzc2VydChJc1RyYW5zYWN0aW9uU3RhdGUoKSk7CisJc3dp dGNoIChhcHBseV9hY3Rpb24pCisJeworCQljYXNlIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6CiAK LQkvKiBDb21taXQgdGhlIHBlci1zdHJlYW0gdHJhbnNhY3Rpb24gKi8KLQlDb21taXRUcmFuc2Fj dGlvbkNvbW1hbmQoKTsKKwkJCS8qCisJCQkgKiBDbG9zZSB0aGUgZmlsZSB3aXRoIHNlcmlhbGl6 ZWQgY2hhbmdlcywgYW5kIHNlcmlhbGl6ZQorCQkJICogaW5mb3JtYXRpb24gYWJvdXQgc3VieGFj dHMgZm9yIHRoZSB0b3BsZXZlbCB0cmFuc2FjdGlvbi4KKwkJCSAqLworCQkJc3VieGFjdF9pbmZv X3dyaXRlKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOworCQkJc3RyZWFt X2Nsb3NlX2ZpbGUoKTsKIAotCWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gZmFsc2U7CisJCQkv KiBXZSBtdXN0IGJlIGluIGEgdmFsaWQgdHJhbnNhY3Rpb24gc3RhdGUgKi8KKwkJCUFzc2VydChJ c1RyYW5zYWN0aW9uU3RhdGUoKSk7CiAKLQkvKiBSZXNldCBwZXItc3RyZWFtIGNvbnRleHQgKi8K LQlNZW1vcnlDb250ZXh0UmVzZXQoTG9naWNhbFN0cmVhbWluZ0NvbnRleHQpOworCQkJLyogQ29t bWl0IHRoZSBwZXItc3RyZWFtIHRyYW5zYWN0aW9uICovCisJCQlDb21taXRUcmFuc2FjdGlvbkNv bW1hbmQoKTsKKworCQkJLyogUmVzZXQgcGVyLXN0cmVhbSBjb250ZXh0ICovCisJCQlNZW1vcnlD b250ZXh0UmVzZXQoTG9naWNhbFN0cmVhbWluZ0NvbnRleHQpOworCisJCQlwZ3N0YXRfcmVwb3J0 X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5VTEwpOworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19M RUFERVJfU0VORF9UT19QQVJBTExFTDoKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCS8qCisJCQkg KiBMb2NrIGJlZm9yZSBzZW5kaW5nIHRoZSBTVFJFQU1fU1RPUCBtZXNzYWdlIHNvIHRoYXQgdGhl IGxlYWRlcgorCQkJICogY2FuIGhvbGQgdGhlIGxvY2sgZmlyc3QgYW5kIHRoZSBwYXJhbGxlbCBh cHBseSB3b3JrZXIgd2lsbCB3YWl0CisJCQkgKiBmb3IgbGVhZGVyIHRvIHJlbGVhc2UgdGhlIGxv Y2suIFNlZSBMb2NraW5nIENvbnNpZGVyYXRpb25zIGF0b3AKKwkJCSAqIGFwcGx5cGFyYWxsZWx3 b3JrZXIuYy4KKwkJCSAqLworCQkJcGFfbG9ja19zdHJlYW0od2luZm8tPnNoYXJlZC0+eGlkLCBB Y2Nlc3NFeGNsdXNpdmVMb2NrKTsKKworCQkJcGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMt PmRhdGEpOworCisJCQlwYV9zZXRfc3RyZWFtX2FwcGx5X3dvcmtlcihOVUxMKTsKKworCQkJcGdz dGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBOVUxMKTsKKwkJCWJyZWFrOworCisJCWNh c2UgVFJBTlNfUEFSQUxMRUxfQVBQTFk6CisJCQllbG9nKERFQlVHMSwgImFwcGxpZWQgJXUgY2hh bmdlcyBpbiB0aGUgc3RyZWFtaW5nIGNodW5rIiwKKwkJCQkgcGFyYWxsZWxfc3RyZWFtX25jaGFu Z2VzKTsKKworCQkJLyoKKwkJCSAqIEJ5IHRoZSB0aW1lIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBp cyBwcm9jZXNzaW5nIHRoZSBjaGFuZ2VzIGluCisJCQkgKiB0aGUgY3VycmVudCBzdHJlYW1pbmcg YmxvY2ssIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIG1heSBoYXZlCisJCQkgKiBzZW50IG11bHRp cGxlIHN0cmVhbWluZyBibG9ja3MuIFRoaXMgY2FuIGxlYWQgdG8gcGFyYWxsZWwgYXBwbHkKKwkJ CSAqIHdvcmtlciBzdGFydCB3YWl0aW5nIGV2ZW4gd2hlbiB0aGVyZSBhcmUgbW9yZSBjaHVuayBv ZiBzdHJlYW1zCisJCQkgKiBpbiB0aGUgcXVldWUuIFNvLCB0cnkgdG8gbG9jayBvbmx5IGlmIHRo ZXJlIGlzIG5vIG1lc3NhZ2UgbGVmdAorCQkJICogaW4gdGhlIHF1ZXVlLiBTZWUgTG9ja2luZyBD b25zaWRlcmF0aW9ucyBhdG9wCisJCQkgKiBhcHBseXBhcmFsbGVsd29ya2VyLmMuCisJCQkgKi8K KwkJCXBhX2RlY3JfYW5kX3dhaXRfc3RyZWFtX2Jsb2NrKE15UGFyYWxsZWxTaGFyZWQpOworCisJ CQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEVJTlRSQU5TQUNUSU9OLCBOVUxMKTsK KwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlBc3NlcnQoZmFsc2UpOworCQkJYnJlYWs7CisJ fQorCisJaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIAotCXBnc3RhdF9yZXBvcnRf YWN0aXZpdHkoU1RBVEVfSURMRSwgTlVMTCk7CiAJcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9p bmZvKCk7CiB9CiAKIC8qCi0gKiBIYW5kbGUgU1RSRUFNIGFib3J0IG1lc3NhZ2UuCisgKiBIYW5k bGUgU1RSRUFNIEFCT1JUIG1lc3NhZ2Ugd2hlbiB0aGUgdHJhbnNhY3Rpb24gd2FzIHNlcmlhbGl6 ZWQgdG8gZmlsZS4KICAqLwogc3RhdGljIHZvaWQKLWFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQo U3RyaW5nSW5mbyBzKQorc3RyZWFtX2Fib3J0X2ludGVybmFsKFRyYW5zYWN0aW9uSWQgeGlkLCBU cmFuc2FjdGlvbklkIHN1YnhpZCkKIHsKLQlUcmFuc2FjdGlvbklkIHhpZDsKLQlUcmFuc2FjdGlv bklkIHN1YnhpZDsKLQotCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKLQkJZXJlcG9ydChF UlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCi0JCQkJIGVy cm1zZ19pbnRlcm5hbCgiU1RSRUFNIEFCT1JUIG1lc3NhZ2Ugd2l0aG91dCBTVFJFQU0gU1RPUCIp KSk7Ci0KLQlsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KHMsICZ4aWQsICZzdWJ4aWQpOwot CiAJLyoKIAkgKiBJZiB0aGUgdHdvIFhJRHMgYXJlIHRoZSBzYW1lLCBpdCdzIGluIGZhY3QgYWJv cnQgb2YgdG9wbGV2ZWwgeGFjdCwgc28KIAkgKiBqdXN0IGRlbGV0ZSB0aGUgZmlsZXMgd2l0aCBz ZXJpYWxpemVkIGluZm8uCiAJICovCiAJaWYgKHhpZCA9PSBzdWJ4aWQpCi0JewotCQlzZXRfYXBw bHlfZXJyb3JfY29udGV4dF94YWN0KHhpZCwgSW52YWxpZFhMb2dSZWNQdHIpOwogCQlzdHJlYW1f Y2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOwotCX0KIAllbHNl CiAJewogCQkvKgpAQCAtMTMxOCw4ICsxNjE2LDYgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9y dChTdHJpbmdJbmZvIHMpCiAJCWJvb2wJCWZvdW5kID0gZmFsc2U7CiAJCWNoYXIJCXBhdGhbTUFY UEdQQVRIXTsKIAotCQlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHN1YnhpZCwgSW52YWxp ZFhMb2dSZWNQdHIpOwotCiAJCXN1YmlkeCA9IC0xOwogCQliZWdpbl9yZXBsaWNhdGlvbl9zdGVw KCk7CiAJCXN1YnhhY3RfaW5mb19yZWFkKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7 CkBAIC0xMzQ0LDcgKzE2NDAsNiBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0lu Zm8gcykKIAkJCWNsZWFudXBfc3VieGFjdF9pbmZvKCk7CiAJCQllbmRfcmVwbGljYXRpb25fc3Rl cCgpOwogCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7Ci0JCQlyZXNldF9hcHBseV9lcnJv cl9jb250ZXh0X2luZm8oKTsKIAkJCXJldHVybjsKIAkJfQogCkBAIC0xMzY3LDYgKzE2NjIsMTA1 IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQogCQllbmRfcmVwbGlj YXRpb25fc3RlcCgpOwogCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAl9Cit9CisKKy8q CisgKiBIYW5kbGUgU1RSRUFNIEFCT1JUIG1lc3NhZ2UuCisgKi8KK3N0YXRpYyB2b2lkCithcHBs eV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKK3sKKwlUcmFuc2FjdGlvbklkIHhp ZDsKKwlUcmFuc2FjdGlvbklkIHN1YnhpZDsKKwlMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhIGFi b3J0X2RhdGE7CisJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvOworCVRyYW5zQXBwbHlB Y3Rpb24gYXBwbHlfYWN0aW9uOworCWJvb2wJCXRvcGxldmVsX3hhY3Q7CisKKwlpZiAoaW5fc3Ry ZWFtZWRfdHJhbnNhY3Rpb24pCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09E RV9QUk9UT0NPTF9WSU9MQVRJT04pLAorCQkJCSBlcnJtc2dfaW50ZXJuYWwoIlNUUkVBTSBBQk9S VCBtZXNzYWdlIHdpdGhvdXQgU1RSRUFNIFNUT1AiKSkpOworCisJLyogV2UgcmVjZWl2ZSBhYm9y dCBpbmZvcm1hdGlvbiBvbmx5IHdoZW4gd2UgY2FuIGFwcGx5IGluIHBhcmFsbGVsLiAqLworCWxv Z2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQocywgJmFib3J0X2RhdGEsCisJCQkJCQkJCSBNeUxv Z2ljYWxSZXBXb3JrZXItPnBhcmFsbGVsX2FwcGx5KTsKKworCXhpZCA9IGFib3J0X2RhdGEueGlk OworCXN1YnhpZCA9IGFib3J0X2RhdGEuc3VieGlkOworCXRvcGxldmVsX3hhY3QgPSAoeGlkID09 IHN1YnhpZCk7CisKKwlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHN1YnhpZCwgYWJvcnRf ZGF0YS5hYm9ydF9sc24pOworCisJYXBwbHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5 X2FjdGlvbih4aWQsICZ3aW5mbyk7CisKKwlzd2l0Y2ggKGFwcGx5X2FjdGlvbikKKwl7CisJCWNh c2UgVFJBTlNfTEVBREVSX1NFUklBTElaRToKKworCQkJLyoKKwkJCSAqIFdlIGFyZSBpbiB0aGUg bGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgdGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVuCisJCQkgKiBz ZXJpYWxpemVkIHRvIGZpbGUuCisJCQkgKi8KKwkJCXN0cmVhbV9hYm9ydF9pbnRlcm5hbCh4aWQs IHN1YnhpZCk7CisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFM TEVMOgorCQkJQXNzZXJ0KHdpbmZvKTsKKworCQkJLyoKKwkJCSAqIFVubG9jayB0aGUgc2hhcmVk IG9iamVjdCBsb2NrIHNvIHRoYXQgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGNhbgorCQkJICogY29u dGludWUgdG8gcmVjZWl2ZSBhbmQgYXBwbHkgY2hhbmdlcy4KKwkJCSAqLworCQkJcGFfdW5sb2Nr X3N0cmVhbSh4aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCisJCQkvKgorCQkJICogRm9yIHRo ZSBjYXNlIG9mIGFib3J0aW5nIHRoZSBzdWJ0cmFuc2FjdGlvbiwgd2UgaW5jcmVtZW50IHRoZQor CQkJICogbnVtYmVyIG9mIHN0cmVhbWluZyBibG9ja3MgYW5kIHRha2UgdGhlIGxvY2sgYWdhaW4g YmVmb3JlCisJCQkgKiBzZW5kaW5nIHRoZSBTVFJFQU1fQUJPUlQgdG8gZW5zdXJlIHRoYXQgdGhl IHBhcmFsbGVsIGFwcGx5CisJCQkgKiB3b3JrZXIgd2lsbCB3YWl0IG9uIHRoZSBsb2NrIGZvciB0 aGUgbmV4dCBzZXQgb2YgY2hhbmdlcyBhZnRlcgorCQkJICogcHJvY2Vzc2luZyB0aGUgU1RSRUFN X0FCT1JUIG1lc3NhZ2UgaWYgaXQgaXMgbm90IGFscmVhZHkgd2FpdGluZworCQkJICogZm9yIFNU UkVBTV9TVE9QIG1lc3NhZ2UuCisJCQkgKi8KKwkJCWlmICghdG9wbGV2ZWxfeGFjdCkKKwkJCXsK KwkJCQlwYV9pbmNyZW1lbnRfc3RyZWFtX2Jsb2NrKHdpbmZvLT5zaGFyZWQpOworCQkJCXBhX2xv Y2tfc3RyZWFtKHhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisJCQl9CisKKwkJCS8qIFNlbmQg U1RSRUFNIEFCT1JUIG1lc3NhZ2UgdG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gKi8KKwkJ CXBhX3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKTsKKworCQkJaWYgKHRvcGxldmVs X3hhY3QpCisJCQkJKHZvaWQpIHBhX2ZyZWVfd29ya2VyKHdpbmZvLCB4aWQpOworCisJCQlicmVh azsKKworCQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZOgorCQkJcGFfc3RyZWFtX2Fib3J0KCZh Ym9ydF9kYXRhKTsKKworCQkJLyoKKwkJCSAqIFdlIG5lZWQgdG8gd2FpdCBhZnRlciBwcm9jZXNz aW5nIHJvbGxiYWNrIHRvIHNhdmVwb2ludCBmb3IgdGhlCisJCQkgKiBuZXh0IHNldCBvZiBjaGFu Z2VzLgorCQkJICoKKwkJCSAqIEJ5IHRoZSB0aW1lIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpcyBw cm9jZXNzaW5nIHRoZSBjaGFuZ2VzIGluCisJCQkgKiB0aGUgY3VycmVudCBzdHJlYW1pbmcgYmxv Y2ssIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIG1heSBoYXZlCisJCQkgKiBzZW50IG11bHRpcGxl IHN0cmVhbWluZyBibG9ja3MuIFRoaXMgY2FuIGxlYWQgdG8gcGFyYWxsZWwgYXBwbHkKKwkJCSAq IHdvcmtlciBzdGFydCB3YWl0aW5nIGV2ZW4gd2hlbiB0aGVyZSBhcmUgbW9yZSBjaHVuayBvZiBz dHJlYW1zCisJCQkgKiBpbiB0aGUgcXVldWUuIFNvLCB0cnkgdG8gbG9jayBvbmx5IGlmIHRoZXJl IGlzIG5vIG1lc3NhZ2UgbGVmdAorCQkJICogaW4gdGhlIHF1ZXVlLiBTZWUgTG9ja2luZyBDb25z aWRlcmF0aW9ucyBhdG9wCisJCQkgKiBhcHBseXBhcmFsbGVsd29ya2VyLmMuCisJCQkgKi8KKwkJ CWlmICghdG9wbGV2ZWxfeGFjdCkKKwkJCQlwYV9kZWNyX2FuZF93YWl0X3N0cmVhbV9ibG9jayhN eVBhcmFsbGVsU2hhcmVkKTsKKworCQkJZWxvZyhERUJVRzEsICJmaW5pc2hlZCBwcm9jZXNzaW5n IHRoZSBTVFJFQU0gQUJPUlQgY29tbWFuZCIpOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJ CUFzc2VydChmYWxzZSk7CisJCQlicmVhazsKKwl9CiAKIAlyZXNldF9hcHBseV9lcnJvcl9jb250 ZXh0X2luZm8oKTsKIH0KQEAgLTE0OTgsNiArMTg5Miw4IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1f Y29tbWl0KFN0cmluZ0luZm8gcykKIHsKIAlUcmFuc2FjdGlvbklkIHhpZDsKIAlMb2dpY2FsUmVw Q29tbWl0RGF0YSBjb21taXRfZGF0YTsKKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87 CisJVHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CiAKIAlpZiAoaW5fc3RyZWFtZWRfdHJh bnNhY3Rpb24pCiAJCWVyZXBvcnQoRVJST1IsCkBAIC0xNTA3LDE0ICsxOTAzLDY3IEBAIGFwcGx5 X2hhbmRsZV9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gcykKIAl4aWQgPSBsb2dpY2FscmVwX3Jl YWRfc3RyZWFtX2NvbW1pdChzLCAmY29tbWl0X2RhdGEpOwogCXNldF9hcHBseV9lcnJvcl9jb250 ZXh0X3hhY3QoeGlkLCBjb21taXRfZGF0YS5jb21taXRfbHNuKTsKIAotCWVsb2coREVCVUcxLCAi cmVjZWl2ZWQgY29tbWl0IGZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbiAldSIsIHhpZCk7CisJYXBw bHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbih4aWQsICZ3aW5mbyk7CiAK LQlhcHBseV9zcG9vbGVkX21lc3NhZ2VzKHhpZCwgY29tbWl0X2RhdGEuY29tbWl0X2xzbik7CisJ c3dpdGNoIChhcHBseV9hY3Rpb24pCisJeworCQljYXNlIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6 CiAKLQlhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7CisJCQkvKgor CQkJICogVGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVuIHNlcmlhbGl6ZWQgdG8gZmlsZSwgc28gcmVw bGF5IGFsbCB0aGUKKwkJCSAqIHNwb29sZWQgb3BlcmF0aW9ucy4KKwkJCSAqLworCQkJYXBwbHlf c3Bvb2xlZF9tZXNzYWdlcyh4aWQsIGNvbW1pdF9kYXRhLmNvbW1pdF9sc24pOworCisJCQlhcHBs eV9oYW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7CisKKwkJCS8qIFVubGluayB0 aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5mby4gKi8KKwkJ CXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7CisJ CQlicmVhazsKKworCQljYXNlIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgorCQkJQXNz ZXJ0KHdpbmZvKTsKKworCQkJLyoKKwkJCSAqIFVubG9jayB0aGUgc2hhcmVkIG9iamVjdCBsb2Nr IHNvIHRoYXQgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGNhbgorCQkJICogY29udGludWUgdG8gcmVj ZWl2ZSBhbmQgYXBwbHkgY2hhbmdlcy4KKwkJCSAqLworCQkJcGFfdW5sb2NrX3N0cmVhbSh4aWQs IEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCisJCQkvKiBTZW5kIFNUUkVBTSBDT01NSVQgbWVzc2Fn ZSB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiAqLworCQkJcGFfc2VuZF9kYXRhKHdpbmZv LCBzLT5sZW4sIHMtPmRhdGEpOworCisJCQkvKgorCQkJICogQWZ0ZXIgc2VuZGluZyB0aGUgZGF0 YSB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLCB3YWl0IGZvcgorCQkJICogdGhhdCB3b3Jr ZXIgdG8gZmluaXNoLiBUaGlzIGlzIG5lY2Vzc2FyeSB0byBtYWludGFpbiBjb21taXQKKwkJCSAq IG9yZGVyIHdoaWNoIGF2b2lkcyBmYWlsdXJlcyBkdWUgdG8gdHJhbnNhY3Rpb24gZGVwZW5kZW5j aWVzIGFuZAorCQkJICogZGVhZGxvY2tzLgorCQkJICovCisJCQlwYV93YWl0X2Zvcl94YWN0X2Zp bmlzaCh3aW5mbyk7CisKKwkJCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKGNvbW1pdF9kYXRhLmVuZF9s c24sIHdpbmZvLT5zaGFyZWQtPmxhc3RfY29tbWl0X2VuZCk7CiAKLQkvKiB1bmxpbmsgdGhlIGZp bGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8gKi8KLQlzdHJlYW1f Y2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOworCQkJKHZvaWQp IHBhX2ZyZWVfd29ya2VyKHdpbmZvLCB4aWQpOworCisJCQlicmVhazsKKworCQljYXNlIFRSQU5T X1BBUkFMTEVMX0FQUExZOgorCQkJYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0 X2RhdGEpOworCisJCQlNeVBhcmFsbGVsU2hhcmVkLT5sYXN0X2NvbW1pdF9lbmQgPSBYYWN0TGFz dENvbW1pdEVuZDsKKworCQkJcGFfc2V0X3hhY3Rfc3RhdGUoTXlQYXJhbGxlbFNoYXJlZCwgUEFS QUxMRUxfVFJBTlNfRklOSVNIRUQpOworCQkJcGFfdW5sb2NrX3RyYW5zYWN0aW9uKHhpZCwgQWNj ZXNzU2hhcmVMb2NrKTsKKworCQkJcGFfcmVzZXRfc3VidHJhbnMoKTsKKworCQkJZWxvZyhERUJV RzEsICJmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSBTVFJFQU0gQ09NTUlUIGNvbW1hbmQiKTsKKwkJ CWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlBc3NlcnQoZmFsc2UpOworCQkJYnJlYWs7CisJfQog CiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBw YXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKGNvbW1pdF9kYXRhLmVuZF9sc24p OwpAQCAtMTU1OCw5ICsyMDA3LDE2IEBAIGFwcGx5X2hhbmRsZV9jb21taXRfaW50ZXJuYWwoTG9n aWNhbFJlcENvbW1pdERhdGEgKmNvbW1pdF9kYXRhKQogCQlyZXBsb3JpZ2luX3Nlc3Npb25fb3Jp Z2luX3RpbWVzdGFtcCA9IGNvbW1pdF9kYXRhLT5jb21taXR0aW1lOwogCiAJCUNvbW1pdFRyYW5z YWN0aW9uQ29tbWFuZCgpOworCisJCWlmIChJc1RyYW5zYWN0aW9uQmxvY2soKSkKKwkJeworCQkJ RW5kVHJhbnNhY3Rpb25CbG9jayhmYWxzZSk7CisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQo KTsKKwkJfQorCiAJCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxzZSk7CiAKLQkJc3RvcmVfZmx1c2hf cG9zaXRpb24oY29tbWl0X2RhdGEtPmVuZF9sc24pOworCQlzdG9yZV9mbHVzaF9wb3NpdGlvbihj b21taXRfZGF0YS0+ZW5kX2xzbiwgWGFjdExhc3RDb21taXRFbmQpOwogCX0KIAllbHNlCiAJewpA QCAtMjUxMSw3ICsyOTY3LDcgQEAgYXBwbHlfaGFuZGxlX3RydW5jYXRlKFN0cmluZ0luZm8gcykK IC8qCiAgKiBMb2dpY2FsIHJlcGxpY2F0aW9uIHByb3RvY29sIG1lc3NhZ2UgZGlzcGF0Y2hlci4K ICAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIGFwcGx5X2Rpc3BhdGNoKFN0cmluZ0luZm8gcykKIHsK IAlMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24gPSBwcV9nZXRtc2dieXRlKHMpOwpAQCAtMjY3Niwx NiArMzEzMiwyMyBAQCBnZXRfZmx1c2hfcG9zaXRpb24oWExvZ1JlY1B0ciAqd3JpdGUsIFhMb2dS ZWNQdHIgKmZsdXNoLAogICogU3RvcmUgY3VycmVudCByZW1vdGUvbG9jYWwgbHNuIHBhaXIgaW4g dGhlIHRyYWNraW5nIGxpc3QuCiAgKi8KIHN0YXRpYyB2b2lkCi1zdG9yZV9mbHVzaF9wb3NpdGlv bihYTG9nUmVjUHRyIHJlbW90ZV9sc24pCitzdG9yZV9mbHVzaF9wb3NpdGlvbihYTG9nUmVjUHRy IHJlbW90ZV9sc24sIFhMb2dSZWNQdHIgbG9jYWxfbHNuKQogewogCUZsdXNoUG9zaXRpb24gKmZs dXNocG9zOwogCisJLyoKKwkgKiBTa2lwIGZvciBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLCBiZWNh dXNlIHRoZSBsc25fbWFwcGluZyBpcyBtYWludGFpbmVkCisJICogYnkgdGhlIGxlYWRlciBhcHBs eSB3b3JrZXIuCisJICovCisJaWYgKGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCQlyZXR1 cm47CisKIAkvKiBOZWVkIHRvIGRvIHRoaXMgaW4gcGVybWFuZW50IGNvbnRleHQgKi8KIAlNZW1v cnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKIAogCS8qIFRyYWNrIGNvbW1pdCBsc24g ICovCiAJZmx1c2hwb3MgPSAoRmx1c2hQb3NpdGlvbiAqKSBwYWxsb2Moc2l6ZW9mKEZsdXNoUG9z aXRpb24pKTsKLQlmbHVzaHBvcy0+bG9jYWxfZW5kID0gWGFjdExhc3RDb21taXRFbmQ7CisJZmx1 c2hwb3MtPmxvY2FsX2VuZCA9IGxvY2FsX2xzbjsKIAlmbHVzaHBvcy0+cmVtb3RlX2VuZCA9IHJl bW90ZV9sc247CiAKIAlkbGlzdF9wdXNoX3RhaWwoJmxzbl9tYXBwaW5nLCAmZmx1c2hwb3MtPm5v ZGUpOwpAQCAtMjc0NCw2ICszMjA3LDcgQEAgTG9naWNhbFJlcEFwcGx5TG9vcChYTG9nUmVjUHRy IGxhc3RfcmVjZWl2ZWQpCiAJZXJyY2FsbGJhY2suY2FsbGJhY2sgPSBhcHBseV9lcnJvcl9jYWxs YmFjazsKIAllcnJjYWxsYmFjay5wcmV2aW91cyA9IGVycm9yX2NvbnRleHRfc3RhY2s7CiAJZXJy b3JfY29udGV4dF9zdGFjayA9ICZlcnJjYWxsYmFjazsKKwlhcHBseV9lcnJvcl9jb250ZXh0X3N0 YWNrID0gZXJyb3JfY29udGV4dF9zdGFjazsKIAogCS8qIFRoaXMgb3V0ZXIgbG9vcCBpdGVyYXRl cyBvbmNlIHBlciB3YWl0LiAqLwogCWZvciAoOzspCkBAIC0yODk2LDYgKzMzNjAsMTMgQEAgTG9n aWNhbFJlcEFwcGx5TG9vcChYTG9nUmVjUHRyIGxhc3RfcmVjZWl2ZWQpCiAJCXsKIAkJCUNvbmZp Z1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsKIAkJCVByb2Nlc3NDb25maWdGaWxlKFBHQ19TSUdIVVAp OworCisJCQkvKgorCQkJICogVHJ5IHRvIHN0b3AgZnJlZSB3b3JrZXJzIGluIHRoZSBwb29sIGlu IGNhc2UgdGhlCisJCQkgKiBtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0 aW9uIGlzIGNoYW5nZWQgdG8gYQorCQkJICogbG93ZXIgdmFsdWUuCisJCQkgKi8KKwkJCXBhX3N0 b3BfaWRsZV93b3JrZXJzKCk7CiAJCX0KIAogCQlpZiAocmMgJiBXTF9USU1FT1VUKQpAQCAtMjk1 OCw2ICszNDI5LDcgQEAgTG9naWNhbFJlcEFwcGx5TG9vcChYTG9nUmVjUHRyIGxhc3RfcmVjZWl2 ZWQpCiAKIAkvKiBQb3AgdGhlIGVycm9yIGNvbnRleHQgc3RhY2sgKi8KIAllcnJvcl9jb250ZXh0 X3N0YWNrID0gZXJyY2FsbGJhY2sucHJldmlvdXM7CisJYXBwbHlfZXJyb3JfY29udGV4dF9zdGFj ayA9IGVycm9yX2NvbnRleHRfc3RhY2s7CiAKIAkvKiBBbGwgZG9uZSAqLwogCXdhbHJjdl9lbmRz dHJlYW1pbmcoTG9nUmVwV29ya2VyV2FsUmN2Q29ubiwgJnRsaSk7CkBAIC0zMDU2LDkgKzM1Mjgs MzEgQEAgc2VuZF9mZWVkYmFjayhYTG9nUmVjUHRyIHJlY3Zwb3MsIGJvb2wgZm9yY2UsIGJvb2wg cmVxdWVzdFJlcGx5KQogfQogCiAvKgotICogUmVyZWFkIHN1YnNjcmlwdGlvbiBpbmZvIGlmIG5l ZWRlZC4gTW9zdCBjaGFuZ2VzIHdpbGwgYmUgZXhpdC4KKyAqIEV4aXQgcm91dGluZSBmb3IgYXBw bHkgd29ya2VycyBkdWUgdG8gc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBjaGFuZ2VzLgogICovCiBz dGF0aWMgdm9pZAorYXBwbHlfd29ya2VyX2V4aXQodm9pZCkKK3sKKwlpZiAoYW1fcGFyYWxsZWxf YXBwbHlfd29ya2VyKCkpCisJeworCQkvKgorCQkgKiBEb24ndCBzdG9wIHRoZSBwYXJhbGxlbCBh cHBseSB3b3JrZXIgYXMgdGhlIGxlYWRlciB3aWxsIGRldGVjdCB0aGUKKwkJICogc3Vic2NyaXB0 aW9uIHBhcmFtZXRlciBjaGFuZ2UgYW5kIHJlc3RhcnQgbG9naWNhbCByZXBsaWNhdGlvbiBsYXRl cgorCQkgKiBhbnl3YXkuIFRoaXMgYWxzbyBwcmV2ZW50cyB0aGUgbGVhZGVyIGZyb20gcmVwb3J0 aW5nIGVycm9ycyB3aGVuCisJCSAqIHRyeWluZyB0byBjb21tdW5pY2F0ZSB3aXRoIGEgc3RvcHBl ZCBwYXJhbGxlbCBhcHBseSB3b3JrZXIsIHdoaWNoCisJCSAqIHdvdWxkIGFjY2lkZW50YWxseSBk aXNhYmxlIHN1YnNjcmlwdGlvbnMgaWYgZGlzYWJsZV9vbl9lcnJvciB3YXMKKwkJICogc2V0Lgor CQkgKi8KKwkJcmV0dXJuOworCX0KKworCXByb2NfZXhpdCgwKTsKK30KKworLyoKKyAqIFJlcmVh ZCBzdWJzY3JpcHRpb24gaW5mbyBpZiBuZWVkZWQuIE1vc3QgY2hhbmdlcyB3aWxsIGJlIGV4aXQu CisgKi8KK3ZvaWQKIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCkKIHsKIAlNZW1vcnlD b250ZXh0IG9sZGN0eDsKQEAgLTMwODgsOSArMzU4Miw5IEBAIG1heWJlX3JlcmVhZF9zdWJzY3Jp cHRpb24odm9pZCkKIAlpZiAoIW5ld3N1YikKIAl7CiAJCWVyZXBvcnQoTE9HLAotCQkJCShlcnJt c2coImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIl c1wiIHdpbGwgIgotCQkJCQkJInN0b3AgYmVjYXVzZSB0aGUgc3Vic2NyaXB0aW9uIHdhcyByZW1v dmVkIiwKLQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOworCQkvKiB0cmFuc2xhdG9yOiBm aXJzdCAlcyBpcyB0aGUgbmFtZSBvZiBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciAqLworCQkJ CShlcnJtc2coIiVzIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgc3RvcCBiZWNhdXNlIHRo ZSBzdWJzY3JpcHRpb24gd2FzIHJlbW92ZWQiLAorCQkJCQkJZ2V0X3dvcmtlcl9uYW1lKCksIE15 U3Vic2NyaXB0aW9uLT5uYW1lKSkpOwogCiAJCXByb2NfZXhpdCgwKTsKIAl9CkBAIC0zMDk5LDEx ICszNTkzLDExIEBAIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCkKIAlpZiAoIW5ld3N1 Yi0+ZW5hYmxlZCkKIAl7CiAJCWVyZXBvcnQoTE9HLAotCQkJCShlcnJtc2coImxvZ2ljYWwgcmVw bGljYXRpb24gYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgIgotCQkJ CQkJInN0b3AgYmVjYXVzZSB0aGUgc3Vic2NyaXB0aW9uIHdhcyBkaXNhYmxlZCIsCi0JCQkJCQlN eVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKKwkJLyogdHJhbnNsYXRvcjogZmlyc3QgJXMgaXMgdGhl IG5hbWUgb2YgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgKi8KKwkJCQkoZXJybXNnKCIlcyBm b3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsIHN0b3AgYmVjYXVzZSB0aGUgc3Vic2NyaXB0aW9u IHdhcyBkaXNhYmxlZCIsCisJCQkJCQlnZXRfd29ya2VyX25hbWUoKSwgTXlTdWJzY3JpcHRpb24t Pm5hbWUpKSk7CiAKLQkJcHJvY19leGl0KDApOworCQlhcHBseV93b3JrZXJfZXhpdCgpOwogCX0K IAogCS8qICFzbG90bmFtZSBzaG91bGQgbmV2ZXIgaGFwcGVuIHdoZW4gZW5hYmxlZCBpcyB0cnVl LiAqLwpAQCAtMzExNCw3ICszNjA4LDEwIEBAIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9p ZCkKIAogCS8qCiAJICogRXhpdCBpZiBhbnkgcGFyYW1ldGVyIHRoYXQgYWZmZWN0cyB0aGUgcmVt b3RlIGNvbm5lY3Rpb24gd2FzIGNoYW5nZWQuCi0JICogVGhlIGxhdW5jaGVyIHdpbGwgc3RhcnQg YSBuZXcgd29ya2VyLgorCSAqIFRoZSBsYXVuY2hlciB3aWxsIHN0YXJ0IGEgbmV3IHdvcmtlciBi dXQgbm90ZSB0aGF0IHRoZSBwYXJhbGxlbCBhcHBseQorCSAqIHdvcmtlciB3b24ndCByZXN0YXJ0 IGlmIHRoZSBzdHJlYW1pbmcgb3B0aW9uJ3MgdmFsdWUgaXMgY2hhbmdlZCBmcm9tCisJICogJ3Bh cmFsbGVsJyB0byBhbnkgb3RoZXIgdmFsdWUgb3IgdGhlIHNlcnZlciBkZWNpZGVzIG5vdCB0byBz dHJlYW0gdGhlCisJICogaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24uCiAJICovCiAJaWYgKHN0cmNt cChuZXdzdWItPmNvbm5pbmZvLCBNeVN1YnNjcmlwdGlvbi0+Y29ubmluZm8pICE9IDAgfHwKIAkJ c3RyY21wKG5ld3N1Yi0+bmFtZSwgTXlTdWJzY3JpcHRpb24tPm5hbWUpICE9IDAgfHwKQEAgLTMx MjUsMTEgKzM2MjIsMTcgQEAgbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKQogCQluZXdz dWItPm93bmVyICE9IE15U3Vic2NyaXB0aW9uLT5vd25lciB8fAogCQkhZXF1YWwobmV3c3ViLT5w dWJsaWNhdGlvbnMsIE15U3Vic2NyaXB0aW9uLT5wdWJsaWNhdGlvbnMpKQogCXsKLQkJZXJlcG9y dChMT0csCi0JCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIgZm9y IHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCByZXN0YXJ0IGJlY2F1c2Ugb2YgYSBwYXJhbWV0ZXIg Y2hhbmdlIiwKLQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOworCQlpZiAoYW1fcGFyYWxs ZWxfYXBwbHlfd29ya2VyKCkpCisJCQllcmVwb3J0KExPRywKKwkJCQkJKGVycm1zZygibG9naWNh bCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVz XCIgd2lsbCBzdG9wIGJlY2F1c2Ugb2YgYSBwYXJhbWV0ZXIgY2hhbmdlIiwKKwkJCQkJCQlNeVN1 YnNjcmlwdGlvbi0+bmFtZSkpKTsKKwkJZWxzZQorCQkJZXJlcG9ydChMT0csCisJCQkvKiB0cmFu c2xhdG9yOiBmaXJzdCAlcyBpcyB0aGUgbmFtZSBvZiBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtl ciAqLworCQkJCQkoZXJybXNnKCIlcyBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsIHJlc3Rh cnQgYmVjYXVzZSBvZiBhIHBhcmFtZXRlciBjaGFuZ2UiLAorCQkJCQkJCWdldF93b3JrZXJfbmFt ZSgpLCBNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKIAotCQlwcm9jX2V4aXQoMCk7CisJCWFwcGx5 X3dvcmtlcl9leGl0KCk7CiAJfQogCiAJLyogQ2hlY2sgZm9yIG90aGVyIGNoYW5nZXMgdGhhdCBz aG91bGQgbmV2ZXIgaGFwcGVuIHRvby4gKi8KQEAgLTM2MTMsMzcgKzQxMTYsMTYgQEAgc3RhcnRf YXBwbHkoWExvZ1JlY1B0ciBvcmlnaW5fc3RhcnRwb3MpCiAJUEdfRU5EX1RSWSgpOwogfQogCi0v KiBMb2dpY2FsIFJlcGxpY2F0aW9uIEFwcGx5IHdvcmtlciBlbnRyeSBwb2ludCAqLworLyoKKyAq IENvbW1vbiBpbml0aWFsaXphdGlvbiBmb3IgbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgcGFyYWxs ZWwgYXBwbHkgd29ya2VyLgorICoKKyAqIEluaXRpYWxpemUgdGhlIGRhdGFiYXNlIGNvbm5lY3Rp b24sIGluLW1lbW9yeSBzdWJzY3JpcHRpb24gYW5kIG5lY2Vzc2FyeQorICogY29uZmlnIG9wdGlv bnMuCisgKi8KIHZvaWQKLUFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKK0luaXRpYWxp emVBcHBseVdvcmtlcih2b2lkKQogewotCWludAkJCXdvcmtlcl9zbG90ID0gRGF0dW1HZXRJbnQz MihtYWluX2FyZyk7CiAJTWVtb3J5Q29udGV4dCBvbGRjdHg7Ci0JY2hhcgkJb3JpZ2lubmFtZVtO QU1FREFUQUxFTl07Ci0JWExvZ1JlY1B0cglvcmlnaW5fc3RhcnRwb3MgPSBJbnZhbGlkWExvZ1Jl Y1B0cjsKLQljaGFyCSAgICpteXNsb3RuYW1lID0gTlVMTDsKLQlXYWxSY3ZTdHJlYW1PcHRpb25z IG9wdGlvbnM7Ci0JaW50CQkJc2VydmVyX3ZlcnNpb247Ci0KLQkvKiBBdHRhY2ggdG8gc2xvdCAq LwotCWxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaCh3b3JrZXJfc2xvdCk7Ci0KLQkvKiBTZXR1cCBz aWduYWwgaGFuZGxpbmcgKi8KLQlwcXNpZ25hbChTSUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25m aWdSZWxvYWQpOwotCXBxc2lnbmFsKFNJR1RFUk0sIGRpZSk7Ci0JQmFja2dyb3VuZFdvcmtlclVu YmxvY2tTaWduYWxzKCk7Ci0KLQkvKgotCSAqIFdlIGRvbid0IGN1cnJlbnRseSBuZWVkIGFueSBS ZXNvdXJjZU93bmVyIGluIGEgd2FscmVjZWl2ZXIgcHJvY2VzcywgYnV0Ci0JICogaWYgd2UgZGlk LCB3ZSBjb3VsZCBjYWxsIENyZWF0ZUF1eFByb2Nlc3NSZXNvdXJjZU93bmVyIGhlcmUuCi0JICov Ci0KLQkvKiBJbml0aWFsaXNlIHN0YXRzIHRvIGEgc2FuaXNoIHZhbHVlICovCi0JTXlMb2dpY2Fs UmVwV29ya2VyLT5sYXN0X3NlbmRfdGltZSA9IE15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9yZWN2 X3RpbWUgPQotCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnJlcGx5X3RpbWUgPSBHZXRDdXJyZW50VGlt ZXN0YW1wKCk7Ci0KLQkvKiBMb2FkIHRoZSBsaWJwcS1zcGVjaWZpYyBmdW5jdGlvbnMgKi8KLQls b2FkX2ZpbGUoImxpYnBxd2FscmVjZWl2ZXIiLCBmYWxzZSk7CiAKIAkvKiBSdW4gYXMgcmVwbGlj YSBzZXNzaW9uIHJlcGxpY2F0aW9uIHJvbGUuICovCiAJU2V0Q29uZmlnT3B0aW9uKCJzZXNzaW9u X3JlcGxpY2F0aW9uX3JvbGUiLCAicmVwbGljYSIsCkBAIC0zNjcxLDkgKzQxNTMsMTAgQEAgQXBw bHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogCWlmICghTXlTdWJzY3JpcHRpb24pCiAJewog CQllcmVwb3J0KExPRywKLQkJCQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdv cmtlciBmb3Igc3Vic2NyaXB0aW9uICV1IHdpbGwgbm90ICIKLQkJCQkJCSJzdGFydCBiZWNhdXNl IHRoZSBzdWJzY3JpcHRpb24gd2FzIHJlbW92ZWQgZHVyaW5nIHN0YXJ0dXAiLAotCQkJCQkJTXlM b2dpY2FsUmVwV29ya2VyLT5zdWJpZCkpKTsKKwkJLyogdHJhbnNsYXRvcjogJXMgaXMgdGhlIG5h bWUgb2YgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgKi8KKwkJCQkoZXJybXNnKCIlcyBmb3Ig c3Vic2NyaXB0aW9uICV1IHdpbGwgbm90IHN0YXJ0IGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlvbiB3 YXMgcmVtb3ZlZCBkdXJpbmcgc3RhcnR1cCIsCisJCQkJCQlnZXRfd29ya2VyX25hbWUoKSwgTXlM b2dpY2FsUmVwV29ya2VyLT5zdWJpZCkpKTsKKwogCQlwcm9jX2V4aXQoMCk7CiAJfQogCkBAIC0z NjgzLDExICs0MTY2LDExIEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAlpZiAo IU15U3Vic2NyaXB0aW9uLT5lbmFibGVkKQogCXsKIAkJZXJlcG9ydChMT0csCi0JCQkJKGVycm1z ZygibG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVz XCIgd2lsbCBub3QgIgotCQkJCQkJInN0YXJ0IGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlvbiB3YXMg ZGlzYWJsZWQgZHVyaW5nIHN0YXJ0dXAiLAotCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7 CisJCS8qIHRyYW5zbGF0b3I6IGZpcnN0ICVzIGlzIHRoZSBuYW1lIG9mIGxvZ2ljYWwgcmVwbGlj YXRpb24gd29ya2VyICovCisJCQkJKGVycm1zZygiJXMgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIg d2lsbCBub3Qgc3RhcnQgYmVjYXVzZSB0aGUgc3Vic2NyaXB0aW9uIHdhcyBkaXNhYmxlZCBkdXJp bmcgc3RhcnR1cCIsCisJCQkJCQlnZXRfd29ya2VyX25hbWUoKSwgTXlTdWJzY3JpcHRpb24tPm5h bWUpKSk7CiAKLQkJcHJvY19leGl0KDApOworCQlhcHBseV93b3JrZXJfZXhpdCgpOwogCX0KIAog CS8qIFNldHVwIHN5bmNocm9ub3VzIGNvbW1pdCBhY2NvcmRpbmcgdG8gdGhlIHVzZXIncyB3aXNo ZXMgKi8KQEAgLTM3MDIsMTMgKzQxODUsNDkgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5f YXJnKQogCWlmIChhbV90YWJsZXN5bmNfd29ya2VyKCkpCiAJCWVyZXBvcnQoTE9HLAogCQkJCShl cnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gdGFibGUgc3luY2hyb25pemF0aW9uIHdvcmtlciBm b3Igc3Vic2NyaXB0aW9uIFwiJXNcIiwgdGFibGUgXCIlc1wiIGhhcyBzdGFydGVkIiwKLQkJCQkJ CU15U3Vic2NyaXB0aW9uLT5uYW1lLCBnZXRfcmVsX25hbWUoTXlMb2dpY2FsUmVwV29ya2VyLT5y ZWxpZCkpKSk7CisJCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSwKKwkJCQkJCWdldF9yZWxfbmFt ZShNeUxvZ2ljYWxSZXBXb3JrZXItPnJlbGlkKSkpKTsKIAllbHNlCiAJCWVyZXBvcnQoTE9HLAot CQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2VyIGZvciBzdWJzY3Jp cHRpb24gXCIlc1wiIGhhcyBzdGFydGVkIiwKLQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSkp OworCQkvKiB0cmFuc2xhdG9yOiBmaXJzdCAlcyBpcyB0aGUgbmFtZSBvZiBsb2dpY2FsIHJlcGxp Y2F0aW9uIHdvcmtlciAqLworCQkJCShlcnJtc2coIiVzIGZvciBzdWJzY3JpcHRpb24gXCIlc1wi IGhhcyBzdGFydGVkIiwKKwkJCQkJCWdldF93b3JrZXJfbmFtZSgpLCBNeVN1YnNjcmlwdGlvbi0+ bmFtZSkpKTsKIAogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworfQorCisvKiBMb2dpY2Fs IFJlcGxpY2F0aW9uIEFwcGx5IHdvcmtlciBlbnRyeSBwb2ludCAqLwordm9pZAorQXBwbHlXb3Jr ZXJNYWluKERhdHVtIG1haW5fYXJnKQoreworCWludAkJCXdvcmtlcl9zbG90ID0gRGF0dW1HZXRJ bnQzMihtYWluX2FyZyk7CisJY2hhcgkJb3JpZ2lubmFtZVtOQU1FREFUQUxFTl07CisJWExvZ1Jl Y1B0cglvcmlnaW5fc3RhcnRwb3MgPSBJbnZhbGlkWExvZ1JlY1B0cjsKKwljaGFyCSAgICpteXNs b3RuYW1lID0gTlVMTDsKKwlXYWxSY3ZTdHJlYW1PcHRpb25zIG9wdGlvbnM7CisJaW50CQkJc2Vy dmVyX3ZlcnNpb247CisKKwkvKiBBdHRhY2ggdG8gc2xvdCAqLworCWxvZ2ljYWxyZXBfd29ya2Vy X2F0dGFjaCh3b3JrZXJfc2xvdCk7CisKKwkvKiBTZXR1cCBzaWduYWwgaGFuZGxpbmcgKi8KKwlw cXNpZ25hbChTSUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQpOworCXBxc2lnbmFs KFNJR1RFUk0sIGRpZSk7CisJQmFja2dyb3VuZFdvcmtlclVuYmxvY2tTaWduYWxzKCk7CisKKwkv KgorCSAqIFdlIGRvbid0IGN1cnJlbnRseSBuZWVkIGFueSBSZXNvdXJjZU93bmVyIGluIGEgd2Fs cmVjZWl2ZXIgcHJvY2VzcywgYnV0CisJICogaWYgd2UgZGlkLCB3ZSBjb3VsZCBjYWxsIENyZWF0 ZUF1eFByb2Nlc3NSZXNvdXJjZU93bmVyIGhlcmUuCisJICovCisKKwkvKiBJbml0aWFsaXNlIHN0 YXRzIHRvIGEgc2FuaXNoIHZhbHVlICovCisJTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X3NlbmRf dGltZSA9IE15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9yZWN2X3RpbWUgPQorCQlNeUxvZ2ljYWxS ZXBXb3JrZXItPnJlcGx5X3RpbWUgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CisKKwkvKiBMb2Fk IHRoZSBsaWJwcS1zcGVjaWZpYyBmdW5jdGlvbnMgKi8KKwlsb2FkX2ZpbGUoImxpYnBxd2FscmVj ZWl2ZXIiLCBmYWxzZSk7CisKKwlJbml0aWFsaXplQXBwbHlXb3JrZXIoKTsKIAogCS8qIENvbm5l Y3QgdG8gdGhlIG9yaWdpbiBhbmQgc3RhcnQgdGhlIHJlcGxpY2F0aW9uLiAqLwogCWVsb2coREVC VUcxLCAiY29ubmVjdGluZyB0byBwdWJsaXNoZXIgdXNpbmcgY29ubmVjdGlvbiBzdHJpbmcgXCIl c1wiIiwKQEAgLTM3MTgsMjAgKzQyMzcsMTUgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5f YXJnKQogCXsKIAkJc3RhcnRfdGFibGVfc3luYygmb3JpZ2luX3N0YXJ0cG9zLCAmbXlzbG90bmFt ZSk7CiAKLQkJLyoKLQkJICogQWxsb2NhdGUgdGhlIG9yaWdpbiBuYW1lIGluIGxvbmctbGl2ZWQg Y29udGV4dCBmb3IgZXJyb3IgY29udGV4dAotCQkgKiBtZXNzYWdlLgotCQkgKi8KIAkJUmVwbGlj YXRpb25PcmlnaW5OYW1lRm9yTG9naWNhbFJlcChNeVN1YnNjcmlwdGlvbi0+b2lkLAogCQkJCQkJ CQkJCSAgIE15TG9naWNhbFJlcFdvcmtlci0+cmVsaWQsCiAJCQkJCQkJCQkJICAgb3JpZ2lubmFt ZSwKIAkJCQkJCQkJCQkgICBzaXplb2Yob3JpZ2lubmFtZSkpOwotCQlhcHBseV9lcnJvcl9jYWxs YmFja19hcmcub3JpZ2luX25hbWUgPSBNZW1vcnlDb250ZXh0U3RyZHVwKEFwcGx5Q29udGV4dCwK LQkJCQkJCQkJCQkJCQkJCQkgICBvcmlnaW5uYW1lKTsKKwkJc2V0X2FwcGx5X2Vycm9yX2NvbnRl eHRfb3JpZ2luKG9yaWdpbm5hbWUpOwogCX0KIAllbHNlCiAJewotCQkvKiBUaGlzIGlzIG1haW4g YXBwbHkgd29ya2VyICovCisJCS8qIFRoaXMgaXMgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgKi8K IAkJUmVwT3JpZ2luSWQgb3JpZ2luaWQ7CiAJCVRpbWVMaW5lSUQJc3RhcnRwb2ludFRMSTsKIAkJ Y2hhcgkgICAqZXJyOwpAQCAtMzc1NSw3ICs0MjY5LDcgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVt IG1haW5fYXJnKQogCQlvcmlnaW5pZCA9IHJlcGxvcmlnaW5fYnlfbmFtZShvcmlnaW5uYW1lLCB0 cnVlKTsKIAkJaWYgKCFPaWRJc1ZhbGlkKG9yaWdpbmlkKSkKIAkJCW9yaWdpbmlkID0gcmVwbG9y aWdpbl9jcmVhdGUob3JpZ2lubmFtZSk7Ci0JCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmln aW5pZCk7CisJCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCwgMCk7CiAJCXJlcGxv cmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmlnaW5pZDsKIAkJb3JpZ2luX3N0YXJ0cG9zID0gcmVw bG9yaWdpbl9zZXNzaW9uX2dldF9wcm9ncmVzcyhmYWxzZSk7CiAJCUNvbW1pdFRyYW5zYWN0aW9u Q29tbWFuZCgpOwpAQCAtMzc3MywxMiArNDI4Nyw3IEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBt YWluX2FyZykKIAkJICovCiAJCSh2b2lkKSB3YWxyY3ZfaWRlbnRpZnlfc3lzdGVtKExvZ1JlcFdv cmtlcldhbFJjdkNvbm4sICZzdGFydHBvaW50VExJKTsKIAotCQkvKgotCQkgKiBBbGxvY2F0ZSB0 aGUgb3JpZ2luIG5hbWUgaW4gbG9uZy1saXZlZCBjb250ZXh0IGZvciBlcnJvciBjb250ZXh0Ci0J CSAqIG1lc3NhZ2UuCi0JCSAqLwotCQlhcHBseV9lcnJvcl9jYWxsYmFja19hcmcub3JpZ2luX25h bWUgPSBNZW1vcnlDb250ZXh0U3RyZHVwKEFwcGx5Q29udGV4dCwKLQkJCQkJCQkJCQkJCQkJCQkg ICBvcmlnaW5uYW1lKTsKKwkJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfb3JpZ2luKG9yaWdpbm5h bWUpOwogCX0KIAogCS8qCkBAIC0zNzk2LDEzICs0MzA1LDM2IEBAIEFwcGx5V29ya2VyTWFpbihE YXR1bSBtYWluX2FyZykKIAogCXNlcnZlcl92ZXJzaW9uID0gd2FscmN2X3NlcnZlcl92ZXJzaW9u KExvZ1JlcFdvcmtlcldhbFJjdkNvbm4pOwogCW9wdGlvbnMucHJvdG8ubG9naWNhbC5wcm90b192 ZXJzaW9uID0KKwkJc2VydmVyX3ZlcnNpb24gPj0gMTYwMDAwID8gTE9HSUNBTFJFUF9QUk9UT19T VFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0gOgogCQlzZXJ2ZXJfdmVyc2lvbiA+PSAxNTAwMDAg PyBMT0dJQ0FMUkVQX1BST1RPX1RXT1BIQVNFX1ZFUlNJT05fTlVNIDoKIAkJc2VydmVyX3ZlcnNp b24gPj0gMTQwMDAwID8gTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fVkVSU0lPTl9OVU0gOgogCQlM T0dJQ0FMUkVQX1BST1RPX1ZFUlNJT05fTlVNOwogCiAJb3B0aW9ucy5wcm90by5sb2dpY2FsLnB1 YmxpY2F0aW9uX25hbWVzID0gTXlTdWJzY3JpcHRpb24tPnB1YmxpY2F0aW9uczsKIAlvcHRpb25z LnByb3RvLmxvZ2ljYWwuYmluYXJ5ID0gTXlTdWJzY3JpcHRpb24tPmJpbmFyeTsKLQlvcHRpb25z LnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nID0gTXlTdWJzY3JpcHRpb24tPnN0cmVhbTsKKworCS8q CisJICogQXNzaWduIHRoZSBhcHByb3ByaWF0ZSBvcHRpb24gdmFsdWUgZm9yIHN0cmVhbWluZyBv cHRpb24gYWNjb3JkaW5nIHRvCisJICogdGhlICdzdHJlYW1pbmcnIG1vZGUgYW5kIHRoZSBwdWJs aXNoZXIncyBhYmlsaXR5IHRvIHN1cHBvcnQgdGhhdCBtb2RlLgorCSAqLworCWlmIChzZXJ2ZXJf dmVyc2lvbiA+PSAxNjAwMDAgJiYKKwkJTXlTdWJzY3JpcHRpb24tPnN0cmVhbSA9PSBMT0dJQ0FM UkVQX1NUUkVBTV9QQVJBTExFTCkKKwl7CisJCW9wdGlvbnMucHJvdG8ubG9naWNhbC5zdHJlYW1p bmdfc3RyID0gInBhcmFsbGVsIjsKKwkJTXlMb2dpY2FsUmVwV29ya2VyLT5wYXJhbGxlbF9hcHBs eSA9IHRydWU7CisJfQorCWVsc2UgaWYgKHNlcnZlcl92ZXJzaW9uID49IDE0MDAwMCAmJgorCQkJ IE15U3Vic2NyaXB0aW9uLT5zdHJlYW0gIT0gTE9HSUNBTFJFUF9TVFJFQU1fT0ZGKQorCXsKKwkJ b3B0aW9ucy5wcm90by5sb2dpY2FsLnN0cmVhbWluZ19zdHIgPSAib24iOworCQlNeUxvZ2ljYWxS ZXBXb3JrZXItPnBhcmFsbGVsX2FwcGx5ID0gZmFsc2U7CisJfQorCWVsc2UKKwl7CisJCW9wdGlv bnMucHJvdG8ubG9naWNhbC5zdHJlYW1pbmdfc3RyID0gTlVMTDsKKwkJTXlMb2dpY2FsUmVwV29y a2VyLT5wYXJhbGxlbF9hcHBseSA9IGZhbHNlOworCX0KKwogCW9wdGlvbnMucHJvdG8ubG9naWNh bC50d29waGFzZSA9IGZhbHNlOwogCW9wdGlvbnMucHJvdG8ubG9naWNhbC5vcmlnaW4gPSBwc3Ry ZHVwKE15U3Vic2NyaXB0aW9uLT5vcmlnaW4pOwogCkBAIC0zOTAwLDYgKzQ0MzIsMTUgQEAgSXNM b2dpY2FsV29ya2VyKHZvaWQpCiB9CiAKIC8qCisgKiBJcyBjdXJyZW50IHByb2Nlc3MgYSBsb2dp Y2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlcj8KKyAqLworYm9vbAorSXNMb2dp Y2FsUGFyYWxsZWxBcHBseVdvcmtlcih2b2lkKQoreworCXJldHVybiBJc0xvZ2ljYWxXb3JrZXIo KSAmJiBhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKTsKK30KKworLyoKICAqIFN0YXJ0IHNraXBw aW5nIGNoYW5nZXMgb2YgdGhlIHRyYW5zYWN0aW9uIGlmIHRoZSBnaXZlbiBMU04gbWF0Y2hlcyB0 aGUKICAqIExTTiBzcGVjaWZpZWQgYnkgc3Vic2NyaXB0aW9uJ3Mgc2tpcGxzbi4KICAqLwpAQCAt Mzk2MSw3ICs0NTAyLDcgQEAgY2xlYXJfc3Vic2NyaXB0aW9uX3NraXBfbHNuKFhMb2dSZWNQdHIg ZmluaXNoX2xzbikKIAlYTG9nUmVjUHRyCW15c2tpcGxzbiA9IE15U3Vic2NyaXB0aW9uLT5za2lw bHNuOwogCWJvb2wJCXN0YXJ0ZWRfdHggPSBmYWxzZTsKIAotCWlmIChsaWtlbHkoWExvZ1JlY1B0 cklzSW52YWxpZChteXNraXBsc24pKSkKKwlpZiAobGlrZWx5KFhMb2dSZWNQdHJJc0ludmFsaWQo bXlza2lwbHNuKSkgfHwgYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCiAJCXJldHVybjsKIAog CWlmICghSXNUcmFuc2FjdGlvblN0YXRlKCkpCkBAIC00MDMzLDcgKzQ1NzQsNyBAQCBjbGVhcl9z dWJzY3JpcHRpb25fc2tpcF9sc24oWExvZ1JlY1B0ciBmaW5pc2hfbHNuKQogfQogCiAvKiBFcnJv ciBjYWxsYmFjayB0byBnaXZlIG1vcmUgY29udGV4dCBpbmZvIGFib3V0IHRoZSBjaGFuZ2UgYmVp bmcgYXBwbGllZCAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZv aWQgKmFyZykKIHsKIAlBcHBseUVycm9yQ2FsbGJhY2tBcmcgKmVycmFyZyA9ICZhcHBseV9lcnJv cl9jYWxsYmFja19hcmc7CkBAIC00MDYxLDIzICs0NjAyLDQ3IEBAIGFwcGx5X2Vycm9yX2NhbGxi YWNrKHZvaWQgKmFyZykKIAkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkLAogCQkJCQkgICBMU05f Rk9STUFUX0FSR1MoZXJyYXJnLT5maW5pc2hfbHNuKSk7CiAJfQotCWVsc2UgaWYgKGVycmFyZy0+ cmVtb3RlX2F0dG51bSA8IDApCi0JCWVycmNvbnRleHQoInByb2Nlc3NpbmcgcmVtb3RlIGRhdGEg Zm9yIHJlcGxpY2F0aW9uIG9yaWdpbiBcIiVzXCIgZHVyaW5nIG1lc3NhZ2UgdHlwZSBcIiVzXCIg Zm9yIHJlcGxpY2F0aW9uIHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgaW4gdHJhbnNhY3Rpb24g JXUsIGZpbmlzaGVkIGF0ICVYLyVYIiwKLQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1lLAotCQkJ CSAgIGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKGVycmFyZy0+Y29tbWFuZCksCi0JCQkJICAgZXJy YXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAotCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVy ZWwucmVsbmFtZSwKLQkJCQkgICBlcnJhcmctPnJlbW90ZV94aWQsCi0JCQkJICAgTFNOX0ZPUk1B VF9BUkdTKGVycmFyZy0+ZmluaXNoX2xzbikpOwogCWVsc2UKLQkJZXJyY29udGV4dCgicHJvY2Vz c2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgbWVz c2FnZSB0eXBlIFwiJXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNc IiBjb2x1bW4gXCIlc1wiIGluIHRyYW5zYWN0aW9uICV1LCBmaW5pc2hlZCBhdCAlWC8lWCIsCi0J CQkJICAgZXJyYXJnLT5vcmlnaW5fbmFtZSwKLQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlw ZShlcnJhcmctPmNvbW1hbmQpLAotCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwubnNwbmFt ZSwKLQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsCi0JCQkJICAgZXJyYXJn LT5yZWwtPnJlbW90ZXJlbC5hdHRuYW1lc1tlcnJhcmctPnJlbW90ZV9hdHRudW1dLAotCQkJCSAg IGVycmFyZy0+cmVtb3RlX3hpZCwKLQkJCQkgICBMU05fRk9STUFUX0FSR1MoZXJyYXJnLT5maW5p c2hfbHNuKSk7CisJeworCQlpZiAoZXJyYXJnLT5yZW1vdGVfYXR0bnVtIDwgMCkKKwkJeworCQkJ aWYgKFhMb2dSZWNQdHJJc0ludmFsaWQoZXJyYXJnLT5maW5pc2hfbHNuKSkKKwkJCQllcnJjb250 ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wi IGR1cmluZyBtZXNzYWdlIHR5cGUgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRp b24gXCIlcy4lc1wiIGluIHRyYW5zYWN0aW9uICV1IiwKKwkJCQkJCSAgIGVycmFyZy0+b3JpZ2lu X25hbWUsCisJCQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQp LAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAorCQkJCQkJICAgZXJy YXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlk KTsKKwkJCWVsc2UKKwkJCQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciBy ZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBtZXNzYWdlIHR5cGUgXCIlc1wiIGZvciBy ZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGluIHRyYW5zYWN0aW9uICV1LCBm aW5pc2hlZCBhdCAlWC8lWCIsCisJCQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1lLAorCQkJCQkJ ICAgbG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoZXJyYXJnLT5jb21tYW5kKSwKKwkJCQkJCSAgIGVy cmFyZy0+cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1v dGVyZWwucmVsbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCwKKwkJCQkJCSAgIExT Tl9GT1JNQVRfQVJHUyhlcnJhcmctPmZpbmlzaF9sc24pKTsKKwkJfQorCQllbHNlCisJCXsKKwkJ CWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKGVycmFyZy0+ZmluaXNoX2xzbikpCisJCQkJZXJyY29u dGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luIFwiJXNc IiBkdXJpbmcgbWVzc2FnZSB0eXBlIFwiJXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0 aW9uIFwiJXMuJXNcIiBjb2x1bW4gXCIlc1wiIGluIHRyYW5zYWN0aW9uICV1IiwKKwkJCQkJCSAg IGVycmFyZy0+b3JpZ2luX25hbWUsCisJCQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShl cnJhcmctPmNvbW1hbmQpLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1l LAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAorCQkJCQkJICAgZXJy YXJnLT5yZWwtPnJlbW90ZXJlbC5hdHRuYW1lc1tlcnJhcmctPnJlbW90ZV9hdHRudW1dLAorCQkJ CQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkKTsKKwkJCWVsc2UKKwkJCQllcnJjb250ZXh0KCJwcm9j ZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBt ZXNzYWdlIHR5cGUgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIlcy4l c1wiIGNvbHVtbiBcIiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUsIGZpbmlzaGVkIGF0ICVYLyVYIiwK KwkJCQkJCSAgIGVycmFyZy0+b3JpZ2luX25hbWUsCisJCQkJCQkgICBsb2dpY2FscmVwX21lc3Nh Z2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJl bC5uc3BuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAorCQkJ CQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5hdHRuYW1lc1tlcnJhcmctPnJlbW90ZV9hdHRu dW1dLAorCQkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkLAorCQkJCQkJICAgTFNOX0ZPUk1BVF9B UkdTKGVycmFyZy0+ZmluaXNoX2xzbikpOworCQl9CisJfQogfQogCiAvKiBTZXQgdHJhbnNhY3Rp b24gaW5mb3JtYXRpb24gb2YgYXBwbHkgZXJyb3IgY2FsbGJhY2sgKi8KQEAgLTQwOTcsMyArNDY2 Miw0OCBAQCByZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8odm9pZCkKIAlhcHBseV9lcnJv cl9jYWxsYmFja19hcmcucmVtb3RlX2F0dG51bSA9IC0xOwogCXNldF9hcHBseV9lcnJvcl9jb250 ZXh0X3hhY3QoSW52YWxpZFRyYW5zYWN0aW9uSWQsIEludmFsaWRYTG9nUmVjUHRyKTsKIH0KKwor LyoKKyAqIEFsbG9jYXRlIHRoZSBvcmlnaW4gbmFtZSBpbiBsb25nLWxpdmVkIGNvbnRleHQgZm9y IGVycm9yIGNvbnRleHQgbWVzc2FnZS4KKyAqLwordm9pZAorc2V0X2FwcGx5X2Vycm9yX2NvbnRl eHRfb3JpZ2luKGNoYXIgKm9yaWdpbm5hbWUpCit7CisJYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJn Lm9yaWdpbl9uYW1lID0gTWVtb3J5Q29udGV4dFN0cmR1cChBcHBseUNvbnRleHQsCisJCQkJCQkJ CQkJCQkJCQkgICBvcmlnaW5uYW1lKTsKK30KKworLyoKKyAqIFJldHVybiB0aGUgYWN0aW9uIHRv IHRha2UgZm9yIHRoZSBnaXZlbiB0cmFuc2FjdGlvbi4gKndpbmZvIGlzIGFzc2lnbmVkIHRvCisg KiB0aGUgZGVzdGluYXRpb24gcGFyYWxsZWwgd29ya2VyIGluZm8gKGlmIHRoZSBhY3Rpb24gaXMK KyAqIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMKSwgb3RoZXJ3aXNlICp3aW5mbyBpcyBh c3NpZ25lZCBOVUxMLgorICovCitzdGF0aWMgVHJhbnNBcHBseUFjdGlvbgorZ2V0X3RyYW5zYWN0 aW9uX2FwcGx5X2FjdGlvbihUcmFuc2FjdGlvbklkIHhpZCwgUGFyYWxsZWxBcHBseVdvcmtlcklu Zm8gKip3aW5mbykKK3sKKwkqd2luZm8gPSBOVUxMOworCisJaWYgKGFtX3BhcmFsbGVsX2FwcGx5 X3dvcmtlcigpKQorCXsKKwkJcmV0dXJuIFRSQU5TX1BBUkFMTEVMX0FQUExZOworCX0KKwllbHNl IGlmIChpbl9yZW1vdGVfdHJhbnNhY3Rpb24pCisJeworCQlyZXR1cm4gVFJBTlNfTEVBREVSX0FQ UExZOworCX0KKworCS8qCisJICogQ2hlY2sgaWYgd2UgYXJlIHByb2Nlc3NpbmcgdGhpcyB0cmFu c2FjdGlvbiB1c2luZyBhIHBhcmFsbGVsIGFwcGx5CisJICogd29ya2VyLgorCSAqLworCSp3aW5m byA9IHBhX2ZpbmRfd29ya2VyKHhpZCk7CisKKwlpZiAoKndpbmZvKQorCXsKKwkJcmV0dXJuIFRS QU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOworCX0KKwllbHNlCisJeworCQlyZXR1cm4gVFJB TlNfTEVBREVSX1NFUklBTElaRTsKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdv dXRwdXQvcGdvdXRwdXQuYwppbmRleCBjYTQ2ZmJhLi40MGM0NGJiIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCisrKyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKQEAgLTE4LDYgKzE4LDcgQEAKICNpbmNs dWRlICJjYXRhbG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdf c3Vic2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGVmcmVtLmgiCisjaW5jbHVkZSAi Y29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9y LmgiCiAjaW5jbHVkZSAiZm1nci5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgpAQCAt MjkwLDcgKzI5MSw3IEBAIHBhcnNlX291dHB1dF9wYXJhbWV0ZXJzKExpc3QgKm9wdGlvbnMsIFBH T3V0cHV0RGF0YSAqZGF0YSkKIAlib29sCQlvcmlnaW5fb3B0aW9uX2dpdmVuID0gZmFsc2U7CiAK IAlkYXRhLT5iaW5hcnkgPSBmYWxzZTsKLQlkYXRhLT5zdHJlYW1pbmcgPSBmYWxzZTsKKwlkYXRh LT5zdHJlYW1pbmcgPSBMT0dJQ0FMUkVQX1NUUkVBTV9PRkY7CiAJZGF0YS0+bWVzc2FnZXMgPSBm YWxzZTsKIAlkYXRhLT50d29fcGhhc2UgPSBmYWxzZTsKIApAQCAtMzY5LDcgKzM3MCw3IEBAIHBh cnNlX291dHB1dF9wYXJhbWV0ZXJzKExpc3QgKm9wdGlvbnMsIFBHT3V0cHV0RGF0YSAqZGF0YSkK IAkJCQkJCSBlcnJtc2coImNvbmZsaWN0aW5nIG9yIHJlZHVuZGFudCBvcHRpb25zIikpKTsKIAkJ CXN0cmVhbWluZ19naXZlbiA9IHRydWU7CiAKLQkJCWRhdGEtPnN0cmVhbWluZyA9IGRlZkdldEJv b2xlYW4oZGVmZWwpOworCQkJZGF0YS0+c3RyZWFtaW5nID0gZGVmR2V0U3RyZWFtaW5nTW9kZShk ZWZlbCk7CiAJCX0KIAkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAidHdvX3BoYXNl IikgPT0gMCkKIAkJewpAQCAtNDYxLDEzICs0NjIsMjAgQEAgcGdvdXRwdXRfc3RhcnR1cChMb2dp Y2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIE91dHB1dFBsdWdpbk9wdGlvbnMgKm9wdCwKIAkJICog d2Ugb25seSBhbGxvdyBpdCB3aXRoIHN1ZmZpY2llbnQgdmVyc2lvbiBvZiB0aGUgcHJvdG9jb2ws IGFuZCB3aGVuCiAJCSAqIHRoZSBvdXRwdXQgcGx1Z2luIHN1cHBvcnRzIGl0LgogCQkgKi8KLQkJ aWYgKCFkYXRhLT5zdHJlYW1pbmcpCisJCWlmIChkYXRhLT5zdHJlYW1pbmcgPT0gTE9HSUNBTFJF UF9TVFJFQU1fT0ZGKQogCQkJY3R4LT5zdHJlYW1pbmcgPSBmYWxzZTsKLQkJZWxzZSBpZiAoZGF0 YS0+cHJvdG9jb2xfdmVyc2lvbiA8IExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1ZFUlNJT05fTlVN KQorCQllbHNlIGlmIChkYXRhLT5zdHJlYW1pbmcgPT0gTE9HSUNBTFJFUF9TVFJFQU1fT04gJiYK KwkJCQkgZGF0YS0+cHJvdG9jb2xfdmVyc2lvbiA8IExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1ZF UlNJT05fTlVNKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZB TElEX1BBUkFNRVRFUl9WQUxVRSksCiAJCQkJCSBlcnJtc2coInJlcXVlc3RlZCBwcm90b192ZXJz aW9uPSVkIGRvZXMgbm90IHN1cHBvcnQgc3RyZWFtaW5nLCBuZWVkICVkIG9yIGhpZ2hlciIsCiAJ CQkJCQkJZGF0YS0+cHJvdG9jb2xfdmVyc2lvbiwgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fVkVS U0lPTl9OVU0pKSk7CisJCWVsc2UgaWYgKGRhdGEtPnN0cmVhbWluZyA9PSBMT0dJQ0FMUkVQX1NU UkVBTV9QQVJBTExFTCAmJgorCQkJCSBkYXRhLT5wcm90b2NvbF92ZXJzaW9uIDwgTE9HSUNBTFJF UF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0pCisJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJIGVy cm1zZygicmVxdWVzdGVkIHByb3RvX3ZlcnNpb249JWQgZG9lcyBub3Qgc3VwcG9ydCBwYXJhbGxl bCBzdHJlYW1pbmcsIG5lZWQgJWQgb3IgaGlnaGVyIiwKKwkJCQkJCQlkYXRhLT5wcm90b2NvbF92 ZXJzaW9uLCBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05VTSkpKTsK IAkJZWxzZSBpZiAoIWN0eC0+c3RyZWFtaW5nKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCkBAIC0xODQxLDYgKzE4NDks OCBAQCBwZ291dHB1dF9zdHJlYW1fYWJvcnQoc3RydWN0IExvZ2ljYWxEZWNvZGluZ0NvbnRleHQg KmN0eCwKIAkJCQkJICBYTG9nUmVjUHRyIGFib3J0X2xzbikKIHsKIAlSZW9yZGVyQnVmZmVyVFhO ICp0b3B0eG47CisJUEdPdXRwdXREYXRhICpkYXRhID0gKFBHT3V0cHV0RGF0YSAqKSBjdHgtPm91 dHB1dF9wbHVnaW5fcHJpdmF0ZTsKKwlib29sCQl3cml0ZV9hYm9ydF9pbmZvID0gKGRhdGEtPnN0 cmVhbWluZyA9PSBMT0dJQ0FMUkVQX1NUUkVBTV9QQVJBTExFTCk7CiAKIAkvKgogCSAqIFRoZSBh Ym9ydCBzaG91bGQgaGFwcGVuIG91dHNpZGUgc3RyZWFtaW5nIGJsb2NrLCBldmVuIGZvciBzdHJl YW1lZApAQCAtMTg1NCw3ICsxODY0LDkgQEAgcGdvdXRwdXRfc3RyZWFtX2Fib3J0KHN0cnVjdCBM b2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJQXNzZXJ0KHJidHhuX2lzX3N0cmVhbWVkKHRv cHR4bikpOwogCiAJT3V0cHV0UGx1Z2luUHJlcGFyZVdyaXRlKGN0eCwgdHJ1ZSk7Ci0JbG9naWNh bHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoY3R4LT5vdXQsIHRvcHR4bi0+eGlkLCB0eG4tPnhpZCk7 CisJbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoY3R4LT5vdXQsIHRvcHR4bi0+eGlkLCB0 eG4tPnhpZCwgYWJvcnRfbHNuLAorCQkJCQkJCQkgIHR4bi0+eGFjdF90aW1lLmFib3J0X3RpbWUs IHdyaXRlX2Fib3J0X2luZm8pOworCiAJT3V0cHV0UGx1Z2luV3JpdGUoY3R4LCB0cnVlKTsKIAog CWNsZWFudXBfcmVsX3N5bmNfY2FjaGUodG9wdHhuLT54aWQsIGZhbHNlKTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL3Byb2NzaWduYWwuYwppbmRleCA3NzY3NjU3Li43YzAwOWQ1IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKKysrIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvcHJvY3NpZ25hbC5jCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiY29tbWFu ZHMvYXN5bmMuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIK KyNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgiCiAjaW5jbHVkZSAicmVwbGlj YXRpb24vd2Fsc2VuZGVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9jb25kaXRpb25fdmFyaWFibGUu aCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgpAQCAtNjU3LDYgKzY1OCw5IEBAIHByb2NzaWdu YWxfc2lndXNyMV9oYW5kbGVyKFNJR05BTF9BUkdTKQogCWlmIChDaGVja1Byb2NTaWduYWwoUFJP Q1NJR19MT0dfTUVNT1JZX0NPTlRFWFQpKQogCQlIYW5kbGVMb2dNZW1vcnlDb250ZXh0SW50ZXJy dXB0KCk7CiAKKwlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfUEFSQUxMRUxfQVBQTFlfTUVT U0FHRSkpCisJCUhhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlSW50ZXJydXB0KCk7CisKIAlpZiAo Q2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfREFUQUJBU0UpKQogCQlS ZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfREFUQUJB U0UpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5jIGIvc3Jj L2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xtZ3IuYwppbmRleCAxMDQzMDY4Li4yZjE3MWY1IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5jCisrKyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvbG1nci9sbWdyLmMKQEAgLTExMTcsNiArMTExNyw0NSBAQCBVbmxvY2tTaGFyZWRP YmplY3RGb3JTZXNzaW9uKE9pZCBjbGFzc2lkLCBPaWQgb2JqaWQsIHVpbnQxNiBvYmpzdWJpZCwK IAlMb2NrUmVsZWFzZSgmdGFnLCBsb2NrbW9kZSwgdHJ1ZSk7CiB9CiAKKy8qCisgKgkJTG9ja0Fw cGx5VHJhbnNhY3Rpb25Gb3JTZXNzaW9uCisgKgorICogT2J0YWluIGEgc2Vzc2lvbi1sZXZlbCBs b2NrIG9uIGEgdHJhbnNhY3Rpb24gYmVpbmcgYXBwbGllZCBvbiBhIGxvZ2ljYWwKKyAqIHJlcGxp Y2F0aW9uIHN1YnNjcmliZXIuIFNlZSBMb2NrUmVsYXRpb25JZEZvclNlc3Npb24gZm9yIG5vdGVz IGFib3V0CisgKiBzZXNzaW9uLWxldmVsIGxvY2tzLgorICovCit2b2lkCitMb2NrQXBwbHlUcmFu c2FjdGlvbkZvclNlc3Npb24oT2lkIHN1Ym9pZCwgVHJhbnNhY3Rpb25JZCB4aWQsIHVpbnQxNiBv YmppZCwKKwkJCQkJCQkgICBMT0NLTU9ERSBsb2NrbW9kZSkKK3sKKwlMT0NLVEFHCQl0YWc7CisK KwlTRVRfTE9DS1RBR19BUFBMWV9UUkFOU0FDVElPTih0YWcsCisJCQkJCQkJCSAgTXlEYXRhYmFz ZUlkLAorCQkJCQkJCQkgIHN1Ym9pZCwKKwkJCQkJCQkJICB4aWQsCisJCQkJCQkJCSAgb2JqaWQp OworCisJKHZvaWQpIExvY2tBY3F1aXJlKCZ0YWcsIGxvY2ttb2RlLCB0cnVlLCBmYWxzZSk7Cit9 CisKKy8qCisgKgkJVW5sb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNlc3Npb24KKyAqLwordm9pZAor VW5sb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNlc3Npb24oT2lkIHN1Ym9pZCwgVHJhbnNhY3Rpb25J ZCB4aWQsIHVpbnQxNiBvYmppZCwKKwkJCQkJCQkJIExPQ0tNT0RFIGxvY2ttb2RlKQoreworCUxP Q0tUQUcJCXRhZzsKKworCVNFVF9MT0NLVEFHX0FQUExZX1RSQU5TQUNUSU9OKHRhZywKKwkJCQkJ CQkJICBNeURhdGFiYXNlSWQsCisJCQkJCQkJCSAgc3Vib2lkLAorCQkJCQkJCQkgIHhpZCwKKwkJ CQkJCQkJICBvYmppZCk7CisKKwlMb2NrUmVsZWFzZSgmdGFnLCBsb2NrbW9kZSwgdHJ1ZSk7Cit9 CiAKIC8qCiAgKiBBcHBlbmQgYSBkZXNjcmlwdGlvbiBvZiBhIGxvY2thYmxlIG9iamVjdCB0byBi dWYuCkBAIC0xMjAyLDYgKzEyNDEsMTMgQEAgRGVzY3JpYmVMb2NrVGFnKFN0cmluZ0luZm8gYnVm LCBjb25zdCBMT0NLVEFHICp0YWcpCiAJCQkJCQkJIHRhZy0+bG9ja3RhZ19maWVsZDMsCiAJCQkJ CQkJIHRhZy0+bG9ja3RhZ19maWVsZDQpOwogCQkJYnJlYWs7CisJCWNhc2UgTE9DS1RBR19BUFBM WV9UUkFOU0FDVElPTjoKKwkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLAorCQkJCQkJCSBfKCJyZW1v dGUgdHJhbnNhY3Rpb24gJXUgb2Ygc3Vic2NyaXB0aW9uICV1IG9mIGRhdGFiYXNlICV1IiksCisJ CQkJCQkJIHRhZy0+bG9ja3RhZ19maWVsZDMsCisJCQkJCQkJIHRhZy0+bG9ja3RhZ19maWVsZDIs CisJCQkJCQkJIHRhZy0+bG9ja3RhZ19maWVsZDEpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJ CQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwKIAkJCQkJCQkgXygidW5yZWNvZ25pemVkIGxvY2t0YWcg dHlwZSAlZCIpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3Jj L2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4IDMwODIwOTMuLmY1MmU1YmEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bv c3RncmVzLmMKQEAgLTMzNzksNiArMzM3OSw5IEBAIFByb2Nlc3NJbnRlcnJ1cHRzKHZvaWQpCiAK IAlpZiAoTG9nTWVtb3J5Q29udGV4dFBlbmRpbmcpCiAJCVByb2Nlc3NMb2dNZW1vcnlDb250ZXh0 SW50ZXJydXB0KCk7CisKKwlpZiAoUGFyYWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nKQorCQlIYW5k bGVQYXJhbGxlbEFwcGx5TWVzc2FnZXMoKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2 aXR5L3dhaXRfZXZlbnQuYwppbmRleCBiMmFiZDc1Li4xZmFiNDVlIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCkBAIC0yMzAsNiArMjMwLDkgQEAgcGdzdGF0X2dldF93 YWl0X2FjdGl2aXR5KFdhaXRFdmVudEFjdGl2aXR5IHcpCiAJCWNhc2UgV0FJVF9FVkVOVF9MT0dJ Q0FMX0xBVU5DSEVSX01BSU46CiAJCQlldmVudF9uYW1lID0gIkxvZ2ljYWxMYXVuY2hlck1haW4i OwogCQkJYnJlYWs7CisJCWNhc2UgV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX01B SU46CisJCQlldmVudF9uYW1lID0gIkxvZ2ljYWxQYXJhbGxlbEFwcGx5TWFpbiI7CisJCQlicmVh azsKIAkJY2FzZSBXQUlUX0VWRU5UX1JFQ09WRVJZX1dBTF9TVFJFQU06CiAJCQlldmVudF9uYW1l ID0gIlJlY292ZXJ5V2FsU3RyZWFtIjsKIAkJCWJyZWFrOwpAQCAtMzg4LDYgKzM5MSw5IEBAIHBn c3RhdF9nZXRfd2FpdF9pcGMoV2FpdEV2ZW50SVBDIHcpCiAJCWNhc2UgV0FJVF9FVkVOVF9IQVNI X0dST1dfQlVDS0VUU19SRUlOU0VSVDoKIAkJCWV2ZW50X25hbWUgPSAiSGFzaEdyb3dCdWNrZXRz UmVpbnNlcnQiOwogCQkJYnJlYWs7CisJCWNhc2UgV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVM X0FQUExZX1NUQVRFX0NIQU5HRToKKwkJCWV2ZW50X25hbWUgPSAiTG9naWNhbFBhcmFsbGVsQXBw bHlTdGF0ZUNoYW5nZSI7CisJCQlicmVhazsKIAkJY2FzZSBXQUlUX0VWRU5UX0xPR0lDQUxfU1lO Q19EQVRBOgogCQkJZXZlbnRfbmFtZSA9ICJMb2dpY2FsU3luY0RhdGEiOwogCQkJYnJlYWs7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbG9ja2Z1bmNzLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvbG9ja2Z1bmNzLmMKaW5kZXggZjliMzI0ZS4uM2JmMDQ4MyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2xvY2tmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9sb2NrZnVuY3MuYwpAQCAtMzcsMTAgKzM3LDExIEBAIGNvbnN0IGNoYXIgKmNvbnN0 IExvY2tUYWdUeXBlTmFtZXNbXSA9IHsKIAkic3BlY3Rva2VuIiwKIAkib2JqZWN0IiwKIAkidXNl cmxvY2siLAotCSJhZHZpc29yeSIKKwkiYWR2aXNvcnkiLAorCSJhcHBseXRyYW5zYWN0aW9uIgog fTsKIAotU3RhdGljQXNzZXJ0RGVjbChsZW5ndGhvZihMb2NrVGFnVHlwZU5hbWVzKSA9PSAoTE9D S1RBR19BRFZJU09SWSArIDEpLAorU3RhdGljQXNzZXJ0RGVjbChsZW5ndGhvZihMb2NrVGFnVHlw ZU5hbWVzKSA9PSAoTE9DS1RBR19MQVNUX1RZUEUgKyAxKSwKIAkJCQkgImFycmF5IGxlbmd0aCBt aXNtYXRjaCIpOwogCiAvKiBUaGlzIG11c3QgbWF0Y2ggZW51bSBQcmVkaWNhdGVMb2NrVGFyZ2V0 VHlwZSAocHJlZGljYXRlX2ludGVybmFscy5oKSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJs ZXMuYwppbmRleCAxYmYxNGVlLi45MWYwNDc5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9taXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJs ZXMuYwpAQCAtMjk4Miw2ICsyOTgyLDE4IEBAIHN0cnVjdCBjb25maWdfaW50IENvbmZpZ3VyZU5h bWVzSW50W10gPQogCX0sCiAKIAl7CisJCXsibWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVy X3N1YnNjcmlwdGlvbiIsCisJCQlQR0NfU0lHSFVQLAorCQkJUkVQTElDQVRJT05fU1VCU0NSSUJF UlMsCisJCQlnZXR0ZXh0X25vb3AoIk1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVsIGFwcGx5IHdv cmtlcnMgcGVyIHN1YnNjcmlwdGlvbi4iKSwKKwkJCU5VTEwsCisJCX0sCisJCSZtYXhfcGFyYWxs ZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uLAorCQkyLCAwLCBNQVhfUEFSQUxMRUxf V09SS0VSX0xJTUlULAorCQlOVUxMLCBOVUxMLCBOVUxMCisJfSwKKworCXsKIAkJeyJsb2dfcm90 YXRpb25fYWdlIiwgUEdDX1NJR0hVUCwgTE9HR0lOR19XSEVSRSwKIAkJCWdldHRleHRfbm9vcCgi U2V0cyB0aGUgYW1vdW50IG9mIHRpbWUgdG8gd2FpdCBiZWZvcmUgZm9yY2luZyAiCiAJCQkJCQkg ImxvZyBmaWxlIHJvdGF0aW9uLiIpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlz Yy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jl c3FsLmNvbmYuc2FtcGxlCmluZGV4IDA0Mzg2NDUuLjIyYjAyZTYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFja2Vu ZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKQEAgLTM1OSw2ICszNTksNyBAQAog I21heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMgPSA0CSMgdGFrZW4gZnJvbSBtYXhfd29y a2VyX3Byb2Nlc3NlcwogCQkJCQkjIChjaGFuZ2UgcmVxdWlyZXMgcmVzdGFydCkKICNtYXhfc3lu Y193b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gPSAyCSMgdGFrZW4gZnJvbSBtYXhfbG9naWNhbF9y ZXBsaWNhdGlvbl93b3JrZXJzCisjbWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNj cmlwdGlvbiA9IDIJIyB0YWtlbiBmcm9tIG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMK IAogCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAv cGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCBhZDY2OTNjLi5mZWM2 ZDIxIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4v cGdfZHVtcC9wZ19kdW1wLmMKQEAgLTQ1MTYsNyArNDUxNiw3IEBAIGdldFN1YnNjcmlwdGlvbnMo QXJjaGl2ZSAqZm91dCkKIAlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNDAwMDApCiAJCWFw cGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIHMuc3Vic3RyZWFtLFxuIik7CiAJZWxzZQotCQlh cHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBmYWxzZSBBUyBzdWJzdHJlYW0sXG4iKTsKKwkJ YXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgJ2YnIEFTIHN1YnN0cmVhbSxcbiIpOwogCiAJ aWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTUwMDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0 cihxdWVyeSwKQEAgLTQ2NTMsOCArNDY1MywxMCBAQCBkdW1wU3Vic2NyaXB0aW9uKEFyY2hpdmUg KmZvdXQsIGNvbnN0IFN1YnNjcmlwdGlvbkluZm8gKnN1YmluZm8pCiAJaWYgKHN0cmNtcChzdWJp bmZvLT5zdWJiaW5hcnksICJ0IikgPT0gMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnks ICIsIGJpbmFyeSA9IHRydWUiKTsKIAotCWlmIChzdHJjbXAoc3ViaW5mby0+c3Vic3RyZWFtLCAi ZiIpICE9IDApCisJaWYgKHN0cmNtcChzdWJpbmZvLT5zdWJzdHJlYW0sICJ0IikgPT0gMCkKIAkJ YXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIsIHN0cmVhbWluZyA9IG9uIik7CisJZWxzZSBp ZiAoc3RyY21wKHN1YmluZm8tPnN1YnN0cmVhbSwgInAiKSA9PSAwKQorCQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cihxdWVyeSwgIiwgc3RyZWFtaW5nID0gcGFyYWxsZWwiKTsKIAogCWlmIChzdHJjbXAo c3ViaW5mby0+c3VidHdvcGhhc2VzdGF0ZSwgdHdvX3BoYXNlX2Rpc2FibGVkKSAhPSAwKQogCQlh cHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgdHdvX3BoYXNlID0gb24iKTsKZGlmZiAtLWdp dCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKaW5k ZXggMmVhZTUxOS4uNzQwYjEzNSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMK KysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAgLTY0OTksMTEgKzY0OTksMjQgQEAgZGVz Y3JpYmVTdWJzY3JpcHRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSkKIAl7 CiAJCS8qIEJpbmFyeSBtb2RlIGFuZCBzdHJlYW1pbmcgYXJlIG9ubHkgc3VwcG9ydGVkIGluIHYx NCBhbmQgaGlnaGVyICovCiAJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE0MDAwMCkKKwkJewogCQkJ YXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKLQkJCQkJCQkgICIsIHN1YmJpbmFyeSBBUyBcIiVzXCJc biIKLQkJCQkJCQkgICIsIHN1YnN0cmVhbSBBUyBcIiVzXCJcbiIsCi0JCQkJCQkJICBnZXR0ZXh0 X25vb3AoIkJpbmFyeSIpLAotCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJTdHJlYW1pbmciKSk7CisJ CQkJCQkJICAiLCBzdWJiaW5hcnkgQVMgXCIlc1wiXG4iLAorCQkJCQkJCSAgZ2V0dGV4dF9ub29w KCJCaW5hcnkiKSk7CisKKwkJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE2MDAwMCkKKwkJCQlhcHBl bmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJCQkgICIsIChDQVNFIHN1YnN0cmVhbVxuIgorCQkJ CQkJCQkgICIgICAgV0hFTiAnZicgVEhFTiAnb2ZmJ1xuIgorCQkJCQkJCQkgICIgICAgV0hFTiAn dCcgVEhFTiAnb24nXG4iCisJCQkJCQkJCSAgIiAgICBXSEVOICdwJyBUSEVOICdwYXJhbGxlbCdc biIKKwkJCQkJCQkJICAiICAgRU5EKSBBUyBcIiVzXCJcbiIsCisJCQkJCQkJCSAgZ2V0dGV4dF9u b29wKCJTdHJlYW1pbmciKSk7CisJCQllbHNlCisJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwK KwkJCQkJCQkJICAiLCBzdWJzdHJlYW0gQVMgXCIlc1wiXG4iLAorCQkJCQkJCQkgIGdldHRleHRf bm9vcCgiU3RyZWFtaW5nIikpOworCQl9CiAKIAkJLyogVHdvX3BoYXNlIGFuZCBkaXNhYmxlX29u X2Vycm9yIGFyZSBvbmx5IHN1cHBvcnRlZCBpbiB2MTUgYW5kIGhpZ2hlciAqLwogCQlpZiAocHNl dC5zdmVyc2lvbiA+PSAxNTAwMDApCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3N1YnNjcmlwdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaApp bmRleCA3Yjk4NzE0Li41YjllNWEzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3N1YnNjcmlwdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9u LmgKQEAgLTgwLDcgKzgwLDggQEAgQ0FUQUxPRyhwZ19zdWJzY3JpcHRpb24sNjEwMCxTdWJzY3Jp cHRpb25SZWxhdGlvbklkKSBCS0lfU0hBUkVEX1JFTEFUSU9OIEJLSV9ST1cKIAlib29sCQlzdWJi aW5hcnk7CQkvKiBUcnVlIGlmIHRoZSBzdWJzY3JpcHRpb24gd2FudHMgdGhlCiAJCQkJCQkJCSAq IHB1Ymxpc2hlciB0byBzZW5kIGRhdGEgaW4gYmluYXJ5ICovCiAKLQlib29sCQlzdWJzdHJlYW07 CQkvKiBTdHJlYW0gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLiAqLworCWNoYXIJCXN1YnN0cmVh bTsJCS8qIFN0cmVhbSBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuIFNlZQorCQkJCQkJCQkgKiBT VUJTVFJFQU1feHh4IGNvbnN0YW50cy4gKi8KIAogCWNoYXIJCXN1YnR3b3BoYXNlc3RhdGU7CS8q IFN0cmVhbSB0d28tcGhhc2UgdHJhbnNhY3Rpb25zICovCiAKQEAgLTEyNCw3ICsxMjUsOCBAQCB0 eXBlZGVmIHN0cnVjdCBTdWJzY3JpcHRpb24KIAlib29sCQllbmFibGVkOwkJLyogSW5kaWNhdGVz IGlmIHRoZSBzdWJzY3JpcHRpb24gaXMgZW5hYmxlZCAqLwogCWJvb2wJCWJpbmFyeTsJCQkvKiBJ bmRpY2F0ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiB3YW50cyBkYXRhIGluCiAJCQkJCQkJCSAqIGJp bmFyeSBmb3JtYXQgKi8KLQlib29sCQlzdHJlYW07CQkJLyogQWxsb3cgc3RyZWFtaW5nIGluLXBy b2dyZXNzIHRyYW5zYWN0aW9ucy4gKi8KKwljaGFyCQlzdHJlYW07CQkJLyogQWxsb3cgc3RyZWFt aW5nIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4KKwkJCQkJCQkJICogU2VlIFNVQlNUUkVBTV94 eHggY29uc3RhbnRzLiAqLwogCWNoYXIJCXR3b3BoYXNlc3RhdGU7CS8qIEFsbG93IHN0cmVhbWlu ZyB0d28tcGhhc2UgdHJhbnNhY3Rpb25zICovCiAJYm9vbAkJZGlzYWJsZW9uZXJyOwkvKiBJbmRp Y2F0ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiBzaG91bGQgYmUKIAkJCQkJCQkJICogYXV0b21hdGlj YWxseSBkaXNhYmxlZCBpZiBhIHdvcmtlciBlcnJvcgpAQCAtMTM3LDYgKzEzOSwyMSBAQCB0eXBl ZGVmIHN0cnVjdCBTdWJzY3JpcHRpb24KIAkJCQkJCQkJICogc3BlY2lmaWVkIG9yaWdpbiAqLwog fSBTdWJzY3JpcHRpb247CiAKKy8qIERpc2FsbG93IHN0cmVhbWluZyBpbi1wcm9ncmVzcyB0cmFu c2FjdGlvbnMuICovCisjZGVmaW5lIExPR0lDQUxSRVBfU1RSRUFNX09GRiAnZicKKworLyoKKyAq IFN0cmVhbWluZyBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMgYXJlIHdyaXR0ZW4gdG8gYSB0ZW1w b3JhcnkgZmlsZSBhbmQKKyAqIGFwcGxpZWQgb25seSBhZnRlciB0aGUgdHJhbnNhY3Rpb24gaXMg Y29tbWl0dGVkIG9uIHVwc3RyZWFtLgorICovCisjZGVmaW5lIExPR0lDQUxSRVBfU1RSRUFNX09O ICd0JworCisvKgorICogU3RyZWFtaW5nIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyBhcmUgYXBw bGllZCBpbW1lZGlhdGVseSB2aWEgYSBwYXJhbGxlbAorICogYXBwbHkgd29ya2VyLgorICovCisj ZGVmaW5lIExPR0lDQUxSRVBfU1RSRUFNX1BBUkFMTEVMICdwJworCiBleHRlcm4gU3Vic2NyaXB0 aW9uICpHZXRTdWJzY3JpcHRpb24oT2lkIHN1YmlkLCBib29sIG1pc3Npbmdfb2spOwogZXh0ZXJu IHZvaWQgRnJlZVN1YnNjcmlwdGlvbihTdWJzY3JpcHRpb24gKnN1Yik7CiBleHRlcm4gdm9pZCBE aXNhYmxlU3Vic2NyaXB0aW9uKE9pZCBzdWJpZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9j b21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9zdWJzY3Jp cHRpb25jbWRzLmgKaW5kZXggMmNiZTdkNy4uNzc5NDc0ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRz L3N1YnNjcmlwdGlvbmNtZHMuaApAQCAtMjYsNCArMjYsNiBAQCBleHRlcm4gdm9pZCBEcm9wU3Vi c2NyaXB0aW9uKERyb3BTdWJzY3JpcHRpb25TdG10ICpzdG10LCBib29sIGlzVG9wTGV2ZWwpOwog ZXh0ZXJuIE9iamVjdEFkZHJlc3MgQWx0ZXJTdWJzY3JpcHRpb25Pd25lcihjb25zdCBjaGFyICpu YW1lLCBPaWQgbmV3T3duZXJJZCk7CiBleHRlcm4gdm9pZCBBbHRlclN1YnNjcmlwdGlvbk93bmVy X29pZChPaWQgc3ViaWQsIE9pZCBuZXdPd25lcklkKTsKIAorZXh0ZXJuIGNoYXIgZGVmR2V0U3Ry ZWFtaW5nTW9kZShEZWZFbGVtICpkZWYpOworCiAjZW5kaWYJCQkJCQkJLyogU1VCU0NSSVBUSU9O Q01EU19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1 bmNoZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oCmluZGV4 IGYxZTI4MjEuLmQ1MTNlZjUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xv Z2ljYWxsYXVuY2hlci5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVu Y2hlci5oCkBAIC0xNCw2ICsxNCw3IEBACiAKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X2xv Z2ljYWxfcmVwbGljYXRpb25fd29ya2VyczsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X3N5 bmNfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uOworZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYXhf cGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uOwogCiBleHRlcm4gdm9pZCBB cHBseUxhdW5jaGVyUmVnaXN0ZXIodm9pZCk7CiBleHRlcm4gdm9pZCBBcHBseUxhdW5jaGVyTWFp bihEYXR1bSBtYWluX2FyZyk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9s b2dpY2FscHJvdG8uaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oCmlu ZGV4IDFlYjdkZGEuLjRmYTJiZDMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L2xvZ2ljYWxwcm90by5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90 by5oCkBAIC0zMiwxMiArMzIsMTcgQEAKICAqCiAgKiBMT0dJQ0FMUkVQX1BST1RPX1RXT1BIQVNF X1ZFUlNJT05fTlVNIGlzIHRoZSBtaW5pbXVtIHByb3RvY29sIHZlcnNpb24gd2l0aAogICogc3Vw cG9ydCBmb3IgdHdvLXBoYXNlIGNvbW1pdCBkZWNvZGluZyAoYXQgcHJlcGFyZSB0aW1lKS4gSW50 cm9kdWNlZCBpbiBQRzE1LgorICoKKyAqIExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVM X1ZFUlNJT05fTlVNIGlzIHRoZSBtaW5pbXVtIHByb3RvY29sIHZlcnNpb24KKyAqIHdoZXJlIHdl IHN1cHBvcnQgYXBwbHlpbmcgbGFyZ2Ugc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyBpbiBwYXJhbGxl bC4KKyAqIEludHJvZHVjZWQgaW4gUEcxNi4KICAqLwogI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RP X01JTl9WRVJTSU9OX05VTSAxCiAjZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fVkVSU0lPTl9OVU0g MQogI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9WRVJTSU9OX05VTSAyCiAjZGVmaW5l IExPR0lDQUxSRVBfUFJPVE9fVFdPUEhBU0VfVkVSU0lPTl9OVU0gMwotI2RlZmluZSBMT0dJQ0FM UkVQX1BST1RPX01BWF9WRVJTSU9OX05VTSBMT0dJQ0FMUkVQX1BST1RPX1RXT1BIQVNFX1ZFUlNJ T05fTlVNCisjZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05f TlVNIDQKKyNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19NQVhfVkVSU0lPTl9OVU0gTE9HSUNBTFJF UF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0KIAogLyoKICAqIExvZ2ljYWwgbWVz c2FnZSB0eXBlcwpAQCAtMTc1LDYgKzE4MCwxNyBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVw Um9sbGJhY2tQcmVwYXJlZFR4bkRhdGEKIAljaGFyCQlnaWRbR0lEU0laRV07CiB9IExvZ2ljYWxS ZXBSb2xsYmFja1ByZXBhcmVkVHhuRGF0YTsKIAorLyoKKyAqIFRyYW5zYWN0aW9uIHByb3RvY29s IGluZm9ybWF0aW9uIGZvciBzdHJlYW0gYWJvcnQuCisgKi8KK3R5cGVkZWYgc3RydWN0IExvZ2lj YWxSZXBTdHJlYW1BYm9ydERhdGEKK3sKKwlUcmFuc2FjdGlvbklkIHhpZDsKKwlUcmFuc2FjdGlv bklkIHN1YnhpZDsKKwlYTG9nUmVjUHRyCWFib3J0X2xzbjsKKwlUaW1lc3RhbXBUeiBhYm9ydF90 aW1lOworfSBMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhOworCiBleHRlcm4gdm9pZCBsb2dpY2Fs cmVwX3dyaXRlX2JlZ2luKFN0cmluZ0luZm8gb3V0LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4pOwog ZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF9yZWFkX2JlZ2luKFN0cmluZ0luZm8gaW4sCiAJCQkJCQkJ CSAgTG9naWNhbFJlcEJlZ2luRGF0YSAqYmVnaW5fZGF0YSk7CkBAIC0yNDYsOSArMjYyLDEzIEBA IGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIG91 dCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuCiBleHRlcm4gVHJhbnNhY3Rpb25JZCBsb2dpY2FscmVw X3JlYWRfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIGluLAogCQkJCQkJCQkJCQkJICAgTG9naWNh bFJlcENvbW1pdERhdGEgKmNvbW1pdF9kYXRhKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd3Jp dGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gb3V0LCBUcmFuc2FjdGlvbklkIHhpZCwKLQkJCQkJ CQkJCQkgIFRyYW5zYWN0aW9uSWQgc3VieGlkKTsKLWV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfcmVh ZF9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBpbiwgVHJhbnNhY3Rpb25JZCAqeGlkLAotCQkJCQkJ CQkJCSBUcmFuc2FjdGlvbklkICpzdWJ4aWQpOworCQkJCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBz dWJ4aWQsCisJCQkJCQkJCQkJICBYTG9nUmVjUHRyIGFib3J0X2xzbiwKKwkJCQkJCQkJCQkgIFRp bWVzdGFtcFR6IGFib3J0X3RpbWUsCisJCQkJCQkJCQkJICBib29sIHdyaXRlX2Fib3J0X2luZm8p OworZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIGlu LAorCQkJCQkJCQkJCSBMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhICphYm9ydF9kYXRhLAorCQkJ CQkJCQkJCSBib29sIHJlYWRfYWJvcnRfaW5mbyk7CiBleHRlcm4gY2hhciAqbG9naWNhbHJlcF9t ZXNzYWdlX3R5cGUoTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9uKTsKIAogI2VuZGlmCQkJCQkJCS8q IExPR0lDQUxfUFJPVE9fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v bG9naWNhbHdvcmtlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5o CmluZGV4IGNkMWI2ZTguLmRjNjhjZDggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL2xvZ2ljYWx3b3JrZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fs d29ya2VyLmgKQEAgLTEyLDggKzEyLDE2IEBACiAjaWZuZGVmIExPR0lDQUxXT1JLRVJfSAogI2Rl ZmluZSBMT0dJQ0FMV09SS0VSX0gKIAorI2luY2x1ZGUgPHNpZ25hbC5oPgorCitleHRlcm4gUEdE TExJTVBPUlQgdm9sYXRpbGUgc2lnX2F0b21pY190IFBhcmFsbGVsQXBwbHlNZXNzYWdlUGVuZGlu ZzsKKwogZXh0ZXJuIHZvaWQgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKTsKK2V4dGVy biB2b2lkIFBhcmFsbGVsQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKTsKIAogZXh0ZXJu IGJvb2wgSXNMb2dpY2FsV29ya2VyKHZvaWQpOworZXh0ZXJuIGJvb2wgSXNMb2dpY2FsUGFyYWxs ZWxBcHBseVdvcmtlcih2b2lkKTsKK2V4dGVybiB2b2lkIEhhbmRsZVBhcmFsbGVsQXBwbHlNZXNz YWdlSW50ZXJydXB0KHZvaWQpOworZXh0ZXJuIHZvaWQgSGFuZGxlUGFyYWxsZWxBcHBseU1lc3Nh Z2VzKHZvaWQpOwogCiAjZW5kaWYJCQkJCQkJLyogTE9HSUNBTFdPUktFUl9IICovCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vcmlnaW4uaCBiL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL29yaWdpbi5oCmluZGV4IDJhNTBkMTAuLmM3YjFhZGYgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL29yaWdpbi5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L29yaWdpbi5oCkBAIC01Myw3ICs1Myw3IEBAIGV4dGVybiBYTG9nUmVjUHRyIHJlcGxvcmlnaW5f Z2V0X3Byb2dyZXNzKFJlcE9yaWdpbklkIG5vZGUsIGJvb2wgZmx1c2gpOwogCiBleHRlcm4gdm9p ZCByZXBsb3JpZ2luX3Nlc3Npb25fYWR2YW5jZShYTG9nUmVjUHRyIHJlbW90ZV9jb21taXQsCiAJ CQkJCQkJCQkgICBYTG9nUmVjUHRyIGxvY2FsX2NvbW1pdCk7Ci1leHRlcm4gdm9pZCByZXBsb3Jp Z2luX3Nlc3Npb25fc2V0dXAoUmVwT3JpZ2luSWQgbm9kZSk7CitleHRlcm4gdm9pZCByZXBsb3Jp Z2luX3Nlc3Npb25fc2V0dXAoUmVwT3JpZ2luSWQgbm9kZSwgaW50IGFjcXVpcmVkX2J5KTsKIGV4 dGVybiB2b2lkIHJlcGxvcmlnaW5fc2Vzc2lvbl9yZXNldCh2b2lkKTsKIGV4dGVybiBYTG9nUmVj UHRyIHJlcGxvcmlnaW5fc2Vzc2lvbl9nZXRfcHJvZ3Jlc3MoYm9vbCBmbHVzaCk7CiAKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmggYi9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9wZ291dHB1dC5oCmluZGV4IDAyMDI3NTUuLjNjMzBkYTggMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmgKKysrIGIvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vcGdvdXRwdXQuaApAQCAtMjYsNyArMjYsNyBAQCB0eXBlZGVmIHN0cnVjdCBQR091 dHB1dERhdGEKIAlMaXN0CSAgICpwdWJsaWNhdGlvbl9uYW1lczsKIAlMaXN0CSAgICpwdWJsaWNh dGlvbnM7CiAJYm9vbAkJYmluYXJ5OwotCWJvb2wJCXN0cmVhbWluZzsKKwljaGFyCQlzdHJlYW1p bmc7CiAJYm9vbAkJbWVzc2FnZXM7CiAJYm9vbAkJdHdvX3BoYXNlOwogCWNoYXIJICAgKm9yaWdp bjsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaCBi L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaAppbmRleCBjNzAwYjU1Li5m MGViNmM0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVy LmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oCkBAIC0zMDgs NiArMzA4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVvcmRlckJ1ZmZlclRYTgogCXsKIAkJVGltZXN0 YW1wVHogY29tbWl0X3RpbWU7CiAJCVRpbWVzdGFtcFR6IHByZXBhcmVfdGltZTsKKwkJVGltZXN0 YW1wVHogYWJvcnRfdGltZTsKIAl9CQkJeGFjdF90aW1lOwogCiAJLyoKQEAgLTY3MCw3ICs2NzEs OCBAQCBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQXNzaWduQ2hpbGQoUmVvcmRlckJ1ZmZlciAq cmIsIFRyYW5zYWN0aW9uSWQgeGlkLAogZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckNvbW1pdENo aWxkKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwKIAkJCQkJCQkJCSBUcmFu c2FjdGlvbklkIHN1YnhpZCwgWExvZ1JlY1B0ciBjb21taXRfbHNuLAogCQkJCQkJCQkJIFhMb2dS ZWNQdHIgZW5kX2xzbik7Ci1leHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1 ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbik7CitleHRlcm4gdm9p ZCBSZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlk LCBYTG9nUmVjUHRyIGxzbiwKKwkJCQkJCQkgICBUaW1lc3RhbXBUeiBhYm9ydF90aW1lKTsKIGV4 dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJBYm9ydE9sZChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNh Y3Rpb25JZCBvbGRlc3RSdW5uaW5nWGlkKTsKIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJGb3Jn ZXQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbik7 CiBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVySW52YWxpZGF0ZShSZW9yZGVyQnVmZmVyICpyYiwg VHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93 YWxyZWNlaXZlci5oCmluZGV4IDkzMzlmMjkuLjBjOGJiZGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vd2FscmVjZWl2ZXIuaApAQCAtMTgyLDcgKzE4Miw3IEBAIHR5cGVkZWYgc3RydWN0CiAJCQl1 aW50MzIJCXByb3RvX3ZlcnNpb247CS8qIExvZ2ljYWwgcHJvdG9jb2wgdmVyc2lvbiAqLwogCQkJ TGlzdAkgICAqcHVibGljYXRpb25fbmFtZXM7CS8qIFN0cmluZyBsaXN0IG9mIHB1YmxpY2F0aW9u cyAqLwogCQkJYm9vbAkJYmluYXJ5OyAvKiBBc2sgcHVibGlzaGVyIHRvIHVzZSBiaW5hcnkgKi8K LQkJCWJvb2wJCXN0cmVhbWluZzsJLyogU3RyZWFtaW5nIG9mIGxhcmdlIHRyYW5zYWN0aW9ucyAq LworCQkJY2hhcgkgICAqc3RyZWFtaW5nX3N0cjsJLyogU3RyZWFtaW5nIG9mIGxhcmdlIHRyYW5z YWN0aW9ucyAqLwogCQkJYm9vbAkJdHdvcGhhc2U7CS8qIFN0cmVhbWluZyBvZiB0d28tcGhhc2Ug dHJhbnNhY3Rpb25zIGF0CiAJCQkJCQkJCQkgKiBwcmVwYXJlIHRpbWUgKi8KIAkJCWNoYXIJICAg Km9yaWdpbjsgLyogT25seSBwdWJsaXNoIGRhdGEgb3JpZ2luYXRpbmcgZnJvbSB0aGUKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIGIvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKaW5kZXggMmI3MTE0Zi4uNTZjNWNj OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgK KysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKQEAgLTE3LDgg KzE3LDEyIEBACiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dkZWZzLmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ19zdWJzY3JpcHRpb24uaCIKICNpbmNsdWRlICJkYXRhdHlwZS90aW1lc3RhbXAuaCIKKyNp bmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRp b24uaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZpbGVzZXQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xv Y2suaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NobV9tcS5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc2ht X3RvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3Bpbi5oIgogCiAKQEAgLTYwLDYgKzY0LDE1IEBA IHR5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBXb3JrZXIKIAkgKi8KIAlGaWxlU2V0ICAgICpzdHJl YW1fZmlsZXNldDsKIAorCS8qCisJICogUElEIG9mIGxlYWRlciBhcHBseSB3b3JrZXIgaWYgdGhp cyBzbG90IGlzIHVzZWQgZm9yIGEgcGFyYWxsZWwgYXBwbHkKKwkgKiB3b3JrZXIsIEludmFsaWRQ aWQgb3RoZXJ3aXNlLgorCSAqLworCXBpZF90CQlhcHBseV9sZWFkZXJfcGlkOworCisJLyogSW5k aWNhdGVzIHdoZXRoZXIgYXBwbHkgY2FuIGJlIHBlcmZvcm1lZCBpbiBwYXJhbGxlbC4gKi8KKwli b29sCQlwYXJhbGxlbF9hcHBseTsKKwogCS8qIFN0YXRzLiAqLwogCVhMb2dSZWNQdHIJbGFzdF9s c247CiAJVGltZXN0YW1wVHogbGFzdF9zZW5kX3RpbWU7CkBAIC02OCw5ICs4MSw5NSBAQCB0eXBl ZGVmIHN0cnVjdCBMb2dpY2FsUmVwV29ya2VyCiAJVGltZXN0YW1wVHogcmVwbHlfdGltZTsKIH0g TG9naWNhbFJlcFdvcmtlcjsKIAorLyoKKyAqIFN0YXRlIG9mIHRoZSB0cmFuc2FjdGlvbiBpbiBw YXJhbGxlbCBhcHBseSB3b3JrZXIuCisgKgorICogVGhlIGVudW0gdmFsdWVzIG11c3QgaGF2ZSB0 aGUgc2FtZSBvcmRlciBhcyB0aGUgdHJhbnNhY3Rpb24gc3RhdGUKKyAqIHRyYW5zaXRpb25zLgor ICovCit0eXBlZGVmIGVudW0gUGFyYWxsZWxUcmFuc1N0YXRlCit7CisJUEFSQUxMRUxfVFJBTlNf VU5LTk9XTiwKKwlQQVJBTExFTF9UUkFOU19TVEFSVEVELAorCVBBUkFMTEVMX1RSQU5TX0ZJTklT SEVECit9IFBhcmFsbGVsVHJhbnNTdGF0ZTsKKworLyoKKyAqIFN0cnVjdCBmb3Igc2hhcmluZyBp bmZvcm1hdGlvbiBiZXR3ZWVuIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIHBhcmFsbGVsCisgKiBh cHBseSB3b3JrZXJzLgorICovCit0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbEFwcGx5V29ya2VyU2hh cmVkCit7CisJc2xvY2tfdAkJbXV0ZXg7CisKKwlUcmFuc2FjdGlvbklkIHhpZDsKKworCS8qCisJ ICogU3RhdGUgdXNlZCB0byBlbnN1cmUgY29tbWl0IG9yZGVyaW5nLgorCSAqCisJICogVGhlIHBh cmFsbGVsIGFwcGx5IHdvcmtlciB3aWxsIHNldCBpdCB0byBQQVJBTExFTF9UUkFOU19GSU5JU0hF RCBhZnRlcgorCSAqIGhhbmRsaW5nIHRoZSB0cmFuc2FjdGlvbiBmaW5pc2ggY29tbWFuZHMgd2hp bGUgdGhlIGFwcGx5IGxlYWRlciB3aWxsCisJICogd2FpdCBmb3IgaXQgdG8gYmVjb21lIFBBUkFM TEVMX1RSQU5TX0ZJTklTSEVEIGJlZm9yZSBwcm9jZWVkaW5nIGluCisJICogdHJhbnNhY3Rpb24g ZmluaXNoIGNvbW1hbmRzIChlLmcuIFNUUkVBTV9DT01NSVQvU1RSRUFNX1BSRVBBUkUpLgorCSAq LworCVBhcmFsbGVsVHJhbnNTdGF0ZSB4YWN0X3N0YXRlOworCisJLyogSW5mb3JtYXRpb24gZnJv bSB0aGUgY29ycmVzcG9uZGluZyBMb2dpY2FsUmVwV29ya2VyIHNsb3QuICovCisJdWludDE2CQls b2dpY2FscmVwX3dvcmtlcl9nZW5lcmF0aW9uOworCWludAkJCWxvZ2ljYWxyZXBfd29ya2VyX3Ns b3Rfbm87CisKKwkvKgorCSAqIEluZGljYXRlcyB3aGV0aGVyIHRoZXJlIGFyZSBwZW5kaW5nIHN0 cmVhbWluZyBibG9ja3MgaW4gdGhlIHF1ZXVlLiBUaGUKKwkgKiBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgd2lsbCBjaGVjayBpdCBiZWZvcmUgc3RhcnRpbmcgdG8gd2FpdC4KKwkgKi8KKwlpbnQJCXBl bmRpbmdfc3RyZWFtX2NvdW50OworCisJLyoKKwkgKiBUcnVlIGlmIHRoZSBwYXJhbGxlbCBhcHBs eSB3b3JrZXIgaXMgZ29pbmcgdG8gdGFrZSBvciBpcyB0YWtpbmcgdGhlCisJICogc3RyZWFtIGxv Y2ssIGZhbHNlIG90aGVyd2lzZS4KKwkgKi8KKwlib29sCXBhX3dhaXRfZm9yX3N0cmVhbTsKKwor CS8qCisJICogWGFjdExhc3RDb21taXRFbmQgZnJvbSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vy LiBUaGlzIGlzIHJlcXVpcmVkIHRvCisJICogdXBkYXRlIHRoZSBsc25fbWFwcGluZ3MgYnkgbGVh ZGVyIHdvcmtlci4KKwkgKi8KKwlYTG9nUmVjUHRyCWxhc3RfY29tbWl0X2VuZDsKK30gUGFyYWxs ZWxBcHBseVdvcmtlclNoYXJlZDsKKworLyoKKyAqIEluZm9ybWF0aW9uIHdoaWNoIGlzIHVzZWQg dG8gbWFuYWdlIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisgKi8KK3R5cGVkZWYgc3RydWN0 IFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvCit7CisJc2htX21xX2hhbmRsZSAqbXFfaGFuZGxlOwor CisJLyoKKwkgKiBUaGUgcXVldWUgdXNlZCB0byB0cmFuc2ZlciBlcnJvciBtZXNzYWdlcyBmcm9t IHRoZSBwYXJhbGxlbCBhcHBseQorCSAqIHdvcmtlciB0byB0aGUgbGVhZGVyIGFwcGx5IHdvcmtl ci4KKwkgKi8KKwlzaG1fbXFfaGFuZGxlICplcnJvcl9tcV9oYW5kbGU7CisKKwlkc21fc2VnbWVu dCAqZHNtX3NlZzsKKworCS8qCisJICogVHJ1ZSBpZiB0aGUgd29ya2VyIGlzIGJlaW5nIHVzZWQg dG8gcHJvY2VzcyBhIHBhcmFsbGVsIGFwcGx5CisJICogdHJhbnNhY3Rpb24uIEZhbHNlIGluZGlj YXRlcyB0aGlzIHdvcmtlciBpcyBhdmFpbGFibGUgZm9yIHJlLXVzZS4KKwkgKi8KKwlib29sCQlp bl91c2U7CisKKwlQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICpzaGFyZWQ7Cit9IFBhcmFsbGVs QXBwbHlXb3JrZXJJbmZvOworCiAvKiBNYWluIG1lbW9yeSBjb250ZXh0IGZvciBhcHBseSB3b3Jr ZXIuIFBlcm1hbmVudCBkdXJpbmcgd29ya2VyIGxpZmV0aW1lLiAqLwogZXh0ZXJuIFBHRExMSU1Q T1JUIE1lbW9yeUNvbnRleHQgQXBwbHlDb250ZXh0OwogCitleHRlcm4gUEdETExJTVBPUlQgTWVt b3J5Q29udGV4dCBBcHBseU1lc3NhZ2VDb250ZXh0OworCitleHRlcm4gUEdETExJTVBPUlQgRXJy b3JDb250ZXh0Q2FsbGJhY2sgKmFwcGx5X2Vycm9yX2NvbnRleHRfc3RhY2s7CisKK2V4dGVybiBQ R0RMTElNUE9SVCBQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICpNeVBhcmFsbGVsU2hhcmVkOwor CiAvKiBsaWJwcXJlY2VpdmVyIGNvbm5lY3Rpb24gKi8KIGV4dGVybiBQR0RMTElNUE9SVCBzdHJ1 Y3QgV2FsUmVjZWl2ZXJDb25uICpMb2dSZXBXb3JrZXJXYWxSY3ZDb25uOwogCkBAIC04NCwxMyAr MTgzLDE2IEBAIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaChpbnQgc2xvdCk7 CiBleHRlcm4gTG9naWNhbFJlcFdvcmtlciAqbG9naWNhbHJlcF93b3JrZXJfZmluZChPaWQgc3Vi aWQsIE9pZCByZWxpZCwKIAkJCQkJCQkJCQkJCWJvb2wgb25seV9ydW5uaW5nKTsKIGV4dGVybiBM aXN0ICpsb2dpY2FscmVwX3dvcmtlcnNfZmluZChPaWQgc3ViaWQsIGJvb2wgb25seV9ydW5uaW5n KTsKLWV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChPaWQgZGJpZCwgT2lkIHN1 YmlkLCBjb25zdCBjaGFyICpzdWJuYW1lLAotCQkJCQkJCQkJIE9pZCB1c2VyaWQsIE9pZCByZWxp ZCk7CitleHRlcm4gYm9vbCBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2goT2lkIGRiaWQsIE9pZCBz dWJpZCwgY29uc3QgY2hhciAqc3VibmFtZSwKKwkJCQkJCQkJCSBPaWQgdXNlcmlkLCBPaWQgcmVs aWQsCisJCQkJCQkJCQkgZHNtX2hhbmRsZSBzdWJ3b3JrZXJfZHNtKTsKIGV4dGVybiB2b2lkIGxv Z2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpOworZXh0ZXJuIHZvaWQg bG9naWNhbHJlcF9wYV93b3JrZXJfc3RvcChpbnQgc2xvdF9ubywgdWludDE2IGdlbmVyYXRpb24p OwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfd2FrZXVwKE9pZCBzdWJpZCwgT2lkIHJl bGlkKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX3dha2V1cF9wdHIoTG9naWNhbFJl cFdvcmtlciAqd29ya2VyKTsKIAogZXh0ZXJuIGludAlsb2dpY2FscmVwX3N5bmNfd29ya2VyX2Nv dW50KE9pZCBzdWJpZCk7CitleHRlcm4gaW50CWxvZ2ljYWxyZXBfcGFfd29ya2VyX2NvdW50KE9p ZCBzdWJpZCk7CiAKIGV4dGVybiB2b2lkIFJlcGxpY2F0aW9uT3JpZ2luTmFtZUZvckxvZ2ljYWxS ZXAoT2lkIHN1Ym9pZCwgT2lkIHJlbGlkLAogCQkJCQkJCQkJCQkgICBjaGFyICpvcmlnaW5uYW1l LCBTaXplIHN6b3JpZ2lubmFtZSk7CkBAIC0xMDMsMTAgKzIwNSw2MyBAQCBleHRlcm4gdm9pZCBw cm9jZXNzX3N5bmNpbmdfdGFibGVzKFhMb2dSZWNQdHIgY3VycmVudF9sc24pOwogZXh0ZXJuIHZv aWQgaW52YWxpZGF0ZV9zeW5jaW5nX3RhYmxlX3N0YXRlcyhEYXR1bSBhcmcsIGludCBjYWNoZWlk LAogCQkJCQkJCQkJCQl1aW50MzIgaGFzaHZhbHVlKTsKIAorZXh0ZXJuIHZvaWQgYXBwbHlfZGlz cGF0Y2goU3RyaW5nSW5mbyBzKTsKKworZXh0ZXJuIHZvaWQgbWF5YmVfcmVyZWFkX3N1YnNjcmlw dGlvbih2b2lkKTsKKworZXh0ZXJuIHZvaWQgSW5pdGlhbGl6ZUFwcGx5V29ya2VyKHZvaWQpOwor CisvKiBGdW5jdGlvbiBmb3IgYXBwbHkgZXJyb3IgY2FsbGJhY2sgKi8KK2V4dGVybiB2b2lkIGFw cGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZyk7CitleHRlcm4gdm9pZCBzZXRfYXBwbHlfZXJy b3JfY29udGV4dF9vcmlnaW4oY2hhciAqb3JpZ2lubmFtZSk7CisKKy8qIFBhcmFsbGVsIGFwcGx5 IHdvcmtlciBzZXR1cCBhbmQgaW50ZXJhY3Rpb25zICovCitleHRlcm4gdm9pZCBwYV9hbGxvY2F0 ZV93b3JrZXIoVHJhbnNhY3Rpb25JZCB4aWQpOworZXh0ZXJuIFBhcmFsbGVsQXBwbHlXb3JrZXJJ bmZvICpwYV9maW5kX3dvcmtlcihUcmFuc2FjdGlvbklkIHhpZCk7CitleHRlcm4gYm9vbCBwYV9m cmVlX3dvcmtlcihQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sIFRyYW5zYWN0aW9uSWQg eGlkKTsKK2V4dGVybiB2b2lkIHBhX2RldGFjaF9hbGxfZXJyb3JfbXEodm9pZCk7CitleHRlcm4g dm9pZCBwYV9zdG9wX2lkbGVfd29ya2Vycyh2b2lkKTsKKworZXh0ZXJuIHZvaWQgcGFfc2VuZF9k YXRhKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgU2l6ZSBuYnl0ZXMsCisJCQkJCQkg Y29uc3Qgdm9pZCAqZGF0YSk7CitleHRlcm4gdm9pZCBwYV93YWl0X2Zvcl94YWN0X2ZpbmlzaChQ YXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd3NoYXJlZCk7CisKK2V4dGVybiB2b2lkIHBhX3NldF94 YWN0X3N0YXRlKFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKndzaGFyZWQsCisJCQkJCQkJICBQ YXJhbGxlbFRyYW5zU3RhdGUgaW5feGFjdCk7CitleHRlcm4gdm9pZCBwYV9zZXRfc3RyZWFtX2Fw cGx5X3dvcmtlcihQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pOworCitleHRlcm4gdm9p ZCBwYV9zdGFydF9zdWJ0cmFucyhUcmFuc2FjdGlvbklkIGN1cnJlbnRfeGlkLCBUcmFuc2FjdGlv bklkIHRvcF94aWQpOworZXh0ZXJuIHZvaWQgcGFfcmVzZXRfc3VidHJhbnModm9pZCk7CitleHRl cm4gdm9pZCBwYV9zdHJlYW1fYWJvcnQoTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YSAqYWJvcnRf ZGF0YSk7CisKK2V4dGVybiB2b2lkIHBhX2xvY2tfc3RyZWFtKFRyYW5zYWN0aW9uSWQgeGlkLCBM T0NLTU9ERSBsb2NrbW9kZSk7CitleHRlcm4gdm9pZCBwYV91bmxvY2tfc3RyZWFtKFRyYW5zYWN0 aW9uSWQgeGlkLCBMT0NLTU9ERSBsb2NrbW9kZSk7CisKK2V4dGVybiB2b2lkIHBhX2xvY2tfdHJh bnNhY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQsIExPQ0tNT0RFIGxvY2ttb2RlKTsKK2V4dGVybiB2 b2lkIHBhX3VubG9ja190cmFuc2FjdGlvbihUcmFuc2FjdGlvbklkIHhpZCwgTE9DS01PREUgbG9j a21vZGUpOworCitleHRlcm4gdm9pZCBwYV9pbmNyZW1lbnRfc3RyZWFtX2Jsb2NrKFBhcmFsbGVs QXBwbHlXb3JrZXJTaGFyZWQgKndzaGFyZWQpOworZXh0ZXJuIHZvaWQgcGFfZGVjcl9hbmRfd2Fp dF9zdHJlYW1fYmxvY2soUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqd3NoYXJlZCk7CisKKyNk ZWZpbmUgaXNQYXJhbGxlbEFwcGx5V29ya2VyKHdvcmtlcikgKCh3b3JrZXIpLT5hcHBseV9sZWFk ZXJfcGlkICE9IEludmFsaWRQaWQpCisKIHN0YXRpYyBpbmxpbmUgYm9vbAogYW1fdGFibGVzeW5j X3dvcmtlcih2b2lkKQogewogCXJldHVybiBPaWRJc1ZhbGlkKE15TG9naWNhbFJlcFdvcmtlci0+ cmVsaWQpOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wKK2FtX2xlYWRlcl9hcHBseV93b3JrZXIo dm9pZCkKK3sKKwlyZXR1cm4gKCFPaWRJc1ZhbGlkKE15TG9naWNhbFJlcFdvcmtlci0+cmVsaWQp ICYmCisJCQkhaXNQYXJhbGxlbEFwcGx5V29ya2VyKE15TG9naWNhbFJlcFdvcmtlcikpOworfQor CitzdGF0aWMgaW5saW5lIGJvb2wKK2FtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcih2b2lkKQorewor CXJldHVybiBpc1BhcmFsbGVsQXBwbHlXb3JrZXIoTXlMb2dpY2FsUmVwV29ya2VyKTsKK30KKwog I2VuZGlmCQkJCQkJCS8qIFdPUktFUl9JTlRFUk5BTF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9zdG9yYWdlL2xtZ3IuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oCmluZGV4IGJl MWQyYzkuLjVhM2JkMDMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oCisr KyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oCkBAIC0xMDcsNiArMTA3LDExIEBAIGV4dGVy biB2b2lkIExvY2tTaGFyZWRPYmplY3RGb3JTZXNzaW9uKE9pZCBjbGFzc2lkLCBPaWQgb2JqaWQs IHVpbnQxNiBvYmpzdWJpZCwKIGV4dGVybiB2b2lkIFVubG9ja1NoYXJlZE9iamVjdEZvclNlc3Np b24oT2lkIGNsYXNzaWQsIE9pZCBvYmppZCwgdWludDE2IG9ianN1YmlkLAogCQkJCQkJCQkJCSBM T0NLTU9ERSBsb2NrbW9kZSk7CiAKK2V4dGVybiB2b2lkIExvY2tBcHBseVRyYW5zYWN0aW9uRm9y U2Vzc2lvbihPaWQgc3Vib2lkLCBUcmFuc2FjdGlvbklkIHhpZCwgdWludDE2IG9iamlkLAorCQkJ CQkJCQkJCSAgIExPQ0tNT0RFIGxvY2ttb2RlKTsKK2V4dGVybiB2b2lkIFVubG9ja0FwcGx5VHJh bnNhY3Rpb25Gb3JTZXNzaW9uKE9pZCBzdWJvaWQsIFRyYW5zYWN0aW9uSWQgeGlkLCB1aW50MTYg b2JqaWQsCisJCQkJCQkJCQkJCSBMT0NLTU9ERSBsb2NrbW9kZSk7CisKIC8qIERlc2NyaWJlIGEg bG9ja3RhZyBmb3IgZXJyb3IgbWVzc2FnZXMgKi8KIGV4dGVybiB2b2lkIERlc2NyaWJlTG9ja1Rh ZyhTdHJpbmdJbmZvIGJ1ZiwgY29uc3QgTE9DS1RBRyAqdGFnKTsKIApkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvc3RvcmFnZS9sb2NrLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2suaAppbmRl eCBlNGUxNDk1Li43NzY2MTIzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2su aAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2suaApAQCAtMTQ5LDEwICsxNDksMTIgQEAg dHlwZWRlZiBlbnVtIExvY2tUYWdUeXBlCiAJTE9DS1RBR19TUEVDVUxBVElWRV9UT0tFTiwJLyog c3BlY3VsYXRpdmUgaW5zZXJ0aW9uIFhpZCBhbmQgdG9rZW4gKi8KIAlMT0NLVEFHX09CSkVDVCwJ CQkJLyogbm9uLXJlbGF0aW9uIGRhdGFiYXNlIG9iamVjdCAqLwogCUxPQ0tUQUdfVVNFUkxPQ0ss CQkJLyogcmVzZXJ2ZWQgZm9yIG9sZCBjb250cmliL3VzZXJsb2NrIGNvZGUgKi8KLQlMT0NLVEFH X0FEVklTT1JZCQkJLyogYWR2aXNvcnkgdXNlciBsb2NrcyAqLworCUxPQ0tUQUdfQURWSVNPUlks CQkJLyogYWR2aXNvcnkgdXNlciBsb2NrcyAqLworCUxPQ0tUQUdfQVBQTFlfVFJBTlNBQ1RJT04J LyogdHJhbnNhY3Rpb24gYmVpbmcgYXBwbGllZCBvbiBhIGxvZ2ljYWwKKwkJCQkJCQkJICogcmVw bGljYXRpb24gc3Vic2NyaWJlciAqLwogfSBMb2NrVGFnVHlwZTsKIAotI2RlZmluZSBMT0NLVEFH X0xBU1RfVFlQRQlMT0NLVEFHX0FEVklTT1JZCisjZGVmaW5lIExPQ0tUQUdfTEFTVF9UWVBFCUxP Q0tUQUdfQVBQTFlfVFJBTlNBQ1RJT04KIAogZXh0ZXJuIFBHRExMSU1QT1JUIGNvbnN0IGNoYXIg KmNvbnN0IExvY2tUYWdUeXBlTmFtZXNbXTsKIApAQCAtMjc4LDYgKzI4MCwxNyBAQCB0eXBlZGVm IHN0cnVjdCBMT0NLVEFHCiAJIChsb2NrdGFnKS5sb2NrdGFnX3R5cGUgPSBMT0NLVEFHX0FEVklT T1JZLCBcCiAJIChsb2NrdGFnKS5sb2NrdGFnX2xvY2ttZXRob2RpZCA9IFVTRVJfTE9DS01FVEhP RCkKIAorLyoKKyAqIElEIGluZm8gZm9yIGEgcmVtb3RlIHRyYW5zYWN0aW9uIG9uIGEgbG9naWNh bCByZXBsaWNhdGlvbiBzdWJzY3JpYmVyIGlzOiBEQgorICogT0lEICsgU1VCU0NSSVBUSU9OIE9J RCArIFRSQU5TQUNUSU9OIElEICsgT0JKSUQKKyAqLworI2RlZmluZSBTRVRfTE9DS1RBR19BUFBM WV9UUkFOU0FDVElPTihsb2NrdGFnLGRib2lkLHN1Ym9pZCx4aWQsb2JqaWQpIFwKKwkoKGxvY2t0 YWcpLmxvY2t0YWdfZmllbGQxID0gKGRib2lkKSwgXAorCSAobG9ja3RhZykubG9ja3RhZ19maWVs ZDIgPSAoc3Vib2lkKSwgXAorCSAobG9ja3RhZykubG9ja3RhZ19maWVsZDMgPSAoeGlkKSwgXAor CSAobG9ja3RhZykubG9ja3RhZ19maWVsZDQgPSAob2JqaWQpLCBcCisJIChsb2NrdGFnKS5sb2Nr dGFnX3R5cGUgPSBMT0NLVEFHX0FQUExZX1RSQU5TQUNUSU9OLCBcCisJIChsb2NrdGFnKS5sb2Nr dGFnX2xvY2ttZXRob2RpZCA9IERFRkFVTFRfTE9DS01FVEhPRCkKIAogLyoKICAqIFBlci1sb2Nr ZWQtb2JqZWN0IGxvY2sgaW5mb3JtYXRpb246CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9y YWdlL3Byb2NzaWduYWwuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCmluZGV4 IGVlNjM2OTAuLjkzYTUxZjQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3Np Z25hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCkBAIC0zNSw2ICsz NSw3IEBAIHR5cGVkZWYgZW51bQogCVBST0NTSUdfV0FMU05EX0lOSVRfU1RPUFBJTkcsCS8qIGFz ayB3YWxzZW5kZXJzIHRvIHByZXBhcmUgZm9yIHNodXRkb3duICAqLwogCVBST0NTSUdfQkFSUklF UiwJCQkvKiBnbG9iYWwgYmFycmllciBpbnRlcnJ1cHQgICovCiAJUFJPQ1NJR19MT0dfTUVNT1JZ X0NPTlRFWFQsIC8qIGFzayBiYWNrZW5kIHRvIGxvZyB0aGUgbWVtb3J5IGNvbnRleHRzICovCisJ UFJPQ1NJR19QQVJBTExFTF9BUFBMWV9NRVNTQUdFLCAvKiBNZXNzYWdlIGZyb20gcGFyYWxsZWwg YXBwbHkgd29ya2VycyAqLwogCiAJLyogUmVjb3ZlcnkgY29uZmxpY3QgcmVhc29ucyAqLwogCVBS T0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfREFUQUJBU0UsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS91dGlscy93YWl0X2V2ZW50LmggYi9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKaW5k ZXggMGIyMTAwYi4uNzYzZmJlYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9l dmVudC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaApAQCAtNDIsNiArNDIs NyBAQCB0eXBlZGVmIGVudW0KIAlXQUlUX0VWRU5UX0NIRUNLUE9JTlRFUl9NQUlOLAogCVdBSVRf RVZFTlRfTE9HSUNBTF9BUFBMWV9NQUlOLAogCVdBSVRfRVZFTlRfTE9HSUNBTF9MQVVOQ0hFUl9N QUlOLAorCVdBSVRfRVZFTlRfTE9HSUNBTF9QQVJBTExFTF9BUFBMWV9NQUlOLAogCVdBSVRfRVZF TlRfUkVDT1ZFUllfV0FMX1NUUkVBTSwKIAlXQUlUX0VWRU5UX1NZU0xPR0dFUl9NQUlOLAogCVdB SVRfRVZFTlRfV0FMX1JFQ0VJVkVSX01BSU4sCkBAIC0xMDUsNiArMTA2LDcgQEAgdHlwZWRlZiBl bnVtCiAJV0FJVF9FVkVOVF9IQVNIX0dST1dfQlVDS0VUU19BTExPQ0FURSwKIAlXQUlUX0VWRU5U X0hBU0hfR1JPV19CVUNLRVRTX0VMRUNULAogCVdBSVRfRVZFTlRfSEFTSF9HUk9XX0JVQ0tFVFNf UkVJTlNFUlQsCisJV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX1NUQVRFX0NIQU5H RSwKIAlXQUlUX0VWRU5UX0xPR0lDQUxfU1lOQ19EQVRBLAogCVdBSVRfRVZFTlRfTE9HSUNBTF9T WU5DX1NUQVRFX0NIQU5HRSwKIAlXQUlUX0VWRU5UX01RX0lOVEVSTkFMLApkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0IGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0CmluZGV4IGMxM2QyMTguLjFlZDZmNGMgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKQEAgLTExNyw3ICsx MTcsNyBAQCBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5 IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgICBOYW1lICAgICAgIHwgICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0 cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwg U3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBM U04gCiAtLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YjQgfCBy ZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAg IHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBub25l ICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAw LzAKKyByZWdyZXNzX3Rlc3RzdWI0IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAg ICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgbm9uZSAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1l PXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElP TiByZWdyZXNzX3Rlc3RzdWI0IFNFVCAob3JpZ2luID0gYW55KTsKQEAgLTEyNSw3ICsxMjUsNyBA QCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViNCBTRVQgKG9yaWdpbiA9IGFueSk7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwog ICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8 IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERp c2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBD b25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tCi0gcmVncmVzc190ZXN0c3ViNCB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAg ICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBmICAgICAgICAgfCBkICAgICAgICAgICAgICAg IHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFt ZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YjQgfCByZWdyZXNz X3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2Zm ICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBv ZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgx IHJvdykKIAogRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViMzsKQEAgLTEzOCw3ICsx MzgsNyBAQCBFUlJPUjogIGludmFsaWQgY29ubmVjdGlvbiBzdHJpbmcgc3ludGF4OiBtaXNzaW5n ICI9IiBhZnRlciAiZm9vYmFyIiBpbiBjb25uZWN0aQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3Ry ZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBT eW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExT TiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdy ZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwg ZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAg fCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAK KyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8 IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYg ICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVn cmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJl Z3Jlc3NfdGVzdHN1YiBTRVQgUFVCTElDQVRJT04gdGVzdHB1YjIsIHRlc3RwdWIzIFdJVEggKHJl ZnJlc2ggPSBmYWxzZSk7CkBAIC0xNTgsNyArMTU4LDcgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJl Z3Jlc3NfdGVzdHN1YiBTS0lQIChsc24gPSAnMC8xMjM0NScpOwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAg IHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgUHVibGljYXRpb24g ICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24g ZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICAgQ29ubmluZm8g ICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAg ICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAg fCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgMC8xMjM0NQorIHJlZ3Jlc3NfdGVzdHN1 YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIyLHRlc3Rw dWIzfSB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9l c25vdGV4aXN0MiB8IDAvMTIzNDUKICgxIHJvdykKIAogLS0gb2sgLSB3aXRoIGxzbiA9IE5PTkUK QEAgLTE3MCw3ICsxNzAsNyBAQCBFUlJPUjogIGludmFsaWQgV0FMIGxvY2F0aW9uIChMU04pOiAw LzAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0 aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFi bGVkIHwgICAgIFB1YmxpY2F0aW9uICAgICB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFz ZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0 IHwgICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vi c2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8 IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAg IHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IDAv MAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAg IHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwg ZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IDAvMAogKDEgcm93KQogCiBCRUdJTjsKQEAg LTIwNSw3ICsyMDUsNyBAQCBISU5UOiAgQXZhaWxhYmxlIHZhbHVlczogbG9jYWwsIHJlbW90ZV93 cml0ZSwgcmVtb3RlX2FwcGx5LCBvbiwgb2ZmLgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgICAgTmFtZSAgICAgICAgIHwg ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgUHVibGljYXRpb24gICAg IHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJy b3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICAgQ29ubmluZm8gICAg ICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQotIHJlZ3Jlc3NfdGVzdHN1Yl9mb28gfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBmICAgICAgICAgfCBkICAg ICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IGxvY2FsICAgICAgICAg ICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdDIgfCAwLzAKKyByZWdyZXNzX3Rlc3Rz dWJfZm9vIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIs dGVzdHB1YjN9IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBhbnkgICAgfCBsb2NhbCAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVz c19kb2Vzbm90ZXhpc3QyIHwgMC8wCiAoMSByb3cpCiAKIC0tIHJlbmFtZSBiYWNrIHRvIGtlZXAg dGhlIHJlc3Qgc2ltcGxlCkBAIC0yNDIsNyArMjQyLDcgQEAgSElOVDogIFRvIGluaXRpYXRlIHJl cGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3Qs IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25z CiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQg fCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBE aXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAg Q29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAg ICAgfCB7dGVzdHB1Yn0gICB8IHQgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1l PXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19z dWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IHQgICAgICB8IG9mZiAg ICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2Zm ICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSBy b3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChiaW5hcnkgPSBm YWxzZSk7CkBAIC0yNTEsMTMgKzI1MSwxMyBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190 ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJl YW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5 bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNO IAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jl c3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBm ICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8 IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAor IHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwg e3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAg ICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBEUk9QIFNVQlNDUklQVElPTiByZWdy ZXNzX3Rlc3RzdWI7Ci0tLSBmYWlsIC0gc3RyZWFtaW5nIG11c3QgYmUgYm9vbGVhbgorLS0gZmFp bCAtIHN0cmVhbWluZyBtdXN0IGJlIGJvb2xlYW4gb3IgJ3BhcmFsbGVsJwogQ1JFQVRFIFNVQlND UklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25v dGV4aXN0JyBQVUJMSUNBVElPTiB0ZXN0cHViIFdJVEggKGNvbm5lY3QgPSBmYWxzZSwgc3RyZWFt aW5nID0gZm9vKTsKLUVSUk9SOiAgc3RyZWFtaW5nIHJlcXVpcmVzIGEgQm9vbGVhbiB2YWx1ZQor RVJST1I6ICBzdHJlYW1pbmcgcmVxdWlyZXMgYSBCb29sZWFuIHZhbHVlIG9yICJwYXJhbGxlbCIK IC0tIG5vdyBpdCB3b3JrcwogQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09O TkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUJMSUNBVElPTiB0ZXN0cHVi IFdJVEggKGNvbm5lY3QgPSBmYWxzZSwgc3RyZWFtaW5nID0gdHJ1ZSk7CiBXQVJOSU5HOiAgc3Vi c2NyaXB0aW9uIHdhcyBjcmVhdGVkLCBidXQgaXMgbm90IGNvbm5lY3RlZApAQCAtMjY2LDcgKzI2 NiwxNSBAQCBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5 IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3Ry ZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBT eW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExT TiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdy ZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwg dCAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAg fCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAK KyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8 IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb24gICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYg ICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVn cmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKygxIHJvdykKKworQUxURVIgU1VCU0NSSVBUSU9OIHJl Z3Jlc3NfdGVzdHN1YiBTRVQgKHN0cmVhbWluZyA9IHBhcmFsbGVsKTsKK1xkUnMrCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFt ZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRp b24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBl cnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAg ICAgICAgICB8IFNraXAgTFNOIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jl c3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3Rw dWJ9ICAgfCBmICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2Rv ZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190 ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gZmFsc2UpOwpAQCAtMjc1LDcgKzI4Myw3IEBAIEFMVEVS IFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAg ICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJs aWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxl IG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmlu Zm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0g cmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7 dGVzdHB1Yn0gICB8IGYgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAg ICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jl c3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3Jp cHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8 IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAg ICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAK IC0tIGZhaWwgLSBwdWJsaWNhdGlvbiBhbHJlYWR5IGV4aXN0cwpAQCAtMjkzLDcgKzMwMSw3IEBA IEVSUk9SOiAgcHVibGljYXRpb24gInRlc3RwdWIxIiBpcyBhbHJlYWR5IGluIHN1YnNjcmlwdGlv biAicmVncmVzc190ZXN0c3ViIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBP d25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgICAgICBQdWJsaWNhdGlvbiAgICAgICAgIHwg QmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3Ig fCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAg ICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAg ICAgfCB7dGVzdHB1Yix0ZXN0cHViMSx0ZXN0cHViMn0gfCBmICAgICAgfCBmICAgICAgICAgfCBk ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAg ICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVz dHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIsdGVz dHB1YjEsdGVzdHB1YjJ9IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9 cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogLS0gZmFpbCAtIHB1YmxpY2F0 aW9uIHVzZWQgbW9yZSB0aGVuIG9uY2UKQEAgLTMxMSw3ICszMTksNyBAQCBBTFRFUiBTVUJTQ1JJ UFRJT04gcmVncmVzc190ZXN0c3ViIERST1AgUFVCTElDQVRJT04gdGVzdHB1YjEsIHRlc3RwdWIy IFdJVEggKHJlZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNj cmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg RW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNv bW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAg ICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2Vy IHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAg fCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCBy ZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAg IHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkg ICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAw LzAKICgxIHJvdykKIAogRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViOwpAQCAtMzUw LDcgKzM1OCw3IEBAIEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFu dWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkg fCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdp biB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNr aXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8 IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAg ICAgfCBmICAgICAgICAgfCBwICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFu eSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8 IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAg ICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBwICAgICAgICAgICAgICAg IHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFt ZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiAtLWZhaWwgLSBhbHRlciBv ZiB0d29fcGhhc2Ugb3B0aW9uIG5vdCBzdXBwb3J0ZWQuCkBAIC0zNjIsNyArMzcwLDcgQEAgQUxU RVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHN0cmVhbWluZyA9IHRydWUpOwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAg ICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1 YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2Fi bGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25u aW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0K LSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8 IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgdCAgICAgICAgIHwgcCAgICAgICAgICAgICAgICB8IGYg ICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVn cmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNj cmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb24gICAgICAg IHwgcCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAg ICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykK IAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5P TkUpOwpAQCAtMzc1LDcgKzM4Myw3IEBAIEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwg eW91IG11c3QgbWFudWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFt ZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRp b24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBl cnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAg ICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jl c3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3Rw dWJ9ICAgfCBmICAgICAgfCB0ICAgICAgICAgfCBwICAgICAgICAgICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2Rv ZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9u X3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvbiAgICAgICAgfCBwICAg ICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAg ICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBBTFRF UiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CkBA IC0zOTEsNyArMzk5LDcgQEAgSElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVz dCBtYW51YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGUKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAg IHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJp bmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwg T3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAg IHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0 c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8 IGYgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAg IHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4 aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8 IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwg ZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFMVEVSIFNVQlND UklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChkaXNhYmxlX29uX2Vycm9yID0gdHJ1ZSk7CkBA IC0zOTksNyArNDA3LDcgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQg KGRpc2FibGVfb25fZXJyb3IgPSB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWlu ZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hy b25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAt LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19z dWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IGYgICAg ICAgICB8IGQgICAgICAgICAgICAgICAgfCB0ICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2Zm ICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVn cmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVz dHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCB0ICAgICAg ICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3Nf ZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNz X3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3N1YnNjcmlwdGlvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdWJzY3Jp cHRpb24uc3FsCmluZGV4IGVhZWFkZTguLjc5OTFhYmYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3N1YnNjcmlwdGlvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vi c2NyaXB0aW9uLnNxbApAQCAtMTY3LDcgKzE2Nyw3IEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdy ZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKIAogRFJPUCBTVUJTQ1JJUFRJT04g cmVncmVzc190ZXN0c3ViOwogCi0tLSBmYWlsIC0gc3RyZWFtaW5nIG11c3QgYmUgYm9vbGVhbgor LS0gZmFpbCAtIHN0cmVhbWluZyBtdXN0IGJlIGJvb2xlYW4gb3IgJ3BhcmFsbGVsJwogQ1JFQVRF IFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3Nf ZG9lc25vdGV4aXN0JyBQVUJMSUNBVElPTiB0ZXN0cHViIFdJVEggKGNvbm5lY3QgPSBmYWxzZSwg c3RyZWFtaW5nID0gZm9vKTsKIAogLS0gbm93IGl0IHdvcmtzCkBAIC0xNzUsNiArMTc1LDEwIEBA IENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1y ZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCCiAKIFxkUnMrCiAKK0FMVEVSIFNVQlNDUklQVElPTiBy ZWdyZXNzX3Rlc3RzdWIgU0VUIChzdHJlYW1pbmcgPSBwYXJhbGxlbCk7CisKK1xkUnMrCisKIEFM VEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzdHJlYW1pbmcgPSBmYWxzZSk7 CiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9O RSk7CiAKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3Jj L3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggYTJkZmQ1Yy4uYTYxMTUyMCAxMDA2 NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTE0NzEsNiArMTQ3MSw3IEBAIExvZ2ljYWxSZXBS ZWxJZAogTG9naWNhbFJlcFJlbE1hcEVudHJ5CiBMb2dpY2FsUmVwUmVsYXRpb24KIExvZ2ljYWxS ZXBSb2xsYmFja1ByZXBhcmVkVHhuRGF0YQorTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YQogTG9n aWNhbFJlcFR1cGxlRGF0YQogTG9naWNhbFJlcFR5cAogTG9naWNhbFJlcFdvcmtlcgpAQCAtMTY2 Miw2ICsxNjYzLDkgQEAgT3ZlcnJpZGVTdGFja0VudHJ5CiBPdmVycmlkaW5nS2luZAogUEFDRV9I RUFERVIKIFBBQ0wKK1BhcmFsbGVsQXBwbHlXb3JrZXJFbnRyeQorUGFyYWxsZWxBcHBseVdvcmtl ckluZm8KK1BhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQKIFBBVEgKIFBCT09MCiBQQ3R4dEhhbmRs ZQpAQCAtMTg5Myw2ICsxODk3LDcgQEAgUGFyYWxsZWxTbG90UmVzdWx0SGFuZGxlcgogUGFyYWxs ZWxTdGF0ZQogUGFyYWxsZWxUYWJsZVNjYW5EZXNjCiBQYXJhbGxlbFRhYmxlU2NhbkRlc2NEYXRh CitQYXJhbGxlbFRyYW5zU3RhdGUKIFBhcmFsbGVsVmFjdXVtU3RhdGUKIFBhcmFsbGVsV29ya2Vy Q29udGV4dAogUGFyYWxsZWxXb3JrZXJJbmZvCkBAIC0yNzgyLDYgKzI3ODcsNyBAQCBUcmFuc2Fj dGlvblN0bXRLaW5kCiBUcmFuc2Zvcm1JbmZvCiBUcmFuc2Zvcm1Kc29uU3RyaW5nVmFsdWVzU3Rh dGUKIFRyYW5zaXRpb25DYXB0dXJlU3RhdGUKK1RyYW5zQXBwbHlBY3Rpb24KIFRyZ21BcmMKIFRy Z21BcmNJbmZvCiBUcmdtQm91bmQKLS0gCjIuNy4yLndpbmRvd3MuMQoK --_008_OS0PR01MB571663B4EC5D8BE749AACD98941E9OS0PR01MB5716jpnp_--