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 1o9IRC-0003Xz-Fd for pgsql-hackers@arkaria.postgresql.org; Thu, 07 Jul 2022 03:44:23 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1o9IRA-0003Z7-SI for pgsql-hackers@arkaria.postgresql.org; Thu, 07 Jul 2022 03:44:20 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1o9IR9-0003WJ-KW for pgsql-hackers@lists.postgresql.org; Thu, 07 Jul 2022 03:44:20 +0000 Received: from esa13.fujitsucc.c3s2.iphmx.com ([68.232.156.96]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1o9IR3-0000An-Fa for pgsql-hackers@lists.postgresql.org; Thu, 07 Jul 2022 03:44:18 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1657165453; x=1688701453; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=QHqgwwrxYKX9uRPkRDVDRu5s9ZBNY+t+JEvHhPYFcbM=; b=nstbO5Ky0cZAiEZ/TX+t0uFHnf8KMBVS9sLl721oPWSIxGprZR2ZO8w6 f/Rgth3QPP0t3LLW59F4sVKFpLbxKJYTjta3ScEKvHZw89Xov3MlrLhDU OeBR9fgYUcWWqGSah/vQwfsh/ssZd6XS4CejDGy2lj/hjU3G1rv9dnU8N /kbFr2ESxZuaseJ7ZoJGhGmjNbJJmN+nXf5MNcUq14f8bhNXz5o6Hgjhf kRMAYTe+UUsWZy88+ssjZ0SXWZX1v7S6/azj5AISkV4gEMPFA9yXBogMF 3Is/7fNRfF8EgepSPN5qVXUzgG+vkXeUe9GpYG7bJWD78VbnxhKoiDczD Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10400"; a="59595257" X-IronPort-AV: E=Sophos;i="5.92,251,1650898800"; d="scan'208,223";a="59595257" Received: from mail-tycjpn01lp2168.outbound.protection.outlook.com (HELO JPN01-TYC-obe.outbound.protection.outlook.com) ([104.47.23.168]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Jul 2022 12:44:09 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YKxEIpPukvfCxOYHvU3ifZS6VabiwYzf3E7Z4kU+5OMtN0T2X5auGcyHm9Xjr8rjYedde3dCOdfN+V7cFCjRXMYCxezwWy9XmzLR/I4aUZtqUP+M4Bexup6oGJCv1PXu5uwmPqAXIGu0ycHNkbxLO69ig/9bsRYww9O35YkQ9zQhrsHzkRN0EDQ0b4S8kjXQVJXrvm5fI8Wim9xAqoiDxVhgBBb50Z67fLNQB6LHNPNbP7zyuLxqw0x6o6Kk/z5mRjfhTojh1xynIoCCyt0epeLLfpC5Ki1/hCuNkCl8NCk8xYPBDKe/5MBS0iwhJp0kWgVDdCCwxJOmWuQOc2ihQQ== 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=fTl5mOzRl8JpcdpDZS7Y5mY0jJNYKnJSuWESuRFRFcM=; b=dRiCA7nWMwDKYi5PMltawOCxPmdtI83JjX1aHT1IFIZZg9aDv+rVvblfDYy/Y7w90sRS2F700mfQmh/L3Vkp6GQrVgkp8lQx1S3XjHzlaWNpCez6pKMBod/IxSugor0KGAZ3bCwsYUVQCqxul7cFxcVqIa6wZnOyaBMuoKxUU35rlcQC6c+CnJ3HTMx6kfBtWHhU/WQVkWiA4YaUsHey7zrcCBD43Q1kTC3PBTP818fhudhuH4byBawAplAgqddSR1H4/MoblRA9VzRYe2TJ2oFHaQOL2lPm+NDZc51ZW7qM5XK23D+Bome6rHsbTTa0qZjwLXPREevUiANZ8fC07A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fujitsu.onmicrosoft.com; s=selector2-fujitsu-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=fTl5mOzRl8JpcdpDZS7Y5mY0jJNYKnJSuWESuRFRFcM=; b=g8tttdItKSo4uZJ6K9PYsE3v+G0Csa+7oWoVIVkSxD36/CXTCW4GRIXwPLfW/31s0n4CbaaQgNRb5NF6aowtoNY2m26yLSIa5Exlk29aJXpQ1AQBWQN0UEdNXoi0YEHbb9H1iGdZvmpDrdjr190APERpZoCwEUVLcjhN6Ribz2U= Received: from OS3PR01MB6275.jpnprd01.prod.outlook.com (2603:1096:604:f1::8) by OSAPR01MB4658.jpnprd01.prod.outlook.com (2603:1096:604:36::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.14; Thu, 7 Jul 2022 03:44:05 +0000 Received: from OS3PR01MB6275.jpnprd01.prod.outlook.com ([fe80::b7:3975:8c62:f5d1]) by OS3PR01MB6275.jpnprd01.prod.outlook.com ([fe80::b7:3975:8c62:f5d1%4]) with mapi id 15.20.5395.021; Thu, 7 Jul 2022 03:44:04 +0000 From: "wangw.fnst@fujitsu.com" To: Peter Smith CC: Amit Kapila , Masahiko Sawada , "shiy.fnst@fujitsu.com" , "houzj.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: AQHYSXX4/KZEbPJKjUy7J1pJS8eGYazlvxQAgAkRYICACBI2gIABs50AgAA5UwCAApvIgIAFAGuAgAXc1wCAADa7gIALO/aAgAsRZICAB606AIAS9tXQgAAv04CAAWQLgIABHxKAgAA3o4CAAd7v0IAJQDLggAkyO+CAAiLMAIAC0M5ggARwU4CABP8UAIAAGBkAgAd/49CABPEVgIAJO7xg Date: Thu, 7 Jul 2022 03:44:04 +0000 Message-ID: References: In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: =?utf-8?B?TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2Uw?= =?utf-8?B?NTBfQWN0aW9uSWQ9MjE0YThhOTItYjJkNC00MWQwLWFlZTEtOTZhNWM0NGVh?= =?utf-8?B?OTA2O01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?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?ZWNlMDUwX1NldERhdGU9MjAyMi0wNy0wN1QwMzo0MzoyOFo7TVNJUF9MYWJl?= =?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-office365-filtering-correlation-id: d2aa25ab-3abe-4fb5-3db5-08da5fcaf05b x-ms-traffictypediagnostic: OSAPR01MB4658:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ckU2PtDIm6E9MzBl5gCH56elUZfAwwu+cstLN7XOUJAdzgCHrLYUEs1geYebNAUZp5vauu+z5JR36hbDAr0ezP6y4G2Uwiqg2VC4S1kA9YbdeSy2L5+A5uGTys9DRPwk3xgkYU5sw1loq4V7gwk5WOoc7QLteG9seHVL5FCOTGZ9UaCyqQacz448IN1OKWU6S0YHFGWcDH5fwV0lUjzMIkgdhwYQQohqqw1CU/qQ9atptkeNztWXX6Ukn9zKtpkHxZnLPoxZdd3GVy1q4j6KO3IrE9olDgwOECFnf3VS4T4EneeU6IwaHafuPeN0qBcE0XSirw/Ki7v/xfFAZww2orslsN7n9KTd0JUyO6N7PuPCQxVuhl6FAFb3RYzX8zAOw/p+6LAOshJSRjncW0VBZUaM2xI25Za7n7VYHTpMR+GFmSNSR/ffxG0SzljcgSlKtYb9yTRPbDFHVuP+CdNfojWqjesGppGtsscxdR7RMF6d+9YQKmSduFcSQPsVP8lLve0iX21OGvRixq+MIsKwSlBv2f/6vnscmBG/JehAV4VAMC2rybNsQa+RRRGperbGKygrFXD1HIx1/OsQvEHqxXKxs9YtpzMawrhLh8Rtdva3EOt1JlK7TPvRe2TF1nduyBkTCEbHvYVEDcvAzU0Nmy9XbH3brXMfgQp8N0rsg8171QI//t48DGGKUt4diw7Vj+ZFHPhzpBDoSNd0nnQkdDw+n+Q65mcLczFrfBpIA8/O3X6KuSuao2x9I1/udZvFXp20JI2MJDCaX/bhR+zXX0/cJjxOv/n6f6K1Q8qLjFxkwRJSmGmYWozNmk4Ge991iTs9fZ/giQTvUGYL0+iroZXDEvcURvpph4XkMwdVwK71aeeyZCxUmtkh3aCnUCNgE35/jTJ4Zn6civD9B0P3XA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3PR01MB6275.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(366004)(396003)(376002)(136003)(346002)(39860400002)(8936002)(52536014)(86362001)(186003)(478600001)(83380400001)(85182001)(5660300002)(966005)(316002)(54906003)(55016003)(6916009)(71200400001)(38100700002)(26005)(122000001)(6506007)(76116006)(82960400001)(41300700001)(66476007)(53546011)(38070700005)(4326008)(2906002)(33656002)(7696005)(8676002)(66556008)(66446008)(99936003)(64756008)(66946007)(9686003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?YzdRb1ZjeEVkTmhLaEZWS2g0dzdwNndPemRHSUljbno0ai8vWHFOanY5ZUtl?= =?utf-8?B?WlRNcGN4OTQxVGV4M2NrWkFBb0FNVndQRFRMMVRDQy9kRmIzc1FsWkxDS25t?= =?utf-8?B?L0Q3Y0poL3Jkb2xPMENiR1ZrVmdvbzBTRmhsb0NUdjdWdlVuTnUxSnZlTyt6?= =?utf-8?B?RXVnM0VDbUhHTmRudG1PYVR5dHZQY3RqS1lna0hRVmtlTGM3VWVsalIzekl4?= =?utf-8?B?L3hmTmlQUk9aeWtZRFJmVW8zbk94K0hvL3ZESkF1VU1MNHR0ekMzQWFXUjE2?= =?utf-8?B?R2xyQXJ1d1BrUUR2QkFhSU5QQUpRMUxaOXpOaUU5VkJMRUFPeE8wN1JiZCtE?= =?utf-8?B?aHFRMGE1S3duYkNCVkd4bGVxREt0Ui9naWRGQk16OEVMOFJWRzdENUVhZ1FI?= =?utf-8?B?aXNyRjRCS0pQWGFpWmNGSktqK3dUZzBmMmVHZUtVVTBmR2s1cndJMENiVC9v?= =?utf-8?B?VnpDMUdXUThOeWFaeUdIMG11aFNQcXhzb091a2dlaHpSR1R5SVZqNnM4bElp?= =?utf-8?B?UlFFVHJIYVJUa0JEblJGTTdaQkVrK2doVmcwUzdxZUQxOEpxcXNLc2ljbkM3?= =?utf-8?B?MlRVU2VMSVBHS1pkeFhSRXFpbWZoT0Qrc0hWbEo5dzBOWjg0VU5mMW1QWFNJ?= =?utf-8?B?eG5pVXlBb2xtbmpnSkxnMERRL1IvUndPYmpzeStSQWltSENoZzdJamRYNDFB?= =?utf-8?B?T3F4dCtqTEhCVWRCaGRnY2VrUTJmQmR1U0tIcG01dU1XR3lDd25aZ2dvdFQ5?= =?utf-8?B?TWhTZlpNZS9yczhTV25VY3o2Z0p1VEUwRFZWMEovR25oZlZOR1NDcmZjQU90?= =?utf-8?B?NW5BcXJoZ21pYU5YdlA1d2dIQUVrWWV6MVBTc01KdThabDFQMHFyT0lTTTFD?= =?utf-8?B?Z0JtL3VuWDNRQWM3UHJ6b1ZiTWV5c0hBVmRSUWVWbjNSVWRuYUVtQlJGeVpM?= =?utf-8?B?WnNqaXdOK1Rhc2hveDFBZGZRVDRjVEo5NXRqZDhETWliNGFhZkZYSHYxZDhr?= =?utf-8?B?aXNCb3RPemNWVExrTG9QeVhyTjU2dEdQZXJWNm9USHQvaURHMks3dGsydHR1?= =?utf-8?B?Sm1NRDc0TFI5V1hQNDhJb2k2NnZTd1hqYVhvRGZyKzh4ZHl2eUFqRWpnb0hM?= =?utf-8?B?T29Hb0p2dXhoYzlJV0dBK204WU43TUFzYklIcmlDNzlZS2VIelYzTm9ZL0s4?= =?utf-8?B?eTZKa3ZoRmpWSWQzMnMxSm1BcFRqYkFsQmdxbzc4UXNoRTFxVnQ4YUpDUGE0?= =?utf-8?B?OUlUTS9tWXNXaE9rZUlhU1ZIbWNXQkJ5NW5xRWd6b1ZGSFZrVzFaQTg0ZTcv?= =?utf-8?B?OThITjROWHpSNkx0Ukt4Qm96Q01iK2lkeS9ZNnYzc1pBd3p4MGNXVjljcXFI?= =?utf-8?B?TGt6OGlNTnVvbHQ3VlZrUlhaaWdiK2lMQXRWN3VpT1NqYkptUlFkQXJxY0F0?= =?utf-8?B?Q2RWK0NJeWkvUC8rc3d4ZkRqaHA1bmQ4UGlsMmZBVlBYR0czeVRoTVlwNlhx?= =?utf-8?B?dkh5cExTOWhnS1J4bGhOcWtnbkRYWEdHUy96dy83YjlhU2lNaFFhelBwek9p?= =?utf-8?B?Nmd3byttYzZ5MU8yVGRBZkZQYUxWYlA2TkxMN3hXK0MwZGtFS3pBYVhmWnB5?= =?utf-8?B?ZHczdjhsNHJKN2diaERRZDVLLzdDTGJHZm4wVnBlWTdWVVRzYm1hbldvdDYy?= =?utf-8?B?eUlsNXhXbjFTeUxKNUNsQ1Nnam8yNVJqTUEwWUdlMnJPRVBadkZqVU1ZZTB6?= =?utf-8?B?QnJjdm9SdmQ5amNGVGlwbDdjVGw0c0tTQXZ3UVdYekpmVmIrNENyaWhvNktR?= =?utf-8?B?cTZXNXNCTjFqak9QeXFZTXRkNW5wV3RlVEo5azh6ZVZ4d2JIZWdhQmlTNXly?= =?utf-8?B?NHNQdnNzSC9HM2VaMVJrRFFXZFArMEFjZmJ1R2Uycng3K2NnZzB4NUM2YzQ2?= =?utf-8?B?dmhBb3RYQlNqemQxakU0Tk43SjQrRGhBaVNwWXVBbmV4SlB0cTRndzd3bW8w?= =?utf-8?B?YjVQc3llQWMyTk5NRjFZakhTRCtWWEw1ZC9ibzk5K21STytYNkxlRzdpRzdj?= =?utf-8?B?eTN1cURxNzNsd1U4ZkRXY1J2M1JNQ2JUWEoxS0hiSkViV2ZuSkg5Q05HeEpG?= =?utf-8?Q?czJEOPp+dSz93oBXavf/caCoJ?= Content-Type: multipart/mixed; boundary="_005_OS3PR01MB62755C6C9A75EB09F7218B589E839OS3PR01MB6275jpnp_" MIME-Version: 1.0 X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OS3PR01MB6275.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d2aa25ab-3abe-4fb5-3db5-08da5fcaf05b X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Jul 2022 03:44:04.6734 (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: zAlqonMdRn+pKgBcCyF4LoNlXFhAigx8sKS7wnKhbpFs0mlxgbYi5zreqTW6RHabcPKCdrhwEFXJPfqwqRPL8Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OSAPR01MB4658 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_005_OS3PR01MB62755C6C9A75EB09F7218B589E839OS3PR01MB6275jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gRnJpLCBKdWwgMSwgMjAyMiBhdCAxNDo0MyBQTSBQZXRlciBTbWl0aCA8c21pdGhwYjIyNTBA Z21haWwuY29tPiB3cm90ZToNCj4gQmVsb3cgYXJlIHNvbWUgcmV2aWV3IGNvbW1lbnRzIGZvciBw YXRjaGVzIHYxNC0wMDAxLCBhbmQgdjE0LTAwMDI6DQoNClRoYW5rcyBmb3IgeW91ciBjb21tZW50 cy4NCg0KPiAxLjEwIC4uLi9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3b3JrZXIuYyAtIGFw cGx5X2Jnd29ya2VyX2ZpbmQNCj4gDQo+ICsgLyoNCj4gKyAqIEZpbmQgZW50cnkgZm9yIHJlcXVl c3RlZCB0cmFuc2FjdGlvbi4NCj4gKyAqLw0KPiArIGVudHJ5ID0gaGFzaF9zZWFyY2goQXBwbHlX b3JrZXJzSGFzaCwgJnhpZCwgSEFTSF9GSU5ELCAmZm91bmQpOw0KPiArIGlmIChmb3VuZCkNCj4g KyB7DQo+ICsgZW50cnktPndzdGF0ZS0+cHN0YXRlLT5zdGF0dXMgPSBBUFBMWV9CR1dPUktFUl9C VVNZOw0KPiArIHJldHVybiBlbnRyeS0+d3N0YXRlOw0KPiArIH0NCj4gKyBlbHNlDQo+ICsgcmV0 dXJuIE5VTEw7DQo+ICt9DQo+IA0KPiBJTU8gaXQgaXMgYW4gdW5leHBlY3RlZCBzaWRlLWVmZmVj dCBmb3IgdGhlIGZ1bmN0aW9uIGNhbGxlZCAiZmluZCIgdG8NCj4gYmUgYWxzbyBtb2RpZnlpbmcg dGhlIHRoaW5nIHRoYXQgaXQgZm91bmQuIElNTyB0aGlzIHNldHRpbmcgQlVTWQ0KPiBzaG91bGQg ZWl0aGVyIGJlIGRvbmUgYnkgdGhlIGNhbGxlciwgb3IgZWxzZSB0aGlzIGZ1bmN0aW9uIG5hbWUg c2hvdWxkDQo+IGJlIHJlbmFtZWQgdG8gbWFrZSBpdCBvYnZpb3VzIHRoYXQgdGhpcyBpcyBkb2lu ZyBtb3JlIHRoYW4ganVzdA0KPiAiZmluZGluZyIgc29tZXRoaW5nLg0KDQpTaW5jZSB3ZSBzZXQg dGhlIHN0YXRlIHRvIEJVU1kgaW4gdGhlIGZ1bmN0aW9uIGFwcGx5X2Jnd29ya2VyX3N0YXJ0IGFu ZCB0aGUNCnN0YXRlIGlzIG5vdCBtb2RpZmllZCAoc2V0IHRvIEZJTklTSEVEKSB1bnRpbCB0aGUg dHJhbnNhY3Rpb24gY29tcGxldGVzLCBJDQp0aGluayB3ZSBkbyBub3QgbmVlZCB0byBzZXQgdGhp cyBzdGF0ZSB0byBCVVNZIGFnYWluIGluIHRoZSBmdW5jdGlvbg0KYXBwbHlfYmd3b3JrZXJfZmlu ZCBkdXJpbmcgYXBwbHlpbmcgdGhlIHRyYW5zYWN0aW9uLg0KU28gSSByZW1vdmVkIGl0IGFuZCBp bnZva2VkIGZ1bmN0aW9uIEFzc2VydC4NCkkgYWxzbyBpbnZva2VkIGZ1bmN0aW9uIEFzc2VydCBp biBmdW5jdGlvbiBhcHBseV9iZ3dvcmtlcl9zdGFydC4NCg0KPiAxLjE2LiBzcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMgLSBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2gN Cj4gDQo+ICsgYm9vbCBpc19zdWJ3b3JrZXIgPSAoc3Vid29ya2VyX2RzbSAhPSBEU01fSEFORExF X0lOVkFMSUQpOw0KPiArDQo+ICsgLyogV2UgZG9uJ3Qgc3VwcG9ydCB0YWJsZSBzeW5jIGluIHN1 YndvcmtlciAqLw0KPiArIEFzc2VydCghKGlzX3N1YndvcmtlciAmJiBPaWRJc1ZhbGlkKHJlbGlk KSkpOw0KPiANCj4gSSdtIG5vdCBzdXJlIHRoZSBjb21tZW50IGlzIGdvb2QuIEl0IHNvdW5kcyBs aWtlIGl0IGlzIHNvbWV0aGluZyB0aGF0DQo+IG1pZ2h0IGJlIHBvc3NpYmxlIGJ1dCBpcyBqdXN0 IGN1cnJlbnQgIm5vdCBzdXBwb3J0ZWQiLiBJbiBmYWN0LCBJDQo+IHRob3VnaHQgdGhpcyBpcyBy ZWFsbHkganVzdCBhIHNhbml0eSBjaGVjayBiZWNhdXNlIHRoZSBjb21iaW5hdGlvbiBvZg0KPiB0 aG9zZSBwYXJhbXMgaXMganVzdCBwbGFpbiB3cm9uZyBpc24ndCBpdD8gTWF5YmUgYSBiZXR0ZXIg Y29tbWVudCBpcw0KPiBqdXN0Og0KPiAvKiBTYW5pdHkgY2hlY2sgKi8NCg0KSW1wcm92ZWQgdGhp cyBjb21tZW50IGFzIGZvbGxvd2luZzoNCmBgYA0KLyogU2FuaXR5IGNoZWNrIDogd2UgZG9uJ3Qg c3VwcG9ydCB0YWJsZSBzeW5jIGluIHN1Yndvcmtlci4gKi8NCmBgYA0KDQo+IDEuMjIgc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAtIHNraXBfeGFjdF9maW5pc2hfbHNu DQo+IA0KPiAgLyoNCj4gICAqIFdlIGVuYWJsZSBza2lwcGluZyBhbGwgZGF0YSBtb2RpZmljYXRp b24gY2hhbmdlcyAoSU5TRVJULCBVUERBVEUsIGV0Yy4pIGZvcg0KPiAgICogdGhlIHN1YnNjcmlw dGlvbiBpZiB0aGUgcmVtb3RlIHRyYW5zYWN0aW9uJ3MgZmluaXNoIExTTiBtYXRjaGVzDQo+IHRo ZSBzdWJza2lwbHNuLg0KPiAgICogT25jZSB3ZSBzdGFydCBza2lwcGluZyBjaGFuZ2VzLCB3ZSBk b24ndCBzdG9wIGl0IHVudGlsIHdlIHNraXAgYWxsDQo+IGNoYW5nZXMgb2YNCj4gICAqIHRoZSB0 cmFuc2FjdGlvbiBldmVuIGlmIHBnX3N1YnNjcmlwdGlvbiBpcyB1cGRhdGVkIGFuZA0KPiBNeVN1 YnNjcmlwdGlvbi0+c2tpcGxzbg0KPiAtICogZ2V0cyBjaGFuZ2VkIG9yIHJlc2V0IGR1cmluZyB0 aGF0LiBBbHNvLCBpbiBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gY2FzZXMsIHdlDQo+IC0gKiBkb24n dCBza2lwIHJlY2VpdmluZyBhbmQgc3Bvb2xpbmcgdGhlIGNoYW5nZXMgc2luY2Ugd2UgZGVjaWRl IHdoZXRoZXIgb3Igbm90DQo+ICsgKiBnZXRzIGNoYW5nZWQgb3IgcmVzZXQgZHVyaW5nIHRoYXQu IEFsc28sIGluIHN0cmVhbWluZyB0cmFuc2FjdGlvbg0KPiBjYXNlcyAoc3RyZWFtaW5nID0gb24p LA0KPiArICogd2UgZG9uJ3Qgc2tpcCByZWNlaXZpbmcgYW5kIHNwb29saW5nIHRoZSBjaGFuZ2Vz IHNpbmNlIHdlIGRlY2lkZQ0KPiB3aGV0aGVyIG9yIG5vdA0KPiAgICogdG8gc2tpcCBhcHBseWlu ZyB0aGUgY2hhbmdlcyB3aGVuIHN0YXJ0aW5nIHRvIGFwcGx5IGNoYW5nZXMuIFRoZQ0KPiBzdWJz a2lwbHNuIGlzDQo+ICAgKiBjbGVhcmVkIGFmdGVyIHN1Y2Nlc3NmdWxseSBza2lwcGluZyB0aGUg dHJhbnNhY3Rpb24gb3IgYXBwbHlpbmcgbm9uLWVtcHR5DQo+ICAgKiB0cmFuc2FjdGlvbi4gVGhl IGxhdHRlciBwcmV2ZW50cyB0aGUgbWlzdGFrZW5seSBzcGVjaWZpZWQgc3Vic2tpcGxzbiBmcm9t DQo+IC0gKiBiZWluZyBsZWZ0Lg0KPiArICogYmVpbmcgbGVmdC4gTm90ZSB0aGF0IHdlIGNhbm5v dCBza2lwIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gaW4gcGFyYWxsZWwNCj4gKyAqIG1vZGUs IGJlY2F1c2Ugd2UgY2Fubm90IGdldCB0aGUgZmluaXNoIExTTiBiZWZvcmUgYXBwbHlpbmcgdGhl IGNoYW5nZXMuDQo+ICAgKi8NCj4gDQo+ICJpbiBwYXJhbGxlbCBtb2RlLCBiZWNhdXNlIiAtPiAi aW4gJ3N0cmVhbWluZyA9IHBhcmFsbGVsJyBtb2RlLCBiZWNhdXNlIg0KDQpOb3Qgc3VyZSBhYm91 dCB0aGlzLg0KDQo+IDEuMjggc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIu YyAtIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZQ0KPiANCj4gKyBpZiAod3N0YXRlKQ0KPiAr IHsNCj4gKyBhcHBseV9iZ3dvcmtlcl9zZW5kX2RhdGEod3N0YXRlLCBzLT5sZW4sIHMtPmRhdGEp Ow0KPiArDQo+ICsgLyoNCj4gKyAqIFdhaXQgZm9yIGFwcGx5IGJhY2tncm91bmQgd29ya2VyIHRv IGZpbmlzaC4gVGhpcyBpcyByZXF1aXJlZCB0bw0KPiArICogbWFpbnRhaW4gY29tbWl0IG9yZGVy IHdoaWNoIGF2b2lkcyBmYWlsdXJlcyBkdWUgdG8gdHJhbnNhY3Rpb24NCj4gKyAqIGRlcGVuZGVu Y2llcyBhbmQgZGVhZGxvY2tzLg0KPiArICovDQo+ICsgYXBwbHlfYmd3b3JrZXJfd2FpdF9mb3Io d3N0YXRlLCBBUFBMWV9CR1dPUktFUl9GSU5JU0hFRCk7DQo+ICsgYXBwbHlfYmd3b3JrZXJfZnJl ZSh3c3RhdGUpOw0KPiANCj4gSSB0aGluayBtYXliZSB0aGUgY29tbWVudCBjYW4gYmUgY2hhbmdl ZCBzbGlnaHRseSwgYW5kIHRoZW4gaXQgY2FuDQo+IG1vdmUgdXAgb25lIGxpbmUgdG8gdGhlIHRv cCBvZiB0aGlzIGNvZGUgYmxvY2sgKGFib3ZlIHRoZSAzDQo+IHN0YXRlbWVudHMpLiBJIHRoaW5r IGl0IHdpbGwgYmVjb21lIG1vcmUgcmVhZGFibGUuDQo+IA0KPiBTVUdHRVNUSU9ODQo+IEFmdGVy IHNlbmRpbmcgdGhlIGRhdGEgdG8gdGhlIGFwcGx5IGJhY2tncm91bmQgd29ya2VyLCB3YWl0IGZv ciB0aGF0DQo+IHdvcmtlciB0byBmaW5pc2guIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIG1haW50YWlu IGNvbW1pdCBvcmRlciB3aGljaA0KPiBhdm9pZHMgZmFpbHVyZXMgZHVlIHRvIHRyYW5zYWN0aW9u IGRlcGVuZGVuY2llcyBhbmQgZGVhZGxvY2tzLg0KDQpJIHRoaW5rIGl0IG1pZ2h0IGJlIGJldHRl ciB0byBhZGQgYSBuZXcgY29tbWVudCBiZWZvcmUgaW52b2tpbmcgZnVuY3Rpb24NCmFwcGx5X2Jn d29ya2VyX3NlbmRfZGF0YS4gSW1wcm92ZSB0aGUgY29tbWVudHMgYXMgeW91IHN1Z2dlc3RlZC4N CkkgaW1wcm92ZWQgdGhpcyBwb2ludCBpbiBmdW5jdGlvbiBhcHBseV9oYW5kbGVfc3RyZWFtX3By ZXBhcmUsDQphcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0IGFuZCBhcHBseV9oYW5kbGVfc3RyZWFt X2NvbW1pdC4gV2hhdCBkbyB5b3UgdGhpbmsNCmFib3V0IGNoYW5naW5nIGl0IGxpa2UgdGhpczoN CmBgYA0KLyogU2VuZCBTVFJFQU0gUFJFUEFSRSBtZXNzYWdlIHRvIHRoZSBhcHBseSBiYWNrZ3Jv dW5kIHdvcmtlci4gKi8NCmFwcGx5X2Jnd29ya2VyX3NlbmRfZGF0YSh3c3RhdGUsIHMtPmxlbiwg cy0+ZGF0YSk7DQoNCi8qDQogKiBBZnRlciBzZW5kaW5nIHRoZSBkYXRhIHRvIHRoZSBhcHBseSBi YWNrZ3JvdW5kIHdvcmtlciwgd2FpdCBmb3INCiAqIHRoYXQgd29ya2VyIHRvIGZpbmlzaC4gVGhp cyBpcyBuZWNlc3NhcnkgdG8gbWFpbnRhaW4gY29tbWl0DQogKiBvcmRlciB3aGljaCBhdm9pZHMg ZmFpbHVyZXMgZHVlIHRvIHRyYW5zYWN0aW9uIGRlcGVuZGVuY2llcyBhbmQNCiAqIGRlYWRsb2Nr cy4NCiAqLw0KYXBwbHlfYmd3b3JrZXJfd2FpdF9mb3Iod3N0YXRlLCBBUFBMWV9CR1dPUktFUl9G SU5JU0hFRCk7DQpgYGANCg0KPiAxLjM0IHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv d29ya2VyLmMgLSBhcHBseV9kaXNwYXRjaA0KPiANCj4gLQ0KPiAgLyoNCj4gICAqIExvZ2ljYWwg cmVwbGljYXRpb24gcHJvdG9jb2wgbWVzc2FnZSBkaXNwYXRjaGVyLg0KPiAgICovDQo+IC1zdGF0 aWMgdm9pZA0KPiArdm9pZA0KPiAgYXBwbHlfZGlzcGF0Y2goU3RyaW5nSW5mbyBzKQ0KPiANCj4g TWF5YmUgcmVtb3ZpbmcgdGhlIHdoaXRlc3BhY2UgaXMgbm90IHJlYWxseSBuZWVkZWQgYXMgcGFy dCBvZiB0aGlzIHBhdGNoPw0KDQpZZXMsIHRoaXMgY2hhbmdlIGlzIG5vdCBuZWNlc3NhcnkgZm9y IHRoaXMgcGF0Y2guDQpCdXQgc2luY2UgdGhpcyBjaGFuZ2UgZG9lcyBub3QgaW52b2x2ZSB0aGUg bW9kaWZpY2F0aW9uIG9mIGNvbW1lbnRzIGFuZCBhY3R1YWwNCmNvZGUsIGl0IGp1c3QgYWRqdXN0 cyB0aGUgYmxhbmsgbGluZSBiZXR3ZWVuIHRoZSBmdW5jdGlvbiBtb2RpZmllZCBieSB0aGlzDQpw YXRjaCBhbmQgdGhlIHByZXZpb3VzIGZ1bmN0aW9uLCBzbyBJIHRoaW5rIGl0IGlzIG9rYXkgaW4g dGhpcyBwYXRjaC4NCg0KPiAyLjEgQ29tbWl0IG1lc3NhZ2UNCj4gDQo+IENoYW5nZSBhbGwgVEFQ IHRlc3RzIHVzaW5nIHRoZSBTVUJTQ1JJUFRJT04gInN0cmVhbWluZyIgb3B0aW9uLCBzbyB0aGV5 DQo+IG5vdyB0ZXN0IGJvdGggJ29uJyBhbmQgJ3BhcmFsbGVsJyB2YWx1ZXMuDQo+IA0KPiAib3B0 aW9uIiAtPiAicGFyYW1ldGVyIg0KDQpTb3JyeSBJIG1pc3NlZCB0aGlzIHBvaW50IHdoZW4gSSB3 YXMgbWVyZ2luZyB0aGUgcGF0Y2hlcy4gSSBtZXJnZWQgdGhpcyBjaGFuZ2UNCmluIHYxNS4NCg0K QXR0YWNoIHRoZSBuZXcgcGF0Y2hlcy4NCkFsc28gaW1wcm92ZWQgdGhlIHBhdGNoZXMgYXMgc3Vn Z2VzdGVkIGluIFsxXSwgWzJdIGFuZCBbM10uDQoNClsxXSAtIGh0dHBzOi8vd3d3LnBvc3RncmVz cWwub3JnL21lc3NhZ2UtaWQvQ0FBNGVLMUtnb3ZhUmNiU3V6eldraTFIVnNvNm9MQWRaMmFQcjFu V3hYMXglM0RWREJRSmclNDBtYWlsLmdtYWlsLmNvbQ0KWzJdIC0gaHR0cHM6Ly93d3cucG9zdGdy ZXNxbC5vcmcvbWVzc2FnZS1pZC9DQUh1dCUyQlB0Uk5BT3dGdEJwX1RuRFdkQzdVcGNUeFBKelFu cm0lM0ROeXRON2NWQnQ1elJRJTQwbWFpbC5nbWFpbC5jb20NClszXSAtIGh0dHBzOi8vd3d3LnBv c3RncmVzcWwub3JnL21lc3NhZ2UtaWQvQ0FIdXQlMkJQdnJ3JTJCdGdDRVlHeHYlMkJuS3JxZy16 YkpkWUVYZWU2bzRpclBBc1lvWGN1VWN3JTQwbWFpbC5nbWFpbC5jb20NCg0KUmVnYXJkcywNCldh bmcgd2VpDQo= --_005_OS3PR01MB62755C6C9A75EB09F7218B589E839OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v15-0001-Perform-streaming-logical-transactions-by-backgr.patch" Content-Description: v15-0001-Perform-streaming-logical-transactions-by-backgr.patch Content-Disposition: attachment; filename="v15-0001-Perform-streaming-logical-transactions-by-backgr.patch"; size=108103; creation-date="Thu, 07 Jul 2022 03:43:00 GMT"; modification-date="Thu, 07 Jul 2022 03:44:01 GMT" Content-Transfer-Encoding: base64 RnJvbSAxMGFjNjI2NjlkYjIzMGQ3M2Y1ZTBmNjVmYjUyZDAxNjQ5YjFlZDZjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjAgQXByIDIwMjIgMTY6NDU6MDcgKzA4MDAKU3ViamVjdDogW1BBVENI IHYxNSAxLzRdIFBlcmZvcm0gc3RyZWFtaW5nIGxvZ2ljYWwgdHJhbnNhY3Rpb25zIGJ5IGJhY2tn cm91bmQKIHdvcmtlcnMKCkN1cnJlbnRseSwgZm9yIGxhcmdlIHRyYW5zYWN0aW9ucywgdGhlIHB1 Ymxpc2hlciBzZW5kcyB0aGUgZGF0YSBpbiBtdWx0aXBsZQpzdHJlYW1zIChjaGFuZ2VzIGRpdmlk ZWQgaW50byBjaHVua3MgZGVwZW5kaW5nIHVwb24gbG9naWNhbF9kZWNvZGluZ193b3JrX21lbSks CmFuZCB0aGVuIG9uIHRoZSBzdWJzY3JpYmVyLXNpZGUsIHRoZSBhcHBseSB3b3JrZXIgd3JpdGVz IHRoZSBjaGFuZ2VzIGludG8KdGVtcG9yYXJ5IGZpbGVzIGFuZCBvbmNlIGl0IHJlY2VpdmVzIHRo ZSBjb21taXQsIGl0IHJlYWRzIGZyb20gdGhlIGZpbGUgYW5kCmFwcGxpZXMgdGhlIGVudGlyZSB0 cmFuc2FjdGlvbi4gVG8gaW1wcm92ZSB0aGUgcGVyZm9ybWFuY2Ugb2Ygc3VjaAp0cmFuc2FjdGlv bnMsIHdlIGNhbiBpbnN0ZWFkIGFsbG93IHRoZW0gdG8gYmUgYXBwbGllZCB2aWEgYmFja2dyb3Vu ZCB3b3JrZXJzLgoKSW4gdGhpcyBhcHByb2FjaCwgd2UgYXNzaWduIGEgbmV3IGFwcGx5IGJhY2tn cm91bmQgd29ya2VyIChpZiBhdmFpbGFibGUpIGFzCnNvb24gYXMgdGhlIHhhY3QncyBmaXJzdCBz dHJlYW0gaXMgcmVjZWl2ZWQgYW5kIHRoZSBtYWluIGFwcGx5IHdvcmtlciB3aWxsIHNlbmQKY2hh bmdlcyB0byB0aGlzIG5ldyB3b3JrZXIgdmlhIHNoYXJlZCBtZW1vcnkuIFRoZSBhcHBseSBiYWNr Z3JvdW5kIHdvcmtlciB3aWxsCmRpcmVjdGx5IGFwcGx5IHRoZSBjaGFuZ2UgaW5zdGVhZCBvZiB3 cml0aW5nIGl0IHRvIHRlbXBvcmFyeSBmaWxlcy4gV2Uga2VlcAp0aGlzIHdvcmtlciBhc3NpZ25l ZCB0aWxsIHRoZSB0cmFuc2FjdGlvbiBjb21taXQgaXMgcmVjZWl2ZWQgYW5kIGFsc28gd2FpdCBm b3IKdGhlIHdvcmtlciB0byBmaW5pc2ggYXQgY29tbWl0LiBUaGlzIHByZXNlcnZlcyBjb21taXQg b3JkZXJpbmcgYW5kIGF2b2lkcwp3cml0aW5nIHRvIGFuZCByZWFkaW5nIGZyb20gZmlsZSBpbiBt b3N0IGNhc2VzLiBXZSBzdGlsbCBuZWVkIHRvIHNwaWxsIGlmIHRoZXJlCmlzIG5vIHdvcmtlciBh dmFpbGFibGUuCgpUaGlzIHBhdGNoIGFsc28gZXh0ZW5kcyB0aGUgU1VCU0NSSVBUSU9OICdzdHJl YW1pbmcnIHBhcmFtZXRlciBzbyB0aGF0IHRoZSB1c2VyCmNhbiBjb250cm9sIHdoZXRoZXIgdG8g YXBwbHkgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiBpbiBhbiBhcHBseSBiYWNrZ3JvdW5kCndv cmtlciBvciBzcGlsbCB0aGUgY2hhbmdlIHRvIGRpc2suIFRoZSB1c2VyIGNhbiBzZXQgdGhlIHN0 cmVhbWluZyBwYXJhbWV0ZXIgdG8KJ29uL29mZicsICdwYXJhbGxlbCcuIFRoZSBwYXJhbWV0ZXIg dmFsdWUgJ3BhcmFsbGVsJyBtZWFucyB0aGUgc3RyZWFtaW5nIHdpbGwKYmUgYXBwbGllZCB2aWEg YW4gYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIsIGlmIGF2YWlsYWJsZS4gVGhlIHBhcmFtZXRlciB2 YWx1ZQonb24nIG1lYW5zIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gd2lsbCBiZSBzcGlsbGVk IHRvIGRpc2suIFRoZSBkZWZhdWx0IHZhbHVlCmlzICdvZmYnIChzYW1lIGFzIGN1cnJlbnQgYmVo YXZpb3VyKS4KLS0tCiBkb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICAg ICAgfCAgMTAgKy0KIGRvYy9zcmMvc2dtbC9jb25maWcuc2dtbCAgICAgICAgICAgICAgICAgICAg ICB8ICAyNSArCiBkb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sICAgICAgICAg fCAgMTAgKwogZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwgICAgICAgICAgICAgICAgICAgIHwg IDE5ICsKIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sICAgICB8ICAy NCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jICAgICAgICAgICAgIHwgIDEz ICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICAgICB8ICA2NiAr LQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jICAgICAgICAgICAgIHwgICAzICsK IHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUgICAgICB8ICAgMSArCiAu Li4vcmVwbGljYXRpb24vbG9naWNhbC9hcHBseWJnd29ya2VyLmMgICAgICAgfCA3NzUgKysrKysr KysrKysrKysrKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jICAg ICAgfCAgMTAgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyAg ICB8IDEzMCArKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMgICAg ICB8ICAyNiArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jICAgICAg IHwgIDQxICstCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMgICAgICAg fCAgMTAgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgICB8 ICAxMCArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwg Njg4ICsrKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bn b3V0cHV0LmMgICB8ICAgOSArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVu dC5jICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMgICAgICAgICAg ICAgICAgICB8ICAxMiArCiBzcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5z YW1wbGUgfCAgIDEgKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAgICAg ICAgIHwgICA2ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oICAgICAg ICAgfCAgMjEgKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oICAg ICB8ICAgMSArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaCAgICAgICAg fCAgMjcgKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCAgICAgICB8 ICAgMSArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vcmlnaW4uaCAgICAgICAgICAgICAgfCAg IDIgKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaCAgICAgICB8ICAg NyArLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggICAgIHwgMTAy ICsrLQogc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oICAgICAgICAgICAgICAgIHwgICAx ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dCAgICB8ICAgMiAr LQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAgIHwgICA1ICsK IDMyIGZpbGVzIGNoYW5nZWQsIDE4NDEgaW5zZXJ0aW9ucygrKSwgMjIwIGRlbGV0aW9ucygtKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHli Z3dvcmtlci5jCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mv c3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAppbmRleCA0ZjNmMzc1YTg0Li44MTVjYWU2MDgyIDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0 YWxvZ3Muc2dtbApAQCAtNzg3MywxMSArNzg3MywxNSBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNl YWJsZT4mbHQ7aXRlcmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4m bAogCiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+ PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgotICAgICAgIDxzdHJ1Y3RmaWVsZD5zdWJz dHJlYW08L3N0cnVjdGZpZWxkPiA8dHlwZT5ib29sPC90eXBlPgorICAgICAgIDxzdHJ1Y3RmaWVs ZD5zdWJzdHJlYW08L3N0cnVjdGZpZWxkPiA8dHlwZT5jaGFyPC90eXBlPgogICAgICAgPC9wYXJh PgogICAgICAgPHBhcmE+Ci0gICAgICAgSWYgdHJ1ZSwgdGhlIHN1YnNjcmlwdGlvbiB3aWxsIGFs bG93IHN0cmVhbWluZyBvZiBpbi1wcm9ncmVzcwotICAgICAgIHRyYW5zYWN0aW9ucworICAgICAg IENvbnRyb2xzIGhvdyB0byBoYW5kbGUgdGhlIHN0cmVhbWluZyBvZiBpbi1wcm9ncmVzcyB0cmFu c2FjdGlvbnM6CisgICAgICAgPGxpdGVyYWw+ZjwvbGl0ZXJhbD4gPSBkaXNhbGxvdyBzdHJlYW1p bmcgb2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLAorICAgICAgIDxsaXRlcmFsPnQ8L2xpdGVy YWw+ID0gc3BpbGwgdGhlIGNoYW5nZXMgb2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIHRvCisg ICAgICAgZGlzayBhbmQgYXBwbHkgYXQgb25jZSBhZnRlciB0aGUgdHJhbnNhY3Rpb24gaXMgY29t bWl0dGVkIG9uIHRoZQorICAgICAgIHB1Ymxpc2hlciwKKyAgICAgICA8bGl0ZXJhbD5wPC9saXRl cmFsPiA9IGFwcGx5IGNoYW5nZXMgZGlyZWN0bHkgdXNpbmcgYSBiYWNrZ3JvdW5kIHdvcmtlcgog ICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggMzdmZDgw Mzg4Yy4uNmJiZDk4NjE5NSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtNDk3MCw2ICs0OTcwLDMxIEBAIEFOWSA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtX3N5bmM8L3JlcGxhY2VhYmxlPiAoIDxy ZXBsYWNlYWJsZSBjbGFzcz0iCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRy eT4KIAorICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtbWF4LWFwcGx5LWJnd29ya2Vycy1wZXIt c3Vic2NyaXB0aW9uIiB4cmVmbGFiZWw9Im1heF9hcHBseV9iZ3dvcmtlcnNfcGVyX3N1YnNjcmlw dGlvbiI+CisgICAgICA8dGVybT48dmFybmFtZT5tYXhfYXBwbHlfYmd3b3JrZXJzX3Blcl9zdWJz Y3JpcHRpb248L3Zhcm5hbWU+ICg8dHlwZT5pbnRlZ2VyPC90eXBlPikKKyAgICAgIDxpbmRleHRl cm0+CisgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+bWF4X2FwcGx5X2Jnd29ya2Vyc19wZXJfc3Vi c2NyaXB0aW9uPC92YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAg ICAgIDwvaW5kZXh0ZXJtPgorICAgICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAg IDxwYXJhPgorICAgICAgICBNYXhpbXVtIG51bWJlciBvZiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtl cnMgcGVyIHN1YnNjcmlwdGlvbi4gVGhpcworICAgICAgICBwYXJhbWV0ZXIgY29udHJvbHMgdGhl IGFtb3VudCBvZiBwYXJhbGxlbGlzbSBvZiB0aGUgc3RyZWFtaW5nIG9mCisgICAgICAgIGluLXBy b2dyZXNzIHRyYW5zYWN0aW9ucyB3aGVuIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIKKyAgICAgICAg PGxpdGVyYWw+c3RyZWFtaW5nID0gcGFyYWxsZWw8L2xpdGVyYWw+LgorICAgICAgIDwvcGFyYT4K KyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIGFwcGx5IGJhY2tncm91bmQgd29ya2VycyBhcmUg dGFrZW4gZnJvbSB0aGUgcG9vbCBkZWZpbmVkIGJ5CisgICAgICAgIDx2YXJuYW1lPm1heF9sb2dp Y2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM8L3Zhcm5hbWU+LgorICAgICAgIDwvcGFyYT4KKyAgICAg ICA8cGFyYT4KKyAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgMi4gVGhpcyBwYXJhbWV0ZXIg Y2FuIG9ubHkgYmUgc2V0IGluIHRoZQorICAgICAgICA8ZmlsZW5hbWU+cG9zdGdyZXNxbC5jb25m PC9maWxlbmFtZT4gZmlsZSBvciBvbiB0aGUgc2VydmVyIGNvbW1hbmQKKyAgICAgICAgbGluZS4K KyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4K KwogICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgICA8L3NlY3QyPgogCmRpZmYgLS1naXQgYS9kb2Mv c3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwt cmVwbGljYXRpb24uc2dtbAppbmRleCBiZGYxZTdiNzI3Li45Mjk5N2Y5Mjk5IDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKQEAgLTExNTMsNiArMTE1MywxNiBAQCBDT05URVhU OiAgcHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luICJwZ18xNjM5 NSIgZHVyaW5nICJJTlNFUgogICAgbWlnaHQgbm90IHZpb2xhdGUgYW55IGNvbnN0cmFpbnQuICBU aGlzIGNhbiBlYXNpbHkgbWFrZSB0aGUgc3Vic2NyaWJlcgogICAgaW5jb25zaXN0ZW50LgogICA8 L3BhcmE+CisKKyAgPHBhcmE+CisgICBXaGVuIHRoZSBzdHJlYW1pbmcgbW9kZSBpcyA8bGl0ZXJh bD5wYXJhbGxlbDwvbGl0ZXJhbD4sIHRoZSBmaW5pc2ggTFNOIG9mCisgICBmYWlsZWQgdHJhbnNh Y3Rpb25zIG1heSBub3QgYmUgbG9nZ2VkLiBJbiB0aGF0IGNhc2UsIGl0IG1heSBiZSBuZWNlc3Nh cnkgdG8KKyAgIGNoYW5nZSB0aGUgc3RyZWFtaW5nIG1vZGUgdG8gPGxpdGVyYWw+b248L2xpdGVy YWw+IGFuZCBjYXVzZSB0aGUgc2FtZQorICAgY29uZmxpY3RzIGFnYWluIHNvIHRoZSBmaW5pc2gg TFNOIG9mIHRoZSBmYWlsZWQgdHJhbnNhY3Rpb24gd2lsbCBiZSB3cml0dGVuCisgICB0byB0aGUg c2VydmVyIGxvZy4gRm9yIHRoZSB1c2FnZSBvZiBmaW5pc2ggTFNOLCBwbGVhc2UgcmVmZXIgdG8g PGxpbmsKKyAgIGxpbmtlbmQ9InNxbC1hbHRlcnN1YnNjcmlwdGlvbiI+PGNvbW1hbmQ+QUxURVIg U1VCU0NSSVBUSU9OIC4uLgorICAgU0tJUDwvY29tbWFuZD48L2xpbms+LgorICA8L3BhcmE+CiAg PC9zZWN0MT4KIAogIDxzZWN0MSBpZD0ibG9naWNhbC1yZXBsaWNhdGlvbi1yZXN0cmljdGlvbnMi PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwgYi9kb2Mvc3JjL3NnbWwv cHJvdG9jb2wuc2dtbAppbmRleCBjMGI4OWEzYzAxLi43ZTg4YmE5NjMxIDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dt bApAQCAtNjgwOSw2ICs2ODA5LDI1IEBAIHBzcWwgImRibmFtZT1wb3N0Z3JlcyByZXBsaWNhdGlv bj1kYXRhYmFzZSIgLWMgIklERU5USUZZX1NZU1RFTTsiCiAgICAgICAgPC9saXN0aXRlbT4KICAg ICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgIDx0ZXJt PkludDY0IChYTG9nUmVjUHRyKTwvdGVybT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxw YXJhPgorICAgICAgICAgVGhlIExTTiBvZiB0aGUgYWJvcnQuCisgICAgICAgIDwvcGFyYT4KKyAg ICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgIDx2YXJsaXN0 ZW50cnk+CisgICAgICAgPHRlcm0+SW50NjQgKFRpbWVzdGFtcFR6KTwvdGVybT4KKyAgICAgICA8 bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgQWJvcnQgdGltZXN0YW1wIG9mIHRo ZSB0cmFuc2FjdGlvbi4gVGhlIHZhbHVlIGlzIGluIG51bWJlcgorICAgICAgICAgb2YgbWljcm9z ZWNvbmRzIHNpbmNlIFBvc3RncmVTUUwgZXBvY2ggKDIwMDAtMDEtMDEpLgorICAgICAgICA8L3Bh cmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgICA8 dmFybGlzdGVudHJ5PgogICAgICAgIDx0ZXJtPkludDMyIChUcmFuc2FjdGlvbklkKTwvdGVybT4K ICAgICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9z dWJzY3JpcHRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5z Z21sCmluZGV4IDM0YjMyNjRiMjYuLjcxZGQ0YWNhODEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3Jl YXRlX3N1YnNjcmlwdGlvbi5zZ21sCkBAIC0yMTcsMTMgKzIxNywyOSBAQCBDUkVBVEUgU1VCU0NS SVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdWJzY3JpcHRpb25fbmFtZTwv cmVwbGFjZWFibAogICAgICAgIDwvdmFybGlzdGVudHJ5PgogCiAgICAgICAgPHZhcmxpc3RlbnRy eT4KLSAgICAgICAgPHRlcm0+PGxpdGVyYWw+c3RyZWFtaW5nPC9saXRlcmFsPiAoPHR5cGU+Ym9v bGVhbjwvdHlwZT4pPC90ZXJtPgorICAgICAgICA8dGVybT48bGl0ZXJhbD5zdHJlYW1pbmc8L2xp dGVyYWw+ICg8dHlwZT5lbnVtPC90eXBlPik8L3Rlcm0+CiAgICAgICAgIDxsaXN0aXRlbT4KICAg ICAgICAgIDxwYXJhPgogICAgICAgICAgIFNwZWNpZmllcyB3aGV0aGVyIHRvIGVuYWJsZSBzdHJl YW1pbmcgb2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zCi0gICAgICAgICAgZm9yIHRoaXMgc3Vi c2NyaXB0aW9uLiAgQnkgZGVmYXVsdCwgYWxsIHRyYW5zYWN0aW9ucwotICAgICAgICAgIGFyZSBm dWxseSBkZWNvZGVkIG9uIHRoZSBwdWJsaXNoZXIgYW5kIG9ubHkgdGhlbiBzZW50IHRvIHRoZQot ICAgICAgICAgIHN1YnNjcmliZXIgYXMgYSB3aG9sZS4KKyAgICAgICAgICBmb3IgdGhpcyBzdWJz Y3JpcHRpb24uICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyA8bGl0ZXJhbD5vZmY8L2xpdGVyYWw+LAor ICAgICAgICAgIG1lYW5pbmcgYWxsIHRyYW5zYWN0aW9ucyBhcmUgZnVsbHkgZGVjb2RlZCBvbiB0 aGUgcHVibGlzaGVyIGFuZCBvbmx5CisgICAgICAgICAgdGhlbiBzZW50IHRvIHRoZSBzdWJzY3Jp YmVyIGFzIGEgd2hvbGUuCisgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgIDxwYXJhPgorICAg ICAgICAgIElmIHNldCB0byA8bGl0ZXJhbD5vbjwvbGl0ZXJhbD4sIHRoZSBpbmNvbWluZyBjaGFu Z2VzIGFyZSB3cml0dGVuIHRvCisgICAgICAgICAgdGVtcG9yYXJ5IGZpbGVzIGFuZCB0aGVuIGFw cGxpZWQgb25seSBhZnRlciB0aGUgdHJhbnNhY3Rpb24gaXMKKyAgICAgICAgICBjb21taXR0ZWQg b24gdGhlIHB1Ymxpc2hlci4KKyAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgPHBhcmE+Cisg ICAgICAgICAgSWYgc2V0IHRvIDxsaXRlcmFsPnBhcmFsbGVsPC9saXRlcmFsPiwgaW5jb21pbmcg Y2hhbmdlcyBhcmUgZGlyZWN0bHkKKyAgICAgICAgICBhcHBsaWVkIHZpYSBvbmUgb2YgdGhlIGFw cGx5IGJhY2tncm91bmQgd29ya2VycywgaWYgYXZhaWxhYmxlLiBJZiBubworICAgICAgICAgIGJh Y2tncm91bmQgd29ya2VyIGlzIGZyZWUgdG8gaGFuZGxlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0 aGVuIHRoZQorICAgICAgICAgIGNoYW5nZXMgYXJlIHdyaXR0ZW4gdG8gdGVtcG9yYXJ5IGZpbGVz IGFuZCBhcHBsaWVkIGFmdGVyIHRoZQorICAgICAgICAgIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRl ZC4gTm90ZSB0aGF0IGlmIGFuIGVycm9yIGhhcHBlbnMgd2hlbgorICAgICAgICAgIGFwcGx5aW5n IGNoYW5nZXMgaW4gYSBiYWNrZ3JvdW5kIHdvcmtlciwgdGhlIGZpbmlzaCBMU04gb2YgdGhlCisg ICAgICAgICAgcmVtb3RlIHRyYW5zYWN0aW9uIG1pZ2h0IG5vdCBiZSByZXBvcnRlZCBpbiB0aGUg c2VydmVyIGxvZy4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAg ICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3hhY3QuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYwppbmRleCAxMTZkZTEx NzViLi4zZTYxYTU3YjUwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 YWN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCkBAIC0xNzExLDYg KzE3MTEsNyBAQCBSZWNvcmRUcmFuc2FjdGlvbkFib3J0KGJvb2wgaXNTdWJYYWN0KQogCWludAkJ CW5jaGlsZHJlbjsKIAlUcmFuc2FjdGlvbklkICpjaGlsZHJlbjsKIAlUaW1lc3RhbXBUeiB4YWN0 X3RpbWU7CisJYm9vbAkJcmVwbG9yaWdpbjsKIAogCS8qCiAJICogSWYgd2UgaGF2ZW4ndCBiZWVu IGFzc2lnbmVkIGFuIFhJRCwgbm9ib2R5IHdpbGwgY2FyZSB3aGV0aGVyIHdlIGFib3J0ZWQKQEAg LTE3NDEsNiArMTc0MiwxMyBAQCBSZWNvcmRUcmFuc2FjdGlvbkFib3J0KGJvb2wgaXNTdWJYYWN0 KQogCQllbG9nKFBBTklDLCAiY2Fubm90IGFib3J0IHRyYW5zYWN0aW9uICV1LCBpdCB3YXMgYWxy ZWFkeSBjb21taXR0ZWQiLAogCQkJIHhpZCk7CiAKKwkvKgorCSAqIEFyZSB3ZSB1c2luZyB0aGUg cmVwbGljYXRpb24gb3JpZ2lucyBmZWF0dXJlPyAgT3IsIGluIG90aGVyIHdvcmRzLAorCSAqIGFy ZSB3ZSByZXBsYXlpbmcgcmVtb3RlIGFjdGlvbnM/CisJICovCisJcmVwbG9yaWdpbiA9IChyZXBs b3JpZ2luX3Nlc3Npb25fb3JpZ2luICE9IEludmFsaWRSZXBPcmlnaW5JZCAmJgorCQkJCSAgcmVw bG9yaWdpbl9zZXNzaW9uX29yaWdpbiAhPSBEb05vdFJlcGxpY2F0ZUlkKTsKKwogCS8qIEZldGNo IHRoZSBkYXRhIHdlIG5lZWQgZm9yIHRoZSBhYm9ydCByZWNvcmQgKi8KIAlucmVscyA9IHNtZ3JH ZXRQZW5kaW5nRGVsZXRlcyhmYWxzZSwgJnJlbHMpOwogCW5jaGlsZHJlbiA9IHhhY3RHZXRDb21t aXR0ZWRDaGlsZHJlbigmY2hpbGRyZW4pOwpAQCAtMTc2NSw2ICsxNzczLDExIEBAIFJlY29yZFRy YW5zYWN0aW9uQWJvcnQoYm9vbCBpc1N1YlhhY3QpCiAJCQkJCSAgIE15WGFjdEZsYWdzLCBJbnZh bGlkVHJhbnNhY3Rpb25JZCwKIAkJCQkJICAgTlVMTCk7CiAKKwlpZiAocmVwbG9yaWdpbikKKwkJ LyogTW92ZSBMU05zIGZvcndhcmQgZm9yIHRoaXMgcmVwbGljYXRpb24gb3JpZ2luICovCisJCXJl cGxvcmlnaW5fc2Vzc2lvbl9hZHZhbmNlKHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fbHNuLAor CQkJCQkJCQkgICBYYWN0TGFzdFJlY0VuZCk7CisKIAkvKgogCSAqIFJlcG9ydCB0aGUgbGF0ZXN0 IGFzeW5jIGFib3J0IExTTiwgc28gdGhhdCB0aGUgV0FMIHdyaXRlciBrbm93cyB0bwogCSAqIGZs dXNoIHRoaXMgYWJvcnQuIFRoZXJlJ3Mgbm90aGluZyB0byBiZSBnYWluZWQgYnkgZGVsYXlpbmcg dGhpcywgc2luY2UKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlv bmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwppbmRleCBi ZGMxMjA4NzI0Li41ZjM0OTA2N2NjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9z dWJzY3JpcHRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9u Y21kcy5jCkBAIC04Myw3ICs4Myw3IEBAIHR5cGVkZWYgc3RydWN0IFN1Yk9wdHMKIAlib29sCQlj b3B5X2RhdGE7CiAJYm9vbAkJcmVmcmVzaDsKIAlib29sCQliaW5hcnk7Ci0JYm9vbAkJc3RyZWFt aW5nOworCWNoYXIJCXN0cmVhbWluZzsKIAlib29sCQl0d29waGFzZTsKIAlib29sCQlkaXNhYmxl b25lcnI7CiAJWExvZ1JlY1B0cglsc247CkBAIC05NSw2ICs5NSw2MiBAQCBzdGF0aWMgTGlzdCAq bWVyZ2VfcHVibGljYXRpb25zKExpc3QgKm9sZHB1Ymxpc3QsIExpc3QgKm5ld3B1Ymxpc3QsIGJv b2wgYWRkcHViLAogc3RhdGljIHZvaWQgUmVwb3J0U2xvdENvbm5lY3Rpb25FcnJvcihMaXN0ICpy c3RhdGVzLCBPaWQgc3ViaWQsIGNoYXIgKnNsb3RuYW1lLCBjaGFyICplcnIpOwogCiAKKy8qCisg KiBFeHRyYWN0IHRoZSBzdHJlYW1pbmcgbW9kZSB2YWx1ZSBmcm9tIGEgRGVmRWxlbS4gIFRoaXMg aXMgbGlrZQorICogZGVmR2V0Qm9vbGVhbigpIGJ1dCBhbHNvIGFjY2VwdHMgdGhlIHNwZWNpYWwg dmFsdWUgb2YgInBhcmFsbGVsIi4KKyAqLworc3RhdGljIGNoYXIKK2RlZkdldFN0cmVhbWluZ01v ZGUoRGVmRWxlbSAqZGVmKQoreworCS8qCisJICogSWYgbm8gdmFsdWUgZ2l2ZW4sIGFzc3VtZSAi dHJ1ZSIgaXMgbWVhbnQuCisJICovCisJaWYgKGRlZi0+YXJnID09IE5VTEwpCisJCXJldHVybiBT VUJTVFJFQU1fT047CisKKwkvKgorCSAqIEFsbG93IDAsIDEsICJmYWxzZSIsICJ0cnVlIiwgIm9m ZiIsICJvbiIgb3IgInBhcmFsbGVsIi4KKwkgKi8KKwlzd2l0Y2ggKG5vZGVUYWcoZGVmLT5hcmcp KQorCXsKKwkJY2FzZSBUX0ludGVnZXI6CisJCQlzd2l0Y2ggKGludFZhbChkZWYtPmFyZykpCisJ CQl7CisJCQkJY2FzZSAwOgorCQkJCQlyZXR1cm4gU1VCU1RSRUFNX09GRjsKKwkJCQljYXNlIDE6 CisJCQkJCXJldHVybiBTVUJTVFJFQU1fT047CisJCQkJZGVmYXVsdDoKKwkJCQkJLyogb3RoZXJ3 aXNlLCBlcnJvciBvdXQgYmVsb3cgKi8KKwkJCQkJYnJlYWs7CisJCQl9CisJCQlicmVhazsKKwkJ ZGVmYXVsdDoKKwkJCXsKKwkJCQljaGFyCSAgICpzdmFsID0gZGVmR2V0U3RyaW5nKGRlZik7CisK KwkJCQkvKgorCQkJCSAqIFRoZSBzZXQgb2Ygc3RyaW5ncyBhY2NlcHRlZCBoZXJlIHNob3VsZCBt YXRjaCB1cCB3aXRoIHRoZQorCQkJCSAqIGdyYW1tYXIncyBvcHRfYm9vbGVhbl9vcl9zdHJpbmcg cHJvZHVjdGlvbi4KKwkJCQkgKi8KKwkJCQlpZiAocGdfc3RyY2FzZWNtcChzdmFsLCAiZmFsc2Ui KSA9PSAwIHx8CisJCQkJCXBnX3N0cmNhc2VjbXAoc3ZhbCwgIm9mZiIpID09IDApCisJCQkJCXJl dHVybiBTVUJTVFJFQU1fT0ZGOworCQkJCWlmIChwZ19zdHJjYXNlY21wKHN2YWwsICJ0cnVlIikg PT0gMCB8fAorCQkJCQlwZ19zdHJjYXNlY21wKHN2YWwsICJvbiIpID09IDApCisJCQkJCXJldHVy biBTVUJTVFJFQU1fT047CisJCQkJaWYgKHBnX3N0cmNhc2VjbXAoc3ZhbCwgInBhcmFsbGVsIikg PT0gMCkKKwkJCQkJcmV0dXJuIFNVQlNUUkVBTV9QQVJBTExFTDsKKwkJCX0KKwkJCWJyZWFrOwor CX0KKwllcmVwb3J0KEVSUk9SLAorCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAor CQkJIGVycm1zZygiJXMgcmVxdWlyZXMgYSBCb29sZWFuIHZhbHVlIG9yIFwicGFyYWxsZWxcIiIs CisJCQkJCWRlZi0+ZGVmbmFtZSkpKTsKKwlyZXR1cm4gU1VCU1RSRUFNX09GRjsJCS8qIGtlZXAg Y29tcGlsZXIgcXVpZXQgKi8KK30KKwogLyoKICAqIENvbW1vbiBvcHRpb24gcGFyc2luZyBmdW5j dGlvbiBmb3IgQ1JFQVRFIGFuZCBBTFRFUiBTVUJTQ1JJUFRJT04gY29tbWFuZHMuCiAgKgpAQCAt MTMyLDcgKzE4OCw3IEBAIHBhcnNlX3N1YnNjcmlwdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBz dGF0ZSwgTGlzdCAqc3RtdF9vcHRpb25zLAogCWlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VC T1BUX0JJTkFSWSkpCiAJCW9wdHMtPmJpbmFyeSA9IGZhbHNlOwogCWlmIChJc1NldChzdXBwb3J0 ZWRfb3B0cywgU1VCT1BUX1NUUkVBTUlORykpCi0JCW9wdHMtPnN0cmVhbWluZyA9IGZhbHNlOwor CQlvcHRzLT5zdHJlYW1pbmcgPSBTVUJTVFJFQU1fT0ZGOwogCWlmIChJc1NldChzdXBwb3J0ZWRf b3B0cywgU1VCT1BUX1RXT1BIQVNFX0NPTU1JVCkpCiAJCW9wdHMtPnR3b3BoYXNlID0gZmFsc2U7 CiAJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJPUFRfRElTQUJMRV9PTl9FUlIpKQpAQCAt MjMzLDcgKzI4OSw3IEBAIHBhcnNlX3N1YnNjcmlwdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBz dGF0ZSwgTGlzdCAqc3RtdF9vcHRpb25zLAogCQkJCWVycm9yQ29uZmxpY3RpbmdEZWZFbGVtKGRl ZmVsLCBwc3RhdGUpOwogCiAJCQlvcHRzLT5zcGVjaWZpZWRfb3B0cyB8PSBTVUJPUFRfU1RSRUFN SU5HOwotCQkJb3B0cy0+c3RyZWFtaW5nID0gZGVmR2V0Qm9vbGVhbihkZWZlbCk7CisJCQlvcHRz LT5zdHJlYW1pbmcgPSBkZWZHZXRTdHJlYW1pbmdNb2RlKGRlZmVsKTsKIAkJfQogCQllbHNlIGlm IChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJ0d29fcGhhc2UiKSA9PSAwKQogCQl7CkBAIC02MDAs NyArNjU2LDcgQEAgQ3JlYXRlU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRl U3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vi b3duZXIgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0ob3duZXIpOwogCXZhbHVlc1tBbnVtX3BnX3N1 YnNjcmlwdGlvbl9zdWJlbmFibGVkIC0gMV0gPSBCb29sR2V0RGF0dW0ob3B0cy5lbmFibGVkKTsK IAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViYmluYXJ5IC0gMV0gPSBCb29sR2V0RGF0 dW0ob3B0cy5iaW5hcnkpOwotCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJzdHJlYW0g LSAxXSA9IEJvb2xHZXREYXR1bShvcHRzLnN0cmVhbWluZyk7CisJdmFsdWVzW0FudW1fcGdfc3Vi c2NyaXB0aW9uX3N1YnN0cmVhbSAtIDFdID0gQ2hhckdldERhdHVtKG9wdHMuc3RyZWFtaW5nKTsK IAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3VidHdvcGhhc2VzdGF0ZSAtIDFdID0KIAkJ Q2hhckdldERhdHVtKG9wdHMudHdvcGhhc2UgPwogCQkJCQkgTE9HSUNBTFJFUF9UV09QSEFTRV9T VEFURV9QRU5ESU5HIDoKQEAgLTEwNTksNyArMTExNSw3IEBAIEFsdGVyU3Vic2NyaXB0aW9uKFBh cnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCQkJCWlmIChJ c1NldChvcHRzLnNwZWNpZmllZF9vcHRzLCBTVUJPUFRfU1RSRUFNSU5HKSkKIAkJCQl7CiAJCQkJ CXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJzdHJlYW0gLSAxXSA9Ci0JCQkJCQlCb29s R2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcpOworCQkJCQkJQ2hhckdldERhdHVtKG9wdHMuc3RyZWFt aW5nKTsKIAkJCQkJcmVwbGFjZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vic3RyZWFtIC0gMV0g PSB0cnVlOwogCQkJCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dv cmtlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCmluZGV4IDQwNjAxYWVm ZDkuLjQwY2NiODk5M2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3Jr ZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKQEAgLTEyOCw2ICsx MjgsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0CiAJfSwKIAl7CiAJCSJBcHBseVdvcmtlck1haW4i LCBBcHBseVdvcmtlck1haW4KKwl9LAorCXsKKwkJIkFwcGx5Qmd3b3JrZXJNYWluIiwgQXBwbHlC Z3dvcmtlck1haW4KIAl9CiB9OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtl ZmlsZQppbmRleCBjNGUyZmRlYjcxLi5jYmZiNWQ3OTRlIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvTWFrZWZpbGUKQEAgLTE1LDYgKzE1LDcgQEAgaW5jbHVkZSAkKHRvcF9idWls ZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAogb3ZlcnJpZGUgQ1BQRkxBR1MgOj0gLUkkKHNyY2Rp cikgJChDUFBGTEFHUykKIAogT0JKUyA9IFwKKwlhcHBseWJnd29ya2VyLm8gXAogCWRlY29kZS5v IFwKIAlsYXVuY2hlci5vIFwKIAlsb2dpY2FsLm8gXApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9hcHBseWJnd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2FwcGx5Ymd3b3JrZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwLi5kZmE0OWJlOThjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9hcHBseWJnd29ya2VyLmMKQEAgLTAsMCArMSw3NzUgQEAKKy8qLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICogYXBwbHliZ3dvcmtlci5jCisgKiAgICAgU3VwcG9ydCByb3V0aW5l cyBmb3IgYXBwbHlpbmcgeGFjdCBieSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcgorICoKKyAqIENv cHlyaWdodCAoYykgMjAxNi0yMDIyLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91 cAorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvYXBwbHliZ3dvcmtlci5jCisgKgorICogVGhpcyBmaWxlIGNvbnRhaW5zIHJvdXRpbmVz IHRoYXQgYXJlIGludGVuZGVkIHRvIHN1cHBvcnQgc2V0dGluZyB1cCwgdXNpbmcsCisgKiBhbmQg dGVhcmluZyBkb3duIGEgQXBwbHlCZ3dvcmtlclN0YXRlLgorICoKKyAqIFJlZmVyIHRvIHRoZSBj b21tZW50cyBpbiBmaWxlIGhlYWRlciBvZiBsb2dpY2FsL3dvcmtlci5jIHRvIHNlZSBtb3JlCisg KiBpbmZvcm1hdGlvbiBhYm91dCBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4KKyAqCisgKi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImxp YnBxL3BxZm9ybWF0LmgiCisjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKKyNpbmNsdWRlICJwZ3N0 YXQuaCIKKyNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgorI2luY2x1ZGUgInJlcGxp Y2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3 b3JrZXIuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9vcmlnaW4uaCIKKyNpbmNsdWRlICJyZXBs aWNhdGlvbi93YWxyZWNlaXZlci5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dvcmtlcl9pbnRl cm5hbC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9j YXJyYXkuaCIKKyNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCisjaW5jbHVkZSAidXRpbHMvaW52 YWwuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL3Jlc293 bmVyLmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKworI2RlZmluZSBQR19MT0dJQ0FM X0FQUExZX1NITV9NQUdJQyAweDc5ZmIyNDQ3IC8vIFRPRE8gQ29uc2lkZXIgY2hhbmdlCisKKy8q CisgKiBEU00ga2V5cyBmb3IgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuICBVbmxpa2Ugb3RoZXIg cGFyYWxsZWwgZXhlY3V0aW9uIGNvZGUsCisgKiBzaW5jZSB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5 IGFib3V0IERTTSBrZXlzIGNvbmZsaWN0aW5nIHdpdGggcGxhbl9ub2RlX2lkIHdlCisgKiBjYW4g dXNlIHNtYWxsIGludGVnZXJzLgorICovCisjZGVmaW5lIEFQUExZX0JHV09SS0VSX0tFWV9TSEFS RUQJMQorI2RlZmluZSBBUFBMWV9CR1dPUktFUl9LRVlfTVEJCTIKKworLyogUXVldWUgc2l6ZSBv ZiBEU00sIDE2IE1CIGZvciBub3cuICovCisjZGVmaW5lIERTTV9RVUVVRV9TSVpFCTE2MDAwMDAw MAorCisvKgorICogVGhlcmUgYXJlIHRocmVlIGZpZWxkcyBpbiBtZXNzYWdlOiBzdGFydF9sc24s IGVuZF9sc24gYW5kIHNlbmRfdGltZS4gQmVjYXVzZQorICogd2UgaGF2ZSB1cGRhdGVkIHRoZXNl IHN0YXRpc3RpY3MgaW4gYXBwbHkgd29ya2VyLCB3ZSBjb3VsZCBpZ25vcmUgdGhlc2UKKyAqIGZp ZWxkcyBpbiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4gKHNlZSBmdW5jdGlvbiBMb2dpY2FsUmVw QXBwbHlMb29wKQorICovCisjZGVmaW5lIElHTk9SRV9TSVpFX0lOX01FU1NBR0UgKDMgKiBzaXpl b2YodWludDY0KSkKKworLyoKKyAqIEVudHJ5IGZvciBhIGhhc2ggdGFibGUgd2UgdXNlIHRvIG1h cCBmcm9tIHhpZCB0byBvdXIgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIKKyAqIHN0YXRlLgorICov Cit0eXBlZGVmIHN0cnVjdCBBcHBseUJnd29ya2VyRW50cnkKK3sKKwlUcmFuc2FjdGlvbklkIHhp ZDsKKwlBcHBseUJnd29ya2VyU3RhdGUgKndzdGF0ZTsKK30gQXBwbHlCZ3dvcmtlckVudHJ5Owor CisvKiBBcHBseSBiYWNrZ3JvdW5kIHdvcmtlcnMgaGFzaCB0YWJsZSAoaW5pdGlhbGl6ZWQgb24g Zmlyc3QgdXNlKSAqLworc3RhdGljIEhUQUIgKkFwcGx5V29ya2Vyc0hhc2ggPSBOVUxMOworc3Rh dGljIExpc3QgKkFwcGx5V29ya2Vyc0ZyZWVMaXN0ID0gTklMOworc3RhdGljIExpc3QgKkFwcGx5 V29ya2Vyc0xpc3QgPSBOSUw7CisKKy8qCisgKiBJbmZvcm1hdGlvbiBzaGFyZWQgYmV0d2VlbiBt YWluIGFwcGx5IHdvcmtlciBhbmQgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuCisgKi8KK3ZvbGF0 aWxlIEFwcGx5Qmd3b3JrZXJTaGFyZWQgKk15UGFyYWxsZWxTdGF0ZSA9IE5VTEw7CisKK0xpc3QJ ICAgKnN1YnhhY3RsaXN0ID0gTklMOworCitzdGF0aWMgYm9vbCBhcHBseV9iZ3dvcmtlcl9jYW5f c3RhcnQoVHJhbnNhY3Rpb25JZCB4aWQpOworc3RhdGljIEFwcGx5Qmd3b3JrZXJTdGF0ZSAqYXBw bHlfYmd3b3JrZXJfc2V0dXAodm9pZCk7CitzdGF0aWMgdm9pZCBhcHBseV9iZ3dvcmtlcl9zZXR1 cF9kc20oQXBwbHlCZ3dvcmtlclN0YXRlICp3c3RhdGUpOworCisvKgorICogQ2hlY2sgaWYgc3Rh cnRpbmcgYSBuZXcgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgaXMgYWxsb3dlZC4KKyAqLworc3Rh dGljIGJvb2wKK2FwcGx5X2Jnd29ya2VyX2Nhbl9zdGFydChUcmFuc2FjdGlvbklkIHhpZCkKK3sK KwlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkpCisJCXJldHVybiBmYWxzZTsKKworCS8q CisJICogRG9uJ3Qgc3RhcnQgYSBuZXcgYmFja2dyb3VuZCB3b3JrZXIgaWYgbm90IGluIHN0cmVh bWluZyBwYXJhbGxlbCBtb2RlLgorCSAqLworCWlmIChNeVN1YnNjcmlwdGlvbi0+c3RyZWFtICE9 IFNVQlNUUkVBTV9QQVJBTExFTCkKKwkJcmV0dXJuIGZhbHNlOworCisJLyoKKwkgKiBEb24ndCBz dGFydCBhIG5ldyBiYWNrZ3JvdW5kIHdvcmtlciBpZiB1c2VyIGhhcyBzZXQgc2tpcGxzbiBhcyBp dCdzCisJICogcG9zc2libGUgdGhhdCB1c2VyIHdhbnQgdG8gc2tpcCB0aGUgc3RyZWFtaW5nIHRy YW5zYWN0aW9uLiBGb3IKKwkgKiBzdHJlYW1pbmcgdHJhbnNhY3Rpb24sIHdlIG5lZWQgdG8gc3Bp bGwgdGhlIHRyYW5zYWN0aW9uIHRvIGRpc2sgc28gdGhhdAorCSAqIHdlIGNhbiBnZXQgdGhlIGxh c3QgTFNOIG9mIHRoZSB0cmFuc2FjdGlvbiB0byBqdWRnZSB3aGV0aGVyIHRvIHNraXAKKwkgKiBi ZWZvcmUgc3RhcnRpbmcgdG8gYXBwbHkgdGhlIGNoYW5nZS4KKwkgKi8KKwlpZiAoIVhMb2dSZWNQ dHJJc0ludmFsaWQoTXlTdWJzY3JpcHRpb24tPnNraXBsc24pKQorCQlyZXR1cm4gZmFsc2U7CisK KwkvKgorCSAqIEZvciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIHRoYXQgYXJlIGJlaW5nIGFwcGxp ZWQgaW4gYXBwbHkgYmFja2dyb3VuZAorCSAqIHdvcmtlciwgd2UgY2Fubm90IGRlY2lkZSB3aGV0 aGVyIHRvIGFwcGx5IHRoZSBjaGFuZ2UgZm9yIGEgcmVsYXRpb24KKwkgKiB0aGF0IGlzIG5vdCBp biB0aGUgUkVBRFkgc3RhdGUgKHNlZSBzaG91bGRfYXBwbHlfY2hhbmdlc19mb3JfcmVsKSBhcyB3 ZQorCSAqIHdvbid0IGtub3cgcmVtb3RlX2ZpbmFsX2xzbiBieSB0aGF0IHRpbWUuIFNvLCB3ZSBk b24ndCBzdGFydCBuZXcgYXBwbHkKKwkgKiBiYWNrZ3JvdW5kIHdvcmtlciBpbiB0aGlzIGNhc2Uu CisJICovCisJaWYgKCFBbGxUYWJsZXN5bmNzUmVhZHkoKSkKKwkJcmV0dXJuIGZhbHNlOworCisJ cmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBUcnkgdG8gc3RhcnQgYW4gYXBwbHkgYmFja2dyb3Vu ZCB3b3JrZXIgYW5kLCBpZiBzdWNjZXNzZnVsLCBjYWNoZSBpdCBpbgorICogQXBwbHlXb3JrZXJz SGFzaCBrZXllZCBieSB0aGUgc3BlY2lmaWVkIHhpZC4KKyAqLworQXBwbHlCZ3dvcmtlclN0YXRl ICoKK2FwcGx5X2Jnd29ya2VyX3N0YXJ0KFRyYW5zYWN0aW9uSWQgeGlkKQoreworCWJvb2wJCWZv dW5kOworCUFwcGx5Qmd3b3JrZXJTdGF0ZSAqd3N0YXRlOworCUFwcGx5Qmd3b3JrZXJFbnRyeSAq ZW50cnkgPSBOVUxMOworCisJaWYgKCFhcHBseV9iZ3dvcmtlcl9jYW5fc3RhcnQoeGlkKSkKKwkJ cmV0dXJuIE5VTEw7CisKKwkvKiBGaXJzdCB0aW1lIHRocm91Z2gsIGluaXRpYWxpemUgYXBwbHkg d29ya2VycyBoYXNodGFibGUgKi8KKwlpZiAoQXBwbHlXb3JrZXJzSGFzaCA9PSBOVUxMKQorCXsK KwkJSEFTSENUTAkJY3RsOworCisJCU1lbVNldCgmY3RsLCAwLCBzaXplb2YoY3RsKSk7CisJCWN0 bC5rZXlzaXplID0gc2l6ZW9mKFRyYW5zYWN0aW9uSWQpOworCQljdGwuZW50cnlzaXplID0gc2l6 ZW9mKEFwcGx5Qmd3b3JrZXJFbnRyeSk7CisJCWN0bC5oY3h0ID0gQXBwbHlDb250ZXh0OworCisJ CUFwcGx5V29ya2Vyc0hhc2ggPSBoYXNoX2NyZWF0ZSgibG9naWNhbCBhcHBseSB3b3JrZXJzIGhh c2giLCA4LCAmY3RsLAorCQkJCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hf Q09OVEVYVCk7CisJfQorCisJLyoKKwkgKiBOb3csIHdlIHRyeSB0byBnZXQgYW4gYXBwbHkgYmFj a2dyb3VuZCB3b3JrZXIuIElmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZQorCSAqIHdvcmtlciBpbiB0 aGUgZnJlZSBsaXN0LCB0aGVuIHRha2Ugb25lLiBPdGhlcndpc2UsIHdlIHRyeSB0byBzdGFydCBh CisJICogbmV3IGFwcGx5IGJhY2tncm91bmQgd29ya2VyLgorCSAqLworCWlmIChsaXN0X2xlbmd0 aChBcHBseVdvcmtlcnNGcmVlTGlzdCkgPiAwKQorCXsKKwkJd3N0YXRlID0gKEFwcGx5Qmd3b3Jr ZXJTdGF0ZSAqKSBsbGFzdChBcHBseVdvcmtlcnNGcmVlTGlzdCk7CisJCUFwcGx5V29ya2Vyc0Zy ZWVMaXN0ID0gbGlzdF9kZWxldGVfbGFzdChBcHBseVdvcmtlcnNGcmVlTGlzdCk7CisJCUFzc2Vy dCh3c3RhdGUtPnBzdGF0ZS0+c3RhdHVzID09IEFQUExZX0JHV09SS0VSX0ZJTklTSEVEKTsKKwl9 CisJZWxzZQorCXsKKwkJd3N0YXRlID0gYXBwbHlfYmd3b3JrZXJfc2V0dXAoKTsKKworCQlpZiAo d3N0YXRlID09IE5VTEwpCisJCQlyZXR1cm4gTlVMTDsKKwl9CisKKwkvKgorCSAqIENyZWF0ZSBl bnRyeSBmb3IgcmVxdWVzdGVkIHRyYW5zYWN0aW9uLgorCSAqLworCWVudHJ5ID0gaGFzaF9zZWFy Y2goQXBwbHlXb3JrZXJzSGFzaCwgJnhpZCwgSEFTSF9FTlRFUiwgJmZvdW5kKTsKKwlpZiAoZm91 bmQpCisJCWVsb2coRVJST1IsICJoYXNoIHRhYmxlIGNvcnJ1cHRlZCIpOworCisJLyogRmlsbCB1 cCB0aGUgaGFzaCBlbnRyeSAqLworCXdzdGF0ZS0+cHN0YXRlLT5zdGF0dXMgPSBBUFBMWV9CR1dP UktFUl9CVVNZOworCXdzdGF0ZS0+cHN0YXRlLT5zZXJ2ZXJfdmVyc2lvbiA9IHdhbHJjdl9zZXJ2 ZXJfdmVyc2lvbihMb2dSZXBXb3JrZXJXYWxSY3ZDb25uKTsKKwl3c3RhdGUtPnBzdGF0ZS0+c3Ry ZWFtX3hpZCA9IHhpZDsKKwllbnRyeS0+d3N0YXRlID0gd3N0YXRlOworCWVudHJ5LT54aWQgPSB4 aWQ7CisKKwlyZXR1cm4gd3N0YXRlOworfQorCisvKgorICogVHJ5IHRvIGxvb2sgdXAgd29ya2Vy IGluc2lkZSBBcHBseVdvcmtlcnNIYXNoIGZvciByZXF1ZXN0ZWQgeGlkLgorICovCitBcHBseUJn d29ya2VyU3RhdGUgKgorYXBwbHlfYmd3b3JrZXJfZmluZChUcmFuc2FjdGlvbklkIHhpZCkKK3sK Kwlib29sCQlmb3VuZDsKKwlBcHBseUJnd29ya2VyRW50cnkgKmVudHJ5ID0gTlVMTDsKKworCWlm ICghVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSkKKwkJcmV0dXJuIE5VTEw7CisKKwlpZiAoQXBw bHlXb3JrZXJzSGFzaCA9PSBOVUxMKQorCQlyZXR1cm4gTlVMTDsKKworCS8qCisJICogRmluZCBl bnRyeSBmb3IgcmVxdWVzdGVkIHRyYW5zYWN0aW9uLgorCSAqLworCWVudHJ5ID0gaGFzaF9zZWFy Y2goQXBwbHlXb3JrZXJzSGFzaCwgJnhpZCwgSEFTSF9GSU5ELCAmZm91bmQpOworCWlmIChmb3Vu ZCkKKwl7CisJCUFzc2VydChlbnRyeS0+d3N0YXRlLT5wc3RhdGUtPnN0YXR1cyA9PSBBUFBMWV9C R1dPUktFUl9CVVNZKTsKKwkJcmV0dXJuIGVudHJ5LT53c3RhdGU7CisJfQorCWVsc2UKKwkJcmV0 dXJuIE5VTEw7Cit9CisKKy8qCisgKiBBZGQgdGhlIHdvcmtlciB0byB0aGUgZnJlZSBsaXN0IGFu ZCByZW1vdmUgdGhlIGVudHJ5IGZyb20gdGhlIGhhc2ggdGFibGUuCisgKi8KK3ZvaWQKK2FwcGx5 X2Jnd29ya2VyX2ZyZWUoQXBwbHlCZ3dvcmtlclN0YXRlICp3c3RhdGUpCit7CisJTWVtb3J5Q29u dGV4dCBvbGRjdHg7CisJVHJhbnNhY3Rpb25JZCB4aWQgPSB3c3RhdGUtPnBzdGF0ZS0+c3RyZWFt X3hpZDsKKworCUFzc2VydCh3c3RhdGUtPnBzdGF0ZS0+c3RhdHVzID09IEFQUExZX0JHV09SS0VS X0ZJTklTSEVEKTsKKworCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRl eHQpOworCisJaGFzaF9zZWFyY2goQXBwbHlXb3JrZXJzSGFzaCwgJnhpZCwgSEFTSF9SRU1PVkUs IE5VTEwpOworCisJZWxvZyhERUJVRzEsICJhZGRpbmcgZmluaXNoZWQgYXBwbHkgd29ya2VyICMl dSBmb3IgeGlkICV1IHRvIHRoZSBmcmVlIGxpc3QiLAorCQkgd3N0YXRlLT5wc3RhdGUtPm4sIHdz dGF0ZS0+cHN0YXRlLT5zdHJlYW1feGlkKTsKKworCUFwcGx5V29ya2Vyc0ZyZWVMaXN0ID0gbGFw cGVuZChBcHBseVdvcmtlcnNGcmVlTGlzdCwgd3N0YXRlKTsKKworCU1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhvbGRjdHgpOworfQorCisvKiBBcHBseSBCYWNrZ3JvdW5kIFdvcmtlciBtYWluIGxvb3Ag Ki8KK3N0YXRpYyB2b2lkCitMb2dpY2FsQXBwbHlCZ3dMb29wKHNobV9tcV9oYW5kbGUgKm1xaCwg dm9sYXRpbGUgQXBwbHlCZ3dvcmtlclNoYXJlZCAqcHN0KQoreworCXNobV9tcV9yZXN1bHQgc2ht cV9yZXM7CisJUEdQUk9DCSAgICpyZWdpc3RyYW50OworCUVycm9yQ29udGV4dENhbGxiYWNrIGVy cmNhbGxiYWNrOworCisJcmVnaXN0cmFudCA9IEJhY2tlbmRQaWRHZXRQcm9jKE15Qmd3b3JrZXJF bnRyeS0+Ymd3X25vdGlmeV9waWQpOworCVNldExhdGNoKCZyZWdpc3RyYW50LT5wcm9jTGF0Y2gp OworCisJLyoKKwkgKiBQdXNoIGFwcGx5IGVycm9yIGNvbnRleHQgY2FsbGJhY2suIEZpZWxkcyB3 aWxsIGJlIGZpbGxlZCBhcHBseWluZyBhCisJICogY2hhbmdlLgorCSAqLworCWVycmNhbGxiYWNr LmNhbGxiYWNrID0gYXBwbHlfZXJyb3JfY2FsbGJhY2s7CisJZXJyY2FsbGJhY2sucHJldmlvdXMg PSBlcnJvcl9jb250ZXh0X3N0YWNrOworCWVycm9yX2NvbnRleHRfc3RhY2sgPSAmZXJyY2FsbGJh Y2s7CisKKwlmb3IgKDs7KQorCXsKKwkJdm9pZAkgICAqZGF0YTsKKwkJU2l6ZQkJbGVuOworCQlp bnQJCQljOworCQlTdHJpbmdJbmZvRGF0YSBzOworCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKwor CQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCS8qIEVuc3VyZSB3ZSBhcmUgcmVhZGluZyB0 aGUgZGF0YSBpbnRvIG91ciBtZW1vcnkgY29udGV4dC4gKi8KKwkJb2xkY3R4ID0gTWVtb3J5Q29u dGV4dFN3aXRjaFRvKEFwcGx5TWVzc2FnZUNvbnRleHQpOworCisJCXNobXFfcmVzID0gc2htX21x X3JlY2VpdmUobXFoLCAmbGVuLCAmZGF0YSwgZmFsc2UpOworCisJCWlmIChzaG1xX3JlcyAhPSBT SE1fTVFfU1VDQ0VTUykKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVf T0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJsb3N0IGNv bm5lY3Rpb24gdG8gdGhlIG1haW4gYXBwbHkgd29ya2VyIikpKTsKKworCQlpZiAobGVuID09IDAp CisJCQlicmVhazsKKworCQlzLmN1cnNvciA9IDA7CisJCXMubWF4bGVuID0gLTE7CisJCXMuZGF0 YSA9IChjaGFyICopIGRhdGE7CisJCXMubGVuID0gbGVuOworCisJCS8qCisJCSAqIFdlIHVzZSBm aXJzdCBieXRlIG9mIG1lc3NhZ2UgZm9yIGFkZGl0aW9uYWwgY29tbXVuaWNhdGlvbiBiZXR3ZWVu CisJCSAqIG1haW4gTG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgYW5kIGFwcGx5IGJhY2tncm91 bmQgd29ya2Vycywgc28gaWYKKwkJICogaXQgZGlmZmVycyBmcm9tICd3JywgdGhlbiBwcm9jZXNz IGl0IGZpcnN0LgorCQkgKi8KKwkJYyA9IHBxX2dldG1zZ2J5dGUoJnMpOworCQlzd2l0Y2ggKGMp CisJCXsKKwkJCS8qIEVuZCBtZXNzYWdlIG9mIHN0cmVhbWluZyBjaHVuayAqLworCQkJY2FzZSBM T0dJQ0FMX1JFUF9NU0dfU1RSRUFNX1NUT1A6CisJCQkJZWxvZyhERUJVRzEsICJbQXBwbHkgQkdX ICMldV0gZW5kZWQgcHJvY2Vzc2luZyBzdHJlYW1pbmcgY2h1bmssIgorCQkJCQkgIndhaXRpbmcg b24gc2htX21xX3JlY2VpdmUiLCBwc3QtPm4pOworCisJCQkJaW5fc3RyZWFtZWRfdHJhbnNhY3Rp b24gPSBmYWxzZTsKKwkJCQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEVJTlRSQU5T QUNUSU9OLCBOVUxMKTsKKwkJCQljb250aW51ZTsKKwkJCWNhc2UgJ3cnOgorCQkJCWJyZWFrOwor CQkJZGVmYXVsdDoKKwkJCQllbG9nKEVSUk9SLCAiW0FwcGx5IEJHVyAjJXVdIHVuZXhwZWN0ZWQg bWVzc2FnZSBcIiVjXCIiLAorCQkJCQkgcHN0LT5uLCBjKTsKKwkJCQlicmVhazsKKwkJfQorCisJ CS8qIElnbm9yZSBzdGF0aXN0aWNzIGZpZWxkcyB0aGF0IGhhdmUgYmVlbiB1cGRhdGVkLiAqLwor CQlzLmN1cnNvciArPSBJR05PUkVfU0laRV9JTl9NRVNTQUdFOworCisJCWFwcGx5X2Rpc3BhdGNo KCZzKTsKKworCQlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKKwkJeworCQkJQ29uZmlnUmVsb2Fk UGVuZGluZyA9IGZhbHNlOworCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CisJCX0K KworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKKwkJTWVtb3J5Q29udGV4dFJlc2V0 KEFwcGx5TWVzc2FnZUNvbnRleHQpOworCX0KKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhUb3BN ZW1vcnlDb250ZXh0KTsKKwlNZW1vcnlDb250ZXh0UmVzZXQoQXBwbHlDb250ZXh0KTsKKworCS8q IFBvcCB0aGUgZXJyb3IgY29udGV4dCBzdGFjayAqLworCWVycm9yX2NvbnRleHRfc3RhY2sgPSBl cnJjYWxsYmFjay5wcmV2aW91czsKKworCWVsb2coREVCVUcxLCAiW0FwcGx5IEJHVyAjJXVdIGV4 aXRpbmciLCBwc3QtPm4pOworCisJLyogU2lnbmFsIG1haW4gcHJvY2VzcyB0aGF0IHdlIGFyZSBk b25lLiAqLworCVNldExhdGNoKCZyZWdpc3RyYW50LT5wcm9jTGF0Y2gpOworfQorCisvKgorICog U2V0IHRoZSBleGl0IHN0YXR1cyBzbyB0aGF0IHRoZSBtYWluIGFwcGx5IHdvcmtlciBjYW4gcmVh bGl6ZSB3ZSBoYXZlCisgKiBzaHV0ZG93bi4KKyAqLworc3RhdGljIHZvaWQKK2FwcGx5X2Jnd29y a2VyX3NodXRkb3duKGludCBjb2RlLCBEYXR1bSBhcmcpCit7CisJU3BpbkxvY2tBY3F1aXJlKCZN eVBhcmFsbGVsU3RhdGUtPm11dGV4KTsKKwlNeVBhcmFsbGVsU3RhdGUtPnN0YXR1cyA9IEFQUExZ X0JHV09SS0VSX0VYSVQ7CisJU3BpbkxvY2tSZWxlYXNlKCZNeVBhcmFsbGVsU3RhdGUtPm11dGV4 KTsKKworCWRzbV9kZXRhY2goKGRzbV9zZWdtZW50ICopIERhdHVtR2V0UG9pbnRlcihhcmcpKTsK K30KKworLyoKKyAqIEFwcGx5IEJhY2tncm91bmQgV29ya2VyIGVudHJ5IHBvaW50CisgKi8KK3Zv aWQKK0FwcGx5Qmd3b3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQoreworCXZvbGF0aWxlIEFwcGx5 Qmd3b3JrZXJTaGFyZWQgKnBzdDsKKworCWRzbV9oYW5kbGUJaGFuZGxlOworCWRzbV9zZWdtZW50 ICpzZWc7CisJc2htX3RvYyAgICAqdG9jOworCXNobV9tcQkgICAqbXE7CisJc2htX21xX2hhbmRs ZSAqbXFoOworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKwlSZXBPcmlnaW5JZCBvcmlnaW5p ZDsKKwlpbnQJCQl3b3JrZXJfc2xvdCA9IERhdHVtR2V0SW50MzIobWFpbl9hcmcpOworCWNoYXIJ CW9yaWdpbm5hbWVbTkFNRURBVEFMRU5dOworCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKFRvcE1l bW9yeUNvbnRleHQpOworCisJLyogSW5pdCB0aGUgbWVtb3J5IGNvbnRleHQgZm9yIHRoZSBhcHBs eSBiYWNrZ3JvdW5kIHdvcmtlciB0byB3b3JrIGluLiAqLworCUFwcGx5Q29udGV4dCA9IEFsbG9j U2V0Q29udGV4dENyZWF0ZShUb3BNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkJCSAiQXBwbHlDb250 ZXh0IiwKKwkJCQkJCQkJCQkgQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CisKKwkvKgorCSAqIElu aXQgdGhlIEFwcGx5TWVzc2FnZUNvbnRleHQgd2hpY2ggd2UgY2xlYW4gdXAgYWZ0ZXIgZWFjaCBy ZXBsaWNhdGlvbgorCSAqIHByb3RvY29sIG1lc3NhZ2UuCisJICovCisJQXBwbHlNZXNzYWdlQ29u dGV4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShBcHBseUNvbnRleHQsCisJCQkJCQkJCQkJCQki QXBwbHlNZXNzYWdlQ29udGV4dCIsCisJCQkJCQkJCQkJCQlBTExPQ1NFVF9ERUZBVUxUX1NJWkVT KTsKKworCS8qIFNldHVwIHNpZ25hbCBoYW5kbGluZyAqLworCXBxc2lnbmFsKFNJR0hVUCwgU2ln bmFsSGFuZGxlckZvckNvbmZpZ1JlbG9hZCk7CisJcHFzaWduYWwoU0lHVEVSTSwgZGllKTsKKwlC YWNrZ3JvdW5kV29ya2VyVW5ibG9ja1NpZ25hbHMoKTsKKworCS8qCisJICogQ29ubmVjdCB0byB0 aGUgZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNlZ21lbnQuCisJICoKKwkgKiBUaGUgYmFja2VuZCB0 aGF0IHJlZ2lzdGVyZWQgdGhpcyB3b3JrZXIgcGFzc2VkIHVzIHRoZSBJRCBvZiBhIHNoYXJlZAor CSAqIG1lbW9yeSBzZWdtZW50IHRvIHdoaWNoIHdlIG11c3QgYXR0YWNoIGZvciBmdXJ0aGVyIGlu c3RydWN0aW9ucy4gIEluCisJICogb3JkZXIgdG8gYXR0YWNoIHRvIGR5bmFtaWMgc2hhcmVkIG1l bW9yeSwgd2UgbmVlZCBhIHJlc291cmNlIG93bmVyLgorCSAqIE9uY2Ugd2UndmUgbWFwcGVkIHRo ZSBzZWdtZW50IGluIG91ciBhZGRyZXNzIHNwYWNlLCBhdHRhY2ggdG8gdGhlIHRhYmxlCisJICog b2YgY29udGVudHMgc28gd2UgY2FuIGxvY2F0ZSB0aGUgdmFyaW91cyBkYXRhIHN0cnVjdHVyZXMg d2UnbGwgbmVlZCB0bworCSAqIGZpbmQgd2l0aGluIHRoZSBzZWdtZW50LgorCSAqLworCUN1cnJl bnRSZXNvdXJjZU93bmVyID0gUmVzb3VyY2VPd25lckNyZWF0ZShOVUxMLCAiTG9naWNhbCBhcHBs eSB3b3JrZXIiKTsKKwltZW1jcHkoJmhhbmRsZSwgTXlCZ3dvcmtlckVudHJ5LT5iZ3dfZXh0cmEs IHNpemVvZihkc21faGFuZGxlKSk7CisJc2VnID0gZHNtX2F0dGFjaChoYW5kbGUpOworCWlmIChz ZWcgPT0gTlVMTCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVD VF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJ1bmFibGUgdG8gbWFw IGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdtZW50IikpKTsKKwl0b2MgPSBzaG1fdG9jX2F0dGFj aChQR19MT0dJQ0FMX0FQUExZX1NITV9NQUdJQywgZHNtX3NlZ21lbnRfYWRkcmVzcyhzZWcpKTsK KwlpZiAodG9jID09IE5VTEwpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09E RV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygiYmFkIG1h Z2ljIG51bWJlciBpbiBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudCIpKSk7CisKKwliZWZv cmVfc2htZW1fZXhpdChhcHBseV9iZ3dvcmtlcl9zaHV0ZG93biwgUG9pbnRlckdldERhdHVtKHNl ZykpOworCisJLyogTG9vayB1cCB0aGUgcGFyYWxsZWwgc3RhdGUuICovCisJcHN0ID0gc2htX3Rv Y19sb29rdXAodG9jLCBBUFBMWV9CR1dPUktFUl9LRVlfU0hBUkVELCBmYWxzZSk7CisJTXlQYXJh bGxlbFN0YXRlID0gcHN0OworCisJLyoKKwkgKiBBdHRhY2ggdG8gdGhlIG1lc3NhZ2UgcXVldWUu CisJICovCisJbXEgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIEFQUExZX0JHV09SS0VSX0tFWV9NUSwg ZmFsc2UpOworCXNobV9tcV9zZXRfcmVjZWl2ZXIobXEsIE15UHJvYyk7CisJbXFoID0gc2htX21x X2F0dGFjaChtcSwgc2VnLCBOVUxMKTsKKworCS8qIFJ1biBhcyByZXBsaWNhIHNlc3Npb24gcmVw bGljYXRpb24gcm9sZS4gKi8KKwlTZXRDb25maWdPcHRpb24oInNlc3Npb25fcmVwbGljYXRpb25f cm9sZSIsICJyZXBsaWNhIiwKKwkJCQkJUEdDX1NVU0VULCBQR0NfU19PVkVSUklERSk7CisKKwkv KgorCSAqIE5vdywgd2UgaGF2ZSBpbml0aWFsaXplZCBEU00uIEF0dGFjaCB0byBzbG90LgorCSAq LworCWxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaCh3b3JrZXJfc2xvdCk7CisKKwkvKiBDb25uZWN0 IHRvIG91ciBkYXRhYmFzZS4gKi8KKwlCYWNrZ3JvdW5kV29ya2VySW5pdGlhbGl6ZUNvbm5lY3Rp b25CeU9pZChNeUxvZ2ljYWxSZXBXb3JrZXItPmRiaWQsCisJCQkJCQkJCQkJCSAgTXlMb2dpY2Fs UmVwV29ya2VyLT51c2VyaWQsCisJCQkJCQkJCQkJCSAgMCk7CisKKwkvKgorCSAqIFNldCBhbHdh eXMtc2VjdXJlIHNlYXJjaCBwYXRoLCBzbyBtYWxpY2lvdXMgdXNlcnMgY2FuJ3QgcmVkaXJlY3Qg dXNlcgorCSAqIGNvZGUgKGUuZy4gcGdfaW5kZXguaW5kZXhwcnMpLgorCSAqLworCVNldENvbmZp Z09wdGlvbigic2VhcmNoX3BhdGgiLCAiIiwgUEdDX1NVU0VULCBQR0NfU19PVkVSUklERSk7CisK KwkvKgorCSAqIFNldCB0aGUgY2xpZW50IGVuY29kaW5nIHRvIHRoZSBkYXRhYmFzZSBlbmNvZGlu Zywgc2luY2UgdGhhdCBpcyB3aGF0CisJICogdGhlIGxlYWRlciB3aWxsIGV4cGVjdC4KKwkgKi8K KwlTZXRDbGllbnRFbmNvZGluZyhHZXREYXRhYmFzZUVuY29kaW5nKCkpOworCisJc3RyZWFtX3hp ZCA9IHBzdC0+c3RyZWFtX3hpZDsKKworCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJb2xk Y29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCisJTXlTdWJz Y3JpcHRpb24gPSBHZXRTdWJzY3JpcHRpb24oTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgdHJ1 ZSk7CisJaWYgKCFNeVN1YnNjcmlwdGlvbikKKwl7CisJCWVyZXBvcnQoTE9HLAorCQkJCShlcnJt c2coImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gJXUg d2lsbCBub3QgIgorCQkJCQkJInN0YXJ0IGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlvbiB3YXMgcmVt b3ZlZCBkdXJpbmcgc3RhcnR1cCIsCisJCQkJCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkKSkp OworCQlwcm9jX2V4aXQoMCk7CisJfQorCisJTXlTdWJzY3JpcHRpb25WYWxpZCA9IHRydWU7CisJ TWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCisJLyogU2V0dXAgc3luY2hyb25v dXMgY29tbWl0IGFjY29yZGluZyB0byB0aGUgdXNlcidzIHdpc2hlcyAqLworCVNldENvbmZpZ09w dGlvbigic3luY2hyb25vdXNfY29tbWl0IiwgTXlTdWJzY3JpcHRpb24tPnN5bmNjb21taXQsCisJ CQkJCVBHQ19CQUNLRU5ELCBQR0NfU19PVkVSUklERSk7CisKKwkvKiBLZWVwIHVzIGluZm9ybWVk IGFib3V0IHN1YnNjcmlwdGlvbiBjaGFuZ2VzLiAqLworCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNh bGxiYWNrKFNVQlNDUklQVElPTk9JRCwKKwkJCQkJCQkJICBzdWJzY3JpcHRpb25fY2hhbmdlX2Ni LAorCQkJCQkJCQkgIChEYXR1bSkgMCk7CisKKwlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsK KworCS8qIFNldHVwIHJlcGxpY2F0aW9uIG9yaWdpbiB0cmFja2luZy4gKi8KKwlTdGFydFRyYW5z YWN0aW9uQ29tbWFuZCgpOworCXNucHJpbnRmKG9yaWdpbm5hbWUsIHNpemVvZihvcmlnaW5uYW1l KSwgInBnXyV1IiwgTXlTdWJzY3JpcHRpb24tPm9pZCk7CisJb3JpZ2luaWQgPSByZXBsb3JpZ2lu X2J5X25hbWUob3JpZ2lubmFtZSwgdHJ1ZSk7CisJaWYgKCFPaWRJc1ZhbGlkKG9yaWdpbmlkKSkK KwkJb3JpZ2luaWQgPSByZXBsb3JpZ2luX2NyZWF0ZShvcmlnaW5uYW1lKTsKKworCS8qCisJICog VGhlIGFwcGx5IGJhY2tncm91bmQgd29ya2VyIGRvZXNuJ3QgbmVlZCB0byBtb25vcG9saXplIHRo aXMgcmVwbGljYXRpb24KKwkgKiBvcmlnaW4gd2hpY2ggd2FzIGFscmVhZHkgYWNxdWlyZWQgYnkg aXRzIGxlYWRlciBwcm9jZXNzLgorCSAqLworCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmln aW5pZCwgZmFsc2UpOworCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmlnaW5pZDsKKwlD b21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCS8qCisJICogQWxsb2NhdGUgdGhlIG9yaWdp biBuYW1lIGluIGxvbmctbGl2ZWQgY29udGV4dCBmb3IgZXJyb3IgY29udGV4dAorCSAqIG1lc3Nh Z2UuCisJICovCisJYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnLm9yaWdpbl9uYW1lID0gTWVtb3J5 Q29udGV4dFN0cmR1cChBcHBseUNvbnRleHQsCisJCQkJCQkJCQkJCQkJCQkgICBvcmlnaW5uYW1l KTsKKworCWVsb2coREVCVUcxLCAiW0FwcGx5IEJHVyAjJXVdIHN0YXJ0ZWQiLCBwc3QtPm4pOwor CisJTG9naWNhbEFwcGx5Qmd3TG9vcChtcWgsIHBzdCk7CisKKwkvKgorCSAqIFdlJ3JlIGRvbmUu ICBFeHBsaWNpdGx5IGRldGFjaCB0aGUgc2hhcmVkIG1lbW9yeSBzZWdtZW50IHNvIHRoYXQgd2UK KwkgKiBkb24ndCBnZXQgYSByZXNvdXJjZSBsZWFrIHdhcm5pbmcgYXQgY29tbWl0IHRpbWUuICBU aGlzIHdpbGwgZmlyZSBhbnkKKwkgKiBvbl9kc21fZGV0YWNoIGNhbGxiYWNrcyB3ZSd2ZSByZWdp c3RlcmVkLCBhcyB3ZWxsLiAgT25jZSB0aGF0J3MgZG9uZSwKKwkgKiB3ZSBjYW4gZ28gYWhlYWQg YW5kIGV4aXQuCisJICovCisJZHNtX2RldGFjaChzZWcpOworCXByb2NfZXhpdCgwKTsKK30KKwor LyoKKyAqIFNldCB1cCBhIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdtZW50LgorICoKKyAqIFdl IHNldCB1cCBhIGNvbnRyb2wgcmVnaW9uIHRoYXQgY29udGFpbnMgYSBBcHBseUJnd29ya2VyU2hh cmVkLAorICogcGx1cyBvbmUgcmVnaW9uIHBlciBtZXNzYWdlIHF1ZXVlLiBUaGVyZSBhcmUgYXMg bWFueSBtZXNzYWdlIHF1ZXVlcyBhcworICogdGhlIG51bWJlciBvZiB3b3JrZXJzLgorICovCitz dGF0aWMgdm9pZAorYXBwbHlfYmd3b3JrZXJfc2V0dXBfZHNtKEFwcGx5Qmd3b3JrZXJTdGF0ZSAq d3N0YXRlKQoreworCXNobV90b2NfZXN0aW1hdG9yIGU7CisJU2l6ZQkJc2Vnc2l6ZTsKKwlkc21f c2VnbWVudCAqc2VnOworCXNobV90b2MgICAgKnRvYzsKKwlBcHBseUJnd29ya2VyU2hhcmVkICpw c3Q7CisJc2htX21xCSAgICptcTsKKwlpbnQ2NAkJcXVldWVfc2l6ZSA9IERTTV9RVUVVRV9TSVpF OworCisJLyoKKwkgKiBFc3RpbWF0ZSBob3cgbXVjaCBzaGFyZWQgbWVtb3J5IHdlIG5lZWQuCisJ ICoKKwkgKiBCZWNhdXNlIHRoZSBUT0MgbWFjaGluZXJ5IG1heSBjaG9vc2UgdG8gaW5zZXJ0IHBh ZGRpbmcgb2Ygb2RkbHktc2l6ZWQKKwkgKiByZXF1ZXN0cywgd2UgbXVzdCBlc3RpbWF0ZSBlYWNo IGNodW5rIHNlcGFyYXRlbHkuCisJICoKKwkgKiBXZSBuZWVkIG9uZSBrZXkgdG8gcmVnaXN0ZXIg dGhlIGxvY2F0aW9uIG9mIHRoZSBoZWFkZXIsIGFuZCB3ZSBuZWVkCisJICogYW5vdGhlciBrZXkg dG8gdHJhY2sgdGhlIGxvY2F0aW9uIG9mIHRoZSBtZXNzYWdlIHF1ZXVlLgorCSAqLworCXNobV90 b2NfaW5pdGlhbGl6ZV9lc3RpbWF0b3IoJmUpOworCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJmUs IHNpemVvZihBcHBseUJnd29ya2VyU2hhcmVkKSk7CisJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygm ZSwgKFNpemUpIHF1ZXVlX3NpemUpOworCisJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZlLCAxICsg MSk7CisJc2Vnc2l6ZSA9IHNobV90b2NfZXN0aW1hdGUoJmUpOworCisJLyogQ3JlYXRlIHRoZSBz aGFyZWQgbWVtb3J5IHNlZ21lbnQgYW5kIGVzdGFibGlzaCBhIHRhYmxlIG9mIGNvbnRlbnRzLiAq LworCXNlZyA9IGRzbV9jcmVhdGUoc2htX3RvY19lc3RpbWF0ZSgmZSksIDApOworCXRvYyA9IHNo bV90b2NfY3JlYXRlKFBHX0xPR0lDQUxfQVBQTFlfU0hNX01BR0lDLCBkc21fc2VnbWVudF9hZGRy ZXNzKHNlZyksCisJCQkJCQkgc2Vnc2l6ZSk7CisKKwkvKiBTZXQgdXAgdGhlIGhlYWRlciByZWdp b24uICovCisJcHN0ID0gc2htX3RvY19hbGxvY2F0ZSh0b2MsIHNpemVvZihBcHBseUJnd29ya2Vy U2hhcmVkKSk7CisJU3BpbkxvY2tJbml0KCZwc3QtPm11dGV4KTsKKwlwc3QtPnN0YXR1cyA9IEFQ UExZX0JHV09SS0VSX0JVU1k7CisJcHN0LT5zZXJ2ZXJfdmVyc2lvbiA9IHdhbHJjdl9zZXJ2ZXJf dmVyc2lvbihMb2dSZXBXb3JrZXJXYWxSY3ZDb25uKTsKKwlwc3QtPnN0cmVhbV94aWQgPSBzdHJl YW1feGlkOworCXBzdC0+biA9IGxpc3RfbGVuZ3RoKEFwcGx5V29ya2Vyc0xpc3QpICsgMTsKKwor CXNobV90b2NfaW5zZXJ0KHRvYywgQVBQTFlfQkdXT1JLRVJfS0VZX1NIQVJFRCwgcHN0KTsKKwor CS8qIFNldCB1cCBtZXNzYWdlIHF1ZXVlIGZvciB0aGUgd29ya2VyLiAqLworCW1xID0gc2htX21x X2NyZWF0ZShzaG1fdG9jX2FsbG9jYXRlKHRvYywgKFNpemUpIHF1ZXVlX3NpemUpLAorCQkJCQkg ICAoU2l6ZSkgcXVldWVfc2l6ZSk7CisJc2htX3RvY19pbnNlcnQodG9jLCBBUFBMWV9CR1dPUktF Ul9LRVlfTVEsIG1xKTsKKwlzaG1fbXFfc2V0X3NlbmRlcihtcSwgTXlQcm9jKTsKKworCS8qIEF0 dGFjaCB0aGUgcXVldWUuICovCisJd3N0YXRlLT5tcV9oYW5kbGUgPSBzaG1fbXFfYXR0YWNoKG1x LCBzZWcsIE5VTEwpOworCisJLyogUmV0dXJuIHJlc3VsdHMgdG8gY2FsbGVyLiAqLworCXdzdGF0 ZS0+ZHNtX3NlZyA9IHNlZzsKKwl3c3RhdGUtPnBzdGF0ZSA9IHBzdDsKK30KKworLyoKKyAqIFN0 YXJ0IGFwcGx5IGJhY2tncm91bmQgd29ya2VyIHByb2Nlc3MgYW5kIGFsbG9jYXRlIHNoYXJlZCBt ZW1vcnkgZm9yIGl0LgorICovCitzdGF0aWMgQXBwbHlCZ3dvcmtlclN0YXRlICoKK2FwcGx5X2Jn d29ya2VyX3NldHVwKHZvaWQpCit7CisJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OworCWJvb2wJ CWxhdW5jaGVkOworCUFwcGx5Qmd3b3JrZXJTdGF0ZSAqd3N0YXRlOworCWludAkJCW5hcHBseXdv cmtlcnM7CisKKwllbG9nKERFQlVHMSwgInNldHRpbmcgdXAgYXBwbHkgd29ya2VyICMldSIsIGxp c3RfbGVuZ3RoKEFwcGx5V29ya2Vyc0xpc3QpICsgMSk7CisKKwkvKiBDaGVjayBJZiB0aGVyZSBh cmUgZnJlZSB3b3JrZXIgc2xvdChzKSAqLworCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtl ckxvY2ssIExXX1NIQVJFRCk7CisJbmFwcGx5d29ya2VycyA9IGxvZ2ljYWxyZXBfYXBwbHlfYmd3 b3JrZXJfY291bnQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCk7CisJTFdMb2NrUmVsZWFzZShM b2dpY2FsUmVwV29ya2VyTG9jayk7CisJaWYgKG5hcHBseXdvcmtlcnMgPj0gbWF4X2FwcGx5X2Jn d29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uKQorCQlyZXR1cm4gTlVMTDsKKworCW9sZGNvbnRleHQg PSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKKworCXdzdGF0ZSA9IChBcHBs eUJnd29ya2VyU3RhdGUgKikgcGFsbG9jMChzaXplb2YoQXBwbHlCZ3dvcmtlclN0YXRlKSk7CisK KwkvKiBTZXR1cCBzaGFyZWQgbWVtb3J5ICovCisJYXBwbHlfYmd3b3JrZXJfc2V0dXBfZHNtKHdz dGF0ZSk7CisKKwlsYXVuY2hlZCA9IGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChNeUxvZ2ljYWxS ZXBXb3JrZXItPmRiaWQsCisJCQkJCQkJCQkJTXlTdWJzY3JpcHRpb24tPm9pZCwKKwkJCQkJCQkJ CQlNeVN1YnNjcmlwdGlvbi0+bmFtZSwKKwkJCQkJCQkJCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnVz ZXJpZCwKKwkJCQkJCQkJCQlJbnZhbGlkT2lkLAorCQkJCQkJCQkJCWRzbV9zZWdtZW50X2hhbmRs ZSh3c3RhdGUtPmRzbV9zZWcpKTsKKworCWlmIChsYXVuY2hlZCkKKwkJQXBwbHlXb3JrZXJzTGlz dCA9IGxhcHBlbmQoQXBwbHlXb3JrZXJzTGlzdCwgd3N0YXRlKTsKKwllbHNlCisJeworCQlkc21f ZGV0YWNoKHdzdGF0ZS0+ZHNtX3NlZyk7CisJCXdzdGF0ZS0+ZHNtX3NlZyA9IE5VTEw7CisKKwkJ cGZyZWUod3N0YXRlKTsKKwkJd3N0YXRlID0gTlVMTDsKKwl9CisKKwlNZW1vcnlDb250ZXh0U3dp dGNoVG8ob2xkY29udGV4dCk7CisKKwlyZXR1cm4gd3N0YXRlOworfQorCisvKgorICogU2VuZCB0 aGUgZGF0YSB0byB0aGUgc3BlY2lmaWVkIGFwcGx5IGJhY2tncm91bmQgd29ya2VyIHZpYSBzaGFy ZWQtbWVtb3J5IHF1ZXVlLgorICovCit2b2lkCithcHBseV9iZ3dvcmtlcl9zZW5kX2RhdGEoQXBw bHlCZ3dvcmtlclN0YXRlICp3c3RhdGUsIFNpemUgbmJ5dGVzLCBjb25zdCB2b2lkICpkYXRhKQor eworCXNobV9tcV9yZXN1bHQgcmVzdWx0OworCisJcmVzdWx0ID0gc2htX21xX3NlbmQod3N0YXRl LT5tcV9oYW5kbGUsIG5ieXRlcywgZGF0YSwgZmFsc2UsIHRydWUpOworCisJaWYgKHJlc3VsdCAh PSBTSE1fTVFfU1VDQ0VTUykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJjb3VsZCBu b3Qgc2VuZCB0dXBsZXMgdG8gc2hhcmVkLW1lbW9yeSBxdWV1ZSIpKSk7Cit9CisKKy8qCisgKiBX YWl0IHVudGlsIHRoZSBzdGF0dXMgb2YgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgcmVhY2hlcyB0 aGUKKyAqICd3YWl0X2Zvcl9zdGF0dXMnCisgKi8KK3ZvaWQKK2FwcGx5X2Jnd29ya2VyX3dhaXRf Zm9yKEFwcGx5Qmd3b3JrZXJTdGF0ZSAqd3N0YXRlLAorCQkJCQkJQXBwbHlCZ3dvcmtlclN0YXR1 cyB3YWl0X2Zvcl9zdGF0dXMpCit7CisJZm9yICg7OykKKwl7CisJCWNoYXIJCXN0YXR1czsKKwor CQlTcGluTG9ja0FjcXVpcmUoJndzdGF0ZS0+cHN0YXRlLT5tdXRleCk7CisJCXN0YXR1cyA9IHdz dGF0ZS0+cHN0YXRlLT5zdGF0dXM7CisJCVNwaW5Mb2NrUmVsZWFzZSgmd3N0YXRlLT5wc3RhdGUt Pm11dGV4KTsKKworCQkvKiBEb25lIGlmIGFscmVhZHkgaW4gY29ycmVjdCBzdGF0dXMuICovCisJ CWlmIChzdGF0dXMgPT0gd2FpdF9mb3Jfc3RhdHVzKQorCQkJYnJlYWs7CisKKwkJLyogSWYgYW55 IHdvcmtlcnMgKG9yIHRoZSBwb3N0bWFzdGVyKSBoYXZlIGRpZWQsIHdlIGhhdmUgZmFpbGVkLiAq LworCQlpZiAoc3RhdHVzID09IEFQUExZX0JHV09SS0VSX0VYSVQpCisJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRF KSwKKwkJCQkJIGVycm1zZygiYmFja2dyb3VuZCB3b3JrZXIgJXUgZmFpbGVkIHRvIGFwcGx5IHRy YW5zYWN0aW9uICV1IiwKKwkJCQkJCQl3c3RhdGUtPnBzdGF0ZS0+biwgd3N0YXRlLT5wc3RhdGUt PnN0cmVhbV94aWQpKSk7CisKKwkJLyogV2FpdCB0byBiZSBzaWduYWxsZWQuICovCisJCVdhaXRM YXRjaChNeUxhdGNoLCBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAorCQkJ CSAgV0FJVF9FVkVOVF9MT0dJQ0FMX0FQUExZX1dPUktFUl9TVEFURV9DSEFOR0UpOworCisJCS8q IFJlc2V0IHRoZSBsYXRjaCBzbyB3ZSBkb24ndCBzcGluLiAqLworCQlSZXNldExhdGNoKE15TGF0 Y2gpOworCisJCS8qIEFuIGludGVycnVwdCBtYXkgaGF2ZSBvY2N1cnJlZCB3aGlsZSB3ZSB3ZXJl IHdhaXRpbmcuICovCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJfQorfQorCisvKgorICog Q2hlY2sgdGhlIHN0YXR1cyBvZiB3b3JrZXJzIGFuZCByZXBvcnQgYW4gZXJyb3IgaWYgYW55IGFw cGx5IGJhY2tncm91bmQKKyAqIHdvcmtlciBoYXMgZXhpdGVkIHVuZXhwZWN0ZWRseS4KKyAqLwor dm9pZAorYXBwbHlfYmd3b3JrZXJfY2hlY2tfc3RhdHVzKHZvaWQpCit7CisJTGlzdENlbGwgICAq bGM7CisKKwlpZiAoYW1fYXBwbHlfYmd3b3JrZXIoKSB8fCBNeVN1YnNjcmlwdGlvbi0+c3RyZWFt ICE9IFNVQlNUUkVBTV9QQVJBTExFTCkKKwkJcmV0dXJuOworCisJZm9yZWFjaChsYywgQXBwbHlX b3JrZXJzTGlzdCkKKwl7CisJCUFwcGx5Qmd3b3JrZXJTdGF0ZSAqd3N0YXRlID0gKEFwcGx5Qmd3 b3JrZXJTdGF0ZSAqKSBsZmlyc3QobGMpOworCisJCS8qCisJCSAqIFdlIGRvbid0IGxvY2sgaGVy ZSBhcyBpbiB0aGUgd29yc3QgY2FzZSB3ZSB3aWxsIGp1c3QgZGV0ZWN0IHRoZQorCQkgKiBmYWls dXJlIG9mIHdvcmtlciBhIGJpdCBsYXRlci4KKwkJICovCisJCWlmICh3c3RhdGUtPnBzdGF0ZS0+ c3RhdHVzID09IEFQUExZX0JHV09SS0VSX0VYSVQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQko ZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJ IGVycm1zZygiYmFja2dyb3VuZCB3b3JrZXIgJXUgZXhpdGVkIHVuZXhwZWN0ZWRseSIsCisJCQkJ CQkJd3N0YXRlLT5wc3RhdGUtPm4pKSk7CisJfQorCisJLyoKKwkgKiBFeGl0IGlmIGFueSByZWxh dGlvbiBpcyBub3QgaW4gdGhlIFJFQURZIHN0YXRlIGFuZCBpZiBhbnkgd29ya2VyIGlzCisJICog aGFuZGxpbmcgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiBhdCB0aGUgc2FtZSB0aW1lLiBCZWNh dXNlIGZvcgorCSAqIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMgdGhhdCBpcyBiZWluZyBhcHBsaWVk IGluIGFwcGx5IGJhY2tncm91bmQKKwkgKiB3b3JrZXIsIHdlIGNhbm5vdCBkZWNpZGUgd2hldGhl ciB0byBhcHBseSB0aGUgY2hhbmdlIGZvciBhIHJlbGF0aW9uCisJICogdGhhdCBpcyBub3QgaW4g dGhlIFJFQURZIHN0YXRlIChzZWUgc2hvdWxkX2FwcGx5X2NoYW5nZXNfZm9yX3JlbCkgYXMgd2UK KwkgKiB3b24ndCBrbm93IHJlbW90ZV9maW5hbF9sc24gYnkgdGhhdCB0aW1lLgorCSAqLworCWlm IChsaXN0X2xlbmd0aChBcHBseVdvcmtlcnNGcmVlTGlzdCkgIT0gbGlzdF9sZW5ndGgoQXBwbHlX b3JrZXJzTGlzdCkgJiYKKwkJIUFsbFRhYmxlc3luY3NSZWFkeSgpKQorCXsKKwkJZXJlcG9ydChM T0csCisJCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXJzIGZvciBz dWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgcmVzdGFydCIsCisJCQkJCQlNeVN1YnNjcmlwdGlvbi0+ bmFtZSksCisJCQkJIGVycmRldGFpbCgiQ2Fubm90IGhhbmRsZSBzdHJlYW1lZCByZXBsaWNhdGlv biB0cmFuc2FjdGlvbiBieSBhcHBseSAiCisJCQkJCQkgICAiYmFja2dyb3VuZCB3b3JrZXJzIHVu dGlsIGFsbCB0YWJsZXMgYXJlIHN5bmNocm9uaXplZCIpKSk7CisKKwkJcHJvY19leGl0KDApOwor CX0KK30KKworLyogU2V0IHRoZSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBzdGF0dXMgKi8KK3Zv aWQKK2FwcGx5X2Jnd29ya2VyX3NldF9zdGF0dXMoQXBwbHlCZ3dvcmtlclN0YXR1cyBzdGF0dXMp Cit7CisJaWYgKCFhbV9hcHBseV9iZ3dvcmtlcigpKQorCQlyZXR1cm47CisKKwllbG9nKERFQlVH MSwgIltBcHBseSBCR1cgIyV1XSBzZXQgc3RhdHVzIHRvICVkIiwgTXlQYXJhbGxlbFN0YXRlLT5u LCBzdGF0dXMpOworCisJU3BpbkxvY2tBY3F1aXJlKCZNeVBhcmFsbGVsU3RhdGUtPm11dGV4KTsK KwlNeVBhcmFsbGVsU3RhdGUtPnN0YXR1cyA9IHN0YXR1czsKKwlTcGluTG9ja1JlbGVhc2UoJk15 UGFyYWxsZWxTdGF0ZS0+bXV0ZXgpOworfQorCisvKgorICogRGVmaW5lIGEgc2F2ZXBvaW50IGZv ciBhIHN1YnhhY3QgaW4gYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgaWYgbmVlZGVkLgorICoKKyAq IEluc2lkZSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciB3ZSBjYW4gZmlndXJlIG91dCB0aGF0IG5l dyBzdWJ0cmFuc2FjdGlvbiB3YXMKKyAqIHN0YXJ0ZWQgaWYgbmV3IGNoYW5nZSBhcnJpdmVkIHdp dGggZGlmZmVyZW50IHhpZC4gSW4gdGhhdCBjYXNlIHdlIGNhbiBkZWZpbmUKKyAqIG5hbWVkIHNh dmVwb2ludCwgc28gdGhhdCB3ZSB3ZXJlIGFibGUgdG8gY29tbWl0L3JvbGxiYWNrIGl0IHNlcGFy YXRlbHkKKyAqIGxhdGVyLgorICogU3BlY2lhbCBjYXNlIGlzIGlmIHRoZSBmaXJzdCBjaGFuZ2Ug Y29tZXMgZnJvbSBzdWJ0cmFuc2FjdGlvbiwgdGhlbgorICogd2UgY2hlY2sgdGhhdCBjdXJyZW50 X3hpZCBkaWZmZXJzIGZyb20gc3RyZWFtX3hpZC4KKyAqLwordm9pZAorYXBwbHlfYmd3b3JrZXJf c3VieGFjdF9pbmZvX2FkZChUcmFuc2FjdGlvbklkIGN1cnJlbnRfeGlkKQoreworCWlmIChjdXJy ZW50X3hpZCAhPSBzdHJlYW1feGlkICYmCisJCSFsaXN0X21lbWJlcl9pbnQoc3VieGFjdGxpc3Qs IChpbnQpIGN1cnJlbnRfeGlkKSkKKwl7CisJCU1lbW9yeUNvbnRleHQgb2xkY3R4OworCQljaGFy CQlzcG5hbWVbTUFYUEdQQVRIXTsKKworCQlzbnByaW50ZihzcG5hbWUsIE1BWFBHUEFUSCwgInNh dmVwb2ludF9mb3JfeGlkXyV1IiwgY3VycmVudF94aWQpOworCisJCWVsb2coREVCVUcxLCAiW0Fw cGx5IEJHVyAjJXVdIGRlZmluaW5nIHNhdmVwb2ludCAlcyIsCisJCQkgTXlQYXJhbGxlbFN0YXRl LT5uLCBzcG5hbWUpOworCisJCURlZmluZVNhdmVwb2ludChzcG5hbWUpOworCQlDb21taXRUcmFu c2FjdGlvbkNvbW1hbmQoKTsKKworCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBw bHlDb250ZXh0KTsKKwkJc3VieGFjdGxpc3QgPSBsYXBwZW5kX2ludChzdWJ4YWN0bGlzdCwgKGlu dCkgY3VycmVudF94aWQpOworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKKwl9Cit9 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwppbmRleCBjNWM2YTJiYTY4 Li5kNGQ1MDkzYTBiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L2RlY29kZS5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMK QEAgLTY1MSw5ICs2NTEsMTAgQEAgRGVjb2RlQ29tbWl0KExvZ2ljYWxEZWNvZGluZ0NvbnRleHQg KmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmLAogCXsKIAkJZm9yIChpID0gMDsgaSA8IHBhcnNl ZC0+bnN1YnhhY3RzOyBpKyspCiAJCXsKLQkJCVJlb3JkZXJCdWZmZXJGb3JnZXQoY3R4LT5yZW9y ZGVyLCBwYXJzZWQtPnN1YnhhY3RzW2ldLCBidWYtPm9yaWdwdHIpOworCQkJUmVvcmRlckJ1ZmZl ckZvcmdldChjdHgtPnJlb3JkZXIsIHBhcnNlZC0+c3VieGFjdHNbaV0sIGJ1Zi0+b3JpZ3B0ciwK KwkJCQkJCQkJY29tbWl0X3RpbWUpOwogCQl9Ci0JCVJlb3JkZXJCdWZmZXJGb3JnZXQoY3R4LT5y ZW9yZGVyLCB4aWQsIGJ1Zi0+b3JpZ3B0cik7CisJCVJlb3JkZXJCdWZmZXJGb3JnZXQoY3R4LT5y ZW9yZGVyLCB4aWQsIGJ1Zi0+b3JpZ3B0ciwgY29tbWl0X3RpbWUpOwogCiAJCXJldHVybjsKIAl9 CkBAIC04MjEsMTAgKzgyMiwxMSBAQCBEZWNvZGVBYm9ydChMb2dpY2FsRGVjb2RpbmdDb250ZXh0 ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1ZiwKIAkJZm9yIChpID0gMDsgaSA8IHBhcnNlZC0+ bnN1YnhhY3RzOyBpKyspCiAJCXsKIAkJCVJlb3JkZXJCdWZmZXJBYm9ydChjdHgtPnJlb3JkZXIs IHBhcnNlZC0+c3VieGFjdHNbaV0sCi0JCQkJCQkJICAgYnVmLT5yZWNvcmQtPkVuZFJlY1B0cik7 CisJCQkJCQkJICAgYnVmLT5yZWNvcmQtPkVuZFJlY1B0ciwgYWJvcnRfdGltZSk7CiAJCX0KIAot CQlSZW9yZGVyQnVmZmVyQWJvcnQoY3R4LT5yZW9yZGVyLCB4aWQsIGJ1Zi0+cmVjb3JkLT5FbmRS ZWNQdHIpOworCQlSZW9yZGVyQnVmZmVyQWJvcnQoY3R4LT5yZW9yZGVyLCB4aWQsIGJ1Zi0+cmVj b3JkLT5FbmRSZWNQdHIsCisJCQkJCQkgICBhYm9ydF90aW1lKTsKIAl9CiAKIAkvKiB1cGRhdGUg dGhlIGRlY29kaW5nIHN0YXRzICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2xhdW5jaGVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xh dW5jaGVyLmMKaW5kZXggMmJkYWI1M2UxOS4uZDExZDIzNjFjNiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwpAQCAtNTQsNiArNTQsNyBAQAogCiBpbnQJCQlt YXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzID0gNDsKIGludAkJCW1heF9zeW5jX3dvcmtl cnNfcGVyX3N1YnNjcmlwdGlvbiA9IDI7CitpbnQJCQltYXhfYXBwbHlfYmd3b3JrZXJzX3Blcl9z dWJzY3JpcHRpb24gPSAyOwogCiBMb2dpY2FsUmVwV29ya2VyICpNeUxvZ2ljYWxSZXBXb3JrZXIg PSBOVUxMOwogCkBAIC03Myw2ICs3NCw3IEBAIHN0YXRpYyB2b2lkIGxvZ2ljYWxyZXBfbGF1bmNo ZXJfb25leGl0KGludCBjb2RlLCBEYXR1bSBhcmcpOwogc3RhdGljIHZvaWQgbG9naWNhbHJlcF93 b3JrZXJfb25leGl0KGludCBjb2RlLCBEYXR1bSBhcmcpOwogc3RhdGljIHZvaWQgbG9naWNhbHJl cF93b3JrZXJfZGV0YWNoKHZvaWQpOwogc3RhdGljIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfY2xl YW51cChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpOworc3RhdGljIHZvaWQgbG9naWNhbHJlcF93 b3JrZXJfc3RvcF9pbnRlcm5hbChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpOwogCiBzdGF0aWMg Ym9vbCBvbl9jb21taXRfbGF1bmNoZXJfd2FrZXVwID0gZmFsc2U7CiAKQEAgLTE1MSw4ICsxNTMs MTAgQEAgZ2V0X3N1YnNjcmlwdGlvbl9saXN0KHZvaWQpCiAgKgogICogVGhpcyBpcyBvbmx5IG5l ZWRlZCBmb3IgY2xlYW5pbmcgdXAgdGhlIHNoYXJlZCBtZW1vcnkgaW4gY2FzZSB0aGUgd29ya2Vy CiAgKiBmYWlscyB0byBhdHRhY2guCisgKgorICogUmV0dXJuIGZhbHNlIGlmIHRoZSBhdHRhY2gg ZmFpbHMuIE90aGVyd2lzZSByZXR1cm4gdHJ1ZS4KICAqLwotc3RhdGljIHZvaWQKK3N0YXRpYyBi b29sCiBXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2goTG9naWNhbFJlcFdvcmtlciAqd29y a2VyLAogCQkJCQkJCSAgIHVpbnQxNiBnZW5lcmF0aW9uLAogCQkJCQkJCSAgIEJhY2tncm91bmRX b3JrZXJIYW5kbGUgKmhhbmRsZSkKQEAgLTE2OCwxMSArMTcyLDExIEBAIFdhaXRGb3JSZXBsaWNh dGlvbldvcmtlckF0dGFjaChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIsCiAKIAkJTFdMb2NrQWNx dWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKIAotCQkvKiBXb3JrZXIgZWl0 aGVyIGRpZWQgb3IgaGFzIHN0YXJ0ZWQ7IG5vIG5lZWQgdG8gZG8gYW55dGhpbmcuICovCisJCS8q IFdvcmtlciBlaXRoZXIgZGllZCBvciBoYXMgc3RhcnRlZC4gUmV0dXJuIGZhbHNlIGlmIGRpZWQu ICovCiAJCWlmICghd29ya2VyLT5pbl91c2UgfHwgd29ya2VyLT5wcm9jKQogCQl7CiAJCQlMV0xv Y2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKLQkJCXJldHVybjsKKwkJCXJldHVybiB3 b3JrZXItPmluX3VzZTsKIAkJfQogCiAJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxv Y2spOwpAQCAtMTg3LDcgKzE5MSw3IEBAIFdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaChM b2dpY2FsUmVwV29ya2VyICp3b3JrZXIsCiAJCQlpZiAoZ2VuZXJhdGlvbiA9PSB3b3JrZXItPmdl bmVyYXRpb24pCiAJCQkJbG9naWNhbHJlcF93b3JrZXJfY2xlYW51cCh3b3JrZXIpOwogCQkJTFdM b2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7Ci0JCQlyZXR1cm47CisJCQlyZXR1cm4g ZmFsc2U7CiAJCX0KIAogCQkvKgpAQCAtMjIzLDYgKzIyNywxMyBAQCBsb2dpY2FscmVwX3dvcmtl cl9maW5kKE9pZCBzdWJpZCwgT2lkIHJlbGlkLCBib29sIG9ubHlfcnVubmluZykKIAl7CiAJCUxv Z2ljYWxSZXBXb3JrZXIgKncgPSAmTG9naWNhbFJlcEN0eC0+d29ya2Vyc1tpXTsKIAorCQkvKgor CQkgKiBXZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIHRoZSBtYWluIGFwcGx5IHdvcmtlciBvciB0 YWJsZSBzeW5jIHdvcmtlcgorCQkgKiBoZXJlLgorCQkgKi8KKwkJaWYgKHctPnN1YndvcmtlcikK KwkJCWNvbnRpbnVlOworCiAJCWlmICh3LT5pbl91c2UgJiYgdy0+c3ViaWQgPT0gc3ViaWQgJiYg dy0+cmVsaWQgPT0gcmVsaWQgJiYKIAkJCSghb25seV9ydW5uaW5nIHx8IHctPnByb2MpKQogCQl7 CkBAIC0yNTksMTEgKzI3MCwxMSBAQCBsb2dpY2FscmVwX3dvcmtlcnNfZmluZChPaWQgc3ViaWQs IGJvb2wgb25seV9ydW5uaW5nKQogfQogCiAvKgotICogU3RhcnQgbmV3IGFwcGx5IGJhY2tncm91 bmQgd29ya2VyLCBpZiBwb3NzaWJsZS4KKyAqIFN0YXJ0IG5ldyBiYWNrZ3JvdW5kIHdvcmtlciwg aWYgcG9zc2libGUuCiAgKi8KLXZvaWQKK2Jvb2wKIGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChP aWQgZGJpZCwgT2lkIHN1YmlkLCBjb25zdCBjaGFyICpzdWJuYW1lLCBPaWQgdXNlcmlkLAotCQkJ CQkJIE9pZCByZWxpZCkKKwkJCQkJCSBPaWQgcmVsaWQsIGRzbV9oYW5kbGUgc3Vid29ya2VyX2Rz bSkKIHsKIAlCYWNrZ3JvdW5kV29ya2VyIGJndzsKIAlCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpi Z3dfaGFuZGxlOwpAQCAtMjczLDYgKzI4NCwxMCBAQCBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2go T2lkIGRiaWQsIE9pZCBzdWJpZCwgY29uc3QgY2hhciAqc3VibmFtZSwgT2lkIHVzZXJpZCwKIAlM b2dpY2FsUmVwV29ya2VyICp3b3JrZXIgPSBOVUxMOwogCWludAkJCW5zeW5jd29ya2VyczsKIAlU aW1lc3RhbXBUeiBub3c7CisJYm9vbAkJaXNfc3Vid29ya2VyID0gKHN1Yndvcmtlcl9kc20gIT0g RFNNX0hBTkRMRV9JTlZBTElEKTsKKworCS8qIFNhbml0eSBjaGVjayA6IHdlIGRvbid0IHN1cHBv cnQgdGFibGUgc3luYyBpbiBzdWJ3b3JrZXIuICovCisJQXNzZXJ0KCEoaXNfc3Vid29ya2VyICYm IE9pZElzVmFsaWQocmVsaWQpKSk7CiAKIAllcmVwb3J0KERFQlVHMSwKIAkJCShlcnJtc2dfaW50 ZXJuYWwoInN0YXJ0aW5nIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIGZvciBzdWJzY3JpcHRp b24gXCIlc1wiIiwKQEAgLTM1MCw3ICszNjUsNyBAQCByZXRyeToKIAlpZiAoT2lkSXNWYWxpZChy ZWxpZCkgJiYgbnN5bmN3b3JrZXJzID49IG1heF9zeW5jX3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlv bikKIAl7CiAJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwotCQlyZXR1cm47 CisJCXJldHVybiBmYWxzZTsKIAl9CiAKIAkvKgpAQCAtMzY0LDcgKzM3OSw3IEBAIHJldHJ5Ogog CQkJCShlcnJjb2RlKEVSUkNPREVfQ09ORklHVVJBVElPTl9MSU1JVF9FWENFRURFRCksCiAJCQkJ IGVycm1zZygib3V0IG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIHNsb3RzIiksCiAJCQkJ IGVycmhpbnQoIllvdSBtaWdodCBuZWVkIHRvIGluY3JlYXNlIG1heF9sb2dpY2FsX3JlcGxpY2F0 aW9uX3dvcmtlcnMuIikpKTsKLQkJcmV0dXJuOworCQlyZXR1cm4gZmFsc2U7CiAJfQogCiAJLyog UHJlcGFyZSB0aGUgd29ya2VyIHNsb3QuICovCkBAIC0zNzksNiArMzk0LDcgQEAgcmV0cnk6CiAJ d29ya2VyLT5yZWxzdGF0ZSA9IFNVQlJFTF9TVEFURV9VTktOT1dOOwogCXdvcmtlci0+cmVsc3Rh dGVfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJd29ya2VyLT5zdHJlYW1fZmlsZXNldCA9IE5V TEw7CisJd29ya2VyLT5zdWJ3b3JrZXIgPSBpc19zdWJ3b3JrZXI7CiAJd29ya2VyLT5sYXN0X2xz biA9IEludmFsaWRYTG9nUmVjUHRyOwogCVRJTUVTVEFNUF9OT0JFR0lOKHdvcmtlci0+bGFzdF9z ZW5kX3RpbWUpOwogCVRJTUVTVEFNUF9OT0JFR0lOKHdvcmtlci0+bGFzdF9yZWN2X3RpbWUpOwpA QCAtMzk2LDE5ICs0MTIsMzEgQEAgcmV0cnk6CiAJCUJHV09SS0VSX0JBQ0tFTkRfREFUQUJBU0Vf Q09OTkVDVElPTjsKIAliZ3cuYmd3X3N0YXJ0X3RpbWUgPSBCZ1dvcmtlclN0YXJ0X1JlY292ZXJ5 RmluaXNoZWQ7CiAJc25wcmludGYoYmd3LmJnd19saWJyYXJ5X25hbWUsIEJHV19NQVhMRU4sICJw b3N0Z3JlcyIpOwotCXNucHJpbnRmKGJndy5iZ3dfZnVuY3Rpb25fbmFtZSwgQkdXX01BWExFTiwg IkFwcGx5V29ya2VyTWFpbiIpOworCisJaWYgKGlzX3N1YndvcmtlcikKKwkJc25wcmludGYoYmd3 LmJnd19mdW5jdGlvbl9uYW1lLCBCR1dfTUFYTEVOLCAiQXBwbHlCZ3dvcmtlck1haW4iKTsKKwll bHNlCisJCXNucHJpbnRmKGJndy5iZ3dfZnVuY3Rpb25fbmFtZSwgQkdXX01BWExFTiwgIkFwcGx5 V29ya2VyTWFpbiIpOworCiAJaWYgKE9pZElzVmFsaWQocmVsaWQpKQogCQlzbnByaW50ZihiZ3cu Ymd3X25hbWUsIEJHV19NQVhMRU4sCiAJCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBm b3Igc3Vic2NyaXB0aW9uICV1IHN5bmMgJXUiLCBzdWJpZCwgcmVsaWQpOworCWVsc2UgaWYgKGlz X3N1YndvcmtlcikKKwkJc25wcmludGYoYmd3LmJnd19uYW1lLCBCR1dfTUFYTEVOLAorCQkJCSAi bG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBmb3Igc3Vic2NyaXB0 aW9uICV1Iiwgc3ViaWQpOwogCWVsc2UKIAkJc25wcmludGYoYmd3LmJnd19uYW1lLCBCR1dfTUFY TEVOLAogCQkJCSAibG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiAl dSIsIHN1YmlkKTsKKwogCXNucHJpbnRmKGJndy5iZ3dfdHlwZSwgQkdXX01BWExFTiwgImxvZ2lj YWwgcmVwbGljYXRpb24gd29ya2VyIik7CiAKIAliZ3cuYmd3X3Jlc3RhcnRfdGltZSA9IEJHV19O RVZFUl9SRVNUQVJUOwogCWJndy5iZ3dfbm90aWZ5X3BpZCA9IE15UHJvY1BpZDsKIAliZ3cuYmd3 X21haW5fYXJnID0gSW50MzJHZXREYXR1bShzbG90KTsKIAorCWlmIChpc19zdWJ3b3JrZXIpCisJ CW1lbWNweShiZ3cuYmd3X2V4dHJhLCAmc3Vid29ya2VyX2RzbSwgc2l6ZW9mKGRzbV9oYW5kbGUp KTsKKwogCWlmICghUmVnaXN0ZXJEeW5hbWljQmFja2dyb3VuZFdvcmtlcigmYmd3LCAmYmd3X2hh bmRsZSkpCiAJewogCQkvKiBGYWlsZWQgdG8gc3RhcnQgd29ya2VyLCBzbyBjbGVhbiB1cCB0aGUg d29ya2VyIHNsb3QuICovCkBAIC00MjEsMTEgKzQ0OSwxMSBAQCByZXRyeToKIAkJCQkoZXJyY29k ZShFUlJDT0RFX0NPTkZJR1VSQVRJT05fTElNSVRfRVhDRUVERUQpLAogCQkJCSBlcnJtc2coIm91 dCBvZiBiYWNrZ3JvdW5kIHdvcmtlciBzbG90cyIpLAogCQkJCSBlcnJoaW50KCJZb3UgbWlnaHQg bmVlZCB0byBpbmNyZWFzZSBtYXhfd29ya2VyX3Byb2Nlc3Nlcy4iKSkpOwotCQlyZXR1cm47CisJ CXJldHVybiBmYWxzZTsKIAl9CiAKIAkvKiBOb3cgd2FpdCB1bnRpbCBpdCBhdHRhY2hlcy4gKi8K LQlXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2god29ya2VyLCBnZW5lcmF0aW9uLCBiZ3df aGFuZGxlKTsKKwlyZXR1cm4gV2FpdEZvclJlcGxpY2F0aW9uV29ya2VyQXR0YWNoKHdvcmtlciwg Z2VuZXJhdGlvbiwgYmd3X2hhbmRsZSk7CiB9CiAKIC8qCkBAIC00MzYsMTggKzQ2NCwyNyBAQCB2 b2lkCiBsb2dpY2FscmVwX3dvcmtlcl9zdG9wKE9pZCBzdWJpZCwgT2lkIHJlbGlkKQogewogCUxv Z2ljYWxSZXBXb3JrZXIgKndvcmtlcjsKLQl1aW50MTYJCWdlbmVyYXRpb247CiAKIAlMV0xvY2tB Y3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOwogCiAJd29ya2VyID0gbG9n aWNhbHJlcF93b3JrZXJfZmluZChzdWJpZCwgcmVsaWQsIGZhbHNlKTsKIAotCS8qIE5vIHdvcmtl ciwgbm90aGluZyB0byBkby4gKi8KLQlpZiAoIXdvcmtlcikKLQl7Ci0JCUxXTG9ja1JlbGVhc2Uo TG9naWNhbFJlcFdvcmtlckxvY2spOwotCQlyZXR1cm47Ci0JfQorCWlmICh3b3JrZXIpCisJCWxv Z2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwod29ya2VyKTsKKworCUxXTG9ja1JlbGVhc2Uo TG9naWNhbFJlcFdvcmtlckxvY2spOworfQorCisvKgorICogV29ya2hvcnNlIGZvciBsb2dpY2Fs cmVwX3dvcmtlcl9zdG9wKCkgYW5kIGxvZ2ljYWxyZXBfd29ya2VyX2RldGFjaCgpLiBTdG9wCisg KiB0aGUgd29ya2VyIGFuZCB3YWl0IGZvciBpdCB0byBkaWUuCisgKi8KK3N0YXRpYyB2b2lkCits b2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcikK K3sKKwl1aW50MTYJCWdlbmVyYXRpb247CisKKwlBc3NlcnQoTFdMb2NrSGVsZEJ5TWUoTG9naWNh bFJlcFdvcmtlckxvY2spKTsKIAogCS8qCiAJICogUmVtZW1iZXIgd2hpY2ggZ2VuZXJhdGlvbiB3 YXMgb3VyIHdvcmtlciBzbyB3ZSBjYW4gY2hlY2sgaWYgd2hhdCB3ZSBzZWUKQEAgLTQ4NSwxMCAr NTIyLDcgQEAgbG9naWNhbHJlcF93b3JrZXJfc3RvcChPaWQgc3ViaWQsIE9pZCByZWxpZCkKIAkJ ICogZGlmZmVyZW50LCBtZWFuaW5nIHRoYXQgYSBkaWZmZXJlbnQgd29ya2VyIGhhcyB0YWtlbiB0 aGUgc2xvdC4KIAkJICovCiAJCWlmICghd29ya2VyLT5pbl91c2UgfHwgd29ya2VyLT5nZW5lcmF0 aW9uICE9IGdlbmVyYXRpb24pCi0JCXsKLQkJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtl ckxvY2spOwogCQkJcmV0dXJuOwotCQl9CiAKIAkJLyogV29ya2VyIGhhcyBhc3NpZ25lZCBwcm9j LCBzbyBpdCBoYXMgc3RhcnRlZC4gKi8KIAkJaWYgKHdvcmtlci0+cHJvYykKQEAgLTUyMiw4ICs1 NTYsNiBAQCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wKE9pZCBzdWJpZCwgT2lkIHJlbGlkKQogCiAJ CUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CiAJfQotCi0J TFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CiB9CiAKIC8qCkBAIC01OTksNiAr NjMxLDI5IEBAIGxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaChpbnQgc2xvdCkKIHN0YXRpYyB2b2lk CiBsb2dpY2FscmVwX3dvcmtlcl9kZXRhY2godm9pZCkKIHsKKwkvKgorCSAqIElmIHdlIGFyZSB0 aGUgbWFpbiBhcHBseSB3b3JrZXIsIHN0b3AgYWxsIHRoZSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtl cnMKKwkgKiB3ZSBzdGFydGVkIGJlZm9yZS4KKwkgKi8KKwlpZiAoIU15TG9naWNhbFJlcFdvcmtl ci0+c3Vid29ya2VyKQorCXsKKwkJTGlzdAkgICAqd29ya2VyczsKKwkJTGlzdENlbGwgICAqbGM7 CisKKwkJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKKwor CQl3b3JrZXJzID0gbG9naWNhbHJlcF93b3JrZXJzX2ZpbmQoTXlMb2dpY2FsUmVwV29ya2VyLT5z dWJpZCwgdHJ1ZSk7CisJCWZvcmVhY2gobGMsIHdvcmtlcnMpCisJCXsKKwkJCUxvZ2ljYWxSZXBX b3JrZXIgKncgPSAoTG9naWNhbFJlcFdvcmtlciAqKSBsZmlyc3QobGMpOworCisJCQlpZiAody0+ c3Vid29ya2VyKQorCQkJCWxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwodyk7CisJCX0K KworCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKKwl9CisKIAkvKiBCbG9j ayBjb25jdXJyZW50IGFjY2Vzcy4gKi8KIAlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJM b2NrLCBMV19FWENMVVNJVkUpOwogCkBAIC02MjEsNiArNjc2LDcgQEAgbG9naWNhbHJlcF93b3Jr ZXJfY2xlYW51cChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpCiAJd29ya2VyLT51c2VyaWQgPSBJ bnZhbGlkT2lkOwogCXdvcmtlci0+c3ViaWQgPSBJbnZhbGlkT2lkOwogCXdvcmtlci0+cmVsaWQg PSBJbnZhbGlkT2lkOworCXdvcmtlci0+c3Vid29ya2VyID0gZmFsc2U7CiB9CiAKIC8qCkBAIC02 NzksNiArNzM1LDMwIEBAIGxvZ2ljYWxyZXBfc3luY193b3JrZXJfY291bnQoT2lkIHN1YmlkKQog CXJldHVybiByZXM7CiB9CiAKKy8qCisgKiBDb3VudCB0aGUgbnVtYmVyIG9mIHJlZ2lzdGVyZWQg KG5vdCBuZWNlc3NhcmlseSBydW5uaW5nKSBhcHBseSBiYWNrZ3JvdW5kCisgKiB3b3JrZXJzIGZv ciBhIHN1YnNjcmlwdGlvbi4KKyAqLworaW50Citsb2dpY2FscmVwX2FwcGx5X2Jnd29ya2VyX2Nv dW50KE9pZCBzdWJpZCkKK3sKKwlpbnQJCQlpOworCWludAkJCXJlcyA9IDA7CisKKwlBc3NlcnQo TFdMb2NrSGVsZEJ5TWUoTG9naWNhbFJlcFdvcmtlckxvY2spKTsKKworCS8qIFNlYXJjaCBmb3Ig YXR0YWNoZWQgd29ya2VyIGZvciBhIGdpdmVuIHN1YnNjcmlwdGlvbiBpZC4gKi8KKwlmb3IgKGkg PSAwOyBpIDwgbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VyczsgaSsrKQorCXsKKwkJTG9n aWNhbFJlcFdvcmtlciAqdyA9ICZMb2dpY2FsUmVwQ3R4LT53b3JrZXJzW2ldOworCisJCWlmICh3 LT5zdWJpZCA9PSBzdWJpZCAmJiB3LT5zdWJ3b3JrZXIpCisJCQlyZXMrKzsKKwl9CisKKwlyZXR1 cm4gcmVzOworfQorCiAvKgogICogQXBwbHlMYXVuY2hlclNobWVtU2l6ZQogICoJCUNvbXB1dGUg c3BhY2UgbmVlZGVkIGZvciByZXBsaWNhdGlvbiBsYXVuY2hlciBzaGFyZWQgbWVtb3J5CkBAIC04 NjgsNyArOTQ4LDcgQEAgQXBwbHlMYXVuY2hlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJCQkJCXdh aXRfdGltZSA9IHdhbF9yZXRyaWV2ZV9yZXRyeV9pbnRlcnZhbDsKIAogCQkJCQlsb2dpY2FscmVw X3dvcmtlcl9sYXVuY2goc3ViLT5kYmlkLCBzdWItPm9pZCwgc3ViLT5uYW1lLAotCQkJCQkJCQkJ CQkgc3ViLT5vd25lciwgSW52YWxpZE9pZCk7CisJCQkJCQkJCQkJCSBzdWItPm93bmVyLCBJbnZh bGlkT2lkLCBEU01fSEFORExFX0lOVkFMSUQpOwogCQkJCX0KIAkJCX0KIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMKaW5kZXggMjE5MzdhYjJkMy4uNTBjNTY3ZmI2ZSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYworKysg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jCkBAIC0xMDYzLDEyICsx MDYzLDIxIEBAIFJlcGxpY2F0aW9uT3JpZ2luRXhpdENsZWFudXAoaW50IGNvZGUsIERhdHVtIGFy ZykKICAqIGFycmF5IGRvZXNuJ3QgaGF2ZSB0byBiZSBzZWFyY2hlZCB3aGVuIGNhbGxpbmcKICAq IHJlcGxvcmlnaW5fc2Vzc2lvbl9hZHZhbmNlKCkuCiAgKgotICogT2J2aW91c2x5IG9ubHkgb25l IHN1Y2ggY2FjaGVkIG9yaWdpbiBjYW4gZXhpc3QgcGVyIHByb2Nlc3MgYW5kIHRoZSBjdXJyZW50 CisgKiBOb3JtYWxseSBvbmx5IG9uZSBzdWNoIGNhY2hlZCBvcmlnaW4gY2FuIGV4aXN0IHBlciBw cm9jZXNzIGFuZCB0aGUgY3VycmVudAogICogY2FjaGVkIHZhbHVlIGNhbiBvbmx5IGJlIHNldCBh Z2FpbiBhZnRlciB0aGUgcHJldmlvdXMgdmFsdWUgaXMgdG9ybiBkb3duCiAgKiB3aXRoIHJlcGxv cmlnaW5fc2Vzc2lvbl9yZXNldCgpLgorICoKKyAqIEhvd2V2ZXIsIGlmIHRoZSBmdW5jdGlvbiBw YXJhbWV0ZXIgJ211c3RfYWNxdWlyZScgaXMgZmFsc2UsIHdlIGFsbG93IHRoZQorICogcHJvY2Vz cyB0byB1c2UgdGhlIHNhbWUgc2xvdCBhbHJlYWR5IGFjcXVpcmVkIGJ5IGFub3RoZXIgcHJvY2Vz cy4gSXQncyBzYWZlCisgKiBiZWNhdXNlIDEpIFRoZSBvbmx5IGNhbGxlciAoYXBwbHkgYmFja2dy b3VuZCB3b3JrZXJzKSB3aWxsIG1haW50YWluIHRoZQorICogY29tbWl0IG9yZGVyIGJ5IGFsbG93 aW5nIG9ubHkgb25lIHByb2Nlc3MgdG8gY29tbWl0IGF0IGEgdGltZSwgc28gbm8gdHdvCisgKiB3 b3JrZXJzIHdpbGwgYmUgb3BlcmF0aW5nIG9uIHRoZSBzYW1lIG9yaWdpbiBhdCB0aGUgc2FtZSB0 aW1lIChzZWUgY29tbWVudHMKKyAqIGluIGxvZ2ljYWwvd29ya2VyLmMpLiAyKSBFdmVuIHRob3Vn aCB3ZSB0cnkgdG8gYWR2YW5jZSB0aGUgc2Vzc2lvbidzIG9yaWdpbgorICogY29uY3VycmVudGx5 LCBpdCdzIHNhZmUgdG8gZG8gc28gYXMgd2UgY2hhbmdlL2FkdmFuY2UgdGhlIHNlc3Npb25fb3Jp Z2luCisgKiBMU05zIHVuZGVyIHJlcGxpY2F0ZV9zdGF0ZSBMV0xvY2suCiAgKi8KIHZvaWQKLXJl cGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChSZXBPcmlnaW5JZCBub2RlKQorcmVwbG9yaWdpbl9zZXNz aW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUsIGJvb2wgbXVzdF9hY3F1aXJlKQogewogCXN0YXRp YyBib29sIHJlZ2lzdGVyZWRfY2xlYW51cDsKIAlpbnQJCQlpOwpAQCAtMTExMCw3ICsxMTE5LDcg QEAgcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUpCiAJCWlmIChjdXJz dGF0ZS0+cm9pZGVudCAhPSBub2RlKQogCQkJY29udGludWU7CiAKLQkJZWxzZSBpZiAoY3Vyc3Rh dGUtPmFjcXVpcmVkX2J5ICE9IDApCisJCWVsc2UgaWYgKGN1cnN0YXRlLT5hY3F1aXJlZF9ieSAh PSAwICYmIG11c3RfYWNxdWlyZSkKIAkJewogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNv ZGUoRVJSQ09ERV9PQkpFQ1RfSU5fVVNFKSwKQEAgLTExNDEsNyArMTE1MCwxNCBAQCByZXBsb3Jp Z2luX3Nlc3Npb25fc2V0dXAoUmVwT3JpZ2luSWQgbm9kZSkKIAogCUFzc2VydChzZXNzaW9uX3Jl cGxpY2F0aW9uX3N0YXRlLT5yb2lkZW50ICE9IEludmFsaWRSZXBPcmlnaW5JZCk7CiAKLQlzZXNz aW9uX3JlcGxpY2F0aW9uX3N0YXRlLT5hY3F1aXJlZF9ieSA9IE15UHJvY1BpZDsKKwlpZiAobXVz dF9hY3F1aXJlKQorCQlzZXNzaW9uX3JlcGxpY2F0aW9uX3N0YXRlLT5hY3F1aXJlZF9ieSA9IE15 UHJvY1BpZDsKKwllbHNlIGlmIChzZXNzaW9uX3JlcGxpY2F0aW9uX3N0YXRlLT5hY3F1aXJlZF9i eSA9PSAwKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfQ09ORklHVVJB VElPTl9MSU1JVF9FWENFRURFRCksCisJCQkJIGVycm1zZygiYXBwbHkgYmFja2dyb3VuZCB3b3Jr ZXIgY291bGQgbm90IGZpbmQgcmVwbGljYXRpb24gc3RhdGUgc2xvdCBmb3IgcmVwbGljYXRpb24g b3JpZ2luIHdpdGggT0lEICV1IiwKKwkJCQkJCW5vZGUpLAorCQkJCSBlcnJkZXRhaWwoIlRoZXJl IGlzIG5vIHJlcGxpY2F0aW9uIHN0YXRlIHNsb3Qgc2V0IGJ5IGl0cyBtYWluIGFwcGx5IHdvcmtl ci4iKSkpOwogCiAJTFdMb2NrUmVsZWFzZShSZXBsaWNhdGlvbk9yaWdpbkxvY2spOwogCkBAIC0x MzIxLDcgKzEzMzcsNyBAQCBwZ19yZXBsaWNhdGlvbl9vcmlnaW5fc2Vzc2lvbl9zZXR1cChQR19G VU5DVElPTl9BUkdTKQogCiAJbmFtZSA9IHRleHRfdG9fY3N0cmluZygodGV4dCAqKSBEYXR1bUdl dFBvaW50ZXIoUEdfR0VUQVJHX0RBVFVNKDApKSk7CiAJb3JpZ2luID0gcmVwbG9yaWdpbl9ieV9u YW1lKG5hbWUsIGZhbHNlKTsKLQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luKTsKKwly ZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luLCB0cnVlKTsKIAogCXJlcGxvcmlnaW5fc2Vz c2lvbl9vcmlnaW4gPSBvcmlnaW47CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvcHJvdG8uYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJv dG8uYwppbmRleCBmZjg1MTNlMmQyLi5hZmZkMDhjZmE0IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9wcm90by5jCkBAIC0xMTYzLDMxICsxMTYzLDU2IEBAIGxvZ2ljYWxyZXBfcmVh ZF9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gaW4sIExvZ2ljYWxSZXBDb21taXREYXRhICpjb21t aXRfZGF0YSkKIC8qCiAgKiBXcml0ZSBTVFJFQU0gQUJPUlQgdG8gdGhlIG91dHB1dCBzdHJlYW0u IE5vdGUgdGhhdCB4aWQgYW5kIHN1YnhpZCB3aWxsIGJlCiAgKiBzYW1lIGZvciB0aGUgdG9wLWxl dmVsIHRyYW5zYWN0aW9uIGFib3J0LgorICoKKyAqIElmIHdyaXRlX2Fib3J0X2xzbiBpcyB0cnVl LCBzZW5kIHRoZSBhYm9ydF9sc24gYW5kIGFib3J0X3RpbWUgZmllbGRzLgorICogT3RoZXJ3aXNl IG5vdC4KICAqLwogdm9pZAogbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5m byBvdXQsIFRyYW5zYWN0aW9uSWQgeGlkLAotCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBzdWJ4aWQp CisJCQkJCQkJICBSZW9yZGVyQnVmZmVyVFhOICp0eG4sIFhMb2dSZWNQdHIgYWJvcnRfbHNuLAor CQkJCQkJCSAgYm9vbCB3cml0ZV9hYm9ydF9sc24pCiB7CiAJcHFfc2VuZGJ5dGUob3V0LCBMT0dJ Q0FMX1JFUF9NU0dfU1RSRUFNX0FCT1JUKTsKIAotCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxp ZCh4aWQpICYmIFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHN1YnhpZCkpOworCUFzc2VydChUcmFuc2Fj dGlvbklkSXNWYWxpZCh4aWQpICYmIFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHR4bi0+eGlkKSk7CiAK IAkvKiB0cmFuc2FjdGlvbiBJRCAqLwogCXBxX3NlbmRpbnQzMihvdXQsIHhpZCk7Ci0JcHFfc2Vu ZGludDMyKG91dCwgc3VieGlkKTsKKwlwcV9zZW5kaW50MzIob3V0LCB0eG4tPnhpZCk7CisKKwlp ZiAod3JpdGVfYWJvcnRfbHNuKQorCXsKKwkJcHFfc2VuZGludDY0KG91dCwgYWJvcnRfbHNuKTsK KwkJcHFfc2VuZGludDY0KG91dCwgdHhuLT54YWN0X3RpbWUuYWJvcnRfdGltZSk7CisJfQogfQog CiAvKgogICogUmVhZCBTVFJFQU0gQUJPUlQgZnJvbSB0aGUgb3V0cHV0IHN0cmVhbS4KKyAqCisg KiBJZiByZWFkX2Fib3J0X2xzbiBpcyB0cnVlLCB0cnkgdG8gcmVhZCB0aGUgYWJvcnRfbHNuIGFu ZCBhYm9ydF90aW1lIGZpZWxkcy4KKyAqIE90aGVyd2lzZSBub3QuCiAgKi8KIHZvaWQKLWxvZ2lj YWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBpbiwgVHJhbnNhY3Rpb25JZCAqeGlk LAotCQkJCQkJCSBUcmFuc2FjdGlvbklkICpzdWJ4aWQpCitsb2dpY2FscmVwX3JlYWRfc3RyZWFt X2Fib3J0KFN0cmluZ0luZm8gaW4sCisJCQkJCQkJIExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEg KmFib3J0X2RhdGEsCisJCQkJCQkJIGJvb2wgcmVhZF9hYm9ydF9sc24pCiB7Ci0JQXNzZXJ0KHhp ZCAmJiBzdWJ4aWQpOworCUFzc2VydChhYm9ydF9kYXRhKTsKIAotCSp4aWQgPSBwcV9nZXRtc2dp bnQoaW4sIDQpOwotCSpzdWJ4aWQgPSBwcV9nZXRtc2dpbnQoaW4sIDQpOworCWFib3J0X2RhdGEt PnhpZCA9IHBxX2dldG1zZ2ludChpbiwgNCk7CisJYWJvcnRfZGF0YS0+c3VieGlkID0gcHFfZ2V0 bXNnaW50KGluLCA0KTsKKworCWlmIChyZWFkX2Fib3J0X2xzbikKKwl7CisJCWFib3J0X2RhdGEt PmFib3J0X2xzbiA9IHBxX2dldG1zZ2ludDY0KGluKTsKKwkJYWJvcnRfZGF0YS0+YWJvcnRfdGlt ZSA9IHBxX2dldG1zZ2ludDY0KGluKTsKKwl9CisJZWxzZQorCXsKKwkJYWJvcnRfZGF0YS0+YWJv cnRfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CisJCWFib3J0X2RhdGEtPmFib3J0X3RpbWUgPSAw OworCX0KIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvcmVvcmRlcmJ1ZmZlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9y ZGVyYnVmZmVyLmMKaW5kZXggODhhMzdmZGU3Mi4uODk4OTMyODA0NiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKQEAgLTI4MjYsNyArMjgy Niw4IEBAIFJlb3JkZXJCdWZmZXJGaW5pc2hQcmVwYXJlZChSZW9yZGVyQnVmZmVyICpyYiwgVHJh bnNhY3Rpb25JZCB4aWQsCiAgKiBkaXNrLgogICovCiB2b2lkCi1SZW9yZGVyQnVmZmVyQWJvcnQo UmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKK1Jl b3JkZXJCdWZmZXJBYm9ydChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhM b2dSZWNQdHIgbHNuLAorCQkJCSAgIFRpbWVzdGFtcFR6IGFib3J0X3RpbWUpCiB7CiAJUmVvcmRl ckJ1ZmZlclRYTiAqdHhuOwogCkBAIC0yODM3LDYgKzI4MzgsOCBAQCBSZW9yZGVyQnVmZmVyQWJv cnQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikK IAlpZiAodHhuID09IE5VTEwpCiAJCXJldHVybjsKIAorCXR4bi0+eGFjdF90aW1lLmFib3J0X3Rp bWUgPSBhYm9ydF90aW1lOworCiAJLyogRm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9ucyBub3RpZnkg dGhlIHJlbW90ZSBub2RlIGFib3V0IHRoZSBhYm9ydC4gKi8KIAlpZiAocmJ0eG5faXNfc3RyZWFt ZWQodHhuKSkKIAl7CkBAIC0yOTExLDcgKzI5MTQsOCBAQCBSZW9yZGVyQnVmZmVyQWJvcnRPbGQo UmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgb2xkZXN0UnVubmluZ1hpZCkKICAqIHRv IHRoaXMgeGlkIG1pZ2h0IHJlLWNyZWF0ZSB0aGUgdHJhbnNhY3Rpb24gaW5jb21wbGV0ZWx5Lgog ICovCiB2b2lkCi1SZW9yZGVyQnVmZmVyRm9yZ2V0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2Fj dGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCitSZW9yZGVyQnVmZmVyRm9yZ2V0KFJlb3JkZXJC dWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24sCisJCQkJCVRpbWVz dGFtcFR6IGFib3J0X3RpbWUpCiB7CiAJUmVvcmRlckJ1ZmZlclRYTiAqdHhuOwogCkBAIC0yOTIy LDYgKzI5MjYsOCBAQCBSZW9yZGVyQnVmZmVyRm9yZ2V0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFu c2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCiAJaWYgKHR4biA9PSBOVUxMKQogCQlyZXR1 cm47CiAKKwl0eG4tPnhhY3RfdGltZS5hYm9ydF90aW1lID0gYWJvcnRfdGltZTsKKwogCS8qIEZv ciBzdHJlYW1lZCB0cmFuc2FjdGlvbnMgbm90aWZ5IHRoZSByZW1vdGUgbm9kZSBhYm91dCB0aGUg YWJvcnQuICovCiAJaWYgKHJidHhuX2lzX3N0cmVhbWVkKHR4bikpCiAJCXJiLT5zdHJlYW1fYWJv cnQocmIsIHR4biwgbHNuKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvdGFibGVzeW5jLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxl c3luYy5jCmluZGV4IDY3MGM2ZmNhZGEuLjhmZmJhN2UyZTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwpAQCAtNTY4LDcgKzU2OCw4IEBAIHByb2Nlc3Nf c3luY2luZ190YWJsZXNfZm9yX2FwcGx5KFhMb2dSZWNQdHIgY3VycmVudF9sc24pCiAJCQkJCQkJ CQkJCQkgTXlTdWJzY3JpcHRpb24tPm9pZCwKIAkJCQkJCQkJCQkJCSBNeVN1YnNjcmlwdGlvbi0+ bmFtZSwKIAkJCQkJCQkJCQkJCSBNeUxvZ2ljYWxSZXBXb3JrZXItPnVzZXJpZCwKLQkJCQkJCQkJ CQkJCSByc3RhdGUtPnJlbGlkKTsKKwkJCQkJCQkJCQkJCSByc3RhdGUtPnJlbGlkLAorCQkJCQkJ CQkJCQkJIERTTV9IQU5ETEVfSU5WQUxJRCk7CiAJCQkJCQloZW50cnktPmxhc3Rfc3RhcnRfdGlt ZSA9IG5vdzsKIAkJCQkJfQogCQkJCX0KQEAgLTU4OSw2ICs1OTAsOSBAQCBwcm9jZXNzX3N5bmNp bmdfdGFibGVzX2Zvcl9hcHBseShYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKQogdm9pZAogcHJvY2Vz c19zeW5jaW5nX3RhYmxlcyhYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKQogeworCWlmIChNeUxvZ2lj YWxSZXBXb3JrZXItPnN1YndvcmtlcikKKwkJcmV0dXJuOworCiAJaWYgKGFtX3RhYmxlc3luY193 b3JrZXIoKSkKIAkJcHJvY2Vzc19zeW5jaW5nX3RhYmxlc19mb3Jfc3luYyhjdXJyZW50X2xzbik7 CiAJZWxzZQpAQCAtMTI3Myw3ICsxMjc3LDcgQEAgTG9naWNhbFJlcFN5bmNUYWJsZVN0YXJ0KFhM b2dSZWNQdHIgKm9yaWdpbl9zdGFydHBvcykKIAkJICogdGltZSB0aGlzIHRhYmxlc3luYyB3YXMg bGF1bmNoZWQuCiAJCSAqLwogCQlvcmlnaW5pZCA9IHJlcGxvcmlnaW5fYnlfbmFtZShvcmlnaW5u YW1lLCBmYWxzZSk7Ci0JCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCk7CisJCXJl cGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCwgdHJ1ZSk7CiAJCXJlcGxvcmlnaW5fc2Vz c2lvbl9vcmlnaW4gPSBvcmlnaW5pZDsKIAkJKm9yaWdpbl9zdGFydHBvcyA9IHJlcGxvcmlnaW5f c2Vzc2lvbl9nZXRfcHJvZ3Jlc3MoZmFsc2UpOwogCkBAIC0xMzg0LDcgKzEzODgsNyBAQCBMb2dp Y2FsUmVwU3luY1RhYmxlU3RhcnQoWExvZ1JlY1B0ciAqb3JpZ2luX3N0YXJ0cG9zKQogCQkJCQkJ ICAgdHJ1ZSAvKiBnbyBiYWNrd2FyZCAqLyAsIHRydWUgLyogV0FMIGxvZyAqLyApOwogCQlVbmxv Y2tSZWxhdGlvbk9pZChSZXBsaWNhdGlvbk9yaWdpblJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxv Y2spOwogCi0JCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCk7CisJCXJlcGxvcmln aW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCwgdHJ1ZSk7CiAJCXJlcGxvcmlnaW5fc2Vzc2lvbl9v cmlnaW4gPSBvcmlnaW5pZDsKIAl9CiAJZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvd29ya2VyLmMKaW5kZXggMzhlM2IxYzFiMy4uOWRhMTFkZDQxYyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0yMiw4ICsyMiwyOCBAQAogICogU1RSRUFN RUQgVFJBTlNBQ1RJT05TCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIFN0cmVhbWVkIHRy YW5zYWN0aW9ucyAobGFyZ2UgdHJhbnNhY3Rpb25zIGV4Y2VlZGluZyBhIG1lbW9yeSBsaW1pdCBv biB0aGUKLSAqIHVwc3RyZWFtKSBhcmUgbm90IGFwcGxpZWQgaW1tZWRpYXRlbHksIGJ1dCBpbnN0 ZWFkLCB0aGUgZGF0YSBpcyB3cml0dGVuCi0gKiB0byB0ZW1wb3JhcnkgZmlsZXMgYW5kIHRoZW4g YXBwbGllZCBhdCBvbmNlIHdoZW4gdGhlIGZpbmFsIGNvbW1pdCBhcnJpdmVzLgorICogdXBzdHJl YW0pIGFyZSBhcHBsaWVkIHVzaW5nIG9uZSBvZiB0d28gYXBwcm9hY2hlcy4KKyAqCisgKiAxKSBT ZXBhcmF0ZSBiYWNrZ3JvdW5kIHdvcmtlcnMKKyAqCisgKiBJZiBzdHJlYW1pbmcgPSBwYXJhbGxl bCwgV2UgYXNzaWduIGEgbmV3IGFwcGx5IGJhY2tncm91bmQgd29ya2VyIChpZgorICogYXZhaWxh YmxlKSBhcyBzb29uIGFzIHRoZSB4YWN0J3MgZmlyc3Qgc3RyZWFtIGlzIHJlY2VpdmVkLiBUaGUg bWFpbiBhcHBseQorICogd29ya2VyIHdpbGwgc2VuZCBjaGFuZ2VzIHRvIHRoaXMgbmV3IHdvcmtl ciB2aWEgc2hhcmVkIG1lbW9yeS4gV2Uga2VlcCB0aGlzCisgKiB3b3JrZXIgYXNzaWduZWQgdGls bCB0aGUgdHJhbnNhY3Rpb24gY29tbWl0IGlzIHJlY2VpdmVkIGFuZCBhbHNvIHdhaXQgZm9yCisg KiB0aGUgd29ya2VyIHRvIGZpbmlzaCBhdCBjb21taXQuIFRoaXMgcHJlc2VydmVzIGNvbW1pdCBv cmRlcmluZyBhbmQgYXZvaWRzCisgKiBmaWxlIEkvTyBpbiBtb3N0IGNhc2VzLiBXZSBzdGlsbCBu ZWVkIHRvIHNwaWxsIHRvIGEgZmlsZSBpZiB0aGVyZSBpcyBubworICogd29ya2VyIGF2YWlsYWJs ZS4gSXQgaXMgaW1wb3J0YW50IHRvIG1haW50YWluIGNvbW1pdCBvcmRlciB0byBhdm9pZCBmYWls dXJlcworICogZHVlIHRvIChhKSB0cmFuc2FjdGlvbiBkZXBlbmRlbmNpZXMsIHNheSBpZiB3ZSBp bnNlcnQgYSByb3cgaW4gdGhlIGZpcnN0CisgKiB0cmFuc2FjdGlvbiBhbmQgdXBkYXRlIGl0IGlu IHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24gdGhlbiBhbGxvd2luZyB0byBhcHBseQorICogYm90aCBp biBwYXJhbGxlbCBjYW4gbGVhZCB0byBmYWlsdXJlIGluIHRoZSB1cGRhdGUuIChiKSBkZWFkbG9j a3MsIGFsbG93aW5nCisgKiB0cmFuc2FjdGlvbnMgdGhhdCB1cGRhdGUgdGhlIHNhbWUgc2V0IG9m IHJvd3MvdGFibGVzIGluIG9wcG9zaXRlIG9yZGVyIHRvIGJlCisgKiBhcHBsaWVkIGluIHBhcmFs bGVsIGNhbiBsZWFkIHRvIGRlYWRsb2Nrcy4KKyAqCisgKiAyKSBXcml0ZSB0byB0ZW1wb3Jhcnkg ZmlsZXMgYW5kIGFwcGx5IHdoZW4gdGhlIGZpbmFsIGNvbW1pdCBhcnJpdmVzCisgKgorICogSWYg bm8gd29ya2VyIGlzIGF2YWlsYWJsZSB0byBoYW5kbGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24sIHRo ZSBkYXRhIGlzCisgKiB3cml0dGVuIHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQgdGhlbiBhcHBsaWVk IGF0IG9uY2Ugd2hlbiB0aGUgZmluYWwgY29tbWl0CisgKiBhcnJpdmVzLgogICoKICAqIFVubGlr ZSB0aGUgcmVndWxhciAobm9uLXN0cmVhbWVkKSBjYXNlLCBoYW5kbGluZyBzdHJlYW1lZCB0cmFu c2FjdGlvbnMgaGFzCiAgKiB0byBoYW5kbGUgYWJvcnRzIG9mIGJvdGggdGhlIHRvcGxldmVsIHRy YW5zYWN0aW9uIGFuZCBzdWJ0cmFuc2FjdGlvbnMuIFRoaXMKQEAgLTIxOSwyMCArMjM5LDggQEAg dHlwZWRlZiBzdHJ1Y3QgQXBwbHlFeGVjdXRpb25EYXRhCiAJUGFydGl0aW9uVHVwbGVSb3V0aW5n ICpwcm91dGU7CS8qIHBhcnRpdGlvbiByb3V0aW5nIGluZm8gKi8KIH0gQXBwbHlFeGVjdXRpb25E YXRhOwogCi0vKiBTdHJ1Y3QgZm9yIHNhdmluZyBhbmQgcmVzdG9yaW5nIGFwcGx5IGVycmNvbnRl eHQgaW5mb3JtYXRpb24gKi8KLXR5cGVkZWYgc3RydWN0IEFwcGx5RXJyb3JDYWxsYmFja0FyZwot ewotCUxvZ2ljYWxSZXBNc2dUeXBlIGNvbW1hbmQ7CS8qIDAgaWYgaW52YWxpZCAqLwotCUxvZ2lj YWxSZXBSZWxNYXBFbnRyeSAqcmVsOwotCi0JLyogUmVtb3RlIG5vZGUgaW5mb3JtYXRpb24gKi8K LQlpbnQJCQlyZW1vdGVfYXR0bnVtOwkvKiAtMSBpZiBpbnZhbGlkICovCi0JVHJhbnNhY3Rpb25J ZCByZW1vdGVfeGlkOwotCVhMb2dSZWNQdHIJZmluaXNoX2xzbjsKLQljaGFyCSAgICpvcmlnaW5f bmFtZTsKLX0gQXBwbHlFcnJvckNhbGxiYWNrQXJnOwotCi1zdGF0aWMgQXBwbHlFcnJvckNhbGxi YWNrQXJnIGFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZyA9CisvKiBlcnJjb250ZXh0IHRyYWNrZXIg Ki8KK0FwcGx5RXJyb3JDYWxsYmFja0FyZyBhcHBseV9lcnJvcl9jYWxsYmFja19hcmcgPQogewog CS5jb21tYW5kID0gMCwKIAkucmVsID0gTlVMTCwKQEAgLTI0Miw3ICsyNTAsNyBAQCBzdGF0aWMg QXBwbHlFcnJvckNhbGxiYWNrQXJnIGFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZyA9CiAJLm9yaWdp bl9uYW1lID0gTlVMTCwKIH07CiAKLXN0YXRpYyBNZW1vcnlDb250ZXh0IEFwcGx5TWVzc2FnZUNv bnRleHQgPSBOVUxMOworTWVtb3J5Q29udGV4dCBBcHBseU1lc3NhZ2VDb250ZXh0ID0gTlVMTDsK IE1lbW9yeUNvbnRleHQgQXBwbHlDb250ZXh0ID0gTlVMTDsKIAogLyogcGVyIHN0cmVhbSBjb250 ZXh0IGZvciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zICovCkBAIC0yNTEsMjcgKzI1OSwzOCBAQCBz dGF0aWMgTWVtb3J5Q29udGV4dCBMb2dpY2FsU3RyZWFtaW5nQ29udGV4dCA9IE5VTEw7CiBXYWxS ZWNlaXZlckNvbm4gKkxvZ1JlcFdvcmtlcldhbFJjdkNvbm4gPSBOVUxMOwogCiBTdWJzY3JpcHRp b24gKk15U3Vic2NyaXB0aW9uID0gTlVMTDsKLXN0YXRpYyBib29sIE15U3Vic2NyaXB0aW9uVmFs aWQgPSBmYWxzZTsKK2Jvb2wgTXlTdWJzY3JpcHRpb25WYWxpZCA9IGZhbHNlOwogCiBib29sCQlp bl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIHN0YXRpYyBYTG9nUmVjUHRyIHJlbW90ZV9m aW5hbF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAogLyogZmllbGRzIHZhbGlkIG9ubHkgd2hl biBwcm9jZXNzaW5nIHN0cmVhbWVkIHRyYW5zYWN0aW9uICovCi1zdGF0aWMgYm9vbCBpbl9zdHJl YW1lZF90cmFuc2FjdGlvbiA9IGZhbHNlOworYm9vbCBpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9 IGZhbHNlOworCitUcmFuc2FjdGlvbklkIHN0cmVhbV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25J ZDsKK3N0YXRpYyBBcHBseUJnd29ya2VyU3RhdGUgKnN0cmVhbV9hcHBseV93b3JrZXIgPSBOVUxM OwogCi1zdGF0aWMgVHJhbnNhY3Rpb25JZCBzdHJlYW1feGlkID0gSW52YWxpZFRyYW5zYWN0aW9u SWQ7CisvKiBDaGVjayBpZiB3ZSBhcmUgYXBwbHlpbmcgdGhlIHRyYW5zYWN0aW9uIGluIGFuIGFw cGx5IGJhY2tncm91bmQgd29ya2VyICovCisjZGVmaW5lIGFwcGx5X2Jnd29ya2VyX2FjdGl2ZSgp IChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiAmJiBzdHJlYW1fYXBwbHlfd29ya2VyICE9IE5VTEwp CisKKy8qCisgKiBUaGUgbnVtYmVyIG9mIGNoYW5nZXMgZHVyaW5nIG9uZSBzdHJlYW1pbmcgYmxv Y2sgKG9ubHkgZm9yIGFwcGx5IGJhY2tncm91bmQKKyAqIHdvcmtlcnMpCisgKi8KK3N0YXRpYyB1 aW50MzIgbmNoYW5nZXMgPSAwOwogCiAvKgogICogV2UgZW5hYmxlIHNraXBwaW5nIGFsbCBkYXRh IG1vZGlmaWNhdGlvbiBjaGFuZ2VzIChJTlNFUlQsIFVQREFURSwgZXRjLikgZm9yCiAgKiB0aGUg c3Vic2NyaXB0aW9uIGlmIHRoZSByZW1vdGUgdHJhbnNhY3Rpb24ncyBmaW5pc2ggTFNOIG1hdGNo ZXMgdGhlIHN1YnNraXBsc24uCiAgKiBPbmNlIHdlIHN0YXJ0IHNraXBwaW5nIGNoYW5nZXMsIHdl IGRvbid0IHN0b3AgaXQgdW50aWwgd2Ugc2tpcCBhbGwgY2hhbmdlcyBvZgogICogdGhlIHRyYW5z YWN0aW9uIGV2ZW4gaWYgcGdfc3Vic2NyaXB0aW9uIGlzIHVwZGF0ZWQgYW5kIE15U3Vic2NyaXB0 aW9uLT5za2lwbHNuCi0gKiBnZXRzIGNoYW5nZWQgb3IgcmVzZXQgZHVyaW5nIHRoYXQuIEFsc28s IGluIHN0cmVhbWluZyB0cmFuc2FjdGlvbiBjYXNlcywgd2UKLSAqIGRvbid0IHNraXAgcmVjZWl2 aW5nIGFuZCBzcG9vbGluZyB0aGUgY2hhbmdlcyBzaW5jZSB3ZSBkZWNpZGUgd2hldGhlciBvciBu b3QKKyAqIGdldHMgY2hhbmdlZCBvciByZXNldCBkdXJpbmcgdGhhdC4gQWxzbywgaW4gc3RyZWFt aW5nIHRyYW5zYWN0aW9uIGNhc2VzIChzdHJlYW1pbmcgPSBvbiksCisgKiB3ZSBkb24ndCBza2lw IHJlY2VpdmluZyBhbmQgc3Bvb2xpbmcgdGhlIGNoYW5nZXMgc2luY2Ugd2UgZGVjaWRlIHdoZXRo ZXIgb3Igbm90CiAgKiB0byBza2lwIGFwcGx5aW5nIHRoZSBjaGFuZ2VzIHdoZW4gc3RhcnRpbmcg dG8gYXBwbHkgY2hhbmdlcy4gVGhlIHN1YnNraXBsc24gaXMKICAqIGNsZWFyZWQgYWZ0ZXIgc3Vj Y2Vzc2Z1bGx5IHNraXBwaW5nIHRoZSB0cmFuc2FjdGlvbiBvciBhcHBseWluZyBub24tZW1wdHkK ICAqIHRyYW5zYWN0aW9uLiBUaGUgbGF0dGVyIHByZXZlbnRzIHRoZSBtaXN0YWtlbmx5IHNwZWNp ZmllZCBzdWJza2lwbHNuIGZyb20KLSAqIGJlaW5nIGxlZnQuCisgKiBiZWluZyBsZWZ0LiBOb3Rl IHRoYXQgd2UgY2Fubm90IHNraXAgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiBpbiBwYXJhbGxl bAorICogbW9kZSwgYmVjYXVzZSB3ZSBjYW5ub3QgZ2V0IHRoZSBmaW5pc2ggTFNOIGJlZm9yZSBh cHBseWluZyB0aGUgY2hhbmdlcy4KICAqLwogc3RhdGljIFhMb2dSZWNQdHIgc2tpcF94YWN0X2Zp bmlzaF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKICNkZWZpbmUgaXNfc2tpcHBpbmdfY2hhbmdl cygpICh1bmxpa2VseSghWExvZ1JlY1B0cklzSW52YWxpZChza2lwX3hhY3RfZmluaXNoX2xzbikp KQpAQCAtMzI0LDkgKzM0Myw2IEBAIHN0YXRpYyB2b2lkIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRp b24odm9pZCk7CiAKIHN0YXRpYyB2b2lkIERpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KHZvaWQp OwogCi0vKiBwcm90b3R5cGUgbmVlZGVkIGJlY2F1c2Ugb2Ygc3RyZWFtX2NvbW1pdCAqLwotc3Rh dGljIHZvaWQgYXBwbHlfZGlzcGF0Y2goU3RyaW5nSW5mbyBzKTsKLQogc3RhdGljIHZvaWQgYXBw bHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbChMb2dpY2FsUmVwQ29tbWl0RGF0YSAqY29tbWl0X2Rh dGEpOwogc3RhdGljIHZvaWQgYXBwbHlfaGFuZGxlX2luc2VydF9pbnRlcm5hbChBcHBseUV4ZWN1 dGlvbkRhdGEgKmVkYXRhLAogCQkJCQkJCQkJCSBSZXN1bHRSZWxJbmZvICpyZWxpbmZvLApAQCAt MzU5LDcgKzM3NSw2IEBAIHN0YXRpYyB2b2lkIHN0b3Bfc2tpcHBpbmdfY2hhbmdlcyh2b2lkKTsK IHN0YXRpYyB2b2lkIGNsZWFyX3N1YnNjcmlwdGlvbl9za2lwX2xzbihYTG9nUmVjUHRyIGZpbmlz aF9sc24pOwogCiAvKiBGdW5jdGlvbnMgZm9yIGFwcGx5IGVycm9yIGNhbGxiYWNrICovCi1zdGF0 aWMgdm9pZCBhcHBseV9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcpOwogc3RhdGljIGlubGluZSB2 b2lkIHNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QoVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dS ZWNQdHIgbHNuKTsKIHN0YXRpYyBpbmxpbmUgdm9pZCByZXNldF9hcHBseV9lcnJvcl9jb250ZXh0 X2luZm8odm9pZCk7CiAKQEAgLTQyNiw0MCArNDQxLDg1IEBAIGVuZF9yZXBsaWNhdGlvbl9zdGVw KHZvaWQpCiB9CiAKIC8qCi0gKiBIYW5kbGUgc3RyZWFtZWQgdHJhbnNhY3Rpb25zLgorICogSGFu ZGxlIHN0cmVhbWVkIHRyYW5zYWN0aW9ucyBmb3IgYm90aCB0aGUgbWFpbiBhcHBseSB3b3JrZXIg YW5kIHRoZSBhcHBseQorICogYmFja2dyb3VuZCB3b3JrZXJzLgorICoKKyAqIEluIHN0cmVhbWlu ZyBjYXNlIChyZWNlaXZpbmcgYSBibG9jayBvZiBzdHJlYW1lZCB0cmFuc2FjdGlvbiksIGZvcgor ICogU1VCU1RSRUFNX09OIG1vZGUsIHdlIHNpbXBseSByZWRpcmVjdCBpdCB0byBhIGZpbGUgZm9y IHRoZSBwcm9wZXIgdG9wbGV2ZWwKKyAqIHRyYW5zYWN0aW9uLCBhbmQgZm9yIFNVQlNUUkVBTV9Q QVJBTExFTCBtb2RlLCB3ZSBzZW5kIHRoZSBjaGFuZ2VzIHRvCisgKiBhcHBseSBiYWNrZ3JvdW5k IHdvcmtlciAoTE9HSUNBTF9SRVBfTVNHX1JFTEFUSU9OIG9yIExPR0lDQUxfUkVQX01TR19UWVBF CisgKiBjaGFuZ2VzIHdpbGwgYWxzbyBiZSBhcHBsaWVkIGluIG1haW4gYXBwbHkgd29ya2VyKS4K ICAqCi0gKiBJZiBpbiBzdHJlYW1pbmcgbW9kZSAocmVjZWl2aW5nIGEgYmxvY2sgb2Ygc3RyZWFt ZWQgdHJhbnNhY3Rpb24pLCB3ZQotICogc2ltcGx5IHJlZGlyZWN0IGl0IHRvIGEgZmlsZSBmb3Ig dGhlIHByb3BlciB0b3BsZXZlbCB0cmFuc2FjdGlvbi4KKyAqIEZvciBub24tc3RyZWFtZWQgdHJh bnNhY3Rpb25zLCByZXR1cm5zIGZhbHNlOworICogRm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9ucywg cmV0dXJucyB0cnVlIGlmIGluIG1haW4gYXBwbHkgd29ya2VyLCBmYWxzZQorICogb3RoZXJ3aXNl LgogICoKLSAqIFJldHVybnMgdHJ1ZSBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb25zLCBmYWxzZSBv dGhlcndpc2UgKHJlZ3VsYXIgbW9kZSkuCisgKiBFeGNlcHRpb246IFdoZW4gcGFyYWxsZWwgbW9k ZSBpcyBhcHBseWluZyBzdHJlYW1lZCB0cmFuc2FjdGlvbiBpbiB0aGUgbWFpbgorICogYXBwbHkg d29ya2VyLCAoZS5nLiB3aGVuIGFkZHJlc3NpbmcgTE9HSUNBTF9SRVBfTVNHX1JFTEFUSU9OIG9y CisgKiBMT0dJQ0FMX1JFUF9NU0dfVFlQRSBjaGFuZ2VzKSwgdGhlbiByZXR1cm4gZmFsc2UuCiAg Ki8KIHN0YXRpYyBib29sCiBoYW5kbGVfc3RyZWFtZWRfdHJhbnNhY3Rpb24oTG9naWNhbFJlcE1z Z1R5cGUgYWN0aW9uLCBTdHJpbmdJbmZvIHMpCiB7Ci0JVHJhbnNhY3Rpb25JZCB4aWQ7CisJVHJh bnNhY3Rpb25JZCBjdXJyZW50X3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCi0JLyogbm90 IGluIHN0cmVhbWluZyBtb2RlICovCi0JaWYgKCFpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKKwkv KiBOb3QgaW4gc3RyZWFtaW5nIG1vZGUgKi8KKwlpZiAoIShpbl9zdHJlYW1lZF90cmFuc2FjdGlv biB8fCBhbV9hcHBseV9iZ3dvcmtlcigpKSkKIAkJcmV0dXJuIGZhbHNlOwogCi0JQXNzZXJ0KHN0 cmVhbV9mZCAhPSBOVUxMKTsKIAlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoc3RyZWFtX3hp ZCkpOwogCiAJLyoKIAkgKiBXZSBzaG91bGQgaGF2ZSByZWNlaXZlZCBYSUQgb2YgdGhlIHN1Ynhh Y3QgYXMgdGhlIGZpcnN0IHBhcnQgb2YgdGhlCiAJICogbWVzc2FnZSwgc28gZXh0cmFjdCBpdC4K IAkgKi8KLQl4aWQgPSBwcV9nZXRtc2dpbnQocywgNCk7CisJY3VycmVudF94aWQgPSBwcV9nZXRt c2dpbnQocywgNCk7CiAKLQlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkpCisJaWYgKCFU cmFuc2FjdGlvbklkSXNWYWxpZChjdXJyZW50X3hpZCkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJ KGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAogCQkJCSBlcnJtc2dfaW50ZXJu YWwoImludmFsaWQgdHJhbnNhY3Rpb24gSUQgaW4gc3RyZWFtZWQgcmVwbGljYXRpb24gdHJhbnNh Y3Rpb24iKSkpOwogCi0JLyogQWRkIHRoZSBuZXcgc3VieGFjdCB0byB0aGUgYXJyYXkgKHVubGVz cyBhbHJlYWR5IHRoZXJlKS4gKi8KLQlzdWJ4YWN0X2luZm9fYWRkKHhpZCk7CisJaWYgKGFtX2Fw cGx5X2Jnd29ya2VyKCkpCisJeworCQkvKiBEZWZpbmUgYSBzYXZlcG9pbnQgZm9yIGEgc3VieGFj dCBpZiBuZWVkZWQuICovCisJCWFwcGx5X2Jnd29ya2VyX3N1YnhhY3RfaW5mb19hZGQoY3VycmVu dF94aWQpOworCisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlpZiAoYXBwbHlfYmd3b3JrZXJfYWN0 aXZlKCkpCisJeworCQkvKgorCQkgKiBUaGlzIGlzIHRoZSBtYWluIGFwcGx5IHdvcmtlciwgYnV0 IHRoZXJlIGlzIGFuIGFwcGx5IGJhY2tncm91bmQKKwkJICogd29ya2VyLCBzbyBhcHBseSB0aGUg Y2hhbmdlcyBvZiB0aGlzIHRyYW5zYWN0aW9uIGluIHRoYXQgYmFja2dyb3VuZAorCQkgKiB3b3Jr ZXIuIFBhc3MgdGhlIGRhdGEgdG8gdGhlIHdvcmtlci4KKwkJICovCisJCWFwcGx5X2Jnd29ya2Vy X3NlbmRfZGF0YShzdHJlYW1fYXBwbHlfd29ya2VyLCBzLT5sZW4sIHMtPmRhdGEpOworCQluY2hh bmdlcyArPSAxOworCisJCS8qCisJCSAqIFhYWCBUaGUgcHVibGlzaGVyIHNpZGUgZG9lc24ndCBh bHdheXMgc2VuZCByZWxhdGlvbi90eXBlIHVwZGF0ZQorCQkgKiBtZXNzYWdlcyBhZnRlciB0aGUg c3RyZWFtaW5nIHRyYW5zYWN0aW9uLCBzbyBhbHNvIHVwZGF0ZSB0aGUKKwkJICogcmVsYXRpb24v dHlwZSBpbiBtYWluIGFwcGx5IHdvcmtlciBoZXJlLiBTZWUgZnVuY3Rpb24KKwkJICogY2xlYW51 cF9yZWxfc3luY19jYWNoZS4KKwkJICovCisJCWlmIChhY3Rpb24gPT0gTE9HSUNBTF9SRVBfTVNH X1JFTEFUSU9OIHx8CisJCQlhY3Rpb24gPT0gTE9HSUNBTF9SRVBfTVNHX1RZUEUpCisJCQlyZXR1 cm4gZmFsc2U7CisKKwkJcmV0dXJuIHRydWU7CisJfQorCisJLyoKKwkgKiBUaGlzIGlzIHRoZSBt YWluIGFwcGx5IHdvcmtlciwgYnV0IHRoZXJlIGlzIG5vIGFwcGx5IGJhY2tncm91bmQgd29ya2Vy LAorCSAqIHNvIHdyaXRlIHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQgYXBwbHkgd2hlbiB0aGUgZmlu YWwgY29tbWl0IGFycml2ZXMuCisJICoKKwkgKiBBZGQgdGhlIG5ldyBzdWJ4YWN0IHRvIHRoZSBh cnJheSAodW5sZXNzIGFscmVhZHkgdGhlcmUpLgorCSAqLworCXN1YnhhY3RfaW5mb19hZGQoY3Vy cmVudF94aWQpOwogCi0JLyogd3JpdGUgdGhlIGNoYW5nZSB0byB0aGUgY3VycmVudCBmaWxlICov CisJLyogV3JpdGUgdGhlIGNoYW5nZSB0byB0aGUgY3VycmVudCBmaWxlICovCiAJc3RyZWFtX3dy aXRlX2NoYW5nZShhY3Rpb24sIHMpOwogCiAJcmV0dXJuIHRydWU7CkBAIC04NDQsNiArOTA0LDkg QEAgYXBwbHlfaGFuZGxlX2NvbW1pdChTdHJpbmdJbmZvIHMpCiAKIAlhcHBseV9oYW5kbGVfY29t bWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7CiAKKwkvKiBDaGVjayB0aGUgc3RhdHVzIG9mIGFw cGx5IGJhY2tncm91bmQgd29ya2VyIGlmIGFueS4gKi8KKwlhcHBseV9iZ3dvcmtlcl9jaGVja19z dGF0dXMoKTsKKwogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJv bml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhjb21taXRfZGF0 YS5lbmRfbHNuKTsKIApAQCAtODk4LDcgKzk2MSw5IEBAIGFwcGx5X2hhbmRsZV9wcmVwYXJlX2lu dGVybmFsKExvZ2ljYWxSZXBQcmVwYXJlZFR4bkRhdGEgKnByZXBhcmVfZGF0YSkKIAkgKiBCZWdp blRyYW5zYWN0aW9uQmxvY2sgaXMgbmVjZXNzYXJ5IHRvIGJhbGFuY2UgdGhlIEVuZFRyYW5zYWN0 aW9uQmxvY2sKIAkgKiBjYWxsZWQgd2l0aGluIHRoZSBQcmVwYXJlVHJhbnNhY3Rpb25CbG9jayBi ZWxvdy4KIAkgKi8KLQlCZWdpblRyYW5zYWN0aW9uQmxvY2soKTsKKwlpZiAoIUlzVHJhbnNhY3Rp b25CbG9jaygpKQorCQlCZWdpblRyYW5zYWN0aW9uQmxvY2soKTsKKwogCUNvbW1pdFRyYW5zYWN0 aW9uQ29tbWFuZCgpOyAvKiBDb21wbGV0ZXMgdGhlIHByZWNlZGluZyBCZWdpbiBjb21tYW5kLiAq LwogCiAJLyoKQEAgLTk1MCw2ICsxMDE1LDkgQEAgYXBwbHlfaGFuZGxlX3ByZXBhcmUoU3RyaW5n SW5mbyBzKQogCiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKKwkvKiBDaGVjayB0 aGUgc3RhdHVzIG9mIGFwcGx5IGJhY2tncm91bmQgd29ya2VyIGlmIGFueS4gKi8KKwlhcHBseV9i Z3dvcmtlcl9jaGVja19zdGF0dXMoKTsKKwogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFy ZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3Rh YmxlcyhwcmVwYXJlX2RhdGEuZW5kX2xzbik7CiAKQEAgLTEwNjQsMTAgKzExMzIsNiBAQCBhcHBs eV9oYW5kbGVfcm9sbGJhY2tfcHJlcGFyZWQoU3RyaW5nSW5mbyBzKQogCiAvKgogICogSGFuZGxl IFNUUkVBTSBQUkVQQVJFLgotICoKLSAqIExvZ2ljIGlzIGluIHR3byBwYXJ0czoKLSAqIDEuIFJl cGxheSBhbGwgdGhlIHNwb29sZWQgb3BlcmF0aW9ucwotICogMi4gTWFyayB0aGUgdHJhbnNhY3Rp b24gYXMgcHJlcGFyZWQKICAqLwogc3RhdGljIHZvaWQKIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJl cGFyZShTdHJpbmdJbmZvIHMpCkBAIC0xMDg4LDI0ICsxMTUyLDc2IEBAIGFwcGx5X2hhbmRsZV9z dHJlYW1fcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAJbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9wcmVw YXJlKHMsICZwcmVwYXJlX2RhdGEpOwogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QocHJl cGFyZV9kYXRhLnhpZCwgcHJlcGFyZV9kYXRhLnByZXBhcmVfbHNuKTsKIAotCWVsb2coREVCVUcx LCAicmVjZWl2ZWQgcHJlcGFyZSBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb24gJXUiLCBwcmVwYXJl X2RhdGEueGlkKTsKKwlpZiAoYW1fYXBwbHlfYmd3b3JrZXIoKSkKKwl7CisJCS8qIE1hcmsgdGhl IHRyYW5zYWN0aW9uIGFzIHByZXBhcmVkLiAqLworCQlhcHBseV9oYW5kbGVfcHJlcGFyZV9pbnRl cm5hbCgmcHJlcGFyZV9kYXRhKTsKIAotCS8qIFJlcGxheSBhbGwgdGhlIHNwb29sZWQgb3BlcmF0 aW9ucy4gKi8KLQlhcHBseV9zcG9vbGVkX21lc3NhZ2VzKHByZXBhcmVfZGF0YS54aWQsIHByZXBh cmVfZGF0YS5wcmVwYXJlX2xzbik7CisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0J LyogTWFyayB0aGUgdHJhbnNhY3Rpb24gYXMgcHJlcGFyZWQuICovCi0JYXBwbHlfaGFuZGxlX3By ZXBhcmVfaW50ZXJuYWwoJnByZXBhcmVfZGF0YSk7CisJCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxz ZSk7CiAKLQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJbGlzdF9mcmVlKHN1YnhhY3Rs aXN0KTsKKwkJc3VieGFjdGxpc3QgPSBOSUw7CiAKLQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2Up OworCQlhcHBseV9iZ3dvcmtlcl9zZXRfc3RhdHVzKEFQUExZX0JHV09SS0VSX0ZJTklTSEVEKTsK Kwl9CisJZWxzZQorCXsKKwkJLyogVGhpcyBpcyB0aGUgbWFpbiBhcHBseSB3b3JrZXIuICovCisJ CUFwcGx5Qmd3b3JrZXJTdGF0ZSAqd3N0YXRlID0gYXBwbHlfYmd3b3JrZXJfZmluZChwcmVwYXJl X2RhdGEueGlkKTsKIAotCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNu KTsKKwkJZWxvZyhERUJVRzEsICJyZWNlaXZlZCBwcmVwYXJlIGZvciBzdHJlYW1lZCB0cmFuc2Fj dGlvbiAldSIsCisJCQkgcHJlcGFyZV9kYXRhLnhpZCk7CisKKwkJLyoKKwkJICogQ2hlY2sgaWYg d2UgYXJlIHByb2Nlc3NpbmcgdGhpcyB0cmFuc2FjdGlvbiBpbiBhbiBhcHBseSBiYWNrZ3JvdW5k CisJCSAqIHdvcmtlciBhbmQgaWYgc28sIHNlbmQgdGhlIGNoYW5nZXMgdG8gdGhhdCB3b3JrZXIu CisJCSAqLworCQlpZiAod3N0YXRlKQorCQl7CisJCQkvKgorCQkJICogQWZ0ZXIgc2VuZGluZyB0 aGUgZGF0YSB0byB0aGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIsIHdhaXQgZm9yCisJCQkgKiB0 aGF0IHdvcmtlciB0byBmaW5pc2guIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIG1haW50YWluIGNvbW1p dAorCQkJICogb3JkZXIgd2hpY2ggYXZvaWRzIGZhaWx1cmVzIGR1ZSB0byB0cmFuc2FjdGlvbiBk ZXBlbmRlbmNpZXMgYW5kCisJCQkgKiBkZWFkbG9ja3MuCisJCQkgKi8KKwkJCWFwcGx5X2Jnd29y a2VyX3NlbmRfZGF0YSh3c3RhdGUsIHMtPmxlbiwgcy0+ZGF0YSk7CisJCQlhcHBseV9iZ3dvcmtl cl93YWl0X2Zvcih3c3RhdGUsIEFQUExZX0JHV09SS0VSX0ZJTklTSEVEKTsKKwkJCWFwcGx5X2Jn d29ya2VyX2ZyZWUod3N0YXRlKTsKKworCQkJcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKKwkJ CXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKKwkJfQorCQllbHNl CisJCXsKKwkJCS8qCisJCQkgKiBUaGUgdHJhbnNhY3Rpb24gaGFzIGJlZW4gc2VyaWFsaXplZCB0 byBmaWxlLCBzbyByZXBsYXkgYWxsIHRoZQorCQkJICogc3Bvb2xlZCBvcGVyYXRpb25zLgorCQkJ ICovCisJCQlhcHBseV9zcG9vbGVkX21lc3NhZ2VzKHByZXBhcmVfZGF0YS54aWQsIHByZXBhcmVf ZGF0YS5wcmVwYXJlX2xzbik7CisKKwkJCS8qIE1hcmsgdGhlIHRyYW5zYWN0aW9uIGFzIHByZXBh cmVkLiAqLworCQkJYXBwbHlfaGFuZGxlX3ByZXBhcmVfaW50ZXJuYWwoJnByZXBhcmVfZGF0YSk7 CisKKwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCQlwZ3N0YXRfcmVwb3J0X3N0 YXQoZmFsc2UpOworCisJCQlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5kX2xz bik7CisKKwkJCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOworCisJCQkvKiBVbmxpbmsg dGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCisJ CQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBwcmVwYXJl X2RhdGEueGlkKTsKKwkJfQorCX0KIAogCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwor CXN0cmVhbV9hcHBseV93b3JrZXIgPSBOVUxMOwogCi0JLyogdW5saW5rIHRoZSBmaWxlcyB3aXRo IHNlcmlhbGl6ZWQgY2hhbmdlcyBhbmQgc3VieGFjdCBpbmZvLiAqLwotCXN0cmVhbV9jbGVhbnVw X2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHByZXBhcmVfZGF0YS54aWQpOworCS8q IENoZWNrIHRoZSBzdGF0dXMgb2YgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgaWYgYW55LiAqLwor CWFwcGx5X2Jnd29ya2VyX2NoZWNrX3N0YXR1cygpOwogCiAJLyogUHJvY2VzcyBhbnkgdGFibGVz IHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5 bmNpbmdfdGFibGVzKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKQEAgLTExNTUsMTUgKzEyNzEsNiBA QCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0YXJ0KFN0cmluZ0luZm8gcykKIAkJCQkoZXJyY29kZShF UlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCiAJCQkJIGVycm1zZ19pbnRlcm5hbCgiZHVwbGlj YXRlIFNUUkVBTSBTVEFSVCBtZXNzYWdlIikpKTsKIAotCS8qCi0JICogU3RhcnQgYSB0cmFuc2Fj dGlvbiBvbiBzdHJlYW0gc3RhcnQsIHRoaXMgdHJhbnNhY3Rpb24gd2lsbCBiZSBjb21taXR0ZWQK LQkgKiBvbiB0aGUgc3RyZWFtIHN0b3AgdW5sZXNzIGl0IGlzIGEgdGFibGVzeW5jIHdvcmtlciBp biB3aGljaCBjYXNlIGl0Ci0JICogd2lsbCBiZSBjb21taXR0ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBh bGwgdGhlIG1lc3NhZ2VzLiBXZSBuZWVkIHRoZQotCSAqIHRyYW5zYWN0aW9uIGZvciBoYW5kbGlu ZyB0aGUgYnVmZmlsZSwgdXNlZCBmb3Igc2VyaWFsaXppbmcgdGhlCi0JICogc3RyZWFtaW5nIGRh dGEgYW5kIHN1YnhhY3QgaW5mby4KLQkgKi8KLQliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7Ci0K IAkvKiBub3RpZnkgaGFuZGxlIG1ldGhvZHMgd2UncmUgcHJvY2Vzc2luZyBhIHJlbW90ZSB0cmFu c2FjdGlvbiAqLwogCWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gdHJ1ZTsKIApAQCAtMTE3Nywz NiArMTI4NCw5MyBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0YXJ0KFN0cmluZ0luZm8gcykKIAog CXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3Qoc3RyZWFtX3hpZCwgSW52YWxpZFhMb2dSZWNQ dHIpOwogCi0JLyoKLQkgKiBJbml0aWFsaXplIHRoZSB3b3JrZXIncyBzdHJlYW1fZmlsZXNldCBp ZiB3ZSBoYXZlbid0IHlldC4gVGhpcyB3aWxsIGJlCi0JICogdXNlZCBmb3IgdGhlIGVudGlyZSBk dXJhdGlvbiBvZiB0aGUgd29ya2VyIHNvIGNyZWF0ZSBpdCBpbiBhIHBlcm1hbmVudAotCSAqIGNv bnRleHQuIFdlIGNyZWF0ZSB0aGlzIG9uIHRoZSB2ZXJ5IGZpcnN0IHN0cmVhbWluZyBtZXNzYWdl IGZyb20gYW55Ci0JICogdHJhbnNhY3Rpb24gYW5kIHRoZW4gdXNlIGl0IGZvciB0aGlzIGFuZCBv dGhlciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zLgotCSAqIE5vdywgd2UgY291bGQgY3JlYXRlIGEg ZmlsZXNldCBhdCB0aGUgc3RhcnQgb2YgdGhlIHdvcmtlciBhcyB3ZWxsIGJ1dAotCSAqIHRoZW4g d2Ugd29uJ3QgYmUgc3VyZSB0aGF0IGl0IHdpbGwgZXZlciBiZSB1c2VkLgotCSAqLwotCWlmIChN eUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0ID09IE5VTEwpCisJaWYgKGFtX2FwcGx5 X2Jnd29ya2VyKCkpCiAJewotCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKLQotCQlvbGRjdHggPSBN ZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKKwkJLyoKKwkJICogTWFrZSBzdXJl IHRoZSBoYW5kbGUgYXBwbHlfZGlzcGF0Y2ggbWV0aG9kcyBhcmUgYXdhcmUgd2UncmUgaW4gYQor CQkgKiByZW1vdGUgdHJhbnNhY3Rpb24uCisJCSAqLworCQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24g PSB0cnVlOwogCi0JCU15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQgPSBwYWxsb2Mo c2l6ZW9mKEZpbGVTZXQpKTsKLQkJRmlsZVNldEluaXQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJl YW1fZmlsZXNldCk7CisJCS8qIEJlZ2luIHRoZSB0cmFuc2FjdGlvbi4gKi8KKwkJQWNjZXB0SW52 YWxpZGF0aW9uTWVzc2FnZXMoKTsKKwkJbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbigpOwogCi0J CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFu ZCgpOworCQlCZWdpblRyYW5zYWN0aW9uQmxvY2soKTsKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21t YW5kKCk7CiAJfQorCWVsc2UKKwl7CisJCS8qCisJCSAqIFRoaXMgaXMgdGhlIG1haW4gYXBwbHkg d29ya2VyLiBDaGVjayBpZiB0aGVyZSBpcyBhbnkgZnJlZSBhcHBseQorCQkgKiBiYWNrZ3JvdW5k IHdvcmtlciB3ZSBjYW4gdXNlIHRvIHByb2Nlc3MgdGhpcyB0cmFuc2FjdGlvbi4KKwkJICovCisJ CWlmIChmaXJzdF9zZWdtZW50KQorCQkJc3RyZWFtX2FwcGx5X3dvcmtlciA9IGFwcGx5X2Jnd29y a2VyX3N0YXJ0KHN0cmVhbV94aWQpOworCQllbHNlCisJCQlzdHJlYW1fYXBwbHlfd29ya2VyID0g YXBwbHlfYmd3b3JrZXJfZmluZChzdHJlYW1feGlkKTsKIAotCS8qIG9wZW4gdGhlIHNwb29sIGZp bGUgZm9yIHRoaXMgdHJhbnNhY3Rpb24gKi8KLQlzdHJlYW1fb3Blbl9maWxlKE15TG9naWNhbFJl cFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQsIGZpcnN0X3NlZ21lbnQpOworCQlpZiAoc3RyZWFt X2FwcGx5X3dvcmtlcikKKwkJeworCQkJLyoKKwkJCSAqIElmIHdlIGhhdmUgZm91bmQgYSBmcmVl IHdvcmtlciBvciBpZiB3ZSBhcmUgYWxyZWFkeSBhcHBseWluZyB0aGlzCisJCQkgKiB0cmFuc2Fj dGlvbiBpbiBhbiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciwgdGhlbiB3ZSBwYXNzIHRoZSBkYXRh IHRvCisJCQkgKiB0aGF0IHdvcmtlci4KKwkJCSAqLworCQkJaWYgKGZpcnN0X3NlZ21lbnQpCisJ CQkJYXBwbHlfYmd3b3JrZXJfc2VuZF9kYXRhKHN0cmVhbV9hcHBseV93b3JrZXIsIHMtPmxlbiwg cy0+ZGF0YSk7CiAKLQkvKiBpZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3Qgc2VnbWVudCwgb3BlbiBl eGlzdGluZyBzdWJ4YWN0IGZpbGUgKi8KLQlpZiAoIWZpcnN0X3NlZ21lbnQpCi0JCXN1YnhhY3Rf aW5mb19yZWFkKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOworCQkJbmNo YW5nZXMgPSAwOworCQkJZWxvZyhERUJVRzEsICJzdGFydGluZyBzdHJlYW1pbmcgb2YgeGlkICV1 Iiwgc3RyZWFtX3hpZCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJICogU2luY2Ugbm8g YXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgaXMgYXZhaWxhYmxlIGZvciB0aGUgZmlyc3QKKwkJCSAq IHN0cmVhbSBzdGFydCwgc2VyaWFsaXplIGFsbCB0aGUgY2hhbmdlcyBvZiB0aGUgdHJhbnNhY3Rp b24uCisJCQkgKgorCQkJICogU3RhcnQgYSB0cmFuc2FjdGlvbiBvbiBzdHJlYW0gc3RhcnQsIHRo aXMgdHJhbnNhY3Rpb24gd2lsbCBiZQorCQkJICogY29tbWl0dGVkIG9uIHRoZSBzdHJlYW0gc3Rv cCB1bmxlc3MgaXQgaXMgYSB0YWJsZXN5bmMgd29ya2VyIGluCisJCQkgKiB3aGljaCBjYXNlIGl0 IHdpbGwgYmUgY29tbWl0dGVkIGFmdGVyIHByb2Nlc3NpbmcgYWxsIHRoZQorCQkJICogbWVzc2Fn ZXMuIFdlIG5lZWQgdGhlIHRyYW5zYWN0aW9uIGZvciBoYW5kbGluZyB0aGUgYnVmZmlsZSwKKwkJ CSAqIHVzZWQgZm9yIHNlcmlhbGl6aW5nIHRoZSBzdHJlYW1pbmcgZGF0YSBhbmQgc3VieGFjdCBp bmZvLgorCQkJICovCisJCQliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CiAKLQlwZ3N0YXRfcmVw b3J0X2FjdGl2aXR5KFNUQVRFX1JVTk5JTkcsIE5VTEwpOworCQkJLyoKKwkJCSAqIEluaXRpYWxp emUgdGhlIHdvcmtlcidzIHN0cmVhbV9maWxlc2V0IGlmIHdlIGhhdmVuJ3QgeWV0LiBUaGlzIHdp bGwKKwkJCSAqIGJlIHVzZWQgZm9yIHRoZSBlbnRpcmUgZHVyYXRpb24gb2YgdGhlIHdvcmtlciBz byBjcmVhdGUgaXQgaW4gYQorCQkJICogcGVybWFuZW50IGNvbnRleHQuIFdlIGNyZWF0ZSB0aGlz IG9uIHRoZSB2ZXJ5IGZpcnN0IHN0cmVhbWluZworCQkJICogbWVzc2FnZSBmcm9tIGFueSB0cmFu c2FjdGlvbiBhbmQgdGhlbiB1c2UgaXQgZm9yIHRoaXMgYW5kIG90aGVyCisJCQkgKiBzdHJlYW1p bmcgdHJhbnNhY3Rpb25zLiBOb3csIHdlIGNvdWxkIGNyZWF0ZSBhIGZpbGVzZXQgYXQgdGhlIHN0 YXJ0CisJCQkgKiBvZiB0aGUgd29ya2VyIGFzIHdlbGwgYnV0IHRoZW4gd2Ugd29uJ3QgYmUgc3Vy ZSB0aGF0IGl0IHdpbGwgZXZlcgorCQkJICogYmUgdXNlZC4KKwkJCSAqLworCQkJaWYgKE15TG9n aWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQgPT0gTlVMTCkKKwkJCXsKKwkJCQlNZW1vcnlD b250ZXh0IG9sZGN0eDsKIAotCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7CisJCQkJb2xkY3R4ID0g TWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CisKKwkJCQlNeUxvZ2ljYWxSZXBX b3JrZXItPnN0cmVhbV9maWxlc2V0ID0gcGFsbG9jKHNpemVvZihGaWxlU2V0KSk7CisJCQkJRmls ZVNldEluaXQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCk7CisKKwkJCQlNZW1v cnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKKwkJCX0KKworCQkJLyogT3BlbiB0aGUgc3Bvb2wg ZmlsZSBmb3IgdGhpcyB0cmFuc2FjdGlvbi4gKi8KKwkJCXN0cmVhbV9vcGVuX2ZpbGUoTXlMb2dp Y2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCwgZmlyc3Rfc2VnbWVudCk7CisKKwkJCS8q IElmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBzZWdtZW50LCBvcGVuIGV4aXN0aW5nIHN1YnhhY3Qg ZmlsZS4gKi8KKwkJCWlmICghZmlyc3Rfc2VnbWVudCkKKwkJCQlzdWJ4YWN0X2luZm9fcmVhZChN eUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkKTsKKworCQkJZW5kX3JlcGxpY2F0 aW9uX3N0ZXAoKTsKKwkJfQorCX0KKworCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfUlVO TklORywgTlVMTCk7CiB9CiAKIC8qCkBAIC0xMjIwLDUzICsxMzg0LDUyIEBAIGFwcGx5X2hhbmRs ZV9zdHJlYW1fc3RvcChTdHJpbmdJbmZvIHMpCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NP TF9WSU9MQVRJT04pLAogCQkJCSBlcnJtc2dfaW50ZXJuYWwoIlNUUkVBTSBTVE9QIG1lc3NhZ2Ug d2l0aG91dCBTVFJFQU0gU1RBUlQiKSkpOwogCi0JLyoKLQkgKiBDbG9zZSB0aGUgZmlsZSB3aXRo IHNlcmlhbGl6ZWQgY2hhbmdlcywgYW5kIHNlcmlhbGl6ZSBpbmZvcm1hdGlvbiBhYm91dAotCSAq IHN1YnhhY3RzIGZvciB0aGUgdG9wbGV2ZWwgdHJhbnNhY3Rpb24uCi0JICovCi0Jc3VieGFjdF9p bmZvX3dyaXRlKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOwotCXN0cmVh bV9jbG9zZV9maWxlKCk7CisJaWYgKGFwcGx5X2Jnd29ya2VyX2FjdGl2ZSgpKQorCXsKKwkJY2hh ciBhY3Rpb24gPSBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX1NUT1A7CiAKLQkvKiBXZSBtdXN0IGJl IGluIGEgdmFsaWQgdHJhbnNhY3Rpb24gc3RhdGUgKi8KLQlBc3NlcnQoSXNUcmFuc2FjdGlvblN0 YXRlKCkpOworCQlhcHBseV9iZ3dvcmtlcl9zZW5kX2RhdGEoc3RyZWFtX2FwcGx5X3dvcmtlciwg MSwgJmFjdGlvbik7CiAKLQkvKiBDb21taXQgdGhlIHBlci1zdHJlYW0gdHJhbnNhY3Rpb24gKi8K LQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJZWxvZyhERUJVRzEsICJzdG9wcGVkIHN0 cmVhbWluZyBvZiB4aWQgJXUsICV1IGNoYW5nZXMgc3RyZWFtZWQiLCBzdHJlYW1feGlkLCBuY2hh bmdlcyk7CisJfQorCWVsc2UKKwl7CisJCS8qCisJCSAqIENsb3NlIHRoZSBmaWxlIHdpdGggc2Vy aWFsaXplZCBjaGFuZ2VzLCBhbmQgc2VyaWFsaXplIGluZm9ybWF0aW9uCisJCSAqIGFib3V0IHN1 YnhhY3RzIGZvciB0aGUgdG9wbGV2ZWwgdHJhbnNhY3Rpb24uCisJCSAqLworCQlzdWJ4YWN0X2lu Zm9fd3JpdGUoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCk7CisJCXN0cmVh bV9jbG9zZV9maWxlKCk7CiAKLQlpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IGZhbHNlOworCQkv KiBXZSBtdXN0IGJlIGluIGEgdmFsaWQgdHJhbnNhY3Rpb24gc3RhdGUgKi8KKwkJQXNzZXJ0KElz VHJhbnNhY3Rpb25TdGF0ZSgpKTsKIAotCS8qIFJlc2V0IHBlci1zdHJlYW0gY29udGV4dCAqLwot CU1lbW9yeUNvbnRleHRSZXNldChMb2dpY2FsU3RyZWFtaW5nQ29udGV4dCk7CisJCS8qIENvbW1p dCB0aGUgcGVyLXN0cmVhbSB0cmFuc2FjdGlvbiAqLworCQlDb21taXRUcmFuc2FjdGlvbkNvbW1h bmQoKTsKKworCQkvKiBSZXNldCBwZXItc3RyZWFtIGNvbnRleHQgKi8KKwkJTWVtb3J5Q29udGV4 dFJlc2V0KExvZ2ljYWxTdHJlYW1pbmdDb250ZXh0KTsKKwl9CisKKwlpbl9zdHJlYW1lZF90cmFu c2FjdGlvbiA9IGZhbHNlOworCXN0cmVhbV9hcHBseV93b3JrZXIgPSBOVUxMOwogCiAJcGdzdGF0 X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBOVUxMKTsKIAlyZXNldF9hcHBseV9lcnJvcl9j b250ZXh0X2luZm8oKTsKIH0KIAogLyoKLSAqIEhhbmRsZSBTVFJFQU0gYWJvcnQgbWVzc2FnZS4K KyAqIEhhbmRsZSBTVFJFQU0gQUJPUlQgbWVzc2FnZSB3aGVuIHRoZSB0cmFuc2FjdGlvbiB3YXMg c3BpbGxlZCB0byBkaXNrLgogICovCiBzdGF0aWMgdm9pZAotYXBwbHlfaGFuZGxlX3N0cmVhbV9h Ym9ydChTdHJpbmdJbmZvIHMpCitzZXJpYWxpemVfc3RyZWFtX2Fib3J0KFRyYW5zYWN0aW9uSWQg eGlkLCBUcmFuc2FjdGlvbklkIHN1YnhpZCkKIHsKLQlUcmFuc2FjdGlvbklkIHhpZDsKLQlUcmFu c2FjdGlvbklkIHN1YnhpZDsKLQotCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKLQkJZXJl cG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCi0J CQkJIGVycm1zZ19pbnRlcm5hbCgiU1RSRUFNIEFCT1JUIG1lc3NhZ2Ugd2l0aG91dCBTVFJFQU0g U1RPUCIpKSk7Ci0KLQlsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KHMsICZ4aWQsICZzdWJ4 aWQpOwotCiAJLyoKIAkgKiBJZiB0aGUgdHdvIFhJRHMgYXJlIHRoZSBzYW1lLCBpdCdzIGluIGZh Y3QgYWJvcnQgb2YgdG9wbGV2ZWwgeGFjdCwgc28KIAkgKiBqdXN0IGRlbGV0ZSB0aGUgZmlsZXMg d2l0aCBzZXJpYWxpemVkIGluZm8uCiAJICovCiAJaWYgKHhpZCA9PSBzdWJ4aWQpCi0JewotCQlz ZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHhpZCwgSW52YWxpZFhMb2dSZWNQdHIpOwogCQlz dHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOwotCX0K IAllbHNlCiAJewogCQkvKgpAQCAtMTI5MCw4ICsxNDUzLDYgQEAgYXBwbHlfaGFuZGxlX3N0cmVh bV9hYm9ydChTdHJpbmdJbmZvIHMpCiAJCWJvb2wJCWZvdW5kID0gZmFsc2U7CiAJCWNoYXIJCXBh dGhbTUFYUEdQQVRIXTsKIAotCQlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHN1YnhpZCwg SW52YWxpZFhMb2dSZWNQdHIpOwotCiAJCXN1YmlkeCA9IC0xOwogCQliZWdpbl9yZXBsaWNhdGlv bl9zdGVwKCk7CiAJCXN1YnhhY3RfaW5mb19yZWFkKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQs IHhpZCk7CkBAIC0xMzE2LDcgKzE0NzcsNiBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0 cmluZ0luZm8gcykKIAkJCWNsZWFudXBfc3VieGFjdF9pbmZvKCk7CiAJCQllbmRfcmVwbGljYXRp b25fc3RlcCgpOwogCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7Ci0JCQlyZXNldF9hcHBs eV9lcnJvcl9jb250ZXh0X2luZm8oKTsKIAkJCXJldHVybjsKIAkJfQogCkBAIC0xMzM5LDYgKzE0 OTksMTQyIEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQogCQllbmRf cmVwbGljYXRpb25fc3RlcCgpOwogCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAl9Cit9 CisKKy8qCisgKiBIYW5kbGUgU1RSRUFNIEFCT1JUIG1lc3NhZ2UuCisgKi8KK3N0YXRpYyB2b2lk CithcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKK3sKKwlUcmFuc2FjdGlv bklkIHhpZDsKKwlUcmFuc2FjdGlvbklkIHN1YnhpZDsKKwlMb2dpY2FsUmVwU3RyZWFtQWJvcnRE YXRhIGFib3J0X2RhdGE7CisJYm9vbCByZWFkX2Fib3J0X2xzbiA9IGZhbHNlOworCisJaWYgKGlu X3N0cmVhbWVkX3RyYW5zYWN0aW9uKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVS UkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKKwkJCQkgZXJybXNnX2ludGVybmFsKCJTVFJFQU0g QUJPUlQgbWVzc2FnZSB3aXRob3V0IFNUUkVBTSBTVE9QIikpKTsKKworCS8qIENoZWNrIHdoZXRo ZXIgdGhlIHB1Ymxpc2hlciBzZW5kcyBhYm9ydF9sc24gYW5kIGFib3J0X3RpbWUuICovCisJaWYg KGFtX2FwcGx5X2Jnd29ya2VyKCkpCisJCXJlYWRfYWJvcnRfbHNuID0gTXlQYXJhbGxlbFN0YXRl LT5zZXJ2ZXJfdmVyc2lvbiA+PSAxNjAwMDA7CisKKwlsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fi b3J0KHMsICZhYm9ydF9kYXRhLCByZWFkX2Fib3J0X2xzbik7CisKKwl4aWQgPSBhYm9ydF9kYXRh LnhpZDsKKwlzdWJ4aWQgPSBhYm9ydF9kYXRhLnN1YnhpZDsKKworCXNldF9hcHBseV9lcnJvcl9j b250ZXh0X3hhY3Qoc3VieGlkLCBhYm9ydF9kYXRhLmFib3J0X2xzbik7CisKKwlpZiAoYW1fYXBw bHlfYmd3b3JrZXIoKSkKKwl7CisJCWVsb2coREVCVUcxLCAiW0FwcGx5IEJHVyAjJXVdIGFib3J0 aW5nIGN1cnJlbnQgdHJhbnNhY3Rpb24geGlkPSV1LCBzdWJ4aWQ9JXUiLAorCQkJIE15UGFyYWxs ZWxTdGF0ZS0+biwgR2V0Q3VycmVudFRyYW5zYWN0aW9uSWRJZkFueSgpLAorCQkJIEdldEN1cnJl bnRTdWJUcmFuc2FjdGlvbklkKCkpOworCisJCS8qCisJCSAqIFVwZGF0ZSBvcmlnaW4gc3RhdGUg c28gd2UgY2FuIHJlc3RhcnQgc3RyZWFtaW5nIGZyb20gY29ycmVjdAorCQkgKiBwb3NpdGlvbiBp biBjYXNlIG9mIGNyYXNoLgorCQkgKi8KKwkJaWYgKHJlYWRfYWJvcnRfbHNuKQorCQl7CisJCQly ZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX2xzbiA9IGFib3J0X2RhdGEuYWJvcnRfbHNuOworCQkJ cmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl90aW1lc3RhbXAgPSBhYm9ydF9kYXRhLmFib3J0X3Rp bWU7CisJCX0KKworCQkvKgorCQkgKiBJZiB0aGUgdHdvIFhJRHMgYXJlIHRoZSBzYW1lLCBpdCdz IGluIGZhY3QgYWJvcnQgb2YgdG9wbGV2ZWwgeGFjdCwKKwkJICogc28ganVzdCBmcmVlIHRoZSBz dWJ4YWN0bGlzdC4KKwkJICovCisJCWlmIChzdWJ4aWQgPT0geGlkKQorCQl7CisJCQlBYm9ydEN1 cnJlbnRUcmFuc2FjdGlvbigpOworCisJCQlFbmRUcmFuc2FjdGlvbkJsb2NrKGZhbHNlKTsKKwkJ CUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24g PSBmYWxzZTsKKwkJCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRSwgTlVMTCk7CisK KwkJCWxpc3RfZnJlZShzdWJ4YWN0bGlzdCk7CisJCQlzdWJ4YWN0bGlzdCA9IE5JTDsKKworCQkJ YXBwbHlfYmd3b3JrZXJfc2V0X3N0YXR1cyhBUFBMWV9CR1dPUktFUl9GSU5JU0hFRCk7CisJCX0K KwkJZWxzZQorCQl7CisJCQkvKgorCQkJICogT0ssIHNvIGl0J3MgYSBzdWJ4YWN0LiBSb2xsYmFj ayB0byB0aGUgc2F2ZXBvaW50LgorCQkJICoKKwkJCSAqIFdlIGFsc28gbmVlZCB0byByZWFkIHRo ZSBzdWJ4YWN0bGlzdCwgZGV0ZXJtaW5lIHRoZSBvZmZzZXQKKwkJCSAqIHRyYWNrZWQgZm9yIHRo ZSBzdWJ4YWN0LCBhbmQgdHJ1bmNhdGUgdGhlIGxpc3QuCisJCQkgKi8KKwkJCWludAkJCWk7CisJ CQlib29sCQlmb3VuZCA9IGZhbHNlOworCQkJY2hhcgkJc3BuYW1lW01BWFBHUEFUSF07CisKKwkJ CXNucHJpbnRmKHNwbmFtZSwgTUFYUEdQQVRILCAic2F2ZXBvaW50X2Zvcl94aWRfJXUiLCBzdWJ4 aWQpOworCisJCQllbG9nKERFQlVHMSwgIltBcHBseSBCR1cgIyV1XSByb2xsaW5nIGJhY2sgdG8g c2F2ZXBvaW50ICVzIiwKKwkJCQkgTXlQYXJhbGxlbFN0YXRlLT5uLCBzcG5hbWUpOworCisJCQlm b3IgKGkgPSBsaXN0X2xlbmd0aChzdWJ4YWN0bGlzdCkgLSAxOyBpID49IDA7IGktLSkKKwkJCXsK KwkJCQl4aWQgPSAoVHJhbnNhY3Rpb25JZCkgbGlzdF9udGhfaW50KHN1YnhhY3RsaXN0LCBpKTsK KwkJCQlpZiAoeGlkID09IHN1YnhpZCkKKwkJCQl7CisJCQkJCWZvdW5kID0gdHJ1ZTsKKwkJCQkJ YnJlYWs7CisJCQkJfQorCQkJfQorCisJCQlpZiAoZm91bmQpCisJCQl7CisJCQkJUm9sbGJhY2tU b1NhdmVwb2ludChzcG5hbWUpOworCQkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQkJ CXN1YnhhY3RsaXN0ID0gbGlzdF90cnVuY2F0ZShzdWJ4YWN0bGlzdCwgaSArIDEpOworCQkJfQor CisJCQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEVJTlRSQU5TQUNUSU9OLCBOVUxM KTsKKwkJfQorCX0KKwllbHNlCisJeworCQkvKiBUaGlzIGlzIHRoZSBtYWluIGFwcGx5IHdvcmtl ci4gKi8KKwkJQXBwbHlCZ3dvcmtlclN0YXRlICp3c3RhdGUgPSBhcHBseV9iZ3dvcmtlcl9maW5k KHhpZCk7CisKKwkJLyoKKwkJICogQ2hlY2sgaWYgd2UgYXJlIHByb2Nlc3NpbmcgdGhpcyB0cmFu c2FjdGlvbiBpbiBhbiBhcHBseSBiYWNrZ3JvdW5kCisJCSAqIHdvcmtlciBhbmQgaWYgc28sIHNl bmQgdGhlIGNoYW5nZXMgdG8gdGhhdCB3b3JrZXIuCisJCSAqLworCQlpZiAod3N0YXRlKQorCQl7 CisJCQkvKiBTZW5kIFNUUkVBTSBBQk9SVCBtZXNzYWdlIHRvIHRoZSBhcHBseSBiYWNrZ3JvdW5k IHdvcmtlci4gKi8KKwkJCWFwcGx5X2Jnd29ya2VyX3NlbmRfZGF0YSh3c3RhdGUsIHMtPmxlbiwg cy0+ZGF0YSk7CisKKwkJCS8qCisJCQkgKiBBZnRlciBzZW5kaW5nIHRoZSBkYXRhIHRvIHRoZSBh cHBseSBiYWNrZ3JvdW5kIHdvcmtlciwgd2FpdCBmb3IKKwkJCSAqIHRoYXQgd29ya2VyIHRvIGZp bmlzaC4gVGhpcyBpcyBuZWNlc3NhcnkgdG8gbWFpbnRhaW4gY29tbWl0CisJCQkgKiBvcmRlciB3 aGljaCBhdm9pZHMgZmFpbHVyZXMgZHVlIHRvIHRyYW5zYWN0aW9uIGRlcGVuZGVuY2llcyBhbmQK KwkJCSAqIGRlYWRsb2Nrcy4KKwkJCSAqLworCQkJaWYgKHN1YnhpZCA9PSB4aWQpCisJCQl7CisJ CQkJYXBwbHlfYmd3b3JrZXJfd2FpdF9mb3Iod3N0YXRlLCBBUFBMWV9CR1dPUktFUl9GSU5JU0hF RCk7CisJCQkJYXBwbHlfYmd3b3JrZXJfZnJlZSh3c3RhdGUpOworCQkJfQorCQl9CisJCWVsc2UK KwkJeworCQkJLyoKKwkJCSAqIFdlIGFyZSBpbiBtYWluIGFwcGx5IHdvcmtlciBhbmQgdGhlIHRy YW5zYWN0aW9uIGhhcyBiZWVuCisJCQkgKiBzZXJpYWxpemVkIHRvIGZpbGUuCisJCQkgKi8KKwkJ CXNlcmlhbGl6ZV9zdHJlYW1fYWJvcnQoeGlkLCBzdWJ4aWQpOworCQl9CisJfQogCiAJcmVzZXRf YXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKCk7CiB9CkBAIC0xNDY4LDggKzE3NjQsOCBAQCBhcHBs eV9zcG9vbGVkX21lc3NhZ2VzKFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKIHN0 YXRpYyB2b2lkCiBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIHMpCiB7Ci0J VHJhbnNhY3Rpb25JZCB4aWQ7CiAJTG9naWNhbFJlcENvbW1pdERhdGEgY29tbWl0X2RhdGE7CisJ VHJhbnNhY3Rpb25JZCB4aWQ7CiAKIAlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCiAJCWVy ZXBvcnQoRVJST1IsCkBAIC0xNDc5LDE0ICsxNzc1LDgxIEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1f Y29tbWl0KFN0cmluZ0luZm8gcykKIAl4aWQgPSBsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2NvbW1p dChzLCAmY29tbWl0X2RhdGEpOwogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QoeGlkLCBj b21taXRfZGF0YS5jb21taXRfbHNuKTsKIAotCWVsb2coREVCVUcxLCAicmVjZWl2ZWQgY29tbWl0 IGZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbiAldSIsIHhpZCk7CisJaWYgKGFtX2FwcGx5X2Jnd29y a2VyKCkpCisJeworCQkvKgorCQkgKiBVcGRhdGUgb3JpZ2luIHN0YXRlIHNvIHdlIGNhbiByZXN0 YXJ0IHN0cmVhbWluZyBmcm9tIGNvcnJlY3QKKwkJICogcG9zaXRpb24gaW4gY2FzZSBvZiBjcmFz aC4KKwkJICovCisJCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fbHNuID0gY29tbWl0X2RhdGEu ZW5kX2xzbjsKKwkJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl90aW1lc3RhbXAgPSBjb21taXRf ZGF0YS5jb21taXR0aW1lOworCisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQlFbmRU cmFuc2FjdGlvbkJsb2NrKGZhbHNlKTsKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAK LQlhcHBseV9zcG9vbGVkX21lc3NhZ2VzKHhpZCwgY29tbWl0X2RhdGEuY29tbWl0X2xzbik7CisJ CWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogCi0JYXBwbHlfaGFuZGxlX2NvbW1pdF9p bnRlcm5hbCgmY29tbWl0X2RhdGEpOworCQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOworCisJ CWxpc3RfZnJlZShzdWJ4YWN0bGlzdCk7CisJCXN1YnhhY3RsaXN0ID0gTklMOworCisJCWFwcGx5 X2Jnd29ya2VyX3NldF9zdGF0dXMoQVBQTFlfQkdXT1JLRVJfRklOSVNIRUQpOworCX0KKwllbHNl CisJeworCQkvKiBUaGlzIGlzIHRoZSBtYWluIGFwcGx5IHdvcmtlci4gKi8KKwkJQXBwbHlCZ3dv cmtlclN0YXRlICp3c3RhdGUgPSBhcHBseV9iZ3dvcmtlcl9maW5kKHhpZCk7CisKKwkJZWxvZyhE RUJVRzEsICJyZWNlaXZlZCBjb21taXQgZm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9uICV1IiwgeGlk KTsKKworCQkvKgorCQkgKiBDaGVjayBpZiB3ZSBhcmUgcHJvY2Vzc2luZyB0aGlzIHRyYW5zYWN0 aW9uIGluIGFuIGFwcGx5IGJhY2tncm91bmQKKwkJICogd29ya2VyIGFuZCBpZiBzbywgc2VuZCB0 aGUgY2hhbmdlcyB0byB0aGF0IHdvcmtlci4KKwkJICovCisJCWlmICh3c3RhdGUpCisJCXsKKwkJ CS8qIFNlbmQgU1RSRUFNIENPTU1JVCBtZXNzYWdlIHRvIHRoZSBhcHBseSBiYWNrZ3JvdW5kIHdv cmtlci4gKi8KKwkJCWFwcGx5X2Jnd29ya2VyX3NlbmRfZGF0YSh3c3RhdGUsIHMtPmxlbiwgcy0+ ZGF0YSk7CisKKwkJCS8qCisJCQkgKiBBZnRlciBzZW5kaW5nIHRoZSBkYXRhIHRvIHRoZSBhcHBs eSBiYWNrZ3JvdW5kIHdvcmtlciwgd2FpdCBmb3IKKwkJCSAqIHRoYXQgd29ya2VyIHRvIGZpbmlz aC4gVGhpcyBpcyBuZWNlc3NhcnkgdG8gbWFpbnRhaW4gY29tbWl0CisJCQkgKiBvcmRlciB3aGlj aCBhdm9pZHMgZmFpbHVyZXMgZHVlIHRvIHRyYW5zYWN0aW9uIGRlcGVuZGVuY2llcyBhbmQKKwkJ CSAqIGRlYWRsb2Nrcy4KKwkJCSAqLworCQkJYXBwbHlfYmd3b3JrZXJfd2FpdF9mb3Iod3N0YXRl LCBBUFBMWV9CR1dPUktFUl9GSU5JU0hFRCk7CiAKLQkvKiB1bmxpbmsgdGhlIGZpbGVzIHdpdGgg c2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8gKi8KLQlzdHJlYW1fY2xlYW51cF9m aWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOworCQkJcGdzdGF0X3JlcG9ydF9z dGF0KGZhbHNlKTsKKwkJCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKGNvbW1pdF9kYXRhLmVuZF9sc24p OworCQkJc3RvcF9za2lwcGluZ19jaGFuZ2VzKCk7CisKKwkJCWFwcGx5X2Jnd29ya2VyX2ZyZWUo d3N0YXRlKTsKKworCQkJLyoKKwkJCSAqIFRoZSB0cmFuc2FjdGlvbiBpcyBlaXRoZXIgbm9uLWVt cHR5IG9yIHNraXBwZWQsIHNvIHdlIGNsZWFyIHRoZQorCQkJICogc3Vic2tpcGxzbi4KKwkJCSAq LworCQkJY2xlYXJfc3Vic2NyaXB0aW9uX3NraXBfbHNuKGNvbW1pdF9kYXRhLmNvbW1pdF9sc24p OworCQl9CisJCWVsc2UKKwkJeworCQkJLyoKKwkJCSAqIFRoZSB0cmFuc2FjdGlvbiBoYXMgYmVl biBzZXJpYWxpemVkIHRvIGZpbGUsIHNvIHJlcGxheSBhbGwgdGhlCisJCQkgKiBzcG9vbGVkIG9w ZXJhdGlvbnMuCisJCQkgKi8KKwkJCWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoeGlkLCBjb21taXRf ZGF0YS5jb21taXRfbHNuKTsKKworCQkJYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgmY29t bWl0X2RhdGEpOworCisJCQkvKiBVbmxpbmsgdGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBjaGFu Z2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCisJCQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2lj YWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOworCQl9CisJfQorCisJLyogQ2hlY2sgdGhlIHN0YXR1 cyBvZiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBpZiBhbnkuICovCisJYXBwbHlfYmd3b3JrZXJf Y2hlY2tfc3RhdHVzKCk7CiAKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcg c3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMoY29t bWl0X2RhdGEuZW5kX2xzbik7CkBAIC0yNDY3LDcgKzI4MzAsNyBAQCBhcHBseV9oYW5kbGVfdHJ1 bmNhdGUoU3RyaW5nSW5mbyBzKQogLyoKICAqIExvZ2ljYWwgcmVwbGljYXRpb24gcHJvdG9jb2wg bWVzc2FnZSBkaXNwYXRjaGVyLgogICovCi1zdGF0aWMgdm9pZAordm9pZAogYXBwbHlfZGlzcGF0 Y2goU3RyaW5nSW5mbyBzKQogewogCUxvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbiA9IHBxX2dldG1z Z2J5dGUocyk7CkBAIC0yNjM2LDYgKzI5OTksMTAgQEAgc3RvcmVfZmx1c2hfcG9zaXRpb24oWExv Z1JlY1B0ciByZW1vdGVfbHNuKQogewogCUZsdXNoUG9zaXRpb24gKmZsdXNocG9zOwogCisJLyog V2Ugb25seSBuZWVkIHRvIGNvbGxlY3QgdGhlIExTTiBpbiBtYWluIGFwcGx5IHdvcmtlciAqLwor CWlmIChhbV9hcHBseV9iZ3dvcmtlcigpKQorCQlyZXR1cm47CisKIAkvKiBOZWVkIHRvIGRvIHRo aXMgaW4gcGVybWFuZW50IGNvbnRleHQgKi8KIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlD b250ZXh0KTsKIApAQCAtMjY1MCw3ICszMDE3LDcgQEAgc3RvcmVfZmx1c2hfcG9zaXRpb24oWExv Z1JlY1B0ciByZW1vdGVfbHNuKQogCiAKIC8qIFVwZGF0ZSBzdGF0aXN0aWNzIG9mIHRoZSB3b3Jr ZXIuICovCi1zdGF0aWMgdm9pZAordm9pZAogVXBkYXRlV29ya2VyU3RhdHMoWExvZ1JlY1B0ciBs YXN0X2xzbiwgVGltZXN0YW1wVHogc2VuZF90aW1lLCBib29sIHJlcGx5KQogewogCU15TG9naWNh bFJlcFdvcmtlci0+bGFzdF9sc24gPSBsYXN0X2xzbjsKQEAgLTI4MTIsNiArMzE3OSw5IEBAIExv Z2ljYWxSZXBBcHBseUxvb3AoWExvZ1JlY1B0ciBsYXN0X3JlY2VpdmVkKQogCQkJQWNjZXB0SW52 YWxpZGF0aW9uTWVzc2FnZXMoKTsKIAkJCW1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24oKTsKIAor CQkJLyogQ2hlY2sgdGhlIHN0YXR1cyBvZiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBpZiBhbnku ICovCisJCQlhcHBseV9iZ3dvcmtlcl9jaGVja19zdGF0dXMoKTsKKwogCQkJLyogUHJvY2VzcyBh bnkgdGFibGUgc3luY2hyb25pemF0aW9uIGNoYW5nZXMuICovCiAJCQlwcm9jZXNzX3N5bmNpbmdf dGFibGVzKGxhc3RfcmVjZWl2ZWQpOwogCQl9CkBAIC0zMTEzLDcgKzM0ODMsNyBAQCBtYXliZV9y ZXJlYWRfc3Vic2NyaXB0aW9uKHZvaWQpCiAvKgogICogQ2FsbGJhY2sgZnJvbSBzdWJzY3JpcHRp b24gc3lzY2FjaGUgaW52YWxpZGF0aW9uLgogICovCi1zdGF0aWMgdm9pZAordm9pZAogc3Vic2Ny aXB0aW9uX2NoYW5nZV9jYihEYXR1bSBhcmcsIGludCBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVl KQogewogCU15U3Vic2NyaXB0aW9uVmFsaWQgPSBmYWxzZTsKQEAgLTM3MDksNyArNDA3OSw3IEBA IEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAkJb3JpZ2luaWQgPSByZXBsb3JpZ2lu X2J5X25hbWUob3JpZ2lubmFtZSwgdHJ1ZSk7CiAJCWlmICghT2lkSXNWYWxpZChvcmlnaW5pZCkp CiAJCQlvcmlnaW5pZCA9IHJlcGxvcmlnaW5fY3JlYXRlKG9yaWdpbm5hbWUpOwotCQlyZXBsb3Jp Z2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQpOworCQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAo b3JpZ2luaWQsIHRydWUpOwogCQlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luID0gb3JpZ2luaWQ7 CiAJCW9yaWdpbl9zdGFydHBvcyA9IHJlcGxvcmlnaW5fc2Vzc2lvbl9nZXRfcHJvZ3Jlc3MoZmFs c2UpOwogCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKQEAgLTM3NTAsMTMgKzQxMjAsMTQg QEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogCiAJc2VydmVyX3ZlcnNpb24gPSB3 YWxyY3Zfc2VydmVyX3ZlcnNpb24oTG9nUmVwV29ya2VyV2FsUmN2Q29ubik7CiAJb3B0aW9ucy5w cm90by5sb2dpY2FsLnByb3RvX3ZlcnNpb24gPQorCQlzZXJ2ZXJfdmVyc2lvbiA+PSAxNjAwMDAg PyBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05VTSA6CiAJCXNlcnZl cl92ZXJzaW9uID49IDE1MDAwMCA/IExPR0lDQUxSRVBfUFJPVE9fVFdPUEhBU0VfVkVSU0lPTl9O VU0gOgogCQlzZXJ2ZXJfdmVyc2lvbiA+PSAxNDAwMDAgPyBMT0dJQ0FMUkVQX1BST1RPX1NUUkVB TV9WRVJTSU9OX05VTSA6CiAJCUxPR0lDQUxSRVBfUFJPVE9fVkVSU0lPTl9OVU07CiAKIAlvcHRp b25zLnByb3RvLmxvZ2ljYWwucHVibGljYXRpb25fbmFtZXMgPSBNeVN1YnNjcmlwdGlvbi0+cHVi bGljYXRpb25zOwogCW9wdGlvbnMucHJvdG8ubG9naWNhbC5iaW5hcnkgPSBNeVN1YnNjcmlwdGlv bi0+YmluYXJ5OwotCW9wdGlvbnMucHJvdG8ubG9naWNhbC5zdHJlYW1pbmcgPSBNeVN1YnNjcmlw dGlvbi0+c3RyZWFtOworCW9wdGlvbnMucHJvdG8ubG9naWNhbC5zdHJlYW1pbmcgPSAoTXlTdWJz Y3JpcHRpb24tPnN0cmVhbSAhPSBTVUJTVFJFQU1fT0ZGKTsKIAlvcHRpb25zLnByb3RvLmxvZ2lj YWwudHdvcGhhc2UgPSBmYWxzZTsKIAogCWlmICghYW1fdGFibGVzeW5jX3dvcmtlcigpKQpAQCAt MzkxNCw3ICs0Mjg1LDggQEAgY2xlYXJfc3Vic2NyaXB0aW9uX3NraXBfbHNuKFhMb2dSZWNQdHIg ZmluaXNoX2xzbikKIAlYTG9nUmVjUHRyCW15c2tpcGxzbiA9IE15U3Vic2NyaXB0aW9uLT5za2lw bHNuOwogCWJvb2wJCXN0YXJ0ZWRfdHggPSBmYWxzZTsKIAotCWlmIChsaWtlbHkoWExvZ1JlY1B0 cklzSW52YWxpZChteXNraXBsc24pKSkKKwlpZiAobGlrZWx5KFhMb2dSZWNQdHJJc0ludmFsaWQo bXlza2lwbHNuKSkgfHwKKwkJYW1fYXBwbHlfYmd3b3JrZXIoKSkKIAkJcmV0dXJuOwogCiAJaWYg KCFJc1RyYW5zYWN0aW9uU3RhdGUoKSkKQEAgLTM5ODYsNyArNDM1OCw3IEBAIGNsZWFyX3N1YnNj cmlwdGlvbl9za2lwX2xzbihYTG9nUmVjUHRyIGZpbmlzaF9sc24pCiB9CiAKIC8qIEVycm9yIGNh bGxiYWNrIHRvIGdpdmUgbW9yZSBjb250ZXh0IGluZm8gYWJvdXQgdGhlIGNoYW5nZSBiZWluZyBh cHBsaWVkICovCi1zdGF0aWMgdm9pZAordm9pZAogYXBwbHlfZXJyb3JfY2FsbGJhY2sodm9pZCAq YXJnKQogewogCUFwcGx5RXJyb3JDYWxsYmFja0FyZyAqZXJyYXJnID0gJmFwcGx5X2Vycm9yX2Nh bGxiYWNrX2FyZzsKQEAgLTQwMTQsMjMgKzQzODYsNDcgQEAgYXBwbHlfZXJyb3JfY2FsbGJhY2so dm9pZCAqYXJnKQogCQkJCQkgICBlcnJhcmctPnJlbW90ZV94aWQsCiAJCQkJCSAgIExTTl9GT1JN QVRfQVJHUyhlcnJhcmctPmZpbmlzaF9sc24pKTsKIAl9Ci0JZWxzZSBpZiAoZXJyYXJnLT5yZW1v dGVfYXR0bnVtIDwgMCkKLQkJZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3Ig cmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0 YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGluIHRyYW5zYWN0aW9uICV1IGZpbmlzaGVkIGF0ICVY LyVYIiwKLQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1lLAotCQkJCSAgIGxvZ2ljYWxyZXBfbWVz c2FnZV90eXBlKGVycmFyZy0+Y29tbWFuZCksCi0JCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJl bC5uc3BuYW1lLAotCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwKLQkJCQkg ICBlcnJhcmctPnJlbW90ZV94aWQsCi0JCQkJICAgTFNOX0ZPUk1BVF9BUkdTKGVycmFyZy0+Zmlu aXNoX2xzbikpOwogCWVsc2UKLQkJZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0YSBm b3IgcmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgXCIlc1wiIGZvciByZXBsaWNhdGlv biB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGNvbHVtbiBcIiVzXCIgaW4gdHJhbnNhY3Rpb24g JXUgZmluaXNoZWQgYXQgJVgvJVgiLAotCQkJCSAgIGVycmFyZy0+b3JpZ2luX25hbWUsCi0JCQkJ ICAgbG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoZXJyYXJnLT5jb21tYW5kKSwKLQkJCQkgICBlcnJh cmctPnJlbC0+cmVtb3RlcmVsLm5zcG5hbWUsCi0JCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJl bC5yZWxuYW1lLAotCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwuYXR0bmFtZXNbZXJyYXJn LT5yZW1vdGVfYXR0bnVtXSwKLQkJCQkgICBlcnJhcmctPnJlbW90ZV94aWQsCi0JCQkJICAgTFNO X0ZPUk1BVF9BUkdTKGVycmFyZy0+ZmluaXNoX2xzbikpOworCXsKKwkJaWYgKGVycmFyZy0+cmVt b3RlX2F0dG51bSA8IDApCisJCXsKKwkJCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKGVycmFyZy0+ ZmluaXNoX2xzbikpCisJCQkJZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3Ig cmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0 YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGluIHRyYW5zYWN0aW9uICV1IiwKKwkJCQkJCSAgIGVy cmFyZy0+b3JpZ2luX25hbWUsCisJCQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJh cmctPmNvbW1hbmQpLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAor CQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAorCQkJCQkJICAgZXJyYXJn LT5yZW1vdGVfeGlkKTsKKwkJCWVsc2UKKwkJCQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90 ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBcIiVzXCIgZm9yIHJl cGxpY2F0aW9uIHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUgZmlu aXNoZWQgYXQgJVgvJVgiLAorCQkJCQkJICAgZXJyYXJnLT5vcmlnaW5fbmFtZSwKKwkJCQkJCSAg IGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKGVycmFyZy0+Y29tbWFuZCksCisJCQkJCQkgICBlcnJh cmctPnJlbC0+cmVtb3RlcmVsLm5zcG5hbWUsCisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3Rl cmVsLnJlbG5hbWUsCisJCQkJCQkgICBlcnJhcmctPnJlbW90ZV94aWQsCisJCQkJCQkgICBMU05f Rk9STUFUX0FSR1MoZXJyYXJnLT5maW5pc2hfbHNuKSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlp ZiAoWExvZ1JlY1B0cklzSW52YWxpZChlcnJhcmctPmZpbmlzaF9sc24pKQorCQkJCWVycmNvbnRl eHQoInByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiBcIiVzXCIg ZHVyaW5nIFwiJXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiBj b2x1bW4gXCIlc1wiIGluIHRyYW5zYWN0aW9uICV1IiwKKwkJCQkJCSAgIGVycmFyZy0+b3JpZ2lu X25hbWUsCisJCQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQp LAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAorCQkJCQkJICAgZXJy YXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90 ZXJlbC5hdHRuYW1lc1tlcnJhcmctPnJlbW90ZV9hdHRudW1dLAorCQkJCQkJICAgZXJyYXJnLT5y ZW1vdGVfeGlkKTsKKwkJCWVsc2UKKwkJCQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBk YXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBcIiVzXCIgZm9yIHJlcGxp Y2F0aW9uIHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgY29sdW1uIFwiJXNcIiBpbiB0cmFuc2Fj dGlvbiAldSBmaW5pc2hlZCBhdCAlWC8lWCIsCisJCQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1l LAorCQkJCQkJICAgbG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoZXJyYXJnLT5jb21tYW5kKSwKKwkJ CQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+ cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwu YXR0bmFtZXNbZXJyYXJnLT5yZW1vdGVfYXR0bnVtXSwKKwkJCQkJCSAgIGVycmFyZy0+cmVtb3Rl X3hpZCwKKwkJCQkJCSAgIExTTl9GT1JNQVRfQVJHUyhlcnJhcmctPmZpbmlzaF9sc24pKTsKKwkJ fQorCX0KIH0KIAogLyogU2V0IHRyYW5zYWN0aW9uIGluZm9ybWF0aW9uIG9mIGFwcGx5IGVycm9y IGNhbGxiYWNrICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1 dC9wZ291dHB1dC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQu YwppbmRleCAyY2JjYTRhMDg3Li4xYWFjYTA0OTgyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKQEAgLTE4MjAsNiArMTgyMCw4IEBAIHBnb3V0cHV0X3N0 cmVhbV9hYm9ydChzdHJ1Y3QgTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCQkJCQkgIFhM b2dSZWNQdHIgYWJvcnRfbHNuKQogewogCVJlb3JkZXJCdWZmZXJUWE4gKnRvcHR4bjsKKwlib29s IHdyaXRlX2Fib3J0X2xzbiA9IGZhbHNlOworCVBHT3V0cHV0RGF0YSAqZGF0YSA9IChQR091dHB1 dERhdGEgKikgY3R4LT5vdXRwdXRfcGx1Z2luX3ByaXZhdGU7CiAKIAkvKgogCSAqIFRoZSBhYm9y dCBzaG91bGQgaGFwcGVuIG91dHNpZGUgc3RyZWFtaW5nIGJsb2NrLCBldmVuIGZvciBzdHJlYW1l ZApAQCAtMTgzMiw4ICsxODM0LDEzIEBAIHBnb3V0cHV0X3N0cmVhbV9hYm9ydChzdHJ1Y3QgTG9n aWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCiAJQXNzZXJ0KHJidHhuX2lzX3N0cmVhbWVkKHRv cHR4bikpOwogCisJLyogV2Ugb25seSBzZW5kIGFib3J0X2xzbiBhbmQgYWJvcnRfdGltZSBpZiB0 aGUgc3Vic2NyaWJlciBuZWVkcyB0aGVtLiAqLworCWlmIChkYXRhLT5wcm90b2NvbF92ZXJzaW9u ID49IExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVNKQorCQl3cml0 ZV9hYm9ydF9sc24gPSB0cnVlOworCiAJT3V0cHV0UGx1Z2luUHJlcGFyZVdyaXRlKGN0eCwgdHJ1 ZSk7Ci0JbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoY3R4LT5vdXQsIHRvcHR4bi0+eGlk LCB0eG4tPnhpZCk7CisJbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoY3R4LT5vdXQsIHRv cHR4bi0+eGlkLCB0eG4sIGFib3J0X2xzbiwKKwkJCQkJCQkJICB3cml0ZV9hYm9ydF9sc24pOwog CU91dHB1dFBsdWdpbldyaXRlKGN0eCwgdHJ1ZSk7CiAKIAljbGVhbnVwX3JlbF9zeW5jX2NhY2hl KHRvcHR4bi0+eGlkLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rp dml0eS93YWl0X2V2ZW50LmMgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50 LmMKaW5kZXggODdjMTViOWM2Zi4uYmE3ODFlNmYwOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2 aXR5L3dhaXRfZXZlbnQuYwpAQCAtMzg4LDYgKzM4OCw5IEBAIHBnc3RhdF9nZXRfd2FpdF9pcGMo V2FpdEV2ZW50SVBDIHcpCiAJCWNhc2UgV0FJVF9FVkVOVF9IQVNIX0dST1dfQlVDS0VUU19SRUlO U0VSVDoKIAkJCWV2ZW50X25hbWUgPSAiSGFzaEdyb3dCdWNrZXRzUmVpbnNlcnQiOwogCQkJYnJl YWs7CisJCWNhc2UgV0FJVF9FVkVOVF9MT0dJQ0FMX0FQUExZX1dPUktFUl9TVEFURV9DSEFOR0U6 CisJCQlldmVudF9uYW1lID0gIkxvZ2ljYWxBcHBseVdvcmtlclN0YXRlQ2hhbmdlIjsKKwkJCWJy ZWFrOwogCQljYXNlIFdBSVRfRVZFTlRfTE9HSUNBTF9TWU5DX0RBVEE6CiAJCQlldmVudF9uYW1l ID0gIkxvZ2ljYWxTeW5jRGF0YSI7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL21pc2MvZ3VjLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCmluZGV4IDAz MjgwMjlkNDMuLjQyODRiY2JjZDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv Z3VjLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwpAQCAtMzIyMCw2ICszMjIw LDE4IEBAIHN0YXRpYyBzdHJ1Y3QgY29uZmlnX2ludCBDb25maWd1cmVOYW1lc0ludFtdID0KIAkJ TlVMTCwgTlVMTCwgTlVMTAogCX0sCiAKKwl7CisJCXsibWF4X2FwcGx5X2Jnd29ya2Vyc19wZXJf c3Vic2NyaXB0aW9uIiwKKwkJCVBHQ19TSUdIVVAsCisJCQlSRVBMSUNBVElPTl9TVUJTQ1JJQkVS UywKKwkJCWdldHRleHRfbm9vcCgiTWF4aW11bSBudW1iZXIgb2YgYXBwbHkgYmFja2dyb3VuZCB3 b3JrZXJzIHBlciBzdWJzY3JpcHRpb24uIiksCisJCQlOVUxMLAorCQl9LAorCQkmbWF4X2FwcGx5 X2Jnd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uLAorCQkyLCAwLCBNQVhfQkFDS0VORFMsCisJCU5V TEwsIE5VTEwsIE5VTEwKKwl9LAorCiAJewogCQl7ImxvZ19yb3RhdGlvbl9hZ2UiLCBQR0NfU0lH SFVQLCBMT0dHSU5HX1dIRVJFLAogCQkJZ2V0dGV4dF9ub29wKCJTZXRzIHRoZSBhbW91bnQgb2Yg dGltZSB0byB3YWl0IGJlZm9yZSBmb3JjaW5nICIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv cG9zdGdyZXNxbC5jb25mLnNhbXBsZQppbmRleCBiNGJjMDZlNWY1Li5hZDE4NzEwYWY0IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCkBAIC0zNjAs NiArMzYwLDcgQEAKICNtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzID0gNAkjIHRha2Vu IGZyb20gbWF4X3dvcmtlcl9wcm9jZXNzZXMKIAkJCQkJIyAoY2hhbmdlIHJlcXVpcmVzIHJlc3Rh cnQpCiAjbWF4X3N5bmNfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uID0gMgkjIHRha2VuIGZyb20g bWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycworI21heF9hcHBseV9iZ3dvcmtlcnNfcGVy X3N1YnNjcmlwdGlvbiA9IDIJIyB0YWtlbiBmcm9tIG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dv cmtlcnMKIAogCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCBmMzE3ZjBh NjgxLi4yNDkyNzY0MWI5IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisr KyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTQ0NDksNyArNDQ0OSw3IEBAIGdldFN1 YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAx NDAwMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIHMuc3Vic3RyZWFtLFxuIik7 CiAJZWxzZQotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBmYWxzZSBBUyBzdWJzdHJl YW0sXG4iKTsKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgJ2YnIEFTIHN1YnN0cmVh bSxcbiIpOwogCiAJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTUwMDAwKQogCQlhcHBlbmRQ UUV4cEJ1ZmZlclN0cihxdWVyeSwKQEAgLTQ1NzksOCArNDU3OSwxMCBAQCBkdW1wU3Vic2NyaXB0 aW9uKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFN1YnNjcmlwdGlvbkluZm8gKnN1YmluZm8pCiAJaWYg KHN0cmNtcChzdWJpbmZvLT5zdWJiaW5hcnksICJ0IikgPT0gMCkKIAkJYXBwZW5kUFFFeHBCdWZm ZXJTdHIocXVlcnksICIsIGJpbmFyeSA9IHRydWUiKTsKIAotCWlmIChzdHJjbXAoc3ViaW5mby0+ c3Vic3RyZWFtLCAiZiIpICE9IDApCisJaWYgKHN0cmNtcChzdWJpbmZvLT5zdWJzdHJlYW0sICJ0 IikgPT0gMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIsIHN0cmVhbWluZyA9IG9u Iik7CisJZWxzZSBpZiAoc3RyY21wKHN1YmluZm8tPnN1YnN0cmVhbSwgInAiKSA9PSAwKQorCQlh cHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgc3RyZWFtaW5nID0gcGFyYWxsZWwiKTsKIAog CWlmIChzdHJjbXAoc3ViaW5mby0+c3VidHdvcGhhc2VzdGF0ZSwgdHdvX3BoYXNlX2Rpc2FibGVk KSAhPSAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgdHdvX3BoYXNlID0gb24i KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggYi9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCmluZGV4IGQxMjYwZjU5MGMuLmQ1 NDU0MGY1ZjUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9u LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaApAQCAtNjgsNyAr NjgsOCBAQCBDQVRBTE9HKHBnX3N1YnNjcmlwdGlvbiw2MTAwLFN1YnNjcmlwdGlvblJlbGF0aW9u SWQpIEJLSV9TSEFSRURfUkVMQVRJT04gQktJX1JPVwogCWJvb2wJCXN1YmJpbmFyeTsJCS8qIFRy dWUgaWYgdGhlIHN1YnNjcmlwdGlvbiB3YW50cyB0aGUKIAkJCQkJCQkJICogcHVibGlzaGVyIHRv IHNlbmQgZGF0YSBpbiBiaW5hcnkgKi8KIAotCWJvb2wJCXN1YnN0cmVhbTsJCS8qIFN0cmVhbSBp bi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuICovCisJY2hhcgkJc3Vic3RyZWFtOwkJLyogU3RyZWFt IGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4KKwkJCQkJCQkJICogU2VlIFNVQlNUUkVBTV94eHgg Y29uc3RhbnRzLiAqLwogCiAJY2hhcgkJc3VidHdvcGhhc2VzdGF0ZTsJLyogU3RyZWFtIHR3by1w aGFzZSB0cmFuc2FjdGlvbnMgKi8KIApAQCAtMTA5LDcgKzExMCw4IEBAIHR5cGVkZWYgc3RydWN0 IFN1YnNjcmlwdGlvbgogCWJvb2wJCWVuYWJsZWQ7CQkvKiBJbmRpY2F0ZXMgaWYgdGhlIHN1YnNj cmlwdGlvbiBpcyBlbmFibGVkICovCiAJYm9vbAkJYmluYXJ5OwkJCS8qIEluZGljYXRlcyBpZiB0 aGUgc3Vic2NyaXB0aW9uIHdhbnRzIGRhdGEgaW4KIAkJCQkJCQkJICogYmluYXJ5IGZvcm1hdCAq LwotCWJvb2wJCXN0cmVhbTsJCQkvKiBBbGxvdyBzdHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNh Y3Rpb25zLiAqLworCWNoYXIJCXN0cmVhbTsJCQkvKiBBbGxvdyBzdHJlYW1pbmcgaW4tcHJvZ3Jl c3MgdHJhbnNhY3Rpb25zLgorCQkJCQkJCQkgKiBTZWUgU1VCU1RSRUFNX3h4eCBjb25zdGFudHMu ICovCiAJY2hhcgkJdHdvcGhhc2VzdGF0ZTsJLyogQWxsb3cgc3RyZWFtaW5nIHR3by1waGFzZSB0 cmFuc2FjdGlvbnMgKi8KIAlib29sCQlkaXNhYmxlb25lcnI7CS8qIEluZGljYXRlcyBpZiB0aGUg c3Vic2NyaXB0aW9uIHNob3VsZCBiZQogCQkJCQkJCQkgKiBhdXRvbWF0aWNhbGx5IGRpc2FibGVk IGlmIGEgd29ya2VyIGVycm9yCkBAIC0xMjAsNiArMTIyLDIxIEBAIHR5cGVkZWYgc3RydWN0IFN1 YnNjcmlwdGlvbgogCUxpc3QJICAgKnB1YmxpY2F0aW9uczsJLyogTGlzdCBvZiBwdWJsaWNhdGlv biBuYW1lcyB0byBzdWJzY3JpYmUgdG8gKi8KIH0gU3Vic2NyaXB0aW9uOwogCisvKiBEaXNhbGxv dyBzdHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zICovCisjZGVmaW5lIFNVQlNUUkVB TV9PRkYgJ2YnCisKKy8qCisgKiBTdHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIGFy ZSB3cml0dGVuIHRvIGEgdGVtcG9yYXJ5IGZpbGUgYW5kCisgKiBhcHBsaWVkIG9ubHkgYWZ0ZXIg dGhlIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiB1cHN0cmVhbS4KKyAqLworI2RlZmluZSBT VUJTVFJFQU1fT04gJ3QnCisKKy8qCisgKiBTdHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rp b25zIGFyZSBhcHBsaWVkIGltbWVkaWF0ZWx5IHZpYSBhIGJhY2tncm91bmQKKyAqIHdvcmtlcgor ICovCisjZGVmaW5lIFNVQlNUUkVBTV9QQVJBTExFTCAncCcKKwogZXh0ZXJuIFN1YnNjcmlwdGlv biAqR2V0U3Vic2NyaXB0aW9uKE9pZCBzdWJpZCwgYm9vbCBtaXNzaW5nX29rKTsKIGV4dGVybiB2 b2lkIEZyZWVTdWJzY3JpcHRpb24oU3Vic2NyaXB0aW9uICpzdWIpOwogZXh0ZXJuIHZvaWQgRGlz YWJsZVN1YnNjcmlwdGlvbihPaWQgc3ViaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dp Y2FsbGF1bmNoZXIuaAppbmRleCBmMWUyODIxZTI1Li5hYzhlZjk0MzgxIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaAorKysgYi9zcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaApAQCAtMTQsNiArMTQsNyBAQAogCiBleHRl cm4gUEdETExJTVBPUlQgaW50IG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM7CiBleHRl cm4gUEdETExJTVBPUlQgaW50IG1heF9zeW5jX3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbjsKK2V4 dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X2FwcGx5X2Jnd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9u OwogCiBleHRlcm4gdm9pZCBBcHBseUxhdW5jaGVyUmVnaXN0ZXIodm9pZCk7CiBleHRlcm4gdm9p ZCBBcHBseUxhdW5jaGVyTWFpbihEYXR1bSBtYWluX2FyZyk7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L2xvZ2ljYWxwcm90by5oCmluZGV4IGE3NzFhYjhmZjMuLjBmNzRhMzM5MmIgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oCisrKyBiL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oCkBAIC0zMiwxMiArMzIsMTcgQEAKICAqCiAgKiBM T0dJQ0FMUkVQX1BST1RPX1RXT1BIQVNFX1ZFUlNJT05fTlVNIGlzIHRoZSBtaW5pbXVtIHByb3Rv Y29sIHZlcnNpb24gd2l0aAogICogc3VwcG9ydCBmb3IgdHdvLXBoYXNlIGNvbW1pdCBkZWNvZGlu ZyAoYXQgcHJlcGFyZSB0aW1lKS4gSW50cm9kdWNlZCBpbiBQRzE1LgorICoKKyAqIExPR0lDQUxS RVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVNIGlzIHRoZSBtaW5pbXVtIHByb3Rv Y29sIHZlcnNpb24KKyAqIHdpdGggc3VwcG9ydCBmb3Igc3RyZWFtaW5nIGxhcmdlIHRyYW5zYWN0 aW9ucyBpbiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4KKyAqIEludHJvZHVjZWQgaW4gUEcxNi4K ICAqLwogI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX01JTl9WRVJTSU9OX05VTSAxCiAjZGVmaW5l IExPR0lDQUxSRVBfUFJPVE9fVkVSU0lPTl9OVU0gMQogI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RP X1NUUkVBTV9WRVJTSU9OX05VTSAyCiAjZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fVFdPUEhBU0Vf VkVSU0lPTl9OVU0gMwotI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX01BWF9WRVJTSU9OX05VTSBM T0dJQ0FMUkVQX1BST1RPX1RXT1BIQVNFX1ZFUlNJT05fTlVNCisjZGVmaW5lIExPR0lDQUxSRVBf UFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVNIDQKKyNkZWZpbmUgTE9HSUNBTFJFUF9Q Uk9UT19NQVhfVkVSU0lPTl9OVU0gTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVS U0lPTl9OVU0KIAogLyoKICAqIExvZ2ljYWwgbWVzc2FnZSB0eXBlcwpAQCAtMTc1LDYgKzE4MCwx NyBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwUm9sbGJhY2tQcmVwYXJlZFR4bkRhdGEKIAlj aGFyCQlnaWRbR0lEU0laRV07CiB9IExvZ2ljYWxSZXBSb2xsYmFja1ByZXBhcmVkVHhuRGF0YTsK IAorLyoKKyAqIFRyYW5zYWN0aW9uIHByb3RvY29sIGluZm9ybWF0aW9uIGZvciBzdHJlYW0gYWJv cnQuCisgKi8KK3R5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEKK3sKKwlU cmFuc2FjdGlvbklkIHhpZDsKKwlUcmFuc2FjdGlvbklkIHN1YnhpZDsKKwlYTG9nUmVjUHRyCWFi b3J0X2xzbjsKKwlUaW1lc3RhbXBUeiBhYm9ydF90aW1lOworfSBMb2dpY2FsUmVwU3RyZWFtQWJv cnREYXRhOworCiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX2JlZ2luKFN0cmluZ0luZm8g b3V0LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4pOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF9yZWFk X2JlZ2luKFN0cmluZ0luZm8gaW4sCiAJCQkJCQkJCSAgTG9naWNhbFJlcEJlZ2luRGF0YSAqYmVn aW5fZGF0YSk7CkBAIC0yNDYsOSArMjYyLDEyIEBAIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd3Jp dGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIG91dCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuCiBl eHRlcm4gVHJhbnNhY3Rpb25JZCBsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2NvbW1pdChTdHJpbmdJ bmZvIG91dCwKIAkJCQkJCQkJCQkJCSAgIExvZ2ljYWxSZXBDb21taXREYXRhICpjb21taXRfZGF0 YSk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZv IG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsCi0JCQkJCQkJCQkJICBUcmFuc2FjdGlvbklkIHN1Ynhp ZCk7Ci1leHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8g aW4sIFRyYW5zYWN0aW9uSWQgKnhpZCwKLQkJCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCAqc3VieGlk KTsKKwkJCQkJCQkJCQkgIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKKwkJCQkJCQkJCQkgIFhMb2dS ZWNQdHIgYWJvcnRfbHNuLAorCQkJCQkJCQkJCSAgYm9vbCB3cml0ZV9hYm9ydF9sc24pOworZXh0 ZXJuIHZvaWQgbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIGluLAorCQkJ CQkJCQkJCSBMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhICphYm9ydF9kYXRhLAorCQkJCQkJCQkJ CSBib29sIGluY2x1ZGVfYWJvcnRfbHNuKTsKIGV4dGVybiBjaGFyICpsb2dpY2FscmVwX21lc3Nh Z2VfdHlwZShMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24pOwogCiAjZW5kaWYJCQkJCQkJLyogTE9H SUNBTF9QUk9UT19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dp Y2Fsd29ya2VyLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgKaW5k ZXggY2QxYjZlOGFmYy4uNmExYWY3ZjEzYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vbG9naWNhbHdvcmtlci5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2lj YWx3b3JrZXIuaApAQCAtMTMsNiArMTMsNyBAQAogI2RlZmluZSBMT0dJQ0FMV09SS0VSX0gKIAog ZXh0ZXJuIHZvaWQgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKTsKK2V4dGVybiB2b2lk IEFwcGx5Qmd3b3JrZXJNYWluKERhdHVtIG1haW5fYXJnKTsKIAogZXh0ZXJuIGJvb2wgSXNMb2dp Y2FsV29ya2VyKHZvaWQpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9v cmlnaW4uaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL29yaWdpbi5oCmluZGV4IDJkMWI1ZTVj MjguLmM3Mzg5YjQwYTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL29yaWdp bi5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL29yaWdpbi5oCkBAIC01Myw3ICs1Myw3 IEBAIGV4dGVybiBYTG9nUmVjUHRyIHJlcGxvcmlnaW5fZ2V0X3Byb2dyZXNzKFJlcE9yaWdpbklk IG5vZGUsIGJvb2wgZmx1c2gpOwogCiBleHRlcm4gdm9pZCByZXBsb3JpZ2luX3Nlc3Npb25fYWR2 YW5jZShYTG9nUmVjUHRyIHJlbW90ZV9jb21taXQsCiAJCQkJCQkJCQkgICBYTG9nUmVjUHRyIGxv Y2FsX2NvbW1pdCk7Ci1leHRlcm4gdm9pZCByZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVwT3Jp Z2luSWQgbm9kZSk7CitleHRlcm4gdm9pZCByZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVwT3Jp Z2luSWQgbm9kZSwgYm9vbCBtdXN0X2FjcXVpcmUpOwogZXh0ZXJuIHZvaWQgcmVwbG9yaWdpbl9z ZXNzaW9uX3Jlc2V0KHZvaWQpOwogZXh0ZXJuIFhMb2dSZWNQdHIgcmVwbG9yaWdpbl9zZXNzaW9u X2dldF9wcm9ncmVzcyhib29sIGZsdXNoKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRl cmJ1ZmZlci5oCmluZGV4IGQxMDlkMGJhZWQuLmQyYTgwZDc5ZTUgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKQEAgLTMwMSw2ICszMDEsNyBAQCB0eXBlZGVmIHN0cnVj dCBSZW9yZGVyQnVmZmVyVFhOCiAJewogCQlUaW1lc3RhbXBUeiBjb21taXRfdGltZTsKIAkJVGlt ZXN0YW1wVHogcHJlcGFyZV90aW1lOworCQlUaW1lc3RhbXBUeiBhYm9ydF90aW1lOwogCX0JCQl4 YWN0X3RpbWU7CiAKIAkvKgpAQCAtNjQ3LDkgKzY0OCwxMSBAQCBleHRlcm4gdm9pZCBSZW9yZGVy QnVmZmVyRmluaXNoUHJlcGFyZWQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlk LAogZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckFzc2lnbkNoaWxkKFJlb3JkZXJCdWZmZXIgKiwg VHJhbnNhY3Rpb25JZCwgVHJhbnNhY3Rpb25JZCwgWExvZ1JlY1B0ciBjb21taXRfbHNuKTsKIGV4 dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJDb21taXRDaGlsZChSZW9yZGVyQnVmZmVyICosIFRyYW5z YWN0aW9uSWQsIFRyYW5zYWN0aW9uSWQsCiAJCQkJCQkJCQkgWExvZ1JlY1B0ciBjb21taXRfbHNu LCBYTG9nUmVjUHRyIGVuZF9sc24pOwotZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckFib3J0KFJl b3JkZXJCdWZmZXIgKiwgVHJhbnNhY3Rpb25JZCwgWExvZ1JlY1B0ciBsc24pOworZXh0ZXJuIHZv aWQgUmVvcmRlckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIgKiwgVHJhbnNhY3Rpb25JZCwgWExv Z1JlY1B0ciBsc24sCisJCQkJCQkJICAgVGltZXN0YW1wVHogYWJvcnRfdGltZSk7CiBleHRlcm4g dm9pZCBSZW9yZGVyQnVmZmVyQWJvcnRPbGQoUmVvcmRlckJ1ZmZlciAqLCBUcmFuc2FjdGlvbklk IHhpZCk7Ci1leHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyRm9yZ2V0KFJlb3JkZXJCdWZmZXIgKiwg VHJhbnNhY3Rpb25JZCwgWExvZ1JlY1B0ciBsc24pOworZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZl ckZvcmdldChSZW9yZGVyQnVmZmVyICosIFRyYW5zYWN0aW9uSWQsIFhMb2dSZWNQdHIgbHNuLAor CQkJCQkJCQlUaW1lc3RhbXBUeiBhYm9ydF90aW1lKTsKIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZm ZXJJbnZhbGlkYXRlKFJlb3JkZXJCdWZmZXIgKiwgVHJhbnNhY3Rpb25JZCwgWExvZ1JlY1B0ciBs c24pOwogCiBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyU2V0QmFzZVNuYXBzaG90KFJlb3JkZXJC dWZmZXIgKiwgVHJhbnNhY3Rpb25JZCwgWExvZ1JlY1B0ciBsc24sIHN0cnVjdCBTbmFwc2hvdERh dGEgKnNuYXApOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2lu dGVybmFsLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAppbmRl eCA5MDE4NDVhYmMyLi41YmU4ZjU3NTVlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi93b3JrZXJfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3Jr ZXJfaW50ZXJuYWwuaApAQCAtMTcsOCArMTcsMTEgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2Rl ZnMuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIgogI2luY2x1ZGUgImRh dGF0eXBlL3RpbWVzdGFtcC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlv bi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmlsZXNldC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG9j ay5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc2htX21xLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zaG1f dG9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCiAKIApAQCAtNjAsNiArNjMsOSBAQCB0 eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwV29ya2VyCiAJICovCiAJRmlsZVNldCAgICAqc3RyZWFt X2ZpbGVzZXQ7CiAKKwkvKiBJbmRpY2F0ZXMgaWYgdGhpcyBzbG90IGlzIHVzZWQgZm9yIGFuIGFw cGx5IGJhY2tncm91bmQgd29ya2VyLiAqLworCWJvb2wJCXN1YndvcmtlcjsKKwogCS8qIFN0YXRz LiAqLwogCVhMb2dSZWNQdHIJbGFzdF9sc247CiAJVGltZXN0YW1wVHogbGFzdF9zZW5kX3RpbWU7 CkBAIC02OCw4ICs3NCw2OCBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwV29ya2VyCiAJVGlt ZXN0YW1wVHogcmVwbHlfdGltZTsKIH0gTG9naWNhbFJlcFdvcmtlcjsKIAorLyogU3RydWN0IGZv ciBzYXZpbmcgYW5kIHJlc3RvcmluZyBhcHBseSBlcnJjb250ZXh0IGluZm9ybWF0aW9uICovCit0 eXBlZGVmIHN0cnVjdCBBcHBseUVycm9yQ2FsbGJhY2tBcmcKK3sKKwlMb2dpY2FsUmVwTXNnVHlw ZSBjb21tYW5kOwkvKiAwIGlmIGludmFsaWQgKi8KKwlMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJl bDsKKworCS8qIFJlbW90ZSBub2RlIGluZm9ybWF0aW9uICovCisJaW50CQkJcmVtb3RlX2F0dG51 bTsJLyogLTEgaWYgaW52YWxpZCAqLworCVRyYW5zYWN0aW9uSWQgcmVtb3RlX3hpZDsKKwlYTG9n UmVjUHRyCWZpbmlzaF9sc247CisJY2hhcgkgICAqb3JpZ2luX25hbWU7Cit9IEFwcGx5RXJyb3JD YWxsYmFja0FyZzsKKworLyoKKyAqIFN0YXR1cyBvZiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4K KyAqLwordHlwZWRlZiBlbnVtIEFwcGx5Qmd3b3JrZXJTdGF0dXMKK3sKKwlBUFBMWV9CR1dPUktF Ul9CVVNZID0gMCwJCS8qIGFzc2lnbmVkIHRvIGEgdHJhbnNhY3Rpb24gKi8KKwlBUFBMWV9CR1dP UktFUl9GSU5JU0hFRCwJCS8qIHRyYW5zYWN0aW9uIGlzIGNvbXBsZXRlZCAqLworCUFQUExZX0JH V09SS0VSX0VYSVQJCQkJLyogZXhpdCAqLworfSBBcHBseUJnd29ya2VyU3RhdHVzOworCisvKgor ICogU3RydWN0IGZvciBzaGFyaW5nIGluZm9ybWF0aW9uIGJldHdlZW4gYXBwbHkgbWFpbiBhbmQg YXBwbHkgYmFja2dyb3VuZAorICogd29ya2Vycy4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgQXBwbHlC Z3dvcmtlclNoYXJlZAoreworCXNsb2NrX3QJbXV0ZXg7CisKKwkvKiBTdGF0dXMgb2YgYXBwbHkg YmFja2dyb3VuZCB3b3JrZXIuICovCisJQXBwbHlCZ3dvcmtlclN0YXR1cwlzdGF0dXM7CisKKwkv KiBzZXJ2ZXIgdmVyc2lvbiBvZiBwdWJsaXNoZXIuICovCisJaW50IHNlcnZlcl92ZXJzaW9uOwor CisJVHJhbnNhY3Rpb25JZAlzdHJlYW1feGlkOworCXVpbnQzMgluOwkvKiBpZCBvZiBhcHBseSBi YWNrZ3JvdW5kIHdvcmtlciAqLworfSBBcHBseUJnd29ya2VyU2hhcmVkOworCisvKgorICogU3Ry dWN0IGZvciBtYWludGFpbmluZyBhbiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4KKyAqLwordHlw ZWRlZiBzdHJ1Y3QgQXBwbHlCZ3dvcmtlclN0YXRlCit7CisJc2htX21xX2hhbmRsZQkJCSptcV9o YW5kbGU7CisJZHNtX3NlZ21lbnQJCQkJKmRzbV9zZWc7CisJQXBwbHlCZ3dvcmtlclNoYXJlZCB2 b2xhdGlsZQkqcHN0YXRlOworfSBBcHBseUJnd29ya2VyU3RhdGU7CisKIC8qIE1haW4gbWVtb3J5 IGNvbnRleHQgZm9yIGFwcGx5IHdvcmtlci4gUGVybWFuZW50IGR1cmluZyB3b3JrZXIgbGlmZXRp bWUuICovCiBleHRlcm4gUEdETExJTVBPUlQgTWVtb3J5Q29udGV4dCBBcHBseUNvbnRleHQ7Citl eHRlcm4gUEdETExJTVBPUlQgTWVtb3J5Q29udGV4dCBBcHBseU1lc3NhZ2VDb250ZXh0OworCitl eHRlcm4gUEdETExJTVBPUlQgQXBwbHlFcnJvckNhbGxiYWNrQXJnIGFwcGx5X2Vycm9yX2NhbGxi YWNrX2FyZzsKKworZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgTXlTdWJzY3JpcHRpb25WYWxpZDsK KworZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIEFwcGx5Qmd3b3JrZXJTaGFyZWQgKk15UGFy YWxsZWxTdGF0ZTsKKworZXh0ZXJuIFBHRExMSU1QT1JUIExpc3QgKnN1YnhhY3RsaXN0OwogCiAv KiBsaWJwcXJlY2VpdmVyIGNvbm5lY3Rpb24gKi8KIGV4dGVybiBQR0RMTElNUE9SVCBzdHJ1Y3Qg V2FsUmVjZWl2ZXJDb25uICpMb2dSZXBXb3JrZXJXYWxSY3ZDb25uOwpAQCAtNzksMTggKzE0NSwy MiBAQCBleHRlcm4gUEdETExJTVBPUlQgU3Vic2NyaXB0aW9uICpNeVN1YnNjcmlwdGlvbjsKIGV4 dGVybiBQR0RMTElNUE9SVCBMb2dpY2FsUmVwV29ya2VyICpNeUxvZ2ljYWxSZXBXb3JrZXI7CiAK IGV4dGVybiBQR0RMTElNUE9SVCBib29sIGluX3JlbW90ZV90cmFuc2FjdGlvbjsKK2V4dGVybiBQ R0RMTElNUE9SVCBib29sIGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uOworZXh0ZXJuIFBHRExMSU1Q T1JUIFRyYW5zYWN0aW9uSWQgc3RyZWFtX3hpZDsKIAogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93 b3JrZXJfYXR0YWNoKGludCBzbG90KTsKIGV4dGVybiBMb2dpY2FsUmVwV29ya2VyICpsb2dpY2Fs cmVwX3dvcmtlcl9maW5kKE9pZCBzdWJpZCwgT2lkIHJlbGlkLAogCQkJCQkJCQkJCQkJYm9vbCBv bmx5X3J1bm5pbmcpOwogZXh0ZXJuIExpc3QgKmxvZ2ljYWxyZXBfd29ya2Vyc19maW5kKE9pZCBz dWJpZCwgYm9vbCBvbmx5X3J1bm5pbmcpOwotZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJf bGF1bmNoKE9pZCBkYmlkLCBPaWQgc3ViaWQsIGNvbnN0IGNoYXIgKnN1Ym5hbWUsCi0JCQkJCQkJ CQkgT2lkIHVzZXJpZCwgT2lkIHJlbGlkKTsKK2V4dGVybiBib29sIGxvZ2ljYWxyZXBfd29ya2Vy X2xhdW5jaChPaWQgZGJpZCwgT2lkIHN1YmlkLCBjb25zdCBjaGFyICpzdWJuYW1lLAorCQkJCQkJ CQkJIE9pZCB1c2VyaWQsIE9pZCByZWxpZCwKKwkJCQkJCQkJCSBkc21faGFuZGxlIHN1Yndvcmtl cl9kc20pOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfc3RvcChPaWQgc3ViaWQsIE9p ZCByZWxpZCk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl93YWtldXAoT2lkIHN1Ymlk LCBPaWQgcmVsaWQpOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfd2FrZXVwX3B0cihM b2dpY2FsUmVwV29ya2VyICp3b3JrZXIpOwogCiBleHRlcm4gaW50CWxvZ2ljYWxyZXBfc3luY193 b3JrZXJfY291bnQoT2lkIHN1YmlkKTsKK2V4dGVybiBpbnQJbG9naWNhbHJlcF9hcHBseV9iZ3dv cmtlcl9jb3VudChPaWQgc3ViaWQpOwogCiBleHRlcm4gdm9pZCBSZXBsaWNhdGlvbk9yaWdpbk5h bWVGb3JUYWJsZXN5bmMoT2lkIHN1Ym9pZCwgT2lkIHJlbGlkLAogCQkJCQkJCQkJCQkgIGNoYXIg Km9yaWdpbm5hbWUsIGludCBzem9yZ25hbWUpOwpAQCAtMTAzLDEwICsxNzMsMzggQEAgZXh0ZXJu IHZvaWQgcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKTsKIGV4 dGVybiB2b2lkIGludmFsaWRhdGVfc3luY2luZ190YWJsZV9zdGF0ZXMoRGF0dW0gYXJnLCBpbnQg Y2FjaGVpZCwKIAkJCQkJCQkJCQkJdWludDMyIGhhc2h2YWx1ZSk7CiAKK2V4dGVybiB2b2lkIFVw ZGF0ZVdvcmtlclN0YXRzKFhMb2dSZWNQdHIgbGFzdF9sc24sIFRpbWVzdGFtcFR6IHNlbmRfdGlt ZSwKKwkJCQkJCQkgIGJvb2wgcmVwbHkpOworCitleHRlcm4gdm9pZCBhcHBseV9kaXNwYXRjaChT dHJpbmdJbmZvIHMpOworCisvKiBGdW5jdGlvbiBmb3IgYXBwbHkgZXJyb3IgY2FsbGJhY2sgKi8K K2V4dGVybiB2b2lkIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZyk7CisKK2V4dGVybiB2 b2lkIHN1YnNjcmlwdGlvbl9jaGFuZ2VfY2IoRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMy IGhhc2h2YWx1ZSk7CisKKy8qIEFwcGx5IGJhY2tncm91bmQgd29ya2VyIHNldHVwIGFuZCBpbnRl cmFjdGlvbnMgKi8KK2V4dGVybiBBcHBseUJnd29ya2VyU3RhdGUgKmFwcGx5X2Jnd29ya2VyX3N0 YXJ0KFRyYW5zYWN0aW9uSWQgeGlkKTsKK2V4dGVybiBBcHBseUJnd29ya2VyU3RhdGUgKmFwcGx5 X2Jnd29ya2VyX2ZpbmQoVHJhbnNhY3Rpb25JZCB4aWQpOworZXh0ZXJuIHZvaWQgYXBwbHlfYmd3 b3JrZXJfd2FpdF9mb3IoQXBwbHlCZ3dvcmtlclN0YXRlICp3c3RhdGUsCisJCQkJCQkJCQlBcHBs eUJnd29ya2VyU3RhdHVzIHdhaXRfZm9yX3N0YXR1cyk7CitleHRlcm4gdm9pZCBhcHBseV9iZ3dv cmtlcl9zZW5kX2RhdGEoQXBwbHlCZ3dvcmtlclN0YXRlICp3c3RhdGUsIFNpemUgbmJ5dGVzLAor CQkJCQkJCQkJIGNvbnN0IHZvaWQgKmRhdGEpOworZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3JrZXJf ZnJlZShBcHBseUJnd29ya2VyU3RhdGUgKndzdGF0ZSk7CitleHRlcm4gdm9pZCBhcHBseV9iZ3dv cmtlcl9jaGVja19zdGF0dXModm9pZCk7CitleHRlcm4gdm9pZCBhcHBseV9iZ3dvcmtlcl9zZXRf c3RhdHVzKEFwcGx5Qmd3b3JrZXJTdGF0dXMgc3RhdHVzKTsKK2V4dGVybiB2b2lkIGFwcGx5X2Jn d29ya2VyX3N1YnhhY3RfaW5mb19hZGQoVHJhbnNhY3Rpb25JZCBjdXJyZW50X3hpZCk7CisKIHN0 YXRpYyBpbmxpbmUgYm9vbAogYW1fdGFibGVzeW5jX3dvcmtlcih2b2lkKQogewogCXJldHVybiBP aWRJc1ZhbGlkKE15TG9naWNhbFJlcFdvcmtlci0+cmVsaWQpOwogfQogCitzdGF0aWMgaW5saW5l IGJvb2wKK2FtX2FwcGx5X2Jnd29ya2VyKHZvaWQpCit7CisJcmV0dXJuIE15TG9naWNhbFJlcFdv cmtlci0+c3Vid29ya2VyOworfQorCiAjZW5kaWYJCQkJCQkJLyogV09SS0VSX0lOVEVSTkFMX0gg Ki8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCBiL3NyYy9pbmNs dWRlL3V0aWxzL3dhaXRfZXZlbnQuaAppbmRleCBiNTc4ZTJlYzc1Li5jMmQyYTExNGQ3IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKKysrIGIvc3JjL2luY2x1ZGUv dXRpbHMvd2FpdF9ldmVudC5oCkBAIC0xMDUsNiArMTA1LDcgQEAgdHlwZWRlZiBlbnVtCiAJV0FJ VF9FVkVOVF9IQVNIX0dST1dfQlVDS0VUU19BTExPQ0FURSwKIAlXQUlUX0VWRU5UX0hBU0hfR1JP V19CVUNLRVRTX0VMRUNULAogCVdBSVRfRVZFTlRfSEFTSF9HUk9XX0JVQ0tFVFNfUkVJTlNFUlQs CisJV0FJVF9FVkVOVF9MT0dJQ0FMX0FQUExZX1dPUktFUl9TVEFURV9DSEFOR0UsCiAJV0FJVF9F VkVOVF9MT0dJQ0FMX1NZTkNfREFUQSwKIAlXQUlUX0VWRU5UX0xPR0lDQUxfU1lOQ19TVEFURV9D SEFOR0UsCiAJV0FJVF9FVkVOVF9NUV9JTlRFUk5BTCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvc3Vic2NyaXB0aW9uLm91dAppbmRleCA1ZGI3MTQ2ZTA2Li45MTkyNjZhZTA2IDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0CkBAIC0xOTcsNyArMTk3LDcg QEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5P TkUpOwogRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViOwogLS0gZmFpbCAtIHN0cmVh bWluZyBtdXN0IGJlIGJvb2xlYW4KIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3Vi IENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCTElDQVRJT04gdGVz dHB1YiBXSVRIIChjb25uZWN0ID0gZmFsc2UsIHN0cmVhbWluZyA9IGZvbyk7Ci1FUlJPUjogIHN0 cmVhbWluZyByZXF1aXJlcyBhIEJvb2xlYW4gdmFsdWUKK0VSUk9SOiAgc3RyZWFtaW5nIHJlcXVp cmVzIGEgQm9vbGVhbiB2YWx1ZSBvciAicGFyYWxsZWwiCiAtLSBub3cgaXQgd29ya3MKIENSRUFU RSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNz X2RvZXNub3RleGlzdCcgUFVCTElDQVRJT04gdGVzdHB1YiBXSVRIIChjb25uZWN0ID0gZmFsc2Us IHN0cmVhbWluZyA9IHRydWUpOwogV0FSTklORzogIHRhYmxlcyB3ZXJlIG5vdCBzdWJzY3JpYmVk LCB5b3Ugd2lsbCBoYXZlIHRvIHJ1biBBTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0ggUFVC TElDQVRJT04gdG8gc3Vic2NyaWJlIHRoZSB0YWJsZXMKZGlmZiAtLWdpdCBhL3NyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QK aW5kZXggMzRhNzZjZWI2MC4uNDEzN2RjNzdiNCAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5k ZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QK QEAgLTExNiw2ICsxMTYsMTAgQEAgQXBwZW5kCiBBcHBlbmRQYXRoCiBBcHBlbmRSZWxJbmZvCiBB cHBlbmRTdGF0ZQorQXBwbHlCZ3dvcmtlckVudHJ5CitBcHBseUJnd29ya2VyU2hhcmVkCitBcHBs eUJnd29ya2VyU3RhdGUKK0FwcGx5Qmd3b3JrZXJTdGF0dXMKIEFwcGx5RXJyb3JDYWxsYmFja0Fy ZwogQXBwbHlFeGVjdXRpb25EYXRhCiBBcHBseVN1YlhhY3REYXRhCkBAIC0xNDg1LDYgKzE0ODks NyBAQCBMb2dpY2FsUmVwUmVsSWQKIExvZ2ljYWxSZXBSZWxNYXBFbnRyeQogTG9naWNhbFJlcFJl bGF0aW9uCiBMb2dpY2FsUmVwUm9sbGJhY2tQcmVwYXJlZFR4bkRhdGEKK0xvZ2ljYWxSZXBTdHJl YW1BYm9ydERhdGEKIExvZ2ljYWxSZXBUdXBsZURhdGEKIExvZ2ljYWxSZXBUeXAKIExvZ2ljYWxS ZXBXb3JrZXIKLS0gCjIuMjMuMC53aW5kb3dzLjEKCg== --_005_OS3PR01MB62755C6C9A75EB09F7218B589E839OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v15-0002-Test-streaming-parallel-option-in-tap-test.patch" Content-Description: v15-0002-Test-streaming-parallel-option-in-tap-test.patch Content-Disposition: attachment; filename="v15-0002-Test-streaming-parallel-option-in-tap-test.patch"; size=70776; creation-date="Thu, 07 Jul 2022 03:43:00 GMT"; modification-date="Thu, 07 Jul 2022 03:44:02 GMT" Content-Transfer-Encoding: base64 RnJvbSBmY2ZmYmU5NmNmYjVlMzhmZjNiZWZkNDZiMTJiNmRmZGRhOWJhODQzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAic2hpeS5mbnN0IiA8c2hpeS5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBGcmksIDEzIE1heSAyMDIyIDE0OjUwOjMwICswODAwClN1YmplY3Q6IFtQQVRDSCB2MTUg Mi80XSBUZXN0IHN0cmVhbWluZyBwYXJhbGxlbCBvcHRpb24gaW4gdGFwIHRlc3QKCkNoYW5nZSBh bGwgVEFQIHRlc3RzIHVzaW5nIHRoZSBTVUJTQ1JJUFRJT04gInN0cmVhbWluZyIgcGFyYW1ldGVy LCBzbyB0aGV5Cm5vdyB0ZXN0IGJvdGggJ29uJyBhbmQgJ3BhcmFsbGVsJyB2YWx1ZXMuCi0tLQog c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgIHwgMTk5ICsrKyst LS0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbCB8IDExOSAr KystLQogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwgICAgIHwgMTg4 ICsrKystLS0KIC4uLi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbCAgICAgICAgICAgICB8 IDE5NSArKysrLS0tCiAuLi4vdC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsICAgICAg ICAgfCAxMTAgKysrLQogLi4uL3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBs ICAgIHwgMzYzICsrKysrKystLS0tLS0KIC4uLi9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vf c3RyZWFtLnBsICAgICB8IDQ5OCArKysrKysrKysrLS0tLS0tLS0KIDcgZmlsZXMgY2hhbmdlZCwg MTAzNSBpbnNlcnRpb25zKCspLCA2MzcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAxNV9zdHJlYW0ucGwKaW5kZXggNjU2MWIxODlkZS4uMGJkZDIzNDkzNSAxMDA2NDQKLS0tIGEv c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCkBAIC04LDYgKzgsMTE2IEBAIHVzZSBQb3N0Z3JlU1FM OjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6 Ok1vcmU7CiAKKyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBh cmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgorIyBwYXJhbWV0ZXIgc28gdGhlIHNhbWUgY29kZSBj YW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kCisjIHN0cmVhbWluZz1wYXJh bGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIs ICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87CisKKwkjIElu dGVybGVhdmUgYSBwYWlyIG9mIHRyYW5zYWN0aW9ucywgZWFjaCBleGNlZWRpbmcgdGhlIDY0a0Ig bGltaXQuCisJbXkgJGluICA9ICcnOworCW15ICRvdXQgPSAnJzsKKworCW15ICR0aW1lciA9IElQ Qzo6UnVuOjp0aW1lb3V0KCRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0 KTsKKworCW15ICRoID0gJG5vZGVfcHVibGlzaGVyLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVz JywgXCRpbiwgXCRvdXQsICR0aW1lciwKKwkJb25fZXJyb3Jfc3RvcCA9PiAwKTsKKworCSMgQ2hl Y2sgdGhhdCBhIGJhY2tncm91bmQgd29ya2VyIHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBwYXJhbWV0 ZXIgaXMKKwkjIHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLiAgV2UgaGF2ZSB0byBsb29rIGZvciB0 aGUgREVCVUcxIGxvZyBtZXNzYWdlcworCSMgYWJvdXQgdGhhdCwgc28gdGVtcG9yYXJpbHkgYnVt cCB1cCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVf c3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9t ZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJ JGluIC49IHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCVVQREFURSB0ZXN0 X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVz dF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCX07CisJJGgtPnB1bXBfbmI7CisKKwlpZiAoJGlz X3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyL1xbQXBw bHkgQkdXICNcZCtcXSBzdGFydGVkLywgMCk7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9j b25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7 CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkkbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3Rh YiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsIDk5OTkp IHMoaSk7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDUwMDA7CisJQ09NTUlUOwor CX0pOworCisJJGluIC49IHF7CisJQ09NTUlUOworCVxxCisJfTsKKwkkaC0+ZmluaXNoOyAgICAj IGVycm9ycyBtYWtlIHRoZSBuZXh0IHRlc3QgZmFpbCwgc28gaWdub3JlIHRoZW0gaGVyZQorCisJ JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCW15ICRyZXN1 bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxF Q1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJ aXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLAorCQknY2hlY2sgZXh0cmEgY29sdW1ucyBj b250YWluIGxvY2FsIGRlZmF1bHRzJyk7CisKKwkjIFRlc3QgdGhlIHN0cmVhbWluZyBpbiBiaW5h cnkgbW9kZQorCSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiQUxU RVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUIChiaW5hcnkgPSBvbikiKTsKKworCSMgSW5zZXJ0 LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQu CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47 CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVy YXRlX3Nlcmllcyg1MDAxLCAxMDAwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBt ZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1v ZChhLDMpID0gMDsKKwlDT01NSVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOworCisJJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50 KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2 NyksCisJCSdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsKKwor CSMgQ2hhbmdlIHRoZSBsb2NhbCB2YWx1ZXMgb2YgdGhlIGV4dHJhIGNvbHVtbnMgb24gdGhlIHN1 YnNjcmliZXIsCisJIyB1cGRhdGUgcHVibGlzaGVyLCBhbmQgY2hlY2sgdGhhdCBzdWJzY3JpYmVy IHJldGFpbnMgdGhlIGV4cGVjdGVkCisJIyB2YWx1ZXMuIFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQg bm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMgYmVoYXZlCisJIyBwcm9wZXJseSBhZnRlciBhIHN0 cmVhbWluZyB0cmFuc2FjdGlvbi4KKwkkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIlVQREFURSB0ZXN0X3RhYiBTRVQgYyA9ICdlcG9jaCc6OnRpbWVzdGFtcHR6ICsg OTg3NjU0MzIxICogaW50ZXJ2YWwgJzFzJyIKKwkpOworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJCSJVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYTo6dGV4dCki KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkk cmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxF Q1QgY291bnQoKiksIGNvdW50KGV4dHJhY3QoZXBvY2ggZnJvbSBjKSA9IDk4NzY1NDMyMSksIGNv dW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiCisJKTsKKwlpcygkcmVzdWx0LCBxcSg2NjY3fDY2 Njd8NjY2NyksCisJCSdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWxseSBjaGFuZ2Vk IGRhdGEnKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4g MikiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworfQor CiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxpc2hlci0+aW5p dChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CkBAIC0zNyw2ICsxNDcsMTAgQEAgJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9O IHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWIn OworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVh bWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNVQlNDUklQVElPTiB0 YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRh cHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9IG9uKSIKICk7CkBA IC01NCw4MiArMTY4LDI1IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8 MiksICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMg SW50ZXJsZWF2ZSBhIHBhaXIgb2YgdHJhbnNhY3Rpb25zLCBlYWNoIGV4Y2VlZGluZyB0aGUgNjRr QiBsaW1pdC4KLW15ICRpbiAgPSAnJzsKLW15ICRvdXQgPSAnJzsKLQotbXkgJHRpbWVyID0gSVBD OjpSdW46OnRpbWVvdXQoJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQp OwotCi1teSAkaCA9ICRub2RlX3B1Ymxpc2hlci0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jlcycs IFwkaW4sIFwkb3V0LCAkdGltZXIsCi0Jb25fZXJyb3Jfc3RvcCA9PiAwKTsKLQotJGluIC49IHF7 Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9 IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBt b2QoYSwzKSA9IDA7Ci19OwotJGgtPnB1bXBfbmI7Ci0KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSwgOTk5OSkgcyhpKTsK LURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiA1MDAwOwotQ09NTUlUOwotfSk7Ci0KLSRp biAuPSBxewotQ09NTUlUOwotXHEKLX07Ci0kaC0+ZmluaXNoOyAgICAjIGVycm9ycyBtYWtlIHRo ZSBuZXh0IHRlc3QgZmFpbCwgc28gaWdub3JlIHRoZW0gaGVyZQotCi0kbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyks IGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMz NHwzMzM0KSwgJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycpOwot Ci0jIFRlc3QgdGhlIHN0cmVhbWluZyBpbiBiaW5hcnkgbW9kZQotJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVCAo YmluYXJ5ID0gb24pIik7Ci0KLSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93 cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgK LQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwg bWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsIDEwMDAwKSBzKGkpOwotVVBE QVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBG Uk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwordGVzdF9zdHJlYW1pbmcoJG5v ZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7CiAKLSRyZXN1bHQg PQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNv dW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJl c3VsdCwgcXEoNjY2N3w2NjY3fDY2NjcpLCAnY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxv Y2FsIGRlZmF1bHRzJyk7CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor IyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24g V0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWlu Zyc7IgorKTsKIAotIyBDaGFuZ2UgdGhlIGxvY2FsIHZhbHVlcyBvZiB0aGUgZXh0cmEgY29sdW1u cyBvbiB0aGUgc3Vic2NyaWJlciwKLSMgdXBkYXRlIHB1Ymxpc2hlciwgYW5kIGNoZWNrIHRoYXQg c3Vic2NyaWJlciByZXRhaW5zIHRoZSBleHBlY3RlZAotIyB2YWx1ZXMuIFRoaXMgaXMgdG8gZW5z dXJlIHRoYXQgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMgYmVoYXZlCi0jIHByb3Blcmx5IGFm dGVyIGEgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLgogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIlVQREFURSB0ZXN0X3RhYiBTRVQgYyA9ICdlcG9jaCc6OnRpbWVzdGFt cHR6ICsgOTg3NjU0MzIxICogaW50ZXJ2YWwgJzFzJyIKLSk7Ci0kbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAotCSJVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYTo6dGV4 dCkiKTsKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFs bGVsLCBiaW5hcnkgPSBvZmYpIik7CiAKLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7Ciskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVz JywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVS RSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsi CisgICkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8g cmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOwogCi0kcmVzdWx0ID0gJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291 bnQoZXh0cmFjdChlcG9jaCBmcm9tIGMpID0gOTg3NjU0MzIxKSwgY291bnQoZCA9IDk5OSkgRlJP TSB0ZXN0X3RhYiIKLSk7Ci1pcygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2NyksCi0JJ2NoZWNr IGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbGx5IGNoYW5nZWQgZGF0YScpOwordGVzdF9zdHJl YW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CiAK ICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwgYi9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwKaW5kZXggZjI3ZjE2OTRm Mi4uNDU0MjlkZGRiYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0 cmVhbV9zdWJ4YWN0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1f c3VieGFjdC5wbApAQCAtOCw2ICs4LDcyIEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy OwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgRW5j YXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAi c3RyZWFtaW5nIgorIyBwYXJhbWV0ZXIgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGgg Zm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kCisjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1 YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmli ZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87CisKKwkjIENoZWNrIHRoYXQgYSBiYWNr Z3JvdW5kIHdvcmtlciBzdGFydHMgaWYgInN0cmVhbWluZyIgcGFyYW1ldGVyIGlzCisJIyBzcGVj aWZpZWQgYXMgInBhcmFsbGVsIi4gIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cg bWVzc2FnZXMKKwkjIGFib3V0IHRoYXQsIHNvIHRlbXBvcmFyaWx5IGJ1bXAgdXAgdGhlIGxvZyB2 ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFw cGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1 ZzEiKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSMgSW5zZXJ0LCB1cGRh dGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgNjRrQiBsaW1pdC4KKwkkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVz KCAgICAzLCAgNTAwKSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVS RSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAw OworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMSwgIDEwMDApIHMoaSk7CisJVVBEQVRFIHRl c3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0 ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAw MSwgIDE1MDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1v ZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJ U0FWRVBPSU5UIHMzOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUwMSwgIDIwMDApIHMoaSk7CisJVVBEQVRFIHRlc3Rf dGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0 X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJU0FWRVBPSU5UIHM0OworCUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjAwMSwg MjUwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEs MikgPSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlDT01N SVQ7CisJfSk7CisKKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+ d2FpdF9mb3JfbG9nKHFyL1xbQXBwbHkgQkdXICNcZCtcXSBzdGFydGVkLywgMCk7CisJCSRub2Rl X3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5f bWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisK Kwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJbXkgJHJl c3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNF TEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsK KwlpcygkcmVzdWx0LCBxcSgxNjY3fDE2Njd8MTY2NyksCisJCSdjaGVjayBkYXRhIHdhcyBjb3Bp ZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEgY29sdW1ucyBjb250 YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0 X3RhYiBXSEVSRSAoYSA+IDIpIik7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKK30KKwogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRub2RlX3B1Ymxp c2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiAkbm9k ZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwpAQCAtMzcs NiArMTAzLDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNS RUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBw bmFtZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg VGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFU RSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBw bGljYXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1p bmcgPSBvbikiCiApOwpAQCAtNTQsNDEgKzEyNCwyNiBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNU IGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMo JHJlc3VsdCwgcXEoMnwyfDIpLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vi c2NyaWJlcicpOwogCi0jIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8g ZXhjZWVkIDY0a0IgbGltaXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdy ZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKCAgICAzLCAgNTAwKSBzKGkpOwotVVBEQVRFIHRlc3Rf dGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3Rf dGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLCAgMTAw MCkgcyhpKTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9 IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1TQVZFUE9JTlQg czI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEwMDEsICAxNTAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0g bWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1v ZChhLDMpID0gMDsKLVNBVkVQT0lOVCBzMzsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUwMSwgIDIwMDApIHMoaSk7Ci1V UERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRF IEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotU0FWRVBPSU5UIHM0OwotSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cygyMDAxLCAyNTAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJF IG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsK LUNPTU1JVDsKLX0pOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJz Y3JpYmVyLCAkYXBwbmFtZSwgMCk7CiAKLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkg RlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMTY2N3wxNjY3fDE2NjcpLAotCSdjaGVj ayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0 cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAncGFyYWxsZWwn CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworbXkgJG9sZHBpZCA9ICRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgRlJPTSBw Z19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFO RCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKICk7CiAKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQoc3RyZWFtaW5n ID0gcGFyYWxsZWwpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9z dGdyZXMnLAorCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9u IFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1p bmcnOyIKKyAgKQorICBvciBkaWUKKyAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBs eSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQVElPTiI7CisKK3Rlc3Rfc3RyZWFt aW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOworCiAk bm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwogCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTdfc3RyZWFtX2RkbC5wbCBiL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsCmluZGV4IDBiY2U2M2I3MTYuLjUyZGZl ZjQ3ODAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRs LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsCkBAIC04 LDYgKzgsMTExIEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVT UUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgRW5jYXBzdWxhdGUgYWxsIHRo ZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgorIyBw YXJhbWV0ZXIgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1p bmc9b24gYW5kCisjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWlu ZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAk aXNfcGFyYWxsZWwpID0gQF87CisKKwkjIGEgc21hbGwgKG5vbi1zdHJlYW1lZCkgdHJhbnNhY3Rp b24gd2l0aCBEREwgYW5kIERNTAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9z dGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMywgbWQ1 KDM6OnRleHQpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGMgSU5UOworCVNB VkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDQsIG1kNSg0Ojp0ZXh0 KSwgLTQpOworCUNPTU1JVDsKKwl9KTsKKworCSMgQ2hlY2sgdGhhdCBhIGJhY2tncm91bmQgd29y a2VyIHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBwYXJhbWV0ZXIgaXMKKwkjIHNwZWNpZmllZCBhcyAi cGFyYWxsZWwiLiAgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcwor CSMgYWJvdXQgdGhhdCwgc28gdGVtcG9yYXJpbHkgYnVtcCB1cCB0aGUgbG9nIHZlcmJvc2l0eS4K KwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYo J3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkk bm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5z YWN0aW9uIHdpdGggRERMIGFuZCBETUwKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJ J3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwg bWQ1KGk6OnRleHQpLCAtaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1LCAxMDAwKSBzKGkpOworCUFM VEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZCBJTlQ7CisJU0FWRVBPSU5UIHMxOworCUlO U0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMTAwMSwgMjAwMCkgcyhpKTsKKwlDT01NSVQ7CisJfSk7CisKKwlpZiAo JGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyL1xb QXBwbHkgQkdXICNcZCtcXSBzdGFydGVkLywgMCk7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVu ZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5n Iik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkjIGEgc21hbGwgKG5vbi1z dHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTAorCSRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFZBTFVFUyAoMjAwMSwgbWQ1KDIwMDE6OnRleHQpLCAtMjAwMSwgMioyMDAxKTsKKwlBTFRF UiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGUgSU5UOworCVNBVkVQT0lOVCBzMTsKKwlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDIwMDIsIG1kNSgyMDAyOjp0ZXh0KSwgLTIwMDIsIDIq MjAwMiwgLTMqMjAwMik7CisJQ09NTUlUOworCX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCW15ICRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMp LCBjb3VudChkKSwgY291bnQoZSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDIw MDJ8MTk5OXwxMDAyfDEpLAorCQknY2hlY2sgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIg aW4gc3RyZWFtaW5nIG1vZGUgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0 cycKKwkpOworCisJIyBBIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5k IERNTC4gT25lIG9mIHRoZSBEREwgaXMgcGVyZm9ybWVkCisJIyBhZnRlciBETUwgdG8gZW5zdXJl IHRoYXQgd2UgaW52YWxpZGF0ZSB0aGUgc2NoZW1hIHNlbnQgZm9yIHRlc3RfdGFiIHNvIHRoYXQK KwkjIHRoZSBuZXh0IHRyYW5zYWN0aW9uIGhhcyB0byBzZW5kIHRoZSBzY2hlbWEgYWdhaW4uCisJ JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJ SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSwgLTMq aSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAzLDUwMDApIHMoaSk7CisJQUxURVIgVEFCTEUgdGVz dF90YWIgQUREIENPTFVNTiBmIElOVDsKKwlDT01NSVQ7CisJfSk7CisKKwkjIEEgc21hbGwgdHJh bnNhY3Rpb24gdGhhdCB3b24ndCBnZXQgc3RyZWFtZWQuIFRoaXMgaXMganVzdCB0byBlbnN1cmUg dGhhdCB3ZQorCSMgc2VuZCB0aGUgc2NoZW1hIGFnYWluIHRvIHJlZmxlY3QgdGhlIGxhc3QgY29s dW1uIGFkZGVkIGluIHRoZSBwcmV2aW91cyB0ZXN0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmksIC0zKmksIDQqaSBGUk9NIGdlbmVyYXRlX3Nl cmllcyg1MDAxLDUwMDUpIHMoaSk7CisJQ09NTUlUOworCX0pOworCisJJG5vZGVfcHVibGlzaGVy LT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyks IGNvdW50KGQpLCBjb3VudChlKSwgY291bnQoZikgRlJPTSB0ZXN0X3RhYiIKKwkpOworCWlzKCRy ZXN1bHQsIHFxKDUwMDV8NTAwMnw0MDA1fDMwMDR8NSksCisJCSdjaGVjayBkYXRhIHdhcyBjb3Bp ZWQgdG8gc3Vic2NyaWJlciBmb3IgYm90aCBzdHJlYW1pbmcgYW5kIG5vbi1zdHJlYW1pbmcgdHJh bnNhY3Rpb25zJworCSk7CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCURFTEVURSBGUk9NIHRlc3RfdGFi IFdIRVJFIChhID4gMik7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgRFJPUCBDT0xVTU4gYywgRFJP UCBDT0xVTU4gZCwgRFJPUCBDT0xVTU4gZSwgRFJPUCBDT0xVTU4gZjsKKwl9KTsKKwkkbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworfQorCiAjIENyZWF0ZSBwdWJs aXNoZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rl ci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFt aW5nID0+ICdsb2dpY2FsJyk7CkBAIC0zNyw2ICsxNDIsMTAgQEAgJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRB QkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWInOworCisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJ T04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNB VElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9IG9uKSIKICk7CkBAIC01NCw3NiArMTYzLDI1 IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0g OTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDB8MCksICdjaGVjayBpbml0 aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMgYSBzbWFsbCAobm9uLXN0 cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCi0kbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBW QUxVRVMgKDMsIG1kNSgzOjp0ZXh0KSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1O IGMgSU5UOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg0LCBt ZDUoNDo6dGV4dCksIC00KTsKLUNPTU1JVDsKLX0pOwotCi0jIGxhcmdlIChzdHJlYW1lZCkgdHJh bnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0J J3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSwgLWkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNSwgMTAwMCkgcyhpKTsKLUFMVEVS IFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZCBJTlQ7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEwMDEsIDIwMDApIHMoaSk7Ci1DT01NSVQ7Ci19KTsKLQotIyBhIHNtYWxsIChu b24tc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwKLSRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFZBTFVFUyAoMjAwMSwgbWQ1KDIwMDE6OnRleHQpLCAtMjAwMSwgMioyMDAxKTsKLUFMVEVS IFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZSBJTlQ7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQg SU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDIwMDIsIG1kNSgyMDAyOjp0ZXh0KSwgLTIwMDIsIDIqMjAw MiwgLTMqMjAwMik7Ci1DT01NSVQ7Ci19KTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hl ciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwogCi0kbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNv dW50KGQpLCBjb3VudChlKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgyMDAyfDE5 OTl8MTAwMnwxKSwKLQknY2hlY2sgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIgaW4gc3Ry ZWFtaW5nIG1vZGUgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFt aW5nIG1vZGUgJ3BhcmFsbGVsJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9u YW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwogCi0jIEEgbGFy Z2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MLiBPbmUgb2YgdGhlIERE TCBpcyBwZXJmb3JtZWQKLSMgYWZ0ZXIgRE1MIHRvIGVuc3VyZSB0aGF0IHdlIGludmFsaWRhdGUg dGhlIHNjaGVtYSBzZW50IGZvciB0ZXN0X3RhYiBzbyB0aGF0Ci0jIHRoZSBuZXh0IHRyYW5zYWN0 aW9uIGhhcyB0byBzZW5kIHRoZSBzY2hlbWEgYWdhaW4uCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIw MDMsNTAwMCkgcyhpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZiBJTlQ7Ci1D T01NSVQ7Ci19KTsKLQotIyBBIHNtYWxsIHRyYW5zYWN0aW9uIHRoYXQgd29uJ3QgZ2V0IHN0cmVh bWVkLiBUaGlzIGlzIGp1c3QgdG8gZW5zdXJlIHRoYXQgd2UKLSMgc2VuZCB0aGUgc2NoZW1hIGFn YWluIHRvIHJlZmxlY3QgdGhlIGxhc3QgY29sdW1uIGFkZGVkIGluIHRoZSBwcmV2aW91cyB0ZXN0 LgotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwot SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSwgLTMq aSwgNCppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsNTAwNSkgcyhpKTsKLUNPTU1JVDsKLX0p OworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlND UklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsKIAotJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKyRub2RlX3B1Ymxpc2hlci0+cG9s bF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJPTSBw Z19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFO RCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyAgKQorICBvciBkaWUKKyAgIlRpbWVkIG91dCB3aGls ZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQVElP TiI7CiAKLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCksIGNvdW50KGUpLCBjb3Vu dChmKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSg1MDA1fDUwMDJ8NDAwNXwzMDA0 fDUpLAotCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBmb3IgYm90aCBzdHJl YW1pbmcgYW5kIG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rpb25zJwotKTsKK3Rlc3Rfc3RyZWFtaW5n KCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwogCiAkbm9k ZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsIGIvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsCmluZGV4IDcx NTU0NDJlNzYuLjY4ZjBlNGIwZDEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQucGwKQEAgLTgsNiArOCwxMTMgQEAgdXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2Ug VGVzdDo6TW9yZTsKIAorIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdo aWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCisjIHBhcmFtZXRlciBzbyB0aGUgc2FtZSBj b2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQKKyMgc3RyZWFtaW5n PXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1Ymxp c2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJhbGxlbCkgPSBAXzsKKwor CSMgQ2hlY2sgdGhhdCBhIGJhY2tncm91bmQgd29ya2VyIHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBw YXJhbWV0ZXIgaXMKKwkjIHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLiAgV2UgaGF2ZSB0byBsb29r IGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcworCSMgYWJvdXQgdGhhdCwgc28gdGVtcG9yYXJp bHkgYnVtcCB1cCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJ JG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9n X21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJ fQorCisJIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMLCBETUwgYW5kIFJP TExCQUNLcworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxewor CUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMyw1MDApIHMoaSk7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo NTAxLDEwMDApIHMoaSk7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwxNTAwKSBzKGkp OworCVNBVkVQT0lOVCBzMzsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDE1MDEsMjAwMCkgcyhpKTsKKwlST0xMQkFDSyBU TyBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDIwMDEsMjUwMCkgcyhpKTsKKwlST0xMQkFDSyBUTyBzMTsKKwlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDI1MDEsMzAwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczQ7CisJSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzMDAxLDM1MDAp IHMoaSk7CisJU0FWRVBPSU5UIHM1OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMzUwMSw0MDAwKSBzKGkpOworCUNPTU1J VDsKKwl9KTsKKworCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53 YWl0X2Zvcl9sb2cocXIvXFtBcHBseSBCR1cgI1xkK1xdIHN0YXJ0ZWQvLCAwKTsKKwkJJG5vZGVf c3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9t ZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKwor CSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwlteSAkcmVz dWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VM RUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEo MjAwMHwwKSwKKwkJJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9u IHN1YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkp OworCisJIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciByZWNl aXZpbmcgb3V0IG9mIG9yZGVyCisJIyBzdWJ0cmFuc2FjdGlvbiBST0xMQkFDS3MKKwkkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDQwMDEsNDUwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLDU1MDApIHMo aSk7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNjAwMSw2NTAwKSBzKGkpOworCVNBVkVQT0lO VCBzMzsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDcwMDEsNzUwMCkgcyhpKTsKKwlSRUxFQVNFIHMyOworCUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo ODAwMSw4NTAwKSBzKGkpOworCVJPTExCQUNLIFRPIHMxOworCUNPTU1JVDsKKwl9KTsKKworCSRu b2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkkcmVzdWx0ID0K KwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNv dW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMjUwMHww KSwKKwkJJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNj cmliZXInKTsKKworCSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIHN1YnNjcmli ZXIgcmVjZWl2aW5nIHJvbGxiYWNrCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdw b3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg4NTAxLDkwMDApIHMoaSk7CisJU0FWRVBP SU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoOTAwMSw5NTAwKSBzKGkpOworCVNBVkVQT0lOVCBzMjsKKwlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDk1MDEsMTAwMDApIHMoaSk7CisJUk9MTEJBQ0s7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJJHJlc3VsdCA9CisJICAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291 bnQoYykgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDI1MDB8MCksICdjaGVjayBy b2xsYmFjayB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgQ2xlYW51cCB0aGUg dGVzdCBkYXRhCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRF TEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMikiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworfQorCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQog bXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJs aXNoZXInKTsKICRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dp Y2FsJyk7CkBAIC0zNiw2ICsxNDMsMTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFi Iik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKIAkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNo ZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHVi IFdJVEggKHN0cmVhbWluZyA9IG9uKSIKICk7CkBAIC01Myw4MSArMTY0LDI1IEBAIG15ICRyZXN1 bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKIGlzKCRy ZXN1bHQsIHFxKDJ8MCksICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3Jp YmVyJyk7CiAKLSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFu ZCBST0xMQkFDS3MKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7 Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMyw1MDApIHMoaSk7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUw MSwxMDAwKSBzKGkpOwotU0FWRVBPSU5UIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLDE1MDApIHMoaSk7Ci1T QVZFUE9JTlQgczM7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDE1MDEsMjAwMCkgcyhpKTsKLVJPTExCQUNLIFRPIHMyOwot SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRl X3NlcmllcygyMDAxLDI1MDApIHMoaSk7Ci1ST0xMQkFDSyBUTyBzMTsKLUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjUwMSwz MDAwKSBzKGkpOwotU0FWRVBPSU5UIHM0OwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzMDAxLDM1MDApIHMoaSk7Ci1TQVZF UE9JTlQgczU7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDM1MDEsNDAwMCkgcyhpKTsKLUNPTU1JVDsKLX0pOwotCi0kbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwordGVzdF9zdHJlYW1pbmco JG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7CiAKLSRyZXN1 bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNU IGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgyMDAw fDApLAotCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBvbiBzdWJz Y3JpYmVyIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBt b2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitt eSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VM RUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9 ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAotIyBsYXJnZSAoc3Ry ZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciByZWNlaXZpbmcgb3V0IG9mIG9yZGVy Ci0jIHN1YnRyYW5zYWN0aW9uIFJPTExCQUNLcwotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo Ci0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg0MDAxLDQ1MDApIHMoaSk7Ci1TQVZF UE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsNTUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMjsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoNjAwMSw2NTAwKSBzKGkpOwotU0FWRVBPSU5UIHMzOwotSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg3MDAxLDc1MDApIHMo aSk7Ci1SRUxFQVNFIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0 ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg4MDAxLDg1MDApIHMoaSk7Ci1ST0xMQkFDSyBUTyBz MTsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFw cG5hbWUpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVS IFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsKIAotJHJl c3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxF Q1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDI1 MDB8MCksCi0JJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1 YnNjcmliZXInKTsKLQotIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggc3Vic2Ny aWJlciByZWNlaXZpbmcgcm9sbGJhY2sKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdw b3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoODUwMSw5MDAwKSBzKGkpOwotU0FWRVBPSU5U IHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3Nlcmllcyg5MDAxLDk1MDApIHMoaSk7Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDk1 MDEsMTAwMDApIHMoaSk7Ci1ST0xMQkFDSzsKLX0pOworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1 ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0 YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0 YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdh aXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsK IAotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3Vs dCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1Qg Y291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDI1MDB8 MCksICdjaGVjayByb2xsYmFjayB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXInKTsKK3Rlc3Rf c3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEp OwogCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9h Ym9ydC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxf YWJvcnQucGwKaW5kZXggZGJkMGZjYTRkMS4uYjI3NjA2MzcyMSAxMDA2NDQKLS0tIGEvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbAorKysgYi9z cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsCkBA IC05LDYgKzksNjkgQEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBFbmNhcHN1bGF0ZSBhbGwg dGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCisj IHBhcmFtZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVh bWluZz1vbiBhbmQKKyMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFt aW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUs ICRpc19wYXJhbGxlbCkgPSBAXzsKKworCSMgQ2hlY2sgdGhhdCBhIGJhY2tncm91bmQgd29ya2Vy IHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBwYXJhbWV0ZXIgaXMKKwkjIHNwZWNpZmllZCBhcyAicGFy YWxsZWwiLiAgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcworCSMg YWJvdXQgdGhhdCwgc28gdGVtcG9yYXJpbHkgYnVtcCB1cCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlp ZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bv c3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9k ZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0 aW9uIHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNLcworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMyw1MDApIHMoaSk7CisJ QUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBjIElOVDsKKwlTQVZFUE9JTlQgczE7CisJ SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENP TFVNTiBkIElOVDsKKwlTQVZFUE9JTlQgczI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLDE1MDAp IHMoaSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBlIElOVDsKKwlTQVZFUE9J TlQgczM7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWks IDIqaSwgLTMqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLDIwMDApIHMoaSk7CisJQUxURVIg VEFCTEUgdGVzdF90YWIgRFJPUCBDT0xVTU4gYzsKKwlST0xMQkFDSyBUTyBzMTsKKwlJTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCBpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDUwMSwxMDAwKSBzKGkpOworCUNPTU1JVDsKKwl9KTsKKworCWlmICgkaXNfcGFyYWxsZWwp CisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvXFtBcHBseSBCR1cgI1xk K1xdIHN0YXJ0ZWQvLCAwKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3Rn cmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVf c3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7CisKKwlteSAkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRl c3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMTAwMHw1MDApLAorCQknY2hlY2sgcm9sbGJhY2sg dG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlciBhbmQgZXh0cmEgY29sdW1u cyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0 YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCURFTEVU RSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMik7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgRFJP UCBDT0xVTU4gYzsKKwl9KTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFw cG5hbWUpOworfQorCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVy ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1 Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CkBAIC0zNyw2ICsx MDAsMTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRF IFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1l ID0gJ3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0 IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNV QlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNh dGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9 IG9uKSIKICk7CkBAIC01NCwzNSArMTIxLDI2IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291 bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8MCksICdj aGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMgbGFyZ2Ug KHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBST0xMQkFDS3MKLSRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo Myw1MDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGMgSU5UOwotU0FW RVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwg LWkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0 X3RhYiBBREQgQ09MVU1OIGQgSU5UOwotU0FWRVBPSU5UIHMyOwotSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSBGUk9NIGdlbmVyYXRlX3Nlcmllcygx MDAxLDE1MDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGUgSU5UOwot U0FWRVBPSU5UIHMzOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0 KSwgLWksIDIqaSwgLTMqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLDIwMDApIHMoaSk7Ci1B TFRFUiBUQUJMRSB0ZXN0X3RhYiBEUk9QIENPTFVNTiBjOwotUk9MTEJBQ0sgVE8gczE7Ci1JTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCBpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDUwMSwxMDAwKSBzKGkpOwotQ09NTUlUOwotfSk7Cit0ZXN0X3N0cmVhbWluZygkbm9k ZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKIAotJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNv dW50KGMpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDEwMDB8NTAwKSwKLQknY2hl Y2sgcm9sbGJhY2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlciBhbmQg ZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAncGFyYWxs ZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworbXkgJG9sZHBpZCA9 ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgRlJP TSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUn IEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKICk7CiAKKyRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQoc3RyZWFt aW5nID0gcGFyYWxsZWwpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgn cG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0 aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJl YW1pbmcnOyIKKyAgKQorICBvciBkaWUKKyAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBh cHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQVElPTiI7CisKK3Rlc3Rfc3Ry ZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwor CiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwogCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbCBi L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCmluZGV4IDdh Nzk3ZjM3YmEuLjBhNDE1MmQzYmUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAy Ml90d29waGFzZV9jYXNjYWRlLnBsCkBAIC0xMSw2ICsxMSwyMDggQEAgdXNlIFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6 TW9yZTsKIAorIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFy ZSByZWxhdGVkIHRvICJzdHJlYW1pbmciIHBhcmFtZXRlcgorIyBzbyB0aGUgc2FtZSBjb2RlIGNh biBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQgc3RyZWFtaW5nPXBhcmFsbGVs CisjIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX0EsICRub2RlX0Is ICRub2RlX0MsICRhcHBuYW1lX0IsICRhcHBuYW1lX0MsICRzdHJlYW1pbmdfbW9kZSkgPQorCSAg QF87CisKKwlteSAkb2xkcGlkX0IgPSAkbm9kZV9BLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jlcycs ICIKKwkJU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUgYXBwbGlj YXRpb25fbmFtZSA9ICckYXBwbmFtZV9CJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsKKwlt eSAkb2xkcGlkX0MgPSAkbm9kZV9CLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsICIKKwkJU0VM RUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUgYXBwbGljYXRpb25fbmFt ZSA9ICckYXBwbmFtZV9DJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsKKworCSMgU2V0dXAg bG9naWNhbCByZXBsaWNhdGlvbiBzdHJlYW1pbmcgbW9kZQorCisJJG5vZGVfQi0+c2FmZV9wc3Fs KAorCQkncG9zdGdyZXMnLCAiCisJCUFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViX0IKKwkJU0VU IChzdHJlYW1pbmcgPSAkc3RyZWFtaW5nX21vZGUpOyIpOworCSRub2RlX0MtPnNhZmVfcHNxbCgK KwkJJ3Bvc3RncmVzJywgIgorCQlBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9DCisJCVNFVCAo c3RyZWFtaW5nID0gJHN0cmVhbWluZ19tb2RlKSIpOworCisJIyBXYWl0IGZvciBzdWJzY3JpYmVy cyB0byBmaW5pc2ggaW5pdGlhbGl6YXRpb24KKworCSRub2RlX0EtPnBvbGxfcXVlcnlfdW50aWwo CisJCSdwb3N0Z3JlcycsICIKKwkJU0VMRUNUIHBpZCAhPSAkb2xkcGlkX0IgRlJPTSBwZ19zdGF0 X3JlcGxpY2F0aW9uCisJCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQicgQU5E IHN0YXRlID0gJ3N0cmVhbWluZyc7IgorCSkgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGlu ZyBmb3IgYXBwbHkgdG8gcmVzdGFydCI7CisJJG5vZGVfQi0+cG9sbF9xdWVyeV91bnRpbCgKKwkJ J3Bvc3RncmVzJywgIgorCQlTRUxFQ1QgcGlkICE9ICRvbGRwaWRfQyBGUk9NIHBnX3N0YXRfcmVw bGljYXRpb24KKwkJV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9DJyBBTkQgc3Rh dGUgPSAnc3RyZWFtaW5nJzsiCisJKSBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZv ciBhcHBseSB0byByZXN0YXJ0IjsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KwkjIFRlc3QgMlBDIFBSRVBBUkUgLyBDT01NSVQgUFJFUEFSRUQuCisJIyAxLiBEYXRhIGlzIHN0 cmVhbWVkIGFzIGEgMlBDIHRyYW5zYWN0aW9uLgorCSMgMi4gVGhlbiBkbyBjb21taXQgcHJlcGFy ZWQuCisJIworCSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlcihz KSBhZnRlciB0aGUgY29tbWl0LgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwor CSMgQ2hlY2sgdGhhdCBhIGJhY2tncm91bmQgd29ya2VyIHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBv cHRwYXJhbWV0ZXJpb24gaXMKKwkjIHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLiAgV2UgaGF2ZSB0 byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcworCSMgYWJvdXQgdGhhdCwgc28gdGVt cG9yYXJpbHkgYnVtcCB1cCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJHN0cmVhbWluZ19tb2Rl IGVxICdwYXJhbGxlbCcpCisJeworCQkkbm9kZV9CLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5j b25mJywgImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKwkJJG5vZGVfQi0+cmVsb2FkOwor CisJCSRub2RlX0MtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNz YWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9DLT5yZWxvYWQ7CisJfQorCisJIyBJbnNlcnQsIHVw ZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KKwkj IFRoZW4gMlBDIFBSRVBBUkUKKwkkbm9kZV9BLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7 CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBT RVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFi IFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJl ZF90YWInO30pOworCisJaWYgKCRzdHJlYW1pbmdfbW9kZSBlcSAncGFyYWxsZWwnKQorCXsKKwkJ JG5vZGVfQi0+d2FpdF9mb3JfbG9nKHFyL1xbQXBwbHkgQkdXICNcZCtcXSBzdGFydGVkLywgMCk7 CisJCSRub2RlX0ItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNz YWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfQi0+cmVsb2FkOworCisJCSRub2RlX0MtPndhaXRf Zm9yX2xvZyhxci9cW0FwcGx5IEJHVyAjXGQrXF0gc3RhcnRlZC8sIDApOworCQkkbm9kZV9DLT5h cHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5n Iik7CisJCSRub2RlX0MtPnJlbG9hZDsKKwl9CisKKwkkbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lX0IpOworCSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7CisK KwkjIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVy KHMpCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJ IlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQs IHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJl c3VsdCA9CisJICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3Vu dCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJh bnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBDJyk7CisKKwkjIDJQQyBDT01NSVQK Kwkkbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9w cmVwYXJlZF90YWInOyIpOworCisJJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9C KTsKKwkkbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOworCisJIyBjaGVjayB0 aGF0IHRyYW5zYWN0aW9uIHdhcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcihzKQorCSRyZXN1bHQg PSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291 bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgz MzM0fDMzMzR8MzMzNCksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBv biBzdWJzY3JpYmVyIEIsIGFuZCBleHRyYSBjb2x1bW5zIGhhdmUgbG9jYWwgZGVmYXVsdHMnCisJ KTsKKwkkcmVzdWx0ID0gJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1Qg Y291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMo JHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLAorCQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2 ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBDLCBhbmQgZXh0cmEgY29sdW1ucyBoYXZlIGxvY2Fs IGRlZmF1bHRzJworCSk7CisKKwkjIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBlbmRl ZCBvbiBzdWJzY3JpYmVyKHMpCisJJHJlc3VsdCA9CisJICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwor CWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmli ZXIgQicpOworCSRyZXN1bHQgPQorCSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0 LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyIEMnKTsKKwor CSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUgd2l0 aCBhIG5lc3RlZCBST0xMQkFDSyBUTyBTQVZFUE9JTlQuCisJIyAwLiBDbGVhbnVwIGZyb20gcHJl dmlvdXMgdGVzdCBsZWF2aW5nIG9ubHkgMiByb3dzLgorCSMgMS4gSW5zZXJ0IG9uZSBtb3JlIHJv dy4KKwkjIDIuIFJlY29yZCBhIFNBVkVQT0lOVC4KKwkjIDMuIERhdGEgaXMgc3RyZWFtZWQgdXNp bmcgMlBDLgorCSMgNC4gRG8gcm9sbGJhY2sgdG8gU0FWRVBPSU5UIHByaW9yIHRvIHRoZSBzdHJl YW1lZCBpbnNlcnRzLgorCSMgNS4gVGhlbiBDT01NSVQgUFJFUEFSRUQuCisJIworCSMgRXhwZWN0 IGRhdGEgYWZ0ZXIgdGhlIFNBVkVQT0lOVCBpcyBhYm9ydGVkIGxlYXZpbmcgb25seSAzIHJvd3Mg KD0gMiBvcmlnaW5hbCArIDEgZnJvbSBzdGVwIDEpLgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKworCSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAo ZGVsZXRlIHdpbGwgYmUgcmVwbGljYXRlZCkKKwkkbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCisJIyAyUEMgUFJFUEFS RSB3aXRoIGEgbmVzdGVkIFJPTExCQUNLIFRPIFNBVkVQT0lOVAorCSRub2RlX0EtPnNhZmVfcHNx bCgKKwkJJ3Bvc3RncmVzJywgIgorCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFM VUVTICg5OTk5LCAnZm9vYmFyJyk7CisJCVNBVkVQT0lOVCBzcF9pbm5lcjsKKwkJSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcygz LCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9k KGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJ CVJPTExCQUNLIFRPIFNBVkVQT0lOVCBzcF9pbm5lcjsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAn b3V0ZXInOworCQkiKTsKKworCSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7 CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKKworCSMgY2hlY2sgdGhl IHRyYW5zYWN0aW9uIHN0YXRlIHByZXBhcmVkIG9uIHN1YnNjcmliZXIocykKKwkkcmVzdWx0ID0K KwkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZS T00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlv biBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEInKTsKKwkkcmVzdWx0ID0KKwkgICRub2RlX0Mt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFy ZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJl ZCBvbiBzdWJzY3JpYmVyIEMnKTsKKworCSMgMlBDIENPTU1JVAorCSRub2RlX0EtPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiQ09NTUlUIFBSRVBBUkVEICdvdXRlcic7Iik7CisKKwkkbm9kZV9BLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOworCSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWVfQyk7CisKKwkjIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBlbmRlZCBv biBzdWJzY3JpYmVyCisJJHJlc3VsdCA9CisJICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRy ZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgZW5kZWQgb24gc3Vic2NyaWJlciBCJyk7CisJ JHJlc3VsdCA9CisJICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBj b3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAn dHJhbnNhY3Rpb24gaXMgZW5kZWQgb24gc3Vic2NyaWJlciBDJyk7CisKKwkjIGNoZWNrIGluc2Vy dHMgYXJlIHZpc2libGUgYXQgc3Vic2NyaWJlcihzKS4KKwkjIEFsbCB0aGUgc3RyZWFtZWQgZGF0 YSAocHJpb3IgdG8gdGhlIFNBVkVQT0lOVCkgc2hvdWxkIGJlIHJvbGxlZCBiYWNrLgorCSMgKDk5 OTksICdmb29iYXInKSBzaG91bGQgYmUgY29tbWl0dGVkLgorCSRyZXN1bHQgPSAkbm9kZV9CLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIHdo ZXJlIGIgPSAnZm9vYmFyJzsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ1Jvd3MgY29tbWl0dGVk IGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQicpOworCSRyZXN1bHQgPQorCSAgJG5vZGVfQi0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsK KwlpcygkcmVzdWx0LCBxcSgzKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNj cmliZXIgQicpOworCSRyZXN1bHQgPSAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJ IlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsKKwlp cygkcmVzdWx0LCBxcSgxKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmli ZXIgQycpOworCSRyZXN1bHQgPQorCSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJT RUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsKKwlpcygkcmVzdWx0LCBxcSgzKSwgJ1Jv d3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQycpOworCisJIyBDbGVhbnVw IHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBG Uk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWVfQik7CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKK30K KwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBTZXR1cCBhIGNhc2NhZGUgb2Yg cHViL3N1YiBub2Rlcy4KICMgbm9kZV9BIC0+IG5vZGVfQiAtPiBub2RlX0MKQEAgLTI2MCwxNjAg KzQ2MiwxNSBAQCBpcygkcmVzdWx0LCBxcSgyMSksICdSb3dzIGNvbW1pdHRlZCBhcmUgcHJlc2Vu dCBvbiBzdWJzY3JpYmVyIEMnKTsKICMgMlBDICsgU1RSRUFNSU5HIFRFU1RTCiAjIC0tLS0tLS0t LS0tLS0tLS0tLS0tLQogCi1teSAkb2xkcGlkX0IgPSAkbm9kZV9BLT5zYWZlX3BzcWwoCi0JJ3Bv c3RncmVzJywgIgotCVNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uCi0JV0hFUkUg YXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9CJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsi KTsKLW15ICRvbGRwaWRfQyA9ICRub2RlX0ItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAiCi0J U0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KLQlXSEVSRSBhcHBsaWNhdGlvbl9u YW1lID0gJyRhcHBuYW1lX0MnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIpOwotCi0jIFNldHVw IGxvZ2ljYWwgcmVwbGljYXRpb24gKHN0cmVhbWluZyA9IG9uKQotCi0kbm9kZV9CLT5zYWZlX3Bz cWwoCi0JJ3Bvc3RncmVzJywgIgotCUFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViX0IKLQlTRVQg KHN0cmVhbWluZyA9IG9uKTsiKTsKLSRub2RlX0MtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAi Ci0JQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWJfQwotCVNFVCAoc3RyZWFtaW5nID0gb24pIik7 Ci0KLSMgV2FpdCBmb3Igc3Vic2NyaWJlcnMgdG8gZmluaXNoIGluaXRpYWxpemF0aW9uCi0KLSRu b2RlX0EtPnBvbGxfcXVlcnlfdW50aWwoCi0JJ3Bvc3RncmVzJywgIgotCVNFTEVDVCBwaWQgIT0g JG9sZHBpZF9CIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbgotCVdIRVJFIGFwcGxpY2F0aW9uX25h bWUgPSAnJGFwcG5hbWVfQicgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgotKSBvciBkaWUgIlRp bWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IjsKLSRub2RlX0ItPnBv bGxfcXVlcnlfdW50aWwoCi0JJ3Bvc3RncmVzJywgIgotCVNFTEVDVCBwaWQgIT0gJG9sZHBpZF9D IEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbgotCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFw cG5hbWVfQycgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgotKSBvciBkaWUgIlRpbWVkIG91dCB3 aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IjsKLQotIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIwotIyBUZXN0IDJQQyBQUkVQQVJFIC8gQ09NTUlUIFBSRVBBUkVELgotIyAx LiBEYXRhIGlzIHN0cmVhbWVkIGFzIGEgMlBDIHRyYW5zYWN0aW9uLgotIyAyLiBUaGVuIGRvIGNv bW1pdCBwcmVwYXJlZC4KLSMKLSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vi c2NyaWJlcihzKSBhZnRlciB0aGUgY29tbWl0LgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwotCi0jIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVk IHRoZSA2NGtCIGxpbWl0LgotIyBUaGVuIDJQQyBQUkVQQVJFCi0kbm9kZV9BLT5zYWZlX3BzcWwo Ci0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1Qg aSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBE QVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUg RlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAn dGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lX0IpOwotJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29u JworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK3Rlc3Rfc3RyZWFtaW5nKCRub2Rl X0EsICRub2RlX0IsICRub2RlX0MsICRhcHBuYW1lX0IsICRhcHBuYW1lX0MsICdvbicpOwogCi0j IGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyKHMp Ci0kcmVzdWx0ID0KLSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291 bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJh bnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0KLSAgJG5v ZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVw YXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFy ZWQgb24gc3Vic2NyaWJlciBDJyk7Ci0KLSMgMlBDIENPTU1JVAotJG5vZGVfQS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKLQot JG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKLSRub2RlX0ItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWVfQyk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiB3YXMgY29t bWl0dGVkIG9uIHN1YnNjcmliZXIocykKLSRyZXN1bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJP TSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLAotCSdSb3dzIGlu c2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyIEIsIGFuZCBleHRyYSBj b2x1bW5zIGhhdmUgbG9jYWwgZGVmYXVsdHMnCi0pOwotJHJlc3VsdCA9ICRub2RlX0MtPnNhZmVf cHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0g OTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCi0J J1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQywgYW5k IGV4dHJhIGNvbHVtbnMgaGF2ZSBsb2NhbCBkZWZhdWx0cycKLSk7Ci0KLSMgY2hlY2sgdGhlIHRy YW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIocykKLSRyZXN1bHQgPQotICAk bm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3By ZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21t aXR0ZWQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0KLSAgJG5vZGVfQy0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsK LWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmli ZXIgQycpOwotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIFRlc3QgMlBDIFBS RVBBUkUgd2l0aCBhIG5lc3RlZCBST0xMQkFDSyBUTyBTQVZFUE9JTlQuCi0jIDAuIENsZWFudXAg ZnJvbSBwcmV2aW91cyB0ZXN0IGxlYXZpbmcgb25seSAyIHJvd3MuCi0jIDEuIEluc2VydCBvbmUg bW9yZSByb3cuCi0jIDIuIFJlY29yZCBhIFNBVkVQT0lOVC4KLSMgMy4gRGF0YSBpcyBzdHJlYW1l ZCB1c2luZyAyUEMuCi0jIDQuIERvIHJvbGxiYWNrIHRvIFNBVkVQT0lOVCBwcmlvciB0byB0aGUg c3RyZWFtZWQgaW5zZXJ0cy4KLSMgNS4gVGhlbiBDT01NSVQgUFJFUEFSRUQuCi0jCi0jIEV4cGVj dCBkYXRhIGFmdGVyIHRoZSBTQVZFUE9JTlQgaXMgYWJvcnRlZCBsZWF2aW5nIG9ubHkgMyByb3dz ICg9IDIgb3JpZ2luYWwgKyAxIGZyb20gc3RlcCAxKS4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKLQotIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzIChk ZWxldGUgd2lsbCBiZSByZXBsaWNhdGVkKQotJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKLQotIyAyUEMgUFJFUEFSRSB3 aXRoIGEgbmVzdGVkIFJPTExCQUNLIFRPIFNBVkVQT0lOVAotJG5vZGVfQS0+c2FmZV9wc3FsKAot CSdwb3N0Z3JlcycsICIKLQlCRUdJTjsKLQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5 OTksICdmb29iYXInKTsKLQlTQVZFUE9JTlQgc3BfaW5uZXI7Ci0JSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBz KGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7 Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVJPTExCQUNLIFRP IFNBVkVQT0lOVCBzcF9pbm5lcjsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICdvdXRlcic7Ci0JIik7 Ci0KLSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7Ci0kbm9kZV9CLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOwotCi0jIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0 ZSBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyKHMpCi0kcmVzdWx0ID0KLSAgJG5vZGVfQi0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsi KTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2Ny aWJlciBCJyk7Ci0kcmVzdWx0ID0KLSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJT RUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFx KDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBDJyk7Ci0KLSMgMlBD IENPTU1JVAotJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDT01NSVQgUFJFUEFSRUQg J291dGVyJzsiKTsKLQotJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKLSRu b2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7Ci0KLSMgY2hlY2sgdGhlIHRyYW5z YWN0aW9uIHN0YXRlIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPQotICAkbm9kZV9C LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVk X3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBlbmRlZCBvbiBz dWJzY3JpYmVyIEInKTsKLSRyZXN1bHQgPQotICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3Vs dCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyIEMnKTsKLQotIyBj aGVjayBpbnNlcnRzIGFyZSB2aXNpYmxlIGF0IHN1YnNjcmliZXIocykuCi0jIEFsbCB0aGUgc3Ry ZWFtZWQgZGF0YSAocHJpb3IgdG8gdGhlIFNBVkVQT0lOVCkgc2hvdWxkIGJlIHJvbGxlZCBiYWNr LgotIyAoOTk5OSwgJ2Zvb2JhcicpIHNob3VsZCBiZSBjb21taXR0ZWQuCi0kcmVzdWx0ID0gJG5v ZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3Rf dGFiIHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAnUm93cyBjb21t aXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0gJG5vZGVfQi0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsK LWlzKCRyZXN1bHQsIHFxKDMpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2Ny aWJlciBCJyk7Ci0kcmVzdWx0ID0gJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNF TEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsKLWlzKCRy ZXN1bHQsIHFxKDEpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBD Jyk7Ci0kcmVzdWx0ID0gJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291 bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsKLWlzKCRyZXN1bHQsIHFxKDMpLCAnUm93cyBjb21taXR0 ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBDJyk7CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCit0ZXN0X3N0cmVhbWluZygk bm9kZV9BLCAkbm9kZV9CLCAkbm9kZV9DLCAkYXBwbmFtZV9CLCAkYXBwbmFtZV9DLCAncGFyYWxs ZWwnKTsKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBjaGVjayBhbGwgdGhl IGNsZWFudXAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFz ZV9zdHJlYW0ucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFt LnBsCmluZGV4IGQ4NDc1ZDI1YTQuLmI4OTQxNGFiNzQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbApAQCAtOCw2ICs4LDI2NiBAQCB1c2UgUG9z dGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVz ZSBUZXN0OjpNb3JlOwogCisjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMg d2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIKKyMgcGFyYW1ldGVyIHNvIHRoZSBzYW1l IGNvZGUgY2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZAorIyBzdHJlYW1p bmc9cGFyYWxsZWwgY2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVfcHVi bGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFsbGVsKSA9IEBfOwor CisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgVGVzdCAyUEMgUFJFUEFSRSAv IENPTU1JVCBQUkVQQVJFRC4KKwkjIDEuIERhdGEgaXMgc3RyZWFtZWQgYXMgYSAyUEMgdHJhbnNh Y3Rpb24uCisJIyAyLiBUaGVuIGRvIGNvbW1pdCBwcmVwYXJlZC4KKwkjCisJIyBFeHBlY3QgYWxs IGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhlIGNvbW1pdC4K KwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkjIENoZWNrIHRoYXQgYSBiYWNr Z3JvdW5kIHdvcmtlciBzdGFydHMgaWYgInN0cmVhbWluZyIgcGFyYW1ldGVyIGlzCisJIyBzcGVj aWZpZWQgYXMgInBhcmFsbGVsIi4gIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cg bWVzc2FnZXMKKwkjIGFib3V0IHRoYXQsIHNvIHRlbXBvcmFyaWx5IGJ1bXAgdXAgdGhlIGxvZyB2 ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFw cGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1 ZzEiKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSMgY2hlY2sgdGhhdCAy UEMgZ2V0cyByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIKKwkjIEluc2VydCwgdXBkYXRlIGFuZCBk ZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcygz LCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9k KGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJ CVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCWlmICgkaXNf cGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvXFtBcHBs eSBCR1cgI1xkK1xdIHN0YXJ0ZWQvLCAwKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2Nv bmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsK KwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMg aW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgorCW15ICRyZXN1bHQgPSAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBn X3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMg cHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBjb21t aXR0ZWQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiQ09NTUlU IFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlz IGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQo ZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0 KSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIs IGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJKTsKKwkkcmVzdWx0 ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291 bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3Ry YW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisJIyBUZXN0IDJQQyBQUkVQQVJFIC8gUk9MTEJBQ0sgUFJFUEFS RUQuCisJIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBs aWNhdGVkIG9uIHN1YnNjcmliZXIuCisJIyAyLiBEYXRhIGlzIHN0cmVhbWVkIHVzaW5nIDJQQy4K KwkjIDMuIERvIHJvbGxiYWNrIHByZXBhcmVkLgorCSMKKwkjIEV4cGVjdCBkYXRhIHJvbGxzIGJh Y2sgbGVhdmluZyBvbmx5IHRoZSBvcmlnaW5hbCAyIHJvd3MuCisJIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiBy b3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCisJIyBU aGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2 NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBx eworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0 KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIg U0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3Rh YiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFy ZWRfdGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24g c3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlz KCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicp OworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCisJJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlJPTExCQUNLIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVk X3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcgor CSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNF TEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsK KwlpcygkcmVzdWx0LCBxcSgyfDJ8MiksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBhcmUgcm9s bGVkIGJhY2ssIGxlYXZpbmcgb25seSB0aGUgb3JpZ2luYWwgMiByb3dzJworCSk7CisKKwkkcmVz dWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1Qg Y291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwg J3RyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworCSMgQ2hlY2sgdGhhdCAyUEMgQ09NTUlUIFBSRVBBUkVEIGlz IGRlY29kZWQgcHJvcGVybHkgb24gY3Jhc2ggcmVzdGFydC4KKwkjIDEuIGluc2VydCwgdXBkYXRl IGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSMgMi4g VGhlbiBzZXJ2ZXIgY3Jhc2hlcyBiZWZvcmUgdGhlIDJQQyB0cmFuc2FjdGlvbiBpcyBjb21taXR0 ZWQuCisJIyAzLiBBZnRlciBzZXJ2ZXJzIGFyZSByZXN0YXJ0ZWQgdGhlIHBlbmRpbmcgdHJhbnNh Y3Rpb24gaXMgY29tbWl0dGVkLgorCSMKKwkjIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVk IG9uIHN1YnNjcmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0LgorCSMgTm90ZTogYm90aCBwdWJs aXNoZXIgYW5kIHN1YnNjcmliZXIgZG8gY3Jhc2gvcmVzdGFydC4KKwkjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3Rn cmVzJywgcXsKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKKwkJVVBEQVRFIHRl c3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwkJREVMRVRFIEZST00g dGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0 X3ByZXBhcmVkX3RhYic7fSk7CisKKwkkbm9kZV9zdWJzY3JpYmVyLT5zdG9wKCdpbW1lZGlhdGUn KTsKKwkkbm9kZV9wdWJsaXNoZXItPnN0b3AoJ2ltbWVkaWF0ZScpOworCisJJG5vZGVfcHVibGlz aGVyLT5zdGFydDsKKwkkbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKKworCSMgY29tbWl0IHBvc3Qg dGhlIHJlc3RhcnQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQki Q09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisJJG5vZGVfcHVibGlzaGVy LT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sgaW5zZXJ0cyBhcmUgdmlz aWJsZQorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90 YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCisJCSdSb3dzIGluc2VydGVk IGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29sdW1ucyBj b250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisJIyBEbyBJTlNFUlQgYWZ0ZXIgdGhlIFBSRVBBUkUgYnV0IGJlZm9yZSBST0xMQkFD SyBQUkVQQVJFRC4KKwkjIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2gg YXJlIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KKwkjIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNp bmcgMlBDLgorCSMgMy4gQSBzaW5nbGUgcm93IElOU0VSVCBpcyBkb25lIHdoaWNoIGlzIGFmdGVy IHRoZSBQUkVQQVJFLgorCSMgNC4gVGhlbiBkbyBhIFJPTExCQUNLIFBSRVBBUkVELgorCSMKKwkj IEV4cGVjdCB0aGUgMlBDIGRhdGEgcm9sbHMgYmFjayBsZWF2aW5nIG9ubHkgMyByb3dzIG9uIHRo ZSBzdWJzY3JpYmVyCisJIyAodGhlIG9yaWdpbmFsIDIgKyBpbnNlcnRlZCAxKS4KKwkjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkjIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhj ZXB0IGZvciAyIHJvd3MgKHdpbGwgYmUgcmVwbGljYXRlZCkKKwkkbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7 Iik7CisKKwkjIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBl eGNlZWQgdGhlIDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdw b3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwg bWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFU RSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBG Uk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAn dGVzdF9wcmVwYXJlZF90YWInO30pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJl 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 JywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCisJIyBUaGVuIGlu c2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxp bWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlC RUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIg PSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVS RSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFi Jzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisK KwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2Ny aWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1 bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOworCisJ IyBJbnNlcnQgYSBkaWZmZXJlbnQgcmVjb3JkIChub3cgd2UgYXJlIG91dHNpZGUgb2YgdGhlIDJQ QyB0cmFuc2FjdGlvbikKKwkjIE5vdGU6IHRoZSAyUEMgdHJhbnNhY3Rpb24gc3RpbGwgaG9sZHMg cm93IGxvY2tzIHNvIG1ha2Ugc3VyZSB0aGlzIGluc2VydCBpcyBmb3IgYSBzZXBhcmFyZSBwcmlt YXJ5IGtleQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJJTlNF UlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5LCAnZm9vYmFyJykiKTsKKworCSMgMlBDIHRy YW5zYWN0aW9uIGdldHMgY29tbWl0dGVkCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOworCisJ JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sg dGhhdCB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgq KSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0 LCBxcSgzMzM1fDMzMzV8MzMzNSksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyAoYXMgd2VsbCBh cyBvdXRzaWRlIGluc2VydCkgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJh IGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJJHJlc3VsdCA9ICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZS T00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlv biBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRh dGEKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZS T00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lKTsKK30KKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwog IyBTZXR1cAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtNDgsNiArMzA4LDEw IEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQVUJM SUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFtZSA9ICd0 YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2lu ZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwog JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAogCSdwb3N0Z3JlcycsICIKIAlDUkVBVEUgU1VC U0NSSVBUSU9OIHRhcF9zdWIKQEAgLTcwLDIzNiArMzM0LDMwIEBAIG15ICR0d29waGFzZV9xdWVy eSA9CiAkbm9kZV9zdWJzY3JpYmVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsICR0d29w aGFzZV9xdWVyeSkKICAgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3Igc3Vic2Ny aWJlciB0byBlbmFibGUgdHdvcGhhc2UiOwogCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCiAjIENoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIKLSMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIG15ICRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291 bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwyfDIpLCAnY2hl Y2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi0jIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIFRlc3QgMlBDIFBSRVBBUkUgLyBDT01NSVQgUFJFUEFS RUQuCi0jIDEuIERhdGEgaXMgc3RyZWFtZWQgYXMgYSAyUEMgdHJhbnNhY3Rpb24uCi0jIDIuIFRo ZW4gZG8gY29tbWl0IHByZXBhcmVkLgotIwotIyBFeHBlY3QgYWxsIGRhdGEgaXMgcmVwbGljYXRl ZCBvbiBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhlIGNvbW1pdC4KLSMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKLQotIyBjaGVjayB0aGF0IDJQQyBnZXRzIHJlcGxpY2F0ZWQgdG8gc3Vi c2NyaWJlcgotIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2Vl ZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jl cycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0 ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3Rh YiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90 YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFy ZWRfdGFiJzt9KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l KTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1 YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVz dWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKLQot IyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBjb21taXR0ZWQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCi0JIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIp OwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNo ZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQg PSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50 KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3Vs dCwgcXEoMzMzNHwzMzM0fDMzMzQpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1p dHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1 bHRzJwotKTsKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVz dWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyJyk7Ci0K LSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgVGVzdCAyUEMgUFJFUEFSRSAvIFJP TExCQUNLIFBSRVBBUkVELgotIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdo aWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCi0jIDIuIERhdGEgaXMgc3RyZWFtZWQg dXNpbmcgMlBDLgotIyAzLiBEbyByb2xsYmFjayBwcmVwYXJlZC4KLSMKLSMgRXhwZWN0IGRhdGEg cm9sbHMgYmFjayBsZWF2aW5nIG9ubHkgdGhlIG9yaWdpbmFsIDIgcm93cy4KLSMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBm b3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7Ci0KLSMg VGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUg NjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7 Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQg YiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hF UkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFi Jzt9KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQot IyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmli ZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQki U0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBx cSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKLQotIyAyUEMg dHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAotCSJST0xMQkFDSyBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotCi0k bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRo YXQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291 bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDJ8 MnwyKSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgYXJlIHJvbGxlZCBiYWNrLCBsZWF2aW5nIG9u bHkgdGhlIG9yaWdpbmFsIDIgcm93cycpOwotCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVk X3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9u IHN1YnNjcmliZXInKTsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDaGVj ayB0aGF0IDJQQyBDT01NSVQgUFJFUEFSRUQgaXMgZGVjb2RlZCBwcm9wZXJseSBvbiBjcmFzaCBy ZXN0YXJ0LgotIyAxLiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4 Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSMgMi4gVGhlbiBzZXJ2ZXIgY3Jhc2hlcyBiZWZvcmUgdGhl IDJQQyB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuCi0jIDMuIEFmdGVyIHNlcnZlcnMgYXJlIHJl c3RhcnRlZCB0aGUgcGVuZGluZyB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuCi0jCi0jIEV4cGVj dCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIgc2lkZSBhZnRlciB0aGUgY29t bWl0LgotIyBOb3RlOiBib3RoIHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJlciBkbyBjcmFzaC9yZXN0 YXJ0LgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0kbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkg cyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAw OwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlQUkVQQVJFIFRS QU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7Ci0KLSRub2RlX3N1YnNjcmliZXItPnN0 b3AoJ2ltbWVkaWF0ZScpOwotJG5vZGVfcHVibGlzaGVyLT5zdG9wKCdpbW1lZGlhdGUnKTsKLQot JG5vZGVfcHVibGlzaGVyLT5zdGFydDsKLSRub2RlX3N1YnNjcmliZXItPnN0YXJ0OwotCi0jIGNv bW1pdCBwb3N0IHRoZSByZXN0YXJ0Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAotCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKLSRub2RlX3B1 Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Cit0ZXN0X3N0cmVhbWluZygkbm9k ZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKIAotIyBjaGVjayBp bnNlcnRzIGFyZSB2aXNpYmxlCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkp IEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKLQknUm93 cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJh IGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJwor IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdf c3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQg c3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwogCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCi0jIERvIElOU0VSVCBhZnRlciB0aGUgUFJFUEFSRSBidXQgYmVmb3JlIFJPTExCQUNLIFBS RVBBUkVELgotIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSBy ZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCi0jIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBD LgotIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlzIGRvbmUgd2hpY2ggaXMgYWZ0ZXIgdGhlIFBS RVBBUkUuCi0jIDQuIFRoZW4gZG8gYSBST0xMQkFDSyBQUkVQQVJFRC4KLSMKLSMgRXhwZWN0IHRo ZSAyUEMgZGF0YSByb2xscyBiYWNrIGxlYXZpbmcgb25seSAzIHJvd3Mgb24gdGhlIHN1YnNjcmli ZXIKLSMgKHRoZSBvcmlnaW5hbCAyICsgaW5zZXJ0ZWQgMSkuCi0jIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCi0KLSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93 cyAod2lsbCBiZSByZXBsaWNhdGVkKQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOwotCi0jIFRoZW4gaW5z ZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGlt aXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotCUJFR0lO OwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUo YikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChh LDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7Ci0K LSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sg dGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCi0kcmVz dWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBj b3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICd0 cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMgSW5zZXJ0IGEgZGlm ZmVyZW50IHJlY29yZCAobm93IHdlIGFyZSBvdXRzaWRlIG9mIHRoZSAyUEMgdHJhbnNhY3Rpb24p Ci0jIE5vdGU6IHRoZSAyUEMgdHJhbnNhY3Rpb24gc3RpbGwgaG9sZHMgcm93IGxvY2tzIHNvIG1h a2Ugc3VyZSB0aGlzIGluc2VydCBpcyBmb3IgYSBzZXBhcmF0ZSBwcmltYXJ5IGtleQotJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiSU5TRVJUIElOVE8gdGVzdF90YWIg VkFMVUVTICg5OTk5OSwgJ2Zvb2JhcicpIik7Ci0KLSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgYWJv cnRlZAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiUk9MTEJBQ0sg UFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFi b3J0ZWQgb24gc3Vic2NyaWJlciwKLSMgYnV0IHRoZSBleHRyYSBJTlNFUlQgb3V0c2lkZSBvZiB0 aGUgMlBDIHN0aWxsIHdhcyByZXBsaWNhdGVkCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50 KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDN8M3wzKSwgJ2NoZWNr IHRoZSBvdXRzaWRlIGluc2VydCB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKLQotJHJlc3Vs dCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291 bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJh bnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKLSMgRG8gSU5TRVJUIGFmdGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZvcmUg Q09NTUlUIFBSRVBBUkVELgotIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdo aWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCi0jIDIuIERhdGEgaXMgc3RyZWFtZWQg dXNpbmcgMlBDLgotIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlzIGRvbmUgd2hpY2ggaXMgYWZ0 ZXIgdGhlIFBSRVBBUkUuCi0jIDQuIFRoZW4gZG8gYSBDT01NSVQgUFJFUEFSRUQuCi0jCi0jIEV4 cGVjdCAyUEMgZGF0YSArIHRoZSBleHRyYSByb3cgYXJlIG9uIHRoZSBzdWJzY3JpYmVyCi0jICh0 aGUgMzMzNCArIGluc2VydGVkIDEgPSAzMzM1KS4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKLQotIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxs IGJlIHJlcGxpY2F0ZWQpCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi REVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7Ci0KLSMgVGhlbiBpbnNlcnQsIHVw ZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5T RVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nl cmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVS RSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAw OwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRy YW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCop IEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0 aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKLQotIyBJbnNlcnQgYSBkaWZmZXJlbnQg cmVjb3JkIChub3cgd2UgYXJlIG91dHNpZGUgb2YgdGhlIDJQQyB0cmFuc2FjdGlvbikKLSMgTm90 ZTogdGhlIDJQQyB0cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJl IHRoaXMgaW5zZXJ0IGlzIGZvciBhIHNlcGFyYXJlIHByaW1hcnkga2V5Ci0kbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMg KDk5OTk5LCAnZm9vYmFyJykiKTsKLQotIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBjb21taXR0ZWQK LSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkNPTU1JVCBQUkVQQVJF RCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCki KTsKIAotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVy Ci0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNF TEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsK LWlzKCRyZXN1bHQsIHFxKDMzMzV8MzMzNXwzMzM1KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMg KGFzIHdlbGwgYXMgb3V0c2lkZSBpbnNlcnQpIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIs IGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCi0pOworJG5vZGVfcHVi bGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9s ZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICck YXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9yIGRpZQorICAiVGlt ZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcg U1VCU0NSSVBUSU9OIjsKIAotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsK LWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmli ZXInKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwg JGFwcG5hbWUsIDEpOwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIGNoZWNr IGFsbCB0aGUgY2xlYW51cAotLSAKMi4yMy4wLndpbmRvd3MuMQoK --_005_OS3PR01MB62755C6C9A75EB09F7218B589E839OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v15-0003-Add-some-checks-before-using-apply-background-wo.patch" Content-Description: v15-0003-Add-some-checks-before-using-apply-background-wo.patch Content-Disposition: attachment; filename="v15-0003-Add-some-checks-before-using-apply-background-wo.patch"; size=37471; creation-date="Thu, 07 Jul 2022 03:43:00 GMT"; modification-date="Thu, 07 Jul 2022 03:44:03 GMT" Content-Transfer-Encoding: base64 RnJvbSAwNjJiOWMyMTUxZGEzMGIwNGUzZTlmMjZmNmFkZGU4MmEzNDYyZjNjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB3YW5ndyA8d2FuZ3cuZm5zdEBmdWppdHN1LmNvbT4KRGF0ZTog VHVlLCAxNCBKdW4gMjAyMiAxMToyMzo1MiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjE1IDMvNF0g QWRkIHNvbWUgY2hlY2tzIGJlZm9yZSB1c2luZyBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcgogdG8g YXBwbHkgY2hhbmdlcy4KCnN0cmVhbWluZz1wYXJhbGxlbCBtb2RlIGhhcyB0d28gcmVxdWlyZW1l bnRzOgoxKSBUaGUgdW5pcXVlIGNvbHVtbiBpbiB0aGUgcmVsYXRpb24gb24gdGhlIHN1YnNjcmli ZXItc2lkZSBzaG91bGQgYWxzbyBiZSB0aGUKdW5pcXVlIGNvbHVtbiBvbiB0aGUgcHVibGlzaGVy LXNpZGU7CjIpIFRoZXJlIGNhbm5vdCBiZSBhbnkgbm9uLWltbXV0YWJsZSBmdW5jdGlvbnMgaW4g dGhlIHN1YnNjcmliZXItc2lkZQpyZXBsaWNhdGVkIHRhYmxlLiBMb29rIGZvciBmdW5jdGlvbnMg aW4gdGhlIGZvbGxvd2luZyBwbGFjZXM6CiogYS4gVHJpZ2dlciBmdW5jdGlvbnMKKiBiLiBDb2x1 bW4gZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9ucyBhbmQgZG9tYWluIGNvbnN0cmFpbnRzCiogYy4g Q29uc3RyYWludCBleHByZXNzaW9ucwoqIGQuIEZvcmVpZ24ga2V5cwotLS0KIGRvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sICAgICB8ICAgNCArCiAuLi4vcmVwbGljYXRp b24vbG9naWNhbC9hcHBseWJnd29ya2VyLmMgICAgICAgfCAgNDIgKysKIHNyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYyAgICAgICB8ICA2NiArKy0KIHNyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYyAgICB8IDE5OSArKysrKysrKysKIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgICB8ICAgMSArCiBzcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAgfCAgMjMgKy0KIHNyYy9iYWNrZW5k L3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMgICAgICAgICAgICB8ICAxNyArCiBzcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaCAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmggICAgIHwgIDE1ICsKIHNyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy90 eXBjYWNoZS5oICAgICAgICAgICAgICAgICAgfCAgIDIgKwogLi4uL3N1YnNjcmlwdGlvbi90LzAy Ml90d29waGFzZV9jYXNjYWRlLnBsICAgIHwgICA2ICsKIC4uLi9zdWJzY3JpcHRpb24vdC8wMzJf c3RyZWFtaW5nX2FwcGx5LnBsICAgICB8IDM5MSArKysrKysrKysrKysrKysrKysKIHNyYy90b29s cy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgMSArCiAxNCBmaWxlcyBj aGFuZ2VkLCA3NTkgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbWluZ19hcHBseS5wbAoKZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sIGIvZG9j L3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKaW5kZXggNzFkZDRhY2E4MS4u MjcwZTNkMzgyZSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0 aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwK QEAgLTI0MCw2ICsyNDAsMTAgQEAgQ1JFQVRFIFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+c3Vic2NyaXB0aW9uX25hbWU8L3JlcGxhY2VhYmwKICAgICAgICAgICB0 cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuIE5vdGUgdGhhdCBpZiBhbiBlcnJvciBoYXBwZW5zIHdo ZW4KICAgICAgICAgICBhcHBseWluZyBjaGFuZ2VzIGluIGEgYmFja2dyb3VuZCB3b3JrZXIsIHRo ZSBmaW5pc2ggTFNOIG9mIHRoZQogICAgICAgICAgIHJlbW90ZSB0cmFuc2FjdGlvbiBtaWdodCBu b3QgYmUgcmVwb3J0ZWQgaW4gdGhlIHNlcnZlciBsb2cuCisgICAgICAgICAgUGFyYWxsZWwgbW9k ZSBoYXMgdHdvIHJlcXVpcmVtZW50czogMSkgdGhlIHVuaXF1ZSBjb2x1bW4gaW4gdGhlCisgICAg ICAgICAgcmVsYXRpb24gb24gdGhlIHN1YnNjcmliZXItc2lkZSBzaG91bGQgYWxzbyBiZSB0aGUg dW5pcXVlIGNvbHVtbiBvbgorICAgICAgICAgIHRoZSBwdWJsaXNoZXItc2lkZTsgMikgdGhlcmUg Y2Fubm90IGJlIGFueSBub24taW1tdXRhYmxlIGZ1bmN0aW9ucworICAgICAgICAgIGluIHRoZSBz dWJzY3JpYmVyLXNpZGUgcmVwbGljYXRlZCB0YWJsZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAg ICAgPC9saXN0aXRlbT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dvcmtlci5jIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9hcHBseWJnd29ya2VyLmMKaW5kZXggZGZhNDliZTk4Yy4uOTJi NGI0ZTRlZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBs eWJnd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseWJn d29ya2VyLmMKQEAgLTc3MywzICs3NzMsNDUgQEAgYXBwbHlfYmd3b3JrZXJfc3VieGFjdF9pbmZv X2FkZChUcmFuc2FjdGlvbklkIGN1cnJlbnRfeGlkKQogCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8o b2xkY3R4KTsKIAl9CiB9CisKKy8qCisgKiBDaGVjayBpZiBjaGFuZ2VzIG9uIHRoaXMgcmVsYXRp b24gY2FuIGJlIGFwcGxpZWQgYnkgYW4gYXBwbHkgYmFja2dyb3VuZAorICogd29ya2VyLgorICoK KyAqIEFsdGhvdWdoIHRoZSBjb21taXQgb3JkZXIgaXMgbWFpbnRhaW5lZCBvbmx5IGFsbG93aW5n IG9uZSBwcm9jZXNzIHRvIGNvbW1pdAorICogYXQgYSB0aW1lLCB0aGUgYWNjZXNzIG9yZGVyIHRv IHRoZSByZWxhdGlvbiBoYXMgY2hhbmdlZC4gVGhpcyBjb3VsZCBjYXVzZQorICogdW5leHBlY3Rl ZCBwcm9ibGVtcyBpZiB0aGUgdW5pcXVlIGNvbHVtbiBvbiB0aGUgcmVwbGljYXRlZCB0YWJsZSBp cworICogaW5jb25zaXN0ZW50IHdpdGggdGhlIHB1Ymxpc2hlci1zaWRlIG9yIGNvbnRhaW5zIG5v bi1pbW11dGFibGUgZnVuY3Rpb25zCisgKiB3aGVuIGFwcGx5aW5nIHRyYW5zYWN0aW9ucyBpbiB0 aGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuCisgKi8KK3ZvaWQKK2FwcGx5X2Jnd29ya2VyX3Jl bGF0aW9uX2NoZWNrKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsKQoreworCS8qIFNraXAgY2hl Y2sgaWYgbm90IGFuIGFwcGx5IGJhY2tncm91bmQgd29ya2VyLiAqLworCWlmICghYW1fYXBwbHlf Ymd3b3JrZXIoKSkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBQYXJ0aXRpb24gdGFibGUgY2hlY2tz IGFyZSBkb25lIGxhdGVyIGluIGZ1bmN0aW9uCisJICogYXBwbHlfaGFuZGxlX3R1cGxlX3JvdXRp bmcuCisJICovCisJaWYgKHJlbC0+bG9jYWxyZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5E X1BBUlRJVElPTkVEX1RBQkxFKQorCQlyZXR1cm47CisKKwkvKgorCSAqIFJldHVybiBpZiBjaGFu Z2VzIG9uIHRoaXMgcmVsYXRpb24gY2FuIGJlIGFwcGxpZWQgYnkgYW4gYXBwbHkgYmFja2dyb3Vu ZAorCSAqIHdvcmtlci4KKwkgKi8KKwlpZiAocmVsLT5wYXJhbGxlbCA9PSBQQVJBTExFTF9TQUZF KQorCQlyZXR1cm47CisKKwkvKiBXZSBhcmUgaW4gZXJyb3IgbW9kZSBhbmQgc2hvdWxkIGdpdmUg dXNlciBjb3JyZWN0IGVycm9yLiAqLworCWVyZXBvcnQoRVJST1IsCisJCQkoZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkgZXJybXNnKCJjYW5ub3QgcmVwbGljYXRl IHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgaW4gcGFyYWxsZWwgIgorCQkJCQkibW9kZSIsIHJl bC0+cmVtb3RlcmVsLm5zcG5hbWUsIHJlbC0+cmVtb3RlcmVsLnJlbG5hbWUpLAorCQkJIGVycmRl dGFpbCgiVGhlIHVuaXF1ZSBjb2x1bW4gb24gc3Vic2NyaWJlciBpcyBub3QgdGhlIHVuaXF1ZSAi CisJCQkJCSAgICJjb2x1bW4gb24gcHVibGlzaGVyIG9yIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSAi CisJCQkJCSAgICJub24taW1tdXRhYmxlIGZ1bmN0aW9uLiIpLAorCQkJIGVycmhpbnQoIlBsZWFz ZSBjaGFuZ2UgdGhlIHN0cmVhbWluZyBvcHRpb24gdG8gJ29uJyBpbnN0ZWFkIG9mICdwYXJhbGxl bCcuIikpKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv cHJvdG8uYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwppbmRleCBh ZmZkMDhjZmE0Li4xMmE5Nzk5ZjVjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3Byb3RvLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9w cm90by5jCkBAIC0yMyw3ICsyMyw4IEBACiAvKgogICogUHJvdG9jb2wgbWVzc2FnZSBmbGFncy4K ICAqLwotI2RlZmluZSBMT0dJQ0FMUkVQX0lTX1JFUExJQ0FfSURFTlRJVFkgMQorI2RlZmluZSBB VFRSX0lTX1JFUExJQ0FfSURFTlRJVFkJKDEgPDwgMCkKKyNkZWZpbmUgQVRUUl9JU19VTklRVUUJ CQkJKDEgPDwgMSkKIAogI2RlZmluZSBNRVNTQUdFX1RSQU5TQUNUSU9OQUwgKDE8PDApCiAjZGVm aW5lIFRSVU5DQVRFX0NBU0NBREUJCSgxPDwwKQpAQCAtOTMzLDExICs5MzQsNTUgQEAgbG9naWNh bHJlcF93cml0ZV9hdHRycyhTdHJpbmdJbmZvIG91dCwgUmVsYXRpb24gcmVsLCBCaXRtYXBzZXQg KmNvbHVtbnMpCiAJVHVwbGVEZXNjCWRlc2M7CiAJaW50CQkJaTsKIAl1aW50MTYJCW5saXZlYXR0 cyA9IDA7Ci0JQml0bWFwc2V0ICAqaWRhdHRycyA9IE5VTEw7CisJQml0bWFwc2V0ICAqaWRhdHRy cyA9IE5VTEwsCisJCQkgICAqYXR0dW5pcXVlID0gTlVMTDsKIAlib29sCQlyZXBsaWRlbnRmdWxs OwogCiAJZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKIAorCWlmIChyZWwtPnJkX3JlbC0+ cmVsaGFzaW5kZXgpCisJeworCQlMaXN0CSAgICppbmRleG9pZGxpc3QgPSBSZWxhdGlvbkdldElu ZGV4TGlzdChyZWwpOworCQlMaXN0Q2VsbCAgICppbmRleG9pZHNjYW47CisKKwkJZm9yZWFjaChp bmRleG9pZHNjYW4sIGluZGV4b2lkbGlzdCkKKwkJeworCQkJT2lkCQkJaW5kZXhvaWQgPSBsZmly c3Rfb2lkKGluZGV4b2lkc2Nhbik7CisJCQlSZWxhdGlvbglpbmRleFJlbDsKKworCQkJLyogTG9v ayB1cCB0aGUgZGVzY3JpcHRpb24gZm9yIGluZGV4ICovCisJCQlpbmRleFJlbCA9IFJlbGF0aW9u SWRHZXRSZWxhdGlvbihpbmRleG9pZCk7CisKKwkJCWlmICghUmVsYXRpb25Jc1ZhbGlkKGluZGV4 UmVsKSkKKwkJCQllbG9nKEVSUk9SLCAiY291bGQgbm90IG9wZW4gcmVsYXRpb24gd2l0aCBPSUQg JXUiLCBpbmRleG9pZCk7CisKKwkJCWlmIChpbmRleFJlbC0+cmRfaW5kZXgtPmluZGlzdW5pcXVl KQorCQkJeworCQkJCWludAkJCWk7CisKKwkJCQkvKiBBZGQgcmVmZXJlbmNlZCBhdHRyaWJ1dGVz IHRvIGlkaW5kZXhhdHRycyAqLworCQkJCWZvciAoaSA9IDA7IGkgPCBpbmRleFJlbC0+cmRfaW5k ZXgtPmluZG5hdHRzOyBpKyspCisJCQkJeworCQkJCQlpbnQJCQlhdHRybnVtID0gaW5kZXhSZWwt PnJkX2luZGV4LT5pbmRrZXkudmFsdWVzW2ldOworCisJCQkJCS8qCisJCQkJCSAqIFdlIGRvbid0 IGluY2x1ZGUgbm9uLWtleSBjb2x1bW5zIGludG8gaWRpbmRleGF0dHJzCisJCQkJCSAqIGJpdG1h cHMuIFNlZSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcC4KKwkJCQkJICovCisJCQkJCWlmIChh dHRybnVtICE9IDApCisJCQkJCXsKKwkJCQkJCWlmIChpIDwgaW5kZXhSZWwtPnJkX2luZGV4LT5p bmRua2V5YXR0cyAmJgorCQkJCQkJCSFibXNfaXNfbWVtYmVyKGF0dHJudW0gLSBGaXJzdExvd0lu dmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyLCBhdHR1bmlxdWUpKQorCQkJCQkJCWF0dHVuaXF1ZSA9 IGJtc19hZGRfbWVtYmVyKGF0dHVuaXF1ZSwKKwkJCQkJCQkJCQkJCQkgICBhdHRybnVtIC0gRmly c3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7CisJCQkJCX0KKwkJCQl9CisJCQl9CisJ CQlSZWxhdGlvbkNsb3NlKGluZGV4UmVsKTsKKwkJfQorCQlsaXN0X2ZyZWUoaW5kZXhvaWRsaXN0 KTsKKwl9CisKIAkvKiBzZW5kIG51bWJlciBvZiBsaXZlIGF0dHJpYnV0ZXMgKi8KIAlmb3IgKGkg PSAwOyBpIDwgZGVzYy0+bmF0dHM7IGkrKykKIAl7CkBAIC05NzQsNyArMTAxOSwxMSBAQCBsb2dp Y2FscmVwX3dyaXRlX2F0dHJzKFN0cmluZ0luZm8gb3V0LCBSZWxhdGlvbiByZWwsIEJpdG1hcHNl dCAqY29sdW1ucykKIAkJaWYgKHJlcGxpZGVudGZ1bGwgfHwKIAkJCWJtc19pc19tZW1iZXIoYXR0 LT5hdHRudW0gLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyLAogCQkJCQkJICBp ZGF0dHJzKSkKLQkJCWZsYWdzIHw9IExPR0lDQUxSRVBfSVNfUkVQTElDQV9JREVOVElUWTsKKwkJ CWZsYWdzIHw9IEFUVFJfSVNfUkVQTElDQV9JREVOVElUWTsKKworCQlpZiAoYm1zX2lzX21lbWJl cihhdHQtPmF0dG51bSAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIsCisJCQkJ CQkgIGF0dHVuaXF1ZSkpCisJCQlmbGFncyB8PSBBVFRSX0lTX1VOSVFVRTsKIAogCQlwcV9zZW5k Ynl0ZShvdXQsIGZsYWdzKTsKIApAQCAtMTAwMSw3ICsxMDUwLDggQEAgbG9naWNhbHJlcF9yZWFk X2F0dHJzKFN0cmluZ0luZm8gaW4sIExvZ2ljYWxSZXBSZWxhdGlvbiAqcmVsKQogCWludAkJCW5h dHRzOwogCWNoYXIJICAqKmF0dG5hbWVzOwogCU9pZAkJICAgKmF0dHR5cHM7Ci0JQml0bWFwc2V0 ICAqYXR0a2V5cyA9IE5VTEw7CisJQml0bWFwc2V0ICAqYXR0a2V5cyA9IE5VTEwsCisJCQkgICAq YXR0dW5pcXVlID0gTlVMTDsKIAogCW5hdHRzID0gcHFfZ2V0bXNnaW50KGluLCAyKTsKIAlhdHRu YW1lcyA9IHBhbGxvYyhuYXR0cyAqIHNpemVvZihjaGFyICopKTsKQEAgLTEwMTIsMTEgKzEwNjIs MTQgQEAgbG9naWNhbHJlcF9yZWFkX2F0dHJzKFN0cmluZ0luZm8gaW4sIExvZ2ljYWxSZXBSZWxh dGlvbiAqcmVsKQogCXsKIAkJdWludDgJCWZsYWdzOwogCi0JCS8qIENoZWNrIGZvciByZXBsaWNh IGlkZW50aXR5IGNvbHVtbiAqLworCQkvKiBDaGVjayBmb3IgcmVwbGljYSBpZGVudGl0eSBhbmQg dW5pcXVlIGNvbHVtbiAqLwogCQlmbGFncyA9IHBxX2dldG1zZ2J5dGUoaW4pOwotCQlpZiAoZmxh Z3MgJiBMT0dJQ0FMUkVQX0lTX1JFUExJQ0FfSURFTlRJVFkpCisJCWlmIChmbGFncyAmIEFUVFJf SVNfUkVQTElDQV9JREVOVElUWSkKIAkJCWF0dGtleXMgPSBibXNfYWRkX21lbWJlcihhdHRrZXlz LCBpKTsKIAorCQlpZiAoZmxhZ3MgJiBBVFRSX0lTX1VOSVFVRSkKKwkJCWF0dHVuaXF1ZSA9IGJt c19hZGRfbWVtYmVyKGF0dHVuaXF1ZSwgaSk7CisKIAkJLyogYXR0cmlidXRlIG5hbWUgKi8KIAkJ YXR0bmFtZXNbaV0gPSBwc3RyZHVwKHBxX2dldG1zZ3N0cmluZyhpbikpOwogCkBAIC0xMDMwLDYg KzEwODMsNyBAQCBsb2dpY2FscmVwX3JlYWRfYXR0cnMoU3RyaW5nSW5mbyBpbiwgTG9naWNhbFJl cFJlbGF0aW9uICpyZWwpCiAJcmVsLT5hdHRuYW1lcyA9IGF0dG5hbWVzOwogCXJlbC0+YXR0dHlw cyA9IGF0dHR5cHM7CiAJcmVsLT5hdHRrZXlzID0gYXR0a2V5czsKKwlyZWwtPmF0dHVuaXF1ZSA9 IGF0dHVuaXF1ZTsKIAlyZWwtPm5hdHRzID0gbmF0dHM7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYwppbmRleCBlOTg5MDQ3NjgxLi4wNzJkZTE1NTdjIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMKKysr IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jCkBAIC0xOSwxMiAr MTksMTkgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy90YWJsZS5oIgogI2luY2x1ZGUgImNhdGFsb2cv bmFtZXNwYWNlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ19zdWJzY3JpcHRpb25fcmVsLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvdHJpZ2dlci5o IgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1 bmNzLmgiCisjaW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5oIgogI2luY2x1ZGUgInJlcGxp Y2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dvcmtlcl9p bnRlcm5hbC5oIgorI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZUhhbmRsZXIuaCIKICNpbmNsdWRl ICJ1dGlscy9pbnZhbC5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgorI2luY2x1ZGUg InV0aWxzL3N5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvdHlwY2FjaGUuaCIKIAogCiBzdGF0 aWMgTWVtb3J5Q29udGV4dCBMb2dpY2FsUmVwUmVsTWFwQ29udGV4dCA9IE5VTEw7CkBAIC05MSw2 ICs5OCwyNiBAQCBsb2dpY2FscmVwX3JlbG1hcF9pbnZhbGlkYXRlX2NiKERhdHVtIGFyZywgT2lk IHJlbG9pZCkKIAl9CiB9CiAKKy8qCisgKiBSZWxjYWNoZSBpbnZhbGlkYXRpb24gY2FsbGJhY2sg dG8gcmVzZXQgcGFyYWxsZWwgZmxhZy4KKyAqLworc3RhdGljIHZvaWQKK2xvZ2ljYWxyZXBfcmVs bWFwX3Jlc2V0X3BhcmFsbGVsX2NiKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNo dmFsdWUpCit7CisJSEFTSF9TRVFfU1RBVFVTIGhhc2hfc2VxOworCUxvZ2ljYWxSZXBSZWxNYXBF bnRyeSAqZW50cnk7CisKKwlpZiAoTG9naWNhbFJlcFJlbE1hcCA9PSBOVUxMKQorCQlyZXR1cm47 CisKKwloYXNoX3NlcV9pbml0KCZoYXNoX3NlcSwgTG9naWNhbFJlcFJlbE1hcCk7CisJd2hpbGUg KChlbnRyeSA9IGhhc2hfc2VxX3NlYXJjaCgmaGFzaF9zZXEpKSAhPSBOVUxMKQorCXsKKwkJZW50 cnktPnBhcmFsbGVsID0gUEFSQUxMRUxfVU5LTk9XTjsKKwkJZW50cnktPmxvY2FscmVsdmFsaWQg PSBmYWxzZTsKKwl9Cit9CisKIC8qCiAgKiBJbml0aWFsaXplIHRoZSByZWxhdGlvbiBtYXAgY2Fj aGUuCiAgKi8KQEAgLTExNiw2ICsxNDMsOSBAQCBsb2dpY2FscmVwX3JlbG1hcF9pbml0KHZvaWQp CiAJLyogV2F0Y2ggZm9yIGludmFsaWRhdGlvbiBldmVudHMuICovCiAJQ2FjaGVSZWdpc3RlclJl bGNhY2hlQ2FsbGJhY2sobG9naWNhbHJlcF9yZWxtYXBfaW52YWxpZGF0ZV9jYiwKIAkJCQkJCQkJ ICAoRGF0dW0pIDApOworCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKFBST0NPSUQsCisJ CQkJCQkJCSAgbG9naWNhbHJlcF9yZWxtYXBfcmVzZXRfcGFyYWxsZWxfY2IsCisJCQkJCQkJCSAg KERhdHVtKSAwKTsKIH0KIAogLyoKQEAgLTE0Miw2ICsxNzIsNyBAQCBsb2dpY2FscmVwX3JlbG1h cF9mcmVlX2VudHJ5KExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50cnkpCiAJCXBmcmVlKHJlbW90 ZXJlbC0+YXR0dHlwcyk7CiAJfQogCWJtc19mcmVlKHJlbW90ZXJlbC0+YXR0a2V5cyk7CisJYm1z X2ZyZWUocmVtb3RlcmVsLT5hdHR1bmlxdWUpOwogCiAJaWYgKGVudHJ5LT5hdHRybWFwKQogCQlm cmVlX2F0dHJtYXAoZW50cnktPmF0dHJtYXApOwpAQCAtMTkwLDYgKzIyMSw3IEBAIGxvZ2ljYWxy ZXBfcmVsbWFwX3VwZGF0ZShMb2dpY2FsUmVwUmVsYXRpb24gKnJlbW90ZXJlbCkKIAl9CiAJZW50 cnktPnJlbW90ZXJlbC5yZXBsaWRlbnQgPSByZW1vdGVyZWwtPnJlcGxpZGVudDsKIAllbnRyeS0+ cmVtb3RlcmVsLmF0dGtleXMgPSBibXNfY29weShyZW1vdGVyZWwtPmF0dGtleXMpOworCWVudHJ5 LT5yZW1vdGVyZWwuYXR0dW5pcXVlID0gYm1zX2NvcHkocmVtb3RlcmVsLT5hdHR1bmlxdWUpOwog CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOwogfQogCkBAIC0zMTAsNiArMzQyLDE2NiBA QCBsb2dpY2FscmVwX3JlbF9tYXJrX3VwZGF0YWJsZShMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVu dHJ5KQogCX0KIH0KIAorLyoKKyAqIENoZWNrIGlmIGNoYW5nZXMgb24gb25lIHJlbGF0aW9uIGNh biBiZSBhcHBsaWVkIGJ5IGFuIGFwcGx5IGJhY2tncm91bmQKKyAqIHdvcmtlciBhbmQgYXNzaWdu IHRoZSAncGFyYWxsZWwnIGZsYWcuCisgKgorICogVGhlcmUgYXJlIHR3byByZXF1aXJlbWVudHMg Zm9yIGFwcGx5aW5nIGNoYW5nZXMgaW4gYW4gYXBwbHkgYmFja2dyb3VuZAorICogd29ya2VyOiAx KSBUaGUgdW5pcXVlIGNvbHVtbiBpbiB0aGUgcmVsYXRpb24gb24gdGhlIHN1YnNjcmliZXItc2lk ZSBzaG91bGQKKyAqIGFsc28gYmUgdGhlIHVuaXF1ZSBjb2x1bW4gb24gdGhlIHB1Ymxpc2hlci1z aWRlOyAyKSBUaGVyZSBjYW5ub3QgYmUgYW55CisgKiBub24taW1tdXRhYmxlIGZ1bmN0aW9ucyBp biB0aGUgc3Vic2NyaWJlci1zaWRlLgorICoKKyAqIFdlIGp1c3QgbWFyayB0aGUgcmVsYXRpb24g ZW50cnkgYXMgJ1BBUkFMTEVMX1JFU1RSSUNURUQnIGhlcmUgaWYgY2hhbmdlcyBvbgorICogb25l IHJlbGF0aW9uIGNhbiBub3QgYmUgYXBwbGllZCBieSBhbiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtl ciBhbmQgbGVhdmUgaXQKKyAqIHRvIGFwcGx5X2Jnd29ya2VyX3JlbGF0aW9uX2NoZWNrKCkgdG8g dGhyb3cgdGhlIGFjdHVhbCBlcnJvciBpZiBuZWVkZWQuCisgKi8KK3N0YXRpYyB2b2lkCitsb2dp Y2FscmVwX3JlbF9tYXJrX3BhcmFsbGVsKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50cnkpCit7 CisJQml0bWFwc2V0ICAgKnVrZXk7CisJaW50CQkJaTsKKwlUdXBsZURlc2MJdHVwZGVzYzsKKwlp bnQJCQlhdHRudW07CisJTGlzdAkgICAqZmtleXMgPSBOSUw7CisKKwkvKiBGYXN0IHBhdGggaWYg d2UgbWFya2VkICdwYXJhbGxlbCcgZmxhZy4gKi8KKwlpZiAoZW50cnktPnBhcmFsbGVsICE9IFBB UkFMTEVMX1VOS05PV04pCisJCXJldHVybjsKKworCS8qIEluaXRpYWxpemUgdGhlIGZsYWcuICov CisJZW50cnktPnBhcmFsbGVsID0gUEFSQUxMRUxfU0FGRTsKKworCS8qCisJICogRmlyc3QsIHdl IGNoZWNrIGlmIHRoZSB1bmlxdWUgY29sdW1uIGluIHRoZSByZWxhdGlvbiBvbiB0aGUKKwkgKiBz dWJzY3JpYmVyLXNpZGUgaXMgYWxzbyB0aGUgdW5pcXVlIGNvbHVtbiBvbiB0aGUgcHVibGlzaGVy LXNpZGUuCisJICovCisJdWtleSA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKGVudHJ5LT5s b2NhbHJlbCwKKwkJCQkJCQkJCSAgSU5ERVhfQVRUUl9CSVRNQVBfS0VZKTsKKworCWlmICh1a2V5 KQorCXsKKwkJaSA9IC0xOworCQl3aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIodWtleSwgaSkp ID49IDApCisJCXsKKwkJCWF0dG51bSA9IEF0dHJOdW1iZXJHZXRBdHRyT2Zmc2V0KGkgKyBGaXJz dExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyKTsKKworCQkJaWYgKGVudHJ5LT5hdHRybWFw LT5hdHRudW1zW2F0dG51bV0gPCAwIHx8CisJCQkJIWJtc19pc19tZW1iZXIoZW50cnktPmF0dHJt YXAtPmF0dG51bXNbYXR0bnVtXSwgZW50cnktPnJlbW90ZXJlbC5hdHR1bmlxdWUpKQorCQkJewor CQkJCWVudHJ5LT5wYXJhbGxlbCA9IFBBUkFMTEVMX1JFU1RSSUNURUQ7CisJCQkJcmV0dXJuOwor CQkJfQorCQl9CisJfQorCisJLyoKKwkgKiBUaGVuLCBXZSBjaGVjayBpZiB0aGVyZSBpcyBhbnkg bm9uLWltbXV0YWJsZSBmdW5jdGlvbiBpbiB0aGUgbG9jYWwKKwkgKiB0YWJsZS4gTG9vayBmb3Ig ZnVuY3Rpb25zIGluIHRoZSBmb2xsb3dpbmcgcGxhY2VzOgorCSAqIGEuIHRyaWdnZXIgZnVuY3Rp b25zOworCSAqIGIuIENvbHVtbiBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb25zIGFuZCBkb21haW4g Y29uc3RyYWludHM7CisJICogYy4gQ29uc3RyYWludCBleHByZXNzaW9uczsKKwkgKiBkLiBGb3Jl aWduIGtleXMuCisJICovCisJLyogQ2hlY2sgdGhlIHRyaWdnZXIgZnVuY3Rpb25zLiAqLworCWlm IChlbnRyeS0+bG9jYWxyZWwtPnRyaWdkZXNjICE9IE5VTEwpCisJeworCQlmb3IgKGkgPSAwOyBp IDwgZW50cnktPmxvY2FscmVsLT50cmlnZGVzYy0+bnVtdHJpZ2dlcnM7IGkrKykKKwkJeworCQkJ VHJpZ2dlciAgICAqdHJpZyA9IGVudHJ5LT5sb2NhbHJlbC0+dHJpZ2Rlc2MtPnRyaWdnZXJzICsg aTsKKworCQkJaWYgKHRyaWctPnRnZW5hYmxlZCAhPSBUUklHR0VSX0ZJUkVTX0FMV0FZUyAmJgor CQkJCXRyaWctPnRnZW5hYmxlZCAhPSBUUklHR0VSX0ZJUkVTX09OX1JFUExJQ0EpCisJCQkJY29u dGludWU7CisKKwkJCWlmIChmdW5jX3ZvbGF0aWxlKHRyaWctPnRnZm9pZCkgIT0gUFJPVk9MQVRJ TEVfSU1NVVRBQkxFKQorCQkJeworCQkJCWVudHJ5LT5wYXJhbGxlbCA9IFBBUkFMTEVMX1JFU1RS SUNURUQ7CisJCQkJcmV0dXJuOworCQkJfQorCQl9CisJfQorCisJLyogQ2hlY2sgdGhlIGNvbHVt bnMuICovCisJdHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IoZW50cnktPmxvY2FscmVsKTsKKwlm b3IgKGF0dG51bSA9IDA7IGF0dG51bSA8IHR1cGRlc2MtPm5hdHRzOyBhdHRudW0rKykKKwl7CisJ CUZvcm1fcGdfYXR0cmlidXRlIGF0dCA9IFR1cGxlRGVzY0F0dHIodHVwZGVzYywgYXR0bnVtKTsK KworCQkvKiBXZSBkb24ndCBuZWVkIGluZm8gZm9yIGRyb3BwZWQgb3IgZ2VuZXJhdGVkIGF0dHJp YnV0ZXMgKi8KKwkJaWYgKGF0dC0+YXR0aXNkcm9wcGVkIHx8IGF0dC0+YXR0Z2VuZXJhdGVkKQor CQkJY29udGludWU7CisKKwkJLyoKKwkJICogV2UgZG9uJ3QgbmVlZCB0byBjaGVjayBjb2x1bW5z IHRoYXQgb25seSBleGlzdCBvbiB0aGUKKwkJICogc3Vic2NyaWJlcgorCQkgKi8KKwkJaWYgKGVu dHJ5LT5hdHRybWFwLT5hdHRudW1zW2F0dG51bV0gPCAwKQorCQkJY29udGludWU7CisKKwkJaWYg KGF0dC0+YXR0aGFzZGVmKQorCQl7CisJCQlOb2RlCSAgICpkZWZhdWx0ZXhwcjsKKworCQkJZGVm YXVsdGV4cHIgPSBidWlsZF9jb2x1bW5fZGVmYXVsdChlbnRyeS0+bG9jYWxyZWwsIGF0dG51bSAr IDEpOworCQkJaWYgKGNvbnRhaW5fbXV0YWJsZV9mdW5jdGlvbnMoZGVmYXVsdGV4cHIpKQorCQkJ eworCQkJCWVudHJ5LT5wYXJhbGxlbCA9IFBBUkFMTEVMX1JFU1RSSUNURUQ7CisJCQkJcmV0dXJu OworCQkJfQorCQl9CisKKwkJLyoKKwkJICogSWYgdGhlIGNvbHVtbiBpcyBvZiBhIERPTUFJTiB0 eXBlLCBkZXRlcm1pbmUgd2hldGhlcgorCQkgKiB0aGF0IGRvbWFpbiBoYXMgYW55IENIRUNLIGV4 cHJlc3Npb25zIHRoYXQgYXJlIG5vdAorCQkgKiBpbW11dGFibGUuCisJCSAqLworCQlpZiAoZ2V0 X3R5cHR5cGUoYXR0LT5hdHR0eXBpZCkgPT0gVFlQVFlQRV9ET01BSU4pCisJCXsKKwkJCUxpc3QJ ICAgKmRvbWFpbl9jb25zdHJhaW50czsKKwkJCUxpc3RDZWxsICAgKmxjOworCisJCQlkb21haW5f Y29uc3RyYWludHMgPSBHZXREb21haW5Db25zdHJhaW50cyhhdHQtPmF0dHR5cGlkKTsKKworCQkJ Zm9yZWFjaChsYywgZG9tYWluX2NvbnN0cmFpbnRzKQorCQkJeworCQkJCURvbWFpbkNvbnN0cmFp bnRTdGF0ZSAqY29uID0gKERvbWFpbkNvbnN0cmFpbnRTdGF0ZSAqKSBsZmlyc3QobGMpOworCisJ CQkJaWYgKGNvbi0+Y2hlY2tfZXhwciAmJiBjb250YWluX211dGFibGVfZnVuY3Rpb25zKChOb2Rl ICopIGNvbi0+Y2hlY2tfZXhwcikpCisJCQkJeworCQkJCQllbnRyeS0+cGFyYWxsZWwgPSBQQVJB TExFTF9SRVNUUklDVEVEOworCQkJCQlyZXR1cm47CisJCQkJfQorCQkJfQorCQl9CisJfQorCisJ LyogQ2hlY2sgdGhlIGNvbnN0cmFpbnRzLiAqLworCWlmICh0dXBkZXNjLT5jb25zdHIpCisJewor CQlDb25zdHJDaGVjayAqY2hlY2sgPSB0dXBkZXNjLT5jb25zdHItPmNoZWNrOworCisJCS8qCisJ CSAqIERldGVybWluZSBpZiB0aGVyZSBhcmUgYW55IENIRUNLIGNvbnN0cmFpbnRzIHdoaWNoCisJ CSAqIGNvbnRhaW5zIG5vbi1pbW11dGFibGUgZnVuY3Rpb24uCisJCSAqLworCQlmb3IgKGkgPSAw OyBpIDwgdHVwZGVzYy0+Y29uc3RyLT5udW1fY2hlY2s7IGkrKykKKwkJeworCQkJRXhwcgkgICAq Y2hlY2tfZXhwciA9IHN0cmluZ1RvTm9kZShjaGVja1tpXS5jY2Jpbik7CisKKwkJCWlmIChjb250 YWluX211dGFibGVfZnVuY3Rpb25zKChOb2RlICopIGNoZWNrX2V4cHIpKQorCQkJeworCQkJCWVu dHJ5LT5wYXJhbGxlbCA9IFBBUkFMTEVMX1JFU1RSSUNURUQ7CisJCQkJcmV0dXJuOworCQkJfQor CQl9CisJfQorCisJLyogQ2hlY2sgdGhlIGZvcmVpZ24ga2V5cy4gKi8KKwlma2V5cyA9IFJlbGF0 aW9uR2V0RktleUxpc3QoZW50cnktPmxvY2FscmVsKTsKKwlpZiAoZmtleXMpCisJCWVudHJ5LT5w YXJhbGxlbCA9IFBBUkFMTEVMX1JFU1RSSUNURUQ7Cit9CisKIC8qCiAgKiBPcGVuIHRoZSBsb2Nh bCByZWxhdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIHJlbW90ZSBvbmUuCiAgKgpAQCAtNDM4LDYg KzYzMCw5IEBAIGxvZ2ljYWxyZXBfcmVsX29wZW4oTG9naWNhbFJlcFJlbElkIHJlbW90ZWlkLCBM T0NLTU9ERSBsb2NrbW9kZSkKIAkJICovCiAJCWxvZ2ljYWxyZXBfcmVsX21hcmtfdXBkYXRhYmxl KGVudHJ5KTsKIAorCQkvKiBTZXQgaWYgY2hhbmdlcyBjb3VsZCBiZSBhcHBsaWVkIGluIHRoZSBh cHBseSBiYWNrZ3JvdW5kIHdvcmtlci4gKi8KKwkJbG9naWNhbHJlcF9yZWxfbWFya19wYXJhbGxl bChlbnRyeSk7CisKIAkJZW50cnktPmxvY2FscmVsdmFsaWQgPSB0cnVlOwogCX0KIApAQCAtNjUz LDYgKzg0OCw3IEBAIGxvZ2ljYWxyZXBfcGFydGl0aW9uX29wZW4oTG9naWNhbFJlcFJlbE1hcEVu dHJ5ICpyb290LAogCQl9CiAJCWVudHJ5LT5yZW1vdGVyZWwucmVwbGlkZW50ID0gcmVtb3RlcmVs LT5yZXBsaWRlbnQ7CiAJCWVudHJ5LT5yZW1vdGVyZWwuYXR0a2V5cyA9IGJtc19jb3B5KHJlbW90 ZXJlbC0+YXR0a2V5cyk7CisJCWVudHJ5LT5yZW1vdGVyZWwuYXR0dW5pcXVlID0gYm1zX2NvcHko cmVtb3RlcmVsLT5hdHR1bmlxdWUpOwogCX0KIAogCWVudHJ5LT5sb2NhbHJlbCA9IHBhcnRyZWw7 CkBAIC02OTYsNiArODkyLDkgQEAgbG9naWNhbHJlcF9wYXJ0aXRpb25fb3BlbihMb2dpY2FsUmVw UmVsTWFwRW50cnkgKnJvb3QsCiAJLyogU2V0IGlmIHRoZSB0YWJsZSdzIHJlcGxpY2EgaWRlbnRp dHkgaXMgZW5vdWdoIHRvIGFwcGx5IHVwZGF0ZS9kZWxldGUuICovCiAJbG9naWNhbHJlcF9yZWxf bWFya191cGRhdGFibGUoZW50cnkpOwogCisJLyogU2V0IGlmIGNoYW5nZXMgY291bGQgYmUgYXBw bGllZCBpbiB0aGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuICovCisJbG9naWNhbHJlcF9yZWxf bWFya19wYXJhbGxlbChlbnRyeSk7CisKIAllbnRyeS0+bG9jYWxyZWx2YWxpZCA9IHRydWU7CiAK IAkvKiBzdGF0ZSBhbmQgc3RhdGVsc24gYXJlIGxlZnQgc2V0IHRvIDAuICovCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwppbmRleCA4ZmZiYTdlMmU1Li4zY2Ri ZjhiNDU3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxl c3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMK QEAgLTg4NCw2ICs4ODQsNyBAQCBmZXRjaF9yZW1vdGVfdGFibGVfaW5mbyhjaGFyICpuc3BuYW1l LCBjaGFyICpyZWxuYW1lLAogCWxyZWwtPmF0dG5hbWVzID0gcGFsbG9jMChNYXhUdXBsZUF0dHJp YnV0ZU51bWJlciAqIHNpemVvZihjaGFyICopKTsKIAlscmVsLT5hdHR0eXBzID0gcGFsbG9jMChN YXhUdXBsZUF0dHJpYnV0ZU51bWJlciAqIHNpemVvZihPaWQpKTsKIAlscmVsLT5hdHRrZXlzID0g TlVMTDsKKwlscmVsLT5hdHR1bmlxdWUgPSBOVUxMOwogCiAJLyoKIAkgKiBTdG9yZSB0aGUgY29s dW1ucyBhcyBhIGxpc3Qgb2YgbmFtZXMuICBJZ25vcmUgdGhvc2UgdGhhdCBhcmUgbm90CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwppbmRleCA5ZGExMWRkNDFjLi44MWUw MDA1ZDEyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtl ci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTEz ODgsNiArMTM4OCwxNCBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0b3AoU3RyaW5nSW5mbyBzKQog CXsKIAkJY2hhciBhY3Rpb24gPSBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX1NUT1A7CiAKKwkJLyoK KwkJICogVW5saWtlIHN0cmVhbV9jb21taXQsIHdlIGRvbid0IG5lZWQgdG8gd2FpdCBoZXJlIGZv ciBzdHJlYW1fc3RvcCB0bworCQkgKiBmaW5pc2guIEFsbG93aW5nIHRoZSBvdGhlciB0cmFuc2Fj dGlvbiB0byBiZSBhcHBsaWVkIGJlZm9yZQorCQkgKiBzdHJlYW1fc3RvcCBpcyBmaW5pc2hlZCBj YW4gbGVhZCB0byBmYWlsdXJlcyBpZiB0aGUgdW5pcXVlCisJCSAqIGluZGV4L2NvbnN0cmFpbnQg aXMgZGlmZmVyZW50IGJldHdlZW4gcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyLiBCdXQKKwkJICog Zm9yIHN1Y2ggY2FzZXMsIHdlIGRvbid0IGFsbG93IHN0cmVhbWVkIHRyYW5zYWN0aW9ucyB0byBi ZSBhcHBsaWVkCisJCSAqIGluIHBhcmFsbGVsLiBTZWUgYXBwbHlfYmd3b3JrZXJfcmVsYXRpb25f Y2hlY2suCisJCSAqLwogCQlhcHBseV9iZ3dvcmtlcl9zZW5kX2RhdGEoc3RyZWFtX2FwcGx5X3dv cmtlciwgMSwgJmFjdGlvbik7CiAKIAkJZWxvZyhERUJVRzEsICJzdG9wcGVkIHN0cmVhbWluZyBv ZiB4aWQgJXUsICV1IGNoYW5nZXMgc3RyZWFtZWQiLCBzdHJlYW1feGlkLCBuY2hhbmdlcyk7CkBA IC0yMDQwLDYgKzIwNDgsOCBAQCBhcHBseV9oYW5kbGVfaW5zZXJ0KFN0cmluZ0luZm8gcykKIAkv KiBTZXQgcmVsYXRpb24gZm9yIGVycm9yIGNhbGxiYWNrICovCiAJYXBwbHlfZXJyb3JfY2FsbGJh Y2tfYXJnLnJlbCA9IHJlbDsKIAorCWFwcGx5X2Jnd29ya2VyX3JlbGF0aW9uX2NoZWNrKHJlbCk7 CisKIAkvKiBJbml0aWFsaXplIHRoZSBleGVjdXRvciBzdGF0ZS4gKi8KIAllZGF0YSA9IGNyZWF0 ZV9lZGF0YV9mb3JfcmVsYXRpb24ocmVsKTsKIAllc3RhdGUgPSBlZGF0YS0+ZXN0YXRlOwpAQCAt MjE4Myw2ICsyMTkzLDggQEAgYXBwbHlfaGFuZGxlX3VwZGF0ZShTdHJpbmdJbmZvIHMpCiAJLyog Q2hlY2sgaWYgd2UgY2FuIGRvIHRoZSB1cGRhdGUuICovCiAJY2hlY2tfcmVsYXRpb25fdXBkYXRh YmxlKHJlbCk7CiAKKwlhcHBseV9iZ3dvcmtlcl9yZWxhdGlvbl9jaGVjayhyZWwpOworCiAJLyog SW5pdGlhbGl6ZSB0aGUgZXhlY3V0b3Igc3RhdGUuICovCiAJZWRhdGEgPSBjcmVhdGVfZWRhdGFf Zm9yX3JlbGF0aW9uKHJlbCk7CiAJZXN0YXRlID0gZWRhdGEtPmVzdGF0ZTsKQEAgLTIzNTEsNiAr MjM2Myw4IEBAIGFwcGx5X2hhbmRsZV9kZWxldGUoU3RyaW5nSW5mbyBzKQogCS8qIENoZWNrIGlm IHdlIGNhbiBkbyB0aGUgZGVsZXRlLiAqLwogCWNoZWNrX3JlbGF0aW9uX3VwZGF0YWJsZShyZWwp OwogCisJYXBwbHlfYmd3b3JrZXJfcmVsYXRpb25fY2hlY2socmVsKTsKKwogCS8qIEluaXRpYWxp emUgdGhlIGV4ZWN1dG9yIHN0YXRlLiAqLwogCWVkYXRhID0gY3JlYXRlX2VkYXRhX2Zvcl9yZWxh dGlvbihyZWwpOwogCWVzdGF0ZSA9IGVkYXRhLT5lc3RhdGU7CkBAIC0yNTM2LDEzICsyNTUwLDE0 IEBAIGFwcGx5X2hhbmRsZV90dXBsZV9yb3V0aW5nKEFwcGx5RXhlY3V0aW9uRGF0YSAqZWRhdGEs CiAJfQogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOwogCisJcGFydF9lbnRyeSA9IGxv Z2ljYWxyZXBfcGFydGl0aW9uX29wZW4ocmVsbWFwZW50cnksIHBhcnRyZWwsCisJCQkJCQkJCQkJ ICAgYXR0cm1hcCk7CisKIAkvKiBDaGVjayBpZiB3ZSBjYW4gZG8gdGhlIHVwZGF0ZSBvciBkZWxl dGUgb24gdGhlIGxlYWYgcGFydGl0aW9uLiAqLwogCWlmIChvcGVyYXRpb24gPT0gQ01EX1VQREFU RSB8fCBvcGVyYXRpb24gPT0gQ01EX0RFTEVURSkKLQl7Ci0JCXBhcnRfZW50cnkgPSBsb2dpY2Fs cmVwX3BhcnRpdGlvbl9vcGVuKHJlbG1hcGVudHJ5LCBwYXJ0cmVsLAotCQkJCQkJCQkJCQkgICBh dHRybWFwKTsKIAkJY2hlY2tfcmVsYXRpb25fdXBkYXRhYmxlKHBhcnRfZW50cnkpOwotCX0KKwor CWFwcGx5X2Jnd29ya2VyX3JlbGF0aW9uX2NoZWNrKHBhcnRfZW50cnkpOwogCiAJc3dpdGNoIChv cGVyYXRpb24pCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2Fj aGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMKaW5kZXggODA4ZjllYmQw ZC4uYjI0ODg5OWQ4MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2Fj aGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jCkBAIC0yNTQwLDYg KzI1NDAsMjMgQEAgY29tcGFyZV92YWx1ZXNfb2ZfZW51bShUeXBlQ2FjaGVFbnRyeSAqdGNhY2hl LCBPaWQgYXJnMSwgT2lkIGFyZzIpCiAJCXJldHVybiAwOwogfQogCisvKgorICogR2V0RG9tYWlu Q29uc3RyYWludHMgLS0tIGdldCBEb21haW5Db25zdHJhaW50U3RhdGUgbGlzdCBvZiBzcGVjaWZp ZWQgZG9tYWluIHR5cGUKKyAqLworTGlzdCAqCitHZXREb21haW5Db25zdHJhaW50cyhPaWQgdHlw ZV9pZCkKK3sKKwlUeXBlQ2FjaGVFbnRyeSAqdHlwZW50cnk7CisJTGlzdAkJICAgKmNvbnN0cmFp bnRzID0gTklMOworCisJdHlwZW50cnkgPSBsb29rdXBfdHlwZV9jYWNoZSh0eXBlX2lkLCBUWVBF Q0FDSEVfRE9NQUlOX0NPTlNUUl9JTkZPKTsKKworCWlmKHR5cGVudHJ5LT5kb21haW5EYXRhICE9 IE5VTEwpCisJCWNvbnN0cmFpbnRzID0gdHlwZW50cnktPmRvbWFpbkRhdGEtPmNvbnN0cmFpbnRz OworCisJcmV0dXJuIGNvbnN0cmFpbnRzOworfQorCiAvKgogICogTG9hZCAob3IgcmUtbG9hZCkg dGhlIGVudW1EYXRhIG1lbWJlciBvZiB0aGUgdHlwY2FjaGUgZW50cnkuCiAgKi8KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oIGIvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKaW5kZXggMGY3NGEzMzkyYi4uMTMwYzRlYjgyZiAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKKysrIGIv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKQEAgLTExMyw2ICsxMTMsNyBA QCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwUmVsYXRpb24KIAljaGFyCQlyZXBsaWRlbnQ7CQkv KiByZXBsaWNhIGlkZW50aXR5ICovCiAJY2hhcgkJcmVsa2luZDsJCS8qIHJlbW90ZSByZWxhdGlv biBraW5kICovCiAJQml0bWFwc2V0ICAqYXR0a2V5czsJCS8qIEJpdG1hcCBvZiBrZXkgY29sdW1u cyAqLworCUJpdG1hcHNldCAgKmF0dHVuaXF1ZTsJCS8qIEJpdG1hcCBvZiB1bmlxdWUgY29sdW1u cyAqLwogfSBMb2dpY2FsUmVwUmVsYXRpb247CiAKIC8qIFR5cGUgbWFwcGluZyBpbmZvICovCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaCBiL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oCmluZGV4IDc4Y2Q3ZTc3ZjUu LjAxNTU0NWNkOGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxy ZWxhdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5o CkBAIC0xNSw2ICsxNSwxOSBAQAogI2luY2x1ZGUgImFjY2Vzcy9hdHRtYXAuaCIKICNpbmNsdWRl ICJyZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaCIKIAorLyoKKyAqCVN0YXRlcyB0byBkZXRlcm1p bmUgaWYgY2hhbmdlcyBvbiBvbmUgcmVsYXRpb24gY2FuIGJlIGFwcGxpZWQgYnkgYW4gYXBwbHkK KyAqCWJhY2tncm91bmQgd29ya2VyLgorICovCit0eXBlZGVmIGVudW0gUmVsUGFyYWxsZWwKK3sK KwlQQVJBTExFTF9VTktOT1dOID0gMCwJLyogdW5rbm93biAgKi8KKwlQQVJBTExFTF9TQUZFLAkJ CS8qIENhbiBhcHBseSBjaGFuZ2VzIGluIGFuIGFwcGx5IGJhY2tncm91bmQKKwkJCQkJCQkgICB3 b3JrZXIgKi8KKwlQQVJBTExFTF9SRVNUUklDVEVECQkvKiBDYW4gbm90IGFwcGx5IGNoYW5nZXMg aW4gYW4gYXBwbHkgYmFja2dyb3VuZAorCQkJCQkJCSAgIHdvcmtlciAqLworfSBSZWxQYXJhbGxl bDsKKwogdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFJlbE1hcEVudHJ5CiB7CiAJTG9naWNhbFJl cFJlbGF0aW9uIHJlbW90ZXJlbDsJLyoga2V5IGlzIHJlbW90ZXJlbC5yZW1vdGVpZCAqLwpAQCAt MzEsNiArNDQsOCBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwUmVsTWFwRW50cnkKIAlSZWxh dGlvbglsb2NhbHJlbDsJCS8qIHJlbGNhY2hlIGVudHJ5IChOVUxMIHdoZW4gY2xvc2VkKSAqLwog CUF0dHJNYXAgICAgKmF0dHJtYXA7CQkvKiBtYXAgb2YgbG9jYWwgYXR0cmlidXRlcyB0byByZW1v dGUgb25lcyAqLwogCWJvb2wJCXVwZGF0YWJsZTsJCS8qIENhbiBhcHBseSB1cGRhdGVzL2RlbGV0 ZXM/ICovCisJUmVsUGFyYWxsZWwJcGFyYWxsZWw7CQkvKiBDYW4gYXBwbHkgY2hhbmdlcyBpbiBh biBhcHBseQorCQkJCQkJCQkgICBiYWNrZ3JvdW5kIHdvcmtlcj8gKi8KIAogCS8qIFN5bmMgc3Rh dGUuICovCiAJY2hhcgkJc3RhdGU7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi93b3JrZXJfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRl cm5hbC5oCmluZGV4IDViZThmNTc1NWUuLmIyOGY0YWI5NzcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCkBAIC0xOTQsNiArMTk0LDcgQEAgZXh0ZXJuIHZvaWQg YXBwbHlfYmd3b3JrZXJfZnJlZShBcHBseUJnd29ya2VyU3RhdGUgKndzdGF0ZSk7CiBleHRlcm4g dm9pZCBhcHBseV9iZ3dvcmtlcl9jaGVja19zdGF0dXModm9pZCk7CiBleHRlcm4gdm9pZCBhcHBs eV9iZ3dvcmtlcl9zZXRfc3RhdHVzKEFwcGx5Qmd3b3JrZXJTdGF0dXMgc3RhdHVzKTsKIGV4dGVy biB2b2lkIGFwcGx5X2Jnd29ya2VyX3N1YnhhY3RfaW5mb19hZGQoVHJhbnNhY3Rpb25JZCBjdXJy ZW50X3hpZCk7CitleHRlcm4gdm9pZCBhcHBseV9iZ3dvcmtlcl9yZWxhdGlvbl9jaGVjayhMb2dp Y2FsUmVwUmVsTWFwRW50cnkgKnJlbCk7CiAKIHN0YXRpYyBpbmxpbmUgYm9vbAogYW1fdGFibGVz eW5jX3dvcmtlcih2b2lkKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvdHlwY2FjaGUu aCBiL3NyYy9pbmNsdWRlL3V0aWxzL3R5cGNhY2hlLmgKaW5kZXggNDMxYWQ3ZjFiMy4uZWQ3YzJl N2Y0OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvdHlwY2FjaGUuaAorKysgYi9zcmMv aW5jbHVkZS91dGlscy90eXBjYWNoZS5oCkBAIC0xOTksNiArMTk5LDggQEAgZXh0ZXJuIHVpbnQ2 NCBhc3NpZ25fcmVjb3JkX3R5cGVfaWRlbnRpZmllcihPaWQgdHlwZV9pZCwgaW50MzIgdHlwbW9k KTsKIAogZXh0ZXJuIGludAljb21wYXJlX3ZhbHVlc19vZl9lbnVtKFR5cGVDYWNoZUVudHJ5ICp0 Y2FjaGUsIE9pZCBhcmcxLCBPaWQgYXJnMik7CiAKK2V4dGVybiBMaXN0ICpHZXREb21haW5Db25z dHJhaW50cyhPaWQgdHlwZV9pZCk7CisKIGV4dGVybiBzaXplX3QgU2hhcmVkUmVjb3JkVHlwbW9k UmVnaXN0cnlFc3RpbWF0ZSh2b2lkKTsKIAogZXh0ZXJuIHZvaWQgU2hhcmVkUmVjb3JkVHlwbW9k UmVnaXN0cnlJbml0KFNoYXJlZFJlY29yZFR5cG1vZFJlZ2lzdHJ5ICosCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbCBiL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCmluZGV4IDBhNDE1MmQzYmUu LjMwYTAxZjczMDUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29w aGFzZV9jYXNjYWRlLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFz ZV9jYXNjYWRlLnBsCkBAIC0zOSw2ICszOSwxMiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAkJQUxU RVIgU1VCU0NSSVBUSU9OIHRhcF9zdWJfQwogCQlTRVQgKHN0cmVhbWluZyA9ICRzdHJlYW1pbmdf bW9kZSkiKTsKIAorCWlmICgkc3RyZWFtaW5nX21vZGUgZXEgJ3BhcmFsbGVsJykKKwl7CisJCSRu b2RlX0MtPnNhZmVfcHNxbCgKKwkJCSdwb3N0Z3JlcycsICJBTFRFUiBUQUJMRSB0ZXN0X3RhYiBB TFRFUiBjIERST1AgREVGQVVMVCIpOworCX0KKwogCSMgV2FpdCBmb3Igc3Vic2NyaWJlcnMgdG8g ZmluaXNoIGluaXRpYWxpemF0aW9uCiAKIAkkbm9kZV9BLT5wb2xsX3F1ZXJ5X3VudGlsKApkaWZm IC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbWluZ19hcHBseS5wbCBi L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1pbmdfYXBwbHkucGwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZWNhNDMyODY3NgotLS0gL2Rldi9udWxsCisr KyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1pbmdfYXBwbHkucGwKQEAgLTAs MCArMSwzOTEgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDIyLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZl bG9wbWVudCBHcm91cAorCisjIFRlc3QgdGhlIHJlc3RyaWN0aW9ucyBvZiBzdHJlYW1pbmcgbW9k ZSAicGFyYWxsZWwiIGluIGxvZ2ljYWwgcmVwbGljYXRpb24KKwordXNlIHN0cmljdDsKK3VzZSB3 YXJuaW5nczsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6 OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKK215ICRvZmZzZXQgPSAwOworCisjIENy ZWF0ZSBwdWJsaXNoZXIgbm9kZQorbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVz dDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKKyRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxv d3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7Ciskbm9kZV9wdWJsaXNoZXItPmFwcGVuZF9jb25m KCdwb3N0Z3Jlc3FsLmNvbmYnLAorCSdsb2dpY2FsX2RlY29kaW5nX3dvcmtfbWVtID0gNjRrQicp OworJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKKworIyBDcmVhdGUgc3Vic2NyaWJlciBub2RlCitt eSAkbm9kZV9zdWJzY3JpYmVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdWJz Y3JpYmVyJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5pbml0OworJG5vZGVfc3Vic2NyaWJlci0+c3Rh cnQ7CisKKyMgU2V0dXAgc3RydWN0dXJlIG9uIHB1Ymxpc2hlcgorJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiIChhIGludCBwcmlt YXJ5IGtleSwgYiB2YXJjaGFyKSIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbmVkIChhIGludCBwcmltYXJ5 IGtleSwgYiB2YXJjaGFyKSIpOworCisjIFNldHVwIHN0cnVjdHVyZSBvbiBzdWJzY3JpYmVyCisj IFdlIG5lZWQgdG8gdGVzdCBub3JtYWwgdGFibGUgYW5kIHBhcnRpdGlvbiB0YWJsZS4KKyRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgdGVzdF90 YWIgKGEgaW50IHByaW1hcnkga2V5LCBiIHZhcmNoYXIpIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbmVk IChhIGludCBwcmltYXJ5IGtleSwgYiB2YXJjaGFyKSBQQVJUSVRJT04gQlkgUkFOR0UoYSkiKTsK KyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUg dGVzdF90YWJfcGFydGl0aW9uIChMSUtFIHRlc3RfdGFiX3BhcnRpdGlvbmVkKSIpOworJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFi X3BhcnRpdGlvbmVkIEFUVEFDSCBQQVJUSVRJT04gdGVzdF90YWJfcGFydGl0aW9uIERFRkFVTFQi CispOworCisjIFNldHVwIGxvZ2ljYWwgcmVwbGljYXRpb24KK215ICRwdWJsaXNoZXJfY29ubnN0 ciA9ICRub2RlX3B1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3RncmVzJzsKKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBQVUJMSUNBVElPTiB0 YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydGl0aW9uZWQgRk9S IFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbmVkIik7CisKK215ICRhcHBuYW1lID0gJ3RhcF9zdWIn OworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsICIKKwlDUkVBVEUg U1VCU0NSSVBUSU9OIHRhcF9zdWIKKwlDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBw bGljYXRpb25fbmFtZT0kYXBwbmFtZScKKwlQVUJMSUNBVElPTiB0YXBfcHViLCB0YXBfcHViX3Bh cnRpdGlvbmVkCisJV0lUSCAoc3RyZWFtaW5nID0gcGFyYWxsZWwsIGNvcHlfZGF0YSA9IGZhbHNl KSIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisj IEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQgdGhlIHVuaXF1ZSBpbmRleCBvbiB0aGUgcHVibGlzaGVy IGFuZCB0aGUgc3Vic2NyaWJlcgorIyBpcyBkaWZmZXJlbnQuIENoZWNrIHRoZSBlcnJvciByZXBv cnRlZCBieSBiYWNrZ3JvdW5kIHdvcmtlciBpbiB0aGlzIGNhc2UuCisjIEZpcnN0IHdlIGNoZWNr IHRoZSB1bmlxdWUgaW5kZXggb24gbm9ybWFsIHRhYmxlLgorJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBVTklRVUUgSU5ERVggdGVzdF90YWJfYl9pZHgg T04gdGVzdF90YWIgKGIpIik7CisKKyMgQ2hlY2sgdGhhdCBhIGJhY2tncm91bmQgd29ya2VyIHN0 YXJ0cyBpZiAic3RyZWFtaW5nIiBvcHRpb24gaXMgc3BlY2lmaWVkIGFzCisjICJwYXJhbGxlbCIu ICBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0IHRoYXQs IHNvCisjIHRlbXBvcmFyaWx5IGJ1bXAgdXAgdGhlIGxvZyB2ZXJib3NpdHkuCiskbm9kZV9zdWJz Y3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMg PSBkZWJ1ZzEiKTsKKyRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKworJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpIgorKTsKKwor JG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyL1xbQXBwbHkgQkdXICNcZCtcXSBzdGFy dGVkLywgMCk7Ciskbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25m JywKKwkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKyRub2RlX3N1YnNjcmliZXItPnJl bG9hZDsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9SOiAoIFtB LVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3Rf dGFiIiBpbiBwYXJhbGxlbCBtb2RlLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIHRoZSB1bmlxdWUg aW5kZXggb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBJTkRFWCB0ZXN0X3RhYl9iX2lkeCIpOworCisk bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCitteSAkcmVzdWx0 ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291 bnQoKikgRlJPTSB0ZXN0X3RhYiIpOworaXMoJHJlc3VsdCwgcXEoNTAwMCksICdkYXRhIHJlcGxp Y2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBpbmRleCcpOworCisjIFRoZW4gd2Ug Y2hlY2sgdGhlIHVuaXF1ZSBpbmRleCBvbiBwYXJ0aXRpb24gdGFibGUuCiskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFVOSVFVRSBJTkRFWCB0ZXN0X3Rh Yl9iX3BhcnRpdGlvbl9pZHggT04gdGVzdF90YWJfcGFydGl0aW9uIChiKSIpOworCisjIENoZWNr IHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJz Y3JpYmVyLT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYl9wYXJ0aXRpb25lZCBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSkiCispOworCiskbm9kZV9zdWJz Y3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCBy ZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJfcGFydGl0aW9uZWQiIGlu IHBhcmFsbGVsIG1vZGUvLAorCSRvZmZzZXQpOworCisjIERyb3AgdGhlIHVuaXF1ZSBpbmRleCBv biB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJEUk9QIElOREVYIHRlc3RfdGFiX2JfcGFydGl0aW9uX2lkeCIpOwor Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVzdWx0 ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291 bnQoKikgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOworaXMoJHJlc3VsdCwgcXEoNTAwMCks ICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBpbmRleCcpOwor CisjIFRyaWdnZXJzIHdoaWNoIGV4ZWN1dGUgbm9uLWltbXV0YWJsZSBmdW5jdGlvbiBhcmUgbm90 IGFsbG93ZWQgb24gdGhlCisjIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9y dGVkIGJ5IGJhY2tncm91bmQgd29ya2VyIGluIHRoaXMgY2FzZS4KKyMgRmlyc3Qgd2UgY2hlY2sg dGhlIHRyaWdnZXIgZnVuY3Rpb24gb24gbm9ybWFsIHRhYmxlLgorJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQ1JFQVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVu YygpIFJFVFVSTlMgVFJJR0dFUiBBUyBcJFwkCisgIEJFR0lOCisgICAgUkVUVVJOIE5VTEw7Cisg IEVORAorXCRcJCBsYW5ndWFnZSBwbHBnc3FsOworQ1JFQVRFIFRSSUdHRVIgaW5zZXJ0X3RyaWcK K0JFRk9SRSBJTlNFUlQgT04gdGVzdF90YWIKK0ZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVS RSB0cmlnZ2VyX2Z1bmMoKTsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiIEVOQUJMRSBSRVBMSUNBIFRS SUdHRVIgaW5zZXJ0X3RyaWc7Cit9KTsKKworIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJv bSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFi Iik7CisKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9FUlJPUjogKCBbQS1a MC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3Rh YiIgaW4gcGFyYWxsZWwgbW9kZS8sCisJJG9mZnNldCk7CisKKyMgRHJvcCB0aGUgdHJpZ2dlciBv biB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIkRST1AgVFJJR0dFUiBpbnNlcnRfdHJpZyBPTiB0ZXN0X3RhYiIp OworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVz dWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qg Y291bnQoKikgRlJPTSB0ZXN0X3RhYiIpOworaXMoJHJlc3VsdCwgcXEoMCksICdkYXRhIHJlcGxp Y2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyB0cmlnZ2VyJyk7CisKKyMgVGhlbiB3 ZSBjaGVjayB0aGUgdHJpZ2dlciBmdW5jdGlvbiBvbiBwYXJ0aXRpb24gdGFibGUuCiskbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitDUkVBVEUgVFJJR0dFUiBp bnNlcnRfdHJpZworQkVGT1JFIElOU0VSVCBPTiB0ZXN0X3RhYl9wYXJ0aXRpb24KK0ZPUiBFQUNI IFJPVyBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmMoKTsKK0FMVEVSIFRBQkxFIHRlc3Rf dGFiX3BhcnRpdGlvbiBFTkFCTEUgUkVQTElDQSBUUklHR0VSIGluc2VydF90cmlnOworfSk7CisK KyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRu b2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOworCiskbm9kZV9z dWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5v dCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJfcGFydGl0aW9uZWQi IGluIHBhcmFsbGVsIG1vZGUvLAorCSRvZmZzZXQpOworCisjIERyb3AgdGhlIHRyaWdnZXIgb24g dGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJEUk9QIFRSSUdHRVIgaW5zZXJ0X3RyaWcgT04gdGVzdF90YWJfcGFy dGl0aW9uIik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7 CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3BhcnRpdGlvbmVkIik7CitpcygkcmVzdWx0 LCBxcSgwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIHRy aWdnZXInKTsKKworIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGNvbHVtbiBkZWZhdWx0IHZhbHVl IGV4cHJlc3Npb24gY29udGFpbnMgYQorIyBub24taW1tdXRhYmxlIGZ1bmN0aW9uIG9uIHRoZSBz dWJzY3JpYmVyIHNpZGUuIENoZWNrIHRoZSBlcnJvciByZXBvcnRlZCBieQorIyBiYWNrZ3JvdW5k IHdvcmtlciBpbiB0aGlzIGNhc2UuCisjIEZpcnN0IHdlIGNoZWNrIHRoZSBjb2x1bW4gZGVmYXVs dCB2YWx1ZSBleHByZXNzaW9uIG9uIG5vcm1hbCB0YWJsZS4KKyRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBTFRFUiBDT0xVTU4g YiBTRVQgREVGQVVMVCByYW5kb20oKSIpOworCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBm cm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDAp IHMoaSkiCispOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6 ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMu dGVzdF90YWIiIGluIHBhcmFsbGVsIG1vZGUvLAorCSRvZmZzZXQpOworCisjIERyb3AgZGVmYXVs dCB2YWx1ZSBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiIEFMVEVSIENP TFVNTiBiIERST1AgREVGQVVMVCIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYiIpOworaXMoJHJlc3Vs dCwgcXEoNTAwMCksCisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3Bw aW5nIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbicpOworCisjIFRoZW4gd2UgY2hlY2sgdGhlIGNv bHVtbiBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24gb24gcGFydGl0aW9uIHRhYmxlLgorJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFi X3BhcnRpdGlvbiBBTFRFUiBDT0xVTU4gYiBTRVQgREVGQVVMVCByYW5kb20oKSIpOworCisjIENo ZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9z dWJzY3JpYmVyLT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYl9wYXJ0aXRpb25lZCBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSkiCispOworCiskbm9kZV9z dWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5v dCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJfcGFydGl0aW9uZWQi IGluIHBhcmFsbGVsIG1vZGUvLAorCSRvZmZzZXQpOworCisjIERyb3AgZGVmYXVsdCB2YWx1ZSBv biB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBBTFRFUiBD T0xVTU4gYiBEUk9QIERFRkFVTFQiKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfcGFydGl0aW9uZWQi KTsKK2lzKCRyZXN1bHQsIHFxKDUwMDApLAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJl ciBhZnRlciBkcm9wcGluZyBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24nKTsKKworIyBJdCBpcyBu b3QgYWxsb3dlZCB0aGF0IGRvbWFpbiBjb25zdHJhaW50IGV4cHJlc3Npb24gY29udGFpbnMgYSBu b24taW1tdXRhYmxlCisjIGZ1bmN0aW9uIG9uIHRoZSBzdWJzY3JpYmVyIHNpZGUuIENoZWNrIHRo ZSBlcnJvciByZXBvcnRlZCBieSBiYWNrZ3JvdW5kCisjIHdvcmtlciBpbiB0aGlzIGNhc2UuCisj IEJlY2F1c2UgdGhlIGNvbHVtbiB0eXBlIG9mIHRoZSBwYXJ0aXRpb24gdGFibGUgbXVzdCBiZSB0 aGUgc2FtZSBhcyBpdHMgcGFyZW50CisjIHRhYmxlLCBvbmx5IHRlc3Qgbm9ybWFsIHRhYmxlIGhl cmUuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitDUkVB VEUgRE9NQUlOIHRlc3RfZG9tYWluIEFTIGludCBDSEVDSyhWQUxVRSA+IHJhbmRvbSgpKTsKK0FM VEVSIFRBQkxFIHRlc3RfdGFiIEFMVEVSIENPTFVNTiBhIFRZUEUgdGVzdF9kb21haW47Cit9KTsK KworIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMg JG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIik7CisKKyRub2RlX3N1YnNjcmliZXIt PndhaXRfZm9yX2xvZygKKwlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0 ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYiIgaW4gcGFyYWxsZWwgbW9kZS8sCisJ JG9mZnNldCk7CisKKyMgRHJvcCBkb21haW4gY29uc3RyYWludCBleHByZXNzaW9uIG9uIHRoZSBz dWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWIgQUxURVIgQ09MVU1OIGEgVFlQRSBpbnQi KTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJl c3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNU IGNvdW50KCopIEZST00gdGVzdF90YWIiKTsKK2lzKCRyZXN1bHQsIHFxKDApLAorCSdkYXRhIHJl cGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBkb21haW4gY29uc3RyYWludCBl eHByZXNzaW9uJworKTsKKworIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGNvbnN0cmFpbnQgZXhw cmVzc2lvbiBjb250YWlucyBhIG5vbi1pbW11dGFibGUgZnVuY3Rpb24KKyMgb24gdGhlIHN1YnNj cmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5IGJhY2tncm91bmQgd29ya2Vy IGluIHRoaXMKKyMgY2FzZS4KKyMgRmlyc3Qgd2UgY2hlY2sgdGhlIGNvbnN0cmFpbnQgZXhwcmVz c2lvbiBvbiBub3JtYWwgdGFibGUuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bv c3RncmVzJywgcXF7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09OU1RSQUlOVCB0ZXN0X3Rh Yl9jb24gY2hlY2sgKGEgPiByYW5kb20oKSk7Cit9KTsKKworIyBDaGVjayB0aGUgc3Vic2NyaWJl ciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmls ZTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcygx LCA1MDAwKSBzKGkpIgorKTsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFy L0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAi cHVibGljLnRlc3RfdGFiIiBpbiBwYXJhbGxlbCBtb2RlLywKKwkkb2Zmc2V0KTsKKworIyBEcm9w IGNvbnN0cmFpbnQgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYiBEUk9Q IENPTlNUUkFJTlQgdGVzdF90YWJfY29uIik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIik7Citpcygk cmVzdWx0LCBxcSg1MDAwKSwKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIg ZHJvcHBpbmcgY29uc3RyYWludCBleHByZXNzaW9uJyk7CisKKyMgVGhlbiB3ZSBjaGVjayB0aGUg Y29uc3RyYWludCBleHByZXNzaW9uIG9uIHBhcnRpdGlvbiB0YWJsZS4KKyRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiX3Bh cnRpdGlvbiBBREQgQ09OU1RSQUlOVCB0ZXN0X3RhYl9jb24gY2hlY2sgKGEgPiByYW5kb20oKSk7 Cit9KTsKKworIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0 ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiX3BhcnRpdGlvbmVkIik7CisK KyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9FUlJPUjogKCBbQS1aMC05XSs6 KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYl9wYXJ0 aXRpb25lZCIgaW4gcGFyYWxsZWwgbW9kZS8sCisJJG9mZnNldCk7CisKKyMgRHJvcCBjb25zdHJh aW50IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIERS T1AgQ09OU1RSQUlOVCB0ZXN0X3RhYl9jb24iKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfcGFydGl0 aW9uZWQiKTsKK2lzKCRyZXN1bHQsIHFxKDApLAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2Ny aWJlciBhZnRlciBkcm9wcGluZyBjb25zdHJhaW50IGV4cHJlc3Npb24nKTsKKworIyBJdCBpcyBu b3QgYWxsb3dlZCB0aGF0IGZvcmVpZ24ga2V5IG9uIHRoZSBzdWJzY3JpYmVyIHNpZGUuIENoZWNr IHRoZSBlcnJvcgorIyByZXBvcnRlZCBieSBiYWNrZ3JvdW5kIHdvcmtlciBpbiB0aGlzIGNhc2Uu CisjIEZpcnN0IHdlIGNoZWNrIHRoZSBmb3JlaWduIGtleSBvbiBub3JtYWwgdGFibGUuCiskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIi KTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ciskbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitDUkVBVEUgVEFCTEUgdGVz dF90YWJfZiAoYSBpbnQgcHJpbWFyeSBrZXkpOworQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENP TlNUUkFJTlQgdGVzdF90YWJmayBGT1JFSUdOIEtFWShhKSBSRUZFUkVOQ0VTIHRlc3RfdGFiX2Yo YSk7Cit9KTsKKworIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zm c2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpIgorKTsKKworJG5v ZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBj YW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiIiBpbiBwYXJh bGxlbCBtb2RlLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIHRoZSBmb3JlaWduIGtleSBjb25zdHJh aW50IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWIgRFJPUCBDT05TVFJB SU5UIHRlc3RfdGFiZmsiKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIiKTsKK2lzKCRyZXN1bHQsIHFx KDUwMDApLAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyB0 aGUgZm9yZWlnbiBrZXknKTsKKworIyBUaGVuIHdlIGNoZWNrIHRoZSBmb3JlaWduIGtleSBvbiBw YXJ0aXRpb24gdGFibGUuCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQ1JF QVRFIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbl9mIChhIGludCBwcmltYXJ5IGtleSk7CitBTFRF UiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gQUREIENPTlNUUkFJTlQgdGVzdF90YWJfcGF0aXRp b25fZmsgRk9SRUlHTiBLRVkoYSkgUkVGRVJFTkNFUyB0ZXN0X3RhYl9wYXJ0aXRpb25fZihhKTsK K30pOworCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQg PSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYl9wYXJ0aXRpb25lZCBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSkiCisp OworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAt OV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJf cGFydGl0aW9uZWQiIGluIHBhcmFsbGVsIG1vZGUvLAorCSRvZmZzZXQpOworCisjIERyb3AgdGhl IGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4K KyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0 ZXN0X3RhYl9wYXJ0aXRpb24gRFJPUCBDT05TVFJBSU5UIHRlc3RfdGFiX3BhdGl0aW9uX2ZrIik7 CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1 bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBj b3VudCgqKSBGUk9NIHRlc3RfdGFiX3BhcnRpdGlvbmVkIik7CitpcygkcmVzdWx0LCBxcSg1MDAw KSwKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgdGhlIGZv cmVpZ24ga2V5Jyk7CisKKyRub2RlX3N1YnNjcmliZXItPnN0b3A7Ciskbm9kZV9wdWJsaXNoZXIt PnN0b3A7CisKK2RvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA0 MTM3ZGM3N2I0Li5hZTdjZDk5MTU5IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMjI3 MSw2ICsyMjcxLDcgQEAgUmVsTWFwRmlsZQogUmVsTWFwcGluZwogUmVsT3B0SW5mbwogUmVsT3B0 S2luZAorUmVsUGFyYWxsZWwKIFJlbFRvQ2hlY2sKIFJlbFRvQ2x1c3RlcgogUmVsYWJlbFR5cGUK LS0gCjIuMjMuMC53aW5kb3dzLjEKCg== --_005_OS3PR01MB62755C6C9A75EB09F7218B589E839OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v15-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch" Content-Description: v15-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch Content-Disposition: attachment; filename="v15-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch"; size=27198; creation-date="Thu, 07 Jul 2022 03:43:00 GMT"; modification-date="Thu, 07 Jul 2022 03:44:04 GMT" Content-Transfer-Encoding: base64 RnJvbSAyNWQ5MzZkMTE5MGM0YmE2ZWM0YzZjYWNiNzJlOTZiNzNmODVjNTk4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB3YW5ndyA8d2FuZ3cuZm5zdEBmdWppdHN1LmNvbT4KRGF0ZTog V2VkLCAxNSBKdW4gMjAyMiAxMTowMjowOCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjE1IDQvNF0g UmV0cnkgdG8gYXBwbHkgc3RyZWFtaW5nIHhhY3Qgb25seSBpbiBhcHBseSB3b3JrZXIKCklmIHRo ZSB1c2VyIHNldHMgdGhlIHN1YnNjcmlwdGlvbl9wYXJhbWV0ZXIgInN0cmVhbWluZyIgdG8gInBh cmFsbGVsIiwgd2hlbgphcHBseWluZyBhIHN0cmVhbWluZyB0cmFuc2FjdGlvbiwgd2Ugd2lsbCB0 cnkgdG8gYXBwbHkgdGhpcyB0cmFuc2FjdGlvbiBpbgphcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4g SG93ZXZlciwgd2hlbiB0aGUgY2hhbmdlcyBpbiB0aGlzIHRyYW5zYWN0aW9uIGNhbm5vdApiZSBh cHBsaWVkIGluIGFwcGx5IGJhY2tncm91bmQgd29ya2VyLCB0aGUgYmFja2dyb3VuZCB3b3JrZXIg d2lsbCBleGl0IHdpdGggYW4KZXJyb3IuIEluIHRoaXMgY2FzZSwgd2UgY2FuIHJldHJ5IGFwcGx5 aW5nIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIGluICJvbiIKbW9kZS4gSW4gdGhpcyB3YXks IHdlIG1heSBhdm9pZCBibG9ja2luZyBsb2dpY2FsIHJlcGxpY2F0aW9uIGhlcmUuCgpTbyB3ZSBp bnRyb2R1Y2UgZmllbGQgInN1YnJldHJ5IiBpbiBjYXRhbG9nICJwZ19zdWJzY3JpcHRpb24iLiBX aGVuIHRoZQpzdWJzY3JpYmVyIGV4aXQgd2l0aCBhbiBlcnJvciwgd2Ugd2lsbCB0cnkgdG8gc2V0 IHRoaXMgZmxhZyB0byB0cnVlLCBhbmQgd2hlbgp0aGUgdHJhbnNhY3Rpb24gaXMgYXBwbGllZCBz dWNjZXNzZnVsbHksIHdlIHdpbGwgdHJ5IHRvIHNldCB0aGlzIGZsYWcgdG8gZmFsc2UuCgpUaGVu IHdoZW4gd2UgdHJ5IHRvIGFwcGx5IGEgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIGluIGFwcGx5IGJh Y2tncm91bmQgd29ya2VyLAp3ZSBjYW4gc2VlIGlmIHRoaXMgdHJhbnNhY3Rpb24gaGFzIGZhaWxl ZCBiZWZvcmUgYmFzZWQgb24gdGhlICJzdWJyZXRyeSIgZmllbGQuCi0tLQogZG9jL3NyYy9zZ21s L2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgICAgIHwgICA5ICsKIGRvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sICAgICB8ICAgNSArCiBzcmMvYmFja2VuZC9jYXRh bG9nL3BnX3N1YnNjcmlwdGlvbi5jICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY2F0YWxv Zy9zeXN0ZW1fdmlld3Muc3FsICAgICAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC9jb21tYW5k cy9zdWJzY3JpcHRpb25jbWRzLmMgICAgICAgfCAgIDEgKwogLi4uL3JlcGxpY2F0aW9uL2xvZ2lj YWwvYXBwbHliZ3dvcmtlci5jICAgICAgIHwgIDE1ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3dvcmtlci5jICAgICAgfCAgODkgKysrKysrKysrKwogc3JjL2Jpbi9wZ19kdW1w L3BnX2R1bXAuYyAgICAgICAgICAgICAgICAgICAgIHwgICA1ICstCiBzcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3N1YnNjcmlwdGlvbi5oICAgICAgICAgfCAgIDQgKwogLi4uL3N1YnNjcmlwdGlvbi90 LzAzMl9zdHJlYW1pbmdfYXBwbHkucGwgICAgIHwgMTU0ICsrKysrKysrKysrLS0tLS0tLQogMTAg ZmlsZXMgY2hhbmdlZCwgMjIxIGluc2VydGlvbnMoKyksIDY2IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dz LnNnbWwKaW5kZXggODE1Y2FlNjA4Mi4uMjhmM2QxMjFkOSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTc5 MDcsNiArNzkwNywxNSBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9u IGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogICAgICAgPC9wYXJhPjwv ZW50cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0 YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAg IDxzdHJ1Y3RmaWVsZD5zdWJyZXRyeTwvc3RydWN0ZmllbGQ+IDx0eXBlPmJvb2w8L3R5cGU+Cisg ICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUcnVlIGlmIHRoZSBwcmV2aW91cyBh cHBseSBjaGFuZ2UgZmFpbGVkIGFuZCBhIHJldHJ5IHdhcyByZXF1aXJlZC4KKyAgICAgIDwvcGFy YT48L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9 ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KICAg ICAgICA8c3RydWN0ZmllbGQ+c3ViY29ubmluZm88L3N0cnVjdGZpZWxkPiA8dHlwZT50ZXh0PC90 eXBlPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNn bWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAppbmRleCAyNzBl M2QzODJlLi5iZDUzNjE5OTFlIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9z dWJzY3JpcHRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRp b24uc2dtbApAQCAtMjQ0LDYgKzI0NCwxMSBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdWJzY3JpcHRpb25fbmFtZTwvcmVwbGFjZWFibAogICAg ICAgICAgIHJlbGF0aW9uIG9uIHRoZSBzdWJzY3JpYmVyLXNpZGUgc2hvdWxkIGFsc28gYmUgdGhl IHVuaXF1ZSBjb2x1bW4gb24KICAgICAgICAgICB0aGUgcHVibGlzaGVyLXNpZGU7IDIpIHRoZXJl IGNhbm5vdCBiZSBhbnkgbm9uLWltbXV0YWJsZSBmdW5jdGlvbnMKICAgICAgICAgICBpbiB0aGUg c3Vic2NyaWJlci1zaWRlIHJlcGxpY2F0ZWQgdGFibGUuCisgICAgICAgICAgV2hlbiBhcHBseWlu ZyBhIHN0cmVhbWluZyB0cmFuc2FjdGlvbiwgaWYgZWl0aGVyIHJlcXVpcmVtZW50IGlzIG5vdAor ICAgICAgICAgIG1ldCwgdGhlIGJhY2tncm91bmQgd29ya2VyIHdpbGwgZXhpdCB3aXRoIGFuIGVy cm9yLgorICAgICAgICAgIDxsaXRlcmFsPnBhcmFsbGVsPC9saXRlcmFsPiBtb2RlIGlzIGRpc3Jl Z2FyZGVkIHdoZW4gcmV0cnlpbmc7CisgICAgICAgICAgaW5zdGVhZCB0aGUgdHJhbnNhY3Rpb24g d2lsbCBiZSBhcHBsaWVkIHVzaW5nIDxsaXRlcmFsPm9uPC9saXRlcmFsPgorICAgICAgICAgIG1v ZGUuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92YXJs aXN0ZW50cnk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlv bi5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYwppbmRleCA4ODU2Y2Uz YjUwLi45YjdmMDk2NTNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNj cmlwdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMKQEAg LTcxLDYgKzcxLDcgQEAgR2V0U3Vic2NyaXB0aW9uKE9pZCBzdWJpZCwgYm9vbCBtaXNzaW5nX29r KQogCXN1Yi0+c3RyZWFtID0gc3ViZm9ybS0+c3Vic3RyZWFtOwogCXN1Yi0+dHdvcGhhc2VzdGF0 ZSA9IHN1YmZvcm0tPnN1YnR3b3BoYXNlc3RhdGU7CiAJc3ViLT5kaXNhYmxlb25lcnIgPSBzdWJm b3JtLT5zdWJkaXNhYmxlb25lcnI7CisJc3ViLT5yZXRyeSA9IHN1YmZvcm0tPnN1YnJldHJ5Owog CiAJLyogR2V0IGNvbm5pbmZvICovCiAJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoU1VCU0NSSVBU SU9OT0lELApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3Fs IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IGZlZGFlZDUzM2Iu LjEwZjRkZDY3ODUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdz LnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTEyOTgs OCArMTI5OCw4IEBAIFJFVk9LRSBBTEwgT04gcGdfcmVwbGljYXRpb25fb3JpZ2luX3N0YXR1cyBG Uk9NIHB1YmxpYzsKIC0tIEFsbCBjb2x1bW5zIG9mIHBnX3N1YnNjcmlwdGlvbiBleGNlcHQgc3Vi Y29ubmluZm8gYXJlIHB1YmxpY2x5IHJlYWRhYmxlLgogUkVWT0tFIEFMTCBPTiBwZ19zdWJzY3Jp cHRpb24gRlJPTSBwdWJsaWM7CiBHUkFOVCBTRUxFQ1QgKG9pZCwgc3ViZGJpZCwgc3Vic2tpcGxz biwgc3VibmFtZSwgc3Vib3duZXIsIHN1YmVuYWJsZWQsCi0gICAgICAgICAgICAgIHN1YmJpbmFy eSwgc3Vic3RyZWFtLCBzdWJ0d29waGFzZXN0YXRlLCBzdWJkaXNhYmxlb25lcnIsIHN1YnNsb3Ru YW1lLAotICAgICAgICAgICAgICBzdWJzeW5jY29tbWl0LCBzdWJwdWJsaWNhdGlvbnMpCisgICAg ICAgICAgICAgIHN1YmJpbmFyeSwgc3Vic3RyZWFtLCBzdWJ0d29waGFzZXN0YXRlLCBzdWJkaXNh Ymxlb25lcnIsCisgICAgICAgICAgICAgIHN1YnJldHJ5LCBzdWJzbG90bmFtZSwgc3Vic3luY2Nv bW1pdCwgc3VicHVibGljYXRpb25zKQogICAgIE9OIHBnX3N1YnNjcmlwdGlvbiBUTyBwdWJsaWM7 CiAKIENSRUFURSBWSUVXIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3N0YXRzIEFTCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKaW5kZXggNWYzNDkwNjdjYy4uMzNhZWYzMWIzMCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtNjYyLDYgKzY2Miw3 IEBAIENyZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNjcmlw dGlvblN0bXQgKnN0bXQsCiAJCQkJCSBMT0dJQ0FMUkVQX1RXT1BIQVNFX1NUQVRFX1BFTkRJTkcg OgogCQkJCQkgTE9HSUNBTFJFUF9UV09QSEFTRV9TVEFURV9ESVNBQkxFRCk7CiAJdmFsdWVzW0Fu dW1fcGdfc3Vic2NyaXB0aW9uX3N1YmRpc2FibGVvbmVyciAtIDFdID0gQm9vbEdldERhdHVtKG9w dHMuZGlzYWJsZW9uZXJyKTsKKwl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3VicmV0cnkg LSAxXSA9IEJvb2xHZXREYXR1bShmYWxzZSk7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9u X3N1YmNvbm5pbmZvIC0gMV0gPQogCQlDU3RyaW5nR2V0VGV4dERhdHVtKGNvbm5pbmZvKTsKIAlp ZiAob3B0cy5zbG90X25hbWUpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2FwcGx5Ymd3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv YXBwbHliZ3dvcmtlci5jCmluZGV4IDkyYjRiNGU0ZWQuLjliY2M4NjY5ZmIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dvcmtlci5jCisrKyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dvcmtlci5jCkBAIC0xMDYsNiAr MTA2LDE4IEBAIGFwcGx5X2Jnd29ya2VyX2Nhbl9zdGFydChUcmFuc2FjdGlvbklkIHhpZCkKIAlp ZiAoIVhMb2dSZWNQdHJJc0ludmFsaWQoTXlTdWJzY3JpcHRpb24tPnNraXBsc24pKQogCQlyZXR1 cm4gZmFsc2U7CiAKKwkvKgorCSAqIERvbid0IHVzZSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcnMg Zm9yIHJldHJpZXMsIGJlY2F1c2UgaXQgaXMgcG9zc2libGUKKwkgKiB0aGF0IHRoZSBsYXN0IHRp bWUgd2UgdHJpZWQgdG8gYXBwbHkgYSB0cmFuc2FjdGlvbiB1c2luZyBhbiBhcHBseQorCSAqIGJh Y2tncm91bmQgd29ya2VyIHRoZSBjaGVja3MgZmFpbGVkIChzZWUgZnVuY3Rpb24KKwkgKiBhcHBs eV9iZ3dvcmtlcl9yZWxhdGlvbl9jaGVjaykuCisJICovCisJaWYgKE15U3Vic2NyaXB0aW9uLT5y ZXRyeSkKKwl7CisJCWVsb2coREVCVUcxLCAiYXBwbHkgYmFja2dyb3VuZCB3b3JrZXJzIGFyZSBu b3QgdXNlZCBmb3IgcmV0cmllcyIpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCiAJLyoKIAkgKiBG b3Igc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyB0aGF0IGFyZSBiZWluZyBhcHBsaWVkIGluIGFwcGx5 IGJhY2tncm91bmQKIAkgKiB3b3JrZXIsIHdlIGNhbm5vdCBkZWNpZGUgd2hldGhlciB0byBhcHBs eSB0aGUgY2hhbmdlIGZvciBhIHJlbGF0aW9uCkBAIC04MTIsNiArODI0LDUgQEAgYXBwbHlfYmd3 b3JrZXJfcmVsYXRpb25fY2hlY2soTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWwpCiAJCQkJCSJt b2RlIiwgcmVsLT5yZW1vdGVyZWwubnNwbmFtZSwgcmVsLT5yZW1vdGVyZWwucmVsbmFtZSksCiAJ CQkgZXJyZGV0YWlsKCJUaGUgdW5pcXVlIGNvbHVtbiBvbiBzdWJzY3JpYmVyIGlzIG5vdCB0aGUg dW5pcXVlICIKIAkJCQkJICAgImNvbHVtbiBvbiBwdWJsaXNoZXIgb3IgdGhlcmUgaXMgYXQgbGVh c3Qgb25lICIKLQkJCQkJICAgIm5vbi1pbW11dGFibGUgZnVuY3Rpb24uIiksCi0JCQkgZXJyaGlu dCgiUGxlYXNlIGNoYW5nZSB0aGUgc3RyZWFtaW5nIG9wdGlvbiB0byAnb24nIGluc3RlYWQgb2Yg J3BhcmFsbGVsJy4iKSkpOworCQkJCQkgICAibm9uLWltbXV0YWJsZSBmdW5jdGlvbi4iKSkpOwog fQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggODFlMDAwNWQx Mi4uYTRhYTZkZTUzMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5j CkBAIC0zNzgsNiArMzc4LDggQEAgc3RhdGljIHZvaWQgY2xlYXJfc3Vic2NyaXB0aW9uX3NraXBf bHNuKFhMb2dSZWNQdHIgZmluaXNoX2xzbik7CiBzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2FwcGx5 X2Vycm9yX2NvbnRleHRfeGFjdChUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pOwog c3RhdGljIGlubGluZSB2b2lkIHJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbyh2b2lkKTsK IAorc3RhdGljIHZvaWQgc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShib29sIHJldHJ5KTsKKwogLyoK ICAqIFNob3VsZCB0aGlzIHdvcmtlciBhcHBseSBjaGFuZ2VzIGZvciBnaXZlbiByZWxhdGlvbi4K ICAqCkBAIC05MDQsNiArOTA2LDkgQEAgYXBwbHlfaGFuZGxlX2NvbW1pdChTdHJpbmdJbmZvIHMp CiAKIAlhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7CiAKKwkvKiBS ZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsK KwogCS8qIENoZWNrIHRoZSBzdGF0dXMgb2YgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgaWYgYW55 LiAqLwogCWFwcGx5X2Jnd29ya2VyX2NoZWNrX3N0YXR1cygpOwogCkBAIC0xMDE1LDYgKzEwMjAs OSBAQCBhcHBseV9oYW5kbGVfcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAKIAlpbl9yZW1vdGVfdHJh bnNhY3Rpb24gPSBmYWxzZTsKIAorCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCXNldF9z dWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOworCiAJLyogQ2hlY2sgdGhlIHN0YXR1cyBvZiBhcHBs eSBiYWNrZ3JvdW5kIHdvcmtlciBpZiBhbnkuICovCiAJYXBwbHlfYmd3b3JrZXJfY2hlY2tfc3Rh dHVzKCk7CiAKQEAgLTEwNjgsNiArMTA3Niw5IEBAIGFwcGx5X2hhbmRsZV9jb21taXRfcHJlcGFy ZWQoU3RyaW5nSW5mbyBzKQogCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRf bHNuKTsKIAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIAorCS8qIFJlc2V0IHRoZSBy ZXRyeSBmbGFnLiAqLworCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOworCiAJLyogUHJv Y2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4g Ki8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKIApAQCAt MTEyMyw2ICsxMTM0LDkgQEAgYXBwbHlfaGFuZGxlX3JvbGxiYWNrX3ByZXBhcmVkKFN0cmluZ0lu Zm8gcykKIAlzdG9yZV9mbHVzaF9wb3NpdGlvbihyb2xsYmFja19kYXRhLnJvbGxiYWNrX2VuZF9s c24pOwogCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogCisJLyogUmVzZXQgdGhlIHJl dHJ5IGZsYWcuICovCisJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CisKIAkvKiBQcm9j ZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAq LwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMocm9sbGJhY2tfZGF0YS5yb2xsYmFja19lbmRfbHNu KTsKIApAQCAtMTIxNSw2ICsxMjI5LDkgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVwYXJlKFN0 cmluZ0luZm8gcykKIAkJCS8qIFVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5n ZXMgYW5kIHN1YnhhY3QgaW5mby4gKi8KIAkJCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNh bFJlcFdvcmtlci0+c3ViaWQsIHByZXBhcmVfZGF0YS54aWQpOwogCQl9CisKKwkJLyogUmVzZXQg dGhlIHJldHJ5IGZsYWcuICovCisJCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOwogCX0K IAogCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwpAQCAtMTY0Miw2ICsxNjU5LDkgQEAg YXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCiAJCQkgKi8KIAkJCXNlcmlh bGl6ZV9zdHJlYW1fYWJvcnQoeGlkLCBzdWJ4aWQpOwogCQl9CisKKwkJLyogUmVzZXQgdGhlIHJl dHJ5IGZsYWcuICovCisJCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOwogCX0KIAogCXJl c2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOwpAQCAtMTg1NCw2ICsxODc0LDkgQEAgYXBw bHlfaGFuZGxlX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBzKQogCQkJLyogVW5saW5rIHRoZSBm aWxlcyB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcyBhbmQgc3VieGFjdCBpbmZvLiAqLwogCQkJc3Ry ZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkKTsKIAkJfQor CisJCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCQlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5 KGZhbHNlKTsKIAl9CiAKIAkvKiBDaGVjayB0aGUgc3RhdHVzIG9mIGFwcGx5IGJhY2tncm91bmQg d29ya2VyIGlmIGFueS4gKi8KQEAgLTM4OTcsNiArMzkyMCw5IEBAIHN0YXJ0X3RhYmxlX3N5bmMo WExvZ1JlY1B0ciAqb3JpZ2luX3N0YXJ0cG9zLCBjaGFyICoqbXlzbG90bmFtZSkKIAl9CiAJUEdf Q0FUQ0goKTsKIAl7CisJCS8qIFNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwkJc2V0X3N1YnNjcmlw dGlvbl9yZXRyeSh0cnVlKTsKKwogCQlpZiAoTXlTdWJzY3JpcHRpb24tPmRpc2FibGVvbmVycikK IAkJCURpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KCk7CiAJCWVsc2UKQEAgLTM5MzUsNiArMzk2 MSw5IEBAIHN0YXJ0X2FwcGx5KFhMb2dSZWNQdHIgb3JpZ2luX3N0YXJ0cG9zKQogCX0KIAlQR19D QVRDSCgpOwogCXsKKwkJLyogU2V0IHRoZSByZXRyeSBmbGFnLiAqLworCQlzZXRfc3Vic2NyaXB0 aW9uX3JldHJ5KHRydWUpOworCiAJCWlmIChNeVN1YnNjcmlwdGlvbi0+ZGlzYWJsZW9uZXJyKQog CQkJRGlzYWJsZVN1YnNjcmlwdGlvbkFuZEV4aXQoKTsKIAkJZWxzZQpAQCAtNDQ2MSwzICs0NDkw LDYzIEBAIHJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbyh2b2lkKQogCWFwcGx5X2Vycm9y X2NhbGxiYWNrX2FyZy5yZW1vdGVfYXR0bnVtID0gLTE7CiAJc2V0X2FwcGx5X2Vycm9yX2NvbnRl eHRfeGFjdChJbnZhbGlkVHJhbnNhY3Rpb25JZCwgSW52YWxpZFhMb2dSZWNQdHIpOwogfQorCisv KgorICogU2V0IHN1YnJldHJ5IG9mIHBnX3N1YnNjcmlwdGlvbiBjYXRhbG9nLgorICoKKyAqIElm IHJldHJ5IGlzIHRydWUsIHN1YnNjcmliZXIgaXMgYWJvdXQgdG8gZXhpdCB3aXRoIGFuIGVycm9y LiBPdGhlcndpc2UsIGl0CisgKiBtZWFucyB0aGF0IHRoZSB0cmFuc2FjdGlvbiB3YXMgYXBwbGll ZCBzdWNjZXNzZnVsbHkuCisgKi8KK3N0YXRpYyB2b2lkCitzZXRfc3Vic2NyaXB0aW9uX3JldHJ5 KGJvb2wgcmV0cnkpCit7CisJUmVsYXRpb24JcmVsOworCUhlYXBUdXBsZQl0dXA7CisJYm9vbAkJ c3RhcnRlZF90eCA9IGZhbHNlOworCWJvb2wJCW51bGxzW05hdHRzX3BnX3N1YnNjcmlwdGlvbl07 CisJYm9vbAkJcmVwbGFjZXNbTmF0dHNfcGdfc3Vic2NyaXB0aW9uXTsKKwlEYXR1bQkJdmFsdWVz W05hdHRzX3BnX3N1YnNjcmlwdGlvbl07CisKKwlpZiAoTXlTdWJzY3JpcHRpb24tPnJldHJ5ID09 IHJldHJ5IHx8CisJCWFtX2FwcGx5X2Jnd29ya2VyKCkpCisJCXJldHVybjsKKworCWlmICghSXNU cmFuc2FjdGlvblN0YXRlKCkpCisJeworCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQlz dGFydGVkX3R4ID0gdHJ1ZTsKKwl9CisKKwkvKiBMb29rIHVwIHRoZSBzdWJzY3JpcHRpb24gaW4g dGhlIGNhdGFsb2cgKi8KKwlyZWwgPSB0YWJsZV9vcGVuKFN1YnNjcmlwdGlvblJlbGF0aW9uSWQs IFJvd0V4Y2x1c2l2ZUxvY2spOworCXR1cCA9IFNlYXJjaFN5c0NhY2hlQ29weTEoU1VCU0NSSVBU SU9OT0lELAorCQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShNeVN1YnNjcmlwdGlvbi0+b2lkKSk7 CisKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwKSkKKwkJZWxvZyhFUlJPUiwgInN1YnNjcmlw dGlvbiBcIiVzXCIgZG9lcyBub3QgZXhpc3QiLCBNeVN1YnNjcmlwdGlvbi0+bmFtZSk7CisKKwlM b2NrU2hhcmVkT2JqZWN0KFN1YnNjcmlwdGlvblJlbGF0aW9uSWQsIE15U3Vic2NyaXB0aW9uLT5v aWQsIDAsCisJCQkJCSBBY2Nlc3NTaGFyZUxvY2spOworCisJLyogRm9ybSBhIG5ldyB0dXBsZS4g Ki8KKwltZW1zZXQodmFsdWVzLCAwLCBzaXplb2YodmFsdWVzKSk7CisJbWVtc2V0KG51bGxzLCBm YWxzZSwgc2l6ZW9mKG51bGxzKSk7CisJbWVtc2V0KHJlcGxhY2VzLCBmYWxzZSwgc2l6ZW9mKHJl cGxhY2VzKSk7CisKKwkvKiByZXNldCBzdWJyZXRyeSAqLworCXZhbHVlc1tBbnVtX3BnX3N1YnNj cmlwdGlvbl9zdWJyZXRyeSAtIDFdID0gQm9vbEdldERhdHVtKHJldHJ5KTsKKwlyZXBsYWNlc1tB bnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJyZXRyeSAtIDFdID0gdHJ1ZTsKKworCXR1cCA9IGhlYXBf bW9kaWZ5X3R1cGxlKHR1cCwgUmVsYXRpb25HZXREZXNjcihyZWwpLCB2YWx1ZXMsIG51bGxzLAor CQkJCQkJCXJlcGxhY2VzKTsKKworCS8qIFVwZGF0ZSB0aGUgY2F0YWxvZy4gKi8KKwlDYXRhbG9n VHVwbGVVcGRhdGUocmVsLCAmdHVwLT50X3NlbGYsIHR1cCk7CisKKwkvKiBDbGVhbnVwLiAqLwor CWhlYXBfZnJlZXR1cGxlKHR1cCk7CisJdGFibGVfY2xvc2UocmVsLCBOb0xvY2spOworCisJaWYg KHN0YXJ0ZWRfdHgpCisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworfQpkaWZmIC0tZ2l0 IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMK aW5kZXggMjQ5Mjc2NDFiOS4uOWNlNzc0ZmMzOSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1w L3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC00NDcxLDggKzQ0 NzEsOSBAQCBnZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUgKmZvdXQpCiAJbnR1cHMgPSBQUW50dXBs ZXMocmVzKTsKIAogCS8qCi0JICogR2V0IHN1YnNjcmlwdGlvbiBmaWVsZHMuIFdlIGRvbid0IGlu Y2x1ZGUgc3Vic2tpcGxzbiBpbiB0aGUgZHVtcCBhcwotCSAqIGFmdGVyIHJlc3RvcmluZyB0aGUg ZHVtcCB0aGlzIHZhbHVlIG1heSBubyBsb25nZXIgYmUgcmVsZXZhbnQuCisJICogR2V0IHN1YnNj cmlwdGlvbiBmaWVsZHMuIFdlIGRvbid0IGluY2x1ZGUgc3Vic2tpcGxzbiBhbmQgc3VicmV0cnkg aW4KKwkgKiB0aGUgZHVtcCBhcyBhZnRlciByZXN0b3JpbmcgdGhlIGR1bXAgdGhpcyB2YWx1ZSBt YXkgbm8gbG9uZ2VyIGJlCisJICogcmVsZXZhbnQuCiAJICovCiAJaV90YWJsZW9pZCA9IFBRZm51 bWJlcihyZXMsICJ0YWJsZW9pZCIpOwogCWlfb2lkID0gUFFmbnVtYmVyKHJlcywgIm9pZCIpOwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKaW5kZXggZDU0NTQwZjVmNS4uNWY0ZTA1 OGVjMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaAor KysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCkBAIC03Niw2ICs3Niw4 IEBAIENBVEFMT0cocGdfc3Vic2NyaXB0aW9uLDYxMDAsU3Vic2NyaXB0aW9uUmVsYXRpb25JZCkg QktJX1NIQVJFRF9SRUxBVElPTiBCS0lfUk9XCiAJYm9vbAkJc3ViZGlzYWJsZW9uZXJyOwkvKiBU cnVlIGlmIGEgd29ya2VyIGVycm9yIHNob3VsZCBjYXVzZSB0aGUKIAkJCQkJCQkJCSAqIHN1YnNj cmlwdGlvbiB0byBiZSBkaXNhYmxlZCAqLwogCisJYm9vbAkJc3VicmV0cnkgQktJX0RFRkFVTFQo Zik7CS8qIFRydWUgaWYgdGhlIHByZXZpb3VzIGFwcGx5IGNoYW5nZSBmYWlsZWQuICovCisKICNp ZmRlZiBDQVRBTE9HX1ZBUkxFTgkJCS8qIHZhcmlhYmxlLWxlbmd0aCBmaWVsZHMgc3RhcnQgaGVy ZSAqLwogCS8qIENvbm5lY3Rpb24gc3RyaW5nIHRvIHRoZSBwdWJsaXNoZXIgKi8KIAl0ZXh0CQlz dWJjb25uaW5mbyBCS0lfRk9SQ0VfTk9UX05VTEw7CkBAIC0xMTYsNiArMTE4LDggQEAgdHlwZWRl ZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAJYm9vbAkJZGlzYWJsZW9uZXJyOwkvKiBJbmRpY2F0ZXMg aWYgdGhlIHN1YnNjcmlwdGlvbiBzaG91bGQgYmUKIAkJCQkJCQkJICogYXV0b21hdGljYWxseSBk aXNhYmxlZCBpZiBhIHdvcmtlciBlcnJvcgogCQkJCQkJCQkgKiBvY2N1cnMgKi8KKwlib29sCQly ZXRyeTsJCQkvKiBJbmRpY2F0ZXMgaWYgdGhlIHByZXZpb3VzIGFwcGx5IGNoYW5nZQorCQkJCQkJ CQkgKiBmYWlsZWQuICovCiAJY2hhcgkgICAqY29ubmluZm87CQkvKiBDb25uZWN0aW9uIHN0cmlu ZyB0byB0aGUgcHVibGlzaGVyICovCiAJY2hhcgkgICAqc2xvdG5hbWU7CQkvKiBOYW1lIG9mIHRo ZSByZXBsaWNhdGlvbiBzbG90ICovCiAJY2hhcgkgICAqc3luY2NvbW1pdDsJCS8qIFN5bmNocm9u b3VzIGNvbW1pdCBzZXR0aW5nIGZvciB3b3JrZXIgKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1pbmdfYXBwbHkucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMzJfc3RyZWFtaW5nX2FwcGx5LnBsCmluZGV4IGVjYTQzMjg2NzYuLjFiY2I0YzY1Yjcg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1pbmdfYXBwbHku cGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbWluZ19hcHBseS5wbApA QCAtNTcsOCArNTcsMTMgQEAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAogCiAkbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCisjID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KICMgSXQgaXMgbm90IGFsbG93ZWQgdGhhdCB0aGUgdW5pcXVlIGluZGV4IG9uIHRoZSBw dWJsaXNoZXIgYW5kIHRoZSBzdWJzY3JpYmVyCi0jIGlzIGRpZmZlcmVudC4gQ2hlY2sgdGhlIGVy cm9yIHJlcG9ydGVkIGJ5IGJhY2tncm91bmQgd29ya2VyIGluIHRoaXMgY2FzZS4KKyMgaXMgZGlm ZmVyZW50LiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkgYmFja2dyb3VuZCB3b3JrZXIgaW4g dGhpcyBjYXNlLiBBbmQKKyMgYWZ0ZXIgcmV0cnlpbmcgaW4gYXBwbHkgd29ya2VyLCB3ZSBjaGVj ayBpZiB0aGUgZGF0YSBpcyByZXBsaWNhdGVkCisjIHN1Y2Nlc3NmdWxseS4KKyMgPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorCiAjIEZpcnN0IHdlIGNoZWNrIHRoZSB1bmlxdWUgaW5kZXggb24gbm9ybWFs IHRhYmxlLgogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFU RSBVTklRVUUgSU5ERVggdGVzdF90YWJfYl9pZHggT04gdGVzdF90YWIgKGIpIik7CkBAIC04Miwx NCArODcsMTUgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAo IFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRl c3RfdGFiIiBpbiBwYXJhbGxlbCBtb2RlLywKIAkkb2Zmc2V0KTsKIAotIyBEcm9wIHRoZSB1bmlx dWUgaW5kZXggb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KLSRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBJTkRFWCB0ZXN0X3RhYl9iX2lkeCIpOwot CisjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4g dGhlIGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7CiAKIG15ICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBx cSg1MDAwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGlu ZGV4Jyk7CitpcygkcmVzdWx0LCBxcSg1MDAwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3Jp YmVycyBhZnRlciByZXRyeWluZyBiZWNhdXNlIG9mIHVuaXF1ZSBpbmRleCcpOworCisjIERyb3Ag dGhlIHVuaXF1ZSBpbmRleCBvbiB0aGUgc3Vic2NyaWJlci4KKyRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBJTkRFWCB0ZXN0X3RhYl9iX2lkeCIpOwogCiAjIFRo ZW4gd2UgY2hlY2sgdGhlIHVuaXF1ZSBpbmRleCBvbiBwYXJ0aXRpb24gdGFibGUuCiAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKQEAgLTEwNiwxNyArMTEyLDIwIEBAICRu b2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKIAlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8g Y2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYl9wYXJ0aXRp b25lZCIgaW4gcGFyYWxsZWwgbW9kZS8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCB0aGUgdW5pcXVl IGluZGV4IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVggdGVzdF90YWJfYl9wYXJ0aXRpb25f aWR4Iik7Ci0KKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBw bGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKIAogJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfcGFydGl0aW9uZWQi KTsKLWlzKCRyZXN1bHQsIHFxKDUwMDApLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIg YWZ0ZXIgZHJvcHBpbmcgaW5kZXgnKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDApLCAnZGF0YSByZXBs aWNhdGVkIHRvIHN1YnNjcmliZXJzIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgdW5pcXVlIGlu ZGV4Jyk7CisKKyMgRHJvcCB0aGUgdW5pcXVlIGluZGV4IG9uIHRoZSBzdWJzY3JpYmVyLgorJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIElOREVYIHRlc3RfdGFi X2JfcGFydGl0aW9uX2lkeCIpOwogCiAjIFRyaWdnZXJzIHdoaWNoIGV4ZWN1dGUgbm9uLWltbXV0 YWJsZSBmdW5jdGlvbiBhcmUgbm90IGFsbG93ZWQgb24gdGhlCiAjIHN1YnNjcmliZXIgc2lkZS4g Q2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5IGJhY2tncm91bmQgd29ya2VyIGluIHRoaXMgY2Fz ZS4KKyMgQW5kIGFmdGVyIHJldHJ5aW5nIGluIGFwcGx5IHdvcmtlciwgd2UgY2hlY2sgaWYgdGhl IGRhdGEgaXMgcmVwbGljYXRlZAorIyBzdWNjZXNzZnVsbHkuCiAjIEZpcnN0IHdlIGNoZWNrIHRo ZSB0cmlnZ2VyIGZ1bmN0aW9uIG9uIG5vcm1hbCB0YWJsZS4KICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgKIAkncG9zdGdyZXMnLCBxcXsKQEAgLTE0MCwxNSArMTQ5LDE2IEBAICRub2RlX3N1 YnNjcmliZXItPndhaXRfZm9yX2xvZygKIAlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90 IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYiIgaW4gcGFyYWxsZWwg bW9kZS8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCB0aGUgdHJpZ2dlciBvbiB0aGUgc3Vic2NyaWJl ciwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs Ci0JIkRST1AgVFJJR0dFUiBpbnNlcnRfdHJpZyBPTiB0ZXN0X3RhYiIpOwotCisjIFdhaXQgZm9y IHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdv cmtlci4KICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKICRy ZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVD VCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ2RhdGEgcmVw bGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIHRyaWdnZXInKTsKK2lzKCRyZXN1 bHQsIHFxKDApLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXJzIGFmdGVyIHJldHJ5aW5n IGJlY2F1c2Ugb2YgdHJpZ2dlcicpOworCisjIERyb3AgdGhlIHRyaWdnZXIgb24gdGhlIHN1YnNj cmliZXIuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiRFJPUCBU UklHR0VSIGluc2VydF90cmlnIE9OIHRlc3RfdGFiIik7CiAKICMgVGhlbiB3ZSBjaGVjayB0aGUg dHJpZ2dlciBmdW5jdGlvbiBvbiBwYXJ0aXRpb24gdGFibGUuCiAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoCkBAIC0xNjgsMTkgKzE3OCwyNCBAQCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zv cl9sb2coCiAJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0 IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJfcGFydGl0aW9uZWQiIGluIHBhcmFsbGVsIG1vZGUv LAogCSRvZmZzZXQpOwogCi0jIERyb3AgdGhlIHRyaWdnZXIgb24gdGhlIHN1YnNjcmliZXIsIG5v dyBpdCB3b3Jrcy4KLSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJE Uk9QIFRSSUdHRVIgaW5zZXJ0X3RyaWcgT04gdGVzdF90YWJfcGFydGl0aW9uIik7Ci0KKyMgV2Fp dCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBw bHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsK IAogJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKLWlzKCRyZXN1bHQs IHFxKDApLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgdHJp Z2dlcicpOworaXMoJHJlc3VsdCwgcXEoMCksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJl cnMgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBvZiB0cmlnZ2VyJyk7CiAKKyMgRHJvcCB0aGUgdHJp Z2dlciBvbiB0aGUgc3Vic2NyaWJlci4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJEUk9QIFRSSUdHRVIgaW5zZXJ0X3RyaWcgT04gdGVzdF90YWJfcGFydGl0aW9u Iik7CisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGNv bHVtbiBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24gY29udGFpbnMgYQogIyBub24taW1tdXRhYmxl IGZ1bmN0aW9uIG9uIHRoZSBzdWJzY3JpYmVyIHNpZGUuIENoZWNrIHRoZSBlcnJvciByZXBvcnRl ZCBieQotIyBiYWNrZ3JvdW5kIHdvcmtlciBpbiB0aGlzIGNhc2UuCisjIGJhY2tncm91bmQgd29y a2VyIGluIHRoaXMgY2FzZS4gQW5kIGFmdGVyIHJldHJ5aW5nIGluIGFwcGx5IHdvcmtlciwgd2Ug Y2hlY2sKKyMgaWYgdGhlIGRhdGEgaXMgcmVwbGljYXRlZCBzdWNjZXNzZnVsbHkuCisjID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKwogIyBGaXJzdCB3ZSBjaGVjayB0aGUgY29sdW1uIGRlZmF1bHQgdmFs dWUgZXhwcmVzc2lvbiBvbiBub3JtYWwgdGFibGUuCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKIAkiQUxURVIgVEFCTEUgdGVzdF90YWIgQUxURVIgQ09MVU1OIGIgU0VU IERFRkFVTFQgcmFuZG9tKCkiKTsKQEAgLTE5NiwxNiArMjExLDE3IEBAICRub2RlX3N1YnNjcmli ZXItPndhaXRfZm9yX2xvZygKIAlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxp Y2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYiIgaW4gcGFyYWxsZWwgbW9kZS8s CiAJJG9mZnNldCk7CiAKLSMgRHJvcCBkZWZhdWx0IHZhbHVlIG9uIHRoZSBzdWJzY3JpYmVyLCBu b3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQki QUxURVIgVEFCTEUgdGVzdF90YWIgQUxURVIgQ09MVU1OIGIgRFJPUCBERUZBVUxUIik7Ci0KKyMg V2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUg YXBwbHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l KTsKIAogJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDUwMDAp LAotCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBkZWZhdWx0 IHZhbHVlIGV4cHJlc3Npb24nKTsKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXJzIGFm dGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgY29sdW1uIGRlZmF1bHQgdmFsdWUnKTsKKworIyBEcm9w IGRlZmF1bHQgdmFsdWUgb24gdGhlIHN1YnNjcmliZXIuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWIgQUxURVIgQ09MVU1OIGIg RFJPUCBERUZBVUxUIik7CiAKICMgVGhlbiB3ZSBjaGVjayB0aGUgY29sdW1uIGRlZmF1bHQgdmFs dWUgZXhwcmVzc2lvbiBvbiBwYXJ0aXRpb24gdGFibGUuCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKQEAgLTIyMiwyMCArMjM4LDI1IEBAICRub2RlX3N1YnNjcmliZXIt PndhaXRfZm9yX2xvZygKIAlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0 ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYl9wYXJ0aXRpb25lZCIgaW4gcGFyYWxs ZWwgbW9kZS8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCBkZWZhdWx0IHZhbHVlIG9uIHRoZSBzdWJz Y3JpYmVyLCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKLQkiQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIEFMVEVSIENPTFVNTiBiIERS T1AgREVGQVVMVCIpOwotCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRv IGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3BhcnRp dGlvbmVkIik7CiBpcygkcmVzdWx0LCBxcSg1MDAwKSwKLQknZGF0YSByZXBsaWNhdGVkIHRvIHN1 YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uJyk7CisJJ2Rh dGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVycyBhZnRlciByZXRyeWluZyBiZWNhdXNlIG9mIGNv bHVtbiBkZWZhdWx0IHZhbHVlJyk7CisKKyMgRHJvcCBkZWZhdWx0IHZhbHVlIG9uIHRoZSBzdWJz Y3JpYmVyLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVS IFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBBTFRFUiBDT0xVTU4gYiBEUk9QIERFRkFVTFQiKTsK IAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CiAjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQgZG9tYWlu IGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBjb250YWlucyBhIG5vbi1pbW11dGFibGUKICMgZnVuY3Rp b24gb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5IGJh Y2tncm91bmQKLSMgd29ya2VyIGluIHRoaXMgY2FzZS4KKyMgd29ya2VyIGluIHRoaXMgY2FzZS4g QW5kIGFmdGVyIHJldHJ5aW5nIGluIGFwcGx5IHdvcmtlciwgd2UgY2hlY2sgaWYgdGhlIGRhdGEK KyMgaXMgcmVwbGljYXRlZCBzdWNjZXNzZnVsbHkuCisjID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwog IyBCZWNhdXNlIHRoZSBjb2x1bW4gdHlwZSBvZiB0aGUgcGFydGl0aW9uIHRhYmxlIG11c3QgYmUg dGhlIHNhbWUgYXMgaXRzIHBhcmVudAogIyB0YWJsZSwgb25seSB0ZXN0IG5vcm1hbCB0YWJsZSBo ZXJlLgogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKApAQCAtMjUzLDIxICsyNzQsMjYgQEAg JG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAoIFtBLVowLTldKzop PyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiIiBpbiBw YXJhbGxlbCBtb2RlLywKIAkkb2Zmc2V0KTsKIAotIyBEcm9wIGRvbWFpbiBjb25zdHJhaW50IGV4 cHJlc3Npb24gb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KLSRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBTFRFUiBD T0xVTU4gYSBUWVBFIGludCIpOwotCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0 aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFi Iik7CiBpcygkcmVzdWx0LCBxcSgwKSwKLQknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIg YWZ0ZXIgZHJvcHBpbmcgZG9tYWluIGNvbnN0cmFpbnQgZXhwcmVzc2lvbicKKwknZGF0YSByZXBs aWNhdGVkIHRvIHN1YnNjcmliZXJzIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgZG9tYWluJwog KTsKIAotIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBjb250 YWlucyBhIG5vbi1pbW11dGFibGUgZnVuY3Rpb24KLSMgb24gdGhlIHN1YnNjcmliZXIgc2lkZS4g Q2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5IGJhY2tncm91bmQgd29ya2VyIGluIHRoaXMKLSMg Y2FzZS4KKyMgRHJvcCBkb21haW4gY29uc3RyYWludCBleHByZXNzaW9uIG9uIHRoZSBzdWJzY3Jp YmVyLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRB QkxFIHRlc3RfdGFiIEFMVEVSIENPTFVNTiBhIFRZUEUgaW50Iik7CisKKyMgPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBj b250YWlucyBhIG5vbi1pbW11dGFibGUKKyMgZnVuY3Rpb24gb24gdGhlIHN1YnNjcmliZXIgc2lk ZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5IGJhY2tncm91bmQKKyMgd29ya2VyIGluIHRo aXMgY2FzZS4gQW5kIGFmdGVyIHJldHJ5aW5nIGluIGFwcGx5IHdvcmtlciwgd2UgY2hlY2sgaWYg dGhlIGRhdGEKKyMgaXMgcmVwbGljYXRlZCBzdWNjZXNzZnVsbHkuCisjID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKwogIyBGaXJzdCB3ZSBjaGVjayB0aGUgY29uc3RyYWludCBleHByZXNzaW9uIG9uIG5v cm1hbCB0YWJsZS4KICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKIAkncG9zdGdyZXMnLCBx cXsKQEAgLTI4NSwxNiArMzExLDE3IEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygK IAlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRp b24gInB1YmxpYy50ZXN0X3RhYiIgaW4gcGFyYWxsZWwgbW9kZS8sCiAJJG9mZnNldCk7CiAKLSMg RHJvcCBjb25zdHJhaW50IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCi0kbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgVEFCTEUgdGVzdF90YWIg RFJPUCBDT05TVFJBSU5UIHRlc3RfdGFiX2NvbiIpOwotCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFt aW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KICRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKICRyZXN1bHQgPQogICAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBG Uk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSg1MDAwKSwKLQknZGF0YSByZXBsaWNhdGVk IHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgY29uc3RyYWludCBleHByZXNzaW9uJyk7CisJ J2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVycyBhZnRlciByZXRyeWluZyBiZWNhdXNlIG9m IGNvbnN0cmFpbnQnKTsKKworIyBEcm9wIGNvbnN0cmFpbnQgb24gdGhlIHN1YnNjcmliZXIuCisk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVz dF90YWIgRFJPUCBDT05TVFJBSU5UIHRlc3RfdGFiX2NvbiIpOwogCiAjIFRoZW4gd2UgY2hlY2sg dGhlIGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBvbiBwYXJ0aXRpb24gdGFibGUuCiAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoCkBAIC0zMTEsMTkgKzMzOCwyNCBAQCAkbm9kZV9zdWJzY3JpYmVy LT53YWl0X2Zvcl9sb2coCiAJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNh dGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJfcGFydGl0aW9uZWQiIGluIHBhcmFs bGVsIG1vZGUvLAogCSRvZmZzZXQpOwogCi0jIERyb3AgY29uc3RyYWludCBvbiB0aGUgc3Vic2Ny aWJlciwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCi0JIkFMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBEUk9QIENPTlNUUkFJTlQgdGVz dF90YWJfY29uIik7Ci0KKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8g YmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lKTsKIAogJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfcGFydGl0 aW9uZWQiKTsKIGlzKCRyZXN1bHQsIHFxKDApLAotCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2Ny aWJlciBhZnRlciBkcm9wcGluZyBjb25zdHJhaW50IGV4cHJlc3Npb24nKTsKKwknZGF0YSByZXBs aWNhdGVkIHRvIHN1YnNjcmliZXJzIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgY29uc3RyYWlu dCcpOwogCisjIERyb3AgY29uc3RyYWludCBvbiB0aGUgc3Vic2NyaWJlci4KKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0 aXRpb24gRFJPUCBDT05TVFJBSU5UIHRlc3RfdGFiX2NvbiIpOworCisjID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KICMgSXQgaXMgbm90IGFsbG93ZWQgdGhhdCBmb3JlaWduIGtleSBvbiB0aGUgc3Vic2Ny aWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IKLSMgcmVwb3J0ZWQgYnkgYmFja2dyb3VuZCB3b3Jr ZXIgaW4gdGhpcyBjYXNlLgorIyByZXBvcnRlZCBieSBiYWNrZ3JvdW5kIHdvcmtlciBpbiB0aGlz IGNhc2UuIEFuZCBhZnRlciByZXRyeWluZyBpbiBhcHBseQorIyB3b3JrZXIsIHdlIGNoZWNrIGlm IHRoZSBkYXRhIGlzIHJlcGxpY2F0ZWQgc3VjY2Vzc2Z1bGx5LgorIyA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CisKICMgRmlyc3Qgd2UgY2hlY2sgdGhlIGZvcmVpZ24ga2V5IG9uIG5vcm1hbCB0YWJsZS4K ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0 X3RhYiIpOwogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKQEAg LTM0NCwxNiArMzc2LDE3IEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKIAlxci9F UlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1 YmxpYy50ZXN0X3RhYiIgaW4gcGFyYWxsZWwgbW9kZS8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCB0 aGUgZm9yZWlnbiBrZXkgY29uc3RyYWludCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtz LgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFRBQkxF IHRlc3RfdGFiIERST1AgQ09OU1RSQUlOVCB0ZXN0X3RhYmZrIik7Ci0KKyMgV2FpdCBmb3IgdGhp cyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2Vy LgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAogJHJlc3Vs dCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNv dW50KCopIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDUwMDApLAotCSdkYXRhIHJl cGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyB0aGUgZm9yZWlnbiBrZXknKTsK KwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXJzIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ug b2YgZm9yZWlnbiBrZXknKTsKKworIyBEcm9wIHRoZSBmb3JlaWduIGtleSBjb25zdHJhaW50IG9u IHRoZSBzdWJzY3JpYmVyLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiIERST1AgQ09OU1RSQUlOVCB0ZXN0X3RhYmZrIik7CiAK ICMgVGhlbiB3ZSBjaGVjayB0aGUgZm9yZWlnbiBrZXkgb24gcGFydGl0aW9uIHRhYmxlLgogJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKQEAgLTM3NCwxNiArNDA3 LDE3IEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKIAlxci9FUlJPUjogKCBbQS1a MC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3Rh Yl9wYXJ0aXRpb25lZCIgaW4gcGFyYWxsZWwgbW9kZS8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCB0 aGUgZm9yZWlnbiBrZXkgY29uc3RyYWludCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtz LgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFRBQkxF IHRlc3RfdGFiX3BhcnRpdGlvbiBEUk9QIENPTlNUUkFJTlQgdGVzdF90YWJfcGF0aXRpb25fZmsi KTsKLQorIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVk IGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOwogCiAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOwog aXMoJHJlc3VsdCwgcXEoNTAwMCksCi0JJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFm dGVyIGRyb3BwaW5nIHRoZSBmb3JlaWduIGtleScpOworCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vi c2NyaWJlcnMgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBvZiBmb3JlaWduIGtleScpOworCisjIERy b3AgdGhlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgb24gdGhlIHN1YnNjcmliZXIuCiskbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWJf cGFydGl0aW9uIERST1AgQ09OU1RSQUlOVCB0ZXN0X3RhYl9wYXRpdGlvbl9mayIpOwogCiAkbm9k ZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwotLSAKMi4yMy4wLndp bmRvd3MuMQoK --_005_OS3PR01MB62755C6C9A75EB09F7218B589E839OS3PR01MB6275jpnp_--