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 1oJUSe-0007TR-K3 for pgsql-hackers@arkaria.postgresql.org; Thu, 04 Aug 2022 06:36:01 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oJUSc-0000yZ-I0 for pgsql-hackers@arkaria.postgresql.org; Thu, 04 Aug 2022 06:35:58 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oJUSb-0000tY-RA for pgsql-hackers@lists.postgresql.org; Thu, 04 Aug 2022 06:35:58 +0000 Received: from esa20.fujitsucc.c3s2.iphmx.com ([216.71.158.65]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oJUSX-0005VM-PS for pgsql-hackers@lists.postgresql.org; Thu, 04 Aug 2022 06:35:57 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1659594954; x=1691130954; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=pprYMmv40gmeaQAAclgTo/AKTbPH2pYhlk+XJlVdZc4=; b=qSh+JhPqSS9rkZKFjn5k+RlGEPkkZSZRreGsJP3Z36YiVGXXq/Nls++O nxrI4URaOAfUpoxEIQXTJQf0Q9yfQ7L3GrnZipX/TFWtKmtJam3H05sDm 4sVHkv49G6PdRZd+g0X31bMdUbBWeIbe+foIpck22a9rIQXtS+rcRTZ82 zxkgoykIK9cDQRD5K7OX7P85FRpLjoINt10iNyXDRbffFW+9IOczN9kP6 IdPemmbjt/ygyUSwPZYoKM65ixoZlZj6+6k3PZPG2q5OCoSrY+EY1wFxW HdwCmi016XYP8Ohj55X9FMhH5pwjw04dUsG1H0iJbTr9FcT1HuZ2Edltr A==; X-IronPort-AV: E=McAfee;i="6400,9594,10428"; a="61992744" X-IronPort-AV: E=Sophos;i="5.93,215,1654527600"; d="scan'208,223";a="61992744" Received: from mail-tycjpn01lp2172.outbound.protection.outlook.com (HELO JPN01-TYC-obe.outbound.protection.outlook.com) ([104.47.23.172]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Aug 2022 15:35:50 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BkDGICzf6dvSeX1ufrJ2s8/Zy6ij4+X5eTq0ORCLzk3tPpMjmb3DKzinGN1uoRy/UWvTh6ItfI75ChNO/AaUcY3tEz0v9+GFZ+rhq6MdQ5igJH1SiwQn6jPyKkVqvkOKNppn8LbhKHx56HViPJcqxoL0oT57iNCbPctzKCZDjKNmn4Wg1Vn9l3in8c3qXXo4PbVyBypoNByvox6OQPH5mfaGaXsGvAkSqn5GWn7c1as3IHmlgJQ1Gz7Y46yvA4q/Xo/STllKWTP6yMeTlJ1wbPMm/v8ko6PLQwdSXTED9IIgVLFUzEobUWw1f5RUQQsoTnY04B1KEfX/FuiS3ktS7A== 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=CS5QQzOUT03z7qTFWXoghkcHFXhEiSFHNDovtflbyh4=; b=i8L55TnwpxzxyR7DTmDeoDXZP+YpuzUcR5rGQMrqAuergkbtjPCYQ8Ac3gedmolLK2WcJdc0HBufQP507Ib93BGNcrLAf40Jw4M5Ur5yttX2iI37dJuXnZ7iHmfwAiH6xj/Uibk3zSmLjiJCw3Jskyr8ulq/KeBUtoW7HNMqCHlvuHW0mAGRxh1yJq6x4vq9il6r1zpGY+IRuaNdrlsUnaPDN3Ugh01PdA3rYOLDVH5TBSoR4okR4gy/ZC8orNmifB7jkPD9o/BUazPT6574jM1k8IX3F9aIAdbz41L4URCO0MElCDah6CQq6t7B4INZ1hduCVi3KVhF+ZBCep6TfA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none Received: from OS3PR01MB6275.jpnprd01.prod.outlook.com (2603:1096:604:f1::8) by OS3PR01MB7665.jpnprd01.prod.outlook.com (2603:1096:604:14b::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.14; Thu, 4 Aug 2022 06:35:46 +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.5504.014; Thu, 4 Aug 2022 06:35:46 +0000 From: "wangw.fnst@fujitsu.com" To: Amit Kapila , "houzj.fnst@fujitsu.com" CC: Dilip Kumar , Peter Smith , Masahiko Sawada , "shiy.fnst@fujitsu.com" , PostgreSQL Hackers Subject: RE: Perform streaming logical transactions by background workers and parallel apply Thread-Topic: Perform streaming logical transactions by background workers and parallel apply Thread-Index: AQHYSXX4/KZEbPJKjUy7J1pJS8eGYazlvxQAgAkRYICACBI2gIABs50AgAA5UwCAApvIgIAFAGuAgAXc1wCAADa7gIALO/aAgAsRZICAB606AIAS9tXQgAAv04CAAWQLgIABHxKAgAA3o4CAAd7v0IAJQDLggAkyO+CAAiLMAIAC0M5ggARwU4CABP8UAIAAGBkAgAd/49CABPEVgIAJO7xggABuopCACQ1GAIAJSjQggAS+3MCABq/QgIABSJUAgAAOtoCAACmRgIAB78qAgAqLjwA= Date: Thu, 4 Aug 2022 06:35:45 +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?NTBfQWN0aW9uSWQ9OGIzN2M3ZTMtZmI0NS00YjgxLTg1MTAtY2Y2YzQ4NWNl?= =?utf-8?B?OWMyO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?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?ZWNlMDUwX1NldERhdGU9MjAyMi0wOC0wNFQwNjozNDoxNVo7TVNJUF9MYWJl?= =?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: 98c9b714-c2b2-4b34-d7e8-08da75e38ffa x-ms-traffictypediagnostic: OS3PR01MB7665:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: OTgz8EX3epsIpYkqVfmr3zIdMCCcJjgCV0HY79kfdFubWvEN/vY6d+bK6bI1a9xdTwh6vSqMlpeMopVvjzr4SsLSpWpn4OPr4PPr+WRoyQ5Rk0ZwX4wuLa0ye4AI4ak3XxrbgE9N1LNnhJATn/hcsZrKYPxcOv7skkTNila0EHuFB2lXCM9cvdhf8ieqlCl1cGbK5ySvngnl8ZaF32tRl6YTeXGNOm41rAMvL+ZnYR6uGCV1mafTLqGewHkujURcbCHCEaqrSjpG339g4xT+MMXTSa7h8p8BniWhvw/sz7yarQwLq4sdpvftZd3R0XY/jfcWShS5sUicxaS5sOmqjg37shS8trP/12uX5d94TAnO3GXrqKCC/g/oD6qz+Ii3jW2YeYlHSdjiMbZzl/8lM8AmQizMvDtMvmGz6M+75tCPVWpRj+cQhM3kv1d4IUjwEGjq+sRvI95xWHBPHaYZb5zdpzuqGPb2gwM69bCkH9a5gfgqfAi1PxbR12XVUYC+TJu+gg1Zsg9roVo6Dn1w+IiE7J6UVLXVEWb+va4nBGynvm7y5MZkRppNqHJj8mq2b2kp5zkDWbMdbkXyh4D0tqEJ13xTKd3u8ZABsb6w0zx1V86vGz8V3kQZctzY/yIaCGu4yyAv3TRO1Fjv3D6+KsqWZwKtUHSSOd4sMm0KvE1354pMNJb8+xgRvyd6s/D66PvZ3gjfqDdTfT6bpZeOBO32fCCIMh2VlalbFm2llXJWnqDSr0UZvAoK7AQEmWeQHVxITME0QONFaklGTJ1aTNcqYyGImxVTtes67d9OEejzb/uzNicm4B4BKF2waUhXt86+kxk7tZ/z9Yxt6iYZVA== 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)(39860400002)(376002)(366004)(346002)(136003)(396003)(5660300002)(85182001)(52536014)(8936002)(8676002)(4326008)(64756008)(76116006)(66446008)(66476007)(66556008)(2906002)(110136005)(316002)(54906003)(6506007)(53546011)(33656002)(6636002)(71200400001)(478600001)(966005)(41300700001)(66946007)(83380400001)(38100700002)(7696005)(9686003)(186003)(86362001)(55016003)(38070700005)(99936003)(82960400001)(26005)(122000001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?K1lBZWlCWXFPZ2lPWGtUQVNqMUNKMjZPTFl6RmRZNGxKYzJhYlJTWlpxQkVv?= =?utf-8?B?dzBqbmduZWhrZHhwemsxV1JFRmZoVjRudzBxKy9JaHcvOTVKOUNQMTRpUHVR?= =?utf-8?B?V2xXRXcxS1FHSTFuSzJCMVgrUWwyMmhZdkhETW9IWnVpWHNkTGloeHJKaVFD?= =?utf-8?B?c3ZLY2FZUkpJNlBIeVFvL1RkVFdWbi92RmptK1pzYmM4RHlDOXZuNGoxQlNY?= =?utf-8?B?UldEaFY1T2c2RUM2dVpJTUFGaFY0SmNTaEVlNHVFZTdGUEtnci9zWDZnWUQv?= =?utf-8?B?Rkd5SHN3RzVSWFRQSWJDdGJ6NnBjd21SQWdjUmpmcHJOTFBFbjN1d2F1Um5D?= =?utf-8?B?TFgzYVpaKzhTNC96NzNWNE10YVhzcnMvSHJBa1ZTY3ZBVU5DSU5XUUUwNzdJ?= =?utf-8?B?Y3J4OHUrZ0tDVXZQYzYxUDFVK1hFMUJaY2RVd2lCQUtVNWtkWG1JcFFkb01H?= =?utf-8?B?dU55WXd4cHpuVUgzeHlFZy9Yd0hPaDJBTUhIZ0J6a25aOFFMZ0VrL2ZtR2E5?= =?utf-8?B?SDBLamJlVklpNjd6cGlFV242enZxRkR5UEh1UzRGUVlmN3d5V1hNNWVyempl?= =?utf-8?B?Y1hBN3cxbzVvWG9OR0pFbG85MlNyZW9zWFNWeTB5TmU3a0ZBNXBnR0dwblpo?= =?utf-8?B?R3NhNmNIMEowZEZOQXB1UzJ2NUpRMlNuM2pBaGJ2bVVlYW92by9ZbTRYUlVi?= =?utf-8?B?b2xYalBOZ2hXQXpYTzljSjljaDhMQnhBWnJGbnBiNFU3dksrQnV0MENwZlc4?= =?utf-8?B?dFhsNU1nekk3dkdFYW9wdjNzaXN1ZkNxbG1mN0ZaNW5rdHc3Lyt5Mk1EWXo1?= =?utf-8?B?cFBuc0svZ1N6VkE5Znl0M0oyWnpsWVYveW42aDV6WWZBQmRCLzdSeERCVXBX?= =?utf-8?B?TU11L1VDV2VjME4zWlEzZ3ZTOTE1VExFYmJYRW1iMzhxK1RvcEtpbFNIcmZt?= =?utf-8?B?OWVZdUtpNExlTXUraU9vU01jaVNzVDFneGdvOFR6aTZrOFRQdy82TDZucDNy?= =?utf-8?B?Q01mYmtFMlVBT2JUMlZxaE5zSDZ3U3ZwVzZQMFF1MEVtdm92K3NwWVFZcjJl?= =?utf-8?B?Y05xNWF0L0JDTjVHUThlM1VDN3BwdGoyV0w5cUp1YTN1YUNaeWRKUDF6NmpT?= =?utf-8?B?dm8zMG5Bb3p3a1VIS3BUMzQxUVlKenNYVGMzbEV2L24wQzlHZzdEbXFvc3h0?= =?utf-8?B?VGZoQmRFNWRwN0c4WkF5Ymx3dVVkS1BJL0swN0FsRmU4WkxDUzhaWGh1anRa?= =?utf-8?B?Znd5K2g4Yk1HT0FodmxCT3R0dGZkdVpRZGFlZHhMWEFFLy9LRDQ1a0JMR3Fm?= =?utf-8?B?dFF5NWxDWGRHZGk3WUdoTkRoclBPRXlBTVM2V2ZxR2E1YnFKZDRDMWxMOHd5?= =?utf-8?B?aWpWMXFVdTRMM0lUbVdhRzBzSXNVaS9wQW5UeDVObnNJQ2pLOGFqcjh0MHF5?= =?utf-8?B?dnVBbE5NdG9TOVJqUks5d2NDZXFNeEZpMUU4M2ZPOUJPaWNBY2lkNDRHS3Nw?= =?utf-8?B?OU5yUWpqeC9EbGJ3VW1vWldEYTNjTGdFQ3p6VUhIOG9KMGNraUZqSlBIYTdT?= =?utf-8?B?aTFsdzZRM0pXcWs5WVl4MGtxNVFpZStzMUNReFJzcEVqNTFCalVHSkRZeEZT?= =?utf-8?B?RlNjYUg0VGFhQjZTaE9mVHVCYUlINmljbFprMm84VU9YYkxEMlcvV2k0YjlE?= =?utf-8?B?SDIvczE0N01JWTVwaWlka2hZZlZXcmM5a0lCM3kzcWJXeWtPekhuZ3owSG5s?= =?utf-8?B?cXo2bU5XSk5pTktxZ0p3bnYwekVac2FXMDVKcWNFb1RYY2pLb2hXN05CazJS?= =?utf-8?B?OUJyL1pXK3F4STcrVitKdkhWMG1pTG9POERiUFFILzhtTUg4dy9YNTNBWGo3?= =?utf-8?B?M3pZSVJKVUpLck9RbmxkdU0wYjFOcmJFZzVVcmdUMGZYanhXMDMxVTFYRU5C?= =?utf-8?B?SExmeXZoTm9pTzNwYW84dHZrN3ZyM2RvTitkZmlPS1AreFhvNHZXR3N4dURF?= =?utf-8?B?NWR4eGdaZWxVc1NFdmhaS2t5aGNVK2VBQVdrMnl1TW84T1VHdG1UbXpqaGdB?= =?utf-8?B?dmFxd1hmaTM0RkplWnQvZktaMEJIYlc2WGhIUUZtY0pwZ0R3S3dFaFFEVzlR?= =?utf-8?Q?ph9A1k4YkRfrYCblRMzKbmaQb?= Content-Type: multipart/mixed; boundary="_005_OS3PR01MB6275D64BE7726B0221B15F389E9F9OS3PR01MB6275jpnp_" 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: 98c9b714-c2b2-4b34-d7e8-08da75e38ffa X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Aug 2022 06:35:45.9484 (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: CnvCjoss9KWrbC8Y3EjCxHWOQH1dpvaB9AIIvLcm7wvOwAD0XlZhm4R0Zimp/bd3Tcg1UyXgtANCGgWoUle0Fw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS3PR01MB7665 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_005_OS3PR01MB6275D64BE7726B0221B15F389E9F9OS3PR01MB6275jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gVGh1cnMsIEp1bCAyOCwgMjAyMiBhdCAyMTozMiBQTSBBbWl0IEthcGlsYSA8YW1pdC5rYXBp bGExNkBnbWFpbC5jb20+IHdyb3RlOg0KPg0KDQpUaGFua3MgZm9yIHlvdXIgY29tbWVudHMgYW5k IG9waW5pb25zLg0KDQo+IE9uIFdlZCwgSnVsIDI3LCAyMDIyIGF0IDE6MjcgUE0gaG91emouZm5z dEBmdWppdHN1LmNvbQ0KPiA8aG91emouZm5zdEBmdWppdHN1LmNvbT4gd3JvdGU6DQo+ID4gQlRX LCBJIHRoaW5rIHRoZSBmb3JlaWduIGtleSB3b24ndCB0YWtlIGVmZmVjdCBpbiBzdWJzY3JpYmVy J3MgYXBwbHkgd29ya2VyIGJ5DQo+ID4gZGVmYXVsdC4gQmVjYXVzZSB3ZSBzZXQgc2Vzc2lvbl9y ZXBsaWNhdGlvbl9yb2xlIHRvICdyZXBsaWNhJyBpbiBhcHBseSB3b3JrZXINCj4gPiB3aGljaCBw cmV2ZW50IHRoZSBGSyB0cmlnZ2VyIGZ1bmN0aW9uIHRvIGJlIGV4ZWN1dGVkKG9ubHkgdGhlIHRy aWdnZXIgd2l0aA0KPiA+IEZJUkVTX09OX1JFUExJQ0EgZmxhZyB3aWxsIGJlIGV4ZWN1dGVkIGlu IHRoaXMgbW9kZSkuIFVzZXIgY2FuIG9ubHkgYWx0ZXIgdGhlDQo+ID4gdHJpZ2dlciB0byBlbmFi bGUgaXQgb24gcmVwbGljYSBtb2RlIHRvIG1ha2UgdGhlIGZvcmVpZ24ga2V5IHdvcmsuIFNvLCBJ U1RNLA0KPiB3ZQ0KPiA+IHdvbid0IGhpdCB0aGlzIEVSUk9SIGZyZXF1ZW50bHkuDQo+ID4NCj4g PiBBbmQgYmFzZWQgb24gdGhpcywgYW5vdGhlciBjb21tZW50IGFib3V0IHRoZSBwYXRjaCBpcyB0 aGF0IGl0IHNlZW1zDQo+IHVubmVjZXNzYXJ5DQo+ID4gdG8gZGlyZWN0bHkgY2hlY2sgdGhlIEZL IHJldHVybmVkIGJ5IFJlbGF0aW9uR2V0RktleUxpc3QuIENoZWNraW5nIHRoZSBhY3R1YWwNCj4g RksNCj4gPiB0cmlnZ2VyIGZ1bmN0aW9uIHNlZW1zIGVub3VnaC4NCj4gPg0KPiANCj4gVGhhdCBp cyBjb3JyZWN0LiBJIHRoaW5rIGl0IHdvdWxkIGhhdmUgYmVlbiBiZXR0ZXIgaWYgd2UgY2FuIGRl dGVjdA0KPiB0aGF0IHB1Ymxpc2hlciBkb2Vzbid0IGhhdmUgRksgYnV0IHRoZSBzdWJzY3JpYmVy IGhhcyBGSyBhcyBpdCBjYW4NCj4gb2NjdXIgb25seSBpbiB0aGF0IHNjZW5hcmlvLiBJZiB0aGF0 IHJlcXVpcmVzIHVzIHRvIHNlbmQgbW9yZQ0KPiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBwdWJsaXNo ZXIsIHdlIGNhbiBsZWF2ZSBpdCBmb3Igbm93IChhcyB0aGlzDQo+IGRvZXNuJ3Qgc2VlbSB0byBi ZSBhIGZyZXF1ZW50IHNjZW5hcmlvKSBhbmQga2VlcCBhIHNpbXBsZXIgY2hlY2sgYmFzZWQNCj4g b24gc3Vic2NyaWJlciBzY2hlbWEuDQo+IA0KPiBJIHRoaW5rIHdlIHNob3VsZCBhZGQgYSB0ZXN0 IGFzIG1lbnRpb25lZCBieSB5b3UgYWJvdmUgc28gdGhhdCBpZg0KPiB0b21vcnJvdyBvbmUgdHJp ZXMgdG8gcmVtb3ZlIHRoZSBGSyBjaGVjaywgd2UgaGF2ZSBhIHdheSB0byBrbm93Lg0KPiBBbHNv LCBwbGVhc2UgYWRkIGNvbW1lbnRzIGFuZCB0ZXN0cyBmb3IgYWRkaXRpb25hbCBjaGVja3MgcmVs YXRlZCB0bw0KPiBjb25zdHJhaW50cyBpbiB0aGUgcGF0Y2guDQo+IA0KPiBbMV0gLSBodHRwczov L3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLQ0KPiBpZC9DQUE0ZUsxSndhaFVfV3VQM1MlMkI3 UE9xdGElM0RQaG1fM2d4WmVWbUp1dW9VcTFOViUzRGtyWEENCj4gJTQwbWFpbC5nbWFpbC5jb20N Cg0KSSBhZGRlZCBzb21lIHRlc3QgY2FzZXMgdGhhdCBjYXVzZSBpbmRlZmluaXRlIHdhaXRzIHdp dGhvdXQgYWRkaXRpb25hbCBjaGVja3MNCnJlbGF0ZWQgdG8gY29uc3RyYWludHMuIChwbGVhc2Ug c2VlIGZpbGUgMDMyX3N0cmVhbWluZ19hcHBseS5wbCBpbiAwMDAzLXBhdGNoKQ0KSSBhbHNvIGFk ZGVkIHNvbWUgY29tbWVudHMgZm9yIEZLIGNoZWNrIGFuZCB3aHkgd2UgbmVlZCB0aGVzZSBjaGVj a3MuDQoNCkluIGFkZGl0aW9uLCBJIGZvdW5kIGFub3RoZXIgdHdvIHNjZW5hcmlvcyB0aGF0IGNv dWxkIGNhdXNlIGluZmluaXRlIHdhaXRzLCBzbw0KSSBtYWRlIHRoZSBmb2xsb3dpbmcgY2hhbmdl czoNCiAgMS4gSSBjaGVjayB0aGUgZGVmYXVsdCB2YWx1ZXMgZm9yIHRoZSBjb2x1bW5zIHRoYXQg b25seSBpbiBzdWJzY3JpYmVyLXNpZGUuDQogICAgIChQcmV2aW91cyB2ZXJzaW9ucyBvbmx5IGNo ZWNrZWQgZm9yIGNvbHVtbnMgdGhhdCBleGlzdGVkIGluIGJvdGgNCiAgICAgIHB1Ymxpc2hlci1z aWRlIGFuZCBzdWJzY3JpYmVyLXNpZGUuKQ0KICAyLiBXaGVuIHVzaW5nIGFuIGFwcGx5IGJhY2tn cm91bmQgd29ya2VyLCB0aGUgY2hlY2sgbmVlZHMgdG8gYmUgcGVyZm9ybWVkIG5vdA0KICAgICBv bmx5IGluIHRoZSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciwgYnV0IGFsc28gaW4gdGhlIG1haW4g YXBwbHkgd29ya2VyLg0KDQpJIGFsc28gZGlkIHNvbWUgb3RoZXIgaW1wcm92ZW1lbnRzIGJhc2Vk IG9uIHRoZSBzdWdnZXN0aW9ucyBwb3N0ZWQgaW4gdGhpcw0KdGhyZWFkLiBBdHRhY2ggdGhlIG5l dyBwYXRjaGVzLg0KDQpSZWdhcmRzLA0KV2FuZyB3ZWkNCg== --_005_OS3PR01MB6275D64BE7726B0221B15F389E9F9OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v20-0001-Perform-streaming-logical-transactions-by-backgr.patch" Content-Description: v20-0001-Perform-streaming-logical-transactions-by-backgr.patch Content-Disposition: attachment; filename="v20-0001-Perform-streaming-logical-transactions-by-backgr.patch"; size=112750; creation-date="Thu, 04 Aug 2022 06:35:00 GMT"; modification-date="Thu, 04 Aug 2022 06:35:42 GMT" Content-Transfer-Encoding: base64 RnJvbSAyMjU5ZGIyN2U2NjRmYzhlN2U1MWRjYmU0MjIwZmQ4YTgyY2RiZTE1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjAgQXByIDIwMjIgMTY6NDU6MDcgKzA4MDAKU3ViamVjdDogW1BBVENI IHYyMCAxLzRdIFBlcmZvcm0gc3RyZWFtaW5nIGxvZ2ljYWwgdHJhbnNhY3Rpb25zIGJ5IGJhY2tn 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 ICAgfCAgMTEgKy0KIGRvYy9zcmMvc2dtbC9jb25maWcuc2dtbCAgICAgICAgICAgICAgICAgICAg ICB8ICAyNSArCiBkb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sICAgICAgICAg fCAgMTAgKwogZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwgICAgICAgICAgICAgICAgICAgIHwg IDI4ICstCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCAgICAgfCAg MjQgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYyAgICAgICAgICAgICB8ICAx MyArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgICAgICAgfCAgNjYg Ky0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYyAgICAgICAgICAgICB8ICAgMyAr CiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlICAgICAgfCAgIDEgKwog Li4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dvcmtlci5jICAgICAgIHwgODAzICsrKysr KysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYyAg ICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMg ICAgfCAxMzEgKystCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jICAg ICAgfCAgMjYgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYyAgICAg ICB8ICA0MSArLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jICAgICAg IHwgIDEwICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jICAg fCAgMTAgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICB8 IDY5MiArKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bn b3V0cHV0LmMgICB8ICAgNiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVu dC5jICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMgICAgICAgICAg ICAgICAgICB8ICAxMiArCiBzcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5z YW1wbGUgfCAgIDEgKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAgICAg ICAgIHwgICA2ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oICAgICAg ICAgfCAgMjEgKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oICAg ICB8ICAgMSArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaCAgICAgICAg fCAgMjcgKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCAgICAgICB8 ICAgMSArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vcmlnaW4uaCAgICAgICAgICAgICAgfCAg IDIgKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaCAgICAgICB8ICAg NyArLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggICAgIHwgMTA0 ICsrLQogc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oICAgICAgICAgICAgICAgIHwgICAx ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dCAgICB8ICAxMiAr LQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNxbCAgICAgICAgIHwgICA2ICst CiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgIDUgKwog MzMgZmlsZXMgY2hhbmdlZCwgMTg5NiBpbnNlcnRpb25zKCspLCAyMjMgZGVsZXRpb25zKC0pCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseWJn d29ya2VyLmMKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9z cmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IGNkMmNjMzdhZWIuLjQ5Y2Y5NDIwMzYgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jYXRh bG9ncy5zZ21sCkBAIC03ODczLDExICs3ODczLDE2IEBAIFNDUkFNLVNIQS0yNTYkPHJlcGxhY2Vh YmxlPiZsdDtpdGVyYXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPiZs CiAKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48 cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+Ci0gICAgICAgPHN0cnVjdGZpZWxkPnN1YnN0 cmVhbTwvc3RydWN0ZmllbGQ+IDx0eXBlPmJvb2w8L3R5cGU+CisgICAgICAgPHN0cnVjdGZpZWxk PnN1YnN0cmVhbTwvc3RydWN0ZmllbGQ+IDx0eXBlPmNoYXI8L3R5cGU+CiAgICAgICA8L3BhcmE+ CiAgICAgICA8cGFyYT4KLSAgICAgICBJZiB0cnVlLCB0aGUgc3Vic2NyaXB0aW9uIHdpbGwgYWxs b3cgc3RyZWFtaW5nIG9mIGluLXByb2dyZXNzCi0gICAgICAgdHJhbnNhY3Rpb25zCisgICAgICAg Q29udHJvbHMgaG93IHRvIGhhbmRsZSB0aGUgc3RyZWFtaW5nIG9mIGluLXByb2dyZXNzIHRyYW5z YWN0aW9uczoKKyAgICAgICA8bGl0ZXJhbD5mPC9saXRlcmFsPiA9IGRpc2FsbG93IHN0cmVhbWlu ZyBvZiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMsCisgICAgICAgPGxpdGVyYWw+dDwvbGl0ZXJh bD4gPSBzcGlsbCB0aGUgY2hhbmdlcyBvZiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMgdG8KKyAg ICAgICBkaXNrIGFuZCBhcHBseSBhdCBvbmNlIGFmdGVyIHRoZSB0cmFuc2FjdGlvbiBpcyBjb21t aXR0ZWQgb24gdGhlCisgICAgICAgcHVibGlzaGVyLAorICAgICAgIDxsaXRlcmFsPnA8L2xpdGVy YWw+ID0gYXBwbHkgY2hhbmdlcyBkaXJlY3RseSB1c2luZyBhIGJhY2tncm91bmQKKyAgICAgICB3 b3JrZXIsIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlLCBpdCBiZWhhdmVzIHRoZSBzYW1lIGFzICd0 JwogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCmRpZmYgLS1naXQgYS9kb2Mv c3JjL3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggZTJk NzI4ZTBjNC4uNDEyNmUxZDJjYyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtNDk3MCw2ICs0OTcwLDMxIEBAIEFO WSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtX3N5bmM8L3JlcGxhY2VhYmxlPiAo IDxyZXBsYWNlYWJsZSBjbGFzcz0iCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3Rl bnRyeT4KIAorICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtbWF4LWFwcGx5LWJnd29ya2Vycy1w ZXItc3Vic2NyaXB0aW9uIiB4cmVmbGFiZWw9Im1heF9hcHBseV9iZ3dvcmtlcnNfcGVyX3N1YnNj cmlwdGlvbiI+CisgICAgICA8dGVybT48dmFybmFtZT5tYXhfYXBwbHlfYmd3b3JrZXJzX3Blcl9z dWJzY3JpcHRpb248L3Zhcm5hbWU+ICg8dHlwZT5pbnRlZ2VyPC90eXBlPikKKyAgICAgIDxpbmRl eHRlcm0+CisgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+bWF4X2FwcGx5X2Jnd29ya2Vyc19wZXJf c3Vic2NyaXB0aW9uPC92YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4K KyAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAg ICAgIDxwYXJhPgorICAgICAgICBNYXhpbXVtIG51bWJlciBvZiBhcHBseSBiYWNrZ3JvdW5kIHdv cmtlcnMgcGVyIHN1YnNjcmlwdGlvbi4gVGhpcworICAgICAgICBwYXJhbWV0ZXIgY29udHJvbHMg dGhlIGFtb3VudCBvZiBwYXJhbGxlbGlzbSBmb3Igc3RyZWFtaW5nIG9mCisgICAgICAgIGluLXBy b2dyZXNzIHRyYW5zYWN0aW9ucyB3aXRoIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIKKyAgICAgICAg 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 cHJvdG9jb2wuc2dtbAppbmRleCAwZDRiNzIwY2ZkLi5hYTRhNjcyZGM1IDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dt bApAQCAtMzA5Niw3ICszMDk2LDcgQEAgcHNxbCAiZGJuYW1lPXBvc3RncmVzIHJlcGxpY2F0aW9u PWRhdGFiYXNlIiAtYyAiSURFTlRJRllfU1lTVEVNOyIKICAgICAgPGxpc3RpdGVtPgogICAgICAg PHBhcmE+CiAgICAgICAgUHJvdG9jb2wgdmVyc2lvbi4gQ3VycmVudGx5IHZlcnNpb25zIDxsaXRl cmFsPjE8L2xpdGVyYWw+LCA8bGl0ZXJhbD4yPC9saXRlcmFsPiwKLSAgICAgICBhbmQgPGxpdGVy YWw+MzwvbGl0ZXJhbD4gYXJlIHN1cHBvcnRlZC4KKyAgICAgICA8bGl0ZXJhbD4zPC9saXRlcmFs PiBhbmQgPGxpdGVyYWw+NDwvbGl0ZXJhbD4gYXJlIHN1cHBvcnRlZC4KICAgICAgIDwvcGFyYT4K ICAgICAgIDxwYXJhPgogICAgICAgIFZlcnNpb24gPGxpdGVyYWw+MjwvbGl0ZXJhbD4gaXMgc3Vw cG9ydGVkIG9ubHkgZm9yIHNlcnZlciB2ZXJzaW9uIDE0CkBAIC0zMTA2LDYgKzMxMDYsMTEgQEAg cHNxbCAiZGJuYW1lPXBvc3RncmVzIHJlcGxpY2F0aW9uPWRhdGFiYXNlIiAtYyAiSURFTlRJRllf U1lTVEVNOyIKICAgICAgICBWZXJzaW9uIDxsaXRlcmFsPjM8L2xpdGVyYWw+IGlzIHN1cHBvcnRl ZCBvbmx5IGZvciBzZXJ2ZXIgdmVyc2lvbiAxNQogICAgICAgIGFuZCBhYm92ZSwgYW5kIGl0IGFs bG93cyBzdHJlYW1pbmcgb2YgdHdvLXBoYXNlIGNvbW1pdHMuCiAgICAgICA8L3BhcmE+CisgICAg ICA8cGFyYT4KKyAgICAgICBWZXJzaW9uIDxsaXRlcmFsPjQ8L2xpdGVyYWw+IGlzIHN1cHBvcnRl ZCBvbmx5IGZvciBzZXJ2ZXIgdmVyc2lvbiAxNgorICAgICAgIGFuZCBhYm92ZSwgYW5kIGl0IGFs bG93cyBhcHBseWluZyBzdHJlYW0gb2YgbGFyZ2UgaW4tcHJvZ3Jlc3MKKyAgICAgICB0cmFuc2Fj dGlvbnMgaW4gcGFyYWxsZWwuCisgICAgICA8L3BhcmE+CiAgICAgIDwvbGlzdGl0ZW0+CiAgICAg PC92YXJsaXN0ZW50cnk+CiAKQEAgLTY3OTYsNiArNjgwMSwyNyBAQCBwc3FsICJkYm5hbWU9cG9z dGdyZXMgcmVwbGljYXRpb249ZGF0YWJhc2UiIC1jICJJREVOVElGWV9TWVNURU07IgogICAgICAg IDwvbGlzdGl0ZW0+CiAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICAgPHZhcmxpc3RlbnRy eT4KKyAgICAgICA8dGVybT5JbnQ2NCAoWExvZ1JlY1B0cik8L3Rlcm0+CisgICAgICAgPGxpc3Rp dGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIFRoZSBMU04gb2YgdGhlIGFib3J0LiBUaGlz IGZpZWxkIGlzIGF2YWlsYWJsZSBzaW5jZSBwcm90b2NvbCB2ZXJzaW9uCisgICAgICAgICA0Lgor ICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5 PgorCisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgIDx0ZXJtPkludDY0IChUaW1lc3RhbXBU eik8L3Rlcm0+CisgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIEFi b3J0IHRpbWVzdGFtcCBvZiB0aGUgdHJhbnNhY3Rpb24uIFRoZSB2YWx1ZSBpcyBpbiBudW1iZXIK KyAgICAgICAgIG9mIG1pY3Jvc2Vjb25kcyBzaW5jZSBQb3N0Z3JlU1FMIGVwb2NoICgyMDAwLTAx LTAxKS4gVGhpcyBmaWVsZCBpcworICAgICAgICAgYXZhaWxhYmxlIHNpbmNlIHByb3RvY29sIHZl cnNpb24gNC4KKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zh cmxpc3RlbnRyeT4KKwogICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICA8dGVybT5JbnQzMiAo VHJhbnNhY3Rpb25JZCk8L3Rlcm0+CiAgICAgICAgPGxpc3RpdGVtPgpkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVm L2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAppbmRleCA3MzkwYzcxNWJjLi5iMDhlNGI1NTgwIDEw MDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAorKysg Yi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbApAQCAtMjE3LDEzICsy MTcsMjkgQEAgQ1JFQVRFIFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+c3Vic2NyaXB0aW9uX25hbWU8L3JlcGxhY2VhYmwKICAgICAgICA8L3Zhcmxpc3RlbnRyeT4K IAogICAgICAgIDx2YXJsaXN0ZW50cnk+Ci0gICAgICAgIDx0ZXJtPjxsaXRlcmFsPnN0cmVhbWlu ZzwvbGl0ZXJhbD4gKDx0eXBlPmJvb2xlYW48L3R5cGU+KTwvdGVybT4KKyAgICAgICAgPHRlcm0+ PGxpdGVyYWw+c3RyZWFtaW5nPC9saXRlcmFsPiAoPHR5cGU+ZW51bTwvdHlwZT4pPC90ZXJtPgog ICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICBTcGVjaWZpZXMg d2hldGhlciB0byBlbmFibGUgc3RyZWFtaW5nIG9mIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucwot ICAgICAgICAgIGZvciB0aGlzIHN1YnNjcmlwdGlvbi4gIEJ5IGRlZmF1bHQsIGFsbCB0cmFuc2Fj dGlvbnMKLSAgICAgICAgICBhcmUgZnVsbHkgZGVjb2RlZCBvbiB0aGUgcHVibGlzaGVyIGFuZCBv bmx5IHRoZW4gc2VudCB0byB0aGUKLSAgICAgICAgICBzdWJzY3JpYmVyIGFzIGEgd2hvbGUuCisg ICAgICAgICAgZm9yIHRoaXMgc3Vic2NyaXB0aW9uLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgPGxp dGVyYWw+b2ZmPC9saXRlcmFsPiwKKyAgICAgICAgICBtZWFuaW5nIGFsbCB0cmFuc2FjdGlvbnMg YXJlIGZ1bGx5IGRlY29kZWQgb24gdGhlIHB1Ymxpc2hlciBhbmQgb25seQorICAgICAgICAgIHRo ZW4gc2VudCB0byB0aGUgc3Vic2NyaWJlciBhcyBhIHdob2xlLgorICAgICAgICAgPC9wYXJhPgor CisgICAgICAgICA8cGFyYT4KKyAgICAgICAgICBJZiBzZXQgdG8gPGxpdGVyYWw+b248L2xpdGVy YWw+LCB0aGUgaW5jb21pbmcgY2hhbmdlcyBhcmUgd3JpdHRlbiB0bworICAgICAgICAgIHRlbXBv cmFyeSBmaWxlcyBhbmQgdGhlbiBhcHBsaWVkIG9ubHkgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGlz CisgICAgICAgICAgY29tbWl0dGVkIG9uIHRoZSBwdWJsaXNoZXIuCisgICAgICAgICA8L3BhcmE+ CisKKyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIElmIHNldCB0byA8bGl0ZXJhbD5wYXJhbGxl bDwvbGl0ZXJhbD4sIGluY29taW5nIGNoYW5nZXMgYXJlIGRpcmVjdGx5CisgICAgICAgICAgYXBw bGllZCB2aWEgb25lIG9mIHRoZSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcnMsIGlmIGF2YWlsYWJs ZS4gSWYgbm8KKyAgICAgICAgICBiYWNrZ3JvdW5kIHdvcmtlciBpcyBmcmVlIHRvIGhhbmRsZSBz dHJlYW1pbmcgdHJhbnNhY3Rpb24gdGhlbiB0aGUKKyAgICAgICAgICBjaGFuZ2VzIGFyZSB3cml0 dGVuIHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQgYXBwbGllZCBhZnRlciB0aGUKKyAgICAgICAgICB0 cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuIE5vdGUgdGhhdCBpZiBhbiBlcnJvciBoYXBwZW5zIHdo ZW4KKyAgICAgICAgICBhcHBseWluZyBjaGFuZ2VzIGluIGEgYmFja2dyb3VuZCB3b3JrZXIsIHRo ZSBmaW5pc2ggTFNOIG9mIHRoZQorICAgICAgICAgIHJlbW90ZSB0cmFuc2FjdGlvbiBtaWdodCBu b3QgYmUgcmVwb3J0ZWQgaW4gdGhlIHNlcnZlciBsb2cuCiAgICAgICAgICA8L3BhcmE+CiAgICAg ICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS94YWN0LmMKaW5kZXggY2UxNDE3YjhmMC4uYjE2NTQ4ZDRkMSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3hhY3QuYwpAQCAtMTcxMSw2ICsxNzExLDcgQEAgUmVjb3JkVHJhbnNhY3Rpb25BYm9ydChi b29sIGlzU3ViWGFjdCkKIAlpbnQJCQluY2hpbGRyZW47CiAJVHJhbnNhY3Rpb25JZCAqY2hpbGRy ZW47CiAJVGltZXN0YW1wVHogeGFjdF90aW1lOworCWJvb2wJCXJlcGxvcmlnaW47CiAKIAkvKgog CSAqIElmIHdlIGhhdmVuJ3QgYmVlbiBhc3NpZ25lZCBhbiBYSUQsIG5vYm9keSB3aWxsIGNhcmUg d2hldGhlciB3ZSBhYm9ydGVkCkBAIC0xNzQxLDYgKzE3NDIsMTMgQEAgUmVjb3JkVHJhbnNhY3Rp b25BYm9ydChib29sIGlzU3ViWGFjdCkKIAkJZWxvZyhQQU5JQywgImNhbm5vdCBhYm9ydCB0cmFu c2FjdGlvbiAldSwgaXQgd2FzIGFscmVhZHkgY29tbWl0dGVkIiwKIAkJCSB4aWQpOwogCisJLyoK KwkgKiBBcmUgd2UgdXNpbmcgdGhlIHJlcGxpY2F0aW9uIG9yaWdpbnMgZmVhdHVyZT8gIE9yLCBp biBvdGhlciB3b3JkcywKKwkgKiBhcmUgd2UgcmVwbGF5aW5nIHJlbW90ZSBhY3Rpb25zPworCSAq LworCXJlcGxvcmlnaW4gPSAocmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiAhPSBJbnZhbGlkUmVw T3JpZ2luSWQgJiYKKwkJCQkgIHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gIT0gRG9Ob3RSZXBs aWNhdGVJZCk7CisKIAkvKiBGZXRjaCB0aGUgZGF0YSB3ZSBuZWVkIGZvciB0aGUgYWJvcnQgcmVj b3JkICovCiAJbnJlbHMgPSBzbWdyR2V0UGVuZGluZ0RlbGV0ZXMoZmFsc2UsICZyZWxzKTsKIAlu Y2hpbGRyZW4gPSB4YWN0R2V0Q29tbWl0dGVkQ2hpbGRyZW4oJmNoaWxkcmVuKTsKQEAgLTE3NjUs NiArMTc3MywxMSBAQCBSZWNvcmRUcmFuc2FjdGlvbkFib3J0KGJvb2wgaXNTdWJYYWN0KQogCQkJ CQkgICBNeVhhY3RGbGFncywgSW52YWxpZFRyYW5zYWN0aW9uSWQsCiAJCQkJCSAgIE5VTEwpOwog CisJaWYgKHJlcGxvcmlnaW4pCisJCS8qIE1vdmUgTFNOcyBmb3J3YXJkIGZvciB0aGlzIHJlcGxp Y2F0aW9uIG9yaWdpbiAqLworCQlyZXBsb3JpZ2luX3Nlc3Npb25fYWR2YW5jZShyZXBsb3JpZ2lu X3Nlc3Npb25fb3JpZ2luX2xzbiwKKwkJCQkJCQkJICAgWGFjdExhc3RSZWNFbmQpOworCiAJLyoK IAkgKiBSZXBvcnQgdGhlIGxhdGVzdCBhc3luYyBhYm9ydCBMU04sIHNvIHRoYXQgdGhlIFdBTCB3 cml0ZXIga25vd3MgdG8KIAkgKiBmbHVzaCB0aGlzIGFib3J0LiBUaGVyZSdzIG5vdGhpbmcgdG8g YmUgZ2FpbmVkIGJ5IGRlbGF5aW5nIHRoaXMsIHNpbmNlCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJz Y3JpcHRpb25jbWRzLmMKaW5kZXggZjczZGZiNjA2Ny4uNzhiN2VlNzU0MyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtODQsNyArODQsNyBAQCB0eXBlZGVmIHN0 cnVjdCBTdWJPcHRzCiAJYm9vbAkJY29weV9kYXRhOwogCWJvb2wJCXJlZnJlc2g7CiAJYm9vbAkJ YmluYXJ5OwotCWJvb2wJCXN0cmVhbWluZzsKKwljaGFyCQlzdHJlYW1pbmc7CiAJYm9vbAkJdHdv cGhhc2U7CiAJYm9vbAkJZGlzYWJsZW9uZXJyOwogCWNoYXIJICAgKm9yaWdpbjsKQEAgLTk3LDYg Kzk3LDYyIEBAIHN0YXRpYyBMaXN0ICptZXJnZV9wdWJsaWNhdGlvbnMoTGlzdCAqb2xkcHVibGlz dCwgTGlzdCAqbmV3cHVibGlzdCwgYm9vbCBhZGRwdWIsCiBzdGF0aWMgdm9pZCBSZXBvcnRTbG90 Q29ubmVjdGlvbkVycm9yKExpc3QgKnJzdGF0ZXMsIE9pZCBzdWJpZCwgY2hhciAqc2xvdG5hbWUs IGNoYXIgKmVycik7CiAKIAorLyoKKyAqIEV4dHJhY3QgdGhlIHN0cmVhbWluZyBtb2RlIHZhbHVl IGZyb20gYSBEZWZFbGVtLiAgVGhpcyBpcyBsaWtlCisgKiBkZWZHZXRCb29sZWFuKCkgYnV0IGFs c28gYWNjZXB0cyB0aGUgc3BlY2lhbCB2YWx1ZSBvZiAicGFyYWxsZWwiLgorICovCitzdGF0aWMg Y2hhcgorZGVmR2V0U3RyZWFtaW5nTW9kZShEZWZFbGVtICpkZWYpCit7CisJLyoKKwkgKiBJZiBu byBwYXJhbWV0ZXIgdmFsdWUgZ2l2ZW4sIGFzc3VtZSAidHJ1ZSIgaXMgbWVhbnQuCisJICovCisJ aWYgKGRlZi0+YXJnID09IE5VTEwpCisJCXJldHVybiBTVUJTVFJFQU1fT047CisKKwkvKgorCSAq IEFsbG93IDAsIDEsICJmYWxzZSIsICJ0cnVlIiwgIm9mZiIsICJvbiIgb3IgInBhcmFsbGVsIi4K KwkgKi8KKwlzd2l0Y2ggKG5vZGVUYWcoZGVmLT5hcmcpKQorCXsKKwkJY2FzZSBUX0ludGVnZXI6 CisJCQlzd2l0Y2ggKGludFZhbChkZWYtPmFyZykpCisJCQl7CisJCQkJY2FzZSAwOgorCQkJCQly ZXR1cm4gU1VCU1RSRUFNX09GRjsKKwkJCQljYXNlIDE6CisJCQkJCXJldHVybiBTVUJTVFJFQU1f T047CisJCQkJZGVmYXVsdDoKKwkJCQkJLyogb3RoZXJ3aXNlLCBlcnJvciBvdXQgYmVsb3cgKi8K KwkJCQkJYnJlYWs7CisJCQl9CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCXsKKwkJCQljaGFy CSAgICpzdmFsID0gZGVmR2V0U3RyaW5nKGRlZik7CisKKwkJCQkvKgorCQkJCSAqIFRoZSBzZXQg b2Ygc3RyaW5ncyBhY2NlcHRlZCBoZXJlIHNob3VsZCBtYXRjaCB1cCB3aXRoIHRoZQorCQkJCSAq IGdyYW1tYXIncyBvcHRfYm9vbGVhbl9vcl9zdHJpbmcgcHJvZHVjdGlvbi4KKwkJCQkgKi8KKwkJ CQlpZiAocGdfc3RyY2FzZWNtcChzdmFsLCAiZmFsc2UiKSA9PSAwIHx8CisJCQkJCXBnX3N0cmNh c2VjbXAoc3ZhbCwgIm9mZiIpID09IDApCisJCQkJCXJldHVybiBTVUJTVFJFQU1fT0ZGOworCQkJ CWlmIChwZ19zdHJjYXNlY21wKHN2YWwsICJ0cnVlIikgPT0gMCB8fAorCQkJCQlwZ19zdHJjYXNl Y21wKHN2YWwsICJvbiIpID09IDApCisJCQkJCXJldHVybiBTVUJTVFJFQU1fT047CisJCQkJaWYg KHBnX3N0cmNhc2VjbXAoc3ZhbCwgInBhcmFsbGVsIikgPT0gMCkKKwkJCQkJcmV0dXJuIFNVQlNU UkVBTV9QQVJBTExFTDsKKwkJCX0KKwkJCWJyZWFrOworCX0KKwllcmVwb3J0KEVSUk9SLAorCQkJ KGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJIGVycm1zZygiJXMgcmVxdWlyZXMg YSBCb29sZWFuIHZhbHVlIG9yIFwicGFyYWxsZWxcIiIsCisJCQkJCWRlZi0+ZGVmbmFtZSkpKTsK KwlyZXR1cm4gU1VCU1RSRUFNX09GRjsJCS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KK30KKwog LyoKICAqIENvbW1vbiBvcHRpb24gcGFyc2luZyBmdW5jdGlvbiBmb3IgQ1JFQVRFIGFuZCBBTFRF UiBTVUJTQ1JJUFRJT04gY29tbWFuZHMuCiAgKgpAQCAtMTM0LDcgKzE5MCw3IEBAIHBhcnNlX3N1 YnNjcmlwdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqc3RtdF9vcHRpb25z LAogCWlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX0JJTkFSWSkpCiAJCW9wdHMtPmJp bmFyeSA9IGZhbHNlOwogCWlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX1NUUkVBTUlO RykpCi0JCW9wdHMtPnN0cmVhbWluZyA9IGZhbHNlOworCQlvcHRzLT5zdHJlYW1pbmcgPSBTVUJT VFJFQU1fT0ZGOwogCWlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX1RXT1BIQVNFX0NP TU1JVCkpCiAJCW9wdHMtPnR3b3BoYXNlID0gZmFsc2U7CiAJaWYgKElzU2V0KHN1cHBvcnRlZF9v cHRzLCBTVUJPUFRfRElTQUJMRV9PTl9FUlIpKQpAQCAtMjM3LDcgKzI5Myw3IEBAIHBhcnNlX3N1 YnNjcmlwdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqc3RtdF9vcHRpb25z LAogCQkJCWVycm9yQ29uZmxpY3RpbmdEZWZFbGVtKGRlZmVsLCBwc3RhdGUpOwogCiAJCQlvcHRz LT5zcGVjaWZpZWRfb3B0cyB8PSBTVUJPUFRfU1RSRUFNSU5HOwotCQkJb3B0cy0+c3RyZWFtaW5n ID0gZGVmR2V0Qm9vbGVhbihkZWZlbCk7CisJCQlvcHRzLT5zdHJlYW1pbmcgPSBkZWZHZXRTdHJl YW1pbmdNb2RlKGRlZmVsKTsKIAkJfQogCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUs ICJ0d29fcGhhc2UiKSA9PSAwKQogCQl7CkBAIC02MjcsNyArNjgzLDcgQEAgQ3JlYXRlU3Vic2Ny aXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwK IAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vib3duZXIgLSAxXSA9IE9iamVjdElkR2V0 RGF0dW0ob3duZXIpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJlbmFibGVkIC0g MV0gPSBCb29sR2V0RGF0dW0ob3B0cy5lbmFibGVkKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3Jp cHRpb25fc3ViYmluYXJ5IC0gMV0gPSBCb29sR2V0RGF0dW0ob3B0cy5iaW5hcnkpOwotCXZhbHVl c1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJzdHJlYW0gLSAxXSA9IEJvb2xHZXREYXR1bShvcHRz LnN0cmVhbWluZyk7CisJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnN0cmVhbSAtIDFd ID0gQ2hhckdldERhdHVtKG9wdHMuc3RyZWFtaW5nKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3Jp cHRpb25fc3VidHdvcGhhc2VzdGF0ZSAtIDFdID0KIAkJQ2hhckdldERhdHVtKG9wdHMudHdvcGhh c2UgPwogCQkJCQkgTE9HSUNBTFJFUF9UV09QSEFTRV9TVEFURV9QRU5ESU5HIDoKQEAgLTEwODks NyArMTE0NSw3IEBAIEFsdGVyU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJT dWJzY3JpcHRpb25TdG10ICpzdG10LAogCQkJCWlmIChJc1NldChvcHRzLnNwZWNpZmllZF9vcHRz LCBTVUJPUFRfU1RSRUFNSU5HKSkKIAkJCQl7CiAJCQkJCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlw dGlvbl9zdWJzdHJlYW0gLSAxXSA9Ci0JCQkJCQlCb29sR2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcp OworCQkJCQkJQ2hhckdldERhdHVtKG9wdHMuc3RyZWFtaW5nKTsKIAkJCQkJcmVwbGFjZXNbQW51 bV9wZ19zdWJzY3JpcHRpb25fc3Vic3RyZWFtIC0gMV0gPSB0cnVlOwogCQkJCX0KIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9iZ3dvcmtlci5jCmluZGV4IDQwNjAxYWVmZDkuLjQwY2NiODk5M2MgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9w b3N0bWFzdGVyL2Jnd29ya2VyLmMKQEAgLTEyOCw2ICsxMjgsOSBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0CiAJfSwKIAl7CiAJCSJBcHBseVdvcmtlck1haW4iLCBBcHBseVdvcmtlck1haW4KKwl9LAor CXsKKwkJIkFwcGx5Qmd3b3JrZXJNYWluIiwgQXBwbHlCZ3dvcmtlck1haW4KIAl9CiB9OwogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZQppbmRleCBjNGUyZmRlYjcxLi5j YmZiNWQ3OTRlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01h a2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUKQEAg LTE1LDYgKzE1LDcgQEAgaW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2Jh bAogb3ZlcnJpZGUgQ1BQRkxBR1MgOj0gLUkkKHNyY2RpcikgJChDUFBGTEFHUykKIAogT0JKUyA9 IFwKKwlhcHBseWJnd29ya2VyLm8gXAogCWRlY29kZS5vIFwKIAlsYXVuY2hlci5vIFwKIAlsb2dp Y2FsLm8gXApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBs eWJnd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3b3Jr ZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5iZTIyNTZlZGUzCi0t LSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseWJn d29ya2VyLmMKQEAgLTAsMCArMSw4MDMgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogYXBwbHli Z3dvcmtlci5jCisgKiAgICAgU3VwcG9ydCByb3V0aW5lcyBmb3IgYXBwbHlpbmcgeGFjdCBieSBh cHBseSBiYWNrZ3JvdW5kIHdvcmtlcgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxNi0yMDIyLCBQ b3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqIElERU5USUZJQ0FUSU9O CisgKgkgIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dvcmtlci5jCisg KgorICogVGhpcyBmaWxlIGNvbnRhaW5zIHJvdXRpbmVzIHRoYXQgYXJlIGludGVuZGVkIHRvIHN1 cHBvcnQgc2V0dGluZyB1cCwgdXNpbmcsCisgKiBhbmQgdGVhcmluZyBkb3duIGEgQXBwbHlCZ3dv cmtlclN0YXRlLgorICoKKyAqIFJlZmVyIHRvIHRoZSBjb21tZW50cyBpbiBmaWxlIGhlYWRlciBv ZiBsb2dpY2FsL3dvcmtlci5jIHRvIHNlZSBtb3JlCisgKiBpbmZvcm1hdGlvbiBhYm91dCBhcHBs eSBiYWNrZ3JvdW5kIHdvcmtlci4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5j bHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0LmgiCisjaW5jbHVk ZSAibWIvcGdfd2NoYXIuaCIKKyNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJwb3N0bWFz dGVyL2ludGVycnVwdC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5o IgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIKKyNpbmNsdWRlICJyZXBs aWNhdGlvbi9vcmlnaW4uaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIgor I2luY2x1ZGUgInJlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIgorI2luY2x1ZGUgInN0b3Jh Z2UvaXBjLmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKKyNpbmNsdWRlICJ0Y29w L3Rjb3Bwcm90LmgiCisjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIKKyNpbmNsdWRlICJ1dGlscy9t ZW11dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL3Jlc293bmVyLmgiCisjaW5jbHVkZSAidXRpbHMv c3lzY2FjaGUuaCIKKworI2RlZmluZSBQR19MT0dJQ0FMX0FQUExZX1NITV9NQUdJQyAweDc4N2Nh MDY3CisKKy8qCisgKiBEU00ga2V5cyBmb3IgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuICBVbmxp a2Ugb3RoZXIgcGFyYWxsZWwgZXhlY3V0aW9uIGNvZGUsCisgKiBzaW5jZSB3ZSBkb24ndCBuZWVk IHRvIHdvcnJ5IGFib3V0IERTTSBrZXlzIGNvbmZsaWN0aW5nIHdpdGggcGxhbl9ub2RlX2lkIHdl CisgKiBjYW4gdXNlIHNtYWxsIGludGVnZXJzLgorICovCisjZGVmaW5lIEFQUExZX0JHV09SS0VS X0tFWV9TSEFSRUQJMQorI2RlZmluZSBBUFBMWV9CR1dPUktFUl9LRVlfTVEJCTIKKworLyogUXVl dWUgc2l6ZSBvZiBEU00sIDE2IE1CIGZvciBub3cuICovCisjZGVmaW5lIERTTV9RVUVVRV9TSVpF CTE2MDAwMDAwMAorCisvKgorICogVGhlcmUgYXJlIHRocmVlIGZpZWxkcyBpbiBtZXNzYWdlOiBz dGFydF9sc24sIGVuZF9sc24gYW5kIHNlbmRfdGltZS4gQmVjYXVzZQorICogd2UgaGF2ZSB1cGRh dGVkIHRoZXNlIHN0YXRpc3RpY3MgaW4gYXBwbHkgd29ya2VyLCB3ZSBjb3VsZCBpZ25vcmUgdGhl c2UKKyAqIGZpZWxkcyBpbiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4gKHNlZSBmdW5jdGlvbiBM b2dpY2FsUmVwQXBwbHlMb29wKQorICovCisjZGVmaW5lIFNJWkVfU1RBVFNfTUVTU0FHRSAoMyAq IHNpemVvZih1aW50NjQpKQorCisvKgorICogRW50cnkgZm9yIGEgaGFzaCB0YWJsZSB3ZSB1c2Ug dG8gbWFwIGZyb20geGlkIHRvIG91ciBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcgorICogc3RhdGUu CisgKi8KK3R5cGVkZWYgc3RydWN0IEFwcGx5Qmd3b3JrZXJFbnRyeQoreworCVRyYW5zYWN0aW9u SWQgeGlkOworCUFwcGx5Qmd3b3JrZXJTdGF0ZSAqd3N0YXRlOworfSBBcHBseUJnd29ya2VyRW50 cnk7CisKKy8qIEFwcGx5IGJhY2tncm91bmQgd29ya2VycyBoYXNoIHRhYmxlIChpbml0aWFsaXpl ZCBvbiBmaXJzdCB1c2UpICovCitzdGF0aWMgSFRBQiAqQXBwbHlCZ3dvcmtlcnNIYXNoID0gTlVM TDsKK3N0YXRpYyBMaXN0ICpBcHBseUJnd29ya2Vyc0ZyZWVMaXN0ID0gTklMOworc3RhdGljIExp c3QgKkFwcGx5Qmd3b3JrZXJzTGlzdCA9IE5JTDsKKworLyoKKyAqIEluZm9ybWF0aW9uIHNoYXJl ZCBiZXR3ZWVuIG1haW4gYXBwbHkgd29ya2VyIGFuZCBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4K KyAqLwordm9sYXRpbGUgQXBwbHlCZ3dvcmtlclNoYXJlZCAqTXlQYXJhbGxlbFNoYXJlZCA9IE5V TEw7CisKK0xpc3QJICAgKnN1YnhhY3RsaXN0ID0gTklMOworCitzdGF0aWMgYm9vbCBhcHBseV9i Z3dvcmtlcl9jYW5fc3RhcnQoVHJhbnNhY3Rpb25JZCB4aWQpOworc3RhdGljIEFwcGx5Qmd3b3Jr ZXJTdGF0ZSAqYXBwbHlfYmd3b3JrZXJfc2V0dXAodm9pZCk7CitzdGF0aWMgdm9pZCBhcHBseV9i Z3dvcmtlcl9zZXR1cF9kc20oQXBwbHlCZ3dvcmtlclN0YXRlICp3c3RhdGUpOworCisvKgorICog Q2hlY2sgaWYgc3RhcnRpbmcgYSBuZXcgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgaXMgYWxsb3dl ZC4KKyAqLworc3RhdGljIGJvb2wKK2FwcGx5X2Jnd29ya2VyX2Nhbl9zdGFydChUcmFuc2FjdGlv bklkIHhpZCkKK3sKKwlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkpCisJCXJldHVybiBm YWxzZTsKKworCS8qCisJICogRG9uJ3Qgc3RhcnQgYSBuZXcgYmFja2dyb3VuZCB3b3JrZXIgaWYg bm90IGluIHN0cmVhbWluZyBwYXJhbGxlbCBtb2RlLgorCSAqLworCWlmIChNeVN1YnNjcmlwdGlv bi0+c3RyZWFtICE9IFNVQlNUUkVBTV9QQVJBTExFTCkKKwkJcmV0dXJuIGZhbHNlOworCisJLyoK KwkgKiBEb24ndCBzdGFydCBhIG5ldyBiYWNrZ3JvdW5kIHdvcmtlciBpZiB1c2VyIGhhcyBzZXQg c2tpcGxzbiBhcyBpdCdzCisJICogcG9zc2libGUgdGhhdCB1c2VyIHdhbnQgdG8gc2tpcCB0aGUg c3RyZWFtaW5nIHRyYW5zYWN0aW9uLiBGb3IKKwkgKiBzdHJlYW1pbmcgdHJhbnNhY3Rpb24sIHdl IG5lZWQgdG8gc3BpbGwgdGhlIHRyYW5zYWN0aW9uIHRvIGRpc2sgc28gdGhhdAorCSAqIHdlIGNh biBnZXQgdGhlIGxhc3QgTFNOIG9mIHRoZSB0cmFuc2FjdGlvbiB0byBqdWRnZSB3aGV0aGVyIHRv IHNraXAKKwkgKiBiZWZvcmUgc3RhcnRpbmcgdG8gYXBwbHkgdGhlIGNoYW5nZS4KKwkgKi8KKwlp ZiAoIVhMb2dSZWNQdHJJc0ludmFsaWQoTXlTdWJzY3JpcHRpb24tPnNraXBsc24pKQorCQlyZXR1 cm4gZmFsc2U7CisKKwkvKgorCSAqIEZvciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIHRoYXQgYXJl IGJlaW5nIGFwcGxpZWQgaW4gYXBwbHkgYmFja2dyb3VuZAorCSAqIHdvcmtlciwgd2UgY2Fubm90 IGRlY2lkZSB3aGV0aGVyIHRvIGFwcGx5IHRoZSBjaGFuZ2UgZm9yIGEgcmVsYXRpb24KKwkgKiB0 aGF0IGlzIG5vdCBpbiB0aGUgUkVBRFkgc3RhdGUgKHNlZSBzaG91bGRfYXBwbHlfY2hhbmdlc19m b3JfcmVsKSBhcyB3ZQorCSAqIHdvbid0IGtub3cgcmVtb3RlX2ZpbmFsX2xzbiBieSB0aGF0IHRp bWUuIFNvLCB3ZSBkb24ndCBzdGFydCBuZXcgYXBwbHkKKwkgKiBiYWNrZ3JvdW5kIHdvcmtlciBp biB0aGlzIGNhc2UuCisJICovCisJaWYgKCFBbGxUYWJsZXN5bmNzUmVhZHkoKSkKKwkJcmV0dXJu IGZhbHNlOworCisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBUcnkgdG8gZ2V0IGEgZnJlZSBh cHBseSBiYWNrZ3JvdW5kIHdvcmtlci4KKyAqCisgKiBJZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUg d29ya2VyIGluIHRoZSBmcmVlIGxpc3QsIHRoZW4gdGFrZSBvbmUuIE90aGVyd2lzZSwKKyAqIHRy eSB0byBzdGFydCBhIG5ldyBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4gSWYgc3VjY2Vzc2Z1bCwg Y2FjaGUgaXQgaW4KKyAqIEFwcGx5Qmd3b3JrZXJzSGFzaCBrZXllZCBieSB0aGUgc3BlY2lmaWVk IHhpZC4KKyAqLworQXBwbHlCZ3dvcmtlclN0YXRlICoKK2FwcGx5X2Jnd29ya2VyX3N0YXJ0KFRy YW5zYWN0aW9uSWQgeGlkKQoreworCWJvb2wJCWZvdW5kOworCWludAkJCXNlcnZlcl92ZXJzaW9u OworCUFwcGx5Qmd3b3JrZXJTdGF0ZSAqd3N0YXRlOworCUFwcGx5Qmd3b3JrZXJFbnRyeSAqZW50 cnkgPSBOVUxMOworCisJaWYgKCFhcHBseV9iZ3dvcmtlcl9jYW5fc3RhcnQoeGlkKSkKKwkJcmV0 dXJuIE5VTEw7CisKKwkvKiBGaXJzdCB0aW1lIHRocm91Z2gsIGluaXRpYWxpemUgYXBwbHkgd29y a2VycyBoYXNodGFibGUgKi8KKwlpZiAoQXBwbHlCZ3dvcmtlcnNIYXNoID09IE5VTEwpCisJewor CQlIQVNIQ1RMCQljdGw7CisKKwkJTWVtU2V0KCZjdGwsIDAsIHNpemVvZihjdGwpKTsKKwkJY3Rs LmtleXNpemUgPSBzaXplb2YoVHJhbnNhY3Rpb25JZCk7CisJCWN0bC5lbnRyeXNpemUgPSBzaXpl b2YoQXBwbHlCZ3dvcmtlckVudHJ5KTsKKwkJY3RsLmhjeHQgPSBBcHBseUNvbnRleHQ7CisKKwkJ QXBwbHlCZ3dvcmtlcnNIYXNoID0gaGFzaF9jcmVhdGUoImxvZ2ljYWwgYXBwbHkgd29ya2VycyBo YXNoIiwgOCwgJmN0bCwKKwkJCQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNI X0NPTlRFWFQpOworCX0KKworCS8qIFRyeSB0byBnZXQgYSBmcmVlIGFwcGx5IGJhY2tncm91bmQg d29ya2VyICovCisJaWYgKGxpc3RfbGVuZ3RoKEFwcGx5Qmd3b3JrZXJzRnJlZUxpc3QpID4gMCkK Kwl7CisJCXdzdGF0ZSA9IChBcHBseUJnd29ya2VyU3RhdGUgKikgbGxhc3QoQXBwbHlCZ3dvcmtl cnNGcmVlTGlzdCk7CisJCUFzc2VydCh3c3RhdGUtPnNoYXJlZC0+c3RhdHVzID09IEFQUExZX0JH V09SS0VSX0ZJTklTSEVEKTsKKwkJQXBwbHlCZ3dvcmtlcnNGcmVlTGlzdCA9IGxpc3RfZGVsZXRl X2xhc3QoQXBwbHlCZ3dvcmtlcnNGcmVlTGlzdCk7CisJfQorCWVsc2UKKwl7CisJCXdzdGF0ZSA9 IGFwcGx5X2Jnd29ya2VyX3NldHVwKCk7CisKKwkJaWYgKHdzdGF0ZSA9PSBOVUxMKQorCQkJcmV0 dXJuIE5VTEw7CisJfQorCisJLyogQ3JlYXRlIGVudHJ5IGZvciByZXF1ZXN0ZWQgdHJhbnNhY3Rp b24gKi8KKwllbnRyeSA9IGhhc2hfc2VhcmNoKEFwcGx5Qmd3b3JrZXJzSGFzaCwgJnhpZCwgSEFT SF9FTlRFUiwgJmZvdW5kKTsKKwlpZiAoZm91bmQpCisJCWVsb2coRVJST1IsICJoYXNoIHRhYmxl IGNvcnJ1cHRlZCIpOworCisJLyogRmlsbCB1cCB0aGUgaGFzaCBlbnRyeSAqLworCXdzdGF0ZS0+ c2hhcmVkLT5zdGF0dXMgPSBBUFBMWV9CR1dPUktFUl9CVVNZOworCisJc2VydmVyX3ZlcnNpb24g PSB3YWxyY3Zfc2VydmVyX3ZlcnNpb24oTG9nUmVwV29ya2VyV2FsUmN2Q29ubik7CisJd3N0YXRl LT5zaGFyZWQtPnByb3RvX3ZlcnNpb24gPQorCQlzZXJ2ZXJfdmVyc2lvbiA+PSAxNjAwMDAgPyBM T0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05VTSA6CisJCXNlcnZlcl92 ZXJzaW9uID49IDE1MDAwMCA/IExPR0lDQUxSRVBfUFJPVE9fVFdPUEhBU0VfVkVSU0lPTl9OVU0g OgorCQlzZXJ2ZXJfdmVyc2lvbiA+PSAxNDAwMDAgPyBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9W RVJTSU9OX05VTSA6CisJCUxPR0lDQUxSRVBfUFJPVE9fVkVSU0lPTl9OVU07CisKKwl3c3RhdGUt PnNoYXJlZC0+c3RyZWFtX3hpZCA9IHhpZDsKKwllbnRyeS0+d3N0YXRlID0gd3N0YXRlOworCWVu dHJ5LT54aWQgPSB4aWQ7CisKKwlyZXR1cm4gd3N0YXRlOworfQorCisvKgorICogVHJ5IHRvIGxv b2sgdXAgd29ya2VyIGFzc2lnbmVkIGJlZm9yZSAoc2VlIGZ1bmN0aW9uIGFwcGx5X2Jnd29ya2Vy X2dldF9mcmVlKQorICogaW5zaWRlIEFwcGx5Qmd3b3JrZXJzSGFzaCBmb3IgcmVxdWVzdGVkIHhp ZC4KKyAqLworQXBwbHlCZ3dvcmtlclN0YXRlICoKK2FwcGx5X2Jnd29ya2VyX2ZpbmQoVHJhbnNh Y3Rpb25JZCB4aWQpCit7CisJYm9vbAkJZm91bmQ7CisJQXBwbHlCZ3dvcmtlckVudHJ5ICplbnRy eSA9IE5VTEw7CisKKwlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkpCisJCXJldHVybiBO VUxMOworCisJaWYgKEFwcGx5Qmd3b3JrZXJzSGFzaCA9PSBOVUxMKQorCQlyZXR1cm4gTlVMTDsK KworCS8qCisJICogRmluZCBlbnRyeSBmb3IgcmVxdWVzdGVkIHRyYW5zYWN0aW9uLgorCSAqLwor CWVudHJ5ID0gaGFzaF9zZWFyY2goQXBwbHlCZ3dvcmtlcnNIYXNoLCAmeGlkLCBIQVNIX0ZJTkQs ICZmb3VuZCk7CisJaWYgKGZvdW5kKQorCXsKKwkJY2hhciBzdGF0dXMgPSBlbnRyeS0+d3N0YXRl LT5zaGFyZWQtPnN0YXR1czsKKworCQkvKiBJZiBhbnkgd29ya2VycyAob3IgdGhlIHBvc3RtYXN0 ZXIpIGhhdmUgZGllZCwgd2UgaGF2ZSBmYWlsZWQuICovCisJCWlmIChzdGF0dXMgPT0gQVBQTFlf QkdXT1JLRVJfRVhJVCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVf T0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJiYWNrZ3Jv dW5kIHdvcmtlciAldSBmYWlsZWQgdG8gYXBwbHkgdHJhbnNhY3Rpb24gJXUiLAorCQkJCQkJCWVu dHJ5LT53c3RhdGUtPnNoYXJlZC0+d29ya2VyX2lkLAorCQkJCQkJCWVudHJ5LT53c3RhdGUtPnNo YXJlZC0+c3RyZWFtX3hpZCkpKTsKKworCQlBc3NlcnQoc3RhdHVzID09IEFQUExZX0JHV09SS0VS X0JVU1kpOworCisJCXJldHVybiBlbnRyeS0+d3N0YXRlOworCX0KKwllbHNlCisJCXJldHVybiBO VUxMOworfQorCisvKgorICogQWRkIHRoZSB3b3JrZXIgdG8gdGhlIGZyZWUgbGlzdCBhbmQgcmVt b3ZlIHRoZSBlbnRyeSBmcm9tIHRoZSBoYXNoIHRhYmxlLgorICovCit2b2lkCithcHBseV9iZ3dv cmtlcl9mcmVlKEFwcGx5Qmd3b3JrZXJTdGF0ZSAqd3N0YXRlKQoreworCU1lbW9yeUNvbnRleHQg b2xkY3R4OworCVRyYW5zYWN0aW9uSWQgeGlkID0gd3N0YXRlLT5zaGFyZWQtPnN0cmVhbV94aWQ7 CisKKwlBc3NlcnQod3N0YXRlLT5zaGFyZWQtPnN0YXR1cyA9PSBBUFBMWV9CR1dPUktFUl9GSU5J U0hFRCk7CisKKwlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsK KworCWhhc2hfc2VhcmNoKEFwcGx5Qmd3b3JrZXJzSGFzaCwgJnhpZCwgSEFTSF9SRU1PVkUsIE5V TEwpOworCisJZWxvZyhERUJVRzEsICJhZGRpbmcgZmluaXNoZWQgYXBwbHkgd29ya2VyICMldSBm b3IgeGlkICV1IHRvIHRoZSBmcmVlIGxpc3QiLAorCQkgd3N0YXRlLT5zaGFyZWQtPndvcmtlcl9p ZCwgd3N0YXRlLT5zaGFyZWQtPnN0cmVhbV94aWQpOworCisJQXBwbHlCZ3dvcmtlcnNGcmVlTGlz dCA9IGxhcHBlbmQoQXBwbHlCZ3dvcmtlcnNGcmVlTGlzdCwgd3N0YXRlKTsKKworCU1lbW9yeUNv bnRleHRTd2l0Y2hUbyhvbGRjdHgpOworfQorCisvKiBBcHBseSBCYWNrZ3JvdW5kIFdvcmtlciBt YWluIGxvb3AgKi8KK3N0YXRpYyB2b2lkCitMb2dpY2FsQXBwbHlCZ3dMb29wKHNobV9tcV9oYW5k bGUgKm1xaCwgdm9sYXRpbGUgQXBwbHlCZ3dvcmtlclNoYXJlZCAqc2hhcmVkKQoreworCXNobV9t cV9yZXN1bHQgc2htcV9yZXM7CisJUEdQUk9DCSAgICpyZWdpc3RyYW50OworCUVycm9yQ29udGV4 dENhbGxiYWNrIGVycmNhbGxiYWNrOworCisJcmVnaXN0cmFudCA9IEJhY2tlbmRQaWRHZXRQcm9j KE15Qmd3b3JrZXJFbnRyeS0+Ymd3X25vdGlmeV9waWQpOworCVNldExhdGNoKCZyZWdpc3RyYW50 LT5wcm9jTGF0Y2gpOworCisJLyoKKwkgKiBQdXNoIGFwcGx5IGVycm9yIGNvbnRleHQgY2FsbGJh Y2suIEZpZWxkcyB3aWxsIGJlIGZpbGxlZCBhcHBseWluZyBhCisJICogY2hhbmdlLgorCSAqLwor CWVycmNhbGxiYWNrLmNhbGxiYWNrID0gYXBwbHlfZXJyb3JfY2FsbGJhY2s7CisJZXJyY2FsbGJh Y2sucHJldmlvdXMgPSBlcnJvcl9jb250ZXh0X3N0YWNrOworCWVycm9yX2NvbnRleHRfc3RhY2sg PSAmZXJyY2FsbGJhY2s7CisKKwlmb3IgKDs7KQorCXsKKwkJdm9pZAkgICAqZGF0YTsKKwkJU2l6 ZQkJbGVuOworCQlpbnQJCQljOworCQlTdHJpbmdJbmZvRGF0YSBzOworCQlNZW1vcnlDb250ZXh0 IG9sZGN0eDsKKworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCS8qIEVuc3VyZSB3ZSBh cmUgcmVhZGluZyB0aGUgZGF0YSBpbnRvIG91ciBtZW1vcnkgY29udGV4dC4gKi8KKwkJb2xkY3R4 ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5TWVzc2FnZUNvbnRleHQpOworCisJCXNobXFf cmVzID0gc2htX21xX3JlY2VpdmUobXFoLCAmbGVuLCAmZGF0YSwgZmFsc2UpOworCisJCWlmIChz aG1xX3JlcyAhPSBTSE1fTVFfU1VDQ0VTUykKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJj b2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJy bXNnKCJsb3N0IGNvbm5lY3Rpb24gdG8gdGhlIG1haW4gYXBwbHkgd29ya2VyIikpKTsKKworCQlp ZiAobGVuID09IDApCisJCQlicmVhazsKKworCQlzLmN1cnNvciA9IDA7CisJCXMubWF4bGVuID0g LTE7CisJCXMuZGF0YSA9IChjaGFyICopIGRhdGE7CisJCXMubGVuID0gbGVuOworCisJCS8qCisJ CSAqIFdlIHVzZSBmaXJzdCBieXRlIG9mIG1lc3NhZ2UgZm9yIGFkZGl0aW9uYWwgY29tbXVuaWNh dGlvbiBiZXR3ZWVuCisJCSAqIG1haW4gTG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgYW5kIGFw cGx5IGJhY2tncm91bmQgd29ya2Vycywgc28gaWYKKwkJICogaXQgZGlmZmVycyBmcm9tICd3Jywg dGhlbiBwcm9jZXNzIGl0IGZpcnN0LgorCQkgKi8KKwkJYyA9IHBxX2dldG1zZ2J5dGUoJnMpOwor CQlzd2l0Y2ggKGMpCisJCXsKKwkJCS8qIEVuZCBtZXNzYWdlIG9mIHN0cmVhbWluZyBjaHVuayAq LworCQkJY2FzZSBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX1NUT1A6CisJCQkJZWxvZyhERUJVRzEs ICJbQXBwbHkgQkdXICMldV0gZW5kZWQgcHJvY2Vzc2luZyBzdHJlYW1pbmcgY2h1bmssIgorCQkJ CQkgIndhaXRpbmcgb24gc2htX21xX3JlY2VpdmUiLCBzaGFyZWQtPndvcmtlcl9pZCk7CisKKwkJ CQlpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IGZhbHNlOworCQkJCXBnc3RhdF9yZXBvcnRfYWN0 aXZpdHkoU1RBVEVfSURMRUlOVFJBTlNBQ1RJT04sIE5VTEwpOworCQkJCU1lbW9yeUNvbnRleHRT d2l0Y2hUbyhvbGRjdHgpOworCQkJCWNvbnRpbnVlOworCQkJY2FzZSAndyc6CisJCQkJYnJlYWs7 CisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJST1IsICJbQXBwbHkgQkdXICMldV0gdW5leHBlY3Rl ZCBtZXNzYWdlIFwiJWNcIiIsCisJCQkJCSBzaGFyZWQtPndvcmtlcl9pZCwgYyk7CisJCQkJYnJl YWs7CisJCX0KKworCQkvKgorCQkgKiBJZ25vcmUgc3RhdGlzdGljcyBmaWVsZHMgdGhhdCBoYXZl IGJlZW4gdXBkYXRlZCBieSB0aGUgbWFpbiBhcHBseQorCQkgKiB3b3JrZXIuCisJCSAqLworCQlz LmN1cnNvciArPSBTSVpFX1NUQVRTX01FU1NBR0U7CisKKwkJYXBwbHlfZGlzcGF0Y2goJnMpOwor CisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCQlNZW1vcnlDb250ZXh0UmVzZXQo QXBwbHlNZXNzYWdlQ29udGV4dCk7CisKKwkJaWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcpCisJCXsK KwkJCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsKKwkJCVByb2Nlc3NDb25maWdGaWxlKFBH Q19TSUdIVVApOworCQl9CisJfQorCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKFRvcE1lbW9yeUNv bnRleHQpOworCisJLyogUG9wIHRoZSBlcnJvciBjb250ZXh0IHN0YWNrICovCisJZXJyb3JfY29u dGV4dF9zdGFjayA9IGVycmNhbGxiYWNrLnByZXZpb3VzOworCisJZWxvZyhERUJVRzEsICJbQXBw bHkgQkdXICMldV0gZXhpdGluZyIsIHNoYXJlZC0+d29ya2VyX2lkKTsKKworCS8qIFNpZ25hbCBt YWluIHByb2Nlc3MgdGhhdCB3ZSBhcmUgZG9uZS4gKi8KKwlTZXRMYXRjaCgmcmVnaXN0cmFudC0+ cHJvY0xhdGNoKTsKK30KKworLyoKKyAqIFNldCB0aGUgZXhpdCBzdGF0dXMgc28gdGhhdCB0aGUg bWFpbiBhcHBseSB3b3JrZXIgY2FuIHJlYWxpemUgd2UgaGF2ZQorICogc2h1dGRvd24uCisgKi8K K3N0YXRpYyB2b2lkCithcHBseV9iZ3dvcmtlcl9zaHV0ZG93bihpbnQgY29kZSwgRGF0dW0gYXJn KQoreworCVNwaW5Mb2NrQWNxdWlyZSgmTXlQYXJhbGxlbFNoYXJlZC0+bXV0ZXgpOworCU15UGFy YWxsZWxTaGFyZWQtPnN0YXR1cyA9IEFQUExZX0JHV09SS0VSX0VYSVQ7CisJU3BpbkxvY2tSZWxl YXNlKCZNeVBhcmFsbGVsU2hhcmVkLT5tdXRleCk7CisKKwlkc21fZGV0YWNoKChkc21fc2VnbWVu dCAqKSBEYXR1bUdldFBvaW50ZXIoYXJnKSk7Cit9CisKKy8qCisgKiBBcHBseSBCYWNrZ3JvdW5k IFdvcmtlciBlbnRyeSBwb2ludAorICovCit2b2lkCitBcHBseUJnd29ya2VyTWFpbihEYXR1bSBt YWluX2FyZykKK3sKKwl2b2xhdGlsZSBBcHBseUJnd29ya2VyU2hhcmVkICpzaGFyZWQ7CisKKwlk c21faGFuZGxlCWhhbmRsZTsKKwlkc21fc2VnbWVudCAqc2VnOworCXNobV90b2MgICAgKnRvYzsK KwlzaG1fbXEJICAgKm1xOworCXNobV9tcV9oYW5kbGUgKm1xaDsKKwlNZW1vcnlDb250ZXh0IG9s ZGNvbnRleHQ7CisJUmVwT3JpZ2luSWQgb3JpZ2luaWQ7CisJaW50CQkJd29ya2VyX3Nsb3QgPSBE YXR1bUdldEludDMyKG1haW5fYXJnKTsKKwljaGFyCQlvcmlnaW5uYW1lW05BTUVEQVRBTEVOXTsK KworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhUb3BNZW1vcnlDb250ZXh0KTsKKworCS8qIEluaXQg dGhlIG1lbW9yeSBjb250ZXh0IGZvciB0aGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgdG8gd29y ayBpbi4gKi8KKwlBcHBseUNvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoVG9wTWVtb3J5 Q29udGV4dCwKKwkJCQkJCQkJCQkgIkFwcGx5Q29udGV4dCIsCisJCQkJCQkJCQkJIEFMTE9DU0VU X0RFRkFVTFRfU0laRVMpOworCisJLyoKKwkgKiBJbml0IHRoZSBBcHBseU1lc3NhZ2VDb250ZXh0 IHdoaWNoIHdlIGNsZWFuIHVwIGFmdGVyIGVhY2ggcmVwbGljYXRpb24KKwkgKiBwcm90b2NvbCBt ZXNzYWdlLgorCSAqLworCUFwcGx5TWVzc2FnZUNvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVh dGUoQXBwbHlDb250ZXh0LAorCQkJCQkJCQkJCQkJIkFwcGx5TWVzc2FnZUNvbnRleHQiLAorCQkJ CQkJCQkJCQkJQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CisKKwkvKiBTZXR1cCBzaWduYWwgaGFu ZGxpbmcgKi8KKwlwcXNpZ25hbChTSUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQp OworCXBxc2lnbmFsKFNJR1RFUk0sIGRpZSk7CisJQmFja2dyb3VuZFdvcmtlclVuYmxvY2tTaWdu YWxzKCk7CisKKwkvKgorCSAqIENvbm5lY3QgdG8gdGhlIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBz ZWdtZW50LgorCSAqCisJICogVGhlIGJhY2tlbmQgdGhhdCByZWdpc3RlcmVkIHRoaXMgd29ya2Vy IHBhc3NlZCB1cyB0aGUgSUQgb2YgYSBzaGFyZWQKKwkgKiBtZW1vcnkgc2VnbWVudCB0byB3aGlj aCB3ZSBtdXN0IGF0dGFjaCBmb3IgZnVydGhlciBpbnN0cnVjdGlvbnMuICBJbgorCSAqIG9yZGVy IHRvIGF0dGFjaCB0byBkeW5hbWljIHNoYXJlZCBtZW1vcnksIHdlIG5lZWQgYSByZXNvdXJjZSBv d25lci4KKwkgKiBPbmNlIHdlJ3ZlIG1hcHBlZCB0aGUgc2VnbWVudCBpbiBvdXIgYWRkcmVzcyBz cGFjZSwgYXR0YWNoIHRvIHRoZSB0YWJsZQorCSAqIG9mIGNvbnRlbnRzIHNvIHdlIGNhbiBsb2Nh dGUgdGhlIHZhcmlvdXMgZGF0YSBzdHJ1Y3R1cmVzIHdlJ2xsIG5lZWQgdG8KKwkgKiBmaW5kIHdp dGhpbiB0aGUgc2VnbWVudC4KKwkgKi8KKwlDdXJyZW50UmVzb3VyY2VPd25lciA9IFJlc291cmNl T3duZXJDcmVhdGUoTlVMTCwgIkxvZ2ljYWwgYXBwbHkgd29ya2VyIik7CisJbWVtY3B5KCZoYW5k bGUsIE15Qmd3b3JrZXJFbnRyeS0+Ymd3X2V4dHJhLCBzaXplb2YoZHNtX2hhbmRsZSkpOworCXNl ZyA9IGRzbV9hdHRhY2goaGFuZGxlKTsKKwlpZiAoc2VnID09IE5VTEwpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFU RSksCisJCQkJIGVycm1zZygidW5hYmxlIHRvIG1hcCBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2Vn bWVudCIpKSk7CisJdG9jID0gc2htX3RvY19hdHRhY2goUEdfTE9HSUNBTF9BUFBMWV9TSE1fTUFH SUMsIGRzbV9zZWdtZW50X2FkZHJlc3Moc2VnKSk7CisJaWYgKHRvYyA9PSBOVUxMKQorCQllcmVw b3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJ VEVfU1RBVEUpLAorCQkJCSBlcnJtc2coImJhZCBtYWdpYyBudW1iZXIgaW4gZHluYW1pYyBzaGFy ZWQgbWVtb3J5IHNlZ21lbnQiKSkpOworCisJYmVmb3JlX3NobWVtX2V4aXQoYXBwbHlfYmd3b3Jr ZXJfc2h1dGRvd24sIFBvaW50ZXJHZXREYXR1bShzZWcpKTsKKworCS8qIExvb2sgdXAgdGhlIHNo YXJlZCBpbmZvcm1hdGlvbi4gKi8KKwlzaGFyZWQgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIEFQUExZ X0JHV09SS0VSX0tFWV9TSEFSRUQsIGZhbHNlKTsKKwlNeVBhcmFsbGVsU2hhcmVkID0gc2hhcmVk OworCisJLyoKKwkgKiBBdHRhY2ggdG8gdGhlIG1lc3NhZ2UgcXVldWUuCisJICovCisJbXEgPSBz aG1fdG9jX2xvb2t1cCh0b2MsIEFQUExZX0JHV09SS0VSX0tFWV9NUSwgZmFsc2UpOworCXNobV9t cV9zZXRfcmVjZWl2ZXIobXEsIE15UHJvYyk7CisJbXFoID0gc2htX21xX2F0dGFjaChtcSwgc2Vn LCBOVUxMKTsKKworCS8qIFJ1biBhcyByZXBsaWNhIHNlc3Npb24gcmVwbGljYXRpb24gcm9sZS4g Ki8KKwlTZXRDb25maWdPcHRpb24oInNlc3Npb25fcmVwbGljYXRpb25fcm9sZSIsICJyZXBsaWNh IiwKKwkJCQkJUEdDX1NVU0VULCBQR0NfU19PVkVSUklERSk7CisKKwkvKgorCSAqIE5vdywgd2Ug aGF2ZSBpbml0aWFsaXplZCBEU00uIEF0dGFjaCB0byBzbG90LgorCSAqLworCWxvZ2ljYWxyZXBf d29ya2VyX2F0dGFjaCh3b3JrZXJfc2xvdCk7CisKKwkvKiBDb25uZWN0IHRvIG91ciBkYXRhYmFz ZS4gKi8KKwlCYWNrZ3JvdW5kV29ya2VySW5pdGlhbGl6ZUNvbm5lY3Rpb25CeU9pZChNeUxvZ2lj YWxSZXBXb3JrZXItPmRiaWQsCisJCQkJCQkJCQkJCSAgTXlMb2dpY2FsUmVwV29ya2VyLT51c2Vy aWQsCisJCQkJCQkJCQkJCSAgMCk7CisKKwkvKgorCSAqIFNldCBhbHdheXMtc2VjdXJlIHNlYXJj aCBwYXRoLCBzbyBtYWxpY2lvdXMgdXNlcnMgY2FuJ3QgcmVkaXJlY3QgdXNlcgorCSAqIGNvZGUg KGUuZy4gcGdfaW5kZXguaW5kZXhwcnMpLgorCSAqLworCVNldENvbmZpZ09wdGlvbigic2VhcmNo X3BhdGgiLCAiIiwgUEdDX1NVU0VULCBQR0NfU19PVkVSUklERSk7CisKKwkvKgorCSAqIFNldCB0 aGUgY2xpZW50IGVuY29kaW5nIHRvIHRoZSBkYXRhYmFzZSBlbmNvZGluZywgc2luY2UgdGhhdCBp cyB3aGF0CisJICogdGhlIGxlYWRlciB3aWxsIGV4cGVjdC4KKwkgKi8KKwlTZXRDbGllbnRFbmNv ZGluZyhHZXREYXRhYmFzZUVuY29kaW5nKCkpOworCisJc3RyZWFtX3hpZCA9IHNoYXJlZC0+c3Ry ZWFtX3hpZDsKKworCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJb2xkY29udGV4dCA9IE1l bW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCisJTXlTdWJzY3JpcHRpb24gPSBH ZXRTdWJzY3JpcHRpb24oTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgdHJ1ZSk7CisJaWYgKCFN eVN1YnNjcmlwdGlvbikKKwl7CisJCWVyZXBvcnQoTE9HLAorCQkJCShlcnJtc2coImxvZ2ljYWwg cmVwbGljYXRpb24gYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gJXUgd2lsbCBub3QgIgor CQkJCQkJInN0YXJ0IGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlvbiB3YXMgcmVtb3ZlZCBkdXJpbmcg c3RhcnR1cCIsCisJCQkJCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkKSkpOworCQlwcm9jX2V4 aXQoMCk7CisJfQorCisJTXlTdWJzY3JpcHRpb25WYWxpZCA9IHRydWU7CisJTWVtb3J5Q29udGV4 dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCisJLyogU2V0dXAgc3luY2hyb25vdXMgY29tbWl0IGFj Y29yZGluZyB0byB0aGUgdXNlcidzIHdpc2hlcyAqLworCVNldENvbmZpZ09wdGlvbigic3luY2hy b25vdXNfY29tbWl0IiwgTXlTdWJzY3JpcHRpb24tPnN5bmNjb21taXQsCisJCQkJCVBHQ19CQUNL RU5ELCBQR0NfU19PVkVSUklERSk7CisKKwkvKiBLZWVwIHVzIGluZm9ybWVkIGFib3V0IHN1YnNj cmlwdGlvbiBjaGFuZ2VzLiAqLworCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKFNVQlND UklQVElPTk9JRCwKKwkJCQkJCQkJICBzdWJzY3JpcHRpb25fY2hhbmdlX2NiLAorCQkJCQkJCQkg IChEYXR1bSkgMCk7CisKKwlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCS8qIFNldHVw IHJlcGxpY2F0aW9uIG9yaWdpbiB0cmFja2luZy4gKi8KKwlTdGFydFRyYW5zYWN0aW9uQ29tbWFu ZCgpOworCXNucHJpbnRmKG9yaWdpbm5hbWUsIHNpemVvZihvcmlnaW5uYW1lKSwgInBnXyV1Iiwg TXlTdWJzY3JpcHRpb24tPm9pZCk7CisJb3JpZ2luaWQgPSByZXBsb3JpZ2luX2J5X25hbWUob3Jp Z2lubmFtZSwgdHJ1ZSk7CisJaWYgKCFPaWRJc1ZhbGlkKG9yaWdpbmlkKSkKKwkJb3JpZ2luaWQg PSByZXBsb3JpZ2luX2NyZWF0ZShvcmlnaW5uYW1lKTsKKworCS8qCisJICogVGhlIGFwcGx5IGJh Y2tncm91bmQgd29ya2VyIGRvZXNuJ3QgbmVlZCB0byBtb25vcG9saXplIHRoaXMgcmVwbGljYXRp b24KKwkgKiBvcmlnaW4gd2hpY2ggd2FzIGFscmVhZHkgYWNxdWlyZWQgYnkgaXRzIGxlYWRlciBw cm9jZXNzLgorCSAqLworCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCwgZmFsc2Up OworCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmlnaW5pZDsKKwlDb21taXRUcmFuc2Fj dGlvbkNvbW1hbmQoKTsKKworCS8qCisJICogQWxsb2NhdGUgdGhlIG9yaWdpbiBuYW1lIGluIGxv bmctbGl2ZWQgY29udGV4dCBmb3IgZXJyb3IgY29udGV4dAorCSAqIG1lc3NhZ2UuCisJICovCisJ YXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnLm9yaWdpbl9uYW1lID0gTWVtb3J5Q29udGV4dFN0cmR1 cChBcHBseUNvbnRleHQsCisJCQkJCQkJCQkJCQkJCQkgICBvcmlnaW5uYW1lKTsKKworCWVsb2co REVCVUcxLCAiW0FwcGx5IEJHVyAjJXVdIHN0YXJ0ZWQiLCBzaGFyZWQtPndvcmtlcl9pZCk7CisK KwlMb2dpY2FsQXBwbHlCZ3dMb29wKG1xaCwgc2hhcmVkKTsKKworCS8qCisJICogV2UncmUgZG9u ZS4gIEV4cGxpY2l0bHkgZGV0YWNoIHRoZSBzaGFyZWQgbWVtb3J5IHNlZ21lbnQgc28gdGhhdCB3 ZQorCSAqIGRvbid0IGdldCBhIHJlc291cmNlIGxlYWsgd2FybmluZyBhdCBjb21taXQgdGltZS4g IFRoaXMgd2lsbCBmaXJlIGFueQorCSAqIG9uX2RzbV9kZXRhY2ggY2FsbGJhY2tzIHdlJ3ZlIHJl Z2lzdGVyZWQsIGFzIHdlbGwuICBPbmNlIHRoYXQncyBkb25lLAorCSAqIHdlIGNhbiBnbyBhaGVh ZCBhbmQgZXhpdC4KKwkgKi8KKwlkc21fZGV0YWNoKHNlZyk7CisJcHJvY19leGl0KDApOworfQor CisvKgorICogU2V0IHVwIGEgZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNlZ21lbnQuCisgKgorICog V2Ugc2V0IHVwIGEgY29udHJvbCByZWdpb24gdGhhdCBjb250YWlucyBhIEFwcGx5Qmd3b3JrZXJT aGFyZWQsCisgKiBwbHVzIG9uZSByZWdpb24gcGVyIG1lc3NhZ2UgcXVldWUuIFRoZXJlIGFyZSBh cyBtYW55IG1lc3NhZ2UgcXVldWVzIGFzCisgKiB0aGUgbnVtYmVyIG9mIHdvcmtlcnMuCisgKi8K K3N0YXRpYyB2b2lkCithcHBseV9iZ3dvcmtlcl9zZXR1cF9kc20oQXBwbHlCZ3dvcmtlclN0YXRl ICp3c3RhdGUpCit7CisJc2htX3RvY19lc3RpbWF0b3IgZTsKKwlTaXplCQlzZWdzaXplOworCWRz bV9zZWdtZW50ICpzZWc7CisJc2htX3RvYyAgICAqdG9jOworCUFwcGx5Qmd3b3JrZXJTaGFyZWQg KnNoYXJlZDsKKwlzaG1fbXEJICAgKm1xOworCWludDY0CQlxdWV1ZV9zaXplID0gRFNNX1FVRVVF X1NJWkU7CisJaW50CQkJc2VydmVyX3ZlcnNpb247CisKKwkvKgorCSAqIEVzdGltYXRlIGhvdyBt dWNoIHNoYXJlZCBtZW1vcnkgd2UgbmVlZC4KKwkgKgorCSAqIEJlY2F1c2UgdGhlIFRPQyBtYWNo aW5lcnkgbWF5IGNob29zZSB0byBpbnNlcnQgcGFkZGluZyBvZiBvZGRseS1zaXplZAorCSAqIHJl cXVlc3RzLCB3ZSBtdXN0IGVzdGltYXRlIGVhY2ggY2h1bmsgc2VwYXJhdGVseS4KKwkgKgorCSAq IFdlIG5lZWQgb25lIGtleSB0byByZWdpc3RlciB0aGUgbG9jYXRpb24gb2YgdGhlIGhlYWRlciwg YW5kIHdlIG5lZWQKKwkgKiBhbm90aGVyIGtleSB0byB0cmFjayB0aGUgbG9jYXRpb24gb2YgdGhl IG1lc3NhZ2UgcXVldWUuCisJICovCisJc2htX3RvY19pbml0aWFsaXplX2VzdGltYXRvcigmZSk7 CisJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmZSwgc2l6ZW9mKEFwcGx5Qmd3b3JrZXJTaGFyZWQp KTsKKwlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZlLCAoU2l6ZSkgcXVldWVfc2l6ZSk7CisKKwlz aG1fdG9jX2VzdGltYXRlX2tleXMoJmUsIDEgKyAxKTsKKwlzZWdzaXplID0gc2htX3RvY19lc3Rp bWF0ZSgmZSk7CisKKwkvKiBDcmVhdGUgdGhlIHNoYXJlZCBtZW1vcnkgc2VnbWVudCBhbmQgZXN0 YWJsaXNoIGEgdGFibGUgb2YgY29udGVudHMuICovCisJc2VnID0gZHNtX2NyZWF0ZShzaG1fdG9j X2VzdGltYXRlKCZlKSwgMCk7CisJdG9jID0gc2htX3RvY19jcmVhdGUoUEdfTE9HSUNBTF9BUFBM WV9TSE1fTUFHSUMsIGRzbV9zZWdtZW50X2FkZHJlc3Moc2VnKSwKKwkJCQkJCSBzZWdzaXplKTsK KworCS8qIFNldCB1cCB0aGUgaGVhZGVyIHJlZ2lvbi4gKi8KKwlzaGFyZWQgPSBzaG1fdG9jX2Fs bG9jYXRlKHRvYywgc2l6ZW9mKEFwcGx5Qmd3b3JrZXJTaGFyZWQpKTsKKwlTcGluTG9ja0luaXQo JnNoYXJlZC0+bXV0ZXgpOworCXNoYXJlZC0+c3RhdHVzID0gQVBQTFlfQkdXT1JLRVJfQlVTWTsK KworCXNlcnZlcl92ZXJzaW9uID0gd2FscmN2X3NlcnZlcl92ZXJzaW9uKExvZ1JlcFdvcmtlcldh bFJjdkNvbm4pOworCXNoYXJlZC0+cHJvdG9fdmVyc2lvbiA9CisJCXNlcnZlcl92ZXJzaW9uID49 IDE2MDAwMCA/IExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVNIDoK KwkJc2VydmVyX3ZlcnNpb24gPj0gMTUwMDAwID8gTE9HSUNBTFJFUF9QUk9UT19UV09QSEFTRV9W RVJTSU9OX05VTSA6CisJCXNlcnZlcl92ZXJzaW9uID49IDE0MDAwMCA/IExPR0lDQUxSRVBfUFJP VE9fU1RSRUFNX1ZFUlNJT05fTlVNIDoKKwkJTE9HSUNBTFJFUF9QUk9UT19WRVJTSU9OX05VTTsK KworCXNoYXJlZC0+c3RyZWFtX3hpZCA9IHN0cmVhbV94aWQ7CisJc2hhcmVkLT53b3JrZXJfaWQg PSBsaXN0X2xlbmd0aChBcHBseUJnd29ya2Vyc0xpc3QpICsgMTsKKworCXNobV90b2NfaW5zZXJ0 KHRvYywgQVBQTFlfQkdXT1JLRVJfS0VZX1NIQVJFRCwgc2hhcmVkKTsKKworCS8qIFNldCB1cCBt ZXNzYWdlIHF1ZXVlIGZvciB0aGUgd29ya2VyLiAqLworCW1xID0gc2htX21xX2NyZWF0ZShzaG1f dG9jX2FsbG9jYXRlKHRvYywgKFNpemUpIHF1ZXVlX3NpemUpLAorCQkJCQkgICAoU2l6ZSkgcXVl dWVfc2l6ZSk7CisJc2htX3RvY19pbnNlcnQodG9jLCBBUFBMWV9CR1dPUktFUl9LRVlfTVEsIG1x KTsKKwlzaG1fbXFfc2V0X3NlbmRlcihtcSwgTXlQcm9jKTsKKworCS8qIEF0dGFjaCB0aGUgcXVl dWUuICovCisJd3N0YXRlLT5tcV9oYW5kbGUgPSBzaG1fbXFfYXR0YWNoKG1xLCBzZWcsIE5VTEwp OworCisJLyogUmV0dXJuIHJlc3VsdHMgdG8gY2FsbGVyLiAqLworCXdzdGF0ZS0+ZHNtX3NlZyA9 IHNlZzsKKwl3c3RhdGUtPnNoYXJlZCA9IHNoYXJlZDsKK30KKworLyoKKyAqIFN0YXJ0IGFwcGx5 IGJhY2tncm91bmQgd29ya2VyIHByb2Nlc3MgYW5kIGFsbG9jYXRlIHNoYXJlZCBtZW1vcnkgZm9y IGl0LgorICovCitzdGF0aWMgQXBwbHlCZ3dvcmtlclN0YXRlICoKK2FwcGx5X2Jnd29ya2VyX3Nl dHVwKHZvaWQpCit7CisJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OworCWJvb2wJCWxhdW5jaGVk OworCUFwcGx5Qmd3b3JrZXJTdGF0ZSAqd3N0YXRlOworCWludAkJCW5hcHBseXdvcmtlcnM7CisK KwllbG9nKERFQlVHMSwgInNldHRpbmcgdXAgYXBwbHkgd29ya2VyICMldSIsIGxpc3RfbGVuZ3Ro KEFwcGx5Qmd3b3JrZXJzTGlzdCkgKyAxKTsKKworCS8qIENoZWNrIGlmIHRoZXJlIGFyZSBmcmVl IHdvcmtlciBzbG90KHMpICovCisJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywg TFdfU0hBUkVEKTsKKwluYXBwbHl3b3JrZXJzID0gbG9naWNhbHJlcF9hcHBseV9iZ3dvcmtlcl9j b3VudChNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkKTsKKwlMV0xvY2tSZWxlYXNlKExvZ2ljYWxS ZXBXb3JrZXJMb2NrKTsKKwlpZiAobmFwcGx5d29ya2VycyA+PSBtYXhfYXBwbHlfYmd3b3JrZXJz X3Blcl9zdWJzY3JpcHRpb24pCisJCXJldHVybiBOVUxMOworCisJb2xkY29udGV4dCA9IE1lbW9y eUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCisJd3N0YXRlID0gKEFwcGx5Qmd3b3Jr ZXJTdGF0ZSAqKSBwYWxsb2MwKHNpemVvZihBcHBseUJnd29ya2VyU3RhdGUpKTsKKworCS8qIFNl dHVwIHNoYXJlZCBtZW1vcnkgKi8KKwlhcHBseV9iZ3dvcmtlcl9zZXR1cF9kc20od3N0YXRlKTsK KworCWxhdW5jaGVkID0gbG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKE15TG9naWNhbFJlcFdvcmtl ci0+ZGJpZCwKKwkJCQkJCQkJCQlNeVN1YnNjcmlwdGlvbi0+b2lkLAorCQkJCQkJCQkJCU15U3Vi c2NyaXB0aW9uLT5uYW1lLAorCQkJCQkJCQkJCU15TG9naWNhbFJlcFdvcmtlci0+dXNlcmlkLAor CQkJCQkJCQkJCUludmFsaWRPaWQsCisJCQkJCQkJCQkJZHNtX3NlZ21lbnRfaGFuZGxlKHdzdGF0 ZS0+ZHNtX3NlZykpOworCisJaWYgKGxhdW5jaGVkKQorCQlBcHBseUJnd29ya2Vyc0xpc3QgPSBs YXBwZW5kKEFwcGx5Qmd3b3JrZXJzTGlzdCwgd3N0YXRlKTsKKwllbHNlCisJeworCQlkc21fZGV0 YWNoKHdzdGF0ZS0+ZHNtX3NlZyk7CisJCXdzdGF0ZS0+ZHNtX3NlZyA9IE5VTEw7CisKKwkJcGZy ZWUod3N0YXRlKTsKKwkJd3N0YXRlID0gTlVMTDsKKwl9CisKKwlNZW1vcnlDb250ZXh0U3dpdGNo VG8ob2xkY29udGV4dCk7CisKKwlyZXR1cm4gd3N0YXRlOworfQorCisvKgorICogU2VuZCB0aGUg ZGF0YSB0byB0aGUgc3BlY2lmaWVkIGFwcGx5IGJhY2tncm91bmQgd29ya2VyIHZpYSBzaGFyZWQt bWVtb3J5IHF1ZXVlLgorICovCit2b2lkCithcHBseV9iZ3dvcmtlcl9zZW5kX2RhdGEoQXBwbHlC Z3dvcmtlclN0YXRlICp3c3RhdGUsIFNpemUgbmJ5dGVzLCBjb25zdCB2b2lkICpkYXRhKQorewor CXNobV9tcV9yZXN1bHQgcmVzdWx0OworCisJcmVzdWx0ID0gc2htX21xX3NlbmQod3N0YXRlLT5t cV9oYW5kbGUsIG5ieXRlcywgZGF0YSwgZmFsc2UsIHRydWUpOworCisJaWYgKHJlc3VsdCAhPSBT SE1fTVFfU1VDQ0VTUykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09C SkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJjb3VsZCBub3Qg c2VuZCBkYXRhIHRvIHNoYXJlZC1tZW1vcnkgcXVldWUiKSkpOworfQorCisvKgorICogV2FpdCB1 bnRpbCB0aGUgc3RhdHVzIG9mIGFwcGx5IGJhY2tncm91bmQgd29ya2VyIHJlYWNoZXMgdGhlCisg KiAnd2FpdF9mb3Jfc3RhdHVzJworICovCit2b2lkCithcHBseV9iZ3dvcmtlcl93YWl0X2ZvcihB cHBseUJnd29ya2VyU3RhdGUgKndzdGF0ZSwKKwkJCQkJCUFwcGx5Qmd3b3JrZXJTdGF0dXMgd2Fp dF9mb3Jfc3RhdHVzKQoreworCWZvciAoOzspCisJeworCQljaGFyCQlzdGF0dXM7CisKKwkJU3Bp bkxvY2tBY3F1aXJlKCZ3c3RhdGUtPnNoYXJlZC0+bXV0ZXgpOworCQlzdGF0dXMgPSB3c3RhdGUt PnNoYXJlZC0+c3RhdHVzOworCQlTcGluTG9ja1JlbGVhc2UoJndzdGF0ZS0+c2hhcmVkLT5tdXRl eCk7CisKKwkJLyogRG9uZSBpZiBhbHJlYWR5IGluIGNvcnJlY3Qgc3RhdHVzLiAqLworCQlpZiAo c3RhdHVzID09IHdhaXRfZm9yX3N0YXR1cykKKwkJCWJyZWFrOworCisJCS8qIElmIGFueSB3b3Jr ZXJzIGhhdmUgZGllZCwgd2UgaGF2ZSBmYWlsZWQuICovCisJCWlmIChzdGF0dXMgPT0gQVBQTFlf QkdXT1JLRVJfRVhJVCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVf T0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJhcHBseSBi YWNrZ3JvdW5kIHdvcmtlciAldSBmYWlsZWQgdG8gYXBwbHkgdHJhbnNhY3Rpb24gJXUiLAorCQkJ CQkJCXdzdGF0ZS0+c2hhcmVkLT53b3JrZXJfaWQsIHdzdGF0ZS0+c2hhcmVkLT5zdHJlYW1feGlk KSkpOworCisJCS8qIFdhaXQgdG8gYmUgc2lnbmFsbGVkLiAqLworCQlXYWl0TGF0Y2goTXlMYXRj aCwgV0xfTEFUQ0hfU0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKKwkJCQkgIFdBSVRfRVZF TlRfTE9HSUNBTF9BUFBMWV9CR1dPUktFUl9TVEFURV9DSEFOR0UpOworCisJCS8qIFJlc2V0IHRo ZSBsYXRjaCBzbyB3ZSBkb24ndCBzcGluLiAqLworCQlSZXNldExhdGNoKE15TGF0Y2gpOworCisJ CS8qIEFuIGludGVycnVwdCBtYXkgaGF2ZSBvY2N1cnJlZCB3aGlsZSB3ZSB3ZXJlIHdhaXRpbmcu ICovCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJfQorfQorCisvKgorICogQ2hlY2sgdGhl IHN0YXR1cyBvZiB3b3JrZXJzIGFuZCByZXBvcnQgYW4gZXJyb3IgaWYgYW55IGFwcGx5IGJhY2tn cm91bmQKKyAqIHdvcmtlciBoYXMgZXhpdGVkIHVuZXhwZWN0ZWRseS4KKyAqLwordm9pZAorYXBw bHlfYmd3b3JrZXJfY2hlY2tfc3RhdHVzKHZvaWQpCit7CisJTGlzdENlbGwgICAqbGM7CisKKwlp ZiAoYW1fYXBwbHlfYmd3b3JrZXIoKSB8fCBNeVN1YnNjcmlwdGlvbi0+c3RyZWFtICE9IFNVQlNU UkVBTV9QQVJBTExFTCkKKwkJcmV0dXJuOworCisJZm9yZWFjaChsYywgQXBwbHlCZ3dvcmtlcnNM aXN0KQorCXsKKwkJQXBwbHlCZ3dvcmtlclN0YXRlICp3c3RhdGUgPSAoQXBwbHlCZ3dvcmtlclN0 YXRlICopIGxmaXJzdChsYyk7CisKKwkJLyoKKwkJICogV2UgZG9uJ3QgbG9jayBoZXJlIGFzIGlu IHRoZSB3b3JzdCBjYXNlIHdlIHdpbGwganVzdCBkZXRlY3QgdGhlCisJCSAqIGZhaWx1cmUgb2Yg d29ya2VyIGEgYml0IGxhdGVyLgorCQkgKi8KKwkJaWYgKHdzdGF0ZS0+c2hhcmVkLT5zdGF0dXMg PT0gQVBQTFlfQkdXT1JLRVJfRVhJVCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2Rl KEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNn KCJhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciAldSBleGl0ZWQgdW5leHBlY3RlZGx5IiwKKwkJCQkJ CQl3c3RhdGUtPnNoYXJlZC0+d29ya2VyX2lkKSkpOworCX0KKworCS8qCisJICogRXhpdCBpZiBh bnkgcmVsYXRpb24gaXMgbm90IGluIHRoZSBSRUFEWSBzdGF0ZSBhbmQgaWYgYW55IHdvcmtlciBp cworCSAqIGhhbmRsaW5nIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gYXQgdGhlIHNhbWUgdGlt ZS4gQmVjYXVzZSBmb3IKKwkgKiBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIHRoYXQgaXMgYmVpbmcg YXBwbGllZCBpbiBhcHBseSBiYWNrZ3JvdW5kCisJICogd29ya2VyLCB3ZSBjYW5ub3QgZGVjaWRl IHdoZXRoZXIgdG8gYXBwbHkgdGhlIGNoYW5nZSBmb3IgYSByZWxhdGlvbgorCSAqIHRoYXQgaXMg bm90IGluIHRoZSBSRUFEWSBzdGF0ZSAoc2VlIHNob3VsZF9hcHBseV9jaGFuZ2VzX2Zvcl9yZWwp IGFzIHdlCisJICogd29uJ3Qga25vdyByZW1vdGVfZmluYWxfbHNuIGJ5IHRoYXQgdGltZS4KKwkg Ki8KKwlpZiAobGlzdF9sZW5ndGgoQXBwbHlCZ3dvcmtlcnNGcmVlTGlzdCkgIT0gbGlzdF9sZW5n dGgoQXBwbHlCZ3dvcmtlcnNMaXN0KSAmJgorCQkhQWxsVGFibGVzeW5jc1JlYWR5KCkpCisJewor CQllcmVwb3J0KExPRywKKwkJCQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdv cmtlcnMgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCByZXN0YXJ0IiwKKwkJCQkJCU15U3Vi c2NyaXB0aW9uLT5uYW1lKSwKKwkJCQkgZXJyZGV0YWlsKCJDYW5ub3QgaGFuZGxlIHN0cmVhbWVk IHJlcGxpY2F0aW9uIHRyYW5zYWN0aW9uIGJ5IGFwcGx5ICIKKwkJCQkJCSAgICJiYWNrZ3JvdW5k IHdvcmtlcnMgdW50aWwgYWxsIHRhYmxlcyBhcmUgc3luY2hyb25pemVkIikpKTsKKworCQlwcm9j X2V4aXQoMCk7CisJfQorfQorCisvKiBTZXQgdGhlIGFwcGx5IGJhY2tncm91bmQgd29ya2VyIHN0 YXR1cyAqLwordm9pZAorYXBwbHlfYmd3b3JrZXJfc2V0X3N0YXR1cyhBcHBseUJnd29ya2VyU3Rh dHVzIHN0YXR1cykKK3sKKwlpZiAoIWFtX2FwcGx5X2Jnd29ya2VyKCkpCisJCXJldHVybjsKKwor CWVsb2coREVCVUcxLCAiW0FwcGx5IEJHVyAjJXVdIHNldCBzdGF0dXMgdG8gJWQiLCBNeVBhcmFs bGVsU2hhcmVkLT53b3JrZXJfaWQsIHN0YXR1cyk7CisKKwlTcGluTG9ja0FjcXVpcmUoJk15UGFy YWxsZWxTaGFyZWQtPm11dGV4KTsKKwlNeVBhcmFsbGVsU2hhcmVkLT5zdGF0dXMgPSBzdGF0dXM7 CisJU3BpbkxvY2tSZWxlYXNlKCZNeVBhcmFsbGVsU2hhcmVkLT5tdXRleCk7Cit9CisKKy8qCisg KiBEZWZpbmUgYSBzYXZlcG9pbnQgZm9yIGEgc3VieGFjdCBpbiBhcHBseSBiYWNrZ3JvdW5kIHdv cmtlciBpZiBuZWVkZWQuCisgKgorICogSW5zaWRlIGFwcGx5IGJhY2tncm91bmQgd29ya2VyIHdl IGNhbiBmaWd1cmUgb3V0IHRoYXQgbmV3IHN1YnRyYW5zYWN0aW9uIHdhcworICogc3RhcnRlZCBp ZiBuZXcgY2hhbmdlIGFycml2ZWQgd2l0aCBkaWZmZXJlbnQgeGlkLiBJbiB0aGF0IGNhc2Ugd2Ug Y2FuIGRlZmluZQorICogbmFtZWQgc2F2ZXBvaW50LCBzbyB0aGF0IHdlIHdlcmUgYWJsZSB0byBj b21taXQvcm9sbGJhY2sgaXQgc2VwYXJhdGVseQorICogbGF0ZXIuCisgKiBTcGVjaWFsIGNhc2Ug aXMgaWYgdGhlIGZpcnN0IGNoYW5nZSBjb21lcyBmcm9tIHN1YnRyYW5zYWN0aW9uLCB0aGVuCisg KiB3ZSBjaGVjayB0aGF0IGN1cnJlbnRfeGlkIGRpZmZlcnMgZnJvbSBzdHJlYW1feGlkLgorICov Cit2b2lkCithcHBseV9iZ3dvcmtlcl9zdWJ4YWN0X2luZm9fYWRkKFRyYW5zYWN0aW9uSWQgY3Vy cmVudF94aWQpCit7CisJaWYgKGN1cnJlbnRfeGlkICE9IHN0cmVhbV94aWQgJiYKKwkJIWxpc3Rf bWVtYmVyX2ludChzdWJ4YWN0bGlzdCwgKGludCkgY3VycmVudF94aWQpKQorCXsKKwkJTWVtb3J5 Q29udGV4dCBvbGRjdHg7CisJCWNoYXIJCXNwbmFtZVtNQVhQR1BBVEhdOworCisJCXNucHJpbnRm KHNwbmFtZSwgTUFYUEdQQVRILCAic2F2ZXBvaW50X2Zvcl94aWRfJXUiLCBjdXJyZW50X3hpZCk7 CisKKwkJZWxvZyhERUJVRzEsICJbQXBwbHkgQkdXICMldV0gZGVmaW5pbmcgc2F2ZXBvaW50ICVz IiwKKwkJCSBNeVBhcmFsbGVsU2hhcmVkLT53b3JrZXJfaWQsIHNwbmFtZSk7CisKKwkJRGVmaW5l U2F2ZXBvaW50KHNwbmFtZSk7CisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCW9s ZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCQlzdWJ4YWN0bGlz dCA9IGxhcHBlbmRfaW50KHN1YnhhY3RsaXN0LCAoaW50KSBjdXJyZW50X3hpZCk7CisJCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2RlY29kZS5jCmluZGV4IGM1YzZhMmJhNjguLmQ0ZDUwOTNhMGIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKKysrIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwpAQCAtNjUxLDkgKzY1MSwxMCBAQCBEZWNv ZGVDb21taXQoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpi dWYsCiAJewogCQlmb3IgKGkgPSAwOyBpIDwgcGFyc2VkLT5uc3VieGFjdHM7IGkrKykKIAkJewot CQkJUmVvcmRlckJ1ZmZlckZvcmdldChjdHgtPnJlb3JkZXIsIHBhcnNlZC0+c3VieGFjdHNbaV0s IGJ1Zi0+b3JpZ3B0cik7CisJCQlSZW9yZGVyQnVmZmVyRm9yZ2V0KGN0eC0+cmVvcmRlciwgcGFy c2VkLT5zdWJ4YWN0c1tpXSwgYnVmLT5vcmlncHRyLAorCQkJCQkJCQljb21taXRfdGltZSk7CiAJ CX0KLQkJUmVvcmRlckJ1ZmZlckZvcmdldChjdHgtPnJlb3JkZXIsIHhpZCwgYnVmLT5vcmlncHRy KTsKKwkJUmVvcmRlckJ1ZmZlckZvcmdldChjdHgtPnJlb3JkZXIsIHhpZCwgYnVmLT5vcmlncHRy LCBjb21taXRfdGltZSk7CiAKIAkJcmV0dXJuOwogCX0KQEAgLTgyMSwxMCArODIyLDExIEBAIERl Y29kZUFib3J0KExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAq YnVmLAogCQlmb3IgKGkgPSAwOyBpIDwgcGFyc2VkLT5uc3VieGFjdHM7IGkrKykKIAkJewogCQkJ UmVvcmRlckJ1ZmZlckFib3J0KGN0eC0+cmVvcmRlciwgcGFyc2VkLT5zdWJ4YWN0c1tpXSwKLQkJ CQkJCQkgICBidWYtPnJlY29yZC0+RW5kUmVjUHRyKTsKKwkJCQkJCQkgICBidWYtPnJlY29yZC0+ RW5kUmVjUHRyLCBhYm9ydF90aW1lKTsKIAkJfQogCi0JCVJlb3JkZXJCdWZmZXJBYm9ydChjdHgt PnJlb3JkZXIsIHhpZCwgYnVmLT5yZWNvcmQtPkVuZFJlY1B0cik7CisJCVJlb3JkZXJCdWZmZXJB Ym9ydChjdHgtPnJlb3JkZXIsIHhpZCwgYnVmLT5yZWNvcmQtPkVuZFJlY1B0ciwKKwkJCQkJCSAg IGFib3J0X3RpbWUpOwogCX0KIAogCS8qIHVwZGF0ZSB0aGUgZGVjb2Rpbmcgc3RhdHMgKi8KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwppbmRleCAzYmJkNTIyNzI0 Li5kYjQwZjVkZjZiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L2xhdW5jaGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hl ci5jCkBAIC01NCw2ICs1NCw3IEBACiAKIGludAkJCW1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dv cmtlcnMgPSA0OwogaW50CQkJbWF4X3N5bmNfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uID0gMjsK K2ludAkJCW1heF9hcHBseV9iZ3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiA9IDI7CiAKIExvZ2lj YWxSZXBXb3JrZXIgKk15TG9naWNhbFJlcFdvcmtlciA9IE5VTEw7CiAKQEAgLTczLDYgKzc0LDcg QEAgc3RhdGljIHZvaWQgbG9naWNhbHJlcF9sYXVuY2hlcl9vbmV4aXQoaW50IGNvZGUsIERhdHVt IGFyZyk7CiBzdGF0aWMgdm9pZCBsb2dpY2FscmVwX3dvcmtlcl9vbmV4aXQoaW50IGNvZGUsIERh dHVtIGFyZyk7CiBzdGF0aWMgdm9pZCBsb2dpY2FscmVwX3dvcmtlcl9kZXRhY2godm9pZCk7CiBz dGF0aWMgdm9pZCBsb2dpY2FscmVwX3dvcmtlcl9jbGVhbnVwKExvZ2ljYWxSZXBXb3JrZXIgKndv cmtlcik7CitzdGF0aWMgdm9pZCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKExvZ2lj YWxSZXBXb3JrZXIgKndvcmtlcik7CiAKIHN0YXRpYyBib29sIG9uX2NvbW1pdF9sYXVuY2hlcl93 YWtldXAgPSBmYWxzZTsKIApAQCAtMTUxLDggKzE1MywxMCBAQCBnZXRfc3Vic2NyaXB0aW9uX2xp c3Qodm9pZCkKICAqCiAgKiBUaGlzIGlzIG9ubHkgbmVlZGVkIGZvciBjbGVhbmluZyB1cCB0aGUg c2hhcmVkIG1lbW9yeSBpbiBjYXNlIHRoZSB3b3JrZXIKICAqIGZhaWxzIHRvIGF0dGFjaC4KKyAq CisgKiBSZXR1cm4gZmFsc2UgaWYgdGhlIGF0dGFjaCBmYWlscy4gT3RoZXJ3aXNlIHJldHVybiB0 cnVlLgogICovCi1zdGF0aWMgdm9pZAorc3RhdGljIGJvb2wKIFdhaXRGb3JSZXBsaWNhdGlvbldv cmtlckF0dGFjaChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIsCiAJCQkJCQkJICAgdWludDE2IGdl bmVyYXRpb24sCiAJCQkJCQkJICAgQmFja2dyb3VuZFdvcmtlckhhbmRsZSAqaGFuZGxlKQpAQCAt MTY4LDExICsxNzIsMTEgQEAgV2FpdEZvclJlcGxpY2F0aW9uV29ya2VyQXR0YWNoKExvZ2ljYWxS ZXBXb3JrZXIgKndvcmtlciwKIAogCQlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2Nr LCBMV19TSEFSRUQpOwogCi0JCS8qIFdvcmtlciBlaXRoZXIgZGllZCBvciBoYXMgc3RhcnRlZDsg bm8gbmVlZCB0byBkbyBhbnl0aGluZy4gKi8KKwkJLyogV29ya2VyIGVpdGhlciBkaWVkIG9yIGhh cyBzdGFydGVkLiBSZXR1cm4gZmFsc2UgaWYgZGllZC4gKi8KIAkJaWYgKCF3b3JrZXItPmluX3Vz ZSB8fCB3b3JrZXItPnByb2MpCiAJCXsKIAkJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtl ckxvY2spOwotCQkJcmV0dXJuOworCQkJcmV0dXJuIHdvcmtlci0+aW5fdXNlOwogCQl9CiAKIAkJ TFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CkBAIC0xODcsNyArMTkxLDcgQEAg V2FpdEZvclJlcGxpY2F0aW9uV29ya2VyQXR0YWNoKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciwK IAkJCWlmIChnZW5lcmF0aW9uID09IHdvcmtlci0+Z2VuZXJhdGlvbikKIAkJCQlsb2dpY2FscmVw X3dvcmtlcl9jbGVhbnVwKHdvcmtlcik7CiAJCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3Jr ZXJMb2NrKTsKLQkJCXJldHVybjsKKwkJCXJldHVybiBmYWxzZTsKIAkJfQogCiAJCS8qCkBAIC0y MjMsNiArMjI3LDEzIEBAIGxvZ2ljYWxyZXBfd29ya2VyX2ZpbmQoT2lkIHN1YmlkLCBPaWQgcmVs aWQsIGJvb2wgb25seV9ydW5uaW5nKQogCXsKIAkJTG9naWNhbFJlcFdvcmtlciAqdyA9ICZMb2dp Y2FsUmVwQ3R4LT53b3JrZXJzW2ldOwogCisJCS8qCisJCSAqIFdlIGFyZSBvbmx5IGludGVyZXN0 ZWQgaW4gdGhlIG1haW4gYXBwbHkgd29ya2VyIG9yIHRhYmxlIHN5bmMgd29ya2VyCisJCSAqIGhl cmUuCisJCSAqLworCQlpZiAody0+c3Vid29ya2VyKQorCQkJY29udGludWU7CisKIAkJaWYgKHct PmluX3VzZSAmJiB3LT5zdWJpZCA9PSBzdWJpZCAmJiB3LT5yZWxpZCA9PSByZWxpZCAmJgogCQkJ KCFvbmx5X3J1bm5pbmcgfHwgdy0+cHJvYykpCiAJCXsKQEAgLTI1OSwxMSArMjcwLDExIEBAIGxv Z2ljYWxyZXBfd29ya2Vyc19maW5kKE9pZCBzdWJpZCwgYm9vbCBvbmx5X3J1bm5pbmcpCiB9CiAK IC8qCi0gKiBTdGFydCBuZXcgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIsIGlmIHBvc3NpYmxlLgor ICogU3RhcnQgbmV3IGJhY2tncm91bmQgd29ya2VyLCBpZiBwb3NzaWJsZS4KICAqLwotdm9pZAor Ym9vbAogbG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKE9pZCBkYmlkLCBPaWQgc3ViaWQsIGNvbnN0 IGNoYXIgKnN1Ym5hbWUsIE9pZCB1c2VyaWQsCi0JCQkJCQkgT2lkIHJlbGlkKQorCQkJCQkJIE9p ZCByZWxpZCwgZHNtX2hhbmRsZSBzdWJ3b3JrZXJfZHNtKQogewogCUJhY2tncm91bmRXb3JrZXIg Ymd3OwogCUJhY2tncm91bmRXb3JrZXJIYW5kbGUgKmJnd19oYW5kbGU7CkBAIC0yNzMsNiArMjg0 LDEwIEBAIGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChPaWQgZGJpZCwgT2lkIHN1YmlkLCBjb25z dCBjaGFyICpzdWJuYW1lLCBPaWQgdXNlcmlkLAogCUxvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciA9 IE5VTEw7CiAJaW50CQkJbnN5bmN3b3JrZXJzOwogCVRpbWVzdGFtcFR6IG5vdzsKKwlib29sCQlp c19zdWJ3b3JrZXIgPSAoc3Vid29ya2VyX2RzbSAhPSBEU01fSEFORExFX0lOVkFMSUQpOworCisJ LyogU2FuaXR5IGNoZWNrIDogd2UgZG9uJ3Qgc3VwcG9ydCB0YWJsZSBzeW5jIGluIHN1Yndvcmtl ci4gKi8KKwlBc3NlcnQoIShpc19zdWJ3b3JrZXIgJiYgT2lkSXNWYWxpZChyZWxpZCkpKTsKIAog CWVyZXBvcnQoREVCVUcxLAogCQkJKGVycm1zZ19pbnRlcm5hbCgic3RhcnRpbmcgbG9naWNhbCBy ZXBsaWNhdGlvbiB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIiLApAQCAtMzUwLDcgKzM2 NSw3IEBAIHJldHJ5OgogCWlmIChPaWRJc1ZhbGlkKHJlbGlkKSAmJiBuc3luY3dvcmtlcnMgPj0g bWF4X3N5bmNfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uKQogCXsKIAkJTFdMb2NrUmVsZWFzZShM b2dpY2FsUmVwV29ya2VyTG9jayk7Ci0JCXJldHVybjsKKwkJcmV0dXJuIGZhbHNlOwogCX0KIAog CS8qCkBAIC0zNjQsNyArMzc5LDcgQEAgcmV0cnk6CiAJCQkJKGVycmNvZGUoRVJSQ09ERV9DT05G SUdVUkFUSU9OX0xJTUlUX0VYQ0VFREVEKSwKIAkJCQkgZXJybXNnKCJvdXQgb2YgbG9naWNhbCBy ZXBsaWNhdGlvbiB3b3JrZXIgc2xvdHMiKSwKIAkJCQkgZXJyaGludCgiWW91IG1pZ2h0IG5lZWQg dG8gaW5jcmVhc2UgbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2Vycy4iKSkpOwotCQlyZXR1 cm47CisJCXJldHVybiBmYWxzZTsKIAl9CiAKIAkvKiBQcmVwYXJlIHRoZSB3b3JrZXIgc2xvdC4g Ki8KQEAgLTM3OSw2ICszOTQsNyBAQCByZXRyeToKIAl3b3JrZXItPnJlbHN0YXRlID0gU1VCUkVM X1NUQVRFX1VOS05PV047CiAJd29ya2VyLT5yZWxzdGF0ZV9sc24gPSBJbnZhbGlkWExvZ1JlY1B0 cjsKIAl3b3JrZXItPnN0cmVhbV9maWxlc2V0ID0gTlVMTDsKKwl3b3JrZXItPnN1YndvcmtlciA9 IGlzX3N1YndvcmtlcjsKIAl3b3JrZXItPmxhc3RfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJ VElNRVNUQU1QX05PQkVHSU4od29ya2VyLT5sYXN0X3NlbmRfdGltZSk7CiAJVElNRVNUQU1QX05P QkVHSU4od29ya2VyLT5sYXN0X3JlY3ZfdGltZSk7CkBAIC0zOTYsMTkgKzQxMiwzMSBAQCByZXRy eToKIAkJQkdXT1JLRVJfQkFDS0VORF9EQVRBQkFTRV9DT05ORUNUSU9OOwogCWJndy5iZ3dfc3Rh cnRfdGltZSA9IEJnV29ya2VyU3RhcnRfUmVjb3ZlcnlGaW5pc2hlZDsKIAlzbnByaW50ZihiZ3cu Ymd3X2xpYnJhcnlfbmFtZSwgQkdXX01BWExFTiwgInBvc3RncmVzIik7Ci0Jc25wcmludGYoYmd3 LmJnd19mdW5jdGlvbl9uYW1lLCBCR1dfTUFYTEVOLCAiQXBwbHlXb3JrZXJNYWluIik7CisKKwlp ZiAoaXNfc3Vid29ya2VyKQorCQlzbnByaW50ZihiZ3cuYmd3X2Z1bmN0aW9uX25hbWUsIEJHV19N QVhMRU4sICJBcHBseUJnd29ya2VyTWFpbiIpOworCWVsc2UKKwkJc25wcmludGYoYmd3LmJnd19m dW5jdGlvbl9uYW1lLCBCR1dfTUFYTEVOLCAiQXBwbHlXb3JrZXJNYWluIik7CisKIAlpZiAoT2lk SXNWYWxpZChyZWxpZCkpCiAJCXNucHJpbnRmKGJndy5iZ3dfbmFtZSwgQkdXX01BWExFTiwKIAkJ CQkgImxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIGZvciBzdWJzY3JpcHRpb24gJXUgc3luYyAl dSIsIHN1YmlkLCByZWxpZCk7CisJZWxzZSBpZiAoaXNfc3Vid29ya2VyKQorCQlzbnByaW50Zihi Z3cuYmd3X25hbWUsIEJHV19NQVhMRU4sCisJCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5 IGJhY2tncm91bmQgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gJXUiLCBzdWJpZCk7CiAJZWxzZQog CQlzbnByaW50ZihiZ3cuYmd3X25hbWUsIEJHV19NQVhMRU4sCiAJCQkJICJsb2dpY2FsIHJlcGxp Y2F0aW9uIHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uICV1Iiwgc3ViaWQpOworCiAJc25wcmludGYo Ymd3LmJnd190eXBlLCBCR1dfTUFYTEVOLCAibG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIiKTsK IAogCWJndy5iZ3dfcmVzdGFydF90aW1lID0gQkdXX05FVkVSX1JFU1RBUlQ7CiAJYmd3LmJnd19u b3RpZnlfcGlkID0gTXlQcm9jUGlkOwogCWJndy5iZ3dfbWFpbl9hcmcgPSBJbnQzMkdldERhdHVt KHNsb3QpOwogCisJaWYgKGlzX3N1YndvcmtlcikKKwkJbWVtY3B5KGJndy5iZ3dfZXh0cmEsICZz dWJ3b3JrZXJfZHNtLCBzaXplb2YoZHNtX2hhbmRsZSkpOworCiAJaWYgKCFSZWdpc3RlckR5bmFt aWNCYWNrZ3JvdW5kV29ya2VyKCZiZ3csICZiZ3dfaGFuZGxlKSkKIAl7CiAJCS8qIEZhaWxlZCB0 byBzdGFydCB3b3JrZXIsIHNvIGNsZWFuIHVwIHRoZSB3b3JrZXIgc2xvdC4gKi8KQEAgLTQyMSwx MSArNDQ5LDExIEBAIHJldHJ5OgogCQkJCShlcnJjb2RlKEVSUkNPREVfQ09ORklHVVJBVElPTl9M SU1JVF9FWENFRURFRCksCiAJCQkJIGVycm1zZygib3V0IG9mIGJhY2tncm91bmQgd29ya2VyIHNs b3RzIiksCiAJCQkJIGVycmhpbnQoIllvdSBtaWdodCBuZWVkIHRvIGluY3JlYXNlIG1heF93b3Jr ZXJfcHJvY2Vzc2VzLiIpKSk7Ci0JCXJldHVybjsKKwkJcmV0dXJuIGZhbHNlOwogCX0KIAogCS8q IE5vdyB3YWl0IHVudGlsIGl0IGF0dGFjaGVzLiAqLwotCVdhaXRGb3JSZXBsaWNhdGlvbldvcmtl ckF0dGFjaCh3b3JrZXIsIGdlbmVyYXRpb24sIGJnd19oYW5kbGUpOworCXJldHVybiBXYWl0Rm9y UmVwbGljYXRpb25Xb3JrZXJBdHRhY2god29ya2VyLCBnZW5lcmF0aW9uLCBiZ3dfaGFuZGxlKTsK IH0KIAogLyoKQEAgLTQzNiwxOCArNDY0LDI4IEBAIHZvaWQKIGxvZ2ljYWxyZXBfd29ya2VyX3N0 b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpCiB7CiAJTG9naWNhbFJlcFdvcmtlciAqd29ya2VyOwot CXVpbnQxNgkJZ2VuZXJhdGlvbjsKIAogCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxv Y2ssIExXX1NIQVJFRCk7CiAKIAl3b3JrZXIgPSBsb2dpY2FscmVwX3dvcmtlcl9maW5kKHN1Ymlk LCByZWxpZCwgZmFsc2UpOwogCi0JLyogTm8gd29ya2VyLCBub3RoaW5nIHRvIGRvLiAqLwotCWlm ICghd29ya2VyKQotCXsKLQkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7Ci0J CXJldHVybjsKLQl9CisJLyogRm91bmQgdGhlIG1haW4gd29ya2VyLCB0aGVuIHRyeSB0byBzdG9w IGl0LiAqLworCWlmICh3b3JrZXIpCisJCWxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwo d29ya2VyKTsKKworCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOworfQorCisv KgorICogV29ya2hvcnNlIGZvciBsb2dpY2FscmVwX3dvcmtlcl9zdG9wKCkgYW5kIGxvZ2ljYWxy ZXBfd29ya2VyX2RldGFjaCgpLiBTdG9wCisgKiB0aGUgd29ya2VyIGFuZCB3YWl0IGZvciBpdCB0 byBkaWUuCisgKi8KK3N0YXRpYyB2b2lkCitsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFs KExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcikKK3sKKwl1aW50MTYJCWdlbmVyYXRpb247CisKKwlB c3NlcnQoTFdMb2NrSGVsZEJ5TWUoTG9naWNhbFJlcFdvcmtlckxvY2spKTsKIAogCS8qCiAJICog UmVtZW1iZXIgd2hpY2ggZ2VuZXJhdGlvbiB3YXMgb3VyIHdvcmtlciBzbyB3ZSBjYW4gY2hlY2sg aWYgd2hhdCB3ZSBzZWUKQEAgLTQ4NSwxMCArNTIzLDcgQEAgbG9naWNhbHJlcF93b3JrZXJfc3Rv cChPaWQgc3ViaWQsIE9pZCByZWxpZCkKIAkJICogZGlmZmVyZW50LCBtZWFuaW5nIHRoYXQgYSBk aWZmZXJlbnQgd29ya2VyIGhhcyB0YWtlbiB0aGUgc2xvdC4KIAkJICovCiAJCWlmICghd29ya2Vy LT5pbl91c2UgfHwgd29ya2VyLT5nZW5lcmF0aW9uICE9IGdlbmVyYXRpb24pCi0JCXsKLQkJCUxX TG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwogCQkJcmV0dXJuOwotCQl9CiAKIAkJ LyogV29ya2VyIGhhcyBhc3NpZ25lZCBwcm9jLCBzbyBpdCBoYXMgc3RhcnRlZC4gKi8KIAkJaWYg KHdvcmtlci0+cHJvYykKQEAgLTUyMiw4ICs1NTcsNiBAQCBsb2dpY2FscmVwX3dvcmtlcl9zdG9w KE9pZCBzdWJpZCwgT2lkIHJlbGlkKQogCiAJCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtl ckxvY2ssIExXX1NIQVJFRCk7CiAJfQotCi0JTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2Vy TG9jayk7CiB9CiAKIC8qCkBAIC01OTksNiArNjMyLDI5IEBAIGxvZ2ljYWxyZXBfd29ya2VyX2F0 dGFjaChpbnQgc2xvdCkKIHN0YXRpYyB2b2lkCiBsb2dpY2FscmVwX3dvcmtlcl9kZXRhY2godm9p ZCkKIHsKKwkvKgorCSAqIFRoaXMgaXMgdGhlIG1haW4gYXBwbHkgd29ya2VyLCBzdG9wIGFsbCB0 aGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXJzIHdlCisJICogc3RhcnRlZCBiZWZvcmUuCisJICov CisJaWYgKCFNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YndvcmtlcikKKwl7CisJCUxpc3QJICAgKndv cmtlcnM7CisJCUxpc3RDZWxsICAgKmxjOworCisJCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdv cmtlckxvY2ssIExXX1NIQVJFRCk7CisKKwkJd29ya2VycyA9IGxvZ2ljYWxyZXBfd29ya2Vyc19m aW5kKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHRydWUpOworCQlmb3JlYWNoKGxjLCB3b3Jr ZXJzKQorCQl7CisJCQlMb2dpY2FsUmVwV29ya2VyICp3ID0gKExvZ2ljYWxSZXBXb3JrZXIgKikg bGZpcnN0KGxjKTsKKworCQkJaWYgKHctPnN1YndvcmtlcikKKwkJCQlsb2dpY2FscmVwX3dvcmtl cl9zdG9wX2ludGVybmFsKHcpOworCQl9CisKKwkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29y a2VyTG9jayk7CisJfQorCiAJLyogQmxvY2sgY29uY3VycmVudCBhY2Nlc3MuICovCiAJTFdMb2Nr QWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfRVhDTFVTSVZFKTsKIApAQCAtNjIxLDYg KzY3Nyw3IEBAIGxvZ2ljYWxyZXBfd29ya2VyX2NsZWFudXAoTG9naWNhbFJlcFdvcmtlciAqd29y a2VyKQogCXdvcmtlci0+dXNlcmlkID0gSW52YWxpZE9pZDsKIAl3b3JrZXItPnN1YmlkID0gSW52 YWxpZE9pZDsKIAl3b3JrZXItPnJlbGlkID0gSW52YWxpZE9pZDsKKwl3b3JrZXItPnN1Yndvcmtl ciA9IGZhbHNlOwogfQogCiAvKgpAQCAtNjc5LDYgKzczNiwzMCBAQCBsb2dpY2FscmVwX3N5bmNf d29ya2VyX2NvdW50KE9pZCBzdWJpZCkKIAlyZXR1cm4gcmVzOwogfQogCisvKgorICogQ291bnQg dGhlIG51bWJlciBvZiByZWdpc3RlcmVkIChub3QgbmVjZXNzYXJpbHkgcnVubmluZykgYXBwbHkg YmFja2dyb3VuZAorICogd29ya2VycyBmb3IgYSBzdWJzY3JpcHRpb24uCisgKi8KK2ludAorbG9n aWNhbHJlcF9hcHBseV9iZ3dvcmtlcl9jb3VudChPaWQgc3ViaWQpCit7CisJaW50CQkJaTsKKwlp bnQJCQlyZXMgPSAwOworCisJQXNzZXJ0KExXTG9ja0hlbGRCeU1lKExvZ2ljYWxSZXBXb3JrZXJM b2NrKSk7CisKKwkvKiBTZWFyY2ggZm9yIGF0dGFjaGVkIHdvcmtlciBmb3IgYSBnaXZlbiBzdWJz Y3JpcHRpb24gaWQuICovCisJZm9yIChpID0gMDsgaSA8IG1heF9sb2dpY2FsX3JlcGxpY2F0aW9u X3dvcmtlcnM7IGkrKykKKwl7CisJCUxvZ2ljYWxSZXBXb3JrZXIgKncgPSAmTG9naWNhbFJlcEN0 eC0+d29ya2Vyc1tpXTsKKworCQlpZiAody0+c3ViaWQgPT0gc3ViaWQgJiYgdy0+c3Vid29ya2Vy KQorCQkJcmVzKys7CisJfQorCisJcmV0dXJuIHJlczsKK30KKwogLyoKICAqIEFwcGx5TGF1bmNo ZXJTaG1lbVNpemUKICAqCQlDb21wdXRlIHNwYWNlIG5lZWRlZCBmb3IgcmVwbGljYXRpb24gbGF1 bmNoZXIgc2hhcmVkIG1lbW9yeQpAQCAtODY4LDcgKzk0OSw3IEBAIEFwcGx5TGF1bmNoZXJNYWlu KERhdHVtIG1haW5fYXJnKQogCQkJCQl3YWl0X3RpbWUgPSB3YWxfcmV0cmlldmVfcmV0cnlfaW50 ZXJ2YWw7CiAKIAkJCQkJbG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKHN1Yi0+ZGJpZCwgc3ViLT5v aWQsIHN1Yi0+bmFtZSwKLQkJCQkJCQkJCQkJIHN1Yi0+b3duZXIsIEludmFsaWRPaWQpOworCQkJ CQkJCQkJCQkgc3ViLT5vd25lciwgSW52YWxpZE9pZCwgRFNNX0hBTkRMRV9JTlZBTElEKTsKIAkJ CQl9CiAJCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv b3JpZ2luLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jCmluZGV4 IGM3MmFkNmI5M2QuLjI0NThlMmZjZTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvb3JpZ2luLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9vcmlnaW4uYwpAQCAtMTA3NSwxMiArMTA3NSwyMSBAQCBSZXBsaWNhdGlvbk9yaWdpbkV4aXRD bGVhbnVwKGludCBjb2RlLCBEYXR1bSBhcmcpCiAgKiBhcnJheSBkb2Vzbid0IGhhdmUgdG8gYmUg c2VhcmNoZWQgd2hlbiBjYWxsaW5nCiAgKiByZXBsb3JpZ2luX3Nlc3Npb25fYWR2YW5jZSgpLgog ICoKLSAqIE9idmlvdXNseSBvbmx5IG9uZSBzdWNoIGNhY2hlZCBvcmlnaW4gY2FuIGV4aXN0IHBl ciBwcm9jZXNzIGFuZCB0aGUgY3VycmVudAorICogTm9ybWFsbHkgb25seSBvbmUgc3VjaCBjYWNo ZWQgb3JpZ2luIGNhbiBleGlzdCBwZXIgcHJvY2VzcyBhbmQgdGhlIGN1cnJlbnQKICAqIGNhY2hl ZCB2YWx1ZSBjYW4gb25seSBiZSBzZXQgYWdhaW4gYWZ0ZXIgdGhlIHByZXZpb3VzIHZhbHVlIGlz IHRvcm4gZG93bgogICogd2l0aCByZXBsb3JpZ2luX3Nlc3Npb25fcmVzZXQoKS4KKyAqCisgKiBI b3dldmVyLCBpZiB0aGUgZnVuY3Rpb24gcGFyYW1ldGVyICdtdXN0X2FjcXVpcmUnIGlzIGZhbHNl LCB3ZSBhbGxvdyB0aGUKKyAqIHByb2Nlc3MgdG8gdXNlIHRoZSBzYW1lIHNsb3QgYWxyZWFkeSBh Y3F1aXJlZCBieSBhbm90aGVyIHByb2Nlc3MuIEl0J3Mgc2FmZQorICogYmVjYXVzZSAxKSBUaGUg b25seSBjYWxsZXIgKGFwcGx5IGJhY2tncm91bmQgd29ya2Vycykgd2lsbCBtYWludGFpbiB0aGUK KyAqIGNvbW1pdCBvcmRlciBieSBhbGxvd2luZyBvbmx5IG9uZSBwcm9jZXNzIHRvIGNvbW1pdCBh dCBhIHRpbWUsIHNvIG5vIHR3bworICogd29ya2VycyB3aWxsIGJlIG9wZXJhdGluZyBvbiB0aGUg c2FtZSBvcmlnaW4gYXQgdGhlIHNhbWUgdGltZSAoc2VlIGNvbW1lbnRzCisgKiBpbiBsb2dpY2Fs L3dvcmtlci5jKS4gMikgRXZlbiB0aG91Z2ggd2UgdHJ5IHRvIGFkdmFuY2UgdGhlIHNlc3Npb24n cyBvcmlnaW4KKyAqIGNvbmN1cnJlbnRseSwgaXQncyBzYWZlIHRvIGRvIHNvIGFzIHdlIGNoYW5n ZS9hZHZhbmNlIHRoZSBzZXNzaW9uX29yaWdpbgorICogTFNOcyB1bmRlciByZXBsaWNhdGVfc3Rh dGUgTFdMb2NrLgogICovCiB2b2lkCi1yZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVwT3JpZ2lu SWQgbm9kZSkKK3JlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChSZXBPcmlnaW5JZCBub2RlLCBib29s IG11c3RfYWNxdWlyZSkKIHsKIAlzdGF0aWMgYm9vbCByZWdpc3RlcmVkX2NsZWFudXA7CiAJaW50 CQkJaTsKQEAgLTExMjIsNyArMTEzMSw3IEBAIHJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChSZXBP cmlnaW5JZCBub2RlKQogCQlpZiAoY3Vyc3RhdGUtPnJvaWRlbnQgIT0gbm9kZSkKIAkJCWNvbnRp bnVlOwogCi0JCWVsc2UgaWYgKGN1cnN0YXRlLT5hY3F1aXJlZF9ieSAhPSAwKQorCQllbHNlIGlm IChjdXJzdGF0ZS0+YWNxdWlyZWRfYnkgIT0gMCAmJiBtdXN0X2FjcXVpcmUpCiAJCXsKIAkJCWVy ZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX0lOX1VTRSksCkBAIC0x MTUzLDcgKzExNjIsMTQgQEAgcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5v ZGUpCiAKIAlBc3NlcnQoc2Vzc2lvbl9yZXBsaWNhdGlvbl9zdGF0ZS0+cm9pZGVudCAhPSBJbnZh bGlkUmVwT3JpZ2luSWQpOwogCi0Jc2Vzc2lvbl9yZXBsaWNhdGlvbl9zdGF0ZS0+YWNxdWlyZWRf YnkgPSBNeVByb2NQaWQ7CisJaWYgKG11c3RfYWNxdWlyZSkKKwkJc2Vzc2lvbl9yZXBsaWNhdGlv bl9zdGF0ZS0+YWNxdWlyZWRfYnkgPSBNeVByb2NQaWQ7CisJZWxzZSBpZiAoc2Vzc2lvbl9yZXBs aWNhdGlvbl9zdGF0ZS0+YWNxdWlyZWRfYnkgPT0gMCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQko ZXJyY29kZShFUlJDT0RFX0NPTkZJR1VSQVRJT05fTElNSVRfRVhDRUVERUQpLAorCQkJCSBlcnJt c2coImFwcGx5IGJhY2tncm91bmQgd29ya2VyIGNvdWxkIG5vdCBmaW5kIHJlcGxpY2F0aW9uIHN0 YXRlIHNsb3QgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiB3aXRoIE9JRCAldSIsCisJCQkJCQlub2Rl KSwKKwkJCQkgZXJyZGV0YWlsKCJUaGVyZSBpcyBubyByZXBsaWNhdGlvbiBzdGF0ZSBzbG90IHNl dCBieSBpdHMgbWFpbiBhcHBseSB3b3JrZXIuIikpKTsKIAogCUxXTG9ja1JlbGVhc2UoUmVwbGlj YXRpb25PcmlnaW5Mb2NrKTsKIApAQCAtMTMzNyw3ICsxMzUzLDcgQEAgcGdfcmVwbGljYXRpb25f b3JpZ2luX3Nlc3Npb25fc2V0dXAoUEdfRlVOQ1RJT05fQVJHUykKIAogCW5hbWUgPSB0ZXh0X3Rv X2NzdHJpbmcoKHRleHQgKikgRGF0dW1HZXRQb2ludGVyKFBHX0dFVEFSR19EQVRVTSgwKSkpOwog CW9yaWdpbiA9IHJlcGxvcmlnaW5fYnlfbmFtZShuYW1lLCBmYWxzZSk7Ci0JcmVwbG9yaWdpbl9z ZXNzaW9uX3NldHVwKG9yaWdpbik7CisJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbiwg dHJ1ZSk7CiAKIAlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luID0gb3JpZ2luOwogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKaW5kZXggZmY4NTEzZTJkMi4uNDdiZDgxMWZi NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jCisr KyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwpAQCAtMTE2MywzMSAr MTE2Myw1NiBAQCBsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIGluLCBM b2dpY2FsUmVwQ29tbWl0RGF0YSAqY29tbWl0X2RhdGEpCiAvKgogICogV3JpdGUgU1RSRUFNIEFC T1JUIHRvIHRoZSBvdXRwdXQgc3RyZWFtLiBOb3RlIHRoYXQgeGlkIGFuZCBzdWJ4aWQgd2lsbCBi ZQogICogc2FtZSBmb3IgdGhlIHRvcC1sZXZlbCB0cmFuc2FjdGlvbiBhYm9ydC4KKyAqCisgKiBJ ZiB3cml0ZV9hYm9ydF9sc24gaXMgdHJ1ZSwgc2VuZCB0aGUgYWJvcnRfbHNuIGFuZCBhYm9ydF90 aW1lIGZpZWxkcywKKyAqIG90aGVyd2lzZSBkb24ndC4KICAqLwogdm9pZAogbG9naWNhbHJlcF93 cml0ZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBvdXQsIFRyYW5zYWN0aW9uSWQgeGlkLAotCQkJ CQkJCSAgVHJhbnNhY3Rpb25JZCBzdWJ4aWQpCisJCQkJCQkJICBSZW9yZGVyQnVmZmVyVFhOICp0 eG4sIFhMb2dSZWNQdHIgYWJvcnRfbHNuLAorCQkJCQkJCSAgYm9vbCB3cml0ZV9hYm9ydF9sc24p CiB7CiAJcHFfc2VuZGJ5dGUob3V0LCBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX0FCT1JUKTsKIAot CUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpICYmIFRyYW5zYWN0aW9uSWRJc1ZhbGlk KHN1YnhpZCkpOworCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpICYmIFRyYW5zYWN0 aW9uSWRJc1ZhbGlkKHR4bi0+eGlkKSk7CiAKIAkvKiB0cmFuc2FjdGlvbiBJRCAqLwogCXBxX3Nl bmRpbnQzMihvdXQsIHhpZCk7Ci0JcHFfc2VuZGludDMyKG91dCwgc3VieGlkKTsKKwlwcV9zZW5k aW50MzIob3V0LCB0eG4tPnhpZCk7CisKKwlpZiAod3JpdGVfYWJvcnRfbHNuKQorCXsKKwkJcHFf c2VuZGludDY0KG91dCwgYWJvcnRfbHNuKTsKKwkJcHFfc2VuZGludDY0KG91dCwgdHhuLT54YWN0 X3RpbWUuYWJvcnRfdGltZSk7CisJfQogfQogCiAvKgogICogUmVhZCBTVFJFQU0gQUJPUlQgZnJv bSB0aGUgb3V0cHV0IHN0cmVhbS4KKyAqCisgKiBJZiByZWFkX2Fib3J0X2xzbiBpcyB0cnVlLCB0 cnkgdG8gcmVhZCB0aGUgYWJvcnRfbHNuIGFuZCBhYm9ydF90aW1lIGZpZWxkcywKKyAqIG90aGVy d2lzZSBkb24ndC4KICAqLwogdm9pZAotbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChTdHJp bmdJbmZvIGluLCBUcmFuc2FjdGlvbklkICp4aWQsCi0JCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnN1 YnhpZCkKK2xvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBpbiwKKwkJCQkJ CQkgTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YSAqYWJvcnRfZGF0YSwKKwkJCQkJCQkgYm9vbCBy ZWFkX2Fib3J0X2xzbikKIHsKLQlBc3NlcnQoeGlkICYmIHN1YnhpZCk7CisJQXNzZXJ0KGFib3J0 X2RhdGEpOwogCi0JKnhpZCA9IHBxX2dldG1zZ2ludChpbiwgNCk7Ci0JKnN1YnhpZCA9IHBxX2dl dG1zZ2ludChpbiwgNCk7CisJYWJvcnRfZGF0YS0+eGlkID0gcHFfZ2V0bXNnaW50KGluLCA0KTsK KwlhYm9ydF9kYXRhLT5zdWJ4aWQgPSBwcV9nZXRtc2dpbnQoaW4sIDQpOworCisJaWYgKHJlYWRf YWJvcnRfbHNuKQorCXsKKwkJYWJvcnRfZGF0YS0+YWJvcnRfbHNuID0gcHFfZ2V0bXNnaW50NjQo aW4pOworCQlhYm9ydF9kYXRhLT5hYm9ydF90aW1lID0gcHFfZ2V0bXNnaW50NjQoaW4pOworCX0K KwllbHNlCisJeworCQlhYm9ydF9kYXRhLT5hYm9ydF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsK KwkJYWJvcnRfZGF0YS0+YWJvcnRfdGltZSA9IDA7CisJfQogfQogCiAvKgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYwppbmRleCA4OGEzN2ZkZTcy Li44OTg5MzI4MDQ2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3Jlb3JkZXJidWZmZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jl b3JkZXJidWZmZXIuYwpAQCAtMjgyNiw3ICsyODI2LDggQEAgUmVvcmRlckJ1ZmZlckZpbmlzaFBy ZXBhcmVkKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwKICAqIGRpc2suCiAg Ki8KIHZvaWQKLVJlb3JkZXJCdWZmZXJBYm9ydChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rp b25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKQorUmVvcmRlckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZm ZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24sCisJCQkJICAgVGltZXN0 YW1wVHogYWJvcnRfdGltZSkKIHsKIAlSZW9yZGVyQnVmZmVyVFhOICp0eG47CiAKQEAgLTI4Mzcs NiArMjgzOCw4IEBAIFJlb3JkZXJCdWZmZXJBYm9ydChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNh Y3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKQogCWlmICh0eG4gPT0gTlVMTCkKIAkJcmV0dXJu OwogCisJdHhuLT54YWN0X3RpbWUuYWJvcnRfdGltZSA9IGFib3J0X3RpbWU7CisKIAkvKiBGb3Ig c3RyZWFtZWQgdHJhbnNhY3Rpb25zIG5vdGlmeSB0aGUgcmVtb3RlIG5vZGUgYWJvdXQgdGhlIGFi b3J0LiAqLwogCWlmIChyYnR4bl9pc19zdHJlYW1lZCh0eG4pKQogCXsKQEAgLTI5MTEsNyArMjkx NCw4IEBAIFJlb3JkZXJCdWZmZXJBYm9ydE9sZChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rp b25JZCBvbGRlc3RSdW5uaW5nWGlkKQogICogdG8gdGhpcyB4aWQgbWlnaHQgcmUtY3JlYXRlIHRo ZSB0cmFuc2FjdGlvbiBpbmNvbXBsZXRlbHkuCiAgKi8KIHZvaWQKLVJlb3JkZXJCdWZmZXJGb3Jn ZXQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikK K1Jlb3JkZXJCdWZmZXJGb3JnZXQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlk LCBYTG9nUmVjUHRyIGxzbiwKKwkJCQkJVGltZXN0YW1wVHogYWJvcnRfdGltZSkKIHsKIAlSZW9y ZGVyQnVmZmVyVFhOICp0eG47CiAKQEAgLTI5MjIsNiArMjkyNiw4IEBAIFJlb3JkZXJCdWZmZXJG b3JnZXQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxz bikKIAlpZiAodHhuID09IE5VTEwpCiAJCXJldHVybjsKIAorCXR4bi0+eGFjdF90aW1lLmFib3J0 X3RpbWUgPSBhYm9ydF90aW1lOworCiAJLyogRm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9ucyBub3Rp ZnkgdGhlIHJlbW90ZSBub2RlIGFib3V0IHRoZSBhYm9ydC4gKi8KIAlpZiAocmJ0eG5faXNfc3Ry ZWFtZWQodHhuKSkKIAkJcmItPnN0cmVhbV9hYm9ydChyYiwgdHhuLCBsc24pOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKaW5kZXggNmEwMWZmZDI3My4uZjM5 MTFkZTdiOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJs ZXN5bmMuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5j CkBAIC01NjgsNyArNTY4LDggQEAgcHJvY2Vzc19zeW5jaW5nX3RhYmxlc19mb3JfYXBwbHkoWExv Z1JlY1B0ciBjdXJyZW50X2xzbikKIAkJCQkJCQkJCQkJCSBNeVN1YnNjcmlwdGlvbi0+b2lkLAog CQkJCQkJCQkJCQkJIE15U3Vic2NyaXB0aW9uLT5uYW1lLAogCQkJCQkJCQkJCQkJIE15TG9naWNh bFJlcFdvcmtlci0+dXNlcmlkLAotCQkJCQkJCQkJCQkJIHJzdGF0ZS0+cmVsaWQpOworCQkJCQkJ CQkJCQkJIHJzdGF0ZS0+cmVsaWQsCisJCQkJCQkJCQkJCQkgRFNNX0hBTkRMRV9JTlZBTElEKTsK IAkJCQkJCWhlbnRyeS0+bGFzdF9zdGFydF90aW1lID0gbm93OwogCQkJCQl9CiAJCQkJfQpAQCAt NTg5LDYgKzU5MCw5IEBAIHByb2Nlc3Nfc3luY2luZ190YWJsZXNfZm9yX2FwcGx5KFhMb2dSZWNQ dHIgY3VycmVudF9sc24pCiB2b2lkCiBwcm9jZXNzX3N5bmNpbmdfdGFibGVzKFhMb2dSZWNQdHIg Y3VycmVudF9sc24pCiB7CisJaWYgKE15TG9naWNhbFJlcFdvcmtlci0+c3Vid29ya2VyKQorCQly ZXR1cm47CisKIAlpZiAoYW1fdGFibGVzeW5jX3dvcmtlcigpKQogCQlwcm9jZXNzX3N5bmNpbmdf dGFibGVzX2Zvcl9zeW5jKGN1cnJlbnRfbHNuKTsKIAllbHNlCkBAIC0xMjczLDcgKzEyNzcsNyBA QCBMb2dpY2FsUmVwU3luY1RhYmxlU3RhcnQoWExvZ1JlY1B0ciAqb3JpZ2luX3N0YXJ0cG9zKQog CQkgKiB0aW1lIHRoaXMgdGFibGVzeW5jIHdhcyBsYXVuY2hlZC4KIAkJICovCiAJCW9yaWdpbmlk ID0gcmVwbG9yaWdpbl9ieV9uYW1lKG9yaWdpbm5hbWUsIGZhbHNlKTsKLQkJcmVwbG9yaWdpbl9z ZXNzaW9uX3NldHVwKG9yaWdpbmlkKTsKKwkJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdp bmlkLCB0cnVlKTsKIAkJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiA9IG9yaWdpbmlkOwogCQkq b3JpZ2luX3N0YXJ0cG9zID0gcmVwbG9yaWdpbl9zZXNzaW9uX2dldF9wcm9ncmVzcyhmYWxzZSk7 CiAKQEAgLTEzODQsNyArMTM4OCw3IEBAIExvZ2ljYWxSZXBTeW5jVGFibGVTdGFydChYTG9nUmVj UHRyICpvcmlnaW5fc3RhcnRwb3MpCiAJCQkJCQkgICB0cnVlIC8qIGdvIGJhY2t3YXJkICovICwg dHJ1ZSAvKiBXQUwgbG9nICovICk7CiAJCVVubG9ja1JlbGF0aW9uT2lkKFJlcGxpY2F0aW9uT3Jp Z2luUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CiAKLQkJcmVwbG9yaWdpbl9zZXNzaW9u X3NldHVwKG9yaWdpbmlkKTsKKwkJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbmlkLCB0 cnVlKTsKIAkJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiA9IG9yaWdpbmlkOwogCX0KIAllbHNl CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwppbmRleCA1ZjhjNTQxNzYz Li44NTU1ZWFkYzcwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMK QEAgLTIyLDggKzIyLDI4IEBACiAgKiBTVFJFQU1FRCBUUkFOU0FDVElPTlMKICAqIC0tLS0tLS0t LS0tLS0tLS0tLS0tLQogICogU3RyZWFtZWQgdHJhbnNhY3Rpb25zIChsYXJnZSB0cmFuc2FjdGlv bnMgZXhjZWVkaW5nIGEgbWVtb3J5IGxpbWl0IG9uIHRoZQotICogdXBzdHJlYW0pIGFyZSBub3Qg YXBwbGllZCBpbW1lZGlhdGVseSwgYnV0IGluc3RlYWQsIHRoZSBkYXRhIGlzIHdyaXR0ZW4KLSAq IHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQgdGhlbiBhcHBsaWVkIGF0IG9uY2Ugd2hlbiB0aGUgZmlu YWwgY29tbWl0IGFycml2ZXMuCisgKiB1cHN0cmVhbSkgYXJlIGFwcGxpZWQgdXNpbmcgb25lIG9m IHR3byBhcHByb2FjaGVzOgorICoKKyAqIDEpIFNlcGFyYXRlIGJhY2tncm91bmQgd29ya2Vycwor ICoKKyAqIElmIHN0cmVhbWluZyA9IHBhcmFsbGVsLCB3ZSBhc3NpZ24gYSBuZXcgYXBwbHkgYmFj a2dyb3VuZCB3b3JrZXIgKGlmCisgKiBhdmFpbGFibGUpIGFzIHNvb24gYXMgdGhlIHhhY3QncyBm aXJzdCBzdHJlYW0gaXMgcmVjZWl2ZWQuIFRoZSBtYWluIGFwcGx5CisgKiB3b3JrZXIgd2lsbCBz ZW5kIGNoYW5nZXMgdG8gdGhpcyBuZXcgd29ya2VyIHZpYSBzaGFyZWQgbWVtb3J5LiBXZSBrZWVw IHRoaXMKKyAqIHdvcmtlciBhc3NpZ25lZCB0aWxsIHRoZSB0cmFuc2FjdGlvbiBjb21taXQgaXMg cmVjZWl2ZWQgYW5kIGFsc28gd2FpdCBmb3IKKyAqIHRoZSB3b3JrZXIgdG8gZmluaXNoIGF0IGNv bW1pdC4gVGhpcyBwcmVzZXJ2ZXMgY29tbWl0IG9yZGVyaW5nIGFuZCBhdm9pZHMKKyAqIGZpbGUg SS9PIGluIG1vc3QgY2FzZXMuIFdlIHN0aWxsIG5lZWQgdG8gc3BpbGwgdG8gYSBmaWxlIGlmIHRo ZXJlIGlzIG5vCisgKiB3b3JrZXIgYXZhaWxhYmxlLiBJdCBpcyBpbXBvcnRhbnQgdG8gbWFpbnRh aW4gY29tbWl0IG9yZGVyIHRvIGF2b2lkIGZhaWx1cmVzCisgKiBkdWUgdG8gKGEpIHRyYW5zYWN0 aW9uIGRlcGVuZGVuY2llcywgc2F5IGlmIHdlIGluc2VydCBhIHJvdyBpbiB0aGUgZmlyc3QKKyAq IHRyYW5zYWN0aW9uIGFuZCB1cGRhdGUgaXQgaW4gdGhlIHNlY29uZCB0cmFuc2FjdGlvbiB0aGVu IGFsbG93aW5nIHRvIGFwcGx5CisgKiBib3RoIGluIHBhcmFsbGVsIGNhbiBsZWFkIHRvIGZhaWx1 cmUgaW4gdGhlIHVwZGF0ZS4gKGIpIGRlYWRsb2NrcywgYWxsb3dpbmcKKyAqIHRyYW5zYWN0aW9u cyB0aGF0IHVwZGF0ZSB0aGUgc2FtZSBzZXQgb2Ygcm93cy90YWJsZXMgaW4gb3Bwb3NpdGUgb3Jk ZXIgdG8gYmUKKyAqIGFwcGxpZWQgaW4gcGFyYWxsZWwgY2FuIGxlYWQgdG8gZGVhZGxvY2tzLgor ICoKKyAqIDIpIFdyaXRlIHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQgYXBwbHkgd2hlbiB0aGUgZmlu YWwgY29tbWl0IGFycml2ZXMKKyAqCisgKiBJZiBubyB3b3JrZXIgaXMgYXZhaWxhYmxlIHRvIGhh bmRsZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiwgdGhlIGRhdGEgaXMKKyAqIHdyaXR0ZW4gdG8gdGVt cG9yYXJ5IGZpbGVzIGFuZCB0aGVuIGFwcGxpZWQgYXQgb25jZSB3aGVuIHRoZSBmaW5hbCBjb21t aXQKKyAqIGFycml2ZXMuCiAgKgogICogVW5saWtlIHRoZSByZWd1bGFyIChub24tc3RyZWFtZWQp IGNhc2UsIGhhbmRsaW5nIHN0cmVhbWVkIHRyYW5zYWN0aW9ucyBoYXMKICAqIHRvIGhhbmRsZSBh Ym9ydHMgb2YgYm90aCB0aGUgdG9wbGV2ZWwgdHJhbnNhY3Rpb24gYW5kIHN1YnRyYW5zYWN0aW9u cy4gVGhpcwpAQCAtMjE5LDIwICsyMzksOCBAQCB0eXBlZGVmIHN0cnVjdCBBcHBseUV4ZWN1dGlv bkRhdGEKIAlQYXJ0aXRpb25UdXBsZVJvdXRpbmcgKnByb3V0ZTsJLyogcGFydGl0aW9uIHJvdXRp bmcgaW5mbyAqLwogfSBBcHBseUV4ZWN1dGlvbkRhdGE7CiAKLS8qIFN0cnVjdCBmb3Igc2F2aW5n IGFuZCByZXN0b3JpbmcgYXBwbHkgZXJyY29udGV4dCBpbmZvcm1hdGlvbiAqLwotdHlwZWRlZiBz dHJ1Y3QgQXBwbHlFcnJvckNhbGxiYWNrQXJnCi17Ci0JTG9naWNhbFJlcE1zZ1R5cGUgY29tbWFu ZDsJLyogMCBpZiBpbnZhbGlkICovCi0JTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWw7Ci0KLQkv KiBSZW1vdGUgbm9kZSBpbmZvcm1hdGlvbiAqLwotCWludAkJCXJlbW90ZV9hdHRudW07CS8qIC0x IGlmIGludmFsaWQgKi8KLQlUcmFuc2FjdGlvbklkIHJlbW90ZV94aWQ7Ci0JWExvZ1JlY1B0cglm aW5pc2hfbHNuOwotCWNoYXIJICAgKm9yaWdpbl9uYW1lOwotfSBBcHBseUVycm9yQ2FsbGJhY2tB cmc7Ci0KLXN0YXRpYyBBcHBseUVycm9yQ2FsbGJhY2tBcmcgYXBwbHlfZXJyb3JfY2FsbGJhY2tf YXJnID0KKy8qIGVycmNvbnRleHQgdHJhY2tlciAqLworQXBwbHlFcnJvckNhbGxiYWNrQXJnIGFw cGx5X2Vycm9yX2NhbGxiYWNrX2FyZyA9CiB7CiAJLmNvbW1hbmQgPSAwLAogCS5yZWwgPSBOVUxM LApAQCAtMjQyLDcgKzI1MCw3IEBAIHN0YXRpYyBBcHBseUVycm9yQ2FsbGJhY2tBcmcgYXBwbHlf ZXJyb3JfY2FsbGJhY2tfYXJnID0KIAkub3JpZ2luX25hbWUgPSBOVUxMLAogfTsKIAotc3RhdGlj IE1lbW9yeUNvbnRleHQgQXBwbHlNZXNzYWdlQ29udGV4dCA9IE5VTEw7CitNZW1vcnlDb250ZXh0 IEFwcGx5TWVzc2FnZUNvbnRleHQgPSBOVUxMOwogTWVtb3J5Q29udGV4dCBBcHBseUNvbnRleHQg PSBOVUxMOwogCiAvKiBwZXIgc3RyZWFtIGNvbnRleHQgZm9yIHN0cmVhbWluZyB0cmFuc2FjdGlv bnMgKi8KQEAgLTI1MSwyNyArMjU5LDM5IEBAIHN0YXRpYyBNZW1vcnlDb250ZXh0IExvZ2ljYWxT dHJlYW1pbmdDb250ZXh0ID0gTlVMTDsKIFdhbFJlY2VpdmVyQ29ubiAqTG9nUmVwV29ya2VyV2Fs UmN2Q29ubiA9IE5VTEw7CiAKIFN1YnNjcmlwdGlvbiAqTXlTdWJzY3JpcHRpb24gPSBOVUxMOwot c3RhdGljIGJvb2wgTXlTdWJzY3JpcHRpb25WYWxpZCA9IGZhbHNlOworYm9vbCBNeVN1YnNjcmlw dGlvblZhbGlkID0gZmFsc2U7CiAKIGJvb2wJCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNl Owogc3RhdGljIFhMb2dSZWNQdHIgcmVtb3RlX2ZpbmFsX2xzbiA9IEludmFsaWRYTG9nUmVjUHRy OwogCiAvKiBmaWVsZHMgdmFsaWQgb25seSB3aGVuIHByb2Nlc3Npbmcgc3RyZWFtZWQgdHJhbnNh Y3Rpb24gKi8KLXN0YXRpYyBib29sIGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gZmFsc2U7Citi b29sIGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gZmFsc2U7CisKK1RyYW5zYWN0aW9uSWQgc3Ry ZWFtX3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworc3RhdGljIEFwcGx5Qmd3b3JrZXJTdGF0 ZSAqc3RyZWFtX2FwcGx5X3dvcmtlciA9IE5VTEw7CiAKLXN0YXRpYyBUcmFuc2FjdGlvbklkIHN0 cmVhbV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKy8qIENoZWNrIGlmIHdlIGFyZSBhcHBs eWluZyB0aGUgdHJhbnNhY3Rpb24gaW4gYW4gYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgKi8KKyNk ZWZpbmUgYXBwbHlfYmd3b3JrZXJfYWN0aXZlKCkgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uICYm IHN0cmVhbV9hcHBseV93b3JrZXIgIT0gTlVMTCkKKworLyoKKyAqIFRoZSBudW1iZXIgb2YgY2hh bmdlcyBkdXJpbmcgb25lIHN0cmVhbWluZyBibG9jayAob25seSBmb3IgYXBwbHkgYmFja2dyb3Vu ZAorICogd29ya2VycykKKyAqLworc3RhdGljIHVpbnQzMiBuY2hhbmdlcyA9IDA7CiAKIC8qCiAg KiBXZSBlbmFibGUgc2tpcHBpbmcgYWxsIGRhdGEgbW9kaWZpY2F0aW9uIGNoYW5nZXMgKElOU0VS VCwgVVBEQVRFLCBldGMuKSBmb3IKICAqIHRoZSBzdWJzY3JpcHRpb24gaWYgdGhlIHJlbW90ZSB0 cmFuc2FjdGlvbidzIGZpbmlzaCBMU04gbWF0Y2hlcyB0aGUgc3Vic2tpcGxzbi4KICAqIE9uY2Ug d2Ugc3RhcnQgc2tpcHBpbmcgY2hhbmdlcywgd2UgZG9uJ3Qgc3RvcCBpdCB1bnRpbCB3ZSBza2lw IGFsbCBjaGFuZ2VzIG9mCiAgKiB0aGUgdHJhbnNhY3Rpb24gZXZlbiBpZiBwZ19zdWJzY3JpcHRp b24gaXMgdXBkYXRlZCBhbmQgTXlTdWJzY3JpcHRpb24tPnNraXBsc24KLSAqIGdldHMgY2hhbmdl ZCBvciByZXNldCBkdXJpbmcgdGhhdC4gQWxzbywgaW4gc3RyZWFtaW5nIHRyYW5zYWN0aW9uIGNh c2VzLCB3ZQotICogZG9uJ3Qgc2tpcCByZWNlaXZpbmcgYW5kIHNwb29saW5nIHRoZSBjaGFuZ2Vz IHNpbmNlIHdlIGRlY2lkZSB3aGV0aGVyIG9yIG5vdAorICogZ2V0cyBjaGFuZ2VkIG9yIHJlc2V0 IGR1cmluZyB0aGF0LiBBbHNvLCBpbiBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gY2FzZXMgKHN0cmVh bWluZyA9IG9uKSwKKyAqIHdlIGRvbid0IHNraXAgcmVjZWl2aW5nIGFuZCBzcG9vbGluZyB0aGUg Y2hhbmdlcyBzaW5jZSB3ZSBkZWNpZGUgd2hldGhlciBvciBub3QKICAqIHRvIHNraXAgYXBwbHlp bmcgdGhlIGNoYW5nZXMgd2hlbiBzdGFydGluZyB0byBhcHBseSBjaGFuZ2VzLiBUaGUgc3Vic2tp cGxzbiBpcwogICogY2xlYXJlZCBhZnRlciBzdWNjZXNzZnVsbHkgc2tpcHBpbmcgdGhlIHRyYW5z YWN0aW9uIG9yIGFwcGx5aW5nIG5vbi1lbXB0eQogICogdHJhbnNhY3Rpb24uIFRoZSBsYXR0ZXIg cHJldmVudHMgdGhlIG1pc3Rha2VubHkgc3BlY2lmaWVkIHN1YnNraXBsc24gZnJvbQotICogYmVp bmcgbGVmdC4KKyAqIGJlaW5nIGxlZnQuIE5vdGUgdGhhdCB3ZSBjYW5ub3Qgc2tpcCB0aGUgc3Ry ZWFtaW5nIHRyYW5zYWN0aW9ucyB3aGVuIHVzaW5nCisgKiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtl cnMgYmVjYXVzZSB3ZSBjYW5ub3QgZ2V0IHRoZSBmaW5pc2ggTFNOIGJlZm9yZQorICogYXBwbHlp bmcgdGhlIGNoYW5nZXMuCiAgKi8KIHN0YXRpYyBYTG9nUmVjUHRyIHNraXBfeGFjdF9maW5pc2hf bHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAjZGVmaW5lIGlzX3NraXBwaW5nX2NoYW5nZXMoKSAo dW5saWtlbHkoIVhMb2dSZWNQdHJJc0ludmFsaWQoc2tpcF94YWN0X2ZpbmlzaF9sc24pKSkKQEAg LTMyNCw5ICszNDQsNiBAQCBzdGF0aWMgdm9pZCBtYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKHZv aWQpOwogCiBzdGF0aWMgdm9pZCBEaXNhYmxlU3Vic2NyaXB0aW9uQW5kRXhpdCh2b2lkKTsKIAot LyogcHJvdG90eXBlIG5lZWRlZCBiZWNhdXNlIG9mIHN0cmVhbV9jb21taXQgKi8KLXN0YXRpYyB2 b2lkIGFwcGx5X2Rpc3BhdGNoKFN0cmluZ0luZm8gcyk7Ci0KIHN0YXRpYyB2b2lkIGFwcGx5X2hh bmRsZV9jb21taXRfaW50ZXJuYWwoTG9naWNhbFJlcENvbW1pdERhdGEgKmNvbW1pdF9kYXRhKTsK IHN0YXRpYyB2b2lkIGFwcGx5X2hhbmRsZV9pbnNlcnRfaW50ZXJuYWwoQXBwbHlFeGVjdXRpb25E YXRhICplZGF0YSwKIAkJCQkJCQkJCQkgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywKQEAgLTM1OSw3 ICszNzYsNiBAQCBzdGF0aWMgdm9pZCBzdG9wX3NraXBwaW5nX2NoYW5nZXModm9pZCk7CiBzdGF0 aWMgdm9pZCBjbGVhcl9zdWJzY3JpcHRpb25fc2tpcF9sc24oWExvZ1JlY1B0ciBmaW5pc2hfbHNu KTsKIAogLyogRnVuY3Rpb25zIGZvciBhcHBseSBlcnJvciBjYWxsYmFjayAqLwotc3RhdGljIHZv aWQgYXBwbHlfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKTsKIHN0YXRpYyBpbmxpbmUgdm9pZCBz ZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRy IGxzbik7CiBzdGF0aWMgaW5saW5lIHZvaWQgcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZv KHZvaWQpOwogCkBAIC00MjYsNDAgKzQ0Miw4NSBAQCBlbmRfcmVwbGljYXRpb25fc3RlcCh2b2lk KQogfQogCiAvKgotICogSGFuZGxlIHN0cmVhbWVkIHRyYW5zYWN0aW9ucy4KKyAqIEhhbmRsZSBz dHJlYW1lZCB0cmFuc2FjdGlvbnMgZm9yIGJvdGggdGhlIG1haW4gYXBwbHkgd29ya2VyIGFuZCB0 aGUgYXBwbHkKKyAqIGJhY2tncm91bmQgd29ya2Vycy4KKyAqCisgKiBJbiBzdHJlYW1pbmcgY2Fz ZSAocmVjZWl2aW5nIGEgYmxvY2sgb2Ygc3RyZWFtZWQgdHJhbnNhY3Rpb24pLCBmb3IKKyAqIFNV QlNUUkVBTV9PTiBtb2RlLCBzaW1wbHkgcmVkaXJlY3QgaXQgdG8gYSBmaWxlIGZvciB0aGUgcHJv cGVyIHRvcGxldmVsCisgKiB0cmFuc2FjdGlvbiwgYW5kIGZvciBTVUJTVFJFQU1fUEFSQUxMRUwg bW9kZSwgc2VuZCB0aGUgY2hhbmdlcyB0byBhcHBseQorICogYmFja2dyb3VuZCB3b3JrZXJzIChM T0dJQ0FMX1JFUF9NU0dfUkVMQVRJT04gb3IgTE9HSUNBTF9SRVBfTVNHX1RZUEUgY2hhbmdlcwor ICogd2lsbCBhbHNvIGJlIGFwcGxpZWQgaW4gbWFpbiBhcHBseSB3b3JrZXIpLgogICoKLSAqIElm IGluIHN0cmVhbWluZyBtb2RlIChyZWNlaXZpbmcgYSBibG9jayBvZiBzdHJlYW1lZCB0cmFuc2Fj dGlvbiksIHdlCi0gKiBzaW1wbHkgcmVkaXJlY3QgaXQgdG8gYSBmaWxlIGZvciB0aGUgcHJvcGVy IHRvcGxldmVsIHRyYW5zYWN0aW9uLgorICogRm9yIG5vbi1zdHJlYW1lZCB0cmFuc2FjdGlvbnMs IHJldHVybnMgZmFsc2U7CisgKiBGb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb25zLCByZXR1cm5zIHRy dWUgaWYgaW4gbWFpbiBhcHBseSB3b3JrZXIsIGZhbHNlCisgKiBvdGhlcndpc2UuCiAgKgotICog UmV0dXJucyB0cnVlIGZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbnMsIGZhbHNlIG90aGVyd2lzZSAo cmVndWxhciBtb2RlKS4KKyAqIEV4Y2VwdGlvbjogV2hlbiB0aGUgbWFpbiBhcHBseSB3b3JrZXIg aXMgYXBwbHlpbmcgc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyBpbgorICogcGFyYWxsZWwgbW9kZSAo ZS5nLiB3aGVuIGFkZHJlc3NpbmcgTE9HSUNBTF9SRVBfTVNHX1JFTEFUSU9OIG9yCisgKiBMT0dJ Q0FMX1JFUF9NU0dfVFlQRSBjaGFuZ2VzKSwgdGhlbiByZXR1cm4gZmFsc2UuCiAgKi8KIHN0YXRp YyBib29sCiBoYW5kbGVfc3RyZWFtZWRfdHJhbnNhY3Rpb24oTG9naWNhbFJlcE1zZ1R5cGUgYWN0 aW9uLCBTdHJpbmdJbmZvIHMpCiB7Ci0JVHJhbnNhY3Rpb25JZCB4aWQ7CisJVHJhbnNhY3Rpb25J ZCBjdXJyZW50X3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCi0JLyogbm90IGluIHN0cmVh bWluZyBtb2RlICovCi0JaWYgKCFpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKKwkvKiBOb3QgaW4g c3RyZWFtaW5nIG1vZGUgKi8KKwlpZiAoIShpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiB8fCBhbV9h cHBseV9iZ3dvcmtlcigpKSkKIAkJcmV0dXJuIGZhbHNlOwogCi0JQXNzZXJ0KHN0cmVhbV9mZCAh PSBOVUxMKTsKIAlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoc3RyZWFtX3hpZCkpOwogCiAJ LyoKIAkgKiBXZSBzaG91bGQgaGF2ZSByZWNlaXZlZCBYSUQgb2YgdGhlIHN1YnhhY3QgYXMgdGhl IGZpcnN0IHBhcnQgb2YgdGhlCiAJICogbWVzc2FnZSwgc28gZXh0cmFjdCBpdC4KIAkgKi8KLQl4 aWQgPSBwcV9nZXRtc2dpbnQocywgNCk7CisJY3VycmVudF94aWQgPSBwcV9nZXRtc2dpbnQocywg NCk7CiAKLQlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkpCisJaWYgKCFUcmFuc2FjdGlv bklkSXNWYWxpZChjdXJyZW50X3hpZCkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUo RVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAogCQkJCSBlcnJtc2dfaW50ZXJuYWwoImludmFs aWQgdHJhbnNhY3Rpb24gSUQgaW4gc3RyZWFtZWQgcmVwbGljYXRpb24gdHJhbnNhY3Rpb24iKSkp OwogCi0JLyogQWRkIHRoZSBuZXcgc3VieGFjdCB0byB0aGUgYXJyYXkgKHVubGVzcyBhbHJlYWR5 IHRoZXJlKS4gKi8KLQlzdWJ4YWN0X2luZm9fYWRkKHhpZCk7CisJaWYgKGFtX2FwcGx5X2Jnd29y a2VyKCkpCisJeworCQkvKiBEZWZpbmUgYSBzYXZlcG9pbnQgZm9yIGEgc3VieGFjdCBpZiBuZWVk ZWQuICovCisJCWFwcGx5X2Jnd29ya2VyX3N1YnhhY3RfaW5mb19hZGQoY3VycmVudF94aWQpOwor CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlpZiAoYXBwbHlfYmd3b3JrZXJfYWN0aXZlKCkpCisJ eworCQkvKgorCQkgKiBUaGlzIGlzIHRoZSBtYWluIGFwcGx5IHdvcmtlciwgYnV0IHRoZXJlIGlz IGFuIGFwcGx5IGJhY2tncm91bmQKKwkJICogd29ya2VyLCBzbyBhcHBseSB0aGUgY2hhbmdlcyBv ZiB0aGlzIHRyYW5zYWN0aW9uIGluIHRoYXQgYmFja2dyb3VuZAorCQkgKiB3b3JrZXIuIFBhc3Mg dGhlIGRhdGEgdG8gdGhlIHdvcmtlci4KKwkJICovCisJCWFwcGx5X2Jnd29ya2VyX3NlbmRfZGF0 YShzdHJlYW1fYXBwbHlfd29ya2VyLCBzLT5sZW4sIHMtPmRhdGEpOworCQluY2hhbmdlcyArPSAx OworCisJCS8qCisJCSAqIFhYWCBUaGUgcHVibGlzaGVyIHNpZGUgZG9lc24ndCBhbHdheXMgc2Vu ZCByZWxhdGlvbi90eXBlIHVwZGF0ZQorCQkgKiBtZXNzYWdlcyBhZnRlciB0aGUgc3RyZWFtaW5n IHRyYW5zYWN0aW9uLCBzbyBhbHNvIHVwZGF0ZSB0aGUKKwkJICogcmVsYXRpb24vdHlwZSBpbiBt YWluIGFwcGx5IHdvcmtlciBoZXJlLiBTZWUgZnVuY3Rpb24KKwkJICogY2xlYW51cF9yZWxfc3lu Y19jYWNoZS4KKwkJICovCisJCWlmIChhY3Rpb24gPT0gTE9HSUNBTF9SRVBfTVNHX1JFTEFUSU9O IHx8CisJCQlhY3Rpb24gPT0gTE9HSUNBTF9SRVBfTVNHX1RZUEUpCisJCQlyZXR1cm4gZmFsc2U7 CisKKwkJcmV0dXJuIHRydWU7CisJfQorCisJLyoKKwkgKiBUaGlzIGlzIHRoZSBtYWluIGFwcGx5 IHdvcmtlciwgYnV0IHRoZXJlIGlzIG5vIGFwcGx5IGJhY2tncm91bmQgd29ya2VyLAorCSAqIHNv IHdyaXRlIHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQgYXBwbHkgd2hlbiB0aGUgZmluYWwgY29tbWl0 IGFycml2ZXMuCisJICoKKwkgKiBBZGQgdGhlIG5ldyBzdWJ4YWN0IHRvIHRoZSBhcnJheSAodW5s ZXNzIGFscmVhZHkgdGhlcmUpLgorCSAqLworCXN1YnhhY3RfaW5mb19hZGQoY3VycmVudF94aWQp OwogCi0JLyogd3JpdGUgdGhlIGNoYW5nZSB0byB0aGUgY3VycmVudCBmaWxlICovCisJLyogV3Jp dGUgdGhlIGNoYW5nZSB0byB0aGUgY3VycmVudCBmaWxlICovCiAJc3RyZWFtX3dyaXRlX2NoYW5n ZShhY3Rpb24sIHMpOwogCiAJcmV0dXJuIHRydWU7CkBAIC04NDQsNiArOTA1LDkgQEAgYXBwbHlf aGFuZGxlX2NvbW1pdChTdHJpbmdJbmZvIHMpCiAKIAlhcHBseV9oYW5kbGVfY29tbWl0X2ludGVy bmFsKCZjb21taXRfZGF0YSk7CiAKKwkvKiBDaGVjayB0aGUgc3RhdHVzIG9mIGFwcGx5IGJhY2tn cm91bmQgd29ya2VyIGlmIGFueS4gKi8KKwlhcHBseV9iZ3dvcmtlcl9jaGVja19zdGF0dXMoKTsK KwogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4g cGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhjb21taXRfZGF0YS5lbmRfbHNu KTsKIApAQCAtODk4LDcgKzk2Miw5IEBAIGFwcGx5X2hhbmRsZV9wcmVwYXJlX2ludGVybmFsKExv Z2ljYWxSZXBQcmVwYXJlZFR4bkRhdGEgKnByZXBhcmVfZGF0YSkKIAkgKiBCZWdpblRyYW5zYWN0 aW9uQmxvY2sgaXMgbmVjZXNzYXJ5IHRvIGJhbGFuY2UgdGhlIEVuZFRyYW5zYWN0aW9uQmxvY2sK IAkgKiBjYWxsZWQgd2l0aGluIHRoZSBQcmVwYXJlVHJhbnNhY3Rpb25CbG9jayBiZWxvdy4KIAkg Ki8KLQlCZWdpblRyYW5zYWN0aW9uQmxvY2soKTsKKwlpZiAoIUlzVHJhbnNhY3Rpb25CbG9jaygp KQorCQlCZWdpblRyYW5zYWN0aW9uQmxvY2soKTsKKwogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFu ZCgpOyAvKiBDb21wbGV0ZXMgdGhlIHByZWNlZGluZyBCZWdpbiBjb21tYW5kLiAqLwogCiAJLyoK QEAgLTk1MCw2ICsxMDE2LDkgQEAgYXBwbHlfaGFuZGxlX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQog CiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKKwkvKiBDaGVjayB0aGUgc3RhdHVz IG9mIGFwcGx5IGJhY2tncm91bmQgd29ya2VyIGlmIGFueS4gKi8KKwlhcHBseV9iZ3dvcmtlcl9j aGVja19zdGF0dXMoKTsKKwogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBz eW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhwcmVw YXJlX2RhdGEuZW5kX2xzbik7CiAKQEAgLTEwNjQsMTAgKzExMzMsNiBAQCBhcHBseV9oYW5kbGVf cm9sbGJhY2tfcHJlcGFyZWQoU3RyaW5nSW5mbyBzKQogCiAvKgogICogSGFuZGxlIFNUUkVBTSBQ UkVQQVJFLgotICoKLSAqIExvZ2ljIGlzIGluIHR3byBwYXJ0czoKLSAqIDEuIFJlcGxheSBhbGwg dGhlIHNwb29sZWQgb3BlcmF0aW9ucwotICogMi4gTWFyayB0aGUgdHJhbnNhY3Rpb24gYXMgcHJl cGFyZWQKICAqLwogc3RhdGljIHZvaWQKIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShTdHJp bmdJbmZvIHMpCkBAIC0xMDg4LDI0ICsxMTUzLDc4IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJl cGFyZShTdHJpbmdJbmZvIHMpCiAJbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9wcmVwYXJlKHMsICZw cmVwYXJlX2RhdGEpOwogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QocHJlcGFyZV9kYXRh LnhpZCwgcHJlcGFyZV9kYXRhLnByZXBhcmVfbHNuKTsKIAotCWVsb2coREVCVUcxLCAicmVjZWl2 ZWQgcHJlcGFyZSBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb24gJXUiLCBwcmVwYXJlX2RhdGEueGlk KTsKKwlpZiAoYW1fYXBwbHlfYmd3b3JrZXIoKSkKKwl7CisJCS8qIE1hcmsgdGhlIHRyYW5zYWN0 aW9uIGFzIHByZXBhcmVkLiAqLworCQlhcHBseV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5hbCgmcHJl cGFyZV9kYXRhKTsKIAotCS8qIFJlcGxheSBhbGwgdGhlIHNwb29sZWQgb3BlcmF0aW9ucy4gKi8K LQlhcHBseV9zcG9vbGVkX21lc3NhZ2VzKHByZXBhcmVfZGF0YS54aWQsIHByZXBhcmVfZGF0YS5w cmVwYXJlX2xzbik7CisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JLyogTWFyayB0 aGUgdHJhbnNhY3Rpb24gYXMgcHJlcGFyZWQuICovCi0JYXBwbHlfaGFuZGxlX3ByZXBhcmVfaW50 ZXJuYWwoJnByZXBhcmVfZGF0YSk7CisJCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxzZSk7CiAKLQlD b21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJbGlzdF9mcmVlKHN1YnhhY3RsaXN0KTsKKwkJ c3VieGFjdGxpc3QgPSBOSUw7CiAKLQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOworCQlhcHBs eV9iZ3dvcmtlcl9zZXRfc3RhdHVzKEFQUExZX0JHV09SS0VSX0ZJTklTSEVEKTsKKwl9CisJZWxz ZQorCXsKKwkJLyogVGhpcyBpcyB0aGUgbWFpbiBhcHBseSB3b3JrZXIuICovCisJCUFwcGx5Qmd3 b3JrZXJTdGF0ZSAqd3N0YXRlID0gYXBwbHlfYmd3b3JrZXJfZmluZChwcmVwYXJlX2RhdGEueGlk KTsKIAotCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKKwkJZWxv ZyhERUJVRzEsICJyZWNlaXZlZCBwcmVwYXJlIGZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbiAldSIs CisJCQkgcHJlcGFyZV9kYXRhLnhpZCk7CisKKwkJLyoKKwkJICogQ2hlY2sgaWYgd2UgYXJlIHBy b2Nlc3NpbmcgdGhpcyB0cmFuc2FjdGlvbiBpbiBhbiBhcHBseSBiYWNrZ3JvdW5kCisJCSAqIHdv cmtlciBhbmQgaWYgc28sIHNlbmQgdGhlIGNoYW5nZXMgdG8gdGhhdCB3b3JrZXIuCisJCSAqLwor CQlpZiAod3N0YXRlKQorCQl7CisJCQkvKiBTZW5kIFNUUkVBTSBQUkVQQVJFIG1lc3NhZ2UgdG8g dGhlIGFwcGx5IGJhY2tncm91bmQgd29ya2VyLiAqLworCQkJYXBwbHlfYmd3b3JrZXJfc2VuZF9k YXRhKHdzdGF0ZSwgcy0+bGVuLCBzLT5kYXRhKTsKKworCQkJLyoKKwkJCSAqIEFmdGVyIHNlbmRp bmcgdGhlIGRhdGEgdG8gdGhlIGFwcGx5IGJhY2tncm91bmQgd29ya2VyLCB3YWl0IGZvcgorCQkJ ICogdGhhdCB3b3JrZXIgdG8gZmluaXNoLiBUaGlzIGlzIG5lY2Vzc2FyeSB0byBtYWludGFpbiBj b21taXQKKwkJCSAqIG9yZGVyIHdoaWNoIGF2b2lkcyBmYWlsdXJlcyBkdWUgdG8gdHJhbnNhY3Rp b24gZGVwZW5kZW5jaWVzIGFuZAorCQkJICogZGVhZGxvY2tzLgorCQkJICovCisJCQlhcHBseV9i Z3dvcmtlcl93YWl0X2Zvcih3c3RhdGUsIEFQUExZX0JHV09SS0VSX0ZJTklTSEVEKTsKKwkJCWFw cGx5X2Jnd29ya2VyX2ZyZWUod3N0YXRlKTsKKworCQkJcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNl KTsKKwkJCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKKwkJfQor CQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBUaGUgdHJhbnNhY3Rpb24gaGFzIGJlZW4gc2VyaWFs aXplZCB0byBmaWxlLCBzbyByZXBsYXkgYWxsIHRoZQorCQkJICogc3Bvb2xlZCBvcGVyYXRpb25z LgorCQkJICovCisJCQlhcHBseV9zcG9vbGVkX21lc3NhZ2VzKHByZXBhcmVfZGF0YS54aWQsIHBy ZXBhcmVfZGF0YS5wcmVwYXJlX2xzbik7CisKKwkJCS8qIE1hcmsgdGhlIHRyYW5zYWN0aW9uIGFz IHByZXBhcmVkLiAqLworCQkJYXBwbHlfaGFuZGxlX3ByZXBhcmVfaW50ZXJuYWwoJnByZXBhcmVf ZGF0YSk7CisKKwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCQlwZ3N0YXRfcmVw b3J0X3N0YXQoZmFsc2UpOworCisJCQlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEu ZW5kX2xzbik7CisKKwkJCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOworCisJCQkvKiBV bmxpbmsgdGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8u ICovCisJCQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBw cmVwYXJlX2RhdGEueGlkKTsKKwkJfQorCX0KIAogCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZh bHNlOworCXN0cmVhbV9hcHBseV93b3JrZXIgPSBOVUxMOwogCi0JLyogdW5saW5rIHRoZSBmaWxl cyB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcyBhbmQgc3VieGFjdCBpbmZvLiAqLwotCXN0cmVhbV9j bGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHByZXBhcmVfZGF0YS54aWQp OworCS8qIENoZWNrIHRoZSBzdGF0dXMgb2YgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgaWYgYW55 LiAqLworCWFwcGx5X2Jnd29ya2VyX2NoZWNrX3N0YXR1cygpOwogCiAJLyogUHJvY2VzcyBhbnkg dGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9j ZXNzX3N5bmNpbmdfdGFibGVzKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKQEAgLTExNTUsMTUgKzEy NzQsNiBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0YXJ0KFN0cmluZ0luZm8gcykKIAkJCQkoZXJy Y29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCiAJCQkJIGVycm1zZ19pbnRlcm5hbCgi ZHVwbGljYXRlIFNUUkVBTSBTVEFSVCBtZXNzYWdlIikpKTsKIAotCS8qCi0JICogU3RhcnQgYSB0 cmFuc2FjdGlvbiBvbiBzdHJlYW0gc3RhcnQsIHRoaXMgdHJhbnNhY3Rpb24gd2lsbCBiZSBjb21t aXR0ZWQKLQkgKiBvbiB0aGUgc3RyZWFtIHN0b3AgdW5sZXNzIGl0IGlzIGEgdGFibGVzeW5jIHdv cmtlciBpbiB3aGljaCBjYXNlIGl0Ci0JICogd2lsbCBiZSBjb21taXR0ZWQgYWZ0ZXIgcHJvY2Vz c2luZyBhbGwgdGhlIG1lc3NhZ2VzLiBXZSBuZWVkIHRoZQotCSAqIHRyYW5zYWN0aW9uIGZvciBo YW5kbGluZyB0aGUgYnVmZmlsZSwgdXNlZCBmb3Igc2VyaWFsaXppbmcgdGhlCi0JICogc3RyZWFt aW5nIGRhdGEgYW5kIHN1YnhhY3QgaW5mby4KLQkgKi8KLQliZWdpbl9yZXBsaWNhdGlvbl9zdGVw KCk7Ci0KIAkvKiBub3RpZnkgaGFuZGxlIG1ldGhvZHMgd2UncmUgcHJvY2Vzc2luZyBhIHJlbW90 ZSB0cmFuc2FjdGlvbiAqLwogCWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gdHJ1ZTsKIApAQCAt MTE3NywzNiArMTI4Nyw5MyBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0YXJ0KFN0cmluZ0luZm8g cykKIAogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3Qoc3RyZWFtX3hpZCwgSW52YWxpZFhM b2dSZWNQdHIpOwogCi0JLyoKLQkgKiBJbml0aWFsaXplIHRoZSB3b3JrZXIncyBzdHJlYW1fZmls ZXNldCBpZiB3ZSBoYXZlbid0IHlldC4gVGhpcyB3aWxsIGJlCi0JICogdXNlZCBmb3IgdGhlIGVu dGlyZSBkdXJhdGlvbiBvZiB0aGUgd29ya2VyIHNvIGNyZWF0ZSBpdCBpbiBhIHBlcm1hbmVudAot CSAqIGNvbnRleHQuIFdlIGNyZWF0ZSB0aGlzIG9uIHRoZSB2ZXJ5IGZpcnN0IHN0cmVhbWluZyBt ZXNzYWdlIGZyb20gYW55Ci0JICogdHJhbnNhY3Rpb24gYW5kIHRoZW4gdXNlIGl0IGZvciB0aGlz IGFuZCBvdGhlciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zLgotCSAqIE5vdywgd2UgY291bGQgY3Jl YXRlIGEgZmlsZXNldCBhdCB0aGUgc3RhcnQgb2YgdGhlIHdvcmtlciBhcyB3ZWxsIGJ1dAotCSAq IHRoZW4gd2Ugd29uJ3QgYmUgc3VyZSB0aGF0IGl0IHdpbGwgZXZlciBiZSB1c2VkLgotCSAqLwot CWlmIChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0ID09IE5VTEwpCisJaWYgKGFt X2FwcGx5X2Jnd29ya2VyKCkpCiAJewotCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKLQotCQlvbGRj dHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKKwkJLyoKKwkJICogTWFr ZSBzdXJlIHRoZSBoYW5kbGUgYXBwbHlfZGlzcGF0Y2ggbWV0aG9kcyBhcmUgYXdhcmUgd2UncmUg aW4gYQorCQkgKiByZW1vdGUgdHJhbnNhY3Rpb24uCisJCSAqLworCQlpbl9yZW1vdGVfdHJhbnNh Y3Rpb24gPSB0cnVlOwogCi0JCU15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQgPSBw YWxsb2Moc2l6ZW9mKEZpbGVTZXQpKTsKLQkJRmlsZVNldEluaXQoTXlMb2dpY2FsUmVwV29ya2Vy LT5zdHJlYW1fZmlsZXNldCk7CisJCS8qIEJlZ2luIHRoZSB0cmFuc2FjdGlvbi4gKi8KKwkJQWNj ZXB0SW52YWxpZGF0aW9uTWVzc2FnZXMoKTsKKwkJbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbigp OwogCi0JCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCQlTdGFydFRyYW5zYWN0aW9u Q29tbWFuZCgpOworCQlCZWdpblRyYW5zYWN0aW9uQmxvY2soKTsKKwkJQ29tbWl0VHJhbnNhY3Rp b25Db21tYW5kKCk7CiAJfQorCWVsc2UKKwl7CisJCS8qCisJCSAqIFRoaXMgaXMgdGhlIG1haW4g YXBwbHkgd29ya2VyLiBDaGVjayBpZiB0aGVyZSBpcyBhbnkgZnJlZSBhcHBseQorCQkgKiBiYWNr Z3JvdW5kIHdvcmtlciB3ZSBjYW4gdXNlIHRvIHByb2Nlc3MgdGhpcyB0cmFuc2FjdGlvbi4KKwkJ ICovCisJCWlmIChmaXJzdF9zZWdtZW50KQorCQkJc3RyZWFtX2FwcGx5X3dvcmtlciA9IGFwcGx5 X2Jnd29ya2VyX3N0YXJ0KHN0cmVhbV94aWQpOworCQllbHNlCisJCQlzdHJlYW1fYXBwbHlfd29y a2VyID0gYXBwbHlfYmd3b3JrZXJfZmluZChzdHJlYW1feGlkKTsKIAotCS8qIG9wZW4gdGhlIHNw b29sIGZpbGUgZm9yIHRoaXMgdHJhbnNhY3Rpb24gKi8KLQlzdHJlYW1fb3Blbl9maWxlKE15TG9n aWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQsIGZpcnN0X3NlZ21lbnQpOworCQlpZiAo c3RyZWFtX2FwcGx5X3dvcmtlcikKKwkJeworCQkJLyoKKwkJCSAqIElmIHdlIGhhdmUgZm91bmQg YSBmcmVlIHdvcmtlciBvciBpZiB3ZSBhcmUgYWxyZWFkeSBhcHBseWluZyB0aGlzCisJCQkgKiB0 cmFuc2FjdGlvbiBpbiBhbiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciwgdGhlbiB3ZSBwYXNzIHRo ZSBkYXRhIHRvCisJCQkgKiB0aGF0IHdvcmtlci4KKwkJCSAqLworCQkJaWYgKGZpcnN0X3NlZ21l bnQpCisJCQkJYXBwbHlfYmd3b3JrZXJfc2VuZF9kYXRhKHN0cmVhbV9hcHBseV93b3JrZXIsIHMt Pmxlbiwgcy0+ZGF0YSk7CiAKLQkvKiBpZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3Qgc2VnbWVudCwg b3BlbiBleGlzdGluZyBzdWJ4YWN0IGZpbGUgKi8KLQlpZiAoIWZpcnN0X3NlZ21lbnQpCi0JCXN1 YnhhY3RfaW5mb19yZWFkKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOwor CQkJbmNoYW5nZXMgPSAwOworCQkJZWxvZyhERUJVRzEsICJzdGFydGluZyBzdHJlYW1pbmcgb2Yg eGlkICV1Iiwgc3RyZWFtX3hpZCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJICogU2lu Y2Ugbm8gYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgaXMgYXZhaWxhYmxlIGZvciB0aGUgZmlyc3QK KwkJCSAqIHN0cmVhbSBzdGFydCwgc2VyaWFsaXplIGFsbCB0aGUgY2hhbmdlcyBvZiB0aGUgdHJh bnNhY3Rpb24uCisJCQkgKgorCQkJICogU3RhcnQgYSB0cmFuc2FjdGlvbiBvbiBzdHJlYW0gc3Rh cnQsIHRoaXMgdHJhbnNhY3Rpb24gd2lsbCBiZQorCQkJICogY29tbWl0dGVkIG9uIHRoZSBzdHJl YW0gc3RvcCB1bmxlc3MgaXQgaXMgYSB0YWJsZXN5bmMgd29ya2VyIGluCisJCQkgKiB3aGljaCBj YXNlIGl0IHdpbGwgYmUgY29tbWl0dGVkIGFmdGVyIHByb2Nlc3NpbmcgYWxsIHRoZQorCQkJICog bWVzc2FnZXMuIFdlIG5lZWQgdGhlIHRyYW5zYWN0aW9uIGZvciBoYW5kbGluZyB0aGUgYnVmZmls ZSwKKwkJCSAqIHVzZWQgZm9yIHNlcmlhbGl6aW5nIHRoZSBzdHJlYW1pbmcgZGF0YSBhbmQgc3Vi eGFjdCBpbmZvLgorCQkJICovCisJCQliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CiAKLQlwZ3N0 YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX1JVTk5JTkcsIE5VTEwpOworCQkJLyoKKwkJCSAqIElu aXRpYWxpemUgdGhlIHdvcmtlcidzIHN0cmVhbV9maWxlc2V0IGlmIHdlIGhhdmVuJ3QgeWV0LiBU aGlzIHdpbGwKKwkJCSAqIGJlIHVzZWQgZm9yIHRoZSBlbnRpcmUgZHVyYXRpb24gb2YgdGhlIHdv cmtlciBzbyBjcmVhdGUgaXQgaW4gYQorCQkJICogcGVybWFuZW50IGNvbnRleHQuIFdlIGNyZWF0 ZSB0aGlzIG9uIHRoZSB2ZXJ5IGZpcnN0IHN0cmVhbWluZworCQkJICogbWVzc2FnZSBmcm9tIGFu eSB0cmFuc2FjdGlvbiBhbmQgdGhlbiB1c2UgaXQgZm9yIHRoaXMgYW5kIG90aGVyCisJCQkgKiBz dHJlYW1pbmcgdHJhbnNhY3Rpb25zLiBOb3csIHdlIGNvdWxkIGNyZWF0ZSBhIGZpbGVzZXQgYXQg dGhlIHN0YXJ0CisJCQkgKiBvZiB0aGUgd29ya2VyIGFzIHdlbGwgYnV0IHRoZW4gd2Ugd29uJ3Qg YmUgc3VyZSB0aGF0IGl0IHdpbGwgZXZlcgorCQkJICogYmUgdXNlZC4KKwkJCSAqLworCQkJaWYg KE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQgPT0gTlVMTCkKKwkJCXsKKwkJCQlN ZW1vcnlDb250ZXh0IG9sZGN0eDsKIAotCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7CisJCQkJb2xk Y3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CisKKwkJCQlNeUxvZ2lj YWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0ID0gcGFsbG9jKHNpemVvZihGaWxlU2V0KSk7CisJ CQkJRmlsZVNldEluaXQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCk7CisKKwkJ CQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKKwkJCX0KKworCQkJLyogT3BlbiB0aGUg c3Bvb2wgZmlsZSBmb3IgdGhpcyB0cmFuc2FjdGlvbi4gKi8KKwkJCXN0cmVhbV9vcGVuX2ZpbGUo TXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCwgZmlyc3Rfc2VnbWVudCk7CisK KwkJCS8qIElmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBzZWdtZW50LCBvcGVuIGV4aXN0aW5nIHN1 YnhhY3QgZmlsZS4gKi8KKwkJCWlmICghZmlyc3Rfc2VnbWVudCkKKwkJCQlzdWJ4YWN0X2luZm9f cmVhZChNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkKTsKKworCQkJZW5kX3Jl cGxpY2F0aW9uX3N0ZXAoKTsKKwkJfQorCX0KKworCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RB VEVfUlVOTklORywgTlVMTCk7CiB9CiAKIC8qCkBAIC0xMjIwLDUzICsxMzg3LDUyIEBAIGFwcGx5 X2hhbmRsZV9zdHJlYW1fc3RvcChTdHJpbmdJbmZvIHMpCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9Q Uk9UT0NPTF9WSU9MQVRJT04pLAogCQkJCSBlcnJtc2dfaW50ZXJuYWwoIlNUUkVBTSBTVE9QIG1l c3NhZ2Ugd2l0aG91dCBTVFJFQU0gU1RBUlQiKSkpOwogCi0JLyoKLQkgKiBDbG9zZSB0aGUgZmls ZSB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcywgYW5kIHNlcmlhbGl6ZSBpbmZvcm1hdGlvbiBhYm91 dAotCSAqIHN1YnhhY3RzIGZvciB0aGUgdG9wbGV2ZWwgdHJhbnNhY3Rpb24uCi0JICovCi0Jc3Vi eGFjdF9pbmZvX3dyaXRlKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOwot CXN0cmVhbV9jbG9zZV9maWxlKCk7CisJaWYgKGFwcGx5X2Jnd29ya2VyX2FjdGl2ZSgpKQorCXsK KwkJY2hhciBhY3Rpb24gPSBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX1NUT1A7CiAKLQkvKiBXZSBt dXN0IGJlIGluIGEgdmFsaWQgdHJhbnNhY3Rpb24gc3RhdGUgKi8KLQlBc3NlcnQoSXNUcmFuc2Fj dGlvblN0YXRlKCkpOworCQlhcHBseV9iZ3dvcmtlcl9zZW5kX2RhdGEoc3RyZWFtX2FwcGx5X3dv cmtlciwgMSwgJmFjdGlvbik7CiAKLQkvKiBDb21taXQgdGhlIHBlci1zdHJlYW0gdHJhbnNhY3Rp b24gKi8KLQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJZWxvZyhERUJVRzEsICJzdG9w cGVkIHN0cmVhbWluZyBvZiB4aWQgJXUsICV1IGNoYW5nZXMgc3RyZWFtZWQiLCBzdHJlYW1feGlk LCBuY2hhbmdlcyk7CisJfQorCWVsc2UKKwl7CisJCS8qCisJCSAqIENsb3NlIHRoZSBmaWxlIHdp dGggc2VyaWFsaXplZCBjaGFuZ2VzLCBhbmQgc2VyaWFsaXplIGluZm9ybWF0aW9uCisJCSAqIGFi b3V0IHN1YnhhY3RzIGZvciB0aGUgdG9wbGV2ZWwgdHJhbnNhY3Rpb24uCisJCSAqLworCQlzdWJ4 YWN0X2luZm9fd3JpdGUoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCk7CisJ CXN0cmVhbV9jbG9zZV9maWxlKCk7CiAKLQlpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IGZhbHNl OworCQkvKiBXZSBtdXN0IGJlIGluIGEgdmFsaWQgdHJhbnNhY3Rpb24gc3RhdGUgKi8KKwkJQXNz ZXJ0KElzVHJhbnNhY3Rpb25TdGF0ZSgpKTsKIAotCS8qIFJlc2V0IHBlci1zdHJlYW0gY29udGV4 dCAqLwotCU1lbW9yeUNvbnRleHRSZXNldChMb2dpY2FsU3RyZWFtaW5nQ29udGV4dCk7CisJCS8q IENvbW1pdCB0aGUgcGVyLXN0cmVhbSB0cmFuc2FjdGlvbiAqLworCQlDb21taXRUcmFuc2FjdGlv bkNvbW1hbmQoKTsKKworCQkvKiBSZXNldCBwZXItc3RyZWFtIGNvbnRleHQgKi8KKwkJTWVtb3J5 Q29udGV4dFJlc2V0KExvZ2ljYWxTdHJlYW1pbmdDb250ZXh0KTsKKwl9CisKKwlpbl9zdHJlYW1l ZF90cmFuc2FjdGlvbiA9IGZhbHNlOworCXN0cmVhbV9hcHBseV93b3JrZXIgPSBOVUxMOwogCiAJ cGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBOVUxMKTsKIAlyZXNldF9hcHBseV9l cnJvcl9jb250ZXh0X2luZm8oKTsKIH0KIAogLyoKLSAqIEhhbmRsZSBTVFJFQU0gYWJvcnQgbWVz c2FnZS4KKyAqIEhhbmRsZSBTVFJFQU0gQUJPUlQgbWVzc2FnZSB3aGVuIHRoZSB0cmFuc2FjdGlv biB3YXMgc3BpbGxlZCB0byBkaXNrLgogICovCiBzdGF0aWMgdm9pZAotYXBwbHlfaGFuZGxlX3N0 cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCitzZXJpYWxpemVfc3RyZWFtX2Fib3J0KFRyYW5zYWN0 aW9uSWQgeGlkLCBUcmFuc2FjdGlvbklkIHN1YnhpZCkKIHsKLQlUcmFuc2FjdGlvbklkIHhpZDsK LQlUcmFuc2FjdGlvbklkIHN1YnhpZDsKLQotCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikK LQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElP TiksCi0JCQkJIGVycm1zZ19pbnRlcm5hbCgiU1RSRUFNIEFCT1JUIG1lc3NhZ2Ugd2l0aG91dCBT VFJFQU0gU1RPUCIpKSk7Ci0KLQlsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KHMsICZ4aWQs ICZzdWJ4aWQpOwotCiAJLyoKIAkgKiBJZiB0aGUgdHdvIFhJRHMgYXJlIHRoZSBzYW1lLCBpdCdz IGluIGZhY3QgYWJvcnQgb2YgdG9wbGV2ZWwgeGFjdCwgc28KIAkgKiBqdXN0IGRlbGV0ZSB0aGUg ZmlsZXMgd2l0aCBzZXJpYWxpemVkIGluZm8uCiAJICovCiAJaWYgKHhpZCA9PSBzdWJ4aWQpCi0J ewotCQlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHhpZCwgSW52YWxpZFhMb2dSZWNQdHIp OwogCQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQp OwotCX0KIAllbHNlCiAJewogCQkvKgpAQCAtMTI5MCw4ICsxNDU2LDYgQEAgYXBwbHlfaGFuZGxl X3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCiAJCWJvb2wJCWZvdW5kID0gZmFsc2U7CiAJCWNo YXIJCXBhdGhbTUFYUEdQQVRIXTsKIAotCQlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHN1 YnhpZCwgSW52YWxpZFhMb2dSZWNQdHIpOwotCiAJCXN1YmlkeCA9IC0xOwogCQliZWdpbl9yZXBs aWNhdGlvbl9zdGVwKCk7CiAJCXN1YnhhY3RfaW5mb19yZWFkKE15TG9naWNhbFJlcFdvcmtlci0+ c3ViaWQsIHhpZCk7CkBAIC0xMzE2LDcgKzE0ODAsNiBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2Fi b3J0KFN0cmluZ0luZm8gcykKIAkJCWNsZWFudXBfc3VieGFjdF9pbmZvKCk7CiAJCQllbmRfcmVw bGljYXRpb25fc3RlcCgpOwogCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7Ci0JCQlyZXNl dF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKIAkJCXJldHVybjsKIAkJfQogCkBAIC0xMzM5 LDYgKzE1MDIsMTQzIEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQog CQllbmRfcmVwbGljYXRpb25fc3RlcCgpOwogCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsK IAl9Cit9CisKKy8qCisgKiBIYW5kbGUgU1RSRUFNIEFCT1JUIG1lc3NhZ2UuCisgKi8KK3N0YXRp YyB2b2lkCithcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKK3sKKwlUcmFu c2FjdGlvbklkIHhpZDsKKwlUcmFuc2FjdGlvbklkIHN1YnhpZDsKKwlMb2dpY2FsUmVwU3RyZWFt QWJvcnREYXRhIGFib3J0X2RhdGE7CisJYm9vbCByZWFkX2Fib3J0X2xzbiA9IGZhbHNlOworCisJ aWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJj b2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKKwkJCQkgZXJybXNnX2ludGVybmFsKCJT VFJFQU0gQUJPUlQgbWVzc2FnZSB3aXRob3V0IFNUUkVBTSBTVE9QIikpKTsKKworCS8qIENoZWNr IHdoZXRoZXIgdGhlIHB1Ymxpc2hlciBzZW5kcyBhYm9ydF9sc24gYW5kIGFib3J0X3RpbWUuICov CisJaWYgKGFtX2FwcGx5X2Jnd29ya2VyKCkpCisJCXJlYWRfYWJvcnRfbHNuID0gTXlQYXJhbGxl bFNoYXJlZC0+cHJvdG9fdmVyc2lvbiA+PQorCQkJCQkJIExPR0lDQUxSRVBfUFJPVE9fU1RSRUFN X1BBUkFMTEVMX1ZFUlNJT05fTlVNOworCisJbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChz LCAmYWJvcnRfZGF0YSwgcmVhZF9hYm9ydF9sc24pOworCisJeGlkID0gYWJvcnRfZGF0YS54aWQ7 CisJc3VieGlkID0gYWJvcnRfZGF0YS5zdWJ4aWQ7CisKKwlzZXRfYXBwbHlfZXJyb3JfY29udGV4 dF94YWN0KHN1YnhpZCwgYWJvcnRfZGF0YS5hYm9ydF9sc24pOworCisJaWYgKGFtX2FwcGx5X2Jn d29ya2VyKCkpCisJeworCQllbG9nKERFQlVHMSwgIltBcHBseSBCR1cgIyV1XSBhYm9ydGluZyBj dXJyZW50IHRyYW5zYWN0aW9uIHhpZD0ldSwgc3VieGlkPSV1IiwKKwkJCSBNeVBhcmFsbGVsU2hh cmVkLT53b3JrZXJfaWQgLCBHZXRDdXJyZW50VHJhbnNhY3Rpb25JZElmQW55KCksCisJCQkgR2V0 Q3VycmVudFN1YlRyYW5zYWN0aW9uSWQoKSk7CisKKwkJLyoKKwkJICogVXBkYXRlIG9yaWdpbiBz dGF0ZSBzbyB3ZSBjYW4gcmVzdGFydCBzdHJlYW1pbmcgZnJvbSBjb3JyZWN0CisJCSAqIHBvc2l0 aW9uIGluIGNhc2Ugb2YgY3Jhc2guCisJCSAqLworCQlpZiAocmVhZF9hYm9ydF9sc24pCisJCXsK KwkJCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fbHNuID0gYWJvcnRfZGF0YS5hYm9ydF9sc247 CisJCQlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX3RpbWVzdGFtcCA9IGFib3J0X2RhdGEuYWJv cnRfdGltZTsKKwkJfQorCisJCS8qCisJCSAqIElmIHRoZSB0d28gWElEcyBhcmUgdGhlIHNhbWUs IGl0J3MgaW4gZmFjdCBhYm9ydCBvZiB0b3BsZXZlbCB4YWN0LAorCQkgKiBzbyBqdXN0IGZyZWUg dGhlIHN1YnhhY3RsaXN0LgorCQkgKi8KKwkJaWYgKHN1YnhpZCA9PSB4aWQpCisJCXsKKwkJCUFi b3J0Q3VycmVudFRyYW5zYWN0aW9uKCk7CisKKwkJCUVuZFRyYW5zYWN0aW9uQmxvY2soZmFsc2Up OworCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkJCWluX3JlbW90ZV90cmFuc2Fj dGlvbiA9IGZhbHNlOworCQkJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBOVUxM KTsKKworCQkJbGlzdF9mcmVlKHN1YnhhY3RsaXN0KTsKKwkJCXN1YnhhY3RsaXN0ID0gTklMOwor CisJCQlhcHBseV9iZ3dvcmtlcl9zZXRfc3RhdHVzKEFQUExZX0JHV09SS0VSX0ZJTklTSEVEKTsK KwkJfQorCQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBPSywgc28gaXQncyBhIHN1YnhhY3QuIFJv bGxiYWNrIHRvIHRoZSBzYXZlcG9pbnQuCisJCQkgKgorCQkJICogV2UgYWxzbyBuZWVkIHRvIHJl YWQgdGhlIHN1YnhhY3RsaXN0LCBkZXRlcm1pbmUgdGhlIG9mZnNldAorCQkJICogdHJhY2tlZCBm b3IgdGhlIHN1YnhhY3QsIGFuZCB0cnVuY2F0ZSB0aGUgbGlzdC4KKwkJCSAqLworCQkJaW50CQkJ aTsKKwkJCWJvb2wJCWZvdW5kID0gZmFsc2U7CisJCQljaGFyCQlzcG5hbWVbTUFYUEdQQVRIXTsK KworCQkJc25wcmludGYoc3BuYW1lLCBNQVhQR1BBVEgsICJzYXZlcG9pbnRfZm9yX3hpZF8ldSIs IHN1YnhpZCk7CisKKwkJCWVsb2coREVCVUcxLCAiW0FwcGx5IEJHVyAjJXVdIHJvbGxpbmcgYmFj ayB0byBzYXZlcG9pbnQgJXMiLAorCQkJCSBNeVBhcmFsbGVsU2hhcmVkLT53b3JrZXJfaWQsIHNw bmFtZSk7CisKKwkJCWZvciAoaSA9IGxpc3RfbGVuZ3RoKHN1YnhhY3RsaXN0KSAtIDE7IGkgPj0g MDsgaS0tKQorCQkJeworCQkJCXhpZCA9IChUcmFuc2FjdGlvbklkKSBsaXN0X250aF9pbnQoc3Vi eGFjdGxpc3QsIGkpOworCQkJCWlmICh4aWQgPT0gc3VieGlkKQorCQkJCXsKKwkJCQkJZm91bmQg PSB0cnVlOworCQkJCQlicmVhazsKKwkJCQl9CisJCQl9CisKKwkJCWlmIChmb3VuZCkKKwkJCXsK KwkJCQlSb2xsYmFja1RvU2F2ZXBvaW50KHNwbmFtZSk7CisJCQkJQ29tbWl0VHJhbnNhY3Rpb25D b21tYW5kKCk7CisJCQkJc3VieGFjdGxpc3QgPSBsaXN0X3RydW5jYXRlKHN1YnhhY3RsaXN0LCBp ICsgMSk7CisJCQl9CisKKwkJCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRUlOVFJB TlNBQ1RJT04sIE5VTEwpOworCQl9CisJfQorCWVsc2UKKwl7CisJCS8qIFRoaXMgaXMgdGhlIG1h aW4gYXBwbHkgd29ya2VyLiAqLworCQlBcHBseUJnd29ya2VyU3RhdGUgKndzdGF0ZSA9IGFwcGx5 X2Jnd29ya2VyX2ZpbmQoeGlkKTsKKworCQkvKgorCQkgKiBDaGVjayBpZiB3ZSBhcmUgcHJvY2Vz c2luZyB0aGlzIHRyYW5zYWN0aW9uIGluIGFuIGFwcGx5IGJhY2tncm91bmQKKwkJICogd29ya2Vy IGFuZCBpZiBzbywgc2VuZCB0aGUgY2hhbmdlcyB0byB0aGF0IHdvcmtlci4KKwkJICovCisJCWlm ICh3c3RhdGUpCisJCXsKKwkJCS8qIFNlbmQgU1RSRUFNIEFCT1JUIG1lc3NhZ2UgdG8gdGhlIGFw cGx5IGJhY2tncm91bmQgd29ya2VyLiAqLworCQkJYXBwbHlfYmd3b3JrZXJfc2VuZF9kYXRhKHdz dGF0ZSwgcy0+bGVuLCBzLT5kYXRhKTsKKworCQkJLyoKKwkJCSAqIEFmdGVyIHNlbmRpbmcgdGhl IGRhdGEgdG8gdGhlIGFwcGx5IGJhY2tncm91bmQgd29ya2VyLCB3YWl0IGZvcgorCQkJICogdGhh dCB3b3JrZXIgdG8gZmluaXNoLiBUaGlzIGlzIG5lY2Vzc2FyeSB0byBtYWludGFpbiBjb21taXQK KwkJCSAqIG9yZGVyIHdoaWNoIGF2b2lkcyBmYWlsdXJlcyBkdWUgdG8gdHJhbnNhY3Rpb24gZGVw ZW5kZW5jaWVzIGFuZAorCQkJICogZGVhZGxvY2tzLgorCQkJICovCisJCQlpZiAoc3VieGlkID09 IHhpZCkKKwkJCXsKKwkJCQlhcHBseV9iZ3dvcmtlcl93YWl0X2Zvcih3c3RhdGUsIEFQUExZX0JH V09SS0VSX0ZJTklTSEVEKTsKKwkJCQlhcHBseV9iZ3dvcmtlcl9mcmVlKHdzdGF0ZSk7CisJCQl9 CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJICogV2UgYXJlIGluIG1haW4gYXBwbHkgd29y a2VyIGFuZCB0aGUgdHJhbnNhY3Rpb24gaGFzIGJlZW4KKwkJCSAqIHNlcmlhbGl6ZWQgdG8gZmls ZS4KKwkJCSAqLworCQkJc2VyaWFsaXplX3N0cmVhbV9hYm9ydCh4aWQsIHN1YnhpZCk7CisJCX0K Kwl9CiAKIAlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKIH0KQEAgLTE0NjgsOCAr MTc2OCw4IEBAIGFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dS ZWNQdHIgbHNuKQogc3RhdGljIHZvaWQKIGFwcGx5X2hhbmRsZV9zdHJlYW1fY29tbWl0KFN0cmlu Z0luZm8gcykKIHsKLQlUcmFuc2FjdGlvbklkIHhpZDsKIAlMb2dpY2FsUmVwQ29tbWl0RGF0YSBj b21taXRfZGF0YTsKKwlUcmFuc2FjdGlvbklkIHhpZDsKIAogCWlmIChpbl9zdHJlYW1lZF90cmFu c2FjdGlvbikKIAkJZXJlcG9ydChFUlJPUiwKQEAgLTE0NzksMTQgKzE3NzksODEgQEAgYXBwbHlf aGFuZGxlX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBzKQogCXhpZCA9IGxvZ2ljYWxyZXBfcmVh ZF9zdHJlYW1fY29tbWl0KHMsICZjb21taXRfZGF0YSk7CiAJc2V0X2FwcGx5X2Vycm9yX2NvbnRl eHRfeGFjdCh4aWQsIGNvbW1pdF9kYXRhLmNvbW1pdF9sc24pOwogCi0JZWxvZyhERUJVRzEsICJy ZWNlaXZlZCBjb21taXQgZm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9uICV1IiwgeGlkKTsKKwlpZiAo YW1fYXBwbHlfYmd3b3JrZXIoKSkKKwl7CisJCS8qCisJCSAqIFVwZGF0ZSBvcmlnaW4gc3RhdGUg c28gd2UgY2FuIHJlc3RhcnQgc3RyZWFtaW5nIGZyb20gY29ycmVjdAorCQkgKiBwb3NpdGlvbiBp biBjYXNlIG9mIGNyYXNoLgorCQkgKi8KKwkJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl9sc24g PSBjb21taXRfZGF0YS5lbmRfbHNuOworCQlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX3RpbWVz dGFtcCA9IGNvbW1pdF9kYXRhLmNvbW1pdHRpbWU7CiAKLQlhcHBseV9zcG9vbGVkX21lc3NhZ2Vz KHhpZCwgY29tbWl0X2RhdGEuY29tbWl0X2xzbik7CisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFu ZCgpOworCQlFbmRUcmFuc2FjdGlvbkJsb2NrKGZhbHNlKTsKKwkJQ29tbWl0VHJhbnNhY3Rpb25D b21tYW5kKCk7CiAKLQlhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7 CisJCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOworCisJCXBnc3RhdF9yZXBvcnRfc3Rh dChmYWxzZSk7CisKKwkJbGlzdF9mcmVlKHN1YnhhY3RsaXN0KTsKKwkJc3VieGFjdGxpc3QgPSBO SUw7CisKKwkJYXBwbHlfYmd3b3JrZXJfc2V0X3N0YXR1cyhBUFBMWV9CR1dPUktFUl9GSU5JU0hF RCk7CisJfQorCWVsc2UKKwl7CisJCS8qIFRoaXMgaXMgdGhlIG1haW4gYXBwbHkgd29ya2VyLiAq LworCQlBcHBseUJnd29ya2VyU3RhdGUgKndzdGF0ZSA9IGFwcGx5X2Jnd29ya2VyX2ZpbmQoeGlk KTsKKworCQllbG9nKERFQlVHMSwgInJlY2VpdmVkIGNvbW1pdCBmb3Igc3RyZWFtZWQgdHJhbnNh Y3Rpb24gJXUiLCB4aWQpOworCisJCS8qCisJCSAqIENoZWNrIGlmIHdlIGFyZSBwcm9jZXNzaW5n IHRoaXMgdHJhbnNhY3Rpb24gaW4gYW4gYXBwbHkgYmFja2dyb3VuZAorCQkgKiB3b3JrZXIgYW5k IGlmIHNvLCBzZW5kIHRoZSBjaGFuZ2VzIHRvIHRoYXQgd29ya2VyLgorCQkgKi8KKwkJaWYgKHdz dGF0ZSkKKwkJeworCQkJLyogU2VuZCBTVFJFQU0gQ09NTUlUIG1lc3NhZ2UgdG8gdGhlIGFwcGx5 IGJhY2tncm91bmQgd29ya2VyLiAqLworCQkJYXBwbHlfYmd3b3JrZXJfc2VuZF9kYXRhKHdzdGF0 ZSwgcy0+bGVuLCBzLT5kYXRhKTsKKworCQkJLyoKKwkJCSAqIEFmdGVyIHNlbmRpbmcgdGhlIGRh dGEgdG8gdGhlIGFwcGx5IGJhY2tncm91bmQgd29ya2VyLCB3YWl0IGZvcgorCQkJICogdGhhdCB3 b3JrZXIgdG8gZmluaXNoLiBUaGlzIGlzIG5lY2Vzc2FyeSB0byBtYWludGFpbiBjb21taXQKKwkJ CSAqIG9yZGVyIHdoaWNoIGF2b2lkcyBmYWlsdXJlcyBkdWUgdG8gdHJhbnNhY3Rpb24gZGVwZW5k ZW5jaWVzIGFuZAorCQkJICogZGVhZGxvY2tzLgorCQkJICovCisJCQlhcHBseV9iZ3dvcmtlcl93 YWl0X2Zvcih3c3RhdGUsIEFQUExZX0JHV09SS0VSX0ZJTklTSEVEKTsKIAotCS8qIHVubGluayB0 aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5mbyAqLwotCXN0 cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7CisJCQlw Z3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOworCQkJc3RvcmVfZmx1c2hfcG9zaXRpb24oY29tbWl0 X2RhdGEuZW5kX2xzbik7CisJCQlzdG9wX3NraXBwaW5nX2NoYW5nZXMoKTsKKworCQkJYXBwbHlf Ymd3b3JrZXJfZnJlZSh3c3RhdGUpOworCisJCQkvKgorCQkJICogVGhlIHRyYW5zYWN0aW9uIGlz IGVpdGhlciBub24tZW1wdHkgb3Igc2tpcHBlZCwgc28gd2UgY2xlYXIgdGhlCisJCQkgKiBzdWJz a2lwbHNuLgorCQkJICovCisJCQljbGVhcl9zdWJzY3JpcHRpb25fc2tpcF9sc24oY29tbWl0X2Rh dGEuY29tbWl0X2xzbik7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJICogVGhlIHRyYW5z YWN0aW9uIGhhcyBiZWVuIHNlcmlhbGl6ZWQgdG8gZmlsZSwgc28gcmVwbGF5IGFsbCB0aGUKKwkJ CSAqIHNwb29sZWQgb3BlcmF0aW9ucy4KKwkJCSAqLworCQkJYXBwbHlfc3Bvb2xlZF9tZXNzYWdl cyh4aWQsIGNvbW1pdF9kYXRhLmNvbW1pdF9sc24pOworCisJCQlhcHBseV9oYW5kbGVfY29tbWl0 X2ludGVybmFsKCZjb21taXRfZGF0YSk7CisKKwkJCS8qIFVubGluayB0aGUgZmlsZXMgd2l0aCBz ZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5mby4gKi8KKwkJCXN0cmVhbV9jbGVhbnVw X2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7CisJCX0KKwl9CisKKwkvKiBD aGVjayB0aGUgc3RhdHVzIG9mIGFwcGx5IGJhY2tncm91bmQgd29ya2VyIGlmIGFueS4gKi8KKwlh cHBseV9iZ3dvcmtlcl9jaGVja19zdGF0dXMoKTsKIAogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0 aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5j aW5nX3RhYmxlcyhjb21taXRfZGF0YS5lbmRfbHNuKTsKQEAgLTI0NjcsNyArMjgzNCw3IEBAIGFw cGx5X2hhbmRsZV90cnVuY2F0ZShTdHJpbmdJbmZvIHMpCiAvKgogICogTG9naWNhbCByZXBsaWNh dGlvbiBwcm90b2NvbCBtZXNzYWdlIGRpc3BhdGNoZXIuCiAgKi8KLXN0YXRpYyB2b2lkCit2b2lk CiBhcHBseV9kaXNwYXRjaChTdHJpbmdJbmZvIHMpCiB7CiAJTG9naWNhbFJlcE1zZ1R5cGUgYWN0 aW9uID0gcHFfZ2V0bXNnYnl0ZShzKTsKQEAgLTI2MzYsNiArMzAwMywxMCBAQCBzdG9yZV9mbHVz aF9wb3NpdGlvbihYTG9nUmVjUHRyIHJlbW90ZV9sc24pCiB7CiAJRmx1c2hQb3NpdGlvbiAqZmx1 c2hwb3M7CiAKKwkvKiBTa2lwIGlmIG5vdCB0aGUgbWFpbiBhcHBseSB3b3JrZXIgKi8KKwlpZiAo YW1fYXBwbHlfYmd3b3JrZXIoKSkKKwkJcmV0dXJuOworCiAJLyogTmVlZCB0byBkbyB0aGlzIGlu IHBlcm1hbmVudCBjb250ZXh0ICovCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4 dCk7CiAKQEAgLTI2NTAsNyArMzAyMSw3IEBAIHN0b3JlX2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQ dHIgcmVtb3RlX2xzbikKIAogCiAvKiBVcGRhdGUgc3RhdGlzdGljcyBvZiB0aGUgd29ya2VyLiAq Lwotc3RhdGljIHZvaWQKK3ZvaWQKIFVwZGF0ZVdvcmtlclN0YXRzKFhMb2dSZWNQdHIgbGFzdF9s c24sIFRpbWVzdGFtcFR6IHNlbmRfdGltZSwgYm9vbCByZXBseSkKIHsKIAlNeUxvZ2ljYWxSZXBX b3JrZXItPmxhc3RfbHNuID0gbGFzdF9sc247CkBAIC0yODEyLDYgKzMxODMsOSBAQCBMb2dpY2Fs UmVwQXBwbHlMb29wKFhMb2dSZWNQdHIgbGFzdF9yZWNlaXZlZCkKIAkJCUFjY2VwdEludmFsaWRh dGlvbk1lc3NhZ2VzKCk7CiAJCQltYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKCk7CiAKKwkJCS8q IENoZWNrIHRoZSBzdGF0dXMgb2YgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgaWYgYW55LiAqLwor CQkJYXBwbHlfYmd3b3JrZXJfY2hlY2tfc3RhdHVzKCk7CisKIAkJCS8qIFByb2Nlc3MgYW55IHRh YmxlIHN5bmNocm9uaXphdGlvbiBjaGFuZ2VzLiAqLwogCQkJcHJvY2Vzc19zeW5jaW5nX3RhYmxl cyhsYXN0X3JlY2VpdmVkKTsKIAkJfQpAQCAtMzExNCw3ICszNDg4LDcgQEAgbWF5YmVfcmVyZWFk X3N1YnNjcmlwdGlvbih2b2lkKQogLyoKICAqIENhbGxiYWNrIGZyb20gc3Vic2NyaXB0aW9uIHN5 c2NhY2hlIGludmFsaWRhdGlvbi4KICAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIHN1YnNjcmlwdGlv bl9jaGFuZ2VfY2IoRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKIHsK IAlNeVN1YnNjcmlwdGlvblZhbGlkID0gZmFsc2U7CkBAIC0zNzEwLDcgKzQwODQsNyBAQCBBcHBs eVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJCW9yaWdpbmlkID0gcmVwbG9yaWdpbl9ieV9u YW1lKG9yaWdpbm5hbWUsIHRydWUpOwogCQlpZiAoIU9pZElzVmFsaWQob3JpZ2luaWQpKQogCQkJ b3JpZ2luaWQgPSByZXBsb3JpZ2luX2NyZWF0ZShvcmlnaW5uYW1lKTsKLQkJcmVwbG9yaWdpbl9z ZXNzaW9uX3NldHVwKG9yaWdpbmlkKTsKKwkJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdp bmlkLCB0cnVlKTsKIAkJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiA9IG9yaWdpbmlkOwogCQlv cmlnaW5fc3RhcnRwb3MgPSByZXBsb3JpZ2luX3Nlc3Npb25fZ2V0X3Byb2dyZXNzKGZhbHNlKTsK IAkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CkBAIC0zNzUxLDEzICs0MTI1LDE0IEBAIEFw cGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAogCXNlcnZlcl92ZXJzaW9uID0gd2FscmN2 X3NlcnZlcl92ZXJzaW9uKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4pOwogCW9wdGlvbnMucHJvdG8u bG9naWNhbC5wcm90b192ZXJzaW9uID0KKwkJc2VydmVyX3ZlcnNpb24gPj0gMTYwMDAwID8gTE9H SUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0gOgogCQlzZXJ2ZXJfdmVy c2lvbiA+PSAxNTAwMDAgPyBMT0dJQ0FMUkVQX1BST1RPX1RXT1BIQVNFX1ZFUlNJT05fTlVNIDoK IAkJc2VydmVyX3ZlcnNpb24gPj0gMTQwMDAwID8gTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fVkVS U0lPTl9OVU0gOgogCQlMT0dJQ0FMUkVQX1BST1RPX1ZFUlNJT05fTlVNOwogCiAJb3B0aW9ucy5w cm90by5sb2dpY2FsLnB1YmxpY2F0aW9uX25hbWVzID0gTXlTdWJzY3JpcHRpb24tPnB1YmxpY2F0 aW9uczsKIAlvcHRpb25zLnByb3RvLmxvZ2ljYWwuYmluYXJ5ID0gTXlTdWJzY3JpcHRpb24tPmJp bmFyeTsKLQlvcHRpb25zLnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nID0gTXlTdWJzY3JpcHRpb24t PnN0cmVhbTsKKwlvcHRpb25zLnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nID0gKE15U3Vic2NyaXB0 aW9uLT5zdHJlYW0gIT0gU1VCU1RSRUFNX09GRik7CiAJb3B0aW9ucy5wcm90by5sb2dpY2FsLnR3 b3BoYXNlID0gZmFsc2U7CiAJb3B0aW9ucy5wcm90by5sb2dpY2FsLm9yaWdpbiA9IHBzdHJkdXAo TXlTdWJzY3JpcHRpb24tPm9yaWdpbik7CiAKQEAgLTM5MTYsNyArNDI5MSw4IEBAIGNsZWFyX3N1 YnNjcmlwdGlvbl9za2lwX2xzbihYTG9nUmVjUHRyIGZpbmlzaF9sc24pCiAJWExvZ1JlY1B0cglt eXNraXBsc24gPSBNeVN1YnNjcmlwdGlvbi0+c2tpcGxzbjsKIAlib29sCQlzdGFydGVkX3R4ID0g ZmFsc2U7CiAKLQlpZiAobGlrZWx5KFhMb2dSZWNQdHJJc0ludmFsaWQobXlza2lwbHNuKSkpCisJ aWYgKGxpa2VseShYTG9nUmVjUHRySXNJbnZhbGlkKG15c2tpcGxzbikpIHx8CisJCWFtX2FwcGx5 X2Jnd29ya2VyKCkpCiAJCXJldHVybjsKIAogCWlmICghSXNUcmFuc2FjdGlvblN0YXRlKCkpCkBA IC0zOTg4LDcgKzQzNjQsNyBAQCBjbGVhcl9zdWJzY3JpcHRpb25fc2tpcF9sc24oWExvZ1JlY1B0 ciBmaW5pc2hfbHNuKQogfQogCiAvKiBFcnJvciBjYWxsYmFjayB0byBnaXZlIG1vcmUgY29udGV4 dCBpbmZvIGFib3V0IHRoZSBjaGFuZ2UgYmVpbmcgYXBwbGllZCAqLwotc3RhdGljIHZvaWQKK3Zv aWQKIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZykKIHsKIAlBcHBseUVycm9yQ2FsbGJh Y2tBcmcgKmVycmFyZyA9ICZhcHBseV9lcnJvcl9jYWxsYmFja19hcmc7CkBAIC00MDE2LDIzICs0 MzkyLDQ3IEBAIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZykKIAkJCQkJICAgZXJyYXJn LT5yZW1vdGVfeGlkLAogCQkJCQkgICBMU05fRk9STUFUX0FSR1MoZXJyYXJnLT5maW5pc2hfbHNu KSk7CiAJfQotCWVsc2UgaWYgKGVycmFyZy0+cmVtb3RlX2F0dG51bSA8IDApCi0JCWVycmNvbnRl eHQoInByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiBcIiVzXCIg ZHVyaW5nIFwiJXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiBp biB0cmFuc2FjdGlvbiAldSBmaW5pc2hlZCBhdCAlWC8lWCIsCi0JCQkJICAgZXJyYXJnLT5vcmln aW5fbmFtZSwKLQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQp LAotCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwKLQkJCQkgICBlcnJhcmct PnJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsCi0JCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkLAotCQkJ CSAgIExTTl9GT1JNQVRfQVJHUyhlcnJhcmctPmZpbmlzaF9sc24pKTsKIAllbHNlCi0JCWVycmNv bnRleHQoInByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiBcIiVz XCIgZHVyaW5nIFwiJXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNc IiBjb2x1bW4gXCIlc1wiIGluIHRyYW5zYWN0aW9uICV1IGZpbmlzaGVkIGF0ICVYLyVYIiwKLQkJ CQkgICBlcnJhcmctPm9yaWdpbl9uYW1lLAotCQkJCSAgIGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBl KGVycmFyZy0+Y29tbWFuZCksCi0JCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1l LAotCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwKLQkJCQkgICBlcnJhcmct PnJlbC0+cmVtb3RlcmVsLmF0dG5hbWVzW2VycmFyZy0+cmVtb3RlX2F0dG51bV0sCi0JCQkJICAg ZXJyYXJnLT5yZW1vdGVfeGlkLAotCQkJCSAgIExTTl9GT1JNQVRfQVJHUyhlcnJhcmctPmZpbmlz aF9sc24pKTsKKwl7CisJCWlmIChlcnJhcmctPnJlbW90ZV9hdHRudW0gPCAwKQorCQl7CisJCQlp ZiAoWExvZ1JlY1B0cklzSW52YWxpZChlcnJhcmctPmZpbmlzaF9sc24pKQorCQkJCWVycmNvbnRl eHQoInByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiBcIiVzXCIg ZHVyaW5nIFwiJXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiBp biB0cmFuc2FjdGlvbiAldSIsCisJCQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1lLAorCQkJCQkJ ICAgbG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoZXJyYXJnLT5jb21tYW5kKSwKKwkJCQkJCSAgIGVy cmFyZy0+cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1v dGVyZWwucmVsbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCk7CisJCQllbHNlCisJ CQkJZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3Jp Z2luIFwiJXNcIiBkdXJpbmcgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24g XCIlcy4lc1wiIGluIHRyYW5zYWN0aW9uICV1IGZpbmlzaGVkIGF0ICVYLyVYIiwKKwkJCQkJCSAg IGVycmFyZy0+b3JpZ2luX25hbWUsCisJCQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShl cnJhcmctPmNvbW1hbmQpLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1l LAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAorCQkJCQkJICAgZXJy YXJnLT5yZW1vdGVfeGlkLAorCQkJCQkJICAgTFNOX0ZPUk1BVF9BUkdTKGVycmFyZy0+ZmluaXNo X2xzbikpOworCQl9CisJCWVsc2UKKwkJeworCQkJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQoZXJy YXJnLT5maW5pc2hfbHNuKSkKKwkJCQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBkYXRh IGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBcIiVzXCIgZm9yIHJlcGxpY2F0 aW9uIHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgY29sdW1uIFwiJXNcIiBpbiB0cmFuc2FjdGlv biAldSIsCisJCQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1lLAorCQkJCQkJICAgbG9naWNhbHJl cF9tZXNzYWdlX3R5cGUoZXJyYXJnLT5jb21tYW5kKSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5y ZW1vdGVyZWwubnNwbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwucmVsbmFt ZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwuYXR0bmFtZXNbZXJyYXJnLT5yZW1v dGVfYXR0bnVtXSwKKwkJCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCk7CisJCQllbHNlCisJCQkJ ZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2lu IFwiJXNcIiBkdXJpbmcgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIl cy4lc1wiIGNvbHVtbiBcIiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUgZmluaXNoZWQgYXQgJVgvJVgi LAorCQkJCQkJICAgZXJyYXJnLT5vcmlnaW5fbmFtZSwKKwkJCQkJCSAgIGxvZ2ljYWxyZXBfbWVz c2FnZV90eXBlKGVycmFyZy0+Y29tbWFuZCksCisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3Rl cmVsLm5zcG5hbWUsCisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsCisJ CQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLmF0dG5hbWVzW2VycmFyZy0+cmVtb3RlX2F0 dG51bV0sCisJCQkJCQkgICBlcnJhcmctPnJlbW90ZV94aWQsCisJCQkJCQkgICBMU05fRk9STUFU X0FSR1MoZXJyYXJnLT5maW5pc2hfbHNuKSk7CisJCX0KKwl9CiB9CiAKIC8qIFNldCB0cmFuc2Fj dGlvbiBpbmZvcm1hdGlvbiBvZiBhcHBseSBlcnJvciBjYWxsYmFjayAqLwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXggYTNjMWJhOGE0MC4uZjllMzg4 YWRhMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRw dXQuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCkBA IC0xODQzLDYgKzE4NDMsOSBAQCBwZ291dHB1dF9zdHJlYW1fYWJvcnQoc3RydWN0IExvZ2ljYWxE ZWNvZGluZ0NvbnRleHQgKmN0eCwKIAkJCQkJICBYTG9nUmVjUHRyIGFib3J0X2xzbikKIHsKIAlS ZW9yZGVyQnVmZmVyVFhOICp0b3B0eG47CisJUEdPdXRwdXREYXRhICpkYXRhID0gKFBHT3V0cHV0 RGF0YSAqKSBjdHgtPm91dHB1dF9wbHVnaW5fcHJpdmF0ZTsKKwlib29sIHdyaXRlX2Fib3J0X2xz biA9IChkYXRhLT5wcm90b2NvbF92ZXJzaW9uID49CisJCQkJCQkJTE9HSUNBTFJFUF9QUk9UT19T VFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0pOwogCiAJLyoKIAkgKiBUaGUgYWJvcnQgc2hvdWxk IGhhcHBlbiBvdXRzaWRlIHN0cmVhbWluZyBibG9jaywgZXZlbiBmb3Igc3RyZWFtZWQKQEAgLTE4 NTYsNyArMTg1OSw4IEBAIHBnb3V0cHV0X3N0cmVhbV9hYm9ydChzdHJ1Y3QgTG9naWNhbERlY29k aW5nQ29udGV4dCAqY3R4LAogCUFzc2VydChyYnR4bl9pc19zdHJlYW1lZCh0b3B0eG4pKTsKIAog CU91dHB1dFBsdWdpblByZXBhcmVXcml0ZShjdHgsIHRydWUpOwotCWxvZ2ljYWxyZXBfd3JpdGVf c3RyZWFtX2Fib3J0KGN0eC0+b3V0LCB0b3B0eG4tPnhpZCwgdHhuLT54aWQpOworCWxvZ2ljYWxy ZXBfd3JpdGVfc3RyZWFtX2Fib3J0KGN0eC0+b3V0LCB0b3B0eG4tPnhpZCwgdHhuLCBhYm9ydF9s c24sCisJCQkJCQkJCSAgd3JpdGVfYWJvcnRfbHNuKTsKIAlPdXRwdXRQbHVnaW5Xcml0ZShjdHgs IHRydWUpOwogCiAJY2xlYW51cF9yZWxfc3luY19jYWNoZSh0b3B0eG4tPnhpZCwgZmFsc2UpOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCmluZGV4IDkyZjI0YTZjOWIuLjdi NjY3NjY5ZmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZl bnQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKQEAgLTM4 OCw2ICszODgsOSBAQCBwZ3N0YXRfZ2V0X3dhaXRfaXBjKFdhaXRFdmVudElQQyB3KQogCQljYXNl IFdBSVRfRVZFTlRfSEFTSF9HUk9XX0JVQ0tFVFNfUkVJTlNFUlQ6CiAJCQlldmVudF9uYW1lID0g Ikhhc2hHcm93QnVja2V0c1JlaW5zZXJ0IjsKIAkJCWJyZWFrOworCQljYXNlIFdBSVRfRVZFTlRf TE9HSUNBTF9BUFBMWV9CR1dPUktFUl9TVEFURV9DSEFOR0U6CisJCQlldmVudF9uYW1lID0gIkxv Z2ljYWxBcHBseUJnd29ya2VyU3RhdGVDaGFuZ2UiOworCQkJYnJlYWs7CiAJCWNhc2UgV0FJVF9F VkVOVF9MT0dJQ0FMX1NZTkNfREFUQToKIAkJCWV2ZW50X25hbWUgPSAiTG9naWNhbFN5bmNEYXRh IjsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKaW5kZXggYWY0YTFjMzA2OC4uYTQwZGRmODQ3 YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9taXNjL2d1Yy5jCkBAIC0zMjIwLDYgKzMyMjAsMTggQEAgc3RhdGljIHN0cnVj dCBjb25maWdfaW50IENvbmZpZ3VyZU5hbWVzSW50W10gPQogCQlOVUxMLCBOVUxMLCBOVUxMCiAJ fSwKIAorCXsKKwkJeyJtYXhfYXBwbHlfYmd3b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24iLAorCQkJ UEdDX1NJR0hVUCwKKwkJCVJFUExJQ0FUSU9OX1NVQlNDUklCRVJTLAorCQkJZ2V0dGV4dF9ub29w KCJNYXhpbXVtIG51bWJlciBvZiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcnMgcGVyIHN1YnNjcmlw dGlvbi4iKSwKKwkJCU5VTEwsCisJCX0sCisJCSZtYXhfYXBwbHlfYmd3b3JrZXJzX3Blcl9zdWJz Y3JpcHRpb24sCisJCTIsIDAsIE1BWF9CQUNLRU5EUywKKwkJTlVMTCwgTlVMTCwgTlVMTAorCX0s CisKIAl7CiAJCXsibG9nX3JvdGF0aW9uX2FnZSIsIFBHQ19TSUdIVVAsIExPR0dJTkdfV0hFUkUs CiAJCQlnZXR0ZXh0X25vb3AoIlNldHMgdGhlIGFtb3VudCBvZiB0aW1lIHRvIHdhaXQgYmVmb3Jl IGZvcmNpbmcgIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3Fs LmNvbmYuc2FtcGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2Ft cGxlCmluZGV4IGI0YmMwNmU1ZjUuLmFkMTg3MTBhZjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91dGls cy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKQEAgLTM2MCw2ICszNjAsNyBAQAogI21heF9s b2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMgPSA0CSMgdGFrZW4gZnJvbSBtYXhfd29ya2VyX3By b2Nlc3NlcwogCQkJCQkjIChjaGFuZ2UgcmVxdWlyZXMgcmVzdGFydCkKICNtYXhfc3luY193b3Jr ZXJzX3Blcl9zdWJzY3JpcHRpb24gPSAyCSMgdGFrZW4gZnJvbSBtYXhfbG9naWNhbF9yZXBsaWNh dGlvbl93b3JrZXJzCisjbWF4X2FwcGx5X2Jnd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uID0gMgkj IHRha2VuIGZyb20gbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycwogCiAKICMtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9z cmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IGRhNjYwNTE3NWEuLjJhOGRhMjY4NDQgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1w L3BnX2R1bXAuYwpAQCAtNDQ4MCw3ICs0NDgwLDcgQEAgZ2V0U3Vic2NyaXB0aW9ucyhBcmNoaXZl ICpmb3V0KQogCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE0MDAwMCkKIAkJYXBwZW5kUFFF eHBCdWZmZXJTdHIocXVlcnksICIgcy5zdWJzdHJlYW0sXG4iKTsKIAllbHNlCi0JCWFwcGVuZFBR RXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIGZhbHNlIEFTIHN1YnN0cmVhbSxcbiIpOworCQlhcHBlbmRQ UUV4cEJ1ZmZlclN0cihxdWVyeSwgIiAnZicgQVMgc3Vic3RyZWFtLFxuIik7CiAKIAlpZiAoZm91 dC0+cmVtb3RlVmVyc2lvbiA+PSAxNTAwMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5 LApAQCAtNDYxNyw4ICs0NjE3LDEwIEBAIGR1bXBTdWJzY3JpcHRpb24oQXJjaGl2ZSAqZm91dCwg Y29uc3QgU3Vic2NyaXB0aW9uSW5mbyAqc3ViaW5mbykKIAlpZiAoc3RyY21wKHN1YmluZm8tPnN1 YmJpbmFyeSwgInQiKSA9PSAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgYmlu YXJ5ID0gdHJ1ZSIpOwogCi0JaWYgKHN0cmNtcChzdWJpbmZvLT5zdWJzdHJlYW0sICJmIikgIT0g MCkKKwlpZiAoc3RyY21wKHN1YmluZm8tPnN1YnN0cmVhbSwgInQiKSA9PSAwKQogCQlhcHBlbmRQ UUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgc3RyZWFtaW5nID0gb24iKTsKKwllbHNlIGlmIChzdHJj bXAoc3ViaW5mby0+c3Vic3RyZWFtLCAicCIpID09IDApCisJCWFwcGVuZFBRRXhwQnVmZmVyU3Ry KHF1ZXJ5LCAiLCBzdHJlYW1pbmcgPSBwYXJhbGxlbCIpOwogCiAJaWYgKHN0cmNtcChzdWJpbmZv LT5zdWJ0d29waGFzZXN0YXRlLCB0d29fcGhhc2VfZGlzYWJsZWQpICE9IDApCiAJCWFwcGVuZFBR RXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCB0d29fcGhhc2UgPSBvbiIpOwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfc3Vic2NyaXB0aW9uLmgKaW5kZXggN2I5ODcxNGYzMC4uZjRlMWU5NDBlNiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaAorKysgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCkBAIC04MCw3ICs4MCw4IEBAIENBVEFMT0cocGdf c3Vic2NyaXB0aW9uLDYxMDAsU3Vic2NyaXB0aW9uUmVsYXRpb25JZCkgQktJX1NIQVJFRF9SRUxB VElPTiBCS0lfUk9XCiAJYm9vbAkJc3ViYmluYXJ5OwkJLyogVHJ1ZSBpZiB0aGUgc3Vic2NyaXB0 aW9uIHdhbnRzIHRoZQogCQkJCQkJCQkgKiBwdWJsaXNoZXIgdG8gc2VuZCBkYXRhIGluIGJpbmFy eSAqLwogCi0JYm9vbAkJc3Vic3RyZWFtOwkJLyogU3RyZWFtIGluLXByb2dyZXNzIHRyYW5zYWN0 aW9ucy4gKi8KKwljaGFyCQlzdWJzdHJlYW07CQkvKiBTdHJlYW0gaW4tcHJvZ3Jlc3MgdHJhbnNh Y3Rpb25zLgorCQkJCQkJCQkgKiBTZWUgU1VCU1RSRUFNX3h4eCBjb25zdGFudHMuICovCiAKIAlj aGFyCQlzdWJ0d29waGFzZXN0YXRlOwkvKiBTdHJlYW0gdHdvLXBoYXNlIHRyYW5zYWN0aW9ucyAq LwogCkBAIC0xMjQsNyArMTI1LDggQEAgdHlwZWRlZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAJYm9v bAkJZW5hYmxlZDsJCS8qIEluZGljYXRlcyBpZiB0aGUgc3Vic2NyaXB0aW9uIGlzIGVuYWJsZWQg Ki8KIAlib29sCQliaW5hcnk7CQkJLyogSW5kaWNhdGVzIGlmIHRoZSBzdWJzY3JpcHRpb24gd2Fu dHMgZGF0YSBpbgogCQkJCQkJCQkgKiBiaW5hcnkgZm9ybWF0ICovCi0JYm9vbAkJc3RyZWFtOwkJ CS8qIEFsbG93IHN0cmVhbWluZyBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuICovCisJY2hhcgkJ c3RyZWFtOwkJCS8qIEFsbG93IHN0cmVhbWluZyBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuCisJ CQkJCQkJCSAqIFNlZSBTVUJTVFJFQU1feHh4IGNvbnN0YW50cy4gKi8KIAljaGFyCQl0d29waGFz ZXN0YXRlOwkvKiBBbGxvdyBzdHJlYW1pbmcgdHdvLXBoYXNlIHRyYW5zYWN0aW9ucyAqLwogCWJv b2wJCWRpc2FibGVvbmVycjsJLyogSW5kaWNhdGVzIGlmIHRoZSBzdWJzY3JpcHRpb24gc2hvdWxk IGJlCiAJCQkJCQkJCSAqIGF1dG9tYXRpY2FsbHkgZGlzYWJsZWQgaWYgYSB3b3JrZXIgZXJyb3IK QEAgLTEzNyw2ICsxMzksMjEgQEAgdHlwZWRlZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAJCQkJCQkJ CSAqIHNwZWNpZmllZCBvcmlnaW4gKi8KIH0gU3Vic2NyaXB0aW9uOwogCisvKiBEaXNhbGxvdyBz dHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLiAqLworI2RlZmluZSBTVUJTVFJFQU1f T0ZGICdmJworCisvKgorICogU3RyZWFtaW5nIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyBhcmUg d3JpdHRlbiB0byBhIHRlbXBvcmFyeSBmaWxlIGFuZAorICogYXBwbGllZCBvbmx5IGFmdGVyIHRo ZSB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gdXBzdHJlYW0uCisgKi8KKyNkZWZpbmUgU1VC U1RSRUFNX09OICd0JworCisvKgorICogU3RyZWFtaW5nIGluLXByb2dyZXNzIHRyYW5zYWN0aW9u cyBhcmUgYXBwbGllZCBpbW1lZGlhdGVseSB2aWEgYSBiYWNrZ3JvdW5kCisgKiB3b3JrZXIuCisg Ki8KKyNkZWZpbmUgU1VCU1RSRUFNX1BBUkFMTEVMICdwJworCiBleHRlcm4gU3Vic2NyaXB0aW9u ICpHZXRTdWJzY3JpcHRpb24oT2lkIHN1YmlkLCBib29sIG1pc3Npbmdfb2spOwogZXh0ZXJuIHZv aWQgRnJlZVN1YnNjcmlwdGlvbihTdWJzY3JpcHRpb24gKnN1Yik7CiBleHRlcm4gdm9pZCBEaXNh YmxlU3Vic2NyaXB0aW9uKE9pZCBzdWJpZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2lj YWxsYXVuY2hlci5oCmluZGV4IGYxZTI4MjFlMjUuLmFjOGVmOTQzODEgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oCisrKyBiL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oCkBAIC0xNCw2ICsxNCw3IEBACiAKIGV4dGVy biBQR0RMTElNUE9SVCBpbnQgbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VyczsKIGV4dGVy biBQR0RMTElNUE9SVCBpbnQgbWF4X3N5bmNfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uOworZXh0 ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfYXBwbHlfYmd3b3JrZXJzX3Blcl9zdWJzY3JpcHRpb247 CiAKIGV4dGVybiB2b2lkIEFwcGx5TGF1bmNoZXJSZWdpc3Rlcih2b2lkKTsKIGV4dGVybiB2b2lk IEFwcGx5TGF1bmNoZXJNYWluKERhdHVtIG1haW5fYXJnKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v bG9naWNhbHByb3RvLmgKaW5kZXggYTc3MWFiOGZmMy4uZWIwZmQyNGZkOCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKKysrIGIvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKQEAgLTMyLDEyICszMiwxNyBAQAogICoKICAqIExP R0lDQUxSRVBfUFJPVE9fVFdPUEhBU0VfVkVSU0lPTl9OVU0gaXMgdGhlIG1pbmltdW0gcHJvdG9j b2wgdmVyc2lvbiB3aXRoCiAgKiBzdXBwb3J0IGZvciB0d28tcGhhc2UgY29tbWl0IGRlY29kaW5n IChhdCBwcmVwYXJlIHRpbWUpLiBJbnRyb2R1Y2VkIGluIFBHMTUuCisgKgorICogTE9HSUNBTFJF UF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0gaXMgdGhlIG1pbmltdW0gcHJvdG9j b2wgdmVyc2lvbgorICogd2l0aCBzdXBwb3J0IGZvciBzdHJlYW1pbmcgbGFyZ2UgdHJhbnNhY3Rp b25zIHVzaW5nIGFwcGx5IGJhY2tncm91bmQKKyAqIHdvcmtlcnMuIEludHJvZHVjZWQgaW4gUEcx Ni4KICAqLwogI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX01JTl9WRVJTSU9OX05VTSAxCiAjZGVm aW5lIExPR0lDQUxSRVBfUFJPVE9fVkVSU0lPTl9OVU0gMQogI2RlZmluZSBMT0dJQ0FMUkVQX1BS T1RPX1NUUkVBTV9WRVJTSU9OX05VTSAyCiAjZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fVFdPUEhB U0VfVkVSU0lPTl9OVU0gMwotI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX01BWF9WRVJTSU9OX05V TSBMT0dJQ0FMUkVQX1BST1RPX1RXT1BIQVNFX1ZFUlNJT05fTlVNCisjZGVmaW5lIExPR0lDQUxS RVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVNIDQKKyNkZWZpbmUgTE9HSUNBTFJF UF9QUk9UT19NQVhfVkVSU0lPTl9OVU0gTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxf VkVSU0lPTl9OVU0KIAogLyoKICAqIExvZ2ljYWwgbWVzc2FnZSB0eXBlcwpAQCAtMTc1LDYgKzE4 MCwxNyBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwUm9sbGJhY2tQcmVwYXJlZFR4bkRhdGEK IAljaGFyCQlnaWRbR0lEU0laRV07CiB9IExvZ2ljYWxSZXBSb2xsYmFja1ByZXBhcmVkVHhuRGF0 YTsKIAorLyoKKyAqIFRyYW5zYWN0aW9uIHByb3RvY29sIGluZm9ybWF0aW9uIGZvciBzdHJlYW0g YWJvcnQuCisgKi8KK3R5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEKK3sK KwlUcmFuc2FjdGlvbklkIHhpZDsKKwlUcmFuc2FjdGlvbklkIHN1YnhpZDsKKwlYTG9nUmVjUHRy CWFib3J0X2xzbjsKKwlUaW1lc3RhbXBUeiBhYm9ydF90aW1lOworfSBMb2dpY2FsUmVwU3RyZWFt QWJvcnREYXRhOworCiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX2JlZ2luKFN0cmluZ0lu Zm8gb3V0LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4pOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF9y ZWFkX2JlZ2luKFN0cmluZ0luZm8gaW4sCiAJCQkJCQkJCSAgTG9naWNhbFJlcEJlZ2luRGF0YSAq YmVnaW5fZGF0YSk7CkBAIC0yNDYsOSArMjYyLDEyIEBAIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBf d3JpdGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIG91dCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhu CiBleHRlcm4gVHJhbnNhY3Rpb25JZCBsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2NvbW1pdChTdHJp bmdJbmZvIG91dCwKIAkJCQkJCQkJCQkJCSAgIExvZ2ljYWxSZXBDb21taXREYXRhICpjb21taXRf ZGF0YSk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX3N0cmVhbV9hYm9ydChTdHJpbmdJ bmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsCi0JCQkJCQkJCQkJICBUcmFuc2FjdGlvbklkIHN1 YnhpZCk7Ci1leHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KFN0cmluZ0lu Zm8gaW4sIFRyYW5zYWN0aW9uSWQgKnhpZCwKLQkJCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCAqc3Vi eGlkKTsKKwkJCQkJCQkJCQkgIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKKwkJCQkJCQkJCQkgIFhM b2dSZWNQdHIgYWJvcnRfbHNuLAorCQkJCQkJCQkJCSAgYm9vbCB3cml0ZV9hYm9ydF9sc24pOwor ZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIGluLAor CQkJCQkJCQkJCSBMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhICphYm9ydF9kYXRhLAorCQkJCQkJ CQkJCSBib29sIHJlYWRfYWJvcnRfbHNuKTsKIGV4dGVybiBjaGFyICpsb2dpY2FscmVwX21lc3Nh 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 eCA5MDE4NDVhYmMyLi45MTgxNGU3OWM4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi93b3JrZXJfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3Jr ZXJfaW50ZXJuYWwuaApAQCAtMTcsOCArMTcsMTEgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2Rl ZnMuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIgogI2luY2x1ZGUgImRh dGF0eXBlL3RpbWVzdGFtcC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlv bi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmlsZXNldC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG9j ay5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc2htX21xLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zaG1f dG9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCiAKIApAQCAtNjAsNiArNjMsOSBAQCB0 eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwV29ya2VyCiAJICovCiAJRmlsZVNldCAgICAqc3RyZWFt X2ZpbGVzZXQ7CiAKKwkvKiBJbmRpY2F0ZXMgaWYgdGhpcyBzbG90IGlzIHVzZWQgZm9yIGFuIGFw cGx5IGJhY2tncm91bmQgd29ya2VyLiAqLworCWJvb2wJCXN1YndvcmtlcjsKKwogCS8qIFN0YXRz LiAqLwogCVhMb2dSZWNQdHIJbGFzdF9sc247CiAJVGltZXN0YW1wVHogbGFzdF9zZW5kX3RpbWU7 CkBAIC02OCw4ICs3NCw3MCBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwV29ya2VyCiAJVGlt ZXN0YW1wVHogcmVwbHlfdGltZTsKIH0gTG9naWNhbFJlcFdvcmtlcjsKIAorLyogU3RydWN0IGZv ciBzYXZpbmcgYW5kIHJlc3RvcmluZyBhcHBseSBlcnJjb250ZXh0IGluZm9ybWF0aW9uICovCit0 eXBlZGVmIHN0cnVjdCBBcHBseUVycm9yQ2FsbGJhY2tBcmcKK3sKKwlMb2dpY2FsUmVwTXNnVHlw ZSBjb21tYW5kOwkvKiAwIGlmIGludmFsaWQgKi8KKwlMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJl bDsKKworCS8qIFJlbW90ZSBub2RlIGluZm9ybWF0aW9uICovCisJaW50CQkJcmVtb3RlX2F0dG51 bTsJLyogLTEgaWYgaW52YWxpZCAqLworCVRyYW5zYWN0aW9uSWQgcmVtb3RlX3hpZDsKKwlYTG9n UmVjUHRyCWZpbmlzaF9sc247CisJY2hhcgkgICAqb3JpZ2luX25hbWU7Cit9IEFwcGx5RXJyb3JD YWxsYmFja0FyZzsKKworLyoKKyAqIFN0YXR1cyBvZiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4K KyAqLwordHlwZWRlZiBlbnVtIEFwcGx5Qmd3b3JrZXJTdGF0dXMKK3sKKwlBUFBMWV9CR1dPUktF Ul9CVVNZID0gMCwJCS8qIGFzc2lnbmVkIHRvIGEgdHJhbnNhY3Rpb24gKi8KKwlBUFBMWV9CR1dP UktFUl9GSU5JU0hFRCwJCS8qIHRyYW5zYWN0aW9uIGlzIGNvbXBsZXRlZCAqLworCUFQUExZX0JH V09SS0VSX0VYSVQJCQkJLyogZXhpdCAqLworfSBBcHBseUJnd29ya2VyU3RhdHVzOworCisvKgor ICogU3RydWN0IGZvciBzaGFyaW5nIGluZm9ybWF0aW9uIGJldHdlZW4gYXBwbHkgbWFpbiBhbmQg YXBwbHkgYmFja2dyb3VuZAorICogd29ya2Vycy4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgQXBwbHlC Z3dvcmtlclNoYXJlZAoreworCXNsb2NrX3QJbXV0ZXg7CisKKwkvKiBTdGF0dXMgb2YgYXBwbHkg YmFja2dyb3VuZCB3b3JrZXIuICovCisJQXBwbHlCZ3dvcmtlclN0YXR1cwlzdGF0dXM7CisKKwkv KiBwcm90byB2ZXJzaW9uIG9mIHB1Ymxpc2hlci4gKi8KKwl1aW50MzIJcHJvdG9fdmVyc2lvbjsK KworCVRyYW5zYWN0aW9uSWQJc3RyZWFtX3hpZDsKKworCS8qIGlkIG9mIGFwcGx5IGJhY2tncm91 bmQgd29ya2VyICovCisJdWludDMyCXdvcmtlcl9pZDsKK30gQXBwbHlCZ3dvcmtlclNoYXJlZDsK KworLyoKKyAqIFN0cnVjdCBmb3IgbWFpbnRhaW5pbmcgYW4gYXBwbHkgYmFja2dyb3VuZCB3b3Jr ZXIuCisgKi8KK3R5cGVkZWYgc3RydWN0IEFwcGx5Qmd3b3JrZXJTdGF0ZQoreworCXNobV9tcV9o YW5kbGUJCQkqbXFfaGFuZGxlOworCWRzbV9zZWdtZW50CQkJCSpkc21fc2VnOworCUFwcGx5Qmd3 b3JrZXJTaGFyZWQgdm9sYXRpbGUJKnNoYXJlZDsKK30gQXBwbHlCZ3dvcmtlclN0YXRlOworCiAv KiBNYWluIG1lbW9yeSBjb250ZXh0IGZvciBhcHBseSB3b3JrZXIuIFBlcm1hbmVudCBkdXJpbmcg d29ya2VyIGxpZmV0aW1lLiAqLwogZXh0ZXJuIFBHRExMSU1QT1JUIE1lbW9yeUNvbnRleHQgQXBw bHlDb250ZXh0OworZXh0ZXJuIFBHRExMSU1QT1JUIE1lbW9yeUNvbnRleHQgQXBwbHlNZXNzYWdl Q29udGV4dDsKKworZXh0ZXJuIFBHRExMSU1QT1JUIEFwcGx5RXJyb3JDYWxsYmFja0FyZyBhcHBs eV9lcnJvcl9jYWxsYmFja19hcmc7CisKK2V4dGVybiBQR0RMTElNUE9SVCBib29sIE15U3Vic2Ny aXB0aW9uVmFsaWQ7CisKK2V4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBBcHBseUJnd29ya2Vy U2hhcmVkICpNeVBhcmFsbGVsU2hhcmVkOworCitleHRlcm4gUEdETExJTVBPUlQgTGlzdCAqc3Vi eGFjdGxpc3Q7CiAKIC8qIGxpYnBxcmVjZWl2ZXIgY29ubmVjdGlvbiAqLwogZXh0ZXJuIFBHRExM SU1QT1JUIHN0cnVjdCBXYWxSZWNlaXZlckNvbm4gKkxvZ1JlcFdvcmtlcldhbFJjdkNvbm47CkBA IC03OSwxOCArMTQ3LDIyIEBAIGV4dGVybiBQR0RMTElNUE9SVCBTdWJzY3JpcHRpb24gKk15U3Vi c2NyaXB0aW9uOwogZXh0ZXJuIFBHRExMSU1QT1JUIExvZ2ljYWxSZXBXb3JrZXIgKk15TG9naWNh bFJlcFdvcmtlcjsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgaW5fcmVtb3RlX3RyYW5zYWN0 aW9uOworZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb247Citl eHRlcm4gUEdETExJTVBPUlQgVHJhbnNhY3Rpb25JZCBzdHJlYW1feGlkOwogCiBleHRlcm4gdm9p ZCBsb2dpY2FscmVwX3dvcmtlcl9hdHRhY2goaW50IHNsb3QpOwogZXh0ZXJuIExvZ2ljYWxSZXBX b3JrZXIgKmxvZ2ljYWxyZXBfd29ya2VyX2ZpbmQoT2lkIHN1YmlkLCBPaWQgcmVsaWQsCiAJCQkJ CQkJCQkJCQlib29sIG9ubHlfcnVubmluZyk7CiBleHRlcm4gTGlzdCAqbG9naWNhbHJlcF93b3Jr ZXJzX2ZpbmQoT2lkIHN1YmlkLCBib29sIG9ubHlfcnVubmluZyk7Ci1leHRlcm4gdm9pZCBsb2dp Y2FscmVwX3dvcmtlcl9sYXVuY2goT2lkIGRiaWQsIE9pZCBzdWJpZCwgY29uc3QgY2hhciAqc3Vi bmFtZSwKLQkJCQkJCQkJCSBPaWQgdXNlcmlkLCBPaWQgcmVsaWQpOworZXh0ZXJuIGJvb2wgbG9n aWNhbHJlcF93b3JrZXJfbGF1bmNoKE9pZCBkYmlkLCBPaWQgc3ViaWQsIGNvbnN0IGNoYXIgKnN1 Ym5hbWUsCisJCQkJCQkJCQkgT2lkIHVzZXJpZCwgT2lkIHJlbGlkLAorCQkJCQkJCQkJIGRzbV9o YW5kbGUgc3Vid29ya2VyX2RzbSk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl9zdG9w KE9pZCBzdWJpZCwgT2lkIHJlbGlkKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX3dh a2V1cChPaWQgc3ViaWQsIE9pZCByZWxpZCk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtl cl93YWtldXBfcHRyKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcik7CiAKIGV4dGVybiBpbnQJbG9n aWNhbHJlcF9zeW5jX3dvcmtlcl9jb3VudChPaWQgc3ViaWQpOworZXh0ZXJuIGludAlsb2dpY2Fs cmVwX2FwcGx5X2Jnd29ya2VyX2NvdW50KE9pZCBzdWJpZCk7CiAKIGV4dGVybiB2b2lkIFJlcGxp Y2F0aW9uT3JpZ2luTmFtZUZvclRhYmxlc3luYyhPaWQgc3Vib2lkLCBPaWQgcmVsaWQsCiAJCQkJ CQkJCQkJCSAgY2hhciAqb3JpZ2lubmFtZSwgaW50IHN6b3JnbmFtZSk7CkBAIC0xMDMsMTAgKzE3 NSwzOCBAQCBleHRlcm4gdm9pZCBwcm9jZXNzX3N5bmNpbmdfdGFibGVzKFhMb2dSZWNQdHIgY3Vy cmVudF9sc24pOwogZXh0ZXJuIHZvaWQgaW52YWxpZGF0ZV9zeW5jaW5nX3RhYmxlX3N0YXRlcyhE YXR1bSBhcmcsIGludCBjYWNoZWlkLAogCQkJCQkJCQkJCQl1aW50MzIgaGFzaHZhbHVlKTsKIAor ZXh0ZXJuIHZvaWQgVXBkYXRlV29ya2VyU3RhdHMoWExvZ1JlY1B0ciBsYXN0X2xzbiwgVGltZXN0 YW1wVHogc2VuZF90aW1lLAorCQkJCQkJCSAgYm9vbCByZXBseSk7CisKK2V4dGVybiB2b2lkIGFw cGx5X2Rpc3BhdGNoKFN0cmluZ0luZm8gcyk7CisKKy8qIEZ1bmN0aW9uIGZvciBhcHBseSBlcnJv ciBjYWxsYmFjayAqLworZXh0ZXJuIHZvaWQgYXBwbHlfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJn KTsKKworZXh0ZXJuIHZvaWQgc3Vic2NyaXB0aW9uX2NoYW5nZV9jYihEYXR1bSBhcmcsIGludCBj YWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKTsKKworLyogQXBwbHkgYmFja2dyb3VuZCB3b3JrZXIg c2V0dXAgYW5kIGludGVyYWN0aW9ucyAqLworZXh0ZXJuIEFwcGx5Qmd3b3JrZXJTdGF0ZSAqYXBw bHlfYmd3b3JrZXJfc3RhcnQoVHJhbnNhY3Rpb25JZCB4aWQpOworZXh0ZXJuIEFwcGx5Qmd3b3Jr ZXJTdGF0ZSAqYXBwbHlfYmd3b3JrZXJfZmluZChUcmFuc2FjdGlvbklkIHhpZCk7CitleHRlcm4g dm9pZCBhcHBseV9iZ3dvcmtlcl93YWl0X2ZvcihBcHBseUJnd29ya2VyU3RhdGUgKndzdGF0ZSwK KwkJCQkJCQkJCUFwcGx5Qmd3b3JrZXJTdGF0dXMgd2FpdF9mb3Jfc3RhdHVzKTsKK2V4dGVybiB2 b2lkIGFwcGx5X2Jnd29ya2VyX3NlbmRfZGF0YShBcHBseUJnd29ya2VyU3RhdGUgKndzdGF0ZSwg U2l6ZSBuYnl0ZXMsCisJCQkJCQkJCQkgY29uc3Qgdm9pZCAqZGF0YSk7CitleHRlcm4gdm9pZCBh cHBseV9iZ3dvcmtlcl9mcmVlKEFwcGx5Qmd3b3JrZXJTdGF0ZSAqd3N0YXRlKTsKK2V4dGVybiB2 b2lkIGFwcGx5X2Jnd29ya2VyX2NoZWNrX3N0YXR1cyh2b2lkKTsKK2V4dGVybiB2b2lkIGFwcGx5 X2Jnd29ya2VyX3NldF9zdGF0dXMoQXBwbHlCZ3dvcmtlclN0YXR1cyBzdGF0dXMpOworZXh0ZXJu IHZvaWQgYXBwbHlfYmd3b3JrZXJfc3VieGFjdF9pbmZvX2FkZChUcmFuc2FjdGlvbklkIGN1cnJl bnRfeGlkKTsKKwogc3RhdGljIGlubGluZSBib29sCiBhbV90YWJsZXN5bmNfd29ya2VyKHZvaWQp CiB7CiAJcmV0dXJuIE9pZElzVmFsaWQoTXlMb2dpY2FsUmVwV29ya2VyLT5yZWxpZCk7CiB9CiAK K3N0YXRpYyBpbmxpbmUgYm9vbAorYW1fYXBwbHlfYmd3b3JrZXIodm9pZCkKK3sKKwlyZXR1cm4g TXlMb2dpY2FsUmVwV29ya2VyLT5zdWJ3b3JrZXI7Cit9CisKICNlbmRpZgkJCQkJCQkvKiBXT1JL RVJfSU5URVJOQUxfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVu dC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oCmluZGV4IDZmMmQ1NjEyZTAuLjhh Y2VlNjNiZTAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaAorKysg Yi9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKQEAgLTEwNSw2ICsxMDUsNyBAQCB0eXBl ZGVmIGVudW0KIAlXQUlUX0VWRU5UX0hBU0hfR1JPV19CVUNLRVRTX0FMTE9DQVRFLAogCVdBSVRf RVZFTlRfSEFTSF9HUk9XX0JVQ0tFVFNfRUxFQ1QsCiAJV0FJVF9FVkVOVF9IQVNIX0dST1dfQlVD S0VUU19SRUlOU0VSVCwKKwlXQUlUX0VWRU5UX0xPR0lDQUxfQVBQTFlfQkdXT1JLRVJfU1RBVEVf Q0hBTkdFLAogCVdBSVRfRVZFTlRfTE9HSUNBTF9TWU5DX0RBVEEsCiAJV0FJVF9FVkVOVF9MT0dJ Q0FMX1NZTkNfU1RBVEVfQ0hBTkdFLAogCVdBSVRfRVZFTlRfTVFfSU5URVJOQUwsCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKaW5kZXggZWYwZWJmOTZiOS4uOTli OWU4NjdlNCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRp b24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dApA QCAtMjE3LDkgKzIxNyw5IEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VU IChzbG90X25hbWUgPSBOT05FKTsKICgxIHJvdykKIAogRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVz c190ZXN0c3ViOwotLS0gZmFpbCAtIHN0cmVhbWluZyBtdXN0IGJlIGJvb2xlYW4KKy0tIGZhaWwg LSBzdHJlYW1pbmcgbXVzdCBiZSBib29sZWFuIG9yICdwYXJhbGxlbCcKIENSRUFURSBTVUJTQ1JJ UFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3Rl eGlzdCcgUFVCTElDQVRJT04gdGVzdHB1YiBXSVRIIChjb25uZWN0ID0gZmFsc2UsIHN0cmVhbWlu ZyA9IGZvbyk7Ci1FUlJPUjogIHN0cmVhbWluZyByZXF1aXJlcyBhIEJvb2xlYW4gdmFsdWUKK0VS Uk9SOiAgc3RyZWFtaW5nIHJlcXVpcmVzIGEgQm9vbGVhbiB2YWx1ZSBvciAicGFyYWxsZWwiCiAt LSBub3cgaXQgd29ya3MKIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5F Q1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCTElDQVRJT04gdGVzdHB1YiBX SVRIIChjb25uZWN0ID0gZmFsc2UsIHN0cmVhbWluZyA9IHRydWUpOwogV0FSTklORzogIHRhYmxl cyB3ZXJlIG5vdCBzdWJzY3JpYmVkLCB5b3Ugd2lsbCBoYXZlIHRvIHJ1biBBTFRFUiBTVUJTQ1JJ UFRJT04gLi4uIFJFRlJFU0ggUFVCTElDQVRJT04gdG8gc3Vic2NyaWJlIHRoZSB0YWJsZXMKQEAg LTIzMCw2ICsyMzAsMTQgQEAgV0FSTklORzogIHRhYmxlcyB3ZXJlIG5vdCBzdWJzY3JpYmVkLCB5 b3Ugd2lsbCBoYXZlIHRvIHJ1biBBTFRFUiBTVUJTQ1JJUFRJT04gLi4KICByZWdyZXNzX3Rlc3Rz dWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwg ZiAgICAgIHwgdCAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAg fCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhp c3QgfCAwLzAKICgxIHJvdykKIAorQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBT RVQgKHN0cmVhbWluZyA9IHBhcmFsbGVsKTsKK1xkUnMrCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBT dHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8 IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAg TFNOIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJl Z3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAg fCBwICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAg ICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAv MAorKDEgcm93KQorCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc3Ry ZWFtaW5nID0gZmFsc2UpOwogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQg KHNsb3RfbmFtZSA9IE5PTkUpOwogXGRScysKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3N1YnNjcmlwdGlvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24u c3FsCmluZGV4IDQ0MjVmYWZjNDYuLmVkMTQ4ZTRiZDQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3N1YnNjcmlwdGlvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vi c2NyaXB0aW9uLnNxbApAQCAtMTU2LDcgKzE1Niw3IEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdy ZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKIAogRFJPUCBTVUJTQ1JJUFRJT04g cmVncmVzc190ZXN0c3ViOwogCi0tLSBmYWlsIC0gc3RyZWFtaW5nIG11c3QgYmUgYm9vbGVhbgor LS0gZmFpbCAtIHN0cmVhbWluZyBtdXN0IGJlIGJvb2xlYW4gb3IgJ3BhcmFsbGVsJwogQ1JFQVRF IFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3Nf ZG9lc25vdGV4aXN0JyBQVUJMSUNBVElPTiB0ZXN0cHViIFdJVEggKGNvbm5lY3QgPSBmYWxzZSwg c3RyZWFtaW5nID0gZm9vKTsKIAogLS0gbm93IGl0IHdvcmtzCkBAIC0xNjQsNiArMTY0LDEwIEBA IENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1y ZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCCiAKIFxkUnMrCiAKK0FMVEVSIFNVQlNDUklQVElPTiBy ZWdyZXNzX3Rlc3RzdWIgU0VUIChzdHJlYW1pbmcgPSBwYXJhbGxlbCk7CisKK1xkUnMrCisKIEFM VEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzdHJlYW1pbmcgPSBmYWxzZSk7 CiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9O RSk7CiAKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3Jj L3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggMzVjOWYxZWZjZS4uYjEzOTRiNGY3 OSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3Jj L3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTExNiw2ICsxMTYsMTAgQEAgQXBwZW5k CiBBcHBlbmRQYXRoCiBBcHBlbmRSZWxJbmZvCiBBcHBlbmRTdGF0ZQorQXBwbHlCZ3dvcmtlckVu dHJ5CitBcHBseUJnd29ya2VyU2hhcmVkCitBcHBseUJnd29ya2VyU3RhdGUKK0FwcGx5Qmd3b3Jr ZXJTdGF0dXMKIEFwcGx5RXJyb3JDYWxsYmFja0FyZwogQXBwbHlFeGVjdXRpb25EYXRhCiBBcHBs eVN1YlhhY3REYXRhCkBAIC0xNDg1LDYgKzE0ODksNyBAQCBMb2dpY2FsUmVwUmVsSWQKIExvZ2lj YWxSZXBSZWxNYXBFbnRyeQogTG9naWNhbFJlcFJlbGF0aW9uCiBMb2dpY2FsUmVwUm9sbGJhY2tQ cmVwYXJlZFR4bkRhdGEKK0xvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEKIExvZ2ljYWxSZXBUdXBs ZURhdGEKIExvZ2ljYWxSZXBUeXAKIExvZ2ljYWxSZXBXb3JrZXIKLS0gCjIuMjMuMC53aW5kb3dz LjEKCg== --_005_OS3PR01MB6275D64BE7726B0221B15F389E9F9OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v20-0002-Test-streaming-parallel-option-in-tap-test.patch" Content-Description: v20-0002-Test-streaming-parallel-option-in-tap-test.patch Content-Disposition: attachment; filename="v20-0002-Test-streaming-parallel-option-in-tap-test.patch"; size=70794; creation-date="Thu, 04 Aug 2022 06:35:00 GMT"; modification-date="Thu, 04 Aug 2022 06:35:43 GMT" Content-Transfer-Encoding: base64 RnJvbSA5ZjI1YmI5Y2MwYjRhY2NkNmI0MDZhODU0YWE3OGZkZGIyOGIzZTU5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAic2hpeS5mbnN0IiA8c2hpeS5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBGcmksIDEzIE1heSAyMDIyIDE0OjUwOjMwICswODAwClN1YmplY3Q6IFtQQVRDSCB2MjAg Mi80XSBUZXN0IHN0cmVhbWluZyBwYXJhbGxlbCBvcHRpb24gaW4gdGFwIHRlc3QKCkNoYW5nZSBh bGwgVEFQIHRlc3RzIHVzaW5nIHRoZSBTVUJTQ1JJUFRJT04gInN0cmVhbWluZyIgcGFyYW1ldGVy LCBzbyB0aGV5Cm5vdyB0ZXN0IGJvdGggJ29uJyBhbmQgJ3BhcmFsbGVsJyB2YWx1ZXMuCi0tLQog c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgIHwgMTk5ICsrKyst LS0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbCB8IDEyMSAr KystLQogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwgICAgIHwgMTk0 ICsrKystLS0KIC4uLi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbCAgICAgICAgICAgICB8 IDIwMSArKysrLS0tCiAuLi4vdC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsICAgICAg ICAgfCAxMTIgKysrLQogLi4uL3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBs ICAgIHwgMzYzICsrKysrKystLS0tLS0KIC4uLi9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vf c3RyZWFtLnBsICAgICB8IDQ5OCArKysrKysrKysrLS0tLS0tLS0KIDcgZmlsZXMgY2hhbmdlZCwg MTA0MyBpbnNlcnRpb25zKCspLCA2NDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAxNV9zdHJlYW0ucGwKaW5kZXggY2JhYTMyN2U0NC4uOWY0OTQ2ZDdkNiAxMDA2NDQKLS0tIGEv 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 IC00OSw4MiArMTYzLDI1IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8 MiksICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMg SW50ZXJsZWF2ZSBhIHBhaXIgb2YgdHJhbnNhY3Rpb25zLCBlYWNoIGV4Y2VlZGluZyB0aGUgNjRr QiBsaW1pdC4KLW15ICRpbiAgPSAnJzsKLW15ICRvdXQgPSAnJzsKLQotbXkgJHRpbWVyID0gSVBD OjpSdW46OnRpbWVvdXQoJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQp OwotCi1teSAkaCA9ICRub2RlX3B1Ymxpc2hlci0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jlcycs IFwkaW4sIFwkb3V0LCAkdGltZXIsCi0Jb25fZXJyb3Jfc3RvcCA9PiAwKTsKLQotJGluIC49IHF7 Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9 IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBt b2QoYSwzKSA9IDA7Ci19OwotJGgtPnB1bXBfbmI7Ci0KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSwgOTk5OSkgcyhpKTsK LURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiA1MDAwOwotQ09NTUlUOwotfSk7Ci0KLSRp biAuPSBxewotQ09NTUlUOwotXHEKLX07Ci0kaC0+ZmluaXNoOyAgICAjIGVycm9ycyBtYWtlIHRo ZSBuZXh0IHRlc3QgZmFpbCwgc28gaWdub3JlIHRoZW0gaGVyZQotCi0kbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyks IGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMz NHwzMzM0KSwgJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycpOwor dGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFt ZSwgMCk7CiAKLSMgVGVzdCB0aGUgc3RyZWFtaW5nIGluIGJpbmFyeSBtb2RlCi0kbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9z dWIgU0VUIChiaW5hcnkgPSBvbikiKTsKLQotIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVu b3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSwgMTAwMDApIHMo aSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwot REVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotQ09NTUlUOwotfSk7Ci0K LSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQg 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 dGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwKaW5kZXggYmMwYTljZDA1 My4uMTA0YTE2OTE5NyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0 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 bmcgPSBvbikiCiApOwpAQCAtNDksNDEgKzExOSwyNiBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNU IGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMo JHJlc3VsdCwgcXEoMnwyfDIpLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vi c2NyaWJlcicpOwogCi0jIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8g ZXhjZWVkIDY0a0IgbGltaXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdy ZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKCAgICAzLCAgNTAwKSBzKGkpOwotVVBEQVRFIHRlc3Rf dGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3Rf dGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLCAgMTAw MCkgcyhpKTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9 IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1TQVZFUE9JTlQg czI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEwMDEsICAxNTAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0g bWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1v ZChhLDMpID0gMDsKLVNBVkVQT0lOVCBzMzsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUwMSwgIDIwMDApIHMoaSk7Ci1V UERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRF IEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotU0FWRVBPSU5UIHM0OwotSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cygyMDAxLCAyNTAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJF IG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsK LUNPTU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVz dF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDE2Njd8MTY2N3wxNjY3KSwKLQknY2hlY2sgZGF0YSB3 YXMgY29waWVkIHRvIHN1YnNjcmliZXIgaW4gc3RyZWFtaW5nIG1vZGUgYW5kIGV4dHJhIGNvbHVt bnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hl ciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOworCisjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxl bCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0g JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9N IHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScg QU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1p bmcgPSBwYXJhbGxlbCkiKTsKKworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdw b3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRp b24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVh bWluZyc7IgorICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFw cGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKKwordGVzdF9zdHJl YW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CisK ICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CiAKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsIGIvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwKaW5kZXggODY2ZjE1MTJlNC4uZWNh YzNhMzkxNSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9k ZGwucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwKQEAg LTgsNiArOCwxMTEgQEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBFbmNhcHN1bGF0ZSBhbGwg dGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCisj IHBhcmFtZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVh bWluZz1vbiBhbmQKKyMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFt aW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUs ICRpc19wYXJhbGxlbCkgPSBAXzsKKworCSMgYSBzbWFsbCAobm9uLXN0cmVhbWVkKSB0cmFuc2Fj dGlvbiB3aXRoIERETCBhbmQgRE1MCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdw b3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgzLCBt ZDUoMzo6dGV4dCkpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gYyBJTlQ7CisJ U0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoNCwgbWQ1KDQ6OnRl eHQpLCAtNCk7CisJQ09NTUlUOworCX0pOworCisJIyBDaGVjayB0aGF0IGEgYmFja2dyb3VuZCB3 b3JrZXIgc3RhcnRzIGlmICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcworCSMgc3BlY2lmaWVkIGFz ICJwYXJhbGxlbCIuICBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2Vz CisJIyBhYm91dCB0aGF0LCBzbyB0ZW1wb3JhcmlseSBidW1wIHVwIHRoZSBsb2cgdmVyYm9zaXR5 LgorCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29u ZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJ CSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkjIGxhcmdlIChzdHJlYW1lZCkgdHJh bnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAor CQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCksIC1pIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUsIDEwMDApIHMoaSk7CisJ QUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBkIElOVDsKKwlTQVZFUE9JTlQgczE7CisJ SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSBGUk9N IGdlbmVyYXRlX3NlcmllcygxMDAxLCAyMDAwKSBzKGkpOworCUNPTU1JVDsKKwl9KTsKKworCWlm ICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIv XFtBcHBseSBCR1cgI1xkK1xdIHN0YXJ0ZWQvLCAwKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBw ZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5p bmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSMgYSBzbWFsbCAobm9u LXN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCisJJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVz dF90YWIgVkFMVUVTICgyMDAxLCBtZDUoMjAwMTo6dGV4dCksIC0yMDAxLCAyKjIwMDEpOworCUFM VEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZSBJTlQ7CisJU0FWRVBPSU5UIHMxOworCUlO U0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMjAwMiwgbWQ1KDIwMDI6OnRleHQpLCAtMjAwMiwg MioyMDAyLCAtMyoyMDAyKTsKKwlDT01NSVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQo YyksIGNvdW50KGQpLCBjb3VudChlKSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEo MjAwMnwxOTk5fDEwMDJ8MSksCisJCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJl ciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1 bHRzJworCSk7CisKKwkjIEEgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBh bmQgRE1MLiBPbmUgb2YgdGhlIERETCBpcyBwZXJmb3JtZWQKKwkjIGFmdGVyIERNTCB0byBlbnN1 cmUgdGhhdCB3ZSBpbnZhbGlkYXRlIHRoZSBzY2hlbWEgc2VudCBmb3IgdGVzdF90YWIgc28gdGhh dAorCSMgdGhlIG5leHQgdHJhbnNhY3Rpb24gaGFzIHRvIHNlbmQgdGhlIHNjaGVtYSBhZ2Fpbi4K Kwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsK KwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippLCAt MyppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDMsNTAwMCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0 ZXN0X3RhYiBBREQgQ09MVU1OIGYgSU5UOworCUNPTU1JVDsKKwl9KTsKKworCSMgQSBzbWFsbCB0 cmFuc2FjdGlvbiB0aGF0IHdvbid0IGdldCBzdHJlYW1lZC4gVGhpcyBpcyBqdXN0IHRvIGVuc3Vy ZSB0aGF0IHdlCisJIyBzZW5kIHRoZSBzY2hlbWEgYWdhaW4gdG8gcmVmbGVjdCB0aGUgbGFzdCBj b2x1bW4gYWRkZWQgaW4gdGhlIHByZXZpb3VzIHRlc3QuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSwgLTMqaSwgNCppIEZST00gZ2VuZXJhdGVf c2VyaWVzKDUwMDEsNTAwNSkgcyhpKTsKKwlDT01NSVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJJHJlc3VsdCA9ICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChj KSwgY291bnQoZCksIGNvdW50KGUpLCBjb3VudChmKSBGUk9NIHRlc3RfdGFiIgorCSk7CisJaXMo JHJlc3VsdCwgcXEoNTAwNXw1MDAyfDQwMDV8MzAwNHw1KSwKKwkJJ2NoZWNrIGRhdGEgd2FzIGNv cGllZCB0byBzdWJzY3JpYmVyIGZvciBib3RoIHN0cmVhbWluZyBhbmQgbm9uLXN0cmVhbWluZyB0 cmFuc2FjdGlvbnMnCisJKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJREVMRVRFIEZST00gdGVzdF90 YWIgV0hFUkUgKGEgPiAyKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBEUk9QIENPTFVNTiBjLCBE Uk9QIENPTFVNTiBkLCBEUk9QIENPTFVNTiBlLCBEUk9QIENPTFVNTiBmOworCX0pOworCSRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Cit9CisKICMgQ3JlYXRlIHB1 Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJl YW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAgLTM3LDYgKzE0MiwxMCBAQCAkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1Ig VEFCTEUgdGVzdF90YWIiKTsKIAogbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7CisKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29u JworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVD VElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJ Q0FUSU9OIHRhcF9wdWIgV0lUSCAoc3RyZWFtaW5nID0gb24pIgogKTsKQEAgLTQ5LDc3ICsxNTgs MjYgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQg PSA5OTkpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8MHwwKSwgJ2NoZWNrIGlu aXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAotIyBhIHNtYWxsIChub24t c3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwKLSRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFi IFZBTFVFUyAoMywgbWQ1KDM6OnRleHQpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xV TU4gYyBJTlQ7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDQs IG1kNSg0Ojp0ZXh0KSwgLTQpOwotQ09NTUlUOwotfSk7Ci0KLSMgbGFyZ2UgKHN0cmVhbWVkKSB0 cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgK LQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwg bWQ1KGk6OnRleHQpLCAtaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1LCAxMDAwKSBzKGkpOwotQUxU RVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBkIElOVDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMTAwMSwgMjAwMCkgcyhpKTsKLUNPTU1JVDsKLX0pOwotCi0jIGEgc21hbGwg KG5vbi1zdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTAotJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVz dF90YWIgVkFMVUVTICgyMDAxLCBtZDUoMjAwMTo6dGV4dCksIC0yMDAxLCAyKjIwMDEpOwotQUxU RVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBlIElOVDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMjAwMiwgbWQ1KDIwMDI6OnRleHQpLCAtMjAwMiwgMioy MDAyLCAtMyoyMDAyKTsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQp LCBjb3VudChlKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgyMDAyfDE5OTl8MTAw MnwxKSwKLQknY2hlY2sgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIgaW4gc3RyZWFtaW5n IG1vZGUgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKLSk7Cit0ZXN0 X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAw KTsKIAotIyBBIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTC4g T25lIG9mIHRoZSBEREwgaXMgcGVyZm9ybWVkCi0jIGFmdGVyIERNTCB0byBlbnN1cmUgdGhhdCB3 ZSBpbnZhbGlkYXRlIHRoZSBzY2hlbWEgc2VudCBmb3IgdGVzdF90YWIgc28gdGhhdAotIyB0aGUg bmV4dCB0cmFuc2FjdGlvbiBoYXMgdG8gc2VuZCB0aGUgc2NoZW1hIGFnYWluLgotJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSwgLTMqaSBGUk9NIGdlbmVy YXRlX3NlcmllcygyMDAzLDUwMDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09M VU1OIGYgSU5UOwotQ09NTUlUOwotfSk7Ci0KLSMgQSBzbWFsbCB0cmFuc2FjdGlvbiB0aGF0IHdv bid0IGdldCBzdHJlYW1lZC4gVGhpcyBpcyBqdXN0IHRvIGVuc3VyZSB0aGF0IHdlCi0jIHNlbmQg dGhlIHNjaGVtYSBhZ2FpbiB0byByZWZsZWN0IHRoZSBsYXN0IGNvbHVtbiBhZGRlZCBpbiB0aGUg cHJldmlvdXMgdGVzdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jlcycs IHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCks IC1pLCAyKmksIC0zKmksIDQqaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLDUwMDUpIHMoaSk7 Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkKSwgY291bnQoZSksIGNv dW50KGYpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDUwMDV8NTAwMnw0MDA1fDMw MDR8NSksCi0JJ2NoZWNrIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyIGZvciBib3RoIHN0 cmVhbWluZyBhbmQgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMnCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJh bGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlk ID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBG Uk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFt ZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAorJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJl YW1pbmcgPSBwYXJhbGxlbCkiKTsKKworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGls KCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGlj YXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0 cmVhbWluZyc7IgorICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9y IGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKKwordGVzdF9z dHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7 CisKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CiAKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9y dC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5w bAppbmRleCA1NTFmMTZkZjZkLi4wNDE1ZWY3ZDk4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQucGwKKysrIGIvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsCkBAIC04LDYgKzgsMTEzIEBA IHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0 aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVz dCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgorIyBwYXJhbWV0ZXIgc28g dGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kCisj IHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgk bm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwp ID0gQF87CisKKwkjIENoZWNrIHRoYXQgYSBiYWNrZ3JvdW5kIHdvcmtlciBzdGFydHMgaWYgInN0 cmVhbWluZyIgcGFyYW1ldGVyIGlzCisJIyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIi4gIFdlIGhh dmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMKKwkjIGFib3V0IHRoYXQsIHNv IHRlbXBvcmFyaWx5IGJ1bXAgdXAgdGhlIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxl bCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYn LAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+ cmVsb2FkOworCX0KKworCSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCwg RE1MIGFuZCBST0xMQkFDS3MKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3Rn cmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsNTAwKSBzKGkpOworCVNBVkVQT0lOVCBzMTsK KwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDUwMSwxMDAwKSBzKGkpOworCVNBVkVQT0lOVCBzMjsKKwlJTlNFUlQgSU5UTyB0 ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEs MTUwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczM7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLDIwMDApIHMoaSk7CisJ Uk9MTEJBQ0sgVE8gczI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0 ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAxLDI1MDApIHMoaSk7CisJUk9MTEJBQ0sgVE8g czE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3NlcmllcygyNTAxLDMwMDApIHMoaSk7CisJU0FWRVBPSU5UIHM0OworCUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MzAwMSwzNTAwKSBzKGkpOworCVNBVkVQT0lOVCBzNTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBT RUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDM1MDEsNDAwMCkgcyhp KTsKKwlDT01NSVQ7CisJfSk7CisKKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vi c2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyL1xbQXBwbHkgQkdXICNcZCtcXSBzdGFydGVkLywgMCk7 CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJ ImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9h ZDsKKwl9CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwor CisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRy ZXN1bHQsIHFxKDIwMDB8MCksCisJCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJl ZmxlY3RlZCBvbiBzdWJzY3JpYmVyIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVm YXVsdHMnCisJKTsKKworCSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIHN1YnNj cmliZXIgcmVjZWl2aW5nIG91dCBvZiBvcmRlcgorCSMgc3VidHJhbnNhY3Rpb24gUk9MTEJBQ0tz CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47 CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVy YXRlX3Nlcmllcyg0MDAxLDQ1MDApIHMoaSk7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAw MSw1NTAwKSBzKGkpOworCVNBVkVQT0lOVCBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDYwMDEsNjUwMCkgcyhpKTsK KwlTQVZFUE9JTlQgczM7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0 ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg3MDAxLDc1MDApIHMoaSk7CisJUkVMRUFTRSBzMjsK KwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDgwMDEsODUwMCkgcyhpKTsKKwlST0xMQkFDSyBUTyBzMTsKKwlDT01NSVQ7CisJ fSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJ JHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJ IlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQs IHFxKDI1MDB8MCksCisJCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3Rl ZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0 aCBzdWJzY3JpYmVyIHJlY2VpdmluZyByb2xsYmFjaworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoODUwMSw5MDAwKSBzKGkp OworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDkwMDEsOTUwMCkgcyhpKTsKKwlTQVZFUE9JTlQg czI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3Nlcmllcyg5NTAxLDEwMDAwKSBzKGkpOworCVJPTExCQUNLOworCX0pOworCisJJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSRyZXN1bHQgPQor CSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291 bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgyNTAwfDAp LCAnY2hlY2sgcm9sbGJhY2sgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIENs ZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpIik7CisJJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKK30KKwogIyBDcmVhdGUgcHVibGlz aGVyIG5vZGUKIG15ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXIt Pm5ldygncHVibGlzaGVyJyk7CiAkbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWlu ZyA9PiAnbG9naWNhbCcpOwpAQCAtMzYsNiArMTQzLDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJM RSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9O ICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElDQVRJ T04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcgPSBvbikiCiApOwpAQCAtNDgsODEgKzE1OSwyNSBA QCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFi Iik7CiBpcygkcmVzdWx0LCBxcSgyfDApLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQg dG8gc3Vic2NyaWJlcicpOwogCi0jIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBE REwsIERNTCBhbmQgUk9MTEJBQ0tzCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9z dGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsNTAwKSBzKGkpOwotU0FWRVBPSU5UIHMxOwot SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRl X3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwxNTAw KSBzKGkpOwotU0FWRVBPSU5UIHMzOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLDIwMDApIHMoaSk7Ci1ST0xMQkFD SyBUTyBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMjAwMSwyNTAwKSBzKGkpOwotUk9MTEJBQ0sgVE8gczE7Ci1JTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDI1MDEsMzAwMCkgcyhpKTsKLVNBVkVQT0lOVCBzNDsKLUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMzAwMSwzNTAwKSBz KGkpOwotU0FWRVBPSU5UIHM1OwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzNTAxLDQwMDApIHMoaSk7Ci1DT01NSVQ7Ci19 KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJl c3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxF Q1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDIw MDB8MCksCi0JJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1 YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKK3Rlc3Rf c3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDAp OworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5n IHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGlj YXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAot IyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciByZWNlaXZpbmcg b3V0IG9mIG9yZGVyCi0jIHN1YnRyYW5zYWN0aW9uIFJPTExCQUNLcwotJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg0MDAxLDQ1MDAp IHMoaSk7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsNTUwMCkgcyhpKTsKLVNBVkVQT0lO VCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoNjAwMSw2NTAwKSBzKGkpOwotU0FWRVBPSU5UIHMzOwotSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg3 MDAxLDc1MDApIHMoaSk7Ci1SRUxFQVNFIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg4MDAxLDg1MDApIHMoaSk7Ci1S T0xMQkFDSyBUTyBzMTsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0 X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMjUwMHwwKSwKLQknY2hlY2sgcm9sbGJhY2sgdG8gc2F2 ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIGxhcmdlIChzdHJlYW1l ZCkgdHJhbnNhY3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyByb2xsYmFjawotJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg4 NTAxLDkwMDApIHMoaSk7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDkwMDEsOTUwMCkgcyhpKTsK LVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoOTUwMSwxMDAwMCkgcyhpKTsKLVJPTExCQUNLOwotfSk7 Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1 bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNU IGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgyNTAw fDApLCAnY2hlY2sgcm9sbGJhY2sgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyJyk7Ciskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VCU0NSSVBUSU9O IHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIpOworCiskbm9kZV9wdWJsaXNoZXIt PnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZS T00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1l JyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQg d2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJ UFRJT04iOworCit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmli ZXIsICRhcHBuYW1lLCAxKTsKIAogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxp c2hlci0+c3RvcDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJl YW1fc3VieGFjdF9kZGxfYWJvcnQucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTlfc3Ry ZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsCmluZGV4IDRkN2RhODJiN2EuLmNlZWJkMDM5NTIgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxf YWJvcnQucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0 X2RkbF9hYm9ydC5wbApAQCAtOSw2ICs5LDY5IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMg RW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0 byAic3RyZWFtaW5nIgorIyBwYXJhbWV0ZXIgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJv dGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kCisjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4K K3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNj cmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87CisKKwkjIENoZWNrIHRoYXQgYSBi YWNrZ3JvdW5kIHdvcmtlciBzdGFydHMgaWYgInN0cmVhbWluZyIgcGFyYW1ldGVyIGlzCisJIyBz cGVjaWZpZWQgYXMgInBhcmFsbGVsIi4gIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBs b2cgbWVzc2FnZXMKKwkjIGFib3V0IHRoYXQsIHNvIHRlbXBvcmFyaWx5IGJ1bXAgdXAgdGhlIGxv ZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXIt PmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBk ZWJ1ZzEiKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSMgbGFyZ2UgKHN0 cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBST0xMQkFDS3MKKwkkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDMsNTAwKSBzKGkpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gYyBJTlQ7CisJ U0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCksIC1pIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMSwxMDAwKSBzKGkpOworCUFMVEVSIFRBQkxF IHRlc3RfdGFiIEFERCBDT0xVTU4gZCBJTlQ7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMTAwMSwxNTAwKSBzKGkpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4g ZSBJTlQ7CisJU0FWRVBPSU5UIHMzOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCksIC1pLCAyKmksIC0zKmkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUwMSwyMDAw KSBzKGkpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIERST1AgQ09MVU1OIGM7CisJUk9MTEJBQ0sg VE8gczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgaSBG Uk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKKwlDT01NSVQ7CisJfSk7CisKKwlp ZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFy L1xbQXBwbHkgQkdXICNcZCtcXSBzdGFydGVkLywgMCk7CisJCSRub2RlX3N1YnNjcmliZXItPmFw cGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJu aW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkkbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwg Y291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDEwMDB8NTAwKSwKKwkJ J2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIg YW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJIyBDbGVh bnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3Rn cmVzJywgcXsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpOworCUFMVEVSIFRB QkxFIHRlc3RfdGFiIERST1AgQ09MVU1OIGM7CisJfSk7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKK30KKwogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15 ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlz aGVyJyk7CiAkbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNh bCcpOwpAQCAtMzcsNiArMTAwLDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIp OwogCiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCiAJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVy X2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBX SVRIIChzdHJlYW1pbmcgPSBvbikiCiApOwpAQCAtNDksMzUgKzExNiwyNiBAQCBteSAkcmVzdWx0 ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVz dWx0LCBxcSgyfDApLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJl cicpOwogCi0jIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwsIERNTCBhbmQg Uk9MTEJBQ0tzCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewot QkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDMsNTAwKSBzKGkpOwotQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENP TFVNTiBjIElOVDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCksIC1pIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMSwxMDAwKSBzKGkpOwot QUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBkIElOVDsKLVNBVkVQT0lOVCBzMjsKLUlO U0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMTAwMSwxNTAwKSBzKGkpOwotQUxURVIgVEFCTEUgdGVzdF90YWIgQURE IENPTFVNTiBlIElOVDsKLVNBVkVQT0lOVCBzMzsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmksIC0zKmkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUw MSwyMDAwKSBzKGkpOwotQUxURVIgVEFCTEUgdGVzdF90YWIgRFJPUCBDT0xVTU4gYzsKLVJPTExC QUNLIFRPIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwg aSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKLUNPTU1JVDsKLX0pOwotCi0k bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0K LSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3Vu dCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMTAwMHw1MDAp LAotCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3Jp YmVyIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCit0ZXN0X3N0cmVh bWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKKwor IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJl YW1pbmcgbW9kZSAncGFyYWxsZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9u X25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKICk7CiAKKyRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJUFRJT04g dGFwX3N1YiBTRVQoc3RyZWFtaW5nID0gcGFyYWxsZWwpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+ cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJP TSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUn IEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyAgKQorICBvciBkaWUKKyAgIlRpbWVkIG91dCB3 aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQ VElPTiI7CisKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJl ciwgJGFwcG5hbWUsIDEpOworCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlz aGVyLT5zdG9wOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdv cGhhc2VfY2FzY2FkZS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9j YXNjYWRlLnBsCmluZGV4IDdhNzk3ZjM3YmEuLjBhNDE1MmQzYmUgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCisrKyBiL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCkBAIC0xMSw2ICsxMSwyMDgg QEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6 VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0 ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciIHBhcmFtZXRlcgorIyBz byB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQg c3RyZWFtaW5nPXBhcmFsbGVsCisjIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkg KCRub2RlX0EsICRub2RlX0IsICRub2RlX0MsICRhcHBuYW1lX0IsICRhcHBuYW1lX0MsICRzdHJl YW1pbmdfbW9kZSkgPQorCSAgQF87CisKKwlteSAkb2xkcGlkX0IgPSAkbm9kZV9BLT5zYWZlX3Bz cWwoCisJCSdwb3N0Z3JlcycsICIKKwkJU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRp b24KKwkJV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9CJyBBTkQgc3RhdGUgPSAn c3RyZWFtaW5nJzsiKTsKKwlteSAkb2xkcGlkX0MgPSAkbm9kZV9CLT5zYWZlX3BzcWwoCisJCSdw b3N0Z3JlcycsICIKKwkJU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hF UkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9DJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5n JzsiKTsKKworCSMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbiBzdHJlYW1pbmcgbW9kZQorCisJ JG5vZGVfQi0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCAiCisJCUFMVEVSIFNVQlNDUklQVElP TiB0YXBfc3ViX0IKKwkJU0VUIChzdHJlYW1pbmcgPSAkc3RyZWFtaW5nX21vZGUpOyIpOworCSRu b2RlX0MtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlBTFRFUiBTVUJTQ1JJUFRJT04g dGFwX3N1Yl9DCisJCVNFVCAoc3RyZWFtaW5nID0gJHN0cmVhbWluZ19tb2RlKSIpOworCisJIyBX YWl0IGZvciBzdWJzY3JpYmVycyB0byBmaW5pc2ggaW5pdGlhbGl6YXRpb24KKworCSRub2RlX0Et PnBvbGxfcXVlcnlfdW50aWwoCisJCSdwb3N0Z3JlcycsICIKKwkJU0VMRUNUIHBpZCAhPSAkb2xk cGlkX0IgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uCisJCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUg PSAnJGFwcG5hbWVfQicgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorCSkgb3IgZGllICJUaW1l ZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCI7CisJJG5vZGVfQi0+cG9s bF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlTRUxFQ1QgcGlkICE9ICRvbGRwaWRf QyBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICck YXBwbmFtZV9DJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisJKSBvciBkaWUgIlRpbWVkIG91 dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IjsKKworCSMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUgLyBDT01NSVQgUFJFUEFSRUQu CisJIyAxLiBEYXRhIGlzIHN0cmVhbWVkIGFzIGEgMlBDIHRyYW5zYWN0aW9uLgorCSMgMi4gVGhl biBkbyBjb21taXQgcHJlcGFyZWQuCisJIworCSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0 ZWQgb24gc3Vic2NyaWJlcihzKSBhZnRlciB0aGUgY29tbWl0LgorCSMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKKworCSMgQ2hlY2sgdGhhdCBhIGJhY2tncm91bmQgd29ya2VyIHN0YXJ0 cyBpZiAic3RyZWFtaW5nIiBvcHRwYXJhbWV0ZXJpb24gaXMKKwkjIHNwZWNpZmllZCBhcyAicGFy YWxsZWwiLiAgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcworCSMg YWJvdXQgdGhhdCwgc28gdGVtcG9yYXJpbHkgYnVtcCB1cCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlp ZiAoJHN0cmVhbWluZ19tb2RlIGVxICdwYXJhbGxlbCcpCisJeworCQkkbm9kZV9CLT5hcHBlbmRf Y29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKwkJ JG5vZGVfQi0+cmVsb2FkOworCisJCSRub2RlX0MtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNv bmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9DLT5yZWxvYWQ7CisJ fQorCisJIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0 aGUgNjRrQiBsaW1pdC4KKwkjIFRoZW4gMlBDIFBSRVBBUkUKKwkkbm9kZV9BLT5zYWZlX3BzcWwo CisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJ CVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURF TEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FD VElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJaWYgKCRzdHJlYW1pbmdfbW9kZSBlcSAn cGFyYWxsZWwnKQorCXsKKwkJJG5vZGVfQi0+d2FpdF9mb3JfbG9nKHFyL1xbQXBwbHkgQkdXICNc ZCtcXSBzdGFydGVkLywgMCk7CisJCSRub2RlX0ItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNv bmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfQi0+cmVsb2FkOwor CisJCSRub2RlX0MtPndhaXRfZm9yX2xvZyhxci9cW0FwcGx5IEJHVyAjXGQrXF0gc3RhcnRlZC8s IDApOworCQkkbm9kZV9DLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5f bWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX0MtPnJlbG9hZDsKKwl9CisKKwkkbm9kZV9B LT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOworCSRub2RlX0ItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWVfQyk7CisKKwkjIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBwcmVw YXJlZCBvbiBzdWJzY3JpYmVyKHMpCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9CLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3Rz OyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vi c2NyaWJlciBCJyk7CisJJHJlc3VsdCA9CisJICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRy ZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBDJyk7 CisKKwkjIDJQQyBDT01NSVQKKwkkbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNPTU1J VCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOworCisJJG5vZGVfQS0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZV9CKTsKKwkkbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l X0MpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIHdhcyBjb21taXR0ZWQgb24gc3Vic2Ny aWJlcihzKQorCSRyZXN1bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNF TEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsK KwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQ QyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyIEIsIGFuZCBleHRyYSBjb2x1bW5zIGhhdmUg bG9jYWwgZGVmYXVsdHMnCisJKTsKKwkkcmVzdWx0ID0gJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9N IHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLAorCQknUm93cyBp bnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBDLCBhbmQgZXh0cmEg Y29sdW1ucyBoYXZlIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIGNoZWNrIHRoZSB0cmFuc2Fj dGlvbiBzdGF0ZSBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyKHMpCisJJHJlc3VsdCA9CisJICAkbm9k ZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3By ZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29t bWl0dGVkIG9uIHN1YnNjcmliZXIgQicpOworCSRyZXN1bHQgPQorCSAgJG5vZGVfQy0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0 czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBz dWJzY3JpYmVyIEMnKTsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIFRl c3QgMlBDIFBSRVBBUkUgd2l0aCBhIG5lc3RlZCBST0xMQkFDSyBUTyBTQVZFUE9JTlQuCisJIyAw LiBDbGVhbnVwIGZyb20gcHJldmlvdXMgdGVzdCBsZWF2aW5nIG9ubHkgMiByb3dzLgorCSMgMS4g SW5zZXJ0IG9uZSBtb3JlIHJvdy4KKwkjIDIuIFJlY29yZCBhIFNBVkVQT0lOVC4KKwkjIDMuIERh dGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgorCSMgNC4gRG8gcm9sbGJhY2sgdG8gU0FWRVBPSU5U IHByaW9yIHRvIHRoZSBzdHJlYW1lZCBpbnNlcnRzLgorCSMgNS4gVGhlbiBDT01NSVQgUFJFUEFS RUQuCisJIworCSMgRXhwZWN0IGRhdGEgYWZ0ZXIgdGhlIFNBVkVQT0lOVCBpcyBhYm9ydGVkIGxl YXZpbmcgb25seSAzIHJvd3MgKD0gMiBvcmlnaW5hbCArIDEgZnJvbSBzdGVwIDEpLgorCSMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBl eGNlcHQgZm9yIDIgcm93cyAoZGVsZXRlIHdpbGwgYmUgcmVwbGljYXRlZCkKKwkkbm9kZV9BLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIp OworCisJIyAyUEMgUFJFUEFSRSB3aXRoIGEgbmVzdGVkIFJPTExCQUNLIFRPIFNBVkVQT0lOVAor CSRub2RlX0EtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlCRUdJTjsKKwkJSU5TRVJU IElOVE8gdGVzdF90YWIgVkFMVUVTICg5OTk5LCAnZm9vYmFyJyk7CisJCVNBVkVQT0lOVCBzcF9p bm5lcjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIg PSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVS RSBtb2QoYSwzKSA9IDA7CisJCVJPTExCQUNLIFRPIFNBVkVQT0lOVCBzcF9pbm5lcjsKKwkJUFJF UEFSRSBUUkFOU0FDVElPTiAnb3V0ZXInOworCQkiKTsKKworCSRub2RlX0EtPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWVfQik7CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9D KTsKKworCSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIHByZXBhcmVkIG9uIHN1YnNjcmli ZXIocykKKwkkcmVzdWx0ID0KKwkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQki U0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwg cXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEInKTsKKwkkcmVz dWx0ID0KKwkgICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50 KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFu c2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEMnKTsKKworCSMgMlBDIENPTU1JVAor CSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ09NTUlUIFBSRVBBUkVEICdvdXRlcic7 Iik7CisKKwkkbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOworCSRub2RlX0It PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7CisKKwkjIGNoZWNrIHRoZSB0cmFuc2FjdGlv biBzdGF0ZSBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9CisJICAkbm9kZV9CLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVk X3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgZW5kZWQgb24g c3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9CisJICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlz KCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgZW5kZWQgb24gc3Vic2NyaWJlciBDJyk7 CisKKwkjIGNoZWNrIGluc2VydHMgYXJlIHZpc2libGUgYXQgc3Vic2NyaWJlcihzKS4KKwkjIEFs bCB0aGUgc3RyZWFtZWQgZGF0YSAocHJpb3IgdG8gdGhlIFNBVkVQT0lOVCkgc2hvdWxkIGJlIHJv bGxlZCBiYWNrLgorCSMgKDk5OTksICdmb29iYXInKSBzaG91bGQgYmUgY29tbWl0dGVkLgorCSRy ZXN1bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgq KSBGUk9NIHRlc3RfdGFiIHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsKKwlpcygkcmVzdWx0LCBxcSgx KSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQicpOworCSRyZXN1 bHQgPQorCSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikg RlJPTSB0ZXN0X3RhYjsiKTsKKwlpcygkcmVzdWx0LCBxcSgzKSwgJ1Jvd3MgY29tbWl0dGVkIGFy ZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQicpOworCSRyZXN1bHQgPSAkbm9kZV9DLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIHdoZXJlIGIg PSAnZm9vYmFyJzsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBw cmVzZW50IG9uIHN1YnNjcmliZXIgQycpOworCSRyZXN1bHQgPQorCSAgJG5vZGVfQy0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsKKwlpcygk cmVzdWx0LCBxcSgzKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIg QycpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9BLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCSRub2RlX0Et PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZV9DKTsKK30KKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBT ZXR1cCBhIGNhc2NhZGUgb2YgcHViL3N1YiBub2Rlcy4KICMgbm9kZV9BIC0+IG5vZGVfQiAtPiBu b2RlX0MKQEAgLTI2MCwxNjAgKzQ2MiwxNSBAQCBpcygkcmVzdWx0LCBxcSgyMSksICdSb3dzIGNv bW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3JpYmVyIEMnKTsKICMgMlBDICsgU1RSRUFNSU5H IFRFU1RTCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1teSAkb2xkcGlkX0IgPSAkbm9kZV9B LT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgIgotCVNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3Jl cGxpY2F0aW9uCi0JV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9CJyBBTkQgc3Rh dGUgPSAnc3RyZWFtaW5nJzsiKTsKLW15ICRvbGRwaWRfQyA9ICRub2RlX0ItPnNhZmVfcHNxbCgK LQkncG9zdGdyZXMnLCAiCi0JU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KLQlX SEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lX0MnIEFORCBzdGF0ZSA9ICdzdHJlYW1p bmcnOyIpOwotCi0jIFNldHVwIGxvZ2ljYWwgcmVwbGljYXRpb24gKHN0cmVhbWluZyA9IG9uKQot Ci0kbm9kZV9CLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgIgotCUFMVEVSIFNVQlNDUklQVElP TiB0YXBfc3ViX0IKLQlTRVQgKHN0cmVhbWluZyA9IG9uKTsiKTsKLSRub2RlX0MtPnNhZmVfcHNx bCgKLQkncG9zdGdyZXMnLCAiCi0JQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWJfQwotCVNFVCAo c3RyZWFtaW5nID0gb24pIik7Ci0KLSMgV2FpdCBmb3Igc3Vic2NyaWJlcnMgdG8gZmluaXNoIGlu aXRpYWxpemF0aW9uCi0KLSRub2RlX0EtPnBvbGxfcXVlcnlfdW50aWwoCi0JJ3Bvc3RncmVzJywg IgotCVNFTEVDVCBwaWQgIT0gJG9sZHBpZF9CIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbgotCVdI RVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQicgQU5EIHN0YXRlID0gJ3N0cmVhbWlu Zyc7IgotKSBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0 YXJ0IjsKLSRub2RlX0ItPnBvbGxfcXVlcnlfdW50aWwoCi0JJ3Bvc3RncmVzJywgIgotCVNFTEVD VCBwaWQgIT0gJG9sZHBpZF9DIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbgotCVdIRVJFIGFwcGxp Y2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQycgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgotKSBv ciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IjsKLQot IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBUZXN0IDJQQyBQUkVQQVJFIC8gQ09N TUlUIFBSRVBBUkVELgotIyAxLiBEYXRhIGlzIHN0cmVhbWVkIGFzIGEgMlBDIHRyYW5zYWN0aW9u LgotIyAyLiBUaGVuIGRvIGNvbW1pdCBwcmVwYXJlZC4KLSMKLSMgRXhwZWN0IGFsbCBkYXRhIGlz IHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlcihzKSBhZnRlciB0aGUgY29tbWl0LgotIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5v dWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgotIyBUaGVuIDJQQyBQUkVQQVJFCi0k bm9kZV9BLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMs IDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChh LDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci0JUFJF UEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9kZV9BLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOwotJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZV9DKTsKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcg c3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK3Rl c3Rfc3RyZWFtaW5nKCRub2RlX0EsICRub2RlX0IsICRub2RlX0MsICRhcHBuYW1lX0IsICRhcHBu YW1lX0MsICdvbicpOwogCi0jIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBwcmVwYXJl ZCBvbiBzdWJzY3JpYmVyKHMpCi0kcmVzdWx0ID0KLSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRy ZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBCJyk7 Ci0kcmVzdWx0ID0KLSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291 bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJh bnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBDJyk7Ci0KLSMgMlBDIENPTU1JVAot JG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJl cGFyZWRfdGFiJzsiKTsKLQotJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsK LSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7Ci0KLSMgY2hlY2sgdGhhdCB0 cmFuc2FjdGlvbiB3YXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIocykKLSRyZXN1bHQgPSAkbm9k ZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwg Y291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0 fDMzMzQpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3Jp YmVyIEIsIGFuZCBleHRyYSBjb2x1bW5zIGhhdmUgbG9jYWwgZGVmYXVsdHMnCi0pOwotJHJlc3Vs dCA9ICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNv dW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgz MzM0fDMzMzR8MzMzNCksCi0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9u IHN1YnNjcmliZXIgQywgYW5kIGV4dHJhIGNvbHVtbnMgaGF2ZSBsb2NhbCBkZWZhdWx0cycKLSk7 Ci0KLSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIo cykKLSRyZXN1bHQgPQotICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBj b3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0 cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0KLSAg JG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19w cmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29t bWl0dGVkIG9uIHN1YnNjcmliZXIgQycpOwotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCi0jIFRlc3QgMlBDIFBSRVBBUkUgd2l0aCBhIG5lc3RlZCBST0xMQkFDSyBUTyBTQVZFUE9J TlQuCi0jIDAuIENsZWFudXAgZnJvbSBwcmV2aW91cyB0ZXN0IGxlYXZpbmcgb25seSAyIHJvd3Mu Ci0jIDEuIEluc2VydCBvbmUgbW9yZSByb3cuCi0jIDIuIFJlY29yZCBhIFNBVkVQT0lOVC4KLSMg My4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCi0jIDQuIERvIHJvbGxiYWNrIHRvIFNBVkVQ T0lOVCBwcmlvciB0byB0aGUgc3RyZWFtZWQgaW5zZXJ0cy4KLSMgNS4gVGhlbiBDT01NSVQgUFJF UEFSRUQuCi0jCi0jIEV4cGVjdCBkYXRhIGFmdGVyIHRoZSBTQVZFUE9JTlQgaXMgYWJvcnRlZCBs ZWF2aW5nIG9ubHkgMyByb3dzICg9IDIgb3JpZ2luYWwgKyAxIGZyb20gc3RlcCAxKS4KLSMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4 Y2VwdCBmb3IgMiByb3dzIChkZWxldGUgd2lsbCBiZSByZXBsaWNhdGVkKQotJG5vZGVfQS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsK LQotIyAyUEMgUFJFUEFSRSB3aXRoIGEgbmVzdGVkIFJPTExCQUNLIFRPIFNBVkVQT0lOVAotJG5v ZGVfQS0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlCRUdJTjsKLQlJTlNFUlQgSU5UTyB0 ZXN0X3RhYiBWQUxVRVMgKDk5OTksICdmb29iYXInKTsKLQlTQVZFUE9JTlQgc3BfaW5uZXI7Ci0J SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRl X3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBX SEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykg PSAwOwotCVJPTExCQUNLIFRPIFNBVkVQT0lOVCBzcF9pbm5lcjsKLQlQUkVQQVJFIFRSQU5TQUNU SU9OICdvdXRlcic7Ci0JIik7Ci0KLSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVf Qik7Ci0kbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOwotCi0jIGNoZWNrIHRo ZSB0cmFuc2FjdGlvbiBzdGF0ZSBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyKHMpCi0kcmVzdWx0ID0K LSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBw Z19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMg cHJlcGFyZWQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0KLSAgJG5vZGVfQy0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsi KTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2Ny aWJlciBDJyk7Ci0KLSMgMlBDIENPTU1JVAotJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJDT01NSVQgUFJFUEFSRUQgJ291dGVyJzsiKTsKLQotJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZV9CKTsKLSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7Ci0K LSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIKLSRy ZXN1bHQgPQotICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgq KSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2Fj dGlvbiBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyIEInKTsKLSRyZXN1bHQgPQotICAkbm9kZV9DLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hh Y3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBlbmRlZCBvbiBzdWJz Y3JpYmVyIEMnKTsKLQotIyBjaGVjayBpbnNlcnRzIGFyZSB2aXNpYmxlIGF0IHN1YnNjcmliZXIo cykuCi0jIEFsbCB0aGUgc3RyZWFtZWQgZGF0YSAocHJpb3IgdG8gdGhlIFNBVkVQT0lOVCkgc2hv dWxkIGJlIHJvbGxlZCBiYWNrLgotIyAoOTk5OSwgJ2Zvb2JhcicpIHNob3VsZCBiZSBjb21taXR0 ZWQuCi0kcmVzdWx0ID0gJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBj b3VudCgqKSBGUk9NIHRlc3RfdGFiIHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsKLWlzKCRyZXN1bHQs IHFxKDEpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBCJyk7Ci0k cmVzdWx0ID0gJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikg RlJPTSB0ZXN0X3RhYjsiKTsKLWlzKCRyZXN1bHQsIHFxKDMpLCAnUm93cyBjb21taXR0ZWQgYXJl IHByZXNlbnQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0gJG5vZGVfQy0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIHdoZXJlIGIgPSAn Zm9vYmFyJzsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNl bnQgb24gc3Vic2NyaWJlciBDJyk7Ci0kcmVzdWx0ID0gJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsKLWlzKCRyZXN1bHQsIHFx KDMpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBDJyk7CisjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWlu ZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9BLCAkbm9kZV9CLCAkbm9kZV9DLCAkYXBwbmFtZV9CLCAk YXBwbmFtZV9DLCAncGFyYWxsZWwnKTsKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IwogIyBjaGVjayBhbGwgdGhlIGNsZWFudXAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MjNfdHdvcGhhc2Vfc3RyZWFtLnBsCmluZGV4IDliNDU0MTA2YmQuLmVhMWY0NzYxYzMgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwKKysr IGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbApAQCAtOCw2 ICs4LDI2NiBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FM OjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCisjIEVuY2Fwc3VsYXRlIGFsbCB0aGUg Y29tbW9uIHRlc3Qgc3RlcHMgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIKKyMgcGFy YW1ldGVyIHNvIHRoZSBzYW1lIGNvZGUgY2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5n PW9uIGFuZAorIyBzdHJlYW1pbmc9cGFyYWxsZWwgY2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcK K3sKKwlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlz X3BhcmFsbGVsKSA9IEBfOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMg VGVzdCAyUEMgUFJFUEFSRSAvIENPTU1JVCBQUkVQQVJFRC4KKwkjIDEuIERhdGEgaXMgc3RyZWFt ZWQgYXMgYSAyUEMgdHJhbnNhY3Rpb24uCisJIyAyLiBUaGVuIGRvIGNvbW1pdCBwcmVwYXJlZC4K KwkjCisJIyBFeHBlY3QgYWxsIGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyIHNpZGUg YWZ0ZXIgdGhlIGNvbW1pdC4KKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkj IENoZWNrIHRoYXQgYSBiYWNrZ3JvdW5kIHdvcmtlciBzdGFydHMgaWYgInN0cmVhbWluZyIgcGFy YW1ldGVyIGlzCisJIyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIi4gIFdlIGhhdmUgdG8gbG9vayBm b3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMKKwkjIGFib3V0IHRoYXQsIHNvIHRlbXBvcmFyaWx5 IGJ1bXAgdXAgdGhlIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRu b2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19t aW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0K KworCSMgY2hlY2sgdGhhdCAyUEMgZ2V0cyByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIKKwkjIElu c2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxp bWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlC RUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIg PSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVS RSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFi Jzt9KTsKKworCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0 X2Zvcl9sb2cocXIvXFtBcHBseSBCR1cgI1xkK1xdIHN0YXJ0ZWQvLCAwKTsKKwkJJG5vZGVfc3Vi c2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNz YWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSRu b2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRo YXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgorCW15ICRy ZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVD VCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEp LCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOworCisJIyAyUEMgdHJh bnNhY3Rpb24gZ2V0cyBjb21taXR0ZWQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkk bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVjayB0 aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCop LCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQs IHFxKDMzMzR8MzMzNHwzMzM0KSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0 dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVs dHMnCisJKTsKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygk cmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyJyk7 CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBUZXN0IDJQQyBQUkVQQVJF IC8gUk9MTEJBQ0sgUFJFUEFSRUQuCisJIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiBy b3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCisJIyAyLiBEYXRhIGlzIHN0 cmVhbWVkIHVzaW5nIDJQQy4KKwkjIDMuIERvIHJvbGxiYWNrIHByZXBhcmVkLgorCSMKKwkjIEV4 cGVjdCBkYXRhIHJvbGxzIGJhY2sgbGVhdmluZyBvbmx5IHRoZSBvcmlnaW5hbCAyIHJvd3MuCisJ IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBk YXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJF IGEgPiAyOyIpOworCisJIyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJv d3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwor CQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlE RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNB Q1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4g cHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBh cmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFy ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCisJ JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlJPTExCQUNLIFBSRVBB UkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0 ZWQgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkp IEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgyfDJ8MiksCisJCSdSb3dzIGluc2Vy dGVkIGJ5IDJQQyBhcmUgcm9sbGVkIGJhY2ssIGxlYXZpbmcgb25seSB0aGUgb3JpZ2luYWwgMiBy b3dzJworCSk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlp cygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcicp OworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgQ2hlY2sgdGhhdCAyUEMg Q09NTUlUIFBSRVBBUkVEIGlzIGRlY29kZWQgcHJvcGVybHkgb24gY3Jhc2ggcmVzdGFydC4KKwkj IDEuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2 NGtCIGxpbWl0LgorCSMgMi4gVGhlbiBzZXJ2ZXIgY3Jhc2hlcyBiZWZvcmUgdGhlIDJQQyB0cmFu c2FjdGlvbiBpcyBjb21taXR0ZWQuCisJIyAzLiBBZnRlciBzZXJ2ZXJzIGFyZSByZXN0YXJ0ZWQg dGhlIHBlbmRpbmcgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkLgorCSMKKwkjIEV4cGVjdCBhbGwg ZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0Lgor CSMgTm90ZTogYm90aCBwdWJsaXNoZXIgYW5kIHN1YnNjcmliZXIgZG8gY3Jhc2gvcmVzdGFydC4K KwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkkbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkg cyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0g MDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCQlQUkVQQVJF IFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7CisKKwkkbm9kZV9zdWJzY3JpYmVy LT5zdG9wKCdpbW1lZGlhdGUnKTsKKwkkbm9kZV9wdWJsaXNoZXItPnN0b3AoJ2ltbWVkaWF0ZScp OworCisJJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKKwkkbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsK KworCSMgY29tbWl0IHBvc3QgdGhlIHJlc3RhcnQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7 CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hl Y2sgaW5zZXJ0cyBhcmUgdmlzaWJsZQorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQg PSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCks CisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyLCBh bmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBEbyBJTlNFUlQgYWZ0ZXIgdGhlIFBSRVBBUkUg YnV0IGJlZm9yZSBST0xMQkFDSyBQUkVQQVJFRC4KKwkjIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFj ayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KKwkjIDIuIERh dGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgorCSMgMy4gQSBzaW5nbGUgcm93IElOU0VSVCBpcyBk b25lIHdoaWNoIGlzIGFmdGVyIHRoZSBQUkVQQVJFLgorCSMgNC4gVGhlbiBkbyBhIFJPTExCQUNL IFBSRVBBUkVELgorCSMKKwkjIEV4cGVjdCB0aGUgMlBDIGRhdGEgcm9sbHMgYmFjayBsZWF2aW5n IG9ubHkgMyByb3dzIG9uIHRoZSBzdWJzY3JpYmVyCisJIyAodGhlIG9yaWdpbmFsIDIgKyBpbnNl cnRlZCAxKS4KKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkjIEZpcnN0LCBk ZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwgYmUgcmVwbGljYXRlZCkKKwkk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVz dF90YWIgV0hFUkUgYSA+IDI7Iik7CisKKwkjIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0 ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0 ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUw MDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwy KSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJF UEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2Fj dGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZS T00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlv biBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIEluc2VydCBhIGRpZmZlcmVudCBy ZWNvcmQgKG5vdyB3ZSBhcmUgb3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5zYWN0aW9uKQorCSMgTm90 ZTogdGhlIDJQQyB0cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJl IHRoaXMgaW5zZXJ0IGlzIGZvciBhIHNlcGFyYXRlIHByaW1hcnkga2V5CisJJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVF UyAoOTk5OTksICdmb29iYXInKSIpOworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVk CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlJPTExCQUNLIFBS RVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFi b3J0ZWQgb24gc3Vic2NyaWJlciwKKwkjIGJ1dCB0aGUgZXh0cmEgSU5TRVJUIG91dHNpZGUgb2Yg dGhlIDJQQyBzdGlsbCB3YXMgcmVwbGljYXRlZAorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNv dW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzfDN8MyksCisJ CSdjaGVjayB0aGUgb3V0c2lkZSBpbnNlcnQgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CisK KwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJT RUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBx cSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgRG8gSU5TRVJUIGFmdGVyIHRoZSBQUkVQQVJF IGJ1dCBiZWZvcmUgQ09NTUlUIFBSRVBBUkVELgorCSMgMS4gVGFibGUgaXMgZGVsZXRlZCBiYWNr IHRvIDIgcm93cyB3aGljaCBhcmUgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgorCSMgMi4gRGF0 YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCisJIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlzIGRv bmUgd2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCisJIyA0LiBUaGVuIGRvIGEgQ09NTUlUIFBS RVBBUkVELgorCSMKKwkjIEV4cGVjdCAyUEMgZGF0YSArIHRoZSBleHRyYSByb3cgYXJlIG9uIHRo ZSBzdWJzY3JpYmVyCisJIyAodGhlIDMzMzQgKyBpbnNlcnRlZCAxID0gMzMzNSkuCisJIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4 Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAy OyIpOworCisJIyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8g ZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkn cG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERB VEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUg RlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04g J3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFy ZWQgc3RhdGUgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hh Y3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24g c3Vic2NyaWJlcicpOworCisJIyBJbnNlcnQgYSBkaWZmZXJlbnQgcmVjb3JkIChub3cgd2UgYXJl IG91dHNpZGUgb2YgdGhlIDJQQyB0cmFuc2FjdGlvbikKKwkjIE5vdGU6IHRoZSAyUEMgdHJhbnNh Y3Rpb24gc3RpbGwgaG9sZHMgcm93IGxvY2tzIHNvIG1ha2Ugc3VyZSB0aGlzIGluc2VydCBpcyBm b3IgYSBzZXBhcmFyZSBwcmltYXJ5IGtleQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5LCAnZm9vYmFy JykiKTsKKworCSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgY29tbWl0dGVkCisJJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVw YXJlZF90YWInOyIpOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2Ny aWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90 YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM1fDMzMzV8MzMzNSksCisJCSdSb3dzIGluc2VydGVk IGJ5IDJQQyAoYXMgd2VsbCBhcyBvdXRzaWRlIGluc2VydCkgaGF2ZSBjb21taXR0ZWQgb24gc3Vi c2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOwor CisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQki U0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwg cXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyBD bGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7CisJJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKK30KKwogIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwogIyBTZXR1cAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IwpAQCAtNDgsNiArMzA4LDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCiAJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwog CiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAogCSdwb3N0Z3Jl cycsICIKIAlDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIKQEAgLTY0LDIzNiArMzI4LDMwIEBA IG15ICR0d29waGFzZV9xdWVyeSA9CiAkbm9kZV9zdWJzY3JpYmVyLT5wb2xsX3F1ZXJ5X3VudGls KCdwb3N0Z3JlcycsICR0d29waGFzZV9xdWVyeSkKICAgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUg d2FpdGluZyBmb3Igc3Vic2NyaWJlciB0byBlbmFibGUgdHdvcGhhc2UiOwogCi0jIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIENoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRv IHN1YnNjcmliZXIKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIG15ICRyZXN1bHQg PSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIGNvdW50 KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3Vs dCwgcXEoMnwyfDIpLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJl cicpOwogCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIFRlc3QgMlBDIFBSRVBB UkUgLyBDT01NSVQgUFJFUEFSRUQuCi0jIDEuIERhdGEgaXMgc3RyZWFtZWQgYXMgYSAyUEMgdHJh bnNhY3Rpb24uCi0jIDIuIFRoZW4gZG8gY29tbWl0IHByZXBhcmVkLgotIwotIyBFeHBlY3QgYWxs IGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhlIGNvbW1pdC4K LSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1 Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwogCi0jIGNoZWNrIHRoYXQg MlBDIGdldHMgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyCi0jIEluc2VydCwgdXBkYXRlIGFuZCBk ZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgotJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJTlNFUlQgSU5UTyB0 ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUw MDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIp ID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci0JUFJFUEFS RSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24g aXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19w cmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJl cGFyZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGNvbW1pdHRl ZAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQ09NTUlUIFBSRVBB UkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBjb21taXR0 ZWQgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBG Uk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCi0JJ1Jvd3Mg aW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBj b2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0 YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0 YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFj dHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBz dWJzY3JpYmVyJyk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgVGVzdCAy UEMgUFJFUEFSRSAvIFJPTExCQUNLIFBSRVBBUkVELgotIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJh Y2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCi0jIDIuIERh dGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyAzLiBEbyByb2xsYmFjayBwcmVwYXJlZC4KLSMK LSMgRXhwZWN0IGRhdGEgcm9sbHMgYmFjayBsZWF2aW5nIG9ubHkgdGhlIG9yaWdpbmFsIDIgcm93 cy4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBGaXJzdCwgZGVsZXRlIHRo ZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCi0kbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUg YSA+IDI7Iik7Ci0KLSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dz IHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAot CSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFU RSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZS T00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rl c3RfcHJlcGFyZWRfdGFiJzt9KTsKIAotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0 YXRlIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7 Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmli ZXInKTsKLQotIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCi0kbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJST0xMQkFDSyBQUkVQQVJFRCAndGVzdF9wcmVwYXJl ZF90YWInOyIpOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyCi0k cmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVD VCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlz KCRyZXN1bHQsIHFxKDJ8MnwyKSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgYXJlIHJvbGxlZCBi YWNrLCBsZWF2aW5nIG9ubHkgdGhlIG9yaWdpbmFsIDIgcm93cycpOwotCi0kcmVzdWx0ID0gJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBG Uk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlv biBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIwotIyBDaGVjayB0aGF0IDJQQyBDT01NSVQgUFJFUEFSRUQgaXMgZGVjb2RlZCBwcm9w ZXJseSBvbiBjcmFzaCByZXN0YXJ0LgotIyAxLiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVu b3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSMgMi4gVGhlbiBzZXJ2ZXIgY3Jh c2hlcyBiZWZvcmUgdGhlIDJQQyB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuCi0jIDMuIEFmdGVy IHNlcnZlcnMgYXJlIHJlc3RhcnRlZCB0aGUgcGVuZGluZyB0cmFuc2FjdGlvbiBpcyBjb21taXR0 ZWQuCi0jCi0jIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIgc2lk ZSBhZnRlciB0aGUgY29tbWl0LgotIyBOb3RlOiBib3RoIHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJl ciBkbyBjcmFzaC9yZXN0YXJ0LgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0k bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotCUJFR0lOOwotCUlO U0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hF UkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0g MDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7Ci0KLSRub2Rl X3N1YnNjcmliZXItPnN0b3AoJ2ltbWVkaWF0ZScpOwotJG5vZGVfcHVibGlzaGVyLT5zdG9wKCdp bW1lZGlhdGUnKTsKLQotJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKLSRub2RlX3N1YnNjcmliZXIt PnN0YXJ0OwotCi0jIGNvbW1pdCBwb3N0IHRoZSByZXN0YXJ0Ci0kbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAotCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFi JzsiKTsKLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMg Y2hlY2sgaW5zZXJ0cyBhcmUgdmlzaWJsZQotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChk ID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCks Ci0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFu ZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCi0pOwotCi0jIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIERvIElOU0VSVCBhZnRlciB0aGUgUFJFUEFSRSBidXQg YmVmb3JlIFJPTExCQUNLIFBSRVBBUkVELgotIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8g MiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCi0jIDIuIERhdGEgaXMg c3RyZWFtZWQgdXNpbmcgMlBDLgotIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlzIGRvbmUgd2hp Y2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCi0jIDQuIFRoZW4gZG8gYSBST0xMQkFDSyBQUkVQQVJF RC4KLSMKLSMgRXhwZWN0IHRoZSAyUEMgZGF0YSByb2xscyBiYWNrIGxlYXZpbmcgb25seSAzIHJv d3Mgb24gdGhlIHN1YnNjcmliZXIKLSMgKHRoZSBvcmlnaW5hbCAyICsgaW5zZXJ0ZWQgMSkuCi0j IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0 YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSByZXBsaWNhdGVkKQotJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAy OyIpOwotCi0jIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBl eGNlZWQgdGhlIDY0a0IgbGltaXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9z dGdyZXMnLCBxewotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVz dF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRl c3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3By ZXBhcmVkX3RhYic7fSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBv biBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMo JHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7 Ci0KLSMgSW5zZXJ0IGEgZGlmZmVyZW50IHJlY29yZCAobm93IHdlIGFyZSBvdXRzaWRlIG9mIHRo ZSAyUEMgdHJhbnNhY3Rpb24pCi0jIE5vdGU6IHRoZSAyUEMgdHJhbnNhY3Rpb24gc3RpbGwgaG9s ZHMgcm93IGxvY2tzIHNvIG1ha2Ugc3VyZSB0aGlzIGluc2VydCBpcyBmb3IgYSBzZXBhcmF0ZSBw cmltYXJ5IGtleQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiSU5T RVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg5OTk5OSwgJ2Zvb2JhcicpIik7Ci0KLSMgMlBDIHRy YW5zYWN0aW9uIGdldHMgYWJvcnRlZAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKLQkiUk9MTEJBQ0sgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKLQotJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0 IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlciwKLSMgYnV0IHRoZSBleHRyYSBJ TlNFUlQgb3V0c2lkZSBvZiB0aGUgMlBDIHN0aWxsIHdhcyByZXBsaWNhdGVkCi0kcmVzdWx0ID0g JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgq KSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQs IHFxKDN8M3wzKSwgJ2NoZWNrIHRoZSBvdXRzaWRlIGluc2VydCB3YXMgY29waWVkIHRvIHN1YnNj cmliZXInKTsKLQotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRy ZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyJyk7Ci0K LSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgRG8gSU5TRVJUIGFmdGVyIHRoZSBQ UkVQQVJFIGJ1dCBiZWZvcmUgQ09NTUlUIFBSRVBBUkVELgotIyAxLiBUYWJsZSBpcyBkZWxldGVk IGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCi0jIDIu IERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlz IGRvbmUgd2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCi0jIDQuIFRoZW4gZG8gYSBDT01NSVQg UFJFUEFSRUQuCi0jCi0jIEV4cGVjdCAyUEMgZGF0YSArIHRoZSBleHRyYSByb3cgYXJlIG9uIHRo ZSBzdWJzY3JpYmVyCi0jICh0aGUgMzMzNCArIGluc2VydGVkIDEgPSAzMzM1KS4KLSMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2Vw dCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7Ci0K LSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0 aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jlcycs IHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0 KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBT RVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIg V0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRf dGFiJzt9KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsK LQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNj cmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK LQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0 LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKLQotIyBJ bnNlcnQgYSBkaWZmZXJlbnQgcmVjb3JkIChub3cgd2UgYXJlIG91dHNpZGUgb2YgdGhlIDJQQyB0 cmFuc2FjdGlvbikKLSMgTm90ZTogdGhlIDJQQyB0cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cg bG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMgaW5zZXJ0IGlzIGZvciBhIHNlcGFyYXJlIHByaW1hcnkg a2V5Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJJTlNFUlQgSU5U TyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5LCAnZm9vYmFyJykiKTsKLQotIyAyUEMgdHJhbnNhY3Rp b24gZ2V0cyBjb21taXR0ZWQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs Ci0JIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotCi0kbm9kZV9wdWJs aXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJl YW1pbmcgPSBwYXJhbGxlbCkiKTsKIAotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1p dHRlZCBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkp IEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDMzMzV8MzMzNXwzMzM1KSwKLQknUm93 cyBpbnNlcnRlZCBieSAyUEMgKGFzIHdlbGwgYXMgb3V0c2lkZSBpbnNlcnQpIGhhdmUgY29tbWl0 dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVs dHMnCi0pOworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJ IlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBw bGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICAp CisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3Rh cnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKIAotJHJlc3VsdCA9ICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19w cmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29t bWl0dGVkIG9uIHN1YnNjcmliZXInKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwg JG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCiAjIGNoZWNrIGFsbCB0aGUgY2xlYW51cAotLSAKMi4yMy4wLndpbmRvd3MuMQoK --_005_OS3PR01MB6275D64BE7726B0221B15F389E9F9OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v20-0003-Add-some-checks-before-using-apply-background-wo.patch" Content-Description: v20-0003-Add-some-checks-before-using-apply-background-wo.patch Content-Disposition: attachment; filename="v20-0003-Add-some-checks-before-using-apply-background-wo.patch"; size=56726; creation-date="Thu, 04 Aug 2022 06:35:00 GMT"; modification-date="Thu, 04 Aug 2022 06:35:44 GMT" Content-Transfer-Encoding: base64 RnJvbSA2OGRlNTU1MTNkYjFlYzM1ZGUwMDc4OTA3ZTBiMDAyZGEyMTI0MzU0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB3YW5ndyA8d2FuZ3cuZm5zdEBmdWppdHN1LmNvbT4KRGF0ZTog VHVlLCAxNCBKdW4gMjAyMiAxMToyMzo1MiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjIwIDMvNF0g QWRkIHNvbWUgY2hlY2tzIGJlZm9yZSB1c2luZyBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcgogdG8g YXBwbHkgY2hhbmdlcy4KCnN0cmVhbWluZz1wYXJhbGxlbCBtb2RlIGhhcyB0d28gcmVxdWlyZW1l bnRzOgoxKSBUaGUgdW5pcXVlIGNvbHVtbiBpbiB0aGUgcmVsYXRpb24gb24gdGhlIHN1YnNjcmli ZXItc2lkZSBzaG91bGQgYWxzbyBiZSB0aGUKdW5pcXVlIGNvbHVtbiBvbiB0aGUgcHVibGlzaGVy LXNpZGU7CjIpIFRoZXJlIGNhbm5vdCBiZSBhbnkgbm9uLWltbXV0YWJsZSBmdW5jdGlvbnMgdXNl ZCBieSB0aGUgc3Vic2NyaWJlci1zaWRlCnJlcGxpY2F0ZWQgdGFibGUuIExvb2sgZm9yIGZ1bmN0 aW9ucyBpbiB0aGUgZm9sbG93aW5nIHBsYWNlczoKKiBhLiBUcmlnZ2VyIGZ1bmN0aW9ucwoqIGIu IENvbHVtbiBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb25zIGFuZCBkb21haW4gY29uc3RyYWludHMK KiBjLiBDb25zdHJhaW50IGV4cHJlc3Npb25zCiogZC4gRm9yZWlnbiBrZXlzCgpXaXRob3V0IHRo ZXNlIHJlc3RyaWN0aW9ucywgdGhlIGZvbGxvd2luZyBzY2VuYXJpbyBtYXkgb2NjdXI6ClRoZSBh cHBseSBiYWNrZ3JvdW5kIHdvcmtlciBsb2NrIGEgcm93IHdoZW4gcHJvY2Vzc2luZyBhIHN0cmVh bWluZyB0cmFuc2FjdGlvbiwKYWZ0ZXIgdGhhdCB0aGUgbWFpbiBhcHBseSB3b3JrZXIgdHJpZXMg dG8gbG9jayB0aGUgc2FtZSByb3cgd2hlbiBwcm9jZXNzaW5nCmFub3RoZXIgdHJhbnNhY3Rpb24u IEF0IHRoaXMgdGltZSwgdGhlIG1haW4gYXBwbHkgd29ya2VyIHdhaXRzIGZvciB0aGUKc3RyZWFt aW5nIHRyYW5zYWN0aW9uIHRvIGNvbXBsZXRlIGFuZCB0aGUgbG9jayB0byBiZSByZWxlYXNlZCwg aXQgd29uJ3Qgc2VuZApzdWJzZXF1ZW50IGRhdGEgb2YgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlv biB0byB0aGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXI7CnRoZSBhcHBseSBiYWNrZ3JvdW5kIHdv cmtlciB3YWl0cyB0byByZWNlaXZlIHRoZSByZXN0IG9mIHN0cmVhbWluZyB0cmFuc2FjdGlvbgph bmQgY2FuJ3QgZmluaXNoIHRoaXMgdHJhbnNhY3Rpb24uIFRoZW4gdGhlIG1haW4gYXBwbHkgd29y a2VyIHdpbGwgd2FpdAppbmRlZmluaXRlbHkuCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf c3Vic2NyaXB0aW9uLnNnbWwgICAgIHwgICA1ICsKIC4uLi9yZXBsaWNhdGlvbi9sb2dpY2FsL2Fw cGx5Ymd3b3JrZXIuYyAgICAgICB8ICA1MyArKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9wcm90by5jICAgICAgIHwgIDg2ICsrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9yZWxhdGlvbi5jICAgIHwgMjE0ICsrKysrKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvdGFibGVzeW5jLmMgICB8ICAgMSArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3dvcmtlci5jICAgICAgfCAgNDMgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5 cGNhY2hlLmMgICAgICAgICAgICB8ICAxNyArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dp Y2FscHJvdG8uaCAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNh bHJlbGF0aW9uLmggICAgIHwgIDE1ICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9p bnRlcm5hbC5oICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy90eXBjYWNoZS5oICAgICAg ICAgICAgICAgICAgfCAgIDIgKwogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5w bCAgICAgICAgIHwgIDMzICstCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1 YnhhY3QucGwgfCAgMzMgKy0KIC4uLi9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2Fk ZS5wbCAgICB8ICAgOCArCiAuLi4vc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5w bCAgICAgfCAgMzMgKy0KIC4uLi9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX2FwcGx5LnBs ICAgICB8IDU0NiArKysrKysrKysrKysrKysrKysKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVm cy5saXN0ICAgICAgICAgICAgICB8ICAgMSArCiAxNyBmaWxlcyBjaGFuZ2VkLCAxMDA0IGluc2Vy dGlvbnMoKyksIDg4IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1pbmdfYXBwbHkucGwKCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3Jl YXRlX3N1YnNjcmlwdGlvbi5zZ21sCmluZGV4IGIwOGU0YjU1ODAuLjhlMWI3YWNhZmIgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCisrKyBiL2Rv Yy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCkBAIC0yNDAsNiArMjQwLDEx IEBAIENSRUFURSBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN1 YnNjcmlwdGlvbl9uYW1lPC9yZXBsYWNlYWJsCiAgICAgICAgICAgdHJhbnNhY3Rpb24gaXMgY29t bWl0dGVkLiBOb3RlIHRoYXQgaWYgYW4gZXJyb3IgaGFwcGVucyB3aGVuCiAgICAgICAgICAgYXBw bHlpbmcgY2hhbmdlcyBpbiBhIGJhY2tncm91bmQgd29ya2VyLCB0aGUgZmluaXNoIExTTiBvZiB0 aGUKICAgICAgICAgICByZW1vdGUgdHJhbnNhY3Rpb24gbWlnaHQgbm90IGJlIHJlcG9ydGVkIGlu IHRoZSBzZXJ2ZXIgbG9nLgorICAgICAgICAgIFRoZXJlIGFyZSB0d28gcmVxdWlyZW1lbnRzIGZv ciB1c2luZyA8bGl0ZXJhbD5wYXJhbGxlbDwvbGl0ZXJhbD4KKyAgICAgICAgICBtb2RlOiAxKSB0 aGUgdW5pcXVlIGNvbHVtbiBpbiB0aGUgdGFibGUgb24gdGhlIHN1YnNjcmliZXItc2lkZSBzaG91 bGQKKyAgICAgICAgICBhbHNvIGJlIHRoZSB1bmlxdWUgY29sdW1uIG9uIHRoZSBwdWJsaXNoZXIt c2lkZTsgMikgdGhlcmUgY2Fubm90IGJlCisgICAgICAgICAgYW55IG5vbi1pbW11dGFibGUgZnVu Y3Rpb25zIHVzZWQgYnkgdGhlIHN1YnNjcmliZXItc2lkZSByZXBsaWNhdGVkCisgICAgICAgICAg dGFibGUuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92 YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L2FwcGx5Ymd3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHli Z3dvcmtlci5jCmluZGV4IGJlMjI1NmVkZTMuLjlkMzgyMTliMDIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dvcmtlci5jCisrKyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dvcmtlci5jCkBAIC04MDEsMyArODAxLDU2 IEBAIGFwcGx5X2Jnd29ya2VyX3N1YnhhY3RfaW5mb19hZGQoVHJhbnNhY3Rpb25JZCBjdXJyZW50 X3hpZCkKIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CiAJfQogfQorCisvKgorICog Q2hlY2sgaWYgY2hhbmdlcyBvbiB0aGlzIHJlbGF0aW9uIGNhbiBiZSBhcHBsaWVkIGJ5IGFuIGFw cGx5IGJhY2tncm91bmQKKyAqIHdvcmtlci4KKyAqCisgKiBBbHRob3VnaCB0aGUgY29tbWl0IG9y ZGVyIGlzIG1haW50YWluZWQgYnkgb25seSBhbGxvd2luZyBvbmUgcHJvY2VzcyB0bworICogY29t bWl0IGF0IGEgdGltZSwgdGhlIGFjY2VzcyBvcmRlciB0byB0aGUgcmVsYXRpb24gaGFzIGNoYW5n ZWQuIFRoaXMgY291bGQKKyAqIGNhdXNlIHVuZXhwZWN0ZWQgcHJvYmxlbXMgaWYgdGhlIHVuaXF1 ZSBjb2x1bW4gb24gdGhlIHJlcGxpY2F0ZWQgdGFibGUgaXMKKyAqIGluY29uc2lzdGVudCB3aXRo IHRoZSBwdWJsaXNoZXItc2lkZSBvciBjb250YWlucyBub24taW1tdXRhYmxlIGZ1bmN0aW9ucwor ICogd2hlbiBhcHBseWluZyB0cmFuc2FjdGlvbnMgdXNpbmcgYW4gYXBwbHkgYmFja2dyb3VuZCB3 b3JrZXIuCisgKi8KK3ZvaWQKK2FwcGx5X2Jnd29ya2VyX3JlbGF0aW9uX2NoZWNrKExvZ2ljYWxS ZXBSZWxNYXBFbnRyeSAqcmVsKQoreworCS8qCisJICogU2tpcCBjaGVjayBpZiBub3QgdXNpbmcg YXBwbHkgYmFja2dyb3VuZCB3b3JrZXJzLgorCSAqCisJICogSWYgYW55IHdvcmtlciBpcyBoYW5k bGluZyB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLCB0aGlzIGNoZWNrIG5lZWRzIHRvCisJICog YmUgcGVyZm9ybWVkIG5vdCBvbmx5IGluIHRoZSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciwgYnV0 IGFsc28gaW4gdGhlCisJICogbWFpbiBhcHBseSB3b3JrZXIuIFRoaXMgaXMgYmVjYXVzZSB3aXRo b3V0IHRoZXNlIHJlc3RyaWN0aW9ucywgbWFpbgorCSAqIGFwcGx5IHdvcmtlciBtYXkgYmxvY2sg YXBwbHkgYmFja2dyb3VuZCB3b3JrZXIsIHdoaWNoIHdpbGwgY2F1c2UKKwkgKiBpbmZpbml0ZSB3 YWl0cy4KKwkgKi8KKwlpZiAoIWFtX2FwcGx5X2Jnd29ya2VyKCkgJiYKKwkJKGxpc3RfbGVuZ3Ro KEFwcGx5Qmd3b3JrZXJzRnJlZUxpc3QpID09IGxpc3RfbGVuZ3RoKEFwcGx5Qmd3b3JrZXJzTGlz dCkpKQorCQlyZXR1cm47CisKKwkvKgorCSAqIFBhcnRpdGlvbiB0YWJsZSBjaGVja3MgYXJlIGRv bmUgbGF0ZXIgaW4gZnVuY3Rpb24KKwkgKiBhcHBseV9oYW5kbGVfdHVwbGVfcm91dGluZy4KKwkg Ki8KKwlpZiAocmVsLT5sb2NhbHJlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElU SU9ORURfVEFCTEUpCisJCXJldHVybjsKKworCS8qCisJICogUmV0dXJuIGlmIGNoYW5nZXMgb24g dGhpcyByZWxhdGlvbiBjYW4gYmUgYXBwbGllZCBieSBhbiBhcHBseSBiYWNrZ3JvdW5kCisJICog d29ya2VyLgorCSAqLworCWlmIChyZWwtPnBhcmFsbGVsX2FwcGx5ID09IFBBUkFMTEVMX0FQUExZ X1NBRkUpCisJCXJldHVybjsKKworCS8qIFdlIGFyZSBpbiBlcnJvciBtb2RlIGFuZCBzaG91bGQg Z2l2ZSB1c2VyIGNvcnJlY3QgZXJyb3IuICovCisJZXJlcG9ydChFUlJPUiwKKwkJCShlcnJjb2Rl KEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJIGVycm1zZygi Y2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIHVzaW5nICIKKwkJCQkJ InN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nPXBhcmFsbGVsIiwKKwkJCQkJcmVsLT5y ZW1vdGVyZWwubnNwbmFtZSwgcmVsLT5yZW1vdGVyZWwucmVsbmFtZSksCisJCQkgZXJyZGV0YWls KCJUaGUgdW5pcXVlIGNvbHVtbiBvbiBzdWJzY3JpYmVyIGlzIG5vdCB0aGUgdW5pcXVlICIKKwkJ CQkJICAgImNvbHVtbiBvbiBwdWJsaXNoZXIgb3IgdGhlcmUgaXMgYXQgbGVhc3Qgb25lICIKKwkJ CQkJICAgIm5vbi1pbW11dGFibGUgZnVuY3Rpb24uIiksCisJCQkgZXJyaGludCgiUGxlYXNlIGNo YW5nZSB0byB1c2Ugc3Vic2NyaXB0aW9uIHBhcmFtZXRlciAiCisJCQkJCSAic3RyZWFtaW5nPW9u LiIpKSk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3By b3RvLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKaW5kZXggNDdi ZDgxMWZiNy4uYmNmOWJkNzljYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9wcm90by5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJv dG8uYwpAQCAtMjMsNyArMjMsOCBAQAogLyoKICAqIFByb3RvY29sIG1lc3NhZ2UgZmxhZ3MuCiAg Ki8KLSNkZWZpbmUgTE9HSUNBTFJFUF9JU19SRVBMSUNBX0lERU5USVRZIDEKKyNkZWZpbmUgQVRU Ul9JU19SRVBMSUNBX0lERU5USVRZCSgxIDw8IDApCisjZGVmaW5lIEFUVFJfSVNfVU5JUVVFCQkJ CSgxIDw8IDEpCiAKICNkZWZpbmUgTUVTU0FHRV9UUkFOU0FDVElPTkFMICgxPDwwKQogI2RlZmlu ZSBUUlVOQ0FURV9DQVNDQURFCQkoMTw8MCkKQEAgLTQwLDYgKzQxLDY2IEBAIHN0YXRpYyB2b2lk IGxvZ2ljYWxyZXBfcmVhZF90dXBsZShTdHJpbmdJbmZvIGluLCBMb2dpY2FsUmVwVHVwbGVEYXRh ICp0dXBsZSk7CiBzdGF0aWMgdm9pZCBsb2dpY2FscmVwX3dyaXRlX25hbWVzcGFjZShTdHJpbmdJ bmZvIG91dCwgT2lkIG5zcGlkKTsKIHN0YXRpYyBjb25zdCBjaGFyICpsb2dpY2FscmVwX3JlYWRf bmFtZXNwYWNlKFN0cmluZ0luZm8gaW4pOwogCisvKgorICogUmVsYXRpb25HZXRVbmlxdWVLZXlC aXRtYXAgLS0gZ2V0IGEgYml0bWFwIG9mIHVuaXF1ZSBhdHRyaWJ1dGUgbnVtYmVycworICoKKyAq IFRoaXMgaXMgc2ltaWxhciB0byBSZWxhdGlvbkdldElkZW50aXR5S2V5Qml0bWFwKCksIGJ1dCBy ZXR1cm5zIGEgYml0bWFwIG9mCisgKiBpbmRleCBhdHRyaWJ1dGUgbnVtYmVycyBmb3IgYWxsIHVu aXF1ZSBpbmRleGVzLgorICovCitzdGF0aWMgQml0bWFwc2V0ICoKK1JlbGF0aW9uR2V0VW5pcXVl S2V5Qml0bWFwKFJlbGF0aW9uIHJlbCkKK3sKKwlMaXN0CQkgICAqaW5kZXhvaWRsaXN0ID0gTklM OworCUxpc3RDZWxsCSAgICppbmRleG9pZHNjYW47CisJQml0bWFwc2V0CSAgICphdHR1bmlxdWUg PSBOVUxMOworCisJaWYgKCFyZWwtPnJkX3JlbC0+cmVsaGFzaW5kZXgpCisJCXJldHVybiBOVUxM OworCisJaW5kZXhvaWRsaXN0ID0gUmVsYXRpb25HZXRJbmRleExpc3QocmVsKTsKKworCWZvcmVh Y2goaW5kZXhvaWRzY2FuLCBpbmRleG9pZGxpc3QpCisJeworCQlPaWQJCQlpbmRleG9pZCA9IGxm aXJzdF9vaWQoaW5kZXhvaWRzY2FuKTsKKwkJUmVsYXRpb24JaW5kZXhSZWw7CisJCWludAkJCWk7 CisKKwkJLyogTG9vayB1cCB0aGUgZGVzY3JpcHRpb24gZm9yIGluZGV4ICovCisJCWluZGV4UmVs ID0gUmVsYXRpb25JZEdldFJlbGF0aW9uKGluZGV4b2lkKTsKKworCQlpZiAoIVJlbGF0aW9uSXNW YWxpZChpbmRleFJlbCkpCisJCQllbG9nKEVSUk9SLCAiY291bGQgbm90IG9wZW4gcmVsYXRpb24g d2l0aCBPSUQgJXUiLCBpbmRleG9pZCk7CisKKwkJaWYgKCFpbmRleFJlbC0+cmRfaW5kZXgtPmlu ZGlzdW5pcXVlKQorCQl7CisJCQlSZWxhdGlvbkNsb3NlKGluZGV4UmVsKTsKKwkJCWNvbnRpbnVl OworCQl9CisKKwkJLyogQWRkIHJlZmVyZW5jZWQgYXR0cmlidXRlcyB0byBpZGluZGV4YXR0cnMg Ki8KKwkJZm9yIChpID0gMDsgaSA8IGluZGV4UmVsLT5yZF9pbmRleC0+aW5kbmF0dHM7IGkrKykK KwkJeworCQkJaW50IGF0dHJudW0gPSBpbmRleFJlbC0+cmRfaW5kZXgtPmluZGtleS52YWx1ZXNb aV07CisKKwkJCS8qCisJCQkgKiBXZSBkb24ndCBpbmNsdWRlIG5vbi1rZXkgY29sdW1ucyBpbnRv IGlkaW5kZXhhdHRycworCQkJICogYml0bWFwcy4gU2VlIFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0 bWFwLgorCQkJICovCisJCQlpZiAoYXR0cm51bSAhPSAwKQorCQkJeworCQkJCWlmIChpIDwgaW5k ZXhSZWwtPnJkX2luZGV4LT5pbmRua2V5YXR0cyAmJgorCQkJCQkhYm1zX2lzX21lbWJlcihhdHRy bnVtIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlciwgYXR0dW5pcXVlKSkKKwkJ CQkJYXR0dW5pcXVlID0gYm1zX2FkZF9tZW1iZXIoYXR0dW5pcXVlLAorCQkJCQkJCQkJCQkgICBh dHRybnVtIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7CisJCQl9CisJCX0K KwkJUmVsYXRpb25DbG9zZShpbmRleFJlbCk7CisJfQorCWxpc3RfZnJlZShpbmRleG9pZGxpc3Qp OworCisJcmV0dXJuIGF0dHVuaXF1ZTsKK30KKwogLyoKICAqIENoZWNrIGlmIGEgY29sdW1uIGlz IGNvdmVyZWQgYnkgYSBjb2x1bW4gbGlzdC4KICAqCkBAIC05MzMsNyArOTk0LDggQEAgbG9naWNh bHJlcF93cml0ZV9hdHRycyhTdHJpbmdJbmZvIG91dCwgUmVsYXRpb24gcmVsLCBCaXRtYXBzZXQg KmNvbHVtbnMpCiAJVHVwbGVEZXNjCWRlc2M7CiAJaW50CQkJaTsKIAl1aW50MTYJCW5saXZlYXR0 cyA9IDA7Ci0JQml0bWFwc2V0ICAqaWRhdHRycyA9IE5VTEw7CisJQml0bWFwc2V0ICAqaWRhdHRy cyA9IE5VTEwsCisJCQkgICAqYXR0dW5pcXVlID0gTlVMTDsKIAlib29sCQlyZXBsaWRlbnRmdWxs OwogCiAJZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKQEAgLTk1OCw2ICsxMDIwLDkgQEAg bG9naWNhbHJlcF93cml0ZV9hdHRycyhTdHJpbmdJbmZvIG91dCwgUmVsYXRpb24gcmVsLCBCaXRt YXBzZXQgKmNvbHVtbnMpCiAJaWYgKCFyZXBsaWRlbnRmdWxsKQogCQlpZGF0dHJzID0gUmVsYXRp b25HZXRJZGVudGl0eUtleUJpdG1hcChyZWwpOwogCisJLyogZmV0Y2ggYml0bWFwIG9mIFVOSVFV RSBhdHRyaWJ1dGVzICovCisJYXR0dW5pcXVlID0gUmVsYXRpb25HZXRVbmlxdWVLZXlCaXRtYXAo cmVsKTsKKwogCS8qIHNlbmQgdGhlIGF0dHJpYnV0ZXMgKi8KIAlmb3IgKGkgPSAwOyBpIDwgZGVz Yy0+bmF0dHM7IGkrKykKIAl7CkBAIC05NzQsNyArMTAzOSwxMSBAQCBsb2dpY2FscmVwX3dyaXRl X2F0dHJzKFN0cmluZ0luZm8gb3V0LCBSZWxhdGlvbiByZWwsIEJpdG1hcHNldCAqY29sdW1ucykK IAkJaWYgKHJlcGxpZGVudGZ1bGwgfHwKIAkJCWJtc19pc19tZW1iZXIoYXR0LT5hdHRudW0gLSBG aXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyLAogCQkJCQkJICBpZGF0dHJzKSkKLQkJ CWZsYWdzIHw9IExPR0lDQUxSRVBfSVNfUkVQTElDQV9JREVOVElUWTsKKwkJCWZsYWdzIHw9IEFU VFJfSVNfUkVQTElDQV9JREVOVElUWTsKKworCQlpZiAoYm1zX2lzX21lbWJlcihhdHQtPmF0dG51 bSAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIsCisJCQkJCQkgIGF0dHVuaXF1 ZSkpCisJCQlmbGFncyB8PSBBVFRSX0lTX1VOSVFVRTsKIAogCQlwcV9zZW5kYnl0ZShvdXQsIGZs YWdzKTsKIApAQCAtOTg5LDYgKzEwNTgsNyBAQCBsb2dpY2FscmVwX3dyaXRlX2F0dHJzKFN0cmlu Z0luZm8gb3V0LCBSZWxhdGlvbiByZWwsIEJpdG1hcHNldCAqY29sdW1ucykKIAl9CiAKIAlibXNf ZnJlZShpZGF0dHJzKTsKKwlibXNfZnJlZShhdHR1bmlxdWUpOwogfQogCiAvKgpAQCAtMTAwMSw3 ICsxMDcxLDggQEAgbG9naWNhbHJlcF9yZWFkX2F0dHJzKFN0cmluZ0luZm8gaW4sIExvZ2ljYWxS ZXBSZWxhdGlvbiAqcmVsKQogCWludAkJCW5hdHRzOwogCWNoYXIJICAqKmF0dG5hbWVzOwogCU9p ZAkJICAgKmF0dHR5cHM7Ci0JQml0bWFwc2V0ICAqYXR0a2V5cyA9IE5VTEw7CisJQml0bWFwc2V0 ICAqYXR0a2V5cyA9IE5VTEwsCisJCQkgICAqYXR0dW5pcXVlID0gTlVMTDsKIAogCW5hdHRzID0g cHFfZ2V0bXNnaW50KGluLCAyKTsKIAlhdHRuYW1lcyA9IHBhbGxvYyhuYXR0cyAqIHNpemVvZihj aGFyICopKTsKQEAgLTEwMTQsOSArMTA4NSwxMyBAQCBsb2dpY2FscmVwX3JlYWRfYXR0cnMoU3Ry aW5nSW5mbyBpbiwgTG9naWNhbFJlcFJlbGF0aW9uICpyZWwpCiAKIAkJLyogQ2hlY2sgZm9yIHJl cGxpY2EgaWRlbnRpdHkgY29sdW1uICovCiAJCWZsYWdzID0gcHFfZ2V0bXNnYnl0ZShpbik7Ci0J CWlmIChmbGFncyAmIExPR0lDQUxSRVBfSVNfUkVQTElDQV9JREVOVElUWSkKKwkJaWYgKGZsYWdz ICYgQVRUUl9JU19SRVBMSUNBX0lERU5USVRZKQogCQkJYXR0a2V5cyA9IGJtc19hZGRfbWVtYmVy KGF0dGtleXMsIGkpOwogCisJCS8qIENoZWNrIGZvciB1bmlxdWUgY29sdW1uICovCisJCWlmIChm bGFncyAmIEFUVFJfSVNfVU5JUVVFKQorCQkJYXR0dW5pcXVlID0gYm1zX2FkZF9tZW1iZXIoYXR0 dW5pcXVlLCBpKTsKKwogCQkvKiBhdHRyaWJ1dGUgbmFtZSAqLwogCQlhdHRuYW1lc1tpXSA9IHBz dHJkdXAocHFfZ2V0bXNnc3RyaW5nKGluKSk7CiAKQEAgLTEwMzAsNiArMTEwNSw3IEBAIGxvZ2lj YWxyZXBfcmVhZF9hdHRycyhTdHJpbmdJbmZvIGluLCBMb2dpY2FsUmVwUmVsYXRpb24gKnJlbCkK IAlyZWwtPmF0dG5hbWVzID0gYXR0bmFtZXM7CiAJcmVsLT5hdHR0eXBzID0gYXR0dHlwczsKIAly ZWwtPmF0dGtleXMgPSBhdHRrZXlzOworCXJlbC0+YXR0dW5pcXVlID0gYXR0dW5pcXVlOwogCXJl bC0+bmF0dHMgPSBuYXR0czsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9yZWxhdGlvbi5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9y ZWxhdGlvbi5jCmluZGV4IGU5ODkwNDc2ODEuLjA1MGVhZGJlOTEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMKQEAgLTE5LDEyICsxOSwxOSBAQAogCiAjaW5j bHVkZSAiYWNjZXNzL3RhYmxlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKKyNp bmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlw dGlvbl9yZWwuaCIKKyNpbmNsdWRlICJjb21tYW5kcy90cmlnZ2VyLmgiCiAjaW5jbHVkZSAiZXhl Y3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKKyNpbmNsdWRl ICJvcHRpbWl6ZXIvb3B0aW1pemVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHJl bGF0aW9uLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgiCisjaW5j bHVkZSAicmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgi CisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUu aCIKKyNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgogCiAKIHN0YXRpYyBNZW1vcnlDb250ZXh0 IExvZ2ljYWxSZXBSZWxNYXBDb250ZXh0ID0gTlVMTDsKQEAgLTkxLDYgKzk4LDI2IEBAIGxvZ2lj YWxyZXBfcmVsbWFwX2ludmFsaWRhdGVfY2IoRGF0dW0gYXJnLCBPaWQgcmVsb2lkKQogCX0KIH0K IAorLyoKKyAqIFJlbGNhY2hlIGludmFsaWRhdGlvbiBjYWxsYmFjayB0byByZXNldCBwYXJhbGxl bF9hcHBseSBmbGFnLgorICovCitzdGF0aWMgdm9pZAorbG9naWNhbHJlcF9yZWxtYXBfcmVzZXRf cGFyYWxsZWxfY2IoRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKK3sK KwlIQVNIX1NFUV9TVEFUVVMgaGFzaF9zZXE7CisJTG9naWNhbFJlcFJlbE1hcEVudHJ5ICplbnRy eTsKKworCWlmIChMb2dpY2FsUmVwUmVsTWFwID09IE5VTEwpCisJCXJldHVybjsKKworCWhhc2hf c2VxX2luaXQoJmhhc2hfc2VxLCBMb2dpY2FsUmVwUmVsTWFwKTsKKwl3aGlsZSAoKGVudHJ5ID0g aGFzaF9zZXFfc2VhcmNoKCZoYXNoX3NlcSkpICE9IE5VTEwpCisJeworCQllbnRyeS0+cGFyYWxs ZWxfYXBwbHkgPSBQQVJBTExFTF9BUFBMWV9VTktOT1dOOworCQllbnRyeS0+bG9jYWxyZWx2YWxp ZCA9IGZhbHNlOworCX0KK30KKwogLyoKICAqIEluaXRpYWxpemUgdGhlIHJlbGF0aW9uIG1hcCBj YWNoZS4KICAqLwpAQCAtMTE2LDYgKzE0Myw5IEBAIGxvZ2ljYWxyZXBfcmVsbWFwX2luaXQodm9p ZCkKIAkvKiBXYXRjaCBmb3IgaW52YWxpZGF0aW9uIGV2ZW50cy4gKi8KIAlDYWNoZVJlZ2lzdGVy UmVsY2FjaGVDYWxsYmFjayhsb2dpY2FscmVwX3JlbG1hcF9pbnZhbGlkYXRlX2NiLAogCQkJCQkJ CQkgIChEYXR1bSkgMCk7CisJQ2FjaGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2soUFJPQ09JRCwK KwkJCQkJCQkJICBsb2dpY2FscmVwX3JlbG1hcF9yZXNldF9wYXJhbGxlbF9jYiwKKwkJCQkJCQkJ ICAoRGF0dW0pIDApOwogfQogCiAvKgpAQCAtMTQyLDYgKzE3Miw3IEBAIGxvZ2ljYWxyZXBfcmVs bWFwX2ZyZWVfZW50cnkoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICplbnRyeSkKIAkJcGZyZWUocmVt b3RlcmVsLT5hdHR0eXBzKTsKIAl9CiAJYm1zX2ZyZWUocmVtb3RlcmVsLT5hdHRrZXlzKTsKKwli bXNfZnJlZShyZW1vdGVyZWwtPmF0dHVuaXF1ZSk7CiAKIAlpZiAoZW50cnktPmF0dHJtYXApCiAJ CWZyZWVfYXR0cm1hcChlbnRyeS0+YXR0cm1hcCk7CkBAIC0xOTAsNiArMjIxLDcgQEAgbG9naWNh bHJlcF9yZWxtYXBfdXBkYXRlKExvZ2ljYWxSZXBSZWxhdGlvbiAqcmVtb3RlcmVsKQogCX0KIAll bnRyeS0+cmVtb3RlcmVsLnJlcGxpZGVudCA9IHJlbW90ZXJlbC0+cmVwbGlkZW50OwogCWVudHJ5 LT5yZW1vdGVyZWwuYXR0a2V5cyA9IGJtc19jb3B5KHJlbW90ZXJlbC0+YXR0a2V5cyk7CisJZW50 cnktPnJlbW90ZXJlbC5hdHR1bmlxdWUgPSBibXNfY29weShyZW1vdGVyZWwtPmF0dHVuaXF1ZSk7 CiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CiB9CiAKQEAgLTMxMCw2ICszNDIsMTgx IEBAIGxvZ2ljYWxyZXBfcmVsX21hcmtfdXBkYXRhYmxlKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAq ZW50cnkpCiAJfQogfQogCisvKgorICogQ2hlY2sgaWYgY2hhbmdlcyBvbiBvbmUgcmVsYXRpb24g Y2FuIGJlIGFwcGxpZWQgYnkgYW4gYXBwbHkgYmFja2dyb3VuZAorICogd29ya2VyIGFuZCBhc3Np Z24gdGhlICdwYXJhbGxlbF9hcHBseScgZmxhZy4KKyAqCisgKiBUaGVyZSBhcmUgdHdvIHJlcXVp cmVtZW50cyBmb3IgYXBwbHlpbmcgY2hhbmdlcyB1c2luZyBhbiBhcHBseSBiYWNrZ3JvdW5kCisg KiB3b3JrZXI6IDEpIHRoZSB1bmlxdWUgY29sdW1uIGluIHRoZSB0YWJsZSBvbiB0aGUgc3Vic2Ny aWJlci1zaWRlIHNob3VsZCBhbHNvCisgKiBiZSB0aGUgdW5pcXVlIGNvbHVtbiBvbiB0aGUgcHVi bGlzaGVyLXNpZGU7IDIpIHRoZXJlIGNhbm5vdCBiZSBhbnkKKyAqIG5vbi1pbW11dGFibGUgZnVu Y3Rpb25zIHVzZWQgYnkgdGhlIHN1YnNjcmliZXItc2lkZSByZXBsaWNhdGVkIHRhYmxlLgorICoK KyAqIFdpdGhvdXQgdGhlc2UgcmVzdHJpY3Rpb25zLCB0aGUgZm9sbG93aW5nIHNjZW5hcmlvIG1h eSBvY2N1cjogVGhlIGFwcGx5CisgKiBiYWNrZ3JvdW5kIHdvcmtlciBsb2NrcyBhIHJvdyB3aGVu IHByb2Nlc3NpbmcgYSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24sIGFmdGVyCisgKiB0aGF0IHRoZSBt YWluIGFwcGx5IHdvcmtlciB0cmllcyB0byBsb2NrIHRoZSBzYW1lIHJvdyB3aGVuIHByb2Nlc3Np bmcKKyAqIGFub3RoZXIgbm9uLXN0cmVhbWVkIHRyYW5zYWN0aW9uLiBBdCB0aGlzIHRpbWUsIHRo ZSBtYWluIGFwcGx5IHdvcmtlciB3YWl0cworICogZm9yIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rp b24gdG8gY29tcGxldGUgYW5kIHRoZSBsb2NrIHRvIGJlIHJlbGVhc2VkLCBpdAorICogd29uJ3Qg c2VuZCBzdWJzZXF1ZW50IGRhdGEgb2YgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byB0aGUg YXBwbHkKKyAqIGJhY2tncm91bmQgd29ya2VyOyB0aGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIg d2FpdHMgdG8gcmVjZWl2ZSB0aGUgcmVzdCBvZgorICogc3RyZWFtaW5nIHRyYW5zYWN0aW9uIGFu ZCBjYW4ndCBmaW5pc2ggdGhpcyB0cmFuc2FjdGlvbi4gVGhlbiB0aGUgbWFpbiBhcHBseQorICog d29ya2VyIHdpbGwgd2FpdCBpbmRlZmluaXRlbHkuCisgKgorICogV2UganVzdCBtYXJrIHRoZSBy ZWxhdGlvbiBlbnRyeSBhcyAnUEFSQUxMRUxfQVBQTFlfVU5TQUZFJyBoZXJlIGlmIGNoYW5nZXMK KyAqIG9uIG9uZSByZWxhdGlvbiBjYW4gbm90IGJlIGFwcGxpZWQgdXNpbmcgYW4gYXBwbHkgYmFj a2dyb3VuZCB3b3JrZXIgYW5kCisgKiBsZWF2ZSBpdCB0byBhcHBseV9iZ3dvcmtlcl9yZWxhdGlv bl9jaGVjaygpIHRvIHRocm93IHRoZSBhY3R1YWwgZXJyb3IgaWYKKyAqIG5lZWRlZC4KKyAqLwor c3RhdGljIHZvaWQKK2xvZ2ljYWxyZXBfcmVsX21hcmtfcGFyYWxsZWxfYXBwbHkoTG9naWNhbFJl cFJlbE1hcEVudHJ5ICplbnRyeSkKK3sKKwlCaXRtYXBzZXQgICAqdWtleTsKKwlpbnQJCQlpOwor CVR1cGxlRGVzYwl0dXBkZXNjOworCWludAkJCWF0dG51bTsKKwlMaXN0CSAgICpma2V5cyA9IE5J TDsKKworCS8qIEZhc3QgcGF0aCBpZiAncGFyYWxsZWxfYXBwbHknIGZsYWcgaXMgYWxyZWFkeSBr bm93bi4gKi8KKwlpZiAoZW50cnktPnBhcmFsbGVsX2FwcGx5ICE9IFBBUkFMTEVMX0FQUExZX1VO S05PV04pCisJCXJldHVybjsKKworCS8qIEluaXRpYWxpemUgdGhlIGZsYWcuICovCisJZW50cnkt PnBhcmFsbGVsX2FwcGx5ID0gUEFSQUxMRUxfQVBQTFlfU0FGRTsKKworCS8qCisJICogRmlyc3Qs IGNoZWNrIGlmIHRoZSB1bmlxdWUgY29sdW1uIGluIHRoZSByZWxhdGlvbiBvbiB0aGUgc3Vic2Ny aWJlci1zaWRlCisJICogaXMgYWxzbyB0aGUgdW5pcXVlIGNvbHVtbiBvbiB0aGUgcHVibGlzaGVy LXNpZGUuCisJICovCisJdWtleSA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKGVudHJ5LT5s b2NhbHJlbCwKKwkJCQkJCQkJCSAgSU5ERVhfQVRUUl9CSVRNQVBfS0VZKTsKKworCWlmICh1a2V5 KQorCXsKKwkJaSA9IC0xOworCQl3aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIodWtleSwgaSkp ID49IDApCisJCXsKKwkJCWF0dG51bSA9IEF0dHJOdW1iZXJHZXRBdHRyT2Zmc2V0KGkgKyBGaXJz dExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyKTsKKworCQkJaWYgKGVudHJ5LT5hdHRybWFw LT5hdHRudW1zW2F0dG51bV0gPCAwIHx8CisJCQkJIWJtc19pc19tZW1iZXIoZW50cnktPmF0dHJt YXAtPmF0dG51bXNbYXR0bnVtXSwgZW50cnktPnJlbW90ZXJlbC5hdHR1bmlxdWUpKQorCQkJewor CQkJCWVudHJ5LT5wYXJhbGxlbF9hcHBseSA9IFBBUkFMTEVMX0FQUExZX1VOU0FGRTsKKwkJCQly ZXR1cm47CisJCQl9CisJCX0KKworCQlibXNfZnJlZSh1a2V5KTsKKwl9CisKKwkvKgorCSAqIFRo ZW4sIGNoZWNrIGlmIHRoZXJlIGlzIGFueSBub24taW1tdXRhYmxlIGZ1bmN0aW9uIHVzZWQgYnkg dGhlCisJICogc3Vic2NyaWJlci1zaWRlIHJlbGF0aW9uLiBMb29rIGZvciBmdW5jdGlvbnMgaW4g dGhlIGZvbGxvd2luZyBwbGFjZXM6CisJICogYS4gdHJpZ2dlciBmdW5jdGlvbnM7CisJICogYi4g Q29sdW1uIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbnMgYW5kIGRvbWFpbiBjb25zdHJhaW50czsK KwkgKiBjLiBDb25zdHJhaW50IGV4cHJlc3Npb25zOworCSAqIGQuIEZvcmVpZ24ga2V5cy4KKwkg Ki8KKwkvKiBDaGVjayB0aGUgdHJpZ2dlciBmdW5jdGlvbnMuICovCisJaWYgKGVudHJ5LT5sb2Nh bHJlbC0+dHJpZ2Rlc2MgIT0gTlVMTCkKKwl7CisJCWZvciAoaSA9IDA7IGkgPCBlbnRyeS0+bG9j YWxyZWwtPnRyaWdkZXNjLT5udW10cmlnZ2VyczsgaSsrKQorCQl7CisJCQlUcmlnZ2VyICAgICp0 cmlnID0gZW50cnktPmxvY2FscmVsLT50cmlnZGVzYy0+dHJpZ2dlcnMgKyBpOworCisJCQlpZiAo dHJpZy0+dGdlbmFibGVkICE9IFRSSUdHRVJfRklSRVNfQUxXQVlTICYmCisJCQkJdHJpZy0+dGdl bmFibGVkICE9IFRSSUdHRVJfRklSRVNfT05fUkVQTElDQSkKKwkJCQljb250aW51ZTsKKworCQkJ aWYgKGZ1bmNfdm9sYXRpbGUodHJpZy0+dGdmb2lkKSAhPSBQUk9WT0xBVElMRV9JTU1VVEFCTEUp CisJCQl7CisJCQkJZW50cnktPnBhcmFsbGVsX2FwcGx5ID0gUEFSQUxMRUxfQVBQTFlfVU5TQUZF OworCQkJCXJldHVybjsKKwkJCX0KKwkJfQorCX0KKworCS8qIENoZWNrIHRoZSBjb2x1bW5zLiAq LworCXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKGVudHJ5LT5sb2NhbHJlbCk7CisJZm9yIChh dHRudW0gPSAwOyBhdHRudW0gPCB0dXBkZXNjLT5uYXR0czsgYXR0bnVtKyspCisJeworCQlGb3Jt X3BnX2F0dHJpYnV0ZSBhdHQgPSBUdXBsZURlc2NBdHRyKHR1cGRlc2MsIGF0dG51bSk7CisKKwkJ LyogV2UgZG9uJ3QgbmVlZCBpbmZvIGZvciBkcm9wcGVkIG9yIGdlbmVyYXRlZCBhdHRyaWJ1dGVz ICovCisJCWlmIChhdHQtPmF0dGlzZHJvcHBlZCB8fCBhdHQtPmF0dGdlbmVyYXRlZCkKKwkJCWNv bnRpbnVlOworCisJCWlmIChhdHQtPmF0dGhhc2RlZikKKwkJeworCQkJTm9kZQkgICAqZGVmYXVs dGV4cHI7CisKKwkJCWRlZmF1bHRleHByID0gYnVpbGRfY29sdW1uX2RlZmF1bHQoZW50cnktPmxv Y2FscmVsLCBhdHRudW0gKyAxKTsKKwkJCWlmIChjb250YWluX211dGFibGVfZnVuY3Rpb25zKGRl ZmF1bHRleHByKSkKKwkJCXsKKwkJCQllbnRyeS0+cGFyYWxsZWxfYXBwbHkgPSBQQVJBTExFTF9B UFBMWV9VTlNBRkU7CisJCQkJcmV0dXJuOworCQkJfQorCQl9CisKKwkJLyoKKwkJICogSWYgdGhl IGNvbHVtbiBpcyBvZiBhIERPTUFJTiB0eXBlLCBkZXRlcm1pbmUgd2hldGhlcgorCQkgKiB0aGF0 IGRvbWFpbiBoYXMgYW55IENIRUNLIGV4cHJlc3Npb25zIHRoYXQgYXJlIG5vdAorCQkgKiBpbW11 dGFibGUuCisJCSAqLworCQlpZiAoZ2V0X3R5cHR5cGUoYXR0LT5hdHR0eXBpZCkgPT0gVFlQVFlQ RV9ET01BSU4pCisJCXsKKwkJCUxpc3QJICAgKmRvbWFpbl9jb25zdHJhaW50czsKKwkJCUxpc3RD ZWxsICAgKmxjOworCisJCQlkb21haW5fY29uc3RyYWludHMgPSBHZXREb21haW5Db25zdHJhaW50 cyhhdHQtPmF0dHR5cGlkKTsKKworCQkJZm9yZWFjaChsYywgZG9tYWluX2NvbnN0cmFpbnRzKQor CQkJeworCQkJCURvbWFpbkNvbnN0cmFpbnRTdGF0ZSAqY29uID0gKERvbWFpbkNvbnN0cmFpbnRT dGF0ZSAqKSBsZmlyc3QobGMpOworCisJCQkJaWYgKGNvbi0+Y2hlY2tfZXhwciAmJiBjb250YWlu X211dGFibGVfZnVuY3Rpb25zKChOb2RlICopIGNvbi0+Y2hlY2tfZXhwcikpCisJCQkJeworCQkJ CQllbnRyeS0+cGFyYWxsZWxfYXBwbHkgPSBQQVJBTExFTF9BUFBMWV9VTlNBRkU7CisJCQkJCXJl dHVybjsKKwkJCQl9CisJCQl9CisJCX0KKwl9CisKKwkvKiBDaGVjayB0aGUgY29uc3RyYWludHMu ICovCisJaWYgKHR1cGRlc2MtPmNvbnN0cikKKwl7CisJCUNvbnN0ckNoZWNrICpjaGVjayA9IHR1 cGRlc2MtPmNvbnN0ci0+Y2hlY2s7CisKKwkJLyoKKwkJICogRGV0ZXJtaW5lIGlmIHRoZXJlIGFy ZSBhbnkgQ0hFQ0sgY29uc3RyYWludHMgd2hpY2gKKwkJICogY29udGFpbnMgbm9uLWltbXV0YWJs ZSBmdW5jdGlvbi4KKwkJICovCisJCWZvciAoaSA9IDA7IGkgPCB0dXBkZXNjLT5jb25zdHItPm51 bV9jaGVjazsgaSsrKQorCQl7CisJCQlFeHByCSAgICpjaGVja19leHByID0gc3RyaW5nVG9Ob2Rl KGNoZWNrW2ldLmNjYmluKTsKKworCQkJaWYgKGNvbnRhaW5fbXV0YWJsZV9mdW5jdGlvbnMoKE5v ZGUgKikgY2hlY2tfZXhwcikpCisJCQl7CisJCQkJZW50cnktPnBhcmFsbGVsX2FwcGx5ID0gUEFS QUxMRUxfQVBQTFlfVU5TQUZFOworCQkJCXJldHVybjsKKwkJCX0KKwkJfQorCX0KKworCS8qCisJ ICogQ2hlY2sgdGhlIGZvcmVpZ24ga2V5cy4KKwkgKgorCSAqIFhYWCBJdCBpcyBiZXR0ZXIgdG8g b25seSBjaGVjayB0aGUgZm9yZWlnbiBrZXkgd2hlbiBpdCBpcyBkZXRlY3RlZCB0aGF0CisJICog dGhlIHB1Ymxpc2hlciBkb2VzIG5vdCBoYXZlIHRoZSBmb3JlaWduIGtleSBhbmQgdGhlIHN1YnNj cmliZXIgZG9lcy4gQnV0CisJICogdGhpcyByZXF1aXJlcyB0aGUgcHVibGlzaGVyIHRvIHNlbmQg bW9yZSBpbmZvcm1hdGlvbi4gSW4gYWRkaXRpb24sIHNpbmNlCisJICogZm9yZWlnbiBrZXkgZG9l cyBub3QgdGFrZSBlZmZlY3QgaW4gdGhlIHN1YnNjcmliZXIncyBhcHBseSB3b3JrZXIgYnkKKwkg KiBkZWZhdWx0LCBpdCBzZWVtcyB0aGF0IGZvcmVpZ24ga2V5IGRvZXMgbm90IGhpdCB0aGlzIEVS Uk9SIGZyZXF1ZW50bHkuCisJICogU28sIG9ubHkgYSBzaW1wbGUgY2hlY2sgYmFzZWQgb24gdGhl IHN1YnNjcmliZXIgc2NoZW1hIGlzIGtlcHQgaGVyZS4KKwkgKi8KKwlma2V5cyA9IFJlbGF0aW9u R2V0RktleUxpc3QoZW50cnktPmxvY2FscmVsKTsKKwlpZiAoZmtleXMpCisJCWVudHJ5LT5wYXJh bGxlbF9hcHBseSA9IFBBUkFMTEVMX0FQUExZX1VOU0FGRTsKK30KKwogLyoKICAqIE9wZW4gdGhl IGxvY2FsIHJlbGF0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVtb3RlIG9uZS4KICAqCkBAIC00 MzgsNiArNjQ1LDkgQEAgbG9naWNhbHJlcF9yZWxfb3BlbihMb2dpY2FsUmVwUmVsSWQgcmVtb3Rl aWQsIExPQ0tNT0RFIGxvY2ttb2RlKQogCQkgKi8KIAkJbG9naWNhbHJlcF9yZWxfbWFya191cGRh dGFibGUoZW50cnkpOwogCisJCS8qIFNldCBpZiBjaGFuZ2VzIGNvdWxkIGJlIGFwcGxpZWQgdXNp bmcgYW4gYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuICovCisJCWxvZ2ljYWxyZXBfcmVsX21hcmtf cGFyYWxsZWxfYXBwbHkoZW50cnkpOworCiAJCWVudHJ5LT5sb2NhbHJlbHZhbGlkID0gdHJ1ZTsK IAl9CiAKQEAgLTY1Myw2ICs4NjMsNyBAQCBsb2dpY2FscmVwX3BhcnRpdGlvbl9vcGVuKExvZ2lj YWxSZXBSZWxNYXBFbnRyeSAqcm9vdCwKIAkJfQogCQllbnRyeS0+cmVtb3RlcmVsLnJlcGxpZGVu dCA9IHJlbW90ZXJlbC0+cmVwbGlkZW50OwogCQllbnRyeS0+cmVtb3RlcmVsLmF0dGtleXMgPSBi bXNfY29weShyZW1vdGVyZWwtPmF0dGtleXMpOworCQllbnRyeS0+cmVtb3RlcmVsLmF0dHVuaXF1 ZSA9IGJtc19jb3B5KHJlbW90ZXJlbC0+YXR0dW5pcXVlKTsKIAl9CiAKIAllbnRyeS0+bG9jYWxy ZWwgPSBwYXJ0cmVsOwpAQCAtNjk2LDYgKzkwNyw5IEBAIGxvZ2ljYWxyZXBfcGFydGl0aW9uX29w ZW4oTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyb290LAogCS8qIFNldCBpZiB0aGUgdGFibGUncyBy ZXBsaWNhIGlkZW50aXR5IGlzIGVub3VnaCB0byBhcHBseSB1cGRhdGUvZGVsZXRlLiAqLwogCWxv Z2ljYWxyZXBfcmVsX21hcmtfdXBkYXRhYmxlKGVudHJ5KTsKIAorCS8qIFNldCBpZiBjaGFuZ2Vz IGNvdWxkIGJlIGFwcGxpZWQgdXNpbmcgYW4gYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuICovCisJ bG9naWNhbHJlcF9yZWxfbWFya19wYXJhbGxlbF9hcHBseShlbnRyeSk7CisKIAllbnRyeS0+bG9j YWxyZWx2YWxpZCA9IHRydWU7CiAKIAkvKiBzdGF0ZSBhbmQgc3RhdGVsc24gYXJlIGxlZnQgc2V0 IHRvIDAuICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Rh Ymxlc3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwpp bmRleCBmMzkxMWRlN2I4Li40NTVmZmYyY2JmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvdGFibGVzeW5jLmMKQEAgLTg4NCw2ICs4ODQsNyBAQCBmZXRjaF9yZW1vdGVfdGFi bGVfaW5mbyhjaGFyICpuc3BuYW1lLCBjaGFyICpyZWxuYW1lLAogCWxyZWwtPmF0dG5hbWVzID0g cGFsbG9jMChNYXhUdXBsZUF0dHJpYnV0ZU51bWJlciAqIHNpemVvZihjaGFyICopKTsKIAlscmVs LT5hdHR0eXBzID0gcGFsbG9jMChNYXhUdXBsZUF0dHJpYnV0ZU51bWJlciAqIHNpemVvZihPaWQp KTsKIAlscmVsLT5hdHRrZXlzID0gTlVMTDsKKwlscmVsLT5hdHR1bmlxdWUgPSBOVUxMOwogCiAJ LyoKIAkgKiBTdG9yZSB0aGUgY29sdW1ucyBhcyBhIGxpc3Qgb2YgbmFtZXMuICBJZ25vcmUgdGhv c2UgdGhhdCBhcmUgbm90CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpp bmRleCA4NTU1ZWFkYzcwLi4zNzUzNTY4N2VlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvd29ya2VyLmMKQEAgLTI3MCw3ICsyNzAsNyBAQCBib29sIGluX3N0cmVhbWVkX3RyYW5z YWN0aW9uID0gZmFsc2U7CiBUcmFuc2FjdGlvbklkIHN0cmVhbV94aWQgPSBJbnZhbGlkVHJhbnNh Y3Rpb25JZDsKIHN0YXRpYyBBcHBseUJnd29ya2VyU3RhdGUgKnN0cmVhbV9hcHBseV93b3JrZXIg PSBOVUxMOwogCi0vKiBDaGVjayBpZiB3ZSBhcmUgYXBwbHlpbmcgdGhlIHRyYW5zYWN0aW9uIGlu IGFuIGFwcGx5IGJhY2tncm91bmQgd29ya2VyICovCisvKiBDaGVjayBpZiB3ZSBhcmUgYXBwbHlp bmcgdGhlIHRyYW5zYWN0aW9uIHVzaW5nIGFuIGFwcGx5IGJhY2tncm91bmQgd29ya2VyICovCiAj ZGVmaW5lIGFwcGx5X2Jnd29ya2VyX2FjdGl2ZSgpIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiAm JiBzdHJlYW1fYXBwbHlfd29ya2VyICE9IE5VTEwpCiAKIC8qCkBAIC0xMTc2LDggKzExNzYsOCBA QCBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCQkJIHByZXBhcmVf ZGF0YS54aWQpOwogCiAJCS8qCi0JCSAqIENoZWNrIGlmIHdlIGFyZSBwcm9jZXNzaW5nIHRoaXMg dHJhbnNhY3Rpb24gaW4gYW4gYXBwbHkgYmFja2dyb3VuZAotCQkgKiB3b3JrZXIgYW5kIGlmIHNv LCBzZW5kIHRoZSBjaGFuZ2VzIHRvIHRoYXQgd29ya2VyLgorCQkgKiBDaGVjayBpZiB3ZSBhcmUg cHJvY2Vzc2luZyB0aGlzIHRyYW5zYWN0aW9uIHVzaW5nIGFuIGFwcGx5CisJCSAqIGJhY2tncm91 bmQgd29ya2VyIGFuZCBpZiBzbywgc2VuZCB0aGUgY2hhbmdlcyB0byB0aGF0IHdvcmtlci4KIAkJ ICovCiAJCWlmICh3c3RhdGUpCiAJCXsKQEAgLTEzMTcsOSArMTMxNyw5IEBAIGFwcGx5X2hhbmRs ZV9zdHJlYW1fc3RhcnQoU3RyaW5nSW5mbyBzKQogCQlpZiAoc3RyZWFtX2FwcGx5X3dvcmtlcikK IAkJewogCQkJLyoKLQkJCSAqIElmIHdlIGhhdmUgZm91bmQgYSBmcmVlIHdvcmtlciBvciBpZiB3 ZSBhcmUgYWxyZWFkeSBhcHBseWluZyB0aGlzCi0JCQkgKiB0cmFuc2FjdGlvbiBpbiBhbiBhcHBs eSBiYWNrZ3JvdW5kIHdvcmtlciwgdGhlbiB3ZSBwYXNzIHRoZSBkYXRhIHRvCi0JCQkgKiB0aGF0 IHdvcmtlci4KKwkJCSAqIElmIHdlIGhhdmUgZm91bmQgYSBmcmVlIHdvcmtlciBvciBpZiB3ZSBh cmUgYWxyZWFkeSBhcHBseWluZworCQkJICogdGhpcyB0cmFuc2FjdGlvbiB1c2luZyBhbiBhcHBs eSBiYWNrZ3JvdW5kIHdvcmtlciwgdGhlbiB3ZSBwYXNzCisJCQkgKiB0aGUgZGF0YSB0byB0aGF0 IHdvcmtlci4KIAkJCSAqLwogCQkJaWYgKGZpcnN0X3NlZ21lbnQpCiAJCQkJYXBwbHlfYmd3b3Jr ZXJfc2VuZF9kYXRhKHN0cmVhbV9hcHBseV93b3JrZXIsIHMtPmxlbiwgcy0+ZGF0YSk7CkBAIC0x MzkxLDYgKzEzOTEsMTQgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9zdG9wKFN0cmluZ0luZm8gcykK IAl7CiAJCWNoYXIgYWN0aW9uID0gTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9TVE9QOwogCisJCS8q CisJCSAqIFVubGlrZSBzdHJlYW1fY29tbWl0LCB3ZSBkb24ndCBuZWVkIHRvIHdhaXQgaGVyZSBm b3Igc3RyZWFtX3N0b3AgdG8KKwkJICogZmluaXNoLiBBbGxvd2luZyB0aGUgb3RoZXIgdHJhbnNh Y3Rpb24gdG8gYmUgYXBwbGllZCBiZWZvcmUKKwkJICogc3RyZWFtX3N0b3AgaXMgZmluaXNoZWQg Y2FuIGxlYWQgdG8gZmFpbHVyZXMgaWYgdGhlIHVuaXF1ZQorCQkgKiBpbmRleC9jb25zdHJhaW50 IGlzIGRpZmZlcmVudCBiZXR3ZWVuIHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJlci4gQnV0CisJCSAq IGZvciBzdWNoIGNhc2VzLCB3ZSBkb24ndCBhbGxvdyBzdHJlYW1lZCB0cmFuc2FjdGlvbnMgdG8g YmUgYXBwbGllZAorCQkgKiBpbiBwYXJhbGxlbC4gU2VlIGFwcGx5X2Jnd29ya2VyX3JlbGF0aW9u X2NoZWNrLgorCQkgKi8KIAkJYXBwbHlfYmd3b3JrZXJfc2VuZF9kYXRhKHN0cmVhbV9hcHBseV93 b3JrZXIsIDEsICZhY3Rpb24pOwogCiAJCWVsb2coREVCVUcxLCAic3RvcHBlZCBzdHJlYW1pbmcg b2YgeGlkICV1LCAldSBjaGFuZ2VzIHN0cmVhbWVkIiwgc3RyZWFtX3hpZCwgbmNoYW5nZXMpOwpA QCAtMTYxMCw4ICsxNjE4LDggQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZv IHMpCiAJCUFwcGx5Qmd3b3JrZXJTdGF0ZSAqd3N0YXRlID0gYXBwbHlfYmd3b3JrZXJfZmluZCh4 aWQpOwogCiAJCS8qCi0JCSAqIENoZWNrIGlmIHdlIGFyZSBwcm9jZXNzaW5nIHRoaXMgdHJhbnNh Y3Rpb24gaW4gYW4gYXBwbHkgYmFja2dyb3VuZAotCQkgKiB3b3JrZXIgYW5kIGlmIHNvLCBzZW5k IHRoZSBjaGFuZ2VzIHRvIHRoYXQgd29ya2VyLgorCQkgKiBDaGVjayBpZiB3ZSBhcmUgcHJvY2Vz c2luZyB0aGlzIHRyYW5zYWN0aW9uIHVzaW5nIGFuIGFwcGx5CisJCSAqIGJhY2tncm91bmQgd29y a2VyIGFuZCBpZiBzbywgc2VuZCB0aGUgY2hhbmdlcyB0byB0aGF0IHdvcmtlci4KIAkJICovCiAJ CWlmICh3c3RhdGUpCiAJCXsKQEAgLTE4MDksOCArMTgxNyw4IEBAIGFwcGx5X2hhbmRsZV9zdHJl YW1fY29tbWl0KFN0cmluZ0luZm8gcykKIAkJZWxvZyhERUJVRzEsICJyZWNlaXZlZCBjb21taXQg Zm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9uICV1IiwgeGlkKTsKIAogCQkvKgotCQkgKiBDaGVjayBp ZiB3ZSBhcmUgcHJvY2Vzc2luZyB0aGlzIHRyYW5zYWN0aW9uIGluIGFuIGFwcGx5IGJhY2tncm91 bmQKLQkJICogd29ya2VyIGFuZCBpZiBzbywgc2VuZCB0aGUgY2hhbmdlcyB0byB0aGF0IHdvcmtl ci4KKwkJICogQ2hlY2sgaWYgd2UgYXJlIHByb2Nlc3NpbmcgdGhpcyB0cmFuc2FjdGlvbiB1c2lu ZyBhbiBhcHBseQorCQkgKiBiYWNrZ3JvdW5kIHdvcmtlciBhbmQgaWYgc28sIHNlbmQgdGhlIGNo YW5nZXMgdG8gdGhhdCB3b3JrZXIuCiAJCSAqLwogCQlpZiAod3N0YXRlKQogCQl7CkBAIC0yMDQ0 LDYgKzIwNTIsOCBAQCBhcHBseV9oYW5kbGVfaW5zZXJ0KFN0cmluZ0luZm8gcykKIAkvKiBTZXQg cmVsYXRpb24gZm9yIGVycm9yIGNhbGxiYWNrICovCiAJYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJn LnJlbCA9IHJlbDsKIAorCWFwcGx5X2Jnd29ya2VyX3JlbGF0aW9uX2NoZWNrKHJlbCk7CisKIAkv KiBJbml0aWFsaXplIHRoZSBleGVjdXRvciBzdGF0ZS4gKi8KIAllZGF0YSA9IGNyZWF0ZV9lZGF0 YV9mb3JfcmVsYXRpb24ocmVsKTsKIAllc3RhdGUgPSBlZGF0YS0+ZXN0YXRlOwpAQCAtMjE4Nyw2 ICsyMTk3LDggQEAgYXBwbHlfaGFuZGxlX3VwZGF0ZShTdHJpbmdJbmZvIHMpCiAJLyogQ2hlY2sg aWYgd2UgY2FuIGRvIHRoZSB1cGRhdGUuICovCiAJY2hlY2tfcmVsYXRpb25fdXBkYXRhYmxlKHJl bCk7CiAKKwlhcHBseV9iZ3dvcmtlcl9yZWxhdGlvbl9jaGVjayhyZWwpOworCiAJLyogSW5pdGlh bGl6ZSB0aGUgZXhlY3V0b3Igc3RhdGUuICovCiAJZWRhdGEgPSBjcmVhdGVfZWRhdGFfZm9yX3Jl bGF0aW9uKHJlbCk7CiAJZXN0YXRlID0gZWRhdGEtPmVzdGF0ZTsKQEAgLTIzNTUsNiArMjM2Nyw4 IEBAIGFwcGx5X2hhbmRsZV9kZWxldGUoU3RyaW5nSW5mbyBzKQogCS8qIENoZWNrIGlmIHdlIGNh biBkbyB0aGUgZGVsZXRlLiAqLwogCWNoZWNrX3JlbGF0aW9uX3VwZGF0YWJsZShyZWwpOwogCisJ YXBwbHlfYmd3b3JrZXJfcmVsYXRpb25fY2hlY2socmVsKTsKKwogCS8qIEluaXRpYWxpemUgdGhl IGV4ZWN1dG9yIHN0YXRlLiAqLwogCWVkYXRhID0gY3JlYXRlX2VkYXRhX2Zvcl9yZWxhdGlvbihy ZWwpOwogCWVzdGF0ZSA9IGVkYXRhLT5lc3RhdGU7CkBAIC0yNTQwLDEzICsyNTU0LDE0IEBAIGFw cGx5X2hhbmRsZV90dXBsZV9yb3V0aW5nKEFwcGx5RXhlY3V0aW9uRGF0YSAqZWRhdGEsCiAJfQog CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOwogCisJcGFydF9lbnRyeSA9IGxvZ2ljYWxy ZXBfcGFydGl0aW9uX29wZW4ocmVsbWFwZW50cnksIHBhcnRyZWwsCisJCQkJCQkJCQkJICAgYXR0 cm1hcCk7CisKIAkvKiBDaGVjayBpZiB3ZSBjYW4gZG8gdGhlIHVwZGF0ZSBvciBkZWxldGUgb24g dGhlIGxlYWYgcGFydGl0aW9uLiAqLwogCWlmIChvcGVyYXRpb24gPT0gQ01EX1VQREFURSB8fCBv cGVyYXRpb24gPT0gQ01EX0RFTEVURSkKLQl7Ci0JCXBhcnRfZW50cnkgPSBsb2dpY2FscmVwX3Bh cnRpdGlvbl9vcGVuKHJlbG1hcGVudHJ5LCBwYXJ0cmVsLAotCQkJCQkJCQkJCQkgICBhdHRybWFw KTsKIAkJY2hlY2tfcmVsYXRpb25fdXBkYXRhYmxlKHBhcnRfZW50cnkpOwotCX0KKworCWFwcGx5 X2Jnd29ya2VyX3JlbGF0aW9uX2NoZWNrKHBhcnRfZW50cnkpOwogCiAJc3dpdGNoIChvcGVyYXRp b24pCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2FjaGUuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMKaW5kZXggODA4ZjllYmQwZC4uYjI0 ODg5OWQ4MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2FjaGUuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jCkBAIC0yNTQwLDYgKzI1NDAs MjMgQEAgY29tcGFyZV92YWx1ZXNfb2ZfZW51bShUeXBlQ2FjaGVFbnRyeSAqdGNhY2hlLCBPaWQg YXJnMSwgT2lkIGFyZzIpCiAJCXJldHVybiAwOwogfQogCisvKgorICogR2V0RG9tYWluQ29uc3Ry YWludHMgLS0tIGdldCBEb21haW5Db25zdHJhaW50U3RhdGUgbGlzdCBvZiBzcGVjaWZpZWQgZG9t YWluIHR5cGUKKyAqLworTGlzdCAqCitHZXREb21haW5Db25zdHJhaW50cyhPaWQgdHlwZV9pZCkK K3sKKwlUeXBlQ2FjaGVFbnRyeSAqdHlwZW50cnk7CisJTGlzdAkJICAgKmNvbnN0cmFpbnRzID0g TklMOworCisJdHlwZW50cnkgPSBsb29rdXBfdHlwZV9jYWNoZSh0eXBlX2lkLCBUWVBFQ0FDSEVf RE9NQUlOX0NPTlNUUl9JTkZPKTsKKworCWlmKHR5cGVudHJ5LT5kb21haW5EYXRhICE9IE5VTEwp CisJCWNvbnN0cmFpbnRzID0gdHlwZW50cnktPmRvbWFpbkRhdGEtPmNvbnN0cmFpbnRzOworCisJ cmV0dXJuIGNvbnN0cmFpbnRzOworfQorCiAvKgogICogTG9hZCAob3IgcmUtbG9hZCkgdGhlIGVu dW1EYXRhIG1lbWJlciBvZiB0aGUgdHlwY2FjaGUgZW50cnkuCiAgKi8KZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oIGIvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vbG9naWNhbHByb3RvLmgKaW5kZXggZWIwZmQyNGZkOC4uNDM5NWMxMWY3NSAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKKysrIGIvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKQEAgLTExMyw2ICsxMTMsNyBAQCB0eXBl ZGVmIHN0cnVjdCBMb2dpY2FsUmVwUmVsYXRpb24KIAljaGFyCQlyZXBsaWRlbnQ7CQkvKiByZXBs aWNhIGlkZW50aXR5ICovCiAJY2hhcgkJcmVsa2luZDsJCS8qIHJlbW90ZSByZWxhdGlvbiBraW5k ICovCiAJQml0bWFwc2V0ICAqYXR0a2V5czsJCS8qIEJpdG1hcCBvZiBrZXkgY29sdW1ucyAqLwor CUJpdG1hcHNldCAgKmF0dHVuaXF1ZTsJCS8qIEJpdG1hcCBvZiB1bmlxdWUgY29sdW1ucyAqLwog fSBMb2dpY2FsUmVwUmVsYXRpb247CiAKIC8qIFR5cGUgbWFwcGluZyBpbmZvICovCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaCBiL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oCmluZGV4IDc4Y2Q3ZTc3ZjUuLmQ0OWE5 ODc4NzEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlv bi5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oCkBAIC0x NSw2ICsxNSwxOSBAQAogI2luY2x1ZGUgImFjY2Vzcy9hdHRtYXAuaCIKICNpbmNsdWRlICJyZXBs aWNhdGlvbi9sb2dpY2FscHJvdG8uaCIKIAorLyoKKyAqCVN0YXRlcyB0byBkZXRlcm1pbmUgaWYg Y2hhbmdlcyBvbiBvbmUgcmVsYXRpb24gY2FuIGJlIGFwcGxpZWQgdXNpbmcgYW4KKyAqCWFwcGx5 IGJhY2tncm91bmQgd29ya2VyLgorICovCit0eXBlZGVmIGVudW0gUGFyYWxsZWxBcHBseVNhZmV0 eQoreworCVBBUkFMTEVMX0FQUExZX1VOS05PV04gPSAwLAkvKiB1bmtub3duICAqLworCVBBUkFM TEVMX0FQUExZX1NBRkUsCQkvKiBDYW4gYXBwbHkgY2hhbmdlcyB1c2luZyBhbiBhcHBseSBiYWNr Z3JvdW5kCisJCQkJCQkJCSAgIHdvcmtlciAqLworCVBBUkFMTEVMX0FQUExZX1VOU0FGRQkJLyog Q2FuIG5vdCBhcHBseSBjaGFuZ2VzIHVzaW5nIGFuIGFwcGx5CisJCQkJCQkJCSAgIGJhY2tncm91 bmQgd29ya2VyICovCit9IFBhcmFsbGVsQXBwbHlTYWZldHk7CisKIHR5cGVkZWYgc3RydWN0IExv Z2ljYWxSZXBSZWxNYXBFbnRyeQogewogCUxvZ2ljYWxSZXBSZWxhdGlvbiByZW1vdGVyZWw7CS8q IGtleSBpcyByZW1vdGVyZWwucmVtb3RlaWQgKi8KQEAgLTMxLDYgKzQ0LDggQEAgdHlwZWRlZiBz dHJ1Y3QgTG9naWNhbFJlcFJlbE1hcEVudHJ5CiAJUmVsYXRpb24JbG9jYWxyZWw7CQkvKiByZWxj YWNoZSBlbnRyeSAoTlVMTCB3aGVuIGNsb3NlZCkgKi8KIAlBdHRyTWFwICAgICphdHRybWFwOwkJ LyogbWFwIG9mIGxvY2FsIGF0dHJpYnV0ZXMgdG8gcmVtb3RlIG9uZXMgKi8KIAlib29sCQl1cGRh dGFibGU7CQkvKiBDYW4gYXBwbHkgdXBkYXRlcy9kZWxldGVzPyAqLworCVBhcmFsbGVsQXBwbHlT YWZldHkJcGFyYWxsZWxfYXBwbHk7CS8qIENhbiBhcHBseSBjaGFuZ2VzIGluIGFuIGFwcGx5CisJ CQkJCQkJCQkJICAgYmFja2dyb3VuZCB3b3JrZXI/ICovCiAKIAkvKiBTeW5jIHN0YXRlLiAqLwog CWNoYXIJCXN0YXRlOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2Vy X2ludGVybmFsLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaApp bmRleCA5MTgxNGU3OWM4Li45MWY4ZGJmNTdkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93 b3JrZXJfaW50ZXJuYWwuaApAQCAtMTk2LDYgKzE5Niw3IEBAIGV4dGVybiB2b2lkIGFwcGx5X2Jn d29ya2VyX2ZyZWUoQXBwbHlCZ3dvcmtlclN0YXRlICp3c3RhdGUpOwogZXh0ZXJuIHZvaWQgYXBw bHlfYmd3b3JrZXJfY2hlY2tfc3RhdHVzKHZvaWQpOwogZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3Jr ZXJfc2V0X3N0YXR1cyhBcHBseUJnd29ya2VyU3RhdHVzIHN0YXR1cyk7CiBleHRlcm4gdm9pZCBh cHBseV9iZ3dvcmtlcl9zdWJ4YWN0X2luZm9fYWRkKFRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQp OworZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3JrZXJfcmVsYXRpb25fY2hlY2soTG9naWNhbFJlcFJl bE1hcEVudHJ5ICpyZWwpOwogCiBzdGF0aWMgaW5saW5lIGJvb2wKIGFtX3RhYmxlc3luY193b3Jr ZXIodm9pZCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3R5cGNhY2hlLmggYi9zcmMv aW5jbHVkZS91dGlscy90eXBjYWNoZS5oCmluZGV4IDQzMWFkN2YxYjMuLmVkN2MyZTdmNDggMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3R5cGNhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUv dXRpbHMvdHlwY2FjaGUuaApAQCAtMTk5LDYgKzE5OSw4IEBAIGV4dGVybiB1aW50NjQgYXNzaWdu X3JlY29yZF90eXBlX2lkZW50aWZpZXIoT2lkIHR5cGVfaWQsIGludDMyIHR5cG1vZCk7CiAKIGV4 dGVybiBpbnQJY29tcGFyZV92YWx1ZXNfb2ZfZW51bShUeXBlQ2FjaGVFbnRyeSAqdGNhY2hlLCBP aWQgYXJnMSwgT2lkIGFyZzIpOwogCitleHRlcm4gTGlzdCAqR2V0RG9tYWluQ29uc3RyYWludHMo T2lkIHR5cGVfaWQpOworCiBleHRlcm4gc2l6ZV90IFNoYXJlZFJlY29yZFR5cG1vZFJlZ2lzdHJ5 RXN0aW1hdGUodm9pZCk7CiAKIGV4dGVybiB2b2lkIFNoYXJlZFJlY29yZFR5cG1vZFJlZ2lzdHJ5 SW5pdChTaGFyZWRSZWNvcmRUeXBtb2RSZWdpc3RyeSAqLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAx NV9zdHJlYW0ucGwKaW5kZXggOWY0OTQ2ZDdkNi4uZWQ5ZWY4NGNmNyAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMTVfc3RyZWFtLnBsCkBAIC0xMyw3ICsxMyw3IEBAIHVzZSBUZXN0OjpNb3JlOwog IyBzdHJlYW1pbmc9cGFyYWxsZWwgY2FzZXMuCiBzdWIgdGVzdF9zdHJlYW1pbmcKIHsKLQlteSAo JG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFsbGVs KSA9IEBfOworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1l KSA9IEBfOwogCiAJIyBJbnRlcmxlYXZlIGEgcGFpciBvZiB0cmFuc2FjdGlvbnMsIGVhY2ggZXhj ZWVkaW5nIHRoZSA2NGtCIGxpbWl0LgogCW15ICRpbiAgPSAnJzsKQEAgLTI0LDE2ICsyNCw2IEBA IHN1YiB0ZXN0X3N0cmVhbWluZwogCW15ICRoID0gJG5vZGVfcHVibGlzaGVyLT5iYWNrZ3JvdW5k X3BzcWwoJ3Bvc3RncmVzJywgXCRpbiwgXCRvdXQsICR0aW1lciwKIAkJb25fZXJyb3Jfc3RvcCA9 PiAwKTsKIAotCSMgQ2hlY2sgdGhhdCBhIGJhY2tncm91bmQgd29ya2VyIHN0YXJ0cyBpZiAic3Ry ZWFtaW5nIiBwYXJhbWV0ZXIgaXMKLQkjIHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLiAgV2UgaGF2 ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcwotCSMgYWJvdXQgdGhhdCwgc28g dGVtcG9yYXJpbHkgYnVtcCB1cCB0aGUgbG9nIHZlcmJvc2l0eS4KLQlpZiAoJGlzX3BhcmFsbGVs KQotCXsKLQkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZics Ci0JCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOwotCQkkbm9kZV9zdWJzY3JpYmVyLT5y ZWxvYWQ7Ci0JfQotCiAJJGluIC49IHF7CiAJQkVHSU47CiAJSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkp OwpAQCAtNDIsMTQgKzMyLDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJfTsKIAkkaC0+cHVtcF9u YjsKIAotCWlmICgkaXNfcGFyYWxsZWwpCi0JewotCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zv cl9sb2cocXIvXFtBcHBseSBCR1cgI1xkK1xdIHN0YXJ0ZWQvLCAwKTsKLQkJJG5vZGVfc3Vic2Ny aWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCi0JCQkibG9nX21pbl9tZXNzYWdl cyA9IHdhcm5pbmciKTsKLQkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwotCX0KLQogCSRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKAogCQkncG9zdGdyZXMnLCBxewogCUJFR0lOOwpAQCAtMTYz LDcgKzE0NSw3IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBj b3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8MiksICdj aGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLXRlc3Rfc3Ry ZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwor dGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFt ZSk7CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFRlc3QgdXNp bmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJwpAQCAtMTcyLDggKzE1NCwxMyBAQCBteSAkb2xk cGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIHBp ZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBw bmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAotJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChz dHJlYW1pbmcgPSBwYXJhbGxlbCwgYmluYXJ5ID0gb2ZmKSIpOworIyAic3RyZWFtaW5nID0gcGFy YWxsZWwiIGRvZXMgbm90IHN1cHBvcnQgbm9uLWltbXV0YWJsZSBmdW5jdGlvbnMsIHNvIGNoYW5n ZQorIyB0aGUgZnVuY3Rpb24gaW4gdGhlIGRlZnVsdCBleHByZXNzaW9uIG9mIGNvbHVtbiAiYyIu Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitBTFRFUiBU QUJMRSB0ZXN0X3RhYiBBTFRFUiBDT0xVTU4gYyBTRVQgREVGQVVMVCB0b190aW1lc3RhbXAoMTI4 NDM1MjMyMyk7CitBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQoc3RyZWFtaW5nID0gcGFy YWxsZWwsIGJpbmFyeSA9IG9mZik7Cit9KTsKIAogJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5 X3VudGlsKCdwb3N0Z3JlcycsCiAJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRf cmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRl ID0gJ3N0cmVhbWluZyc7IgpAQCAtMTgxLDcgKzE2OCw3IEBAICRub2RlX3B1Ymxpc2hlci0+cG9s bF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAogICBvciBkaWUKICAgIlRpbWVkIG91dCB3aGlsZSB3 YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQVElPTiI7 CiAKLXRlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFw cG5hbWUsIDEpOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3Jp YmVyLCAkYXBwbmFtZSk7CiAKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNo ZXItPnN0b3A7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFt X3N1YnhhY3QucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3Qu cGwKaW5kZXggMTA0YTE2OTE5Ny4uYTkyZmNjNDRkYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbApAQCAtMTMsMTcgKzEzLDcgQEAgdXNlIFRlc3Q6 Ok1vcmU7CiAjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KIHN1YiB0ZXN0X3N0cmVhbWluZwog ewotCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNf cGFyYWxsZWwpID0gQF87Ci0KLQkjIENoZWNrIHRoYXQgYSBiYWNrZ3JvdW5kIHdvcmtlciBzdGFy dHMgaWYgInN0cmVhbWluZyIgcGFyYW1ldGVyIGlzCi0JIyBzcGVjaWZpZWQgYXMgInBhcmFsbGVs Ii4gIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMKLQkjIGFib3V0 IHRoYXQsIHNvIHRlbXBvcmFyaWx5IGJ1bXAgdXAgdGhlIGxvZyB2ZXJib3NpdHkuCi0JaWYgKCRp c19wYXJhbGxlbCkKLQl7Ci0JCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jl c3FsLmNvbmYnLAotCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKLQkJJG5vZGVfc3Vi c2NyaWJlci0+cmVsb2FkOwotCX0KKwlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3Jp YmVyLCAkYXBwbmFtZSkgPSBAXzsKIAogCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91 Z2ggcm93cyB0byBleGNlZWQgNjRrQiBsaW1pdC4KIAkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgKQEAgLTUxLDE0ICs0MSw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCUNPTU1JVDsKIAl9KTsK IAotCWlmICgkaXNfcGFyYWxsZWwpCi0JewotCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9s b2cocXIvXFtBcHBseSBCR1cgI1xkK1xdIHN0YXJ0ZWQvLCAwKTsKLQkJJG5vZGVfc3Vic2NyaWJl ci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCi0JCQkibG9nX21pbl9tZXNzYWdlcyA9 IHdhcm5pbmciKTsKLQkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwotCX0KLQogCSRub2RlX3B1 Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKIAlteSAkcmVzdWx0ID0KQEAg LTExOSw3ICsxMDEsNyBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChj KSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwyfDIp LCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi10ZXN0 X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAw KTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFw cG5hbWUpOwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBUZXN0 IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKQEAgLTEyOCw4ICsxMTAsMTMgQEAgbXkg JG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIlNFTEVD VCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAn JGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKICk7CiAKLSRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBT RVQoc3RyZWFtaW5nID0gcGFyYWxsZWwpIik7CisjICJzdHJlYW1pbmcgPSBwYXJhbGxlbCIgZG9l cyBub3Qgc3VwcG9ydCBub24taW1tdXRhYmxlIGZ1bmN0aW9ucywgc28gY2hhbmdlCisjIHRoZSBm dW5jdGlvbiBpbiB0aGUgZGVmdWx0IGV4cHJlc3Npb24gb2YgY29sdW1uICJjIi4KKyRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0FMVEVSIFRBQkxFIHRlc3Rf dGFiIEFMVEVSIENPTFVNTiBjIFNFVCBERUZBVUxUIHRvX3RpbWVzdGFtcCgxMjg0MzUyMzIzKTsK K0FMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCk7Cit9 KTsKIAogJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCiAJIlNF TEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGlj YXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgpAQCAtMTM3 LDcgKzEyNCw3IEBAICRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMn LAogICBvciBkaWUKICAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0 YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQVElPTiI7CiAKLXRlc3Rfc3RyZWFtaW5nKCRub2Rl X3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwordGVzdF9zdHJlYW1p bmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSk7CiAKICRub2Rl X3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbCBiL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCmluZGV4IDBhNDE1MmQzYmUu Ljc5YzZiMDg0MjYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29w aGFzZV9jYXNjYWRlLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFz ZV9jYXNjYWRlLnBsCkBAIC00NzAsNiArNDcwLDE0IEBAIHRlc3Rfc3RyZWFtaW5nKCRub2RlX0Es ICRub2RlX0IsICRub2RlX0MsICRhcHBuYW1lX0IsICRhcHBuYW1lX0MsICdvbicpOwogIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgVGVzdCB1c2luZyBzdHJlYW1pbmcg bW9kZSAncGFyYWxsZWwnCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor CisjICJzdHJlYW1pbmcgPSBwYXJhbGxlbCIgZG9lcyBub3Qgc3VwcG9ydCBub24taW1tdXRhYmxl IGZ1bmN0aW9ucywgc28gY2hhbmdlCisjIHRoZSBmdW5jdGlvbiBpbiB0aGUgZGVmdWx0IGV4cHJl c3Npb24gb2YgY29sdW1uICJjIi4KKyRub2RlX0ItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCAi QUxURVIgVEFCTEUgdGVzdF90YWIgQUxURVIgQ09MVU1OIGMgU0VUIERFRkFVTFQgdG9fdGltZXN0 YW1wKDEyODQzNTIzMjMpOyIpOworJG5vZGVfQy0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsICJB TFRFUiBUQUJMRSB0ZXN0X3RhYiBBTFRFUiBDT0xVTU4gYyBTRVQgREVGQVVMVCB0b190aW1lc3Rh bXAoMTI4NDM1MjMyMyk7Iik7CisKIHRlc3Rfc3RyZWFtaW5nKCRub2RlX0EsICRub2RlX0IsICRu b2RlX0MsICRhcHBuYW1lX0IsICRhcHBuYW1lX0MsICdwYXJhbGxlbCcpOwogCiAjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3 b3BoYXNlX3N0cmVhbS5wbAppbmRleCBlYTFmNDc2MWMzLi42ZjkyMWVkNjFmIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsCisrKyBiL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwKQEAgLTEzLDcgKzEz LDcgQEAgdXNlIFRlc3Q6Ok1vcmU7CiAjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KIHN1YiB0 ZXN0X3N0cmVhbWluZwogewotCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIs ICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5v ZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUpID0gQF87CiAKIAkjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCiAJIyBUZXN0IDJQQyBQUkVQQVJFIC8gQ09NTUlUIFBSRVBBUkVELgpAQCAtMjMs MTYgKzIzLDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJIyBFeHBlY3QgYWxsIGRhdGEgaXMgcmVw bGljYXRlZCBvbiBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhlIGNvbW1pdC4KIAkjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLQkjIENoZWNrIHRoYXQgYSBiYWNrZ3JvdW5kIHdvcmtl ciBzdGFydHMgaWYgInN0cmVhbWluZyIgcGFyYW1ldGVyIGlzCi0JIyBzcGVjaWZpZWQgYXMgInBh cmFsbGVsIi4gIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMKLQkj IGFib3V0IHRoYXQsIHNvIHRlbXBvcmFyaWx5IGJ1bXAgdXAgdGhlIGxvZyB2ZXJib3NpdHkuCi0J aWYgKCRpc19wYXJhbGxlbCkKLQl7Ci0JCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdw b3N0Z3Jlc3FsLmNvbmYnLAotCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKLQkJJG5v ZGVfc3Vic2NyaWJlci0+cmVsb2FkOwotCX0KLQogCSMgY2hlY2sgdGhhdCAyUEMgZ2V0cyByZXBs aWNhdGVkIHRvIHN1YnNjcmliZXIKIAkjIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdo IHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgogCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKApAQCAtNDMsMTQgKzMzLDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJCURFTEVURSBGUk9N IHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKIAkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVz dF9wcmVwYXJlZF90YWInO30pOwogCi0JaWYgKCRpc19wYXJhbGxlbCkKLQl7Ci0JCSRub2RlX3N1 YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci9cW0FwcGx5IEJHVyAjXGQrXF0gc3RhcnRlZC8sIDAp OwotCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKLQkJ CSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOwotCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxv YWQ7Ci0JfQotCiAJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsK IAogCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJz Y3JpYmVyCkBAIC0zMzMsNyArMzE1LDcgQEAgbXkgJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3Vu dChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8MiksICdjaGVj ayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLXRlc3Rfc3RyZWFt aW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwordGVz dF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSk7 CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFRlc3QgdXNpbmcg c3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJwpAQCAtMzQyLDggKzMyNCwxMyBAQCBteSAkb2xkcGlk ID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIHBpZCBG Uk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFt ZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAotJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJl YW1pbmcgPSBwYXJhbGxlbCkiKTsKKyMgInN0cmVhbWluZyA9IHBhcmFsbGVsIiBkb2VzIG5vdCBz dXBwb3J0IG5vbi1pbW11dGFibGUgZnVuY3Rpb25zLCBzbyBjaGFuZ2UKKyMgdGhlIGZ1bmN0aW9u IGluIHRoZSBkZWZ1bHQgZXhwcmVzc2lvbiBvZiBjb2x1bW4gImMiLgorJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQUxURVIgVEFCTEUgdGVzdF90YWIgQUxU RVIgQ09MVU1OIGMgU0VUIERFRkFVTFQgdG9fdGltZXN0YW1wKDEyODQzNTIzMjMpOworQUxURVIg U1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKTsKK30pOwogCiAk bm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIHBp ZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9u YW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCkBAIC0zNTEsNyArMzM4 LDcgQEAgJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCiAgIG9y IGRpZQogICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0 ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKIAotdGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlz aGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7Cit0ZXN0X3N0cmVhbWluZygkbm9k ZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lKTsKIAogIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIwogIyBjaGVjayBhbGwgdGhlIGNsZWFudXAKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1pbmdfYXBwbHkucGwgYi9zcmMvdGVz dC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX2FwcGx5LnBsCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAuLjRkYzU3YzhhMjcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX2FwcGx5LnBsCkBAIC0wLDAgKzEsNTQ2 IEBACisjIENvcHlyaWdodCAoYykgMjAyMiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQg R3JvdXAKKworIyBUZXN0IHRoZSByZXN0cmljdGlvbnMgb2Ygc3RyZWFtaW5nIG1vZGUgInBhcmFs bGVsIiBpbiBsb2dpY2FsIHJlcGxpY2F0aW9uLgorIyBXaXRob3V0IHRoZXNlIHJlc3RyaWN0aW9u cywgdGhlIHN1YnNjcmliZXIncyBhcHBseSB3b3JrZXIgbWF5IGZhbGwgaW50byBhbgorIyBpbmZp bml0ZSB3YWl0IHdpdGhvdXQgdGhlIHVzZXIga25vd2luZy4KKyMKKyMgRm9yIG5vcm1hbCB0YWJs ZXMsIHdlIHVzZSBkZWFkbG9jay1wcm9kdWNpbmcgdGVzdCBjYXNlcyB0byBlbnN1cmUgdGhhdCBm dXR1cmUKKyMgbW9kaWZpY2F0aW9ucyBkbyBub3QgaW52YWxpZGF0ZSBjb25zdHJhaW50IGNoZWNr cy4KKyMKKyMgRm9yIHBhcnRpdGlvbmVkIHRhYmxlcywgd2UganVzdCB1c2UgdGVzdCBjYXNlcyB0 byBjb25maXJtIHRoYXQgdGhlIGNvbnN0cmFpbnQKKyMgY2hlY2tzIGFyZSBhcyBleHBlY3RlZC4K KwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKK215 ICRvZmZzZXQgPSAwOworCisjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQorbXkgJG5vZGVfcHVibGlz aGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKKyRub2Rl X3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7Ciskbm9kZV9w dWJsaXNoZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCSdsb2dpY2FsX2RlY29k aW5nX3dvcmtfbWVtID0gNjRrQicpOworJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKKworIyBDcmVh dGUgc3Vic2NyaWJlciBub2RlCitteSAkbm9kZV9zdWJzY3JpYmVyID0gUG9zdGdyZVNRTDo6VGVz dDo6Q2x1c3Rlci0+bmV3KCdzdWJzY3JpYmVyJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5pbml0Owor JG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7CisKKyMgU2V0dXAgc3RydWN0dXJlIG9uIHB1Ymxpc2hl cgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxF IHRlc3RfdGFiMSAoYSBpbnQpIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJDUkVBVEUgVEFCTEUgdGVzdF90YWIyIChhIGludCkiKTsKKyRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRp b25lZCAoYSBpbnQgcHJpbWFyeSBrZXksIGIgdmFyY2hhcikiKTsKKworIyBTZXR1cCBzdHJ1Y3R1 cmUgb24gc3Vic2NyaWJlcgorIyBXZSBuZWVkIHRvIHRlc3Qgbm9ybWFsIHRhYmxlIGFuZCBwYXJ0 aXRpb24gdGFibGUuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki Q1JFQVRFIFRBQkxFIHRlc3RfdGFiMSAoYSBpbnQpIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiMiAoYSBpbnQpIik7Cisk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRl c3RfdGFiX3BhcnRpdGlvbmVkIChhIGludCBwcmltYXJ5IGtleSwgYiB2YXJjaGFyKSBQQVJUSVRJ T04gQlkgUkFOR0UoYSkiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJDUkVBVEUgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIChMSUtFIHRlc3RfdGFiX3BhcnRp dGlvbmVkKSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFM VEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbmVkIEFUVEFDSCBQQVJUSVRJT04gdGVzdF90YWJf cGFydGl0aW9uIERFRkFVTFQiCispOworCisjIFNldHVwIGxvZ2ljYWwgcmVwbGljYXRpb24KK215 ICRwdWJsaXNoZXJfY29ubnN0ciA9ICRub2RlX3B1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1l PXBvc3RncmVzJzsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNS RUFURSBQVUJMSUNBVElPTiB0YXBfcHViX25vcm1hbCBGT1IgVEFCTEUgdGVzdF90YWIxLCB0ZXN0 X3RhYjIiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFU RSBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnRpdGlvbmVkIEZPUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0 aXRpb25lZCIpOworCitteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKyRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCAiCisJQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3Vi CisJQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5h bWUnCisJUFVCTElDQVRJT04gdGFwX3B1Yl9ub3JtYWwsIHRhcF9wdWJfcGFydGl0aW9uZWQKKwlX SVRIIChzdHJlYW1pbmcgPSBwYXJhbGxlbCwgY29weV9kYXRhID0gZmFsc2UpIik7CisKKyRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgSW50ZXJsZWF2ZSBh IHBhaXIgb2YgdHJhbnNhY3Rpb25zLCBlYWNoIGV4Y2VlZGluZyB0aGUgNjRrQiBsaW1pdC4KK215 ICRpbiAgPSAnJzsKK215ICRvdXQgPSAnJzsKKworbXkgJHRpbWVyID0gSVBDOjpSdW46OnRpbWVv dXQoJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQpOworCitteSAkaCA9 ICRub2RlX3B1Ymxpc2hlci0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIFwkaW4sIFwkb3V0 LCAkdGltZXIsCisJb25fZXJyb3Jfc3RvcCA9PiAwKTsKKworIyBJdCBpcyBub3QgYWxsb3dlZCB0 aGF0IHRoZSB1bmlxdWUgY29sdW1uIGluIHRoZSByZWxhdGlvbiBvbiB0aGUKKyMgc3Vic2NyaWJl ci1zaWRlIGlzIG5vdCB0aGUgdW5pcXVlIGNvbHVtbiBvbiB0aGUgcHVibGlzaGVyLXNpZGUuIENo ZWNrIHRoZQorIyBlcnJvciByZXBvcnRlZCBieSBiYWNrZ3JvdW5kIHdvcmtlciBpbiB0aGlzIGNh c2UuCisjIEZpcnN0IHdlIGNoZWNrIHRoZSB1bmlxdWUgaW5kZXggb24gbm9ybWFsIHRhYmxlLgor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBVTklRVUUg SU5ERVggaWR4X3RhYjEgb24gdGVzdF90YWIxKGEpIik7CisKKyRpbiAuPSBxeworQkVHSU47CitJ TlNFUlQgSU5UTyB0ZXN0X3RhYjEgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAw MCkgcyhpKTsKK307CiskaC0+cHVtcF9uYjsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfdGFiMSB2YWx1ZXMoMSkiKTsKKworJGluIC49 IHF7CitDT01NSVQ7CitccQorfTsKKyRoLT5maW5pc2g7CisKKyRub2RlX3N1YnNjcmliZXItPndh aXRfZm9yX2xvZygKKwlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0 YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYjEiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJh bWV0ZXIgc3RyZWFtaW5nPXBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIHRoZSB1bmlx dWUgaW5kZXggb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBJTkRFWCBpZHhfdGFiMSIpOworCiskbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCitteSAkcmVzdWx0ID0K KyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQo KikgRlJPTSB0ZXN0X3RhYjEiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDEpLCAnZGF0YSByZXBsaWNh dGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgaW5kZXgnKTsKKworIyBDbGVhbiB1cCB0 ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIxIik7Ciskbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjIFRoZW4gd2UgY2hlY2sgdGhlIHVu aXF1ZSBpbmRleCBvbiBwYXJ0aXRpb24gdGFibGUuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFVOSVFVRSBJTkRFWCB0ZXN0X3RhYl9iX3BhcnRpdGlv bl9pZHggT04gdGVzdF90YWJfcGFydGl0aW9uIChiKSIpOworCisjIENoZWNrIHRoZSBzdWJzY3Jp YmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dm aWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQg SU5UTyB0ZXN0X3RhYl9wYXJ0aXRpb25lZCBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSkiCispOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0 X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFy Z2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJfcGFydGl0aW9uZWQiIHVzaW5nIHN1YnNjcmlw dGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nPXBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKworIyBEcm9w IHRoZSB1bmlxdWUgaW5kZXggb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBJTkRFWCB0ZXN0X3RhYl9i X3BhcnRpdGlvbl9pZHgiKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKK2lz KCRyZXN1bHQsIHFxKDUwMDApLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIg ZHJvcHBpbmcgaW5kZXgnKTsKKworIyBUcmlnZ2VycyB3aGljaCBleGVjdXRlIG5vbi1pbW11dGFi bGUgZnVuY3Rpb24gYXJlIG5vdCBhbGxvd2VkIG9uIHRoZQorIyBzdWJzY3JpYmVyIHNpZGUuIENo ZWNrIHRoZSBlcnJvciByZXBvcnRlZCBieSBiYWNrZ3JvdW5kIHdvcmtlciBpbiB0aGlzIGNhc2Uu CisjIEZpcnN0IHdlIGNoZWNrIHRoZSB0cmlnZ2VyIGZ1bmN0aW9uIG9uIG5vcm1hbCB0YWJsZS4K KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBVTklRVUUg SU5ERVggaWR4X3RhYjIgb24gdGVzdF90YWIyKGEpIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFVOSVFVRSBJTkRFWCBpZHhfdGFiMiBvbiB0ZXN0 X3RhYjIoYSkiKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jlcycs IHFxeworQ1JFQVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY190YWIxKCkgUkVUVVJOUyBUUklHR0VS IEFTIFwkXCQKKyAgQkVHSU4KKyAgICBJTlNFUlQgSU5UTyBwdWJsaWMudGVzdF90YWIyIFZBTFVF UyAoTkVXLiopOworICAgIFJFVFVSTiBORVc7CisgIEVORAorXCRcJCBsYW5ndWFnZSBwbHBnc3Fs OworQ1JFQVRFIFRSSUdHRVIgdHJpX3RhYjEKK0JFRk9SRSBJTlNFUlQgT04gcHVibGljLnRlc3Rf dGFiMQorRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuY190YWIxKCk7 CitBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgRU5BQkxFIFJFUExJQ0EgVFJJR0dFUiB0cmlfdGFiMTsK K30pOworCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQg PSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskaW4gLj0gcXsKK0JFR0lOOworSU5T RVJUIElOVE8gdGVzdF90YWIxIFZBTFVFUyg1MDAxKTsKK0lOU0VSVCBJTlRPIHRlc3RfdGFiMiBT RUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpOworfTsKKyRoLT5wdW1w X25iOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElO VE8gdGVzdF90YWIxIFZBTFVFUyg1MDAxKSIpOworCiskaW4gLj0gcXsKK0NPTU1JVDsKK1xxCit9 OworJGgtPmZpbmlzaDsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VS Uk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVi bGljLnRlc3RfdGFiMSIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmc9cGFy YWxsZWwvLAorCSRvZmZzZXQpOworCisjIERyb3AgdGhlIHRyaWdnZXIgb24gdGhlIHN1YnNjcmli ZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJEUk9QIFRSSUdHRVIgdHJpX3RhYjEgT04gcHVibGljLnRlc3RfdGFiMSIpOworCiskbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAg JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikg RlJPTSB0ZXN0X3RhYjEiKTsKK2lzKCRyZXN1bHQsIHFxKDIpLCAnZGF0YSByZXBsaWNhdGVkIHRv IHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgdHJpZ2dlcicpOworCisjIENsZWFuIHVwIHRlc3Qg ZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgK KwkncG9zdGdyZXMnLCBxcXsKK0RST1AgZnVuY3Rpb24gdHJpZ2dlcl9mdW5jX3RhYjE7CitEUk9Q IElOREVYIGlkeF90YWIyOworfSk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9z dGdyZXMnLCBxcXsKK0RST1AgSU5ERVggaWR4X3RhYjI7CitUUlVOQ0FURSBUQUJMRSB0ZXN0X3Rh YjE7CitUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjI7Cit9KTsKKyRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgVGhlbiB3ZSBjaGVjayB0aGUgdHJpZ2dlciBm dW5jdGlvbiBvbiBwYXJ0aXRpb24gdGFibGUuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo CisJJ3Bvc3RncmVzJywgcXF7CitDUkVBVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jKCkgUkVUVVJO UyBUUklHR0VSIEFTIFwkXCQKKyAgQkVHSU4KKyAgICBSRVRVUk4gTlVMTDsKKyAgRU5ECitcJFwk IGxhbmd1YWdlIHBscGdzcWw7CitDUkVBVEUgVFJJR0dFUiBpbnNlcnRfdHJpZworQkVGT1JFIElO U0VSVCBPTiB0ZXN0X3RhYl9wYXJ0aXRpb24KK0ZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVS RSB0cmlnZ2VyX2Z1bmMoKTsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBFTkFCTEUg UkVQTElDQSBUUklHR0VSIGluc2VydF90cmlnOworfSk7CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmli ZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2Zp bGU7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJP TSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9s b2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJl bGF0aW9uICJwdWJsaWMudGVzdF90YWJfcGFydGl0aW9uZWQiIHVzaW5nIHN1YnNjcmlwdGlvbiBw YXJhbWV0ZXIgc3RyZWFtaW5nPXBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIHRoZSB0 cmlnZ2VyIG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiRFJPUCBUUklHR0VSIGluc2VydF90cmlnIE9OIHRl c3RfdGFiX3BhcnRpdGlvbiIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOwor aXMoJHJlc3VsdCwgcXEoMCksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBk cm9wcGluZyB0cmlnZ2VyJyk7CisKKyMgSXQgaXMgbm90IGFsbG93ZWQgdGhhdCBjb2x1bW4gZGVm YXVsdCB2YWx1ZSBleHByZXNzaW9uIGNvbnRhaW5zIGEKKyMgbm9uLWltbXV0YWJsZSBmdW5jdGlv biBvbiB0aGUgc3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkKKyMg YmFja2dyb3VuZCB3b3JrZXIgaW4gdGhpcyBjYXNlLgorIyBGaXJzdCB3ZSBjaGVjayB0aGUgY29s dW1uIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbiBvbiBub3JtYWwgdGFibGUuCiskbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGVzdF90YWIyIFZBTFVF UygxKSIpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7 CitDUkVBVEUgRlVOQ1RJT04gZnVuY19jb3VudF90YWIyKCkgUkVUVVJOUyBJTlQgQVMgXCRcJAor ICBCRUdJTgorICAgIFJFVFVSTiAoU0VMRUNUIGNvdW50KCopIEZST00gcHVibGljLnRlc3RfdGFi Mik7CisgIEVORAorXCRcJCBsYW5ndWFnZSBwbHBnc3FsOworQUxURVIgVEFCTEUgdGVzdF90YWIx IEFERCBDT0xVTU4gYiBpbnQgREVGQVVMVCBmdW5jX2NvdW50X3RhYjIoKTsKK30pOworCisjIENo ZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9z dWJzY3JpYmVyLT5sb2dmaWxlOworCiskaW4gLj0gcXsKK0JFR0lOOworVFJVTkNBVEUgdGVzdF90 YWIyOworSU5TRVJUIElOVE8gdGVzdF90YWIxIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDUwMDApIHMoaSk7Cit9OworJGgtPnB1bXBfbmI7CisKKyRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0ZXN0X3RhYjEoYSkgVkFMVUVTKDEpIik7 CisKKyRpbiAuPSBxeworQ09NTUlUOworXHEKK307CiskaC0+ZmluaXNoOworCiskbm9kZV9zdWJz Y3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCBy ZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWIxIiB1c2luZyBzdWJzY3Jp cHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZz1wYXJhbGxlbC8sCisJJG9mZnNldCk7CisKKyMgRHJv cCBkZWZhdWx0IHZhbHVlIG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWIx IEFMVEVSIENPTFVNTiBiIERST1AgREVGQVVMVCIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjEiKTsK K2lzKCRyZXN1bHQsIHFxKDUwMDEpLAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBh ZnRlciBkcm9wcGluZyBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24nKTsKKworIyBDbGVhbiB1cCB0 ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIkFMVEVSIFRBQkxFIHRlc3RfdGFiMSBEUk9QIENPTFVNTiBiIik7Cisk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUgVEFCTEUgdGVz dF90YWIxIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNB VEUgVEFCTEUgdGVzdF90YWIyIik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOworCisjIFRoZW4gd2UgY2hlY2sgdGhlIGNvbHVtbiBkZWZhdWx0IHZhbHVlIGV4 cHJlc3Npb24gb24gcGFydGl0aW9uIHRhYmxlLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBBTFRFUiBDT0xV TU4gYiBTRVQgREVGQVVMVCByYW5kb20oKSIpOworCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxv ZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwor Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0 ZXN0X3RhYl9wYXJ0aXRpb25lZCBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDUwMDApIHMoaSkiCispOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9s b2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJl bGF0aW9uICJwdWJsaWMudGVzdF90YWJfcGFydGl0aW9uZWQiIHVzaW5nIHN1YnNjcmlwdGlvbiBw YXJhbWV0ZXIgc3RyZWFtaW5nPXBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIGRlZmF1 bHQgdmFsdWUgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRp b24gQUxURVIgQ09MVU1OIGIgRFJPUCBERUZBVUxUIik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3Bh cnRpdGlvbmVkIik7CitpcygkcmVzdWx0LCBxcSg1MDAwKSwKKwknZGF0YSByZXBsaWNhdGVkIHRv IHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uJyk7CisK KyMgSXQgaXMgbm90IGFsbG93ZWQgdGhhdCBkb21haW4gY29uc3RyYWludCBleHByZXNzaW9uIGNv bnRhaW5zIGEgbm9uLWltbXV0YWJsZQorIyBmdW5jdGlvbiBvbiB0aGUgc3Vic2NyaWJlciBzaWRl LiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkgYmFja2dyb3VuZAorIyB3b3JrZXIgaW4gdGhp cyBjYXNlLgorIyBCZWNhdXNlIHRoZSBjb2x1bW4gdHlwZSBvZiB0aGUgcGFydGl0aW9uIHRhYmxl IG11c3QgYmUgdGhlIHNhbWUgYXMgaXRzIHBhcmVudAorIyB0YWJsZSwgb25seSB0ZXN0IG5vcm1h bCB0YWJsZSBoZXJlLgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklO U0VSVCBJTlRPIHRlc3RfdGFiMiBWQUxVRVMoMSkiKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitDUkVBVEUgRE9NQUlOIHRtcF9kb21haW4gQVMgaW50 IENIRUNLIChWQUxVRSA+IC0xKTsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiMSBBTFRFUiBDT0xVTU4g YSBUWVBFIHRtcF9kb21haW47Cit9KTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAor CSdwb3N0Z3JlcycsIHFxeworQ1JFQVRFIERPTUFJTiB0bXBfZG9tYWluIEFTIElOVCBDSEVDSyAo VkFMVUUgPj0gZnVuY19jb3VudF90YWIyKCkpOworQUxURVIgVEFCTEUgdGVzdF90YWIxIEFMVEVS IENPTFVNTiBhIFRZUEUgdG1wX2RvbWFpbjsKK30pOworCisjIENoZWNrIHRoZSBzdWJzY3JpYmVy IGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxl OworCiskaW4gLj0gcXsKK0JFR0lOOworVFJVTkNBVEUgdGVzdF90YWIyOworSU5TRVJUIElOVE8g dGVzdF90YWIxIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7Cit9 OworJGgtPnB1bXBfbmI7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJJTlNFUlQgSU5UTyB0ZXN0X3RhYjEoYSkgVkFMVUVTKDEpIik7CisKKyRpbiAuPSBxeworQ09N TUlUOworXHEKK307CiskaC0+ZmluaXNoOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9s b2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJl bGF0aW9uICJwdWJsaWMudGVzdF90YWIxIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0 cmVhbWluZz1wYXJhbGxlbC8sCisJJG9mZnNldCk7CisKKyMgRHJvcCBkb21haW4gY29uc3RyYWlu dCBleHByZXNzaW9uIG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWIxIEFM VEVSIENPTFVNTiBhIFRZUEUgaW50Iik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiMSIpOworaXMoJHJl c3VsdCwgcXEoNTAwMSksCisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRy b3BwaW5nIGRvbWFpbiBjb25zdHJhaW50IGV4cHJlc3Npb24nCispOworCisjIENsZWFuIHVwIHRl c3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjEiKTsKKyRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjIiKTsKKyRu b2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgSXQgaXMgbm90 IGFsbG93ZWQgdGhhdCBjb25zdHJhaW50IGV4cHJlc3Npb24gY29udGFpbnMgYSBub24taW1tdXRh YmxlIGZ1bmN0aW9uCisjIG9uIHRoZSBzdWJzY3JpYmVyIHNpZGUuIENoZWNrIHRoZSBlcnJvciBy ZXBvcnRlZCBieSBiYWNrZ3JvdW5kIHdvcmtlciBpbiB0aGlzCisjIGNhc2UuCisjIEZpcnN0IHdl IGNoZWNrIHRoZSBjb25zdHJhaW50IGV4cHJlc3Npb24gb24gbm9ybWFsIHRhYmxlLgorJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfdGFiMiBW QUxVRVMoMSkiKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jlcycs IHFxeworQUxURVIgVEFCTEUgdGVzdF90YWIxIEFERCBDT05TVFJBSU5UIGNvbnN0X3RhYjEgQ0hF Q0soYSA+PSBmdW5jX2NvdW50X3RhYjIoKSk7Cit9KTsKKworIyBDaGVjayB0aGUgc3Vic2NyaWJl ciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmls ZTsKKworJGluIC49IHF7CitCRUdJTjsKK1RSVU5DQVRFIHRlc3RfdGFiMjsKK0lOU0VSVCBJTlRP IHRlc3RfdGFiMSBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpOwor fTsKKyRoLT5wdW1wX25iOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiSU5TRVJUIElOVE8gdGVzdF90YWIxKGEpIFZBTFVFUygxKSIpOworCiskaW4gLj0gcXsKK0NP TU1JVDsKK1xxCit9OworJGgtPmZpbmlzaDsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3Jf bG9nKAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCBy ZWxhdGlvbiAicHVibGljLnRlc3RfdGFiMSIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBz dHJlYW1pbmc9cGFyYWxsZWwvLAorCSRvZmZzZXQpOworCisjIERyb3AgY29uc3RyYWludCBvbiB0 aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiMSBEUk9QIENPTlNUUkFJTlQgY29u c3RfdGFiMSIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjEiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDEp LAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBjb25zdHJh aW50IGV4cHJlc3Npb24nKTsKKworIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJv bm1lbnQuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUg VEFCTEUgdGVzdF90YWIxIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIyIik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOworCisjIFRoZW4gd2UgY2hlY2sgdGhlIGNvbnN0cmFpbnQgZXhw cmVzc2lvbiBvbiBwYXJ0aXRpb24gdGFibGUuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo CisJJ3Bvc3RncmVzJywgcXF7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gQUREIENP TlNUUkFJTlQgdGVzdF90YWJfY29uIGNoZWNrIChhID4gcmFuZG9tKCkpOworfSk7CisKKyMgQ2hl Y2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1 YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOworCiskbm9kZV9zdWJzY3Jp YmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBs aWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJfcGFydGl0aW9uZWQiIHVzaW5n IHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nPXBhcmFsbGVsLywKKwkkb2Zmc2V0KTsK KworIyBEcm9wIGNvbnN0cmFpbnQgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0 X3RhYl9wYXJ0aXRpb24gRFJPUCBDT05TVFJBSU5UIHRlc3RfdGFiX2NvbiIpOworCiskbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJP TSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOworaXMoJHJlc3VsdCwgcXEoMCksCisJJ2RhdGEgcmVw bGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGNvbnN0cmFpbnQgZXhwcmVzc2lv bicpOworCisjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQgZm9yZWlnbiBrZXkgb24gdGhlIHN1YnNj cmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yCisjIHJlcG9ydGVkIGJ5IGJhY2tncm91bmQgd29y a2VyIGluIHRoaXMgY2FzZS4KKyMgRmlyc3Qgd2UgY2hlY2sgdGhlIGZvcmVpZ24ga2V5IG9uIG5v cm1hbCB0YWJsZS4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFx eworQ1JFQVRFIFRBQkxFIHRhYl9ub3B1YmxpYyhhIGludCk7CitBTFRFUiBUQUJMRSB0ZXN0X3Rh YjIgQUREIFBSSU1BUlkgS0VZIChhKTsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiMiBSRVBMSUNBIElE RU5USVRZIEZVTEw7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYjIgVkFMVUVTKDEpOworfSk7Ciskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkFMVEVSIFRBQkxFIHRlc3RfdGFi MiBBREQgUFJJTUFSWSBLRVkgKGEpOyIpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo CisJJ3Bvc3RncmVzJywgcXF7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgQUREIENPTlNUUkFJTlQg dGVzdF90YWIxZmsgRk9SRUlHTiBLRVkoYSkgUkVGRVJFTkNFUyB0ZXN0X3RhYjIoYSk7CitTRUxF Q1QgJ0FMVEVSIFRBQkxFIHRlc3RfdGFiMSBFTkFCTEUgUkVQTElDQSBUUklHR0VSICInIHx8IHRn bmFtZSB8fCAnIicgRlJPTSBwZ190cmlnZ2VyIFdIRVJFIHRncmVsaWQgPSAndGVzdF90YWIxJzo6 cmVnY2xhc3M6Om9pZCBcXGdleGVjCit9KTsKKworIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cg ZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKwor JGluIC49IHF7CitCRUdJTjsKK0lOU0VSVCBJTlRPIHRlc3RfdGFiMShhKSBWQUxVRVMoMSk7CitJ TlNFUlQgSU5UTyB0YWJfbm9wdWJsaWMgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg NTAwMCkgcyhpKTsKK307CiskaC0+cHVtcF9uYjsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiMiIpOworCiskaW4gLj0gcXsKK0NP TU1JVDsKK1xxCit9OworJGgtPmZpbmlzaDsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3Jf bG9nKAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCBy ZWxhdGlvbiAicHVibGljLnRlc3RfdGFiMSIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBz dHJlYW1pbmc9cGFyYWxsZWwvLAorCSRvZmZzZXQpOworCisjIERyb3AgdGhlIGZvcmVpZ24ga2V5 IGNvbnN0cmFpbnQgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQUxURVIgVEFCTEUgdGVzdF90YWIxIERST1Ag Q09OU1RSQUlOVCB0ZXN0X3RhYjFmayIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjEiKTsKK2lzKCRy ZXN1bHQsIHFxKDEpLAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9w cGluZyB0aGUgZm9yZWlnbiBrZXknKTsKKworIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUg ZW52aXJvbm1lbnQuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJV TkNBVEUgVEFCTEUgdGVzdF90YWIxIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIyIik7Ciskbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjIFRoZW4gd2UgY2hlY2sgdGhlIGZvcmVpZ24g a2V5IG9uIHBhcnRpdGlvbiB0YWJsZS4KKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywg cXF7CitDUkVBVEUgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uX2YgKGEgaW50IHByaW1hcnkga2V5 KTsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBBREQgQ09OU1RSQUlOVCB0ZXN0X3Rh Yl9wYXRpdGlvbl9mayBGT1JFSUdOIEtFWShhKSBSRUZFUkVOQ0VTIHRlc3RfdGFiX3BhcnRpdGlv bl9mKGEpOworfSk7CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgor JG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRlc3RfdGFiX3BhcnRpdGlv bmVkIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkg cyhpKSIKKyk7CisKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9FUlJPUjog KCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50 ZXN0X3RhYl9wYXJ0aXRpb25lZCIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1p bmc9cGFyYWxsZWwvLAorCSRvZmZzZXQpOworCisjIERyb3AgdGhlIGZvcmVpZ24ga2V5IGNvbnN0 cmFpbnQgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24g RFJPUCBDT05TVFJBSU5UIHRlc3RfdGFiX3BhdGl0aW9uX2ZrIik7CisKKyRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3Rf dGFiX3BhcnRpdGlvbmVkIik7CitpcygkcmVzdWx0LCBxcSg1MDAwKSwKKwknZGF0YSByZXBsaWNh dGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgdGhlIGZvcmVpZ24ga2V5Jyk7CisKKyRu b2RlX3N1YnNjcmliZXItPnN0b3A7Ciskbm9kZV9wdWJsaXNoZXItPnN0b3A7CisKK2RvbmVfdGVz dGluZygpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9z cmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCBiMTM5NGI0Zjc5Li5mNDEwN2Jk ZTM1IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9z cmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMTg5MSw2ICsxODkxLDcgQEAgUGFn ZVhMb2dSZWNQdHIKIFBhZ2V0YWJsZUVudHJ5CiBQYWlycwogUGFyYWxsZWxBcHBlbmRTdGF0ZQor UGFyYWxsZWxBcHBseVNhZmV0eQogUGFyYWxsZWxCaXRtYXBIZWFwU3RhdGUKIFBhcmFsbGVsQmxv Y2tUYWJsZVNjYW5EZXNjCiBQYXJhbGxlbEJsb2NrVGFibGVTY2FuV29ya2VyCi0tIAoyLjIzLjAu d2luZG93cy4xCgo= --_005_OS3PR01MB6275D64BE7726B0221B15F389E9F9OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v20-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch" Content-Description: v20-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch Content-Disposition: attachment; filename="v20-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch"; size=31626; creation-date="Thu, 04 Aug 2022 06:35:00 GMT"; modification-date="Thu, 04 Aug 2022 06:35:45 GMT" Content-Transfer-Encoding: base64 RnJvbSA4ODgzMjY5MjYwM2ZiNDE2NGY3ZWRmZmM2YjFjOTJhZWJhNzc5MDI0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB3YW5ndyA8d2FuZ3cuZm5zdEBmdWppdHN1LmNvbT4KRGF0ZTog V2VkLCAxNSBKdW4gMjAyMiAxMTowMjowOCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjIwIDQvNF0g UmV0cnkgdG8gYXBwbHkgc3RyZWFtaW5nIHhhY3Qgb25seSBpbiBhcHBseSB3b3JrZXIKCldoZW4g dGhlIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgaXMgc2V0IHN0cmVhbWluZz1wYXJhbGxlbCwgdGhl IGxvZ2ljIHRyaWVzIHRvCmFwcGx5IHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdXNpbmcgYW4g YXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuIElmIHRoaXMKZmFpbHMgdGhlIGJhY2tncm91bmQgd29y a2VyIGV4aXRzIHdpdGggYW4gZXJyb3IuCgpJbiB0aGlzIGNhc2UsIHJldHJ5IGFwcGx5aW5nIHRo ZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdXNpbmcgdGhlIG5vcm1hbApzdHJlYW1pbmc9b24gbW9k ZS4gVGhpcyBpcyBkb25lIHRvIGF2b2lkIGdldHRpbmcgY2F1Z2h0IGluIGEgbG9vcCBvZiB0aGUg c2FtZQpyZXRyeSBlcnJvcnMuCgpBIG5ldyBmbGFnIGZpZWxkICJzdWJyZXRyeSIgaGFzIGJlZW4g aW50cm9kdWNlZCB0byBjYXRhbG9nICJwZ19zdWJzY3JpcHRpb24iLgpJZiB0aGUgc3Vic2NyaWJl ciBleGl0cyB3aXRoIGFuIGVycm9yLCB0aGlzIGZsYWcgd2lsbCBiZSBzZXQgdHJ1ZSwgYW5kCndo ZW5ldmVyIHRoZSB0cmFuc2FjdGlvbiBpcyBhcHBsaWVkIHN1Y2Nlc3NmdWxseSwgdGhpcyBmbGFn IGlzIHJlc2V0IGZhbHNlLgpOb3csIHdoZW4gZGVjaWRpbmcgaG93IHRvIGFwcGx5IGEgc3RyZWFt aW5nIHRyYW5zYWN0aW9uLCB0aGUgbG9naWMgY2FuIGtub3cgaWYKdGhpcyB0cmFuc2FjdGlvbiBo YXMgcHJldmlvdXNseSBmYWlsZWQgb3Igbm90IChieSBjaGVja2luZyB0aGUgInN1YnJldHJ5Igpm aWVsZCkuCi0tLQogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgICAg IHwgICA5ICsKIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sICAgICB8 ICAgNSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jICAgICAgICAgfCAg IDEgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAgICAgICAgIHwgICAy ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgICAgICAgfCAgIDEg KwogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dvcmtlci5jICAgICAgIHwgIDE2ICst CiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAgfCAxNzMgKysr KysrKysrKysrKy0tLS0tCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAg ICAgICAgfCAgIDUgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggICAg ICAgICB8ICAgNCArCiAuLi4vc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbWluZ19hcHBseS5wbCAg ICAgfCAxNjggKysrKysrKysrKystLS0tLS0KIDEwIGZpbGVzIGNoYW5nZWQsIDI3MiBpbnNlcnRp b25zKCspLCAxMTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFs b2dzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAppbmRleCA0OWNmOTQyMDM2Li43 ZjQ5NThiOThlIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtNzkwOCw2ICs3OTA4LDE1IEBAIFNDUkFNLVNI QS0yNTYkPHJlcGxhY2VhYmxlPiZsdDtpdGVyYXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJsZT46 PHJlcGxhY2VhYmxlPiZsCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAg ICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSBy b2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnN1YnJldHJ5PC9z dHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJh PgorICAgICAgIFRydWUgaWYgdGhlIHByZXZpb3VzIGFwcGx5IGNoYW5nZSBmYWlsZWQsIG5lY2Vz c2l0YXRpbmcgYSByZXRyeQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCiAg ICAgIDxyb3c+CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEg cm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgogICAgICAgIDxzdHJ1Y3RmaWVsZD5zdWJjb25uaW5m bzwvc3RydWN0ZmllbGQ+IDx0eXBlPnRleHQ8L3R5cGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRl X3N1YnNjcmlwdGlvbi5zZ21sCmluZGV4IDhlMWI3YWNhZmIuLmVhY2E2MDMwNmEgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCkBAIC0yNDUsNiArMjQ1LDExIEBA IENSRUFURSBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN1YnNj cmlwdGlvbl9uYW1lPC9yZXBsYWNlYWJsCiAgICAgICAgICAgYWxzbyBiZSB0aGUgdW5pcXVlIGNv bHVtbiBvbiB0aGUgcHVibGlzaGVyLXNpZGU7IDIpIHRoZXJlIGNhbm5vdCBiZQogICAgICAgICAg IGFueSBub24taW1tdXRhYmxlIGZ1bmN0aW9ucyB1c2VkIGJ5IHRoZSBzdWJzY3JpYmVyLXNpZGUg cmVwbGljYXRlZAogICAgICAgICAgIHRhYmxlLgorICAgICAgICAgIFdoZW4gYXBwbHlpbmcgYSBz dHJlYW1pbmcgdHJhbnNhY3Rpb24sIGlmIGVpdGhlciByZXF1aXJlbWVudCBpcyBub3QKKyAgICAg ICAgICBtZXQsIHRoZSBiYWNrZ3JvdW5kIHdvcmtlciB3aWxsIGV4aXQgd2l0aCBhbiBlcnJvci4K KyAgICAgICAgICBUaGUgPGxpdGVyYWw+cGFyYWxsZWw8L2xpdGVyYWw+IG1vZGUgaXMgZGlzcmVn YXJkZWQgd2hlbiByZXRyeWluZzsKKyAgICAgICAgICBpbnN0ZWFkIHRoZSB0cmFuc2FjdGlvbiB3 aWxsIGJlIGFwcGxpZWQgdXNpbmcgPGxpdGVyYWw+b248L2xpdGVyYWw+CisgICAgICAgICAgbW9k ZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L3Zhcmxp c3RlbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9u LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCmluZGV4IGE1MDZmYzNl YzguLjcyM2IxNDFjNzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2Ny aXB0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYwpAQCAt NzEsNiArNzEsNyBAQCBHZXRTdWJzY3JpcHRpb24oT2lkIHN1YmlkLCBib29sIG1pc3Npbmdfb2sp CiAJc3ViLT5zdHJlYW0gPSBzdWJmb3JtLT5zdWJzdHJlYW07CiAJc3ViLT50d29waGFzZXN0YXRl ID0gc3ViZm9ybS0+c3VidHdvcGhhc2VzdGF0ZTsKIAlzdWItPmRpc2FibGVvbmVyciA9IHN1YmZv cm0tPnN1YmRpc2FibGVvbmVycjsKKwlzdWItPnJldHJ5ID0gc3ViZm9ybS0+c3VicmV0cnk7CiAK IAkvKiBHZXQgY29ubmluZm8gKi8KIAlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihTVUJTQ1JJUFRJ T05PSUQsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwg Yi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKaW5kZXggZjM2OWIxZmMxNC4u ODI4NGNkZDAwYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Mu c3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAtMTI5OSw3 ICsxMjk5LDcgQEAgUkVWT0tFIEFMTCBPTiBwZ19yZXBsaWNhdGlvbl9vcmlnaW5fc3RhdHVzIEZS T00gcHVibGljOwogUkVWT0tFIEFMTCBPTiBwZ19zdWJzY3JpcHRpb24gRlJPTSBwdWJsaWM7CiBH UkFOVCBTRUxFQ1QgKG9pZCwgc3ViZGJpZCwgc3Vic2tpcGxzbiwgc3VibmFtZSwgc3Vib3duZXIs IHN1YmVuYWJsZWQsCiAgICAgICAgICAgICAgIHN1YmJpbmFyeSwgc3Vic3RyZWFtLCBzdWJ0d29w aGFzZXN0YXRlLCBzdWJkaXNhYmxlb25lcnIsCi0gICAgICAgICAgICAgIHN1YnNsb3RuYW1lLCBz dWJzeW5jY29tbWl0LCBzdWJwdWJsaWNhdGlvbnMsIHN1Ym9yaWdpbikKKyAgICAgICAgICAgICAg c3VicmV0cnksIHN1YnNsb3RuYW1lLCBzdWJzeW5jY29tbWl0LCBzdWJwdWJsaWNhdGlvbnMsIHN1 Ym9yaWdpbikKICAgICBPTiBwZ19zdWJzY3JpcHRpb24gVE8gcHVibGljOwogCiBDUkVBVEUgVklF VyBwZ19zdGF0X3N1YnNjcmlwdGlvbl9zdGF0cyBBUwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2Ny aXB0aW9uY21kcy5jCmluZGV4IDc4YjdlZTc1NDMuLmEwMjM3NTI0MmQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKQEAgLTY4OSw2ICs2ODksNyBAQCBDcmVhdGVTdWJz Y3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10 LAogCQkJCQkgTE9HSUNBTFJFUF9UV09QSEFTRV9TVEFURV9QRU5ESU5HIDoKIAkJCQkJIExPR0lD QUxSRVBfVFdPUEhBU0VfU1RBVEVfRElTQUJMRUQpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlw dGlvbl9zdWJkaXNhYmxlb25lcnIgLSAxXSA9IEJvb2xHZXREYXR1bShvcHRzLmRpc2FibGVvbmVy cik7CisJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnJldHJ5IC0gMV0gPSBCb29sR2V0 RGF0dW0oZmFsc2UpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJjb25uaW5mbyAt IDFdID0KIAkJQ1N0cmluZ0dldFRleHREYXR1bShjb25uaW5mbyk7CiAJaWYgKG9wdHMuc2xvdF9u YW1lKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseWJn d29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3b3JrZXIu YwppbmRleCA5ZDM4MjE5YjAyLi44ZTc3MzMxNmI2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3b3JrZXIuYwpAQCAtMTA2LDYgKzEwNiwxOCBAQCBhcHBs eV9iZ3dvcmtlcl9jYW5fc3RhcnQoVHJhbnNhY3Rpb25JZCB4aWQpCiAJaWYgKCFYTG9nUmVjUHRy SXNJbnZhbGlkKE15U3Vic2NyaXB0aW9uLT5za2lwbHNuKSkKIAkJcmV0dXJuIGZhbHNlOwogCisJ LyoKKwkgKiBEb24ndCB1c2UgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXJzIGZvciByZXRyaWVzLCBi ZWNhdXNlIGl0IGlzIHBvc3NpYmxlCisJICogdGhhdCB0aGUgbGFzdCB0aW1lIHdlIHRyaWVkIHRv IGFwcGx5IGEgdHJhbnNhY3Rpb24gdXNpbmcgYW4gYXBwbHkKKwkgKiBiYWNrZ3JvdW5kIHdvcmtl ciB0aGUgY2hlY2tzIGZhaWxlZCAoc2VlIGZ1bmN0aW9uCisJICogYXBwbHlfYmd3b3JrZXJfcmVs YXRpb25fY2hlY2spLgorCSAqLworCWlmIChNeVN1YnNjcmlwdGlvbi0+cmV0cnkpCisJeworCQll bG9nKERFQlVHMSwgImFwcGx5IGJhY2tncm91bmQgd29ya2VycyBhcmUgbm90IHVzZWQgZm9yIHJl dHJpZXMiKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKwogCS8qCiAJICogRm9yIHN0cmVhbWluZyB0 cmFuc2FjdGlvbnMgdGhhdCBhcmUgYmVpbmcgYXBwbGllZCBpbiBhcHBseSBiYWNrZ3JvdW5kCiAJ ICogd29ya2VyLCB3ZSBjYW5ub3QgZGVjaWRlIHdoZXRoZXIgdG8gYXBwbHkgdGhlIGNoYW5nZSBm b3IgYSByZWxhdGlvbgpAQCAtODUwLDcgKzg2Miw1IEBAIGFwcGx5X2Jnd29ya2VyX3JlbGF0aW9u X2NoZWNrKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsKQogCQkJCQlyZWwtPnJlbW90ZXJlbC5u c3BuYW1lLCByZWwtPnJlbW90ZXJlbC5yZWxuYW1lKSwKIAkJCSBlcnJkZXRhaWwoIlRoZSB1bmlx dWUgY29sdW1uIG9uIHN1YnNjcmliZXIgaXMgbm90IHRoZSB1bmlxdWUgIgogCQkJCQkgICAiY29s dW1uIG9uIHB1Ymxpc2hlciBvciB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgIgotCQkJCQkgICAibm9u LWltbXV0YWJsZSBmdW5jdGlvbi4iKSwKLQkJCSBlcnJoaW50KCJQbGVhc2UgY2hhbmdlIHRvIHVz ZSBzdWJzY3JpcHRpb24gcGFyYW1ldGVyICIKLQkJCQkJICJzdHJlYW1pbmc9b24uIikpKTsKKwkJ CQkJICAgIm5vbi1pbW11dGFibGUgZnVuY3Rpb24uIikpKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IDM3NTM1Njg3ZWUuLjUzYmIyNjkxZWIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMzQyLDcgKzM0Miw3IEBA IHN0YXRpYyB2b2lkIHN0b3JlX2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIgcmVtb3RlX2xzbik7 CiAKIHN0YXRpYyB2b2lkIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCk7CiAKLXN0YXRp YyB2b2lkIERpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KHZvaWQpOworc3RhdGljIHZvaWQgRGlz YWJsZVN1YnNjcmlwdGlvbk9uRXJyb3Iodm9pZCk7CiAKIHN0YXRpYyB2b2lkIGFwcGx5X2hhbmRs ZV9jb21taXRfaW50ZXJuYWwoTG9naWNhbFJlcENvbW1pdERhdGEgKmNvbW1pdF9kYXRhKTsKIHN0 YXRpYyB2b2lkIGFwcGx5X2hhbmRsZV9pbnNlcnRfaW50ZXJuYWwoQXBwbHlFeGVjdXRpb25EYXRh ICplZGF0YSwKQEAgLTM3OSw2ICszNzksOCBAQCBzdGF0aWMgdm9pZCBjbGVhcl9zdWJzY3JpcHRp b25fc2tpcF9sc24oWExvZ1JlY1B0ciBmaW5pc2hfbHNuKTsKIHN0YXRpYyBpbmxpbmUgdm9pZCBz ZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRy IGxzbik7CiBzdGF0aWMgaW5saW5lIHZvaWQgcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZv KHZvaWQpOwogCitzdGF0aWMgdm9pZCBzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGJvb2wgcmV0cnkp OworCiAvKgogICogU2hvdWxkIHRoaXMgd29ya2VyIGFwcGx5IGNoYW5nZXMgZm9yIGdpdmVuIHJl bGF0aW9uLgogICoKQEAgLTkwNSw2ICs5MDcsOSBAQCBhcHBseV9oYW5kbGVfY29tbWl0KFN0cmlu Z0luZm8gcykKIAogCWFwcGx5X2hhbmRsZV9jb21taXRfaW50ZXJuYWwoJmNvbW1pdF9kYXRhKTsK IAorCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCXNldF9zdWJzY3JpcHRpb25fcmV0cnko ZmFsc2UpOworCiAJLyogQ2hlY2sgdGhlIHN0YXR1cyBvZiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtl ciBpZiBhbnkuICovCiAJYXBwbHlfYmd3b3JrZXJfY2hlY2tfc3RhdHVzKCk7CiAKQEAgLTEwMTYs NiArMTAyMSw5IEBAIGFwcGx5X2hhbmRsZV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAogCWluX3Jl bW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogCisJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICov CisJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CisKIAkvKiBDaGVjayB0aGUgc3RhdHVz IG9mIGFwcGx5IGJhY2tncm91bmQgd29ya2VyIGlmIGFueS4gKi8KIAlhcHBseV9iZ3dvcmtlcl9j aGVja19zdGF0dXMoKTsKIApAQCAtMTA2OSw2ICsxMDc3LDkgQEAgYXBwbHlfaGFuZGxlX2NvbW1p dF9wcmVwYXJlZChTdHJpbmdJbmZvIHMpCiAJc3RvcmVfZmx1c2hfcG9zaXRpb24ocHJlcGFyZV9k YXRhLmVuZF9sc24pOwogCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogCisJLyogUmVz ZXQgdGhlIHJldHJ5IGZsYWcuICovCisJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CisK IAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBh cmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMocHJlcGFyZV9kYXRhLmVuZF9sc24p OwogCkBAIC0xMTI0LDYgKzExMzUsOSBAQCBhcHBseV9oYW5kbGVfcm9sbGJhY2tfcHJlcGFyZWQo U3RyaW5nSW5mbyBzKQogCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHJvbGxiYWNrX2RhdGEucm9sbGJh Y2tfZW5kX2xzbik7CiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKKwkvKiBSZXNl dCB0aGUgcmV0cnkgZmxhZy4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKKwog CS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFy YWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhyb2xsYmFja19kYXRhLnJvbGxiYWNr X2VuZF9sc24pOwogCkBAIC0xMjE4LDYgKzEyMzIsOSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3By ZXBhcmUoU3RyaW5nSW5mbyBzKQogCQkJLyogVW5saW5rIHRoZSBmaWxlcyB3aXRoIHNlcmlhbGl6 ZWQgY2hhbmdlcyBhbmQgc3VieGFjdCBpbmZvLiAqLwogCQkJc3RyZWFtX2NsZWFudXBfZmlsZXMo TXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgcHJlcGFyZV9kYXRhLnhpZCk7CiAJCX0KKworCQkv KiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwkJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxz ZSk7CiAJfQogCiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CkBAIC0xNjQ2LDYgKzE2 NjMsOSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIAkJCSAqLwog CQkJc2VyaWFsaXplX3N0cmVhbV9hYm9ydCh4aWQsIHN1YnhpZCk7CiAJCX0KKworCQkvKiBSZXNl dCB0aGUgcmV0cnkgZmxhZy4gKi8KKwkJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CiAJ fQogCiAJcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKCk7CkBAIC0xODU4LDYgKzE4Nzgs OSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIHMpCiAJCQkvKiBVbmxp bmsgdGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8uICov CiAJCQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQp OwogCQl9CisKKwkJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJCXNldF9zdWJzY3JpcHRp b25fcmV0cnkoZmFsc2UpOwogCX0KIAogCS8qIENoZWNrIHRoZSBzdGF0dXMgb2YgYXBwbHkgYmFj a2dyb3VuZCB3b3JrZXIgaWYgYW55LiAqLwpAQCAtMzkwMiwyMCArMzkyNSwyOCBAQCBzdGFydF90 YWJsZV9zeW5jKFhMb2dSZWNQdHIgKm9yaWdpbl9zdGFydHBvcywgY2hhciAqKm15c2xvdG5hbWUp CiAJfQogCVBHX0NBVENIKCk7CiAJeworCQkvKgorCQkgKiBFbWl0IHRoZSBlcnJvciBtZXNzYWdl LCBhbmQgcmVjb3ZlciBmcm9tIHRoZSBlcnJvciBzdGF0ZSB0byBhbiBpZGxlCisJCSAqIHN0YXRl CisJCSAqLworCQlIT0xEX0lOVEVSUlVQVFMoKTsKKworCQlFbWl0RXJyb3JSZXBvcnQoKTsKKwkJ QWJvcnRPdXRPZkFueVRyYW5zYWN0aW9uKCk7CisJCUZsdXNoRXJyb3JTdGF0ZSgpOworCisJCVJF U1VNRV9JTlRFUlJVUFRTKCk7CisKKwkJLyogUmVwb3J0IHRoZSB3b3JrZXIgZmFpbGVkIGR1cmlu ZyB0YWJsZSBzeW5jaHJvbml6YXRpb24gKi8KKwkJcGdzdGF0X3JlcG9ydF9zdWJzY3JpcHRpb25f ZXJyb3IoTXlTdWJzY3JpcHRpb24tPm9pZCwgZmFsc2UpOworCiAJCWlmIChNeVN1YnNjcmlwdGlv bi0+ZGlzYWJsZW9uZXJyKQotCQkJRGlzYWJsZVN1YnNjcmlwdGlvbkFuZEV4aXQoKTsKLQkJZWxz ZQotCQl7Ci0JCQkvKgotCQkJICogUmVwb3J0IHRoZSB3b3JrZXIgZmFpbGVkIGR1cmluZyB0YWJs ZSBzeW5jaHJvbml6YXRpb24uIEFib3J0Ci0JCQkgKiB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiBz byB0aGF0IHRoZSBzdGF0cyBtZXNzYWdlIGlzIHNlbnQgaW4gYW4KLQkJCSAqIGlkbGUgc3RhdGUu Ci0JCQkgKi8KLQkJCUFib3J0T3V0T2ZBbnlUcmFuc2FjdGlvbigpOwotCQkJcGdzdGF0X3JlcG9y dF9zdWJzY3JpcHRpb25fZXJyb3IoTXlTdWJzY3JpcHRpb24tPm9pZCwgZmFsc2UpOworCQkJRGlz YWJsZVN1YnNjcmlwdGlvbk9uRXJyb3IoKTsKIAotCQkJUEdfUkVfVEhST1coKTsKLQkJfQorCQkv KiBTZXQgdGhlIHJldHJ5IGZsYWcuICovCisJCXNldF9zdWJzY3JpcHRpb25fcmV0cnkodHJ1ZSk7 CisKKwkJcHJvY19leGl0KDApOwogCX0KIAlQR19FTkRfVFJZKCk7CiAKQEAgLTM5NDAsMjAgKzM5 NzEsMjcgQEAgc3RhcnRfYXBwbHkoWExvZ1JlY1B0ciBvcmlnaW5fc3RhcnRwb3MpCiAJfQogCVBH X0NBVENIKCk7CiAJeworCQkvKgorCQkgKiBFbWl0IHRoZSBlcnJvciBtZXNzYWdlLCBhbmQgcmVj b3ZlciBmcm9tIHRoZSBlcnJvciBzdGF0ZSB0byBhbiBpZGxlCisJCSAqIHN0YXRlCisJCSAqLwor CQlIT0xEX0lOVEVSUlVQVFMoKTsKKworCQlFbWl0RXJyb3JSZXBvcnQoKTsKKwkJQWJvcnRPdXRP ZkFueVRyYW5zYWN0aW9uKCk7CisJCUZsdXNoRXJyb3JTdGF0ZSgpOworCisJCVJFU1VNRV9JTlRF UlJVUFRTKCk7CisKKwkJLyogUmVwb3J0IHRoZSB3b3JrZXIgZmFpbGVkIHdoaWxlIGFwcGx5aW5n IGNoYW5nZXMgKi8KKwkJcGdzdGF0X3JlcG9ydF9zdWJzY3JpcHRpb25fZXJyb3IoTXlTdWJzY3Jp cHRpb24tPm9pZCwKKwkJCQkJCQkJCQkgIWFtX3RhYmxlc3luY193b3JrZXIoKSk7CisKIAkJaWYg KE15U3Vic2NyaXB0aW9uLT5kaXNhYmxlb25lcnIpCi0JCQlEaXNhYmxlU3Vic2NyaXB0aW9uQW5k RXhpdCgpOwotCQllbHNlCi0JCXsKLQkJCS8qCi0JCQkgKiBSZXBvcnQgdGhlIHdvcmtlciBmYWls ZWQgd2hpbGUgYXBwbHlpbmcgY2hhbmdlcy4gQWJvcnQgdGhlCi0JCQkgKiBjdXJyZW50IHRyYW5z YWN0aW9uIHNvIHRoYXQgdGhlIHN0YXRzIG1lc3NhZ2UgaXMgc2VudCBpbiBhbgotCQkJICogaWRs ZSBzdGF0ZS4KLQkJCSAqLwotCQkJQWJvcnRPdXRPZkFueVRyYW5zYWN0aW9uKCk7Ci0JCQlwZ3N0 YXRfcmVwb3J0X3N1YnNjcmlwdGlvbl9lcnJvcihNeVN1YnNjcmlwdGlvbi0+b2lkLCAhYW1fdGFi bGVzeW5jX3dvcmtlcigpKTsKKwkJCURpc2FibGVTdWJzY3JpcHRpb25PbkVycm9yKCk7CiAKLQkJ CVBHX1JFX1RIUk9XKCk7Ci0JCX0KKwkJLyogU2V0IHRoZSByZXRyeSBmbGFnLiAqLworCQlzZXRf c3Vic2NyaXB0aW9uX3JldHJ5KHRydWUpOwogCX0KIAlQR19FTkRfVFJZKCk7CiB9CkBAIC00MjAw LDM5ICs0MjM4LDIwIEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIH0KIAogLyoK LSAqIEFmdGVyIGVycm9yIHJlY292ZXJ5LCBkaXNhYmxlIHRoZSBzdWJzY3JpcHRpb24gaW4gYSBu ZXcgdHJhbnNhY3Rpb24KLSAqIGFuZCBleGl0IGNsZWFubHkuCisgKiBEaXNhYmxlIHRoZSBzdWJz Y3JpcHRpb24gaW4gYSBuZXcgdHJhbnNhY3Rpb24uCiAgKi8KIHN0YXRpYyB2b2lkCi1EaXNhYmxl U3Vic2NyaXB0aW9uQW5kRXhpdCh2b2lkKQorRGlzYWJsZVN1YnNjcmlwdGlvbk9uRXJyb3Iodm9p ZCkKIHsKLQkvKgotCSAqIEVtaXQgdGhlIGVycm9yIG1lc3NhZ2UsIGFuZCByZWNvdmVyIGZyb20g dGhlIGVycm9yIHN0YXRlIHRvIGFuIGlkbGUKLQkgKiBzdGF0ZQotCSAqLwotCUhPTERfSU5URVJS VVBUUygpOwotCi0JRW1pdEVycm9yUmVwb3J0KCk7Ci0JQWJvcnRPdXRPZkFueVRyYW5zYWN0aW9u KCk7Ci0JRmx1c2hFcnJvclN0YXRlKCk7Ci0KLQlSRVNVTUVfSU5URVJSVVBUUygpOwotCi0JLyog UmVwb3J0IHRoZSB3b3JrZXIgZmFpbGVkIGR1cmluZyBlaXRoZXIgdGFibGUgc3luY2hyb25pemF0 aW9uIG9yIGFwcGx5ICovCi0JcGdzdGF0X3JlcG9ydF9zdWJzY3JpcHRpb25fZXJyb3IoTXlMb2dp Y2FsUmVwV29ya2VyLT5zdWJpZCwKLQkJCQkJCQkJCSAhYW1fdGFibGVzeW5jX3dvcmtlcigpKTsK LQogCS8qIERpc2FibGUgdGhlIHN1YnNjcmlwdGlvbiAqLwogCVN0YXJ0VHJhbnNhY3Rpb25Db21t YW5kKCk7CiAJRGlzYWJsZVN1YnNjcmlwdGlvbihNeVN1YnNjcmlwdGlvbi0+b2lkKTsKIAlDb21t aXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qIE5vdGlmeSB0aGUgc3Vic2NyaXB0aW9uIGhh cyBiZWVuIGRpc2FibGVkIGFuZCBleGl0ICovCisJLyogTm90aWZ5IHRoZSBzdWJzY3JpcHRpb24g aGFzIGJlZW4gZGlzYWJsZWQgKi8KIAllcmVwb3J0KExPRywKIAkJCWVycm1zZygibG9naWNhbCBy ZXBsaWNhdGlvbiBzdWJzY3JpcHRpb24gXCIlc1wiIGhhcyBiZWVuIGRpc2FibGVkIGR1ZSB0byBh biBlcnJvciIsCiAJCQkJICAgTXlTdWJzY3JpcHRpb24tPm5hbWUpKTsKLQotCXByb2NfZXhpdCgw KTsKIH0KIAogLyoKQEAgLTQ0NjcsMyArNDQ4Niw2MyBAQCByZXNldF9hcHBseV9lcnJvcl9jb250 ZXh0X2luZm8odm9pZCkKIAlhcHBseV9lcnJvcl9jYWxsYmFja19hcmcucmVtb3RlX2F0dG51bSA9 IC0xOwogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QoSW52YWxpZFRyYW5zYWN0aW9uSWQs IEludmFsaWRYTG9nUmVjUHRyKTsKIH0KKworLyoKKyAqIFNldCBzdWJyZXRyeSBvZiBwZ19zdWJz Y3JpcHRpb24gY2F0YWxvZy4KKyAqCisgKiBJZiByZXRyeSBpcyB0cnVlLCBzdWJzY3JpYmVyIGlz IGFib3V0IHRvIGV4aXQgd2l0aCBhbiBlcnJvci4gT3RoZXJ3aXNlLCBpdAorICogbWVhbnMgdGhh dCB0aGUgdHJhbnNhY3Rpb24gd2FzIGFwcGxpZWQgc3VjY2Vzc2Z1bGx5LgorICovCitzdGF0aWMg dm9pZAorc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShib29sIHJldHJ5KQoreworCVJlbGF0aW9uCXJl bDsKKwlIZWFwVHVwbGUJdHVwOworCWJvb2wJCXN0YXJ0ZWRfdHggPSBmYWxzZTsKKwlib29sCQlu dWxsc1tOYXR0c19wZ19zdWJzY3JpcHRpb25dOworCWJvb2wJCXJlcGxhY2VzW05hdHRzX3BnX3N1 YnNjcmlwdGlvbl07CisJRGF0dW0JCXZhbHVlc1tOYXR0c19wZ19zdWJzY3JpcHRpb25dOworCisJ aWYgKE15U3Vic2NyaXB0aW9uLT5yZXRyeSA9PSByZXRyeSB8fAorCQlhbV9hcHBseV9iZ3dvcmtl cigpKQorCQlyZXR1cm47CisKKwlpZiAoIUlzVHJhbnNhY3Rpb25TdGF0ZSgpKQorCXsKKwkJU3Rh cnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJc3RhcnRlZF90eCA9IHRydWU7CisJfQorCisJLyog TG9vayB1cCB0aGUgc3Vic2NyaXB0aW9uIGluIHRoZSBjYXRhbG9nICovCisJcmVsID0gdGFibGVf b3BlbihTdWJzY3JpcHRpb25SZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwl0dXAgPSBT ZWFyY2hTeXNDYWNoZUNvcHkxKFNVQlNDUklQVElPTk9JRCwKKwkJCQkJCQkgIE9iamVjdElkR2V0 RGF0dW0oTXlTdWJzY3JpcHRpb24tPm9pZCkpOworCisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1 cCkpCisJCWVsb2coRVJST1IsICJzdWJzY3JpcHRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0Iiwg TXlTdWJzY3JpcHRpb24tPm5hbWUpOworCisJTG9ja1NoYXJlZE9iamVjdChTdWJzY3JpcHRpb25S ZWxhdGlvbklkLCBNeVN1YnNjcmlwdGlvbi0+b2lkLCAwLAorCQkJCQkgQWNjZXNzU2hhcmVMb2Nr KTsKKworCS8qIEZvcm0gYSBuZXcgdHVwbGUuICovCisJbWVtc2V0KHZhbHVlcywgMCwgc2l6ZW9m KHZhbHVlcykpOworCW1lbXNldChudWxscywgZmFsc2UsIHNpemVvZihudWxscykpOworCW1lbXNl dChyZXBsYWNlcywgZmFsc2UsIHNpemVvZihyZXBsYWNlcykpOworCisJLyogUmVzZXQgc3VicmV0 cnkgKi8KKwl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3VicmV0cnkgLSAxXSA9IEJvb2xH ZXREYXR1bShyZXRyeSk7CisJcmVwbGFjZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3VicmV0cnkg LSAxXSA9IHRydWU7CisKKwl0dXAgPSBoZWFwX21vZGlmeV90dXBsZSh0dXAsIFJlbGF0aW9uR2V0 RGVzY3IocmVsKSwgdmFsdWVzLCBudWxscywKKwkJCQkJCQlyZXBsYWNlcyk7CisKKwkvKiBVcGRh dGUgdGhlIGNhdGFsb2cuICovCisJQ2F0YWxvZ1R1cGxlVXBkYXRlKHJlbCwgJnR1cC0+dF9zZWxm LCB0dXApOworCisJLyogQ2xlYW51cC4gKi8KKwloZWFwX2ZyZWV0dXBsZSh0dXApOworCXRhYmxl X2Nsb3NlKHJlbCwgTm9Mb2NrKTsKKworCWlmIChzdGFydGVkX3R4KQorCQlDb21taXRUcmFuc2Fj dGlvbkNvbW1hbmQoKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMg Yi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IDJhOGRhMjY4NDQuLmViM2NiYzk5ZTAg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXAuYwpAQCAtNDUwNyw4ICs0NTA3LDkgQEAgZ2V0U3Vic2NyaXB0aW9ucyhBcmNo aXZlICpmb3V0KQogCW50dXBzID0gUFFudHVwbGVzKHJlcyk7CiAKIAkvKgotCSAqIEdldCBzdWJz Y3JpcHRpb24gZmllbGRzLiBXZSBkb24ndCBpbmNsdWRlIHN1YnNraXBsc24gaW4gdGhlIGR1bXAg YXMKLQkgKiBhZnRlciByZXN0b3JpbmcgdGhlIGR1bXAgdGhpcyB2YWx1ZSBtYXkgbm8gbG9uZ2Vy IGJlIHJlbGV2YW50LgorCSAqIEdldCBzdWJzY3JpcHRpb24gZmllbGRzLiBXZSBkb24ndCBpbmNs dWRlIHN1YnNraXBsc24gYW5kIHN1YnJldHJ5IGluCisJICogdGhlIGR1bXAgYXMgYWZ0ZXIgcmVz dG9yaW5nIHRoZSBkdW1wIHRoaXMgdmFsdWUgbWF5IG5vIGxvbmdlciBiZQorCSAqIHJlbGV2YW50 LgogCSAqLwogCWlfdGFibGVvaWQgPSBQUWZudW1iZXIocmVzLCAidGFibGVvaWQiKTsKIAlpX29p ZCA9IFBRZm51bWJlcihyZXMsICJvaWQiKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfc3Vic2NyaXB0aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlv bi5oCmluZGV4IGY0ZTFlOTQwZTYuLjA5NjliOWZkZjYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19z dWJzY3JpcHRpb24uaApAQCAtODgsNiArODgsOCBAQCBDQVRBTE9HKHBnX3N1YnNjcmlwdGlvbiw2 MTAwLFN1YnNjcmlwdGlvblJlbGF0aW9uSWQpIEJLSV9TSEFSRURfUkVMQVRJT04gQktJX1JPVwog CWJvb2wJCXN1YmRpc2FibGVvbmVycjsJLyogVHJ1ZSBpZiBhIHdvcmtlciBlcnJvciBzaG91bGQg Y2F1c2UgdGhlCiAJCQkJCQkJCQkgKiBzdWJzY3JpcHRpb24gdG8gYmUgZGlzYWJsZWQgKi8KIAor CWJvb2wJCXN1YnJldHJ5IEJLSV9ERUZBVUxUKGYpOwkvKiBUcnVlIGlmIHRoZSBwcmV2aW91cyBh cHBseSBjaGFuZ2UgZmFpbGVkLiAqLworCiAjaWZkZWYgQ0FUQUxPR19WQVJMRU4JCQkvKiB2YXJp YWJsZS1sZW5ndGggZmllbGRzIHN0YXJ0IGhlcmUgKi8KIAkvKiBDb25uZWN0aW9uIHN0cmluZyB0 byB0aGUgcHVibGlzaGVyICovCiAJdGV4dAkJc3ViY29ubmluZm8gQktJX0ZPUkNFX05PVF9OVUxM OwpAQCAtMTMxLDYgKzEzMyw4IEBAIHR5cGVkZWYgc3RydWN0IFN1YnNjcmlwdGlvbgogCWJvb2wJ CWRpc2FibGVvbmVycjsJLyogSW5kaWNhdGVzIGlmIHRoZSBzdWJzY3JpcHRpb24gc2hvdWxkIGJl CiAJCQkJCQkJCSAqIGF1dG9tYXRpY2FsbHkgZGlzYWJsZWQgaWYgYSB3b3JrZXIgZXJyb3IKIAkJ CQkJCQkJICogb2NjdXJzICovCisJYm9vbAkJcmV0cnk7CQkJLyogSW5kaWNhdGVzIGlmIHRoZSBw cmV2aW91cyBhcHBseSBjaGFuZ2UKKwkJCQkJCQkJICogZmFpbGVkLiAqLwogCWNoYXIJICAgKmNv bm5pbmZvOwkJLyogQ29ubmVjdGlvbiBzdHJpbmcgdG8gdGhlIHB1Ymxpc2hlciAqLwogCWNoYXIJ ICAgKnNsb3RuYW1lOwkJLyogTmFtZSBvZiB0aGUgcmVwbGljYXRpb24gc2xvdCAqLwogCWNoYXIJ ICAgKnN5bmNjb21taXQ7CQkvKiBTeW5jaHJvbm91cyBjb21taXQgc2V0dGluZyBmb3Igd29ya2Vy ICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX2Fw cGx5LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbWluZ19hcHBseS5wbApp bmRleCA0ZGM1N2M4YTI3Li5mN2Y2NmEyMjZlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMzJfc3RyZWFtaW5nX2FwcGx5LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzAzMl9zdHJlYW1pbmdfYXBwbHkucGwKQEAgLTc4LDkgKzc4LDEzIEBAIG15ICR0aW1lciA9 IElQQzo6UnVuOjp0aW1lb3V0KCRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZh dWx0KTsKIG15ICRoID0gJG5vZGVfcHVibGlzaGVyLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVz JywgXCRpbiwgXCRvdXQsICR0aW1lciwKIAlvbl9lcnJvcl9zdG9wID0+IDApOwogCisjID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KICMgSXQgaXMgbm90IGFsbG93ZWQgdGhhdCB0aGUgdW5pcXVlIGNvbHVt biBpbiB0aGUgcmVsYXRpb24gb24gdGhlCiAjIHN1YnNjcmliZXItc2lkZSBpcyBub3QgdGhlIHVu aXF1ZSBjb2x1bW4gb24gdGhlIHB1Ymxpc2hlci1zaWRlLiBDaGVjayB0aGUKLSMgZXJyb3IgcmVw b3J0ZWQgYnkgYmFja2dyb3VuZCB3b3JrZXIgaW4gdGhpcyBjYXNlLgorIyBlcnJvciByZXBvcnRl ZCBieSBiYWNrZ3JvdW5kIHdvcmtlciBpbiB0aGlzIGNhc2UuIEFuZCBhZnRlciByZXRyeWluZyBp bgorIyBhcHBseSB3b3JrZXIsIHdlIGNoZWNrIGlmIHRoZSBkYXRhIGlzIHJlcGxpY2F0ZWQgc3Vj Y2Vzc2Z1bGx5LgorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKICMgRmlyc3Qgd2UgY2hlY2sgdGhl IHVuaXF1ZSBpbmRleCBvbiBub3JtYWwgdGFibGUuCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFVOSVFVRSBJTkRFWCBpZHhfdGFiMSBvbiB0ZXN0X3Rh YjEoYSkiKTsKQEAgLTEwMywxNCArMTA3LDE5IEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9y X2xvZygKIAlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQg cmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYjEiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIg c3RyZWFtaW5nPXBhcmFsbGVsLywKIAkkb2Zmc2V0KTsKIAorJG5vZGVfc3Vic2NyaWJlci0+d2Fp dF9mb3JfbG9nKAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBkdXBsaWNhdGUga2V5IHZhbHVl IHZpb2xhdGVzIHVuaXF1ZSBjb25zdHJhaW50ICJpZHhfdGFiMSIvLAorCSRvZmZzZXQpOworCiAj IERyb3AgdGhlIHVuaXF1ZSBpbmRleCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgog JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIElOREVYIGlkeF90 YWIxIik7CiAKKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBw bGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKIAogbXkgJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIxIik7Ci1pcygk cmVzdWx0LCBxcSg1MDAxKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRy b3BwaW5nIGluZGV4Jyk7CitpcygkcmVzdWx0LCBxcSg1MDAxKSwgJ2RhdGEgcmVwbGljYXRlZCB0 byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIHVuaXF1ZSBpbmRleCB0byByZXRyeSBhcHBseScp OwogCiAjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KICRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjEi KTsKQEAgLTEzMSwxNyArMTQwLDIzIEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygK IAlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRp b24gInB1YmxpYy50ZXN0X3RhYl9wYXJ0aXRpb25lZCIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFt ZXRlciBzdHJlYW1pbmc9cGFyYWxsZWwvLAogCSRvZmZzZXQpOwogCi0jIERyb3AgdGhlIHVuaXF1 ZSBpbmRleCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIElOREVYIHRlc3RfdGFiX2JfcGFydGl0aW9u X2lkeCIpOwotCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFw cGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7CiAKICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3BhcnRpdGlvbmVk Iik7Ci1pcygkcmVzdWx0LCBxcSg1MDAwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVy IGFmdGVyIGRyb3BwaW5nIGluZGV4Jyk7CitpcygkcmVzdWx0LCBxcSg1MDAwKSwgJ2RhdGEgcmVw bGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgdW5pcXVlIGlu ZGV4Jyk7CiAKKyMgRHJvcCB0aGUgdW5pcXVlIGluZGV4IG9uIHRoZSBzdWJzY3JpYmVyLgorJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIElOREVYIHRlc3RfdGFi X2JfcGFydGl0aW9uX2lkeCIpOworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICMgVHJpZ2dlcnMg d2hpY2ggZXhlY3V0ZSBub24taW1tdXRhYmxlIGZ1bmN0aW9uIGFyZSBub3QgYWxsb3dlZCBvbiB0 aGUKICMgc3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkgYmFja2dy b3VuZCB3b3JrZXIgaW4gdGhpcyBjYXNlLgorIyBBbmQgYWZ0ZXIgcmV0cnlpbmcgaW4gYXBwbHkg d29ya2VyLCB3ZSBjaGVjayBpZiB0aGUgZGF0YSBpcyByZXBsaWNhdGVkCisjIHN1Y2Nlc3NmdWxs eS4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorCiAjIEZpcnN0IHdlIGNoZWNrIHRoZSB0cmlnZ2Vy IGZ1bmN0aW9uIG9uIG5vcm1hbCB0YWJsZS4KICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCiAJIkNSRUFURSBVTklRVUUgSU5ERVggaWR4X3RhYjIgb24gdGVzdF90YWIyKGEp Iik7CkBAIC0xODQsMjIgKzE5OSwyNiBAQCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2co CiAJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0 aW9uICJwdWJsaWMudGVzdF90YWIxIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVh bWluZz1wYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCB0aGUgdHJpZ2dlciBvbiB0aGUg c3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCi0JIkRST1AgVFJJR0dFUiB0cmlfdGFiMSBPTiBwdWJsaWMudGVzdF90YWIxIik7 Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0r Oik/IGR1cGxpY2F0ZSBrZXkgdmFsdWUgdmlvbGF0ZXMgdW5pcXVlIGNvbnN0cmFpbnQgImlkeF90 YWIyIi8sCisJJG9mZnNldCk7CiAKKyMgRHJvcCB0aGUgdW5pcXVlIGluZGV4IG9uIHRoZSBzdWJz Y3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIkRST1AgSU5ERVggaWR4X3RhYjIiKTsKKworIyBXYWl0IGZvciB0aGlzIHN0cmVhbWlu ZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCiAkcmVzdWx0ID0KICAgJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJP TSB0ZXN0X3RhYjEiKTsKLWlzKCRyZXN1bHQsIHFxKDIpLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1 YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgdHJpZ2dlcicpOworaXMoJHJlc3VsdCwgcXEoMiksICdk YXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciByZXRyeWluZyBiZWNhdXNlIG9mIHRy aWdnZXInKTsKKworIyBEcm9wIHRoZSB0cmlnZ2VyIG9uIHRoZSBzdWJzY3JpYmVyLgorJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkRST1AgVFJJR0dFUiB0cmlfdGFi MSBPTiBwdWJsaWMudGVzdF90YWIxIik7CiAKICMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhl IGVudmlyb25tZW50LgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jlcycs IHFxewotRFJPUCBmdW5jdGlvbiB0cmlnZ2VyX2Z1bmNfdGFiMTsKLURST1AgSU5ERVggaWR4X3Rh YjI7Ci19KTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBm dW5jdGlvbiB0cmlnZ2VyX2Z1bmNfdGFiMSIpOwogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo CiAJJ3Bvc3RncmVzJywgcXF7CiBEUk9QIElOREVYIGlkeF90YWIyOwpAQCAtMjMxLDE5ICsyNTAs MjQgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAoIFtBLVow LTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFi X3BhcnRpdGlvbmVkIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZz1wYXJh bGxlbC8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCB0aGUgdHJpZ2dlciBvbiB0aGUgc3Vic2NyaWJl ciwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs Ci0JIkRST1AgVFJJR0dFUiBpbnNlcnRfdHJpZyBPTiB0ZXN0X3RhYl9wYXJ0aXRpb24iKTsKLQor IyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRo ZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOwogCiAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOwotaXMoJHJl c3VsdCwgcXEoMCksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGlu ZyB0cmlnZ2VyJyk7CitpcygkcmVzdWx0LCBxcSgwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJz Y3JpYmVyIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgdHJpZ2dlcicpOworCisjIERyb3AgdGhl IHRyaWdnZXIgb24gdGhlIHN1YnNjcmliZXIuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiRFJPUCBUUklHR0VSIGluc2VydF90cmlnIE9OIHRlc3RfdGFiX3BhcnRp dGlvbiIpOwogCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICMgSXQgaXMgbm90IGFsbG93ZWQgdGhh dCBjb2x1bW4gZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uIGNvbnRhaW5zIGEKICMgbm9uLWltbXV0 YWJsZSBmdW5jdGlvbiBvbiB0aGUgc3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IgcmVw b3J0ZWQgYnkKLSMgYmFja2dyb3VuZCB3b3JrZXIgaW4gdGhpcyBjYXNlLgorIyBiYWNrZ3JvdW5k IHdvcmtlciBpbiB0aGlzIGNhc2UuIEFuZCBhZnRlciByZXRyeWluZyBpbiBhcHBseSB3b3JrZXIs IHdlIGNoZWNrCisjIGlmIHRoZSBkYXRhIGlzIHJlcGxpY2F0ZWQgc3VjY2Vzc2Z1bGx5LgorIyA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CisKICMgRmlyc3Qgd2UgY2hlY2sgdGhlIGNvbHVtbiBkZWZhdWx0 IHZhbHVlIGV4cHJlc3Npb24gb24gbm9ybWFsIHRhYmxlLgogJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfdGFiMiBWQUxVRVMoMSkiKTsKIApA QCAtMjc5LDE2ICszMDMsMTcgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCXFy L0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAi cHVibGljLnRlc3RfdGFiMSIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmc9 cGFyYWxsZWwvLAogCSRvZmZzZXQpOwogCi0jIERyb3AgZGVmYXVsdCB2YWx1ZSBvbiB0aGUgc3Vi c2NyaWJlciwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCi0JIkFMVEVSIFRBQkxFIHRlc3RfdGFiMSBBTFRFUiBDT0xVTU4gYiBEUk9QIERFRkFV TFQiKTsKLQorIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBs aWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOwogCiAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjEiKTsKIGlzKCRyZXN1 bHQsIHFxKDUwMDEpLAotCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9w cGluZyBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24nKTsKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1 YnNjcmliZXIgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBvZiBjb2x1bW4gZGVmYXVsdCB2YWx1ZScp OworCisjIERyb3AgZGVmYXVsdCB2YWx1ZSBvbiB0aGUgc3Vic2NyaWJlci4KKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgQUxU RVIgQ09MVU1OIGIgRFJPUCBERUZBVUxUIik7CiAKICMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZyb20g dGhlIGVudmlyb25tZW50LgogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgRFJPUCBDT0xVTU4gYiIpOwpAQCAtMzExLDIwICszMzYs MjUgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAoIFtBLVow LTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFi X3BhcnRpdGlvbmVkIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZz1wYXJh bGxlbC8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCBkZWZhdWx0IHZhbHVlIG9uIHRoZSBzdWJzY3Jp YmVyLCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKLQkiQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIEFMVEVSIENPTFVNTiBiIERST1Ag REVGQVVMVCIpOwotCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJl IGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZSk7CiAKICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3BhcnRpdGlv bmVkIik7CiBpcygkcmVzdWx0LCBxcSg1MDAwKSwKLQknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNj cmliZXIgYWZ0ZXIgZHJvcHBpbmcgZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uJyk7CisJJ2RhdGEg cmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgY29sdW1u IGRlZmF1bHQgdmFsdWUnKTsKIAorIyBEcm9wIGRlZmF1bHQgdmFsdWUgb24gdGhlIHN1YnNjcmli ZXIuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFC TEUgdGVzdF90YWJfcGFydGl0aW9uIEFMVEVSIENPTFVNTiBiIERST1AgREVGQVVMVCIpOworCisj ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KICMgSXQgaXMgbm90IGFsbG93ZWQgdGhhdCBkb21haW4gY29u c3RyYWludCBleHByZXNzaW9uIGNvbnRhaW5zIGEgbm9uLWltbXV0YWJsZQogIyBmdW5jdGlvbiBv biB0aGUgc3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkgYmFja2dy b3VuZAotIyB3b3JrZXIgaW4gdGhpcyBjYXNlLgorIyB3b3JrZXIgaW4gdGhpcyBjYXNlLiBBbmQg YWZ0ZXIgcmV0cnlpbmcgaW4gYXBwbHkgd29ya2VyLCB3ZSBjaGVjayBpZiB0aGUKKyMgZGF0YSBp cyByZXBsaWNhdGVkIHN1Y2Nlc3NmdWxseS4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCiAjIEJl Y2F1c2UgdGhlIGNvbHVtbiB0eXBlIG9mIHRoZSBwYXJ0aXRpb24gdGFibGUgbXVzdCBiZSB0aGUg c2FtZSBhcyBpdHMgcGFyZW50CiAjIHRhYmxlLCBvbmx5IHRlc3Qgbm9ybWFsIHRhYmxlIGhlcmUu CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGVz dF90YWIyIFZBTFVFUygxKSIpOwpAQCAtMzYzLDI2ICszOTMsMzEgQEAgJG5vZGVfc3Vic2NyaWJl ci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGlj YXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiMSIgdXNpbmcgc3Vic2NyaXB0aW9u IHBhcmFtZXRlciBzdHJlYW1pbmc9cGFyYWxsZWwvLAogCSRvZmZzZXQpOwogCi0jIERyb3AgZG9t YWluIGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtz LgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFRBQkxF IHRlc3RfdGFiMSBBTFRFUiBDT0xVTU4gYSBUWVBFIGludCIpOwotCisjIFdhaXQgZm9yIHRoaXMg c3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4K ICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKICRyZXN1bHQg PQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3Vu dCgqKSBGUk9NIHRlc3RfdGFiMSIpOwogaXMoJHJlc3VsdCwgcXEoNTAwMSksCi0JJ2RhdGEgcmVw bGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGRvbWFpbiBjb25zdHJhaW50IGV4 cHJlc3Npb24nCisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIHJldHJ5aW5n IGJlY2F1c2Ugb2YgZG9tYWluJwogKTsKIAorIyBEcm9wIGRvbWFpbiBjb25zdHJhaW50IGV4cHJl c3Npb24gb24gdGhlIHN1YnNjcmliZXIuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWIxIEFMVEVSIENPTFVNTiBhIFRZUEUgaW50 Iik7CisKICMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgogJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIFRBQkxFIHRlc3RfdGFi MSIpOwogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIFRB QkxFIHRlc3RfdGFiMiIpOwogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKIAotIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBj b250YWlucyBhIG5vbi1pbW11dGFibGUgZnVuY3Rpb24KLSMgb24gdGhlIHN1YnNjcmliZXIgc2lk ZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5IGJhY2tncm91bmQgd29ya2VyIGluIHRoaXMK LSMgY2FzZS4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0 IGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBjb250YWlucyBhIG5vbi1pbW11dGFibGUKKyMgZnVuY3Rp b24gb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5IGJh Y2tncm91bmQKKyMgd29ya2VyIGluIHRoaXMgY2FzZS4gQW5kIGFmdGVyIHJldHJ5aW5nIGluIGFw cGx5IHdvcmtlciwgd2UgY2hlY2sgaWYgdGhlCisjIGRhdGEgaXMgcmVwbGljYXRlZCBzdWNjZXNz ZnVsbHkuCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwogIyBGaXJzdCB3ZSBjaGVjayB0aGUgY29u c3RyYWludCBleHByZXNzaW9uIG9uIG5vcm1hbCB0YWJsZS4KICRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0ZXN0X3RhYjIgVkFMVUVTKDEpIik7CiAK QEAgLTQxMywxNiArNDQ4LDE3IEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKIAlx ci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24g InB1YmxpYy50ZXN0X3RhYjEiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5n PXBhcmFsbGVsLywKIAkkb2Zmc2V0KTsKIAotIyBEcm9wIGNvbnN0cmFpbnQgb24gdGhlIHN1YnNj cmliZXIsIG5vdyBpdCB3b3Jrcy4KLSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAotCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgRFJPUCBDT05TVFJBSU5UIGNvbnN0X3RhYjEi KTsKLQorIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVk IGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOwogCiAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjEiKTsKIGlzKCRyZXN1bHQs IHFxKDUwMDEpLAotCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGlu ZyBjb25zdHJhaW50IGV4cHJlc3Npb24nKTsKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmli ZXIgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBvZiBjb25zdHJhaW50Jyk7CisKKyMgRHJvcCBjb25z dHJhaW50IG9uIHRoZSBzdWJzY3JpYmVyLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiMSBEUk9QIENPTlNUUkFJTlQgY29uc3Rf dGFiMSIpOwogCiAjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KICRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJUUlVOQ0FURSBUQUJMRSB0ZXN0 X3RhYjEiKTsKQEAgLTQ0NCwxOSArNDgwLDI0IEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9y X2xvZygKIAlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQg cmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYl9wYXJ0aXRpb25lZCIgdXNpbmcgc3Vic2NyaXB0aW9u IHBhcmFtZXRlciBzdHJlYW1pbmc9cGFyYWxsZWwvLAogCSRvZmZzZXQpOwogCi0jIERyb3AgY29u c3RyYWludCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlv biBEUk9QIENPTlNUUkFJTlQgdGVzdF90YWJfY29uIik7Ci0KKyMgV2FpdCBmb3IgdGhpcyBzdHJl YW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgogJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAogJHJlc3VsdCA9CiAg ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCop IEZST00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKIGlzKCRyZXN1bHQsIHFxKDApLAotCSdkYXRh IHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBjb25zdHJhaW50IGV4cHJl c3Npb24nKTsKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgcmV0cnlpbmcg YmVjYXVzZSBvZiBjb25zdHJhaW50Jyk7CisKKyMgRHJvcCBjb25zdHJhaW50IG9uIHRoZSBzdWJz Y3JpYmVyLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVS IFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBEUk9QIENPTlNUUkFJTlQgdGVzdF90YWJfY29uIik7 CiAKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQogIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGZvcmVp Z24ga2V5IG9uIHRoZSBzdWJzY3JpYmVyIHNpZGUuIENoZWNrIHRoZSBlcnJvcgotIyByZXBvcnRl ZCBieSBiYWNrZ3JvdW5kIHdvcmtlciBpbiB0aGlzIGNhc2UuCisjIHJlcG9ydGVkIGJ5IGJhY2tn cm91bmQgd29ya2VyIGluIHRoaXMgY2FzZS4gQW5kIGFmdGVyIHJldHJ5aW5nIGluIGFwcGx5Cisj IHdvcmtlciwgd2UgY2hlY2sgaWYgdGhlIGRhdGEgaXMgcmVwbGljYXRlZCBzdWNjZXNzZnVsbHku CisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKwogIyBGaXJzdCB3ZSBjaGVjayB0aGUgZm9yZWlnbiBr ZXkgb24gbm9ybWFsIHRhYmxlLgogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCiAJJ3Bvc3Rn cmVzJywgcXF7CkBAIC00OTUsMTUgKzUzNiwyMyBAQCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zv cl9sb2coCiAJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0 IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWIxIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVy IHN0cmVhbWluZz1wYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCB0aGUgZm9yZWlnbiBr ZXkgY29uc3RyYWludCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgRFJP UCBDT05TVFJBSU5UIHRlc3RfdGFiMWZrIik7Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9s b2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGluc2VydCBvciB1cGRhdGUgb24gdGFibGUg InRlc3RfdGFiMSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVzdF90YWIxZmsi LywKKwkkb2Zmc2V0KTsKIAorIyBJbnNlcnQgZGVwZW5kZW50IGRhdGEgb24gdGhlIHB1Ymxpc2hl ciwgbm93IGl0IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJJTlNFUlQgSU5UTyB0ZXN0X3RhYjIgVkFMVUVTKDEpIik7CisKKyMgV2FpdCBmb3IgdGhpcyBz dHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgog JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAogJHJlc3VsdCA9 CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50 KCopIEZST00gdGVzdF90YWIxIik7CiBpcygkcmVzdWx0LCBxcSgxKSwKLQknZGF0YSByZXBsaWNh dGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgdGhlIGZvcmVpZ24ga2V5Jyk7CisJJ2Rh dGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgZm9y ZWlnbiBrZXknKTsKKworIyBEcm9wIHRoZSBmb3JlaWduIGtleSBjb25zdHJhaW50IG9uIHRoZSBz dWJzY3JpYmVyLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJBTFRF UiBUQUJMRSB0ZXN0X3RhYjEgRFJPUCBDT05TVFJBSU5UIHRlc3RfdGFiMWZrIik7CiAKICMgQ2xl YW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgogJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIFRBQkxFIHRlc3RfdGFiMSIpOwpAQCAtNTI5 LDE2ICs1NzgsMTcgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9S OiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGlj LnRlc3RfdGFiX3BhcnRpdGlvbmVkIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVh bWluZz1wYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCB0aGUgZm9yZWlnbiBrZXkgY29u c3RyYWludCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlv biBEUk9QIENPTlNUUkFJTlQgdGVzdF90YWJfcGF0aXRpb25fZmsiKTsKLQorIyBXYWl0IGZvciB0 aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3Jr ZXIuCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCiAkcmVz dWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qg Y291bnQoKikgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOwogaXMoJHJlc3VsdCwgcXEoNTAw MCksCi0JJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIHRoZSBm b3JlaWduIGtleScpOworCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlcnMgYWZ0ZXIgcmV0 cnlpbmcgYmVjYXVzZSBvZiBmb3JlaWduIGtleScpOworCisjIERyb3AgdGhlIGZvcmVpZ24ga2V5 IGNvbnN0cmFpbnQgb24gdGhlIHN1YnNjcmliZXIuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIERST1AgQ09O U1RSQUlOVCB0ZXN0X3RhYl9wYXRpdGlvbl9mayIpOwogCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9w OwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwotLSAKMi4yMy4wLndpbmRvd3MuMQoK --_005_OS3PR01MB6275D64BE7726B0221B15F389E9F9OS3PR01MB6275jpnp_--