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 1ovDeW-0000sB-Op for pgsql-hackers@arkaria.postgresql.org; Wed, 16 Nov 2022 08:20:13 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1ovDeV-00036I-6N for pgsql-hackers@arkaria.postgresql.org; Wed, 16 Nov 2022 08:20:11 +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 1ovDeT-000363-Ql for pgsql-hackers@lists.postgresql.org; Wed, 16 Nov 2022 08:20:10 +0000 Received: from esa20.fujitsucc.c3s2.iphmx.com ([216.71.158.65]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ovDeN-000139-GS for pgsql-hackers@lists.postgresql.org; Wed, 16 Nov 2022 08:20:08 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1668586803; x=1700122803; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=ilVM8zy4cLdIvlICLJb1kLgFO3LGfNQeLxiGR/DUC+s=; b=vq3ihVatXdywB7KCsnwwaKDJYJe2HvQbXVh1RX0XnlhCqYHApPg12dOF CxuFn0SfyKhhClGgF+4l36IVq4bEN3Bzk6Q73UqCiiMzNU4Y673V/+aV/ OJjrRLKX/Aj2PFD/FezfdDUwIKNLUdPwaCUovFo2TYxwvGHKf/mSnaT1o MeOemAhZoFZhIJaG4SkddMiPkRQzU/TVx0xxCCqsZ9MuRrvj64HdoCEWg LyasSQoSQw/mtr+ZX6WNM1xG+OJSJtMLC7iU/KS78ugswLrO/DOO7x8WI GLRySh/sB8gU2AbPPBPSiqUiP9mY4sj88QAnwAlT17QGaWvSh9WIPWNQ1 Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10532"; a="70047335" X-IronPort-AV: E=Sophos;i="5.96,167,1665414000"; d="scan'208,223";a="70047335" Received: from mail-tycjpn01lp2175.outbound.protection.outlook.com (HELO JPN01-TYC-obe.outbound.protection.outlook.com) ([104.47.23.175]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Nov 2022 17:19:57 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HhBYMEU1mM4YMRvKAyuDkvgxGympa+6h84oOFGSkYdvBCmO8ZcLk9ACX5mUXM+2DDvgOqwZvBxeWN9QFvWE2SRD/+d8YLBWz/09BNlfZSpls0mYwRrtDtX1efBHO/pdG6mCaozcLPmFjswS+t6cwBSQlmWK00Rjtn8JEypXTs6TzMGSQb9mg9U3QXgETlECQBk/gxD0Xn1KcZFc0+kVuTx0uEbbdwIFvf0tEiAJSi12NnBP3Ivy1j5wxtdtJVDJkplw6urgpgUKutJaUxtwk/IdgLnZLwtdsNZmFcFkSyep7HWf47Z/2ACwIqCeDnZ9rXc84yUnzD7EOlkCHTVxHJA== 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=U6qMvackFw/2GwuWt0/w8qvfPXeNX4UHUvEWcFHlL1I=; b=QVhvdHPX9XGr0FLGLHl3uzppTdrCnEqCx2FoyIXJndXIgD7vFRvueGlXPE+HUKcGYH7x3i2jOwNjQHjH2UWw78X3edwVRdM3zhNTKx9DI7D8TuGVJ2yAQ5G73wxlD1TC03azPW/aJHXSubZwizHnnv2j14iaz+WK2Usnj3uhpw6gdQ+zw6RbTUPt+3Hk0ULfF6pL8yaEdArMSvOxn74Khsm4cLq02fNDAX6P6QD51ggskywLYm0ei0PZ0dmQTxOXYATLJ+I1HinnxO4eapLkBaPdA0cn+8kNuj2DmhOWhFcVEoyJD+lE3Peyi0DGrW40OFBFGdO5ffbRUW9v6BJn7w== 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 TYCPR01MB7847.jpnprd01.prod.outlook.com (2603:1096:400:184::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5813.18; Wed, 16 Nov 2022 08:19:48 +0000 Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::38a6:cf5c:b4ee:89dd]) by OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::38a6:cf5c:b4ee:89dd%6]) with mapi id 15.20.5813.018; Wed, 16 Nov 2022 08:19:48 +0000 From: "houzj.fnst@fujitsu.com" To: Amit Kapila CC: Masahiko Sawada , "wangw.fnst@fujitsu.com" , Peter Smith , Dilip Kumar , "shiy.fnst@fujitsu.com" , PostgreSQL Hackers Subject: RE: Perform streaming logical transactions by background workers and parallel apply Thread-Topic: Perform streaming logical transactions by background workers and parallel apply Thread-Index: AQHYSXX5ZKpBKXxeUU2FhEhnmXQum6zlu9SQgAkSooCACBQ0gIABsTcwgAA1vECAAqHFgIAE/jVwgAXct9CAADkRgIALO/aAgAsRZICAB606AIAS+CyAgAAufICAAWQLgIABHxKAgAA3o4CAAeE3gIAJPr0AgAkxzACAAiJoAIAC0hUAgARvDICABQA2gIAAFvcAgAeBmICABO9ggIAJO+YAgABu1YCACQzpAIAJSy6AgAS+zICABq7mgIABSJUAgAAOtoCAACghoIAB8TqAgAqL+oCADJWRgIAGVm0AgAGAQICAAerMgIABYRWAgAgnZ+CAAXRdgIAGBUSQgAGFeoCAAFYagIABb5aggAGsWiCAATu3gIAEyyEAgABeLHCABFBngIAK5WIAgABrY4CABb89gIADiS0AgAEu2oCAAHBpgIADPWcAgAS/1gCADeB2AIAAPUnQgAEERACAABzggIAF+30AgAHyDYCAEzpGgIANkEmAgAI7xKCABhztAIAFv4zggABYqoCAABRMQIABvKAAgAS+5UCAAVlmEA== Date: Wed, 16 Nov 2022 08:19:48 +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?NTBfQWN0aW9uSWQ9OGJjY2EwOTItN2Q1NS00YjZhLTg5NTQtZDYwN2I5MjZj?= =?utf-8?B?OTIwO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?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?ZWNlMDUwX1NldERhdGU9MjAyMi0xMS0xNVQxMTozNDowMlo7TVNJUF9MYWJl?= =?utf-8?B?bF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfU2l0ZUlk?= =?utf-8?Q?=3Da19f121d-81e1-4858-a9d8-736e267fd4c7;?= authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: OS0PR01MB5716:EE_|TYCPR01MB7847:EE_ x-ms-office365-filtering-correlation-id: 6114ba32-cbfa-4331-09f3-08dac7ab53a3 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: g14n4vXFK5Nce8bLBSB7tNIaXR4k4bw//kz0zzCZdshCjSSoSIkdmO5xLzy2F1vl+blMoPK3NUZlGk13+yKlkoNuRXBbgC/MFTwcFccLWzlq8IhE5ePJMtg6lVmYW3wnMZ/99eSArsj/FWv8AdSCY7qS58dFYGqjVIT5xoRncfsClM3ZUvQxKssfx6csfU51poCldKxf1GMrmqQ6kt3dMXaxJt1rP9WMiX7fECnMaRGetb34FC06F8PZie3da4t+AuxfyQU69nik4jbWyyaQMwHVSmJKOsgc2mElbIxPSsw1rB4F48VBy3TvwcKfsORjzBv4wvxIVxXbQud52zq/VQCtwj+RMXOn2h+ovyUBx3akTsMnZBKbr4GzEzQzc/+qvDCkOmYodyKJd649GRSzLzxkNgkpKashg3zhKjQmHzBh4pAqmK0xskqF4GUpVhL/Bw7t5BWmGF2ClbIe1/vcXSlkaSpTPGtQ8SDxtNoIJDLEPzZCUoI0l4jFL+OriDkXbGTjpDVg91eUBeCYehx8iRLl2A7D28pRZks84AHUP1mab4WRPTheq5SxJ0qBPw4v5VpZHQbEfrai1IboFoV0lS1V89o8KvjJWG+1O27646IXy3s+hvO6OwlZccTS2tnOv7UfH9aIV1mj+3+90uf/WWC/uNzab5GGN4r9iyyW4GQRWmHXfaOh8QYL5xMgLWGX6pdvM7ANH4NG9i7QC1L/Mt7sgRfoGBPb1+n9xsKoG0NiuETl3o0Rvi3zi+xpINgMZ/hR7H8qNubki45ItD431jTGm7O8jyso233WYuNEh62cgsFzEQaqMB9HQjQ80HRPURSp+nKBsq1BCxeXOLFB70yjEaokCtYPRAqAyoenOAk= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS0PR01MB5716.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(376002)(136003)(39860400002)(396003)(346002)(366004)(1590799012)(451199015)(66899015)(1580799009)(86362001)(85182001)(33656002)(99936003)(2906002)(8936002)(52536014)(186003)(83380400001)(38070700005)(122000001)(82960400001)(38100700002)(54906003)(316002)(53546011)(6916009)(71200400001)(5660300002)(478600001)(966005)(55016003)(66556008)(76116006)(8676002)(6506007)(64756008)(66446008)(66946007)(66476007)(26005)(4326008)(41300700001)(7696005)(9686003)(21314003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?eVNzVkpibUlhNmJ4QzBGaGloYjU2QzRLRElyamtxSzNTT3czdFEyZGI1eUtk?= =?utf-8?B?UXpuNHV6Q0R3RmU4Vll6bzVaZElGajcxSUZaQ081MHBnTVZsQ0hHb2U1T0FF?= =?utf-8?B?Zzd2MnVOQWVJMGs0Q015QWtycld5bFYxUjVOYUZEWjB4N0NBOENhdzhPcVVI?= =?utf-8?B?VklHYklpbTRjV1pvYi95YVE4SEpseU1YN1p4b3BIT3BqYzNvU2UxVHV0Vnpj?= =?utf-8?B?eTBqSk44WkkvRkZhdXJIVWZ6bmVnTktCcWdMdlhRYWJkQmFZWjcxMlN0L0hq?= =?utf-8?B?SFdIN1pVaFBnK2V6Y2lpSUszUXZBNm42ZUtYdGhkNm5xekc3dm5SZHl5RXgx?= =?utf-8?B?T1YwNnF3Q21LajkwNnZJWXhsY1JRWmM0T0VzVWNPaUVZY2tWdmVlOTVLbk83?= =?utf-8?B?L08wL01FbnYyQUFyUStaaUIzUTkxWjlqbEQ2b05jNHhYVlZvd0RwSTNOM2dw?= =?utf-8?B?ajQ1R1pGNzRESXlmaTBEdE5nc0h4NHpQaTY5aTVyQm9RSHhpbnlLWERIKzBY?= =?utf-8?B?MHpyM2huWUZkMzNEcmVER1JEcUNleUtvVXNCNnczL1hkOTEvdmY3OVFlRGNX?= =?utf-8?B?YnlNQUhaUVVMck9PTHRnaGxIdm1xK0lrakFYQ0hCUHdpblBqeUdGaURvVW5W?= =?utf-8?B?dkVOT3VIY1BvMjc2c2hma3U0UWd3alkyeVU3U3JUaVo5TkxPcFZydFRiZmdR?= =?utf-8?B?WUxpeEczUzJUT085Zk5pb2FnQ2k2dFh2YmxjeExLYi9xMmpDSU5razRiSzRm?= =?utf-8?B?eGE5S3loUldvMjNFcUI5WG95MjlNbWQxQS91amcrWmZFT0hXMHY4aWRJclRy?= =?utf-8?B?MlVoMlFOUjBSQktacDdQRTB2YjVRK3pkRkpjN1NpeEpuenFHZWxLa0RJRmV3?= =?utf-8?B?b1JhRXZ2a084LzdmZWp6RzBJVnozMGJTNUcxUGV2TTNlS25Cc0EzclVWdXZK?= =?utf-8?B?MUJMcVI5UFVmdW9tNTNwMkJFK2JpbUtJaTRlVXNIQUNvNmlndm5HcEl4K1BV?= =?utf-8?B?SzJkKzFLSEF1ZUtlNmsrTkNuYUY1UjBIK3dLam05bi9JU01jZjYrSnBDUG1R?= =?utf-8?B?Ry9GYzI2RmNKd2F2MnlWeWhLTFFlWnFUU09kRCtTNmIzUUxQTlg0b042TlVa?= =?utf-8?B?dDN1d2tWSTlwVWpjam5BNThlUkdHYlNLb2pXS2t6bkpkaHBUN2cxdUlPT3hE?= =?utf-8?B?U2h0WDlwQnZjRmdyeDkxZ25ncERsQ1AxLzMzaXVrMW81STRURjdGd0FMSWp2?= =?utf-8?B?ZnVBRDNXOHFHQ1p2ZUFOWFhEWkI5ZEpVY2VSbFhkMTgxOHJ2L1liL2lmZzlm?= =?utf-8?B?SXNWNHN0QVBXZ0tIUUJING1vM0RwRTVJcVNUUjZuK0t0L1VlR21oZGo5dlQy?= =?utf-8?B?akxRMDNLa3hZNG1BMmIxZXRIVHJXbmxOUlBGOGpFU2N0MS8vcitFZXVkd0hK?= =?utf-8?B?SU56M0hLeTNCY0FRWExDUXI2ZWEyNmg2T1EzcGMvaVZOdFNQTkd4Y3JRamkz?= =?utf-8?B?RUh0endtdW5XRDVrdVpna0dqWGZPR0tMaVFSZHlObjlKSFhOME96by9lNytD?= =?utf-8?B?dWhDbEtjUElnNVpmUDdTcUxxN240elo5azRHRG4vYzJma2ZCekpWU3BabjFH?= =?utf-8?B?RVphS3hNTXl6Z3h2V09PRGo0NmhDRmlJUldUSHZqT0tacURKM2wwdElrV1Rj?= =?utf-8?B?WlFjNjJlV2wwOE5nZnVKRmtwRmFPcnF0a3RWQXdYRWFRZW15Nktrb2MrbW5H?= =?utf-8?B?M3diM05lUkxPZFpxMFJ2M3FmTmxJRlVtRndZQk4xbUZiUmxuYXFHbjZsMnNz?= =?utf-8?B?cEZ1S1RXbCt5cy9EL2V0V2pMbjVmRk9XcGZVZXA3dzNSWUk0YTNsRFhkSDFk?= =?utf-8?B?azlJZlM2Qm8zUjdTMlVmaGx5bmpkelZpWmh6M1VEODR2L1FCTWd6SnVmcld4?= =?utf-8?B?THArRUJHZTdycWppN04wKzNzR1dQRXNYVk5ScndXdEVFTTQ1UStSdXU3WkVD?= =?utf-8?B?UDZXbXlGVnllSUFmY2h5cUhDZFNTTy9ya1d0c25nWUZBTysrSnpxVFQ2N0c1?= =?utf-8?B?SzIvVnpBODVOTVYrcVl2alRiZDRYQVl2c1NXM0VhY1FIdzRWeGQ0RzVsbWk0?= =?utf-8?Q?Wv6MrZTVCqkidB1yIjKsVz2mP?= Content-Type: multipart/mixed; boundary="_005_OS0PR01MB5716CF7D3BDE465AFAF17DC094079OS0PR01MB5716jpnp_" MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: MxO6uRHtCc5L6AxElxdfLe2qtjoFklghHmaClfgKsqTYXugSWnacB0MAaunRSK1zQFZZy0HY2/e2yLMzxQR083dalqouQ3xQHI41EqieQ0xkZ6GnJReg1sN/C31Dr8sP0FnfaQSvP+uPu/hBEs3Nx5LGx8ZwQV4oXEFvo8jhyQ4CH0LeFtriPzhrlev5iJiU3xmamKo9qKtfapz2OMf2Cv65JDrYv1jJhCmo3TlJn9kLIHZ9NMnFS8gqJxuJ8IJHdZxrS1vfx4XAeLAz8JLaGo6ARm5exA8OUs6zmv00OHF0OC3IIGJQuPO6+8jGyEsZf3Tr+6WQ7FRT0ezs6WQIoHVimobzgXyq+YvVFApWNhjaWrLCjjMhavT3YeengIcEPjeIk4szbr9uzdQBdriM0A9jLZB+2trJlIjbkitb+ttRPTjkdpUgI/IDK75PEmdUt5qj9wUWQ0CXC7J18pPmNVQVgFHxwe1RtVGH12doVvdxYFvINRe2ptdqTiN5294tUSygGHvjr0yGHtPjsTM0mnHWNXaDxp5DxKO9AdrJT1iY31N6LmvArZAsHasPn0cNFv6PLTVQUOmrerTh9gck+BMmEoiDeV64zw+tdpFNbCwuX/3kFJYK5WxITBN3Bc5yOkW/InTXkCNiPbIq0DnEbS8a/VXZ4jBPzATPcoEbgABR1uSEhCFszDve19pyk6ojg3OzmcW77QhbT30TMQ8Ka9v5hYgNkZ39JURtmUmSQAkWQje87f/9bSOCteH9jFKFLkEknD0PR0wC46YCSt0zWsFjatHHuZTqk0sCX455y2xsFzCQRU8g12LhuOpt3CDAMZiFyywOfWz5eX+OWRc76VZOV7x38VyaxklaXEPZlw+L1WjF+H3D7sZ0rydv9jFDk14uIVCqJjlGWX8mZCrmFw== 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: 6114ba32-cbfa-4331-09f3-08dac7ab53a3 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Nov 2022 08:19:48.2250 (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: eDCqvERfu0jhNx1WTY1Az2p7YAgbyW1fvH5uQ9Clk/BGjAmsTmBSXPk5o1xjlqIe7BmV01mzz1G5E86xP+qf5Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYCPR01MB7847 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_005_OS0PR01MB5716CF7D3BDE465AFAF17DC094079OS0PR01MB5716jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gVHVlc2RheSwgTm92ZW1iZXIgMTUsIDIwMjIgNzo1OCBQTSBob3V6ai5mbnN0QGZ1aml0c3Uu Y29tIDxob3V6ai5mbnN0QGZ1aml0c3UuY29tPiB3cm90ZToNCj4gDQo+IE9uIFNhdHVyZGF5LCBO b3ZlbWJlciAxMiwgMjAyMiA3OjA2IFBNIEFtaXQgS2FwaWxhDQo+IDxhbWl0LmthcGlsYTE2QGdt YWlsLmNvbT4NCj4gPg0KPiA+IE9uIEZyaSwgTm92IDExLCAyMDIyIGF0IDI6MTIgUE0gaG91emou Zm5zdEBmdWppdHN1LmNvbQ0KPiA+IDxob3V6ai5mbnN0QGZ1aml0c3UuY29tPiB3cm90ZToNCj4g PiA+DQo+ID4NCj4gPiBGZXcgY29tbWVudHMgb24gdjQ2LTAwMDE6DQo+ID4gPT09PT09PT09PT09 PT09PT09PT09PQ0KPiA+DQo+IA0KPiBUaGFua3MgZm9yIHRoZSBjb21tZW50cy4NCj4gDQo+ID4g MS4NCj4gPiArc3RhdGljIHZvaWQNCj4gPiArYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJp bmdJbmZvIHMpDQo+ID4gew0KPiA+IC4uLg0KPiA+ICsgLyogU2VuZCBTVFJFQU0gQUJPUlQgbWVz c2FnZSB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiAqLw0KPiA+ICsgcGFyYWxsZWxfYXBw bHlfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpOw0KPiA+ICsNCj4gPiArIGlmIChh Ym9ydF90b3BsZXZlbF90cmFuc2FjdGlvbikNCj4gPiArIHsNCj4gPiArIHBhcmFsbGVsX2FwcGx5 X3VubG9ja19zdHJlYW0oeGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsNCj4gPg0KPiA+IFNob3Vs ZG4ndCB3ZSBuZWVkIHRvIHJlbGVhc2UgdGhpcyBsb2NrIGJlZm9yZSBzZW5kaW5nIHRoZSBtZXNz YWdlIGFzDQo+ID4gd2UgYXJlIGRvaW5nIGZvciBzdHJlYXBfcHJlcGFyZSBhbmQgc3RyZWFtX2Nv bW1pdD8gSWYgdGhlcmUgaXMgYQ0KPiA+IHJlYXNvbiBmb3IgZG9pbmcgaXQgZGlmZmVyZW50bHkg aGVyZSB0aGVuIGxldCdzIGFkZCBzb21lIGNvbW1lbnRzIGZvcg0KPiA+IHRoZSBzYW1lLg0KPiAN Cj4gQ2hhbmdlZC4NCj4gDQo+ID4gMi4gSXQgc2VlbXMgb25jZSB0aGUgcGF0Y2ggbWFrZXMgdGhl IGZpbGUgc3RhdGUgYXMgYnVzeQ0KPiA+IChMRUFERVJfRklMRVNFVF9CVVNZKSwgaXQgd2lsbCBv bmx5IGJlIGFjY2Vzc2libGUgYWZ0ZXIgdGhlIGxlYWRlcg0KPiA+IGFwcGx5IHdvcmtlciByZWNl aXZlcyBhIHRyYW5zYWN0aW9uIGVuZCBtZXNzYWdlIGxpa2Ugc3RyZWFtX2NvbW1pdC4gSXMNCj4g PiBteSB1bmRlcnN0YW5kaW5nIGNvcnJlY3Q/IElmIHllcywgdGhlbiB3aHkgY2FuJ3Qgd2UgbWFr ZSBpdCBhY2Nlc3NpYmxlDQo+ID4gYWZ0ZXIgdGhlIHN0cmVhbV9zdG9wIG1lc3NhZ2U/IEFyZSB5 b3Ugd29ycmllZCBhYm91dCB0aGUgY29uY3VycmVuY3kNCj4gPiBoYW5kbGluZyBmb3IgcmVhZGlu ZyBhbmQgd3JpdGluZyB0aGUgZmlsZT8gSWYgc28sIHdlIGNhbiBwcm9iYWJseSBkZWFsDQo+ID4g d2l0aCBpdCB2aWEgc29tZSBsb2NrIGZvciByZWFkaW5nIGFuZCB3cml0aW5nIHRvIGZpbGUgZm9y IGVhY2ggY2hhbmdlLg0KPiA+IEkgdGhpbmsgYWZ0ZXIgdGhpcyB3ZSBtYXkgbm90IG5lZWQgYWRk aXRpb25hbCBzdHJlYW0gbGV2ZWwgbG9jay91bmxvY2sNCj4gPiBpbiBwYXJhbGxlbF9hcHBseV9z cG9vbGVkX21lc3NhZ2VzLiBJIHVuZGVyc3RhbmQgdGhhdCB5b3UgcHJvYmFibHkNCj4gPiB3YW50 IHRvIGtlZXAgdGhlIGNvZGUgc2ltcGxlIHNvIEkgYW0gbm90IHN1Z2dlc3RpbmcgY2hhbmdpbmcg aXQNCj4gPiBpbW1lZGlhdGVseSBidXQganVzdCB3YW50ZWQgdG8ga25vdyB3aGV0aGVyIHlvdSBo YXZlIGNvbnNpZGVyZWQNCj4gPiBhbHRlcm5hdGl2ZXMgaGVyZS4NCj4gDQo+IEkgdGhvdWdodCBh Ym91dCB0aGlzLCBidXQgaXQgc2VlbXMgdGhlIGN1cnJlbnQgYnVmZmlsZSBkZXNpZ24gZG9lc24n dCBhbGxvdyB0d28NCj4gcHJvY2Vzc2VzIHRvIG9wZW4gdGhlIHNhbWUgYnVmZmlsZSBhdCB0aGUg c2FtZSB0aW1lKHJlZmVyIHRvIHRoZSBjb21tZW50DQo+IGF0b3Agb2YgQnVmRmlsZU9wZW5GaWxl U2V0KCkpLiBUaGlzIG1lYW5zIHRoZSBMQSBuZWVkcyB0byBtYWtlIHN1cmUgdGhlIFBBIGhhcw0K PiBjbG9zZWQgdGhlIGJ1ZmZpbGUgYmVmb3JlIHdyaXRpbmcgbW9yZSBjaGFuZ2VzIGludG8gaXQu IEFsdGhvdWdoIHdlIGNvdWxkIGxldA0KPiB0aGUgTEEgd2FpdCBmb3IgdGhhdCwgYnV0IGl0IGNv dWxkIGNhdXNlIGFub3RoZXIga2luZCBvZiBkZWFkbG9jay4gU3VwcG9zZSB0aGUNCj4gUEEgb3Bl bmVkIHRoZSBmaWxlIGFuZCBpcyBibG9ja2VkIHdoZW4gYXBwbHlpbmcgdGhlIGp1c3QgcmVhZCBj aGFuZ2UuIEFuZCB0aGUNCj4gTEEgc3RhcnRzIHRvIHdhaXQgd2hlbiB0cnlpbmcgdG8gd3JpdGUg dGhlIG5leHQgc2V0IG9mIHN0cmVhbWluZyBjaGFuZ2VzIGludG8gZmlsZQ0KPiBiZWNhdXNlIHRo ZSBmaWxlIGlzIHN0aWxsIG9wZW5lZCBieSBQQS4gVGhlbiB0aGUgbG9jayBlZGdlIGlzIGxpa2U6 DQo+IA0KPiBMQSAod2FpdCBmb3IgZmlsZSB0byBiZSBjbG9zZWQpIC0+IFBBMSAod2FpdCBmb3Ig dW5pcXVlIGxvY2sgaW4gUEEyKSAtPiBQQTIgKHdhaXQNCj4gZm9yIHN0cmVhbSBsb2NrIGhlbGQg aW4gTEEpDQo+IA0KPiBXZSBjb3VsZCBpbnRyb2R1Y2UgYW5vdGhlciBsb2NrIGZvciB0aGlzLCBi dXQgdGhhdCBzZWVtcyBub3QgdmVyeSBncmVhdCBhcyB3ZQ0KPiBhbHJlYWR5IGhhZCB0d28ga2lu ZHMgb2YgbG9ja3MgaGVyZS4NCj4gDQo+IEFub3RoZXIgc29sdXRpb24gY291bGQgYmUgd2UgY3Jl YXRlIGRpZmZlcmVudCBmaWxlbmFtZSBmb3IgZWFjaCBzdHJlYW1pbmcNCj4gYmxvY2sgc28gdGhh dCB0aGUgbGVhZGVyIGRvbid0IG5lZWQgdG8gcmVvcGVuIHRoZSBzYW1lIGZpbGUgYWZ0ZXIgd3Jp dGluZw0KPiBjaGFuZ2VzIGludG8gaXQsIGJ1dCB0aGF0IHNlZW1zIGxhcmdlbHkgaW5jcmVhc2Ug dGhlIG51bWJlciBvZiB0ZW1wIGZpbGVzIGFuZA0KPiBsb29rcyBhIGJpdCBoYWNreS4gT3Igd2Ug Y291bGQgbGV0IFBBIG9wZW4gdGhlIGZpbGUsIHRoZW4gcmVhZCBhbmQgY2xvc2UgdGhlIGZpbGUN Cj4gZm9yIGVhY2ggY2hhbmdlLCBidXQgaXQgc2VlbXMgYnJpbmcgc29tZSBvdmVyaGVhZCBvZiBv cGVuaW5nIGFuZCBjbG9zaW5nIGZpbGUuDQo+IA0KPiBBbm90aGVyIHNvbHV0aW9uIHdoaWNoIGRv ZXNuJ3QgbmVlZCBhIG5ldyBsb2NrIGNvdWxkIGJlIHRoYXQgd2UgY3JlYXRlDQo+IGRpZmZlcmVu dCBmaWxlbmFtZSBmb3IgZWFjaCBzdHJlYW1pbmcgYmxvY2sgc28gdGhhdCB0aGUgbGVhZGVyIGRv ZXNuJ3QgbmVlZCB0bw0KPiByZW9wZW4gdGhlIHNhbWUgZmlsZSBhZnRlciB3cml0aW5nIGNoYW5n ZXMgaW50byBpdCwgYnV0IHRoYXQgc2VlbXMgbGFyZ2VseQ0KPiBpbmNyZWFzZSB0aGUgbnVtYmVy IG9mIHRlbXAgZmlsZXMgYW5kIGxvb2tzIGEgYml0IGhhY2t5LiBPciB3ZSBjb3VsZCBsZXQgUEEN Cj4gb3BlbiB0aGUgZmlsZSwgdGhlbiByZWFkIGFuZCBjbG9zZSB0aGUgZmlsZSBmb3IgZWFjaCBj aGFuZ2UsIGJ1dCBpdCBzZWVtcyBicmluZw0KPiBzb21lIG92ZXJoZWFkIG9mIG9wZW5pbmcgYW5k IGNsb3NpbmcgZmlsZS4NCj4gDQo+IEJhc2VkIG9uIGFib3ZlLCBob3cgYWJvdXQga2VlcCB0aGUg Y3VycmVudCBhcHByb2FjaCA/KGkuZS4gUEEgd2lsbCBvcGVuIHRoZQ0KPiBmaWxlIG9ubHkgYWZ0 ZXIgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgcmVjZWl2ZXMgYSB0cmFuc2FjdGlvbiBlbmQgbWVz c2FnZSBsaWtlDQo+IHN0cmVhbV9jb21taXQpLiBJZGVhbGx5LCBpdCB3aWxsIGVudGVyIHBhcnRp YWwgc2VyaWFsaXplIG1vZGUgb25seSB3aGVuIFBBIGlzDQo+IGJsb2NrZWQgYnkgYSBiYWNrZW5k IG9yIGFub3RoZXIgUEEgd2hpY2ggc2VlbXMgbm90IHRoYXQgY29tbW9uLg0KPiANCj4gPiAzLiBE b24ndCB3ZSBuZWVkIHRvIHJlbGVhc2UgdGhlIHRyYW5zYWN0aW9uIGxvY2sgYXQgc3RyZWFtX2Fi b3J0IGluDQo+ID4gcGFyYWxsZWwgYXBwbHkgd29ya2VyPyBJIHVuZGVyc3RhbmQgdGhhdCB3ZSBh cmUgbm90IHdhaXRpbmcgZm9yIGl0IGluDQo+ID4gdGhlIGxlYWRlciB3b3JrZXIgYnV0IHN0aWxs IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBzaG91bGQgcmVsZWFzZSBpdCBpZg0KPiA+IGFjcXVpcmVk IGF0IHN0cmVhbV9zdGFydCBieSBpdC4NCj4gDQo+IEkgdGhvdWdodCB0aGF0IHRoZSBsb2NrIHdp bGwgYmUgYXV0b21hdGljYWxseSByZWxlYXNlZCBvbiByb2xsYmFjay4gQnV0IGFmdGVyDQo+IHRl c3RpbmcsIEkgZmluZCBJdOKAmXMgcG9zc2libGUgdGhhdCB0aGUgbG9jayB3b24ndCBiZSByZWxl YXNlZCBpZiBpdCdzIGEgZW1wdHkNCj4gc3RyZWFtaW5nIHRyYW5zYWN0aW9uLiBTbywgSSBhZGQg dGhlIGNvZGUgdG8gcmVsZWFzZSB0aGUgbG9jayBpbiB0aGUgbmV3IHZlcnNpb24NCj4gcGF0Y2gu DQo+IA0KPiA+DQo+ID4gNC4gQSBtaW5vciBjb21tZW50IGNoYW5nZSBhcyBiZWxvdzoNCj4gPiBk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYw0KPiA+ IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYw0KPiA+IGluZGV4IDQz ZjA5YjdlOWEuLmM3NzE4NTFkMWYgMTAwNjQ0DQo+ID4gLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC93b3JrZXIuYw0KPiA+ICsrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvd29ya2VyLmMNCj4gPiBAQCAtMTg1MSw2ICsxODUxLDkgQEAgYXBwbHlfaGFuZGxl X3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAg cGFyYWxsZWxfYXBwbHlfc3RyZWFtX2Fib3J0KCZhYm9ydF9kYXRhKTsNCj4gPg0KPiA+ICAgICAg ICAgICAgICAgICAgICAgICAgIC8qDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICogV2Ug bmVlZCB0byB3YWl0IGFmdGVyIHByb2Nlc3Npbmcgcm9sbGJhY2sNCj4gPiB0byBzYXZlcG9pbnQg Zm9yIHRoZSBuZXh0IHNldA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAqIG9mIGNoYW5n ZXMuDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICoNCj4gPiAgICAgICAgICAgICAgICAg ICAgICAgICAgKiBCeSB0aGUgdGltZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaXMNCj4gPiBwcm9j ZXNzaW5nIHRoZSBjaGFuZ2VzIGluDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICogdGhl IGN1cnJlbnQgc3RyZWFtaW5nIGJsb2NrLCB0aGUgbGVhZGVyDQo+ID4gYXBwbHkgd29ya2VyIG1h eSBoYXZlDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICogc2VudCBtdWx0aXBsZSBzdHJl YW1pbmcgYmxvY2tzLiBTbywgdHJ5IHRvDQo+ID4gbG9jayBvbmx5IGlmIHRoZXJlDQo+IA0KPiBN ZXJnZWQuDQo+IA0KPiBBdHRhY2ggdGhlIG5ldyB2ZXJzaW9uIHBhdGNoIHNldCB3aGljaCBhZGRy ZXNzZWQgYWJvdmUgY29tbWVudHMgYW5kDQo+IGNvbW1lbnRzIGZyb20gWzFdLg0KPiANCj4gSW4g dGhlIG5ldyB2ZXJzaW9uIHBhdGNoLCBJIHJlbmFtZWQgcGFyYWxsZWxfYXBwbHlfeHh4IGZ1bmN0 aW9ucyB0byBwYV94eHggdG8NCj4gbWFrZSB0aGUgbmFtZSBzaG9ydGVyIGFjY29yZGluZyB0byB0 aGUgc3VnZ2VzdGlvbiBpbiBbMV0uIEJlc2lkZXMsIEkgc3BsaXQgdGhlDQo+IGNvZGVzIHJlbGF0 ZWQgdG8gcGFydGlhbCBzZXJpYWxpemUgdG8gMDAwMiBwYXRjaCB0byBtYWtlIHRoZSBwYXRjaCBl YXNpZXIgdG8NCj4gcmV2aWV3Lg0KPiANCj4gWzFdDQo+IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwu b3JnL21lc3NhZ2UtaWQvQ0FBNGVLMUxHeVElMkJTLWpDTW5ZU3pfaHZvcQ0KPiBpTkEwT2YlM0Ql MkJNa3NZJTNEWFRVYVJjNVh6WEpRJTQwbWFpbC5nbWFpbC5jb20NCg0KSSBub3RpY2VkIHRoYXQg SSBkaWRuJ3QgYWRkIENIRUNLX0ZPUl9JTlRFUlJVUFRTIHdoaWxlIHJldHJ5aW5nIHNlbmQgbWVz c2FnZS4NClNvLCBhdHRhY2ggdGhlIG5ldyB2ZXJzaW9uIHdoaWNoIGFkZHMgdGhhdC4gQWxzbyBh dHRhY2ggdGhlIDAwMDQgcGF0Y2ggdGhhdA0KcmVzdGFydHMgbG9naWNhbCByZXBsaWNhdGlvbiB3 aXRoIHRlbXBvcmFyaWx5IGRpc2FibGluZyB0aGUgcGFyYWxsZWwgYXBwbHkgaWYNCmZhaWxlZCB0 byBhcHBseSBhIHRyYW5zYWN0aW9uIGluIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4NCg0KQmVzdCBy ZWdhcmRzLA0KSG91IHpqDQo= --_005_OS0PR01MB5716CF7D3BDE465AFAF17DC094079OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v48-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch" Content-Description: v48-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch Content-Disposition: attachment; filename="v48-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch"; size=21076; creation-date="Wed, 16 Nov 2022 08:18:47 GMT"; modification-date="Wed, 16 Nov 2022 08:19:43 GMT" Content-Transfer-Encoding: base64 RnJvbSA0YjdkY2ViZDhjMTEwMGVhOWQxNTAwMTAzZDA3ODhhNzIzMWU5NjE5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB3YW5ndyA8d2FuZ3cuZm5zdEBmdWppdHN1LmNvbT4KRGF0ZTog V2VkLCAxNiBOb3YgMjAyMiAxNDo0NDoxMCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjQ4IDQvNF0g UmV0cnkgdG8gYXBwbHkgc3RyZWFtaW5nIHhhY3Qgb25seSBpbiBhcHBseSB3b3JrZXIKCldoZW4g dGhlIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgaXMgc2V0IHN0cmVhbWluZz1wYXJhbGxlbCwgdGhl IGxvZ2ljIHRyaWVzIHRvCmFwcGx5IHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdXNpbmcgYSBw YXJhbGxlbCBhcHBseSB3b3JrZXIuIElmIHRoaXMKZmFpbHMgdGhlIHBhcmFsbGVsIHdvcmtlciBl eGl0cyB3aXRoIGFuIGVycm9yLgoKSW4gdGhpcyBjYXNlLCByZXRyeSBhcHBseWluZyB0aGUgc3Ry ZWFtaW5nIHRyYW5zYWN0aW9uIHVzaW5nIHRoZSBub3JtYWwKc3RyZWFtaW5nPW9uIG1vZGUuIFRo aXMgaXMgZG9uZSB0byBhdm9pZCBnZXR0aW5nIGNhdWdodCBpbiBhIGxvb3Agb2YgdGhlIHNhbWUK cmV0cnkgZXJyb3JzLgoKQSBuZXcgZmxhZyBmaWVsZCAic3VicmV0cnkiIGhhcyBiZWVuIGludHJv ZHVjZWQgdG8gY2F0YWxvZyAicGdfc3Vic2NyaXB0aW9uIi4KSWYgdGhlcmUgYXJlIGFueSBhY3Rp dmUgcGFyYWxsZWwgYXBwbHkgd29ya2VycyBhbmQgdGhlIHN1YnNjcmliZXIgZXhpdHMgd2l0aCBh bgplcnJvciwgdGhpcyBmbGFnIHdpbGwgYmUgc2V0IHRydWUsIGFuZCB3aGVuZXZlciB0aGUgdHJh bnNhY3Rpb24gaXMgYXBwbGllZApzdWNjZXNzZnVsbHksIHRoaXMgZmxhZyBpcyByZXNldCBmYWxz ZS4KTm93LCB3aGVuIGRlY2lkaW5nIGhvdyB0byBhcHBseSBhIHN0cmVhbWluZyB0cmFuc2FjdGlv biwgdGhlIGxvZ2ljIGNhbiBrbm93IGlmCnRoaXMgdHJhbnNhY3Rpb24gaGFzIHByZXZpb3VzbHkg ZmFpbGVkIG9yIG5vdCAoYnkgY2hlY2tpbmcgdGhlICJzdWJyZXRyeSIKZmllbGQpLgotLS0KIGRv Yy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEwICsr CiBkb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sICAgICAgICAgICAgICB8ICAx MSArLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgICAgICAgICAg fCAgIDUgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYyAgICAgICAgICAg ICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAgICAgICAg ICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAg ICAgICAgICAgIHwgICAxICsKIC4uLi9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3 b3JrZXIuYyAgICAgIHwgIDMwICsrKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv d29ya2VyLmMgICAgICAgICAgIHwgMTgyICsrKysrKysrKysrKysrKy0tLS0tLQogc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9p bmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggICAgICAgICAgICAgIHwgICA3ICsKIHNy Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oICAgICAgICAgIHwgICAyICsK IHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwgICAgICAgICAgICAgIHwgICA4 ICsKIC4uLi9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX3BhcmFsbGVsX2FwcGx5LnBsIHwg IDE4ICstCiAxMyBmaWxlcyBjaGFuZ2VkLCAyMjMgaW5zZXJ0aW9ucygrKSwgNTkgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvY2F0YWxvZ3Muc2dtbAppbmRleCBjNTc2OWRhLi4xMGExYTYyIDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApA QCAtNzkyOSw2ICs3OTI5LDE2IEBAIFNDUkFNLVNIQS0yNTYkPHJlcGxhY2VhYmxlPiZsdDtpdGVy YXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPiZsCiAKICAgICAgPHJv dz4KICAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJj b2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnN1YnJldHJ5PC9zdHJ1Y3Rm aWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAg ICAgIFRydWUgaWYgcHJldmlvdXMgY2hhbmdlIGZhaWxlZCB0byBiZSBhcHBsaWVkIHdoaWxlIHRo ZXJlIHdlcmUgYW55CisgICAgICAgYWN0aXZlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMsIG5lY2Vz c2l0YXRpbmcgYSByZXRyeS4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKwor ICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJh IHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KICAgICAgICA8c3RydWN0ZmllbGQ+c3ViY29ubmlu Zm88L3N0cnVjdGZpZWxkPiA8dHlwZT50ZXh0PC90eXBlPgogICAgICAgPC9wYXJhPgogICAgICAg PHBhcmE+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21s IGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAppbmRleCBmMzY2NzEwLi4x MzExZjMzIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKQEAgLTE1MDAsMTIg KzE1MDAsMTEgQEAgQ09OVEVYVDogIHByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0 aW9uIG9yaWdpbiAicGdfMTYzOTUiIGR1cmluZyAiSU5TRVIKIAogICA8cGFyYT4KICAgIFdoZW4g dGhlIHN0cmVhbWluZyBtb2RlIGlzIDxsaXRlcmFsPnBhcmFsbGVsPC9saXRlcmFsPiwgdGhlIGZp bmlzaCBMU04gb2YKLSAgIGZhaWxlZCB0cmFuc2FjdGlvbnMgbWF5IG5vdCBiZSBsb2dnZWQuIElu IHRoYXQgY2FzZSwgaXQgbWF5IGJlIG5lY2Vzc2FyeSB0bwotICAgY2hhbmdlIHRoZSBzdHJlYW1p bmcgbW9kZSB0byA8bGl0ZXJhbD5vbjwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+b2ZmPC9saXRlcmFs PiBhbmQKLSAgIGNhdXNlIHRoZSBzYW1lIGNvbmZsaWN0cyBhZ2FpbiBzbyB0aGUgZmluaXNoIExT TiBvZiB0aGUgZmFpbGVkIHRyYW5zYWN0aW9uIHdpbGwKLSAgIGJlIHdyaXR0ZW4gdG8gdGhlIHNl cnZlciBsb2cuIEZvciB0aGUgdXNhZ2Ugb2YgZmluaXNoIExTTiwgcGxlYXNlIHJlZmVyIHRvIDxs aW5rCi0gICBsaW5rZW5kPSJzcWwtYWx0ZXJzdWJzY3JpcHRpb24iPjxjb21tYW5kPkFMVEVSIFNV QlNDUklQVElPTiAuLi4KLSAgIFNLSVA8L2NvbW1hbmQ+PC9saW5rPi4KKyAgIGZhaWxlZCB0cmFu c2FjdGlvbnMgbWF5IG5vdCBiZSBsb2dnZWQuIEluIHRoYXQgY2FzZSwgdGhlIGZhaWxlZCB0cmFu c2FjdGlvbgorICAgd2lsbCBiZSByZXRyaWVkIGluIDxsaXRlcmFsPnN0cmVhbWluZyA9IG9uPC9s aXRlcmFsPiBtb2RlLiBJZiBpdCBmYWlscworICAgYWdhaW4sIHRoZSBmaW5pc2ggTFNOIG9mIHRo ZSBmYWlsZWQgdHJhbnNhY3Rpb24gd2lsbCBiZSB3cml0dGVuIHRvIHRoZQorICAgc2VydmVyIGxv Zy4gRm9yIHRoZSB1c2FnZSBvZiBmaW5pc2ggTFNOLCBwbGVhc2UgcmVmZXIgdG8KKyAgIDxsaW5r IGxpbmtlbmQ9InNxbC1hbHRlcnN1YnNjcmlwdGlvbiI+PGNvbW1hbmQ+QUxURVIgU1VCU0NSSVBU SU9OIC4uLiBTS0lQPC9jb21tYW5kPjwvbGluaz4uCiAgIDwvcGFyYT4KICA8L3NlY3QxPgogCmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCBiL2Rv Yy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCmluZGV4IGYxNzNhMDkuLjY0 ZDU4MDIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCkBAIC0y NTEsNiArMjUxLDExIEBAIENSRUFURSBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnN1YnNjcmlwdGlvbl9uYW1lPC9yZXBsYWNlYWJsCiAgICAgICAgICAgdHJhbnNh Y3Rpb24gaXMgY29tbWl0dGVkLiBOb3RlIHRoYXQgaWYgYW4gZXJyb3IgaGFwcGVucyBpbiBhCiAg ICAgICAgICAgcGFyYWxsZWwgYXBwbHkgd29ya2VyLCB0aGUgZmluaXNoIExTTiBvZiB0aGUgcmVt b3RlIHRyYW5zYWN0aW9uCiAgICAgICAgICAgbWlnaHQgbm90IGJlIHJlcG9ydGVkIGluIHRoZSBz ZXJ2ZXIgbG9nLgorICAgICAgICAgIFdoZW4gYXBwbHlpbmcgc3RyZWFtaW5nIHRyYW5zYWN0aW9u cywgaWYgYSBkZWFkbG9jayBpcyBkZXRlY3RlZCwgdGhlCisgICAgICAgICAgcGFyYWxsZWwgYXBw bHkgd29ya2VyIHdpbGwgZXhpdCB3aXRoIGFuIGVycm9yLiBUaGUKKyAgICAgICAgICA8bGl0ZXJh bD5wYXJhbGxlbDwvbGl0ZXJhbD4gbW9kZSBpcyBkaXNyZWdhcmRlZCB3aGVuIHJldHJ5aW5nOwor ICAgICAgICAgIGluc3RlYWQgdGhlIHRyYW5zYWN0aW9uIHdpbGwgYmUgYXBwbGllZCB1c2luZyA8 bGl0ZXJhbD5vbjwvbGl0ZXJhbD4KKyAgICAgICAgICBtb2RlLgogICAgICAgICAgPC9wYXJhPgog ICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvcGdfc3Vic2NyaXB0aW9uLmMKaW5kZXggYTUwNmZjMy4uNzIzYjE0MSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYworKysgYi9zcmMvYmFja2VuZC9j YXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCkBAIC03MSw2ICs3MSw3IEBAIEdldFN1YnNjcmlwdGlv bihPaWQgc3ViaWQsIGJvb2wgbWlzc2luZ19vaykKIAlzdWItPnN0cmVhbSA9IHN1YmZvcm0tPnN1 YnN0cmVhbTsKIAlzdWItPnR3b3BoYXNlc3RhdGUgPSBzdWJmb3JtLT5zdWJ0d29waGFzZXN0YXRl OwogCXN1Yi0+ZGlzYWJsZW9uZXJyID0gc3ViZm9ybS0+c3ViZGlzYWJsZW9uZXJyOworCXN1Yi0+ cmV0cnkgPSBzdWJmb3JtLT5zdWJyZXRyeTsKIAogCS8qIEdldCBjb25uaW5mbyAqLwogCWRhdHVt ID0gU3lzQ2FjaGVHZXRBdHRyKFNVQlNDUklQVElPTk9JRCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVt X3ZpZXdzLnNxbAppbmRleCAyZDgxMDRiLi5jMmM3ZDhhIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0 ZW1fdmlld3Muc3FsCkBAIC0xMzAxLDcgKzEzMDEsNyBAQCBSRVZPS0UgQUxMIE9OIHBnX3JlcGxp Y2F0aW9uX29yaWdpbl9zdGF0dXMgRlJPTSBwdWJsaWM7CiBSRVZPS0UgQUxMIE9OIHBnX3N1YnNj cmlwdGlvbiBGUk9NIHB1YmxpYzsKIEdSQU5UIFNFTEVDVCAob2lkLCBzdWJkYmlkLCBzdWJza2lw bHNuLCBzdWJuYW1lLCBzdWJvd25lciwgc3ViZW5hYmxlZCwKICAgICAgICAgICAgICAgc3ViYmlu YXJ5LCBzdWJzdHJlYW0sIHN1YnR3b3BoYXNlc3RhdGUsIHN1YmRpc2FibGVvbmVyciwKLSAgICAg ICAgICAgICAgc3Vic2xvdG5hbWUsIHN1YnN5bmNjb21taXQsIHN1YnB1YmxpY2F0aW9ucywgc3Vi b3JpZ2luKQorICAgICAgICAgICAgICBzdWJyZXRyeSwgc3Vic2xvdG5hbWUsIHN1YnN5bmNjb21t aXQsIHN1YnB1YmxpY2F0aW9ucywgc3Vib3JpZ2luKQogICAgIE9OIHBnX3N1YnNjcmlwdGlvbiBU TyBwdWJsaWM7CiAKIENSRUFURSBWSUVXIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3N0YXRzIEFTCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKaW5kZXggOGExODY5OS4uMjhlOGMz NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtNjkxLDYgKzY5 MSw3IEBAIENyZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNj cmlwdGlvblN0bXQgKnN0bXQsCiAJCQkJCSBMT0dJQ0FMUkVQX1RXT1BIQVNFX1NUQVRFX1BFTkRJ TkcgOgogCQkJCQkgTE9HSUNBTFJFUF9UV09QSEFTRV9TVEFURV9ESVNBQkxFRCk7CiAJdmFsdWVz W0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmRpc2FibGVvbmVyciAtIDFdID0gQm9vbEdldERhdHVt KG9wdHMuZGlzYWJsZW9uZXJyKTsKKwl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3VicmV0 cnkgLSAxXSA9IEJvb2xHZXREYXR1bShmYWxzZSk7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0 aW9uX3N1YmNvbm5pbmZvIC0gMV0gPQogCQlDU3RyaW5nR2V0VGV4dERhdHVtKGNvbm5pbmZvKTsK IAlpZiAob3B0cy5zbG90X25hbWUpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCmluZGV4IDdkM2E1MjEuLjU4YzZiMjYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdv cmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxl bHdvcmtlci5jCkBAIC0yMjEsNiArMjIxLDE3IEBAIHBhX2Nhbl9zdGFydChUcmFuc2FjdGlvbklk IHhpZCkKIAlpZiAoIUFsbFRhYmxlc3luY3NSZWFkeSgpKQogCQlyZXR1cm4gZmFsc2U7CiAKKwkv KgorCSAqIERvbid0IHVzZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGZvciByZXRyaWVzLCBiZWNh dXNlIGl0IGlzIHBvc3NpYmxlCisJICogdGhhdCBhIGRlYWRsb2NrIHdhcyBkZXRlY3RlZCB0aGUg bGFzdCB0aW1lIHdlIHRyaWVkIHRvIGFwcGx5IGEKKwkgKiB0cmFuc2FjdGlvbiB1c2luZyBhIHBh cmFsbGVsIGFwcGx5IHdvcmtlci4KKwkgKi8KKwlpZiAoTXlTdWJzY3JpcHRpb24tPnJldHJ5KQor CXsKKwkJZWxvZyhERUJVRzEsICJwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGFyZSBub3QgdXNlZCBm b3IgcmV0cmllcyIpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCiAJcmV0dXJuIHRydWU7CiB9CiAK QEAgLTE0NTIsMyArMTQ2MywyMiBAQCBwYV91bmxvY2tfdHJhbnNhY3Rpb24oVHJhbnNhY3Rpb25J ZCB4aWQsIExPQ0tNT0RFIGxvY2ttb2RlKQogCVVubG9ja0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNz aW9uKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCwKIAkJCQkJCQkJCSAxLCBsb2NrbW9k ZSk7CiB9CisKKy8qIENoZWNrIGlmIGFueSBhY3RpdmUgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4g Ki8KK2Jvb2wKK3BhX2hhdmVfYWN0aXZlX3dvcmtlcih2b2lkKQoreworCUxpc3RDZWxsICAgKmxj OworCisJZm9yZWFjaChsYywgUGFyYWxsZWxBcHBseVdvcmtlcnNMaXN0KQorCXsKKwkJUGFyYWxs ZWxBcHBseVdvcmtlckluZm8gKnRtcF93aW5mbzsKKworCQl0bXBfd2luZm8gPSAoUGFyYWxsZWxB cHBseVdvcmtlckluZm8gKikgbGZpcnN0KGxjKTsKKworCQlpZiAodG1wX3dpbmZvLT5pbl91c2Up CisJCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwlyZXR1cm4gZmFsc2U7Cit9ClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5k ZXggZGQ5MTA4NS4uYTVkNTY3MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dv cmtlci5jCkBAIC00MDksNyArNDA5LDcgQEAgc3RhdGljIHZvaWQgc2VuZF9mZWVkYmFjayhYTG9n UmVjUHRyIHJlY3Zwb3MsIGJvb2wgZm9yY2UsIGJvb2wgcmVxdWVzdFJlcGx5KTsKIAogc3RhdGlj IHZvaWQgc3RvcmVfZmx1c2hfcG9zaXRpb24oWExvZ1JlY1B0ciByZW1vdGVfbHNuKTsKIAotc3Rh dGljIHZvaWQgRGlzYWJsZVN1YnNjcmlwdGlvbkFuZEV4aXQodm9pZCk7CitzdGF0aWMgdm9pZCBE aXNhYmxlU3Vic2NyaXB0aW9uT25FcnJvcih2b2lkKTsKIAogc3RhdGljIHZvaWQgYXBwbHlfaGFu ZGxlX2NvbW1pdF9pbnRlcm5hbChMb2dpY2FsUmVwQ29tbWl0RGF0YSAqY29tbWl0X2RhdGEpOwog c3RhdGljIHZvaWQgYXBwbHlfaGFuZGxlX2luc2VydF9pbnRlcm5hbChBcHBseUV4ZWN1dGlvbkRh dGEgKmVkYXRhLApAQCAtNDQ4LDYgKzQ0OCw4IEBAIHN0YXRpYyBUcmFuc0FwcGx5QWN0aW9uIGdl dF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQsCiAKIHN0YXRpYyBj b25zdCBjaGFyICpnZXRfd29ya2VyX25hbWUodm9pZCk7CiAKK3N0YXRpYyB2b2lkIHNldF9zdWJz Y3JpcHRpb25fcmV0cnkoYm9vbCByZXRyeSk7CisKIC8qCiAgKiBGb3JtIHRoZSBvcmlnaW4gbmFt ZSBmb3IgdGhlIHN1YnNjcmlwdGlvbi4KICAqCkBAIC0xMDI3LDYgKzEwMjksOSBAQCBhcHBseV9o YW5kbGVfY29tbWl0KFN0cmluZ0luZm8gcykKIAogCWFwcGx5X2hhbmRsZV9jb21taXRfaW50ZXJu YWwoJmNvbW1pdF9kYXRhKTsKIAorCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCXNldF9z dWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOworCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQg YXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdf dGFibGVzKGNvbW1pdF9kYXRhLmVuZF9sc24pOwogCkBAIC0xMTM2LDYgKzExNDEsOSBAQCBhcHBs eV9oYW5kbGVfcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAKIAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24g PSBmYWxzZTsKIAorCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCXNldF9zdWJzY3JpcHRp b25fcmV0cnkoZmFsc2UpOworCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5n IHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKHBy ZXBhcmVfZGF0YS5lbmRfbHNuKTsKIApAQCAtMTE5Miw2ICsxMjAwLDkgQEAgYXBwbHlfaGFuZGxl X2NvbW1pdF9wcmVwYXJlZChTdHJpbmdJbmZvIHMpCiAJc3RvcmVfZmx1c2hfcG9zaXRpb24ocHJl cGFyZV9kYXRhLmVuZF9sc24pOwogCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogCisJ LyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxz ZSk7CisKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVk IGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMocHJlcGFyZV9kYXRhLmVu ZF9sc24pOwogCkBAIC0xMjUzLDYgKzEyNjQsOSBAQCBhcHBseV9oYW5kbGVfcm9sbGJhY2tfcHJl cGFyZWQoU3RyaW5nSW5mbyBzKQogCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHJvbGxiYWNrX2RhdGEu cm9sbGJhY2tfZW5kX2xzbik7CiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKKwkv KiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNl KTsKKwogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQg aW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhyb2xsYmFja19kYXRhLnJv bGxiYWNrX2VuZF9sc24pOwogCkBAIC0xMzc4LDYgKzEzOTIsOSBAQCBhcHBseV9oYW5kbGVfc3Ry ZWFtX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCQkJYnJlYWs7CiAJfQogCisJLyogUmVzZXQgdGhl IHJldHJ5IGZsYWcuICovCisJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CisKIAlwZ3N0 YXRfcmVwb3J0X3N0YXQoZmFsc2UpOwogCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJl IGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KQEAgLTE4NzEsNiArMTg4OCwxMCBA QCBhcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIAkJCWJyZWFrOwogCX0K IAorCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCWlmIChhYm9ydF90b3BsZXZlbF90cmFu c2FjdGlvbikKKwkJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CisKIAlyZXNldF9hcHBs eV9lcnJvcl9jb250ZXh0X2luZm8oKTsKIH0KIApAQCAtMjExNCw2ICsyMTM1LDkgQEAgYXBwbHlf aGFuZGxlX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBzKQogCQkJYnJlYWs7CiAJfQogCisJLyog UmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7 CisKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGlu IHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMoY29tbWl0X2RhdGEuZW5kX2xz bik7CiAKQEAgLTQxODQsMjAgKzQyMDgsMjggQEAgc3RhcnRfdGFibGVfc3luYyhYTG9nUmVjUHRy ICpvcmlnaW5fc3RhcnRwb3MsIGNoYXIgKipteXNsb3RuYW1lKQogCX0KIAlQR19DQVRDSCgpOwog CXsKKwkJLyoKKwkJICogRW1pdCB0aGUgZXJyb3IgbWVzc2FnZSwgYW5kIHJlY292ZXIgZnJvbSB0 aGUgZXJyb3Igc3RhdGUgdG8gYW4gaWRsZQorCQkgKiBzdGF0ZQorCQkgKi8KKwkJSE9MRF9JTlRF UlJVUFRTKCk7CisKKwkJRW1pdEVycm9yUmVwb3J0KCk7CisJCUFib3J0T3V0T2ZBbnlUcmFuc2Fj dGlvbigpOworCQlGbHVzaEVycm9yU3RhdGUoKTsKKworCQlSRVNVTUVfSU5URVJSVVBUUygpOwor CisJCS8qIFJlcG9ydCB0aGUgd29ya2VyIGZhaWxlZCBkdXJpbmcgdGFibGUgc3luY2hyb25pemF0 aW9uICovCisJCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15U3Vic2NyaXB0aW9u LT5vaWQsIGZhbHNlKTsKKwogCQlpZiAoTXlTdWJzY3JpcHRpb24tPmRpc2FibGVvbmVycikKLQkJ CURpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KCk7Ci0JCWVsc2UKLQkJewotCQkJLyoKLQkJCSAq IFJlcG9ydCB0aGUgd29ya2VyIGZhaWxlZCBkdXJpbmcgdGFibGUgc3luY2hyb25pemF0aW9uLiBB Ym9ydAotCQkJICogdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24gc28gdGhhdCB0aGUgc3RhdHMgbWVz c2FnZSBpcyBzZW50IGluIGFuCi0JCQkgKiBpZGxlIHN0YXRlLgotCQkJICovCi0JCQlBYm9ydE91 dE9mQW55VHJhbnNhY3Rpb24oKTsKLQkJCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9y KE15U3Vic2NyaXB0aW9uLT5vaWQsIGZhbHNlKTsKKwkJCURpc2FibGVTdWJzY3JpcHRpb25PbkVy cm9yKCk7CiAKLQkJCVBHX1JFX1RIUk9XKCk7Ci0JCX0KKwkJLyogU2V0IHRoZSByZXRyeSBmbGFn LiAqLworCQlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KHRydWUpOworCisJCXByb2NfZXhpdCgwKTsK IAl9CiAJUEdfRU5EX1RSWSgpOwogCkBAIC00MjIyLDIwICs0MjU0LDI3IEBAIHN0YXJ0X2FwcGx5 KFhMb2dSZWNQdHIgb3JpZ2luX3N0YXJ0cG9zKQogCX0KIAlQR19DQVRDSCgpOwogCXsKKwkJLyoK KwkJICogRW1pdCB0aGUgZXJyb3IgbWVzc2FnZSwgYW5kIHJlY292ZXIgZnJvbSB0aGUgZXJyb3Ig c3RhdGUgdG8gYW4gaWRsZQorCQkgKiBzdGF0ZQorCQkgKi8KKwkJSE9MRF9JTlRFUlJVUFRTKCk7 CisKKwkJRW1pdEVycm9yUmVwb3J0KCk7CisJCUFib3J0T3V0T2ZBbnlUcmFuc2FjdGlvbigpOwor CQlGbHVzaEVycm9yU3RhdGUoKTsKKworCQlSRVNVTUVfSU5URVJSVVBUUygpOworCisJCS8qIFJl cG9ydCB0aGUgd29ya2VyIGZhaWxlZCB3aGlsZSBhcHBseWluZyBjaGFuZ2VzICovCisJCXBnc3Rh dF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15U3Vic2NyaXB0aW9uLT5vaWQsCisJCQkJCQkJ CQkJICFhbV90YWJsZXN5bmNfd29ya2VyKCkpOworCiAJCWlmIChNeVN1YnNjcmlwdGlvbi0+ZGlz YWJsZW9uZXJyKQotCQkJRGlzYWJsZVN1YnNjcmlwdGlvbkFuZEV4aXQoKTsKLQkJZWxzZQotCQl7 Ci0JCQkvKgotCQkJICogUmVwb3J0IHRoZSB3b3JrZXIgZmFpbGVkIHdoaWxlIGFwcGx5aW5nIGNo YW5nZXMuIEFib3J0IHRoZQotCQkJICogY3VycmVudCB0cmFuc2FjdGlvbiBzbyB0aGF0IHRoZSBz dGF0cyBtZXNzYWdlIGlzIHNlbnQgaW4gYW4KLQkJCSAqIGlkbGUgc3RhdGUuCi0JCQkgKi8KLQkJ CUFib3J0T3V0T2ZBbnlUcmFuc2FjdGlvbigpOwotCQkJcGdzdGF0X3JlcG9ydF9zdWJzY3JpcHRp b25fZXJyb3IoTXlTdWJzY3JpcHRpb24tPm9pZCwgIWFtX3RhYmxlc3luY193b3JrZXIoKSk7CisJ CQlEaXNhYmxlU3Vic2NyaXB0aW9uT25FcnJvcigpOwogCi0JCQlQR19SRV9USFJPVygpOwotCQl9 CisJCS8qIFNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwkJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeSh0 cnVlKTsKIAl9CiAJUEdfRU5EX1RSWSgpOwogfQpAQCAtNDUyNSwzOSArNDU2NCwyMCBAQCBBcHBs eVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiB9CiAKIC8qCi0gKiBBZnRlciBlcnJvciByZWNv dmVyeSwgZGlzYWJsZSB0aGUgc3Vic2NyaXB0aW9uIGluIGEgbmV3IHRyYW5zYWN0aW9uCi0gKiBh bmQgZXhpdCBjbGVhbmx5LgorICogRGlzYWJsZSB0aGUgc3Vic2NyaXB0aW9uIGluIGEgbmV3IHRy YW5zYWN0aW9uLgogICovCiBzdGF0aWMgdm9pZAotRGlzYWJsZVN1YnNjcmlwdGlvbkFuZEV4aXQo dm9pZCkKK0Rpc2FibGVTdWJzY3JpcHRpb25PbkVycm9yKHZvaWQpCiB7Ci0JLyoKLQkgKiBFbWl0 IHRoZSBlcnJvciBtZXNzYWdlLCBhbmQgcmVjb3ZlciBmcm9tIHRoZSBlcnJvciBzdGF0ZSB0byBh biBpZGxlCi0JICogc3RhdGUKLQkgKi8KLQlIT0xEX0lOVEVSUlVQVFMoKTsKLQotCUVtaXRFcnJv clJlcG9ydCgpOwotCUFib3J0T3V0T2ZBbnlUcmFuc2FjdGlvbigpOwotCUZsdXNoRXJyb3JTdGF0 ZSgpOwotCi0JUkVTVU1FX0lOVEVSUlVQVFMoKTsKLQotCS8qIFJlcG9ydCB0aGUgd29ya2VyIGZh aWxlZCBkdXJpbmcgZWl0aGVyIHRhYmxlIHN5bmNocm9uaXphdGlvbiBvciBhcHBseSAqLwotCXBn c3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQs Ci0JCQkJCQkJCQkgIWFtX3RhYmxlc3luY193b3JrZXIoKSk7Ci0KIAkvKiBEaXNhYmxlIHRoZSBz dWJzY3JpcHRpb24gKi8KIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCURpc2FibGVTdWJz Y3JpcHRpb24oTXlTdWJzY3JpcHRpb24tPm9pZCk7CiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5k KCk7CiAKLQkvKiBOb3RpZnkgdGhlIHN1YnNjcmlwdGlvbiBoYXMgYmVlbiBkaXNhYmxlZCBhbmQg ZXhpdCAqLworCS8qIE5vdGlmeSB0aGUgc3Vic2NyaXB0aW9uIGhhcyBiZWVuIGRpc2FibGVkICov CiAJZXJlcG9ydChMT0csCiAJCQllcnJtc2coInN1YnNjcmlwdGlvbiBcIiVzXCIgaGFzIGJlZW4g ZGlzYWJsZWQgYmVjYXVzZSBvZiBhbiBlcnJvciIsCiAJCQkJICAgTXlTdWJzY3JpcHRpb24tPm5h bWUpKTsKLQotCXByb2NfZXhpdCgwKTsKIH0KIAogLyoKQEAgLTQ4NTQsMyArNDg3NCw3MSBAQCBn ZXRfd29ya2VyX25hbWUodm9pZCkKIAllbHNlCiAJCXJldHVybiBfKCJsb2dpY2FsIHJlcGxpY2F0 aW9uIGFwcGx5IHdvcmtlciIpOwogfQorCisvKgorICogU2V0IHN1YnJldHJ5IG9mIHBnX3N1YnNj cmlwdGlvbiBjYXRhbG9nLgorICoKKyAqIElmIHJldHJ5IGlzIHRydWUsIHN1YnNjcmliZXIgaXMg YWJvdXQgdG8gZXhpdCB3aXRoIGFuIGVycm9yLiBPdGhlcndpc2UsIGl0CisgKiBtZWFucyB0aGF0 IHRoZSB0cmFuc2FjdGlvbiB3YXMgYXBwbGllZCBzdWNjZXNzZnVsbHkuCisgKi8KK3N0YXRpYyB2 b2lkCitzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGJvb2wgcmV0cnkpCit7CisJUmVsYXRpb24JcmVs OworCUhlYXBUdXBsZQl0dXA7CisJYm9vbAkJc3RhcnRlZF90eCA9IGZhbHNlOworCWJvb2wJCW51 bGxzW05hdHRzX3BnX3N1YnNjcmlwdGlvbl07CisJYm9vbAkJcmVwbGFjZXNbTmF0dHNfcGdfc3Vi c2NyaXB0aW9uXTsKKwlEYXR1bQkJdmFsdWVzW05hdHRzX3BnX3N1YnNjcmlwdGlvbl07CisKKwkv KiBGYXN0IHBhdGggLSBpZiBubyBzdGF0ZSBjaGFuZ2UgdGhlbiBub3RoaW5nIHRvIGRvICovCisJ aWYgKE15U3Vic2NyaXB0aW9uLT5yZXRyeSA9PSByZXRyeSkKKwkJcmV0dXJuOworCisJLyogRmFz dCBwYXRoIC0gc2tpcCBmb3IgcGFyYWxsZWwgYXBwbHkgd29ya2VycyAqLworCWlmIChhbV9wYXJh bGxlbF9hcHBseV93b3JrZXIoKSkKKwkJcmV0dXJuOworCisJLyogRmFzdCBwYXRoIC0gc2tpcCBz ZXQgcmV0cnkgaWYgbm8gYWN0aXZlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgKi8KKwlpZiAocmV0 cnkgJiYgIXBhX2hhdmVfYWN0aXZlX3dvcmtlcigpKQorCQlyZXR1cm47CisKKwlpZiAoIUlzVHJh bnNhY3Rpb25TdGF0ZSgpKQorCXsKKwkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJc3Rh cnRlZF90eCA9IHRydWU7CisJfQorCisJLyogTG9vayB1cCB0aGUgc3Vic2NyaXB0aW9uIGluIHRo ZSBjYXRhbG9nICovCisJcmVsID0gdGFibGVfb3BlbihTdWJzY3JpcHRpb25SZWxhdGlvbklkLCBS b3dFeGNsdXNpdmVMb2NrKTsKKwl0dXAgPSBTZWFyY2hTeXNDYWNoZUNvcHkxKFNVQlNDUklQVElP Tk9JRCwKKwkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0oTXlTdWJzY3JpcHRpb24tPm9pZCkpOwor CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCisJCWVsb2coRVJST1IsICJzdWJzY3JpcHRp b24gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwgTXlTdWJzY3JpcHRpb24tPm5hbWUpOworCisJTG9j a1NoYXJlZE9iamVjdChTdWJzY3JpcHRpb25SZWxhdGlvbklkLCBNeVN1YnNjcmlwdGlvbi0+b2lk LCAwLAorCQkJCQkgQWNjZXNzU2hhcmVMb2NrKTsKKworCS8qIEZvcm0gYSBuZXcgdHVwbGUuICov CisJbWVtc2V0KHZhbHVlcywgMCwgc2l6ZW9mKHZhbHVlcykpOworCW1lbXNldChudWxscywgZmFs c2UsIHNpemVvZihudWxscykpOworCW1lbXNldChyZXBsYWNlcywgZmFsc2UsIHNpemVvZihyZXBs YWNlcykpOworCisJLyogU2V0IHN1YnJldHJ5ICovCisJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0 aW9uX3N1YnJldHJ5IC0gMV0gPSBCb29sR2V0RGF0dW0ocmV0cnkpOworCXJlcGxhY2VzW0FudW1f cGdfc3Vic2NyaXB0aW9uX3N1YnJldHJ5IC0gMV0gPSB0cnVlOworCisJdHVwID0gaGVhcF9tb2Rp ZnlfdHVwbGUodHVwLCBSZWxhdGlvbkdldERlc2NyKHJlbCksIHZhbHVlcywgbnVsbHMsCisJCQkJ CQkJcmVwbGFjZXMpOworCisJLyogVXBkYXRlIHRoZSBjYXRhbG9nLiAqLworCUNhdGFsb2dUdXBs ZVVwZGF0ZShyZWwsICZ0dXAtPnRfc2VsZiwgdHVwKTsKKworCS8qIENsZWFudXAuICovCisJaGVh cF9mcmVldHVwbGUodHVwKTsKKwl0YWJsZV9jbG9zZShyZWwsIE5vTG9jayk7CisKKwlpZiAoc3Rh cnRlZF90eCkKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7Cit9CmRpZmYgLS1naXQgYS9z cmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRl eCA1MTQxYTY2Li43NmUxMzVjIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5j CisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTQ1MDgsOCArNDUwOCw5IEBAIGdl dFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAludHVwcyA9IFBRbnR1cGxlcyhyZXMpOwog CiAJLyoKLQkgKiBHZXQgc3Vic2NyaXB0aW9uIGZpZWxkcy4gV2UgZG9uJ3QgaW5jbHVkZSBzdWJz a2lwbHNuIGluIHRoZSBkdW1wIGFzCi0JICogYWZ0ZXIgcmVzdG9yaW5nIHRoZSBkdW1wIHRoaXMg dmFsdWUgbWF5IG5vIGxvbmdlciBiZSByZWxldmFudC4KKwkgKiBHZXQgc3Vic2NyaXB0aW9uIGZp ZWxkcy4gV2UgZG9uJ3QgaW5jbHVkZSBzdWJza2lwbHNuIGFuZCBzdWJyZXRyeSBpbgorCSAqIHRo ZSBkdW1wIGFzIGFmdGVyIHJlc3RvcmluZyB0aGUgZHVtcCB0aGlzIHZhbHVlIG1heSBubyBsb25n ZXIgYmUKKwkgKiByZWxldmFudC4KIAkgKi8KIAlpX3RhYmxlb2lkID0gUFFmbnVtYmVyKHJlcywg InRhYmxlb2lkIik7CiAJaV9vaWQgPSBQUWZudW1iZXIocmVzLCAib2lkIik7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19zdWJzY3JpcHRpb24uaAppbmRleCAwMTZhZmJjLi5lYjc4YTMyIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKQEAgLTg4LDYgKzg4LDExIEBAIENBVEFMT0cocGdf c3Vic2NyaXB0aW9uLDYxMDAsU3Vic2NyaXB0aW9uUmVsYXRpb25JZCkgQktJX1NIQVJFRF9SRUxB VElPTiBCS0lfUk9XCiAJYm9vbAkJc3ViZGlzYWJsZW9uZXJyOwkvKiBUcnVlIGlmIGEgd29ya2Vy IGVycm9yIHNob3VsZCBjYXVzZSB0aGUKIAkJCQkJCQkJCSAqIHN1YnNjcmlwdGlvbiB0byBiZSBk aXNhYmxlZCAqLwogCisJYm9vbAkJc3VicmV0cnkgQktJX0RFRkFVTFQoZik7CS8qIFRydWUgaWYg cHJldmlvdXMgY2hhbmdlIGZhaWxlZAorCQkJCQkJCQkJCQkgKiB0byBiZSBhcHBsaWVkIHdoaWxl IHRoZXJlIHdlcmUKKwkJCQkJCQkJCQkJICogYW55IGFjdGl2ZSBwYXJhbGxlbCBhcHBseQorCQkJ CQkJCQkJCQkgKiB3b3JrZXJzICovCisKICNpZmRlZiBDQVRBTE9HX1ZBUkxFTgkJCS8qIHZhcmlh YmxlLWxlbmd0aCBmaWVsZHMgc3RhcnQgaGVyZSAqLwogCS8qIENvbm5lY3Rpb24gc3RyaW5nIHRv IHRoZSBwdWJsaXNoZXIgKi8KIAl0ZXh0CQlzdWJjb25uaW5mbyBCS0lfRk9SQ0VfTk9UX05VTEw7 CkBAIC0xMzEsNiArMTM2LDggQEAgdHlwZWRlZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAJYm9vbAkJ ZGlzYWJsZW9uZXJyOwkvKiBJbmRpY2F0ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiBzaG91bGQgYmUK IAkJCQkJCQkJICogYXV0b21hdGljYWxseSBkaXNhYmxlZCBpZiBhIHdvcmtlciBlcnJvcgogCQkJ CQkJCQkgKiBvY2N1cnMgKi8KKwlib29sCQlyZXRyeTsJCQkvKiBJbmRpY2F0ZXMgaWYgcHJldmlv dXMgY2hhbmdlIGZhaWxlZCB0byBiZQorCQkJCQkJCQkgKiBhcHBsaWVkIHVzaW5nIGEgcGFyYWxs ZWwgYXBwbHkgd29ya2VyICovCiAJY2hhcgkgICAqY29ubmluZm87CQkvKiBDb25uZWN0aW9uIHN0 cmluZyB0byB0aGUgcHVibGlzaGVyICovCiAJY2hhcgkgICAqc2xvdG5hbWU7CQkvKiBOYW1lIG9m IHRoZSByZXBsaWNhdGlvbiBzbG90ICovCiAJY2hhcgkgICAqc3luY2NvbW1pdDsJCS8qIFN5bmNo cm9ub3VzIGNvbW1pdCBzZXR0aW5nIGZvciB3b3JrZXIgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vd29ya2VyX2ludGVybmFsLmgKaW5kZXggODY1YmY3Ni4uYWZkMTkzNyAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKQEAgLTI4OSw2ICsyODksOCBAQCBleHRl cm4gdm9pZCBwYV9sb2NrX3RyYW5zYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLCBMT0NLTU9ERSBs b2NrbW9kZSk7CiBleHRlcm4gdm9pZCBwYV91bmxvY2tfc3RyZWFtKFRyYW5zYWN0aW9uSWQgeGlk LCBMT0NLTU9ERSBsb2NrbW9kZSk7CiBleHRlcm4gdm9pZCBwYV91bmxvY2tfdHJhbnNhY3Rpb24o VHJhbnNhY3Rpb25JZCB4aWQsIExPQ0tNT0RFIGxvY2ttb2RlKTsKIAorZXh0ZXJuIGJvb2wgcGFf aGF2ZV9hY3RpdmVfd29ya2VyKHZvaWQpOworCiAjZGVmaW5lIGlzUGFyYWxsZWxBcHBseVdvcmtl cih3b3JrZXIpICgod29ya2VyKS0+YXBwbHlfbGVhZGVyX3BpZCAhPSBJbnZhbGlkUGlkKQogCiBz dGF0aWMgaW5saW5lIGJvb2wKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAx NV9zdHJlYW0ucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCmluZGV4 IDY1ZjQzZjAuLjY0YjJlZGIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAx NV9zdHJlYW0ucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbApA QCAtODcsOCArODcsMTYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJCSdjaGVjayBleHRyYSBjb2x1 bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsKIAogCSMgVGVzdCB0aGUgc3RyZWFtaW5nIGlu IGJpbmFyeSBtb2RlCisJbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBh cHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisJ KTsKIAkkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJIkFMVEVSIFNV QlNDUklQVElPTiB0YXBfc3ViIFNFVCAoYmluYXJ5ID0gb24pIik7CisJJG5vZGVfcHVibGlzaGVy LT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQg RlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5h bWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKwkgICkKKwkgIG9yIGRpZQorCSAgIlRpbWVk IG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNV QlNDUklQVElPTiI7CiAKIAkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4K IAkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1pbmdfcGFyYWxsZWxfYXBwbHkucGwgYi9z cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX3BhcmFsbGVsX2FwcGx5LnBsCmlu ZGV4IDEwZWZkMmQuLmQ2MTFkYzIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAzMl9zdHJlYW1pbmdfcGFyYWxsZWxfYXBwbHkucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDMyX3N0cmVhbWluZ19wYXJhbGxlbF9hcHBseS5wbApAQCAtMjEsOSArMjEsOSBAQCAk bm9kZV9wdWJsaXNoZXItPnN0YXJ0OwogbXkgJG5vZGVfc3Vic2NyaWJlciA9IFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicpOwogJG5vZGVfc3Vic2NyaWJlci0+aW5p dDsKIAotIyBDaGVjayBpZiBhbnkgc3RyZWFtaW5nIGNodW5rcyBhcmUgYXBwbGllZCB1c2luZyB0 aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBXZQotIyBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJV RzEgbG9nIG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNvIGJ1bXAgdXAgdGhlIGxvZwotIyB2ZXJib3Np dHkuCisjIENoZWNrIGlmIGFueSBzdHJlYW1pbmcgY2h1bmtzIGFyZSBhcHBsaWVkIHVzaW5nIHRo ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisjIEFuZCBjaGVjayBpZiB0aGUgcGFyYWxsZWwgYXBw bHkgd29ya2VyIGZhaWxlZCB0byBzdGFydC4gV2UgaGF2ZSB0byBsb29rIGZvcgorIyB0aGUgREVC VUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0aGF0LCBzbyBidW1wIHVwIHRoZSBsb2cgdmVyYm9zaXR5 LgogJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJsb2df bWluX21lc3NhZ2VzID0gZGVidWcxIik7CiAKICRub2RlX3N1YnNjcmliZXItPnN0YXJ0OwpAQCAt ODksNiArODksMTIgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9S OiAoIFtBLVowLTldKzopPyBkZWFkbG9jayBkZXRlY3RlZC8sCiAJJG9mZnNldCk7CiAKKyMgQ2hl Y2sgaWYgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpcyBub3Qgc3RhcnRlZCBiZWNhdXNlIHRo ZSBhYm92ZQorIyB0cmFuc2FjdGlvbiBmYWlsZWQgdG8gYmUgYXBwbGllZC4KKyRub2RlX3N1YnNj cmliZXItPndhaXRfZm9yX2xvZygKKwlxci9ERUJVRzogKCBbQS1aMC05XSs6KT8gcGFyYWxsZWwg YXBwbHkgd29ya2VycyBhcmUgbm90IHVzZWQgZm9yIHJldHJpZXMvLAorCSRvZmZzZXQpOworCiAj IERyb3AgdGhlIHVuaXF1ZSBpbmRleCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgog JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIElOREVYIGlkeF90 YWIiKTsKIApAQCAtMTM2LDYgKzE0MiwxMiBAQCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9s b2coCiAJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGRlYWRsb2NrIGRldGVjdGVkLywKIAkkb2Zm c2V0KTsKIAorIyBDaGVjayBpZiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlzIG5vdCBzdGFy dGVkIGJlY2F1c2UgdGhlIGFib3ZlCisjIHRyYW5zYWN0aW9uIGZhaWxlZCB0byBiZSBhcHBsaWVk LgorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0RFQlVHOiAoIFtBLVowLTld KzopPyBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGFyZSBub3QgdXNlZCBmb3IgcmV0cmllcy8sCisJ JG9mZnNldCk7CisKICMgRHJvcCB0aGUgdW5pcXVlIGluZGV4IG9uIHRoZSBzdWJzY3JpYmVyLCBu b3cgaXQgd29ya3MuCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRS T1AgSU5ERVggaWR4X3RhYiIpOwogCi0tIAoyLjcuMi53aW5kb3dzLjEKCg== --_005_OS0PR01MB5716CF7D3BDE465AFAF17DC094079OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v48-0001-Perform-streaming-logical-transactions-by-parall.patch" Content-Description: v48-0001-Perform-streaming-logical-transactions-by-parall.patch Content-Disposition: attachment; filename="v48-0001-Perform-streaming-logical-transactions-by-parall.patch"; size=187175; creation-date="Wed, 16 Nov 2022 08:18:47 GMT"; modification-date="Wed, 16 Nov 2022 08:19:44 GMT" Content-Transfer-Encoding: base64 RnJvbSAxMWZlMjhkOTJmOGU3Zjc1ZmZjZjhlMTZiZGVkODNlM2ZjOWFiOWQ0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjAgQXByIDIwMjIgMTY6NDU6MDcgKzA4MDAKU3ViamVjdDogW1BBVENI IHY0OCAxLzRdIFBlcmZvcm0gc3RyZWFtaW5nIGxvZ2ljYWwgdHJhbnNhY3Rpb25zIGJ5IHBhcmFs bGVsCiB3b3JrZXJzCgpDdXJyZW50bHksIGZvciBsYXJnZSB0cmFuc2FjdGlvbnMsIHRoZSBwdWJs aXNoZXIgc2VuZHMgdGhlIGRhdGEgaW4gbXVsdGlwbGUKc3RyZWFtcyAoY2hhbmdlcyBkaXZpZGVk IGludG8gY2h1bmtzIGRlcGVuZGluZyB1cG9uIGxvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW0pLAph bmQgdGhlbiBvbiB0aGUgc3Vic2NyaWJlci1zaWRlLCB0aGUgYXBwbHkgd29ya2VyIHdyaXRlcyB0 aGUgY2hhbmdlcyBpbnRvCnRlbXBvcmFyeSBmaWxlcyBhbmQgb25jZSBpdCByZWNlaXZlcyB0aGUg Y29tbWl0LCBpdCByZWFkcyBmcm9tIHRob3NlIGZpbGVzIGFuZAphcHBsaWVzIHRoZSBlbnRpcmUg dHJhbnNhY3Rpb24uIFRvIGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIG9mIHN1Y2gKdHJhbnNhY3Rp b25zLCB3ZSBjYW4gaW5zdGVhZCBhbGxvdyB0aGVtIHRvIGJlIGFwcGxpZWQgdmlhIHBhcmFsbGVs IHdvcmtlcnMuCgpJbiB0aGlzIGFwcHJvYWNoLCB3ZSBhc3NpZ24gYSBuZXcgcGFyYWxsZWwgYXBw bHkgd29ya2VyIChpZiBhdmFpbGFibGUpIGFzCnNvb24gYXMgdGhlIHhhY3QncyBmaXJzdCBzdHJl YW0gaXMgcmVjZWl2ZWQgYW5kIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHdpbGwKc2VuZCBjaGFu Z2VzIHRvIHRoaXMgbmV3IHdvcmtlciB2aWEgc2hhcmVkIG1lbW9yeS4gVGhlIHBhcmFsbGVsIGFw cGx5IHdvcmtlcgp3aWxsIGRpcmVjdGx5IGFwcGx5IHRoZSBjaGFuZ2UgaW5zdGVhZCBvZiB3cml0 aW5nIGl0IHRvIHRlbXBvcmFyeSBmaWxlcy4gV2UKa2VlcCB0aGlzIHdvcmtlciBhc3NpZ25lZCB0 aWxsIHRoZSB0cmFuc2FjdGlvbiBjb21taXQgaXMgcmVjZWl2ZWQgYW5kIGFsc28gd2FpdApmb3Ig dGhlIHdvcmtlciB0byBmaW5pc2ggYXQgY29tbWl0LiBUaGlzIHByZXNlcnZlcyBjb21taXQgb3Jk ZXJpbmcgYW5kIGF2b2lkcwp3cml0aW5nIHRvIGFuZCByZWFkaW5nIGZyb20gZmlsZXMgaW4gbW9z dCBjYXNlcy4gV2Ugc3RpbGwgbmVlZCB0byBzcGlsbCBpZgp0aGVyZSBpcyBubyB3b3JrZXIgYXZh aWxhYmxlLgoKVGhpcyBwYXRjaCBhbHNvIGV4dGVuZHMgdGhlIFNVQlNDUklQVElPTiAnc3RyZWFt aW5nJyBwYXJhbWV0ZXIgc28gdGhhdCB0aGUgdXNlcgpjYW4gY29udHJvbCB3aGV0aGVyIHRvIGFw cGx5IHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gaW4gYSBwYXJhbGxlbCBhcHBseQp3b3JrZXIg b3Igc3BpbGwgdGhlIGNoYW5nZSB0byBkaXNrLiBUaGUgdXNlciBjYW4gc2V0IHRoZSBzdHJlYW1p bmcgcGFyYW1ldGVyIHRvCidvbi9vZmYnLCAncGFyYWxsZWwnLiBUaGUgcGFyYW1ldGVyIHZhbHVl ICdwYXJhbGxlbCcgbWVhbnMgdGhlIHN0cmVhbWluZyB3aWxsCmJlIGFwcGxpZWQgdmlhIGEgcGFy YWxsZWwgYXBwbHkgd29ya2VyLCBpZiBhdmFpbGFibGUuIFRoZSBwYXJhbWV0ZXIgdmFsdWUKJ29u JyBtZWFucyB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHdpbGwgYmUgc3BpbGxlZCB0byBkaXNr LiBUaGUgZGVmYXVsdCB2YWx1ZQppcyAnb2ZmJyAoc2FtZSBhcyBjdXJyZW50IGJlaGF2aW91ciku CgpJbiBhZGRpdGlvbiwgdGhlIHBhdGNoIGV4dGVuZHMgdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24g U1RSRUFNX0FCT1JUIG1lc3NhZ2Ugc28KdGhhdCBhYm9ydF90aW1lIGFuZCBhYm9ydF9sc24gY2Fu IGFsc28gYmUgc2VudCB3aGljaCBjYW4gYmUgdXNlZCB0byB1cGRhdGUgdGhlCnJlcGxpY2F0aW9u IG9yaWdpbiBpbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2hlbiB0aGUgc3RyZWFtaW5nIHRyYW5z YWN0aW9uIGlzCmFib3J0ZWQuIEJlY2F1c2UgdGhpcyBtZXNzYWdlIGV4dGVuc2lvbiBpcyBuZWVk ZWQgdG8gc3VwcG9ydCBwYXJhbGxlbApzdHJlYW1pbmcsIHBhcmFsbGVsIHN0cmVhbWluZyBpcyBu b3Qgc3VwcG9ydGVkIGZvciBwdWJsaWNhdGlvbnMgb24gc2VydmVycyA8ClBHMTYuCi0tLQogZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDExICst CiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg MjggKy0KIGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgICAgICAgICAgICAg IHwgICAyMSArLQogZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAgICAgICAgICAgICAgICAg ICAgICAgfCAgICA1ICsKIGRvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAyOSArLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9u LnNnbWwgICAgICAgICAgfCAgIDI0ICstCiBkb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwg ICAgICAgICAgICAgICAgICAgICB8ICAgIDUgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3hhY3QuYyAgICAgICAgICAgICAgICAgIHwgICAxMyArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9z dWJzY3JpcHRpb25jbWRzLmMgICAgICAgICAgICB8ICAgNjYgKy0KIHNyYy9iYWNrZW5kL2xpYnBx L3BxbXEuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxOCArLQogc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9iZ3dvcmtlci5jICAgICAgICAgICAgICAgICAgfCAgICAzICsKIC4uLi9saWJw cXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYyAgICAgICAgICAgIHwgICAgNiArLQogc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZSAgICAgICAgICAgfCAgICAxICsK IC4uLi9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyAgICAgIHwgMTI5 MCArKysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9k ZWNvZGUuYyAgICAgICAgICAgfCAgIDEwICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2xhdW5jaGVyLmMgICAgICAgICB8ICAyMTAgKysrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9tZXNvbi5idWlsZCAgICAgICAgfCAgICAxICsKIHNyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMgICAgICAgICAgIHwgICAyMyArLQogc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jICAgICAgICAgICAgfCAgIDM3ICstCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYyAgICB8ICAgMTAgKy0KIHNy Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgICAgICAgIHwgICAyNCAr LQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgICAgICAgfCAx MDEzICsrKysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdv dXRwdXQuYyAgICAgICAgfCAgIDIyICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2ln bmFsLmMgICAgICAgICAgICAgICB8ICAgIDQgKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xt Z3IuYyAgICAgICAgICAgICAgICAgICAgfCAgIDQ1ICsKIHNyYy9iYWNrZW5kL3Rjb3AvcG9zdGdy ZXMuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMyArCiBzcmMvYmFja2VuZC91dGlscy9h Y3Rpdml0eS93YWl0X2V2ZW50LmMgICAgICAgICAgICB8ICAgIDYgKwogc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2xvY2tmdW5jcy5jICAgICAgICAgICAgICAgICAgfCAgICA1ICstCiBzcmMvYmFja2Vu ZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyAgICAgICAgICAgICAgICB8ICAgMTIgKwogc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlICAgICAgfCAgICAxICsKIHNy Yy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNiAr LQogc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDIxICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oICAgICAgICAgICAg ICB8ICAgMjEgKy0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuaCAgICAg ICAgICAgIHwgICAgMiArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIu aCAgICAgICAgICB8ICAgIDEgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3Rv LmggICAgICAgICAgICAgfCAgIDI4ICstCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fs d29ya2VyLmggICAgICAgICAgICB8ICAgIDggKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3Jp Z2luLmggICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9wZ291dHB1dC5oICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIHNyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3Jlb3JkZXJidWZmZXIuaCAgICAgICAgICAgIHwgICAgNyArLQogc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCAgICAgICAgICAgICAgfCAgICAyICstCiBzcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCAgICAgICAgICB8ICAxNjAgKystCiBz cmMvaW5jbHVkZS9zdG9yYWdlL2xtZ3IuaCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDUg Kwogc3JjL2luY2x1ZGUvc3RvcmFnZS9sb2NrLmggICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDE3ICstCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaCAgICAgICAgICAgICAgICAg ICB8ICAgIDEgKwogc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oICAgICAgICAgICAgICAg ICAgICAgfCAgICAyICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91 dCAgICAgICAgIHwgICA0NiArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNx bCAgICAgICAgICAgICAgfCAgICA2ICstCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dCAgICAgICAgICAgICAgICAgICB8ICAgIDYgKwogNDkgZmlsZXMgY2hhbmdlZCwgMjk1OSBpbnNl cnRpb25zKCspLCAzMzAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKCmRpZmYgLS1naXQg YS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21s CmluZGV4IDAwZjgzM2QuLmM1NzY5ZGEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9n cy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBAIC03ODkyLDExICs3ODky LDE2IEBAIFNDUkFNLVNIQS0yNTYkPHJlcGxhY2VhYmxlPiZsdDtpdGVyYXRpb24gY291bnQmZ3Q7 PC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPiZsCiAKICAgICAgPHJvdz4KICAgICAgIDxlbnRy eSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlv biI+Ci0gICAgICAgPHN0cnVjdGZpZWxkPnN1YnN0cmVhbTwvc3RydWN0ZmllbGQ+IDx0eXBlPmJv b2w8L3R5cGU+CisgICAgICAgPHN0cnVjdGZpZWxkPnN1YnN0cmVhbTwvc3RydWN0ZmllbGQ+IDx0 eXBlPmNoYXI8L3R5cGU+CiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KLSAgICAgICBJZiB0 cnVlLCB0aGUgc3Vic2NyaXB0aW9uIHdpbGwgYWxsb3cgc3RyZWFtaW5nIG9mIGluLXByb2dyZXNz Ci0gICAgICAgdHJhbnNhY3Rpb25zCisgICAgICAgQ29udHJvbHMgaG93IHRvIGhhbmRsZSB0aGUg c3RyZWFtaW5nIG9mIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uczoKKyAgICAgICA8bGl0ZXJhbD5m PC9saXRlcmFsPiA9IGRpc2FsbG93IHN0cmVhbWluZyBvZiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlv bnMsCisgICAgICAgPGxpdGVyYWw+dDwvbGl0ZXJhbD4gPSBzcGlsbCB0aGUgY2hhbmdlcyBvZiBp bi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMgdG8KKyAgICAgICBkaXNrIGFuZCBhcHBseSBhdCBvbmNl IGFmdGVyIHRoZSB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gdGhlCisgICAgICAgcHVibGlz aGVyLAorICAgICAgIDxsaXRlcmFsPnA8L2xpdGVyYWw+ID0gYXBwbHkgY2hhbmdlcyBkaXJlY3Rs eSB1c2luZyBhIHBhcmFsbGVsIGFwcGx5CisgICAgICAgd29ya2VyIGlmIGF2YWlsYWJsZSAoc2Ft ZSBhcyAndCcgaWYgbm8gd29ya2VyIGlzIGF2YWlsYWJsZSkKICAgICAgIDwvcGFyYT48L2VudHJ5 PgogICAgICA8L3Jvdz4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sIGIv ZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4IDU1OWViODkuLmE2YWExYWMgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNn bWwKQEAgLTQ5NDgsNyArNDk0OCw4IEBAIEFOWSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+bnVtX3N5bmM8L3JlcGxhY2VhYmxlPiAoIDxyZXBsYWNlYWJsZSBjbGFzcz0iCiAgICAgICA8 bGlzdGl0ZW0+CiAgICAgICAgPHBhcmE+CiAgICAgICAgIFNwZWNpZmllcyBtYXhpbXVtIG51bWJl ciBvZiBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlcnMuIFRoaXMgaW5jbHVkZXMKLSAgICAgICAg Ym90aCBhcHBseSB3b3JrZXJzIGFuZCB0YWJsZSBzeW5jaHJvbml6YXRpb24gd29ya2Vycy4KKyAg ICAgICAgbGVhZGVyIGFwcGx5IHdvcmtlcnMsIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMsIGFuZCB0 YWJsZSBzeW5jaHJvbml6YXRpb24KKyAgICAgICAgd29ya2Vycy4KICAgICAgICA8L3BhcmE+CiAg ICAgICAgPHBhcmE+CiAgICAgICAgIExvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VycyBhcmUgdGFr ZW4gZnJvbSB0aGUgcG9vbCBkZWZpbmVkIGJ5CkBAIC00OTg4LDYgKzQ5ODksMzEgQEAgQU5ZIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+ICggPHJl cGxhY2VhYmxlIGNsYXNzPSIKICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5 PgogCisgICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1tYXgtcGFyYWxsZWwtYXBwbHktd29ya2Vy cy1wZXItc3Vic2NyaXB0aW9uIiB4cmVmbGFiZWw9Im1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJz X3Blcl9zdWJzY3JpcHRpb24iPgorICAgICAgPHRlcm0+PHZhcm5hbWU+bWF4X3BhcmFsbGVsX2Fw cGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbjwvdmFybmFtZT4gKDx0eXBlPmludGVnZXI8L3R5 cGU+KQorICAgICAgPGluZGV4dGVybT4KKyAgICAgICA8cHJpbWFyeT48dmFybmFtZT5tYXhfcGFy YWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uPC92YXJuYW1lPiBjb25maWd1cmF0 aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgPC90ZXJt PgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBNYXhpbXVtIG51bWJl ciBvZiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIHBlciBzdWJzY3JpcHRpb24uIFRoaXMKKyAgICAg ICAgcGFyYW1ldGVyIGNvbnRyb2xzIHRoZSBhbW91bnQgb2YgcGFyYWxsZWxpc20gZm9yIHN0cmVh bWluZyBvZgorICAgICAgICBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMgd2l0aCBzdWJzY3JpcHRp b24gcGFyYW1ldGVyCisgICAgICAgIDxsaXRlcmFsPnN0cmVhbWluZyA9IHBhcmFsbGVsPC9saXRl cmFsPi4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBwYXJhbGxl bCBhcHBseSB3b3JrZXJzIGFyZSB0YWtlbiBmcm9tIHRoZSBwb29sIGRlZmluZWQgYnkKKyAgICAg ICAgPHZhcm5hbWU+bWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VyczwvdmFybmFtZT4uCisg ICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBp cyAyLiBUaGlzIHBhcmFtZXRlciBjYW4gb25seSBiZSBzZXQgaW4gdGhlCisgICAgICAgIDxmaWxl bmFtZT5wb3N0Z3Jlc3FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIG9yIG9uIHRoZSBzZXJ2ZXIgY29t bWFuZAorICAgICAgICBsaW5lLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+Cisg ICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgIDwvc2VjdDI+ CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgYi9k b2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCmluZGV4IGY4NzU2MzguLmYzNjY3 MTAgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbApAQCAtMTQ5Nyw2ICsxNDk3 LDE2IEBAIENPTlRFWFQ6ICBwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBv cmlnaW4gInBnXzE2Mzk1IiBkdXJpbmcgIklOU0VSCiAgICBtaWdodCBub3QgdmlvbGF0ZSBhbnkg Y29uc3RyYWludC4gIFRoaXMgY2FuIGVhc2lseSBtYWtlIHRoZSBzdWJzY3JpYmVyCiAgICBpbmNv bnNpc3RlbnQuCiAgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFdoZW4gdGhlIHN0cmVhbWluZyBt b2RlIGlzIDxsaXRlcmFsPnBhcmFsbGVsPC9saXRlcmFsPiwgdGhlIGZpbmlzaCBMU04gb2YKKyAg IGZhaWxlZCB0cmFuc2FjdGlvbnMgbWF5IG5vdCBiZSBsb2dnZWQuIEluIHRoYXQgY2FzZSwgaXQg bWF5IGJlIG5lY2Vzc2FyeSB0bworICAgY2hhbmdlIHRoZSBzdHJlYW1pbmcgbW9kZSB0byA8bGl0 ZXJhbD5vbjwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+b2ZmPC9saXRlcmFsPiBhbmQKKyAgIGNhdXNl IHRoZSBzYW1lIGNvbmZsaWN0cyBhZ2FpbiBzbyB0aGUgZmluaXNoIExTTiBvZiB0aGUgZmFpbGVk IHRyYW5zYWN0aW9uIHdpbGwKKyAgIGJlIHdyaXR0ZW4gdG8gdGhlIHNlcnZlciBsb2cuIEZvciB0 aGUgdXNhZ2Ugb2YgZmluaXNoIExTTiwgcGxlYXNlIHJlZmVyIHRvIDxsaW5rCisgICBsaW5rZW5k PSJzcWwtYWx0ZXJzdWJzY3JpcHRpb24iPjxjb21tYW5kPkFMVEVSIFNVQlNDUklQVElPTiAuLi4K KyAgIFNLSVA8L2NvbW1hbmQ+PC9saW5rPi4KKyAgPC9wYXJhPgogIDwvc2VjdDE+CiAKICA8c2Vj dDEgaWQ9ImxvZ2ljYWwtcmVwbGljYXRpb24tcmVzdHJpY3Rpb25zIj4KQEAgLTE2NzgsNyArMTY4 OCw4IEBAIENPTlRFWFQ6ICBwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBv cmlnaW4gInBnXzE2Mzk1IiBkdXJpbmcgIklOU0VSCiAgICBzdWJzY3JpcHRpb24uICBBIGRpc2Fi bGVkIHN1YnNjcmlwdGlvbiBvciBhIGNyYXNoZWQgc3Vic2NyaXB0aW9uIHdpbGwgaGF2ZQogICAg emVybyByb3dzIGluIHRoaXMgdmlldy4gIElmIHRoZSBpbml0aWFsIGRhdGEgc3luY2hyb25pemF0 aW9uIG9mIGFueQogICAgdGFibGUgaXMgaW4gcHJvZ3Jlc3MsIHRoZXJlIHdpbGwgYmUgYWRkaXRp b25hbCB3b3JrZXJzIGZvciB0aGUgdGFibGVzCi0gICBiZWluZyBzeW5jaHJvbml6ZWQuCisgICBi ZWluZyBzeW5jaHJvbml6ZWQuIE1vcmVvdmVyLCBpZiB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9u IGlzIGFwcGxpZWQgaW4KKyAgIHBhcmFsbGVsLCB0aGVyZSB3aWxsIGJlIGFkZGl0aW9uYWwgd29y a2Vycy4KICAgPC9wYXJhPgogIDwvc2VjdDE+CiAKQEAgLTE3ODQsOCArMTc5NSwxMiBAQCBDT05U RVhUOiAgcHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luICJwZ18x NjM5NSIgZHVyaW5nICJJTlNFUgogICAgdG8gdGhlIHN1YnNjcmliZXIsIHBsdXMgc29tZSByZXNl cnZlIGZvciB0YWJsZSBzeW5jaHJvbml6YXRpb24uCiAgICA8dmFybmFtZT5tYXhfbG9naWNhbF9y ZXBsaWNhdGlvbl93b3JrZXJzPC92YXJuYW1lPiBtdXN0IGJlIHNldCB0byBhdCBsZWFzdAogICAg dGhlIG51bWJlciBvZiBzdWJzY3JpcHRpb25zLCBhZ2FpbiBwbHVzIHNvbWUgcmVzZXJ2ZSBmb3Ig dGhlIHRhYmxlCi0gICBzeW5jaHJvbml6YXRpb24uICBBZGRpdGlvbmFsbHkgdGhlIDx2YXJuYW1l Pm1heF93b3JrZXJfcHJvY2Vzc2VzPC92YXJuYW1lPgotICAgbWF5IG5lZWQgdG8gYmUgYWRqdXN0 ZWQgdG8gYWNjb21tb2RhdGUgZm9yIHJlcGxpY2F0aW9uIHdvcmtlcnMsIGF0IGxlYXN0CisgICBz eW5jaHJvbml6YXRpb24uIElmIHRoZSBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIDxsaXRlcmFsPnN0 cmVhbWluZzwvbGl0ZXJhbD4KKyAgIGlzIHNldCB0byA8bGl0ZXJhbD5wYXJhbGxlbDwvbGl0ZXJh bD4sCisgICA8bGl0ZXJhbD5tYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzPC9saXRlcmFs PiBzaG91bGQgYmUgaW5jcmVhc2VkCisgICBhY2NvcmRpbmcgdG8gdGhlIGRlc2lyZWQgbnVtYmVy IG9mIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuICBBZGRpdGlvbmFsbHkgdGhlCisgICA8dmFybmFt ZT5tYXhfd29ya2VyX3Byb2Nlc3NlczwvdmFybmFtZT4gbWF5IG5lZWQgdG8gYmUgYWRqdXN0ZWQg dG8KKyAgIGFjY29tbW9kYXRlIGZvciByZXBsaWNhdGlvbiB3b3JrZXJzLCBhdCBsZWFzdAogICAg KDx2YXJuYW1lPm1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM8L3Zhcm5hbWU+CiAgICAr IDxsaXRlcmFsPjE8L2xpdGVyYWw+KS4gIE5vdGUgdGhhdCBzb21lIGV4dGVuc2lvbnMgYW5kIHBh cmFsbGVsIHF1ZXJpZXMKICAgIGFsc28gdGFrZSB3b3JrZXIgc2xvdHMgZnJvbSA8dmFybmFtZT5t YXhfd29ya2VyX3Byb2Nlc3NlczwvdmFybmFtZT4uCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv bW9uaXRvcmluZy5zZ21sIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAppbmRleCBlNWQ2 MjJkLi41NjAwZjVjIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKQEAgLTE4NTEsNiArMTg1MSwxMSBAQCBw b3N0Z3JlcyAgIDI3MDkzICAwLjAgIDAuMCAgMzAwOTYgIDI3NTIgPyAgICAgICAgU3MgICAxMToz NCAgIDA6MDAgcG9zdGdyZXM6IHNlcgogICAgICAgPGVudHJ5PldhaXRpbmcgdG8gYWNxdWlyZSBh biBhZHZpc29yeSB1c2VyIGxvY2suPC9lbnRyeT4KICAgICAgPC9yb3c+CiAgICAgIDxyb3c+Cisg ICAgICA8ZW50cnk+PGxpdGVyYWw+YXBwbHl0cmFuc2FjdGlvbjwvbGl0ZXJhbD48L2VudHJ5Pgor ICAgICAgPGVudHJ5PldhaXRpbmcgdG8gYWNxdWlyZSBhY3F1aXJlIGEgbG9jayBvbiBhIHJlbW90 ZSB0cmFuc2FjdGlvbiBiZWluZworICAgICAgYXBwbGllZCBvbiB0aGUgc3Vic2NyaWJlciBzaWRl LjwvZW50cnk+CisgICAgIDwvcm93PgorICAgICA8cm93PgogICAgICAgPGVudHJ5PjxsaXRlcmFs PmV4dGVuZDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgPGVudHJ5PldhaXRpbmcgdG8gZXh0ZW5k IGEgcmVsYXRpb24uPC9lbnRyeT4KICAgICAgPC9yb3c+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvcHJvdG9jb2wuc2dtbCBiL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sCmluZGV4IDVmZGQ0 MjkuLmM2YTBlODAgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sCisrKyBi L2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sCkBAIC0zMTAyLDcgKzMxMDIsNyBAQCBwc3FsICJk Ym5hbWU9cG9zdGdyZXMgcmVwbGljYXRpb249ZGF0YWJhc2UiIC1jICJJREVOVElGWV9TWVNURU07 IgogICAgICA8bGlzdGl0ZW0+CiAgICAgICA8cGFyYT4KICAgICAgICBQcm90b2NvbCB2ZXJzaW9u LiBDdXJyZW50bHkgdmVyc2lvbnMgPGxpdGVyYWw+MTwvbGl0ZXJhbD4sIDxsaXRlcmFsPjI8L2xp dGVyYWw+LAotICAgICAgIGFuZCA8bGl0ZXJhbD4zPC9saXRlcmFsPiBhcmUgc3VwcG9ydGVkLgor ICAgICAgIDxsaXRlcmFsPjM8L2xpdGVyYWw+LCBhbmQgPGxpdGVyYWw+NDwvbGl0ZXJhbD4gYXJl IHN1cHBvcnRlZC4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgogICAgICAgIFZlcnNpb24g PGxpdGVyYWw+MjwvbGl0ZXJhbD4gaXMgc3VwcG9ydGVkIG9ubHkgZm9yIHNlcnZlciB2ZXJzaW9u IDE0CkBAIC0zMTEyLDYgKzMxMTIsMTEgQEAgcHNxbCAiZGJuYW1lPXBvc3RncmVzIHJlcGxpY2F0 aW9uPWRhdGFiYXNlIiAtYyAiSURFTlRJRllfU1lTVEVNOyIKICAgICAgICBWZXJzaW9uIDxsaXRl cmFsPjM8L2xpdGVyYWw+IGlzIHN1cHBvcnRlZCBvbmx5IGZvciBzZXJ2ZXIgdmVyc2lvbiAxNQog ICAgICAgIGFuZCBhYm92ZSwgYW5kIGl0IGFsbG93cyBzdHJlYW1pbmcgb2YgdHdvLXBoYXNlIGNv bW1pdHMuCiAgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBWZXJzaW9uIDxsaXRl cmFsPjQ8L2xpdGVyYWw+IGlzIHN1cHBvcnRlZCBvbmx5IGZvciBzZXJ2ZXIgdmVyc2lvbiAxNgor ICAgICAgIGFuZCBhYm92ZSwgYW5kIGl0IGFsbG93cyBzdHJlYW1zIG9mIGxhcmdlIGluLXByb2dy ZXNzIHRyYW5zYWN0aW9ucyB0bworICAgICAgIGJlIGFwcGxpZWQgaW4gcGFyYWxsZWwuCisgICAg ICA8L3BhcmE+CiAgICAgIDwvbGlzdGl0ZW0+CiAgICAgPC92YXJsaXN0ZW50cnk+CiAKQEAgLTY4 ODIsNiArNjg4NywyOCBAQCBwc3FsICJkYm5hbWU9cG9zdGdyZXMgcmVwbGljYXRpb249ZGF0YWJh c2UiIC1jICJJREVOVElGWV9TWVNURU07IgogICAgICAgICA8L3BhcmE+CiAgICAgICAgPC9saXN0 aXRlbT4KICAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICA8dmFybGlzdGVudHJ5PgorICAg ICAgIDx0ZXJtPkludDY0IChYTG9nUmVjUHRyKTwvdGVybT4KKyAgICAgICA8bGlzdGl0ZW0+Cisg ICAgICAgIDxwYXJhPgorICAgICAgICAgVGhlIExTTiBvZiB0aGUgYWJvcnQuIFRoaXMgZmllbGQg aXMgYXZhaWxhYmxlIHNpbmNlIHByb3RvY29sIHZlcnNpb24KKyAgICAgICAgIDQuCisgICAgICAg IDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAg ICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgPHRlcm0+SW50NjQgKFRpbWVzdGFtcFR6KTwvdGVy bT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgQWJvcnQgdGlt ZXN0YW1wIG9mIHRoZSB0cmFuc2FjdGlvbi4gVGhlIHZhbHVlIGlzIGluIG51bWJlcgorICAgICAg ICAgb2YgbWljcm9zZWNvbmRzIHNpbmNlIFBvc3RncmVTUUwgZXBvY2ggKDIwMDAtMDEtMDEpLiBU aGlzIGZpZWxkIGlzCisgICAgICAgICBhdmFpbGFibGUgc2luY2UgcHJvdG9jb2wgdmVyc2lvbiA0 LgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVu dHJ5PgorCiAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxp c3RlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlv bi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKaW5kZXgg ZjlhMTc3Ni4uZjE3M2EwOSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vi c2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9u LnNnbWwKQEAgLTIyOCwxMyArMjI4LDI5IEBAIENSRUFURSBTVUJTQ1JJUFRJT04gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN1YnNjcmlwdGlvbl9uYW1lPC9yZXBsYWNlYWJsCiAgICAg ICAgPC92YXJsaXN0ZW50cnk+CiAKICAgICAgICA8dmFybGlzdGVudHJ5PgotICAgICAgICA8dGVy bT48bGl0ZXJhbD5zdHJlYW1pbmc8L2xpdGVyYWw+ICg8dHlwZT5ib29sZWFuPC90eXBlPik8L3Rl cm0+CisgICAgICAgIDx0ZXJtPjxsaXRlcmFsPnN0cmVhbWluZzwvbGl0ZXJhbD4gKDx0eXBlPmVu dW08L3R5cGU+KTwvdGVybT4KICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAg ICAgICAgICAgU3BlY2lmaWVzIHdoZXRoZXIgdG8gZW5hYmxlIHN0cmVhbWluZyBvZiBpbi1wcm9n cmVzcyB0cmFuc2FjdGlvbnMKLSAgICAgICAgICBmb3IgdGhpcyBzdWJzY3JpcHRpb24uICBCeSBk ZWZhdWx0LCBhbGwgdHJhbnNhY3Rpb25zCi0gICAgICAgICAgYXJlIGZ1bGx5IGRlY29kZWQgb24g dGhlIHB1Ymxpc2hlciBhbmQgb25seSB0aGVuIHNlbnQgdG8gdGhlCi0gICAgICAgICAgc3Vic2Ny aWJlciBhcyBhIHdob2xlLgorICAgICAgICAgIGZvciB0aGlzIHN1YnNjcmlwdGlvbi4gIFRoZSBk ZWZhdWx0IHZhbHVlIGlzIDxsaXRlcmFsPm9mZjwvbGl0ZXJhbD4sCisgICAgICAgICAgbWVhbmlu ZyBhbGwgdHJhbnNhY3Rpb25zIGFyZSBmdWxseSBkZWNvZGVkIG9uIHRoZSBwdWJsaXNoZXIgYW5k IG9ubHkKKyAgICAgICAgICB0aGVuIHNlbnQgdG8gdGhlIHN1YnNjcmliZXIgYXMgYSB3aG9sZS4K KyAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgPHBhcmE+CisgICAgICAgICAgSWYgc2V0IHRv IDxsaXRlcmFsPm9uPC9saXRlcmFsPiwgdGhlIGluY29taW5nIGNoYW5nZXMgYXJlIHdyaXR0ZW4g dG8KKyAgICAgICAgICB0ZW1wb3JhcnkgZmlsZXMgYW5kIHRoZW4gYXBwbGllZCBvbmx5IGFmdGVy IHRoZSB0cmFuc2FjdGlvbiBpcworICAgICAgICAgIGNvbW1pdHRlZCBvbiB0aGUgcHVibGlzaGVy IGFuZCByZWNlaXZlZCBieSB0aGUgc3Vic2NyaWJlci4KKyAgICAgICAgIDwvcGFyYT4KKworICAg ICAgICAgPHBhcmE+CisgICAgICAgICAgSWYgc2V0IHRvIDxsaXRlcmFsPnBhcmFsbGVsPC9saXRl cmFsPiwgaW5jb21pbmcgY2hhbmdlcyBhcmUgZGlyZWN0bHkKKyAgICAgICAgICBhcHBsaWVkIHZp YSBvbmUgb2YgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMsIGlmIGF2YWlsYWJsZS4gSWYgbm8K KyAgICAgICAgICBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaXMgZnJlZSB0byBoYW5kbGUgc3RyZWFt aW5nIHRyYW5zYWN0aW9ucyB0aGVuCisgICAgICAgICAgdGhlIGNoYW5nZXMgYXJlIHdyaXR0ZW4g dG8gdGVtcG9yYXJ5IGZpbGVzIGFuZCBhcHBsaWVkIGFmdGVyIHRoZQorICAgICAgICAgIHRyYW5z YWN0aW9uIGlzIGNvbW1pdHRlZC4gTm90ZSB0aGF0IGlmIGFuIGVycm9yIGhhcHBlbnMgaW4gYQor ICAgICAgICAgIHBhcmFsbGVsIGFwcGx5IHdvcmtlciwgdGhlIGZpbmlzaCBMU04gb2YgdGhlIHJl bW90ZSB0cmFuc2FjdGlvbgorICAgICAgICAgIG1pZ2h0IG5vdCBiZSByZXBvcnRlZCBpbiB0aGUg c2VydmVyIGxvZy4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAg ICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Mu c2dtbCBiL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbAppbmRleCA3YzcxNmZlLi5jMzgz Y2I0IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sCkBAIC0xMzYxLDggKzEzNjEsOSBAQAogICAgICAg IDxsaXRlcmFsPnZpcnR1YWx4aWQ8L2xpdGVyYWw+LAogICAgICAgIDxsaXRlcmFsPnNwZWN0b2tl bjwvbGl0ZXJhbD4sCiAgICAgICAgPGxpdGVyYWw+b2JqZWN0PC9saXRlcmFsPiwKLSAgICAgICA8 bGl0ZXJhbD51c2VybG9jazwvbGl0ZXJhbD4sIG9yCi0gICAgICAgPGxpdGVyYWw+YWR2aXNvcnk8 L2xpdGVyYWw+LgorICAgICAgIDxsaXRlcmFsPnVzZXJsb2NrPC9saXRlcmFsPiwKKyAgICAgICA8 bGl0ZXJhbD5hZHZpc29yeTwvbGl0ZXJhbD4gb3IKKyAgICAgICA8bGl0ZXJhbD5hcHBseXRyYW5z YWN0aW9uPC9saXRlcmFsPi4KICAgICAgICAoU2VlIGFsc28gPHhyZWYgbGlua2VuZD0id2FpdC1l dmVudC1sb2NrLXRhYmxlIi8+LikKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYwppbmRleCA4MDg2Yjg1Li4wMzBjNjNhIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGFjdC5jCkBAIC0xNzEyLDYgKzE3MTIsNyBAQCBSZWNvcmRUcmFuc2Fj dGlvbkFib3J0KGJvb2wgaXNTdWJYYWN0KQogCWludAkJCW5jaGlsZHJlbjsKIAlUcmFuc2FjdGlv bklkICpjaGlsZHJlbjsKIAlUaW1lc3RhbXBUeiB4YWN0X3RpbWU7CisJYm9vbAkJcmVwbG9yaWdp bjsKIAogCS8qCiAJICogSWYgd2UgaGF2ZW4ndCBiZWVuIGFzc2lnbmVkIGFuIFhJRCwgbm9ib2R5 IHdpbGwgY2FyZSB3aGV0aGVyIHdlIGFib3J0ZWQKQEAgLTE3NDIsNiArMTc0MywxMyBAQCBSZWNv cmRUcmFuc2FjdGlvbkFib3J0KGJvb2wgaXNTdWJYYWN0KQogCQllbG9nKFBBTklDLCAiY2Fubm90 IGFib3J0IHRyYW5zYWN0aW9uICV1LCBpdCB3YXMgYWxyZWFkeSBjb21taXR0ZWQiLAogCQkJIHhp ZCk7CiAKKwkvKgorCSAqIEFyZSB3ZSB1c2luZyB0aGUgcmVwbGljYXRpb24gb3JpZ2lucyBmZWF0 dXJlPyAgT3IsIGluIG90aGVyIHdvcmRzLCBhcmUKKwkgKiB3ZSByZXBsYXlpbmcgcmVtb3RlIGFj dGlvbnM/CisJICovCisJcmVwbG9yaWdpbiA9IChyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luICE9 IEludmFsaWRSZXBPcmlnaW5JZCAmJgorCQkJCSAgcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiAh PSBEb05vdFJlcGxpY2F0ZUlkKTsKKwogCS8qIEZldGNoIHRoZSBkYXRhIHdlIG5lZWQgZm9yIHRo ZSBhYm9ydCByZWNvcmQgKi8KIAlucmVscyA9IHNtZ3JHZXRQZW5kaW5nRGVsZXRlcyhmYWxzZSwg JnJlbHMpOwogCW5jaGlsZHJlbiA9IHhhY3RHZXRDb21taXR0ZWRDaGlsZHJlbigmY2hpbGRyZW4p OwpAQCAtMTc2NSw2ICsxNzczLDExIEBAIFJlY29yZFRyYW5zYWN0aW9uQWJvcnQoYm9vbCBpc1N1 YlhhY3QpCiAJCQkJCSAgIE15WGFjdEZsYWdzLCBJbnZhbGlkVHJhbnNhY3Rpb25JZCwKIAkJCQkJ ICAgTlVMTCk7CiAKKwlpZiAocmVwbG9yaWdpbikKKwkJLyogTW92ZSBMU05zIGZvcndhcmQgZm9y IHRoaXMgcmVwbGljYXRpb24gb3JpZ2luICovCisJCXJlcGxvcmlnaW5fc2Vzc2lvbl9hZHZhbmNl KHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fbHNuLAorCQkJCQkJCQkgICBYYWN0TGFzdFJlY0Vu ZCk7CisKIAkvKgogCSAqIFJlcG9ydCB0aGUgbGF0ZXN0IGFzeW5jIGFib3J0IExTTiwgc28gdGhh dCB0aGUgV0FMIHdyaXRlciBrbm93cyB0bwogCSAqIGZsdXNoIHRoaXMgYWJvcnQuIFRoZXJlJ3Mg bm90aGluZyB0byBiZSBnYWluZWQgYnkgZGVsYXlpbmcgdGhpcywgc2luY2UKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwppbmRleCBkNjczNTU3Li44YTE4Njk5IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCkBAIC04NCw3ICs4NCw3IEBAIHR5cGVk ZWYgc3RydWN0IFN1Yk9wdHMKIAlib29sCQljb3B5X2RhdGE7CiAJYm9vbAkJcmVmcmVzaDsKIAli b29sCQliaW5hcnk7Ci0JYm9vbAkJc3RyZWFtaW5nOworCWNoYXIJCXN0cmVhbWluZzsKIAlib29s CQl0d29waGFzZTsKIAlib29sCQlkaXNhYmxlb25lcnI7CiAJY2hhcgkgICAqb3JpZ2luOwpAQCAt MTAwLDYgKzEwMCw2MiBAQCBzdGF0aWMgdm9pZCBjaGVja19kdXBsaWNhdGVzX2luX3B1Ymxpc3Qo TGlzdCAqcHVibGlzdCwgRGF0dW0gKmRhdHVtcyk7CiBzdGF0aWMgTGlzdCAqbWVyZ2VfcHVibGlj YXRpb25zKExpc3QgKm9sZHB1Ymxpc3QsIExpc3QgKm5ld3B1Ymxpc3QsIGJvb2wgYWRkcHViLCBj b25zdCBjaGFyICpzdWJuYW1lKTsKIHN0YXRpYyB2b2lkIFJlcG9ydFNsb3RDb25uZWN0aW9uRXJy b3IoTGlzdCAqcnN0YXRlcywgT2lkIHN1YmlkLCBjaGFyICpzbG90bmFtZSwgY2hhciAqZXJyKTsK IAorLyoKKyAqIEV4dHJhY3QgdGhlIHN0cmVhbWluZyBtb2RlIHZhbHVlIGZyb20gYSBEZWZFbGVt LiAgVGhpcyBpcyBsaWtlCisgKiBkZWZHZXRCb29sZWFuKCkgYnV0IGFsc28gYWNjZXB0cyB0aGUg c3BlY2lhbCB2YWx1ZSBvZiAicGFyYWxsZWwiLgorICovCitjaGFyCitkZWZHZXRTdHJlYW1pbmdN b2RlKERlZkVsZW0gKmRlZikKK3sKKwkvKgorCSAqIElmIG5vIHBhcmFtZXRlciB2YWx1ZSBnaXZl biwgYXNzdW1lICJ0cnVlIiBpcyBtZWFudC4KKwkgKi8KKwlpZiAoZGVmLT5hcmcgPT0gTlVMTCkK KwkJcmV0dXJuIFNVQlNUUkVBTV9PTjsKKworCS8qCisJICogQWxsb3cgMCwgMSwgImZhbHNlIiwg InRydWUiLCAib2ZmIiwgIm9uIiBvciAicGFyYWxsZWwiLgorCSAqLworCXN3aXRjaCAobm9kZVRh ZyhkZWYtPmFyZykpCisJeworCQljYXNlIFRfSW50ZWdlcjoKKwkJCXN3aXRjaCAoaW50VmFsKGRl Zi0+YXJnKSkKKwkJCXsKKwkJCQljYXNlIDA6CisJCQkJCXJldHVybiBTVUJTVFJFQU1fT0ZGOwor CQkJCWNhc2UgMToKKwkJCQkJcmV0dXJuIFNVQlNUUkVBTV9PTjsKKwkJCQlkZWZhdWx0OgorCQkJ CQkvKiBvdGhlcndpc2UsIGVycm9yIG91dCBiZWxvdyAqLworCQkJCQlicmVhazsKKwkJCX0KKwkJ CWJyZWFrOworCQlkZWZhdWx0OgorCQkJeworCQkJCWNoYXIJICAgKnN2YWwgPSBkZWZHZXRTdHJp bmcoZGVmKTsKKworCQkJCS8qCisJCQkJICogVGhlIHNldCBvZiBzdHJpbmdzIGFjY2VwdGVkIGhl cmUgc2hvdWxkIG1hdGNoIHVwIHdpdGggdGhlCisJCQkJICogZ3JhbW1hcidzIG9wdF9ib29sZWFu X29yX3N0cmluZyBwcm9kdWN0aW9uLgorCQkJCSAqLworCQkJCWlmIChwZ19zdHJjYXNlY21wKHN2 YWwsICJmYWxzZSIpID09IDAgfHwKKwkJCQkJcGdfc3RyY2FzZWNtcChzdmFsLCAib2ZmIikgPT0g MCkKKwkJCQkJcmV0dXJuIFNVQlNUUkVBTV9PRkY7CisJCQkJaWYgKHBnX3N0cmNhc2VjbXAoc3Zh bCwgInRydWUiKSA9PSAwIHx8CisJCQkJCXBnX3N0cmNhc2VjbXAoc3ZhbCwgIm9uIikgPT0gMCkK KwkJCQkJcmV0dXJuIFNVQlNUUkVBTV9PTjsKKwkJCQlpZiAocGdfc3RyY2FzZWNtcChzdmFsLCAi cGFyYWxsZWwiKSA9PSAwKQorCQkJCQlyZXR1cm4gU1VCU1RSRUFNX1BBUkFMTEVMOworCQkJfQor CQkJYnJlYWs7CisJfQorCisJZXJlcG9ydChFUlJPUiwKKwkJCShlcnJjb2RlKEVSUkNPREVfU1lO VEFYX0VSUk9SKSwKKwkJCSBlcnJtc2coIiVzIHJlcXVpcmVzIGEgQm9vbGVhbiB2YWx1ZSBvciBc InBhcmFsbGVsXCIiLAorCQkJCQlkZWYtPmRlZm5hbWUpKSk7CisJcmV0dXJuIFNVQlNUUkVBTV9P RkY7CQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCit9CiAKIC8qCiAgKiBDb21tb24gb3B0aW9u IHBhcnNpbmcgZnVuY3Rpb24gZm9yIENSRUFURSBhbmQgQUxURVIgU1VCU0NSSVBUSU9OIGNvbW1h bmRzLgpAQCAtMTM4LDcgKzE5NCw3IEBAIHBhcnNlX3N1YnNjcmlwdGlvbl9vcHRpb25zKFBhcnNl U3RhdGUgKnBzdGF0ZSwgTGlzdCAqc3RtdF9vcHRpb25zLAogCWlmIChJc1NldChzdXBwb3J0ZWRf b3B0cywgU1VCT1BUX0JJTkFSWSkpCiAJCW9wdHMtPmJpbmFyeSA9IGZhbHNlOwogCWlmIChJc1Nl dChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX1NUUkVBTUlORykpCi0JCW9wdHMtPnN0cmVhbWluZyA9 IGZhbHNlOworCQlvcHRzLT5zdHJlYW1pbmcgPSBTVUJTVFJFQU1fT0ZGOwogCWlmIChJc1NldChz dXBwb3J0ZWRfb3B0cywgU1VCT1BUX1RXT1BIQVNFX0NPTU1JVCkpCiAJCW9wdHMtPnR3b3BoYXNl ID0gZmFsc2U7CiAJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJPUFRfRElTQUJMRV9PTl9F UlIpKQpAQCAtMjQxLDcgKzI5Nyw3IEBAIHBhcnNlX3N1YnNjcmlwdGlvbl9vcHRpb25zKFBhcnNl U3RhdGUgKnBzdGF0ZSwgTGlzdCAqc3RtdF9vcHRpb25zLAogCQkJCWVycm9yQ29uZmxpY3RpbmdE ZWZFbGVtKGRlZmVsLCBwc3RhdGUpOwogCiAJCQlvcHRzLT5zcGVjaWZpZWRfb3B0cyB8PSBTVUJP UFRfU1RSRUFNSU5HOwotCQkJb3B0cy0+c3RyZWFtaW5nID0gZGVmR2V0Qm9vbGVhbihkZWZlbCk7 CisJCQlvcHRzLT5zdHJlYW1pbmcgPSBkZWZHZXRTdHJlYW1pbmdNb2RlKGRlZmVsKTsKIAkJfQog CQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJ0d29fcGhhc2UiKSA9PSAwKQogCQl7 CkBAIC02MjksNyArNjg1LDcgQEAgQ3JlYXRlU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3Jp cHRpb25fc3Vib3duZXIgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0ob3duZXIpOwogCXZhbHVlc1tB bnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJlbmFibGVkIC0gMV0gPSBCb29sR2V0RGF0dW0ob3B0cy5l bmFibGVkKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViYmluYXJ5IC0gMV0gPSBC b29sR2V0RGF0dW0ob3B0cy5iaW5hcnkpOwotCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9z dWJzdHJlYW0gLSAxXSA9IEJvb2xHZXREYXR1bShvcHRzLnN0cmVhbWluZyk7CisJdmFsdWVzW0Fu dW1fcGdfc3Vic2NyaXB0aW9uX3N1YnN0cmVhbSAtIDFdID0gQ2hhckdldERhdHVtKG9wdHMuc3Ry ZWFtaW5nKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3VidHdvcGhhc2VzdGF0ZSAt IDFdID0KIAkJQ2hhckdldERhdHVtKG9wdHMudHdvcGhhc2UgPwogCQkJCQkgTE9HSUNBTFJFUF9U V09QSEFTRV9TVEFURV9QRU5ESU5HIDoKQEAgLTEwOTgsNyArMTE1NCw3IEBAIEFsdGVyU3Vic2Ny aXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJTdWJzY3JpcHRpb25TdG10ICpzdG10LAog CQkJCWlmIChJc1NldChvcHRzLnNwZWNpZmllZF9vcHRzLCBTVUJPUFRfU1RSRUFNSU5HKSkKIAkJ CQl7CiAJCQkJCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJzdHJlYW0gLSAxXSA9Ci0J CQkJCQlCb29sR2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcpOworCQkJCQkJQ2hhckdldERhdHVtKG9w dHMuc3RyZWFtaW5nKTsKIAkJCQkJcmVwbGFjZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vic3Ry ZWFtIC0gMV0gPSB0cnVlOwogCQkJCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbGlicHEv cHFtcS5jIGIvc3JjL2JhY2tlbmQvbGlicHEvcHFtcS5jCmluZGV4IDRkMDQxNWUuLjYzOTg0NWYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2xpYnBxL3BxbXEuYworKysgYi9zcmMvYmFja2VuZC9s aWJwcS9wcW1xLmMKQEAgLTEzLDExICsxMywxMyBAQAogCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIK IAorI2luY2x1ZGUgImFjY2Vzcy9wYXJhbGxlbC5oIgogI2luY2x1ZGUgImxpYnBxL2xpYnBxLmgi CiAjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIKICNpbmNsdWRlICJsaWJwcS9wcW1xLmgiCiAj aW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAicmVw bGljYXRpb24vbG9naWNhbHdvcmtlci5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKICNp bmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogCkBAIC0xNjIsOSArMTY0LDE5IEBAIG1xX3B1dG1l c3NhZ2UoY2hhciBtc2d0eXBlLCBjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuKQogCQlyZXN1bHQg PSBzaG1fbXFfc2VuZHYocHFfbXFfaGFuZGxlLCBpb3YsIDIsIHRydWUsIHRydWUpOwogCiAJCWlm IChwcV9tcV9wYXJhbGxlbF9sZWFkZXJfcGlkICE9IDApCi0JCQlTZW5kUHJvY1NpZ25hbChwcV9t cV9wYXJhbGxlbF9sZWFkZXJfcGlkLAotCQkJCQkJICAgUFJPQ1NJR19QQVJBTExFTF9NRVNTQUdF LAotCQkJCQkJICAgcHFfbXFfcGFyYWxsZWxfbGVhZGVyX2JhY2tlbmRfaWQpOworCQl7CisJCQlp ZiAoSXNMb2dpY2FsUGFyYWxsZWxBcHBseVdvcmtlcigpKQorCQkJCVNlbmRQcm9jU2lnbmFsKHBx X21xX3BhcmFsbGVsX2xlYWRlcl9waWQsCisJCQkJCQkJICAgUFJPQ1NJR19QQVJBTExFTF9BUFBM WV9NRVNTQUdFLAorCQkJCQkJCSAgIHBxX21xX3BhcmFsbGVsX2xlYWRlcl9iYWNrZW5kX2lkKTsK KwkJCWVsc2UKKwkJCXsKKwkJCQlBc3NlcnQoSXNQYXJhbGxlbFdvcmtlcigpKTsKKwkJCQlTZW5k UHJvY1NpZ25hbChwcV9tcV9wYXJhbGxlbF9sZWFkZXJfcGlkLAorCQkJCQkJCSAgIFBST0NTSUdf UEFSQUxMRUxfTUVTU0FHRSwKKwkJCQkJCQkgICBwcV9tcV9wYXJhbGxlbF9sZWFkZXJfYmFja2Vu ZF9pZCk7CisJCQl9CisJCX0KIAogCQlpZiAocmVzdWx0ICE9IFNITV9NUV9XT1VMRF9CTE9DSykK IAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5j IGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCmluZGV4IDBkNzJkZTIuLjJkZmE5 YWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYworKysgYi9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKQEAgLTEyOCw2ICsxMjgsOSBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0CiAJfSwKIAl7CiAJCSJBcHBseVdvcmtlck1haW4iLCBBcHBseVdvcmtl ck1haW4KKwl9LAorCXsKKwkJIlBhcmFsbGVsQXBwbHlXb3JrZXJNYWluIiwgUGFyYWxsZWxBcHBs eVdvcmtlck1haW4KIAl9CiB9OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jCmluZGV4IDdmNjk3YjAu LjIyNWRhODEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVj ZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xp YnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jCkBAIC00NDMsOSArNDQzLDkgQEAgbGli cHFyY3Zfc3RhcnRzdHJlYW1pbmcoV2FsUmVjZWl2ZXJDb25uICpjb25uLAogCQlhcHBlbmRTdHJp bmdJbmZvKCZjbWQsICJwcm90b192ZXJzaW9uICcldSciLAogCQkJCQkJIG9wdGlvbnMtPnByb3Rv LmxvZ2ljYWwucHJvdG9fdmVyc2lvbik7CiAKLQkJaWYgKG9wdGlvbnMtPnByb3RvLmxvZ2ljYWwu c3RyZWFtaW5nICYmCi0JCQlQUXNlcnZlclZlcnNpb24oY29ubi0+c3RyZWFtQ29ubikgPj0gMTQw MDAwKQotCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmY21kLCAiLCBzdHJlYW1pbmcgJ29uJyIp OworCQlpZiAob3B0aW9ucy0+cHJvdG8ubG9naWNhbC5zdHJlYW1pbmdfc3RyKQorCQkJYXBwZW5k U3RyaW5nSW5mbygmY21kLCAiLCBzdHJlYW1pbmcgJyVzJyIsCisJCQkJCQkJIG9wdGlvbnMtPnBy b3RvLmxvZ2ljYWwuc3RyZWFtaW5nX3N0cik7CiAKIAkJaWYgKG9wdGlvbnMtPnByb3RvLmxvZ2lj YWwudHdvcGhhc2UgJiYKIAkJCVBRc2VydmVyVmVyc2lvbihjb25uLT5zdHJlYW1Db25uKSA+PSAx NTAwMDApCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2Vm aWxlIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZQppbmRleCBjNGUy ZmRlLi4yZGMyNWUzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUK QEAgLTE1LDYgKzE1LDcgQEAgaW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmds b2JhbAogb3ZlcnJpZGUgQ1BQRkxBR1MgOj0gLUkkKHNyY2RpcikgJChDUFBGTEFHUykKIAogT0JK UyA9IFwKKwlhcHBseXBhcmFsbGVsd29ya2VyLm8gXAogCWRlY29kZS5vIFwKIAlsYXVuY2hlci5v IFwKIAlsb2dpY2FsLm8gXApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi5hNTRhZjlmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKQEAgLTAsMCArMSwxMjkwIEBACisvKi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqIGFwcGx5cGFyYWxsZWx3b3JrZXIuYworICoJICAgU3VwcG9ydCByb3V0 aW5lcyBmb3IgYXBwbHlpbmcgeGFjdCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIKKyAqCisgKiBD b3B5cmlnaHQgKGMpIDIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisg KgorICogSURFTlRJRklDQVRJT04gc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBs eXBhcmFsbGVsd29ya2VyLmMKKyAqCisgKiBUaGlzIGZpbGUgY29udGFpbnMgcm91dGluZXMgdGhh dCBhcmUgaW50ZW5kZWQgdG8gc3VwcG9ydCBzZXR0aW5nIHVwLCB1c2luZywKKyAqIGFuZCB0ZWFy aW5nIGRvd24gYSBQYXJhbGxlbEFwcGx5V29ya2VySW5mby4KKyAqCisgKiBSZWZlciB0byB0aGUg Y29tbWVudHMgaW4gdGhlIGZpbGUgaGVhZGVyIG9mIGxvZ2ljYWwvd29ya2VyLmMgdG8gc2VlIG1v cmUKKyAqIGluZm9ybWF0aW9uIGFib3V0IHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuCisgKgorICog RGVhZGxvY2stZGV0ZWN0aW9uCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFNpbmNlIHRoZSBk YXRhYmFzZSBzdHJ1Y3R1cmUgKHNjaGVtYSBvZiBzdWJzY3JpcHRpb24gdGFibGVzLCBldGMuKSBv ZgorICogcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyIG1heSBiZSBkaWZmZXJlbnQuCisgKgorICog V2hlbiB0aGUgZm9sbG93aW5nIHR3byBzY2VuYXJpb3Mgb2NjdXIsIGEgZGVhZGxvY2sgb2NjdXJz LgorICoKKyAqIFN1cHBvc2UgYSBzdWJzY3JpYmVkIHRhYmxlIGRvZXMgbm90IGhhdmUgYSB1bmlx dWUga2V5IG9uIHRoZSBwdWJsaXNoZXIgYW5kCisgKiBoYXMgYSB1bmlxdWUga2V5IG9uIHRoZSBz dWJzY3JpYmVyLgorICoKKyAqIDEpIERlYWRsb2NrIGJldHdlZW4gdGhlIGxlYWRlciBhcHBseSB3 b3JrZXIgYW5kIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyCisgKgorICogVGhlIHBhcmFsbGVsIGFw cGx5IHdvcmtlciAoUEEpIGlzIGV4ZWN1dGluZyBUWC0xIGFuZCB0aGUgbGVhZGVyIGFwcGx5IHdv cmtlcgorICogKExBKSBpcyBleGVjdXRpbmcgVFgtMiBjb25jdXJyZW50bHkgb24gdGhlIHN1YnNj cmliZXIuIE5vdywgTEEgaXMgd2FpdGluZworICogZm9yIFBBIGJlY2F1c2Ugb2YgdGhlIHVuaXF1 ZSBrZXkgb2YgdGhlIHN1YnNjcmliZWQgdGFibGUgd2hpbGUgUEEgaXMgd2FpdGluZworICogZm9y IExBIHRvIHNlbmQgZnVydGhlciBtZXNzYWdlcy4KKyAqCisgKiBJbiBvcmRlciBmb3IgbG1nciB0 byBkZXRlY3QgdGhpcywgd2UgaGF2ZSBMQSBhY3F1aXJlIGEgc2Vzc2lvbiBsb2NrIG9uIHRoZQor ICogcmVtb3RlIHRyYW5zYWN0aW9uIChieSBwYV9sb2NrX3N0cmVhbSgpKSBhbmQgaGF2ZSBQQSB3 YWl0IG9uIHRoZQorICogbG9jayBiZWZvcmUgdHJ5aW5nIHRvIHJlY2VpdmUgbWVzc2FnZXMuIElu IG90aGVyIHdvcmRzLCBMQSBhY3F1aXJlcyB0aGUgbG9jaworICogYmVmb3JlIHNlbmRpbmcgU1RS RUFNX1NUT1AgYW5kIHJlbGVhc2VzIGl0IGlmIGFscmVhZHkgYWNxdWlyZWQgYmVmb3JlCisgKiBz ZW5kaW5nIFNUUkVBTV9TVEFSVCwgU1RSRUFNX1BSRVBBUkUgYW5kIFNUUkVBTV9DT01NSVQuIEZv ciBQQSwgaXQgYWx3YXlzCisgKiBuZWVkcyB0byBhY3F1aXJlIHRoZSBsb2NrIGFmdGVyIHByb2Nl c3NpbmcgU1RSRUFNX1NUT1AgYW5kIHRoZW4gcmVsZWFzZQorICogaW1tZWRpYXRlbHkgYWZ0ZXIg YWNxdWlyaW5nIGl0LiBUaGF0IHdheSwgd2hlbiBQQSBpcyB3YWl0aW5nIGZvciBMQSwgd2UgY2Fu CisgKiBoYXZlIGEgd2FpdC1lZGdlIGZyb20gUEEgdG8gTEEgaW4gbG1nciwgd2hpY2ggd2lsbCBt YWtlIGEgZGVhZGxvY2sgaW4gbG1ncgorICogbGlrZToKKyAqCisgKiBMQSAod2FpdGluZyB0byBh Y3F1aXJlIHRoZSBsb2NrIG9uIHRoZSB1bmlxdWUgaW5kZXgpIC0+IFBBICh3YWl0aW5nIHRvCisg KiBhY3F1aXJlIHRoZSBsb2NrIG9uIHRoZSByZW1vdGUgdHJhbnNhY3Rpb24pIC0+IExBCisgKgor ICogMikgRGVhZGxvY2sgYmV0d2VlbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgcGFyYWxs ZWwgYXBwbHkgd29ya2VycworICoKKyAqIFRoaXMgc2NlbmFyaW8gaXMgc2ltaWxhciB0byB0aGUg Zmlyc3QgY2FzZSBidXQgVFgtMSBhbmQgVFgtMiBhcmUgZXhlY3V0ZWQgYnkKKyAqIHR3byBwYXJh bGxlbCBhcHBseSB3b3JrZXJzIChQQS0xIGFuZCBQQS0yIHJlc3BlY3RpdmVseSkuIEluIHRoaXMg c2NlbmFyaW8sCisgKiBQQS0yIGlzIHdhaXRpbmcgZm9yIFBBLTEgdG8gY29tcGxldGUgaXRzIHRy YW5zYWN0aW9uIHdoaWxlIFBBLTEgaXMgd2FpdGluZworICogZm9yIHN1YnNlcXVlbnQgaW5wdXQg ZnJvbSBMQS4gQWxzbywgTEEgaXMgd2FpdGluZyBmb3IgUEEtMiB0byBjb21wbGV0ZSBpdHMKKyAq IHRyYW5zYWN0aW9uIGluIG9yZGVyIHRvIHByZXNlcnZlIHRoZSBjb21taXQgb3JkZXIuIFRoZXJl IGlzIGEgZGVhZGxvY2sgYW1vbmcKKyAqIHRocmVlIHByb2Nlc3Nlcy4KKyAqCisgKiBJbiBvcmRl ciBmb3IgbG1nciB0byBkZXRlY3QgdGhpcywgd2UgaGF2ZSBQQSBhY3F1aXJlIGEgc2Vzc2lvbiBs b2NrIG9uIHRoZQorICogdHJhbnNhY3Rpb24gYmVpbmcgYXBwbGllZCBhbmQgaGF2ZSBMQSB3YWl0 IG9uIHRoZSBsb2NrIGJlZm9yZSBwcm9jZWVkaW5nIGluCisgKiB0cmFuc2FjdGlvbiBmaW5pc2gg Y29tbWFuZHMuIFRoYXQgd2F5LCB3ZSBjYW4gaGF2ZSBhIHdhaXQtZWRnZSBmcm9tIExBIHRvIFBB CisgKiBpbiBsbWdyLCB3aGljaCB3aWxsIG1ha2UgYSBkZWFkbG9jayBpbiBsbWdyIGxpa2U6Cisg KgorICogTEEgKHdhaXRpbmcgdG8gYWNxdWlyZSB0aGUgbG9jYWwgdHJhbnNhY3Rpb24gbG9jaykg LT4gUEExICh3YWl0aW5nIHRvCisgKiBhY3F1aXJlIHRoZSBsb2NrIG9uIHRoZSB1bmlxdWUgaW5k ZXgpIC0+IFBBMiAod2FpdGluZyB0byBhY3F1aXJlIHRoZSBsb2NrIG9uCisgKiB0aGUgcmVtb3Rl IHRyYW5zYWN0aW9uKSAtPiBMQQorICoKKyAqIE9uZSBtaWdodCB0aGluayB3ZSBjYW4gdXNlIFhh Y3RMb2NrVGFibGVXYWl0KCksIGJ1dCBYYWN0TG9ja1RhYmxlV2FpdCgpCisgKiBjb25zaWRlcnMg UFJFUEFSRUQgVFJBTlNBQ1RJT04gYXMgc3RpbGwgaW4gcHJvZ3Jlc3Mgd2hpY2ggbWVhbnMgdGhl IGxvY2sKKyAqIHdvbid0IGJlIHJlbGVhc2VkIGV2ZW4gaWYgdGhlIHBhcmFsbGVsIGFwcGx5IHdv cmtlciBwcmVwYXJlZCB0aGUgdHJhbnNhY3Rpb24uCisgKgorICogMykgZGVhZGxvY2sgd2hlbiB0 aGUgc2htX21xIGJ1ZmZlciBpcyBmdWxsCisgKgorICogVGhlIHNjZW5hcmlvIHdoZXJlIExBIGhh cyB0byB3YWl0IGlzIHdoZW4gdGhlIHNobV9tcSBidWZmZXIgaXMgZnVsbC4gSW4gdGhlCisgKiBh Ym92ZSBzY2VuYXJpbyAoaWUuIFBBLTEgYW5kIFBBLTIgYXJlIGV4ZWN1dGluZyB0cmFuc2FjdGlv bnMgY29uY3VycmVudGx5KSwKKyAqIGlmIHRoZSBzaG1fbXEgYnVmZmVyIGJldHdlZW4gTEEgYW5k IFBBLTIgaXMgZnVsbCwgTEEgaGFzIHRvIHdhaXQgdG8gc2VuZAorICogbWVzc2FnZXMsIGFuZCB0 aGlzIHdhaXQgZG9lc24ndCBhcHBlYXIgaW4gbG1nci4KKyAqCisgKiBUbyByZXNvbHZlIHRoaXMg aXNzdWUsIHdlIHVzZSBub24tYmxvY2tpbmcgd3JpdGUgYW5kIHdhaXQgd2l0aCBhIHRpbWVvdXQu IElmCisgKiB0aW1lb3V0IGlzIGV4Y2VlZGVkLCB0aGUgTEEgcmVwb3J0IGFuIGVycm9yIGFuZCBy ZXN0YXJ0IGxvZ2ljYWwgcmVwbGljYXRpb24uCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisj aW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0LmgiCisjaW5j bHVkZSAibGlicHEvcHFtcS5oIgorI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCisjaW5jbHVkZSAi cGdzdGF0LmgiCisjaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKKyNpbmNsdWRlICJy ZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dp Y2Fsd29ya2VyLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vb3JpZ2luLmgiCisjaW5jbHVkZSAi cmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi93b3JrZXJf aW50ZXJuYWwuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgorI2luY2x1ZGUgInN0b3JhZ2Uv bG1nci5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCisjaW5jbHVkZSAidGNvcC90 Y29wcHJvdC5oIgorI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCisjaW5jbHVkZSAidXRpbHMvbWVt dXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9yZXNvd25lci5oIgorI2luY2x1ZGUgInV0aWxzL3N5 c2NhY2hlLmgiCisKKyNkZWZpbmUgUEdfTE9HSUNBTF9BUFBMWV9TSE1fTUFHSUMgMHg3ODdjYTA2 NworCisvKgorICogRFNNIGtleXMgZm9yIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gIFVubGlrZSBv dGhlciBwYXJhbGxlbCBleGVjdXRpb24gY29kZSwKKyAqIHNpbmNlIHdlIGRvbid0IG5lZWQgdG8g d29ycnkgYWJvdXQgRFNNIGtleXMgY29uZmxpY3Rpbmcgd2l0aCBwbGFuX25vZGVfaWQgd2UKKyAq IGNhbiB1c2Ugc21hbGwgaW50ZWdlcnMuCisgKi8KKyNkZWZpbmUgUEFSQUxMRUxfQVBQTFlfS0VZ X1NIQVJFRAkJMQorI2RlZmluZSBQQVJBTExFTF9BUFBMWV9LRVlfTVEJCQkyCisjZGVmaW5lIFBB UkFMTEVMX0FQUExZX0tFWV9FUlJPUl9RVUVVRQkzCisKKy8qIFF1ZXVlIHNpemUgb2YgRFNNLCAx NiBNQiBmb3Igbm93LiAqLworI2RlZmluZSBEU01fUVVFVUVfU0laRQkoMTYgKiAxMDI0ICogMTAy NCkKKworLyoKKyAqIEVycm9yIHF1ZXVlIHNpemUgb2YgRFNNLiBJdCBpcyBkZXNpcmFibGUgdG8g bWFrZSBpdCBsYXJnZSBlbm91Z2ggdGhhdCBhCisgKiB0eXBpY2FsIEVycm9yUmVzcG9uc2UgY2Fu IGJlIHNlbnQgd2l0aG91dCBibG9ja2luZy4gIFRoYXQgd2F5LCBhIHdvcmtlciB0aGF0CisgKiBl cnJvcnMgb3V0IGNhbiB3cml0ZSB0aGUgd2hvbGUgbWVzc2FnZSBpbnRvIHRoZSBxdWV1ZSBhbmQg dGVybWluYXRlIHdpdGhvdXQKKyAqIHdhaXRpbmcgZm9yIHRoZSB1c2VyIGJhY2tlbmQuCisgKi8K KyNkZWZpbmUgRFNNX0VSUk9SX1FVRVVFX1NJWkUJCQkoMTYgKiAxMDI0KQorCisvKgorICogVGhl cmUgYXJlIHRocmVlIGZpZWxkcyBpbiBlYWNoIG1lc3NhZ2UgcmVjZWl2ZWQgYnkgdGhlIHBhcmFs bGVsIGFwcGx5CisgKiB3b3JrZXI6IHN0YXJ0X2xzbiwgZW5kX2xzbiBhbmQgc2VuZF90aW1lLiBC ZWNhdXNlIHdlIGhhdmUgdXBkYXRlZCB0aGVzZQorICogc3RhdGlzdGljcyBpbiB0aGUgbGVhZGVy IGFwcGx5IHdvcmtlciwgd2UgY2FuIGlnbm9yZSB0aGVzZSBmaWVsZHMgaW4gdGhlCisgKiBwYXJh bGxlbCBhcHBseSB3b3JrZXIgKHNlZSBmdW5jdGlvbiBMb2dpY2FsUmVwQXBwbHlMb29wKS4KKyAq LworI2RlZmluZSBTSVpFX1NUQVRTX01FU1NBR0UgKDIgKiBzaXplb2YoWExvZ1JlY1B0cikgKyBz aXplb2YoVGltZXN0YW1wVHopKQorCisvKgorICogSGFzaCB0YWJsZSBlbnRyeSB0byBtYXAgeGlk IHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgc3RhdGUuCisgKi8KK3R5cGVkZWYgc3RydWN0 IFBhcmFsbGVsQXBwbHlXb3JrZXJFbnRyeQoreworCVRyYW5zYWN0aW9uSWQgeGlkOwkJCS8qIEhh c2gga2V5IC0tIG11c3QgYmUgZmlyc3QgKi8KKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2lu Zm87Cit9IFBhcmFsbGVsQXBwbHlXb3JrZXJFbnRyeTsKKworLyogUGFyYWxsZWwgYXBwbHkgd29y a2VycyBoYXNoIHRhYmxlIChpbml0aWFsaXplZCBvbiBmaXJzdCB1c2UpLiAqLworc3RhdGljIEhU QUIgKlBhcmFsbGVsQXBwbHlXb3JrZXJzSGFzaCA9IE5VTEw7CisKKy8qCisgKiBBIGxpc3QgdG8g bWFpbnRhaW4gdGhlIGFjdGl2ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLiBUaGUgaW5mb3JtYXRp b24gZm9yCisgKiB0aGUgbmV3IHdvcmtlciBpcyBhZGRlZCB0byB0aGUgbGlzdCBhZnRlciBzdWNj ZXNzZnVsbHkgbGF1bmNoaW5nIGl0LiBUaGUKKyAqIGxpc3QgZW50cnkgaXMgcmVtb3ZlZCBhdCB0 aGUgZW5kIG9mIHRoZSB0cmFuc2FjdGlvbiBpZiB0aGVyZSBhcmUgYWxyZWFkeQorICogZW5vdWdo IHdvcmtlcnMgaW4gdGhlIHdvcmtlciBwb29sLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0 aGUgd29ya2VyCisgKiBwb29sLCBzZWUgY29tbWVudHMgYXRvcCB3b3JrZXIuYy4KKyAqLworc3Rh dGljIExpc3QgKlBhcmFsbGVsQXBwbHlXb3JrZXJzTGlzdCA9IE5JTDsKKworLyoKKyAqIEluZm9y bWF0aW9uIHNoYXJlZCBiZXR3ZWVuIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIHBhcmFsbGVsIGFw cGx5IHdvcmtlci4KKyAqLworUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqTXlQYXJhbGxlbFNo YXJlZCA9IE5VTEw7CisKKy8qCisgKiBJcyB0aGVyZSBhIG1lc3NhZ2Ugc2VudCBieSBwYXJhbGxl bCBhcHBseSB3b3JrZXIgd2hpY2ggd2UgbmVlZCB0byByZWNlaXZlPworICovCit2b2xhdGlsZSBz aWdfYXRvbWljX3QgUGFyYWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nID0gZmFsc2U7CisKKy8qCisg KiBDYWNoZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGluZm9ybWF0aW9uIHJlcXVpcmVkIGZv ciBhcHBseWluZyB0aGUKKyAqIGN1cnJlbnQgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLiBJdCBpcyB1 c2VkIHRvIHNhdmUgdGhlIGNvc3Qgb2Ygc2VhcmNoaW5nIHRoZQorICogaGFzaCB0YWJsZSB3aGVu IGFwcGx5aW5nIHRoZSBjaGFuZ2VzIGJldHdlZW4gU1RSRUFNX1NUQVJUIGFuZCBTVFJFQU1fU1RP UC4KKyAqLworUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKnN0cmVhbV9hcHBseV93b3JrZXIgPSBO VUxMOworCisvKiBBIGxpc3QgdG8gbWFpbnRhaW4gc3VidHJhbnNhY3Rpb25zLCBpZiBhbnkuICov CitMaXN0CSAgICpzdWJ4YWN0bGlzdCA9IE5JTDsKKworc3RhdGljIGJvb2wgcGFfY2FuX3N0YXJ0 KFRyYW5zYWN0aW9uSWQgeGlkKTsKK3N0YXRpYyBib29sIHBhX3NldHVwX2RzbShQYXJhbGxlbEFw cGx5V29ya2VySW5mbyAqd2luZm8pOworc3RhdGljIFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICpw YV9pbml0X2FuZF9sYXVuY2hfd29ya2VyKHZvaWQpOworc3RhdGljIFBhcmFsbGVsQXBwbHlXb3Jr ZXJJbmZvICpwYV9nZXRfZnJlZV93b3JrZXIodm9pZCk7CitzdGF0aWMgdm9pZCBwYV9mcmVlX3dv cmtlcl9pbmZvKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyk7CitzdGF0aWMgUGFyYWxs ZWxUcmFuc1N0YXRlIHBhX2dldF94YWN0X3N0YXRlKFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQg KndzaGFyZWQpOworc3RhdGljIHZvaWQgcGFfd2FpdF9mb3JfeGFjdF9zdGF0ZShQYXJhbGxlbEFw cGx5V29ya2VyU2hhcmVkICp3c2hhcmVkLAorCQkJCQkJCQkgICBQYXJhbGxlbFRyYW5zU3RhdGUg eGFjdF9zdGF0ZSk7CisKKy8qCisgKiBSZXR1cm5zIHRydWUgaWYgaXQgaXMgT0sgdG8gc3RhcnQg YSBwYXJhbGxlbCBhcHBseSB3b3JrZXIsIGZhbHNlIG90aGVyd2lzZS4KKyAqLworc3RhdGljIGJv b2wKK3BhX2Nhbl9zdGFydChUcmFuc2FjdGlvbklkIHhpZCkKK3sKKwlpZiAoIVRyYW5zYWN0aW9u SWRJc1ZhbGlkKHhpZCkpCisJCXJldHVybiBmYWxzZTsKKworCS8qCisJICogRG9uJ3Qgc3RhcnQg YSBuZXcgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlmIHRoZSBzdWJzY3JpcHRpb24gaXMgbm90CisJ ICogdXNpbmcgcGFyYWxsZWwgc3RyZWFtaW5nIG1vZGUsIG9yIGlmIHRoZSBwdWJsaXNoZXIgZG9l cyBub3Qgc3VwcG9ydAorCSAqIHBhcmFsbGVsIGFwcGx5LgorCSAqLworCWlmICghTXlMb2dpY2Fs UmVwV29ya2VyLT5wYXJhbGxlbF9hcHBseSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyogT25seSBs ZWFkZXIgYXBwbHkgd29ya2VycyBjYW4gc3RhcnQgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4gKi8K KwlpZiAoIWFtX2xlYWRlcl9hcHBseV93b3JrZXIoKSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyoK KwkgKiBEb24ndCBzdGFydCBhIG5ldyBwYXJhbGxlbCB3b3JrZXIgaWYgdXNlciBoYXMgc2V0IHNr aXBsc24gYXMgaXQncworCSAqIHBvc3NpYmxlIHRoYXQgdXNlciB3YW50IHRvIHNraXAgdGhlIHN0 cmVhbWluZyB0cmFuc2FjdGlvbi4gRm9yCisJICogc3RyZWFtaW5nIHRyYW5zYWN0aW9uLCB3ZSBu ZWVkIHRvIHNwaWxsIHRoZSB0cmFuc2FjdGlvbiB0byBkaXNrIHNvIHRoYXQKKwkgKiB3ZSBjYW4g Z2V0IHRoZSBsYXN0IExTTiBvZiB0aGUgdHJhbnNhY3Rpb24gdG8ganVkZ2Ugd2hldGhlciB0byBz a2lwCisJICogYmVmb3JlIHN0YXJ0aW5nIHRvIGFwcGx5IHRoZSBjaGFuZ2UuCisJICovCisJaWYg KCFYTG9nUmVjUHRySXNJbnZhbGlkKE15U3Vic2NyaXB0aW9uLT5za2lwbHNuKSkKKwkJcmV0dXJu IGZhbHNlOworCisJLyoKKwkgKiBGb3Igc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyB0aGF0IGFyZSBi ZWluZyBhcHBsaWVkIHVzaW5nIGEgcGFyYWxsZWwKKwkgKiBhcHBseSB3b3JrZXIsIHdlIGNhbm5v dCBkZWNpZGUgd2hldGhlciB0byBhcHBseSB0aGUgY2hhbmdlIGZvciBhCisJICogcmVsYXRpb24g dGhhdCBpcyBub3QgaW4gdGhlIFJFQURZIHN0YXRlIChzZWUKKwkgKiBzaG91bGRfYXBwbHlfY2hh bmdlc19mb3JfcmVsKSBhcyB3ZSB3b24ndCBrbm93IHJlbW90ZV9maW5hbF9sc24gYnkgdGhhdAor CSAqIHRpbWUuIFNvLCB3ZSBkb24ndCBzdGFydCB0aGUgbmV3IHBhcmFsbGVsIGFwcGx5IHdvcmtl ciBpbiB0aGlzIGNhc2UuCisJICovCisJaWYgKCFBbGxUYWJsZXN5bmNzUmVhZHkoKSkKKwkJcmV0 dXJuIGZhbHNlOworCisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBHZXQgYSBmcmVlIHBhcmFs bGVsIGFwcGx5IHdvcmtlciBmcm9tIHRoZSB3b3JrZXIgcG9vbC4KKyAqLworc3RhdGljIFBhcmFs bGVsQXBwbHlXb3JrZXJJbmZvICoKK3BhX2dldF9mcmVlX3dvcmtlcih2b2lkKQoreworCUxpc3QJ ICAgKmFjdGl2ZV93b3JrZXJzID0gbGlzdF9jb3B5KFBhcmFsbGVsQXBwbHlXb3JrZXJzTGlzdCk7 CisJTGlzdENlbGwgICAqbGM7CisKKwlmb3JlYWNoKGxjLCBhY3RpdmVfd29ya2VycykKKwl7CisJ CVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyA9IE5VTEw7CisKKwkJd2luZm8gPSAoUGFy YWxsZWxBcHBseVdvcmtlckluZm8gKikgbGZpcnN0KGxjKTsKKworCQkvKgorCQkgKiBUcnkgdG8g ZnJlZSB0aGUgd29ya2VyIGZpcnN0LCBiZWNhdXNlIHdlIGRvbid0IHdhaXQgZm9yIHRoZSByb2xs YmFjaworCQkgKiBjb21tYW5kIHRvIGZpbmlzaCBzbyB0aGUgd29ya2VyIG1heSBub3QgYmUgZnJl ZWQgYXQgdGhlIGVuZCBvZiB0aGUKKwkJICogdHJhbnNhY3Rpb24uCisJCSAqLworCQlpZiAocGFf ZnJlZV93b3JrZXIod2luZm8sIHdpbmZvLT5zaGFyZWQtPnhpZCkpCisJCQljb250aW51ZTsKKwor CQlpZiAoIXdpbmZvLT5pbl91c2UpCisJCQlyZXR1cm4gd2luZm87CisJfQorCisJcmV0dXJuIE5V TEw7Cit9CisKKy8qCisgKiBTdGFydCBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB0aGF0IHdpbGwg YmUgdXNlZCBmb3IgdGhlIHNwZWNpZmllZCB4aWQuCisgKgorICogSWYgYSBwYXJhbGxlbCBhcHBs eSB3b3JrZXIgaXMgZm91bmQgYnV0IG5vdCBpbiB1c2UgdGhlbiByZS11c2UgaXQsIG90aGVyd2lz ZQorICogc3RhcnQgYSBmcmVzaCBvbmUuIENhY2hlIHRoZSB3b3JrZXIgaW5mb3JtYXRpb24gaW4g UGFyYWxsZWxBcHBseVdvcmtlcnNIYXNoCisgKiBrZXllZCBieSB0aGUgc3BlY2lmaWVkIHhpZC4K KyAqLwordm9pZAorcGFfc3RhcnRfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlkKQoreworCWJvb2wJ CWZvdW5kOworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyA9IE5VTEw7CisJUGFyYWxs ZWxBcHBseVdvcmtlckVudHJ5ICplbnRyeTsKKworCWlmICghcGFfY2FuX3N0YXJ0KHhpZCkpCisJ CXJldHVybjsKKworCS8qIEZpcnN0IHRpbWUgdGhyb3VnaCwgaW5pdGlhbGl6ZSBhcHBseSB3b3Jr ZXJzIGhhc2h0YWJsZS4gKi8KKwlpZiAoUGFyYWxsZWxBcHBseVdvcmtlcnNIYXNoID09IE5VTEwp CisJeworCQlIQVNIQ1RMCQljdGw7CisKKwkJTWVtU2V0KCZjdGwsIDAsIHNpemVvZihjdGwpKTsK KwkJY3RsLmtleXNpemUgPSBzaXplb2YoVHJhbnNhY3Rpb25JZCk7CisJCWN0bC5lbnRyeXNpemUg PSBzaXplb2YoUGFyYWxsZWxBcHBseVdvcmtlckVudHJ5KTsKKwkJY3RsLmhjeHQgPSBBcHBseUNv bnRleHQ7CisKKwkJUGFyYWxsZWxBcHBseVdvcmtlcnNIYXNoID0gaGFzaF9jcmVhdGUoImxvZ2lj YWwgYXBwbHkgd29ya2VycyBoYXNoIiwKKwkJCQkJCQkJCQkJICAgMTYsICZjdGwsCisJCQkJCQkJ CQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCX0KKworCS8q IFRyeSB0byBnZXQgYSBmcmVlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gKi8KKwl3aW5mbyA9IHBh X2dldF9mcmVlX3dvcmtlcigpOworCisJaWYgKHdpbmZvID09IE5VTEwpCisJeworCQkvKiBUcnkg dG8gc3RhcnQgYSBuZXcgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiAqLworCQl3aW5mbyA9IHBhX2lu aXRfYW5kX2xhdW5jaF93b3JrZXIoKTsKKworCQlpZiAod2luZm8gPT0gTlVMTCkKKwkJCXJldHVy bjsKKwl9CisKKwkvKiBDcmVhdGUgZW50cnkgZm9yIHJlcXVlc3RlZCB0cmFuc2FjdGlvbi4gKi8K KwllbnRyeSA9IGhhc2hfc2VhcmNoKFBhcmFsbGVsQXBwbHlXb3JrZXJzSGFzaCwgJnhpZCwgSEFT SF9FTlRFUiwgJmZvdW5kKTsKKwlpZiAoZm91bmQpCisJCWVsb2coRVJST1IsICJoYXNoIHRhYmxl IGNvcnJ1cHRlZCIpOworCisJLyogSW5pdGlhbGl6ZSBzaGFyZWQgbWVtb3J5IGFyZWEuICovCisJ U3BpbkxvY2tBY3F1aXJlKCZ3aW5mby0+c2hhcmVkLT5tdXRleCk7CisJd2luZm8tPnNoYXJlZC0+ eGFjdF9zdGF0ZSA9IFBBUkFMTEVMX1RSQU5TX1VOS05PV047CisJd2luZm8tPnNoYXJlZC0+eGlk ID0geGlkOworCVNwaW5Mb2NrUmVsZWFzZSgmd2luZm8tPnNoYXJlZC0+bXV0ZXgpOworCisJd2lu Zm8tPmluX3VzZSA9IHRydWU7CisJZW50cnktPndpbmZvID0gd2luZm87CisJZW50cnktPnhpZCA9 IHhpZDsKK30KKworLyoKKyAqIEZpbmQgdGhlIGFzc2lnbmVkIHdvcmtlciBmb3IgdGhlIGdpdmVu IHRyYW5zYWN0aW9uLCBpZiBhbnkuCisgKi8KK1BhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICoKK3Bh X2ZpbmRfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlkKQoreworCWJvb2wJCWZvdW5kOworCVBhcmFs bGVsQXBwbHlXb3JrZXJFbnRyeSAqZW50cnk7CisKKwlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlk KHhpZCkpCisJCXJldHVybiBOVUxMOworCisJaWYgKFBhcmFsbGVsQXBwbHlXb3JrZXJzSGFzaCA9 PSBOVUxMKQorCQlyZXR1cm4gTlVMTDsKKworCS8qIFJldHVybiB0aGUgY2FjaGVkIHBhcmFsbGVs IGFwcGx5IHdvcmtlciBpZiB2YWxpZC4gKi8KKwlpZiAoc3RyZWFtX2FwcGx5X3dvcmtlciAhPSBO VUxMKQorCQlyZXR1cm4gc3RyZWFtX2FwcGx5X3dvcmtlcjsKKworCS8qCisJICogRmluZCBlbnRy eSBmb3IgcmVxdWVzdGVkIHRyYW5zYWN0aW9uLgorCSAqLworCWVudHJ5ID0gaGFzaF9zZWFyY2go UGFyYWxsZWxBcHBseVdvcmtlcnNIYXNoLCAmeGlkLCBIQVNIX0ZJTkQsICZmb3VuZCk7CisJaWYg KGZvdW5kKQorCXsKKwkJQXNzZXJ0KGVudHJ5LT53aW5mby0+aW5fdXNlKTsKKworCQlyZXR1cm4g ZW50cnktPndpbmZvOworCX0KKworCXJldHVybiBOVUxMOworfQorCisvKgorICogUmVtb3ZlIHRo ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZW50cnkgZnJvbSB0aGUgaGFzaCB0YWJsZS4gU3RvcCB0 aGUgd29yayBpZgorICogdGhlcmUgYXJlIGVub3VnaCB3b3JrZXJzIGluIHRoZSBwb29sLgorICoK KyAqIElmIHRoZSB3b3JrZXIgaXMgc3RvcHBlZCwgdGhlIHdvcmtlciBpbmZvcm1hdGlvbiB3aWxs IGJlIHJlbW92ZWQgZnJvbSB0aGUKKyAqIFBhcmFsbGVsQXBwbHlXb3JrZXJzTGlzdCBhbmQgdGhl IG1lbW9yeSBvZiB0aGUgaW5mb3JtYXRpb24gd2lsbCBiZSBmcmVlZC4KKyAqCisgKiBSZXR1cm4g dHJ1ZSBpZiB0aGUgd29ya2VyIGlzIHN0b3BwZWQsIGZhbHNlIG90aGVyd2lzZS4KKyAqCisgKiBE byBub3RoaW5nIGlmIHRoZSB3b3JrZXIgaXMgbm90IGJlaW5nIHVzZWQuCisgKgorICogRm9yIG1v cmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHdvcmtlciBwb29sLCBzZWUgY29tbWVudHMgYXRvcCB3 b3JrZXIuYy4KKyAqLworYm9vbAorcGFfZnJlZV93b3JrZXIoUGFyYWxsZWxBcHBseVdvcmtlcklu Zm8gKndpbmZvLCBUcmFuc2FjdGlvbklkIHhpZCkKK3sKKwlpbnQJCQluYXBwbHl3b3JrZXJzOwor CisJQXNzZXJ0KCFhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSk7CisKKwlpZiAoIXdpbmZvLT5p bl91c2UpCisJCXJldHVybiBmYWxzZTsKKworCS8qCisJICogRG9uJ3QgZnJlZSB0aGUgd29ya2Vy IGlmIHRoZSB0cmFuc2FjdGlvbiBpbiB0aGUgd29ya2VyIGlzIHN0aWxsIGluCisJICogcHJvZ3Jl c3MuIFRoaXMgY291bGQgaGFwcGVuIGFzIHdlIGRvbid0IHdhaXQgZm9yIHRyYW5zYWN0aW9uIHJv bGxiYWNrCisJICogdG8gZmluaXNoLgorCSAqLworCWlmIChwYV9nZXRfeGFjdF9zdGF0ZSh3aW5m by0+c2hhcmVkKSAhPSBQQVJBTExFTF9UUkFOU19GSU5JU0hFRCkKKwkJcmV0dXJuIGZhbHNlOwor CisJaWYgKCFoYXNoX3NlYXJjaChQYXJhbGxlbEFwcGx5V29ya2Vyc0hhc2gsICZ4aWQsIEhBU0hf UkVNT1ZFLCBOVUxMKSkKKwkJZWxvZyhFUlJPUiwgImhhc2ggdGFibGUgY29ycnVwdGVkIik7CisK KwlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOworCW5hcHBs eXdvcmtlcnMgPSBsb2dpY2FscmVwX3BhcmFsbGVsX2FwcGx5X3dvcmtlcl9jb3VudChNeUxvZ2lj YWxSZXBXb3JrZXItPnN1YmlkKTsKKwlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2Nr KTsKKworCS8qIEFyZSB0aGVyZSBlbm91Z2ggd29ya2VycyBpbiB0aGUgcG9vbD8gKi8KKwlpZiAo bmFwcGx5d29ya2VycyA+IChtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0 aW9uIC8gMikpCisJeworCQlpbnQJCQlzbG90X25vOworCQl1aW50MTYJCWdlbmVyYXRpb247CisK KwkJLyoKKwkJICogRGV0YWNoIHRoZSBlcnJvciBxdWV1ZSBiZWZvcmUgdGVybWluYXRpbmcgdGhl IHBhcmFsbGVsIGFwcGx5IHdvcmtlcgorCQkgKiB0byBwcmV2ZW50IHRoZSBsZWFkZXIgYXBwbHkg d29ya2VyIGZyb20gcmVjZWl2aW5nIHRoZSB3b3JrZXIKKwkJICogdGVybWluYXRpb24gbWVzc2Fn ZSB3aGljaCB3aWxsIGNhdXNlIHRoZSBsZWFkZXIgdG8gZXhpdC4KKwkJICovCisJCXNobV9tcV9k ZXRhY2god2luZm8tPmVycm9yX21xX2hhbmRsZSk7CisJCXdpbmZvLT5lcnJvcl9tcV9oYW5kbGUg PSBOVUxMOworCisJCVNwaW5Mb2NrQWNxdWlyZSgmd2luZm8tPnNoYXJlZC0+bXV0ZXgpOworCQlz bG90X25vID0gd2luZm8tPnNoYXJlZC0+bG9naWNhbHJlcF93b3JrZXJfc2xvdF9ubzsKKwkJZ2Vu ZXJhdGlvbiA9IHdpbmZvLT5zaGFyZWQtPmxvZ2ljYWxyZXBfd29ya2VyX2dlbmVyYXRpb247CisJ CVNwaW5Mb2NrUmVsZWFzZSgmd2luZm8tPnNoYXJlZC0+bXV0ZXgpOworCisJCWxvZ2ljYWxyZXBf d29ya2VyX3N0b3BfYnlfc2xvdChzbG90X25vLCBnZW5lcmF0aW9uKTsKKworCQlQYXJhbGxlbEFw cGx5V29ya2Vyc0xpc3QgPSBsaXN0X2RlbGV0ZV9wdHIoUGFyYWxsZWxBcHBseVdvcmtlcnNMaXN0 LAorCQkJCQkJCQkJCQkJICAgd2luZm8pOworCisJCXBhX2ZyZWVfd29ya2VyX2luZm8od2luZm8p OworCisJCXJldHVybiB0cnVlOworCX0KKworCXdpbmZvLT5pbl91c2UgPSBmYWxzZTsKKworCXJl dHVybiBmYWxzZTsKK30KKworLyogRnJlZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGluZm9y bWF0aW9uLiAqLworc3RhdGljIHZvaWQKK3BhX2ZyZWVfd29ya2VyX2luZm8oUGFyYWxsZWxBcHBs eVdvcmtlckluZm8gKndpbmZvKQoreworCUFzc2VydCh3aW5mbyk7CisKKwlpZiAod2luZm8tPm1x X2hhbmRsZSAhPSBOVUxMKQorCQlzaG1fbXFfZGV0YWNoKHdpbmZvLT5tcV9oYW5kbGUpOworCisJ aWYgKHdpbmZvLT5lcnJvcl9tcV9oYW5kbGUgIT0gTlVMTCkKKwkJc2htX21xX2RldGFjaCh3aW5m by0+ZXJyb3JfbXFfaGFuZGxlKTsKKworCWlmICh3aW5mby0+ZHNtX3NlZyAhPSBOVUxMKQorCQlk c21fZGV0YWNoKHdpbmZvLT5kc21fc2VnKTsKKworCXBmcmVlKHdpbmZvKTsKK30KKworLyogUGFy YWxsZWwgYXBwbHkgd29ya2VyIG1haW4gbG9vcC4gKi8KK3N0YXRpYyB2b2lkCitMb2dpY2FsUGFy YWxsZWxBcHBseUxvb3Aoc2htX21xX2hhbmRsZSAqbXFoKQoreworCXNobV9tcV9yZXN1bHQgc2ht cV9yZXM7CisJRXJyb3JDb250ZXh0Q2FsbGJhY2sgZXJyY2FsbGJhY2s7CisJTWVtb3J5Q29udGV4 dCBvbGRjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKKworCS8qCisJICogSW5pdCB0aGUgQXBw bHlNZXNzYWdlQ29udGV4dCB3aGljaCB3ZSBjbGVhbiB1cCBhZnRlciBlYWNoIHJlcGxpY2F0aW9u CisJICogcHJvdG9jb2wgbWVzc2FnZS4KKwkgKi8KKwlBcHBseU1lc3NhZ2VDb250ZXh0ID0gQWxs b2NTZXRDb250ZXh0Q3JlYXRlKEFwcGx5Q29udGV4dCwKKwkJCQkJCQkJCQkJCSJBcHBseU1lc3Nh Z2VDb250ZXh0IiwKKwkJCQkJCQkJCQkJCUFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOworCisJLyoK KwkgKiBQdXNoIGFwcGx5IGVycm9yIGNvbnRleHQgY2FsbGJhY2suIEZpZWxkcyB3aWxsIGJlIGZp bGxlZCB3aGlsZSBhcHBseWluZworCSAqIGEgY2hhbmdlLgorCSAqLworCWVycmNhbGxiYWNrLmNh bGxiYWNrID0gYXBwbHlfZXJyb3JfY2FsbGJhY2s7CisJZXJyY2FsbGJhY2sucHJldmlvdXMgPSBl cnJvcl9jb250ZXh0X3N0YWNrOworCWVycm9yX2NvbnRleHRfc3RhY2sgPSAmZXJyY2FsbGJhY2s7 CisKKwlmb3IgKDs7KQorCXsKKwkJdm9pZAkgICAqZGF0YTsKKwkJU2l6ZQkJbGVuOworCisJCUNI RUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJLyogRW5zdXJlIHdlIGFyZSByZWFkaW5nIHRoZSBk YXRhIGludG8gb3VyIG1lbW9yeSBjb250ZXh0LiAqLworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8o QXBwbHlNZXNzYWdlQ29udGV4dCk7CisKKwkJc2htcV9yZXMgPSBzaG1fbXFfcmVjZWl2ZShtcWgs ICZsZW4sICZkYXRhLCB0cnVlKTsKKworCQlpZiAoc2htcV9yZXMgPT0gU0hNX01RX1NVQ0NFU1Mp CisJCXsKKwkJCVN0cmluZ0luZm9EYXRhIHM7CisJCQlpbnQJCQljOworCisJCQlpZiAobGVuID09 IDApCisJCQkJYnJlYWs7CisKKwkJCXMuY3Vyc29yID0gMDsKKwkJCXMubWF4bGVuID0gLTE7CisJ CQlzLmRhdGEgPSAoY2hhciAqKSBkYXRhOworCQkJcy5sZW4gPSBsZW47CisKKwkJCS8qCisJCQkg KiBUaGUgZmlyc3QgYnl0ZSBvZiBtZXNzYWdlcyBzZW50IGZyb20gbGVhZGVyIGFwcGx5IHdvcmtl ciB0bworCQkJICogcGFyYWxsZWwgYXBwbHkgd29ya2VycyBjYW4gb25seSBiZSAndycuCisJCQkg Ki8KKwkJCWMgPSBwcV9nZXRtc2dieXRlKCZzKTsKKwkJCWlmIChjICE9ICd3JykKKwkJCQllbG9n KEVSUk9SLCAidW5leHBlY3RlZCBtZXNzYWdlIFwiJWNcIiIsIGMpOworCisJCQkvKgorCQkJICog SWdub3JlIHN0YXRpc3RpY3MgZmllbGRzIHRoYXQgaGF2ZSBiZWVuIHVwZGF0ZWQgYnkgdGhlIGxl YWRlcgorCQkJICogYXBwbHkgd29ya2VyLgorCQkJICovCisJCQlzLmN1cnNvciArPSBTSVpFX1NU QVRTX01FU1NBR0U7CisKKwkJCWFwcGx5X2Rpc3BhdGNoKCZzKTsKKworCQkJTWVtb3J5Q29udGV4 dFJlc2V0KEFwcGx5TWVzc2FnZUNvbnRleHQpOworCQl9CisJCWVsc2UgaWYgKHNobXFfcmVzID09 IFNITV9NUV9XT1VMRF9CTE9DSykKKwkJeworCQkJaW50CQkJcmM7CisKKwkJCWlmICghaW5fc3Ry ZWFtZWRfdHJhbnNhY3Rpb24pCisJCQl7CisJCQkJLyoKKwkJCQkgKiBJZiB3ZSBkaWRuJ3QgZ2V0 IGFueSB0cmFuc2FjdGlvbnMgZm9yIGEgd2hpbGUgdGhlcmUgbWlnaHQKKwkJCQkgKiBiZSB1bmNv bnN1bWVkIGludmFsaWRhdGlvbiBtZXNzYWdlcyBpbiB0aGUgcXVldWUsIGNvbnN1bWUKKwkJCQkg KiB0aGVtIG5vdy4KKwkJCQkgKi8KKwkJCQlBY2NlcHRJbnZhbGlkYXRpb25NZXNzYWdlcygpOwor CQkJCW1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24oKTsKKwkJCX0KKworCQkJTWVtb3J5Q29udGV4 dFJlc2V0KEFwcGx5TWVzc2FnZUNvbnRleHQpOworCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9s ZGN4dCk7CisKKwkJCS8qIFdhaXQgZm9yIG1vcmUgd29yay4gKi8KKwkJCXJjID0gV2FpdExhdGNo KE15TGF0Y2gsCisJCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9P Tl9QTV9ERUFUSCwKKwkJCQkJCSAgIDEwMDBMLAorCQkJCQkJICAgV0FJVF9FVkVOVF9MT0dJQ0FM X1BBUkFMTEVMX0FQUExZX01BSU4pOworCisJCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCisJCQl7 CisJCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwor CQkJfQorCisJCQlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKKwkJCXsKKwkJCQlDb25maWdSZWxv YWRQZW5kaW5nID0gZmFsc2U7CisJCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CisJ CQl9CisJCX0KKwkJZWxzZQorCQl7CisJCQlBc3NlcnQoc2htcV9yZXMgPT0gU0hNX01RX0RFVEFD SEVEKTsKKworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1Rf Tk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCSBlcnJtc2coImxvc3QgY29ubmVjdGlv biB0byB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciIpKSk7CisJCX0KKwl9CisKKwkvKiBQb3AgdGhl IGVycm9yIGNvbnRleHQgc3RhY2suICovCisJZXJyb3JfY29udGV4dF9zdGFjayA9IGVycmNhbGxi YWNrLnByZXZpb3VzOworCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7Cit9CisKKy8q CisgKiBNYWtlIHN1cmUgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgdHJpZXMgdG8gcmVhZCBmcm9t IG91ciBlcnJvciBxdWV1ZSBvbmUgbW9yZQorICogdGltZS4gVGhpcyBndWFyZHMgYWdhaW5zdCB0 aGUgY2FzZSB3aGVyZSB3ZSBleGl0IHVuY2xlYW5seSB3aXRob3V0IHNlbmRpbmcKKyAqIGFuIEVy cm9yUmVzcG9uc2UsIGZvciBleGFtcGxlIGJlY2F1c2Ugc29tZSBjb2RlIGNhbGxzIHByb2NfZXhp dCBkaXJlY3RseS4KKyAqLworc3RhdGljIHZvaWQKK3BhX3NodXRkb3duKGludCBjb2RlLCBEYXR1 bSBhcmcpCit7CisJU2VuZFByb2NTaWduYWwoTXlMb2dpY2FsUmVwV29ya2VyLT5hcHBseV9sZWFk ZXJfcGlkLAorCQkJCSAgIFBST0NTSUdfUEFSQUxMRUxfQVBQTFlfTUVTU0FHRSwKKwkJCQkgICBJ bnZhbGlkQmFja2VuZElkKTsKKworCWRzbV9kZXRhY2goKGRzbV9zZWdtZW50ICopIERhdHVtR2V0 UG9pbnRlcihhcmcpKTsKK30KKworLyoKKyAqIFBhcmFsbGVsIGFwcGx5IHdvcmtlciBlbnRyeSBw b2ludC4KKyAqLwordm9pZAorUGFyYWxsZWxBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcp Cit7CisJUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqc2hhcmVkOworCWRzbV9oYW5kbGUJaGFu ZGxlOworCWRzbV9zZWdtZW50ICpzZWc7CisJc2htX3RvYyAgICAqdG9jOworCXNobV9tcQkgICAq bXE7CisJc2htX21xX2hhbmRsZSAqbXFoOworCXNobV9tcV9oYW5kbGUgKmVycm9yX21xaDsKKwlS ZXBPcmlnaW5JZCBvcmlnaW5pZDsKKwlpbnQJCQl3b3JrZXJfc2xvdCA9IERhdHVtR2V0SW50MzIo bWFpbl9hcmcpOworCWNoYXIJCW9yaWdpbm5hbWVbTkFNRURBVEFMRU5dOworCisJLyogU2V0dXAg c2lnbmFsIGhhbmRsaW5nLiAqLworCXBxc2lnbmFsKFNJR0hVUCwgU2lnbmFsSGFuZGxlckZvckNv bmZpZ1JlbG9hZCk7CisJcHFzaWduYWwoU0lHVEVSTSwgZGllKTsKKwlCYWNrZ3JvdW5kV29ya2Vy VW5ibG9ja1NpZ25hbHMoKTsKKworCS8qCisJICogQXR0YWNoIHRvIHRoZSBkeW5hbWljIHNoYXJl ZCBtZW1vcnkgc2VnbWVudCBmb3IgdGhlIHBhcmFsbGVsIGFwcGx5LCBhbmQKKwkgKiBmaW5kIGl0 cyB0YWJsZSBvZiBjb250ZW50cy4KKwkgKgorCSAqIExpa2UgcGFyYWxsZWwgcXVlcnksIHdlIGRv bid0IG5lZWQgcmVzb3VyY2Ugb3duZXIgYnkgdGhpcyB0aW1lLiBTZWUKKwkgKiBQYXJhbGxlbFdv cmtlck1haW4uCisJICovCisJbWVtY3B5KCZoYW5kbGUsIE15Qmd3b3JrZXJFbnRyeS0+Ymd3X2V4 dHJhLCBzaXplb2YoZHNtX2hhbmRsZSkpOworCXNlZyA9IGRzbV9hdHRhY2goaGFuZGxlKTsKKwlp ZiAoc2VnID09IE5VTEwpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9P QkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygidW5hYmxlIHRv IG1hcCBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudCIpKSk7CisKKwl0b2MgPSBzaG1fdG9j X2F0dGFjaChQR19MT0dJQ0FMX0FQUExZX1NITV9NQUdJQywgZHNtX3NlZ21lbnRfYWRkcmVzcyhz ZWcpKTsKKwlpZiAodG9jID09IE5VTEwpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUo RVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygi YmFkIG1hZ2ljIG51bWJlciBpbiBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudCIpKSk7CisK KwliZWZvcmVfc2htZW1fZXhpdChwYV9zaHV0ZG93biwgUG9pbnRlckdldERhdHVtKHNlZykpOwor CisJLyogTG9vayB1cCB0aGUgc2hhcmVkIGluZm9ybWF0aW9uLiAqLworCXNoYXJlZCA9IHNobV90 b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfQVBQTFlfS0VZX1NIQVJFRCwgZmFsc2UpOworCU15UGFy YWxsZWxTaGFyZWQgPSBzaGFyZWQ7CisKKwkvKgorCSAqIEF0dGFjaCB0byB0aGUgbWVzc2FnZSBx dWV1ZS4KKwkgKi8KKwltcSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfQVBQTFlfS0VZ X01RLCBmYWxzZSk7CisJc2htX21xX3NldF9yZWNlaXZlcihtcSwgTXlQcm9jKTsKKwltcWggPSBz aG1fbXFfYXR0YWNoKG1xLCBzZWcsIE5VTEwpOworCisJLyoKKwkgKiBQcmltYXJ5IGluaXRpYWxp emF0aW9uIGlzIGNvbXBsZXRlLiBOb3csIHdlIGNhbiBhdHRhY2ggdG8gb3VyIHNsb3QuCisJICog VGhpcyBpcyB0byBlbnN1cmUgdGhhdCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBkb2VzIG5vdCB3 cml0ZSBkYXRhIHRvCisJICogdGhlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHF1ZXVlLgorCSAqLwor CWxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaCh3b3JrZXJfc2xvdCk7CisKKwlTcGluTG9ja0FjcXVp cmUoJk15UGFyYWxsZWxTaGFyZWQtPm11dGV4KTsKKwlNeVBhcmFsbGVsU2hhcmVkLT5sb2dpY2Fs cmVwX3dvcmtlcl9nZW5lcmF0aW9uID0gTXlMb2dpY2FsUmVwV29ya2VyLT5nZW5lcmF0aW9uOwor CU15UGFyYWxsZWxTaGFyZWQtPmxvZ2ljYWxyZXBfd29ya2VyX3Nsb3Rfbm8gPSB3b3JrZXJfc2xv dDsKKwlTcGluTG9ja1JlbGVhc2UoJk15UGFyYWxsZWxTaGFyZWQtPm11dGV4KTsKKworCS8qCisJ ICogQXR0YWNoIHRvIHRoZSBlcnJvciBxdWV1ZS4KKwkgKi8KKwltcSA9IHNobV90b2NfbG9va3Vw KHRvYywgUEFSQUxMRUxfQVBQTFlfS0VZX0VSUk9SX1FVRVVFLCBmYWxzZSk7CisJc2htX21xX3Nl dF9zZW5kZXIobXEsIE15UHJvYyk7CisJZXJyb3JfbXFoID0gc2htX21xX2F0dGFjaChtcSwgc2Vn LCBOVUxMKTsKKworCXBxX3JlZGlyZWN0X3RvX3NobV9tcShzZWcsIGVycm9yX21xaCk7CisJcHFf c2V0X3BhcmFsbGVsX2xlYWRlcihNeUxvZ2ljYWxSZXBXb3JrZXItPmFwcGx5X2xlYWRlcl9waWQs CisJCQkJCQkgICBJbnZhbGlkQmFja2VuZElkKTsKKworCU15TG9naWNhbFJlcFdvcmtlci0+bGFz dF9zZW5kX3RpbWUgPSBNeUxvZ2ljYWxSZXBXb3JrZXItPmxhc3RfcmVjdl90aW1lID0KKwkJTXlM b2dpY2FsUmVwV29ya2VyLT5yZXBseV90aW1lID0gMDsKKworCUluaXRpYWxpemVBcHBseVdvcmtl cigpOworCisJLyogU2V0dXAgcmVwbGljYXRpb24gb3JpZ2luIHRyYWNraW5nLiAqLworCVN0YXJ0 VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJUmVwbGljYXRpb25PcmlnaW5OYW1lRm9yTG9naWNhbFJl cChNeVN1YnNjcmlwdGlvbi0+b2lkLCBJbnZhbGlkT2lkLAorCQkJCQkJCQkJICAgb3JpZ2lubmFt ZSwgc2l6ZW9mKG9yaWdpbm5hbWUpKTsKKwlvcmlnaW5pZCA9IHJlcGxvcmlnaW5fYnlfbmFtZShv cmlnaW5uYW1lLCB0cnVlKTsKKwlpZiAoIU9pZElzVmFsaWQob3JpZ2luaWQpKQorCQlvcmlnaW5p ZCA9IHJlcGxvcmlnaW5fY3JlYXRlKG9yaWdpbm5hbWUpOworCisJLyoKKwkgKiBUaGUgcGFyYWxs ZWwgYXBwbHkgd29ya2VyIGRvZXNuJ3QgbmVlZCB0byBtb25vcG9saXplIHRoaXMgcmVwbGljYXRp b24KKwkgKiBvcmlnaW4gd2hpY2ggd2FzIGFscmVhZHkgYWNxdWlyZWQgYnkgaXRzIGxlYWRlciBw cm9jZXNzLgorCSAqLworCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCwgTXlMb2dp Y2FsUmVwV29ya2VyLT5hcHBseV9sZWFkZXJfcGlkKTsKKwlyZXBsb3JpZ2luX3Nlc3Npb25fb3Jp Z2luID0gb3JpZ2luaWQ7CisJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkvKgorCSAq IFNldHVwIGNhbGxiYWNrIGZvciBzeXNjYWNoZSBzbyB0aGF0IHdlIGtub3cgd2hlbiBzb21ldGhp bmcgY2hhbmdlcyBpbgorCSAqIHRoZSBzdWJzY3JpcHRpb24gcmVsYXRpb24gc3RhdGUuCisJICov CisJQ2FjaGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2soU1VCU0NSSVBUSU9OUkVMTUFQLAorCQkJ CQkJCQkgIGludmFsaWRhdGVfc3luY2luZ190YWJsZV9zdGF0ZXMsCisJCQkJCQkJCSAgKERhdHVt KSAwKTsKKworCS8qCisJICogQWxsb2NhdGUgdGhlIG9yaWdpbiBuYW1lIGluIGEgbG9uZy1saXZl ZCBjb250ZXh0IGZvciBlcnJvciBjb250ZXh0CisJICogbWVzc2FnZS4KKwkgKi8KKwlhcHBseV9l cnJvcl9jYWxsYmFja19hcmcub3JpZ2luX25hbWUgPSBNZW1vcnlDb250ZXh0U3RyZHVwKEFwcGx5 Q29udGV4dCwKKwkJCQkJCQkJCQkJCQkJCSAgIG9yaWdpbm5hbWUpOworCisJTG9naWNhbFBhcmFs bGVsQXBwbHlMb29wKG1xaCk7CisKKwlwcm9jX2V4aXQoMCk7Cit9CisKKy8qCisgKiBIYW5kbGUg cmVjZWlwdCBvZiBhbiBpbnRlcnJ1cHQgaW5kaWNhdGluZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtl ciBtZXNzYWdlLgorICoKKyAqIE5vdGU6IHRoaXMgaXMgY2FsbGVkIHdpdGhpbiBhIHNpZ25hbCBo YW5kbGVyISAgQWxsIHdlIGNhbiBkbyBpcyBzZXQgYSBmbGFnCisgKiB0aGF0IHdpbGwgY2F1c2Ug dGhlIG5leHQgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSB0byBpbnZva2UKKyAqIEhhbmRsZVBhcmFs bGVsQXBwbHlNZXNzYWdlcygpLgorICovCit2b2lkCitIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2Fn ZUludGVycnVwdCh2b2lkKQoreworCUludGVycnVwdFBlbmRpbmcgPSB0cnVlOworCVBhcmFsbGVs QXBwbHlNZXNzYWdlUGVuZGluZyA9IHRydWU7CisJU2V0TGF0Y2goTXlMYXRjaCk7Cit9CisKKy8q CisgKiBIYW5kbGUgYSBzaW5nbGUgcHJvdG9jb2wgbWVzc2FnZSByZWNlaXZlZCBmcm9tIGEgc2lu Z2xlIHBhcmFsbGVsIGFwcGx5CisgKiB3b3JrZXIuCisgKi8KK3N0YXRpYyB2b2lkCitIYW5kbGVQ YXJhbGxlbEFwcGx5TWVzc2FnZShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sIFN0cmlu Z0luZm8gbXNnKQoreworCWNoYXIJCW1zZ3R5cGU7CisKKwltc2d0eXBlID0gcHFfZ2V0bXNnYnl0 ZShtc2cpOworCisJc3dpdGNoIChtc2d0eXBlKQorCXsKKwkJY2FzZSAnRSc6CQkJCS8qIEVycm9y UmVzcG9uc2UgKi8KKwkJCXsKKwkJCQlFcnJvckRhdGEJZWRhdGE7CisKKwkJCQkvKiBQYXJzZSBF cnJvclJlc3BvbnNlLiAqLworCQkJCXBxX3BhcnNlX2Vycm9ybm90aWNlKG1zZywgJmVkYXRhKTsK KworCQkJCS8qIERlYXRoIG9mIGEgd29ya2VyIGlzbid0IGVub3VnaCBqdXN0aWZpY2F0aW9uIGZv ciBzdWljaWRlLiAqLworCQkJCWVkYXRhLmVsZXZlbCA9IE1pbihlZGF0YS5lbGV2ZWwsIEVSUk9S KTsKKworCQkJCS8qCisJCQkJICogSWYgZGVzaXJlZCwgYWRkIGEgY29udGV4dCBsaW5lIHRvIHNo b3cgdGhhdCB0aGlzIGlzIGEKKwkJCQkgKiBtZXNzYWdlIHByb3BhZ2F0ZWQgZnJvbSBhIHBhcmFs bGVsIGFwcGx5IHdvcmtlci4gT3RoZXJ3aXNlLAorCQkJCSAqIGl0IGNhbiBzb21ldGltZXMgYmUg Y29uZnVzaW5nIHRvIHVuZGVyc3RhbmQgd2hhdCBhY3R1YWxseQorCQkJCSAqIGhhcHBlbmVkLgor CQkJCSAqLworCQkJCWlmIChlZGF0YS5jb250ZXh0KQorCQkJCQllZGF0YS5jb250ZXh0ID0gcHNw cmludGYoIiVzXG4lcyIsIGVkYXRhLmNvbnRleHQsCisJCQkJCQkJCQkJCSBfKCJwYXJhbGxlbCBh cHBseSB3b3JrZXIiKSk7CisJCQkJZWxzZQorCQkJCQllZGF0YS5jb250ZXh0ID0gcHN0cmR1cChf KCJwYXJhbGxlbCBhcHBseSB3b3JrZXIiKSk7CisKKwkJCQkvKgorCQkJCSAqIENvbnRleHQgYmV5 b25kIHRoYXQgc2hvdWxkIHVzZSB0aGUgZXJyb3IgY29udGV4dCBjYWxsYmFja3MKKwkJCQkgKiB0 aGF0IHdlcmUgaW4gZWZmZWN0IGluIExvZ2ljYWxSZXBBcHBseUxvb3AoKS4KKwkJCQkgKi8KKwkJ CQllcnJvcl9jb250ZXh0X3N0YWNrID0gYXBwbHlfZXJyb3JfY29udGV4dF9zdGFjazsKKworCQkJ CVRocm93RXJyb3JEYXRhKCZlZGF0YSk7CisKKwkJCQkvKiBTaG91bGQgbm90IHJlYWNoIGhlcmUg YWZ0ZXIgcmV0aHJvd2luZyBhbiBlcnJvci4gKi8KKwkJCQlBc3NlcnQoZmFsc2UpOworCQkJfQor CisJCQkvKgorCQkJICogRG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZyBhYm91dCBOb3RpY2VSZXNw b25zZSBhbmQKKwkJCSAqIE5vdGlmeVJlc3BvbnNlIGFzIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9u IHdvcmtlciBkb2Vzbid0IG5lZWQKKwkJCSAqIHRvIHNlbmQgbWVzc2FnZXMgdG8gdGhlIGNsaWVu dC4KKwkJCSAqLworCQljYXNlICdOJzoKKwkJY2FzZSAnQSc6CisJCQlicmVhazsKKwkJZGVmYXVs dDoKKwkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgbWVzc2FnZSB0eXBlIHJlY2VpdmVkIGZy b20gcGFyYWxsZWwgYXBwbHkgd29ya2VyOiAlYyAobWVzc2FnZSBsZW5ndGggJWQgYnl0ZXMpIiwK KwkJCQkgbXNndHlwZSwgbXNnLT5sZW4pOworCX0KK30KKworLyoKKyAqIEhhbmRsZSBhbnkgcXVl dWVkIHByb3RvY29sIG1lc3NhZ2VzIHJlY2VpdmVkIGZyb20gcGFyYWxsZWwgYXBwbHkgd29ya2Vy cy4KKyAqLwordm9pZAorSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VzKHZvaWQpCit7CisJTGlz dENlbGwgICAqbGM7CisJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OworCisJc3RhdGljIE1lbW9y eUNvbnRleHQgaHBhbV9jb250ZXh0ID0gTlVMTDsKKworCS8qCisJICogVGhpcyBpcyBpbnZva2Vk IGZyb20gUHJvY2Vzc0ludGVycnVwdHMoKSwgYW5kIHNpbmNlIHNvbWUgb2YgdGhlCisJICogZnVu Y3Rpb25zIGl0IGNhbGxzIGNvbnRhaW4gQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSwgdGhlcmUgaXMg YSBwb3RlbnRpYWwKKwkgKiBmb3IgcmVjdXJzaXZlIGNhbGxzIGlmIG1vcmUgc2lnbmFscyBhcmUg cmVjZWl2ZWQgd2hpbGUgdGhpcyBydW5zLiAgSXQncworCSAqIHVuY2xlYXIgdGhhdCByZWN1cnNp dmUgZW50cnkgd291bGQgYmUgc2FmZSwgYW5kIGl0IGRvZXNuJ3Qgc2VlbSB1c2VmdWwKKwkgKiBl dmVuIGlmIGl0IGlzIHNhZmUsIHNvIGxldCdzIGJsb2NrIGludGVycnVwdHMgdW50aWwgZG9uZS4K KwkgKi8KKwlIT0xEX0lOVEVSUlVQVFMoKTsKKworCS8qCisJICogTW9yZW92ZXIsIEN1cnJlbnRN ZW1vcnlDb250ZXh0IG1pZ2h0IGJlIHBvaW50aW5nIGFsbW9zdCBhbnl3aGVyZS4gIFdlCisJICog ZG9uJ3Qgd2FudCB0byByaXNrIGxlYWtpbmcgZGF0YSBpbnRvIGxvbmctbGl2ZWQgY29udGV4dHMs IHNvIGxldCdzIGRvCisJICogb3VyIHdvcmsgaGVyZSBpbiBhIHByaXZhdGUgY29udGV4dCB0aGF0 IHdlIGNhbiByZXNldCBvbiBlYWNoIHVzZS4KKwkgKi8KKwlpZiAoaHBhbV9jb250ZXh0ID09IE5V TEwpCS8qIGZpcnN0IHRpbWUgdGhyb3VnaD8gKi8KKwkJaHBhbV9jb250ZXh0ID0gQWxsb2NTZXRD b250ZXh0Q3JlYXRlKFRvcE1lbW9yeUNvbnRleHQsCisJCQkJCQkJCQkJCSAiSGFuZGxlUGFyYWxs ZWxBcHBseU1lc3NhZ2VzIiwKKwkJCQkJCQkJCQkJIEFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOwor CWVsc2UKKwkJTWVtb3J5Q29udGV4dFJlc2V0KGhwYW1fY29udGV4dCk7CisKKwlvbGRjb250ZXh0 ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGhwYW1fY29udGV4dCk7CisKKwlQYXJhbGxlbEFwcGx5 TWVzc2FnZVBlbmRpbmcgPSBmYWxzZTsKKworCWZvcmVhY2gobGMsIFBhcmFsbGVsQXBwbHlXb3Jr ZXJzTGlzdCkKKwl7CisJCXNobV9tcV9yZXN1bHQgcmVzOworCQlTaXplCQluYnl0ZXM7CisJCXZv aWQJICAgKmRhdGE7CisJCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyA9IChQYXJhbGxl bEFwcGx5V29ya2VySW5mbyAqKSBsZmlyc3QobGMpOworCisJCWlmICh3aW5mby0+ZXJyb3JfbXFf aGFuZGxlID09IE5VTEwpCisJCQljb250aW51ZTsKKworCQlyZXMgPSBzaG1fbXFfcmVjZWl2ZSh3 aW5mby0+ZXJyb3JfbXFfaGFuZGxlLCAmbmJ5dGVzLCAmZGF0YSwgdHJ1ZSk7CisKKwkJaWYgKHJl cyA9PSBTSE1fTVFfV09VTERfQkxPQ0spCisJCQljb250aW51ZTsKKwkJZWxzZSBpZiAocmVzID09 IFNITV9NUV9TVUNDRVNTKQorCQl7CisJCQlTdHJpbmdJbmZvRGF0YSBtc2c7CisKKwkJCWluaXRT dHJpbmdJbmZvKCZtc2cpOworCQkJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbygmbXNnLCBkYXRhLCBu Ynl0ZXMpOworCQkJSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2Uod2luZm8sICZtc2cpOworCQkJ cGZyZWUobXNnLmRhdGEpOworCQl9CisJCWVsc2UKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShl cnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkg ZXJybXNnKCJsb3N0IGNvbm5lY3Rpb24gdG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciIpKSk7 CisJfQorCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCisJLyogTWlnaHQg YXMgd2VsbCBjbGVhciB0aGUgY29udGV4dCBvbiBvdXIgd2F5IG91dCAqLworCU1lbW9yeUNvbnRl eHRSZXNldChocGFtX2NvbnRleHQpOworCisJUkVTVU1FX0lOVEVSUlVQVFMoKTsKK30KKworLyoK KyAqIFNldCB1cCBhIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdtZW50LgorICoKKyAqIFdlIHNl dCB1cCBhIGNvbnRyb2wgcmVnaW9uIHRoYXQgY29udGFpbnMgYSBmaXhlZC1zaXplIHdvcmtlciBp bmZvCisgKiAoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCksIGEgbWVzc2FnZSBxdWV1ZSwgYW5k IGFuIGVycm9yIHF1ZXVlLgorICoKKyAqIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBv biBmYWlsdXJlLgorICovCitzdGF0aWMgYm9vbAorcGFfc2V0dXBfZHNtKFBhcmFsbGVsQXBwbHlX b3JrZXJJbmZvICp3aW5mbykKK3sKKwlzaG1fdG9jX2VzdGltYXRvciBlOworCVNpemUJCXNlZ3Np emU7CisJZHNtX3NlZ21lbnQgKnNlZzsKKwlzaG1fdG9jICAgICp0b2M7CisJUGFyYWxsZWxBcHBs eVdvcmtlclNoYXJlZCAqc2hhcmVkOworCXNobV9tcQkgICAqbXE7CisJU2l6ZQkJcXVldWVfc2l6 ZSA9IERTTV9RVUVVRV9TSVpFOworCVNpemUJCWVycm9yX3F1ZXVlX3NpemUgPSBEU01fRVJST1Jf UVVFVUVfU0laRTsKKworCS8qCisJICogRXN0aW1hdGUgaG93IG11Y2ggc2hhcmVkIG1lbW9yeSB3 ZSBuZWVkLgorCSAqCisJICogQmVjYXVzZSB0aGUgVE9DIG1hY2hpbmVyeSBtYXkgY2hvb3NlIHRv IGluc2VydCBwYWRkaW5nIG9mIG9kZGx5LXNpemVkCisJICogcmVxdWVzdHMsIHdlIG11c3QgZXN0 aW1hdGUgZWFjaCBjaHVuayBzZXBhcmF0ZWx5LgorCSAqCisJICogV2UgbmVlZCBvbmUga2V5IHRv IHJlZ2lzdGVyIHRoZSBsb2NhdGlvbiBvZiB0aGUgaGVhZGVyLCBhbmQgdHdvIG90aGVyCisJICog a2V5cyB0byB0cmFjayB0aGUgbG9jYXRpb25zIG9mIHRoZSBtZXNzYWdlIHF1ZXVlIGFuZCB0aGUg ZXJyb3IgbWVzc2FnZQorCSAqIHF1ZXVlLgorCSAqLworCXNobV90b2NfaW5pdGlhbGl6ZV9lc3Rp bWF0b3IoJmUpOworCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJmUsIHNpemVvZihQYXJhbGxlbEFw cGx5V29ya2VyU2hhcmVkKSk7CisJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmZSwgcXVldWVfc2l6 ZSk7CisJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmZSwgZXJyb3JfcXVldWVfc2l6ZSk7CisKKwlz aG1fdG9jX2VzdGltYXRlX2tleXMoJmUsIDMpOworCXNlZ3NpemUgPSBzaG1fdG9jX2VzdGltYXRl KCZlKTsKKworCS8qIENyZWF0ZSB0aGUgc2hhcmVkIG1lbW9yeSBzZWdtZW50IGFuZCBlc3RhYmxp c2ggYSB0YWJsZSBvZiBjb250ZW50cy4gKi8KKwlzZWcgPSBkc21fY3JlYXRlKHNobV90b2NfZXN0 aW1hdGUoJmUpLCAwKTsKKwlpZiAoc2VnID09IE5VTEwpCisJCXJldHVybiBmYWxzZTsKKworCXRv YyA9IHNobV90b2NfY3JlYXRlKFBHX0xPR0lDQUxfQVBQTFlfU0hNX01BR0lDLCBkc21fc2VnbWVu dF9hZGRyZXNzKHNlZyksCisJCQkJCQkgc2Vnc2l6ZSk7CisKKwkvKiBTZXQgdXAgdGhlIGhlYWRl ciByZWdpb24uICovCisJc2hhcmVkID0gc2htX3RvY19hbGxvY2F0ZSh0b2MsIHNpemVvZihQYXJh bGxlbEFwcGx5V29ya2VyU2hhcmVkKSk7CisJU3BpbkxvY2tJbml0KCZzaGFyZWQtPm11dGV4KTsK KworCXNoYXJlZC0+eGFjdF9zdGF0ZSA9IFBBUkFMTEVMX1RSQU5TX1VOS05PV047CisJcGdfYXRv bWljX2luaXRfdTMyKCYoc2hhcmVkLT5wZW5kaW5nX21lc3NhZ2VfY291bnQpLCAwKTsKKworCXNo bV90b2NfaW5zZXJ0KHRvYywgUEFSQUxMRUxfQVBQTFlfS0VZX1NIQVJFRCwgc2hhcmVkKTsKKwor CS8qIFNldCB1cCBtZXNzYWdlIHF1ZXVlIGZvciB0aGUgd29ya2VyLiAqLworCW1xID0gc2htX21x X2NyZWF0ZShzaG1fdG9jX2FsbG9jYXRlKHRvYywgcXVldWVfc2l6ZSksIHF1ZXVlX3NpemUpOwor CXNobV90b2NfaW5zZXJ0KHRvYywgUEFSQUxMRUxfQVBQTFlfS0VZX01RLCBtcSk7CisJc2htX21x X3NldF9zZW5kZXIobXEsIE15UHJvYyk7CisKKwkvKiBBdHRhY2ggdGhlIHF1ZXVlLiAqLworCXdp bmZvLT5tcV9oYW5kbGUgPSBzaG1fbXFfYXR0YWNoKG1xLCBzZWcsIE5VTEwpOworCisJLyogU2V0 IHVwIGVycm9yIHF1ZXVlIGZvciB0aGUgd29ya2VyLiAqLworCW1xID0gc2htX21xX2NyZWF0ZShz aG1fdG9jX2FsbG9jYXRlKHRvYywgZXJyb3JfcXVldWVfc2l6ZSksCisJCQkJCSAgIGVycm9yX3F1 ZXVlX3NpemUpOworCXNobV90b2NfaW5zZXJ0KHRvYywgUEFSQUxMRUxfQVBQTFlfS0VZX0VSUk9S X1FVRVVFLCBtcSk7CisJc2htX21xX3NldF9yZWNlaXZlcihtcSwgTXlQcm9jKTsKKworCS8qIEF0 dGFjaCB0aGUgcXVldWUuICovCisJd2luZm8tPmVycm9yX21xX2hhbmRsZSA9IHNobV9tcV9hdHRh Y2gobXEsIHNlZywgTlVMTCk7CisKKwkvKiBSZXR1cm4gcmVzdWx0cyB0byBjYWxsZXIuICovCisJ d2luZm8tPmRzbV9zZWcgPSBzZWc7CisJd2luZm8tPnNoYXJlZCA9IHNoYXJlZDsKKworCXJldHVy biB0cnVlOworfQorCisvKgorICogU3RhcnQgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHByb2Nlc3Mg YW5kIGFsbG9jYXRlIHNoYXJlZCBtZW1vcnkgZm9yIGl0LgorICovCitzdGF0aWMgUGFyYWxsZWxB cHBseVdvcmtlckluZm8gKgorcGFfaW5pdF9hbmRfbGF1bmNoX3dvcmtlcih2b2lkKQoreworCU1l bW9yeUNvbnRleHQgb2xkY29udGV4dDsKKwlib29sCQlsYXVuY2hlZDsKKwlQYXJhbGxlbEFwcGx5 V29ya2VySW5mbyAqd2luZm87CisKKwlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRv KEFwcGx5Q29udGV4dCk7CisKKwl3aW5mbyA9IChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKSBw YWxsb2MwKHNpemVvZihQYXJhbGxlbEFwcGx5V29ya2VySW5mbykpOworCisJLyogU2V0dXAgc2hh cmVkIG1lbW9yeS4gKi8KKwlpZiAoIXBhX3NldHVwX2RzbSh3aW5mbykpCisJeworCQlNZW1vcnlD b250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CisJCXBmcmVlKHdpbmZvKTsKKworCQlyZXR1cm4g TlVMTDsKKwl9CisKKwlsYXVuY2hlZCA9IGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChNeUxvZ2lj YWxSZXBXb3JrZXItPmRiaWQsCisJCQkJCQkJCQkJTXlTdWJzY3JpcHRpb24tPm9pZCwKKwkJCQkJ CQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSwKKwkJCQkJCQkJCQlNeUxvZ2ljYWxSZXBXb3JrZXIt PnVzZXJpZCwKKwkJCQkJCQkJCQlJbnZhbGlkT2lkLAorCQkJCQkJCQkJCWRzbV9zZWdtZW50X2hh bmRsZSh3aW5mby0+ZHNtX3NlZykpOworCisJaWYgKGxhdW5jaGVkKQorCXsKKwkJUGFyYWxsZWxB cHBseVdvcmtlcnNMaXN0ID0gbGFwcGVuZChQYXJhbGxlbEFwcGx5V29ya2Vyc0xpc3QsIHdpbmZv KTsKKwl9CisJZWxzZQorCXsKKwkJcGFfZnJlZV93b3JrZXJfaW5mbyh3aW5mbyk7CisKKwkJd2lu Zm8gPSBOVUxMOworCX0KKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKwor CXJldHVybiB3aW5mbzsKK30KKworLyoKKyAqIFNlbmQgdGhlIGRhdGEgdG8gdGhlIHNwZWNpZmll ZCBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdmlhIHNoYXJlZC1tZW1vcnkKKyAqIHF1ZXVlLgorICov Cit2b2lkCitwYV9zZW5kX2RhdGEoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBTaXpl IG5ieXRlcywKKwkJCQkJCSBjb25zdCB2b2lkICpkYXRhKQoreworCWludAkJCXJjOworCXNobV9t cV9yZXN1bHQgcmVzdWx0OworCVRpbWVzdGFtcFR6IHN0YXJ0VGltZSA9IDA7CisKKwlBc3NlcnQo IUlzVHJhbnNhY3Rpb25TdGF0ZSgpKTsKKworI2RlZmluZSBTSE1fU0VORF9USU1FT1VUX01TCQkx MDAwMAorCisJZm9yICg7OykKKwl7CisJCXJlc3VsdCA9IHNobV9tcV9zZW5kKHdpbmZvLT5tcV9o YW5kbGUsIG5ieXRlcywgZGF0YSwgdHJ1ZSwgdHJ1ZSk7CisKKwkJaWYgKHJlc3VsdCA9PSBTSE1f TVFfU1VDQ0VTUykKKwkJCWJyZWFrOworCQllbHNlIGlmIChyZXN1bHQgPT0gU0hNX01RX0RFVEFD SEVEKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9U X0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCSBlcnJtc2coImNvdWxkIG5vdCBzZW5kIGRh dGEgdG8gc2hhcmVkLW1lbW9yeSBxdWV1ZSIpKSk7CisKKwkJQXNzZXJ0KHJlc3VsdCA9PSBTSE1f TVFfV09VTERfQkxPQ0spOworCisJCS8qCisJCSAqIFJldHJ5IGFmdGVyIDFzIHRvIHJlZHVjZSB0 aGUgY29zdCBvZiBnZXR0aW5nIHRoZSBzeXN0ZW0gdGltZSBhbmQKKwkJICogY2FsY3VsYXRpbmcg dGhlIHRpbWUgZGlmZmVyZW5jZS4KKwkJICovCisJCXJjID0gV2FpdExhdGNoKE15TGF0Y2gsCisJ CQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAor CQkJCQkgICAxMDAwTCwKKwkJCQkJICAgV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZ X1NUQVRFX0NIQU5HRSk7CisKKwkJaWYgKHJjICYgV0xfTEFUQ0hfU0VUKQorCQl7CisJCQlSZXNl dExhdGNoKE15TGF0Y2gpOworCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwkJfQorCisJCWlm IChzdGFydFRpbWUgPT0gMCkKKwkJCXN0YXJ0VGltZSA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsK KwkJZWxzZSBpZiAoVGltZXN0YW1wRGlmZmVyZW5jZUV4Y2VlZHMoc3RhcnRUaW1lLCBHZXRDdXJy ZW50VGltZXN0YW1wKCksCisJCQkJCQkJCQkJCVNITV9TRU5EX1RJTUVPVVRfTVMpKQorCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9DT05ORUNUSU9OX0ZBSUxVUkUpLAor CQkJCQkgZXJybXNnKCJ0ZXJtaW5hdGluZyBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFw cGx5IHdvcmtlciBkdWUgdG8gdGltZW91dCIpKSk7CisJfQorfQorCisvKgorICogV2FpdCB1bnRp bCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyJ3MgdHJhbnNhY3Rpb24gZmluaXNoZXMuCisgKi8K K3ZvaWQKK3BhX3dhaXRfZm9yX3hhY3RfZmluaXNoKFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQg KndzaGFyZWQpCit7CisJLyoKKwkgKiBXYWl0IHVudGlsIHRoZSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgc2V0IHRoZSBzdGF0ZSB0bworCSAqIFBBUkFMTEVMX1RSQU5TX1NUQVJURUQgd2hpY2ggbWVh bnMgaXQgaGFzIGFjcXVpcmVkIHRoZSB0cmFuc2FjdGlvbgorCSAqIGxvY2suIFRoaXMgaXMgdG8g cHJldmVudCBsZWFkZXIgYXBwbHkgd29ya2VyIGZyb20gYWNxdWlyaW5nIHRoZQorCSAqIHRyYW5z YWN0aW9uIGxvY2sgZWFybGllciB0aGFuIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJICov CisJcGFfd2FpdF9mb3JfeGFjdF9zdGF0ZSh3c2hhcmVkLCBQQVJBTExFTF9UUkFOU19TVEFSVEVE KTsKKworCS8qIFdhaXQgZm9yIHRoZSB0cmFuc2FjdGlvbiBsb2NrIHRvIGJlIHJlbGVhc2VkLiAq LworCXBhX2xvY2tfdHJhbnNhY3Rpb24od3NoYXJlZC0+eGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2Nr KTsKKwlwYV91bmxvY2tfdHJhbnNhY3Rpb24od3NoYXJlZC0+eGlkLCBBY2Nlc3NFeGNsdXNpdmVM b2NrKTsKKworCS8qCisJICogQ2hlY2sgaWYgdGhlIHN0YXRlIGJlY29tZXMgUEFSQUxMRUxfVFJB TlNfRklOSVNIRUQgaW4gY2FzZSB0aGUgcGFyYWxsZWwKKwkgKiBhcHBseSB3b3JrZXIgZmFpbGVk IHdoaWxlIGFwcGx5aW5nIGNoYW5nZXMgY2F1c2luZyB0aGUgbG9jayB0byBiZQorCSAqIHJlbGVh c2VkLgorCSAqLworCWlmIChwYV9nZXRfeGFjdF9zdGF0ZSh3c2hhcmVkKSAhPSBQQVJBTExFTF9U UkFOU19GSU5JU0hFRCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09C SkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJsb3N0IGNvbm5l Y3Rpb24gdG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciIpKSk7Cit9CisKKy8qCisgKiBXYWl0 IHVudGlsIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIncyB0cmFuc2FjdGlvbiBzdGF0ZSByZWFj aCBvciBleGNlZWQgdGhlCisgKiBnaXZlbiB4YWN0X3N0YXRlLgorICovCitzdGF0aWMgdm9pZAor cGFfd2FpdF9mb3JfeGFjdF9zdGF0ZShQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICp3c2hhcmVk LAorCQkJCQkJCQkgICBQYXJhbGxlbFRyYW5zU3RhdGUgeGFjdF9zdGF0ZSkKK3sKKwlmb3IgKDs7 KQorCXsKKwkJLyogU3RvcCBpZiB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgcmVhY2ggb3IgZXhjZWVk IHRoZSB4YWN0X3N0YXRlLiAqLworCQlpZiAocGFfZ2V0X3hhY3Rfc3RhdGUod3NoYXJlZCkgPj0g eGFjdF9zdGF0ZSkKKwkJCWJyZWFrOworCisJCS8qIFdhaXQgdG8gYmUgc2lnbmFsbGVkLiAqLwor CQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsCisJCQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElN RU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkgMTBMLAorCQkJCQkJIFdBSVRfRVZF TlRfTE9HSUNBTF9QQVJBTExFTF9BUFBMWV9TVEFURV9DSEFOR0UpOworCisJCS8qIFJlc2V0IHRo ZSBsYXRjaCBzbyB3ZSBkb24ndCBzcGluLiAqLworCQlSZXNldExhdGNoKE15TGF0Y2gpOworCisJ CS8qIEFuIGludGVycnVwdCBtYXkgaGF2ZSBvY2N1cnJlZCB3aGlsZSB3ZSB3ZXJlIHdhaXRpbmcu ICovCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJfQorfQorCisvKgorICogU2V0IGFuIGVu dW0gaW5kaWNhdGluZyB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgZm9yIHRoZSBnaXZlbiBwYXJhbGxl bCBhcHBseQorICogd29ya2VyLgorICovCit2b2lkCitwYV9zZXRfeGFjdF9zdGF0ZShQYXJhbGxl bEFwcGx5V29ya2VyU2hhcmVkICp3c2hhcmVkLAorCQkJCQkJCSAgUGFyYWxsZWxUcmFuc1N0YXRl IHhhY3Rfc3RhdGUpCit7CisJU3BpbkxvY2tBY3F1aXJlKCZ3c2hhcmVkLT5tdXRleCk7CisJd3No YXJlZC0+eGFjdF9zdGF0ZSA9IHhhY3Rfc3RhdGU7CisJU3BpbkxvY2tSZWxlYXNlKCZ3c2hhcmVk LT5tdXRleCk7Cit9CisKKy8qCisgKiBHZXQgYW4gZW51bSBpbmRpY2F0aW5nIHRoZSB0cmFuc2Fj dGlvbiBzdGF0ZSBmb3IgdGhlIGdpdmVuIHBhcmFsbGVsIGFwcGx5CisgKiB3b3JrZXIuCisgKi8K K3N0YXRpYyBQYXJhbGxlbFRyYW5zU3RhdGUKK3BhX2dldF94YWN0X3N0YXRlKFBhcmFsbGVsQXBw bHlXb3JrZXJTaGFyZWQgKndzaGFyZWQpCit7CisJUGFyYWxsZWxUcmFuc1N0YXRlIHhhY3Rfc3Rh dGU7CisKKwlTcGluTG9ja0FjcXVpcmUoJndzaGFyZWQtPm11dGV4KTsKKwl4YWN0X3N0YXRlID0g d3NoYXJlZC0+eGFjdF9zdGF0ZTsKKwlTcGluTG9ja1JlbGVhc2UoJndzaGFyZWQtPm11dGV4KTsK KworCXJldHVybiB4YWN0X3N0YXRlOworfQorCisvKgorICogRm9ybSB0aGUgc2F2ZXBvaW50IG5h bWUgZm9yIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uCisgKgorICogUmV0dXJuIHRoZSBuYW1l IGluIHRoZSBzdXBwbGllZCBidWZmZXIuCisgKi8KK3N0YXRpYyB2b2lkCitwYV9zYXZlcG9pbnRf bmFtZShPaWQgc3Vib2lkLCBUcmFuc2FjdGlvbklkIHhpZCwKKwkJCQkJCQkgIGNoYXIgKnNwbmFt ZSwgU2l6ZSBzenNwKQoreworCXNucHJpbnRmKHNwbmFtZSwgc3pzcCwgInBnX3NwXyV1XyV1Iiwg c3Vib2lkLCB4aWQpOworfQorCisvKgorICogRGVmaW5lIGEgc2F2ZXBvaW50IGZvciBhIHN1Ynhh Y3QgaW4gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlmIG5lZWRlZC4KKyAqCisgKiBUaGUgcGFyYWxs ZWwgYXBwbHkgd29ya2VyIGNhbiBmaWd1cmUgb3V0IGlmIGEgbmV3IHN1YnRyYW5zYWN0aW9uIHdh cworICogc3RhcnRlZCBieSBjaGVja2luZyBpZiB0aGUgbmV3IGNoYW5nZSBhcnJpdmVkIHdpdGgg YSBkaWZmZXJlbnQgeGlkLiBJbiB0aGF0CisgKiBjYXNlIGRlZmluZSBhIG5hbWVkIHNhdmVwb2lu dCwgc28gdGhhdCB3ZSBhcmUgYWJsZSB0byByb2xsYmFjayB0byBpdAorICogaWYgcmVxdWlyZWQu CisgKi8KK3ZvaWQKK3BhX3N0YXJ0X3N1YnRyYW5zKFRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQs IFRyYW5zYWN0aW9uSWQgdG9wX3hpZCkKK3sKKwlpZiAoY3VycmVudF94aWQgIT0gdG9wX3hpZCAm JgorCQkhbGlzdF9tZW1iZXJfeGlkKHN1YnhhY3RsaXN0LCBjdXJyZW50X3hpZCkpCisJeworCQlN ZW1vcnlDb250ZXh0IG9sZGN0eDsKKwkJY2hhcgkJc3BuYW1lW05BTUVEQVRBTEVOXTsKKworCQlw YV9zYXZlcG9pbnRfbmFtZShNeVN1YnNjcmlwdGlvbi0+b2lkLCBjdXJyZW50X3hpZCwKKwkJCQkJ CQkJCSAgc3BuYW1lLCBzaXplb2Yoc3BuYW1lKSk7CisKKwkJZWxvZyhERUJVRzEsICJkZWZpbmlu ZyBzYXZlcG9pbnQgJXMgaW4gcGFyYWxsZWwgYXBwbHkgd29ya2VyIiwgc3BuYW1lKTsKKworCQkv KiBXZSBtdXN0IGJlIGluIHRyYW5zYWN0aW9uIGJsb2NrIHRvIGRlZmluZSB0aGUgU0FWRVBPSU5U LiAqLworCQlpZiAoIUlzVHJhbnNhY3Rpb25CbG9jaygpKQorCQl7CisJCQlpZiAoIUlzVHJhbnNh Y3Rpb25TdGF0ZSgpKQorCQkJCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkJCUJlZ2lu VHJhbnNhY3Rpb25CbG9jaygpOworCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCX0K KworCQlEZWZpbmVTYXZlcG9pbnQoc3BuYW1lKTsKKworCQkvKgorCQkgKiBDb21taXRUcmFuc2Fj dGlvbkNvbW1hbmQgaXMgbmVlZGVkIHRvIHN0YXJ0IGEgc3VidHJhbnNhY3Rpb24gYWZ0ZXIKKwkJ ICogaXNzdWluZyBhIFNBVkVQT0lOVCBpbnNpZGUgYSB0cmFuc2FjdGlvbiBibG9jayAoc2VlCisJ CSAqIFN0YXJ0U3ViVHJhbnNhY3Rpb24oKSkuCisJCSAqLworCQlDb21taXRUcmFuc2FjdGlvbkNv bW1hbmQoKTsKKworCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0 KTsKKwkJc3VieGFjdGxpc3QgPSBsYXBwZW5kX3hpZChzdWJ4YWN0bGlzdCwgY3VycmVudF94aWQp OworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKKwl9Cit9CisKKy8qCisgKiBIYW5k bGUgU1RSRUFNIEFCT1JUIG1lc3NhZ2Ugd2hlbiB0aGUgdHJhbnNhY3Rpb24gd2FzIGFwcGxpZWQg aW4gYSBwYXJhbGxlbAorICogYXBwbHkgd29ya2VyLgorICovCit2b2lkCitwYV9zdHJlYW1fYWJv cnQoTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YSAqYWJvcnRfZGF0YSkKK3sKKwlUcmFuc2FjdGlv bklkIHhpZCA9IGFib3J0X2RhdGEtPnhpZDsKKwlUcmFuc2FjdGlvbklkIHN1YnhpZCA9IGFib3J0 X2RhdGEtPnN1YnhpZDsKKworCS8qCisJICogVXBkYXRlIG9yaWdpbiBzdGF0ZSBzbyB3ZSBjYW4g cmVzdGFydCBzdHJlYW1pbmcgZnJvbSBjb3JyZWN0IHBvc2l0aW9uCisJICogaW4gY2FzZSBvZiBj cmFzaC4KKwkgKi8KKwlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX2xzbiA9IGFib3J0X2RhdGEt PmFib3J0X2xzbjsKKwlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX3RpbWVzdGFtcCA9IGFib3J0 X2RhdGEtPmFib3J0X3RpbWU7CisKKwkvKgorCSAqIElmIHRoZSB0d28gWElEcyBhcmUgdGhlIHNh bWUsIGl0J3MgaW4gZmFjdCBhYm9ydCBvZiB0b3BsZXZlbCB4YWN0LCBzbworCSAqIGp1c3QgZnJl ZSB0aGUgc3VieGFjdGxpc3QuCisJICovCisJaWYgKHN1YnhpZCA9PSB4aWQpCisJeworCQkvKgor CQkgKiBBbHRob3VnaCB0aGUgbG9jayBjYW4gYmUgYXV0b21hdGljYWxseSByZWxlYXNlZCBkdXJp bmcgdHJhbnNhY3Rpb24KKwkJICogcm9sbGJhY2ssIGJ1dCB3ZSBzdGlsbCByZWxlYXNlIHRoZSBs b2NrIGhlcmUgYXMgd2UgbWF5IG5vdCBpbiBhCisJCSAqIHRyYW5zYWN0aW9uLgorCQkgKi8KKwkJ cGFfdW5sb2NrX3RyYW5zYWN0aW9uKHhpZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCQlBYm9ydEN1 cnJlbnRUcmFuc2FjdGlvbigpOworCisJCWlmIChJc1RyYW5zYWN0aW9uQmxvY2soKSkKKwkJewor CQkJRW5kVHJhbnNhY3Rpb25CbG9jayhmYWxzZSk7CisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1h bmQoKTsKKwkJfQorCisJCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRSwgTlVMTCk7 CisKKwkJbGlzdF9mcmVlKHN1YnhhY3RsaXN0KTsKKwkJc3VieGFjdGxpc3QgPSBOSUw7CisKKwkJ cGFfc2V0X3hhY3Rfc3RhdGUoTXlQYXJhbGxlbFNoYXJlZCwgUEFSQUxMRUxfVFJBTlNfRklOSVNI RUQpOworCX0KKwllbHNlCisJeworCQkvKgorCQkgKiBPSywgc28gaXQncyBhIHN1YnhhY3QuIFJv bGxiYWNrIHRvIHRoZSBzYXZlcG9pbnQuCisJCSAqCisJCSAqIFdlIGFsc28gbmVlZCB0byByZWFk IHRoZSBzdWJ4YWN0bGlzdCwgZGV0ZXJtaW5lIHRoZSBvZmZzZXQgdHJhY2tlZAorCQkgKiBmb3Ig dGhlIHN1YnhhY3QsIGFuZCB0cnVuY2F0ZSB0aGUgbGlzdC4KKwkJICovCisJCWludAkJCWk7CisJ CWJvb2wJCWZvdW5kID0gZmFsc2U7CisJCWNoYXIJCXNwbmFtZVtOQU1FREFUQUxFTl07CisKKwkJ cGFfc2F2ZXBvaW50X25hbWUoTXlTdWJzY3JpcHRpb24tPm9pZCwgc3VieGlkLCBzcG5hbWUsCisJ CQkJCQkJCQkgIHNpemVvZihzcG5hbWUpKTsKKworCQllbG9nKERFQlVHMSwgInJvbGxpbmcgYmFj ayB0byBzYXZlcG9pbnQgJXMgaW4gcGFyYWxsZWwgYXBwbHkgd29ya2VyIiwgc3BuYW1lKTsKKwor CQlmb3IgKGkgPSBsaXN0X2xlbmd0aChzdWJ4YWN0bGlzdCkgLSAxOyBpID49IDA7IGktLSkKKwkJ eworCQkJVHJhbnNhY3Rpb25JZCB4aWRfdG1wID0gbGZpcnN0X3hpZChsaXN0X250aF9jZWxsKHN1 YnhhY3RsaXN0LCBpKSk7CisKKwkJCWlmICh4aWRfdG1wID09IHN1YnhpZCkKKwkJCXsKKwkJCQlm b3VuZCA9IHRydWU7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKworCQlpZiAoZm91bmQpCisJCXsK KwkJCVJvbGxiYWNrVG9TYXZlcG9pbnQoc3BuYW1lKTsKKwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29t bWFuZCgpOworCQkJc3VieGFjdGxpc3QgPSBsaXN0X3RydW5jYXRlKHN1YnhhY3RsaXN0LCBpICsg MSk7CisJCX0KKworCQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEVJTlRSQU5TQUNU SU9OLCBOVUxMKTsKKwl9Cit9CisKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb25zIHRvIGFjcXVpcmUg YW5kIHJlbGVhc2UgYSBsb2NrIGZvciBlYWNoIHN0cmVhbSBibG9jay4KKyAqCisgKiBTZXQgbG9j a3RhZ19maWVsZDQgdG8gMCB0byBpbmRpY2F0ZSB0aGF0IGl0J3MgYSBzdHJlYW0gbG9jay4KKyAq Lwordm9pZAorcGFfbG9ja19zdHJlYW0oVHJhbnNhY3Rpb25JZCB4aWQsIExPQ0tNT0RFIGxvY2tt b2RlKQoreworCUxvY2tBcHBseVRyYW5zYWN0aW9uRm9yU2Vzc2lvbihNeUxvZ2ljYWxSZXBXb3Jr ZXItPnN1YmlkLCB4aWQsCisJCQkJCQkJCSAgIDAsIGxvY2ttb2RlKTsKK30KKwordm9pZAorcGFf dW5sb2NrX3N0cmVhbShUcmFuc2FjdGlvbklkIHhpZCwgTE9DS01PREUgbG9ja21vZGUpCit7CisJ VW5sb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNlc3Npb24oTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJp ZCwgeGlkLAorCQkJCQkJCQkJIDAsIGxvY2ttb2RlKTsKK30KKworLyoKKyAqIEhlbHBlciBmdW5j dGlvbnMgdG8gYWNxdWlyZSBhbmQgcmVsZWFzZSBhIGxvY2sgZm9yIGVhY2ggbG9jYWwgdHJhbnNh Y3Rpb24uCisgKgorICogU2V0IGxvY2t0YWdfZmllbGQ0IHRvIDEgdG8gaW5kaWNhdGUgdGhhdCBp dCdzIGEgdHJhbnNhY3Rpb24gbG9jay4KKyAqCisgKiBOb3RlIHRoYXQgYWxsIHRoZSBjYWxsZXJz IGFyZSBwYXNzaW5nIHJlbW90ZSB0cmFuc2FjdGlvbiBJRCBpbnN0ZWFkIG9mIGxvY2FsCisgKiB0 cmFuc2FjdGlvbiBJRCBhcyB4aWQuIFRoaXMgaXMgYmVjYXVzZSB0aGUgbG9jYWwgdHJhbnNhY3Rp b24gSUQgd2lsbCBvbmx5IGJlCisgKiBhc3NpZ25lZCB3aGlsZSBhcHBseWluZyB0aGUgZmlyc3Qg Y2hhbmdlIGluIHRoZSBwYXJhbGxlbCBhcHBseSwgYnV0IGl0J3MKKyAqIHBvc3NpYmxlIHRoYXQg dGhlIGZpcnN0IGNoYW5nZSBpbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaXMgYmxvY2tlZCBieSBh CisgKiBjb25jdXJyZW50bHkgZXhlY3V0aW5nIHRyYW5zYWN0aW9uIGluIGFub3RoZXIgcGFyYWxs ZWwgYXBwbHkgd29ya2VyIGNhdXNpbmcKKyAqIHRoZSBsZWFkZXIgY2Fubm90IGdldCBsb2NhbCB0 cmFuc2FjdGlvbiBJRC4KKyAqLwordm9pZAorcGFfbG9ja190cmFuc2FjdGlvbihUcmFuc2FjdGlv bklkIHhpZCwgTE9DS01PREUgbG9ja21vZGUpCit7CisJTG9ja0FwcGx5VHJhbnNhY3Rpb25Gb3JT ZXNzaW9uKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCwKKwkJCQkJCQkJICAgMSwgbG9j a21vZGUpOworfQorCit2b2lkCitwYV91bmxvY2tfdHJhbnNhY3Rpb24oVHJhbnNhY3Rpb25JZCB4 aWQsIExPQ0tNT0RFIGxvY2ttb2RlKQoreworCVVubG9ja0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNz aW9uKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCwKKwkJCQkJCQkJCSAxLCBsb2NrbW9k ZSk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29k ZS5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwppbmRleCAyY2Mw YWM5Li4zMDM1NTdkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L2RlY29kZS5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMK QEAgLTY1Miw5ICs2NTIsMTAgQEAgRGVjb2RlQ29tbWl0KExvZ2ljYWxEZWNvZGluZ0NvbnRleHQg KmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmLAogCXsKIAkJZm9yIChpID0gMDsgaSA8IHBhcnNl ZC0+bnN1YnhhY3RzOyBpKyspCiAJCXsKLQkJCVJlb3JkZXJCdWZmZXJGb3JnZXQoY3R4LT5yZW9y ZGVyLCBwYXJzZWQtPnN1YnhhY3RzW2ldLCBidWYtPm9yaWdwdHIpOworCQkJUmVvcmRlckJ1ZmZl ckZvcmdldChjdHgtPnJlb3JkZXIsIHBhcnNlZC0+c3VieGFjdHNbaV0sIGJ1Zi0+b3JpZ3B0ciwK KwkJCQkJCQkJY29tbWl0X3RpbWUpOwogCQl9Ci0JCVJlb3JkZXJCdWZmZXJGb3JnZXQoY3R4LT5y ZW9yZGVyLCB4aWQsIGJ1Zi0+b3JpZ3B0cik7CisJCVJlb3JkZXJCdWZmZXJGb3JnZXQoY3R4LT5y ZW9yZGVyLCB4aWQsIGJ1Zi0+b3JpZ3B0ciwgY29tbWl0X3RpbWUpOwogCiAJCXJldHVybjsKIAl9 CkBAIC04MjIsMTAgKzgyMywxMSBAQCBEZWNvZGVBYm9ydChMb2dpY2FsRGVjb2RpbmdDb250ZXh0 ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1ZiwKIAkJZm9yIChpID0gMDsgaSA8IHBhcnNlZC0+ bnN1YnhhY3RzOyBpKyspCiAJCXsKIAkJCVJlb3JkZXJCdWZmZXJBYm9ydChjdHgtPnJlb3JkZXIs IHBhcnNlZC0+c3VieGFjdHNbaV0sCi0JCQkJCQkJICAgYnVmLT5yZWNvcmQtPkVuZFJlY1B0cik7 CisJCQkJCQkJICAgYnVmLT5yZWNvcmQtPkVuZFJlY1B0ciwgYWJvcnRfdGltZSk7CiAJCX0KIAot CQlSZW9yZGVyQnVmZmVyQWJvcnQoY3R4LT5yZW9yZGVyLCB4aWQsIGJ1Zi0+cmVjb3JkLT5FbmRS ZWNQdHIpOworCQlSZW9yZGVyQnVmZmVyQWJvcnQoY3R4LT5yZW9yZGVyLCB4aWQsIGJ1Zi0+cmVj b3JkLT5FbmRSZWNQdHIsCisJCQkJCQkgICBhYm9ydF90aW1lKTsKIAl9CiAKIAkvKiB1cGRhdGUg dGhlIGRlY29kaW5nIHN0YXRzICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2xhdW5jaGVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xh dW5jaGVyLmMKaW5kZXggNzM1OTRjNi4uYTA4Njk5NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwpAQCAtNTUsNiArNTUsNyBAQAogLyogR1VDIHZhcmlhYmxl cyAqLwogaW50CQkJbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycyA9IDQ7CiBpbnQJCQlt YXhfc3luY193b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gPSAyOworaW50CQkJbWF4X3BhcmFsbGVs X2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiA9IDI7CiAKIExvZ2ljYWxSZXBXb3JrZXIg Kk15TG9naWNhbFJlcFdvcmtlciA9IE5VTEw7CiAKQEAgLTE1Miw4ICsxNTMsMTAgQEAgZ2V0X3N1 YnNjcmlwdGlvbl9saXN0KHZvaWQpCiAgKgogICogVGhpcyBpcyBvbmx5IG5lZWRlZCBmb3IgY2xl YW5pbmcgdXAgdGhlIHNoYXJlZCBtZW1vcnkgaW4gY2FzZSB0aGUgd29ya2VyCiAgKiBmYWlscyB0 byBhdHRhY2guCisgKgorICogUmV0dXJuIHdoZXRoZXIgdGhlIGF0dGFjaCB3YXMgc3VjY2Vzc2Z1 bC4KICAqLwotc3RhdGljIHZvaWQKK3N0YXRpYyBib29sCiBXYWl0Rm9yUmVwbGljYXRpb25Xb3Jr ZXJBdHRhY2goTG9naWNhbFJlcFdvcmtlciAqd29ya2VyLAogCQkJCQkJCSAgIHVpbnQxNiBnZW5l cmF0aW9uLAogCQkJCQkJCSAgIEJhY2tncm91bmRXb3JrZXJIYW5kbGUgKmhhbmRsZSkKQEAgLTE2 OSwxMSArMTcyLDExIEBAIFdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaChMb2dpY2FsUmVw V29ya2VyICp3b3JrZXIsCiAKIAkJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywg TFdfU0hBUkVEKTsKIAotCQkvKiBXb3JrZXIgZWl0aGVyIGRpZWQgb3IgaGFzIHN0YXJ0ZWQ7IG5v IG5lZWQgdG8gZG8gYW55dGhpbmcuICovCisJCS8qIFdvcmtlciBlaXRoZXIgZGllZCBvciBoYXMg c3RhcnRlZC4gUmV0dXJuIGZhbHNlIGlmIGRpZWQuICovCiAJCWlmICghd29ya2VyLT5pbl91c2Ug fHwgd29ya2VyLT5wcm9jKQogCQl7CiAJCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJM b2NrKTsKLQkJCXJldHVybjsKKwkJCXJldHVybiB3b3JrZXItPmluX3VzZTsKIAkJfQogCiAJCUxX TG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwpAQCAtMTg4LDcgKzE5MSw3IEBAIFdh aXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIsCiAJ CQlpZiAoZ2VuZXJhdGlvbiA9PSB3b3JrZXItPmdlbmVyYXRpb24pCiAJCQkJbG9naWNhbHJlcF93 b3JrZXJfY2xlYW51cCh3b3JrZXIpOwogCQkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2Vy TG9jayk7Ci0JCQlyZXR1cm47CisJCQlyZXR1cm4gZmFsc2U7CiAJCX0KIAogCQkvKgpAQCAtMjEw LDYgKzIxMyw4IEBAIFdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaChMb2dpY2FsUmVwV29y a2VyICp3b3JrZXIsCiAvKgogICogV2Fsa3MgdGhlIHdvcmtlcnMgYXJyYXkgYW5kIHNlYXJjaGVz IGZvciBvbmUgdGhhdCBtYXRjaGVzIGdpdmVuCiAgKiBzdWJzY3JpcHRpb24gaWQgYW5kIHJlbGlk LgorICoKKyAqIFdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gdGhlIGxlYWRlciBhcHBseSB3b3Jr ZXIgb3IgdGFibGUgc3luYyB3b3JrZXIuCiAgKi8KIExvZ2ljYWxSZXBXb3JrZXIgKgogbG9naWNh bHJlcF93b3JrZXJfZmluZChPaWQgc3ViaWQsIE9pZCByZWxpZCwgYm9vbCBvbmx5X3J1bm5pbmcp CkBAIC0yMjQsNiArMjI5LDEwIEBAIGxvZ2ljYWxyZXBfd29ya2VyX2ZpbmQoT2lkIHN1YmlkLCBP aWQgcmVsaWQsIGJvb2wgb25seV9ydW5uaW5nKQogCXsKIAkJTG9naWNhbFJlcFdvcmtlciAqdyA9 ICZMb2dpY2FsUmVwQ3R4LT53b3JrZXJzW2ldOwogCisJCS8qIFNraXAgcGFyYWxsZWwgYXBwbHkg d29ya2Vycy4gKi8KKwkJaWYgKGlzUGFyYWxsZWxBcHBseVdvcmtlcih3KSkKKwkJCWNvbnRpbnVl OworCiAJCWlmICh3LT5pbl91c2UgJiYgdy0+c3ViaWQgPT0gc3ViaWQgJiYgdy0+cmVsaWQgPT0g cmVsaWQgJiYKIAkJCSghb25seV9ydW5uaW5nIHx8IHctPnByb2MpKQogCQl7CkBAIC0yNjAsMTEg KzI2OSwxMyBAQCBsb2dpY2FscmVwX3dvcmtlcnNfZmluZChPaWQgc3ViaWQsIGJvb2wgb25seV9y dW5uaW5nKQogfQogCiAvKgotICogU3RhcnQgbmV3IGFwcGx5IGJhY2tncm91bmQgd29ya2VyLCBp ZiBwb3NzaWJsZS4KKyAqIFN0YXJ0IG5ldyBiYWNrZ3JvdW5kIHdvcmtlciwgaWYgcG9zc2libGUu CisgKgorICogUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGZhaWx1cmUuCiAgKi8K LXZvaWQKK2Jvb2wKIGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChPaWQgZGJpZCwgT2lkIHN1Ymlk LCBjb25zdCBjaGFyICpzdWJuYW1lLCBPaWQgdXNlcmlkLAotCQkJCQkJIE9pZCByZWxpZCkKKwkJ CQkJCSBPaWQgcmVsaWQsIGRzbV9oYW5kbGUgc3Vid29ya2VyX2RzbSkKIHsKIAlCYWNrZ3JvdW5k V29ya2VyIGJndzsKIAlCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpiZ3dfaGFuZGxlOwpAQCAtMjcz LDcgKzI4NCwxMiBAQCBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2goT2lkIGRiaWQsIE9pZCBzdWJp ZCwgY29uc3QgY2hhciAqc3VibmFtZSwgT2lkIHVzZXJpZCwKIAlpbnQJCQlzbG90ID0gMDsKIAlM b2dpY2FsUmVwV29ya2VyICp3b3JrZXIgPSBOVUxMOwogCWludAkJCW5zeW5jd29ya2VyczsKKwlp bnQJCQlucGFyYWxsZWxhcHBseXdvcmtlcnM7CiAJVGltZXN0YW1wVHogbm93OworCWJvb2wJCWlz X3BhcmFsbGVsX2FwcGx5X3dvcmtlciA9IChzdWJ3b3JrZXJfZHNtICE9IERTTV9IQU5ETEVfSU5W QUxJRCk7CisKKwkvKiBTYW5pdHkgY2hlY2sgLSB0YWJsZXN5bmMgd29ya2VyIGNhbm5vdCBiZSBh IHN1YndvcmtlciAqLworCUFzc2VydCghKGlzX3BhcmFsbGVsX2FwcGx5X3dvcmtlciAmJiBPaWRJ c1ZhbGlkKHJlbGlkKSkpOwogCiAJZXJlcG9ydChERUJVRzEsCiAJCQkoZXJybXNnX2ludGVybmFs KCJzdGFydGluZyBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwi JXNcIiIsCkBAIC0zNTEsNyArMzY3LDI2IEBAIHJldHJ5OgogCWlmIChPaWRJc1ZhbGlkKHJlbGlk KSAmJiBuc3luY3dvcmtlcnMgPj0gbWF4X3N5bmNfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uKQog CXsKIAkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7Ci0JCXJldHVybjsKKwkJ cmV0dXJuIGZhbHNlOworCX0KKworCW5wYXJhbGxlbGFwcGx5d29ya2VycyA9IGxvZ2ljYWxyZXBf cGFyYWxsZWxfYXBwbHlfd29ya2VyX2NvdW50KHN1YmlkKTsKKworCS8qCisJICogUmV0dXJuIGZh bHNlIGlmIHRoZSBudW1iZXIgb2YgcGFyYWxsZWwgYXBwbHkgd29ya2VycyByZWFjaGVkIHRoZSBs aW1pdAorCSAqIHBlciBzdWJzY3JpcHRpb24uCisJICovCisJaWYgKGlzX3BhcmFsbGVsX2FwcGx5 X3dvcmtlciAmJgorCQlucGFyYWxsZWxhcHBseXdvcmtlcnMgPj0gbWF4X3BhcmFsbGVsX2FwcGx5 X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbikKKwl7CisJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJl cFdvcmtlckxvY2spOworCisJCWVyZXBvcnQoTE9HLAorCQkJCShlcnJjb2RlKEVSUkNPREVfQ09O RklHVVJBVElPTl9MSU1JVF9FWENFRURFRCksCisJCQkJIGVycm1zZygib3V0IG9mIHBhcmFsbGVs IGFwcGx5IHdvcmtlcnMiKSwKKwkJCQkgZXJyaGludCgiWW91IG1pZ2h0IG5lZWQgdG8gaW5jcmVh c2UgbWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbi4iKSkpOworCisJ CXJldHVybiBmYWxzZTsKIAl9CiAKIAkvKgpAQCAtMzY1LDcgKzQwMCw3IEBAIHJldHJ5OgogCQkJ CShlcnJjb2RlKEVSUkNPREVfQ09ORklHVVJBVElPTl9MSU1JVF9FWENFRURFRCksCiAJCQkJIGVy cm1zZygib3V0IG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIHNsb3RzIiksCiAJCQkJIGVy cmhpbnQoIllvdSBtaWdodCBuZWVkIHRvIGluY3JlYXNlIG1heF9sb2dpY2FsX3JlcGxpY2F0aW9u X3dvcmtlcnMuIikpKTsKLQkJcmV0dXJuOworCQlyZXR1cm4gZmFsc2U7CiAJfQogCiAJLyogUHJl cGFyZSB0aGUgd29ya2VyIHNsb3QuICovCkBAIC0zODAsNiArNDE1LDggQEAgcmV0cnk6CiAJd29y a2VyLT5yZWxzdGF0ZSA9IFNVQlJFTF9TVEFURV9VTktOT1dOOwogCXdvcmtlci0+cmVsc3RhdGVf bHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJd29ya2VyLT5zdHJlYW1fZmlsZXNldCA9IE5VTEw7 CisJd29ya2VyLT5hcHBseV9sZWFkZXJfcGlkID0gaXNfcGFyYWxsZWxfYXBwbHlfd29ya2VyID8g TXlQcm9jUGlkIDogSW52YWxpZFBpZDsKKwl3b3JrZXItPnBhcmFsbGVsX2FwcGx5ID0gaXNfcGFy YWxsZWxfYXBwbHlfd29ya2VyOwogCXdvcmtlci0+bGFzdF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0 cjsKIAlUSU1FU1RBTVBfTk9CRUdJTih3b3JrZXItPmxhc3Rfc2VuZF90aW1lKTsKIAlUSU1FU1RB TVBfTk9CRUdJTih3b3JrZXItPmxhc3RfcmVjdl90aW1lKTsKQEAgLTM5NywxOSArNDM0LDM0IEBA IHJldHJ5OgogCQlCR1dPUktFUl9CQUNLRU5EX0RBVEFCQVNFX0NPTk5FQ1RJT047CiAJYmd3LmJn d19zdGFydF90aW1lID0gQmdXb3JrZXJTdGFydF9SZWNvdmVyeUZpbmlzaGVkOwogCXNucHJpbnRm KGJndy5iZ3dfbGlicmFyeV9uYW1lLCBCR1dfTUFYTEVOLCAicG9zdGdyZXMiKTsKLQlzbnByaW50 ZihiZ3cuYmd3X2Z1bmN0aW9uX25hbWUsIEJHV19NQVhMRU4sICJBcHBseVdvcmtlck1haW4iKTsK KworCWlmIChpc19wYXJhbGxlbF9hcHBseV93b3JrZXIpCisJCXNucHJpbnRmKGJndy5iZ3dfZnVu Y3Rpb25fbmFtZSwgQkdXX01BWExFTiwgIlBhcmFsbGVsQXBwbHlXb3JrZXJNYWluIik7CisJZWxz ZQorCQlzbnByaW50ZihiZ3cuYmd3X2Z1bmN0aW9uX25hbWUsIEJHV19NQVhMRU4sICJBcHBseVdv cmtlck1haW4iKTsKKwogCWlmIChPaWRJc1ZhbGlkKHJlbGlkKSkKIAkJc25wcmludGYoYmd3LmJn d19uYW1lLCBCR1dfTUFYTEVOLAogCQkJCSAibG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgZm9y IHN1YnNjcmlwdGlvbiAldSBzeW5jICV1Iiwgc3ViaWQsIHJlbGlkKTsKKwllbHNlIGlmIChpc19w YXJhbGxlbF9hcHBseV93b3JrZXIpCisJCXNucHJpbnRmKGJndy5iZ3dfbmFtZSwgQkdXX01BWExF TiwKKwkJCQkgImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZvciBz dWJzY3JpcHRpb24gJXUiLCBzdWJpZCk7CiAJZWxzZQogCQlzbnByaW50ZihiZ3cuYmd3X25hbWUs IEJHV19NQVhMRU4sCi0JCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBmb3Igc3Vic2Ny aXB0aW9uICV1Iiwgc3ViaWQpOwotCXNucHJpbnRmKGJndy5iZ3dfdHlwZSwgQkdXX01BWExFTiwg ImxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIik7CisJCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9u IGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uICV1Iiwgc3ViaWQpOworCisJaWYgKGlzX3Bh cmFsbGVsX2FwcGx5X3dvcmtlcikKKwkJc25wcmludGYoYmd3LmJnd190eXBlLCBCR1dfTUFYTEVO LCAibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCB3b3JrZXIiKTsKKwllbHNlCisJCXNucHJp bnRmKGJndy5iZ3dfdHlwZSwgQkdXX01BWExFTiwgImxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2Vy Iik7CiAKIAliZ3cuYmd3X3Jlc3RhcnRfdGltZSA9IEJHV19ORVZFUl9SRVNUQVJUOwogCWJndy5i Z3dfbm90aWZ5X3BpZCA9IE15UHJvY1BpZDsKIAliZ3cuYmd3X21haW5fYXJnID0gSW50MzJHZXRE YXR1bShzbG90KTsKIAorCWlmIChpc19wYXJhbGxlbF9hcHBseV93b3JrZXIpCisJCW1lbWNweShi Z3cuYmd3X2V4dHJhLCAmc3Vid29ya2VyX2RzbSwgc2l6ZW9mKGRzbV9oYW5kbGUpKTsKKwogCWlm ICghUmVnaXN0ZXJEeW5hbWljQmFja2dyb3VuZFdvcmtlcigmYmd3LCAmYmd3X2hhbmRsZSkpCiAJ ewogCQkvKiBGYWlsZWQgdG8gc3RhcnQgd29ya2VyLCBzbyBjbGVhbiB1cCB0aGUgd29ya2VyIHNs b3QuICovCkBAIC00MjIsMzMgKzQ3NCwyMiBAQCByZXRyeToKIAkJCQkoZXJyY29kZShFUlJDT0RF X0NPTkZJR1VSQVRJT05fTElNSVRfRVhDRUVERUQpLAogCQkJCSBlcnJtc2coIm91dCBvZiBiYWNr Z3JvdW5kIHdvcmtlciBzbG90cyIpLAogCQkJCSBlcnJoaW50KCJZb3UgbWlnaHQgbmVlZCB0byBp bmNyZWFzZSBtYXhfd29ya2VyX3Byb2Nlc3Nlcy4iKSkpOwotCQlyZXR1cm47CisJCXJldHVybiBm YWxzZTsKIAl9CiAKIAkvKiBOb3cgd2FpdCB1bnRpbCBpdCBhdHRhY2hlcy4gKi8KLQlXYWl0Rm9y UmVwbGljYXRpb25Xb3JrZXJBdHRhY2god29ya2VyLCBnZW5lcmF0aW9uLCBiZ3dfaGFuZGxlKTsK KwlyZXR1cm4gV2FpdEZvclJlcGxpY2F0aW9uV29ya2VyQXR0YWNoKHdvcmtlciwgZ2VuZXJhdGlv biwgYmd3X2hhbmRsZSk7CiB9CiAKIC8qCi0gKiBTdG9wIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9u IHdvcmtlciBmb3Igc3ViaWQvcmVsaWQsIGlmIGFueSwgYW5kIHdhaXQgdW50aWwKLSAqIGl0IGRl dGFjaGVzIGZyb20gdGhlIHNsb3QuCisgKiBJbnRlcm5hbCBmdW5jdGlvbiB0byBzdG9wIHRoZSB3 b3JrZXIgYW5kIHdhaXQgZm9yIGl0IHRvIGRpZS4KICAqLwotdm9pZAotbG9naWNhbHJlcF93b3Jr ZXJfc3RvcChPaWQgc3ViaWQsIE9pZCByZWxpZCkKK3N0YXRpYyB2b2lkCitsb2dpY2FscmVwX3dv cmtlcl9zdG9wX2ludGVybmFsKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcikKIHsKLQlMb2dpY2Fs UmVwV29ya2VyICp3b3JrZXI7CiAJdWludDE2CQlnZW5lcmF0aW9uOwogCi0JTFdMb2NrQWNxdWly ZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKLQotCXdvcmtlciA9IGxvZ2ljYWxy ZXBfd29ya2VyX2ZpbmQoc3ViaWQsIHJlbGlkLCBmYWxzZSk7Ci0KLQkvKiBObyB3b3JrZXIsIG5v dGhpbmcgdG8gZG8uICovCi0JaWYgKCF3b3JrZXIpCi0JewotCQlMV0xvY2tSZWxlYXNlKExvZ2lj YWxSZXBXb3JrZXJMb2NrKTsKLQkJcmV0dXJuOwotCX0KKwlBc3NlcnQoTFdMb2NrSGVsZEJ5TWVJ bk1vZGUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCkpOwogCiAJLyoKIAkgKiBSZW1l bWJlciB3aGljaCBnZW5lcmF0aW9uIHdhcyBvdXIgd29ya2VyIHNvIHdlIGNhbiBjaGVjayBpZiB3 aGF0IHdlIHNlZQpAQCAtNDg2LDEwICs1MjcsNyBAQCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wKE9p ZCBzdWJpZCwgT2lkIHJlbGlkKQogCQkgKiBkaWZmZXJlbnQsIG1lYW5pbmcgdGhhdCBhIGRpZmZl cmVudCB3b3JrZXIgaGFzIHRha2VuIHRoZSBzbG90LgogCQkgKi8KIAkJaWYgKCF3b3JrZXItPmlu X3VzZSB8fCB3b3JrZXItPmdlbmVyYXRpb24gIT0gZ2VuZXJhdGlvbikKLQkJewotCQkJTFdMb2Nr UmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CiAJCQlyZXR1cm47Ci0JCX0KIAogCQkvKiBX b3JrZXIgaGFzIGFzc2lnbmVkIHByb2MsIHNvIGl0IGhhcyBzdGFydGVkLiAqLwogCQlpZiAod29y a2VyLT5wcm9jKQpAQCAtNTIzLDYgKzU2MSw1MCBAQCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wKE9p ZCBzdWJpZCwgT2lkIHJlbGlkKQogCiAJCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxv Y2ssIExXX1NIQVJFRCk7CiAJfQorfQorCisvKgorICogU3RvcCB0aGUgbG9naWNhbCByZXBsaWNh dGlvbiB3b3JrZXIgZm9yIHN1YmlkL3JlbGlkLCBpZiBhbnksIGFuZCB3YWl0IHVudGlsCisgKiBp dCBkZXRhY2hlcyBmcm9tIHRoZSBzbG90LgorICovCit2b2lkCitsb2dpY2FscmVwX3dvcmtlcl9z dG9wKE9pZCBzdWJpZCwgT2lkIHJlbGlkKQoreworCUxvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcjsK KworCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CisKKwl3 b3JrZXIgPSBsb2dpY2FscmVwX3dvcmtlcl9maW5kKHN1YmlkLCByZWxpZCwgZmFsc2UpOworCisJ aWYgKHdvcmtlcikKKwl7CisJCUFzc2VydCghaXNQYXJhbGxlbEFwcGx5V29ya2VyKHdvcmtlcikp OworCQlsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKHdvcmtlcik7CisJfQorCisJTFdM b2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7Cit9CisKKy8qCisgKiBTdG9wIHRoZSBs b2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBpbnB1dCBzbG90 IG51bWJlciwKKyAqIGFuZCB3YWl0IHVudGlsIGl0IGRldGFjaGVzIGZyb20gdGhlIHNsb3QuCisg Ki8KK3ZvaWQKK2xvZ2ljYWxyZXBfd29ya2VyX3N0b3BfYnlfc2xvdChpbnQgc2xvdF9ubywgdWlu dDE2IGdlbmVyYXRpb24pCit7CisJTG9naWNhbFJlcFdvcmtlciAqd29ya2VyOworCisJQXNzZXJ0 KHNsb3Rfbm8gPj0gMCAmJiBzbG90X25vIDwgbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2Vy cyk7CisKKwlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOwor CisJd29ya2VyID0gJkxvZ2ljYWxSZXBDdHgtPndvcmtlcnNbc2xvdF9ub107CisKKwkvKgorCSAq IE9ubHkgc3RvcCB0aGUgd29ya2VyIGlmIHRoZSBnZW5lcmF0aW9uIG1hdGNoZXMgYW5kIHRoZSB3 b3JrZXIgaXMgYWxpdmUuCisJICovCisJaWYgKHdvcmtlci0+Z2VuZXJhdGlvbiA9PSBnZW5lcmF0 aW9uICYmIHdvcmtlci0+cHJvYykKKwkJbG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbCh3 b3JrZXIpOwogCiAJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CiB9CkBAIC01 OTUsMTEgKzY3NywzMiBAQCBsb2dpY2FscmVwX3dvcmtlcl9hdHRhY2goaW50IHNsb3QpCiB9CiAK IC8qCi0gKiBEZXRhY2ggdGhlIHdvcmtlciAoY2xlYW5zIHVwIHRoZSB3b3JrZXIgaW5mbykuCisg KiBTdG9wIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGlmIGFueSwgYW5kIGRldGFjaCB0aGUg bGVhZGVyIGFwcGx5IHdvcmtlcgorICogKGNsZWFucyB1cCB0aGUgd29ya2VyIGluZm8pLgogICov CiBzdGF0aWMgdm9pZAogbG9naWNhbHJlcF93b3JrZXJfZGV0YWNoKHZvaWQpCiB7CisJLyogU3Rv cCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4gKi8KKwlpZiAoYW1fbGVhZGVyX2FwcGx5X3dv cmtlcigpKQorCXsKKwkJTGlzdAkgICAqd29ya2VyczsKKwkJTGlzdENlbGwgICAqbGM7CisKKwkJ TFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKKworCQl3b3Jr ZXJzID0gbG9naWNhbHJlcF93b3JrZXJzX2ZpbmQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwg dHJ1ZSk7CisJCWZvcmVhY2gobGMsIHdvcmtlcnMpCisJCXsKKwkJCUxvZ2ljYWxSZXBXb3JrZXIg KncgPSAoTG9naWNhbFJlcFdvcmtlciAqKSBsZmlyc3QobGMpOworCisJCQlpZiAoaXNQYXJhbGxl bEFwcGx5V29ya2VyKHcpKQorCQkJCWxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwodyk7 CisJCX0KKworCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKKwl9CisKIAkv KiBCbG9jayBjb25jdXJyZW50IGFjY2Vzcy4gKi8KIAlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBX b3JrZXJMb2NrLCBMV19FWENMVVNJVkUpOwogCkBAIC02MjIsNiArNzI1LDggQEAgbG9naWNhbHJl cF93b3JrZXJfY2xlYW51cChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpCiAJd29ya2VyLT51c2Vy aWQgPSBJbnZhbGlkT2lkOwogCXdvcmtlci0+c3ViaWQgPSBJbnZhbGlkT2lkOwogCXdvcmtlci0+ cmVsaWQgPSBJbnZhbGlkT2lkOworCXdvcmtlci0+YXBwbHlfbGVhZGVyX3BpZCA9IEludmFsaWRQ aWQ7CisJd29ya2VyLT5wYXJhbGxlbF9hcHBseSA9IGZhbHNlOwogfQogCiAvKgpAQCAtNjUzLDYg Kzc1OCwxMiBAQCBsb2dpY2FscmVwX3dvcmtlcl9vbmV4aXQoaW50IGNvZGUsIERhdHVtIGFyZykK IAlpZiAoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCAhPSBOVUxMKQogCQlGaWxl U2V0RGVsZXRlQWxsKE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQpOwogCisJLyoK KwkgKiBSZWxlYXNlIGFsbCBzZXNzaW9uIGxldmVsIGxvY2tzIHRoYXQgY291bGQgYmUgaGVsZCBp biBwYXJhbGxlbCBhcHBseQorCSAqIG1vZGUuCisJICovCisJTG9ja1JlbGVhc2VBbGwoREVGQVVM VF9MT0NLTUVUSE9ELCB0cnVlKTsKKwogCUFwcGx5TGF1bmNoZXJXYWtldXAoKTsKIH0KIApAQCAt NjgxLDYgKzc5MiwzMyBAQCBsb2dpY2FscmVwX3N5bmNfd29ya2VyX2NvdW50KE9pZCBzdWJpZCkK IH0KIAogLyoKKyAqIENvdW50IHRoZSBudW1iZXIgb2YgcmVnaXN0ZXJlZCAoYnV0IG5vdCBuZWNl c3NhcmlseSBydW5uaW5nKSBwYXJhbGxlbCBhcHBseQorICogd29ya2VycyBmb3IgYSBzdWJzY3Jp cHRpb24uCisgKi8KK2ludAorbG9naWNhbHJlcF9wYXJhbGxlbF9hcHBseV93b3JrZXJfY291bnQo T2lkIHN1YmlkKQoreworCWludAkJCWk7CisJaW50CQkJcmVzID0gMDsKKworCUFzc2VydChMV0xv Y2tIZWxkQnlNZShMb2dpY2FsUmVwV29ya2VyTG9jaykpOworCisJLyoKKwkgKiBTY2FuIGFsbCBh dHRhY2hlZCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLCBvbmx5IGNvdW50aW5nIHRob3NlIHdoaWNo CisJICogaGF2ZSB0aGUgZ2l2ZW4gc3Vic2NyaXB0aW9uIGlkLgorCSAqLworCWZvciAoaSA9IDA7 IGkgPCBtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzOyBpKyspCisJeworCQlMb2dpY2Fs UmVwV29ya2VyICp3ID0gJkxvZ2ljYWxSZXBDdHgtPndvcmtlcnNbaV07CisKKwkJaWYgKHctPnN1 YmlkID09IHN1YmlkICYmIGlzUGFyYWxsZWxBcHBseVdvcmtlcih3KSkKKwkJCXJlcysrOworCX0K KworCXJldHVybiByZXM7Cit9CisKKy8qCiAgKiBBcHBseUxhdW5jaGVyU2htZW1TaXplCiAgKgkJ Q29tcHV0ZSBzcGFjZSBuZWVkZWQgZm9yIHJlcGxpY2F0aW9uIGxhdW5jaGVyIHNoYXJlZCBtZW1v cnkKICAqLwpAQCAtODY5LDcgKzEwMDcsNyBAQCBBcHBseUxhdW5jaGVyTWFpbihEYXR1bSBtYWlu X2FyZykKIAkJCQkJd2FpdF90aW1lID0gd2FsX3JldHJpZXZlX3JldHJ5X2ludGVydmFsOwogCiAJ CQkJCWxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChzdWItPmRiaWQsIHN1Yi0+b2lkLCBzdWItPm5h bWUsCi0JCQkJCQkJCQkJCSBzdWItPm93bmVyLCBJbnZhbGlkT2lkKTsKKwkJCQkJCQkJCQkJIHN1 Yi0+b3duZXIsIEludmFsaWRPaWQsIERTTV9IQU5ETEVfSU5WQUxJRCk7CiAJCQkJfQogCQkJfQog CkBAIC05NTIsNiArMTA5MCwxMCBAQCBwZ19zdGF0X2dldF9zdWJzY3JpcHRpb24oUEdfRlVOQ1RJ T05fQVJHUykKIAkJaWYgKE9pZElzVmFsaWQoc3ViaWQpICYmIHdvcmtlci5zdWJpZCAhPSBzdWJp ZCkKIAkJCWNvbnRpbnVlOwogCisJCS8qIFNraXAgaWYgdGhpcyBpcyBhIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciAqLworCQlpZiAoaXNQYXJhbGxlbEFwcGx5V29ya2VyKCZ3b3JrZXIpKQorCQkJY29u dGludWU7CisKIAkJd29ya2VyX3BpZCA9IHdvcmtlci5wcm9jLT5waWQ7CiAKIAkJdmFsdWVzWzBd ID0gT2JqZWN0SWRHZXREYXR1bSh3b3JrZXIuc3ViaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvbWVzb24uYnVpbGQKaW5kZXggNzczNTgzYS4uMjZiZmMwZSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9tZXNvbi5idWlsZAorKysgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL21lc29uLmJ1aWxkCkBAIC0xLDQgKzEsNSBAQAog YmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAorICAnYXBwbHlwYXJhbGxlbHdvcmtlci5jJywKICAg J2RlY29kZS5jJywKICAgJ2xhdW5jaGVyLmMnLAogICAnbG9naWNhbC5jJywKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jCmluZGV4IGYxMzRlNDQuLjgwZGVhMTIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYwpAQCAtMTA3NSwxMiArMTA3NSwy MSBAQCBSZXBsaWNhdGlvbk9yaWdpbkV4aXRDbGVhbnVwKGludCBjb2RlLCBEYXR1bSBhcmcpCiAg KiBhcnJheSBkb2Vzbid0IGhhdmUgdG8gYmUgc2VhcmNoZWQgd2hlbiBjYWxsaW5nCiAgKiByZXBs b3JpZ2luX3Nlc3Npb25fYWR2YW5jZSgpLgogICoKLSAqIE9idmlvdXNseSBvbmx5IG9uZSBzdWNo IGNhY2hlZCBvcmlnaW4gY2FuIGV4aXN0IHBlciBwcm9jZXNzIGFuZCB0aGUgY3VycmVudAorICog Tm9ybWFsbHkgb25seSBvbmUgc3VjaCBjYWNoZWQgb3JpZ2luIGNhbiBleGlzdCBwZXIgcHJvY2Vz cyBhbmQgdGhlIGN1cnJlbnQKICAqIGNhY2hlZCB2YWx1ZSBjYW4gb25seSBiZSBzZXQgYWdhaW4g YWZ0ZXIgdGhlIHByZXZpb3VzIHZhbHVlIGlzIHRvcm4gZG93bgogICogd2l0aCByZXBsb3JpZ2lu X3Nlc3Npb25fcmVzZXQoKS4KKyAqCisgKiBIb3dldmVyLCBpZiB0aGUgZnVuY3Rpb24gcGFyYW1l dGVyICdhY3F1aXJlZF9ieScgaXMgbm90IDAsIHdlIGFsbG93IHRoZQorICogcHJvY2VzcyB0byB1 c2UgdGhlIHNhbWUgc2xvdCBhbHJlYWR5IGFjcXVpcmVkIGJ5IGFub3RoZXIgcHJvY2Vzcy4gSXQn cyBzYWZlCisgKiBiZWNhdXNlIDEpIFRoZSBvbmx5IGNhbGxlciAocGFyYWxsZWwgYXBwbHkgd29y a2Vycykgd2lsbCBtYWludGFpbiB0aGUKKyAqIGNvbW1pdCBvcmRlciBieSBhbGxvd2luZyBvbmx5 IG9uZSBwcm9jZXNzIHRvIGNvbW1pdCBhdCBhIHRpbWUsIHNvIG5vIHR3bworICogd29ya2VycyB3 aWxsIGJlIG9wZXJhdGluZyBvbiB0aGUgc2FtZSBvcmlnaW4gYXQgdGhlIHNhbWUgdGltZSAoc2Vl IGNvbW1lbnRzCisgKiBpbiBsb2dpY2FsL3dvcmtlci5jKS4gMikgRXZlbiB0aG91Z2ggd2UgdHJ5 IHRvIGFkdmFuY2UgdGhlIHNlc3Npb24ncyBvcmlnaW4KKyAqIGNvbmN1cnJlbnRseSwgaXQncyBz YWZlIHRvIGRvIHNvIGFzIHdlIGNoYW5nZS9hZHZhbmNlIHRoZSBzZXNzaW9uX29yaWdpbgorICog TFNOcyB1bmRlciByZXBsaWNhdGVfc3RhdGUgTFdMb2NrLgogICovCiB2b2lkCi1yZXBsb3JpZ2lu X3Nlc3Npb25fc2V0dXAoUmVwT3JpZ2luSWQgbm9kZSkKK3JlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1 cChSZXBPcmlnaW5JZCBub2RlLCBpbnQgYWNxdWlyZWRfYnkpCiB7CiAJc3RhdGljIGJvb2wgcmVn aXN0ZXJlZF9jbGVhbnVwOwogCWludAkJCWk7CkBAIC0xMTIyLDcgKzExMzEsNyBAQCByZXBsb3Jp Z2luX3Nlc3Npb25fc2V0dXAoUmVwT3JpZ2luSWQgbm9kZSkKIAkJaWYgKGN1cnN0YXRlLT5yb2lk ZW50ICE9IG5vZGUpCiAJCQljb250aW51ZTsKIAotCQllbHNlIGlmIChjdXJzdGF0ZS0+YWNxdWly ZWRfYnkgIT0gMCkKKwkJZWxzZSBpZiAoY3Vyc3RhdGUtPmFjcXVpcmVkX2J5ICE9IDAgJiYgYWNx dWlyZWRfYnkgPT0gMCkKIAkJewogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJS Q09ERV9PQkpFQ1RfSU5fVVNFKSwKQEAgLTExNTMsNyArMTE2MiwxMSBAQCByZXBsb3JpZ2luX3Nl c3Npb25fc2V0dXAoUmVwT3JpZ2luSWQgbm9kZSkKIAogCUFzc2VydChzZXNzaW9uX3JlcGxpY2F0 aW9uX3N0YXRlLT5yb2lkZW50ICE9IEludmFsaWRSZXBPcmlnaW5JZCk7CiAKLQlzZXNzaW9uX3Jl cGxpY2F0aW9uX3N0YXRlLT5hY3F1aXJlZF9ieSA9IE15UHJvY1BpZDsKKwlpZiAoYWNxdWlyZWRf YnkgPT0gMCkKKwkJc2Vzc2lvbl9yZXBsaWNhdGlvbl9zdGF0ZS0+YWNxdWlyZWRfYnkgPSBNeVBy b2NQaWQ7CisJZWxzZSBpZiAoc2Vzc2lvbl9yZXBsaWNhdGlvbl9zdGF0ZS0+YWNxdWlyZWRfYnkg IT0gYWNxdWlyZWRfYnkpCisJCWVsb2coRVJST1IsICJjb3VsZCBub3QgZmluZCByZXBsaWNhdGlv biBzdGF0ZSBzbG90IGZvciByZXBsaWNhdGlvbiIKKwkJCSAib3JpZ2luIHdpdGggT0lEICV1IHdo aWNoIHdhcyBhY3F1aXJlZCBieSAlZCIsIG5vZGUsIGFjcXVpcmVkX2J5KTsKIAogCUxXTG9ja1Jl bGVhc2UoUmVwbGljYXRpb25PcmlnaW5Mb2NrKTsKIApAQCAtMTMzNyw3ICsxMzUwLDcgQEAgcGdf cmVwbGljYXRpb25fb3JpZ2luX3Nlc3Npb25fc2V0dXAoUEdfRlVOQ1RJT05fQVJHUykKIAogCW5h bWUgPSB0ZXh0X3RvX2NzdHJpbmcoKHRleHQgKikgRGF0dW1HZXRQb2ludGVyKFBHX0dFVEFSR19E QVRVTSgwKSkpOwogCW9yaWdpbiA9IHJlcGxvcmlnaW5fYnlfbmFtZShuYW1lLCBmYWxzZSk7Ci0J cmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbik7CisJcmVwbG9yaWdpbl9zZXNzaW9uX3Nl dHVwKG9yaWdpbiwgMCk7CiAKIAlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luID0gb3JpZ2luOwog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKaW5kZXggZmY4NTEzZS4uZDYx NjBlNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5j CisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwpAQCAtMTE2Mywx MCArMTE2MywxNCBAQCBsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIGlu LCBMb2dpY2FsUmVwQ29tbWl0RGF0YSAqY29tbWl0X2RhdGEpCiAvKgogICogV3JpdGUgU1RSRUFN IEFCT1JUIHRvIHRoZSBvdXRwdXQgc3RyZWFtLiBOb3RlIHRoYXQgeGlkIGFuZCBzdWJ4aWQgd2ls bCBiZQogICogc2FtZSBmb3IgdGhlIHRvcC1sZXZlbCB0cmFuc2FjdGlvbiBhYm9ydC4KKyAqCisg KiBJZiB3cml0ZV9hYm9ydF9pbmZvIGlzIHRydWUsIHNlbmQgdGhlIGFib3J0X2xzbiBhbmQgYWJv cnRfdGltZSBmaWVsZHMsCisgKiBvdGhlcndpc2UgZG9uJ3QuCiAgKi8KIHZvaWQKIGxvZ2ljYWxy ZXBfd3JpdGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gb3V0LCBUcmFuc2FjdGlvbklkIHhpZCwK LQkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgc3VieGlkKQorCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBz dWJ4aWQsIFhMb2dSZWNQdHIgYWJvcnRfbHNuLAorCQkJCQkJCSAgVGltZXN0YW1wVHogYWJvcnRf dGltZSwgYm9vbCB3cml0ZV9hYm9ydF9pbmZvKQogewogCXBxX3NlbmRieXRlKG91dCwgTE9HSUNB TF9SRVBfTVNHX1NUUkVBTV9BQk9SVCk7CiAKQEAgLTExNzUsMTkgKzExNzksNDAgQEAgbG9naWNh bHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBvdXQsIFRyYW5zYWN0aW9uSWQgeGlk LAogCS8qIHRyYW5zYWN0aW9uIElEICovCiAJcHFfc2VuZGludDMyKG91dCwgeGlkKTsKIAlwcV9z ZW5kaW50MzIob3V0LCBzdWJ4aWQpOworCisJaWYgKHdyaXRlX2Fib3J0X2luZm8pCisJeworCQlw cV9zZW5kaW50NjQob3V0LCBhYm9ydF9sc24pOworCQlwcV9zZW5kaW50NjQob3V0LCBhYm9ydF90 aW1lKTsKKwl9CiB9CiAKIC8qCiAgKiBSZWFkIFNUUkVBTSBBQk9SVCBmcm9tIHRoZSBvdXRwdXQg c3RyZWFtLgorICoKKyAqIElmIHJlYWRfYWJvcnRfaW5mbyBpcyB0cnVlLCByZWFkIHRoZSBhYm9y dF9sc24gYW5kIGFib3J0X3RpbWUgZmllbGRzLAorICogb3RoZXJ3aXNlIGRvbid0LgogICovCiB2 b2lkCi1sb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gaW4sIFRyYW5zYWN0 aW9uSWQgKnhpZCwKLQkJCQkJCQkgVHJhbnNhY3Rpb25JZCAqc3VieGlkKQorbG9naWNhbHJlcF9y ZWFkX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIGluLAorCQkJCQkJCSBMb2dpY2FsUmVwU3RyZWFt QWJvcnREYXRhICphYm9ydF9kYXRhLAorCQkJCQkJCSBib29sIHJlYWRfYWJvcnRfaW5mbykKIHsK LQlBc3NlcnQoeGlkICYmIHN1YnhpZCk7CisJQXNzZXJ0KGFib3J0X2RhdGEpOworCisJYWJvcnRf ZGF0YS0+eGlkID0gcHFfZ2V0bXNnaW50KGluLCA0KTsKKwlhYm9ydF9kYXRhLT5zdWJ4aWQgPSBw cV9nZXRtc2dpbnQoaW4sIDQpOwogCi0JKnhpZCA9IHBxX2dldG1zZ2ludChpbiwgNCk7Ci0JKnN1 YnhpZCA9IHBxX2dldG1zZ2ludChpbiwgNCk7CisJaWYgKHJlYWRfYWJvcnRfaW5mbykKKwl7CisJ CWFib3J0X2RhdGEtPmFib3J0X2xzbiA9IHBxX2dldG1zZ2ludDY0KGluKTsKKwkJYWJvcnRfZGF0 YS0+YWJvcnRfdGltZSA9IHBxX2dldG1zZ2ludDY0KGluKTsKKwl9CisJZWxzZQorCXsKKwkJYWJv cnRfZGF0YS0+YWJvcnRfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CisJCWFib3J0X2RhdGEtPmFi b3J0X3RpbWUgPSAwOworCX0KIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKaW5kZXggMzFmNzM4MS4uZGVkNDZhOSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKKysrIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKQEAgLTI4NDYs NyArMjg0Niw4IEBAIFJlb3JkZXJCdWZmZXJGaW5pc2hQcmVwYXJlZChSZW9yZGVyQnVmZmVyICpy YiwgVHJhbnNhY3Rpb25JZCB4aWQsCiAgKiBkaXNrLgogICovCiB2b2lkCi1SZW9yZGVyQnVmZmVy QWJvcnQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxz bikKK1Jlb3JkZXJCdWZmZXJBYm9ydChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4 aWQsIFhMb2dSZWNQdHIgbHNuLAorCQkJCSAgIFRpbWVzdGFtcFR6IGFib3J0X3RpbWUpCiB7CiAJ UmVvcmRlckJ1ZmZlclRYTiAqdHhuOwogCkBAIC0yODU3LDYgKzI4NTgsOCBAQCBSZW9yZGVyQnVm ZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRy IGxzbikKIAlpZiAodHhuID09IE5VTEwpCiAJCXJldHVybjsKIAorCXR4bi0+eGFjdF90aW1lLmFi b3J0X3RpbWUgPSBhYm9ydF90aW1lOworCiAJLyogRm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9ucyBu b3RpZnkgdGhlIHJlbW90ZSBub2RlIGFib3V0IHRoZSBhYm9ydC4gKi8KIAlpZiAocmJ0eG5faXNf c3RyZWFtZWQodHhuKSkKIAl7CkBAIC0yOTMxLDcgKzI5MzQsOCBAQCBSZW9yZGVyQnVmZmVyQWJv cnRPbGQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgb2xkZXN0UnVubmluZ1hpZCkK ICAqIHRvIHRoaXMgeGlkIG1pZ2h0IHJlLWNyZWF0ZSB0aGUgdHJhbnNhY3Rpb24gaW5jb21wbGV0 ZWx5LgogICovCiB2b2lkCi1SZW9yZGVyQnVmZmVyRm9yZ2V0KFJlb3JkZXJCdWZmZXIgKnJiLCBU cmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCitSZW9yZGVyQnVmZmVyRm9yZ2V0KFJl b3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24sCisJCQkJ CVRpbWVzdGFtcFR6IGFib3J0X3RpbWUpCiB7CiAJUmVvcmRlckJ1ZmZlclRYTiAqdHhuOwogCkBA IC0yOTQyLDYgKzI5NDYsOCBAQCBSZW9yZGVyQnVmZmVyRm9yZ2V0KFJlb3JkZXJCdWZmZXIgKnJi LCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCiAJaWYgKHR4biA9PSBOVUxMKQog CQlyZXR1cm47CiAKKwl0eG4tPnhhY3RfdGltZS5hYm9ydF90aW1lID0gYWJvcnRfdGltZTsKKwog CS8qIEZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbnMgbm90aWZ5IHRoZSByZW1vdGUgbm9kZSBhYm91 dCB0aGUgYWJvcnQuICovCiAJaWYgKHJidHhuX2lzX3N0cmVhbWVkKHR4bikpCiAJCXJiLT5zdHJl YW1fYWJvcnQocmIsIHR4biwgbHNuKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3RhYmxlc3luYy5jCmluZGV4IDk0ZTgxM2EuLjY0NGQ1ZTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwpAQCAtMTQsNyArMTQsNyBAQAogICoJICBUaGUg aW5pdGlhbCBkYXRhIHN5bmNocm9uaXphdGlvbiBpcyBkb25lIHNlcGFyYXRlbHkgZm9yIGVhY2gg dGFibGUsCiAgKgkgIGluIGEgc2VwYXJhdGUgYXBwbHkgd29ya2VyIHRoYXQgb25seSBmZXRjaGVz IHRoZSBpbml0aWFsIHNuYXBzaG90IGRhdGEKICAqCSAgZnJvbSB0aGUgcHVibGlzaGVyIGFuZCB0 aGVuIHN5bmNocm9uaXplcyB0aGUgcG9zaXRpb24gaW4gdGhlIHN0cmVhbSB3aXRoCi0gKgkgIHRo ZSBtYWluIGFwcGx5IHdvcmtlci4KKyAqCSAgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIuCiAgKgog ICoJICBUaGVyZSBhcmUgc2V2ZXJhbCByZWFzb25zIGZvciBkb2luZyB0aGUgc3luY2hyb25pemF0 aW9uIHRoaXMgd2F5OgogICoJICAgLSBJdCBhbGxvd3MgdXMgdG8gcGFyYWxsZWxpemUgdGhlIGlu aXRpYWwgZGF0YSBzeW5jaHJvbml6YXRpb24KQEAgLTE1Myw3ICsxNTMsNyBAQCBmaW5pc2hfc3lu Y193b3JrZXIodm9pZCkKIAkJCQkJZ2V0X3JlbF9uYW1lKE15TG9naWNhbFJlcFdvcmtlci0+cmVs aWQpKSkpOwogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JLyogRmluZCB0aGUgbWFp biBhcHBseSB3b3JrZXIgYW5kIHNpZ25hbCBpdC4gKi8KKwkvKiBGaW5kIHRoZSBsZWFkZXIgYXBw bHkgd29ya2VyIGFuZCBzaWduYWwgaXQuICovCiAJbG9naWNhbHJlcF93b3JrZXJfd2FrZXVwKE15 TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIEludmFsaWRPaWQpOwogCiAJLyogU3RvcCBncmFjZWZ1 bGx5ICovCkBAIC02MDksNyArNjA5LDggQEAgcHJvY2Vzc19zeW5jaW5nX3RhYmxlc19mb3JfYXBw bHkoWExvZ1JlY1B0ciBjdXJyZW50X2xzbikKIAkJCQkJCQkJCQkJCSBNeVN1YnNjcmlwdGlvbi0+ b2lkLAogCQkJCQkJCQkJCQkJIE15U3Vic2NyaXB0aW9uLT5uYW1lLAogCQkJCQkJCQkJCQkJIE15 TG9naWNhbFJlcFdvcmtlci0+dXNlcmlkLAotCQkJCQkJCQkJCQkJIHJzdGF0ZS0+cmVsaWQpOwor CQkJCQkJCQkJCQkJIHJzdGF0ZS0+cmVsaWQsCisJCQkJCQkJCQkJCQkgRFNNX0hBTkRMRV9JTlZB TElEKTsKIAkJCQkJCWhlbnRyeS0+bGFzdF9zdGFydF90aW1lID0gbm93OwogCQkJCQl9CiAJCQkJ fQpAQCAtNjMwLDYgKzYzMSwxMyBAQCBwcm9jZXNzX3N5bmNpbmdfdGFibGVzX2Zvcl9hcHBseShY TG9nUmVjUHRyIGN1cnJlbnRfbHNuKQogdm9pZAogcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhYTG9n UmVjUHRyIGN1cnJlbnRfbHNuKQogeworCS8qCisJICogU2tpcCBmb3IgcGFyYWxsZWwgYXBwbHkg d29ya2Vycy4gU2VlIHBhX2Nhbl9zdGFydCgpIGZvcgorCSAqIGRldGFpbHMuCisJICovCisJaWYg KGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCQlyZXR1cm47CisKIAlpZiAoYW1fdGFibGVz eW5jX3dvcmtlcigpKQogCQlwcm9jZXNzX3N5bmNpbmdfdGFibGVzX2Zvcl9zeW5jKGN1cnJlbnRf bHNuKTsKIAllbHNlCkBAIC0xMjQ3LDcgKzEyNTUsNyBAQCBMb2dpY2FsUmVwU3luY1RhYmxlU3Rh cnQoWExvZ1JlY1B0ciAqb3JpZ2luX3N0YXJ0cG9zKQogCiAJLyoKIAkgKiBIZXJlIHdlIHVzZSB0 aGUgc2xvdCBuYW1lIGluc3RlYWQgb2YgdGhlIHN1YnNjcmlwdGlvbiBuYW1lIGFzIHRoZQotCSAq IGFwcGxpY2F0aW9uX25hbWUsIHNvIHRoYXQgaXQgaXMgZGlmZmVyZW50IGZyb20gdGhlIG1haW4g YXBwbHkgd29ya2VyLAorCSAqIGFwcGxpY2F0aW9uX25hbWUsIHNvIHRoYXQgaXQgaXMgZGlmZmVy ZW50IGZyb20gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIsCiAJICogc28gdGhhdCBzeW5jaHJvbm91 cyByZXBsaWNhdGlvbiBjYW4gZGlzdGluZ3Vpc2ggdGhlbS4KIAkgKi8KIAlMb2dSZXBXb3JrZXJX YWxSY3ZDb25uID0KQEAgLTEyOTUsNyArMTMwMyw3IEBAIExvZ2ljYWxSZXBTeW5jVGFibGVTdGFy dChYTG9nUmVjUHRyICpvcmlnaW5fc3RhcnRwb3MpCiAJCSAqIHRpbWUgdGhpcyB0YWJsZXN5bmMg d2FzIGxhdW5jaGVkLgogCQkgKi8KIAkJb3JpZ2luaWQgPSByZXBsb3JpZ2luX2J5X25hbWUob3Jp Z2lubmFtZSwgZmFsc2UpOwotCQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQpOwor CQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQsIDApOwogCQlyZXBsb3JpZ2luX3Nl c3Npb25fb3JpZ2luID0gb3JpZ2luaWQ7CiAJCSpvcmlnaW5fc3RhcnRwb3MgPSByZXBsb3JpZ2lu X3Nlc3Npb25fZ2V0X3Byb2dyZXNzKGZhbHNlKTsKIApAQCAtMTQwNiw3ICsxNDE0LDcgQEAgTG9n aWNhbFJlcFN5bmNUYWJsZVN0YXJ0KFhMb2dSZWNQdHIgKm9yaWdpbl9zdGFydHBvcykKIAkJCQkJ CSAgIHRydWUgLyogZ28gYmFja3dhcmQgKi8gLCB0cnVlIC8qIFdBTCBsb2cgKi8gKTsKIAkJVW5s b2NrUmVsYXRpb25PaWQoUmVwbGljYXRpb25PcmlnaW5SZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVM b2NrKTsKIAotCQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQpOworCQlyZXBsb3Jp Z2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQsIDApOwogCQlyZXBsb3JpZ2luX3Nlc3Npb25fb3Jp Z2luID0gb3JpZ2luaWQ7CiAJfQogCWVsc2UKQEAgLTE0NjEsOCArMTQ2OSw4IEBAIGNvcHlfdGFi bGVfZG9uZToKIAlTcGluTG9ja1JlbGVhc2UoJk15TG9naWNhbFJlcFdvcmtlci0+cmVsbXV0ZXgp OwogCiAJLyoKLQkgKiBGaW5hbGx5LCB3YWl0IHVudGlsIHRoZSBtYWluIGFwcGx5IHdvcmtlciB0 ZWxscyB1cyB0byBjYXRjaCB1cCBhbmQgdGhlbgotCSAqIHJldHVybiB0byBsZXQgTG9naWNhbFJl cEFwcGx5TG9vcCBkbyBpdC4KKwkgKiBGaW5hbGx5LCB3YWl0IHVudGlsIHRoZSBsZWFkZXIgYXBw bHkgd29ya2VyIHRlbGxzIHVzIHRvIGNhdGNoIHVwIGFuZAorCSAqIHRoZW4gcmV0dXJuIHRvIGxl dCBMb2dpY2FsUmVwQXBwbHlMb29wIGRvIGl0LgogCSAqLwogCXdhaXRfZm9yX3dvcmtlcl9zdGF0 ZV9jaGFuZ2UoU1VCUkVMX1NUQVRFX0NBVENIVVApOwogCXJldHVybiBzbG90bmFtZTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IGU0OGEzZjUuLmYwOWM1YzIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysr IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMjIsOCArMjIs NTQgQEAKICAqIFNUUkVBTUVEIFRSQU5TQUNUSU9OUwogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiAgKiBTdHJlYW1lZCB0cmFuc2FjdGlvbnMgKGxhcmdlIHRyYW5zYWN0aW9ucyBleGNlZWRpbmcg YSBtZW1vcnkgbGltaXQgb24gdGhlCi0gKiB1cHN0cmVhbSkgYXJlIG5vdCBhcHBsaWVkIGltbWVk aWF0ZWx5LCBidXQgaW5zdGVhZCwgdGhlIGRhdGEgaXMgd3JpdHRlbgotICogdG8gdGVtcG9yYXJ5 IGZpbGVzIGFuZCB0aGVuIGFwcGxpZWQgYXQgb25jZSB3aGVuIHRoZSBmaW5hbCBjb21taXQgYXJy aXZlcy4KKyAqIHVwc3RyZWFtKSBhcmUgYXBwbGllZCB1c2luZyBvbmUgb2YgdHdvIGFwcHJvYWNo ZXM6CisgKgorICogMSkgUGFyYWxsZWwgYXBwbHkgd29ya2VycworICoKKyAqIElmIHN0cmVhbWlu ZyA9IHBhcmFsbGVsLCB3ZSBhc3NpZ24gYSBuZXcgcGFyYWxsZWwgYXBwbHkgd29ya2VyIChpZgor ICogYXZhaWxhYmxlKSBhcyBzb29uIGFzIHRoZSB4YWN0J3MgZmlyc3Qgc3RyZWFtIGlzIHJlY2Vp dmVkLiBUaGUgbGVhZGVyIGFwcGx5CisgKiB3b3JrZXIgd2lsbCBzZW5kIGNoYW5nZXMgdG8gdGhp cyBuZXcgd29ya2VyIHZpYSBzaGFyZWQgbWVtb3J5LiBXZSBrZWVwIHRoaXMKKyAqIHdvcmtlciBh c3NpZ25lZCB0aWxsIHRoZSB0cmFuc2FjdGlvbiBjb21taXQgaXMgcmVjZWl2ZWQgYW5kIGFsc28g d2FpdCBmb3IKKyAqIHRoZSB3b3JrZXIgdG8gZmluaXNoIGF0IGNvbW1pdC4gVGhpcyBwcmVzZXJ2 ZXMgY29tbWl0IG9yZGVyaW5nIGFuZCBhdm9pZHMKKyAqIGZpbGUgSS9PIGluIG1vc3QgY2FzZXMs IGFsdGhvdWdoIHdlIHN0aWxsIG5lZWQgdG8gc3BpbGwgdG8gYSBmaWxlIGlmIHRoZXJlCisgKiBp cyBubyB3b3JrZXIgYXZhaWxhYmxlLiBJdCBpcyBpbXBvcnRhbnQgdG8gbWFpbnRhaW4gY29tbWl0 IG9yZGVyIHRvIGF2b2lkCisgKiBmYWlsdXJlcyBkdWUgdG8gKGEpIHRyYW5zYWN0aW9uIGRlcGVu ZGVuY2llcywgc2F5IGlmIHdlIGluc2VydCBhIHJvdyBpbiB0aGUKKyAqIGZpcnN0IHRyYW5zYWN0 aW9uIGFuZCB1cGRhdGUgaXQgaW4gdGhlIHNlY29uZCB0cmFuc2FjdGlvbiB0aGVuIGFsbG93aW5n IHRvCisgKiBhcHBseSBib3RoIGluIHBhcmFsbGVsIGNhbiBsZWFkIHRvIGZhaWx1cmUgaW4gdGhl IHVwZGF0ZS4gKGIpIGRlYWRsb2NrcywKKyAqIGFsbG93aW5nIHRyYW5zYWN0aW9ucyB0aGF0IHVw ZGF0ZSB0aGUgc2FtZSBzZXQgb2Ygcm93cy90YWJsZXMgaW4gb3Bwb3NpdGUKKyAqIG9yZGVyIHRv IGJlIGFwcGxpZWQgaW4gcGFyYWxsZWwgY2FuIGxlYWQgdG8gZGVhZGxvY2tzLgorICoKKyAqIFdl IG1haW50YWluIGEgd29ya2VyIHBvb2wgdG8gYXZvaWQgcmVzdGFydGluZyB3b3JrZXJzIGZvciBl YWNoIHN0cmVhbWluZworICogdHJhbnNhY3Rpb24uIFdlIG1haW50YWluIGVhY2ggd29ya2VyJ3Mg aW5mb3JtYXRpb24gaW4gdGhlCisgKiBQYXJhbGxlbEFwcGx5V29ya2Vyc0xpc3QuIEFmdGVyIHN1 Y2Nlc3NmdWxseSBsYXVuY2hpbmcgYSBuZXcgd29ya2VyLCBpdHMKKyAqIGluZm9ybWF0aW9uIGlz IGFkZGVkIHRvIHRoZSBQYXJhbGxlbEFwcGx5V29ya2Vyc0xpc3QuIE9uY2UgdGhlIHdvcmtlcgor ICogZmluaXNoZXMgYXBwbHlpbmcgdGhlIHRyYW5zYWN0aW9uLCB3ZSBtYXJrIGl0IGF2YWlsYWJs ZSBmb3IgcmUtdXNlLiBOb3csCisgKiBiZWZvcmUgc3RhcnRpbmcgYSBuZXcgd29ya2VyIHRvIGFw cGx5IHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24sIHdlIGNoZWNrCisgKiB0aGUgbGlzdCBmb3Ig YW55IGF2YWlsYWJsZSB3b3JrZXIuIE5vdGUgdGhhdCB3ZSBtYWludGFpbiBhIG1heGltdW0gb2Yg aGFsZgorICogdGhlIG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24g d29ya2VycyBpbiB0aGUgcG9vbCBhbmQKKyAqIGFmdGVyIHRoYXQsIHdlIHNpbXBseSBleGl0IHRo ZSB3b3JrZXIgYWZ0ZXIgYXBwbHlpbmcgdGhlIHRyYW5zYWN0aW9uLgorICoKKyAqIFhYWCBUaGlz IHdvcmtlciBwb29sIHRocmVzaG9sZCBpcyBhIGJpdCBhcmJpdHJhcnkgYW5kIHdlIGNhbiBwcm92 aWRlIGEgR1VDCisgKiB2YXJpYWJsZSBmb3IgdGhpcyBpbiB0aGUgZnV0dXJlIGlmIHJlcXVpcmVk LgorICoKKyAqIFRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHdpbGwgY3JlYXRlIHNlcGFyYXRlIGR5 bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdtZW50CisgKiB3aGVuIGVhY2ggcGFyYWxsZWwgYXBwbHkg d29ya2VyIHN0YXJ0cy4gVGhlIHJlYXNvbiBmb3IgdGhpcyBkZXNpZ24gaXMgdGhhdAorICogd2Ug Y2Fubm90IGNvdW50IGhvdyBtYW55IHdvcmtlcnMgd2lsbCBiZSBzdGFydGVkLiBJdCBtYXkgYmUg cG9zc2libGUgdG8KKyAqIGFsbG9jYXRlIGVub3VnaCBzaGFyZWQgbWVtb3J5IGluIG9uZSBzZWdt ZW50IGJhc2VkIG9uIHRoZSBtYXhpbXVtIG51bWJlciBvZgorICogcGFyYWxsZWwgYXBwbHkgd29y a2VycyAobWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiksIGJ1dCB0 aGlzCisgKiB3b3VsZCB3YXN0ZSBtZW1vcnkgaWYgbm8gcHJvY2VzcyBpcyBhY3R1YWxseSBzdGFy dGVkLgorICoKKyAqIFRoZSBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudCB3aWxsIGNvbnRh aW4gKGEpIGEgc2htX21xIHRoYXQgaXMgdXNlZCB0bworICogc2VuZCBjaGFuZ2VzIGluIHRoZSB0 cmFuc2FjdGlvbiBmcm9tIGxlYWRlciBhcHBseSB3b3JrZXIgdG8gcGFyYWxsZWwgYXBwbHkKKyAq IHdvcmtlciAoYikgYW5vdGhlciBzaG1fbXEgdGhhdCBpcyB1c2VkIHRvIHNlbmQgZXJyb3JzIChh bmQgb3RoZXIgbWVzc2FnZXMKKyAqIHJlcG9ydGVkIHZpYSBlbG9nL2VyZXBvcnQpIGZyb20gdGhl IHBhcmFsbGVsIGFwcGx5IHdvcmtlciB0byBsZWFkZXIgYXBwbHkKKyAqIHdvcmtlciAoYykgbmVj ZXNzYXJ5IGluZm9ybWF0aW9uIHRvIGJlIHNoYXJlZCBhbW9uZyBwYXJhbGxlbCBhcHBseSB3b3Jr ZXJzCisgKiBhbmQgbGVhZGVyIGFwcGx5IHdvcmtlciAoaS5lLiBtZW1iZXJzIG9mIFBhcmFsbGVs QXBwbHlXb3JrZXJTaGFyZWQpLgorICoKKyAqIElmIG5vIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBp cyBhdmFpbGFibGUgdG8gaGFuZGxlIHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbgorICogd2UgZm9s bG93IGFwcHJvYWNoIDIuCisgKgorICogMikgV3JpdGUgdG8gdGVtcG9yYXJ5IGZpbGVzIGFuZCBh cHBseSB3aGVuIHRoZSBmaW5hbCBjb21taXQgYXJyaXZlcwogICoKICAqIFVubGlrZSB0aGUgcmVn dWxhciAobm9uLXN0cmVhbWVkKSBjYXNlLCBoYW5kbGluZyBzdHJlYW1lZCB0cmFuc2FjdGlvbnMg aGFzCiAgKiB0byBoYW5kbGUgYWJvcnRzIG9mIGJvdGggdGhlIHRvcGxldmVsIHRyYW5zYWN0aW9u IGFuZCBzdWJ0cmFuc2FjdGlvbnMuIFRoaXMKQEAgLTIxOSwyMCArMjY1LDM5IEBAIHR5cGVkZWYg c3RydWN0IEFwcGx5RXhlY3V0aW9uRGF0YQogCVBhcnRpdGlvblR1cGxlUm91dGluZyAqcHJvdXRl OwkvKiBwYXJ0aXRpb24gcm91dGluZyBpbmZvICovCiB9IEFwcGx5RXhlY3V0aW9uRGF0YTsKIAot LyogU3RydWN0IGZvciBzYXZpbmcgYW5kIHJlc3RvcmluZyBhcHBseSBlcnJjb250ZXh0IGluZm9y bWF0aW9uICovCi10eXBlZGVmIHN0cnVjdCBBcHBseUVycm9yQ2FsbGJhY2tBcmcKKy8qCisgKiBX aGF0IGFjdGlvbiB0byB0YWtlIGZvciB0aGUgdHJhbnNhY3Rpb24uCisgKgorICogVFJBTlNfTEVB REVSX0FQUExZOgorICogVGhlIGFjdGlvbiBtZWFucyB0aGF0IHdlIGFyZSBpbiB0aGUgbGVhZGVy IGFwcGx5IHdvcmtlciBhbmQgY2hhbmdlcyBvZiB0aGUKKyAqIHRyYW5zYWN0aW9uIGFyZSBhcHBs aWVkIGRpcmVjdGx5IGluIHRoZSB3b3JrZXIuCisgKgorICogVFJBTlNfTEVBREVSX1NFUklBTEla RToKKyAqIEl0IG1lYW5zIHRoYXQgd2UgYXJlIGluIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIG9y IHRhYmxlIHN5bmMgd29ya2VyLgorICogQ2hhbmdlcyBhcmUgd3JpdHRlbiB0byB0ZW1wb3Jhcnkg ZmlsZXMgYW5kIHRoZW4gYXBwbGllZCB3aGVuIHRoZSBmaW5hbAorICogY29tbWl0IGFycml2ZXMu CisgKgorICogVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CisgKiBUaGUgYWN0aW9uIG1l YW5zIHRoYXQgd2UgYXJlIGluIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBuZWVkIHRvIHNl bmQgdGhlCisgKiBjaGFuZ2VzIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisgKgorICog VFJBTlNfUEFSQUxMRUxfQVBQTFk6CisgKiBUaGUgYWN0aW9uIHRoYXQgd2UgYXJlIGluIHRoZSBw YXJhbGxlbCBhcHBseSB3b3JrZXIgYW5kIGNoYW5nZXMgb2YgdGhlCisgKiB0cmFuc2FjdGlvbiBh cmUgYXBwbGllZCBkaXJlY3RseSBpbiB0aGUgd29ya2VyLgorICovCit0eXBlZGVmIGVudW0KIHsK LQlMb2dpY2FsUmVwTXNnVHlwZSBjb21tYW5kOwkvKiAwIGlmIGludmFsaWQgKi8KLQlMb2dpY2Fs UmVwUmVsTWFwRW50cnkgKnJlbDsKKwkvKiBUaGUgYWN0aW9uIGZvciBub24tc3RyZWFtaW5nIHRy YW5zYWN0aW9ucy4gKi8KKwlUUkFOU19MRUFERVJfQVBQTFksCiAKLQkvKiBSZW1vdGUgbm9kZSBp bmZvcm1hdGlvbiAqLwotCWludAkJCXJlbW90ZV9hdHRudW07CS8qIC0xIGlmIGludmFsaWQgKi8K LQlUcmFuc2FjdGlvbklkIHJlbW90ZV94aWQ7Ci0JWExvZ1JlY1B0cglmaW5pc2hfbHNuOwotCWNo YXIJICAgKm9yaWdpbl9uYW1lOwotfSBBcHBseUVycm9yQ2FsbGJhY2tBcmc7CisJLyogQWN0aW9u cyBmb3Igc3RyZWFtaW5nIHRyYW5zYWN0aW9ucy4gKi8KKwlUUkFOU19MRUFERVJfU0VSSUFMSVpF LAorCVRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMLAorCVRSQU5TX1BBUkFMTEVMX0FQUExZ Cit9IFRyYW5zQXBwbHlBY3Rpb247CiAKLXN0YXRpYyBBcHBseUVycm9yQ2FsbGJhY2tBcmcgYXBw bHlfZXJyb3JfY2FsbGJhY2tfYXJnID0KKy8qIGVycmNvbnRleHQgdHJhY2tlciAqLworQXBwbHlF cnJvckNhbGxiYWNrQXJnIGFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZyA9CiB7CiAJLmNvbW1hbmQg PSAwLAogCS5yZWwgPSBOVUxMLApAQCAtMjQyLDcgKzMwNyw5IEBAIHN0YXRpYyBBcHBseUVycm9y Q2FsbGJhY2tBcmcgYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnID0KIAkub3JpZ2luX25hbWUgPSBO VUxMLAogfTsKIAotc3RhdGljIE1lbW9yeUNvbnRleHQgQXBwbHlNZXNzYWdlQ29udGV4dCA9IE5V TEw7CitFcnJvckNvbnRleHRDYWxsYmFjayAqYXBwbHlfZXJyb3JfY29udGV4dF9zdGFjayA9IE5V TEw7CisKK01lbW9yeUNvbnRleHQgQXBwbHlNZXNzYWdlQ29udGV4dCA9IE5VTEw7CiBNZW1vcnlD b250ZXh0IEFwcGx5Q29udGV4dCA9IE5VTEw7CiAKIC8qIHBlciBzdHJlYW0gY29udGV4dCBmb3Ig c3RyZWFtaW5nIHRyYW5zYWN0aW9ucyAqLwpAQCAtMjUxLDI3ICszMTgsMzYgQEAgc3RhdGljIE1l bW9yeUNvbnRleHQgTG9naWNhbFN0cmVhbWluZ0NvbnRleHQgPSBOVUxMOwogV2FsUmVjZWl2ZXJD b25uICpMb2dSZXBXb3JrZXJXYWxSY3ZDb25uID0gTlVMTDsKIAogU3Vic2NyaXB0aW9uICpNeVN1 YnNjcmlwdGlvbiA9IE5VTEw7Ci1zdGF0aWMgYm9vbCBNeVN1YnNjcmlwdGlvblZhbGlkID0gZmFs c2U7Citib29sCQlNeVN1YnNjcmlwdGlvblZhbGlkID0gZmFsc2U7CiAKIGJvb2wJCWluX3JlbW90 ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogc3RhdGljIFhMb2dSZWNQdHIgcmVtb3RlX2ZpbmFsX2xz biA9IEludmFsaWRYTG9nUmVjUHRyOwogCiAvKiBmaWVsZHMgdmFsaWQgb25seSB3aGVuIHByb2Nl c3Npbmcgc3RyZWFtZWQgdHJhbnNhY3Rpb24gKi8KLXN0YXRpYyBib29sIGluX3N0cmVhbWVkX3Ry YW5zYWN0aW9uID0gZmFsc2U7Citib29sCQlpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IGZhbHNl OwogCiBzdGF0aWMgVHJhbnNhY3Rpb25JZCBzdHJlYW1feGlkID0gSW52YWxpZFRyYW5zYWN0aW9u SWQ7CiAKIC8qCisgKiBUaGUgbnVtYmVyIG9mIGNoYW5nZXMgYXBwbGllZCBieSBwYXJhbGxlbCBh cHBseSB3b3JrZXIgZHVyaW5nIG9uZSBzdHJlYW1pbmcKKyAqIGJsb2NrLgorICovCitzdGF0aWMg dWludDMyIHBhcmFsbGVsX3N0cmVhbV9uY2hhbmdlcyA9IDA7CisKKy8qCiAgKiBXZSBlbmFibGUg c2tpcHBpbmcgYWxsIGRhdGEgbW9kaWZpY2F0aW9uIGNoYW5nZXMgKElOU0VSVCwgVVBEQVRFLCBl dGMuKSBmb3IKICAqIHRoZSBzdWJzY3JpcHRpb24gaWYgdGhlIHJlbW90ZSB0cmFuc2FjdGlvbidz IGZpbmlzaCBMU04gbWF0Y2hlcyB0aGUgc3Vic2tpcGxzbi4KICAqIE9uY2Ugd2Ugc3RhcnQgc2tp cHBpbmcgY2hhbmdlcywgd2UgZG9uJ3Qgc3RvcCBpdCB1bnRpbCB3ZSBza2lwIGFsbCBjaGFuZ2Vz IG9mCiAgKiB0aGUgdHJhbnNhY3Rpb24gZXZlbiBpZiBwZ19zdWJzY3JpcHRpb24gaXMgdXBkYXRl ZCBhbmQgTXlTdWJzY3JpcHRpb24tPnNraXBsc24KLSAqIGdldHMgY2hhbmdlZCBvciByZXNldCBk dXJpbmcgdGhhdC4gQWxzbywgaW4gc3RyZWFtaW5nIHRyYW5zYWN0aW9uIGNhc2VzLCB3ZQotICog ZG9uJ3Qgc2tpcCByZWNlaXZpbmcgYW5kIHNwb29saW5nIHRoZSBjaGFuZ2VzIHNpbmNlIHdlIGRl Y2lkZSB3aGV0aGVyIG9yIG5vdAorICogZ2V0cyBjaGFuZ2VkIG9yIHJlc2V0IGR1cmluZyB0aGF0 LiBBbHNvLCBpbiBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gY2FzZXMgKHN0cmVhbWluZyA9IG9uKSwK KyAqIHdlIGRvbid0IHNraXAgcmVjZWl2aW5nIGFuZCBzcG9vbGluZyB0aGUgY2hhbmdlcyBzaW5j ZSB3ZSBkZWNpZGUgd2hldGhlciBvciBub3QKICAqIHRvIHNraXAgYXBwbHlpbmcgdGhlIGNoYW5n ZXMgd2hlbiBzdGFydGluZyB0byBhcHBseSBjaGFuZ2VzLiBUaGUgc3Vic2tpcGxzbiBpcwogICog Y2xlYXJlZCBhZnRlciBzdWNjZXNzZnVsbHkgc2tpcHBpbmcgdGhlIHRyYW5zYWN0aW9uIG9yIGFw cGx5aW5nIG5vbi1lbXB0eQogICogdHJhbnNhY3Rpb24uIFRoZSBsYXR0ZXIgcHJldmVudHMgdGhl IG1pc3Rha2VubHkgc3BlY2lmaWVkIHN1YnNraXBsc24gZnJvbQotICogYmVpbmcgbGVmdC4KKyAq IGJlaW5nIGxlZnQuIE5vdGUgdGhhdCB3ZSBjYW5ub3Qgc2tpcCB0aGUgc3RyZWFtaW5nIHRyYW5z YWN0aW9ucyB3aGVuIHVzaW5nCisgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGJlY2F1c2Ugd2Ug Y2Fubm90IGdldCB0aGUgZmluaXNoIExTTiBiZWZvcmUgYXBwbHlpbmcKKyAqIHRoZSBjaGFuZ2Vz LiBTbywgd2UgZG9uJ3Qgc3RhcnQgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHdoZW4gZmluaXNoIExT TiBpcyBzZXQKKyAqIGJ5IHRoZSB1c2VyLgogICovCiBzdGF0aWMgWExvZ1JlY1B0ciBza2lwX3hh Y3RfZmluaXNoX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwogI2RlZmluZSBpc19za2lwcGluZ19j aGFuZ2VzKCkgKHVubGlrZWx5KCFYTG9nUmVjUHRySXNJbnZhbGlkKHNraXBfeGFjdF9maW5pc2hf bHNuKSkpCkBAIC0zMjEsMTMgKzM5Nyw4IEBAIHN0YXRpYyB2b2lkIHNlbmRfZmVlZGJhY2soWExv Z1JlY1B0ciByZWN2cG9zLCBib29sIGZvcmNlLCBib29sIHJlcXVlc3RSZXBseSk7CiAKIHN0YXRp YyB2b2lkIHN0b3JlX2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIgcmVtb3RlX2xzbik7CiAKLXN0 YXRpYyB2b2lkIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCk7Ci0KIHN0YXRpYyB2b2lk IERpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KHZvaWQpOwogCi0vKiBwcm90b3R5cGUgbmVlZGVk IGJlY2F1c2Ugb2Ygc3RyZWFtX2NvbW1pdCAqLwotc3RhdGljIHZvaWQgYXBwbHlfZGlzcGF0Y2go U3RyaW5nSW5mbyBzKTsKLQogc3RhdGljIHZvaWQgYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5h bChMb2dpY2FsUmVwQ29tbWl0RGF0YSAqY29tbWl0X2RhdGEpOwogc3RhdGljIHZvaWQgYXBwbHlf aGFuZGxlX2luc2VydF9pbnRlcm5hbChBcHBseUV4ZWN1dGlvbkRhdGEgKmVkYXRhLAogCQkJCQkJ CQkJCSBSZXN1bHRSZWxJbmZvICpyZWxpbmZvLApAQCAtMzYwLDEwICs0MzEsMTQgQEAgc3RhdGlj IHZvaWQgc3RvcF9za2lwcGluZ19jaGFuZ2VzKHZvaWQpOwogc3RhdGljIHZvaWQgY2xlYXJfc3Vi c2NyaXB0aW9uX3NraXBfbHNuKFhMb2dSZWNQdHIgZmluaXNoX2xzbik7CiAKIC8qIEZ1bmN0aW9u cyBmb3IgYXBwbHkgZXJyb3IgY2FsbGJhY2sgKi8KLXN0YXRpYyB2b2lkIGFwcGx5X2Vycm9yX2Nh bGxiYWNrKHZvaWQgKmFyZyk7CiBzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2FwcGx5X2Vycm9yX2Nv bnRleHRfeGFjdChUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pOwogc3RhdGljIGlu bGluZSB2b2lkIHJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbyh2b2lkKTsKIAorc3RhdGlj IFRyYW5zQXBwbHlBY3Rpb24gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihUcmFuc2FjdGlv bklkIHhpZCwKKwkJCQkJCQkJCQkJCQkgUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKip3aW5mbyk7 CisKK3N0YXRpYyBjb25zdCBjaGFyICpnZXRfd29ya2VyX25hbWUodm9pZCk7CisKIC8qCiAgKiBG b3JtIHRoZSBvcmlnaW4gbmFtZSBmb3IgdGhlIHN1YnNjcmlwdGlvbi4KICAqCkBAIC0zOTMsMTkg KzQ2OCw0MyBAQCBSZXBsaWNhdGlvbk9yaWdpbk5hbWVGb3JMb2dpY2FsUmVwKE9pZCBzdWJvaWQs IE9pZCByZWxpZCwKICAqCiAgKiBUaGlzIGlzIG1haW5seSBuZWVkZWQgZm9yIGluaXRpYWwgcmVs YXRpb24gZGF0YSBzeW5jIGFzIHRoYXQgcnVucyBpbgogICogc2VwYXJhdGUgd29ya2VyIHByb2Nl c3MgcnVubmluZyBpbiBwYXJhbGxlbCBhbmQgd2UgbmVlZCBzb21lIHdheSB0byBza2lwCi0gKiBj aGFuZ2VzIGNvbWluZyB0byB0aGUgbWFpbiBhcHBseSB3b3JrZXIgZHVyaW5nIHRoZSBzeW5jIG9m IGEgdGFibGUuCisgKiBjaGFuZ2VzIGNvbWluZyB0byB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBk dXJpbmcgdGhlIHN5bmMgb2YgYSB0YWJsZS4KICAqCiAgKiBOb3RlIHdlIG5lZWQgdG8gZG8gc21h bGxlciBvciBlcXVhbHMgY29tcGFyaXNvbiBmb3IgU1lOQ0RPTkUgc3RhdGUgYmVjYXVzZQogICog aXQgbWlnaHQgaG9sZCBwb3NpdGlvbiBvZiBlbmQgb2YgaW5pdGlhbCBzbG90IGNvbnNpc3RlbnQg cG9pbnQgV0FMCiAgKiByZWNvcmQgKyAxIChpZSBzdGFydCBvZiBuZXh0IHJlY29yZCkgYW5kIG5l eHQgcmVjb3JkIGNhbiBiZSBDT01NSVQgb2YKICAqIHRyYW5zYWN0aW9uIHdlIGFyZSBub3cgcHJv Y2Vzc2luZyAod2hpY2ggaXMgd2hhdCB3ZSBzZXQgcmVtb3RlX2ZpbmFsX2xzbgogICogdG8gaW4g YXBwbHlfaGFuZGxlX2JlZ2luKS4KKyAqCisgKiBOb3RlIHRoYXQgZm9yIHN0cmVhbWluZyB0cmFu c2FjdGlvbnMgdGhhdCBhcmUgYmVpbmcgYXBwbGllZCBpbiB0aGUgcGFyYWxsZWwKKyAqIGFwcGx5 IHdvcmtlciwgd2UgZGlzYWxsb3cgYXBwbHlpbmcgY2hhbmdlcyBvbiBhIHRhYmxlIHRoYXQgaXMg bm90IGluCisgKiB0aGUgUkVBRFkgc3RhdGUsIGJlY2F1c2Ugd2UgY2Fubm90IGRlY2lkZSB3aGV0 aGVyIHRvIGFwcGx5IHRoZSBjaGFuZ2UgYXMgd2UKKyAqIHdvbid0IGtub3cgcmVtb3RlX2ZpbmFs X2xzbiBieSB0aGF0IHRpbWUuCisgKgorICogV2UgYWxyZWFkeSBjaGVja2VkIHRoaXMgaW4gcGFf Y2FuX3N0YXJ0KCkgYmVmb3JlIGFzc2lnbmluZyB0aGUKKyAqIHN0cmVhbWluZyB0cmFuc2FjdGlv biB0byB0aGUgcGFyYWxsZWwgd29ya2VyLCBidXQgaXQgYWxzbyBuZWVkcyB0byBiZQorICogY2hl Y2tlZCBoZXJlIGJlY2F1c2UgaWYgdGhlIHVzZXIgZXhlY3V0ZXMgQUxURVIgU1VCU0NSSVBUSU9O IC4uLiBSRUZSRVNICisgKiBQVUJMSUNBVElPTiBpbiBwYXJhbGxlbCwgdGhlIG5ldyB0YWJsZSBj YW4gYmUgYWRkZWQgdG8gcGdfc3Vic2NyaXB0aW9uX3JlbAorICogd2hpbGUgYXBwbHlpbmcgdGhp cyB0cmFuc2FjdGlvbi4KICAqLwogc3RhdGljIGJvb2wKIHNob3VsZF9hcHBseV9jaGFuZ2VzX2Zv cl9yZWwoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWwpCiB7CiAJaWYgKGFtX3RhYmxlc3luY193 b3JrZXIoKSkKIAkJcmV0dXJuIE15TG9naWNhbFJlcFdvcmtlci0+cmVsaWQgPT0gcmVsLT5sb2Nh bHJlbG9pZDsKKwllbHNlIGlmIChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSkKKwl7CisJCWlm IChyZWwtPnN0YXRlICE9IFNVQlJFTF9TVEFURV9SRUFEWSkKKwkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAor CQkJLyogdHJhbnNsYXRvcjogZmlyc3QgJXMgaXMgdGhlIG5hbWUgb2YgbG9naWNhbCByZXBsaWNh dGlvbiB3b3JrZXIgKi8KKwkJCQkJIGVycm1zZygiJXMgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIg d2lsbCBzdG9wIiwKKwkJCQkJCQlnZXRfd29ya2VyX25hbWUoKSwgTXlTdWJzY3JpcHRpb24tPm5h bWUpLAorCQkJCQkgZXJyZGV0YWlsKCJDYW5ub3QgaGFuZGxlIHN0cmVhbWVkIHJlcGxpY2F0aW9u IHRyYW5zYWN0aW9ucyB1c2luZyBwYXJhbGxlbCAiCisJCQkJCQkJICAgImFwcGx5IHdvcmtlcnMg dW50aWwgYWxsIHRhYmxlcyBoYXZlIGJlZW4gc3luY2hyb25pemVkLiIpKSk7CisKKwkJcmV0dXJu IHRydWU7CisJfQogCWVsc2UKIAkJcmV0dXJuIChyZWwtPnN0YXRlID09IFNVQlJFTF9TVEFURV9S RUFEWSB8fAogCQkJCShyZWwtPnN0YXRlID09IFNVQlJFTF9TVEFURV9TWU5DRE9ORSAmJgpAQCAt NDUxLDQzICs1NTAsODYgQEAgZW5kX3JlcGxpY2F0aW9uX3N0ZXAodm9pZCkKIH0KIAogLyoKLSAq IEhhbmRsZSBzdHJlYW1lZCB0cmFuc2FjdGlvbnMuCisgKiBIYW5kbGUgc3RyZWFtZWQgdHJhbnNh Y3Rpb25zIGZvciBib3RoIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCB0aGUgcGFyYWxsZWwK KyAqIGFwcGx5IHdvcmtlcnMuCisgKgorICogSW4gc3RyZWFtaW5nIGNhc2UgKHJlY2VpdmluZyBh IGJsb2NrIG9mIHN0cmVhbWVkIHRyYW5zYWN0aW9uKSwgZm9yCisgKiBTVUJTVFJFQU1fT04gbW9k ZSwgc2ltcGx5IHJlZGlyZWN0IGl0IHRvIGEgZmlsZSBmb3IgdGhlIHByb3BlciB0b3BsZXZlbAor ICogdHJhbnNhY3Rpb24sIGFuZCBmb3IgU1VCU1RSRUFNX1BBUkFMTEVMIG1vZGUsIHNlbmQgdGhl IGNoYW5nZXMgdG8gcGFyYWxsZWwKKyAqIGFwcGx5IHdvcmtlcnMgKExPR0lDQUxfUkVQX01TR19S RUxBVElPTiBvciBMT0dJQ0FMX1JFUF9NU0dfVFlQRSBjaGFuZ2VzCisgKiB3aWxsIGJlIGFwcGxp ZWQgYnkgYm90aCBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBwYXJhbGxlbCBhcHBseSB3b3JrZXJz KS4KICAqCi0gKiBJZiBpbiBzdHJlYW1pbmcgbW9kZSAocmVjZWl2aW5nIGEgYmxvY2sgb2Ygc3Ry ZWFtZWQgdHJhbnNhY3Rpb24pLCB3ZQotICogc2ltcGx5IHJlZGlyZWN0IGl0IHRvIGEgZmlsZSBm b3IgdGhlIHByb3BlciB0b3BsZXZlbCB0cmFuc2FjdGlvbi4KKyAqIEZvciBub24tc3RyZWFtZWQg dHJhbnNhY3Rpb25zLCByZXR1cm5zIGZhbHNlLgorICogRm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9u cywgcmV0dXJucyB0cnVlIGlmIGluIGxlYWRlciBhcHBseSB3b3JrZXIsIGZhbHNlCisgKiBvdGhl cndpc2UuCiAgKgotICogUmV0dXJucyB0cnVlIGZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbnMsIGZh bHNlIG90aGVyd2lzZSAocmVndWxhciBtb2RlKS4KKyAqIEV4Y2VwdGlvbjogSWYgdGhlIG1lc3Nh Z2UgYmVpbmcgcHJvY2Vzc2VkIGlzIExPR0lDQUxfUkVQX01TR19SRUxBVElPTgorICogb3IgTE9H SUNBTF9SRVBfTVNHX1RZUEUsIHJldHVybiBmYWxzZSBldmVuIGlmIHRoZSBtZXNzYWdlIG5lZWRz IHRvIGJlIHNlbnQKKyAqIHRvIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgogICovCiBzdGF0aWMg Ym9vbAogaGFuZGxlX3N0cmVhbWVkX3RyYW5zYWN0aW9uKExvZ2ljYWxSZXBNc2dUeXBlIGFjdGlv biwgU3RyaW5nSW5mbyBzKQogewotCVRyYW5zYWN0aW9uSWQgeGlkOworCVRyYW5zYWN0aW9uSWQg Y3VycmVudF94aWQ7CisJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvOworCVRyYW5zQXBw bHlBY3Rpb24gYXBwbHlfYWN0aW9uOworCisJYXBwbHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9u X2FwcGx5X2FjdGlvbihzdHJlYW1feGlkLCAmd2luZm8pOwogCiAJLyogbm90IGluIHN0cmVhbWlu ZyBtb2RlICovCi0JaWYgKCFpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKKwlpZiAoYXBwbHlfYWN0 aW9uID09IFRSQU5TX0xFQURFUl9BUFBMWSkKIAkJcmV0dXJuIGZhbHNlOwogCi0JQXNzZXJ0KHN0 cmVhbV9mZCAhPSBOVUxMKTsKIAlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoc3RyZWFtX3hp ZCkpOwogCiAJLyoKIAkgKiBXZSBzaG91bGQgaGF2ZSByZWNlaXZlZCBYSUQgb2YgdGhlIHN1Ynhh Y3QgYXMgdGhlIGZpcnN0IHBhcnQgb2YgdGhlCiAJICogbWVzc2FnZSwgc28gZXh0cmFjdCBpdC4K IAkgKi8KLQl4aWQgPSBwcV9nZXRtc2dpbnQocywgNCk7CisJY3VycmVudF94aWQgPSBwcV9nZXRt c2dpbnQocywgNCk7CiAKLQlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkpCisJaWYgKCFU cmFuc2FjdGlvbklkSXNWYWxpZChjdXJyZW50X3hpZCkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJ KGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAogCQkJCSBlcnJtc2dfaW50ZXJu YWwoImludmFsaWQgdHJhbnNhY3Rpb24gSUQgaW4gc3RyZWFtZWQgcmVwbGljYXRpb24gdHJhbnNh Y3Rpb24iKSkpOwogCi0JLyogQWRkIHRoZSBuZXcgc3VieGFjdCB0byB0aGUgYXJyYXkgKHVubGVz cyBhbHJlYWR5IHRoZXJlKS4gKi8KLQlzdWJ4YWN0X2luZm9fYWRkKHhpZCk7CisJc3dpdGNoIChh cHBseV9hY3Rpb24pCisJeworCQljYXNlIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6CisJCQlBc3Nl cnQoc3RyZWFtX2ZkICE9IE5VTEwpOworCisJCQkvKiBBZGQgdGhlIG5ldyBzdWJ4YWN0IHRvIHRo ZSBhcnJheSAodW5sZXNzIGFscmVhZHkgdGhlcmUpLiAqLworCQkJc3VieGFjdF9pbmZvX2FkZChj dXJyZW50X3hpZCk7CiAKLQkvKiB3cml0ZSB0aGUgY2hhbmdlIHRvIHRoZSBjdXJyZW50IGZpbGUg Ki8KLQlzdHJlYW1fd3JpdGVfY2hhbmdlKGFjdGlvbiwgcyk7CisJCQkvKiBXcml0ZSB0aGUgY2hh bmdlIHRvIHRoZSBjdXJyZW50IGZpbGUgKi8KKwkJCXN0cmVhbV93cml0ZV9jaGFuZ2UoYWN0aW9u LCBzKTsKKwkJCXJldHVybiB0cnVlOwogCi0JcmV0dXJuIHRydWU7CisJCWNhc2UgVFJBTlNfTEVB REVSX1NFTkRfVE9fUEFSQUxMRUw6CisJCQlBc3NlcnQod2luZm8pOworCisJCQlwYV9zZW5kX2Rh dGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSk7CisKKwkJCS8qCisJCQkgKiBYWFggVGhlIHB1Ymxp c2hlciBzaWRlIGRvZXNuJ3QgYWx3YXlzIHNlbmQgcmVsYXRpb24vdHlwZSB1cGRhdGUKKwkJCSAq IG1lc3NhZ2VzIGFmdGVyIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24sIHNvIGFsc28gdXBkYXRl IHRoZQorCQkJICogcmVsYXRpb24vdHlwZSBpbiBsZWFkZXIgYXBwbHkgd29ya2VyLiBTZWUgZnVu Y3Rpb24KKwkJCSAqIGNsZWFudXBfcmVsX3N5bmNfY2FjaGUuCisJCQkgKi8KKwkJCXJldHVybiAo YWN0aW9uICE9IExPR0lDQUxfUkVQX01TR19SRUxBVElPTiAmJgorCQkJCQlhY3Rpb24gIT0gTE9H SUNBTF9SRVBfTVNHX1RZUEUpOworCisJCWNhc2UgVFJBTlNfUEFSQUxMRUxfQVBQTFk6CisJCQlw YXJhbGxlbF9zdHJlYW1fbmNoYW5nZXMgKz0gMTsKKworCQkJLyogRGVmaW5lIGEgc2F2ZXBvaW50 IGZvciBhIHN1YnhhY3QgaWYgbmVlZGVkLiAqLworCQkJcGFfc3RhcnRfc3VidHJhbnMoY3VycmVu dF94aWQsIHN0cmVhbV94aWQpOworCQkJcmV0dXJuIGZhbHNlOworCisJCWRlZmF1bHQ6CisJCQlB c3NlcnQoZmFsc2UpOworCQkJcmV0dXJuIGZhbHNlOwkJLyogc2lsZW5jZSBjb21waWxlciB3YXJu aW5nICovCisJfQogfQogCiAvKgpAQCAtOTIzLDggKzEwNjUsMTEgQEAgYXBwbHlfaGFuZGxlX3By ZXBhcmVfaW50ZXJuYWwoTG9naWNhbFJlcFByZXBhcmVkVHhuRGF0YSAqcHJlcGFyZV9kYXRhKQog CSAqIEJlZ2luVHJhbnNhY3Rpb25CbG9jayBpcyBuZWNlc3NhcnkgdG8gYmFsYW5jZSB0aGUgRW5k VHJhbnNhY3Rpb25CbG9jawogCSAqIGNhbGxlZCB3aXRoaW4gdGhlIFByZXBhcmVUcmFuc2FjdGlv bkJsb2NrIGJlbG93LgogCSAqLwotCUJlZ2luVHJhbnNhY3Rpb25CbG9jaygpOwotCUNvbW1pdFRy YW5zYWN0aW9uQ29tbWFuZCgpOyAvKiBDb21wbGV0ZXMgdGhlIHByZWNlZGluZyBCZWdpbiBjb21t YW5kLiAqLworCWlmICghSXNUcmFuc2FjdGlvbkJsb2NrKCkpCisJeworCQlCZWdpblRyYW5zYWN0 aW9uQmxvY2soKTsKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7IC8qIENvbXBsZXRlcyB0 aGUgcHJlY2VkaW5nIEJlZ2luIGNvbW1hbmQuICovCisJfQogCiAJLyoKIAkgKiBVcGRhdGUgb3Jp Z2luIHN0YXRlIHNvIHdlIGNhbiByZXN0YXJ0IHN0cmVhbWluZyBmcm9tIGNvcnJlY3QgcG9zaXRp b24KQEAgLTk5Myw2ICsxMTM4LDEyIEBAIGFwcGx5X2hhbmRsZV9wcmVwYXJlKFN0cmluZ0luZm8g cykKIAogLyoKICAqIEhhbmRsZSBhIENPTU1JVCBQUkVQQVJFRCBvZiBhIHByZXZpb3VzbHkgUFJF UEFSRUQgdHJhbnNhY3Rpb24uCisgKgorICogTm90ZSB0aGF0IHdlIGRvbid0IG5lZWQgdG8gd2Fp dCBoZXJlIGlmIHRoZSB0cmFuc2FjdGlvbiB3YXMgcHJlcGFyZWQgaW4gYQorICogcGFyYWxsZWwg YXBwbHkgd29ya2VyLiBJbiB0aGF0IGNhc2UsIHdlIGhhdmUgYWxyZWFkeSB3YWl0ZWQgZm9yIHRo ZSBwcmVwYXJlCisgKiB0byBmaW5pc2ggaW4gYXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVwYXJlKCkg d2hpY2ggd2lsbCBlbnN1cmUgYWxsIHRoZQorICogb3BlcmF0aW9ucyBpbiB0aGF0IHRyYW5zYWN0 aW9uIGhhdmUgaGFwcGVuZWQgaW4gdGhlIHN1YnNjcmliZXIsIHNvIG5vCisgKiBjb25jdXJyZW50 IHRyYW5zYWN0aW9uIGNhbiBjYXVzZSBkZWFkbG9jayBvciB0cmFuc2FjdGlvbiBkZXBlbmRlbmN5 IGlzc3Vlcy4KICAqLwogc3RhdGljIHZvaWQKIGFwcGx5X2hhbmRsZV9jb21taXRfcHJlcGFyZWQo U3RyaW5nSW5mbyBzKQpAQCAtMTAzNiw2ICsxMTg3LDEyIEBAIGFwcGx5X2hhbmRsZV9jb21taXRf cHJlcGFyZWQoU3RyaW5nSW5mbyBzKQogCiAvKgogICogSGFuZGxlIGEgUk9MTEJBQ0sgUFJFUEFS RUQgb2YgYSBwcmV2aW91c2x5IFBSRVBBUkVEIFRSQU5TQUNUSU9OLgorICoKKyAqIE5vdGUgdGhh dCB3ZSBkb24ndCBuZWVkIHRvIHdhaXQgaGVyZSBpZiB0aGUgdHJhbnNhY3Rpb24gd2FzIHByZXBh cmVkIGluIGEKKyAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gSW4gdGhhdCBjYXNlLCB3ZSBoYXZl IGFscmVhZHkgd2FpdGVkIGZvciB0aGUgcHJlcGFyZQorICogdG8gZmluaXNoIGluIGFwcGx5X2hh bmRsZV9zdHJlYW1fcHJlcGFyZSgpIHdoaWNoIHdpbGwgZW5zdXJlIGFsbCB0aGUKKyAqIG9wZXJh dGlvbnMgaW4gdGhhdCB0cmFuc2FjdGlvbiBoYXZlIGhhcHBlbmVkIGluIHRoZSBzdWJzY3JpYmVy LCBzbyBubworICogY29uY3VycmVudCB0cmFuc2FjdGlvbiBjYW4gY2F1c2UgZGVhZGxvY2sgb3Ig dHJhbnNhY3Rpb24gZGVwZW5kZW5jeSBpc3N1ZXMuCiAgKi8KIHN0YXRpYyB2b2lkCiBhcHBseV9o YW5kbGVfcm9sbGJhY2tfcHJlcGFyZWQoU3RyaW5nSW5mbyBzKQpAQCAtMTA4OSwxNSArMTI0Niwx MyBAQCBhcHBseV9oYW5kbGVfcm9sbGJhY2tfcHJlcGFyZWQoU3RyaW5nSW5mbyBzKQogCiAvKgog ICogSGFuZGxlIFNUUkVBTSBQUkVQQVJFLgotICoKLSAqIExvZ2ljIGlzIGluIHR3byBwYXJ0czoK LSAqIDEuIFJlcGxheSBhbGwgdGhlIHNwb29sZWQgb3BlcmF0aW9ucwotICogMi4gTWFyayB0aGUg dHJhbnNhY3Rpb24gYXMgcHJlcGFyZWQKICAqLwogc3RhdGljIHZvaWQKIGFwcGx5X2hhbmRsZV9z dHJlYW1fcHJlcGFyZShTdHJpbmdJbmZvIHMpCiB7CiAJTG9naWNhbFJlcFByZXBhcmVkVHhuRGF0 YSBwcmVwYXJlX2RhdGE7CisJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvOworCVRyYW5z QXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOwogCiAJaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9u KQogCQllcmVwb3J0KEVSUk9SLApAQCAtMTExMywyNCArMTI2OCw4MiBAQCBhcHBseV9oYW5kbGVf c3RyZWFtX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCWxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fcHJl cGFyZShzLCAmcHJlcGFyZV9kYXRhKTsKIAlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHBy ZXBhcmVfZGF0YS54aWQsIHByZXBhcmVfZGF0YS5wcmVwYXJlX2xzbik7CiAKLQllbG9nKERFQlVH MSwgInJlY2VpdmVkIHByZXBhcmUgZm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9uICV1IiwgcHJlcGFy ZV9kYXRhLnhpZCk7CisJYXBwbHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlv bihwcmVwYXJlX2RhdGEueGlkLCAmd2luZm8pOwogCi0JLyogUmVwbGF5IGFsbCB0aGUgc3Bvb2xl ZCBvcGVyYXRpb25zLiAqLwotCWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMocHJlcGFyZV9kYXRhLnhp ZCwgcHJlcGFyZV9kYXRhLnByZXBhcmVfbHNuKTsKKwlzd2l0Y2ggKGFwcGx5X2FjdGlvbikKKwl7 CisJCWNhc2UgVFJBTlNfTEVBREVSX1NFUklBTElaRToKIAotCS8qIE1hcmsgdGhlIHRyYW5zYWN0 aW9uIGFzIHByZXBhcmVkLiAqLwotCWFwcGx5X2hhbmRsZV9wcmVwYXJlX2ludGVybmFsKCZwcmVw YXJlX2RhdGEpOworCQkJLyoKKwkJCSAqIFRoZSB0cmFuc2FjdGlvbiBoYXMgYmVlbiBzZXJpYWxp emVkIHRvIGZpbGUsIHNvIHJlcGxheSBhbGwgdGhlCisJCQkgKiBzcG9vbGVkIG9wZXJhdGlvbnMu CisJCQkgKi8KKwkJCWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMocHJlcGFyZV9kYXRhLnhpZCwgcHJl cGFyZV9kYXRhLnByZXBhcmVfbHNuKTsKIAotCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwor CQkJLyogTWFyayB0aGUgdHJhbnNhY3Rpb24gYXMgcHJlcGFyZWQuICovCisJCQlhcHBseV9oYW5k bGVfcHJlcGFyZV9pbnRlcm5hbCgmcHJlcGFyZV9kYXRhKTsKIAotCXBnc3RhdF9yZXBvcnRfc3Rh dChmYWxzZSk7CisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCXN0b3JlX2ZsdXNo X3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKKwkJCXN0b3JlX2ZsdXNoX3Bvc2l0aW9u KHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKIAotCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNl OworCQkJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CisKKwkJCS8qIFVubGluayB0aGUg ZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5mby4gKi8KKwkJCXN0 cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHByZXBhcmVfZGF0 YS54aWQpOworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExF TDoKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCS8qCisJCQkgKiBVbmxvY2sgdGhlIHNoYXJlZCBv YmplY3QgbG9jayBzbyB0aGF0IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBjYW4KKwkJCSAqIGNvbnRp bnVlIHRvIHJlY2VpdmUgYW5kIGFwcGx5IGNoYW5nZXMuCisJCQkgKi8KKwkJCXBhX3VubG9ja19z dHJlYW0od2luZm8tPnNoYXJlZC0+eGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKworCQkJLyog U2VuZCBTVFJFQU0gUFJFUEFSRSBtZXNzYWdlIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIu ICovCisJCQlwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSk7CisKKwkJCS8qCisJ CQkgKiBBZnRlciBzZW5kaW5nIHRoZSBkYXRhIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIs IHdhaXQgZm9yCisJCQkgKiB0aGF0IHdvcmtlciB0byBmaW5pc2guIFRoaXMgaXMgbmVjZXNzYXJ5 IHRvIG1haW50YWluIGNvbW1pdAorCQkJICogb3JkZXIgd2hpY2ggYXZvaWRzIGZhaWx1cmVzIGR1 ZSB0byB0cmFuc2FjdGlvbiBkZXBlbmRlbmNpZXMgYW5kCisJCQkgKiBkZWFkbG9ja3MuCisJCQkg Ki8KKwkJCXBhX3dhaXRfZm9yX3hhY3RfZmluaXNoKHdpbmZvLT5zaGFyZWQpOworCQkJKHZvaWQp IHBhX2ZyZWVfd29ya2VyKHdpbmZvLCBwcmVwYXJlX2RhdGEueGlkKTsKKworCQkJaW5fcmVtb3Rl X3RyYW5zYWN0aW9uID0gZmFsc2U7CisKKwkJCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVf ZGF0YS5lbmRfbHNuKTsKKwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNfUEFSQUxMRUxfQVBQTFk6 CisJCQliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CiAKLQkvKiB1bmxpbmsgdGhlIGZpbGVzIHdp dGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCi0Jc3RyZWFtX2NsZWFu dXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgcHJlcGFyZV9kYXRhLnhpZCk7CisJ CQkvKiBNYXJrIHRoZSB0cmFuc2FjdGlvbiBhcyBwcmVwYXJlZC4gKi8KKwkJCWFwcGx5X2hhbmRs ZV9wcmVwYXJlX2ludGVybmFsKCZwcmVwYXJlX2RhdGEpOworCisJCQllbmRfcmVwbGljYXRpb25f c3RlcCgpOworCisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQkJbGlzdF9mcmVl KHN1YnhhY3RsaXN0KTsKKwkJCXN1YnhhY3RsaXN0ID0gTklMOworCisJCQlwYV9zZXRfeGFjdF9z dGF0ZShNeVBhcmFsbGVsU2hhcmVkLCBQQVJBTExFTF9UUkFOU19GSU5JU0hFRCk7CisJCQlwYV91 bmxvY2tfdHJhbnNhY3Rpb24oTXlQYXJhbGxlbFNoYXJlZC0+eGlkLCBBY2Nlc3NTaGFyZUxvY2sp OworCisJCQllbG9nKERFQlVHMSwgImZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9u IGZpbmlzaCBjb21tYW5kIik7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJQXNzZXJ0KGZh bHNlKTsKKwkJCWJyZWFrOworCX0KKworCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxzZSk7CiAKIAkv KiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFs bGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMocHJlcGFyZV9kYXRhLmVuZF9sc24pOwpA QCAtMTE2NywyOCArMTM4MCwyOSBAQCBhcHBseV9oYW5kbGVfb3JpZ2luKFN0cmluZ0luZm8gcykK IAkJCQkgZXJybXNnX2ludGVybmFsKCJPUklHSU4gbWVzc2FnZSBzZW50IG91dCBvZiBvcmRlciIp KSk7CiB9CiAKKworCiAvKgogICogSGFuZGxlIFNUUkVBTSBTVEFSVCBtZXNzYWdlLgorICoKKyAq IFhYWCBXZSBjYW4gYXZvaWQgc2VuZGluZyBwYWlycyBvZiB0aGUgU1RBUlQvU1RPUCBtZXNzYWdl cyB0byB0aGUgcGFyYWxsZWwKKyAqIHdvcmtlciBiZWNhdXNlIHVubGlrZSBhcHBseSB3b3JrZXIg aXQgd2lsbCBwcm9jZXNzIG9ubHkgb25lIHRyYW5zYWN0aW9uIGF0IGEKKyAqIHRpbWUuIEhvd2V2 ZXIsIGl0IGlzIG5vdCBjbGVhciB3aGV0aGVyIGFueSBvcHRpbWl6YXRpb24gaXMgd29ydGh3aGls ZQorICogYmVjYXVzZSB0aGVzZSBtZXNzYWdlcyBhcmUgc2VudCBvbmx5IHdoZW4gdGhlIGxvZ2lj YWxfZGVjb2Rpbmdfd29ya19tZW0KKyAqIHRocmVzaG9sZCBpcyBleGNlZWRlZC4KICAqLwogc3Rh dGljIHZvaWQKIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RhcnQoU3RyaW5nSW5mbyBzKQogewogCWJv b2wJCWZpcnN0X3NlZ21lbnQ7CisJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvOworCVRy YW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOwogCiAJaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0 aW9uKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklP TEFUSU9OKSwKIAkJCQkgZXJybXNnX2ludGVybmFsKCJkdXBsaWNhdGUgU1RSRUFNIFNUQVJUIG1l c3NhZ2UiKSkpOwogCi0JLyoKLQkgKiBTdGFydCBhIHRyYW5zYWN0aW9uIG9uIHN0cmVhbSBzdGFy dCwgdGhpcyB0cmFuc2FjdGlvbiB3aWxsIGJlIGNvbW1pdHRlZAotCSAqIG9uIHRoZSBzdHJlYW0g c3RvcCB1bmxlc3MgaXQgaXMgYSB0YWJsZXN5bmMgd29ya2VyIGluIHdoaWNoIGNhc2UgaXQKLQkg KiB3aWxsIGJlIGNvbW1pdHRlZCBhZnRlciBwcm9jZXNzaW5nIGFsbCB0aGUgbWVzc2FnZXMuIFdl IG5lZWQgdGhlCi0JICogdHJhbnNhY3Rpb24gZm9yIGhhbmRsaW5nIHRoZSBidWZmaWxlLCB1c2Vk IGZvciBzZXJpYWxpemluZyB0aGUKLQkgKiBzdHJlYW1pbmcgZGF0YSBhbmQgc3VieGFjdCBpbmZv LgotCSAqLwotCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAoKTsKLQogCS8qIG5vdGlmeSBoYW5kbGUg bWV0aG9kcyB3ZSdyZSBwcm9jZXNzaW5nIGEgcmVtb3RlIHRyYW5zYWN0aW9uICovCiAJaW5fc3Ry ZWFtZWRfdHJhbnNhY3Rpb24gPSB0cnVlOwogCkBAIC0xMjAzLDM1ICsxNDE3LDk5IEBAIGFwcGx5 X2hhbmRsZV9zdHJlYW1fc3RhcnQoU3RyaW5nSW5mbyBzKQogCXNldF9hcHBseV9lcnJvcl9jb250 ZXh0X3hhY3Qoc3RyZWFtX3hpZCwgSW52YWxpZFhMb2dSZWNQdHIpOwogCiAJLyoKLQkgKiBJbml0 aWFsaXplIHRoZSB3b3JrZXIncyBzdHJlYW1fZmlsZXNldCBpZiB3ZSBoYXZlbid0IHlldC4gVGhp cyB3aWxsIGJlCi0JICogdXNlZCBmb3IgdGhlIGVudGlyZSBkdXJhdGlvbiBvZiB0aGUgd29ya2Vy IHNvIGNyZWF0ZSBpdCBpbiBhIHBlcm1hbmVudAotCSAqIGNvbnRleHQuIFdlIGNyZWF0ZSB0aGlz IG9uIHRoZSB2ZXJ5IGZpcnN0IHN0cmVhbWluZyBtZXNzYWdlIGZyb20gYW55Ci0JICogdHJhbnNh Y3Rpb24gYW5kIHRoZW4gdXNlIGl0IGZvciB0aGlzIGFuZCBvdGhlciBzdHJlYW1pbmcgdHJhbnNh Y3Rpb25zLgotCSAqIE5vdywgd2UgY291bGQgY3JlYXRlIGEgZmlsZXNldCBhdCB0aGUgc3RhcnQg b2YgdGhlIHdvcmtlciBhcyB3ZWxsIGJ1dAotCSAqIHRoZW4gd2Ugd29uJ3QgYmUgc3VyZSB0aGF0 IGl0IHdpbGwgZXZlciBiZSB1c2VkLgorCSAqIEZvciB0aGUgZmlyc3Qgc3RyZWFtIHN0YXJ0LCBj aGVjayBpZiB0aGVyZSBpcyBhbnkgZnJlZSBwYXJhbGxlbCBhcHBseQorCSAqIHdvcmtlciB3ZSBj YW4gdXNlIHRvIHByb2Nlc3MgdGhpcyB0cmFuc2FjdGlvbiwgb3RoZXJ3aXNlIHRyeSB0byBzdGFy dCBhCisJICogbmV3IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KIAkgKi8KLQlpZiAoTXlMb2dpY2Fs UmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCA9PSBOVUxMKQorCWlmIChmaXJzdF9zZWdtZW50KQor CQlwYV9zdGFydF93b3JrZXIoc3RyZWFtX3hpZCk7CisKKwlhcHBseV9hY3Rpb24gPSBnZXRfdHJh bnNhY3Rpb25fYXBwbHlfYWN0aW9uKHN0cmVhbV94aWQsICZ3aW5mbyk7CisKKwlzd2l0Y2ggKGFw cGx5X2FjdGlvbikKIAl7Ci0JCU1lbW9yeUNvbnRleHQgb2xkY3R4OworCQljYXNlIFRSQU5TX0xF QURFUl9TRVJJQUxJWkU6CiAKLQkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5 Q29udGV4dCk7CisJCQkvKgorCQkJICogU3RhcnQgYSB0cmFuc2FjdGlvbiBvbiBzdHJlYW0gc3Rh cnQsIHRoaXMgdHJhbnNhY3Rpb24gd2lsbCBiZQorCQkJICogY29tbWl0dGVkIG9uIHRoZSBzdHJl YW0gc3RvcCB1bmxlc3MgaXQgaXMgYSB0YWJsZXN5bmMgd29ya2VyIGluCisJCQkgKiB3aGljaCBj YXNlIGl0IHdpbGwgYmUgY29tbWl0dGVkIGFmdGVyIHByb2Nlc3NpbmcgYWxsIHRoZQorCQkJICog bWVzc2FnZXMuIFdlIG5lZWQgdGhlIHRyYW5zYWN0aW9uIGZvciBoYW5kbGluZyB0aGUgYnVmZmls ZSwKKwkJCSAqIHVzZWQgZm9yIHNlcmlhbGl6aW5nIHRoZSBzdHJlYW1pbmcgZGF0YSBhbmQgc3Vi eGFjdCBpbmZvLgorCQkJICovCisJCQliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CiAKLQkJTXlM b2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCA9IHBhbGxvYyhzaXplb2YoRmlsZVNldCkp OwotCQlGaWxlU2V0SW5pdChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0KTsKKwkJ CS8qCisJCQkgKiBJbml0aWFsaXplIHRoZSB3b3JrZXIncyBzdHJlYW1fZmlsZXNldCBpZiB3ZSBo YXZlbid0IHlldC4gVGhpcworCQkJICogd2lsbCBiZSB1c2VkIGZvciB0aGUgZW50aXJlIGR1cmF0 aW9uIG9mIHRoZSB3b3JrZXIgc28gY3JlYXRlIGl0CisJCQkgKiBpbiBhIHBlcm1hbmVudCBjb250 ZXh0LiBXZSBjcmVhdGUgdGhpcyBvbiB0aGUgdmVyeSBmaXJzdAorCQkJICogc3RyZWFtaW5nIG1l c3NhZ2UgZnJvbSBhbnkgdHJhbnNhY3Rpb24gYW5kIHRoZW4gdXNlIGl0IGZvciB0aGlzCisJCQkg KiBhbmQgb3RoZXIgc3RyZWFtaW5nIHRyYW5zYWN0aW9ucy4gTm93LCB3ZSBjb3VsZCBjcmVhdGUg YQorCQkJICogZmlsZXNldCBhdCB0aGUgc3RhcnQgb2YgdGhlIHdvcmtlciBhcyB3ZWxsIGJ1dCB0 aGVuIHdlIHdvbid0IGJlCisJCQkgKiBzdXJlIHRoYXQgaXQgd2lsbCBldmVyIGJlIHVzZWQuCisJ CQkgKi8KKwkJCWlmIChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0ID09IE5VTEwp CisJCQl7CisJCQkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CiAKLQkJTWVtb3J5Q29udGV4dFN3aXRj aFRvKG9sZGN0eCk7Ci0JfQorCQkJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBs eUNvbnRleHQpOworCisJCQkJTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCA9IHBh bGxvYyhzaXplb2YoRmlsZVNldCkpOworCQkJCUZpbGVTZXRJbml0KE15TG9naWNhbFJlcFdvcmtl ci0+c3RyZWFtX2ZpbGVzZXQpOwogCi0JLyogb3BlbiB0aGUgc3Bvb2wgZmlsZSBmb3IgdGhpcyB0 cmFuc2FjdGlvbiAqLwotCXN0cmVhbV9vcGVuX2ZpbGUoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJp ZCwgc3RyZWFtX3hpZCwgZmlyc3Rfc2VnbWVudCk7CisJCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRv KG9sZGN0eCk7CisJCQl9CiAKLQkvKiBpZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3Qgc2VnbWVudCwg b3BlbiBleGlzdGluZyBzdWJ4YWN0IGZpbGUgKi8KLQlpZiAoIWZpcnN0X3NlZ21lbnQpCi0JCXN1 YnhhY3RfaW5mb19yZWFkKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOwor CQkJLyogT3BlbiB0aGUgc3Bvb2wgZmlsZSBmb3IgdGhpcyB0cmFuc2FjdGlvbi4gKi8KKwkJCXN0 cmVhbV9vcGVuX2ZpbGUoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCwgZmly c3Rfc2VnbWVudCk7CiAKLQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX1JVTk5JTkcsIE5V TEwpOworCQkJLyogSWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IHNlZ21lbnQsIG9wZW4gZXhpc3Rp bmcgc3VieGFjdCBmaWxlLiAqLworCQkJaWYgKCFmaXJzdF9zZWdtZW50KQorCQkJCXN1YnhhY3Rf aW5mb19yZWFkKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOwogCi0JZW5k X3JlcGxpY2F0aW9uX3N0ZXAoKTsKKwkJCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7CisJCQlicmVh azsKKworCQljYXNlIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgorCQkJQXNzZXJ0KHdp bmZvKTsKKworCQkJLyoKKwkJCSAqIFVubG9jayB0aGUgc2hhcmVkIG9iamVjdCBsb2NrIHNvIHRo YXQgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcgorCQkJICogY2FuIGNvbnRpbnVlIHRvIHJlY2Vp dmUgY2hhbmdlcy4KKwkJCSAqLworCQkJaWYgKCFmaXJzdF9zZWdtZW50KQorCQkJCXBhX3VubG9j a19zdHJlYW0od2luZm8tPnNoYXJlZC0+eGlkLAorCQkJCQkJCQkJCQkgQWNjZXNzRXhjbHVzaXZl TG9jayk7CisKKwkJCS8qCisJCQkgKiBJbmNyZW1lbnQgdGhlIG51bWJlciBvZiBtZXNzYWdlcyB3 YWl0aW5nIHRvIGJlIHByb2Nlc3NlZCBieQorCQkJICogcGFyYWxsZWwgYXBwbHkgd29ya2VyLgor CQkJICovCisJCQlwZ19hdG9taWNfYWRkX2ZldGNoX3UzMigmKHdpbmZvLT5zaGFyZWQtPnBlbmRp bmdfbWVzc2FnZV9jb3VudCksIDEpOworCisJCQlwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwg cy0+ZGF0YSk7CisKKwkJCS8qIENhY2hlIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZm9yIHRo aXMgdHJhbnNhY3Rpb24uICovCisJCQlzdHJlYW1fYXBwbHlfd29ya2VyID0gd2luZm87CisJCQli cmVhazsKKworCQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZOgorCQkJaWYgKGZpcnN0X3NlZ21l bnQpCisJCQl7CisJCQkJLyogSG9sZCB0aGUgbG9jayB1bnRpbCB0aGUgZW5kIG9mIHRoZSB0cmFu c2FjdGlvbi4gKi8KKwkJCQlwYV9sb2NrX3RyYW5zYWN0aW9uKE15UGFyYWxsZWxTaGFyZWQtPnhp ZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCQlwYV9zZXRfeGFjdF9zdGF0ZShNeVBhcmFsbGVsU2hh cmVkLCBQQVJBTExFTF9UUkFOU19TVEFSVEVEKTsKKwkJCX0KKworCQkJcGFyYWxsZWxfc3RyZWFt X25jaGFuZ2VzID0gMDsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlBc3NlcnQoZmFsc2Up OworCQkJYnJlYWs7CisJfQorCisJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9SVU5OSU5H LCBOVUxMKTsKIH0KIAogLyoKQEAgLTEyNDAsNTggKzE1MTgsOTcgQEAgYXBwbHlfaGFuZGxlX3N0 cmVhbV9zdGFydChTdHJpbmdJbmZvIHMpCiBzdGF0aWMgdm9pZAogYXBwbHlfaGFuZGxlX3N0cmVh bV9zdG9wKFN0cmluZ0luZm8gcykKIHsKKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87 CisJVHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CisKIAlpZiAoIWluX3N0cmVhbWVkX3Ry YW5zYWN0aW9uKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9D T0xfVklPTEFUSU9OKSwKIAkJCQkgZXJybXNnX2ludGVybmFsKCJTVFJFQU0gU1RPUCBtZXNzYWdl IHdpdGhvdXQgU1RSRUFNIFNUQVJUIikpKTsKIAotCS8qCi0JICogQ2xvc2UgdGhlIGZpbGUgd2l0 aCBzZXJpYWxpemVkIGNoYW5nZXMsIGFuZCBzZXJpYWxpemUgaW5mb3JtYXRpb24gYWJvdXQKLQkg KiBzdWJ4YWN0cyBmb3IgdGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uLgotCSAqLwotCXN1YnhhY3Rf aW5mb193cml0ZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkKTsKLQlzdHJl YW1fY2xvc2VfZmlsZSgpOworCWFwcGx5X2FjdGlvbiA9IGdldF90cmFuc2FjdGlvbl9hcHBseV9h Y3Rpb24oc3RyZWFtX3hpZCwgJndpbmZvKTsKIAotCS8qIFdlIG11c3QgYmUgaW4gYSB2YWxpZCB0 cmFuc2FjdGlvbiBzdGF0ZSAqLwotCUFzc2VydChJc1RyYW5zYWN0aW9uU3RhdGUoKSk7CisJc3dp dGNoIChhcHBseV9hY3Rpb24pCisJeworCQljYXNlIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6CiAK LQkvKiBDb21taXQgdGhlIHBlci1zdHJlYW0gdHJhbnNhY3Rpb24gKi8KLQlDb21taXRUcmFuc2Fj dGlvbkNvbW1hbmQoKTsKKwkJCS8qCisJCQkgKiBDbG9zZSB0aGUgZmlsZSB3aXRoIHNlcmlhbGl6 ZWQgY2hhbmdlcywgYW5kIHNlcmlhbGl6ZQorCQkJICogaW5mb3JtYXRpb24gYWJvdXQgc3VieGFj dHMgZm9yIHRoZSB0b3BsZXZlbCB0cmFuc2FjdGlvbi4KKwkJCSAqLworCQkJc3VieGFjdF9pbmZv X3dyaXRlKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOworCQkJc3RyZWFt X2Nsb3NlX2ZpbGUoKTsKIAotCWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gZmFsc2U7CisJCQkv KiBXZSBtdXN0IGJlIGluIGEgdmFsaWQgdHJhbnNhY3Rpb24gc3RhdGUgKi8KKwkJCUFzc2VydChJ c1RyYW5zYWN0aW9uU3RhdGUoKSk7CiAKLQkvKiBSZXNldCBwZXItc3RyZWFtIGNvbnRleHQgKi8K LQlNZW1vcnlDb250ZXh0UmVzZXQoTG9naWNhbFN0cmVhbWluZ0NvbnRleHQpOworCQkJLyogQ29t bWl0IHRoZSBwZXItc3RyZWFtIHRyYW5zYWN0aW9uICovCisJCQlDb21taXRUcmFuc2FjdGlvbkNv bW1hbmQoKTsKKworCQkJLyogUmVzZXQgcGVyLXN0cmVhbSBjb250ZXh0ICovCisJCQlNZW1vcnlD b250ZXh0UmVzZXQoTG9naWNhbFN0cmVhbWluZ0NvbnRleHQpOworCisJCQlwZ3N0YXRfcmVwb3J0 X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5VTEwpOworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19M RUFERVJfU0VORF9UT19QQVJBTExFTDoKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCS8qCisJCQkg KiBMb2NrIGJlZm9yZSBzZW5kaW5nIHRoZSBTVFJFQU1fU1RPUCBtZXNzYWdlIHNvIHRoYXQgdGhl IGxlYWRlcgorCQkJICogY2FuIGhvbGQgdGhlIGxvY2sgZmlyc3QgYW5kIHRoZSBwYXJhbGxlbCBh cHBseSB3b3JrZXIgd2lsbCB3YWl0CisJCQkgKiBmb3IgbGVhZGVyIHRvIHJlbGVhc2UgdGhlIGxv Y2suCisJCQkgKi8KKwkJCXBhX2xvY2tfc3RyZWFtKHdpbmZvLT5zaGFyZWQtPnhpZCwgQWNjZXNz RXhjbHVzaXZlTG9jayk7CisKKwkJCXBhX3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRh KTsKKworCQkJc3RyZWFtX2FwcGx5X3dvcmtlciA9IE5VTEw7CisKKwkJCXBnc3RhdF9yZXBvcnRf YWN0aXZpdHkoU1RBVEVfSURMRSwgTlVMTCk7CisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX1BB UkFMTEVMX0FQUExZOgorCQkJZWxvZyhERUJVRzEsICJhcHBsaWVkICV1IGNoYW5nZXMgaW4gdGhl IHN0cmVhbWluZyBjaHVuayIsCisJCQkJIHBhcmFsbGVsX3N0cmVhbV9uY2hhbmdlcyk7CisKKwkJ CS8qCisJCQkgKiBCeSB0aGUgdGltZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaXMgcHJvY2Vzc2lu ZyB0aGUgY2hhbmdlcyBpbgorCQkJICogdGhlIGN1cnJlbnQgc3RyZWFtaW5nIGJsb2NrLCB0aGUg bGVhZGVyIGFwcGx5IHdvcmtlciBtYXkgaGF2ZQorCQkJICogc2VudCBtdWx0aXBsZSBzdHJlYW1p bmcgYmxvY2tzLiBTbywgdHJ5IHRvIGxvY2sgb25seSBpZiB0aGVyZQorCQkJICogaXMgbm8gbWVz c2FnZSBsZWZ0IGluIHRoZSBxdWV1ZS4KKwkJCSAqLworCQkJaWYgKHBnX2F0b21pY19zdWJfZmV0 Y2hfdTMyKCYoTXlQYXJhbGxlbFNoYXJlZC0+cGVuZGluZ19tZXNzYWdlX2NvdW50KSwgMSkgPT0g MCkKKwkJCXsKKwkJCQlwYV9sb2NrX3N0cmVhbShNeVBhcmFsbGVsU2hhcmVkLT54aWQsIEFjY2Vz c1NoYXJlTG9jayk7CisJCQkJcGFfdW5sb2NrX3N0cmVhbShNeVBhcmFsbGVsU2hhcmVkLT54aWQs IEFjY2Vzc1NoYXJlTG9jayk7CisJCQl9CisKKwkJCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RB VEVfSURMRUlOVFJBTlNBQ1RJT04sIE5VTEwpOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJ CUFzc2VydChmYWxzZSk7CisJCQlicmVhazsKKwl9CisKKwlpbl9zdHJlYW1lZF90cmFuc2FjdGlv biA9IGZhbHNlOwogCi0JcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBOVUxMKTsK IAlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKIH0KIAogLyoKLSAqIEhhbmRsZSBT VFJFQU0gYWJvcnQgbWVzc2FnZS4KKyAqIEhhbmRsZSBTVFJFQU0gQUJPUlQgbWVzc2FnZSB3aGVu IHRoZSB0cmFuc2FjdGlvbiB3YXMgc3BpbGxlZCB0byBkaXNrLgogICovCiBzdGF0aWMgdm9pZAot YXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCitzZXJpYWxpemVfc3RyZWFt X2Fib3J0KFRyYW5zYWN0aW9uSWQgeGlkLCBUcmFuc2FjdGlvbklkIHN1YnhpZCkKIHsKLQlUcmFu c2FjdGlvbklkIHhpZDsKLQlUcmFuc2FjdGlvbklkIHN1YnhpZDsKLQotCWlmIChpbl9zdHJlYW1l ZF90cmFuc2FjdGlvbikKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX1BS T1RPQ09MX1ZJT0xBVElPTiksCi0JCQkJIGVycm1zZ19pbnRlcm5hbCgiU1RSRUFNIEFCT1JUIG1l c3NhZ2Ugd2l0aG91dCBTVFJFQU0gU1RPUCIpKSk7Ci0KLQlsb2dpY2FscmVwX3JlYWRfc3RyZWFt X2Fib3J0KHMsICZ4aWQsICZzdWJ4aWQpOwotCiAJLyoKIAkgKiBJZiB0aGUgdHdvIFhJRHMgYXJl IHRoZSBzYW1lLCBpdCdzIGluIGZhY3QgYWJvcnQgb2YgdG9wbGV2ZWwgeGFjdCwgc28KIAkgKiBq dXN0IGRlbGV0ZSB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGluZm8uCiAJICovCiAJaWYgKHhp ZCA9PSBzdWJ4aWQpCi0JewotCQlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHhpZCwgSW52 YWxpZFhMb2dSZWNQdHIpOwogCQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3Jr ZXItPnN1YmlkLCB4aWQpOwotCX0KIAllbHNlCiAJewogCQkvKgpAQCAtMTMxNSw4ICsxNjMyLDYg QEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCiAJCWJvb2wJCWZvdW5k ID0gZmFsc2U7CiAJCWNoYXIJCXBhdGhbTUFYUEdQQVRIXTsKIAotCQlzZXRfYXBwbHlfZXJyb3Jf Y29udGV4dF94YWN0KHN1YnhpZCwgSW52YWxpZFhMb2dSZWNQdHIpOwotCiAJCXN1YmlkeCA9IC0x OwogCQliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CiAJCXN1YnhhY3RfaW5mb19yZWFkKE15TG9n aWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7CkBAIC0xMzQxLDcgKzE2NTYsNiBAQCBhcHBseV9o YW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIAkJCWNsZWFudXBfc3VieGFjdF9pbmZv KCk7CiAJCQllbmRfcmVwbGljYXRpb25fc3RlcCgpOwogCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21t YW5kKCk7Ci0JCQlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKIAkJCXJldHVybjsK IAkJfQogCkBAIC0xMzY0LDYgKzE2NzgsOTcgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydChT dHJpbmdJbmZvIHMpCiAJCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7CiAJCUNvbW1pdFRyYW5zYWN0 aW9uQ29tbWFuZCgpOwogCX0KK30KKworLyoKKyAqIEhhbmRsZSBTVFJFQU0gQUJPUlQgbWVzc2Fn ZS4KKyAqLworc3RhdGljIHZvaWQKK2FwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5m byBzKQoreworCVRyYW5zYWN0aW9uSWQgeGlkOworCVRyYW5zYWN0aW9uSWQgc3VieGlkOworCUxv Z2ljYWxSZXBTdHJlYW1BYm9ydERhdGEgYWJvcnRfZGF0YTsKKwlQYXJhbGxlbEFwcGx5V29ya2Vy SW5mbyAqd2luZm87CisJVHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CisJYm9vbAkJYWJv cnRfdG9wbGV2ZWxfdHJhbnNhY3Rpb247CisKKwlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24p CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJ T04pLAorCQkJCSBlcnJtc2dfaW50ZXJuYWwoIlNUUkVBTSBBQk9SVCBtZXNzYWdlIHdpdGhvdXQg U1RSRUFNIFNUT1AiKSkpOworCisJLyogV2UgcmVjZWl2ZSBhYm9ydCBpbmZvcm1hdGlvbiBvbmx5 IHdoZW4gd2UgY2FuIGFwcGx5IGluIHBhcmFsbGVsLiAqLworCWxvZ2ljYWxyZXBfcmVhZF9zdHJl YW1fYWJvcnQocywgJmFib3J0X2RhdGEsCisJCQkJCQkJCSBNeUxvZ2ljYWxSZXBXb3JrZXItPnBh cmFsbGVsX2FwcGx5KTsKKworCXhpZCA9IGFib3J0X2RhdGEueGlkOworCXN1YnhpZCA9IGFib3J0 X2RhdGEuc3VieGlkOworCWFib3J0X3RvcGxldmVsX3RyYW5zYWN0aW9uID0gKHhpZCA9PSBzdWJ4 aWQpOworCisJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChzdWJ4aWQsIGFib3J0X2RhdGEu YWJvcnRfbHNuKTsKKworCWFwcGx5X2FjdGlvbiA9IGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rp b24oeGlkLCAmd2luZm8pOworCisJc3dpdGNoIChhcHBseV9hY3Rpb24pCisJeworCQljYXNlIFRS QU5TX0xFQURFUl9TRVJJQUxJWkU6CisKKwkJCS8qCisJCQkgKiBXZSBhcmUgaW4gdGhlIGxlYWRl ciBhcHBseSB3b3JrZXIgYW5kIHRoZSB0cmFuc2FjdGlvbiBoYXMgYmVlbgorCQkJICogc2VyaWFs aXplZCB0byBmaWxlLgorCQkJICovCisJCQlzZXJpYWxpemVfc3RyZWFtX2Fib3J0KHhpZCwgc3Vi eGlkKTsKKwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6 CisJCQlBc3NlcnQod2luZm8pOworCisJCQkvKgorCQkJICogSW5jcmVtZW50IHRoZSBudW1iZXIg b2YgbWVzc2FnZXMgd2FpdGluZyB0byBiZSBwcm9jZXNzZWQgYnkKKwkJCSAqIHBhcmFsbGVsIGFw cGx5IHdvcmtlci4KKwkJCSAqLworCQkJaWYgKCFhYm9ydF90b3BsZXZlbF90cmFuc2FjdGlvbikK KwkJCQlwZ19hdG9taWNfYWRkX2ZldGNoX3UzMigmKHdpbmZvLT5zaGFyZWQtPnBlbmRpbmdfbWVz c2FnZV9jb3VudCksIDEpOworCQkJZWxzZQorCQkJCXBhX3VubG9ja19zdHJlYW0oeGlkLCBBY2Nl c3NFeGNsdXNpdmVMb2NrKTsKKworCQkJLyogU2VuZCBTVFJFQU0gQUJPUlQgbWVzc2FnZSB0byB0 aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiAqLworCQkJcGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5s ZW4sIHMtPmRhdGEpOworCisJCQlpZiAoYWJvcnRfdG9wbGV2ZWxfdHJhbnNhY3Rpb24pCisJCQl7 CisJCQkJKHZvaWQpIHBhX2ZyZWVfd29ya2VyKHdpbmZvLCB4aWQpOworCQkJfQorCisJCQlicmVh azsKKworCQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZOgorCQkJcGFfc3RyZWFtX2Fib3J0KCZh Ym9ydF9kYXRhKTsKKworCQkJLyoKKwkJCSAqIFdlIG5lZWQgdG8gd2FpdCBhZnRlciBwcm9jZXNz aW5nIHJvbGxiYWNrIHRvIHNhdmVwb2ludCBmb3IgdGhlCisJCQkgKiBuZXh0IHNldCBvZiBjaGFu Z2VzLgorCQkJICoKKwkJCSAqIEJ5IHRoZSB0aW1lIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpcyBw cm9jZXNzaW5nIHRoZSBjaGFuZ2VzIGluCisJCQkgKiB0aGUgY3VycmVudCBzdHJlYW1pbmcgYmxv Y2ssIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIG1heSBoYXZlCisJCQkgKiBzZW50IG11bHRpcGxl IHN0cmVhbWluZyBibG9ja3MuIFNvLCB0cnkgdG8gbG9jayBvbmx5IGlmIHRoZXJlIGlzCisJCQkg KiBubyBtZXNzYWdlIGxlZnQgaW4gdGhlIHF1ZXVlLgorCQkJICovCisJCQlpZiAoIWFib3J0X3Rv cGxldmVsX3RyYW5zYWN0aW9uICYmCisJCQkJcGdfYXRvbWljX3N1Yl9mZXRjaF91MzIoJihNeVBh cmFsbGVsU2hhcmVkLT5wZW5kaW5nX21lc3NhZ2VfY291bnQpLCAxKSA9PSAwKQorCQkJeworCQkJ CXBhX2xvY2tfc3RyZWFtKE15UGFyYWxsZWxTaGFyZWQtPnhpZCwgQWNjZXNzU2hhcmVMb2NrKTsK KwkJCQlwYV91bmxvY2tfc3RyZWFtKE15UGFyYWxsZWxTaGFyZWQtPnhpZCwgQWNjZXNzU2hhcmVM b2NrKTsKKwkJCX0KKworCQkJZWxvZyhERUJVRzEsICJmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSB0 cmFuc2FjdGlvbiBmaW5pc2ggY29tbWFuZCIpOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJ CUFzc2VydChmYWxzZSk7CisJCQlicmVhazsKKwl9CiAKIAlyZXNldF9hcHBseV9lcnJvcl9jb250 ZXh0X2luZm8oKTsKIH0KQEAgLTE0OTUsNiArMTkwMCw4IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1f Y29tbWl0KFN0cmluZ0luZm8gcykKIHsKIAlUcmFuc2FjdGlvbklkIHhpZDsKIAlMb2dpY2FsUmVw Q29tbWl0RGF0YSBjb21taXRfZGF0YTsKKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87 CisJVHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CiAKIAlpZiAoaW5fc3RyZWFtZWRfdHJh bnNhY3Rpb24pCiAJCWVyZXBvcnQoRVJST1IsCkBAIC0xNTA0LDE0ICsxOTExLDc0IEBAIGFwcGx5 X2hhbmRsZV9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gcykKIAl4aWQgPSBsb2dpY2FscmVwX3Jl YWRfc3RyZWFtX2NvbW1pdChzLCAmY29tbWl0X2RhdGEpOwogCXNldF9hcHBseV9lcnJvcl9jb250 ZXh0X3hhY3QoeGlkLCBjb21taXRfZGF0YS5jb21taXRfbHNuKTsKIAotCWVsb2coREVCVUcxLCAi cmVjZWl2ZWQgY29tbWl0IGZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbiAldSIsIHhpZCk7CisJYXBw bHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbih4aWQsICZ3aW5mbyk7CiAK LQlhcHBseV9zcG9vbGVkX21lc3NhZ2VzKHhpZCwgY29tbWl0X2RhdGEuY29tbWl0X2xzbik7CisJ c3dpdGNoIChhcHBseV9hY3Rpb24pCisJeworCQljYXNlIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6 CiAKLQlhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7CisJCQkvKgor CQkJICogVGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVuIHNlcmlhbGl6ZWQgdG8gZmlsZSwgc28gcmVw bGF5IGFsbCB0aGUKKwkJCSAqIHNwb29sZWQgb3BlcmF0aW9ucy4KKwkJCSAqLworCQkJYXBwbHlf c3Bvb2xlZF9tZXNzYWdlcyh4aWQsIGNvbW1pdF9kYXRhLmNvbW1pdF9sc24pOworCisJCQlhcHBs eV9oYW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7CiAKLQkvKiB1bmxpbmsgdGhl IGZpbGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8gKi8KLQlzdHJl YW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOworCQkJLyog VW5saW5rIHRoZSBmaWxlcyB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcyBhbmQgc3VieGFjdCBpbmZv LiAqLworCQkJc3RyZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwg eGlkKTsKKwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6 CisJCQlBc3NlcnQod2luZm8pOworCisJCQkvKgorCQkJICogVW5sb2NrIHRoZSBzaGFyZWQgb2Jq ZWN0IGxvY2sgc28gdGhhdCBwYXJhbGxlbCBhcHBseSB3b3JrZXIgY2FuCisJCQkgKiBjb250aW51 ZSB0byByZWNlaXZlIGFuZCBhcHBseSBjaGFuZ2VzLgorCQkJICovCisJCQlwYV91bmxvY2tfc3Ry ZWFtKHhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisKKwkJCS8qIFNlbmQgU1RSRUFNIENPTU1J VCBtZXNzYWdlIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuICovCisJCQlwYV9zZW5kX2Rh dGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSk7CisKKwkJCS8qCisJCQkgKiBBZnRlciBzZW5kaW5n IHRoZSBkYXRhIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIsIHdhaXQgZm9yCisJCQkgKiB0 aGF0IHdvcmtlciB0byBmaW5pc2guIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIG1haW50YWluIGNvbW1p dAorCQkJICogb3JkZXIgd2hpY2ggYXZvaWRzIGZhaWx1cmVzIGR1ZSB0byB0cmFuc2FjdGlvbiBk ZXBlbmRlbmNpZXMgYW5kCisJCQkgKiBkZWFkbG9ja3MuCisJCQkgKi8KKwkJCXBhX3dhaXRfZm9y X3hhY3RfZmluaXNoKHdpbmZvLT5zaGFyZWQpOworCisJCQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFs c2UpOworCQkJc3RvcmVfZmx1c2hfcG9zaXRpb24oY29tbWl0X2RhdGEuZW5kX2xzbik7CisJCQlz dG9wX3NraXBwaW5nX2NoYW5nZXMoKTsKKworCQkJKHZvaWQpIHBhX2ZyZWVfd29ya2VyKHdpbmZv LCB4aWQpOworCisJCQkvKgorCQkJICogVGhlIHRyYW5zYWN0aW9uIGlzIGVpdGhlciBub24tZW1w dHkgb3Igc2tpcHBlZCwgc28gd2UgY2xlYXIgdGhlCisJCQkgKiBzdWJza2lwbHNuLgorCQkJICov CisJCQljbGVhcl9zdWJzY3JpcHRpb25fc2tpcF9sc24oY29tbWl0X2RhdGEuY29tbWl0X2xzbik7 CisKKwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNfUEFSQUxMRUxfQVBQTFk6CisJCQlhcHBseV9o YW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7CisKKwkJCWxpc3RfZnJlZShzdWJ4 YWN0bGlzdCk7CisJCQlzdWJ4YWN0bGlzdCA9IE5JTDsKKworCQkJcGFfc2V0X3hhY3Rfc3RhdGUo TXlQYXJhbGxlbFNoYXJlZCwgUEFSQUxMRUxfVFJBTlNfRklOSVNIRUQpOworCQkJcGFfdW5sb2Nr X3RyYW5zYWN0aW9uKHhpZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCQkJZWxvZyhERUJVRzEsICJm aW5pc2hlZCBwcm9jZXNzaW5nIHRoZSB0cmFuc2FjdGlvbiBmaW5pc2ggY29tbWFuZCIpOworCQkJ YnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCUFzc2VydChmYWxzZSk7CisJCQlicmVhazsKKwl9CiAK IAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBh cmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMoY29tbWl0X2RhdGEuZW5kX2xzbik7 CkBAIC0xNTU1LDYgKzIwMjIsMTMgQEAgYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbChMb2dp Y2FsUmVwQ29tbWl0RGF0YSAqY29tbWl0X2RhdGEpCiAJCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmln aW5fdGltZXN0YW1wID0gY29tbWl0X2RhdGEtPmNvbW1pdHRpbWU7CiAKIAkJQ29tbWl0VHJhbnNh Y3Rpb25Db21tYW5kKCk7CisKKwkJaWYgKElzVHJhbnNhY3Rpb25CbG9jaygpKQorCQl7CisJCQlF bmRUcmFuc2FjdGlvbkJsb2NrKGZhbHNlKTsKKwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgp OworCQl9CisKIAkJcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKIAogCQlzdG9yZV9mbHVzaF9w b3NpdGlvbihjb21taXRfZGF0YS0+ZW5kX2xzbik7CkBAIC0yNTA2LDcgKzI5ODAsNyBAQCBhcHBs eV9oYW5kbGVfdHJ1bmNhdGUoU3RyaW5nSW5mbyBzKQogLyoKICAqIExvZ2ljYWwgcmVwbGljYXRp b24gcHJvdG9jb2wgbWVzc2FnZSBkaXNwYXRjaGVyLgogICovCi1zdGF0aWMgdm9pZAordm9pZAog YXBwbHlfZGlzcGF0Y2goU3RyaW5nSW5mbyBzKQogewogCUxvZ2ljYWxSZXBNc2dUeXBlIGFjdGlv biA9IHBxX2dldG1zZ2J5dGUocyk7CkBAIC0yNjc1LDYgKzMxNDksMTAgQEAgc3RvcmVfZmx1c2hf cG9zaXRpb24oWExvZ1JlY1B0ciByZW1vdGVfbHNuKQogewogCUZsdXNoUG9zaXRpb24gKmZsdXNo cG9zOwogCisJLyogU2tpcCBmb3IgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4gKi8KKwlpZiAoYW1f cGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCisJCXJldHVybjsKKwogCS8qIE5lZWQgdG8gZG8gdGhp cyBpbiBwZXJtYW5lbnQgY29udGV4dCAqLwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNv bnRleHQpOwogCkBAIC0yNzM5LDYgKzMyMTcsNyBAQCBMb2dpY2FsUmVwQXBwbHlMb29wKFhMb2dS ZWNQdHIgbGFzdF9yZWNlaXZlZCkKIAllcnJjYWxsYmFjay5jYWxsYmFjayA9IGFwcGx5X2Vycm9y X2NhbGxiYWNrOwogCWVycmNhbGxiYWNrLnByZXZpb3VzID0gZXJyb3JfY29udGV4dF9zdGFjazsK IAllcnJvcl9jb250ZXh0X3N0YWNrID0gJmVycmNhbGxiYWNrOworCWFwcGx5X2Vycm9yX2NvbnRl eHRfc3RhY2sgPSBlcnJvcl9jb250ZXh0X3N0YWNrOwogCiAJLyogVGhpcyBvdXRlciBsb29wIGl0 ZXJhdGVzIG9uY2UgcGVyIHdhaXQuICovCiAJZm9yICg7OykKQEAgLTI5NTMsNiArMzQzMiw3IEBA IExvZ2ljYWxSZXBBcHBseUxvb3AoWExvZ1JlY1B0ciBsYXN0X3JlY2VpdmVkKQogCiAJLyogUG9w IHRoZSBlcnJvciBjb250ZXh0IHN0YWNrICovCiAJZXJyb3JfY29udGV4dF9zdGFjayA9IGVycmNh bGxiYWNrLnByZXZpb3VzOworCWFwcGx5X2Vycm9yX2NvbnRleHRfc3RhY2sgPSBlcnJvcl9jb250 ZXh0X3N0YWNrOwogCiAJLyogQWxsIGRvbmUgKi8KIAl3YWxyY3ZfZW5kc3RyZWFtaW5nKExvZ1Jl cFdvcmtlcldhbFJjdkNvbm4sICZ0bGkpOwpAQCAtMzA1Myw3ICszNTMzLDcgQEAgc2VuZF9mZWVk YmFjayhYTG9nUmVjUHRyIHJlY3Zwb3MsIGJvb2wgZm9yY2UsIGJvb2wgcmVxdWVzdFJlcGx5KQog LyoKICAqIFJlcmVhZCBzdWJzY3JpcHRpb24gaW5mbyBpZiBuZWVkZWQuIE1vc3QgY2hhbmdlcyB3 aWxsIGJlIGV4aXQuCiAgKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBtYXliZV9yZXJlYWRfc3Vic2Ny aXB0aW9uKHZvaWQpCiB7CiAJTWVtb3J5Q29udGV4dCBvbGRjdHg7CkBAIC0zMDgzLDggKzM1NjMs OSBAQCBtYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKHZvaWQpCiAJaWYgKCFuZXdzdWIpCiAJewog CQllcmVwb3J0KExPRywKLQkJCQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdv cmtlciBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsICIKLQkJCQkJCSJzdG9wIGJlY2F1c2Ug dGhlIHN1YnNjcmlwdGlvbiB3YXMgcmVtb3ZlZCIsCisJCS8qIHRyYW5zbGF0b3I6IGZpcnN0ICVz IGlzIHRoZSBuYW1lIG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyICovCisJCQkJKGVycm1z ZygiJXMgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCBzdG9wIGJlY2F1c2UgdGhlICIKKwkJ CQkJCSJzdWJzY3JpcHRpb24gd2FzIHJlbW92ZWQiLCBnZXRfd29ya2VyX25hbWUoKSwKIAkJCQkJ CU15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOwogCiAJCXByb2NfZXhpdCgwKTsKQEAgLTMwOTQsOCAr MzU3NSw5IEBAIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCkKIAlpZiAoIW5ld3N1Yi0+ ZW5hYmxlZCkKIAl7CiAJCWVyZXBvcnQoTE9HLAotCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGlj YXRpb24gYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgIgotCQkJCQkJ InN0b3AgYmVjYXVzZSB0aGUgc3Vic2NyaXB0aW9uIHdhcyBkaXNhYmxlZCIsCisJCS8qIHRyYW5z bGF0b3I6IGZpcnN0ICVzIGlzIHRoZSBuYW1lIG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2Vy ICovCisJCQkJKGVycm1zZygiJXMgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCBzdG9wIGJl Y2F1c2UgdGhlICIKKwkJCQkJCSJzdWJzY3JpcHRpb24gd2FzIGRpc2FibGVkIiwgZ2V0X3dvcmtl cl9uYW1lKCksCiAJCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKIAogCQlwcm9jX2V4aXQo MCk7CkBAIC0zMTA5LDcgKzM1OTEsMTAgQEAgbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lk KQogCiAJLyoKIAkgKiBFeGl0IGlmIGFueSBwYXJhbWV0ZXIgdGhhdCBhZmZlY3RzIHRoZSByZW1v dGUgY29ubmVjdGlvbiB3YXMgY2hhbmdlZC4KLQkgKiBUaGUgbGF1bmNoZXIgd2lsbCBzdGFydCBh IG5ldyB3b3JrZXIuCisJICogVGhlIGxhdW5jaGVyIHdpbGwgc3RhcnQgYSBuZXcgd29ya2VyIGJ1 dCBub3RlIHRoYXQgdGhlIHBhcmFsbGVsIGFwcGx5CisJICogd29ya2VyIHdvbid0IHJlc3RhcnQg aWYgdGhlIHN0cmVhbWluZyBvcHRpb24ncyB2YWx1ZSBpcyBjaGFuZ2VkIGZyb20KKwkgKiAncGFy YWxsZWwnIHRvIGFueSBvdGhlciB2YWx1ZSBvciB0aGUgc2VydmVyIGRlY2lkZXMgbm90IHRvIHN0 cmVhbSB0aGUKKwkgKiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbi4KIAkgKi8KIAlpZiAoc3RyY21w KG5ld3N1Yi0+Y29ubmluZm8sIE15U3Vic2NyaXB0aW9uLT5jb25uaW5mbykgIT0gMCB8fAogCQlz dHJjbXAobmV3c3ViLT5uYW1lLCBNeVN1YnNjcmlwdGlvbi0+bmFtZSkgIT0gMCB8fApAQCAtMzEy MCw5ICszNjA1LDE2IEBAIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCkKIAkJbmV3c3Vi LT5vd25lciAhPSBNeVN1YnNjcmlwdGlvbi0+b3duZXIgfHwKIAkJIWVxdWFsKG5ld3N1Yi0+cHVi bGljYXRpb25zLCBNeVN1YnNjcmlwdGlvbi0+cHVibGljYXRpb25zKSkKIAl7Ci0JCWVyZXBvcnQo TE9HLAotCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2VyIGZvciBz dWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgcmVzdGFydCBiZWNhdXNlIG9mIGEgcGFyYW1ldGVyIGNo YW5nZSIsCi0JCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKKwkJaWYgKGFtX3BhcmFsbGVs X2FwcGx5X3dvcmtlcigpKQorCQkJZXJlcG9ydChMT0csCisJCQkvKiB0cmFuc2xhdG9yOiBmaXJz dCAlcyBpcyB0aGUgbmFtZSBvZiBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciAqLworCQkJCQko ZXJybXNnKCIlcyBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsIHN0b3AgYmVjYXVzZSBvZiBh IHBhcmFtZXRlciBjaGFuZ2UiLAorCQkJCQkJCWdldF93b3JrZXJfbmFtZSgpLCBNeVN1YnNjcmlw dGlvbi0+bmFtZSkpKTsKKwkJZWxzZQorCQkJZXJlcG9ydChMT0csCisJCQkvKiB0cmFuc2xhdG9y OiBmaXJzdCAlcyBpcyB0aGUgbmFtZSBvZiBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciAqLwor CQkJCQkoZXJybXNnKCIlcyBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsIHJlc3RhcnQgYmVj YXVzZSBvZiBhIHBhcmFtZXRlciBjaGFuZ2UiLAorCQkJCQkJCWdldF93b3JrZXJfbmFtZSgpLCBN eVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKIAogCQlwcm9jX2V4aXQoMCk7CiAJfQpAQCAtMzYwOCwz NyArNDEwMCwxNiBAQCBzdGFydF9hcHBseShYTG9nUmVjUHRyIG9yaWdpbl9zdGFydHBvcykKIAlQ R19FTkRfVFJZKCk7CiB9CiAKLS8qIExvZ2ljYWwgUmVwbGljYXRpb24gQXBwbHkgd29ya2VyIGVu dHJ5IHBvaW50ICovCisvKgorICogQ29tbW9uIGluaXRpYWxpemF0aW9uIGZvciBsZWFkZXIgYXBw bHkgd29ya2VyIGFuZCBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisgKgorICogSW5pdGlhbGl6ZSB0 aGUgZGF0YWJhc2UgY29ubmVjdGlvbiwgaW4tbWVtb3J5IHN1YnNjcmlwdGlvbiBhbmQgbmVjZXNz YXJ5CisgKiBjb25maWcgb3B0aW9ucy4KKyAqLwogdm9pZAotQXBwbHlXb3JrZXJNYWluKERhdHVt IG1haW5fYXJnKQorSW5pdGlhbGl6ZUFwcGx5V29ya2VyKHZvaWQpCiB7Ci0JaW50CQkJd29ya2Vy X3Nsb3QgPSBEYXR1bUdldEludDMyKG1haW5fYXJnKTsKIAlNZW1vcnlDb250ZXh0IG9sZGN0eDsK LQljaGFyCQlvcmlnaW5uYW1lW05BTUVEQVRBTEVOXTsKLQlYTG9nUmVjUHRyCW9yaWdpbl9zdGFy dHBvcyA9IEludmFsaWRYTG9nUmVjUHRyOwotCWNoYXIJICAgKm15c2xvdG5hbWUgPSBOVUxMOwot CVdhbFJjdlN0cmVhbU9wdGlvbnMgb3B0aW9uczsKLQlpbnQJCQlzZXJ2ZXJfdmVyc2lvbjsKLQot CS8qIEF0dGFjaCB0byBzbG90ICovCi0JbG9naWNhbHJlcF93b3JrZXJfYXR0YWNoKHdvcmtlcl9z bG90KTsKLQotCS8qIFNldHVwIHNpZ25hbCBoYW5kbGluZyAqLwotCXBxc2lnbmFsKFNJR0hVUCwg U2lnbmFsSGFuZGxlckZvckNvbmZpZ1JlbG9hZCk7Ci0JcHFzaWduYWwoU0lHVEVSTSwgZGllKTsK LQlCYWNrZ3JvdW5kV29ya2VyVW5ibG9ja1NpZ25hbHMoKTsKLQotCS8qCi0JICogV2UgZG9uJ3Qg Y3VycmVudGx5IG5lZWQgYW55IFJlc291cmNlT3duZXIgaW4gYSB3YWxyZWNlaXZlciBwcm9jZXNz LCBidXQKLQkgKiBpZiB3ZSBkaWQsIHdlIGNvdWxkIGNhbGwgQ3JlYXRlQXV4UHJvY2Vzc1Jlc291 cmNlT3duZXIgaGVyZS4KLQkgKi8KLQotCS8qIEluaXRpYWxpc2Ugc3RhdHMgdG8gYSBzYW5pc2gg dmFsdWUgKi8KLQlNeUxvZ2ljYWxSZXBXb3JrZXItPmxhc3Rfc2VuZF90aW1lID0gTXlMb2dpY2Fs UmVwV29ya2VyLT5sYXN0X3JlY3ZfdGltZSA9Ci0JCU15TG9naWNhbFJlcFdvcmtlci0+cmVwbHlf dGltZSA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKLQotCS8qIExvYWQgdGhlIGxpYnBxLXNwZWNp ZmljIGZ1bmN0aW9ucyAqLwotCWxvYWRfZmlsZSgibGlicHF3YWxyZWNlaXZlciIsIGZhbHNlKTsK IAogCS8qIFJ1biBhcyByZXBsaWNhIHNlc3Npb24gcmVwbGljYXRpb24gcm9sZS4gKi8KIAlTZXRD b25maWdPcHRpb24oInNlc3Npb25fcmVwbGljYXRpb25fcm9sZSIsICJyZXBsaWNhIiwKQEAgLTM2 NjYsOSArNDEzNywxMSBAQCBBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJaWYgKCFN eVN1YnNjcmlwdGlvbikKIAl7CiAJCWVyZXBvcnQoTE9HLAotCQkJCShlcnJtc2coImxvZ2ljYWwg cmVwbGljYXRpb24gYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gJXUgd2lsbCBub3QgIgot CQkJCQkJInN0YXJ0IGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlvbiB3YXMgcmVtb3ZlZCBkdXJpbmcg c3RhcnR1cCIsCi0JCQkJCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkKSkpOworCQkvKiB0cmFu c2xhdG9yOiAlcyBpcyB0aGUgbmFtZSBvZiBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciAqLwor CQkJCShlcnJtc2coIiVzIGZvciBzdWJzY3JpcHRpb24gJXUgd2lsbCBub3Qgc3RhcnQgYmVjYXVz ZSB0aGUgIgorCQkJCQkJInN1YnNjcmlwdGlvbiB3YXMgcmVtb3ZlZCBkdXJpbmcgc3RhcnR1cCIs CisJCQkJCQlnZXRfd29ya2VyX25hbWUoKSwgTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCkpKTsK KwogCQlwcm9jX2V4aXQoMCk7CiAJfQogCkBAIC0zNjc4LDkgKzQxNTEsMTAgQEAgQXBwbHlXb3Jr ZXJNYWluKERhdHVtIG1haW5fYXJnKQogCWlmICghTXlTdWJzY3JpcHRpb24tPmVuYWJsZWQpCiAJ ewogCQllcmVwb3J0KExPRywKLQkJCQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5 IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsIG5vdCAiCi0JCQkJCQkic3RhcnQg YmVjYXVzZSB0aGUgc3Vic2NyaXB0aW9uIHdhcyBkaXNhYmxlZCBkdXJpbmcgc3RhcnR1cCIsCi0J CQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKKwkJLyogdHJhbnNsYXRvcjogZmlyc3QgJXMg aXMgdGhlIG5hbWUgb2YgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgKi8KKwkJCQkoZXJybXNn KCIlcyBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsIG5vdCBzdGFydCBiZWNhdXNlICIKKwkJ CQkJCSJ0aGUgc3Vic2NyaXB0aW9uIHdhcyBkaXNhYmxlZCBkdXJpbmcgc3RhcnR1cCIsCisJCQkJ CQlnZXRfd29ya2VyX25hbWUoKSwgTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CiAKIAkJcHJvY19l eGl0KDApOwogCX0KQEAgLTM2OTYsMTQgKzQxNzAsNTEgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVt IG1haW5fYXJnKQogCiAJaWYgKGFtX3RhYmxlc3luY193b3JrZXIoKSkKIAkJZXJlcG9ydChMT0cs Ci0JCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiB0YWJsZSBzeW5jaHJvbml6YXRpb24g d29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiLCB0YWJsZSBcIiVzXCIgaGFzIHN0YXJ0ZWQi LAotCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUsIGdldF9yZWxfbmFtZShNeUxvZ2ljYWxSZXBX b3JrZXItPnJlbGlkKSkpKTsKKwkJLyogdHJhbnNsYXRvcjogZmlyc3QgJXMgaXMgdGhlIG5hbWUg b2YgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgKi8KKwkJCQkoZXJybXNnKCIlcyBmb3Igc3Vi c2NyaXB0aW9uIFwiJXNcIiwgdGFibGUgXCIlc1wiIGhhcyBzdGFydGVkIiwKKwkJCQkJCWdldF93 b3JrZXJfbmFtZSgpLCBNeVN1YnNjcmlwdGlvbi0+bmFtZSwKKwkJCQkJCWdldF9yZWxfbmFtZShN eUxvZ2ljYWxSZXBXb3JrZXItPnJlbGlkKSkpKTsKIAllbHNlCiAJCWVyZXBvcnQoTE9HLAotCQkJ CShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRp b24gXCIlc1wiIGhhcyBzdGFydGVkIiwKLQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOwor CQkvKiB0cmFuc2xhdG9yOiBmaXJzdCAlcyBpcyB0aGUgbmFtZSBvZiBsb2dpY2FsIHJlcGxpY2F0 aW9uIHdvcmtlciAqLworCQkJCShlcnJtc2coIiVzIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIGhh cyBzdGFydGVkIiwKKwkJCQkJCWdldF93b3JrZXJfbmFtZSgpLCBNeVN1YnNjcmlwdGlvbi0+bmFt ZSkpKTsKIAogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworfQorCisvKiBMb2dpY2FsIFJl cGxpY2F0aW9uIEFwcGx5IHdvcmtlciBlbnRyeSBwb2ludCAqLwordm9pZAorQXBwbHlXb3JrZXJN YWluKERhdHVtIG1haW5fYXJnKQoreworCWludAkJCXdvcmtlcl9zbG90ID0gRGF0dW1HZXRJbnQz MihtYWluX2FyZyk7CisJY2hhcgkJb3JpZ2lubmFtZVtOQU1FREFUQUxFTl07CisJWExvZ1JlY1B0 cglvcmlnaW5fc3RhcnRwb3MgPSBJbnZhbGlkWExvZ1JlY1B0cjsKKwljaGFyCSAgICpteXNsb3Ru YW1lID0gTlVMTDsKKwlXYWxSY3ZTdHJlYW1PcHRpb25zIG9wdGlvbnM7CisJaW50CQkJc2VydmVy X3ZlcnNpb247CisKKwkvKiBBdHRhY2ggdG8gc2xvdCAqLworCWxvZ2ljYWxyZXBfd29ya2VyX2F0 dGFjaCh3b3JrZXJfc2xvdCk7CisKKwkvKiBTZXR1cCBzaWduYWwgaGFuZGxpbmcgKi8KKwlwcXNp Z25hbChTSUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQpOworCXBxc2lnbmFsKFNJ R1RFUk0sIGRpZSk7CisJQmFja2dyb3VuZFdvcmtlclVuYmxvY2tTaWduYWxzKCk7CisKKwkvKgor CSAqIFdlIGRvbid0IGN1cnJlbnRseSBuZWVkIGFueSBSZXNvdXJjZU93bmVyIGluIGEgd2FscmVj ZWl2ZXIgcHJvY2VzcywgYnV0CisJICogaWYgd2UgZGlkLCB3ZSBjb3VsZCBjYWxsIENyZWF0ZUF1 eFByb2Nlc3NSZXNvdXJjZU93bmVyIGhlcmUuCisJICovCisKKwkvKiBJbml0aWFsaXNlIHN0YXRz IHRvIGEgc2FuaXNoIHZhbHVlICovCisJTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X3NlbmRfdGlt ZSA9IE15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9yZWN2X3RpbWUgPQorCQlNeUxvZ2ljYWxSZXBX b3JrZXItPnJlcGx5X3RpbWUgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CisKKwkvKiBMb2FkIHRo ZSBsaWJwcS1zcGVjaWZpYyBmdW5jdGlvbnMgKi8KKwlsb2FkX2ZpbGUoImxpYnBxd2FscmVjZWl2 ZXIiLCBmYWxzZSk7CisKKwlJbml0aWFsaXplQXBwbHlXb3JrZXIoKTsKIAogCS8qIENvbm5lY3Qg dG8gdGhlIG9yaWdpbiBhbmQgc3RhcnQgdGhlIHJlcGxpY2F0aW9uLiAqLwogCWVsb2coREVCVUcx LCAiY29ubmVjdGluZyB0byBwdWJsaXNoZXIgdXNpbmcgY29ubmVjdGlvbiBzdHJpbmcgXCIlc1wi IiwKQEAgLTM3MjYsNyArNDIzNyw3IEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykK IAl9CiAJZWxzZQogCXsKLQkJLyogVGhpcyBpcyBtYWluIGFwcGx5IHdvcmtlciAqLworCQkvKiBU aGlzIGlzIGxlYWRlciBhcHBseSB3b3JrZXIgKi8KIAkJUmVwT3JpZ2luSWQgb3JpZ2luaWQ7CiAJ CVRpbWVMaW5lSUQJc3RhcnRwb2ludFRMSTsKIAkJY2hhcgkgICAqZXJyOwpAQCAtMzc1MCw3ICs0 MjYxLDcgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogCQlvcmlnaW5pZCA9IHJl cGxvcmlnaW5fYnlfbmFtZShvcmlnaW5uYW1lLCB0cnVlKTsKIAkJaWYgKCFPaWRJc1ZhbGlkKG9y aWdpbmlkKSkKIAkJCW9yaWdpbmlkID0gcmVwbG9yaWdpbl9jcmVhdGUob3JpZ2lubmFtZSk7Ci0J CXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCk7CisJCXJlcGxvcmlnaW5fc2Vzc2lv bl9zZXR1cChvcmlnaW5pZCwgMCk7CiAJCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmln aW5pZDsKIAkJb3JpZ2luX3N0YXJ0cG9zID0gcmVwbG9yaWdpbl9zZXNzaW9uX2dldF9wcm9ncmVz cyhmYWxzZSk7CiAJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwpAQCAtMzc5MSwxMyArNDMw MiwzNiBAQCBBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAKIAlzZXJ2ZXJfdmVyc2lv biA9IHdhbHJjdl9zZXJ2ZXJfdmVyc2lvbihMb2dSZXBXb3JrZXJXYWxSY3ZDb25uKTsKIAlvcHRp b25zLnByb3RvLmxvZ2ljYWwucHJvdG9fdmVyc2lvbiA9CisJCXNlcnZlcl92ZXJzaW9uID49IDE2 MDAwMCA/IExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVNIDoKIAkJ c2VydmVyX3ZlcnNpb24gPj0gMTUwMDAwID8gTE9HSUNBTFJFUF9QUk9UT19UV09QSEFTRV9WRVJT SU9OX05VTSA6CiAJCXNlcnZlcl92ZXJzaW9uID49IDE0MDAwMCA/IExPR0lDQUxSRVBfUFJPVE9f U1RSRUFNX1ZFUlNJT05fTlVNIDoKIAkJTE9HSUNBTFJFUF9QUk9UT19WRVJTSU9OX05VTTsKIAog CW9wdGlvbnMucHJvdG8ubG9naWNhbC5wdWJsaWNhdGlvbl9uYW1lcyA9IE15U3Vic2NyaXB0aW9u LT5wdWJsaWNhdGlvbnM7CiAJb3B0aW9ucy5wcm90by5sb2dpY2FsLmJpbmFyeSA9IE15U3Vic2Ny aXB0aW9uLT5iaW5hcnk7Ci0Jb3B0aW9ucy5wcm90by5sb2dpY2FsLnN0cmVhbWluZyA9IE15U3Vi c2NyaXB0aW9uLT5zdHJlYW07CisKKwkvKgorCSAqIEFzc2lnbiB0aGUgYXBwcm9wcmlhdGUgb3B0 aW9uIHZhbHVlIGZvciBzdHJlYW1pbmcgb3B0aW9uIGFjY29yZGluZyB0bworCSAqIHRoZSAnc3Ry ZWFtaW5nJyBtb2RlIGFuZCB0aGUgcHVibGlzaGVyJ3MgYWJpbGl0eSB0byBzdXBwb3J0IHRoYXQg bW9kZS4KKwkgKi8KKwlpZiAoc2VydmVyX3ZlcnNpb24gPj0gMTYwMDAwICYmCisJCU15U3Vic2Ny aXB0aW9uLT5zdHJlYW0gPT0gU1VCU1RSRUFNX1BBUkFMTEVMKQorCXsKKwkJb3B0aW9ucy5wcm90 by5sb2dpY2FsLnN0cmVhbWluZ19zdHIgPSBwc3RyZHVwKCJwYXJhbGxlbCIpOworCQlNeUxvZ2lj YWxSZXBXb3JrZXItPnBhcmFsbGVsX2FwcGx5ID0gdHJ1ZTsKKwl9CisJZWxzZSBpZiAoc2VydmVy X3ZlcnNpb24gPj0gMTQwMDAwICYmCisJCQkgTXlTdWJzY3JpcHRpb24tPnN0cmVhbSAhPSBTVUJT VFJFQU1fT0ZGKQorCXsKKwkJb3B0aW9ucy5wcm90by5sb2dpY2FsLnN0cmVhbWluZ19zdHIgPSBw c3RyZHVwKCJvbiIpOworCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnBhcmFsbGVsX2FwcGx5ID0gZmFs c2U7CisJfQorCWVsc2UKKwl7CisJCW9wdGlvbnMucHJvdG8ubG9naWNhbC5zdHJlYW1pbmdfc3Ry ID0gTlVMTDsKKwkJTXlMb2dpY2FsUmVwV29ya2VyLT5wYXJhbGxlbF9hcHBseSA9IGZhbHNlOwor CX0KKwogCW9wdGlvbnMucHJvdG8ubG9naWNhbC50d29waGFzZSA9IGZhbHNlOwogCW9wdGlvbnMu cHJvdG8ubG9naWNhbC5vcmlnaW4gPSBwc3RyZHVwKE15U3Vic2NyaXB0aW9uLT5vcmlnaW4pOwog CkBAIC0zODMwLDEyICs0MzY0LDEzIEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykK IAkJfQogCiAJCWVyZXBvcnQoREVCVUcxLAotCQkJCShlcnJtc2dfaW50ZXJuYWwoImxvZ2ljYWwg cmVwbGljYXRpb24gYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHR3b19waGFz ZSBpcyAlcyIsCi0JCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSwKLQkJCQkJCU15U3Vic2NyaXB0 aW9uLT50d29waGFzZXN0YXRlID09IExPR0lDQUxSRVBfVFdPUEhBU0VfU1RBVEVfRElTQUJMRUQg PyAiRElTQUJMRUQiIDoKLQkJCQkJCU15U3Vic2NyaXB0aW9uLT50d29waGFzZXN0YXRlID09IExP R0lDQUxSRVBfVFdPUEhBU0VfU1RBVEVfUEVORElORyA/ICJQRU5ESU5HIiA6Ci0JCQkJCQlNeVN1 YnNjcmlwdGlvbi0+dHdvcGhhc2VzdGF0ZSA9PSBMT0dJQ0FMUkVQX1RXT1BIQVNFX1NUQVRFX0VO QUJMRUQgPyAiRU5BQkxFRCIgOgotCQkJCQkJIj8iKSkpOworCQkJCShlcnJtc2dfaW50ZXJuYWwo IiVzIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHR3b19waGFzZSBpcyAlcyIsCisJCQkJCQkJCSBn ZXRfd29ya2VyX25hbWUoKSwKKwkJCQkJCQkJIE15U3Vic2NyaXB0aW9uLT5uYW1lLAorCQkJCQkJ CQkgTXlTdWJzY3JpcHRpb24tPnR3b3BoYXNlc3RhdGUgPT0gTE9HSUNBTFJFUF9UV09QSEFTRV9T VEFURV9ESVNBQkxFRCA/ICJESVNBQkxFRCIgOgorCQkJCQkJCQkgTXlTdWJzY3JpcHRpb24tPnR3 b3BoYXNlc3RhdGUgPT0gTE9HSUNBTFJFUF9UV09QSEFTRV9TVEFURV9QRU5ESU5HID8gIlBFTkRJ TkciIDoKKwkJCQkJCQkJIE15U3Vic2NyaXB0aW9uLT50d29waGFzZXN0YXRlID09IExPR0lDQUxS RVBfVFdPUEhBU0VfU1RBVEVfRU5BQkxFRCA/ICJFTkFCTEVEIiA6CisJCQkJCQkJCSAiPyIpKSk7 CiAJfQogCWVsc2UKIAl7CkBAIC0zODk1LDYgKzQ0MzAsMTUgQEAgSXNMb2dpY2FsV29ya2VyKHZv aWQpCiB9CiAKIC8qCisgKiBJcyBjdXJyZW50IHByb2Nlc3MgYSBsb2dpY2FsIHJlcGxpY2F0aW9u IHBhcmFsbGVsIGFwcGx5IHdvcmtlcj8KKyAqLworYm9vbAorSXNMb2dpY2FsUGFyYWxsZWxBcHBs eVdvcmtlcih2b2lkKQoreworCXJldHVybiBJc0xvZ2ljYWxXb3JrZXIoKSAmJiBhbV9wYXJhbGxl bF9hcHBseV93b3JrZXIoKTsKK30KKworLyoKICAqIFN0YXJ0IHNraXBwaW5nIGNoYW5nZXMgb2Yg dGhlIHRyYW5zYWN0aW9uIGlmIHRoZSBnaXZlbiBMU04gbWF0Y2hlcyB0aGUKICAqIExTTiBzcGVj aWZpZWQgYnkgc3Vic2NyaXB0aW9uJ3Mgc2tpcGxzbi4KICAqLwpAQCAtMzk1Niw3ICs0NTAwLDcg QEAgY2xlYXJfc3Vic2NyaXB0aW9uX3NraXBfbHNuKFhMb2dSZWNQdHIgZmluaXNoX2xzbikKIAlY TG9nUmVjUHRyCW15c2tpcGxzbiA9IE15U3Vic2NyaXB0aW9uLT5za2lwbHNuOwogCWJvb2wJCXN0 YXJ0ZWRfdHggPSBmYWxzZTsKIAotCWlmIChsaWtlbHkoWExvZ1JlY1B0cklzSW52YWxpZChteXNr aXBsc24pKSkKKwlpZiAobGlrZWx5KFhMb2dSZWNQdHJJc0ludmFsaWQobXlza2lwbHNuKSkgfHwg YW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCiAJCXJldHVybjsKIAogCWlmICghSXNUcmFuc2Fj dGlvblN0YXRlKCkpCkBAIC00MDI4LDcgKzQ1NzIsNyBAQCBjbGVhcl9zdWJzY3JpcHRpb25fc2tp cF9sc24oWExvZ1JlY1B0ciBmaW5pc2hfbHNuKQogfQogCiAvKiBFcnJvciBjYWxsYmFjayB0byBn aXZlIG1vcmUgY29udGV4dCBpbmZvIGFib3V0IHRoZSBjaGFuZ2UgYmVpbmcgYXBwbGllZCAqLwot c3RhdGljIHZvaWQKK3ZvaWQKIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZykKIHsKIAlB cHBseUVycm9yQ2FsbGJhY2tBcmcgKmVycmFyZyA9ICZhcHBseV9lcnJvcl9jYWxsYmFja19hcmc7 CkBAIC00MDU2LDIzICs0NjAwLDQ3IEBAIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZykK IAkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkLAogCQkJCQkgICBMU05fRk9STUFUX0FSR1MoZXJy YXJnLT5maW5pc2hfbHNuKSk7CiAJfQotCWVsc2UgaWYgKGVycmFyZy0+cmVtb3RlX2F0dG51bSA8 IDApCi0JCWVycmNvbnRleHQoInByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9u IG9yaWdpbiBcIiVzXCIgZHVyaW5nIG1lc3NhZ2UgdHlwZSBcIiVzXCIgZm9yIHJlcGxpY2F0aW9u IHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUsIGZpbmlzaGVkIGF0 ICVYLyVYIiwKLQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1lLAotCQkJCSAgIGxvZ2ljYWxyZXBf bWVzc2FnZV90eXBlKGVycmFyZy0+Y29tbWFuZCksCi0JCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90 ZXJlbC5uc3BuYW1lLAotCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwKLQkJ CQkgICBlcnJhcmctPnJlbW90ZV94aWQsCi0JCQkJICAgTFNOX0ZPUk1BVF9BUkdTKGVycmFyZy0+ ZmluaXNoX2xzbikpOwogCWVsc2UKLQkJZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0 YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgbWVzc2FnZSB0eXBlIFwiJXNc IiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiBjb2x1bW4gXCIlc1wi IGluIHRyYW5zYWN0aW9uICV1LCBmaW5pc2hlZCBhdCAlWC8lWCIsCi0JCQkJICAgZXJyYXJnLT5v cmlnaW5fbmFtZSwKLQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1h bmQpLAotCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwKLQkJCQkgICBlcnJh cmctPnJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsCi0JCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJl bC5hdHRuYW1lc1tlcnJhcmctPnJlbW90ZV9hdHRudW1dLAotCQkJCSAgIGVycmFyZy0+cmVtb3Rl X3hpZCwKLQkJCQkgICBMU05fRk9STUFUX0FSR1MoZXJyYXJnLT5maW5pc2hfbHNuKSk7CisJewor CQlpZiAoZXJyYXJnLT5yZW1vdGVfYXR0bnVtIDwgMCkKKwkJeworCQkJaWYgKFhMb2dSZWNQdHJJ c0ludmFsaWQoZXJyYXJnLT5maW5pc2hfbHNuKSkKKwkJCQllcnJjb250ZXh0KCJwcm9jZXNzaW5n IHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBtZXNzYWdl IHR5cGUgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGlu IHRyYW5zYWN0aW9uICV1IiwKKwkJCQkJCSAgIGVycmFyZy0+b3JpZ2luX25hbWUsCisJCQkJCQkg ICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLAorCQkJCQkJICAgZXJy YXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90 ZXJlbC5yZWxuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkKTsKKwkJCWVsc2UKKwkJ CQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmln aW4gXCIlc1wiIGR1cmluZyBtZXNzYWdlIHR5cGUgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJn ZXQgcmVsYXRpb24gXCIlcy4lc1wiIGluIHRyYW5zYWN0aW9uICV1LCBmaW5pc2hlZCBhdCAlWC8l WCIsCisJCQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1lLAorCQkJCQkJICAgbG9naWNhbHJlcF9t ZXNzYWdlX3R5cGUoZXJyYXJnLT5jb21tYW5kKSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1v dGVyZWwubnNwbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwK KwkJCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCwKKwkJCQkJCSAgIExTTl9GT1JNQVRfQVJHUyhl cnJhcmctPmZpbmlzaF9sc24pKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWlmIChYTG9nUmVjUHRy SXNJbnZhbGlkKGVycmFyZy0+ZmluaXNoX2xzbikpCisJCQkJZXJyY29udGV4dCgicHJvY2Vzc2lu ZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgbWVzc2Fn ZSB0eXBlIFwiJXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiBj b2x1bW4gXCIlc1wiIGluIHRyYW5zYWN0aW9uICV1IiwKKwkJCQkJCSAgIGVycmFyZy0+b3JpZ2lu X25hbWUsCisJCQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQp LAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAorCQkJCQkJICAgZXJy YXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90 ZXJlbC5hdHRuYW1lc1tlcnJhcmctPnJlbW90ZV9hdHRudW1dLAorCQkJCQkJICAgZXJyYXJnLT5y ZW1vdGVfeGlkKTsKKwkJCWVsc2UKKwkJCQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBk YXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBtZXNzYWdlIHR5cGUgXCIl c1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGNvbHVtbiBcIiVz XCIgaW4gdHJhbnNhY3Rpb24gJXUsIGZpbmlzaGVkIGF0ICVYLyVYIiwKKwkJCQkJCSAgIGVycmFy Zy0+b3JpZ2luX25hbWUsCisJCQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmct PmNvbW1hbmQpLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAorCQkJ CQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5y ZWwtPnJlbW90ZXJlbC5hdHRuYW1lc1tlcnJhcmctPnJlbW90ZV9hdHRudW1dLAorCQkJCQkJICAg ZXJyYXJnLT5yZW1vdGVfeGlkLAorCQkJCQkJICAgTFNOX0ZPUk1BVF9BUkdTKGVycmFyZy0+Zmlu aXNoX2xzbikpOworCQl9CisJfQogfQogCiAvKiBTZXQgdHJhbnNhY3Rpb24gaW5mb3JtYXRpb24g b2YgYXBwbHkgZXJyb3IgY2FsbGJhY2sgKi8KQEAgLTQwOTIsMyArNDY2MCw1MiBAQCByZXNldF9h cHBseV9lcnJvcl9jb250ZXh0X2luZm8odm9pZCkKIAlhcHBseV9lcnJvcl9jYWxsYmFja19hcmcu cmVtb3RlX2F0dG51bSA9IC0xOwogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QoSW52YWxp ZFRyYW5zYWN0aW9uSWQsIEludmFsaWRYTG9nUmVjUHRyKTsKIH0KKworLyoKKyAqIFJldHVybiB0 aGUgYWN0aW9uIHRvIHRha2UgZm9yIHRoZSBnaXZlbiB0cmFuc2FjdGlvbi4gKndpbmZvIGlzIGFz c2lnbmVkIHRvCisgKiB0aGUgZGVzdGluYXRpb24gcGFyYWxsZWwgd29ya2VyIGluZm8gKGlmIHRo ZSBhY3Rpb24gaXMKKyAqIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMLCBvdGhlcndpc2Ug KndpbmZvIGlzIGFzc2lnbmVkIE5VTEwuCisgKi8KK3N0YXRpYyBUcmFuc0FwcGx5QWN0aW9uCitn ZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLCBQYXJhbGxlbEFw cGx5V29ya2VySW5mbyAqKndpbmZvKQoreworCSp3aW5mbyA9IE5VTEw7CisKKwlpZiAoYW1fcGFy YWxsZWxfYXBwbHlfd29ya2VyKCkpCisJeworCQlyZXR1cm4gVFJBTlNfUEFSQUxMRUxfQVBQTFk7 CisJfQorCWVsc2UgaWYgKGluX3JlbW90ZV90cmFuc2FjdGlvbikKKwl7CisJCXJldHVybiBUUkFO U19MRUFERVJfQVBQTFk7CisJfQorCisJLyoKKwkgKiBDaGVjayBpZiB3ZSBhcmUgcHJvY2Vzc2lu ZyB0aGlzIHRyYW5zYWN0aW9uIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkKKwkgKiB3b3JrZXIuCisJ ICovCisJKndpbmZvID0gcGFfZmluZF93b3JrZXIoeGlkKTsKKworCWlmICgqd2luZm8pCisJewor CQlyZXR1cm4gVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw7CisJfQorCWVsc2UKKwl7CisJ CXJldHVybiBUUkFOU19MRUFERVJfU0VSSUFMSVpFOworCX0KK30KKworLyoKKyAqIFJldHVybiB0 aGUgbmFtZSBvZiB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIuCisgKi8KK3N0YXRpYyBj b25zdCBjaGFyICoKK2dldF93b3JrZXJfbmFtZSh2b2lkKQoreworCWlmIChhbV90YWJsZXN5bmNf d29ya2VyKCkpCisJCXJldHVybiBfKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHRhYmxlIHN5bmNocm9u aXphdGlvbiB3b3JrZXIiKTsKKwllbHNlIGlmIChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSkK KwkJcmV0dXJuIF8oImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIik7 CisJZWxzZQorCQlyZXR1cm4gXygibG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIiKTsK K30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0 LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCmluZGV4IDJl Y2FhNWIuLmJlYWY4MjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0 cHV0L3Bnb3V0cHV0LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdv dXRwdXQuYwpAQCAtMTgsNiArMTgsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHVibGljYXRp b25fcmVsLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCIKICNpbmNsdWRl ICJjb21tYW5kcy9kZWZyZW0uaCIKKyNpbmNsdWRlICJjb21tYW5kcy9zdWJzY3JpcHRpb25jbWRz LmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJmbWdyLmgiCiAj aW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCkBAIC0yOTAsNyArMjkxLDcgQEAgcGFyc2Vfb3V0 cHV0X3BhcmFtZXRlcnMoTGlzdCAqb3B0aW9ucywgUEdPdXRwdXREYXRhICpkYXRhKQogCWJvb2wJ CW9yaWdpbl9vcHRpb25fZ2l2ZW4gPSBmYWxzZTsKIAogCWRhdGEtPmJpbmFyeSA9IGZhbHNlOwot CWRhdGEtPnN0cmVhbWluZyA9IGZhbHNlOworCWRhdGEtPnN0cmVhbWluZyA9IFNVQlNUUkVBTV9P RkY7CiAJZGF0YS0+bWVzc2FnZXMgPSBmYWxzZTsKIAlkYXRhLT50d29fcGhhc2UgPSBmYWxzZTsK IApAQCAtMzY5LDcgKzM3MCw3IEBAIHBhcnNlX291dHB1dF9wYXJhbWV0ZXJzKExpc3QgKm9wdGlv bnMsIFBHT3V0cHV0RGF0YSAqZGF0YSkKIAkJCQkJCSBlcnJtc2coImNvbmZsaWN0aW5nIG9yIHJl ZHVuZGFudCBvcHRpb25zIikpKTsKIAkJCXN0cmVhbWluZ19naXZlbiA9IHRydWU7CiAKLQkJCWRh dGEtPnN0cmVhbWluZyA9IGRlZkdldEJvb2xlYW4oZGVmZWwpOworCQkJZGF0YS0+c3RyZWFtaW5n ID0gZGVmR2V0U3RyZWFtaW5nTW9kZShkZWZlbCk7CiAJCX0KIAkJZWxzZSBpZiAoc3RyY21wKGRl ZmVsLT5kZWZuYW1lLCAidHdvX3BoYXNlIikgPT0gMCkKIAkJewpAQCAtNDYxLDEzICs0NjIsMjAg QEAgcGdvdXRwdXRfc3RhcnR1cChMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIE91dHB1dFBs dWdpbk9wdGlvbnMgKm9wdCwKIAkJICogd2Ugb25seSBhbGxvdyBpdCB3aXRoIHN1ZmZpY2llbnQg dmVyc2lvbiBvZiB0aGUgcHJvdG9jb2wsIGFuZCB3aGVuCiAJCSAqIHRoZSBvdXRwdXQgcGx1Z2lu IHN1cHBvcnRzIGl0LgogCQkgKi8KLQkJaWYgKCFkYXRhLT5zdHJlYW1pbmcpCisJCWlmIChkYXRh LT5zdHJlYW1pbmcgPT0gU1VCU1RSRUFNX09GRikKIAkJCWN0eC0+c3RyZWFtaW5nID0gZmFsc2U7 Ci0JCWVsc2UgaWYgKGRhdGEtPnByb3RvY29sX3ZlcnNpb24gPCBMT0dJQ0FMUkVQX1BST1RPX1NU UkVBTV9WRVJTSU9OX05VTSkKKwkJZWxzZSBpZiAoZGF0YS0+c3RyZWFtaW5nID09IFNVQlNUUkVB TV9PTiAmJgorCQkJCSBkYXRhLT5wcm90b2NvbF92ZXJzaW9uIDwgTE9HSUNBTFJFUF9QUk9UT19T VFJFQU1fVkVSU0lPTl9OVU0pCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJD T0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQkJIGVycm1zZygicmVxdWVzdGVkIHBy b3RvX3ZlcnNpb249JWQgZG9lcyBub3Qgc3VwcG9ydCBzdHJlYW1pbmcsIG5lZWQgJWQgb3IgaGln aGVyIiwKIAkJCQkJCQlkYXRhLT5wcm90b2NvbF92ZXJzaW9uLCBMT0dJQ0FMUkVQX1BST1RPX1NU UkVBTV9WRVJTSU9OX05VTSkpKTsKKwkJZWxzZSBpZiAoZGF0YS0+c3RyZWFtaW5nID09IFNVQlNU UkVBTV9QQVJBTExFTCAmJgorCQkJCSBkYXRhLT5wcm90b2NvbF92ZXJzaW9uIDwgTE9HSUNBTFJF UF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0pCisJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJIGVy cm1zZygicmVxdWVzdGVkIHByb3RvX3ZlcnNpb249JWQgZG9lcyBub3Qgc3VwcG9ydCBwYXJhbGxl bCBzdHJlYW1pbmcsIG5lZWQgJWQgb3IgaGlnaGVyIiwKKwkJCQkJCQlkYXRhLT5wcm90b2NvbF92 ZXJzaW9uLCBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05VTSkpKTsK IAkJZWxzZSBpZiAoIWN0eC0+c3RyZWFtaW5nKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCkBAIC0xODM5LDYgKzE4NDcs OCBAQCBwZ291dHB1dF9zdHJlYW1fYWJvcnQoc3RydWN0IExvZ2ljYWxEZWNvZGluZ0NvbnRleHQg KmN0eCwKIAkJCQkJICBYTG9nUmVjUHRyIGFib3J0X2xzbikKIHsKIAlSZW9yZGVyQnVmZmVyVFhO ICp0b3B0eG47CisJUEdPdXRwdXREYXRhICpkYXRhID0gKFBHT3V0cHV0RGF0YSAqKSBjdHgtPm91 dHB1dF9wbHVnaW5fcHJpdmF0ZTsKKwlib29sCQl3cml0ZV9hYm9ydF9pbmZvID0gKGRhdGEtPnN0 cmVhbWluZyA9PSBTVUJTVFJFQU1fUEFSQUxMRUwpOwogCiAJLyoKIAkgKiBUaGUgYWJvcnQgc2hv dWxkIGhhcHBlbiBvdXRzaWRlIHN0cmVhbWluZyBibG9jaywgZXZlbiBmb3Igc3RyZWFtZWQKQEAg LTE4NTIsNyArMTg2Miw5IEBAIHBnb3V0cHV0X3N0cmVhbV9hYm9ydChzdHJ1Y3QgTG9naWNhbERl Y29kaW5nQ29udGV4dCAqY3R4LAogCUFzc2VydChyYnR4bl9pc19zdHJlYW1lZCh0b3B0eG4pKTsK IAogCU91dHB1dFBsdWdpblByZXBhcmVXcml0ZShjdHgsIHRydWUpOwotCWxvZ2ljYWxyZXBfd3Jp dGVfc3RyZWFtX2Fib3J0KGN0eC0+b3V0LCB0b3B0eG4tPnhpZCwgdHhuLT54aWQpOworCWxvZ2lj YWxyZXBfd3JpdGVfc3RyZWFtX2Fib3J0KGN0eC0+b3V0LCB0b3B0eG4tPnhpZCwgdHhuLT54aWQs IGFib3J0X2xzbiwKKwkJCQkJCQkJICB0eG4tPnhhY3RfdGltZS5hYm9ydF90aW1lLCB3cml0ZV9h Ym9ydF9pbmZvKTsKKwogCU91dHB1dFBsdWdpbldyaXRlKGN0eCwgdHJ1ZSk7CiAKIAljbGVhbnVw X3JlbF9zeW5jX2NhY2hlKHRvcHR4bi0+eGlkLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9w cm9jc2lnbmFsLmMKaW5kZXggNzc2NzY1Ny4uN2MwMDlkNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3Byb2NzaWduYWwuYwpAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL2FzeW5j LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVk ZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dh bHNlbmRlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvY29uZGl0aW9uX3ZhcmlhYmxlLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9pcGMuaCIKQEAgLTY1Nyw2ICs2NTgsOSBAQCBwcm9jc2lnbmFsX3NpZ3Vz cjFfaGFuZGxlcihTSUdOQUxfQVJHUykKIAlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfTE9H X01FTU9SWV9DT05URVhUKSkKIAkJSGFuZGxlTG9nTWVtb3J5Q29udGV4dEludGVycnVwdCgpOwog CisJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX1BBUkFMTEVMX0FQUExZX01FU1NBR0UpKQor CQlIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZUludGVycnVwdCgpOworCiAJaWYgKENoZWNrUHJv Y1NpZ25hbChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0RBVEFCQVNFKSkKIAkJUmVjb3ZlcnlD b25mbGljdEludGVycnVwdChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0RBVEFCQVNFKTsKIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xtZ3IuYyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvbG1nci9sbWdyLmMKaW5kZXggMTA0MzA2OC4uZDAxZmE3ZiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xtZ3IuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2xtZ3IvbG1nci5jCkBAIC0xMTE3LDYgKzExMTcsNDQgQEAgVW5sb2NrU2hhcmVkT2JqZWN0Rm9y U2Vzc2lvbihPaWQgY2xhc3NpZCwgT2lkIG9iamlkLCB1aW50MTYgb2Jqc3ViaWQsCiAJTG9ja1Jl bGVhc2UoJnRhZywgbG9ja21vZGUsIHRydWUpOwogfQogCisvKgorICoJCUxvY2tBcHBseVRyYW5z YWN0aW9uRm9yU2Vzc2lvbgorICoKKyAqIE9idGFpbiBhIHNlc3Npb24tbGV2ZWwgbG9jayBvbiBh IHRyYW5zYWN0aW9uIGJlaW5nIGFwcGxpZWQgb24gdGhlIHN1YnNjcmliZXIuCisgKiBTZWUgTG9j a1JlbGF0aW9uSWRGb3JTZXNzaW9uIGZvciBub3RlcyBhYm91dCBzZXNzaW9uLWxldmVsIGxvY2tz LgorICovCit2b2lkCitMb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNlc3Npb24oT2lkIHN1Ym9pZCwg VHJhbnNhY3Rpb25JZCB4aWQsIHVpbnQxNiBvYmppZCwKKwkJCQkJCQkgICBMT0NLTU9ERSBsb2Nr bW9kZSkKK3sKKwlMT0NLVEFHCQl0YWc7CisKKwlTRVRfTE9DS1RBR19BUFBMWV9UUkFOU0FDVElP Tih0YWcsCisJCQkJCQkJCSAgTXlEYXRhYmFzZUlkLAorCQkJCQkJCQkgIHN1Ym9pZCwKKwkJCQkJ CQkJICB4aWQsCisJCQkJCQkJCSAgb2JqaWQpOworCisJKHZvaWQpIExvY2tBY3F1aXJlKCZ0YWcs IGxvY2ttb2RlLCB0cnVlLCBmYWxzZSk7Cit9CisKKy8qCisgKgkJVW5sb2NrQXBwbHlUcmFuc2Fj dGlvbkZvclNlc3Npb24KKyAqLwordm9pZAorVW5sb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNlc3Np b24oT2lkIHN1Ym9pZCwgVHJhbnNhY3Rpb25JZCB4aWQsIHVpbnQxNiBvYmppZCwKKwkJCQkJCQkJ IExPQ0tNT0RFIGxvY2ttb2RlKQoreworCUxPQ0tUQUcJCXRhZzsKKworCVNFVF9MT0NLVEFHX0FQ UExZX1RSQU5TQUNUSU9OKHRhZywKKwkJCQkJCQkJICBNeURhdGFiYXNlSWQsCisJCQkJCQkJCSAg c3Vib2lkLAorCQkJCQkJCQkgIHhpZCwKKwkJCQkJCQkJICBvYmppZCk7CisKKwlMb2NrUmVsZWFz ZSgmdGFnLCBsb2NrbW9kZSwgdHJ1ZSk7Cit9CiAKIC8qCiAgKiBBcHBlbmQgYSBkZXNjcmlwdGlv biBvZiBhIGxvY2thYmxlIG9iamVjdCB0byBidWYuCkBAIC0xMjAyLDYgKzEyNDAsMTMgQEAgRGVz Y3JpYmVMb2NrVGFnKFN0cmluZ0luZm8gYnVmLCBjb25zdCBMT0NLVEFHICp0YWcpCiAJCQkJCQkJ IHRhZy0+bG9ja3RhZ19maWVsZDMsCiAJCQkJCQkJIHRhZy0+bG9ja3RhZ19maWVsZDQpOwogCQkJ YnJlYWs7CisJCWNhc2UgTE9DS1RBR19BUFBMWV9UUkFOU0FDVElPTjoKKwkJCWFwcGVuZFN0cmlu Z0luZm8oYnVmLAorCQkJCQkJCSBfKCJyZW1vdGUgdHJhbnNhY3Rpb24gJXUgb2Ygc3Vic2NyaXB0 aW9uICV1IG9mIGRhdGFiYXNlICV1IiksCisJCQkJCQkJIHRhZy0+bG9ja3RhZ19maWVsZDMsCisJ CQkJCQkJIHRhZy0+bG9ja3RhZ19maWVsZDIsCisJCQkJCQkJIHRhZy0+bG9ja3RhZ19maWVsZDEp OworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwKIAkJCQkJ CQkgXygidW5yZWNvZ25pemVkIGxvY2t0YWcgdHlwZSAlZCIpLApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4 IDMwODIwOTMuLmY1MmU1YmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMu YworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTMzNzksNiArMzM3OSw5IEBA IFByb2Nlc3NJbnRlcnJ1cHRzKHZvaWQpCiAKIAlpZiAoTG9nTWVtb3J5Q29udGV4dFBlbmRpbmcp CiAJCVByb2Nlc3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KCk7CisKKwlpZiAoUGFyYWxsZWxB cHBseU1lc3NhZ2VQZW5kaW5nKQorCQlIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZXMoKTsKIH0K IAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwppbmRleCA5MmYyNGE2 Li5kY2ZmNTk4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2 ZW50LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCkBAIC0y MzAsNiArMjMwLDkgQEAgcGdzdGF0X2dldF93YWl0X2FjdGl2aXR5KFdhaXRFdmVudEFjdGl2aXR5 IHcpCiAJCWNhc2UgV0FJVF9FVkVOVF9MT0dJQ0FMX0xBVU5DSEVSX01BSU46CiAJCQlldmVudF9u YW1lID0gIkxvZ2ljYWxMYXVuY2hlck1haW4iOwogCQkJYnJlYWs7CisJCWNhc2UgV0FJVF9FVkVO VF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX01BSU46CisJCQlldmVudF9uYW1lID0gIkxvZ2ljYWxQ YXJhbGxlbEFwcGx5TWFpbiI7CisJCQlicmVhazsKIAkJY2FzZSBXQUlUX0VWRU5UX1JFQ09WRVJZ X1dBTF9TVFJFQU06CiAJCQlldmVudF9uYW1lID0gIlJlY292ZXJ5V2FsU3RyZWFtIjsKIAkJCWJy ZWFrOwpAQCAtMzg4LDYgKzM5MSw5IEBAIHBnc3RhdF9nZXRfd2FpdF9pcGMoV2FpdEV2ZW50SVBD IHcpCiAJCWNhc2UgV0FJVF9FVkVOVF9IQVNIX0dST1dfQlVDS0VUU19SRUlOU0VSVDoKIAkJCWV2 ZW50X25hbWUgPSAiSGFzaEdyb3dCdWNrZXRzUmVpbnNlcnQiOwogCQkJYnJlYWs7CisJCWNhc2Ug V0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX1NUQVRFX0NIQU5HRToKKwkJCWV2ZW50 X25hbWUgPSAiTG9naWNhbFBhcmFsbGVsQXBwbHlTdGF0ZUNoYW5nZSI7CisJCQlicmVhazsKIAkJ Y2FzZSBXQUlUX0VWRU5UX0xPR0lDQUxfU1lOQ19EQVRBOgogCQkJZXZlbnRfbmFtZSA9ICJMb2dp Y2FsU3luY0RhdGEiOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvbG9ja2Z1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbG9ja2Z1bmNzLmMKaW5kZXgg ZjliMzI0ZS4uM2JmMDQ4MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2xvY2tm dW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9sb2NrZnVuY3MuYwpAQCAtMzcsMTAg KzM3LDExIEBAIGNvbnN0IGNoYXIgKmNvbnN0IExvY2tUYWdUeXBlTmFtZXNbXSA9IHsKIAkic3Bl Y3Rva2VuIiwKIAkib2JqZWN0IiwKIAkidXNlcmxvY2siLAotCSJhZHZpc29yeSIKKwkiYWR2aXNv cnkiLAorCSJhcHBseXRyYW5zYWN0aW9uIgogfTsKIAotU3RhdGljQXNzZXJ0RGVjbChsZW5ndGhv ZihMb2NrVGFnVHlwZU5hbWVzKSA9PSAoTE9DS1RBR19BRFZJU09SWSArIDEpLAorU3RhdGljQXNz ZXJ0RGVjbChsZW5ndGhvZihMb2NrVGFnVHlwZU5hbWVzKSA9PSAoTE9DS1RBR19MQVNUX1RZUEUg KyAxKSwKIAkJCQkgImFycmF5IGxlbmd0aCBtaXNtYXRjaCIpOwogCiAvKiBUaGlzIG11c3QgbWF0 Y2ggZW51bSBQcmVkaWNhdGVMb2NrVGFyZ2V0VHlwZSAocHJlZGljYXRlX2ludGVybmFscy5oKSAq LwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgYi9zcmMv YmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwppbmRleCA4MzZiNDk0Li42NzRiYThmIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMv YmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwpAQCAtMjk2Miw2ICsyOTYyLDE4IEBAIHN0 cnVjdCBjb25maWdfaW50IENvbmZpZ3VyZU5hbWVzSW50W10gPQogCX0sCiAKIAl7CisJCXsibWF4 X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiIsCisJCQlQR0NfU0lHSFVQ LAorCQkJUkVQTElDQVRJT05fU1VCU0NSSUJFUlMsCisJCQlnZXR0ZXh0X25vb3AoIk1heGltdW0g bnVtYmVyIG9mIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgcGVyIHN1YnNjcmlwdGlvbi4iKSwKKwkJ CU5VTEwsCisJCX0sCisJCSZtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0 aW9uLAorCQkyLCAwLCBNQVhfQkFDS0VORFMsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9LAorCisJ ewogCQl7ImxvZ19yb3RhdGlvbl9hZ2UiLCBQR0NfU0lHSFVQLCBMT0dHSU5HX1dIRVJFLAogCQkJ Z2V0dGV4dF9ub29wKCJTZXRzIHRoZSBhbW91bnQgb2YgdGltZSB0byB3YWl0IGJlZm9yZSBmb3Jj aW5nICIKIAkJCQkJCSAibG9nIGZpbGUgcm90YXRpb24uIiksCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGls cy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKaW5kZXggODY4ZDIxYy4uNGQwMWNhOSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQpAQCAtMzYw LDYgKzM2MCw3IEBACiAjbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycyA9IDQJIyB0YWtl biBmcm9tIG1heF93b3JrZXJfcHJvY2Vzc2VzCiAJCQkJCSMgKGNoYW5nZSByZXF1aXJlcyByZXN0 YXJ0KQogI21heF9zeW5jX3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiA9IDIJIyB0YWtlbiBmcm9t IG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMKKyNtYXhfcGFyYWxsZWxfYXBwbHlfd29y a2Vyc19wZXJfc3Vic2NyaXB0aW9uID0gMgkjIHRha2VuIGZyb20gbWF4X2xvZ2ljYWxfcmVwbGlj YXRpb25fd29ya2VycwogCiAKICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4 IGRhNDI3ZjQuLjUxNDFhNjYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMK KysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtNDQ4MSw3ICs0NDgxLDcgQEAgZ2V0 U3Vic2NyaXB0aW9ucyhBcmNoaXZlICpmb3V0KQogCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49 IDE0MDAwMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgcy5zdWJzdHJlYW0sXG4i KTsKIAllbHNlCi0JCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIGZhbHNlIEFTIHN1YnN0 cmVhbSxcbiIpOworCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiAnZicgQVMgc3Vic3Ry ZWFtLFxuIik7CiAKIAlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNTAwMDApCiAJCWFwcGVu ZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LApAQCAtNDYxOCw4ICs0NjE4LDEwIEBAIGR1bXBTdWJzY3Jp cHRpb24oQXJjaGl2ZSAqZm91dCwgY29uc3QgU3Vic2NyaXB0aW9uSW5mbyAqc3ViaW5mbykKIAlp ZiAoc3RyY21wKHN1YmluZm8tPnN1YmJpbmFyeSwgInQiKSA9PSAwKQogCQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cihxdWVyeSwgIiwgYmluYXJ5ID0gdHJ1ZSIpOwogCi0JaWYgKHN0cmNtcChzdWJpbmZv LT5zdWJzdHJlYW0sICJmIikgIT0gMCkKKwlpZiAoc3RyY21wKHN1YmluZm8tPnN1YnN0cmVhbSwg InQiKSA9PSAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgc3RyZWFtaW5nID0g b24iKTsKKwllbHNlIGlmIChzdHJjbXAoc3ViaW5mby0+c3Vic3RyZWFtLCAicCIpID09IDApCisJ CWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCBzdHJlYW1pbmcgPSBwYXJhbGxlbCIpOwog CiAJaWYgKHN0cmNtcChzdWJpbmZvLT5zdWJ0d29waGFzZXN0YXRlLCB0d29fcGhhc2VfZGlzYWJs ZWQpICE9IDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCB0d29fcGhhc2UgPSBv biIpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgYi9zcmMvYmluL3BzcWwv ZGVzY3JpYmUuYwppbmRleCAyZWFlNTE5Li43NDBiMTM1IDEwMDY0NAotLS0gYS9zcmMvYmluL3Bz cWwvZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtNjQ5OSwxMSAr NjQ5OSwyNCBAQCBkZXNjcmliZVN1YnNjcmlwdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9v bCB2ZXJib3NlKQogCXsKIAkJLyogQmluYXJ5IG1vZGUgYW5kIHN0cmVhbWluZyBhcmUgb25seSBz dXBwb3J0ZWQgaW4gdjE0IGFuZCBoaWdoZXIgKi8KIAkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTQw MDAwKQorCQl7CiAJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAotCQkJCQkJCSAgIiwgc3ViYmlu YXJ5IEFTIFwiJXNcIlxuIgotCQkJCQkJCSAgIiwgc3Vic3RyZWFtIEFTIFwiJXNcIlxuIiwKLQkJ CQkJCQkgIGdldHRleHRfbm9vcCgiQmluYXJ5IiksCi0JCQkJCQkJICBnZXR0ZXh0X25vb3AoIlN0 cmVhbWluZyIpKTsKKwkJCQkJCQkgICIsIHN1YmJpbmFyeSBBUyBcIiVzXCJcbiIsCisJCQkJCQkJ ICBnZXR0ZXh0X25vb3AoIkJpbmFyeSIpKTsKKworCQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTYw MDAwKQorCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkJCSAgIiwgKENBU0Ugc3Vi c3RyZWFtXG4iCisJCQkJCQkJCSAgIiAgICBXSEVOICdmJyBUSEVOICdvZmYnXG4iCisJCQkJCQkJ CSAgIiAgICBXSEVOICd0JyBUSEVOICdvbidcbiIKKwkJCQkJCQkJICAiICAgIFdIRU4gJ3AnIFRI RU4gJ3BhcmFsbGVsJ1xuIgorCQkJCQkJCQkgICIgICBFTkQpIEFTIFwiJXNcIlxuIiwKKwkJCQkJ CQkJICBnZXR0ZXh0X25vb3AoIlN0cmVhbWluZyIpKTsKKwkJCWVsc2UKKwkJCQlhcHBlbmRQUUV4 cEJ1ZmZlcigmYnVmLAorCQkJCQkJCQkgICIsIHN1YnN0cmVhbSBBUyBcIiVzXCJcbiIsCisJCQkJ CQkJCSAgZ2V0dGV4dF9ub29wKCJTdHJlYW1pbmciKSk7CisJCX0KIAogCQkvKiBUd29fcGhhc2Ug YW5kIGRpc2FibGVfb25fZXJyb3IgYXJlIG9ubHkgc3VwcG9ydGVkIGluIHYxNSBhbmQgaGlnaGVy ICovCiAJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE1MDAwMCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1 YnNjcmlwdGlvbi5oCmluZGV4IDdiOTg3MTQuLjAxNmFmYmMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19zdWJzY3JpcHRpb24uaApAQCAtODAsNyArODAsOCBAQCBDQVRBTE9HKHBnX3N1YnNjcmlwdGlv biw2MTAwLFN1YnNjcmlwdGlvblJlbGF0aW9uSWQpIEJLSV9TSEFSRURfUkVMQVRJT04gQktJX1JP VwogCWJvb2wJCXN1YmJpbmFyeTsJCS8qIFRydWUgaWYgdGhlIHN1YnNjcmlwdGlvbiB3YW50cyB0 aGUKIAkJCQkJCQkJICogcHVibGlzaGVyIHRvIHNlbmQgZGF0YSBpbiBiaW5hcnkgKi8KIAotCWJv b2wJCXN1YnN0cmVhbTsJCS8qIFN0cmVhbSBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuICovCisJ Y2hhcgkJc3Vic3RyZWFtOwkJLyogU3RyZWFtIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4gU2Vl CisJCQkJCQkJCSAqIFNVQlNUUkVBTV94eHggY29uc3RhbnRzLiAqLwogCiAJY2hhcgkJc3VidHdv cGhhc2VzdGF0ZTsJLyogU3RyZWFtIHR3by1waGFzZSB0cmFuc2FjdGlvbnMgKi8KIApAQCAtMTI0 LDcgKzEyNSw4IEBAIHR5cGVkZWYgc3RydWN0IFN1YnNjcmlwdGlvbgogCWJvb2wJCWVuYWJsZWQ7 CQkvKiBJbmRpY2F0ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiBpcyBlbmFibGVkICovCiAJYm9vbAkJ YmluYXJ5OwkJCS8qIEluZGljYXRlcyBpZiB0aGUgc3Vic2NyaXB0aW9uIHdhbnRzIGRhdGEgaW4K IAkJCQkJCQkJICogYmluYXJ5IGZvcm1hdCAqLwotCWJvb2wJCXN0cmVhbTsJCQkvKiBBbGxvdyBz dHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLiAqLworCWNoYXIJCXN0cmVhbTsJCQkv KiBBbGxvdyBzdHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLgorCQkJCQkJCQkgKiBT ZWUgU1VCU1RSRUFNX3h4eCBjb25zdGFudHMuICovCiAJY2hhcgkJdHdvcGhhc2VzdGF0ZTsJLyog QWxsb3cgc3RyZWFtaW5nIHR3by1waGFzZSB0cmFuc2FjdGlvbnMgKi8KIAlib29sCQlkaXNhYmxl b25lcnI7CS8qIEluZGljYXRlcyBpZiB0aGUgc3Vic2NyaXB0aW9uIHNob3VsZCBiZQogCQkJCQkJ CQkgKiBhdXRvbWF0aWNhbGx5IGRpc2FibGVkIGlmIGEgd29ya2VyIGVycm9yCkBAIC0xMzcsNiAr MTM5LDIxIEBAIHR5cGVkZWYgc3RydWN0IFN1YnNjcmlwdGlvbgogCQkJCQkJCQkgKiBzcGVjaWZp ZWQgb3JpZ2luICovCiB9IFN1YnNjcmlwdGlvbjsKIAorLyogRGlzYWxsb3cgc3RyZWFtaW5nIGlu LXByb2dyZXNzIHRyYW5zYWN0aW9ucy4gKi8KKyNkZWZpbmUgU1VCU1RSRUFNX09GRiAnZicKKwor LyoKKyAqIFN0cmVhbWluZyBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMgYXJlIHdyaXR0ZW4gdG8g YSB0ZW1wb3JhcnkgZmlsZSBhbmQKKyAqIGFwcGxpZWQgb25seSBhZnRlciB0aGUgdHJhbnNhY3Rp b24gaXMgY29tbWl0dGVkIG9uIHVwc3RyZWFtLgorICovCisjZGVmaW5lIFNVQlNUUkVBTV9PTiAn dCcKKworLyoKKyAqIFN0cmVhbWluZyBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMgYXJlIGFwcGxp ZWQgaW1tZWRpYXRlbHkgdmlhIGEgcGFyYWxsZWwKKyAqIGFwcGx5IHdvcmtlci4KKyAqLworI2Rl ZmluZSBTVUJTVFJFQU1fUEFSQUxMRUwgJ3AnCisKIGV4dGVybiBTdWJzY3JpcHRpb24gKkdldFN1 YnNjcmlwdGlvbihPaWQgc3ViaWQsIGJvb2wgbWlzc2luZ19vayk7CiBleHRlcm4gdm9pZCBGcmVl U3Vic2NyaXB0aW9uKFN1YnNjcmlwdGlvbiAqc3ViKTsKIGV4dGVybiB2b2lkIERpc2FibGVTdWJz Y3JpcHRpb24oT2lkIHN1YmlkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3N1 YnNjcmlwdGlvbmNtZHMuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMu aAppbmRleCAyY2JlN2Q3Li43Nzk0NzRmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5k cy9zdWJzY3JpcHRpb25jbWRzLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvc3Vic2NyaXB0 aW9uY21kcy5oCkBAIC0yNiw0ICsyNiw2IEBAIGV4dGVybiB2b2lkIERyb3BTdWJzY3JpcHRpb24o RHJvcFN1YnNjcmlwdGlvblN0bXQgKnN0bXQsIGJvb2wgaXNUb3BMZXZlbCk7CiBleHRlcm4gT2Jq ZWN0QWRkcmVzcyBBbHRlclN1YnNjcmlwdGlvbk93bmVyKGNvbnN0IGNoYXIgKm5hbWUsIE9pZCBu ZXdPd25lcklkKTsKIGV4dGVybiB2b2lkIEFsdGVyU3Vic2NyaXB0aW9uT3duZXJfb2lkKE9pZCBz dWJpZCwgT2lkIG5ld093bmVySWQpOwogCitleHRlcm4gY2hhciBkZWZHZXRTdHJlYW1pbmdNb2Rl KERlZkVsZW0gKmRlZik7CisKICNlbmRpZgkJCQkJCQkvKiBTVUJTQ1JJUFRJT05DTURTX0ggKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oIGIv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmgKaW5kZXggZjFlMjgyMS4u ZDUxM2VmNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbGxhdW5j aGVyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmgKQEAg LTE0LDYgKzE0LDcgQEAKIAogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfbG9naWNhbF9yZXBs aWNhdGlvbl93b3JrZXJzOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfc3luY193b3JrZXJz X3Blcl9zdWJzY3JpcHRpb247CitleHRlcm4gUEdETExJTVBPUlQgaW50IG1heF9wYXJhbGxlbF9h cHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb247CiAKIGV4dGVybiB2b2lkIEFwcGx5TGF1bmNo ZXJSZWdpc3Rlcih2b2lkKTsKIGV4dGVybiB2b2lkIEFwcGx5TGF1bmNoZXJNYWluKERhdHVtIG1h aW5fYXJnKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90 by5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKaW5kZXggN2VhYTRj OS4uMWRhN2IwMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHBy b3RvLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKQEAgLTMy LDEyICszMiwxNyBAQAogICoKICAqIExPR0lDQUxSRVBfUFJPVE9fVFdPUEhBU0VfVkVSU0lPTl9O VU0gaXMgdGhlIG1pbmltdW0gcHJvdG9jb2wgdmVyc2lvbiB3aXRoCiAgKiBzdXBwb3J0IGZvciB0 d28tcGhhc2UgY29tbWl0IGRlY29kaW5nIChhdCBwcmVwYXJlIHRpbWUpLiBJbnRyb2R1Y2VkIGlu IFBHMTUuCisgKgorICogTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9O VU0gaXMgdGhlIG1pbmltdW0gcHJvdG9jb2wgdmVyc2lvbgorICogd2hlcmUgd2Ugc3VwcG9ydCBh cHBseWluZyBsYXJnZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIGluIHBhcmFsbGVsLgorICogSW50 cm9kdWNlZCBpbiBQRzE2LgogICovCiAjZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fTUlOX1ZFUlNJ T05fTlVNIDEKICNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19WRVJTSU9OX05VTSAxCiAjZGVmaW5l IExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1ZFUlNJT05fTlVNIDIKICNkZWZpbmUgTE9HSUNBTFJF UF9QUk9UT19UV09QSEFTRV9WRVJTSU9OX05VTSAzCi0jZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9f TUFYX1ZFUlNJT05fTlVNIExPR0lDQUxSRVBfUFJPVE9fVFdPUEhBU0VfVkVSU0lPTl9OVU0KKyNk ZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0gNAorI2Rl ZmluZSBMT0dJQ0FMUkVQX1BST1RPX01BWF9WRVJTSU9OX05VTSBMT0dJQ0FMUkVQX1BST1RPX1NU UkVBTV9QQVJBTExFTF9WRVJTSU9OX05VTQogCiAvKgogICogTG9naWNhbCBtZXNzYWdlIHR5cGVz CkBAIC0xNzUsNiArMTgwLDE3IEBAIHR5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBSb2xsYmFja1By ZXBhcmVkVHhuRGF0YQogCWNoYXIJCWdpZFtHSURTSVpFXTsKIH0gTG9naWNhbFJlcFJvbGxiYWNr UHJlcGFyZWRUeG5EYXRhOwogCisvKgorICogVHJhbnNhY3Rpb24gcHJvdG9jb2wgaW5mb3JtYXRp b24gZm9yIHN0cmVhbSBhYm9ydC4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFN0cmVh bUFib3J0RGF0YQoreworCVRyYW5zYWN0aW9uSWQgeGlkOworCVRyYW5zYWN0aW9uSWQgc3VieGlk OworCVhMb2dSZWNQdHIJYWJvcnRfbHNuOworCVRpbWVzdGFtcFR6IGFib3J0X3RpbWU7Cit9IExv Z2ljYWxSZXBTdHJlYW1BYm9ydERhdGE7CisKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd3JpdGVf YmVnaW4oU3RyaW5nSW5mbyBvdXQsIFJlb3JkZXJCdWZmZXJUWE4gKnR4bik7CiBleHRlcm4gdm9p ZCBsb2dpY2FscmVwX3JlYWRfYmVnaW4oU3RyaW5nSW5mbyBpbiwKIAkJCQkJCQkJICBMb2dpY2Fs UmVwQmVnaW5EYXRhICpiZWdpbl9kYXRhKTsKQEAgLTI0Niw5ICsyNjIsMTMgQEAgZXh0ZXJuIHZv aWQgbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gb3V0LCBSZW9yZGVy QnVmZmVyVFhOICp0eG4KIGV4dGVybiBUcmFuc2FjdGlvbklkIGxvZ2ljYWxyZXBfcmVhZF9zdHJl YW1fY29tbWl0KFN0cmluZ0luZm8gaW4sCiAJCQkJCQkJCQkJCQkgICBMb2dpY2FsUmVwQ29tbWl0 RGF0YSAqY29tbWl0X2RhdGEpOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93cml0ZV9zdHJlYW1f YWJvcnQoU3RyaW5nSW5mbyBvdXQsIFRyYW5zYWN0aW9uSWQgeGlkLAotCQkJCQkJCQkJCSAgVHJh bnNhY3Rpb25JZCBzdWJ4aWQpOwotZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9h Ym9ydChTdHJpbmdJbmZvIGluLCBUcmFuc2FjdGlvbklkICp4aWQsCi0JCQkJCQkJCQkJIFRyYW5z YWN0aW9uSWQgKnN1YnhpZCk7CisJCQkJCQkJCQkJICBUcmFuc2FjdGlvbklkIHN1YnhpZCwKKwkJ CQkJCQkJCQkgIFhMb2dSZWNQdHIgYWJvcnRfbHNuLAorCQkJCQkJCQkJCSAgVGltZXN0YW1wVHog YWJvcnRfdGltZSwKKwkJCQkJCQkJCQkgIGJvb2wgd3JpdGVfYWJvcnRfaW5mbyk7CitleHRlcm4g dm9pZCBsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gaW4sCisJCQkJCQkJ CQkJIExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEgKmFib3J0X2RhdGEsCisJCQkJCQkJCQkJIGJv b2wgcmVhZF9hYm9ydF9pbmZvKTsKIGV4dGVybiBjaGFyICpsb2dpY2FscmVwX21lc3NhZ2VfdHlw ZShMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24pOwogCiAjZW5kaWYJCQkJCQkJLyogTE9HSUNBTF9Q Uk9UT19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29y a2VyLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgKaW5kZXggY2Qx YjZlOC4uZGM2OGNkOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNh bHdvcmtlci5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaApA QCAtMTIsOCArMTIsMTYgQEAKICNpZm5kZWYgTE9HSUNBTFdPUktFUl9ICiAjZGVmaW5lIExPR0lD QUxXT1JLRVJfSAogCisjaW5jbHVkZSA8c2lnbmFsLmg+CisKK2V4dGVybiBQR0RMTElNUE9SVCB2 b2xhdGlsZSBzaWdfYXRvbWljX3QgUGFyYWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nOworCiBleHRl cm4gdm9pZCBBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpOworZXh0ZXJuIHZvaWQgUGFy YWxsZWxBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpOwogCiBleHRlcm4gYm9vbCBJc0xv Z2ljYWxXb3JrZXIodm9pZCk7CitleHRlcm4gYm9vbCBJc0xvZ2ljYWxQYXJhbGxlbEFwcGx5V29y a2VyKHZvaWQpOworZXh0ZXJuIHZvaWQgSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VJbnRlcnJ1 cHQodm9pZCk7CitleHRlcm4gdm9pZCBIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZXModm9pZCk7 CiAKICNlbmRpZgkJCQkJCQkvKiBMT0dJQ0FMV09SS0VSX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL29yaWdpbi5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3Jp Z2luLmgKaW5kZXggMmE1MGQxMC4uYzdiMWFkZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vb3JpZ2luLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmgK QEAgLTUzLDcgKzUzLDcgQEAgZXh0ZXJuIFhMb2dSZWNQdHIgcmVwbG9yaWdpbl9nZXRfcHJvZ3Jl c3MoUmVwT3JpZ2luSWQgbm9kZSwgYm9vbCBmbHVzaCk7CiAKIGV4dGVybiB2b2lkIHJlcGxvcmln aW5fc2Vzc2lvbl9hZHZhbmNlKFhMb2dSZWNQdHIgcmVtb3RlX2NvbW1pdCwKIAkJCQkJCQkJCSAg IFhMb2dSZWNQdHIgbG9jYWxfY29tbWl0KTsKLWV4dGVybiB2b2lkIHJlcGxvcmlnaW5fc2Vzc2lv bl9zZXR1cChSZXBPcmlnaW5JZCBub2RlKTsKK2V4dGVybiB2b2lkIHJlcGxvcmlnaW5fc2Vzc2lv bl9zZXR1cChSZXBPcmlnaW5JZCBub2RlLCBpbnQgYWNxdWlyZWRfYnkpOwogZXh0ZXJuIHZvaWQg cmVwbG9yaWdpbl9zZXNzaW9uX3Jlc2V0KHZvaWQpOwogZXh0ZXJuIFhMb2dSZWNQdHIgcmVwbG9y aWdpbl9zZXNzaW9uX2dldF9wcm9ncmVzcyhib29sIGZsdXNoKTsKIApkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vcGdvdXRwdXQuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L3Bnb3V0cHV0LmgKaW5kZXggMDIwMjc1NS4uM2MzMGRhOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vcGdvdXRwdXQuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9w Z291dHB1dC5oCkBAIC0yNiw3ICsyNiw3IEBAIHR5cGVkZWYgc3RydWN0IFBHT3V0cHV0RGF0YQog CUxpc3QJICAgKnB1YmxpY2F0aW9uX25hbWVzOwogCUxpc3QJICAgKnB1YmxpY2F0aW9uczsKIAli b29sCQliaW5hcnk7Ci0JYm9vbAkJc3RyZWFtaW5nOworCWNoYXIJCXN0cmVhbWluZzsKIAlib29s CQltZXNzYWdlczsKIAlib29sCQl0d29fcGhhc2U7CiAJY2hhcgkgICAqb3JpZ2luOwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oIGIvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oCmluZGV4IGIyM2Q4Y2MuLmIyYTcwMjkgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaAorKysgYi9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKQEAgLTMwMSw2ICszMDEsNyBA QCB0eXBlZGVmIHN0cnVjdCBSZW9yZGVyQnVmZmVyVFhOCiAJewogCQlUaW1lc3RhbXBUeiBjb21t aXRfdGltZTsKIAkJVGltZXN0YW1wVHogcHJlcGFyZV90aW1lOworCQlUaW1lc3RhbXBUeiBhYm9y dF90aW1lOwogCX0JCQl4YWN0X3RpbWU7CiAKIAkvKgpAQCAtNjYzLDkgKzY2NCwxMSBAQCBleHRl cm4gdm9pZCBSZW9yZGVyQnVmZmVyQXNzaWduQ2hpbGQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5z YWN0aW9uSWQgeGlkLAogZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckNvbW1pdENoaWxkKFJlb3Jk ZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwKIAkJCQkJCQkJCSBUcmFuc2FjdGlvbklk IHN1YnhpZCwgWExvZ1JlY1B0ciBjb21taXRfbHNuLAogCQkJCQkJCQkJIFhMb2dSZWNQdHIgZW5k X2xzbik7Ci1leHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqcmIs IFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbik7CitleHRlcm4gdm9pZCBSZW9yZGVy QnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVj UHRyIGxzbiwKKwkJCQkJCQkgICBUaW1lc3RhbXBUeiBhYm9ydF90aW1lKTsKIGV4dGVybiB2b2lk IFJlb3JkZXJCdWZmZXJBYm9ydE9sZChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCBv bGRlc3RSdW5uaW5nWGlkKTsKLWV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJGb3JnZXQoUmVvcmRl ckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbik7CitleHRlcm4g dm9pZCBSZW9yZGVyQnVmZmVyRm9yZ2V0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklk IHhpZCwgWExvZ1JlY1B0ciBsc24sCisJCQkJCQkJCVRpbWVzdGFtcFR6IGFib3J0X3RpbWUpOwog ZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckludmFsaWRhdGUoUmVvcmRlckJ1ZmZlciAqcmIsIFRy YW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbik7CiAKIGV4dGVybiB2b2lkIFJlb3JkZXJC dWZmZXJTZXRCYXNlU25hcHNob3QoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlk LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCBiL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgKaW5kZXggOTMzOWYyOS4uMGM4YmJk ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaAorKysg Yi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oCkBAIC0xODIsNyArMTgyLDcg QEAgdHlwZWRlZiBzdHJ1Y3QKIAkJCXVpbnQzMgkJcHJvdG9fdmVyc2lvbjsJLyogTG9naWNhbCBw cm90b2NvbCB2ZXJzaW9uICovCiAJCQlMaXN0CSAgICpwdWJsaWNhdGlvbl9uYW1lczsJLyogU3Ry aW5nIGxpc3Qgb2YgcHVibGljYXRpb25zICovCiAJCQlib29sCQliaW5hcnk7IC8qIEFzayBwdWJs aXNoZXIgdG8gdXNlIGJpbmFyeSAqLwotCQkJYm9vbAkJc3RyZWFtaW5nOwkvKiBTdHJlYW1pbmcg b2YgbGFyZ2UgdHJhbnNhY3Rpb25zICovCisJCQljaGFyCSAgICpzdHJlYW1pbmdfc3RyOwkvKiBT dHJlYW1pbmcgb2YgbGFyZ2UgdHJhbnNhY3Rpb25zICovCiAJCQlib29sCQl0d29waGFzZTsJLyog U3RyZWFtaW5nIG9mIHR3by1waGFzZSB0cmFuc2FjdGlvbnMgYXQKIAkJCQkJCQkJCSAqIHByZXBh cmUgdGltZSAqLwogCQkJY2hhcgkgICAqb3JpZ2luOyAvKiBPbmx5IHB1Ymxpc2ggZGF0YSBvcmln aW5hdGluZyBmcm9tIHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29y a2VyX2ludGVybmFsLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwu aAppbmRleCAyYjcxMTRmLi5jMWY4NjY2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi93b3JrZXJfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3Jr ZXJfaW50ZXJuYWwuaApAQCAtMTcsOCArMTcsMTIgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2Rl ZnMuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIgogI2luY2x1ZGUgImRh dGF0eXBlL3RpbWVzdGFtcC5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgInJl cGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmlsZXNldC5o IgogI2luY2x1ZGUgInN0b3JhZ2UvbG9jay5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc2htX21xLmgi CisjaW5jbHVkZSAic3RvcmFnZS9zaG1fdG9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgi CiAKIApAQCAtNjAsNiArNjQsMTUgQEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFdvcmtlcgog CSAqLwogCUZpbGVTZXQgICAgKnN0cmVhbV9maWxlc2V0OwogCisJLyoKKwkgKiBQSUQgb2YgbGVh ZGVyIGFwcGx5IHdvcmtlciBpZiB0aGlzIHNsb3QgaXMgdXNlZCBmb3IgYSBwYXJhbGxlbCBhcHBs eQorCSAqIHdvcmtlciwgSW52YWxpZFBpZCBvdGhlcndpc2UuCisJICovCisJcGlkX3QJCWFwcGx5 X2xlYWRlcl9waWQ7CisKKwkvKiBJbmRpY2F0ZXMgd2hldGhlciBhcHBseSBjYW4gYmUgcGVyZm9y bWVkIGluIHBhcmFsbGVsLiAqLworCWJvb2wJCXBhcmFsbGVsX2FwcGx5OworCiAJLyogU3RhdHMu ICovCiAJWExvZ1JlY1B0cglsYXN0X2xzbjsKIAlUaW1lc3RhbXBUeiBsYXN0X3NlbmRfdGltZTsK QEAgLTY4LDkgKzgxLDEwMyBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwV29ya2VyCiAJVGlt ZXN0YW1wVHogcmVwbHlfdGltZTsKIH0gTG9naWNhbFJlcFdvcmtlcjsKIAorLyogU3RydWN0IGZv ciBzYXZpbmcgYW5kIHJlc3RvcmluZyBhcHBseSBlcnJjb250ZXh0IGluZm9ybWF0aW9uICovCit0 eXBlZGVmIHN0cnVjdCBBcHBseUVycm9yQ2FsbGJhY2tBcmcKK3sKKwlMb2dpY2FsUmVwTXNnVHlw ZSBjb21tYW5kOwkvKiAwIGlmIGludmFsaWQgKi8KKwlMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJl bDsKKworCS8qIFJlbW90ZSBub2RlIGluZm9ybWF0aW9uICovCisJaW50CQkJcmVtb3RlX2F0dG51 bTsJLyogLTEgaWYgaW52YWxpZCAqLworCVRyYW5zYWN0aW9uSWQgcmVtb3RlX3hpZDsKKwlYTG9n UmVjUHRyCWZpbmlzaF9sc247CisJY2hhcgkgICAqb3JpZ2luX25hbWU7Cit9IEFwcGx5RXJyb3JD YWxsYmFja0FyZzsKKworLyoKKyAqIFN0YXRlIG9mIHRoZSB0cmFuc2FjdGlvbiBpbiBwYXJhbGxl bCBhcHBseSB3b3JrZXIuCisgKgorICogVGhlc2UgZW51bSB2YWx1ZXMgYXJlIG9yZGVyZWQgYnkg dGhlIG9yZGVyIG9mIHRyYW5zYWN0aW9uIHN0YXRlIGNoYW5nZXMgaW4KKyAqIHBhcmFsbGVsIGFw cGx5IHdvcmtlci4KKyAqLwordHlwZWRlZiBlbnVtIFBhcmFsbGVsVHJhbnNTdGF0ZQoreworCVBB UkFMTEVMX1RSQU5TX1VOS05PV04sCisJUEFSQUxMRUxfVFJBTlNfU1RBUlRFRCwKKwlQQVJBTExF TF9UUkFOU19GSU5JU0hFRAorfSBQYXJhbGxlbFRyYW5zU3RhdGU7CisKKy8qCisgKiBTdHJ1Y3Qg Zm9yIHNoYXJpbmcgaW5mb3JtYXRpb24gYmV0d2VlbiBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBw YXJhbGxlbAorICogYXBwbHkgd29ya2Vycy4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxB cHBseVdvcmtlclNoYXJlZAoreworCXNsb2NrX3QJCW11dGV4OworCisJVHJhbnNhY3Rpb25JZAl4 aWQ7CisKKwkvKgorCSAqIFN0YXRlIHVzZWQgdG8gZW5zdXJlIGNvbW1pdCBvcmRlcmluZy4KKwkg KgorCSAqIFRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2lsbCBzZXQgaXQgdG8gUEFSQUxMRUxf VFJBTlNfRklOSVNIRUQgYWZ0ZXIKKwkgKiBoYW5kbGluZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNo IGNvbW1hbmRzIHdoaWxlIHRoZSBhcHBseSBsZWFkZXIgd2lsbAorCSAqIHdhaXQgZm9yIGl0IHRv IGJlY29tZSBQQVJBTExFTF9UUkFOU19GSU5JU0hFRCBiZWZvcmUgcHJvY2VlZGluZyBpbgorCSAq IHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kcyAoZS5nLiBTVFJFQU1fQ09NTUlUL1NUUkVBTV9Q UkVQQVJFKS4KKwkgKi8KKwlQYXJhbGxlbFRyYW5zU3RhdGUJCXhhY3Rfc3RhdGU7CisKKwkvKiBJ bmZvcm1hdGlvbiBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIExvZ2ljYWxSZXBXb3JrZXIgc2xvdC4g Ki8KKwl1aW50MTYJCWxvZ2ljYWxyZXBfd29ya2VyX2dlbmVyYXRpb247CisKKwlpbnQJCQlsb2dp Y2FscmVwX3dvcmtlcl9zbG90X25vOworCisJLyoKKwkgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGVy ZSBhcmUgcGVuZGluZyBtZXNzYWdlcyBpbiB0aGUgcXVldWUuIFRoZSBwYXJhbGxlbAorCSAqIGFw cGx5IHdvcmtlciB3aWxsIGNoZWNrIGl0IGJlZm9yZSBzdGFydGluZyB0byB3YWl0LgorCSAqLwor CXBnX2F0b21pY191aW50MzIJcGVuZGluZ19tZXNzYWdlX2NvdW50OworfSBQYXJhbGxlbEFwcGx5 V29ya2VyU2hhcmVkOworCisvKgorICogSW5mb3JtYXRpb24gd2hpY2ggaXMgdXNlZCB0byBtYW5h Z2UgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgUGFyYWxs ZWxBcHBseVdvcmtlckluZm8KK3sKKwlzaG1fbXFfaGFuZGxlICptcV9oYW5kbGU7CisKKwkvKgor CSAqIFRoZSBxdWV1ZSB1c2VkIHRvIHRyYW5zZmVyIGVycm9yIG1lc3NhZ2VzIGZyb20gdGhlIHBh cmFsbGVsIGFwcGx5IHdvcmtlcgorCSAqIHRvIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyLiBOVUxM IGlmIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZXhpdGVkCisJICogY2xlYW5seS4KKwkgKi8K KwlzaG1fbXFfaGFuZGxlICplcnJvcl9tcV9oYW5kbGU7CisKKwlkc21fc2VnbWVudCAqZHNtX3Nl ZzsKKworCS8qCisJICogVHJ1ZSBpZiB0aGUgd29ya2VyIGlzIGJlaW5nIHVzZWQgdG8gcHJvY2Vz cyBhIHBhcmFsbGVsIGFwcGx5CisJICogdHJhbnNhY3Rpb24uIEZhbHNlIGluZGljYXRlcyB0aGlz IHdvcmtlciBpcyBhdmFpbGFibGUgZm9yIHJlLXVzZS4KKwkgKi8KKwlib29sCQlpbl91c2U7CisK KwlQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICpzaGFyZWQ7Cit9IFBhcmFsbGVsQXBwbHlXb3Jr ZXJJbmZvOworCiAvKiBNYWluIG1lbW9yeSBjb250ZXh0IGZvciBhcHBseSB3b3JrZXIuIFBlcm1h bmVudCBkdXJpbmcgd29ya2VyIGxpZmV0aW1lLiAqLwogZXh0ZXJuIFBHRExMSU1QT1JUIE1lbW9y eUNvbnRleHQgQXBwbHlDb250ZXh0OwogCitleHRlcm4gUEdETExJTVBPUlQgTWVtb3J5Q29udGV4 dCBBcHBseU1lc3NhZ2VDb250ZXh0OworCitleHRlcm4gUEdETExJTVBPUlQgRXJyb3JDb250ZXh0 Q2FsbGJhY2sgKmFwcGx5X2Vycm9yX2NvbnRleHRfc3RhY2s7CitleHRlcm4gUEdETExJTVBPUlQg QXBwbHlFcnJvckNhbGxiYWNrQXJnIGFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZzsKKworZXh0ZXJu IFBHRExMSU1QT1JUIGJvb2wgTXlTdWJzY3JpcHRpb25WYWxpZDsKKworZXh0ZXJuIFBHRExMSU1Q T1JUIFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKk15UGFyYWxsZWxTaGFyZWQ7CisKK2V4dGVy biBQR0RMTElNUE9SVCBMaXN0ICpzdWJ4YWN0bGlzdDsKKwogLyogbGlicHFyZWNlaXZlciBjb25u ZWN0aW9uICovCiBleHRlcm4gUEdETExJTVBPUlQgc3RydWN0IFdhbFJlY2VpdmVyQ29ubiAqTG9n UmVwV29ya2VyV2FsUmN2Q29ubjsKIApAQCAtNzksMTggKzE4NiwyMyBAQCBleHRlcm4gUEdETExJ TVBPUlQgU3Vic2NyaXB0aW9uICpNeVN1YnNjcmlwdGlvbjsKIGV4dGVybiBQR0RMTElNUE9SVCBM b2dpY2FsUmVwV29ya2VyICpNeUxvZ2ljYWxSZXBXb3JrZXI7CiAKIGV4dGVybiBQR0RMTElNUE9S VCBib29sIGluX3JlbW90ZV90cmFuc2FjdGlvbjsKK2V4dGVybiBQR0RMTElNUE9SVCBib29sIGlu X3N0cmVhbWVkX3RyYW5zYWN0aW9uOworZXh0ZXJuIFBHRExMSU1QT1JUIFBhcmFsbGVsQXBwbHlX b3JrZXJJbmZvICpzdHJlYW1fYXBwbHlfd29ya2VyOwogCiBleHRlcm4gdm9pZCBsb2dpY2FscmVw X3dvcmtlcl9hdHRhY2goaW50IHNsb3QpOwogZXh0ZXJuIExvZ2ljYWxSZXBXb3JrZXIgKmxvZ2lj YWxyZXBfd29ya2VyX2ZpbmQoT2lkIHN1YmlkLCBPaWQgcmVsaWQsCiAJCQkJCQkJCQkJCQlib29s IG9ubHlfcnVubmluZyk7CiBleHRlcm4gTGlzdCAqbG9naWNhbHJlcF93b3JrZXJzX2ZpbmQoT2lk IHN1YmlkLCBib29sIG9ubHlfcnVubmluZyk7Ci1leHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtl cl9sYXVuY2goT2lkIGRiaWQsIE9pZCBzdWJpZCwgY29uc3QgY2hhciAqc3VibmFtZSwKLQkJCQkJ CQkJCSBPaWQgdXNlcmlkLCBPaWQgcmVsaWQpOworZXh0ZXJuIGJvb2wgbG9naWNhbHJlcF93b3Jr ZXJfbGF1bmNoKE9pZCBkYmlkLCBPaWQgc3ViaWQsIGNvbnN0IGNoYXIgKnN1Ym5hbWUsCisJCQkJ CQkJCQkgT2lkIHVzZXJpZCwgT2lkIHJlbGlkLAorCQkJCQkJCQkJIGRzbV9oYW5kbGUgc3Vid29y a2VyX2RzbSk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wKE9pZCBzdWJpZCwg T2lkIHJlbGlkKTsKK2V4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfYnlfc2xvdChp bnQgc2xvdF9ubywgdWludDE2IGdlbmVyYXRpb24pOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93 b3JrZXJfd2FrZXVwKE9pZCBzdWJpZCwgT2lkIHJlbGlkKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxy ZXBfd29ya2VyX3dha2V1cF9wdHIoTG9naWNhbFJlcFdvcmtlciAqd29ya2VyKTsKIAogZXh0ZXJu IGludAlsb2dpY2FscmVwX3N5bmNfd29ya2VyX2NvdW50KE9pZCBzdWJpZCk7CitleHRlcm4gaW50 CWxvZ2ljYWxyZXBfcGFyYWxsZWxfYXBwbHlfd29ya2VyX2NvdW50KE9pZCBzdWJpZCk7CiAKIGV4 dGVybiB2b2lkIFJlcGxpY2F0aW9uT3JpZ2luTmFtZUZvckxvZ2ljYWxSZXAoT2lkIHN1Ym9pZCwg T2lkIHJlbGlkLAogCQkJCQkJCQkJCQkgICBjaGFyICpvcmlnaW5uYW1lLCBTaXplIHN6b3JpZ2lu bmFtZSk7CkBAIC0xMDMsMTAgKzIxNSw1NCBAQCBleHRlcm4gdm9pZCBwcm9jZXNzX3N5bmNpbmdf dGFibGVzKFhMb2dSZWNQdHIgY3VycmVudF9sc24pOwogZXh0ZXJuIHZvaWQgaW52YWxpZGF0ZV9z eW5jaW5nX3RhYmxlX3N0YXRlcyhEYXR1bSBhcmcsIGludCBjYWNoZWlkLAogCQkJCQkJCQkJCQl1 aW50MzIgaGFzaHZhbHVlKTsKIAorZXh0ZXJuIHZvaWQgYXBwbHlfZGlzcGF0Y2goU3RyaW5nSW5m byBzKTsKKworZXh0ZXJuIHZvaWQgbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKTsKKwor ZXh0ZXJuIHZvaWQgSW5pdGlhbGl6ZUFwcGx5V29ya2VyKHZvaWQpOworCisvKiBGdW5jdGlvbiBm b3IgYXBwbHkgZXJyb3IgY2FsbGJhY2sgKi8KK2V4dGVybiB2b2lkIGFwcGx5X2Vycm9yX2NhbGxi YWNrKHZvaWQgKmFyZyk7CisKKy8qIFBhcmFsbGVsIGFwcGx5IHdvcmtlciBzZXR1cCBhbmQgaW50 ZXJhY3Rpb25zICovCitleHRlcm4gdm9pZCBwYV9zdGFydF93b3JrZXIoVHJhbnNhY3Rpb25JZCB4 aWQpOworZXh0ZXJuIFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICpwYV9maW5kX3dvcmtlcihUcmFu c2FjdGlvbklkIHhpZCk7CitleHRlcm4gdm9pZCBwYV9zZXRfeGFjdF9zdGF0ZShQYXJhbGxlbEFw cGx5V29ya2VyU2hhcmVkICp3c2hhcmVkLAorCQkJCQkJCQkJCSAgUGFyYWxsZWxUcmFuc1N0YXRl IGluX3hhY3QpOworZXh0ZXJuIGJvb2wgcGFfZnJlZV93b3JrZXIoUGFyYWxsZWxBcHBseVdvcmtl ckluZm8gKndpbmZvLCBUcmFuc2FjdGlvbklkIHhpZCk7CisKK2V4dGVybiB2b2lkIHBhX3dhaXRf Zm9yX3hhY3RfZmluaXNoKFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKndzaGFyZWQpOworZXh0 ZXJuIHZvaWQgcGFfc2VuZF9kYXRhKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgU2l6 ZSBuYnl0ZXMsCisJCQkJCQkJCQkgY29uc3Qgdm9pZCAqZGF0YSk7CisKK2V4dGVybiB2b2lkIHBh X3N0YXJ0X3N1YnRyYW5zKFRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQsIFRyYW5zYWN0aW9uSWQg dG9wX3hpZCk7CitleHRlcm4gdm9pZCBwYV9zdHJlYW1fYWJvcnQoTG9naWNhbFJlcFN0cmVhbUFi b3J0RGF0YSAqYWJvcnRfZGF0YSk7CisKK2V4dGVybiB2b2lkIHBhX2xvY2tfc3RyZWFtKFRyYW5z YWN0aW9uSWQgeGlkLCBMT0NLTU9ERSBsb2NrbW9kZSk7CitleHRlcm4gdm9pZCBwYV9sb2NrX3Ry YW5zYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLCBMT0NLTU9ERSBsb2NrbW9kZSk7CisKK2V4dGVy biB2b2lkIHBhX3VubG9ja19zdHJlYW0oVHJhbnNhY3Rpb25JZCB4aWQsIExPQ0tNT0RFIGxvY2tt b2RlKTsKK2V4dGVybiB2b2lkIHBhX3VubG9ja190cmFuc2FjdGlvbihUcmFuc2FjdGlvbklkIHhp ZCwgTE9DS01PREUgbG9ja21vZGUpOworCisjZGVmaW5lIGlzUGFyYWxsZWxBcHBseVdvcmtlcih3 b3JrZXIpICgod29ya2VyKS0+YXBwbHlfbGVhZGVyX3BpZCAhPSBJbnZhbGlkUGlkKQorCiBzdGF0 aWMgaW5saW5lIGJvb2wKIGFtX3RhYmxlc3luY193b3JrZXIodm9pZCkKIHsKIAlyZXR1cm4gT2lk SXNWYWxpZChNeUxvZ2ljYWxSZXBXb3JrZXItPnJlbGlkKTsKIH0KIAorc3RhdGljIGlubGluZSBi b29sCithbV9sZWFkZXJfYXBwbHlfd29ya2VyKHZvaWQpCit7CisJcmV0dXJuICghT2lkSXNWYWxp ZChNeUxvZ2ljYWxSZXBXb3JrZXItPnJlbGlkKSAmJgorCQkJIWlzUGFyYWxsZWxBcHBseVdvcmtl cihNeUxvZ2ljYWxSZXBXb3JrZXIpKTsKK30KKworc3RhdGljIGlubGluZSBib29sCithbV9wYXJh bGxlbF9hcHBseV93b3JrZXIodm9pZCkKK3sKKwlyZXR1cm4gaXNQYXJhbGxlbEFwcGx5V29ya2Vy KE15TG9naWNhbFJlcFdvcmtlcik7Cit9CisKICNlbmRpZgkJCQkJCQkvKiBXT1JLRVJfSU5URVJO QUxfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdyLmggYi9zcmMvaW5j bHVkZS9zdG9yYWdlL2xtZ3IuaAppbmRleCBiZTFkMmM5Li41YTNiZDAzIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9zdG9yYWdlL2xtZ3IuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2xtZ3Iu aApAQCAtMTA3LDYgKzEwNywxMSBAQCBleHRlcm4gdm9pZCBMb2NrU2hhcmVkT2JqZWN0Rm9yU2Vz c2lvbihPaWQgY2xhc3NpZCwgT2lkIG9iamlkLCB1aW50MTYgb2Jqc3ViaWQsCiBleHRlcm4gdm9p ZCBVbmxvY2tTaGFyZWRPYmplY3RGb3JTZXNzaW9uKE9pZCBjbGFzc2lkLCBPaWQgb2JqaWQsIHVp bnQxNiBvYmpzdWJpZCwKIAkJCQkJCQkJCQkgTE9DS01PREUgbG9ja21vZGUpOwogCitleHRlcm4g dm9pZCBMb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNlc3Npb24oT2lkIHN1Ym9pZCwgVHJhbnNhY3Rp b25JZCB4aWQsIHVpbnQxNiBvYmppZCwKKwkJCQkJCQkJCQkgICBMT0NLTU9ERSBsb2NrbW9kZSk7 CitleHRlcm4gdm9pZCBVbmxvY2tBcHBseVRyYW5zYWN0aW9uRm9yU2Vzc2lvbihPaWQgc3Vib2lk LCBUcmFuc2FjdGlvbklkIHhpZCwgdWludDE2IG9iamlkLAorCQkJCQkJCQkJCQkgTE9DS01PREUg bG9ja21vZGUpOworCiAvKiBEZXNjcmliZSBhIGxvY2t0YWcgZm9yIGVycm9yIG1lc3NhZ2VzICov CiBleHRlcm4gdm9pZCBEZXNjcmliZUxvY2tUYWcoU3RyaW5nSW5mbyBidWYsIGNvbnN0IExPQ0tU QUcgKnRhZyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG9jay5oIGIvc3Jj L2luY2x1ZGUvc3RvcmFnZS9sb2NrLmgKaW5kZXggZTRlMTQ5NS4uYjljZDJkZiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9sb2NrLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9s b2NrLmgKQEAgLTE0OSwxMCArMTQ5LDEyIEBAIHR5cGVkZWYgZW51bSBMb2NrVGFnVHlwZQogCUxP Q0tUQUdfU1BFQ1VMQVRJVkVfVE9LRU4sCS8qIHNwZWN1bGF0aXZlIGluc2VydGlvbiBYaWQgYW5k IHRva2VuICovCiAJTE9DS1RBR19PQkpFQ1QsCQkJCS8qIG5vbi1yZWxhdGlvbiBkYXRhYmFzZSBv YmplY3QgKi8KIAlMT0NLVEFHX1VTRVJMT0NLLAkJCS8qIHJlc2VydmVkIGZvciBvbGQgY29udHJp Yi91c2VybG9jayBjb2RlICovCi0JTE9DS1RBR19BRFZJU09SWQkJCS8qIGFkdmlzb3J5IHVzZXIg bG9ja3MgKi8KKwlMT0NLVEFHX0FEVklTT1JZLAkJCS8qIGFkdmlzb3J5IHVzZXIgbG9ja3MgKi8K KwlMT0NLVEFHX0FQUExZX1RSQU5TQUNUSU9OCS8qIHRyYW5zYWN0aW9uIGJlaW5nIGFwcGxpZWQg b24gdGhlIHN1YnNjcmliZXIKKwkJCQkJCQkJICogc2lkZSAqLwogfSBMb2NrVGFnVHlwZTsKIAot I2RlZmluZSBMT0NLVEFHX0xBU1RfVFlQRQlMT0NLVEFHX0FEVklTT1JZCisjZGVmaW5lIExPQ0tU QUdfTEFTVF9UWVBFCUxPQ0tUQUdfQVBQTFlfVFJBTlNBQ1RJT04KIAogZXh0ZXJuIFBHRExMSU1Q T1JUIGNvbnN0IGNoYXIgKmNvbnN0IExvY2tUYWdUeXBlTmFtZXNbXTsKIApAQCAtMjc4LDYgKzI4 MCwxNyBAQCB0eXBlZGVmIHN0cnVjdCBMT0NLVEFHCiAJIChsb2NrdGFnKS5sb2NrdGFnX3R5cGUg PSBMT0NLVEFHX0FEVklTT1JZLCBcCiAJIChsb2NrdGFnKS5sb2NrdGFnX2xvY2ttZXRob2RpZCA9 IFVTRVJfTE9DS01FVEhPRCkKIAorLyoKKyAqIElEIGluZm8gZm9yIGEgcmVtb3RlIHRyYW5zYWN0 aW9uIG9uIHRoZSBzdWJzY3JpYmVyIHNpZGUgaXM6CisgKiBEQiBPSUQgKyBTVUJTQ1JJUFRJT04g T0lEICsgVFJBTlNBQ1RJT04gSUQgKyBPQkpJRAorICovCisjZGVmaW5lIFNFVF9MT0NLVEFHX0FQ UExZX1RSQU5TQUNUSU9OKGxvY2t0YWcsZGJvaWQsc3Vib2lkLHhpZCxvYmppZCkgXAorCSgobG9j a3RhZykubG9ja3RhZ19maWVsZDEgPSAoZGJvaWQpLCBcCisJIChsb2NrdGFnKS5sb2NrdGFnX2Zp ZWxkMiA9IChzdWJvaWQpLCBcCisJIChsb2NrdGFnKS5sb2NrdGFnX2ZpZWxkMyA9ICh4aWQpLCBc CisJIChsb2NrdGFnKS5sb2NrdGFnX2ZpZWxkNCA9IChvYmppZCksIFwKKwkgKGxvY2t0YWcpLmxv Y2t0YWdfdHlwZSA9IExPQ0tUQUdfQVBQTFlfVFJBTlNBQ1RJT04sIFwKKwkgKGxvY2t0YWcpLmxv Y2t0YWdfbG9ja21ldGhvZGlkID0gREVGQVVMVF9MT0NLTUVUSE9EKQogCiAvKgogICogUGVyLWxv Y2tlZC1vYmplY3QgbG9jayBpbmZvcm1hdGlvbjoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0 b3JhZ2UvcHJvY3NpZ25hbC5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKaW5k ZXggZWU2MzY5MC4uOTNhNTFmNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9j c2lnbmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKQEAgLTM1LDYg KzM1LDcgQEAgdHlwZWRlZiBlbnVtCiAJUFJPQ1NJR19XQUxTTkRfSU5JVF9TVE9QUElORywJLyog YXNrIHdhbHNlbmRlcnMgdG8gcHJlcGFyZSBmb3Igc2h1dGRvd24gICovCiAJUFJPQ1NJR19CQVJS SUVSLAkJCS8qIGdsb2JhbCBiYXJyaWVyIGludGVycnVwdCAgKi8KIAlQUk9DU0lHX0xPR19NRU1P UllfQ09OVEVYVCwgLyogYXNrIGJhY2tlbmQgdG8gbG9nIHRoZSBtZW1vcnkgY29udGV4dHMgKi8K KwlQUk9DU0lHX1BBUkFMTEVMX0FQUExZX01FU1NBR0UsIC8qIE1lc3NhZ2UgZnJvbSBwYXJhbGxl bCBhcHBseSB3b3JrZXJzICovCiAKIAkvKiBSZWNvdmVyeSBjb25mbGljdCByZWFzb25zICovCiAJ UFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9EQVRBQkFTRSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3V0aWxzL3dhaXRfZXZlbnQuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaApp bmRleCA2ZjJkNTYxLi5jNjUxYWQyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy93YWl0 X2V2ZW50LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oCkBAIC00Miw2ICs0 Miw3IEBAIHR5cGVkZWYgZW51bQogCVdBSVRfRVZFTlRfQ0hFQ0tQT0lOVEVSX01BSU4sCiAJV0FJ VF9FVkVOVF9MT0dJQ0FMX0FQUExZX01BSU4sCiAJV0FJVF9FVkVOVF9MT0dJQ0FMX0xBVU5DSEVS X01BSU4sCisJV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX01BSU4sCiAJV0FJVF9F VkVOVF9SRUNPVkVSWV9XQUxfU1RSRUFNLAogCVdBSVRfRVZFTlRfU1lTTE9HR0VSX01BSU4sCiAJ V0FJVF9FVkVOVF9XQUxfUkVDRUlWRVJfTUFJTiwKQEAgLTEwNSw2ICsxMDYsNyBAQCB0eXBlZGVm IGVudW0KIAlXQUlUX0VWRU5UX0hBU0hfR1JPV19CVUNLRVRTX0FMTE9DQVRFLAogCVdBSVRfRVZF TlRfSEFTSF9HUk9XX0JVQ0tFVFNfRUxFQ1QsCiAJV0FJVF9FVkVOVF9IQVNIX0dST1dfQlVDS0VU U19SRUlOU0VSVCwKKwlXQUlUX0VWRU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQTFlfU1RBVEVfQ0hB TkdFLAogCVdBSVRfRVZFTlRfTE9HSUNBTF9TWU5DX0RBVEEsCiAJV0FJVF9FVkVOVF9MT0dJQ0FM X1NZTkNfU1RBVEVfQ0hBTkdFLAogCVdBSVRfRVZFTlRfTVFfSU5URVJOQUwsCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKaW5kZXggYzEzZDIxOC4uMWVkNmY0YyAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0Cisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dApAQCAtMTE3LDcg KzExNyw3IEBAIEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFs bHkgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgIE5hbWUgICAgICAgfCAgICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwg U3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4g fCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lw IExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViNCB8 IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAg ICAgfCBmICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG5v bmUgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8 IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YjQgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAg ICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBub25lICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5h bWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBU SU9OIHJlZ3Jlc3NfdGVzdHN1YjQgU0VUIChvcmlnaW4gPSBhbnkpOwpAQCAtMTI1LDcgKzEyNSw3 IEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI0IFNFVCAob3JpZ2luID0gYW55 KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25z CiAgICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVk IHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwg RGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAg IENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KLSByZWdyZXNzX3Rlc3RzdWI0IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYg ICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAg ICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJu YW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViNCB8IHJlZ3Jl c3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBv ZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8 IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAog KDEgcm93KQogCiBEUk9QIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIzOwpAQCAtMTM4LDcg KzEzOCw3IEBAIEVSUk9SOiAgaW52YWxpZCBjb25uZWN0aW9uIHN0cmluZyBzeW50YXg6IG1pc3Np bmcgIj0iIGFmdGVyICJmb29iYXIiIGluIGNvbm5lY3RpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBT dHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8 IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAg TFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJl Z3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAg fCBmICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAg ICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAv MAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAg IHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1y ZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04g cmVncmVzc190ZXN0c3ViIFNFVCBQVUJMSUNBVElPTiB0ZXN0cHViMiwgdGVzdHB1YjMgV0lUSCAo cmVmcmVzaCA9IGZhbHNlKTsKQEAgLTE1OCw3ICsxNTgsNyBAQCBBTFRFUiBTVUJTQ1JJUFRJT04g cmVncmVzc190ZXN0c3ViIFNLSVAgKGxzbiA9ICcwLzEyMzQ1Jyk7CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAg ICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8ICAgICBQdWJsaWNhdGlv biAgICAgfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBv biBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgICBDb25uaW5m byAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAg ICAgICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBmICAgICAgICAgfCBkICAgICAg ICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAg ICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdDIgfCAwLzEyMzQ1CisgcmVncmVzc190ZXN0 c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVz dHB1YjN9IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAg ICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19k b2Vzbm90ZXhpc3QyIHwgMC8xMjM0NQogKDEgcm93KQogCiAtLSBvayAtIHdpdGggbHNuID0gTk9O RQpAQCAtMTcwLDcgKzE3MCw3IEBAIEVSUk9SOiAgaW52YWxpZCBXQUwgbG9jYXRpb24gKExTTik6 IDAvMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3Jp cHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVu YWJsZWQgfCAgICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBo YXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21t aXQgfCAgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19z dWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAg IHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkg ICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwg MC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAg ICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAg fCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgMC8wCiAoMSByb3cpCiAKIEJFR0lOOwpA QCAtMjA1LDcgKzIwNSw3IEBAIEhJTlQ6ICBBdmFpbGFibGUgdmFsdWVzOiBsb2NhbCwgcmVtb3Rl X3dyaXRlLCByZW1vdGVfYXBwbHksIG9uLCBvZmYuCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgICBOYW1lICAgICAgICAg fCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8ICAgICBQdWJsaWNhdGlvbiAg ICAgfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBl cnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgICBDb25uaW5mbyAg ICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tCi0gcmVncmVzc190ZXN0c3ViX2ZvbyB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIg fCBmICAgICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IGYgICAgICAgICB8IGQg ICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgbG9jYWwgICAgICAg ICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IDAvMAorIHJlZ3Jlc3NfdGVz dHN1Yl9mb28gfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVi Mix0ZXN0cHViM30gfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAg ICAgICAgICAgICAgICB8IGFueSAgICB8IGxvY2FsICAgICAgICAgICAgICB8IGRibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdDIgfCAwLzAKICgxIHJvdykKIAogLS0gcmVuYW1lIGJhY2sgdG8ga2Vl cCB0aGUgcmVzdCBzaW1wbGUKQEAgLTI0Miw3ICsyNDIsNyBAQCBISU5UOiAgVG8gaW5pdGlhdGUg cmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xv dCwgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlv bnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxl ZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8 IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAg ICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAg ICAgICB8IHt0ZXN0cHVifSAgIHwgdCAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5h bWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNz X3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgdCAgICAgIHwgb2Zm ICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBv ZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgx IHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKGJpbmFyeSA9 IGZhbHNlKTsKQEAgLTI1MSwxMyArMjUxLDEzIEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNz X3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0 cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwg U3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBM U04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVn cmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8 IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAg IHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8w CisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAg fCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJl Z3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIERST1AgU1VCU0NSSVBUSU9OIHJl Z3Jlc3NfdGVzdHN1YjsKLS0tIGZhaWwgLSBzdHJlYW1pbmcgbXVzdCBiZSBib29sZWFuCistLSBm YWlsIC0gc3RyZWFtaW5nIG11c3QgYmUgYm9vbGVhbiBvciAncGFyYWxsZWwnCiBDUkVBVEUgU1VC U0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vz bm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBzdHJl YW1pbmcgPSBmb28pOwotRVJST1I6ICBzdHJlYW1pbmcgcmVxdWlyZXMgYSBCb29sZWFuIHZhbHVl CitFUlJPUjogIHN0cmVhbWluZyByZXF1aXJlcyBhIEJvb2xlYW4gdmFsdWUgb3IgInBhcmFsbGVs IgogLS0gbm93IGl0IHdvcmtzCiBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBD T05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3Rw dWIgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBzdHJlYW1pbmcgPSB0cnVlKTsKIFdBUk5JTkc6ICBz dWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1dCBpcyBub3QgY29ubmVjdGVkCkBAIC0yNjYsNyAr MjY2LDE1IEBAIEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFs bHkgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBT dHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8 IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAg TFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJl Z3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAg fCB0ICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAg ICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAv MAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAg IHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvbiAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1y ZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorKDEgcm93KQorCitBTFRFUiBTVUJTQ1JJUFRJT04g cmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gcGFyYWxsZWwpOworXGRScysKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBO YW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNh dGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9u IGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8g ICAgICAgICAgIHwgU2tpcCBMU04gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVn cmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVz dHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAg ICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3Nf ZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNz X3Rlc3RzdWIgU0VUIChzdHJlYW1pbmcgPSBmYWxzZSk7CkBAIC0yNzUsNyArMjgzLDcgQEAgQUxU RVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAg ICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1 YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2Fi bGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25u aW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0K LSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8 IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYg ICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVn cmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNj cmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAg IHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAg ICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykK IAogLS0gZmFpbCAtIHB1YmxpY2F0aW9uIGFscmVhZHkgZXhpc3RzCkBAIC0yOTMsNyArMzAxLDcg QEAgRVJST1I6ICBwdWJsaWNhdGlvbiAidGVzdHB1YjEiIGlzIGFscmVhZHkgaW4gc3Vic2NyaXB0 aW9uICJyZWdyZXNzX3Rlc3RzdWIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgICAgIFB1YmxpY2F0aW9uICAgICAgICAg fCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJv ciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAg ICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAg ICAgICB8IHt0ZXN0cHViLHRlc3RwdWIxLHRlc3RwdWIyfSB8IGYgICAgICB8IGYgICAgICAgICB8 IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAg ICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190 ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yix0 ZXN0cHViMSx0ZXN0cHViMn0gfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAg IHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFt ZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiAtLSBmYWlsIC0gcHVibGlj YXRpb24gdXNlZCBtb3JlIHRoZW4gb25jZQpAQCAtMzExLDcgKzMxOSw3IEBAIEFMVEVSIFNVQlND UklQVElPTiByZWdyZXNzX3Rlc3RzdWIgRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViMSwgdGVzdHB1 YjIgV0lUSCAocmVmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vi c2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAg fCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2Ug Y29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8 ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3Vz ZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBmICAgICAgICAgfCBkICAgICAg ICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAg ICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8 IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAg ICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFu eSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8 IDAvMAogKDEgcm93KQogCiBEUk9QIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI7CkBAIC0z NTAsNyArMzU4LDcgQEAgSElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBt YW51YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGUKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwg ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFy eSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3Jp Z2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwg U2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3Vi IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYg ICAgICB8IGYgICAgICAgICB8IHAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg YW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0 IHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYg ICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IHAgICAgICAgICAgICAg ICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJu YW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIC0tZmFpbCAtIGFsdGVy IG9mIHR3b19waGFzZSBvcHRpb24gbm90IHN1cHBvcnRlZC4KQEAgLTM2Miw3ICszNzAsNyBAQCBB TFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gdHJ1ZSk7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwog ICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwg UHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlz YWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENv bm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAg IHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCB0ICAgICAgICAgfCBwICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1y ZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vi c2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvbiAgICAg ICAgfCBwICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAg ICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93 KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0g Tk9ORSk7CkBAIC0zNzUsNyArMzgzLDcgQEAgSElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9u LCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGUKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBO YW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNh dGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9u IGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8g ICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVn cmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVz dHB1Yn0gICB8IGYgICAgICB8IHQgICAgICAgICB8IHAgICAgICAgICAgICAgICAgfCBmICAgICAg ICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3Nf ZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRp b25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9uICAgICAgICB8IHAg ICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAg ICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFM VEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsK QEAgLTM5MSw3ICszOTksNyBAQCBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBt dXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAg ICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwg QmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3Ig fCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAg ICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rl c3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAg IHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAg ICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90 ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2Vy IHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAg fCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VC U0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKGRpc2FibGVfb25fZXJyb3IgPSB0cnVlKTsK QEAgLTM5OSw3ICs0MDcsNyBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNF VCAoZGlzYWJsZV9vbl9lcnJvciA9IHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFt aW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5j aHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAK IC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNz X3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgZiAg ICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBv ZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyBy ZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0 ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IHQgICAg ICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVz c19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jl c3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNj cmlwdGlvbi5zcWwKaW5kZXggZWFlYWRlOC4uNzk5MWFiZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9z dWJzY3JpcHRpb24uc3FsCkBAIC0xNjcsNyArMTY3LDcgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJl Z3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwogCiBEUk9QIFNVQlNDUklQVElP TiByZWdyZXNzX3Rlc3RzdWI7CiAKLS0tIGZhaWwgLSBzdHJlYW1pbmcgbXVzdCBiZSBib29sZWFu CistLSBmYWlsIC0gc3RyZWFtaW5nIG11c3QgYmUgYm9vbGVhbiBvciAncGFyYWxsZWwnCiBDUkVB VEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVz c19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZhbHNl LCBzdHJlYW1pbmcgPSBmb28pOwogCiAtLSBub3cgaXQgd29ya3MKQEAgLTE3NSw2ICsxNzUsMTAg QEAgQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1l PXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUIKIAogXGRScysKIAorQUxURVIgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHN0cmVhbWluZyA9IHBhcmFsbGVsKTsKKworXGRScysKKwog QUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHN0cmVhbWluZyA9IGZhbHNl KTsKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBO T05FKTsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9z cmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCBmODMwMmYxLi41MWRjY2Y3IDEw MDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9v bHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMTQ3Miw2ICsxNDcyLDcgQEAgTG9naWNhbFJl cFJlbElkCiBMb2dpY2FsUmVwUmVsTWFwRW50cnkKIExvZ2ljYWxSZXBSZWxhdGlvbgogTG9naWNh bFJlcFJvbGxiYWNrUHJlcGFyZWRUeG5EYXRhCitMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhCiBM b2dpY2FsUmVwVHVwbGVEYXRhCiBMb2dpY2FsUmVwVHlwCiBMb2dpY2FsUmVwV29ya2VyCkBAIC0x NjYzLDYgKzE2NjQsOSBAQCBPdmVycmlkZVN0YWNrRW50cnkKIE92ZXJyaWRpbmdLaW5kCiBQQUNF X0hFQURFUgogUEFDTAorUGFyYWxsZWxBcHBseVdvcmtlckVudHJ5CitQYXJhbGxlbEFwcGx5V29y a2VySW5mbworUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZAogUEFUSAogUEJPT0wKIFBDdHh0SGFu ZGxlCkBAIC0xODk0LDYgKzE4OTgsNyBAQCBQYXJhbGxlbFNsb3RSZXN1bHRIYW5kbGVyCiBQYXJh bGxlbFN0YXRlCiBQYXJhbGxlbFRhYmxlU2NhbkRlc2MKIFBhcmFsbGVsVGFibGVTY2FuRGVzY0Rh dGEKK1BhcmFsbGVsVHJhbnNTdGF0ZQogUGFyYWxsZWxWYWN1dW1TdGF0ZQogUGFyYWxsZWxXb3Jr ZXJDb250ZXh0CiBQYXJhbGxlbFdvcmtlckluZm8KQEAgLTI3ODQsNiArMjc4OSw3IEBAIFRyYW5z YWN0aW9uU3RtdEtpbmQKIFRyYW5zZm9ybUluZm8KIFRyYW5zZm9ybUpzb25TdHJpbmdWYWx1ZXNT dGF0ZQogVHJhbnNpdGlvbkNhcHR1cmVTdGF0ZQorVHJhbnNBcHBseUFjdGlvbgogVHJnbUFyYwog VHJnbUFyY0luZm8KIFRyZ21Cb3VuZAotLSAKMi43LjIud2luZG93cy4xCgo= --_005_OS0PR01MB5716CF7D3BDE465AFAF17DC094079OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v48-0002-Serialize-partial-changes-to-disk-if-the-shm_mq-.patch" Content-Description: v48-0002-Serialize-partial-changes-to-disk-if-the-shm_mq-.patch Content-Disposition: attachment; filename="v48-0002-Serialize-partial-changes-to-disk-if-the-shm_mq-.patch"; size=36592; creation-date="Wed, 16 Nov 2022 08:18:47 GMT"; modification-date="Wed, 16 Nov 2022 08:19:45 GMT" Content-Transfer-Encoding: base64 RnJvbSBiZjViNDU0MDBmOGM3Y2VhN2JiZTc5ZDU5NGU4NWJmM2NkY2FhYjc5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBUdWUsIDE1IE5vdiAyMDIyIDE3OjMxOjI2ICswODAwClN1YmplY3Q6IFtQQVRDSCB2 NDggMi80XSBTZXJpYWxpemUgcGFydGlhbCBjaGFuZ2VzIHRvIGRpc2sgaWYgdGhlIHNobV9tcQog YnVmZmVyIGlzIGZ1bGwKCldoZW4gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgdGltZXMgb3V0IHdo aWxlIHNlbmRpbmcgYSBtZXNzYWdlIHRvIHRoZSBwYXJhbGxlbAphcHBseSB3b3JrZXIuIEluc3Rl YWQgb2YgZXJyb3Jpbmcgb3V0LCBzd2l0Y2ggdG8gcGFydGlhbCBzZXJpYWxpemUgbW9kZSBhbmQg bGV0CnRoZSBsZWFkZXIgc2VyaWFsaXplIGFsbCByZW1haW5pbmcgY2hhbmdlcyB0byB0aGUgZmls ZSBhbmQgbm90aWZ5IHRoZSBwYXJhbGxlbAphcHBseSB3b3JrZXJzIHRvIHJlYWQgYW5kIGFwcGx5 IHRoZW0gYXQgdGhlIGVuZCBvZiB0aGUgdHJhbnNhY3Rpb24uCi0tLQogLi4uL3JlcGxpY2F0aW9u L2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jICAgICAgfCAxODAgKysrKysrKysrKy0KIHNy Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICAgICAgIHwgMzQxICsr KysrKysrKysrKysrKy0tLS0tLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVy bmFsLmggICAgICAgICAgfCAgNDUgKysrCiAzIGZpbGVzIGNoYW5nZWQsIDQ2MCBpbnNlcnRpb25z KCspLCAxMDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwppbmRleCBhNTRhZjlmLi43ZDNhNTIxIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3 b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxs ZWx3b3JrZXIuYwpAQCAtNzIsNyArNzIsMTAgQEAKICAqIG1lc3NhZ2VzLCBhbmQgdGhpcyB3YWl0 IGRvZXNuJ3QgYXBwZWFyIGluIGxtZ3IuCiAgKgogICogVG8gcmVzb2x2ZSB0aGlzIGlzc3VlLCB3 ZSB1c2Ugbm9uLWJsb2NraW5nIHdyaXRlIGFuZCB3YWl0IHdpdGggYSB0aW1lb3V0LiBJZgotICog dGltZW91dCBpcyBleGNlZWRlZCwgdGhlIExBIHJlcG9ydCBhbiBlcnJvciBhbmQgcmVzdGFydCBs b2dpY2FsIHJlcGxpY2F0aW9uLgorICogdGltZW91dCBpcyBleGNlZWRlZCwgdGhlIExBIHdpbGwg d3JpdGUgdG8gZmlsZSBhbmQgaW5kaWNhdGUgUEEtMiB0aGF0IGl0CisgKiBuZWVkcyB0byByZWFk IGZpbGUgZm9yIHJlbWFpbmluZyBtZXNzYWdlcy4gVGhlbiBMQSB3aWxsIHN0YXJ0IHdhaXRpbmcg Zm9yCisgKiBjb21taXQgd2hpY2ggd2lsbCBkZXRlY3QgZGVhZGxvY2sgaWYgYW55LiAoU2VlIHBh X3NlbmRfZGF0YSgpIGFuZCB0eXBlZGVmCisgKiBlbnVtIFRyYW5zQXBwbHlBY3Rpb24pCiAgKi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KICAqLwogCkBAIC0zMDQsOSArMzA3LDExIEBAIHBhX3N0YXJ0X3dvcmtl cihUcmFuc2FjdGlvbklkIHhpZCkKIAlTcGluTG9ja0FjcXVpcmUoJndpbmZvLT5zaGFyZWQtPm11 dGV4KTsKIAl3aW5mby0+c2hhcmVkLT54YWN0X3N0YXRlID0gUEFSQUxMRUxfVFJBTlNfVU5LTk9X TjsKIAl3aW5mby0+c2hhcmVkLT54aWQgPSB4aWQ7CisJd2luZm8tPnNoYXJlZC0+ZmlsZXNldF9z dGF0ZSA9IExFQURFUl9GSUxFU0VUX1VOS05PV047CiAJU3BpbkxvY2tSZWxlYXNlKCZ3aW5mby0+ c2hhcmVkLT5tdXRleCk7CiAKIAl3aW5mby0+aW5fdXNlID0gdHJ1ZTsKKwl3aW5mby0+c2VyaWFs aXplX2NoYW5nZXMgPSBmYWxzZTsKIAllbnRyeS0+d2luZm8gPSB3aW5mbzsKIAllbnRyeS0+eGlk ID0geGlkOwogfQpAQCAtMzQ1LDggKzM1MCwxNCBAQCBwYV9maW5kX3dvcmtlcihUcmFuc2FjdGlv bklkIHhpZCkKIH0KIAogLyoKLSAqIFJlbW92ZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGVu dHJ5IGZyb20gdGhlIGhhc2ggdGFibGUuIFN0b3AgdGhlIHdvcmsgaWYKLSAqIHRoZXJlIGFyZSBl bm91Z2ggd29ya2VycyBpbiB0aGUgcG9vbC4KKyAqIFJlbW92ZSB0aGUgcGFyYWxsZWwgYXBwbHkg d29ya2VyIGVudHJ5IGZyb20gdGhlIGhhc2ggdGFibGUgYW5kIGNsZWFudXAgdGhlCisgKiBmaWxl cyB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcy4gU3RvcCB0aGUgd29yayBpZiB0aGVyZSBhcmUgZW5v dWdoIHdvcmtlcnMgaW4KKyAqIHRoZSBwb29sIG9yIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHNl cmlhbGl6ZWQgcGFydCBvZiB0aGUgdHJhbnNhY3Rpb24gZGF0YQorICogdG8gYSBmaWxlIGR1ZSB0 byBzZW5kIHRpbWVvdXQuCisgKgorICogWFhYIERhdGEgY291bGQgYmUgcGFydGlhbGx5IHdyaXR0 ZW4gdG8gdGhlIHF1ZXVlIGR1ZSB0byBzZW5kIHRpbWVvdXQgYW5kCisgKiB0aGVyZSBpcyBubyB3 YXkgdG8gY2xlYW4gdGhlIHF1ZXVlIG90aGVyIHRoYW4gcmVzZW5kaW5nIHRoZSBtZXNzYWdlIHVu dGlsIGl0CisgKiBzdWNjZWVkcy4gVG8gYXZvaWQgY29tcGxleGl0eSwgd2UgZGlyZWN0bHkgc3Rv cCB0aGUgd29ya2VyIGluIHRoaXMgY2FzZS4KICAqCiAgKiBJZiB0aGUgd29ya2VyIGlzIHN0b3Bw ZWQsIHRoZSB3b3JrZXIgaW5mb3JtYXRpb24gd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlCiAgKiBQ YXJhbGxlbEFwcGx5V29ya2Vyc0xpc3QgYW5kIHRoZSBtZW1vcnkgb2YgdGhlIGluZm9ybWF0aW9u IHdpbGwgYmUgZnJlZWQuCkBAIC0zODIsOCArMzkzLDE3IEBAIHBhX2ZyZWVfd29ya2VyKFBhcmFs bGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgVHJhbnNhY3Rpb25JZCB4aWQpCiAJbmFwcGx5d29y a2VycyA9IGxvZ2ljYWxyZXBfcGFyYWxsZWxfYXBwbHlfd29ya2VyX2NvdW50KE15TG9naWNhbFJl cFdvcmtlci0+c3ViaWQpOwogCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwog Ci0JLyogQXJlIHRoZXJlIGVub3VnaCB3b3JrZXJzIGluIHRoZSBwb29sPyAqLwotCWlmIChuYXBw bHl3b3JrZXJzID4gKG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24g LyAyKSkKKwkvKiBVbmxpbmsgdGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzLiAqLwor CWlmICh3aW5mby0+c2VyaWFsaXplX2NoYW5nZXMpCisJCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15 TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7CisKKwkvKgorCSAqIFN0b3AgdGhlIHdvcmtl ciBpZiB0aGVyZSBhcmUgZW5vdWdoIHdvcmtlcnMgaW4gdGhlIHBvb2wgb3IgdGhlIGxlYWRlcgor CSAqIGFwcGx5IHdvcmtlciBzZXJpYWxpemVkIHBhcnQgb2YgdGhlIHRyYW5zYWN0aW9uIGRhdGEg dG8gYSBmaWxlIGR1ZSB0bworCSAqIHNlbmQgdGltZW91dC4KKwkgKi8KKwlpZiAod2luZm8tPnNl cmlhbGl6ZV9jaGFuZ2VzIHx8CisJCW5hcHBseXdvcmtlcnMgPiAobWF4X3BhcmFsbGVsX2FwcGx5 X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiAvIDIpKQogCXsKIAkJaW50CQkJc2xvdF9ubzsKIAkJ dWludDE2CQlnZW5lcmF0aW9uOwpAQCAtNDEyLDYgKzQzMiw3IEBAIHBhX2ZyZWVfd29ya2VyKFBh cmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgVHJhbnNhY3Rpb25JZCB4aWQpCiAJfQogCiAJ d2luZm8tPmluX3VzZSA9IGZhbHNlOworCXdpbmZvLT5zZXJpYWxpemVfY2hhbmdlcyA9IGZhbHNl OwogCiAJcmV0dXJuIGZhbHNlOwogfQpAQCAtNDM0LDYgKzQ1NSw0MyBAQCBwYV9mcmVlX3dvcmtl cl9pbmZvKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbykKIAlwZnJlZSh3aW5mbyk7CiB9 CiAKKy8qCisgKiBSZXBsYXkgdGhlIHNwb29sZWQgbWVzc2FnZXMgaW4gdGhlIHBhcmFsbGVsIGFw cGx5IHdvcmtlciBpZiBsZWFkZXIgYXBwbHkKKyAqIHdvcmtlciBoYXMgZmluaXNoZWQgc2VyaWFs aXppbmcgY2hhbmdlcyB0byB0aGUgZmlsZS4KKyAqLworc3RhdGljIHZvaWQKK3BhX3Nwb29sZWRf bWVzc2FnZXModm9pZCkKK3sKKwlMZWFkZXJGaWxlU2V0U3RhdGUgZmlsZXNldF9zdGF0ZTsKKwor CS8qCisJICogQ2hlY2sgaWYgY2hhbmdlcyBoYXZlIGJlZW4gc2VyaWFsaXplZCB0byBkaXNrLiBp ZiBzbywgcmVhZCBhbmQgYXBwbHkKKwkgKiB0aGVtLgorCSAqLworCVNwaW5Mb2NrQWNxdWlyZSgm TXlQYXJhbGxlbFNoYXJlZC0+bXV0ZXgpOworCWZpbGVzZXRfc3RhdGUgPSBNeVBhcmFsbGVsU2hh cmVkLT5maWxlc2V0X3N0YXRlOworCVNwaW5Mb2NrUmVsZWFzZSgmTXlQYXJhbGxlbFNoYXJlZC0+ bXV0ZXgpOworCisJLyoKKwkgKiBBY3F1aXJlIHRoZSBzdHJlYW0gbG9jayBpZiB0aGUgbGVhZGVy IGFwcGx5IHdvcmtlciBpcyBzZXJpYWxpemluZworCSAqIGNoYW5nZXMgdG8gdGhlIGZpbGUsIGJl Y2F1c2UgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aWxsIG5vIGxvbmdlcgorCSAqIGhhdmUg YSBjaGFuY2UgdG8gcmVjZWl2ZSBhIFNUUkVBTV9TVE9QIGFuZCBhY3F1aXJlIHRoZSBsb2NrIHVu dGlsIHRoZQorCSAqIGxlYWRlciBzZXJpYWxpemUgYWxsIGNoYW5nZXMgdG8gdGhlIGZpbGUuCisJ ICovCisJaWYgKGZpbGVzZXRfc3RhdGUgPT0gTEVBREVSX0ZJTEVTRVRfQlVTWSkKKwl7CisJCXBh X2xvY2tfc3RyZWFtKE15UGFyYWxsZWxTaGFyZWQtPnhpZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJ cGFfdW5sb2NrX3N0cmVhbShNeVBhcmFsbGVsU2hhcmVkLT54aWQsIEFjY2Vzc1NoYXJlTG9jayk7 CisJfQorCWVsc2UgaWYgKGZpbGVzZXRfc3RhdGUgPT0gTEVBREVSX0ZJTEVTRVRfQUNDRVNTSUJM RSkKKwl7CisJCWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoJk15UGFyYWxsZWxTaGFyZWQtPmZpbGVz ZXQsCisJCQkJCQkJICAgTXlQYXJhbGxlbFNoYXJlZC0+eGlkLAorCQkJCQkJCSAgIEludmFsaWRY TG9nUmVjUHRyKTsKKwkJcGFfc2V0X2ZpbGVzZXRfc3RhdGUoTXlQYXJhbGxlbFNoYXJlZCwgTEVB REVSX0ZJTEVTRVRfVU5LTk9XTik7CisJfQorfQorCiAvKiBQYXJhbGxlbCBhcHBseSB3b3JrZXIg bWFpbiBsb29wLiAqLwogc3RhdGljIHZvaWQKIExvZ2ljYWxQYXJhbGxlbEFwcGx5TG9vcChzaG1f bXFfaGFuZGxlICptcWgpCkBAIC01MDUsNiArNTYzLDggQEAgTG9naWNhbFBhcmFsbGVsQXBwbHlM b29wKHNobV9tcV9oYW5kbGUgKm1xaCkKIAkJewogCQkJaW50CQkJcmM7CiAKKwkJCXBhX3Nwb29s ZWRfbWVzc2FnZXMoKTsKKwogCQkJaWYgKCFpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKIAkJCXsK IAkJCQkvKgpAQCAtOTY0LDYgKzEwMjQsMTAgQEAgcGFfaW5pdF9hbmRfbGF1bmNoX3dvcmtlcih2 b2lkKQogLyoKICAqIFNlbmQgdGhlIGRhdGEgdG8gdGhlIHNwZWNpZmllZCBwYXJhbGxlbCBhcHBs eSB3b3JrZXIgdmlhIHNoYXJlZC1tZW1vcnkKICAqIHF1ZXVlLgorICoKKyAqIFdoZW4gc2VuZGlu ZyBkYXRhIHRpbWVzIG91dCwgZGF0YSB3aWxsIGJlIHNlcmlhbGl6ZWQgdG8gZGlzay4gQW5kIHRo ZQorICogY3VycmVudCBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gd2lsbCBlbnRlciBQQVJUSUFMX1NF UklBTElaRSBtb2RlLCB3aGljaCBtZWFucworICogdGhhdCBzdWJzZXF1ZW50IGRhdGEgd2lsbCBh bHNvIGJlIHNlcmlhbGl6ZWQgdG8gZGlzay4KICAqLwogdm9pZAogcGFfc2VuZF9kYXRhKFBhcmFs bGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgU2l6ZSBuYnl0ZXMsCkBAIC05NzMsNiArMTAzNyw3 IEBAIHBhX3NlbmRfZGF0YShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sIFNpemUgbmJ5 dGVzLAogCXNobV9tcV9yZXN1bHQgcmVzdWx0OwogCVRpbWVzdGFtcFR6IHN0YXJ0VGltZSA9IDA7 CiAKKwlBc3NlcnQoIXdpbmZvLT5zZXJpYWxpemVfY2hhbmdlcyk7CiAJQXNzZXJ0KCFJc1RyYW5z YWN0aW9uU3RhdGUoKSk7CiAKICNkZWZpbmUgU0hNX1NFTkRfVElNRU9VVF9NUwkJMTAwMDAKQEAg LTEwMDksOSArMTA3NCw1NyBAQCBwYV9zZW5kX2RhdGEoUGFyYWxsZWxBcHBseVdvcmtlckluZm8g KndpbmZvLCBTaXplIG5ieXRlcywKIAkJCXN0YXJ0VGltZSA9IEdldEN1cnJlbnRUaW1lc3RhbXAo KTsKIAkJZWxzZSBpZiAoVGltZXN0YW1wRGlmZmVyZW5jZUV4Y2VlZHMoc3RhcnRUaW1lLCBHZXRD dXJyZW50VGltZXN0YW1wKCksCiAJCQkJCQkJCQkJCVNITV9TRU5EX1RJTUVPVVRfTVMpKQotCQkJ ZXJlcG9ydChFUlJPUiwKLQkJCQkJKGVycmNvZGUoRVJSQ09ERV9DT05ORUNUSU9OX0ZBSUxVUkUp LAotCQkJCQkgZXJybXNnKCJ0ZXJtaW5hdGluZyBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVs IGFwcGx5IHdvcmtlciBkdWUgdG8gdGltZW91dCIpKSk7CisJCXsKKwkJCVN0cmluZ0luZm9EYXRh IG1zZzsKKwkJCUxvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbjsKKworCQkJLyoKKwkJCSAqIFRoZSBw YXJhbGxlbCBhcHBseSB3b3JrZXIgbWlnaHQgYmUgc3R1Y2sgZm9yIHNvbWUgcmVhc29uLCBzbwor CQkJICogc3RvcCBzZW5kaW5nIGRhdGEgdG8gcGFyYWxsZWwgd29ya2VyIGFuZCBzdGFydCB0byBz ZXJpYWxpemUKKwkJCSAqIGRhdGEgdG8gZmlsZXMuCisJCQkgKi8KKwkJCXdpbmZvLT5zZXJpYWxp emVfY2hhbmdlcyA9IHRydWU7CisKKwkJCWluaXRTdHJpbmdJbmZvKCZtc2cpOworCQkJYXBwZW5k QmluYXJ5U3RyaW5nSW5mbygmbXNnLCBkYXRhLCBuYnl0ZXMpOworCisJCQkvKiBTa2lwIGZpcnN0 IGJ5dGUgYW5kIHN0YXRpc3RpY3MgZmllbGRzLiAqLworCQkJbXNnLmN1cnNvciArPSBTSVpFX1NU QVRTX01FU1NBR0UgKyAxOworCisJCQkvKiBJbml0aWFsaXplIHRoZSBzdHJlYW0gZmlsZXNldC4g Ki8KKwkJCXNlcmlhbGl6ZV9zdHJlYW1fc3RhcnQod2luZm8tPnNoYXJlZC0+eGlkLCB0cnVlKTsK KworCQkJLyogV3JpdGUgdGhpcyBtZXNzYWdlIHRvIGEgZmlsZS4gKi8KKwkJCWFjdGlvbiA9IHBx X2dldG1zZ2J5dGUoJm1zZyk7CisJCQlzdHJlYW1fd3JpdGVfY2hhbmdlKGFjdGlvbiwgJm1zZyk7 CisKKwkJCS8qCisJCQkgKiBUaGUgc3RyZWFtIGxvY2sgaXMgcmVsZWFzZWQgd2hlbiBwcm9jZXNz aW5nIGNoYW5nZXMgaW4gYQorCQkJICogc3RyZWFtaW5nIGJsb2NrLCBzbyB0aGUgbGVhZGVyIG5l ZWRzIHRvIGFjcXVpcmUgdGhlIGxvY2sgaGVyZQorCQkJICogYmVmb3JlIGVudGVyaW5nIFBBUlRJ QUxfU0VSSUFMSVpFIG1vZGUgdG8gZW5zdXJlIHRoYXQgdGhlCisJCQkgKiBwYXJhbGxlbCBhcHBs eSB3b3JrZXIgd2lsbCB3YWl0IGZvciB0aGUgbGVhZGVyIHRvIHJlbGVhc2UgdGhlCisJCQkgKiBz dHJlYW0gbG9jay4KKwkJCSAqLworCQkJaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uICYmCisJ CQkJYWN0aW9uICE9IExPR0lDQUxfUkVQX01TR19TVFJFQU1fU1RPUCkKKwkJCXsKKwkJCQlwYV9s b2NrX3N0cmVhbSh3aW5mby0+c2hhcmVkLT54aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCQkJ fQorCisJCQkvKgorCQkJICogQ2xvc2UgdGhlIHN0cmVhbSBmaWxlIGlmIG5vdCBpbiBhIHN0cmVh bWluZyBibG9jayBvciB0aGUKKwkJCSAqIG1lc3NhZ2UgYmVpbmcgcHJvY2Vzc2VkIGlzIHRoZSBs YXN0IG1lc3NhZ2Ugb2YgYSBzdHJlYW1pbmcKKwkJCSAqIGJsb2NrLgorCQkJICovCisJCQllbHNl CisJCQl7CisJCQkJc2VyaWFsaXplX3N0cmVhbV9zdG9wKHdpbmZvLT5zaGFyZWQtPnhpZCk7CisJ CQl9CisKKwkJCXBhX3NldF9maWxlc2V0X3N0YXRlKHdpbmZvLT5zaGFyZWQsIExFQURFUl9GSUxF U0VUX0JVU1kpOworCisJCQlicmVhazsKKwkJfQogCX0KIH0KIApAQCAtMTIzNSw5ICsxMzQ4LDM5 IEBAIHBhX3N0cmVhbV9hYm9ydChMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhICphYm9ydF9kYXRh KQogCiAJCWlmIChmb3VuZCkKIAkJeworCQkJYm9vbAkJcmVvcGVuX3N0cmVhbV9mZCA9IGZhbHNl OworCQkJaW50CQkJZmlsZW5vOworCQkJb2ZmX3QJCW9mZnNldDsKKworCQkJLyoKKwkJCSAqIElm IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaXMgYXBwbHlpbmcgdGhlIHNwb29sZWQgbWVzc2Fn ZXMsCisJCQkgKiB3ZSBzYXZlIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24gYW5kIGNsb3NlIHRo ZSBmaWxlIHRvIHByZXZlbnQKKwkJCSAqIHRoZSBmaWxlIGZyb20gYmVpbmcgYWNjaWRlbnRhbGx5 IGNsb3NlZCBvbiByb2xsYmFjay4KKwkJCSAqLworCQkJaWYgKHN0cmVhbV9mZCkKKwkJCXsKKwkJ CQlCdWZGaWxlVGVsbChzdHJlYW1fZmQsICZmaWxlbm8sICZvZmZzZXQpOworCQkJCUJ1ZkZpbGVD bG9zZShzdHJlYW1fZmQpOworCQkJCXJlb3Blbl9zdHJlYW1fZmQgPSB0cnVlOworCQkJfQorCiAJ CQlSb2xsYmFja1RvU2F2ZXBvaW50KHNwbmFtZSk7CiAJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1h bmQoKTsKIAkJCXN1YnhhY3RsaXN0ID0gbGlzdF90cnVuY2F0ZShzdWJ4YWN0bGlzdCwgaSArIDEp OworCisJCQkvKgorCQkJICogUmVvcGVuIHRoZSBmaWxlIGFuZCBzZXQgdGhlIGZpbGUgcG9zaXRp b24gdG8gdGhlIHNhdmVkCisJCQkgKiBwb3NpdGlvbi4KKwkJCSAqLworCQkJaWYgKHJlb3Blbl9z dHJlYW1fZmQpCisJCQl7CisJCQkJY2hhcgkJcGF0aFtNQVhQR1BBVEhdOworCisJCQkJY2hhbmdl c19maWxlbmFtZShwYXRoLCBNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOworCQkJCXN0 cmVhbV9mZCA9IEJ1ZkZpbGVPcGVuRmlsZVNldCgmTXlQYXJhbGxlbFNoYXJlZC0+ZmlsZXNldCwK KwkJCQkJCQkJCQkJICAgcGF0aCwgT19SRE9OTFksIGZhbHNlKTsKKwkJCQlCdWZGaWxlU2Vlayhz dHJlYW1fZmQsIGZpbGVubywgb2Zmc2V0LCBTRUVLX1NFVCk7CisJCQl9CiAJCX0KIAogCQlwZ3N0 YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEVJTlRSQU5TQUNUSU9OLCBOVUxMKTsKQEAgLTEy NDUsNiArMTM4OCwyNyBAQCBwYV9zdHJlYW1fYWJvcnQoTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0 YSAqYWJvcnRfZGF0YSkKIH0KIAogLyoKKyAqIFNldCB0aGUgZmlsZXNldF9zdGF0ZSBmbGFnIGZv ciB0aGUgZ2l2ZW4gcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBUaGUKKyAqIHN0cmVhbV9maWxlc2V0 IG9mIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHdpbGwgYmUgd3JpdHRlbiBpbnRvIHRoZSBzaGFy ZWQKKyAqIG1lbW9yeSBpZiB0aGUgZmlsZXNldF9zdGF0ZSBpcyBMRUFERVJfRklMRVNFVF9BQ0NF U1NJQkxFLgorICovCit2b2lkCitwYV9zZXRfZmlsZXNldF9zdGF0ZShQYXJhbGxlbEFwcGx5V29y a2VyU2hhcmVkICp3c2hhcmVkLCBMZWFkZXJGaWxlU2V0U3RhdGUgZmlsZXNldF9zdGF0ZSkKK3sK KwlTcGluTG9ja0FjcXVpcmUoJndzaGFyZWQtPm11dGV4KTsKKwl3c2hhcmVkLT5maWxlc2V0X3N0 YXRlID0gZmlsZXNldF9zdGF0ZTsKKworCWlmIChmaWxlc2V0X3N0YXRlID09IExFQURFUl9GSUxF U0VUX0FDQ0VTU0lCTEUpCisJeworCQlBc3NlcnQoYW1fbGVhZGVyX2FwcGx5X3dvcmtlcigpKTsK KwkJQXNzZXJ0KE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQpOworCQl3c2hhcmVk LT5maWxlc2V0ID0gKk15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQ7CisJfQorCisJ U3BpbkxvY2tSZWxlYXNlKCZ3c2hhcmVkLT5tdXRleCk7Cit9CisKKy8qCiAgKiBIZWxwZXIgZnVu Y3Rpb25zIHRvIGFjcXVpcmUgYW5kIHJlbGVhc2UgYSBsb2NrIGZvciBlYWNoIHN0cmVhbSBibG9j ay4KICAqCiAgKiBTZXQgbG9ja3RhZ19maWVsZDQgdG8gMCB0byBpbmRpY2F0ZSB0aGF0IGl0J3Mg YSBzdHJlYW0gbG9jay4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmlu ZGV4IGYwOWM1YzIuLmRkOTEwODUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93 b3JrZXIuYwpAQCAtMjE4LDcgKzIxOCw2IEBACiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2FscmVj ZWl2ZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCIKICNpbmNs dWRlICJyZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9idWZmaWxl LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKQEAgLTI3Nyw2ICsyNzYsMTkgQEAgdHlwZWRlZiBz dHJ1Y3QgQXBwbHlFeGVjdXRpb25EYXRhCiAgKiBDaGFuZ2VzIGFyZSB3cml0dGVuIHRvIHRlbXBv cmFyeSBmaWxlcyBhbmQgdGhlbiBhcHBsaWVkIHdoZW4gdGhlIGZpbmFsCiAgKiBjb21taXQgYXJy aXZlcy4KICAqCisgKiBUUkFOU19MRUFERVJfUEFSVElBTF9TRVJJQUxJWkU6CisgKiBUaGUgYWN0 aW9uIG1lYW5zIHRoYXQgd2UgYXJlIGluIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBoYXZl IHNlbnQgc29tZQorICogY2hhbmdlcyB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLCBidXQg dGhlIHJlbWFpbmluZyBjaGFuZ2VzIG5lZWQgdG8gYmUKKyAqIHNlcmlhbGl6ZWQgdG8gZGlzayBk dWUgdG8gdGltZW91dCB3aGlsZSBzZW5kaW5nIGRhdGEsIGFuZCB0aGUgcGFyYWxsZWwgYXBwbHkK KyAqIHdvcmtlciB3aWxsIGFwcGx5IHRoZXNlIGNoYW5nZXMgd2hlbiB0aGUgZmluYWwgY29tbWl0 IGFycml2ZXMuCisgKgorICogT25lIG1pZ2h0IHRoaW5rIHdlIGNhbiB1c2UgTEVBREVSX1NFUklB TElaRSBkaXJlY3RseS4gQnV0IGluIHBhcnRpYWwKKyAqIHNlcmlhbGl6ZSBtb2RlLCBpbiBhZGRp dGlvbiB0byBzZXJpYWxpemluZyBjaGFuZ2VzIHRvIGZpbGUsIHRoZSBsZWFkZXIKKyAqIHdvcmtl ciBuZWVkcyB0byB3cml0ZSB0aGUgU1RSRUFNX1hYWCBtZXNzYWdlIHRvIGRpc2ssIGFuZCBuZWVk cyB0byB3YWl0IGZvcgorICogcGFyYWxsZWwgYXBwbHkgd29ya2VyIHRvIGZpbmlzaCB0aGUgdHJh bnNhY3Rpb24gd2hlbiBwcm9jZXNzaW5nIHRoZQorICogdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1h bmQuIFNvIGEgbmV3IGFjdGlvbiB3YXMgaW50cm9kdWNlZCB0byBtYWtlIHRoZSBsb2dpYworICog Y2xlYXJlci4KKyAqCiAgKiBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKICAqIFRoZSBh Y3Rpb24gbWVhbnMgdGhhdCB3ZSBhcmUgaW4gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIG5l ZWQgdG8gc2VuZCB0aGUKICAqIGNoYW5nZXMgdG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4K QEAgLTI5Miw2ICszMDQsNyBAQCB0eXBlZGVmIGVudW0KIAogCS8qIEFjdGlvbnMgZm9yIHN0cmVh bWluZyB0cmFuc2FjdGlvbnMuICovCiAJVFJBTlNfTEVBREVSX1NFUklBTElaRSwKKwlUUkFOU19M RUFERVJfUEFSVElBTF9TRVJJQUxJWkUsCiAJVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUws CiAJVFJBTlNfUEFSQUxMRUxfQVBQTFkKIH0gVHJhbnNBcHBseUFjdGlvbjsKQEAgLTM1Myw3ICsz NjYsNyBAQCBzdGF0aWMgWExvZ1JlY1B0ciBza2lwX3hhY3RfZmluaXNoX2xzbiA9IEludmFsaWRY TG9nUmVjUHRyOwogI2RlZmluZSBpc19za2lwcGluZ19jaGFuZ2VzKCkgKHVubGlrZWx5KCFYTG9n UmVjUHRySXNJbnZhbGlkKHNraXBfeGFjdF9maW5pc2hfbHNuKSkpCiAKIC8qIEJ1ZkZpbGUgaGFu ZGxlIG9mIHRoZSBjdXJyZW50IHN0cmVhbWluZyBmaWxlICovCi1zdGF0aWMgQnVmRmlsZSAqc3Ry ZWFtX2ZkID0gTlVMTDsKK0J1ZkZpbGUgICAgKnN0cmVhbV9mZCA9IE5VTEw7CiAKIHR5cGVkZWYg c3RydWN0IFN1YlhhY3RJbmZvCiB7CkBAIC0zNzQsNyArMzg3LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg QXBwbHlTdWJYYWN0RGF0YQogc3RhdGljIEFwcGx5U3ViWGFjdERhdGEgc3VieGFjdF9kYXRhID0g ezAsIDAsIEludmFsaWRUcmFuc2FjdGlvbklkLCBOVUxMfTsKIAogc3RhdGljIGlubGluZSB2b2lk IHN1YnhhY3RfZmlsZW5hbWUoY2hhciAqcGF0aCwgT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhp ZCk7Ci1zdGF0aWMgaW5saW5lIHZvaWQgY2hhbmdlc19maWxlbmFtZShjaGFyICpwYXRoLCBPaWQg c3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlkKTsKK2lubGluZSB2b2lkIGNoYW5nZXNfZmlsZW5hbWUo Y2hhciAqcGF0aCwgT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCk7CiAKIC8qCiAgKiBJbmZv cm1hdGlvbiBhYm91dCBzdWJ0cmFuc2FjdGlvbnMgb2YgYSBnaXZlbiB0b3BsZXZlbCB0cmFuc2Fj dGlvbi4KQEAgLTM4NywxMCArNDAwLDkgQEAgc3RhdGljIGlubGluZSB2b2lkIGNsZWFudXBfc3Vi eGFjdF9pbmZvKHZvaWQpOwogLyoKICAqIFNlcmlhbGl6ZSBhbmQgZGVzZXJpYWxpemUgY2hhbmdl cyBmb3IgYSB0b3BsZXZlbCB0cmFuc2FjdGlvbi4KICAqLwotc3RhdGljIHZvaWQgc3RyZWFtX2Ns ZWFudXBfZmlsZXMoT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCk7CiBzdGF0aWMgdm9pZCBz dHJlYW1fb3Blbl9maWxlKE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQsCiAJCQkJCQkJIGJv b2wgZmlyc3Rfc2VnbWVudCk7Ci1zdGF0aWMgdm9pZCBzdHJlYW1fd3JpdGVfY2hhbmdlKGNoYXIg YWN0aW9uLCBTdHJpbmdJbmZvIHMpOworc3RhdGljIHZvaWQgc3RyZWFtX3dyaXRlX21lc3NhZ2Uo VHJhbnNhY3Rpb25JZCB4aWQsIGNoYXIgYWN0aW9uLCBTdHJpbmdJbmZvIHMpOwogc3RhdGljIHZv aWQgc3RyZWFtX2Nsb3NlX2ZpbGUodm9pZCk7CiAKIHN0YXRpYyB2b2lkIHNlbmRfZmVlZGJhY2so WExvZ1JlY1B0ciByZWN2cG9zLCBib29sIGZvcmNlLCBib29sIHJlcXVlc3RSZXBseSk7CkBAIC00 MjIsOSArNDM0LDYgQEAgc3RhdGljIHZvaWQgYXBwbHlfaGFuZGxlX3R1cGxlX3JvdXRpbmcoQXBw bHlFeGVjdXRpb25EYXRhICplZGF0YSwKIC8qIENvbXB1dGUgR0lEIGZvciB0d29fcGhhc2UgdHJh bnNhY3Rpb25zICovCiBzdGF0aWMgdm9pZCBUd29QaGFzZVRyYW5zYWN0aW9uR2lkKE9pZCBzdWJp ZCwgVHJhbnNhY3Rpb25JZCB4aWQsIGNoYXIgKmdpZCwgaW50IHN6Z2lkKTsKIAotLyogQ29tbW9u IHN0cmVhbWluZyBmdW5jdGlvbiB0byBhcHBseSBhbGwgdGhlIHNwb29sZWQgbWVzc2FnZXMgKi8K LXN0YXRpYyB2b2lkIGFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoVHJhbnNhY3Rpb25JZCB4aWQsIFhM b2dSZWNQdHIgbHNuKTsKLQogLyogRnVuY3Rpb25zIGZvciBza2lwcGluZyBjaGFuZ2VzICovCiBz dGF0aWMgdm9pZCBtYXliZV9zdGFydF9za2lwcGluZ19jaGFuZ2VzKFhMb2dSZWNQdHIgZmluaXNo X2xzbik7CiBzdGF0aWMgdm9pZCBzdG9wX3NraXBwaW5nX2NoYW5nZXModm9pZCk7CkBAIC01NzMs NiArNTgyLDcgQEAgaGFuZGxlX3N0cmVhbWVkX3RyYW5zYWN0aW9uKExvZ2ljYWxSZXBNc2dUeXBl IGFjdGlvbiwgU3RyaW5nSW5mbyBzKQogCVRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQ7CiAJUGFy YWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvOwogCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0 aW9uOworCVN0cmluZ0luZm9EYXRhIG9yaWdpbmFsX21zZzsKIAogCWFwcGx5X2FjdGlvbiA9IGdl dF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oc3RyZWFtX3hpZCwgJndpbmZvKTsKIApAQCAtNTgy LDYgKzU5Miw4IEBAIGhhbmRsZV9zdHJlYW1lZF90cmFuc2FjdGlvbihMb2dpY2FsUmVwTXNnVHlw ZSBhY3Rpb24sIFN0cmluZ0luZm8gcykKIAogCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZChz dHJlYW1feGlkKSk7CiAKKwlvcmlnaW5hbF9tc2cgPSAqczsKKwogCS8qCiAJICogV2Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgWElEIG9mIHRoZSBzdWJ4YWN0IGFzIHRoZSBmaXJzdCBwYXJ0IG9mIHRo ZQogCSAqIG1lc3NhZ2UsIHNvIGV4dHJhY3QgaXQuCkBAIC02MDUsMTAgKzYxNywxNCBAQCBoYW5k bGVfc3RyZWFtZWRfdHJhbnNhY3Rpb24oTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9uLCBTdHJpbmdJ bmZvIHMpCiAJCQlzdHJlYW1fd3JpdGVfY2hhbmdlKGFjdGlvbiwgcyk7CiAJCQlyZXR1cm4gdHJ1 ZTsKIAorCQljYXNlIFRSQU5TX0xFQURFUl9QQVJUSUFMX1NFUklBTElaRToKIAkJY2FzZSBUUkFO U19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKIAkJCUFzc2VydCh3aW5mbyk7CiAKLQkJCXBhX3Nl bmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKTsKKwkJCWlmIChhcHBseV9hY3Rpb24gPT0g VFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUwpCisJCQkJcGFfc2VuZF9kYXRhKHdpbmZvLCBz LT5sZW4sIHMtPmRhdGEpOworCQkJZWxzZQorCQkJCXN0cmVhbV93cml0ZV9jaGFuZ2UoYWN0aW9u LCAmb3JpZ2luYWxfbXNnKTsKIAogCQkJLyoKIAkJCSAqIFhYWCBUaGUgcHVibGlzaGVyIHNpZGUg ZG9lc24ndCBhbHdheXMgc2VuZCByZWxhdGlvbi90eXBlIHVwZGF0ZQpAQCAtMTI1Myw2ICsxMjY5 LDcgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAlMb2dpY2Fs UmVwUHJlcGFyZWRUeG5EYXRhIHByZXBhcmVfZGF0YTsKIAlQYXJhbGxlbEFwcGx5V29ya2VySW5m byAqd2luZm87CiAJVHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CisJU3RyaW5nSW5mb0Rh dGEgb3JpZ2luYWxfbXNnID0gKnM7CiAKIAlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCiAJ CWVyZXBvcnQoRVJST1IsCkBAIC0xMjc4LDcgKzEyOTUsOCBAQCBhcHBseV9oYW5kbGVfc3RyZWFt X3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCQkJICogVGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVuIHNl cmlhbGl6ZWQgdG8gZmlsZSwgc28gcmVwbGF5IGFsbCB0aGUKIAkJCSAqIHNwb29sZWQgb3BlcmF0 aW9ucy4KIAkJCSAqLwotCQkJYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhwcmVwYXJlX2RhdGEueGlk LCBwcmVwYXJlX2RhdGEucHJlcGFyZV9sc24pOworCQkJYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhN eUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0LAorCQkJCQkJCQkgICBwcmVwYXJlX2Rh dGEueGlkLCBwcmVwYXJlX2RhdGEucHJlcGFyZV9sc24pOwogCiAJCQkvKiBNYXJrIHRoZSB0cmFu c2FjdGlvbiBhcyBwcmVwYXJlZC4gKi8KIAkJCWFwcGx5X2hhbmRsZV9wcmVwYXJlX2ludGVybmFs KCZwcmVwYXJlX2RhdGEpOwpAQCAtMTI5NCw2ICsxMzEyLDcgQEAgYXBwbHlfaGFuZGxlX3N0cmVh bV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAkJCWJyZWFrOwogCiAJCWNhc2UgVFJBTlNfTEVBREVS X1NFTkRfVE9fUEFSQUxMRUw6CisJCWNhc2UgVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VSSUFMSVpF OgogCQkJQXNzZXJ0KHdpbmZvKTsKIAogCQkJLyoKQEAgLTEzMDMsMTMgKzEzMjIsMjEgQEAgYXBw bHlfaGFuZGxlX3N0cmVhbV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAkJCXBhX3VubG9ja19zdHJl YW0od2luZm8tPnNoYXJlZC0+eGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKIAogCQkJLyogU2Vu ZCBTVFJFQU0gUFJFUEFSRSBtZXNzYWdlIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuICov Ci0JCQlwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSk7CisJCQlpZiAoYXBwbHlf YWN0aW9uID09IFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMKQorCQkJCXBhX3NlbmRfZGF0 YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKTsKKwkJCWVsc2UKKwkJCQlzdHJlYW1fd3JpdGVfbWVz c2FnZShwcmVwYXJlX2RhdGEueGlkLAorCQkJCQkJCQkJIExPR0lDQUxfUkVQX01TR19TVFJFQU1f UFJFUEFSRSwKKwkJCQkJCQkJCSAmb3JpZ2luYWxfbXNnKTsKKworCQkJaWYgKHdpbmZvLT5zZXJp YWxpemVfY2hhbmdlcykKKwkJCQlwYV9zZXRfZmlsZXNldF9zdGF0ZSh3aW5mby0+c2hhcmVkLCBM RUFERVJfRklMRVNFVF9BQ0NFU1NJQkxFKTsKIAogCQkJLyoKLQkJCSAqIEFmdGVyIHNlbmRpbmcg dGhlIGRhdGEgdG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciwgd2FpdCBmb3IKLQkJCSAqIHRo YXQgd29ya2VyIHRvIGZpbmlzaC4gVGhpcyBpcyBuZWNlc3NhcnkgdG8gbWFpbnRhaW4gY29tbWl0 Ci0JCQkgKiBvcmRlciB3aGljaCBhdm9pZHMgZmFpbHVyZXMgZHVlIHRvIHRyYW5zYWN0aW9uIGRl cGVuZGVuY2llcyBhbmQKLQkJCSAqIGRlYWRsb2Nrcy4KKwkJCSAqIEFmdGVyIHNlbmRpbmcgdGhl IGRhdGEgdG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBvcgorCQkJICogc2VyaWFsaXppbmcg ZGF0YSB0byBmaWxlLCB3YWl0IGZvciB0aGF0IHdvcmtlciB0byBmaW5pc2guIFRoaXMKKwkJCSAq IGlzIG5lY2Vzc2FyeSB0byBtYWludGFpbiBjb21taXQgb3JkZXIgd2hpY2ggYXZvaWRzIGZhaWx1 cmVzIGR1ZQorCQkJICogdG8gdHJhbnNhY3Rpb24gZGVwZW5kZW5jaWVzIGFuZCBkZWFkbG9ja3Mu CiAJCQkgKi8KIAkJCXBhX3dhaXRfZm9yX3hhY3RfZmluaXNoKHdpbmZvLT5zaGFyZWQpOwogCQkJ KHZvaWQpIHBhX2ZyZWVfd29ya2VyKHdpbmZvLCBwcmVwYXJlX2RhdGEueGlkKTsKQEAgLTEzMjAs NiArMTM0NywxNCBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQog CQkJYnJlYWs7CiAKIAkJY2FzZSBUUkFOU19QQVJBTExFTF9BUFBMWToKKworCQkJLyoKKwkJCSAq IENsb3NlIHRoZSBmaWxlIGJlZm9yZSBjb21taXR0aW5nIGlmIHRoZSBwYXJhbGxlbCBhcHBseSBp cworCQkJICogYXBwbHlpbmcgc3Bvb2xlZCBjaGFuZ2VzLgorCQkJICovCisJCQlpZiAoc3RyZWFt X2ZkKQorCQkJCUJ1ZkZpbGVDbG9zZShzdHJlYW1fZmQpOworCiAJCQliZWdpbl9yZXBsaWNhdGlv bl9zdGVwKCk7CiAKIAkJCS8qIE1hcmsgdGhlIHRyYW5zYWN0aW9uIGFzIHByZXBhcmVkLiAqLwpA QCAtMTM4MCw3ICsxNDE1LDQ2IEBAIGFwcGx5X2hhbmRsZV9vcmlnaW4oU3RyaW5nSW5mbyBzKQog CQkJCSBlcnJtc2dfaW50ZXJuYWwoIk9SSUdJTiBtZXNzYWdlIHNlbnQgb3V0IG9mIG9yZGVyIikp KTsKIH0KIAorLyoKKyAqIEluaXRpYWxpemUgZmlsZXNldCAoaWYgbm90IGFscmVhZHkgZG9uZSku CisgKgorICogQ3JlYXRlIGEgbmV3IGZpbGUgd2hlbiBmaXJzdF9zZWdtZW50IGlzIHRydWUsIG90 aGVyd2lzZSBvcGVuIHRoZSBleGlzdGluZworICogZmlsZS4KKyAqLwordm9pZAorc2VyaWFsaXpl X3N0cmVhbV9zdGFydChUcmFuc2FjdGlvbklkIHhpZCwgYm9vbCBmaXJzdF9zZWdtZW50KQorewor CWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAoKTsKKworCS8qCisJICogSW5pdGlhbGl6ZSB0aGUgd29y a2VyJ3Mgc3RyZWFtX2ZpbGVzZXQgaWYgd2UgaGF2ZW4ndCB5ZXQuIFRoaXMgd2lsbCBiZQorCSAq IHVzZWQgZm9yIHRoZSBlbnRpcmUgZHVyYXRpb24gb2YgdGhlIHdvcmtlciBzbyBjcmVhdGUgaXQg aW4gYSBwZXJtYW5lbnQKKwkgKiBjb250ZXh0LiBXZSBjcmVhdGUgdGhpcyBvbiB0aGUgdmVyeSBm aXJzdCBzdHJlYW1pbmcgbWVzc2FnZSBmcm9tIGFueQorCSAqIHRyYW5zYWN0aW9uIGFuZCB0aGVu IHVzZSBpdCBmb3IgdGhpcyBhbmQgb3RoZXIgc3RyZWFtaW5nIHRyYW5zYWN0aW9ucy4KKwkgKiBO b3csIHdlIGNvdWxkIGNyZWF0ZSBhIGZpbGVzZXQgYXQgdGhlIHN0YXJ0IG9mIHRoZSB3b3JrZXIg YXMgd2VsbCBidXQKKwkgKiB0aGVuIHdlIHdvbid0IGJlIHN1cmUgdGhhdCBpdCB3aWxsIGV2ZXIg YmUgdXNlZC4KKwkgKi8KKwlpZiAoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCA9 PSBOVUxMKQorCXsKKwkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CisKKwkJb2xkY3R4ID0gTWVtb3J5 Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CiAKKwkJTXlMb2dpY2FsUmVwV29ya2VyLT5z dHJlYW1fZmlsZXNldCA9IHBhbGxvYyhzaXplb2YoRmlsZVNldCkpOworCQlGaWxlU2V0SW5pdChN eUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0KTsKKworCQlNZW1vcnlDb250ZXh0U3dp dGNoVG8ob2xkY3R4KTsKKwl9CisKKwkvKiBPcGVuIHRoZSBzcG9vbCBmaWxlIGZvciB0aGlzIHRy YW5zYWN0aW9uLiAqLworCXN0cmVhbV9vcGVuX2ZpbGUoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJp ZCwgeGlkLCBmaXJzdF9zZWdtZW50KTsKKworCS8qIElmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBz ZWdtZW50LCBvcGVuIGV4aXN0aW5nIHN1YnhhY3QgZmlsZS4gKi8KKwlpZiAoIWZpcnN0X3NlZ21l bnQpCisJCXN1YnhhY3RfaW5mb19yZWFkKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7 CisKKwllbmRfcmVwbGljYXRpb25fc3RlcCgpOworfQogCiAvKgogICogSGFuZGxlIFNUUkVBTSBT VEFSVCBtZXNzYWdlLgpAQCAtMTM5Nyw2ICsxNDcxLDcgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9z dGFydChTdHJpbmdJbmZvIHMpCiAJYm9vbAkJZmlyc3Rfc2VnbWVudDsKIAlQYXJhbGxlbEFwcGx5 V29ya2VySW5mbyAqd2luZm87CiAJVHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CisJU3Ry aW5nSW5mb0RhdGEgb3JpZ2luYWxfbXNnID0gKnM7CiAKIAlpZiAoaW5fc3RyZWFtZWRfdHJhbnNh Y3Rpb24pCiAJCWVyZXBvcnQoRVJST1IsCkBAIC0xNDMxLDQzICsxNTA2LDI3IEBAIGFwcGx5X2hh bmRsZV9zdHJlYW1fc3RhcnQoU3RyaW5nSW5mbyBzKQogCQljYXNlIFRSQU5TX0xFQURFUl9TRVJJ QUxJWkU6CiAKIAkJCS8qCi0JCQkgKiBTdGFydCBhIHRyYW5zYWN0aW9uIG9uIHN0cmVhbSBzdGFy dCwgdGhpcyB0cmFuc2FjdGlvbiB3aWxsIGJlCi0JCQkgKiBjb21taXR0ZWQgb24gdGhlIHN0cmVh bSBzdG9wIHVubGVzcyBpdCBpcyBhIHRhYmxlc3luYyB3b3JrZXIgaW4KLQkJCSAqIHdoaWNoIGNh c2UgaXQgd2lsbCBiZSBjb21taXR0ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBhbGwgdGhlCi0JCQkgKiBt ZXNzYWdlcy4gV2UgbmVlZCB0aGUgdHJhbnNhY3Rpb24gZm9yIGhhbmRsaW5nIHRoZSBidWZmaWxl LAotCQkJICogdXNlZCBmb3Igc2VyaWFsaXppbmcgdGhlIHN0cmVhbWluZyBkYXRhIGFuZCBzdWJ4 YWN0IGluZm8uCisJCQkgKiBzZXJpYWxpemVfc3RyZWFtX3N0YXJ0IHdpbGwgc3RhcnQgYSB0cmFu c2FjdGlvbiwgdGhpcworCQkJICogdHJhbnNhY3Rpb24gd2lsbCBiZSBjb21taXR0ZWQgb24gdGhl IHN0cmVhbSBzdG9wIHVubGVzcyBpdCBpcyBhCisJCQkgKiB0YWJsZXN5bmMgd29ya2VyIGluIHdo aWNoIGNhc2UgaXQgd2lsbCBiZSBjb21taXR0ZWQgYWZ0ZXIKKwkJCSAqIHByb2Nlc3NpbmcgYWxs IHRoZSBtZXNzYWdlcy4gV2UgbmVlZCB0aGUgdHJhbnNhY3Rpb24gZm9yCisJCQkgKiBoYW5kbGlu ZyB0aGUgYnVmZmlsZSwgdXNlZCBmb3Igc2VyaWFsaXppbmcgdGhlIHN0cmVhbWluZyBkYXRhCisJ CQkgKiBhbmQgc3VieGFjdCBpbmZvLgogCQkJICovCi0JCQliZWdpbl9yZXBsaWNhdGlvbl9zdGVw KCk7CisJCQlzZXJpYWxpemVfc3RyZWFtX3N0YXJ0KHN0cmVhbV94aWQsIGZpcnN0X3NlZ21lbnQp OworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19MRUFERVJfUEFSVElBTF9TRVJJQUxJWkU6CiAK IAkJCS8qCi0JCQkgKiBJbml0aWFsaXplIHRoZSB3b3JrZXIncyBzdHJlYW1fZmlsZXNldCBpZiB3 ZSBoYXZlbid0IHlldC4gVGhpcwotCQkJICogd2lsbCBiZSB1c2VkIGZvciB0aGUgZW50aXJlIGR1 cmF0aW9uIG9mIHRoZSB3b3JrZXIgc28gY3JlYXRlIGl0Ci0JCQkgKiBpbiBhIHBlcm1hbmVudCBj b250ZXh0LiBXZSBjcmVhdGUgdGhpcyBvbiB0aGUgdmVyeSBmaXJzdAotCQkJICogc3RyZWFtaW5n IG1lc3NhZ2UgZnJvbSBhbnkgdHJhbnNhY3Rpb24gYW5kIHRoZW4gdXNlIGl0IGZvciB0aGlzCi0J CQkgKiBhbmQgb3RoZXIgc3RyZWFtaW5nIHRyYW5zYWN0aW9ucy4gTm93LCB3ZSBjb3VsZCBjcmVh dGUgYQotCQkJICogZmlsZXNldCBhdCB0aGUgc3RhcnQgb2YgdGhlIHdvcmtlciBhcyB3ZWxsIGJ1 dCB0aGVuIHdlIHdvbid0IGJlCi0JCQkgKiBzdXJlIHRoYXQgaXQgd2lsbCBldmVyIGJlIHVzZWQu CisJCQkgKiBUaGUgZmlsZSBzaG91bGQgaGF2ZSBiZWVuIGNyZWF0ZWQgd2hlbiBlbnRlcmluZwor CQkJICogUEFSVElBTF9TRVJJQUxJWkUgbW9kZSBzbyBubyBuZWVkIHRvIGNyZWF0ZSBpdCBhZ2Fp bi4gVGhlCisJCQkgKiB0cmFuc2FjdGlvbiBzdGFydGVkIGluIHNlcmlhbGl6ZV9zdHJlYW1fc3Rh cnQgd2lsbCBiZSBjb21taXR0ZWQKKwkJCSAqIG9uIHRoZSBzdHJlYW0gc3RvcC4KIAkJCSAqLwot CQkJaWYgKE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQgPT0gTlVMTCkKLQkJCXsK LQkJCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKwkJCXNlcmlhbGl6ZV9zdHJlYW1fc3RhcnQoc3Ry ZWFtX3hpZCwgZmFsc2UpOworCQkJc3RyZWFtX3dyaXRlX2NoYW5nZShMT0dJQ0FMX1JFUF9NU0df U1RSRUFNX1NUQVJULCAmb3JpZ2luYWxfbXNnKTsKIAotCQkJCW9sZGN0eCA9IE1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOwotCi0JCQkJTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJl YW1fZmlsZXNldCA9IHBhbGxvYyhzaXplb2YoRmlsZVNldCkpOwotCQkJCUZpbGVTZXRJbml0KE15 TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQpOwotCi0JCQkJTWVtb3J5Q29udGV4dFN3 aXRjaFRvKG9sZGN0eCk7Ci0JCQl9Ci0KLQkJCS8qIE9wZW4gdGhlIHNwb29sIGZpbGUgZm9yIHRo aXMgdHJhbnNhY3Rpb24uICovCi0JCQlzdHJlYW1fb3Blbl9maWxlKE15TG9naWNhbFJlcFdvcmtl ci0+c3ViaWQsIHN0cmVhbV94aWQsIGZpcnN0X3NlZ21lbnQpOwotCi0JCQkvKiBJZiB0aGlzIGlz IG5vdCB0aGUgZmlyc3Qgc2VnbWVudCwgb3BlbiBleGlzdGluZyBzdWJ4YWN0IGZpbGUuICovCi0J CQlpZiAoIWZpcnN0X3NlZ21lbnQpCi0JCQkJc3VieGFjdF9pbmZvX3JlYWQoTXlMb2dpY2FsUmVw V29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCk7Ci0KLQkJCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7 CiAJCQlicmVhazsKIAogCQljYXNlIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgpAQCAt MTUxMyw2ICsxNTcyLDM0IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RhcnQoU3RyaW5nSW5mbyBz KQogfQogCiAvKgorICogVXBkYXRlIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBzdWJ4YWN0cyBhbmQg Y2xvc2UgdGhlIGZpbGUuCisgKgorICogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIHdo ZW4gdGhlIHNlcmlhbGl6ZV9zdHJlYW1fc3RhcnQgZnVuY3Rpb24gaGFzCisgKiBiZWVuIGNhbGxl ZC4KKyAqLwordm9pZAorc2VyaWFsaXplX3N0cmVhbV9zdG9wKFRyYW5zYWN0aW9uSWQgeGlkKQor eworCS8qCisJICogQ2xvc2UgdGhlIGZpbGUgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMsIGFuZCBz ZXJpYWxpemUgaW5mb3JtYXRpb24gYWJvdXQKKwkgKiBzdWJ4YWN0cyBmb3IgdGhlIHRvcGxldmVs IHRyYW5zYWN0aW9uLgorCSAqLworCXN1YnhhY3RfaW5mb193cml0ZShNeUxvZ2ljYWxSZXBXb3Jr ZXItPnN1YmlkLCB4aWQpOworCXN0cmVhbV9jbG9zZV9maWxlKCk7CisKKwkvKiBXZSBtdXN0IGJl IGluIGEgdmFsaWQgdHJhbnNhY3Rpb24gc3RhdGUgKi8KKwlBc3NlcnQoSXNUcmFuc2FjdGlvblN0 YXRlKCkpOworCisJLyogQ29tbWl0IHRoZSBwZXItc3RyZWFtIHRyYW5zYWN0aW9uICovCisJQ29t bWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkvKiBSZXNldCBwZXItc3RyZWFtIGNvbnRleHQg Ki8KKwlNZW1vcnlDb250ZXh0UmVzZXQoTG9naWNhbFN0cmVhbWluZ0NvbnRleHQpOworCisJcGdz dGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBOVUxMKTsKK30KKworLyoKICAqIEhhbmRs ZSBTVFJFQU0gU1RPUCBtZXNzYWdlLgogICovCiBzdGF0aWMgdm9pZApAQCAtMTUzMSwyNCArMTYx OCwxMyBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0b3AoU3RyaW5nSW5mbyBzKQogCXN3aXRjaCAo YXBwbHlfYWN0aW9uKQogCXsKIAkJY2FzZSBUUkFOU19MRUFERVJfU0VSSUFMSVpFOgorCQkJc2Vy aWFsaXplX3N0cmVhbV9zdG9wKHN0cmVhbV94aWQpOworCQkJYnJlYWs7CiAKLQkJCS8qCi0JCQkg KiBDbG9zZSB0aGUgZmlsZSB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcywgYW5kIHNlcmlhbGl6ZQot CQkJICogaW5mb3JtYXRpb24gYWJvdXQgc3VieGFjdHMgZm9yIHRoZSB0b3BsZXZlbCB0cmFuc2Fj dGlvbi4KLQkJCSAqLwotCQkJc3VieGFjdF9pbmZvX3dyaXRlKE15TG9naWNhbFJlcFdvcmtlci0+ c3ViaWQsIHN0cmVhbV94aWQpOwotCQkJc3RyZWFtX2Nsb3NlX2ZpbGUoKTsKLQotCQkJLyogV2Ug bXVzdCBiZSBpbiBhIHZhbGlkIHRyYW5zYWN0aW9uIHN0YXRlICovCi0JCQlBc3NlcnQoSXNUcmFu c2FjdGlvblN0YXRlKCkpOwotCi0JCQkvKiBDb21taXQgdGhlIHBlci1zdHJlYW0gdHJhbnNhY3Rp b24gKi8KLQkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwotCi0JCQkvKiBSZXNldCBwZXIt c3RyZWFtIGNvbnRleHQgKi8KLQkJCU1lbW9yeUNvbnRleHRSZXNldChMb2dpY2FsU3RyZWFtaW5n Q29udGV4dCk7Ci0KLQkJCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRSwgTlVMTCk7 CisJCWNhc2UgVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VSSUFMSVpFOgorCQkJc3RyZWFtX3dyaXRl X2NoYW5nZShMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX1NUT1AsIHMpOworCQkJc2VyaWFsaXplX3N0 cmVhbV9zdG9wKHN0cmVhbV94aWQpOworCQkJc3RyZWFtX2FwcGx5X3dvcmtlciA9IE5VTEw7CiAJ CQlicmVhazsKIAogCQljYXNlIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgpAQCAtMTY5 MSw2ICsxNzY3LDcgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCiAJ TG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YSBhYm9ydF9kYXRhOwogCVBhcmFsbGVsQXBwbHlXb3Jr ZXJJbmZvICp3aW5mbzsKIAlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKKwlTdHJpbmdJ bmZvRGF0YSBvcmlnaW5hbF9tc2cgPSAqczsKIAlib29sCQlhYm9ydF90b3BsZXZlbF90cmFuc2Fj dGlvbjsKIAogCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKQEAgLTE3MjEsNiArMTc5OCwy NiBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIAkJCXNlcmlhbGl6 ZV9zdHJlYW1fYWJvcnQoeGlkLCBzdWJ4aWQpOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBUUkFOU19M RUFERVJfUEFSVElBTF9TRVJJQUxJWkU6CisJCQlBc3NlcnQod2luZm8pOworCisJCQkvKgorCQkJ ICogUGFyYWxsZWwgYXBwbHkgd29ya2VyIG1pZ2h0IGhhdmUgYXBwbGllZCBzb21lIGNoYW5nZXMs IHNvIHdyaXRlCisJCQkgKiB0aGUgU1RSRUFNX0FCT1JUIG1lc3NhZ2Ugc28gdGhhdCB0aGUgcGFy YWxsZWwgYXBwbHkgd29ya2VyIGNhbgorCQkJICogcm9sbGJhY2sgdGhlIHN1YnRyYW5zYWN0aW9u IGlmIG5lZWRlZC4KKwkJCSAqLworCQkJc3RyZWFtX3dyaXRlX21lc3NhZ2UoeGlkLCBMT0dJQ0FM X1JFUF9NU0dfU1RSRUFNX0FCT1JULAorCQkJCQkJCQkgJm9yaWdpbmFsX21zZyk7CisKKwkJCWlm IChhYm9ydF90b3BsZXZlbF90cmFuc2FjdGlvbikKKwkJCXsKKwkJCQlwYV91bmxvY2tfc3RyZWFt KHhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisJCQkJcGFfc2V0X2ZpbGVzZXRfc3RhdGUod2lu Zm8tPnNoYXJlZCwgTEVBREVSX0ZJTEVTRVRfQUNDRVNTSUJMRSk7CisJCQkJKHZvaWQpIHBhX2Zy ZWVfd29ya2VyKHdpbmZvLCB4aWQpOworCQkJfQorCisJCQlicmVhazsKKwogCQljYXNlIFRSQU5T X0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgogCQkJQXNzZXJ0KHdpbmZvKTsKIApAQCAtMTczOCw2 ICsxODM1LDEwIEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQogCiAJ CQlpZiAoYWJvcnRfdG9wbGV2ZWxfdHJhbnNhY3Rpb24pCiAJCQl7CisJCQkJaWYgKHdpbmZvLT5z ZXJpYWxpemVfY2hhbmdlcykKKwkJCQkJcGFfc2V0X2ZpbGVzZXRfc3RhdGUod2luZm8tPnNoYXJl ZCwKKwkJCQkJCQkJCQkgTEVBREVSX0ZJTEVTRVRfQUNDRVNTSUJMRSk7CisKIAkJCQkodm9pZCkg cGFfZnJlZV93b3JrZXIod2luZm8sIHhpZCk7CiAJCQl9CiAKQEAgLTE3NzYsMTcgKzE4NzcsMTgg QEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCiAvKgogICogQ29tbW9u IHNwb29sZmlsZSBwcm9jZXNzaW5nLgogICovCi1zdGF0aWMgdm9pZAotYXBwbHlfc3Bvb2xlZF9t ZXNzYWdlcyhUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCit2b2lkCithcHBseV9z cG9vbGVkX21lc3NhZ2VzKEZpbGVTZXQgKnN0cmVhbV9maWxlc2V0LCBUcmFuc2FjdGlvbklkIHhp ZCwKKwkJCQkJICAgWExvZ1JlY1B0ciBsc24pCiB7CiAJU3RyaW5nSW5mb0RhdGEgczI7CiAJaW50 CQkJbmNoYW5nZXM7CiAJY2hhcgkJcGF0aFtNQVhQR1BBVEhdOwogCWNoYXIJICAgKmJ1ZmZlciA9 IE5VTEw7CiAJTWVtb3J5Q29udGV4dCBvbGRjeHQ7Ci0JQnVmRmlsZSAgICAqZmQ7CiAKLQltYXli ZV9zdGFydF9za2lwcGluZ19jaGFuZ2VzKGxzbik7CisJaWYgKCFhbV9wYXJhbGxlbF9hcHBseV93 b3JrZXIoKSkKKwkJbWF5YmVfc3RhcnRfc2tpcHBpbmdfY2hhbmdlcyhsc24pOwogCiAJLyogTWFr ZSBzdXJlIHdlIGhhdmUgYW4gb3BlbiB0cmFuc2FjdGlvbiAqLwogCWJlZ2luX3JlcGxpY2F0aW9u X3N0ZXAoKTsKQEAgLTE4MDIsOCArMTkwNCw4IEBAIGFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoVHJh bnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKQogCWNoYW5nZXNfZmlsZW5hbWUocGF0aCwg TXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkKTsKIAllbG9nKERFQlVHMSwgInJlcGxheWlu ZyBjaGFuZ2VzIGZyb20gZmlsZSBcIiVzXCIiLCBwYXRoKTsKIAotCWZkID0gQnVmRmlsZU9wZW5G aWxlU2V0KE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQsIHBhdGgsIE9fUkRPTkxZ LAotCQkJCQkJCWZhbHNlKTsKKwlzdHJlYW1fZmQgPSBCdWZGaWxlT3BlbkZpbGVTZXQoc3RyZWFt X2ZpbGVzZXQsIHBhdGgsIE9fUkRPTkxZLCBmYWxzZSk7CisJc3RyZWFtX3hpZCA9IHhpZDsKIAog CWJ1ZmZlciA9IHBhbGxvYyhCTENLU1opOwogCWluaXRTdHJpbmdJbmZvKCZzMik7CkBAIC0xODM0 LDcgKzE5MzYsNyBAQCBhcHBseV9zcG9vbGVkX21lc3NhZ2VzKFRyYW5zYWN0aW9uSWQgeGlkLCBY TG9nUmVjUHRyIGxzbikKIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAogCQkvKiByZWFkIGxl bmd0aCBvZiB0aGUgb24tZGlzayByZWNvcmQgKi8KLQkJbmJ5dGVzID0gQnVmRmlsZVJlYWQoZmQs ICZsZW4sIHNpemVvZihsZW4pKTsKKwkJbmJ5dGVzID0gQnVmRmlsZVJlYWQoc3RyZWFtX2ZkLCAm bGVuLCBzaXplb2YobGVuKSk7CiAKIAkJLyogaGF2ZSB3ZSByZWFjaGVkIGVuZCBvZiB0aGUgZmls ZT8gKi8KIAkJaWYgKG5ieXRlcyA9PSAwKQpAQCAtMTg1NSw3ICsxOTU3LDcgQEAgYXBwbHlfc3Bv b2xlZF9tZXNzYWdlcyhUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCiAJCWJ1ZmZl ciA9IHJlcGFsbG9jKGJ1ZmZlciwgbGVuKTsKIAogCQkvKiBhbmQgZmluYWxseSByZWFkIHRoZSBk YXRhIGludG8gdGhlIGJ1ZmZlciAqLwotCQlpZiAoQnVmRmlsZVJlYWQoZmQsIGJ1ZmZlciwgbGVu KSAhPSBsZW4pCisJCWlmIChCdWZGaWxlUmVhZChzdHJlYW1fZmQsIGJ1ZmZlciwgbGVuKSAhPSBs ZW4pCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZV9mb3JfZmlsZV9hY2Nlc3MoKSwK IAkJCQkJIGVycm1zZygiY291bGQgbm90IHJlYWQgZnJvbSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24n cyBjaGFuZ2VzIGZpbGUgXCIlc1wiOiAlbSIsCkBAIC0xODc0LDYgKzE5NzYsMTYgQEAgYXBwbHlf c3Bvb2xlZF9tZXNzYWdlcyhUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCiAKIAkJ TWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CiAKKwkJLyoKKwkJICogQnJlYWsgdGhlIGxv b3AgaWYgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBoYXMgZmluaXNoZWQgYXBwbHlpbmcKKwkJ ICogdGhlIHRyYW5zYWN0aW9uLiBUaGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHNob3VsZCBoYXZl IGNsb3NlZCB0aGUKKwkJICogZmlsZSBiZWZvcmUgY29tbWl0dGluZy4KKwkJICovCisJCWlmIChh bV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSAmJgorCQkJKE15UGFyYWxsZWxTaGFyZWQtPnhhY3Rf c3RhdGUgPT0gUEFSQUxMRUxfVFJBTlNfRklOSVNIRUQgfHwKKwkJCSBNeVBhcmFsbGVsU2hhcmVk LT54YWN0X3N0YXRlID09IFBBUkFMTEVMX1RSQU5TX1VOS05PV04pKQorCQkJZ290byBkb25lOwor CiAJCW5jaGFuZ2VzKys7CiAKIAkJaWYgKG5jaGFuZ2VzICUgMTAwMCA9PSAwKQpAQCAtMTg4MSwx MSArMTk5MywxNCBAQCBhcHBseV9zcG9vbGVkX21lc3NhZ2VzKFRyYW5zYWN0aW9uSWQgeGlkLCBY TG9nUmVjUHRyIGxzbikKIAkJCQkgbmNoYW5nZXMsIHBhdGgpOwogCX0KIAotCUJ1ZkZpbGVDbG9z ZShmZCk7Ci0KKwlCdWZGaWxlQ2xvc2Uoc3RyZWFtX2ZkKTsKIAlwZnJlZShidWZmZXIpOwogCXBm cmVlKHMyLmRhdGEpOwogCitkb25lOgorCXN0cmVhbV9mZCA9IE5VTEw7CisJc3RyZWFtX3hpZCA9 IEludmFsaWRUcmFuc2FjdGlvbklkOworCiAJZWxvZyhERUJVRzEsICJyZXBsYXllZCAlZCAoYWxs KSBjaGFuZ2VzIGZyb20gZmlsZSBcIiVzXCIiLAogCQkgbmNoYW5nZXMsIHBhdGgpOwogCkBAIC0x OTAyLDYgKzIwMTcsNyBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIHMp CiAJTG9naWNhbFJlcENvbW1pdERhdGEgY29tbWl0X2RhdGE7CiAJUGFyYWxsZWxBcHBseVdvcmtl ckluZm8gKndpbmZvOwogCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOworCVN0cmluZ0lu Zm9EYXRhIG9yaWdpbmFsX21zZyA9ICpzOwogCiAJaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9u KQogCQllcmVwb3J0KEVSUk9SLApAQCAtMTkyMSw3ICsyMDM3LDggQEAgYXBwbHlfaGFuZGxlX3N0 cmVhbV9jb21taXQoU3RyaW5nSW5mbyBzKQogCQkJICogVGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVu IHNlcmlhbGl6ZWQgdG8gZmlsZSwgc28gcmVwbGF5IGFsbCB0aGUKIAkJCSAqIHNwb29sZWQgb3Bl cmF0aW9ucy4KIAkJCSAqLwotCQkJYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyh4aWQsIGNvbW1pdF9k YXRhLmNvbW1pdF9sc24pOworCQkJYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhNeUxvZ2ljYWxSZXBX b3JrZXItPnN0cmVhbV9maWxlc2V0LCB4aWQsCisJCQkJCQkJCSAgIGNvbW1pdF9kYXRhLmNvbW1p dF9sc24pOwogCiAJCQlhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7 CiAKQEAgLTE5MzAsNiArMjA0Nyw3IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fY29tbWl0KFN0cmlu Z0luZm8gcykKIAkJCWJyZWFrOwogCiAJCWNhc2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxM RUw6CisJCWNhc2UgVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VSSUFMSVpFOgogCQkJQXNzZXJ0KHdp bmZvKTsKIAogCQkJLyoKQEAgLTE5MzksMTMgKzIwNTcsMjEgQEAgYXBwbHlfaGFuZGxlX3N0cmVh bV9jb21taXQoU3RyaW5nSW5mbyBzKQogCQkJcGFfdW5sb2NrX3N0cmVhbSh4aWQsIEFjY2Vzc0V4 Y2x1c2l2ZUxvY2spOwogCiAJCQkvKiBTZW5kIFNUUkVBTSBDT01NSVQgbWVzc2FnZSB0byB0aGUg cGFyYWxsZWwgYXBwbHkgd29ya2VyLiAqLwotCQkJcGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4s IHMtPmRhdGEpOworCQkJaWYgKGFwcGx5X2FjdGlvbiA9PSBUUkFOU19MRUFERVJfU0VORF9UT19Q QVJBTExFTCkKKwkJCQlwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSk7CisJCQll bHNlCisJCQkJc3RyZWFtX3dyaXRlX21lc3NhZ2UoeGlkLCBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFN X0NPTU1JVCwKKwkJCQkJCQkJCSAmb3JpZ2luYWxfbXNnKTsKKworCQkJaWYgKHdpbmZvLT5zZXJp YWxpemVfY2hhbmdlcykKKwkJCQlwYV9zZXRfZmlsZXNldF9zdGF0ZSh3aW5mby0+c2hhcmVkLAor CQkJCQkJCQkJIExFQURFUl9GSUxFU0VUX0FDQ0VTU0lCTEUpOwogCiAJCQkvKgotCQkJICogQWZ0 ZXIgc2VuZGluZyB0aGUgZGF0YSB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLCB3YWl0IGZv cgotCQkJICogdGhhdCB3b3JrZXIgdG8gZmluaXNoLiBUaGlzIGlzIG5lY2Vzc2FyeSB0byBtYWlu dGFpbiBjb21taXQKLQkJCSAqIG9yZGVyIHdoaWNoIGF2b2lkcyBmYWlsdXJlcyBkdWUgdG8gdHJh bnNhY3Rpb24gZGVwZW5kZW5jaWVzIGFuZAotCQkJICogZGVhZGxvY2tzLgorCQkJICogQWZ0ZXIg c2VuZGluZyB0aGUgZGF0YSB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIG9yCisJCQkgKiBz ZXJpYWxpemluZyBkYXRhIHRvIGZpbGUsIHdhaXQgZm9yIHRoYXQgd29ya2VyIHRvIGZpbmlzaC4g VGhpcworCQkJICogaXMgbmVjZXNzYXJ5IHRvIG1haW50YWluIGNvbW1pdCBvcmRlciB3aGljaCBh dm9pZHMgZmFpbHVyZXMgZHVlCisJCQkgKiB0byB0cmFuc2FjdGlvbiBkZXBlbmRlbmNpZXMgYW5k IGRlYWRsb2Nrcy4KIAkJCSAqLwogCQkJcGFfd2FpdF9mb3JfeGFjdF9maW5pc2god2luZm8tPnNo YXJlZCk7CiAKQEAgLTE5NjQsNiArMjA5MCwxNCBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1p dChTdHJpbmdJbmZvIHMpCiAJCQlicmVhazsKIAogCQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZ OgorCisJCQkvKgorCQkJICogQ2xvc2UgdGhlIGZpbGUgYmVmb3JlIGNvbW1pdHRpbmcgaWYgdGhl IHBhcmFsbGVsIGFwcGx5IGlzCisJCQkgKiBhcHBseWluZyBzcG9vbGVkIGNoYW5nZXMuCisJCQkg Ki8KKwkJCWlmIChzdHJlYW1fZmQpCisJCQkJQnVmRmlsZUNsb3NlKHN0cmVhbV9mZCk7CisKIAkJ CWFwcGx5X2hhbmRsZV9jb21taXRfaW50ZXJuYWwoJmNvbW1pdF9kYXRhKTsKIAogCQkJbGlzdF9m cmVlKHN1YnhhY3RsaXN0KTsKQEAgLTM4NTQsNyArMzk4OCw3IEBAIHN1YnhhY3RfZmlsZW5hbWUo Y2hhciAqcGF0aCwgT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCkKIH0KIAogLyogZm9ybWF0 IGZpbGVuYW1lIGZvciBmaWxlIGNvbnRhaW5pbmcgc2VyaWFsaXplZCBjaGFuZ2VzICovCi1zdGF0 aWMgaW5saW5lIHZvaWQKK3ZvaWQKIGNoYW5nZXNfZmlsZW5hbWUoY2hhciAqcGF0aCwgT2lkIHN1 YmlkLCBUcmFuc2FjdGlvbklkIHhpZCkKIHsKIAlzbnByaW50ZihwYXRoLCBNQVhQR1BBVEgsICIl dS0ldS5jaGFuZ2VzIiwgc3ViaWQsIHhpZCk7CkBAIC0zODY4LDcgKzQwMDIsNyBAQCBjaGFuZ2Vz X2ZpbGVuYW1lKGNoYXIgKnBhdGgsIE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQpCiAgKiB0 b3BsZXZlbCB0cmFuc2FjdGlvbi4gRWFjaCBzdWJzY3JpcHRpb24gaGFzIGEgc2VwYXJhdGUgc2V0 IG9mIGZpbGVzCiAgKiBmb3IgYW55IHRvcGxldmVsIHRyYW5zYWN0aW9uLgogICovCi1zdGF0aWMg dm9pZAordm9pZAogc3RyZWFtX2NsZWFudXBfZmlsZXMoT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklk IHhpZCkKIHsKIAljaGFyCQlwYXRoW01BWFBHUEFUSF07CkBAIC0zODkxLDkgKzQwMjUsNiBAQCBz dHJlYW1fY2xlYW51cF9maWxlcyhPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlkKQogICogYnkg c3RyZWFtX3hpZCAoZ2xvYmFsIHZhcmlhYmxlKS4gSWYgaXQncyB0aGUgZmlyc3QgY2h1bmsgb2Yg c3RyZWFtZWQKICAqIGNoYW5nZXMgZm9yIHRoaXMgdHJhbnNhY3Rpb24sIGNyZWF0ZSB0aGUgYnVm ZmlsZSwgb3RoZXJ3aXNlIG9wZW4gdGhlCiAgKiBwcmV2aW91c2x5IGNyZWF0ZWQgZmlsZS4KLSAq Ci0gKiBUaGlzIGNhbiBvbmx5IGJlIGNhbGxlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgInN0cmVh bWluZyIgYmxvY2ssIGkuZS4KLSAqIGJldHdlZW4gc3RyZWFtX3N0YXJ0L3N0cmVhbV9zdG9wIG1l c3NhZ2VzIGZyb20gdGhlIHVwc3RyZWFtLgogICovCiBzdGF0aWMgdm9pZAogc3RyZWFtX29wZW5f ZmlsZShPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlkLCBib29sIGZpcnN0X3NlZ21lbnQpCkBA IC0zOTAxLDcgKzQwMzIsNiBAQCBzdHJlYW1fb3Blbl9maWxlKE9pZCBzdWJpZCwgVHJhbnNhY3Rp b25JZCB4aWQsIGJvb2wgZmlyc3Rfc2VnbWVudCkKIAljaGFyCQlwYXRoW01BWFBHUEFUSF07CiAJ TWVtb3J5Q29udGV4dCBvbGRjeHQ7CiAKLQlBc3NlcnQoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24p OwogCUFzc2VydChPaWRJc1ZhbGlkKHN1YmlkKSk7CiAJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1Zh bGlkKHhpZCkpOwogCUFzc2VydChzdHJlYW1fZmQgPT0gTlVMTCk7CkBAIC0zOTQwLDE1ICs0MDcw LDEwIEBAIHN0cmVhbV9vcGVuX2ZpbGUoT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCwgYm9v bCBmaXJzdF9zZWdtZW50KQogLyoKICAqIHN0cmVhbV9jbG9zZV9maWxlCiAgKgkgIENsb3NlIHRo ZSBjdXJyZW50bHkgb3BlbiBmaWxlIHdpdGggc3RyZWFtZWQgY2hhbmdlcy4KLSAqCi0gKiBUaGlz IGNhbiBvbmx5IGJlIGNhbGxlZCBhdCB0aGUgZW5kIG9mIGEgc3RyZWFtaW5nIGJsb2NrLCBpLmUu IGF0IHN0cmVhbV9zdG9wCi0gKiBtZXNzYWdlIGZyb20gdGhlIHVwc3RyZWFtLgogICovCiBzdGF0 aWMgdm9pZAogc3RyZWFtX2Nsb3NlX2ZpbGUodm9pZCkKIHsKLQlBc3NlcnQoaW5fc3RyZWFtZWRf dHJhbnNhY3Rpb24pOwotCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZChzdHJlYW1feGlkKSk7 CiAJQXNzZXJ0KHN0cmVhbV9mZCAhPSBOVUxMKTsKIAogCUJ1ZkZpbGVDbG9zZShzdHJlYW1fZmQp OwpAQCAtMzk2NSwxMyArNDA5MCwxMSBAQCBzdHJlYW1fY2xvc2VfZmlsZSh2b2lkKQogICogdGhl IGxlbmd0aCksIGFjdGlvbiBjb2RlIChpZGVudGlmeWluZyB0aGUgbWVzc2FnZSB0eXBlKSBhbmQg bWVzc2FnZQogICogY29udGVudHMgKHdpdGhvdXQgdGhlIHN1YnhhY3QgVHJhbnNhY3Rpb25JZCB2 YWx1ZSkuCiAgKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBzdHJlYW1fd3JpdGVfY2hhbmdlKGNoYXIg YWN0aW9uLCBTdHJpbmdJbmZvIHMpCiB7CiAJaW50CQkJbGVuOwogCi0JQXNzZXJ0KGluX3N0cmVh bWVkX3RyYW5zYWN0aW9uKTsKLQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoc3RyZWFtX3hp ZCkpOwogCUFzc2VydChzdHJlYW1fZmQgIT0gTlVMTCk7CiAKIAkvKiB0b3RhbCBvbi1kaXNrIHNp emUsIGluY2x1ZGluZyB0aGUgYWN0aW9uIHR5cGUgY2hhcmFjdGVyICovCkBAIC0zOTkwLDYgKzQx MTMsMjMgQEAgc3RyZWFtX3dyaXRlX2NoYW5nZShjaGFyIGFjdGlvbiwgU3RyaW5nSW5mbyBzKQog fQogCiAvKgorICogc3RyZWFtX3dyaXRlX21lc3NhZ2UKKyAqCSAgU2VyaWFsaXplIGEgbWVzc2Fn ZSB0byBhIGZpbGUgZm9yIHRoZSBnaXZlbiB0cmFuc2FjdGlvbi4KKyAqCisgKiBUaGlzIGZ1bmN0 aW9uIGlzIHNpbWlsYXIgdG8gc3RyZWFtX3dyaXRlX2NoYW5nZSBleGNlcHQgdGhhdCBpdCB3aWxs IG9wZW4gdGhlCisgKiB0YXJnZXQgZmlsZSBiZWZvcmUgd3JpdGluZyB0aGUgbWVzc2FnZSBhbmQg Y2xvc2UgZmlsZSBhdCB0aGUgZW5kLgorICovCitzdGF0aWMgdm9pZAorc3RyZWFtX3dyaXRlX21l c3NhZ2UoVHJhbnNhY3Rpb25JZCB4aWQsIGNoYXIgYWN0aW9uLCBTdHJpbmdJbmZvIHMpCit7CisJ QXNzZXJ0KCFpbl9zdHJlYW1lZF90cmFuc2FjdGlvbik7CisKKwlzZXJpYWxpemVfc3RyZWFtX3N0 YXJ0KHhpZCwgZmFsc2UpOworCXN0cmVhbV93cml0ZV9jaGFuZ2UoYWN0aW9uLCBzKTsKKwlzZXJp YWxpemVfc3RyZWFtX3N0b3AoeGlkKTsKK30KKworLyoKICAqIENsZWFudXAgdGhlIG1lbW9yeSBm b3Igc3VieGFjdHMgYW5kIHJlc2V0IHRoZSByZWxhdGVkIHZhcmlhYmxlcy4KICAqLwogc3RhdGlj IGlubGluZSB2b2lkCkBAIC00NjY0LDcgKzQ4MDQsOCBAQCByZXNldF9hcHBseV9lcnJvcl9jb250 ZXh0X2luZm8odm9pZCkKIC8qCiAgKiBSZXR1cm4gdGhlIGFjdGlvbiB0byB0YWtlIGZvciB0aGUg Z2l2ZW4gdHJhbnNhY3Rpb24uICp3aW5mbyBpcyBhc3NpZ25lZCB0bwogICogdGhlIGRlc3RpbmF0 aW9uIHBhcmFsbGVsIHdvcmtlciBpbmZvIChpZiB0aGUgYWN0aW9uIGlzCi0gKiBUUkFOU19MRUFE RVJfU0VORF9UT19QQVJBTExFTCwgb3RoZXJ3aXNlICp3aW5mbyBpcyBhc3NpZ25lZCBOVUxMLgor ICogVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUwgb3IgVFJBTlNfTEVBREVSX1BBUlRJQUxf U0VSSUFMSVpFKSwgb3RoZXJ3aXNlCisgKiAqd2luZm8gaXMgYXNzaWduZWQgTlVMTC4KICAqLwog c3RhdGljIFRyYW5zQXBwbHlBY3Rpb24KIGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oVHJh bnNhY3Rpb25JZCB4aWQsIFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICoqd2luZm8pCkBAIC00Njg2 LDEzICs0ODI3LDE3IEBAIGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oVHJhbnNhY3Rpb25J ZCB4aWQsIFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICoqd2luZm8pCiAJICovCiAJKndpbmZvID0g cGFfZmluZF93b3JrZXIoeGlkKTsKIAotCWlmICgqd2luZm8pCisJaWYgKCp3aW5mbyA9PSBOVUxM KQogCXsKLQkJcmV0dXJuIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOworCQlyZXR1cm4g VFJBTlNfTEVBREVSX1NFUklBTElaRTsKKwl9CisJZWxzZSBpZiAoKCp3aW5mbyktPnNlcmlhbGl6 ZV9jaGFuZ2VzKQorCXsKKwkJcmV0dXJuIFRSQU5TX0xFQURFUl9QQVJUSUFMX1NFUklBTElaRTsK IAl9CiAJZWxzZQogCXsKLQkJcmV0dXJuIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU7CisJCXJldHVy biBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKaW5kZXggYzFmODY2Ni4uODY1YmY3NiAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKKysrIGIvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKQEAgLTE5LDYgKzE5LDcgQEAK ICNpbmNsdWRlICJkYXRhdHlwZS90aW1lc3RhbXAuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIK ICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaCIKKyNpbmNsdWRlICJzdG9y YWdlL2J1ZmZpbGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZpbGVzZXQuaCIKICNpbmNsdWRlICJz dG9yYWdlL2xvY2suaCIKICNpbmNsdWRlICJzdG9yYWdlL3NobV9tcS5oIgpAQCAtMTA3LDYgKzEw OCwxNCBAQCB0eXBlZGVmIGVudW0gUGFyYWxsZWxUcmFuc1N0YXRlCiAJUEFSQUxMRUxfVFJBTlNf RklOSVNIRUQKIH0gUGFyYWxsZWxUcmFuc1N0YXRlOwogCisvKiBTdGF0ZSBvZiBmaWxlc2V0IGlu IGxlYWRlciBhcHBseSB3b3JrZXIuICovCit0eXBlZGVmIGVudW0gTGVhZGVyRmlsZVNldFN0YXRl Cit7CisJTEVBREVSX0ZJTEVTRVRfVU5LTk9XTiwKKwlMRUFERVJfRklMRVNFVF9CVVNZLAorCUxF QURFUl9GSUxFU0VUX0FDQ0VTU0lCTEUKK30gTGVhZGVyRmlsZVNldFN0YXRlOworCiAvKgogICog U3RydWN0IGZvciBzaGFyaW5nIGluZm9ybWF0aW9uIGJldHdlZW4gbGVhZGVyIGFwcGx5IHdvcmtl ciBhbmQgcGFyYWxsZWwKICAqIGFwcGx5IHdvcmtlcnMuCkBAIC0xMzcsNiArMTQ2LDE5IEBAIHR5 cGVkZWYgc3RydWN0IFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQKIAkgKiBhcHBseSB3b3JrZXIg d2lsbCBjaGVjayBpdCBiZWZvcmUgc3RhcnRpbmcgdG8gd2FpdC4KIAkgKi8KIAlwZ19hdG9taWNf dWludDMyCXBlbmRpbmdfbWVzc2FnZV9jb3VudDsKKworCS8qCisJICogVGhlIGxlYWRlciBhcHBs eSB3b3JrZXIgd2lsbCBzZXJpYWxpemUgY2hhbmdlcyB0byB0aGUgZmlsZSBhZnRlcgorCSAqIGVu dGVyaW5nIFBBUlRJQUxfU0VSSUFMSVpFIG1vZGUgYW5kIHNoYXJlIHRoZSBmaWxlc2V0IHdpdGgg dGhlIHBhcmFsbGVsCisJICogYXBwbHkgd29ya2VyIHdoZW4gcHJvY2Vzc2luZyB0aGUgdHJhbnNh Y3Rpb24gZmluaXNoIGNvbW1hbmQuIEFuZCB0aGVuCisJICogdGhlIHBhcmFsbGVsIGFwcGx5IHdv cmtlciB3aWxsIGFwcGx5IGFsbCB0aGUgc3Bvb2xlZCBtZXNzYWdlcy4KKwkgKgorCSAqIERvbid0 IHVzZSBTaGFyZWRGaWxlU2V0IGhlcmUgYXMgd2UgbmVlZCB0aGUgZmlsZXNldCB0byBzdXJ2aXZl IGFmdGVyCisJICogcmVsZWFzaW5nIHRoZSBzaGFyZWQgbWVtb3J5IHNvIHRoYXQgdGhlIGxlYWRl ciBhcHBseSB3b3JrZXIgY2FuIHJlLXVzZQorCSAqIHRoZSBmaWxlc2V0IGZvciBuZXh0IHN0cmVh bWluZyB0cmFuc2FjdGlvbi4KKwkgKi8KKwlMZWFkZXJGaWxlU2V0U3RhdGUJCWZpbGVzZXRfc3Rh dGU7CisJRmlsZVNldAkJZmlsZXNldDsKIH0gUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZDsKIAog LyoKQEAgLTE1Niw2ICsxNzgsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxBcHBseVdvcmtl ckluZm8KIAlkc21fc2VnbWVudCAqZHNtX3NlZzsKIAogCS8qCisJICogSW5kaWNhdGVzIHdoZXRo ZXIgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgbmVlZHMgdG8gc2VyaWFsaXplIHRoZQorCSAqIHJl bWFpbmluZyBjaGFuZ2VzIHRvIGRpc2sgZHVlIHRvIHRpbWVvdXQgd2hlbiBzZW5kaW5nIGRhdGEg dG8gdGhlCisJICogcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorCSAqLworCWJvb2wJCXNlcmlhbGl6 ZV9jaGFuZ2VzOworCisJLyoKIAkgKiBUcnVlIGlmIHRoZSB3b3JrZXIgaXMgYmVpbmcgdXNlZCB0 byBwcm9jZXNzIGEgcGFyYWxsZWwgYXBwbHkKIAkgKiB0cmFuc2FjdGlvbi4gRmFsc2UgaW5kaWNh dGVzIHRoaXMgd29ya2VyIGlzIGF2YWlsYWJsZSBmb3IgcmUtdXNlLgogCSAqLwpAQCAtMTc4LDYg KzIwNyw4IEBAIGV4dGVybiBQR0RMTElNUE9SVCBQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICpN eVBhcmFsbGVsU2hhcmVkOwogCiBleHRlcm4gUEdETExJTVBPUlQgTGlzdCAqc3VieGFjdGxpc3Q7 CiAKK2V4dGVybiBQR0RMTElNUE9SVCBCdWZGaWxlICpzdHJlYW1fZmQ7CisKIC8qIGxpYnBxcmVj ZWl2ZXIgY29ubmVjdGlvbiAqLwogZXh0ZXJuIFBHRExMSU1QT1JUIHN0cnVjdCBXYWxSZWNlaXZl ckNvbm4gKkxvZ1JlcFdvcmtlcldhbFJjdkNvbm47CiAKQEAgLTIxNSwxMiArMjQ2LDI0IEBAIGV4 dGVybiB2b2lkIHByb2Nlc3Nfc3luY2luZ190YWJsZXMoWExvZ1JlY1B0ciBjdXJyZW50X2xzbik7 CiBleHRlcm4gdm9pZCBpbnZhbGlkYXRlX3N5bmNpbmdfdGFibGVfc3RhdGVzKERhdHVtIGFyZywg aW50IGNhY2hlaWQsCiAJCQkJCQkJCQkJCXVpbnQzMiBoYXNodmFsdWUpOwogCitleHRlcm4gdm9p ZCBzZXJpYWxpemVfc3RyZWFtX3N0YXJ0KFRyYW5zYWN0aW9uSWQgeGlkLCBib29sIGZpcnN0X3Nl Z21lbnQpOworZXh0ZXJuIHZvaWQgc2VyaWFsaXplX3N0cmVhbV9zdG9wKFRyYW5zYWN0aW9uSWQg eGlkKTsKKworLyogQ29tbW9uIHN0cmVhbWluZyBmdW5jdGlvbiB0byBhcHBseSBhbGwgdGhlIHNw b29sZWQgbWVzc2FnZXMgKi8KK2V4dGVybiB2b2lkIGFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoRmls ZVNldCAqc3RyZWFtX2ZpbGVzZXQsIFRyYW5zYWN0aW9uSWQgeGlkLAorCQkJCQkJCQkgICBYTG9n UmVjUHRyIGxzbik7CisKK2V4dGVybiB2b2lkIGNoYW5nZXNfZmlsZW5hbWUoY2hhciAqcGF0aCwg T2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCk7CisKIGV4dGVybiB2b2lkIGFwcGx5X2Rpc3Bh dGNoKFN0cmluZ0luZm8gcyk7CiAKIGV4dGVybiB2b2lkIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRp b24odm9pZCk7CiAKIGV4dGVybiB2b2lkIEluaXRpYWxpemVBcHBseVdvcmtlcih2b2lkKTsKIAor ZXh0ZXJuIHZvaWQgc3RyZWFtX3dyaXRlX2NoYW5nZShjaGFyIGFjdGlvbiwgU3RyaW5nSW5mbyBz KTsKK2V4dGVybiB2b2lkIHN0cmVhbV9jbGVhbnVwX2ZpbGVzKE9pZCBzdWJpZCwgVHJhbnNhY3Rp b25JZCB4aWQpOworCiAvKiBGdW5jdGlvbiBmb3IgYXBwbHkgZXJyb3IgY2FsbGJhY2sgKi8KIGV4 dGVybiB2b2lkIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZyk7CiAKQEAgLTIzNyw2ICsy ODAsOCBAQCBleHRlcm4gdm9pZCBwYV9zZW5kX2RhdGEoUGFyYWxsZWxBcHBseVdvcmtlckluZm8g KndpbmZvLCBTaXplIG5ieXRlcywKIAogZXh0ZXJuIHZvaWQgcGFfc3RhcnRfc3VidHJhbnMoVHJh bnNhY3Rpb25JZCBjdXJyZW50X3hpZCwgVHJhbnNhY3Rpb25JZCB0b3BfeGlkKTsKIGV4dGVybiB2 b2lkIHBhX3N0cmVhbV9hYm9ydChMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhICphYm9ydF9kYXRh KTsKK2V4dGVybiB2b2lkIHBhX3NldF9maWxlc2V0X3N0YXRlKFBhcmFsbGVsQXBwbHlXb3JrZXJT aGFyZWQgKndzaGFyZWQsCisJCQkJCQkJCQkgICBMZWFkZXJGaWxlU2V0U3RhdGUgZmlsZXNldF9z dGF0ZSk7CiAKIGV4dGVybiB2b2lkIHBhX2xvY2tfc3RyZWFtKFRyYW5zYWN0aW9uSWQgeGlkLCBM T0NLTU9ERSBsb2NrbW9kZSk7CiBleHRlcm4gdm9pZCBwYV9sb2NrX3RyYW5zYWN0aW9uKFRyYW5z YWN0aW9uSWQgeGlkLCBMT0NLTU9ERSBsb2NrbW9kZSk7Ci0tIAoyLjcuMi53aW5kb3dzLjEKCg== --_005_OS0PR01MB5716CF7D3BDE465AFAF17DC094079OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v48-0003-Test-streaming-parallel-option-in-tap-test.patch" Content-Description: v48-0003-Test-streaming-parallel-option-in-tap-test.patch Content-Disposition: attachment; filename="v48-0003-Test-streaming-parallel-option-in-tap-test.patch"; size=81987; creation-date="Wed, 16 Nov 2022 08:18:47 GMT"; modification-date="Wed, 16 Nov 2022 08:19:46 GMT" Content-Transfer-Encoding: base64 RnJvbSAyNDg5MGEzZjkxYTlmMTFkZTkwZTJlNmM3Y2JkNTA2ZTEwMmJjZTY1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAic2hpeS5mbnN0IiA8c2hpeS5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBGcmksIDEzIE1heSAyMDIyIDE0OjUwOjMwICswODAwClN1YmplY3Q6IFtQQVRDSCB2NDgg My80XSBUZXN0IHN0cmVhbWluZyBwYXJhbGxlbCBvcHRpb24gaW4gdGFwIHRlc3QKCkNoYW5nZSBh bGwgVEFQIHRlc3RzIHVzaW5nIHRoZSBTVUJTQ1JJUFRJT04gInN0cmVhbWluZyIgcGFyYW1ldGVy LCBzbyB0aGV5Cm5vdyB0ZXN0IGJvdGggJ29uJyBhbmQgJ3BhcmFsbGVsJyB2YWx1ZXMuCi0tLQog c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgfCAgIDEg Kwogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgICAgICAgfCAy MzIgKysrKysrLS0tCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3Qu cGwgICAgICB8IDE0MyArKysrLS0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1f ZGRsLnBsICAgICAgICAgIHwgMjIxICsrKysrKy0tLQogLi4uL3N1YnNjcmlwdGlvbi90LzAxOF9z dHJlYW1fc3VieGFjdF9hYm9ydC5wbCAgICAgfCAyMzMgKysrKysrLS0tCiAuLi4vc3Vic2NyaXB0 aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbCB8IDEzNCArKystLQogc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwgICAgfCAzOTQgKysrKysr KysrLS0tLS0tCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBs ICAgICB8IDU0MCArKysrKysrKysrKystLS0tLS0tLS0KIC4uLi9zdWJzY3JpcHRpb24vdC8wMzJf c3RyZWFtaW5nX3BhcmFsbGVsX2FwcGx5LnBsIHwgMTUyICsrKysrKwogOSBmaWxlcyBjaGFuZ2Vk LCAxNDA1IGluc2VydGlvbnMoKyksIDY0NSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX3BhcmFsbGVsX2FwcGx5LnBs CgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkIGIvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkCmluZGV4IDg1ZDFkZDkuLjAyNTIxOGQgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vbWVzb24uYnVpbGQKQEAgLTM2LDYgKzM2LDcgQEAgdGVzdHMgKz0gewogICAg ICAgJ3QvMDI5X29uX2Vycm9yLnBsJywKICAgICAgICd0LzAzMF9vcmlnaW4ucGwnLAogICAgICAg J3QvMDMxX2NvbHVtbl9saXN0LnBsJywKKyAgICAgICd0LzAzMl9zdHJlYW1pbmdfcGFyYWxsZWxf YXBwbHkucGwnLAogICAgICAgJ3QvMTAwX2J1Z3MucGwnLAogICAgIF0sCiAgIH0sCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsIGIvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbAppbmRleCBjYmFhMzI3Li42NWY0M2YwIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCisrKyBiL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKQEAgLTgsNiArOCwxNDkgQEAgdXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2Ug VGVzdDo6TW9yZTsKIAorIyBDaGVjayB0aGUgbG9nIHRoYXQgdGhlIHN0cmVhbWVkIHRyYW5zYWN0 aW9uIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5CisjIHJlcG9ydGVkIGJ5IHBhcmFsbGVsIGFw cGx5IHdvcmtlci4KK3N1YiBjaGVja19wYXJhbGxlbF9sb2cKK3sKKwlteSAoJG5vZGVfc3Vic2Ny aWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKSA9IEBfOworCW15ICRwYXJhbGxlbF9tZXNzYWdl ID0KKwkgICdmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSB0cmFuc2FjdGlvbiBmaW5pc2ggY29tbWFu ZCc7CisKKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9m b3JfbG9nKHFyLyRwYXJhbGxlbF9tZXNzYWdlLywgJG9mZnNldCk7CisJfQorfQorCisjIEVuY2Fw c3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0 cmVhbWluZyIKKyMgcGFyYW1ldGVyIHNvIHRoZSBzYW1lIGNvZGUgY2FuIGJlIHJ1biBib3RoIGZv ciB0aGUgc3RyZWFtaW5nPW9uIGFuZAorIyBzdHJlYW1pbmc9cGFyYWxsZWwgY2FzZXMuCitzdWIg dGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVy LCAkYXBwbmFtZSwgJGlzX3BhcmFsbGVsKSA9IEBfOworCisJIyBJbnRlcmxlYXZlIGEgcGFpciBv ZiB0cmFuc2FjdGlvbnMsIGVhY2ggZXhjZWVkaW5nIHRoZSA2NGtCIGxpbWl0LgorCW15ICRpbiAg PSAnJzsKKwlteSAkb3V0ID0gJyc7CisKKwlteSAkb2Zmc2V0ID0gMDsKKworCW15ICR0aW1lciA9 IElQQzo6UnVuOjp0aW1lb3V0KCRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZh dWx0KTsKKworCW15ICRoID0gJG5vZGVfcHVibGlzaGVyLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3Rn cmVzJywgXCRpbiwgXCRvdXQsICR0aW1lciwKKwkJb25fZXJyb3Jfc3RvcCA9PiAwKTsKKworCSMg SWYgInN0cmVhbWluZyIgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLCB3ZSBu ZWVkIHRvIGNoZWNrCisJIyB0aGF0IHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBhcHBsaWVkIHVz aW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorCSMgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUg REVCVUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0aGF0LCBzbyBidW1wIHVwIHRoZQorCSMgbG9nIHZl cmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBw ZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVn MSIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJIyBDaGVjayB0aGUgc3Vi c2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXIt PmxvZ2ZpbGU7CisKKwkkaW4gLj0gcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBT RUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7 CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlE RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJfTsKKwkkaC0+cHVtcF9u YjsKKworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJF R0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoNTAwMSwgOTk5OSkgcyhpKTsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBX SEVSRSBhID4gNTAwMDsKKwlDT01NSVQ7CisJfSk7CisKKwkkaW4gLj0gcXsKKwlDT01NSVQ7CisJ XHEKKwl9OworCSRoLT5maW5pc2g7ICAgICMgZXJyb3JzIG1ha2UgdGhlIG5leHQgdGVzdCBmYWls LCBzbyBpZ25vcmUgdGhlbSBoZXJlCisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRv ZmZzZXQsICRpc19wYXJhbGxlbCk7CisKKwlteSAkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwg Y291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMz NHwzMzM0KSwKKwkJJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycp OworCisJIyBUZXN0IHRoZSBzdHJlYW1pbmcgaW4gYmluYXJ5IG1vZGUKKwkkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3Vi IFNFVCAoYmluYXJ5ID0gb24pIik7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9t IG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMg SW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0Ig bGltaXQuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJ QkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3Nlcmllcyg1MDAxLCAxMDAwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VU IGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdI RVJFIG1vZChhLDMpID0gMDsKKwlDT01NSVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1 YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk7CisKKwkkcmVzdWx0ID0KKwkgICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBj b3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFx KDY2Njd8NjY2N3w2NjY3KSwKKwkJJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBk ZWZhdWx0cycpOworCisJIyBDaGFuZ2UgdGhlIGxvY2FsIHZhbHVlcyBvZiB0aGUgZXh0cmEgY29s dW1ucyBvbiB0aGUgc3Vic2NyaWJlciwKKwkjIHVwZGF0ZSBwdWJsaXNoZXIsIGFuZCBjaGVjayB0 aGF0IHN1YnNjcmliZXIgcmV0YWlucyB0aGUgZXhwZWN0ZWQKKwkjIHZhbHVlcy4gVGhpcyBpcyB0 byBlbnN1cmUgdGhhdCBub24tc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyBiZWhhdmUKKwkjIHByb3Bl cmx5IGFmdGVyIGEgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLgorCSRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiVVBEQVRFIHRlc3RfdGFiIFNFVCBjID0gJ2Vwb2NoJzo6 dGltZXN0YW1wdHogKyA5ODc2NTQzMjEgKiBpbnRlcnZhbCAnMXMnIgorCSk7CisKKwkjIENoZWNr IHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vi c2NyaWJlci0+bG9nZmlsZTsKKworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJCSJVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYTo6dGV4dCkiKTsKKworCSRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxl bF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKKworCSRyZXN1 bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBj b3VudCgqKSwgY291bnQoZXh0cmFjdChlcG9jaCBmcm9tIGMpID0gOTg3NjU0MzIxKSwgY291bnQo ZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIKKwkpOworCWlzKCRyZXN1bHQsIHFxKDY2Njd8NjY2N3w2 NjY3KSwKKwkJJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbGx5IGNoYW5nZWQgZGF0 YScpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgKGEgPiAyKSIp OworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIFJl c2V0IHRoZSBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9z dWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21l c3NhZ2VzID0gd2FybmluZyIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorfQor CiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxpc2hlci0+aW5p dChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CkBAIC0zNyw2ICsxODAsMTAgQEAgJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9O IHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWIn OworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVh bWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNVQlNDUklQVElPTiB0 YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRh cHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9IG9uKSIKICk7CkBA IC00OSw4MiArMTk2LDI1IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8 MiksICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMg SW50ZXJsZWF2ZSBhIHBhaXIgb2YgdHJhbnNhY3Rpb25zLCBlYWNoIGV4Y2VlZGluZyB0aGUgNjRr QiBsaW1pdC4KLW15ICRpbiAgPSAnJzsKLW15ICRvdXQgPSAnJzsKLQotbXkgJHRpbWVyID0gSVBD OjpSdW46OnRpbWVvdXQoJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQp OwotCi1teSAkaCA9ICRub2RlX3B1Ymxpc2hlci0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jlcycs IFwkaW4sIFwkb3V0LCAkdGltZXIsCi0Jb25fZXJyb3Jfc3RvcCA9PiAwKTsKLQotJGluIC49IHF7 Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9 IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBt b2QoYSwzKSA9IDA7Ci19OwotJGgtPnB1bXBfbmI7Ci0KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSwgOTk5OSkgcyhpKTsK LURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiA1MDAwOwotQ09NTUlUOwotfSk7Ci0KLSRp biAuPSBxewotQ09NTUlUOwotXHEKLX07Ci0kaC0+ZmluaXNoOyAgICAjIGVycm9ycyBtYWtlIHRo ZSBuZXh0IHRlc3QgZmFpbCwgc28gaWdub3JlIHRoZW0gaGVyZQotCi0kbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyks IGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMz NHwzMzM0KSwgJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycpOwor dGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFt ZSwgMCk7CiAKLSMgVGVzdCB0aGUgc3RyZWFtaW5nIGluIGJpbmFyeSBtb2RlCi0kbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9z dWIgU0VUIChiaW5hcnkgPSBvbikiKTsKLQotIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVu b3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSwgMTAwMDApIHMo aSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwot REVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotQ09NTUlUOwotfSk7Ci0K LSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQg PQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNv dW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJl c3VsdCwgcXEoNjY2N3w2NjY3fDY2NjcpLCAnY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxv Y2FsIGRlZmF1bHRzJyk7CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor IyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24g V0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWlu Zyc7IgorKTsKIAotIyBDaGFuZ2UgdGhlIGxvY2FsIHZhbHVlcyBvZiB0aGUgZXh0cmEgY29sdW1u cyBvbiB0aGUgc3Vic2NyaWJlciwKLSMgdXBkYXRlIHB1Ymxpc2hlciwgYW5kIGNoZWNrIHRoYXQg c3Vic2NyaWJlciByZXRhaW5zIHRoZSBleHBlY3RlZAotIyB2YWx1ZXMuIFRoaXMgaXMgdG8gZW5z dXJlIHRoYXQgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMgYmVoYXZlCi0jIHByb3Blcmx5IGFm dGVyIGEgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLgogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIlVQREFURSB0ZXN0X3RhYiBTRVQgYyA9ICdlcG9jaCc6OnRpbWVzdGFt cHR6ICsgOTg3NjU0MzIxICogaW50ZXJ2YWwgJzFzJyIKLSk7Ci0kbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAotCSJVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYTo6dGV4 dCkiKTsKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFs bGVsLCBiaW5hcnkgPSBvZmYpIik7CiAKLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7Ciskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVz JywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVS RSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsi CisgICkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8g cmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOwogCi0kcmVzdWx0ID0gJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291 bnQoZXh0cmFjdChlcG9jaCBmcm9tIGMpID0gOTg3NjU0MzIxKSwgY291bnQoZCA9IDk5OSkgRlJP TSB0ZXN0X3RhYiIKLSk7Ci1pcygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2NyksCi0JJ2NoZWNr IGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbGx5IGNoYW5nZWQgZGF0YScpOwordGVzdF9zdHJl YW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CiAK ICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwgYi9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwKaW5kZXggYmMwYTljZC4u MDIwYWQ5NiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9z dWJ4YWN0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFj dC5wbApAQCAtOCw2ICs4LDk0IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNl IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgQ2hlY2sgdGhl IGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxldGVkIHN1Y2Nlc3Nm dWxseQorIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCitzdWIgY2hlY2tfcGFy YWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxl bCkgPSBAXzsKKwlteSAkcGFyYWxsZWxfbWVzc2FnZSA9CisJICAnZmluaXNoZWQgcHJvY2Vzc2lu ZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQnOworCisJaWYgKCRpc19wYXJhbGxlbCkK Kwl7CisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci8kcGFyYWxsZWxfbWVzc2Fn ZS8sICRvZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0 IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCisjIHBhcmFtZXRlciBzbyB0 aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQKKyMg c3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRu b2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJhbGxlbCkg PSBAXzsKKworCW15ICRvZmZzZXQgPSAwOworCisJIyBJZiAic3RyZWFtaW5nIiBwYXJhbWV0ZXIg aXMgc3BlY2lmaWVkIGFzICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8gY2hlY2sKKwkjIHRoYXQgc3Ry ZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGFwcGxpZWQgdXNpbmcgYSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIuCisJIyBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0 IHRoYXQsIHNvIGJ1bXAgdXAgdGhlCisJIyBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxs ZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25m JywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRub2RlX3N1YnNjcmliZXIt PnJlbG9hZDsKKwl9CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4K Kwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgSW5zZXJ0LCB1 cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgNjRrQiBsaW1pdC4KKwkkbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDMsIDUwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUg bW9kKGEsMikgPSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsK KwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0 ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsIDEwMDApIHMoaSk7CisJVVBEQVRFIHRlc3Rf dGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0 X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwg MTUwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEs MikgPSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlTQVZF UE9JTlQgczM7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLCAyMDAwKSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBT RVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIg V0hFUkUgbW9kKGEsMykgPSAwOworCVNBVkVQT0lOVCBzNDsKKwlJTlNFUlQgSU5UTyB0ZXN0X3Rh YiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDEsIDI1MDAp IHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0g MDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJQ09NTUlUOwor CX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKwor CWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxs ZWwpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZS T00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgxNjY3fDE2Njd8MTY2NyksCisJCSdjaGVj ayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0 cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIENsZWFudXAgdGhl IHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJE RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpIik7CisJJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgUmVzZXQgdGhlIGxvZyB2ZXJib3NpdHku CisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25m KCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJ CSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9Cit9CisKICMgQ3JlYXRlIHB1Ymxpc2hlciBu b2RlCiBteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXco J3B1Ymxpc2hlcicpOwogJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4g J2xvZ2ljYWwnKTsKQEAgLTM3LDYgKzEyNSwxMCBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAogCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGVz dF90YWIiKTsKIAogbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7CisKKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAogCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1 Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJQ0FUSU9OIHRh cF9wdWIgV0lUSCAoc3RyZWFtaW5nID0gb24pIgogKTsKQEAgLTQ5LDQxICsxNDEsMjYgQEAgbXkg JHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZS T00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8MnwyKSwgJ2NoZWNrIGluaXRpYWwgZGF0 YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAotIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVs ZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCA2NGtCIGxpbWl0LgotJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcyggICAgMywgIDUwMCkg cyhpKTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7 Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1TQVZFUE9JTlQgczE7 Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDUwMSwgIDEwMDApIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUo YikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEs MykgPSAwOwotU0FWRVBPSU5UIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLCAgMTUwMCkgcyhpKTsKLVVQREFU RSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJP TSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1TQVZFUE9JTlQgczM7Ci1JTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDE1 MDEsICAyMDAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1v ZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLVNB VkVQT0lOVCBzNDsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjAwMSwgMjUwMCkgcyhpKTsKLVVQREFURSB0ZXN0X3RhYiBT RVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBX SEVSRSBtb2QoYSwzKSA9IDA7Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3Vu dChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgxNjY3fDE2Njd8MTY2 NyksCi0JJ2NoZWNrIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyIGluIHN0cmVhbWluZyBt b2RlIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCit0ZXN0X3N0cmVh bWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKKwor IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJl YW1pbmcgbW9kZSAncGFyYWxsZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9u X25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKICk7CiAKKyRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJUFRJT04g dGFwX3N1YiBTRVQoc3RyZWFtaW5nID0gcGFyYWxsZWwpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+ cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJP TSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUn IEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyAgKQorICBvciBkaWUKKyAgIlRpbWVkIG91dCB3 aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQ VElPTiI7CisKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJl ciwgJGFwcG5hbWUsIDEpOworCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlz aGVyLT5zdG9wOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTdfc3Ry ZWFtX2RkbC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsCmlu ZGV4IDg2NmYxNTEuLmQyY2M0NmQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAxN19zdHJlYW1fZGRsLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJl YW1fZGRsLnBsCkBAIC04LDYgKzgsMTM4IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy OwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgQ2hl Y2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxldGVkIHN1 Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCitzdWIgY2hl Y2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19w YXJhbGxlbCkgPSBAXzsKKwlteSAkcGFyYWxsZWxfbWVzc2FnZSA9CisJICAnZmluaXNoZWQgcHJv Y2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQnOworCisJaWYgKCRpc19wYXJh bGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci8kcGFyYWxsZWxf bWVzc2FnZS8sICRvZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1v biB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCisjIHBhcmFtZXRl ciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBh bmQKKyMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJ bXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJh bGxlbCkgPSBAXzsKKworCW15ICRvZmZzZXQgPSAwOworCisJIyBhIHNtYWxsIChub24tc3RyZWFt ZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBW QUxVRVMgKDMsIG1kNSgzOjp0ZXh0KSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVN TiBjIElOVDsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg0 LCBtZDUoNDo6dGV4dCksIC00KTsKKwlDT01NSVQ7CisJfSk7CisKKwkjIElmICJzdHJlYW1pbmci IHBhcmFtZXRlciBpcyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjawor CSMgdGhhdCBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgYXBwbGllZCB1c2luZyBhIHBhcmFsbGVs IGFwcGx5IHdvcmtlci4KKwkjIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVz c2FnZXMgYWJvdXQgdGhhdCwgc28gYnVtcCB1cCB0aGUKKwkjIGxvZyB2ZXJib3NpdHkuCisJaWYg KCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0 Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKwkJJG5vZGVf c3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZy b20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJ IyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwKKwkkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSBGUk9NIGdlbmVyYXRlX3Nl cmllcyg1LCAxMDAwKSBzKGkpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZCBJ TlQ7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCksIC1pLCAyKmkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwgMjAwMCkgcyhpKTsK KwlDT01NSVQ7CisJfSk7CisKKwkjIGEgc21hbGwgKG5vbi1zdHJlYW1lZCkgdHJhbnNhY3Rpb24g d2l0aCBEREwgYW5kIERNTAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdy ZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMjAwMSwgbWQ1 KDIwMDE6OnRleHQpLCAtMjAwMSwgMioyMDAxKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQg Q09MVU1OIGUgSU5UOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxV RVMgKDIwMDIsIG1kNSgyMDAyOjp0ZXh0KSwgLTIwMDIsIDIqMjAwMiwgLTMqMjAwMik7CisJQ09N TUlUOworCX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l KTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNf cGFyYWxsZWwpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQpLCBj b3VudChlKSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMjAwMnwxOTk5fDEwMDJ8 MSksCisJCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1pbmcg bW9kZSBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkj IENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5v ZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgQSBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0 aW9uIHdpdGggRERMIGFuZCBETUwuIE9uZSBvZiB0aGUgRERMIGlzIHBlcmZvcm1lZAorCSMgYWZ0 ZXIgRE1MIHRvIGVuc3VyZSB0aGF0IHdlIGludmFsaWRhdGUgdGhlIHNjaGVtYSBzZW50IGZvciB0 ZXN0X3RhYiBzbyB0aGF0CisJIyB0aGUgbmV4dCB0cmFuc2FjdGlvbiBoYXMgdG8gc2VuZCB0aGUg c2NoZW1hIGFnYWluLgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMn LCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCksIC1pLCAyKmksIC0zKmkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjAwMyw1MDAwKSBzKGkpOwor CUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZiBJTlQ7CisJQ09NTUlUOworCX0pOwor CisJIyBBIHNtYWxsIHRyYW5zYWN0aW9uIHRoYXQgd29uJ3QgZ2V0IHN0cmVhbWVkLiBUaGlzIGlz IGp1c3QgdG8gZW5zdXJlIHRoYXQgd2UKKwkjIHNlbmQgdGhlIHNjaGVtYSBhZ2FpbiB0byByZWZs ZWN0IHRoZSBsYXN0IGNvbHVtbiBhZGRlZCBpbiB0aGUgcHJldmlvdXMgdGVzdC4KKwkkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippLCAtMyppLCA0Kmkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSw1MDA1KSBzKGkpOworCUNPTU1JVDsKKwl9KTsKKwor CSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19w YXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKKwor CSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNF TEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQpLCBjb3VudChlKSwgY291bnQoZikgRlJP TSB0ZXN0X3RhYiIKKwkpOworCWlzKCRyZXN1bHQsIHFxKDUwMDV8NTAwMnw0MDA1fDMwMDR8NSks CisJCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBmb3IgYm90aCBzdHJlYW1p bmcgYW5kIG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rpb25zJworCSk7CisKKwkjIENsZWFudXAgdGhl IHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBx eworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMik7CisJQUxURVIgVEFCTEUgdGVz dF90YWIgRFJPUCBDT0xVTU4gYywgRFJPUCBDT0xVTU4gZCwgRFJPUCBDT0xVTU4gZSwgRFJPUCBD T0xVTU4gZjsKKwl9KTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOworCisJIyBSZXNldCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQor CXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJ CQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVs b2FkOworCX0KK30KKwogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRub2RlX3B1Ymxpc2hl ciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiAkbm9kZV9w dWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwpAQCAtMzcsNiAr MTY5LDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFU RSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFt ZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVz dCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBT VUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGlj YXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcg PSBvbikiCiApOwpAQCAtNDksNzcgKzE4NSwyNiBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNv dW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJl c3VsdCwgcXEoMnwwfDApLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2Ny aWJlcicpOwogCi0jIGEgc21hbGwgKG5vbi1zdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwg YW5kIERNTAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJF R0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgzLCBtZDUoMzo6dGV4dCkpOwotQUxU RVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBjIElOVDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoNCwgbWQ1KDQ6OnRleHQpLCAtNCk7Ci1DT01NSVQ7Ci19 KTsKLQotIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwKLSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pIEZST00gZ2VuZXJhdGVf c2VyaWVzKDUsIDEwMDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGQg SU5UOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSwgLWksIDIqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLCAyMDAwKSBzKGkpOwot Q09NTUlUOwotfSk7Ci0KLSMgYSBzbWFsbCAobm9uLXN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRo IERETCBhbmQgRE1MCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBx ewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDIwMDEsIG1kNSgyMDAxOjp0 ZXh0KSwgLTIwMDEsIDIqMjAwMSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGUg SU5UOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgyMDAyLCBt ZDUoMjAwMjo6dGV4dCksIC0yMDAyLCAyKjIwMDIsIC0zKjIwMDIpOwotQ09NTUlUOwotfSk7Ci0K LSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQg PQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNv dW50KCopLCBjb3VudChjKSwgY291bnQoZCksIGNvdW50KGUpIEZST00gdGVzdF90YWIiKTsKLWlz KCRyZXN1bHQsIHFxKDIwMDJ8MTk5OXwxMDAyfDEpLAotCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQg dG8gc3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEgY29sdW1ucyBjb250YWlu IGxvY2FsIGRlZmF1bHRzJwotKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5v ZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwogCi0jIEEgbGFyZ2UgKHN0cmVhbWVkKSB0cmFu c2FjdGlvbiB3aXRoIERETCBhbmQgRE1MLiBPbmUgb2YgdGhlIERETCBpcyBwZXJmb3JtZWQKLSMg YWZ0ZXIgRE1MIHRvIGVuc3VyZSB0aGF0IHdlIGludmFsaWRhdGUgdGhlIHNjaGVtYSBzZW50IGZv ciB0ZXN0X3RhYiBzbyB0aGF0Ci0jIHRoZSBuZXh0IHRyYW5zYWN0aW9uIGhhcyB0byBzZW5kIHRo ZSBzY2hlbWEgYWdhaW4uCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMn LCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQp LCAtaSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDMsNTAwMCkgcyhpKTsKLUFM VEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZiBJTlQ7Ci1DT01NSVQ7Ci19KTsKLQotIyBB IHNtYWxsIHRyYW5zYWN0aW9uIHRoYXQgd29uJ3QgZ2V0IHN0cmVhbWVkLiBUaGlzIGlzIGp1c3Qg dG8gZW5zdXJlIHRoYXQgd2UKLSMgc2VuZCB0aGUgc2NoZW1hIGFnYWluIHRvIHJlZmxlY3QgdGhl IGxhc3QgY29sdW1uIGFkZGVkIGluIHRoZSBwcmV2aW91cyB0ZXN0LgotJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSwgLTMqaSwgNCppIEZST00gZ2VuZXJh dGVfc2VyaWVzKDUwMDEsNTAwNSkgcyhpKTsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQo YyksIGNvdW50KGQpLCBjb3VudChlKSwgY291bnQoZikgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJl c3VsdCwgcXEoNTAwNXw1MDAyfDQwMDV8MzAwNHw1KSwKLQknY2hlY2sgZGF0YSB3YXMgY29waWVk IHRvIHN1YnNjcmliZXIgZm9yIGJvdGggc3RyZWFtaW5nIGFuZCBub24tc3RyZWFtaW5nIHRyYW5z YWN0aW9ucycKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3Qg dXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBh cHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiAp OwogCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VC U0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIpOworCiskbm9kZV9w dWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAk b2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0g JyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJU aW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2lu ZyBTVUJTQ1JJUFRJT04iOworCit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2Rl X3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsKKwogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRu b2RlX3B1Ymxpc2hlci0+c3RvcDsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3Qv MDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsCmluZGV4IDU1MWYxNmQuLjc1MmU3OWEgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5w bAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQu cGwKQEAgLTgsNiArOCwxNDUgQEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2Ug UG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBDaGVjayB0aGUg bG9nIHRoYXQgdGhlIHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1 bGx5CisjIHJlcG9ydGVkIGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KK3N1YiBjaGVja19wYXJh bGxlbF9sb2cKK3sKKwlteSAoJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVs KSA9IEBfOworCW15ICRwYXJhbGxlbF9tZXNzYWdlID0KKwkgICdmaW5pc2hlZCBwcm9jZXNzaW5n IHRoZSB0cmFuc2FjdGlvbiBmaW5pc2ggY29tbWFuZCc7CisKKwlpZiAoJGlzX3BhcmFsbGVsKQor CXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyLyRwYXJhbGxlbF9tZXNzYWdl LywgJG9mZnNldCk7CisJfQorfQorCisjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qg c3RlcHMgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIKKyMgcGFyYW1ldGVyIHNvIHRo ZSBzYW1lIGNvZGUgY2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZAorIyBz dHJlYW1pbmc9cGFyYWxsZWwgY2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5v ZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFsbGVsKSA9 IEBfOworCisJbXkgJG9mZnNldCA9IDA7CisKKwkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBp cyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjaworCSMgdGhhdCBzdHJl YW1lZCB0cmFuc2FjdGlvbiB3YXMgYXBwbGllZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtl ci4KKwkjIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQg dGhhdCwgc28gYnVtcCB1cCB0aGUKKwkjIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxl bCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYn LAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+ cmVsb2FkOworCX0KKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgor CSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBsYXJnZSAoc3Ry ZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNLcworCSRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo Myw1MDApIHMoaSk7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7CisJ U0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwxNTAwKSBzKGkpOworCVNBVkVQT0lOVCBzMzsK KwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDE1MDEsMjAwMCkgcyhpKTsKKwlST0xMQkFDSyBUTyBzMjsKKwlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIw MDEsMjUwMCkgcyhpKTsKKwlST0xMQkFDSyBUTyBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBT RUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDI1MDEsMzAwMCkgcyhp KTsKKwlTQVZFUE9JTlQgczQ7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzMDAxLDM1MDApIHMoaSk7CisJU0FWRVBPSU5U IHM1OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMzUwMSw0MDAwKSBzKGkpOworCUNPTU1JVDsKKwl9KTsKKworCSRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxl bF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKKworCW15ICRy ZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJT RUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBx cSgyMDAwfDApLAorCQknY2hlY2sgcm9sbGJhY2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQg b24gc3Vic2NyaWJlciBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwor CSk7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0 ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgbGFyZ2UgKHN0cmVhbWVkKSB0 cmFuc2FjdGlvbiB3aXRoIHN1YnNjcmliZXIgcmVjZWl2aW5nIG91dCBvZiBvcmRlcgorCSMgc3Vi dHJhbnNhY3Rpb24gUk9MTEJBQ0tzCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdw b3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg0MDAxLDQ1MDApIHMoaSk7CisJU0FWRVBP SU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSw1NTAwKSBzKGkpOworCVNBVkVQT0lOVCBzMjsKKwlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDYwMDEsNjUwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczM7CisJSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg3MDAxLDc1MDAp IHMoaSk7CisJUkVMRUFTRSBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDgwMDEsODUwMCkgcyhpKTsKKwlST0xMQkFD SyBUTyBzMTsKKwlDT01NSVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIs ICRvZmZzZXQsICRpc19wYXJhbGxlbCk7CisKKwkkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBG Uk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMjUwMHwwKSwKKwkJJ2NoZWNrIHJvbGxi YWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgQ2hl Y2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9z dWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdp dGggc3Vic2NyaWJlciByZWNlaXZpbmcgcm9sbGJhY2sKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBT RUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDg1MDEsOTAwMCkgcyhp KTsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg5MDAxLDk1MDApIHMoaSk7CisJU0FWRVBPSU5U IHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoOTUwMSwxMDAwMCkgcyhpKTsKKwlST0xMQkFDSzsKKwl9KTsKKworCSRu b2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJh bGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKKworCSRy ZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJT RUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBx cSgyNTAwfDApLCAnY2hlY2sgcm9sbGJhY2sgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyJyk7 CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpIik7CisJ JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgUmVzZXQg dGhlIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNj cmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2Fn ZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9Cit9CisKICMg Q3JlYXRlIHB1Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpU ZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVfcHVibGlzaGVyLT5pbml0KGFs bG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAgLTM2LDYgKzE3NSwxMCBAQCAkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgUFVCTElDQVRJT04gdGFw X3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKIAogbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7CisK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5n IG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9z dWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5h bWUnIFBVQkxJQ0FUSU9OIHRhcF9wdWIgV0lUSCAoc3RyZWFtaW5nID0gb24pIgogKTsKQEAgLTQ4 LDgxICsxOTEsMjUgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykg RlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwwKSwgJ2NoZWNrIGluaXRpYWwgZGF0 YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAotIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5z YWN0aW9uIHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNLcwotJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLDUwMCkgcyhpKTsKLVNB VkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7Ci1TQVZFUE9JTlQgczI7Ci1JTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEwMDEsMTUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMzsKLUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUwMSwyMDAwKSBz KGkpOwotUk9MTEJBQ0sgVE8gczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDEsMjUwMCkgcyhpKTsKLVJPTExCQUNL IFRPIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3NlcmllcygyNTAxLDMwMDApIHMoaSk7Ci1TQVZFUE9JTlQgczQ7Ci1JTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDMwMDEsMzUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzNTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMzUwMSw0MDAwKSBzKGkp OwotQ09NTUlUOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygk cmVzdWx0LCBxcSgyMDAwfDApLAotCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJl ZmxlY3RlZCBvbiBzdWJzY3JpYmVyIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVm YXVsdHMnCit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIs ICRhcHBuYW1lLCAwKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAncGFyYWxsZWwnCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9u IFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1p bmcnOyIKICk7CiAKLSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIHN1YnNjcmli ZXIgcmVjZWl2aW5nIG91dCBvZiBvcmRlcgotIyBzdWJ0cmFuc2FjdGlvbiBST0xMQkFDS3MKLSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoNDAwMSw0NTAwKSBzKGkpOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLDU1MDApIHMo aSk7Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDYwMDEsNjUwMCkgcyhpKTsKLVNBVkVQT0lOVCBz MzsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoNzAwMSw3NTAwKSBzKGkpOwotUkVMRUFTRSBzMjsKLUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoODAwMSw4 NTAwKSBzKGkpOwotUk9MTEJBQ0sgVE8gczE7Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 KGMpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDI1MDB8MCksCi0JJ2NoZWNrIHJv bGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyBs YXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciByZWNlaXZpbmcgcm9s bGJhY2sKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJ TjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoODUwMSw5MDAwKSBzKGkpOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg5MDAx LDk1MDApIHMoaSk7Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1Qg aSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDk1MDEsMTAwMDApIHMoaSk7Ci1S T0xMQkFDSzsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJl c3VsdCwgcXEoMjUwMHwwKSwgJ2NoZWNrIHJvbGxiYWNrIHdhcyByZWZsZWN0ZWQgb24gc3Vic2Ny aWJlcicpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVS IFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsKKworJG5v ZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQg IT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFt ZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9yIGRpZQor ICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hh bmdpbmcgU1VCU0NSSVBUSU9OIjsKKwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAk bm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CiAKICRub2RlX3N1YnNjcmliZXItPnN0b3A7 CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbAppbmRleCA0ZDdkYTgyLi45ZDY3 OGIzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTlfc3RyZWFtX3N1Ynhh Y3RfZGRsX2Fib3J0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1f c3VieGFjdF9kZGxfYWJvcnQucGwKQEAgLTksNiArOSw5MSBAQCB1c2UgUG9zdGdyZVNRTDo6VGVz dDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3Jl OwogCisjIENoZWNrIHRoZSBsb2cgdGhhdCB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGNv bXBsZXRlZCBzdWNjZXNzZnVsbHkKKyMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2Vy Lgorc3ViIGNoZWNrX3BhcmFsbGVsX2xvZworeworCW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zm c2V0LCAkaXNfcGFyYWxsZWwpID0gQF87CisJbXkgJHBhcmFsbGVsX21lc3NhZ2UgPQorCSAgJ2Zp bmlzaGVkIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kJzsKKworCWlm ICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIv JHBhcmFsbGVsX21lc3NhZ2UvLCAkb2Zmc2V0KTsKKwl9Cit9CisKKyMgRW5jYXBzdWxhdGUgYWxs IHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgor IyBwYXJhbWV0ZXIgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJl YW1pbmc9b24gYW5kCisjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVh bWluZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1l LCAkaXNfcGFyYWxsZWwpID0gQF87CisKKwlteSAkb2Zmc2V0ID0gMDsKKworCSMgSWYgInN0cmVh bWluZyIgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLCB3ZSBuZWVkIHRvIGNo ZWNrCisJIyB0aGF0IHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBhcHBsaWVkIHVzaW5nIGEgcGFy YWxsZWwgYXBwbHkgd29ya2VyLgorCSMgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxv ZyBtZXNzYWdlcyBhYm91dCB0aGF0LCBzbyBidW1wIHVwIHRoZQorCSMgbG9nIHZlcmJvc2l0eS4K KwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYo J3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkk bm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBs b2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7 CisKKwkjIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwsIERNTCBhbmQgUk9M TEJBQ0tzCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJ QkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3NlcmllcygzLDUwMCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQg Q09MVU1OIGMgSU5UOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpLCAtaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhp KTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGQgSU5UOworCVNBVkVQT0lOVCBz MjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMipp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEsMTUwMCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0 X3RhYiBBREQgQ09MVU1OIGUgSU5UOworCVNBVkVQT0lOVCBzMzsKKwlJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVf c2VyaWVzKDE1MDEsMjAwMCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBEUk9QIENPTFVN TiBjOworCVJPTExCQUNLIFRPIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCksIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7CisJQ09N TUlUOworCX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l KTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNf cGFyYWxsZWwpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3Rh YiIpOworCWlzKCRyZXN1bHQsIHFxKDEwMDB8NTAwKSwKKwkJJ2NoZWNrIHJvbGxiYWNrIHRvIHNh dmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMgY29u dGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlERUxFVEUgRlJP TSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIERST1AgQ09M VU1OIGM7CisJfSk7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l KTsKKworCSMgUmVzZXQgdGhlIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7 CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJ ImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9h ZDsKKwl9Cit9CisKICMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJsaXNoZXIg PSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVfcHVi bGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAgLTM3LDYgKzEy MiwxMCBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUg UFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKIAogbXkgJGFwcG5hbWUg PSAndGFwX3N1Yic7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3Qg dXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgU1VC U0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0 aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJQ0FUSU9OIHRhcF9wdWIgV0lUSCAoc3RyZWFtaW5nID0g b24pIgogKTsKQEAgLTQ5LDM1ICsxMzgsMjYgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3Vu dCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwwKSwgJ2No ZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAotIyBsYXJnZSAo c3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNLcwotJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcygz LDUwMCkgcyhpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gYyBJTlQ7Ci1TQVZF UE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAt aSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKLUFMVEVSIFRBQkxFIHRlc3Rf dGFiIEFERCBDT0xVTU4gZCBJTlQ7Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3Rh YiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEw MDEsMTUwMCkgcyhpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZSBJTlQ7Ci1T QVZFUE9JTlQgczM7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQp LCAtaSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDE1MDEsMjAwMCkgcyhpKTsKLUFM VEVSIFRBQkxFIHRlc3RfdGFiIERST1AgQ09MVU1OIGM7Ci1ST0xMQkFDSyBUTyBzMTsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIGkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoNTAxLDEwMDApIHMoaSk7Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZS T00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDEwMDB8NTAwKSwKLQknY2hlY2sgcm9sbGJh Y2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlciBhbmQgZXh0cmEgY29s dW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlz aGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7CisKKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFs bGVsJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK215ICRvbGRwaWQg PSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZS T00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1l JyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwogCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVh bWluZyA9IHBhcmFsbGVsKSIpOworCiskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwo J3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNh dGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3Ry ZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3Ig YXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOworCit0ZXN0X3N0 cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsK KwogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3RvcDsKIApkaWZm IC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwg Yi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbAppbmRleCA3 YTc5N2YzLi40MjY1ZDNiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJf dHdvcGhhc2VfY2FzY2FkZS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdv cGhhc2VfY2FzY2FkZS5wbApAQCAtMTEsNiArMTEsMjM5IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7 CiAKKyMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgY29t cGxldGVkIHN1Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIu CitzdWIgY2hlY2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZz ZXQsICRzdHJlYW1pbmdfbW9kZSkgPSBAXzsKKwlteSAkcGFyYWxsZWxfbWVzc2FnZSA9CisJICAn ZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQnOworCisJ aWYgKCRzdHJlYW1pbmdfbW9kZSBlcSAncGFyYWxsZWwnKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJl ci0+d2FpdF9mb3JfbG9nKHFyLyRwYXJhbGxlbF9tZXNzYWdlLywgJG9mZnNldCk7CisJfQorfQor CisjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2ggYXJlIHJlbGF0 ZWQgdG8gInN0cmVhbWluZyIgcGFyYW1ldGVyCisjIHNvIHRoZSBzYW1lIGNvZGUgY2FuIGJlIHJ1 biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZCBzdHJlYW1pbmc9cGFyYWxsZWwKKyMgY2Fz ZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVfQSwgJG5vZGVfQiwgJG5vZGVf QywgJGFwcG5hbWVfQiwgJGFwcG5hbWVfQywgJHN0cmVhbWluZ19tb2RlKSA9CisJICBAXzsKKwor CW15ICRvZmZzZXRfQiA9IDA7CisJbXkgJG9mZnNldF9DID0gMDsKKworCW15ICRvbGRwaWRfQiA9 ICRub2RlX0EtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlTRUxFQ1QgcGlkIEZST00g cGdfc3RhdF9yZXBsaWNhdGlvbgorCQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1l X0InIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIpOworCW15ICRvbGRwaWRfQyA9ICRub2RlX0It PnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9y ZXBsaWNhdGlvbgorCQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lX0MnIEFORCBz dGF0ZSA9ICdzdHJlYW1pbmcnOyIpOworCisJIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uIHN0 cmVhbWluZyBtb2RlCisKKwkkbm9kZV9CLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsICIKKwkJ QUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWJfQgorCQlTRVQgKHN0cmVhbWluZyA9ICRzdHJlYW1p bmdfbW9kZSk7Iik7CisJJG5vZGVfQy0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCAiCisJCUFM VEVSIFNVQlNDUklQVElPTiB0YXBfc3ViX0MKKwkJU0VUIChzdHJlYW1pbmcgPSAkc3RyZWFtaW5n X21vZGUpIik7CisKKwkjIFdhaXQgZm9yIHN1YnNjcmliZXJzIHRvIGZpbmlzaCBpbml0aWFsaXph dGlvbgorCisJJG5vZGVfQS0+cG9sbF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlT RUxFQ1QgcGlkICE9ICRvbGRwaWRfQiBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUg YXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9CJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsi CisJKSBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0 IjsKKwkkbm9kZV9CLT5wb2xsX3F1ZXJ5X3VudGlsKAorCQkncG9zdGdyZXMnLCAiCisJCVNFTEVD VCBwaWQgIT0gJG9sZHBpZF9DIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbgorCQlXSEVSRSBhcHBs aWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lX0MnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKwkp IG9yIGRpZSAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQiOwor CisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgVGVzdCAyUEMgUFJFUEFSRSAv IENPTU1JVCBQUkVQQVJFRC4KKwkjIDEuIERhdGEgaXMgc3RyZWFtZWQgYXMgYSAyUEMgdHJhbnNh Y3Rpb24uCisJIyAyLiBUaGVuIGRvIGNvbW1pdCBwcmVwYXJlZC4KKwkjCisJIyBFeHBlY3QgYWxs IGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyKHMpIGFmdGVyIHRoZSBjb21taXQuCisJ IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBJZiAic3RyZWFtaW5nIiBwYXJh bWV0ZXIgaXMgc3BlY2lmaWVkIGFzICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8gY2hlY2sKKwkjIHRo YXQgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIHByZXBhcmVkIHVzaW5nIGEgcGFyYWxsZWwgYXBw bHkgd29ya2VyLgorCSMgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdl cyBhYm91dCB0aGF0LCBzbyBidW1wIHVwIHRoZQorCSMgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJHN0 cmVhbWluZ19tb2RlIGVxICdwYXJhbGxlbCcpCisJeworCQkkbm9kZV9CLT5hcHBlbmRfY29uZign cG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKwkJJG5vZGVf Qi0+cmVsb2FkOworCisJCSRub2RlX0MtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAi bG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9DLT5yZWxvYWQ7CisJfQorCisJ IyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldF9CID0gLXMg JG5vZGVfQi0+bG9nZmlsZTsKKwkkb2Zmc2V0X0MgPSAtcyAkbm9kZV9DLT5sb2dmaWxlOworCisJ IyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRr QiBsaW1pdC4KKwkjIFRoZW4gMlBDIFBSRVBBUkUKKwkkbm9kZV9BLT5zYWZlX3BzcWwoCisJCSdw b3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwg bWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFU RSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBG Uk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAn dGVzdF9wcmVwYXJlZF90YWInO30pOworCisJJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZV9CKTsKKwkkbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOworCisJY2hl Y2tfcGFyYWxsZWxfbG9nKCRub2RlX0IsICRvZmZzZXRfQiwgJHN0cmVhbWluZ19tb2RlKTsKKwlj aGVja19wYXJhbGxlbF9sb2coJG5vZGVfQywgJG9mZnNldF9DLCAkc3RyZWFtaW5nX21vZGUpOwor CisJIyBjaGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJl cihzKQorCW15ICRyZXN1bHQgPQorCSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0 LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIgQicpOworCSRy ZXN1bHQgPQorCSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291 bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ3Ry YW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIgQycpOworCisJIyAyUEMgQ09NTUlU CisJJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDT01NSVQgUFJFUEFSRUQgJ3Rlc3Rf cHJlcGFyZWRfdGFiJzsiKTsKKworCSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVf Qik7CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKKworCSMgY2hlY2sg dGhhdCB0cmFuc2FjdGlvbiB3YXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIocykKKwkkcmVzdWx0 ID0gJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNv dW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEo MzMzNHwzMzM0fDMzMzQpLAorCQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQg b24gc3Vic2NyaWJlciBCLCBhbmQgZXh0cmEgY29sdW1ucyBoYXZlIGxvY2FsIGRlZmF1bHRzJwor CSk7CisJJHJlc3VsdCA9ICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNU IGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlz KCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhh dmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQywgYW5kIGV4dHJhIGNvbHVtbnMgaGF2ZSBsb2Nh bCBkZWZhdWx0cycKKwkpOworCisJIyBjaGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgaXMgZW5k ZWQgb24gc3Vic2NyaWJlcihzKQorCSRyZXN1bHQgPQorCSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsK KwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3Jp YmVyIEInKTsKKwkkcmVzdWx0ID0KKwkgICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3Vs dCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBDJyk7CisK KwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBUZXN0IDJQQyBQUkVQQVJFIHdp dGggYSBuZXN0ZWQgUk9MTEJBQ0sgVE8gU0FWRVBPSU5ULgorCSMgMC4gQ2xlYW51cCBmcm9tIHBy ZXZpb3VzIHRlc3QgbGVhdmluZyBvbmx5IDIgcm93cy4KKwkjIDEuIEluc2VydCBvbmUgbW9yZSBy b3cuCisJIyAyLiBSZWNvcmQgYSBTQVZFUE9JTlQuCisJIyAzLiBEYXRhIGlzIHN0cmVhbWVkIHVz aW5nIDJQQy4KKwkjIDQuIERvIHJvbGxiYWNrIHRvIFNBVkVQT0lOVCBwcmlvciB0byB0aGUgc3Ry ZWFtZWQgaW5zZXJ0cy4KKwkjIDUuIFRoZW4gQ09NTUlUIFBSRVBBUkVELgorCSMKKwkjIEV4cGVj dCBkYXRhIGFmdGVyIHRoZSBTQVZFUE9JTlQgaXMgYWJvcnRlZCBsZWF2aW5nIG9ubHkgMyByb3dz ICg9IDIgb3JpZ2luYWwgKyAxIGZyb20gc3RlcCAxKS4KKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisKKwkjIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3Mg KGRlbGV0ZSB3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKKworCSMgQ2hlY2sgdGhl IHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXRfQiA9IC1zICRub2RlX0ItPmxv Z2ZpbGU7CisJJG9mZnNldF9DID0gLXMgJG5vZGVfQy0+bG9nZmlsZTsKKworCSMgMlBDIFBSRVBB UkUgd2l0aCBhIG5lc3RlZCBST0xMQkFDSyBUTyBTQVZFUE9JTlQKKwkkbm9kZV9BLT5zYWZlX3Bz cWwoCisJCSdwb3N0Z3JlcycsICIKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZB TFVFUyAoOTk5OSwgJ2Zvb2JhcicpOworCQlTQVZFUE9JTlQgc3BfaW5uZXI7CisJCUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MywgNTAwMCkgcyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1v ZChhLDIpID0gMDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwor CQlST0xMQkFDSyBUTyBTQVZFUE9JTlQgc3BfaW5uZXI7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04g J291dGVyJzsKKwkJIik7CisKKwkkbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0Ip OworCSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7CisKKwljaGVja19wYXJh bGxlbF9sb2coJG5vZGVfQiwgJG9mZnNldF9CLCAkc3RyZWFtaW5nX21vZGUpOworCWNoZWNrX3Bh cmFsbGVsX2xvZygkbm9kZV9DLCAkb2Zmc2V0X0MsICRzdHJlYW1pbmdfbW9kZSk7CisKKwkjIGNo ZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyKHMpCisJJHJl c3VsdCA9CisJICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3Vu dCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJh bnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9CisJICAk bm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBn X3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMg cHJlcGFyZWQgb24gc3Vic2NyaWJlciBDJyk7CisKKwkjIDJQQyBDT01NSVQKKwkkbm9kZV9BLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNPTU1JVCBQUkVQQVJFRCAnb3V0ZXInOyIpOworCisJJG5v ZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKKwkkbm9kZV9CLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lX0MpOworCisJIyBjaGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgaXMg ZW5kZWQgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPQorCSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsK KwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIg QicpOworCSRyZXN1bHQgPQorCSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJT RUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBx cSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIgQycpOworCisJIyBjaGVj ayBpbnNlcnRzIGFyZSB2aXNpYmxlIGF0IHN1YnNjcmliZXIocykuCisJIyBBbGwgdGhlIHN0cmVh bWVkIGRhdGEgKHByaW9yIHRvIHRoZSBTQVZFUE9JTlQpIHNob3VsZCBiZSByb2xsZWQgYmFjay4K KwkjICg5OTk5LCAnZm9vYmFyJykgc2hvdWxkIGJlIGNvbW1pdHRlZC4KKwkkcmVzdWx0ID0gJG5v ZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0 X3RhYiB3aGVyZSBiID0gJ2Zvb2Jhcic7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICdSb3dzIGNv bW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3JpYmVyIEInKTsKKwkkcmVzdWx0ID0KKwkgICRu b2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90 YWI7Iik7CisJaXMoJHJlc3VsdCwgcXEoMyksICdSb3dzIGNvbW1pdHRlZCBhcmUgcHJlc2VudCBv biBzdWJzY3JpYmVyIEInKTsKKwkkcmVzdWx0ID0gJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYiB3aGVyZSBiID0gJ2Zvb2Jhcic7 Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICdSb3dzIGNvbW1pdHRlZCBhcmUgcHJlc2VudCBvbiBz dWJzY3JpYmVyIEMnKTsKKwkkcmVzdWx0ID0KKwkgICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWI7Iik7CisJaXMoJHJlc3VsdCwgcXEo MyksICdSb3dzIGNvbW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3JpYmVyIEMnKTsKKworCSMg Q2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJE RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKKwkkbm9kZV9BLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lX0IpOworCSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVf Qyk7CisKKwkjIFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5LgorCWlmICgkc3RyZWFtaW5nX21vZGUg ZXEgJ3BhcmFsbGVsJykKKwl7CisJCSRub2RlX0ItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNv bmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfQi0+cmVsb2FkOwor CisJCSRub2RlX0MtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNz YWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfQy0+cmVsb2FkOworCX0KK30KKwogIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBTZXR1cCBhIGNhc2NhZGUgb2YgcHViL3N1YiBub2Rl cy4KICMgbm9kZV9BIC0+IG5vZGVfQiAtPiBub2RlX0MKQEAgLTI2MCwxNjAgKzQ5MywxNSBAQCBp cygkcmVzdWx0LCBxcSgyMSksICdSb3dzIGNvbW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3Jp YmVyIEMnKTsKICMgMlBDICsgU1RSRUFNSU5HIFRFU1RTCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0t LQogCi1teSAkb2xkcGlkX0IgPSAkbm9kZV9BLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgIgot CVNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uCi0JV0hFUkUgYXBwbGljYXRpb25f bmFtZSA9ICckYXBwbmFtZV9CJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsKLW15ICRvbGRw aWRfQyA9ICRub2RlX0ItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAiCi0JU0VMRUNUIHBpZCBG Uk9NIHBnX3N0YXRfcmVwbGljYXRpb24KLQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBu YW1lX0MnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIpOwotCi0jIFNldHVwIGxvZ2ljYWwgcmVw bGljYXRpb24gKHN0cmVhbWluZyA9IG9uKQotCi0kbm9kZV9CLT5zYWZlX3BzcWwoCi0JJ3Bvc3Rn cmVzJywgIgotCUFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViX0IKLQlTRVQgKHN0cmVhbWluZyA9 IG9uKTsiKTsKLSRub2RlX0MtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAiCi0JQUxURVIgU1VC U0NSSVBUSU9OIHRhcF9zdWJfQwotCVNFVCAoc3RyZWFtaW5nID0gb24pIik7Ci0KLSMgV2FpdCBm b3Igc3Vic2NyaWJlcnMgdG8gZmluaXNoIGluaXRpYWxpemF0aW9uCi0KLSRub2RlX0EtPnBvbGxf cXVlcnlfdW50aWwoCi0JJ3Bvc3RncmVzJywgIgotCVNFTEVDVCBwaWQgIT0gJG9sZHBpZF9CIEZS T00gcGdfc3RhdF9yZXBsaWNhdGlvbgotCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5h bWVfQicgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgotKSBvciBkaWUgIlRpbWVkIG91dCB3aGls ZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IjsKLSRub2RlX0ItPnBvbGxfcXVlcnlfdW50 aWwoCi0JJ3Bvc3RncmVzJywgIgotCVNFTEVDVCBwaWQgIT0gJG9sZHBpZF9DIEZST00gcGdfc3Rh dF9yZXBsaWNhdGlvbgotCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQycgQU5E IHN0YXRlID0gJ3N0cmVhbWluZyc7IgotKSBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5n IGZvciBhcHBseSB0byByZXN0YXJ0IjsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IwotIyBUZXN0IDJQQyBQUkVQQVJFIC8gQ09NTUlUIFBSRVBBUkVELgotIyAxLiBEYXRhIGlzIHN0 cmVhbWVkIGFzIGEgMlBDIHRyYW5zYWN0aW9uLgotIyAyLiBUaGVuIGRvIGNvbW1pdCBwcmVwYXJl ZC4KLSMKLSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlcihzKSBh ZnRlciB0aGUgY29tbWl0LgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIElu c2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxp bWl0LgotIyBUaGVuIDJQQyBQUkVQQVJFCi0kbm9kZV9BLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVz JywgcXsKLQlCRUdJTjsKLQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFi IFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3Rh YiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJl ZF90YWInO30pOwotCi0kbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOwotJG5v ZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX0EsICRub2RlX0Is ICRub2RlX0MsICRhcHBuYW1lX0IsICRhcHBuYW1lX0MsICdvbicpOwogCi0jIGNoZWNrIHRoZSB0 cmFuc2FjdGlvbiBzdGF0ZSBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyKHMpCi0kcmVzdWx0ID0K LSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBw Z19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMg cHJlcGFyZWQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0KLSAgJG5vZGVfQy0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsi KTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2Ny aWJlciBDJyk7Ci0KLSMgMlBDIENPTU1JVAotJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKLQotJG5vZGVfQS0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKLSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFw cG5hbWVfQyk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiB3YXMgY29tbWl0dGVkIG9uIHN1 YnNjcmliZXIocykKLSRyZXN1bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQki U0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIp OwotaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQ QyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyIEIsIGFuZCBleHRyYSBjb2x1bW5zIGhhdmUg bG9jYWwgZGVmYXVsdHMnCi0pOwotJHJlc3VsdCA9ICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRl c3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCi0JJ1Jvd3MgaW5zZXJ0 ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQywgYW5kIGV4dHJhIGNvbHVt bnMgaGF2ZSBsb2NhbCBkZWZhdWx0cycKLSk7Ci0KLSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0 YXRlIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIocykKLSRyZXN1bHQgPQotICAkbm9kZV9CLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3Rz OyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vi c2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0KLSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQs IHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQycpOwotCi0j IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIFRlc3QgMlBDIFBSRVBBUkUgd2l0aCBh IG5lc3RlZCBST0xMQkFDSyBUTyBTQVZFUE9JTlQuCi0jIDAuIENsZWFudXAgZnJvbSBwcmV2aW91 cyB0ZXN0IGxlYXZpbmcgb25seSAyIHJvd3MuCi0jIDEuIEluc2VydCBvbmUgbW9yZSByb3cuCi0j IDIuIFJlY29yZCBhIFNBVkVQT0lOVC4KLSMgMy4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMu Ci0jIDQuIERvIHJvbGxiYWNrIHRvIFNBVkVQT0lOVCBwcmlvciB0byB0aGUgc3RyZWFtZWQgaW5z ZXJ0cy4KLSMgNS4gVGhlbiBDT01NSVQgUFJFUEFSRUQuCi0jCi0jIEV4cGVjdCBkYXRhIGFmdGVy IHRoZSBTQVZFUE9JTlQgaXMgYWJvcnRlZCBsZWF2aW5nIG9ubHkgMyByb3dzICg9IDIgb3JpZ2lu YWwgKyAxIGZyb20gc3RlcCAxKS4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQot IyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzIChkZWxldGUgd2lsbCBi ZSByZXBsaWNhdGVkKQotJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJP TSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKLQotIyAyUEMgUFJFUEFSRSB3aXRoIGEgbmVzdGVk IFJPTExCQUNLIFRPIFNBVkVQT0lOVAotJG5vZGVfQS0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jlcycs ICIKLQlCRUdJTjsKLQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTksICdmb29iYXIn KTsKLQlTQVZFUE9JTlQgc3BfaW5uZXI7Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFU RSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZS T00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVJPTExCQUNLIFRPIFNBVkVQT0lOVCBz cF9pbm5lcjsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICdvdXRlcic7Ci0JIik7Ci0KLSRub2RlX0Et PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7Ci0kbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lX0MpOwotCi0jIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBwcmVwYXJlZCBv biBzdWJzY3JpYmVyKHMpCi0kcmVzdWx0ID0KLSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1 bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBCJyk7Ci0k cmVzdWx0ID0KLSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQo KikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNh Y3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBDJyk7Ci0KLSMgMlBDIENPTU1JVAotJG5v ZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDT01NSVQgUFJFUEFSRUQgJ291dGVyJzsiKTsK LQotJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKLSRub2RlX0ItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7Ci0KLSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRl IGlzIGVuZGVkIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPQotICAkbm9kZV9CLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwot aXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyIEIn KTsKLSRyZXN1bHQgPQotICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBj b3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0 cmFuc2FjdGlvbiBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyIEMnKTsKLQotIyBjaGVjayBpbnNlcnRz IGFyZSB2aXNpYmxlIGF0IHN1YnNjcmliZXIocykuCi0jIEFsbCB0aGUgc3RyZWFtZWQgZGF0YSAo cHJpb3IgdG8gdGhlIFNBVkVQT0lOVCkgc2hvdWxkIGJlIHJvbGxlZCBiYWNrLgotIyAoOTk5OSwg J2Zvb2JhcicpIHNob3VsZCBiZSBjb21taXR0ZWQuCi0kcmVzdWx0ID0gJG5vZGVfQi0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIHdoZXJlIGIg PSAnZm9vYmFyJzsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAnUm93cyBjb21taXR0ZWQgYXJlIHBy ZXNlbnQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0gJG5vZGVfQi0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsKLWlzKCRyZXN1bHQs IHFxKDMpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBCJyk7Ci0k cmVzdWx0ID0gJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgq KSBGUk9NIHRlc3RfdGFiIHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsKLWlzKCRyZXN1bHQsIHFxKDEp LCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBDJyk7Ci0kcmVzdWx0 ID0gJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0 ZXN0X3RhYjsiKTsKLWlzKCRyZXN1bHQsIHFxKDMpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNl bnQgb24gc3Vic2NyaWJlciBDJyk7CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCit0ZXN0X3N0cmVhbWluZygkbm9kZV9BLCAkbm9k ZV9CLCAkbm9kZV9DLCAkYXBwbmFtZV9CLCAkYXBwbmFtZV9DLCAncGFyYWxsZWwnKTsKIAogIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBjaGVjayBhbGwgdGhlIGNsZWFudXAKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwg Yi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsCmluZGV4IDli NDU0MTAuLjgyYjVlNmMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190 d29waGFzZV9zdHJlYW0ucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3Bo YXNlX3N0cmVhbS5wbApAQCAtOCw2ICs4LDMwOCBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1 c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCisj IENoZWNrIHRoZSBsb2cgdGhhdCB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGNvbXBsZXRl ZCBzdWNjZXNzZnVsbHkKKyMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorc3Vi IGNoZWNrX3BhcmFsbGVsX2xvZworeworCW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAk aXNfcGFyYWxsZWwpID0gQF87CisJbXkgJHBhcmFsbGVsX21lc3NhZ2UgPQorCSAgJ2ZpbmlzaGVk IHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kJzsKKworCWlmICgkaXNf cGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvJHBhcmFs bGVsX21lc3NhZ2UvLCAkb2Zmc2V0KTsKKwl9Cit9CisKKyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBj b21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgorIyBwYXJh bWV0ZXIgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9 b24gYW5kCisjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZwor eworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNf cGFyYWxsZWwpID0gQF87CisKKwlteSAkb2Zmc2V0ID0gMDsKKworCSMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUgLyBDT01NSVQgUFJFUEFSRUQuCisJ IyAxLiBEYXRhIGlzIHN0cmVhbWVkIGFzIGEgMlBDIHRyYW5zYWN0aW9uLgorCSMgMi4gVGhlbiBk byBjb21taXQgcHJlcGFyZWQuCisJIworCSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQg b24gc3Vic2NyaWJlciBzaWRlIGFmdGVyIHRoZSBjb21taXQuCisJIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworCisJIyBJZiAic3RyZWFtaW5nIiBwYXJhbWV0ZXIgaXMgc3BlY2lmaWVk IGFzICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8gY2hlY2sKKwkjIHRoYXQgc3RyZWFtZWQgdHJhbnNh Y3Rpb24gd2FzIHByZXBhcmVkIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorCSMgV2Ug aGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0aGF0LCBzbyBi dW1wIHVwIHRoZQorCSMgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJ JG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9n X21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJ fQorCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9 IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIGNoZWNrIHRoYXQgMlBDIGdldHMg cmVwbGljYXRlZCB0byBzdWJzY3JpYmVyCisJIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVu b3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KKwkkbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkg cyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0g MDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCQlQUkVQQVJF IFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7CisKKwkkbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2Rl X3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk7CisKKwkjIGNoZWNrIHRoYXQgdHJh bnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgorCW15ICRyZXN1bHQg PSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3Vu dCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJh bnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOworCisJIyAyUEMgdHJhbnNhY3Rp b24gZ2V0cyBjb21taXR0ZWQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRy YW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3Vu dChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDMz MzR8MzMzNHwzMzM0KSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9u IHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJ KTsKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0 LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBUZXN0IDJQQyBQUkVQQVJFIC8gUk9M TEJBQ0sgUFJFUEFSRUQuCisJIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdo aWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCisJIyAyLiBEYXRhIGlzIHN0cmVhbWVk IHVzaW5nIDJQQy4KKwkjIDMuIERvIHJvbGxiYWNrIHByZXBhcmVkLgorCSMKKwkjIEV4cGVjdCBk YXRhIHJvbGxzIGJhY2sgbGVhdmluZyBvbmx5IHRoZSBvcmlnaW5hbCAyIHJvd3MuCisJIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4 Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAy OyIpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNl dCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIFRoZW4gaW5zZXJ0LCB1cGRh dGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJ TlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBX SEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMp ID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJ JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3Bh cmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwpOworCisJ IyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmli ZXIKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0 LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKKworCSMg MlBDIHRyYW5zYWN0aW9uIGdldHMgYWJvcnRlZAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCSJST0xMQkFDSyBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIp OworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMg Y2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0 ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291 bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJl c3VsdCwgcXEoMnwyfDIpLAorCQknUm93cyBpbnNlcnRlZCBieSAyUEMgYXJlIHJvbGxlZCBiYWNr LCBsZWF2aW5nIG9ubHkgdGhlIG9yaWdpbmFsIDIgcm93cycKKwkpOworCisJJHJlc3VsdCA9ICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCop IEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2Fj dGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKwkjIENoZWNrIHRoYXQgMlBDIENPTU1JVCBQUkVQQVJFRCBpcyBkZWNvZGVk IHByb3Blcmx5IG9uIGNyYXNoIHJlc3RhcnQuCisJIyAxLiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVs ZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KKwkjIDIuIFRoZW4gc2Vy dmVyIGNyYXNoZXMgYmVmb3JlIHRoZSAyUEMgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkLgorCSMg My4gQWZ0ZXIgc2VydmVycyBhcmUgcmVzdGFydGVkIHRoZSBwZW5kaW5nIHRyYW5zYWN0aW9uIGlz IGNvbW1pdHRlZC4KKwkjCisJIyBFeHBlY3QgYWxsIGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJz Y3JpYmVyIHNpZGUgYWZ0ZXIgdGhlIGNvbW1pdC4KKwkjIE5vdGU6IGJvdGggcHVibGlzaGVyIGFu ZCBzdWJzY3JpYmVyIGRvIGNyYXNoL3Jlc3RhcnQuCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9m ZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAw MCkgcyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIp ID0gMDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCQlQUkVQ QVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7CisKKwkkbm9kZV9zdWJzY3Jp YmVyLT5zdG9wKCdpbW1lZGlhdGUnKTsKKwkkbm9kZV9wdWJsaXNoZXItPnN0b3AoJ2ltbWVkaWF0 ZScpOworCisJJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKKwkkbm9kZV9zdWJzY3JpYmVyLT5zdGFy dDsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNf cGFyYWxsZWwpOworCisJIyBjb21taXQgcG9zdCB0aGUgcmVzdGFydAorCSRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFy ZWRfdGFiJzsiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCisJIyBjaGVjayBpbnNlcnRzIGFyZSB2aXNpYmxlCisJJHJlc3VsdCA9ICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChj KSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDMzMzR8 MzMzNHwzMzM0KSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1 YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJKTsK KworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIERvIElOU0VSVCBhZnRlciB0 aGUgUFJFUEFSRSBidXQgYmVmb3JlIFJPTExCQUNLIFBSRVBBUkVELgorCSMgMS4gVGFibGUgaXMg ZGVsZXRlZCBiYWNrIHRvIDIgcm93cyB3aGljaCBhcmUgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVy LgorCSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCisJIyAzLiBBIHNpbmdsZSByb3cg SU5TRVJUIGlzIGRvbmUgd2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCisJIyA0LiBUaGVuIGRv IGEgUk9MTEJBQ0sgUFJFUEFSRUQuCisJIworCSMgRXhwZWN0IHRoZSAyUEMgZGF0YSByb2xscyBi YWNrIGxlYXZpbmcgb25seSAzIHJvd3Mgb24gdGhlIHN1YnNjcmliZXIKKwkjICh0aGUgb3JpZ2lu YWwgMiArIGluc2VydGVkIDEpLgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwor CSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSByZXBs aWNhdGVkKQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxF VEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmli ZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dm aWxlOworCisJIyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8g ZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkn cG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERB VEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUg RlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04g J3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwg JG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBp biBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJl cGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVw YXJlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIEluc2VydCBhIGRpZmZlcmVudCByZWNvcmQgKG5v dyB3ZSBhcmUgb3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5zYWN0aW9uKQorCSMgTm90ZTogdGhlIDJQ QyB0cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMgaW5z ZXJ0IGlzIGZvciBhIHNlcGFyYXRlIHByaW1hcnkga2V5CisJJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOTk5OTks ICdmb29iYXInKSIpOworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCisJJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlJPTExCQUNLIFBSRVBBUkVEICd0 ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24g c3Vic2NyaWJlciwKKwkjIGJ1dCB0aGUgZXh0cmEgSU5TRVJUIG91dHNpZGUgb2YgdGhlIDJQQyBz dGlsbCB3YXMgcmVwbGljYXRlZAorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5 OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzfDN8MyksCisJCSdjaGVjayB0 aGUgb3V0c2lkZSBpbnNlcnQgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CisKKwkkcmVzdWx0 ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291 bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3Ry YW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworCSMgRG8gSU5TRVJUIGFmdGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZv cmUgQ09NTUlUIFBSRVBBUkVELgorCSMgMS4gVGFibGUgaXMgZGVsZXRlZCBiYWNrIHRvIDIgcm93 cyB3aGljaCBhcmUgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgorCSMgMi4gRGF0YSBpcyBzdHJl YW1lZCB1c2luZyAyUEMuCisJIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlzIGRvbmUgd2hpY2gg aXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCisJIyA0LiBUaGVuIGRvIGEgQ09NTUlUIFBSRVBBUkVELgor CSMKKwkjIEV4cGVjdCAyUEMgZGF0YSArIHRoZSBleHRyYSByb3cgYXJlIG9uIHRoZSBzdWJzY3Jp YmVyCisJIyAodGhlIDMzMzQgKyBpbnNlcnRlZCAxID0gMzMzNSkuCisJIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3Ig MiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCisJ IyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRu b2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRl bGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMs IDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2Qo YSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJ UFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xv Zygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwpOworCisJIyBjaGVjayB0 aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKKwkkcmVz dWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1Qg Y291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwg J3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgSW5zZXJ0IGEg ZGlmZmVyZW50IHJlY29yZCAobm93IHdlIGFyZSBvdXRzaWRlIG9mIHRoZSAyUEMgdHJhbnNhY3Rp b24pCisJIyBOb3RlOiB0aGUgMlBDIHRyYW5zYWN0aW9uIHN0aWxsIGhvbGRzIHJvdyBsb2NrcyBz byBtYWtlIHN1cmUgdGhpcyBpbnNlcnQgaXMgZm9yIGEgc2VwYXJhcmUgcHJpbWFyeSBrZXkKKwkk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiSU5TRVJUIElOVE8gdGVz dF90YWIgVkFMVUVTICg5OTk5OSwgJ2Zvb2JhcicpIik7CisKKwkjIDJQQyB0cmFuc2FjdGlvbiBn ZXRzIGNvbW1pdHRlZAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKKworCSRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNh Y3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMp LCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMzMzNXwz MzM1fDMzMzUpLAorCQknUm93cyBpbnNlcnRlZCBieSAyUEMgKGFzIHdlbGwgYXMgb3V0c2lkZSBp bnNlcnQpIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNv bnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBh cmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0 dGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFi IFdIRVJFIGEgPiAyOyIpOworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7CisKKwkjIFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwp CisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywK KwkJCSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5y ZWxvYWQ7CisJfQorfQorCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFNldHVw CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC00OCw2ICszNTAsMTAgQEAgJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9O IHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWIn OworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVh bWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoCiAJJ3Bvc3RncmVzJywgIgogCUNSRUFURSBTVUJTQ1JJUFRJ T04gdGFwX3N1YgpAQCAtNjQsMjM2ICszNzAsMzAgQEAgbXkgJHR3b3BoYXNlX3F1ZXJ5ID0KICRu b2RlX3N1YnNjcmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywgJHR3b3BoYXNlX3F1 ZXJ5KQogICBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBzdWJzY3JpYmVyIHRv IGVuYWJsZSB0d29waGFzZSI7CiAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMg Q2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcgotIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIwogbXkgJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0g OTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8MiksICdjaGVjayBpbml0 aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKLSMgVGVzdCAyUEMgUFJFUEFSRSAvIENPTU1JVCBQUkVQQVJFRC4KLSMg MS4gRGF0YSBpcyBzdHJlYW1lZCBhcyBhIDJQQyB0cmFuc2FjdGlvbi4KLSMgMi4gVGhlbiBkbyBj b21taXQgcHJlcGFyZWQuCi0jCi0jIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1 YnNjcmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0LgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVy LCAkYXBwbmFtZSwgMCk7CiAKLSMgY2hlY2sgdGhhdCAyUEMgZ2V0cyByZXBsaWNhdGVkIHRvIHN1 YnNjcmliZXIKLSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNl ZWQgdGhlIDY0a0IgbGltaXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdy ZXMnLCBxewotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6 dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVzdF90 YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3Rf dGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBh cmVkX3RhYic7fSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBz dWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJl c3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7Ci0K LSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgY29tbWl0dGVkCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAotCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsi KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBj aGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0 ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3Vu dCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1 bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBjb21t aXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZh dWx0cycKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNp bmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBs aWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwot JHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxF Q1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDAp LCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBUZXN0IDJQQyBQUkVQQVJFIC8gUk9MTEJBQ0sgUFJF UEFSRUQuCi0jIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJl cGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KLSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMu Ci0jIDMuIERvIHJvbGxiYWNrIHByZXBhcmVkLgotIwotIyBFeHBlY3QgZGF0YSByb2xscyBiYWNr IGxlYXZpbmcgb25seSB0aGUgb3JpZ2luYWwgMiByb3dzLgotIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwotCi0jIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3Mg KHdpbGwgYmUgcmVwbGljYXRlZCkKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKLQotIyBUaGVuIGluc2Vy dCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0 LgotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsK LQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIp IFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwz KSA9IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwogCi0k bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRo YXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgotJHJlc3Vs dCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291 bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJh bnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIDJQQyB0cmFuc2FjdGlv biBnZXRzIGFib3J0ZWQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0J IlJPTExCQUNLIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2Fj dGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291 bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMnwyfDIpLAotCSdS b3dzIGluc2VydGVkIGJ5IDJQQyBhcmUgcm9sbGVkIGJhY2ssIGxlYXZpbmcgb25seSB0aGUgb3Jp Z2luYWwgMiByb3dzJyk7Ci0KLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7 Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJl cicpOwotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENoZWNrIHRoYXQgMlBD IENPTU1JVCBQUkVQQVJFRCBpcyBkZWNvZGVkIHByb3Blcmx5IG9uIGNyYXNoIHJlc3RhcnQuCi0j IDEuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2 NGtCIGxpbWl0LgotIyAyLiBUaGVuIHNlcnZlciBjcmFzaGVzIGJlZm9yZSB0aGUgMlBDIHRyYW5z YWN0aW9uIGlzIGNvbW1pdHRlZC4KLSMgMy4gQWZ0ZXIgc2VydmVycyBhcmUgcmVzdGFydGVkIHRo ZSBwZW5kaW5nIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4KLSMKLSMgRXhwZWN0IGFsbCBkYXRh IGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlciBzaWRlIGFmdGVyIHRoZSBjb21taXQuCi0jIE5v dGU6IGJvdGggcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyIGRvIGNyYXNoL3Jlc3RhcnQuCi0jIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQ REFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRF IEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04g J3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVfc3Vic2NyaWJlci0+c3RvcCgnaW1tZWRp YXRlJyk7Ci0kbm9kZV9wdWJsaXNoZXItPnN0b3AoJ2ltbWVkaWF0ZScpOwotCi0kbm9kZV9wdWJs aXNoZXItPnN0YXJ0OwotJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7Ci0KLSMgY29tbWl0IHBvc3Qg dGhlIHJlc3RhcnQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkNP TU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayBpbnNlcnRzIGFyZSB2aXNpYmxl Ci0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNF TEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsK LWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMg aGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBs b2NhbCBkZWZhdWx0cycKLSk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMg RG8gSU5TRVJUIGFmdGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZvcmUgUk9MTEJBQ0sgUFJFUEFSRUQu Ci0jIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxpY2F0 ZWQgb24gc3Vic2NyaWJlci4KLSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCi0jIDMu IEEgc2luZ2xlIHJvdyBJTlNFUlQgaXMgZG9uZSB3aGljaCBpcyBhZnRlciB0aGUgUFJFUEFSRS4K LSMgNC4gVGhlbiBkbyBhIFJPTExCQUNLIFBSRVBBUkVELgotIwotIyBFeHBlY3QgdGhlIDJQQyBk YXRhIHJvbGxzIGJhY2sgbGVhdmluZyBvbmx5IDMgcm93cyBvbiB0aGUgc3Vic2NyaWJlcgotIyAo dGhlIG9yaWdpbmFsIDIgKyBpbnNlcnRlZCAxKS4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKLQotIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxs IGJlIHJlcGxpY2F0ZWQpCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi REVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7Ci0KLSMgVGhlbiBpbnNlcnQsIHVw ZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5T RVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nl cmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVS RSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAw OwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRy YW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCop IEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0 aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKLQotIyBJbnNlcnQgYSBkaWZmZXJlbnQg cmVjb3JkIChub3cgd2UgYXJlIG91dHNpZGUgb2YgdGhlIDJQQyB0cmFuc2FjdGlvbikKLSMgTm90 ZTogdGhlIDJQQyB0cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJl IHRoaXMgaW5zZXJ0IGlzIGZvciBhIHNlcGFyYXRlIHByaW1hcnkga2V5Ci0kbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMg KDk5OTk5LCAnZm9vYmFyJykiKTsKLQotIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCi0k bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJST0xMQkFDSyBQUkVQQVJF RCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBv biBzdWJzY3JpYmVyLAotIyBidXQgdGhlIGV4dHJhIElOU0VSVCBvdXRzaWRlIG9mIHRoZSAyUEMg c3RpbGwgd2FzIHJlcGxpY2F0ZWQKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5 OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoM3wzfDMpLCAnY2hlY2sgdGhlIG91 dHNpZGUgaW5zZXJ0IHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwotCi0kcmVzdWx0ID0gJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBG Uk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlv biBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIwotIyBEbyBJTlNFUlQgYWZ0ZXIgdGhlIFBSRVBBUkUgYnV0IGJlZm9yZSBDT01NSVQg UFJFUEFSRUQuCi0jIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJl IHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KLSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAy UEMuCi0jIDMuIEEgc2luZ2xlIHJvdyBJTlNFUlQgaXMgZG9uZSB3aGljaCBpcyBhZnRlciB0aGUg UFJFUEFSRS4KLSMgNC4gVGhlbiBkbyBhIENPTU1JVCBQUkVQQVJFRC4KLSMKLSMgRXhwZWN0IDJQ QyBkYXRhICsgdGhlIGV4dHJhIHJvdyBhcmUgb24gdGhlIHN1YnNjcmliZXIKLSMgKHRoZSAzMzM0 ICsgaW5zZXJ0ZWQgMSA9IDMzMzUpLgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwot Ci0jIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwgYmUgcmVw bGljYXRlZCkKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUg RlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKLQotIyBUaGVuIGluc2VydCwgdXBkYXRlIGFu ZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgotJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMs IDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChh LDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci0JUFJF UEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rp b24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBw Z19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMg cHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIEluc2VydCBhIGRpZmZlcmVudCByZWNvcmQg KG5vdyB3ZSBhcmUgb3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5zYWN0aW9uKQotIyBOb3RlOiB0aGUg MlBDIHRyYW5zYWN0aW9uIHN0aWxsIGhvbGRzIHJvdyBsb2NrcyBzbyBtYWtlIHN1cmUgdGhpcyBp bnNlcnQgaXMgZm9yIGEgc2VwYXJhcmUgcHJpbWFyeSBrZXkKLSRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCi0JIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOTk5OTks ICdmb29iYXInKSIpOwotCi0jIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGNvbW1pdHRlZAotJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0 X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxU RVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIpOwogCi0j IGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKLSRyZXN1 bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNv dW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJl c3VsdCwgcXEoMzMzNXwzMzM1fDMzMzUpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyAoYXMgd2Vs bCBhcyBvdXRzaWRlIGluc2VydCkgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4 dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKLSk7Ciskbm9kZV9wdWJsaXNoZXIt PnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZS T00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1l JyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQg d2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJ UFRJT04iOwogCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJl c3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcicpOwor dGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFt ZSwgMSk7CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgY2hlY2sgYWxsIHRo ZSBjbGVhbnVwCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFt aW5nX3BhcmFsbGVsX2FwcGx5LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVh bWluZ19wYXJhbGxlbF9hcHBseS5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li4xMGVmZDJkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMy X3N0cmVhbWluZ19wYXJhbGxlbF9hcHBseS5wbApAQCAtMCwwICsxLDE1MiBAQAorIyBDb3B5cmln aHQgKGMpIDIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyMgVGVz dCBmb3IgZGVhZGxvY2sgaW4gc3RyZWFtaW5nIG1vZGUgInBhcmFsbGVsIiBpbiBsb2dpY2FsIHJl cGxpY2F0aW9uLgorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOwordXNlIFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6 TW9yZTsKKworbXkgJG9mZnNldCA9IDA7CisKKyMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCitteSAk bm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hl cicpOworJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwn KTsKKyRub2RlX3B1Ymxpc2hlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJJ2xv Z2ljYWxfZGVjb2Rpbmdfd29ya19tZW0gPSA2NGtCJyk7Ciskbm9kZV9wdWJsaXNoZXItPnN0YXJ0 OworCisjIENyZWF0ZSBzdWJzY3JpYmVyIG5vZGUKK215ICRub2RlX3N1YnNjcmliZXIgPSBQb3N0 Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXInKTsKKyRub2RlX3N1YnNjcmli ZXItPmluaXQ7CisKKyMgQ2hlY2sgaWYgYW55IHN0cmVhbWluZyBjaHVua3MgYXJlIGFwcGxpZWQg dXNpbmcgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gV2UKKyMgaGF2ZSB0byBsb29rIGZvciB0 aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0aGF0LCBzbyBidW1wIHVwIHRoZSBsb2cKKyMg dmVyYm9zaXR5LgorJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29u ZicsICJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisKKyRub2RlX3N1YnNjcmliZXItPnN0 YXJ0OworCisjIFNldHVwIHN0cnVjdHVyZSBvbiBwdWJsaXNoZXIKKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgdGVzdF90YWIgKGEgaW50KSIpOwor CisjIFNldHVwIHN0cnVjdHVyZSBvbiBzdWJzY3JpYmVyCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0ZXN0X3RhYiAoYSBpbnQpIik7Ciskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFVOSVFVRSBJTkRF WCBpZHhfdGFiIG9uIHRlc3RfdGFiKGEpIik7CisKKyMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlv bgorbXkgJHB1Ymxpc2hlcl9jb25uc3RyID0gJG5vZGVfcHVibGlzaGVyLT5jb25uc3RyIC4gJyBk Ym5hbWU9cG9zdGdyZXMnOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CisKK215 ICRhcHBuYW1lID0gJ3RhcF9zdWInOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdw b3N0Z3JlcycsICIKKwlDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIKKwlDT05ORUNUSU9OICck cHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScKKwlQVUJMSUNBVElP TiB0YXBfcHViCisJV0lUSCAoc3RyZWFtaW5nID0gcGFyYWxsZWwsIGNvcHlfZGF0YSA9IGZhbHNl KSIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisj IEludGVybGVhdmUgYSBwYWlyIG9mIHRyYW5zYWN0aW9ucywgZWFjaCBleGNlZWRpbmcgdGhlIDY0 a0IgbGltaXQuCitteSAkaW4gID0gJyc7CitteSAkb3V0ID0gJyc7CisKK215ICR0aW1lciA9IElQ Qzo6UnVuOjp0aW1lb3V0KCRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0 KTsKKworbXkgJGggPSAkbm9kZV9wdWJsaXNoZXItPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMn LCBcJGluLCBcJG91dCwgJHRpbWVyLAorCW9uX2Vycm9yX3N0b3AgPT4gMCk7CisKKyMgPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorIyBDb25maXJtIGlmIGEgZGVhZGxvY2sgYmV0d2VlbiB0aGUgbGVhZGVy IGFwcGx5IHdvcmtlciBhbmQgdGhlIHBhcmFsbGVsIGFwcGx5CisjIHdvcmtlciBjYW4gYmUgZGV0 ZWN0ZWQuCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworJGluIC49IHF7CitCRUdJTjsKK0lOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMo aSk7Cit9OworJGgtPnB1bXBfbmI7CisKKyMgRW5zdXJlIHRoYXQgdGhlIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciBleGVjdXRlcyB0aGUgaW5zZXJ0IGNvbW1hbmQgYmVmb3JlIHRoZQorIyBsZWFkZXIg d29ya2VyLgorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0RFQlVHOiAoIFtB LVowLTldKzopPyBhcHBsaWVkIFswLTldKyBjaGFuZ2VzIGluIHRoZSBzdHJlYW1pbmcgY2h1bmsv LAorCSRvZmZzZXQpOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi SU5TRVJUIElOVE8gdGVzdF90YWIgdmFsdWVzKDEpIik7CisKKyRpbiAuPSBxeworQ09NTUlUOwor XHEKK307CiskaC0+ZmluaXNoOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJ cXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGRlYWRsb2NrIGRldGVjdGVkLywKKwkkb2Zmc2V0KTsK KworIyBEcm9wIHRoZSB1bmlxdWUgaW5kZXggb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jr cy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBJTkRFWCBp ZHhfdGFiIik7CisKKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUg YXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgorJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lKTsKKworbXkgJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIiKTsKK2lz KCRyZXN1bHQsIHFxKDUwMDEpLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIg ZHJvcHBpbmcgaW5kZXgnKTsKKworIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJv bm1lbnQuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUg VEFCTEUgdGVzdF90YWIiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRF IFVOSVFVRSBJTkRFWCBpZHhfdGFiIG9uIHRlc3RfdGFiKGEpIik7CisKKyMgPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorIyBDb25maXJtIGlmIGEgZGVhZGxvY2sgYmV0d2VlbiB0d28gcGFyYWxsZWwgYXBw bHkgd29ya2VycyBjYW4gYmUgZGV0ZWN0ZWQuCisjID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBD aGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVf c3Vic2NyaWJlci0+bG9nZmlsZTsKKworJGluIC49IHF7CitCRUdJTjsKK0lOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7Cit9Owor JGgtPnB1bXBfbmI7CisKKyMgRW5zdXJlIHRoYXQgdGhlIGZpcnN0IHBhcmFsbGVsIGFwcGx5IHdv cmtlciBleGVjdXRlcyB0aGUgaW5zZXJ0IGNvbW1hbmQKKyMgYmVmb3JlIHRoZSBzZWNvbmQgb25l LgorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0RFQlVHOiAoIFtBLVowLTld KzopPyBhcHBsaWVkIFswLTldKyBjaGFuZ2VzIGluIHRoZSBzdHJlYW1pbmcgY2h1bmsvLAorCSRv ZmZzZXQpOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhp KSIpOworCiskaW4gLj0gcXsKK0NPTU1JVDsKK1xxCit9OworJGgtPmZpbmlzaDsKKworJG5vZGVf c3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBkZWFk bG9jayBkZXRlY3RlZC8sCisJJG9mZnNldCk7CisKKyMgRHJvcCB0aGUgdW5pcXVlIGluZGV4IG9u IHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVggaWR4X3RhYiIpOworCisjIFdhaXQgZm9yIHRoaXMg c3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4K KyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQg PQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3Vu dCgqKSBGUk9NIHRlc3RfdGFiIik7CitpcygkcmVzdWx0LCBxcSgxMDAwMCksICdkYXRhIHJlcGxp Y2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBpbmRleCcpOworCiskbm9kZV9zdWJz Y3JpYmVyLT5zdG9wOworJG5vZGVfcHVibGlzaGVyLT5zdG9wOworCitkb25lX3Rlc3RpbmcoKTsK LS0gCjIuNy4yLndpbmRvd3MuMQoK --_005_OS0PR01MB5716CF7D3BDE465AFAF17DC094079OS0PR01MB5716jpnp_--