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 1oM2vS-0000W2-2B for pgsql-hackers@arkaria.postgresql.org; Thu, 11 Aug 2022 07:48:18 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oM2vQ-0008Rs-PI for pgsql-hackers@arkaria.postgresql.org; Thu, 11 Aug 2022 07:48:16 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oM2vP-0008Nm-F3 for pgsql-hackers@lists.postgresql.org; Thu, 11 Aug 2022 07:48:16 +0000 Received: from esa6.fujitsucc.c3s2.iphmx.com ([68.232.159.83]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oM2vK-0001o6-3E for pgsql-hackers@lists.postgresql.org; Thu, 11 Aug 2022 07:48:14 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1660204090; x=1691740090; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=tXO7I0plfvRXI0KvH87Oj34eF+BFDYw6YTewl9/tABs=; b=nPjag5Ks6RyW1Ty12WjmVIvEMxnQGz0PjddC2zGptneGfdxp/VZT9l5b +3VnOq1b7/ZWrdDd6EdfuRtb7XLtkkqrJbSZwmxP+PzwIA6diWFlNkr7L HeVtPRjI76/Q4BJ8PNWRTWJ6I+NHlFvXXu+1C8uxH+67PeKWCI7jfwkxw 0uYwvUvXVyGtEYlMJq1evwmvY4ze1CXMGIPdzXHzJr8Km7FM9LMyvo1bn q3LNCBpjlLULCjOi+Wfbc94lUtj+tYQjv5NU7pxMoS/RaDu7Nmjfa4REu WJH5Z2my4TNYxd9A74B1dqQA1rpbKywDcpFebCA+qko/vAIJ2X6bmoJmj w==; X-IronPort-AV: E=McAfee;i="6400,9594,10435"; a="62601391" X-IronPort-AV: E=Sophos;i="5.93,228,1654527600"; d="scan'208,223";a="62601391" Received: from mail-os0jpn01lp2109.outbound.protection.outlook.com (HELO JPN01-OS0-obe.outbound.protection.outlook.com) ([104.47.23.109]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Aug 2022 16:48:05 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=m6Fnzg+ux2NiDmsz7u5zO5sjyVueWlbM9QElUUPbB0ILt06BLdq7zvtv4/uyoVd1Yya/yvI3nQ1MtnOjXsHDFGa8DVoIfHimdXDfU1WyqQxWhniFBZhHUYT2YbPQ04aI5T1N00O9c0+LVquqaFkHAVXTaWahmm+g+vGpulrZOUoAkBFFMYxGyo+JwKp/w1qeBnH5GuoJKT4wXWowlazGvMJ/+tiBZkHznQTSGCDzneVO65a08vhEL+tBj1d/1LLXVF+e9cnUn2ZOg38yj+IUua7B68HP1Ia12dzfGynRHyiB5Kr0JbYce8oG0/EJ3nefC50cUOoBD5XIklXD7olp4Q== 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=cIWne4k5DduaBhg4LNkL/bV7/2Z/mz2qAGh5d+d6D0w=; b=ieAzPc+umO69FS0E4j/wr0wJUePAWHnLu6At7u6KihrZFPAdg60XhVUrPOLnhKdFIN9COB1lhA2nwgSmT2Kfc36Da1Ty09eLYwUoF8T3HPq88DmJ6aOPdsKRn6tw0rNHQOh+M3UUe1akm5Zg3HpK4i1OXQ/5K68D64A05vkAroRoHv+qScDnYYect0CoC9ymxQMC+IXcY9bU6OUGVDFXqmNt6TK4rTo4OUTit682ZdaGx4FchdFsA+mEsmnV7UefjQZc1Fsc5V2f/pw0c8NWF21YWo2FJewE5AE/nhPJzsUjEqejEIK1KqjSn0oRyrF7ZG5TcwBqckYzvodjRcNqhA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com (2603:1096:604:bb::12) by TYAPR01MB5563.jpnprd01.prod.outlook.com (2603:1096:404:8034::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5525.10; Thu, 11 Aug 2022 07:47:59 +0000 Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::558e:85ac:20d8:d8c4]) by OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::558e:85ac:20d8:d8c4%5]) with mapi id 15.20.5504.020; Thu, 11 Aug 2022 07:47:59 +0000 From: "houzj.fnst@fujitsu.com" To: Amit Kapila , "wangw.fnst@fujitsu.com" CC: 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: AQHYSXX5zhPsn/DiHU+5DFLHlN8Fn6zlu9SQgAkSooCACBQ0gIABsTcwgAA1vECAAqHFgIAE/jVwgAXct9CAADkRgIALO/aAgAsRZICAB606AIAS+CyAgAAufICAAWQLgIABHxKAgAA3o4CAAeE3gIAJPr0AgAkxzACAAiJoAIAC0hUAgARvDICABQA2gIAAFvcAgAeBmICABO9ggIAJO+YAgABu1YCACQzpAIAJSy6AgAS+zICABW2rAIAPPxGAgAgkS4CAApJnMA== Date: Thu, 11 Aug 2022 07:47:59 +0000 Message-ID: References: In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: =?utf-8?B?TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2Uw?= =?utf-8?B?NTBfQWN0aW9uSWQ9ZDJiNmU5NmItYTEyOC00Y2ZiLWFjZTktM2U5ZTdhYTZk?= =?utf-8?B?NmE0O01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?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?ZWNlMDUwX1NldERhdGU9MjAyMi0wOC0xMVQwMjoxNjozNFo7TVNJUF9MYWJl?= =?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: 232855ae-65fe-4f32-f598-08da7b6dcff2 x-ms-traffictypediagnostic: TYAPR01MB5563:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: VjumHBUmEO0miLL9BRGyMR8JG6kN0yY1HdiafcYnUnBaQ4EAmpyWWRfrPMOZd/vmWixOy4em//s4uQ0spuJ0OugeSEZooV6ETKs+DrLo1p0TYfm8Vx7Bq75oSOkZ1c2hMCdL85Gts53KfDs4zFgs49rzEF4bIb465JZRIE8SN0+rF2stTqVyj9xFwEGnGj1dEc/a5RBsD1pUpX+RzUsz2XUXMxVnP8g0f/pAZXL49gpD5z2iuPB4orWFE3ol7pQx8ctcL/LoyEettYt8Sp5m4JoD+3KRQjOedJWeLE8d/vI1yhmAFmMKUpX1xZL3iV+9k8AuKOHdTacoTFQTTW774cvHO9zNLao+SMNaPQ0si+qg0pixYiYOTlCikoRRurMOYZrtz59E7tKuNdnrUh6ADCUpL0/B+T2UdCRHngPAxwebAuFGkqqqSzaVDPdKm63AUF1fcY35TgvB2glnuZwTc8s/dqFw9WPxUdbS3+wrrMCYjbd134YLRVwiGRAhAwl/AxHDisXfQ+5EOk8UeFvlvBwPSlDnWopcgyf+IIbKXCtOfQK4TyOSkoP8epvhiXdP6wtwxXFMcQvAZP357/PIhqE4kBzQsWvnqvADJ24+bAqChs/It6/E5dmxj8C7Kmwf4qt7Lmc+IVMqUZUAO7dsz7YixoPu3CIfibiUc2RWbrXO3MPzdBcR2JgorloaEdomMQSpce2591OfYv50c+yxutGa55cOBFB8H9ZoyNx5DIF8vBmfJG/3YhmpNljs70qUDFUHrvnpLuHxZB/G0j75kwlbli32o2WlI64eNNhP8e3CKb1ye5H5FtJtgBx7B9tI x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS0PR01MB5716.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(39860400002)(366004)(136003)(396003)(376002)(346002)(38100700002)(86362001)(316002)(122000001)(66476007)(66556008)(66446008)(64756008)(82960400001)(66946007)(4326008)(99936003)(8676002)(55016003)(5660300002)(8936002)(38070700005)(76116006)(52536014)(6506007)(478600001)(83380400001)(53546011)(7696005)(9686003)(26005)(41300700001)(30864003)(186003)(6636002)(54906003)(110136005)(71200400001)(33656002)(85182001)(2906002);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?RlM0UHJId3Z4endoeG40azNCdzRGOFlaNXJBcllvSXB0NGlRNjFQajhhV2hZ?= =?utf-8?B?ZWRUSFNvTjhjUmdyRS9lWDV6UEFEdnRieG9zeXVkTVU0NFVZc3JoVXhUazJu?= =?utf-8?B?WG95MW1MZFl5SkcrOXdhU1plaTV2ZEhSTlZ6Ylc4ZnUvQVJNYzB2c05YRkM3?= =?utf-8?B?RFV1cm56ZmdLTVJLdjB2SjI3dnJiUE1ZUXpNVU95SlJZVFZFT2NRTlgwQUQ3?= =?utf-8?B?dnBveVFsL1dhQXhvd0p0eGxUM2JOZENXV0ppWFhSMC9JNW5lUC9NWnNrUDZt?= =?utf-8?B?TEFOSitWQ0YzZmxBM2tBRkF4L21VQ0grbytwSGwzQTViV1VaYVplVXpYVEwx?= =?utf-8?B?a0RqTzVadHFVUzJuVU5OMkxObHM2c05USERUZ1Fzdmk2YmxSNEVLcW81OHly?= =?utf-8?B?RCtjQ2g5bjVBNUh5Zkh0NG1IS0xObGxOcWV2L3l2UVpGWkZZYzJVTXlkK1o1?= =?utf-8?B?U1A4U2hRcmxYYXhuSjQ2TUZpam1CZ0QxS2hncktNcEdhOHpBTVE1dkcxNE5V?= =?utf-8?B?SzJpbFNlUlhXVExNZFRja0hnRUJJN0RkMzRoTFM0enIvZnphbGpTYWdUWFE2?= =?utf-8?B?dWJ0VXVncTVHV3pYaERlTVErMUZLaURtajhjd01Zc1FxUmNiek96V3hEcGsx?= =?utf-8?B?bHpXdEtwcDVscUVmTUtHbXh3TzJMREJ2TDlLWTlialo3WmpudWZsejVoeGRi?= =?utf-8?B?QytOSjVwbis5Z2R4SWp4cURINzhTOWRUN3ZCNkQrUDlOTUd3UkhMQ3F2dlU3?= =?utf-8?B?elBiTlpBL2c1QXE3MERIcGpoQVgzZ05aZG5TdmRZYUdabkxwSTFzL0duQTlY?= =?utf-8?B?WWw1bldjZlB2OGhTTXNLaCtBbktqSytKZ1VCd200UEV1d3dHZXJjSXRDaXpI?= =?utf-8?B?SDJqaVl6WUFHSy9vcWJPbXBsV1AxaTlOK3BGaVc1U0FlaWgybVVMalhFei9I?= =?utf-8?B?bGhKeVZSb1ZVcmxUdFJXV3ZnQ2FueFdsQnhBYnJ6alN6b253SG5qVU1XTGFZ?= =?utf-8?B?eTdiaEI0WlpKWnZoY2ZJeDlMNFIzbUV5YWN3bW41UkxUVEYrZk8vckZHeEN3?= =?utf-8?B?SDZHaHhGQnBXTk40T0VFa09Qd3liWTB1WlptNTdSbzdFNnBGb3hJL1czc2Jk?= =?utf-8?B?ZHNSdDkrdGNpRjRhZE9vU0QxYXZJL3FxZ0NaWHAwcXBJdk11NHFEaEVwTSsy?= =?utf-8?B?NFRYWnpiRjVKWFcwbXJQZ0ZnZUtkbm9DVWMzclBxelhTaHl0RUdtaU0vOSts?= =?utf-8?B?TzlqMkZOT3R4cGpPUFJyUjAySFh5T0RzSEJwQ0pXcUsySHNKM3hWNldraTRm?= =?utf-8?B?eG4vb08xVWxMTk4zcGE3clp2MEgvQWNDajFqV2pBdlcySEp3WGdzd2JBYUZa?= =?utf-8?B?U1U0SUtMNUdtZVJuNGVpNDhlVXQvSWdJVDZPNGRuT3o1dVF0SDZ0MkhrL3ln?= =?utf-8?B?dGFjeU5KQWFYR3dFYmt1S1g2YUlGejFvZVFVQ2Jyd2VicnpBYTZSK2NnTlgw?= =?utf-8?B?YUx0ek9KNXVVZ042WktiMVdLaVY4TG5TZVYrdUl2WEdrU2w5b2REd0lLdU1Q?= =?utf-8?B?U0x4THdVU05nQ2NZVVJORmEyc2tpM0tRUDgxY3RtNGxXeWpGVXRTQ1NpL29x?= =?utf-8?B?OWNKVkVDUEl6KzNJdUJzL0tlSDVDK0tYNy95U1Q0YU1ST2RuODdoQWV1VW9W?= =?utf-8?B?V3BSQVVPYzBvU1p2TzJnK0RCUldOQlk5Q0xscDBPYWc4d0xNOHJHZnFSNGN3?= =?utf-8?B?cHRNRjBKaG52a05NdzlORXNYT3d2bkxIaWo5b24zMHAvYjlGYk9GVzdpelJt?= =?utf-8?B?YURvbXQ4NGlMS0FWTXo0b1A0ZmhkeHpYNnRkQ3g4UnZQUlBUVU9TOWRGU1NZ?= =?utf-8?B?czgwWmdaSTNxNEdGc1ZSamxUeENJZENoL1d2M24zRXJ4RTJuVmFGd0dPdUlO?= =?utf-8?B?Uk84bkZyOGdNS0hTWXpzN3NmcWR5bS9kWko0MXJOVkRaM1BrK1Vnb3VMemtW?= =?utf-8?B?ckt2ZG9mYlFqaVN1SG1SOW55MUFReE1EbGN0VngxOW90elJLTTlQeTA1VStW?= =?utf-8?B?Y1BSazlpdFJQVWZhT2t3YWdwd1pkU2g1N1VSUHhGUVN4dXo4VEhJUjQxUkdK?= =?utf-8?Q?D+IJ30tVw9ZnytJnsQXK0ZXTR?= Content-Type: multipart/mixed; boundary="_006_OS0PR01MB57160A440C9821C48ABD4D9C94649OS0PR01MB5716jpnp_" MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: =?utf-8?B?UnU1azRBL0hnWVdYS1R4cnJHQUFrTFZrak4yZCs5UDRCZ1pBSjJnNFVnSDlt?= =?utf-8?B?cTJTUS8rRm1IWUJ5Qy9kOG85S0NPYXhadElNZmQrQVpHTUVrODVSUzJGdzB2?= =?utf-8?B?NkpDQnFEc1BEd1JpbjI0MU5hSHZTczFvZGl0dW5CVDVXLytuRkw4dHB4OTdR?= =?utf-8?B?RmkrTHdTR2VGMDlzcmd5TklVUWkwWmRySWFsc0JiOFVEQTZLeWNFNWNTRkZs?= =?utf-8?B?UmpVdjhYZUlzbE8yNGppVzdOUWdPaDliYis0ckNvNkliRHBWYm5MdFFaT1hP?= =?utf-8?B?YnhyVUwzdzlxOXZiWFo0aHlIT1BPSVlNT3J6SHYrUWVRZHpYNFEyUW82ZVc1?= =?utf-8?B?eThtMlcxd1c3bWcrQXhsR2gzMElzM1ZQZlJ1VFBkZVNERDRPRmhPVXF1Ync2?= =?utf-8?B?Z0lrRUlWNFZDN2h6SmNObkdENThCUE9aWXEzL1NuWFMwaStFdmZSMG1RcmJG?= =?utf-8?B?ZElYTGw4MWZNNmJWbWNQL1ZSLzhaYlh5akpkU3A0TGJPaGhEQXZmc3Z6ZGdG?= =?utf-8?B?YVdsRGY1QkJ1bGNYb2xaY3dyM0FuZzZxN24zaE9VZlI1UkF3d0h4Sm1xcW4w?= =?utf-8?B?NGs5VXBDeUJTd3pEZDIzRnhqZDJBcUpkQWhPRXhGbE1hd3NjbUxXRWtSYWVy?= =?utf-8?B?WjZxbDk2cUNCcUcxSU43ZTZJZWozZDNBZENlekMwTlRmekFXRThZajFzMUFq?= =?utf-8?B?aWtMTXZqTnFLWGs1UTlzUHVoMTlqWHRWU2Q3ZkF3UWN3dTFTODF4Y3NGUk9K?= =?utf-8?B?ZEo2ZjZUMHo5NXViL2M1NFg1TENUUUppMkRqWFZQYmRvOGExaUo4QkRmVnpq?= =?utf-8?B?aWVMS2tLdWt4eUo1b0wvOWVjL0h6MExYN3ZFT0UrMHl6YzVRRE1BQStISTNQ?= =?utf-8?B?TGhZSDN2TFBFN1NLR3dhbzA2UzFDMXVlWllHWFc2UWtUQVVGRUVMK0h3NTN0?= =?utf-8?B?VmxjNUljcHBLcG1YU3JrQ3QrLytLRklYZzJmb2l1ODVONkVkV3UvcVBZVmFq?= =?utf-8?B?aC9sak9vRmhYNDQwV0M0bE5mZWNwdVl1R29xMm9EZmd2VDd4eFRScUdRaXhC?= =?utf-8?B?aGVRUVJLR1NUSC9jNjB6WDgwM0RPaSttT2hsS3JBU3pKbzVkZGVDS2laQXFn?= =?utf-8?B?ZFdaeTlpdGRnd1o5OFlpenBlM2RMYzRzTTZ4VElid29zK2ZlNncyMVRhbjAw?= =?utf-8?B?UHVXMnlaaUxtMVF5OHRsQTcyWVNYdXZmL0h2eDJtN2Nsa3JwbERYa20xa0JI?= =?utf-8?Q?Lnma7ks/z7CTvJR?= X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OS0PR01MB5716.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 232855ae-65fe-4f32-f598-08da7b6dcff2 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Aug 2022 07:47:59.6492 (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: Kqebnx09APGq6D5A0RTv4TeoTZBjB1s2QdroR/RtU3vnJFoFfhvTJfjlKwqiBpoTUWT/6aZsVJoI4NEI5TA8dQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYAPR01MB5563 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_006_OS0PR01MB57160A440C9821C48ABD4D9C94649OS0PR01MB5716jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gVHVlc2RheSwgQXVndXN0IDksIDIwMjIgNzowMCBQTSBBbWl0IEthcGlsYSA8YW1pdC5rYXBp bGExNkBnbWFpbC5jb20+IHdyb3RlOg0KPiANCj4gT24gVGh1LCBBdWcgNCwgMjAyMiBhdCAxMjox MCBQTSB3YW5ndy5mbnN0QGZ1aml0c3UuY29tDQo+IDx3YW5ndy5mbnN0QGZ1aml0c3UuY29tPiB3 cm90ZToNCj4gPg0KPiA+IE9uIE1vbiwgSnVsIDI1LCAyMDIyIGF0IDIxOjUwIFBNIEFtaXQgS2Fw aWxhIDxhbWl0LmthcGlsYTE2QGdtYWlsLmNvbT4NCj4gd3JvdGU6DQo+ID4gPiBGZXcgY29tbWVu dHMgb24gMDAwMToNCj4gPiA+ID09PT09PT09PT09PT09PT09PT09PT0NCj4gPg0KPiA+IFRoYW5r cyBmb3IgeW91ciBjb21tZW50cy4NCj4gPg0KPiANCj4gUmV2aWV3IGNvbW1lbnRzIG9uDQo+IHYy MC0wMDAxLVBlcmZvcm0tc3RyZWFtaW5nLWxvZ2ljYWwtdHJhbnNhY3Rpb25zLWJ5LWJhY2tncg0K PiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4g PT09PT09PT09PT09DQo+IDEuDQo+ICsgICAgICAgICA8cGFyYT4NCj4gKyAgICAgICAgICBJZiBz ZXQgdG8gPGxpdGVyYWw+b248L2xpdGVyYWw+LCB0aGUgaW5jb21pbmcgY2hhbmdlcyBhcmUgd3Jp dHRlbiB0bw0KPiArICAgICAgICAgIHRlbXBvcmFyeSBmaWxlcyBhbmQgdGhlbiBhcHBsaWVkIG9u bHkgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGlzDQo+ICsgICAgICAgICAgY29tbWl0dGVkIG9uIHRo ZSBwdWJsaXNoZXIuDQo+IA0KPiBJdCBpcyBub3QgdmVyeSBjbGVhciB0aGF0IHRoZSB0cmFuc2Fj dGlvbiBpcyBhcHBsaWVkIHdoZW4gdGhlIGNvbW1pdCBpcyByZWNlaXZlZA0KPiBieSB0aGUgc3Vi c2NyaWJlci4gQ2FuIHdlIHNsaWdodGx5IGNoYW5nZSBpdCB0bzogIklmIHNldCB0byA8bGl0ZXJh bD5vbjwvbGl0ZXJhbD4sDQo+IHRoZSBpbmNvbWluZyBjaGFuZ2VzIGFyZSB3cml0dGVuIHRvIHRl bXBvcmFyeSBmaWxlcyBhbmQgdGhlbiBhcHBsaWVkIG9ubHkgYWZ0ZXINCj4gdGhlIHRyYW5zYWN0 aW9uIGlzIGNvbW1pdHRlZCBvbiB0aGUgcHVibGlzaGVyIGFuZCByZWNlaXZlZCBieSB0aGUgc3Vi c2NyaWJlci4iDQoNCkNoYW5nZWQuDQoNCj4gMi4NCj4gLyogRmlyc3QgdGltZSB0aHJvdWdoLCBp bml0aWFsaXplIGFwcGx5IHdvcmtlcnMgaGFzaHRhYmxlICovDQo+ICsgaWYgKEFwcGx5Qmd3b3Jr ZXJzSGFzaCA9PSBOVUxMKQ0KPiArIHsNCj4gKyBIQVNIQ1RMIGN0bDsNCj4gKw0KPiArIE1lbVNl dCgmY3RsLCAwLCBzaXplb2YoY3RsKSk7DQo+ICsgY3RsLmtleXNpemUgPSBzaXplb2YoVHJhbnNh Y3Rpb25JZCk7DQo+ICsgY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihBcHBseUJnd29ya2VyRW50cnkp OyBjdGwuaGN4dCA9IEFwcGx5Q29udGV4dDsNCj4gKw0KPiArIEFwcGx5Qmd3b3JrZXJzSGFzaCA9 IGhhc2hfY3JlYXRlKCJsb2dpY2FsIGFwcGx5IHdvcmtlcnMgaGFzaCIsIDgsICZjdGwsDQo+ICsg ICAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7DQo+IA0KPiBJIHRoaW5r IGl0IHdvdWxkIGJlIGJldHRlciBpZiB3ZSBzdGFydCB3aXRoIHByb2JhYmx5IDE2IGVsZW1lbnQg aGFzaCB0YWJsZSwgOA0KPiBzZWVtcyB0byBiZSBvbiB0aGUgbG93ZXIgc2lkZS4NCg0KQ2hhbmdl ZC4NCg0KPiAzLg0KPiArLyoNCj4gKyAqIFRyeSB0byBsb29rIHVwIHdvcmtlciBhc3NpZ25lZCBi ZWZvcmUgKHNlZSBmdW5jdGlvbg0KPiArYXBwbHlfYmd3b3JrZXJfZ2V0X2ZyZWUpDQo+ICsgKiBp bnNpZGUgQXBwbHlCZ3dvcmtlcnNIYXNoIGZvciByZXF1ZXN0ZWQgeGlkLg0KPiArICovDQo+ICtB cHBseUJnd29ya2VyU3RhdGUgKg0KPiArYXBwbHlfYmd3b3JrZXJfZmluZChUcmFuc2FjdGlvbklk IHhpZCkNCj4gDQo+IFRoZSBhYm92ZSBjb21tZW50IGlzIG5vdCB2ZXJ5IGNsZWFyLiBUaGVyZSBk b2Vzbid0IHNlZW0gdG8gYmUgYW55IGZ1bmN0aW9uDQo+IG5hbWVkIGFwcGx5X2Jnd29ya2VyX2dl dF9mcmVlIGluIHRoZSBwYXRjaC4gQ2FuIHdlIHdyaXRlIHRoaXMgY29tbWVudCBhczoNCj4gIkZp bmQgdGhlIHByZXZpb3VzbHkgYXNzaWduZWQgd29ya2VyIGZvciB0aGUgZ2l2ZW4gdHJhbnNhY3Rp b24sIGlmIGFueS4iDQoNCkNoYW5nZWQgdGhlIGNvbW1lbnRzLg0KDQo+IDQuDQo+IC8qDQo+ICsg KiBQdXNoIGFwcGx5IGVycm9yIGNvbnRleHQgY2FsbGJhY2suIEZpZWxkcyB3aWxsIGJlIGZpbGxl ZCBhcHBseWluZyBhDQo+ICsgKiBjaGFuZ2UuDQo+ICsgKi8NCj4gDQo+IC9GaWVsZHMgd2lsbCBi ZSBmaWxsZWQgYXBwbHlpbmcgYSBjaGFuZ2UuL0ZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aGlsZSBh cHBseWluZyBhDQo+IGNoYW5nZS4NCg0KQ2hhbmdlZC4NCg0KPiA1Lg0KPiArdm9pZA0KPiArQXBw bHlCZ3dvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpDQo+ICt7DQo+IC4uLg0KPiAuLi4NCj4gKyBT dGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOw0KPiArIG9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0 U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsNCj4gKw0KPiArIE15U3Vic2NyaXB0aW9uID0gR2V0U3Vi c2NyaXB0aW9uKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHRydWUpOyBpZg0KPiArICghTXlT dWJzY3JpcHRpb24pIHsgZXJlcG9ydChMT0csIChlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24g YXBwbHkNCj4gKyB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiAldSB3aWxsIG5vdCAiDQo+ICsgInN0 YXJ0IGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlvbiB3YXMgcmVtb3ZlZCBkdXJpbmcgc3RhcnR1cCIs DQo+ICsgTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCkpKTsNCj4gKyBwcm9jX2V4aXQoMCk7DQo+ ICsgfQ0KPiArDQo+ICsgTXlTdWJzY3JpcHRpb25WYWxpZCA9IHRydWU7DQo+ICsgTWVtb3J5Q29u dGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOw0KPiArDQo+ICsgLyogU2V0dXAgc3luY2hyb25vdXMg Y29tbWl0IGFjY29yZGluZyB0byB0aGUgdXNlcidzIHdpc2hlcyAqLw0KPiArIFNldENvbmZpZ09w dGlvbigic3luY2hyb25vdXNfY29tbWl0IiwgTXlTdWJzY3JpcHRpb24tPnN5bmNjb21taXQsDQo+ ICsgUEdDX0JBQ0tFTkQsIFBHQ19TX09WRVJSSURFKTsNCj4gKw0KPiArIC8qIEtlZXAgdXMgaW5m b3JtZWQgYWJvdXQgc3Vic2NyaXB0aW9uIGNoYW5nZXMuICovDQo+ICsgQ2FjaGVSZWdpc3RlclN5 c2NhY2hlQ2FsbGJhY2soU1VCU0NSSVBUSU9OT0lELA0KPiArICAgc3Vic2NyaXB0aW9uX2NoYW5n ZV9jYiwNCj4gKyAgIChEYXR1bSkgMCk7DQo+ICsNCj4gKyBDb21taXRUcmFuc2FjdGlvbkNvbW1h bmQoKTsNCj4gLi4uDQo+IA0KPiBUaGlzIHBhcnQgYXBwZWFycyBvZiB0aGUgY29kZSBhcHBlYXJz IHRvIGJlIHRoZSBzYW1lIGFzIHdlIGhhdmUgaW4NCj4gQXBwbHlXb3JrZXJNYWluKCkgZXhjZXB0 IHRoYXQgdGhlIHBhdGNoIGRvZXNuJ3QgY2hlY2sgd2hldGhlciB0aGUNCj4gc3Vic2NyaXB0aW9u IGlzIGVuYWJsZWQuIElzIHRoZXJlIGEgcmVhc29uIHRvIG5vdCBoYXZlIHRoYXQgY2hlY2sgaGVy ZSBhcyB3ZWxsPw0KPiBUaGVuIGluIEFwcGx5V29ya2VyTWFpbigpLCB3ZSBkbyBMT0cgdGhlIHR5 cGUgb2Ygd29ya2VyIHRoYXQgaXMgYWxzbyBtaXNzaW5nDQo+IGhlcmUuIFVubGVzcyB0aGVyZSBp cyBhIHNwZWNpZmljIHJlYXNvbiB0byBoYXZlIGEgZGlmZmVyZW50IGNvZGUgaGVyZSwgd2Ugc2hv dWxkDQo+IG1vdmUgdGhpcyBwYXJ0IHRvIGEgY29tbW9uIGZ1bmN0aW9uIGFuZCBjYWxsIGl0IGJv dGggZnJvbSBBcHBseVdvcmtlck1haW4oKQ0KPiBhbmQgQXBwbHlCZ3dvcmtlck1haW4oKS4NCj4g Ni4gSSB0aGluayB0aGUgY29kZSBpbiBBcHBseUJnd29ya2VyTWFpbigpIHRvIHNldCBzZXNzaW9u X3JlcGxpY2F0aW9uX3JvbGUsDQo+IHNlYXJjaF9wYXRoLCBhbmQgY29ubmVjdCB0byB0aGUgZGF0 YWJhc2UgYWxzbyBhcHBlYXJzIHRvIGJlIHRoZSBzYW1lIGluDQo+IEFwcGx5V29ya2VyTWFpbigp LiBJZiBzbywgdGhhdCBjYW4gYWxzbyBiZSBtb3ZlZCB0byB0aGUgY29tbW9uIGZ1bmN0aW9uDQo+ IG1lbnRpb25lZCBpbiB0aGUgcHJldmlvdXMgcG9pbnQuDQo+IA0KPiA3LiBJIHRoaW5rIHdlIG5l ZWQgdG8gcmVnaXN0ZXIgZm9yIHN1YnNjcmlwdGlvbiByZWwgbWFwIGludmFsaWRhdGlvbg0KPiAo aW52YWxpZGF0ZV9zeW5jaW5nX3RhYmxlX3N0YXRlcykgaW4gQXBwbHlCZ3dvcmtlck1haW4gc2lt aWxhciB0bw0KPiBBcHBseVdvcmtlck1haW4uIFRoZSByZWFzb24gaXMgdGhhdCB3ZSBjaGVjayB0 aGUgdGFibGUgc3RhdGUgYWZ0ZXIgcHJvY2Vzc2luZw0KPiBhIGNvbW1pdCBvciBzaW1pbGFyIGNo YW5nZSByZWNvcmQgdmlhIGEgY2FsbCB0byBwcm9jZXNzX3N5bmNpbmdfdGFibGVzLg0KDQpBZ3Jl ZWQgYW5kIGNoYW5nZWQuDQoNCj4gOC4gSW4gYXBwbHlfYmd3b3JrZXJfc2V0dXBfZHNtKCksIHdl IHNob3VsZCBoYXZlIGhhbmRsaW5nIHJlbGF0ZWQgdG8NCj4gZHNtX2NyZWF0ZSBmYWlsdXJlIGR1 ZSB0byBtYXhfc2VnbWVudHMgcmVhY2hlZCBhcyB3ZSBoYXZlIGluDQo+IEluaXRpYWxpemVQYXJh bGxlbERTTSgpLiBXZSBjYW4gZm9sbG93IHRoZSByZWd1bGFyIHBhdGggb2Ygc3RyZWFtaW5nDQo+ IHRyYW5zYWN0aW9ucyBpbiBjYXNlIHdlIGFyZSBub3QgYWJsZSB0byBjcmVhdGUgRFNNIGluc3Rl YWQgb2YgcGFyYWxsZWxpemluZyBpdC4NCg0KQ2hhbmdlZC4NCg0KPiA5Lg0KPiArIHNobV90b2Nf aW5pdGlhbGl6ZV9lc3RpbWF0b3IoJmUpOw0KPiArIHNobV90b2NfZXN0aW1hdGVfY2h1bmsoJmUs IHNpemVvZihBcHBseUJnd29ya2VyU2hhcmVkKSk7DQo+ICsgc2htX3RvY19lc3RpbWF0ZV9jaHVu aygmZSwgKFNpemUpIHF1ZXVlX3NpemUpOw0KPiArDQo+ICsgc2htX3RvY19lc3RpbWF0ZV9rZXlz KCZlLCAxICsgMSk7DQo+IA0KPiBIZXJlLCB5b3UgY2FuIGRpcmVjdGx5IHdyaXRlIDIgaW5zdGVh ZCBvZiAoMSArIDEpIHN0dWZmLiBJdCBpcyBxdWl0ZSBjbGVhciB0aGF0IHdlDQo+IG5lZWQgdHdv IGtleXMgaGVyZS4NCg0KQ2hhbmdlZC4NCg0KPiAxMC4NCj4gYXBwbHlfYmd3b3JrZXJfd2FpdF9m b3IoKQ0KPiB7DQo+IC4uLg0KPiArIC8qIFdhaXQgdG8gYmUgc2lnbmFsbGVkLiAqLw0KPiArIFdh aXRMYXRjaChNeUxhdGNoLCBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLA0K PiArICAgV0FJVF9FVkVOVF9MT0dJQ0FMX0FQUExZX0JHV09SS0VSX1NUQVRFX0NIQU5HRSk7DQo+ IC4uLg0KPiB9DQo+IA0KPiBUeXBlY2FzdCB3aXRoIHRoZSB2b2lkLCBpZiB3ZSBkb24ndCBjYXJl IGZvciB0aGUgcmV0dXJuIHZhbHVlLg0KDQpDaGFuZ2VkLg0KDQo+IDExLg0KPiArc3RhdGljIHZv aWQNCj4gK2FwcGx5X2Jnd29ya2VyX3NodXRkb3duKGludCBjb2RlLCBEYXR1bSBhcmcpIHsNCj4g K1NwaW5Mb2NrQWNxdWlyZSgmTXlQYXJhbGxlbFNoYXJlZC0+bXV0ZXgpOw0KPiArIE15UGFyYWxs ZWxTaGFyZWQtPnN0YXR1cyA9IEFQUExZX0JHV09SS0VSX0VYSVQ7DQo+ICsgU3BpbkxvY2tSZWxl YXNlKCZNeVBhcmFsbGVsU2hhcmVkLT5tdXRleCk7DQo+IA0KPiBJcyB0aGVyZSBhIHJlYXNvbiB0 byBub3QgdXNlIGFwcGx5X2Jnd29ya2VyX3NldF9zdGF0dXMoKSBkaXJlY3RseT8NCg0KTm8sIGNo YW5nZWQgdG8gdXNlIHRoYXQgZnVuY3Rpb24uDQoNCj4gMTIuDQo+ICsgKiBTcGVjaWFsIGNhc2Ug aXMgaWYgdGhlIGZpcnN0IGNoYW5nZSBjb21lcyBmcm9tIHN1YnRyYW5zYWN0aW9uLCB0aGVuDQo+ ICsgKiB3ZSBjaGVjayB0aGF0IGN1cnJlbnRfeGlkIGRpZmZlcnMgZnJvbSBzdHJlYW1feGlkLg0K PiArICovDQo+ICt2b2lkDQo+ICthcHBseV9iZ3dvcmtlcl9zdWJ4YWN0X2luZm9fYWRkKFRyYW5z YWN0aW9uSWQgY3VycmVudF94aWQpIHsgIGlmDQo+ICsoY3VycmVudF94aWQgIT0gc3RyZWFtX3hp ZCAmJiAgIWxpc3RfbWVtYmVyX2ludChzdWJ4YWN0bGlzdCwgKGludCkNCj4gK2N1cnJlbnRfeGlk KSkNCj4gLi4uDQo+IC4uLg0KPiANCj4gSSBkb24ndCB1bmRlcnN0YW5kIHRoZSBhYm92ZSBjb21t ZW50LiBEb2VzIHRoYXQgbWVhbiB3ZSBkb24ndCBuZWVkIHRvDQo+IGRlZmluZSBhIHNhdmVwb2lu dCBpZiB0aGUgZmlyc3QgY2hhbmdlIGlzIGZyb20gYSBzdWJ0cmFuc2FjdGlvbj8gQWxzbywga2Vl cCBhbg0KPiBlbXB0eSBsaW5lIGJlZm9yZSB0aGUgYWJvdmUgY29tbWVudC4NCg0KQWZ0ZXIgY2hl Y2tpbmcsIEkgdGhpbmsgdGhpcyBjb21tZW50IGlzIG5vdCB2ZXJ5IGNsZWFyIGFuZCBoYXZlIHJl bW92ZWQgaXQNCmFuZCBpbXByb3ZlIG90aGVyIGNvbW1lbnRzLg0KDQo+IDEzLg0KPiArdm9pZA0K PiArYXBwbHlfYmd3b3JrZXJfc3VieGFjdF9pbmZvX2FkZChUcmFuc2FjdGlvbklkIGN1cnJlbnRf eGlkKSB7ICBpZg0KPiArKGN1cnJlbnRfeGlkICE9IHN0cmVhbV94aWQgJiYgICFsaXN0X21lbWJl cl9pbnQoc3VieGFjdGxpc3QsIChpbnQpDQo+ICtjdXJyZW50X3hpZCkpICB7ICBNZW1vcnlDb250 ZXh0IG9sZGN0eDsgIGNoYXIgc3BuYW1lW01BWFBHUEFUSF07DQo+ICsNCj4gKyBzbnByaW50Zihz cG5hbWUsIE1BWFBHUEFUSCwgInNhdmVwb2ludF9mb3JfeGlkXyV1IiwgY3VycmVudF94aWQpOw0K PiANCj4gVG8gdW5pcXVlbHkgZ2VuZXJhdGUgdGhlIHNhdmVwb2ludCBuYW1lLCBpdCBpcyBiZXR0 ZXIgdG8gYXBwZW5kIHRoZQ0KPiBzdWJzY3JpcHRpb24gaWQgYXMgd2VsbD8gU29tZXRoaW5nIGxp a2UgcGdfc3BfPHN1YmlkPl88eGlkPi4NCg0KQ2hhbmdlZC4NCg0KPiAxNC4gVGhlIENvbW1pdFRy YW5zYWN0aW9uQ29tbWFuZCgpIGNhbGwgaW4NCj4gYXBwbHlfYmd3b3JrZXJfc3VieGFjdF9pbmZv X2FkZCBsb29rcyBhIGJpdCBvZGQgYXMgdGhhdCBmdW5jdGlvbiBuZWl0aGVyDQo+IHNlZW1zIHRv IGJlIHN0YXJ0aW5nIHRoZSB0cmFuc2FjdGlvbiBjb21tYW5kIG5vciBoYXMgYW55IGNvbW1lbnRz DQo+IGV4cGxhaW5pbmcgaXQuIFNoYWxsIHdlIGRvIGl0IGluIGNhbGxlciB3aGVyZSBpdCBpcyBt b3JlIGFwcGFyZW50IHRvIGRvIHRoZSBzYW1lPw0KDQpJIHRoaW5rIHRoZSBDb21taXRUcmFuc2Fj dGlvbkNvbW1hbmQgaGVyZSBpcyB1c2VkIHRvIGNvb3BlcmF0ZSB0aGUNCkRlZmluZVNhdmVwb2lu dCBiZWNhdXNlIHdlIG5lZWQgdG8gaW52b2tlIENvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCB0bw0K c3RhcnQgYSBuZXcgc3VidHJhbnNhY3Rpb24uIEkgdHJpZWQgdG8gYWRkIHNvbWUgY29tbWVudHMg dG8gZXhwbGFpbiB0aGUgc2FtZS4NCg0KPiAxNS4NCj4gZWxzZQ0KPiAgIHNucHJpbnRmKGJndy5i Z3dfbmFtZSwgQkdXX01BWExFTiwNCj4gICAibG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgZm9y IHN1YnNjcmlwdGlvbiAldSIsIHN1YmlkKTsNCj4gKw0KPiAgIHNucHJpbnRmKGJndy5iZ3dfdHlw ZSwgQkdXX01BWExFTiwgImxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIik7DQo+IA0KPiBTcHVy aW91cyBuZXcgbGluZQ0KDQpSZW1vdmVkLg0KDQo+IDE2Lg0KPiBAQCAtMTE1Myw3ICsxMTYyLDE0 IEBAIHJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChSZXBPcmlnaW5JZCBub2RlKQ0KPiANCj4gICBB c3NlcnQoc2Vzc2lvbl9yZXBsaWNhdGlvbl9zdGF0ZS0+cm9pZGVudCAhPSBJbnZhbGlkUmVwT3Jp Z2luSWQpOw0KPiANCj4gLSBzZXNzaW9uX3JlcGxpY2F0aW9uX3N0YXRlLT5hY3F1aXJlZF9ieSA9 IE15UHJvY1BpZDsNCj4gKyBpZiAobXVzdF9hY3F1aXJlKQ0KPiArIHNlc3Npb25fcmVwbGljYXRp b25fc3RhdGUtPmFjcXVpcmVkX2J5ID0gTXlQcm9jUGlkOyBlbHNlIGlmDQo+ICsgKHNlc3Npb25f cmVwbGljYXRpb25fc3RhdGUtPmFjcXVpcmVkX2J5ID09IDApIGVyZXBvcnQoRVJST1IsDQo+ICsg KGVycmNvZGUoRVJSQ09ERV9DT05GSUdVUkFUSU9OX0xJTUlUX0VYQ0VFREVEKSwNCj4gKyBlcnJt c2coImFwcGx5IGJhY2tncm91bmQgd29ya2VyIGNvdWxkIG5vdCBmaW5kIHJlcGxpY2F0aW9uIHN0 YXRlDQo+IHNsb3QgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiB3aXRoIE9JRCAldSIsDQo+ICsgbm9k ZSksDQo+ICsgZXJyZGV0YWlsKCJUaGVyZSBpcyBubyByZXBsaWNhdGlvbiBzdGF0ZSBzbG90IHNl dCBieSBpdHMgbWFpbiBhcHBseQ0KPiB3b3JrZXIuIikpKTsNCj4gDQo+IEl0IGlzIG5vdCBhIGdv b2QgaWRlYSB0byBnaXZlIGFwcGx5IHdvcmtlcnMgc3BlY2lmaWMgbWVzc2FnZXMgZnJvbSB0aGlz IEFQSQ0KPiBiZWNhdXNlIEkgZG9uJ3QgdGhpbmsgd2UgY2FuIGFzc3VtZSB0aGlzIGlzIHVzZWQg Ynkgb25seSBhcHBseSB3b3JrZXJzLiBJdCBzZWVtcw0KPiB0byBtZSB0aGF0IGlmICdtdXN0X2Fj cXVpcmUnIGlzIGZhbHNlLCB0aGVuIHdlIHNob3VsZCBlaXRoZXIgZ2l2ZSBlbG9nKEVSUk9SLCAu LikNCj4gb3IgdGhlcmUgc2hvdWxkIGJlIGFuIEFzc2VydCBmb3IgdGhlIHNhbWUuIEkgYW0gbm90 IGNvbXBsZXRlbHkgc3VyZSBidXQgbWF5YmUNCj4gd2UgY2FuIHJlcXVlc3QgdGhlIGNhbGxlciB0 byBzdXBwbHkgdGhlIFBJRCAod2hpY2ggYWxyZWFkeSBoYXMgYWNxdWlyZWQgdGhpcw0KPiBvcmln aW4pIGluIGNhc2UgbXVzdF9hY3F1aXJlIGlzIGZhbHNlIGFuZCB0aGVuIHVzZSBpdCBpbiBBc3Nl cnQvZWxvZyB0byBlbnN1cmUgdGhlDQo+IGNvcnJlY3QgdXNhZ2Ugb2YgQVBJLiBXaGF0IGRvIHlv dSB0aGluaz8NCg0KQWdyZWVkLiBJIHRoaW5rIHdlIGNhbiByZXBsYWNlIHRoZSAnbXVzdF9hY3F1 aXJlJyB3aXRoIHRoZSBwaWQgb2Ygd29ya2VyIHdoaWNoDQphY3F1aXJlZCB0aGlzIG9yaWdpbihj YWxsZWQgJ2FjcXVpcmVkX2J5JykuIFdlIGNhbiB1c2UgdGhpcyBwaWQgdG8gY2hlY2sgYW5kDQpy ZXBvcnQgdGhlIGVycm9yIGlmIG5lZWRlZC4NCg0KPiAxNy4gVGhlIGNvbW1pdCBtZXNzYWdlIGNh biBleHBsYWluIHRoZSBhYm9ydC1yZWxhdGVkIG5ldyBpbmZvcm1hdGlvbiB0aGlzDQo+IHBhdGNo IHNlbmRzIHRvIHRoZSBzdWJzY3JpYmVycy4NCg0KQWRkZWQuDQoNCj4gMTguDQo+ICsgKiBJbiBz dHJlYW1pbmcgY2FzZSAocmVjZWl2aW5nIGEgYmxvY2sgb2Ygc3RyZWFtZWQgdHJhbnNhY3Rpb24p LCBmb3INCj4gKyAqIFNVQlNUUkVBTV9PTiBtb2RlLCBzaW1wbHkgcmVkaXJlY3QgaXQgdG8gYSBm aWxlIGZvciB0aGUgcHJvcGVyDQo+ICsgdG9wbGV2ZWwNCj4gKyAqIHRyYW5zYWN0aW9uLCBhbmQg Zm9yIFNVQlNUUkVBTV9QQVJBTExFTCBtb2RlLCBzZW5kIHRoZSBjaGFuZ2VzIHRvDQo+ICsgYXBw bHkNCj4gKyAqIGJhY2tncm91bmQgd29ya2VycyAoTE9HSUNBTF9SRVBfTVNHX1JFTEFUSU9OIG9y DQo+IExPR0lDQUxfUkVQX01TR19UWVBFDQo+ICsgY2hhbmdlcw0KPiArICogd2lsbCBhbHNvIGJl IGFwcGxpZWQgaW4gbWFpbiBhcHBseSB3b3JrZXIpLg0KPiANCj4gSW4gdGhpcywgcGFydCBvZiB0 aGUgY29tbWVudCAiKExPR0lDQUxfUkVQX01TR19SRUxBVElPTiBvcg0KPiBMT0dJQ0FMX1JFUF9N U0dfVFlQRSBjaGFuZ2VzIHdpbGwgYWxzbyBiZSBhcHBsaWVkIGluIG1haW4gYXBwbHkgd29ya2Vy KSIgaXMNCj4gbm90IHZlcnkgY2xlYXIuIERvIHlvdSBtZWFuIHRvIHNheSB0aGF0IHRoZXNlIG1l c3NhZ2VzIGFyZSBhcHBsaWVkIGJ5IGJvdGgNCj4gbWFpbiBhbmQgYmFja2dyb3VuZCBhcHBseSB3 b3JrZXJzLCBpZiBzbywgdGhlbiBwbGVhc2Ugc3RhdGUgdGhlIHNhbWUNCj4gZXhwbGljaXRseT8N Cg0KQ2hhbmdlZC4NCg0KPiAxOS4NCj4gLSAvKiBub3QgaW4gc3RyZWFtaW5nIG1vZGUgKi8NCj4g LSBpZiAoIWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQ0KPiArIC8qIE5vdCBpbiBzdHJlYW1pbmcg bW9kZSAqLw0KPiArIGlmICghKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uIHx8IGFtX2FwcGx5X2Jn d29ya2VyKCkpKQ0KPiAuLi4NCj4gLi4uDQo+IC0gLyogd3JpdGUgdGhlIGNoYW5nZSB0byB0aGUg Y3VycmVudCBmaWxlICovDQo+ICsgLyogV3JpdGUgdGhlIGNoYW5nZSB0byB0aGUgY3VycmVudCBm aWxlICovDQo+ICAgc3RyZWFtX3dyaXRlX2NoYW5nZShhY3Rpb24sIHMpOw0KPiANCj4gSSBkb24n dCBzZWUgdGhlIG5lZWQgdG8gY2hhbmdlIHRoZSBhYm92ZSBjb21tZW50cy4NCg0KUmVtb3ZlIHRo ZSBjaGFuZ2VzLg0KDQo+IDIwLg0KPiAgc3RhdGljIGJvb2wNCj4gIGhhbmRsZV9zdHJlYW1lZF90 cmFuc2FjdGlvbihMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24sIFN0cmluZ0luZm8gcykgIHsgLi4u DQo+IC4uLg0KPiArIGlmIChhbV9hcHBseV9iZ3dvcmtlcigpKQ0KPiArIHsNCj4gKyAvKiBEZWZp bmUgYSBzYXZlcG9pbnQgZm9yIGEgc3VieGFjdCBpZiBuZWVkZWQuICovDQo+ICsgYXBwbHlfYmd3 b3JrZXJfc3VieGFjdF9pbmZvX2FkZChjdXJyZW50X3hpZCk7DQo+ICsNCj4gKyByZXR1cm4gZmFs c2U7DQo+ICsgfQ0KPiArDQo+ICsgaWYgKGFwcGx5X2Jnd29ya2VyX2FjdGl2ZSgpKQ0KPiANCj4g SXNuJ3QgaXQgYmV0dGVyIHRvIHVzZSBlbHNlIGlmIGluIHRoZSBhYm92ZSBjb2RlIGFuZCBwcm9i YWJseSBlbHNlIGZvciB0aGUNCj4gcmVtYWluaW5nIHBhcnQgb2YgY29kZSBpbiB0aGlzIGZ1bmN0 aW9uPw0KDQpDaGFuZ2VkLg0KDQpBdHRhY2ggbmV3IHZlcnNpb24odjIxKSBwYXRjaCBzZXQgd2hp Y2ggYWRkcmVzc2VkIGFsbCB0aGUgY29tbWVudHMgcmVjZWl2ZWQgc28gZmFyLg0KDQpCZXN0IHJl Z2FyZHMsDQpIb3UgemoNCg== --_006_OS0PR01MB57160A440C9821C48ABD4D9C94649OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v21-0003-Add-some-checks-before-using-apply-background-wo.patch" Content-Description: v21-0003-Add-some-checks-before-using-apply-background-wo.patch Content-Disposition: attachment; filename="v21-0003-Add-some-checks-before-using-apply-background-wo.patch"; size=56765; creation-date="Thu, 11 Aug 2022 07:47:00 GMT"; modification-date="Thu, 11 Aug 2022 07:47:53 GMT" Content-Transfer-Encoding: base64 RnJvbSAwZDM2NGFhYjY5OWE0ZDk3N2FhODliNzU1Yjk5MWEzNzJmYjFhMWEwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMTAgQXVnIDIwMjIgMjA6Mzc6MjIgKzA4MDAKU3ViamVjdDogW1BBVENI IHYyMSAzLzVdIEFkZCBzb21lIGNoZWNrcyBiZWZvcmUgdXNpbmcgYXBwbHkgYmFja2dyb3VuZCB3 b3JrZXIKIHRvIGFwcGx5IGNoYW5nZXMuCgpzdHJlYW1pbmc9cGFyYWxsZWwgbW9kZSBoYXMgdHdv IHJlcXVpcmVtZW50czoKMSkgVGhlIHVuaXF1ZSBjb2x1bW4gaW4gdGhlIHJlbGF0aW9uIG9uIHRo ZSBzdWJzY3JpYmVyLXNpZGUgc2hvdWxkIGFsc28gYmUgdGhlCnVuaXF1ZSBjb2x1bW4gb24gdGhl IHB1Ymxpc2hlci1zaWRlOwoyKSBUaGVyZSBjYW5ub3QgYmUgYW55IG5vbi1pbW11dGFibGUgZnVu Y3Rpb25zIHVzZWQgYnkgdGhlIHN1YnNjcmliZXItc2lkZQpyZXBsaWNhdGVkIHRhYmxlLiBMb29r IGZvciBmdW5jdGlvbnMgaW4gdGhlIGZvbGxvd2luZyBwbGFjZXM6CiogYS4gVHJpZ2dlciBmdW5j dGlvbnMKKiBiLiBDb2x1bW4gZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9ucyBhbmQgZG9tYWluIGNv bnN0cmFpbnRzCiogYy4gQ29uc3RyYWludCBleHByZXNzaW9ucwoqIGQuIEZvcmVpZ24ga2V5cwoK V2l0aG91dCB0aGVzZSByZXN0cmljdGlvbnMsIHRoZSBmb2xsb3dpbmcgc2NlbmFyaW8gbWF5IG9j Y3VyOgpUaGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgbG9jayBhIHJvdyB3aGVuIHByb2Nlc3Np bmcgYSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24sCmFmdGVyIHRoYXQgdGhlIG1haW4gYXBwbHkgd29y a2VyIHRyaWVzIHRvIGxvY2sgdGhlIHNhbWUgcm93IHdoZW4gcHJvY2Vzc2luZwphbm90aGVyIHRy YW5zYWN0aW9uLiBBdCB0aGlzIHRpbWUsIHRoZSBtYWluIGFwcGx5IHdvcmtlciB3YWl0cyBmb3Ig dGhlCnN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBjb21wbGV0ZSBhbmQgdGhlIGxvY2sgdG8gYmUg cmVsZWFzZWQsIGl0IHdvbid0IHNlbmQKc3Vic2VxdWVudCBkYXRhIG9mIHRoZSBzdHJlYW1pbmcg dHJhbnNhY3Rpb24gdG8gdGhlIGFwcGx5IGJhY2tncm91bmQgd29ya2VyOwp0aGUgYXBwbHkgYmFj a2dyb3VuZCB3b3JrZXIgd2FpdHMgdG8gcmVjZWl2ZSB0aGUgcmVzdCBvZiBzdHJlYW1pbmcgdHJh bnNhY3Rpb24KYW5kIGNhbid0IGZpbmlzaCB0aGlzIHRyYW5zYWN0aW9uLiBUaGVuIHRoZSBtYWlu IGFwcGx5IHdvcmtlciB3aWxsIHdhaXQKaW5kZWZpbml0ZWx5LgotLS0KIGRvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sICAgICAgIHwgICA1ICsKIHNyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dvcmtlci5jIHwgIDUzICsrKwogc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jICAgICAgICAgfCAgODYgKysrLQogc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jICAgICAgfCAyMTQgKysrKysrKysrKwog c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyAgICAgfCAgIDEgKwog c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgICAgfCAgNDMgKy0K IHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMgICAgICAgICAgICAgIHwgIDE3ICsK IHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oICAgICAgICAgIHwgICAxICsK IHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oICAgICAgIHwgIDE1ICsK IHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oICAgICAgIHwgICAxICsK IHNyYy9pbmNsdWRlL3V0aWxzL3R5cGNhY2hlLmggICAgICAgICAgICAgICAgICAgIHwgICAyICsK IHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwgICAgICAgICAgIHwgIDMzICst CiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwgICB8ICAzMyAr LQogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwgfCAgIDgg Kwogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbCAgfCAgMzMg Ky0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1pbmdfYXBwbHkucGwgIHwgNTQ2 ICsrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QgICAgICAgICAgICAgICAgfCAgIDEgKwogMTcgZmlsZXMgY2hhbmdlZCwgMTAwNCBpbnNlcnRp b25zKCspLCA4OCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX2FwcGx5LnBsCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0 ZV9zdWJzY3JpcHRpb24uc2dtbAppbmRleCBiMDhlNGI1Li44ZTFiN2FjIDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3Nn bWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbApAQCAtMjQwLDYgKzI0MCwxMSBAQCBDUkVB VEUgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdWJzY3JpcHRp b25fbmFtZTwvcmVwbGFjZWFibAogICAgICAgICAgIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4g Tm90ZSB0aGF0IGlmIGFuIGVycm9yIGhhcHBlbnMgd2hlbgogICAgICAgICAgIGFwcGx5aW5nIGNo YW5nZXMgaW4gYSBiYWNrZ3JvdW5kIHdvcmtlciwgdGhlIGZpbmlzaCBMU04gb2YgdGhlCiAgICAg ICAgICAgcmVtb3RlIHRyYW5zYWN0aW9uIG1pZ2h0IG5vdCBiZSByZXBvcnRlZCBpbiB0aGUgc2Vy dmVyIGxvZy4KKyAgICAgICAgICBUaGVyZSBhcmUgdHdvIHJlcXVpcmVtZW50cyBmb3IgdXNpbmcg PGxpdGVyYWw+cGFyYWxsZWw8L2xpdGVyYWw+CisgICAgICAgICAgbW9kZTogMSkgdGhlIHVuaXF1 ZSBjb2x1bW4gaW4gdGhlIHRhYmxlIG9uIHRoZSBzdWJzY3JpYmVyLXNpZGUgc2hvdWxkCisgICAg ICAgICAgYWxzbyBiZSB0aGUgdW5pcXVlIGNvbHVtbiBvbiB0aGUgcHVibGlzaGVyLXNpZGU7IDIp IHRoZXJlIGNhbm5vdCBiZQorICAgICAgICAgIGFueSBub24taW1tdXRhYmxlIGZ1bmN0aW9ucyB1 c2VkIGJ5IHRoZSBzdWJzY3JpYmVyLXNpZGUgcmVwbGljYXRlZAorICAgICAgICAgIHRhYmxlLgog ICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvdmFybGlzdGVu dHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseWJn d29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3b3JrZXIu YwppbmRleCBkNWI2MWNjLi5hNDI1ZDk0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2FwcGx5Ymd3b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2FwcGx5Ymd3b3JrZXIuYwpAQCAtNzYyLDMgKzc2Miw1NiBAQCBhcHBseV9iZ3dv cmtlcl9zYXZlcG9pbnRfbmFtZShPaWQgc3Vib2lkLCBUcmFuc2FjdGlvbklkIHhpZCwKIHsKIAlz bnByaW50ZihzcG5hbWUsIHN6c3AsICJwZ19zcF8ldV8ldSIsIHN1Ym9pZCwgeGlkKTsKIH0KKwor LyoKKyAqIENoZWNrIGlmIGNoYW5nZXMgb24gdGhpcyByZWxhdGlvbiBjYW4gYmUgYXBwbGllZCBi eSBhbiBhcHBseSBiYWNrZ3JvdW5kCisgKiB3b3JrZXIuCisgKgorICogQWx0aG91Z2ggdGhlIGNv bW1pdCBvcmRlciBpcyBtYWludGFpbmVkIGJ5IG9ubHkgYWxsb3dpbmcgb25lIHByb2Nlc3MgdG8K KyAqIGNvbW1pdCBhdCBhIHRpbWUsIHRoZSBhY2Nlc3Mgb3JkZXIgdG8gdGhlIHJlbGF0aW9uIGhh cyBjaGFuZ2VkLiBUaGlzIGNvdWxkCisgKiBjYXVzZSB1bmV4cGVjdGVkIHByb2JsZW1zIGlmIHRo ZSB1bmlxdWUgY29sdW1uIG9uIHRoZSByZXBsaWNhdGVkIHRhYmxlIGlzCisgKiBpbmNvbnNpc3Rl bnQgd2l0aCB0aGUgcHVibGlzaGVyLXNpZGUgb3IgY29udGFpbnMgbm9uLWltbXV0YWJsZSBmdW5j dGlvbnMKKyAqIHdoZW4gYXBwbHlpbmcgdHJhbnNhY3Rpb25zIHVzaW5nIGFuIGFwcGx5IGJhY2tn cm91bmQgd29ya2VyLgorICovCit2b2lkCithcHBseV9iZ3dvcmtlcl9yZWxhdGlvbl9jaGVjayhM b2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbCkKK3sKKwkvKgorCSAqIFNraXAgY2hlY2sgaWYgbm90 IHVzaW5nIGFwcGx5IGJhY2tncm91bmQgd29ya2Vycy4KKwkgKgorCSAqIElmIGFueSB3b3JrZXIg aXMgaGFuZGxpbmcgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiwgdGhpcyBjaGVjayBuZWVkcyB0 bworCSAqIGJlIHBlcmZvcm1lZCBub3Qgb25seSBpbiB0aGUgYXBwbHkgYmFja2dyb3VuZCB3b3Jr ZXIsIGJ1dCBhbHNvIGluIHRoZQorCSAqIG1haW4gYXBwbHkgd29ya2VyLiBUaGlzIGlzIGJlY2F1 c2Ugd2l0aG91dCB0aGVzZSByZXN0cmljdGlvbnMsIG1haW4KKwkgKiBhcHBseSB3b3JrZXIgbWF5 IGJsb2NrIGFwcGx5IGJhY2tncm91bmQgd29ya2VyLCB3aGljaCB3aWxsIGNhdXNlCisJICogaW5m aW5pdGUgd2FpdHMuCisJICovCisJaWYgKCFhbV9hcHBseV9iZ3dvcmtlcigpICYmCisJCShsaXN0 X2xlbmd0aChBcHBseUJnd29ya2Vyc0ZyZWVMaXN0KSA9PSBsaXN0X2xlbmd0aChBcHBseUJnd29y a2Vyc0xpc3QpKSkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBQYXJ0aXRpb24gdGFibGUgY2hlY2tz IGFyZSBkb25lIGxhdGVyIGluIGZ1bmN0aW9uCisJICogYXBwbHlfaGFuZGxlX3R1cGxlX3JvdXRp bmcuCisJICovCisJaWYgKHJlbC0+bG9jYWxyZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5E X1BBUlRJVElPTkVEX1RBQkxFKQorCQlyZXR1cm47CisKKwkvKgorCSAqIFJldHVybiBpZiBjaGFu Z2VzIG9uIHRoaXMgcmVsYXRpb24gY2FuIGJlIGFwcGxpZWQgYnkgYW4gYXBwbHkgYmFja2dyb3Vu ZAorCSAqIHdvcmtlci4KKwkgKi8KKwlpZiAocmVsLT5wYXJhbGxlbF9hcHBseSA9PSBQQVJBTExF TF9BUFBMWV9TQUZFKQorCQlyZXR1cm47CisKKwkvKiBXZSBhcmUgaW4gZXJyb3IgbW9kZSBhbmQg c2hvdWxkIGdpdmUgdXNlciBjb3JyZWN0IGVycm9yLiAqLworCWVyZXBvcnQoRVJST1IsCisJCQko ZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCSBl cnJtc2coImNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiB1c2luZyAi CisJCQkJCSJzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZz1wYXJhbGxlbCIsCisJCQkJ CXJlbC0+cmVtb3RlcmVsLm5zcG5hbWUsIHJlbC0+cmVtb3RlcmVsLnJlbG5hbWUpLAorCQkJIGVy cmRldGFpbCgiVGhlIHVuaXF1ZSBjb2x1bW4gb24gc3Vic2NyaWJlciBpcyBub3QgdGhlIHVuaXF1 ZSAiCisJCQkJCSAgICJjb2x1bW4gb24gcHVibGlzaGVyIG9yIHRoZXJlIGlzIGF0IGxlYXN0IG9u ZSAiCisJCQkJCSAgICJub24taW1tdXRhYmxlIGZ1bmN0aW9uLiIpLAorCQkJIGVycmhpbnQoIlBs ZWFzZSBjaGFuZ2UgdG8gdXNlIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgIgorCQkJCQkgInN0cmVh bWluZz1vbi4iKSkpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9wcm90by5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jCmlu ZGV4IDQ3YmQ4MTEuLmJjZjliZDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvcHJvdG8uYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3By b3RvLmMKQEAgLTIzLDcgKzIzLDggQEAKIC8qCiAgKiBQcm90b2NvbCBtZXNzYWdlIGZsYWdzLgog ICovCi0jZGVmaW5lIExPR0lDQUxSRVBfSVNfUkVQTElDQV9JREVOVElUWSAxCisjZGVmaW5lIEFU VFJfSVNfUkVQTElDQV9JREVOVElUWQkoMSA8PCAwKQorI2RlZmluZSBBVFRSX0lTX1VOSVFVRQkJ CQkoMSA8PCAxKQogCiAjZGVmaW5lIE1FU1NBR0VfVFJBTlNBQ1RJT05BTCAoMTw8MCkKICNkZWZp bmUgVFJVTkNBVEVfQ0FTQ0FERQkJKDE8PDApCkBAIC00MSw2ICs0Miw2NiBAQCBzdGF0aWMgdm9p ZCBsb2dpY2FscmVwX3dyaXRlX25hbWVzcGFjZShTdHJpbmdJbmZvIG91dCwgT2lkIG5zcGlkKTsK IHN0YXRpYyBjb25zdCBjaGFyICpsb2dpY2FscmVwX3JlYWRfbmFtZXNwYWNlKFN0cmluZ0luZm8g aW4pOwogCiAvKgorICogUmVsYXRpb25HZXRVbmlxdWVLZXlCaXRtYXAgLS0gZ2V0IGEgYml0bWFw IG9mIHVuaXF1ZSBhdHRyaWJ1dGUgbnVtYmVycworICoKKyAqIFRoaXMgaXMgc2ltaWxhciB0byBS ZWxhdGlvbkdldElkZW50aXR5S2V5Qml0bWFwKCksIGJ1dCByZXR1cm5zIGEgYml0bWFwIG9mCisg KiBpbmRleCBhdHRyaWJ1dGUgbnVtYmVycyBmb3IgYWxsIHVuaXF1ZSBpbmRleGVzLgorICovCitz dGF0aWMgQml0bWFwc2V0ICoKK1JlbGF0aW9uR2V0VW5pcXVlS2V5Qml0bWFwKFJlbGF0aW9uIHJl bCkKK3sKKwlMaXN0CQkgICAqaW5kZXhvaWRsaXN0ID0gTklMOworCUxpc3RDZWxsCSAgICppbmRl eG9pZHNjYW47CisJQml0bWFwc2V0CSAgICphdHR1bmlxdWUgPSBOVUxMOworCisJaWYgKCFyZWwt PnJkX3JlbC0+cmVsaGFzaW5kZXgpCisJCXJldHVybiBOVUxMOworCisJaW5kZXhvaWRsaXN0ID0g UmVsYXRpb25HZXRJbmRleExpc3QocmVsKTsKKworCWZvcmVhY2goaW5kZXhvaWRzY2FuLCBpbmRl eG9pZGxpc3QpCisJeworCQlPaWQJCQlpbmRleG9pZCA9IGxmaXJzdF9vaWQoaW5kZXhvaWRzY2Fu KTsKKwkJUmVsYXRpb24JaW5kZXhSZWw7CisJCWludAkJCWk7CisKKwkJLyogTG9vayB1cCB0aGUg ZGVzY3JpcHRpb24gZm9yIGluZGV4ICovCisJCWluZGV4UmVsID0gUmVsYXRpb25JZEdldFJlbGF0 aW9uKGluZGV4b2lkKTsKKworCQlpZiAoIVJlbGF0aW9uSXNWYWxpZChpbmRleFJlbCkpCisJCQll bG9nKEVSUk9SLCAiY291bGQgbm90IG9wZW4gcmVsYXRpb24gd2l0aCBPSUQgJXUiLCBpbmRleG9p ZCk7CisKKwkJaWYgKCFpbmRleFJlbC0+cmRfaW5kZXgtPmluZGlzdW5pcXVlKQorCQl7CisJCQlS ZWxhdGlvbkNsb3NlKGluZGV4UmVsKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJLyogQWRkIHJl ZmVyZW5jZWQgYXR0cmlidXRlcyB0byBpZGluZGV4YXR0cnMgKi8KKwkJZm9yIChpID0gMDsgaSA8 IGluZGV4UmVsLT5yZF9pbmRleC0+aW5kbmF0dHM7IGkrKykKKwkJeworCQkJaW50IGF0dHJudW0g PSBpbmRleFJlbC0+cmRfaW5kZXgtPmluZGtleS52YWx1ZXNbaV07CisKKwkJCS8qCisJCQkgKiBX ZSBkb24ndCBpbmNsdWRlIG5vbi1rZXkgY29sdW1ucyBpbnRvIGlkaW5kZXhhdHRycworCQkJICog Yml0bWFwcy4gU2VlIFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwLgorCQkJICovCisJCQlpZiAo YXR0cm51bSAhPSAwKQorCQkJeworCQkJCWlmIChpIDwgaW5kZXhSZWwtPnJkX2luZGV4LT5pbmRu a2V5YXR0cyAmJgorCQkJCQkhYm1zX2lzX21lbWJlcihhdHRybnVtIC0gRmlyc3RMb3dJbnZhbGlk SGVhcEF0dHJpYnV0ZU51bWJlciwgYXR0dW5pcXVlKSkKKwkJCQkJYXR0dW5pcXVlID0gYm1zX2Fk ZF9tZW1iZXIoYXR0dW5pcXVlLAorCQkJCQkJCQkJCQkgICBhdHRybnVtIC0gRmlyc3RMb3dJbnZh bGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7CisJCQl9CisJCX0KKwkJUmVsYXRpb25DbG9zZShpbmRl eFJlbCk7CisJfQorCWxpc3RfZnJlZShpbmRleG9pZGxpc3QpOworCisJcmV0dXJuIGF0dHVuaXF1 ZTsKK30KKworLyoKICAqIENoZWNrIGlmIGEgY29sdW1uIGlzIGNvdmVyZWQgYnkgYSBjb2x1bW4g bGlzdC4KICAqCiAgKiBOZWVkIHRvIGJlIGNhcmVmdWwgYWJvdXQgTlVMTCwgd2hpY2ggaXMgdHJl YXRlZCBhcyBhIGNvbHVtbiBsaXN0IGNvdmVyaW5nCkBAIC05MzMsNyArOTk0LDggQEAgbG9naWNh 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 ZWxhdGlvbi5jCmluZGV4IGU5ODkwNDcuLjA1MGVhZGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMKQEAgLTE5LDEyICsxOSwxOSBAQAogCiAjaW5jbHVkZSAi YWNjZXNzL3RhYmxlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKKyNpbmNsdWRl ICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbl9y ZWwuaCIKKyNpbmNsdWRlICJjb21tYW5kcy90cmlnZ2VyLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Iv ZXhlY3V0b3IuaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKKyNpbmNsdWRlICJvcHRp bWl6ZXIvb3B0aW1pemVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9u LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgiCisjaW5jbHVkZSAi cmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCisjaW5j bHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKyNp bmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgogCiAKIHN0YXRpYyBNZW1vcnlDb250ZXh0IExvZ2lj YWxSZXBSZWxNYXBDb250ZXh0ID0gTlVMTDsKQEAgLTkyLDYgKzk5LDI2IEBAIGxvZ2ljYWxyZXBf cmVsbWFwX2ludmFsaWRhdGVfY2IoRGF0dW0gYXJnLCBPaWQgcmVsb2lkKQogfQogCiAvKgorICog UmVsY2FjaGUgaW52YWxpZGF0aW9uIGNhbGxiYWNrIHRvIHJlc2V0IHBhcmFsbGVsX2FwcGx5IGZs YWcuCisgKi8KK3N0YXRpYyB2b2lkCitsb2dpY2FscmVwX3JlbG1hcF9yZXNldF9wYXJhbGxlbF9j YihEYXR1bSBhcmcsIGludCBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKQoreworCUhBU0hfU0VR X1NUQVRVUyBoYXNoX3NlcTsKKwlMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVudHJ5OworCisJaWYg KExvZ2ljYWxSZXBSZWxNYXAgPT0gTlVMTCkKKwkJcmV0dXJuOworCisJaGFzaF9zZXFfaW5pdCgm aGFzaF9zZXEsIExvZ2ljYWxSZXBSZWxNYXApOworCXdoaWxlICgoZW50cnkgPSBoYXNoX3NlcV9z ZWFyY2goJmhhc2hfc2VxKSkgIT0gTlVMTCkKKwl7CisJCWVudHJ5LT5wYXJhbGxlbF9hcHBseSA9 IFBBUkFMTEVMX0FQUExZX1VOS05PV047CisJCWVudHJ5LT5sb2NhbHJlbHZhbGlkID0gZmFsc2U7 CisJfQorfQorCisvKgogICogSW5pdGlhbGl6ZSB0aGUgcmVsYXRpb24gbWFwIGNhY2hlLgogICov CiBzdGF0aWMgdm9pZApAQCAtMTE2LDYgKzE0Myw5IEBAIGxvZ2ljYWxyZXBfcmVsbWFwX2luaXQo dm9pZCkKIAkvKiBXYXRjaCBmb3IgaW52YWxpZGF0aW9uIGV2ZW50cy4gKi8KIAlDYWNoZVJlZ2lz dGVyUmVsY2FjaGVDYWxsYmFjayhsb2dpY2FscmVwX3JlbG1hcF9pbnZhbGlkYXRlX2NiLAogCQkJ CQkJCQkgIChEYXR1bSkgMCk7CisJQ2FjaGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2soUFJPQ09J RCwKKwkJCQkJCQkJICBsb2dpY2FscmVwX3JlbG1hcF9yZXNldF9wYXJhbGxlbF9jYiwKKwkJCQkJ CQkJICAoRGF0dW0pIDApOwogfQogCiAvKgpAQCAtMTQyLDYgKzE3Miw3IEBAIGxvZ2ljYWxyZXBf cmVsbWFwX2ZyZWVfZW50cnkoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICplbnRyeSkKIAkJcGZyZWUo cmVtb3RlcmVsLT5hdHR0eXBzKTsKIAl9CiAJYm1zX2ZyZWUocmVtb3RlcmVsLT5hdHRrZXlzKTsK KwlibXNfZnJlZShyZW1vdGVyZWwtPmF0dHVuaXF1ZSk7CiAKIAlpZiAoZW50cnktPmF0dHJtYXAp CiAJCWZyZWVfYXR0cm1hcChlbnRyeS0+YXR0cm1hcCk7CkBAIC0xOTAsNiArMjIxLDcgQEAgbG9n aWNhbHJlcF9yZWxtYXBfdXBkYXRlKExvZ2ljYWxSZXBSZWxhdGlvbiAqcmVtb3RlcmVsKQogCX0K IAllbnRyeS0+cmVtb3RlcmVsLnJlcGxpZGVudCA9IHJlbW90ZXJlbC0+cmVwbGlkZW50OwogCWVu dHJ5LT5yZW1vdGVyZWwuYXR0a2V5cyA9IGJtc19jb3B5KHJlbW90ZXJlbC0+YXR0a2V5cyk7CisJ ZW50cnktPnJlbW90ZXJlbC5hdHR1bmlxdWUgPSBibXNfY29weShyZW1vdGVyZWwtPmF0dHVuaXF1 ZSk7CiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CiB9CiAKQEAgLTMxMSw2ICszNDMs MTgxIEBAIGxvZ2ljYWxyZXBfcmVsX21hcmtfdXBkYXRhYmxlKExvZ2ljYWxSZXBSZWxNYXBFbnRy eSAqZW50cnkpCiB9CiAKIC8qCisgKiBDaGVjayBpZiBjaGFuZ2VzIG9uIG9uZSByZWxhdGlvbiBj YW4gYmUgYXBwbGllZCBieSBhbiBhcHBseSBiYWNrZ3JvdW5kCisgKiB3b3JrZXIgYW5kIGFzc2ln biB0aGUgJ3BhcmFsbGVsX2FwcGx5JyBmbGFnLgorICoKKyAqIFRoZXJlIGFyZSB0d28gcmVxdWly ZW1lbnRzIGZvciBhcHBseWluZyBjaGFuZ2VzIHVzaW5nIGFuIGFwcGx5IGJhY2tncm91bmQKKyAq IHdvcmtlcjogMSkgdGhlIHVuaXF1ZSBjb2x1bW4gaW4gdGhlIHRhYmxlIG9uIHRoZSBzdWJzY3Jp YmVyLXNpZGUgc2hvdWxkIGFsc28KKyAqIGJlIHRoZSB1bmlxdWUgY29sdW1uIG9uIHRoZSBwdWJs aXNoZXItc2lkZTsgMikgdGhlcmUgY2Fubm90IGJlIGFueQorICogbm9uLWltbXV0YWJsZSBmdW5j dGlvbnMgdXNlZCBieSB0aGUgc3Vic2NyaWJlci1zaWRlIHJlcGxpY2F0ZWQgdGFibGUuCisgKgor ICogV2l0aG91dCB0aGVzZSByZXN0cmljdGlvbnMsIHRoZSBmb2xsb3dpbmcgc2NlbmFyaW8gbWF5 IG9jY3VyOiBUaGUgYXBwbHkKKyAqIGJhY2tncm91bmQgd29ya2VyIGxvY2tzIGEgcm93IHdoZW4g cHJvY2Vzc2luZyBhIHN0cmVhbWluZyB0cmFuc2FjdGlvbiwgYWZ0ZXIKKyAqIHRoYXQgdGhlIG1h aW4gYXBwbHkgd29ya2VyIHRyaWVzIHRvIGxvY2sgdGhlIHNhbWUgcm93IHdoZW4gcHJvY2Vzc2lu ZworICogYW5vdGhlciBub24tc3RyZWFtZWQgdHJhbnNhY3Rpb24uIEF0IHRoaXMgdGltZSwgdGhl IG1haW4gYXBwbHkgd29ya2VyIHdhaXRzCisgKiBmb3IgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlv biB0byBjb21wbGV0ZSBhbmQgdGhlIGxvY2sgdG8gYmUgcmVsZWFzZWQsIGl0CisgKiB3b24ndCBz ZW5kIHN1YnNlcXVlbnQgZGF0YSBvZiB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIHRoZSBh cHBseQorICogYmFja2dyb3VuZCB3b3JrZXI7IHRoZSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciB3 YWl0cyB0byByZWNlaXZlIHRoZSByZXN0IG9mCisgKiBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gYW5k IGNhbid0IGZpbmlzaCB0aGlzIHRyYW5zYWN0aW9uLiBUaGVuIHRoZSBtYWluIGFwcGx5CisgKiB3 b3JrZXIgd2lsbCB3YWl0IGluZGVmaW5pdGVseS4KKyAqCisgKiBXZSBqdXN0IG1hcmsgdGhlIHJl bGF0aW9uIGVudHJ5IGFzICdQQVJBTExFTF9BUFBMWV9VTlNBRkUnIGhlcmUgaWYgY2hhbmdlcwor ICogb24gb25lIHJlbGF0aW9uIGNhbiBub3QgYmUgYXBwbGllZCB1c2luZyBhbiBhcHBseSBiYWNr Z3JvdW5kIHdvcmtlciBhbmQKKyAqIGxlYXZlIGl0IHRvIGFwcGx5X2Jnd29ya2VyX3JlbGF0aW9u X2NoZWNrKCkgdG8gdGhyb3cgdGhlIGFjdHVhbCBlcnJvciBpZgorICogbmVlZGVkLgorICovCitz dGF0aWMgdm9pZAorbG9naWNhbHJlcF9yZWxfbWFya19wYXJhbGxlbF9hcHBseShMb2dpY2FsUmVw UmVsTWFwRW50cnkgKmVudHJ5KQoreworCUJpdG1hcHNldCAgICp1a2V5OworCWludAkJCWk7CisJ VHVwbGVEZXNjCXR1cGRlc2M7CisJaW50CQkJYXR0bnVtOworCUxpc3QJICAgKmZrZXlzID0gTklM OworCisJLyogRmFzdCBwYXRoIGlmICdwYXJhbGxlbF9hcHBseScgZmxhZyBpcyBhbHJlYWR5IGtu b3duLiAqLworCWlmIChlbnRyeS0+cGFyYWxsZWxfYXBwbHkgIT0gUEFSQUxMRUxfQVBQTFlfVU5L Tk9XTikKKwkJcmV0dXJuOworCisJLyogSW5pdGlhbGl6ZSB0aGUgZmxhZy4gKi8KKwllbnRyeS0+ cGFyYWxsZWxfYXBwbHkgPSBQQVJBTExFTF9BUFBMWV9TQUZFOworCisJLyoKKwkgKiBGaXJzdCwg Y2hlY2sgaWYgdGhlIHVuaXF1ZSBjb2x1bW4gaW4gdGhlIHJlbGF0aW9uIG9uIHRoZSBzdWJzY3Jp YmVyLXNpZGUKKwkgKiBpcyBhbHNvIHRoZSB1bmlxdWUgY29sdW1uIG9uIHRoZSBwdWJsaXNoZXIt c2lkZS4KKwkgKi8KKwl1a2V5ID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAoZW50cnktPmxv Y2FscmVsLAorCQkJCQkJCQkJICBJTkRFWF9BVFRSX0JJVE1BUF9LRVkpOworCisJaWYgKHVrZXkp CisJeworCQlpID0gLTE7CisJCXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcih1a2V5LCBpKSkg Pj0gMCkKKwkJeworCQkJYXR0bnVtID0gQXR0ck51bWJlckdldEF0dHJPZmZzZXQoaSArIEZpcnN0 TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIpOworCisJCQlpZiAoZW50cnktPmF0dHJtYXAt PmF0dG51bXNbYXR0bnVtXSA8IDAgfHwKKwkJCQkhYm1zX2lzX21lbWJlcihlbnRyeS0+YXR0cm1h cC0+YXR0bnVtc1thdHRudW1dLCBlbnRyeS0+cmVtb3RlcmVsLmF0dHVuaXF1ZSkpCisJCQl7CisJ CQkJZW50cnktPnBhcmFsbGVsX2FwcGx5ID0gUEFSQUxMRUxfQVBQTFlfVU5TQUZFOworCQkJCXJl dHVybjsKKwkJCX0KKwkJfQorCisJCWJtc19mcmVlKHVrZXkpOworCX0KKworCS8qCisJICogVGhl biwgY2hlY2sgaWYgdGhlcmUgaXMgYW55IG5vbi1pbW11dGFibGUgZnVuY3Rpb24gdXNlZCBieSB0 aGUKKwkgKiBzdWJzY3JpYmVyLXNpZGUgcmVsYXRpb24uIExvb2sgZm9yIGZ1bmN0aW9ucyBpbiB0 aGUgZm9sbG93aW5nIHBsYWNlczoKKwkgKiBhLiB0cmlnZ2VyIGZ1bmN0aW9uczsKKwkgKiBiLiBD b2x1bW4gZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9ucyBhbmQgZG9tYWluIGNvbnN0cmFpbnRzOwor CSAqIGMuIENvbnN0cmFpbnQgZXhwcmVzc2lvbnM7CisJICogZC4gRm9yZWlnbiBrZXlzLgorCSAq LworCS8qIENoZWNrIHRoZSB0cmlnZ2VyIGZ1bmN0aW9ucy4gKi8KKwlpZiAoZW50cnktPmxvY2Fs cmVsLT50cmlnZGVzYyAhPSBOVUxMKQorCXsKKwkJZm9yIChpID0gMDsgaSA8IGVudHJ5LT5sb2Nh bHJlbC0+dHJpZ2Rlc2MtPm51bXRyaWdnZXJzOyBpKyspCisJCXsKKwkJCVRyaWdnZXIgICAgKnRy aWcgPSBlbnRyeS0+bG9jYWxyZWwtPnRyaWdkZXNjLT50cmlnZ2VycyArIGk7CisKKwkJCWlmICh0 cmlnLT50Z2VuYWJsZWQgIT0gVFJJR0dFUl9GSVJFU19BTFdBWVMgJiYKKwkJCQl0cmlnLT50Z2Vu YWJsZWQgIT0gVFJJR0dFUl9GSVJFU19PTl9SRVBMSUNBKQorCQkJCWNvbnRpbnVlOworCisJCQlp ZiAoZnVuY192b2xhdGlsZSh0cmlnLT50Z2ZvaWQpICE9IFBST1ZPTEFUSUxFX0lNTVVUQUJMRSkK KwkJCXsKKwkJCQllbnRyeS0+cGFyYWxsZWxfYXBwbHkgPSBQQVJBTExFTF9BUFBMWV9VTlNBRkU7 CisJCQkJcmV0dXJuOworCQkJfQorCQl9CisJfQorCisJLyogQ2hlY2sgdGhlIGNvbHVtbnMuICov CisJdHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IoZW50cnktPmxvY2FscmVsKTsKKwlmb3IgKGF0 dG51bSA9IDA7IGF0dG51bSA8IHR1cGRlc2MtPm5hdHRzOyBhdHRudW0rKykKKwl7CisJCUZvcm1f cGdfYXR0cmlidXRlIGF0dCA9IFR1cGxlRGVzY0F0dHIodHVwZGVzYywgYXR0bnVtKTsKKworCQkv KiBXZSBkb24ndCBuZWVkIGluZm8gZm9yIGRyb3BwZWQgb3IgZ2VuZXJhdGVkIGF0dHJpYnV0ZXMg Ki8KKwkJaWYgKGF0dC0+YXR0aXNkcm9wcGVkIHx8IGF0dC0+YXR0Z2VuZXJhdGVkKQorCQkJY29u dGludWU7CisKKwkJaWYgKGF0dC0+YXR0aGFzZGVmKQorCQl7CisJCQlOb2RlCSAgICpkZWZhdWx0 ZXhwcjsKKworCQkJZGVmYXVsdGV4cHIgPSBidWlsZF9jb2x1bW5fZGVmYXVsdChlbnRyeS0+bG9j YWxyZWwsIGF0dG51bSArIDEpOworCQkJaWYgKGNvbnRhaW5fbXV0YWJsZV9mdW5jdGlvbnMoZGVm YXVsdGV4cHIpKQorCQkJeworCQkJCWVudHJ5LT5wYXJhbGxlbF9hcHBseSA9IFBBUkFMTEVMX0FQ UExZX1VOU0FGRTsKKwkJCQlyZXR1cm47CisJCQl9CisJCX0KKworCQkvKgorCQkgKiBJZiB0aGUg Y29sdW1uIGlzIG9mIGEgRE9NQUlOIHR5cGUsIGRldGVybWluZSB3aGV0aGVyCisJCSAqIHRoYXQg ZG9tYWluIGhhcyBhbnkgQ0hFQ0sgZXhwcmVzc2lvbnMgdGhhdCBhcmUgbm90CisJCSAqIGltbXV0 YWJsZS4KKwkJICovCisJCWlmIChnZXRfdHlwdHlwZShhdHQtPmF0dHR5cGlkKSA9PSBUWVBUWVBF X0RPTUFJTikKKwkJeworCQkJTGlzdAkgICAqZG9tYWluX2NvbnN0cmFpbnRzOworCQkJTGlzdENl bGwgICAqbGM7CisKKwkJCWRvbWFpbl9jb25zdHJhaW50cyA9IEdldERvbWFpbkNvbnN0cmFpbnRz KGF0dC0+YXR0dHlwaWQpOworCisJCQlmb3JlYWNoKGxjLCBkb21haW5fY29uc3RyYWludHMpCisJ CQl7CisJCQkJRG9tYWluQ29uc3RyYWludFN0YXRlICpjb24gPSAoRG9tYWluQ29uc3RyYWludFN0 YXRlICopIGxmaXJzdChsYyk7CisKKwkJCQlpZiAoY29uLT5jaGVja19leHByICYmIGNvbnRhaW5f bXV0YWJsZV9mdW5jdGlvbnMoKE5vZGUgKikgY29uLT5jaGVja19leHByKSkKKwkJCQl7CisJCQkJ CWVudHJ5LT5wYXJhbGxlbF9hcHBseSA9IFBBUkFMTEVMX0FQUExZX1VOU0FGRTsKKwkJCQkJcmV0 dXJuOworCQkJCX0KKwkJCX0KKwkJfQorCX0KKworCS8qIENoZWNrIHRoZSBjb25zdHJhaW50cy4g Ki8KKwlpZiAodHVwZGVzYy0+Y29uc3RyKQorCXsKKwkJQ29uc3RyQ2hlY2sgKmNoZWNrID0gdHVw ZGVzYy0+Y29uc3RyLT5jaGVjazsKKworCQkvKgorCQkgKiBEZXRlcm1pbmUgaWYgdGhlcmUgYXJl IGFueSBDSEVDSyBjb25zdHJhaW50cyB3aGljaAorCQkgKiBjb250YWlucyBub24taW1tdXRhYmxl IGZ1bmN0aW9uLgorCQkgKi8KKwkJZm9yIChpID0gMDsgaSA8IHR1cGRlc2MtPmNvbnN0ci0+bnVt X2NoZWNrOyBpKyspCisJCXsKKwkJCUV4cHIJICAgKmNoZWNrX2V4cHIgPSBzdHJpbmdUb05vZGUo Y2hlY2tbaV0uY2NiaW4pOworCisJCQlpZiAoY29udGFpbl9tdXRhYmxlX2Z1bmN0aW9ucygoTm9k ZSAqKSBjaGVja19leHByKSkKKwkJCXsKKwkJCQllbnRyeS0+cGFyYWxsZWxfYXBwbHkgPSBQQVJB TExFTF9BUFBMWV9VTlNBRkU7CisJCQkJcmV0dXJuOworCQkJfQorCQl9CisJfQorCisJLyoKKwkg KiBDaGVjayB0aGUgZm9yZWlnbiBrZXlzLgorCSAqCisJICogWFhYIEl0IGlzIGJldHRlciB0byBv bmx5IGNoZWNrIHRoZSBmb3JlaWduIGtleSB3aGVuIGl0IGlzIGRldGVjdGVkIHRoYXQKKwkgKiB0 aGUgcHVibGlzaGVyIGRvZXMgbm90IGhhdmUgdGhlIGZvcmVpZ24ga2V5IGFuZCB0aGUgc3Vic2Ny aWJlciBkb2VzLiBCdXQKKwkgKiB0aGlzIHJlcXVpcmVzIHRoZSBwdWJsaXNoZXIgdG8gc2VuZCBt b3JlIGluZm9ybWF0aW9uLiBJbiBhZGRpdGlvbiwgc2luY2UKKwkgKiBmb3JlaWduIGtleSBkb2Vz IG5vdCB0YWtlIGVmZmVjdCBpbiB0aGUgc3Vic2NyaWJlcidzIGFwcGx5IHdvcmtlciBieQorCSAq IGRlZmF1bHQsIGl0IHNlZW1zIHRoYXQgZm9yZWlnbiBrZXkgZG9lcyBub3QgaGl0IHRoaXMgRVJS T1IgZnJlcXVlbnRseS4KKwkgKiBTbywgb25seSBhIHNpbXBsZSBjaGVjayBiYXNlZCBvbiB0aGUg c3Vic2NyaWJlciBzY2hlbWEgaXMga2VwdCBoZXJlLgorCSAqLworCWZrZXlzID0gUmVsYXRpb25H ZXRGS2V5TGlzdChlbnRyeS0+bG9jYWxyZWwpOworCWlmIChma2V5cykKKwkJZW50cnktPnBhcmFs bGVsX2FwcGx5ID0gUEFSQUxMRUxfQVBQTFlfVU5TQUZFOworfQorCisvKgogICogT3BlbiB0aGUg bG9jYWwgcmVsYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSByZW1vdGUgb25lLgogICoKICAqIFJl YnVpbGRzIHRoZSBSZWxjYWNoZSBtYXBwaW5nIGlmIGl0IHdhcyBpbnZhbGlkYXRlZCBieSBsb2Nh bCBEREwuCkBAIC00MzgsNiArNjQ1LDkgQEAgbG9naWNhbHJlcF9yZWxfb3BlbihMb2dpY2FsUmVw UmVsSWQgcmVtb3RlaWQsIExPQ0tNT0RFIGxvY2ttb2RlKQogCQkgKi8KIAkJbG9naWNhbHJlcF9y ZWxfbWFya191cGRhdGFibGUoZW50cnkpOwogCisJCS8qIFNldCBpZiBjaGFuZ2VzIGNvdWxkIGJl IGFwcGxpZWQgdXNpbmcgYW4gYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuICovCisJCWxvZ2ljYWxy ZXBfcmVsX21hcmtfcGFyYWxsZWxfYXBwbHkoZW50cnkpOworCiAJCWVudHJ5LT5sb2NhbHJlbHZh bGlkID0gdHJ1ZTsKIAl9CiAKQEAgLTY1Myw2ICs4NjMsNyBAQCBsb2dpY2FscmVwX3BhcnRpdGlv bl9vcGVuKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcm9vdCwKIAkJfQogCQllbnRyeS0+cmVtb3Rl cmVsLnJlcGxpZGVudCA9IHJlbW90ZXJlbC0+cmVwbGlkZW50OwogCQllbnRyeS0+cmVtb3RlcmVs LmF0dGtleXMgPSBibXNfY29weShyZW1vdGVyZWwtPmF0dGtleXMpOworCQllbnRyeS0+cmVtb3Rl cmVsLmF0dHVuaXF1ZSA9IGJtc19jb3B5KHJlbW90ZXJlbC0+YXR0dW5pcXVlKTsKIAl9CiAKIAll bnRyeS0+bG9jYWxyZWwgPSBwYXJ0cmVsOwpAQCAtNjk2LDYgKzkwNyw5IEBAIGxvZ2ljYWxyZXBf cGFydGl0aW9uX29wZW4oTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyb290LAogCS8qIFNldCBpZiB0 aGUgdGFibGUncyByZXBsaWNhIGlkZW50aXR5IGlzIGVub3VnaCB0byBhcHBseSB1cGRhdGUvZGVs ZXRlLiAqLwogCWxvZ2ljYWxyZXBfcmVsX21hcmtfdXBkYXRhYmxlKGVudHJ5KTsKIAorCS8qIFNl dCBpZiBjaGFuZ2VzIGNvdWxkIGJlIGFwcGxpZWQgdXNpbmcgYW4gYXBwbHkgYmFja2dyb3VuZCB3 b3JrZXIuICovCisJbG9naWNhbHJlcF9yZWxfbWFya19wYXJhbGxlbF9hcHBseShlbnRyeSk7CisK IAllbnRyeS0+bG9jYWxyZWx2YWxpZCA9IHRydWU7CiAKIAkvKiBzdGF0ZSBhbmQgc3RhdGVsc24g YXJlIGxlZnQgc2V0IHRvIDAuICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3RhYmxlc3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90 YWJsZXN5bmMuYwppbmRleCAyOTliZGM2Li4wZTFkMGMwIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKQEAgLTg4NCw2ICs4ODQsNyBAQCBmZXRjaF9yZW1v dGVfdGFibGVfaW5mbyhjaGFyICpuc3BuYW1lLCBjaGFyICpyZWxuYW1lLAogCWxyZWwtPmF0dG5h bWVzID0gcGFsbG9jMChNYXhUdXBsZUF0dHJpYnV0ZU51bWJlciAqIHNpemVvZihjaGFyICopKTsK IAlscmVsLT5hdHR0eXBzID0gcGFsbG9jMChNYXhUdXBsZUF0dHJpYnV0ZU51bWJlciAqIHNpemVv ZihPaWQpKTsKIAlscmVsLT5hdHRrZXlzID0gTlVMTDsKKwlscmVsLT5hdHR1bmlxdWUgPSBOVUxM OwogCiAJLyoKIAkgKiBTdG9yZSB0aGUgY29sdW1ucyBhcyBhIGxpc3Qgb2YgbmFtZXMuICBJZ25v cmUgdGhvc2UgdGhhdCBhcmUgbm90CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3Jr ZXIuYwppbmRleCAzNWQxOTkyLi5jNTI2NjllIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvd29ya2VyLmMKQEAgLTI3MCw3ICsyNzAsNyBAQCBib29sIGluX3N0cmVhbWVkX3RyYW5z YWN0aW9uID0gZmFsc2U7CiBUcmFuc2FjdGlvbklkIHN0cmVhbV94aWQgPSBJbnZhbGlkVHJhbnNh Y3Rpb25JZDsKIHN0YXRpYyBBcHBseUJnd29ya2VySW5mbyAqc3RyZWFtX2FwcGx5X3dvcmtlciA9 IE5VTEw7CiAKLS8qIENoZWNrIGlmIHdlIGFyZSBhcHBseWluZyB0aGUgdHJhbnNhY3Rpb24gaW4g YW4gYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgKi8KKy8qIENoZWNrIGlmIHdlIGFyZSBhcHBseWlu ZyB0aGUgdHJhbnNhY3Rpb24gdXNpbmcgYW4gYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgKi8KICNk ZWZpbmUgYXBwbHlfYmd3b3JrZXJfYWN0aXZlKCkgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uICYm IHN0cmVhbV9hcHBseV93b3JrZXIgIT0gTlVMTCkKIAogLyoKQEAgLTEyMDAsOCArMTIwMCw4IEBA IGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAJCQkgcHJlcGFyZV9k YXRhLnhpZCk7CiAKIAkJLyoKLQkJICogQ2hlY2sgaWYgd2UgYXJlIHByb2Nlc3NpbmcgdGhpcyB0 cmFuc2FjdGlvbiBpbiBhbiBhcHBseSBiYWNrZ3JvdW5kCi0JCSAqIHdvcmtlciBhbmQgaWYgc28s IHNlbmQgdGhlIGNoYW5nZXMgdG8gdGhhdCB3b3JrZXIuCisJCSAqIENoZWNrIGlmIHdlIGFyZSBw cm9jZXNzaW5nIHRoaXMgdHJhbnNhY3Rpb24gdXNpbmcgYW4gYXBwbHkKKwkJICogYmFja2dyb3Vu ZCB3b3JrZXIgYW5kIGlmIHNvLCBzZW5kIHRoZSBjaGFuZ2VzIHRvIHRoYXQgd29ya2VyLgogCQkg Ki8KIAkJaWYgKHdzdGF0ZSkKIAkJewpAQCAtMTM0MSw5ICsxMzQxLDkgQEAgYXBwbHlfaGFuZGxl X3N0cmVhbV9zdGFydChTdHJpbmdJbmZvIHMpCiAJCWlmIChzdHJlYW1fYXBwbHlfd29ya2VyKQog CQl7CiAJCQkvKgotCQkJICogSWYgd2UgaGF2ZSBmb3VuZCBhIGZyZWUgd29ya2VyIG9yIGlmIHdl IGFyZSBhbHJlYWR5IGFwcGx5aW5nIHRoaXMKLQkJCSAqIHRyYW5zYWN0aW9uIGluIGFuIGFwcGx5 IGJhY2tncm91bmQgd29ya2VyLCB0aGVuIHdlIHBhc3MgdGhlIGRhdGEgdG8KLQkJCSAqIHRoYXQg d29ya2VyLgorCQkJICogSWYgd2UgaGF2ZSBmb3VuZCBhIGZyZWUgd29ya2VyIG9yIGlmIHdlIGFy ZSBhbHJlYWR5IGFwcGx5aW5nCisJCQkgKiB0aGlzIHRyYW5zYWN0aW9uIHVzaW5nIGFuIGFwcGx5 IGJhY2tncm91bmQgd29ya2VyLCB0aGVuIHdlIHBhc3MKKwkJCSAqIHRoZSBkYXRhIHRvIHRoYXQg d29ya2VyLgogCQkJICovCiAJCQlpZiAoZmlyc3Rfc2VnbWVudCkKIAkJCQlhcHBseV9iZ3dvcmtl cl9zZW5kX2RhdGEoc3RyZWFtX2FwcGx5X3dvcmtlciwgcy0+bGVuLCBzLT5kYXRhKTsKQEAgLTE0 MTUsNiArMTQxNSwxNCBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0b3AoU3RyaW5nSW5mbyBzKQog CXsKIAkJY2hhciBhY3Rpb24gPSBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX1NUT1A7CiAKKwkJLyoK KwkJICogVW5saWtlIHN0cmVhbV9jb21taXQsIHdlIGRvbid0IG5lZWQgdG8gd2FpdCBoZXJlIGZv ciBzdHJlYW1fc3RvcCB0bworCQkgKiBmaW5pc2guIEFsbG93aW5nIHRoZSBvdGhlciB0cmFuc2Fj dGlvbiB0byBiZSBhcHBsaWVkIGJlZm9yZQorCQkgKiBzdHJlYW1fc3RvcCBpcyBmaW5pc2hlZCBj YW4gbGVhZCB0byBmYWlsdXJlcyBpZiB0aGUgdW5pcXVlCisJCSAqIGluZGV4L2NvbnN0cmFpbnQg aXMgZGlmZmVyZW50IGJldHdlZW4gcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyLiBCdXQKKwkJICog Zm9yIHN1Y2ggY2FzZXMsIHdlIGRvbid0IGFsbG93IHN0cmVhbWVkIHRyYW5zYWN0aW9ucyB0byBi ZSBhcHBsaWVkCisJCSAqIGluIHBhcmFsbGVsLiBTZWUgYXBwbHlfYmd3b3JrZXJfcmVsYXRpb25f Y2hlY2suCisJCSAqLwogCQlhcHBseV9iZ3dvcmtlcl9zZW5kX2RhdGEoc3RyZWFtX2FwcGx5X3dv cmtlciwgMSwgJmFjdGlvbik7CiAKIAkJZWxvZyhERUJVRzEsICJzdG9wcGVkIHN0cmVhbWluZyBv ZiB4aWQgJXUsICV1IGNoYW5nZXMgc3RyZWFtZWQiLCBzdHJlYW1feGlkLCBuY2hhbmdlcyk7CkBA IC0xNjM1LDggKzE2NDMsOCBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8g cykKIAkJQXBwbHlCZ3dvcmtlckluZm8gKndzdGF0ZSA9IGFwcGx5X2Jnd29ya2VyX2ZpbmQoeGlk KTsKIAogCQkvKgotCQkgKiBDaGVjayBpZiB3ZSBhcmUgcHJvY2Vzc2luZyB0aGlzIHRyYW5zYWN0 aW9uIGluIGFuIGFwcGx5IGJhY2tncm91bmQKLQkJICogd29ya2VyIGFuZCBpZiBzbywgc2VuZCB0 aGUgY2hhbmdlcyB0byB0aGF0IHdvcmtlci4KKwkJICogQ2hlY2sgaWYgd2UgYXJlIHByb2Nlc3Np bmcgdGhpcyB0cmFuc2FjdGlvbiB1c2luZyBhbiBhcHBseQorCQkgKiBiYWNrZ3JvdW5kIHdvcmtl ciBhbmQgaWYgc28sIHNlbmQgdGhlIGNoYW5nZXMgdG8gdGhhdCB3b3JrZXIuCiAJCSAqLwogCQlp ZiAod3N0YXRlKQogCQl7CkBAIC0xODM0LDggKzE4NDIsOCBAQCBhcHBseV9oYW5kbGVfc3RyZWFt X2NvbW1pdChTdHJpbmdJbmZvIHMpCiAJCWVsb2coREVCVUcxLCAicmVjZWl2ZWQgY29tbWl0IGZv ciBzdHJlYW1lZCB0cmFuc2FjdGlvbiAldSIsIHhpZCk7CiAKIAkJLyoKLQkJICogQ2hlY2sgaWYg d2UgYXJlIHByb2Nlc3NpbmcgdGhpcyB0cmFuc2FjdGlvbiBpbiBhbiBhcHBseSBiYWNrZ3JvdW5k Ci0JCSAqIHdvcmtlciBhbmQgaWYgc28sIHNlbmQgdGhlIGNoYW5nZXMgdG8gdGhhdCB3b3JrZXIu CisJCSAqIENoZWNrIGlmIHdlIGFyZSBwcm9jZXNzaW5nIHRoaXMgdHJhbnNhY3Rpb24gdXNpbmcg YW4gYXBwbHkKKwkJICogYmFja2dyb3VuZCB3b3JrZXIgYW5kIGlmIHNvLCBzZW5kIHRoZSBjaGFu Z2VzIHRvIHRoYXQgd29ya2VyLgogCQkgKi8KIAkJaWYgKHdzdGF0ZSkKIAkJewpAQCAtMjA2OSw2 ICsyMDc3LDggQEAgYXBwbHlfaGFuZGxlX2luc2VydChTdHJpbmdJbmZvIHMpCiAJLyogU2V0IHJl bGF0aW9uIGZvciBlcnJvciBjYWxsYmFjayAqLwogCWFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZy5y ZWwgPSByZWw7CiAKKwlhcHBseV9iZ3dvcmtlcl9yZWxhdGlvbl9jaGVjayhyZWwpOworCiAJLyog SW5pdGlhbGl6ZSB0aGUgZXhlY3V0b3Igc3RhdGUuICovCiAJZWRhdGEgPSBjcmVhdGVfZWRhdGFf Zm9yX3JlbGF0aW9uKHJlbCk7CiAJZXN0YXRlID0gZWRhdGEtPmVzdGF0ZTsKQEAgLTIyMTIsNiAr MjIyMiw4IEBAIGFwcGx5X2hhbmRsZV91cGRhdGUoU3RyaW5nSW5mbyBzKQogCS8qIENoZWNrIGlm IHdlIGNhbiBkbyB0aGUgdXBkYXRlLiAqLwogCWNoZWNrX3JlbGF0aW9uX3VwZGF0YWJsZShyZWwp OwogCisJYXBwbHlfYmd3b3JrZXJfcmVsYXRpb25fY2hlY2socmVsKTsKKwogCS8qIEluaXRpYWxp emUgdGhlIGV4ZWN1dG9yIHN0YXRlLiAqLwogCWVkYXRhID0gY3JlYXRlX2VkYXRhX2Zvcl9yZWxh dGlvbihyZWwpOwogCWVzdGF0ZSA9IGVkYXRhLT5lc3RhdGU7CkBAIC0yMzgwLDYgKzIzOTIsOCBA QCBhcHBseV9oYW5kbGVfZGVsZXRlKFN0cmluZ0luZm8gcykKIAkvKiBDaGVjayBpZiB3ZSBjYW4g ZG8gdGhlIGRlbGV0ZS4gKi8KIAljaGVja19yZWxhdGlvbl91cGRhdGFibGUocmVsKTsKIAorCWFw cGx5X2Jnd29ya2VyX3JlbGF0aW9uX2NoZWNrKHJlbCk7CisKIAkvKiBJbml0aWFsaXplIHRoZSBl eGVjdXRvciBzdGF0ZS4gKi8KIAllZGF0YSA9IGNyZWF0ZV9lZGF0YV9mb3JfcmVsYXRpb24ocmVs KTsKIAllc3RhdGUgPSBlZGF0YS0+ZXN0YXRlOwpAQCAtMjU2NSwxMyArMjU3OSwxNCBAQCBhcHBs eV9oYW5kbGVfdHVwbGVfcm91dGluZyhBcHBseUV4ZWN1dGlvbkRhdGEgKmVkYXRhLAogCX0KIAlN ZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKIAorCXBhcnRfZW50cnkgPSBsb2dpY2FscmVw X3BhcnRpdGlvbl9vcGVuKHJlbG1hcGVudHJ5LCBwYXJ0cmVsLAorCQkJCQkJCQkJCSAgIGF0dHJt YXApOworCiAJLyogQ2hlY2sgaWYgd2UgY2FuIGRvIHRoZSB1cGRhdGUgb3IgZGVsZXRlIG9uIHRo ZSBsZWFmIHBhcnRpdGlvbi4gKi8KIAlpZiAob3BlcmF0aW9uID09IENNRF9VUERBVEUgfHwgb3Bl cmF0aW9uID09IENNRF9ERUxFVEUpCi0JewotCQlwYXJ0X2VudHJ5ID0gbG9naWNhbHJlcF9wYXJ0 aXRpb25fb3BlbihyZWxtYXBlbnRyeSwgcGFydHJlbCwKLQkJCQkJCQkJCQkJICAgYXR0cm1hcCk7 CiAJCWNoZWNrX3JlbGF0aW9uX3VwZGF0YWJsZShwYXJ0X2VudHJ5KTsKLQl9CisKKwlhcHBseV9i Z3dvcmtlcl9yZWxhdGlvbl9jaGVjayhwYXJ0X2VudHJ5KTsKIAogCXN3aXRjaCAob3BlcmF0aW9u KQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMgYi9z cmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jCmluZGV4IDgwOGY5ZWIuLmIyNDg4OTkg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2FjaGUuYwpAQCAtMjU0MSw2ICsyNTQxLDIzIEBAIGNv bXBhcmVfdmFsdWVzX29mX2VudW0oVHlwZUNhY2hlRW50cnkgKnRjYWNoZSwgT2lkIGFyZzEsIE9p ZCBhcmcyKQogfQogCiAvKgorICogR2V0RG9tYWluQ29uc3RyYWludHMgLS0tIGdldCBEb21haW5D b25zdHJhaW50U3RhdGUgbGlzdCBvZiBzcGVjaWZpZWQgZG9tYWluIHR5cGUKKyAqLworTGlzdCAq CitHZXREb21haW5Db25zdHJhaW50cyhPaWQgdHlwZV9pZCkKK3sKKwlUeXBlQ2FjaGVFbnRyeSAq dHlwZW50cnk7CisJTGlzdAkJICAgKmNvbnN0cmFpbnRzID0gTklMOworCisJdHlwZW50cnkgPSBs b29rdXBfdHlwZV9jYWNoZSh0eXBlX2lkLCBUWVBFQ0FDSEVfRE9NQUlOX0NPTlNUUl9JTkZPKTsK KworCWlmKHR5cGVudHJ5LT5kb21haW5EYXRhICE9IE5VTEwpCisJCWNvbnN0cmFpbnRzID0gdHlw ZW50cnktPmRvbWFpbkRhdGEtPmNvbnN0cmFpbnRzOworCisJcmV0dXJuIGNvbnN0cmFpbnRzOwor fQorCisvKgogICogTG9hZCAob3IgcmUtbG9hZCkgdGhlIGVudW1EYXRhIG1lbWJlciBvZiB0aGUg dHlwY2FjaGUgZW50cnkuCiAgKi8KIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xv Z2ljYWxwcm90by5oCmluZGV4IGViMGZkMjQuLjQzOTVjMTEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL2xvZ2ljYWxwcm90by5oCkBAIC0xMTMsNiArMTEzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgTG9n aWNhbFJlcFJlbGF0aW9uCiAJY2hhcgkJcmVwbGlkZW50OwkJLyogcmVwbGljYSBpZGVudGl0eSAq LwogCWNoYXIJCXJlbGtpbmQ7CQkvKiByZW1vdGUgcmVsYXRpb24ga2luZCAqLwogCUJpdG1hcHNl dCAgKmF0dGtleXM7CQkvKiBCaXRtYXAgb2Yga2V5IGNvbHVtbnMgKi8KKwlCaXRtYXBzZXQgICph dHR1bmlxdWU7CQkvKiBCaXRtYXAgb2YgdW5pcXVlIGNvbHVtbnMgKi8KIH0gTG9naWNhbFJlcFJl bGF0aW9uOwogCiAvKiBUeXBlIG1hcHBpbmcgaW5mbyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9sb2dpY2FscmVsYXRpb24uaAppbmRleCA3OGNkN2U3Li5kNDlhOTg3IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaAorKysgYi9zcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaApAQCAtMTUsNiArMTUsMTkgQEAKICNpbmNs dWRlICJhY2Nlc3MvYXR0bWFwLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHByb3Rv LmgiCiAKKy8qCisgKglTdGF0ZXMgdG8gZGV0ZXJtaW5lIGlmIGNoYW5nZXMgb24gb25lIHJlbGF0 aW9uIGNhbiBiZSBhcHBsaWVkIHVzaW5nIGFuCisgKglhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4K KyAqLwordHlwZWRlZiBlbnVtIFBhcmFsbGVsQXBwbHlTYWZldHkKK3sKKwlQQVJBTExFTF9BUFBM WV9VTktOT1dOID0gMCwJLyogdW5rbm93biAgKi8KKwlQQVJBTExFTF9BUFBMWV9TQUZFLAkJLyog Q2FuIGFwcGx5IGNoYW5nZXMgdXNpbmcgYW4gYXBwbHkgYmFja2dyb3VuZAorCQkJCQkJCQkgICB3 b3JrZXIgKi8KKwlQQVJBTExFTF9BUFBMWV9VTlNBRkUJCS8qIENhbiBub3QgYXBwbHkgY2hhbmdl cyB1c2luZyBhbiBhcHBseQorCQkJCQkJCQkgICBiYWNrZ3JvdW5kIHdvcmtlciAqLworfSBQYXJh bGxlbEFwcGx5U2FmZXR5OworCiB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwUmVsTWFwRW50cnkK IHsKIAlMb2dpY2FsUmVwUmVsYXRpb24gcmVtb3RlcmVsOwkvKiBrZXkgaXMgcmVtb3RlcmVsLnJl bW90ZWlkICovCkBAIC0zMSw2ICs0NCw4IEBAIHR5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBSZWxN YXBFbnRyeQogCVJlbGF0aW9uCWxvY2FscmVsOwkJLyogcmVsY2FjaGUgZW50cnkgKE5VTEwgd2hl biBjbG9zZWQpICovCiAJQXR0ck1hcCAgICAqYXR0cm1hcDsJCS8qIG1hcCBvZiBsb2NhbCBhdHRy aWJ1dGVzIHRvIHJlbW90ZSBvbmVzICovCiAJYm9vbAkJdXBkYXRhYmxlOwkJLyogQ2FuIGFwcGx5 IHVwZGF0ZXMvZGVsZXRlcz8gKi8KKwlQYXJhbGxlbEFwcGx5U2FmZXR5CXBhcmFsbGVsX2FwcGx5 OwkvKiBDYW4gYXBwbHkgY2hhbmdlcyBpbiBhbiBhcHBseQorCQkJCQkJCQkJCSAgIGJhY2tncm91 bmQgd29ya2VyPyAqLwogCiAJLyogU3luYyBzdGF0ZS4gKi8KIAljaGFyCQlzdGF0ZTsKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIGIvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKaW5kZXggOGYwM2FkNC4uYmE4Njkw MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgK KysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKQEAgLTIwMyw2 ICsyMDMsNyBAQCBleHRlcm4gdm9pZCBhcHBseV9iZ3dvcmtlcl9zZXRfc3RhdHVzKEFwcGx5Qmd3 b3JrZXJTdGF0dXMgc3RhdHVzKTsKIGV4dGVybiB2b2lkIGFwcGx5X2Jnd29ya2VyX3N1YnhhY3Rf aW5mb19hZGQoVHJhbnNhY3Rpb25JZCBjdXJyZW50X3hpZCk7CiBleHRlcm4gdm9pZCBhcHBseV9i Z3dvcmtlcl9zYXZlcG9pbnRfbmFtZShPaWQgc3Vib2lkLCBPaWQgcmVsaWQsCiAJCQkJCQkJCQkJ ICBjaGFyICpzcG5hbWUsIGludCBzenNwKTsKK2V4dGVybiB2b2lkIGFwcGx5X2Jnd29ya2VyX3Jl bGF0aW9uX2NoZWNrKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsKTsKIAogc3RhdGljIGlubGlu ZSBib29sCiBhbV90YWJsZXN5bmNfd29ya2VyKHZvaWQpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS91dGlscy90eXBjYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvdHlwY2FjaGUuaAppbmRleCA0 MzFhZDdmLi5lZDdjMmU3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy90eXBjYWNoZS5o CisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3R5cGNhY2hlLmgKQEAgLTE5OSw2ICsxOTksOCBAQCBl eHRlcm4gdWludDY0IGFzc2lnbl9yZWNvcmRfdHlwZV9pZGVudGlmaWVyKE9pZCB0eXBlX2lkLCBp bnQzMiB0eXBtb2QpOwogCiBleHRlcm4gaW50CWNvbXBhcmVfdmFsdWVzX29mX2VudW0oVHlwZUNh Y2hlRW50cnkgKnRjYWNoZSwgT2lkIGFyZzEsIE9pZCBhcmcyKTsKIAorZXh0ZXJuIExpc3QgKkdl dERvbWFpbkNvbnN0cmFpbnRzKE9pZCB0eXBlX2lkKTsKKwogZXh0ZXJuIHNpemVfdCBTaGFyZWRS ZWNvcmRUeXBtb2RSZWdpc3RyeUVzdGltYXRlKHZvaWQpOwogCiBleHRlcm4gdm9pZCBTaGFyZWRS ZWNvcmRUeXBtb2RSZWdpc3RyeUluaXQoU2hhcmVkUmVjb3JkVHlwbW9kUmVnaXN0cnkgKiwKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwgYi9zcmMvdGVz dC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCmluZGV4IDlmNDk0NmQuLmVkOWVmODQgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKKysrIGIvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbApAQCAtMTMsNyArMTMsNyBAQCB1c2Ug VGVzdDo6TW9yZTsKICMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgogc3ViIHRlc3Rfc3RyZWFt aW5nCiB7Ci0JbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUs ICRpc19wYXJhbGxlbCkgPSBAXzsKKwlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3Jp YmVyLCAkYXBwbmFtZSkgPSBAXzsKIAogCSMgSW50ZXJsZWF2ZSBhIHBhaXIgb2YgdHJhbnNhY3Rp b25zLCBlYWNoIGV4Y2VlZGluZyB0aGUgNjRrQiBsaW1pdC4KIAlteSAkaW4gID0gJyc7CkBAIC0y NCwxNiArMjQsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAlteSAkaCA9ICRub2RlX3B1Ymxpc2hl ci0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIFwkaW4sIFwkb3V0LCAkdGltZXIsCiAJCW9u X2Vycm9yX3N0b3AgPT4gMCk7CiAKLQkjIENoZWNrIHRoYXQgYSBiYWNrZ3JvdW5kIHdvcmtlciBz dGFydHMgaWYgInN0cmVhbWluZyIgcGFyYW1ldGVyIGlzCi0JIyBzcGVjaWZpZWQgYXMgInBhcmFs bGVsIi4gIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMKLQkjIGFi b3V0IHRoYXQsIHNvIHRlbXBvcmFyaWx5IGJ1bXAgdXAgdGhlIGxvZyB2ZXJib3NpdHkuCi0JaWYg KCRpc19wYXJhbGxlbCkKLQl7Ci0JCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0 Z3Jlc3FsLmNvbmYnLAotCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKLQkJJG5vZGVf c3Vic2NyaWJlci0+cmVsb2FkOwotCX0KLQogCSRpbiAuPSBxewogCUJFR0lOOwogCUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MywgNTAwMCkgcyhpKTsKQEAgLTQyLDE0ICszMiw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCX07 CiAJJGgtPnB1bXBfbmI7CiAKLQlpZiAoJGlzX3BhcmFsbGVsKQotCXsKLQkJJG5vZGVfc3Vic2Ny aWJlci0+d2FpdF9mb3JfbG9nKHFyL1xbQXBwbHkgQkdXICNcZCtcXSBzdGFydGVkLywgMCk7Ci0J CSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAotCQkJImxv Z19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7Ci0JCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsK LQl9Ci0KIAkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKIAkJJ3Bvc3RncmVzJywgcXsKIAlC RUdJTjsKQEAgLTE2Myw3ICsxNDUsNyBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCop LCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwg cXEoMnwyfDIpLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicp OwogCi10ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRh cHBuYW1lLCAwKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2Ny aWJlciwgJGFwcG5hbWUpOwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IwogIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKQEAgLTE3Miw4ICsxNTQs MTMgQEAgbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CiAJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9u X25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKICk7CiAKLSRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJBTFRFUiBTVUJTQ1JJUFRJT04g dGFwX3N1YiBTRVQoc3RyZWFtaW5nID0gcGFyYWxsZWwsIGJpbmFyeSA9IG9mZikiKTsKKyMgInN0 cmVhbWluZyA9IHBhcmFsbGVsIiBkb2VzIG5vdCBzdXBwb3J0IG5vbi1pbW11dGFibGUgZnVuY3Rp b25zLCBzbyBjaGFuZ2UKKyMgdGhlIGZ1bmN0aW9uIGluIHRoZSBkZWZ1bHQgZXhwcmVzc2lvbiBv ZiBjb2x1bW4gImMiLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jlcycs IHFxeworQUxURVIgVEFCTEUgdGVzdF90YWIgQUxURVIgQ09MVU1OIGMgU0VUIERFRkFVTFQgdG9f dGltZXN0YW1wKDEyODQzNTIzMjMpOworQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0 cmVhbWluZyA9IHBhcmFsbGVsLCBiaW5hcnkgPSBvZmYpOworfSk7CiAKICRub2RlX3B1Ymxpc2hl ci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQg RlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5h bWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKQEAgLTE4MSw3ICsxNjgsNyBAQCAkbm9kZV9w dWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKICAgb3IgZGllCiAgICJUaW1l ZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBT VUJTQ1JJUFRJT04iOwogCi10ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1 YnNjcmliZXIsICRhcHBuYW1lLCAxKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwg JG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUpOwogCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwog JG5vZGVfcHVibGlzaGVyLT5zdG9wOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0 cmVhbV9zdWJ4YWN0LnBsCmluZGV4IDEwNGExNjkuLmE5MmZjYzQgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbAorKysgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwKQEAgLTEzLDE3ICsxMyw3IEBAIHVz ZSBUZXN0OjpNb3JlOwogIyBzdHJlYW1pbmc9cGFyYWxsZWwgY2FzZXMuCiBzdWIgdGVzdF9zdHJl YW1pbmcKIHsKLQlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFt ZSwgJGlzX3BhcmFsbGVsKSA9IEBfOwotCi0JIyBDaGVjayB0aGF0IGEgYmFja2dyb3VuZCB3b3Jr ZXIgc3RhcnRzIGlmICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcwotCSMgc3BlY2lmaWVkIGFzICJw YXJhbGxlbCIuICBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzCi0J IyBhYm91dCB0aGF0LCBzbyB0ZW1wb3JhcmlseSBidW1wIHVwIHRoZSBsb2cgdmVyYm9zaXR5Lgot CWlmICgkaXNfcGFyYWxsZWwpCi0JewotCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZign cG9zdGdyZXNxbC5jb25mJywKLQkJCSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7Ci0JCSRu b2RlX3N1YnNjcmliZXItPnJlbG9hZDsKLQl9CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVf c3Vic2NyaWJlciwgJGFwcG5hbWUpID0gQF87CiAKIAkjIEluc2VydCwgdXBkYXRlIGFuZCBkZWxl dGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIDY0a0IgbGltaXQuCiAJJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoCkBAIC01MSwxNCArNDEsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAlDT01NSVQ7 CiAJfSk7CiAKLQlpZiAoJGlzX3BhcmFsbGVsKQotCXsKLQkJJG5vZGVfc3Vic2NyaWJlci0+d2Fp dF9mb3JfbG9nKHFyL1xbQXBwbHkgQkdXICNcZCtcXSBzdGFydGVkLywgMCk7Ci0JCSRub2RlX3N1 YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAotCQkJImxvZ19taW5fbWVz c2FnZXMgPSB3YXJuaW5nIik7Ci0JCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKLQl9Ci0KIAkk bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCiAJbXkgJHJlc3Vs dCA9CkBAIC0xMTksNyArMTAxLDcgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgqKSwg Y291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFx KDJ8MnwyKSwgJ2NoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsK IAotdGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBw bmFtZSwgMCk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmli ZXIsICRhcHBuYW1lKTsKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK ICMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAncGFyYWxsZWwnCkBAIC0xMjgsOCArMTEwLDEz IEBAIG15ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAog CSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9u YW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwogCi0kbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgU1VCU0NSSVBUSU9OIHRh cF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIpOworIyAic3RyZWFtaW5nID0gcGFyYWxs ZWwiIGRvZXMgbm90IHN1cHBvcnQgbm9uLWltbXV0YWJsZSBmdW5jdGlvbnMsIHNvIGNoYW5nZQor IyB0aGUgZnVuY3Rpb24gaW4gdGhlIGRlZnVsdCBleHByZXNzaW9uIG9mIGNvbHVtbiAiYyIuCisk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitBTFRFUiBUQUJM RSB0ZXN0X3RhYiBBTFRFUiBDT0xVTU4gYyBTRVQgREVGQVVMVCB0b190aW1lc3RhbXAoMTI4NDM1 MjMyMyk7CitBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQoc3RyZWFtaW5nID0gcGFyYWxs ZWwpOworfSk7CiAKICRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMn LAogCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJF IGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIK QEAgLTEzNyw3ICsxMjQsNyBAQCAkbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bv c3RncmVzJywKICAgb3IgZGllCiAgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkg dG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOwogCi10ZXN0X3N0cmVhbWlu Zygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsKK3Rlc3Rf c3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUpOwog CiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwgYi9z cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbAppbmRleCAwYTQx NTJkLi43OWM2YjA4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdv cGhhc2VfY2FzY2FkZS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhh c2VfY2FzY2FkZS5wbApAQCAtNDcwLDYgKzQ3MCwxNCBAQCB0ZXN0X3N0cmVhbWluZygkbm9kZV9B LCAkbm9kZV9CLCAkbm9kZV9DLCAkYXBwbmFtZV9CLCAkYXBwbmFtZV9DLCAnb24nKTsKICMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFRlc3QgdXNpbmcgc3RyZWFtaW5n IG1vZGUgJ3BhcmFsbGVsJwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KworIyAic3RyZWFtaW5nID0gcGFyYWxsZWwiIGRvZXMgbm90IHN1cHBvcnQgbm9uLWltbXV0YWJs ZSBmdW5jdGlvbnMsIHNvIGNoYW5nZQorIyB0aGUgZnVuY3Rpb24gaW4gdGhlIGRlZnVsdCBleHBy ZXNzaW9uIG9mIGNvbHVtbiAiYyIuCiskbm9kZV9CLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywg IkFMVEVSIFRBQkxFIHRlc3RfdGFiIEFMVEVSIENPTFVNTiBjIFNFVCBERUZBVUxUIHRvX3RpbWVz dGFtcCgxMjg0MzUyMzIzKTsiKTsKKyRub2RlX0MtPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCAi QUxURVIgVEFCTEUgdGVzdF90YWIgQUxURVIgQ09MVU1OIGMgU0VUIERFRkFVTFQgdG9fdGltZXN0 YW1wKDEyODQzNTIzMjMpOyIpOworCiB0ZXN0X3N0cmVhbWluZygkbm9kZV9BLCAkbm9kZV9CLCAk bm9kZV9DLCAkYXBwbmFtZV9CLCAkYXBwbmFtZV9DLCAncGFyYWxsZWwnKTsKIAogIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190 d29waGFzZV9zdHJlYW0ucGwKaW5kZXggZWExZjQ3Ni4uNmY5MjFlZCAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbAorKysgYi9zcmMvdGVz dC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsCkBAIC0xMyw3ICsxMyw3IEBA IHVzZSBUZXN0OjpNb3JlOwogIyBzdHJlYW1pbmc9cGFyYWxsZWwgY2FzZXMuCiBzdWIgdGVzdF9z dHJlYW1pbmcKIHsKLQlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBw bmFtZSwgJGlzX3BhcmFsbGVsKSA9IEBfOworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1 YnNjcmliZXIsICRhcHBuYW1lKSA9IEBfOwogCiAJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwogCSMgVGVzdCAyUEMgUFJFUEFSRSAvIENPTU1JVCBQUkVQQVJFRC4KQEAgLTIzLDE2ICsy Myw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0 ZWQgb24gc3Vic2NyaWJlciBzaWRlIGFmdGVyIHRoZSBjb21taXQuCiAJIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwogCi0JIyBDaGVjayB0aGF0IGEgYmFja2dyb3VuZCB3b3JrZXIgc3Rh cnRzIGlmICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcwotCSMgc3BlY2lmaWVkIGFzICJwYXJhbGxl bCIuICBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzCi0JIyBhYm91 dCB0aGF0LCBzbyB0ZW1wb3JhcmlseSBidW1wIHVwIHRoZSBsb2cgdmVyYm9zaXR5LgotCWlmICgk aXNfcGFyYWxsZWwpCi0JewotCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdy ZXNxbC5jb25mJywKLQkJCSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7Ci0JCSRub2RlX3N1 YnNjcmliZXItPnJlbG9hZDsKLQl9Ci0KIAkjIGNoZWNrIHRoYXQgMlBDIGdldHMgcmVwbGljYXRl ZCB0byBzdWJzY3JpYmVyCiAJIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dz IHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KIAkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgK QEAgLTQzLDE0ICszMyw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCQlERUxFVEUgRlJPTSB0ZXN0 X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CiAJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJl cGFyZWRfdGFiJzt9KTsKIAotCWlmICgkaXNfcGFyYWxsZWwpCi0JewotCQkkbm9kZV9zdWJzY3Jp YmVyLT53YWl0X2Zvcl9sb2cocXIvXFtBcHBseSBCR1cgI1xkK1xdIHN0YXJ0ZWQvLCAwKTsKLQkJ JG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCi0JCQkibG9n X21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKLQkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwot CX0KLQogCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKIAkj IGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJl cgpAQCAtMzMzLDcgKzMxNSw3IEBAIG15ICRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9 IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwyfDIpLCAnY2hlY2sgaW5p dGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi10ZXN0X3N0cmVhbWluZygk bm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKK3Rlc3Rfc3Ry ZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUpOwogCiAj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBUZXN0IHVzaW5nIHN0cmVh bWluZyBtb2RlICdwYXJhbGxlbCcKQEAgLTM0Miw4ICszMjQsMTMgQEAgbXkgJG9sZHBpZCA9ICRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIlNFTEVDVCBwaWQgRlJPTSBw Z19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFO RCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKICk7CiAKLSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAotCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQoc3RyZWFtaW5n ID0gcGFyYWxsZWwpIik7CisjICJzdHJlYW1pbmcgPSBwYXJhbGxlbCIgZG9lcyBub3Qgc3VwcG9y dCBub24taW1tdXRhYmxlIGZ1bmN0aW9ucywgc28gY2hhbmdlCisjIHRoZSBmdW5jdGlvbiBpbiB0 aGUgZGVmdWx0IGV4cHJlc3Npb24gb2YgY29sdW1uICJjIi4KKyRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiIEFMVEVSIENP TFVNTiBjIFNFVCBERUZBVUxUIHRvX3RpbWVzdGFtcCgxMjg0MzUyMzIzKTsKK0FMVEVSIFNVQlND UklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCk7Cit9KTsKIAogJG5vZGVf cHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCiAJIlNFTEVDVCBwaWQgIT0g JG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9 ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgpAQCAtMzUxLDcgKzMzOCw3IEBA ICRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAogICBvciBkaWUK ICAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNo YW5naW5nIFNVQlNDUklQVElPTiI7CiAKLXRlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwg JG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVi bGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSk7CiAKICMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKICMgY2hlY2sgYWxsIHRoZSBjbGVhbnVwCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX2FwcGx5LnBsIGIvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDMyX3N0cmVhbWluZ19hcHBseS5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi40ZGM1N2M4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDMyX3N0cmVhbWluZ19hcHBseS5wbApAQCAtMCwwICsxLDU0NiBAQAorIyBDb3B5 cmlnaHQgKGMpIDIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyMg VGVzdCB0aGUgcmVzdHJpY3Rpb25zIG9mIHN0cmVhbWluZyBtb2RlICJwYXJhbGxlbCIgaW4gbG9n aWNhbCByZXBsaWNhdGlvbi4KKyMgV2l0aG91dCB0aGVzZSByZXN0cmljdGlvbnMsIHRoZSBzdWJz Y3JpYmVyJ3MgYXBwbHkgd29ya2VyIG1heSBmYWxsIGludG8gYW4KKyMgaW5maW5pdGUgd2FpdCB3 aXRob3V0IHRoZSB1c2VyIGtub3dpbmcuCisjCisjIEZvciBub3JtYWwgdGFibGVzLCB3ZSB1c2Ug ZGVhZGxvY2stcHJvZHVjaW5nIHRlc3QgY2FzZXMgdG8gZW5zdXJlIHRoYXQgZnV0dXJlCisjIG1v ZGlmaWNhdGlvbnMgZG8gbm90IGludmFsaWRhdGUgY29uc3RyYWludCBjaGVja3MuCisjCisjIEZv ciBwYXJ0aXRpb25lZCB0YWJsZXMsIHdlIGp1c3QgdXNlIHRlc3QgY2FzZXMgdG8gY29uZmlybSB0 aGF0IHRoZSBjb25zdHJhaW50CisjIGNoZWNrcyBhcmUgYXMgZXhwZWN0ZWQuCisKK3VzZSBzdHJp Y3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQ b3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOworCitteSAkb2Zmc2V0ID0g MDsKKworIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKK215ICRub2RlX3B1Ymxpc2hlciA9IFBvc3Rn cmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7Ciskbm9kZV9wdWJsaXNoZXIt PmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOworJG5vZGVfcHVibGlzaGVyLT5h cHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwknbG9naWNhbF9kZWNvZGluZ193b3JrX21l bSA9IDY0a0InKTsKKyRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CisKKyMgQ3JlYXRlIHN1YnNjcmli ZXIgbm9kZQorbXkgJG5vZGVfc3Vic2NyaWJlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXIt Pm5ldygnc3Vic2NyaWJlcicpOworJG5vZGVfc3Vic2NyaWJlci0+aW5pdDsKKyRub2RlX3N1YnNj cmliZXItPnN0YXJ0OworCisjIFNldHVwIHN0cnVjdHVyZSBvbiBwdWJsaXNoZXIKKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0ZXN0X3RhYjEg KGEgaW50KSIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JF QVRFIFRBQkxFIHRlc3RfdGFiMiAoYSBpbnQpIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uZWQgKGEgaW50 IHByaW1hcnkga2V5LCBiIHZhcmNoYXIpIik7CisKKyMgU2V0dXAgc3RydWN0dXJlIG9uIHN1YnNj cmliZXIKKyMgV2UgbmVlZCB0byB0ZXN0IG5vcm1hbCB0YWJsZSBhbmQgcGFydGl0aW9uIHRhYmxl LgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJM RSB0ZXN0X3RhYjEgKGEgaW50KSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0ZXN0X3RhYjIgKGEgaW50KSIpOworJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0ZXN0X3RhYl9wYXJ0 aXRpb25lZCAoYSBpbnQgcHJpbWFyeSBrZXksIGIgdmFyY2hhcikgUEFSVElUSU9OIEJZIFJBTkdF KGEpIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRF IFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiAoTElLRSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCkiKTsK KyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0 ZXN0X3RhYl9wYXJ0aXRpb25lZCBBVFRBQ0ggUEFSVElUSU9OIHRlc3RfdGFiX3BhcnRpdGlvbiBE RUZBVUxUIgorKTsKKworIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uCitteSAkcHVibGlzaGVy X2Nvbm5zdHIgPSAkbm9kZV9wdWJsaXNoZXItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7 Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElD QVRJT04gdGFwX3B1Yl9ub3JtYWwgRk9SIFRBQkxFIHRlc3RfdGFiMSwgdGVzdF90YWIyIik7Cisk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJ T04gdGFwX3B1Yl9wYXJ0aXRpb25lZCBGT1IgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uZWQiKTsK KworbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo CisJJ3Bvc3RncmVzJywgIgorCUNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YgorCUNPTk5FQ1RJ T04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJworCVBVQkxJ Q0FUSU9OIHRhcF9wdWJfbm9ybWFsLCB0YXBfcHViX3BhcnRpdGlvbmVkCisJV0lUSCAoc3RyZWFt aW5nID0gcGFyYWxsZWwsIGNvcHlfZGF0YSA9IGZhbHNlKSIpOworCiskbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjIEludGVybGVhdmUgYSBwYWlyIG9mIHRy YW5zYWN0aW9ucywgZWFjaCBleGNlZWRpbmcgdGhlIDY0a0IgbGltaXQuCitteSAkaW4gID0gJyc7 CitteSAkb3V0ID0gJyc7CisKK215ICR0aW1lciA9IElQQzo6UnVuOjp0aW1lb3V0KCRQb3N0Z3Jl U1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0KTsKKworbXkgJGggPSAkbm9kZV9wdWJs aXNoZXItPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBcJGluLCBcJG91dCwgJHRpbWVyLAor CW9uX2Vycm9yX3N0b3AgPT4gMCk7CisKKyMgSXQgaXMgbm90IGFsbG93ZWQgdGhhdCB0aGUgdW5p cXVlIGNvbHVtbiBpbiB0aGUgcmVsYXRpb24gb24gdGhlCisjIHN1YnNjcmliZXItc2lkZSBpcyBu b3QgdGhlIHVuaXF1ZSBjb2x1bW4gb24gdGhlIHB1Ymxpc2hlci1zaWRlLiBDaGVjayB0aGUKKyMg ZXJyb3IgcmVwb3J0ZWQgYnkgYmFja2dyb3VuZCB3b3JrZXIgaW4gdGhpcyBjYXNlLgorIyBGaXJz dCB3ZSBjaGVjayB0aGUgdW5pcXVlIGluZGV4IG9uIG5vcm1hbCB0YWJsZS4KKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVU5JUVVFIElOREVYIGlkeF90 YWIxIG9uIHRlc3RfdGFiMShhKSIpOworCiskaW4gLj0gcXsKK0JFR0lOOworSU5TRVJUIElOVE8g dGVzdF90YWIxIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7Cit9 OworJGgtPnB1bXBfbmI7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJJTlNFUlQgSU5UTyB0ZXN0X3RhYjEgdmFsdWVzKDEpIik7CisKKyRpbiAuPSBxeworQ09NTUlU OworXHEKK307CiskaC0+ZmluaXNoOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2co CisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0 aW9uICJwdWJsaWMudGVzdF90YWIxIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVh bWluZz1wYXJhbGxlbC8sCisJJG9mZnNldCk7CisKKyMgRHJvcCB0aGUgdW5pcXVlIGluZGV4IG9u IHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVggaWR4X3RhYjEiKTsKKworJG5vZGVfcHVibGlzaGVy LT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworbXkgJHJlc3VsdCA9CisgICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVz dF90YWIxIik7CitpcygkcmVzdWx0LCBxcSg1MDAxKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJz Y3JpYmVyIGFmdGVyIGRyb3BwaW5nIGluZGV4Jyk7CisKKyMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZy b20gdGhlIGVudmlyb25tZW50LgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIlRSVU5DQVRFIFRBQkxFIHRlc3RfdGFiMSIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lKTsKKworIyBUaGVuIHdlIGNoZWNrIHRoZSB1bmlxdWUgaW5kZXgg b24gcGFydGl0aW9uIHRhYmxlLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIkNSRUFURSBVTklRVUUgSU5ERVggdGVzdF90YWJfYl9wYXJ0aXRpb25faWR4IE9OIHRl c3RfdGFiX3BhcnRpdGlvbiAoYikiKTsKKworIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJv bSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gdGVzdF90 YWJfcGFydGl0aW9uZWQgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCA1MDAwKSBzKGkpIgorKTsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAor CXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlv biAicHVibGljLnRlc3RfdGFiX3BhcnRpdGlvbmVkIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1l dGVyIHN0cmVhbWluZz1wYXJhbGxlbC8sCisJJG9mZnNldCk7CisKKyMgRHJvcCB0aGUgdW5pcXVl IGluZGV4IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVggdGVzdF90YWJfYl9wYXJ0aXRpb25f aWR4Iik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisK KyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNF TEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3BhcnRpdGlvbmVkIik7CitpcygkcmVzdWx0LCBx cSg1MDAwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGlu ZGV4Jyk7CisKKyMgVHJpZ2dlcnMgd2hpY2ggZXhlY3V0ZSBub24taW1tdXRhYmxlIGZ1bmN0aW9u IGFyZSBub3QgYWxsb3dlZCBvbiB0aGUKKyMgc3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJy b3IgcmVwb3J0ZWQgYnkgYmFja2dyb3VuZCB3b3JrZXIgaW4gdGhpcyBjYXNlLgorIyBGaXJzdCB3 ZSBjaGVjayB0aGUgdHJpZ2dlciBmdW5jdGlvbiBvbiBub3JtYWwgdGFibGUuCiskbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVU5JUVVFIElOREVYIGlkeF90 YWIyIG9uIHRlc3RfdGFiMihhKSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIkNSRUFURSBVTklRVUUgSU5ERVggaWR4X3RhYjIgb24gdGVzdF90YWIyKGEpIik7 CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0NSRUFU RSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmNfdGFiMSgpIFJFVFVSTlMgVFJJR0dFUiBBUyBcJFwkCisg IEJFR0lOCisgICAgSU5TRVJUIElOVE8gcHVibGljLnRlc3RfdGFiMiBWQUxVRVMgKE5FVy4qKTsK KyAgICBSRVRVUk4gTkVXOworICBFTkQKK1wkXCQgbGFuZ3VhZ2UgcGxwZ3NxbDsKK0NSRUFURSBU UklHR0VSIHRyaV90YWIxCitCRUZPUkUgSU5TRVJUIE9OIHB1YmxpYy50ZXN0X3RhYjEKK0ZPUiBF QUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmNfdGFiMSgpOworQUxURVIgVEFC TEUgdGVzdF90YWIxIEVOQUJMRSBSRVBMSUNBIFRSSUdHRVIgdHJpX3RhYjE7Cit9KTsKKworIyBD aGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVf c3Vic2NyaWJlci0+bG9nZmlsZTsKKworJGluIC49IHF7CitCRUdJTjsKK0lOU0VSVCBJTlRPIHRl c3RfdGFiMSBWQUxVRVMoNTAwMSk7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYjIgU0VMRUNUIGkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKTsKK307CiskaC0+cHVtcF9uYjsKKworJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfdGFi MSBWQUxVRVMoNTAwMSkiKTsKKworJGluIC49IHF7CitDT01NSVQ7CitccQorfTsKKyRoLT5maW5p c2g7CisKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9FUlJPUjogKCBbQS1a MC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3Rh YjEiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nPXBhcmFsbGVsLywKKwkk b2Zmc2V0KTsKKworIyBEcm9wIHRoZSB0cmlnZ2VyIG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQg d29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiRFJPUCBU UklHR0VSIHRyaV90YWIxIE9OIHB1YmxpYy50ZXN0X3RhYjEiKTsKKworJG5vZGVfcHVibGlzaGVy LT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90 YWIxIik7CitpcygkcmVzdWx0LCBxcSgyKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVy IGFmdGVyIGRyb3BwaW5nIHRyaWdnZXInKTsKKworIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0 aGUgZW52aXJvbm1lbnQuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVz JywgcXF7CitEUk9QIGZ1bmN0aW9uIHRyaWdnZXJfZnVuY190YWIxOworRFJPUCBJTkRFWCBpZHhf dGFiMjsKK30pOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7 CitEUk9QIElOREVYIGlkeF90YWIyOworVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIxOworVFJVTkNB VEUgVEFCTEUgdGVzdF90YWIyOworfSk7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOworCisjIFRoZW4gd2UgY2hlY2sgdGhlIHRyaWdnZXIgZnVuY3Rpb24gb24g cGFydGl0aW9uIHRhYmxlLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jl cycsIHFxeworQ1JFQVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuYygpIFJFVFVSTlMgVFJJR0dFUiBB UyBcJFwkCisgIEJFR0lOCisgICAgUkVUVVJOIE5VTEw7CisgIEVORAorXCRcJCBsYW5ndWFnZSBw bHBnc3FsOworQ1JFQVRFIFRSSUdHRVIgaW5zZXJ0X3RyaWcKK0JFRk9SRSBJTlNFUlQgT04gdGVz dF90YWJfcGFydGl0aW9uCitGT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9m dW5jKCk7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gRU5BQkxFIFJFUExJQ0EgVFJJ R0dFUiBpbnNlcnRfdHJpZzsKK30pOworCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9t IG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWJf cGFydGl0aW9uZWQiKTsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VS Uk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVi bGljLnRlc3RfdGFiX3BhcnRpdGlvbmVkIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0 cmVhbWluZz1wYXJhbGxlbC8sCisJJG9mZnNldCk7CisKKyMgRHJvcCB0aGUgdHJpZ2dlciBvbiB0 aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIkRST1AgVFJJR0dFUiBpbnNlcnRfdHJpZyBPTiB0ZXN0X3RhYl9wYXJ0 aXRpb24iKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsK KworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKK2lzKCRyZXN1bHQs IHFxKDApLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgdHJp Z2dlcicpOworCisjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQgY29sdW1uIGRlZmF1bHQgdmFsdWUg ZXhwcmVzc2lvbiBjb250YWlucyBhCisjIG5vbi1pbW11dGFibGUgZnVuY3Rpb24gb24gdGhlIHN1 YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5CisjIGJhY2tncm91bmQg d29ya2VyIGluIHRoaXMgY2FzZS4KKyMgRmlyc3Qgd2UgY2hlY2sgdGhlIGNvbHVtbiBkZWZhdWx0 IHZhbHVlIGV4cHJlc3Npb24gb24gbm9ybWFsIHRhYmxlLgorJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfdGFiMiBWQUxVRVMoMSkiKTsKKwor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQ1JFQVRFIEZV TkNUSU9OIGZ1bmNfY291bnRfdGFiMigpIFJFVFVSTlMgSU5UIEFTIFwkXCQKKyAgQkVHSU4KKyAg ICBSRVRVUk4gKFNFTEVDVCBjb3VudCgqKSBGUk9NIHB1YmxpYy50ZXN0X3RhYjIpOworICBFTkQK K1wkXCQgbGFuZ3VhZ2UgcGxwZ3NxbDsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiMSBBREQgQ09MVU1O IGIgaW50IERFRkFVTFQgZnVuY19jb3VudF90YWIyKCk7Cit9KTsKKworIyBDaGVjayB0aGUgc3Vi c2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+ bG9nZmlsZTsKKworJGluIC49IHF7CitCRUdJTjsKK1RSVU5DQVRFIHRlc3RfdGFiMjsKK0lOU0VS VCBJTlRPIHRlc3RfdGFiMSBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBz KGkpOworfTsKKyRoLT5wdW1wX25iOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiSU5TRVJUIElOVE8gdGVzdF90YWIxKGEpIFZBTFVFUygxKSIpOworCiskaW4gLj0g cXsKK0NPTU1JVDsKK1xxCit9OworJGgtPmZpbmlzaDsKKworJG5vZGVfc3Vic2NyaWJlci0+d2Fp dF9mb3JfbG9nKAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRh cmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiMSIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFt ZXRlciBzdHJlYW1pbmc9cGFyYWxsZWwvLAorCSRvZmZzZXQpOworCisjIERyb3AgZGVmYXVsdCB2 YWx1ZSBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiMSBBTFRFUiBDT0xV TU4gYiBEUk9QIERFRkFVTFQiKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIxIik7CitpcygkcmVzdWx0 LCBxcSg1MDAxKSwKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBp bmcgZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uJyk7CisKKyMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZy b20gdGhlIGVudmlyb25tZW50LgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgRFJPUCBDT0xVTU4gYiIpOworJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIFRBQkxFIHRlc3RfdGFiMSIpOwor JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIFRBQkxFIHRl c3RfdGFiMiIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsK KworIyBUaGVuIHdlIGNoZWNrIHRoZSBjb2x1bW4gZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uIG9u IHBhcnRpdGlvbiB0YWJsZS4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gQUxURVIgQ09MVU1OIGIgU0VUIERF RkFVTFQgcmFuZG9tKCkiKTsKKworIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cg b24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gdGVzdF90YWJfcGFy dGl0aW9uZWQgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1 MDAwKSBzKGkpIgorKTsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VS Uk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVi bGljLnRlc3RfdGFiX3BhcnRpdGlvbmVkIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0 cmVhbWluZz1wYXJhbGxlbC8sCisJJG9mZnNldCk7CisKKyMgRHJvcCBkZWZhdWx0IHZhbHVlIG9u IHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIEFMVEVSIENP TFVNTiBiIERST1AgREVGQVVMVCIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIp OworaXMoJHJlc3VsdCwgcXEoNTAwMCksCisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVy IGFmdGVyIGRyb3BwaW5nIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbicpOworCisjIEl0IGlzIG5v dCBhbGxvd2VkIHRoYXQgZG9tYWluIGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBjb250YWlucyBhIG5v bi1pbW11dGFibGUKKyMgZnVuY3Rpb24gb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhl IGVycm9yIHJlcG9ydGVkIGJ5IGJhY2tncm91bmQKKyMgd29ya2VyIGluIHRoaXMgY2FzZS4KKyMg QmVjYXVzZSB0aGUgY29sdW1uIHR5cGUgb2YgdGhlIHBhcnRpdGlvbiB0YWJsZSBtdXN0IGJlIHRo ZSBzYW1lIGFzIGl0cyBwYXJlbnQKKyMgdGFibGUsIG9ubHkgdGVzdCBub3JtYWwgdGFibGUgaGVy ZS4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0 ZXN0X3RhYjIgVkFMVUVTKDEpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdw b3N0Z3JlcycsIHFxeworQ1JFQVRFIERPTUFJTiB0bXBfZG9tYWluIEFTIGludCBDSEVDSyAoVkFM VUUgPiAtMSk7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgQUxURVIgQ09MVU1OIGEgVFlQRSB0bXBf ZG9tYWluOworfSk7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMn LCBxcXsKK0NSRUFURSBET01BSU4gdG1wX2RvbWFpbiBBUyBJTlQgQ0hFQ0sgKFZBTFVFID49IGZ1 bmNfY291bnRfdGFiMigpKTsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiMSBBTFRFUiBDT0xVTU4gYSBU WVBFIHRtcF9kb21haW47Cit9KTsKKworIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBu b3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworJGluIC49 IHF7CitCRUdJTjsKK1RSVU5DQVRFIHRlc3RfdGFiMjsKK0lOU0VSVCBJTlRPIHRlc3RfdGFiMSBT RUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpOworfTsKKyRoLT5wdW1w X25iOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElO VE8gdGVzdF90YWIxKGEpIFZBTFVFUygxKSIpOworCiskaW4gLj0gcXsKK0NPTU1JVDsKK1xxCit9 OworJGgtPmZpbmlzaDsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VS Uk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVi bGljLnRlc3RfdGFiMSIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmc9cGFy YWxsZWwvLAorCSRvZmZzZXQpOworCisjIERyb3AgZG9tYWluIGNvbnN0cmFpbnQgZXhwcmVzc2lv biBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiMSBBTFRFUiBDT0xVTU4g YSBUWVBFIGludCIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjEiKTsKK2lzKCRyZXN1bHQsIHFxKDUw MDEpLAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBkb21h aW4gY29uc3RyYWludCBleHByZXNzaW9uJworKTsKKworIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJv bSB0aGUgZW52aXJvbm1lbnQuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIxIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIyIik7Ciskbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjIEl0IGlzIG5vdCBhbGxvd2VkIHRo YXQgY29uc3RyYWludCBleHByZXNzaW9uIGNvbnRhaW5zIGEgbm9uLWltbXV0YWJsZSBmdW5jdGlv bgorIyBvbiB0aGUgc3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkg YmFja2dyb3VuZCB3b3JrZXIgaW4gdGhpcworIyBjYXNlLgorIyBGaXJzdCB3ZSBjaGVjayB0aGUg Y29uc3RyYWludCBleHByZXNzaW9uIG9uIG5vcm1hbCB0YWJsZS4KKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0ZXN0X3RhYjIgVkFMVUVTKDEpIik7 CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0FMVEVS IFRBQkxFIHRlc3RfdGFiMSBBREQgQ09OU1RSQUlOVCBjb25zdF90YWIxIENIRUNLKGEgPj0gZnVu Y19jb3VudF90YWIyKCkpOworfSk7CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20g bm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRpbiAu PSBxeworQkVHSU47CitUUlVOQ0FURSB0ZXN0X3RhYjI7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYjEg U0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKTsKK307CiskaC0+cHVt cF9uYjsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJ TlRPIHRlc3RfdGFiMShhKSBWQUxVRVMoMSkiKTsKKworJGluIC49IHF7CitDT01NSVQ7CitccQor fTsKKyRoLT5maW5pc2g7CisKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9F UlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1 YmxpYy50ZXN0X3RhYjEiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nPXBh cmFsbGVsLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIGNvbnN0cmFpbnQgb24gdGhlIHN1YnNjcmli ZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgRFJPUCBDT05TVFJBSU5UIGNvbnN0X3RhYjEiKTsK KworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJlc3Vs dCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNv dW50KCopIEZST00gdGVzdF90YWIxIik7CitpcygkcmVzdWx0LCBxcSg1MDAxKSwKKwknZGF0YSBy ZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgY29uc3RyYWludCBleHByZXNz aW9uJyk7CisKKyMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgorJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIFRBQkxFIHRlc3Rf dGFiMSIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRF IFRBQkxFIHRlc3RfdGFiMiIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKKworIyBUaGVuIHdlIGNoZWNrIHRoZSBjb25zdHJhaW50IGV4cHJlc3Npb24gb24g cGFydGl0aW9uIHRhYmxlLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jl cycsIHFxeworQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIEFERCBDT05TVFJBSU5UIHRl c3RfdGFiX2NvbiBjaGVjayAoYSA+IHJhbmRvbSgpKTsKK30pOworCisjIENoZWNrIHRoZSBzdWJz Y3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5s b2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRF IEZST00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9m b3JfbG9nKAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdl dCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiX3BhcnRpdGlvbmVkIiB1c2luZyBzdWJzY3JpcHRp b24gcGFyYW1ldGVyIHN0cmVhbWluZz1wYXJhbGxlbC8sCisJJG9mZnNldCk7CisKKyMgRHJvcCBj b25zdHJhaW50IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0 aW9uIERST1AgQ09OU1RSQUlOVCB0ZXN0X3RhYl9jb24iKTsKKworJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJf cGFydGl0aW9uZWQiKTsKK2lzKCRyZXN1bHQsIHFxKDApLAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8g c3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBjb25zdHJhaW50IGV4cHJlc3Npb24nKTsKKworIyBJ dCBpcyBub3QgYWxsb3dlZCB0aGF0IGZvcmVpZ24ga2V5IG9uIHRoZSBzdWJzY3JpYmVyIHNpZGUu IENoZWNrIHRoZSBlcnJvcgorIyByZXBvcnRlZCBieSBiYWNrZ3JvdW5kIHdvcmtlciBpbiB0aGlz IGNhc2UuCisjIEZpcnN0IHdlIGNoZWNrIHRoZSBmb3JlaWduIGtleSBvbiBub3JtYWwgdGFibGUu Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0NSRUFURSBU QUJMRSB0YWJfbm9wdWJsaWMoYSBpbnQpOworQUxURVIgVEFCTEUgdGVzdF90YWIyIEFERCBQUklN QVJZIEtFWSAoYSk7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYjIgUkVQTElDQSBJREVOVElUWSBGVUxM OworSU5TRVJUIElOVE8gdGVzdF90YWIyIFZBTFVFUygxKTsKK30pOworJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJBTFRFUiBUQUJMRSB0ZXN0X3RhYjIgQUREIFBSSU1B UlkgS0VZIChhKTsiKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jl cycsIHFxeworQUxURVIgVEFCTEUgdGVzdF90YWIxIEFERCBDT05TVFJBSU5UIHRlc3RfdGFiMWZr IEZPUkVJR04gS0VZKGEpIFJFRkVSRU5DRVMgdGVzdF90YWIyKGEpOworU0VMRUNUICdBTFRFUiBU QUJMRSB0ZXN0X3RhYjEgRU5BQkxFIFJFUExJQ0EgVFJJR0dFUiAiJyB8fCB0Z25hbWUgfHwgJyIn IEZST00gcGdfdHJpZ2dlciBXSEVSRSB0Z3JlbGlkID0gJ3Rlc3RfdGFiMSc6OnJlZ2NsYXNzOjpv aWQgXFxnZXhlYworfSk7CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9u LgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRpbiAuPSBxewor QkVHSU47CitJTlNFUlQgSU5UTyB0ZXN0X3RhYjEoYSkgVkFMVUVTKDEpOworSU5TRVJUIElOVE8g dGFiX25vcHVibGljIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7 Cit9OworJGgtPnB1bXBfbmI7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYjIiKTsKKworJGluIC49IHF7CitDT01NSVQ7CitccQor fTsKKyRoLT5maW5pc2g7CisKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9F UlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1 YmxpYy50ZXN0X3RhYjEiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nPXBh cmFsbGVsLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIHRoZSBmb3JlaWduIGtleSBjb25zdHJhaW50 IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIkFMVEVSIFRBQkxFIHRlc3RfdGFiMSBEUk9QIENPTlNUUkFJTlQg dGVzdF90YWIxZmsiKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIxIik7CitpcygkcmVzdWx0LCBxcSgx KSwKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgdGhlIGZv cmVpZ24ga2V5Jyk7CisKKyMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50 LgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIFRBQkxF IHRlc3RfdGFiMSIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRS VU5DQVRFIFRBQkxFIHRlc3RfdGFiMiIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKKworIyBUaGVuIHdlIGNoZWNrIHRoZSBmb3JlaWduIGtleSBvbiBwYXJ0 aXRpb24gdGFibGUuCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQ1JFQVRF IFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbl9mIChhIGludCBwcmltYXJ5IGtleSk7CitBTFRFUiBU QUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gQUREIENPTlNUUkFJTlQgdGVzdF90YWJfcGF0aXRpb25f ZmsgRk9SRUlHTiBLRVkoYSkgUkVGRVJFTkNFUyB0ZXN0X3RhYl9wYXJ0aXRpb25fZihhKTsKK30p OworCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAt cyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYl9wYXJ0aXRpb25lZCBTRUxFQ1Qg aSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSkiCispOwor Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0r Oik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJfcGFy dGl0aW9uZWQiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nPXBhcmFsbGVs LywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIHRoZSBmb3JlaWduIGtleSBjb25zdHJhaW50IG9uIHRo ZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIERST1AgQ09OU1RS QUlOVCB0ZXN0X3RhYl9wYXRpdGlvbl9mayIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRp b25lZCIpOworaXMoJHJlc3VsdCwgcXEoNTAwMCksCisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJz Y3JpYmVyIGFmdGVyIGRyb3BwaW5nIHRoZSBmb3JlaWduIGtleScpOworCiskbm9kZV9zdWJzY3Jp YmVyLT5zdG9wOworJG5vZGVfcHVibGlzaGVyLT5zdG9wOworCitkb25lX3Rlc3RpbmcoKTsKZGlm ZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggOWVmN2JjMS4uMTJmNDEwMyAxMDA2NDQKLS0tIGEv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QKQEAgLTE4OTEsNiArMTg5MSw3IEBAIFBhZ2VYTG9nUmVjUHRyCiBQYWdl dGFibGVFbnRyeQogUGFpcnMKIFBhcmFsbGVsQXBwZW5kU3RhdGUKK1BhcmFsbGVsQXBwbHlTYWZl dHkKIFBhcmFsbGVsQml0bWFwSGVhcFN0YXRlCiBQYXJhbGxlbEJsb2NrVGFibGVTY2FuRGVzYwog UGFyYWxsZWxCbG9ja1RhYmxlU2NhbldvcmtlcgotLSAKMi43LjIud2luZG93cy4xCgo= --_006_OS0PR01MB57160A440C9821C48ABD4D9C94649OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v21-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch" Content-Description: v21-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch Content-Disposition: attachment; filename="v21-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch"; size=31616; creation-date="Thu, 11 Aug 2022 07:47:00 GMT"; modification-date="Thu, 11 Aug 2022 07:47:54 GMT" Content-Transfer-Encoding: base64 RnJvbSAzMzFhZTM0YjlhNGY3ZWQzNDM0NjRkNjQ1MzE1NjFmNDU3NTI3NWY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB3YW5ndyA8d2FuZ3cuZm5zdEBmdWppdHN1LmNvbT4KRGF0ZTog V2VkLCAxNSBKdW4gMjAyMiAxMTowMjowOCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjIxIDQvNV0g UmV0cnkgdG8gYXBwbHkgc3RyZWFtaW5nIHhhY3Qgb25seSBpbiBhcHBseSB3b3JrZXIKCldoZW4g dGhlIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgaXMgc2V0IHN0cmVhbWluZz1wYXJhbGxlbCwgdGhl IGxvZ2ljIHRyaWVzIHRvCmFwcGx5IHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdXNpbmcgYW4g YXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuIElmIHRoaXMKZmFpbHMgdGhlIGJhY2tncm91bmQgd29y a2VyIGV4aXRzIHdpdGggYW4gZXJyb3IuCgpJbiB0aGlzIGNhc2UsIHJldHJ5IGFwcGx5aW5nIHRo ZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdXNpbmcgdGhlIG5vcm1hbApzdHJlYW1pbmc9b24gbW9k ZS4gVGhpcyBpcyBkb25lIHRvIGF2b2lkIGdldHRpbmcgY2F1Z2h0IGluIGEgbG9vcCBvZiB0aGUg c2FtZQpyZXRyeSBlcnJvcnMuCgpBIG5ldyBmbGFnIGZpZWxkICJzdWJyZXRyeSIgaGFzIGJlZW4g aW50cm9kdWNlZCB0byBjYXRhbG9nICJwZ19zdWJzY3JpcHRpb24iLgpJZiB0aGUgc3Vic2NyaWJl ciBleGl0cyB3aXRoIGFuIGVycm9yLCB0aGlzIGZsYWcgd2lsbCBiZSBzZXQgdHJ1ZSwgYW5kCndo ZW5ldmVyIHRoZSB0cmFuc2FjdGlvbiBpcyBhcHBsaWVkIHN1Y2Nlc3NmdWxseSwgdGhpcyBmbGFn IGlzIHJlc2V0IGZhbHNlLgpOb3csIHdoZW4gZGVjaWRpbmcgaG93IHRvIGFwcGx5IGEgc3RyZWFt aW5nIHRyYW5zYWN0aW9uLCB0aGUgbG9naWMgY2FuIGtub3cgaWYKdGhpcyB0cmFuc2FjdGlvbiBo YXMgcHJldmlvdXNseSBmYWlsZWQgb3Igbm90IChieSBjaGVja2luZyB0aGUgInN1YnJldHJ5Igpm aWVsZCkuCi0tLQogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgICAg ICAgfCAgIDkgKysKIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sICAg ICAgIHwgICA1ICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMgICAgICAg ICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCAgICAgICAg ICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgICAg ICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3b3Jr ZXIuYyB8ICAxNiArKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMg ICAgICAgIHwgMTczICsrKysrKysrKysrKysrKysrLS0tLS0tLQogc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXAuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9pbmNsdWRlL2NhdGFs b2cvcGdfc3Vic2NyaXB0aW9uLmggICAgICAgICAgIHwgICA0ICsKIHNyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAzMl9zdHJlYW1pbmdfYXBwbHkucGwgIHwgMTY4ICsrKysrKysrKysrKysrKy0tLS0t LS0tCiAxMCBmaWxlcyBjaGFuZ2VkLCAyNzIgaW5zZXJ0aW9ucygrKSwgMTEyIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21s L2NhdGFsb2dzLnNnbWwKaW5kZXggNDljZjk0Mi4uN2Y0OTU4YiAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAg LTc5MTAsNiArNzkxMCwxNSBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0 aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogCiAgICAgIDxyb3c+ CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29s dW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5zdWJyZXRyeTwvc3RydWN0Zmll bGQ+IDx0eXBlPmJvb2w8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAg ICBUcnVlIGlmIHRoZSBwcmV2aW91cyBhcHBseSBjaGFuZ2UgZmFpbGVkLCBuZWNlc3NpdGF0aW5n IGEgcmV0cnkKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93 PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNv bHVtbl9kZWZpbml0aW9uIj4KICAgICAgICA8c3RydWN0ZmllbGQ+c3ViY29ubmluZm88L3N0cnVj dGZpZWxkPiA8dHlwZT50ZXh0PC90eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCBiL2Rv Yy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCmluZGV4IDhlMWI3YWMuLmVh Y2E2MDMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCkBAIC0y NDUsNiArMjQ1LDExIEBAIENSRUFURSBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnN1YnNjcmlwdGlvbl9uYW1lPC9yZXBsYWNlYWJsCiAgICAgICAgICAgYWxzbyBi ZSB0aGUgdW5pcXVlIGNvbHVtbiBvbiB0aGUgcHVibGlzaGVyLXNpZGU7IDIpIHRoZXJlIGNhbm5v dCBiZQogICAgICAgICAgIGFueSBub24taW1tdXRhYmxlIGZ1bmN0aW9ucyB1c2VkIGJ5IHRoZSBz dWJzY3JpYmVyLXNpZGUgcmVwbGljYXRlZAogICAgICAgICAgIHRhYmxlLgorICAgICAgICAgIFdo ZW4gYXBwbHlpbmcgYSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24sIGlmIGVpdGhlciByZXF1aXJlbWVu dCBpcyBub3QKKyAgICAgICAgICBtZXQsIHRoZSBiYWNrZ3JvdW5kIHdvcmtlciB3aWxsIGV4aXQg d2l0aCBhbiBlcnJvci4KKyAgICAgICAgICBUaGUgPGxpdGVyYWw+cGFyYWxsZWw8L2xpdGVyYWw+ IG1vZGUgaXMgZGlzcmVnYXJkZWQgd2hlbiByZXRyeWluZzsKKyAgICAgICAgICBpbnN0ZWFkIHRo ZSB0cmFuc2FjdGlvbiB3aWxsIGJlIGFwcGxpZWQgdXNpbmcgPGxpdGVyYWw+b248L2xpdGVyYWw+ CisgICAgICAgICAgbW9kZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4K ICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv cGdfc3Vic2NyaXB0aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5j CmluZGV4IGE1MDZmYzMuLjcyM2IxNDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv cGdfc3Vic2NyaXB0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRp b24uYwpAQCAtNzEsNiArNzEsNyBAQCBHZXRTdWJzY3JpcHRpb24oT2lkIHN1YmlkLCBib29sIG1p c3Npbmdfb2spCiAJc3ViLT5zdHJlYW0gPSBzdWJmb3JtLT5zdWJzdHJlYW07CiAJc3ViLT50d29w aGFzZXN0YXRlID0gc3ViZm9ybS0+c3VidHdvcGhhc2VzdGF0ZTsKIAlzdWItPmRpc2FibGVvbmVy ciA9IHN1YmZvcm0tPnN1YmRpc2FibGVvbmVycjsKKwlzdWItPnJldHJ5ID0gc3ViZm9ybS0+c3Vi cmV0cnk7CiAKIAkvKiBHZXQgY29ubmluZm8gKi8KIAlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihT VUJTQ1JJUFRJT05PSUQsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92 aWV3cy5zcWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKaW5kZXggZjM2 OWIxZi4uODI4NGNkZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmll d3Muc3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAtMTI5 OSw3ICsxMjk5LDcgQEAgUkVWT0tFIEFMTCBPTiBwZ19yZXBsaWNhdGlvbl9vcmlnaW5fc3RhdHVz IEZST00gcHVibGljOwogUkVWT0tFIEFMTCBPTiBwZ19zdWJzY3JpcHRpb24gRlJPTSBwdWJsaWM7 CiBHUkFOVCBTRUxFQ1QgKG9pZCwgc3ViZGJpZCwgc3Vic2tpcGxzbiwgc3VibmFtZSwgc3Vib3du ZXIsIHN1YmVuYWJsZWQsCiAgICAgICAgICAgICAgIHN1YmJpbmFyeSwgc3Vic3RyZWFtLCBzdWJ0 d29waGFzZXN0YXRlLCBzdWJkaXNhYmxlb25lcnIsCi0gICAgICAgICAgICAgIHN1YnNsb3RuYW1l LCBzdWJzeW5jY29tbWl0LCBzdWJwdWJsaWNhdGlvbnMsIHN1Ym9yaWdpbikKKyAgICAgICAgICAg ICAgc3VicmV0cnksIHN1YnNsb3RuYW1lLCBzdWJzeW5jY29tbWl0LCBzdWJwdWJsaWNhdGlvbnMs IHN1Ym9yaWdpbikKICAgICBPTiBwZ19zdWJzY3JpcHRpb24gVE8gcHVibGljOwogCiBDUkVBVEUg VklFVyBwZ19zdGF0X3N1YnNjcmlwdGlvbl9zdGF0cyBBUwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vi c2NyaXB0aW9uY21kcy5jCmluZGV4IDc4YjdlZTcuLmEwMjM3NTIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKQEAgLTY4OSw2ICs2ODksNyBAQCBDcmVhdGVTdWJzY3Jp cHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAog CQkJCQkgTE9HSUNBTFJFUF9UV09QSEFTRV9TVEFURV9QRU5ESU5HIDoKIAkJCQkJIExPR0lDQUxS RVBfVFdPUEhBU0VfU1RBVEVfRElTQUJMRUQpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlv bl9zdWJkaXNhYmxlb25lcnIgLSAxXSA9IEJvb2xHZXREYXR1bShvcHRzLmRpc2FibGVvbmVycik7 CisJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnJldHJ5IC0gMV0gPSBCb29sR2V0RGF0 dW0oZmFsc2UpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJjb25uaW5mbyAtIDFd ID0KIAkJQ1N0cmluZ0dldFRleHREYXR1bShjb25uaW5mbyk7CiAJaWYgKG9wdHMuc2xvdF9uYW1l KQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseWJnd29y a2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3b3JrZXIuYwpp bmRleCBhNDI1ZDk0Li5kYjgwZTkwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2FwcGx5Ymd3b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2FwcGx5Ymd3b3JrZXIuYwpAQCAtMTA3LDYgKzEwNywxOCBAQCBhcHBseV9iZ3dvcmtl cl9jYW5fc3RhcnQoVHJhbnNhY3Rpb25JZCB4aWQpCiAJCXJldHVybiBmYWxzZTsKIAogCS8qCisJ ICogRG9uJ3QgdXNlIGFwcGx5IGJhY2tncm91bmQgd29ya2VycyBmb3IgcmV0cmllcywgYmVjYXVz ZSBpdCBpcyBwb3NzaWJsZQorCSAqIHRoYXQgdGhlIGxhc3QgdGltZSB3ZSB0cmllZCB0byBhcHBs eSBhIHRyYW5zYWN0aW9uIHVzaW5nIGFuIGFwcGx5CisJICogYmFja2dyb3VuZCB3b3JrZXIgdGhl IGNoZWNrcyBmYWlsZWQgKHNlZSBmdW5jdGlvbgorCSAqIGFwcGx5X2Jnd29ya2VyX3JlbGF0aW9u X2NoZWNrKS4KKwkgKi8KKwlpZiAoTXlTdWJzY3JpcHRpb24tPnJldHJ5KQorCXsKKwkJZWxvZyhE RUJVRzEsICJhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcnMgYXJlIG5vdCB1c2VkIGZvciByZXRyaWVz Iik7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwkvKgogCSAqIEZvciBzdHJlYW1pbmcgdHJhbnNh Y3Rpb25zIHRoYXQgYXJlIGJlaW5nIGFwcGxpZWQgaW4gYXBwbHkgYmFja2dyb3VuZAogCSAqIHdv cmtlciwgd2UgY2Fubm90IGRlY2lkZSB3aGV0aGVyIHRvIGFwcGx5IHRoZSBjaGFuZ2UgZm9yIGEg cmVsYXRpb24KIAkgKiB0aGF0IGlzIG5vdCBpbiB0aGUgUkVBRFkgc3RhdGUgKHNlZSBzaG91bGRf YXBwbHlfY2hhbmdlc19mb3JfcmVsKSBhcyB3ZQpAQCAtODExLDcgKzgyMyw1IEBAIGFwcGx5X2Jn d29ya2VyX3JlbGF0aW9uX2NoZWNrKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsKQogCQkJCQly ZWwtPnJlbW90ZXJlbC5uc3BuYW1lLCByZWwtPnJlbW90ZXJlbC5yZWxuYW1lKSwKIAkJCSBlcnJk ZXRhaWwoIlRoZSB1bmlxdWUgY29sdW1uIG9uIHN1YnNjcmliZXIgaXMgbm90IHRoZSB1bmlxdWUg IgogCQkJCQkgICAiY29sdW1uIG9uIHB1Ymxpc2hlciBvciB0aGVyZSBpcyBhdCBsZWFzdCBvbmUg IgotCQkJCQkgICAibm9uLWltbXV0YWJsZSBmdW5jdGlvbi4iKSwKLQkJCSBlcnJoaW50KCJQbGVh c2UgY2hhbmdlIHRvIHVzZSBzdWJzY3JpcHRpb24gcGFyYW1ldGVyICIKLQkJCQkJICJzdHJlYW1p bmc9b24uIikpKTsKKwkJCQkJICAgIm5vbi1pbW11dGFibGUgZnVuY3Rpb24uIikpKTsKIH0KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IGM1MjY2OWUuLjVkMDkz YjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMzQyLDcg KzM0Miw3IEBAIHN0YXRpYyB2b2lkIHN0b3JlX2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIgcmVt b3RlX2xzbik7CiAKIHN0YXRpYyB2b2lkIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCk7 CiAKLXN0YXRpYyB2b2lkIERpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KHZvaWQpOworc3RhdGlj IHZvaWQgRGlzYWJsZVN1YnNjcmlwdGlvbk9uRXJyb3Iodm9pZCk7CiAKIHN0YXRpYyB2b2lkIGFw cGx5X2hhbmRsZV9jb21taXRfaW50ZXJuYWwoTG9naWNhbFJlcENvbW1pdERhdGEgKmNvbW1pdF9k YXRhKTsKIHN0YXRpYyB2b2lkIGFwcGx5X2hhbmRsZV9pbnNlcnRfaW50ZXJuYWwoQXBwbHlFeGVj dXRpb25EYXRhICplZGF0YSwKQEAgLTM3OSw2ICszNzksOCBAQCBzdGF0aWMgdm9pZCBjbGVhcl9z dWJzY3JpcHRpb25fc2tpcF9sc24oWExvZ1JlY1B0ciBmaW5pc2hfbHNuKTsKIHN0YXRpYyBpbmxp bmUgdm9pZCBzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KFRyYW5zYWN0aW9uSWQgeGlkLCBY TG9nUmVjUHRyIGxzbik7CiBzdGF0aWMgaW5saW5lIHZvaWQgcmVzZXRfYXBwbHlfZXJyb3JfY29u dGV4dF9pbmZvKHZvaWQpOwogCitzdGF0aWMgdm9pZCBzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGJv b2wgcmV0cnkpOworCiAvKgogICogU2hvdWxkIHRoaXMgd29ya2VyIGFwcGx5IGNoYW5nZXMgZm9y IGdpdmVuIHJlbGF0aW9uLgogICoKQEAgLTkyOSw2ICs5MzEsOSBAQCBhcHBseV9oYW5kbGVfY29t bWl0KFN0cmluZ0luZm8gcykKIAogCWFwcGx5X2hhbmRsZV9jb21taXRfaW50ZXJuYWwoJmNvbW1p dF9kYXRhKTsKIAorCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCXNldF9zdWJzY3JpcHRp b25fcmV0cnkoZmFsc2UpOworCiAJLyogQ2hlY2sgdGhlIHN0YXR1cyBvZiBhcHBseSBiYWNrZ3Jv dW5kIHdvcmtlciBpZiBhbnkuICovCiAJYXBwbHlfYmd3b3JrZXJfY2hlY2tfc3RhdHVzKCk7CiAK QEAgLTEwNDAsNiArMTA0NSw5IEBAIGFwcGx5X2hhbmRsZV9wcmVwYXJlKFN0cmluZ0luZm8gcykK IAogCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogCisJLyogUmVzZXQgdGhlIHJldHJ5 IGZsYWcuICovCisJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CisKIAkvKiBDaGVjayB0 aGUgc3RhdHVzIG9mIGFwcGx5IGJhY2tncm91bmQgd29ya2VyIGlmIGFueS4gKi8KIAlhcHBseV9i Z3dvcmtlcl9jaGVja19zdGF0dXMoKTsKIApAQCAtMTA5Myw2ICsxMTAxLDkgQEAgYXBwbHlfaGFu ZGxlX2NvbW1pdF9wcmVwYXJlZChTdHJpbmdJbmZvIHMpCiAJc3RvcmVfZmx1c2hfcG9zaXRpb24o cHJlcGFyZV9kYXRhLmVuZF9sc24pOwogCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwog CisJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShm YWxzZSk7CisKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25p emVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMocHJlcGFyZV9kYXRh LmVuZF9sc24pOwogCkBAIC0xMTQ4LDYgKzExNTksOSBAQCBhcHBseV9oYW5kbGVfcm9sbGJhY2tf cHJlcGFyZWQoU3RyaW5nSW5mbyBzKQogCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHJvbGxiYWNrX2Rh dGEucm9sbGJhY2tfZW5kX2xzbik7CiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAK KwkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZh bHNlKTsKKwogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6 ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhyb2xsYmFja19kYXRh LnJvbGxiYWNrX2VuZF9sc24pOwogCkBAIC0xMjQyLDYgKzEyNTYsOSBAQCBhcHBseV9oYW5kbGVf c3RyZWFtX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCQkJLyogVW5saW5rIHRoZSBmaWxlcyB3aXRo IHNlcmlhbGl6ZWQgY2hhbmdlcyBhbmQgc3VieGFjdCBpbmZvLiAqLwogCQkJc3RyZWFtX2NsZWFu dXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgcHJlcGFyZV9kYXRhLnhpZCk7CiAJ CX0KKworCQkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwkJc2V0X3N1YnNjcmlwdGlvbl9y ZXRyeShmYWxzZSk7CiAJfQogCiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CkBAIC0x NjcxLDYgKzE2ODgsOSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykK IAkJCSAqLwogCQkJc2VyaWFsaXplX3N0cmVhbV9hYm9ydCh4aWQsIHN1YnhpZCk7CiAJCX0KKwor CQkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwkJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShm YWxzZSk7CiAJfQogCiAJcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKCk7CkBAIC0xODgz LDYgKzE5MDMsOSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIHMpCiAJ CQkvKiBVbmxpbmsgdGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0 IGluZm8uICovCiAJCQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1 YmlkLCB4aWQpOwogCQl9CisKKwkJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJCXNldF9z dWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOwogCX0KIAogCS8qIENoZWNrIHRoZSBzdGF0dXMgb2Yg YXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgaWYgYW55LiAqLwpAQCAtMzkyNywyMCArMzk1MCwyOCBA QCBzdGFydF90YWJsZV9zeW5jKFhMb2dSZWNQdHIgKm9yaWdpbl9zdGFydHBvcywgY2hhciAqKm15 c2xvdG5hbWUpCiAJfQogCVBHX0NBVENIKCk7CiAJeworCQkvKgorCQkgKiBFbWl0IHRoZSBlcnJv ciBtZXNzYWdlLCBhbmQgcmVjb3ZlciBmcm9tIHRoZSBlcnJvciBzdGF0ZSB0byBhbiBpZGxlCisJ CSAqIHN0YXRlCisJCSAqLworCQlIT0xEX0lOVEVSUlVQVFMoKTsKKworCQlFbWl0RXJyb3JSZXBv cnQoKTsKKwkJQWJvcnRPdXRPZkFueVRyYW5zYWN0aW9uKCk7CisJCUZsdXNoRXJyb3JTdGF0ZSgp OworCisJCVJFU1VNRV9JTlRFUlJVUFRTKCk7CisKKwkJLyogUmVwb3J0IHRoZSB3b3JrZXIgZmFp bGVkIGR1cmluZyB0YWJsZSBzeW5jaHJvbml6YXRpb24gKi8KKwkJcGdzdGF0X3JlcG9ydF9zdWJz Y3JpcHRpb25fZXJyb3IoTXlTdWJzY3JpcHRpb24tPm9pZCwgZmFsc2UpOworCiAJCWlmIChNeVN1 YnNjcmlwdGlvbi0+ZGlzYWJsZW9uZXJyKQotCQkJRGlzYWJsZVN1YnNjcmlwdGlvbkFuZEV4aXQo KTsKLQkJZWxzZQotCQl7Ci0JCQkvKgotCQkJICogUmVwb3J0IHRoZSB3b3JrZXIgZmFpbGVkIGR1 cmluZyB0YWJsZSBzeW5jaHJvbml6YXRpb24uIEFib3J0Ci0JCQkgKiB0aGUgY3VycmVudCB0cmFu c2FjdGlvbiBzbyB0aGF0IHRoZSBzdGF0cyBtZXNzYWdlIGlzIHNlbnQgaW4gYW4KLQkJCSAqIGlk bGUgc3RhdGUuCi0JCQkgKi8KLQkJCUFib3J0T3V0T2ZBbnlUcmFuc2FjdGlvbigpOwotCQkJcGdz dGF0X3JlcG9ydF9zdWJzY3JpcHRpb25fZXJyb3IoTXlTdWJzY3JpcHRpb24tPm9pZCwgZmFsc2Up OworCQkJRGlzYWJsZVN1YnNjcmlwdGlvbk9uRXJyb3IoKTsKIAotCQkJUEdfUkVfVEhST1coKTsK LQkJfQorCQkvKiBTZXQgdGhlIHJldHJ5IGZsYWcuICovCisJCXNldF9zdWJzY3JpcHRpb25fcmV0 cnkodHJ1ZSk7CisKKwkJcHJvY19leGl0KDApOwogCX0KIAlQR19FTkRfVFJZKCk7CiAKQEAgLTM5 NjUsMjAgKzM5OTYsMjcgQEAgc3RhcnRfYXBwbHkoWExvZ1JlY1B0ciBvcmlnaW5fc3RhcnRwb3Mp CiAJfQogCVBHX0NBVENIKCk7CiAJeworCQkvKgorCQkgKiBFbWl0IHRoZSBlcnJvciBtZXNzYWdl LCBhbmQgcmVjb3ZlciBmcm9tIHRoZSBlcnJvciBzdGF0ZSB0byBhbiBpZGxlCisJCSAqIHN0YXRl CisJCSAqLworCQlIT0xEX0lOVEVSUlVQVFMoKTsKKworCQlFbWl0RXJyb3JSZXBvcnQoKTsKKwkJ QWJvcnRPdXRPZkFueVRyYW5zYWN0aW9uKCk7CisJCUZsdXNoRXJyb3JTdGF0ZSgpOworCisJCVJF U1VNRV9JTlRFUlJVUFRTKCk7CisKKwkJLyogUmVwb3J0IHRoZSB3b3JrZXIgZmFpbGVkIHdoaWxl IGFwcGx5aW5nIGNoYW5nZXMgKi8KKwkJcGdzdGF0X3JlcG9ydF9zdWJzY3JpcHRpb25fZXJyb3Io TXlTdWJzY3JpcHRpb24tPm9pZCwKKwkJCQkJCQkJCQkgIWFtX3RhYmxlc3luY193b3JrZXIoKSk7 CisKIAkJaWYgKE15U3Vic2NyaXB0aW9uLT5kaXNhYmxlb25lcnIpCi0JCQlEaXNhYmxlU3Vic2Ny aXB0aW9uQW5kRXhpdCgpOwotCQllbHNlCi0JCXsKLQkJCS8qCi0JCQkgKiBSZXBvcnQgdGhlIHdv cmtlciBmYWlsZWQgd2hpbGUgYXBwbHlpbmcgY2hhbmdlcy4gQWJvcnQgdGhlCi0JCQkgKiBjdXJy ZW50IHRyYW5zYWN0aW9uIHNvIHRoYXQgdGhlIHN0YXRzIG1lc3NhZ2UgaXMgc2VudCBpbiBhbgot CQkJICogaWRsZSBzdGF0ZS4KLQkJCSAqLwotCQkJQWJvcnRPdXRPZkFueVRyYW5zYWN0aW9uKCk7 Ci0JCQlwZ3N0YXRfcmVwb3J0X3N1YnNjcmlwdGlvbl9lcnJvcihNeVN1YnNjcmlwdGlvbi0+b2lk LCAhYW1fdGFibGVzeW5jX3dvcmtlcigpKTsKKwkJCURpc2FibGVTdWJzY3JpcHRpb25PbkVycm9y KCk7CiAKLQkJCVBHX1JFX1RIUk9XKCk7Ci0JCX0KKwkJLyogU2V0IHRoZSByZXRyeSBmbGFnLiAq LworCQlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KHRydWUpOwogCX0KIAlQR19FTkRfVFJZKCk7CiB9 CkBAIC00MjQwLDM5ICs0Mjc4LDIwIEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykK IH0KIAogLyoKLSAqIEFmdGVyIGVycm9yIHJlY292ZXJ5LCBkaXNhYmxlIHRoZSBzdWJzY3JpcHRp b24gaW4gYSBuZXcgdHJhbnNhY3Rpb24KLSAqIGFuZCBleGl0IGNsZWFubHkuCisgKiBEaXNhYmxl IHRoZSBzdWJzY3JpcHRpb24gaW4gYSBuZXcgdHJhbnNhY3Rpb24uCiAgKi8KIHN0YXRpYyB2b2lk Ci1EaXNhYmxlU3Vic2NyaXB0aW9uQW5kRXhpdCh2b2lkKQorRGlzYWJsZVN1YnNjcmlwdGlvbk9u RXJyb3Iodm9pZCkKIHsKLQkvKgotCSAqIEVtaXQgdGhlIGVycm9yIG1lc3NhZ2UsIGFuZCByZWNv dmVyIGZyb20gdGhlIGVycm9yIHN0YXRlIHRvIGFuIGlkbGUKLQkgKiBzdGF0ZQotCSAqLwotCUhP TERfSU5URVJSVVBUUygpOwotCi0JRW1pdEVycm9yUmVwb3J0KCk7Ci0JQWJvcnRPdXRPZkFueVRy YW5zYWN0aW9uKCk7Ci0JRmx1c2hFcnJvclN0YXRlKCk7Ci0KLQlSRVNVTUVfSU5URVJSVVBUUygp OwotCi0JLyogUmVwb3J0IHRoZSB3b3JrZXIgZmFpbGVkIGR1cmluZyBlaXRoZXIgdGFibGUgc3lu Y2hyb25pemF0aW9uIG9yIGFwcGx5ICovCi0JcGdzdGF0X3JlcG9ydF9zdWJzY3JpcHRpb25fZXJy b3IoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwKLQkJCQkJCQkJCSAhYW1fdGFibGVzeW5jX3dv cmtlcigpKTsKLQogCS8qIERpc2FibGUgdGhlIHN1YnNjcmlwdGlvbiAqLwogCVN0YXJ0VHJhbnNh Y3Rpb25Db21tYW5kKCk7CiAJRGlzYWJsZVN1YnNjcmlwdGlvbihNeVN1YnNjcmlwdGlvbi0+b2lk KTsKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qIE5vdGlmeSB0aGUgc3Vic2Ny aXB0aW9uIGhhcyBiZWVuIGRpc2FibGVkIGFuZCBleGl0ICovCisJLyogTm90aWZ5IHRoZSBzdWJz Y3JpcHRpb24gaGFzIGJlZW4gZGlzYWJsZWQgKi8KIAllcmVwb3J0KExPRywKIAkJCWVycm1zZygi bG9naWNhbCByZXBsaWNhdGlvbiBzdWJzY3JpcHRpb24gXCIlc1wiIGhhcyBiZWVuIGRpc2FibGVk IGR1ZSB0byBhbiBlcnJvciIsCiAJCQkJICAgTXlTdWJzY3JpcHRpb24tPm5hbWUpKTsKLQotCXBy b2NfZXhpdCgwKTsKIH0KIAogLyoKQEAgLTQ1MDcsMyArNDUyNiw2MyBAQCByZXNldF9hcHBseV9l cnJvcl9jb250ZXh0X2luZm8odm9pZCkKIAlhcHBseV9lcnJvcl9jYWxsYmFja19hcmcucmVtb3Rl X2F0dG51bSA9IC0xOwogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QoSW52YWxpZFRyYW5z YWN0aW9uSWQsIEludmFsaWRYTG9nUmVjUHRyKTsKIH0KKworLyoKKyAqIFNldCBzdWJyZXRyeSBv ZiBwZ19zdWJzY3JpcHRpb24gY2F0YWxvZy4KKyAqCisgKiBJZiByZXRyeSBpcyB0cnVlLCBzdWJz Y3JpYmVyIGlzIGFib3V0IHRvIGV4aXQgd2l0aCBhbiBlcnJvci4gT3RoZXJ3aXNlLCBpdAorICog bWVhbnMgdGhhdCB0aGUgdHJhbnNhY3Rpb24gd2FzIGFwcGxpZWQgc3VjY2Vzc2Z1bGx5LgorICov CitzdGF0aWMgdm9pZAorc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShib29sIHJldHJ5KQoreworCVJl bGF0aW9uCXJlbDsKKwlIZWFwVHVwbGUJdHVwOworCWJvb2wJCXN0YXJ0ZWRfdHggPSBmYWxzZTsK Kwlib29sCQludWxsc1tOYXR0c19wZ19zdWJzY3JpcHRpb25dOworCWJvb2wJCXJlcGxhY2VzW05h dHRzX3BnX3N1YnNjcmlwdGlvbl07CisJRGF0dW0JCXZhbHVlc1tOYXR0c19wZ19zdWJzY3JpcHRp b25dOworCisJaWYgKE15U3Vic2NyaXB0aW9uLT5yZXRyeSA9PSByZXRyeSB8fAorCQlhbV9hcHBs eV9iZ3dvcmtlcigpKQorCQlyZXR1cm47CisKKwlpZiAoIUlzVHJhbnNhY3Rpb25TdGF0ZSgpKQor CXsKKwkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJc3RhcnRlZF90eCA9IHRydWU7CisJ fQorCisJLyogTG9vayB1cCB0aGUgc3Vic2NyaXB0aW9uIGluIHRoZSBjYXRhbG9nICovCisJcmVs ID0gdGFibGVfb3BlbihTdWJzY3JpcHRpb25SZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsK Kwl0dXAgPSBTZWFyY2hTeXNDYWNoZUNvcHkxKFNVQlNDUklQVElPTk9JRCwKKwkJCQkJCQkgIE9i amVjdElkR2V0RGF0dW0oTXlTdWJzY3JpcHRpb24tPm9pZCkpOworCisJaWYgKCFIZWFwVHVwbGVJ c1ZhbGlkKHR1cCkpCisJCWVsb2coRVJST1IsICJzdWJzY3JpcHRpb24gXCIlc1wiIGRvZXMgbm90 IGV4aXN0IiwgTXlTdWJzY3JpcHRpb24tPm5hbWUpOworCisJTG9ja1NoYXJlZE9iamVjdChTdWJz Y3JpcHRpb25SZWxhdGlvbklkLCBNeVN1YnNjcmlwdGlvbi0+b2lkLCAwLAorCQkJCQkgQWNjZXNz U2hhcmVMb2NrKTsKKworCS8qIEZvcm0gYSBuZXcgdHVwbGUuICovCisJbWVtc2V0KHZhbHVlcywg MCwgc2l6ZW9mKHZhbHVlcykpOworCW1lbXNldChudWxscywgZmFsc2UsIHNpemVvZihudWxscykp OworCW1lbXNldChyZXBsYWNlcywgZmFsc2UsIHNpemVvZihyZXBsYWNlcykpOworCisJLyogUmVz ZXQgc3VicmV0cnkgKi8KKwl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3VicmV0cnkgLSAx XSA9IEJvb2xHZXREYXR1bShyZXRyeSk7CisJcmVwbGFjZXNbQW51bV9wZ19zdWJzY3JpcHRpb25f c3VicmV0cnkgLSAxXSA9IHRydWU7CisKKwl0dXAgPSBoZWFwX21vZGlmeV90dXBsZSh0dXAsIFJl bGF0aW9uR2V0RGVzY3IocmVsKSwgdmFsdWVzLCBudWxscywKKwkJCQkJCQlyZXBsYWNlcyk7CisK KwkvKiBVcGRhdGUgdGhlIGNhdGFsb2cuICovCisJQ2F0YWxvZ1R1cGxlVXBkYXRlKHJlbCwgJnR1 cC0+dF9zZWxmLCB0dXApOworCisJLyogQ2xlYW51cC4gKi8KKwloZWFwX2ZyZWV0dXBsZSh0dXAp OworCXRhYmxlX2Nsb3NlKHJlbCwgTm9Mb2NrKTsKKworCWlmIChzdGFydGVkX3R4KQorCQlDb21t aXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9w Z19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IDJhOGRhMjYuLmViM2Ni YzkgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuYwpAQCAtNDUwNyw4ICs0NTA3LDkgQEAgZ2V0U3Vic2NyaXB0aW9ucyhB cmNoaXZlICpmb3V0KQogCW50dXBzID0gUFFudHVwbGVzKHJlcyk7CiAKIAkvKgotCSAqIEdldCBz dWJzY3JpcHRpb24gZmllbGRzLiBXZSBkb24ndCBpbmNsdWRlIHN1YnNraXBsc24gaW4gdGhlIGR1 bXAgYXMKLQkgKiBhZnRlciByZXN0b3JpbmcgdGhlIGR1bXAgdGhpcyB2YWx1ZSBtYXkgbm8gbG9u Z2VyIGJlIHJlbGV2YW50LgorCSAqIEdldCBzdWJzY3JpcHRpb24gZmllbGRzLiBXZSBkb24ndCBp bmNsdWRlIHN1YnNraXBsc24gYW5kIHN1YnJldHJ5IGluCisJICogdGhlIGR1bXAgYXMgYWZ0ZXIg cmVzdG9yaW5nIHRoZSBkdW1wIHRoaXMgdmFsdWUgbWF5IG5vIGxvbmdlciBiZQorCSAqIHJlbGV2 YW50LgogCSAqLwogCWlfdGFibGVvaWQgPSBQUWZudW1iZXIocmVzLCAidGFibGVvaWQiKTsKIAlp X29pZCA9IFBRZm51bWJlcihyZXMsICJvaWQiKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlw dGlvbi5oCmluZGV4IGY0ZTFlOTQuLjA5NjliOWYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJz Y3JpcHRpb24uaApAQCAtODgsNiArODgsOCBAQCBDQVRBTE9HKHBnX3N1YnNjcmlwdGlvbiw2MTAw LFN1YnNjcmlwdGlvblJlbGF0aW9uSWQpIEJLSV9TSEFSRURfUkVMQVRJT04gQktJX1JPVwogCWJv b2wJCXN1YmRpc2FibGVvbmVycjsJLyogVHJ1ZSBpZiBhIHdvcmtlciBlcnJvciBzaG91bGQgY2F1 c2UgdGhlCiAJCQkJCQkJCQkgKiBzdWJzY3JpcHRpb24gdG8gYmUgZGlzYWJsZWQgKi8KIAorCWJv b2wJCXN1YnJldHJ5IEJLSV9ERUZBVUxUKGYpOwkvKiBUcnVlIGlmIHRoZSBwcmV2aW91cyBhcHBs eSBjaGFuZ2UgZmFpbGVkLiAqLworCiAjaWZkZWYgQ0FUQUxPR19WQVJMRU4JCQkvKiB2YXJpYWJs ZS1sZW5ndGggZmllbGRzIHN0YXJ0IGhlcmUgKi8KIAkvKiBDb25uZWN0aW9uIHN0cmluZyB0byB0 aGUgcHVibGlzaGVyICovCiAJdGV4dAkJc3ViY29ubmluZm8gQktJX0ZPUkNFX05PVF9OVUxMOwpA QCAtMTMxLDYgKzEzMyw4IEBAIHR5cGVkZWYgc3RydWN0IFN1YnNjcmlwdGlvbgogCWJvb2wJCWRp c2FibGVvbmVycjsJLyogSW5kaWNhdGVzIGlmIHRoZSBzdWJzY3JpcHRpb24gc2hvdWxkIGJlCiAJ CQkJCQkJCSAqIGF1dG9tYXRpY2FsbHkgZGlzYWJsZWQgaWYgYSB3b3JrZXIgZXJyb3IKIAkJCQkJ CQkJICogb2NjdXJzICovCisJYm9vbAkJcmV0cnk7CQkJLyogSW5kaWNhdGVzIGlmIHRoZSBwcmV2 aW91cyBhcHBseSBjaGFuZ2UKKwkJCQkJCQkJICogZmFpbGVkLiAqLwogCWNoYXIJICAgKmNvbm5p bmZvOwkJLyogQ29ubmVjdGlvbiBzdHJpbmcgdG8gdGhlIHB1Ymxpc2hlciAqLwogCWNoYXIJICAg KnNsb3RuYW1lOwkJLyogTmFtZSBvZiB0aGUgcmVwbGljYXRpb24gc2xvdCAqLwogCWNoYXIJICAg KnN5bmNjb21taXQ7CQkvKiBTeW5jaHJvbm91cyBjb21taXQgc2V0dGluZyBmb3Igd29ya2VyICov CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX2FwcGx5 LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbWluZ19hcHBseS5wbAppbmRl eCA0ZGM1N2M4Li5mN2Y2NmEyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MzJfc3RyZWFtaW5nX2FwcGx5LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9z dHJlYW1pbmdfYXBwbHkucGwKQEAgLTc4LDkgKzc4LDEzIEBAIG15ICR0aW1lciA9IElQQzo6UnVu Ojp0aW1lb3V0KCRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0KTsKIG15 ICRoID0gJG5vZGVfcHVibGlzaGVyLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgXCRpbiwg XCRvdXQsICR0aW1lciwKIAlvbl9lcnJvcl9zdG9wID0+IDApOwogCisjID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KICMgSXQgaXMgbm90IGFsbG93ZWQgdGhhdCB0aGUgdW5pcXVlIGNvbHVtbiBpbiB0aGUg cmVsYXRpb24gb24gdGhlCiAjIHN1YnNjcmliZXItc2lkZSBpcyBub3QgdGhlIHVuaXF1ZSBjb2x1 bW4gb24gdGhlIHB1Ymxpc2hlci1zaWRlLiBDaGVjayB0aGUKLSMgZXJyb3IgcmVwb3J0ZWQgYnkg YmFja2dyb3VuZCB3b3JrZXIgaW4gdGhpcyBjYXNlLgorIyBlcnJvciByZXBvcnRlZCBieSBiYWNr Z3JvdW5kIHdvcmtlciBpbiB0aGlzIGNhc2UuIEFuZCBhZnRlciByZXRyeWluZyBpbgorIyBhcHBs eSB3b3JrZXIsIHdlIGNoZWNrIGlmIHRoZSBkYXRhIGlzIHJlcGxpY2F0ZWQgc3VjY2Vzc2Z1bGx5 LgorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CisKICMgRmlyc3Qgd2UgY2hlY2sgdGhlIHVuaXF1ZSBp bmRleCBvbiBub3JtYWwgdGFibGUuCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKIAkiQ1JFQVRFIFVOSVFVRSBJTkRFWCBpZHhfdGFiMSBvbiB0ZXN0X3RhYjEoYSkiKTsK QEAgLTEwMywxNCArMTA3LDE5IEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKIAlx ci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24g InB1YmxpYy50ZXN0X3RhYjEiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5n PXBhcmFsbGVsLywKIAkkb2Zmc2V0KTsKIAorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9n KAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBkdXBsaWNhdGUga2V5IHZhbHVlIHZpb2xhdGVz IHVuaXF1ZSBjb25zdHJhaW50ICJpZHhfdGFiMSIvLAorCSRvZmZzZXQpOworCiAjIERyb3AgdGhl IHVuaXF1ZSBpbmRleCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgogJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIElOREVYIGlkeF90YWIxIik7CiAK KyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0 aGUgYXBwbHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKIAogbXkgJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIxIik7Ci1pcygkcmVzdWx0LCBx cSg1MDAxKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGlu ZGV4Jyk7CitpcygkcmVzdWx0LCBxcSg1MDAxKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3Jp YmVyIGFmdGVyIGRyb3BwaW5nIHVuaXF1ZSBpbmRleCB0byByZXRyeSBhcHBseScpOwogCiAjIENs ZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KICRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjEiKTsKQEAgLTEz MSwxNyArMTQwLDIzIEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKIAlxci9FUlJP UjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1Ymxp Yy50ZXN0X3RhYl9wYXJ0aXRpb25lZCIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJl YW1pbmc9cGFyYWxsZWwvLAogCSRvZmZzZXQpOwogCi0jIERyb3AgdGhlIHVuaXF1ZSBpbmRleCBv biB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJEUk9QIElOREVYIHRlc3RfdGFiX2JfcGFydGl0aW9uX2lkeCIpOwot CisjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4g dGhlIGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7CiAKICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3BhcnRpdGlvbmVkIik7Ci1pcygk cmVzdWx0LCBxcSg1MDAwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRy b3BwaW5nIGluZGV4Jyk7CitpcygkcmVzdWx0LCBxcSg1MDAwKSwgJ2RhdGEgcmVwbGljYXRlZCB0 byBzdWJzY3JpYmVyIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgdW5pcXVlIGluZGV4Jyk7CiAK KyMgRHJvcCB0aGUgdW5pcXVlIGluZGV4IG9uIHRoZSBzdWJzY3JpYmVyLgorJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIElOREVYIHRlc3RfdGFiX2JfcGFydGl0 aW9uX2lkeCIpOworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICMgVHJpZ2dlcnMgd2hpY2ggZXhl Y3V0ZSBub24taW1tdXRhYmxlIGZ1bmN0aW9uIGFyZSBub3QgYWxsb3dlZCBvbiB0aGUKICMgc3Vi c2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkgYmFja2dyb3VuZCB3b3Jr ZXIgaW4gdGhpcyBjYXNlLgorIyBBbmQgYWZ0ZXIgcmV0cnlpbmcgaW4gYXBwbHkgd29ya2VyLCB3 ZSBjaGVjayBpZiB0aGUgZGF0YSBpcyByZXBsaWNhdGVkCisjIHN1Y2Nlc3NmdWxseS4KKyMgPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorCiAjIEZpcnN0IHdlIGNoZWNrIHRoZSB0cmlnZ2VyIGZ1bmN0aW9u IG9uIG5vcm1hbCB0YWJsZS4KICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CiAJIkNSRUFURSBVTklRVUUgSU5ERVggaWR4X3RhYjIgb24gdGVzdF90YWIyKGEpIik7CkBAIC0x ODQsMjIgKzE5OSwyNiBAQCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJcXIvRVJS T1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJs aWMudGVzdF90YWIxIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZz1wYXJh bGxlbC8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCB0aGUgdHJpZ2dlciBvbiB0aGUgc3Vic2NyaWJl ciwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs Ci0JIkRST1AgVFJJR0dFUiB0cmlfdGFiMSBPTiBwdWJsaWMudGVzdF90YWIxIik7Ciskbm9kZV9z dWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGR1cGxp Y2F0ZSBrZXkgdmFsdWUgdmlvbGF0ZXMgdW5pcXVlIGNvbnN0cmFpbnQgImlkeF90YWIyIi8sCisJ JG9mZnNldCk7CiAKKyMgRHJvcCB0aGUgdW5pcXVlIGluZGV4IG9uIHRoZSBzdWJzY3JpYmVyLCBu b3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRS T1AgSU5ERVggaWR4X3RhYjIiKTsKKworIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2Fj dGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCiAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3Rh YjEiKTsKLWlzKCRyZXN1bHQsIHFxKDIpLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIg YWZ0ZXIgZHJvcHBpbmcgdHJpZ2dlcicpOworaXMoJHJlc3VsdCwgcXEoMiksICdkYXRhIHJlcGxp Y2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciByZXRyeWluZyBiZWNhdXNlIG9mIHRyaWdnZXInKTsK KworIyBEcm9wIHRoZSB0cmlnZ2VyIG9uIHRoZSBzdWJzY3JpYmVyLgorJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkRST1AgVFJJR0dFUiB0cmlfdGFiMSBPTiBwdWJs aWMudGVzdF90YWIxIik7CiAKICMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25t ZW50LgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHFxewotRFJP UCBmdW5jdGlvbiB0cmlnZ2VyX2Z1bmNfdGFiMTsKLURST1AgSU5ERVggaWR4X3RhYjI7Ci19KTsK KyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBmdW5jdGlvbiB0 cmlnZ2VyX2Z1bmNfdGFiMSIpOwogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCiAJJ3Bvc3Rn cmVzJywgcXF7CiBEUk9QIElOREVYIGlkeF90YWIyOwpAQCAtMjMxLDE5ICsyNTAsMjQgQEAgJG5v ZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBj YW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiX3BhcnRpdGlv bmVkIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZz1wYXJhbGxlbC8sCiAJ JG9mZnNldCk7CiAKLSMgRHJvcCB0aGUgdHJpZ2dlciBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0 IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkRST1Ag VFJJR0dFUiBpbnNlcnRfdHJpZyBPTiB0ZXN0X3RhYl9wYXJ0aXRpb24iKTsKLQorIyBXYWl0IGZv ciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3 b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCiAk cmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxF Q1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOwotaXMoJHJlc3VsdCwgcXEo MCksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyB0cmlnZ2Vy Jyk7CitpcygkcmVzdWx0LCBxcSgwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFm dGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgdHJpZ2dlcicpOworCisjIERyb3AgdGhlIHRyaWdnZXIg b24gdGhlIHN1YnNjcmliZXIuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiRFJPUCBUUklHR0VSIGluc2VydF90cmlnIE9OIHRlc3RfdGFiX3BhcnRpdGlvbiIpOwog CisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KICMgSXQgaXMgbm90IGFsbG93ZWQgdGhhdCBjb2x1bW4g ZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uIGNvbnRhaW5zIGEKICMgbm9uLWltbXV0YWJsZSBmdW5j dGlvbiBvbiB0aGUgc3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkK LSMgYmFja2dyb3VuZCB3b3JrZXIgaW4gdGhpcyBjYXNlLgorIyBiYWNrZ3JvdW5kIHdvcmtlciBp biB0aGlzIGNhc2UuIEFuZCBhZnRlciByZXRyeWluZyBpbiBhcHBseSB3b3JrZXIsIHdlIGNoZWNr CisjIGlmIHRoZSBkYXRhIGlzIHJlcGxpY2F0ZWQgc3VjY2Vzc2Z1bGx5LgorIyA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CisKICMgRmlyc3Qgd2UgY2hlY2sgdGhlIGNvbHVtbiBkZWZhdWx0IHZhbHVlIGV4 cHJlc3Npb24gb24gbm9ybWFsIHRhYmxlLgogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfdGFiMiBWQUxVRVMoMSkiKTsKIApAQCAtMjc5LDE2 ICszMDMsMTcgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAo IFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRl c3RfdGFiMSIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmc9cGFyYWxsZWwv LAogCSRvZmZzZXQpOwogCi0jIERyb3AgZGVmYXVsdCB2YWx1ZSBvbiB0aGUgc3Vic2NyaWJlciwg bm93IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0J IkFMVEVSIFRBQkxFIHRlc3RfdGFiMSBBTFRFUiBDT0xVTU4gYiBEUk9QIERFRkFVTFQiKTsKLQor IyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRo ZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOwogCiAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjEiKTsKIGlzKCRyZXN1bHQsIHFxKDUw MDEpLAotCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBkZWZh dWx0IHZhbHVlIGV4cHJlc3Npb24nKTsKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIg YWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBvZiBjb2x1bW4gZGVmYXVsdCB2YWx1ZScpOworCisjIERy b3AgZGVmYXVsdCB2YWx1ZSBvbiB0aGUgc3Vic2NyaWJlci4KKyRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgQUxURVIgQ09MVU1O IGIgRFJPUCBERUZBVUxUIik7CiAKICMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmly b25tZW50LgogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJBTFRFUiBU QUJMRSB0ZXN0X3RhYjEgRFJPUCBDT0xVTU4gYiIpOwpAQCAtMzExLDIwICszMzYsMjUgQEAgJG5v ZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBj YW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiX3BhcnRpdGlv bmVkIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZz1wYXJhbGxlbC8sCiAJ JG9mZnNldCk7CiAKLSMgRHJvcCBkZWZhdWx0IHZhbHVlIG9uIHRoZSBzdWJzY3JpYmVyLCBub3cg aXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxU RVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIEFMVEVSIENPTFVNTiBiIERST1AgREVGQVVMVCIp OwotCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQg aW4gdGhlIGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7CiAKICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3BhcnRpdGlvbmVkIik7CiBp cygkcmVzdWx0LCBxcSg1MDAwKSwKLQknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0 ZXIgZHJvcHBpbmcgZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uJyk7CisJJ2RhdGEgcmVwbGljYXRl ZCB0byBzdWJzY3JpYmVyIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgY29sdW1uIGRlZmF1bHQg dmFsdWUnKTsKIAorIyBEcm9wIGRlZmF1bHQgdmFsdWUgb24gdGhlIHN1YnNjcmliZXIuCiskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90 YWJfcGFydGl0aW9uIEFMVEVSIENPTFVNTiBiIERST1AgREVGQVVMVCIpOworCisjID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KICMgSXQgaXMgbm90IGFsbG93ZWQgdGhhdCBkb21haW4gY29uc3RyYWludCBl eHByZXNzaW9uIGNvbnRhaW5zIGEgbm9uLWltbXV0YWJsZQogIyBmdW5jdGlvbiBvbiB0aGUgc3Vi c2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkgYmFja2dyb3VuZAotIyB3 b3JrZXIgaW4gdGhpcyBjYXNlLgorIyB3b3JrZXIgaW4gdGhpcyBjYXNlLiBBbmQgYWZ0ZXIgcmV0 cnlpbmcgaW4gYXBwbHkgd29ya2VyLCB3ZSBjaGVjayBpZiB0aGUKKyMgZGF0YSBpcyByZXBsaWNh dGVkIHN1Y2Nlc3NmdWxseS4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCiAjIEJlY2F1c2UgdGhl IGNvbHVtbiB0eXBlIG9mIHRoZSBwYXJ0aXRpb24gdGFibGUgbXVzdCBiZSB0aGUgc2FtZSBhcyBp dHMgcGFyZW50CiAjIHRhYmxlLCBvbmx5IHRlc3Qgbm9ybWFsIHRhYmxlIGhlcmUuCiAkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGVzdF90YWIyIFZB TFVFUygxKSIpOwpAQCAtMzYzLDI2ICszOTMsMzEgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9m b3JfbG9nKAogCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdl dCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiMSIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRl ciBzdHJlYW1pbmc9cGFyYWxsZWwvLAogCSRvZmZzZXQpOwogCi0jIERyb3AgZG9tYWluIGNvbnN0 cmFpbnQgZXhwcmVzc2lvbiBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgotJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFRBQkxFIHRlc3RfdGFi MSBBTFRFUiBDT0xVTU4gYSBUWVBFIGludCIpOwotCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5n IHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KICRub2RlX3B1 Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKICRyZXN1bHQgPQogICAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9N IHRlc3RfdGFiMSIpOwogaXMoJHJlc3VsdCwgcXEoNTAwMSksCi0JJ2RhdGEgcmVwbGljYXRlZCB0 byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGRvbWFpbiBjb25zdHJhaW50IGV4cHJlc3Npb24n CisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ug b2YgZG9tYWluJwogKTsKIAorIyBEcm9wIGRvbWFpbiBjb25zdHJhaW50IGV4cHJlc3Npb24gb24g dGhlIHN1YnNjcmliZXIuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiQUxURVIgVEFCTEUgdGVzdF90YWIxIEFMVEVSIENPTFVNTiBhIFRZUEUgaW50Iik7CisKICMg Q2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgogJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIFRBQkxFIHRlc3RfdGFiMSIpOwogJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIFRBQkxFIHRlc3Rf dGFiMiIpOwogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAot IyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBjb250YWlucyBh IG5vbi1pbW11dGFibGUgZnVuY3Rpb24KLSMgb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sg dGhlIGVycm9yIHJlcG9ydGVkIGJ5IGJhY2tncm91bmQgd29ya2VyIGluIHRoaXMKLSMgY2FzZS4K KyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGNvbnN0cmFp bnQgZXhwcmVzc2lvbiBjb250YWlucyBhIG5vbi1pbW11dGFibGUKKyMgZnVuY3Rpb24gb24gdGhl IHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5IGJhY2tncm91bmQK KyMgd29ya2VyIGluIHRoaXMgY2FzZS4gQW5kIGFmdGVyIHJldHJ5aW5nIGluIGFwcGx5IHdvcmtl ciwgd2UgY2hlY2sgaWYgdGhlCisjIGRhdGEgaXMgcmVwbGljYXRlZCBzdWNjZXNzZnVsbHkuCisj ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKwogIyBGaXJzdCB3ZSBjaGVjayB0aGUgY29uc3RyYWludCBl eHByZXNzaW9uIG9uIG5vcm1hbCB0YWJsZS4KICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0ZXN0X3RhYjIgVkFMVUVTKDEpIik7CiAKQEAgLTQxMywx NiArNDQ4LDE3IEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKIAlxci9FUlJPUjog KCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50 ZXN0X3RhYjEiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nPXBhcmFsbGVs LywKIAkkb2Zmc2V0KTsKIAotIyBEcm9wIGNvbnN0cmFpbnQgb24gdGhlIHN1YnNjcmliZXIsIG5v dyBpdCB3b3Jrcy4KLSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJB TFRFUiBUQUJMRSB0ZXN0X3RhYjEgRFJPUCBDT05TVFJBSU5UIGNvbnN0X3RhYjEiKTsKLQorIyBX YWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBh cHBseSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OwogCiAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjEiKTsKIGlzKCRyZXN1bHQsIHFxKDUwMDEp LAotCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBjb25zdHJh aW50IGV4cHJlc3Npb24nKTsKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIg cmV0cnlpbmcgYmVjYXVzZSBvZiBjb25zdHJhaW50Jyk7CisKKyMgRHJvcCBjb25zdHJhaW50IG9u IHRoZSBzdWJzY3JpYmVyLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiMSBEUk9QIENPTlNUUkFJTlQgY29uc3RfdGFiMSIpOwog CiAjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KICRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjEiKTsK QEAgLTQ0NCwxOSArNDgwLDI0IEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKIAlx ci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24g InB1YmxpYy50ZXN0X3RhYl9wYXJ0aXRpb25lZCIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRl ciBzdHJlYW1pbmc9cGFyYWxsZWwvLAogCSRvZmZzZXQpOwogCi0jIERyb3AgY29uc3RyYWludCBv biB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBEUk9QIENP TlNUUkFJTlQgdGVzdF90YWJfY29uIik7Ci0KKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJh bnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgogJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAogJHJlc3VsdCA9CiAgICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVz dF90YWJfcGFydGl0aW9uZWQiKTsKIGlzKCRyZXN1bHQsIHFxKDApLAotCSdkYXRhIHJlcGxpY2F0 ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBjb25zdHJhaW50IGV4cHJlc3Npb24nKTsK KwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBv ZiBjb25zdHJhaW50Jyk7CisKKyMgRHJvcCBjb25zdHJhaW50IG9uIHRoZSBzdWJzY3JpYmVyLgor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRl c3RfdGFiX3BhcnRpdGlvbiBEUk9QIENPTlNUUkFJTlQgdGVzdF90YWJfY29uIik7CiAKKyMgPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQogIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGZvcmVpZ24ga2V5IG9u IHRoZSBzdWJzY3JpYmVyIHNpZGUuIENoZWNrIHRoZSBlcnJvcgotIyByZXBvcnRlZCBieSBiYWNr Z3JvdW5kIHdvcmtlciBpbiB0aGlzIGNhc2UuCisjIHJlcG9ydGVkIGJ5IGJhY2tncm91bmQgd29y a2VyIGluIHRoaXMgY2FzZS4gQW5kIGFmdGVyIHJldHJ5aW5nIGluIGFwcGx5CisjIHdvcmtlciwg d2UgY2hlY2sgaWYgdGhlIGRhdGEgaXMgcmVwbGljYXRlZCBzdWNjZXNzZnVsbHkuCisjID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKwogIyBGaXJzdCB3ZSBjaGVjayB0aGUgZm9yZWlnbiBrZXkgb24gbm9y bWFsIHRhYmxlLgogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCiAJJ3Bvc3RncmVzJywgcXF7 CkBAIC00OTUsMTUgKzUzNiwyMyBAQCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJ cXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9u ICJwdWJsaWMudGVzdF90YWIxIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWlu Zz1wYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCB0aGUgZm9yZWlnbiBrZXkgY29uc3Ry YWludCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgRFJPUCBDT05TVFJB SU5UIHRlc3RfdGFiMWZrIik7Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIv RVJST1I6ICggW0EtWjAtOV0rOik/IGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRlc3RfdGFi MSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVzdF90YWIxZmsiLywKKwkkb2Zm c2V0KTsKIAorIyBJbnNlcnQgZGVwZW5kZW50IGRhdGEgb24gdGhlIHB1Ymxpc2hlciwgbm93IGl0 IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQg SU5UTyB0ZXN0X3RhYjIgVkFMVUVTKDEpIik7CisKKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcg dHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgogJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAogJHJlc3VsdCA9CiAgICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00g dGVzdF90YWIxIik7CiBpcygkcmVzdWx0LCBxcSgxKSwKLQknZGF0YSByZXBsaWNhdGVkIHRvIHN1 YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgdGhlIGZvcmVpZ24ga2V5Jyk7CisJJ2RhdGEgcmVwbGlj YXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgZm9yZWlnbiBrZXkn KTsKKworIyBEcm9wIHRoZSBmb3JlaWduIGtleSBjb25zdHJhaW50IG9uIHRoZSBzdWJzY3JpYmVy LgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJBTFRFUiBUQUJMRSB0 ZXN0X3RhYjEgRFJPUCBDT05TVFJBSU5UIHRlc3RfdGFiMWZrIik7CiAKICMgQ2xlYW4gdXAgdGVz dCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIlRSVU5DQVRFIFRBQkxFIHRlc3RfdGFiMSIpOwpAQCAtNTI5LDE2ICs1Nzgs MTcgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAoIFtBLVow LTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFi X3BhcnRpdGlvbmVkIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZz1wYXJh bGxlbC8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCB0aGUgZm9yZWlnbiBrZXkgY29uc3RyYWludCBv biB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBEUk9QIENP TlNUUkFJTlQgdGVzdF90YWJfcGF0aXRpb25fZmsiKTsKLQorIyBXYWl0IGZvciB0aGlzIHN0cmVh bWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCiAkcmVzdWx0ID0KICAg JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikg RlJPTSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOwogaXMoJHJlc3VsdCwgcXEoNTAwMCksCi0JJ2Rh dGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIHRoZSBmb3JlaWduIGtl eScpOworCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlcnMgYWZ0ZXIgcmV0cnlpbmcgYmVj YXVzZSBvZiBmb3JlaWduIGtleScpOworCisjIERyb3AgdGhlIGZvcmVpZ24ga2V5IGNvbnN0cmFp bnQgb24gdGhlIHN1YnNjcmliZXIuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIERST1AgQ09OU1RSQUlOVCB0 ZXN0X3RhYl9wYXRpdGlvbl9mayIpOwogCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVf cHVibGlzaGVyLT5zdG9wOwotLSAKMi43LjIud2luZG93cy4xCgo= --_006_OS0PR01MB57160A440C9821C48ABD4D9C94649OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v21-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch" Content-Description: v21-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch Content-Disposition: attachment; filename="v21-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch"; size=6333; creation-date="Thu, 11 Aug 2022 07:47:00 GMT"; modification-date="Thu, 11 Aug 2022 07:47:55 GMT" Content-Transfer-Encoding: base64 RnJvbSBiMTA1MTM3OWJmZGY0YTE4MDNkYmYyMTA5ZGZlYWM2YjI4M2FlNDU3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFRodSwgMTEgQXVnIDIwMjIgMTE6NDk6MDggKzA4MDAKU3ViamVjdDogW1BBVENI IHYyMSA1LzVdIEFkZCBhIG1haW5fd29ya2VyX3BpZCB0byBwZ19zdGF0X3N1YnNjcmlwdGlvbgoK bWFpbl93b3JrZXJfcGlkIGlzIFByb2Nlc3MgSUQgb2YgdGhlIG1haW4gYXBwbHkgd29ya2VyLCBp ZiB0aGlzIHByb2Nlc3MgaXMgYQphcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4gTlVMTCBpZiB0aGlz IHByb2Nlc3MgaXMgYSBtYWluIGFwcGx5IHdvcmtlciBvciBhCnN5bmNocm9uaXphdGlvbiB3b3Jr ZXIuCgpUaGUgbmV3IGNvbHVtbiBjYW4gbWFrZSBpdCBlYXNpZXIgdG8gZGlzdGluZ3Vpc2ggbWFp biBhcHBseSB3b3JrZXIgYW5kIGFwcGx5CmJhY2tncm91bmQgd29ya2VyLgoKLS0tCiBkb2Mvc3Jj L3NnbWwvbW9uaXRvcmluZy5zZ21sICAgICAgICAgICAgICAgfCAxMSArKysrKysrKysrKwogc3Jj L2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAgICAgIHwgIDEgKwogc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jIHwgMjggKysrKysrKysrKysrKysrKyst LS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICAgIHwg IDYgKysrLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCAgICAgICAgfCAg MyArKy0KIDUgZmlsZXMgY2hhbmdlZCwgMzQgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCBiL2RvYy9zcmMvc2dt bC9tb25pdG9yaW5nLnNnbWwKaW5kZXggYTZlN2UzYi4uMGMxNDcwOSAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5z Z21sCkBAIC0zMTgwLDYgKzMxODAsMTcgQEAgU0VMRUNUIHBpZCwgd2FpdF9ldmVudF90eXBlLCB3 YWl0X2V2ZW50IEZST00gcGdfc3RhdF9hY3Rpdml0eSBXSEVSRSB3YWl0X2V2ZW50IGkKIAogICAg ICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJv bGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+bWFpbl93b3JrZXJf cGlkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50ZWdlcjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAg ICAgIDxwYXJhPgorICAgICAgIFByb2Nlc3MgSUQgb2YgdGhlIG1haW4gYXBwbHkgd29ya2VyLCBp ZiB0aGlzIHByb2Nlc3MgaXMgYSBhcHBseQorICAgICAgIGJhY2tncm91bmQgd29ya2VyLiBOVUxM IGlmIHRoaXMgcHJvY2VzcyBpcyBhIG1haW4gYXBwbHkgd29ya2VyIG9yIGEKKyAgICAgICBzeW5j aHJvbml6YXRpb24gd29ya2VyLgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93Pgor CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBh cmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgogICAgICAgIDxzdHJ1Y3RmaWVsZD5yZWxpZDwv c3RydWN0ZmllbGQ+IDx0eXBlPm9pZDwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJh PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3Jj L2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IDgyODRjZGQuLmVjZDA4ZGQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9z cmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTk0Nyw2ICs5NDcsNyBAQCBD UkVBVEUgVklFVyBwZ19zdGF0X3N1YnNjcmlwdGlvbiBBUwogICAgICAgICAgICAgc3Uub2lkIEFT IHN1YmlkLAogICAgICAgICAgICAgc3Uuc3VibmFtZSwKICAgICAgICAgICAgIHN0LnBpZCwKKyAg ICAgICAgICAgIHN0Lm1haW5fd29ya2VyX3BpZCwKICAgICAgICAgICAgIHN0LnJlbGlkLAogICAg ICAgICAgICAgc3QucmVjZWl2ZWRfbHNuLAogICAgICAgICAgICAgc3QubGFzdF9tc2dfc2VuZF90 aW1lLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hl ci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCmluZGV4IDgy NWU3NTYuLjVhOTI3MDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvbGF1bmNoZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5j aGVyLmMKQEAgLTEwMTAsNyArMTAxMCw3IEBAIElzTG9naWNhbExhdW5jaGVyKHZvaWQpCiBEYXR1 bQogcGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9uKFBHX0ZVTkNUSU9OX0FSR1MpCiB7Ci0jZGVmaW5l IFBHX1NUQVRfR0VUX1NVQlNDUklQVElPTl9DT0xTCTgKKyNkZWZpbmUgUEdfU1RBVF9HRVRfU1VC U0NSSVBUSU9OX0NPTFMJOQogCU9pZAkJCXN1YmlkID0gUEdfQVJHSVNOVUxMKDApID8gSW52YWxp ZE9pZCA6IFBHX0dFVEFSR19PSUQoMCk7CiAJaW50CQkJaTsKIAlSZXR1cm5TZXRJbmZvICpyc2lu Zm8gPSAoUmV0dXJuU2V0SW5mbyAqKSBmY2luZm8tPnJlc3VsdGluZm87CkBAIC0xMDQ0LDI2ICsx MDQ0LDMyIEBAIHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbihQR19GVU5DVElPTl9BUkdTKQogCQll bHNlCiAJCQludWxsc1sxXSA9IHRydWU7CiAJCXZhbHVlc1syXSA9IEludDMyR2V0RGF0dW0od29y a2VyX3BpZCk7Ci0JCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKHdvcmtlci5sYXN0X2xzbikpCisK KwkJaWYgKHdvcmtlci5tYWluX3dvcmtlcl9waWQgPT0gMCkKIAkJCW51bGxzWzNdID0gdHJ1ZTsK IAkJZWxzZQotCQkJdmFsdWVzWzNdID0gTFNOR2V0RGF0dW0od29ya2VyLmxhc3RfbHNuKTsKLQkJ aWYgKHdvcmtlci5sYXN0X3NlbmRfdGltZSA9PSAwKQorCQkJdmFsdWVzWzNdID0gSW50MzJHZXRE YXR1bSh3b3JrZXIubWFpbl93b3JrZXJfcGlkKTsKKworCQlpZiAoWExvZ1JlY1B0cklzSW52YWxp ZCh3b3JrZXIubGFzdF9sc24pKQogCQkJbnVsbHNbNF0gPSB0cnVlOwogCQllbHNlCi0JCQl2YWx1 ZXNbNF0gPSBUaW1lc3RhbXBUekdldERhdHVtKHdvcmtlci5sYXN0X3NlbmRfdGltZSk7Ci0JCWlm ICh3b3JrZXIubGFzdF9yZWN2X3RpbWUgPT0gMCkKKwkJCXZhbHVlc1s0XSA9IExTTkdldERhdHVt KHdvcmtlci5sYXN0X2xzbik7CisJCWlmICh3b3JrZXIubGFzdF9zZW5kX3RpbWUgPT0gMCkKIAkJ CW51bGxzWzVdID0gdHJ1ZTsKIAkJZWxzZQotCQkJdmFsdWVzWzVdID0gVGltZXN0YW1wVHpHZXRE YXR1bSh3b3JrZXIubGFzdF9yZWN2X3RpbWUpOwotCQlpZiAoWExvZ1JlY1B0cklzSW52YWxpZCh3 b3JrZXIucmVwbHlfbHNuKSkKKwkJCXZhbHVlc1s1XSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0od29y a2VyLmxhc3Rfc2VuZF90aW1lKTsKKwkJaWYgKHdvcmtlci5sYXN0X3JlY3ZfdGltZSA9PSAwKQog CQkJbnVsbHNbNl0gPSB0cnVlOwogCQllbHNlCi0JCQl2YWx1ZXNbNl0gPSBMU05HZXREYXR1bSh3 b3JrZXIucmVwbHlfbHNuKTsKLQkJaWYgKHdvcmtlci5yZXBseV90aW1lID09IDApCisJCQl2YWx1 ZXNbNl0gPSBUaW1lc3RhbXBUekdldERhdHVtKHdvcmtlci5sYXN0X3JlY3ZfdGltZSk7CisJCWlm IChYTG9nUmVjUHRySXNJbnZhbGlkKHdvcmtlci5yZXBseV9sc24pKQogCQkJbnVsbHNbN10gPSB0 cnVlOwogCQllbHNlCi0JCQl2YWx1ZXNbN10gPSBUaW1lc3RhbXBUekdldERhdHVtKHdvcmtlci5y ZXBseV90aW1lKTsKKwkJCXZhbHVlc1s3XSA9IExTTkdldERhdHVtKHdvcmtlci5yZXBseV9sc24p OworCQlpZiAod29ya2VyLnJlcGx5X3RpbWUgPT0gMCkKKwkJCW51bGxzWzhdID0gdHJ1ZTsKKwkJ ZWxzZQorCQkJdmFsdWVzWzhdID0gVGltZXN0YW1wVHpHZXREYXR1bSh3b3JrZXIucmVwbHlfdGlt ZSk7CiAKIAkJdHVwbGVzdG9yZV9wdXR2YWx1ZXMocnNpbmZvLT5zZXRSZXN1bHQsIHJzaW5mby0+ c2V0RGVzYywKIAkJCQkJCQkgdmFsdWVzLCBudWxscyk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApp bmRleCBiZTQ3NTgzLi5iN2ZhMmMxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTUzOTMs OSArNTM5Myw5IEBACiAgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbicsIHBy b3Jvd3MgPT4gJzEwJywgcHJvaXNzdHJpY3QgPT4gJ2YnLAogICBwcm9yZXRzZXQgPT4gJ3QnLCBw cm92b2xhdGlsZSA9PiAncycsIHByb3BhcmFsbGVsID0+ICdyJywKICAgcHJvcmV0dHlwZSA9PiAn cmVjb3JkJywgcHJvYXJndHlwZXMgPT4gJ29pZCcsCi0gIHByb2FsbGFyZ3R5cGVzID0+ICd7b2lk LG9pZCxvaWQsaW50NCxwZ19sc24sdGltZXN0YW1wdHosdGltZXN0YW1wdHoscGdfbHNuLHRpbWVz dGFtcHR6fScsCi0gIHByb2FyZ21vZGVzID0+ICd7aSxvLG8sbyxvLG8sbyxvLG99JywKLSAgcHJv YXJnbmFtZXMgPT4gJ3tzdWJpZCxzdWJpZCxyZWxpZCxwaWQscmVjZWl2ZWRfbHNuLGxhc3RfbXNn X3NlbmRfdGltZSxsYXN0X21zZ19yZWNlaXB0X3RpbWUsbGF0ZXN0X2VuZF9sc24sbGF0ZXN0X2Vu ZF90aW1lfScsCisgIHByb2FsbGFyZ3R5cGVzID0+ICd7b2lkLG9pZCxvaWQsaW50NCxpbnQ0LHBn X2xzbix0aW1lc3RhbXB0eix0aW1lc3RhbXB0eixwZ19sc24sdGltZXN0YW1wdHp9JywKKyAgcHJv YXJnbW9kZXMgPT4gJ3tpLG8sbyxvLG8sbyxvLG8sbyxvfScsCisgIHByb2FyZ25hbWVzID0+ICd7 c3ViaWQsc3ViaWQscmVsaWQscGlkLG1haW5fd29ya2VyX3BpZCxyZWNlaXZlZF9sc24sbGFzdF9t c2dfc2VuZF90aW1lLGxhc3RfbXNnX3JlY2VpcHRfdGltZSxsYXRlc3RfZW5kX2xzbixsYXRlc3Rf ZW5kX3RpbWV9JywKICAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF9zdWJzY3JpcHRpb24nIH0sCiB7 IG9pZCA9PiAnMjAyNicsIGRlc2NyID0+ICdzdGF0aXN0aWNzOiBjdXJyZW50IGJhY2tlbmQgUElE JywKICAgcHJvbmFtZSA9PiAncGdfYmFja2VuZF9waWQnLCBwcm92b2xhdGlsZSA9PiAncycsIHBy b3BhcmFsbGVsID0+ICdyJywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cnVsZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKaW5kZXggN2Vj M2QyNi4uYmUxMmM2MiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxl cy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKQEAgLTIwOTEs NiArMjA5MSw3IEBAIHBnX3N0YXRfc3NsfCBTRUxFQ1Qgcy5waWQsCiBwZ19zdGF0X3N1YnNjcmlw dGlvbnwgU0VMRUNUIHN1Lm9pZCBBUyBzdWJpZCwKICAgICBzdS5zdWJuYW1lLAogICAgIHN0LnBp ZCwKKyAgICBzdC5tYWluX3dvcmtlcl9waWQsCiAgICAgc3QucmVsaWQsCiAgICAgc3QucmVjZWl2 ZWRfbHNuLAogICAgIHN0Lmxhc3RfbXNnX3NlbmRfdGltZSwKQEAgLTIwOTgsNyArMjA5OSw3IEBA IHBnX3N0YXRfc3Vic2NyaXB0aW9ufCBTRUxFQ1Qgc3Uub2lkIEFTIHN1YmlkLAogICAgIHN0Lmxh dGVzdF9lbmRfbHNuLAogICAgIHN0LmxhdGVzdF9lbmRfdGltZQogICAgRlJPTSAocGdfc3Vic2Ny aXB0aW9uIHN1Ci0gICAgIExFRlQgSk9JTiBwZ19zdGF0X2dldF9zdWJzY3JpcHRpb24oTlVMTDo6 b2lkKSBzdChzdWJpZCwgcmVsaWQsIHBpZCwgcmVjZWl2ZWRfbHNuLCBsYXN0X21zZ19zZW5kX3Rp bWUsIGxhc3RfbXNnX3JlY2VpcHRfdGltZSwgbGF0ZXN0X2VuZF9sc24sIGxhdGVzdF9lbmRfdGlt ZSkgT04gKChzdC5zdWJpZCA9IHN1Lm9pZCkpKTsKKyAgICAgTEVGVCBKT0lOIHBnX3N0YXRfZ2V0 X3N1YnNjcmlwdGlvbihOVUxMOjpvaWQpIHN0KHN1YmlkLCByZWxpZCwgcGlkLCBtYWluX3dvcmtl cl9waWQsIHJlY2VpdmVkX2xzbiwgbGFzdF9tc2dfc2VuZF90aW1lLCBsYXN0X21zZ19yZWNlaXB0 X3RpbWUsIGxhdGVzdF9lbmRfbHNuLCBsYXRlc3RfZW5kX3RpbWUpIE9OICgoc3Quc3ViaWQgPSBz dS5vaWQpKSk7CiBwZ19zdGF0X3N1YnNjcmlwdGlvbl9zdGF0c3wgU0VMRUNUIHNzLnN1YmlkLAog ICAgIHMuc3VibmFtZSwKICAgICBzcy5hcHBseV9lcnJvcl9jb3VudCwKLS0gCjIuNy4yLndpbmRv d3MuMQoK --_006_OS0PR01MB57160A440C9821C48ABD4D9C94649OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v21-0001-Perform-streaming-logical-transactions-by-backgr.patch" Content-Description: v21-0001-Perform-streaming-logical-transactions-by-backgr.patch Content-Disposition: attachment; filename="v21-0001-Perform-streaming-logical-transactions-by-backgr.patch"; size=115896; creation-date="Thu, 11 Aug 2022 07:47:00 GMT"; modification-date="Thu, 11 Aug 2022 07:47:56 GMT" Content-Transfer-Encoding: base64 RnJvbSBiZmQ2NDU3M2FlMDE3NzM2N2FhNmFjNTBjZDgwMjAwNzczMjkzNjZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjAgQXByIDIwMjIgMTY6NDU6MDcgKzA4MDAKU3ViamVjdDogW1BBVENI IHYyMSAxLzVdIFBlcmZvcm0gc3RyZWFtaW5nIGxvZ2ljYWwgdHJhbnNhY3Rpb25zIGJ5IGJhY2tn 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 YXZpb3VyKS4KCkluIGFkZGl0aW9uLCB0aGUgcGF0Y2ggZXh0ZW5kcyB0aGUgbG9naWNhbCByZXBs aWNhdGlvbiBTVFJFQU1fQUJPUlQgbWVzc2FnZSBzbwp0aGF0IGFib3J0X3RpbWUgYW5kIGFib3J0 X2xzbiBjYW4gYWxzbyBiZSBzZW50IHdoaWNoIGNhbiBiZSB1c2VkIHRvIHVwZGF0ZSB0aGUKcmVw bGljYXRpb24gb3JpZ2luIGluIGFwcGx5IGJhY2tncm91bmQgd29ya2VyIHdoZW4gdGhlIHN0cmVh bWluZyB0cmFuc2FjdGlvbiBpcwphYm9ydGVkLgotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5z Z21sICAgICAgICAgICAgICAgICAgICAgIHwgIDExICstCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNn bWwgICAgICAgICAgICAgICAgICAgICAgICB8ICAyNSArCiBkb2Mvc3JjL3NnbWwvbG9naWNhbC1y ZXBsaWNhdGlvbi5zZ21sICAgICAgICAgICB8ICAxMCArCiBkb2Mvc3JjL3NnbWwvcHJvdG9jb2wu c2dtbCAgICAgICAgICAgICAgICAgICAgICB8ICAyOCArLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfc3Vic2NyaXB0aW9uLnNnbWwgICAgICAgfCAgMjQgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hhY3QuYyAgICAgICAgICAgICAgIHwgIDEzICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRz L3N1YnNjcmlwdGlvbmNtZHMuYyAgICAgICAgIHwgIDY2ICstCiBzcmMvYmFja2VuZC9wb3N0bWFz dGVyL2Jnd29ya2VyLmMgICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL01ha2VmaWxlICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2FwcGx5Ymd3b3JrZXIuYyB8IDc2NCArKysrKysrKysrKysrKysrKysrKysr Kwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYyAgICAgICAgfCAgMTAg Ky0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyAgICAgIHwgMTMx ICsrKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMgICAgICAgIHwg IDIzICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgICAgICAgICB8 ICA0MSArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMg fCAgMTAgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgICAg IHwgIDEwICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAg ICB8IDc5NCArKysrKysrKysrKysrKysrKystLS0tLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3Bnb3V0cHV0L3Bnb3V0cHV0LmMgICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC91dGlscy9hY3Rp dml0eS93YWl0X2V2ZW50LmMgICAgICAgICB8ICAgMyArCiBzcmMvYmFja2VuZC91dGlscy9taXNj L2d1Yy5jICAgICAgICAgICAgICAgICAgICB8ICAxMiArCiBzcmMvYmFja2VuZC91dGlscy9taXNj L3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgICB8ICAgMSArCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5jICAgICAgICAgICAgICAgICAgICAgICB8ICAgNiArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19zdWJzY3JpcHRpb24uaCAgICAgICAgICAgfCAgMjEgKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL2xvZ2ljYWxsYXVuY2hlci5oICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL2xvZ2ljYWxwcm90by5oICAgICAgICAgIHwgIDI3ICstCiBzcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi9sb2dpY2Fsd29ya2VyLmggICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi9vcmlnaW4uaCAgICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vcmVvcmRlcmJ1ZmZlci5oICAgICAgICAgfCAgIDcgKy0KIHNyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oICAgICAgIHwgMTExICsrKy0KIHNyYy9pbmNsdWRlL3V0 aWxzL3dhaXRfZXZlbnQuaCAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dCAgICAgIHwgIDEyICstCiBzcmMvdGVzdC9yZWdy ZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsICAgICAgICAgICB8ICAgNiArLQogc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAgICAgfCAgIDUgKwogMzMgZmlsZXMgY2hh bmdlZCwgMTkzNCBpbnNlcnRpb25zKCspLCAyNTIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseWJnd29ya2VyLmMKCmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRh bG9ncy5zZ21sCmluZGV4IGNkMmNjMzcuLjQ5Y2Y5NDIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9jYXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBAIC03ODcz LDExICs3ODczLDE2IEBAIFNDUkFNLVNIQS0yNTYkPHJlcGxhY2VhYmxlPiZsdDtpdGVyYXRpb24g Y291bnQmZ3Q7PC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPiZsCiAKICAgICAgPHJvdz4KICAg ICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5f ZGVmaW5pdGlvbiI+Ci0gICAgICAgPHN0cnVjdGZpZWxkPnN1YnN0cmVhbTwvc3RydWN0ZmllbGQ+ IDx0eXBlPmJvb2w8L3R5cGU+CisgICAgICAgPHN0cnVjdGZpZWxkPnN1YnN0cmVhbTwvc3RydWN0 ZmllbGQ+IDx0eXBlPmNoYXI8L3R5cGU+CiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KLSAg ICAgICBJZiB0cnVlLCB0aGUgc3Vic2NyaXB0aW9uIHdpbGwgYWxsb3cgc3RyZWFtaW5nIG9mIGlu LXByb2dyZXNzCi0gICAgICAgdHJhbnNhY3Rpb25zCisgICAgICAgQ29udHJvbHMgaG93IHRvIGhh bmRsZSB0aGUgc3RyZWFtaW5nIG9mIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uczoKKyAgICAgICA8 bGl0ZXJhbD5mPC9saXRlcmFsPiA9IGRpc2FsbG93IHN0cmVhbWluZyBvZiBpbi1wcm9ncmVzcyB0 cmFuc2FjdGlvbnMsCisgICAgICAgPGxpdGVyYWw+dDwvbGl0ZXJhbD4gPSBzcGlsbCB0aGUgY2hh bmdlcyBvZiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMgdG8KKyAgICAgICBkaXNrIGFuZCBhcHBs eSBhdCBvbmNlIGFmdGVyIHRoZSB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gdGhlCisgICAg ICAgcHVibGlzaGVyLAorICAgICAgIDxsaXRlcmFsPnA8L2xpdGVyYWw+ID0gYXBwbHkgY2hhbmdl cyBkaXJlY3RseSB1c2luZyBhIGJhY2tncm91bmQKKyAgICAgICB3b3JrZXIsIGlmIGF2YWlsYWJs ZSwgb3RoZXJ3aXNlLCBpdCBiZWhhdmVzIHRoZSBzYW1lIGFzICd0JwogICAgICAgPC9wYXJhPjwv ZW50cnk+CiAgICAgIDwvcm93PgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNn bWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggMjUyMmY0Yy4uNDY4Y2EyOCAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jb25m aWcuc2dtbApAQCAtNDk3Nyw2ICs0OTc3LDMxIEBAIEFOWSA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+bnVtX3N5bmM8L3JlcGxhY2VhYmxlPiAoIDxyZXBsYWNlYWJsZSBjbGFzcz0iCiAg ICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICA8dmFybGlzdGVu dHJ5IGlkPSJndWMtbWF4LWFwcGx5LWJnd29ya2Vycy1wZXItc3Vic2NyaXB0aW9uIiB4cmVmbGFi ZWw9Im1heF9hcHBseV9iZ3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiI+CisgICAgICA8dGVybT48 dmFybmFtZT5tYXhfYXBwbHlfYmd3b3JrZXJzX3Blcl9zdWJzY3JpcHRpb248L3Zhcm5hbWU+ICg8 dHlwZT5pbnRlZ2VyPC90eXBlPikKKyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+ PHZhcm5hbWU+bWF4X2FwcGx5X2Jnd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uPC92YXJuYW1lPiBj b25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICAgIDwvaW5kZXh0ZXJtPgorICAg ICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBNYXhp bXVtIG51bWJlciBvZiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcnMgcGVyIHN1YnNjcmlwdGlvbi4g VGhpcworICAgICAgICBwYXJhbWV0ZXIgY29udHJvbHMgdGhlIGFtb3VudCBvZiBwYXJhbGxlbGlz bSBmb3Igc3RyZWFtaW5nIG9mCisgICAgICAgIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyB3aXRo IHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIKKyAgICAgICAgPGxpdGVyYWw+c3RyZWFtaW5nID0gcGFy YWxsZWw8L2xpdGVyYWw+LgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAg VGhlIGFwcGx5IGJhY2tncm91bmQgd29ya2VycyBhcmUgdGFrZW4gZnJvbSB0aGUgcG9vbCBkZWZp bmVkIGJ5CisgICAgICAgIDx2YXJuYW1lPm1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM8 L3Zhcm5hbWU+LgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIGRl ZmF1bHQgdmFsdWUgaXMgMi4gVGhpcyBwYXJhbWV0ZXIgY2FuIG9ubHkgYmUgc2V0IGluIHRoZQor ICAgICAgICA8ZmlsZW5hbWU+cG9zdGdyZXNxbC5jb25mPC9maWxlbmFtZT4gZmlsZSBvciBvbiB0 aGUgc2VydmVyIGNvbW1hbmQKKyAgICAgICAgbGluZS4KKyAgICAgICA8L3BhcmE+CisgICAgICA8 L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICA8L3ZhcmlhYmxlbGlzdD4K ICAgICA8L3NlY3QyPgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNh dGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAppbmRleCBi ZGYxZTdiLi45Mjk5N2Y5IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNh dGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKQEAg LTExNTMsNiArMTE1MywxNiBAQCBDT05URVhUOiAgcHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3Ig cmVwbGljYXRpb24gb3JpZ2luICJwZ18xNjM5NSIgZHVyaW5nICJJTlNFUgogICAgbWlnaHQgbm90 IHZpb2xhdGUgYW55IGNvbnN0cmFpbnQuICBUaGlzIGNhbiBlYXNpbHkgbWFrZSB0aGUgc3Vic2Ny aWJlcgogICAgaW5jb25zaXN0ZW50LgogICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBXaGVuIHRo ZSBzdHJlYW1pbmcgbW9kZSBpcyA8bGl0ZXJhbD5wYXJhbGxlbDwvbGl0ZXJhbD4sIHRoZSBmaW5p c2ggTFNOIG9mCisgICBmYWlsZWQgdHJhbnNhY3Rpb25zIG1heSBub3QgYmUgbG9nZ2VkLiBJbiB0 aGF0IGNhc2UsIGl0IG1heSBiZSBuZWNlc3NhcnkgdG8KKyAgIGNoYW5nZSB0aGUgc3RyZWFtaW5n IG1vZGUgdG8gPGxpdGVyYWw+b248L2xpdGVyYWw+IGFuZCBjYXVzZSB0aGUgc2FtZQorICAgY29u ZmxpY3RzIGFnYWluIHNvIHRoZSBmaW5pc2ggTFNOIG9mIHRoZSBmYWlsZWQgdHJhbnNhY3Rpb24g d2lsbCBiZSB3cml0dGVuCisgICB0byB0aGUgc2VydmVyIGxvZy4gRm9yIHRoZSB1c2FnZSBvZiBm aW5pc2ggTFNOLCBwbGVhc2UgcmVmZXIgdG8gPGxpbmsKKyAgIGxpbmtlbmQ9InNxbC1hbHRlcnN1 YnNjcmlwdGlvbiI+PGNvbW1hbmQ+QUxURVIgU1VCU0NSSVBUSU9OIC4uLgorICAgU0tJUDwvY29t bWFuZD48L2xpbms+LgorICA8L3BhcmE+CiAgPC9zZWN0MT4KIAogIDxzZWN0MSBpZD0ibG9naWNh bC1yZXBsaWNhdGlvbi1yZXN0cmljdGlvbnMiPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3By b3RvY29sLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbAppbmRleCAwZDRiNzIwLi5h YTRhNjcyIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvcHJvdG9jb2wuc2dtbApAQCAtMzA5Niw3ICszMDk2LDcgQEAgcHNxbCAiZGJuYW1l PXBvc3RncmVzIHJlcGxpY2F0aW9uPWRhdGFiYXNlIiAtYyAiSURFTlRJRllfU1lTVEVNOyIKICAg ICAgPGxpc3RpdGVtPgogICAgICAgPHBhcmE+CiAgICAgICAgUHJvdG9jb2wgdmVyc2lvbi4gQ3Vy cmVudGx5IHZlcnNpb25zIDxsaXRlcmFsPjE8L2xpdGVyYWw+LCA8bGl0ZXJhbD4yPC9saXRlcmFs PiwKLSAgICAgICBhbmQgPGxpdGVyYWw+MzwvbGl0ZXJhbD4gYXJlIHN1cHBvcnRlZC4KKyAgICAg ICA8bGl0ZXJhbD4zPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+NDwvbGl0ZXJhbD4gYXJlIHN1cHBv cnRlZC4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgogICAgICAgIFZlcnNpb24gPGxpdGVy YWw+MjwvbGl0ZXJhbD4gaXMgc3VwcG9ydGVkIG9ubHkgZm9yIHNlcnZlciB2ZXJzaW9uIDE0CkBA IC0zMTA2LDYgKzMxMDYsMTEgQEAgcHNxbCAiZGJuYW1lPXBvc3RncmVzIHJlcGxpY2F0aW9uPWRh dGFiYXNlIiAtYyAiSURFTlRJRllfU1lTVEVNOyIKICAgICAgICBWZXJzaW9uIDxsaXRlcmFsPjM8 L2xpdGVyYWw+IGlzIHN1cHBvcnRlZCBvbmx5IGZvciBzZXJ2ZXIgdmVyc2lvbiAxNQogICAgICAg IGFuZCBhYm92ZSwgYW5kIGl0IGFsbG93cyBzdHJlYW1pbmcgb2YgdHdvLXBoYXNlIGNvbW1pdHMu CiAgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBWZXJzaW9uIDxsaXRlcmFsPjQ8 L2xpdGVyYWw+IGlzIHN1cHBvcnRlZCBvbmx5IGZvciBzZXJ2ZXIgdmVyc2lvbiAxNgorICAgICAg IGFuZCBhYm92ZSwgYW5kIGl0IGFsbG93cyBhcHBseWluZyBzdHJlYW0gb2YgbGFyZ2UgaW4tcHJv Z3Jlc3MKKyAgICAgICB0cmFuc2FjdGlvbnMgaW4gcGFyYWxsZWwuCisgICAgICA8L3BhcmE+CiAg ICAgIDwvbGlzdGl0ZW0+CiAgICAgPC92YXJsaXN0ZW50cnk+CiAKQEAgLTY3OTcsNiArNjgwMiwy NyBAQCBwc3FsICJkYm5hbWU9cG9zdGdyZXMgcmVwbGljYXRpb249ZGF0YWJhc2UiIC1jICJJREVO VElGWV9TWVNURU07IgogICAgICAgPC92YXJsaXN0ZW50cnk+CiAKICAgICAgIDx2YXJsaXN0ZW50 cnk+CisgICAgICAgPHRlcm0+SW50NjQgKFhMb2dSZWNQdHIpPC90ZXJtPgorICAgICAgIDxsaXN0 aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBUaGUgTFNOIG9mIHRoZSBhYm9ydC4gVGhp cyBmaWVsZCBpcyBhdmFpbGFibGUgc2luY2UgcHJvdG9jb2wgdmVyc2lvbgorICAgICAgICAgNC4K KyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRy eT4KKworICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICA8dGVybT5JbnQ2NCAoVGltZXN0YW1w VHopPC90ZXJtPgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBB Ym9ydCB0aW1lc3RhbXAgb2YgdGhlIHRyYW5zYWN0aW9uLiBUaGUgdmFsdWUgaXMgaW4gbnVtYmVy CisgICAgICAgICBvZiBtaWNyb3NlY29uZHMgc2luY2UgUG9zdGdyZVNRTCBlcG9jaCAoMjAwMC0w MS0wMSkuIFRoaXMgZmllbGQgaXMKKyAgICAgICAgIGF2YWlsYWJsZSBzaW5jZSBwcm90b2NvbCB2 ZXJzaW9uIDQuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92 YXJsaXN0ZW50cnk+CisKKyAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgPHRlcm0+SW50MzIg KFRyYW5zYWN0aW9uSWQpPC90ZXJtPgogICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgPHBhcmE+ CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCBi L2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCmluZGV4IDczOTBjNzEu LmIwOGU0YjUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlv bi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCkBA IC0yMTcsMTMgKzIxNywyOSBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5zdWJzY3JpcHRpb25fbmFtZTwvcmVwbGFjZWFibAogICAgICAgIDwvdmFy bGlzdGVudHJ5PgogCiAgICAgICAgPHZhcmxpc3RlbnRyeT4KLSAgICAgICAgPHRlcm0+PGxpdGVy YWw+c3RyZWFtaW5nPC9saXRlcmFsPiAoPHR5cGU+Ym9vbGVhbjwvdHlwZT4pPC90ZXJtPgorICAg ICAgICA8dGVybT48bGl0ZXJhbD5zdHJlYW1pbmc8L2xpdGVyYWw+ICg8dHlwZT5lbnVtPC90eXBl Pik8L3Rlcm0+CiAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAg IFNwZWNpZmllcyB3aGV0aGVyIHRvIGVuYWJsZSBzdHJlYW1pbmcgb2YgaW4tcHJvZ3Jlc3MgdHJh bnNhY3Rpb25zCi0gICAgICAgICAgZm9yIHRoaXMgc3Vic2NyaXB0aW9uLiAgQnkgZGVmYXVsdCwg YWxsIHRyYW5zYWN0aW9ucwotICAgICAgICAgIGFyZSBmdWxseSBkZWNvZGVkIG9uIHRoZSBwdWJs aXNoZXIgYW5kIG9ubHkgdGhlbiBzZW50IHRvIHRoZQotICAgICAgICAgIHN1YnNjcmliZXIgYXMg YSB3aG9sZS4KKyAgICAgICAgICBmb3IgdGhpcyBzdWJzY3JpcHRpb24uICBUaGUgZGVmYXVsdCB2 YWx1ZSBpcyA8bGl0ZXJhbD5vZmY8L2xpdGVyYWw+LAorICAgICAgICAgIG1lYW5pbmcgYWxsIHRy YW5zYWN0aW9ucyBhcmUgZnVsbHkgZGVjb2RlZCBvbiB0aGUgcHVibGlzaGVyIGFuZCBvbmx5Cisg ICAgICAgICAgdGhlbiBzZW50IHRvIHRoZSBzdWJzY3JpYmVyIGFzIGEgd2hvbGUuCisgICAgICAg ICA8L3BhcmE+CisKKyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIElmIHNldCB0byA8bGl0ZXJh bD5vbjwvbGl0ZXJhbD4sIHRoZSBpbmNvbWluZyBjaGFuZ2VzIGFyZSB3cml0dGVuIHRvCisgICAg ICAgICAgdGVtcG9yYXJ5IGZpbGVzIGFuZCB0aGVuIGFwcGxpZWQgb25seSBhZnRlciB0aGUgdHJh bnNhY3Rpb24gaXMKKyAgICAgICAgICBjb21taXR0ZWQgb24gdGhlIHB1Ymxpc2hlci4KKyAgICAg ICAgIDwvcGFyYT4KKworICAgICAgICAgPHBhcmE+CisgICAgICAgICAgSWYgc2V0IHRvIDxsaXRl cmFsPnBhcmFsbGVsPC9saXRlcmFsPiwgaW5jb21pbmcgY2hhbmdlcyBhcmUgZGlyZWN0bHkKKyAg ICAgICAgICBhcHBsaWVkIHZpYSBvbmUgb2YgdGhlIGFwcGx5IGJhY2tncm91bmQgd29ya2Vycywg aWYgYXZhaWxhYmxlLiBJZiBubworICAgICAgICAgIGJhY2tncm91bmQgd29ya2VyIGlzIGZyZWUg dG8gaGFuZGxlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0aGVuIHRoZQorICAgICAgICAgIGNoYW5n ZXMgYXJlIHdyaXR0ZW4gdG8gdGVtcG9yYXJ5IGZpbGVzIGFuZCBhcHBsaWVkIGFmdGVyIHRoZQor ICAgICAgICAgIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4gTm90ZSB0aGF0IGlmIGFuIGVycm9y IGhhcHBlbnMgd2hlbgorICAgICAgICAgIGFwcGx5aW5nIGNoYW5nZXMgaW4gYSBiYWNrZ3JvdW5k IHdvcmtlciwgdGhlIGZpbmlzaCBMU04gb2YgdGhlCisgICAgICAgICAgcmVtb3RlIHRyYW5zYWN0 aW9uIG1pZ2h0IG5vdCBiZSByZXBvcnRlZCBpbiB0aGUgc2VydmVyIGxvZy4KICAgICAgICAgIDwv cGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3hhY3QuYwppbmRleCA1MGYwOTJkLi41YTc2ZDljIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGFjdC5jCkBAIC0xNzExLDYgKzE3MTEsNyBAQCBSZWNvcmRUcmFuc2FjdGlvbkFi b3J0KGJvb2wgaXNTdWJYYWN0KQogCWludAkJCW5jaGlsZHJlbjsKIAlUcmFuc2FjdGlvbklkICpj aGlsZHJlbjsKIAlUaW1lc3RhbXBUeiB4YWN0X3RpbWU7CisJYm9vbAkJcmVwbG9yaWdpbjsKIAog CS8qCiAJICogSWYgd2UgaGF2ZW4ndCBiZWVuIGFzc2lnbmVkIGFuIFhJRCwgbm9ib2R5IHdpbGwg Y2FyZSB3aGV0aGVyIHdlIGFib3J0ZWQKQEAgLTE3NDEsNiArMTc0MiwxMyBAQCBSZWNvcmRUcmFu c2FjdGlvbkFib3J0KGJvb2wgaXNTdWJYYWN0KQogCQllbG9nKFBBTklDLCAiY2Fubm90IGFib3J0 IHRyYW5zYWN0aW9uICV1LCBpdCB3YXMgYWxyZWFkeSBjb21taXR0ZWQiLAogCQkJIHhpZCk7CiAK KwkvKgorCSAqIEFyZSB3ZSB1c2luZyB0aGUgcmVwbGljYXRpb24gb3JpZ2lucyBmZWF0dXJlPyAg T3IsIGluIG90aGVyIHdvcmRzLAorCSAqIGFyZSB3ZSByZXBsYXlpbmcgcmVtb3RlIGFjdGlvbnM/ CisJICovCisJcmVwbG9yaWdpbiA9IChyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luICE9IEludmFs aWRSZXBPcmlnaW5JZCAmJgorCQkJCSAgcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiAhPSBEb05v dFJlcGxpY2F0ZUlkKTsKKwogCS8qIEZldGNoIHRoZSBkYXRhIHdlIG5lZWQgZm9yIHRoZSBhYm9y dCByZWNvcmQgKi8KIAlucmVscyA9IHNtZ3JHZXRQZW5kaW5nRGVsZXRlcyhmYWxzZSwgJnJlbHMp OwogCW5jaGlsZHJlbiA9IHhhY3RHZXRDb21taXR0ZWRDaGlsZHJlbigmY2hpbGRyZW4pOwpAQCAt MTc2NSw2ICsxNzczLDExIEBAIFJlY29yZFRyYW5zYWN0aW9uQWJvcnQoYm9vbCBpc1N1YlhhY3Qp CiAJCQkJCSAgIE15WGFjdEZsYWdzLCBJbnZhbGlkVHJhbnNhY3Rpb25JZCwKIAkJCQkJICAgTlVM TCk7CiAKKwlpZiAocmVwbG9yaWdpbikKKwkJLyogTW92ZSBMU05zIGZvcndhcmQgZm9yIHRoaXMg cmVwbGljYXRpb24gb3JpZ2luICovCisJCXJlcGxvcmlnaW5fc2Vzc2lvbl9hZHZhbmNlKHJlcGxv cmlnaW5fc2Vzc2lvbl9vcmlnaW5fbHNuLAorCQkJCQkJCQkgICBYYWN0TGFzdFJlY0VuZCk7CisK IAkvKgogCSAqIFJlcG9ydCB0aGUgbGF0ZXN0IGFzeW5jIGFib3J0IExTTiwgc28gdGhhdCB0aGUg V0FMIHdyaXRlciBrbm93cyB0bwogCSAqIGZsdXNoIHRoaXMgYWJvcnQuIFRoZXJlJ3Mgbm90aGlu ZyB0byBiZSBnYWluZWQgYnkgZGVsYXlpbmcgdGhpcywgc2luY2UKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3N1YnNjcmlwdGlvbmNtZHMuYwppbmRleCBmNzNkZmI2Li43OGI3ZWU3IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCkBAIC04NCw3ICs4NCw3IEBAIHR5cGVkZWYgc3Ry dWN0IFN1Yk9wdHMKIAlib29sCQljb3B5X2RhdGE7CiAJYm9vbAkJcmVmcmVzaDsKIAlib29sCQli aW5hcnk7Ci0JYm9vbAkJc3RyZWFtaW5nOworCWNoYXIJCXN0cmVhbWluZzsKIAlib29sCQl0d29w aGFzZTsKIAlib29sCQlkaXNhYmxlb25lcnI7CiAJY2hhcgkgICAqb3JpZ2luOwpAQCAtOTgsNiAr OTgsNjIgQEAgc3RhdGljIHZvaWQgUmVwb3J0U2xvdENvbm5lY3Rpb25FcnJvcihMaXN0ICpyc3Rh dGVzLCBPaWQgc3ViaWQsIGNoYXIgKnNsb3RuYW1lLAogCiAKIC8qCisgKiBFeHRyYWN0IHRoZSBz dHJlYW1pbmcgbW9kZSB2YWx1ZSBmcm9tIGEgRGVmRWxlbS4gIFRoaXMgaXMgbGlrZQorICogZGVm R2V0Qm9vbGVhbigpIGJ1dCBhbHNvIGFjY2VwdHMgdGhlIHNwZWNpYWwgdmFsdWUgb2YgInBhcmFs bGVsIi4KKyAqLworc3RhdGljIGNoYXIKK2RlZkdldFN0cmVhbWluZ01vZGUoRGVmRWxlbSAqZGVm KQoreworCS8qCisJICogSWYgbm8gcGFyYW1ldGVyIHZhbHVlIGdpdmVuLCBhc3N1bWUgInRydWUi IGlzIG1lYW50LgorCSAqLworCWlmIChkZWYtPmFyZyA9PSBOVUxMKQorCQlyZXR1cm4gU1VCU1RS RUFNX09OOworCisJLyoKKwkgKiBBbGxvdyAwLCAxLCAiZmFsc2UiLCAidHJ1ZSIsICJvZmYiLCAi b24iIG9yICJwYXJhbGxlbCIuCisJICovCisJc3dpdGNoIChub2RlVGFnKGRlZi0+YXJnKSkKKwl7 CisJCWNhc2UgVF9JbnRlZ2VyOgorCQkJc3dpdGNoIChpbnRWYWwoZGVmLT5hcmcpKQorCQkJewor CQkJCWNhc2UgMDoKKwkJCQkJcmV0dXJuIFNVQlNUUkVBTV9PRkY7CisJCQkJY2FzZSAxOgorCQkJ CQlyZXR1cm4gU1VCU1RSRUFNX09OOworCQkJCWRlZmF1bHQ6CisJCQkJCS8qIG90aGVyd2lzZSwg ZXJyb3Igb3V0IGJlbG93ICovCisJCQkJCWJyZWFrOworCQkJfQorCQkJYnJlYWs7CisJCWRlZmF1 bHQ6CisJCQl7CisJCQkJY2hhcgkgICAqc3ZhbCA9IGRlZkdldFN0cmluZyhkZWYpOworCisJCQkJ LyoKKwkJCQkgKiBUaGUgc2V0IG9mIHN0cmluZ3MgYWNjZXB0ZWQgaGVyZSBzaG91bGQgbWF0Y2gg dXAgd2l0aCB0aGUKKwkJCQkgKiBncmFtbWFyJ3Mgb3B0X2Jvb2xlYW5fb3Jfc3RyaW5nIHByb2R1 Y3Rpb24uCisJCQkJICovCisJCQkJaWYgKHBnX3N0cmNhc2VjbXAoc3ZhbCwgImZhbHNlIikgPT0g MCB8fAorCQkJCQlwZ19zdHJjYXNlY21wKHN2YWwsICJvZmYiKSA9PSAwKQorCQkJCQlyZXR1cm4g U1VCU1RSRUFNX09GRjsKKwkJCQlpZiAocGdfc3RyY2FzZWNtcChzdmFsLCAidHJ1ZSIpID09IDAg fHwKKwkJCQkJcGdfc3RyY2FzZWNtcChzdmFsLCAib24iKSA9PSAwKQorCQkJCQlyZXR1cm4gU1VC U1RSRUFNX09OOworCQkJCWlmIChwZ19zdHJjYXNlY21wKHN2YWwsICJwYXJhbGxlbCIpID09IDAp CisJCQkJCXJldHVybiBTVUJTVFJFQU1fUEFSQUxMRUw7CisJCQl9CisJCQlicmVhazsKKwl9CisJ ZXJlcG9ydChFUlJPUiwKKwkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCSBl cnJtc2coIiVzIHJlcXVpcmVzIGEgQm9vbGVhbiB2YWx1ZSBvciBcInBhcmFsbGVsXCIiLAorCQkJ CQlkZWYtPmRlZm5hbWUpKSk7CisJcmV0dXJuIFNVQlNUUkVBTV9PRkY7CQkvKiBrZWVwIGNvbXBp bGVyIHF1aWV0ICovCit9CisKKy8qCiAgKiBDb21tb24gb3B0aW9uIHBhcnNpbmcgZnVuY3Rpb24g Zm9yIENSRUFURSBhbmQgQUxURVIgU1VCU0NSSVBUSU9OIGNvbW1hbmRzLgogICoKICAqIFNpbmNl IG5vdCBhbGwgb3B0aW9ucyBjYW4gYmUgc3BlY2lmaWVkIGluIGJvdGggY29tbWFuZHMsIHRoaXMg ZnVuY3Rpb24KQEAgLTEzNCw3ICsxOTAsNyBAQCBwYXJzZV9zdWJzY3JpcHRpb25fb3B0aW9ucyhQ YXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKnN0bXRfb3B0aW9ucywKIAlpZiAoSXNTZXQoc3VwcG9y dGVkX29wdHMsIFNVQk9QVF9CSU5BUlkpKQogCQlvcHRzLT5iaW5hcnkgPSBmYWxzZTsKIAlpZiAo SXNTZXQoc3VwcG9ydGVkX29wdHMsIFNVQk9QVF9TVFJFQU1JTkcpKQotCQlvcHRzLT5zdHJlYW1p bmcgPSBmYWxzZTsKKwkJb3B0cy0+c3RyZWFtaW5nID0gU1VCU1RSRUFNX09GRjsKIAlpZiAoSXNT ZXQoc3VwcG9ydGVkX29wdHMsIFNVQk9QVF9UV09QSEFTRV9DT01NSVQpKQogCQlvcHRzLT50d29w aGFzZSA9IGZhbHNlOwogCWlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX0RJU0FCTEVf T05fRVJSKSkKQEAgLTIzNyw3ICsyOTMsNyBAQCBwYXJzZV9zdWJzY3JpcHRpb25fb3B0aW9ucyhQ YXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKnN0bXRfb3B0aW9ucywKIAkJCQllcnJvckNvbmZsaWN0 aW5nRGVmRWxlbShkZWZlbCwgcHN0YXRlKTsKIAogCQkJb3B0cy0+c3BlY2lmaWVkX29wdHMgfD0g U1VCT1BUX1NUUkVBTUlORzsKLQkJCW9wdHMtPnN0cmVhbWluZyA9IGRlZkdldEJvb2xlYW4oZGVm ZWwpOworCQkJb3B0cy0+c3RyZWFtaW5nID0gZGVmR2V0U3RyZWFtaW5nTW9kZShkZWZlbCk7CiAJ CX0KIAkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAidHdvX3BoYXNlIikgPT0gMCkK IAkJewpAQCAtNjI3LDcgKzY4Myw3IEBAIENyZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpw c3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJdmFsdWVzW0FudW1fcGdfc3Vi c2NyaXB0aW9uX3N1Ym93bmVyIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKG93bmVyKTsKIAl2YWx1 ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViZW5hYmxlZCAtIDFdID0gQm9vbEdldERhdHVtKG9w dHMuZW5hYmxlZCk7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmJpbmFyeSAtIDFd ID0gQm9vbEdldERhdHVtKG9wdHMuYmluYXJ5KTsKLQl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRp b25fc3Vic3RyZWFtIC0gMV0gPSBCb29sR2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcpOworCXZhbHVl c1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJzdHJlYW0gLSAxXSA9IENoYXJHZXREYXR1bShvcHRz LnN0cmVhbWluZyk7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnR3b3BoYXNlc3Rh dGUgLSAxXSA9CiAJCUNoYXJHZXREYXR1bShvcHRzLnR3b3BoYXNlID8KIAkJCQkJIExPR0lDQUxS RVBfVFdPUEhBU0VfU1RBVEVfUEVORElORyA6CkBAIC0xMDg5LDcgKzExNDUsNyBAQCBBbHRlclN1 YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyU3Vic2NyaXB0aW9uU3RtdCAqc3Rt dCwKIAkJCQlpZiAoSXNTZXQob3B0cy5zcGVjaWZpZWRfb3B0cywgU1VCT1BUX1NUUkVBTUlORykp CiAJCQkJewogCQkJCQl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vic3RyZWFtIC0gMV0g PQotCQkJCQkJQm9vbEdldERhdHVtKG9wdHMuc3RyZWFtaW5nKTsKKwkJCQkJCUNoYXJHZXREYXR1 bShvcHRzLnN0cmVhbWluZyk7CiAJCQkJCXJlcGxhY2VzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1 YnN0cmVhbSAtIDFdID0gdHJ1ZTsKIAkJCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvYmd3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYwpp bmRleCA0MDYwMWFlLi40MGNjYjg5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L2Jnd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCkBAIC0x MjgsNiArMTI4LDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdAogCX0sCiAJewogCQkiQXBwbHlXb3Jr ZXJNYWluIiwgQXBwbHlXb3JrZXJNYWluCisJfSwKKwl7CisJCSJBcHBseUJnd29ya2VyTWFpbiIs IEFwcGx5Qmd3b3JrZXJNYWluCiAJfQogfTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvTWFrZWZpbGUKaW5kZXggYzRlMmZkZS4uY2JmYjVkNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL01ha2VmaWxlCkBAIC0xNSw2ICsxNSw3IEBAIGluY2x1ZGUgJCh0b3BfYnVp bGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKIG92ZXJyaWRlIENQUEZMQUdTIDo9IC1JJChzcmNk aXIpICQoQ1BQRkxBR1MpCiAKIE9CSlMgPSBcCisJYXBwbHliZ3dvcmtlci5vIFwKIAlkZWNvZGUu byBcCiAJbGF1bmNoZXIubyBcCiAJbG9naWNhbC5vIFwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9hcHBseWJnd29ya2VyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uZDViNjFjYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvYXBwbHliZ3dvcmtlci5jCkBAIC0wLDAgKzEsNzY0IEBACisvKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAqIGFwcGx5Ymd3b3JrZXIuYworICogICAgIFN1cHBvcnQgcm91dGluZXMgZm9y IGFwcGx5aW5nIHhhY3QgYnkgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIKKyAqCisgKiBDb3B5cmln aHQgKGMpIDIwMTYtMjAyMiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAq CisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L2FwcGx5Ymd3b3JrZXIuYworICoKKyAqIFRoaXMgZmlsZSBjb250YWlucyByb3V0aW5lcyB0aGF0 IGFyZSBpbnRlbmRlZCB0byBzdXBwb3J0IHNldHRpbmcgdXAsIHVzaW5nLAorICogYW5kIHRlYXJp bmcgZG93biBhIEFwcGx5Qmd3b3JrZXJJbmZvLgorICoKKyAqIFJlZmVyIHRvIHRoZSBjb21tZW50 cyBpbiBmaWxlIGhlYWRlciBvZiBsb2dpY2FsL3dvcmtlci5jIHRvIHNlZSBtb3JlCisgKiBpbmZv cm1hdGlvbiBhYm91dCBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4KKyAqCisgKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqLworCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImxpYnBxL3Bx Zm9ybWF0LmgiCisjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKKyNpbmNsdWRlICJwZ3N0YXQuaCIK KyNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9u L2xvZ2ljYWxsYXVuY2hlci5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIu aCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9vcmlnaW4uaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlv bi93YWxyZWNlaXZlci5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5o IgorI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXku aCIKKyNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCisjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIK KyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL3Jlc293bmVyLmgi CisjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKworI2RlZmluZSBQR19MT0dJQ0FMX0FQUExZ X1NITV9NQUdJQyAweDc4N2NhMDY3CisKKy8qCisgKiBEU00ga2V5cyBmb3IgYXBwbHkgYmFja2dy b3VuZCB3b3JrZXIuICBVbmxpa2Ugb3RoZXIgcGFyYWxsZWwgZXhlY3V0aW9uIGNvZGUsCisgKiBz aW5jZSB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IERTTSBrZXlzIGNvbmZsaWN0aW5nIHdp dGggcGxhbl9ub2RlX2lkIHdlCisgKiBjYW4gdXNlIHNtYWxsIGludGVnZXJzLgorICovCisjZGVm aW5lIEFQUExZX0JHV09SS0VSX0tFWV9TSEFSRUQJMQorI2RlZmluZSBBUFBMWV9CR1dPUktFUl9L RVlfTVEJCTIKKworLyogUXVldWUgc2l6ZSBvZiBEU00sIDE2IE1CIGZvciBub3cuICovCisjZGVm aW5lIERTTV9RVUVVRV9TSVpFCSgxNioxMDI0KjEwMjQpCisKKy8qCisgKiBUaGVyZSBhcmUgdGhy ZWUgZmllbGRzIGluIG1lc3NhZ2U6IHN0YXJ0X2xzbiwgZW5kX2xzbiBhbmQgc2VuZF90aW1lLiBC ZWNhdXNlCisgKiB3ZSBoYXZlIHVwZGF0ZWQgdGhlc2Ugc3RhdGlzdGljcyBpbiBhcHBseSB3b3Jr ZXIsIHdlIGNvdWxkIGlnbm9yZSB0aGVzZQorICogZmllbGRzIGluIGFwcGx5IGJhY2tncm91bmQg d29ya2VyLiAoc2VlIGZ1bmN0aW9uIExvZ2ljYWxSZXBBcHBseUxvb3ApLgorICovCisjZGVmaW5l IFNJWkVfU1RBVFNfTUVTU0FHRSAoMipzaXplb2YoWExvZ1JlY1B0cikrc2l6ZW9mKFRpbWVzdGFt cFR6KSkKKworLyoKKyAqIEVudHJ5IGZvciBhIGhhc2ggdGFibGUgd2UgdXNlIHRvIG1hcCBmcm9t IHhpZCB0byBvdXIgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIKKyAqIHN0YXRlLgorICovCit0eXBl ZGVmIHN0cnVjdCBBcHBseUJnd29ya2VyRW50cnkKK3sKKwlUcmFuc2FjdGlvbklkIHhpZDsJLyog SGFzaCBrZXkgLS0gbXVzdCBiZSBmaXJzdCAqLworCUFwcGx5Qmd3b3JrZXJJbmZvICp3c3RhdGU7 Cit9IEFwcGx5Qmd3b3JrZXJFbnRyeTsKKworLyogQXBwbHkgYmFja2dyb3VuZCB3b3JrZXJzIGhh c2ggdGFibGUgKGluaXRpYWxpemVkIG9uIGZpcnN0IHVzZSkuICovCitzdGF0aWMgSFRBQiAqQXBw bHlCZ3dvcmtlcnNIYXNoID0gTlVMTDsKK3N0YXRpYyBMaXN0ICpBcHBseUJnd29ya2Vyc0ZyZWVM aXN0ID0gTklMOworc3RhdGljIExpc3QgKkFwcGx5Qmd3b3JrZXJzTGlzdCA9IE5JTDsKKworLyoK KyAqIEluZm9ybWF0aW9uIHNoYXJlZCBiZXR3ZWVuIG1haW4gYXBwbHkgd29ya2VyIGFuZCBhcHBs eSBiYWNrZ3JvdW5kIHdvcmtlci4KKyAqLwordm9sYXRpbGUgQXBwbHlCZ3dvcmtlclNoYXJlZCAq TXlQYXJhbGxlbFNoYXJlZCA9IE5VTEw7CisKK0xpc3QJICAgKnN1YnhhY3RsaXN0ID0gTklMOwor CitzdGF0aWMgYm9vbCBhcHBseV9iZ3dvcmtlcl9jYW5fc3RhcnQoVHJhbnNhY3Rpb25JZCB4aWQp Oworc3RhdGljIEFwcGx5Qmd3b3JrZXJJbmZvICphcHBseV9iZ3dvcmtlcl9zZXR1cCh2b2lkKTsK K3N0YXRpYyBib29sIGFwcGx5X2Jnd29ya2VyX3NldHVwX2RzbShBcHBseUJnd29ya2VySW5mbyAq d3N0YXRlKTsKKworLyoKKyAqIENoZWNrIGlmIHN0YXJ0aW5nIGEgbmV3IGFwcGx5IGJhY2tncm91 bmQgd29ya2VyIGlzIGFsbG93ZWQuCisgKi8KK3N0YXRpYyBib29sCithcHBseV9iZ3dvcmtlcl9j YW5fc3RhcnQoVHJhbnNhY3Rpb25JZCB4aWQpCit7CisJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxp ZCh4aWQpKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKgorCSAqIERvbid0IHN0YXJ0IGEgbmV3IGJh Y2tncm91bmQgd29ya2VyIGlmIG5vdCBpbiBzdHJlYW1pbmcgcGFyYWxsZWwgbW9kZS4KKwkgKi8K KwlpZiAoTXlTdWJzY3JpcHRpb24tPnN0cmVhbSAhPSBTVUJTVFJFQU1fUEFSQUxMRUwpCisJCXJl dHVybiBmYWxzZTsKKworCS8qCisJICogRG9uJ3Qgc3RhcnQgYSBuZXcgYmFja2dyb3VuZCB3b3Jr ZXIgaWYgdXNlciBoYXMgc2V0IHNraXBsc24gYXMgaXQncworCSAqIHBvc3NpYmxlIHRoYXQgdXNl ciB3YW50IHRvIHNraXAgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4gRm9yCisJICogc3RyZWFt aW5nIHRyYW5zYWN0aW9uLCB3ZSBuZWVkIHRvIHNwaWxsIHRoZSB0cmFuc2FjdGlvbiB0byBkaXNr IHNvIHRoYXQKKwkgKiB3ZSBjYW4gZ2V0IHRoZSBsYXN0IExTTiBvZiB0aGUgdHJhbnNhY3Rpb24g dG8ganVkZ2Ugd2hldGhlciB0byBza2lwCisJICogYmVmb3JlIHN0YXJ0aW5nIHRvIGFwcGx5IHRo ZSBjaGFuZ2UuCisJICovCisJaWYgKCFYTG9nUmVjUHRySXNJbnZhbGlkKE15U3Vic2NyaXB0aW9u LT5za2lwbHNuKSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyoKKwkgKiBGb3Igc3RyZWFtaW5nIHRy YW5zYWN0aW9ucyB0aGF0IGFyZSBiZWluZyBhcHBsaWVkIGluIGFwcGx5IGJhY2tncm91bmQKKwkg KiB3b3JrZXIsIHdlIGNhbm5vdCBkZWNpZGUgd2hldGhlciB0byBhcHBseSB0aGUgY2hhbmdlIGZv ciBhIHJlbGF0aW9uCisJICogdGhhdCBpcyBub3QgaW4gdGhlIFJFQURZIHN0YXRlIChzZWUgc2hv dWxkX2FwcGx5X2NoYW5nZXNfZm9yX3JlbCkgYXMgd2UKKwkgKiB3b24ndCBrbm93IHJlbW90ZV9m aW5hbF9sc24gYnkgdGhhdCB0aW1lLiBTbywgd2UgZG9uJ3Qgc3RhcnQgbmV3IGFwcGx5CisJICog YmFja2dyb3VuZCB3b3JrZXIgaW4gdGhpcyBjYXNlLgorCSAqLworCWlmICghQWxsVGFibGVzeW5j c1JlYWR5KCkpCisJCXJldHVybiBmYWxzZTsKKworCXJldHVybiB0cnVlOworfQorCisvKgorICog UmV0dXJuIHRoZSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciB0aGF0IHdpbGwgYmUgdXNlZCBmb3Ig dGhlIHNwZWNpZmllZCB4aWQuCisgKgorICogSWYgYW4gYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIg aXMgZm91bmQgaW4gdGhlIGZyZWUgbGlzdCB0aGVuIHJlLXVzZSBpdCwKKyAqIG90aGVyd2lzZSBz dGFydCBhIGZyZXNoIG9uZS4gQ2FjaGUgdGhlIHdvcmtlciBBcHBseUJnd29ya2Vyc0hhc2gga2V5 ZWQgYnkKKyAqIHRoZSBzcGVjaWZpZWQgeGlkLgorICovCitBcHBseUJnd29ya2VySW5mbyAqCith cHBseV9iZ3dvcmtlcl9zdGFydChUcmFuc2FjdGlvbklkIHhpZCkKK3sKKwlib29sCQlmb3VuZDsK KwlpbnQJCQlzZXJ2ZXJfdmVyc2lvbjsKKwlBcHBseUJnd29ya2VySW5mbyAqd3N0YXRlOworCUFw cGx5Qmd3b3JrZXJFbnRyeSAqZW50cnkgPSBOVUxMOworCisJaWYgKCFhcHBseV9iZ3dvcmtlcl9j YW5fc3RhcnQoeGlkKSkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKiBGaXJzdCB0aW1lIHRocm91Z2gs IGluaXRpYWxpemUgYXBwbHkgd29ya2VycyBoYXNodGFibGUuICovCisJaWYgKEFwcGx5Qmd3b3Jr ZXJzSGFzaCA9PSBOVUxMKQorCXsKKwkJSEFTSENUTAkJY3RsOworCisJCU1lbVNldCgmY3RsLCAw LCBzaXplb2YoY3RsKSk7CisJCWN0bC5rZXlzaXplID0gc2l6ZW9mKFRyYW5zYWN0aW9uSWQpOwor CQljdGwuZW50cnlzaXplID0gc2l6ZW9mKEFwcGx5Qmd3b3JrZXJFbnRyeSk7CisJCWN0bC5oY3h0 ID0gQXBwbHlDb250ZXh0OworCisJCUFwcGx5Qmd3b3JrZXJzSGFzaCA9IGhhc2hfY3JlYXRlKCJs b2dpY2FsIGFwcGx5IHdvcmtlcnMgaGFzaCIsIDE2LCAmY3RsLAorCQkJCQkJCQkJICAgSEFTSF9F TEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJfQorCisJLyogVHJ5IHRvIGdldCBh IGZyZWUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuICovCisJaWYgKGxpc3RfbGVuZ3RoKEFwcGx5 Qmd3b3JrZXJzRnJlZUxpc3QpID4gMCkKKwl7CisJCXdzdGF0ZSA9IChBcHBseUJnd29ya2VySW5m byAqKSBsbGFzdChBcHBseUJnd29ya2Vyc0ZyZWVMaXN0KTsKKwkJQXNzZXJ0KHdzdGF0ZS0+c2hh cmVkLT5zdGF0dXMgPT0gQVBQTFlfQkdXT1JLRVJfRklOSVNIRUQpOworCQlBcHBseUJnd29ya2Vy c0ZyZWVMaXN0ID0gbGlzdF9kZWxldGVfbGFzdChBcHBseUJnd29ya2Vyc0ZyZWVMaXN0KTsKKwl9 CisJZWxzZQorCXsKKwkJd3N0YXRlID0gYXBwbHlfYmd3b3JrZXJfc2V0dXAoKTsKKworCQlpZiAo d3N0YXRlID09IE5VTEwpCisJCQlyZXR1cm4gTlVMTDsKKwl9CisKKwkvKiBDcmVhdGUgZW50cnkg Zm9yIHJlcXVlc3RlZCB0cmFuc2FjdGlvbi4gKi8KKwllbnRyeSA9IGhhc2hfc2VhcmNoKEFwcGx5 Qmd3b3JrZXJzSGFzaCwgJnhpZCwgSEFTSF9FTlRFUiwgJmZvdW5kKTsKKwlpZiAoZm91bmQpCisJ CWVsb2coRVJST1IsICJoYXNoIHRhYmxlIGNvcnJ1cHRlZCIpOworCisJLyogRmlsbCB1cCB0aGUg aGFzaCBlbnRyeS4gKi8KKwl3c3RhdGUtPnNoYXJlZC0+c3RhdHVzID0gQVBQTFlfQkdXT1JLRVJf QlVTWTsKKworCXNlcnZlcl92ZXJzaW9uID0gd2FscmN2X3NlcnZlcl92ZXJzaW9uKExvZ1JlcFdv cmtlcldhbFJjdkNvbm4pOworCXdzdGF0ZS0+c2hhcmVkLT5wcm90b192ZXJzaW9uID0KKwkJc2Vy dmVyX3ZlcnNpb24gPj0gMTYwMDAwID8gTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxf VkVSU0lPTl9OVU0gOgorCQlzZXJ2ZXJfdmVyc2lvbiA+PSAxNTAwMDAgPyBMT0dJQ0FMUkVQX1BS T1RPX1RXT1BIQVNFX1ZFUlNJT05fTlVNIDoKKwkJc2VydmVyX3ZlcnNpb24gPj0gMTQwMDAwID8g TE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fVkVSU0lPTl9OVU0gOgorCQlMT0dJQ0FMUkVQX1BST1RP X1ZFUlNJT05fTlVNOworCisJd3N0YXRlLT5zaGFyZWQtPnN0cmVhbV94aWQgPSB4aWQ7CisJZW50 cnktPndzdGF0ZSA9IHdzdGF0ZTsKKwllbnRyeS0+eGlkID0geGlkOworCisJcmV0dXJuIHdzdGF0 ZTsKK30KKworLyoKKyAqIEZpbmQgdGhlIHByZXZpb3VzbHkgYXNzaWduZWQgd29ya2VyIGZvciB0 aGUgZ2l2ZW4gdHJhbnNhY3Rpb24sIGlmIGFueS4KKyAqLworQXBwbHlCZ3dvcmtlckluZm8gKgor YXBwbHlfYmd3b3JrZXJfZmluZChUcmFuc2FjdGlvbklkIHhpZCkKK3sKKwlib29sCQlmb3VuZDsK KwlBcHBseUJnd29ya2VyRW50cnkgKmVudHJ5ID0gTlVMTDsKKworCWlmICghVHJhbnNhY3Rpb25J ZElzVmFsaWQoeGlkKSkKKwkJcmV0dXJuIE5VTEw7CisKKwlpZiAoQXBwbHlCZ3dvcmtlcnNIYXNo ID09IE5VTEwpCisJCXJldHVybiBOVUxMOworCisJLyoKKwkgKiBGaW5kIGVudHJ5IGZvciByZXF1 ZXN0ZWQgdHJhbnNhY3Rpb24uCisJICovCisJZW50cnkgPSBoYXNoX3NlYXJjaChBcHBseUJnd29y a2Vyc0hhc2gsICZ4aWQsIEhBU0hfRklORCwgJmZvdW5kKTsKKwlpZiAoZm91bmQpCisJeworCQlj aGFyIHN0YXR1cyA9IGVudHJ5LT53c3RhdGUtPnNoYXJlZC0+c3RhdHVzOworCisJCS8qIElmIGFu eSB3b3JrZXJzIChvciB0aGUgcG9zdG1hc3RlcikgaGF2ZSBkaWVkLCB3ZSBoYXZlIGZhaWxlZC4g Ki8KKwkJaWYgKHN0YXR1cyA9PSBBUFBMWV9CR1dPUktFUl9FWElUKQorCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFU RSksCisJCQkJCSBlcnJtc2coImJhY2tncm91bmQgd29ya2VyICV1IGZhaWxlZCB0byBhcHBseSB0 cmFuc2FjdGlvbiAldSIsCisJCQkJCQkJZW50cnktPndzdGF0ZS0+c2hhcmVkLT53b3JrZXJfaWQs CisJCQkJCQkJZW50cnktPndzdGF0ZS0+c2hhcmVkLT5zdHJlYW1feGlkKSkpOworCisJCUFzc2Vy dChzdGF0dXMgPT0gQVBQTFlfQkdXT1JLRVJfQlVTWSk7CisKKwkJcmV0dXJuIGVudHJ5LT53c3Rh dGU7CisJfQorCisJcmV0dXJuIE5VTEw7Cit9CisKKy8qCisgKiBBZGQgdGhlIHdvcmtlciB0byB0 aGUgZnJlZSBsaXN0IGFuZCByZW1vdmUgdGhlIGVudHJ5IGZyb20gdGhlIGhhc2ggdGFibGUuCisg Ki8KK3ZvaWQKK2FwcGx5X2Jnd29ya2VyX2ZyZWUoQXBwbHlCZ3dvcmtlckluZm8gKndzdGF0ZSkK K3sKKwlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKwlUcmFuc2FjdGlvbklkIHhpZCA9IHdzdGF0ZS0+ c2hhcmVkLT5zdHJlYW1feGlkOworCisJQXNzZXJ0KHdzdGF0ZS0+c2hhcmVkLT5zdGF0dXMgPT0g QVBQTFlfQkdXT1JLRVJfRklOSVNIRUQpOworCisJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRj aFRvKEFwcGx5Q29udGV4dCk7CisKKwloYXNoX3NlYXJjaChBcHBseUJnd29ya2Vyc0hhc2gsICZ4 aWQsIEhBU0hfUkVNT1ZFLCBOVUxMKTsKKworCWVsb2coREVCVUcxLCAiYWRkaW5nIGZpbmlzaGVk IGFwcGx5IHdvcmtlciAjJXUgZm9yIHhpZCAldSB0byB0aGUgZnJlZSBsaXN0IiwKKwkJIHdzdGF0 ZS0+c2hhcmVkLT53b3JrZXJfaWQsIHdzdGF0ZS0+c2hhcmVkLT5zdHJlYW1feGlkKTsKKworCUFw cGx5Qmd3b3JrZXJzRnJlZUxpc3QgPSBsYXBwZW5kKEFwcGx5Qmd3b3JrZXJzRnJlZUxpc3QsIHdz dGF0ZSk7CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKK30KKworLyogQXBwbHkg QmFja2dyb3VuZCBXb3JrZXIgbWFpbiBsb29wLiAqLworc3RhdGljIHZvaWQKK0xvZ2ljYWxBcHBs eUJnd0xvb3Aoc2htX21xX2hhbmRsZSAqbXFoLCB2b2xhdGlsZSBBcHBseUJnd29ya2VyU2hhcmVk ICpzaGFyZWQpCit7CisJc2htX21xX3Jlc3VsdCBzaG1xX3JlczsKKwlQR1BST0MJICAgKnJlZ2lz dHJhbnQ7CisJRXJyb3JDb250ZXh0Q2FsbGJhY2sgZXJyY2FsbGJhY2s7CisKKwlyZWdpc3RyYW50 ID0gQmFja2VuZFBpZEdldFByb2MoTXlCZ3dvcmtlckVudHJ5LT5iZ3dfbm90aWZ5X3BpZCk7CisJ U2V0TGF0Y2goJnJlZ2lzdHJhbnQtPnByb2NMYXRjaCk7CisKKwkvKgorCSAqIEluaXQgdGhlIEFw cGx5TWVzc2FnZUNvbnRleHQgd2hpY2ggd2UgY2xlYW4gdXAgYWZ0ZXIgZWFjaCByZXBsaWNhdGlv bgorCSAqIHByb3RvY29sIG1lc3NhZ2UuCisJICovCisJQXBwbHlNZXNzYWdlQ29udGV4dCA9IEFs bG9jU2V0Q29udGV4dENyZWF0ZShBcHBseUNvbnRleHQsCisJCQkJCQkJCQkJCQkiQXBwbHlNZXNz YWdlQ29udGV4dCIsCisJCQkJCQkJCQkJCQlBTExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKKworCS8q CisJICogUHVzaCBhcHBseSBlcnJvciBjb250ZXh0IGNhbGxiYWNrLiBGaWVsZHMgd2lsbCBiZSBm aWxsZWQgd2hpbGUgYXBwbHlpbmcKKwkgKiBhIGNoYW5nZS4KKwkgKi8KKwllcnJjYWxsYmFjay5j YWxsYmFjayA9IGFwcGx5X2Vycm9yX2NhbGxiYWNrOworCWVycmNhbGxiYWNrLnByZXZpb3VzID0g ZXJyb3JfY29udGV4dF9zdGFjazsKKwllcnJvcl9jb250ZXh0X3N0YWNrID0gJmVycmNhbGxiYWNr OworCisJZm9yICg7OykKKwl7CisJCXZvaWQJICAgKmRhdGE7CisJCVNpemUJCWxlbjsKKwkJaW50 CQkJYzsKKwkJU3RyaW5nSW5mb0RhdGEgczsKKwkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CisKKwkJ Q0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCQkvKiBFbnN1cmUgd2UgYXJlIHJlYWRpbmcgdGhl IGRhdGEgaW50byBvdXIgbWVtb3J5IGNvbnRleHQuICovCisJCW9sZGN0eCA9IE1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhBcHBseU1lc3NhZ2VDb250ZXh0KTsKKworCQlzaG1xX3JlcyA9IHNobV9tcV9y ZWNlaXZlKG1xaCwgJmxlbiwgJmRhdGEsIGZhbHNlKTsKKworCQlpZiAoc2htcV9yZXMgIT0gU0hN X01RX1NVQ0NFU1MpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09C SkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygibG9zdCBjb25u ZWN0aW9uIHRvIHRoZSBtYWluIGFwcGx5IHdvcmtlciIpKSk7CisKKwkJaWYgKGxlbiA9PSAwKQor CQkJYnJlYWs7CisKKwkJcy5jdXJzb3IgPSAwOworCQlzLm1heGxlbiA9IC0xOworCQlzLmRhdGEg PSAoY2hhciAqKSBkYXRhOworCQlzLmxlbiA9IGxlbjsKKworCQkvKgorCQkgKiBXZSB1c2UgZmly c3QgYnl0ZSBvZiBtZXNzYWdlIGZvciBhZGRpdGlvbmFsIGNvbW11bmljYXRpb24gYmV0d2Vlbgor CQkgKiBtYWluIExvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIGFuZCBhcHBseSBiYWNrZ3JvdW5k IHdvcmtlcnMsIHNvIGlmCisJCSAqIGl0IGRpZmZlcnMgZnJvbSAndycsIHRoZW4gcHJvY2VzcyBp dCBmaXJzdC4KKwkJICovCisJCWMgPSBwcV9nZXRtc2dieXRlKCZzKTsKKwkJc3dpdGNoIChjKQor CQl7CisJCQkvKiBFbmQgbWVzc2FnZSBvZiBzdHJlYW1pbmcgY2h1bmsgKi8KKwkJCWNhc2UgTE9H SUNBTF9SRVBfTVNHX1NUUkVBTV9TVE9QOgorCQkJCWVsb2coREVCVUcxLCAiW0FwcGx5IEJHVyAj JXVdIGVuZGVkIHByb2Nlc3Npbmcgc3RyZWFtaW5nIGNodW5rLCAiCisJCQkJCSAid2FpdGluZyBv biBzaG1fbXFfcmVjZWl2ZSIsIHNoYXJlZC0+d29ya2VyX2lkKTsKKworCQkJCWluX3N0cmVhbWVk X3RyYW5zYWN0aW9uID0gZmFsc2U7CisJCQkJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9J RExFSU5UUkFOU0FDVElPTiwgTlVMTCk7CisJCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0 eCk7CisJCQkJY29udGludWU7CisJCQljYXNlICd3JzoKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6 CisJCQkJZWxvZyhFUlJPUiwgIltBcHBseSBCR1cgIyV1XSB1bmV4cGVjdGVkIG1lc3NhZ2UgXCIl Y1wiIiwKKwkJCQkJIHNoYXJlZC0+d29ya2VyX2lkLCBjKTsKKwkJCQlicmVhazsKKwkJfQorCisJ CS8qCisJCSAqIElnbm9yZSBzdGF0aXN0aWNzIGZpZWxkcyB0aGF0IGhhdmUgYmVlbiB1cGRhdGVk IGJ5IHRoZSBtYWluIGFwcGx5CisJCSAqIHdvcmtlci4KKwkJICovCisJCXMuY3Vyc29yICs9IFNJ WkVfU1RBVFNfTUVTU0FHRTsKKworCQlhcHBseV9kaXNwYXRjaCgmcyk7CisKKwkJTWVtb3J5Q29u dGV4dFN3aXRjaFRvKG9sZGN0eCk7CisJCU1lbW9yeUNvbnRleHRSZXNldChBcHBseU1lc3NhZ2VD b250ZXh0KTsKKworCQlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKKwkJeworCQkJQ29uZmlnUmVs b2FkUGVuZGluZyA9IGZhbHNlOworCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CisJ CX0KKwl9CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8oVG9wTWVtb3J5Q29udGV4dCk7CisKKwkv KiBQb3AgdGhlIGVycm9yIGNvbnRleHQgc3RhY2suICovCisJZXJyb3JfY29udGV4dF9zdGFjayA9 IGVycmNhbGxiYWNrLnByZXZpb3VzOworCisJZWxvZyhERUJVRzEsICJbQXBwbHkgQkdXICMldV0g ZXhpdGluZyIsIHNoYXJlZC0+d29ya2VyX2lkKTsKKworCS8qIFNpZ25hbCBtYWluIHByb2Nlc3Mg dGhhdCB3ZSBhcmUgZG9uZS4gKi8KKwlTZXRMYXRjaCgmcmVnaXN0cmFudC0+cHJvY0xhdGNoKTsK K30KKworLyoKKyAqIFNldCB0aGUgZXhpdCBzdGF0dXMgc28gdGhhdCB0aGUgbWFpbiBhcHBseSB3 b3JrZXIgY2FuIHJlYWxpemUgd2UgaGF2ZQorICogc2h1dGRvd24uCisgKi8KK3N0YXRpYyB2b2lk CithcHBseV9iZ3dvcmtlcl9zaHV0ZG93bihpbnQgY29kZSwgRGF0dW0gYXJnKQoreworCWFwcGx5 X2Jnd29ya2VyX3NldF9zdGF0dXMoQVBQTFlfQkdXT1JLRVJfRVhJVCk7CisKKwlkc21fZGV0YWNo KChkc21fc2VnbWVudCAqKSBEYXR1bUdldFBvaW50ZXIoYXJnKSk7Cit9CisKKy8qCisgKiBBcHBs eSBCYWNrZ3JvdW5kIFdvcmtlciBlbnRyeSBwb2ludC4KKyAqLwordm9pZAorQXBwbHlCZ3dvcmtl ck1haW4oRGF0dW0gbWFpbl9hcmcpCit7CisJdm9sYXRpbGUgQXBwbHlCZ3dvcmtlclNoYXJlZCAq c2hhcmVkOworCisJZHNtX2hhbmRsZQloYW5kbGU7CisJZHNtX3NlZ21lbnQgKnNlZzsKKwlzaG1f dG9jICAgICp0b2M7CisJc2htX21xCSAgICptcTsKKwlzaG1fbXFfaGFuZGxlICptcWg7CisJUmVw T3JpZ2luSWQgb3JpZ2luaWQ7CisJaW50CQkJd29ya2VyX3Nsb3QgPSBEYXR1bUdldEludDMyKG1h aW5fYXJnKTsKKwljaGFyCQlvcmlnaW5uYW1lW05BTUVEQVRBTEVOXTsKKworCS8qIFNldHVwIHNp Z25hbCBoYW5kbGluZy4gKi8KKwlwcXNpZ25hbChTSUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25m aWdSZWxvYWQpOworCXBxc2lnbmFsKFNJR1RFUk0sIGRpZSk7CisJQmFja2dyb3VuZFdvcmtlclVu YmxvY2tTaWduYWxzKCk7CisKKwkvKgorCSAqIEF0dGFjaCB0byB0aGUgZHluYW1pYyBzaGFyZWQg bWVtb3J5IHNlZ21lbnQgZm9yIHRoZSBwYXJhbGxlbCBxdWVyeSwgYW5kCisJICogZmluZCBpdHMg dGFibGUgb2YgY29udGVudHMuCisJICoKKwkgKiBOb3RlOiBhdCB0aGlzIHBvaW50LCB3ZSBoYXZl IG5vdCBjcmVhdGVkIGFueSBSZXNvdXJjZU93bmVyIGluIHRoaXMKKwkgKiBwcm9jZXNzLiAgVGhp cyB3aWxsIHJlc3VsdCBpbiBvdXIgRFNNIG1hcHBpbmcgc3Vydml2aW5nIHVudGlsIHByb2Nlc3MK KwkgKiBleGl0LCB3aGljaCBpcyBmaW5lLiAgSWYgdGhlcmUgd2VyZSBhIFJlc291cmNlT3duZXIs IGl0IHdvdWxkIGFjcXVpcmUKKwkgKiBvd25lcnNoaXAgb2YgdGhlIG1hcHBpbmcsIGJ1dCB3ZSBo YXZlIG5vIG5lZWQgZm9yIHRoYXQuCisJICovCisJbWVtY3B5KCZoYW5kbGUsIE15Qmd3b3JrZXJF bnRyeS0+Ymd3X2V4dHJhLCBzaXplb2YoZHNtX2hhbmRsZSkpOworCXNlZyA9IGRzbV9hdHRhY2go aGFuZGxlKTsKKwlpZiAoc2VnID09IE5VTEwpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNv ZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1z ZygidW5hYmxlIHRvIG1hcCBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudCIpKSk7CisJdG9j ID0gc2htX3RvY19hdHRhY2goUEdfTE9HSUNBTF9BUFBMWV9TSE1fTUFHSUMsIGRzbV9zZWdtZW50 X2FkZHJlc3Moc2VnKSk7CisJaWYgKHRvYyA9PSBOVUxMKQorCQllcmVwb3J0KEVSUk9SLAorCQkJ CShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJ CSBlcnJtc2coImJhZCBtYWdpYyBudW1iZXIgaW4gZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNlZ21l bnQiKSkpOworCisJYmVmb3JlX3NobWVtX2V4aXQoYXBwbHlfYmd3b3JrZXJfc2h1dGRvd24sIFBv aW50ZXJHZXREYXR1bShzZWcpKTsKKworCS8qIExvb2sgdXAgdGhlIHNoYXJlZCBpbmZvcm1hdGlv bi4gKi8KKwlzaGFyZWQgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIEFQUExZX0JHV09SS0VSX0tFWV9T SEFSRUQsIGZhbHNlKTsKKwlNeVBhcmFsbGVsU2hhcmVkID0gc2hhcmVkOworCisJLyoKKwkgKiBB dHRhY2ggdG8gdGhlIG1lc3NhZ2UgcXVldWUuCisJICovCisJbXEgPSBzaG1fdG9jX2xvb2t1cCh0 b2MsIEFQUExZX0JHV09SS0VSX0tFWV9NUSwgZmFsc2UpOworCXNobV9tcV9zZXRfcmVjZWl2ZXIo bXEsIE15UHJvYyk7CisJbXFoID0gc2htX21xX2F0dGFjaChtcSwgc2VnLCBOVUxMKTsKKworCS8q CisJICogTm93LCB3ZSBoYXZlIGluaXRpYWxpemVkIERTTS4gQXR0YWNoIHRvIHNsb3QuCisJICov CisJbG9naWNhbHJlcF93b3JrZXJfYXR0YWNoKHdvcmtlcl9zbG90KTsKKworCU15TG9naWNhbFJl cFdvcmtlci0+bGFzdF9zZW5kX3RpbWUgPSBNeUxvZ2ljYWxSZXBXb3JrZXItPmxhc3RfcmVjdl90 aW1lID0KKwkJTXlMb2dpY2FsUmVwV29ya2VyLT5yZXBseV90aW1lID0gMDsKKworCUluaXRpYWxp emVBcHBseVdvcmtlcigpOworCisJLyogU2V0dXAgcmVwbGljYXRpb24gb3JpZ2luIHRyYWNraW5n LiAqLworCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJc25wcmludGYob3JpZ2lubmFtZSwg c2l6ZW9mKG9yaWdpbm5hbWUpLCAicGdfJXUiLCBNeVN1YnNjcmlwdGlvbi0+b2lkKTsKKwlvcmln aW5pZCA9IHJlcGxvcmlnaW5fYnlfbmFtZShvcmlnaW5uYW1lLCB0cnVlKTsKKwlpZiAoIU9pZElz VmFsaWQob3JpZ2luaWQpKQorCQlvcmlnaW5pZCA9IHJlcGxvcmlnaW5fY3JlYXRlKG9yaWdpbm5h bWUpOworCisJLyoKKwkgKiBUaGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgZG9lc24ndCBuZWVk IHRvIG1vbm9wb2xpemUgdGhpcyByZXBsaWNhdGlvbgorCSAqIG9yaWdpbiB3aGljaCB3YXMgYWxy ZWFkeSBhY3F1aXJlZCBieSBpdHMgbGVhZGVyIHByb2Nlc3MuCisJICovCisJcmVwbG9yaWdpbl9z ZXNzaW9uX3NldHVwKG9yaWdpbmlkLCBNeUxvZ2ljYWxSZXBXb3JrZXItPm1haW5fd29ya2VyX3Bp ZCk7CisJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiA9IG9yaWdpbmlkOworCUNvbW1pdFRyYW5z YWN0aW9uQ29tbWFuZCgpOworCisJLyoKKwkgKiBTZXR1cCBjYWxsYmFjayBmb3Igc3lzY2FjaGUg c28gdGhhdCB3ZSBrbm93IHdoZW4gc29tZXRoaW5nIGNoYW5nZXMgaW4KKwkgKiB0aGUgc3Vic2Ny aXB0aW9uIHJlbGF0aW9uIHN0YXRlLgorCSAqLworCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxi YWNrKFNVQlNDUklQVElPTlJFTE1BUCwKKwkJCQkJCQkJICBpbnZhbGlkYXRlX3N5bmNpbmdfdGFi bGVfc3RhdGVzLAorCQkJCQkJCQkgIChEYXR1bSkgMCk7CisKKwkvKgorCSAqIEFsbG9jYXRlIHRo ZSBvcmlnaW4gbmFtZSBpbiBsb25nLWxpdmVkIGNvbnRleHQgZm9yIGVycm9yIGNvbnRleHQKKwkg KiBtZXNzYWdlLgorCSAqLworCWFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZy5vcmlnaW5fbmFtZSA9 IE1lbW9yeUNvbnRleHRTdHJkdXAoQXBwbHlDb250ZXh0LAorCQkJCQkJCQkJCQkJCQkJICAgb3Jp Z2lubmFtZSk7CisKKwllbG9nKERFQlVHMSwgIltBcHBseSBCR1cgIyV1XSBzdGFydGVkIiwgc2hh cmVkLT53b3JrZXJfaWQpOworCisJTG9naWNhbEFwcGx5Qmd3TG9vcChtcWgsIHNoYXJlZCk7CisK KwkvKgorCSAqIFdlJ3JlIGRvbmUuICBFeHBsaWNpdGx5IGRldGFjaCB0aGUgc2hhcmVkIG1lbW9y eSBzZWdtZW50IHNvIHRoYXQgd2UKKwkgKiBkb24ndCBnZXQgYSByZXNvdXJjZSBsZWFrIHdhcm5p bmcgYXQgY29tbWl0IHRpbWUuICBUaGlzIHdpbGwgZmlyZSBhbnkKKwkgKiBvbl9kc21fZGV0YWNo IGNhbGxiYWNrcyB3ZSd2ZSByZWdpc3RlcmVkLCBhcyB3ZWxsLiAgT25jZSB0aGF0J3MgZG9uZSwK KwkgKiB3ZSBjYW4gZ28gYWhlYWQgYW5kIGV4aXQuCisJICovCisJZHNtX2RldGFjaChzZWcpOwor CXByb2NfZXhpdCgwKTsKK30KKworLyoKKyAqIFNldCB1cCBhIGR5bmFtaWMgc2hhcmVkIG1lbW9y eSBzZWdtZW50LgorICoKKyAqIFdlIHNldCB1cCBhIGNvbnRyb2wgcmVnaW9uIHRoYXQgY29udGFp bnMgYSBBcHBseUJnd29ya2VyU2hhcmVkLAorICogcGx1cyBvbmUgcmVnaW9uIHBlciBtZXNzYWdl IHF1ZXVlLiBUaGVyZSBhcmUgYXMgbWFueSBtZXNzYWdlIHF1ZXVlcyBhcworICogdGhlIG51bWJl ciBvZiB3b3JrZXJzLgorICovCitzdGF0aWMgYm9vbAorYXBwbHlfYmd3b3JrZXJfc2V0dXBfZHNt KEFwcGx5Qmd3b3JrZXJJbmZvICp3c3RhdGUpCit7CisJc2htX3RvY19lc3RpbWF0b3IgZTsKKwlT aXplCQlzZWdzaXplOworCWRzbV9zZWdtZW50ICpzZWc7CisJc2htX3RvYyAgICAqdG9jOworCUFw cGx5Qmd3b3JrZXJTaGFyZWQgKnNoYXJlZDsKKwlzaG1fbXEJICAgKm1xOworCWludDY0CQlxdWV1 ZV9zaXplID0gRFNNX1FVRVVFX1NJWkU7CisJaW50CQkJc2VydmVyX3ZlcnNpb247CisKKwkvKgor CSAqIEVzdGltYXRlIGhvdyBtdWNoIHNoYXJlZCBtZW1vcnkgd2UgbmVlZC4KKwkgKgorCSAqIEJl Y2F1c2UgdGhlIFRPQyBtYWNoaW5lcnkgbWF5IGNob29zZSB0byBpbnNlcnQgcGFkZGluZyBvZiBv ZGRseS1zaXplZAorCSAqIHJlcXVlc3RzLCB3ZSBtdXN0IGVzdGltYXRlIGVhY2ggY2h1bmsgc2Vw YXJhdGVseS4KKwkgKgorCSAqIFdlIG5lZWQgb25lIGtleSB0byByZWdpc3RlciB0aGUgbG9jYXRp b24gb2YgdGhlIGhlYWRlciwgYW5kIHdlIG5lZWQKKwkgKiBhbm90aGVyIGtleSB0byB0cmFjayB0 aGUgbG9jYXRpb24gb2YgdGhlIG1lc3NhZ2UgcXVldWUuCisJICovCisJc2htX3RvY19pbml0aWFs aXplX2VzdGltYXRvcigmZSk7CisJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmZSwgc2l6ZW9mKEFw cGx5Qmd3b3JrZXJTaGFyZWQpKTsKKwlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZlLCAoU2l6ZSkg cXVldWVfc2l6ZSk7CisKKwlzaG1fdG9jX2VzdGltYXRlX2tleXMoJmUsIDIpOworCXNlZ3NpemUg PSBzaG1fdG9jX2VzdGltYXRlKCZlKTsKKworCS8qIENyZWF0ZSB0aGUgc2hhcmVkIG1lbW9yeSBz ZWdtZW50IGFuZCBlc3RhYmxpc2ggYSB0YWJsZSBvZiBjb250ZW50cy4gKi8KKwlzZWcgPSBkc21f Y3JlYXRlKHNobV90b2NfZXN0aW1hdGUoJmUpLCAwKTsKKworCWlmIChzZWcgPT0gTlVMTCkKKwkJ cmV0dXJuIGZhbHNlOworCisJdG9jID0gc2htX3RvY19jcmVhdGUoUEdfTE9HSUNBTF9BUFBMWV9T SE1fTUFHSUMsIGRzbV9zZWdtZW50X2FkZHJlc3Moc2VnKSwKKwkJCQkJCSBzZWdzaXplKTsKKwor CS8qIFNldCB1cCB0aGUgaGVhZGVyIHJlZ2lvbi4gKi8KKwlzaGFyZWQgPSBzaG1fdG9jX2FsbG9j YXRlKHRvYywgc2l6ZW9mKEFwcGx5Qmd3b3JrZXJTaGFyZWQpKTsKKwlTcGluTG9ja0luaXQoJnNo YXJlZC0+bXV0ZXgpOworCXNoYXJlZC0+c3RhdHVzID0gQVBQTFlfQkdXT1JLRVJfQlVTWTsKKwor CXNlcnZlcl92ZXJzaW9uID0gd2FscmN2X3NlcnZlcl92ZXJzaW9uKExvZ1JlcFdvcmtlcldhbFJj dkNvbm4pOworCXNoYXJlZC0+cHJvdG9fdmVyc2lvbiA9CisJCXNlcnZlcl92ZXJzaW9uID49IDE2 MDAwMCA/IExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVNIDoKKwkJ c2VydmVyX3ZlcnNpb24gPj0gMTUwMDAwID8gTE9HSUNBTFJFUF9QUk9UT19UV09QSEFTRV9WRVJT SU9OX05VTSA6CisJCXNlcnZlcl92ZXJzaW9uID49IDE0MDAwMCA/IExPR0lDQUxSRVBfUFJPVE9f U1RSRUFNX1ZFUlNJT05fTlVNIDoKKwkJTE9HSUNBTFJFUF9QUk9UT19WRVJTSU9OX05VTTsKKwor CXNoYXJlZC0+c3RyZWFtX3hpZCA9IHN0cmVhbV94aWQ7CisJc2hhcmVkLT53b3JrZXJfaWQgPSBs aXN0X2xlbmd0aChBcHBseUJnd29ya2Vyc0xpc3QpICsgMTsKKworCXNobV90b2NfaW5zZXJ0KHRv YywgQVBQTFlfQkdXT1JLRVJfS0VZX1NIQVJFRCwgc2hhcmVkKTsKKworCS8qIFNldCB1cCBtZXNz YWdlIHF1ZXVlIGZvciB0aGUgd29ya2VyLiAqLworCW1xID0gc2htX21xX2NyZWF0ZShzaG1fdG9j X2FsbG9jYXRlKHRvYywgKFNpemUpIHF1ZXVlX3NpemUpLAorCQkJCQkgICAoU2l6ZSkgcXVldWVf c2l6ZSk7CisJc2htX3RvY19pbnNlcnQodG9jLCBBUFBMWV9CR1dPUktFUl9LRVlfTVEsIG1xKTsK KwlzaG1fbXFfc2V0X3NlbmRlcihtcSwgTXlQcm9jKTsKKworCS8qIEF0dGFjaCB0aGUgcXVldWUu ICovCisJd3N0YXRlLT5tcV9oYW5kbGUgPSBzaG1fbXFfYXR0YWNoKG1xLCBzZWcsIE5VTEwpOwor CisJLyogUmV0dXJuIHJlc3VsdHMgdG8gY2FsbGVyLiAqLworCXdzdGF0ZS0+ZHNtX3NlZyA9IHNl ZzsKKwl3c3RhdGUtPnNoYXJlZCA9IHNoYXJlZDsKKworCXJldHVybiB0cnVlOworfQorCisvKgor ICogU3RhcnQgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgcHJvY2VzcyBhbmQgYWxsb2NhdGUgc2hh cmVkIG1lbW9yeSBmb3IgaXQuCisgKi8KK3N0YXRpYyBBcHBseUJnd29ya2VySW5mbyAqCithcHBs eV9iZ3dvcmtlcl9zZXR1cCh2b2lkKQoreworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKwli b29sCQlsYXVuY2hlZDsKKwlBcHBseUJnd29ya2VySW5mbyAqd3N0YXRlOworCWludAkJCW5hcHBs eXdvcmtlcnM7CisKKwllbG9nKERFQlVHMSwgInNldHRpbmcgdXAgYXBwbHkgYmFja2dyb3VuZCB3 b3JrZXIgIyV1IiwKKwkJIGxpc3RfbGVuZ3RoKEFwcGx5Qmd3b3JrZXJzTGlzdCkgKyAxKTsKKwor CS8qIENoZWNrIGlmIHRoZXJlIGFyZSBmcmVlIHdvcmtlciBzbG90KHMpLiAqLworCUxXTG9ja0Fj cXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CisJbmFwcGx5d29ya2VycyA9 IGxvZ2ljYWxyZXBfYXBwbHlfYmd3b3JrZXJfY291bnQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJp ZCk7CisJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CisKKwlpZiAobmFwcGx5 d29ya2VycyA+PSBtYXhfYXBwbHlfYmd3b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24pCisJCXJldHVy biBOVUxMOworCisJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRl eHQpOworCisJd3N0YXRlID0gKEFwcGx5Qmd3b3JrZXJJbmZvICopIHBhbGxvYzAoc2l6ZW9mKEFw cGx5Qmd3b3JrZXJJbmZvKSk7CisKKwkvKiBTZXR1cCBzaGFyZWQgbWVtb3J5LiAqLworCWlmICgh YXBwbHlfYmd3b3JrZXJfc2V0dXBfZHNtKHdzdGF0ZSkpCisJeworCQlNZW1vcnlDb250ZXh0U3dp dGNoVG8ob2xkY29udGV4dCk7CisJCXBmcmVlKHdzdGF0ZSk7CisKKwkJcmV0dXJuIE5VTEw7CisJ fQorCisJbGF1bmNoZWQgPSBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2goTXlMb2dpY2FsUmVwV29y a2VyLT5kYmlkLAorCQkJCQkJCQkJCU15U3Vic2NyaXB0aW9uLT5vaWQsCisJCQkJCQkJCQkJTXlT dWJzY3JpcHRpb24tPm5hbWUsCisJCQkJCQkJCQkJTXlMb2dpY2FsUmVwV29ya2VyLT51c2VyaWQs CisJCQkJCQkJCQkJSW52YWxpZE9pZCwKKwkJCQkJCQkJCQlkc21fc2VnbWVudF9oYW5kbGUod3N0 YXRlLT5kc21fc2VnKSk7CisKKwlpZiAobGF1bmNoZWQpCisJCUFwcGx5Qmd3b3JrZXJzTGlzdCA9 IGxhcHBlbmQoQXBwbHlCZ3dvcmtlcnNMaXN0LCB3c3RhdGUpOworCWVsc2UKKwl7CisJCWRzbV9k ZXRhY2god3N0YXRlLT5kc21fc2VnKTsKKwkJd3N0YXRlLT5kc21fc2VnID0gTlVMTDsKKworCQlw ZnJlZSh3c3RhdGUpOworCQl3c3RhdGUgPSBOVUxMOworCX0KKworCU1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhvbGRjb250ZXh0KTsKKworCXJldHVybiB3c3RhdGU7Cit9CisKKy8qCisgKiBTZW5kIHRo ZSBkYXRhIHRvIHRoZSBzcGVjaWZpZWQgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgdmlhIHNoYXJl ZC1tZW1vcnkgcXVldWUuCisgKi8KK3ZvaWQKK2FwcGx5X2Jnd29ya2VyX3NlbmRfZGF0YShBcHBs eUJnd29ya2VySW5mbyAqd3N0YXRlLCBTaXplIG5ieXRlcywgY29uc3Qgdm9pZCAqZGF0YSkKK3sK KwlzaG1fbXFfcmVzdWx0IHJlc3VsdDsKKworCXJlc3VsdCA9IHNobV9tcV9zZW5kKHdzdGF0ZS0+ bXFfaGFuZGxlLCBuYnl0ZXMsIGRhdGEsIGZhbHNlLCB0cnVlKTsKKworCWlmIChyZXN1bHQgIT0g U0hNX01RX1NVQ0NFU1MpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9P QkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygiY291bGQgbm90 IHNlbmQgZGF0YSB0byBzaGFyZWQtbWVtb3J5IHF1ZXVlIikpKTsKK30KKworLyoKKyAqIFdhaXQg dW50aWwgdGhlIHN0YXR1cyBvZiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciByZWFjaGVzIHRoZQor ICogJ3dhaXRfZm9yX3N0YXR1cycuCisgKi8KK3ZvaWQKK2FwcGx5X2Jnd29ya2VyX3dhaXRfZm9y KEFwcGx5Qmd3b3JrZXJJbmZvICp3c3RhdGUsCisJCQkJCQlBcHBseUJnd29ya2VyU3RhdHVzIHdh aXRfZm9yX3N0YXR1cykKK3sKKwlmb3IgKDs7KQorCXsKKwkJY2hhcgkJc3RhdHVzOworCisJCVNw aW5Mb2NrQWNxdWlyZSgmd3N0YXRlLT5zaGFyZWQtPm11dGV4KTsKKwkJc3RhdHVzID0gd3N0YXRl LT5zaGFyZWQtPnN0YXR1czsKKwkJU3BpbkxvY2tSZWxlYXNlKCZ3c3RhdGUtPnNoYXJlZC0+bXV0 ZXgpOworCisJCS8qIERvbmUgaWYgYWxyZWFkeSBpbiBjb3JyZWN0IHN0YXR1cy4gKi8KKwkJaWYg KHN0YXR1cyA9PSB3YWl0X2Zvcl9zdGF0dXMpCisJCQlicmVhazsKKworCQkvKiBJZiBhbnkgd29y a2VycyBoYXZlIGRpZWQsIHdlIGhhdmUgZmFpbGVkLiAqLworCQlpZiAoc3RhdHVzID09IEFQUExZ X0JHV09SS0VSX0VYSVQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RF X09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygiYXBwbHkg YmFja2dyb3VuZCB3b3JrZXIgJXUgZmFpbGVkIHRvIGFwcGx5IHRyYW5zYWN0aW9uICV1IiwKKwkJ CQkJCQl3c3RhdGUtPnNoYXJlZC0+d29ya2VyX2lkLCB3c3RhdGUtPnNoYXJlZC0+c3RyZWFtX3hp ZCkpKTsKKworCQkvKiBXYWl0IHRvIGJlIHNpZ25hbGxlZC4gKi8KKwkJKHZvaWQpIFdhaXRMYXRj aChNeUxhdGNoLCBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAorCQkJCQkJ IFdBSVRfRVZFTlRfTE9HSUNBTF9BUFBMWV9CR1dPUktFUl9TVEFURV9DSEFOR0UpOworCisJCS8q IFJlc2V0IHRoZSBsYXRjaCBzbyB3ZSBkb24ndCBzcGluLiAqLworCQlSZXNldExhdGNoKE15TGF0 Y2gpOworCisJCS8qIEFuIGludGVycnVwdCBtYXkgaGF2ZSBvY2N1cnJlZCB3aGlsZSB3ZSB3ZXJl IHdhaXRpbmcuICovCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJfQorfQorCisvKgorICog Q2hlY2sgdGhlIHN0YXR1cyBvZiB3b3JrZXJzIGFuZCByZXBvcnQgYW4gZXJyb3IgaWYgYW55IGFw cGx5IGJhY2tncm91bmQKKyAqIHdvcmtlciBoYXMgZXhpdGVkIHVuZXhwZWN0ZWRseS4KKyAqLwor dm9pZAorYXBwbHlfYmd3b3JrZXJfY2hlY2tfc3RhdHVzKHZvaWQpCit7CisJTGlzdENlbGwgICAq bGM7CisKKwlpZiAoYW1fYXBwbHlfYmd3b3JrZXIoKSB8fCBNeVN1YnNjcmlwdGlvbi0+c3RyZWFt ICE9IFNVQlNUUkVBTV9QQVJBTExFTCkKKwkJcmV0dXJuOworCisJZm9yZWFjaChsYywgQXBwbHlC Z3dvcmtlcnNMaXN0KQorCXsKKwkJQXBwbHlCZ3dvcmtlckluZm8gKndzdGF0ZSA9IChBcHBseUJn d29ya2VySW5mbyAqKSBsZmlyc3QobGMpOworCisJCS8qCisJCSAqIFdlIGRvbid0IGxvY2sgaGVy ZSBhcyBpbiB0aGUgd29yc3QgY2FzZSB3ZSB3aWxsIGp1c3QgZGV0ZWN0IHRoZQorCQkgKiBmYWls dXJlIG9mIHdvcmtlciBhIGJpdCBsYXRlci4KKwkJICovCisJCWlmICh3c3RhdGUtPnNoYXJlZC0+ c3RhdHVzID09IEFQUExZX0JHV09SS0VSX0VYSVQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQko ZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJ IGVycm1zZygiYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgJXUgZXhpdGVkIHVuZXhwZWN0ZWRseSIs CisJCQkJCQkJd3N0YXRlLT5zaGFyZWQtPndvcmtlcl9pZCkpKTsKKwl9Cit9CisKKy8qIFNldCB0 aGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgc3RhdHVzLiAqLwordm9pZAorYXBwbHlfYmd3b3Jr ZXJfc2V0X3N0YXR1cyhBcHBseUJnd29ya2VyU3RhdHVzIHN0YXR1cykKK3sKKwlpZiAoIWFtX2Fw cGx5X2Jnd29ya2VyKCkpCisJCXJldHVybjsKKworCWVsb2coREVCVUcxLCAiW0FwcGx5IEJHVyAj JXVdIHNldCBzdGF0dXMgdG8gJWQiLCBNeVBhcmFsbGVsU2hhcmVkLT53b3JrZXJfaWQsIHN0YXR1 cyk7CisKKwlTcGluTG9ja0FjcXVpcmUoJk15UGFyYWxsZWxTaGFyZWQtPm11dGV4KTsKKwlNeVBh cmFsbGVsU2hhcmVkLT5zdGF0dXMgPSBzdGF0dXM7CisJU3BpbkxvY2tSZWxlYXNlKCZNeVBhcmFs bGVsU2hhcmVkLT5tdXRleCk7Cit9CisKKy8qCisgKiBEZWZpbmUgYSBzYXZlcG9pbnQgZm9yIGEg c3VieGFjdCBpbiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBpZiBuZWVkZWQuCisgKgorICogVGhl IGFwcGx5IGJhY2tncm91bmQgd29ya2VyIGNhbiBmaWd1cmUgb3V0IGlmIGEgbmV3IHN1YnRyYW5z YWN0aW9uIHdhcworICogc3RhcnRlZCBieSBjaGVja2luZyBpZiB0aGUgbmV3IGNoYW5nZSBhcnJp dmVkIHdpdGggZGlmZmVyZW50IHhpZC4gSW4gdGhhdAorICogY2FzZSBkZWZpbmUgYSBuYW1lZCBz YXZlcG9pbnQsIHNvIHRoYXQgd2UgYXJlIGFibGUgdG8gY29tbWl0L3JvbGxiYWNrIGl0CisgKiBz ZXBhcmF0ZWx5IGxhdGVyLgorICovCit2b2lkCithcHBseV9iZ3dvcmtlcl9zdWJ4YWN0X2luZm9f YWRkKFRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQpCit7CisJaWYgKGN1cnJlbnRfeGlkICE9IHN0 cmVhbV94aWQgJiYKKwkJIWxpc3RfbWVtYmVyX2ludChzdWJ4YWN0bGlzdCwgKGludCkgY3VycmVu dF94aWQpKQorCXsKKwkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CisJCWNoYXIJCXNwbmFtZVtNQVhQ R1BBVEhdOworCisJCWFwcGx5X2Jnd29ya2VyX3NhdmVwb2ludF9uYW1lKE15U3Vic2NyaXB0aW9u LT5vaWQsIGN1cnJlbnRfeGlkLAorCQkJCQkJCQkJICBzcG5hbWUsIHNpemVvZihzcG5hbWUpKTsK KworCQllbG9nKERFQlVHMSwgIltBcHBseSBCR1cgIyV1XSBkZWZpbmluZyBzYXZlcG9pbnQgJXMi LAorCQkJIE15UGFyYWxsZWxTaGFyZWQtPndvcmtlcl9pZCwgc3BuYW1lKTsKKworCQlEZWZpbmVT YXZlcG9pbnQoc3BuYW1lKTsKKworCQkvKgorCQkgKiBDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQg aXMgbmVlZGVkIHRvIHN0YXJ0IGEgc3VidHJhbnNhY3Rpb24gYWZ0ZXIKKwkJICogaXNzdWluZyBh IFNBVkVQT0lOVCBpbnNpZGUgYSB0cmFuc2FjdGlvbiBibG9jayhzZWUKKwkJICogU3RhcnRTdWJU cmFuc2FjdGlvbigpKS4KKwkJICovCisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJ CW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCQlzdWJ4YWN0 bGlzdCA9IGxhcHBlbmRfaW50KHN1YnhhY3RsaXN0LCAoaW50KSBjdXJyZW50X3hpZCk7CisJCU1l bW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCX0KK30KKworLyoKKyAqIEZvcm0gdGhlIHNh dmVwb2ludCBuYW1lIGZvciBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uCisgKgorICogUmV0dXJuIHRo ZSBuYW1lIGluIHRoZSBzdXBwbGllZCBidWZmZXIuCisgKi8KK3ZvaWQKK2FwcGx5X2Jnd29ya2Vy X3NhdmVwb2ludF9uYW1lKE9pZCBzdWJvaWQsIFRyYW5zYWN0aW9uSWQgeGlkLAorCQkJCQkJCSAg Y2hhciAqc3BuYW1lLCBpbnQgc3pzcCkKK3sKKwlzbnByaW50ZihzcG5hbWUsIHN6c3AsICJwZ19z cF8ldV8ldSIsIHN1Ym9pZCwgeGlkKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L2RlY29kZS5jCmluZGV4IGM1YzZhMmIuLmQ0ZDUwOTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9kZWNvZGUuYwpAQCAtNjUxLDkgKzY1MSwxMCBAQCBEZWNvZGVDb21taXQoTG9n aWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYsCiAJewogCQlm b3IgKGkgPSAwOyBpIDwgcGFyc2VkLT5uc3VieGFjdHM7IGkrKykKIAkJewotCQkJUmVvcmRlckJ1 ZmZlckZvcmdldChjdHgtPnJlb3JkZXIsIHBhcnNlZC0+c3VieGFjdHNbaV0sIGJ1Zi0+b3JpZ3B0 cik7CisJCQlSZW9yZGVyQnVmZmVyRm9yZ2V0KGN0eC0+cmVvcmRlciwgcGFyc2VkLT5zdWJ4YWN0 c1tpXSwgYnVmLT5vcmlncHRyLAorCQkJCQkJCQljb21taXRfdGltZSk7CiAJCX0KLQkJUmVvcmRl ckJ1ZmZlckZvcmdldChjdHgtPnJlb3JkZXIsIHhpZCwgYnVmLT5vcmlncHRyKTsKKwkJUmVvcmRl ckJ1ZmZlckZvcmdldChjdHgtPnJlb3JkZXIsIHhpZCwgYnVmLT5vcmlncHRyLCBjb21taXRfdGlt ZSk7CiAKIAkJcmV0dXJuOwogCX0KQEAgLTgyMSwxMCArODIyLDExIEBAIERlY29kZUFib3J0KExv Z2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmLAogCQlmb3Ig KGkgPSAwOyBpIDwgcGFyc2VkLT5uc3VieGFjdHM7IGkrKykKIAkJewogCQkJUmVvcmRlckJ1ZmZl ckFib3J0KGN0eC0+cmVvcmRlciwgcGFyc2VkLT5zdWJ4YWN0c1tpXSwKLQkJCQkJCQkgICBidWYt PnJlY29yZC0+RW5kUmVjUHRyKTsKKwkJCQkJCQkgICBidWYtPnJlY29yZC0+RW5kUmVjUHRyLCBh Ym9ydF90aW1lKTsKIAkJfQogCi0JCVJlb3JkZXJCdWZmZXJBYm9ydChjdHgtPnJlb3JkZXIsIHhp ZCwgYnVmLT5yZWNvcmQtPkVuZFJlY1B0cik7CisJCVJlb3JkZXJCdWZmZXJBYm9ydChjdHgtPnJl b3JkZXIsIHhpZCwgYnVmLT5yZWNvcmQtPkVuZFJlY1B0ciwKKwkJCQkJCSAgIGFib3J0X3RpbWUp OwogCX0KIAogCS8qIHVwZGF0ZSB0aGUgZGVjb2Rpbmcgc3RhdHMgKi8KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwppbmRleCAzYmJkNTIyLi44MjVlNzU2IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKKysrIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCkBAIC01NCw2ICs1NCw3 IEBACiAKIGludAkJCW1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMgPSA0OwogaW50CQkJ bWF4X3N5bmNfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uID0gMjsKK2ludAkJCW1heF9hcHBseV9i Z3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiA9IDI7CiAKIExvZ2ljYWxSZXBXb3JrZXIgKk15TG9n aWNhbFJlcFdvcmtlciA9IE5VTEw7CiAKQEAgLTczLDYgKzc0LDcgQEAgc3RhdGljIHZvaWQgbG9n aWNhbHJlcF9sYXVuY2hlcl9vbmV4aXQoaW50IGNvZGUsIERhdHVtIGFyZyk7CiBzdGF0aWMgdm9p ZCBsb2dpY2FscmVwX3dvcmtlcl9vbmV4aXQoaW50IGNvZGUsIERhdHVtIGFyZyk7CiBzdGF0aWMg dm9pZCBsb2dpY2FscmVwX3dvcmtlcl9kZXRhY2godm9pZCk7CiBzdGF0aWMgdm9pZCBsb2dpY2Fs cmVwX3dvcmtlcl9jbGVhbnVwKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcik7CitzdGF0aWMgdm9p ZCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtl cik7CiAKIHN0YXRpYyBib29sIG9uX2NvbW1pdF9sYXVuY2hlcl93YWtldXAgPSBmYWxzZTsKIApA QCAtMTUxLDggKzE1MywxMCBAQCBnZXRfc3Vic2NyaXB0aW9uX2xpc3Qodm9pZCkKICAqCiAgKiBU aGlzIGlzIG9ubHkgbmVlZGVkIGZvciBjbGVhbmluZyB1cCB0aGUgc2hhcmVkIG1lbW9yeSBpbiBj YXNlIHRoZSB3b3JrZXIKICAqIGZhaWxzIHRvIGF0dGFjaC4KKyAqCisgKiBSZXR1cm4gd2hldGhl ciB0aGUgYXR0YWNoIHdhcyBzdWNjZXNzZnVsLgogICovCi1zdGF0aWMgdm9pZAorc3RhdGljIGJv b2wKIFdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaChMb2dpY2FsUmVwV29ya2VyICp3b3Jr ZXIsCiAJCQkJCQkJICAgdWludDE2IGdlbmVyYXRpb24sCiAJCQkJCQkJICAgQmFja2dyb3VuZFdv cmtlckhhbmRsZSAqaGFuZGxlKQpAQCAtMTY4LDExICsxNzIsMTEgQEAgV2FpdEZvclJlcGxpY2F0 aW9uV29ya2VyQXR0YWNoKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciwKIAogCQlMV0xvY2tBY3F1 aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOwogCi0JCS8qIFdvcmtlciBlaXRo ZXIgZGllZCBvciBoYXMgc3RhcnRlZDsgbm8gbmVlZCB0byBkbyBhbnl0aGluZy4gKi8KKwkJLyog V29ya2VyIGVpdGhlciBkaWVkIG9yIGhhcyBzdGFydGVkLiBSZXR1cm4gZmFsc2UgaWYgZGllZC4g Ki8KIAkJaWYgKCF3b3JrZXItPmluX3VzZSB8fCB3b3JrZXItPnByb2MpCiAJCXsKIAkJCUxXTG9j a1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwotCQkJcmV0dXJuOworCQkJcmV0dXJuIHdv cmtlci0+aW5fdXNlOwogCQl9CiAKIAkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9j ayk7CkBAIC0xODcsNyArMTkxLDcgQEAgV2FpdEZvclJlcGxpY2F0aW9uV29ya2VyQXR0YWNoKExv Z2ljYWxSZXBXb3JrZXIgKndvcmtlciwKIAkJCWlmIChnZW5lcmF0aW9uID09IHdvcmtlci0+Z2Vu ZXJhdGlvbikKIAkJCQlsb2dpY2FscmVwX3dvcmtlcl9jbGVhbnVwKHdvcmtlcik7CiAJCQlMV0xv Y2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKLQkJCXJldHVybjsKKwkJCXJldHVybiBm YWxzZTsKIAkJfQogCiAJCS8qCkBAIC0yMjMsNiArMjI3LDEzIEBAIGxvZ2ljYWxyZXBfd29ya2Vy X2ZpbmQoT2lkIHN1YmlkLCBPaWQgcmVsaWQsIGJvb2wgb25seV9ydW5uaW5nKQogCXsKIAkJTG9n aWNhbFJlcFdvcmtlciAqdyA9ICZMb2dpY2FsUmVwQ3R4LT53b3JrZXJzW2ldOwogCisJCS8qCisJ CSAqIFdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gdGhlIG1haW4gYXBwbHkgd29ya2VyIG9yIHRh YmxlIHN5bmMgd29ya2VyCisJCSAqIGhlcmUuCisJCSAqLworCQlpZiAody0+bWFpbl93b3JrZXJf cGlkICE9IDApCisJCQljb250aW51ZTsKKwogCQlpZiAody0+aW5fdXNlICYmIHctPnN1YmlkID09 IHN1YmlkICYmIHctPnJlbGlkID09IHJlbGlkICYmCiAJCQkoIW9ubHlfcnVubmluZyB8fCB3LT5w cm9jKSkKIAkJewpAQCAtMjU5LDExICsyNzAsMTEgQEAgbG9naWNhbHJlcF93b3JrZXJzX2ZpbmQo T2lkIHN1YmlkLCBib29sIG9ubHlfcnVubmluZykKIH0KIAogLyoKLSAqIFN0YXJ0IG5ldyBhcHBs eSBiYWNrZ3JvdW5kIHdvcmtlciwgaWYgcG9zc2libGUuCisgKiBTdGFydCBuZXcgYmFja2dyb3Vu ZCB3b3JrZXIsIGlmIHBvc3NpYmxlLgogICovCi12b2lkCitib29sCiBsb2dpY2FscmVwX3dvcmtl cl9sYXVuY2goT2lkIGRiaWQsIE9pZCBzdWJpZCwgY29uc3QgY2hhciAqc3VibmFtZSwgT2lkIHVz ZXJpZCwKLQkJCQkJCSBPaWQgcmVsaWQpCisJCQkJCQkgT2lkIHJlbGlkLCBkc21faGFuZGxlIHN1 Yndvcmtlcl9kc20pCiB7CiAJQmFja2dyb3VuZFdvcmtlciBiZ3c7CiAJQmFja2dyb3VuZFdvcmtl ckhhbmRsZSAqYmd3X2hhbmRsZTsKQEAgLTI3Myw2ICsyODQsMTAgQEAgbG9naWNhbHJlcF93b3Jr ZXJfbGF1bmNoKE9pZCBkYmlkLCBPaWQgc3ViaWQsIGNvbnN0IGNoYXIgKnN1Ym5hbWUsIE9pZCB1 c2VyaWQsCiAJTG9naWNhbFJlcFdvcmtlciAqd29ya2VyID0gTlVMTDsKIAlpbnQJCQluc3luY3dv cmtlcnM7CiAJVGltZXN0YW1wVHogbm93OworCWJvb2wJCWlzX3N1YndvcmtlciA9IChzdWJ3b3Jr ZXJfZHNtICE9IERTTV9IQU5ETEVfSU5WQUxJRCk7CisKKwkvKiBTYW5pdHkgY2hlY2s6IHdlIGRv bid0IHN1cHBvcnQgdGFibGUgc3luYyBpbiBzdWJ3b3JrZXIuICovCisJQXNzZXJ0KCEoaXNfc3Vi d29ya2VyICYmIE9pZElzVmFsaWQocmVsaWQpKSk7CiAKIAllcmVwb3J0KERFQlVHMSwKIAkJCShl cnJtc2dfaW50ZXJuYWwoInN0YXJ0aW5nIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIGZvciBz dWJzY3JpcHRpb24gXCIlc1wiIiwKQEAgLTM1MCw3ICszNjUsNyBAQCByZXRyeToKIAlpZiAoT2lk SXNWYWxpZChyZWxpZCkgJiYgbnN5bmN3b3JrZXJzID49IG1heF9zeW5jX3dvcmtlcnNfcGVyX3N1 YnNjcmlwdGlvbikKIAl7CiAJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwot CQlyZXR1cm47CisJCXJldHVybiBmYWxzZTsKIAl9CiAKIAkvKgpAQCAtMzY0LDcgKzM3OSw3IEBA IHJldHJ5OgogCQkJCShlcnJjb2RlKEVSUkNPREVfQ09ORklHVVJBVElPTl9MSU1JVF9FWENFRURF RCksCiAJCQkJIGVycm1zZygib3V0IG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIHNsb3Rz IiksCiAJCQkJIGVycmhpbnQoIllvdSBtaWdodCBuZWVkIHRvIGluY3JlYXNlIG1heF9sb2dpY2Fs X3JlcGxpY2F0aW9uX3dvcmtlcnMuIikpKTsKLQkJcmV0dXJuOworCQlyZXR1cm4gZmFsc2U7CiAJ fQogCiAJLyogUHJlcGFyZSB0aGUgd29ya2VyIHNsb3QuICovCkBAIC0zNzksNiArMzk0LDcgQEAg cmV0cnk6CiAJd29ya2VyLT5yZWxzdGF0ZSA9IFNVQlJFTF9TVEFURV9VTktOT1dOOwogCXdvcmtl ci0+cmVsc3RhdGVfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJd29ya2VyLT5zdHJlYW1fZmls ZXNldCA9IE5VTEw7CisJd29ya2VyLT5tYWluX3dvcmtlcl9waWQgPSBpc19zdWJ3b3JrZXIgPyBN eVByb2NQaWQgOiAwOwogCXdvcmtlci0+bGFzdF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAlU SU1FU1RBTVBfTk9CRUdJTih3b3JrZXItPmxhc3Rfc2VuZF90aW1lKTsKIAlUSU1FU1RBTVBfTk9C RUdJTih3b3JrZXItPmxhc3RfcmVjdl90aW1lKTsKQEAgLTM5NiwxMCArNDEyLDE4IEBAIHJldHJ5 OgogCQlCR1dPUktFUl9CQUNLRU5EX0RBVEFCQVNFX0NPTk5FQ1RJT047CiAJYmd3LmJnd19zdGFy dF90aW1lID0gQmdXb3JrZXJTdGFydF9SZWNvdmVyeUZpbmlzaGVkOwogCXNucHJpbnRmKGJndy5i Z3dfbGlicmFyeV9uYW1lLCBCR1dfTUFYTEVOLCAicG9zdGdyZXMiKTsKLQlzbnByaW50ZihiZ3cu Ymd3X2Z1bmN0aW9uX25hbWUsIEJHV19NQVhMRU4sICJBcHBseVdvcmtlck1haW4iKTsKKworCWlm IChpc19zdWJ3b3JrZXIpCisJCXNucHJpbnRmKGJndy5iZ3dfZnVuY3Rpb25fbmFtZSwgQkdXX01B WExFTiwgIkFwcGx5Qmd3b3JrZXJNYWluIik7CisJZWxzZQorCQlzbnByaW50ZihiZ3cuYmd3X2Z1 bmN0aW9uX25hbWUsIEJHV19NQVhMRU4sICJBcHBseVdvcmtlck1haW4iKTsKKwogCWlmIChPaWRJ c1ZhbGlkKHJlbGlkKSkKIAkJc25wcmludGYoYmd3LmJnd19uYW1lLCBCR1dfTUFYTEVOLAogCQkJ CSAibG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiAldSBzeW5jICV1 Iiwgc3ViaWQsIHJlbGlkKTsKKwllbHNlIGlmIChpc19zdWJ3b3JrZXIpCisJCXNucHJpbnRmKGJn dy5iZ3dfbmFtZSwgQkdXX01BWExFTiwKKwkJCQkgImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkg YmFja2dyb3VuZCB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiAldSIsIHN1YmlkKTsKIAllbHNlCiAJ CXNucHJpbnRmKGJndy5iZ3dfbmFtZSwgQkdXX01BWExFTiwKIAkJCQkgImxvZ2ljYWwgcmVwbGlj YXRpb24gd29ya2VyIGZvciBzdWJzY3JpcHRpb24gJXUiLCBzdWJpZCk7CkBAIC00MDksNiArNDMz LDkgQEAgcmV0cnk6CiAJYmd3LmJnd19ub3RpZnlfcGlkID0gTXlQcm9jUGlkOwogCWJndy5iZ3df bWFpbl9hcmcgPSBJbnQzMkdldERhdHVtKHNsb3QpOwogCisJaWYgKGlzX3N1YndvcmtlcikKKwkJ bWVtY3B5KGJndy5iZ3dfZXh0cmEsICZzdWJ3b3JrZXJfZHNtLCBzaXplb2YoZHNtX2hhbmRsZSkp OworCiAJaWYgKCFSZWdpc3RlckR5bmFtaWNCYWNrZ3JvdW5kV29ya2VyKCZiZ3csICZiZ3dfaGFu ZGxlKSkKIAl7CiAJCS8qIEZhaWxlZCB0byBzdGFydCB3b3JrZXIsIHNvIGNsZWFuIHVwIHRoZSB3 b3JrZXIgc2xvdC4gKi8KQEAgLTQyMSwxMSArNDQ4LDExIEBAIHJldHJ5OgogCQkJCShlcnJjb2Rl KEVSUkNPREVfQ09ORklHVVJBVElPTl9MSU1JVF9FWENFRURFRCksCiAJCQkJIGVycm1zZygib3V0 IG9mIGJhY2tncm91bmQgd29ya2VyIHNsb3RzIiksCiAJCQkJIGVycmhpbnQoIllvdSBtaWdodCBu ZWVkIHRvIGluY3JlYXNlIG1heF93b3JrZXJfcHJvY2Vzc2VzLiIpKSk7Ci0JCXJldHVybjsKKwkJ cmV0dXJuIGZhbHNlOwogCX0KIAogCS8qIE5vdyB3YWl0IHVudGlsIGl0IGF0dGFjaGVzLiAqLwot CVdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaCh3b3JrZXIsIGdlbmVyYXRpb24sIGJnd19o YW5kbGUpOworCXJldHVybiBXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2god29ya2VyLCBn ZW5lcmF0aW9uLCBiZ3dfaGFuZGxlKTsKIH0KIAogLyoKQEAgLTQzNiwxOSArNDYzLDMxIEBAIHZv aWQKIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpCiB7CiAJTG9n aWNhbFJlcFdvcmtlciAqd29ya2VyOwotCXVpbnQxNgkJZ2VuZXJhdGlvbjsKIAogCUxXTG9ja0Fj cXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CiAKIAl3b3JrZXIgPSBsb2dp Y2FscmVwX3dvcmtlcl9maW5kKHN1YmlkLCByZWxpZCwgZmFsc2UpOwogCi0JLyogTm8gd29ya2Vy LCBub3RoaW5nIHRvIGRvLiAqLwotCWlmICghd29ya2VyKQorCWlmICh3b3JrZXIpCiAJewotCQlM V0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKLQkJcmV0dXJuOworCQlBc3NlcnQo d29ya2VyLT5tYWluX3dvcmtlcl9waWQgPT0gMCk7CisJCWxvZ2ljYWxyZXBfd29ya2VyX3N0b3Bf aW50ZXJuYWwod29ya2VyKTsKIAl9CiAKKwlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJM b2NrKTsKK30KKworLyoKKyAqIFdvcmtob3JzZSBmb3IgbG9naWNhbHJlcF93b3JrZXJfc3RvcCgp IGFuZCBsb2dpY2FscmVwX3dvcmtlcl9kZXRhY2goKS4gU3RvcAorICogdGhlIHdvcmtlciBhbmQg d2FpdCBmb3IgaXQgdG8gZGllLgorICovCitzdGF0aWMgdm9pZAorbG9naWNhbHJlcF93b3JrZXJf c3RvcF9pbnRlcm5hbChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpCit7CisJdWludDE2CQlnZW5l cmF0aW9uOworCisJQXNzZXJ0KExXTG9ja0hlbGRCeU1lKExvZ2ljYWxSZXBXb3JrZXJMb2NrKSk7 CisKIAkvKgogCSAqIFJlbWVtYmVyIHdoaWNoIGdlbmVyYXRpb24gd2FzIG91ciB3b3JrZXIgc28g d2UgY2FuIGNoZWNrIGlmIHdoYXQgd2Ugc2VlCiAJICogaXMgc3RpbGwgdGhlIHNhbWUgb25lLgpA QCAtNDg1LDEwICs1MjQsNyBAQCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wKE9pZCBzdWJpZCwgT2lk IHJlbGlkKQogCQkgKiBkaWZmZXJlbnQsIG1lYW5pbmcgdGhhdCBhIGRpZmZlcmVudCB3b3JrZXIg aGFzIHRha2VuIHRoZSBzbG90LgogCQkgKi8KIAkJaWYgKCF3b3JrZXItPmluX3VzZSB8fCB3b3Jr ZXItPmdlbmVyYXRpb24gIT0gZ2VuZXJhdGlvbikKLQkJewotCQkJTFdMb2NrUmVsZWFzZShMb2dp Y2FsUmVwV29ya2VyTG9jayk7CiAJCQlyZXR1cm47Ci0JCX0KIAogCQkvKiBXb3JrZXIgaGFzIGFz c2lnbmVkIHByb2MsIHNvIGl0IGhhcyBzdGFydGVkLiAqLwogCQlpZiAod29ya2VyLT5wcm9jKQpA QCAtNTIyLDggKzU1OCw2IEBAIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQg cmVsaWQpCiAKIAkJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVE KTsKIAl9Ci0KLQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKIH0KIAogLyoK QEAgLTU5OSw2ICs2MzMsMjkgQEAgbG9naWNhbHJlcF93b3JrZXJfYXR0YWNoKGludCBzbG90KQog c3RhdGljIHZvaWQKIGxvZ2ljYWxyZXBfd29ya2VyX2RldGFjaCh2b2lkKQogeworCS8qCisJICog VGhpcyBpcyB0aGUgbWFpbiBhcHBseSB3b3JrZXIsIHN0b3AgYWxsIHRoZSBhcHBseSBiYWNrZ3Jv dW5kIHdvcmtlcnMKKwkgKiBwcmV2aW91c2x5IHN0YXJ0ZWQgZnJvbSBoZXJlLgorCSAqLworCWlm IChNeUxvZ2ljYWxSZXBXb3JrZXItPm1haW5fd29ya2VyX3BpZCA9PSAwKQorCXsKKwkJTGlzdAkg ICAqd29ya2VyczsKKwkJTGlzdENlbGwgICAqbGM7CisKKwkJTFdMb2NrQWNxdWlyZShMb2dpY2Fs UmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKKworCQl3b3JrZXJzID0gbG9naWNhbHJlcF93b3Jr ZXJzX2ZpbmQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgdHJ1ZSk7CisJCWZvcmVhY2gobGMs IHdvcmtlcnMpCisJCXsKKwkJCUxvZ2ljYWxSZXBXb3JrZXIgKncgPSAoTG9naWNhbFJlcFdvcmtl ciAqKSBsZmlyc3QobGMpOworCisJCQlpZiAody0+bWFpbl93b3JrZXJfcGlkICE9IDApCisJCQkJ bG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbCh3KTsKKwkJfQorCisJCUxXTG9ja1JlbGVh c2UoTG9naWNhbFJlcFdvcmtlckxvY2spOworCX0KKwogCS8qIEJsb2NrIGNvbmN1cnJlbnQgYWNj ZXNzLiAqLwogCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX0VYQ0xVU0lW RSk7CiAKQEAgLTYyMSw2ICs2NzgsNyBAQCBsb2dpY2FscmVwX3dvcmtlcl9jbGVhbnVwKExvZ2lj YWxSZXBXb3JrZXIgKndvcmtlcikKIAl3b3JrZXItPnVzZXJpZCA9IEludmFsaWRPaWQ7CiAJd29y a2VyLT5zdWJpZCA9IEludmFsaWRPaWQ7CiAJd29ya2VyLT5yZWxpZCA9IEludmFsaWRPaWQ7CisJ d29ya2VyLT5tYWluX3dvcmtlcl9waWQgPSAwOwogfQogCiAvKgpAQCAtNjgwLDYgKzczOCwzMyBA QCBsb2dpY2FscmVwX3N5bmNfd29ya2VyX2NvdW50KE9pZCBzdWJpZCkKIH0KIAogLyoKKyAqIENv dW50IHRoZSBudW1iZXIgb2YgcmVnaXN0ZXJlZCAoYnV0IG5vdCBuZWNlc3NhcmlseSBydW5uaW5n KSBhcHBseQorICogYmFja2dyb3VuZCB3b3JrZXJzIGZvciBhIHN1YnNjcmlwdGlvbi4KKyAqLwor aW50Citsb2dpY2FscmVwX2FwcGx5X2Jnd29ya2VyX2NvdW50KE9pZCBzdWJpZCkKK3sKKwlpbnQJ CQlpOworCWludAkJCXJlcyA9IDA7CisKKwlBc3NlcnQoTFdMb2NrSGVsZEJ5TWUoTG9naWNhbFJl cFdvcmtlckxvY2spKTsKKworCS8qCisJICogU2NhbiBhbGwgYXR0YWNoZWQgYXBwbHkgYmFja2dy b3VuZCB3b3JrZXJzLCBvbmx5IGNvdW50aW5nIHRob3NlIHdoaWNoCisJICogaGF2ZSB0aGUgZ2l2 ZW4gc3Vic2NyaXB0aW9uIGlkLgorCSAqLworCWZvciAoaSA9IDA7IGkgPCBtYXhfbG9naWNhbF9y ZXBsaWNhdGlvbl93b3JrZXJzOyBpKyspCisJeworCQlMb2dpY2FsUmVwV29ya2VyICp3ID0gJkxv Z2ljYWxSZXBDdHgtPndvcmtlcnNbaV07CisKKwkJaWYgKHctPnN1YmlkID09IHN1YmlkICYmIHct Pm1haW5fd29ya2VyX3BpZCAhPSAwKQorCQkJcmVzKys7CisJfQorCisJcmV0dXJuIHJlczsKK30K KworLyoKICAqIEFwcGx5TGF1bmNoZXJTaG1lbVNpemUKICAqCQlDb21wdXRlIHNwYWNlIG5lZWRl ZCBmb3IgcmVwbGljYXRpb24gbGF1bmNoZXIgc2hhcmVkIG1lbW9yeQogICovCkBAIC04NjgsNyAr OTUzLDcgQEAgQXBwbHlMYXVuY2hlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJCQkJCXdhaXRfdGlt ZSA9IHdhbF9yZXRyaWV2ZV9yZXRyeV9pbnRlcnZhbDsKIAogCQkJCQlsb2dpY2FscmVwX3dvcmtl cl9sYXVuY2goc3ViLT5kYmlkLCBzdWItPm9pZCwgc3ViLT5uYW1lLAotCQkJCQkJCQkJCQkgc3Vi LT5vd25lciwgSW52YWxpZE9pZCk7CisJCQkJCQkJCQkJCSBzdWItPm93bmVyLCBJbnZhbGlkT2lk LCBEU01fSEFORExFX0lOVkFMSUQpOwogCQkJCX0KIAkJCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvb3JpZ2luLmMKaW5kZXggYzcyYWQ2Yi4uNjdmMmQ0NCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYworKysgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jCkBAIC0xMDc1LDEyICsxMDc1LDIxIEBAIFJl cGxpY2F0aW9uT3JpZ2luRXhpdENsZWFudXAoaW50IGNvZGUsIERhdHVtIGFyZykKICAqIGFycmF5 IGRvZXNuJ3QgaGF2ZSB0byBiZSBzZWFyY2hlZCB3aGVuIGNhbGxpbmcKICAqIHJlcGxvcmlnaW5f c2Vzc2lvbl9hZHZhbmNlKCkuCiAgKgotICogT2J2aW91c2x5IG9ubHkgb25lIHN1Y2ggY2FjaGVk IG9yaWdpbiBjYW4gZXhpc3QgcGVyIHByb2Nlc3MgYW5kIHRoZSBjdXJyZW50CisgKiBOb3JtYWxs eSBvbmx5IG9uZSBzdWNoIGNhY2hlZCBvcmlnaW4gY2FuIGV4aXN0IHBlciBwcm9jZXNzIGFuZCB0 aGUgY3VycmVudAogICogY2FjaGVkIHZhbHVlIGNhbiBvbmx5IGJlIHNldCBhZ2FpbiBhZnRlciB0 aGUgcHJldmlvdXMgdmFsdWUgaXMgdG9ybiBkb3duCiAgKiB3aXRoIHJlcGxvcmlnaW5fc2Vzc2lv bl9yZXNldCgpLgorICoKKyAqIEhvd2V2ZXIsIGlmIHRoZSBmdW5jdGlvbiBwYXJhbWV0ZXIgJ2Fj cXVpcmVkX2J5JyBpcyBub3QgMCwgd2UgYWxsb3cgdGhlCisgKiBwcm9jZXNzIHRvIHVzZSB0aGUg c2FtZSBzbG90IGFscmVhZHkgYWNxdWlyZWQgYnkgYW5vdGhlciBwcm9jZXNzLiBJdCdzIHNhZmUK KyAqIGJlY2F1c2UgMSkgVGhlIG9ubHkgY2FsbGVyIChhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcnMp IHdpbGwgbWFpbnRhaW4gdGhlCisgKiBjb21taXQgb3JkZXIgYnkgYWxsb3dpbmcgb25seSBvbmUg cHJvY2VzcyB0byBjb21taXQgYXQgYSB0aW1lLCBzbyBubyB0d28KKyAqIHdvcmtlcnMgd2lsbCBi ZSBvcGVyYXRpbmcgb24gdGhlIHNhbWUgb3JpZ2luIGF0IHRoZSBzYW1lIHRpbWUgKHNlZSBjb21t ZW50cworICogaW4gbG9naWNhbC93b3JrZXIuYykuIDIpIEV2ZW4gdGhvdWdoIHdlIHRyeSB0byBh ZHZhbmNlIHRoZSBzZXNzaW9uJ3Mgb3JpZ2luCisgKiBjb25jdXJyZW50bHksIGl0J3Mgc2FmZSB0 byBkbyBzbyBhcyB3ZSBjaGFuZ2UvYWR2YW5jZSB0aGUgc2Vzc2lvbl9vcmlnaW4KKyAqIExTTnMg dW5kZXIgcmVwbGljYXRlX3N0YXRlIExXTG9jay4KICAqLwogdm9pZAotcmVwbG9yaWdpbl9zZXNz aW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUpCityZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVw T3JpZ2luSWQgbm9kZSwgaW50IGFjcXVpcmVkX2J5KQogewogCXN0YXRpYyBib29sIHJlZ2lzdGVy ZWRfY2xlYW51cDsKIAlpbnQJCQlpOwpAQCAtMTEyMiw3ICsxMTMxLDcgQEAgcmVwbG9yaWdpbl9z ZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUpCiAJCWlmIChjdXJzdGF0ZS0+cm9pZGVudCAh PSBub2RlKQogCQkJY29udGludWU7CiAKLQkJZWxzZSBpZiAoY3Vyc3RhdGUtPmFjcXVpcmVkX2J5 ICE9IDApCisJCWVsc2UgaWYgKGN1cnN0YXRlLT5hY3F1aXJlZF9ieSAhPSAwICYmIGFjcXVpcmVk X2J5ID09IDApCiAJCXsKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVf T0JKRUNUX0lOX1VTRSksCkBAIC0xMTUzLDcgKzExNjIsMTEgQEAgcmVwbG9yaWdpbl9zZXNzaW9u X3NldHVwKFJlcE9yaWdpbklkIG5vZGUpCiAKIAlBc3NlcnQoc2Vzc2lvbl9yZXBsaWNhdGlvbl9z dGF0ZS0+cm9pZGVudCAhPSBJbnZhbGlkUmVwT3JpZ2luSWQpOwogCi0Jc2Vzc2lvbl9yZXBsaWNh dGlvbl9zdGF0ZS0+YWNxdWlyZWRfYnkgPSBNeVByb2NQaWQ7CisJaWYgKGFjcXVpcmVkX2J5ID09 IDApCisJCXNlc3Npb25fcmVwbGljYXRpb25fc3RhdGUtPmFjcXVpcmVkX2J5ID0gTXlQcm9jUGlk OworCWVsc2UgaWYgKHNlc3Npb25fcmVwbGljYXRpb25fc3RhdGUtPmFjcXVpcmVkX2J5ID09IDAp CisJCSBlbG9nKEVSUk9SLCAiY291bGQgbm90IGZpbmQgcmVwbGljYXRpb24gc3RhdGUgc2xvdCBm b3IgcmVwbGljYXRpb24iCisJCQkgICJvcmlnaW4gd2l0aCBPSUQgJXUgd2hpY2ggd2FzIGFjcXVp cmVkIGJ5ICVkIiwgbm9kZSwgYWNxdWlyZWRfYnkpOwogCiAJTFdMb2NrUmVsZWFzZShSZXBsaWNh dGlvbk9yaWdpbkxvY2spOwogCkBAIC0xMzM3LDcgKzEzNTAsNyBAQCBwZ19yZXBsaWNhdGlvbl9v cmlnaW5fc2Vzc2lvbl9zZXR1cChQR19GVU5DVElPTl9BUkdTKQogCiAJbmFtZSA9IHRleHRfdG9f Y3N0cmluZygodGV4dCAqKSBEYXR1bUdldFBvaW50ZXIoUEdfR0VUQVJHX0RBVFVNKDApKSk7CiAJ b3JpZ2luID0gcmVwbG9yaWdpbl9ieV9uYW1lKG5hbWUsIGZhbHNlKTsKLQlyZXBsb3JpZ2luX3Nl c3Npb25fc2V0dXAob3JpZ2luKTsKKwlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luLCAw KTsKIAogCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmlnaW47CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwppbmRleCBmZjg1MTNlLi40N2JkODExIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jCkBAIC0xMTYzLDMxICsxMTYzLDU2IEBA IGxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gaW4sIExvZ2ljYWxSZXBD b21taXREYXRhICpjb21taXRfZGF0YSkKIC8qCiAgKiBXcml0ZSBTVFJFQU0gQUJPUlQgdG8gdGhl IG91dHB1dCBzdHJlYW0uIE5vdGUgdGhhdCB4aWQgYW5kIHN1YnhpZCB3aWxsIGJlCiAgKiBzYW1l IGZvciB0aGUgdG9wLWxldmVsIHRyYW5zYWN0aW9uIGFib3J0LgorICoKKyAqIElmIHdyaXRlX2Fi b3J0X2xzbiBpcyB0cnVlLCBzZW5kIHRoZSBhYm9ydF9sc24gYW5kIGFib3J0X3RpbWUgZmllbGRz LAorICogb3RoZXJ3aXNlIGRvbid0LgogICovCiB2b2lkCiBsb2dpY2FscmVwX3dyaXRlX3N0cmVh bV9hYm9ydChTdHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsCi0JCQkJCQkJICBUcmFu c2FjdGlvbklkIHN1YnhpZCkKKwkJCQkJCQkgIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwgWExvZ1Jl Y1B0ciBhYm9ydF9sc24sCisJCQkJCQkJICBib29sIHdyaXRlX2Fib3J0X2xzbikKIHsKIAlwcV9z ZW5kYnl0ZShvdXQsIExPR0lDQUxfUkVQX01TR19TVFJFQU1fQUJPUlQpOwogCi0JQXNzZXJ0KFRy YW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkgJiYgVHJhbnNhY3Rpb25JZElzVmFsaWQoc3VieGlkKSk7 CisJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkgJiYgVHJhbnNhY3Rpb25JZElzVmFs aWQodHhuLT54aWQpKTsKIAogCS8qIHRyYW5zYWN0aW9uIElEICovCiAJcHFfc2VuZGludDMyKG91 dCwgeGlkKTsKLQlwcV9zZW5kaW50MzIob3V0LCBzdWJ4aWQpOworCXBxX3NlbmRpbnQzMihvdXQs IHR4bi0+eGlkKTsKKworCWlmICh3cml0ZV9hYm9ydF9sc24pCisJeworCQlwcV9zZW5kaW50NjQo b3V0LCBhYm9ydF9sc24pOworCQlwcV9zZW5kaW50NjQob3V0LCB0eG4tPnhhY3RfdGltZS5hYm9y dF90aW1lKTsKKwl9CiB9CiAKIC8qCiAgKiBSZWFkIFNUUkVBTSBBQk9SVCBmcm9tIHRoZSBvdXRw dXQgc3RyZWFtLgorICoKKyAqIElmIHJlYWRfYWJvcnRfbHNuIGlzIHRydWUsIHRyeSB0byByZWFk IHRoZSBhYm9ydF9sc24gYW5kIGFib3J0X3RpbWUgZmllbGRzLAorICogb3RoZXJ3aXNlIGRvbid0 LgogICovCiB2b2lkCi1sb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gaW4s IFRyYW5zYWN0aW9uSWQgKnhpZCwKLQkJCQkJCQkgVHJhbnNhY3Rpb25JZCAqc3VieGlkKQorbG9n aWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIGluLAorCQkJCQkJCSBMb2dpY2Fs UmVwU3RyZWFtQWJvcnREYXRhICphYm9ydF9kYXRhLAorCQkJCQkJCSBib29sIHJlYWRfYWJvcnRf bHNuKQogewotCUFzc2VydCh4aWQgJiYgc3VieGlkKTsKKwlBc3NlcnQoYWJvcnRfZGF0YSk7CiAK LQkqeGlkID0gcHFfZ2V0bXNnaW50KGluLCA0KTsKLQkqc3VieGlkID0gcHFfZ2V0bXNnaW50KGlu LCA0KTsKKwlhYm9ydF9kYXRhLT54aWQgPSBwcV9nZXRtc2dpbnQoaW4sIDQpOworCWFib3J0X2Rh dGEtPnN1YnhpZCA9IHBxX2dldG1zZ2ludChpbiwgNCk7CisKKwlpZiAocmVhZF9hYm9ydF9sc24p CisJeworCQlhYm9ydF9kYXRhLT5hYm9ydF9sc24gPSBwcV9nZXRtc2dpbnQ2NChpbik7CisJCWFi b3J0X2RhdGEtPmFib3J0X3RpbWUgPSBwcV9nZXRtc2dpbnQ2NChpbik7CisJfQorCWVsc2UKKwl7 CisJCWFib3J0X2RhdGEtPmFib3J0X2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOworCQlhYm9ydF9k YXRhLT5hYm9ydF90aW1lID0gMDsKKwl9CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCmluZGV4IDg4YTM3ZmQuLjg5ODkzMjggMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5j CisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCkBA IC0yODI2LDcgKzI4MjYsOCBAQCBSZW9yZGVyQnVmZmVyRmluaXNoUHJlcGFyZWQoUmVvcmRlckJ1 ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLAogICogZGlzay4KICAqLwogdm9pZAotUmVvcmRl ckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1Jl Y1B0ciBsc24pCitSZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0 aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbiwKKwkJCQkgICBUaW1lc3RhbXBUeiBhYm9ydF90aW1l KQogewogCVJlb3JkZXJCdWZmZXJUWE4gKnR4bjsKIApAQCAtMjgzNyw2ICsyODM4LDggQEAgUmVv cmRlckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExv Z1JlY1B0ciBsc24pCiAJaWYgKHR4biA9PSBOVUxMKQogCQlyZXR1cm47CiAKKwl0eG4tPnhhY3Rf dGltZS5hYm9ydF90aW1lID0gYWJvcnRfdGltZTsKKwogCS8qIEZvciBzdHJlYW1lZCB0cmFuc2Fj dGlvbnMgbm90aWZ5IHRoZSByZW1vdGUgbm9kZSBhYm91dCB0aGUgYWJvcnQuICovCiAJaWYgKHJi dHhuX2lzX3N0cmVhbWVkKHR4bikpCiAJewpAQCAtMjkxMSw3ICsyOTE0LDggQEAgUmVvcmRlckJ1 ZmZlckFib3J0T2xkKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIG9sZGVzdFJ1bm5p bmdYaWQpCiAgKiB0byB0aGlzIHhpZCBtaWdodCByZS1jcmVhdGUgdGhlIHRyYW5zYWN0aW9uIGlu Y29tcGxldGVseS4KICAqLwogdm9pZAotUmVvcmRlckJ1ZmZlckZvcmdldChSZW9yZGVyQnVmZmVy ICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKQorUmVvcmRlckJ1ZmZlckZv cmdldChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNu LAorCQkJCQlUaW1lc3RhbXBUeiBhYm9ydF90aW1lKQogewogCVJlb3JkZXJCdWZmZXJUWE4gKnR4 bjsKIApAQCAtMjkyMiw2ICsyOTI2LDggQEAgUmVvcmRlckJ1ZmZlckZvcmdldChSZW9yZGVyQnVm ZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKQogCWlmICh0eG4gPT0g TlVMTCkKIAkJcmV0dXJuOwogCisJdHhuLT54YWN0X3RpbWUuYWJvcnRfdGltZSA9IGFib3J0X3Rp bWU7CisKIAkvKiBGb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb25zIG5vdGlmeSB0aGUgcmVtb3RlIG5v ZGUgYWJvdXQgdGhlIGFib3J0LiAqLwogCWlmIChyYnR4bl9pc19zdHJlYW1lZCh0eG4pKQogCQly Yi0+c3RyZWFtX2Fib3J0KHJiLCB0eG4sIGxzbik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC90YWJsZXN5bmMuYwppbmRleCA2YTAxZmZkLi4yOTliZGM2IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCisrKyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKQEAgLTU2OCw3ICs1NjgsOCBAQCBw cm9jZXNzX3N5bmNpbmdfdGFibGVzX2Zvcl9hcHBseShYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKQog CQkJCQkJCQkJCQkJIE15U3Vic2NyaXB0aW9uLT5vaWQsCiAJCQkJCQkJCQkJCQkgTXlTdWJzY3Jp cHRpb24tPm5hbWUsCiAJCQkJCQkJCQkJCQkgTXlMb2dpY2FsUmVwV29ya2VyLT51c2VyaWQsCi0J CQkJCQkJCQkJCQkgcnN0YXRlLT5yZWxpZCk7CisJCQkJCQkJCQkJCQkgcnN0YXRlLT5yZWxpZCwK KwkJCQkJCQkJCQkJCSBEU01fSEFORExFX0lOVkFMSUQpOwogCQkJCQkJaGVudHJ5LT5sYXN0X3N0 YXJ0X3RpbWUgPSBub3c7CiAJCQkJCX0KIAkJCQl9CkBAIC01ODksNiArNTkwLDkgQEAgcHJvY2Vz c19zeW5jaW5nX3RhYmxlc19mb3JfYXBwbHkoWExvZ1JlY1B0ciBjdXJyZW50X2xzbikKIHZvaWQK IHByb2Nlc3Nfc3luY2luZ190YWJsZXMoWExvZ1JlY1B0ciBjdXJyZW50X2xzbikKIHsKKwlpZiAo YW1fYXBwbHlfYmd3b3JrZXIoKSkKKwkJcmV0dXJuOworCiAJaWYgKGFtX3RhYmxlc3luY193b3Jr ZXIoKSkKIAkJcHJvY2Vzc19zeW5jaW5nX3RhYmxlc19mb3Jfc3luYyhjdXJyZW50X2xzbik7CiAJ ZWxzZQpAQCAtMTI3Myw3ICsxMjc3LDcgQEAgTG9naWNhbFJlcFN5bmNUYWJsZVN0YXJ0KFhMb2dS ZWNQdHIgKm9yaWdpbl9zdGFydHBvcykKIAkJICogdGltZSB0aGlzIHRhYmxlc3luYyB3YXMgbGF1 bmNoZWQuCiAJCSAqLwogCQlvcmlnaW5pZCA9IHJlcGxvcmlnaW5fYnlfbmFtZShvcmlnaW5uYW1l LCBmYWxzZSk7Ci0JCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCk7CisJCXJlcGxv cmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCwgMCk7CiAJCXJlcGxvcmlnaW5fc2Vzc2lvbl9v cmlnaW4gPSBvcmlnaW5pZDsKIAkJKm9yaWdpbl9zdGFydHBvcyA9IHJlcGxvcmlnaW5fc2Vzc2lv bl9nZXRfcHJvZ3Jlc3MoZmFsc2UpOwogCkBAIC0xMzg0LDcgKzEzODgsNyBAQCBMb2dpY2FsUmVw U3luY1RhYmxlU3RhcnQoWExvZ1JlY1B0ciAqb3JpZ2luX3N0YXJ0cG9zKQogCQkJCQkJICAgdHJ1 ZSAvKiBnbyBiYWNrd2FyZCAqLyAsIHRydWUgLyogV0FMIGxvZyAqLyApOwogCQlVbmxvY2tSZWxh dGlvbk9pZChSZXBsaWNhdGlvbk9yaWdpblJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwog Ci0JCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCk7CisJCXJlcGxvcmlnaW5fc2Vz c2lvbl9zZXR1cChvcmlnaW5pZCwgMCk7CiAJCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBv cmlnaW5pZDsKIAl9CiAJZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2Vy LmMKaW5kZXggNWY4YzU0MS4uMzVkMTk5MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3dvcmtlci5jCkBAIC0yMiw4ICsyMiwyOCBAQAogICogU1RSRUFNRUQgVFJBTlNBQ1RJT05T CiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIFN0cmVhbWVkIHRyYW5zYWN0aW9ucyAobGFy Z2UgdHJhbnNhY3Rpb25zIGV4Y2VlZGluZyBhIG1lbW9yeSBsaW1pdCBvbiB0aGUKLSAqIHVwc3Ry ZWFtKSBhcmUgbm90IGFwcGxpZWQgaW1tZWRpYXRlbHksIGJ1dCBpbnN0ZWFkLCB0aGUgZGF0YSBp cyB3cml0dGVuCi0gKiB0byB0ZW1wb3JhcnkgZmlsZXMgYW5kIHRoZW4gYXBwbGllZCBhdCBvbmNl IHdoZW4gdGhlIGZpbmFsIGNvbW1pdCBhcnJpdmVzLgorICogdXBzdHJlYW0pIGFyZSBhcHBsaWVk IHVzaW5nIG9uZSBvZiB0d28gYXBwcm9hY2hlczoKKyAqCisgKiAxKSBTZXBhcmF0ZSBiYWNrZ3Jv dW5kIHdvcmtlcnMKKyAqCisgKiBJZiBzdHJlYW1pbmcgPSBwYXJhbGxlbCwgd2UgYXNzaWduIGEg bmV3IGFwcGx5IGJhY2tncm91bmQgd29ya2VyIChpZgorICogYXZhaWxhYmxlKSBhcyBzb29uIGFz IHRoZSB4YWN0J3MgZmlyc3Qgc3RyZWFtIGlzIHJlY2VpdmVkLiBUaGUgbWFpbiBhcHBseQorICog d29ya2VyIHdpbGwgc2VuZCBjaGFuZ2VzIHRvIHRoaXMgbmV3IHdvcmtlciB2aWEgc2hhcmVkIG1l bW9yeS4gV2Uga2VlcCB0aGlzCisgKiB3b3JrZXIgYXNzaWduZWQgdGlsbCB0aGUgdHJhbnNhY3Rp b24gY29tbWl0IGlzIHJlY2VpdmVkIGFuZCBhbHNvIHdhaXQgZm9yCisgKiB0aGUgd29ya2VyIHRv IGZpbmlzaCBhdCBjb21taXQuIFRoaXMgcHJlc2VydmVzIGNvbW1pdCBvcmRlcmluZyBhbmQgYXZv aWRzCisgKiBmaWxlIEkvTyBpbiBtb3N0IGNhc2VzLiBXZSBzdGlsbCBuZWVkIHRvIHNwaWxsIHRv IGEgZmlsZSBpZiB0aGVyZSBpcyBubworICogd29ya2VyIGF2YWlsYWJsZS4gSXQgaXMgaW1wb3J0 YW50IHRvIG1haW50YWluIGNvbW1pdCBvcmRlciB0byBhdm9pZCBmYWlsdXJlcworICogZHVlIHRv IChhKSB0cmFuc2FjdGlvbiBkZXBlbmRlbmNpZXMsIHNheSBpZiB3ZSBpbnNlcnQgYSByb3cgaW4g dGhlIGZpcnN0CisgKiB0cmFuc2FjdGlvbiBhbmQgdXBkYXRlIGl0IGluIHRoZSBzZWNvbmQgdHJh bnNhY3Rpb24gdGhlbiBhbGxvd2luZyB0byBhcHBseQorICogYm90aCBpbiBwYXJhbGxlbCBjYW4g bGVhZCB0byBmYWlsdXJlIGluIHRoZSB1cGRhdGUuIChiKSBkZWFkbG9ja3MsIGFsbG93aW5nCisg KiB0cmFuc2FjdGlvbnMgdGhhdCB1cGRhdGUgdGhlIHNhbWUgc2V0IG9mIHJvd3MvdGFibGVzIGlu IG9wcG9zaXRlIG9yZGVyIHRvIGJlCisgKiBhcHBsaWVkIGluIHBhcmFsbGVsIGNhbiBsZWFkIHRv IGRlYWRsb2Nrcy4KKyAqCisgKiAyKSBXcml0ZSB0byB0ZW1wb3JhcnkgZmlsZXMgYW5kIGFwcGx5 IHdoZW4gdGhlIGZpbmFsIGNvbW1pdCBhcnJpdmVzCisgKgorICogSWYgbm8gd29ya2VyIGlzIGF2 YWlsYWJsZSB0byBoYW5kbGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24sIHRoZSBkYXRhIGlzCisgKiB3 cml0dGVuIHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQgdGhlbiBhcHBsaWVkIGF0IG9uY2Ugd2hlbiB0 aGUgZmluYWwgY29tbWl0CisgKiBhcnJpdmVzLgogICoKICAqIFVubGlrZSB0aGUgcmVndWxhciAo bm9uLXN0cmVhbWVkKSBjYXNlLCBoYW5kbGluZyBzdHJlYW1lZCB0cmFuc2FjdGlvbnMgaGFzCiAg KiB0byBoYW5kbGUgYWJvcnRzIG9mIGJvdGggdGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uIGFuZCBz dWJ0cmFuc2FjdGlvbnMuIFRoaXMKQEAgLTIxOSwyMCArMjM5LDggQEAgdHlwZWRlZiBzdHJ1Y3Qg QXBwbHlFeGVjdXRpb25EYXRhCiAJUGFydGl0aW9uVHVwbGVSb3V0aW5nICpwcm91dGU7CS8qIHBh cnRpdGlvbiByb3V0aW5nIGluZm8gKi8KIH0gQXBwbHlFeGVjdXRpb25EYXRhOwogCi0vKiBTdHJ1 Y3QgZm9yIHNhdmluZyBhbmQgcmVzdG9yaW5nIGFwcGx5IGVycmNvbnRleHQgaW5mb3JtYXRpb24g Ki8KLXR5cGVkZWYgc3RydWN0IEFwcGx5RXJyb3JDYWxsYmFja0FyZwotewotCUxvZ2ljYWxSZXBN c2dUeXBlIGNvbW1hbmQ7CS8qIDAgaWYgaW52YWxpZCAqLwotCUxvZ2ljYWxSZXBSZWxNYXBFbnRy eSAqcmVsOwotCi0JLyogUmVtb3RlIG5vZGUgaW5mb3JtYXRpb24gKi8KLQlpbnQJCQlyZW1vdGVf YXR0bnVtOwkvKiAtMSBpZiBpbnZhbGlkICovCi0JVHJhbnNhY3Rpb25JZCByZW1vdGVfeGlkOwot CVhMb2dSZWNQdHIJZmluaXNoX2xzbjsKLQljaGFyCSAgICpvcmlnaW5fbmFtZTsKLX0gQXBwbHlF cnJvckNhbGxiYWNrQXJnOwotCi1zdGF0aWMgQXBwbHlFcnJvckNhbGxiYWNrQXJnIGFwcGx5X2Vy cm9yX2NhbGxiYWNrX2FyZyA9CisvKiBlcnJjb250ZXh0IHRyYWNrZXIgKi8KK0FwcGx5RXJyb3JD YWxsYmFja0FyZyBhcHBseV9lcnJvcl9jYWxsYmFja19hcmcgPQogewogCS5jb21tYW5kID0gMCwK IAkucmVsID0gTlVMTCwKQEAgLTI0Miw3ICsyNTAsNyBAQCBzdGF0aWMgQXBwbHlFcnJvckNhbGxi YWNrQXJnIGFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZyA9CiAJLm9yaWdpbl9uYW1lID0gTlVMTCwK IH07CiAKLXN0YXRpYyBNZW1vcnlDb250ZXh0IEFwcGx5TWVzc2FnZUNvbnRleHQgPSBOVUxMOwor TWVtb3J5Q29udGV4dCBBcHBseU1lc3NhZ2VDb250ZXh0ID0gTlVMTDsKIE1lbW9yeUNvbnRleHQg QXBwbHlDb250ZXh0ID0gTlVMTDsKIAogLyogcGVyIHN0cmVhbSBjb250ZXh0IGZvciBzdHJlYW1p bmcgdHJhbnNhY3Rpb25zICovCkBAIC0yNTEsMjcgKzI1OSwzOSBAQCBzdGF0aWMgTWVtb3J5Q29u dGV4dCBMb2dpY2FsU3RyZWFtaW5nQ29udGV4dCA9IE5VTEw7CiBXYWxSZWNlaXZlckNvbm4gKkxv Z1JlcFdvcmtlcldhbFJjdkNvbm4gPSBOVUxMOwogCiBTdWJzY3JpcHRpb24gKk15U3Vic2NyaXB0 aW9uID0gTlVMTDsKLXN0YXRpYyBib29sIE15U3Vic2NyaXB0aW9uVmFsaWQgPSBmYWxzZTsKK2Jv b2wgTXlTdWJzY3JpcHRpb25WYWxpZCA9IGZhbHNlOwogCiBib29sCQlpbl9yZW1vdGVfdHJhbnNh Y3Rpb24gPSBmYWxzZTsKIHN0YXRpYyBYTG9nUmVjUHRyIHJlbW90ZV9maW5hbF9sc24gPSBJbnZh bGlkWExvZ1JlY1B0cjsKIAogLyogZmllbGRzIHZhbGlkIG9ubHkgd2hlbiBwcm9jZXNzaW5nIHN0 cmVhbWVkIHRyYW5zYWN0aW9uICovCi1zdGF0aWMgYm9vbCBpbl9zdHJlYW1lZF90cmFuc2FjdGlv biA9IGZhbHNlOworYm9vbCBpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IGZhbHNlOworCitUcmFu c2FjdGlvbklkIHN0cmVhbV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKK3N0YXRpYyBBcHBs eUJnd29ya2VySW5mbyAqc3RyZWFtX2FwcGx5X3dvcmtlciA9IE5VTEw7CiAKLXN0YXRpYyBUcmFu c2FjdGlvbklkIHN0cmVhbV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKy8qIENoZWNrIGlm IHdlIGFyZSBhcHBseWluZyB0aGUgdHJhbnNhY3Rpb24gaW4gYW4gYXBwbHkgYmFja2dyb3VuZCB3 b3JrZXIgKi8KKyNkZWZpbmUgYXBwbHlfYmd3b3JrZXJfYWN0aXZlKCkgKGluX3N0cmVhbWVkX3Ry YW5zYWN0aW9uICYmIHN0cmVhbV9hcHBseV93b3JrZXIgIT0gTlVMTCkKKworLyoKKyAqIFRoZSBu dW1iZXIgb2YgY2hhbmdlcyBkdXJpbmcgb25lIHN0cmVhbWluZyBibG9jayAob25seSBmb3IgYXBw bHkgYmFja2dyb3VuZAorICogd29ya2VycykKKyAqLworc3RhdGljIHVpbnQzMiBuY2hhbmdlcyA9 IDA7CiAKIC8qCiAgKiBXZSBlbmFibGUgc2tpcHBpbmcgYWxsIGRhdGEgbW9kaWZpY2F0aW9uIGNo YW5nZXMgKElOU0VSVCwgVVBEQVRFLCBldGMuKSBmb3IKICAqIHRoZSBzdWJzY3JpcHRpb24gaWYg dGhlIHJlbW90ZSB0cmFuc2FjdGlvbidzIGZpbmlzaCBMU04gbWF0Y2hlcyB0aGUgc3Vic2tpcGxz bi4KICAqIE9uY2Ugd2Ugc3RhcnQgc2tpcHBpbmcgY2hhbmdlcywgd2UgZG9uJ3Qgc3RvcCBpdCB1 bnRpbCB3ZSBza2lwIGFsbCBjaGFuZ2VzIG9mCiAgKiB0aGUgdHJhbnNhY3Rpb24gZXZlbiBpZiBw Z19zdWJzY3JpcHRpb24gaXMgdXBkYXRlZCBhbmQgTXlTdWJzY3JpcHRpb24tPnNraXBsc24KLSAq IGdldHMgY2hhbmdlZCBvciByZXNldCBkdXJpbmcgdGhhdC4gQWxzbywgaW4gc3RyZWFtaW5nIHRy YW5zYWN0aW9uIGNhc2VzLCB3ZQotICogZG9uJ3Qgc2tpcCByZWNlaXZpbmcgYW5kIHNwb29saW5n IHRoZSBjaGFuZ2VzIHNpbmNlIHdlIGRlY2lkZSB3aGV0aGVyIG9yIG5vdAorICogZ2V0cyBjaGFu Z2VkIG9yIHJlc2V0IGR1cmluZyB0aGF0LiBBbHNvLCBpbiBzdHJlYW1pbmcgdHJhbnNhY3Rpb24g Y2FzZXMgKHN0cmVhbWluZyA9IG9uKSwKKyAqIHdlIGRvbid0IHNraXAgcmVjZWl2aW5nIGFuZCBz cG9vbGluZyB0aGUgY2hhbmdlcyBzaW5jZSB3ZSBkZWNpZGUgd2hldGhlciBvciBub3QKICAqIHRv IHNraXAgYXBwbHlpbmcgdGhlIGNoYW5nZXMgd2hlbiBzdGFydGluZyB0byBhcHBseSBjaGFuZ2Vz LiBUaGUgc3Vic2tpcGxzbiBpcwogICogY2xlYXJlZCBhZnRlciBzdWNjZXNzZnVsbHkgc2tpcHBp bmcgdGhlIHRyYW5zYWN0aW9uIG9yIGFwcGx5aW5nIG5vbi1lbXB0eQogICogdHJhbnNhY3Rpb24u IFRoZSBsYXR0ZXIgcHJldmVudHMgdGhlIG1pc3Rha2VubHkgc3BlY2lmaWVkIHN1YnNraXBsc24g ZnJvbQotICogYmVpbmcgbGVmdC4KKyAqIGJlaW5nIGxlZnQuIE5vdGUgdGhhdCB3ZSBjYW5ub3Qg c2tpcCB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyB3aGVuIHVzaW5nCisgKiBhcHBseSBiYWNr Z3JvdW5kIHdvcmtlcnMgYmVjYXVzZSB3ZSBjYW5ub3QgZ2V0IHRoZSBmaW5pc2ggTFNOIGJlZm9y ZQorICogYXBwbHlpbmcgdGhlIGNoYW5nZXMuCiAgKi8KIHN0YXRpYyBYTG9nUmVjUHRyIHNraXBf eGFjdF9maW5pc2hfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAjZGVmaW5lIGlzX3NraXBwaW5n X2NoYW5nZXMoKSAodW5saWtlbHkoIVhMb2dSZWNQdHJJc0ludmFsaWQoc2tpcF94YWN0X2Zpbmlz aF9sc24pKSkKQEAgLTMyNCw5ICszNDQsNiBAQCBzdGF0aWMgdm9pZCBtYXliZV9yZXJlYWRfc3Vi c2NyaXB0aW9uKHZvaWQpOwogCiBzdGF0aWMgdm9pZCBEaXNhYmxlU3Vic2NyaXB0aW9uQW5kRXhp dCh2b2lkKTsKIAotLyogcHJvdG90eXBlIG5lZWRlZCBiZWNhdXNlIG9mIHN0cmVhbV9jb21taXQg Ki8KLXN0YXRpYyB2b2lkIGFwcGx5X2Rpc3BhdGNoKFN0cmluZ0luZm8gcyk7Ci0KIHN0YXRpYyB2 b2lkIGFwcGx5X2hhbmRsZV9jb21taXRfaW50ZXJuYWwoTG9naWNhbFJlcENvbW1pdERhdGEgKmNv bW1pdF9kYXRhKTsKIHN0YXRpYyB2b2lkIGFwcGx5X2hhbmRsZV9pbnNlcnRfaW50ZXJuYWwoQXBw bHlFeGVjdXRpb25EYXRhICplZGF0YSwKIAkJCQkJCQkJCQkgUmVzdWx0UmVsSW5mbyAqcmVsaW5m bywKQEAgLTM1OSw3ICszNzYsNiBAQCBzdGF0aWMgdm9pZCBzdG9wX3NraXBwaW5nX2NoYW5nZXMo dm9pZCk7CiBzdGF0aWMgdm9pZCBjbGVhcl9zdWJzY3JpcHRpb25fc2tpcF9sc24oWExvZ1JlY1B0 ciBmaW5pc2hfbHNuKTsKIAogLyogRnVuY3Rpb25zIGZvciBhcHBseSBlcnJvciBjYWxsYmFjayAq Lwotc3RhdGljIHZvaWQgYXBwbHlfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKTsKIHN0YXRpYyBp bmxpbmUgdm9pZCBzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KFRyYW5zYWN0aW9uSWQgeGlk LCBYTG9nUmVjUHRyIGxzbik7CiBzdGF0aWMgaW5saW5lIHZvaWQgcmVzZXRfYXBwbHlfZXJyb3Jf Y29udGV4dF9pbmZvKHZvaWQpOwogCkBAIC0zNzUsMTIgKzM5MSwzNCBAQCBzdGF0aWMgaW5saW5l IHZvaWQgcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKHZvaWQpOwogICogcmVjb3JkICsg MSAoaWUgc3RhcnQgb2YgbmV4dCByZWNvcmQpIGFuZCBuZXh0IHJlY29yZCBjYW4gYmUgQ09NTUlU IG9mCiAgKiB0cmFuc2FjdGlvbiB3ZSBhcmUgbm93IHByb2Nlc3NpbmcgKHdoaWNoIGlzIHdoYXQg d2Ugc2V0IHJlbW90ZV9maW5hbF9sc24KICAqIHRvIGluIGFwcGx5X2hhbmRsZV9iZWdpbikuCisg KgorICogTm90ZSB0aGF0IGZvciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIHRoYXQgaXMgYmVpbmcg YXBwbGllZCBpbiBhcHBseQorICogYmFja2dyb3VuZCB3b3JrZXIsIHdlIGRpc2FsbG93IGFwcGx5 aW5nIGNoYW5nZXMgb24gYSB0YWJsZSB0aGF0IGlzIG5vdCBpbgorICogdGhlIFJFQURZIHN0YXRl LCBiZWNhdXNlIHdlIGNhbm5vdCBkZWNpZGUgd2hldGhlciB0byBhcHBseSB0aGUgY2hhbmdlIGFz IHdlCisgKiB3b24ndCBrbm93IHJlbW90ZV9maW5hbF9sc24gYnkgdGhhdCB0aW1lLgorICoKKyAq IFdlIGFscmVhZHkgY2hlY2tlZCB0aGlzIGluIGFwcGx5X2Jnd29ya2VyX2Nhbl9zdGFydCgpIGJl Zm9yZSBhc3NpZ25pbmcgdGhlCisgKiBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gdGhlIGJhY2tn cm91bmQgd29ya2VyLCBidXQgaXQgYWxzbyBuZWVkcyB0byBiZQorICogY2hlY2tlZCBoZXJlIGJl Y2F1c2UgaWYgdGhlIHVzZXIgZXhlY3V0ZXMgQUxURVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNI CisgKiBQVUJMSUNBVElPTiBpbiBwYXJhbGxlbCwgdGhlIG5ldyB0YWJsZSBjYW4gYmUgYWRkZWQg dG8gcGdfc3Vic2NyaXB0aW9uX3JlbAorICogaW4gcGFyYWxsZWwgdG8gdGhpcyB0cmFuc2FjdGlv bi4KICAqLwogc3RhdGljIGJvb2wKIHNob3VsZF9hcHBseV9jaGFuZ2VzX2Zvcl9yZWwoTG9naWNh bFJlcFJlbE1hcEVudHJ5ICpyZWwpCiB7CiAJaWYgKGFtX3RhYmxlc3luY193b3JrZXIoKSkKIAkJ cmV0dXJuIE15TG9naWNhbFJlcFdvcmtlci0+cmVsaWQgPT0gcmVsLT5sb2NhbHJlbG9pZDsKKwll bHNlIGlmIChhbV9hcHBseV9iZ3dvcmtlcigpKQorCXsKKwkJaWYgKHJlbC0+c3RhdGUgIT0gU1VC UkVMX1NUQVRFX1JFQURZKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycm1zZygibG9naWNh bCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXJzIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwg cmVzdGFydCIsCisJCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpLAorCQkJCQkgZXJyZGV0YWls KCJDYW5ub3QgaGFuZGxlIHN0cmVhbWVkIHJlcGxpY2F0aW9uIHRyYW5zYWN0aW9uIGJ5IGFwcGx5 ICIKKwkJCQkJCQkgICAiYmFja2dyb3VuZCB3b3JrZXJzIHVudGlsIGFsbCB0YWJsZXMgYXJlIHN5 bmNocm9uaXplZCIpKSk7CisKKwkJcmV0dXJuIHRydWU7CisJfQogCWVsc2UKIAkJcmV0dXJuIChy ZWwtPnN0YXRlID09IFNVQlJFTF9TVEFURV9SRUFEWSB8fAogCQkJCShyZWwtPnN0YXRlID09IFNV QlJFTF9TVEFURV9TWU5DRE9ORSAmJgpAQCAtNDI2LDQzICs0NjQsOTAgQEAgZW5kX3JlcGxpY2F0 aW9uX3N0ZXAodm9pZCkKIH0KIAogLyoKLSAqIEhhbmRsZSBzdHJlYW1lZCB0cmFuc2FjdGlvbnMu CisgKiBIYW5kbGUgc3RyZWFtZWQgdHJhbnNhY3Rpb25zIGZvciBib3RoIHRoZSBtYWluIGFwcGx5 IHdvcmtlciBhbmQgdGhlIGFwcGx5CisgKiBiYWNrZ3JvdW5kIHdvcmtlcnMuCisgKgorICogSW4g c3RyZWFtaW5nIGNhc2UgKHJlY2VpdmluZyBhIGJsb2NrIG9mIHN0cmVhbWVkIHRyYW5zYWN0aW9u KSwgZm9yCisgKiBTVUJTVFJFQU1fT04gbW9kZSwgc2ltcGx5IHJlZGlyZWN0IGl0IHRvIGEgZmls ZSBmb3IgdGhlIHByb3BlciB0b3BsZXZlbAorICogdHJhbnNhY3Rpb24sIGFuZCBmb3IgU1VCU1RS RUFNX1BBUkFMTEVMIG1vZGUsIHNlbmQgdGhlIGNoYW5nZXMgdG8gYXBwbHkKKyAqIGJhY2tncm91 bmQgd29ya2VycyAoTE9HSUNBTF9SRVBfTVNHX1JFTEFUSU9OIG9yIExPR0lDQUxfUkVQX01TR19U WVBFIGNoYW5nZXMKKyAqIHdpbGwgYmUgYXBwbGllZCBieSBib3RoIG1haW4gYW5kIGFwcGx5IGJh Y2tncm91bmQgd29ya2VycykuCiAgKgotICogSWYgaW4gc3RyZWFtaW5nIG1vZGUgKHJlY2Vpdmlu ZyBhIGJsb2NrIG9mIHN0cmVhbWVkIHRyYW5zYWN0aW9uKSwgd2UKLSAqIHNpbXBseSByZWRpcmVj dCBpdCB0byBhIGZpbGUgZm9yIHRoZSBwcm9wZXIgdG9wbGV2ZWwgdHJhbnNhY3Rpb24uCisgKiBG b3Igbm9uLXN0cmVhbWVkIHRyYW5zYWN0aW9ucywgcmV0dXJucyBmYWxzZTsKKyAqIEZvciBzdHJl YW1lZCB0cmFuc2FjdGlvbnMsIHJldHVybnMgdHJ1ZSBpZiBpbiBtYWluIGFwcGx5IHdvcmtlciwg ZmFsc2UKKyAqIG90aGVyd2lzZS4KICAqCi0gKiBSZXR1cm5zIHRydWUgZm9yIHN0cmVhbWVkIHRy YW5zYWN0aW9ucywgZmFsc2Ugb3RoZXJ3aXNlIChyZWd1bGFyIG1vZGUpLgorICogRXhjZXB0aW9u OiBXaGVuIHRoZSBtYWluIGFwcGx5IHdvcmtlciBpcyBhcHBseWluZyBzdHJlYW1pbmcgdHJhbnNh Y3Rpb25zIGluCisgKiBwYXJhbGxlbCBtb2RlIChlLmcuIHdoZW4gYWRkcmVzc2luZyBMT0dJQ0FM X1JFUF9NU0dfUkVMQVRJT04gb3IKKyAqIExPR0lDQUxfUkVQX01TR19UWVBFIGNoYW5nZXMpLCB0 aGVuIHJldHVybiBmYWxzZS4KICAqLwogc3RhdGljIGJvb2wKIGhhbmRsZV9zdHJlYW1lZF90cmFu c2FjdGlvbihMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24sIFN0cmluZ0luZm8gcykKIHsKLQlUcmFu c2FjdGlvbklkIHhpZDsKKwlUcmFuc2FjdGlvbklkIGN1cnJlbnRfeGlkID0gSW52YWxpZFRyYW5z YWN0aW9uSWQ7CisJYm9vbAlyZXMgPSB0cnVlOwogCi0JLyogbm90IGluIHN0cmVhbWluZyBtb2Rl ICovCi0JaWYgKCFpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKKwkvKiBOb3QgaW4gc3RyZWFtaW5n IG1vZGUgYW5kIG5vdCBpbiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4gKi8KKwlpZiAoIShpbl9z dHJlYW1lZF90cmFuc2FjdGlvbiB8fCBhbV9hcHBseV9iZ3dvcmtlcigpKSkKIAkJcmV0dXJuIGZh bHNlOwogCi0JQXNzZXJ0KHN0cmVhbV9mZCAhPSBOVUxMKTsKIAlBc3NlcnQoVHJhbnNhY3Rpb25J ZElzVmFsaWQoc3RyZWFtX3hpZCkpOwogCiAJLyoKIAkgKiBXZSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBYSUQgb2YgdGhlIHN1YnhhY3QgYXMgdGhlIGZpcnN0IHBhcnQgb2YgdGhlCiAJICogbWVzc2Fn ZSwgc28gZXh0cmFjdCBpdC4KIAkgKi8KLQl4aWQgPSBwcV9nZXRtc2dpbnQocywgNCk7CisJY3Vy cmVudF94aWQgPSBwcV9nZXRtc2dpbnQocywgNCk7CiAKLQlpZiAoIVRyYW5zYWN0aW9uSWRJc1Zh bGlkKHhpZCkpCisJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChjdXJyZW50X3hpZCkpCiAJCWVy ZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAog CQkJCSBlcnJtc2dfaW50ZXJuYWwoImludmFsaWQgdHJhbnNhY3Rpb24gSUQgaW4gc3RyZWFtZWQg cmVwbGljYXRpb24gdHJhbnNhY3Rpb24iKSkpOwogCi0JLyogQWRkIHRoZSBuZXcgc3VieGFjdCB0 byB0aGUgYXJyYXkgKHVubGVzcyBhbHJlYWR5IHRoZXJlKS4gKi8KLQlzdWJ4YWN0X2luZm9fYWRk KHhpZCk7CisJaWYgKGFtX2FwcGx5X2Jnd29ya2VyKCkpCisJeworCQkvKiBEZWZpbmUgYSBzYXZl cG9pbnQgZm9yIGEgc3VieGFjdCBpZiBuZWVkZWQuICovCisJCWFwcGx5X2Jnd29ya2VyX3N1Ynhh Y3RfaW5mb19hZGQoY3VycmVudF94aWQpOworCisJCXJlcyA9IGZhbHNlOworCX0KKwllbHNlIGlm IChhcHBseV9iZ3dvcmtlcl9hY3RpdmUoKSkKKwl7CisJCS8qCisJCSAqIFRoaXMgaXMgdGhlIG1h aW4gYXBwbHkgd29ya2VyLCBidXQgdGhlcmUgaXMgYW4gYXBwbHkgYmFja2dyb3VuZAorCQkgKiB3 b3JrZXIsIHNvIGFwcGx5IHRoZSBjaGFuZ2VzIG9mIHRoaXMgdHJhbnNhY3Rpb24gaW4gdGhhdCBi YWNrZ3JvdW5kCisJCSAqIHdvcmtlci4gUGFzcyB0aGUgZGF0YSB0byB0aGUgd29ya2VyLgorCQkg Ki8KKwkJYXBwbHlfYmd3b3JrZXJfc2VuZF9kYXRhKHN0cmVhbV9hcHBseV93b3JrZXIsIHMtPmxl biwgcy0+ZGF0YSk7CisJCW5jaGFuZ2VzICs9IDE7CisKKwkJLyoKKwkJICogWFhYIFRoZSBwdWJs aXNoZXIgc2lkZSBkb2Vzbid0IGFsd2F5cyBzZW5kIHJlbGF0aW9uL3R5cGUgdXBkYXRlCisJCSAq IG1lc3NhZ2VzIGFmdGVyIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24sIHNvIGFsc28gdXBkYXRl IHRoZQorCQkgKiByZWxhdGlvbi90eXBlIGluIG1haW4gYXBwbHkgd29ya2VyIGhlcmUuIFNlZSBm dW5jdGlvbgorCQkgKiBjbGVhbnVwX3JlbF9zeW5jX2NhY2hlLgorCQkgKi8KKwkJaWYgKGFjdGlv biA9PSBMT0dJQ0FMX1JFUF9NU0dfUkVMQVRJT04gfHwKKwkJCWFjdGlvbiA9PSBMT0dJQ0FMX1JF UF9NU0dfVFlQRSkKKwkJCXJlcyA9IGZhbHNlOworCX0KKwllbHNlCisJeworCQlBc3NlcnQoc3Ry ZWFtX2ZkICE9IE5VTEwpOworCisJCS8qCisJCSAqIFRoaXMgaXMgdGhlIG1haW4gYXBwbHkgd29y a2VyLCBidXQgdGhlcmUgaXMgbm8gYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIsCisJCSAqIHNvIHdy aXRlIHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQgYXBwbHkgd2hlbiB0aGUgZmluYWwgY29tbWl0IGFy cml2ZXMuCisJCSAqCisJCSAqIEFkZCB0aGUgbmV3IHN1YnhhY3QgdG8gdGhlIGFycmF5ICh1bmxl c3MgYWxyZWFkeSB0aGVyZSkuCisJCSAqLworCQlzdWJ4YWN0X2luZm9fYWRkKGN1cnJlbnRfeGlk KTsKIAotCS8qIHdyaXRlIHRoZSBjaGFuZ2UgdG8gdGhlIGN1cnJlbnQgZmlsZSAqLwotCXN0cmVh bV93cml0ZV9jaGFuZ2UoYWN0aW9uLCBzKTsKKwkJLyogd3JpdGUgdGhlIGNoYW5nZSB0byB0aGUg Y3VycmVudCBmaWxlICovCisJCXN0cmVhbV93cml0ZV9jaGFuZ2UoYWN0aW9uLCBzKTsKKwl9CiAK LQlyZXR1cm4gdHJ1ZTsKKwlyZXR1cm4gcmVzOwogfQogCiAvKgpAQCAtODQ0LDYgKzkyOSw5IEBA IGFwcGx5X2hhbmRsZV9jb21taXQoU3RyaW5nSW5mbyBzKQogCiAJYXBwbHlfaGFuZGxlX2NvbW1p dF9pbnRlcm5hbCgmY29tbWl0X2RhdGEpOwogCisJLyogQ2hlY2sgdGhlIHN0YXR1cyBvZiBhcHBs eSBiYWNrZ3JvdW5kIHdvcmtlciBpZiBhbnkuICovCisJYXBwbHlfYmd3b3JrZXJfY2hlY2tfc3Rh dHVzKCk7CisKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25p emVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMoY29tbWl0X2RhdGEu ZW5kX2xzbik7CiAKQEAgLTg5NSwxMCArOTgzLDEyIEBAIGFwcGx5X2hhbmRsZV9wcmVwYXJlX2lu dGVybmFsKExvZ2ljYWxSZXBQcmVwYXJlZFR4bkRhdGEgKnByZXBhcmVfZGF0YSkKIAkJCQkJCSAg IGdpZCwgc2l6ZW9mKGdpZCkpOwogCiAJLyoKLQkgKiBCZWdpblRyYW5zYWN0aW9uQmxvY2sgaXMg bmVjZXNzYXJ5IHRvIGJhbGFuY2UgdGhlIEVuZFRyYW5zYWN0aW9uQmxvY2sKKwkgKiBXZSBtdXN0 IGJlIGluIHRyYW5zYWN0aW9uIGJsb2NrIHRvIGJhbGFuY2UgdGhlIEVuZFRyYW5zYWN0aW9uQmxv Y2sKIAkgKiBjYWxsZWQgd2l0aGluIHRoZSBQcmVwYXJlVHJhbnNhY3Rpb25CbG9jayBiZWxvdy4K IAkgKi8KLQlCZWdpblRyYW5zYWN0aW9uQmxvY2soKTsKKwlpZiAoIUlzVHJhbnNhY3Rpb25CbG9j aygpKQorCQlCZWdpblRyYW5zYWN0aW9uQmxvY2soKTsKKwogCUNvbW1pdFRyYW5zYWN0aW9uQ29t bWFuZCgpOyAvKiBDb21wbGV0ZXMgdGhlIHByZWNlZGluZyBCZWdpbiBjb21tYW5kLiAqLwogCiAJ LyoKQEAgLTk1MCw2ICsxMDQwLDkgQEAgYXBwbHlfaGFuZGxlX3ByZXBhcmUoU3RyaW5nSW5mbyBz KQogCiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKKwkvKiBDaGVjayB0aGUgc3Rh dHVzIG9mIGFwcGx5IGJhY2tncm91bmQgd29ya2VyIGlmIGFueS4gKi8KKwlhcHBseV9iZ3dvcmtl cl9jaGVja19zdGF0dXMoKTsKKwogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWlu ZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhw cmVwYXJlX2RhdGEuZW5kX2xzbik7CiAKQEAgLTEwNjQsMTAgKzExNTcsNiBAQCBhcHBseV9oYW5k bGVfcm9sbGJhY2tfcHJlcGFyZWQoU3RyaW5nSW5mbyBzKQogCiAvKgogICogSGFuZGxlIFNUUkVB TSBQUkVQQVJFLgotICoKLSAqIExvZ2ljIGlzIGluIHR3byBwYXJ0czoKLSAqIDEuIFJlcGxheSBh bGwgdGhlIHNwb29sZWQgb3BlcmF0aW9ucwotICogMi4gTWFyayB0aGUgdHJhbnNhY3Rpb24gYXMg cHJlcGFyZWQKICAqLwogc3RhdGljIHZvaWQKIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShT dHJpbmdJbmZvIHMpCkBAIC0xMDg4LDI0ICsxMTc3LDc4IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1f cHJlcGFyZShTdHJpbmdJbmZvIHMpCiAJbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9wcmVwYXJlKHMs ICZwcmVwYXJlX2RhdGEpOwogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QocHJlcGFyZV9k YXRhLnhpZCwgcHJlcGFyZV9kYXRhLnByZXBhcmVfbHNuKTsKIAotCWVsb2coREVCVUcxLCAicmVj ZWl2ZWQgcHJlcGFyZSBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb24gJXUiLCBwcmVwYXJlX2RhdGEu eGlkKTsKKwlpZiAoYW1fYXBwbHlfYmd3b3JrZXIoKSkKKwl7CisJCS8qIE1hcmsgdGhlIHRyYW5z YWN0aW9uIGFzIHByZXBhcmVkLiAqLworCQlhcHBseV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5hbCgm cHJlcGFyZV9kYXRhKTsKIAotCS8qIFJlcGxheSBhbGwgdGhlIHNwb29sZWQgb3BlcmF0aW9ucy4g Ki8KLQlhcHBseV9zcG9vbGVkX21lc3NhZ2VzKHByZXBhcmVfZGF0YS54aWQsIHByZXBhcmVfZGF0 YS5wcmVwYXJlX2xzbik7CisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JLyogTWFy ayB0aGUgdHJhbnNhY3Rpb24gYXMgcHJlcGFyZWQuICovCi0JYXBwbHlfaGFuZGxlX3ByZXBhcmVf aW50ZXJuYWwoJnByZXBhcmVfZGF0YSk7CisJCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxzZSk7CiAK LQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJbGlzdF9mcmVlKHN1YnhhY3RsaXN0KTsK KwkJc3VieGFjdGxpc3QgPSBOSUw7CiAKLQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOworCQlh cHBseV9iZ3dvcmtlcl9zZXRfc3RhdHVzKEFQUExZX0JHV09SS0VSX0ZJTklTSEVEKTsKKwl9CisJ ZWxzZQorCXsKKwkJLyogVGhpcyBpcyB0aGUgbWFpbiBhcHBseSB3b3JrZXIuICovCisJCUFwcGx5 Qmd3b3JrZXJJbmZvICp3c3RhdGUgPSBhcHBseV9iZ3dvcmtlcl9maW5kKHByZXBhcmVfZGF0YS54 aWQpOwogCi0Jc3RvcmVfZmx1c2hfcG9zaXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24pOworCQll bG9nKERFQlVHMSwgInJlY2VpdmVkIHByZXBhcmUgZm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9uICV1 IiwKKwkJCSBwcmVwYXJlX2RhdGEueGlkKTsKKworCQkvKgorCQkgKiBDaGVjayBpZiB3ZSBhcmUg cHJvY2Vzc2luZyB0aGlzIHRyYW5zYWN0aW9uIGluIGFuIGFwcGx5IGJhY2tncm91bmQKKwkJICog d29ya2VyIGFuZCBpZiBzbywgc2VuZCB0aGUgY2hhbmdlcyB0byB0aGF0IHdvcmtlci4KKwkJICov CisJCWlmICh3c3RhdGUpCisJCXsKKwkJCS8qIFNlbmQgU1RSRUFNIFBSRVBBUkUgbWVzc2FnZSB0 byB0aGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuICovCisJCQlhcHBseV9iZ3dvcmtlcl9zZW5k X2RhdGEod3N0YXRlLCBzLT5sZW4sIHMtPmRhdGEpOworCisJCQkvKgorCQkJICogQWZ0ZXIgc2Vu ZGluZyB0aGUgZGF0YSB0byB0aGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIsIHdhaXQgZm9yCisJ CQkgKiB0aGF0IHdvcmtlciB0byBmaW5pc2guIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIG1haW50YWlu IGNvbW1pdAorCQkJICogb3JkZXIgd2hpY2ggYXZvaWRzIGZhaWx1cmVzIGR1ZSB0byB0cmFuc2Fj dGlvbiBkZXBlbmRlbmNpZXMgYW5kCisJCQkgKiBkZWFkbG9ja3MuCisJCQkgKi8KKwkJCWFwcGx5 X2Jnd29ya2VyX3dhaXRfZm9yKHdzdGF0ZSwgQVBQTFlfQkdXT1JLRVJfRklOSVNIRUQpOworCQkJ YXBwbHlfYmd3b3JrZXJfZnJlZSh3c3RhdGUpOworCisJCQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFs c2UpOworCQkJc3RvcmVfZmx1c2hfcG9zaXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24pOworCQl9 CisJCWVsc2UKKwkJeworCQkJLyoKKwkJCSAqIFRoZSB0cmFuc2FjdGlvbiBoYXMgYmVlbiBzZXJp YWxpemVkIHRvIGZpbGUsIHNvIHJlcGxheSBhbGwgdGhlCisJCQkgKiBzcG9vbGVkIG9wZXJhdGlv bnMuCisJCQkgKi8KKwkJCWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMocHJlcGFyZV9kYXRhLnhpZCwg cHJlcGFyZV9kYXRhLnByZXBhcmVfbHNuKTsKKworCQkJLyogTWFyayB0aGUgdHJhbnNhY3Rpb24g YXMgcHJlcGFyZWQuICovCisJCQlhcHBseV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5hbCgmcHJlcGFy ZV9kYXRhKTsKKworCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkJCXBnc3RhdF9y ZXBvcnRfc3RhdChmYWxzZSk7CisKKwkJCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0 YS5lbmRfbHNuKTsKKworCQkJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CisKKwkJCS8q IFVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5m by4gKi8KKwkJCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQs IHByZXBhcmVfZGF0YS54aWQpOworCQl9CisJfQogCiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0g ZmFsc2U7CisJc3RyZWFtX2FwcGx5X3dvcmtlciA9IE5VTEw7CiAKLQkvKiB1bmxpbmsgdGhlIGZp bGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCi0Jc3RyZWFt X2NsZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgcHJlcGFyZV9kYXRhLnhp ZCk7CisJLyogQ2hlY2sgdGhlIHN0YXR1cyBvZiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBpZiBh bnkuICovCisJYXBwbHlfYmd3b3JrZXJfY2hlY2tfc3RhdHVzKCk7CiAKIAkvKiBQcm9jZXNzIGFu eSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXBy b2Nlc3Nfc3luY2luZ190YWJsZXMocHJlcGFyZV9kYXRhLmVuZF9sc24pOwpAQCAtMTE1NSwxNSAr MTI5OCw2IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RhcnQoU3RyaW5nSW5mbyBzKQogCQkJCShl cnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKIAkJCQkgZXJybXNnX2ludGVybmFs KCJkdXBsaWNhdGUgU1RSRUFNIFNUQVJUIG1lc3NhZ2UiKSkpOwogCi0JLyoKLQkgKiBTdGFydCBh IHRyYW5zYWN0aW9uIG9uIHN0cmVhbSBzdGFydCwgdGhpcyB0cmFuc2FjdGlvbiB3aWxsIGJlIGNv bW1pdHRlZAotCSAqIG9uIHRoZSBzdHJlYW0gc3RvcCB1bmxlc3MgaXQgaXMgYSB0YWJsZXN5bmMg d29ya2VyIGluIHdoaWNoIGNhc2UgaXQKLQkgKiB3aWxsIGJlIGNvbW1pdHRlZCBhZnRlciBwcm9j ZXNzaW5nIGFsbCB0aGUgbWVzc2FnZXMuIFdlIG5lZWQgdGhlCi0JICogdHJhbnNhY3Rpb24gZm9y IGhhbmRsaW5nIHRoZSBidWZmaWxlLCB1c2VkIGZvciBzZXJpYWxpemluZyB0aGUKLQkgKiBzdHJl YW1pbmcgZGF0YSBhbmQgc3VieGFjdCBpbmZvLgotCSAqLwotCWJlZ2luX3JlcGxpY2F0aW9uX3N0 ZXAoKTsKLQogCS8qIG5vdGlmeSBoYW5kbGUgbWV0aG9kcyB3ZSdyZSBwcm9jZXNzaW5nIGEgcmVt b3RlIHRyYW5zYWN0aW9uICovCiAJaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gPSB0cnVlOwogCkBA IC0xMTc3LDM2ICsxMzExLDkzIEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RhcnQoU3RyaW5nSW5m byBzKQogCiAJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChzdHJlYW1feGlkLCBJbnZhbGlk WExvZ1JlY1B0cik7CiAKLQkvKgotCSAqIEluaXRpYWxpemUgdGhlIHdvcmtlcidzIHN0cmVhbV9m aWxlc2V0IGlmIHdlIGhhdmVuJ3QgeWV0LiBUaGlzIHdpbGwgYmUKLQkgKiB1c2VkIGZvciB0aGUg ZW50aXJlIGR1cmF0aW9uIG9mIHRoZSB3b3JrZXIgc28gY3JlYXRlIGl0IGluIGEgcGVybWFuZW50 Ci0JICogY29udGV4dC4gV2UgY3JlYXRlIHRoaXMgb24gdGhlIHZlcnkgZmlyc3Qgc3RyZWFtaW5n IG1lc3NhZ2UgZnJvbSBhbnkKLQkgKiB0cmFuc2FjdGlvbiBhbmQgdGhlbiB1c2UgaXQgZm9yIHRo aXMgYW5kIG90aGVyIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMuCi0JICogTm93LCB3ZSBjb3VsZCBj cmVhdGUgYSBmaWxlc2V0IGF0IHRoZSBzdGFydCBvZiB0aGUgd29ya2VyIGFzIHdlbGwgYnV0Ci0J ICogdGhlbiB3ZSB3b24ndCBiZSBzdXJlIHRoYXQgaXQgd2lsbCBldmVyIGJlIHVzZWQuCi0JICov Ci0JaWYgKE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQgPT0gTlVMTCkKKwlpZiAo YW1fYXBwbHlfYmd3b3JrZXIoKSkKIAl7Ci0JCU1lbW9yeUNvbnRleHQgb2xkY3R4OwotCi0JCW9s ZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCQkvKgorCQkgKiBN YWtlIHN1cmUgdGhlIGhhbmRsZSBhcHBseV9kaXNwYXRjaCBtZXRob2RzIGFyZSBhd2FyZSB3ZSdy ZSBpbiBhCisJCSAqIHJlbW90ZSB0cmFuc2FjdGlvbi4KKwkJICovCisJCWluX3JlbW90ZV90cmFu c2FjdGlvbiA9IHRydWU7CiAKLQkJTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCA9 IHBhbGxvYyhzaXplb2YoRmlsZVNldCkpOwotCQlGaWxlU2V0SW5pdChNeUxvZ2ljYWxSZXBXb3Jr ZXItPnN0cmVhbV9maWxlc2V0KTsKKwkJLyogQmVnaW4gdGhlIHRyYW5zYWN0aW9uLiAqLworCQlB Y2NlcHRJbnZhbGlkYXRpb25NZXNzYWdlcygpOworCQltYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9u KCk7CiAKLQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CisJCVN0YXJ0VHJhbnNhY3Rp b25Db21tYW5kKCk7CisJCUJlZ2luVHJhbnNhY3Rpb25CbG9jaygpOworCQlDb21taXRUcmFuc2Fj dGlvbkNvbW1hbmQoKTsKIAl9CisJZWxzZQorCXsKKwkJLyoKKwkJICogVGhpcyBpcyB0aGUgbWFp biBhcHBseSB3b3JrZXIuIENoZWNrIGlmIHRoZXJlIGlzIGFueSBmcmVlIGFwcGx5CisJCSAqIGJh Y2tncm91bmQgd29ya2VyIHdlIGNhbiB1c2UgdG8gcHJvY2VzcyB0aGlzIHRyYW5zYWN0aW9uLgor CQkgKi8KKwkJaWYgKGZpcnN0X3NlZ21lbnQpCisJCQlzdHJlYW1fYXBwbHlfd29ya2VyID0gYXBw bHlfYmd3b3JrZXJfc3RhcnQoc3RyZWFtX3hpZCk7CisJCWVsc2UKKwkJCXN0cmVhbV9hcHBseV93 b3JrZXIgPSBhcHBseV9iZ3dvcmtlcl9maW5kKHN0cmVhbV94aWQpOwogCi0JLyogb3BlbiB0aGUg c3Bvb2wgZmlsZSBmb3IgdGhpcyB0cmFuc2FjdGlvbiAqLwotCXN0cmVhbV9vcGVuX2ZpbGUoTXlM b2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCwgZmlyc3Rfc2VnbWVudCk7CisJCWlm IChzdHJlYW1fYXBwbHlfd29ya2VyKQorCQl7CisJCQkvKgorCQkJICogSWYgd2UgaGF2ZSBmb3Vu ZCBhIGZyZWUgd29ya2VyIG9yIGlmIHdlIGFyZSBhbHJlYWR5IGFwcGx5aW5nIHRoaXMKKwkJCSAq IHRyYW5zYWN0aW9uIGluIGFuIGFwcGx5IGJhY2tncm91bmQgd29ya2VyLCB0aGVuIHdlIHBhc3Mg dGhlIGRhdGEgdG8KKwkJCSAqIHRoYXQgd29ya2VyLgorCQkJICovCisJCQlpZiAoZmlyc3Rfc2Vn bWVudCkKKwkJCQlhcHBseV9iZ3dvcmtlcl9zZW5kX2RhdGEoc3RyZWFtX2FwcGx5X3dvcmtlciwg cy0+bGVuLCBzLT5kYXRhKTsKIAotCS8qIGlmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBzZWdtZW50 LCBvcGVuIGV4aXN0aW5nIHN1YnhhY3QgZmlsZSAqLwotCWlmICghZmlyc3Rfc2VnbWVudCkKLQkJ c3VieGFjdF9pbmZvX3JlYWQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCk7 CisJCQluY2hhbmdlcyA9IDA7CisJCQllbG9nKERFQlVHMSwgInN0YXJ0aW5nIHN0cmVhbWluZyBv ZiB4aWQgJXUiLCBzdHJlYW1feGlkKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBT aW5jZSBubyBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBpcyBhdmFpbGFibGUgZm9yIHRoZSBmaXJz dAorCQkJICogc3RyZWFtIHN0YXJ0LCBzZXJpYWxpemUgYWxsIHRoZSBjaGFuZ2VzIG9mIHRoZSB0 cmFuc2FjdGlvbi4KKwkJCSAqCisJCQkgKiBTdGFydCBhIHRyYW5zYWN0aW9uIG9uIHN0cmVhbSBz dGFydCwgdGhpcyB0cmFuc2FjdGlvbiB3aWxsIGJlCisJCQkgKiBjb21taXR0ZWQgb24gdGhlIHN0 cmVhbSBzdG9wIHVubGVzcyBpdCBpcyBhIHRhYmxlc3luYyB3b3JrZXIgaW4KKwkJCSAqIHdoaWNo IGNhc2UgaXQgd2lsbCBiZSBjb21taXR0ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBhbGwgdGhlCisJCQkg KiBtZXNzYWdlcy4gV2UgbmVlZCB0aGUgdHJhbnNhY3Rpb24gZm9yIGhhbmRsaW5nIHRoZSBidWZm aWxlLAorCQkJICogdXNlZCBmb3Igc2VyaWFsaXppbmcgdGhlIHN0cmVhbWluZyBkYXRhIGFuZCBz dWJ4YWN0IGluZm8uCisJCQkgKi8KKwkJCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAoKTsKIAotCXBn c3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfUlVOTklORywgTlVMTCk7CisJCQkvKgorCQkJICog SW5pdGlhbGl6ZSB0aGUgd29ya2VyJ3Mgc3RyZWFtX2ZpbGVzZXQgaWYgd2UgaGF2ZW4ndCB5ZXQu IFRoaXMgd2lsbAorCQkJICogYmUgdXNlZCBmb3IgdGhlIGVudGlyZSBkdXJhdGlvbiBvZiB0aGUg d29ya2VyIHNvIGNyZWF0ZSBpdCBpbiBhCisJCQkgKiBwZXJtYW5lbnQgY29udGV4dC4gV2UgY3Jl YXRlIHRoaXMgb24gdGhlIHZlcnkgZmlyc3Qgc3RyZWFtaW5nCisJCQkgKiBtZXNzYWdlIGZyb20g YW55IHRyYW5zYWN0aW9uIGFuZCB0aGVuIHVzZSBpdCBmb3IgdGhpcyBhbmQgb3RoZXIKKwkJCSAq IHN0cmVhbWluZyB0cmFuc2FjdGlvbnMuIE5vdywgd2UgY291bGQgY3JlYXRlIGEgZmlsZXNldCBh dCB0aGUgc3RhcnQKKwkJCSAqIG9mIHRoZSB3b3JrZXIgYXMgd2VsbCBidXQgdGhlbiB3ZSB3b24n dCBiZSBzdXJlIHRoYXQgaXQgd2lsbCBldmVyCisJCQkgKiBiZSB1c2VkLgorCQkJICovCisJCQlp ZiAoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCA9PSBOVUxMKQorCQkJeworCQkJ CU1lbW9yeUNvbnRleHQgb2xkY3R4OwogCi0JZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKKwkJCQlv bGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKKworCQkJCU15TG9n aWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQgPSBwYWxsb2Moc2l6ZW9mKEZpbGVTZXQpKTsK KwkJCQlGaWxlU2V0SW5pdChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0KTsKKwor CQkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCQkJfQorCisJCQkvKiBPcGVuIHRo ZSBzcG9vbCBmaWxlIGZvciB0aGlzIHRyYW5zYWN0aW9uLiAqLworCQkJc3RyZWFtX29wZW5fZmls ZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkLCBmaXJzdF9zZWdtZW50KTsK KworCQkJLyogSWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IHNlZ21lbnQsIG9wZW4gZXhpc3Rpbmcg c3VieGFjdCBmaWxlLiAqLworCQkJaWYgKCFmaXJzdF9zZWdtZW50KQorCQkJCXN1YnhhY3RfaW5m b19yZWFkKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOworCisJCQllbmRf cmVwbGljYXRpb25fc3RlcCgpOworCQl9CisJfQorCisJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShT VEFURV9SVU5OSU5HLCBOVUxMKTsKIH0KIAogLyoKQEAgLTEyMjAsNTMgKzE0MTEsNTIgQEAgYXBw bHlfaGFuZGxlX3N0cmVhbV9zdG9wKFN0cmluZ0luZm8gcykKIAkJCQkoZXJyY29kZShFUlJDT0RF X1BST1RPQ09MX1ZJT0xBVElPTiksCiAJCQkJIGVycm1zZ19pbnRlcm5hbCgiU1RSRUFNIFNUT1Ag bWVzc2FnZSB3aXRob3V0IFNUUkVBTSBTVEFSVCIpKSk7CiAKLQkvKgotCSAqIENsb3NlIHRoZSBm aWxlIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzLCBhbmQgc2VyaWFsaXplIGluZm9ybWF0aW9uIGFi b3V0Ci0JICogc3VieGFjdHMgZm9yIHRoZSB0b3BsZXZlbCB0cmFuc2FjdGlvbi4KLQkgKi8KLQlz dWJ4YWN0X2luZm9fd3JpdGUoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCk7 Ci0Jc3RyZWFtX2Nsb3NlX2ZpbGUoKTsKKwlpZiAoYXBwbHlfYmd3b3JrZXJfYWN0aXZlKCkpCisJ eworCQljaGFyIGFjdGlvbiA9IExPR0lDQUxfUkVQX01TR19TVFJFQU1fU1RPUDsKIAotCS8qIFdl IG11c3QgYmUgaW4gYSB2YWxpZCB0cmFuc2FjdGlvbiBzdGF0ZSAqLwotCUFzc2VydChJc1RyYW5z YWN0aW9uU3RhdGUoKSk7CisJCWFwcGx5X2Jnd29ya2VyX3NlbmRfZGF0YShzdHJlYW1fYXBwbHlf d29ya2VyLCAxLCAmYWN0aW9uKTsKIAotCS8qIENvbW1pdCB0aGUgcGVyLXN0cmVhbSB0cmFuc2Fj dGlvbiAqLwotCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQllbG9nKERFQlVHMSwgInN0 b3BwZWQgc3RyZWFtaW5nIG9mIHhpZCAldSwgJXUgY2hhbmdlcyBzdHJlYW1lZCIsIHN0cmVhbV94 aWQsIG5jaGFuZ2VzKTsKKwl9CisJZWxzZQorCXsKKwkJLyoKKwkJICogQ2xvc2UgdGhlIGZpbGUg d2l0aCBzZXJpYWxpemVkIGNoYW5nZXMsIGFuZCBzZXJpYWxpemUgaW5mb3JtYXRpb24KKwkJICog YWJvdXQgc3VieGFjdHMgZm9yIHRoZSB0b3BsZXZlbCB0cmFuc2FjdGlvbi4KKwkJICovCisJCXN1 YnhhY3RfaW5mb193cml0ZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkKTsK KwkJc3RyZWFtX2Nsb3NlX2ZpbGUoKTsKIAotCWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gZmFs c2U7CisJCS8qIFdlIG11c3QgYmUgaW4gYSB2YWxpZCB0cmFuc2FjdGlvbiBzdGF0ZSAqLworCQlB c3NlcnQoSXNUcmFuc2FjdGlvblN0YXRlKCkpOworCisJCS8qIENvbW1pdCB0aGUgcGVyLXN0cmVh bSB0cmFuc2FjdGlvbiAqLworCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qIFJl c2V0IHBlci1zdHJlYW0gY29udGV4dCAqLwotCU1lbW9yeUNvbnRleHRSZXNldChMb2dpY2FsU3Ry ZWFtaW5nQ29udGV4dCk7CisJCS8qIFJlc2V0IHBlci1zdHJlYW0gY29udGV4dCAqLworCQlNZW1v cnlDb250ZXh0UmVzZXQoTG9naWNhbFN0cmVhbWluZ0NvbnRleHQpOworCX0KKworCWluX3N0cmVh bWVkX3RyYW5zYWN0aW9uID0gZmFsc2U7CisJc3RyZWFtX2FwcGx5X3dvcmtlciA9IE5VTEw7CiAK IAlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5VTEwpOwogCXJlc2V0X2FwcGx5 X2Vycm9yX2NvbnRleHRfaW5mbygpOwogfQogCiAvKgotICogSGFuZGxlIFNUUkVBTSBhYm9ydCBt ZXNzYWdlLgorICogSGFuZGxlIFNUUkVBTSBBQk9SVCBtZXNzYWdlIHdoZW4gdGhlIHRyYW5zYWN0 aW9uIHdhcyBzcGlsbGVkIHRvIGRpc2suCiAgKi8KIHN0YXRpYyB2b2lkCi1hcHBseV9oYW5kbGVf c3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKK3NlcmlhbGl6ZV9zdHJlYW1fYWJvcnQoVHJhbnNh Y3Rpb25JZCB4aWQsIFRyYW5zYWN0aW9uSWQgc3VieGlkKQogewotCVRyYW5zYWN0aW9uSWQgeGlk OwotCVRyYW5zYWN0aW9uSWQgc3VieGlkOwotCi0JaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9u KQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFU SU9OKSwKLQkJCQkgZXJybXNnX2ludGVybmFsKCJTVFJFQU0gQUJPUlQgbWVzc2FnZSB3aXRob3V0 IFNUUkVBTSBTVE9QIikpKTsKLQotCWxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQocywgJnhp ZCwgJnN1YnhpZCk7Ci0KIAkvKgogCSAqIElmIHRoZSB0d28gWElEcyBhcmUgdGhlIHNhbWUsIGl0 J3MgaW4gZmFjdCBhYm9ydCBvZiB0b3BsZXZlbCB4YWN0LCBzbwogCSAqIGp1c3QgZGVsZXRlIHRo ZSBmaWxlcyB3aXRoIHNlcmlhbGl6ZWQgaW5mby4KIAkgKi8KIAlpZiAoeGlkID09IHN1YnhpZCkK LQl7Ci0JCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QoeGlkLCBJbnZhbGlkWExvZ1JlY1B0 cik7CiAJCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhp ZCk7Ci0JfQogCWVsc2UKIAl7CiAJCS8qCkBAIC0xMjkwLDggKzE0ODAsNiBAQCBhcHBseV9oYW5k bGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIAkJYm9vbAkJZm91bmQgPSBmYWxzZTsKIAkJ Y2hhcgkJcGF0aFtNQVhQR1BBVEhdOwogCi0JCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3Qo c3VieGlkLCBJbnZhbGlkWExvZ1JlY1B0cik7Ci0KIAkJc3ViaWR4ID0gLTE7CiAJCWJlZ2luX3Jl cGxpY2F0aW9uX3N0ZXAoKTsKIAkJc3VieGFjdF9pbmZvX3JlYWQoTXlMb2dpY2FsUmVwV29ya2Vy LT5zdWJpZCwgeGlkKTsKQEAgLTEzMTYsNyArMTUwNCw2IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1f YWJvcnQoU3RyaW5nSW5mbyBzKQogCQkJY2xlYW51cF9zdWJ4YWN0X2luZm8oKTsKIAkJCWVuZF9y ZXBsaWNhdGlvbl9zdGVwKCk7CiAJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKLQkJCXJl c2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOwogCQkJcmV0dXJuOwogCQl9CiAKQEAgLTEz MzksNiArMTUyNiwxNDQgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMp CiAJCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7CiAJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgp OwogCX0KK30KKworLyoKKyAqIEhhbmRsZSBTVFJFQU0gQUJPUlQgbWVzc2FnZS4KKyAqLworc3Rh dGljIHZvaWQKK2FwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQoreworCVRy YW5zYWN0aW9uSWQgeGlkOworCVRyYW5zYWN0aW9uSWQgc3VieGlkOworCUxvZ2ljYWxSZXBTdHJl YW1BYm9ydERhdGEgYWJvcnRfZGF0YTsKKwlib29sIHJlYWRfYWJvcnRfbHNuID0gZmFsc2U7CisK KwlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVy cmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAorCQkJCSBlcnJtc2dfaW50ZXJuYWwo IlNUUkVBTSBBQk9SVCBtZXNzYWdlIHdpdGhvdXQgU1RSRUFNIFNUT1AiKSkpOworCisJLyogQ2hl Y2sgd2hldGhlciB0aGUgcHVibGlzaGVyIHNlbmRzIGFib3J0X2xzbiBhbmQgYWJvcnRfdGltZS4g Ki8KKwlpZiAoYW1fYXBwbHlfYmd3b3JrZXIoKSkKKwkJcmVhZF9hYm9ydF9sc24gPSBNeVBhcmFs bGVsU2hhcmVkLT5wcm90b192ZXJzaW9uID49CisJCQkJCQkgTE9HSUNBTFJFUF9QUk9UT19TVFJF QU1fUEFSQUxMRUxfVkVSU0lPTl9OVU07CisKKwlsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0 KHMsICZhYm9ydF9kYXRhLCByZWFkX2Fib3J0X2xzbik7CisKKwl4aWQgPSBhYm9ydF9kYXRhLnhp ZDsKKwlzdWJ4aWQgPSBhYm9ydF9kYXRhLnN1YnhpZDsKKworCXNldF9hcHBseV9lcnJvcl9jb250 ZXh0X3hhY3Qoc3VieGlkLCBhYm9ydF9kYXRhLmFib3J0X2xzbik7CisKKwlpZiAoYW1fYXBwbHlf Ymd3b3JrZXIoKSkKKwl7CisJCWVsb2coREVCVUcxLCAiW0FwcGx5IEJHVyAjJXVdIGFib3J0aW5n IGN1cnJlbnQgdHJhbnNhY3Rpb24geGlkPSV1LCBzdWJ4aWQ9JXUiLAorCQkJIE15UGFyYWxsZWxT aGFyZWQtPndvcmtlcl9pZCAsIEdldEN1cnJlbnRUcmFuc2FjdGlvbklkSWZBbnkoKSwKKwkJCSBH ZXRDdXJyZW50U3ViVHJhbnNhY3Rpb25JZCgpKTsKKworCQkvKgorCQkgKiBVcGRhdGUgb3JpZ2lu IHN0YXRlIHNvIHdlIGNhbiByZXN0YXJ0IHN0cmVhbWluZyBmcm9tIGNvcnJlY3QKKwkJICogcG9z aXRpb24gaW4gY2FzZSBvZiBjcmFzaC4KKwkJICovCisJCWlmIChyZWFkX2Fib3J0X2xzbikKKwkJ eworCQkJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl9sc24gPSBhYm9ydF9kYXRhLmFib3J0X2xz bjsKKwkJCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fdGltZXN0YW1wID0gYWJvcnRfZGF0YS5h Ym9ydF90aW1lOworCQl9CisKKwkJLyoKKwkJICogSWYgdGhlIHR3byBYSURzIGFyZSB0aGUgc2Ft ZSwgaXQncyBpbiBmYWN0IGFib3J0IG9mIHRvcGxldmVsIHhhY3QsCisJCSAqIHNvIGp1c3QgZnJl ZSB0aGUgc3VieGFjdGxpc3QuCisJCSAqLworCQlpZiAoc3VieGlkID09IHhpZCkKKwkJeworCQkJ QWJvcnRDdXJyZW50VHJhbnNhY3Rpb24oKTsKKworCQkJRW5kVHJhbnNhY3Rpb25CbG9jayhmYWxz ZSk7CisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQkJaW5fcmVtb3RlX3RyYW5z YWN0aW9uID0gZmFsc2U7CisJCQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5V TEwpOworCisJCQlsaXN0X2ZyZWUoc3VieGFjdGxpc3QpOworCQkJc3VieGFjdGxpc3QgPSBOSUw7 CisKKwkJCWFwcGx5X2Jnd29ya2VyX3NldF9zdGF0dXMoQVBQTFlfQkdXT1JLRVJfRklOSVNIRUQp OworCQl9CisJCWVsc2UKKwkJeworCQkJLyoKKwkJCSAqIE9LLCBzbyBpdCdzIGEgc3VieGFjdC4g Um9sbGJhY2sgdG8gdGhlIHNhdmVwb2ludC4KKwkJCSAqCisJCQkgKiBXZSBhbHNvIG5lZWQgdG8g cmVhZCB0aGUgc3VieGFjdGxpc3QsIGRldGVybWluZSB0aGUgb2Zmc2V0CisJCQkgKiB0cmFja2Vk IGZvciB0aGUgc3VieGFjdCwgYW5kIHRydW5jYXRlIHRoZSBsaXN0LgorCQkJICovCisJCQlpbnQJ CQlpOworCQkJYm9vbAkJZm91bmQgPSBmYWxzZTsKKwkJCWNoYXIJCXNwbmFtZVtNQVhQR1BBVEhd OworCisJCQlhcHBseV9iZ3dvcmtlcl9zYXZlcG9pbnRfbmFtZShNeVN1YnNjcmlwdGlvbi0+b2lk LCBzdWJ4aWQsIHNwbmFtZSwKKwkJCQkJCQkJCQkgIHNpemVvZihzcG5hbWUpKTsKKworCQkJZWxv ZyhERUJVRzEsICJbQXBwbHkgQkdXICMldV0gcm9sbGluZyBiYWNrIHRvIHNhdmVwb2ludCAlcyIs CisJCQkJIE15UGFyYWxsZWxTaGFyZWQtPndvcmtlcl9pZCwgc3BuYW1lKTsKKworCQkJZm9yIChp ID0gbGlzdF9sZW5ndGgoc3VieGFjdGxpc3QpIC0gMTsgaSA+PSAwOyBpLS0pCisJCQl7CisJCQkJ eGlkID0gKFRyYW5zYWN0aW9uSWQpIGxpc3RfbnRoX2ludChzdWJ4YWN0bGlzdCwgaSk7CisJCQkJ aWYgKHhpZCA9PSBzdWJ4aWQpCisJCQkJeworCQkJCQlmb3VuZCA9IHRydWU7CisJCQkJCWJyZWFr OworCQkJCX0KKwkJCX0KKworCQkJaWYgKGZvdW5kKQorCQkJeworCQkJCVJvbGxiYWNrVG9TYXZl cG9pbnQoc3BuYW1lKTsKKwkJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJCQlzdWJ4 YWN0bGlzdCA9IGxpc3RfdHJ1bmNhdGUoc3VieGFjdGxpc3QsIGkgKyAxKTsKKwkJCX0KKworCQkJ cGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFSU5UUkFOU0FDVElPTiwgTlVMTCk7CisJ CX0KKwl9CisJZWxzZQorCXsKKwkJLyogVGhpcyBpcyB0aGUgbWFpbiBhcHBseSB3b3JrZXIuICov CisJCUFwcGx5Qmd3b3JrZXJJbmZvICp3c3RhdGUgPSBhcHBseV9iZ3dvcmtlcl9maW5kKHhpZCk7 CisKKwkJLyoKKwkJICogQ2hlY2sgaWYgd2UgYXJlIHByb2Nlc3NpbmcgdGhpcyB0cmFuc2FjdGlv biBpbiBhbiBhcHBseSBiYWNrZ3JvdW5kCisJCSAqIHdvcmtlciBhbmQgaWYgc28sIHNlbmQgdGhl IGNoYW5nZXMgdG8gdGhhdCB3b3JrZXIuCisJCSAqLworCQlpZiAod3N0YXRlKQorCQl7CisJCQkv KiBTZW5kIFNUUkVBTSBBQk9SVCBtZXNzYWdlIHRvIHRoZSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtl ci4gKi8KKwkJCWFwcGx5X2Jnd29ya2VyX3NlbmRfZGF0YSh3c3RhdGUsIHMtPmxlbiwgcy0+ZGF0 YSk7CisKKwkJCS8qCisJCQkgKiBBZnRlciBzZW5kaW5nIHRoZSBkYXRhIHRvIHRoZSBhcHBseSBi YWNrZ3JvdW5kIHdvcmtlciwgd2FpdCBmb3IKKwkJCSAqIHRoYXQgd29ya2VyIHRvIGZpbmlzaC4g VGhpcyBpcyBuZWNlc3NhcnkgdG8gbWFpbnRhaW4gY29tbWl0CisJCQkgKiBvcmRlciB3aGljaCBh dm9pZHMgZmFpbHVyZXMgZHVlIHRvIHRyYW5zYWN0aW9uIGRlcGVuZGVuY2llcyBhbmQKKwkJCSAq IGRlYWRsb2Nrcy4KKwkJCSAqLworCQkJaWYgKHN1YnhpZCA9PSB4aWQpCisJCQl7CisJCQkJYXBw bHlfYmd3b3JrZXJfd2FpdF9mb3Iod3N0YXRlLCBBUFBMWV9CR1dPUktFUl9GSU5JU0hFRCk7CisJ CQkJYXBwbHlfYmd3b3JrZXJfZnJlZSh3c3RhdGUpOworCQkJfQorCQl9CisJCWVsc2UKKwkJewor CQkJLyoKKwkJCSAqIFdlIGFyZSBpbiBtYWluIGFwcGx5IHdvcmtlciBhbmQgdGhlIHRyYW5zYWN0 aW9uIGhhcyBiZWVuCisJCQkgKiBzZXJpYWxpemVkIHRvIGZpbGUuCisJCQkgKi8KKwkJCXNlcmlh bGl6ZV9zdHJlYW1fYWJvcnQoeGlkLCBzdWJ4aWQpOworCQl9CisJfQogCiAJcmVzZXRfYXBwbHlf ZXJyb3JfY29udGV4dF9pbmZvKCk7CiB9CkBAIC0xNDY4LDggKzE3OTMsOCBAQCBhcHBseV9zcG9v bGVkX21lc3NhZ2VzKFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKIHN0YXRpYyB2 b2lkCiBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIHMpCiB7Ci0JVHJhbnNh Y3Rpb25JZCB4aWQ7CiAJTG9naWNhbFJlcENvbW1pdERhdGEgY29tbWl0X2RhdGE7CisJVHJhbnNh Y3Rpb25JZCB4aWQ7CiAKIAlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCiAJCWVyZXBvcnQo RVJST1IsCkBAIC0xNDc5LDE0ICsxODA0LDgxIEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fY29tbWl0 KFN0cmluZ0luZm8gcykKIAl4aWQgPSBsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2NvbW1pdChzLCAm Y29tbWl0X2RhdGEpOwogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QoeGlkLCBjb21taXRf ZGF0YS5jb21taXRfbHNuKTsKIAotCWVsb2coREVCVUcxLCAicmVjZWl2ZWQgY29tbWl0IGZvciBz dHJlYW1lZCB0cmFuc2FjdGlvbiAldSIsIHhpZCk7CisJaWYgKGFtX2FwcGx5X2Jnd29ya2VyKCkp CisJeworCQkvKgorCQkgKiBVcGRhdGUgb3JpZ2luIHN0YXRlIHNvIHdlIGNhbiByZXN0YXJ0IHN0 cmVhbWluZyBmcm9tIGNvcnJlY3QKKwkJICogcG9zaXRpb24gaW4gY2FzZSBvZiBjcmFzaC4KKwkJ ICovCisJCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fbHNuID0gY29tbWl0X2RhdGEuZW5kX2xz bjsKKwkJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl90aW1lc3RhbXAgPSBjb21taXRfZGF0YS5j b21taXR0aW1lOworCisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQlFbmRUcmFuc2Fj dGlvbkJsb2NrKGZhbHNlKTsKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQlhcHBs eV9zcG9vbGVkX21lc3NhZ2VzKHhpZCwgY29tbWl0X2RhdGEuY29tbWl0X2xzbik7CisJCWluX3Jl bW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogCi0JYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5h bCgmY29tbWl0X2RhdGEpOworCQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOworCisJCWxpc3Rf ZnJlZShzdWJ4YWN0bGlzdCk7CisJCXN1YnhhY3RsaXN0ID0gTklMOworCisJCWFwcGx5X2Jnd29y a2VyX3NldF9zdGF0dXMoQVBQTFlfQkdXT1JLRVJfRklOSVNIRUQpOworCX0KKwllbHNlCisJewor CQkvKiBUaGlzIGlzIHRoZSBtYWluIGFwcGx5IHdvcmtlci4gKi8KKwkJQXBwbHlCZ3dvcmtlcklu Zm8gKndzdGF0ZSA9IGFwcGx5X2Jnd29ya2VyX2ZpbmQoeGlkKTsKIAotCS8qIHVubGluayB0aGUg ZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5mbyAqLwotCXN0cmVh bV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7CisJCWVsb2co REVCVUcxLCAicmVjZWl2ZWQgY29tbWl0IGZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbiAldSIsIHhp ZCk7CisKKwkJLyoKKwkJICogQ2hlY2sgaWYgd2UgYXJlIHByb2Nlc3NpbmcgdGhpcyB0cmFuc2Fj dGlvbiBpbiBhbiBhcHBseSBiYWNrZ3JvdW5kCisJCSAqIHdvcmtlciBhbmQgaWYgc28sIHNlbmQg dGhlIGNoYW5nZXMgdG8gdGhhdCB3b3JrZXIuCisJCSAqLworCQlpZiAod3N0YXRlKQorCQl7CisJ CQkvKiBTZW5kIFNUUkVBTSBDT01NSVQgbWVzc2FnZSB0byB0aGUgYXBwbHkgYmFja2dyb3VuZCB3 b3JrZXIuICovCisJCQlhcHBseV9iZ3dvcmtlcl9zZW5kX2RhdGEod3N0YXRlLCBzLT5sZW4sIHMt PmRhdGEpOworCisJCQkvKgorCQkJICogQWZ0ZXIgc2VuZGluZyB0aGUgZGF0YSB0byB0aGUgYXBw bHkgYmFja2dyb3VuZCB3b3JrZXIsIHdhaXQgZm9yCisJCQkgKiB0aGF0IHdvcmtlciB0byBmaW5p c2guIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIG1haW50YWluIGNvbW1pdAorCQkJICogb3JkZXIgd2hp Y2ggYXZvaWRzIGZhaWx1cmVzIGR1ZSB0byB0cmFuc2FjdGlvbiBkZXBlbmRlbmNpZXMgYW5kCisJ CQkgKiBkZWFkbG9ja3MuCisJCQkgKi8KKwkJCWFwcGx5X2Jnd29ya2VyX3dhaXRfZm9yKHdzdGF0 ZSwgQVBQTFlfQkdXT1JLRVJfRklOSVNIRUQpOworCisJCQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFs c2UpOworCQkJc3RvcmVfZmx1c2hfcG9zaXRpb24oY29tbWl0X2RhdGEuZW5kX2xzbik7CisJCQlz dG9wX3NraXBwaW5nX2NoYW5nZXMoKTsKKworCQkJYXBwbHlfYmd3b3JrZXJfZnJlZSh3c3RhdGUp OworCisJCQkvKgorCQkJICogVGhlIHRyYW5zYWN0aW9uIGlzIGVpdGhlciBub24tZW1wdHkgb3Ig c2tpcHBlZCwgc28gd2UgY2xlYXIgdGhlCisJCQkgKiBzdWJza2lwbHNuLgorCQkJICovCisJCQlj bGVhcl9zdWJzY3JpcHRpb25fc2tpcF9sc24oY29tbWl0X2RhdGEuY29tbWl0X2xzbik7CisJCX0K KwkJZWxzZQorCQl7CisJCQkvKgorCQkJICogVGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVuIHNlcmlh bGl6ZWQgdG8gZmlsZSwgc28gcmVwbGF5IGFsbCB0aGUKKwkJCSAqIHNwb29sZWQgb3BlcmF0aW9u cy4KKwkJCSAqLworCQkJYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyh4aWQsIGNvbW1pdF9kYXRhLmNv bW1pdF9sc24pOworCisJCQlhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0 YSk7CisKKwkJCS8qIFVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5k IHN1YnhhY3QgaW5mby4gKi8KKwkJCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdv cmtlci0+c3ViaWQsIHhpZCk7CisJCX0KKwl9CisKKwkvKiBDaGVjayB0aGUgc3RhdHVzIG9mIGFw cGx5IGJhY2tncm91bmQgd29ya2VyIGlmIGFueS4gKi8KKwlhcHBseV9iZ3dvcmtlcl9jaGVja19z dGF0dXMoKTsKIAogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJv bml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhjb21taXRfZGF0 YS5lbmRfbHNuKTsKQEAgLTI0NjcsNyArMjg1OSw3IEBAIGFwcGx5X2hhbmRsZV90cnVuY2F0ZShT dHJpbmdJbmZvIHMpCiAvKgogICogTG9naWNhbCByZXBsaWNhdGlvbiBwcm90b2NvbCBtZXNzYWdl IGRpc3BhdGNoZXIuCiAgKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBhcHBseV9kaXNwYXRjaChTdHJp bmdJbmZvIHMpCiB7CiAJTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9uID0gcHFfZ2V0bXNnYnl0ZShz KTsKQEAgLTI2MzYsNiArMzAyOCwxMCBAQCBzdG9yZV9mbHVzaF9wb3NpdGlvbihYTG9nUmVjUHRy IHJlbW90ZV9sc24pCiB7CiAJRmx1c2hQb3NpdGlvbiAqZmx1c2hwb3M7CiAKKwkvKiBTa2lwIGlm IG5vdCB0aGUgbWFpbiBhcHBseSB3b3JrZXIgKi8KKwlpZiAoYW1fYXBwbHlfYmd3b3JrZXIoKSkK KwkJcmV0dXJuOworCiAJLyogTmVlZCB0byBkbyB0aGlzIGluIHBlcm1hbmVudCBjb250ZXh0ICov CiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CiAKQEAgLTI2NTAsNyArMzA0 Niw3IEBAIHN0b3JlX2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIgcmVtb3RlX2xzbikKIAogCiAv KiBVcGRhdGUgc3RhdGlzdGljcyBvZiB0aGUgd29ya2VyLiAqLwotc3RhdGljIHZvaWQKK3ZvaWQK IFVwZGF0ZVdvcmtlclN0YXRzKFhMb2dSZWNQdHIgbGFzdF9sc24sIFRpbWVzdGFtcFR6IHNlbmRf dGltZSwgYm9vbCByZXBseSkKIHsKIAlNeUxvZ2ljYWxSZXBXb3JrZXItPmxhc3RfbHNuID0gbGFz dF9sc247CkBAIC0yODEyLDYgKzMyMDgsOSBAQCBMb2dpY2FsUmVwQXBwbHlMb29wKFhMb2dSZWNQ dHIgbGFzdF9yZWNlaXZlZCkKIAkJCUFjY2VwdEludmFsaWRhdGlvbk1lc3NhZ2VzKCk7CiAJCQlt YXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKCk7CiAKKwkJCS8qIENoZWNrIHRoZSBzdGF0dXMgb2Yg YXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgaWYgYW55LiAqLworCQkJYXBwbHlfYmd3b3JrZXJfY2hl Y2tfc3RhdHVzKCk7CisKIAkJCS8qIFByb2Nlc3MgYW55IHRhYmxlIHN5bmNocm9uaXphdGlvbiBj aGFuZ2VzLiAqLwogCQkJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhsYXN0X3JlY2VpdmVkKTsKIAkJ fQpAQCAtMzExNCw3ICszNTEzLDcgQEAgbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKQog LyoKICAqIENhbGxiYWNrIGZyb20gc3Vic2NyaXB0aW9uIHN5c2NhY2hlIGludmFsaWRhdGlvbi4K ICAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIHN1YnNjcmlwdGlvbl9jaGFuZ2VfY2IoRGF0dW0gYXJn LCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKIHsKIAlNeVN1YnNjcmlwdGlvblZhbGlk ID0gZmFsc2U7CkBAIC0zNTY5LDM3ICszOTY4LDE0IEBAIHN0YXJ0X2FwcGx5KFhMb2dSZWNQdHIg b3JpZ2luX3N0YXJ0cG9zKQogCVBHX0VORF9UUlkoKTsKIH0KIAotLyogTG9naWNhbCBSZXBsaWNh dGlvbiBBcHBseSB3b3JrZXIgZW50cnkgcG9pbnQgKi8KKy8qCisgKiBJbml0aWFsaXplIHRoZSBk YXRhYnNlIGNvbm5lY3Rpb24sIGluLW1lbW9yeSBzdWJzY3JpcHRpb24gYW5kIG5lY2Vzc2FyeQor ICogY29uZmlnIG9wdGlvbnMuCisgKi8KIHZvaWQKLUFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWlu X2FyZykKK0luaXRpYWxpemVBcHBseVdvcmtlcih2b2lkKQogewotCWludAkJCXdvcmtlcl9zbG90 ID0gRGF0dW1HZXRJbnQzMihtYWluX2FyZyk7CiAJTWVtb3J5Q29udGV4dCBvbGRjdHg7Ci0JY2hh cgkJb3JpZ2lubmFtZVtOQU1FREFUQUxFTl07Ci0JWExvZ1JlY1B0cglvcmlnaW5fc3RhcnRwb3Mg PSBJbnZhbGlkWExvZ1JlY1B0cjsKLQljaGFyCSAgICpteXNsb3RuYW1lID0gTlVMTDsKLQlXYWxS Y3ZTdHJlYW1PcHRpb25zIG9wdGlvbnM7Ci0JaW50CQkJc2VydmVyX3ZlcnNpb247Ci0KLQkvKiBB dHRhY2ggdG8gc2xvdCAqLwotCWxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaCh3b3JrZXJfc2xvdCk7 Ci0KLQkvKiBTZXR1cCBzaWduYWwgaGFuZGxpbmcgKi8KLQlwcXNpZ25hbChTSUdIVVAsIFNpZ25h bEhhbmRsZXJGb3JDb25maWdSZWxvYWQpOwotCXBxc2lnbmFsKFNJR1RFUk0sIGRpZSk7Ci0JQmFj a2dyb3VuZFdvcmtlclVuYmxvY2tTaWduYWxzKCk7Ci0KLQkvKgotCSAqIFdlIGRvbid0IGN1cnJl bnRseSBuZWVkIGFueSBSZXNvdXJjZU93bmVyIGluIGEgd2FscmVjZWl2ZXIgcHJvY2VzcywgYnV0 Ci0JICogaWYgd2UgZGlkLCB3ZSBjb3VsZCBjYWxsIENyZWF0ZUF1eFByb2Nlc3NSZXNvdXJjZU93 bmVyIGhlcmUuCi0JICovCi0KLQkvKiBJbml0aWFsaXNlIHN0YXRzIHRvIGEgc2FuaXNoIHZhbHVl ICovCi0JTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X3NlbmRfdGltZSA9IE15TG9naWNhbFJlcFdv cmtlci0+bGFzdF9yZWN2X3RpbWUgPQotCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnJlcGx5X3RpbWUg PSBHZXRDdXJyZW50VGltZXN0YW1wKCk7Ci0KLQkvKiBMb2FkIHRoZSBsaWJwcS1zcGVjaWZpYyBm dW5jdGlvbnMgKi8KLQlsb2FkX2ZpbGUoImxpYnBxd2FscmVjZWl2ZXIiLCBmYWxzZSk7CiAKIAkv KiBSdW4gYXMgcmVwbGljYSBzZXNzaW9uIHJlcGxpY2F0aW9uIHJvbGUuICovCiAJU2V0Q29uZmln T3B0aW9uKCJzZXNzaW9uX3JlcGxpY2F0aW9uX3JvbGUiLCAicmVwbGljYSIsCkBAIC0zNjU5LDEy ICs0MDM1LDUwIEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAkJZXJlcG9ydChM T0csCiAJCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiB0YWJsZSBzeW5jaHJvbml6YXRp b24gd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiLCB0YWJsZSBcIiVzXCIgaGFzIHN0YXJ0 ZWQiLAogCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUsIGdldF9yZWxfbmFtZShNeUxvZ2ljYWxS ZXBXb3JrZXItPnJlbGlkKSkpKTsKKwllbHNlIGlmIChhbV9hcHBseV9iZ3dvcmtlcigpKQorCQll cmVwb3J0KExPRywKKwkJCQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IGJhY2tn cm91bmQgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIGhhcyBzdGFydGVkIiwKKwkJCQkJ CU15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOwogCWVsc2UKIAkJZXJlcG9ydChMT0csCiAJCQkJKGVy cm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBc IiVzXCIgaGFzIHN0YXJ0ZWQiLAogCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CiAKIAlD b21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKK30KKworLyogTG9naWNhbCBSZXBsaWNhdGlvbiBB cHBseSB3b3JrZXIgZW50cnkgcG9pbnQgKi8KK3ZvaWQKK0FwcGx5V29ya2VyTWFpbihEYXR1bSBt YWluX2FyZykKK3sKKwlpbnQJCQl3b3JrZXJfc2xvdCA9IERhdHVtR2V0SW50MzIobWFpbl9hcmcp OworCWNoYXIJCW9yaWdpbm5hbWVbTkFNRURBVEFMRU5dOworCVhMb2dSZWNQdHIJb3JpZ2luX3N0 YXJ0cG9zID0gSW52YWxpZFhMb2dSZWNQdHI7CisJY2hhcgkgICAqbXlzbG90bmFtZSA9IE5VTEw7 CisJV2FsUmN2U3RyZWFtT3B0aW9ucyBvcHRpb25zOworCWludAkJCXNlcnZlcl92ZXJzaW9uOwor CisJLyogQXR0YWNoIHRvIHNsb3QgKi8KKwlsb2dpY2FscmVwX3dvcmtlcl9hdHRhY2god29ya2Vy X3Nsb3QpOworCisJLyogU2V0dXAgc2lnbmFsIGhhbmRsaW5nICovCisJcHFzaWduYWwoU0lHSFVQ LCBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVsb2FkKTsKKwlwcXNpZ25hbChTSUdURVJNLCBkaWUp OworCUJhY2tncm91bmRXb3JrZXJVbmJsb2NrU2lnbmFscygpOworCisJLyoKKwkgKiBXZSBkb24n dCBjdXJyZW50bHkgbmVlZCBhbnkgUmVzb3VyY2VPd25lciBpbiBhIHdhbHJlY2VpdmVyIHByb2Nl c3MsIGJ1dAorCSAqIGlmIHdlIGRpZCwgd2UgY291bGQgY2FsbCBDcmVhdGVBdXhQcm9jZXNzUmVz b3VyY2VPd25lciBoZXJlLgorCSAqLworCisJLyogSW5pdGlhbGlzZSBzdGF0cyB0byBhIHNhbmlz aCB2YWx1ZSAqLworCU15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9zZW5kX3RpbWUgPSBNeUxvZ2lj YWxSZXBXb3JrZXItPmxhc3RfcmVjdl90aW1lID0KKwkJTXlMb2dpY2FsUmVwV29ya2VyLT5yZXBs eV90aW1lID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOworCisJLyogTG9hZCB0aGUgbGlicHEtc3Bl Y2lmaWMgZnVuY3Rpb25zICovCisJbG9hZF9maWxlKCJsaWJwcXdhbHJlY2VpdmVyIiwgZmFsc2Up OworCisJSW5pdGlhbGl6ZUFwcGx5V29ya2VyKCk7CiAKIAkvKiBDb25uZWN0IHRvIHRoZSBvcmln aW4gYW5kIHN0YXJ0IHRoZSByZXBsaWNhdGlvbi4gKi8KIAllbG9nKERFQlVHMSwgImNvbm5lY3Rp bmcgdG8gcHVibGlzaGVyIHVzaW5nIGNvbm5lY3Rpb24gc3RyaW5nIFwiJXNcIiIsCkBAIC0zNzEw LDcgKzQxMjQsNyBAQCBBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJCW9yaWdpbmlk ID0gcmVwbG9yaWdpbl9ieV9uYW1lKG9yaWdpbm5hbWUsIHRydWUpOwogCQlpZiAoIU9pZElzVmFs aWQob3JpZ2luaWQpKQogCQkJb3JpZ2luaWQgPSByZXBsb3JpZ2luX2NyZWF0ZShvcmlnaW5uYW1l KTsKLQkJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbmlkKTsKKwkJcmVwbG9yaWdpbl9z ZXNzaW9uX3NldHVwKG9yaWdpbmlkLCAwKTsKIAkJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiA9 IG9yaWdpbmlkOwogCQlvcmlnaW5fc3RhcnRwb3MgPSByZXBsb3JpZ2luX3Nlc3Npb25fZ2V0X3By b2dyZXNzKGZhbHNlKTsKIAkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CkBAIC0zNzUxLDEz ICs0MTY1LDE0IEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAogCXNlcnZlcl92 ZXJzaW9uID0gd2FscmN2X3NlcnZlcl92ZXJzaW9uKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4pOwog CW9wdGlvbnMucHJvdG8ubG9naWNhbC5wcm90b192ZXJzaW9uID0KKwkJc2VydmVyX3ZlcnNpb24g Pj0gMTYwMDAwID8gTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0g OgogCQlzZXJ2ZXJfdmVyc2lvbiA+PSAxNTAwMDAgPyBMT0dJQ0FMUkVQX1BST1RPX1RXT1BIQVNF X1ZFUlNJT05fTlVNIDoKIAkJc2VydmVyX3ZlcnNpb24gPj0gMTQwMDAwID8gTE9HSUNBTFJFUF9Q Uk9UT19TVFJFQU1fVkVSU0lPTl9OVU0gOgogCQlMT0dJQ0FMUkVQX1BST1RPX1ZFUlNJT05fTlVN OwogCiAJb3B0aW9ucy5wcm90by5sb2dpY2FsLnB1YmxpY2F0aW9uX25hbWVzID0gTXlTdWJzY3Jp cHRpb24tPnB1YmxpY2F0aW9uczsKIAlvcHRpb25zLnByb3RvLmxvZ2ljYWwuYmluYXJ5ID0gTXlT dWJzY3JpcHRpb24tPmJpbmFyeTsKLQlvcHRpb25zLnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nID0g TXlTdWJzY3JpcHRpb24tPnN0cmVhbTsKKwlvcHRpb25zLnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5n ID0gKE15U3Vic2NyaXB0aW9uLT5zdHJlYW0gIT0gU1VCU1RSRUFNX09GRik7CiAJb3B0aW9ucy5w cm90by5sb2dpY2FsLnR3b3BoYXNlID0gZmFsc2U7CiAJb3B0aW9ucy5wcm90by5sb2dpY2FsLm9y aWdpbiA9IHBzdHJkdXAoTXlTdWJzY3JpcHRpb24tPm9yaWdpbik7CiAKQEAgLTM5MTYsNyArNDMz MSw4IEBAIGNsZWFyX3N1YnNjcmlwdGlvbl9za2lwX2xzbihYTG9nUmVjUHRyIGZpbmlzaF9sc24p CiAJWExvZ1JlY1B0cglteXNraXBsc24gPSBNeVN1YnNjcmlwdGlvbi0+c2tpcGxzbjsKIAlib29s CQlzdGFydGVkX3R4ID0gZmFsc2U7CiAKLQlpZiAobGlrZWx5KFhMb2dSZWNQdHJJc0ludmFsaWQo bXlza2lwbHNuKSkpCisJaWYgKGxpa2VseShYTG9nUmVjUHRySXNJbnZhbGlkKG15c2tpcGxzbikp IHx8CisJCWFtX2FwcGx5X2Jnd29ya2VyKCkpCiAJCXJldHVybjsKIAogCWlmICghSXNUcmFuc2Fj dGlvblN0YXRlKCkpCkBAIC0zOTg4LDcgKzQ0MDQsNyBAQCBjbGVhcl9zdWJzY3JpcHRpb25fc2tp cF9sc24oWExvZ1JlY1B0ciBmaW5pc2hfbHNuKQogfQogCiAvKiBFcnJvciBjYWxsYmFjayB0byBn aXZlIG1vcmUgY29udGV4dCBpbmZvIGFib3V0IHRoZSBjaGFuZ2UgYmVpbmcgYXBwbGllZCAqLwot c3RhdGljIHZvaWQKK3ZvaWQKIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZykKIHsKIAlB cHBseUVycm9yQ2FsbGJhY2tBcmcgKmVycmFyZyA9ICZhcHBseV9lcnJvcl9jYWxsYmFja19hcmc7 CkBAIC00MDE2LDIzICs0NDMyLDQ3IEBAIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZykK IAkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkLAogCQkJCQkgICBMU05fRk9STUFUX0FSR1MoZXJy YXJnLT5maW5pc2hfbHNuKSk7CiAJfQotCWVsc2UgaWYgKGVycmFyZy0+cmVtb3RlX2F0dG51bSA8 IDApCi0JCWVycmNvbnRleHQoInByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9u IG9yaWdpbiBcIiVzXCIgZHVyaW5nIFwiJXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0 aW9uIFwiJXMuJXNcIiBpbiB0cmFuc2FjdGlvbiAldSBmaW5pc2hlZCBhdCAlWC8lWCIsCi0JCQkJ ICAgZXJyYXJnLT5vcmlnaW5fbmFtZSwKLQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShl cnJhcmctPmNvbW1hbmQpLAotCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwK LQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsCi0JCQkJICAgZXJyYXJnLT5y ZW1vdGVfeGlkLAotCQkJCSAgIExTTl9GT1JNQVRfQVJHUyhlcnJhcmctPmZpbmlzaF9sc24pKTsK IAllbHNlCi0JCWVycmNvbnRleHQoInByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0 aW9uIG9yaWdpbiBcIiVzXCIgZHVyaW5nIFwiJXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJl bGF0aW9uIFwiJXMuJXNcIiBjb2x1bW4gXCIlc1wiIGluIHRyYW5zYWN0aW9uICV1IGZpbmlzaGVk IGF0ICVYLyVYIiwKLQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1lLAotCQkJCSAgIGxvZ2ljYWxy ZXBfbWVzc2FnZV90eXBlKGVycmFyZy0+Y29tbWFuZCksCi0JCQkJICAgZXJyYXJnLT5yZWwtPnJl bW90ZXJlbC5uc3BuYW1lLAotCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwK LQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLmF0dG5hbWVzW2VycmFyZy0+cmVtb3RlX2F0 dG51bV0sCi0JCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkLAotCQkJCSAgIExTTl9GT1JNQVRfQVJH UyhlcnJhcmctPmZpbmlzaF9sc24pKTsKKwl7CisJCWlmIChlcnJhcmctPnJlbW90ZV9hdHRudW0g PCAwKQorCQl7CisJCQlpZiAoWExvZ1JlY1B0cklzSW52YWxpZChlcnJhcmctPmZpbmlzaF9sc24p KQorCQkJCWVycmNvbnRleHQoInByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9u IG9yaWdpbiBcIiVzXCIgZHVyaW5nIFwiJXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0 aW9uIFwiJXMuJXNcIiBpbiB0cmFuc2FjdGlvbiAldSIsCisJCQkJCQkgICBlcnJhcmctPm9yaWdp bl9uYW1lLAorCQkJCQkJICAgbG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoZXJyYXJnLT5jb21tYW5k KSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwKKwkJCQkJCSAgIGVy cmFyZy0+cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hp ZCk7CisJCQllbHNlCisJCQkJZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3Ig cmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0 YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGluIHRyYW5zYWN0aW9uICV1IGZpbmlzaGVkIGF0ICVY LyVYIiwKKwkJCQkJCSAgIGVycmFyZy0+b3JpZ2luX25hbWUsCisJCQkJCQkgICBsb2dpY2FscmVw X21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJl bW90ZXJlbC5uc3BuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1l LAorCQkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkLAorCQkJCQkJICAgTFNOX0ZPUk1BVF9BUkdT KGVycmFyZy0+ZmluaXNoX2xzbikpOworCQl9CisJCWVsc2UKKwkJeworCQkJaWYgKFhMb2dSZWNQ dHJJc0ludmFsaWQoZXJyYXJnLT5maW5pc2hfbHNuKSkKKwkJCQllcnJjb250ZXh0KCJwcm9jZXNz aW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBcIiVz XCIgZm9yIHJlcGxpY2F0aW9uIHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgY29sdW1uIFwiJXNc IiBpbiB0cmFuc2FjdGlvbiAldSIsCisJCQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1lLAorCQkJ CQkJICAgbG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoZXJyYXJnLT5jb21tYW5kKSwKKwkJCQkJCSAg IGVycmFyZy0+cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5y ZW1vdGVyZWwucmVsbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwuYXR0bmFt ZXNbZXJyYXJnLT5yZW1vdGVfYXR0bnVtXSwKKwkJCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCk7 CisJCQllbHNlCisJCQkJZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVw bGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJn ZXQgcmVsYXRpb24gXCIlcy4lc1wiIGNvbHVtbiBcIiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUgZmlu aXNoZWQgYXQgJVgvJVgiLAorCQkJCQkJICAgZXJyYXJnLT5vcmlnaW5fbmFtZSwKKwkJCQkJCSAg IGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKGVycmFyZy0+Y29tbWFuZCksCisJCQkJCQkgICBlcnJh cmctPnJlbC0+cmVtb3RlcmVsLm5zcG5hbWUsCisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3Rl cmVsLnJlbG5hbWUsCisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLmF0dG5hbWVzW2Vy cmFyZy0+cmVtb3RlX2F0dG51bV0sCisJCQkJCQkgICBlcnJhcmctPnJlbW90ZV94aWQsCisJCQkJ CQkgICBMU05fRk9STUFUX0FSR1MoZXJyYXJnLT5maW5pc2hfbHNuKSk7CisJCX0KKwl9CiB9CiAK IC8qIFNldCB0cmFuc2FjdGlvbiBpbmZvcm1hdGlvbiBvZiBhcHBseSBlcnJvciBjYWxsYmFjayAq LwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQu YyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXggYTNj MWJhOC4uZjllMzg4YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRw dXQvcGdvdXRwdXQuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291 dHB1dC5jCkBAIC0xODQzLDYgKzE4NDMsOSBAQCBwZ291dHB1dF9zdHJlYW1fYWJvcnQoc3RydWN0 IExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKIAkJCQkJICBYTG9nUmVjUHRyIGFib3J0X2xz bikKIHsKIAlSZW9yZGVyQnVmZmVyVFhOICp0b3B0eG47CisJUEdPdXRwdXREYXRhICpkYXRhID0g KFBHT3V0cHV0RGF0YSAqKSBjdHgtPm91dHB1dF9wbHVnaW5fcHJpdmF0ZTsKKwlib29sIHdyaXRl X2Fib3J0X2xzbiA9IChkYXRhLT5wcm90b2NvbF92ZXJzaW9uID49CisJCQkJCQkJTE9HSUNBTFJF UF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0pOwogCiAJLyoKIAkgKiBUaGUgYWJv cnQgc2hvdWxkIGhhcHBlbiBvdXRzaWRlIHN0cmVhbWluZyBibG9jaywgZXZlbiBmb3Igc3RyZWFt ZWQKQEAgLTE4NTYsNyArMTg1OSw4IEBAIHBnb3V0cHV0X3N0cmVhbV9hYm9ydChzdHJ1Y3QgTG9n aWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCUFzc2VydChyYnR4bl9pc19zdHJlYW1lZCh0b3B0 eG4pKTsKIAogCU91dHB1dFBsdWdpblByZXBhcmVXcml0ZShjdHgsIHRydWUpOwotCWxvZ2ljYWxy ZXBfd3JpdGVfc3RyZWFtX2Fib3J0KGN0eC0+b3V0LCB0b3B0eG4tPnhpZCwgdHhuLT54aWQpOwor CWxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX2Fib3J0KGN0eC0+b3V0LCB0b3B0eG4tPnhpZCwgdHhu LCBhYm9ydF9sc24sCisJCQkJCQkJCSAgd3JpdGVfYWJvcnRfbHNuKTsKIAlPdXRwdXRQbHVnaW5X cml0ZShjdHgsIHRydWUpOwogCiAJY2xlYW51cF9yZWxfc3luY19jYWNoZSh0b3B0eG4tPnhpZCwg ZmFsc2UpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVu dC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCmluZGV4IDkyZjI0 YTYuLjdiNjY3NjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRf ZXZlbnQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKQEAg LTM4OCw2ICszODgsOSBAQCBwZ3N0YXRfZ2V0X3dhaXRfaXBjKFdhaXRFdmVudElQQyB3KQogCQlj YXNlIFdBSVRfRVZFTlRfSEFTSF9HUk9XX0JVQ0tFVFNfUkVJTlNFUlQ6CiAJCQlldmVudF9uYW1l ID0gIkhhc2hHcm93QnVja2V0c1JlaW5zZXJ0IjsKIAkJCWJyZWFrOworCQljYXNlIFdBSVRfRVZF TlRfTE9HSUNBTF9BUFBMWV9CR1dPUktFUl9TVEFURV9DSEFOR0U6CisJCQlldmVudF9uYW1lID0g IkxvZ2ljYWxBcHBseUJnd29ya2VyU3RhdGVDaGFuZ2UiOworCQkJYnJlYWs7CiAJCWNhc2UgV0FJ VF9FVkVOVF9MT0dJQ0FMX1NZTkNfREFUQToKIAkJCWV2ZW50X25hbWUgPSAiTG9naWNhbFN5bmNE YXRhIjsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKaW5kZXggNWRiNWRmNi4uOTI1NzMxZCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9taXNjL2d1Yy5jCkBAIC0zMjIzLDYgKzMyMjMsMTggQEAgc3RhdGljIHN0cnVjdCBj b25maWdfaW50IENvbmZpZ3VyZU5hbWVzSW50W10gPQogCX0sCiAKIAl7CisJCXsibWF4X2FwcGx5 X2Jnd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uIiwKKwkJCVBHQ19TSUdIVVAsCisJCQlSRVBMSUNB VElPTl9TVUJTQ1JJQkVSUywKKwkJCWdldHRleHRfbm9vcCgiTWF4aW11bSBudW1iZXIgb2YgYXBw bHkgYmFja2dyb3VuZCB3b3JrZXJzIHBlciBzdWJzY3JpcHRpb24uIiksCisJCQlOVUxMLAorCQl9 LAorCQkmbWF4X2FwcGx5X2Jnd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uLAorCQkyLCAwLCBNQVhf QkFDS0VORFMsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9LAorCisJewogCQl7ImxvZ19yb3RhdGlv bl9hZ2UiLCBQR0NfU0lHSFVQLCBMT0dHSU5HX1dIRVJFLAogCQkJZ2V0dGV4dF9ub29wKCJTZXRz IHRoZSBhbW91bnQgb2YgdGltZSB0byB3YWl0IGJlZm9yZSBmb3JjaW5nICIKIAkJCQkJCSAibG9n IGZpbGUgcm90YXRpb24uIiksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bv c3RncmVzcWwuY29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwu Y29uZi5zYW1wbGUKaW5kZXggOTBiZWMwNS4uNzM0ZDA3YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQpAQCAtMzYwLDYgKzM2MCw3IEBACiAjbWF4 X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycyA9IDQJIyB0YWtlbiBmcm9tIG1heF93b3JrZXJf cHJvY2Vzc2VzCiAJCQkJCSMgKGNoYW5nZSByZXF1aXJlcyByZXN0YXJ0KQogI21heF9zeW5jX3dv cmtlcnNfcGVyX3N1YnNjcmlwdGlvbiA9IDIJIyB0YWtlbiBmcm9tIG1heF9sb2dpY2FsX3JlcGxp Y2F0aW9uX3dvcmtlcnMKKyNtYXhfYXBwbHlfYmd3b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gPSAy CSMgdGFrZW4gZnJvbSBtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzCiAKIAogIy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBi L3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggZGE2NjA1MS4uMmE4ZGEyNiAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5jCkBAIC00NDgwLDcgKzQ0ODAsNyBAQCBnZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUgKmZv dXQpCiAJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTQwMDAwKQogCQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cihxdWVyeSwgIiBzLnN1YnN0cmVhbSxcbiIpOwogCWVsc2UKLQkJYXBwZW5kUFFFeHBC dWZmZXJTdHIocXVlcnksICIgZmFsc2UgQVMgc3Vic3RyZWFtLFxuIik7CisJCWFwcGVuZFBRRXhw QnVmZmVyU3RyKHF1ZXJ5LCAiICdmJyBBUyBzdWJzdHJlYW0sXG4iKTsKIAogCWlmIChmb3V0LT5y ZW1vdGVWZXJzaW9uID49IDE1MDAwMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCkBA IC00NjE3LDggKzQ2MTcsMTAgQEAgZHVtcFN1YnNjcmlwdGlvbihBcmNoaXZlICpmb3V0LCBjb25z dCBTdWJzY3JpcHRpb25JbmZvICpzdWJpbmZvKQogCWlmIChzdHJjbXAoc3ViaW5mby0+c3ViYmlu YXJ5LCAidCIpID09IDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCBiaW5hcnkg PSB0cnVlIik7CiAKLQlpZiAoc3RyY21wKHN1YmluZm8tPnN1YnN0cmVhbSwgImYiKSAhPSAwKQor CWlmIChzdHJjbXAoc3ViaW5mby0+c3Vic3RyZWFtLCAidCIpID09IDApCiAJCWFwcGVuZFBRRXhw QnVmZmVyU3RyKHF1ZXJ5LCAiLCBzdHJlYW1pbmcgPSBvbiIpOworCWVsc2UgaWYgKHN0cmNtcChz dWJpbmZvLT5zdWJzdHJlYW0sICJwIikgPT0gMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVl cnksICIsIHN0cmVhbWluZyA9IHBhcmFsbGVsIik7CiAKIAlpZiAoc3RyY21wKHN1YmluZm8tPnN1 YnR3b3BoYXNlc3RhdGUsIHR3b19waGFzZV9kaXNhYmxlZCkgIT0gMCkKIAkJYXBwZW5kUFFFeHBC dWZmZXJTdHIocXVlcnksICIsIHR3b19waGFzZSA9IG9uIik7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19z dWJzY3JpcHRpb24uaAppbmRleCA3Yjk4NzE0Li5mNGUxZTk0IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfc3Vic2NyaXB0aW9uLmgKQEAgLTgwLDcgKzgwLDggQEAgQ0FUQUxPRyhwZ19zdWJzY3JpcHRp b24sNjEwMCxTdWJzY3JpcHRpb25SZWxhdGlvbklkKSBCS0lfU0hBUkVEX1JFTEFUSU9OIEJLSV9S T1cKIAlib29sCQlzdWJiaW5hcnk7CQkvKiBUcnVlIGlmIHRoZSBzdWJzY3JpcHRpb24gd2FudHMg dGhlCiAJCQkJCQkJCSAqIHB1Ymxpc2hlciB0byBzZW5kIGRhdGEgaW4gYmluYXJ5ICovCiAKLQli b29sCQlzdWJzdHJlYW07CQkvKiBTdHJlYW0gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLiAqLwor CWNoYXIJCXN1YnN0cmVhbTsJCS8qIFN0cmVhbSBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuCisJ CQkJCQkJCSAqIFNlZSBTVUJTVFJFQU1feHh4IGNvbnN0YW50cy4gKi8KIAogCWNoYXIJCXN1YnR3 b3BoYXNlc3RhdGU7CS8qIFN0cmVhbSB0d28tcGhhc2UgdHJhbnNhY3Rpb25zICovCiAKQEAgLTEy NCw3ICsxMjUsOCBAQCB0eXBlZGVmIHN0cnVjdCBTdWJzY3JpcHRpb24KIAlib29sCQllbmFibGVk OwkJLyogSW5kaWNhdGVzIGlmIHRoZSBzdWJzY3JpcHRpb24gaXMgZW5hYmxlZCAqLwogCWJvb2wJ CWJpbmFyeTsJCQkvKiBJbmRpY2F0ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiB3YW50cyBkYXRhIGlu CiAJCQkJCQkJCSAqIGJpbmFyeSBmb3JtYXQgKi8KLQlib29sCQlzdHJlYW07CQkJLyogQWxsb3cg c3RyZWFtaW5nIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4gKi8KKwljaGFyCQlzdHJlYW07CQkJ LyogQWxsb3cgc3RyZWFtaW5nIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4KKwkJCQkJCQkJICog U2VlIFNVQlNUUkVBTV94eHggY29uc3RhbnRzLiAqLwogCWNoYXIJCXR3b3BoYXNlc3RhdGU7CS8q IEFsbG93IHN0cmVhbWluZyB0d28tcGhhc2UgdHJhbnNhY3Rpb25zICovCiAJYm9vbAkJZGlzYWJs ZW9uZXJyOwkvKiBJbmRpY2F0ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiBzaG91bGQgYmUKIAkJCQkJ CQkJICogYXV0b21hdGljYWxseSBkaXNhYmxlZCBpZiBhIHdvcmtlciBlcnJvcgpAQCAtMTM3LDYg KzEzOSwyMSBAQCB0eXBlZGVmIHN0cnVjdCBTdWJzY3JpcHRpb24KIAkJCQkJCQkJICogc3BlY2lm aWVkIG9yaWdpbiAqLwogfSBTdWJzY3JpcHRpb247CiAKKy8qIERpc2FsbG93IHN0cmVhbWluZyBp bi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuICovCisjZGVmaW5lIFNVQlNUUkVBTV9PRkYgJ2YnCisK Ky8qCisgKiBTdHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIGFyZSB3cml0dGVuIHRv IGEgdGVtcG9yYXJ5IGZpbGUgYW5kCisgKiBhcHBsaWVkIG9ubHkgYWZ0ZXIgdGhlIHRyYW5zYWN0 aW9uIGlzIGNvbW1pdHRlZCBvbiB1cHN0cmVhbS4KKyAqLworI2RlZmluZSBTVUJTVFJFQU1fT04g J3QnCisKKy8qCisgKiBTdHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIGFyZSBhcHBs aWVkIGltbWVkaWF0ZWx5IHZpYSBhIGJhY2tncm91bmQKKyAqIHdvcmtlci4KKyAqLworI2RlZmlu ZSBTVUJTVFJFQU1fUEFSQUxMRUwgJ3AnCisKIGV4dGVybiBTdWJzY3JpcHRpb24gKkdldFN1YnNj cmlwdGlvbihPaWQgc3ViaWQsIGJvb2wgbWlzc2luZ19vayk7CiBleHRlcm4gdm9pZCBGcmVlU3Vi c2NyaXB0aW9uKFN1YnNjcmlwdGlvbiAqc3ViKTsKIGV4dGVybiB2b2lkIERpc2FibGVTdWJzY3Jp cHRpb24oT2lkIHN1YmlkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xv Z2ljYWxsYXVuY2hlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVy LmgKaW5kZXggZjFlMjgyMS4uYWM4ZWY5NCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vbG9naWNhbGxhdW5jaGVyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9n aWNhbGxhdW5jaGVyLmgKQEAgLTE0LDYgKzE0LDcgQEAKIAogZXh0ZXJuIFBHRExMSU1QT1JUIGlu dCBtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzOwogZXh0ZXJuIFBHRExMSU1QT1JUIGlu dCBtYXhfc3luY193b3JrZXJzX3Blcl9zdWJzY3JpcHRpb247CitleHRlcm4gUEdETExJTVBPUlQg aW50IG1heF9hcHBseV9iZ3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbjsKIAogZXh0ZXJuIHZvaWQg QXBwbHlMYXVuY2hlclJlZ2lzdGVyKHZvaWQpOwogZXh0ZXJuIHZvaWQgQXBwbHlMYXVuY2hlck1h aW4oRGF0dW0gbWFpbl9hcmcpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v bG9naWNhbHByb3RvLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaApp bmRleCBhNzcxYWI4Li5lYjBmZDI0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9sb2dpY2FscHJvdG8uaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJv dG8uaApAQCAtMzIsMTIgKzMyLDE3IEBACiAgKgogICogTE9HSUNBTFJFUF9QUk9UT19UV09QSEFT RV9WRVJTSU9OX05VTSBpcyB0aGUgbWluaW11bSBwcm90b2NvbCB2ZXJzaW9uIHdpdGgKICAqIHN1 cHBvcnQgZm9yIHR3by1waGFzZSBjb21taXQgZGVjb2RpbmcgKGF0IHByZXBhcmUgdGltZSkuIElu dHJvZHVjZWQgaW4gUEcxNS4KKyAqCisgKiBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJBTExF TF9WRVJTSU9OX05VTSBpcyB0aGUgbWluaW11bSBwcm90b2NvbCB2ZXJzaW9uCisgKiB3aXRoIHN1 cHBvcnQgZm9yIHN0cmVhbWluZyBsYXJnZSB0cmFuc2FjdGlvbnMgdXNpbmcgYXBwbHkgYmFja2dy b3VuZAorICogd29ya2Vycy4gSW50cm9kdWNlZCBpbiBQRzE2LgogICovCiAjZGVmaW5lIExPR0lD QUxSRVBfUFJPVE9fTUlOX1ZFUlNJT05fTlVNIDEKICNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19W RVJTSU9OX05VTSAxCiAjZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1ZFUlNJT05fTlVN IDIKICNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19UV09QSEFTRV9WRVJTSU9OX05VTSAzCi0jZGVm aW5lIExPR0lDQUxSRVBfUFJPVE9fTUFYX1ZFUlNJT05fTlVNIExPR0lDQUxSRVBfUFJPVE9fVFdP UEhBU0VfVkVSU0lPTl9OVU0KKyNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxM RUxfVkVSU0lPTl9OVU0gNAorI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX01BWF9WRVJTSU9OX05V TSBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05VTQogCiAvKgogICog TG9naWNhbCBtZXNzYWdlIHR5cGVzCkBAIC0xNzUsNiArMTgwLDE3IEBAIHR5cGVkZWYgc3RydWN0 IExvZ2ljYWxSZXBSb2xsYmFja1ByZXBhcmVkVHhuRGF0YQogCWNoYXIJCWdpZFtHSURTSVpFXTsK IH0gTG9naWNhbFJlcFJvbGxiYWNrUHJlcGFyZWRUeG5EYXRhOwogCisvKgorICogVHJhbnNhY3Rp b24gcHJvdG9jb2wgaW5mb3JtYXRpb24gZm9yIHN0cmVhbSBhYm9ydC4KKyAqLwordHlwZWRlZiBz dHJ1Y3QgTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YQoreworCVRyYW5zYWN0aW9uSWQgeGlkOwor CVRyYW5zYWN0aW9uSWQgc3VieGlkOworCVhMb2dSZWNQdHIJYWJvcnRfbHNuOworCVRpbWVzdGFt cFR6IGFib3J0X3RpbWU7Cit9IExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGE7CisKIGV4dGVybiB2 b2lkIGxvZ2ljYWxyZXBfd3JpdGVfYmVnaW4oU3RyaW5nSW5mbyBvdXQsIFJlb3JkZXJCdWZmZXJU WE4gKnR4bik7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlYWRfYmVnaW4oU3RyaW5nSW5mbyBp biwKIAkJCQkJCQkJICBMb2dpY2FsUmVwQmVnaW5EYXRhICpiZWdpbl9kYXRhKTsKQEAgLTI0Niw5 ICsyNjIsMTIgQEAgZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fY29tbWl0KFN0 cmluZ0luZm8gb3V0LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4KIGV4dGVybiBUcmFuc2FjdGlvbklk IGxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gb3V0LAogCQkJCQkJCQkJ CQkJICAgTG9naWNhbFJlcENvbW1pdERhdGEgKmNvbW1pdF9kYXRhKTsKIGV4dGVybiB2b2lkIGxv Z2ljYWxyZXBfd3JpdGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gb3V0LCBUcmFuc2FjdGlvbklk IHhpZCwKLQkJCQkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgc3VieGlkKTsKLWV4dGVybiB2b2lkIGxv Z2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBpbiwgVHJhbnNhY3Rpb25JZCAq eGlkLAotCQkJCQkJCQkJCSBUcmFuc2FjdGlvbklkICpzdWJ4aWQpOworCQkJCQkJCQkJCSAgUmVv cmRlckJ1ZmZlclRYTiAqdHhuLAorCQkJCQkJCQkJCSAgWExvZ1JlY1B0ciBhYm9ydF9sc24sCisJ CQkJCQkJCQkJICBib29sIHdyaXRlX2Fib3J0X2xzbik7CitleHRlcm4gdm9pZCBsb2dpY2FscmVw X3JlYWRfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gaW4sCisJCQkJCQkJCQkJIExvZ2ljYWxSZXBT dHJlYW1BYm9ydERhdGEgKmFib3J0X2RhdGEsCisJCQkJCQkJCQkJIGJvb2wgcmVhZF9hYm9ydF9s c24pOwogZXh0ZXJuIGNoYXIgKmxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKExvZ2ljYWxSZXBNc2dU eXBlIGFjdGlvbik7CiAKICNlbmRpZgkJCQkJCQkvKiBMT0dJQ0FMX1BST1RPX0ggKi8KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCBiL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaAppbmRleCBjZDFiNmU4Li42YTFhZjdmIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgKKysrIGIv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oCkBAIC0xMyw2ICsxMyw3IEBA CiAjZGVmaW5lIExPR0lDQUxXT1JLRVJfSAogCiBleHRlcm4gdm9pZCBBcHBseVdvcmtlck1haW4o RGF0dW0gbWFpbl9hcmcpOworZXh0ZXJuIHZvaWQgQXBwbHlCZ3dvcmtlck1haW4oRGF0dW0gbWFp bl9hcmcpOwogCiBleHRlcm4gYm9vbCBJc0xvZ2ljYWxXb3JrZXIodm9pZCk7CiAKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL29yaWdpbi5oIGIvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vb3JpZ2luLmgKaW5kZXggMmQxYjVlNS4uNDBlYmFkMCAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v b3JpZ2luLmgKQEAgLTUzLDcgKzUzLDcgQEAgZXh0ZXJuIFhMb2dSZWNQdHIgcmVwbG9yaWdpbl9n ZXRfcHJvZ3Jlc3MoUmVwT3JpZ2luSWQgbm9kZSwgYm9vbCBmbHVzaCk7CiAKIGV4dGVybiB2b2lk IHJlcGxvcmlnaW5fc2Vzc2lvbl9hZHZhbmNlKFhMb2dSZWNQdHIgcmVtb3RlX2NvbW1pdCwKIAkJ CQkJCQkJCSAgIFhMb2dSZWNQdHIgbG9jYWxfY29tbWl0KTsKLWV4dGVybiB2b2lkIHJlcGxvcmln aW5fc2Vzc2lvbl9zZXR1cChSZXBPcmlnaW5JZCBub2RlKTsKK2V4dGVybiB2b2lkIHJlcGxvcmln aW5fc2Vzc2lvbl9zZXR1cChSZXBPcmlnaW5JZCBub2RlLCBpbnQgYWNxdWlyZWRfYnkpOwogZXh0 ZXJuIHZvaWQgcmVwbG9yaWdpbl9zZXNzaW9uX3Jlc2V0KHZvaWQpOwogZXh0ZXJuIFhMb2dSZWNQ dHIgcmVwbG9yaWdpbl9zZXNzaW9uX2dldF9wcm9ncmVzcyhib29sIGZsdXNoKTsKIApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oIGIvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oCmluZGV4IDJjOTIwNmEuLjM4YzRkYmEgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaAorKysgYi9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKQEAgLTMwMSw2ICszMDEsNyBA QCB0eXBlZGVmIHN0cnVjdCBSZW9yZGVyQnVmZmVyVFhOCiAJewogCQlUaW1lc3RhbXBUeiBjb21t aXRfdGltZTsKIAkJVGltZXN0YW1wVHogcHJlcGFyZV90aW1lOworCQlUaW1lc3RhbXBUeiBhYm9y dF90aW1lOwogCX0JCQl4YWN0X3RpbWU7CiAKIAkvKgpAQCAtNjQ3LDkgKzY0OCwxMSBAQCBleHRl cm4gdm9pZCBSZW9yZGVyQnVmZmVyRmluaXNoUHJlcGFyZWQoUmVvcmRlckJ1ZmZlciAqcmIsIFRy YW5zYWN0aW9uSWQgeGlkLAogZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckFzc2lnbkNoaWxkKFJl b3JkZXJCdWZmZXIgKiwgVHJhbnNhY3Rpb25JZCwgVHJhbnNhY3Rpb25JZCwgWExvZ1JlY1B0ciBj b21taXRfbHNuKTsKIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJDb21taXRDaGlsZChSZW9yZGVy QnVmZmVyICosIFRyYW5zYWN0aW9uSWQsIFRyYW5zYWN0aW9uSWQsCiAJCQkJCQkJCQkgWExvZ1Jl Y1B0ciBjb21taXRfbHNuLCBYTG9nUmVjUHRyIGVuZF9sc24pOwotZXh0ZXJuIHZvaWQgUmVvcmRl ckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIgKiwgVHJhbnNhY3Rpb25JZCwgWExvZ1JlY1B0ciBs c24pOworZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIgKiwgVHJh bnNhY3Rpb25JZCwgWExvZ1JlY1B0ciBsc24sCisJCQkJCQkJICAgVGltZXN0YW1wVHogYWJvcnRf dGltZSk7CiBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQWJvcnRPbGQoUmVvcmRlckJ1ZmZlciAq LCBUcmFuc2FjdGlvbklkIHhpZCk7Ci1leHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyRm9yZ2V0KFJl b3JkZXJCdWZmZXIgKiwgVHJhbnNhY3Rpb25JZCwgWExvZ1JlY1B0ciBsc24pOworZXh0ZXJuIHZv aWQgUmVvcmRlckJ1ZmZlckZvcmdldChSZW9yZGVyQnVmZmVyICosIFRyYW5zYWN0aW9uSWQsIFhM b2dSZWNQdHIgbHNuLAorCQkJCQkJCQlUaW1lc3RhbXBUeiBhYm9ydF90aW1lKTsKIGV4dGVybiB2 b2lkIFJlb3JkZXJCdWZmZXJJbnZhbGlkYXRlKFJlb3JkZXJCdWZmZXIgKiwgVHJhbnNhY3Rpb25J ZCwgWExvZ1JlY1B0ciBsc24pOwogCiBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyU2V0QmFzZVNu YXBzaG90KFJlb3JkZXJCdWZmZXIgKiwgVHJhbnNhY3Rpb25JZCwgWExvZ1JlY1B0ciBsc24sIHN0 cnVjdCBTbmFwc2hvdERhdGEgKnNuYXApOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vd29ya2VyX2ludGVybmFsLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJf aW50ZXJuYWwuaAppbmRleCA5MDE4NDVhLi44ZjAzYWQ0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi93b3JrZXJfaW50ZXJuYWwuaApAQCAtMTcsOCArMTcsMTEgQEAKICNpbmNsdWRlICJhY2Nl c3MveGxvZ2RlZnMuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIgogI2lu Y2x1ZGUgImRhdGF0eXBlL3RpbWVzdGFtcC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2lj YWxyZWxhdGlvbi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmlsZXNldC5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvbG9jay5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc2htX21xLmgiCisjaW5jbHVkZSAic3Rv cmFnZS9zaG1fdG9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCiAKIApAQCAtNjAsNiAr NjMsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFdvcmtlcgogCSAqLwogCUZpbGVTZXQg ICAgKnN0cmVhbV9maWxlc2V0OwogCisJLyoKKwkgKiBQSUQgb2YgbWFpbiBhcHBseSB3b3JrZXIg aWYgdGhpcyBzbG90IGlzIHVzZWQgZm9yIGFuIGFwcGx5IGJhY2tncm91bmQKKwkgKiB3b3JrZXIu CisJICovCisJaW50CQkJbWFpbl93b3JrZXJfcGlkOworCiAJLyogU3RhdHMuICovCiAJWExvZ1Jl Y1B0cglsYXN0X2xzbjsKIAlUaW1lc3RhbXBUeiBsYXN0X3NlbmRfdGltZTsKQEAgLTY4LDggKzc3 LDcwIEBAIHR5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBXb3JrZXIKIAlUaW1lc3RhbXBUeiByZXBs eV90aW1lOwogfSBMb2dpY2FsUmVwV29ya2VyOwogCisvKiBTdHJ1Y3QgZm9yIHNhdmluZyBhbmQg cmVzdG9yaW5nIGFwcGx5IGVycmNvbnRleHQgaW5mb3JtYXRpb24gKi8KK3R5cGVkZWYgc3RydWN0 IEFwcGx5RXJyb3JDYWxsYmFja0FyZworeworCUxvZ2ljYWxSZXBNc2dUeXBlIGNvbW1hbmQ7CS8q IDAgaWYgaW52YWxpZCAqLworCUxvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsOworCisJLyogUmVt b3RlIG5vZGUgaW5mb3JtYXRpb24gKi8KKwlpbnQJCQlyZW1vdGVfYXR0bnVtOwkvKiAtMSBpZiBp bnZhbGlkICovCisJVHJhbnNhY3Rpb25JZCByZW1vdGVfeGlkOworCVhMb2dSZWNQdHIJZmluaXNo X2xzbjsKKwljaGFyCSAgICpvcmlnaW5fbmFtZTsKK30gQXBwbHlFcnJvckNhbGxiYWNrQXJnOwor CisvKgorICogU3RhdHVzIG9mIGFwcGx5IGJhY2tncm91bmQgd29ya2VyLgorICovCit0eXBlZGVm IGVudW0gQXBwbHlCZ3dvcmtlclN0YXR1cworeworCUFQUExZX0JHV09SS0VSX0JVU1kgPSAwLAkJ LyogYXNzaWduZWQgdG8gYSB0cmFuc2FjdGlvbiAqLworCUFQUExZX0JHV09SS0VSX0ZJTklTSEVE LAkJLyogdHJhbnNhY3Rpb24gaXMgY29tcGxldGVkICovCisJQVBQTFlfQkdXT1JLRVJfRVhJVAkJ CQkvKiBleGl0ICovCit9IEFwcGx5Qmd3b3JrZXJTdGF0dXM7CisKKy8qCisgKiBTdHJ1Y3QgZm9y IHNoYXJpbmcgaW5mb3JtYXRpb24gYmV0d2VlbiBhcHBseSBtYWluIGFuZCBhcHBseSBiYWNrZ3Jv dW5kCisgKiB3b3JrZXJzLgorICovCit0eXBlZGVmIHN0cnVjdCBBcHBseUJnd29ya2VyU2hhcmVk Cit7CisJc2xvY2tfdAltdXRleDsKKworCS8qIFN0YXR1cyBvZiBhcHBseSBiYWNrZ3JvdW5kIHdv cmtlci4gKi8KKwlBcHBseUJnd29ya2VyU3RhdHVzCXN0YXR1czsKKworCS8qIExvZ2ljYWwgcHJv dG9jb2wgdmVyc2lvbi4gKi8KKwl1aW50MzIJcHJvdG9fdmVyc2lvbjsKKworCVRyYW5zYWN0aW9u SWQJc3RyZWFtX3hpZDsKKworCS8qIElkIG9mIGFwcGx5IGJhY2tncm91bmQgd29ya2VyICovCisJ dWludDMyCXdvcmtlcl9pZDsKK30gQXBwbHlCZ3dvcmtlclNoYXJlZDsKKworLyoKKyAqIEluZm9y bWF0aW9uIHdoaWNoIGlzIHVzZWQgdG8gbWFuYWdlIHRoZSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtl ci4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgQXBwbHlCZ3dvcmtlckluZm8KK3sKKwlzaG1fbXFfaGFu ZGxlCQkJKm1xX2hhbmRsZTsKKwlkc21fc2VnbWVudAkJCQkqZHNtX3NlZzsKKwlBcHBseUJnd29y a2VyU2hhcmVkIHZvbGF0aWxlCSpzaGFyZWQ7Cit9IEFwcGx5Qmd3b3JrZXJJbmZvOworCiAvKiBN YWluIG1lbW9yeSBjb250ZXh0IGZvciBhcHBseSB3b3JrZXIuIFBlcm1hbmVudCBkdXJpbmcgd29y a2VyIGxpZmV0aW1lLiAqLwogZXh0ZXJuIFBHRExMSU1QT1JUIE1lbW9yeUNvbnRleHQgQXBwbHlD b250ZXh0OworZXh0ZXJuIFBHRExMSU1QT1JUIE1lbW9yeUNvbnRleHQgQXBwbHlNZXNzYWdlQ29u dGV4dDsKKworZXh0ZXJuIFBHRExMSU1QT1JUIEFwcGx5RXJyb3JDYWxsYmFja0FyZyBhcHBseV9l cnJvcl9jYWxsYmFja19hcmc7CisKK2V4dGVybiBQR0RMTElNUE9SVCBib29sIE15U3Vic2NyaXB0 aW9uVmFsaWQ7CisKK2V4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBBcHBseUJnd29ya2VyU2hh cmVkICpNeVBhcmFsbGVsU2hhcmVkOworCitleHRlcm4gUEdETExJTVBPUlQgTGlzdCAqc3VieGFj dGxpc3Q7CiAKIC8qIGxpYnBxcmVjZWl2ZXIgY29ubmVjdGlvbiAqLwogZXh0ZXJuIFBHRExMSU1Q T1JUIHN0cnVjdCBXYWxSZWNlaXZlckNvbm4gKkxvZ1JlcFdvcmtlcldhbFJjdkNvbm47CkBAIC03 OSwxOCArMTUwLDIyIEBAIGV4dGVybiBQR0RMTElNUE9SVCBTdWJzY3JpcHRpb24gKk15U3Vic2Ny aXB0aW9uOwogZXh0ZXJuIFBHRExMSU1QT1JUIExvZ2ljYWxSZXBXb3JrZXIgKk15TG9naWNhbFJl cFdvcmtlcjsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgaW5fcmVtb3RlX3RyYW5zYWN0aW9u OworZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb247CitleHRl cm4gUEdETExJTVBPUlQgVHJhbnNhY3Rpb25JZCBzdHJlYW1feGlkOwogCiBleHRlcm4gdm9pZCBs b2dpY2FscmVwX3dvcmtlcl9hdHRhY2goaW50IHNsb3QpOwogZXh0ZXJuIExvZ2ljYWxSZXBXb3Jr ZXIgKmxvZ2ljYWxyZXBfd29ya2VyX2ZpbmQoT2lkIHN1YmlkLCBPaWQgcmVsaWQsCiAJCQkJCQkJ CQkJCQlib29sIG9ubHlfcnVubmluZyk7CiBleHRlcm4gTGlzdCAqbG9naWNhbHJlcF93b3JrZXJz X2ZpbmQoT2lkIHN1YmlkLCBib29sIG9ubHlfcnVubmluZyk7Ci1leHRlcm4gdm9pZCBsb2dpY2Fs cmVwX3dvcmtlcl9sYXVuY2goT2lkIGRiaWQsIE9pZCBzdWJpZCwgY29uc3QgY2hhciAqc3VibmFt ZSwKLQkJCQkJCQkJCSBPaWQgdXNlcmlkLCBPaWQgcmVsaWQpOworZXh0ZXJuIGJvb2wgbG9naWNh bHJlcF93b3JrZXJfbGF1bmNoKE9pZCBkYmlkLCBPaWQgc3ViaWQsIGNvbnN0IGNoYXIgKnN1Ym5h bWUsCisJCQkJCQkJCQkgT2lkIHVzZXJpZCwgT2lkIHJlbGlkLAorCQkJCQkJCQkJIGRzbV9oYW5k bGUgc3Vid29ya2VyX2RzbSk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wKE9p ZCBzdWJpZCwgT2lkIHJlbGlkKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX3dha2V1 cChPaWQgc3ViaWQsIE9pZCByZWxpZCk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl93 YWtldXBfcHRyKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcik7CiAKIGV4dGVybiBpbnQJbG9naWNh bHJlcF9zeW5jX3dvcmtlcl9jb3VudChPaWQgc3ViaWQpOworZXh0ZXJuIGludAlsb2dpY2FscmVw X2FwcGx5X2Jnd29ya2VyX2NvdW50KE9pZCBzdWJpZCk7CiAKIGV4dGVybiB2b2lkIFJlcGxpY2F0 aW9uT3JpZ2luTmFtZUZvclRhYmxlc3luYyhPaWQgc3Vib2lkLCBPaWQgcmVsaWQsCiAJCQkJCQkJ CQkJCSAgY2hhciAqb3JpZ2lubmFtZSwgaW50IHN6b3JnbmFtZSk7CkBAIC0xMDMsMTAgKzE3OCw0 MiBAQCBleHRlcm4gdm9pZCBwcm9jZXNzX3N5bmNpbmdfdGFibGVzKFhMb2dSZWNQdHIgY3VycmVu dF9sc24pOwogZXh0ZXJuIHZvaWQgaW52YWxpZGF0ZV9zeW5jaW5nX3RhYmxlX3N0YXRlcyhEYXR1 bSBhcmcsIGludCBjYWNoZWlkLAogCQkJCQkJCQkJCQl1aW50MzIgaGFzaHZhbHVlKTsKIAorZXh0 ZXJuIHZvaWQgVXBkYXRlV29ya2VyU3RhdHMoWExvZ1JlY1B0ciBsYXN0X2xzbiwgVGltZXN0YW1w VHogc2VuZF90aW1lLAorCQkJCQkJCSAgYm9vbCByZXBseSk7CisKK2V4dGVybiB2b2lkIGFwcGx5 X2Rpc3BhdGNoKFN0cmluZ0luZm8gcyk7CisKK2V4dGVybiB2b2lkIEluaXRpYWxpemVBcHBseVdv cmtlcih2b2lkKTsKKworLyogRnVuY3Rpb24gZm9yIGFwcGx5IGVycm9yIGNhbGxiYWNrICovCitl eHRlcm4gdm9pZCBhcHBseV9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcpOworCitleHRlcm4gdm9p ZCBzdWJzY3JpcHRpb25fY2hhbmdlX2NiKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBo YXNodmFsdWUpOworCisvKiBBcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBzZXR1cCBhbmQgaW50ZXJh Y3Rpb25zICovCitleHRlcm4gQXBwbHlCZ3dvcmtlckluZm8gKmFwcGx5X2Jnd29ya2VyX3N0YXJ0 KFRyYW5zYWN0aW9uSWQgeGlkKTsKK2V4dGVybiBBcHBseUJnd29ya2VySW5mbyAqYXBwbHlfYmd3 b3JrZXJfZmluZChUcmFuc2FjdGlvbklkIHhpZCk7CitleHRlcm4gdm9pZCBhcHBseV9iZ3dvcmtl cl93YWl0X2ZvcihBcHBseUJnd29ya2VySW5mbyAqd3N0YXRlLAorCQkJCQkJCQkJQXBwbHlCZ3dv cmtlclN0YXR1cyB3YWl0X2Zvcl9zdGF0dXMpOworZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3JrZXJf c2VuZF9kYXRhKEFwcGx5Qmd3b3JrZXJJbmZvICp3c3RhdGUsIFNpemUgbmJ5dGVzLAorCQkJCQkJ CQkJIGNvbnN0IHZvaWQgKmRhdGEpOworZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3JrZXJfZnJlZShB cHBseUJnd29ya2VySW5mbyAqd3N0YXRlKTsKK2V4dGVybiB2b2lkIGFwcGx5X2Jnd29ya2VyX2No ZWNrX3N0YXR1cyh2b2lkKTsKK2V4dGVybiB2b2lkIGFwcGx5X2Jnd29ya2VyX3NldF9zdGF0dXMo QXBwbHlCZ3dvcmtlclN0YXR1cyBzdGF0dXMpOworZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3JrZXJf c3VieGFjdF9pbmZvX2FkZChUcmFuc2FjdGlvbklkIGN1cnJlbnRfeGlkKTsKK2V4dGVybiB2b2lk IGFwcGx5X2Jnd29ya2VyX3NhdmVwb2ludF9uYW1lKE9pZCBzdWJvaWQsIE9pZCByZWxpZCwKKwkJ CQkJCQkJCQkgIGNoYXIgKnNwbmFtZSwgaW50IHN6c3ApOworCiBzdGF0aWMgaW5saW5lIGJvb2wK IGFtX3RhYmxlc3luY193b3JrZXIodm9pZCkKIHsKIAlyZXR1cm4gT2lkSXNWYWxpZChNeUxvZ2lj YWxSZXBXb3JrZXItPnJlbGlkKTsKIH0KIAorc3RhdGljIGlubGluZSBib29sCithbV9hcHBseV9i Z3dvcmtlcih2b2lkKQoreworCXJldHVybiBNeUxvZ2ljYWxSZXBXb3JrZXItPm1haW5fd29ya2Vy X3BpZCAhPSAwOworfQorCiAjZW5kaWYJCQkJCQkJLyogV09SS0VSX0lOVEVSTkFMX0ggKi8KZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCBiL3NyYy9pbmNsdWRlL3V0 aWxzL3dhaXRfZXZlbnQuaAppbmRleCA2ZjJkNTYxLi44YWNlZTYzIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9l dmVudC5oCkBAIC0xMDUsNiArMTA1LDcgQEAgdHlwZWRlZiBlbnVtCiAJV0FJVF9FVkVOVF9IQVNI X0dST1dfQlVDS0VUU19BTExPQ0FURSwKIAlXQUlUX0VWRU5UX0hBU0hfR1JPV19CVUNLRVRTX0VM RUNULAogCVdBSVRfRVZFTlRfSEFTSF9HUk9XX0JVQ0tFVFNfUkVJTlNFUlQsCisJV0FJVF9FVkVO VF9MT0dJQ0FMX0FQUExZX0JHV09SS0VSX1NUQVRFX0NIQU5HRSwKIAlXQUlUX0VWRU5UX0xPR0lD QUxfU1lOQ19EQVRBLAogCVdBSVRfRVZFTlRfTE9HSUNBTF9TWU5DX1NUQVRFX0NIQU5HRSwKIAlX QUlUX0VWRU5UX01RX0lOVEVSTkFMLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9zdWJzY3JpcHRpb24ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3Jp cHRpb24ub3V0CmluZGV4IGVmMGViZjkuLjk5YjllODYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKQEAgLTIxNyw5ICsyMTcsOSBAQCBBTFRFUiBTVUJTQ1JJ UFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CiAoMSByb3cpCiAK IERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjsKLS0tIGZhaWwgLSBzdHJlYW1pbmcg bXVzdCBiZSBib29sZWFuCistLSBmYWlsIC0gc3RyZWFtaW5nIG11c3QgYmUgYm9vbGVhbiBvciAn cGFyYWxsZWwnCiBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9O ICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAo Y29ubmVjdCA9IGZhbHNlLCBzdHJlYW1pbmcgPSBmb28pOwotRVJST1I6ICBzdHJlYW1pbmcgcmVx dWlyZXMgYSBCb29sZWFuIHZhbHVlCitFUlJPUjogIHN0cmVhbWluZyByZXF1aXJlcyBhIEJvb2xl YW4gdmFsdWUgb3IgInBhcmFsbGVsIgogLS0gbm93IGl0IHdvcmtzCiBDUkVBVEUgU1VCU0NSSVBU SU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhp c3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBzdHJlYW1pbmcg PSB0cnVlKTsKIFdBUk5JTkc6ICB0YWJsZXMgd2VyZSBub3Qgc3Vic2NyaWJlZCwgeW91IHdpbGwg aGF2ZSB0byBydW4gQUxURVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNIIFBVQkxJQ0FUSU9OIHRv IHN1YnNjcmliZSB0aGUgdGFibGVzCkBAIC0yMzAsNiArMjMwLDE0IEBAIFdBUk5JTkc6ICB0YWJs ZXMgd2VyZSBub3Qgc3Vic2NyaWJlZCwgeW91IHdpbGwgaGF2ZSB0byBydW4gQUxURVIgU1VCU0NS SVBUSU9OIC4uCiAgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8 IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHQgICAgICAgICB8IGQgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwg ZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKK0FMVEVSIFNVQlND UklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzdHJlYW1pbmcgPSBwYXJhbGxlbCk7CitcZFJz KworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMK KyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8 IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERp c2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBD b25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAg ICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgcCAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9 cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKygxIHJvdykKKwogQUxURVIgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHN0cmVhbWluZyA9IGZhbHNlKTsKIEFMVEVSIFNVQlNDUklQ VElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKIFxkUnMrCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNxbAppbmRleCA0NDI1ZmFmLi5lZDE0OGU0IDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsCisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNjcmlwdGlvbi5zcWwKQEAgLTE1Niw3ICsxNTYsNyBAQCBBTFRF UiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CiAK IERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjsKIAotLS0gZmFpbCAtIHN0cmVhbWlu ZyBtdXN0IGJlIGJvb2xlYW4KKy0tIGZhaWwgLSBzdHJlYW1pbmcgbXVzdCBiZSBib29sZWFuIG9y ICdwYXJhbGxlbCcKIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJ T04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCTElDQVRJT04gdGVzdHB1YiBXSVRI IChjb25uZWN0ID0gZmFsc2UsIHN0cmVhbWluZyA9IGZvbyk7CiAKIC0tIG5vdyBpdCB3b3JrcwpA QCAtMTY0LDYgKzE2NCwxMCBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBD T05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQgogCiBcZFJzKwogCitB TFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gcGFyYWxs ZWwpOworCitcZFJzKworCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAo c3RyZWFtaW5nID0gZmFsc2UpOwogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBT RVQgKHNsb3RfbmFtZSA9IE5PTkUpOwogCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDM1 YzlmMWUuLjllZjdiYzEgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xMTYsNiArMTE2 LDEwIEBAIEFwcGVuZAogQXBwZW5kUGF0aAogQXBwZW5kUmVsSW5mbwogQXBwZW5kU3RhdGUKK0Fw cGx5Qmd3b3JrZXJFbnRyeQorQXBwbHlCZ3dvcmtlclNoYXJlZAorQXBwbHlCZ3dvcmtlckluZm8K K0FwcGx5Qmd3b3JrZXJTdGF0dXMKIEFwcGx5RXJyb3JDYWxsYmFja0FyZwogQXBwbHlFeGVjdXRp b25EYXRhCiBBcHBseVN1YlhhY3REYXRhCkBAIC0xNDg1LDYgKzE0ODksNyBAQCBMb2dpY2FsUmVw UmVsSWQKIExvZ2ljYWxSZXBSZWxNYXBFbnRyeQogTG9naWNhbFJlcFJlbGF0aW9uCiBMb2dpY2Fs UmVwUm9sbGJhY2tQcmVwYXJlZFR4bkRhdGEKK0xvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEKIExv Z2ljYWxSZXBUdXBsZURhdGEKIExvZ2ljYWxSZXBUeXAKIExvZ2ljYWxSZXBXb3JrZXIKLS0gCjIu Ny4yLndpbmRvd3MuMQoK --_006_OS0PR01MB57160A440C9821C48ABD4D9C94649OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v21-0002-Test-streaming-parallel-option-in-tap-test.patch" Content-Description: v21-0002-Test-streaming-parallel-option-in-tap-test.patch Content-Disposition: attachment; filename="v21-0002-Test-streaming-parallel-option-in-tap-test.patch"; size=70796; creation-date="Thu, 11 Aug 2022 07:47:00 GMT"; modification-date="Thu, 11 Aug 2022 07:47:57 GMT" Content-Transfer-Encoding: base64 RnJvbSAzYTVkYzUwYWMwZjExZWNlOWU5MGI3NjhjMzVlMzc0ZDMwZjlmNmQ1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAic2hpeS5mbnN0IiA8c2hpeS5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBGcmksIDEzIE1heSAyMDIyIDE0OjUwOjMwICswODAwClN1YmplY3Q6IFtQQVRDSCB2MjEg Mi81XSBUZXN0IHN0cmVhbWluZyBwYXJhbGxlbCBvcHRpb24gaW4gdGFwIHRlc3QKCkNoYW5nZSBh bGwgVEFQIHRlc3RzIHVzaW5nIHRoZSBTVUJTQ1JJUFRJT04gInN0cmVhbWluZyIgcGFyYW1ldGVy LCBzbyB0aGV5Cm5vdyB0ZXN0IGJvdGggJ29uJyBhbmQgJ3BhcmFsbGVsJyB2YWx1ZXMuCi0tLQog c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgICAgICAgfCAxOTkg KysrKystLS0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbCAg ICAgIHwgMTIxICsrKy0tCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTdfc3RyZWFtX2RkbC5w bCAgICAgICAgICB8IDE5NCArKysrKy0tLQogLi4uL3N1YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1f c3VieGFjdF9hYm9ydC5wbCAgICAgfCAyMDEgKysrKysrLS0tCiAuLi4vc3Vic2NyaXB0aW9uL3Qv MDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbCB8IDExMiArKystLQogc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwgICAgfCAzNjMgKysrKysrKystLS0t LS0tCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsICAgICB8 IDQ5OCArKysrKysrKysrKystLS0tLS0tLS0KIDcgZmlsZXMgY2hhbmdlZCwgMTA0MyBpbnNlcnRp b25zKCspLCA2NDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE1X3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0u cGwKaW5kZXggY2JhYTMyNy4uOWY0OTQ2ZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE1X3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3Ry ZWFtLnBsCkBAIC04LDYgKzgsMTE2IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwog dXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgRW5jYXBz dWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3Ry ZWFtaW5nIgorIyBwYXJhbWV0ZXIgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9y IHRoZSBzdHJlYW1pbmc9b24gYW5kCisjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0 ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIs ICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87CisKKwkjIEludGVybGVhdmUgYSBwYWlyIG9m IHRyYW5zYWN0aW9ucywgZWFjaCBleGNlZWRpbmcgdGhlIDY0a0IgbGltaXQuCisJbXkgJGluICA9 ICcnOworCW15ICRvdXQgPSAnJzsKKworCW15ICR0aW1lciA9IElQQzo6UnVuOjp0aW1lb3V0KCRQ b3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0KTsKKworCW15ICRoID0gJG5v ZGVfcHVibGlzaGVyLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgXCRpbiwgXCRvdXQsICR0 aW1lciwKKwkJb25fZXJyb3Jfc3RvcCA9PiAwKTsKKworCSMgQ2hlY2sgdGhhdCBhIGJhY2tncm91 bmQgd29ya2VyIHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBwYXJhbWV0ZXIgaXMKKwkjIHNwZWNpZmll ZCBhcyAicGFyYWxsZWwiLiAgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNz YWdlcworCSMgYWJvdXQgdGhhdCwgc28gdGVtcG9yYXJpbHkgYnVtcCB1cCB0aGUgbG9nIHZlcmJv c2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5k X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIp OworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJJGluIC49IHF7CisJQkVHSU47 CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVy YXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShi KSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEs MykgPSAwOworCX07CisJJGgtPnB1bXBfbmI7CisKKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJ JG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyL1xbQXBwbHkgQkdXICNcZCtcXSBzdGFy dGVkLywgMCk7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNv bmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmli ZXItPnJlbG9hZDsKKwl9CisKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3Rn cmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsIDk5OTkpIHMoaSk7CisJREVMRVRFIEZS T00gdGVzdF90YWIgV0hFUkUgYSA+IDUwMDA7CisJQ09NTUlUOworCX0pOworCisJJGluIC49IHF7 CisJQ09NTUlUOworCVxxCisJfTsKKwkkaC0+ZmluaXNoOyAgICAjIGVycm9ycyBtYWtlIHRoZSBu ZXh0IHRlc3QgZmFpbCwgc28gaWdub3JlIHRoZW0gaGVyZQorCisJJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCW15ICRyZXN1bHQgPQorCSAgJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMzMz NHwzMzM0fDMzMzQpLAorCQknY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1 bHRzJyk7CisKKwkjIFRlc3QgdGhlIHN0cmVhbWluZyBpbiBiaW5hcnkgbW9kZQorCSRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiQUxURVIgU1VCU0NSSVBUSU9OIHRh cF9zdWIgU0VUIChiaW5hcnkgPSBvbikiKTsKKworCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0 ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLCAx MDAwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEs MikgPSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlDT01N SVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCisJJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVz dF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2NyksCisJCSdjaGVjayBleHRy YSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsKKworCSMgQ2hhbmdlIHRoZSBsb2Nh bCB2YWx1ZXMgb2YgdGhlIGV4dHJhIGNvbHVtbnMgb24gdGhlIHN1YnNjcmliZXIsCisJIyB1cGRh dGUgcHVibGlzaGVyLCBhbmQgY2hlY2sgdGhhdCBzdWJzY3JpYmVyIHJldGFpbnMgdGhlIGV4cGVj dGVkCisJIyB2YWx1ZXMuIFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgbm9uLXN0cmVhbWluZyB0cmFu c2FjdGlvbnMgYmVoYXZlCisJIyBwcm9wZXJseSBhZnRlciBhIHN0cmVhbWluZyB0cmFuc2FjdGlv bi4KKwkkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlVQREFURSB0 ZXN0X3RhYiBTRVQgYyA9ICdlcG9jaCc6OnRpbWVzdGFtcHR6ICsgOTg3NjU0MzIxICogaW50ZXJ2 YWwgJzFzJyIKKwkpOworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYTo6dGV4dCkiKTsKKworCSRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 KGV4dHJhY3QoZXBvY2ggZnJvbSBjKSA9IDk4NzY1NDMyMSksIGNvdW50KGQgPSA5OTkpIEZST00g dGVzdF90YWIiCisJKTsKKwlpcygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2NyksCisJCSdjaGVj ayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWxseSBjaGFuZ2VkIGRhdGEnKTsKKworCSMgQ2xl YW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMikiKTsKKwkkbm9kZV9wdWJs aXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworfQorCiAjIENyZWF0ZSBwdWJsaXNo ZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+ bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5n ID0+ICdsb2dpY2FsJyk7CkBAIC0zNyw2ICsxNDcsMTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxF IHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04g JyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElP TiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9IG9uKSIKICk7CkBAIC00OSw4MiArMTYzLDI1IEBA IG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5 KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8MiksICdjaGVjayBpbml0aWFs IGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMgSW50ZXJsZWF2ZSBhIHBhaXIg b2YgdHJhbnNhY3Rpb25zLCBlYWNoIGV4Y2VlZGluZyB0aGUgNjRrQiBsaW1pdC4KLW15ICRpbiAg PSAnJzsKLW15ICRvdXQgPSAnJzsKLQotbXkgJHRpbWVyID0gSVBDOjpSdW46OnRpbWVvdXQoJFBv c3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQpOwotCi1teSAkaCA9ICRub2Rl X3B1Ymxpc2hlci0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIFwkaW4sIFwkb3V0LCAkdGlt ZXIsCi0Jb25fZXJyb3Jfc3RvcCA9PiAwKTsKLQotJGluIC49IHF7Ci1CRUdJTjsKLUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MywgNTAwMCkgcyhpKTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2Qo YSwyKSA9IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci19Owot JGgtPnB1bXBfbmI7Ci0KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jlcycs IHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSwgOTk5OSkgcyhpKTsKLURFTEVURSBGUk9NIHRlc3Rf dGFiIFdIRVJFIGEgPiA1MDAwOwotQ09NTUlUOwotfSk7Ci0KLSRpbiAuPSBxewotQ09NTUlUOwot XHEKLX07Ci0kaC0+ZmluaXNoOyAgICAjIGVycm9ycyBtYWtlIHRoZSBuZXh0IHRlc3QgZmFpbCwg c28gaWdub3JlIHRoZW0gaGVyZQotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZS T00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwgJ2NoZWNrIGV4 dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycpOwordGVzdF9zdHJlYW1pbmcoJG5v ZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7CiAKLSMgVGVzdCB0 aGUgc3RyZWFtaW5nIGluIGJpbmFyeSBtb2RlCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKLQkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUIChiaW5hcnkgPSBv bikiKTsKLQotIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2Vl ZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jl cycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSwgMTAwMDApIHMoaSk7Ci1VUERBVEUgdGVzdF90 YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90 YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotQ09NTUlUOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwg Y291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoNjY2N3w2NjY3 fDY2NjcpLCAnY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJyk7Cisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVh bWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25f bmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorKTsKIAotIyBDaGFu Z2UgdGhlIGxvY2FsIHZhbHVlcyBvZiB0aGUgZXh0cmEgY29sdW1ucyBvbiB0aGUgc3Vic2NyaWJl ciwKLSMgdXBkYXRlIHB1Ymxpc2hlciwgYW5kIGNoZWNrIHRoYXQgc3Vic2NyaWJlciByZXRhaW5z IHRoZSBleHBlY3RlZAotIyB2YWx1ZXMuIFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgbm9uLXN0cmVh bWluZyB0cmFuc2FjdGlvbnMgYmVoYXZlCi0jIHByb3Blcmx5IGFmdGVyIGEgc3RyZWFtaW5nIHRy YW5zYWN0aW9uLgogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlVQ REFURSB0ZXN0X3RhYiBTRVQgYyA9ICdlcG9jaCc6OnRpbWVzdGFtcHR6ICsgOTg3NjU0MzIxICog aW50ZXJ2YWwgJzFzJyIKLSk7Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAotCSJVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYTo6dGV4dCkiKTsKKwkiQUxURVIgU1VC U0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsLCBiaW5hcnkgPSBvZmYp Iik7CiAKLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ciskbm9k ZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAh PSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1l ID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisg ICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFu Z2luZyBTVUJTQ1JJUFRJT04iOwogCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoZXh0cmFjdChlcG9jaCBm cm9tIGMpID0gOTg3NjU0MzIxKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIKLSk7Ci1p cygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2NyksCi0JJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29u dGFpbiBsb2NhbGx5IGNoYW5nZWQgZGF0YScpOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlz aGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CiAKICRub2RlX3N1YnNjcmliZXIt PnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMTZfc3RyZWFtX3N1YnhhY3QucGwKaW5kZXggYmMwYTljZC4uMTA0YTE2OSAxMDA2NDQKLS0t IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsCisrKyBiL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbApAQCAtOCw2ICs4LDcy IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6 OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24g dGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgorIyBwYXJhbWV0ZXIg c28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5k CisjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15 ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxs ZWwpID0gQF87CisKKwkjIENoZWNrIHRoYXQgYSBiYWNrZ3JvdW5kIHdvcmtlciBzdGFydHMgaWYg InN0cmVhbWluZyIgcGFyYW1ldGVyIGlzCisJIyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIi4gIFdl IGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMKKwkjIGFib3V0IHRoYXQs IHNvIHRlbXBvcmFyaWx5IGJ1bXAgdXAgdGhlIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJh bGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNv bmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKwkJJG5vZGVfc3Vic2NyaWJl ci0+cmVsb2FkOworCX0KKworCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93 cyB0byBleGNlZWQgNjRrQiBsaW1pdC4KKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJ J3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwg bWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKCAgICAzLCAgNTAwKSBzKGkpOworCVVQ REFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVMRVRF IEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCVNBVkVQT0lOVCBzMTsKKwlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDUwMSwgIDEwMDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdI RVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9 IDA7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwgIDE1MDApIHMoaSk7CisJVVBEQVRF IHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJP TSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJU0FWRVBPSU5UIHMzOworCUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MTUwMSwgIDIwMDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJF IG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7 CisJU0FWRVBPSU5UIHM0OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6 dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjAwMSwgMjUwMCkgcyhpKTsKKwlVUERBVEUgdGVz dF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCURFTEVURSBGUk9NIHRl c3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlDT01NSVQ7CisJfSk7CisKKwlpZiAoJGlzX3Bh cmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyL1xbQXBwbHkg QkdXICNcZCtcXSBzdGFydGVkLywgMCk7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25m KCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJ CSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyks IGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgxNjY3fDE2 Njd8MTY2NyksCisJCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJl YW1pbmcgbW9kZSBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7 CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpIik7CisJ JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKK30KKwogIyBDcmVh dGUgcHVibGlzaGVyIG5vZGUKIG15ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6 OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiAkbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dz X3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwpAQCAtMzcsNiArMTAzLDEwIEBAICRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHVi IEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKworIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9k ZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBD T05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScg UFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcgPSBvbikiCiApOwpAQCAtNDksNDEg KzExOSwyNiBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291 bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwyfDIpLCAnY2hl Y2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi0jIEluc2VydCwg dXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIDY0a0IgbGltaXQuCi0kbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVz KCAgICAzLCAgNTAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJF IG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsK LVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLCAgMTAwMCkgcyhpKTsKLVVQREFURSB0ZXN0X3Rh YiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3Rh YiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3Rh YiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEsICAxNTAw KSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0g MDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLVNBVkVQT0lOVCBz MzsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMTUwMSwgIDIwMDApIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBt ZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9k KGEsMykgPSAwOwotU0FWRVBPSU5UIHM0OwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAxLCAyNTAwKSBzKGkpOwotVVBE QVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBG Uk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwg Y291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFx KDE2Njd8MTY2N3wxNjY3KSwKLQknY2hlY2sgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIg aW4gc3RyZWFtaW5nIG1vZGUgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0 cycKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFw cG5hbWUsIDApOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBU ZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hF UkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7 IgogKTsKIAorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVS IFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsKKworJG5v ZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQg IT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFt ZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9yIGRpZQor ICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hh bmdpbmcgU1VCU0NSSVBUSU9OIjsKKwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAk bm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CisKICRub2RlX3N1YnNjcmliZXItPnN0b3A7 CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAxN19zdHJlYW1fZGRsLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0 cmVhbV9kZGwucGwKaW5kZXggODY2ZjE1MS4uZWNhYzNhMyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwKQEAgLTgsNiArOCwxMTEgQEAgdXNlIFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6 TW9yZTsKIAorIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFy ZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCisjIHBhcmFtZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNh biBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQKKyMgc3RyZWFtaW5nPXBhcmFs bGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwg JG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJhbGxlbCkgPSBAXzsKKworCSMgYSBz bWFsbCAobm9uLXN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCisJJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJU IElOVE8gdGVzdF90YWIgVkFMVUVTICgzLCBtZDUoMzo6dGV4dCkpOworCUFMVEVSIFRBQkxFIHRl c3RfdGFiIEFERCBDT0xVTU4gYyBJTlQ7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRl c3RfdGFiIFZBTFVFUyAoNCwgbWQ1KDQ6OnRleHQpLCAtNCk7CisJQ09NTUlUOworCX0pOworCisJ IyBDaGVjayB0aGF0IGEgYmFja2dyb3VuZCB3b3JrZXIgc3RhcnRzIGlmICJzdHJlYW1pbmciIHBh cmFtZXRlciBpcworCSMgc3BlY2lmaWVkIGFzICJwYXJhbGxlbCIuICBXZSBoYXZlIHRvIGxvb2sg Zm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzCisJIyBhYm91dCB0aGF0LCBzbyB0ZW1wb3Jhcmls eSBidW1wIHVwIHRoZSBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkk bm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2df bWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9 CisKKwkjIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTAorCSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlO U0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pIEZST00gZ2VuZXJh dGVfc2VyaWVzKDUsIDEwMDApIHMoaSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVN TiBkIElOVDsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSwgLWksIDIqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLCAyMDAwKSBz KGkpOworCUNPTU1JVDsKKwl9KTsKKworCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9z dWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvXFtBcHBseSBCR1cgI1xkK1xdIHN0YXJ0ZWQvLCAw KTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJ CQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVs b2FkOworCX0KKworCSMgYSBzbWFsbCAobm9uLXN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERE TCBhbmQgRE1MCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7 CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgyMDAxLCBtZDUoMjAwMTo6 dGV4dCksIC0yMDAxLCAyKjIwMDEpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4g ZSBJTlQ7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMjAw MiwgbWQ1KDIwMDI6OnRleHQpLCAtMjAwMiwgMioyMDAyLCAtMyoyMDAyKTsKKwlDT01NSVQ7CisJ fSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJ bXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQpLCBjb3VudChlKSBGUk9NIHRl c3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMjAwMnwxOTk5fDEwMDJ8MSksCisJCSdjaGVjayBk YXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEg Y29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIEEgbGFyZ2UgKHN0cmVh bWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MLiBPbmUgb2YgdGhlIERETCBpcyBwZXJm b3JtZWQKKwkjIGFmdGVyIERNTCB0byBlbnN1cmUgdGhhdCB3ZSBpbnZhbGlkYXRlIHRoZSBzY2hl bWEgc2VudCBmb3IgdGVzdF90YWIgc28gdGhhdAorCSMgdGhlIG5leHQgdHJhbnNhY3Rpb24gaGFz IHRvIHNlbmQgdGhlIHNjaGVtYSBhZ2Fpbi4KKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgK KwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1Qg aSwgbWQ1KGk6OnRleHQpLCAtaSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDMs NTAwMCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGYgSU5UOworCUNP TU1JVDsKKwl9KTsKKworCSMgQSBzbWFsbCB0cmFuc2FjdGlvbiB0aGF0IHdvbid0IGdldCBzdHJl YW1lZC4gVGhpcyBpcyBqdXN0IHRvIGVuc3VyZSB0aGF0IHdlCisJIyBzZW5kIHRoZSBzY2hlbWEg YWdhaW4gdG8gcmVmbGVjdCB0aGUgbGFzdCBjb2x1bW4gYWRkZWQgaW4gdGhlIHByZXZpb3VzIHRl c3QuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVH SU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIq aSwgLTMqaSwgNCppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsNTAwNSkgcyhpKTsKKwlDT01N SVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCksIGNvdW50KGUpLCBjb3VudChm KSBGUk9NIHRlc3RfdGFiIgorCSk7CisJaXMoJHJlc3VsdCwgcXEoNTAwNXw1MDAyfDQwMDV8MzAw NHw1KSwKKwkJJ2NoZWNrIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyIGZvciBib3RoIHN0 cmVhbWluZyBhbmQgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMnCisJKTsKKworCSMgQ2xlYW51 cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jl cycsIHF7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgKGEgPiAyKTsKKwlBTFRFUiBUQUJM RSB0ZXN0X3RhYiBEUk9QIENPTFVNTiBjLCBEUk9QIENPTFVNTiBkLCBEUk9QIENPTFVNTiBlLCBE Uk9QIENPTFVNTiBmOworCX0pOworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7Cit9CisKICMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJsaXNo ZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVf cHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAgLTM3LDYg KzE0MiwxMCBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVB VEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKIAogbXkgJGFwcG5h bWUgPSAndGFwX3N1Yic7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRl c3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUg U1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxp Y2F0aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJQ0FUSU9OIHRhcF9wdWIgV0lUSCAoc3RyZWFtaW5n ID0gb24pIgogKTsKQEAgLTQ5LDc3ICsxNTgsMjYgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBj b3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKIGlzKCRy ZXN1bHQsIHFxKDJ8MHwwKSwgJ2NoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNj cmliZXInKTsKIAotIyBhIHNtYWxsIChub24tc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERM IGFuZCBETUwKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1C RUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMywgbWQ1KDM6OnRleHQpKTsKLUFM VEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gYyBJTlQ7Ci1TQVZFUE9JTlQgczE7Ci1JTlNF UlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDQsIG1kNSg0Ojp0ZXh0KSwgLTQpOwotQ09NTUlUOwot fSk7Ci0KLSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCi0k bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSBGUk9NIGdlbmVyYXRl X3Nlcmllcyg1LCAxMDAwKSBzKGkpOwotQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBk IElOVDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCksIC1pLCAyKmkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwgMjAwMCkgcyhpKTsK LUNPTU1JVDsKLX0pOwotCi0jIGEgc21hbGwgKG5vbi1zdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0 aCBEREwgYW5kIERNTAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywg cXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgyMDAxLCBtZDUoMjAwMTo6 dGV4dCksIC0yMDAxLCAyKjIwMDEpOwotQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBl IElOVDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMjAwMiwg bWQ1KDIwMDI6OnRleHQpLCAtMjAwMiwgMioyMDAyLCAtMyoyMDAyKTsKLUNPTU1JVDsKLX0pOwot Ci0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0 ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBj b3VudCgqKSwgY291bnQoYyksIGNvdW50KGQpLCBjb3VudChlKSBGUk9NIHRlc3RfdGFiIik7Ci1p cygkcmVzdWx0LCBxcSgyMDAyfDE5OTl8MTAwMnwxKSwKLQknY2hlY2sgZGF0YSB3YXMgY29waWVk IHRvIHN1YnNjcmliZXIgaW4gc3RyZWFtaW5nIG1vZGUgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFp biBsb2NhbCBkZWZhdWx0cycKLSk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRu b2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKIAotIyBBIGxhcmdlIChzdHJlYW1lZCkgdHJh bnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTC4gT25lIG9mIHRoZSBEREwgaXMgcGVyZm9ybWVkCi0j IGFmdGVyIERNTCB0byBlbnN1cmUgdGhhdCB3ZSBpbnZhbGlkYXRlIHRoZSBzY2hlbWEgc2VudCBm b3IgdGVzdF90YWIgc28gdGhhdAotIyB0aGUgbmV4dCB0cmFuc2FjdGlvbiBoYXMgdG8gc2VuZCB0 aGUgc2NoZW1hIGFnYWluLgotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVz JywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0 KSwgLWksIDIqaSwgLTMqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAzLDUwMDApIHMoaSk7Ci1B TFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGYgSU5UOwotQ09NTUlUOwotfSk7Ci0KLSMg QSBzbWFsbCB0cmFuc2FjdGlvbiB0aGF0IHdvbid0IGdldCBzdHJlYW1lZC4gVGhpcyBpcyBqdXN0 IHRvIGVuc3VyZSB0aGF0IHdlCi0jIHNlbmQgdGhlIHNjaGVtYSBhZ2FpbiB0byByZWZsZWN0IHRo ZSBsYXN0IGNvbHVtbiBhZGRlZCBpbiB0aGUgcHJldmlvdXMgdGVzdC4KLSRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmksIC0zKmksIDQqaSBGUk9NIGdlbmVy YXRlX3Nlcmllcyg1MDAxLDUwMDUpIHMoaSk7Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 KGMpLCBjb3VudChkKSwgY291bnQoZSksIGNvdW50KGYpIEZST00gdGVzdF90YWIiKTsKLWlzKCRy ZXN1bHQsIHFxKDUwMDV8NTAwMnw0MDA1fDMwMDR8NSksCi0JJ2NoZWNrIGRhdGEgd2FzIGNvcGll ZCB0byBzdWJzY3JpYmVyIGZvciBib3RoIHN0cmVhbWluZyBhbmQgbm9uLXN0cmVhbWluZyB0cmFu c2FjdGlvbnMnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0 IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUg YXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7Igog KTsKIAorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNV QlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsKKworJG5vZGVf cHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0g JG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9 ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9yIGRpZQorICAi VGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdp bmcgU1VCU0NSSVBUSU9OIjsKKwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9k ZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CisKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAk bm9kZV9wdWJsaXNoZXItPnN0b3A7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbAppbmRleCA1NTFmMTZkLi4wNDE1ZWY3IDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQu cGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0 LnBsCkBAIC04LDYgKzgsMTEzIEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNl IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgRW5jYXBzdWxh dGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFt aW5nIgorIyBwYXJhbWV0ZXIgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRo ZSBzdHJlYW1pbmc9b24gYW5kCisjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0 X3N0cmVhbWluZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRh cHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87CisKKwkjIENoZWNrIHRoYXQgYSBiYWNrZ3JvdW5k IHdvcmtlciBzdGFydHMgaWYgInN0cmVhbWluZyIgcGFyYW1ldGVyIGlzCisJIyBzcGVjaWZpZWQg YXMgInBhcmFsbGVsIi4gIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2Fn ZXMKKwkjIGFib3V0IHRoYXQsIHNvIHRlbXBvcmFyaWx5IGJ1bXAgdXAgdGhlIGxvZyB2ZXJib3Np dHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9j b25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsK KwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSMgbGFyZ2UgKHN0cmVhbWVkKSB0 cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBST0xMQkFDS3MKKwkkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsNTAwKSBz KGkpOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMSwxMDAwKSBzKGkpOworCVNBVkVQT0lO VCBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEwMDEsMTUwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczM7CisJSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cygxNTAxLDIwMDApIHMoaSk7CisJUk9MTEJBQ0sgVE8gczI7CisJSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAxLDI1MDAp IHMoaSk7CisJUk9MTEJBQ0sgVE8gczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygyNTAxLDMwMDApIHMoaSk7CisJU0FW RVBPSU5UIHM0OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMzAwMSwzNTAwKSBzKGkpOworCVNBVkVQT0lOVCBzNTsKKwlJ TlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDM1MDEsNDAwMCkgcyhpKTsKKwlDT01NSVQ7CisJfSk7CisKKwlpZiAoJGlzX3BhcmFs bGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyL1xbQXBwbHkgQkdX ICNcZCtcXSBzdGFydGVkLywgMCk7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdw b3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRu b2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJP TSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDIwMDB8MCksCisJCSdjaGVjayByb2xsYmFj ayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyIGFuZCBleHRyYSBjb2x1 bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSMgbGFyZ2UgKHN0cmVhbWVkKSB0 cmFuc2FjdGlvbiB3aXRoIHN1YnNjcmliZXIgcmVjZWl2aW5nIG91dCBvZiBvcmRlcgorCSMgc3Vi dHJhbnNhY3Rpb24gUk9MTEJBQ0tzCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdw b3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg0MDAxLDQ1MDApIHMoaSk7CisJU0FWRVBP SU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSw1NTAwKSBzKGkpOworCVNBVkVQT0lOVCBzMjsKKwlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDYwMDEsNjUwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczM7CisJSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg3MDAxLDc1MDAp IHMoaSk7CisJUkVMRUFTRSBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDgwMDEsODUwMCkgcyhpKTsKKwlST0xMQkFD SyBUTyBzMTsKKwlDT01NSVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOworCisJJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0 X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDI1MDB8MCksCisJCSdjaGVjayByb2xsYmFjayB0byBz YXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIGxhcmdlIChzdHJl YW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyByb2xsYmFjaworCSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlO U0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoODUwMSw5MDAwKSBzKGkpOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDkwMDEsOTUw MCkgcyhpKTsKKwlTQVZFUE9JTlQgczI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg5NTAxLDEwMDAwKSBzKGkpOworCVJP TExCQUNLOworCX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKKworCSRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKKwlp cygkcmVzdWx0LCBxcSgyNTAwfDApLCAnY2hlY2sgcm9sbGJhY2sgd2FzIHJlZmxlY3RlZCBvbiBz dWJzY3JpYmVyJyk7CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAo YSA+IDIpIik7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsK K30KKwogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRub2RlX3B1Ymxpc2hlciA9IFBvc3Rn cmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiAkbm9kZV9wdWJsaXNoZXIt PmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwpAQCAtMzYsNiArMTQzLDEwIEBA ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNB VElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFtZSA9ICd0YXBf c3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBz dHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBTVUJTQ1JJUFRJ T04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFt ZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcgPSBvbikiCiAp OwpAQCAtNDgsODEgKzE1OSwyNSBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBj b3VudChjKSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDApLCAnY2hlY2sgaW5p dGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi0jIGxhcmdlIChzdHJlYW1l ZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwsIERNTCBhbmQgUk9MTEJBQ0tzCi0kbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsNTAwKSBz KGkpOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKLVNBVkVQT0lOVCBz MjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMTAwMSwxNTAwKSBzKGkpOwotU0FWRVBPSU5UIHMzOwotSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxNTAx LDIwMDApIHMoaSk7Ci1ST0xMQkFDSyBUTyBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjAwMSwyNTAwKSBzKGkpOwot Uk9MTEJBQ0sgVE8gczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDI1MDEsMzAwMCkgcyhpKTsKLVNBVkVQT0lOVCBzNDsK LUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMzAwMSwzNTAwKSBzKGkpOwotU0FWRVBPSU5UIHM1OwotSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzNTAxLDQw MDApIHMoaSk7Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIi KTsKLWlzKCRyZXN1bHQsIHFxKDIwMDB8MCksCi0JJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2lu dCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBs b2NhbCBkZWZhdWx0cycKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vi c2NyaWJlciwgJGFwcG5hbWUsIDApOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVw bGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0g J3N0cmVhbWluZyc7IgogKTsKIAotIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGgg c3Vic2NyaWJlciByZWNlaXZpbmcgb3V0IG9mIG9yZGVyCi0jIHN1YnRyYW5zYWN0aW9uIFJPTExC QUNLcwotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lO OwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVy YXRlX3Nlcmllcyg0MDAxLDQ1MDApIHMoaSk7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0 ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEs NTUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNjAwMSw2NTAwKSBzKGkpOwotU0FW RVBPSU5UIHMzOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3Nlcmllcyg3MDAxLDc1MDApIHMoaSk7Ci1SRUxFQVNFIHMyOwotSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cyg4MDAxLDg1MDApIHMoaSk7Ci1ST0xMQkFDSyBUTyBzMTsKLUNPTU1JVDsKLX0pOwotCi0kbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAg JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgq KSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMjUwMHwwKSwKLQkn Y2hlY2sgcm9sbGJhY2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlcicp OwotCi0jIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2Vp dmluZyByb2xsYmFjawotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywg cXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3Nlcmllcyg4NTAxLDkwMDApIHMoaSk7Ci1TQVZFUE9JTlQgczE7Ci1JTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDkwMDEsOTUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoOTUwMSwxMDAwMCkg cyhpKTsKLVJPTExCQUNLOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7 Ci1pcygkcmVzdWx0LCBxcSgyNTAwfDApLCAnY2hlY2sgcm9sbGJhY2sgd2FzIHJlZmxlY3RlZCBv biBzdWJzY3JpYmVyJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIp OworCiskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VM RUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNh dGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAg b3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBh ZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOworCit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJs aXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsKIAogJG5vZGVfc3Vic2NyaWJl ci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3RvcDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxfYWJvcnQucGwgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsCmluZGV4IDRkN2Rh ODIuLmNlZWJkMDMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJl YW1fc3VieGFjdF9kZGxfYWJvcnQucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE5 X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbApAQCAtOSw2ICs5LDY5IEBAIHVzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRl c3Q6Ok1vcmU7CiAKKyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGlj aCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgorIyBwYXJhbWV0ZXIgc28gdGhlIHNhbWUgY29k ZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kCisjIHN0cmVhbWluZz1w YXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9kZV9wdWJsaXNo ZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87CisKKwkj IENoZWNrIHRoYXQgYSBiYWNrZ3JvdW5kIHdvcmtlciBzdGFydHMgaWYgInN0cmVhbWluZyIgcGFy YW1ldGVyIGlzCisJIyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIi4gIFdlIGhhdmUgdG8gbG9vayBm b3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMKKwkjIGFib3V0IHRoYXQsIHNvIHRlbXBvcmFyaWx5 IGJ1bXAgdXAgdGhlIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRu b2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19t aW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0K KworCSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBST0xM QkFDS3MKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlC RUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDMsNTAwKSBzKGkpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBD T0xVTU4gYyBJTlQ7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCksIC1pIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMSwxMDAwKSBzKGkp OworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZCBJTlQ7CisJU0FWRVBPSU5UIHMy OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwxNTAwKSBzKGkpOworCUFMVEVSIFRBQkxFIHRlc3Rf dGFiIEFERCBDT0xVTU4gZSBJTlQ7CisJU0FWRVBPSU5UIHMzOworCUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmksIC0zKmkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMTUwMSwyMDAwKSBzKGkpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIERST1AgQ09MVU1O IGM7CisJUk9MTEJBQ0sgVE8gczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSwgaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKKwlDT01N SVQ7CisJfSk7CisKKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+ d2FpdF9mb3JfbG9nKHFyL1xbQXBwbHkgQkdXICNcZCtcXSBzdGFydGVkLywgMCk7CisJCSRub2Rl X3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5f bWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisK Kwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJbXkgJHJl c3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNF TEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFx KDEwMDB8NTAwKSwKKwkJJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVk IG9uIHN1YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycK KwkpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+ IDIpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIERST1AgQ09MVU1OIGM7CisJfSk7CisJJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKK30KKwogIyBDcmVhdGUgcHVi bGlzaGVyIG5vZGUKIG15ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0 ZXItPm5ldygncHVibGlzaGVyJyk7CiAkbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVh bWluZyA9PiAnbG9naWNhbCcpOwpAQCAtMzcsNiArMTAwLDEwIEBAICRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBU QUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24n CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNU SU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElD QVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcgPSBvbikiCiApOwpAQCAtNDksMzUgKzExNiwy NiBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3Rf dGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDApLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3Bp ZWQgdG8gc3Vic2NyaWJlcicpOwogCi0jIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0 aCBEREwsIERNTCBhbmQgUk9MTEJBQ0tzCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkn cG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsNTAwKSBzKGkpOwotQUxURVIgVEFCTEUg dGVzdF90YWIgQUREIENPTFVNTiBjIElOVDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUw MSwxMDAwKSBzKGkpOwotQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBkIElOVDsKLVNB VkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCks IC1pLCAyKmkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwxNTAwKSBzKGkpOwotQUxURVIgVEFC TEUgdGVzdF90YWIgQUREIENPTFVNTiBlIElOVDsKLVNBVkVQT0lOVCBzMzsKLUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmksIC0zKmkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMTUwMSwyMDAwKSBzKGkpOwotQUxURVIgVEFCTEUgdGVzdF90YWIgRFJPUCBD T0xVTU4gYzsKLVJPTExCQUNLIFRPIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSwgaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKLUNP TU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs Ci0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3Vs dCwgcXEoMTAwMHw1MDApLAotCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxl Y3RlZCBvbiBzdWJzY3JpYmVyIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVs dHMnCit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRh cHBuYW1lLCAwKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg VGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAncGFyYWxsZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdI RVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcn OyIKICk7CiAKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRF UiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQoc3RyZWFtaW5nID0gcGFyYWxsZWwpIik7CisKKyRu b2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlk ICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25h bWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyAgKQorICBvciBkaWUK KyAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNo YW5naW5nIFNVQlNDUklQVElPTiI7CisKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwg JG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOworCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9w OwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCmluZGV4IDdhNzk3ZjMuLjBhNDE1MmQgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCisrKyBi L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCkBAIC0xMSw2 ICsxMSwyMDggQEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNR TDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBFbmNhcHN1bGF0ZSBhbGwgdGhl IGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciIHBhcmFt ZXRlcgorIyBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWlu Zz1vbiBhbmQgc3RyZWFtaW5nPXBhcmFsbGVsCisjIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5n Cit7CisJbXkgKCRub2RlX0EsICRub2RlX0IsICRub2RlX0MsICRhcHBuYW1lX0IsICRhcHBuYW1l X0MsICRzdHJlYW1pbmdfbW9kZSkgPQorCSAgQF87CisKKwlteSAkb2xkcGlkX0IgPSAkbm9kZV9B LT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsICIKKwkJU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRf cmVwbGljYXRpb24KKwkJV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9CJyBBTkQg c3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsKKwlteSAkb2xkcGlkX0MgPSAkbm9kZV9CLT5zYWZlX3Bz cWwoCisJCSdwb3N0Z3JlcycsICIKKwkJU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRp b24KKwkJV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9DJyBBTkQgc3RhdGUgPSAn c3RyZWFtaW5nJzsiKTsKKworCSMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbiBzdHJlYW1pbmcg bW9kZQorCisJJG5vZGVfQi0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCAiCisJCUFMVEVSIFNV QlNDUklQVElPTiB0YXBfc3ViX0IKKwkJU0VUIChzdHJlYW1pbmcgPSAkc3RyZWFtaW5nX21vZGUp OyIpOworCSRub2RlX0MtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlBTFRFUiBTVUJT Q1JJUFRJT04gdGFwX3N1Yl9DCisJCVNFVCAoc3RyZWFtaW5nID0gJHN0cmVhbWluZ19tb2RlKSIp OworCisJIyBXYWl0IGZvciBzdWJzY3JpYmVycyB0byBmaW5pc2ggaW5pdGlhbGl6YXRpb24KKwor CSRub2RlX0EtPnBvbGxfcXVlcnlfdW50aWwoCisJCSdwb3N0Z3JlcycsICIKKwkJU0VMRUNUIHBp ZCAhPSAkb2xkcGlkX0IgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uCisJCVdIRVJFIGFwcGxpY2F0 aW9uX25hbWUgPSAnJGFwcG5hbWVfQicgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorCSkgb3Ig ZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCI7CisJJG5v ZGVfQi0+cG9sbF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlTRUxFQ1QgcGlkICE9 ICRvbGRwaWRfQyBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUgYXBwbGljYXRpb25f bmFtZSA9ICckYXBwbmFtZV9DJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisJKSBvciBkaWUg IlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IjsKKworCSMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUgLyBDT01NSVQg UFJFUEFSRUQuCisJIyAxLiBEYXRhIGlzIHN0cmVhbWVkIGFzIGEgMlBDIHRyYW5zYWN0aW9uLgor CSMgMi4gVGhlbiBkbyBjb21taXQgcHJlcGFyZWQuCisJIworCSMgRXhwZWN0IGFsbCBkYXRhIGlz IHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlcihzKSBhZnRlciB0aGUgY29tbWl0LgorCSMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgQ2hlY2sgdGhhdCBhIGJhY2tncm91bmQgd29y a2VyIHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBvcHRwYXJhbWV0ZXJpb24gaXMKKwkjIHNwZWNpZmll ZCBhcyAicGFyYWxsZWwiLiAgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNz YWdlcworCSMgYWJvdXQgdGhhdCwgc28gdGVtcG9yYXJpbHkgYnVtcCB1cCB0aGUgbG9nIHZlcmJv c2l0eS4KKwlpZiAoJHN0cmVhbWluZ19tb2RlIGVxICdwYXJhbGxlbCcpCisJeworCQkkbm9kZV9C LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1 ZzEiKTsKKwkJJG5vZGVfQi0+cmVsb2FkOworCisJCSRub2RlX0MtPmFwcGVuZF9jb25mKCdwb3N0 Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9DLT5y ZWxvYWQ7CisJfQorCisJIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRv IGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KKwkjIFRoZW4gMlBDIFBSRVBBUkUKKwkkbm9kZV9BLT5z YWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDAp IHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9 IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFS RSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJaWYgKCRzdHJlYW1pbmdf bW9kZSBlcSAncGFyYWxsZWwnKQorCXsKKwkJJG5vZGVfQi0+d2FpdF9mb3JfbG9nKHFyL1xbQXBw bHkgQkdXICNcZCtcXSBzdGFydGVkLywgMCk7CisJCSRub2RlX0ItPmFwcGVuZF9jb25mKCdwb3N0 Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfQi0+ cmVsb2FkOworCisJCSRub2RlX0MtPndhaXRfZm9yX2xvZyhxci9cW0FwcGx5IEJHVyAjXGQrXF0g c3RhcnRlZC8sIDApOworCQkkbm9kZV9DLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywg ImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX0MtPnJlbG9hZDsKKwl9CisK Kwkkbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOworCSRub2RlX0ItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7CisKKwkjIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0 ZSBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyKHMpCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9C LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBh cmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFy ZWQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9CisJICAkbm9kZV9DLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIp OworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2Ny aWJlciBDJyk7CisKKwkjIDJQQyBDT01NSVQKKwkkbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOworCisJJG5vZGVfQS0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKKwkkbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lX0MpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIHdhcyBjb21taXR0ZWQg b24gc3Vic2NyaWJlcihzKQorCSRyZXN1bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVz dF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCisJCSdSb3dzIGluc2Vy dGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyIEIsIGFuZCBleHRyYSBjb2x1 bW5zIGhhdmUgbG9jYWwgZGVmYXVsdHMnCisJKTsKKwkkcmVzdWx0ID0gJG5vZGVfQy0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0g OTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLAor CQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBDLCBh bmQgZXh0cmEgY29sdW1ucyBoYXZlIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIGNoZWNrIHRo ZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyKHMpCisJJHJlc3VsdCA9 CisJICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBG Uk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rp b24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQicpOworCSRyZXN1bHQgPQorCSAgJG5vZGVf Qy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVw YXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1p dHRlZCBvbiBzdWJzY3JpYmVyIEMnKTsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUgd2l0aCBhIG5lc3RlZCBST0xMQkFDSyBUTyBTQVZFUE9J TlQuCisJIyAwLiBDbGVhbnVwIGZyb20gcHJldmlvdXMgdGVzdCBsZWF2aW5nIG9ubHkgMiByb3dz LgorCSMgMS4gSW5zZXJ0IG9uZSBtb3JlIHJvdy4KKwkjIDIuIFJlY29yZCBhIFNBVkVQT0lOVC4K KwkjIDMuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgorCSMgNC4gRG8gcm9sbGJhY2sgdG8g U0FWRVBPSU5UIHByaW9yIHRvIHRoZSBzdHJlYW1lZCBpbnNlcnRzLgorCSMgNS4gVGhlbiBDT01N SVQgUFJFUEFSRUQuCisJIworCSMgRXhwZWN0IGRhdGEgYWZ0ZXIgdGhlIFNBVkVQT0lOVCBpcyBh Ym9ydGVkIGxlYXZpbmcgb25seSAzIHJvd3MgKD0gMiBvcmlnaW5hbCArIDEgZnJvbSBzdGVwIDEp LgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgRmlyc3QsIGRlbGV0ZSB0 aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAoZGVsZXRlIHdpbGwgYmUgcmVwbGljYXRlZCkKKwkk bm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJF IGEgPiAyOyIpOworCisJIyAyUEMgUFJFUEFSRSB3aXRoIGEgbmVzdGVkIFJPTExCQUNLIFRPIFNB VkVQT0lOVAorCSRub2RlX0EtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlCRUdJTjsK KwkJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg5OTk5LCAnZm9vYmFyJyk7CisJCVNBVkVQ T0lOVCBzcF9pbm5lcjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0 ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90 YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0 X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVJPTExCQUNLIFRPIFNBVkVQT0lOVCBzcF9pbm5l cjsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAnb3V0ZXInOworCQkiKTsKKworCSRub2RlX0EtPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZV9DKTsKKworCSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIHByZXBhcmVkIG9u IHN1YnNjcmliZXIocykKKwkkcmVzdWx0ID0KKwkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMo JHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEIn KTsKKwkkcmVzdWx0ID0KKwkgICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VM RUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEo MSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEMnKTsKKworCSMgMlBD IENPTU1JVAorCSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ09NTUlUIFBSRVBBUkVE ICdvdXRlcic7Iik7CisKKwkkbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOwor CSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7CisKKwkjIGNoZWNrIHRoZSB0 cmFuc2FjdGlvbiBzdGF0ZSBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9CisJICAk bm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBn X3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMg ZW5kZWQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9CisJICAkbm9kZV9DLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3Rz OyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgZW5kZWQgb24gc3Vic2Ny aWJlciBDJyk7CisKKwkjIGNoZWNrIGluc2VydHMgYXJlIHZpc2libGUgYXQgc3Vic2NyaWJlcihz KS4KKwkjIEFsbCB0aGUgc3RyZWFtZWQgZGF0YSAocHJpb3IgdG8gdGhlIFNBVkVQT0lOVCkgc2hv dWxkIGJlIHJvbGxlZCBiYWNrLgorCSMgKDk5OTksICdmb29iYXInKSBzaG91bGQgYmUgY29tbWl0 dGVkLgorCSRyZXN1bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVD VCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsKKwlpcygkcmVz dWx0LCBxcSgxKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQicp OworCSRyZXN1bHQgPQorCSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qg Y291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsKKwlpcygkcmVzdWx0LCBxcSgzKSwgJ1Jvd3MgY29t bWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQicpOworCSRyZXN1bHQgPSAkbm9kZV9D LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFi IHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ1Jvd3MgY29tbWl0 dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQycpOworCSRyZXN1bHQgPQorCSAgJG5vZGVf Qy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjsi KTsKKwlpcygkcmVzdWx0LCBxcSgzKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1 YnNjcmliZXIgQycpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9BLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOwor CSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7CisJJG5vZGVfQi0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKK30KKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwogIyBTZXR1cCBhIGNhc2NhZGUgb2YgcHViL3N1YiBub2Rlcy4KICMgbm9kZV9BIC0+IG5v ZGVfQiAtPiBub2RlX0MKQEAgLTI2MCwxNjAgKzQ2MiwxNSBAQCBpcygkcmVzdWx0LCBxcSgyMSks ICdSb3dzIGNvbW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3JpYmVyIEMnKTsKICMgMlBDICsg U1RSRUFNSU5HIFRFU1RTCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1teSAkb2xkcGlkX0Ig PSAkbm9kZV9BLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgIgotCVNFTEVDVCBwaWQgRlJPTSBw Z19zdGF0X3JlcGxpY2F0aW9uCi0JV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9C JyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsKLW15ICRvbGRwaWRfQyA9ICRub2RlX0ItPnNh ZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAiCi0JU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGlj YXRpb24KLQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lX0MnIEFORCBzdGF0ZSA9 ICdzdHJlYW1pbmcnOyIpOwotCi0jIFNldHVwIGxvZ2ljYWwgcmVwbGljYXRpb24gKHN0cmVhbWlu ZyA9IG9uKQotCi0kbm9kZV9CLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgIgotCUFMVEVSIFNV QlNDUklQVElPTiB0YXBfc3ViX0IKLQlTRVQgKHN0cmVhbWluZyA9IG9uKTsiKTsKLSRub2RlX0Mt PnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAiCi0JQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWJf QwotCVNFVCAoc3RyZWFtaW5nID0gb24pIik7Ci0KLSMgV2FpdCBmb3Igc3Vic2NyaWJlcnMgdG8g ZmluaXNoIGluaXRpYWxpemF0aW9uCi0KLSRub2RlX0EtPnBvbGxfcXVlcnlfdW50aWwoCi0JJ3Bv c3RncmVzJywgIgotCVNFTEVDVCBwaWQgIT0gJG9sZHBpZF9CIEZST00gcGdfc3RhdF9yZXBsaWNh dGlvbgotCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQicgQU5EIHN0YXRlID0g J3N0cmVhbWluZyc7IgotKSBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBs eSB0byByZXN0YXJ0IjsKLSRub2RlX0ItPnBvbGxfcXVlcnlfdW50aWwoCi0JJ3Bvc3RncmVzJywg IgotCVNFTEVDVCBwaWQgIT0gJG9sZHBpZF9DIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbgotCVdI RVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQycgQU5EIHN0YXRlID0gJ3N0cmVhbWlu Zyc7IgotKSBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0 YXJ0IjsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBUZXN0IDJQQyBQUkVQ QVJFIC8gQ09NTUlUIFBSRVBBUkVELgotIyAxLiBEYXRhIGlzIHN0cmVhbWVkIGFzIGEgMlBDIHRy YW5zYWN0aW9uLgotIyAyLiBUaGVuIGRvIGNvbW1pdCBwcmVwYXJlZC4KLSMKLSMgRXhwZWN0IGFs bCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlcihzKSBhZnRlciB0aGUgY29tbWl0Lgot IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIEluc2VydCwgdXBkYXRlIGFuZCBk ZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgotIyBUaGVuIDJQQyBQ UkVQQVJFCi0kbm9kZV9BLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJ TlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdI RVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9 IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9k ZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOwotJG5vZGVfQi0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZV9DKTsKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRl c3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX0EsICRub2RlX0IsICRub2RlX0MsICRhcHBuYW1l X0IsICRhcHBuYW1lX0MsICdvbicpOwogCi0jIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBp cyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyKHMpCi0kcmVzdWx0ID0KLSAgJG5vZGVfQi0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsi KTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2Ny aWJlciBCJyk7Ci0kcmVzdWx0ID0KLSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJT RUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFx KDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBDJyk7Ci0KLSMgMlBD IENPTU1JVAotJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDT01NSVQgUFJFUEFSRUQg J3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKLQotJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZV9CKTsKLSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7Ci0KLSMgY2hl Y2sgdGhhdCB0cmFuc2FjdGlvbiB3YXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIocykKLSRyZXN1 bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBj b3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEo MzMzNHwzMzM0fDMzMzQpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBv biBzdWJzY3JpYmVyIEIsIGFuZCBleHRyYSBjb2x1bW5zIGhhdmUgbG9jYWwgZGVmYXVsdHMnCi0p OwotJHJlc3VsdCA9ICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291 bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVz dWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCi0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29t bWl0dGVkIG9uIHN1YnNjcmliZXIgQywgYW5kIGV4dHJhIGNvbHVtbnMgaGF2ZSBsb2NhbCBkZWZh dWx0cycKLSk7Ci0KLSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVkIG9uIHN1 YnNjcmliZXIocykKLSRyZXN1bHQgPQotICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwg cXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVz dWx0ID0KLSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikg RlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rp b24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQycpOwotCi0jIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCi0jIFRlc3QgMlBDIFBSRVBBUkUgd2l0aCBhIG5lc3RlZCBST0xMQkFDSyBU TyBTQVZFUE9JTlQuCi0jIDAuIENsZWFudXAgZnJvbSBwcmV2aW91cyB0ZXN0IGxlYXZpbmcgb25s eSAyIHJvd3MuCi0jIDEuIEluc2VydCBvbmUgbW9yZSByb3cuCi0jIDIuIFJlY29yZCBhIFNBVkVQ T0lOVC4KLSMgMy4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCi0jIDQuIERvIHJvbGxiYWNr IHRvIFNBVkVQT0lOVCBwcmlvciB0byB0aGUgc3RyZWFtZWQgaW5zZXJ0cy4KLSMgNS4gVGhlbiBD T01NSVQgUFJFUEFSRUQuCi0jCi0jIEV4cGVjdCBkYXRhIGFmdGVyIHRoZSBTQVZFUE9JTlQgaXMg YWJvcnRlZCBsZWF2aW5nIG9ubHkgMyByb3dzICg9IDIgb3JpZ2luYWwgKyAxIGZyb20gc3RlcCAx KS4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBGaXJzdCwgZGVsZXRlIHRo ZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzIChkZWxldGUgd2lsbCBiZSByZXBsaWNhdGVkKQotJG5v ZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBh ID4gMjsiKTsKLQotIyAyUEMgUFJFUEFSRSB3aXRoIGEgbmVzdGVkIFJPTExCQUNLIFRPIFNBVkVQ T0lOVAotJG5vZGVfQS0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlCRUdJTjsKLQlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTksICdmb29iYXInKTsKLQlTQVZFUE9JTlQgc3Bf aW5uZXI7Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9 IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUg bW9kKGEsMykgPSAwOwotCVJPTExCQUNLIFRPIFNBVkVQT0lOVCBzcF9pbm5lcjsKLQlQUkVQQVJF IFRSQU5TQUNUSU9OICdvdXRlcic7Ci0JIik7Ci0KLSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWVfQik7Ci0kbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOwotCi0j IGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyKHMpCi0k cmVzdWx0ID0KLSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQo KikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNh Y3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0KLSAgJG5vZGVf Qy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJl ZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQg b24gc3Vic2NyaWJlciBDJyk7Ci0KLSMgMlBDIENPTU1JVAotJG5vZGVfQS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJDT01NSVQgUFJFUEFSRUQgJ291dGVyJzsiKTsKLQotJG5vZGVfQS0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKLSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWVfQyk7Ci0KLSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVkIG9uIHN1YnNj cmliZXIKLSRyZXN1bHQgPQotICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVD VCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCks ICd0cmFuc2FjdGlvbiBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyIEInKTsKLSRyZXN1bHQgPQotICAk bm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3By ZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBlbmRl ZCBvbiBzdWJzY3JpYmVyIEMnKTsKLQotIyBjaGVjayBpbnNlcnRzIGFyZSB2aXNpYmxlIGF0IHN1 YnNjcmliZXIocykuCi0jIEFsbCB0aGUgc3RyZWFtZWQgZGF0YSAocHJpb3IgdG8gdGhlIFNBVkVQ T0lOVCkgc2hvdWxkIGJlIHJvbGxlZCBiYWNrLgotIyAoOTk5OSwgJ2Zvb2JhcicpIHNob3VsZCBi ZSBjb21taXR0ZWQuCi0kcmVzdWx0ID0gJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0J IlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsKLWlz KCRyZXN1bHQsIHFxKDEpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJl ciBCJyk7Ci0kcmVzdWx0ID0gJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qg Y291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsKLWlzKCRyZXN1bHQsIHFxKDMpLCAnUm93cyBjb21t aXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0gJG5vZGVfQy0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIHdo ZXJlIGIgPSAnZm9vYmFyJzsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAnUm93cyBjb21taXR0ZWQg YXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBDJyk7Ci0kcmVzdWx0ID0gJG5vZGVfQy0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsKLWlzKCRy ZXN1bHQsIHFxKDMpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBD Jyk7CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5n IHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCit0ZXN0X3N0cmVhbWluZygkbm9kZV9BLCAkbm9kZV9CLCAkbm9kZV9DLCAkYXBw bmFtZV9CLCAkYXBwbmFtZV9DLCAncGFyYWxsZWwnKTsKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwogIyBjaGVjayBhbGwgdGhlIGNsZWFudXAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwgYi9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsCmluZGV4IDliNDU0MTAuLmVhMWY0NzYgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwK KysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbApAQCAt OCw2ICs4LDI2NiBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCisjIEVuY2Fwc3VsYXRlIGFsbCB0 aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIKKyMg cGFyYW1ldGVyIHNvIHRoZSBzYW1lIGNvZGUgY2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFt aW5nPW9uIGFuZAorIyBzdHJlYW1pbmc9cGFyYWxsZWwgY2FzZXMuCitzdWIgdGVzdF9zdHJlYW1p bmcKK3sKKwlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwg JGlzX3BhcmFsbGVsKSA9IEBfOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor CSMgVGVzdCAyUEMgUFJFUEFSRSAvIENPTU1JVCBQUkVQQVJFRC4KKwkjIDEuIERhdGEgaXMgc3Ry ZWFtZWQgYXMgYSAyUEMgdHJhbnNhY3Rpb24uCisJIyAyLiBUaGVuIGRvIGNvbW1pdCBwcmVwYXJl ZC4KKwkjCisJIyBFeHBlY3QgYWxsIGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyIHNp ZGUgYWZ0ZXIgdGhlIGNvbW1pdC4KKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisK KwkjIENoZWNrIHRoYXQgYSBiYWNrZ3JvdW5kIHdvcmtlciBzdGFydHMgaWYgInN0cmVhbWluZyIg cGFyYW1ldGVyIGlzCisJIyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIi4gIFdlIGhhdmUgdG8gbG9v ayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMKKwkjIGFib3V0IHRoYXQsIHNvIHRlbXBvcmFy aWx5IGJ1bXAgdXAgdGhlIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJ CSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxv Z19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwor CX0KKworCSMgY2hlY2sgdGhhdCAyUEMgZ2V0cyByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIKKwkj IEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtC IGxpbWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxewor CQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VU IGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBX SEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRf dGFiJzt9KTsKKworCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53 YWl0X2Zvcl9sb2cocXIvXFtBcHBseSBCR1cgI1xkK1xdIHN0YXJ0ZWQvLCAwKTsKKwkJJG5vZGVf c3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9t ZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKwor CSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNr IHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgorCW15 ICRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNF TEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFx KDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOworCisJIyAyUEMg dHJhbnNhY3Rpb24gZ2V0cyBjb21taXR0ZWQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisK Kwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVj ayB0aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9 ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50 KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1 bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29t bWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVm YXVsdHMnCisJKTsKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlp cygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVy Jyk7CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBUZXN0IDJQQyBQUkVQ QVJFIC8gUk9MTEJBQ0sgUFJFUEFSRUQuCisJIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8g MiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCisJIyAyLiBEYXRhIGlz IHN0cmVhbWVkIHVzaW5nIDJQQy4KKwkjIDMuIERvIHJvbGxiYWNrIHByZXBhcmVkLgorCSMKKwkj IEV4cGVjdCBkYXRhIHJvbGxzIGJhY2sgbGVhdmluZyBvbmx5IHRoZSBvcmlnaW5hbCAyIHJvd3Mu CisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRo ZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdI RVJFIGEgPiAyOyIpOworCisJIyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdo IHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkp OworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwor CQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJB TlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMg aW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3By ZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJl cGFyZWQgb24gc3Vic2NyaWJlcicpOworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVk CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlJPTExCQUNLIFBS RVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFi b3J0ZWQgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5 OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgyfDJ8MiksCisJCSdSb3dzIGlu c2VydGVkIGJ5IDJQQyBhcmUgcm9sbGVkIGJhY2ssIGxlYXZpbmcgb25seSB0aGUgb3JpZ2luYWwg MiByb3dzJworCSk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsK KwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJl cicpOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgQ2hlY2sgdGhhdCAy UEMgQ09NTUlUIFBSRVBBUkVEIGlzIGRlY29kZWQgcHJvcGVybHkgb24gY3Jhc2ggcmVzdGFydC4K KwkjIDEuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRo ZSA2NGtCIGxpbWl0LgorCSMgMi4gVGhlbiBzZXJ2ZXIgY3Jhc2hlcyBiZWZvcmUgdGhlIDJQQyB0 cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuCisJIyAzLiBBZnRlciBzZXJ2ZXJzIGFyZSByZXN0YXJ0 ZWQgdGhlIHBlbmRpbmcgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkLgorCSMKKwkjIEV4cGVjdCBh bGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0 LgorCSMgTm90ZTogYm90aCBwdWJsaXNoZXIgYW5kIHN1YnNjcmliZXIgZG8gY3Jhc2gvcmVzdGFy dC4KKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAw MCkgcyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIp ID0gMDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCQlQUkVQ QVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7CisKKwkkbm9kZV9zdWJzY3Jp YmVyLT5zdG9wKCdpbW1lZGlhdGUnKTsKKwkkbm9kZV9wdWJsaXNoZXItPnN0b3AoJ2ltbWVkaWF0 ZScpOworCisJJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKKwkkbm9kZV9zdWJzY3JpYmVyLT5zdGFy dDsKKworCSMgY29tbWl0IHBvc3QgdGhlIHJlc3RhcnQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7 Iik7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMg Y2hlY2sgaW5zZXJ0cyBhcmUgdmlzaWJsZQorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50 KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMz NCksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVy LCBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBEbyBJTlNFUlQgYWZ0ZXIgdGhlIFBSRVBB UkUgYnV0IGJlZm9yZSBST0xMQkFDSyBQUkVQQVJFRC4KKwkjIDEuIFRhYmxlIGlzIGRlbGV0ZWQg YmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KKwkjIDIu IERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgorCSMgMy4gQSBzaW5nbGUgcm93IElOU0VSVCBp cyBkb25lIHdoaWNoIGlzIGFmdGVyIHRoZSBQUkVQQVJFLgorCSMgNC4gVGhlbiBkbyBhIFJPTExC QUNLIFBSRVBBUkVELgorCSMKKwkjIEV4cGVjdCB0aGUgMlBDIGRhdGEgcm9sbHMgYmFjayBsZWF2 aW5nIG9ubHkgMyByb3dzIG9uIHRoZSBzdWJzY3JpYmVyCisJIyAodGhlIG9yaWdpbmFsIDIgKyBp bnNlcnRlZCAxKS4KKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkjIEZpcnN0 LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwgYmUgcmVwbGljYXRlZCkK Kwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00g dGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7CisKKwkjIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRl bGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMs IDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2Qo YSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJ UFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sgdGhhdCB0cmFu c2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCop IEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2Fj dGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIEluc2VydCBhIGRpZmZlcmVu dCByZWNvcmQgKG5vdyB3ZSBhcmUgb3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5zYWN0aW9uKQorCSMg Tm90ZTogdGhlIDJQQyB0cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBz dXJlIHRoaXMgaW5zZXJ0IGlzIGZvciBhIHNlcGFyYXRlIHByaW1hcnkga2V5CisJJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZB TFVFUyAoOTk5OTksICdmb29iYXInKSIpOworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9y dGVkCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlJPTExCQUNL IFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlz IGFib3J0ZWQgb24gc3Vic2NyaWJlciwKKwkjIGJ1dCB0aGUgZXh0cmEgSU5TRVJUIG91dHNpZGUg b2YgdGhlIDJQQyBzdGlsbCB3YXMgcmVwbGljYXRlZAorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyks IGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzfDN8Myks CisJCSdjaGVjayB0aGUgb3V0c2lkZSBpbnNlcnQgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7 CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0 LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgRG8gSU5TRVJUIGFmdGVyIHRoZSBQUkVQ QVJFIGJ1dCBiZWZvcmUgQ09NTUlUIFBSRVBBUkVELgorCSMgMS4gVGFibGUgaXMgZGVsZXRlZCBi YWNrIHRvIDIgcm93cyB3aGljaCBhcmUgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgorCSMgMi4g RGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCisJIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlz IGRvbmUgd2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCisJIyA0LiBUaGVuIGRvIGEgQ09NTUlU IFBSRVBBUkVELgorCSMKKwkjIEV4cGVjdCAyUEMgZGF0YSArIHRoZSBleHRyYSByb3cgYXJlIG9u IHRoZSBzdWJzY3JpYmVyCisJIyAodGhlIDMzMzQgKyBpbnNlcnRlZCAxID0gMzMzNSkuCisJIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRh IGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEg PiAyOyIpOworCisJIyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3Mg dG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAor CQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlV UERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxF VEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJ T04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJl cGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVk X3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQg b24gc3Vic2NyaWJlcicpOworCisJIyBJbnNlcnQgYSBkaWZmZXJlbnQgcmVjb3JkIChub3cgd2Ug YXJlIG91dHNpZGUgb2YgdGhlIDJQQyB0cmFuc2FjdGlvbikKKwkjIE5vdGU6IHRoZSAyUEMgdHJh bnNhY3Rpb24gc3RpbGwgaG9sZHMgcm93IGxvY2tzIHNvIG1ha2Ugc3VyZSB0aGlzIGluc2VydCBp cyBmb3IgYSBzZXBhcmFyZSBwcmltYXJ5IGtleQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5LCAnZm9v YmFyJykiKTsKKworCSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgY29tbWl0dGVkCisJJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9w cmVwYXJlZF90YWInOyIpOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vi c2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVz dF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM1fDMzMzV8MzMzNSksCisJCSdSb3dzIGluc2Vy dGVkIGJ5IDJQQyAoYXMgd2VsbCBhcyBvdXRzaWRlIGluc2VydCkgaGF2ZSBjb21taXR0ZWQgb24g c3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkp OworCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3Vs dCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcicpOworCisJ IyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7CisJJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKK30KKwogIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIwogIyBTZXR1cAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwpAQCAtNDgsNiArMzA4LDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIp OwogCiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAogCSdwb3N0 Z3JlcycsICIKIAlDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIKQEAgLTY0LDIzNiArMzI4LDMw IEBAIG15ICR0d29waGFzZV9xdWVyeSA9CiAkbm9kZV9zdWJzY3JpYmVyLT5wb2xsX3F1ZXJ5X3Vu dGlsKCdwb3N0Z3JlcycsICR0d29waGFzZV9xdWVyeSkKICAgb3IgZGllICJUaW1lZCBvdXQgd2hp bGUgd2FpdGluZyBmb3Igc3Vic2NyaWJlciB0byBlbmFibGUgdHdvcGhhc2UiOwogCi0jIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIENoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVk IHRvIHN1YnNjcmliZXIKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIG15ICRyZXN1 bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIGNv dW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJl c3VsdCwgcXEoMnwyfDIpLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2Ny aWJlcicpOwogCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIFRlc3QgMlBDIFBS RVBBUkUgLyBDT01NSVQgUFJFUEFSRUQuCi0jIDEuIERhdGEgaXMgc3RyZWFtZWQgYXMgYSAyUEMg dHJhbnNhY3Rpb24uCi0jIDIuIFRoZW4gZG8gY29tbWl0IHByZXBhcmVkLgotIwotIyBFeHBlY3Qg YWxsIGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhlIGNvbW1p dC4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK3Rlc3Rfc3RyZWFtaW5nKCRub2Rl X3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwogCi0jIGNoZWNrIHRo YXQgMlBDIGdldHMgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyCi0jIEluc2VydCwgdXBkYXRlIGFu ZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgotJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMs IDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChh LDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci0JUFJF UEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rp b24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBw Z19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMg cHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGNvbW1p dHRlZAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQ09NTUlUIFBS RVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBjb21t aXR0ZWQgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5 KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCi0JJ1Jv d3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRy YSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBn X3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5E IHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRf eGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBv biBzdWJzY3JpYmVyJyk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgVGVz dCAyUEMgUFJFUEFSRSAvIFJPTExCQUNLIFBSRVBBUkVELgotIyAxLiBUYWJsZSBpcyBkZWxldGVk IGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCi0jIDIu IERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyAzLiBEbyByb2xsYmFjayBwcmVwYXJlZC4K LSMKLSMgRXhwZWN0IGRhdGEgcm9sbHMgYmFjayBsZWF2aW5nIG9ubHkgdGhlIG9yaWdpbmFsIDIg cm93cy4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBGaXJzdCwgZGVsZXRl IHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCi0kbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hF UkUgYSA+IDI7Iik7Ci0KLSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCBy b3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQ REFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRF IEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04g J3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKIAotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVk IHN0YXRlIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7 Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNj cmliZXInKTsKLQotIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCi0kbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJST0xMQkFDSyBQUkVQQVJFRCAndGVzdF9wcmVw YXJlZF90YWInOyIpOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVy Ci0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNF TEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsK LWlzKCRyZXN1bHQsIHFxKDJ8MnwyKSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgYXJlIHJvbGxl ZCBiYWNrLCBsZWF2aW5nIG9ubHkgdGhlIG9yaWdpbmFsIDIgcm93cycpOwotCi0kcmVzdWx0ID0g JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgq KSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2Fj dGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwotIyBDaGVjayB0aGF0IDJQQyBDT01NSVQgUFJFUEFSRUQgaXMgZGVjb2RlZCBw cm9wZXJseSBvbiBjcmFzaCByZXN0YXJ0LgotIyAxLiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRl IGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSMgMi4gVGhlbiBzZXJ2ZXIg Y3Jhc2hlcyBiZWZvcmUgdGhlIDJQQyB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuCi0jIDMuIEFm dGVyIHNlcnZlcnMgYXJlIHJlc3RhcnRlZCB0aGUgcGVuZGluZyB0cmFuc2FjdGlvbiBpcyBjb21t aXR0ZWQuCi0jCi0jIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIg c2lkZSBhZnRlciB0aGUgY29tbWl0LgotIyBOb3RlOiBib3RoIHB1Ymxpc2hlciBhbmQgc3Vic2Ny aWJlciBkbyBjcmFzaC9yZXN0YXJ0LgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwot Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotCUJFR0lOOwot CUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikg V0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMp ID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7Ci0KLSRu b2RlX3N1YnNjcmliZXItPnN0b3AoJ2ltbWVkaWF0ZScpOwotJG5vZGVfcHVibGlzaGVyLT5zdG9w KCdpbW1lZGlhdGUnKTsKLQotJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKLSRub2RlX3N1YnNjcmli ZXItPnN0YXJ0OwotCi0jIGNvbW1pdCBwb3N0IHRoZSByZXN0YXJ0Ci0kbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRf dGFiJzsiKTsKLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0K LSMgY2hlY2sgaW5zZXJ0cyBhcmUgdmlzaWJsZQotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3Vu dChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMz NCksCi0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIs IGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCi0pOwotCi0jIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIERvIElOU0VSVCBhZnRlciB0aGUgUFJFUEFSRSBi dXQgYmVmb3JlIFJPTExCQUNLIFBSRVBBUkVELgotIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sg dG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCi0jIDIuIERhdGEg aXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlzIGRvbmUg d2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCi0jIDQuIFRoZW4gZG8gYSBST0xMQkFDSyBQUkVQ QVJFRC4KLSMKLSMgRXhwZWN0IHRoZSAyUEMgZGF0YSByb2xscyBiYWNrIGxlYXZpbmcgb25seSAz IHJvd3Mgb24gdGhlIHN1YnNjcmliZXIKLSMgKHRoZSBvcmlnaW5hbCAyICsgaW5zZXJ0ZWQgMSku Ci0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgRmlyc3QsIGRlbGV0ZSB0aGUg ZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSByZXBsaWNhdGVkKQotJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEg PiAyOyIpOwotCi0jIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0 byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkn cG9zdGdyZXMnLCBxewotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUg dGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9N IHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0 X3ByZXBhcmVkX3RhYic7fSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0 ZSBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwot aXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVy Jyk7Ci0KLSMgSW5zZXJ0IGEgZGlmZmVyZW50IHJlY29yZCAobm93IHdlIGFyZSBvdXRzaWRlIG9m IHRoZSAyUEMgdHJhbnNhY3Rpb24pCi0jIE5vdGU6IHRoZSAyUEMgdHJhbnNhY3Rpb24gc3RpbGwg aG9sZHMgcm93IGxvY2tzIHNvIG1ha2Ugc3VyZSB0aGlzIGluc2VydCBpcyBmb3IgYSBzZXBhcmF0 ZSBwcmltYXJ5IGtleQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQki SU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg5OTk5OSwgJ2Zvb2JhcicpIik7Ci0KLSMgMlBD IHRyYW5zYWN0aW9uIGdldHMgYWJvcnRlZAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKLQkiUk9MTEJBQ0sgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKLQot JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0 aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlciwKLSMgYnV0IHRoZSBleHRy YSBJTlNFUlQgb3V0c2lkZSBvZiB0aGUgMlBDIHN0aWxsIHdhcyByZXBsaWNhdGVkCi0kcmVzdWx0 ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3Vu dCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1 bHQsIHFxKDN8M3wzKSwgJ2NoZWNrIHRoZSBvdXRzaWRlIGluc2VydCB3YXMgY29waWVkIHRvIHN1 YnNjcmliZXInKTsKLQotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlz KCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyJyk7 Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgRG8gSU5TRVJUIGFmdGVyIHRo ZSBQUkVQQVJFIGJ1dCBiZWZvcmUgQ09NTUlUIFBSRVBBUkVELgotIyAxLiBUYWJsZSBpcyBkZWxl dGVkIGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCi0j IDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJU IGlzIGRvbmUgd2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCi0jIDQuIFRoZW4gZG8gYSBDT01N SVQgUFJFUEFSRUQuCi0jCi0jIEV4cGVjdCAyUEMgZGF0YSArIHRoZSBleHRyYSByb3cgYXJlIG9u IHRoZSBzdWJzY3JpYmVyCi0jICh0aGUgMzMzNCArIGluc2VydGVkIDEgPSAzMzM1KS4KLSMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4 Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCi0kbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7 Ci0KLSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2Vl ZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jl cycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0 ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3Rh YiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90 YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFy ZWRfdGFiJzt9KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l KTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1 YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVz dWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKLQot IyBJbnNlcnQgYSBkaWZmZXJlbnQgcmVjb3JkIChub3cgd2UgYXJlIG91dHNpZGUgb2YgdGhlIDJQ QyB0cmFuc2FjdGlvbikKLSMgTm90ZTogdGhlIDJQQyB0cmFuc2FjdGlvbiBzdGlsbCBob2xkcyBy b3cgbG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMgaW5zZXJ0IGlzIGZvciBhIHNlcGFyYXJlIHByaW1h cnkga2V5Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJJTlNFUlQg SU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5LCAnZm9vYmFyJykiKTsKLQotIyAyUEMgdHJhbnNh Y3Rpb24gZ2V0cyBjb21taXR0ZWQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCi0JIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotCi0kbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChz dHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsKIAotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGNv bW1pdHRlZCBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5 OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDMzMzV8MzMzNXwzMzM1KSwKLQkn Um93cyBpbnNlcnRlZCBieSAyUEMgKGFzIHdlbGwgYXMgb3V0c2lkZSBpbnNlcnQpIGhhdmUgY29t bWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVm YXVsdHMnCi0pOworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3Jlcycs CisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUg YXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7Igor ICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJl c3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKIAotJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBw Z19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMg Y29tbWl0dGVkIG9uIHN1YnNjcmliZXInKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hl ciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwogCiAjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCiAjIGNoZWNrIGFsbCB0aGUgY2xlYW51cAotLSAKMi43LjIud2luZG93cy4x Cgo= --_006_OS0PR01MB57160A440C9821C48ABD4D9C94649OS0PR01MB5716jpnp_--